Memory 双字节内存访问粒度

Memory 双字节内存访问粒度,memory,memory-access,granularity,Memory,Memory Access,Granularity,我正试图学习记忆对齐,但不可否认,没有取得多大成功。我正在使用IBM的文章 有人能给我解释一下双字节内存访问粒度部分的这段摘录是什么意思吗 但是,请注意从地址1读取时会发生什么。由于地址不均匀地落在处理器的内存访问边界上,处理器有额外的工作要做。这样的地址称为未对齐地址。由于地址1未对齐,具有两字节粒度的处理器必须执行额外的内存访问,从而降低操作速度 为什么要进行另一次内存访问?内存访问边界是什么意思,它甚至在内存访问边界上 我对CPU的了解非常有限,因为我只钻研过上层编程(Objective-

我正试图学习记忆对齐,但不可否认,没有取得多大成功。我正在使用IBM的文章

有人能给我解释一下双字节内存访问粒度部分的这段摘录是什么意思吗

但是,请注意从地址1读取时会发生什么。由于地址不均匀地落在处理器的内存访问边界上,处理器有额外的工作要做。这样的地址称为未对齐地址。由于地址1未对齐,具有两字节粒度的处理器必须执行额外的内存访问,从而降低操作速度

为什么要进行另一次内存访问?内存访问边界是什么意思,它甚至在内存访问边界上

我对CPU的了解非常有限,因为我只钻研过上层编程(Objective-C和C++)。非常感谢您的帮助


谢谢

该示例描述了在具有双字节访问权限的CPU上尝试读取4个连续字节的块时发生的情况。在这种类型的CPU上,内存以字节对的形式访问,总是以偶数字节开始

如果试图读取以字节0开头的块,则必须执行2次读取:字节0-1和字节2-3

如果试图读取以字节1开头的块,它必须执行3次读取:字节0-1(获取字节1)、字节2-3和字节4-5(获取字节4)

内存访问粒度是它一次访问的字节数,内存访问边界是这些字节组的开始位置。字节组总是以偶数倍的粒度寻址——如果是双字节粒度,它们从偶数地址开始,如果是四字节粒度,它们是4的倍数


作为一个类比,考虑每个楼层有4个单元的公寓楼。第0-3单元在第0层,第4-7单元在第1层,等等。如果你想在第0-3单元的门下塞一张传单,你只需要到一层。但是,如果你想将传单滑到1-4层以下,你必须到2层:1-3层为0层,4单元为2层。

你是否阅读了文章的前半部分,其中描述了“内存访问粒度”,以及处理器如何访问内存的图表?是,但我不明白为什么要打另一个电话。有什么原因不能从1开始吗。例如,1-2,2-3。那不也是4个字节吗?谢谢因为对齐内存访问不是这样工作的。硬件设计用于访问特定块中的内存。哦,好的。。。谢谢你的帮助!看看我刚才在答案中添加的类比,它应该有助于理解。