固态硬盘卡顿严重(固态硬盘掉速的原因)
过去的十年间,PC上最大的技术革新之一就是用固态硬盘取代了机械硬盘。回顾PC的进化史,CPU、内存和显卡的频率和性能一直在不断的进步。而机械硬盘的性能却出现了瓶颈,传输速度一直在200MB/s 以下原地踏步(这个数值是连续读写速度,随机读写速度更惨不忍睹)。而如今高端的SSD能将这个速度提升到2GB/s以上。
随着SSD(固态硬盘)产品价格不断下降,买块SSD来提升性能理念已经深入人心。毕竟现在主流的1TB的SSD的价格已经在千元以内了。你花个几百块升级CPU内存可能一点性能提升的感觉都没有,但花同样的价格从机械硬盘升级到SSD就能感觉到明显的提速。
但世上似乎没有完美的事物——SSD亦是如此。虽然在如今大降价的环境下SSD被各种文章做了“真香”评价。但它还是有些让人糟心的问题——在使用了一段时间后,掉速甚至卡顿蓝屏都有可能出现。对于这些问题,长期使用过SSD硬盘的玩家们可能会有所体会,今天我们就来谈一谈SSD的掉速和卡顿的问题
一、SSD颗粒从SLC、MLC、TLC到QLC变迁,每一次变迁都会导致掉速的发生
稍有常识的用户都知道,SSD硬盘上的闪存颗粒分为SLC、MLC、TLC及QLC 四种闪存颗粒,从颗粒寿命和质量上来讲SLC>MLC>TLC>QLC,事实上如果我们都用SLC闪存的话,今天这个掉速问题的话题可能就不用讨论了。但SLC单元可存储的数据过少,导致了SLC颗粒的成本居高不下。为了能把固态硬盘的价格降到民用级。厂家们之后有进一步推出了MLC、TLC和QLC颗粒。
目前在民用级市场中,MLC颗粒的SSD也已经不多见了。目前主流的颗粒类型是TLC,并正在向QLC过渡。
由于cell单元可以保存的电荷位越来越多,容量在不断增加,相应地成本在下降,但是NAND闪存先天的特性就注定了电位越多,控制就越复杂,写入数据的时间就越长,导致了性能大幅下降(这里主要是指写入性能,读取性能还好)
以英特尔QLC闪存的660P硬盘为例,随着写入数据的增加,SSD本身缓存空间用完之后QLC原本的性能就显露无遗了。写入速度只有100MB/s,这基本也就是普通机械硬盘的速度了。
不过这样的速度只有在特定的条件下才能测试出来,商家给SSD施加了各种“魔法”让其初始跑分成绩非常惊艳。这些“魔法”我们会在后边的文章中一一提到。
二、SSD硬盘的特有的垃圾回收机制,数据过满需擦除数据时会导致掉速
SSD主控通过若干个通道(channel)并行操作多块FLASH颗粒,类似RAID0,大大提高底层的带宽。举个例子,假设主控与FLASH颗粒之间有8个通道,每个通道上挂载了一个闪存颗粒。我们买到一个全新的SSD硬盘的时候。每个颗粒的区块内都是空白的。
如上图所示,SSD上的主控会将数据依次写入每块缓存。直到将其写满,此时由于SSD没有传统硬盘那样的机械限制。写入和读取的速度都会比较理想。
而当我们就会删除掉一部分数据时,这些数据并不会马上删掉,而只是标记成可擦写。类似下图,红色的块表示可擦除块。
根据SSD的特性:要写入新的数据前,主控必须将区块内有用的数据迁移到新的区块里,再将老区块内数据整体擦除掉。才能写入新的数据。
有时还要将几个区块的有用数据合并在一起。
这样的过程称为SSD的垃圾回收机制。当然,优秀的主控会尽量避免数据回收过程中造成的掉速。一般它会在硬盘空闲的时候默默进行。但如果你的硬盘平时塞的很满,狂删文件之后又马上来下载一个大文件。主控擦除和整理的工作一时忙不过来,就会导致掉速。
所以平时尽量给你的SSD硬盘多预留一些剩余空间;购买时尽量买大容量大一些的SSD硬盘;避免连续删除又马上拷贝文件。就可以有效避免SSD的掉速情况。
三、SSD的缓存结构:从DRAM Cache到SLC Cache
之前曾经提到过某些品牌QLC的真实速度其实不比机械硬盘快(100MB/s)。但新买的QLC硬盘的实测速度还是能达到2GB/s。其原因就是厂家在SSD硬盘上加入了高速缓存。
上图是一块M.2硬盘的设计布局从左到右分别是DRAM缓存、主控及NAND闪存(SATA硬盘的布局与之类似),其中主控及NAND闪存是必不可少的。而DRAM缓存并不是必需品,它只是用来提升高速SSD硬盘的性能。因为就算是较为便宜的DDR3缓存,其带宽也能达到数GB/s甚至十几GB/s。硬盘读取数据时首先看DRAM缓存中有没有需要的数据,如果有,那就先用这里的,所以速度会很快对于SSD整体速度的提升还是很明显的。(目前三星等公司已经在自己的高端SSD长跑上用上DDR4-2133做缓存了)
至于DRAM缓存容量,容量少的有128MB,256MB、512MB比较常见,随着SSD硬盘越来越大,1GB缓存的也不少见了。当然排除成本因素,DRAM缓存容量当然还是越大越好了。当然也有低端的SSD硬盘为了节约成本,动用了电脑中的内存作为自己的DRAM缓存,与集成显卡用内存作为自己显存是一个道理。
当然DRAM缓存虽快,但毕竟容量还是非常有限。缓存中没有的数据还是要在NAND闪存中寻找,速度就是NAND闪存的了,相对来说慢很多。所以厂家有做了第二道缓存——SLC Cache。顾名思义就是用性能最好的SLC颗粒作为缓存来使用。
与DRAM缓存相比,SLC缓存就可以做得很大了。所以很多评测中测出的SSD的读写数据基本都是在SLC缓存跑出来的。至于缓存具体做到多大,以及采用怎样的加速机制各个厂商有不同的思路和做法。有大于20%的,有的在10%以下。值得一提的是:缓存的大小并不能作为性能的评判标准。
不过依据这个思路,我们倒是可以测出某些固态硬盘的真实速度,比如笔者手中的西数blue系列SN500,查得其SLC缓存大约为7GB。我们在写入140GB数据的基础上,用SSD Benchmark写入一个10GB大小的文件得出的读写速度就会更接近于其TLC颗粒的真实速度。
四、SSD之主控过热保护
除了以上的这些问题以外,温度也是不容忽视的问题。 支持M.2接口NVMe硬盘因为走高性能的PCIe通道数据的数量大。SSD主控往往都是三核或者四核的多核心架构。加上本身体积不大,发热集中。控制区域的温度往往超过90度甚至上百度都是正常现象。为了避免温度过高损坏,SSD一般都会设置温控机制。在主控温度过高的时候就会降频以减少发热量。但温控带来最直观的副作用就是SSD会突然降速。有可能会让用户在使用中感觉到卡顿。(相对而言SATA接口硬盘因为设计和性能等原因,发生主控温度过热的概率会小很多)
尤其是装在笔记本电脑内部的M.2接口硬盘,很可能会因为散热不畅而导致温度过高。此时给SSD安装散热片就比较重要了。大家可以在网上买专门的SSD散热片加装,一些品牌的SSD现在出厂就安装了厚度惊人的散热片。虽然样子丑了些,当时效果还是非常好的。
五、节能特性导致的掉速和卡顿
无论是SATA接口还是M.2接口都有自己的一套闲置状态节能特性。节能设置的初衷是好的:为了省电和降低温度功耗。但这套节能特性需要电脑主机端和固态硬盘方进行协商。如果双方沟通不来,或者是需要唤醒的时候没有及时“醒过来”,就可能会导致卡顿甚至是电脑蓝屏死机。
比如安装了英特尔快速存储驱动RST之后,系统会默认打开全部的节能功能,有时会让卡顿现象出现或者加重。如果出现类似的现象,我们就需要关闭相关的节能选项。
点击禁用以后重新启动一次电脑,即可关闭所有链路节能。
另外现在一些比较新的主板也可能会提供禁用节能特性的选项。我们可以在BIOS中关闭节能。
对于支持M.2接口NVMe硬盘,我们还可以在通过关闭"高级电源管理"中 "PCI express选项"的节能设置来达到关闭节能的问题。
关于节能设置的兼容性问题,各个厂家之间的协调似乎一直有点问题。所以如果你的SSD有掉速或者卡顿的情况。我建议还是关掉节能选项来试试。
这笔者个人对SSD掉速问题的总结。当然以上情况排除了人为问题:比如4K没对齐、同步/异步闪存、AHCI/IDE模式等等都会导致SSD的速度不正常。小厂商或者太廉价的SSD,因为闪存颗粒质量或者主控问题。也都可能导致SSD速度不正常。篇幅问题这里就不展开说了。
总结下:在目前的技术和市场环境下。SSD的掉速问题似乎很难避免。且SSD硬盘剩余空间越少的情况下,对缓存加速越不利,掉速问题就越严重。这也是很多人觉得SSD硬盘越用越卡的根源。俗称的掉速也就是这么来的。
如果对掉速问题很介意的话,只能定期把SSD硬盘安全擦除下。或者去MLC硬盘或者购买大容量SSD。尽量不要将SSD装得太满,空余空间越多,SSD掉速的几率就越低。