HP 3000シリーズは、ヒューレット・パッカード社が1973年に困難な開発を経てリリースしたミニコンピュータファミリである。最初の機種は性能問題から一旦回収された。このシリーズは最初にタイムシェアリング機能を搭載したオペレーティングシステム(OS)を搭載したミニコンピュータとなることを意図していた。信頼性が高く強力であったため、オフィスコンピュータ的な使われ方が主流であった。初期の機種は大きな筐体であったが、後の機種は机の下に収まる程度となった。

製品寿命はDECVAXよりも長かった。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-11VAXを合わせたよりも長い寿命であるが、OpenVMSAlphaベースのシステムから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

外部リンク

編集