Организация микропроцессорных систем. Учебное пособие. Могнонов П.Б. - 138 стр.

UptoLike

Составители: 

команда с одним операндом помещается в исполнительное устройство второго конвейера,
где дожидается готовности второго операнда, выходящего с первого конвейера. В этом
случае второй операнд сразу передается на второй конвейер, что позволяет избежать
операции чтения из регистра или ячейки памяти, и вынужденное простаивание второго
конвейера сводится к минимуму.
При параллельном выполнении двух команд на двух конвейерах возникает ситуация,
где одна команда выполняется быстрее другой. Эта команда заканчивается раньше и
нарушается очередность выполнения команд. Исполнение с изменением последовательности
команд, свойственное RISС-архитектуре, теперь реализовано и в процессорах Pentium. При
этом изменяется порядок внутренних манипуляций данных, а внешние (шинные) операции
ввода-вывода и записи в память выполняются в порядке предписанным программным кодом.
Это достигается за счет введения специального буфера; куда результаты выполнения
операций заносятся в произвольном порядке, а данные выходят в порядке очередности.
Другой проблемой, связанной с введением второго конвейера, является проблема
сдваивания команд. Параллельное выполнение двух команд называется сдваиванием. При
этом одновременное исполнение команд на U и V конвейерах определяется специальными
правилами сдваивания, которые удовлетворяют следующим условиям:
-
обе команды должны быть простыми;
-
между ними не должно быть регистровых зависимостей на WAR и RAW;
-
ни одна из команд не может содержать одновременно смещение и
непосредственный операнд;
-
команды с префиксами могут появляться только в U – конвейере (кроме OF в
командах JCC).
Простыми являются следующие целочисленные команды:
1 MOV reg, reg/mem/imm Команды
2 MOV mem, reg/imm пересылки
3 ALU reg, reg/mem/imm Арифметические и
4 ALU mem, reg/imm логические операции
5 INC reg/mem Увеличение и
6 DEC reg/mem уменьшение на 1
7 PUSH reg/mem Операции
8 POP reg над стеком
9 LEA reg, mem Загрузка
10 JMP/CALL/JCC near команды передачи
управления
11 NOP Пустая команда
Простые команды выполняются аппаратным способом и исполняются за один такт, за
исключением команд ALU mem, reg и ALU reg, mem, которые требуют для выполнения два и
три такта соответственно, и их выполнение обеспечивается специальными компонентами
процессора.
Условные и безусловные переходы могут выступать только как вторая команда в
паре. SHIFT на 1, ROT на 1, SHIFT imm могут быть лишь первой командой в паре.
Регистровые зависимости WAR, RAW, которые запрещают сдваивание, включают
неявные зависимости через регистры и флаги. Например, ALU команда в U – конвейере
(устанавливает флаги) не может быть в паре с использующимися флагами команд в V –
конвейере. Два исключения из этого правилаэто последовательность «сравнение
переход» и пары из команд PUSH и POP. Во втором случае для исключения неявной
зависимости от указателя стека добавлены специальные аппаратные компоненты, чтобы эти
частые операции могли параллельно выполняться. Все команды подчиняющиеся правилам
сдваивания выполняются параллельно и независимо, кроме команд имеющих зависимости
команда с одним операндом помещается в исполнительное устройство второго конвейера,
где дожидается готовности второго операнда, выходящего с первого конвейера. В этом
случае второй операнд сразу передается на второй конвейер, что позволяет избежать
операции чтения из регистра или ячейки памяти, и вынужденное простаивание второго
конвейера сводится к минимуму.
       При параллельном выполнении двух команд на двух конвейерах возникает ситуация,
где одна команда выполняется быстрее другой. Эта команда заканчивается раньше и
нарушается очередность выполнения команд. Исполнение с изменением последовательности
команд, свойственное RISС-архитектуре, теперь реализовано и в процессорах Pentium. При
этом изменяется порядок внутренних манипуляций данных, а внешние (шинные) операции
ввода-вывода и записи в память выполняются в порядке предписанным программным кодом.
Это достигается за счет введения специального буфера; куда результаты выполнения
операций заносятся в произвольном порядке, а данные выходят в порядке очередности.
       Другой проблемой, связанной с введением второго конвейера, является проблема
сдваивания команд. Параллельное выполнение двух команд называется сдваиванием. При
этом одновременное исполнение команд на U и V конвейерах определяется специальными
правилами сдваивания, которые удовлетворяют следующим условиям:
       - обе команды должны быть простыми;
       - между ними не должно быть регистровых зависимостей на WAR и RAW;
       - ни одна из команд не может содержать одновременно смещение и
непосредственный операнд;
       - команды с префиксами могут появляться только в U – конвейере (кроме OF в
командах JCC).
       Простыми являются следующие целочисленные команды:

                1    MOV reg, reg/mem/imm     Команды
                2    MOV mem, reg/imm         пересылки
                3    ALU reg, reg/mem/imm     Арифметические и
                4    ALU mem, reg/imm         логические операции
                5    INC reg/mem              Увеличение и
                6    DEC reg/mem              уменьшение на 1
                7    PUSH reg/mem             Операции
                8    POP reg                  над стеком
                9    LEA reg, mem             Загрузка
                10   JMP/CALL/JCC near        команды        передачи
                                              управления
                11   NOP                      Пустая команда

       Простые команды выполняются аппаратным способом и исполняются за один такт, за
исключением команд ALU mem, reg и ALU reg, mem, которые требуют для выполнения два и
три такта соответственно, и их выполнение обеспечивается специальными компонентами
процессора.
       Условные и безусловные переходы могут выступать только как вторая команда в
паре. SHIFT на 1, ROT на 1, SHIFT imm могут быть лишь первой командой в паре.
       Регистровые зависимости WAR, RAW, которые запрещают сдваивание, включают
неявные зависимости через регистры и флаги. Например, ALU команда в U – конвейере
(устанавливает флаги) не может быть в паре с использующимися флагами команд в V –
конвейере. Два исключения из этого правила – это последовательность «сравнение –
переход» и пары из команд PUSH и POP. Во втором случае для исключения неявной
зависимости от указателя стека добавлены специальные аппаратные компоненты, чтобы эти
частые операции могли параллельно выполняться. Все команды подчиняющиеся правилам
сдваивания выполняются параллельно и независимо, кроме команд имеющих зависимости