パイプライン処理の限界と並列処理

パイプライン処理は、演算器を5~10段程度のパイプラインで構成し、毎サイクル、新しい入力データを供給してやるという構造になっている。このため、演算パイプの1段目がi番目の命令の入力データの処理を行っているサイクルに、演算パイプの2段目はi-1番目のデータを処理し、3段目はi-2番目のデータを処理しているというように動作する。

このため、ベクタが十分に長い場合は、パイプラインの長さだけの演算が並列に実行でき、スカラ計算機に比べて5~10倍程度の性能が実現できる。

天文学の重力多体問題のように固定のより長い処理を行う場合は、長いパイプラインが作れ、もっと性能を高めることができるが、汎用の処理を行う場合はそうもできない。また、直前の演算の結果を使う演算は、直前の命令の演算結果がパイプライン演算器から出てくるまで待たないと演算を開始できず、長いパイプラインの演算器ではこの待ち時間が長くなってしまう。

このため、ベクタ演算器を2個、4個と並べたCRAY X/MPなどが開発された。しかし、もっと多数の演算器を作って、並列に動作させればより性能を上げることができるはずであり、この考え方から、並列コンピュータが提案された。

並列コンピュータの一般形は図3.1のようになっている。M0~MmのメモリブロックとP0~Pmのプロセサからなり、それらがメモリネットワークとプロセサネットワークで接続されている。

ただし、並列コンピュータの実装は大きなバリエーションがあり、メモリとプロセサの接続は1対1で固定として、スイッチハードウェアを節約するものも多い。また、メモリネットワークとプロセサネットワークが図3.1のように独立ではなく、共用のネットワークを使っているものもある。

接続が任意ではなく送り手と受け手の間に直接の通路が存在しない場合は、中間にあるメモリやプロセサで中継してデータを送ることになる。この構造はハードウェアは少なくて済むが、データの伝送に時間がかかり、性能が制限されてしまう。

このため、現在では、メモリとプロセサの自由な接続ができるネットワークが一般的になっているが、スイッチとしてはリングバスが使われたり、n対mの任意の接続ができるクロスバスイッチが使われたりしており、多くのバリエーションがある。

  • 並列コンピュータ

    図3.1 並列コンピュータの一般形。M0~MmのメモリスライスとP0~Pnのプロセサをメモリネットワークでつなぎ、プロセサ間をプロセサネットワークで接続する

(次回は8月2日の掲載予定です)