Tandem NonStop のMIPSへの移行
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/23 14:45 UTC 版)
「タンデムコンピューターズ」の記事における「Tandem NonStop のMIPSへの移行」の解説
タンデムが1974年に創業した当時、コンピュータ企業は自前でCPUを設計して構築し、独自の命令セットや独自のコンパイラなどを使用するのが一般的だった。半導体集積回路はムーアの法則に従って年々発展し、CPUをワンチップに収められるようになり、結果としてさらに高速化・低価格化が進んだ。しかしコンピュータ企業にとっては、自前でCPUを設計し製造しようとすると、莫大な費用がかかるようになっていった。1991年には、他社と競合できるだけの性能のCPUを設計・生産できるのは、ごく一部の大企業だけとなった。タンデムはそれほどの大企業ではなく、NonStop シリーズのCPUを他社製マイクロプロセッサに切り替える必要に迫られていた。 HP の HP 3000 およびそのOSであるMPEの部門も同様な問題を抱えていたが、1986年に賢い手段を見出した。HPの研究所でRISC設計のCPUが設計され、必須でない部分を全てそぎとってワンチップに収めた。命令パイプラインを効率よく動作するよう設計しており、ECLを使った当時のメインフレーム並みの性能を発揮した。HP 3000 が使っていたマイクロプログラム方式のスタックマシンの何倍も高速に動作した。 しかし問題は、既存製品のベンダー、顧客、サードパーティー製ソフトウェアをどうやって移行させるかである。一部ソフトウェアは移植性を考慮して書かれており、単に再コンパイルすればよい。他のソフトウェアは再コンパイルだけでは移行できない。HPの研究所は、エミュレータやオブジェクトコードの自動変換で古いバイナリを新しいマシンで実行する方法を考案し、それを広く公開した。同様の技法はAppleがMC68000系からPowerPCへと移行する際や、DECがVAXからAlphaへ移行する際にも用いられた。 HP 3000 の移行計画での問題として、プロセッサの移行と同時にOSを新たな言語で書き直そうとしていた点がある。これについてはエミュレーションを使おうとはしなかった。しかし、この書き換えは予想していたよりも何年も長くかかった。そのため、HPのRISCプロセッサはMPEがリリース可能となる前に古くなってしまった。タンデムはこの間違いから学んだ。 ビジネス上の理由から、タンデムはHPのPA-RISCやサンのSPARCを採用できなかった。そこでミップスと提携し、R3000とその最適化コンパイラを採用することにした。その後、NonStop シリーズはMIPSアーキテクチャを採用し続けることになった。 1991年、タンデムは Cyclone/R、またの名を CLX/R をリリース。これはCLXのコンポーネントを基にした低価格のミッドレンジシステムだが、CPUにR3000を採用している。市場に素早く投入するため、MIPS本来のソフトウェアを全く付属せずに出荷された。NSK (NonStop Kernel) というオペレーティングシステムとSQLデータベースに含まれるソフトウェアはTNSのスタックマシンの機械語にコンパイルされている。それらのオブジェクトコードは、カーネルのインストール時に Accelerator と呼ばれるツールを使って一部最適化されたMIPSの等価な命令列に変換される。比較的重要性の低いプログラムは事前に変換せず、TNSの持つコードインタプリタ(エミュレータ)が解釈して実行する。この移行技法は成功し、今も使われ続けている。どのソフトウェアもそのまま移行でき、ミッドレンジとしては性能もよく、プログラマは命令セットの違いを無視でき、機械語レベルでのデバッグも問題なく実施できる。Cyclone/R はその後のリリースでネイティブなMIPSのコードで書き直されたNSKを使うようになり、さらに高速化した。 R3000もその後のマイクロプロセッサも、内部のエラーチェックはほとんどしておらず、タンデムのニーズには不十分だった。そこで Cyclone/R ではR3000を2個ロックステップで実行し、全く同じデータスレッドを動作させた。この際のロックステップは一般的なものとは異なり、チェッカー・プロセッサがプライマリ・プロセッサから1サイクル遅れた形で実行する。マイクロプロセッサをロックステップ実行するには、そのチップが完全に決定論的に動作するよう設計しておく必要がある。隠れた内部状態は、チップをリセットすることで完全にクリアされなければならない。さもなくばリセット後しばらくたってから、2つのチップが目に見えない原因で障害が発生したわけでもないのに同期から外れることになる。チップ設計者も、製造時のチップの検査にそのような原則が有効だということには同意するだろう。しかし、新しいマイクロプロセッサはそのあたりに常に問題があり、ミップスとタンデムは問題解決のために何カ月も共同作業する必要に迫られた。 1993年、MIPS R4400を使用した NonStop Himalaya Kシリーズをリリース。ネイティブモードのNSK、Cyclone システムのコンポーネントを使った完全な拡張性を備えている。バスは相変わらず Dynabus、Dynabus+、独自I/Oバスであり、性能的には限界を迎えていた。 1994年、NSKにUnix風のPOSIX環境 Open System Services が加えられた。もともとの Guardian のシェルとABIはそのまま利用可能である。 1997年、タンデムは NonStop Himalaya Sシリーズ をリリースした。Sシリーズは NonStopファミリの基本設計を変更したシステムであり、I/O にも CPU間接続にも新たに ServerNet と呼ばれる相互接続バスを使用している。 Dynabus や FOX が CPU をリング状に接続したのに対して、ServerNet は完全な P2P ネットワークであり、より高速に動作し、網状の冗長性を持たせることができる。タンデムは ServerNet の利用を他社にも勧め、後に業界標準となるInfiniBandの基盤となった。 Sシリーズでは、MIPS の R4400 や R10000、R12000、R14000 が使用された。 MIPSアーキテクチャの後期のコアはシリコングラフィックス (SGI) の資金で設計された。しかし、インテルの Pentium Pro がRISCに対して性能的に優位に立つようになり、同時にSGIの業績も悪化した。R10000以降、MIPSアーキテクチャのハイエンドのコア設計は予算が削減され、単にプロセスルールを縮小してクロックを上げるだけとなっていった。そのためタンデムはNonStopシリーズのCPUを再び別のアーキテクチャに変更することを迫られた。
※この「Tandem NonStop のMIPSへの移行」の解説は、「タンデムコンピューターズ」の解説の一部です。
「Tandem NonStop のMIPSへの移行」を含む「タンデムコンピューターズ」の記事については、「タンデムコンピューターズ」の概要を参照ください。
- Tandem NonStop のMIPSへの移行のページへのリンク