之前在测试BitLocker不同的软件加密算法的性能时,为了让硬盘尽可能发挥其最大性能,于是需要对比硬盘安装驱动前后的性能差距。但在安装驱动时,遇到了驱动识别不到硬盘的问题。查阅了解后,发现是Intel的VMD模式的问题。之前在重装系统时虽然也受到了因VMD模式而无法识别到硬盘的困扰,但通过用最新版的PE工具箱,在VMD模式下最终顺利识别到硬盘,当时也就没继续深究了。用的PE工具箱是WEPE 2.3,之前2.2版本的无法识别,其他的PE工具箱不敢用,因为许多PE工具箱的作者没良心。
在查阅VMD模式的相关内容时,我了解到的是该模式主要面向企业级用途,用于主机上的NVMe硬盘热插拔和RAID(对于我这个单硬盘位的笔记本完全没用),对于性能方面的描述却没找到。在查阅过程中,还发现大多数“受害者”是“打人硕”的用户,当然我也是……但考虑到该模式和一般的硬盘驱动模式有明显的不同,因此其性能表现就值得被注意了。
事先声明:由于本测试的选用环境无法确保其足够的广泛性,因此仅作参考,无法保证本测试绝对的代表性。

本次的测试环境:CPU:Intel Core i9 13900H;内存:DDR5 32GB 4800MHz;操作系统:Windows 11专业版(已开启高性能模式并开启独显直连);测试工具:CrystalDiskMark;单回测试循环次数:5轮;基准文件:1GiB.
硬盘使用Solidigm P44 Pro 1TB和Samsung PM9A1 1TB. 使用P44P会分别对比在不同硬盘驱动模式下安装操作系统后的测试结果,由于PM9A1为日常使用盘,因此仅展示在VMD模式下安装操作系统后的测试结果。
为了能更细致地(不是更深入)了解不同模式的性能差距,这里展示具有不同参考指标的文本结果。至于最终结论的话,看到这里并且看过我对BitLocker不同加密算法性能对比的人而言,其实已经可以从我的上次测试中知道这次的结果了。

首先,在VMD模式下的P44P安装操作系统完成后,保持VMD模式不改变,进行的测试结果如下:

[Read]
SEQ 1MiB (Q= 8, T= 1): 7151.819 MB/s [ 6820.5 IOPS] < 1130.53 us>
SEQ 1MiB (Q= 1, T= 1): 5875.606 MB/s [ 5603.4 IOPS] < 178.38 us>
RND 4KiB (Q= 32, T= 1): 908.819 MB/s [ 221879.6 IOPS] < 139.69 us>
RND 4KiB (Q= 1, T= 1): 82.158 MB/s [ 20058.1 IOPS] < 49.72 us>
[Write]
SEQ 1MiB (Q= 8, T= 1): 6520.956 MB/s [ 6218.9 IOPS] < 1284.05 us>
SEQ 1MiB (Q= 1, T= 1): 5461.746 MB/s [ 5208.7 IOPS] < 191.86 us>
RND 4KiB (Q= 32, T= 1): 689.495 MB/s [ 168333.7 IOPS] < 184.05 us>
RND 4KiB (Q= 1, T= 1): 351.476 MB/s [ 85809.6 IOPS] < 11.58 us>
[Mix] Read 70%/Write 30%
SEQ 1MiB (Q= 8, T= 1): 6017.450 MB/s [ 5738.7 IOPS] < 1391.95 us>
SEQ 1MiB (Q= 1, T= 1): 4395.055 MB/s [ 4191.5 IOPS] < 238.41 us>
RND 4KiB (Q= 32, T= 1): 841.816 MB/s [ 205521.5 IOPS] < 150.72 us>
RND 4KiB (Q= 1, T= 1): 108.384 MB/s [ 26460.9 IOPS] < 37.69 us>

之后,不重新安装操作系统,关闭VMD模式,在没有额外驱动(以下简称“无驱动模式”,VMD模式开启时也需要该模式专用的驱动)的情况下,进行的测试结果如下:

[Read]
SEQ 1MiB (Q= 8, T= 1): 7152.776 MB/s [ 6821.4 IOPS] < 1171.39 us>
SEQ 1MiB (Q= 1, T= 1): 5509.442 MB/s [ 5254.2 IOPS] < 190.19 us>
RND 4KiB (Q= 32, T= 1): 908.794 MB/s [ 221873.5 IOPS] < 139.61 us>
RND 4KiB (Q= 1, T= 1): 78.956 MB/s [ 19276.4 IOPS] < 51.75 us>
[Write]
SEQ 1MiB (Q= 8, T= 1): 6736.423 MB/s [ 6424.4 IOPS] < 1243.19 us>
SEQ 1MiB (Q= 1, T= 1): 4865.881 MB/s [ 4640.5 IOPS] < 215.33 us>
RND 4KiB (Q= 32, T= 1): 574.270 MB/s [ 140202.6 IOPS] < 221.02 us>
RND 4KiB (Q= 1, T= 1): 288.873 MB/s [ 70525.6 IOPS] < 14.11 us>
[Mix] Read 70%/Write 30%
SEQ 1MiB (Q= 8, T= 1): 5888.697 MB/s [ 5615.9 IOPS] < 1419.49 us>
SEQ 1MiB (Q= 1, T= 1): 4131.660 MB/s [ 3940.3 IOPS] < 253.52 us>
RND 4KiB (Q= 32, T= 1): 845.552 MB/s [ 206433.6 IOPS] < 150.26 us>
RND 4KiB (Q= 1, T= 1): 105.416 MB/s [ 25736.3 IOPS] < 38.77 us>

依然保持原来的操作系统和VMD模式关闭,在安装了Solidigm的专用驱动后,进行的测试结果如下:

[Read]
SEQ 1MiB (Q= 8, T= 1): 7152.763 MB/s [ 6821.4 IOPS] < 1161.19 us>
SEQ 1MiB (Q= 1, T= 1): 5613.445 MB/s [ 5353.4 IOPS] < 186.66 us>
RND 4KiB (Q= 32, T= 1): 884.078 MB/s [ 215839.4 IOPS] < 147.28 us>
RND 4KiB (Q= 1, T= 1): 81.551 MB/s [ 19909.9 IOPS] < 50.09 us>
[Write]
SEQ 1MiB (Q= 8, T= 1): 6491.241 MB/s [ 6190.5 IOPS] < 1283.44 us>
SEQ 1MiB (Q= 1, T= 1): 4901.527 MB/s [ 4674.5 IOPS] < 213.75 us>
RND 4KiB (Q= 32, T= 1): 621.662 MB/s [ 151772.9 IOPS] < 208.59 us>
RND 4KiB (Q= 1, T= 1): 350.657 MB/s [ 85609.6 IOPS] < 11.62 us>
[Mix] Read 70%/Write 30%
SEQ 1MiB (Q= 8, T= 1): 5925.451 MB/s [ 5651.0 IOPS] < 1404.17 us>
SEQ 1MiB (Q= 1, T= 1): 4153.782 MB/s [ 3961.4 IOPS] < 252.16 us>
RND 4KiB (Q= 32, T= 1): 820.688 MB/s [ 200363.3 IOPS] < 154.55 us>
RND 4KiB (Q= 1, T= 1): 107.596 MB/s [ 26268.6 IOPS] < 37.96 us>

保持VMD模式关闭,重新安装操作系统,再进行测试。到这里,由于在当前条件下的测试结果和之前在VMD模式下安装操作系统后再关闭VMD模式的测试结果基本一致(忽略正常的误差浮动),这里就不展示了,请参照无驱动模式时的情况。由于在此情况下,可视为两次无驱动模式下的系统状态一致,故不再安装Solidigm驱动再次测试。
在上述条件下,开启VMD模式,再进行测试,结果如下:

[Read]
SEQ 1MiB (Q= 8, T= 1): 6900.389 MB/s [ 6580.7 IOPS] < 1215.06 us>
SEQ 1MiB (Q= 1, T= 1): 5479.588 MB/s [ 5225.7 IOPS] < 191.24 us>
RND 4KiB (Q= 32, T= 1): 901.266 MB/s [ 220035.6 IOPS] < 140.78 us>
RND 4KiB (Q= 1, T= 1): 81.822 MB/s [ 19976.1 IOPS] < 49.93 us>
[Write]
SEQ 1MiB (Q= 8, T= 1): 6218.093 MB/s [ 5930.0 IOPS] < 1346.42 us>
SEQ 1MiB (Q= 1, T= 1): 5252.130 MB/s [ 5008.8 IOPS] < 199.53 us>
RND 4KiB (Q= 32, T= 1): 695.854 MB/s [ 169886.2 IOPS] < 182.39 us>
RND 4KiB (Q= 1, T= 1): 369.882 MB/s [ 90303.2 IOPS] < 11.00 us>
[Mix] Read 70%/Write 30%
SEQ 1MiB (Q= 8, T= 1): 5789.737 MB/s [ 5521.5 IOPS] < 1446.40 us>
SEQ 1MiB (Q= 1, T= 1): 4164.978 MB/s [ 3972.0 IOPS] < 251.56 us>
RND 4KiB (Q= 32, T= 1): 843.042 MB/s [ 205820.8 IOPS] < 152.55 us>
RND 4KiB (Q= 1, T= 1): 106.538 MB/s [ 26010.3 IOPS] < 38.34 us>

分析结果(忽略误差浮动):
在VMD模式下安装操作系统后,测试结果为:VMD模式在总体上性能优于无驱动模式,且基本完胜Solidigm驱动;而无驱动模式的表现总体上弱于Solidigm驱动。其中,无驱动模式在8队列顺序写入的3项性能表现均优于VMD模式,在32队列4K 7读3写的3项性能表现都略高于VMD模式,这一条件的对比结果也难以理解;无驱动模式在32队列4K读取和7读3写、8队列顺序写入的3项性能表现均优于Solidigm驱动。
在VMD模式关闭的状态下安装操作系统后,无驱动模式在读取方面的表现总体上优于VMD模式,但在写入方面的总体表现却相反,在7读3写的总体表现上两者差别不大。其中,VMD模式在单队列4K读取的3项性能表现均略高于无驱动模式,也可视为误差浮动;无驱动模式在8队列顺序写入的3项性能表现均优于VMD模式。
再测试PM9A1(操作系统在VMD模式下安装,由于该盘在日常使用,VMD关闭后再安装操作系统时的表现不进行测试),VMD模式开启时的测试结果如下:

[Read]
SEQ 1MiB (Q= 8, T= 1): 7066.944 MB/s [ 6739.6 IOPS] < 1186.40 us>
SEQ 1MiB (Q= 1, T= 1): 4713.932 MB/s [ 4495.6 IOPS] < 222.33 us>
RND 4KiB (Q= 32, T= 1): 762.080 MB/s [ 186054.7 IOPS] < 166.50 us>
RND 4KiB (Q= 1, T= 1): 96.869 MB/s [ 23649.7 IOPS] < 42.20 us>
[Write]
SEQ 1MiB (Q= 8, T= 1): 5244.356 MB/s [ 5001.4 IOPS] < 1597.47 us>
SEQ 1MiB (Q= 1, T= 1): 4587.353 MB/s [ 4374.8 IOPS] < 228.44 us>
RND 4KiB (Q= 32, T= 1): 630.474 MB/s [ 153924.3 IOPS] < 203.07 us>
RND 4KiB (Q= 1, T= 1): 264.233 MB/s [ 64510.0 IOPS] < 15.42 us>
[Mix] Read 70%/Write 30%
SEQ 1MiB (Q= 8, T= 1): 6158.172 MB/s [ 5872.9 IOPS] < 1356.66 us>
SEQ 1MiB (Q= 1, T= 1): 4113.576 MB/s [ 3923.0 IOPS] < 253.68 us>
RND 4KiB (Q= 32, T= 1): 732.038 MB/s [ 178720.2 IOPS] < 172.81 us>
RND 4KiB (Q= 1, T= 1): 118.450 MB/s [ 28918.5 IOPS] < 34.40 us>

接着,关闭VMD模式,进行的测试结果如下:

[Read]
SEQ 1MiB (Q= 8, T= 1): 6677.830 MB/s [ 6368.5 IOPS] < 1254.56 us>
SEQ 1MiB (Q= 1, T= 1): 4285.982 MB/s [ 4087.4 IOPS] < 244.45 us>
RND 4KiB (Q= 32, T= 1): 782.326 MB/s [ 190997.6 IOPS] < 162.19 us>
RND 4KiB (Q= 1, T= 1): 92.577 MB/s [ 22601.8 IOPS] < 44.16 us>
[Write]
SEQ 1MiB (Q= 8, T= 1): 4975.240 MB/s [ 4744.8 IOPS] < 1683.33 us>
SEQ 1MiB (Q= 1, T= 1): 4022.411 MB/s [ 3836.1 IOPS] < 260.45 us>
RND 4KiB (Q= 32, T= 1): 595.978 MB/s [ 145502.4 IOPS] < 212.97 us>
RND 4KiB (Q= 1, T= 1): 236.551 MB/s [ 57751.7 IOPS] < 17.23 us>
[Mix] Read 70%/Write 30%
SEQ 1MiB (Q= 8, T= 1): 6145.079 MB/s [ 5860.4 IOPS] < 1357.89 us>
SEQ 1MiB (Q= 1, T= 1): 3743.721 MB/s [ 3570.3 IOPS] < 279.00 us>
RND 4KiB (Q= 32, T= 1): 753.168 MB/s [ 183878.9 IOPS] < 168.06 us>
RND 4KiB (Q= 1, T= 1): 112.309 MB/s [ 27419.2 IOPS] < 36.28 us>

分析结果(忽略误差浮动):VMD模式开启时的性能表现总体上优于关闭时。其中与总体结果相反的个例为32队列4K读取和7读3写的3项性能表现。

本次测试到这里就结束了。我个人的话,就当前使用的这个本,我会在VMD模式下安装操作系统,并一直保持该模式开启,但在对SSD进行擦除或固件升级时会临时关闭VMD模式。因为在VMD模式下,SSD的PCIe通道会被接管,具体表现为:前面提到的专用驱动不认硬盘;在CrystalDiskInfo上无法识别传输模式(关闭VMD模式后便可有效识别);在TxBENCH上无法被识别为SSD等。
我个人认为,如果消费级硬件使用VMD技术的话,台式机上主板上的SSD插槽应该被设计得更容易插拔,笔记本应当设置可免拆D壳更换的副硬盘位,这样才能使VMD技术更好地发挥作用。如果主板厂商不能做到前面说的这些,且VMD技术在性能上没有优势的话,VMD技术就会和SSD加速机械的技术一样,成为失败的企业级技术对消费级的下放。

最后,有必要说明两个问题:
在VMD模式下安装操作系统,目前仅可在集成了VMD驱动的环境中安装,至本文发布为止,最新的Windows安装镜像中的预安装引导环境依然没有集成VMD驱动。并且在Windows系统文件复制完毕后,最迟在引导新系统之前,必须在新系统中集成VMD驱动,否则蓝屏没商量。具体的驱动预安装方式,可以对安装镜像进行驱动注入,也可用Dism++等工具直接对新系统进行安装,更具体的不再赘述。安装了VMD驱动后的结果如下图中展开的详细部分所示。该驱动在VMD模式打开的情况下不可卸载,否则依然是蓝屏没商量。

VMD模式的相关驱动
在现有的操作系统中,想要开启或关闭VMD模式,在BIOS中切换之后,以正常模式启动系统之前,必须先以安全模式启动一次系统,否则蓝屏没商量(与之前的RAID和AHCI模式切换的道理一样)。可以在进入BIOS之前,先打开msconfig将启动模式改为安全模式,更改完成后在安全模式中再打开msconfig取消安全启动模式。如果系统分区使用了BitLocker加密,到BIOS中更改之前务必在BitLocker管理中对系统分区暂停保护(不是取消加密),否则很有可能会被锁(因为当电脑硬件状态改变时,TPM便会拒绝解锁,而开启或关闭VMD模式意味着硬盘驱动模式的改变,通道控制方式也同时改变)。反正我没试过在没有暂停保护的情况下更改VMD模式,有哪位勇士尝试过的话,不管有没有被锁,都可进行反馈。在BIOS中更改VMD模式的方法,这里不再赘述。