ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.12.2021
Просмотров: 1196
Скачиваний: 2
Архитектуры с полным и сокращенным набором команд 4 5 1
Рис. 9.38. Перекрытие регистровых окон
Упомянутые
k
регистров сразу же будут доступны вызванной процедуре без вся-
ких пересылок. Естественно, вызов приведет к увеличению содержимого поля CPW
на единицу.
Глубина вложения процедур одна в другую может быть весьма велика, и жела-
тельно, чтобы количество регистровых окон не было сдерживающим фактором.
Это достигается за счет организации окон в виде циклического буфера.
На рис. 9.39 показан циклический буфер из шести окон, заполненный на глу-
бину 4 (процедура А вызвала В, В вызвала С, С вызвала D).
Указатель текущего окна
(CWP) идентифицирует окно активной на данный момент процедуры — D, то есть
окно 0
3
, При выполнении процедуры все ссылки на регистры в командах преобра-
зуются в смещение относительно С WP.
Указатель сохраненного окна
(SWP, Saved
Рис. 9.39. Циклический буфер из пересекающихся регистровых окон
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). Кроме того, остается больше места для других узлов ЦП и для
дополнительных устройств: кэш-памяти, блока арифметики с плавающей запятой,
части основной памяти, блока управления памятью, портов ввода/вывода.
Унификация набора команд, ориентация на потоковую конвейерную обработ-
ку, унификация размера команд и длительности их выполнения, устранение пери-
Суперскалярные процессоры 4 5 3
одов ожидания в конвейере — все эти факторы положительно сказываются на об-
щем быстродействии. Простое устройство управления имеет немного вентилей и,
следовательно, короткие линии связи для прохождения сигналов управления.
Малое число команд, форматов и режимов приводит к упрощению схемы декоди-
рования, и оно происходит быстрее. Применяемое в RISC УУ с «жесткой»логи-
кой быстрее микропрограммного. Высокой производительности способствует и уп-
рощение передачи параметров между процедурами. Таким образом, применение
RISC ведет к сокращению времени выполнения программы или увеличению ско-
рости, за счет сокращения числа циклов на команду.
Простота У У, сопровождаемая снижением стоимости и повышением надежно-
сти, также говорит в пользу RISC. Разработка УУ занимает меньше времени. Про-
стое УУ будет содержать меньше конструктивных ошибок и поэтому более надежно.
Многие современные CISC-машины, такие как VAX 11/780, VАХ-8600, имеют
много средств для прямой поддержки функций ЯВУ, наиболее частых в этих язы-
ках (управление процедурами, операции с массивами, проверка индексов масси-
вов, защита информации, управление памятью и т. д.). RISC также обладает рядом
средств для непосредственной поддержки ЯВУ и упрощения разработки компи-
ляторов ЯВУ, благодаря чему эта архитектура в плане поддержки ЯВУ ни в чем не
уступает CISC,
Недостатки RISC прямо связаны с некоторыми преимуществами этой архи-
тектуры. Принципиальный недостаток — сокращенное число команд: на выполне-
ние ряда функций приходится тратить несколько команд вместо одной в CISC.
Это удлиняет код программы, увеличивает загрузку памяти и трафик команд меж-
ду памятью и ЦП. Недавние исследования показали, что RISC-программа в сред-
нем на 30% длиннее CISC-программы, реализующей те же функции.
Хотя большое число регистров дает существенные преимущества, само по себе
оно усложняет схему декодирования номера регистра, тем самым увеличивается
время доступа к регистрам,
УУ с «жесткой» логикой, реализованное в большинстве RISC-систем, менее
гибко, более склонно к ошибкам, затрудняет поиск и исправление ошибок, уступа-
ет при выполнении сложных команд.
Однословная команда исключает прямую адресацию для полного 32-битового
адреса. Поэтому ряд производителей допускают небольшую часть команд двой-
ной длины, например в Intel 80960.
Суперскалярные процессоры
Поскольку возможности по совершенствованию элементной базы уже практичес-
ки исчерпаны, дальнейшее повышение производительности ВМ лежит в плоско-
сти архитектурных решений. Как уже отмечалось, один из наиболее эффективных
подходов в этом плане — введение в вычислительный процесс различных уровней
параллелизма. Ранее рассмотренный конвейер команд — типичный пример такого
подхода. Тем же целям служат и арифметические конвейеры, где конвейеризации
подвергается процесс выполнения арифметических операций. Дополнительный
уровень параллелизма реализуется в векторных и матричных процессорах, но толь-
ко при обработке многокомпонентных операндов типа векторов и массивов. Здесь
высокое быстродействие достигается за счет одновременной обработки всех ком-
понентов вектора или массива, однако подобные операнды характерны лишь для
4 5 4 Глава 9. Основные направления в архитектуре процессоров
достаточно узкого круга решаемых задач. Основной объем вычислительной на-
грузки обычно приходится на скалярные вычисления, то есть на обработку оди-
ночных операндов, таких, например, как целые числа. Для подобных вычислений
дополнительный параллелизм реализуется значительно сложнее, но тем не менее
возможен и примером могут служить суперскалярные процессоры.
Суперскалярным
(этот термин впервые был использован в 1987 году [45]) на-
зывается центральный процессор (ЦП), который одновременно выполняет более
чем одну скалярную команду. Это достигается за счет включения в состав ЦП не-
скольких самостоятельных функциональных (исполнительных) блоков, каждый
из которых отвечает за свой класс операций и может присутствовать в процессоре
в нескольких экземплярах. Так, в микропроцессоре Pentium III блоки целочислен-
рах Pentium 4 и Athlon — троированы. Структура типичного суперскалярного про-
цессора [234] показана на рис. 9.40, Процессор включает в себя шесть блоков: выборки
команд, декодирования команд, диспетчеризации команд, распределения команд по
функциональным блокам, блок исполнения и блок обновления состояния.
Рис. 0.40. Архитектура суперскалярного процессора
Блок выборки команд
извлекает команды из основной памяти через кэш-память
команд. Этот блок хранит несколько значений счетчика команд и обрабатывает
команды условного перехода.
Блок декодирования
расшифровывает код операции, содержащийся в извлечен-
ных из кэш-памяти командах, В некоторых суперскалярных процессорах, например
в микропроцессорах фирмы Intel, блоки выборки и декодирования совмещены.
Блоки диспетчеризации и распределения
взаимодействуют между собой и в со-
вокупности играют в суперскалярном процессоре роль контроллера трафика. Оба
Суперскалярные процессоры 4 5 5
блока хранят очереди декодированных команд. Очередь блока распределения часто
рассредоточивается по несколько самостоятельным буферам — накопителям ко-
манд или схемам резервирования (reservation station), — предназначенным для
хранения команд, которые уже декодированы, но еще не выполнены. Каждый на-
копитель команд связан со своим функциональным блоком (ФБ), поэтому число
накопителей обычно равно числу ФБ, но если в процессоре используется несколь-
ко однотипных ФБ, то им придается общий накопитель. По отношению к блоку
диспетчеризации накопители команд выступают в роли виртуальных функцио-
нальных устройств. Оба вида очередей показаны на рис. 9.41 [234]. В некоторых
суперскалярных процессорах они объединены в единую очередь.
Рис. 9.41. Очереди диспетчеризации и распределения
В дополнение к очереди, блок диспетчеризации хранит также список свобод-
ных функциональных блоков, называемый
табло
(Scoreboard). Табло использует-
диспетчеризации извлекает команды из своей очереди, считывает из памяти или
регистров операнды этих команд, после чего, в зависимости от состояния табло,
помещает команды и значения операндов в очередь распределения. Эта операция
называется
выдачей команд.
Блок распределения в каждом цикле проверяет каж-
дую команду в своих очередях на наличие всех необходимых для ее выполнения
операндов и при положительном ответе начинает выполнение таких команд в со-
ответствующем функциональном блоке.
Блок исполнения
состоит из набора функциональных блоков. Примерами ФБ
могут служить целочисленные операционные блоки, блоки умножения и сложе-
ния с плавающей запятой, блок доступа к памяти. Когда исполнение команды за-
вершается, ее результат записывается и анализируется
блоком обновления состоя-
ния,
который обеспечивает учет полученного результата теми командами в очередях
распределения, где этот результат выступает в качестве одного из операндов.
Как было отмечено ранее, суперскалярность предполагает параллельную рабо-
ту максимального числа исполнительных блоков, что возможно лишь при одно-
временном выполнении нескольких скалярных команд. Последнее условие хорошо
сочетается с конвейерной обработкой, при этом желательно, чтобы в суперскаляр-
ном процессоре было несколько конвейеров, например два или три.
Подобный подход реализован в микропроцессоре Intel Pentium, где имеются
два конвейера, каждый со своим АЛУ (рис. 9.42). Отметим, что здесь, в отличие от
стандартного конвейера, в каждом цикле необходимо производить выборку более