Index / Reload

Comment on 2010-06-07

2010-06-07 について、コメントがあればどうぞ!
E-mail アドレスは公開されません。URL は公開されます。
なお、管理者の判断により予告なくコメントを削除することがあります。 ご了承下さい。

パスワードを入力すると後からコメントの修正が可能です。

確認:下の Check の項目に JLUOeyIV をコピーして入力してね。

お名前:
E-mail or URL:
Check: ← 上の方にある確認文字列を入力してね。
Password:
コメント:
* ふるかわ 2010-06-12 01:14:47 [Edit]

ありがとうございます。
> なんらかの方法でパイプラインを巻き戻しているようだ。
大半のプロセッサは分岐予測と同様に、ロードも予測ミスした命令から再フェッチしているはずです。
Pentium4はリオーダバッファに細工がしてありそこから再実行すべき命令が供給されていたと思うのですが(Selective Replay)、P4とP6系ではそのへんの構造がまったく異なりますから、不採用かもしれません。
マイクロアーキテクチャ的にもP6ではP4での時ほどの効果は出ないはずですし。

* nminoru 2010-06-10 20:38:14 [Edit]

> ふるかわさん
情報ありがとうございます。
Core 系はアドレスが決まったものはロードもストアも投機的に issue し、、後で memory ordering buffer が調停するようです。
実際テストプログラムを書いても 48 ロード & 32 ストアまできっちり out-of-order 実行されています。

* ふるかわ 2010-06-10 15:19:26 [Edit]

選択的再実行そのものは原理的にはメモリデータフローの予測ミスにも使えるはずですが、L1-L2の予測ミスだけであれば、固定サイクルだけバブルを挿入するというシンプルな実装もありえます。
(そうするとメモリデーターフローのような非同期的なイベントは扱えません)

* ふるかわ 2010-06-10 15:14:15 [Edit]

Pentium4にはSelective Replayという、ロードレイテンシを予測ミスした場合、依存する命令だけを再実行する機構がついていました。(常に1次キャッシュにヒットすると予測するんだったかな)
この例のようにメモリデータフロー依存がある場合についての動作はわかりません。
Core iがどうなっているのかもわかりません。

Powered by くっつき BBS