固态硬盘缓存有两种,一种是SLC缓存(看不见),利用TLC模拟SLC来加快写入速度;另一种就是存储极客今天要详细介绍的DRAM缓存(看得见)。
DRAM缓存并不是固态硬盘必须要有的元素,但它的存在对固态硬盘的性能有着重要影响。通常只有高端固态硬盘才会配备DRAM缓存,根据容量的不同有可能还会配备两颗缓存。下图左侧是铠侠RD10背面的DRAM缓存颗粒:
与机械硬盘不同的是,固态硬盘DRAM缓存的主要作用并不是缓冲读写数据:闪存读写速度本身已经很快了,不需要利用内存来进行数据缓存。
Flash ID测试工具可以检测固态硬盘的DRAM缓存容量以及运行频率。铠侠RD10 1000GB的DRAM缓存容量为1024MB(1GB),运行频率DDR4-1600。
通过AIDA64 Cache&Memory Benchmark可以对DDR4-1600的带宽有个大致的了解。由于PCIE带宽限制的存在,以及断电数据丢失的风险,固态硬盘不会大量使用DRAM作为写入缓存,而闪存的读取速度基本没有瓶颈,所以也无需DRAM进行缓存。
尽管名为"缓存",固态硬盘上的DRAM芯片却不直接缓存数据,其中存储的主要是名为"FTL"的闪存映射表,表达闪存单元物理地址同文件系统逻辑地址之间的关系。
铠侠的前身东芝存储在上世纪80年代发明的NAND闪存,具有写入前需要先擦除、擦除同读写单位不同等特点。最小读取和写入单位是Page页(当前BiCS 3D闪存中一个Page的大小为16KB)、最小擦除单位是Block块(当前BiCS 3D闪存中一个Block通常包含超过1000个Page)。
如果不设置FTL闪存映射表进行管理,固态硬盘势必不能同传统机械硬盘一样直接使用。所有固态硬盘都有FTL映射表,不同之处在于入门型号通常把表的主体放在闪存中,随用随取,效率较低。
而高端固态硬盘会把FTL映射表完整地放入DRAM缓存中,通常需要按照1GB:1MB的比例配置DRAM缓存。铠侠RD10 1000GB就配备了2颗512MB的DRAM缓存,合计1GB。有了DRAM缓存的帮助,固态硬盘的随机存取性能才能得到充分的保障。
目前有一些型号的NVMe固态硬盘为了在节省成本的同时获得"外置DRAM缓存"的名号,选择了不管何种容量都只配备256MB缓存的方式,这种情况下只能直接管理256GB的闪存空间,依然存在一些不足。所以除了观察固态硬盘是否搭载DRAM缓存芯片之外,大家还应通过芯片表面的编号查询它的具体容量,确保买到的是按照1GB:1MB完整配备DRAM缓存的高性能产品。