Pluribus
Pluribusは、BBNテクノロジーズがアーパネットのパケット交換機として使うために設計した初期のマルチプロセッサコンピュータ。そのデザインは後のBBN Butterflyに影響を与えた。
1972年、アーパネットでの第二世代のInterface Message Processor(IMP)の必要性が明白になり、Pluribusの開発が始まった。当時、BBNは既に35箇所以上のアーパネットのサイトにIMPを設置していた。これらのIMPにはハネウェルの 316 または 516 ミニコンピュータが使われている。ネットワークの成長は、ノード数、ホスト数、端末数などの面で著しく、それに伴ってトラフィックや地理的な広がりも急速に伸びていた(当時、ヨーロッパとハワイを衛星通信で接続する計画もあった)。
設計目標はモジュール化されたマシンであり、ローエンドでは 316 や 516 よりも小型低価格で、必要に応じて516の最大10倍のバンド幅と最大5倍の入出力デバイスを接続できる能力を実現できるものである。関連して、メモリアドレス空間の拡大と信頼性の向上が重要とされた。
設計者達はマルチプロセッサ方式を採用することにした。そうすることでモジュール性、コストパフォーマンス、信頼性といった面で有利と考えられ、またIMPのパケット交換アルゴリズムは複数プロセッサで並列処理するのに適していたからである。
Pluribus のハードウェア
Pluribus は2台以上の標準的な19インチの電子機器用ラックで構成される(各ラックには4つのベイがある)。それぞれのベイにはバックプレーンバスがあり、ベイ毎に電源が供給されている。ベイ毎にプロセッサバスの構成されたもの、共有メモリバスの構成されたもの、I/Oバスの構成されたものがある。ベイとベイの間は独自のカプラーで接続し、それによってプロセッサが共有メモリやI/O機器にアクセスできるようにする。
13プロセッサのPluribusをネットワーク交換機として使用して、BBNの5つのTENEX/"Tewnex"タイムシェアリングシステムをモデムで接続した。Pluribusのプロセッサは、ロッキードの SUE と呼ばれるものであった。SUE のアーキテクチャはDECのPDP-11に類似している。
Pluribus のソフトウェア
Pluribus のソフトウェアはMIMD型の対称型マルチプロセッシングである。プリエンプションのないマルチタスクを採用している。プロセススケジューリングには pseudo-interrupt device(PID、仮想割り込みデバイス)と呼ばれるハードウェア機構を使用しており、これにプログラムからもI/O機器からもアクセス可能になっていた。各プロセッサでそれぞれのスケジューラが動作し、スケジューラがPIDから整数値を読み取る。その値を使用して次に実行すべきプロセスを選択する。プログラムやデバイスが他のプロセスを動作させたいときは、そのプロセスの番号をPIDに書き込むのである。PIDは全プロセッサに対して要求のあったプロセス番号のうち最も優先度の高いプロセスから先に読み取られるようにしている。
Pluribusのソフトウェアの中でも "STAGE"システムは重要である。STAGEはシステムエラーを検出し、そこから回復させる処理を行う。各プロセッサのクロック割り込みハンドラにはウォッチドッグタイマ機能が組み込まれている。あるプロセッサが停止すると別のプロセッサがそれを検出し回復処理を開始する。回復処理では共有リソースにかかっているロックを全て外し、確保されていたストレージを解放し、全プロセッサの処理を再開させる。これが可能なのは、アーパネットのルーティングという特殊な処理に特化しているためで、失われたパケットは後で再送されるからである。
参考文献
- S. M. Ornstein, William R. Crowther, M. F. Kraley. R. D. Bressler, A. Michel, Frank E. Heart (1975). “Pluribus - A reliable multiprocessor”. Proc. AFIPS Vol.44: p551.
- C. R. Morgan, M. F. Kraley, et al. (1977年4月). Pluribus Document 2: System Handbook. Bolt, Beranek, and Newman, Inc.
- D. Katsuki, E. S. Elsam, W. F. Mann, E. S. Roberts, J. C. Robinson, F. S. Skowronski, E. W. Wolf (1978). “Pluribus-An Operational Fault-Tolerant Multiprocessor”. Proc. IEEE Vol.66 (No.10): p1146–1159.