HP 3000
HP 3000シリーズは、ヒューレット・パッカード社が1973年に困難な開発を経てリリースしたミニコンピュータファミリである。最初の機種は性能問題から一旦回収された。このシリーズは最初にタイムシェアリング機能を搭載したオペレーティングシステム(OS)を搭載したミニコンピュータとなることを意図していた。信頼性が高く強力であったため、オフィスコンピュータ的な使われ方が主流であった。初期の機種は大きな筐体であったが、後の機種は机の下に収まる程度となった。
製品寿命はDECのVAXよりも長かった。2001年11月、後継である e3000 シリーズのサポート終了を5年後とすることが発表された。製品の新規販売は2003年までで、サポート終了までの移行期間は今のところ 2008年12月31日までとされている(当初、2006年末とされていたが延長された)。
初期のメモリセグメントと64K制限
編集コードとデータは可変長セグメントに格納される。コードはリードオンリーでリエントラントであり、最大 32,760 バイトまで、データは最大 65,528 バイトまでである。MPE はコードセグメントをプログラムファイルから読み込み、セグメント化された共有ライブラリ (SL) ファイルを必要に応じて読み込む。1つのプロセスには最大 256 セグメントまで持たせることができる。
コードセグメントは最大 32KB だが、ルーチン呼び出し時にはセグメント番号とセグメント内のルーチン番号を指定するため、1つのプログラム内に理論上最大 64K 個のルーチンが存在可能であった。当時の16ビットミニコンピュータではアドレス空間が全部で 64K であることが多かった。データセグメントとスタックセグメントは最大64Kであった。共有ライブラリには共有のデータは存在せず、各プロセス専用のデータセグメントを使用する。
システムのプログラミングはALGOL系の言語 SPL で行われるが、インラインアセンブラが利用可能であり、命令セットへの直接アクセスが可能である。HP 3000 の標準端末 HP 2640 シリーズはキャラクタモードだけでなく、フォームからのデータ入力を行うブロックモードをサポートしていた。
Classic と PA-RISC XL
編集HP 3000 ファミリは 16ビットの "Classic" と 32ビットの "XL"(後に "IX")ファミリがあり、後者は1984年にPA-RISCチップの登場とともに追加された。両者にはバイナリ互換性はないが、低速ながらエミュレーションで従来のコードを実行したり、再コンパイルして実行することが可能であった。初期の "Classic" は独自のCISCプロセッサを使用している。PA-RISC を搭載した HP 3000 は1988年ごろから量産されるようになり、1995年までに完全に置換がなされたものの、ユーザーサイトでは従来のマシンがそのまま使われ続けた。
3000 シリーズのオペレーティングシステムは MPE(Multi-Programming Executive)と呼ばれ、その後 MPE-XL となり、さらにPOSIX準拠となってからは MPE-IX と呼ばれた。初期のバージョンには独自のコマンド行インタプリタがあり、階層型ファイルシステムは無い。プログラムをコマンドとして実行するという概念が無く、例えばコンパイラは "run fortran.pub.sys" などと打ち込んで実行される。当時の他のミニコンピュータに比較して、非常に信頼性が高く安定動作するのが特徴であった。
HP 3000 シリーズの成功の一因は、OSの一部として(一部例外はあるが)独自のデータベース管理システム Image(後に TurboIMAGE に改称)を搭載していた点である。これは、OSやハードウェアの違いに関わらずバイナリ互換性を維持しており、1973年のプログラムが2003年のシステム上でも再コンパイルなしで動作する。
市場がUNIXにシフトしていく中、ヒューレット・パッカードは2001年11月、HP 3000 の寿命(サポート期限)を2006年末とすることを発表した(販売は2003年まで)。2006年初め、HPは制限つきでサポートを2年延長することを発表した。これは、独自仕様のミニコンピュータとしては異例の長い製品寿命である。PDP-11とVAXを合わせたよりも長い寿命であるが、OpenVMS は AlphaベースのシステムからIA-64ベースのシステムへとサポートされ続ける予定である。
スタックマシン
編集今日、多くの命令セットは汎用レジスタモデルに基づいている。HP 3000 のプロセッサとメモリのアーキテクチャはスタックマシンモデルに基づいている。これはバロース B5000に影響されたと言われている。レジスタ数は少なく(例えば HP 1000 では AX レジスタと BX レジスタの2本だけ)、オペランドは局所変数やリターンアドレスを置くスタックと同じスタックに置かれる。従って、例えば次のようなコードがあったとする。
LOAD AX, 0X0001
LOAD BX, 0X0002
ADD AX, BX
これは次のコードと同じである。
PUSH 0X0001
PUSH 0X0002
ADD
サブルーチン呼び出しの call 命令は固定個の引数しか取れない。そのため、C言語コンパイラの実装は難しかった(実装されなかったわけではない)。
16ビットのマイクロプログラム方式の機種(Series I, II, III, 30, 33, 39, 40, 42, 44, 48, 52, 58, 64, 68, 70, 37, ...)は、16ビットのワード単位のアドレスにバイトアドレス指定を加え、セグメント方式のスタックマシン型命令セットアーキテクチャ (ISA) であった。約 214 種の命令のほとんどは16ビット長である。スタック操作命令は16ビットワードに2つの操作を詰め込むことができ、一部の命令が32ビットである。
CISC実装の変遷は以下の通り。
- III: スタックのトップ4ワードがレジスタ。マイクロ命令サイクルは 175ナノ秒、すなわち 5.7MHz
- 30, 33: SOS(シリコン・オン・サファイア)。スタックのトップ2ワードがレジスタ。マイクロ命令サイクルは 90ナノ秒、すなわち 11MHz。各命令は 3-7 サイクルかかる。
- 40, 42, 44, 48: ショットキーTTL。スタックのトップ4ワードがレジスタ。マイクロ命令サイクルは 105ナノ秒、すなわり 9.5MHz
- 64, 68: ECL。スタックのトップ8ワードがレジスタ。マイクロ命令サイクルは 75ナノ秒、すなわち 13MHz。8KBキャッシュ。60Kb の書き換え可能なコントロールストア。16ビットALU×2。
- 37: CMOS。スタックのトップ4ワードがレジスタ。
32ビットモデルは PA-RISC を使っている。PA-RISC のバージョンと機種の対応は以下の通り。
- PA-RISC 1.0 Series 925, 930, 935, 949, 950, 955, 960, 980
- PA-RISC 1.1 Series 917, 920, 922, 927, 937, 947, 948, 957, 958, 967, 977sx, 987, 990, 991, 992, 995
- PA-RISC 2.0 Series 918, 928, 968, 978, 988, 996, A クラスと N クラス
参考文献
編集- Hewlett Package: HP3000 Computer Systems: General Information Manual; August 1983; 5953-7553
外部リンク
編集- The Classic HP 3000 - 歴史
- Edler, C The Rise, Fall and Rise of the HP 3000 - 歴史
- HP3000 FAQ
- Bitsavers スキャンされPDF化された各種マニュアル類。ただし、ミラーサイト利用推奨。
- Printing HP3000 MPE/iX to Windows
- HP Computer Museum スキャンしてPDF化されたマニュアル群がある。
- HP 3000 General Information Manual Sep 79, Oct 1984 大きなPDFファイルなので、要注意
- HP 3000 Performance (text file)
- "HP SYSTEM/3000 system description" promotional material Nov 1971
- November 19, 2001: HP Sunsets Its Proprietary e3000 Server Line
- November 14, 2001 Hewlett-Packard phases out server line, the line will be phased out over a five-year period
- hp.com: HP is committed to continued support of HP e3000 installations
- HP e3000 transition program FAQ
- Classic Genealogy and PA-RISC Systems Performance Spreadsheets
- Picture of HP 3000
- ウィキメディア・コモンズには、HP 3000に関するカテゴリがあります。