mlc tlc slc qlc_如何区分缓存和缓冲?解释固态硬盘SLC/DRAM缓存
在固态硬盘界提起"缓存"这个词的时候很容易一头雾水,存储极客简单给大家盘点下:外置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芯片所承担的功能,可以说是一种非常巧妙的方式。
相关文章
- Github团队开发示例(一)
- Github教程(3)
- Github教程(2)
- Github教程(1)
- Github教程(0)
- jenkins配置从git指定分支下载代码,打包部署jar包
- 一台电脑支持2个git账号:gitlab+github
- 资产收集神器-Goby工具
- phpStudy 2016搭建-upload-labs靶场
- Adobe Photoshop 2022(mac+windows全版本都有,包括最新的2023)
- PS 2021 软件安装包+安装教程(mac+windows全版本都有,包括最新的2023)
- 闻道Go语言,6月龄必知必会
- Go语言正/反向代理的姿势
- 你认识的C# foreach语法糖,真的是全部吗?
- PhpStudy 2016搭建-DVWA靶场
- c++——构造函数和析构函数
- 深入浅出学习Linux
- git相关问题解析,你想要的都有?
- Go | 闭包的使用
- linux安装stable diffusion2.0完整教程-还不会安装sd2.0?一篇文章教会你AI绘画