タンデム・コンピュータ
出典: フリー百科事典『ウィキペディア(Wikipedia)』
タンデム・コンピュータ (Tandem Computers) は、フォールトトレラント・コンピュータの初期の製造企業である。ATM、銀行、株式市場その他のトランザクション処理を主とする顧客に売られた。タンデムのシステムは冗長なプロセッサと記憶装置から構成され、ハードウェアの故障時に高速な「フェイルオーバー (failover)」が可能である。このアーキテクチャを NonStop(無停止)と呼んだ。1970年代から20年以上(1990年代半ばまで)の間にタンデムのシステムは独自のハードウェアから一般のCPUを使ったシステムに変化した。その後、タンデム社は1997年にコンパックに買収され、その堅牢なサーバの技術もコンパックにもたらした。そのソフトウェアは今も NonStop の名で知られ、ヒューレット・パッカード社が独立した製品系列として提供している。
目次 |
[編集] 歴史
[編集] 初期(1974年-1985年)
タンデム・コンピュータは1974年に James Treybig に率いられたヒューレット・パッカード社の何人かの技術者によって設立された。彼らのビジネス計画は、フォールトトレラントでないシステムより若干コストのかかる「単一点故障 (single point of failure)」に耐えられるシステムを開発して販売することだった。フォールトトレラントシステムの価格は高価すぎ、顧客は手順の改善でダウンタイムを短くすることが常だったことから、彼らはこれが非常に重要と考えていた。
最初のシステムは T/16(後に NonStop I と改称)である。システム設計は1975年に完了し、最初の製品は1976年にシティバンクに売られた。NonStop は 2 から 16個のプロセッサで構成され、各プロセッサは約 0.7 MIPSで、それぞれにメモリとI/Oコントローラが付属しており、独自の二重化されたCPU間バス Dynabus で相互接続されている。障害が発生しても一方のバスのみで済むように構築されており、残った部分で動作を続行することができた。CPU自体は非常に単純である。基本設計はHP3000のCPUに基づいており、32ビットアドレス空間を持つ 16ビットのスタックマシンである。実際にはアドレスバスの一部をステータス表示に使っていたため、32ビット空間を完全に使用することはできなかった。HP3000 と同様、NonStop のCPUにも高速化のためのレジスタが追加され、プログラム毎のグローバル変数を保持するなどの用途で使用された。
NonStop I は、システムのフェイルオーバモード実現の鍵であった独自オペレーティングシステム Guardian を搭載していた。他社はフェイルオーバーを実現する際に他のCPUでプログラムを再始動させていたが、Guardian では全ての処理はメッセージパッシングを使い、全ての操作でチェックポイントが設定された。結果として Guardian ではプログラム中の任意の位置から処理を再開することができる。これにはスタックベースのプロセッサがほとんど内部状態を持っていないために、プロセスをCPUからCPUに移動しやすいという点も影響している。全ての命令はスタックからデータを取り出し、演算結果をスタックに戻す。演算中に障害が発生したら、スタックを他のCPUにコピーして失敗した命令から処理を再開することができる。
メインフレームなどの当時の一般のシステムでは故障率は年に数日のオーダーであったが、NonStop システムはその数百分の1の故障率で設計され、連続稼働時間は年単位となっている。それにもかかわらず、NonStop は一般のシステムと価格の上で競合可能な価格設定がなされた。最小構成の 2CPUシステムは当時のフォールトトレラントシステムが4倍以上の価格設定だったのに対して、1プロセッサのメインフレームのほぼ2倍の価格であった。
1981年には後継機 NonStop II が登場した。性能は若干向上して 0.8 MIPS であるが、最も重要な改良はメモリ容量で、従来CPU当たり最大 384Kバイトだったものが、2Mバイトに拡大された。また、完全な仮想記憶方式をサポートし、大きな仮想空間を提供した。同じ基本設計で 1983年には NonStop TXP がリリースされた。性能は倍以上の 2.0MIPSとなり、物理メモリも最大 8Mバイトとなった。いずれの機種も内部には Dynabus が使われている。Dynabus は NonStop I では高性能すぎたため、その後もそのまま使うことができたのである。
TXP と同時期に新たに光ファイバーバスシステム FOX が導入された。FOX は複数の TXP や NonStop II を相互接続し、最大14ノードのシステムを構築することができた。Guardian はこのネットワーク上でもフェイルオーバーを行う機能を備えていた。
タンデム社は急成長するパーソナルコンピュータ市場に参入するため、1985年 MS-DOSベースの Dynamite というPC(ワークステーション)をリリースした。しかし、設計が独特でIBMのPCとは互換性がなかったため、単なる端末としてしか使い道がなく、早々に市場から撤退することとなった。
[編集] 中期(1986年-1990年)
1986年、大きなシステムの改良がなされた NonStop VLX がリリースされた。VLX では Dynabus を改良し、従来 13Mbit/sだった性能を40Mbit/sにした(2本合計の性能であり、ひとつのバスは20Mbit/s)。また、総延長を 1km から 4km に伸ばした FOX II もリリース。従来の FOX で VLX を従来機種(TXP や NonStop II)と混在させることができたが、FOX II は従来機種をサポートしていない。
VLXのミニコンピュータクラスの小型マシン NonStop CLX もリリースされた。CLX は初期の TXP とほぼ同等の性能だがより小型で低価格化している。CLX は最終的には性能を向上させて1991年には VLX の 80% の性能を示した。VLX と CLX の違いはどれだけ拡張できるかだけとなった。
1986年、タンデムは最初のフォールトトレラントSQLデータベース、NonStop SQL を導入した。NonStop SQL は全くの独自開発で、Guardian の機能を取り込んでノード間のデータ整合をとる機能を持っていた。NonStop SQL はシステムにノードを追加するとリニアに性能向上することで有名であった。当時の多くのデータベースの性能は 2CPU程度で飽和状態となることが多かったのである。1989年にリリースされたバージョンでは、トランザクションを複数ノードに分散展開する機能(2相コミット)が追加された。当時、概念としては確立していたが、実用システムとしては珍しい機能であった。現在は、この機能は主だったデータベースシステムでは標準となっている。
1989年、新設計のスーパースケーラCPUを採用した NonStop Cyclone がリリースされた。非常に高速化したが、システムの基本設計は従来機種と変わっていない。タンデムが実施したベンチマークによれば、Cyclone は CLX 800 の約4倍の性能であった。問題点としては、CPUが非常に複雑であったため、ひとつのCPU当たり 4枚の回路基板を必要としたことが挙げられる。
[編集] 後期(1991年-1997年)
1991年、Guardian はRISCマイクロプロセッサ向けに実装され、MIPS R3000ベースのCPUモジュールを使用した Cyclone/R と CLX/R がリリースされた。従来システム向けに書かれたプログラムはインタプリタで実行時にR3000のコードに翻訳されて実行されたが、これは従来機種に比べて非常に遅かった。タンデムは従来機種用オブジェクトコードを簡単に移植するための様々なツールも用意した。これを使用するとオリジナルの Cyclone より 25%性能低下したレベルでコードを実行できる。ソースコードコンパイラももちろん用意されている。性能は低下したものの、新しいシステムは非常に低価格で、RISC の性能向上が CISC を追い抜くのは確実だった。タンデムは MIPS を採用することを決定した時点で MIPS の性能が迅速に向上することに頼っていた。1993年、MIPS R4400を使用した NonStop Himalaya Kシリーズがリリースされた。
1997年、タンデムは NonStop Himayala Sシリーズ をリリースした。Sシリーズは NonStopファミリの基本設計を変更したシステムであり、I/O にも CPU間接続にも新たに ServerNet と呼ばれる相互接続バスを使用している。 Dynabus や FOX が CPU をリング状に接続したのに対して、ServerNet は完全な P2P ネットワークであり、より高速に動作した。ServerNet は後に業界標準となるインフィニバンドの基盤として使用された。Sシリーズでは、MIPS の R4400 や R10000 が使用された。
最近のシステムはマイクロプロセッサを使用しているが、その内部回路を外から完全にチェックする方法は存在しない。そこで計算の正確性を保証するため、2つのマイクロプロセッサで 1つの論理プロセッサを構成し、それらがロックステップ方式で同時並行して動作するようにしている。演算結果が不一致した場合、プロセッサで障害が発生したと判断して即座に停止させる。その時点で Guardian はタスクを他のプロセッサに移動させ、不正なデータが書き込まれないことを保証するのである。
別の方式が Integrity シリーズで使用された。3個の冗長なCPUを搭載し、同じ命令列を同時並行して実行させる。障害が発生したとき(つまりロックステップの不一致が検出されたとき)、障害の起きたモジュールは停止させられるが、冗長モジュールはそのまま命令列を実行し続ける。これは、3個のCPUの内、故障するのは1個であり、残りの2個は正しい答えを出すと仮定している。所謂、Votingという手法である。また、ロックステップによるオーバヘッドを少なくするために数十ステップに1回、結果を比較するという工夫をしている。これは基本的にはハードウェアで実行されるので、オペレーティングシステムはほとんど変更する必要がなかった(Integrity では UNIX系のOSが動作した)。当時、UNIXなどの所謂オープンシステムが台頭するなかで、このシリーズはストラタス社のマシン(NECがFTシリーズとしてOEM供給を受け、NTTに納入していた。またIBMが System/88シリーズとしてOEM供給を受けていた)に対抗するために1990年に登場した。ストラタスの方式は、Integrity と同じハードウェアにより信頼性を実現しているが、2個のCPUに拠るロックステップのモジュールを2つ、計4個のCPUを使用している。故障すると、そのモジュールだけ交換することが出来る。NonStop とは異なるが、Integrity も MIPS のプロセッサを使用している。1995年の Integrity S4000 では最初に ServerNet が導入され、このころから NonStop ファミリとハードウェアの設計を共通化していった。Integrity シリーズはNTTのCTRONプロジェクトに採用された。
タンデムは1997年、コンパックに買収された。皮肉なことに 2002年にはコンパックがHPに買収されることとなる。2003年現在、NonStopシリーズはHPの名前で製造されている。
2005年に、MIPSプロセッサからItanium 2プロセッサに移行し、製品名を HP Integrity NonStop サーバと変更。また、NonStop OS 上で Linux を動作させる努力もなされている。
[編集] 外部リンク
- HP NonStop サーバ 製品情報 - HP社の NonStop シリーズに関するページ
- HP Integrity サーバ - HP社の Integrity シリーズに関するページ
- Tandem Technical Reports - HP社のサイトで公開されているタンデム社のホワイトペーパー(英語)