我的问题与记忆有关?
对齐和可寻址之间有什么区别? 如果存储器是字节可寻址的并且字对齐,那么我们不能直接使用字可寻址存储器吗?
此外,当我们说我们有一个块转移是什么意思。如果块的大小大于word(databus),那么这意味着它需要多个周期来传输。
答案 0 :(得分:2)
可寻址性是指可以访问的最小内存单元,而对齐与访问较大的内存分组(通常称为单词)有关。
这个问题最好用一个例子来回答。想象一下具有4字节字的字节可寻址架构。对于此示例,我们将仅考虑加载并假设有两种类型LB
(加载字节)和LW
(加载字为4字节)。
首先考虑LB
操作。在这种情况下,CPU实际从缓存中访问4个字节,然后移位输出以选择所需的字节。因此LB 0x10
或LB 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
操作仅需要来自对齐访问的字节的子集。而未对齐的访问需要来自两个对齐访问的字节子集。其他架构允许未对齐访问,以便不限制程序员的灵活性,但他们仍然建议程序尽可能执行大多数对齐访问。
对于你问题的第二部分,我不完全确定你的意思是块转移。但是,如果您要访问的数据多于数据总线上的数据,那么它将需要多个循环。