Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
33
Добавлен:
01.05.2014
Размер:
269.42 Кб
Скачать

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

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

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

В примере, приведенном на рис. 9.51, для команд I1, I2,I3 и I5 известны значения одного из операндов, и они вынуждены ожидать значения второго операнда. Команде I4 известны оба операнда, и при условии доступности ФБ, требуемого для ее исполнения, она вправе быть выдана из окна команд.

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

ЗН - значение операнда; ЗД - значение достоверно Рис.9.51.Содержимоетабло

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

После выдачи команды из табло ее позиция освобождается и может быть использована для загрузки новой команды. Вместе с тем необходимо сохранить заданную программой последовательность команд. Эту задачу решают одним из двух методов. В первом из них, именуемом как стек диспетчеризации, после выдачи команд и освобождения позиций в окне последующие команды сдвигаются вниз, заполняя вновь доступные позиции и освобождая верхнюю часть табло. Новые команды всегда загружаются в верхнюю часть табло. В случае второго метода, с так называемымблокомобновлениярегистров,таблофункционируеттакже,какоче-

Суперскалярные процессоры

4 6 9

редь типа FIFO, но производится общий сдвиг вниз, включая и освободившиеся позиции. Это упрощает логику работы централизованного окна.

Распределенное окно команд. В варианте распределенного окна команд на входе каждого функционального блока размещается буфер декодированных команд, называемый накопителем команд или схемой резервирования (reservation station). Метод резервирования был разработан Р. Л. Томасуло в 1967 году и впервые воплощен в вычислительной системе IBM 360/91. После выборки и декодирования команды распределяются по схемам резервирования тех ФБ, где команда будет исполняться. В буфере командазапоминается и по готовности выдается в связанный с данным пунктом функциональный блок. Логика работы каждого накопителя аналогична централизованному окну команд. Выдача происходит только после того, как команда получит все необходимые операнды, и при условии, что ФБ свободен. При обновлении содержимого буфера переименования файла производится доступ ко всем накопителям команд, и в них идентификаторы обновленных входов заменяются хранящимися в этих входах значениями операндов.

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

Число независимых команд, которые могут выполняться одновременно, варьируется от программы к программе, а также в пределах каждой программы. В среднем число таких команд равно 1 -3, временами возрастая до 5-6. Механизм резервирования ориентирован на одновременную выдачу нескольких команд, что, как правило, легче реализовать с распределенным, а не централизованным окном команд, поскольку темп загрузки распределенных буферов обычно меньше, чем потенциальный темп выдачи команд. Пропускная способность линии связи между централизованнымокном команди функциональнымиблокамидолжнабытъ выше, чем в случае распределенного окна. Однако для централизованного окна характерно более эффективное задействование емкости буфера.

Емкость накопителя команд в каждом функциональном блоке зависит от ожидаемого числа команд для этого блока. Типичный накопитель рассчитан на 1-3 команды. Если в одной из них одновременно готовы несколько команд, выдача их в ФБ производится в порядке занесения этих команд в накопитель.

Для более детального пояснения процессов, происходящих в технологии накопителей, рассмотрим следующий пример. На рис. 9.52 показана схема передачи декодированных команд с переименованными регистрами в накопитель команд. Предполагается, что в рамках одного цикла в накопитель могут быть выданы до двух команд. Буфер переименования представлен регистровым файлом (РгФ). Из РгФ позволено одновременно выбрать подваоперанда(RS1 ,RS2)для каждой из двух команд. Каждый регистр РгФ имеетдополнительный бит достоверности (V), единичное состояние которого свидетельствует о корректности содержимого регистра. Доступные операнды (OS1,0S2) переписываются в соответствующие поля ячеек накопителя (OS1/ISI, OS 2 /IS 2 ), при этом биты достоверности этих полей (VS1, VS2) устанавливаются в единицу. Если значение операнда в РгФ недоступно, то в поля (OSI/ IS1,OS2/IS2)заноситсяпорядковый номертогорегистра, откудаоперанддолжен быть

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

Рис. 9.52. Общая схема шелвинга кпримеру

После передачи команд в накопитель там производится проверка на наличие команд, для исполнения которых есть все необходимые операнды. Поиск таких команд выполняется путем анализа битов VS1 и VS2.Если у команды оба бита в единичном состоянии, то она готова к выдаче в ФБ. При наличии в накопителе только одной команды она сразу выдается в ФБ. Если готовых команд несколько, из них в ФБ пересылается наиболее «старая», то есть поступившая в накопитель первой. После завершения команды ее результат совместно с идентификатором регистра результата (Ro) выдается в РгФ и в накопитель для обновления их содержимого. В ходе обновления РгФ вычисленное значение заносится в RD, а бит достоверности регистра результата устанавливается в единицу. С этого момента значение RO доступно в качестве операнда для последующих команд. В накопителе производятся поиск идентификатора RO, в полях (OS1/ISI, OS2/IS2) всех команд и их замена на вычисленное значение. Одновременно состояние бита VS1 (VS1) изменяется на единицу. Далее выполняются очередной поиск готовых к исполнению команд и их выдача в ФБ.

Суперскалярные процессоры 4 7 1

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

После декодирования и переименования регистров команда MUL в цикле г выдается в накопитель (рис. 9.53, а). Одновременно с этим из РгФ выбираются операнды этой команды (Rl и R2). Поскольку биты достоверности регистров операндов (V-биты) показывают, что значения операндов доступны (R1 - 10, R2 - 20), то эти значения будут переданы в накопитель, а биты наличия операндов в накопителе (VS1 и Va) будут установлены в единицу. Бит достоверности регистра назначения R3 в РгФ сбрасывается с тем, чтобы не допустить доступ к этому регистру последующих команд до тех пор, пока в него не будет помещен результат операцииMUL.

Рис.9.53.Кпримерутехникипереупорядочиваниякомандсиспользованиемнакопителей:

а— выдача команды MUL в накопитель в цикле i и выборка соответствующих операндов;

бпоиск выполнимых команд и диспетчеризация команды MUL в цикле i +1

Вследуюшем(* + 1)-м цикле происходит передача команды из накопителя (этот этап принято называть диспетчеризацией) в функциональный блок (ФБ) и выдача в накопитель двух очередных команд ADD. Сначала делается проверка битов наличия операндов (VS1 и VSJ) у всех находящихся в накопителе команд (в нашем примере здесь только одна команда MUL), Поскольку оба операнда доступны (VS1 - 1 и VS2 - 1), команда MUL пересылается в ФБ на исполнение. Это иллюстрируетрис.9.53,6.

Соседние файлы в папке Организация ЭВМ и систем