Это инструкция по конвейерной обработке Intel?

Насколько я знаю, intel 8086 pipelining это техника
эта выборка следующей инструкции, когда выполняется настоящая инструкция.

В этой статье говорится, что одним из преимуществ конвейеризации является
исключает время ожидания ЕС и ускоряет обработку.

Думаю, инструкции вроде lea 0x7(%eax), %ecx можно разбить на несколько инструкций,
лайк add $0x7, %eax; lea %eax, %ecx,

Мой думаю)
Итак, по определению,
Я думаю, что приведенный выше пример соответствует определению intel 8086 pipelining
потому что он выполняет несколько инструкций в одном временном интервале и
таким образом, операция, подобная этой, ускоряет обработку.

Вопрос)
Мне любопытно, что нижеприведенные инструкции могут быть примером конвейерной обработки.

main:
 mov $0x2, %eax
 mov $0x3, %esi
 lea (%eax), %ecx           # result: 2. Pipeling?
 lea 0x7(%eax), %ecx        # result: 9. Pipeling?
 lea 0x7(%eax,%esi,), %ecx  # result: 12. Pipeling?
 lea 0x7(,%esi,4), %ecx     # result: 19. Pipeling?
 lea 0x7(%eax,%esi,4), %ecx # result: 21. Pipeling?

1 ответ

Решение

Самые первые компьютеры не были конвейерными. Они получили инструкцию, выполнили все циклы, требуемые инструкциями, и передали следующую инструкцию. В среднем на инструкцию требуется 5-6 циклов. Такое поведение было справедливо для всех компьютеров вплоть до середины 80-х годов, включая 8086 (представленный в 78).

В конце семидесятых люди обнаружили, что трубопровод является эффективным способом повышения эффективности. Первым коммерческим чипом была IBM 801, но успех конвейера был с Sun Sparc, Berkeley Risc и MIPS, в середине восьмидесятых.

Идея состоит в том, чтобы разделить все инструкции на одинаковые этапы и связать эти этапы с независимыми ресурсами HW таким образом, чтобы можно было начинать новую инструкцию, не дожидаясь завершения предыдущей, позволяя запускать новую инструкцию за цикл., Чтобы справиться с взаимодействием команд (опасностями), это больше 1 инструкции каждые ~1,5 цикла, но выигрыш по сравнению с предыдущим поколением огромен (производительность X3).

Проблема заключается в том, что конвейерная обработка требует специальных наборов инструкций, основанных на простом перемещении данных (называемых наборами команд RISC). Новые компьютеры были основаны на этой схеме, но наборы инструкций старых процессоров не были адаптированы (включая x86).

Чтобы извлечь выгоду из преимуществ конвейера, при этом сохраняя совместимость с восходящей версией, Intel решила создать микроархитектуру, основанную на двух частях: первая получает инструкции x86 и переводит их в конвейерные (называемые μOps), а вторая представляет собой конвейерное выполнение этих μOps., Впервые он был представлен в Pentium Pro (представлен в 1995 году) и присутствует во всех последующих версиях.

Код, который вы даете

lea 0x7(%eax), %ecx

переведено на

добавить $0x7, %eax;
Lea % Eax, % EXX

пример трансляции µOps Перевод особенно полезен, если преобразовать операции ALU с операндом в памяти в более простые операции, выполняющие одну задачу (передача памяти или операция ALU).

В настоящее время все компьютеры являются конвейерными (за исключением некоторых простых микроконтроллеров или некоторых процессоров, встроенных в FPGA).

Любая последовательность инструкций, которые вы дадите, будет выполнена в процессе, включая, конечно, те, что в вашем вопросе. Единственное ограничение состоит в том, что в зависимости от взаимодействия команд могут быть опасности, которые могут повлечь замедление (остановка) конвейера.

Я думаю, что приведенный выше пример соответствует определению Intel 8086 конвейерной

Конвейер - это характеристика микроархитектуры, а не набора команд. Таким образом, микроархитектура 8086 НЕ была конвейерной, но последующие архитектурные реализации ее набора команд (называемые x86 или IA32) таковы.

потому что он выполняет несколько инструкций в одном временном интервале

Вы на самом деле правы, и несколько команд могут быть запущены в одном временном интервале, но это еще один метод выше конвейера, позволяющий параллельное выполнение на уровне команд и называемый суперскалярным.

Другие вопросы по тегам