gpt4 book ai didi

memory - 双字节内存访问粒度

转载 作者:行者123 更新时间:2023-12-02 01:11:50 24 4
gpt4 key购买 nike

我正在尝试学习内存对齐,但没有取得多大成功。我正在使用 this IBM 的文章。

谁能给我解释一下双字节内存访问粒度部分的摘录是什么意思:

However, notice what happens when reading from address 1. Because the address doesn't fall evenly on the processor's memory access boundary, the processor has extra work to do. Such an address is known as an unaligned address. Because address 1 is unaligned, a processor with two-byte granularity must perform an extra memory access, slowing down the operation.

为什么另一个内存访问是有序的?内存访问边界是什么意思,甚至在内存访问边界上?

我对 CPU 的了解非常有限,因为我只熟悉上层编程(Objective-C 和 C++)。非常感谢任何帮助!

谢谢!

最佳答案

该示例描述了当您尝试在具有双字节访问粒度的 CPU 上读取一个包含 4 个连续字节的 block 时会发生什么。在这种类型的 CPU 上,内存以字节对的形式访问,始终以偶数字节开头。

如果您尝试读取从字节 0 开始的 block ,它必须执行 2 次读取:字节 0-1 和字节 2-3。

如果您尝试读取从字节 1 开始的 block ,它必须执行 3 次读取:字节 0-1(获取字节 1)、字节 2-3 和字节 4-5(获取字节 4)。

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

打个比方,假设一栋公寓楼每层有 4 个单元。 0-3 单元在 0 层,4-7 单元在 1 层,依此类推。如果你想在 0-3 单元的门下塞传单,你只需要去一层。但是,如果您想将传单放在 1-4 层以下,则必须去 2 层:0 层用于 1-3 层,2 层用于单元 4。

关于memory - 双字节内存访问粒度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16620226/

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