答案1
4k 读取将是驱动器所能完成的最困难的事情。它们是驱动器能够处理的最小块大小之一,驱动器无法预加载大量数据,事实上,如果驱动器预加载逻辑打算读取大于 4kb 的任何数据,它们可能非常低效。
“正常”驱动器读取的数据更有可能大于 4kb,因为很少有这么小的文件,甚至页面文件也可能被大块读取,因为程序“仅”分页出 4KB 内存是很奇怪的事情。这意味着驱动器尝试执行的任何预加载实际上都会损害驱动器吞吐量。
4K 读取可能会通过驱动器缓冲区,但测试的“随机”部分使它们完全不可预测。控制器不知道驱动器何时可能再次需要更常见的“大”读取。
另一方面,4K 写入可以高效地缓冲、排队和顺序写出。驱动器缓冲区可以完成大量捕获和写入工作,磨损均衡器甚至可以将所有 4K 写入分配到同一个驱动器擦除块,偶尔将 4K“随机”写入变成更接近顺序写入的内容。
事实上我怀疑这就是“4K-64Thrd”中发生的事情,而“64-Thrd”是显然使用了较大的队列深度,从而向驱动器发出信号,表示它有大量数据需要读取或写入。这会触发大量写入集群,从而接近驱动器的连续写入速度。执行 4K 写入仍然会产生开销,但现在您可以充分发挥缓冲区的潜力。在读取版本的测试中,驱动器控制器现在意识到它处于非常恒定的高负载下,因此停止预加载数据,可能避开缓冲区,而是切换到“原始”读取模式,再次接近连续读取速度。
基本上驱动控制器可以做某物使 4K 写入更有效率,尤其是当它们集群在相似的时间到达时,而它无法使单身的4K 读取更高效,特别是当它尝试通过将数据预加载到缓存中来优化数据流时。
答案2
其他答案已经解释了为什么写入速度可能比读取速度更快;我想补充一点,对于这个驱动器来说,这绝对正常,因为您可以在评论中找到的基准测试证实了这一点。
ArsTecnica 的评论
ArsTechnica已审查过该驱动器,包括您使用的版本(512 GB)和 2 TB 版本:
(该图表在评论中不会立即显示,它是第一个图库中的第 5 个图表,您必须单击它)
这两种型号的性能非常相似,它们的数字看起来与您的一样:驱动器的读取速度为 37 MB/s,写入速度为 151 MB/s。
AnandTech 的评论
安南德科技还评测了该驱动器:他们使用了 2TB 型号,对队列深度为 1、2 和 4 的测试结果进行了平均。这些是图表:
该驱动器的读取速度为 137 MB/s,写入速度为 437 MB/s。这个数字比您的高得多,但这可能是由于队列深度较高。无论如何,写入速度是读取速度的 3 倍,就像您的情况一样。
PC World 的评论
另一篇评论来自电脑世界:他们测试了 1 TB 版本,4K 的结果是读取 30 MB/s,写入 155 MB/s: 写入速度与您的一致,但这里的读取速度更慢。结果是比率是五比一,而不是三比一。
结论
评论证实,对于该驱动器来说,随机 4K 的写入速度比读取速度快得多是正常的:根据测试,甚至可以快 5 倍。
您的驱动器没有问题。没有理由相信它有故障,或者您的系统有问题。
答案3
SSD 控制器将写入缓存在板载 NVRAM 中,并在适当的时候将其刷新到闪存介质中。因此,写入延迟就是缓存访问延迟,通常为 20us。相反,读取是通过介质进行的,访问时间最多为 120-150us。
答案4
扩展安德烈的回答,您需要查看 SSD 向计算机发出操作已完成的信号之前所涉及的开销。
对于写入,数据必须仅写入内部 RAM 缓存。稍后,它将连同检查、纠错和定位所需的其他 4k 块和元数据一起写入闪存。
对于读取,SSD 必须首先找到数据。计算机想要读取的位置称为逻辑地址,与闪存中数据的物理位置没有直接关系。SSD 根据闪存的几何形状(单元排列方式)、坏块重新映射、磨损均衡和各种其他因素将逻辑地址转换为物理地址。然后,它必须等待其他操作完成,然后才能从闪存中检索数据,然后检查数据,如果需要,重新读取并应用错误更正,甚至可能在其他地方重写整个块。
虽然写入操作所需的总时间可能比典型的读取操作更长,但 SSD 报告操作已完成并可以处理进一步命令所需的时间更短。对于大块,开销不是限制因素,但对于许多小块,开销开始限制读写速度。