問題

CPUのパイプライン処理におけるハザードに関する記述として、適切なものはどれか。

ア)構造ハザードとは、分岐命令の結果が確定する前に後続命令をフェッチしてしまうことで生じる。

イ)データハザードとは、後続の命令が先行命令の演算結果に依存しているために生じる待ち合わせである。

ウ)制御ハザードは、同一のハードウェア資源を複数のステージが同時に必要とすることで生じる。

エ)パイプライン処理では、ハザードは理論上完全に排除できるため、実装上の対策は不要である。

解答・解説を見る

正解: イ)

解説:

  • ア)分岐命令の結果確定前に後続命令をフェッチすることで生じるのは「制御ハザード(分岐ハザード)」です。「構造ハザード」の説明として誤りです。
  • イ)データハザードは、後続命令が先行命令の演算結果(レジスタの値など)に依存しているために、演算結果が確定するまで実行を待つ必要がある状態です。正解です。
  • ウ)同一のハードウェア資源(演算器やメモリポートなど)を複数のステージが同時に必要とすることで生じるのは「構造ハザード」です。「制御ハザード」の説明として誤りです。
  • エ)ハザードは分岐予測、フォワーディング(結果の転送)、命令の並べ替えなどの対策で緩和されますが、完全に排除できるわけではなく、対策が不要という記述は誤りです。

重要キーワード

用語説明
データハザード命令間の演算結果依存によって生じる待ち合わせ
構造ハザードハードウェア資源の競合によって生じる遅延
制御ハザード分岐命令の結果確定待ちによって生じる遅延
フォワーディング演算結果を後続命令に直接転送し待ち時間を減らす技術