gpt4 book ai didi

x86 rep 指令在现代(流水线/超标量)处理器上的性能

转载 作者:行者123 更新时间:2023-12-03 13:16:43 26 4
gpt4 key购买 nike

我最近一直在编写 x86 程序集(为了好玩),并且想知道 rep 前缀字符串指令是否真的在现代处理器上具有性能优势,或者它们是否只是为了向后兼容而实现的。
我可以理解为什么英特尔最初会在处理器一次只运行一条指令时实现 rep 指令,但是现在使用它们有好处吗?
使用编译为更多指令的循环,有更多的指令要填满管道和/或乱序发出。现代处理器是为优化这些以 rep 为前缀的指令而构建的,还是在现代代码中很少使用 rep 指令,以至于它们对制造商来说并不重要?

最佳答案

在 AMD 和 Intel 的优化指南中,此类问题都有很多篇幅。在这方面给出的建议的有效性有一个“半衰期”——不同的 CPU 代的行为不同,例如:

  • AMD Software Optimization Guide (Sep/2005) ,第 8.3 节,第167:
    在执行字符串操作时避免使用 REP 前缀,尤其是在复制内存块时。
  • AMD Software Optimization Guide (Apr/2011) ,第 9.3 节,第148:
    执行字符串操作时要明智地使用 REP 前缀。

  • Intel Architecture Optimization Manual在表 7-2 中给出了各种 block 复制技术(包括 rep stosd)的性能比较数据。内存复制例程的相对性能,第 页。 7-37f.,对于不同的 CPU,同样,在一个 CPU 上最快的可能在其他 CPU 上不是最快的。

    在许多情况下,最近的 x86 CPU(具有“字符串”SSE4.2 操作)可以通过 SIMD 单元进行字符串操作,请参阅 this investigation .

    要跟进所有这些(和/或在不可避免的情况再次发生变化时让自己保持更新),请阅读 Agner Fog's Optimization guides/blogs .

    关于x86 rep 指令在现代(流水线/超标量)处理器上的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8425022/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com