パイプラインとハザードを理解する

命令パイプラインは、1命令を複数段階へ分け、異なる命令の段階を重ねて処理することでスループットを高める。理想状態と、ハザードによる停止・やり直しを分けて考える。

この単元で学ぶこと

  • パイプラインの意味と役割を説明できる
  • データハザードの意味と役割を説明できる
  • 制御ハザードの意味と役割を説明できる
  • 理想パイプラインの所要サイクルとハザードによる遅延を計算できる

本文解説

k段パイプラインでは、最初の命令が完了するまでkサイクル程度かかるが、その後は理想的には1サイクルごとに1命令を完了できる。依存関係、資源競合、分岐などでこの理想が崩れる。

パイプライン 命令処理を複数段へ分け、複数命令を段階的に並行処理する方式。 1命令のレイテンシより全体のスループット改善が主目的。

データハザード 後続命令が先行命令の結果を必要とし、まだ利用できないため起こる競合。 フォワーディングや待ちで対処することがある。

制御ハザード 分岐などで次に実行すべき命令が確定しないため起こる問題。 分岐予測やフラッシュで影響を減らす。

構造ハザード 同じハードウェア資源を同時利用しようとして起こる競合。 資源の複製やスケジューリングで軽減できる。

ストール ハザード回避のためパイプラインの進行を一時停止すること。 待ちサイクルが増えるため実効CPIが悪化する。

理想k段パイプラインでn命令を処理する基本式はk+n-1サイクル。そこへ問題文で与えられたストール数や分岐ペナルティを加える。ハザード種類は「データ依存・分岐・資源競合」のキーワードで分類する。

5段パイプラインで10命令を理想的に処理するなら5+10-1=14サイクル。途中で合計3サイクルのストールが入れば17サイクルになる。

図解

パイプラインと3種類のハザード
命令段階の重なりと、データ・制御・構造ハザードによる停止要因を整理する。

重要ポイント

  • パイプライン: 命令処理を複数段へ分け、複数命令を段階的に並行処理する方式。
  • データハザード: 後続命令が先行命令の結果を必要とし、まだ利用できないため起こる競合。
  • 制御ハザード: 分岐などで次に実行すべき命令が確定しないため起こる問題。
  • 構造ハザード: 同じハードウェア資源を同時利用しようとして起こる競合。
  • 理想所要サイクルは「段数+命令数-1」。ハザードの待ち時間は別途加える。

間違えやすい点

  • パイプライン化で1命令のレイテンシが必ず短くなると考えない。
  • データ依存と資源競合を同じハザードとして扱わない。
  • 分岐予測は制御ハザードを完全にゼロへ保証する技術ではない。

用語解説

パイプライン
命令処理を複数段へ分け、複数命令を段階的に並行処理する方式。
データハザード
後続命令が先行命令の結果を必要とし、まだ利用できないため起こる競合。
制御ハザード
分岐などで次に実行すべき命令が確定しないため起こる問題。
構造ハザード
同じハードウェア資源を同時利用しようとして起こる競合。
ストール
ハザード回避のためパイプラインの進行を一時停止すること。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。