問題 No.1807
CPUのパイプライン処理において、先行する命令の演算結果がレジスタに書き込まれる前に、後続の命令がその結果をオペランドとして必要とすることで発生する、パイプラインの乱れや遅延を引き起こす要因を何というか。
【正解の解説】
データハザード
料理に例えると、先にした下味の結果(ソース)がまだボウルに入っていないのに、次のシェフが「そのソースをかけて!」と焦って作業を始めようとして手が止まってしまう状態です。CPUの中でもデータの完成を待つ待ち時間が生まれ、これが処理の遅延を招く原因となります。
スポンサーリンク
【その他の選択肢の解説】
制御ハザード
「制御ハザード」はデータの値ではなく、条件分岐の結果(右に行くか左に行くか)が分からないために起こる迷いです。データハザードが「材料の不足」なら、制御ハザードは「進むべき道の選択ミスによる行き止まり」という全く異なる原因で発生します。
構造ハザード
「構造ハザード」は一つの計算回路を複数の命令が同時に使おうとして順番待ちになる物理的な渋滞です。データの前準備ができていないデータハザードとは異なり、こちらは道路の車線数が足りずに大渋滞が起きているような物理的リソースの不足が原因です。
メモリハザード
CPU内部のアーキテクチャやキャッシュメモリの競合などを連想させますが、パイプライン処理の正式なハザード分類には存在しません。初学者が用語の響きだけで「メモリが原因だろう」と推測して選んでしまう典型的なひっかけ選択肢です。