固态硬盘的工作原理对于普通用户而言就是一个黑盒,虽然你能够打开它的外壳,却无法从外观去深入了解它的运作原理。为什么不同型号的固态硬盘性能天差地别?为什么同一种硬件方案会有不同的使用效果?
今天笔者就从当前普及的无外置DRAM缓存固态硬盘说起,谈谈不同主控在的固件算法差异,以及由此产生的性能影响。下图是东芝原厂的TR200固态硬盘拆解,它是一个典型的无外置DRAM缓存固态硬盘。
固态硬盘使用的NAND闪存本身性能出众,无需像过去机械硬盘那样利用缓存来提升性能,但却需要维护一张特殊的LUT查找表来工作。传统的固态硬盘使用DRAM缓存芯片来存储这张LUT表,下图红圈内是东芝Q300固态硬盘中的DRAM缓存芯片。
无外置DRAM缓存,通常也被称为无缓存方案,它是指通过固件适应省去了DRAM芯片的固态硬盘解决方案。无外置DRAM缓存并不意味着完全没有缓存,实际上它同样需要LUT表,只是表的结构不同,容量较小并且存储于主控内集成的小容量SRAM当中。由于不需要额外的DRAM芯片,无外置DRAM缓存固态硬盘的成本更低,在处理好性能与成本关系的基础上也能取得更好的性价比。
同一类型的硬件方案会因为具体设计的不同而产生很大差异,下面选择某S、某M的无外置DRAM缓存主控,与东芝TR200中的TC58NC1010GSB主控进行一番性能对比。
测试工具选择Txbench的Advanced Benchmark,通过设定不同的Measurement Size,变换测试的数据范围。无外置DRAM缓存的固态硬盘由于主控内置SRAM容量有限,通常不能高效地随机访问大空间内的数据。
某M主控:主控内SRAM能够覆盖1GB范围,在此范围内的随机寻址能够高效进行,4K读取38.9MB/s,超出之后跌到20MB/s左右。
某S主控的策略(SM2268XT),完全没有优化,效率最低,全程只有20MB/s出头的4K随机读取效能。
东芝TC58NC1010GSB主控的策略,从512MB区间一直到4GB区间,4K随机读取始终保持在40MB/s以上,展示出不俗的主控LUT表效率。
测试范围扩展到32GB范围后性能依旧保持良好水平:
一个没有外置DRAM缓存的主控方案,东芝是如何做到和有DRAM缓存方案效果相媲美的?答案或许要从主控内SRAM的容量以及LUT表的结构说起。对于固态硬盘的固件算法来说,Page Mapping更细化,通常需要1GB:1MB的缓存空间,即480GB固态硬盘通常需要512MB的DRAM缓存容量。相对的,Block Mapping粒度更大,甚至只需4MB左右内存就能管理高达1TB的闪存容量。
通过固件上的优化,结合Block Mapping与Page Maaping算法,优化LUT表结构,就能提升更大范围的随机读写性能表现。尽管没有外置DRAM缓存,TR200依然能够提供240GB到960GB的海量存储空间,并在足够大的寻址范围内保持出色的随机读取效能。固件算法优化和针对闪存颗粒的适配对TR200的性能表现起了重要作用,原厂固态硬盘使用自主研发主控的优势正在于此。