Введение
Исследовательский проект в области разработки микропроцессоров на базе RISC. Berkeley RISC – один из двух основополагающих исследовательских проектов в области разработки микропроцессоров на основе компьютеров с упрощенным набором команд (RISC), осуществляемых в рамках проекта VLSI Агентства передовых исследовательских проектов Министерства обороны. Проект RISC возглавлял Дэвид Паттерсон (автор термина RISC) в Калифорнийском университете в Беркли с 1980 по 1984 год. Другой проект проходил неподалеку, в Стэнфордском университете, в рамках их разработки MIPS, начатой в 1981 году и завершенной в 1984 году. Проект Berkeley RISC оказался настолько успешным, что его название стало нарицательным для всех последующих подобных разработок; даже MIPS стали называть "RISC-процессором". Позже дизайн Berkeley RISC был коммерциализирован компанией Sun Microsystems в виде архитектуры SPARC и послужил источником вдохновения для архитектуры ARM.
Berkeley RISC is one of two seminal research projects into reduced instruction set computer (RISC) based microprocessor design taking place under the Defense Advanced Research Projects Agency VLSI Project. RISC was led by David Patterson (who coined the term RISC) at the University of California, Berkeley between 1980 and 1984. The other project took place a short distance away at Stanford University under their MIPS effort starting in 1981 and running until 1984. Berkeley's project was so successful that it became the name for all similar designs to follow; even the MIPS would become known as a "RISC processor". The Berkeley RISC design was later commercialized by Sun Microsystems as the SPARC architecture, and inspired the ARM architecture.
Концепция RISC
И RISC, и MIPS были разработаны, исходя из понимания того, что подавляющее большинство программ используют лишь небольшую часть доступного набора инструкций процессора. В знаменитой статье 1978 года Эндрю С. Таненбаум продемонстрировал, что сложная программа высокого уровня, состоящая из 10 000 строк, может быть представлена с использованием упрощенной архитектуры набора инструкций, используя 8-битный код операции фиксированной длины. К схожим выводам пришли и в IBM, чьи исследования собственного кода, работающего на мэйнфреймах, таких как IBM 360, показали, что используется лишь небольшое подмножество всех доступных инструкций. Оба этих исследования показали, что можно создать гораздо более простой процессор, который все равно будет выполнять большинство реальных программ. Другим, не полностью изученным в то время, наблюдением была запись Таненбаума о том, что 81% констант имели значения 0, 1 или 2. RISC I также использовал двухступенчатый конвейер инструкций для повышения скорости, но без сложной перестановки инструкций, характерной для более современных конструкций. Это создавало проблему с условными переходами, поскольку компилятору приходилось заполнять слот задержки ветвления (инструкцию, следующую за условным переходом) инструкцией, выбранной как "безопасная" (то есть не зависящая от результата условия). Иногда единственной подходящей инструкцией в этом случае была NOP. Значительное число последующих конструкций в стиле RISC по-прежнему требовало учета задержки ветвления. После месяца валидации и отладки дизайн был отправлен в инновационную службу MOSIS для производства 22 июня 1981 года с использованием 2-микронного (2000 нм) технологического процесса. Из-за различных задержек им пришлось отказаться от своих фотошаблонов четыре раза, и пластины с рабочими образцами вернулись в Беркли только в мае 1982 года. Первый рабочий "компьютер" RISC I (фактически, отладочная плата) заработал 11 июня. При тестировании выяснилось, что чипы демонстрируют меньшую производительность, чем ожидалось. В целом, выполнение инструкции занимало 2 мкс, в то время как первоначальный проект предусматривал около 0,4 мкс (в пять раз быстрее). Точные причины этой проблемы так и не были полностью выяснены. Однако в ходе тестирования стало ясно, что некоторые инструкции выполнялись с ожидаемой скоростью, что указывало на физическую, а не логическую природу проблемы. Если бы дизайн работал на полной скорости, производительность была бы отличной. Симуляции с использованием различных небольших программ сравнивали 4-МГц RISC I с 5-МГц 32-битным VAX 11/780 и 5-МГц 16-битным Zilog Z8000, что наглядно продемонстрировало это. Размер программы был примерно на 30% больше, чем у VAX, но очень близок к Z8000, что подтверждало аргумент о том, что более высокая плотность кода CISC-проектов на самом деле не была столь впечатляющей. С точки зрения общей производительности, RISC I был в два раза быстрее VAX и примерно в четыре раза быстрее Z8000. Программы выполняли примерно одинаковое количество обращений к памяти, поскольку большой регистровый файл значительно повышал вероятность того, что необходимый операнд уже находился на чипе. Важно рассматривать эту производительность в контексте. Даже несмотря на то, что RISC работал медленнее, чем VAX, это не умаляло значимости разработки. RISC позволил создать настоящий 32-битный процессор на реальном кристалле, используя уже устаревшее производство. Традиционные конструкции не могли этого сделать; поскольку значительная часть площади кристалла была отведена под логику декодирования, для создания настоящего 32-битного дизайна, такого как Motorola 68020, требовались более современные производственные мощности. Используя те же производственные мощности, RISC I мог бы значительно превзойти конкурентов. 12 февраля 2015 года IEEE установила мемориальную доску в Калифорнийском университете в Беркли в память о вкладе RISC I. На доске написано:
"Студенты Калифорнийского университета в Беркли разработали и построили первый ВЛСИ-компьютер с уменьшенным набором инструкций в 1981 году. Упрощенные инструкции RISC I сократили аппаратную часть, необходимую для декодирования и управления инструкциями, что позволило реализовать 32-битное адресное пространство, большой набор регистров и конвейерное выполнение. Хорошо сочетаясь с программами на языке C и операционной системой Unix, RISC I оказал влияние на наборы инструкций, широко используемые сегодня, в том числе для игровых консолей, смартфонов и планшетов."
UC Berkeley students designed and built the first VLSI reduced instruction set computer in 1981. The simplified instructions of RISC I reduced the hardware for instruction decode and control, which enabled a flat 32 bit address space, a large set of registers, and pipelined execution. A good match to C programs and the Unix operating system, RISC I influenced instruction sets widely used today, including those for game consoles, smartphones and tablets.
RISC II
В то время как разработка RISC I задерживалась, в Беркли работа уже переключилась на новый проект Blue. Работа над Blue продвигалась медленнее, чем над Gold, как из-за отсутствия острой необходимости, поскольку Gold уже готовился к производству, так и из-за смены студентов и учебных групп, участвовавших в проекте. Такой темп также позволил им добавить несколько новых функций, которые в итоге значительно улучшили конструкцию. Ключевым отличием была упрощенная схема кэш-памяти, которая уменьшила количество линий на бит (с трех до двух), что резко сократило размер регистрового файла. Это изменение также потребовало более точной синхронизации шины, но это была небольшая плата, и для соответствия требованиям были ускорены и другие части конструкции. Экономия, достигнутая благодаря новой конструкции, была огромной. В то время как Gold содержал в общей сложности 78 регистров в 6 окнах, Blue содержал 138 регистров, разделенных на 8 окон по 16 регистров каждое, а также еще 10 глобальных регистров. Расширение регистрового файла увеличивало вероятность того, что данная процедура сможет поместить все свои локальные данные в регистры, и повышало глубину вложенности. Тем не менее, для большего регистрового файла требовалось меньше транзисторов, и финальная конструкция Blue, выпущенная как RISC II, реализовала весь набор инструкций RISC всего с 40 760 транзисторами. Другим важным изменением было включение расширителя формата инструкций, который невидимо "преобразовывал" 16-битные инструкции в 32-битный формат. Это позволило хранить в памяти более короткие инструкции, обычно с одним или без операндов, такие как NOP, в 16-битном формате, и упаковывать две такие инструкции в одно машинное слово. Инструкции невидимо расширялись до 32-битного формата перед поступлением в арифметико-логическое устройство (ALU), что означало отсутствие необходимости в изменениях в основной логике. Эта простая техника дала неожиданное 30%-ное увеличение плотности кода, благодаря чему идентичная программа на Blue работала быстрее, чем на Gold, из-за уменьшения количества обращений к памяти. RISC II оказался гораздо более успешным в кремнии и в тестах превзошел почти все миникомпьютеры практически во всех задачах. Например, производительность варьировалась от 85% скорости VAX до 256% при различных нагрузках. RISC II также сравнивали с известным Motorola 68000, который тогда считался лучшей коммерческой реализацией чипа, и он превзошел его на 140%–420%.
Последующие действия
Работа над оригинальными проектами RISC завершилась с RISC II, но концепция получила дальнейшее развитие в Беркли. Базовое ядро было повторно использовано в SOAR в 1984 году – по сути, RISC, модифицированный для запуска Smalltalk (аналогично тому, как можно утверждать, что RISC запускал C), а затем в схожей VLSI BAM, которая использовала Prolog вместо Smalltalk. Еще одним проектом был SPUR – полный набор микросхем, необходимых для создания полноценной 32-битной рабочей станции. RISC менее известен, но более влиятелен как основа коммерческого дизайна процессора SPARC от Sun Microsystems. Именно SPARC впервые наглядно продемонстрировал возможности концепции RISC; при выпуске первых Sun 4s они превзошли все существующие на рынке решения. Это побудило практически всех поставщиков Unix спешно разрабатывать собственные RISC-проекты, что привело к созданию DEC Alpha и PA RISC, а Silicon Graphics (SGI) приобрела MIPS Computer Systems. К 1986 году большинство крупных производителей микросхем последовали этому примеру, работая над проектами, такими как Motorola 88000, Fairchild Clipper, AMD 29000 и PowerPC. 13 февраля 2015 года IEEE установила памятную доску в корпорации Oracle в Санта-Кларе. На ней написано:
Sun Microsystems представила масштабируемую архитектуру процессоров (SPARC) RISC в 1987 году. Основываясь на разработках UC Berkeley RISC и Sun в области компиляторов и операционных систем, архитектура SPARC оказалась высокоадаптируемой к развивающимся полупроводниковым, программным и системным технологиям, а также потребностям пользователей. Архитектура обеспечивала высочайшую производительность, масштабируемые рабочие станции и серверы для инженерных, бизнес-, интернет- и облачных вычислений. Методы, разработанные для и параллельно с идеей сокращенного набора инструкций, также были внедрены в последовательно более мощные реализации и расширения традиционной "сложной" архитектуры x86. Значительная часть транзисторов современного микропроцессора отводится под большие кэши, множество стадий конвейера, суперскалярную выдачу инструкций, предсказание переходов и другие современные методы, применимые независимо от архитектуры команд. Доля кремния, выделенная на декодирование инструкций в современной реализации x86, пропорционально невелика, поэтому грань между "сложными" и RISC-процессорными реализациями размылась.