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

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

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

Добавлен: 25.12.2021

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

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

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

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

Рис. 9.36. Традиционная и суперконвейерная обработка команд

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

К сожалению, выигрыш, достигаемый за счет суперконвейеризации, на прак-

тике может оказаться лишь умозрительным. Удлинение конвейера ведет не толь-

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

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


background image

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

Архитектуры с полным и сокращенным

набором команд

Современная технология программирования ориентирована на языки высокого
уровня (ЯВУ), главная задача которых — облегчить процесс написания программ.
Более 90% всего процесса программирования осуществляют на ЯВУ. К сожале-
нию, операции, характерные для ЯВУ, отличаются от операций, реализуемых ма-
шинными командами. Эта проблема получила название

 семантического разрыва

 и

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

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

няя ее командами, реализующими сложные операторы ЯВУ на аппаратурном уров-
не, вводят дополнительные виды адресации и т. п. Вычислительные машины, где

реализованы эти средства, принято называть ВМ

 с полным набором команд

 (CISC —

Complex Instruction Set Computer). К типу CISC можно отнести практически все
ВМ, выпускавшиеся до середины 80-х годов и значительную часть из выпускае-
мых в настоящее время.

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

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

тельно проанализировать программы, получаемые после компиляции с ЯВУ. Был

предпринят комплекс исследований [128,158,177,178,209], в результате которых

обнаружились интересные закономерности:

-

 Реализация сложных команд, эквивалентных операторам ЯВУ, требует увели-

чения емкости управляющей памяти в микропрограммном УУ. Микропрограм-
как их доля в общем объеме программы зачастую не превышает 0,2%.

- В откомпилированной программе операторы ЯВУ реализуются в виде проце-

дур (подпрограмм), поэтому на операции вызова процедуры и возврата из нее

приходится от 15 до 45% вычислительной нагрузки.

-

 При вызове процедуры вызывающая программа передает этой процедуре неко-

торое количество аргументов. Согласно [209], в 98% случаев число передавае-
мых аргументов не превышает шести. Примерно такое же положение сложи-
лось и с параметрами, которые процедура возвращает вызывающей программе.

Более 80% переменных, используемых программой [177,178], являются локаль-
ными, то есть создаются при входе в процедуру и уничтожаются при выходе из

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

в 92% случаев не превышает шести [209].

- Почти половину операций в ходе вычислений составляет операция присваива-

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

регистрами и памятью.


background image

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

Детальный анализ результатов исследований привел к серьезному пересмотру

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

 архи-

тектуры с сокращенным набором команд

 (RISC — Reduced Instruction Set Compu-

ter). Термин «RISC» впервые был использован Паттерсоном и Дитцелем в 1980 году.

Основные черты RISC-архитектуры

Главные усилия в архитектуре RISC направлены на построение максимально эф-

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

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

загруженным на протяжении всего времени. Кроме того, идеальным будет вариант,

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

Последнее условие относительно просто можно реализовать для этапа выборки.

Необходимо лишь, чтобы все команды имели стандартную длину, равную ширине

шины данных, соединяющей ЦП и память. Унификация времени исполнения для

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

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

Помимо одинаковой длины команд, важно иметь относительно простую под-

систему декодирования и управления: сложное устройство управления (УУ) бу-
дет вносить дополнительные задержки в формирование сигналов управления.

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

Излишне напоминать, что в сокращенном списке команд должны оставаться

те, которые используются наиболее часто. Исследования показали, что 80-90%
времени выполнения типовых программ приходится на относительно малую часть
команд (10-20%). К наиболее часто востребуемым действиям относятся пересыл-
ка данных, арифметические и логические операции. Основная причина, препят-
ствующая сведению всех этапов цикла команды к одному тактовому периоду, - по-
тенциальная необходимость доступа к памяти для выборки операндов и/или записи
результатов. Следует максимально сократить число команд, имеющих доступ

 к

 па-

мяти. Это соображение добавляет к ранее упомянутым принципам RISC еще два:

-

 доступ к памяти во время исполнения осуществляется только командами «Чте-

ние» и «Запись»;

-

 все операции, кроме «Чтение» и «Запись», имеют тип «регистр-регистр».

Для упрощения выполнения большинства команд и приведения их к типу «ре-

гистр-регистр* требуется снабдить ЦП значительным числом регистров общего
назначения. Большое число регистров в регистровом файле ЦП позволяет обеспе-

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

Суммируя сказанное, концепцию RISC-компьютера можно свести к следую-

щим положениям:

-

 выполнение всех (или, по крайней мере, 75% команд) за один цикл;

-

 стандартная однословная длина всех команд, равная естественной длине слова

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


background image

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

-

 малое число команд (не более 128);

- малое количество форматов команд (не более 4);
- малое число способов адресации (не более 4);
- доступ к памяти только посредством команд «Чтение» и -«Запись»;

- все команды, за исключением «Чтения» и «Записи», используют внутрипро-

цессорные межрегистровые пересылки;

-

 устройство управления «жесткой» логикой;

- относительно большой (не менее 32) процессорный файл регистров общего

назначения (согласно [210] число РОН в современных RISC-микропроцессо-
рах может превышать 500).

Регистры в RISC-процессорах

Отличительная черта RISC-архитектуры — большое число регистров общего на-

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

регистр». Но увеличение числа РОН способно дать эффект лишь при разумном их
использовании. Оптимизация использования регистров в RISC-процессорах обес-
печивается как программными, так и аппаратными средствами.

Программная оптимизация

 выполняется на этапе компиляции программы, на-

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

На начальном этапе компилятор выделяет каждой переменной виртуаль-

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

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

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

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

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

щается в ячейку памяти.

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

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

 как раскраска графа.

В общем случае метод формулируется следующим образом. Имеется граф, состоя-

щий из узлов и ребер. Необходимо раскрасить узлы так, чтобы соседние узлы име-

ли разный цвет и чтобы при этом общее количество привлеченных цветов было

минимальным. В нашем случае роль узлов выполняют виртуальные регистры. Если

два виртуальных регистра одновременно присутствуют в одном и том же фрагмен-

те программы, они соединяются ребром. Делается попытка раскрасить граф
в n цветов, где

 п —

 число физических регистров. Если такая попытка не увенча-

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

На рис. 9.37 приведен пример раскраски графа [36], в котором шесть виртуаль-

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


background image

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

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

 а)

 и раскрашенный граф (рис. 9.37,

 б).

Как видно, не удалось раскрасить только виртуальный регистр F, его придется

отображать на ячейку памяти.

Аппаратная оптимизация

 использования регистров в RISC-процессорах ори-

ентирована на сокращение затрат времени при работе с процедурами. Наиболь-

шее время в программах, написанных на ЯВУ, расходуется на вызовы процедур

и возврат из них. Связано это с созданием и обработкой большого числа локаль-

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

являются так называемые

 регистровые окна.

 Главная их задача — упростить и ус-

корить передачу параметров от вызывающей процедуры к вызываемой и обратно.

Рис. 9.37. Иллюстрация метода раскраски графа:

 a —

 временная последовательность

активного использования виртуальных регистров;

 б

 — граф взаимного

использования регистров

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

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

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

поле каждого регистрового окна одновременно является и правым полем предше-
ствующего ему окна (рис. 9.38). Среднее поле служит для хранения локальных
переменных и констант процедуры.

База окна

 (первый в последовательности регистров окна) указывается полем,

называемым указателем текущего окна (CWP, Current Window Pointer), обычно
расположенным в регистре (слове) состояния ЦП. Если текущей процедуре на-

значено регистровое окно j CWP содержит значение j

Каждой вновь вызванной процедуре выделяется регистровое окно, непосред-

ственно следующее за окном вызвавшей ее процедуры. Последние

 k

 регистров окна;

одновременно являются первыми

 k

 регистрами окна j + 1. Если процедура, зани-

мающая окно j обращается к процедуре, которой в данной архитектуре должно

быть назначено окно j + 1, она может передать в процессе вызова

 k

 аргументов.


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