- 論壇徽章:
- 0
|
3樓給的鏈接中說到了. nop 是編譯為 pause, 也就是讓CPU以極低的速率和功耗在運行. 如果不加 rep;nop, cpu是以極高的速率運行的,也就耗電.
而且,好像還有其他的目的, 是為了規(guī)避性能損失吧.
鏈接中有提到如下:
提升 spin-wait loops(自旋鎖循環(huán)等待)的性能。在執(zhí)行一個 spin-wait loop 時,Pentium4 處理器會
遇到嚴(yán)重的性能損失.PAUSE 指令會向處理器提供一種提示:告訴處理器所執(zhí)行的代碼序列是一個 spin-wait loop。
處理器會根據(jù)這個提示而避開內(nèi)存序列沖突(memory order violation),也就是說對 spin-wait loop 不做緩存,不做指令
重新排序等動作。這樣就可以大大的提高了處理器的性能。正是基于此,才建議在 spin-wait loops 中使用 pasuse 指令。
PAUSE指令的另外一個功能是讓 Pentium4 處理器在執(zhí)行 spin-wait loop 時可以減少電源的消耗。
在等待資源而執(zhí)行自旋鎖等待時,Pentium4 處理器以極快的速度執(zhí)行自旋等待時,將會消耗很多電能,
但使用 pause 指令則可以極大的減少處理器的電能消耗。 |
|