1. ホーム
  2. assembly

[解決済み] WAWハザードとは?

2022-02-08 11:32:47

質問事項

<ブロッククオート

ウィキペディアの ハザード(コンピュータアーキテクチャ) の記事を参照してください。

ライト・アフター・ライト(WAW) ( i2 は、オペランドが書き込まれる前に書き込もうとします。 によって書き込まれます。 i1 ) WAW(Write After Write)データハザードが発生する可能性があります。 同時実行環境

例 例えば

i1. R2 <- R4 + R7   
i2. R2 <- R1 + R3   

のライトバック(WB)は i2 は まで遅延させる。 i1 は実行を終了します。

これは理解できていません。

何が問題かというと、もし i2 が実行される前に i1 ?

解決方法は?

それは 実行 レジスタ名を変更しなかった場合)これらの命令のアウトオブオーダーの実行を妨げるのはライトバックのみです。

での最終結果は R2 (他の後の命令で見る限り このペアは)プログラムの順序と一致しなければならないので、2番目の命令の結果を持たなければならない。


これは なぜ 最近のアウトオブオーダー実行CPUは、レジスタのリネーム(Tomasuloのアルゴリズム)を採用しています。 WAWとWARの危険性を完全に排除することができます。 の私の回答の最初のセクションを参照してください。 Haswellでmulssが3サイクルしかかからないのはなぜか、Agnerの命令表と違うのか? レジスタ名の変更により、異なる結果に対して同じレジスタを再利用しても問題ないことを、理論的に説明します。

こちらもご覧ください インテル Sandybridge ファミリー CPU のパイプラインのためのプログラムの最適化解除 また、WAWとWARの反依存は、最近のアウトオブオーダー実行のCPUではストールを引き起こさないことを説明しています。

メモリへの書き込み(レジスタの代わり)については、ストアバッファがWAWとWARのハザードを隠蔽する役割を果たします。