ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.12.2021

Просмотров: 1091

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

4 1 6 Глава 9. Основные направления в архитектуре процессоров

Еще одной метрикой, характеризующей конвейерный процессор, является

 эф-

фективность Е

 — доля ускорения, приходящаяся на одну ступень конвейера:

В качестве третьей метрики часто выступает

 пропускная способность

 или

 произ-

водительность Р —

 эффективность, деленная на длительность тактового периода:

При эффективность стремится к единице, а производительность — к ча-

стоте тактирования конвейера:

Нелинейные конвейеры

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

бой не последовательно, а в соответствии с логикой обработки, при этом одни бло-

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

одновременно вычисляющего две функции

 X

 и

 Y,

 приведена на рис. 9.2. Там же

показана последовательность, в которой функциями X и У востребуются те или
иные функциональные блоки.

Рис. 9.2. Нелинейный конвейер

Чтобы определить, когда пора приступать к повторному вычислению той или

иной функции, необходимо построить диаграмму однократной реализации этой

функции и отследить по ней моменты, когда такой запуск не приведет к конфлик-
ту, связанному с одновременным обращением к одному и тому же функциональ-

ному блоку.

Так, в ходе реализации функции

 X

 запуск очередного ее вычисления возможен

после 1,3 и 6 тактов. Запуск параллельного вычисления функции У возможен после


background image

Конвейеризация вычислений  4 1 7

2 и 4 тактов. При запуске функции

 У

 очередной ее запуск позволен после тактов 1,

3 и 5, а параллельный запуск функции

 X

 допустим после 2

 и

 4 тактов.

Конвейер команд

Идея конвейера команд была предложена в 1956 году академиком С. А.Лебеде-
вым. Как известно, цикл команды представляет собой последовательность этапов.
Возложив реализацию каждого из них на самостоятельное устройство и последо-
вательно соединив такие устройства, мы получим классическую схему конвейера
команд. Для иллюстрации воспользуемся примером, приведенным в [200]. Выде-

лим в цикле команды шесть этапов:

1.

 Выборка команды (ВК).

 Чтение очередной команды из памяти и занесение ее

в регистр команды.

2.

 Декодирование команды (ДК).

 Определение кода операции и способов адреса-

ции операндов.

3.

 Вычисление адресов операндов (ВА).

 Вычисление исполнительных адресов

каждого из операндов в соответствии с указанным в команде способом их адре-
саций.

4.

 Выборка операндов

 (ВО). Извлечение операндов из памяти. Эта операция не

нужна для операндов, находящихся в регистрах.

5.

 Исполнение команды (ИК).

 Исполнение указанной операции.

6.

 Запись результата (ЗР),

 Занесение результата в память.

Рис. 9.3. Логика работы конвейера команд

На рис. 9.3 показан конвейер с шестью ступенями, соответствующими шести

этапам цикла команды. В диаграмме предполагается, что каждая команда обяза-
тельно проходит все шесть ступеней, хотя этот случай не совсем типичен. Так, ко-
манда загрузки регистра не требует этапа ЗР. Кроме того, здесь принято, что все
этапы могут выполняться одновременно. Без конвейеризации выполнение девяти
команд заняло бы 9 х 6 = 54 единицы времени. Использование конвейера позво-
ляет сократить время обработки до 14 единиц.

14 За*. 470


background image

418 Глава 9. Основные направления в архитектуре процессоров

Конфликты в конвейере команд

Полученное в примере число 14 характеризует лишь потенциальную производи-

тельность конвейера команд. На практике в силу возникающих в конвейере конф-
ликтных ситуаций достичь такой производительности не удается. Конфликтные
ситуации в конвейере принято обозначать термином риск (hazard), а обусловлены
они могут быть тремя причинами:

- попыткой нескольких команд одновременно обратиться к одному и тому же

ресурсу ВМ (структурный риск);

- взаимосвязью команд по данным (риск по данным);

-

 неоднозначностью при выборке следующей команды в случае команд перехода

(риск по управлению).

Структурный риск

 (конфликт по ресурсам) имеет место, когда несколько ко-

манд, находящихся на разных ступенях конвейера, пытаются одновременно ис-
пользовать один и тот же ресурс, чаще всего — память. Так, в типовом цикле ко-
манды сразу три этапа (ВК, 80 и ЗР) связаны с обращением к памяти. Диаграмма
(см. рис. 9.3) показывает, что все три обращения могут производиться одновре-
менно, однако на практике это не всегда возможно. Подобных конфликтов частич-
но удается избежать за счет модульного Построения памяти и использования кэш-
памяти — имеется вероятность того, что команды будут обращаться либо к разным
модулям ОП, либо одна из них станет обращаться к основной памяти, а другая -
к кэш-памяти. С этих позиций выгоднее разделять кэш-память команд и кэш-па-
мять данных. Конфликты из-за одновременного обращения к памяти могут и не
возникать, поскольку для многих команд ступени выборки операнда и записи ре-
зультата часто не требуются. В целом, влияние структурного риска на производи-
тельность конвейера по сравнению с другими видами рисков сравнительно неве-
лико.

Риск по данным,

 в противоположность структурному риску — типичная и регу-

данным положим, что две команды в конвейере (i и j) предусматривают обраще-

ние к одной и той же переменной

 х,

 причем команда i предшествует команде)

.

В общем случае между

 i

 и j ожидаемы три типа конфликтов по данным (рис. 9.4):

-Чтение после записи»

 (ЧПЗ): команда

 j

 читает

 х

 до того, как команда

 i

 успела

записать новое значение

 х,

 то есть j ошибочно получит старое значение

 х

 вмес-

то нового. '

- «Запись после чтения»

 (ЗПЧ): команда; j записывает новое значение

 х

 до того,

как команда

 i

 успела прочитать x:, то есть команда i ошибочно получит новое

значение

 х

 вместо старого.

- «Запись после записи»

 (ЗПЗ): команда

 j

 записывает новое значение

 х

 прежде,

чем команда i успела записать в качестве

 х

 свое значение, то есть

 х

 ошибочно

содержит i-e значение

 х

 вместо

 j-

 го.

Возможен и четвертый случай, когда команда j читает x прежде команды

 i.

 Этот

случай не вызывает никаких конфликтов, поскольку как i, так

 j

 получат верное

значение

 х.


background image

Конвейеризация вычислений  4 1 9

в

Рис- 9.4. Конфликты поданным:

 а

 — «Чтение после записи»;

 б —

 -Запись после чтения-;

в — «Запись после записи»

Наиболее частый вид конфликтов по данным — ЧПЗ, поскольку операция чте-

ния в цикле команды (этап ВО) предшествует операции записи (этап ЗР). По той

же причине конфликты типа ЗПЧ большой проблемы не представляют. Сложнос-
ти появляются, только если структура конвейера допускает запись прежде чтения

или если команды в конвейере обрабатываются в последовательности, отличной

от предписанной программой. Такое возможно, если командам в конвейере разре-

шается «догонять» предшествующие им команды, приостановленные из-за како-
го-то конфликта. Конфликт типа ЗПЗ также не вызывает особых проблем в кон-

вейерах, где команды следуют в порядке, определенном программой, и могут

производить запись только на этапе ЗР. В худшем случае, когда одна команда дого-
няет другую из-за приостановки последней, имеет место конфликт по ресурсу —

попытка одновременного доступа к одной и той же ячейке.

В борьбе с конфликтами по данным выделяют два аспекта: своевременное об-

наружение потенциального конфликта и его устранение. Признаком возникнове-
ния конфликта по данным между двумя командами i и

 j

 служит невыполнение

хотя бы одного из трех условий Бернстейна (Bernstein's Conditions):

Где

 O(k) —

 множество ячеек, изменяемых командой

 k; 1(1) —

 множество ячеек,

читаемых командой l;

Критерий может быть распространен и на большее число команд: для трех ко-

манд подобных уравнений будет 9, для четырех команд — 18 (по три на каждую
пару). Соблюдение соотношений является достаточным, но не необходимым ус-

ловием, поскольку в ряде случаев коллизий может и не быть.

Для борьбы с конфликтами по данным применяются как программные, так и ап-

паратные методы.

Программные методы ориентированы на устранение самой возможности кон-

фликтов еще на стадии компиляции программы. Оптимизирующий компилятор
пытается создать такой объектный код, чтобы между командами, склонными к


background image

4 2 0 Глава 9. Основные направления в архитектуре процессоров

конфликтам, находилась достаточное количество нейтральных в этом плане ко-
манд. Если такое не удается, то между конфликтующими командами компилятор
вставляет необходимое количество команд типа «Нет операции»,

Фактическое разрешение конфликтов возлагается на аппаратные методы. Наи-

более очевидным решением является остановка команды; на несколько тактов с
тем, чтобы команда

 i

 успела завершиться или, по крайней мере, миновать ступень

конвейера, вызвавшую конфликт. Соответственно задерживаются и команды, сле-

дующие в конвейере за j-й командой. Данную ситуацию называют

 «пузырьком»

 в

конвейере. Иногда приостанавливают только команду

 j,

 не задерживая следую-

щие за ней команды. Это более эффективный прием, но его реализация усложняет
конвейер.

Понятно, что остановки конвейера снижают его эффективность и разработчи-

ки ВМ всячески стремятся сократить общее число остановок или хотя бы их дли-

тельность. Поскольку наиболее частые конфликты по данным — это ЧПЗ, основ-

ные усилия тратятся на противодействие именно этому типу конфликтов. Среди
известных методов борьбы с ЧПЗ наибольшее распространение получил прием

ускоренного продвижения информации

 (forwarding). Обычно между двумя сосед-

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

то есть передача информации возможна лишь между соседними ступенями кон-

вейера. При ускоренном продвижении, когда для выполнения команды требуется
операнд, уже вычисленный предыдущей командой, этот операнд может быть по-

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

хода), снабженные средствами мультиплексирования.

Наибольшие проблемы при создании эффективного конвейера обусловлены

командами, изменяющими естественный порядок вычислений

1

. Простейший кон-

вейер ориентирован на линейные программы. В нем ступень выборки извлекает

команды из последовательных ячеек памяти, используя для этого счетчик команд
(СК). Адрес очередной команды в линейной программе формируется автомати-

чески, за счет прибавления к содержимому СК числа, равного длине текущей ко-

В них обязательно присутствуют команды управления, изменяющие последова-

возврат из процедуры и т. п. Доля подобных команд в программе оценивается
как 10-20% (по некоторым источникам она существенно больше). Выполнение
команд, изменяющих последовательность вычислений (в дальнейшем будем
их называть командами перехода), может приводить к приостановке конвейе-
ра на несколько тактов, из-за чего производительность процессора снижается.

Приостановки конвейера при выполнении команд перехода обусловлены дву-

мя факторами.

1

 В фон-неймановской ВМ команды размещаются в ячейках памяти и извлекаются для выполнения

в том же порядке, в каком они следуют в программе. Такую последовательность выполнения команд
программы называют естественной.


Смотрите также файлы