日常杂鱼谈——SLC Cache
Personal Essays
2024-08-30 14:55:051477
![1 飴玉コン@あめうさぎ 2020-12-24 18-08.png](https://image.kungal.com/topic/user_2255/lolicon-1725029683697.webp) *** ## 前言 这篇文章是简单介绍一下关于固态硬盘原理中的`SLC cache`是什么,让杂鱼酱来简单说明一下把 ## 什么是SLC? 在明白什么是SLC cache之前我们要先搞清楚什么是SLC,目前市面上早期的绝大多数固态硬盘(英文名词Solid State Drive简称SSD,下文全部使用SSD简称)目前用来生产SSD的NAND Flash有四种,分别是单层式存储(Single-Level Cell,SLC)、多层式存储(Multi-Level Cell,MLC)、三层式存储(Triple-Level Cell, TLC)、四层式存储(Quad-Level Cell, QLC)。三星厂商会将TLC标注为`3bit-MLC`,MLC标注为`2bit-MLC` | 参数项 | SLC | MLC | TLC | QLC | | :------: | :-------: | :---------: | :------------: | :----------: | | 读取时间 /µs | 20 \~ 25 | 55 \~ 110 | 75 \~ 170 | 120 \~ 200 | | 写入时间 /µs | 50 \~ 100 | 400 \~ 1500 | 800 \~ 2000 | 2000 \~ 3000 | | 擦除时间 /ms | 2 \~ 5 | 5 \~ 10 | 10 \~ 15 | 15 \~ 20 | | 擦写次数 | 100,000 | 15,000 | 3,000 \~ 5,000 | 800 \~ 1,500 | | 比特成本 | 高 | ← | ← | 低 | ![image.png](https://image.kungal.com/topic/user_2255/lolicon-1725029041323.webp) 而SSD的主控芯片则是通过控制不多位数的电压来在上述颗粒中写入数据读取数据 ![image.png](https://image.kungal.com/topic/user_2255/lolicon-1725029047759.webp) 我们从上图看出,在SLC中我们只需要控制两种位数的电压即可,而越往后主控需要在一共Cell上控制的电压位则越多,对主控的压力更大而随之而来的就是延迟和速度更差,现在我们来看消费级SSD的商品界面你会看到一些SSD宣称自己读取速度7450MB/S,写入速度6500MB/S,你仔细看这些商品宣传图你会看到都会有一个不起眼的小字写着:最高速度,在目前大部分的SSD都是TLC颗粒或者QLC颗粒的时候,这些速度是如何跑出来的?——答案就是主控通过将TLC或者QLC颗粒模拟位SLC颗粒,而在SLC cache中可以得到上述最大的速度和最小的延迟 ## SLC缓存 最早的SLC缓存设想可以参见来自2008年美国圣克拉拉闪存峰会上的此PPT演讲https\://files.futurememorystorage.com/proceedings/2008/20080812\_F2A\_Duann.pdf 在此篇PPT中第一次提出了关于SLC缓存,由于当时SLC虽然寿命好速度快但是价格昂贵容量低,而当时MLC虽然寿命比SLC差速度没有SLC好但是价格相对较低容量更大,于是就有了关于能不能在一块硬盘中我们将一部分颗粒使用SLC,另外的部分使用MLC 我们先将数据写入SLC,然后主控在将数据从SLC搬运到MLC中,这样即可以有不错的速度还可以有不错的容量和不错的价格,于是时间来到了现在,绝大部分厂商都沿用了这个思路将SSD主控的策略分为了一下几种SLC缓存策略 ![image.png](https://image.kungal.com/topic/user_2255/lolicon-1725029083906.webp) ### 静态SLC缓存 上述PPT中的方案就是这种固态大小的SLC缓存策略,现在我们常见的产品使用静态SLC策略的例如西数SN750就有着13G的SLC缓存但是这种策略的SLC cache虽然爆发力很强有利于SSD整体的寿命但是其缓存较小出缓后速度会大幅下降跑分不好,而大部分消费者看到如此表现后更是会将此类SSD评为垃圾自然而然厂商就会使用更加激进的策略可变SLC缓存 ### 可变SLC缓存 1. 全盘模拟(动态SLC缓存技术) 常见此策略的厂家比如镁光消费级品牌英睿达T500PRO ![image.png](https://image.kungal.com/topic/user_2255/lolicon-1725029119649.webp) 此是一种非常经典的全盘模拟方案,但是这种调度极为激进并且是拿出SSD的一级预留OP空间也作为SLC缓存跑出来的(就是拿命换的) 而可以用下面的容量换算公式`TLC=3*SLC` 以二进制1TB=1024GB为例 一些1TB硬盘你购买回来看到商品界面标注是1024GB这种但是实际装上系统后在Windows二进制换算下`(1024*1000*1000*1000)/(1024*1024*1024)=954`换算而来,大多数人会告诉你这是因为厂商按照十进制生产硬盘容量但是Windows是按照二进制计算所以会导致上面的差距,但是杂鱼的你以为硬盘厂商不知道Windows是二进制的吗,人家就是严格按照二进制进行生产的,至于为什么要用上面的十进制和二进制的差价换算是应为这少去的70G要被硬盘作为一级预留即OP空间,用于主控回收垃圾整理数据所用,而一些1TB的硬盘标注1000GB相比对上面的1024G的1TB这少去的24G就是被硬盘拿去作为二级预留空间(一般我们会称1024g、2048G、4096G为足容设计) 常见的硬盘容量的OP表格可见尾页 以上面`1024G`足容1TBSSD进行全盘模拟得到的SLC缓存计算就是`954/3=318`,这也就是为什么全盘模拟的盘会在`1/3`处降速的原因,对于大多人来说一般不会一次性写入超过`318G`的大小的文件大多人看到日常使用都不会掉速就感觉这个SSD好厉害,但是这是拿硬盘命换出来的(比如上面的T500pro拿着全部的OP去模拟SLC) 2. 半盘模拟 此方案通常表现为三段式,通常见于国产的`联芸1602`主控的SSD上面,我们还是按照1中的1024G SSD为例,此方案下SLC缓存砍半`318/2=159`,此时硬盘写入会在写完159G后开始降速,之后对于主控来说此时半盘模拟下盘容量其实为`954/2=477,477+159=636`此时在写入达到636G的时候对于主控来说硬盘已经写满需要调用OP空间释放SLC缓存进行垃圾回收此时速度又会再一次降低 ![image.png](https://image.kungal.com/topic/user_2255/lolicon-1725029132930.webp) 虽然这种方案给出的结果跑分难看但是对于闪存的消耗更少更有利于闪存的寿命 3. TurboWrite 此种方案目前就三星海力士两大原厂使用自家的主控会使用此策略,具体原理可以参考三星给出的此说明文档https\://images-eu.ssl-images-amazon.com/images/I/914ckzwNMpS.pdf 下面简单总结一下就是此策略是在硬盘最底层有一定大小的固定SLC缓存,主控根据硬盘可用容量动态调整额外的SLC缓存,在硬盘写入远超质保寿命后主控自动关闭动态SLC机制只预留一部分固定SLC缓存区域,这种机制在提升性能的同时能极大地平衡速度于寿命但是此种方案对于固件要求极高成本更大,并且在脏盘或者满盘情况下主控对SLC触发不积极容易导致硬盘失缓进入TLC直写速度(比如海力士P41失缓,三星980pro失缓) *** 常见硬盘容量OP占比 | 实际容量 | 用户容量 | 预留空间 % | 应用类别 | | :----- | :----- | :----- | :------ | | 64GB | 60GB | 7% | 读取密集型 | | 96GB | 90GB | 7% | 读取密集型 | | 128GB | 120GB | 7% | 读取密集型 | | 128GB | 100GB | 28% | 更高写入密集型 | | 256GB | 240GB | 7% | 读取密集型 | | 256GB | 200GB | 28% | 更高写入密集型 | | 512GB | 480GB | 7% | 读取密集型 | | 512GB | 400GB | 28% | 更高写入密集型 | | 1024GB | 960GB | 7% | 读取密集型 | | 1024GB | 800GB | 28% | 更高写入密集型 | | 2048GB | 1800GB | 14% | 读取密集型 | | 2048GB | 1600GB | 28% | 更高写入密集型 | *** 简单业余小总结,如果错误请指出哦\~\~杂鱼❤️\~\~\~
Topic status:Normal
3003401
杂鱼猫猫\~ ![](https://image.kungal.com/topic/user_2/%E9%B2%B2-1725011257948.webp) 喜欢猫猫的文章,好多图!
2024-08-30 15:43:18
Comments
诺瓦最可爱了 Commented to 鲲
鲲 Commented to 诺瓦最可爱了
1477
杂鱼kun!速速艾草! ![in\_bcaidc\_by\_naidrawbot\_agadnawaaldg4vc.png](https://image.kungal.com/topic/user_2255/lolicon-1725034073408.webp)
2024-08-30 16:08:01
2182
省流,有没有广告位招租
2024-08-31 09:21:25
Comments
鲲 Commented to 尚默清隆
这是杂鱼老师哦,要喊杂鱼姐姐,不是广告哦
尚默清隆 Commented to 鲲
我的意思就是在科普里面要不要混广告,毕竟事实上哪怕真的有专业知识在挑选固态硬盘时还是会犯愁
鲲 Commented to 尚默清隆
应该只是举例子,不是广告哦
Misuzu Commented to 尚默清隆
个人觉得这些盘都是非常常见的盘好比难道我说一个可口可乐也算是给可口可乐打广告吗?稍微去买SSD你看商品前几列都是这种消费者都知道的,不知道你是怎么觉得这种都算广告,如果我说厂商用什么东西说了具体厂商也算广告感觉可以没必要说了,
Misuzu Commented to 尚默清隆
我文章里面就提到了三个盘一个主控型号,主控型号有必要打广告吗,剩下三个是三星海力士镁光三家原厂的旗舰你觉得需要我来打广告》要买盘的人不知道这些盘?文章提到他们只是他们本身就是这些策略的经典例子我说出来也算是打广告了?不太理解你是怎么想的,恶意揣测别人非常让人寒心
尚默清隆 Commented to Misuzu
我的意思还是对于轻度,甚至是单纯的懒狗来说,我只是希望能够有一个最简单的省流看看有没有值得推荐的品牌,这个广告就好像我问别人有没有飞机杯推荐一样,平时问别人也是一样的道理,如果可以的话可以直接放在开头笔者本人用的设备,这样哪怕误解成了广告,放在开头也不会引发反感