В начале 1980-х DEC была на вершине финансового могущества, в значительной
мере благодаря стабильно растущим объёмам продаж VAX'ов и программного
обеспечения к ним. Тем не менее, ничто не вечно и было очевидно, что в своё
время и VAX придётся уйти с рынка в пользу какой-нибудь более сложной и гибкой
архитектуры, как это уже происходило с PDP-11. В то время многие компании начали
обращать внимание на перспективные разработки в среде RISC, да и DEC явно не
желала остаться в стороне. С 1982 по 1985 в составе компании активно работали
несколько команд, занимавшихся исследованиями в области RISC:
- Titan, высокоскоростная разработка Западной исследовательской
лаборатории (Western Research Laboratory; DECwest) в Пало-Альто (Калифорния,
США), под руководством Фореста Бэскетта (Forest Baskett), с 1982;
- SAFE (Streamline Architecture for Fast Execution), под руководством
Алана Котока (Alan Kotok) и Дэвида Орбица (David Orbits), с 1983;
- HR-32 (Hudson RISC 32-bit), при полупроводниковой фабрике DEC в
Хадсоне (Массачусетс, США), под руководством Ричарда Витека (Richard Witek) и
Дэниела Добберпуля (Daniel Dobberpuhl), с 1984;
- CASCADE Дэвида Катлера (David Cutler) в Сиэтле (Вашингтон, США), с
1984.
В 1985, с подачи Катлера касаемо создания так называемого корпоративного
RISC-плана, все 4 проекта были объединены в один под названием
PRISM
(PaRallel Instruction Set Machine), и совместными усилиями к августу 1985 была
подготовлена первая спецификация на новый RISC-процессор. Стоит упомянуть, что к
тому времени DEC уже принималa активное участие в разработке процессора
MIPS
R3000 и даже инициировала создание консорциума Advanced Computing
Environment для продвижения архитектуры MIPS на рынке.
Нет ничего удивительного в том, что разрабатываемый процессор унаследовал
много черт, присущих архитектуре MIPS, но в то же время и отличия были очевидны.
Все команды имели фиксированную длину в 32 бита, из них верхние 6 и нижние 5
были собственно кодом команды, а остальные 21 предназначались для
непосредственно данных либо их адресации. Были определены 64 основных 32-битных
целочисленных регистрa (MIPS определяла 32), а также 16 дополнительных 64-битных
векторных регистра и 3 контрольных регистра для векторных операций: два 7-битных
(vector length и vector count) и один 64-битный (vector mask). Регистр состояния
процессора отсутствовал, поэтому результат сравнения двух скалярных операндов
помещался в целочисленный регистр, а результат сравнения двух векторных
операндов — в vector mask. Встроенный блок вычислений с плавающей запятой
не предусматривался. Также присутствовал набор специальных инструкций под
названием Epicode (Еxtended processor instruction code), реализованных
программно (посредством загружаемого микрокода) и предназначавшихся для
облегчения решения специальных задач, присущих определённой среде или
операционной системе и не предусмотренных стандартным набором команд.
Впоследствии эта функция была реализована в архитектуре Alpha под названием
PALcode (Privileged Architecture Library code).
К 1988 проект был всё ещё в стадии разработки, когда высший менеджмент DEC
закрыл его, посчитав дальнейшую поддержку нецелесообразной. Протестуя против
этого решения, Катлер уволился и ушёл в Microsoft, где возглавил подразделение
по разработке Windows NT (в то время называвшейся OS/2 3.0).
В начале 1989 DEC представила свои первые рабочие станции с
RISC-процессорами, DECstation 3100 на основе 32-битного
MIPS R2000 с
частотой в 16МГц и DECstation 2100 на основе того же процессора, но с частотой в
12МГц. Обе машины работали под ОС Ultrix и стоили довольно умеренно, например,
около 8000 USD (1990) за DECstation 2100 в стандартной конфигурации.
В 1989 морально стареющая архитектура VAX уже с трудом могла конкурировать с
RISC-архитектурами 2-го поколения, такими как
MIPS и
SPARC, и было
вполне очевидно, что следующее поколение RISC оставит VAX немного шансов на
выживание. В середине 1989 перед инженерами DEC была поставлена задача по
созданию конкурентноспособной RISC-архитектуры с перспективным потенциалом, в то
же время минимально несовместимой с VAX, чтобы облегчить перенос на неё VAX/VMS
и всей сопутствующей программной базы. Также было определено, что новая
архитектура должна изначально быть 64-битной, так как конкуренты уже были в
процессе перехода на 64-битные решения. Была создана рабочая группа, в которой
главными архитекторами были Ричард Витек и Ричард Сайтс (Richard Sites).
Первое официальное упоминание об архитектуре
Alpha датируется 25
февраля 1992 на конференции в Токио. Одновременно в небольшом
обзоре для USENET-конференции comp.arch
были перечислены ключевые моменты новой архитектуры. Там же было оговорено, что
"Alpha" является кодовым именем нового процессора, а рыночное название будет
представлено позже. Процессор обладал "чистой" 64-битной RISC-архитектурой с
инструкциями фиксированной длины по 32 бита каждая, 32 64-битными целочисленными
регистрами, а также работал с 43-битным виртуальным адресным пространством,
которое могло быть расширено вплоть до 64-битного в будущих представителях
архитектуры. Как и в VAX, использовался little-endian порядок следования байт
(то есть, когда младший байт регистра занимает при записи младший адрес в
памяти; поддерживался Intel в противовес к big-endian, изначально внедрённому
Motorola и используемому большинством процессорных архитектур того времени,
когда старший байт регистра занимает при записи младший адрес в памяти).
Математический сопроцессор был изначально интегрирован в ядро вместе с 32
64-битными вещественными регистрами. Кстати, использовался произвольный доступ к
ним в отличие от примитивного стэкового, практикуемого сопроцессорами Intel x87.
Срок службы новой архитектуры был определен, как минимум, в 25 лет.
Поддерживаемый набор команд был упрощён с целью максимального облегчения
конвейеризации и состоял из 5 групп:
- команды для целочисленных вычислений;
- команды для вещественных (с плавающей запятой) вычислений;
- команды обработки переходов и операций сравнения;
- команды загрузки и сохранения данных;
- команды PALcode.
Стоит отметить, что команды целочисленного деления аппаратно отсутствовали,
так как являлись наиболее сложными в расчётном плане и плохо поддавались
конвейеризации, а поэтому просто эмулировались. Это было вполне приемлемо, так
как на практике необходимость в командах этого типа появлялась относительно
редко, особенно учитывая возможность использования команд сдвигов (shifts) для
многих целочисленных операций деления и умножения.
Архитектура Alpha была настоящей RISC, в отличие от микроархитектур x86
прошлого и настоящего начиная с NexGen 586, Intel P6 и AMD K6. Фактически, их
можно считать RISC только на уровне функциональных устройств процессоров.
Концептуально разница между
RISC (Reduced Instruction Set Computing) и
CISC (Complex Instruction Set Computing) состояла (и до сих пор состоит)
в нескольких моментах:
| Характеристика |
CISC |
RISC |
| Длина команды |
Произвольная, в зависимости от характера инструкции |
Фиксированная, вне зависимости от характера инструкции |
| Набор команд |
Большой, адаптированный для удобства программиста |
Средний, адаптированный для удобства выполнения процессором |
| Доступ к памяти |
Разрешён для инструкций разного рода |
Разрешён только для инструкций загрузки/сохранения |
Примечание: Данная таблица относится только к процессорам общего
назначения, поскольку цифровые сигнальные процессоры (DSP) и прочие встраиваемые
процессоры значительно от них отличаются. К слову, их наборы команд типично малы
из-за высокого уровня специализации решений.
Процессор предполагалось запустить в производство на очень высокой для того
времени тактовой частоте —
150МГц, которую планировалось довести до
200МГц при тех же конструкторских нормах. Это оказалось возможным как
благодаря удачной архитектуре, так и благодаря отказу разработчиков от
использования систем автоматического проектирования и выполнению всех работ по
схемотехнике исключительно вручную. Проект вступил в производственную стадию и
вскоре был реорганизован в регулярное подразделение DEC.
Трудами отдела маркетинга DEC новая архитектура получила название AXP (или
Alpha AXP), хотя до сих пор неизвестно, аббревиатурой чего было это
недоразумение. Вполне возможно, что и ничего. В прошлом DEC имела проблемы с
торговой маркой VAX, на которую претендовала компания по производству пылесосов,
и тогда дело дошло до суда. Также мотивировалось, что рекламный слоган этой
компании ("Nothing sucks like a Vax!" — "Ничто не сосёт так, как Vax!")
дискредитирует продукцию DEC. Так что вскоре в компьютерном мире появилась
шутка, что AXP означает это "Almost eXactly PRISM", то есть "почти точно PRISM".