当前位置:首页 > 云服务器 > 正文

闪存存储器的结构是怎样的,如何工作?

浮栅晶体管

Flash 存储器的核心存储单元是浮栅晶体管(Floating Gate Transistor),它与普通 MOSFET 的关键区别在于栅极和沟道之间多了一层被绝缘层包围的浮栅,电荷被载入浮栅后,由于绝缘层的隔离,可以长期保存(即使断电也不丢失),从而实现非易失性存储。

闪存存储器的结构是怎样的,如何工作? 第1张

  • 结构组成:控制栅(Control Gate)、浮栅(Floating Gate)、源极、漏极、沟道、隧穿氧化层(Tunnel Oxide)和隔离氧化层。
  • 状态表示:浮栅中存储的电子数量决定了晶体管的阈值电压(Vth),当浮栅带负电(存有电子)时,Vth 升高,称为“擦除态”(逻辑 1);当浮栅不带电或带正电(电子被移除)时,Vth 降低,称为“编程态”(逻辑 0),具体定义可能因闪存类型而异。

存储阵列结构:NOR 与 NAND

Flash 存储器根据存储单元的连接方式分为两种主要架构:

闪存存储器的结构是怎样的,如何工作? 第2张

特性 NOR Flash NAND Flash
单元连接 每个单元的控制栅连接字线,漏极连接位线,源极共地;单元并联在位线和地之间 多个单元串联成串,串的两端通过选择管连接位线和公共源线
读取方式 类似 NOR 门阵列,可随机访问(字节寻址) 串行读取,以页为单位访问
速度 读取快(<100ns),写入擦除慢 写入快,读取较慢(串行延迟),但连续读取快
密度 较低(单元面积大) 高(单元面积小,堆叠串)
典型应用 代码存储(如 BIOS、嵌入式系统) 大容量数据存储(如 SSD、U盘、存储卡)

NOR 结构

  • 特点:每个存储单元按行(字线)和列(位线)排列,可以像 RAM 一样随机读取任意字节,因此非常适合执行代码(XIP,eXecute In Place)。
  • 编程/擦除:擦除以扇区(Sector)为单位,编程可逐字节或逐字进行(但通常以页或字为单位优化),擦除通过隧穿效应将电子从浮栅移出(Fowler-Nordheim 隧穿),编程则通过沟道热电子载入(CHE)载入电子。

NAND 结构

  • 特点:多个存储单元(32 或 64 个)串联构成一个“串”(String),串的两端有选择管(SSL 和 GSL),整个阵列由多个这样的串组成,串的位线连接列,字线连接行,这种结构极大地减小了单元面积,提高了存储密度。
  • 操作单位:读取和编程以页(Page)为单位(典型 4KB~16KB),擦除以块(Block)为单位(多个页组成),NAND 不支持字节级随机访问,需要先读入整页数据到缓存再修改。
  • 编程/擦除:均采用 Fowler-Nordheim 隧穿机制,编程时向字线高电压,使电子隧穿进入浮栅;擦除时将衬底加高电压,将电子拉出。

内部组织与层次结构

芯片级结构

  • 存储阵列:基本单元构成矩阵,由行译码器(X-Decoder)选择字线,列译码器(Y-Decoder)选择位线。
  • 页寄存器(Page Buffer):与阵列交互的缓存区,用于存储一次读/写操作的数据,NAND 中页寄存器大小与页大小匹配。
  • 控制逻辑:状态机、命令接口、地址锁存等,负责解析命令并控制时序。
  • 电荷泵:产生编程/擦除所需的高电压(15~20V)。
  • 纠错码(ECC)引擎:利用汉明码、BCH 或 LDPC 等算法检测和纠正位翻转,因 NAND 存在天然不可靠性。

块与页的层次(以 NAND 为例)

  • 块(Block):擦除的最小单位,由多个页组成,块大小通常为几百 KB 到几 MB。
  • 页(Page):读/写的最小单位,包含主数据区(Main Area)和备用区(Spare Area),备用区用于存储元数据(如 ECC 校验码、坏块标记、逻辑地址映射等)。
  • 平面(Plane):多个块组成一个平面,一个芯片通常包含多个平面,可并行操作以提高吞吐量。

操作原理

读取

  • 在控制栅施加参考电压,检测位线电流是否导通,若单元导通(阈值电压低于参考电压),则读为 1;否则为 0。
  • NAND 读操作需先通过选择管开通串,然后对目标字线施加读取电压,其他字线施加导通电压(Pass-through Voltage),再比较位线电流。

编程

  • 通过隧穿效应将电子载入浮栅,对选中的字线施加高电压(编程脉冲),对位线施加适当电压(0V 代表允许编程,Vcc 代表禁止编程)。
  • 采用增量步进脉冲编程(ISPP)技术,逐步增加电压,精确控制阈值电压分布。

擦除

  • 对衬底或 P-well 施加高电压,字线接地(或负电压),使电子从浮栅隧穿回衬底,擦除后所有单元阈值电压回到低值(1 态)。
  • 擦除操作以块为单位,且需先擦除再编程(写前擦除)。

相关问题与解答

问题 1:为什么 NAND Flash 不能像 NOR Flash 一样随机读取字节?

解答:NAND Flash 的存储单元串联成串,读取时需要通过选择管选通整串,并对非目标字线施加导通电压,这使得随机访问单个字节的延迟很高(通常数十微秒),NAND 的位线电容较大,需要预充电和检测,设计上只支持以页为单位将数据加载到页寄存器,然后通过接口串行输出,NAND 不适合直接执行代码,更适合连续读取大块数据,而 NOR Flash 的单元并联,每根位线直接连接一个单元,字线选通时即可读出该单元状态,可实现纳秒级的随机读取,所以常用于代码执行。

问题 2:Flash 存储器的磨损(Wear-out)是如何发生的?如何缓解?

解答:磨损主要源于编程/擦除(P/E)循环中隧穿氧化层的累积损伤,每次载入或移除电子都会对氧化层造成轻微应力,产生陷阱、界面态等缺陷,导致氧化层绝缘性能下降,进而使单元阈值电压漂移、出现位错误,当 P/E 次数超过一定值(如 NAND 约 3k~10k 次,SLC 可达 100k 次),单元变得不可靠,缓解措施包括:

  • 磨损均衡(Wear Leveling):将写入操作均匀分布到各个块,避免某些块过度使用。
  • 坏块管理:标记并替换出厂或使用中产生的坏块,使用备用块替换。
  • 纠错码(ECC):如 BCH、LDPC 等,能纠正多位错误,延长有效寿命。
  • 读取干扰管理:减少因频繁读取同一区域而导致的电荷泄漏。
  • 数据刷新(Read Reclaim):当某页读取次数过多时,将数据搬移到新块,并擦除原块。

闪存存储器的结构是怎样的,如何工作? 第3张

0