パイプラインとハザードを理解する
命令パイプラインは、1命令を複数段階へ分け、異なる命令の段階を重ねて処理することでスループットを高める。理想状態と、ハザードによる停止・やり直しを分けて考える。
この単元で学ぶこと
- パイプラインの意味と役割を説明できる
- データハザードの意味と役割を説明できる
- 制御ハザードの意味と役割を説明できる
- 理想パイプラインの所要サイクルとハザードによる遅延を計算できる
本文解説
k段パイプラインでは、最初の命令が完了するまでkサイクル程度かかるが、その後は理想的には1サイクルごとに1命令を完了できる。依存関係、資源競合、分岐などでこの理想が崩れる。
パイプライン 命令処理を複数段へ分け、複数命令を段階的に並行処理する方式。 1命令のレイテンシより全体のスループット改善が主目的。
データハザード 後続命令が先行命令の結果を必要とし、まだ利用できないため起こる競合。 フォワーディングや待ちで対処することがある。
制御ハザード 分岐などで次に実行すべき命令が確定しないため起こる問題。 分岐予測やフラッシュで影響を減らす。
構造ハザード 同じハードウェア資源を同時利用しようとして起こる競合。 資源の複製やスケジューリングで軽減できる。
ストール ハザード回避のためパイプラインの進行を一時停止すること。 待ちサイクルが増えるため実効CPIが悪化する。
理想k段パイプラインでn命令を処理する基本式はk+n-1サイクル。そこへ問題文で与えられたストール数や分岐ペナルティを加える。ハザード種類は「データ依存・分岐・資源競合」のキーワードで分類する。
5段パイプラインで10命令を理想的に処理するなら5+10-1=14サイクル。途中で合計3サイクルのストールが入れば17サイクルになる。
図解
重要ポイント
- パイプライン: 命令処理を複数段へ分け、複数命令を段階的に並行処理する方式。
- データハザード: 後続命令が先行命令の結果を必要とし、まだ利用できないため起こる競合。
- 制御ハザード: 分岐などで次に実行すべき命令が確定しないため起こる問題。
- 構造ハザード: 同じハードウェア資源を同時利用しようとして起こる競合。
- 理想所要サイクルは「段数+命令数-1」。ハザードの待ち時間は別途加える。
間違えやすい点
- パイプライン化で1命令のレイテンシが必ず短くなると考えない。
- データ依存と資源競合を同じハザードとして扱わない。
- 分岐予測は制御ハザードを完全にゼロへ保証する技術ではない。
用語解説
- パイプライン
- 命令処理を複数段へ分け、複数命令を段階的に並行処理する方式。
- データハザード
- 後続命令が先行命令の結果を必要とし、まだ利用できないため起こる競合。
- 制御ハザード
- 分岐などで次に実行すべき命令が確定しないため起こる問題。
- 構造ハザード
- 同じハードウェア資源を同時利用しようとして起こる競合。
- ストール
- ハザード回避のためパイプラインの進行を一時停止すること。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。