我很想知道在 x86 架构上进行大容量内存复制的最佳方法。我意识到这取决于机器特定的特性。主要目标是过去 4-5 年制造的典型台式机。
我知道在过去,带有 REPE 的 MOVSD 名义上是最快的方法,因为您一次可以移动 4 个字节,但我读到现在 MOVSB 一样快并且更易于编写,所以您不妨做一个字节移动并忘记 4 字节移动的复杂性。
一个围绕的问题是 MOVxx 指令是否值得。如果 CPU 的运行速度比内存总线快得多,那么使用 CISC 移动可能毫无意义,您不妨使用普通的 MOV。这将是最有吸引力的,因为这样我就可以在 ARM 等其他处理器架构上使用相同的算法。这就提出了一个类似的问题,即 ARM 用于大容量内存移动的专用指令(与 Intel 完全不同)是否值得。
注意:我已阅读《英特尔优化参考手册》中的第 3.7.6 节,因此我熟悉基础知识。我希望有人能将本手册中没有的领域的实践经验联系起来。