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

Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем

.pdf
Скачиваний:
2028
Добавлен:
02.05.2014
Размер:
22.66 Mб
Скачать

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

R1 и R2. Поскольку последнее переименование регистра R1 достоверно, выборка содержащегося в регистре значения может быть произведена так, как это было описано выше. Однако значение R2 еще не вычислено, поэтому вместо него в ис­ полнительную часть процессора, где будет выполняться команда ADD, пересыла­ ется номер соответствующего-входа буфера переименования (в нашем примере это 3).

Теперь в буфере переименования имеется несколько входов, ссылающихся на один и тот же регистр. Так, на рис. 9.50, е показана ситуация, когда команда SUB выдана до завершения команды MUL. В этом случае под регистр R2 выделен еще один вход (вход 5), в котором установлены соответствующие значения в полях ЗД и ПП Одновременно содержимое поля ПП входа 3, где хранилось предыдущее опи­ сание регистра R2, изменено на 0. Таким образом, с данного момента все последую­ щие команды, ссылающиеся на регистр R2 как источник операнда, будут переад­ ресовываться на вход 5. Это будет продолжаться до появления новой команды, с регистром результата R2

По завершении команды регистр результата должен быть модифицирован так, чтобы последующие команды могли получить доступ к вычисленному результату. Модификация базируется на идентификаторе входа буфера переименования, вы­ деленного для запрошенного регистра результата. В нашем примере предположим, что завершилась команда MUL и результат 0 должен быть занесен во вход 3 (рису­ нок 9.50, ж), В поле ЗП этого входа помещается единица, показывающая, что зна­ чение регистра R2 уже доступно.

Последний момент - это освобождение входа буфера переименования (рису­ нок 9.50, з). Критерий освобождения входа будет рассмотрен позже.

Переупорядочивание команд

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

Централизованное окно команд. Данное окно реализуется в виде так называемого табло (Scoreboard). Техника табло впервые была предложена в 1964 году фирмой Cray и реализована в ЭВМ CDC 6600.

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

Табло (иногда слово Scoreboard переводят как табельная доска) представляет собой буферное запоминающее устройство, в котором хранится некоторое коли­ чество последних извлеченных из памяти и декодированных команд, а также теку­ щая информация о доступности ресурсов, привлекаемых для их исполнения. Функ­ циями табло являются оперативное выявление команд, для исполнения которых уже доступны все необходимые операнды и ресурсы, и выдача таких команд на исполнение в соответствующие функциональные блоки. Табло можно рассматри­ вать как систему предварительной диспетчеризации команд, однако оно осуще­ ствляет контроль выполнения команд и после их выдачи.

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

- поля операции, где хранится дешифрированный код операции;

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

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

-поля битов достоверности.

Втабло также хранится текущая информация о доступности устройств обра­ ботки (функциональных блоков).

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

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

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

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

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

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

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

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

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