我想知道x86處理器遇到存儲條件指令時會做什麼。例如,它是否會拖延流水線的前端並等待ROB緩衝區變空,然後停止前端並執行SC?基本上,它迫使處理器成爲非投機性的......x86如何處理存儲條件指令?
感謝
我想知道x86處理器遇到存儲條件指令時會做什麼。例如,它是否會拖延流水線的前端並等待ROB緩衝區變空,然後停止前端並執行SC?基本上,它迫使處理器成爲非投機性的......x86如何處理存儲條件指令?
感謝
A(通用)x86處理器確實沒有你提到的事情。它只是一個接一個地讀取指令並執行它們。
其他一切都是透明處理的,而且很大程度上取決於您正在查看的處理器,所以對於您的問題沒有通用的答案。
如果您對圍繞拖延問題的方法感興趣,您應該從x86的維基百科頁面開始(註冊重命名以提一個,只需扔掉未使用分支的結果)。
我猜你指的是CMOVcc
說明。
我不知道舊的x86處理器,但現代的(自從他們成爲投機和無序)實施條件專賣店爲:
old value = mem[dest address]
if (condition)
mem[dest address] = new value
else
mem[dest address] = old value
條件部分可以在硬件中實現這樣的:
cond
|\ |
----| \|
new | \
| | dest
| |---------
| | |
__|/ |
| |/ |
| |/ |
|____________|
所以沒有必要打破猜測。一家商店實際上將發生。條件決定了要寫入的數據是舊值還是新值。