gpt4 book ai didi

c++ - 为什么需要内存对齐?

转载 作者:IT王子 更新时间:2023-10-28 23:36:38 27 4
gpt4 key购买 nike

Possible Duplicate:
Purpose of memory alignment

我在网上阅读了一些关于内存对齐的文章,并且可以理解从正确对齐的内存(采用 2 字节对齐)我们可以一次快速地获取数据。

但是如果我们有像单个硬件一样的内存,那么给定一个地址,为什么我们不能直接从那个位置读取 2 个字节。喜欢:enter image description here

我考虑过了。我认为如果内存在奇偶组中,那么该理论将适用。

enter image description here

我错过了什么?

最佳答案

您的图片描述了我们(人类)如何可视化计算机内存。

实际上,将内存视为巨大的位矩阵。每个矩阵列都有一个附加的“读取器”,可以从该列读取/写入任何位。每个矩阵行都有一个“选择器”,可以选择阅读器将读取/写入的特定位。

因此,此阅读器可以一次读取整个选定的矩阵行。该行的长度(矩阵列数)定义了一次可以读取多少数据。例如,如果您有 64 列,那么您的内存 Controller 可以一次读取 8 个字节(但它通常可以做更多的事情)。

只要您保持数据对齐,您将需要更少的这些内存访问。即使您只需要读取两个位,但它们位于不同的行上,您也需要两次访问内存而不是一次。

另外,写作还有一个完整的方面,这是一个不同的问题。

就像你可以读整行一样,你也可以写整行。如果你的数据没有对齐,当你写的东西不是整行时,你需要做读-修改-写(读取行的旧内容,修改相关部分并写入新内容)。

关于c++ - 为什么需要内存对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12881179/

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