在挑选硬盘的时候,除了容量、接口之外,很多人也会关心缓存容量。缓存作为硬盘比较重要的一项参数,对齐性能有一定的影响,今天芝麻科技网就来聊聊机械硬盘和固态硬盘缓存的作用,对硬盘缓存的作用不太了解的小伙伴,不妨了解下。

机械硬盘的缓存:爆发时可以明显提速
通常来说,机械硬盘的读取和写入速度基本一样。但如果在atto测试中使用较小的测试区块(64k),你会发现读取的速度明显比写入更快,甚至会发生读取400mb/s以上现象:正常是不可能有这么快的。

在机械硬盘中,缓存主要发挥了加速读取的作用。如果一个数据刚刚被读取过,将临近它位置的数据保留在dram缓存中,就有机会被下一次读取命中——直接从dram缓存读出的速度远比从机械盘片读取快的多。
缓存命中意味着性能大幅提升,这就是机械硬盘缓存的主要作用。理论上大缓存的确有助于提升机械硬盘的读取性能,但是提升幅度是非常有限的:它对于最重要的随机读取速度没有帮助。

机械硬盘内部结构

图为m.2固态硬盘结构
大缓存不一定意味着高性能,当前很多采用128m以上大缓存设计的机械硬盘采用了smr叠瓦磁记录技术,增大缓存容量是为了降低smr带来的性能衰减幅度。
[page]
固态硬盘的缓存:照顾写入只是兼职
而固态硬盘就有很大的不同了,首先闪存的读取比写入更快,这是mlc、tlc闪存天生决定的,压根不需要专门为读取做缓存。在atto测试结果中代表读取速度的灰色条总会比代表写入的红色条更长一些:

不过如果将测试区块调小到64kb,你可能会发现不一样的结果:红条长度首次超过了灰条,小于4kb的区块写入速度比读取速度还要快!

出现这种现象,原理也很简单:固态硬盘对小于4kb的区块进行了缓存,将他们凑满4kb或16kb(1个page页的大小)之后再合并写入,造成写入比读取更快的结果。闪存的最小写入单位是page,固态硬盘通常使用4k作为页的逻辑大小,而闪存页的实际大小往往是16kb,只有512字节或1kb、2kb还不够一次写入的最小单位,所以将他们缓存起来合并写入是最明智的。
对小于4kb数据的缓存合并只需要很小的空间,固态硬盘对于dram缓存的需求并不是缓存数据,而是存储对固态硬盘至关重要的ftl闪存映射表:管理逻辑地址与闪存物理地址的映射关系。

随着技术的发展,dram缓存早已不是固态硬盘的必备组件。透过最新nvme协议,固态硬盘可以调用主机内存的一小部分专用空间存储ftl映射表,实现精简增效。

在一些单芯片融合nvme协议固态硬盘中,主控与闪存被封装为一体,而dram缓存则被nvme协议的hmb功能所取代,缓存容量最终成为了历史。

简单来说,机械硬盘(hdd)和固态硬盘(ssd)缓存对硬盘本身的作用大为不相同。
最后值得一提的是,近年来不管是机械硬盘还是固态硬盘,在新版检测软件中都是查不到缓存容量参数选项。比如crystaldiskinfo检测2tb机械硬盘,hdtune中干脆将它的缓存标注为n/a(不存在)。其实,这是ata标准的一个局限,当时设计时只预留到32mb的代码,而现在硬盘的容量全都超过了32mb,因无法识别而不显示。

