关于uICA统计Haswell架构ret指令uop数与其他来源不符的疑问
uICA中Haswell架构ret指令微操作统计与其他资料不符的疑问
我发现uICA报告里x86指令集的ret指令微操作(uop)统计结果和其他资料存在不符。为验证问题,我测试了以下指令序列:
ret ret 4 pop rcx jmp rcx
在Haswell架构上生成了对应的执行追踪数据,核心疑问点在于:为何ret和ret imm16的uop数远多于pop rcx + jmp rcx组合?
Stack Overflow相关内容指出pop+jmp与ret指令功能等价,我自己的基准测试也验证了这一点:使用ret和pop+jmp的代码版本耗时均约1.3G周期,性能完全一致。
uICA提供的Haswell架构无立即数ret指令的XML数据如下:
<architecture name="HSW"> [...] ports="6*p06+6*p15+2*p23+2*p237+3*p4" uops="20" uops_MITE="4" uops_MS="6" uops_retire_slots="2"/>
但Agner Fog指令表第250页显示,ret仅使用p237和p6端口,与pop+jmp的端口使用情况相近。此外uICA报告的ret指令端口使用还包含内存写操作,这显然不符合实际预期。
目前我未在uICA相关论文或源码中找到合理解释,想请教:是否存在导致这种统计差异的合理原因?
内容的提问来源于stack exchange,提问作者sarvel
相关产品推荐
相关产品推荐

