首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在x86和ARM中移动内存的最佳方式?

在x86和ARM中移动内存的最佳方式?
EN

Stack Overflow用户
提问于 2012-12-09 20:42:37
回答 1查看 2.7K关注 0票数 0

我感兴趣的是了解x86体系结构上批量内存副本的最佳方法。我意识到这取决于机器特有的特性。主要的目标是典型的台式机制造在过去的4-5年。

我知道,在过去,使用REPE的MOVSD是名义上最快的方法,因为您可以一次移动4个字节,但我已经读过,现在MOVSB同样快速,而且编写起来更简单,所以您可以做一个字节移动,只需忘记4字节移动的复杂性。

一个周围的问题是,MOVxx指令是否值得。如果CPU可以比内存总线运行得快得多,那么使用CISC移动可能是没有意义的,您也可以使用普通的MOV。这将是最有吸引力的,因为这样我就可以在其他处理器架构(如ARM )上使用相同的算法。这就引出了一个类似的问题,即ARM用于大容量内存移动的专用指令(与Intels完全不同)是否值得。

注意:我已经阅读了英特尔优化参考手册3.7.6节,所以我熟悉基本知识。我希望有人能把这方面的实际经验与本手册中的内容联系起来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-10 00:12:43

现代英特尔( Intel )和AMD (AMD)处理器对REP进行了优化,如果可以的话,它可以一次复制整个缓存线,这使得它成为复制海量数据的最佳方法(可能不是最快的,但非常接近)。

至于ARM,它取决于体系结构版本,但一般来说,使用展开循环将是最有效的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13791620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档