generated at
プロセッサにおける命令のパイプライン処理

複数の命令を少しずつずらして同時並行的に実行する実装方式
命令間の潜在的な並列性 (命令レベル並列性 (ILP: instruction-level parallelism)) を利用
命令をステップに分割して、ステップ単位で順に処理することで並列化する
MIPS では、命令実行は下記の 5 ステップ
1. メモリから命令をロード
2. 命令をデコードしながらレジスタ読み出し
3. 命令操作の実行あるいはアドレスの生成
4. データメモリ中のオペランドにアクセス
5. 結果をレジスタに書き込む
今日のプロセッサではほぼあたりまえ
次のクロックサイクルで次の命令を実行できないことをハザード (hazard) という
構造ハザード (structural hazard) : 一緒に実行される命令の組み合わせにハードウェアが対応できない場合
データハザード (data hazard) : あるステップが他のステップの完了を待つ必要があるとき
例えば前の命令で計算が行われ、次の命令でその結果を用いて次の計算を行うとき
本来なら後になるデータ資源の受け渡しを内部資源から先送りするハードウェアを追加して対応したりする (フォワーディング (forwarding) または バイパシング (bypassing) と呼ぶ)
フォワーディングしてもストールが必要な場合もある (パイプラインストール (pipeline stall))
ある命令の実行に関する判断を、まだ実行中の他の命令の結果に基づいて下す必要がある場合
分岐命令でこの判断が必要
分岐予測 (branch prediction) を用いる対応方法がある
動的分岐予測だと的中率は 90 % を超える
遅延判定 (delayed decision) と呼ばれる方法もある

参考文献