SLC缓存什么鬼?TLC评测造假要持续多久

2016.5.5来源:中关村在线

TLC的廉价真的将SSD引入了全面普及的高速公路上,谈到TLC我们更多的理解是TLC的P/E(Program/Erase Count)是否经得起长时间的数据写入,但是这又是一个无解的案例,首先随着NAND Flash工艺的提升,NAND中存储数据的Cell(基本存储单元)栅极上的氧化层化学键更难控制,导致P/E次数随着工艺的提升而缩减,TLC NAND的P/E次数约为1000。

好在随着工艺和技术(3D NAND)的进步,NAND闪存的密度和容量不断提升,而又由于SSD的读写原理为均衡磨损,这意味着TLC NAND可以依靠不断增大的容量来减少单个Cell的磨损,以提升产品的使用寿命,据此原理240GB TLC SSD的寿命要比120GB长一倍,而480GB又会比240GB长一倍,所以随着产品容量的提升,TLC SSD的产品寿命似乎得到了很好的解决,毕竟后续SSD的容量会不断提升。

SLCMLC、TLC的数据存储原理

可是TLC SSD还有一个致命的弱点,那就是读写速率慢,但回顾各大SSD厂商给出的官方数据抑或是各大媒体的评测数据,SSD的最大持续速率基本都接近MLC产品,似乎速度也不再是TLC SSD的问题了,但事实真是这样吗?从市售TLC SSD普遍采用了SLC Cache我们就能略窥一二,下面我们将通过几个问题为大家一一解读。

TLC SSD的SLC Cache是个什么鬼?

TLC SSD为了解决NAND Flash读写较慢的问题(后续论证),就为产品配备了SLC Cache,之所以称之为SLC Cache,是因为它并不是真正意义上的SLC NAND Flash,我们知道SLC NAND Flash因为每个Cell只存储1bit数据,所以读写速率全面领先MLC和TLC,TLC SSD里面配备的SLC Cache实际上是在既有的TLC NAND Flash里面划出一部分空间,在其中的每个Cell中只写入1bit的数据,以提升SSD的读写性能。

TLC SSD会依据SSD本身的容量划分一定比例的空间用于实现SLC Cache,不同的SSD厂商算法不同,一部分SSD会选择划定专属空间来充当SLC Cache,而这部分空间只有当SSD实际使用容量超过SSD本身容量减去SLC Cache之差后,就不再承担SLC Cache缓存义务,重新变成TLC区域,这样做的好处是SLC Cache专属区域只有实际使用容量超过临界值时才会被解散,在绝大多数没有达到临界值时,SLC Cache就可以全部参与为SSD读写加速,当然这样做也有坏处的,这块SLC Cache专属区域由于要面临最多数据量的读写,这块区域的P/E将会更快耗尽(SLC也有P/E)。

于是另外一部分SSD就选择了全盘动态划分SLC Cache区域,SLC Cache的大小会随着SSD的实际使用容量而变化,这样SLC Cache的空间虽然无法得到保证,但是由于是均衡磨损,也不会对全盘NAND Flash的P/E过分消耗。

无论是专属SLC Cache还是动态全盘SLC Cache,这些SLC Cache实实在在能够利用模拟的TLC NAND空间加速SSD的读写性能。

SLC Cache是怎么对评测软件作弊的?

要解释SLC Cache如何对评测软件作弊,首先我们还是来看看SLC Cache的工作原理,上面我们已经提到了SLC Cache实际是将TLC空间模拟成SLC进行数据读写以提升SSD的性能。不过SLC Cache既然是缓存区域,容量肯定不会大,TLC SSD会依据产品的容量设置具体的SLC Cache空间大小,以图示这款测试的TLC SSD来说其SLC Cache约为3GB,而实际耗费的TLC区块约为9GB。

SLC Cache也不可能长期将数据存储在其中,这样后续SSD写入的数据就要乖乖的去写TLC NAND区域,很显然SSD厂商不会这样做,这样就失去了SLC Cache加速的作用,于是SLC Cache在数据写入完成后,就会通过算法再将SLC Cache里面的数据重新写入到TLC NAND区域中,并擦除SLC Cache(NAND存储空间必须先擦除后才能再写入数据,不支持OverWrite),而这个重新写入数据的等待时间比较短,毕竟要面对冷不丁的数据写入。

那么评测软件作弊是什么回事儿呢?几乎所有的SSD评测软件在测试SSD时需要向SSD里面写入一定量的测试文件,以AS SSD Benchamrk为例,默认写入数据量为1GB,当然用户也可以手动设置测试写入数据量大小,最大为10GB。

这就是为什么在AS SSD Benchamrk测试过程中都是先测试持续写入的性能,很显然对于SLC Cache大于1GB的TLC SSD(实际TLC SSD SLC Cache空间均大于1GB)这些测试文件就会全部写入到SLC Cache当中,测试的写入性能就相当于测试模拟的SLC空间,这也是为什么我们看到的TLC SSD写入性能和MLC甚至是SLC不相上下的原因。

AS SSD Benchamrk首先进行持续写入性能测试

测试完持续写入性能,AS SSD Benchamrk紧接着就会测试持续读取性能,这个时候由于1GB的测试文件还在SLC Cache当中,读取这1GB文件就相当于也是读取模拟SLC空间。

AS SSD Benchmark接下来的测试项目也是大同小异,只不过读写文件的规则和规格发生了变化。

到这里我们来回忆下曾经的混合机械硬盘,你会发现TLC SSD的加速原理与之相类似,不同的是混合机械硬盘采用了外挂式SLC加速空间,而TLC SSD则是在自身存储空间上模拟SLC,除去性能上的差异,两者的设计优劣一目了然。

混合机械硬盘采用SLC NAND

混合机械硬盘采用了原生SLC NAND,其P/E次数可以达到10000次,而TLC的模拟SLC Cache实际还是基于TLC NAND,其P/E次数只有1000次,差了10倍之多。而且即使混合机械硬盘的SLC NAND挂掉,只不过是去掉了加速效果,实际的HDD存储空间还是可以照常使用,但TLC的SLC Cache就不一样,因为绝大多数写入数据都要使用SLC Cache模拟写入,SLC Cache本来不大的空间以及实际TLC P/E属性很难保证其耐久度。

除了耐久度,TLC SSD的SLC Cache因为要面临频繁的数据写入,而NAND闪存的特性--必须先擦除数据后才能再写入(不支持OverWrite),就需要在数据写入到SLC Cache后迅速的将数据再重新写入到TLC空间中,然后再擦除SLC Cache空间,这样原先被写入到SLC Cache中的数据就很难起到SLC Cache快速读取的功效。一般来说TLC SSD为了让SLC Cache保持命中率状态对写入到其中的数据短暂保存时间只有数秒之多。

这样再来看,你会发现原先SLC Cache缓存空间里面的测试数据读取性能就基本是一种很理想的性能状态,当然你也可以认为这是在作弊,除了读取性能在作弊,如果用户一次要写入大量的数据,则超过SLC Cache空间大小的那部分数据实际上也是得不到加速效果的。

TLC SSD的真实速率又是怎样的呢?

知道了TLC SSD的SLC Cache作弊后,我们再来看看真实的TLC SSD读写性能到底如何?这也是各大SSD厂商纷纷为旗下TLC SSD加入SLC Cache的背后原因。

为了真实的反映TLC SSD的性能,最简单的方法就是将测试数据区块扩大,在AS SSD Benchmark测试中,我们可以选择10GB测试区块大小,这样对于TLC SSD就有很大一部分不会被存储到SLC Cache当中,无论是写入阶段还是读取阶段就是真实的TLC速率。

AS SSD Benchmark 1GB测试块测试成绩

AS SSD Benchmark 10GB测试块测试成绩

上下两图为同一块TLC SSD在AS SSD Benchmark测试中,分别为1GB和10GB测试块大小进行持续读写性能测试的成绩。可以看到无论是写入性能还是读取性能都出现了明显的下滑,特别是写入性能方面直接折半。实际上由于10GB测试块中还有SLC Cache参与其中,所以这还不是纯粹的TLC SSD持续读写性能,真实的读写性能比测试的成绩还要稍低一些。

由于SLC Cache在SSD产品写完数据短时间内并不会将其转换为TLC数据,这个时候我们选择AS SSD Bechmark 10GB块测试,当数据写入超过3GB后(依据上方绿色进度条来判断)迅速终止进行下一次测试(或者测试完后迅速开始下一次测试),这个时候SLC Cache就不会参与到数据读写加速的过程当中,这个时候测试出来的写入成绩就是TLC SSD真实的速率。而读取速率由于实际的测试数据已经写入到TLC NAND当中,不会再转换到SLC Cache中,读取的数据同样能反应真实的TLC读取性能。

测试TLC SSD的真实持续读写性能

使用此方法,测试出的某款TLC SSD持续读写性能就是这样了,读取性能差别还不大,但到了写入性能方面,速率基本差了一倍。

对比上面的HD Tune Pro稳定态写入性能成绩,发现二者惊人的一致,这再一次证明了TLC SSD的实际写入性能实际并没有传统跑分数据那么漂亮。

小结

好了TLC SSD的SLC Cache解析到此告一段落,由于TLC SSD本身较弱的读写性能,SSD厂商于是就选择通过SLC Cache来加速读写性能,这一做法无可厚非,但是首先这些SLC Cache区域来自TLC NAND本身,无形中加大了SSD的磨损,其次SLC Cache由于本身NAND的特性,不支持Overwrite,写入的数据存储时间非常短,一旦SSD进入闲置状态,这些数据就会被清除,很难起到加速的作用。

但是SSD厂商这种投机取巧的做法却很好的蒙骗了一大批的存储测试软件,使得其测出的速率比肩MLC产品,给消费者一种假象。所以看到这儿关于TLCSSD,你是否有了一个理性的认知呢?

SSD -----TLC MLC SLC的更多相关文章

  1. 优盘(U 盘) 采用TLC, MLC, SLC芯片 的区别 与使用寿命

    最近一直在看大家在讨论sandisk,pny,金士顿等大厂都开始用tlc的芯片问题,让大家基本都不敢用U盘存数据了按照之前的擦写参数TLC        1000次MLC       10000次SL ...

  2. 深入解析SSD中MLC与SLC的性能差异

    固态硬盘(Solid State Disk或Solid State Drive),也称作电子硬盘或者固态电子盘,是由控制单元和固态存储单元(DRAM或FLASH芯片)组成的硬盘. 固态硬盘的接口规范和 ...

  3. ssd存储的SLC、MLC、TLC闪存芯片颗粒有什么区别?

    SLC = Single-Level Cell ,即1bit/cell,速度快寿命长,价格贵(约MLC 3倍以上的价格),约10万次擦写寿命: MLC = Multi-Level Cell,即2bit ...

  4. 购买SSD固态硬盘须当心,你知道什么是SLC、 MLC、TLC闪存芯片颗粒吗?

    固态硬盘凭借其存取速率超快等自身优势,被越来越多的电脑爱好者所青睐,并迅速普及到了广大用户的电脑中,因为固态硬盘与传统机械硬盘相比,确实在运行效率等方面有了质的提升,但是亦是美网络小编要提醒大家的是, ...

  5. Nand flash 三种类型SLC,MLC,TLC【转】

    转自:https://blog.csdn.net/fc34235/article/details/79584758 转载自:http://diy.pconline.com.cn/750/7501340 ...

  6. 赞 ( 84 ) 微信好友 新浪微博 QQ空间 180 SSD故事会(14):怕TLC因为你不了解!【转】

    本文转载自:https://diy.pconline.com.cn/750/7501340.html [PConline 杂谈]从前,大家谈TLC色变:如今,TLC攻占SSD半壁江山.是的,这个世界就 ...

  7. 【转】花开正当时,十四款120/128GB SSD横向评测

    原文地址:http://www.expreview.com/19604-all.html SSD横评是最具消费指导意义的评测文章,也是各类热门SSD固态硬盘的决斗疆场.SSD评测在行业内已经有不少网站 ...

  8. SSD固态硬盘的闪存芯片颗粒介绍

    固态硬盘凭借其存取速率超快等自身优势,被越来越多的电脑爱好者所青睐,并迅速普及到了广大用户的电脑中,因为固态硬盘与传统机械硬盘相比,确实在运行效率等方面有了质的提升,这里先了解一些评判固态硬盘优劣的知 ...

  9. 机械硬盘与SSD固态硬盘性能的深度

    从7200转硬盘升级到10000转的迅猛龙,那叫量变.从10000转的迅猛龙升级到SSD,这个叫质变.2者的差距是有些地方相当大,而有些却很接近,主要是难比较. 经常听到有人说:我买2个黑盘组RAID ...

随机推荐

  1. linux平台上面python调用c

    不能免俗,先打印个helloworld出来,c代码的函数 hello.c #include <stdio.h> int helloworld() { printf("hello ...

  2. 把一个string串的所有小写字母转成大写字母的例子来看看看全局函数的使用

    今天写了一个小例子,把字符串里面的所有小写字母全部转换成大写字母http://blog.csdn.net/yasaken/article/details/7303903 1 #include &quo ...

  3. 移动App设计之分层架构+MVC

    http://www.cnblogs.com/Logen/archive/2012/11/08/2760638.html 场景分析:我们知道,一个移动设备的应用大多与网络有关,也就是说,我在移动设备上 ...

  4. 转:char*, char[] ,CString, string的转换

    转:char*, char[] ,CString, string的转换 (一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准 ...

  5. 修改weblogic11g的JDK版本

    1:进入Weblogic域文件夹下面 [wzh@localhost bin]$ pwd/app/wzh/oracle/middleware/user_projects/domains/base_dom ...

  6. 【Java】数据库连接池技术

    JDBC的问题 在程序中,我们经常要建立与数据库的连接,之后再关闭这个连接.我们知道,数据库连接对象的创建是比较消耗系统性能的,这些频繁的操作势必会消耗大量的系统资源.因此我们需要采用更高效的数据库访 ...

  7. JENKINS的远程API调用,然后用PYTHON解析出最新的版本及稳定成功的版本

    这个功能,我觉得在作自动作部署时,是可以派上用处的. 记录一下. import urllib f = urllib.urlopen('http://jenkinsurl/job/job_name/ap ...

  8. C语言嵌入式系统编程修炼之四:屏幕操作

    汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,往往只是需要提供数量有限的汉字供必要的显示功能.例如,一个微波炉的LCD上没有必要提供显示"电子邮件"的功 ...

  9. QT5.1.1中MinGW4.8的环境变量配置

    1.右击“我的电脑”图标,在弹出的菜单上选择“属性(R)”菜单项. 2.选择“高级”选项卡.点击“环境变量”按钮. 3.点击“新建(W)”按钮,新建环境变量:MINGW_HOME,变量值为MinGW的 ...

  10. Unity Kajiya Hair Shader Mod by Normals

    Shader "HairShader" { Properties { _MainTex ("Diffuse (RGB) Alpha (A)", 2D) = &q ...