(计算机组成原理)第三章存储系统-第四节1:主存储器和CPU的连接

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(计算机组成原理)第三章存储系统-第四节1:主存储器和CPU的连接相关的知识,希望对你有一定的参考价值。

一:连接原理

下图是我们前面讲到过的单个存储芯片的内部构造,其进行读写操作时依靠的就是上方的绿色的数据总线

  • 上面是一个8×8位的存储芯片,因此仅能存储8B的数据,如果想要扩展字数,那么就需要使用到字扩展的方法,通过连接多块存储芯片完成
  • 上面的存储芯片字长由于是8位,因此CPU一次只能读或者取8位,而现代计算机数据总线宽度至少是64位,这样的话两者不匹配,就无法发挥数据总线应有的速度,因此当数据宽度大于存储芯片字长时,应该采用位扩展的方法,将字长扩展

其实,现代的计算机MAR和MDR通常集成于CPU的内部,存储芯片内的仅仅是一个普通的寄存器。因此主存储器与CPU的连接如下图所示

  • 主存储器通过数据总线、地址总线和控制总线与CPU连接
  • 数据总线的位数与工作频率的乘积正比于数据传输率
  • 地址总线的位数决定了可寻址的最大内存空间
  • 控制总线(读或写)指出总线周期的类型和本次输入输出操作完成的时刻

最后,为了描述方便,我们为一块存储芯片的输入输出信号进行命名

  • 地址线:有可能输入多位的地址,因此地址用 A n A_{n} An表示, n n n从0开始,表示从地址地位到地址高位
  • 数据线:用 D n D_{n} Dn表示, n n n从0开始,表示从数据地位到数据高位
  • 片选线:片选信号通常用 C ‾ S ‾ \\overline C\\overline S CS C ‾ E ‾ \\overline C\\overline E CE表示,其中的横线表示低电平有效,高电平无效
  • 读写控制线:该信号用 W ‾ E ‾ \\overline W\\overline E WE W ‾ R ‾ \\overline W\\overline R WR表示,其中的横线表示低电平写,高电平读。(注意有些地方也可能将读写分开,分别为 O ‾ E ‾ \\overline O\\overline E OE W ‾ E ‾ \\overline W\\overline E WE,低电平表示有效,高电平无效)

二:增加主存的存储字长-位扩展法

如下是我们买来的一块8K×1位的存储芯片,现在我们来逐步连接

该存储芯片有8K个存储单元,且 2 13 = 8192 2^{13}=8192 213=8192,也就是需要13根地址线表示这么多地址,所以该存储芯片首先向外暴露13个地址引脚,于是CPU会把它想要访问的地址通过地址总线送过来

左下角的“ W E WE WE”表示Write Enable,上方没有横线,那么就表示低电平读、高电平写;所以CPU通过控制总线发送读写控制信号

接下来是数据线的连接,我们看到CPU一次是可以读写8位的数据的,但是由于CPU字长的限制,一次只能进行一位,数据总线的利用率十分差

最后一个 C S CS CS,表示高电平有效,这里由于是一个芯片,因此先直接暴力给一个高电平

至此,单个芯片的连接已经完成了。但是最致命的缺点就是存储字长为1,数据总线利用率很差,因此在这种情况下我们可以进行位扩展

这里,我们又买到了一个和上面相同规格的存储芯片
接着连接地址线,从刚才连接的每一个地址线分别分流出一根线连接到该存储芯片的引脚上,因此如果这样连接,就意味着一个地址可以选中两个存储单元
读写控制线也是如此,意味着它们是同时读或者同时写

连接数据线时,该存储芯片的引脚可以连接在CPU的 D 1 D_{1} D1位置,也就是第二个引脚处,同时也给片选线加入高电平

至此这两块芯片可以同时进行工作,因此可以发现存储字长被扩展为了2位,可以同时读或写两位的信息了。

最后如法炮制,再买了6块芯片,依次安装即可

  • 每块芯片都有8个存储单元,CPU发出的 A 0 A_{0} A0- A 12 A_{12} A12的这13位的地址信息会同时送给8片存储芯片

三:增加主存的存储字数-字扩展

(1)线选法

如下是我们买来的一块8K×8为的存储芯片,现在我们来逐步连接

这里我们就省略中间的叙述过程了,连接如下

可以发现这个芯片连接时数据总线的利用率会被发挥至极致,因此不需要位扩展。这个CPU其寻址能力非常大,可以达到 2 16 2^{16} 216,但是却只利用了一部分,有3位没有被利用,因此这情况我们要采用字扩展的方式解决

于是,再买来一块相同规格的存储芯片,先采用之前的位扩展的规则进行连接,如下图

可以发现,如果机继续采用这种方式连接将会产生很大的问题,由于片选信号选中,假如读数据,这时两块存储芯片的8个位的数据会同时传给CPU,就会产生数据冲突

如何解决?关键就在于片选信号。现在将 A 13 A_{13} A13连接到左边存储芯片的片选信号上,将 A 14 A_{14} A14连接到右边存储芯片的片选信号上。由于是高电平有效,因此当地址位为1时表示该存储芯片工作,如果这样,由于 A 13 A_{13} A13 A 14 A_{14} A14作为的是地址位的高位部分,因此其取值可能共有四种:01、10、11、00

  • 如果是01:此时左边芯片工作,右边不工作;因此现在CPU提供的这13位的地址只会读取左边存储芯片对应的8位的数据

  • 如果是10:此时右边芯片工作,左边不工作;因此现在CPU提供的这13位的地址只会读取右边存储芯片对应的8位的数据

  • 如果是11:这种情况又会出现刚才的矛盾,因此不能出现

所以对于左边的芯片来说,其表示的地址范围为:010 0000 0000 0000到011 1111 1111 1111;右边的芯片则为:100 0000 0000 0000到101 1111 1111 1111

上面这种方法称之为“线选法”,但是它的缺点就是00和11开头的地址是不能用的

(2)译码片选法

改进也非常简单,只需要加入一个非门。 A 13 A_{13} A13为例,其后分别连接左边芯片的片选线信号右边芯片的片选线信号,但是在第二个线路中加入一个非门,这样当 A 13 A_{13} A13为1时,左边会被选中,右边由于非门的取反会变为不工作


这样的话,左边芯片的地址范围就为:10 0000 0000 0000到11 1111 1111 1111;右边的则为:00 0000 0000 0000 到01 1111 1111 1111,整个主存地址空间是连续的。
上述的非门叫做“1-2译码器”,这种方法叫做译码片选法,如果CPU有n条多余的片选线,那么他可以对应 2 n 2^{n} 2n个片选信号

  • 译码器编号:1-2译码器是输入1个对应2个,2-4译码器是输入两个对应1个,以此类推

讲完上面的操作,现在我们可以使用字扩展了。这里我们采用一个2,4译码器,也就是输入两个信号,输出4个信号,接着加入4个8×8位的存储芯片,每块存储芯片都会接受CPU发过来的低13位的地址信息

  • 注意上方图片中,每个存储芯片所有的地址信息都是直接来自于CPU的,不是从左边相邻的芯片传递过来的,这里是这样画只是为了整洁
  • 在电路图中,当需要表示低电平有效时,通常会在上面画一个“小圆”

A 13 A_{13} A13 A 14 A_{14} A14为均为0时,就表示第一根线为1,剩余为0,但是经过译码器后,由于是取反,所以第一根为0,其余为1,而正好0表示存储芯片工作,所以这种情况第一个存储芯片工作,其余不工作

类似的,当 A 13 A_{13} A13为1, A 14 A_{14} A14为0时,就表示第二根线为1,剩余为0,但是经过译码器后,由于是取反,所以第二根为0,其余为1,而正好0表示存储芯片工作,所以这种情况就表示第二个存储芯片工作,其余不工作

因此:

要访问第一块存储芯片,就要保证 A 13 A_{13} A13为0, A 14 A_{14} A14为0,此时地址范围为:000 0000 0000 0000到001 1111 1111 1111
要访问第二块存储芯片,就要保证 A 13 A_{13} A13为1, A 14 A_{14} A14为0,此时地址范围为:010 0000 0000 0000到011 1111 1111 1111
要访问第三块存储芯片,就要保证 A 13 A_{13} A13为0, A 14 A_{14} A14为1,此时地址范围为:100 0000 0000 0000到101 1111 1111 1111
要访问第四块存储芯片,就要保证 A 13 A_{13} A13为1, A 14 A_{14} A14为1,此时地址范围为:110 0000 0000 0000到111 1111 1111 1111

因此这样的操作就能保证主存地址范围从全0到全1,而且是连续的

另外还需要注意的是,考试时可能不会是连续的 A 13 A_{13} A13 A 14 A_{14} A14,有可能是 A 13 A_{13} A13 A 15 A_{15} A15但是无论怎么样,只要不选中,就不影响选片操作,是0是1不用管,只看选中的那几位

最后,这里的 A 15 A_{15} A15没有被启用,如果要使用的话那么就需要一个3-8译码器,然后再增加4个相同规格的存储芯片即可

四:同时增加存储字长和存储字数-字位同时扩展

位扩展可以使得存储芯片的字长变得更长,从而更好的发挥数据总线的传输能力;字扩展可以增加存储器的存储字数,从而更好利用CPU的寻址能力。

既然二者都有各自的优点,那么我们自然而然就可以将它们综合起来,这种方法就是字位同时扩展的方法

如下图有8块芯片,共有4组,每组两块,每组芯片实现了位扩展

  • 前面的可以连接 D 0 − D 3 D_{0}-D_{3} D0D3,后面的可以连接前面的可以连接 D 4 − D 7 D_{4}-D_{7} D4D7

这是一个16K的存储芯片,因此将 A 0 − A 13 A_{0}-A_{13} A0A13作为片内地址, A 14

以上是关于(计算机组成原理)第三章存储系统-第四节1:主存储器和CPU的连接的主要内容,如果未能解决你的问题,请参考以下文章

(计算机组成原理)第五章中央处理器-第四节4:微程序控制单元设计

(计算机组成原理)第七章输入和输出系统-第四节1:I/O方式之程序查询方式

(计算机组成原理)第六章总线-第四节:总线标准

(计算机组成原理)第一章计算机系统概述-第四节:计算机的性能指标

(计算机组成原理)第七章输入和输出系统-第四节3:I/O方式之DMA方式

(计算机组成原理)第七章输入和输出系统-第四节2:I/O方式之程序中断方式