4.5 存储扩展
虽然单体存储芯片的容量和字长在不断扩大,但是在实际应用的过程中,任然会出现芯片的容量或者字长满足不了应用的情况,因此就有了存储扩展的需求;
一、存储扩展的基本概念和类型
我们假设存储芯片的容量用$M * N$来表示,$M$表示存储字数,$N$表示字长;
常见的存储扩展包括三种: 位扩展、字扩展、字位扩展;
(1)位扩展
如图所示,将四片存储单体的位数拓宽:
扩展后的存储容量变为 $M * 4N$;
(2)字扩展
扩展方式如图示:
扩展后的存储容量变为 $4M * N$;
(3) 字位扩展
扩展方式如图示:
扩展后的存储容量变为 $2M * 2N$;
无论哪种类型的存储扩展都要完成CPU与主存间地址线、数据线、控制线的连接;
二、位扩展举例
例如,用$16K\*8$的存储芯片构建$16K\*32$的存储器;
需要的芯片的数量为:$(16K * 32)/ (16K * 8) = 4$;
由于是位扩展,所以四个芯片的片选信号要连接在一起,并处在常有效的状况;(片选信号是读写操作的开关)
任何类型的存储扩展,都要实现存储器的地址线、数据线、控制线与CPU的正确连接;
由于原存储器的$8$位的,扩展之后变为$32$位,这$32$位的位线同$CPU$的$32$位数据线相连接,所有存储芯片并行工作,贡献$32$位数据中的不同$8$位;
除了数据线,还要保持控制线和地址线的连接,将$CPU$的控制线和存储芯片的读写控制线相连接;
图中,$CPU$共有$16$根地址线($A_0$ ~ $A_{15}$)。
但是由于$16K$的存储芯片只需要14根地址线($2^{14} = 16K$),因此只需要$14$位地址线与存储器相连;
三、字扩展举例
例如,用$16K * 8$的存储芯片构建$128K * 8$的存储器;
需要的芯片的数量为: $(128K * 8) / (16K * 8) = 8$
由于$128K$的存储器共需要$17$根地址线,而$16K$的存储器本身就需要$14$根的地址线,因此多余的3根地址线要作为片选译码输入;
由于目标存储器和原存储芯片都是八位,因此可以将$CPU$的数据线和所有芯片的位线之间连接。控制线也是直接连在各芯片读写控制端;
由于每一个芯片都可以接$14$根地址线,因此现将$A_0$~$A_{13}$这$14$根地址线接入各芯片,而剩下的$A_{14}$~$A_{16}$这三根地址线则连入片选译码器($3-8$译码器),由此产生片选信号;
除了芯片链接之外,还要会计算每一片芯片的地址空间
对于第$0$片芯片而言,片选信号是$000$, 因此该芯片对应的地址空间是:$000,00…00$ ~ $000,11…11$ (前三位是代表片选信号)
也就是$00000H$ ~ $03FFFH$对应的地址空间(十六进制表示)
同样的,第一片芯片的地址空间为: $001,00…00$ ~ $001,11…11$
十六进制表示为:$04000H$ ~ $07FFFH$
其他芯片同理;
知道如何由芯片推地址空间,还需要知道如何从地址空间推芯片;
只要将十六进制的地址还原成二进制的地址,再根据片选信号所用的地址的位数取值,来反推该地址是哪一个芯片;
字位扩展只需要将字扩展和位扩展的连接方式相结合即可;
感谢分享!很喜欢
谢谢支持