特性配置 - 1. SGL Support (SGLS) (第273页)
NVME2.0协议解读 1 min read

特性配置 - 1. SGL Support (SGLS) (第273页)

Blog Author

在《NVM Express® Base Specification, revision 2.0b》文档中,Identify Controller数据结构中的字段SGL Support (SGLS)Maximum Number of Allowed Namespaces (MNAN) 涉及了控制器对散列表(SGL)支持以及命名空间数量的限制。以下是这些字段的详细分析:

1. SGL Support (SGLS)

该字段指示控制器是否支持散列表(SGL,Scatter-Gather List)以及控制器支持的特定SGL类型。SGL在存储设备中用于描述数据的分布情况,尤其是在需要处理较大或非连续数据时。

字段定义

  • Bits 31:22:保留位,不参与实际功能。

  • Bit 21

  • 如果设置为‘1’,则表示控制器支持Transport SGL Data Block descriptor
  • 如果为‘0’,则表示控制器不支持此类型的SGL描述符。

  • Bit 20

  • 如果设置为‘1’,则表示控制器支持在SGL Data BlockSGL SegmentSGL Last Segment描述符类型中的Address字段指定偏移量。
  • 如果为‘0’,则表示不支持此功能。

  • Bit 19

  • 如果设置为‘1’,则表示支持使用Metadata Pointer (MPTR),它包含一个地址,该地址指向一个SGL段,其中只包含一个SGL描述符,且该描述符为qword对齐。
  • 如果为‘0’,则表示不支持此功能。

  • Bit 18

  • 如果设置为‘1’,则表示控制器支持包含数据或元数据SGL的命令,其中SGL的长度大于实际要传输的数据量。
  • 如果为‘0’,则表示SGL的长度必须等于要传输的数据量。

  • Bit 17

  • 如果设置为‘1’,则表示支持使用字节对齐的连续物理缓冲区来存储元数据(Metadata Pointer字段参见图86中的描述)。
  • 如果为‘0’,则表示不支持此功能。

  • Bit 16

  • 如果设置为‘1’,则表示支持SGL Bit Bucket descriptor
  • 如果为‘0’,则表示不支持此描述符。

  • Bits 15:08 - SGL Descriptor Threshold (SDT)

  • 指示命令中SGL描述符的推荐最大数量。该字段对于管理SGL列表非常重要。如果该字段被清除为0h,则表示没有推荐的最大SGL描述符数量。

  • Bit 02

  • 如果设置为‘1’,则表示控制器支持Keyed SGL Data Block descriptor
  • 如果为‘0’,则表示控制器不支持此描述符。

  • Bit 01:00 - SGL Support Basic Configuration

  • 00b:表示不支持SGL。
  • 01b:表示支持SGL,但没有对数据块的对齐或粒度要求。
  • 10b:表示支持SGL,并且数据块要求对齐到dword并有粒度要求。

作用

  • SGL支持字段为存储设备的I/O操作提供了灵活性,尤其在需要处理大量数据或非连续数据时。通过这些设置,控制器能够灵活地支持不同的数据传输要求。
  • SGL描述符的支持对齐要求确保了数据传输的效率和一致性,尤其在处理复杂或大数据块时非常重要。

2. Maximum Number of Allowed Namespaces (MNAN)

该字段指示NVM子系统所支持的最大命名空间数量。命名空间用于在存储设备中创建隔离的存储区域,不同的命名空间可以用于存储不同的应用数据。

字段定义

  • 如果该字段清除为0h,则表示NVM子系统支持的最大命名空间数量不超过NN字段中的值。
  • 如果控制器支持Asymmetric Namespace Access Reporting,则该字段应设置为一个非零值,并且该值不大于NN字段中的值。

作用

  • MNAN字段帮助系统管理员了解NVM子系统可以支持的命名空间数量限制。命名空间的数量直接影响存储资源的管理和分配,特别是在多租户或多应用场景中,命名空间提供了数据隔离和独立性。

3. 总结

这些字段为控制器的SGL支持、命名空间管理提供了详细的配置选项:

  • SGLS字段:提供了关于控制器如何支持SGL的全面描述,包括对SGL类型、对齐要求和描述符数量的支持。它帮助系统提高数据传输效率,尤其在处理大规模数据或非连续数据时。
  • MNAN字段:定义了NVM子系统支持的最大命名空间数量,为命名空间管理和配置提供了依据。

这些功能对存储系统的性能、灵活性和资源管理非常重要,特别是在处理复杂的数据存储、传输和隔离任务时。