2026/10/5 15:50:44

SSD缓存真相:独立DRAM与HMB技术如何影响性能与选型

SSD缓存真相:独立DRAM与HMB技术如何影响性能与选型 玩固态硬盘这些年经常有人问我同样标称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-lessHMB主机内存中低依赖主机管理系统中主流消费级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-lessSATA盘比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不识别三星固态硬盘的排查思路“群晖925NAS不识别三星固态硬盘”这个问题我在群里见过不少次。首先要分清不识别在哪里是插入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-10001000是用户UID。当分区是根分区时系统会在根目录创建这个隐藏目录当第二块数据盘以ext4、xfs格式挂载到/data时系统也需要在挂载点根目录创建.Trash-1000。如果文件系统是只读挂载、或者当前用户没有写权限、或者磁盘上残留了Windows回收站目录都会导致创建失败。排查步骤很直接用mount | grep 挂载点检查挂载选项看看有没有ro标志若有则重新以rw挂载。用ls -ld 挂载点查看目录所有权必要时用chown改成当前用户。手动创建.Trash-1000目录并设置正确权限。如果数据盘是NTFS或exFATLinux下的回收站支持不完整建议格式化成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 PS3111S11是典型的无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工具可能显示是否有DRAMNVMe盘用一些工具看“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解码的老主板上就明显掉速。所以真的要根据平台来决定“该不该省这个钱”而不是只看单盘跑分。缓存方案决定的是下限平台兼容性决定你最后能摸到多高的上限。