Введение

Архитектура наборов команд RISC PRISM (Parallel Reduced Instruction Set Machine) была 32-битной архитектурой наборов команд RISC (ISA), разработанной компанией Digital Equipment Corporation (DEC). Она стала результатом ряда исследовательских проектов DEC, проводившихся в период с 1982 по 1985 год, и проект постоянно изменялся в соответствии с новыми требованиями и планируемым использованием, что задерживало его внедрение. В конечном итоге было принято решение использовать эту разработку для новой линейки Unix-рабочих станций. Арифметико-логическое устройство (ALU) версии microPrism было спроектировано в апреле 1988 года и были изготовлены образцы, но проектирование других компонентов, таких как блок операций с плавающей точкой (FPU) и блок управления памятью (MMU), все еще не было завершено летом, когда руководство DEC решило отменить проект в пользу систем на базе MIPS. Для архитектуры PRISM была разработана операционная система под кодовым названием MICA, которая должна была заменить VAX/VMS и ULTRIX на PRISM. Отмена PRISM оказала значительное влияние на DEC. Многие члены команды покинули компанию в течение следующего года, в частности, Дэйв Катлер, перешедший в Microsoft и возглавивший разработку Windows NT. Рабочие станции на базе MIPS имели умеренный успех среди существующих пользователей Ultrix в DEC, но не смогли составить серьезную конкуренцию таким компаниям, как Sun Microsystems. В то же время, прибыльная линейка VAX становилась все менее производительной, поскольку новые разработки RISC превосходили даже топовую модель VAX 9000. Изучая будущее VAX, компания пришла к выводу, что процессор, подобный PRISM, с некоторыми дополнительными изменениями, мог бы удовлетворить потребности всех этих рынков. Продолжая работу над PRISM, программа DEC Alpha стартовала в 1989 году.

Предыстория

Введённый в 1977 году, VAX стал оглушительным успехом для DEC, укрепив её позиции в качестве мирового поставщика компьютеров номер два после IBM. VAX отличался богатой архитектурой набора команд (ISA), реализованной в сложном микрокоде. Операционная система VMS была построена на основе этой ISA, что накладывало определённые требования к обработке прерываний и модели памяти, используемой для организации постраничной памяти. К началу 1980-х годов системы VAX стали "вычислительным ядром многих технологических компаний, рассылая лучи кабелей RS 232 к ободу терминалов VT 100, обеспечивая работу научных и инженерных отделов". Эта благоприятная ситуация была нарушена неуклонным совершенствованием производства полупроводников, описанным законом Мура; к началу 1980-х годов появилось множество мощных 32-битных однокристальных микропроцессоров с производительностью, сопоставимой с ранними машинами VAX, но при этом способных поместиться в корпус настольного компьютера. Компании, такие как Sun Microsystems, представили Unix-рабочие станции на базе серии Motorola 68000, которые могли заменить огромную многопользовательскую VAX-машину на более производительную и при этом достаточно дешёвую, чтобы приобрести её каждому нуждающемуся пользователю. В то время как собственные команды разработчиков микропроцессоров DEC выпускали ряд VAX-реализаций по более низкой цене, соотношение цены и производительности их систем продолжало ухудшаться. К концу 1980-х годов DEC оказалась отрезана от технического рынка.

RISC

В 1970-х годах IBM проводила исследования производительности своих компьютерных систем и обнаружила, к своему удивлению, что 80% времени компьютера тратилось на выполнение всего пяти операций. Сотни других инструкций в их ISA, реализованных с помощью микрокода, практически не использовались. Наличие микрокода вносило задержку при декодировании инструкций, поэтому даже при прямом вызове одной из этих пяти операций она выполнялась медленнее, чем могла бы без микрокода. Это привело к разработке IBM 801, первого современного RISC-процессора. Примерно в то же время, в 1979 году, Дэйв Паттерсон был отправлен в академический отпуск из Калифорнийского университета в Беркли, чтобы помочь команде DEC на западном побережье улучшить микрокод VAX. Паттерсон был поражен сложностью процесса кодирования и пришел к выводу, что он неустойчив. Сначала он написал статью о способах улучшения микрокодирования, но позже передумал и решил, что проблема заключается в самом микрокоде. Вскоре он начал проект Berkeley RISC. Появление RISC вызвало длительные дебаты в компьютерной индустрии о его преимуществах; когда Паттерсон впервые представил свои аргументы в пользу этой концепции в 1980 году, DEC опубликовала критическое несогласие.

К середине 1980-х годов практически каждая компания, имеющая подразделение по проектированию процессоров, начала изучать подход RISC. Несмотря на отсутствие официального интереса, DEC не стало исключением. В период с 1982 по 1985 год было предпринято не менее четырех попыток создать RISC-чип в различных подразделениях DEC. Titan из Западной исследовательской лаборатории DEC (WRL) в Пало-Альто, Калифорния, представлял собой высокопроизводительную разработку на основе ЭКЛ, начатую в 1982 году и предназначенную для запуска Unix. SAFE (Streamlined Architecture for Fast Execution) был 64-битным проектом, начатым в том же году, разработанным Аланом Котоком (известным по Spacewar!) и Дэйвом Орбитсом и предназначенным для запуска VMS. HR 32 (Hudson, RISC, 32 bit) был запущен в 1984 году Ричем Витеком и Дэном Добберпулом на фабрике в Хадсоне, штат Массачусетс, и предназначался для использования в качестве сопроцессора в машинах VAX. В том же году Дэйв Катлер начал проект CASCADE в DECwest в Беллвью, штат Вашингтон.

PRISM

В конечном итоге, в 1985 году Катлера попросили определить единый проект RISC, выбрав Рича Витека в качестве главного архитектора. В августе 1985 года был представлен первый черновик высокоуровневого проекта, и началась работа над детальной проработкой. Спецификация PRISM разрабатывалась в течение многих месяцев командой из пяти человек: Дэйва Катлера, Дэйва Орбитса, Рича Витека, Дилипа Бхандаркара и Уэйна Кардозы. В течение этого раннего периода конструкция постоянно менялась, поскольку внутри компании шли споры о том, должна ли она быть 32- или 64-битной, ориентированной на коммерческие или технические задачи, и так далее. Эти постоянные изменения привели к тому, что окончательная спецификация ISA была завершена только в сентябре 1986 года. В то время было принято решение создать две версии базовой концепции: DECwest работала над "высококлассной" реализацией на ЭКЛ, известной как Crystal, а команда Semiconductor Advanced Development – над microPRISM, версией на КМОП. Эта работа была выполнена на 98% в 1985–1986 годах и активно поддерживалась симуляциями, проводимыми Питом Бенуа на большом VAX-кластере. В течение этого периода многие инженеры DEC в целом сохраняли скептицизм относительно того, действительно ли RISC быстрее, или просто быстрее на тривиальных пятистрочных программах, используемых для демонстрации его производительности. На основе конструкции Crystal в 1986 году она была сравнена с самой быстрой разрабатываемой машиной – VAX 8800. Вывод был ясен: при любом объеме инвестиций RISC-проекты будут превосходить VAX в соотношении 2:1. В середине 1987 года было принято решение, что обе разработки будут 64-битными, однако это продлилось всего несколько недель. В октябре 1987 года Sun представила Sun 4, работающую на 16 МГц SPARC – коммерческой версии RISC-проекта Паттерсона, которая была в четыре раза быстрее, чем их предыдущая топовая модель Sun 3 с 20 МГц Motorola 68020. С этим выпуском DEC вновь изменила целевое назначение PRISM, ориентировав его исключительно на рынок рабочих станций. В результате microPRISM была переопределена как 32-битная система, а проект Crystal был отменен. Это привело к новым задержкам и значительно отодвинуло сроки реализации проекта. К началу 1988 года система все еще не была завершена: дизайн процессора был почти готов, но FPU и MMU, оба основанные на современном чипсете Rigel для VAX, все еще разрабатывались. Команда решила прекратить работу над этими частями проекта и полностью сосредоточиться на процессоре. Проектирование было завершено в марте 1988 года, а в апреле была изготовлена мастер-пленка.

Отмена

В течение всего периода PRISM компания DEC была вовлечена в ожесточенные дебаты о будущем направлении развития. По мере появления новых рабочих станций на базе RISC, преимущество VAX в производительности постоянно снижалось, а соотношение цены и производительности было полностью подорвано. Различные подразделения компании обсуждали наилучший способ реагирования. Некоторые предлагали перевести VAX в сегмент высокопроизводительных систем, уступив низкий ценовой сегмент производителям рабочих станций, таким как Sun. Это привело к разработке программы VAX 9000, которая внутри компании называлась «убийцей IBM». Другие предлагали выйти на рынок рабочих станций, используя PRISM или стандартный процессор. Еще некоторые предлагали перенести VAX на процессор RISC. Разочарованные растущим числом проигрышей более дешевым и быстрым конкурентам, небольшая секретная группа в Пало-Альто, вне Центральной инженерной службы, занимавшаяся разработкой рабочих станций и UNIX/Ultrix, рассматривала возможность использования готового процессора RISC для создания нового семейства рабочих станций. Группа провела всестороннюю проверку и в итоге выбрала MIPS R2000. Они приобрели отладочный образец и создали прототип переноса Ultrix на эту систему. От первых встреч с MIPS до создания прототипа прошло всего 90 дней. Массовое производство версии DEC могло начаться уже в январе 1989 года, в то время как для создания машины на базе PRISM потребовался бы как минимум еще год. Когда этот вопрос был вынесен на обсуждение в штаб-квартире DEC, компания разделилась во мнениях относительно того, какой подход лучше. Боба Супника попросили рассмотреть этот вопрос в рамках предстоящего обзора проекта. Он пришел к выводу, что, хотя система PRISM казалась более быстрой, подход с MIPS был бы менее затратным и позволил бы быстрее выйти на рынок. На напряженном заседании исполнительного комитета компании в июле 1988 года было принято решение отменить проект Prism и продолжить разработку рабочих станций на базе MIPS и высокопроизводительных продуктов VAX. Рабочая станция была выпущена под названием DECstation 3100. К этому времени образцы микроPRISM были возвращены и оказались в основном работоспособными. Они также продемонстрировали возможность работы на частотах от 50 до 80 МГц, по сравнению с 16–20 МГц у R2000. Прогнозы производительности, основанные на этих наблюдениях, указывали на значительное улучшение по сравнению с существующими и анонсированными продуктами RISC от других производителей. Однако без сопроцессора для работы с плавающей точкой, разработка которого была приостановлена, и чипа интерфейса кэш-памяти, необходимого для работы на таких частотах (который входил в состав отмененного проекта), прогнозы производительности в операциях с плавающей точкой оставались теоретическими.

Наследие

К моменту июльской встречи 1988 года компания практически полностью пришла к мнению, что технология RISC перспективна прежде всего для рабочих станций. Однако производительность PRISM была сопоставима с производительностью новейших машин VAX, а концепция RISC обладала значительным потенциалом для развития. Когда встреча завершилась, Кен Олсен попросил Супника изучить возможности сохранения конкурентоспособности производительности систем VMS по сравнению с Unix-системами на базе RISC. Группа инженеров сформировала команду, которую по-разному называли "RISCy VAX" или целевой группой "Extended VAX" (EVAX), для изучения этого вопроса. После отмены проектов PRISM и MICA, Дэйв Катлер покинул Digital и перешел в Microsoft, где возглавил разработку того, что впоследствии стало известно как Windows NT. Архитектура NT, разработанная Катлером, во многом была вдохновлена различными аспектами MICA.

Дизайн

С точки зрения целочисленных операций, архитектура PRISM была схожа с архитектурами MIPS. Из 32 бит в инструкциях, 6 старших и 5 младших бит отводились под код операции, оставляя остальные 21 бит слова для кодирования либо константы, либо адресов регистров. В PRISM было предусмотрено 64 32-битных регистра, в отличие от 32 в MIPS, однако их использование было в целом аналогичным. Как и MIPS, PRISM не поддерживал оконную организацию регистров, которая являлась характерной особенностью другой крупной RISC-архитектуры – Berkeley RISC. Архитектура PRISM отличалась рядом особенностей набора инструкций. В частности, PRISM включал Epicode (расширенный код инструкций процессора), который определял набор "специальных" инструкций, предназначенных для обеспечения операционной системы стабильным ABI в различных реализациях. Epicode был выделен собственный набор из 22 32-битных регистров. Позже был добавлен также набор инструкций для векторной обработки, поддерживаемый дополнительными шестнадцатью 64-битными векторными регистрами, которые могли использоваться различными способами.