[解決済み] WAWハザードとは?
質問事項
<ブロッククオートウィキペディアの ハザード(コンピュータアーキテクチャ) の記事を参照してください。
ライト・アフター・ライト(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のハザードを隠蔽する役割を果たします。
関連
-
[解決済み] テスト
-
[解決済み】Nasmエラー:オペコードとオペランドの無効な組み合わせ
-
[解決済み] ミップスアセンブリの文字列の長さ
-
[解決済み] アセンブリでは、`PTR`は何の略ですか?
-
[解決済み] error: invalid effective address エラー:有効なアドレスがありません。
-
[解決済み] アセンブリ言語 新規ライン
-
[解決済み] ループ内で配列の個々の要素にアクセスするにはどうしたらよいですか?
-
[解決済み] アセンブリ言語 jeジャンプ機能
-
[解決済み] CS:IPの組み立ての意味と仕組みについて教えてください。
-
[解決済み】レトポリンとはどのようなもので、どのように機能するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】lc3 LDR命令と格納される値について
-
[解決済み] callq命令とは何ですか?
-
[解決済み] アセンブリで数字をASCIIに変換する
-
[解決済み] .quadディレクティブはアセンブリでどのように機能するのですか?
-
[解決済み] アセンブリMIPS .ALIGNとメモリアドレスの理解
-
[解決済み] objdumpの出力にあるdata16とはどういう意味ですか?
-
[解決済み] x86アセンブリの角括弧の意味は何ですか?
-
[解決済み] ワードptrとは何ですか?
-
[解決済み] movqアセンブリ機能
-
[解決済み] インテル Sandybridge ファミリー CPU のパイプラインのためのプログラムの最適化解除