Answers:
4k读取将是驱动器可以完成的最困难的事情。它们是驱动器能够处理的最小块大小之一,并且驱动器无法预加载大量数据,实际上,如果驱动器提前加载逻辑打算读取任何内容,它们可能效率很低。大于4kb。
“正常”驱动器读取更有可能大于4kb,因为很少有那么小文件,甚至页面文件也可能被大块读取,因为程序只有“只”读取是奇怪的调出了4KB的内存。这意味着驱动器尝试执行的任何预加载实际上都会损害驱动器的吞吐量。
4K读取可能会通过驱动器缓冲区,但是测试的“随机”部分使它们完全不可预测。控制器不知道何时驱动器可能需要再次读取更普通的“大”字。
另一方面,可以有效地顺序缓冲,排队和写出4K写入。驱动器缓冲区可以完成它原本设计的捕获和写入工作,而损耗均衡器甚至可以将所有4K写操作分配给同一驱动器擦除块,偶尔将4K“随机”写操作转换为更接近顺序写入。
实际上,我怀疑这是在“ 4K-64Thrd”写入中发生的情况,“ 64-Thrd” 显然使用了较大的队列深度,因此向驱动器发出信号,表明它有大量数据要读取或写入。这会触发大量的写入群集,因此接近驱动器的顺序写入速度。执行4K写入仍然有开销,但是现在您已经完全暴露了缓冲区的潜力。在测试的读取版本中,驱动器控制器现在意识到它处于非常恒定的重负载下,停止预加载数据,可能避开了缓冲区,而是切换到“原始”读取模式,再次接近顺序读取速度。
基本上,驱动器控制器可以做一些事情来提高4K写入的效率,尤其是当它们的集群在同一时间到达时,而它不能做任何事情来使单个 4K读取的效率更高,尤其是当它试图优化时通过将数据预加载到缓存中来实现数据流。
其他答案已经解释了为什么写作比阅读更快的原因。我想补充一点,对于此驱动器,这绝对是正常的,因为您可以在评论中找到一些基准测试。
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倍。
您的驱动器还可以。没有理由认为它有故障,或者您的系统有问题。
SSD控制器将写入内容缓存在板载NVRAM中,并在适当的时候将其刷新到闪存介质中。因此,写延迟就是缓存访问延迟,通常为20us。相反,读取是通过媒体进行的,访问时间最多为120-150us。
扩展Andrey的答案后,您需要查看所涉及的开销,然后SSD才能向计算机发出操作已完成的信号。
对于写操作,仅需将数据写到内部RAM缓存中。稍后,它将与检查,错误更正和定位所需的其他4k块以及元数据一起写入闪存。
对于读取,SSD必须首先找到数据。计算机要读取的位置称为逻辑地址,与闪存中数据的物理位置没有直接关系。SSD根据闪存的几何形状(单元的排列方式),坏块重映射,损耗均衡和各种其他因素,将逻辑地址转换为物理地址。然后,它必须等待其他操作完成,然后再从闪存中获取数据,然后进行检查,并在需要时重新读取并应用错误纠正,甚至可能将整个块重写到其他位置。
尽管写操作所花费的总时间可能比典型的读操作要长,但是SSD报告操作已完成到可以处理其他命令的程度所花费的时间更少。对于大块,开销不是限制因素,但是对于许多小块,它开始限制读/写速度。