ВУЗ:
Составители:
этапа очередной команды, высвобождается соответствующий исполнительный блок и может
быть начато выполнение аналогичного этапа следующей команды. При перекрывании
процесса исполнения команд возникают проблемы зависимостей между перекрываемыми
командами, которые получили название межкомандных зависимостей, а сами зависимости
называются помехами. Аппаратный метод, который реализует обнаружение и разрешение
помех, называется блокировкой.
5.2.2.2. Межкомандные зависимости
Межкомандные зависимости в конвейере бывают двух типов: зависимости по
управлению и зависимости по данным. Зависимость по управлению между двумя командами
возникает в ситуации, когда при выполнении предыдущей команды остается неизвестным,
какая из двух окажется следующей. Такая зависимость обычно порождается условными
переходами и является отрицательным фактором, существенно влияющим на
производительность конвейера. Анализ команды условного перехода (команды i) показывает
(рис. 5.14, в), что при положительном переходе выполнения команды происходит
приостановка выполнения команды i+1 и загрузка нового исполнительного адреса ЕА в
счетчик команд. Возобновление работы конвейера будет начинаться с цикла выборки
команды с нового исполнительного адреса ЕА. В потери времени конвейера входит полный
цикл обработки команды. Для уменьшения этих потерь существуют различные аппаратные
средства: предварительный вызов начальных команд обеих ветвей; использования
нескольких командных буферов для хранения различных участков программ; хранение
задержанных ветвей в виде позволяющем загрузить конвейер сразу после завершения выбора
ветви.
В случае зависимостей по данным помеха возникает, когда к объекту данных
(например, к регистру, ячейке памяти или флажку) обращаются, или его модифицируют две
различные соседние команды, и конвейер перекрывает их исполнение. Имеются три класса
таких помех: чтение после записи (RAW), запись после чтения (WAR) и запись после записи
(WAW).
Определим эти помехи формальным образом. Имеется две команды i и j, причем
команда j логически следует за командой i. Область определения команды i, обозначаемая
D(i), это множество всех объектов (регистров, ячеек памяти и флагов), содержимое которых
влияет на исполнение команды i. Множество значений команды i, обозначаемое R(i), это
множество всех объектов (регистров, ячеек памяти и флажков), содержимое которых может
быть изменено за счет исполнения команды i.
Таким образом, D(i) –это множество всех объектов, читаемых командой i, а R(i) –
множество всех объектов, модифицируемых ею. Тогда эти три класса помех можно
определить следующим образом:
1)
RAW R(i)∩D(j)≠0;
2)
WAR D(i)∩R(j)≠0;
3)
WAW R(i)∩R(j)≠0.
Эти межкомандные зависимости показаны на рис.5.15.
этапа очередной команды, высвобождается соответствующий исполнительный блок и может
быть начато выполнение аналогичного этапа следующей команды. При перекрывании
процесса исполнения команд возникают проблемы зависимостей между перекрываемыми
командами, которые получили название межкомандных зависимостей, а сами зависимости
называются помехами. Аппаратный метод, который реализует обнаружение и разрешение
помех, называется блокировкой.
5.2.2.2. Межкомандные зависимости
Межкомандные зависимости в конвейере бывают двух типов: зависимости по
управлению и зависимости по данным. Зависимость по управлению между двумя командами
возникает в ситуации, когда при выполнении предыдущей команды остается неизвестным,
какая из двух окажется следующей. Такая зависимость обычно порождается условными
переходами и является отрицательным фактором, существенно влияющим на
производительность конвейера. Анализ команды условного перехода (команды i) показывает
(рис. 5.14, в), что при положительном переходе выполнения команды происходит
приостановка выполнения команды i+1 и загрузка нового исполнительного адреса ЕА в
счетчик команд. Возобновление работы конвейера будет начинаться с цикла выборки
команды с нового исполнительного адреса ЕА. В потери времени конвейера входит полный
цикл обработки команды. Для уменьшения этих потерь существуют различные аппаратные
средства: предварительный вызов начальных команд обеих ветвей; использования
нескольких командных буферов для хранения различных участков программ; хранение
задержанных ветвей в виде позволяющем загрузить конвейер сразу после завершения выбора
ветви.
В случае зависимостей по данным помеха возникает, когда к объекту данных
(например, к регистру, ячейке памяти или флажку) обращаются, или его модифицируют две
различные соседние команды, и конвейер перекрывает их исполнение. Имеются три класса
таких помех: чтение после записи (RAW), запись после чтения (WAR) и запись после записи
(WAW).
Определим эти помехи формальным образом. Имеется две команды i и j, причем
команда j логически следует за командой i. Область определения команды i, обозначаемая
D(i), это множество всех объектов (регистров, ячеек памяти и флагов), содержимое которых
влияет на исполнение команды i. Множество значений команды i, обозначаемое R(i), это
множество всех объектов (регистров, ячеек памяти и флажков), содержимое которых может
быть изменено за счет исполнения команды i.
Таким образом, D(i) –это множество всех объектов, читаемых командой i, а R(i) –
множество всех объектов, модифицируемых ею. Тогда эти три класса помех можно
определить следующим образом:
1) RAW R(i)∩D(j)≠0;
2) WAR D(i)∩R(j)≠0;
3) WAW R(i)∩R(j)≠0.
Эти межкомандные зависимости показаны на рис.5.15.
Страницы
- « первая
- ‹ предыдущая
- …
- 96
- 97
- 98
- 99
- 100
- …
- следующая ›
- последняя »
