控制器寄存器与属性配置 - 第71页
NVME2.0协议解读 1 min read

控制器寄存器与属性配置 - 第71页

Blog Author

深入分析 NVM Express® Base Specification, revision 2.0b

3.1.3.12 CMBSZ – Controller Memory Buffer Size(控制器内存缓冲区大小)

该属性定义了控制器内存缓冲区的大小。如果控制器不支持该功能,或者控制器支持控制器内存缓冲区但 CMBMSC.CRE 被清除为 ‘0’,则此属性应清除为 0h

字段解析:

  • Size (SZ)
    表示可供主机使用的控制器内存缓冲区的大小,单位为 Size Unit(大小单元)。如果偏移量加上大小超出了 BAR(基地址寄存器)所占用的范围,则主机可用的大小将受到 BAR 长度的限制。

  • Size Units (SZU)
    指示 Size 字段的粒度(单位)。可能的值包括:

  • 0h:4 KiB
  • 1h:64 KiB
  • 2h:1 MiB
  • 3h:16 MiB
  • 4h:256 MiB
  • 5h:4 GiB
  • 6h:64 GiB
  • 7h 到 Fh:保留

  • Write Data Support (WDS)
    如果此位设置为 1,则控制器支持在控制器内存缓冲区中处理从主机到控制器的数据和元数据(例如,写入命令)。如果该位清除为 0,则对于从主机到控制器的数据和元数据的命令,不会在控制器内存缓冲区中传输。

  • Read Data Support (RDS)
    如果此位设置为 1,则控制器支持在控制器内存缓冲区中处理从控制器到主机的数据和元数据(例如,读取命令)。如果该位清除为 0,则对于从控制器到主机的数据和元数据的命令,不会从控制器内存缓冲区中传输。

  • PRP SGL List Support (LISTS)
    如果此位设置为 1,则控制器支持在控制器内存缓冲区中使用 PRP 列表。如果此位设置为 1 且控制器支持 SGL(Scatter Gather Lists),则控制器支持在控制器内存缓冲区中使用 SGL。如果此位设置为 1,则必须设置 Submission Queue Support(提交队列支持)位为 1

  • Completion Queue Support (CQS)
    如果此位设置为 1,则控制器支持在控制器内存缓冲区中使用管理员和 I/O 完成队列。如果该位清除为 0,则不会在控制器内存缓冲区中使用完成队列。

  • Submission Queue Support (SQS)
    如果此位设置为 1,则控制器支持在控制器内存缓冲区中使用管理员和 I/O 提交队列。如果该位清除为 0,则不会在控制器内存缓冲区中使用提交队列。


3.1.3.13 BPINFO – Boot Partition Information(启动分区信息)

这是一个可选属性,定义了启动分区的特性。如果控制器不支持启动分区功能,则此属性应清除为 0h


总结

这些控制器内存缓冲区相关的属性为主机提供了灵活的内存使用选项,可以针对特定的数据传输需求(如写入、读取、PRP 列表、SGL 等)优化性能。此外,启动分区的相关信息也为系统的启动过程提供了必要的配置,尤其是在支持启动分区的控制器中。