可寻址与对齐

时间:2015-11-25 15:09:43

标签: memory computer-architecture

我的问题与记忆有关?

  1. 对齐和可寻址之间有什么区别? 如果存储器是字节可寻址的并且字对齐,那么我们不能直接使用字可寻址存储器吗?

  2. 此外,当我们说我们有一个块转移是什么意思。如果块的大小大于word(databus),那么这意味着它需要多个周期来传输。

1 个答案:

答案 0 :(得分:2)

简短回答

可寻址性是指可以访问的最小内存单元,而对齐与访问较大的内存分组(通常称为单词)有关。

详细答案

这个问题最好用一个例子来回答。想象一下具有4字节字的字节可寻址架构。对于此示例,我们将仅考虑加载并假设有两种类型LB(加载字节)和LW(加载字为4字节)。

首先考虑LB操作。在这种情况下,CPU实际从缓存中访问4个字节,然后移位输出以选择所需的字节。因此LB 0x10LB 0x11每个都从0x10到​​0x13访问4个字节的内存。这种访问的对齐方式并不重要。

接下来考虑一个对齐的LW操作。 LW从内存中读取4个字节。所以LW 0x10从地址0x10读取4个字节到0x13。这可以像LB操作一样以单个操作完成。

然而,LW 0x11操作将是未对齐的访问。它实际上需要从0x11到0x14的数据,但从缓存读取的数据有4个字节的块。因此,它将读取从0x10到​​0x13的4个字节,并且还必须执行从0x14到0x17的另一个访问。然后它会从这两次访问中选择所需的字节0x11到0x14。

有一些方法可以在微体系结构级别优化未对齐访问,以便不对齐访问它不像两次对齐访问那样昂贵,但是未对齐访问将始终要求CPU比对齐访问执行更多工作。因此,某些体系结构禁止未对齐访问。即使对于禁止未对齐访问的体系结构,仍然允许LB,因为LB操作仅需要来自对齐访问的字节的子集。而未对齐的访问需要来自两个对齐访问的字节子集。其他架构允许未对齐访问,以便不限制程序员的灵活性,但他们仍然建议程序尽可能执行大多数对齐访问。

对于你问题的第二部分,我不完全确定你的意思是块转移。但是,如果您要访问的数据多于数据总线上的数据,那么它将需要多个循环。