Введение

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

В электронике и компьютерной науке, компьютер с уменьшенным набором команд (RISC) – это архитектура компьютера, разработанная для упрощения отдельных инструкций, передаваемых компьютеру для выполнения задач. По сравнению с инструкциями, используемыми в компьютере со сложным набором команд (CISC), компьютеру RISC может потребоваться больше инструкций (больший объем кода) для выполнения той же задачи, поскольку отдельные инструкции написаны в более простом виде. Цель состоит в том, чтобы компенсировать необходимость обработки большего количества инструкций за счет увеличения скорости выполнения каждой инструкции, в частности, путем реализации конвейера инструкций, который может быть проще реализовать при использовании более простых инструкций. Ключевая концепция RISC-компьютера заключается в том, что каждая инструкция выполняет только одну функцию (например, копирование значения из памяти в регистр). RISC-компьютер обычно имеет множество (16 или 32) высокоскоростных регистров общего назначения с архитектурой «загрузить-сохранить», в которой код для регистровых инструкций (для выполнения арифметических и логических операций) отделен от инструкций, обеспечивающих доступ к основной памяти компьютера. Конструкция процессора позволяет RISC-компьютерам использовать небольшое количество простых режимов адресации и иметь предсказуемое время выполнения инструкций, что упрощает проектирование системы в целом. Концептуальная разработка архитектуры RISC-компьютеров началась с проекта IBM 801 в конце 1970-х годов, но результаты не были немедленно внедрены. Дизайнеры в Калифорнии переняли концепции 801 в двух основополагающих проектах: Stanford MIPS и Berkeley RISC. В 1980-х годах они были коммерциализированы как системы MIPS и SPARC. IBM в конечном итоге разработала RISC-проекты на основе дальнейшей работы над концепцией 801, включая архитектуры IBM POWER, PowerPC и Power ISA. По мере развития проектов, многие аналогичные разработки, созданные в конце 1980-х и начале 1990-х годов, привели к созданию центральных процессоров, повысивших коммерческую эффективность Unix-рабочих станций и встраиваемых процессоров в лазерных принтерах, маршрутизаторах и подобных устройствах. На рынке мини-компьютеров компании, такие как Celerity Computing, Pyramid Technology и Ridge Computers, начали предлагать системы, разработанные в соответствии с принципами RISC или близкими к ним, в начале 1980-х годов.

История и развитие

Ряд систем, начиная с 1960-х годов, считаются первыми RISC-архитектурами, что частично обусловлено использованием ими подхода load–store. Термин RISC был введен Дэвидом Паттерсоном из проекта Berkeley RISC, хотя схожие концепции появлялись и ранее. CDC 6600, разработанный Сеймуром Крэем в 1964 году, использовал архитектуру load–store с всего двумя режимами адресации (регистр+регистр и регистр+непосредственное значение) и 74 операционными кодами, при этом базовая тактовая частота была в 10 раз выше, чем время доступа к памяти. Джек Донгарра отмечает, что, отчасти благодаря оптимизированной архитектуре load–store CDC 6600, её можно рассматривать как предшественницу современных RISC-систем, хотя для разработки современных RISC-систем необходимо было преодолеть ряд других технических препятствий.

IBM 801

Майкл Флинн считает, что первой RISC-системой стал дизайн IBM 801, в сравнении с их самым быстрым мейнфреймом того времени, 370/168, который работал на скорости 3,5 МИПС. Проект был основан на изучении обширной коллекции статистики, собранной IBM у своих клиентов. Это показало, что код в высокопроизводительных средах активно использовал регистры процессора, и их часто оказывалось недостаточно. Это навело на мысль, что увеличение количества регистров повысит производительность. Кроме того, было замечено, что компиляторы обычно игнорировали подавляющее большинство доступных инструкций, особенно ортогональные режимы адресации. Вместо этого они выбирали самую быструю версию каждой инструкции и затем создавали небольшие подпрограммы, используя её. Это позволило предположить, что большинство инструкций можно исключить без влияния на конечный код. Эти два вывода дополняли друг друга: удаление инструкций позволило бы сократить коды операций, освободив биты в слове инструкции, которые затем можно было бы использовать для выбора из большего набора регистров. Этот процессор был разработан для "мини"-задач и нашёл применение в периферийных интерфейсах и контроллерах каналов в более поздних компьютерах IBM. Он также использовался в качестве процессора в IBM RT PC в 1986 году, который оказался коммерчески неудачным.

RISC и MIPS

К концу 1970-х годов 801 стал хорошо известен в отрасли. Это совпало с новыми технологиями производства, которые позволили выводить на рынок более сложные чипы. В Zilog Z80 1976 года было 8000 транзисторов, в то время как в Motorola 68000 (68k) 1979 года – 68000. Эти новые разработки обычно использовали возросшую сложность для расширения набора инструкций и повышения его ортогональности. Большинство, как и 68k, использовали микрокод для этого, считывая инструкции и перереализуя их как последовательность более простых внутренних инструкций. В 68k целая треть транзисторов была задействована для микрокодирования. В 1979 году Дэвида Паттерсона отправили в академический отпуск из Калифорнийского университета в Беркли, чтобы помочь команде DEC на западном побережье улучшить микрокод VAX. Паттерсон был поражен сложностью процесса кодирования и пришел к выводу, что он невыполним. Сначала он написал статью о способах улучшения микрокодирования, но позже изменил свое мнение и решил, что сама концепция микрокода является проблемой. Получив финансирование от программы DARPA VLSI, Паттерсон начал проект Berkeley RISC. Эта программа, практически неизвестная сегодня, привела к огромному количеству достижений в области проектирования чипов, производства и даже компьютерной графики. Анализируя различные программы из их варианта BSD Unix, команда Беркли обнаружила, как и IBM, что большинство программ не использовали широкое разнообразие инструкций в 68k. В оригинальной статье RISC I они отметили:

Работа в Беркли также выявила ряд дополнительных моментов. Среди них – тот факт, что программы тратили значительное время на выполнение вызовов и возвратов из подпрограмм, и существовал потенциал для повышения общей производительности за счет ускорения этих вызовов. Это привело к тому, что в проекте Беркли был выбран метод, известный как регистровые окна, который может значительно повысить производительность подпрограмм, хотя и за счет некоторой сложности. В традиционном процессоре имеется небольшое количество регистров, и программа может использовать любой регистр в любой момент времени. В процессоре с регистровыми окнами имеется огромное количество регистров, например, 128, но программы могут использовать лишь небольшое их количество, например, восемь, одновременно. Программа, ограничивающая себя восемью регистрами на процедуру, может выполнять вызовы процедур очень быстро: вызов просто сдвигает окно "вниз" на восемь позиций, к набору из восьми регистров, используемых этой процедурой, а возврат сдвигает окно обратно. Проект Berkeley RISC представил процессор RISC I в 1982 году. Состоящий всего из 44 420 транзисторов (по сравнению с примерно 100 000 в более новых конструкциях CISC того времени), RISC I имел всего 32 инструкции, но полностью превзошел любой другой одночиповый дизайн, а его производительность оценивалась выше, чем у VAX. Подход MIPS делал акцент на агрессивном тактовом цикле и использовании конвейера, обеспечивая его максимально возможное использование. В результате этого предприятия появилась новая архитектура, также названная MIPS, и микропроцессор R2000 в 1985 году.

Коммерческий прорыв

В начале 1980-х годов концепция RISC была окружена значительной неопределенностью. Одна из проблем касалась использования памяти: одна инструкция традиционного процессора, такого как Motorola 68k, могла быть представлена в виде, возможно, полудюжины более простых инструкций RISC. Теоретически это могло замедлить работу системы, поскольку она тратила бы больше времени на выборку инструкций из памяти. Но к середине 1980-х годов концепции достаточно развились, чтобы считаться коммерчески жизнеспособными. Комитет правительства США по инновациям в области вычислительной техники и коммуникаций отдает должное признанию жизнеспособности концепции RISC успеху системы SPARC. ARM, в партнерстве с Apple, разработала энергоэффективную конструкцию, а затем специализировалась на этом рынке, который в то время был нишевым. С развитием мобильных вычислений, особенно после появления iPhone, ARM стала наиболее широко используемой конструкцией высокопроизводительных процессоров на рынке. Конкуренция между RISC и традиционными подходами CISC также была предметом теоретического анализа в начале 1980-х годов, что привело, например, к формулировке «жесткого закона» производительности процессоров. С 2010 года в Калифорнийском университете в Беркли разрабатывается новая архитектура набора инструкций с открытым исходным кодом (ISA) – RISC V – в исследовательских целях и как бесплатная альтернатива проприетарным ISA. По состоянию на 2014 год версия 2 ISA для пользовательского пространства была окончательно определена. ISA разработана для расширения – от минимального ядра, достаточного для небольшого встраиваемого процессора, до суперкомпьютеров и облачных вычислений – с использованием стандартных и определяемых разработчиками чипов расширений и сопроцессоров. Она была протестирована в кремниевой реализации с помощью SoC ROCKET, который также доступен как генератор процессоров с открытым исходным кодом на языке CHISEL.

Характеристики и философия проектирования

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

Философия набора инструкций

Обычно неправильно понимают фразу "компьютер с уменьшенным набором инструкций", полагая, что инструкции просто исключаются, что приводит к меньшему их количеству. На самом деле, с течением времени наборы инструкций RISC увеличивались, и сегодня многие из них содержат больше инструкций, чем многие процессоры CISC. Некоторые RISC-процессоры, такие как PowerPC, имеют наборы инструкций, сопоставимые по размеру с CISC IBM System/370, например; в то же время, DEC PDP 8 – очевидно, CISC-процессор, поскольку многие его инструкции включают в себя множественные обращения к памяти – имеет всего 8 базовых инструкций и несколько расширенных. Термин "уменьшенный" в этой фразе подразумевал, что объем работы, выполняемой каждой отдельной инструкцией, сокращен – до одного цикла памяти данных максимум – по сравнению со "сложными инструкциями" процессоров CISC, которым для выполнения одной инструкции могут потребоваться десятки циклов памяти данных. Иногда предпочтительнее использовать термин "архитектура загрузка-сохранение". Другой взгляд на дебаты между RISC и CISC заключается в рассмотрении того, что доступно компилятору. В процессоре CISC аппаратное обеспечение может использовать регистры и флаги для реализации одной сложной инструкции, но скрывать эти детали от компилятора. Внутренние операции RISC-процессора "открыты для компилятора", что привело к образованию акронима "Relegate Interesting Stuff to the Compiler" (Переложите интересные задачи на компилятор).

Формат инструкции

Большинство архитектур RISC имеют инструкции фиксированной длины и простое кодирование, что значительно упрощает логику выборки, декодирования и выдачи. Это одна из главных целей подхода RISC. Когда компьютеры были основаны на 8- или 16-битных словах, было сложно объединить непосредственное значение с кодом операции в одном слове памяти, хотя некоторые инструкции, такие как инкремент и декремент, делали это неявно, используя другой код операции. В отличие от этого, 32-битная машина предоставляет достаточно места для кодирования непосредственного значения, что позволяет избежать необходимости во втором обращении к памяти для получения этого значения. Именно поэтому многие RISC-процессоры позволяют кодировать 12- или 13-битную константу непосредственно в командное слово. Одним из недостатков 32-битных инструкций является снижение плотности кода, что более критично для встраиваемых систем, чем для рынков рабочих станций и серверов, для которых изначально предназначались архитектуры RISC. Для решения этой проблемы несколько архитектур, таких как ARM, Power ISA, MIPS, RISC-V и Adapteva Epiphany, имеют опциональный короткий, упрощенный набор сжатых инструкций. Как правило, эти инструкции используют меньшее количество регистров и меньше бит для непосредственных значений, и часто применяют двух-инструкционный формат для исключения одного номера регистра из инструкций. Двухоперандный формат в системе с 16 регистрами требует 8 бит для номеров регистров, оставляя еще 8 бит для кода операции или других целей. SH5 также следует этой схеме, хотя и развивался в противоположном направлении, добавив более длинные 32-битные инструкции к исходному 16-битному кодированию.

Сравнение с другими архитектурами

Некоторые процессоры были специально разработаны для работы с очень небольшим набором инструкций, но эти разработки сильно отличаются от классических RISC-архитектур, поэтому им дали другие названия, такие как компьютер с минимальным набором инструкций (MISC) или архитектура с транспортным запуском (TTA). RISC-архитектуры традиционно не имели большого успеха на рынках настольных ПК и серверов, где платформы на базе x86 остаются доминирующей архитектурой процессоров. Однако это может измениться, поскольку процессоры на базе ARM разрабатываются для систем с более высокой производительностью. Производители, включая Cavium, AMD и Qualcomm, выпустили серверные процессоры на основе архитектуры ARM. В 2017 году ARM также сотрудничала с Cray для создания суперкомпьютера на базе ARM. Для настольных компьютеров Microsoft объявила о планах поддержки ПК-версии Windows 10 на устройствах Qualcomm Snapdragon в 2017 году в рамках своего партнерства с Qualcomm. Эти устройства будут поддерживать приложения Windows, скомпилированные для 32-битного x86, через эмулятор процессора x86, который транслирует 32-битный код x86 в код ARM64. Apple объявила о переходе своих настольных и портативных компьютеров Mac с процессоров Intel на разработанные внутри компании SoC на базе ARM64, известные как Apple silicon; первые такие компьютеры с процессором Apple M1 были выпущены в ноябре 2020 года. Mac с Apple silicon могут запускать 64-битные исполняемые файлы x86 с помощью Rosetta 2 – транслятора x86 64 в ARM64. Однако за пределами настольных систем архитектура ARM RISC широко используется в смартфонах, планшетах и многих типах встраиваемых устройств. Хотя ранние RISC-архитектуры значительно отличались от современных CISC-архитектур, к 2000 году самые производительные процессоры в линейке RISC стали практически неотличимы от самых производительных процессоров в линейке CISC.

Использование архитектур RISC

Архитектуры RISC сейчас применяются на широком спектре платформ – от смартфонов и планшетных компьютеров до одних из самых мощных суперкомпьютеров в мире, таких как Fugaku, являющийся самым быстрым в списке TOP500 на 2020 год, и Summit, Sierra и Sunway TaihuLight, занимающих следующие три позиции в этом списке.

Низкотехнологичные и мобильные системы

К началу 21 века большинство маломощных и мобильных систем использовали архитектуры RISC. Примеры включают: архитектура ARM доминирует на рынке встраиваемых систем с низким энергопотреблением и низкой стоимостью (обычно 200–1800 МГц в 2014 году). Она применяется в ряде устройств, таких как большинство систем на базе Android, Apple iPhone, iPod Touch, iPad, Apple Watch и Apple TV, Microsoft Windows Phone (ранее Windows Mobile), устройства RIM, Nintendo Game Boy Advance, DS, 3DS и Switch, Raspberry Pi и другие. PowerPC от IBM использовалась в игровых консолях GameCube, Wii, PlayStation 3, Xbox 360 и Wii U. Линейка MIPS (которая в своё время использовалась во многих компьютерах SGI) применялась в игровых консолях PlayStation, PlayStation 2, Nintendo 64, PlayStation Portable и домашних шлюзах, таких как серия Linksys WRT54G. SuperH от Hitachi, изначально широко использовавшаяся в Sega Super 32X, Saturn и Dreamcast, теперь разрабатывается и продаётся компанией Renesas под названием SH4. Atmel AVR используется в различных продуктах, от портативных контроллеров Xbox и платформы микроконтроллеров с открытым исходным кодом Arduino до автомобилей BMW. RISC-V, пятая RISC ISA с открытым исходным кодом, разработанная в Беркли, с 32- или 64-битными адресными пространствами, небольшим набором целочисленных инструкций и экспериментальной "Сжатой" ISA для повышения плотности кода, предназначенная для стандартных и специализированных расширений.

Рабочие и ноутбуки

Архитектура PowerPC от IBM использовалась в компьютерах Apple Macintosh с 1994 года, когда они начали переход от процессоров семейства Motorola 68000, до 2005 года, когда они перешли на процессоры Intel x86. Некоторые Chromebook используют платформы на основе ARM с 2012 года. Apple использует разработанные внутри компании процессоры на основе архитектуры ARM для своей линейки настольных и портативных компьютеров с момента перехода от процессоров Intel, и первые такие компьютеры были выпущены в ноябре 2020 года. Microsoft использует процессоры на основе ARM для своей линейки Surface. HP Inc и Lenovo выпустили ПК с Windows на базе ARM Qualcomm Snapdragon.

Рабочие станции, серверы и суперкомпьютеры

MIPS, от Silicon Graphics (прекратила выпуск систем на базе MIPS в 2006 году). SPARC, от Oracle (ранее Sun Microsystems) и Fujitsu. Архитектура IBM POWER, PowerPC и Power ISA использовались и используются во многих суперкомпьютерах, серверах среднего уровня и рабочих станциях IBM. PA-RISC от Hewlett Packard, также известная как HP PA (производство прекращено в конце 2008 года). Alpha, использовалась в одноплатные компьютеры, рабочие станции, серверы и суперкомпьютеры от Digital Equipment Corporation, затем Compaq и, наконец, Hewlett Packard (HP) (производство прекращено в 2007 году). RISC V, пятая RISC ISA Berkeley с открытым исходным кодом, с 64- или 128-битными адресными пространствами, и целочисленным ядром, расширенным поддержкой операций с плавающей точкой, атомарных операций и векторной обработки, и разработанная для расширения набором инструкций для сетевого взаимодействия, ввода-вывода и обработки данных. 64-битный суперскалярный дизайн "Rocket" доступен для скачивания. Он реализован в процессоре, разработанном в рамках Европейской инициативы по созданию процессоров. Архитектура ARM, в настоящее время используемая поставщиками облачных услуг для серверов. Примером является процессор AWS Graviton, используемый для различных сервисов на платформе AWS. ARM также использовалась в чипе Fujitsu A64FX для создания Fugaku, самого быстрого суперкомпьютера в мире в 2020 году.

Открытый исходный код

Архитектуры RISC стали популярны в процессорах с открытым исходным кодом и программно-реализуемых микропроцессорах, поскольку их относительно просто реализовать, что делает их подходящими для реализации на FPGA и прототипирования, например. Примеры включают: OpenRISC — открытый набор инструкций и микроархитектуру, впервые представленную в 2000 году; LEON — реализацию набора инструкций SPARC V8 с открытым исходным кодом, устойчивую к радиации (предназначенную для космических приложений); Libre SOC — SoC с открытым исходным кодом, основанный на Power ISA с расширениями для видео и 3D-графики. Также существует несколько реализаций RISC V с открытым исходным кодом.

Награды

В 2022 году Стив Фурбер, Джон Л. Хеннесси, Дэвид А. Паттерсон и Софи М. Уилсон были удостоены премии Чарльза Старка Дрейпера Национальной инженерной академией США за их вклад в изобретение, разработку и внедрение микросхем с упрощенным набором команд (RISC).