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

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

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

Добавлен: 25.12.2021

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

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

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

Архитектуры с полным и сокращенным набором команд  4 5 1

Рис. 9.38. Перекрытие регистровых окон

Упомянутые

 k

 регистров сразу же будут доступны вызванной процедуре без вся-

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

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

тельно, чтобы количество регистровых окон не было сдерживающим фактором.

Это достигается за счет организации окон в виде циклического буфера.

На рис. 9.39 показан циклический буфер из шести окон, заполненный на глу-

бину 4 (процедура А вызвала В, В вызвала С, С вызвала D).

 Указатель текущего окна

(CWP) идентифицирует окно активной на данный момент процедуры — D, то есть

окно 0

3

, При выполнении процедуры все ссылки на регистры в командах преобра-

зуются в смещение относительно С WP.

 Указатель сохраненного окна

 (SWP, Saved

Рис. 9.39. Циклический буфер из пересекающихся регистровых окон


background image

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

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

окон (пересечение окон 0

3

 и О

4

 а значение CWP увеличится на единицу, то есть

CWP будет показывать на окно 0

4

.

Если далее процедура Е вызовет нроцедуру F, то этот вызов при существующем

состоянии буфера не может быть выполнен, поскольку окно для F(0

5

) перекрыва-

ется с окном процедуры А (0

0

). Следовательно, при попытке F начать загружать

правое поле своего окна будут потеряны параметры процедуры А (А

вх

). Поэтому

когда CWP увеличивается на единицу (операция выполняется по модулю 6) и ока-

зывается равным SWP, возникает прерывание и окно процедуры А сохраняется

в памяти (запоминаются только поля А

вх

 и А

вых

). Далее значение CWP инкремен-

тируется и производится вызов процедуры F, Аналогичное прерывание происхо-
дит и при возврате, например когда выполнится возврат из В в A. CWP уменьшает-

приведет к восстановлению содержимого окна процедуры А из памяти.

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

 п

 окон способен поддерживать

 п

 - 1

вызов процедуры. Число

 п

 не должно быть большим. В [208] показано, что при

8 регистровых окнах сохранение и восстановление окон в памяти требуется лишь
для 1% операций вызова процедур. В ВМ Pyramid, например, используется 16 окон

по 32 регистра в каждом.

Теоретически такой прием не исключен и в CISC. Однако устройство управле-

ния CISC-процессора оккупирует на кристалле более 50% площади, оставляя мало
места для других подсистем, в частности для большого файла регистров. У У RISC

занимает порядка 10% поверхности кристалла, предоставляя возможность иметь
большой регистровый файл.

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

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

подобным свойством, называют

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

 Прием оказывается очень

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

Преимущества и недостатки RISC

Сравнивая достоинства и недостатки CISC и RISC, невозможно сделать однознач-

ный вывод о неоспоримом преимуществе одной архитектуры над другой. Для от-

дельных сфер использования ВМ лучшей оказывается та или иная. Тем не менее

ниже приводится основная аргументация «за» и «против» RISC-архитектуры,

Для технологии RISC характерна сравнительно простая структура устройства

управления. Площадь, выделяемая на кристалле микросхемы для реализации УУ,
существенно меньше.Так, в RISC I она составляет 6%,а в RISC II — 10%. Как след-
ствие, появляется возможность разместить на кристалле большое число регистров

ЦП (138 в RISC II). Кроме того, остается больше места для других узлов ЦП и для

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

Унификация набора команд, ориентация на потоковую конвейерную обработ-

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


background image

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

одов ожидания в конвейере — все эти факторы положительно сказываются на об-

щем быстродействии. Простое устройство управления имеет немного вентилей и,

следовательно, короткие линии связи для прохождения сигналов управления.
Малое число команд, форматов и режимов приводит к упрощению схемы декоди-
рования, и оно происходит быстрее. Применяемое в RISC УУ с «жесткой»логи-
кой быстрее микропрограммного. Высокой производительности способствует и уп-

рощение передачи параметров между процедурами. Таким образом, применение

RISC ведет к сокращению времени выполнения программы или увеличению ско-

рости, за счет сокращения числа циклов на команду.

Простота У У, сопровождаемая снижением стоимости и повышением надежно-

сти, также говорит в пользу RISC. Разработка УУ занимает меньше времени. Про-
стое УУ будет содержать меньше конструктивных ошибок и поэтому более надежно.

Многие современные CISC-машины, такие как VAX 11/780, VАХ-8600, имеют

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

ляторов ЯВУ, благодаря чему эта архитектура в плане поддержки ЯВУ ни в чем не
уступает CISC,

Недостатки RISC прямо связаны с некоторыми преимуществами этой архи-

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

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

нем на 30% длиннее CISC-программы, реализующей те же функции.

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

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

время доступа к регистрам,

УУ с «жесткой» логикой, реализованное в большинстве RISC-систем, менее

гибко, более склонно к ошибкам, затрудняет поиск и исправление ошибок, уступа-

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

Однословная команда исключает прямую адресацию для полного 32-битового

адреса. Поэтому ряд производителей допускают небольшую часть команд двой-
ной длины, например в Intel 80960.

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

Поскольку возможности по совершенствованию элементной базы уже практичес-
ки исчерпаны, дальнейшее повышение производительности ВМ лежит в плоско-

сти архитектурных решений. Как уже отмечалось, один из наиболее эффективных
подходов в этом плане — введение в вычислительный процесс различных уровней
параллелизма. Ранее рассмотренный конвейер команд — типичный пример такого
подхода. Тем же целям служат и арифметические конвейеры, где конвейеризации
подвергается процесс выполнения арифметических операций. Дополнительный
уровень параллелизма реализуется в векторных и матричных процессорах, но толь-
ко при обработке многокомпонентных операндов типа векторов и массивов. Здесь
высокое быстродействие достигается за счет одновременной обработки всех ком-
понентов вектора или массива, однако подобные операнды характерны лишь для


background image

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

достаточно узкого круга решаемых задач. Основной объем вычислительной на-

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

дополнительный параллелизм реализуется значительно сложнее, но тем не менее

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

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

 (этот термин впервые был использован в 1987 году [45]) на-

зывается центральный процессор (ЦП), который одновременно выполняет более

чем одну скалярную команду. Это достигается за счет включения в состав ЦП не-
скольких самостоятельных функциональных (исполнительных) блоков, каждый
из которых отвечает за свой класс операций и может присутствовать в процессоре
в нескольких экземплярах. Так, в микропроцессоре Pentium III блоки целочислен-
рах Pentium 4 и Athlon — троированы. Структура типичного суперскалярного про-
цессора [234] показана на рис. 9.40, Процессор включает в себя шесть блоков: выборки
команд, декодирования команд, диспетчеризации команд, распределения команд по
функциональным блокам, блок исполнения и блок обновления состояния.

Рис. 0.40. Архитектура суперскалярного процессора

Блок выборки команд

 извлекает команды из основной памяти через кэш-память

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

Блок декодирования

 расшифровывает код операции, содержащийся в извлечен-

ных из кэш-памяти командах, В некоторых суперскалярных процессорах, например
в микропроцессорах фирмы Intel, блоки выборки и декодирования совмещены.

Блоки диспетчеризации и распределения

 взаимодействуют между собой и в со-

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


background image

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

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

рассредоточивается по несколько самостоятельным буферам — накопителям ко-

манд или схемам резервирования (reservation station), — предназначенным для
хранения команд, которые уже декодированы, но еще не выполнены. Каждый на-

копитель команд связан со своим функциональным блоком (ФБ), поэтому число

накопителей обычно равно числу ФБ, но если в процессоре используется несколь-

ко однотипных ФБ, то им придается общий накопитель. По отношению к блоку

диспетчеризации накопители команд выступают в роли виртуальных функцио-

нальных устройств. Оба вида очередей показаны на рис. 9.41 [234]. В некоторых
суперскалярных процессорах они объединены в единую очередь.

Рис. 9.41. Очереди диспетчеризации и распределения

В дополнение к очереди, блок диспетчеризации хранит также список свобод-

ных функциональных блоков, называемый

 табло

 (Scoreboard). Табло использует-

диспетчеризации извлекает команды из своей очереди, считывает из памяти или

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

 выдачей команд.

 Блок распределения в каждом цикле проверяет каж-

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

Блок исполнения

 состоит из набора функциональных блоков. Примерами ФБ

могут служить целочисленные операционные блоки, блоки умножения и сложе-

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

 блоком обновления состоя-

ния,

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

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

Как было отмечено ранее, суперскалярность предполагает параллельную рабо-

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

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

Подобный подход реализован в микропроцессоре Intel Pentium, где имеются

два конвейера, каждый со своим АЛУ (рис. 9.42). Отметим, что здесь, в отличие от
стандартного конвейера, в каждом цикле необходимо производить выборку более


Смотрите также файлы