为何现代Intel处理器上x86-64的BSWAP指令延迟为2周期?
Intel现代架构中BSWAP指令2周期延迟的技术原因
首先明确:uops.info与Agner Fog的指令延迟数据是可靠的,不存在错误——Broadwell、Cannon Lake、Ice Lake等Intel现代架构的64位BSWAP指令确实是2周期延迟,AMD平台的同指令则长期维持单周期延迟。
你对BSWAP的“零门电路、仅靠布线反转字节”的理解,忽略了现代CPU微架构的实际执行约束,具体技术原因如下:
- Intel通用寄存器文件(PRF)的内部布线与端口设计,无法在单个周期内完成字节反转所需的跨字节数据重排。64位
BSWAP需要将寄存器的第0/7、1/6、2/5、3/4字节两两交换,这种交叉式的字节路由在Intel的架构中,需要经过一个额外周期的内部重排单元处理——寄存器输出端口的原生布线不支持直接在单周期内完成这类字节交叉连接,必须多一个周期完成数据路径的重新映射。 - AMD的寄存器文件与执行单元的布线架构做了针对性优化,字节级重排操作可以直接在寄存器端口到执行单元的路径上完成,无需额外周期开销,因此能做到单周期延迟。
补充说明:Intel平台的BSWAP虽然延迟为2周期,但吞吐量通常是每周期1条,说明执行单元本身没有瓶颈,延迟仅来自数据在寄存器与执行单元之间的传输路径约束。
内容的提问来源于stack exchange,提问作者orlp
相关产品推荐
相关产品推荐

