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

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

Blog Author

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

3.1.3.10 ACQ – Admin Completion Queue Base Address(管理员完成队列基址)

该属性定义了管理员完成队列(Admin Completion Queue)的基地址。

字段解析:

  • Admin Completion Queue Base (ACQB)
    指定管理员完成队列的 64 位物理地址的 52 个最重要的位。该地址必须是内存页对齐的(根据 CC.MPS 的值)。所有提交到管理员提交队列(Admin Submission Queue)的命令的完成队列条目都会被发布到此完成队列。此队列始终与中断向量 0 相关联。

3.1.3.11 CMBLOC – Controller Memory Buffer Location(控制器内存缓冲区位置)

这是一个可选属性,定义了控制器内存缓冲区的位置。如果控制器不支持控制器内存缓冲区(CAP.CMBS),则该属性保留。如果控制器支持控制器内存缓冲区并且 CMBMSC.CRE 被清除为 0,则该属性应清除为 0h

字段解析:

  • Offset (OFST)
    表示控制器内存缓冲区的偏移量,单位是 CMBSZ 字段指定的大小单元。

  • CMB Queue Dword Alignment (CQDA)
    如果该位设置为 1,则 CDW11.PC 设置为 1,并且地址指针指向控制器内存缓冲区。在 Create I/O Submission QueueCreate I/O Completion Queue 命令中,地址指针必须是字对齐的。如果该位设置为 0,则队列内存的对齐要求由 PRP1 字段在创建队列命令中的定义决定。

  • CMB Data Metadata Mixed Memory Support (CDMMMS)
    如果该位设置为 1,则命令中的数据和元数据在控制器缓冲区内的使用限制不再强制执行。如果该位清除为 0,则限制仍然强制执行。

  • CMB Data Pointer and Command Independent Locations Support (CDPCILS)
    如果该位设置为 1,则命令相关的 PRP 列表和 SGL 可以不强制位于控制器内存缓冲区内。如果该位清除为 0,则强制执行此限制。

  • CMB Data Pointer Mixed Locations Support (CDPMLS)
    如果该位设置为 1,则与单个命令相关的 PRP 列表或 SGL 中的所有内存不必都位于控制器内存缓冲区或完全不在控制器内存缓冲区内。如果该位清除为 0,则强制执行此限制。

  • CMB Queue Physically Discontiguous Support (CQPDS)
    如果该位设置为 1,则控制器内存缓冲区中的队列不需要是物理上连续的。如果该位清除为 0,则队列必须是物理上连续的。

  • CMB Queue Mixed Memory Support (CQMMS)
    如果该位设置为 1,则控制器内存缓冲区中的队列可以包含来自其他地方的内存。如果该位清除为 0,则队列内的所有内存必须位于控制器内存缓冲区中。


总结

这些字段和属性提供了对控制器内存缓冲区、管理员队列的管理以及内存布局的详细控制,能够影响队列的对齐、内存块的位置以及数据存储的策略。这些设置对于优化控制器性能和实现不同的内存管理策略非常重要,特别是在涉及高性能存储和多队列操作时。