タンデムコンピューターズ
これにより、間欠的なソフトウェア障害からの復旧も可能となる。通常運用時、スレーブプロセスによる監視が若干のオーバーヘッドを伴うが、他のシステムでの100%の複写をとる方式よりもオーバーヘッドは少ない。初期の主なアプリケーションはこのようなチェックポイント型のコードを直接書いていたが、多くの場合タンデムが提供する抽象化ソフトウェア層を使い、詳細を隠蔽した形で書かれていた。
1981年、T/16 CPU は全て NonStop II に置き換えられた。T/16からの主な違いは、「拡張データセグメント」をユーザーが切り替えられるようにして特別な32ビット・アドレッシングをサポートした点である。これにより、その後10年間のソフトウェアの成長に備えることができ、T/16や HP 3000 に対して大きな優位に立つことになった。しかしレジスタは16ビットのままであり、アドレス空間を拡張したことで他の32ビットのミニコンピュータよりも通常のメモリ参照にかかる命令数が多くなってしまった。その後のNonStopは、この不十分な命令セットに悩まされることになる。また、NonStop II は内部データパスも拡幅しておらず、32ビットアドレスを扱うのに余分なマイクロコードの処理が必要だった。NonStop II CPUは3枚の基板で構成され、使用しているチップや設計はT/16とよく似ている。NonStop II はまた、磁気コアメモリからバッテリーでバックアップされたDRAMへと切り換えている。
1983年に登場した NonStop TXP CPU は、TNS命令セットアーキテクチャの全く新しい実装である。標準TTLチップとPLAで構成されており、CPUモジュールを4枚の基板で構成している。
タンデムが1974年に創業した当時、コンピュータ企業は自前でCPUを設計して構築し、独自の命令セットや独自のコンパイラなどを使用するのが一般的だった。半導体集積回路はムーアの法則に従って年々発展し、CPUをワンチップに収められるようになり、結果としてさらに高速化・低価格化が進んだ。しかしコンピュータ企業にとっては、自前でCPUを設計し製造しようとすると、莫大な費用がかかるようになっていった。1991年には、他社と競合できるだけの性能のCPUを設計・生産できるのは、ごく一部の大企業だけとなった。タンデムはそれほどの大企業ではなく、NonStop シリーズのCPUを他社製マイクロプロセッサに切り替える必要に迫られていた。
HP の HP 3000 およびそのOSであるMPEの部門も同様な問題を抱えていたが、1986年に賢い手段を見出した。HPの研究所でRISC設計のCPUが設計され、必須でない部分を全てそぎとってワンチップに収めた。命令パイプラインを効率よく動作するよう設計しており、ECLを使った当時のメインフレーム並みの性能を発揮した。HP 3000 が使っていたマイクロプログラム方式のスタックマシンの何倍も高速に動作した。
しかし問題は、既存製品のベンダー、顧客、サードパーティー製ソフトウェアをどうやって移行させるかである。一部ソフトウェアは移植性を考慮して書かれており、単に再コンパイルすればよい。他のソフトウェアは再コンパイルだけでは移行できない。HPの研究所は、エミュレータやオブジェクトコードの自動変換で古いバイナリを新しいマシンで実行する方法を考案し、それを広く公開した。
タンデムの NonStop システムは独立した同一のプロセッサを複数使い、冗長な記憶装置群とコントローラ群を使い、ハードウェアの故障やソフトウェアの誤作動が起きた場合に自動的で高速な「フェイルオーバー」を提供する。
故障やデータが壊れることを考慮し全体に共有される部品がないような設計になっており、それは主記憶装置でも同様である。通常のマルチコンピュータシステムは共有メモリを使い、データを共有して動作している。しかし NonStop のプロセッサは高信頼の配線を経由してメッセージを相互に交換することで協調動作し、ソフトウェアは定期的なスナップショットをとって、メモリ状態のロールバックに備えている。
故障にうまく対処できるだけでなく、この何も共有しない (shared-nothing) メッセージングシステムはスケーラビリティが非常によく、巨大な負荷にも対応できる。プロセッサ数が倍になればシステムのスループットも倍になり、最大4000プロセッサを構成可能である。対照的に一般のマルチプロセッサシステムは共有メモリやバスやスイッチの性能で全体の性能が制限される。4から8プロセッサが一般的な限界であり、それ以上プロセッサを増やしてもシステム全体としての性能向上は見込めない。NonStop システムは、フォールトトレラント性よりもスケーラビリティが評価されて購入されることが多かった。より単純なミニコンピュータの技術で構築されていながら、IBMの大型メインフレームとも互角に競合できた。
フォールトトレラント性とスケーラビリティに加え、NonStop には業界最先端のSQL関係データベースが実装されており、ネットワークや地理的に分散したシステム群のための業界最先端のサポートが存在した。
同様の技法は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の持つコードインタプリタ(エミュレータ)が解釈して実行する。
ジェームズ・トレイビッグは1996年に業績悪化するまでタンデムのCEOを務めた。
コンパックのx86サーバ部門は早くからタンデムの ServerNet/Infiniband 技術を採用していた。1997年、コンパックはタンデムコンピューターズを買収し、NonStopシリーズの顧客ベースを引き継ぐことでローエンドPC一辺倒のコンパックの事業形態の転換を図ろうとした。1998年、コンパックはさらにもっと大きな企業であるディジタル・イクイップメント・コーポレーション (DEC) を買収。DEC Alpha を採用したRISCサーバと OpenVMS および Tru64 UNIX の顧客ベースを引き継いだ。そのころタンデムはNonStopシリーズを MIPS R12000 からインテルの新たなマイクロプロセッサ Itanium に移行させようとしていた。しかしDECを買収したコンパックはNonStopをAlphaに移行させ、ハイエンドサーバの製品系列を整理しようとした。ところがコンパックは2001年にAlphaの新規開発をやめ、未知数のItaniumの採用を決定。Alpha版のNonStopは出荷されることなく終わった。そのためNonStopの移行プロジェクトは再スタートを余儀なくされ、Itanium 2 をターゲットにすることになった。
35年以上に渡り、タンデムの主力製品である NonStop シリーズは、最初の T/16 フォールトトレラントシステムから互換性を保ちつつ発展し続けた。その間に、モジュラー・アーキテクチャやプログラミングレベルの命令セットアーキテクチャの面で3回の大きな変更がなされている。各シリーズの中で、半導体集積回路技術の進歩に対応して何度か大きな再実装が行われている。
メインフレームなどの当時の一般のシステムでは平均故障間隔 (MTBF) は数日のオーダーだったが、NonStop システムはその100倍の故障間隔で設計され、連続稼働時間は年単位となっている。それにもかかわらず、NonStop は一般のシステムと価格の上で競合可能な価格設定がなされた。当時のフォールトトレラントシステムが1CPUのメインフレームの4倍以上の価格設定だったのに対して、最小構成の 2CPUシステムは1CPUのメインフレームのほぼ2倍の価格であった。
最初のシステム Tandem/16 または T/16 は、後に NonStop I へと改称。2 から 16個のプロセッサで構成され、全体としてフォールトトレラントなクラスターを構成したものが1つのラックに収まっている。各CPUには共有されないローカルメモリとI/Oプロセッサがあり、CPU専用のI/OバスにI/Oコントローラ群が接続されていて、独自の二重化されたCPU間バス Dynabus で相互接続されている。ディスクコントローラやネットワークコントローラも二重化されており、CPUから2つのコントローラに接続すると同時に、コントローラからも2つのCPUに接続している。個々のディスクはミラーリングされており、2つの独立したディスクコントローラそれぞれに接続されている。
NonStop シリーズのOSはスケーラビリティ、信頼性、スペアのリソースを効率的に利用する能力で優れていた。しかし、小型でそれなりの信頼性のシステムを要望する顧客も多く、そのような顧客は慣れたUnix系OSと業界標準のプログラムを使いたがった。他社はそれに対してハードウェアのみで冗長性を持たせる多重化システムを提供していた。中でもそのようなシステムで成功していたのがストラタステクノロジーであり、同社のシステムはIBMの System/88 としても販売されていた。
そのようなシステムでは、予備のプロセッサは通常運用時のスループット向上に寄与せず、単にアクティブなプロセッサと全く同じ処理を「ロックステップ」方式で実行している。両方のプロセッサの結果に差異が生じると、障害が発生したことがわかる。したがって、アクティブなプロセッサ1個に対して、物理的に同一なプロセッサを2個用意して論理プロセッサを構成する必要があり、さらに自動フェイルオーバーで復旧するには論理プロセッサを3つか4つの物理プロセッサで構成する必要がある。このような方式はコストが3倍から4倍かかるが、CPUとして量産されているマイクロプロセッサを使えるため、コスト的に見合うようになっていた。
1989年、タンデムはこの市場向けに Integrity シリーズを投入した。CPUにはMIPSプロセッサを採用し、OSにはUnix系の "NonStop UX" を採用した。1991年、同じデータスレッドを3個の MIPS R2000 で実行させて1つの論理プロセッサを構成する Integrity S2 をリリース。