3.3SRAM和DRAM

一、引子

在上一个小节,我们了解了存储芯片的基本原理,学习了如何存储二进制的0和1,如何根据一个地址来访问存储字。

这一小节,会介绍两种特定的存储芯片SRAM和DRAM。
在这里插入图片描述

之前,我们提到RAM(随机访问存储器):当我们指定某个存储单元的地址,这个存储单元的读取速度并不会因为存储单元的物理位置而改变。此处随机与顺序表随机存取意思相同,即对任意地址的存取都是O(1)时间。类似于数组的访问,可以直接通过下标访问任意地址。
接下来,将逐步介绍DRAM(用于主存),SRAM(用于cache)。这两个芯片的对比是高频考点。
在这里插入图片描述

二、存储元件

1.芯片介绍

上一小节介绍的芯片,其实就是DRAM芯片。见下图:
在这里插入图片描述
DRAM芯片可以用于制作主存,上图右侧的内存条上就是DRAM芯片。

DRAM芯片和SRAM芯片的核心区别就是:存储元件不一样。

<1> DRAM芯片是用栅极电容(电容的充放电)来存储和读取信息。

<2> SRAM芯片是用双稳态触发器来存储信息的。

👉 接下来,看一下这两种存储元件的区别。

2.区别

(1)栅极电容

上一节说过,如果给存储元字选择线(存储元件的左侧)加一个5V的电压(假设5V为阈值),就会使MOS管接通。此时数据线上也加了一个5V的高电平(也就是给了一个二进制的1),那么这个5V的高电平电压会加到电容上方的金属板上,而下方的金属板由于接地,所以下方金属板电压为0。如下图:
栅极电容存储元

1)存储

当电容的两块金属板产生压差的时候,就会导致正电荷在上面的金属板聚集,负电荷在下面的金属板聚集。如下图:
在这里插入图片描述这样就完成了二进制1的存储。

如果从数据线输入了一个低电平信号(0),由于电容的两块金属板之间没有电压差,此时电容不会存储电荷。

这样就完成了二进制0的存储。

如下:
在这里插入图片描述

2)读出

接下来看一下读出1和读出0如何实现。

<1> 如果此时电容里面存的是1,就是此时电容里面存储了电荷。

当字选择线接了高电平(比如5V)后,MOS管接通,这些电荷就会顺着图中蓝线从绿线(数据线)输出。

如果是二进制的1,那么数据线一端可以检测到电流信号。如下:
在这里插入图片描述

<2> 如果此时电容里面存储的是0,就是此时电容里面没有存储电荷。

当字选择线接了高电平(比如5V)后,MOS管接通,数据线一端也不会检测到电流的流出。如下:
在这里插入图片描述
所以,用上述的方式就可以检测读出的是1还是0。

因此DRAM存储元用栅极电容来存储二进制0和1。

3)物理特性

<1> 栅极电容里面,如果存储的是二进制的1,那么电容上面会存储一些电荷,接通MOS管读出数据的时候,电容里面存储的电荷就会被释放了(电容放电)。那么电容放电之后,没有电荷了,数据就会由1变为了0。
所以,读出栅极电容里面存储的信息之后,栅极电容里面存储的信息就会被改动,被破坏。就是所谓的破坏性读出。里面的信息会被损坏(1->0)。为了解决这个问题,需要进行重写操作,又叫再生,就是给电容重新进行一次充电。

4)刷新

在这里插入图片描述
对于栅极电容。虽然电容里面会存放电荷,但是电荷会慢慢流失,那么会导致电容里面存储的数据(信息)出现误差(1->0)。通常电容里的电荷只能维持2ms的时间,即使不断电,2ms后信息也会消失。 由于电容里面的电荷只能存在2ms,那么在2ms之内必须刷新一次(给电容充电)。
而双稳态触发器,只要不断电,触发器的状态就不会改变。
那么DRAM如何进行刷新操作呢?

先来看一下几个问题。

<1> 多久需要刷新一次?

刷新周期:一般为2ms。

由于电容只能保持2ms的电荷,所以必须在2ms之内刷新一次电荷。

<2> 每次刷新多少存储单元?(每个存储单元由多个存储元构成)

以行为单位,一行又多个存储元,一行称为一个存储单元,每次刷新一行存储元即一个存储单元。

每个存储单元会由多个存储元构成,所以每次刷新存储单元的次数应该以行为单位,每次刷新一行。

<3> 什么叫一行存储单元?
在这里插入图片描述

上一小节,我们给出的存储器模型中,给出n位地址后,译码器会将n位地址转换成其中某一条选通线的高电平信号。

如果总共有n位地址,那么译码器的输出端会有2^n根选通线。

所以,按照之前的方案,如果有20位地址,那么选通线的数量就是2^20=1M。

也就是说,译码器的输出端需要接1M根选通线,大概有一百万。在译码器端接一百万根线,显然工程量很大。

为了解决这个问题,可以把存储单元从一维排列转换为二维排列,也就是将它们变为由存储单元构成的矩阵。如下图:
在这里插入图片描述
n位地址会被拆成行地址和列地址,分别送给行地址译码器和列地址译码器。

这样的话,每个译码器只需要处理n/2位地址信息。原本译码器需要处理20位地址信息,对应 2^20=1M 根选通线,
那么现在将20位地址信息分别拆分,一半行地址,一半列地址,那么每个译码器的选通线就是2^10=1K(1024)根选通线,这在工程上很容易实现。

随着存储容量的增大,现在的存储器甚至还会有三维排列,原理类似。

所以用行列地址的目的就是减少选通线的数量,使电路变得更简单和清晰。

❓ 如何根据地址来选中某一个存储单元?

将上面的二维图示进行简单连线之后,得到下图:
在这里插入图片描述

如果此时要访问的地址是0000 0000。

①左边的译码器

译码器的输入端输入00000000,那么它的第0根选通线会被选通(选中0号存储单元)。

②右边的译码器

地址会被分为前半部分(0000)和后半部分(0000),前半部分作为行地址,送给行地址译码器;后半部分作为列地址,送给列地址译码器。

那么,行地址译码器的第0根选通线会被选通(右图蓝线),列地址译码器的第0根选通线也会被选通(右图红线)。
在这里插入图片描述

一个存储单元,只有行和列都被选通才能进行读和写。
对于8位地址情况。采用左边策略,需要2^8
=256根选通线,而对于右边,只需要2^4+
2^4=32根选通线。

<4>如何刷新

上面我们已经知道了什么叫一行存储单元。

只要我们给出一个行地址,那么行地址译码器就会选中一整行存储单元。每一次刷新操作就会刷新一整行!

那如何刷新呢?会有一个专门的刷新电路支持,刷新电路会直接读出一整行存储单元的信息,然后重新写入(重新给电容充电)。

由于刷新一整行本质上就是做了一次读操作,所以它的耗时与我们读写周期的耗时差不多。

所以,进行一次刷新操作需要占用1个读/写周期,每次可以刷新一整行的存储单元。

<5> 什么时候刷新

假设DRAM内部结构排列成128*128(128行、128列)的形式,并且读/写周期(存取周期)为0.5us。

电容可以支持的最长时间是2ms,2ms对应4000个读写周期。2000/0.5=4000

有128行需要刷新,每次刷新需要0.5us时间。可以有如下几种策略。

①第一种
在这里插入图片描述
这种方式,2ms时间内,会有2000次刷新操作。(2ms/1us=2000)

这两千次刷新操作,足够在2ms内给128行的存储单元每一行都刷新很多次。这种刷新称为分散刷新,会导致存取周期翻倍。

②第二种
在这里插入图片描述
2ms可以分为4000个读写周期(2ms/0.5us=4000),前面3872个周期读写,后面128个周期分别刷新128行。但是在最后128个周期内(死区)无法进行读写。

③第三种
在这里插入图片描述
结合前两种思想,中和一下,将死区进行分散,将每一行的刷新分散到不同的时间段。

在实际应用中,可以利用CPU不需要访问存储器的这段时间进行刷新。比如CPU取得指令,并对它译码的阶段。

DRAM刷新是由存储器独立完成的,不需要CPU控制。

4)DRAM地址线复用

上面我们已经知道了什么叫行地址,什么叫列地址。

行地址和列地址的信息会同时丢给行列译码器,即同时送出行列地址。

地址有多少位,就需要涉及多少根的地址线。

DRAM的存储容量会比较大,有可能需要32维地址,也就是需要32根地址线。

为了让地址线对应的电路变得更加简单,DRAM一般会采用地址线复用技术。
在这里插入图片描述
本来需要有n位地址线来传送行和列地址,但是采用地址线复用技术之后,可以把行地址和列地址通过前后两次分别进行传输。
也就是说,只需要2/n条地址线就可以。第一次将行地址送入行地址缓冲器,第二次将列地址送入列地址缓冲器里面。然后在控制电路的控制下,行地址和列地址再送给译码器进行译码处理。

原本需要n位引脚来接收n位地址,现在只需要n/2个引脚就可以,先接收行地址,再接收列地址。也就是分两次送行列地址。

如果要考察DRAM芯片引脚个数的话,那么就要考虑DRAM芯片的地址线是否采用了复用技术,如果采用了那么对应的引脚数目应该减半。

(2)双稳态触发器

SRAM芯片的存储元就是如下的双稳态触发器:
在这里插入图片描述
这个双稳态触发器总共有6个MOS管,图中用M1、M2、M3、M4、M5、M6表示。

为什么叫双稳态呢?因为这个触发器(存储元)可以呈现出两种稳定的状态:

<1> A点高电平,B点低电平—>对应二进制的1

<2> A点低电平,B点高电平—>对应二进制的0
在这里插入图片描述

1)存储

写入数据很简单,比如现在想要写入0。
那么只需要给左边的绿线(BL)加上一个低电平信号,右边的绿线(BLX)加上一个高电平信号,这样就可以使得触发器A是低电平,B是高电平。而这个状态对应的就是二进制的0。如下:
在这里插入图片描述
写入二进制的1也是类似。

2)读出

与栅极电容读数据只需要一根线不同,双稳态触发器需要有两根数据线来读出0和1。
在这里插入图片描述

如果此时双稳态触发器里面存的是二进制的1,当我们给字 选择线接通之后(给了一个高电平电压)。右边的绿线(BLX)就会输出一个低电平信号(负脉冲)。而左边BL不会输出任何信号。

如果存储的是二进制的0,会由左边的线(BL)输出低电平信号,而右边的线不会输出任何电信号。

那么,根据左右两条数据线哪一条输出了低电平信号,就可以判断触发器里面原本存的是二进制的0还是1。

3)物理特性

<1> 双稳定触发器有两种稳定的状态,当我们读出数据之后,触发器的状态还是非常稳定的。

所以它的读操作是非破坏性读出,不需要进行重写操作。

<2> 对于双稳态触发器,只要给触发器(VDD)不断供电,只要不断电,触发器的状态就不会被改变。保存的0或1是不会消失的。所以双稳态触发器不需要刷新操作。

3.对比

将栅极电容和双稳态触发器对比一下,会有不同的地方。

1)读写数据时:

	对于栅极电容来说,如果他存储的是二进制1,就意味着电容会存储一些电荷,而我们接通MOS管,把这个1读出的过程就意味着我们要把电容放电,放电后导致电容表示的信息由1变为0,因此当我们读出栅极电容的1后,信息是被我们破坏了,因此需要重写操作,即给电容重新充电。

在这里插入图片描述
在这里插入图片描述
对于双稳态触发器来说,既然他叫稳态,那就意味着当我们读数据后,触发器状态依然保持稳定。
显然,不需要重写的读写速度更快。
总结一下:
栅极电容的数据线(绿色线)只有一根;双稳态触发器的数据线有两根。
栅极电容放电信息会被破坏,是破坏性读出,读出后应有重写(再生)操作;双稳态触发器读出数据,触发器状态保持稳定,是非破坏性读出,无需重写。
栅极电容读写速度更慢;双稳态触发器读写速度更快。

2)成本,集成度,功耗

栅极电容只需要一个电容和一个MOS管即可,所以它的每个存储元制造成本更低;
如果一块芯片面积固定不变,栅极电容的数量会比双稳态触发器分布更多更密集,就是集成度更高。
栅极电容电路简单,功耗低(电路简单);双稳态触发器需电路复杂,功耗大。
在这里插入图片描述

**注意:**两者都是易失性存储器(断电后消失),不要和破坏性读出弄混淆!

SRAM不需要刷新,DRAM需要刷新。

SRAM集成度低,存储容量更小,对应的行列地址位数也会更小。所以对于SRAM这种容量小的芯片,通常会把行列地址同时送过去。

DRAM芯片其实已经过时了,目前主存储器主要使用SDRAM芯片。(比如DDR3、DDR4)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值