在半年以前,很多NVMe固态硬盘用户都记得一条安装完系统之后必做的优化:打开设备管理器,在NVMe固态硬盘中勾选“关闭设备上的Windows写入高速缓存缓冲区刷新”。这句话特别拗口,缓存(Cache)是什么?缓冲(Buffer)又是什么?
除了上图中的疑惑,平时我们谈到固态硬盘的SLC缓存以及DRAM缓存,也有很多读者朋友疑惑不解。严格来说,有很多应该叫缓冲的地方被误称为缓存。这些概念的混淆就在今天解开吧!
什么是缓存?
缓存是为了弥补不同硬件设备之间的速度鸿沟而引入的中间层,它的目的主要是为了加快访问速度。比如CPU-Z软件中我们查看CPU有几层缓存,每一层缓存的容量有多大。一级缓存最小,但它的速度最快,三级缓存最大,但速度偏慢。在CPU缓存之下就是主内存DRAM了,速度比三级缓存更慢。
大家知道,无论是机械硬盘还是固态硬盘,它的速度跟DRAM内存相比又要慢出很多。所以Windows操作系统自带了一套缓存体系,将剩余内存空间用于缓存从硬盘读写的数据。
在任务管理器-性能-内存中可以看到。已缓存的内容包含了预读的数据,也包括刚刚用过,未来有可能重复用到的数据。正是因为Windows已经自带了内存缓存体系,所以有些固态硬盘厂商推出的“内存加速程序”,譬如RAP*D Mode、Pl*xTurbo、Moment*m Cache,其实都是糊弄小白的障眼法,重复性的缓存并不能起到真正的提速效果。
为了解决内存和硬盘之间的速度差,所有硬盘都搭载了写入缓存,它是集成在硬盘上的一小块内存区域,用于在接收写入数据,硬盘可以直接回报写入完成,然后稍后完成数据实际写入到存储媒介(机械硬盘的盘片或固态硬盘的闪存单元)的过程。
在TLC固态硬盘内部,还存在一套应对SATA接口与闪存间速度差异的缓存——SLC Cahce。根据型号的不同,固态硬盘的SLC Cache容量不尽相同,但作用都是一样的:提升固态硬盘的爆发写入速度。东芝TR200 240G的SLC缓存容量约有3.5GB。
什么是缓冲?
现实中“缓冲”的出现频率要比“缓存”低很多。在设备管理器的网卡设置当中,可以看到接收缓冲与发送缓冲。缓冲的作用是平衡速度、流量整形,将大量零碎存取请求整合成平稳连续、较大规模的一次存取操作,从而提高处理效率。
接下来我们回归正题,硬盘上的缓存和缓冲到底是什么?
机械硬盘时代,由于盘片读取效能太差,需要有DRAM来承担缓存的作用,利用Read ahead将程序请求读取范围之外的一点点数据提前加载到DRAM芯片当中,希望靠“蒙对下一次读取请求”的方式来提高性能。所以机械硬盘时代更大的缓冲容量有机会带来更高的性能。
东芝在1987年发明了NAND闪存,并在多年之后带来了固态硬盘的问世。由于闪存的读取速度非常快,Read ahead已经不能提供收益,所以固态硬盘的DRAM芯片中存储的并不是预读的数据,而是用于管理闪存逻辑-物理地址映射表的元数据。此时DRAM芯片的容量已经不再跟性能直接挂勾。
下图是东芝TR200固态硬盘拆解图。TR200是东芝推出的DRAM less方案3D闪存固态硬盘,也就是说TR200是没有DRAM芯片的。它的闪存映射表结构经过了优化,能够直接存储在闪存以及主控内集成的小容量SRAM当中。
尽管没有DRAM芯片,但是TR200的Toshiba TC58NC1010GSB主控依然具备SRAM来完成缓冲的作用。发送到TR200的随机写入请求会在SRAM当中进行整合排队,比如将几个字节的写入合并成至少一个闪存Page页大小(通常为16KB)的数据,然后写入到闪存当中。由于有闪存映射表的存在,对于电脑主机而言,这些写在一处(互相临近位置)的数据在LBA逻辑地址上有可能还是天各一方的随机分散状态。
总结来说,固态硬盘当中既有缓存(SLC Cache)机制,也有缓冲(Buffer)机制,前者主要是为了提升爆发写入速度,后者则是为了降低随机写入的闪存写入放大率,提升随机写入的处理效率和响应速度,二者相辅相成,共同提升了固态硬盘的性能表现。
免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。