硬件知识普及:固态硬盘的参数解读与实际性能

发布于2024-06-04 2,118 热度

固态硬盘的参数解读:

在介绍各个参数之前,我想先推荐一个比较好用的查看硬盘信息(机械硬盘和固态硬盘都可以,比较好用)的软件给大家 —— CrystalDiskInfo,看名字大家都应该能猜到它是和 CrystalDiskMark 同一家出的软件,完美继承了它家软件的特点:界面简单,功能简洁好用,有二次元皮肤。

可以看到无论是固态硬盘还是之前介绍的机械硬盘,它都能读取到比较详细的信息,基本可以覆盖我们下面要介绍到的参数了。

固态硬盘的尺寸:

  • 不同于机械硬盘基本上快大一统成 SATA 接口,只有少部分企业级在用一些特殊的接口,固态硬盘在接口方面可谓是群魔乱舞,不同接口对应的协议和最终的速度也是各不相同。不过等到固态硬盘发展到像机械硬盘那么成熟之后,这个现象也会逐渐消失,比如现在 M.2 接口就逐渐成为固态硬盘接口的主流,估计以后能像 Type-C 那样统一固态硬盘领域。
  • 目前固态硬盘的尺寸也像接口那样五花八门。为了跟之前的硬盘位硬盘架通用,早前固态硬盘通常会设计成跟 2.5 寸机械硬盘一样大,用的也是 SATA 接口。

aigo 的 2.5 英寸 SATA 固态硬盘与机械硬盘的大小对比

  • 使用 SATA 接口的固态硬盘大部分被设计成和机械硬盘通用尺寸和接口。如果你手边刚好有一个 SATA 固态硬盘,我非常鼓励你试一下把它拆开来,大部分固态硬盘的外壳都没有螺丝,直接用卡扣固定,拆下来之后你就会发现,其实真正储存和电路部分只有一小块,剩下的都是空的:

拆开的 SATA 固态硬盘,实际储存部分只有一小块

  • 甚至有些商家还会给空空的地方贴一些海绵或者配重块,来让整块固态硬盘手感好一点。外壳纯粹就是为了兼容笔记本或者台式机里的 2.5 寸硬盘位。
  • 因为 SATA 接口和走 SATA/AHCI 协议的接口速度上限被限定在 700MB/S 左右,所以新的固态硬盘都会选择使用 M.2 接口或者直接插 PCIe 槽。

主板上的 M.2 接口

  • 我们在购买 NVMe 固态硬盘或者把它们装到电脑主板上时,通常都会看到类似于 22XX 4 个数字的参数,这个就表示固态硬盘的尺寸
  • 22=22mm,也就是固态硬盘宽度是 2.2 厘米的意思,后面两个数字就是固态硬盘的长度,通常会有 20,42,60,80 等常见长度,以毫米为单位。我们购买的时候一定要先看看自己设备上的 M.2 接口预留出了多少空间,免得太长放不进去。

M.2 接口上通常也会标注出长度数字

  • 至于 2230 长度的固态硬盘估计大部分人都没见过,在早前比较常用,如果你现在在笔记本或者其他地方找到这个接口,大部分时候其实是给 WiFi 模块用的。
  • 在有些设备上还会使用 mSATA 固态硬盘,虽然它的缺口和 NVMe 固态硬盘一样,但是宽度比较宽,所以接口是不通用的。

金士顿 Kingston 的 mSATA 固态硬盘,图片来源:Amazon

固态硬盘的接口协议:

  • 先来简单复习一下:
  • 总线:计算机设备里各个部件之间交换数据(传输电信号等)的通道,这个通道每秒能传输的数据量就叫做带宽。
  • 协议:双方交换数据的规则,比如如何识别对方的身份、如何建立断开连接、编码解码方式(也就是电信号怎么传输接收)等等。
  • 接口:让两个设备之间可以通过特殊的形状物理连接起来。

机械硬盘一般使用的就是 SATA 总线或者,然后使用 SATA/AHCI 协议来和设备其他部件沟通,但放在固态硬盘上事情就有一些复杂了。在本小节开头,我们也提到目前固态硬盘的接口协议等等种类还比较多,也让很多用户稀里糊涂买到了不适合自己的固态硬盘或者速度没有达到设备上限的固态硬盘,浪费了额外的时间和性能

比如看起来是 M.2 接口的 B Key 固态只能走 SATA 协议

我们先来说一下总线,目前我们民用储存设备常见到的总线有 SATA 总线、PCIe 总线和企业级 SAS 总线(如果你用一些服务器主板的话,可能会有)。之前我们了解到 SATA 总线一般是给机械硬盘使用,而且速度上限比较低,而 SAS 总线又是企业级使用比较多,那么除了低速的固态硬盘走 SATA 总线,现代的 NVMe 固态硬盘一般都是走 PCIe 总线了

这三种总线的速度,上面是 PCIe 总线,下面是 SATA 和 SAS 总线,图片来源:维基百科

  • 而协议方面目前民用的也是只有比较少的几个,SATA/AHCI 协议,NVMe 协议,SCSI 协议(同样是企业级服务器用的比较多),没错,我们常看到的 NVMe 固态硬盘中的 NVMe 指的就是这个硬盘使用的协议。高效的协议能让总线满效率运行,跑满总线的带宽,这也是 NVMe 固态硬盘能那么快的原因。
  • 和简单的总线协议不同,固态硬盘接口方面可就复杂多了。最基础的就是我们常见的 SATA 接口,还有为了笔记本等便携式设备引申出来的 mSATA 接口,还有固态硬盘专享的 M.2(NGFF) 接口,SATA Express(SATAe) 接口,PCIe 接口,甚至还有不常见的走 SAS 总线的 SAS 接口与 U.2,AIC 接口等等,这些接口各自走前面的 3 个总线和协议,大概像是这个样子:

机械硬盘和固态硬盘不同接口对应的总线协议

  • 怎么样?是不是觉得很复杂?没关系,接下来我就来带你实际从不同接口的固态硬盘出发,简简单单就记住它们的关系
  • 在逐个介绍之前我先说一下总体情况,和机械硬盘物理速度上限较低,所以不太需要考虑协议和总线速度的情况不同,对固态硬盘,特别是对现代高端固态硬盘来讲,不同接口协议总线已经开始可以限制固态硬盘的速度发挥了。
  • 这里又要重新强调一下之前讲过的木桶效应,固态硬盘最终速度取决于接口协议总线最慢的部分。但通常厂家都会保证速率和协议达到要求,才会推出对应的固态硬盘,所以我们使用的时候,通常只需要保证它走的总线速率足够就可以满速运行

SATA/mSATA/SATAe 接口固态硬盘:

SATA 接口是大部分人刚用上固态硬盘,甚至现在机箱里面唯一的固态硬盘接口类型。固态硬盘刚开始普及民用的时候算是比较贵重的数码产品,每 GB 比起机械硬盘甚至要贵上好几十倍。

2013 – 2020 固态硬盘每 TB 价格走势

  • 这导致那个时候没什么人用固态硬盘,加上那个时候固态硬盘速度也没有现在那么快,还没突破 SATA 总线上限,所以主板厂商并不会专门设计一个专供固态硬盘使用的接口。那个时候的固态硬盘只能是继续使用 SATA 接口,使用 SATA3.0 协议。
  • 同时那个年代的计算机机箱通常只设计了给机械硬盘的硬盘位,所以就像我们上面提到的即使固态硬盘的储存颗粒只有小小的一颗,也是要用一个 2.5 或者 3.5 寸硬盘那么大的壳子来包住它。

壳子里面的主要部分就很小一块

  • 固态硬盘的全面普及最早是在笔记本上,之前笔记本放机械硬盘的做法是把 SATA 接口焊在主板上,然后在主板上留一个 2.5 寸机械硬盘那么大小的位置。但固态硬盘本身只有很小的一个,也不需要机械硬盘那么高的供电,没有必要用 SATA 这个电源部分就占了一半的接口,跟没有必要留 2.5 寸机械硬盘那么大的位置,加上那个时候超极本超薄本等轻薄设备的概念兴起,所以主板厂商就设计出了 mSATA 接口。

笔记本上的 mSATA 接口,图片来源:Reddit 用户 

  • 它和我们现在见到的 M.2 接口已经非常相似了,不过仍然是走的 SATA 协议和总线,你可以把它理解为 SATA 接口的迷你版,毕竟 mSATA 就是 mini SATA 的缩写,这个时候厂商终于可以把固态做到合适的大小。
  • 不过到现在这个接口基本上已经没有什么笔记本在使用,都用上了更新的 M.2 接口,如果新笔记本里面还有这个接口,通常上面插的都是无线网卡而不是固态硬盘。倒是很多移动固态硬盘内部还在使用 mSATA 接口转 USB,毕竟大部分人对于移动硬盘的速度需求并不高,能超越 SATA 速率的 USB3.2/USB4 也还没有普及,厂商没必要用上对硬件要求更高的协议和接口。

笔记本上常见的英特尔无线网卡,一般还会带蓝牙,这个型号是 AX200

另外英特尔还推出过一个叫做 SATA Express 的接口,他可以直接插两个 SATA 来走 SATA 协议,也可以用整个接口走 PCIe*1/2,不过这个东西接口还是太大,速度上限提升也不高,只出过几款对应的主板,连支持的设备都没有出就夭折了。

  • 随着固态硬盘的速度越来越高,这两个接口已经远远无法满足日益加快的固态硬盘,所以厂商必须设计一个专门用于固态硬盘,并且可以直接与速度最快的 PCIe 总线交流的接口

M.2(NGFF) /PCIe 接口固态硬盘:

  • 专门用于固态硬盘,并且可以与速度最快的 PCIe 总线交流的接口,说的就是我们今天常见的 M.2 接口了。M.2 是我们比较常听说的名字,但它其实叫做 NGFF(Next Generation Form Factor),翻译成中文就是次世代接口,后来被改名叫 M.2,可能是觉得这个接口不可能一直次世代吧。「2」就是第二代的意思,「M」则是我们下面提到的 M.KEY,表明接口的形状,中间用点隔开表示它们俩是不同的参数。
  • M.2 接口作为现在和未来的主流接口,自然有向后兼容,既可以使用 SATA 协议也可以使用 NVMe 协议,由于支持协议众多并且接口复杂,M.2 接口通过接口上的缺口来确定协议类型,由于不同缺口像钥匙那样,所以叫做 KEY,M.2 接口有从 ABCDEFGHJKLM 这么多种 KEY,KEY 对不上是插不进去对应接口的(真就钥匙呗……)。不过倒不用担心太过复杂,因为我们日常只能看到两种:M KEY 和 B KEY

不同 M.2 KEY 的用途,图片来源:维基百科

  • 如果我们观察自己的 NVMe 固态硬盘,会发现缺口都在右边,这个就是 M Key,如果插槽右边有对应的突出就可以插进去,通常它们就是使用 NVMe 协议走 PCIe 总线。
  • 而 B KEY 的缺口则是在左边,插进对应的插槽之后通常只能走 SATA 总线。另外还有同时有两个缺口的固态硬盘,这种就是 B&M KEY,既可以走 SATA 总线也可以走 PCIe 总线。不过一般来讲这种类型都是 SATA 或者 PCIe*2 居多,速度上限不高。

硬盘转接卡上的 M KEY,B KEY 和对应的 M.2 接口

  • 主板上的位置寸土寸金,所以一般我们现在看到的主板只会保留 M KEY 的 M.2 接口。大家购买固态硬盘的时候也要认清是哪种 KEY,如果是新设备建议只购买 M KEY 的固态硬盘,免得到时候插不进去或者插进去却只能走 SATA 总线。

A/E KEY 就是我们上面提到 2230 这种无线网卡比较常用的 M.2 接口所用的 KEY 类型。

使用 M.2 接口的无线网卡,图片来源:淘宝

NVMe 协议中的 NVM 其实就是我们之前提到的非易失性储存器英文,整个名字可以简单理解为非易失性储存器控制协议。

  • 既然 M.2 接口的高速固态硬盘使用的是 NVMe 协议走 PCIe 总线,有些厂商干脆就把固态硬盘做成 PCIe 接口,插到 PCIe 插槽插使用。这就是 PCIe 固态硬盘,用的一般也是 NVMe 协议。

比如英特尔的高端 AIC 固态硬盘一般都是 PCIe 接口

其它接口:SAS/AIC/U.2 接口:

  • 上面介绍的都是我们日常比较常见的一些固态硬盘接口类型,下面简单介绍一下比较少见的接口,这些接口一般都是企业级或者服务器使用比较多,如果我们使用服务器主板的话,还是有机会看见的。
  • SAS 和 U.2 这些都是 SATA 接口改过来的接口,目的就是为了兼容 SATA 硬盘的同时能够用上其他协议总线。比如 SAS 就可以有服务器常见的 SCSI 总线,U.2 可以用 NVMe 协议走 PCIe 总线。

SAS 和 U.2 接口的样子

SATA 硬盘可以插到 SAS 和 U.2 接口上,反过来 SAS 硬盘和 U.2 硬盘则不能插到 SATA 接口上。

  • AIC 就是 PCIe Add in Card 的意思,其实就和 PCIe 固态差不多,也可以直接插在 PCIe 接口上使用,主要是因为服务器上有很多设备都比较老,用不了其他接口,插PCIe 是最直接的。

aigo 的 AIC 企业级固态硬盘

接口兼容性与速度上限:

  • 接下来我通过实际的例子来说一下不同接口的固态硬盘的速度上限,首先 SATA 这类接口就不用说了,加上损耗最高 600MB/S。
  • 接下来你再看你设备上的 M.2 接口,如果是 B KEY,还要在看主板说明书。
  • 如果主板说明书上没有写明这个接口支持 PCIe×2 总线,那么无论你买啥,只要能插进去,最高速度都不超过 600MB/S。
  • 如果主板说明书上写明这个接口支持 PCIex2 总线,那么就要购买同样支持 PCIex2 的 B KEY/B&M KEY 的固态硬盘,插上去之后最高速度大概能来到 1GB/S 左右。

B KEY 的 M.2 接口与速率上限的关系

  • 如果你设备的 M.2 接口是 M KEY,还是要查看主板说明书。
  • 一般来讲笔记本的 M.2 接口都有可能向下兼容走 SATA 总线,但台式机主板上的 M.2 接口一般只支持走 PCIe 总线。一定要先看主板说明书再购买对应的固态硬盘
  • 如果接口兼容 SATA,那么有两个缺口的 B&M KEY 固态硬盘能插进去,此时速度上限就是 600MB/S。
  • 如果插入 M KEY 的固态硬盘,具体的速度上限就由它使用的 PCIe 传输模式决定,通过前面推荐的 CrystalDiskInfo 就可以看到固态硬盘正在使用的传输模式和支持的传输模式

M KEY 的 M.2 接口与速率上限的关系

CrystalDiskInfo 上查看储存设备的传输模式

  • 比如常见的 NVMe 固态硬盘走 PCIe 3.0×4,那么速度上限就是 4GB/S,如果是比较贵的 PCIe4.0 NVMe 固态硬盘速度上限则是 PCIe4.04 也就是 8GB/S。

aigo PCIe4.0 P7000 固态硬盘(1 TB)的速度最高可以到 7GB/S 左右

固态硬盘的颗粒与主控:

虽然固态硬盘使用的接口协议总线决定了读写速度的上限,但固态硬盘实际能跑多快,还是要看颗粒的质量还有主控算法

SLC/MLC/TLC/QLC 颗粒

这几个名词算是我们购买固态硬盘,或者看其他人评测时最常提到的参数了,如果是后两个颗粒,通常还伴随着对厂家的鄙视。但实际上它们都是什么呢?

评测里面提到 QLC 基本上都是骂的

  • 其实通常人们在他们后面加上颗粒是不太严谨的,因为它们从物理上都是由无数相同的浮栅晶体管组成的 NAND 闪存颗粒。无论是 SLC 还是 MLC 还是后面几个,它们用的储存单元都是一样一样的浮栅晶体管,而区别在于每个浮栅晶体管组成的储存单元,它的状态数量(其它科普常用层数来表示)不一样
  • 再上一章,我们已经用 TLC 来演示现代固态硬盘 NAND 闪存颗粒的原理,通过给储存单元阈值电压,检测电路是否导通来读取储存单元里面的数据。其它的几个类型也是类似:
  • SLC = Single Level Cell,指的是通过一个阈值电压区分 0, 1 两种状态的储存单元,这样一个储存单元就能储存 1bit 的数据。
  • MLC = Multi Level Cell,指的是通过三阈值电压区分 00, 10, 01, 11 四种状态的储存单元,这样一个储存单元就能储存 2bit 的数据。
  • TLC = Triple Level Cell,指的是通过七个阈值电压区分 000, 001, 010, 011, 100, 101, 110, 111 八种状态的储存单元,这样一个储存单元就能储存 3bit 的数据。
  • QLC = Quadruple Level Cell,指的是通过十五个阈值电压区分 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111 十六个状态的储存单元,这样一个储存单元就能储存 4bit 的数据。

也有的 TLC 检测数据过程动图

  • 现在连 PLC 都快出来了,按照上面的原理一个储存单元就能储存 5bit 的数据。
  • 这样做的好处自然显而易见,同样面积的储存单元,QLC 比起 SLC 能够存放 4 倍的数据,也就是说闪存颗粒的密度提升了 4 倍,这已经是很惊人的差距了,同一块闪存颗粒如果全做 QLC 可以有 1000GB 容量,那么 TLC 只有 750G, MLC 只有 500G,SLC 更是只有 256G 了
  • 而且由于数据密度提高,相同容量的 TLC 固态价格也和数据密度一样是 SLC 的 1/4 左右,也就是说便宜同时还变大碗。这听起来好像很美好,那么为什么大家都那么抵制使用 TLC /QLC 储存单元的固态硬盘呢?

多层储存单元的缺陷:

  • 首先就是一个储存单元上,分的阈值电压越多读取的时候就要越多次,比如 TLC 读取一次一页的数据就要轮流给 7 个阈值电压,每给一次阈值电压都要一个个检测储存单元是否导通,而 SLC 只要一个阈值电压检测一次,每多一个需要检测的阈值电压,读取速度就会慢很多倍
  • 多个阈值电压也会带来读取困难后果,上一章我们也讲到不能无限细分预置电压去无限提高容量密度。即使只做到 TLC 的级别也会带来阈值电压区间过小的问题,因为我们往储存单元写入数据的时候,并不能精确控制电子量,如果阈值电压过小电子量又刚好卡在中间,那么数据到底是 010 还是隔壁的 011呢?这个时候就需要 ECC 纠错算法的加入,通过校验数据纠正这个储存单元上的信息然后重新写入正确的数据,这一步又大大减慢了读取速度
  1. 写入的时候也是这样,阈值电压越多,储存单元储存数据需要的电子量要求就越精准,自然就越容易出错。出错的时候又要 ECC 纠错算法来校验重新写入正确数据,写入速度也被拉慢了
  2. 阈值电压变的设置对储存单元的寿命也有影响,先不说上面提到反复写入影响到的寿命,我们知道每一次写入都会对包括浮栅的绝缘层造成物理损伤,而闪存颗粒又是每一次写入数据都需要先擦除对应块再写入数据,这样时间长了浮栅里面保存的电子就会越来越容易穿过漏洞逐渐增多的绝缘层「越狱」跑掉。
  • 对于 SLC 而言,0,1 两个状态相差的电子量很多,即时跑掉一点也不影响读取;不过当到 QLC 这种,每个状态之间电子量差很小,只需要有一点点电子从浮栅中跑出来,就会让这个储存单元读取的数据变成另一个状态。而当写入后短时间内电子跑掉的量大于两个数据状态之间的差,主控就会认定这个储存单元已经挂掉了。清楚了原理之后,我们很容易就能发现比起 SLC,MLC/TLC/QLC 等等越多层的储存单元挂掉需要的时间越来越短

SLC 对比其它类型储存单元检测数据时间,写入时间,擦除时间和平均寿命对比

  1. 多层储存单元还会带来其它问题,比如数据可靠性不足,对保存环境要求更高等等。
  2. 从 MLC 到 QLC,容量密度越来越高,价格越来越便宜的同时,以上提到的缺点也会越来越严重。简单总结就是,在对比之下 SLC 读写速度最快,数据保存最稳定可靠,寿命最长,对比之下我们才知道 SLC 除了数据密度低和贵,真的是哪哪都好。这也不怪大众批评厂商用 TLC/MLC 是「偷工减料」了。

正确看待多层储存单元:

  • 看完上面的部分,很多人可能就觉得哎呀,我一定要花很多钱去上 SLC/MLC 固态硬盘,不然总感觉用不了多久也不可靠。
  • 但其实没有必要,我觉得只要在商品详情和包装盒上标明储存单元类型(虽然基本没有厂商这么干),然后容量价格比的确够低,那么大家还是值得根据自己的需求去购买的(虽然现在市面上基本没有全盘 SLC 的民用产品了,很快估计连全盘 MLC 的产品厂家都不会再生产了)。

标明储存单元类型的固态硬盘

  • 现在厂商都会使用 DRAM 或者将固态硬盘的一部分空间模拟成 SLC 来加当做缓存来解决 TLC/QLC 的速度问题,而且即使是 QLC,只要容量足够大并且有一个好的主控,那么我们日常使用每个储存单元的擦写数据可以控制得很低,只要你不是每天 24 小时不停在写入,基本上也有十几年的寿命(详细的参数在下面会介绍)。所以最后还是要看个人的需求,如果的确对数据可靠性和速度有很高要求,并且价格不敏感,那的确不要考虑 QLC 甚至是 TLC,感觉大部分时候都可以,具体的我会在选购那章详细介绍。

说实话基本很少见硬盘颗粒坏掉的,一般都是主控先坏,不然也不会有那么多厂家回收固态颗粒再当做新的卖了。

大厂的 QLC 固态硬盘也还是不便宜

  • 当然也不是说就能无脑买了,某些无良厂商会用回收或者质量差的反正就很垃圾的颗粒和主控弄成全盘 QLC,然后配上一丁点高质量 DRAM 或者 SLC 缓存当做高配固态卖,这种固态硬盘无论是缓外速度还是寿命,可靠性都一塌糊涂。。

即使是大厂也经常会有偷换颗粒这种新闻,所以我们买之前也要搜一下固态型号,看看有没有相关的黑历史;另外相同类型的颗粒在厂家那边还会有原厂颗粒、黑片、白片等区别,详细的我会在选购那章展开讲。

简单查看固态硬盘上的颗粒类型:

  • 说了这么多,也来到了实战的环节。这一节我就来教教大家怎么看自己固态硬盘用了什么类型的闪存颗粒,闪存颗粒的质量怎么样。
  • 各位可以拿出自己的固态硬盘来观察一下,或者购买对应固态硬盘之前先网上搜一下对应的照片,闪存颗粒上面一般会有一些编码。当然有一些厂家也会使用没有编码的闪存颗粒,或者把闪存颗粒上的编码丝印刮掉,这种的话想要了解颗粒的具体参数,就只能去咨询厂家了(除非你把闪存颗粒从电路板上拆下来,接上 AlcorMP 这类的软件进行查看编号)。

没有编码丝印的闪存颗粒

AlcorMP 查看闪存颗粒编号

  • 一般来讲,不同厂家使用不同颗粒的编码差别会很大,比如正规的大厂一般会在颗粒上带有晶圆厂的 Logo,自家的品牌或者产地容量等等。

西部数据 SN550 上面的颗粒就是很清楚

  • 但一般我们只需要关注底下或者唯一的编码就行,说实话,闪存颗粒作为和芯片一样的高精尖技术,目前(文章发表时)地球上也只有三星、海力士、东芝、镁光、西部数据(闪迪)、我们国家的长江存储占据了绝大部分闪存颗粒市场,基本上你能看到的固态都逃不掉以上几家的颗粒。

这几家的原厂颗粒长这个样子

  • 如果闪存颗粒上只有一个编号没有其他信息,那么大概率是自封的闪存颗粒。自封闪存颗粒只有生产出来是在原厂,后续的封装检测均由企业自行完成,所以并不是自封就是不好,品质取决于企业的技术和良心

像是这种只有一个编号的,就是自封颗粒

  • 如果是原厂闪存颗粒,我们就可以使用 SSD-Z 或者 FlashMaster 这类的应用去获得详细的储存单元类型和颗粒生产信息。但如果是自封闪存颗粒,只能是拿着这个固态的型号或者编码去问客服或者谷歌一下,没错就是这样子,因为原厂颗粒还好,但是现在固态很多都用上了自封颗粒,也没办法用 flash.top 或者 FlashMaster 这类的应用去查询。

原厂颗粒的查询结果

  • 目前比较好用的检测自封闪存颗粒的方法是使用俄罗斯人 Ochkin Vadim 开发的 Flash ID 检测工具 来曲线救国,这个工具利用的是固态硬盘主控读取闪存颗粒序列号的命令,获得闪存颗粒序列号后再和内置的数据库对比得到闪存颗粒真正的编码。

Flash ID 检测工具

  • 至于如何分辨闪存颗粒是原厂颗粒,黑片,白片还是工程版,各家原厂颗粒的命名规则和具体的方法,最终确定一个颗粒的品质。这个过程并没有准确百分百的方法,具体的我会留到选购这一章再讲。

其实最好的方法还是直接问对应品牌的客服。一般客服都会反馈给工程师,然后得到结果,一次不行实在想知道的话可以问多几次,一般都会有回复。

主控/SSD 控制器:

  • 从物理状态来讲,其实颗粒的擦写次数并不高,所以主控好不好非常重要。主控的水平关乎同一个颗粒下的读取写入速度,还有寿命等,甚至比闪存颗粒的质量更加重要。使用相同闪存颗粒的两个固态硬盘,如果一个用好主控,一个用一般的主控,不仅读写速度能相差几倍,寿命甚至能相差 10 倍。

aigo P7000 固态硬盘上的主控

  • 主控又被称为 SSD 控制器,本质上就是一个小型处理器,甚至会有多个核心,也像真正的 CPU 那样有 SRAM 缓存。和闪存颗粒不同,固态硬盘的主控芯片有很多厂商在做,国内外知名的有三星(Samsung)、慧荣科技(Silicon Motion)、群联(Phison)、Marvell(马牌),国内则有华澜微(Sage)、国科微(GOKE)、联芸科技(MAXIO)、得一微电子(YEESTOR)、英韧科技(InnoGrit)、忆芯科技(StarBlaze)、大唐存储(DATSSD)、大普微电子(DapuStor) 等等多家,虽然目前技术还不如国外主控,但也在不断追赶。

三星、慧荣科技、群联、Marvell 的主控芯片

主控里面也是会有一个小的操作系统,很多发烧友的「开卡」操作就是给掉盘或者给主控坏掉的固态硬盘修好后换上新主控刷入新 ROM(固件)的操作。

  • 以 NVMe 固态硬盘为例,主控主要做以下几个工作:

典型的主控结构

  • 这就是主控最主要的工作,如 NVMe 固态硬盘往往需要性能比较强的多核处理器,就是因为 NVMe 协议的队列长度和深度都比较大,还支持乱序执行。主控除了像上一章我们提到的那样控制数据写入读出之外,还要同时执行 FTL 算法,调度算法,缓存算法等等下面提到的工作。

FTL(FlashTranslation Layer) 算法

  • FTL 算法也就是上一章我们提到的物理地址转换成逻辑地址的算法,主控会将不同页物理位置转换成一个逻辑编码组成一张映射表,而且每次写入还要实时更新每一个逻辑扇区的状态。这样做的好处是文件系统不需要关注实际的物理设备是机械硬盘还是固态硬盘,只需要发送相同的逻辑扇区读写指令,剩下的就交给机械硬盘或者固态硬盘的主控来处理。

映射表本身也是储存在闪存颗粒上的。

  • 不同的 FTL 算法也会显著影响固态硬盘的 4K 读写速度,由于映射表本身需要频繁读写,所以固态硬盘通电后映射表通常是要放到缓存上,也就是要占用缓存空间。如果 FTL 按页映射,那么 4K 读写速度就会比较好,但是映射表会很大,占用很多缓存空间;如果 FTL 按块映射,虽然不会占用太多缓存空间,但是 4K 读写速度会比按页映射差,实际固态硬盘主控 FTL 算法一般是两者的混合。

垃圾回收机制/TRIM 回收指令

  • 另外,我们之前学到闪存颗粒上的块如果不是空的需要先擦除才能写入,而且每次产出都会对对应的储存单元造成物理的磨损。所以 FTL 算法还要保证每次写入的都是新的块而不需要先擦除老的块,以减少擦写次数提高块的寿命。
  • 但这样就会造成原本块上的相同数据变成无效(先把原本块的内容读出来,再和新的数据合并写到另外一个地方,但没有擦掉原本的块,只是在 FTL 表上把原来的块标注为可擦除),所以主控还负责等到这些有无效数据块累积到一定的数量时,再一次性地把这些块擦除(不同的垃圾回收算法会稍有不同),得到可用的空白闪存块,这个过程就是垃圾回收,也是主控和 FTL 算法的主要工作。
  • 另外固态还有一个类似的专有机制叫做 TRIM,这个机制更加极致,如果系统(比如 WIN10)检测到固态硬盘支持这个指令,那么删除数据的时候根本不会发出删除指令,只会建立那个部分的磁盘快照(在空白块建立快照的速度比擦除那一块再写入要快得多),然后把这个快照交给主控,主控就会在空闲时按照这个快照去慢慢擦除对应的块,等擦除完成再通知系统,这样下次系统需要写个数据的时候就可以直接写入对应的块了。

CrystalDiskInfo 可以看到固态一般都是支持 TRIM 指令并默认开启

大部分系统都是默认开启这项功能,以 Windows 为例,我们可以通过在命令行里面输入 fsutil behavior query disabledeletenotify 来查看 TRIM 有没有开启。其他系统也可以搜索一下类似的指令,想要关闭的话也可以通过类似的指令关闭。

通过命令行查看 TRIM 状态,显示已禁用就是开启 TRIM

  • 通过垃圾回收还有 TRIM 指令,不仅可以大大提升固态硬盘的写入速度,还能让所有块的擦除次数尽量平均,最大化延长闪存颗粒的寿命

控制通道和队列

  • 为了优化性能,固态硬盘会将闪存颗粒安置在多个通道上,每个通道都有一条 I/O 总线来接收输出数据,每个通道也有一个独立的通道控制器负责和主控通讯,并把主控不断发过来的读取写入命令弄成队列,然后一条条交给对应的闪存颗粒执行。
  • 因为固态硬盘不像机械硬盘有机械结构,分出多条通道就意味着可以同时执行多条指令,保证固态能发挥最高性能。而且通道控制器生成的队列也有深度参数,也就是一条队列能有多少条命令排队,现代的 NVMe 固态硬盘使用的 NVMe 协议可以支持到几万条队列,每一个队列更是有几万个命令深度,所以可以同时支持上亿条读写命令,这也是 NVMe 固态硬盘顺序读取能达到 8GB/S 的重要原因

纠正 bit 翻转错误的 ECC 算法

  • 检查并修正闪存颗粒上储存单元的错误也是主控非常重要的一个工作。如果我们查看闪存颗粒针对企业的说明书,会发现上面还有一个重要的名词 —— (R)BER(Raw Bit Error Rate),也就是 bit 翻转率。
  • 上一章和这一章我们都多次提到,浮栅中的电子是会慢慢穿过绝缘层「越狱」跑掉的,这会导致读取时读到错误的数据,比如 SLC 一个储存单元写入了代表 0 的电子量,因为绝缘层磨损太严重,时间太久,或者环境温度太高等原因,里面的电子慢慢跑掉了大部分,那么在读取到这个储存单元的数据就会变成 0,那就是所谓的 bit 翻转。
  • BER 指的是一个储存单元出现错误的概率,RBER 指的是没有纠错算法时一个储存单元出现错误的概率。为了防止错误的发生,每次写入数据时主控都会将额外的校验码写到闪存页的额外储存区中,然后定时用校验码配合 ECC 纠错算法检查错误,如果发现某个储存单元发生了错误,纠错算法就会用校验码算出这个储存单元正确的数据重新写入
  • 由于需要经常纠错,并且每次都有大量的储存单元需要检测,一般会在主控内做一个专门用来纠错的硬件 —— 纠错码引擎,包含很多编码器和解码器,也是可以并行计算提高效率。
  • RBER 是衡量闪存颗粒品质的一个重要特性,也会随着闪存颗粒擦写次数的增加造成绝缘层磨损而变差,呈指数分布。

固态硬盘擦写次数和 RBER 的指数分布对应关系

  • 当一个储存单元经过纠错算法纠错之后,很快又再次出错,这个储存单元就相当于没救了,UBER(Uncorrectable Bit Error Rate)就是指发生不可纠正错误的几率,当 UBER 大到一定程度我们就可以说这个闪存颗粒报废了,当所有闪存颗粒的 UBER 都达到一定程度,那么这个固态硬盘就报废了。
  • 其实不仅是写入,每个闪存块如果读取多了也会让里面的电子量改变,从而导致数据出错,这个问题叫做读干扰

这里也可以看出 TLC/QLC 由于状态太多,更加容易出现纠错算法都纠错不来的错误。

控制缓存/模拟 SLC 缓存

  • 我们前面也有提到固态硬盘厂商为了成本与性能之间做个权衡,会在固态硬盘上放一个 DRAM 颗粒或者让一部分闪存颗粒模拟 SLC 来做缓存,读写数据的时候先写入缓存,空闲的时候再让缓存写入其他速度没那么快的颗粒。
  • 用 DRAM 作缓存通常是 1GB:1MB,这种方式比较好理解,为了防止断电掉数据,很多固态硬盘也加上了电容来给断电之后有时间让缓存数据写到闪存颗粒上,所以 DRAM 缓存没啥缺点。但是现在很多固态硬盘已经是没有 DRAM 缓存,所以我们仔细讲讲动态模拟 SLC 缓存。
  • 上面我们也学到了 SLC 和其它类型储存单元物理上使用的是一样的浮栅储存单元,所以厂家就想到干脆牺牲一部分容量把 MLC/TLC/QLC 固态硬盘的一部分模拟成 SLC,把这部分 SLC 当做缓存来用。这样厂商就能节省下一个比较贵的 DRAM 颗粒同时让固态硬盘又能小一点点,总体成本下降不少(至于售价降不降,那就看厂商的良心了)。很多业内人士和评测博主都不会给没有 DRAM 的固态硬盘太好的评价,因为 DRAM 缓存和 SLC 缓存两者的速度差别实在太大,同时用闪存颗粒的一部分用来做缓存也会让闪存颗粒寿命更短。
  • 当固态硬盘使用 DRAM 时,主控还负责动态调整 SLC 缓存的空间。毕竟如果固定用一块地方做 SLC 缓存,每次读取写入数据都要过这部分,质量再好的闪存颗粒也会瞬间暴毙。所以主控一般会动态分配不用的块作为 SLC 缓存,用一段时间之后再清除 SLC 缓存上的所有数据恢复成 TLC/QLC 等其它类型(这个过程一般叫做升/降级)
  • SLC 缓存除了速度不够快,还有另一个显著的缺点,那就是缓存容量会随着固态硬盘剩余容量而减少。比如一个 256G 的 QLC 固态硬盘,厂商如果分配 30GB 的 SLC 缓存,那就要占用 30*4 = 120GB 的 QLC 空间,当用户把这块固态硬盘用到 256-130+30=156GB 以后,剩下的空间就不足以分配这么多的 SLC缓存。
  • 良心点的厂商还会额外加点空间补回来,没良心的厂商直接就破罐子破摔,毕竟用户用到 156GB 以后可以通过减少 SLC 缓存容量的方式让用户继续装数据,不过这样子固态硬盘速度就会越来越慢,最后变成 QLC 的真实速度。很多垃圾固态硬盘被人戏称为大号 U 盘,就是没有缓存以后实际速度会降到连 U 盘都不如,甚至顺序写入都只有几 MB,甚至比不过机械硬盘

杂牌「大号 U 盘」固态硬盘的缓外速度,图片来源:什么值得买@blackocean

  • 另外现在还有 HMB 等类似的技术,原理就是支持的操作系统可以将运行内存分出一部分来当做固态硬盘的缓存,这样既不用 DRAM 颗粒节省成本,也避免了 SLC 缓存的缺点。不过目前好像只有 NVMe 固态硬盘加上 WIN10 1709 以上版本才能开启这个技术

我手上的西部数据 SN550 宣传页面就着重宣传了这个技术

OP 空间

  • 看完上面那这部分,细心的朋友可能就会发现,固态硬盘除了用户数据外,还有很多额外的数据要装 —— FTL 映射表、纠错用的校验码、SLC 缓存等等。
  • 所以厂商通常会把固态硬盘的实际容量做得比标称容量大,根据良心程度大 5%~30% 不等,也就是说 256G 的固态硬盘真正空间甚至能有 332GB。多出来的这部分空间就叫做 OP 空间(OP= Over Provisioning,就是额外提供的意思)。
  • 这部分空间也是动态的,由主控进行调整。除了放我们上面说的那些额外数据外,当部分储存单元坏掉的时候,主控还负责把 OP 空间里面的容量释放到正常用量里,保证用户能使用的总容量不变。另外多出一部分空间来平衡擦除次数,也可以一定程度上延长固态硬盘的寿命,如果有 30% 容量的 OP 空间甚至可以将固态硬盘寿命延长 50% 以上。
  • 一些玩固态硬盘的发烧友,所谓的开盘其中一部分操作就是用特殊的工厂软件把这部分空间开出来,获得额外的免费容量。想折腾手上又刚好有空闲固态硬盘的朋友可以自己去找下对应品牌的工厂软件玩一下。

东芝的固态硬盘管理软件可以很方便地调整 OP 空间

  • 至于我们如何查看缓存容量和 OP 空间大小,OP 空间一般需要对应品牌的工厂软件才能看到,缓存容量则是要通过实际测试跑出来,下面实际测试部分,我会仔细教大家怎么做。

主控协议 ONFI/Toggle

  • 至于闪存颗粒接口标准和主控之间的交互协议目前则有 ONFI/Toggle 两种,厂商也围绕这两个协议组成了联盟,ONFI 协议联盟主要有英特尔,镁光,海力士;Toggle 协议主要有三星和东芝,ONFI 协议主要就是为了对抗三星东芝的垄断而诞生的,背后也有一段故事。这个协议的具体还有它们背后的故事,我在这里就不细说了,感兴趣的朋友可以看看相关文献里面的内容,或者自己去找找。
  • 看到这里我们已经了解的主控经常用的工作内容,算法越高级每个部分效率越好,而更高级的算法对主控性能的要求就更高。相信大家对主控性能和算法质量的重要性有了更加深刻的理解。
  • 就像 CPU 需要散热风扇一样,现在固态硬盘主控性能日益提升,和颗粒产生的热量一起已经需要散热马甲来压住,等以后甚至还要给固态硬盘专门准备散热风扇了。

温度上来后 PCIe4.0 的固态硬盘速度立马就下去了

其它固态硬盘参数:

P/E(Program/Erase Cycle) 循环擦写次数

  • 在固态硬盘部分,我们反复介绍到擦除对闪存颗粒寿命的影响响,实际上有专门的参数去量化固态硬盘的寿命,就是 P/E
  • 一个 P/E 就是将整个固态硬盘上所有的块擦除一次,如果一块固态硬盘产品参数上写着 10000 P/E,那就意味着将这块固态硬盘产出 1 万次后,里面的储存单元将无法储存电子,也就是这个固态硬盘的寿命。
  • 通常 SLC 固态硬盘的 P/E 在 100000 次以上,MLC 固态硬盘在 10000 次,TLC 固态硬盘在 3000 次,现在越来越多的 QLC 固态硬盘更是只有可怜的 1000 次以下(金士顿 Kingston,2021.04)
  • 听起来是不是比想象中要少多了,有些朋友甚至会怀疑 QLC 固态硬盘到底能用多久。但上面我们介绍主控工作内容的时候,所有工作内容最后要实现的效果,几乎都有减少块磨损这一项,为了减少磨损做的操作统一起来叫做磨损均衡

原本 P/E 指的是每个储存单元擦写一次,但因为有磨损均衡在,优秀的 FTL 算法和 OP 空间让每个储存单元都能尽量平均擦写,所以 P/E 就变成了将整个固态硬盘上所有的块擦写一次。

  • 我们用实际场景来看看,假如一个 512G 的固态硬盘,每天写入 20G 的数据,那么:
    • SLC 固态硬盘理论寿命在 512*100000/20≈7000 年。
    • MLC 固态硬盘理论寿命在 512*10000/20≈700 年。
    • TLC 固态硬盘理论寿命在 512*3000/20≈200 年。
    • QLC 固态硬盘理论寿命在 512*1000/20≈70 年。
  • 以后普及的 PLC 固态硬盘如果按照现在技术理论寿命在 512*35/20≈2年。
  • 看起来是不是除了 PLC 以外还好,但所有类型的固态硬盘实际寿命都会更长。首先每日 20G 的写入量,即使以系统盘来讲也算是比较多的,除非你天天安装卸载很多软件游戏,或者高清影音文件,不然用不了那么多。
  • 其次按照上面的计算,大家有没有发现容量越大寿命越长,所以如果你用的是大容量的固态硬盘,无论是什么类型的颗粒基本都不用担心寿命的问题。所以很多人买固态硬盘关注 P/E 循环擦写次数,其实没有太大意义

当然,如果按照另外一种计算方法就会比较惊悚,那就是连续写入,就是 24 小时不断写文件进去固态硬盘,按照这种计算方法 QLC 只需要三天就会挂掉。这种场景民用领域比较小众,但还是有的,比如挂 PT 下载或者做监控和直播,这种情况就千万不要选择 SLC 以外的固态硬盘了。

  • 其实固态硬盘写入还有一种叫做写入放大的问题,首先就是上面提到的空闲时 GC 垃圾回收还有 TRIM 机制造成的无效数据搬运,增加擦写次数的问题;另外当用户使用固态硬盘大部分容量之后(比如 512GB 用了 400G),只剩下一小部分可用空间来装新数据,如果这个时候用户就不动前面这 400GB 然后不断删除再写入新数据,这个时候主控再怎么做磨损均衡,也只能把数据写在那 100GB 的闪存块里,导致这 100GB 闪存块擦写次数要比剩下的 400G 多得多。就会让固态硬盘实际寿命短不少,剩下这部分空间也容易出现错误,不断纠错导致读写速度下降,这也是固态硬盘使用容量多之后掉速的原因之一

写入量参数:TBW/DWPD

  • 与其关注 P/E,写入量更为重要,这点是有厂商背书的。虽然民用固态硬盘一般不会标出预计写入量,但企业级固态都会标出 TBW/DWPD,而且会以这个作为保修的标准之一
  • TBW(TB Write)就是固态硬盘的总写入量,一般都会写在厂商保修条款里面:
  • 单位就是 TB,一般保修年限和 TBW 以先到的为准。TBW 单位是 TB,别以为普通用户用不了这么多,这里放个只挖了几个月虚拟货币的固态硬盘参数给大家开开眼:

挖了几个月矿的西部数据 SN550,读写都快 1200TB 的固态硬盘你见过吗

  • 更别说企业用户了,所以对于写入量更大的企业用户还有另外一个参数 DWPD,这个参数代表每天全盘写入次数,也就是每天写满多少个硬盘容量。
  • DWPD 一般只有用料十足卖的贼贵的企业级固态才敢这么标,民用级固态可不敢这么玩,拿我们上面举例的 512GB QLC 固态来讲,与普通企业级硬盘 10DWPD 也就是每天写 10 个盘容量来算:512*150/5120=15 天,半个月就能把这个盘干废了,所以知道为什么买二手硬盘要小心小心再小心了吧。而企业级固态这么玩还能有几年的保修时长,足以看出颗粒和主控品质的差距。

三星关于 DWPD 和 TBW 的介绍

  • TBW 除以固态硬盘本身的容量就可以转换为 P/E 次数,DWPD 乘以保修时长大概就可以得到 TBW。
  • 总体来讲,一块闪存颗粒或者说固态硬盘的寿命是以颗粒类型为基底,好的颗粒质量和主控算法能在此基础上让寿命延长。

查看固态硬盘寿命

  • 看到这里很多朋友是不是已经迫不及待想知道自己固态硬盘的剩余寿命了,其实固态硬盘主控都帮我们统计好了读取和写入量。使用 CrystalDiskInfo 这类软件就可以直接看到总写入量和读取量,然后再查看你的固态硬盘对应的产品参数,结合颗粒类型就可以算出这个固态硬盘的健康程度和剩余寿命。另外说一下 CrystalDiskInfo 左边的健康度其实大概也是这么算出来的,不过偏向保守,实际数值会比这个差,CrystalDiskInfo 显示 60% 以下基本就可以当做寿命快到了。

CrystalDiskInfo 的健康度和总写入读取量

  • 按照我用来做系统盘的普通 NVMe 固态硬盘来讲,已经使用了得有两三年了吧,目前写入量 18401GB,换算成 P/E 大概是 71,按照 TLC P/E 来讲才消耗了 14% 的寿命。这就是我一个日常用户大概的使用情况,所以说与其担心颗粒寿命不如担心一下主控能不能挨这么久,毕竟大部分固态坏掉的都是主控,颗粒还能被厂商回收起来再次利用。

相关文献:

  1. 固态硬盘的主要尺寸标准可以参考全球网络储存工业协会 SNIA 的介绍。
  2. NVMe 协议以及对应控制器的详细情况,可以参考这份 NVM Express 官方的开发者文档。
  3. 查看储存颗粒详细参数可以上 https://www.flashinfo.top/ 这个网站或者使用 FlashMaster,另外这里也放一份俄罗斯人 Ochkin Vadim 制作的 Flash ID 读取工具。
  4. 闪存颗粒的生产过程可以看一下镁光官方在 YouTube 上传的视频「Making Memory Chips – Process Steps」。
  5. ONFI 与 Toggle 协议的介绍可以查看各自的官方文档「ONFI Specifications」和 「TOSHIBA memory Toggle DDR1.0 Technical Data Sheet」。
  6. 各家固态硬盘更新固件,还有开盘的工具:铠侠(东芝)固态硬盘固件管理工具 Kioxia Storage Utilities,三星固态硬盘管理工具 Samsung SSD Magician Software,西部数据固态硬盘管理工具 WD SSD Dashboard。
  7. 未来我们能买到的便宜的 PLC 颗粒的介绍。
  8. 关于我们常看见的 BiCS4 3D NAND 名词可以参考铠侠(东芝)官方的介绍

测试固态硬盘的实际性能:

  • 了解完对应的参数之后,我们就来到了实际测试环节了。在这个环节使用的软件和基本参数反映的意义与机械硬盘部分都差不多,有一些在固态硬盘特性加持下会有一些不同。
  • 但我们需要知道的是,和机械硬盘直接跑就能获得比较准确的速度不同,固态硬盘在不同负载和扇区大小的情况下,性能都会有明显的差别。除此以外,不同的文件系统,不同的CPU,不同的内存主板供电,甚至是不同操作系统的格式化方法等等都会影响到固态硬盘的实际性能,有时候带宽足够固态硬盘也会跑不出标称的性能,最重要的还是散热,不同的散热对高端固态硬盘的性能有巨大的影响
  • 也正因为如此固态硬盘的标准测试方法,一直都众说纷纭,特别是行业联盟或者业内给出的测试方法往往过于复杂,要求很高,对于普通用户不太适用。这种复杂程度也让固态硬盘的国标测试方法直到最近才出来(GB/T 36355-2018,2019 年生效)

固态盘测试国标 GB/T 36355-2018 封面

  • 但国标测试方法对普通用户而言还是有点复杂,所以通常用户自己使用的时候,只需要按照我下面给的方法测试一下,接近标称性能就足够了,不过这种波动也成为很多无良厂商混用主控,偷偷更换内存颗粒的借口。

测试环境:AMD 5600X + 华硕 B550M-PRO + 海盗船复仇者 8G*2 3200Mhz,室温 27℃ 空闲固态硬盘无散热马甲(吐槽一下华硕主板 PCIe3.0 M.2 接口有散热马甲,PCIe4.0 M.2 接口反而没有就离谱),新建简单卷关闭文件压缩。

空盘、半盘、满盘测试:

  • 测试方法简单总结就是:空盘,半盘,和满盘测试。在这部分我们依旧使用 ASS SSD Benchmark 和 CrystalDiskMark 这两款软件。

注意,以下测试基本都是最极端的情况,实际使用情况会比测试结果好

  • 我们以 aigo 性价比 SATA 固态硬盘 S500 和高端 NVMe4.0 固态硬盘 P7000 为例:
  1. 首先是两个盘刚刚格式化之后,或者容量为空的时候,开始用两个测试软件跑一次测试。

SATA 固态硬盘 S500 空盘测试结果

NVMe4.0 固态硬盘 P7000 空盘测试结果

  1. 接下来我们可以用手头上的大文件,比如电影或者游戏安装包等等来把硬盘的容量用到一半,接下来再进行同样的测试。

SATA 固态硬盘 S500 半盘测试结果

NVMe4.0 固态硬盘 P7000 半盘测试结果

  1. 最后我们把所有的固态硬盘容量用到只剩 50GB 左右,再进行最后一次测试。

SATA 固态硬盘 S500 满盘测试结果

NVMe4.0 固态硬盘 P7000 满盘测试结果

  • 如果你只想测试不同容量下的日常速度,每次填满到目标容量之后等待 0.5~1 个小时让缓存容量恢复(上面测试就是这种);如果你想测试固态硬盘缓存外的极限速度,那么这几次测试过程最好是连续的,另外如果你想获得更加准确的数据,可以把软件跑的数据量从 1GB 提升到 10GB,但是测试时间会长很多很多。
  • 测试过程从头到尾不要让其它硬盘占用带宽,同时建议打开 CrystalDiskInfo 或者类似软件来实时监看固态硬盘温度,如果温度过高,性能低就不关固态硬盘本身的事了,需要我们自己加强散热。
  • 之所以我们要这样测试,是因为厂商对于固态硬盘通常标注的都是空盘 1GB 测试容量下连续读取的速度,也就是最理想情况下最好的那个数据。我们日常使用基本上不会有这种良好的场景(比如你不会买一个固态硬盘一直让它空着吧,也不会每天都只复制单个 1GB 左右的文件吧)。
  • 我们分为空盘,半盘和满盘来进行测试,不仅可以模拟日常使用固态硬盘各个阶段的实际场景,满盘容量加上连续的测试也可以让 DRAM 和 SLC 缓存都被用完,测出真正的缓外速度,看看厂商的颗粒主控质量。
  • 如果一个固态硬盘跑分和官方标称的速度差不多,并且空盘半盘满盘三个状态下跑分速度都没有明显掉速,或者只有满盘状态下才会有不严重的掉速,那么这个盘的质量还是很不错的。如果半盘的情况下开始掉速,但不严重,那么这个盘的质量还可以。如果半盘或者写入量大一点就开始严重掉速,那么这个固态硬盘的质量就需要好好考虑了。

HD Tune Pro:测出缓外速度和缓存容量:

  • 上一个测试,算上填满容量的时间需要蛮久的,特别是当一些固态硬盘缓外速度比较慢的时候,整个过程还是挺煎熬的。而且要进行 5,6 个步骤,还挺麻烦。如果你想要简单直接一点就能测出最好的速度和缓外速度,顺便还能大概估算出缓存容量,那么可以试试使用 HD Tune Pro。

HD Tune Pro 界面

  • HD Tune Pro 原本是为测试机械硬盘而设计的,所以对于固态硬盘的测试数据仅供参考。但它有一个优点,可以设置自动写入不同类型的文件直到达到特定的硬盘容量来测试。并且测试的结果有很明确直观的图表,这样就很方便,我们看出缓存内和缓存外的速度,通过跌下来的那一瞬间,我们还可以判断出固态硬盘大概的缓存容量

SATA 固态硬盘 S500 写速度与缓存容量

SATA 固态硬盘 S500 读速度与缓存容量

NVMe4.0 固态硬盘 P7000 写速度与缓存容量

NVMe4.0 固态硬盘 P7000 读速度与缓存容量

  • HD Tune Pro 的使用有一点需要注意,就是需要硬盘没有被格式化而且没有分区,不然选择写入的时候就会提示写入已被禁用。如果已经建好分区卷,可以在 Windows 的磁盘管理里面选择对应的磁盘右键选择删除卷就可以了。另外软件默认的块大小是 64KB,与其他测试软件对比时块大小要对应才可以

对应的固态硬盘要未分配才行

实际复制测试:

  • 很多同学觉得这样子测试耗时也比较长,不如我直接拿大文件来复制粘贴测试算了。虽然这样子也能测试出实际的使用场景,但前提是你必须保证大文件所在的原始盘读取速度要大于目标盘的写入速度,无论你是测 4K 还是连续读写都是一样。比如极端一点,你从一个机械硬盘复制 50GB 的电影到 NVMe 固态,那么你测出来的写入速度就只有 100MB/S 左右,之所以使用测试软件,就是因为测试软件它的测试文件是生成在运行内存里的,速度保证能达到最快
  • 保证原始盘比目标盘快的情况下,我们只需要在原始盘准备大约 30~50G 的单个文件和 1000 个小文件(比如图片或者小说),就可以通过反复复制查看缓存内与缓存外的速度了。
  • 空盘情况下,如果速度再复制某个文件的时候突然掉下来,那么这时候查看固态硬盘已用容量,大概就是固态硬盘缓存的大小了。

测试缓外速度的意义:

  • 有些朋友可能会问了,我们日常使用固态硬盘基本都没有这么大的文件或者这么长时间的读写,那么测试缓外速度和缓存容量还有意义吗?
  • 不管我们自己跑,还是查看别人的评测,缓存容量都是很有必要测试的一项,虽然一般缓存我们用户日常也够用了,通常也不会有很多写入超过缓存大小文件的场景。不过如果是电影文件或者安装系统游戏的时候,还是有可能跑出真实速度,所以我们平时也是要测试固态硬盘缓存外速度的,如果缓存外的速度特别烂,那这个固态用料和厂商的良心也好不到哪里去。而且首先既然缓存是比较快的,那么同样价格买到的固态硬盘,缓存容量和缓存外速度自然是越大越好
  • 上面几种测试方法,一般都是给用户或者媒体简单测试一下使用的,想要查看更详细准确的数据或者做更专业的测试,可以使用 FIO 等这类专业的储存设备测试软件,不过它们通常没有安装包下载,需要自己根据使用平台去编译源代码,使用的时候也是要用命令行,普通用户用我推荐的软件方法去测试就足够了。

相关文献:

  1. 英睿达 Crucial 官方的简单固态硬盘测试方法。
  2. 国家标准 GB/T 36355-2018《信息技术 固态盘测试方法》
  3. 希捷科技 Seagate 的固态硬盘性能测试方法。
  4. JEDEC 固态技术学会发表的固态硬盘测试标准和固态硬盘负载测试标准。

分享知识,分享经验……

发表回复