VAX (仮想アドレス拡張の頭文字)は、20世紀後半にデジタル・イクイップメント・コーポレーション(DEC)によって開発・販売された、32ビット命令セットアーキテクチャ(ISA)と仮想メモリを特徴とする一連のコンピュータです。1977年10月25日に発表されたVAX-11/780は、VAX ISAを実装した人気と影響力のあるコンピュータ群の最初の機種でした。VAXファミリーはDECにとって大成功を収め、最後の機種は1990年代初頭に登場しました。VAXの後継機種はDEC Alphaで、VAXからの移植を容易にするために、VAXマシンのいくつかの機能を取り入れています。
VAXは、デジタル・イクイップメント・コーポレーション(DEC)によって、史上最も成功したミニコンピュータの1つである16ビットのPDP-11の後継機として設計されました[ 3 ] 。PDP-11は約60万台販売されました。このシステムは、 PDP-11との下位互換性を維持しつつ、メモリを完全な32ビット実装に拡張し、デマンドページング仮想メモリを追加するように設計されました。VAXという名前は、プログラムが新しく利用可能になったメモリを利用しながらも、変更されていないユーザーモードのPDP-11コードとの互換性を維持できる仮想アドレス拡張の概念に由来しています。初期モデルで使用されていた「VAX-11」という名前は、この機能を強調するために選ばれました。VAX ISAは、複雑命令セットコンピュータ(CISC)設計とみなされています。
DECはPDP-11との互換性がもはや大きな懸念事項ではなくなったため、すぐに-11というブランド名を廃止した。製品ラインはVAX 9000のようなハイエンドメインフレームから、VAXstationシリーズのようなワークステーション規模のシステムまで拡大した。VAXファミリーは最終的に10種類の異なる設計、合計100種類以上のモデルを擁するに至った。それらはすべて相互に互換性があり、通常はVAX/VMSオペレーティングシステムで動作した。
VAXは、アセンブリ言語プログラマに優しいアドレッシングモードとマシン命令が非常に多く、高度に直交した命令セットアーキテクチャ、キューの挿入や削除、数値フォーマット、多項式評価などの複雑な操作のための命令を備えていることから、典型的なCISC ISAとして認識されてきた[ 4 ] 。[ 5 ]

「VAX」という名前は、仮想アドレス拡張の頭文字をとったもので、VAXが16ビットのPDP-11 [ 3 ]の32ビット拡張と見なされていたことと、( Prime Computerに続いて)このより大きなアドレス空間を管理するために仮想メモリを早期に採用したことの両方に由来しています。
VAXプロセッサの初期バージョンでは、PDP-11の多くの命令をエミュレートする「互換モード」が実装されており、VAX-11の「11」はこの互換性を強調するために付けられました。後のバージョンでは、互換モードと使用頻度の低いCISC命令の一部は、オペレーティングシステムソフトウェアによるエミュレーションに委ねられました。
VAX の命令セットは、強力で直交性があり、[ 6 ]「コンパイラに優しい」[ 3 ]ように設計されました。導入当時は、多くのプログラムがアセンブリ言語で書かれていたため、「プログラマに優しい」命令セットを持つことが重要でした。[ 7 ] [ 8 ]時が経つにつれ、より多くのプログラムが高級プログラミング言語で書かれるようになり、命令セットはあまり目立たなくなり、それを気にするのはコンパイラ開発者だけになりました。
VAX命令セットの特異な点の1つは、各サブルーチンの開始時にレジスタマスク[ 9 ]が存在することです。これらは、サブルーチンに制御が渡されたときに、どのレジスタを保持するかを指定する任意のビットパターンです。ほとんどのアーキテクチャでは、必要なデータを保存するための命令を生成するのはコンパイラの役割であり、通常はコールスタックを一時的なストレージとして使用します。16個のレジスタを持つVAXでは、データの保存に16個の命令、復元にさらに16個の命令が必要になる場合があります。マスクを使用すると、単一の16ビット値がハードウェア内部で同じ操作を実行するため、時間とメモリを節約できます。[ 6 ]
レジスタマスクは実行可能コード内に埋め込まれたデータの一種であるため、マシンコードの線形解析を困難にする可能性があります。これは、マシンコードに適用される最適化手法を複雑にする可能性があります。[ 10 ]

VAX のネイティブ オペレーティングシステムは Digital 社の VAX/VMS (Virtual Memory System) です。これは、 Alphaに移植され、 POSIX標準に準拠するように変更され、X/OpenコンソーシアムによってXPG4に準拠しているとブランド化された 1991 年または 1992 年初頭にOpenVMSと改名されました。[ 11 ]同社は、PDP-11 のように VAX に多くの互換性のないオペレーティングシステムが存在することを避けたいと考えていました。[ 3 ] VAX と VMS は、 VAXcluster機能の初期実装と同様に、互いを最大限に活用するために「同時に設計」されました。
1980年代、デジタル社では、同じハードウェア上で複数の独立したVMSおよびULTRIXインスタンスを実行できるようにすることを目的として、VMM(Virtual Machine Monitor)と呼ばれるVAXアーキテクチャ用のハイパーバイザ(VAXセキュリティカーネルとも呼ばれる)が開発されました。 [ 12 ] VMMはTCSEC A1準拠を達成することを意図していました。1980年代後半にはVAX 8000シリーズのハードウェア上で動作していましたが、顧客へのリリース前に開発が中止されました。
その他の VAX オペレーティングシステムには、Berkeley Software Distribution (BSD) UNIXのさまざまなリリース(4.3BSDまで) 、Ultrix -32、VAXELN、およびXinuが含まれます。最近では、NetBSD [ 13 ]とOpenBSD [ 14 ]がさまざまな VAX モデルをサポートしており、 Linux をVAX アーキテクチャに移植する作業も行われています。 [ 15 ] OpenBSD は 2016 年 9 月にこのアーキテクチャのサポートを終了しました。 [ 16 ]

VAX の設計は 1975 年頃に始まりました。これは、DEC が PDP-11 の 16 ビット アーキテクチャではアドレス指定可能なメモリの量が制限されすぎていると認識した頃です。[ 3 ]最初に販売された VAX モデルはVAX-11/780で、1977 年 10 月 25 日に DEC の年次株主総会で発表されました。[ 17 ]カーネギー メロン大学でC. ゴードン ベルの博士課程の学生だったビル ストレッカーがアーキテクチャを担当しました。[ 18 ] PDP-11 と同様に、VAX は非常に成功し、1980 年代初頭から 1990 年代初頭にかけて、DEC の売上、売上成長、利益の大部分を占めました。VAX と VMS は、DEC が積極的に開発している唯一のコンピュータ アーキテクチャになりました。[ 3 ]その後、さまざまな価格、パフォーマンス レベル、容量のさまざまなモデルが作成されました。VAXスーパーミニコンピュータは、1980 年代初頭に非常に人気がありました。
VAX-11/780はしばらくの間、CPUベンチマークの標準として使われていました。当初は1 MIPSマシンと呼ばれていましたが、これはその性能が1 MIPSで動作するIBM System/360と同等であり、System/360の実装がそれまで事実上の性能標準だったためです。1秒間に実行される実際の命令数は約50万で、マーケティング上の誇張だという批判がありました。その結果、「VAX MIPS」という単位が定義され、これはVAX-11/780の速度を表す単位となりました。27 VAX MIPSの性能を持つコンピュータは、同じプログラムをVAX-11/780よりも約27倍速く実行できることを意味します。
デジタルコミュニティでは、 MIPSは異なるアーキテクチャ間で比較しにくいため、 VUP(VAX Unit of Performance)という用語の方が一般的でした。関連用語であるクラスタVUPは、VAXクラスタの総合的なパフォーマンスを表すために非公式に使用されていました。(VAX-11/780のパフォーマンスは、BRL-CADソリッドモデリングソフトウェア配布に含まれるパフォーマンス分析スイートであるBRL-CADベンチマークのベースラインメトリックとして今でも使用されています。)VAX-11/780には、親コンピュータのマイクロコードロード、ブート、診断機能を実行する従属的なスタンドアロンLSI-11コンピュータが含まれていました。これは、後続のVAXモデルでは削除されました。そのため、意欲的なVAX-11/780ユーザーは、VAXプロセッサ上のVMS(ハードドライブから)、およびLSI-11上のRSX-11SまたはRT-11(シングル密度シングルドライブフロッピーディスクから)という3つの異なるDigital Equipment Corporationオペレーティングシステムを実行することができました。
VAX はさまざまな実装を経てきました。最初の VAX 11/780 はTTLで実装され、単一のCPUで4 フィート x 5 フィートのキャビネット[ 19 ]を埋め尽くしました。1980 年代を通じて、このファミリーのハイエンドは、より高速なディスクリート コンポーネントを使用して継続的に改良され、この進化は1989 年 10 月にVAX 9000が導入されることで終了しました。この設計は複雑で高価すぎることが判明し、導入後まもなく最終的に放棄されました。複数のエミッタ結合ロジック(ECL)ゲート アレイまたはマクロセル アレイチップで構成されるCPU 実装には、VAX 8600 および 8800スーパーミニ、そして最終的に VAX 9000メインフレーム クラス マシンが含まれます。複数のMOSFETカスタムチップで構成される CPU 実装には、8100 および 8200 クラス マシンが含まれます。
MicroVAX Iは、VAXファミリーにおける大きな転換点となりました。設計当時は、VAXアーキテクチャ全体を単一のVLSIチップ(あるいは、後にVAX 8200/8300のV-11 CPUで実現されたように、数個のVLSIチップ)として実装することはまだ不可能でした。その代わりに、MicroVAX Iは、より複雑なVAX命令(パック10進数や関連するオペコードなど)の一部をエミュレーションソフトウェアに移行した最初のVAX実装となりました。この分割により、必要なマイクロコードの量が大幅に削減され、「MicroVAX」アーキテクチャと呼ばれるようになりました。MicroVAX Iでは、ALUとレジスタは単一のゲートアレイチップとして実装され、マシン制御の残りの部分は従来のロジックでした。
MicroVAXアーキテクチャの完全なVLSI(マイクロプロセッサ)実装は、MicroVAX IIの78032(またはDC333)CPUと78132(DC335)FPUで実現しました。78032は、オンボードメモリ管理ユニットを備えた最初のマイクロプロセッサでした[ 20 ]。MicroVAX IIは、プロセッサチップを搭載し、 MicroVMSまたはUltrix -32オペレーティングシステムを実行する単一のクワッドサイズのプロセッサボードに基づいていました。このマシンは、1 MBのオンボードメモリとDMA転送を備えたQ22バスインターフェースを備えていました。MicroVAX IIの後継として、パフォーマンスとメモリが大幅に改善された多くのMicroVAXモデルが登場しました。
V-11、CVAX、CVAX SOC(「System On Chip」、シングルチップのCVAX)、Rigel、Mariah、NVAX実装の形で、さらにVLSI VAXプロセッサが登場しました。VAXマイクロプロセッサは、アーキテクチャを安価なワークステーションに拡張し、後にハイエンドのVAXモデルにも取って代わりました。1つのアーキテクチャを使用するこの幅広いプラットフォーム(メインフレームからワークステーションまで)は、当時のコンピュータ業界では他に類を見ないものでした。さまざまなグラフィックがCVAXマイクロプロセッサのダイにエッチングされました。「CVAX... when you care enough to steal the very best」というフレーズは、 Hallmark Cardsのスローガンをもじったもので、軍事用途のためにDECコンピュータを盗み出し、チップ設計をリバースエンジニアリングしていることで知られていたソ連のエンジニアへのメッセージとして、ロシア語で刻まれました。 [ 21 ] [ 22 ] 1980年代後半までに、VAXマイクロプロセッサはディスクリート設計と競争できるほどのパワーを身につけました。これにより、8000シリーズと9000シリーズは廃止され、Rigel社製エンジンを搭載したVAX 6000シリーズ、そして後にNVAX社製エンジンを搭載したVAX 7000シリーズに置き換えられた。
ムーアの法則から推測すると、DEC は VAX の 32 ビット設計が 1999 年頃まで実行可能なアーキテクチャになると予想していました。同社は1980 年代にRISC が従来のコンピューティング アーキテクチャをはるかに高いコストパフォーマンスで置き換えるとは予想していませんでした。[ 3 ] PC Magazine は1988 年に、MASS-11 ワード プロセッサが、一般的なワークロードで VAX 8550 よりもIBM PC ATで高速に動作することを発見しました。 [ 23 ] Sun MicrosystemsなどのUnix RISC システムがVAX の顧客を引き付けるにつれて、[ 24 ] 1989 年に DEC は、MIPS Computer Systemsのプロセッサを使用してUltrixを実行する DECstationおよびDECsystem という一連の RISC ワークステーションとサーバーを発表しました。 1992年、DECは独自のRISC命令セットアーキテクチャであるAlpha AXP(後にAlphaと改名)と、AlphaベースのマイクロプロセッサであるDECchip 21064を発表しました。これはOpenVMSを実行できる高性能64ビット設計でした。
2000 年 8 月、Compaq は残りの VAX モデルを年末までに廃止すると発表したが[ 25 ]、古いシステムは依然として広く使用されている[ 26 ] 。Stromasys CHARON -VAXおよびSIMHソフトウェアベースの VAX エミュレータは引き続き利用可能である。VMS は現在、VMS Software Incorporated によって開発されているが、 Alpha、HPE Integrity、およびx86-64プラットフォームのみに対応している。

VAXの仮想メモリは4つのセクションに分割されています。各セクションのサイズは1ギガバイト(アドレス指定の観点からは2³⁰バイト)です。
VMSの場合、P0はユーザープロセス空間、P1はプロセススタック、S0はオペレーティングシステムに使用され、S1は予約済みでした。
VAXには、ハードウェアで実装された4つの特権モードがあります。
プロセスステータスのロングワードは32ビットです。

最初の VAX ベースのシステムは、 VAX-11ファミリーの一員であるVAX-11/780でした。ハイエンドのVAX 8600 は1984 年 10 月に VAX-11/780 の後継として登場し、 1980 年代半ばにはエントリーレベルのMicroVAXミニコンピュータとVAXstationワークステーションが加わりました。MicroVAX はVAX 4000に、VAX 8000 はVAX 6000に1980 年代後半に後継され、メインフレームクラスのVAX 9000 が導入されました。1990 年代初頭には、フォールトトレラントのVAXftとAlpha互換のVAX 7000/10000が導入されました。さまざまな VAX ベースのシステムの派生版がVAXserverとして販売されました。
System Industries は、複数の DEC CPU に、同時にではないが共有ディスクへの書き込みアクセス権を与える機能を開発しました。彼らはSIMACS (同時マシンアクセス)と呼ばれる拡張機能を実装し[ 27 ] [ 28 ] 、これにより、専用のディスクコントローラがディスクアクセス用のセマフォフラグを設定し、同じファイルへの複数の書き込みを許可できるようになりました。ディスクは複数の DEC システムで共有されます。SIMACSはPDP-11 RSTSシステムにも存在しました。
キャンセルされたシステムには、ハイエンドのエミッタ結合ロジック(ECL)ベースのVAXであるBVAXと、他の2つのECLベースのVAXモデルであるArgonautとRavenが含まれる。[ 29 ] Ravenは1990年にキャンセルされた。[ 30 ] LSIベースのScorpioが失敗した場合の代替案としてGeminiというVAXもキャンセルされた。出荷されることはなかった。
正規版と非正規版の両方を含む、多数のVAXクローンが製造された。例としては以下のものが挙げられる。
…命令セットアーキテクチャの中で、プログラマに優しい命令セットであるVAXを選択しました。
特に、アセンブラプログラマーにとって使いやすい大規模な命令セットで知られています。