【发布时间】:2012-09-11 13:50:56
【问题描述】:
我总是听说未对齐的访问很糟糕,因为它们要么会导致运行时错误并使程序崩溃,要么会降低内存访问速度。但是我找不到任何关于它们会减慢多少速度的实际数据。
假设我在 x86 上并且有一些(但未知的)未对齐访问份额 - 实际上可能出现的最严重的减速是什么?如何在不消除所有未对齐访问并比较两个版本代码的运行时间的情况下估算它?
【问题讨论】:
-
经验法则:与对齐读取相比,大多数架构上的未对齐读取会导致约 2 倍的性能损失,因为它需要两个读取周期来获取数据并修复它。写入稍微复杂一些。
-
相关:How can I accurately benchmark unaligned access speed on x86_64 有一些关于现代 Intel 上高速缓存行拆分和页面拆分的吞吐量和延迟影响的具体细节。
标签: performance memory x86 alignment memory-alignment