小编And*_*bel的帖子

为什么使用寄存器 R12 时 POP 很慢?

在最近的 Intel CPU 上,POP指令的吞吐量通常为每个周期 2 条指令。但是,当使用寄存器R12(或者RSP,除了前缀之外具有相同编码)时,如果指令通过传统解码器,吞吐量会下降到每个周期 1(如果 μops 来自 DSB,吞吐量保持在每个周期大约 2 )。

这可以使用nanoBench重现,如下所示:

sudo ./nanoBench.sh -asm "pop R12"
Run Code Online (Sandbox Code Playgroud)

在 Haswell 机器上的进一步实验表明:当在 1 和 4 之间添加时nops

sudo ./nanoBench.sh -asm "pop R12; nop;"
sudo ./nanoBench.sh -asm "pop R12; nop; nop;"
sudo ./nanoBench.sh -asm "pop R12; nop; nop; nop;"
sudo ./nanoBench.sh -asm "pop R12; nop; nop; nop; nop;"
Run Code Online (Sandbox Code Playgroud)

执行时间增加到 2 个周期。添加第 5 个时nop

sudo ./nanoBench.sh -asm "pop R12; nop; nop; nop; …
Run Code Online (Sandbox Code Playgroud)

performance x86 intel cpu-architecture micro-optimization

7
推荐指数
1
解决办法
189
查看次数

最近英特尔微架构中的简单解码器能否处理所有 1-µop 指令?

最近的 Intel CPU 的前端包含一个复杂的解码器和许多简单的解码器。复杂解码器可以处理解码为多个微操作的指令,而简单解码器仅支持解码为单个(融合域)微操作的指令。

是否可以通过简单解码器来解码所有 1-μop 指令,或者是否存在只能由复杂解码器处理的 1-μop 指令?

cpu x86 x86-64 intel cpu-architecture

5
推荐指数
1
解决办法
327
查看次数