Ретроспективный взгляд на развитие микропроцессоров CISC, RISC, MIPS, ARM
С момента разработки первой в мире интегральной схемы в 1959 году прошло несколько десятков лет. Все эти годы аппаратные реализации вычислительных устройств, словно древние организмы «Мезозойской эры», претерпевали многочисленные изменения.
Они эволюционировали под «давлением» разума своих создателей — ученых и инженеров, перебирающих десятки вариантов технических решений и стремящихся найти наиболее эффективную реализацию, унифицировать и оптимизировать вычисления.
В итоге это привело к тому, что элементы аппаратной части стали превращаться в элементы программной. Программный уровень, представляющий собой определенный набор инструкций, выполняемых устройством, стал усложняться.
Потребовалась структура — простая, понятная и эффективная.
Таким образом стали зарождаться «архитектуры набора инструкций» («instruction set architecture», ISA) — способы организации программного кода, обрабатываемого ядром микропроцессора.
Маленький 4-битный «таракан» — Intel 4004
Микропроцессор Intel 4004 с 16 пинами, поступивший в продажу 15 ноября 1971 года, можно считать первопроходцем среди серийных коммерческих микропроцессоров.
Можно сказать, исторически именно с него начался долгий эволюционный процесс унификации и «архитектуризации» микропроцессоров, которые продавались сторонним разработчикам вычислительного оборудования.
За 2 года до своего появления (в 1969 году) японская компания Nippon Calculating Machine попросила Intel разработать специальный набор интегральных схем для своего инженерного прототипа калькулятора Busicom 141-PF.
Intel тогда была небольшим стартапом, у которого не было собственного серийного продукта. Поэтому, как это делали многие стартапы, чтобы «держаться на плаву», Intel периодически брали в работу индивидуальные заказы. Busicom был одним из таких клиентов.
На тот момент главным инженером Intel был Федерико Фаджин — физик и электротехник итальянского происхождения. Именно он стал руководителем проекта по разработке новой архитектуры микросхем для семейства калькуляторов Busicom. А если точнее — он стал одним из изобретателей микропроцессора как такового.
До того, как попасть в Intel, Фаджин успел разработать технологию кремниевых МОП-затворов (металл-оксид-полупроводник) в компании Fairchild Semiconductors (которая изобрела первую в мире интегральную схему в 1959 году).
Существующий прототип калькулятора Busicom был очень сложный. Внутри было 12 связанных между собой микросхем. Инженеры Intel боялись, что производить такое количество чипов будет очень сложно — для соединения системы потребуется много контактов на чип, что проблематично для используемой тогда технологии керамической упаковки. Intel решила идти по пути упрощения и унификации архитектуры за счет сокращения числа микросхем.
Самый очевидный вариант — замена аппаратной логики на программную. По сути, это общий тренд не только того времени, но и сегодняшнего тоже.
В итоге Intel последовательно разработала набор из 4-х микросхем, который назывался MCS-4 и планировался использоваться в калькуляторах Busicom:
4001: 256-байтовая микросхема памяти программ с 4-битным портом ввода-вывода
4002: 40-байтовую микросхему памяти данных DRAM с 4-битным выходным портом
4003: микросхема для периферийного интерфейса ввода-вывода
4004: 4-битный центральный процессор
Последний в этом списке, микропроцессор Intel 4004 оказался настолько универсальным, что мог использоваться в любых других приложениях, отличных от калькулятора.
Из битности микропроцессора вытекает понятие «разрядности». Intel 4004 был 4-разрядным. Это означает, что максимальный размер информации (машинного слова), которую он мог обрабатывать за один такт — 4 бита.
Исторически разрядность (битность) микропроцессоров росла. Сегодня часто фигурирует 32 и 64-битная разрядность. Последняя, например, отличается тем, что способна работать с оперативной памятью, превышающей объем 4 ГБ.
По сути, очередная «подработка» Intel, основной задачей которой была разработка специализированного устройства под задачи калькулятора, почти случайно привела компанию к созданию универсальной микросхемы, способной обрабатывать самые разные (для того времени) программы.
Таким образом, 4004 обещал стать полноценным серийным продуктом компании. И стал!
Intel и Фаджин провели переговоры с заказчиком разработки, Busicom, и получили исключительные права на микропроцессор 4004, который изначально разрабатывался персонально для Busicom. За счет этого Intel 4004 превратился в самостоятельный коммерческий продукт.
В то время Intel находился на рынке крупных компьютерных компаний. Грубо говоря, в разработке «железа» того времени не было такого разделения труда, которое есть сегодня — одни производят микросхемы, другие видеокарты, третьи материнские платы и так далее.
Поэтому Intel опасались, что производители вычислительных устройств будут рассматривать их как прямого конкурента, а не как партнера-поставщика микропроцессоров.
Еще одна проблема, с которой столкнулся Intel после выпуска универсального процессора — кто-то должен был писать программное обеспечение под него. Не кто-то конкретный в компании, а вообще в целом в мире.
Ведь программисты того времени считали престижным работать только с большими полноценными компьютерами. Их было сложно убедить работать с маленьким микропроцессором.
Тем не менее Intel придумали решение для стимуляции программистов. Они предлагали колледжам некое бесплатное оборудование собственного производства в обмен на помощь в написании ПО.
Идея работала, но по итогу оказалась не нужна. Как только Intel запустили рекламу микропроцессора, в дверь компании начали стучаться толпы энтузиастов, желающих протестировать Intel 4004 в своих проектах.
В 1972 году Intel 4004 продавался по 60 долларов за штуку. За все время было произведено около 1 миллиона экземпляров.
Помимо калькуляторов, 4004 использовался в игровых автоматах, контроллерах светофоров, кассовых аппаратах, банковских терминалах, анализаторах крови и мониторах заправочных станций.
Вначале был CISC...
Вскоре после 4004 Intel выпустила новый 8-битный микропроцессор 8008. Далее выходили 8080, 8085, а также 16-битный 8086.
В те же годы стали выпускаться 8-битные микропроцессоры от других производителей:
Motorola 6800 (1974 год)
General Instrument PIC16X (1975 год)
MOS Technology 6502 (1975 год)
Zilog Z80 (1976 год)
Motorola 6809 (1978 год)
Базовый набор команд, заложенный в микропроцессоры Intel 8086, до сих пор используется в современных персональных компьютерах на базе Intel.
Само название «8086» является продуктом долгой метаморфозы. Intel начали с 4004, который был 4-битным процессоров. После этого они построили 8-битный и заменили 4 на 8, получив 8008.
Далее появился 8080, который остался таким же 8-битным, но получил большее адресное пространство — пару восьмерок в названии сохранили, однако вторую сдвинули влево на разряд.
Новый Intel 8085, в отличие от 8080, требовал лишь один источник питания +5В — в остальном он ничем не отличался от 8080. Поэтому добавление цифры 5 в конец — очевидный указатель на эту особенность.
Появление название 8086 не совсем очевидно. С одной стороны, это указатель на следующую версию процессора после 8085 — в этом случае к 85 прибавляется 1. С другой стороны, цифра 6 в конце указывает на 16-битную разрядность изделия.
По итогу, процессоры, выходящие после Intel 8086, стали называться «семейством x86».
Некоторые из них сохранили число «86» в названии:
8086
80186
80286 (i286)
80386 (i386)
80486 (i486)
Все эти процессоры (как и вышедшие после серии Pentium, Celeron, Core, Xeon и т.д.) построены на базе архитектуры CISC (complex instruction set computer), которая обладает рядом важных особенностей:
длина команды, которая передается в регистры, произвольна, но, как правило, велика,
необходимые для выполнения арифметические действия кодируются сразу в одной команде,
число регистров относительно невелико, при этом многие из них заточены под конкретную специализированную функцию.
Регистром называется поле определенной длины, которое размещается в сверхбыстрой памяти процессора. Команды программ из оперативной памяти попадают в регистр, после чего микропроцессор обрабатывает их.
Тем не менее чипы на базе CISC было «громоздкими» и дорогими, а их производительность оставляла желать лучшего. Архитектура CISC требовала своего переосмысления и улучшения.
«Рождение» RISC
Первые попытки в IBM
В начале 1970-х годов мейнфреймы (так называют огромные компьютеры) IBM доминировали на рынке мощных компьютеров.
В то время IBM инвестировала 5 миллиардов долларов в разработку новой компьютерной системы «System/360», а несколькими годами позже был представлен ее приемник — «System/370».
Именно с этих разработок зародилось понятие «мейнфрейма» (так называют большие отказоустойчивые компьютерные системы), которое происходит от названия типовых телекоммуникационных стоек этих систем.
В период с 1960-х до 1980-х годов System/360 от IBM была лидером на рынке. Её клоны выпускались во многих странах — даже в СССР (ЕС ЭВМ).
И у System/360, и у System/370 обрабатывали множество сложных инструкций. Некоторые из них были длинными и выполняли несколько действий за раз.
Например, читали несколько элементов данных из одной части оперативной памяти, выполняли над ними манипуляции, а затем записывали эти данные в другую часть оперативной памяти — все это была одна инструкция.
Такая сложность была продиктована медленным доступом к памяти. Компьютеры загружали в регистры сразу «пачку» действий и выполняли их, тем самым сокращая количество доступов к памяти и увеличивая скорость своей работы.
Устройство System/360 System/370 можно считать одним из ранних примеров архитектуры CISC. Аналогичный способ обработки команд был реализован не только в мейнфреймах, но и в микропроцессорах семейства x86 от Intel.
Все изменилось, когда в 1971 году телефонная компания Ericsson обратилась к IBM с предложением о партнерстве в разработке новых телефонных систем. Благодаря сотрудничеству IBM и Ericsson могли составить серьезную конкуренцию другому гиганту — AT&T.
Еще тогда было понятно, что архитектура, используемая в System/370, не подойдет для нужд телефонии — производительность низкая, стоимость высокая.
По итогу партнерство не вышло (Ericsson не сошлись на условиях), но идейное зерно было посеяно — IBM принялись за разработку новой технологии без Ericsson.
Уже в 1974 году IBM собрала команду примерно из 20 инженеров и начала работу над телефонным коммутатором. Руководителем стал Джоэл Бирнбаум — на тот момент директор IBM Research (подразделение головной компании).
Примечательна одна деталь. Разработка происходила в «Исследовательском центре Томаса Уотсона» в штате Нью-Йорк, который был назван в честь двух генеральных директоров IBM — Томаса Джона Уотсона (старший) и Томаса Джона Уотсона (младший).
Строение, в котором собирались инженеры, имело номер «801». Именно это число стало названием нового центрального процессора, который был призван стать «сердцем» нового телефонного коммутатора — «IBM 801».
По скромным подсчетам, IBM требовался коммутатор, способный обрабатывать 1 000 000 вызовов в час (около 300 вызовов в секунду). Каждый вызов — это примерно 20 000 инструкций. Машина, способная выдерживать такие нагрузки, должна обладать производительностью примерно в 12 000 000 IPS.
Для сравнения, Intel 8086 имел показатель производительности в 0,33 MIPS. В это время System/370 целиком выдавал только 3 MIPS.
IPS (instructions per second) — значение, которое показывает число определённых инструкций, выполняемых процессором за одну секунду.
1 kIPS = 103 IPS = 1 000 IPS
1 MIPS = 106 IPS = 1 000 000 IPS
1 GIPS = 109 IPS = 1 000 000 000 IPS
1 TIPS = 1012 IPS = 1 000 000 000 000 IPS
Ведущей фигурой в группе инженеров был научный сотрудник IBM Джон Кок. Он был одним из разработчиков серии мейнфреймов IBM 7030 Stretch, которые выпускались еще до System/360 и System/370.
Участие Кока во всех этих проектах сеяли в его сознании семена сомнений относительно того подхода, который использовала IBM в своих компьютерах.
У Кока и его команды был важный инструмент, который позволил найти слабое место используемой на тот момент архитектуры CISC — инженеры располагали так называемой «трассировкой инструкций» (instruction traces), которая представляла собой подробную информацию о схемах выполнения программ на System/360.
Эти трассировки четко показывали, что на мейнфреймах IBM чаще всего выполнялись довольно простые инструкции.
Для инженеров IBM это стало неожиданностью. Загрузка, сохранение, переход и парочка других простых операций с регистрами полностью доминировали в наборе инструкций, который содержался в среднестатистической программе, исполняемой на мейнфреймах IBM.
При этом сами сложные инструкции, как правило, манипулировали маленьким объемом данных. Поэтому выполнение небольшого количества простых инструкций вместо одной сложной было бы намного быстрее.
Вооружившись этой информацией, команда приступила к разработке совершенно новой архитектуры.
Идеи, которые планировалось использовать в новом проекте, были не новыми, однако именно здесь они впервые были собраны вместе.
Например, в новом устройстве решили использовать подход «Загрузка-Сохранение», при котором архитектура будет базироваться на простых инструкциях «загрузки» и «сохранения» (записи) — это будет единственный способ доступа и изменения памяти.
Похожий подход использовался в суперкомпьютере Control Data 6600, выпущенном компанией Control Data Corporation в 1964 году.
В свою очередь, такая реализация помогает создать конвейерную обработку команд, при которой одна инструкция может выполняться в тот же самый момент, когда другая инструкция загружается из оперативной памяти.
Затем был добавлен кэш инструкций, который размещается отдельно от кэша данных. Это еще сильнее сократило задержки при доступе к памяти — часто используемые инструкции (по сути, части машинного кода программы) доставались сразу из кэша.
Кэш инструкций, например, актуален при выполнении циклов. Повторяющиеся действия (последовательности инструкции) сохраняются в кэш инструкций и «достаются» оттуда при каждой итерации без обращения к более медленной оперативной памяти.
Помимо аппаратной разработки, команда IBM работала над специальным компилятором, который «оборачивает» низкоуровневый язык ассемблера.
Так появился язык программирования «PL/0.8» — урезанная версия ранее существовавшего языка IBM PL/1. Последний считался слишком «богатым» на команды для новой унифицированной архитектуры.
В сети невозможно найти ни одной фотографии непосредственно с IBM 801. Причина в том, что новое устройство с этим кодовым названием существовало только в виде прототипа в увеличенном масштабе.
801-й был построен на уже готовых логических микросхемах (в первых версиях было около 7600 логических элементов) производства Motorola, которые были установлены на нескольких печатных платах. Платы были расположены полукругом и соединены в центре, чтобы уменьшить расстояние между компонентами.
По сути, это даже не полноценное устройство (и уж тем более не готовый продукт), а лишь громоздкий стенд, демонстрирующий работу новой архитектуры, которая существовала исключительно в виде теории.
Как это бывает со многими внутренними разработками технологических компаний, которые по тем или иным причинам не нашли коммерческой точки приложения, и IBM 801 «отложили» на дальнюю полку.
Руководство IBM отказалось от превращения 801 в полноценный проект. Парадоксально, но в те времена большинство разработчиком стремилось перенести программные реализации на аппаратные ради повышения эффективности своих устройств.
Например, популярный в 1970-е годы суперкомпьютер VAX 11-780 на аппаратном уровне имел около 280 инструкций машинного языка.
IBM 801, напротив, двигался в обратном направлении. Он стремился сэкономить микросхемы, сократить длину путей и число аппаратных функции, «заворачивая» логику устройства в лаконичный код.
IBM 801 — своего рода «призрак» RISC-архитектуры, который нельзя назвать ни микропроцессором, ни миникомпьютером.
Именно он положил начало RISC (reduced instruction set computer), которая стала противоположной CISC методике построения команд. Однако известность RISC приобрел уже за пределами IBM.
Более того, ни Джон Кок, ни команда IBM никогда не придумывали термин «компьютер с сокращенным набором команд». Термин RISC был изобретен немного позже Дэвидом Паттерсоном в городе Беркли штата Колифорния внутри Стэнфордского университета.
В архитектуре RISC инструкции существуют в упрощенном виде и обладают фиксированной длиной, за счет чего увеличивают быстродействие вычислительного устройства.
Каждая инструкция выполняет только одну функцию за один такт процессора — например, копирует значение из оперативной памяти в регистр микропроцессора.
По этой причине микропроцессору на базе RISC требуется большее число инструкций для выполнения задач, однако короткие инструкции выполняются быстрее длинных.
В телевизионных дебатах 1986 года в одном из эпизодов телепередачи «Компьютерные хроники», Джоэл Бирнбаум объясняет довольно простым языком, в чем основной смысл RISC.
… идея состоит в том, что компьютеры проводят большую часть своего времени, делая несколько простых вещей и не часто выполняют сложные вещи. Итак, идея заключается в том, что если вы делаете простейшие вещи как можно лучше, а сложные вещи как можно реже, то у вас может получиться машина, которая будет более эффективной, чем те, которые платят за сложность во всех вещах...
По сути, основной смысл RISC не в том, чтобы разбить большие инструкции на мелкие. Смысл в том, чтобы выполнять простые вещи чаще, а сложные — реже. Модификация инструкций — лишь способ достижения этой цели.
Надо сказать, что Intel 386 был последним микропроцессором компании с классической CISC-архитектурой. Столкнувшись с ограничениями по повышению производительности, Intel стала использовать RISC-ядро и другие элементы RISC-архитектуры.
Тем не менее микропроцессоры семейства x86 по-прежнему являются CISC-совместимыми — любые внешние инструкции CISC преобразуются во внутренние команды RISC.
Например, сложная (и длинная) CISC-инструкция может породить несколько коротких RISC-команд. По сути, такие микропроцессоры можно считать гибридными.
Такая гибридная конфигурация привела к тому, что большая часть площади кристалла современных микропроцессоров семейства x86 занимают элементы, предназначенные для «конвертации» CISC-инструкций в RISC-команды.
Полноценный RISC из Беркли
Дэвид Паттерсон был бакалавром по математике и борцом, когда в 1969 году решил попробовать курсы компьютерного программирования. Забавно, но именно это оказалось важным моментом не только в его жизни, но и в истории вычислений в целом.
Уже в 1970 году Паттерсон получил степень магистра компьютерных наук, а спустя 7 лет защитил докторскую диссертацию. На этом «учеба» (ему было уже 29 лет) Паттерсона закончилась и началась профессиональная карьера — Дэвид был принят на работу на факультет компьютерных наук Калифорнийского университета в городе Беркли. Там он познакомился с другим инженером — Карло Секвином.
Параллельно академической деятельности Паттерсона «подрабатывал» в компании Digital Equipment Corporation (DEC), занимаясь разного рода проектами с использованием ранее упомянутого суперкомпьютера VAX 11-780.
В обязанности Паттерсона входило исправление ошибок в микрокоде этого устройства — на это занятие уходило приличное количество времени. В какой-то момент Паттерсон понял, что архитектура системы слишком сложна — упрощение набора инструкций могло бы существенно уменьшить количество ошибок и сократить объемы работ.
Собственно, со своим коллегой по университету в Беркли, Карло Секвини, Паттерсон решил проверить гипотезу и начал проводить анализ. Оба специалиста заметили, что компиляторы высокоуровневых языков (например, C) на самом деле используют довольно небольшой набор ключевых инструкций, а остальные (зачастую более сложные) реализуются намного реже.
По сути, Паттерсон и Секвин пришли к тому же выводу, что и инженеры IBM. Они поняли, что общую производительность можно улучшить, оптимизировав аппаратное сочетание инструкций и памяти на одном кристалле.
Упрощение процессора на уровне команд позволит выделить больше места под память и при этом уменьшить общие затраты. Унификация набора команд — эффективный способ упрощения процессора.
Таким образом Петтерсон и Секвин вывели термин «Restricted (reduced) instruction set computer» или «Компьютер с ограниченным (уменьшенным) набором команд» — RISC.
Проект для проверки гипотезы назвали RISC-I (изначально рабочим названием было «Gold»), а в команду разработки набрали студентов.
Интересно, что после старта проекта команда Беркли узнала об устройстве IBM 801, разработанном командой Джона Кока. Более того, в 1981 году Джон Кок лично приезжал в Беркли, чтобы поговорить с командой студентов и преподавателей, работающих над новым микропроцессором. Он поддержал их начинание, однако в проекте не участвовал.
Дальнейшее моделирование показало, что ранее сформулированные выводы об улучшении производительности были верными, поэтому проект получил грантовую поддержку со стороны организации DARPA — «Оборонное агентство перспективных исследовательских проектов».
Таким образом, в 1981 году студенты разработали микропроцессор, содержащий всего 31 инструкцию — каждая выполнялась за один такт. В чипе RISC-1 было 78 регистров по 32 бита каждый, а общее число транзисторов равнялось 44500.
Секция управления и декодирования в RISC-I использовала всего 6% кристалла, в то время как типичные конструкции той эпохи могли использовать для этого до 50%.
Тем не менее чипы RISC-I оказались не такими производительным, как ожидалось. Некоторые инструкции выполнялись быстро, другие — не очень. Были подозрения, что проблемы с чипами были физические, а не логические.
Однако несмотря на несоответствие предсказанной производительности, RISC-I оказался эффективнее суперкомпьютера VAX 11-780 почти во всех реальных тестах. Тактовая частота RISC-I была 4 МГц, в то время как 32-битный VAX 11/780 работал при 5 МГц. Несмотря на это, RISC-I был примерно в два раза производительнее. А выпущенный в 1979 году 16-битный микропроцессор Zilog Z8000 был в 4 раза медленнее RISC-I.
Разработка RISC-I не закончилась — технологию продолжили улучшать. Более того, работа над следующим дизайном RISC-II (который получил рабочее название «Blue») началась еще до того, как чипы RISC-I вернулись с производства.
На этот раз Секвин руководил проектом в Беркли, а Паттерсон курировал сотрудничество с DARPA, которая поддерживала разработку.
RISC-II имел упрощенную схему кэша, состоял из 40760 транзисторов и 138 регистров. Рабочая частота — 3 МГц. При этом RISC-II оказался в 3 раза быстрее и в 2 раза меньше RISC-I. Это довольно существенный прогресс. Для сравнения, созданный в 1979 году микропроцессор Motorola 68000, построенный на базе CISC, был в 4 раза медленнее RISC-II.
Вообще, надо сказать, что RISC и CISC было бы правильнее называть концепциями (или парадигмами), а не архитектурами. Или по крайней мере широким классом архитектур, их разновидностью.
Дело в том, что в последующие годы самые разные производители стали выпускать свои собственные RISC-подобные архитектуры. Конечно, их спецификации отличались, но общая суть была той же самой.
Например, в 1985 году компания Sun Microsystems заинтересовалась разработками Беркли, и выпустила на основе RISC первый коммерческий микропроцессор — SPARC (Scalable Processor ARChitecture).
Таким образом SPARC стал производной от RISC архитектурой, которая при этом уже являлась открытой. Сам SPARC существует по сей день в виде стандарта IEEE, оформлен в конкретную спецификацию и доступен любому желающему по лицензии за 99$.
Микропроцессор SPARC, построенный на разработках Беркли, получил широкое распространение, однако главное не это. Главное то, что SPARC «породил» тренд на RISC-подобные устройства. Почти каждый поставщик того времени стал выпускать отдельные RISC-линейки микропроцессоров: PowerPC от IBM, Alpha от Digital Equipment Corporation, MIPS от MIPS Technologies.
«Наследие» RISC
MIPS
Джон Хеннесси — еще один «первопроходец» RISC. В 1977 году в возрасте 25 лет Хеннесси начал профессиональную деятельность в Стэнфордском университете.
Растущий интерес того времени к архитектурам с сокращенным набором команд привел к Хеннесси к полноценной работе над новой RISC-подобной архитектурой, которая велась параллельно и независимо от того, что придумывали в Беркли.
Тем не менее Хеннесси и Паттерсон были друзьями и коллегами. Например, они написали совместный учебник по компьютерным архитектурам — «Computer Architecture: A Quantitative Approach».
Хеннесси со своим коллегой, Крисом Роуэном, собрали воедино их видение, исследования и теоретические наработки. Итогом этой компиляции стала полноценная архитектура — MIPS (Microprocessor without Interlocked Pipelined Stages).
MIPS изначально был разработан исключительно на научной основе. Он был создан несколькими академиками, а не группой инженеров с влиятельными спонсорами.
Более того, помимо аппаратной части велась разработка и программных компонентов микропроцессора. Система команд, система конвейеров, компиляторы кода — все создавалось на базе многочисленных научных исследований.
Возможно, преимущественно чистый научно-академический, а не корпоративно-инженерный подход определил ряд преимуществ MIPS:
высокую производительность
небольшую площадь кристалла
низкое энергопотребление
Тем не менее Хеннесси с коллегами решил коммерциализировать свои уникальные наработки и основал компанию MIPS Computer Systems. Конечно же, у MIPS не было своих производственных мощностей, поэтому чипы делали сторонние подрядчики.
За свою историю MIPS разработали множество чипов, но одним из самых популярных был R2000. Он использовался в развлекательных системах, а также сетевых и коммуникационных устройствах. Компания продавала лицензии как на 32-разрядные, так и на 64-разрядные версии MIPS.
Тем не менее амбициозные планы привели MIPS Computer Systems к финансовым проблемам и поглощению. После успешного выпуска микропроцессоров R2000 и R3000 компания попыталась найти комфортное место на рынке компьютерных систем и выпустила рабочую станцию MIPS Magnum, однако по итогу оказалась неспособной конкурировать с гораздо более крупными компаниями.
MIPS Computer Systems изо всех сил старалась покрыть затраты на разработку как чипов, так и систем. В итоге в 1992 году компанию купил производитель высокопроизводительных компьютеров для рынка 3D-графики — Silicon Graphics.
Это было выгодно для Silicon Graphics, ведь компания использовала чипы MIPS во всех своих устройствах, которые применялись для создания спецэффектов во всех голливудских фильмах того времени.
ARM, PowerPC, RISC-V
Общий контекст, характерный для 1980-х годов, способствовал развитию новых подходов в проектировании устройств и ПО. В те годы вокруг кремниевых технологий царил яркий дух инноваций.
Массачусетский технологический институт, Беркли, Стэнфорд, Intel, Fairchild и даже правительство США инвестировали в технологии полупроводников миллиардные средства.
Это была огромная волна, которую «оседлали» такие компьютерные «серферы», как Кок, Паттерсон, Секвин, Хеннесси.
Да, RISC имел (и до сих пор имеет) свои недостатки. Например, возросший объем кода и, как следствие, увеличенный размер программ. Но RISC работал. И работает.
Крупные технологические гиганты стали создавать свои собственные RISC-архитектуры.
Например, Acorn Computers в 1983 году делала отличное продажи своего компьютера BBC Micro, но до тех пор, пока не появились более дешевые и производительные микросхемы, на основе которые впоследствии были созданы IBM PC и Apple Macintosh.
Именно в попытке конкурировать с новыми устройствами Acorn создали архитектуру ARM (Acorn RISC Machine) — без большого количества денег и многочисленных исследований.
Софи Уилсон, один из ключевых дизайнеров BBC Micro, пыталась заменить устаревающий 8-битный микропроцессор MOS Technology 6502 на более мощный. Рассматривались различные 16-битные варианты: 80286 от Intel, 32016 от National Semiconductor, 68000 от Motorola. Ни один из них не показался удовлетворительным. Было принято решение попробовать создать свой собственный микропроцессор.
Сооснователь Acorn, Герман Хаузер, имел доступ к исследовательским работам IBM, которые описывали тот самый новый тип процессора, придуманного Коком. На основе этих данных началась разработка.
Через 18 месяцев был создал эмулятор будущего чипа ARM. Он был написан на языке BASIC и запускался на устаревающем BBC Micro. Эмуляция работала медленно, но зато позволяла сэкономить приличные деньги на тестировании кремниевых прототипов. Виртуальный чип действительно работал так, как и задумал Уилсон.
Проект первого процессора ARM был отправлен на изготовление в американскую фирму по производству полупроводников — VLSI Technology Inc. Первая версия чипа была доставлена в Acorn в 1985 году. Микропроцессор назывался очень просто — ARM V1.
По сути, 32-битный ARM V1, основанный на усовершенствованной конструкции RISC, был создан группой из 10 человек, во главе которой стояла Софи Уилсон.
Внутри V1 было всего 27 000 транзисторов. Например, в Intel 80286 их было 134 000. При этом ARM работал в 10 раз быстрее 80286. Энергопотребление V1 не превышало 1 Вт.
Недостатки тоже были:
Не было встроенной кэш-памяти.
Не было схем умножения и деления.
Не было модуля с плавающей (float) запятой, отчего операции с нецелыми числами выполнялись медленно.
Чип работал на скромной частоте 6 МГц. В те годы 32-битный процессор Motorola 68020 имел 17 МГц. Однако мощность у них была одинаковая.
Таким образом, Acorn Computers разработала продолжающуюся серию проектов RISC-процессоров, которые до сих пор производятся по лицензии ведущими полупроводниковыми предприятиями для использования в компьютерах, игровых консолях, смартфонах планшетах и других устройствах.
Например, компания Apple использовала архитектуру ARM в своих устройствах, начиная с теперь уже древнего коммуникатора Newton MessagePad (в котором использовался процессор ARM610) и заканчивая iPod 2001 года и iPhone 2007 года.
С 2009 года Apple стала активно инвестировать в собственные микропроцессоры Apple Silicone, в основе которых также лежит архитектура ARM. Например, некогда популярный iPhone 5S работал на микропроцессоре Apple A7 с архитектурой ARMv8-a.
Впрочем, то же самое касается современных «систем на кристалле» («SoC») Apple M1, которые являются уже «Package on a package» («PoP») микропроцессорами — их электронные компоненты пакуются друг на друга, увеличивая компактность изделия.
Другая архитектура, PowerPC (реальное название — Power ISA), является своего рода коммерческим продолжением разработок IBM — она была создана альянсом из Apple, IBM и Motorola спустя 10 лет после реализации RISC-прототипов Джона Кока. На ее базе, например, работали станции «RISC System/6000».
Беркли (Стэнфордский университет), породивший RISC-I и RISC-II, спустя годы тоже не остался в стороне. Впоследствии совершенно другая группа исследователей (конечно же, знакомая с Дэвидом Паттерсоном) продолжила работы и создала открытую архитектуру RISC-V.
RISC-V сокращает набор инструкций до абсолютного минимума. Это максимально лаконичная и унифицированная архитектура набора команд, созданная в университетской среде и не требующая платной лицензии для использования (в отличие, например, от ARM).
Набирать популярность RISC-V начал недавно — примерно с 2015 года. В это время был создан фонд для поддержки открытого стандарта — «RISC-V Foundation».
Заключение
Как видно, RISC доказал разработанную теории на практике — оказалось, что высокая плотность инструкций (характерная для CISC) мало влияет на общую производительность компьютера. Состав инструкций намного важнее.
Упрощенный набор привел к двум важным особенностям RISC:
На более низком уровне абстрагирования (по сути, на аппаратном уровне) реализации упрощаются, становясь более однообразными и «выдержанными».
На более высоком уровне абстрагирования (на уровне программ и приложений) реализации обретают большую вариативность — на основе небольшого числа базовых «кирпичиков» можно построить «дома» самых разных конструкций.
CISC же имел полностью обратные свойства:
Аппаратная реализация (низкий уровень абстрагирования) имеет большую степень вариативности — множественные функции и сложная обработка команд.
Программная реализация (высокий уровень абстрагирования) сильно зависит от специализированных функций аппаратной реализации, становясь негибкой и скудной.
В какой-то степени это можно сравнить с так называемым «Законом иерархических компенсаций» Е. Седова, который иногда озвучивается биологических и эволюционных дисциплинах: «Действительный рост разнообразия на высшем уровне обеспечивается его эффективным ограничением на предыдущих уровнях».
Простое сравнение CISC и RISC:
CISC | RISC | |
Набор команд | Расширенный | Сокращенный |
Время выполнения команд | Переменное | Команда за такт |
Программный код | Короткий | Длинный |
Использование конвейера | Плохое | Отличное |
Реализация процессора | Сложная | Простая |
Модели процессоров | IBM 360/370, DEC PDP/VAX, Intel, AMD, Motorola | SPARC, PowerPC, ARM, MIPS |
В 2015 году «Институт инженеров электротехники и электроники» (IEEE) даже установил мемориальную доску в Калифорнийском университете в Беркли. Ее надпись гласит:
«Студенты Калифорнийского университета в Беркли спроектировали и построили первый компьютер с сокращенным набором команд в 1981 году. Упрощенные инструкции RISC-I уменьшили аппаратное обеспечение для декодирования и управления инструкциями, что позволило использовать 32-битное адресное пространство, большой набор регистров и конвейерную обработку. Хорошо сочетаясь с программами C и операционной системой Unix, RISC-I повлиял на наборы инструкций, широко используемых сегодня, в том числе для игровых консолей, смартфонов и планшетов.»
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS