☰
SSD缓存真相:独立DRAM与HMB技术如何影响性能与选型
2026/10/5 15:50:32 网站建设 项目流程

玩固态硬盘这些年,经常有人问我:同样标称500GB,为什么有的盘贵几十块?除了品牌溢价,很大一部分差别就在有没有独立DRAM缓存,以及支不支持HMB技术。这两个词在商品页上不太起眼,却直接决定了你在连续拷贝、随机小文件读写、甚至掉电以后能跑出什么表现。这篇文章我打算把SSD里的DRAM缓存、HMB技术彻底聊透,包括它们到底怎么工作、有多大价值、怎么从参数和工具上识别,以及在不同平台(老电脑、NAS、国产OS)上怎么选不踩坑。我会少讲空话,多讲实际操作中会碰到的现象和判断方法,适合正在挑盘装机、想搞清楚为什么有的SSD掉速、或者手里有老设备想升级的朋友看。

1. 为什么SSD离不开“缓存”:从闪存的脾气说起

1.1 闪存的先天脾气:先擦后写、按页读写

NAND闪存不是硬盘那种“直接覆盖”的介质。它的最小读写单位是页(Page),最小擦除单位是块(Block),一个块里通常包含128到数百个页。你想要往同一位置写新数据,不能像机械硬盘那样直接覆盖,而是必须先把这个页所在的整个块擦除干净,才能写入。这就意味着任何修改都要走“读出来-改掉-写到新位置-标记旧页失效”这条路,等到垃圾回收(GC)再把无效页所在的块整块回收。

听起来有点绕,但理解这一点是理解SSD缓存的第一步。机械硬盘可以随机覆盖,爱写哪儿写哪儿;闪存不行。操作系统发出一个逻辑读或写请求,主控必须知道这个逻辑地址对应的物理闪存位置在哪儿。没有这张对应关系表,闪存盘根本没法识别数据,所以每块SSD内部都有一张FTL映射表,记录逻辑块地址到物理页地址的映射。

主控干的所有活,本质上都在跟这张表打交道:读数据要查表,写数据要改表,垃圾回收搬数据也要改表。闪存不能覆盖的缺陷,就是靠这张表兜底的。映射表更新非常频繁,尤其是随机小写入时,每写一笔都可能要更新一个或多个映射项。

所以问题来了:这张表放在哪里?放到NAND闪存里,就是无DRAM方案;放到板载独立DRAM里,就是带缓存方案;而HMB技术,是把这张表放到主机内存里。三种方案接口一样,但性能曲线完全不同。

1.2 映射表的“存放位置”决定了SSD的血统

SSD里几乎所有IO都要访问映射表。如果映射表放在NAND闪存上,每次查表都要发起一次NAND读操作,而NAND读取本身就有几十到上百微秒的延迟。改表更麻烦,得先把映射表所在的页读出来,修改,再写到一个空闲页,然后把旧页标记为失效。你本来只想写一个4KB的数据,结果为了维护映射表,又多了一次“读-改-写”闪存操作,写放大立刻上去了。

随机写入在这种方案下很难看。早年的低端无DRAM盘,Windows里跑4K随机写入,速度能掉到几MB/s,比U盘强不了多少。厂商为了补救,在主控里塞了一块很小的SRAM,把最近用过的映射条目缓存下来。命中时不用去NAND查全表,但这个SRAM容量只有KB级别,跟动辄几百MB的独立DRAM没法比,缓存命中率有限。主控只能靠算法决定“哪些映射项留在SRAM里”,这就是无DRAM盘掉速的关键原因。

独立DRAM方案就简单粗暴得多:把完整映射表放在板载DRAM里,查表、改表都是纳秒级随机访问,主控再配合小容量SRAM做热表缓存,性能自然稳定。DRAM“缓存”这个叫法其实不太精确,因为它更像是主控的随身穿衣镜,核心任务是存映射表,而不是单纯存用户数据。但对消费者来说,叫它缓存也没毛病,它确实承担了大量缓冲工作。

1.3 缓存方案的本质区别:独立DRAM vs 无DRAM

我用一个类比帮你建立直觉:把NAND比作一个仓库,映射表就是库存清单。独立DRAM方案是仓库管理员手里一直抱着完整清单,查得飞快;无DRAM方案是清单被放在仓库深处的文件柜里,管理员每次查单都要跑进仓库翻文件柜,平时只能靠口袋里几张便签记录最近的信息;HMB方案则是管理员把清单放在隔壁办公室的电脑里,通过网络共享访问,速度快但依赖邻居的电脑一直开机。

三种方案的成本、性能、掉电特征差异,我用一张表总结:

方案映射表位置随机访问延迟掉电风险成本典型场景
独立DRAMSSD板载DRAM最低需掉电保护电路高中高端/企业级
DRAM-less无HMBNAND + 主控SRAM高掉电后需重建映射低低端消费级
DRAM-less+HMB主机内存中低依赖主机管理系统中主流消费级NVMe

注意,表格里的“掉电风险”指的是因为易失性缓存丢失导致映射表损坏的概率,实际还得看固件的保护策略,不能绝对化。带DRAM的盘如果没做掉电保护,断电后照样可能坏表;无DRAM盘经常折腾断电,也可能把NAND里的索引结构写烂。缓存方案只是其中一个变量,不是全部。

2. DRAM缓存在SSD里究竟干了什么

2.1 头号任务:存放FTL映射表

独立DRAM并不是用来“罩”用户数据的,它的第一使命是让FTL映射表常驻在最快的内存里。映射表大小受SSD容量、映射粒度、页大小共同影响。以512GB容量、4KB逻辑页粒度粗略估算:逻辑页数量大约是512GB除以4KB,也就是1.28亿个表项;每个表项至少要记录物理页地址和状态标记,通常占4到8字节,算下来就是512MB到1GB。这就是为什么很多大容量盘会配512MB甚至1GB的独立DRAM,并不是厂商堆料,而是真的需要空间放表。

当然,现代主控有压缩表项、稀疏表、按需加载这些手段,实际表大小会小一些,1TB盘配256MB独立DRAM也很常见。但整体上,大容量盘配更大的DRAM是合理的,只是不能只看缓存容量倒推性能。

如果映射表频繁变动,DRAM就是主控的“工作台”。主控在掉电前必须确保DRAM里最新映射信息写回NAND,否则下次上电拿着旧表找物理块,轻则数据错乱,重则整盘不识别。这也是为什么带DRAM的盘对掉电保护要求比无DRAM盘更高。

2.2 第二任务:写缓存与垃圾回收缓冲

映射表是DRAM的“主业”,剩余空间则可以当数据缓冲区。比如你连续写一个大文件,主控先把数据分块缓存进DRAM,凑够好几个闪存页再一次性写入,减少闪存写入次数。随机写入场景更明显:大量4KB小碎写在DRAM里先合并、排序,再以连续大块的形式落到NAND,写放大和延迟抖动都能被压下去。

无DRAM盘没有这个缓冲区,只能靠SLC Cache来吸收随机写。SLC Cache本质上是把TLC/QLC闪存模拟成SLC的高速模式,容量有限,一旦写满,后续写入就直接以TLC甚至QLC原始模式进行,速度会明显下降。很多无DRAM盘跑完一轮全盘写入后,持续写入速度拉胯,既是SLC Cache耗尽的锅,也有映射表频繁更新的锅。

垃圾回收缓冲也是DRAM的重要任务。SSD后台整理无效块时,需要把有效数据临时搬来搬去,还要同步修改映射表。如果GC过程没有缓冲空间,那么后台搬运就会频繁打断前台IO,表现为随机写入时延迟特别不稳定。独立DRAM能让GC做得更“隐形”,对数据库、虚拟机这类对延迟敏感的场景很关键。

2.3 大缓存≠快:容量、性能与固件的平衡

每次看到有人吹“4GB DRAM”,我都想说一句:先看主控有没有能力用起来。DRAM容量只要放得下映射表,余量再多也只是缓冲区。同一颗主控,1TB盘配512MB和2TB盘配1GB,前者不比后者慢;真正拉开随机性能差距的是固件算法:映射表压缩率、GC触发策略、SLC Cache调度、多通道交错方式等。

有些产品喜欢拿“超大缓存”当卖点,但这些DRAM很可能是从服务器拆机颗粒里挑的,兼容性和耐用性都存疑。放电保护、温度补偿做得怎么样才是更值得关注的。我买盘的习惯是:先看主控方案和拆解评测,再看DRAM容量,而不是反过来。DRAM容量是“充分条件”之一,不是“充分保证”。

另外,独立DRAM也不是越高档就越好。有些低端主控虽然挂了DRAM,但固件调度稀烂,表现还不如一线无DRAM盘。所以买个“带DRAM”的杂牌盘,不如买个“无DRAM但固件成熟”的知名品牌盘。缓存只是底盘,固件才是灵魂。

2.4 掉电保护为什么和DRAM绑定

DRAM是易失性存储,断电就会丢数据。SSD运行过程中,DRAM里最新的映射表很可能比NAND里的旧表新出几毫秒甚至几微秒。如果突然断电,这些新信息来不及写回NAND,下次通电后主控拿着旧表访问闪存,就会找错物理位置,导致文件系统损坏、分区表丢失,甚至整盘无法识别。

于是正规的带DRAM SSD,主板上会集成钽电容阵列或电解电容阵列,掉电瞬间利用余电把DRAM里最关键的映射信息强制写回NAND。这就是大家常说的“掉电保护电容”。企业级盘要求更严格,任意时刻断电都要保证最后一批数据不丢;消费级有的只保护映射表不保护用户数据,但至少不会掉盘。

这也给了一个判断方法:看到一款带DRAM的盘,如果主板上找不到任何电容,就要谨慎。它可能只是“看似高端”,实际上掉电后越用越容易出现文件系统问题。翻新盘和山寨盘经常在这里缩水。而无DRAM盘因为映射表大部分在NAND里,掉电后需要重新构建映射,不需要依赖大电容做“回写”,但频繁断电一样可能损坏NAND里的索引结构,别以为不带DRAM就随便断电。

3. HMB技术:把缓存借到主机内存里

3.1 HMB的运作方式:PCIe的“共享内存”

HMB全称Host Memory Buffer,是NVMe协议规范里的一个功能。NVMe SSD可以通过PCIe总线和主机共享物理内存:SSD在初始化时向主机申请一小段保留内存,通常是32MB到128MB,最多可以到512MB,然后把FTL映射表放进这段内存,之后通过DMA直接读写。主控查表不再去NAND,而是跨过PCIe到系统内存里读,延迟比NAND低好几个数量级。

这个思路相当聪明,等于“自带干粮”变成了“借粮”。厂商省掉了DRAM颗粒和对应的供电、走线、电容补偿电路,成本降低,尤其适合做大容量无DRAM NVMe盘。要注意,HMB不是随便就能用的,它需要主控固件支持,也需要系统端开启NVMe HMB特性。现代桌面主板和Win10/Win11基本都支持,Linux主流内核也支持,但老平台、某些虚拟机、硬盘盒就不一定了,这时SSD会自动退化成无DRAM模式。

HMB占用的内存由系统在启动时划分,不是SSD私有独占,断电后内存内容消失也不会反噬SSD本体。SSD上电后需要从NAND重新构建映射表,这个过程时间跟容量和闪存速度有关,但整体比“DRAM盘掉电后靠电容回写”要简单一些。它的风险点在于:如果系统内存被其他进程占了,HMB分配不稳定,性能也会波动。

3.2 HMB对性能的提升到底有多少

不少人用同一型号盘做过“开HMB vs 关HMB”的对比,差异非常直观。在Windows下写大量小文件,关掉HMB的无DRAM盘,4K随机写入可能只有几十MB/s,延迟曲线里经常冒出几百毫秒的尖峰;开启HMB后,4K随机写入常常能提升好几倍,延迟也平滑很多。

但我要泼一点冷水:HMB虽好,跟独立DRAM比仍有物理距离的劣势。独立DRAM在SSD内部,走内部总线和主控紧密耦合;HMB要跨过PCIe链路和内存控制器,延迟虽然低,但比板载DRAM还是要高一些。在连续大块写入、高队列深度、或者满盘状态下,HMB盘的热点映射条目可能被踢出内存,需要频繁回NAND查表,性能依然会有波动。绝大多数家用场景,例如游戏加载、系统启动、日常办公,HMB盘和独立DRAM盘的主观感知差别几乎可以忽略;只有持续重度随机写入,比如数据库、虚拟机、视频渲染缓存,才能拉开差距。

还要记住最重要的一点:HMB只存在于NVMe协议,SATA接口不支持。SATA SSD没法用HMB,所以同样是DRAM-less,SATA盘比NVMe盘更吃亏。这也是为什么现在低端SATA盘几乎只敢靠SLC Cache,而NVMe无DRAM盘能靠HMB把随机性能拉回平均水平。

3.3 HMB的硬性条件:平台、接口、驱动

想跑好一块HMB盘,需要确认三件事。第一,物理接口必须是NVMe M.2或PCIe转接卡,SATA和mSATA接口不支持。第二,主板BIOS里“Above 4G Decoding”最好保持开启。这里的原理是HMB需要把主机内存映射到PCIe地址空间,如果老主板没开64位地址分配,很容易出现映射范围被限制,HMB无法正常工作。第三,操作系统驱动要正常。Win10/11的NVMe驱动默认支持,Linux主流内核也支持;但Win7加NVMe补丁那种老环境,很可能支持不了HMB,盘会退化成纯无DRAM。

我自己遇到过一台旧笔记本,装了一块支持HMB的无DRAM NVMe盘,BIOS默认设置下4K读只有几十MB/s。后来进BIOS把Above 4G Decoding打开,Windows下立刻恢复正常。所以遇到这种诡异性能问题,先别急着怪盘,看看BIOS和驱动。

至于系统内存占用,真不用太担心。HMB通常就几十MB,对普通电脑几乎没感知。有些用户试图在BIOS里完全关闭HMB,我建议别这么干,那相当于硬生生把无DRAM盘打回原形,性能损失远超省下的内存。

3.4 HMB与独立DRAM怎么选

选型这件事,先给结论,后面第四节再结合具体场景展开。纯家用、办公、轻度游戏,支持HMB的无DRAM NVMe盘性价比很高,值得选;长时间满载、延迟敏感的用户,例如NAS缓存、视频剪辑、数据库,选带独立DRAM的盘更稳。如果平台太老,或者不支持HMB,就别买无DRAM NVMe盘了,老老实实选带DRAM的SATA盘。理由很简单:SATA协议没有HMB可用,带DRAM的SATA盘通常比无DRAM的NVMe盘更可靠。

不要迷信某个参数,要结合手头设备接口做选择。这个原则不会过时。

4. 实操排查:老电脑、NAS、国产OS里的SSD问题

4.1 2009年老电脑升级SSD的取舍

热搜里有“固态硬盘2009年msg4老式电脑能用吗”,我猜指的是老笔记本或老台式机加的什么硬盘。2009年的电脑大概率只有SATA II接口,甚至有部分还是IDE。升级SSD完全可行,而且体验提升巨大,但有四个坑必须避开。

第一,接口要买对。老电脑如果没有M.2接口,就老老实实买2.5英寸SATA SSD;如果主板有mSATA接口,就买mSATA固态;M.2 NVMe盘在2009年的机器上基本没有安装位置,就算用转接卡插到PCIe,也要看主板能不能从NVMe引导系统,折腾成本太高,不推荐。

第二,SATA II虽然带宽只有3Gbps,但SSD的4K随机性能不受带宽上限影响,开机、加载软件的提升是质变。连续读写会受限在300MB/s左右,但机械硬盘连100MB/s都难,所以老机器换盘后依然会感觉脱胎换骨。

第三,老主板可能在BIOS里默认把SATA模式设为IDE而不是AHCI。SSD最好在AHCI模式下运行,否则性能和TRIM都会受影响。进BIOS把SATA Mode改成AHCI,再装系统或迁移,能避免很多奇怪问题。

第四,挑选时优先选带DRAM的SATA盘。因为SATA盘没有HMB可用,无DRAM的SATA盘随机性能天然吃亏。老电脑本身性能弱,再配一块频繁掉速的盘,体验会打折扣。带DRAM的SATA盘虽然贵几十块,但值得。

4.2 群晖NAS不识别三星固态硬盘的排查思路

“群晖925+NAS不识别三星固态硬盘”这个问题,我在群里见过不少次。首先要分清不识别在哪里:是插入M.2插槽作为NVMe缓存不识别,还是2.5英寸SATA盘在存储池里看不到。这是两种完全不同的情况。

如果是M.2 NVMe缓存不识别,最多见的原因就是群晖的兼容列表很保守。很多型号群晖只认自家或少数品牌的NVMe盘,三星某些型号不在列表里,虽然硬件接口可能兼容,但DSM可能拒绝启用或直接不提示。解决办法是升级DSM到最新版本,部分更新会开放更多兼容;或者优先查官方兼容列表,换用推荐型号。这不是硬盘坏了,也不是HMB或DRAM技术问题。

如果是2.5英寸SATA盘不识别,先检查硬盘初始化状态。三星盘出厂可能有分区表或之前的系统分区,DSM第一次插入需要格式化。在存储管理器里如果能看到物理磁盘但无法创建存储池,一般需要手动清空分区表。如果连物理盘都看不到,尝试换盘位、换电源线数据线,同时关掉硬盘休眠选项。有的NAS对SSD休眠策略兼容不好,会出现频繁掉线。

这里特别提醒一点:群晖的M.2插槽在部分机型上只能做缓存,不能建存储池。很多人以为“识别不到”,其实是这块盘在硬盘管理员里没有入口,要到缓存管理器里看。搞清这一点,再判断是否真的有兼容问题。

4.3 麒麟V10下第二块SSD删除失败的回收站问题

有用户在麒麟V10国产系统上加装第二块SSD作为数据盘,删除文件时提示“无法为...找到或创建回收站目录”。这个问题跟DRAM/HMB没什么直接关系,但确实是SSD使用中很典型的系统层问题,我顺手聊一下排查思路。

回收站本质是被删除文件临时放置的目录,在Linux下一般叫.Trash-1000,1000是用户UID。当分区是根分区时,系统会在根目录创建这个隐藏目录;当第二块数据盘以ext4、xfs格式挂载到/data时,系统也需要在挂载点根目录创建.Trash-1000。如果文件系统是只读挂载、或者当前用户没有写权限、或者磁盘上残留了Windows回收站目录,都会导致创建失败。

排查步骤很直接:

  1. 用mount | grep 挂载点检查挂载选项,看看有没有ro标志,若有则重新以rw挂载。
  2. 用ls -ld 挂载点查看目录所有权,必要时用chown改成当前用户。
  3. 手动创建.Trash-1000目录并设置正确权限。
  4. 如果数据盘是NTFS或exFAT,Linux下的回收站支持不完整,建议格式化成ext4或xfs再挂载。

在国产OS环境下,SSD本身的HMB或DRAM不会导致这种问题,但挂载配置和权限管理偶尔会出错。别一上来就怀疑盘坏了,先进终端看日志。

4.4 开卡量产工具里的DRAM参数:玩转PS3111/AS SSD MP Tool

网上搜“固态硬盘量产工具箱”、“PS3111 SSD MP Tool v2.2.70 SATA S11”、“AS SSD MP Tool v0210”,基本都是冲着开卡修盘去的。开卡就是重新把主控固件、闪存芯片参数、映射表配置等底层信息写入SSD,可以救不识别、清坏块、翻新扩容盘。这个操作有门槛,我不建议新手拿重要数据盘练手,但理解开卡时的DRAM配置逻辑,能帮你判断主控方案。

Phison PS3111(S11)是典型的无DRAM SATA主控。开卡工具里一般没有独立DRAM型号选择,只有SLC Cache大小、闪存通道数、ECC参数等。如果你拆开盘发现主控旁边没有内存颗粒,就不要再纠结“有没有DRAM”,它就是无缓存方案。像SM2258XT这类主控也是类似,如果误挂了DRAM设置,主控根本无法初始化。

反过来,PS3112、SM2262、群联E12这类带DRAM的主控,开卡工具里通常会有“DRAM Config”或“DDR Select”参数,需要选对应颗粒型号或容量。开卡时这个参数一旦选错,固件初始化会失败,表现为盘无响应或者容量识别错误。所以遇到开卡失败,先别慌着怀疑闪存颗粒,检查DRAM设置往往能解决一大半问题。

关于“AS SSD MP Tool v0210”,网上流传的软件名比较乱,它很可能是AS主控或群联某个时期的量产工具,用法没法一概而论。开卡前建议先拆盘看主控型号,到对应的“开卡大合集”里找匹配版本。工具版本不匹配会直接报错,强行刷写还可能把原本好的固件搞坏,普通用户千万别拿唯一的数据盘试。

5. 常见问题速查与避坑心得

5.1 如何快速判断SSD有没有独立DRAM

线下看盘最简单的方法是拆开PCB,在主控旁边找一颗独立的内存芯片,通常标着DDR3、DDR4、LPDDR4或者容量数字,旁边可能还有几个小电容。如果是无外壳的NVMe盘,一眼就能看到;SATA 2.5寸盘的颗粒可能被贴纸盖住,很多PCB上还是能隐约看到封装轮廓。

线上没有拆解图时,靠主控型号判断比较靠谱。厂商在规格表里通常会写“DRAM Cache”或“HMB Support”。如果只写“智能SLC缓存”却对DRAM只字不提,大概率是无DRAM方案。还能用软件识别:SMI主控用Flash ID工具可能显示是否有DRAM;NVMe盘用一些工具看“HMB size”是否非0,如果系统分配了HMB,那说明是无DRAM且支持HMB。注意,有些带DRAM的盘也可能用小部分HMB做扩展,这种情况较少见,别被一两个数据带偏。

还有一个更直接的判断思路:看评测拆解。像CrystalDiskInfo或AIDA64里通常不会直接显示有无DRAM,还是得靠主控型号和拆解图片。别相信商品页里那种“智能缓存”的说法,这个词谁都能蹭。

5.2 常见问题速查表

问题可能原因解决方法
无DRAM NVMe盘4K随机性能偏低系统不支持HMB或未开启检查BIOS Above 4G Decoding、更新NVMe驱动
SATA无DRAM盘大文件拷贝掉速SLC Cache耗尽、映射表在NAND换带DRAM的SATA盘,或降低持续写入压力
带DRAM盘频繁掉盘掉电保护电容老化或散热问题检查电容和盘体温度,必要时返修
HMB会占用系统内存吗会,但一般只有几十MB不建议手动关闭,关闭会导致盘性能下降
虚拟机里NVMe无DRAM盘很慢虚拟化环境不支持HMB使用直通设备,或在宿主机上运行,或选带DRAM盘
老电脑SATA II能上NVMe吗通常不能,除非有主板引导支持直接选SATA SSD,别买M.2 NVMe硬凑
群晖M.2 SSD不识别兼容列表问题或M.2仅缓存模式查兼容列表、升级DSM、到缓存管理器查看
Linux删除文件提示找不到回收站挂载只读、权限不足或分区不支持修改挂载选项、手动创建.Trash-1000

这个表里我最想强调的还是前两行。很多朋友跑完一次“全盘写入测试”就发帖说某盘掉速,其实是没区分SLC Cache和真实NAND写入速度。不同盘对SLC Cache的策略差异很大,掉速不代表盘坏了,要看掉速后的稳定速度。

5.3 我的个人选型建议

到这里,我给一个经过多次装机验证的选择流程。第一步确认设备接口,老机用SATA,新机优先NVMe,不要买错。第二步看主控方案和缓存类型,NVMe优先选支持HMB的无DRAM盘,预算足再上带DRAM的;SATA优先选带DRAM的。第三步看颗粒类型和发热,TLC优先,QLC如果SLC缓存做得极大、且你能接受写满后速度下降,也可以考虑。第四步看用途,系统盘和游戏盘HMB盘足够,NAS缓存、数据库、工作目录上独立DRAM盘,存储服务器直接上企业级。

我个人踩过最典型的一次坑,是给一台老笔记本配了块无DRAM的SATA固态,当时图便宜,结果一开迅雷和多任务就卡,4K写入惨不忍睹。后来换了一块带DRAM的SATA盘,同一台机器瞬间稳定。另一次是给新主机选了无DRAM但支持HMB的NVMe盘,吃鸡加载、批量导出都没问题,但拿到一台没开Above 4G解码的老主板上就明显掉速。所以真的要根据平台来决定“该不该省这个钱”,而不是只看单盘跑分。缓存方案决定的是下限,平台兼容性决定你最后能摸到多高的上限。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询