手机游戏巴士

如何区分缓存和缓冲?解释固态硬盘SLC/DRAM缓存

发表于:2024-05-11 作者:游戏编辑
编辑最后更新 2024年05月11日,在固态硬盘界提起"缓存"这个词的时候很容易一头雾水,存储极客简单给大家盘点下:外置DRAM缓存、SRAM缓存、SLC缓存。显然,这些名词说的并不是一回事儿,承担...

在固态硬盘界提起"缓存"这个词的时候很容易一头雾水,存储极客简单给大家盘点下:外置DRAM缓存、SRAM缓存、SLC缓存。显然,这些名词说的并不是一回事儿,承担的作用也不相同。

有两种东西,都被叫做缓存:Cache和Buffer,前者在港台地区也被称为快取,后者则还有一个缓冲的名字。很多时候Cache和Buffer被混在一起说,也没有权威和统一的区分方式。小编简单地把Cache快取表述成为了加速应用而提前载入到快速存储区的数据,Buffer则是为了提高写入完成速度而设立的数据"暂存区"。

一旦有机会,Buffer的数据会被写入到闪存并清空。而Cache中的数据则有可能长期保存和维护。

DRAM芯片里装了些什么?

固态硬盘工作时,DRAM芯片中既有属于Cache快取的部分,也有属于Buffer缓冲的部分。

跟很多朋友想像的不同,固态硬盘的Cache快取的内容并不是电脑读写的"用户数据",而是固态硬盘为了兼容机械硬盘的工作方式而设立的FTL闪存转换层,简单来说FTL就是为了让固态硬盘能跟现有的操作系统所兼容。

固态硬盘也的确需要数据缓冲,但并不是单纯为了提高写入速度。闪存的最小写入单位是Page页,包括东芝BiCS闪存在内的当前大多数闪存页大小是16KB。在DRAM芯片中凑齐至少16KB数据然后再执行实际向闪存的写入,将零碎写入请求合并的操作使得固态硬盘更高效、更长寿。

SLC缓存是干嘛的?

SLC缓存是MLC、TLC或者QLC固态硬盘利用部分闪存空间模拟SLC的方式工作,以达到提速和延寿的效果。如果按照前文中的定义,SLC缓存的正确叫法应该是SLC缓冲。

为什么固态硬盘一定要有SLC缓冲?

我相信大多数人都认为这个问题的答案是:为了加速写入,尤其是顺序写入速度。其实这只是SLC缓冲的作用之一,毕竟固态硬盘用作移动硬盘的机会还是很低的,系统盘的读写是以随机读写为主。

引入SLC缓冲主要是为了降低闪存的写入难度。TLC闪存的一个单元拥有8种数据状态(表达3比特数据)、QLC闪存的一个单元拥有16种数据状态(表达4个比特数据)。要把数据一次性"刷"到TLC/QLC闪存单元中是比较困难的。模拟SLC可以简单快速的将写入数据先接纳下来,然后利用空闲时间释放到TLC/QLC形态。

当TLC/QLC模拟SLC方式写入时,其擦写次数也会相应提高,虽然不能达到等同SLC的水平,但也无需担心SLC缓冲机制会缩短固态硬盘的寿命。

无(DRAM)缓存的固态硬盘怎么工作?

固态硬盘的DRAM芯片主要是用来存储FTL闪存映射表的,这部分数据可以通过主控内集成小容量SRAM缓存并搭配NAND闪存交换来完成。在固件经过优化之后,无DRAM芯片的固态硬盘也可以发挥出理想的随机读写效能,譬如上图中的东芝TR200固态硬盘,在电脑配置足够的情况下,4K读取可以达到50MB/s以上。

完全没有DRAM缓存的固态硬盘:

TR200虽然没有外置DRAM芯片,但它所用的主控内集成了32MB容量的SRAM缓存。另外一种固态硬盘则是彻底消灭了DRAM芯片,比如东芝BG4就采用了NVMe协议当中的HMB特性,通过驱动程序直接向主机内存申请到一块专用空间,用来实现过去由固态硬盘板载DRAM芯片所承担的功能,可以说是一种非常巧妙的方式。



0