良许Linux教程网 干货合集 SRAM与DRAM的区别

SRAM与DRAM的区别

什么是RAM?

RAM(Random Access Memory)中文称为随机存取存储器。为什么要强调随机存取呢?因为在此之前,一些存储器都是顺序存储(Direct-Access),比如光盘、旧式磁带、磁带驱动器等。随机存取存储器的特点是,访问数据的时间与数据在存储器中的物理位置无关。

什么是随机读写?

随机读写和顺序读写是存储器的两种输入输出方式。存储的数据在磁盘中占据空间。对于一个新的磁盘,在操作系统将数据文件按顺序写入磁盘时,如果某些数据被删除,会释放出原始数据所占用的存储空间。随着时间的推移,不断写入和删除数据,会导致许多不连续的存储空间上存在一个较大的数据文件。当我们对这部分数据进行读写时,就是随机读写。磁头必须不断调整以访问不同位置上的数据,相比于在连续空间上的顺序读写,随机读写需要更多时间。在开机时或启动大型程序时,计算机必须读取大量小文件,而这些文件也不是连续存放的,属于随机读取范畴。

改进方法包括进行磁盘碎片整理,合并碎片文件。但这只解决了表面问题,碎片化仍会导致磁盘读写性能下降,并且不能解决小文件的随机存取问题。更好的解决办法是更换固态硬盘(Solid State Drive,SSD)。SSD消除了机械硬盘的磁头移动,大大提高了对随机数据的读写能力。

举个例子,SSD的随机读取延迟仅为几毫秒,而7200RPM硬盘的随机读取延迟约为7毫秒,5400RPM硬盘的随机读取延迟甚至高达9毫秒,这在性能上表现为开关机速度的差异。

随机存取存储器(RAM)是最为人熟知的存储器之一。之所以RAM被称为“随机存储”,是因为它可以直接访问任何一个存储单元,只需知道该单元所在的行X和列Y地址即可进行定位。

image-20231104210039152
image-20231104210039152

与RAM形成鲜明对比的是顺序存取存储器(SAM)。SAM中的数据存储单元按照线性顺序排列,因而只能依顺序访问(类似于盒式录音带)。如果当前位置不能找到所需数据,就必须依次查找下一个存储单元,直至找到所需数据为止。SAM非常适合作缓冲存储器之用,一般情况下,缓存中数据的存储顺序与调用顺序相同(显卡中的缓存就是个很好的例子)。而RAM则能以任意的顺序存取数据。

SRAM和DRAM的区别?

RAM的另一个特点是易失性(Volatile),虽然业界也有非易失(non-volatile)的RAM,例如,利用电池来维持RAM中的数据等方法。

RAM主要的两种类别是SRAM(Static RAM)和DRAM(Dynamic RAM)。

SRAM的S是Static的缩写,全称是静态随机存取存储器。而DRAM的D是Dynamic的缩写,全称是动态随机存取存储器。

**
**

SRAM的结构,6场效应管组成一个存储bit单元的结构:

image-20231104210043081
image-20231104210043081

工作原理相对比较简单,我们先看写0和写1操作。

写0操作

写0的时候,首先将BL输入0电平,(~BL)输入1电平。

然后,相应的Word Line(WL)选通,则M5和M6将会被打开。

0电平输入到M1和M2的G极控制端

1电平输入到M3和M4的G极控制端

因为M2是P型管,高电平截止,低电平导通。而M1则相反,高电平导通,低电平截止。

所以在0电平的作用下,M1将截止,M2将打开。(~Q)点将会稳定在高电平。

同样,M3和M4的控制端将会输入高电平,因NP管不同,M3将会导通,而M4将会截止。Q点将会稳定在低电平0。

最后,关闭M5和M6,内部M1,M2,M3和M4处在稳定状态,一个bit为0的数据就被锁存住了。

此时,在外部VDD不断电的情况下,这个内容将会一直保持。

image-20231104210046977
image-20231104210046977

DRAM(Dynamic RAM)是指动态随机存取存储器。与SRAM最大的不同是,DRAM需要通过刷新操作来保持其存储的内容。让我们先来看看其一个bit存储单元(Cell)的结构:

image-20231104210050578
image-20231104210050578

其核心部件是4号位的电容C,这个电容大小在pF级别,用来存储0和1的内容。

image-20231104210057290
image-20231104210057290

由于电容会慢慢放电,其保存的电量将会随时间推移而慢慢漏电流漏掉。为了保证其内容的完整性,我们需要把里面的内容定期读出来再填写回去。这个操作称为刷新操作(Refresh)。

SDRAM 只有通过刷新命令(Refresh)操作才能保证数据的可靠性,SDRAM 的刷新操作是周期性的,在两次刷新的间隔可以进行数据的相关操作。我们在看SDRAM芯片参数时,经常会看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的标识,这里的4096与8192就代表 这个芯片中每个Bank的行数。

刷新命令一次仅对一行有效,也就是说在64ms内这两种规格的 芯片分别需要完成4096次和8192次刷新操作。这4096操作可以平均15.625μs刷新一次,也可以一次全部刷新完,取决于你的数据读写时序。

image-20231104210101369
image-20231104210101369

当需要写1的时候,先将BL(Bit Line)输入高电平1,然后选中对应的Word Line(同一时间将只有一根WL被选中),打开相应的MOS管,如图中所示3号位。此时,外部驱动能力很强,通过一定的时间,4号位的电容将会被充满。此时,关闭3号位的MOS管。内容1将在一定时间内被保存在4号位的电容中。写0的操作与之相反,不同的是将4号位电容中的电荷通过Bit Line放光。然后关闭3号位的MOS管,锁存相应数据。

而读操作相对来说,较为复杂。4号位电容非常小,只有pF级别,而Bit Line往往都很长,上面挂了非常多个存储单元(cell),我们可以通过5号位的电容来表示。所以当我们直接把3号位的MOS管打开,Bit Line上将基本看不到什么变化。

image-20231104210104451
image-20231104210104451

采用放大器来放大4号位电容的效果。结构图如下图所示:

image-20231104210108024
image-20231104210108024

我们可以定Vref为1/2的VDD电压,在读取电容里数据之前,我们先将所有Bit Line预充1/2 VDD的电压。然后,打开Word Line让选中的电容连接到Bit Line上面,如果原本的内容是1,则Bit line的总电压将会小幅攀升。否则,则会小幅下降。再通过差分放大器,将结果放大从而实现读操作。

这套方案是可以工作的,但Bit Line的数量不能太大。否则会导致距离Vref供电处较远的放大器Vref的值偏低,而导致差分放大器工作异常。同时,对于所谓的1/2 VDD预充,也存在不准的情况。

为了解决这个问题,有人提出,不如将原来的一根Bit Line设计成一对Bit Line,当其中一根Bit Line上的Cell被选中时,另一根Bit Line将不会有Cell被选中。从而没有Cell被选中的Bit Line可以充当放大器的Vref输入,其长度,负载以及寄生参数将会和另一根Bit Line十分一致,这样一来,放大器的工作就更加稳定了。结构图如下所示:

image-20231104210112242
image-20231104210112242

当读操作之前,我们先将1/2 VDD电压同时注入到BL和(~BL)上,这个动作被称为(pre-charge预充电)然后其中一根作为参考,来观察另一根Bit Line在某个Cell导通后的变化。

最后,我们总结一下区别:

成本对比:SRAM成本比较高(6个场效应管组成一个存储单元),DRAM成本较低(1个场效应管加一个电容)。另外随着DDR~DDR5的高速发展,SDRAM的发展更快,接口速率更高,生态更好,工艺更先进。所以SDRAM的成本原来越有优势。

存取速率:照道理来说,SRAM存取速度比较快,DRAM存取速度较慢(电容充放电时间)。

数据地址分开,SRAM不需要PreCharge,不需要Refresh。所以接口效率也越高。

但是随着DRAM发展更好,所以DRAM的接口速率发展越来越快。最终的综合表现还是DDR胜出。

image-20231104210115283
image-20231104210115283

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部