VAX
1970年代中ごろディジタル・イクイップメント・コーポレーション社が開発し販売した32ビットミニコンピュータのシリーズ
(VAX-11から転送)
VAX (バックス) は、1970年代中ごろディジタル・イクイップメント・コーポレーション (DEC) が開発し販売した32ビットのミニコンピュータのシリーズ、及び同シリーズの命令セットアーキテクチャ (ISA) を指すこともある。前述のように32ビットアーキテクチャだが、同時に16ビット時代の最も人気のあったモデルであるPDP-11の後継ないし代替を意識した互換命令などを持っている点では、PDP-11の拡張という面もあるアーキテクチャでもある。
DEC VAX | |
---|---|
製造者: | ディジタル・イクイップメント・コーポレーション |
バイト幅: | 8ビット(オクテット) |
アドレスバス幅: | 32ビット |
ペリフェラルバス: | Unibus =Massbus Q-bus XMI VAXBI |
アーキテクチャ: | CISC、仮想記憶 |
オペレーティングシステム: | VAX/VMS Ultrix BSD UNIX VAXELN |
名称
編集
"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 という表現を歓迎しなかった。
歴史
編集
最初の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の生産は終了したが、古いシステムは今でも世界中で使われている。
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/82/DEC-VAX-8350-front-0a.jpg/300px-DEC-VAX-8350-front-0a.jpg)
オペレーティングシステム
編集プロセッサアーキテクチャ
編集開発者 | ディジタル・イクイップメント・コーポレーション |
---|---|
ビット数 | 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]。
セクション | アドレス範囲 |
---|---|
P0 | 0x00000000 - 0x3fffffff |
P1 | 0x40000000 - 0x7fffffff |
S0 | 0x80000000 - 0xbfffffff |
S1 | 0xc0000000 - 0xffffffff |
VMSでは、P0をユーザープロセスの空間、P1はプロセスのスタック、S0はOSで使用し、S1は予約されていた。
特権モード
編集VAXにはハードウェアで実装された4つの特権モードが存在する。
番号 | モード | VMSでの用途 | 備考 |
---|---|---|---|
0 | Kernel | OSカーネル | 最高特権レベル |
1 | Executive | ファイルシステム | |
2 | Supervisor | シェル (DCL) | |
3 | User | 通常のプログラム群 | 最低特権レベル |
プロセッサ・ステータス・ロングワード “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 |
ビット | 名前 | 意味 |
---|---|---|
31 | CM (the Compatibility Mode bit) | PDP-11互換モード |
30 | TP (the Trace Pending bit) | 個々の命令について1回だけトレースが行われることを保証する。 |
29:28 | MBZ (Must Be Zero) | 常にゼロ |
27 | FPD (the First Part Done flag) | 命令の途中で割り込みやページフォールトが発生した。 |
26 | IS (the Interrupt Stack flag) | カーネルモードで特別な割り込みスタックを使用中。 |
25:24 | cmod (the current privilege mode field) | 現在の特権モード |
23:22 | pmod (the previous privilege mode field) | 最近の例外で現在のモードに移行した際の前のモード |
21 | MBZ (Must Be Zero) | 常にゼロ |
20:16 | IPL (the processor's Interrupt Priority Level) | 割り込み優先度。この値より優先度が高い割り込みしか割り込めない。 |
15:8 | MBZ (Must Be Zero) | 常にゼロ |
7 | DV (the Decimal oVerflow trap enable) | 十進演算の結果が格納先に収まらない桁数の際、トラップを発生させるか否かを指定。 |
6 | FU (the Floating-point Underflow trap enable) | 浮動小数点演算の結果がアンダーフローとなった際、トラップを発生させるか否かを指定。 |
5 | IV (the Integer oVerflow trap enable) | 整数演算の結果がオーバーフローとなった際、トラップを発生させるか否かを指定。 |
4 | T (the Trace bit) | セットすると、次の命令を実行した際にトレーストラップが発生。デバッグ用。 |
3 | N (the Negative condition code) | セットすると、演算結果が負の場合にトラップが発生。 |
2 | Z (the Zero condition code) | セットすると、演算結果がゼロの場合にトラップが発生。 |
1 | V (the oVerflow condition code) | セットすると、演算結果がオーバーフローの場合にトラップが発生。 |
0 | C (the Carry condition code) | 演算の結果、キャリーまたはボローが発生するとセットされる。 |
プロセッサ・ステータス・ロングワードの下位16ビットがユーザ・プロセスから利用できるプロセッサ・ステータス・ワード(PSW)である。[13]
VAXシステム
編集
ほぼ時系列に列挙している。DEC内部で開発中に使用したコードネームをイタリック体で示す。VAXシステムはVLSIプロセッサを使っているか使っていないかで大まかに分けられる。MicroVAX-I はその過渡期の設計である。
VLSI未使用のVAX
編集- VAX 11 シリーズ
- VAX 11/780 (Star) - TTL CPU, 1977年10月[14]
- VAX 11/750 (Comet) - 小型版, 性能も低い TTL ゲートアレイベースの実装, 1980年10月
- VAX 11/751 - 堅牢なラックマウント型 11/750
- VAX 11/730 (Nebula) - さらに小型化, さらに性能が低いビットスライス実装, 1982年4月
- VAX 11/782 (Atlas) - 2プロセッサ版 11/780
- VAX 11/784 (VAXimus) - 4プロセッサ版 11/780, 1つの MA780 メモリユニットを共有, 非常に珍しい。
- VAX 11/785 (Superstar) - 高速版 11/780, 1984年4月
- VAX 11/787 - 2プロセッサ版 11/785
- VAX 11/788 (VISQ)
- VAX 11/725 (LCN) - 低価格版 11/730
- VAX 8000 シリーズ
- VAX 8600 (Venus) - 開発中の別名は 11/790, ECL ゲートアレイ CPU, 1984年10月
- VAX 8650 (Morningstar) - 開発中の別名は 11/795, 高速版 8600, VAX 11/78xモデルで使われたSBIバックプレーンを使用した最後の機種, PDP-11互換モードを持つ最後の機種, その後の全 8000 シリーズ機種は VAXBI を使用
- VAX 8x00 (Gemini) - LSIベースの Scorpio が失敗したときの予備として並行開発; 出荷されず
- VAX 8500 (Flounder) - 1プロセッサでかなり低速な 8800
- VAX 8530 (Skipjack) - 1プロセッサでやや低速な 8800
- VAX 8550 (Skipjack) - 1プロセッサ版 8800, 拡張不可
- VAX 8700 (Nautilus) - 1プロセッサ版 Nautilus, 8800にアップグレード可能
- VAX 8800 (Nautilus) - 2プロセッサ ECL マクロセルアレイ-ベースの実装, 1986年1月
- VAX 8810/8820/8830/8840 (Polarstar) - Nautilusの派生シリーズで1~4プロセッサ, コンソールプロセッサをアップデート
- VAX 8974/8978 - それぞれ4台か8台の VAX 8810 から構成されるクラスター, 1987年1月
- VAX 9000 (Aridus) - 空冷式だが当初水冷式で設計され Aquarius と呼ばれていた, ECL マクロセルアレイ CPU, VAXBI, 1989年10月[15]
- VAX 9000 Model 110
- VAX 9000 Model 210
- VAX 9000 Model 310
- VAX 9000 Model 4x0 (x = プロセッサ数, 1~4)
技術転換期のVAX
編集- MicroVAX/VAXstation I (Seahorse) - 1984年10月
VLSI使用のVAX
編集![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Microvax_3600_%282%29.jpg/220px-Microvax_3600_%282%29.jpg)
クローン
編集![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Robotron_K1840_2.jpg/250px-Robotron_K1840_2.jpg)
脚注
編集出典
編集
(一)^ “VAX 11/780, The First VAX System (October 1977)”. 2012年11月3日閲覧。
(二)^ Slater, Robert (1987). Portraits in Silicon. MIT Press. p. 213. ISBN 978-0-262-69131-4
(三)^ “VAX 11/780 Computer – CPU”. Computer History Museum. 2012年10月24日閲覧。
(四)^ The Computer History Simulation Project: MicroVAX II (1985)
(五)^ micro.magnet.fsu.edu, Steal the best, retrieved 30 January 2008. 実際のロシア語のメッセージは次の通り: СВАКС... Когда вы забатите довольно воровать настоящий лучший
(六)^ The Computer History Simulation Project: CVAX (1987), retrieved 30 January 2008
(七)^ “VAX Systems: A letter from Jesse Lipcon”. 2000年8月15日時点のオリジナルよりアーカイブ。2012年11月3日閲覧。
(八)^ ab“VAX/VMS at 20”. Digital Equipment Corporation (1997年). 2009年7月27日閲覧。
(九)^ “VAX MACRO and Instruction Set Reference Manual”. OpenVMS documentation (2001年4月). 2012年11月3日閲覧。
(十)^ 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
参考文献
編集- 「SuperASCII 1991年1月号」第2巻第1号、株式会社アスキー出版、1991年1月1日。