コンピュータの高速化技術の一つ。
CPUでの命令の実行サイクルを命令の取出し・命令の解読・オペランドのアドレス
計算・オペランドの取出し・実行のような複数の小さな処理単位(ステージ)に分け、
各ステージの処理を別々の装置が担当することによって、複数の命令を並列に処理する
制御方式。
スーパーコンピュータなどで処理の高速化のために取られている方式である。
一般的にCPUが命令を実行するときには
F:命令読出し(Fetch)
プログラムカウンタから実行する命令のアドレスを命令レジスタに読み出す。
命令を読み出すことを命令フェッチ(Fetch)という。
D:解読(Decode)
命令レジスタに読み出した命令を解読する。
命令を解読することを命令デゴード(Decode)という。
A:有効アドレス計算(Address calcuration)
命令の中からアドレス部分を取り出し、アドレスとアドレスの修飾部から、
その命令の対象となる有効アドレスの計算をする。
R:オペランド読出し(Read)
有効アドレスから対象となるデータ(オペランド)が制御装置に送られる。
E:実行(Execution)
オペランドと指定したレジスタとの間で演算が行われる。
の5つに分割される。
逐次処理と対比すると次のようになる。
逐次制御方式:PCを含むほとんどのコンピュータで採用されている。
一つの命令の「読み出し」から「実行」までを行った
後で次の命令の処理にかかるという方式である。
───────────────────────→ 時間
┌─┬─┬─┬─┬─┐
命令a|F|D|A|R|E|
└─┴─┴─┴─┴─┼─┬─┬─┬─┬─┐
命令b |F|D|A|R|E|
└─┴─┴─┴─┴─┼─┬─┬─┬─┬─┐
命令c |F|D|A|R|E|
└─┴─┴─┴─┴─┘
パイプライン方式:スーパーコンピュータで採用された方式。
1つの命令を分割し下図の場合「アドレス計算」まで
終わると次のCPUに処理を委ねる。このようにして
1つの命令をパイプラインの中を水が流れていくように
複数のCPUで順次処理していく方式である。
見かけ上複数のコマンドが同時に実行されることとなり
高速化する。
───────────────────────→ 時間
┌─┬─┬─┬─┬─┐
命令a|F|D|A|R|E|
└─┴─┴─┼─┼─┼─┬─┬─┐
命令b |F|D|A|R|E|
└─┴─┴─┼─┼─┼─┬─┬─┐
命令c |F|D|A|R|E|
└─┴─┴─┴─┴─┘
(参考)
パイプラインのクロック周波数を高くして、パイプラインの処理数を増やした方式の
スーパーパイプライン(super pipeline) 。
また、複数のパイプラインで並列に命令を処理できるようにしたスーパースカラ
(superscalar) などがある。