- 主题:64 位计算机,内存地址对齐四字节还是八字节比较有效率?
假定要执行 memcpy(*dest, *src, n) 复制一段内存。正常在 amd64 计算机下,dest, src 两个指针最好是对齐的。
那么,不同的计算机架构会要求不同的对齐方式吗?还是说只要对齐到 4 个字节就行?
--
FROM 183.253.143.*
也就是说 memcpy() 已经考虑了不对齐的情况,所以程序员不需要特别的优化。但是操作内存的时候,为了让 load/store 更加高效,应该尽量按计算机的字对齐是吧?64 位计算机就对齐到 8 个字节是最好的?
【 在 ArchLinux 的大作中提到: 】
: 一般来说是优化load吧,就是把source对齐,因为程序的延迟来源于load,
: load需要等内存中读回来的数才能做后续操作,store的话指令发出去就不用理它了。
--
FROM 59.60.25.*
那为啥 c 语言编译器默认都是对齐的呢?不默认 __attribute__((__packed__)) 算了。
【 在 leadu 的大作中提到: 】
: 现代cpu基本不需要考虑总线对齐
: 非对齐的需要两次总线读写,这个是几十年前的体系架构书的内容了。
: 随便一搜就有的测试结果,对不对齐没有可见变化
: ...................
--
FROM 59.60.25.*