我理解为什么数据需要对齐(以及为填充实现它所做的所有努力)所以我们可以减少内存访问次数,但这假设处理器只能获取4的倍数地址(假设我们使用的是32位架构)。 因为这个假设,我们需要调整记忆。
我的问题是:
为什么我们只能访问4个地址的多个地址(效率,硬件限制,另一个)?
这样做有什么好处?为什么我们无法访问所有可用的地址?
答案 0 :(得分:4)
内存由连接到内存总线的硬件(RAM)构成。总线越宽,获取数据所需的周期就越少。如果内存是一个字节宽,则需要四个周期来读取一个32位值。随着时间的推移,存储器架构已经发展,并且根据处理器的类别(嵌入式,低功耗,高性能等)和缓存设计,存储器可能相当宽(例如,256位)。
给定一个非常宽的内部总线(在RAM或高速缓存之间)和寄存器,比如寄存器宽度的两倍,如果数据路径中有一个桶形移位器,则无论对齐如何,都可以在一个周期内获取一个值。桶式变速器价格昂贵,所以并非所有的加工商都有它们;如果路径中没有一个,则需要多个周期来对齐值。