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

存储器的拓展

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

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

存储器的构成

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

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

[计组笔记]存储器的扩展_第1张图片

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

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

扩展方法

位扩展

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

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

[计组笔记]存储器的扩展_第2张图片

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

字扩展

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

[计组笔记]存储器的扩展_第3张图片

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

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

[计组笔记]存储器的扩展_第4张图片

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

字位同时扩展

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

[计组笔记]存储器的扩展_第5张图片

其他的细节

MREQ#信号

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

[计组笔记]存储器的扩展_第6张图片

RAM与ROM的选择

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

系统程序区是ROM

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

例题

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

类型 规格
RAM 1k×4位、4k×8位、8k×8位三种
ROM 2k×8位、4k×8位、8k×8位三种

此外还有74138和若干门电路

地址分配如下

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

问CPU和存储器连接方式


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

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

N的计算方法是用范围上界减去范围下界,系统程序区ROM这样减完之后结果是0111 1111 1111,也就是 2 11 2^{11} 211个地址,也就是说N=11,同理RAM是 2 10 2^{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位都是相同的(布线就可以布到一块,即 A 0 A_0 A0~ A 9 A_9 A9

[计组笔记]存储器的扩展_第7张图片
借由74138和地址线来选择是操作ROM还是RAM就得从它们地址范围的异同下手,如上图所示,倒数第12到倒数第14位(地址线的 A 11 A_{11} A11~ A 13 A_{13} A13)是不一样的。根据译码器译出的信号,只有 Y 4 Y_4 Y4 Y 5 Y_5 Y5的输出有用(一共7个输出, Y 0 Y_0 Y0 Y 7 Y_7 Y7)。因此也只用到这两个输出(所以也只需要画出这俩就行了)

100对应着 Y 4 Y_4 Y4输出0,101对应着 Y 5 Y_5 Y5输出0,这个输出的作用是连到片选上,而片选 C S ‾ \overline{CS} CS是负逻辑的,所以74138的输出刚好合适。

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

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

[计组笔记]存储器的扩展_第8张图片
上图下面举了那个例子,显然当 A 10 A_{10} A10是1时不行,也就是说当 A 10 A_{10} A10 Y ‾ 5 \overline{Y}5 Y5都为0时才符合片选RAM的条件,并且由于片选 C S ‾ \overline{CS} CS是负逻辑,所以那个逻辑门就是输入和输出都是取反的。

[计组笔记]存储器的扩展_第9张图片
数据线部分是这样的:

  • D 0 D_0 D0~ D 7 D_7 D7连接到ROM
  • D 0 D_0 D0~ D 3 D_3 D3连接到第一个RAM
  • D 4 D_4 D4~ D 7 D_7 D7连接到第二个RAM

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

你可能感兴趣的:(计算机组成原理,其他,硬件架构)