ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 387
Скачиваний: 2
4 6 8 Глава 9. Основные направления в архитектуре процессоров
Команда может быть считана из табло и выдана на исполнение лишь после того,
как будут занесены значения всех операндов, и лишь при условии, что нужный
для исполнения этой команды ФБ свободен. После завершения команды в ФБ
производится запись полученного результата (если эта команда предполагает дан-
ное действие) в ту ячейку буфера переименования, на которую указывает поле
результата. Одновременно производится ассоциативный доступ ко всем хранящим-
ся в табло командам и в тех из них, где в полях операндов указан идентификатор
обновленного входа БП, этот идентификатор заменяется занесенным в регистр
новым значением, с соответствующей коррекцией битов достоверности. Далее за-
вершенная команда покидает табло. Удаление команды из табло является основа-
нием для перезаписи значения результата данной команды в регистр АРФ и уда-
ления соответствующей записи из буфера переименования.
Отметим, что рассматриваемая технология предполагает схему распределения
готовых команд по требуемым для их исполнения функциональным блокам, с од-
новременной проверкой их доступности. Эта функция названа
диспетчеризацией.
В примере, приведенном на рис. 9.51, для команд I1, I2,I3 и I5 известны значе-
ния одного из операндов, и они вынуждены ожидать значения второго операнда.
Команде I4 известны оба операнда, и при условии доступности ФБ, требуемого
для ее исполнения, она вправе быть выдана из окна команд.
ОП - дешифрированный код операции; ИД - идентификатор регистра;
ЗН - значение операнда; ЗД - значение достоверно
Рис. 9 . 5 1 . Содержимое табло
В каждом такте работы процессора готовыми к выдаче могут оказаться сразу
несколько команд, и все готовые команды должны быть направлены в соответству-
ющие функциональные блоки. Если имеется несколько однотипных блоков обра-
ботки, то в процессоре должна быть предусмотрена логика выбора одного из них.
После выдачи команды из табло ее позиция освобождается и может быть ис-
пользована для загрузки новой команды. Вместе с тем необходимо сохранить за-
данную программой последовательность команд. Эту задачу решают одним из двух
методов. В первом из них, именуемом как
стек диспетчеризации,
после выдачи
команд и освобождения позиций в окне последующие команды сдвигаются вниз,
заполняя вновь доступные позиции и освобождая верхнюю часть табло. Новые
команды всегда загружаются в верхнюю часть табло. В случае второго метода, с так
называемым
блоком обновления регистров,
табло функционирует так же, как оче-
Суперскалярные процессоры 4 6 9
редь типа FIFO, но производится общий сдвиг вниз, включая и освободившиеся
позиции. Это упрощает логику работы централизованного окна.
Распределенное окно команд. В
варианте распределенного окна команд на
входе каждого функционального блока размещается буфер декодированных ко-
манд, называемый
накопителем команд
или
схемой резервирования
(reservation
station). Метод резервирования был разработан Р. Л. Томасуло в 1967 году и впер-
вые воплощен в вычислительной системе IBM 360/91. После выборки и декоди-
рования команды распределяются по схемам резервирования тех ФБ, где команда
будет исполняться. В буфере команда запоминается и по готовности выдается в свя-
занный с данным пунктом функциональный блок. Логика работы каждого нако-
пителя аналогична централизованному окну команд. Выдача происходит только
после того, как команда получит все необходимые операнды, и при условии, что
ФБ свободен. При обновлении содержимого буфера переименования файла про-
изводится доступ ко всем накопителям команд, и в них идентификаторы обнов-
ленных входов заменяются хранящимися в этих входах значениями операндов.
Отметим одну особенность рассматриваемой схемы: не требуется, чтобы опе-
ранд был обязательно занесен в отведенный для него регистр — он может быть
ускоренно передан прямо в накопитель команд для немедленного использования
или буферизирован там для последующего использования.
Число независимых команд, которые могут выполняться одновременно, варьи-
руется от программы к программе, а также в пределах каждой программы. В сред-
нем число таких команд равно 1 -3, временами возрастая до 5-6. Механизм резер-
вирования ориентирован на одновременную выдачу нескольких команд, что, как
правило, легче реализовать с распределенным, а не централизованным окном ко-
манд, поскольку темп загрузки распределенных буферов обычно меньше, чем по-
тенциальный темп выдачи команд. Пропускная способность линии связи между
централизованным окном команд и функциональными блоками должна бытъ выше,
чем в случае распределенного окна. Однако для централизованного окна харак-
терно более эффективное задействование емкости буфера.
Емкость накопителя команд в каждом функциональном блоке зависит от ожи-
даемого числа команд для этого блока. Типичный накопитель рассчитан на 1-3 ко-
манды. Если в одной из них одновременно готовы несколько команд, выдача их
в ФБ производится в порядке занесения этих команд в накопитель.
Для более детального пояснения процессов, происходящих в технологии нако-
пителей, рассмотрим следующий пример. На рис. 9.52 показана схема передачи
декодированных команд с переименованными регистрами в накопитель команд.
Предполагается, что в рамках одного цикла в накопитель могут быть выданы до
двух команд. Буфер переименования представлен регистровым файлом (РгФ). Из
РгФ позволено одновременно выбрать по два операнда (R
S1
,R
S2
) для каждой из двух
команд. Каждый регистр РгФ имеет дополнительный бит достоверности
(V),
еди-
ничное состояние которого свидетельствует о корректности содержимого регистра.
Доступные операнды (O
S1
,0
S2
) переписываются в соответствующие поля ячеек на-
копителя (O
S1
/I
SI
,
O
S 2
/I
S 2
),
при этом биты достоверности этих полей (V
S1
, V
S2
) уста-
навливаются в единицу. Если значение операнда в РгФ недоступно, то в поля (O
SI
/
I
S1
, O
S2
/I
S2
)заносится порядковый номер того регистра, откуда операнд должен быть
4 7 0 Глава 9. Основные направления в архитектуре процессоров
Рис. 9.52. Общая схема шелвинга к примеру
После передачи команд в накопитель там производится проверка на наличие
команд, для исполнения которых есть все необходимые операнды. Поиск таких
команд выполняется путем анализа битов V
S1
и V
S2.
Если у команды оба бита в еди-
ничном состоянии, то она готова к выдаче в ФБ. При наличии в накопителе только
одной команды она сразу выдается в ФБ. Если готовых команд несколько, из них
в ФБ пересылается наиболее «старая», то есть поступившая в накопитель первой.
После завершения команды ее результат совместно с идентификатором регистра
результата (R
o
) выдается в РгФ и в накопитель для обновления их содержимого.
В ходе обновления РгФ вычисленное значение заносится в R
D
, а бит достовернос-
ти регистра результата устанавливается в единицу. С этого момента значение R
O
доступно в качестве операнда для последующих команд. В накопителе произво-
дятся поиск идентификатора R
O
, в полях (O
S1
/I
SI
,
O
S2
/I
S2
)
всех команд и их замена на
вычисленное значение. Одновременно состояние бита V
S1
(V
S1
) изменяется на еди-
ницу. Далее выполняются очередной поиск готовых к исполнению команд и их
выдача в ФБ.
Суперскалярные процессоры 4 7 1
Теперь рассмотрим технику переупорядочивания команд с использованием
накопителей на примере следующей последовательности команд:
После декодирования и переименования регистров команда MUL в цикле
г
выдается в накопитель (рис. 9.53,
а).
Одновременно с этим из РгФ выбираются
операнды этой команды (Rl и R2). Поскольку биты достоверности регистров опе-
рандов (V-биты) показывают, что значения операндов доступны (R1 - 10, R2 - 20),
то эти значения будут переданы в накопитель, а биты наличия операндов в нако-
пителе (V
S1
и V
a
) будут установлены в единицу. Бит достоверности регистра назна-
чения R3 в РгФ сбрасывается с тем, чтобы не допустить доступ к этому регистру
последующих команд до тех пор, пока в него не будет помещен результат опера-
ции MUL.
Рис. 9.53. К примеру техники переупорядочивания команд с использованием накопителей:
а — выдача команды MUL в накопитель в цикле i и выборка соответствующих операндов;
б —
поиск выполнимых команд и диспетчеризация команды MUL в цикле i +1
Вследуюшем(* + 1)-м цикле происходит передача команды из накопителя (этот
этап принято называть диспетчеризацией) в функциональный блок (ФБ) и выда-
ча в накопитель двух очередных команд ADD. Сначала делается проверка битов
наличия операндов (V
S1
и V
SJ
) у всех находящихся в накопителе команд (в нашем
примере здесь только одна команда MUL), Поскольку оба операнда доступны
(V
S1
- 1 и V
S2
- 1), команда MUL пересылается в ФБ на исполнение. Это иллюстри-
рует рис. 9.53,
6.