VAX (аббревиатура от Virtual Address eXtension ) — это серия компьютеров с 32-битной архитектурой набора команд (ISA) и виртуальной памятью , которая была разработана и продана Digital Equipment Corporation (DEC) в конце 20 века. VAX -11/780 , представленный 25 октября 1977 года, был первым из ряда популярных и влиятельных компьютеров, реализовавших VAX ISA. Семья VAX имела огромный успех для DEC: последние ее члены прибыли в нее в начале 1990-х годов. На смену VAX пришла DEC Alpha , которая включала в себя несколько функций машин VAX, упрощающих портирование с VAX.
VAX был разработан как преемник 16-битного PDP-11 , одного из самых успешных миникомпьютеров в истории, продано около 600 000 единиц. Система была разработана для обеспечения обратной совместимости с PDP-11 при расширении памяти до полной 32-битной реализации и добавлении виртуальной памяти с подкачкой по запросу . Название VAX относится к концепции расширения виртуального адреса , которая позволяла программам использовать эту новую доступную память, сохраняя при этом совместимость с немодифицированным кодом пользовательского режима PDP-11. Название «VAX-11», использовавшееся на ранних моделях, было выбрано, чтобы подчеркнуть эту возможность. VAX ISA считается компьютером со сложным набором команд (CISC).
DEC быстро отказалась от торговой марки −11, поскольку совместимость PDP-11 больше не вызывала серьезного беспокойства. Линейка расширилась как до мейнфреймов высокого класса , таких как VAX 9000 , так и до систем масштаба рабочей станции , таких как серия VAXstation . В конечном итоге семейство VAX включало десять различных дизайнов и более 100 отдельных моделей. Все они были совместимы друг с другом и обычно работали под управлением операционной системы VAX/VMS .
VAX воспринимался как квинтэссенция CISC ISA [3] с его очень большим количеством удобных для программистов режимов адресации и машинных инструкций на ассемблере, высоко ортогональной архитектурой набора команд и инструкциями для сложных операций, таких как вставка или удаление очереди , форматирование чисел. и полиномиальная оценка. [4]
Название «VAX» возникло как аббревиатура от Virtual Address eXtension , как потому, что VAX рассматривался как 32-битное расширение более старого 16-битного PDP-11 , так и потому, что он был (после Prime Computer ) одним из первых, кто внедрил виртуальную память. для управления этим большим адресным пространством.
Ранние версии процессора VAX реализуют «режим совместимости», который имитирует многие инструкции PDP-11, что дает ему номер 11 в VAX-11, чтобы подчеркнуть эту совместимость. В более поздних версиях режим совместимости и некоторые менее используемые инструкции CISC были перенесены на эмуляцию в программном обеспечении операционной системы.
Набор инструкций VAX был разработан как мощный и ортогональный . [5] Когда он был представлен, многие программы были написаны на языке ассемблера, поэтому важно было иметь «дружественный к программисту» набор команд. [6] [7] Со временем, по мере того как на языках программирования высокого уровня писалось все больше программ , набор команд становился менее заметным, и единственными, кого это особенно беспокоило, были авторы компиляторов.
Одним из необычных аспектов набора команд VAX является наличие масок регистров [8] в начале каждой подпрограммы. Это произвольные комбинации битов, которые определяют, какие регистры следует сохранить при передаче управления подпрограмме. В большинстве архитектур компилятор должен создавать инструкции для сохранения необходимых данных, обычно используя стек вызовов для временного хранения. В VAX с 16 регистрами может потребоваться 16 инструкций для сохранения данных и еще 16 для их восстановления. Используя маску, одно 16-битное значение выполняет те же операции внутри аппаратного обеспечения, экономя время и память. [5]
Поскольку маски регистров представляют собой форму данных, встроенных в исполняемый код, они могут затруднить линейный анализ машинного кода. Это может усложнить методы оптимизации, применяемые к машинному коду. [9]
Собственная операционная система VAX — это VAX/VMS компании Digital (переименованная в OpenVMS в 1991 или начале 1992 года, когда она была портирована на Alpha , модифицирована для соответствия стандартам POSIX и отмечена консорциумом X/Open как совместимая с XPG4 ). [10] Архитектура VAX и операционная система VMS были « разработаны одновременно », чтобы максимально использовать преимущества друг друга, как и первоначальная реализация средства VAXcluster .
В 1980-х годах в компании Digital был разработан гипервизор для архитектуры VAX под названием VMM (Virtual Machine Monitor), также известный как VAX Security Kernel , с целью позволить запускать несколько изолированных экземпляров VMS и ULTRIX на одном и том же оборудовании. [11] VMM был предназначен для достижения соответствия TCSEC A1. К концу 1980-х годов он работал на оборудовании серии VAX 8000 , но от него отказались до того, как он был выпущен для клиентов.
Другие операционные системы VAX включали различные выпуски UNIX Berkeley Software Distribution (BSD) до 4.3BSD , Ultrix -32, VAXELN и Xinu . Совсем недавно NetBSD [12] и OpenBSD [13] поддерживали различные модели VAX, и была проделана некоторая работа по портированию Linux на архитектуру VAX. [14] OpenBSD прекратила поддержку этой архитектуры в сентябре 2016 года. [15]
Первой проданной моделью VAX была VAX-11/780 , которая была представлена 25 октября 1977 года на ежегодном собрании акционеров Digital Equipment Corporation. [16] Билл Стрекер, аспирант К. Гордона Белла в Университете Карнеги-Меллона , отвечал за архитектуру. [17] Впоследствии было создано множество различных моделей с разной ценой, уровнем производительности и мощности. Суперминикомпьютеры VAX были очень популярны в начале 1980-х годов.
Некоторое время VAX-11/780 использовался в качестве стандарта в тестах процессоров . Первоначально она описывалась как машина с одним MIPS , поскольку ее производительность была эквивалентна IBM System/360 , работавшей с частотой один MIPS, а реализации System/360 ранее были де-факто стандартами производительности. Реальное количество инструкций, выполняемых за 1 секунду, составило около 500 000, что привело к жалобам на маркетинговое преувеличение. Результатом стало определение «VAX MIPS», скорости VAX-11/780; компьютер с производительностью 27 VAX MIPS будет запускать ту же программу примерно в 27 раз быстрее, чем VAX-11/780.
В цифровом сообществе термин VUP ( единица производительности VAX ) был более распространенным термином, поскольку MIPS плохо сравнивается между различными архитектурами. Соответствующий термин VUP кластера неофициально использовался для описания совокупной производительности VAXcluster . (Производительность VAX-11/780 по-прежнему служит базовым показателем в BRL-CAD Benchmark, пакете анализа производительности, включенном в дистрибутив программного обеспечения для твердотельного моделирования BRL-CAD.) VAX-11/780 включал в себя подчиненный стенд - один компьютер LSI-11 , который выполнял функции загрузки микрокода, загрузки и диагностики для родительского компьютера. Это было исключено из последующих моделей VAX. Таким образом, предприимчивые пользователи VAX-11/780 могли запускать три разные операционные системы Digital Equipment Corporation: VMS на процессоре VAX (с жестких дисков) и либо RSX-11S, либо RT-11 на LSI-11 (с одинарной плотности). дисковод гибких дисков).
VAX претерпел множество различных реализаций. Оригинальный VAX 11/780 был реализован в TTL и занимал шкаф размером четыре на пять футов [18] с одним процессором . На протяжении 1980-х годов высококлассные модели семейства постоянно совершенствовались с использованием все более быстрых дискретных компонентов, и эта эволюция завершилась выпуском VAX 9000 в октябре 1989 года. Эта конструкция оказалась слишком сложной и дорогой, и вскоре от нее отказались. введение. Реализации ЦП, которые состояли из множества логических матриц с эмиттерной связью (ECL) или микросхем массива макроячеек , включали супермини VAX 8600 и 8800 и, наконец, машины класса мэйнфреймов VAX 9000 . Реализации ЦП, состоящие из нескольких специальных микросхем MOSFET , включали машины классов 8100 и 8200. Младшие машины VAX 11-730 и 725 были построены с использованием битовых компонентов AMD Am2901 для ALU.
MicroVAX I представлял собой важный переход в семействе VAX. На момент разработки еще не было возможности реализовать полную архитектуру VAX в виде одной микросхемы СБИС (или даже нескольких микросхем СБИС, как это было позже сделано с ЦП V-11 VAX 8200/8300). Вместо этого MicroVAX I был первой реализацией VAX, которая перенесла некоторые из более сложных инструкций VAX (таких как упакованные десятичные и связанные с ними коды операций) в программное обеспечение эмуляции. Такое разделение существенно уменьшило объем требуемого микрокода и получило название архитектуры «MicroVAX». В MicroVAX I АЛУ и регистры были реализованы как единая микросхема вентильной матрицы , тогда как остальная часть управления машиной представляла собой традиционную логику.
Полная реализация архитектуры MicroVAX с помощью СБИС ( микропроцессора ) появилась вместе с процессором MicroVAX II 78032 (или DC333) и FPU 78132 (DC335). 78032 был первым микропроцессором со встроенным блоком управления памятью. [19] MicroVAX II был основан на одной четырехпроцессорной плате, на которой находились процессорные чипы и работали операционные системы MicroVMS или Ultrix -32 . Машина имела 1 МБ встроенной памяти и интерфейс шины Q22 с передачей DMA . На смену MicroVAX II пришли многие другие модели MicroVAX со значительно улучшенной производительностью и памятью.
Далее последовали процессоры VLSI VAX в виде реализаций V-11, CVAX , CVAX SOC («Система на кристалле», однокристальный CVAX), Rigel , Mariah и NVAX . Микропроцессоры VAX распространили свою архитектуру на недорогие рабочие станции , а позже также вытеснили модели VAX высокого класса. Такой широкий спектр платформ (от мэйнфреймов до рабочих станций), использующих одну архитектуру, был уникальным в компьютерной индустрии того времени. На кристалле микропроцессора CVAX была выгравирована различная графика. Фраза CVAX... когда ты достаточно заботишься, чтобы украсть самое лучшее, была выгравирована на ломаном русском языке как игра на лозунге Hallmark Cards , задуманная как послание советским инженерам, которые, как известно, крали компьютеры DEC для военных целей и наоборот . проектирование конструкции их чипов. [20] [21] К концу 1980-х годов мощность микропроцессоров VAX выросла и стала конкурентоспособной по сравнению с дискретными конструкциями. Это привело к отказу от серий 8000 и 9000 и их замене моделями VAX 6000 на базе Rigel, а затем системами VAX 7000 на базе NVAX .
В продуктах DEC архитектура VAX в конечном итоге была заменена технологией RISC . В 1989 году DEC представила ряд рабочих станций и серверов под управлением Ultrix , DECstation и DECsystem соответственно, с использованием процессоров MIPS Computer Systems . В 1992 году DEC представила собственную архитектуру набора команд RISC Alpha AXP (позже переименованную в Alpha) и собственный микропроцессор на базе Alpha DECchip 21064 — высокопроизводительную 64-битную конструкцию, способную работать с OpenVMS.
В августе 2000 года Compaq объявила, что оставшиеся модели VAX будут сняты с производства к концу года, [22] но старые системы продолжают широко использоваться. [23] Программные эмуляторы VAX Stromasys CHARON-VAX и SIMH остаются доступными. VMS теперь разрабатывается компанией VMS Software Incorporated, хотя и только для платформ Alpha , HPE Integrity и x86-64 .
Виртуальная память VAX разделена на четыре раздела. Каждый имеет размер один гигабайт (в контексте адресации 2 30 байт):
В VMS P0 использовался для пространства пользовательского процесса, P1 — для стека процессов, S0 — для операционной системы, а S1 был зарезервирован.
VAX имеет четыре аппаратно реализованных режима привилегий:
Длинное слово состояния процесса содержит 32 бита:
Первой системой на базе VAX была VAX-11/780 , член семейства VAX-11 . Высокопроизводительный VAX 8600 заменил VAX-11/780 в октябре 1984 года, а в середине 1980-х к нему присоединились миникомпьютеры MicroVAX начального уровня и рабочие станции VAXstation . На смену MicroVAX пришел VAX 4000 , на смену VAX 8000 пришел VAX 6000 в конце 1980-х, и был представлен VAX 9000 класса мэйнфреймов . В начале 1990-х годов был представлен отказоустойчивый VAXft , а также альфа -совместимый VAX 7000/10000 . Варианты различных систем на базе VAX продавались как VAXserver .
Компания System Industries разработала возможность предоставлять более чем одному процессору DEC, но не одновременно доступ для записи на общий диск. Они реализовали усовершенствование под названием SImulthan Machine ACceS ( SIMACS ), [24] [25] , которое позволило их специальному контроллеру диска устанавливать семафорный флаг для доступа к диску, разрешая несколько ЗАПИСИ в одни и те же файлы; диск используется несколькими системами DEC. SIMACS также существовал в системах PDP-11 RSTS .
Отмененные системы включают BVAX , высокопроизводительную систему VAX на основе эмиттерно-связанной логики (ECL) и две другие модели VAX на базе ECL: Argonaut и Raven . [26] Raven был отменен в 1990 году. [27] VAX под названием Gemini также был отменен, что было запасным вариантом на случай, если базирующийся на LSI Скорпион потерпит неудачу. Он так и не был отправлен.
Было выпущено несколько клонов VAX, как авторизованных, так и неавторизованных. Примеры включают в себя:
... архитектуры набора команд мы выбрали VAX как удобный для программистов набор инструкций, что является преимуществом
Особенно
известен своим большим, удобным для ассемблера и программиста набором команд — преимуществом, которое