为了展示它的性能,我豁出去了,消耗了将近1TB的读写量,来进行测试。但是由于时间有限,所以并没有每次测试之后都完全擦除,所以结果仅供参考。每种软件也仅仅测试了默认的参数(想必很多人都是用默认参数测试的)的和最大文件尺寸的(基本都是32GB)的测试,其他参数都没有修改。空盘测试后执行一次格式化,并等待一段时间让其恢复速度。究竟有没有参考价值,各位自行斟酌吧。作为对比,把我作为系统盘的建兴T10(老的MLC版)拉了出来,因为是正在使用中的盘,也没法全盘清零,所以也请见谅。P1 1TB的官方标称速度是连续读2,000MB/s,连续写1,700MB/s,4K(Q8T8)随机读170k IOPS,4K(Q8T8)随机写240k IOPS。使用的主控是慧荣SM2263主控,闪存颗粒是镁光自己的3D QLC NAND。MTTF是180万小时,TBW是200TB。软件均使用最新版本,从官网下载。CrystalDiskInfo这个软件是看磁盘信息的,可以看到是一块新盘(读写和启动次数都是我测试产生的)。闲置时温度40多度,工作时可以到60多度。下面有请陪练。CrystalDiskMark版本:6.0.2首先我们用官方的测速软件来练练手,不过我用的版本比较新,测试的项目和之前的版本有所不同。首先是默认的1GB测试数据大小。可见还是能达到官方的标称连续读写速度的,4KB(Q8T8)随机读写换算一下(速度(MB/s)×1,024(KB/MB)÷4(KB/io)),读178,048 IOPS,写238,771 IOPS,也是能达到官方标称的。和MLC的建兴T10还互有胜负,看起来还是不错的。下面32GB测试数据大小看看。32GB下连续读倒是没太大变化,连续写就掉得很多(估计是SLC缓存爆了,关于SLC缓存见下面“附加赛”),4KB(Q8T8)随机读也严重下降,写反而没太大影响,有懂的帮分析分析?建兴T10倒是稳如狗,只有些许下降,甚至写还有提升?这一定是随机误差。AS SSD Benchmark版本:2.0.6821.41776其实测试软件找一两款就够了,但是考虑到大家偏好都不同,所以还是都测一测,方便对比吧。下面每两张图是一组,分别显示速度和IOPS,都是同一次测试的。还是先上1GB的。虽然连续读的速度比官方标称的小,但我相信是随机误差。下面10GB的。可以看到10GB的数据和1GB的相差不大,可见10GB还没有爆SLC缓存,AS SSD Benchmark的参数设置还是太保守了。TxBENCH版本:0.96 beta因为TxBENCH的Advanced Benchmark需要未分区的盘来测试,所以我只进行了Basic Benchmark的测试。默认的Measurement size是512MB。最大的Measurement size是32,768MB(32GB)。速度比512MB下降严重,连续读腰斩,连续写甚至只有三分之一了,妥妥地爆缓存了。Anvil's Storage Utilities版本:1.1.0默认Test size是1GB的。最大Test size时32GB。ATTO Disk Benchmark版本:4.01.0f1这也是老牌测试软件了,I/O Size全部都是512B到64MB。下面的图片也是两张一组,是同一次测试,用不同的单位表示。涉殴胃结石一下,这个软件表示的是用I/O Size作为每次I/O操作的数据量,然后读取或写入File Size的文件。比如256MB用1MB的I/O Size读写就是读写256次,用2MB就是读写128次,所以可以看到I/O Size越大IOPS反而越小。File Size首先时默认的256MB。接下来是32GB的File Size。附加赛首先来说说SLC缓存。SLC就是一个存储单元只有2种状态(分别表示二进制0和1),因为只对应1个比特位,修改时也只修改对应的比特位。而后面出现的MLC一个存储单元有4种状态(分别表示00、01、10、11),对应2个比特位,就算只修改其中一个比特位,也要同时操作两个比特位。再后来的TLC就是8种状态(000、001、010、011、100、101、110、111),对应3个比特位。而QLC就是4个比特位16种状态了(0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111)。所以说为啥三星的4-bit MLC是骗人的。研究发现,大多数时候的读写操作只会操作较少的数据量,很少会出现一次操作上百GB的情况。所以先用一部分存储单元模拟SLC作为缓存(把存储单元一半的状态当作0,另一半状态当作1,比如QLC就是把其中8种状态当作0,另外8种状态当作1),这样虽然会损失一些存储空间(毕竟原来4比特现在只能表示1比特了),但是速度却大大提升。对大多数情况来说,模拟SLC缓存这部分已经足以应对,当SSD空闲时,主控再把这些数据搬迁到其他单元里储存起来。缺点就是一旦数据量超过模拟SLC缓存的这部分,就只能直接写入其他单元了,速度就大大下降。还有个缺点就是如果搬迁数据时突然断电,会有可能丢失数据。下面我们就来测测这个搬迁前后的速度。下面就只用CrystalDiskMark来测试了。先复制大量数据数据,在结束复制后然后马上测试速度。可以看到,这个速度和32GB测试量的数据除了连续读都大幅下降之外,其他的基本一致,可见32GB变慢就是爆SLC缓存了。然后静置一段时间再测试。可以看到,除了连续写之外,基本都已经恢复了。那么为什么连续写无法恢复到原来的速度呢,这里涉及到另一个知识点了。首先我们要知道,擦除是比读写慢得多的操作,而且擦除是会损耗存储单元寿命的。固态硬盘擦写时并不是一个存储单元一个存储单元地操作,而是把一些存储单元作为一个集体一起操作,其中擦除(将存储单元恢复到初始状态,一般是全1)操作的最小单位叫做Block,而写入操作(将1改写成0)的最小单位叫做Page。一个Block包含若干个Page。如果一个Block中还有空的Page,那么它是可以直接写入的,但如果Page都写入过了,那么这个Block需要擦除之后才能写入。对于空白的SSD,我们只要一个接一个地把Block写着下去就行了,不涉及擦除操作,所以速度很快。但如果我们删除了一些数据呢?那么这些Block就不“干净”了,有“垃圾”了。对于整个Block都不干净的,主控直接擦除就行了。但有的Block只有部分数据是没用,还有一些有用的。主控会把这些有用的数据整理起来放到干净的Block里,然后再把不干净的Block擦除。这个过程就叫做“垃圾回收”。在我们多次写入和删除文件之后,不干净的Block明显会增多,这个时候主控还来不及垃圾回收,我们就要写入新的数据,速度就会有明显受到影响影响了。这也就是为什么SSD会越用越慢了。特别是SSD的占用越多,可供垃圾回收利用的干净Block越少,速度会越慢。我们可以静置一段时间,让主控完成垃圾回收,这样我们就有更多的干净Block可以写入了,速度会有所恢复。其实SSD都会保留一部分空间,不会计入到可用空间中,就是为了让数据快写满时也有干净的Block可以进行垃圾回收,而不至于发生全部都是不干净的Block造成无法写入。说到垃圾回收就不得不说另一个东西——TRIM。操作系统的文件系统在删除文件时,并不会真正地删除数据,而只是标记这个地方没用了,下次如果用到时再覆盖。但是SSD主控不知道,它还是会认为这些已经被删除的数据还是有用的,从而不对这些被删除的数据进行真正地删除操作,甚至还在垃圾回收过程中将他们搬来搬去。而TRIM指令就是操作系统在删除时告诉SSD,这些数据已经没用了,从而主控就可以对相关的Block进行垃圾回收。下面就是我将盘基本写满(90%),再静置了几个小时之后的速度。可以看到,除了连续写,都恢复得和空盘差不多了(有的甚至比空盘还好,估计是因为我的空盘并不是完全擦除的有关)。垃圾回收效果十分显著。尾声非常抱歉,由于时间和精力有限,没法给大家奉上更加详实准确的数据。相信看过上面的数据,各位对这款SSD能有自己的判断了。(完)
阅读全文