3.2主存储器的基本组成

简介: 3.2主存储器的基本组成

一、引子

这一小节,

我们首先学习使用半导体元器存储0和1的基本原理。

然后通过半导体元器件组合,可以构成存储芯片。因为存储芯片里面存储了很多个字的数据,所以存储芯片必须提供一个寻址的功能。

最后再探讨不同的寻址方式。

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

二、半导体元件

现在来看一下组成主存储器的基本半导体元件及它的基本原理。

1.基本半导体元件

在第一章,我们学习过,一个存储器,可以分为存储体、MAR(地址寄存器)、MDR(数据寄存器)。

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

这三个部分,会在“时序控制逻辑”的控制下,相互配合着工作。如下:

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

存储体就是用来存放实际的二进制数0和1的,一个存储体由多个存储单元构成,每个存储单元又由多个存储元构成,也就是存储元件

用存储元件,就可以存放二进制数0或1。

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

这里涉及到两个半导体元器件,下面的部分是电容,上面是MOS管。

(1)MOS管

==MOS管可以理解为一种用电控制的开关。==

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

①如果在左端加上一个高电压,比如达到了5V阈值,那么这个MOS管就可以导电。

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

②如果不给左端加电压,或者电压达不到阈值的要求,那么这个MOS管就是一个绝缘体,不导电。(可以看见图中虚线)

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

MOS管是 半导体 ,既不是导体也不是绝缘体。在给了一定电压条件之后,这个绝缘体可以变为导体;但如果给的电压条件不满足,它又不是导体。

(2)电容

电容在高中就学过了。

==一个电容由两个金属板还有中间的绝缘体构成。==

可以看见,下方的金属板是接地的,那么这里的电压就是0V

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

如果现在给上面的金属板加一个大于0V的电压,比如加一个5V的高电压。

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

由于上下的金属板产生了电压差,所以电容里面的电荷就会开始移动。就是给电容充电

当输入5V电压之后,电容里面就会保存一定的电荷。

如果在上面金属板输入的是低电平信号,比如0V或者1V,下方还是接地(0V)。由于上下金属板的电压差非常小,所以这种情况下,电容不会充电

所以,可以根据电容是否保存了电荷两种状态的信息来对应二进制的0和1。

给电容充电就是写数据的过程;给电容放电就是读数据的过程。

2.读写二进制数

(1)读出二进制

①二进制1

假设现在电容上保存了一些电荷,规定,当它保存了一些电荷,就对应二进制的1。

那么该如何读取二进制的比特位呢?

只要给MOS管左端加上高电平信号,比如5V。也可以理解为输入了二进制的1。

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

当MOS管左端的电压达到一定阈值之后,这个MOS管就可以接通。

由于MOS管现在接通了,所以电容里面保存的电荷就可以顺着导线往外流。

当我们在右端检测到有输出电流的时候(如下图),

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

就意味着它输出了二进制的1。

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

②二进制0

如果此时电容里面没有保存电荷,比如下面的状态,表示二进制的0。

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

当MOS管接通的时候,在右端并不能检测到电荷的流出。

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

因此,就可以判断,电容里面保存的是二进制的0。

(2)写入二进制

假设现在想让电容保存二进制1,那么可以在右端加入一个5V的高电平电压。如下:

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

同样在MOS管也加一个5V的高电平(假设5V是阈值),让MOS管接通。

那么电容上面的金属板电压就是5V。又由于下方接地,所以下方金属板电压是0V。

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

只要电容金属板两端有电压差,就会导致电容里面的电荷开始移动。

所以电容就会存储一些电荷。

也就是存储了二进制的1

再让MOS管断开,这样电容里面的电荷就跑不出去了。

3.存储体

如果将多个存储元进行科学合理地连接,那么就可以一次性读出或者写入多个二进制数据。

比如上边的一排二进制存储元,存储的二进制信息分别是:10100011

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

上面的红线,连接了每个存储元的MOS管(如下图)。

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

如果给红色的线加一个5V的高电平,就意味着所有存储元的MOS管都接通了。

当MOS管接通之后,电容里面存储的电荷就可以顺着灰色的线,然后从绿线导出。

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

那我们只需要检测绿色的线有没有产生电流,来判断每条线对应的是二进制的0还是1。

如果有电流,就是二进制的1;如果没有电流,就是二进制的0。(如下图)

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

所以,根据这样的方式,就可以读出一整行的存储元(存储单元)所存储的二进制比特信息。也就是存储字。

多个存储单元就构成了存储体,也叫存储矩阵

一次可以读出的二进制位就是一个存储字,这个例子的存储字长就应该是8bit(一行有8个存储元)。

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

如果现在有16个存储元构成一行,这就意味着存储字长变成了16bit。

那么现在就能理解,在第一章说过的,存储器每次读或者写的单位都是读或者写一个存储字。

因为同属于同一个存储字的存储元件,它们的MOS管的左端都是接着同一根线(图中红线)。如果接通了这根线,那么一行所有的存储元都同时接通。也就能同时读出或写入啦。

三、存储芯片的基本原理

刚才的存储体只包含了两个存储单元。

那么接下来我们要探讨,如何根据地址来决定要读或者写的是哪个存储字。

1.译码器

这就涉及到译码器的使用。

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

我们给出n位二进制地址之后,这n位二进制地址会对应2^n个存储单元。

所以译码器会根据地址寄存器MAR给出的这n位地址,把它转换成某一条选通线的高电平信号。

比如此时CPU给MAR送过来的地址是:000

000翻译成十进制是000。

所以译码器会给第0根字选线一个高电平输出。这样的话,第一个存储字对应的存储元件都会被选通。就可以读出每一位二进制数据了。

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

每一位地址,会对应译码器的一条输出线。

这个例子,总共有2^3=8个地址。因此译码器的输出端总共会有8条线。

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

经过译码器的处理,一个地址信号会被转换成译码器的某一条输出线的高电平信号。

当红色的自选线被接通之后,我们就可以通过数据线(图中绿线)把每一位的二进制信息传送到MDR中。

然后CPU会通过数据总线从MDR中取走一整个数据。数组总线的宽度和存储字长是相同的。

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


2.控制电路

接下来,我们继续完善存储芯片的构成。

需要增加一个控制电路。用于控制译码器、MAR、MDR。

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

比如,CPU通过地址总线把地址送到MAR中。由于我们使用的是电信号来传送这些二进制数据,而电信号难免会有不稳定的情况。

所以,在MAR中的电信号稳定之前,MAR中的地址信息是不能送到译码器当中的。

(这就是控制电路的一个作用,只有当MAR稳定之后,控制电路才会打开译码器的开关,然后让译码器翻译地址,给出相应的输出信号)

输出也是一样,只有当输出的电信号稳定之后,控制电路才会认为此时的输出是正确的。所以,控制电路也会控制MDR在什么时候给数据总线送出数据。

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


3.对外线路

存储芯片还需要对外提供一些线路。

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

①片选线

片选线又叫CS(Chip Select)芯片选择信号或CE(Chip Enable)芯片使能信号

如果给出的芯片选择信号是一个低电平的时候,就说明这个芯片的总开关是被我们接通的。

②读控制线

当我们需要读出数据的时候,就要给读控制线OE一个低电平信号,表示此时要进行读操作。

③写控制线

当写控制线WE的信号是低电平的时候,表示此时芯片正在进行写操作。(就是将MDR里面保存的数据输入到各个电容当中)

读控制线和写控制线可以分为两根,还可以将它们合二为一。

用一根线WE来表示究竟是写还是读。(低电平写,高电平读)

:red_car:注意

==头上划线表示该信号低电平有效。==

需要注意题目中是两根读写线,还是一根读写线。这两种方式对外暴露的引脚数目是不一样的!

4.整合

那么,现在我们就可以给出存储芯片的完整构造。(如下图)

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

将内部细节去掉,再将其封装之后,就是之前学到的图,看一下对比图:

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

整体来看,存储芯片由这样的三个部件构成。

存储矩阵就是一个一个的存储元。

译码驱动电路实际上是译码器(上面介绍过)和驱动器(将电信号进行放大)

驱动器:译码器会输出某一条线路的高电平信号,这一条线会连接很多存储元,需要控制这些存储元的开和关。为了让译码器输出的高电平信号稳定有效,所以通常会在译码器后面接上一个驱动器,用来保证译码器输出的电信号是稳定可靠的。

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

读写电路包括说的红线和绿线还有控制电路。

另外,存储芯片需要接收来自外界的地址信息,这个地址信息,通常是CPU通过地址总线传过来的。

还需要数据线进行数据的传输。

还要通过片选线的电信号来确定此时这块芯片是否可用。

读写控制线可能有一条,也可能有两条。

:question: 大家可能还会疑惑片选线有什么作用。

来看一个实际的内存条,中间一块一块的黑色的芯片就是存储芯片

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

比如这一块内存条上的存储芯片的存储容量都是1GB,它总共有8块存储芯片,那么就可以存储8GB的数据。

如果你要读取的数据,刚好存放在这一块存储芯片当中:

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

当我们提供了一个读写的地址之后,只能让这一块存储芯片工作,其他的存储芯片不能工作。

这就是片选线的作用。如果只想读取这一块存储芯片指定地址的内容,那么就需要让这块存储芯片的片选线信号有效。(也就是CS信号给一个低电平)

当然,其他芯片的片选线信号都是高电平信号。

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

这样就可以保证,此次读取的就是指定芯片的数据。

补充一个知识,这里的每一块存储芯片都会对外暴露出一个一个的金属针脚(或者叫金属引脚)。如下:(每根线都会对应一个金属引脚

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

这些金属引脚就是用来接收地址信号、数据信号或者片选线信号、读写信号的。


所以,会经常遇见这样的题目:告诉你一块存储芯片的某一些参数信息,让你判断这一块存储芯片的引脚数目至少应该是多少。

这种类型的题目,就是让你判断地址线(或数据线)有多少根,每根地址线(或数据线)会对应一个金属引脚。片选线也会对应一个金属引脚。还有读写控制线(用来表示此时进行的是读操作还是写操作),至少对应一个金属引脚(读写控制线分为两根就是两个金属引脚)。

另外,还有供电引脚、接地引脚等。


:books:补充

如果告诉你一个存储芯片有n位地址,那么就意味着地址线需要有n条。n位地址又会对应2^n个存储单元。

知道了存储单元的数量,再乘以每个存储字长,就可以得出芯片的总容量。

之前,我们都是用多少个字节,或者多少个bit来描述一个芯片的容量。

还有一种描述方式,比如一块存储芯片是一块8*8位的,第一个8表示有8个存储单元,第二个8表示每个存储单元包含8位信息(也就是存储字长是8位)。

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

8K*8位:有8K(2^13)个存储单元,存储字长是8位。所以这个芯片有13位地址,每一位地址对应一个存储元,一行有8个存储元。

5.寻址

接下来,我们进一步探讨关于寻址的问题。

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

图示里面,一个小方格表示一个字节(8bit)的信息,一行表示一个存储字

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

那么这块存储芯片的存储字长是4个字节,假设容量是1k(2^10)个字节,所以有256个字(1024/4=256)。(也就是有256行)

现代计算机中,通常是按照字节编址的(每个字节对应一个地址)。

这个存储矩阵中一共有1k个字节,就对应1k个地址。(每一个字节对应一个地址)

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

但是现代存储器,通常也支持按字寻址、按半字寻址、按双字寻址。如下:

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

①还是来看一下==按字节编址==。

1K个单元,对应地址线就是10根(2^10=1K)。

那么地址就是10个0到10个1:(就是0~1023的范围)

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

现在将地址画在图里面:

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

②==按字寻址==

如果现在想要按字寻址,由于一个字占4个字节。因此会把连续的字节地址合并,看作一整个

当我们指明要读的是第几个字的时候,只需要把字地址进行算数左移两位,如下:

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

这样就可以把字地址转化成与之对应的字节地址。(比如字地址是1,对应字节地址是4)如下:

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

比如,现在要读的是1号字。(第二行的字)如下:

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

那么将1进行算数左移两位,001变成了100,转化为十进制就是4。

这样就得到了这个字(1)起始字节的地址(4)。

是一行, 字节是一小块。

四、总结回顾

在这里插入图片描述


:bookmark: 往期精彩文章:

2.4总线操作和定时

2.5总线标准

3.1存储系统基本概念

订阅专栏:计算机组成原理

请添加图片描述

相关实践学习
块存储快速入门
块存储是阿里云为云服务器ECS提供的块设备产品。通过体验挂载数据盘、分区格式化数据盘(Linux)、创建云盘快照、重新初始化数据盘、使用快照回滚云盘和卸载数据盘等功能,带您快速入门块存储。
相关文章
|
1月前
|
存储 内存技术
|
1月前
|
存储 缓存 数据处理
|
3月前
|
存储 算法 调度
虚拟存储器
虚拟存储器
41 0
|
4月前
|
算法 调度
7.虚拟存储器
7.虚拟存储器
|
4月前
|
芯片 内存技术
什么是内存颗粒?内存条的构成!
什么是内存颗粒?内存条的构成!
286 0
什么是内存颗粒?内存条的构成!
|
4月前
|
存储 Linux 程序员
x86的内存寻址方式
在16位的8086时代,CPU为了能寻址超过16位地址能表示的最大空间(因为 8086 的地址线 20 位而数据线 16 位),引入了段寄存器。通过将内存空间划分为若干个段(段寄存器像 ds、cs、ss 这些寄存器用于存放段基址),然后采用段基地址+段内偏移的方式访问内存,这样能访问1MB的内存空间了。
|
存储
存储器-虚拟内存
存储器-虚拟内存
70 0
|
存储 算法 定位技术
4.2虚拟存储器
计算机组成原理之虚拟存储器
325 0
|
存储 芯片 块存储
3.5主存储器与CPU的连接
3.5主存储器与CPU的连接
388 1
3.5主存储器与CPU的连接
|
芯片
#计算机组成原理# chapter 4存储器 -4.2主存储器 4.2.3随机存取存储器(下)
#计算机组成原理# chapter 4存储器 -4.2主存储器 4.2.3随机存取存储器
107 1
#计算机组成原理# chapter 4存储器 -4.2主存储器 4.2.3随机存取存储器(下)