最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

【合集】深入理解大容量SSD设计

网站源码admin5浏览0评论

【合集】深入理解大容量SSD设计

全文概览

随着数据量的爆炸式增长,对SSD容量的需求也日益迫切。如何在有限的物理空间内,进一步提升SSD的存储容量,同时兼顾性能与成本,成为了业界亟待解决的关键问题。

本文深入探讨了SSD架构设计中的核心要素——间接单元(IU)和动态随机存取存储器(DRAM),揭示了它们在容量扩展过程中所面临的挑战与机遇。文章从硬盘驱动器(HDD)扇区大小的历史演变出发,逐步引入SSD中IU的设计理念及其背后的考量。通过对比分析不同IU大小、L2P表结构以及预留空间(OP)等关键参数,阐述了它们对SSD容量、性能和耐久性的深远影响。

此外,文章还前瞻性地探讨了多种优化IU容量的创新方案,如增加L2P表位数、子驱动器磨损均衡技术以及增大IU页大小等,并分析了这些方案的优缺点及适用场景。更进一步,文章着眼于大IU落地应用的生态环境,解析了NVMe、OCP等行业标准在推动大IU技术发展中的作用,以及主机操作系统层面为适配大IU SSD所做的努力。

通过阅读本文,您将全面了解SSD容量扩展背后的技术挑战,掌握IU和DRAM在其中的关键作用,并对未来SSD技术的发展趋势有更清晰的认识。这不仅有助于您深入理解存储系统的底层原理,也能为相关领域的研发和应用提供有益的参考。

阅读收获

  1. 深入理解SSD容量扩展的技术瓶颈与突破口,特别是IU和DRAM在其中的作用。
  2. 掌握优化SSD架构以提升容量和性能的多种策略,例如增大IU、子驱动器技术和LBS等。
  3. 了解NVMe、OCP等行业标准及主机操作系统在推动大IU SSD应用落地中的关键作用。
  4. 洞悉未来SSD技术发展趋势,为相关领域的研发和应用提供前瞻性视角。

Part1:理解 SSD 间接单元(IU)机制

Fig-1:间接单元的历史-从HDD的扇区说起

Fig-1:间接单元的历史-从HDD的扇区说起

图片展示了硬盘驱动器扇区大小的发展历史,从早期的可变大小到 512 字节成为行业标准,再到 1998 年高级格式技术委员会推动的 4KiB 扇区大小的普及。

右侧图表强调了采用 4KiB 扇区大小的主要原因,包括提高 ECC 效率和与操作系统内存页大小对齐。此外,图片还对比了 512 字节和 4096 字节扇区的结构和效率,并提到了固态硬盘的出现以及 4Kn 本地硬盘的推出,即使后者仍然需要模拟 512 字节扇区以保持兼容性。

===

  • 开始时期:柱面-磁头-扇区 (Cylinder-Head-Sector, CHS)
    • HDD 的“开放通道”在整个市场中具有可变扇区大小。
    • 512B 在 20 世纪 80 年代占据市场主导地位。
  • 20 世纪 90 年代初:512B 扇区大小成为行业规范
    • SASI 和 ATA 接口引领了从 CHS 向其他寻址方式的转变。
  • 1998 年:高级格式技术委员会 (The Advanced Format Technology Committee) 使行业与 4KiB 扇区大小对齐
    • ECC 效率的提高是增加扇区大小的主要动机。
    • 操作系统内存页大小的对齐是选择 4KiB 的主要原因。
  • 2007-2008 年:企业级固态硬盘 (Enterprise SSD) 开始出现
    • Fusion IO 和其他供应商开始大量出货固态硬盘。
  • 2010 年:首个 4Kn (4KiB native) 硬盘驱动器出货
    • 继续模拟 512B 扇区。

Fig-2:SSD 中IU的使用背景

Fig-2:SSD 中IU的使用背景

图片解释了固态硬盘沿袭间接单元(IU)设计的原因。

与传统的硬盘驱动器不同,固态硬盘从一开始就倾向于使用更大的 4KiB 数据块,并且通过 IU 来管理数据。虽然固态硬盘在逻辑上可以模拟 512B 的扇区大小以保持兼容性,但其内部操作是基于更大的 IU 进行的。使用 IU 的主要原因包括简化设计、提高效率以及方便进行垃圾回收等操作。然而,当写入操作与 IU 的边界不对齐时,可能会导致额外的读-修改-写操作,从而影响性能。总的来说,IU 是固态硬盘管理和优化性能的关键概念。


Fig-3:L2P 表在数据存储过程的作用

Fig-3:L2P 表在数据存储过程的作用

图片解释了固态硬盘中逻辑到物理 (L2P) 表的作用和重要性。

L2P 表是固态硬盘控制器中的一个关键组件,它负责将操作系统看到的逻辑地址转换为实际存储在 NAND 闪存芯片上的物理地址。这种转换是必要的,因为闪存的写入特性(无法覆盖写入,需要先擦除)以及为了优化性能和寿命而进行的数据管理(例如,磨损均衡和垃圾回收)。

图片还说明了如何通过 L2P 表查找不同大小的逻辑地址对应的物理地址,并强调了垃圾回收过程如何依赖于更新 L2P 表来实现数据的移动和管理。

===

逻辑到物理表

  • 逻辑到物理 (L2P) 表:
    • 将逻辑块地址 (Logical Block Address, LBA) 转换为物理地址。
    • 这是必需的,因为:
      • 数据无法被读取并重新编程回相同的位置。
      • 不连续的传入数据以日志结构的方式物理地连续写入。
  • L2P 查找:
    • L2P 表可能是一个数组。
    • 对于 4KiB LBA:物理地址 = L2P[LBA]。
    • 对于 512B LBA:物理地址 = L2P[bitshift(LBA, -3)]。
    • 注意: 本演示忽略了命名空间 (Namespaces)。
  • 垃圾回收 (Garbage Collection, GC):
    • 能够移动数据并仅更新 L2P 表中的物理地址。

如何理解 IU 和 L2P 表在 SSD 数据存储过程中发挥的作用、差异?

L2P 表(Logical-to-Physical Table) 的主要作用是地址转换。它就像一个翻译器,将操作系统看到的逻辑块地址(LBA)映射到 NAND 闪存芯片上的实际物理地址。

  • 为什么需要 L2P 表?
    • NAND 闪存的特性决定了数据不能直接覆盖写入,需要先擦除。
    • 为了实现磨损均衡(平均使用每个闪存块以延长寿命),以及优化写入性能,逻辑上连续的数据在物理上可能存储在不连续的位置。
    • L2P 表记录了每个逻辑块当前对应的物理位置。当主机请求读取某个逻辑地址的数据时,控制器会通过 L2P 表找到其对应的物理地址并读取数据。

IU(Indirection Unit) 的主要作用是数据管理和优化,尤其是在垃圾回收方面。根据图片信息,IU 可以被理解为固态硬盘写入和跟踪的数据组

  • IU 的作用:
    • 垃圾回收的基础: 固态硬盘需要进行垃圾回收来回收不再使用的物理空间。IU 作为数据管理的基本单元,使得控制器能够有效地识别和移动有效数据,从而擦除无效数据块。
    • 写入优化: 与 IU 不对齐的写入操作会产生性能损失(读-修改-写)。这意味着以 IU 为单位进行写入可以提高效率。
    • 减少查找表大小: 通过将多个逻辑块分组到一个 IU 中(例如,一个 4KiB 的 IU 可能包含多个 512B 的逻辑扇区),可以减小 L2P 表的大小,从而提高查找效率。

总结它们之间的区别:

  • 核心功能不同: L2P 表的核心是地址映射,回答“逻辑地址对应的物理地址在哪里?”这个问题。IU 的核心是数据组织和管理,尤其服务于垃圾回收和写入优化,回答“哪些数据被视为一个管理单元?”这个问题。
  • 抽象层次略有不同: L2P 表更直接地连接了逻辑层(操作系统)和物理层(NAND 闪存)。IU 更偏向于固态硬盘内部的物理数据管理策略。
  • 粒度可能相关但目的不同: 虽然 IU 的大小(例如 4KiB)可能与 L2P 表中映射的最小物理单元(也可能是 4KiB)相关,但它们的目的是不同的。L2P 表映射的是逻辑地址到这个物理单元的位置,而 IU 则将这个物理单元视为一个管理和操作的整体。

可以理解为,L2P 表是地图,告诉你逻辑地址对应的物理位置。而 IU 是组织数据的策略,决定了数据如何分组和管理,以便更高效地进行垃圾回收和写入操作,并且这个策略可能会影响到 L2P 表的结构和大小。


Fig-4:理解SSD的物理容量和逻辑容量

Fig-4:理解SSD的物理容量和逻辑容量

图片解释了固态硬盘中物理容量和逻辑容量之间的差异,并介绍了预留空间(Over Provisioning, OP)的概念。物理容量是指固态硬盘上所有 NAND 闪存芯片的总容量,而逻辑容量是用户实际可以使用的容量。两者之间的差额就是预留空间,通常以百分比表示。

图片指出,历史上预留空间的计算方式比较复杂,并且受到坏块的影响。但随着行业标准的统一,逻辑容量点也变得更加规范。一个常见的“营销”简称是 7% 的预留空间,但这并不总是准确的,因为 NAND 芯片的实际容量可能不是 2 的精确幂次方,并且厂商可能会根据不同的因素(例如 NAND 类型和良率)调整预留空间的大小。预留空间对于固态硬盘的性能和寿命至关重要,因为它为控制器提供了进行垃圾回收、磨损均衡等操作所需的额外空间。


Fig-5:SSD中DRAM的容量计算

Fig-5:SSD中DRAM的容量计算

图片展示了 L2P 表在固态硬盘中消耗的 DRAM 大小。

它假设 LBA 大小和 IU 大小都是 4KiB,并且以一个 960GB 的 SSD 为例进行计算。根据 IDEMA 的规范,这个容量大约包含 2.34 亿个逻辑块。如果每个 IU 的物理地址需要 32 位来跟踪,那么 L2P 表就需要大约 937.7MB 的 DRAM 来存储这些映射信息。图片还指出,存储容量与 DRAM 容量的比例大约是 1024:1,这与通常引用的 1000:1 的比例略有不同(基于4KiB IU 的经验)。

最后的结论强调了 DRAM 的成本是固态硬盘总成本的一个重要组成部分,并且受到 IU 大小的影响。


图片描述了嵌入式SSD系统,在数据传输效率层面存在的固有约束,特别是与内存相关的限制。

它指出,尽管新的内存标准(LPDDR5)正在发展,但在嵌入式环境中,仍然经常遇到 32 位的处理器和内存接口。图片以固态硬盘为例,强调其内部控制器和 DRAM 的交互仍然是基于 32 位架构的。这与主机系统中常见的 64 位寻址和处理形成对比。图片还提到了嵌入式 DRAM 的接口宽度和 ECC 机制。总而言之,这张图片旨在说明固态硬盘等嵌入式设备在内存和处理能力方面可能存在的限制。

LPDDR5 的传输带宽提升

  • 更高的带宽和数据传输速率: LPDDR5 的主要优势之一是其显著提高的数据传输速率。相比之前的 LPDDR 标准(如 LPDDR4),LPDDR5 能够以更高的速度在处理器和 DRAM 之间传输数据。这直接解决了上一张图片中提到的 8 位接口可能带来的带宽瓶颈,使得一次可以传输更多有效数据,从而提升整体系统性能。
  • 更宽的接口支持: 虽然上一张图片中提到了 8 位接口,但 LPDDR5 标准本身支持更宽的接口配置。例如,它可以支持 16 位或 32 位的接口,这进一步增加了每次数据传输的吞吐量,从而缓解了数据传输速率的限制。

Fig-7:物理地址的寻址规范

Fig-7:物理地址的寻址规范

图片介绍了固态硬盘中物理地址的组织方式。

它解释了如何使用一定数量的位来表示可寻址的物理位置,例如 32 位可以理论上追踪 2的32次方个位置。然而,将这些位分配给实际的物理组件(如芯片、平面、块、页、扇区)需要一个转换过程,并且这个过程可能并不总是简单的。

图片给出了一个 32 位地址如何被划分为不同物理含义的示例,并指出由于实际物理组件的数量可能不是 2 的精确幂次方,或者像 TLC 闪存那样每个块包含的页数不是 2 的幂次方,因此这种分配方式可能会导致一些效率上的损失。最终的结论强调了理论上的最大可寻址位置数可能大于实际可用的物理位置数。


图片探讨了固态硬盘容量的理论上限与实际应用之间的约束。根据图中给出的信息,如果 IU 大小为 4KiB 且可追踪的物理位置数为 2的32次方,那么理论上的最大可追踪容量是 16TiB。然而,图片右侧指出,考虑到预留空间(OP)后,固态硬盘的实际最大容量可能会限制在 15.36TB 左右。

尽管如此,图片还展示了三星发布的一款 128TB QLC SSD(型号为 BMI743),这似乎与之前提到的 15.36TB 的上限有所矛盾。这可能意味着 16TiB 的理论上限是基于特定的寻址方案或技术限制,而实际产品通过更先进的技术(例如更高的 NAND 密度、更复杂的寻址方式等)突破了这个限制。

Cite

《Micron:验证16KB IU对SSD_WAF的影响》:介绍了16KB IU(间接寻址单元)对SSD写放大因子(WAF)的影响。 16KB IU的优势与挑战:16KB IU可节省SSD中DRAM空间(75%),实际应用中额外的WAF较低,通常小于2倍,有时接近1倍,大IO写入应用更适合,但元数据等小IO写入场景不适合。 WAF产生原因及IU大小影响:WAF主要因SSD以“页”为写入单元、以“块”为擦除单位,IU表增大可能影响小写入性能,不同写入大小对WAF影响不同,大写入大小导致更低的WAF。



Part 2:优化 IU 容量的方案

Fig-9:增加L2P位数来扩容SSD物理容量

Fig-9:增加L2P位数来扩容SSD物理容量

图片探讨了增加 L2P 表中每个条目所占位数的影响。

增加位数可以直接扩大固态硬盘可以支持的最大容量。例如,从 32 位增加到 33 位(32TiB)或 34 位(64TiB)可以将容量上限提升到 TB 级别。然而,这也带来了挑战:L2P 表会消耗更多的 DRAM 空间,并且在读取跨越 32 位边界的 L2P 条目时可能会引入额外的复杂性和延迟。

图片还讨论了通过读取两个 32 位字或者采用 40 位条目作为折衷方案,以平衡容量、成本和性能。最后的总结强调了增加 L2P 条目位数可能带来的成本增加、性能影响(包括延迟和潜在的 DRAM 拥塞)以及固件和硬件设计的复杂性。

===

图片底部有一个 总结 框:

  • 成本和性能 - 在固件和 DDR 控制器中存在连接挑战。
  • 成本 - DRAM 大小增加。
  • 延迟 - 额外的 DRAM 读取。
  • 性能 - 潜在的 DRAM 拥塞。

Fig-10:“子驱动器” 磨损均衡技术

Fig-10:“子驱动器” 磨损均衡技术

图片介绍了一种使用“子驱动器”进行磨损均衡的技术。

这种方法将固态硬盘的存储空间划分为多个较小的逻辑单元(子驱动器),并基于逻辑块地址(LBA)将数据分布到这些子驱动器中。每个子驱动器拥有自己的小型逻辑到物理(L2P)映射表。这种方法的优点是每个子驱动器内部的磨损均衡相对容易实现,并且可以节省 L2P 表的条目大小(图中右侧示意:4 个子驱动器,节省了2 位)。然而,子驱动器之间的磨损均衡则更具挑战性,并且可能需要创新的方法。此外,这种架构可能缺乏全局的磨损均衡,并可能因为数据局部化在某些子驱动器中而导致性能下降。可扩展性方面,对整个 NAND 芯片做出全局决策可能会变得复杂或缓慢。

尽管如此,对于大容量的固态硬盘,将存储空间划分为子驱动器并在其内部进行磨损管理,可以提供一种管理驱动器寿命的方法。

===

图片右下角有一个 总结 框:

  • 耐久性 (Endurance) - 缺乏全局磨损均衡
  • 性能 (Performance) - 存在失去跨子驱动器并行性的风险
  • 可扩展性 (Extensibility) - 全局 NAND 决策可能很复杂或缓慢

比较理解:ZNS 分区存储与子驱动器方案

两者都涉及到将固态硬盘的存储空间划分为更小的逻辑管理单元,以优化性能和寿命。然而,它们在实现方式、目的以及对主机系统的影响方面存在显著的区别。

子驱动器 (Sub-Drives) 的概念:

正如上一张图片所描述的,子驱动器是一种内部的固态硬盘管理策略。其核心思想是将物理存储空间划分为多个逻辑上的子单元,每个子单元可以独立地进行磨损均衡和地址映射(拥有一个微型的 L2P 表)。这种方法的主要目的是在单个驱动器内部更精细地管理磨损,尤其是在大容量固态硬盘中,避免某些区域过度使用。子驱动器的存在和管理通常对主机系统是透明的,固态硬盘控制器在内部处理数据的分配和映射。

Zoned Namespaces (ZNS) 的实现:

ZNS 是一种标准化的接口,它将固态硬盘的存储空间划分为多个独立的区域(Zones)。与传统的固态硬盘不同,ZNS 驱动器要求主机系统显式地管理这些区域的写入操作。关键特性包括:

  • 顺序写入: 在一个 Zone 内部,数据必须按照顺序写入,类似于顺序写入日志文件。
  • 区域重置: 一旦一个 Zone 写满,主机需要显式地“重置”该区域才能再次写入新的数据。这个重置操作类似于回收空间。
  • 主机管理: ZNS 将一部分数据管理职责(例如,垃圾回收的策略)转移到了主机端。主机需要了解 ZNS 驱动器的区域结构,并根据应用的需求进行数据放置和管理。

子驱动器和 ZNS 的区别:

特征

子驱动器 (Sub-Drives)

Zoned Namespaces (ZNS)

主要目的

内部磨损均衡和管理,可能优化 L2P 表大小

将存储空间划分为可管理的区域,优化性能和寿命,降低固态硬盘内部管理的复杂性

主机可见性

通常对主机透明,主机像使用普通块设备一样操作

对主机可见,需要主机操作系统和应用程序的显式支持

写入模式

主机可以随机写入,固态硬盘内部进行管理

要求主机在每个 Zone 内进行顺序写入

空间回收

由固态硬盘控制器内部的垃圾回收机制处理

需要主机显式地重置写满的 Zone

数据管理职责

主要由固态硬盘控制器负责

部分数据管理(例如,空间回收策略)转移到主机端

标准化

通常是厂商特定的内部实现

是一个行业标准接口,旨在实现更好的主机和存储设备之间的协作

适用场景

主要用于优化大容量固态硬盘的内部管理

适用于对写入模式有特定要求的应用场景,例如数据库、日志记录等,通过主机优化数据放置来提高性能和寿命

总结:

虽然子驱动器和 ZNS 都涉及将固态硬盘的存储空间划分为更小的单元进行管理,但它们的概念和实现有着本质的区别。子驱动器是固态硬盘内部的优化策略,对主机透明;而 ZNS 是一种主机可见的接口标准,它改变了主机与存储设备之间的交互方式,将一部分管理职责转移到了主机端,并对写入模式提出了要求。

因此,可以说子驱动器的概念在一定程度上与 ZNS 的分区思想有相似之处,都是为了更好地管理存储空间。但 ZNS 更加强调主机参与的数据管理和特定的写入模式,旨在实现更高效的存储利用和更长的设备寿命,尤其是在特定的工作负载下。


Fig-11:增加 IU 页大小

Fig-11:增加 IU 页大小

图片探讨了增加间接单元(IU)大小到 8KiB 的影响。

一个主要的优点是,更大的 IU 可以减少 L2P 表所需的 DRAM 容量,因为每个 IU 可以映射更多的逻辑块。此外,分组顺序 LBA 是一种行业标准方法,类似于处理模拟的 512B LBA。然而,一个主要的缺点是,如果写入操作没有与 8KiB 的 IU 对齐,或者写入的数据量小于 8KiB,那么就会触发读-修改-写(RMW)操作,这会影响性能,尤其是在处理小的 I/O 请求时。总结部分还提到了增加 IU 大小对性能、耐久性、成本和兼容性的影响。总的来说,增加 IU 大小是一种在 DRAM 成本和潜在性能损失之间进行权衡的策略。

===

图片底部有一个 总结 框:

  • 性能和耐久性 - RMW 影响小的 I/O 操作。
  • 成本 - DRAM 成本改善。
  • 兼容性 - 兼容旧有系统。

Fig-12:混合解决方案

Fig-12:混合解决方案

图片表明,之前讨论的三种技术(增加L2P表位数、子驱动器、增加 IU 大小)可以组合使用,以达到更好的效果。

特别提到了将磨损均衡子驱动器与更大的 IU 相结合可能是一种合理的方法。这种混合策略旨在结合各种方法的优点,例如通过较大的子驱动器来提升耐久性和介质管理效率,同时根据需要调整 IU 大小,以尽量减小读-修改-写(RMW)操作对性能的影响。

===

  • 所有三种方法可以以任意组合一起使用。
    • 磨损均衡 (WL) 子驱动器和更大的 IU 是最合理的讨论。
  • 提供了一系列优点和缺点。示例:
    • 尽可能保持 WL 子驱动器较大,以实现最大的耐久性和介质管理。
    • 仅在需要时增加 IU,以最大限度地减少 RMW 性能影响。

Fig-13 SSD IU设计总结

Fig-13 SSD IU设计总结

图片总结了关于 IU 大小的讨论。指出,随着 SSD 容量的不断增长,IU 的大小也在持续增加,以满足企业客户对低成本、高耐久性、高性能和低延迟的需求。

然而,由于各种因素,例如行业标准的制定面临挑战,“高级格式”组织在就未来的统一 IU 大小达成共识方面存在困难。最终的结论是,可以预见 IU 的大小在未来仍将继续增加。这与之前讨论的通过增加 IU 大小来降低 DRAM 成本和提高效率的思路是一致的。



Part 3:大 IU 落地的生态

Fig14:LBA 逻辑块大小与 IU大小匹配的优与劣

Fig14:LBA 逻辑块大小与 IU大小匹配的优与劣

图片探讨了将逻辑块地址(LBA)扇区格式与间接单元(IU)大小相匹配的优缺点。赞成匹配的观点包括可以减少系统开销,并可能带来 ECC 效率的潜在提升。反对匹配的观点则强调了目前仍然广泛存在的 512B 使用情况,以及支持不同 LBA 大小的挑战性。此外,匹配还可能需要新的保护信息标准,并可能导致小命令的性能下降。最后的结论建议应该考虑其他的选项。

===

匹配

反对匹配

* 4KiB IU 匹配扇区大小的先例

* 多年的过渡期后,仍然存在大量的 512B 使用情况

* 系统开销减少

* 1998 年引入 4KB 格式

* 可能通过各种组件实现非常小的效率提升

* 2010 年出现原生 4KB 驱动器

* ECC 效率的潜在优势

* 支持不同的 LBA 大小非常具有挑战性

* 当前的 SSD 并未利用这一点

* IU 大小可能因容量、供应商和 SSD 代而异

* ECC 优势始终伴随着 IU 的增加

* 在非常大的扇区大小下,可能需要新的保护信息 (PI) 标准

* 扇区大小的改变与许多额外的系统紧密相关

* 例如:内存页

* 小命令性能下降的风险

* 例如:QD1 4KiB 随机读取,最终应用程序需要读取整个 SSD LBA,ECC 解码,然后一起传输才能获得请求的 4KiB 数据


Fig-15:NVMe 与 OCP 标准在SSD中发挥的作用

Fig-15:NVMe 与 OCP 标准在SSD中发挥的作用

图片介绍了 NVMe® 和 OCP 规范在固态硬盘领域的作用。

  • NVMe® 的最佳性能参数 (OPTPERF) 定义了 IU 大小,并关注了由于写入粒度不一致可能导致的读-修改-写(RMW)性能影响。
  • OCP(开放计算项目)的数据中心 NVMe SSD 规范可以补充 NVMe®,解决一些它可能无法覆盖的问题,并允许添加物理定义。

===

  • NVMe® - 最佳性能参数 (OPTPERF)
    • 定义 IU 大小为 NPWG - 因为清晰的规范可以定义物理参数。
    • 说明了 512B LBA 在 4KiB IU 上的情况。
    • 强调了对 RMW 性能影响的担忧。
  • OCP - 数据中心 NVMe SSD 规范
    • 可以添加物理定义。
    • 解决了 NVMe 无法解决的困惑。

Fig-16:在主机操作系统中启用大块大小 (LBS)

Fig-16:在主机操作系统中启用大块大小 (LBS)

图片讨论了在主机操作系统层面启用大块大小(LBS)以更好地支持 QLC 和使用大 IU 的 SSD 的工作。三星 GOST 正在 Linux 系统上进行这方面的研究,旨在评估相关的操作系统更改,量化软件影响和潜在收益,并推动这些更改在整个软件栈中的应用。

===

  • 三星 GOST 一直在 Linux 中主导一项大块大小 (LBS) 的工作。
    • 评估最有利于 QLC 和大间接单元 (IU) SSD 的操作系统更改。
    • 量化每个选项的软件影响以及主机和 SSD 的潜在收益。
    • 将这些更改传播到所有层。
  • LBS 结论
    • 增加 LBA 扇区大小很困难。
    • 对原子掉电保护提出新要求是启用大 IU 的最佳解决方案。
      • AWUPF(Atomic Write Unit Power Fail) >= NPWG(Namespace Preferred Write Granularity) = IU
      • 以最大化优势实现最小的生态系统影响。
      • 没有后向兼容性问题。
    • 多原子模式可能对某些客户评估很有趣,但尚未帮助当前的软件更改。

为什么说增加 LBA 扇区大小是困难的?

  • 广泛的软件生态系统依赖: LBA 扇区大小是一个非常基础的存储接口参数,它被操作系统、文件系统、应用程序甚至驱动程序等软件栈的各个层面所依赖。改变 LBA 扇区大小意味着需要对这些软件进行大量的修改和更新,这是一个庞大而复杂的工程。Fig 15 就明确指出,“扇区大小的改变与许多额外的系统紧密相关”,并以“内存页”为例。操作系统的内存管理、文件系统的块分配等都可能与存储设备的扇区大小相关联。
  • 遗留兼容性问题: 存储行业有着长期的历史,很多现有的系统和应用仍然是基于传统的 512 字节 LBA 扇区大小设计的(即使物理上是 4KiB,但通过 512e 模拟)。直接增加 LBA 扇区大小会破坏与这些遗留系统的兼容性,导致用户升级或迁移困难。Fig15 提到了“多年的过渡期后,仍然存在大量的 512B 使用情况”,这正是兼容性问题的一个体现。

如何理解 原子掉电保护 在SSD存储中的作用?

在计算机存储领域,"原子性"(Atomicity)是一个非常重要的概念,它指的是一个操作要么完全执行成功,要么完全不执行,不存在中间状态。在电源突然中断的情况下,"原子掉电保护"就是指存储设备(如 SSD)能够确保正在进行的写入操作要么完全持久化到非易失性存储介质(NAND 闪存)上,要么完全不影响之前的数据状态,就像这个写入操作从未发生过一样。

简单来说,如果电源在 SSD 执行一个写入操作的中间突然断开,原子掉电保护机制可以确保:

  1. 数据不会处于不一致或损坏的状态。 不会发生部分数据写入成功而部分数据丢失或损坏的情况。
  2. 元数据(如 L2P 表的更新)也能保持一致性。 写入操作通常不仅仅涉及用户数据的写入,还包括内部元数据的更新。原子掉电保护也确保这些元数据的更新要么和数据一起完成,要么完全不发生。

Fig-17:LBS如何增益大IUs

Fig-17:LBS如何增益大IUs

图片解释了如何在主机操作系统层面通过一种称为“大块大小(LBS)”的方法来更好地支持使用大 IU 的 SSD。图片强调,这种方法的主要优势在于其对现有主机软件生态系统的影响最小,几乎可以让所有主机软件“免费”获得收益,因为相关的更改被封装在操作系统内核的底层(块层、页缓存、文件系统等)中,并且正在进行支持原子掉电保护单位 (AWUPF) 大于或等于 IU 大小的修改。

图片还指出,这种方法保持了后向兼容性,并且提供了一个选项,允许 I/O 对齐的确定性,通过选择使用扇区大小并将主机 I/O 与原子性对齐来实现。右侧的图示清晰地展示了这些更改发生在操作系统内核的各个层次。此外,图片还展示了 QLC SSD 在采用这种方法后在数据库工作负载中的性能收益,包括 TPS 的提升和变异性的降低。

===

图片右侧是一个图示,展示了从用户空间/应用程序到物理设备的软件栈层级。

  • 用户空间/应用程序 (Userspace/applications) 调用系统调用 (system calls) 如 read()、write()、open() 等。
  • 这些系统调用进入内核 (Kernel)。
  • 内核中包含 虚拟文件系统 (VFS)块层 (Block layer)页缓存 (Page cache)
  • VFS 下方是基于块的文件系统 (Block based filesystems),例如 ext4f2fsgfs2btrfs
  • 块层通过 NVMe 层 (NVMe layer)物理设备 (Physical devices) 通信,例如 PCIe NVMe 设备。
  • 左侧有一个 块缓存 (Block cache) 与块层关联。

Note

整理这篇文章,笔者最大的收获是:增强对块存储的理解,以及为什么说块存储的小文件IO读写性能相关较高。归根结底可以追溯到LBA--L2P--IU的IO读写映射关系,块存储作为存储设备原生数据组织方式,从硬件设计上做了更深层次的优化,从而具备较高的寻址效率,而对象和文件存储都是在块的基础上,另做了语义(元数据)设计,从而具备场景的丰富特性。


图片通过一个实验数据表格展示了主机操作系统中的 LBS(大块大小)如何帮助实现 IU 对齐,从而显著降低最坏情况下的写入放大因子(WAF)。

表格中的数据显示,在某些工作负载下,当文件系统块大小、扇区大小与 IU 大小匹配,并且启用 LBS 和使用 Direct I/O 时,WAF 可以接近理想值 1.0。这意味着写入操作能够很好地与固态硬盘内部的 IU 对齐,减少了读-修改-写(RMW)操作,从而提高了性能和耐久性。图片还提供了一个名为 blkalign 的工具的示例,该工具可能用于评估不同配置下的对齐效果。这进一步证实了主机操作系统层面的优化(如 LBS)对于充分发挥 SSD 性能和延长寿命的重要性。

Cite

Samsung 在大IU生态落地的创新,除了LBS 的设计,在之前整理的一篇文章中曾提出 大块内存的抽象管理 folio,可参考阅读下文:

  • Samsung:从QLC应用生态来看大容量SSD前景

图片通过可视化方式展示了在特定配置下(FIO 512B 写入、64KiB IU、XFS 文件系统块大小 64KiB、SSD 和文件系统扇区大小 4KiB、启用 LBS)LBS 如何影响块大小和对齐大小分布,从而实现接近 1.0 的低写入放大因子(WAF)。

左侧的“块大小分布”图显示了写入操作的块大小分布情况,大部分集中在 4KB 和 8KB。右侧的“对齐大小分布”图则展示了这些写入操作在物理存储上的对齐情况,也主要集中在 4KB 和 8KB。图中的文字解释说,尽管执行的是 512B 写入,但启用 LBS 后,由于文件系统块大小和 IU 大小的设置,实际的写入和对齐操作以 4KB 和 8KB 为主,从而避免了小块写入导致的 RMW 效应,使得 WAF 非常接近理想值 1.0。这进一步证明了主机操作系统层面的 LBS 优化对于提高 SSD 性能和效率的有效性。


图片对之前讨论的 AWUPF(原子掉电保护单位)与 NPWG(命名空间首选写入粒度,即 IU 大小)之间的关系进行了最终评论。它推荐 AWUPF 应该大于或等于 NPWG 和 IU 大小。图片解释说,之所以采用“大于或等于”,是为了给固态硬盘供应商提供更大的设计灵活性。因为 AWUPF 通常是设计在 SSD 控制器的硬件中的,一旦控制器设计完成就相对固定,而 IU 大小可能会根据不同的容量或产品代进行调整。

图片还指出,独立于 IU 大小,主机可以将写入的交互大小增加到 AWUPF 的上限。这意味着,如果主机认为使用小于 AWUPF 但大于或等于 NPWG 的较小 I/O 大小在某些情况下更有利,它可以在不超过 AWUPF 的前提下进行优化。这允许在满足原子性要求的同时,根据具体的工作负载需求进行灵活的性能调整。

延伸思考

这次分享的内容就到这里了,或许以下几个问题,能够启发你更多的思考,欢迎留言,说说你的想法~

  1. 随着NAND闪存技术的不断演进,未来SSD的IU大小会持续增大吗?其最佳大小的平衡点在哪里?
  2. LBS等主机侧优化方案,能否完全解决大IU SSD在小IO场景下的性能瓶颈?未来是否需要软硬件协同的更深层次优化?
  3. 除了文中提到的优化方案,在SSD架构设计和生态构建层面,还有哪些潜在的创新方向可以进一步提升存储性能和容量?

原文标题:SSD Architecture Challenges with DRAM

Notice:Human's prompt, Datasets by Gemini-2.0-flash-thinking

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-23,如有侵权请联系 cloudcommunity@tencent 删除数据性能主机管理设计
发布评论

评论列表(0)

  1. 暂无评论