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

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

Blog Author

继续深入分析协议内容:NVM Express® Base Specification, revision 2.0b

3.1.3.4 INTMC – Interrupt Mask Clear(中断掩码清除)

INTMC属性用于解除中断掩蔽。类似于INTMS,它可以按位解除对中断向量的掩蔽,使中断得以触发。具体字段如下:

类型 重置值 描述
31:00 RWC 0h Interrupt Vector Mask Clear (IVMC):该字段按位有效。如果将‘1’写入某一位,则解除对应中断向量的掩蔽,使其能够触发中断。写入‘0’没有任何效果。读取时,返回当前控制器中断掩蔽值(而不是该属性的值)。如果某个位的值为‘1’,则对应的中断向量被掩蔽;如果该位为‘0’,则对应的中断向量没有被掩蔽。

字段解析

  • Interrupt Vector Mask Clear (IVMC):此字段允许解除中断向量的掩蔽。通过写入‘1’来清除掩蔽,使得该中断向量可以触发。写入‘0’不会影响任何内容。读取时,它返回当前的中断掩蔽状态。

3.1.3.5 CC – Controller Configuration(控制器配置)

CC属性用于配置控制器的设置,主机软件需要在启用控制器之前设置几个重要的参数,如Arbitration Mechanism Selected (AMS)Memory Page Size (MPS)I/O Command Set Selected (CSS)。配置这些字段后,主机可以通过设置 CC.EN 位为 ‘1’ 来启用控制器。

类型 重置值 描述
31:25 RO 0h 保留字段
24 RW/RO 0b Controller Ready Independent of Media Enable (CRIME):此字段控制控制器的就绪模式。在控制器启用时,该字段决定控制器的就绪模式。
23:20 RW/RO 0h I/O Completion Queue Entry Size (IOCQES):此字段定义I/O完成队列条目的大小,单位为字节,且必须是2的幂。

字段解析

  1. Controller Ready Independent of Media Enable (CRIME):该字段决定启用控制器时是否采用“Controller Ready Independent of Media”模式。如果该字段为‘1’,则启用控制器时,控制器将独立于媒体就绪。若为‘0’,则控制器将在媒体准备就绪后才会完全启用。
  2. 0b:启用控制器时,控制器依赖于媒体就绪。
  3. 1b:启用控制器时,控制器独立于媒体就绪。

  4. I/O Completion Queue Entry Size (IOCQES):该字段定义I/O完成队列的条目大小。控制器根据所选的I/O命令集进行设置,值必须是2的幂(例如,1, 2, 4, 8, 16等)。如果控制器不支持I/O队列,则该字段是只读的,值为0。


总结:

  • INTMC (Interrupt Mask Clear) 使得主机可以解除掩蔽中断,恢复某些中断的触发。
  • CC (Controller Configuration) 提供了配置控制器的核心功能,如控制器就绪模式、I/O完成队列大小等设置。在控制器启用之前,必须正确设置这些字段以确保正常操作。

这些字段和设置为控制器的操作提供了灵活的配置选项,确保可以根据不同的应用需求进行定制,尤其是在I/O队列管理和中断处理上。