MacroFusion in Intel CPUs 翻译

原文出处:https://easyperf.net/blog/2018/02/23/MacroFusion-in-Intel-CPUs

(这个分析工作没有利用Gem5,可以进一步分析实际的微融合,宏融合)

在原文作者之前的文章中,写过关于微指令融合的文章。微融合是指:当来自 同一汇编指令 的多个UoP融合成一个操作。在core2和nehalem体系结构中引入的Intel体系结构(IA)的另一个有趣的特性是宏融合。它是指将来自 不同汇编指令区别于微融合) 的UoP合并为一个UOP时的情况。

宏融合的描述可以在Agner Fog的微体系结构手册中找到(https://www.agner.org/optimize/microarchitecture.pdf):

在某些情况下,解码器将算术或逻辑指令与随后的条件转移指令融合到单个计算和分支μop中。在执行单元上,计算和分支微操不分为两部分,而是由分支单元作为单个微操执行。这意味着宏OP融合在流水线的所有阶段中节省带宽,从解码到退休。

Example

.loop:
dec rdi
jnz .loop
ret

在这个组件中没有做很多有用的工作,但是它是宏观融合最简单的例子。我们只是在每次迭代中减小RDI,当它达到0时,退出循环并返回。


和以前一样,我使用UARCH-bench(https://github.com/travisdowns/uarch-bench )工具在Ivy Bridge处理器上进行了实验:

UOPS_RETIRED.RETIRE_SLOTS -统计每个周期使用的退出时段数。(融合域)

UOPS_RETIRED.ALL -统计失效的微操作数。(未使用的域)

可以在这个网址看到更多作者的计算结果:https://easyperf.net/blog/2018/02/15/MicroFusion-in-Intel-CPUs

如我们所见,每个循环中失效的指令数是2。但它们在解码器中融合成一个UOP,并以融合的方式执行。我们可以这样说,因为失效的UOP数量在融合域和未融合域中是相同的。

Limitations

在不同的体系结构中,存在许多不同的限制。例如,如果将nop放在中间,它将破坏宏观融合:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值