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

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

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

Добавлен: 24.12.2021

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

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

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

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

ния выделяется один из свободных в данный момент физических регистров АРФ
(Rj). Во всех последующих командах, где в качестве логического регистра операнда

упоминается Ri, ссылка на него заменяется ссылкой на физический регистр Rj. Та-
ким образом, различные команды, где указан один и тот же логический регистр,
могут обращаться к различным физическим регистрам.

Номера логических регистров динамически отображаются на номера физичес-

ких регистров посредством

 таблиц подстановки

 (lookup table), которые обновля-

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

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

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

должно быть прервано из-за возникновения исключительной ситуации или непра-

вильного предсказания направления условного перехода.

Переименование регистров может быть реализовано и по-другому — с помощью

буфера переименования.

 Проиллюстрируем этот способ, вернувшись к ранее при-

веденной последовательности из трех команд. Схема содержит аппаратный регис-
тровый файл (АРФ) на

 М

 регистров и буфер переименования (БП) на N входов

(рис. 9.49). Будем считать, что число логических регистров также равно

 М,

 то есть

в качестве временных регистров переименования используются только ячейки БП.

Рис. 9.49. Аппаратный регистровый файл и буфер переименования

Каждому регистру АРФ придан бит «Значение достоверно» (ЗД). Единичное

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

Буфер переименования представляет собой ассоциативное запоминающее уст-

ройство или набор регистров с ассоциативным доступом. Каждая ячейка или ре-
гистр БП идентифицируется своим порядковым номером (0, 1,.,.,

 N

 - 1). Инфор-

мация, хранящаяся в ячейке или регистре БП (в каждом входе), представляется

пятью полями:

-

 Вход занят(ВЗ)

. Однобитовое поле, единичное значение которого говорит о том,

что этот вход БП недоступен.

-

 Номер переименованного регистра (Рг)

. В поле содержится номер логического

регистра АРФ, для временной замены которого выделена данная ячейка БП.

-

 Значение

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

ле Рг.


background image

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

- Значение достоверно (ЗД).

 Однобитовое поле, единичное значение которого

подтверждает достоверность содержимого поля «Значение» (если значение еще
не вычислено, то

 ЗД

 = 0).

-

 Последнее переименование (П П

 ). Если в БП несколько ячеек через поле Рг ссы-

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

Предположим, что в исходный момент (рис. 9.50,

 а)

 в буфере переименования

заполнены три первых входа, то есть имеем единицы в их поле ВЗ. Текущее состо-

яние БП свидетельствует о том, что в предшествующих командах для записи ре-
зультатов использовались регистры R4, R0 и Rl, и хотя результаты этих команд уже

получены (в поле ЗД записана единица), вычисленные значения еще не переписа-
ны в соответствующие регистры АРФ.

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

На рис. 9.50,

6

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

Единица в поле ПП входа 3 указывает, что последнему переименованию регистра
R1 соответствует именно данный вход. У всех остальных входов, ссылающихся на
«устаревшие» значения R1, в этом поле будет 0. Если очередной команде требуется

значение из регистра Rl, то из двух возможных чисел 10 и 15 будет взято 15, то есть
значение того входа, где в поле ПП содержится единица.

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

гистр, необходимо в буфере переименования выделить для этого регистра один из

свободных входов (свободную ячейку) и правильно инициализировать его поля.

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

руется значение указателя «хвоста». После выделения входа для регистра резуль-
тата производится инициализация его полей: устанавливаются в единицу поля ВД
и ПП, в поле Рг заносится номер регистра, а в поле ЗД помещается 0, означающий,
что поле «Значение» еще не содержит достоверного значения. Рисунок 9.50,

 в

 ил-

люстрирует состояние буфера переименования после выделения входа для регис-
тра R2 в команде MUL.

Теперь рассмотрим, каким образом из буфера извлекаются значения операн-

дов (поиск операндов в БП производится, если они отсутствуют в АРФ). В нашем

примере это соответствует выборке операндов для команды MUL (значений реги-
стров R0 и R1). Так как рассматриваемый буфер ассоциативный, то для получения

значений операндов нужно произвести ассоциативный поиск последних значений

регистров R0 и R1, то есть тех входов, где в поле Рг указаны искомые регистры, а в
поле ПП содержится 1 (рис. 9.50,

 г).

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

вычислено (недостоверно), вместо значения выдается идентификатор (номер) со-
ответствующего входа буфера и ставится пометка, что это не значение, а номер

входа. Рисунок 9.50, д показывает такую ситуацию для команды ADD. Первое, что

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

гистра R3, конкретно — входа 4. Далее должны быть извлечены значения регистров


background image

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

Рис, 9,50, Иллюстрация процессов в буфере переименования


background image

4 6 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.


background image

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

Табло (иногда слово Scoreboard переводят как табельная доска) представляет

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

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

уже доступны все необходимые операнды и ресурсы, и выдача таких команд на

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

ствляет контроль выполнения команд и после их выдачи.

Все извлеченные из памяти команды сразу же после их декодирования и, если

это необходимо, переименования регистров заносятся в табло, причем с соблюде-

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

нескольких полей:

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

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

либо информацию о том, откуда эти операнды должны быть получены;

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

тат выполнения данной команды;

-

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

В табло также хранится текущая информация о доступности устройств обра-

ботки (функциональных блоков).

Функционирование табло тесно увязано с работой буфера переименования и мо-

жет быть описано следующим образом. Каждая команда после декодирования и пе-

реименования регистров заносится в очередную свободную ячейку табло. Декоди-
рованный код операции помещается в поле операции. Если команда предполагает

загрузку результата в регистр, то на этот регистр имеется ссылка в БП и в поле

результата заносится номер входа БП, в котором хранится последняя ссылка на

данный регистр. Далее делается попытка заполнить поля операндов значениями
операндов. Сначала производится поиск нужного значения в аппаратном регист-

ровом файле. Если бит ЗД регистра операнда в АРФ установлен в 0 (значение не-

достоверно), это означает, что операндом является результат предыдущей опера-

ции и дальше следует искать в БП. Выполняется ассоциативный поиск ссылки на

регистр в буфере переименования. При удачном исходе (в найденной ячейке БП
биты ЗД и ПП установлены в единицу) требуемое значение операнда берется из
буфера переименования. В любом варианте при обнаружении достоверного значе-
ния операнда поле операнда ячейки табло заполняется найденным значением, а со-
ответствующий этому полю бит достоверности (ЗД) устанавливается в единицу.

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

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

Обновление информации о готовности операндов и доступности функциональ-

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