位扩展与交叉编址的区别是什么?他们为什么都能扩展存储器总线

比如下图按题意很明显是个位扩展但是却是用多模块交叉编址。

img

img


这里也是如此

img


而位扩展各个芯片的对应地址应该都是相同才是位扩展,但是多体交叉编址地址却不同,很奇怪这是两种不同的扩展字长的方式吗?

交叉编址分为低位交叉编址(常用)和高位交叉编址,是为了解决cpu和存储器之间的速度矛盾,因此将多个存储芯片连在一块,通过高位或低位的几个二进制数来区分是哪一个存储芯片,由于cpu存取某一个存储芯片后,该芯片需要一定的恢复时间(联想到存取周期=存取时间+恢复时间),因此可以在该芯片的恢复时间内,cpu去存取别的存储芯片,提高效率,这就是交叉编址的意义;字拓展是为了拓展存储器中最大可寻址范围,而字拓展的前提是cpu的地址接口能够满足字拓展的需要,字拓展是将多个存储芯片的地址线连在cpu的地址线接口上(连接方式、连接顺序完全相同),将不同存储芯片上面的片选线接口接在译码器上,通过译码器来决定哪个存储芯片被接通。
因此,综上所述,王道书p102上面的图片是默认了高位交叉编址,但也可以低位交叉编址(通过A0-A1连接译码器,A15-A2连接地址线),这一观点在王道p104课后习题07可体现出来了,但是要注意一点是,一般是连续编址的。

以下内容部分参考ChatGPT模型:


位扩展和交叉编址是两种不同的扩展存储器总线的方式。位扩展是将原来的存储器总线扩展成更宽的数据位,而交叉编址是将存储器地址按照某种规则进行重新编址,以扩展存储器总线。

位扩展的例子如下图所示,原来的8位存储器总线被扩展成16位存储器总线,每个地址对应的数据位宽也从8位扩展到16位。

   +-------+
   |       |
---|  CPU  |---
   |       |
   +-------+
      |
      |16-bit data bus
      |
   +-------+
   |       |
---|Memory |---
   |       |
   +-------+

交叉编址的例子如下图所示,原来的存储器地址被重新编址,每个地址对应的数据位宽也不同。

   +-------+
   |       |
---|  CPU  |---
   |       |
   +-------+
      |
      |8-bit data bus
      |
   +-------+   +-------+   +-------+
   |       |---|       |---|       |
---|Memory1|   |Memory2|   |Memory3|
   |       |---|       |---|       |
   +-------+   +-------+   +-------+
      |           |           |
      |           |           |8-bit address bus
      |           |           |
   +-------+   +-------+   +-------+
   |       |   |       |   |       |
---|Memory4|---|Memory5|---|Memory6|
   |       |   |       |   |       |
   +-------+   +-------+   +-------+

以上是我的回答,希望对你有所帮助。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快