首页 > 解决方案 > 为什么 _mm_pause() 可以显着提高性能?

问题描述

根据英特尔的手册(第 112 页)

无效_mm_pause(无效)

下一条指令的执行延迟了实现特定的时间量。该指令不会修改架构状态。这种内在提供了特别显着的性能增益。

也就是说:

while (!acquire_spin_lock()) _mm_pause(); // code snippet 1

速度更快,功耗比

while (!acquire_spin_lock()) continue; // code snippet 2

我可以理解为什么代码片段 1的功耗比代码片段 2低。

我无法理解的是:

为什么代码片段 1代码片段 2快?

标签: performanceassemblyx86cpu-architecturelockless

解决方案


推荐阅读