Risc архитектура структурная схема. Сравнительный анализ CISC и RISC архитектур. Архитектуры с сокращенным набором команд

Это устройство, представляющее собой одну или несколько больших интегральных схем(БИС), выполняющих функции процессора ЭВМ.Классическое вычислительное устройство состоит из арифметического устройства (АУ), устройства управления (УУ), запоминающего устройства (ЗУ) и устройства ввода-вывода (УВВ).

Существуют процессоры различной архитектуры.

CISC (англ. Complex Instruction Set Computing) - концепция проектирования процессоров, которая характеризуется следующим набором свойств:

· большим числом различных по формату и длине команд;

· введением большого числа различных режимов адресации;

· обладает сложной кодировкой инструкции.

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

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

Достоинства архитектуры CISC

  1. Компактность наборов инструкций уменьшает размер программ и уменьшает количество обращений к памяти.
  2. Наборы инструкций включают поддержку конструкций высокоуровневого программирования.

Недостатки архитектуры CISC

  1. Нерегулярность потока команд.
  2. Высокая стоимость аппаратной части.
  3. Сложности с распараллеливанием вычислений.

RISC (Reduced Instruction Set Computing). Процессор с сокращенным набором команд. Система команд имеет упрощенный вид. Все команды одинакового формата с простой кодировкой. Обращение к памяти происходит посредством команд загрузки и записи, остальные команды типа регистр-регистр. Команда, поступающая в CPU, уже разделена по полям и не требует дополнительной дешифрации.

Часть кристалла освобождается для включения дополнительных компонентов. Степень интеграции ниже, чем в предыдущем архитектурном варианте, поэтому при высоком быстродействии допускается более низкая тактовая частота. Команда меньше загромождает ОЗУ, CPU дешевле. Программной совместимостью указанные архитектуры не обладают. Отладка программ на RISC более сложна. Данная технология может быть реализована программно-совместимым с технологией CISC (например, суперскалярная технология).

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

Достоинства архитектуры RISC

1.снижение нерегулярности потока команд

2.обогащение пространственным параллелизмом

Недостатки архитектуры RISC

MISC (Multipurpose lnstruction Set Computer). Элементная база состоит из двух частей, которые либо выполнены в отдельных корпусах, либо объединены. Основная часть – RISC CPU, расширяемый подключением второй части – ПЗУ микропрограммного управления. Система приобретает свойства CISC. Основные команды работают на RISC CPU, а команды расширения преобразуются в адрес микропрограммы. RISC CPU выполняет все команды за один такт, а вторая часть эквивалентна CPU со сложным набором команд. Наличие ПЗУ устраняет недостаток RISC, выраженный в том, что при компиляции с языка высокого уровня микрокод генерируется из библиотеки стандартных функций, занимающей много места в ОЗУ. Поскольку микропрограмма уже дешифрована и открыта для программиста, то времени выборки из ОЗУ на дешифрацию не требуется.

Не можешь заставить других - работай сам. Когда-то давно попросил я Константина Афанасьева рассказать читателям о тех процессорах, которые не Pentium. "Сделаем," - ответил Афанасьев. Вот и делаем.

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

Недолгое, но бурное развитие микрокомпьютеров привело к появлению двух доминирующих ветвей эволюции - Intel X86 и RISC. Первые появились раньше и успели занять значительную долю рынка, но разработанные в середине 80-х RISC-компьютеры оказались гораздо мощнее и оттяпали нишу высокопроизводительных систем.

Процессоры, не принадлежащие к классу RISC (Reduced Instruction Set Computing, вычисления с сокращенным набором команд), принято называть CISC (Complex ISC, вычисления со сложным набром команд). Так получилось, что из них пережило конкурентную борьбу только семейство X86 с его багажом накопленных программ, да и то современные представители семейства X86 (Pentium Pro, Pentium II, K5, K6) используют внутри себя все ту же архитектуру RISC. А потому RISC можно назвать новым, или, за давностью лет, очередным этапом развития процессоров.

А дело было так. В 80-е годы на пути роста производительности микропроцессоров стало сложное устройство центрального управления, связанное с доставшимся в наследство от традиционных ЭВМ большим набором команд. Теоретические исследования показали, что сведение набора команд до минимума наболее часто используемых позволит за счет незначительного увеличения объема программы добиться значительного упрощения процессора.

Тогда были сформулированы основные принципы RISC:

  1. Каждая команда независимо от ее типа выполняется за один такт.
  2. Все команды должны иметь одинаковую длину и использовать минимум адресных форматов.
  3. Вся обработка данных осуществляется в регистрах процессора, обращение к памяти происходит только при выполнении операций записи и чтения.
  4. Система команд должна обеспечивать поддержку языков высокого уровня.

Освободившаяся в результате площадь кристалла была пущена на увеличение разрядности и производительности процессоров. Например, выпущенный в 1985 году 32-разрядный процессор ARM (Advanced RISC Machine) при значительно большем быстродействии по степени интеграции был сопоставим с 8-разрядным Intel 8080 (25 тыс. транзисторов). И теперь 64 разряда для RISC-процессоров норма, а для X86 - далекое будущее.

То же сэкономленное место на кристалле было пущено на всевозможные ухищрения, позволяющие увеличить скорость обработки данных. За полвека существования компьютеров было разработано множество таких наворотов, которые разместить в CISC-процессоре было просто негде.

Преимущество RISC не только в экономии места. Активное использование регистров уменьшает число обращений к памяти до минимума. Загрузка регистров, то есть обмен между регистрами и памятью, осуществляется двумя различными способами - аппаратным и программным.

Аппаратный, применяющийся в процессорах SPARC, подразумевает реализацию 138 регистров, десять из которых видны всегда, а оставшиеся 128 разбиваются на восемь перекрывающихся окон, которые сменяют друг друга при вызове подпрограмм. Такая схема называется MORS (Multiple Overlapping Register Sets) или Rolodex.

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

Поэтому в большинстве RISC-процессоров применяется программное управление обращениями к памяти. Число регистров невелико (обычно 32), вызов процедур использует обычный стековый механизм. Предполагается, что обращения к памяти все равно поглощаются кэшем. Задача рационального использования регистров возлагается на компилятор.

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

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

Дмитрий БОРОДАЕНКО,
[email protected]

Кому нужны 64-битные вычисления

Не успели мы освоиться с Windows 95 и 32-разрядными вычислениями, как оказалось, что и этого недостаточно. Гонка за числом разрядов продолжается, и дело тут не только и не столько в доступном адресном пространстве. Просто еще во времена больших машин было доказано, что для целочисленных вычислений оптимально 32-битовое представление, а для чисел с плавающей запятой необходимо и достаточно 64 бита.

Поэтому 32-разрядный процессор с действительными числами полной точности может управиться только в два захода, что для RISC-архитектуры с ее требованием минимизации форматов по крайней мере неудобно. Увеличение разрядности обрабатываемых данных вдвое требует увеличения либо разрядности процессора вдвое, либо тактовой частоты - вчетверо. Отчасти поэтому 32-разрядный PowerPC так отстает в вычислениях с плавающей запятой от полноценных 64-разрядных собратьев.

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

Замысел RISC- процессора (Reduced Instruction Set Computer, компьютер с сокращенным набором команд) родился в результате практических исследований частоты использования команд программистами, проведенных в 70-х годах в США и Англии. Их непосредственный итог - известное "правило 80/20": в 80% кода типичной прикладной программы используется лишь 20% простейших машинных команд из всего доступного набора. электронный устройство микроконтроллер процессор

Первый "настоящий" RISC-процессор с 31 командой был создан под руководством Дэвида Паттерсона из Университета Беркли, затем последовал процессор с набором из 39 команд. Они включали в себя 20-50 тыс. транзисторов. Плодами трудов Паттерсона воспользовалась компания Sun Microsystems, разработавшая архитектуру SPARC с 75 командами в конце 70-х годов. В 1981 г. в Станфордском университете стартовал проект MIPS по выпуску RISC-процессора с 39 командами. В итоге была основана корпорация Mips Computer в середине 80-х годов и сконструирован следующий процессор уже с 74 командами.

По данным независимой компании IDC, в 1992 году архитектура SPARC занимала 56% рынка, далее следовали MIPS - 15% и PA-RISC - 12,2%

Примерно в то же время Intel разработала серию 80386, последних "истинных" CISC-процессоров в семействе IA-32. В последний раз повышение производительности было достигнуто только за счет усложнения архитектуры процессора: из 16-разрядной она превратилась в 32-разрядную, дополнительные аппаратные компоненты поддерживали виртуальную память, и добавился целый ряд новых команд.

Основные особенности RISC-процессоров:

  • - Сокращенный набор команд (от 80 до 150 команд).
  • - Большинство команд выполняется за 1 такт.
  • - Большое количество регистров общего назначения.
  • - Наличие жестких многоступенчатых конвейеров.
  • - Все команды имеют простой формат, и используются немногие способы адресации.
  • - Наличие вместительной раздельной кэш-памяти.
  • - Применение оптимизирующих компиляторов, которые анализируют исходный код и частично меняют порядок следования команд.

RISC-процессоры 3-го поколения

Самыми крупными разработчиками RISC-процессоров считаются Sun Microsystems (архитектура SPARC - Ultra SPARC), IBM (многокристальные процессоры Power, однокристальные PowerPC - PowerPC 620), Digital Equipment (Alpha - Alpha 21164), Mips Technologies (семейство Rxx00 -- R 10000), а также Hewlett-Packard (архитектура PA-RISC - PA-8000).

Все RISC-процессоры третьего поколения:

  • - являются 64-х разрядными и суперскалярными (запускаются не менее 4-х команд за такт);
  • - имеют встроенные конвейерные блоки арифметики с плавающей точкой;
  • - имеют многоуровневую кэш-память. Большинство RISC-процессоров кэшируют предварительно дешифрованные команды;
  • - изготавливаются по КМОП-технологии с 4 слоями металлизации.

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

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

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

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

  • - Большое число регистров общего назначения.
  • - Универсальный формат всех микроопераций.
  • - Равное время выполнения всех машинных команд.
  • - Практически все операции пересылки данных осуществляются по маршруту регистр - регистр.

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

Аппаратные блоки в RISC-архитектуре:

Блок загрузки инструкций включает в себя следующие составные части: блок выборки инструкций из памяти инструкций, регистр инструкций, куда помещается инструкция после ее выборки и блок декодирования инструкций. Эта ступень называется ступенью выборки инструкций.

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

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

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

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

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

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

В современном RISC-процессоре используется не менее 32 регистров, часто более 100, в то время, как в классических ЦВМ обычно 8-16 регистров общего назначения. В результате процессор на 20%-30% реже обращается к оперативной памяти, что также повысило скорость обработки данных. Кроме того, наличие большого количества регистров упрощает работу компилятора по распределению регистров под переменные. Упростилась топология процессора, выполняемого в виде одной интегральной схемы, сократились сроки ее разработки, она стала дешевле.

После появления RISC-процессоров традиционные процессоры получили обозначение CISC - то есть с полным набором команд (Complete Instruction Set Computer).

В настоящее время RISC-процессоры получили широкое распространение. Современные RISC-процессоры характеризуются следующим:

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

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

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

Выполнение типичной команды можно разделить на следующие этапы:

  • - выборка команды IF - по адресу, заданному счетчиком команд, из памяти извлекается команда;
  • - 2) декодирование команды ID - выяснение ее смысла, выборка операндов из регистров;
  • - 3) выполнение операции EX, при необходимости обращения к памяти - вычисление физического адреса;
  • - 4) обращение к памяти ME;
  • - 5)запоминание результата WB

В процессорах с RISC-архитектурой набор исполняемых команд сокращен до минимума. Для реализации более сложных операций приходится комбинировать команды. При этом все команды имеют формат фиксированной длины (например, 12, 14 или 16 бит), выборка команды из памяти и ее исполнение осуществляется за один цикл (такт) синхронизации. Система команд RISC-процессора предполагает возможность равноправного использования всех регистров процессора. Это обеспечивает дополнительную гибкость при выполнении ряда операций. К МК с RISC-процессором относятся МК AVR фирмы Atmel, МК PIC16 и PIC17 фирмы Microchip и другие.

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

Рис.2

Гарвардская архитектура почти не использовалась до конца 70-х годов, пока производители МК не поняли, что она дает определенные преимущества разработчикам автономных систем управления.

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

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

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

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

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

В ЭВМ с RISC машинным циклом называют время, в течение которого производится выборка двух операндов из регистров, выполнение операции в АЛУ и запоминание результата в регист­ре. Большинство команд в RISC являются быстрыми командами типа «регистр - регистр» и выполняются без обращений к ОП. Обращения к ОП сохраняются лишь в командах загрузки регистров из памяти и запоминания в ОП. Чтобы это было возможным, про­цессор должен содержать достаточно большое число общих регистров.

Благодаря характерным для RISC-архитектуры особенно­стям - сокращенному набору команд (обычно не более 50-100), небольшому числу (обычно 2-3) простых способов адре­сации (в основном регистровой), небольшому числу простых форматов команд с фиксированными размерами и функциональ­ным назначением их полей - упрощается управляющее устрой­ство процессора, который в этом случае обходится без микро­программного уровня управления и управляющей памяти, и его УУ может быть выполнено на «схемной логике».

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

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

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

Процедурам динамически выделяются небольшие группы регистров фиксированной длины (регистровые окна). Окна по­следовательно выполняемых процедур перекрываются, благода­ря чему возможна передача параметров от одной процедуры к другой При вызове процедуры процессор переключается на работу с другим регистровым окном, при этом не возникает необходимости в передаче содержимого регистров в память.



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

В настоящее время за рубежом выпущен ряд микропроцессоров с RISC-архитектурой. Примером являются высокопроизводительные станции на базе микропроцессора Alpha 21264, микропроцессор для WindowsCE Intel StrongARM.

Несмотря на начавшееся использование RISC-архитектуры в выпускаемой промышленностью ЭВМ, продолжаются дискус­сии вокруг достоинств и недостатков этой архитектуры. К по­следним, в частности, относят большую длину кода программы после компиляции по сравнению с длиной кода машин обычной архитектуры. Например, при эмуляции команд x86 в среднем на каждую его команду требу­ется пять-шесть команд машины с RISC-архитектурой. Однако, как показали исследования, выигрыш в скорости выполнения команд перекрывает проигрыш от удлинения объектного кода программы.

В 1989 фирме Intel удалось на основе RISC-архитектуры создать однокри­стальный микропроцессор 80860, который практически представ­ляет собой кремниевый эквивалент суперЭВМ Gray-1.

Классификация архитектур микропроцессоров

Развитие архитектуры ЭВМ, направленное на повышение их производительности, во многих случаях идет по пути усложне­ния процессоров путем расширения системы (набора) команд, введения сложных команд, выполняющих процедуры, приближа­ющиеся к примитивам языков высокого уровня, увеличения числа используемых способов адресации и т. д.

Однако расширение и усложнение набора команд порожда­ют и ряд нежелательных побочных эффектов.

Расширение набора команд, увеличение числа способов ад­ресации, введение сложных команд сопровождаются увеличени­ем длины кода команды, в первую очередь, кода операции, что может приводить к использованию «расширяющегося кода опе­рации», увеличению числа форматов команд. Это вызывает ус­ложнение и замедление процесса дешифрации кода операции и других процедур обработки команд. Возрастающая сложность процедур обработки команд заставляет прибегать к микропрог­раммным управляющим устройствам с управляющей памятью вместо более быстродействующих УУ с «жесткой» («схемной») логикой.

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

Анализ кода программ, генерируемого компиляторами языков высокого уровня, показал, что практически используется только ограниченный набор простых команд форматов "регистр, регистр -> регистр" и "регистр <-> па­мять". Компиляторы не в состоянии эффективно использовать сложные ко­манды. Именно это наблюдение способствовало формированию концепции процес­соров с сокращенным набором команд, так называемых RISC-процессоров.

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

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

Эти проблемы решаются либо компилятором, устанавливающим оче­редность запуска команд в конвейере и вставляющим команды "Нет опе­рации" при невозможности запуска очередной команды, либо специаль­ной аппаратурой процессора, отслеживающей зависимости между коман­дами и устраняющей конфликты.

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

Очевидно, что RISC-процессоры эффективны в тех областях примене­ния, в которых можно продуктивно использовать структурные способы уменьшения времени доступа к оперативной памяти. Если программа ге­нерирует произвольные последовательности адресов обращения к памяти и каждая единица данных используется только для выполнения одной ко­манды, то фактически производительность процессора определяется вре­менем обращения к основной памяти. В этом случае использование сокра­щенного набора команд только ухудшает эффективность, так как требует пересылки операндов между памятью и регистром вместо выполнения команд "память, память - память". Программист должен учитывать необ­ходимость локального размещения обрабатываемых данных, чтобы при пересылках между уровнями памяти по возможности все данные пересы­лаемых блоков данных принимали участие в обработке. Если программа будет написана так, что данные будут размещены хаотично и из каждого пересылаемого блока данных будет использоваться только небольшая их часть, то скорость обработки замедлится в несколько раз до скорости ра­боты основной памяти. В качестве примера приведем в таблице 1.1 ре­зультаты замеров производительности микропроцессора Alpha 21066 233 Мгц при реализации преобразования Адамара при n = 8 - 20.

Таблица 1.1 Производительность микропроцессора Alpha 2I066 при выполнении преобразования Адамара

Пример показывает, что, пока данные размещаются во внутрикристальной кэш-памяти, производительность высока. Как только объем данных превышает размер кэш-памяти и обращения в память идут в "равномер­но" распределенные по объему адреса, производительность падает более, чем в 7 раз.

Развитие микропроцессоров происходит при постоянном стремлении со­хранения преемственности программного обеспечения (ПО) и повышения производительности за счет совершенствования архитектуры и увеличения тактовой частоты. Сохранение преемственности ПО и повышение произво­дительности, вообще говоря, противоречат друг другу. Процессоры с сис­темой команд х86, относящиеся к классу CISC-процессоров, имеют более низкие тактовые частоты по сравнению с микропроцессорами ведущих ком­паний-изготовителей RISC-процессоров. Существуют приложения, на ко­торых производительность х86 микропроцессоров значительно ниже, чем у RISC-процессоров, реализованных на той же элементной базе. Однако воз­можность использования совместимого ПО для различных поколений х86 процессоров, выпущенных в течение последнего десятилетия, обеспечивает им устойчивое доминирующее положение на рынке.

В настоящее время на основе пионерских разработок компаний NexGen и AMD, подхваченных компанией Intel, предпринята попытка решить пробле­му повышения производительности в рамках архитектуры х86. Эти компа­нии в последних разработках, сохраняя преемственность по системе команд с CISC-микропроцессорами семейства х86, создают новые устройства с исполь­зованием элементов RISC-архитектуры. Примером такого подхода могут слу­жить микропроцессоры Nx586 (NexGen), K5, К6 (AMD), Pentium PRO, Pentium II (Intel), использующие концепцию разделенной (decoupled) архи­тектуры и RISC ядра. В микропроцессор встраивается аппаратный трансля­тор, превращающий команды х86, в команды RISC-процессора. При этом одна команда х86 может порождать до четырех команд RISC-процессора. Исполнение команд происходит как в развитом суперскалярном процессоре. Компания Intel использовала этот подход в своем микропроцессоре Pentium Pro, что весьма укрепило ее позиции на фоне достижений RISC-архитектур.

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

  • Перевод

Примечание переводчика. В оригинале статьи авторы (один из них - пионер RISC-процессоров Д. Паттерсон) аргументируют необходимость развития открытых ISA (instruction set architecture, наборов команд процессоров) и продуктов на их основе. В качестве аргументов выдвигается стимулирование развития тех областей вычислительной техники и экономических ниш, в которых коммерческие компании не заинтересованы или же недостаточно гибки. Они напоминают об успехах открытых стандартов и свободного программного обеспечения.

На расширенную версию этой статьи (а также на контр-статью от представителей ARM и контр-контр-параграф от авторов!) я наткнулся в августовском выпуске Microprocessor Report (MPR). Доступ к MPR ограничен и распространяется только на подписчиков, однако в открытом доступе есть оригинальный отчёт, размещённый на сайте университета Беркли. Его перевод я и предлагаю далее.

Instruction Sets Should Be Free: The Case For RISC-V by Krste Asanović and David A. Patterson. EECS Department, University of California, Berkeley - Technical Report No. UCB/EECS-2014-146 www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-146.html

Copyright notice and disclaimers

Copyright 2014, by the author(s).
All rights reserved.
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission.



Заказные системы на чипе (SoC), в которых процессоры и их кэши занимают лишь малую часть кристалла, становятся вездесущими; сегодня уже сложно найти электронное устройство, в котором не используется процессор в составе SoC. Таким образом, всё больше компаний проектируют чипы, в которые входят процессоры, чем это было раньше. Учитывая, какую революцию произвели открытые стандарты и открытое программное обеспечение - например, сетевой протокол TCP/IP и операционная система Linux - почему один из самых важных интерфейсов остаётся проприетарным?

Аргументы в поддержку свободных, открытых ISA

Безусловно, некоторые наборы команд процессоров (ISA, англ. instruction set architecture) могут быть проприетарными по историческим и коммерческим причинам. Однако, не существует ни одного твёрдого технического основания для объяснения отсутствия свободных, открытых вариантов.
  1. Это не ошибка или упущение. Компании, владеющие успешными ISA, такие как ARM, IBM и Intel, владеют патентами на причуды своих систем команд, что препятствует остальным использовать их без лицензий 1 . Переговоры об использовании длятся по 6-24 месяца и могут стоить от 1 до 10 миллионов долларов, что исключает из процесса академические организации и всех, кому требуются лишь небольшие объёмы производства 2 . Лицензия от ARM даже не позволяет вам спроектировать собственное ядро; вы лишь получаете право на использование их дизайна (лишь около 15 больших компаний имеют право на создание новых ядер ARM). Даже «OpenPOWER» - это оксюморон; вы обязаны платить IBM, чтобы использовать эту ISA. Разумная с т.з. бизнеса, подобная практика лицензирования душит конкуренцию и инновации, запрещая многим проектировать и делиться собственными ISA-совместимыми ядрами.
  2. Это не из-за того, что сами владельцы ISA производят подавляющую долю программного обеспечения для своих систем. Несмотря на размеры программных экосистем, которые выросли вокруг популярных ISA, львиная доля ПО для них пишется внешними людьми.
  3. Эти компании не владеют сакральным знанием, требуемым для создания адекватной ISA. Это большая работа, но многие сегодня могут спроектировать набор инструкций.
  4. Самые популярные ISA - не самые изящные. Как 80x86, так и ARM не считаются эталонами хорошего дизайна.
  5. Для верификации совместимости с ISA не требуется контроль компаний. Открытые организации разработали механизмы для сертификации совместимости аппаратных средств много лет назад. Примеры: стандарт IEEE 754 для чисел с плавающей запятой, Ethernet, PCIe. Если бы это было не так, открытые IT-стандарты не были бы столь популярны.
  6. Наконец, нет гарантий, что проприетарные ISA будут существовать долго. Если компания разоряется и исчезает, она забирает свою ISA с собой. Кончина DEC закончила развитие наборов инструкций Alpha и VAX.

Отметим, что ISA на самом деле - спецификация интерфейса, но не его реализация. Существует три подхода к реализации некоторого интерфейса:

1. Частная закрытая, аналогично Apple iOS.
2. Лицензируемая открытая, наподобие Wind River VxWorks.
3. Свободная и открытая, пользователи которой могут изменять и делиться, как это сделано в Linux.

Проприетарные ISA на практике позволяют работать с первыми двумя подходами, но вам нужна свободная, открытая ISA для поддержки всех трёх подходов.

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

Это может привести к:

1. Инновациям через конкуренцию на свободном рынке многих дизайнеров, включая открытые и закрытые реализации ISA.
2. Общим открытым дизайнам ядер, что будет выражаться в сокращении времени выхода продукции на рынок, уменьшении стоимости от переиспользования, меньшем числе ошибок из-за пристального внимания многих людей 3 , и в прозрачности, которая, например, затруднит внедрение секретных бэкдоров правительственными агенствами.
3. Процессорам, доступным для большего числа устройств, что поможет развивать Интернет Вещей (IoT, англ. Internet of Things), со стоимостью порядка доллара.

Аргументы в поддержку RISC как стиля для свободной, открытой ISA

Для того, чтобы какая-либо ISA была принята сообществом open-source, мы считаем, что она должна иметь успешную историю коммерческого применения. Первый вопрос - какой стиль ISA демонстирует такую историю? За последние 30 лет история не знает ни одной успешной стековой архитектуры (Примечание переводчика: странное заявление, учитывая успех Java bytecode и.NET CLI - стековых архитектур ). Кроме как в сегменте приложений DSP (англ. digital signal processing), VLIW также постигла неудача: Multiflow всплыл брюхом вверх, а Itanium, несмотря на миллиардные инвестиции HP и Intel, не получил признания. Уже десятки лет ни одна новая CISC ISA не обретает успеха. Выжившие же CISC архитектуры транслируют свои сложные инструкции в более простые ISA, что очень оправдано для исполнения ценной унаследованной кодовой базы. Новая же ISA по определению не будет иметь такой базы, так что дополнительные расходы на аппаратуру и энергопотребление, требуемые для трансляции, сложно оправдать: почему бы сразу не использовать более простую ISA? RISC -подобные load-store наборы команд известны как минимум уже 50 лет, с эпохи CDC 6600 Сэймюра Крея. Тогда как 80x86 выиграл войны за ПК, RISC доминирует в планшетах и телефонах пост-ПК эры. В 2013 г. было продано более 10 миллиардов ARM, в сравнении с 0.3 миллиардами x86. Повторяя то, что мы уже говорили в 1980 4 , мы считаем, что RISC - лучший выбор для свободной и открытой ISA.

Более того, новая RISC ISA может быть лучше своих предшественников, если при её разработке учесть их ошибки:

  1. Исключение слишком многого: отсутствие команд load/store для байт и полуслов в первом варианте Alpha ISA и отсутствие load/store для чисел с плавающей запятой в MIPS I.
  2. Включение излишнего: встроенный сдвиг в инструкциях ARM и регистровые окна SPARC.
  3. Влияние микроархитектурных деталей на ISA: отложенные переходы в MIPS и SPARC, барьеры-ловушки для чисел с плавающей запятой на Alpha.

Для удовлетворения потребностей рынка встраиваемых решений, RISC-и даже предоставили решение проблемы размера кода: ARM Thumb и MIPS16 добавили 16-битные форматы для того, чтобы код был даже короче, чем у 80x86. Таким образом, существует общепризнанное соглашение о том, как в целом должна выглядеть хорошая RISC ISA.

Аргументы за использование существующей свободной открытой RISC ISA

Уже существует три свободных и открытых RISC ISA 5:
  • SPARC V8 - к чести Sun Microsystems, она сделала SPARC V8 стандартом IEEE в 1994.
  • OpenRISC - GNU-лицензированный open-source проект, начатый в 2000, с 64-битной ISA законченной в 2011.
  • RISC-V - в 2010, частично из-за ограничений ARM на свой IP и из-за отсутствия 64-битных режимов, а также из-за общей гротескности ARM v7, мы и наши студенты Andrew Waterman и Yunsup Lee разработали RISC-V 6 (произносится как «RISC-5») для нужд наших исследований и преподавательской деятельности и выпустили её под BSD-лицензией.

Так как обычно на то, чтобы отшлифовать все тонкости, уходят годы - вызревание OpenRISC заняло 11 лет, а у RISC-V ушло 4 года, - более правильно будет начать с уже существующей ISA, а не формировать комитет и начинать с нуля. Все RISC похожи, так что любая из них может быть хорошим кандидатом.

Так как ISA могут существовать десятилетиями, необходимо сперва экстраполировать и описать будущий ландшафт информационных технологий, чтобы понять, какие особенности могут оказаться важными, для облегчения процесса приоритезации. Скорее всего, преобладать будут три платформы: IoT - миллиарды дешёвых устройств с IP-адресами и доступом в Интернет; 2) персональные мобильные устройства, такие как современные телефоны и планшеты; 3) дата-центры (Warehouse-Scale Computers, WSCs). Можно иметь разные ISA для каждого типа платформ, однако жизнь будет проще, если она всюду будет одна. Такая картина будущего предлагает четыре ключевых требования на неё.

1. Формат «базовая ISA плюс расширения» 7 . Для повышения эффективности и уменьшения затрат SoC-системы добавляют собственные специфичные для приложения акселераторы. Для этого, а также чтобы поддерживать стабильную кодовую базу, свободная открытая ISA должна иметь: а) небольшое ядро инструкций, которые известны компиляторам и ОС, б) стандартные, но опциональные расширения для частых частных сценариев адаптации SoC к конкретному приложению, в) пространство для полностью новых кодов инструкций для работы акселераторов.

2. Компактная кодировка команд. Меньший объём кода желателен из-за чувствительности цены IoT-приложений к объёму используемой памяти.

3. Четверная точность (QP, quadruple-precision) вычислений над числами с плавающей запятой в дополнение к двойной и одинарной точностям. Некоторые приложения, исполняющиеся в дата-центрах сегодня, обрабатывают настолько большие объёмы данных, что они уже сейчас используют программные библиотеки для QP.

4. 128-битная адресация в дополнение к 32- и 64-битной. Ограничения по памяти IoT-устройств означают, что 32-битная адресация ещё долгое время будет актуальной. 64-битные адреса - де-факто стандарт для всех больших систем. Хотя промышленность WSC не потребует всех 2 128 байт, вполне правдоподобно, что через десятилетие понадобятся числа, превышающие 2 64 (16 эксабайт), для адресации хранилищ SSD. Ограниченный размер пространства адресов - одна из тех ошибок ISA, которые сложно исправить 8 , разумно планировать большие адреса уже сейчас.

Следующая таблица суммирует информацию о трёх свободных открытых ISA по этим четырём критериям, а также по наличию поддержки компиляторами и портированными ОС.

Аргументы в поддержку RISC-V как свободной открытой ISA

Наше сообщество должно объединиться вокруг единой ISA, чтобы проверить, что свободная открытая ISA может работать на практике. Только RISC-V удовлетворяет всем четырём требованиям. Она также от 10 до 20 лет моложе остальных RISC, так что мы имели возможность проанализировать и исправить их ошибки, такие как слоты задержки переходов SPARC и OpenRISC. Поэтому система команд RISC-V простая и понятная (см. таблицы 4 и 5 оригинальной статьи, а также www.riscv.org). В дополнение к тому, что остальные ISA не выполняют многие требования, есть вопросы к тому, что 64-битный SPARC V9 - проприетарный, а OpenRISC потерял импульс.
RISC-V всё ещё имеет большой импульс. Таблица 1 перечисляет различные группы, проектирующие SoC на основе RISC-V. Отчасти из-за использования высокопродуктивной, открытой системы проектирования аппаратуры Chisel 9 , университет Беркли имеет уже 8 типов чипов и новые разработки в процессе. Таблица 2 показывает, что одно 64-битное ядро RISC-V занимает половину площади, потребляет половину от мощности и при этом работает быстрее, чем 32-битный ARM с похожим конвеером или тем же техпроцессом. Хотя сложно полностью устранить нашу предвзятость в этом вопросе, мы полагаем, что RISC-V - лучший и безопасный выбор для свободной открытой RISC ISA. Поэтому мы будем проводить серию семинаров 10 для расширения сообщества RISC-V и, вдохновлённые примерами из таблицы 3, планируем создать некоммерческий фонд для задачи сертификации реализаций, а также для поддержки и развития ISA.

Заключение

Наши доводы даже более ясны для открытой ISA, чем для открытой ОС, так как ISA меняются очень медленно, тогда как алгоритмические инновации и новые приложения требуют непрерывной эволюции ОС. Также, как и TCP/IP, это - стандарт на интерфейс, который легче поддерживать и развивать по сравнению с ОС.

Открытые ISA использовались и раньше, но они никогда не становились популярными из-за недостатка спроса в них. Низкая цена и энергопотребление IoT, желание иметь альтернативу 80x86 для дата-центров и тот факт, что процессорные ядра - лишь малая, но вездесущая часть всех SoC, комбинируются в то предложение, способное удовлетворить возникший спрос. RISC-V нацелен в первую очередь на SoC, с базовым набором никогда не меняющихся команд, учитывая долгую жизнь идей RISC, с медленно эволюционирующим подмножеством опциональных расширений, а также уникальными инструкциями, которые никогда не будут переиспользованы. Хотя первый плацдарм для RISC-V может быть IoT или WSC, наша цель шире: так же, как Linux стал стандартной ОС для большинства вычислительных устройств, мы представляем себе RISC-V как стандартную ISA для всех вычислительных устройств будущего.