- 论坛徽章:
- 0
|
3楼给的链接中说到了. nop 是编译为 pause, 也就是让CPU以极低的速率和功耗在运行. 如果不加 rep;nop, cpu是以极高的速率运行的,也就耗电.
而且,好像还有其他的目的, 是为了规避性能损失吧.
链接中有提到如下:
提升 spin-wait loops(自旋锁循环等待)的性能。在执行一个 spin-wait loop 时,Pentium4 处理器会
遇到严重的性能损失.PAUSE 指令会向处理器提供一种提示:告诉处理器所执行的代码序列是一个 spin-wait loop。
处理器会根据这个提示而避开内存序列冲突(memory order violation),也就是说对 spin-wait loop 不做缓存,不做指令
重新排序等动作。这样就可以大大的提高了处理器的性能。正是基于此,才建议在 spin-wait loops 中使用 pasuse 指令。
PAUSE指令的另外一个功能是让 Pentium4 处理器在执行 spin-wait loop 时可以减少电源的消耗。
在等待资源而执行自旋锁等待时,Pentium4 处理器以极快的速度执行自旋等待时,将会消耗很多电能,
但使用 pause 指令则可以极大的减少处理器的电能消耗。 |
|