コンピューターアーキテクチャ

パイプラインとハザード

命令を5段階に分け、前の命令が進むと次を入れて並行処理します。ただし依存関係や分岐により停止する場合があります。

5段階パイプラインのシミュレータ

1. 命令列と転送設定

フォワーディング

2. クロックを進める

IF 取得ID 解釈・読出しEX 実行MEM メモリWB 書戻しストール破棄された命令→ フォワーディング

行が命令、列がクロックです。転送の有無で待機とクロック数を比べます。

理想的な定常CPI1
データハザード前の結果待ち
制御ハザード分岐結果待ち
構造ハザード資源の競合

データハザードと転送

add r1, r2, r3 の直後に sub r4, r1, r5があると、subはaddのr1を必要とします。転送なしではWBを待ちますが、EXの結果を次のEXへ直接渡すと待機を減らせます。

load-useには1クロック待機が残る

lwはMEMで値を取得します。直後のEXに間に合わないため、転送しても1クロック待ちます。無関係な命令を間に置けば隠せる場合があります。

分岐では次の取得先が未確定

このモデルではEXで分岐が決まり、取得済みの後続2命令を破棄する場合があります。その損失を減らすため 分岐予測を利用します。