一块 1TB 的 TLC 固态,包装上写着顺序写入 6000MB/s。你从移动硬盘往里拷 200GB 素材,前十几秒确实能跑到 5000 多,之后数字开始往下掉,稳定在 800 上下,有时候只剩三四百。

盘没坏,温度也不高,这属于正常现象。但“正常”得有个解释。网上一搜,答案通常就三个字:缓存满了。再问一句缓存是什么、在哪、有多大、为什么满了就慢,能说清楚的人不多。因为大家嘴里的“SSD 缓存”其实是好几样东西,混在一起讲,越讲越糊。

如果你遇到过下面这些情况,这篇是写给你的:

  • 拷大文件,前几秒飞快,之后速度像被抽掉了,断崖式往下掉
  • 新盘测分很漂亮,用了一年再测,写入只剩一个零头
  • 盘里还剩一百多 GB,往里写东西却比刚买时慢得多
  • 想买盘,被“无缓”“1GB 缓存”“HMB”“nCache”这几个词绕晕
  • 拆开看过 M.2,主控旁边有一颗小芯片,不知道是干什么的

下面先讲清 NAND 的存储原理,再回过头拆缓存。不然后面全是玄学。只想看结论和选购建议的,可以直接跳到最后一节。

先把“缓存”这个词拆开

SSD 里被叫成缓存的东西,至少有四种。位置、容量、断电后的结果都不一样。

名字在哪装什么典型容量断电后果
SLC CacheNAND 闪存里用户数据本身几 GB 到全盘的三分之一没有,已经落盘
FTL 映射表缓存主控外挂 DRAM,或向主机借的内存逻辑地址到物理地址的对照表每 1TB 容量约 1GB,或 64 – 256MB要从 NAND 日志重建
元数据缓存同上块状态、有效页计数、磨损计数、读计数随固件设定后台策略重算
主机写缓冲同上已接收但还没落盘的数据受掉电保护电容的能量限制未落盘的数据丢失

表里最要紧的是第一行和后面三行的区别。SLC Cache 是唯一一个把数据真正存下来的缓存,其余三种都在内存里,断电重来一遍。

还有一个容易混进来的东西:Windows 设备属性里那个“启用设备上的写入缓存”。那是操作系统的写回策略,属于另一层,勾不勾都改变不了 SSD 的缓外速度。往下讲的全是盘内部的机制。

SSD 缓存四种形态的位置示意:主机内存里的 HMB 借用区,SSD 主控旁的 DRAM 芯片里放着 FTL 映射表、元数据和写入缓冲,NAND 闪存里是 SLC Cache 与主存储区
四种缓存,位置差得远

SSD 存储原理

机械硬盘靠磁畴的取向记数据,固态靠的是电子。NAND 的每个存储单元叫 cell,本质是一个能困住电子的晶体管。往里注入多少电子,决定了它的阈值电压;读的时候加一个参考电压,看它导不导通,电子的量就翻译成了 0 和 1。

一个 cell 能存几个 bit,就是 SLC、MLC、TLC、QLC 的分野。1、2、3、4 bit,对应 2、4、8、16 个电压档位。档位越多,同样面积存得越多,代价后面细说。

存储结构:cell、page、block、plane、die

一个 cell 之上,是一层层的组织结构:

  • page(页):读写的最小单位。现在主流 16KB,也有 4KB 到 8KB 的。控制器下一条读命令,拿回来的是一整个 page。
  • block(块):256 到 512 个 page 组成一块,合 4MB 到 8MB。block 是擦除的最小单位,这个限制是后面所有麻烦的起点。
  • plane(平面):一块 die 里切出 2 到 4 个 plane,可以各自独立执行命令。
  • die(晶粒):一颗独立的 NAND 晶粒,内部包含若干 plane。
  • package(封装):我们说的“一颗闪存颗粒”,里面装 2 到 16 个 die。

这层关系不是名词游戏。单颗 die 的带宽其实很有限,SSD 主控有一半功夫花在“怎么把命令摊到不同的 die 和 plane 上并行执行”。顺序读能跑满 PCIe 4.0 的 7000MB/s,靠的不是某颗颗粒快,是几十颗并起来。

NAND 层级结构示意图:package 封装颗粒内含 2 到 16 颗 die,die 含 2 到 4 个 plane,plane 含约上千个 block,block 含 256 到 512 个 page,page 是读写的最小单位
从 package 一路拆到 cell,一共六级

读、写、擦除,三个单位不一样

把三个操作的单位摆在一起,就能看出 NAND 别扭在哪:

  • 读:以 page 为单位,16KB 起步。即使你存储了1KB大小的数据,读取数据也要一起读出来。
  • 写(编程,program):也是 page 为单位。最小的写入单位,写入数据以此为单位。
  • 擦除:只能以 block 为单位,一擦就是几 MB。如果你删除了数据,那么这附近的数据需要全部擦除重写。

更要命的是第二条约束:已经写进 0 的 cell,不能单独写回 1。要改数据,只能整块擦掉重来。所以“覆盖写一条 4KB 的数据”,物理上根本不是改掉那 4KB,而是走一遍这样的流程:

  • 找一块空闲页,把新数据写进去
  • 把映射关系指到新页
  • 老页标记为无效。数据还在物理上,但不会再有人读它
  • 等空闲块不够用了,主控挑一个垃圾最多的块,把里面还有效的页搬到别处,再整块擦掉。这一步叫垃圾回收(Garbage Collection,GC)

不同厂家的流程算法可能不一样,但是都是要遵循这一套原则。

SSD 覆盖写过程示意图:原 Block A 中有待改页,新数据写进另一块的空页,旧页被标记为无效,垃圾回收把剩余有效页搬到新块,最后整块擦除
改 4KB 数据,物理上要动一整块

改写所造成的搬运产生的额外写入就是写放大,公式很直白:

WAF = NAND 实际写入量 ÷ 主机下发的写入量

理想值是 1。实际随机写场景里,2 到 4 都算常见。企业盘靠 7% 到 28% 的 OP 预留空间把它压下来,消费盘预留得少,所以随机写一多,性能就更容易掉。

顺带可以验算一下 TBW。一块 1TB、标称 600TBW 的 TLC 盘,600 次全盘写入配上 1.5 到 3 倍的写放大,每个块的擦写次数落在 900 到 1800 次之间,而 TLC 的预算是 1000 到 3000 次。数字对得上,说明厂家标 TBW 的时候已经把写放大算进去了。

行-列激活:一次读慢在哪

网上有种说法,SSD 读数据要“先激活行再激活列”,所以有延迟。方向没错,但中间还有四道动作。

NAND 页读取时序示意图:wordline 串起一整个 page,bitline 接到感应放大器;一次页读包含预充电、加通过电压、加读电压、列感应、输出五步,tR 约 40 到 60 微秒
一次页读的五步动作

NAND 阵列里,一条 wordline 横着串起一整个 page 的 cell,一条 bitline 竖着把一列 cell 接到感应放大器上。读一个 page 的完整流程是:

  • 位线预充电到参考电位
  • 没被选中的 wordline 全部加一个足够高的通过电压,让那些 cell 无论存了什么都能导通,相当于把闸门打开
  • 被选中的 wordline 加上读电压,存的电子多,导通得就少
  • 位线电位随之变化,感应放大器积分、判决,确定这一格落在哪个档位
  • 结果搬进 page 寄存器,再由控制器取走

从加读电压到数据可用,这段时间叫 tR,主流 TLC 在 40 到 60 微秒之间。作为对照,DRAM 完成同类动作只要几十纳秒,差了三个数量级。

但 SSD 的随机读延迟通常只有 80 到 100 微秒,并不是每次都老老实实等完 50 微秒。原因在并行:控制器有 4 到 8 条通道,每条通道挂多颗 die,一颗 die 里还有多个 plane。队列里攒够请求,一次甩给多个 die 同时读,单次延迟没变,吞吐量上去了。这就是单队列和多队列的区别,企业级主控拥有更多的通道,能够一次性读取多个die同时读,所以多die能带来吞吐量的优势,但是成本就会增加。

数据老化:电子会跑

非易失不等于永久保存。cell 里的电子靠隧穿氧化层困住,只要时间够长、或者温度够高,就会慢慢漏掉。漏到一定程度,阈值电压漂移,读出来就是错的。

NAND 阈值电压分布与数据老化示意图:SLC 有 2 个档位、TLC 有 8 个、QLC 有 16 个,档距逐级变窄;下方列出电荷泄漏、读干扰、写干扰三种机理
档位越多,留的余量越少

消费级 SSD 的断电保存期,JEDEC 的口径是:写满额定寿命、断电,30℃ 下放一年不出错。企业盘反过来只有 40℃ 三个月,因为它们默认一直通电,用保存期换了耐久度。温度对漏电的影响很大,每升高 5 到 10℃,漏电速度大约翻一倍。

除了自然泄漏,还有两种干扰:

  • 读干扰(read disturb):读某一页时,未选中的 wordline 被加上通过电压,这股电压会轻微地给同一串上其他 cell 充电。读得越多,邻居越容易被读坏。所以固件会统计每块的读次数,到阈值就主动把数据搬到新块。
  • 写干扰(program disturb):编程要加十几伏的高压,同一条串上没被选中的 cell 也会被波及,阈值电压被推着漂移。3D NAND 的串更长,波及范围更大。

档位越多,抗干扰越差。SLC 只需要分辨“有没有电”两个状态,中间留了巨大余量。QLC 要在同一个窗口里塞 16 个档位,档距被压得很窄,多漏一点电子就可能判错。

主控的对策是纠错。SLC、MLC 时代用 BCH 就够,到 TLC、QLC 必须上 LDPC,还要支持软判决读取:同一个 page 换几个参考电压多读几次,用概率反推原始数据。所谓“盘越用越慢”,一部分就是纠错开销在变重。

FTL 表映射:SSD 的户口本

主机只认逻辑地址(LBA)。操作系统说“读第 12345 号扇区”,它不关心这个扇区物理上躺在那颗 die 的哪个 block 的哪一页。中间的翻译层叫 FTL(Flash Translation Layer),它维护的表叫映射表,L2P。

FTL 映射表示意图:逻辑地址 LBA 翻译成由 die、block、page 组成的物理地址;1TB 盘按 4KB 粒度约有 2.5 亿个条目,整张表接近 1GB,即每 1TB 容量配 1GB DRAM
每 1TB 配 1GB DRAM,就是这么算出来的

表的体积由映射粒度决定:

  • 页级映射:每个逻辑页单独映射到一个物理页。随机写最顺,代价是表极大。1TB 盘按 4KB 粒度算,约 2.5 亿个条目,每条 4 字节,整张表接近 1GB。
  • 块级映射:只映射块,块内偏移保持不变。表缩到几百 KB,但改块里一页要搬整块,随机写很难看。
  • 混合映射:热数据走页级、冷数据走块级;或者整张表存在 NAND 里,内存只缓存热的那部分(DFTL)。消费级盘的常见做法。

“每 1TB 容量配 1GB DRAM”这条经验法则,就是上面那两行算术推出来的。1GB 的表塞不进主控的片上 SRAM,只能外挂内存芯片。

这张表不是可有可无的索引。它丢了,盘的表现就是“掉固件”:数据都在,但没人知道它们在哪。企业盘用大电容做掉电保护,断电瞬间靠电容里的电把映射表和写缓冲刷回 NAND。消费盘没这套硬件,只能靠固件设计补,比如把映射表的改动实时写进 NAND 的日志区,掉电后重建。这也是为什么盘怕突然断电:最坏的结果不是丢几秒的数据,是表损坏、整盘认不出来。

内存里的缓存:DRAM 与 FTL Cache

回到缓存。内存里的那几样,先看它们都在哪。

带 DRAM 与无 DRAM 的 SSD 对比示意图:DRAM 里同时放 L2P 映射表、元数据和写入缓冲;无缓盘通过 HMB 向主机借 64 到 256MB 内存,只缓存最热的映射表页
有缓与无缓,差别在映射表放在哪

主控旁边那颗 DRAM 芯片,装的是三样东西:L2P 映射表、运行元数据(块状态、有效页计数、磨损和读计数)、以及主机写缓冲。三者抢同一块内存,分不匀的时候优先级是映射表 > 元数据 > 写缓冲。

为什么表非得放内存里?因为查表比取数据还频繁。NAND 读一页要几十微秒,如果每个请求都先去 NAND 翻一次表、再回 NAND 取数据,延迟直接翻倍。内存查表是几十纳秒,差三个数量级。这不是优化选项,是没有别的选择。

有个反直觉的点:写缓冲开多大,主要不是性能问题,是能量问题。带掉电保护的盘,缓冲里所有“已向主机确认”的数据必须在电容放完之前写进 NAND。所以缓冲容量受电容的能量预算限制,不是想开多大就开多大。

那没有 DRAM 的盘怎么办?把内存芯片从 PCB 上省掉,成本、功耗、板面布局都能受益,代价是映射表没地方常驻。NVMe 1.2 之后有个办法:HMB(Host Memory Buffer),向主机借一块内存,常见 64MB 到 128MB,协议上限 256MB。

64MB 装不下 2TB 盘的完整映射表,差着一个数量级。它能正常工作,前提是访问有局部性:刚读过的文件大概率还会再读,读完一个文件大概率会接着读它旁边的数据。缓存里只留最热的那部分映射表页,日常负载下命中率能到九成以上。

剩下那一成的代价是:回 NAND 取映射表页,再读数据,延迟抖一下;同时表的换入换出本身也在写 NAND,多一份磨损。所以无缓盘不是“性能差一点”,是在满盘、碎片化、高队列深度这三件事叠在一起时会明显塌下去。当仓库盘、装游戏、日常办公够用;当系统盘跑大量小文件随机写,带 DRAM 的盘还是不一样。

NAND 里的缓存:SLC Cache

你在评测里看到的写入速度,几乎全是 SLC Cache 的成绩。

为什么要拿 TLC 假装 SLC

TLC 一个 cell 存 3 bit,要分辨 8 个电压档位。写一个 cell,主控得反复微调注入的电子量,一道道逼近目标电压,这套动作叫增量步进脉冲编程(ISPP)。档位越多,需要的验证次数越多,越慢。

如果只判断“最高位是 0 还是 1”,只用 2 个状态,事情立刻简单:编程次数少,判决也快。所以现代 SSD 的做法是,把一部分 NAND 空间按 SLC 模式来写,真正存进去的只有 1 bit,剩下 2 bit 的位置先空着。

代价是空间。1GB 的 SLC 数据要占 3GB 的 TLC 物理容量,QLC 是 4GB。这块区域就是 SLC Cache。

SLC Cache 与折叠机制示意图:写入先落到 SLC 模式区域,空闲时按 TLC 密度折叠回主存储区;右侧是大文件持续写入的三段式速度曲线,含缓内、掉速点、缓外与边释放边写
三段式写入曲线:缓内、掉速点、边释放边写

数据写进 SLC Cache 只是第一步。等盘空闲下来,主控把缓存里的数据按 TLC 密度重新写回常规区域,腾出空间给下一批写入。这个过程叫折叠(folding),西数闪迪和三星的官方文档里都用这个词。

折叠解释了写入速度的三段式曲线:

  • 缓内:数据落在 SLC Cache,跑满接口速度
  • 掉速点:缓存写满,新数据只能直接写 TLC
  • 边写边释放:盘一边往 TLC 直写,一边把 SLC 里的旧数据折叠出去,速度比第二段还低,因为 NAND 的读、写和垃圾回收在抢同一批通道

所以“拷到一半掉速”不是故障,是设计。真正要看的是掉速之后的数字,缓外速度才是这块盘的底子。

三种划分方式:固定、动态、混合

SLC Cache 也不是想开多大就多大。厂家的划分方式主要三种:

方案怎么划空盘时用掉一半容量后常见于
固定容量出厂定死一个值几 GB 到几十 GB不变部分工控盘、早期方案
动态(全盘模拟)按剩余空间的比例划几乎全盘都算缓存明显缩水,可能只剩三成中低端 TLC / QLC 盘
混合(静态 + 动态)静态块加动态块静态块 + 大部分剩余空间保住静态块,动态部分缩水中高端盘
SLC Cache 三种划分方式对比示意图:固定容量、动态全盘模拟、静态加动态混合,以及三种方案在容量占用升高时可用缓存大小的变化曲线
容量越满,动态方案的缓存缩得越狠

三种方案没有绝对高下。全盘模拟的峰值缓存最大,空盘测分最好看,但容量占用一上去,可用缓存按比例缩水,半盘之后可能只剩三成;而且它把本来能存 3 bit 的位置拿去当 1 bit 用,折叠时的写入量更大,QLC 上尤其明显。

固定方案老实,缓存就那么几 GB,好处是你随时能看到这块盘真实的 TLC 直写速度是多少。

混合是目前中高端的主流:一小块静态缓存保证基础体验,剩下的按未分配空间动态调整,两头的好处各占一点。

SLC Cache 的两笔账

折叠不是免费的。一笔是写放大:数据先按 SLC 写一遍,折叠时再按 TLC 写一遍,NAND 实际写入量至少翻倍。另一笔是寿命:多出来的每一次编程都在消耗擦写次数。

这两笔账在盘快满的时候同时恶化。空间不够,动态缓存缩水,折叠更频繁,写放大更高,于是“快满的盘又慢又费寿命”。QLC 上这个问题被放大好几倍,因为它的 P/E 预算本来就只有 TLC 的三分之一左右。

所以那句老话是真的:留出 10% 到 20% 的空闲空间。这不是玄学,是给主控留出做折叠和垃圾回收的余地。

各家的做法差在哪

同样是“静态加动态”,各家的取舍不一样。看官方文档比自己猜靠谱。

厂商代表技术缓存架构独立 DRAM官方口径里的说法
三星TurboWrite / Intelligent TurboWrite固定缓冲区起步,后续版本加入动态部分有840 EVO 白皮书:缓冲区按 SLC 容量计 3GB – 12GB,随容量递增,物理占用要乘 3
西数 / 闪迪nCache 4.0静态 SLC 块(按盘容量取百分比)+ 动态 SLC 块(按未分配空间取百分比)有官方定性为混合 SLC 写缓存,空闲时 folding;宣传点里包含降低写放大
致钛(长江存储)动态 SLC 缓存动态无,走 HMBTiPlus7100:联芸 MAP1602 主控 + 232 层 TLC,缓外为 TLC 原生水平
铠侠 / 美光 / SK 海力士 / Solidigm各自命名,思路相近固定 + 动态为主高端有,主流型号有 HMB 方案差别主要在层数、QLC 策略和主控固件调校

三星是最早把这套东西做成卖点的。840 EVO 那代的白皮书里写得很明确:缓冲区按 SLC 容量计 3GB 到 12GB,容量越大给得越多;因为是用 3bit 单元模拟的,物理占用要乘 3。后来的 Intelligent TurboWrite 把动态部分加了进来,缓存大小开始随剩余空间变化。

西数(SSD 业务现在归闪迪)的 nCache 4.0,官方文档里少见地把架构写清楚了:静态 SLC 块按盘容量的百分比取,动态 SLC 块按未分配空间的百分比取,两池相加。它宣传的不只是速度,还有降写放大:把零散写入先吸收到寿命更好的 SLC 块里,整理好了再往高密度单元写,等于替 NAND 挡了一层。

致钛走的是另一条路。TiPlus7100 用的是联芸 MAP1602 主控,本身没有独立 DRAM,靠 HMB 借主机内存放映射表,配合动态 SLC 缓存。232 层 Xtacking 的 TLC 颗粒,缓内 7000MB/s,缓外就是 TLC 的原生水平。这条路线把成本压下来了,代价是前面说的,高负载下延迟抖动更明显。

铠侠、美光、SK 海力士、Solidigm 思路大同小异,差别主要在 BiCS 层数、QLC 的策略,以及主控固件的调校水平。所以真正影响体验的不是品牌名,是具体型号和固件版本,同一个系列换一次主控,缓外速度可能差一倍。

顺带一个坑:别信电商详情页的“缓存”两个字。有的页面写“无缓存”,那指的是没有独立 DRAM 芯片,不代表没有 SLC Cache。这两个概念差得远,前面那张表就是为了分清它们。

怎么选、怎么用

买之前,下面这几个参数比顺序读速有用得多。

看什么为什么在哪看
缓外(持续)写入速度决定大文件持续写入的实际体验评测里“掉速之后”那段数字;或自己用 HD Tune 做一次全盘写
有没有独立 DRAM影响满盘、碎片化场景下的随机读写稳定性拆解图、评测;无缓盘会标 DRAM-less 或 HMB
颗粒类型TLC 和 QLC 在缓外速度和寿命上差一个档拆机看丝印,或用 Flash ID 一类工具读主控
TBW 与质保年限厂家给出的写入寿命上限商品参数页。1TB 的 TLC 盘普遍标 600TBW 上下
散热主控过热会主动降速有没有散热马甲,机箱和笔记本内部的风道
OP 预留出厂已留 7% 左右,自己别再写满留 10% 到 20% 的空闲空间

已经买了的,能做的事不多,但都有用:

  • 别把盘写满,留 10% 到 20%
  • 确认 TRIM 是开着的。Windows 上执行 fsutil behavior query DisableDeleteNotify,返回 0 就是开的
  • 别拿“满盘跑分”的结果判断盘坏了。跑分工具写满全盘,本来就是专门去触发缓外速度和垃圾回收,数字难看是正常的
  • 注意散热。主控超过一定温度会主动降速,笔记本里贴着电池的 M.2 尤其容易
  • 看 SMART。CrystalDiskInfo 里的“已用寿命百分比”和“意外掉电计数”,比“健康状态:良好”这行字有意义

什么时候确实该换盘:写入速度掉到机械硬盘水平、清空空间也回不来;SMART 报备用块大量增长;或者意外掉电之后系统认不到盘。前两种还能拖一拖,第三种别拖。

回到开头那 200GB 素材。前十几秒的 5000MB/s 是 SLC Cache 给的,后面稳定的 800MB/s 才是这块 TLC 的本来面目。挑盘的时候盯住后者,比盯住包装上那行峰值数字有用。

如果你觉得这篇文章不错,有用的话可以点击下面的“赞赏”支持作者,你的支持是我更新的动力(饿饿吃饭)。

  • reward_image1
  • reward_image2
欢迎来到XiaoZou123,这里是一个电脑极客、数码爱好者网站。我平时喜欢关注数码新闻,研究计算机技术。如果你看我头像觉得我是二次元,那我其实还算不上!
最后更新于 2026-10-15