もちろんSystem/370の命令と互換性を保つ必要があれば、いやでもこうした命令をサポートする必要があるのだが、幸いにも交換機プロジェクトは単に性能が12MIPSあれば良い、ということで命令セットの互換性を保つ必要はなかった。そこで博士は全く新しい命令体系を生み出す。具体的には、
──といった事柄が挙げられる。ちなみに最後の遅延スロットは博士の発明ではなく、もともとはLASL(Los Alamos Scientific Laboratory:現在のLANL: Los Alamos National Laboratorの前身)が52年に製造したMANIAC I(Mathematical Analyzer, Numerical Integrator, and Computer or Mathematical Analyzer, Numerator, Integrator, and Computer)というマシンで実装されたメカニズムが最初との話であった。
この命令フォーマット原案は75年に完成し、これの評価が良かったためかプロジェクトはお取りつぶしとならず、あらためてIBM 801プロジェクトとして存続が決まった。この時点でまず開発チームは、原案を基にした初版の命令セットに基づいたシミュレーターの構築をSystem/370上で始めるとともに、ソフトウェアの移植が始まる。最初に開発されたのは、PL/1のサブセットであるPL.8で、次いでこのPL.8を利用してPL/1やFortran、Cなどのコンパイラが移植されていく。これと並行して細かい命令フォーマットの検討が行われていった。
この結果、
──といった構成に落ち着くことになった。
このあたりは、ハードウェアの実装とのトレードオフも絡んでくる部分ではある。ちなみにレジスタ長は24bitであり、アドレスも24bitなので最大16MBのメモリ空間ということになる。言うまでもなく、これは当時としてはとてつもなく大きかった。ただこの24bitというレジスタ長はなかなか中途半端で、32bitのデータを扱う場合は上16bitと下16bitを別々のレジスタに保存する形になり、これに向けてRegister 0/1、2/3……10/11と14/15はPairで動作するようになっていた(Register 12/13だけ特別扱い)。細かいところでは、例えば条件分岐の結果などは、Condition Registerという専用のレジスタに結果が返されるようになっていたので、汎用レジスタは純粋にプログラム側で利用可能になっている。
77年にはこの第2版の命令フォーマットに基づくシミュレーターがSystem/370 Model 168上で動作するようになったが、ここでPL.8を利用して書かれたコードは、System/370のNative動作だと2MIPSだったのに、シミュレーター上では4.5〜6MIPSもの性能を発揮したというから、その意味では博士の狙いは当たったし、もともとの要求に近い製品ができそうだったというべきか。
Copyright © ITmedia, Inc. All Rights Reserved.
Special
PR