2009-11-03 17 views
2

我想知道x86處理器遇到存儲條件指令時會做什麼。例如,它是否會拖延流水線的前端並等待ROB緩衝區變空,然後停止前端並執行SC?基本上,它迫使處理器成爲非投機性的......x86如何處理存儲條件指令?

感謝

回答

0

A(通用)x86處理器確實沒有你提到的事情。它只是一個接一個地讀取指令並執行它們。

其他一切都是透明處理的,而且很大程度上取決於您正在查看的處理器,所以對於您的問題沒有通用的答案。

如果您對圍繞拖延問題的方法感興趣,您應該從x86的維基百科頁面開始(註冊重命名以提一個,只需扔掉未使用分支的結果)。

4

我猜你指的是CMOVcc說明。

我不知道舊的x86處理器,但現代的(自從他們成爲投機和無序)實施條件專賣店爲:

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

條件部分可以在硬件中實現這樣的:

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

所以沒有必要打破猜測。一家商店實際上將發生。條件決定了要寫入的數據是舊值還是新值。