Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем
.pdfАрхитектуры с полным и сокращенным набором команд 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].
-Почти половину операций в ходе вычислений составляет операция присваива ния, сводящаяся к пересылке данных между регистрами, ячейками памяти или регистрами и памятью.
4 4 8 Глава 9. Основные направления в архитектуре процессоров
Детальный анализ результатов исследований привел к серьезному пересмотру традиционных архитектурных решений, следствием чего стало появление арх и- тектуры с сокращенным набором команд (RISC - Reduced Instruction Set Compu ter) . Термин «RISC» впервые был использован Паттерсоном и Дитцелем в 1980 году.
Основные черты RISC-архитектуры
Главные усилия в архитектуре RISC направлены на построение максимально эф фективного конвейера команд, то есть такого, где все команды извлекаются из па мяти и поступают в ЦП на обработку в виде равномерного пoтока, причем ни одна команда не должна находиться в состоянии ожидания, а ЦП должен оставаться загруженным на протяжении всего времени. Кроме того, идеальным будет вариант, когда любой этап цикла команды выполняется в течение одного тактового периода,
Последнее условие относительно просто можно реализовать для этапа выборки. Необходимо лишь, чтобы все команды имели стандартную длину, равную ширине шины данных, соединяющей ЦП и память. Унификация времени исполнения для различных команд — значительно более сложная задача, поскольку наряду с реги стровыми существуют также команды с обращением к памяти.
Помимо одинаковой длины команд, важно иметь относительно простую под систему декодирования и управления: сложное устройство управления (УУ) бу дет вносить дополнительные задержки в формирование сигналов управления. Очевидный путь существенного упрощения УУ — сокращение числа выполняе мых команд, форматов команд и данных, а также видов адресации.
Излишне напоминать, что в сокращенном списке команд должны оставаться те, которые используются наиболее часто. Исследования показали, что 80-90% времени выполнения типовых программ приходится на относительно малую часть команд (10-20%). К наиболее часто востребуемым действиям относятся пересыл ка данных, арифметические и логические операции. Основная причина, препят ствующая сведению всех этапов цикла команды к одному тактовому периоду, - по тенциальная необходимость доступа к памяти для выборки операндов и/или записи результатов. Следует максимально сократить число команд, имеющих доступ к па мяти. Это соображение добавляет к ранее упомянутым принципам RISC еще два
-доступ к памяти во время исполнения осуществляется только командами «Чте ние» и «Запись»;
-все операции, кроме «Чтение» и «Запись», имеют тип «регистр-регистр».
Для упрощения выполнения большинства команд и приведения их к типу «ре гистр-регистр* требуется снабдить ЦП значительным числом регистров общего назначения. Большое число регистров в регистровом файле ЦП позволяет обеспе чить временное хранение промежуточных результатов, используемых как операн ды в последующих операциях, и ведет к уменьшению числа обращений к памяти, ускоряя выполнение операций. Минимальное число регистров, равное 32, приня то как стандарт де-факто большинством производителей RISC-компьютеров,
Суммируя сказанное, концепцию RISC-компьютера можно свести к следую щим положениям:
-выполнение всех (или, по крайней мере, 75% команд) за один цикл;
-стандартная однословная длина всех команд, равная естественной длине слова
иширине шины данных и допускающая унифицированную поточную обработ ку всех команд;
4 5 2 Глава 9. Основные направления в архитектуре процессоров
Window Pointer) содержит номер последнего из окон, сохраненных в памяти по причине переполнения циклического буфера. Если процедура D теперь вызовет процедуру Е, аргументы для нее она поместит в общее для обеих поле регистровых окон (пересечение окон 03 и О4 а значение CWP увеличится на единицу, то есть CWP будет показывать на окно 04.
Если далее процедура Е вызовет нроцедуру F, то этот вызов при существующем состоянии буфера не может быть выполнен, поскольку окно для F(05) перекрыва ется с окном процедуры А (00). Следовательно, при попытке 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). Кроме того, остается больше места для других узлов ЦП и для дополнительных устройств: кэш-памяти, блока арифметики с плавающей запятой, части основной памяти, блока управления памятью, портов ввода/вывода.
Унификация набора команд, ориентация на потоковую конвейерную обработ ку, унификация размера команд и длительности их выполнения, устранение пери-
Суперскалярные процессоры 45 3
одов ожидания в конвейере — все эти факторы положительно сказываются на общем быстродействии. Простое устройство управления имеет немного вентилей и, следовательно, короткие линии связи для прохождения сигналов управления. Малое число команд, форматов и режимов приводит к упрощению схемы декоди рования, и оно происходит быстрее. Применяемое в RISC УУ с «жесткой»логикой быстрее микропрограммного. Высокой производительности способствует и уп рощение передачи параметров между процедурами. Таким образом, применение RISC ведет к сокращению времени выполнения программы или увеличению ско рости, за счет сокращения числа циклов на команду.
Простота У У, сопровождаемая снижением стоимости и повышением надежно сти, также говорит в пользу RISC. Разработка УУ занимает меньше времени. Про стое УУ будет содержать меньше конструктивных ошибок и поэтому более надежно.
Многие современные CISC-машины, такие как VAX 11/780, VА Х-8600, имеют много средств для прямой поддержки функций ЯВУ, наиболее частых в этих язы ках (управление процедурами, операции с массивами, проверка индексов масси вов, защита информации, управление памятью и т. д.). RISC также обладает рядом средств для непосредственной поддержки ЯВУ и упрощения разработки компи ляторов ЯВУ, благодаря чему эта архитектура в плане поддержки ЯВУ ни в чем не уступает CISC,
Недостатки RISC прямо связаны с некоторыми преимуществами этой архи тектуры. Принципиальный недостаток - сокращенное число команд: на выполне ние ряда функций приходится тратить несколько команд вместо одной в CISC. Это удлиняет код программы, увеличивает загрузку памяти и трафик команд меж ду памятью и ЦП. Недавние исследования показали, что RISC-программа в сред нем на 30% длиннее CISC-программы, реализующей те же функции.
Хотя большое число регистров дает существенные преимущества, само по себе оно усложняет схему декодирования номера регистра, тем самым увеличивается время доступа к регистрам,
УУ с «жесткой» логикой, реализованное в большинстве RISC-систем, менее гибко, более склонно к ошибкам, затрудняет поиск и исправление ошибок, уступа ет при выполнении сложных команд.
Однословная команда исключает прямую адресацию для полного 32-битового адреса Поэтому ряд производителей допускают небольшую часть команд двой ной длины, например в Intel 80960.
Суперскалярные процессоры
Поскольку возможности по совершенствованию элементной базы уже практичес ки исчерпаны, дальнейшее повышение производительности ВМ лежит в плоско сти архитектурных решений. Как уже отмечалось, один из наиболее эффективных подходов в этом плане - введение в вычислительный процесс различных уровней параллелизма Ранее рассмотренный конвейер команд - типичный пример такого подхода Тем же целям служат и арифметические конвейеры, где конвейеризации подвергается процесс выполнения арифметических операций. Дополнительный уровень параллелизма реализуется в векторных и матричных процессорах, но толь ко при обработке многокомпонентных операндов типа векторов и массивов. Здесь высокое быстродействие достигается за счет одновременной обработки всех ком понентов вектора или массива, однако подобные операнды характерны лишь для