存储器的应用是十分广泛的,而且往往会占据处理器芯片的大部分面积。而它们的核心器件就是MOSFET。
主要分类
- 易失性存储器
- SRAM(静态RAM)
- DRAM(动态RAM)
- 非易失性存储器
- 以flash为主
RAM的意思是随机存取存储器,随机就体现在它的每个数据字节都可以在任意时间访问,而不像硬盘存储器需要移动读取头和盘片进行数据读取。
“非易失性”表示存储器断电后数据不会丢失。
特点
断电后能够保持数据 | 单元尺寸和单比特成本 | 重写周期 | 写入一个字节的速度 | 是否与基本CMOS工艺兼容 | 主要应用 | |
---|---|---|---|---|---|---|
SRAM | 否 | 大 | 无限 | 快 | 完全 | 嵌入在逻辑芯片中 |
DRAM | 否 | 小 | 无限 | 快 | 需要修改 | 独立芯片和嵌入式 |
flash | 是 | 最小 | 有限 | 慢 | 需要大量修改 | 非易失性存储,独立芯片 |
可以看出,都各自有优势及代价。下面讲的内容与这个表格是对应的。
SRAM
基本的SRAM是采用6个晶体管存储一位数据,原理图如下。

首先关注中间的核心结构。M1和M3组成了一个反相器,M2和M4组成了另一个反相器,反相器的输入端为另一个反相器的输出端,即互锁结构。
这个结构涉及到了三个关键的节点,分别是HI/LOW,BL/BLC,WL。理解了它们的作用就理解了SRAM。
HI/LOW:中间互锁结构的反相器的输入或输出节点。这两个位置就是存储的一位bit信息。我们读取数据就是要将这个节点的数据读取出来,写数据就是将数据写入这个节点。
BL/BLC:这两个点是相反的,因此讨论一个就可以。BL的全拼是bit line,也就是位线。顾名思义,就是存储或读取该存储器存储的信息。
WL:全程是word line,也就是字线。作用是控制SRAM的状态。
工作状态
WL=0:保持存储状态。
WL=1:进行读写操作。
读操作
WL=1后,M5和M6导通,这时可以通过对比BL和BLC的电平值,来确定哪边高哪边低,从而得到存储器的存储状态
写操作
将要写入的值写入BL和BLC,然后再将WL置为1,就可以将这个值写入存储器中。
很多相同的SRAM单元以XY阵列的方式进行排列,单元的每行连接到一个字线,每列连接BL和BLC。在所有存储器中,SRAM单元速度最快,但是代价就是需要6个晶体管来存储一位数据。
DRAM
DRAM中的D是dynamic,即动态随机存取存储器。这也是这个存储器的特征,即存储的状态是不断变化的,而不像SRAM中的互锁反相器将存储数据锁定住。
DRAM单元只包含一个晶体管和一个电容,如下图所示:

状态“1”和“0”分别用单元电容充电到$V_{dd}$或0来表示。
写数据
与SRAM相同,将位线写入要存储的状态,同时字线写入高电平,使得NMOS开启。
读数据
每个危险都不可避免的有电容$C_{\mathrm{BL}}$。如果要读取左上角单元的数据,需要将BL1预充电到$V_{dd}/2$,然后浮空。然后将字线置高电平,使得晶体管导通。此时位线电容与单元电容会发生电荷共享,是一个并联结构。那么如果单元电容存储的高电平,电量将会减少,使得位线电压升高,反之则降低。从而可以判断存储的状态。
很显然,这个存储状态是不稳定的。DRAM电容只能够在有限的时间内保持数据,这是因为晶体管中存在漏电等结构,而且当读取时,会破坏掉原先存储的状态,电容存储的电荷会在有限的时间内逐渐泄露掉。为了防止数据丢失,电荷需要每秒刷新很多次,即没过一段时间就需要读取再存入,更新电容里存储的电荷。为了增长刷新间隔时间,单元电容应尽可能地大,从而可以存储更多地电荷。而如何在逐渐缩小的空间上做出大的电容是值得深入研究的问题。
Flash(闪存)
从上面的结构中不难看出,不接电源时,SRAM和DRAM都会丢失掉存储的内容。而非易失性存储器(Nonvolatile Memory, NVM)是一种不需要电源就能多年保存内容的存储器。

如上图所示,(a)为Flash常用的结构,可以发现其结构与MOSFET几乎一致,但也有着一个重要的差别,就是在栅介质之间,用两层介质夹着一个电荷存储层来代替。这个电荷存储层就是能够实现NVM的关键。电荷存储层可以为氮化硅或其他具有高密度电荷陷阱的绝缘体。当陷阱为空或中性时,晶体管具有较低的$V_t$。而当陷阱捕获了电子,那么反型层的形成也就更加困难,晶体管将具有较高的$V_t$。这样,通过$V_t$的高低就可以代表“0”或“1“。
电荷存储层也可以为导体,实际上一个常用且重要的电荷存储层材料为多晶硅。采用多晶硅电荷存储层的NVM称为浮栅存储器,因为多晶硅层是一个电学上浮空的晶体管的栅。
读操作
上面已经说过了,利用阈值电压。
写操作
写操作就是将电子引入电荷存储层或者将电子引出电荷存储层,也就是写入和擦除。电子想要越过势垒主要有两种方式,一种是获得足够的能量,直接跨过势垒,称为热电子注入;另一种是通过隧穿,隧穿过势垒。这也是将电子引入电荷存储层的两种方式。隧穿写入需要一个高电场,如图c所示,在栅极处加一个很高的电压。而图d就是一个反过程,即擦除操作。由于隧穿擦除的速度很慢,因此在实际应用中,NVM是以数千字节为单位进行分块擦除,而不是逐字节擦除。就拿U盘举例,当你删了一个文件时,表面上看文件已经不存在了,但实际上,在flash中,这个文件还存在着。只有当删除的文件积累到一定程度后,比如说和现有的文件加一起占满了整个flash,那么才会进行分块擦除,然后从头开始存储。这也给我们提了个醒,有些你删除的东西可能还是可以找到的。
热电子写入的方式就需要在漏极处加一个高电压,给反型层载流子提供能量。这种方式的速度要比隧穿写入的速度快,但是会消耗更多电流和功耗。
高电场下重复地写入和擦除周期会破坏绝缘层中的化学键,从而在随机的位置产生大约几个原子直径的漏电路径。只要有一个漏电路径的存在,那么数据就将会丢失,因此flash是有一定的寿命的。
电荷存储并不是唯一的数据存储机制,还有一些其他的机制,比如说采用可编程电阻的阻变NVM或RRAM单元等。