欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

TLC/QLC硬盘的死结 SSD为什么会掉速?

程序员文章站 2022-05-31 09:18:26
本文转载自,其他媒体转载须经超能网同意。 如今已经是9102年了,装机、升级电脑首选ssd硬盘的理念早就深入人心了,再加上这一年多来nand闪存价格不断下滑,ssd硬...

本文转载自,其他媒体转载须经超能网同意。

如今已经是9102年了,装机、升级电脑首选ssd硬盘的理念早就深入人心了,再加上这一年多来nand闪存价格不断下滑,ssd硬盘价格应声回落,1tb容量的ssd硬盘千元内售价已经是主流,而且还可以买到更高性能的m.2硬盘而非sata硬盘,不怕死的话还可以考虑一些将近5毛/gb的杂牌ssd硬盘,买来当仓库盘还是可以的。回头看看多年不降价的hdd硬盘,机械硬盘市场日薄西山不是没道理的。

TLC/QLC硬盘的死结 SSD为什么会掉速?

但是hdd硬盘逐渐远离桌面、笔记本电脑市场,这就能代表ssd硬盘各种完美了吗?还真不是,如今在大降价的环境下ssd硬盘各种“真香”,但它还是有一个让人糟心的问题——掉速。对于ssd硬盘掉速,长期使用过ssd硬盘的玩家应该有体会(也有人其实没意识到这个问题),今天的超能课堂我们就来谈谈ssd硬盘的掉速问题。

对于ssd硬盘掉速,目前并没有准确的定义,这里我们就按照字面意义上的掉速将其理解为“性能下降”,分析目前可能导致ssd掉速的种种原因及解决方案。

·ssd掉速之slc、mlc、tlc到qlc变迁

闪存类型的升级也是ssd硬盘掉速的原因吗?仔细想想的话还真没错,实际上我们可以说正是闪存类型不断变化才导致了ssd硬盘掉速问题越来越严重,如果我们还在使用slc闪存,那掉速问题早就不是事了,只不过slc闪存硬盘这事别想了,最好的闪存意味着最贵的成本,即便厂商现在还敢把slc闪存当主力,普通消费者也用不起。

TLC/QLC硬盘的死结 SSD为什么会掉速?

从slc、mlc到tlc再到qlc,由于cell单元可以保存的电荷位越来越多,容量在不断增加,相应地成本在下降,但是nand闪存先天的特性就注定了电位越多,控制就越复杂,写入数据的时间就越长,导致性能大幅下滑(主要是写入性能,读取性能还好)。

我们现在看到的tlc、qlc闪存的硬盘性能指标还不错,sata接口的也能达到500mb/s写入速度,m.2接口的视pcie 3.0通道数不同,写入性能可达1gb/s、2gb/s甚至更高,但是这样的性能是施了魔法之后的,是理想情况下的性能。

TLC/QLC硬盘的死结 SSD为什么会掉速?

上图就是英特尔qlc闪存的660p硬盘的实际表现,随着写入数据量的增加,缓存空间用完之后qlc原始性能就暴露无遗了,写入速度就降至100mb/s,这性能没比hdd硬盘快多少了。

·ssd掉速之垃圾回收gc、trim

提到ssd硬盘掉速问题,老玩家可能还会想起来早些年浦科特 在自家m系列高性能ssd硬盘中宣传的不掉速功能,这个卖点当时是吸引了不少ssd用户的,考虑到那时候mlc闪存还是市场主力,ssd硬盘掉速主要是因为当时的主控管理机制问题所致。

TLC/QLC硬盘的死结 SSD为什么会掉速?

具体来说就是ssd的gc垃圾回收以及trim指令问题,如果大家看过我们之前的科普文章,就知道nand闪存特殊之处就在在于写入文件的方式,需要一块一块的删除,由于各种写入、删除操作会在ssd留下杂乱的数据,其中有些是还有用的,有些就是无效的,gc功能启动之后就把有用的数据拷贝到另外的区块,原来存储数据的区域就会被清楚,恢复空盘水平以准备写入新的数据,ssd硬盘的性能也就恢复了。

除了gc垃圾回收机制,微软在windows 7及之后的系统还引入了trim指令,这是基于sata控制器的一个指令,一旦有文件删除或者分区格式化,操作系统就会发trim指令给ssd主控告诉它某处的数据已经删除了,ssd因而知道那些数据是能动那些不能动的,之后就可以进行清空操作以恢复性能了。

gc及trim也能影响ssd硬盘的掉速,不过现在来说这些功能已经变成了ssd的基本功能,操作系统上的支持也不是问题了,因为这两个问题导致ssd掉速的现象少多了。

·ssd掉速之840 evo掉速门

从slc到mlc再到tlc、qlc,不仅闪存的性能在逐渐下降,其实可靠性也是在降低的,反映到物理层就是由于tlc、qlc闪存存储的电荷位更多,控制也更复杂,而随着时间的流逝,电子的活性也会损失的,在tlc闪存刚问世的时候,三星840 evo就出现过长期不用导致性能下降的问题。

TLC/QLC硬盘的死结 SSD为什么会掉速?

840 evo掉速门事件就是说它在读取存储超过数周或者数月的旧文件时,速度严重不如预期,官方指标中840 evo读取速度超过450mb/s,但读取旧文件时速度就低至60mb/s,速度明显下降。

对于这个问题,三星之后也做了调查,表示“借助闪存管理软件算法,ssd通常会随时间校正cell单元的状态,840 evo的读取-重试(read-retry)操作太过激进,导致了整体读取性能的下降。这种情况只会发生在其内部cell单元无数据变化的情况下,如果这个单元的数据随后迁移了或者被覆写了,这就不会有性能下降的问题 。”

最后三星发布了新固件,解决了840 evo掉速的问题。在这个问题上,三星没有承认这是tlc闪存的问题,但在发展初期,tlc闪存从闪存到主控管理都是有些问题的,出现这个问题并不意外。

·ssd掉速之主控过热保护

上面提到的ssd掉速都是围绕闪存而言的,但ssd主控其实也会影响ssd掉速问题,这主要是由于ssd硬盘的过热保护问题引起的,sata硬盘上基本上没这么问题,主要是在高性能m.2硬盘大量上市之后才比较集中的。

TLC/QLC硬盘的死结 SSD为什么会掉速?

ssd主控本质上也是基于arm或者自研架构的cpu,为了提高性能,ssd主控往往也是多核心架构了,三核甚至四核主控不少见,高负载下发热也是个问题。对于高性能pcie、m2接口的ssd硬盘来说,由于空间狭小,发热集中,主控区域的温度超过90°c甚至上百度都很正常,为了避免高温损坏,ssd硬盘会有温控机制,检测到温度过高就会降频,进而减少发热。

不过降低主控频率,实际上也会降低ssd性能。要想解决因为发热掉速的问题,最常用的手段就是提高散热效果,比如三星在970 pro硬盘的主控设计就使用了更好的封装,整个主控使用了金属外壳封装,提高了导热性能。

TLC/QLC硬盘的死结 SSD为什么会掉速?

当然,更直接的手段还是加装散热片,所以大家可以看到各种m.2硬盘都开始流行散热马甲了,影驰之前还推出了铁甲战将m.2硬盘,使用了厚度惊人的散热片,虽然样子难看了点,但是效果杠杠滴。

除了上面介绍的这些掉速原因,其实还有一些别的因素会影响ssd性能正常发挥,比如4k没对齐、同步/异步闪存、ahci/ide模式等等,不过这些操作现在来说并不是主要问题了,以前是问题主要还是ssd不普及,很多人不懂设置,而现在windows系统自己就加入了很多ssd优化设置,第三方工具对ssd的支持也到位了。

ssd硬盘的缓存结构:从dram cache到slc cache

以上有关ssd掉速的内容涉及到方方面面,不过对单个ssd硬盘来说,ssd掉速问题没那么复杂,下面我们要进入正题了,先来看看现代ssd硬盘的基本结构:

TLC/QLC硬盘的死结 SSD为什么会掉速?

不论sata还是m.2硬盘,它们的pcb布局都差不多,上面的m.2硬盘从左到右分别是dram缓存、主控及nand闪存,其中主控及nand闪存是必不可少的,dram缓存可以有也可以没有,没有的主要是低端ssd硬盘,减少dram缓存可以降低成本,特别是过去两年中dram内存因为大涨价,低端ssd更加流行无dram缓存的方案,它们会用过hmb主机内存缓存来弥补导致的性能损失。

对于高性能的ssd硬盘,dram缓存不可少,因为就算是ddr3缓存,其带宽也能达到数gb/s甚至十几gb/s,远高于ssd闪存的性能,对提升性能还是很有帮助的,现在三星等公司在高端ssd上已经开始使用ddr4-2133做缓存了。

至于dram缓存容量,容量少的有128mb,256mb、512mb比较常见,随着ssd硬盘越来越大,1gb缓存的也不少见了,一般来说是1tb闪存配1gb  dram缓存,越高越好。

dram缓存是现代ssd硬盘的第一道缓存结构,从硬盘上读取数据首先就是看dram缓存中有没有需要的数据,如果有,那就先用这里的,所以速度会很快,如果缓存中没有再去nand闪存中寻找,速度就是nand闪存的了,相对来说慢很多。

总的来说,dram缓存对ssd硬盘来说是锦上添花的,从dram缓存到nand闪存也是存在掉速的,不过通常这种调速大家是感受不出来的,毕竟缓存容量还是太小了,很容易就超出。

ssd硬盘大部分情况下还是要依赖nand闪存自身性能的,但我们都知道从slc到mlc再到tlc及现在刚刚兴起的qlc闪存,写入性能是不断下降的,原始的tlc、qlc闪存性能非常难看,不加修饰的话qlc闪存写入性能可能都没有100mb/s,hdd硬盘都比它快不是吹的。

TLC/QLC硬盘的死结 SSD为什么会掉速?

但实际发售的tlc及qlc闪存硬盘中,不论sata还是m.2接口的,性能都很强大,三星970  evo这样的产品中250gb版标称写入性能可达1500mb/s,但它就是使用了写入加速(write  acceleration)技术之后的性能,实际性能大约是300mb/s,中间差了四倍性能。

ssd写入加速技术是个通用称呼,常见的方案是slc cache(slc缓存),它的意义就是字面意思——用slc当缓存提速,因为slc闪存是性能最好的。

TLC/QLC硬盘的死结 SSD为什么会掉速?

在mlc闪存时代,slc缓存技术还不是必要的,三星970 pro都没有使用这样的技术,而970 evo就有,但slc缓存也不是没有代价的,因为slc只能存储1位数据,tlc是3位数据,qlc是4位数据,在tlc/qlc闪存上使用slc缓存意味着是牺牲容量换取性能,这是一个魔鬼交换,说的难听点就是你选择x味的巧克力还是巧克力味的x一样,都不是最好的选择,但不得不选。

用slc缓存可以提升ssd的写入速度,让它看起来很nb,但是这意味着要损失一部分空间,具体多大要看厂商选择的方案,如果全盘方案的话就意味着只有1/3甚至1/4的容量可用。

TLC/QLC硬盘的死结 SSD为什么会掉速?
用slc缓存就好比过山车

更关键的是,即便用了slc缓存,一旦写入数据超过了缓存容量,ssd性能还得现原形,这个时候就是ssd硬盘掉速了,因为超过缓存加速空间之后就不得不使用原始tlc/qlc性能,这个时候会很难看,写入速度100mb/s左右很正常。

当然,slc缓存带来的额外好处也不是没有,那就是意外断电时损失更小,毕竟slc是存储1位数据的。

具体的每家ssd厂商中,slc cache技术有不同的叫法,三星叫做turbowrite,sandisk叫做ncache,美光有dynamic write acceleration动态缓存加速技术。这些技术实际上也是分为不同类型的,有全盘slc cahce的,也有部分空间做缓存的,其中全盘模拟效果最好,但对空间浪费是最大的,所以现在slc cache技术普遍是划出部分空间,具体选择多少空间是厂商综合考虑的,10%以下可以,20%也可以。

TLC/QLC硬盘的死结 SSD为什么会掉速?

另外,不论全盘还是部分空间模拟,实际上还有动态及静态slc cache之分,这两种技术其实也是各有优劣,美光的dwa就是动态写入缓存加速技术,它的好处就是在用户用了不同容量之后都可以保持较好的加速性能。

TLC/QLC硬盘的死结 SSD为什么会掉速?

总之,在slc缓存上各大厂商有自己的选择,缓存空间、缓存分配、加速策略都有可能是不一样的,技术路线没有高下之分,但不论哪种,slc缓存空间用尽之后,ssd的性能都会暴露出应有的水平,那就是tlc/qlc原始性能。

就是这一点,ssd硬盘如果使用的空间越多,那么剩余空白容量就越少,这对缓存加速越不利,所以性能就越低,这也是很多人使用ssd硬盘感觉越用越慢的根源,常说的掉速就是这么来的。

对于ssd掉速问题,除了特定问题导致的之外,如果是因为缓存用尽而掉速,那还真没什么好办法,除非不怕倒腾数据的麻烦,经常把ssd硬盘安全擦除一下。

如果对掉速问题很介意,现在的选择只有购买mlc硬盘或者购买大容量ssd,容量不低于1tb,越大越好。