例えば、次のようなプログラムがあったとする。 add eax, ebx mul eax, ecx この場合、(2)の掛け算は(1)の演算結果を利用するので、(1)の演算が終了するまで(2)は実行できない。 このような状況を、データ依存性ハザード(data dependent hazard)またはレジスター依存性ハザードという。 データ依存性ハザードには次の3種類がある。 リードアフターライト(RAW) 書き込んだ後に読まねばならないが、この実行順序が逆になると古い値を読んでしまう危険。 ライトアフターライト(WAW) 書き込みをした後、さらに書き込みをせねばならないが、この実行順序が崩れると後続処理で古い値を使ってしまうという危険。 ライトアフターリード(WAR) レジスターを読んだ後にレジスターに書かねばならないのに、書き込みが早すぎると誤った値を読んでしまう危険。 このうち、WAWとW