stringtranslate.com

Компьютер с сокращенным набором команд

Процессор Sun Microsystems UltraSPARC представляет собой тип RISC-микропроцессора.

В электронике и информатике компьютер с сокращенным набором инструкций ( 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]

IBM801

Майкл Дж. Флинн рассматривает первую 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]

Berkeley RISC и Stanford MIPS

К концу 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]

Ранние работы Паттерсона указали на важную проблему традиционного подхода «чем больше, тем лучше»; даже те инструкции, которые были критически важны для общей производительности, задерживались из-за их прохождения через микрокод. Если бы микрокод был удален, программы работали бы быстрее. И поскольку микрокод в конечном итоге брал сложную инструкцию и разбивал ее на шаги, не было причин, по которым компилятор не мог бы сделать это вместо этого. Эти исследования предполагали, что даже без других изменений можно было бы сделать чип с транзисторами на 13 меньше, который работал бы быстрее. [21] В оригинальной статье RISC-I они отметили: [22]

Пропуск этого дополнительного уровня интерпретации, по-видимому, повышает производительность, одновременно уменьшая размер чипа. [22]

Также было обнаружено, что в микрокодированных реализациях определенных архитектур сложные операции, как правило, были медленнее, чем последовательность более простых операций, делающих то же самое. Это было отчасти следствием того, что многие проекты были сделаны в спешке, с небольшим временем для оптимизации или настройки каждой инструкции; были оптимизированы только те, которые использовались чаще всего, и последовательность этих инструкций могла быть быстрее, чем менее настроенная инструкция, выполняющая эквивалентную операцию в качестве этой последовательности. Одним из печально известных примеров была инструкция VAXINDEX . [23]

Работа Беркли также выявила ряд дополнительных моментов. Среди них был тот факт, что программы тратили значительное количество времени на выполнение вызовов подпрограмм и возвратов, и казалось, что есть потенциал для улучшения общей производительности за счет ускорения этих вызовов. Это привело к тому, что проект Беркли выбрал метод, известный как окна регистров , который может значительно улучшить производительность подпрограмм, хотя и ценой некоторой сложности. [22] Они также заметили, что большинство математических инструкций были простыми назначениями; только 13 из них фактически выполняли операцию, такую ​​как сложение или вычитание. Но когда эти операции происходили, они, как правило, были медленными. Это привело к гораздо большему акценту на базовом арифметическом блоке данных, в отличие от предыдущих проектов, где большая часть чипа была выделена для управления и микрокода. [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-х годов, что привело, например, к железному закону производительности процессора .

Прототип чипа RISC-V (2013)

С 2010 года в Калифорнийском университете в Беркли разрабатывается новая архитектура набора инструкций с открытым стандартом (ISA), Berkeley RISC-V , для исследовательских целей и в качестве бесплатной альтернативы фирменным ISA. С 2014 года исправлена ​​версия 2 пользовательского пространства ISA. [28] ISA разработана с возможностью расширения от базового ядра, достаточного для небольшого встроенного процессора, до суперкомпьютера и использования облачных вычислений со стандартными и определяемыми разработчиком чипа расширениями и сопроцессорами. Она была протестирована в кремниевой конструкции с ROCKET SoC , которая также доступна как генератор процессоров с открытым исходным кодом на языке CHISEL.

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

В начале 1980-х годов концепция RISC была окружена значительной неопределенностью. Одной из проблем было использование памяти; одна инструкция традиционного процессора, такого как Motorola 68k, могла быть записана как, возможно, полдюжины более простых инструкций RISC. Теоретически это могло замедлить работу системы, поскольку она тратила больше времени на выборку инструкций из памяти. Но к середине 1980-х годов концепции достаточно созрели, чтобы считаться коммерчески жизнеспособными. [16] [25]

Система оценки ARM Acorn (1985)

Коммерческие проекты 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] Успех 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 , ее первоначальная, относительно более низкая реализация энергопотребления и охлаждения вскоре была адаптирована для встраиваемых приложений, таких как обработка растровых изображений лазерного принтера. [31] Acorn, в партнерстве с Apple Inc, и VLSI, создали ARM Ltd, в 1990 году, чтобы разделить расходы на НИОКР и найти новые рынки для ISA, которая в партнерстве с TI, GEC, Sharp, Nokia, Oracle и Digital разрабатывала маломощные и встраиваемые конструкции RISC и нацеливалась на те сегменты рынка, которые в то время были нишевыми. С ростом мобильных, автомобильных, потоковых, интеллектуальных вычислений ARM стала наиболее широко используемой ISA, компания оценивает, что почти половина всех поставленных в истории процессоров были ARM. [32]

Характеристики и философия дизайна

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

Процессор RISC имеет набор инструкций, разработанный для эффективного выполнения конвейерным процессором и для генерации кода оптимизирующим компилятором.

—  Майкл Слейтер, Microprocessor Report [33]

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

Распространенное заблуждение относительно фразы «компьютер с сокращенным набором инструкций» заключается в том, что инструкции просто исключаются, что приводит к меньшему набору инструкций. [34] Фактически, с годами наборы инструкций RISC выросли в размерах, и сегодня многие из них имеют больший набор инструкций, чем многие ЦП CISC. [35] [36] Некоторые процессоры RISC, такие как PowerPC, имеют наборы инструкций, такие же большие, как, например, CISC IBM System/370 ; наоборот, DEC PDP-8 — явно ЦП CISC, поскольку многие из его инструкций включают множественный доступ к памяти — имеет всего 8 основных инструкций и несколько расширенных инструкций. [37] Термин «сокращенный» в этой фразе был предназначен для описания того факта, что объем работы, выполняемой любой отдельной инструкцией, сокращен — максимум один цикл памяти данных — по сравнению со «сложными инструкциями» ЦП CISC, которым могут потребоваться десятки циклов памяти данных для выполнения одной инструкции. [38]

Иногда более предпочтительным является термин «архитектура загрузки-хранения» .

Другой способ взглянуть на спор RISC/CISC — рассмотреть то, что открыто компилятору. В процессоре CISC оборудование может внутренне использовать регистры и бит флага для реализации одной сложной инструкции, такой как STRING MOVE, но скрывать эти детали от компилятора. Внутренние операции процессора RISC «открыты компилятору», что привело к бэкрониму «Relegate Interesting Stuff to the Compiler». [39] [40]

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

Большинство архитектур RISC имеют фиксированную длину инструкций и простое кодирование, что значительно упрощает выборку, декодирование и логику выдачи. Это одна из основных целей подхода RISC. [22]

Часть этого стала возможной только благодаря современному переходу на 32-битные форматы. Например, в типичной программе более 30% всех числовых констант равны 0 или 1, 95% умещаются в один байт, а 99% — в 16-битное значение. [41] Когда компьютеры были основаны на 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 бит содержали фактический код; те, которые использовали немедленное значение, использовали обычное поле кода операции в начале. [42]

Одним из недостатков 32-битных инструкций является сниженная плотность кода, что является более неблагоприятной характеристикой во встраиваемых вычислениях, чем на рынках рабочих станций и серверов, для которых изначально были разработаны архитектуры RISC. Для решения этой проблемы несколько архитектур, таких как SuperH (1992), ARM thumb (1994), [43] MIPS16e (2004), Power Variable Length Encoding ISA (2006), RISC-V и Adapteva Epiphany , имеют дополнительный короткий, сжатый набор инструкций с сокращенными функциями . Как правило, эти инструкции предоставляют меньшее количество регистров и меньше бит для непосредственных значений и часто используют формат с двумя операндами для исключения одного номера регистра из инструкций. Формат с двумя операндами в системе с 16 регистрами требует 8 бит для номеров регистров, оставляя еще 8 для кода операции или других целей. SH5 также следует этой модели, хотя и развивается в противоположном направлении, добавляя более длинные 32-битные инструкции к исходной 16-битной кодировке.

Использование оборудования

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

Другие особенности архитектур RISC включают в себя:

Конструкции RISC также, скорее всего, будут использовать модель памяти Гарварда , в которой поток инструкций и поток данных концептуально разделены; это означает, что изменение памяти, в которой хранится код, может не оказать никакого влияния на инструкции, выполняемые процессором (поскольку ЦП имеет отдельный кэш инструкций и данных ), по крайней мере, до тех пор, пока не будет выдана специальная инструкция синхронизации; процессоры CISC, имеющие отдельные кэши инструкций и данных, обычно автоматически синхронизируют их для обеспечения обратной совместимости со старыми процессорами.

Многие ранние разработки RISC также имели общую характеристику наличия слота задержки перехода , пространства инструкций, следующего сразу за переходом или переходом. Инструкция в этом пространстве выполняется независимо от того, выполняется переход или нет (другими словами, эффект перехода задерживается). Эта инструкция держит АЛУ ЦП занятым в течение дополнительного времени, обычно необходимого для выполнения перехода. В настоящее время слот задержки перехода считается неприятным побочным эффектом определенной стратегии реализации некоторых разработок RISC, и современные разработки RISC обычно избавляются от него (например, PowerPC и более поздние версии SPARC и MIPS). [ необходима цитата ]

Некоторые аспекты, приписываемые первым RISC- маркированным проектам около 1975 года, включают наблюдения, что компиляторы с ограниченной памятью того времени часто не могли воспользоваться функциями, предназначенными для облегчения ручного ассемблерного кодирования, и что сложные режимы адресации требуют много циклов для выполнения из-за требуемых дополнительных доступов к памяти. Утверждалось [ кем? ] , что такие функции будут лучше выполняться последовательностями более простых инструкций, если это может дать реализации, достаточно малые, чтобы оставить место для многих регистров, сокращая количество медленных доступов к памяти. В этих простых проектах большинство инструкций имеют одинаковую длину и схожую структуру, арифметические операции ограничены регистрами ЦП, и только отдельные инструкции загрузки и сохранения обращаются к памяти. Эти свойства позволяют лучше балансировать этапы конвейера, чем раньше, делая конвейеры RISC значительно более эффективными и допуская более высокие тактовые частоты .

Еще одним стимулом как RISC, так и других конструкций стали практические измерения реальных программ. Эндрю Таненбаум подытожил многие из них, продемонстрировав, что процессоры часто имели слишком большие непосредственные значения. Например, он показал, что 98% всех констант в программе уместятся в 13 битах , однако многие конструкции ЦП выделяли 16 или 32 бита для их хранения. Это говорит о том, что для уменьшения количества обращений к памяти машина фиксированной длины могла бы хранить константы в неиспользуемых битах самого командного слова, так что они были бы немедленно готовы, когда они понадобятся ЦП (во многом похоже на непосредственную адресацию в обычной конструкции). Это требовало небольших кодов операций, чтобы оставить место для константы разумного размера в 32-битном командном слове.

Поскольку многие реальные программы тратят большую часть своего времени на выполнение простых операций, некоторые исследователи решили сосредоточиться на том, чтобы сделать эти операции как можно более быстрыми. Тактовая частота ЦП ограничена временем, необходимым для выполнения самой медленной подоперации любой инструкции; уменьшение этого времени цикла часто ускоряет выполнение других инструкций. [45] Сосредоточение на «сокращенных инструкциях» привело к тому, что полученная машина была названа «компьютером с сокращенным набором инструкций» (RISC). Цель состояла в том, чтобы сделать инструкции настолько простыми, чтобы их можно было легко конвейеризировать, чтобы достичь пропускной способности одного такта на высоких частотах . Это контрастировало с конструкциями CISC, чьи «критические арифметические операции и передачи регистров» считались сложными для конвейеризации. [46]

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

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

Некоторые процессоры были специально разработаны с очень небольшим набором инструкций, но эти конструкции сильно отличаются от классических конструкций RISC, поэтому им дали другие названия, такие как компьютер с минимальным набором инструкций (MISC) или архитектура с транспортным запуском (TTA).

Архитектуры RISC традиционно имели мало успеха на рынках настольных ПК и серверов, где платформы на базе x86 остаются доминирующей архитектурой процессоров. Однако это может измениться, поскольку процессоры на базе ARM разрабатываются для более производительных систем. [48] Производители, включая Cavium , AMD и Qualcomm, выпустили серверные процессоры на базе архитектуры ARM. [49] [50] ARM дополнительно заключила партнерство с Cray в 2017 году для производства суперкомпьютера на базе ARM. [51] Что касается настольных компьютеров, Microsoft объявила, что планирует поддерживать версию Windows 10 для ПК на устройствах на базе Qualcomm Snapdragon в 2017 году в рамках своего партнерства с Qualcomm. Эти устройства будут поддерживать приложения Windows, скомпилированные для 32-битной x86 через эмулятор процессора x86 , который транслирует 32-битный код x86 в код ARM64 . [52] [53] Apple объявила, что переведет свои настольные компьютеры и ноутбуки Mac с процессоров Intel на разработанные внутри компании SoC на базе ARM64 под названием Apple Silicon ; первые такие компьютеры, использующие процессор Apple M1 , были выпущены в ноябре 2020 года. [54] Компьютеры Mac с Apple Silicon могут запускать двоичные файлы x86-64 с помощью Rosetta 2 , транслятора x86-64 в ARM64. [55]

Однако за пределами настольных компьютеров архитектура ARM RISC широко используется в смартфонах, планшетах и ​​многих видах встраиваемых устройств. Хотя ранние разработки RISC значительно отличались от современных разработок CISC, к 2000 году самые производительные процессоры в линейке RISC были почти неотличимы от самых производительных процессоров в линейке CISC. [56] [57] [58]

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

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

Бюджетные и мобильные системы

К началу 21-го века большинство бюджетных и мобильных систем полагались на RISC-архитектуру. [60] Вот некоторые примеры:

Настольные компьютеры и ноутбуки

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

Открытый исходный код, стандартный или использование

Архитектуры RISC стали популярными в процессорах с открытым исходным кодом и программных микропроцессорах , поскольку они относительно просты в реализации, что делает их подходящими , например, для реализаций FPGA и прототипирования. Вот некоторые примеры:

Награды

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

Смотрите также

Ссылки

  1. ^ Чен, Кристал; Новик, Грег; Шимано, Кирк. «Конвейеризация». Архитектура RISC .
  2. ^ ab Flynn, Michael J. (1995). Архитектура компьютера: конвейерное и параллельное проектирование процессоров . Jones & Bartlett Learning. стр. 54–56. ISBN 0867202041.
  3. ^ Колвелл, Роберт П.; Хичкок III, Чарльз И.; Дженсен, Э. Дуглас; Спрунт, Х. М. Бринкли; Коллар, Чарльз П. (сентябрь 1985 г.). «Наборы инструкций и не только: компьютеры, сложность и противоречия» (PDF) . Компьютер . IEEE. стр. 8–19.
  4. ^ Aletan, Samuel O. (1 апреля 1992 г.). «Обзор архитектуры RISC». Труды симпозиума ACM/SIGAPP 1992 г. по прикладным вычислениям: технологические проблемы 1990-х гг . SAC '92. Канзас-Сити, Миссури: Ассоциация вычислительной техники . стр. 11–20. doi :10.1145/143559.143570.
  5. ^ Маркофф, Джон (ноябрь 1984 г.). «Новые чипы — чипы RISC». Byte . Т. 9, № 12. McGraw-Hill. С. 191–206.
  6. ^ Boursin de l'Arc, Philippe. "Histoire de l'Informatique et d'Internet". boursinp.free.fr.
  7. ^ Manuel, Tom (3 September 1987). "Inside Technology — The Frantic Search for More Speed" (PDF). Electronics. McGraw-Hill. pp. 59–62.
  8. ^ "Japan's Fugaku gains title as world's fastest supercomputer". RIKEN. Retrieved 24 June 2020.
  9. ^ Fisher, Joseph A.; Faraboschi, Paolo; Young, Cliff (2005). Embedded Computing: A VLIW Approach to Architecture, Compilers and Tools. Elsevier. p. 55. ISBN 1558607668.
  10. ^ Reilly, Edwin D. (2003). Milestones in computer science and information technology. Greenwood Publishing. pp. 50. ISBN 1-57356-521-0.
  11. ^ Grishman, Ralph (1974). Assembly Language Programming for the Control Data 6000 Series and the Cyber 70 Series. Algorithmics Press. p. 12. OCLC 425963232.
  12. ^ Dongarra, Jack J.; et al. (1987). Numerical Linear Algebra on High-Performance Computers. pp. 6. ISBN 0-89871-428-1.
  13. ^ a b c Cocke, John; Markstein, Victoria (January 1990). "The evolution of RISC technology at IBM" (PDF). IBM Journal of Research and Development. 34 (1): 4–11. doi:10.1147/rd.341.0004.
  14. ^ IBM System/370 System Summary (Technical report). IBM. January 1987.
  15. ^ Šilc, Jurij; Robič, Borut; Ungerer, Theo (1999). Processor architecture: from dataflow to superscalar and beyond. Springer. pp. 33. ISBN 3-540-64798-8.
  16. ^ a b c d e f Funding a Revolution: Government Support for Computing Research by Committee on Innovations in Computing and Communications 1999 ISBN 0-309-06278-0 page 239
  17. ^ Nurmi, Jari (2007). Processor design: system-on-chip computing for ASICs and FPGAs. Springer. pp. 40–43. ISBN 978-1-4020-5529-4.
  18. ^ Hill, Mark Donald; Jouppi, Norman Paul; Sohi, Gurindar (1999). Readings in computer architecture. Gulf Professional. pp. 252–4. ISBN 1-55860-539-8.
  19. ^ Starnes, Thomas (May 1983). "Design Philosophy Behind Motorola's MC68000". Byte. p. Photo 1.
  20. ^ Patterson, David (30 May 2018). "RISCy History". AM SIGARCH.
  21. ^ a b c "Example: Berkeley RISC II". Archived from the original on 13 June 2022.
  22. ^ abcdefghij Паттерсон, Дэвид А.; Сиквин, Карло Х. (1981). RISC I: СБИС-компьютер с сокращенным набором команд. 8-й ежегодный симпозиум по архитектуре компьютеров. Миннеаполис, Миннесота, США. С. 443–457. doi :10.1145/285930.285981.В формате PDF
  23. ^ ab Patterson, DA ; Ditzel, DR (1980). «Дело в пользу компьютера с сокращенным набором команд». ACM SIGARCH Computer Architecture News . 8 (6): 25–33. CiteSeerX 10.1.1.68.9623 . doi :10.1145/641914.641917. S2CID  12034303. 
  24. ^ Sequin, Carlo; Patterson, David (июль 1982). Проектирование и реализация RISC I (PDF) . Продвинутый курс по архитектуре СБИС. Университет Бристоля. CSD-82-106.
  25. ^ abcd Chow, Paul (1989). Микропроцессор MIPS-X RISC . Springer. стр. xix–xx. ISBN 0-7923-9045-8.
  26. ^ ab Nurmi 2007, стр. 52–53
  27. ^ Уивер, Винсент; Макки, Салли. Проблемы плотности кода для новых архитектур (PDF) . ICCD 2009.
  28. ^ Уотерман, Эндрю; Ли, Юнсап; Паттерсон, Дэвид А.; Асанови, Крсте. «Руководство по набору инструкций RISC-V, том I: Базовый пользовательский уровень ISA версии 2.0». Калифорнийский университет в Беркли. Технический отчет EECS-2014-54 . Получено 1 марта 2022 г.
  29. ^ Гарнси, Элизабет; Лоренцони, Джанни; Ферриани, Симоне (март 2008 г.). «Видообразования через предпринимательский спин-офф: история Acorn-ARM» (PDF) . Исследовательская политика . 37 (2): 210–224. doi :10.1016/j.respol.2007.11.006. S2CID  73520408 . Получено 2 июня 2011 г. . [...] первый кремний был запущен 26 апреля 1985 г.
  30. ^ Такер, Аллен Б. (2004). Справочник по информатике . Тейлор и Фрэнсис. стр. 100–6. ISBN 1-58488-360-X.
  31. ^ "Оливетти покупает карту RISC". Пользователь Acorn . Август 1988. С. 7. Получено 24 мая 2021 г.
  32. ^ "ARM ищет рост за пределами смартфонов". www.ft.com . Получено 23 июня 2024 г. .
  33. ^ Слейтер, Майкл (июнь 1990 г.). «Что такое RISC?». IEEE Micro . стр. 96–95 . Получено 20 марта 2023 г.
  34. ^ Эспонда, Маргарита; Рохас, Рауль (сентябрь 1991 г.). «Раздел 2: Путаница вокруг концепции RISC». Концепция RISC — обзор реализаций . Свободный университет Берлина. Б-91-12.
  35. ^ Стоукс, Джон «Ганнибал». «RISC против CISC: эпоха после RISC». Ars Technica .
  36. ^ Борретт, Ллойд (июнь 1991 г.). «RISC против CISC». Австралийский персональный компьютер .
  37. ^ Джонс, Дуглас В. «Часто задаваемые вопросы о DEC PDP-8 от Дуга Джонса». Коллекция PDP-8, Кафедра компьютерных наук Университета Айовы .
  38. ^ Дандамуди, Сиварама П. (2005). "Гл. 3: Принципы RISC". Руководство по процессорам RISC для программистов и инженеров . Springer. стр. 39–44. doi :10.1007/0-387-27446-4_3. ISBN 978-0-387-21017-9. главной целью было не сокращение количества инструкций, а их сложность
  39. Уоллс, Колин (18 апреля 2016 г.). «CISC и RISC».
  40. ^ Фишер, Джозеф А.; Фарабоски, Паоло; Янг, Клифф (2005). Встроенные вычисления: подход VLIW к архитектуре, компиляторам и инструментам. Elsevier. стр. 57. ISBN 9781558607668.
  41. ^ Александр, В. Грегг; Вортман, Дэвид (ноябрь 1975 г.). «Статические и динамические характеристики программ XPL». IEEE Computer . 8 (11): 41–48. doi :10.1109/CM.1975.218804. S2CID  39685209.
  42. ^ Соарес, Жуан; Роша, Рикардо. «Кодирование инструкций MIPS» (PDF) .
  43. Staff, Embedded (24 сентября 2003 г.). «ARM Thumb Instruction Set». Embedded.com . Получено 23 июня 2024 г. .
  44. ^ Колвелл, Роберт П.; Хичкок III, Чарльз И.; Дженсен, Э. Дуглас; Спрунт, Х. М. Бринкли; Коллар, Чарльз П. (сентябрь 1985 г.). «Наборы инструкций и не только: компьютеры, сложность и противоречия». Компьютер . 18 (9). Институт инженеров по электротехнике и электронике, Inc.: 8–19. doi :10.1109/MC.1985.1663000. S2CID  7306378. Получено 25 марта 2023 г.
  45. ^ «Микропроцессоры с точки зрения программиста» Эндрю Шульмана, 1990 г.
  46. ^ Sweetman, Dominic (1987). "Рабочая станция RISC". Труды конференции, состоявшейся в Computer Graphics 87, Лондон, октябрь 1987 г. Онлайн-публикации. стр. 83–91. ISBN 0-86353-092-3. Получено 26 марта 2024 г. .
  47. ^ Дауд, Кевин; Лукидес, Майкл К. (1993). Высокопроизводительные вычисления. O'Reilly. ISBN 1565920325.
  48. ^ Vincent, James (9 March 2017). "Microsoft unveils new ARM server designs, threatening Intel's dominance". The Verge. Retrieved 12 May 2017.
  49. ^ Russell, John (31 May 2016). "Cavium Unveils ThunderX2 Plans, Reports ARM Traction is Growing". HPC Wire. Retrieved 8 March 2017.
  50. ^ AMD's first ARM-based processor, the Opteron A1100, is finally here, ExtremeTech, 14 January 2016, retrieved 14 August 2016
  51. ^ Feldman, Michael (18 January 2017). "Cray to Deliver ARM-Powered Supercomputer to UK Consortium". Top500.org. Retrieved 12 May 2017.
  52. ^ "Microsoft is bringing Windows desktop apps to mobile ARM processors". The Verge. 8 December 2016. Retrieved 8 December 2016.
  53. ^ "How x86 emulation works on ARM". Microsoft Docs. 23 October 2023. Retrieved 27 October 2023.
  54. ^ a b "Introducing the next generation of Mac" (Press release). Apple Inc. 10 November 2020.
  55. ^ "macOS Big Sur is here" (Press release). Apple Inc. 12 November 2020.
  56. ^ Carter, Nicholas P. (2002). Schaum's Outline of Computer Architecture. McGraw Hill Professional. p. 96. ISBN 0-07-136207-X.
  57. ^ Jones, Douglas L. (2000). "CISC, RISC, and DSP Microprocessors" (PDF).
  58. ^ Singh, Amit. "A History of Apple's Operating Systems". Archived from the original on 3 April 2020. the line between RISC and CISC has been growing fuzzier over the years
  59. ^ "Top 500 The List: November 2020". TOP 500. Retrieved 2 January 2021.
  60. ^ Dandamudi 2005, pp. 121–123
  61. ^ Bennett, Amy (2005). "Apple shifting from PowerPC to Intel". Computerworld. Archived from the original on 13 November 2020. Retrieved 24 August 2020.
  62. ^ Vaughan-Nichols, Steven J. "Review: The ARM-powered Samsung Chromebook". ZDNet. Retrieved 28 April 2021.
  63. ^ DeAngelis, Marc (22 June 2020). "Apple starts its two-year transition to ARM this week". Engadget. Retrieved 24 August 2020. Apple has officially announced that it will be switching from Intel processors to its own ARM-based, A-series chips in its Mac computers.
  64. ^ Smith, Chris (16 September 2020). "Microsoft to launch a new ARM-based Surface this fall". Boy Genius Report. Retrieved 20 March 2023.
  65. ^ "ARM Processor - AWS Graviton Processor - AWS". Amazon Web Services, Inc. Retrieved 9 January 2024.
  66. ^ "Wave Computing Shutters MIPS Open Programme with Immediate Effect". AB Open. 15 November 2019. Retrieved 23 June 2024.
  67. ^ "Branding Guidelines – RISC-V International". Retrieved 23 June 2024.
  68. ^ "Arm Expands Design Possibilities with Free Cortex-M Processors for Xilinx FPGAs". Arm Newsroom. Retrieved 23 June 2024.
  69. ^ "Recipients of the Charles Stark Draper Prize for Engineering". nae.edu.
  70. ^ "Charles Stark Draper Prize for Engineering". nae.edu.

External links