为什么nvme ssd在传输大数据时传输速度会下降?

为什么nvme ssd在传输大数据时传输速度会下降?

我的笔记本电脑有 PCIe NVMe 512GB M.2 SSD。当我传输 7 GB 以下的数据时,传输速度从大约 400 MB/s 到 500 MB/s。但是当我传输 35GB 这样的大数据时,速度会降低到 50MB/s,有时甚至只有 25 MB/s。所以我只想知道为什么会发生这种情况。

答案1

总结

大多数现代 SSD 都使用相对较慢的 TLC NAND。为了弥补这一点,使用了一个速度更快的 SLC NAND 的小缓冲区,这在大多数情况下可以隐藏这种较慢的性能。在短时间内向驱动器写入大量数据时,此缓冲区可能会耗尽,从而导致大量传输期间的性能下降。


技术细节

NAND闪存是目前几乎所有 SSD 都使用的内存类型,有多种不同的类型。最值得注意的是,NAND 可以配置为每个内存单元存储 1 到 4 位数据:

  • 每单元一位:SLC
  • 每单元 2 位:MLC
  • 每单元 3 位:TLC
  • 每单元四位:QLC

每个单元的位数越多,单个 NAND 闪存芯片中可以存储的数据就越多,制造具有给定存储容量的驱动器的成本就越低。但是,每个单元存储的位数越多,性能和写入耐久性就会降低。(这里重要的是性能差异;除了通常涉及非常小的驱动器的少数例外,大多数消费者不需要担心写入耐久性,因为在预期使用寿命内,他们写入的次数远不足以磨损合理大小的驱动器上的 QLC NAND。)事实上,除了需要极高写入耐久性的专用工业应用驱动器外,SLC 极难找到,而 MLC 驱动器(例如三星 SSD 970 PRO)并不常见且非常昂贵。

因此,大多数驱动器都使用 TLC NAND,少数驱动器开始使用 QLC NAND。对于这两种类型的 NAND,写入性能都足够慢,对于消费类 PC 来说通常是不可接受的。幸运的是,NAND 内存单元可以配置为存储更少的位,例如,可以使 TLC NAND 像 SLC NAND 一样每个单元存储一位,而不是三位。在几乎所有使用 TLC 或 QLC NAND 的驱动器上,内部都会留出少量空间(通常为几 GB)以在这种更快的 SLC 模式下运行。这创造了一个快速缓冲或者缓存数据总是首先被写入其中。1 MLC NAND 通常足够快,不需要 SLC 缓冲区,但我离题了。)

当驱动器处于空闲状态时,此 SLC 缓冲区中的数据会自动移动到底层 TLC 或 QLC NAND。由于大多数消费者工作负载只会在短时间内访问驱动器,因此驱动器将有足够的空闲时间来刷新 SLC 缓冲区,因此很少会出现完全填满的情况。因此,您通常不会注意到 TLC 或 QLC NAND 的性能变慢。但是,当在短时间内写入大量数据时,例如安装大型游戏或执行大型文件传输时,此缓冲区可能会耗尽。这就是您遇到性能下降的原因。


1驱动器原始容量的固定部分专用于 SLC 缓冲区;较大的驱动器通常具有较大的缓冲区。许多较新的驱动器可以利用驱动器中的可用空间自动扩展此缓冲区:未使用的内存单元可以配置为在 SLC 模式下运行,以便可以更长时间地保持更高的性能。当实际需要该空间来存储数据时,这些单元将转换回 TLC 或 QLC 模式。此功能取决于操作系统向驱动器发送TRIM 命令它指定哪些块未使用,并且设计为对用户透明。三星称之为智能 TurboWrite,这通常被称为动态 SLC 缓冲区。

答案2

我有一个 1 GIG PNY,这是我买的最后一个了。我主要用它进行图像备份,它的复制速度相当快,350 MB/s,直到达到 50 GB,然后速度下降到 60 Mbs 左右。它将 3 分钟的备份变成了 13 分钟。我已经订购了它的替代品,IBM Gen4 2 TB。我再也不会使用 PNY 了。你永远无法保证何时需要进行大规模备份,所以为什么还要费心购买一个无法完成备份的驱动器呢。

相关内容