В электронике и информатике компьютер с сокращенным набором инструкций ( RISC ) — это архитектура компьютера , разработанная для упрощения отдельных инструкций, предоставляемых компьютеру для выполнения задач. По сравнению с инструкциями, предоставляемыми компьютеру со сложным набором инструкций (CISC), компьютеру RISC может потребоваться больше инструкций (больше кода) для выполнения задачи, поскольку отдельные инструкции написаны в более простом коде. Цель состоит в том, чтобы компенсировать необходимость обработки большего количества инструкций за счет увеличения скорости каждой инструкции, в частности, путем внедрения конвейера инструкций , что может быть проще для достижения при наличии более простых инструкций. [1]
Ключевая операционная концепция RISC-компьютера заключается в том, что каждая инструкция выполняет только одну функцию (например, копирование значения из памяти в регистр). RISC-компьютер обычно имеет много (16 или 32) высокоскоростных регистров общего назначения с архитектурой загрузки-хранения , в которой код для инструкций регистр-регистр (для выполнения арифметики и тестов) отделен от инструкций, которые обращаются к основной памяти компьютера. Конструкция ЦП позволяет RISC-компьютерам использовать несколько простых режимов адресации [2] и предсказуемое время выполнения инструкций, что упрощает проектирование системы в целом.
Концептуальные разработки архитектуры компьютера RISC начались с проекта IBM 801 в конце 1970-х годов, но они не были сразу введены в эксплуатацию. Проектировщики в Калифорнии подхватили концепции 801 в двух основополагающих проектах, Stanford MIPS и Berkeley RISC . Они были коммерциализированы в 1980-х годах как системы MIPS и SPARC . В конечном итоге IBM создала проекты RISC, основанные на дальнейшей работе над концепцией 801, архитектуре IBM POWER , PowerPC и Power ISA . По мере развития проектов многие похожие проекты, созданные в середине-конце 1980-х и начале 1990-х годов, такие как ARM , PA-RISC и Alpha , создали центральные процессоры, которые увеличили коммерческую полезность рабочей станции Unix и встроенных процессоров в лазерном принтере , маршрутизаторе и подобных продуктах.
На рынке мини-компьютеров такие компании, как Celerity Computing , Pyramid Technology и Ridge Computers, начали предлагать системы, разработанные в соответствии с принципами RISC или RISC-подобными принципами в начале 1980-х годов. [3] [4] [5] [6] [7] Немногие из этих разработок начинались с использования микропроцессоров RISC .
Разновидности архитектуры RISC-процессоров включают процессор ARC , DEC Alpha, AMD Am29000 , архитектуру ARM, Atmel AVR , Blackfin , Intel i860 , Intel i960 , LoongArch , Motorola 88000 , архитектуру MIPS, PA-RISC, Power ISA, RISC-V , SuperH и SPARC. Процессоры RISC используются в суперкомпьютерах , таких как Fugaku . [8]
Ряд систем, появившихся в 1960-х годах, были признаны первой архитектурой RISC, частично основанной на использовании ими подхода «загрузка-сохранение» . [9] Термин RISC был придуман Дэвидом Паттерсоном из проекта Berkeley RISC , хотя несколько похожих концепций появлялись и раньше. [10]
CDC 6600, разработанный Сеймуром Крэем в 1964 году, использовал архитектуру загрузки-хранения с двумя режимами адресации (регистр+регистр и регистр+непосредственная константа) и 74 кодами операций, при этом базовый тактовый цикл был в 10 раз быстрее времени доступа к памяти. [11] Джек Донгарра говорит, что отчасти из-за оптимизированной архитектуры загрузки-хранения CDC 6600 его можно считать предшественником современных RISC-систем, хотя для разработки современной RISC-системы необходимо было преодолеть ряд других технических барьеров. [12]
Майкл Дж. Флинн рассматривает первую RISC-систему как проект IBM 801 [2] , начатый в 1975 году Джоном Коком и завершенный в 1980 году. 801 был разработан в результате попытки построить 24-битный высокоскоростной процессор для использования в качестве основы для цифрового телефонного коммутатора . Чтобы достичь своей цели — коммутации 1 миллиона звонков в час (300 в секунду), они подсчитали, что процессору требуется производительность порядка 12 миллионов инструкций в секунду (MIPS), [13] по сравнению с их самой быстрой мэйнфреймовой машиной того времени, 370/168 , которая работала со скоростью 3,5 MIPS. [14]
Проект был основан на изучении обширной коллекции статистических данных IBM, собранных у их клиентов. Это показало, что код в высокопроизводительных настройках широко использовал регистры процессора , и что они часто заканчивались. Это предполагало, что дополнительные регистры улучшат производительность. Кроме того, они заметили, что компиляторы обычно игнорируют подавляющее большинство доступных инструкций, особенно режимы ортогональной адресации. Вместо этого они выбирали самую быструю версию любой данной инструкции, а затем создавали небольшие процедуры с ее использованием. Это предполагало, что большинство инструкций можно удалить, не влияя на результирующий код. Эти два вывода работали согласованно; удаление инструкций позволило бы сделать коды операций инструкций короче, освободив биты в слове инструкции, которые затем можно было бы использовать для выбора среди большего набора регистров. [13]
Программа телефонного коммутатора была отменена в 1975 году, но к тому времени команда продемонстрировала, что та же конструкция обеспечит значительный прирост производительности при запуске практически любого кода. В моделировании они показали, что компилятор, настроенный на использование регистров везде, где это возможно, будет выполнять код примерно в три раза быстрее, чем традиционные конструкции. Несколько удивительно, что тот же код будет работать примерно на 50% быстрее даже на существующих машинах из-за улучшенного использования регистров. На практике их экспериментальный компилятор PL/8, слегка урезанная версия PL/I , постоянно производил код, который работал намного быстрее на их существующих мэйнфреймах. [13]
32-разрядная версия 801 в конечном итоге была выпущена в однокристальной форме как IBM ROMP в 1981 году, что означало «Исследовательский OPD [Отдел офисных продуктов] Микропроцессор». [15] Этот ЦП был разработан для «мини» задач и нашел применение в периферийных интерфейсах и контроллерах каналов на более поздних компьютерах IBM. Он также использовался в качестве ЦП в IBM RT PC в 1986 году, который оказался коммерческим провалом. [16] Хотя 801 не получил широкого распространения в своей первоначальной форме, он вдохновил множество исследовательских проектов, включая те, что были в IBM, которые в конечном итоге привели к архитектуре IBM POWER . [17] [18]
К концу 1970-х годов 801 стал хорошо известен в отрасли. Это совпало с новыми технологиями изготовления, которые позволяли выводить на рынок более сложные чипы. Zilog Z80 1976 года имел 8000 транзисторов, тогда как Motorola 68000 (68k) 1979 года имел 68000. Эти новые разработки обычно использовали свою новообретенную сложность для расширения набора инструкций, чтобы сделать его более ортогональным. Большинство, как и 68k, использовали для этого микрокод , считывая инструкции и повторно реализуя их как последовательность более простых внутренних инструкций. В 68k для этого микрокодирования использовалась полная 1 ⁄ транзисторов . [19]
В 1979 году Дэвид Паттерсон был отправлен в академический отпуск из Калифорнийского университета в Беркли, чтобы помочь команде DEC на западном побережье улучшить микрокод VAX. Паттерсон был поражен сложностью процесса кодирования и пришел к выводу, что он несостоятелен. [20] Сначала он написал статью о способах улучшения микрокодирования, но позже передумал и решил, что проблема в самом микрокоде. При финансировании от программы DARPA VLSI Паттерсон начал работу над программой Berkeley RISC . Программа, практически неизвестная сегодня, привела к огромному количеству достижений в проектировании микросхем, производстве и даже компьютерной графике. Рассматривая множество программ из своего варианта BSD Unix , команда Berkeley обнаружила, как и IBM, что большинство программ не использовали большое разнообразие инструкций в 68k. [21]
Ранние работы Паттерсона указали на важную проблему традиционного подхода «чем больше, тем лучше»; даже те инструкции, которые были критически важны для общей производительности, задерживались из-за их прохождения через микрокод. Если бы микрокод был удален, программы работали бы быстрее. И поскольку микрокод в конечном итоге брал сложную инструкцию и разбивал ее на шаги, не было причин, по которым компилятор не мог бы сделать это вместо этого. Эти исследования предполагали, что даже без других изменений можно было бы сделать чип с транзисторами на 1 ⁄ 3 меньше, который работал бы быстрее. [21] В оригинальной статье RISC-I они отметили: [22]
Пропуск этого дополнительного уровня интерпретации, по-видимому, повышает производительность, одновременно уменьшая размер чипа. [22]
Также было обнаружено, что в микрокодированных реализациях некоторых архитектур сложные операции, как правило, были медленнее, чем последовательность более простых операций, делающих то же самое. Это было отчасти следствием того, что многие проекты были сделаны в спешке, с небольшим временем для оптимизации или настройки каждой инструкции; были оптимизированы только те, которые использовались чаще всего, и последовательность этих инструкций могла быть быстрее, чем менее настроенная инструкция, выполняющая эквивалентную операцию в качестве этой последовательности. Одним из печально известных примеров была инструкция VAXINDEX
. [23]
Работа Беркли также выявила ряд дополнительных моментов. Среди них был тот факт, что программы тратили значительное количество времени на выполнение вызовов подпрограмм и возвратов, и казалось, что есть потенциал для улучшения общей производительности за счет ускорения этих вызовов. Это привело к тому, что проект Беркли выбрал метод, известный как окна регистров , который может значительно улучшить производительность подпрограмм, хотя и ценой некоторой сложности. [22] Они также заметили, что большинство математических инструкций были простыми назначениями; только 1 ⁄ 3 из них фактически выполняли операцию, такую как сложение или вычитание. Но когда эти операции происходили, они, как правило, были медленными. Это привело к гораздо большему акценту на базовом арифметическом блоке данных, в отличие от предыдущих проектов, где большая часть чипа была выделена для управления и микрокода. [21]
Полученный Berkeley RISC был основан на получении производительности за счет использования конвейеризации и агрессивного использования регистровых окон. [23] [22] В традиционном ЦП есть небольшое количество регистров, и программа может использовать любой регистр в любое время. В ЦП с регистровыми окнами есть огромное количество регистров, например, 128, но программы могут использовать только небольшое их количество, например, восемь, в любой момент времени. Программа, которая ограничивает себя восемью регистрами на процедуру, может выполнять очень быстрые вызовы процедур : вызов просто перемещает окно «вниз» на восемь, к набору из восьми регистров, используемых этой процедурой, а возврат перемещает окно назад. [24] Проект Berkeley RISC представил процессор RISC-I в 1982 году. Состоящий всего из 44 420 транзисторов (по сравнению со средним показателем около 100 000 в более новых проектах CISC той эпохи), RISC-I имел всего 32 инструкции, и тем не менее полностью превзошел любую другую однокристальную конструкцию, с расчетной производительностью, превышающей VAX. [22] Они продолжили это с 40 760-транзисторным, 39-инструкционным RISC-II в 1983 году, который работал в три раза быстрее RISC-I. [22]
Когда проект RISC начал становиться известным в Кремниевой долине , аналогичный проект начался в Стэнфордском университете в 1981 году. Этот проект MIPS вырос из аспирантского курса Джона Л. Хеннесси , создал работающую систему в 1983 году и мог запускать простые программы к 1984 году. [25] Подход MIPS подчеркивал агрессивный тактовый цикл и использование конвейера, гарантируя, что он может работать как можно «полнее». [25] За системой MIPS последовала MIPS-X, и в 1984 году Хеннесси и его коллеги основали MIPS Computer Systems для коммерческого производства проекта. [25] [26] Результатом этого предприятия стала новая архитектура, которая также называлась MIPS , и микропроцессор R2000 в 1985 году. [26]
Общая философия концепции RISC была широко понята ко второй половине 1980-х годов и побудила разработчиков MIPS-X сформулировать ее в 1987 году следующим образом:
Целью любого формата инструкций должно быть: 1. простое декодирование, 2. простое декодирование и 3. простое декодирование. Любые попытки улучшить плотность кода за счет производительности ЦП должны высмеиваться при каждой возможности. [27]
Конкуренция между RISC- и традиционными подходами CISC также была предметом теоретического анализа в начале 1980-х годов, что привело, например, к железному закону производительности процессора .
С 2010 года в Калифорнийском университете в Беркли разрабатывается новая архитектура набора инструкций с открытым стандартом (ISA), Berkeley RISC-V , для исследовательских целей и в качестве бесплатной альтернативы фирменным ISA. С 2014 года исправлена версия 2 пользовательского пространства ISA. [28] ISA разработана с возможностью расширения от базового ядра, достаточного для небольшого встроенного процессора, до суперкомпьютера и использования облачных вычислений со стандартными и определяемыми разработчиком чипа расширениями и сопроцессорами. Она была протестирована в кремниевой конструкции с ROCKET SoC , которая также доступна как генератор процессоров с открытым исходным кодом на языке CHISEL.
В начале 1980-х годов концепция RISC была окружена значительной неопределенностью. Одной из проблем было использование памяти; одна инструкция традиционного процессора, такого как Motorola 68k, могла быть записана как, возможно, полдюжины более простых инструкций RISC. Теоретически это могло замедлить работу системы, поскольку она тратила больше времени на выборку инструкций из памяти. Но к середине 1980-х годов концепции достаточно созрели, чтобы считаться коммерчески жизнеспособными. [16] [25]
Коммерческие проекты RISC начали появляться в середине 1980-х годов. Acorn ARM1 появился в апреле 1985 года, [29] MIPS R2000 появился в январе 1986 года, а вскоре после этого PA-RISC от Hewlett-Packard в некоторых из их компьютеров. [16] Тем временем усилия Беркли стали настолько известными, что в конечном итоге стали названием для всей концепции. В 1987 году Sun Microsystems начала поставлять системы с процессором SPARC , непосредственно основанным на системе Berkeley RISC-II. [16] [30] Комитет правительства США по инновациям в области вычислений и коммуникаций приписывает принятие жизнеспособности концепции RISC успеху системы SPARC. [16] К 1989 году было доступно много процессоров RISC; конкуренция снизила их цену до 10 долларов за MIPS в больших количествах, что намного дешевле, чем у единственного поставщика Intel 80386 . Производительность процессора RISC от IBM, доступного только в ПК RT , была менее конкурентоспособной, чем у других, [31] но успех SPARC возобновил интерес внутри IBM, которая выпустила новые системы RISC к 1990 году, а к 1995 году процессоры RISC стали основой серверной индустрии стоимостью 15 миллиардов долларов. [16]
К концу 1980-х годов новые RISC-проекты легко превосходили все традиционные проекты с большим отрывом. В этот момент все остальные поставщики начали собственные усилия по созданию RISC. Среди них были DEC Alpha , AMD Am29000 , Intel i860 и i960 , Motorola 88000 , IBM POWER и, немного позже, IBM/Apple/Motorola PowerPC . Многие из них с тех пор исчезли, поскольку они часто не предлагали никаких конкурентных преимуществ по сравнению с другими моделями той же эпохи. Те, что остались, часто используются только на нишевых рынках или как части других систем; из проектов этих традиционных поставщиков только SPARC и POWER имеют какой-либо значительный оставшийся рынок. [ необходима цитата ]
Архитектура ARM была наиболее широко принятой RISC ISA, изначально предназначенной для предоставления высокопроизводительных настольных вычислений, по низкой цене и в ограниченном тепловом пакете, например, в Acorn Archimedes , хотя и фигурировала в таблицах Super Computer League , ее первоначальная, относительно более низкое энергопотребление и охлаждение вскоре были адаптированы для встраиваемых приложений, таких как обработка растровых изображений лазерного принтера. [32] Acorn, в партнерстве с Apple Inc, и VLSI, создали ARM Ltd, в 1990 году, чтобы разделить расходы на НИОКР и найти новые рынки для ISA, которая в партнерстве с TI, GEC, Sharp, Nokia, Oracle и Digital разрабатывала маломощные и встраиваемые конструкции RISC и нацеливалась на те сегменты рынка, которые в то время были нишевыми. С ростом мобильных, автомобильных, потоковых вычислений, вычислений для смарт-устройств, ARM стала наиболее широко используемой ISA, компания оценивает, что почти половина всех поставленных в истории процессоров были ARM. [33]
Путаница вокруг определения RISC, вытекающая из формулировки термина, а также тенденция к оппортунистическому отнесению архитектур процессоров с относительно небольшим количеством инструкций (или групп инструкций) к архитектурам RISC привели к попыткам определить RISC как философию проектирования. Одна из попыток сделать это была выражена следующим образом:
Процессор RISC имеет набор инструкций, разработанный для эффективного выполнения конвейерным процессором и для генерации кода оптимизирующим компилятором.
— Майкл Слейтер, Microprocessor Report [34]
Распространенное заблуждение относительно фразы «компьютер с сокращенным набором инструкций» заключается в том, что инструкции просто исключаются, что приводит к меньшему набору инструкций. [35] Фактически, с годами наборы инструкций RISC выросли в размерах, и сегодня многие из них имеют больший набор инструкций, чем многие ЦП CISC. [36] [37] Некоторые процессоры RISC, такие как PowerPC, имеют наборы инструкций, такие же большие, как, например, CISC IBM System/370 ; наоборот, DEC PDP-8 — явно ЦП CISC, поскольку многие из его инструкций включают множественный доступ к памяти — имеет всего 8 основных инструкций и несколько расширенных инструкций. [38] Термин «сокращенный» в этой фразе был предназначен для описания того факта, что объем работы, выполняемой любой отдельной инструкцией, сокращен — максимум один цикл памяти данных — по сравнению со «сложными инструкциями» ЦП CISC, которым могут потребоваться десятки циклов памяти данных для выполнения одной инструкции. [39]
Иногда более предпочтительным является термин «архитектура загрузки-хранения» .
Другой способ взглянуть на спор RISC/CISC — рассмотреть, что открыто компилятору. В процессоре CISC оборудование может внутренне использовать регистры и бит флага для реализации одной сложной инструкции, такой как STRING MOVE
, но скрывать эти детали от компилятора. Внутренние операции процессора RISC «открыты компилятору», что привело к бэкрониму «Relegate Interesting Stuff to the Compiler». [40] [41]
Большинство архитектур RISC имеют фиксированную длину инструкций и простое кодирование, что значительно упрощает логику выборки, декодирования и выдачи. Это одна из основных целей подхода RISC. [22]
Часть этого стала возможной только благодаря современному переходу на 32-битные форматы. Например, в типичной программе более 30% всех числовых констант равны 0 или 1, 95% умещаются в один байт, а 99% — в 16-битное значение. [42] Когда компьютеры были основаны на 8- или 16-битных словах, было бы сложно объединить немедленное значение с кодом операции в одном слове памяти, хотя некоторые инструкции, такие как инкремент и декремент, делали это неявно, используя другой код операции. Напротив, 32-битная машина имеет достаточно места для кодирования немедленного значения, и это позволяет избежать необходимости выполнять второе чтение памяти для извлечения значения. Вот почему многие RISC-процессоры позволяют кодировать 12- или 13-битную константу непосредственно в командном слове. [22]
Если предположить, что константная область составляет 13 бит, как в случае с конструкциями MIPS и RISC, то для кодирования инструкций доступно еще 19 бит. Это оставляет достаточно места для указания как кода операции, так и одного или двух регистров. Операции регистр-регистр, в основном математические и логические, требуют достаточно бит для кодирования двух или трех используемых регистров. Большинство процессоров используют формат с тремя операндами в форме A = B + C
, в этом случае требуются три номера регистров. Если процессор имеет 32 регистра, каждый из них требует 5-битного числа для 15 бит. Если один из этих регистров заменить непосредственным, все еще остается много места для кодирования двух оставшихся регистров и кода операции. Обычные инструкции, встречающиеся в многословных системах, такие как INC
и DEC
, которые уменьшают количество слов, которые необходимо прочитать перед выполнением инструкции, не нужны в RISC, поскольку их можно выполнить с помощью одного регистра и непосредственного значения 1. [22]
Первоначальный формат RISC-I остается каноническим примером концепции. Он использует 7 бит для кода операции и 1-битный флаг для условных кодов, следующие 5 бит для регистра назначения и следующие пять для первого операнда. Это оставляет 14 бит, первый из которых указывает, содержат ли следующие 13 непосредственное значение или использует только пять из них для указания регистра для второго операнда. [22] Более сложным примером является кодировка MIPS, которая использовала только 6 бит для кода операции, за которыми следовали два 5-битных регистра. Оставшиеся 16 бит могли использоваться двумя способами: как 16-битное непосредственное значение или как 5-битное значение сдвига (используется только в операциях сдвига, в противном случае ноль), а оставшиеся 6 бит как расширение кода операции. В случае арифметических операций регистр-регистр код операции был 0, а последние 6 бит содержали фактический код; те, которые использовали непосредственное значение, использовали обычное поле кода операции в начале. [43]
Одним из недостатков 32-битных инструкций является сниженная плотность кода, что является более неблагоприятной характеристикой во встраиваемых вычислениях, чем на рынках рабочих станций и серверов, для которых изначально разрабатывались архитектуры RISC. Для решения этой проблемы несколько архитектур, таких как SuperH (1992), ARM thumb (1994), [44] MIPS16e (2004), Power Variable Length Encoding ISA (2006), RISC-V и Adapteva Epiphany , имеют дополнительный короткий, сжатый набор инструкций с сокращенными функциями . Как правило, эти инструкции предоставляют меньшее количество регистров и меньше бит для непосредственных значений и часто используют формат с двумя операндами для исключения одного номера регистра из инструкций. Формат с двумя операндами в системе с 16 регистрами требует 8 бит для номеров регистров, оставляя еще 8 для кода операции или других целей. SH5 также следует этой модели, хотя и развивается в противоположном направлении, добавляя более длинные 32-битные инструкции к исходной 16-битной кодировке.
Наиболее характерным аспектом RISC является выполнение по крайней мере одной инструкции за цикл . [31] Одноцикловая работа описывается как «быстрое выполнение простых функций, которые доминируют в потоке инструкций компьютера», таким образом стремясь обеспечить среднюю пропускную способность, приближающуюся к одной инструкции за цикл для любого отдельного потока инструкций. [45]
Другие особенности архитектур RISC включают в себя:
Конструкции RISC также, скорее всего, будут использовать модель памяти Гарварда , в которой поток инструкций и поток данных концептуально разделены; это означает, что изменение памяти, в которой хранится код, может не оказать никакого влияния на инструкции, выполняемые процессором (поскольку ЦП имеет отдельный кэш инструкций и данных ), по крайней мере, до тех пор, пока не будет выдана специальная инструкция синхронизации; процессоры CISC, имеющие отдельные кэши инструкций и данных, обычно автоматически синхронизируют их для обеспечения обратной совместимости со старыми процессорами.
Многие ранние разработки RISC также имели общую характеристику наличия слота задержки перехода , пространства инструкций, следующего сразу за переходом или переходом. Инструкция в этом пространстве выполняется независимо от того, выполняется переход или нет (другими словами, эффект перехода задерживается). Эта инструкция держит АЛУ ЦП занятым в течение дополнительного времени, обычно необходимого для выполнения перехода. В настоящее время слот задержки перехода считается неприятным побочным эффектом определенной стратегии реализации некоторых разработок RISC, и современные разработки RISC обычно избавляются от него (например, PowerPC и более поздние версии SPARC и MIPS). [ необходима цитата ]
Некоторые аспекты, приписываемые первым RISC- маркированным проектам около 1975 года, включают наблюдения, что компиляторы с ограниченной памятью того времени часто не могли воспользоваться функциями, предназначенными для облегчения ручного ассемблерного кодирования, и что сложные режимы адресации требуют много циклов для выполнения из-за требуемых дополнительных доступов к памяти. Утверждалось [ кем? ] , что такие функции будут лучше выполняться последовательностями более простых инструкций, если это может дать реализации, достаточно малые, чтобы оставить место для многих регистров, сокращая количество медленных доступов к памяти. В этих простых проектах большинство инструкций имеют одинаковую длину и схожую структуру, арифметические операции ограничены регистрами ЦП, и только отдельные инструкции загрузки и сохранения обращаются к памяти. Эти свойства позволяют лучше балансировать этапы конвейера, чем раньше, делая конвейеры RISC значительно более эффективными и допуская более высокие тактовые частоты .
Еще одним стимулом как RISC, так и других конструкций стали практические измерения реальных программ. Эндрю Таненбаум подытожил многие из них, продемонстрировав, что процессоры часто имели слишком большие непосредственные значения. Например, он показал, что 98% всех констант в программе уместятся в 13 бит , однако многие конструкции ЦП выделяли 16 или 32 бита для их хранения. Это говорит о том, что для уменьшения количества обращений к памяти машина фиксированной длины могла бы хранить константы в неиспользуемых битах самого командного слова, чтобы они были немедленно готовы, когда они понадобятся ЦП (во многом похоже на непосредственную адресацию в обычной конструкции). Это требовало небольших кодов операций, чтобы оставить место для константы разумного размера в 32-битном командном слове.
Поскольку многие реальные программы тратят большую часть своего времени на выполнение простых операций, некоторые исследователи решили сосредоточиться на том, чтобы сделать эти операции как можно более быстрыми. Тактовая частота ЦП ограничена временем, необходимым для выполнения самой медленной подоперации любой инструкции; уменьшение этого времени цикла часто ускоряет выполнение других инструкций. [46] Сосредоточение на «сокращенных инструкциях» привело к тому, что полученная машина была названа «компьютером с сокращенным набором инструкций» (RISC). Цель состояла в том, чтобы сделать инструкции настолько простыми, чтобы их можно было легко конвейеризировать, чтобы достичь пропускной способности одного такта на высоких частотах . Это контрастировало с конструкциями CISC, чьи «критические арифметические операции и передачи регистров» считались сложными для конвейеризации. [47]
Позже было отмечено, что одной из наиболее важных характеристик процессоров RISC было то, что внешняя память была доступна только с помощью инструкции загрузки или сохранения . Все остальные инструкции были ограничены внутренними регистрами. Это упростило многие аспекты проектирования процессора: позволило использовать инструкции фиксированной длины, упростило конвейеры и изолировало логику для обработки задержки при завершении доступа к памяти (промах кэша и т. д.) всего двумя инструкциями. Это привело к тому, что конструкции RISC стали называть архитектурами загрузки-сохранения . [48]
Некоторые процессоры были специально разработаны с очень небольшим набором инструкций, но эти конструкции сильно отличаются от классических конструкций RISC, поэтому им дали другие названия, такие как компьютер с минимальным набором инструкций (MISC) или архитектура с транспортным запуском (TTA).
Архитектуры RISC традиционно имели мало успеха на рынках настольных ПК и серверов, где платформы на базе x86 остаются доминирующей архитектурой процессоров. Однако это может измениться, поскольку процессоры на базе ARM разрабатываются для более производительных систем. [49] Производители, включая Cavium , AMD и Qualcomm, выпустили серверные процессоры на базе архитектуры ARM. [50] [51] ARM дополнительно заключила партнерство с Cray в 2017 году для производства суперкомпьютера на базе ARM. [52] Что касается настольных компьютеров, Microsoft объявила, что планирует поддерживать версию Windows 10 для ПК на устройствах на базе Qualcomm Snapdragon в 2017 году в рамках своего партнерства с Qualcomm. Эти устройства будут поддерживать приложения Windows, скомпилированные для 32-битной x86 через эмулятор процессора x86 , который транслирует 32-битный код x86 в код ARM64 . [53] [54] Apple объявила, что переведет свои настольные компьютеры и ноутбуки Mac с процессоров Intel на разработанные внутри компании SoC на базе ARM64 под названием Apple Silicon ; первые такие компьютеры, использующие процессор Apple M1 , были выпущены в ноябре 2020 года. [55] Компьютеры Mac с Apple Silicon могут запускать двоичные файлы x86-64 с помощью Rosetta 2 , транслятора x86-64 в ARM64. [56]
Однако за пределами настольных компьютеров архитектура ARM RISC широко используется в смартфонах, планшетах и многих видах встраиваемых устройств. Хотя ранние разработки RISC значительно отличались от современных разработок CISC, к 2000 году самые производительные процессоры в линейке RISC были почти неотличимы от самых производительных процессоров в линейке CISC. [57] [58] [59]
Архитектуры RISC теперь используются на различных платформах, от смартфонов и планшетных компьютеров до некоторых из самых быстрых суперкомпьютеров в мире, таких как Fugaku , самый быстрый в списке TOP500 по состоянию на ноябрь 2020 года [update], а также Summit , Sierra и Sunway TaihuLight , следующие три в этом списке. [60]
К началу 21-го века большинство бюджетных и мобильных систем полагались на RISC-архитектуру. [61] Вот некоторые примеры:
Архитектуры RISC стали популярными в процессорах с открытым исходным кодом и программных микропроцессорах , поскольку они относительно просты в реализации, что делает их подходящими , например, для реализаций FPGA и прототипирования. Вот некоторые примеры:
В 2022 году Стив Фербер , Джон Л. Хеннесси , Дэвид А. Паттерсон и Софи М. Уилсон были награждены премией Чарльза Старка Дрейпера Национальной инженерной академией США за их вклад в изобретение, разработку и внедрение микросхем с сокращенным набором команд (RISC). [70] [71]
[...] первый кремний был запущен 26 апреля 1985 г.
главной целью было не сокращение количества инструкций, а их сложность
Граница между RISC и CISC с годами становится все более размытой
официально объявила, что перейдет с процессоров Intel на собственные чипы серии A на базе ARM в своих компьютерах Mac.
N-ный повторный постинг CISC против RISC (или что такое RISC на самом деле)