在 Computer!Total Issue 4/2010 中,我们测试了五个支持 TRIM 的 SSD。为简单起见,我们假设测试中的位置为 SSD 可以存储数据的位置。实际上,为此使用了所谓的“页面”和“块”。在本文中,我们将仔细研究页面、块以及与 TRIM 的关系如何工作。
TRIM 是确保 SSD 保持最佳写入性能的命令。只有了解SSD的结构,才能真正理解TRIM的操作。 SSD 将信息存储在“页面”中,这些页面被分组在“块”中。要理解这些概念,您应该首先考虑在 Computer!Totaal 4/2010 中测试的多级单元 (MLC) SSD 的组成。 MLC SSD 由数十亿个存储单元组成,每个存储单元可以存储多个位。这些单元的有序集合称为页,是在 SSD 中存储或读回文件的最小单位。一个页面的大小通常为 4 KB。因此,如果您保存 1 KB 的文件,该文件将在 SSD 上占用 4 KB。
块
块是 SSD 的重要单位,因为它是 SSD 为删除数据而必须读取的最小页面集合。一个块由 128 个这样的页面组成,大小为 512 KB。现在,SSD 的工作原理类似于 RAID 设置中的 x 个内存模块。这意味着文件分布在多个内存模块中以实现最大读取速度。 Windows 通过逻辑块寻址 (LBA) 与 SSD“对话”,跟踪哪些块在使用中,哪些可用。由于 SSD 使用页面,因此 SSD 控制器必须转换 LBA 命令。用于覆盖文件的 Windows 命令由 SSD(如果可能)转换为写入空页面。如果没有空页,则必须先清空页。
延迟写作
当没有足够的空页可用于存储文件,而根据 Windows 索引有足够的可用空间时,就会出现问题。毕竟,当给出命令时,文件永远不会被真正删除。仅当相关文件占用的空间被新数据覆盖时才会发生这种情况。一个问题是 SSD 不能直接覆盖包含不再使用的文件部分的页面。 SSD 必须首先读取块并将它们放入自己的缓存中,因为数据只能在那里删除。缓存的页面被清空,然后整个空页面块被恢复到 SSD,之后这些页面可用于新数据。这会使写入过程减慢三倍或更多。
修剪
这些情况的救星是 TRIM。这是 Window 7 在擦除期间发送到 SSD 的命令。此命令通知 SSD 的控制器哪些页面实际上可以被删除,并通过读取块和清空充满文件的页面(Windows 说允许覆盖这些页面)来设置 SSD 工作。通过这种方式,SSD 可以通过库存足够的空页保持最佳状态,并且始终可以最佳地执行写入作业。我们将逐步向您展示当 SSD 写入和删除文件时会发生什么,以及 TRIM 如何确保始终有足够的可用页面。
1. 空白 SSD
想象一下,我们有一个存储容量正好为 1 个块的 SSD。 SSD 上 512 KB 的空块由 128 个 4 KB 的空页组成。
2. 写文件
我们要写一个 12 KB 的文件,它填满 3 页 4 KB(蓝色)。
3. 写另一个文件
然后我们要保存另一个 8 KB 文件(紫色)。我们总共使用了 20 KB。所以我们仍然有 512 KB – 20 KB = 492 KB 空闲,或 123 个空闲页面。
4. 删除文件
我们现在要删除 8 KB 文件(紫色)。根据 Windows,我们的 SSD 仍有 512 KB - 12 KB = 500 KB 可用空间。但是,我们的 SSD 仍然记录了 123 个空页和 2 个可以删除的数据页。
5. 写文件
我们现在正在写入 4 KB(绿色)。 SSD 会跳过包含“要删除的数据”信息的两页。首先填充空白页。
6. 工作中的修剪
由于支持 TRIM,Windows 7 发送 TRIM 命令以及删除操作。这样SSD的控制器就知道这些数据实际上可以被删除。当SSD暂时无事可做时,SSD会将512KB的完整块,其中一部分已被TRIM命令指定为删除,移动到缓存中。这里,被TRIM命令(紫色)删除的文件实际上会被删除。
7.页面将被删除
现在可以清空 2 页,可以放回整个块。您大概可以想象,当您要删除一个 10 MB 的文件时,我们总共要删除 2560 页。如果这些也被划分到不同的块中,那么必须读取大量数据。即使一个块只包含文件的 4 KB,也必须读入 512 KB 才能删除 4 KB 部分。 TRIM 可确保在您不使用 SSD 时发生这种情况。
8. 再次释放空间
现在 2 页已准备好再次写入。
9. 将文件写入可用空间
如果现在保存了 12 KB 的文件,则有足够的可用页面来保存文件(橙色)。