[计组笔记]存储器的扩展

存储器的拓展

参考:计算机组成原理微课版

B站视频https://www.bilibili.com/video/BV1r54y1U7ra

存储器的构成

完整的存储芯片由以下部分构成

  • 译码驱动
  • 存储矩阵
  • 读写电路

存储器示意图

表示方法示例意义
位表示法1k×4位该芯片有1k个存储单元,每个单元长度为4个二进制位
字节表示法128B该芯片有128个单元(一个存储单元由8个二进制位组成)

对于一个1K×4的芯片,数据线有4条,因为每个数据有四位。地址线有10条,因为1k即1024=2102^{10}210,即10位的二进制数可以表示的十进制数范围是1024以内。字线(地址线译出来的用于取每一个存储字的线路)自然有1024条

扩展方法

位扩展

又称字长扩展或者数据总线扩展

叫位扩展是因为用到的芯片的数据总线位宽小于CPU的,所以要组合出一个新的芯片,该芯片的数据位宽经过扩展后与CPU的数据位宽相等。

位扩展示意

两个1K×4位的芯片组合为一个1K×8位的芯片是可行的,每个存储单元有8位,显然地址线是10不变,而数据线则是8条

字扩展

又称容量扩展或者地址总线扩展

字拓展示意

字扩展是让存储芯片的存储单元数目拓展(不考虑每个单元的字长),以两个1K×4位扩展成一个2K×4位为例,地址线新增一位(因为2102^{10}210变到2112^{11}211取对数,至于为什么取对数是因为长度为11二进制能表示的十进制正数是2k以内的)。

这里要注意的是A10A_{10}A10它在两个引出来的线之间有个取反,这样才能保证一个片选的值为1而另一个为0。数据线由于储存单元的位长度没变(还是4位)所以就不变。

多个芯片拓展示意

上图是针对2个以上的芯片拓展的布线。

字位同时扩展

其实就是上面两种方式的缝合。

字位同时扩展

其他的细节

MREQ#信号

在谭志虎书中的示意图是有MREQ#这个输出信号的,这个东西的意思是Memory request,即存储器请求。

在这里插入图片描述

RAM与ROM的选择

系统程序工作区和用户程序区是RAM

系统程序区是ROM

英文名中文特点速度
RAM随机存储器(运存)可读可写,断电后数据消失通常比ROM快
ROM只读存储器只能读出无法写入信息,断电后数据还在通常没RAM快

例题

有一块CPU,地址线16根,数据线8根,用MREQ‾\overline{MREQ}MREQ作为访存控制信号(低电平有效),WR‾\overline{WR}WR作为读/写控制信号(低电平为读,高电平为写),还有两类存储芯片:

类型规格
RAM1k×4位、4k×8位、8k×8位三种
ROM2k×8位、4k×8位、8k×8位三种

此外还有74138和若干门电路

地址分配如下

用途范围
系统程序区6000H~67FFH
用户程序区6800H~6BFFH

问CPU和存储器连接方式


分析如下:整个题考查存储芯片的扩展和与CPU的链接

  • 由分区可知系统程序区使用ROM,用户程序区使用RAM
  • 由数据线是8根可知需要的是N×8位的芯片
  • N的计算通过上面各区的范围计算得出
  • WR‾\overline{WR}WR不用连接到ROM,因为它是只读不写的(所以它的读写输入端直接接地)

N的计算方法是用范围上界减去范围下界,系统程序区ROM这样减完之后结果是0111 1111 1111,也就是2112^{11}211个地址,也就是说N=11,同理RAM是2102^{10}210,即N=10

据上所述,ROM一片2k×8位的就够了,这需要11根数据线。而RAM需要两片1k×4位的进行位扩展得到一个新的1k×8位的,这需要10根数据线。

系统程序区
0110 0111 1111 1111
0110 0000 0000 0000
用户程序区
0110 1011 1111 1111
0110 1000 0000 0000

观察发现它们倒数10位都是相同的(布线就可以布到一块,即A0A_0A0~A9A_9A9

74138的使用
借由74138和地址线来选择是操作ROM还是RAM就得从它们地址范围的异同下手,如上图所示,倒数第12到倒数第14位(地址线的A11A_{11}A11~A13A_{13}A13)是不一样的。根据译码器译出的信号,只有Y4Y_4Y4Y5Y_5Y5的输出有用(一共7个输出,Y0Y_0Y0Y7Y_7Y7)。因此也只用到这两个输出(所以也只需要画出这俩就行了)

100对应着Y4Y_4Y4输出0,101对应着Y5Y_5Y5输出0,这个输出的作用是连到片选上,而片选CS‾\overline{CS}CS是负逻辑的,所以74138的输出刚好合适。

其余的地址线,A0A_{0}A0~A10A_{10}A10 连上ROM,A0A_{0}A0~A9A_{9}A9连上RAM。

这里涉及到另外一个问题,即101对应Y5Y_5Y5输出0时,并不是代表这就得选RAM,如下图所示

在这里插入图片描述
上图下面举了那个例子,显然当A10A_{10}A10是1时不行,也就是说当A10A_{10}A10Y‾5\overline{Y}5Y5都为0时才符合片选RAM的条件,并且由于片选CS‾\overline{CS}CS是负逻辑,所以那个逻辑门就是输入和输出都是取反的。

不知道写啥
数据线部分是这样的:

  • D0D_0D0~D7D_7D7连接到ROM
  • D0D_0D0~D3D_3D3连接到第一个RAM
  • D4D_4D4~D7D_7D7连接到第二个RAM

完整且正确的图如下所示(上方的图存在线路交叉的问题,具有歧义)
最终布线
最后提一句74138的输入引脚,G1=1,G2=G3=0时,该元件可以工作,与连到CPU哪里无关,要的是个输入到上面的结果,只要符合上面要求就能正常工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值