メインコンテンツへ
コンピュータ構成要素

パイプライン処理においてデータハザードが発生する原因として最も適切なものはどれか。

ア.条件分岐命令の行き先が確定する前に、後続命令を先読みして実行してしまう。
イ.同一サイクルに複数の命令が同じ演算ユニット(ALU)を使おうとする。
ウ.前の命令が書き込んだレジスタの値を、次の命令がまだ更新前に読み出そうとする。正解
エ.キャッシュミスが連続して発生し、メモリアクセスが競合する。

解説

データハザードは「前の人がまだレジを打ち終わっていないのに、後ろの人が商品を渡してくれと言い出す」状態。レジスタの更新を待たずに読もうとするからぶつかる。

なぜ ウ が正解か

ウが正解。データハザード(RAWハザード:Read After Write)は「先行命令がレジスタに書き込む前に、後続命令がそのレジスタを読み出そうとする」ときに発生する。例:ADD R1, R2, R3 の結果がR1に書かれる前に、SUB R4, R1, R5 がR1を読もうとするケース。対策はパイプラインストール(バブル挿入)またはフォワーディング(転送)。

なぜ ア は間違いか

これは「制御ハザード」(分岐ハザード)の説明。条件分岐の行き先確定前に先読みすることで起きる。

なぜ イ は間違いか

これは「構造ハザード」(資源ハザード)の説明。同一ハードウェアリソースへの競合。

なぜ エ は間違いか

キャッシュミスは性能問題だがパイプラインの3種ハザード(データ/制御/構造)には含まれない。

出典: AI生成問題(学習用)