2、Flash基础:Flash存储单元结构(浮栅晶体管)、SLC/MLC/TLC/QLC原理与对比
好,咱们今天聊聊Flash存储的核心——存储单元。说白了,就是那个能记住“0”和“1”的小东西长什么样,又是怎么工作的。
我刚开始接触Flash时,总觉得它跟SRAM、DRAM差不多,都是存数据的嘛。后来被一个项目坑过一次——写Flash时突然掉电,数据全乱了。从那以后我才真正去研究它的底层结构。嗯,今天就把这些经验掰开揉碎了讲给你听。
2.1 浮栅晶体管:Flash的“记忆细胞”
Flash存储单元的核心,是一个特殊的晶体管——浮栅晶体管(Floating Gate Transistor)。
普通MOS管只有一个栅极,控制着源极和漏极之间的导通。浮栅晶体管呢?它有两个栅极:
- 控制栅(Control Gate):就是普通MOS管那个栅极,用来施加电压。
- 浮栅(Floating Gate):藏在控制栅和沟道之间,被绝缘层(二氧化硅)完全包裹着。
你想想看,这个浮栅就像一个小黑屋,电子一旦进去,就出不来了——因为四周都是绝缘体。电子被关在里面,就代表存了“0”;电子被放出来,就代表存了“1”。
关键点:浮栅里有没有电子,决定了晶体管的阈值电压(Vth)高低。有电子时Vth高,需要更高的栅极电压才能导通;没电子时Vth低,容易导通。读数据时,就是通过检测这个导通特性来判断存的是“0”还是“1”。
2.2 编程与擦除:电子怎么进去,又怎么出来?
电子怎么进浮栅?靠的是热电子注入(Hot Electron Injection)。
编程时,在控制栅上加高电压(比如+12V),同时在漏极加中等电压。沟道里的电子被强电场加速,变成“热电子”,能量高到能穿过绝缘层,直接“跳”进浮栅。这个过程叫Fowler-Nordheim隧穿的一种变体。
擦除时呢?反过来,在控制栅上加负电压(比如-12V),或者在衬底加正电压。浮栅里的电子被“吸”出来,通过隧穿效应回到沟道。嗯,这里要注意,擦除是块操作——你不能只擦一个单元,必须擦一整块(Block)。
个人经验:我在做NAND Flash驱动时,发现擦除操作特别慢(毫秒级),而编程是微秒级。所以设计文件系统时,尽量少擦除,多用“写后标记无效”的策略。这个坑我踩过,分享给你。
2.3 SLC/MLC/TLC/QLC:一个单元存几位?
浮栅里能存多少电子,决定了你能区分出几种状态。这就是SLC、MLC、TLC、QLC的区别。
| 类型 | 每单元位数 | 电压状态数 | 典型应用 |
|---|---|---|---|
| SLC | 1 bit | 2种(0/1) | 工业级、企业级SSD |
| MLC | 2 bits | 4种(00/01/10/11) | 消费级SSD(早期) |
| TLC | 3 bits | 8种 | 主流消费级SSD |
| QLC | 4 bits | 16种 | 大容量存储、冷数据 |
说白了,SLC最简单——浮栅里电子多就是“0”,少就是“1”,清清楚楚。MLC呢?要把电压范围分成4份,每份代表一个2位二进制数。TLC分8份,QLC分16份。
为什么会这样?因为浮栅里的电子数量是连续的,你可以通过控制编程电压和时长,让不同数量的电子进去。但问题是,电子会漏!时间长了,或者温度高了,电子会慢慢跑掉,电压状态就模糊了。
注意:QLC的16种状态之间,电压差非常小。我曾经测试过一批QLC芯片,在85°C高温下,数据保持时间只有SLC的十分之一。所以QLC真的不适合存重要数据,除非你有强大的ECC纠错。
2.4 性能与寿命对比
存得越多,性能越差,寿命越短。这是Flash的铁律。
| 参数 | SLC | MLC | TLC | QLC |
|---|---|---|---|---|
| 编程时间 | ~50μs | ~200μs | ~500μs | ~1ms |
| 擦除时间 | ~1ms | ~2ms | ~3ms | ~5ms |
| P/E循环次数 | 10万次 | 1万次 | 3000次 | 1000次 |
| 读干扰 | 低 | 中 | 高 | 很高 |
你想想看,SLC编程只要50微秒,QLC要1毫秒——差了20倍。为什么?因为QLC要精确控制电子数量,分16个档位,每一步都得小心,不能多也不能少。
寿命方面更明显。SLC能擦写10万次,QLC只有1000次。我做过一个实验:连续写QLC SSD,大概写了500TB数据后,坏块就开始冒出来了。而SLC SSD,写个2PB都没问题。
避坑指南:我曾经在一个监控项目里用了QLC SSD,结果半年后频繁掉盘。后来发现是写入量太大,P/E cycle耗尽了。换成MLC后,问题解决。所以选型时,一定要算好每天的写入量,再乘以设计寿命,留出3倍余量。
2.5 实际应用中的选择建议
我个人习惯这样选:
- SLC:用在需要高可靠、高寿命的地方,比如军工、航天、工业控制器。贵?贵就贵点,数据无价。
- MLC:企业级SSD、高端消费级。现在越来越少见了,被TLC替代了。
- TLC:目前最主流的选择。普通电脑、笔记本、游戏机,性价比最高。配合SLC Cache技术,日常使用体验跟MLC差不多。
- QLC:只适合存冷数据——比如照片、视频归档。而且一定要有强大的ECC和磨损均衡算法。我建议不要拿QLC当系统盘。
嗯,这里还要提一句:现在的3D NAND技术,通过堆叠层数(从32层到200多层),大大提高了容量和性能。但底层原理还是浮栅晶体管,只是工艺变了。
好了,Flash存储单元的基础就讲到这里。下一章咱们聊聊NAND Flash的阵列结构和读写操作,那才是真正有意思的地方。