RISC (англ. Reduced
Instruction Set Computer; неправильно — Reduced
Instruction Set Computing) — компьютер с сокращённым набором команд.
Это концепция проектирования процессоров (ЦПУ), которая во главу ставит
следующий принцип: более компактные и простые инструкции выполняются
быстрее. Простая архитектура позволяет удешевить процессор, поднять тактовую частоту, а также распараллелить
исполнение команд между несколькими блоками исполнения (т. н.
суперскалярные архитектуры процессоров). Многие ранние RISC-процессоры
даже не имели команд умножения и деления. Идея создания RISC процессоров
пришла после того, как в 1970-х годах ученые из IBM обнаружили,
что многие из функциональных особенностей традиционных ЦПУ
игнорировались программистами. Отчасти это был побочный эффект
сложности компиляторов. В то время компиляторы могли
использовать лишь часть из набора команд процессора. Следующее открытие
заключалось в том, что, поскольку некоторые сложные операции
использовались редко, они, как правило, были медленнее, чем те же
действия, выполняемые набором простых команд. Это происходило из-за
того, что создатели процессоров тратили гораздо меньше времени на
улучшение сложных команд, чем на улучшение простых.
Первые RISC-процессоры были разработаны в начале 1980-х годов в
Стэнфордском и Калифорнийском университетах США. Они выполняли небольшой (50−100) набор
команд, тогда как обычные CISC (Complex Instruction Set Computer) выполняли
100—200. Характерные
особенности RISC-процессоров
- Фиксированная длина машинных инструкций (например, 32 бита) и
простой формат команды.
- Специализированные команды для операций с памятью — чтения или
записи. Операции вида «прочитать-изменить-записать» отсутствуют. Любые
операции «изменить» выполняются только над содержимым регистров (т. н.
load-and-store архитектура).
- Большое количество регистров общего назначения (32 и более).
- Отсутствие поддержки операций вида «изменить» над укороченными
типами данных — байт, 16-битное слово. Так, например, система команд DEC
Alpha содержала только операции над 64-битными словами, и требовала
разработки и последующего вызова процедур для выполнения операций над
байтами, 16- и 32-битными словами.
- Отсутствие микропрограмм внутри самого процессора. То, что в CISC
процессоре исполняется микропрограммами, в RISC процессоре исполняется
как обыкновенный (хотя и помещенный в специальное хранилище) машинный
код, не отличающийся принципиально от кода ядра ОС и приложений. Так,
например, обработка отказов страниц в DEC Alpha и интерпретация таблиц
страниц содержалась в так называемом PALCode (Privileged Architecture
Library), помещенном в ПЗУ. Заменой PALCode можно было превратить
процессор Alpha из 64-битного в 32-битный, а также изменить порядок байт
в слове и формат входов таблиц страниц виртуальной памяти.
Архитектуры,
обычно обсуждаемые в связи с RISC
- Суперскалярные архитектуры (первоначально
Sun SPARC, начиная с Pentium использованы в семействе x86).
Распараллеливание исполнения команд между несколькими устройствами
исполнения, причем решение о параллельном исполнении двух или более
команд принимается аппаратурой процессора на этапе исполнения.
Эффективное использование такой архитектуры требует специальной
оптимизации машинного кода в компиляторе для генерации пар независимых
(результат одной не является входом другой) команд.
- Архитектуры VLIW
(Very Long Instruction Word — Очень Длинное Слово Команды). Отличаются
от суперскалярной архитектуры тем, что решение о распараллеливании
принимается не аппаратурой на этапе исполнения, а компилятором на этапе
генерации кода. Команды очень длинны, и содержат явные инструкции по
распараллеливанию нескольких субкоманд на несколько устройств
исполнения. Элементы архитектуры содержались в серии PA-RISC.
VLIW-процессором в его классическом виде является Itanium,
долгое время бывший самым мощным процессором в мире. Разработка
эффективного компилятора для VLIW является сложнейшей задачей, решить
которую не получалось долгое время. Преимущество VLIW перед
суперскалярной архитектурой — компилятор является более сложной и
«умной», чем устройства управления процессора, системой, способной
хранить больше контекстной информации и принимать более верные решения
об оптимизации.
|