固态硬盘 (SSD) 是一种电子数据存储设备,由控制器、NAND 闪存、DDR(可选)和接口/协议连接器组成。 (例如,PATA、SATA 和 PCIe NVMe。)与硬盘驱动器 (HDD) 不同,SSD 不使用机械部件来读取、编程和擦除数据。通过对数百万个 NAND 闪存单元的精确控制,SSD 控制器可以执行读、写和擦除任务。
闪存单元本质上是一个 MOSFET(金属氧化物半导体场效应晶体管),具有特殊的浮动栅极,可以持久保留和存储数据。每次电子被捕获在晶体管的浮栅中时,数据就会被编程。当电子被释放时,数据被删除。
与 HDD 不同,NAND 闪存无法覆盖现有数据。垃圾收集 (GC) 用于重新定位空闲或已用空间并回收有效和无效数据,是所有 SSD 中采用的基本过程。 GC 可以通过多种方式实现,直接影响 SSD 的整体性能和耐用性。
GC如何处理数据
由于 SSD 无法覆盖 NAND 存储单元中的现有数据,因此它们必须先擦除旧数据,然后才能将新数据编程到同一位置。 GC 是将现有数据重新定位到可用内存空间中的新位置并彻底擦除周围的无效数据的过程。
闪存单元由页组成,页形成块。由于 NAND 器件物理特性的固有特性,闪存单元允许在页级上对数据进行编程,但只能在块级上进行擦除。编程和擦除任务之间的这种不一致是对 SSD 耐用性的主要影响。
在声明无效数据占用的空间之前,必须将初始块中页中的所有有效数据复制并写入新块的空页中。然后可以擦除原始块中的无效数据,为写入新的有效数据做好准备。
修剪命令
操作系统(OS)感知只能识别SSD映射表中寻址的逻辑位置。存储系统从物理位置返回数据,而操作系统从相应的逻辑位置请求数据。微软提出Trim命令概念是为了减少NAND不必要的磨损。当在操作系统级别删除文件时,此命令可让操作系统立即通知 SSD。然后,SSD 可以更早地判断数据是否被标记为有效数据或无效数据。
Trim 命令的最大好处是帮助 SSD 实时跟踪操作系统即将执行的操作。因此,有效减少了对 NAND 闪存的冗余访问。
Trim 命令可以带来三个主要好处:
-
-
- 较低的写入放大: 尽早通知那些包含无效数据的页面的无效数据有助于减少数据重写。当有更多可用空间可供写入时,SSD 所需的写入任务就会减少。
- 高吞吐量: 使用 Trim 命令时,如果 GC 期间要移动的数据较少,则驱动器运行速度会更快。 SSD 写入闪存的速度是吞吐量的瓶颈。当GC处理时,SSD必须停止来自Host的一些数据传输。因此,SSD 知道哪些页面包含无效数据是有好处的,这样在 GC 期间就不必移动该页面。
- 提高耐力: 通过不重写无效数据,驱动器向 NAND 闪存写入更少的数据。
-
GC 和 Trim 是 SSD 操作的构建块
垃圾收集是 SSD 和 HDD 之间的显着区别。当新数据被编程到包含无效数据的页面时,SSD 不会覆盖现有数据,而是执行 GC。它会导致 NAND 额外磨损。然而,此问题的解决方案之一是 Trim 命令。它可以帮助 SSD 预测来自用户或操作系统的任何“文件删除”任务。这会降低写入放大、提高吞吐量并提高 SSD 耐用性。