注:本篇文章所有图片均来源于本人的微信公众号
CPU执行的指令,需要的数据都保存在主存储器当中,运行的结果也保存在主存储器当中,下面就来讲解CPU与存储器连接过程需要注意的几个问题。
1.存储器容量的扩展
(1)位扩展(增加存储字长)
我们给出的例子是用1K*4位的存储芯片如何组成1K*8位的存储器(使用2114芯片,2114的容量为1K*4位)
先来分析,1K乘4位的芯片,1K=1024B=pow(2,10)说明芯片有10根数据线,4位表示有4根数据线,要组成8位的存储器即同时读写8位 ,一个芯片可以同时读取四位,那么我们用片选线两个芯片连接在一起,在进行读写操作时使两片芯片同时被选中,是不是就可以同时读取8位了,连接方式如下:
两块芯片分别与10根地址线连接,准备8根数据线,每个芯片连接4位,再把两个芯片连接在片选线(cs)上和读写控制线(we)上,地址线和数据线的两端分别与CPU连接这样就能保证CPU读写8位的需求,cs为低电平时两个芯片被同时选中。
思考:数据线和地址线需不需要按顺序连接?
1.数据线:
- **功能**:用于在CPU和存储器之间传输数据。
- **连接要求**:数据线通常可以按任意顺序连接,因为数据传输是双向的,CPU和存储器会根据需要正确解析数据。但为了减少布线复杂性和信号干扰,建议按顺序连接。
2.地址线:
- **功能**:用于指定存储器中要访问的位置。
- **连接要求**:地址线必须按顺序连接,因为CPU发出的地址信号直接对应存储器的物理地址。如果顺序错误,CPU将无法正确访问存储器,导致数据读取或写入错误。(地址线上的0和1二进制编码对应存储器的物理地址)
总结:
- **数据线**:可以按任意顺序连接,但建议按顺序以减少干扰。
- **地址线**:必须严格按顺序连接,否则会导致寻址错误。
因此,连接时必须确保地址线的顺序正确,数据线则相对灵活。
(2)字扩展(增加存储字的数量)
我们给出的例子是用1K*8位的芯片组成2K*8位的存储器,显然要扩充的是芯片的存储单元,我们采用的策略是地址线与片选线复用的办法
如图所示,我们用两片1K*8位的芯片,这样两个芯片同时工作就可以满足存储器2K存储单元的需求,那么问题又来了,如果两个芯片同时工作,两个芯片各自都有八位数据线,那它们就会同时读出或写入16位的数据,这显然会超出我们的需求,需求是2k×8位,那么我们就应该让这两个芯片分开单独工作,如果分开工作要满足2k的存储需求,1k的存储单元需要10根地址线,2k是1k的两倍即2的11次方,那么2k就需要11根地址线,而我们的芯片只有10根地址线,因此,我们增加一根A10的地址线,这样就可以满足2k的存储需求。
现在我们满足了芯片单独工作时的存储需求,下一步就是如何实现芯片的单独工作。我们通过片选线可以实现芯片的单独工作,两个芯片都需要连接,在偏选线上,但是又不能让两个芯片同时工作