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

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

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

Добавлен: 24.12.2021

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

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

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

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

Команда может быть считана из табло и выдана на исполнение лишь после того,

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

для исполнения этой команды ФБ свободен. После завершения команды в ФБ

производится запись полученного результата (если эта команда предполагает дан-

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

результата. Одновременно производится ассоциативный доступ ко всем хранящим-
ся в табло командам и в тех из них, где в полях операндов указан идентификатор
обновленного входа БП, этот идентификатор заменяется занесенным в регистр
новым значением, с соответствующей коррекцией битов достоверности. Далее за-
вершенная команда покидает табло. Удаление команды из табло является основа-

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

Отметим, что рассматриваемая технология предполагает схему распределения

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

 диспетчеризацией.

В примере, приведенном на рис. 9.51, для команд I1, I2,I3 и I5 известны значе-

ния одного из операндов, и они вынуждены ожидать значения второго операнда.

Команде I4 известны оба операнда, и при условии доступности ФБ, требуемого

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

ОП - дешифрированный код операции; ИД - идентификатор регистра;

ЗН - значение операнда; ЗД - значение достоверно

Рис. 9 . 5 1 . Содержимое табло

В каждом такте работы процессора готовыми к выдаче могут оказаться сразу

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

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

После выдачи команды из табло ее позиция освобождается и может быть ис-

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

данную программой последовательность команд. Эту задачу решают одним из двух

методов. В первом из них, именуемом как

 стек диспетчеризации,

 после выдачи

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

заполняя вновь доступные позиции и освобождая верхнюю часть табло. Новые

команды всегда загружаются в верхнюю часть табло. В случае второго метода, с так
называемым

 блоком обновления регистров,

 табло функционирует так же, как оче-


background image

Суперскалярные процессоры  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

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


background image

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

) изменяется на еди-

ницу. Далее выполняются очередной поиск готовых к исполнению команд и их
выдача в ФБ.


background image

Суперскалярные процессоры  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.