首页 > 其他分享 >3.5主存储器与CPU的连接

3.5主存储器与CPU的连接

时间:2023-02-06 12:58:23浏览次数:58  
标签:芯片 存储芯片 CPU 地址 3.5 主存储器 信号 译码器

@

目录

一、引子

在这一小节中,我们要学习主存储器与 CPU 之间的连接。首先我们会回顾之前小节学习过的内容,我们已经知道了单块存储芯片它对外暴露出来的一些接口。

我们首先会探讨单块存储芯片和 CPU 之间的连接如何实现,接下来会介绍多块存储芯片和 CPU 之间的连接,分别是位扩展、字扩展和字位同时扩展。这个小节的最后我们还会补充一些关于译码器的知识。补充的内容可能在考题当中遇到。

这小节的内容可能会比较多,也比较硬核,特别是对于没有学过数字电路的同学,可能理解起来会比较吃力。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uM9znR82-1674904175322)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230127215734603.png)]

二、单块存储芯片与CPU的连接

先来回顾一下之前学过的内容。详情请戳:3.2主存储器的基本组成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U93nQjWM-1674904175324)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128103520656.png)]

我们需要对外暴露出这样的一些接口:

绿色的线是用来传送数据的,通常会利用数据总线与CPU连接。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QOAN1d49-1674904175325)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230127220033460.png)]

红色的线是用来传送访问地址的,通常会通过地址总线和CPU连接。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y9SUUht8-1674904175325)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230127220157155.png)]

③另外,还需要对外暴露片选线读/写控制线,CPU通过控制总线来发送控制信号。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sj6NRTJh-1674904175326)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230127220331314.png)]

上面图示是一个8*8的存储芯片。

因为图示一共有8个字(2^3),每个字的字长是8位。

这里只用了单块的存储芯片来存储数据,并且只能存储8B数据。

<1> 如果想要扩展主存储字数该怎么办呢?那么接下来我们学习字扩展法

我们可以连接多块存储芯片来扩展主存的字数。

<2> 数据总线的宽度>存储芯片字长,怎么办?这里就需要用到位扩展法

这里给出的存储芯片,它的字长只有8位,也就是CPU一次只能存或者取8bit数据。但是现在的CPU大多每次可以读或者写64位数据,也就是现代的计算机数据总线的宽度至少也要有64位。

之前说过,应该尽可能保证数据总线的宽度和主存的存储字长一样,只有这样才能尽可能的发挥数据总线的性能。(每次多存或者多取一些数据,可以让数据的读写速度更快)

所以现在问题产生了,我们现在拥有的单块存储芯片,如果它的芯片的字长比数据总线的宽度更小,怎么办?

这个小节要学习的位扩展就是要解决这个问题,通过多块存储芯片的合理连接,我们可以让整个主存的存储字长拓展为和数据总线宽度一致。

所以字扩展和位扩展就是小节要解决的两个主要问题。


三、多块存储芯片与CPU的连接

1.现代计算机

我们之前在讲存储芯片的时候,把 MAR 和MDR都画在了存储芯片里边。

但是现在的计算机通常 MAR、MDR 这两个寄存器都是集成在CPU内部的,所以现在的存储器当中,它里边的寄存器其实并不是 MDR和MAR,只不过是一个普通的寄存器而已。

因此现在大家使用的计算机一般来说是这样的一个结构,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b1tNRddX-1674904175326)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128104632766.png)]

就是CPU里边集成了 MAR和 MDR。 MDR里边存储的数据,也就是要读或者要写的数据,是通过数据总线和主存进行交换的。而 MAR里边存储的地址数据,是通过地址总线送给主存。

另外, CPU 还需要通过控制总线向主存发送、读写这一类的控制信息。而现在的主存中一般会包含很多块的存储芯片,大家可以去淘宝或者京东上随便搜一下。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dwL1Ff6Y-1674904175327)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128104812310.png)]

这是三星的一个 8GB 的内存条,它里边白色贴纸下面,大家注意看一下,总共有四块黑黑的存储芯片。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vhjOT6T3-1674904175327)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128104903283.png)]

16GB 的内存条总共有 8 块。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r6rrhFgi-1674904175328)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128104929032.png)]

所以多块存储芯片如何与CPU进行连接,这个问题是很有现实意义的,非常值得我们研究和探讨。

2.命名

接下来,为了描述方便,我们给一块存储芯片的各个输入信号和输出信号进行一个命名。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m4itD5A5-1674904175328)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128105535018.png)]

地址我们通常用A来表示,我们有可能需要输入多位的地址。A0、A1、A2……(因为地址是address,所以我们用A来表示)

A0 表示的是地址的低位, A7 表示的是地址的高位。当然了,地址也有可能有更多位。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YALj7FmU-1674904175328)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128105650614.png)]

数据我们通常用D来表示。(因为数据是data,所以使用D)

同样的, D0表示的是低位, D7表示的是高位。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eh8D9YbB-1674904175329)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128105827827.png)]

片选信号我们通常用CS(cheap select )来表示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pvildrPT-1674904175329)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128110142129.png)]

如果CS上面画了一个横线,就说明这个片选信号是低电平的时候有效。而如果头上没有横线,就说明这个片选信号是高电平的时候有效。

大多数的教材都是把片选信号用CS这样的英文缩写来表示。当然了,也有的教材会用CE这样的缩写来表示,考试的时候说不定都可能遇到。

读写控制线的信号,我们通常用WE(Write)或者WR(Read)这样的方式来表示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wefkQDqu-1674904175330)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128110250237.png)]

上面画了一条横线的意思是当这个信号是低电频信号的时候,我们是在进行写操作,而如果是高电频信号,我们要进行的是读操作。

这两种英文缩写都是很常用的。当然了,也有的地方有可能会把读信号和写信号分开,用两个输入端输入,写信号用 WE表示,读信号用OE表示,都是低电频有效。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MeYtYn1Z-1674904175330)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128110410354.png)]

总之,这个地方想给大家强调的是存储芯片当中各种输入信号和输出信号常用的一些英文缩写。大家需要注意上面有没有横线,如果有横线说明低电频有效,没有横线说明高电频有效。

3.增加主存的存储字长--位扩展

(1)单块

接下来我们来看一下,如果此时我们已经买到了一块 8K 乘以 1 位的存储芯片,那么单块的存储芯片应该如何和我们的 CPU 进行连接呢

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pfp69Fnx-1674904175331)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128110706309.png)]

①地址线的连接

首先这块存储芯片总共有 8K 个存储单元, 8K 对应二进制应该是 2 的 13 次方,所以我们需要用 13 根地址线来表示这 8K 的地址。

因此这一块存储芯片对外暴露出的地址线的引脚应该是 A0 到A12,总共有 13 条。 CPU 会把它想要访问的地址通过地址总线给送过来,这样我们就完成了地址线的连接。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i5XuXb5D-1674904175331)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128111005751.png)]

②WE信号

接下来看 WE信号。这信号表示的是 writing enable 写使能信号,它的头上没有横杠,就说明当这个信号是一个高电平的时候,此时 CPU 是要往里边写数据。而如果传过来的是一个低电平信号,就表示 CPU 要从中读数据。

CPU 也会有一个金属引脚来发送读写控制信号,这个信号是通过控制总线传给芯片的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DgIhJqYX-1674904175332)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128111205416.png)]

③数据的传送

接下来再看数据的传送。虽然 CPU 可以通过数据总线同时读或者写8比特的数据,然而由于我们存储芯片的限制,我们每一次只能通过数据总线来传送一个比特。也就是数据总线的传输能力是利用的很不充分的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JJ4WQZwc-1674904175332)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128144456663.png)]

不管怎么说,我们也已经完成了单块存储芯片和 CPU 的连接。

④CS

这个地方还有一个CS,也就是片选信号,我们还没有接。由于只有这一块芯片工作,所以我们可以简单粗暴地给它直接上一个高电平的信号。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sVb2rhuO-1674904175332)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128144631192.png)]

因为 CS 的头上没有画横线,意味着片选信号是高电频有效。

此时我们整个主存只有一块存储芯片,每一次只能读或者写一位的数据,所以此时主存的存储字长就是1比特。数据总线并没有被充分的利用好。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7v6KUa1M-1674904175333)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128144713194.png)]


(2)多块

为了解决这个问题,我们可以给主存再加上一块相同型号的存储芯片,同样也是 8K 乘以1位。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h8mE1Jsz-1674904175333)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128145424256.png)]

同样的 CPU 通过地址总线把它想要访问的地址信息传给这块芯片。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cp0K4xqD-1674904175333)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128145401156.png)]

因为左边和右边这两块芯片,它们都有 8K 个存储单元,所以如果把 13 位的地址信息同时送给这两块芯片,地址信息可以选中这两块芯片相同位置的存储单元。

读写控制线也是一样的,我们只需要把CPU发出的这些读写控制信号同时送给两块芯片就可以,要么同时读,要么同时写。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oyspE4bh-1674904175334)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128145610837.png)]

右边这一块芯片,从这儿读出的这一位数据,我们可以作为 CPU 读入的D1这一位的数据。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m1ItsJ3A-1674904175334)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128145738605.png)]

接下来我们只需要给右边的片选信号,加一个高电频,这样这两块芯片就可以同时工作。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EOnbN5dS-1674904175334)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128145939481.png)]

进行了改造之后,我们整个主存储器总共有两块存储芯片。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zDgg0cwp-1674904175335)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128150040862.png)]

总体来看,存储器的存储字长拓展为了两位。现在我们可以同时读或者同时写两位的信息。


接下来使用同样的方法,我们还可以继续增加同类型的 6 块芯片。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BOlrQjd2-1674904175335)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128150528786.png)]

最终我们就可以得到这样的一个连接。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20u9AIod-1674904175336)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128150556101.png)]

每一块芯片都有 8K 个存储单元, CPU 发出的A0到 A12这13 位的地址信息会同时送给 8 片存储芯片。

由于每一块芯片的存储单元只有一个比特的数据,所以我们会把这 8 块存储芯片,它的这一位数据分别送到数据总线的不同位上。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2fBp6XRT-1674904175336)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128150832632.png)]

接下来,数据总线可以同时把这8位的信息送给CPU。

这样我们就把整个主存的存储字长拓展为了8比特。

这种连接方式,我们把它称为位扩展的方式。我们把 8 片 8K 乘以 1 位的存储芯片连接组合成了 8K 乘以8位的存储器,总容量应该是8KB。

4.增加主存的存储字数--字扩展

(1)单块

接下来我们再来看第二种连接方式,叫做字扩展的方式。

假设现在我们买了一片存储芯片,是 8K 乘以8位的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6G9xP9vk-1674904175336)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128154007257.png)]

CPU的结构是这样的:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nrYnzdwO-1674904175337)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128154025116.png)]

CPU可以同时读或者写8位的信息。(D0~D7)

现在,由于我们的存储芯片,它的字长已经有8位了。因此这块存储芯片的字长,数据的宽度和 CPU 能够处理的宽度是能够完美匹配上的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G6mMlAb4-1674904175337)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128154139420.png)]

对于这个场景,我们不需要像之前那样进行位扩展,数据总线的传输能力已经被使用到极致了。

由于它有 8K 个存储单元,因此我们需要有 13 位的地址信息(A0~A12)。接下来再给片选信号,加一个高电频,这一块存储芯片就可以正常的工作了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LJeo3w4K-1674904175338)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128154257216.png)]

现在我们会发现 CPU 还有三个地址位的信息没有被利用到。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4CeuxJUy-1674904175338)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128154319466.png)]

CPU 的MAR来是有 16 位,也就是CPU,它拥有 2 的 16 次方这样的一个寻址能力。然而,现在我们只利用了 13 位的地址信息,并没有完全发挥出 CPU 的寻址能力。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6oRjuWJW-1674904175347)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128154357868.png)]

那我们如何解决这个问题?

(2)多块

同样的,我们会买一块同型号的芯片,我们试一试按照之前位扩展的那种连线方法,能不能解决问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Ft74hAl-1674904175348)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128154450805.png)]

也就是把低位的 13 根地址线也连到这一块新的芯片上。另外,这块芯片的8位数据,我们同样通过数据总线传送给CPU,读写控制信号也把它连起来。

接下来再给这块芯片一个高电平的片选信号。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKqBFBXZ-1674904175349)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128154618679.png)]

现在问题来了,当 CPU 给出一个全 0 的地址之后,这个地址是不是会同时传给左边和右边这两块芯片。

而由于此时这两块芯片的片选信号都是1,他们都在工作,因此,这两块芯片的 0 号存储单元的 8 个比特的信息都会顺着数据总线传给CPU。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zr3haxzC-1674904175349)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128155020722.png)]

两边同时传,是不是就会导致数据总线的一个冲突?

(3)线选法

解决这个问题的关键就在于片选信号的使用。我们来改造一下电路。

现在我们把 A13 这一位的地址信息连到左边这块芯片, A14 连到右边这块芯片。

<1> 由于片选信号是高电频有效,因此,当 A13 和 A14分别为 1 和 0 的时候,是不是就意味着左边的这块芯片它的片选信号有效,它是被选中的。而右边这块芯片由于传过来的是一个零,因此它不会工作,它没有被选中。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uG81rJvx-1674904175349)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128155347170.png)]

这种情况下, CPU 提供的低 13 位的地址,其实只会读取出左边这块芯片对应存储单元的8比特的数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mLJkrZ7O-1674904175350)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128155433357.png)]


<2> 现在换种情况,我们让 A13 和 A14 分别为 0 和1。这种情况下,右边这块芯片会被选中,而左边这块芯片输入信号,片选信号是0,它不会工作。此时 CPU 提供的低十三位的地址,其实指明的是右边这块芯片的一个存储单元。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m19MNYCm-1674904175350)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128155606856.png)]

<3> 现在看起来问题已经解决了,但是事情并没有那么简单。如果此时我们给A13、 A14 输入的都是两个1 的信号,那么这两块芯片是不是都会被选中?这样又出现了之前所说的问题,两边会同时读或者同时写数据,再次出现了冲突的情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSrNaJHT-1674904175350)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128155654249.png)]


所以如果我们采用这样的连线方式,想要让存储器正常的工作,我们只能允许 A14 和 A13 这两位要么为01,要么为10,不可以是11和00

当 A14 为0, A13 为 1 的时候(01X XXXX XXXX XXXX),此时我们选中的是左边这块芯片。而 A14 为1, A13 为 0 的时候(10X XXXX XXXX XXXX),我们选中的是右边这块芯片。

我们再结合 A0 到 A12 这些更低位的 13 位,就会发现左边这块芯片,它所对应的地址应该是 010 0000 0000 0000 (最低地址),直到 011 1111 1111 1111(最高地址),这样的一个地址范围。总共有8k个地址。

而右边这块芯片,它所对应的地址应该是100 0000 0000 0000(最低地址)直到101 1111 1111 1111(最高地址),这样的一个范围。同样也是8k个地址。

此时如果把它们看作是一整个存储器,我们会发现在存储器当中, 00 开头的地址我们不能用,11开头的地址我们也不能用,所以这种连线方法是有待改进的。

这种连线方法称为线选法,指我们会用一个专门的地址线作为片选信号,来选中其中的某一块芯片。

如果 CPU 有 n 条多余的地址线,采用这种方法,我们就只能有 n 个片选信号。

(4)1-2译码器

接下来我们对线选法进行一个优化。

给 A13 输出的线路把它分两边接出去。上面这一端我们接了一个非门

画非门的核心在于前边这儿要有一个小圆圈。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1vb4zfZa-1674904175351)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128161003843.png)]

<1> 假设此时CPU的A13输出信号是1,这条信号输出之后,下面这一条线我们应该接收到的是一个1,因为是一个直接的连接。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gassCNRm-1674904175351)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128161126949.png)]

而另外一条线, 1 这个信号经过非门的处理之后, 1 会变0,因为非门就是一个取反,所以右边芯片接收到的信号应该是 0 。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eJpCakua-1674904175352)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128161233237.png)]

由于片选信号是高电频有效,因此这种情况下左边这块芯片正在工作,右边没有工作。

此时 CPU 通过低 13 位的地址指明了要读出的是哪一个存储单元,读出的是左边这块芯片的数据。

<2> 接下来再换一种。如果此时A13 是0,左边这输入的片选信号应该是0,右边这输入的就是1。

因为进行了一个非门的取反,所以此时应该是右边这块芯片工作,左边这块芯片不工作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MUHP45B2-1674904175352)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128161604329.png)]

因此这个时候 CPU 给出的低13 位数据,其实指明的是右边这块芯片的某一个存储单元,读出的是右边这块芯片的数据。

所以我们增加了这样的一个小电路之后,左边这块芯片,它的合法地址范围就变成了一个 1 后面再跟任意的 13 位地址信息(1X XXXX XXXX XXXX),而右边这块芯片应该是 0 开头后面 13 位任意的地址信息(0X XXXX XXXX XXXX)。

我们再结合 A0 到 A12 这些更低位的 13 位,就会发现左边这块芯片,它所对应的地址应该是 10 0000 0000 0000 (最低地址),直到 11 1111 1111 1111(最高地址),这样的一个地址范围。

而右边这块芯片,它所对应的地址应该是00 0000 0000 0000(最低地址)直到01 1111 1111 1111(最高地址),这样的一个范围。

进行这样的改造之后,我们会发现整个存储器它的地址空间就是从00 0000 0000 0000一直到11 1111 1111 1111 ,整个主存的地址空间是连续的


我们这儿设计的小电路,可以把它看作是一个1-2译码器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AGmJqjB4-1674904175352)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128162659105.png)]

什么叫1-2?

我们输入1位的地址信息,这1位的地址信息有可能呈现出 2 的一次方两种不同的状态。这两种不同的状态会被译码器翻译为要么是上面这条线高电平,要么是下面这条线高电平。这是1-2译码器的意思。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nhIQ9CMF-1674904175352)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128162810442.png)]

(5)译码片选法

之前其实我们接触过更复杂的译码器,因此我们可以顺着这个思路往下优化。我们可以使用一个译码器来处理 CPU 的高位地址部分,这种方法我们把称为译码器片选法

如果 CPU 能够给出 n 位的地址信息,那么通过译码器的翻译,我们可以得到 2 的 n 次方这么多个片选信号。来看一下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5MBgeTKp-1674904175353)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128163126680.png)]

这是我们之前小结中见过的一种译码器,它的输入端可以输入3个比特的数据,刚好可以和 A13 到 A15 对应上 3 位的地址信息,我们可以把它对应成 2 的 3 次方,也就是 8 种不同的状态。

因此, 译码器的输出端总共有 8 条线,我们可以给这 8 条线进行一个编号,分别是 0、1、2……7。

所以,如果输入端输入的是 3 个0,译码器的 0 号片选线就会被选通。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1LPfAuW-1674904175353)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128163407806.png)]

也就是最上面这条线会发出一个高电频信号,下面这些线都是低电频。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T8pgVPVG-1674904175353)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128163449279.png)]

和之前的命名规则类似,我们可以把译码器把它命名为 3-8 译码器。因为我们输入了 3 个信号,输出的是 8 个信号,所以叫 3-8 译码器,是不是类似的?

当然,也可以有 2-4 译码器,输入 2 个,输出 4 个。

接下来再看个例子,如果输入的是001,与这个二进制数对应的是十进制的1。因此此时译码器编号为1的这一根选通线会被选通,其他的线输出的都是低电平。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P8r7rbJT-1674904175354)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128163907769.png)]

又如果是010 ,对应十进制的2,所以译码器编号为2的这一根选通线会被选通,其他的选通线都保持低电平。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9QT0IRK-1674904175354)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128163938012.png)]

我们给译码器的这些输出线的编号也可以是逆过来的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OtagkqlG-1674904175355)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128164512231.png)]

四、主存容量扩展

1.主存容量扩展--字扩展

现在有了译码器之后,我们再来看一下如何更好地进行字扩展

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NaOj33zU-1674904175355)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128164830630.png)]

这儿,我们给出了一个 2-4译码器,输入 2 个信号,输出 4 个信号。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-okRJe64F-1674904175355)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128164741342.png)]

在图示当中,我们搞了 4 块 8K乘以8位的存储芯片,每一块芯片我们都会接收 CPU 发过来的低 13 位的地址信息。

这些地址线如果是像刚才那样从上面连过来,这么画,整个图看起来会比较乱,所以我们这次改变了划线的方式。但是大家需要知道,并不是地址信息是从左边这块芯片传过来的。不是这个意思,所有的地址信息都是直接来自于地址总线,都是CPU传过来的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jJBVztZv-1674904175356)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128165338217.png)]

另一点需要注意的是,我们这给出的图示当中,CS信号上面已经加了一条横线,要低电平才有效。

当我们在表示低电平有效的输入信号的时候,我们通常会在上面画一个小圆。所以大家在看书或者做题的时候, CS 还有 CS 上面一条横线,这两种情况都是有可能遇到的。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u3ba8DTX-1674904175356)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128165534778.png)]

既然是低电平有效,那就意味着我们要输入的是 0 这样的一个信号。所以译码器的输出端我们也画了一个小圆圈。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kef6QYei-1674904175356)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128165642209.png)]

非门的图示最重要的就是小圆圈,小圆可以理解为进行了一个取反。刚才我们不是说译码器的输出,会输出一个1,剩下全部0。现在我们把所有的这些位都取反,是不是就意味着输出的只有一个0,剩下的全是1。

好,这是大家看图的时候会遇到的一些小细节。


现在对于2-4译码器,我们输入的是A13、 A14 这两位,如果这两位都是0,这个时候 0 号选通线会被选通,其余的这些片选信号都是无效的。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uEqempTU-1674904175356)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128170103611.png)]

类似的,如果 A13 为1, A14 为0,就是 1 号选通线被选通(二进制01对应的十进制为1)。只有第二片正在工作,其他的芯片都没有被选中。如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YrXlZCYv-1674904175357)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230128171849099.png)]


然后再结合着低13 位的信息,我们不难得出这样的结论。

如果我们要访问的是第一块芯片那么A14、A13 这两个高位必须为全0。这块芯片它所对应的存储地址的范围应该是00 0...0一直到00 1...1,总共 8K 个地址。

而第二块芯片就应该对应的是01,后面再跟上 13 位的地址,即01 0...0到01 1...1;第三块芯片应该是10,后面跟上 13 位的地址,即10 0...0到10 1...1;第四块芯片应该是11,后面跟上13 位的地址,即11 0...0到11 1...1。

所以采用译码片选法之后,我们就可以保证整个主存它合法的地址空间是从全 0 开始,一直到 15 个全 1。这是一个连续的地址范围,也是我们实际应用里边可以采取的一种设计思路。


标签:芯片,存储芯片,CPU,地址,3.5,主存储器,信号,译码器
From: https://www.cnblogs.com/wanjiadenghuo/p/17095056.html

相关文章

  • 【cpufreq】linux cpufreq governor实现分析(3)
    performance/powersave策略这两个都是设置静态的频率,performance设置最高频,powersave设置最低频。切换governor的时候配置好频率:store_scaling_governor->cpufreq_set_p......
  • 【cpufreq】linux cpufreq软件架构分析(2)
    cpufreq的全局变量首先介绍几个cpufreq的关键全局变量,能大概了解cpufreq的实现staticstructcpufreq_driver*cpufreq_driver;/*调频驱动指针,驱动开发者根据具体hard......
  • 主存储器 -- 存储器的校验(汉明码)
    存储的信息可能会发生翻转等错误。编码的检测能力和纠错能力和任意两组合法代码之间二进制位的最小差异数(编码最小距离)有关汉明码采用奇偶校验采用分组校验汉......
  • 主存储器 -- 提高访存速度
    CPU和内存的速度不匹配(存储墙)提高访存速度:单体多字:CPU读写存储体一次性多个字多体并行:多个存储体并行运作高位交叉高位交叉还不能实现多体并行,由于程序的局部......
  • 主存储器 -- 和CPU的连接
    字扩展,位扩展(注意高位地址线作为片选线)  CPU和存储器的连接 ......
  • 主存储器 -- RAM
    主存储器概述:   半导体存储芯片的简介:地址线的位数和数据线的位数确定了芯片的容量。如:14位地址线,4位数据线,容量2的10次方*41k*4。主存储器中芯片是有多片的......
  • 2023.5 Java 2022趋势
    InfoQJava编辑团队做的2022年Java领域内的新型技术采用趋势如下:将所有OpenJDK的下游发行版放到一个标签中,即JavaCommunityJDK,并将它们放到早期大众阶段。这个清单......
  • 3.5正则表达式和EXCESS系统
    尾数部分使用正则表达式(按照特定的规则来表示数据的形式即为正则表达式,除小数外,字符串以及数据库等都有各自的正则表达式),可以将表现形式多样的浮点数统一为一种表现形式。......
  • 自制CPU需要什么
    《CPU自制入门》计算机系统基础计算机系统的SoC(System-on-a-Chip,片上系统)以CPU为核心,同时实现了负责存储程序和数据的内存、负责和外部进行输入输出的I/O以及它们之间的......
  • 1.7 CPU的处理其实很简单
    机器语言指令的主要类型和功能:数据转送指令:寄存器和内存、内存和内存、寄存器和外围设备之间的数据读写操作运算指令:用累加寄存器执行算术运算、逻辑运算、比较运算和移位......