半年前,很多nvme SSD用户想起了一个安装系统后必须做的优化:打开设备管理器,在nvme SSD中检查设备上的windows写缓存缓冲区刷新。这句话特别别扭。什么是缓存?什么是缓冲?

除了上图的疑惑之外,我们通常说的是SSD的slc缓存和dram缓存,很多读者都很不解。严格来说,有很多地方应该叫缓冲区,被误称为缓存。今天就来解决这些概念的困惑吧!

什么是缓存?

缓存是为了桥接不同硬件设备之间的速度差距而引入的中间层,其主要目的是加快访问速度。例如,在cpu-z软件中,我们检查cpu有多少层高速缓存,以及每层高速缓存的容量有多大。一级缓存最小,但速度最快,三级缓存最大,但速度慢。cpu缓存下面是主存dram,比三级缓存慢。

众所周知,无论是机械硬盘还是固态硬盘,其速度都比dram内存慢很多。因此,windows操作系统附带了一个缓存系统,它使用剩余的内存空来缓存从硬盘读取和写入的数据。

可以在任务管理器-性能-内存中看到。缓存的内容包括预读取的数据,以及刚刚使用过并可能在未来重复使用的数据。正是因为windows已经有了自己的内存缓存系统,所以一些固态盘厂商推出的内存加速程序,比如rap*d模式,pl*xturbo,moment*m cache,其实都是睁一只眼闭一只眼的糊弄小白,重复缓存并不能真正加速。

为了解决内存和硬盘的速度差,所有硬盘都配备了写缓存,写缓存是集成在硬盘上的一个小内存区域。硬盘在接收到写数据时,可以直接报告写操作完成,之后再完成将数据实际写入存储介质(机械硬盘的磁盘或者固态硬盘的闪存单元)的过程。

在tlc SSD中,还有一组缓存slc cahce来处理sata接口和闪存的速度差。根据型号不同,SSD的slc缓存容量不同,但作用是一样的:提高SSD的突发写入速度。东芝tr200 240g的slc缓存容量约为3.5gb。

什么是缓冲?

实际上,缓冲区的频率远低于缓存。在设备管理器的网卡设置中,可以看到接收缓冲区和发送缓冲区。缓冲的作用是平衡速度和流量整形,将大量零碎的访问请求整合成一个平滑、连续、大规模的访问操作,从而提高处理效率。

接下来,我们回到正题。硬盘上的缓存和缓冲区是什么?

在机械硬盘时代,由于磁盘读取效率差,需要dram来担当缓存的角色。预读用于将程序请求读取范围之外的一点数据预先加载到dram芯片中,希望通过接收下一个读取请求来提高性能。因此,机械硬盘时代更大的缓冲容量有机会带来更高的性能。

东芝于1987年发明了nand闪存,并在多年后带来了固态硬盘的出现。因为闪存的读取速度非常快,提前读取已经不能提供好处,所以SSD的dram芯片中存储的不是预读取的数据,而是用来管理闪存的逻辑-物理地址映射表的元数据。此时,dram芯片的容量不再与性能直接挂钩。

下图是东芝tr200固态硬盘拆卸图。Tr200是东芝推出的无dram 3d闪存固态硬盘,也就是说tr200没有dram芯片。其闪存映射表结构已经过优化,可以直接存储在闪存和集成在主控中的小容量sram中。

即使没有dram芯片,tr200的东芝tc58nc1010gsb主机仍然有sram来完成缓冲功能。发送到tr200的随机写请求将被集成并在sram中排队,例如,几个字节的写将被合并到闪存的至少一个页面大小(通常为16kb),然后被写入闪存。由于闪存映射表的存在,对于主机来说,写入一个地方(彼此相邻)的数据在lba逻辑地址上可能仍然处于随机分散状态。

[科技界] 解读傻傻分不清的硬盘缓存和缓冲

综上所述,SSD中既有slc缓存机制,也有缓冲机制。前者主要是提高突发写入速度,后者是降低随机写入的闪存写入倍率,提高随机写入的处理效率和响应速度。两种机制相辅相成,共同提高SSD的性能。



郑重声明,在中国it研究中心网站上发表/转载本文,目的在于传递更多信息,并不代表同意其观点或表明其描述。中国信息技术研究中心不对其真实性负责。

标题:[科技界] 解读傻傻分不清的硬盘缓存和缓冲

地址:http://www.heliu2.cn/xw/6197.html