1

条件付きストア命令が発生したときに x86 プロセッサが何をするかを調べようとしています。たとえば、パイプラインのフロント エンドを停止し、ROB バッファが空になるのを待ってから、フロント エンドの停止を停止して SC を実行しますか? 基本的に、プロセッサを非投機的にするように強制します...

ありがとう

4

2 に答える 2

5

指示を参照していると思います。CMOVcc

古いx86プロセッサについてはわかりませんが、最近のプロセッサ(投機的で故障したため)は、条件付きストアを次のように実装しています。

old value = mem[dest address]
if (condition) 
    mem[dest address] = new value
else
    mem[dest address] = old value

条件部分は、次のようなハードウェアで実装できます。

      cond
    |\ |
----| \|
new |  \
    |   |    dest
    |   |---------
    |   |     |
  __|  /      |
 |  | /       |
 |  |/        |
 |____________|

したがって、憶測を破る必要はありません。実際に店が開かれます。条件によって、書き込まれるデータが古い値になるか新しい値になるかが決まります。

于 2009-11-04T20:19:33.177 に答える
0

(汎用) x86 プロセッサは、あなたが言及したことを何もしません。命令を次々とフェッチして実行するだけです。

他のすべては透過的に処理され、見ているプロセッサに大きく依存するため、質問に対する一般的な答えはありません。

ストールの問題を回避する方法に興味がある場合は、x86のウィキペディアのページから始めてください(名前を変更して名前を登録します。取得されていないブランチから結果を破棄するだけです)。

于 2009-11-04T00:03:39.600 に答える