DRAM缓存是SSD当中除主控和闪存以外的第三个重要部件,借着龟甲T评测的机会,PCEVA评测室深入探索了DRAM缓存的作用和影响。龟甲T使用了群联深度定制的PS-E1S方案,深度到什么程度呢?除了主控上的ArmorLOGO和专属固件版本之外,还率先在E1S方案中应用了特殊的DRAM搭配方式。
T的缓存搭配方式:根据DRAM缓存的有无,可以简单地将固态硬盘分成有缓存和无缓存两种。而龟甲T虽然有缓存,但并不是按照传统的1GB:1MB比例进行配置,而是按4GB:1MB或GB:1MB进行配置。
龟甲T的最大容量达到了4TB,采用相对较小的DRAM缓存可以节省一定的硬件成本。下文中测试的是配备56MB缓存的龟甲T1TB型号。由于1TB型号很快会更换BiCS4闪存,所以产品评测等日后新样品再进行,今天只讨论DRAM缓存和FTL算法,这部分内容预计不会发生变化。
从性能上说不足容的缓存肯定会有所影响,但相比无缓存方案又有明显的优势:Windows的HMB功能目前只能分配最多64MB共享缓存给NVMeSSD,并且数据通信需要通过PCIe界面,带来额外的延迟。
T1TB中的56MB缓存虽然也有需要同NAND中完整FTL表进行交换的需求,但这种交换是在固态硬盘内部完成,不仅可用容量比HMB大,存取效率也更高。
以上介绍了龟甲T的DRAM缓存的配备情况。首先声明,本文不是为了向大家洗脑小缓存设计是如何比其他类型方案“更优秀”的,也不会用“四两拨千斤”这种枪文惯用套路,只是从原理和技术上进行探索,请放心食用。
以下的内容主要研究T1TB中的56MBDRAM缓存能管理多大范围的NAND闪存,在DRAM需要从闪存中交换FTL片段时,效率如何。
固态硬盘的FTL设计:由于相关的固件算法属于商业机密,小编并不能直接获取到DRAM缓存管理闪存容量的范围,只能通过各种测试手段去摸索。喜欢探索的朋友可以跟随小编一同透过现象看本质,若耐心不足也可以直接跳转到文末看结果。
常规的有缓存SSD会按照1GB:1MB的比例配备DRAM缓存,这个比例是根据Page映射的需求得来的。Page映射需要在FTL映射表里维护每一个闪存Page页物理地址所对应的逻辑地址,优势是性能强,缺点也很明显:SSD容量越大,需要的DRAM缓存容量也水涨船高。
举个不是特别恰当的例子:“狂牛版”显卡,大显存并不能带来与之相称的性能。对于一块硬盘来说,它配备的DRAM容量虽然是工作所需的,但并不能直接为用户所用,对于不追求最极致性能的普通玩家来说,多少是有些可惜的。
FTL采用Page映射高效但需要使用大量DRAM缓存空间,如若采用Block映射则只需很小的内存空间,但会带来糟糕的随机读写性能以及难以承受的写放大水平。介于二者之间的混合FTL是当前广泛被研究的技术方向。下面是一个Hybrid混合FTL闪存映射表示意图,包括一个使用Page映射的“小表”和一个使用Block映射的“完整表”。混合FTL的目标就是既能降低DRAM缓存容量需求,也能保障热数据存取性能。
上图其实只是一个网友的设想,无法同具体制造商产生关联。还是那句话,固件是SSD设计的关键,没有厂商会分享这部分机密内容。我们也无法得到确切的算法,只能从外部探索它可能的机制。
测试思路和过程:DRAM缓存的作用是存储FTL闪存映射表,这张“表”如果不放在高速的DRAM缓存中,而是存储在相对较慢的NAND闪存里的话,SSD的随机读取速度就会受到影响。在这里我们通过4KQD1随机读取的速度就能判断出DRAM缓存能直接管理的范围:随着测试范围的增大,一旦速度发生下滑就说明56MBDRAM缓存里没有相关的闪存映射表数据,需要和存储在NAND闪存中的完整FTL大表进行交换了。
测试工具:IOMeter
在请出IOMeter之前,我们还有一个问题需要解决:龟甲T和之前我们测试过的很多高端SSD一样,具备“持久SLC缓存”机制。简单来说就是它的SLC缓存并不会在空闲后全部释放,而是故意保留一部分刚写入的数据,即便你关机重开,它依然是以SLC状态存在于SSD当中,这部分数据的随机和顺序读取速度都要比TLC状态的数据更快一些。
SLC缓存相关的复习链接: