如今已经是9102年了,装机、升级电脑首选SSD硬盘的理念早就深入人心了,再加上这一年多来NAND闪存价格不断下滑,SSD硬盘价格应声回落,1TB容量的SSD硬盘千元内售价已经是主流,而且还可以买到更高性能的M.2硬盘而非SATA硬盘,不怕死的话还可以考虑一些将近5毛/GB的杂牌SSD硬盘,买来当仓库盘还是可以的。回头看看多年不降价的HDD硬盘,机械硬盘市场日薄西山不是没道理的。
但是HDD硬盘逐渐远离桌面、笔记本电脑市场,这就能代表SSD硬盘各种完美了吗?还真不是,如今在大降价的环境下SSD硬盘各种“真香”,但它还是有一个让人糟心的问题——掉速。对于SSD硬盘掉速,长期使用过SSD硬盘的玩家应该有体会(也有人其实没意识到这个问题),今天的超能课堂我们就来谈谈SSD硬盘的掉速问题。
对于SSD硬盘掉速,目前并没有准确的定义,这里我们就按照字面意义上的掉速将其理解为“性能下降”,分析目前可能导致SSD掉速的种种原因及解决方案。如果想更好地理解SSD硬盘掉速问题,建议阅读一下我们之前做过的两篇横评:
花开正当时,十四款120/128GB SSD横评(7年前我们的评测就开花了)
再度重拳出击,十六款240/256GB固态硬盘2014年度横评
超能课堂(152):QLC闪存靠谱吗?它可否堪用?
·SSD掉速之SLC、MLC、TLC到QLC变迁
闪存类型的升级也是SSD硬盘掉速的原因吗?仔细想想的话还真没错,实际上我们可以说正是闪存类型不断变化才导致了SSD硬盘掉速问题越来越严重,如果我们还在使用SLC闪存,那掉速问题早就不是事了,只不过SLC闪存硬盘这事别想了,最好的闪存意味着最贵的成本,即便厂商现在还敢把SLC闪存当主力,普通消费者也用不起。
从SLC、MLC到TLC再到QLC,由于cell单元可以保存的电荷位越来越多,容量在不断增加,相应地成本在下降,但是NAND闪存先天的特性就注定了电位越多,控制就越复杂,写入数据的时间就越长,导致性能大幅下滑(主要是写入性能,读取性能还好)。
我们现在看到的TLC、QLC闪存的硬盘性能指标还不错,SATA接口的也能达到500MB/s写入速度,M.2接口的视PCIe 3.0通道数不同,写入性能可达1GB/s、2GB/s甚至更高,但是这样的性能是施了魔法之后的,是理想情况下的性能。
上图就是英特尔QLC闪存的660P硬盘的实际表现,随着写入数据量的增加,缓存空间用完之后QLC原始性能就暴露无遗了,写入速度就降至100MB/s,这性能没比HDD硬盘快多少了。
·SSD掉速之垃圾回收GC、TRIM
提到SSD硬盘掉速问题,老玩家可能还会想起来早些年浦科特 在自家M系列高性能SSD硬盘中宣传的不掉速功能,这个卖点当时是吸引了不少SSD用户的,考虑到那时候MLC闪存还是市场主力,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就出现过长期不用导致性能下降的问题。
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硬盘大量上市之后才比较集中的。
SSD主控本质上也是基于ARM或者自研架构的CPU,为了提高性能,SSD主控往往也是多核心架构了,三核甚至四核主控不少见,高负载下发热也是个问题。对于高性能PCIe、M2接口的SSD硬盘来说,由于空间狭小,发热集中,主控区域的温度超过90°C甚至上百度都很正常,为了避免高温损坏,SSD硬盘会有温控机制,检测到温度过高就会降频,进而减少发热。
不过降低主控频率,实际上也会降低SSD性能。要想解决因为发热掉速的问题,最常用的手段就是提高散热效果,比如三星在970 Pro硬盘的主控设计就使用了更好的封装,整个主控使用了金属外壳封装,提高了导热性能。
当然,更直接的手段还是加装散热片,所以大家可以看到各种M.2硬盘都开始流行散热马甲了,影驰之前还推出了铁甲战将M.2硬盘,使用了厚度惊人的散热片,虽然样子难看了点,但是效果杠杠滴。
除了上面介绍的这些掉速原因,其实还有一些别的因素会影响SSD性能正常发挥,比如4K没对齐、同步/异步闪存、AHCI/IDE模式等等,不过这些操作现在来说并不是主要问题了,以前是问题主要还是SSD不普及,很多人不懂设置,而现在Windows系统自己就加入了很多SSD优化设置,第三方工具对SSD的支持也到位了。
SSD硬盘的缓存结构:从DRAM Cache到SLC Cache
以上有关SSD掉速的内容涉及到方方面面,不过对单个SSD硬盘来说,SSD掉速问题没那么复杂,下面我们要进入正题了,先来看看现代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闪存硬盘中,不论SATA还是M.2接口的,性能都很强大,三星970 Evo这样的产品中250GB版标称写入性能可达1500MB/s,但它就是使用了写入加速(Write Acceleration)技术之后的性能,实际性能大约是300MB/s,中间差了四倍性能。
SSD写入加速技术是个通用称呼,常见的方案是SLC Cache(SLC缓存),它的意义就是字面意思——用SLC当缓存提速,因为SLC闪存是性能最好的。
在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的容量可用。
用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%也可以。
另外,不论全盘还是部分空间模拟,实际上还有动态及静态SLC Cache之分,这两种技术其实也是各有优劣,美光的DWA就是动态写入缓存加速技术,它的好处就是在用户用了不同容量之后都可以保持较好的加速性能。
总之,在SLC缓存上各大厂商有自己的选择,缓存空间、缓存分配、加速策略都有可能是不一样的,技术路线没有高下之分,但不论哪种,SLC缓存空间用尽之后,SSD的性能都会暴露出应有的水平,那就是TLC/QLC原始性能。
就是这一点,SSD硬盘如果使用的空间越多,那么剩余空白容量就越少,这对缓存加速越不利,所以性能就越低,这也是很多人使用SSD硬盘感觉越用越慢的根源,常说的掉速就是这么来的。
对于SSD掉速问题,除了特定问题导致的之外,如果是因为缓存用尽而掉速,那还真没什么好办法,除非不怕倒腾数据的麻烦,经常把SSD硬盘安全擦除一下。
如果对掉速问题很介意,现在的选择只有购买MLC硬盘或者购买大容量SSD,容量不低于1TB,越大越好。