第4章 消息服务模型与控制原语 - 页码55
NVMe-MI 1 min read

第4章 消息服务模型与控制原语 - 页码55

Blog Author

我们继续深入分析 NVM Express® Management Interface Specification, Revision 2.0 中的第 56 页内容,这部分详细介绍了 控制原语的字段控制原语操作码(CPO),以及 控制原语成功响应的格式。以下是每个部分的详细解析。


控制原语字段(Control Primitive Fields)

控制原语的消息格式(Figure 37)

控制原语的格式包括以下几个关键字段:

字节范围 字段 说明
03:00 NVMe-MI Message Header (NMH) 消息头,参考第 3.1 节,包含基本的消息格式和标识信息。
04 Control Primitive Opcode (CPO) 控制原语的操作码,指定要执行的控制操作,参考 Figure 38。
05 Tag (TAG) 跟踪标识符,用于在相关的控制原语响应消息中返回。
07:06 Control Primitive Specific Parameter (CPSP) 控制原语特定的参数,用于传递控制原语所需的附加信息。
11:08 Message Integrity Check (MIC) 消息完整性检查字段,参考第 3.1 节。

字段解析

  1. Message Header (NMH):每个控制原语都包含一个 NVMe-MI 消息头,该头部用于标识消息类型、完整性检查和其他控制信息。

  2. Control Primitive Opcode (CPO):这是控制原语的核心字段,指定该原语的操作类型。操作码用于标识控制原语的执行任务,如暂停、恢复、获取状态等。

  3. Tag (TAG):该字段用于唯一标识控制原语请求,响应消息中会返回相同的标签(Tag)值。

  4. Control Primitive Specific Parameter (CPSP):这个字段携带控制原语所需的额外参数,具体内容依据操作码不同而变化。

  5. Message Integrity Check (MIC):完整性校验字段,用于验证消息的正确性,防止数据在传输过程中发生篡改。


控制原语操作码(CPO)(Figure 38)

控制原语操作码(CPO)定义了不同的控制操作类型。以下是支持的操作码及其说明:

操作码 类型 描述
00h M Pause:暂停命令插槽中的命令处理。
01h M Resume:恢复暂停的命令处理。
02h M Abort:中止正在处理的命令。
03h M Get State:获取命令插槽的状态。
04h M Replay:重放命令消息的响应。
05h~EFh R Reserved:保留的操作码,暂未定义或不支持的操作。
F0h~FFh O Vendor Specific:厂商自定义的操作码,用于扩展功能。

操作码的解释

  1. Pause(00h)Resume(01h):用于控制命令插槽的执行,暂停和恢复命令的处理。

  2. Abort(02h):用于中止命令消息的处理,通常在命令无法继续执行时使用。

  3. Get State(03h):用于查询命令插槽的当前状态,例如命令是否正在处理中。

  4. Replay(04h):用于重放之前的响应消息,通常在需要重复发送响应时使用。

  5. Reserved(05h~EFh):保留的操作码,通常是未定义或将来可能使用的功能。

  6. Vendor Specific(F0h~FFh):厂商自定义的操作码,允许厂商扩展控制原语的功能,支持特定的硬件或系统功能。


控制原语成功响应格式(Figure 39)

控制原语的成功响应消息的格式包括以下几个字段:

字节范围 字段 说明
03:00 NVMe-MI Message Header (NMH) 消息头,包含消息类型和状态等基础信息。
04 Status (STATUS) 响应的状态,指示操作成功与否,参考第 4.1.2 节。
05 Tag (TAG) 包含来自请求消息的标记(Tag),用于匹配请求与响应。
07:06 Control Primitive Specific Response (CPSR) 控制原语特定的响应信息,用于返回执行结果。
11:08 Message Integrity Check (MIC) 消息完整性校验字段,确保响应消息的正确性。

字段解析

  1. Message Header (NMH):与控制原语请求消息中的 Message Header 一致,包含消息类型、状态信息等。

  2. Status (STATUS):响应状态,表示控制原语操作的执行结果,可能是成功或失败。

  3. Tag (TAG):与请求消息中的 Tag 字段相匹配,用于跟踪请求与响应。

  4. Control Primitive Specific Response (CPSR):返回控制原语特定的状态或响应数据,依据操作码的不同,这个字段可能会包含额外的信息。

  5. Message Integrity Check (MIC):完整性校验字段,用于验证响应消息的完整性和正确性。


多个控制原语的并行发送

  • 管理控制器可以 不等待之前的控制原语响应,就向命令插槽发送多个控制原语。这意味着在某些情况下,管理控制器可以并行执行多个控制操作。
  • 注意:多个控制原语的并行处理不需要等到前一个原语的响应返回,可以提高系统的响应速度和效率。

🔍 总结

  1. 控制原语(Control Primitives):用于从管理控制器向管理端点发送命令,执行诸如暂停、恢复、查询状态等操作。控制原语具有灵活性,允许在命令插槽的任何状态下进行处理。

  2. 控制原语字段(CPO):控制原语的操作码(CPO)决定了要执行的控制操作,每个操作码对应不同的任务(如暂停、恢复、查询状态等)。

  3. 成功响应格式:控制原语的成功响应格式包含状态信息、响应特定数据(CPSR)和完整性校验等,确保管理控制器能够正确解析执行结果。

  4. 并行控制原语发送:管理控制器可以并行发送多个控制原语,不需要等待前一个控制原语的响应,这样可以提高命令处理的效率。


如果你希望进一步了解 控制原语操作码 的具体应用场景,或对如何实现 多个控制原语的并行处理 感兴趣,可以告诉我,我将为你提供更多详细的信息和例子。