【发布时间】:2011-02-13 01:35:13
【问题描述】:
我理解为什么需要对齐数据(以及为完成对齐所做的所有努力,例如填充),以便我们可以减少内存访问次数,但这假设处理器只能获取 4 的倍数的地址(假设我们使用32 位架构)。 由于这个假设,我们需要对齐内存。
我的问题是:
为什么我们只能访问 4 的倍数(效率、硬件限制、另一个)?
这样做有什么好处?为什么我们不能访问所有可用的地址?
【问题讨论】:
我理解为什么需要对齐数据(以及为完成对齐所做的所有努力,例如填充),以便我们可以减少内存访问次数,但这假设处理器只能获取 4 的倍数的地址(假设我们使用32 位架构)。 由于这个假设,我们需要对齐内存。
我的问题是:
为什么我们只能访问 4 的倍数(效率、硬件限制、另一个)?
这样做有什么好处?为什么我们不能访问所有可用的地址?
【问题讨论】:
内存由连接到内存总线的硬件 (RAM) 构成。总线越宽,获取数据所需的周期就越少。如果内存为 1 字节宽,则需要 4 个周期才能读取一个 32 位值。随着时间的推移,内存架构不断发展,并且根据处理器的类别(嵌入式、低功耗、高性能等)和缓存设计,内存可能非常宽(例如,256 位)。
给定一个非常宽的内部总线(在 RAM 或高速缓存之间)和寄存器,比如两倍于寄存器宽度,如果数据路径中有桶形移位器,则无论对齐如何,您都可以在一个周期内获取一个值。桶式移位器很昂贵,因此并非所有处理器都有它们;如果路径中没有一个,则需要多个循环来对齐值。
【讨论】: