DEC VAX
製造者: ディジタル・イクイップメント・コーポレーション
バイト幅: 8ビット(オクテット)
アドレスバス幅: 32ビット
ペリフェラルバス: Unibus
=Massbus
Q-bus
XMI
VAXBI
アーキテクチャ: CISC、仮想記憶
オペレーティングシステム: VAX/VMS
Ultrix
BSD UNIX
VAXELN

VAX (バックス) は、1970年代中ごろディジタル・イクイップメント・コーポレーション (DEC) が開発し販売した32ビットのミニコンピュータのシリーズ、及び同シリーズの命令セットアーキテクチャ (ISA) を指すこともある。前述のように32ビットアーキテクチャだが、同時に16ビット時代の最も人気のあったモデルであるPDP-11の後継ないし代替を意識した互換命令などを持っている点では、PDP-11の拡張という面もあるアーキテクチャでもある。

直交性の高い命令セット(機械語)とページング方式の仮想記憶が特徴である。VAXには、キュー挿入/削除命令や多項式計算命令などといった複雑な処理をする命令があり、豊富なアドレッシングモードとの組み合わせといった特徴がある。

後の64ビット化では、RISCマイクロプロセッサのAlphaがデザインされた。OSのVMSはOpenVMSという名称となっている。

名称

"VAX"は本来 Virtual Address eXtension の頭字語である。その名が示すとおり、VAXは16ビットのPDP-11の32ビットへの拡張であり、その巨大なアドレス空間の管理に仮想記憶を使用した初期の商用コンピュータでもあった。初期のVAXプロセッサには「互換モード」が実装されていて、PDP-11の命令のほとんどをエミュレートできた。VAX-11 という呼称は PDP-11ファミリの継承者であることを強調したものである。後のバージョンでは互換モードが縮小され、PDP-11の命令は徐々にエミュレーションソフトウェアで実行されるようになっていった。

VAXという名称は、1970年代に Mick Atkinson が発明した掃除機のブランド名でもある。DECとの間で商標使用に関する法的なやりとりがあった。解決策として非競争協定が結ばれた。つまり、DECは将来に渡って家電製品に進出せず、VAXコーポレーションはコンピュータに進出しないという約束である。

英語圏のユーザーの間では、「VAXコンピュータシステム」の複数形として VAXen という言葉が使用された。ox(雄牛) の複数形 oxen からの類推であるが、DECは商標保護の立場から VAXen という表現を歓迎しなかった。

歴史

VAX11/780。ベンチマークの基準とされたモデル。ワシントン大学にて

最初のVAXは VAX-11/780 であり、1977年10月25日にDECの株主会議で公開された[1]。この機種のアーキテクトはカーネギーメロン大学でゴードン・ベルが指導した Bill Streckerである[2]。その後様々な価格および性能、容量の派生機種が開発された。VAXは1980年代初期には非常に一般的になった。

VAX-11/780は時にMIPSの基準として扱われる。コンピュータの性能を示すMIPSという単位は、本来、単に実行される命令の個数を示すだけで、具体的にどのような仕事をこなせるのか、を反映しない。そこで、VAX-11/780でなんらかのベンチマークプログラムを動かし、それが示す性能を1MIPSとして、性能の基準とする、ということがしばしば行われたのである。1 VAX MIPS は VAX-11/780 の性能を意味し、あるコンピュータが 27 VAX MIPS の性能という場合、VAX-11/780 の約27倍の性能であることを意味する。この目的で実際によく使われたベンチマークプログラムは当時ポピュラーだったものの一つであるドライストーンで、こんにちでも時折使われている単位DMIPSは、あるマシンのドライストーンの成績の値を、VAX-11/780のドライストーンの成績の値1757で割った値である。他にVAX-11/780を性能比較の基準として今も使っている例として、BRL-CADベンチマークがある。これはBRL-CADというソリッドモデリングソフトウェアに含まれる性能解析スイートである。

DEC周辺では VUP (VAX Unit of Performance) という用語が使われた。関連用語として cluster VUP が VAXcluster の全体性能を示すのに使われた。

VAX-11/780にはLSI-11が内蔵されており、マイクロコードのロード、ブート、診断などに使われていた。その後の機種では内蔵していない。そのため780のユーザーはVMS以外にLSI-11上でRSX-11MやRT-11といったOSを動作させることもできた。

VAX 8350 のフロントカバーを外したところ

その後VAXは様々な実装がなされた。最初のVAXはTTLで実装されており、4×5フィートの筐体が1個のCPUの実装に使われた[3]。ECLゲートアレイ/マクロセルアレイ(英語版)チップを複数個使用した実装のCPUは、VAX 8600、VAX 8800、VAX 9000シリーズで使用された。複数個のMOSFETカスタムチップで実装されたCPUはVAX 8100、VAX 8200シリーズで使用された。VAX 11/730および725といったローエンド機はビットスライス方式で実装している。

MicroVAX I はVAXファミリの転換期のマシンである。その設計時、VAXアーキテクチャ全体を1個のVLSIチップで実装することはまだ不可能だった(後に VAX 8200/8300で実施されたような数個のVLSIチップによる実装も無理だった)。その代わりに MicroVAX I ではVAXの命令セットの複雑な部分のほとんどをエミュレーションソフトウェアに移行させ、基本的な命令だけをハードウェアで実装したのである。これによって大量に必要とされたマイクロコードを削減することが可能となった。これを"MicroVAX"アーキテクチャと称した。MicroVAX I では、ALUとレジスタが1個のゲートアレイチップで実装され、それ以外の制御部は従来の論理回路を使用した。

その後の MicroVAX II の 78032 CPU (DC333) と 78132 FPU (DC335) がMicroVAXアーキテクチャを完全VLSI(マイクロプロセッサ)で実装したものである。78032 はメモリ管理ユニットを内蔵した初のマイクロプロセッサである[4]。MicroVAX II の中核部は1枚の基板で実装されており、そこにプロセッサと1MBのメモリとDMA機構を備えたQ22-busのインタフェースが搭載されている。MicroVAXシリーズのその後の機種ではさらに改良やメモリの追加が行われていった。

その後、CVAX、SOC("System-on-a-chip"、ワンチップ版CVAX)、Rigel、Mariah、NVAX とチップは進化していった。VAXマイクロプロセッサは当初低価格なワークステーション向けに進化し、その後ハイエンドの機種にも使用されていった。メインフレームからワークステーションまでをカバーする1つのアーキテクチャは当時の業界ではVAXだけであった。CVAXマイクロプロセッサのダイには「最良のものを盗むには十分気をつけて」という意味の言葉がいいかげんなロシア語でエッチングされていた。これは当時のソビエト連邦の技術者に向けたメッセージであり、ソ連ではDECのコンピュータをリバースエンジニアリングしてクローンを開発していたためである[5][6]。

VAXアーキテクチャはRISC技術に取って代わられた。1989年、DECはMIPSアーキテクチャのプロセッサを使用しUltrixの動作するDECstationをリリースした。1992年、DECは自身のRISCプロセッサ Alpha(当初の名称は Alpha AXP)を導入した。この高性能64ビットRISCアーキテクチャ上では OpenVMS が動作した。

2000年8月、コンパックは2000年末までにVAXシリーズの生産を完全に終了すると発表した[7]。2005年までにVAXの生産は終了したが、古いシステムは今でも世界中で使われている。

オペレーティングシステム

VAXの本来のオペレーティングシステムは、DECのVAX/VMS(後にAlphaに移植されPOSIX準拠となった際に OpenVMS へ改名[8])である。VAXアーキテクチャとVMSオペレーティングシステムは互いを最大限に生かすため、同時並行的に開発された。これはVAXcluster機能の最初の実装の際も同様である。他のVAX用オペレーティングシステムとしては、BSD(4.3まで)、Ultrix-32、RTOSのVAXELN、Xinuなどがある。最近では、NetBSDとOpenBSDが様々なVAX機種をサポートし、LinuxのVAXアーキテクチャへの移植も行われている。

プロセッサアーキテクチャ

VAX
開発者 ディジタル・イクイップメント・コーポレーション
ビット数 32ビット
発表 1977年
デザイン CISC
タイプ メモリ-メモリ
エンコード 可変 (1から56バイトまで)
ブランチ 比較分岐命令
エンディアン リトルエンディアン
拡張 PDP-11互換モード、VAXベクタ [9]
レジスタ
汎用 16本[10]

命令セット

VAXの命令セットは強力で直交性が高い。当時多くのプログラムがアセンブリ言語で書かれていたので、プログラマが親しみやすい命令セットという観点は重要だった。その後、高水準言語でプログラミングすることが多くなり、命令セットを気にするのはコンパイラ開発者ぐらいになった。

VAXの命令セットで特徴的な点として、サブプログラムの最初にレジスタマスクを置く点が挙げられる。これは、そのサブプログラムに制御が渡されたとき、どのレジスタの内容を保持するかを示すビットパターンである。レジスタマスクは実行コード内にデータを埋め込んでいる形式なので、機械語コードを逐次的に解析するのが難しくなる。例えば、機械語コードに何らかの最適化を施すのが複雑化する[11]。

アドレッシングモード

VAXは、リテラル(即値)、レジスタ、ポストインクリメント、プレデクリメント、レジスタ間接、ポストインクリメント付きレジスタ間接、プレデクリメント付きレジスタ間接、ディスプレースメント (byte, word, long) 付きレジスタ間接、ディスプレースメント (byte, word, long) 付き二重間接、インデックス付きといった多数のアドレッシングモードを持ち、それらを組み合わせて使用できる。プログラムカウンタ (PC) はR15として汎用レジスタの1つとされているので、PCに対して各種アドレッシングモードを使用することもできる。そのためPC相対アドレッシングが可能であり、位置独立コードが容易に書ける。また、VAXには実効アドレスをロードする命令群もあり、それ自体はメモリアクセスしないが、後で使用するアドレスを計算するのに使われる。

仮想記憶空間マップ

VAXの仮想記憶空間は4つのセクションに分割されており、それぞれ1ギガバイトのサイズである[12]。

セクションアドレス範囲
P00x00000000 - 0x3fffffff
P10x40000000 - 0x7fffffff
S00x80000000 - 0xbfffffff
S10xc0000000 - 0xffffffff

VMSでは、P0をユーザープロセスの空間、P1はプロセスのスタック、S0はOSで使用し、S1は予約されていた。

特権モード

VAXにはハードウェアで実装された4つの特権モードが存在する。

番号モードVMSでの用途備考
0KernelOSカーネル最高特権レベル
1Executiveファイルシステム
2Supervisorシェル (DCL)
3User通常のプログラム群最低特権レベル

プロセッサ・ステータス・ロングワード “PSL” (プロセッサステータスレジスタ)

CM TP MBZ FPD IS cmod pmod MBZ IPL MBZ DV FU IV T N Z V C
31 30 29 27 26 25 23 21 20 15 7 6 5 4 3 2 1 0
ビット名前意味
31CM (the Compatibility Mode bit)PDP-11互換モード
30TP (the Trace Pending bit)個々の命令について1回だけトレースが行われることを保証する。
29:28MBZ (Must Be Zero)常にゼロ
27FPD (the First Part Done flag)命令の途中で割り込みやページフォールトが発生した。
26IS (the Interrupt Stack flag)カーネルモードで特別な割り込みスタックを使用中。
25:24cmod (the current privilege mode field)現在の特権モード
23:22pmod (the previous privilege mode field)最近の例外で現在のモードに移行した際の前のモード
21MBZ (Must Be Zero)常にゼロ
20:16IPL (the processor's Interrupt Priority Level)割り込み優先度。この値より優先度が高い割り込みしか割り込めない。
15:8MBZ (Must Be Zero)常にゼロ
7DV (the Decimal oVerflow trap enable)十進演算の結果が格納先に収まらない桁数の際、トラップを発生させるか否かを指定。
6FU (the Floating-point Underflow trap enable)浮動小数点演算の結果がアンダーフローとなった際、トラップを発生させるか否かを指定。
5IV (the Integer oVerflow trap enable)整数演算の結果がオーバーフローとなった際、トラップを発生させるか否かを指定。
4T (the Trace bit)セットすると、次の命令を実行した際にトレーストラップが発生。デバッグ用。
3N (the Negative condition code)セットすると、演算結果が負の場合にトラップが発生。
2Z (the Zero condition code)セットすると、演算結果がゼロの場合にトラップが発生。
1V (the oVerflow condition code)セットすると、演算結果がオーバーフローの場合にトラップが発生。
0C (the Carry condition code)演算の結果、キャリーまたはボローが発生するとセットされる。

プロセッサ・ステータス・ロングワードの下位16ビットがユーザ・プロセスから利用できるプロセッサ・ステータス・ワード(PSW)である。[13]

VAXシステム

ほぼ時系列に列挙している。DEC内部で開発中に使用したコードネームをイタリック体で示す。VAXシステムはVLSIプロセッサを使っているか使っていないかで大まかに分けられる。MicroVAX-I はその過渡期の設計である。

VLSI未使用のVAX

VAX 11/780
VAX 11/750

技術転換期のVAX

VLSI使用のVAX

MicroVAX 3600(左)とプリンター(右)

VAXserverはVAXのさまざまな機種(MicroVAX、VAX 4000、VAX 6000、VAX 9000)をネットワークサーバ専用に設定・構成したものである。

クローン

K 1840 - 東ドイツ製VAX-11/780クローン(1988)。ドレスデンにある。

公認のものも非公認のものも含めて、様々なVAXのクローンが生産された。以下に例を挙げる。

脚注

[脚注の使い方]

出典

  1. ↑ “VAX 11/780, The First VAX System (October 1977)”. 2012年11月3日閲覧。
  2. ↑ Slater, Robert (1987). Portraits in Silicon. MIT Press. p. 213. ISBN 978-0-262-69131-4
  3. ↑ “VAX 11/780 Computer – CPU”. Computer History Museum. 2012年10月24日閲覧。
  4. ↑ The Computer History Simulation Project: MicroVAX II (1985)
  5. ↑ micro.magnet.fsu.edu, Steal the best, retrieved 30 January 2008. 実際のロシア語のメッセージは次の通り: СВАКС... Когда вы забатите довольно воровать настоящий лучший
  6. ↑ The Computer History Simulation Project: CVAX (1987), retrieved 30 January 2008
  7. ↑ “VAX Systems: A letter from Jesse Lipcon”. 2000年8月15日時点のオリジナルよりアーカイブ。2012年11月3日閲覧。
  8. 1 2 “VAX/VMS at 20”. Digital Equipment Corporation (1997年). 2009年7月27日閲覧。
  9. ↑ “VAX MACRO and Instruction Set Reference Manual”. OpenVMS documentation (April 2001). 2012年11月3日閲覧。
  10. ↑ VAX Architecture & Assembly Reference. Department of Computer Science, Rochester Institute of Technology 2012年9月14日閲覧。
  11. ↑ Clinton F. Goss (June 1986), Machine Code Optimization - Improving Executable Object Code, New York University 2011年3月24日閲覧。
  12. ↑ アドレッシングという意味では、1GBは230バイトと等しい。
  13. ↑ 『VAX概説書』(初)ディジタル イクイップメント コーポレーション インターナショナル 日本支社、1981年10月。
  14. ↑ VAX timeline, ヒューレット・パッカードのウェブサイト
  15. ↑ DIGITAL Computing Timeline
  16. ↑ Trailing edge, 歴史的コンピュータのシミュレーションプロジェクト
  17. ↑ SuperASCII 1991年1月号, p. 48.
  18. ↑ Mark Smotherman (2008年7月19日). “Who are the Computer Architects?”. 2008年9月30日閲覧。
  19. ↑ “RAL Informatics Report 1984-85”. 2007年10月15日閲覧。
  20. ↑ “The TPA story”. 2007年10月15日閲覧。
  21. ↑ Dujnic, J.; Fristacky, N.; Molnar, L.; Plander, I.; Rovan, B.: On the history of computer science, computer engineering, and computer technology development in Slovakia. IEEE Annals of the History of Computing, vol. 21, no. 3, pp. 38-48, July-Sept. 1999
  22. ↑ Laimutis Telksnys, Antanas Zilinskas: Computers in Lithuania. IEEE Annals of the History of Computing, vol. 21, no. 3, pp. 31-37, July-Sept. 1999

参考文献

外部リンク

⌬ Phoenix Mesh CID: 未登録 IPFS未登録 📡 0ピア N=1 CRITICAL PQS A91