一、半导体存储芯片
先了解了解我们RAM的真面目——半导体存储芯片,主存通常就是由多个这样的半导体芯片组成。
(1)存储矩阵:由大量相同的位存储单元阵列构成。
(2)译码驱动:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读和写。(包括译码器,驱动器)
(3)读写电路:完成读写操作。(包括读出放大器,写入电路)。
(4)读/写控制线:控制芯片是进行读操作还是写操作。
(5)片选线:存储器是由很多这样的芯片组成的,每个芯片的地址范围都是总体地址的一部分,片选线就是确定究竟是哪个芯片被选中。
(6)地址线:单向输入的,位数和存储字的个数有关。
(7)数据线:双向的,位数和读出或写入的数据位数有关。
数据线和地址线共同反映一个芯片的存储容量的大小,举个例子,如果地址线有12根,数据线有16根,那么这个芯片的容量就是2^12 × 16=8KB。
这只是半导体芯片的基本结构,根据存储器的存储信息原理的不同可以分为SRAM和DRAM。
二、SRAM存储器
SRAM的存储元(通常把存放一个二进制位的物理器件称为存储元)采用的是双稳态触发器(六管MOS)来记忆信息的,因此即使信息被读出后,它仍然会保持其原状态而不需要再生。当然断电之后肯定会丢失信息的,毕竟RAM是易失性的存储器。SRAM的存取速度快,功耗较大,一般用来做Cache。
这是SRAM的存储元的基本结构图,静态MOS,六管单元,放在这里了解一下,我也看不太懂这个东西,只做了解一下下~
三、DRAM存储器
DRAM与SRAM的原理不同,它是利用存储元电路中栅极电容上的电荷来存储信息的,常见的DRAM的基本存储电路通常分为三管式和单管式。DRAM采用地址复用技术,地址线是原来的一半,地址信号分为行和列两次传送(这也就是DRAM比SRAM存取速度要慢的因素)。
既然DRAM采用电容上的电荷来存储信息,而电容上的电荷不可能不丢失,一般情况下,DRAM电容上的电荷只能维持1至2ms,过了这个时间,电荷就丢了,信息也就没了,所以我们要每隔一定时间对其进行刷新,这个时间通常分为刷新周期。常用的刷新方法有以下三种:
(1)集中刷新:在一个刷新周期内,利用一段固定的时间,依次对存储器的所有行逐一再生,在此期间停止对存储器的读写操作,这段时间成为“死时间”,又叫访存的“死区”。显然这种方法可以让读写操作不受刷新工作的影响,但是在死区不能访问存储器,CPU只能干等着。
(2)分散刷新:把对每一行的刷新分散到各个工作周期中去。比较生动地解释就是,原来我的工作只有存取,现在我的工作多了一个,就是在存取完之后顺便再“打扫”一行。这样,一个存储器的系统工作周期分为两部分,前半部分有用正常读、写或保持,后半部分用于刷新某一行。这种方法不存在死区,但是增加了系统的存取周期,如果原来存取周期只有0.5us,现在变成了1us,增加的0.5us要刷新一行。
(3)异步刷新:前两种方法的结合,它可以缩短死时间,又充分利用最大刷新间隔为2ms的特点。做法是将刷新周期除以行数,得到每两次刷新之间的时间间隔t,逻辑电路每过t就产生一次刷新请求。这样就避免了使CPU等待过长时间,还减少了刷新次数,提高了工作效率。
四、SRAM与DRAM的区别
前面介绍了SRAM和DRAM,区别也是显而易见,现总结梳理一下。
1、原理上的不同,SRAM原理是双稳态触发器,DRAM是栅极电容上的电荷;原理的不同导致SRAM不用刷新,DRAM要刷新。
2、DRAM采用地址复用,SRAM不是。具体原因是这样的,存储芯片上的内容不是我们想象中的那样,一个地址对应一个存储单元,然后它们按照一维那样子顺序排列下去,它是个二维的存储矩阵,之前的存储芯片基本结构也提到了,所以它芯片内部寻址的时候是分行和列去找的,对于SRAM,它将行列直接传入进去找到相应存储单元,但是DRAM通常用作内存而不是Cache,它需要比Cache更大的容量而不是速度,所以在容量大的情况下,它的芯片内行数和列数也多,要一起传入岂不是要很多根地址线,这是不划算的,所以用地址复用,行和列分别传入。
这是我觉得比较重要的两个区别,二者的区别还有很多,直接上个表来看:
如有错误,还望多多指正~