第4章 消息服务模型与控制原语 - 页码55
我们继续深入分析 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 节。 |
字段解析:
-
Message Header (NMH):每个控制原语都包含一个 NVMe-MI 消息头,该头部用于标识消息类型、完整性检查和其他控制信息。
-
Control Primitive Opcode (CPO):这是控制原语的核心字段,指定该原语的操作类型。操作码用于标识控制原语的执行任务,如暂停、恢复、获取状态等。
-
Tag (TAG):该字段用于唯一标识控制原语请求,响应消息中会返回相同的标签(Tag)值。
-
Control Primitive Specific Parameter (CPSP):这个字段携带控制原语所需的额外参数,具体内容依据操作码不同而变化。
-
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:厂商自定义的操作码,用于扩展功能。 |
操作码的解释:
-
Pause(00h) 和 Resume(01h):用于控制命令插槽的执行,暂停和恢复命令的处理。
-
Abort(02h):用于中止命令消息的处理,通常在命令无法继续执行时使用。
-
Get State(03h):用于查询命令插槽的当前状态,例如命令是否正在处理中。
-
Replay(04h):用于重放之前的响应消息,通常在需要重复发送响应时使用。
-
Reserved(05h~EFh):保留的操作码,通常是未定义或将来可能使用的功能。
-
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) | 消息完整性校验字段,确保响应消息的正确性。 |
字段解析:
-
Message Header (NMH):与控制原语请求消息中的 Message Header 一致,包含消息类型、状态信息等。
-
Status (STATUS):响应状态,表示控制原语操作的执行结果,可能是成功或失败。
-
Tag (TAG):与请求消息中的 Tag 字段相匹配,用于跟踪请求与响应。
-
Control Primitive Specific Response (CPSR):返回控制原语特定的状态或响应数据,依据操作码的不同,这个字段可能会包含额外的信息。
-
Message Integrity Check (MIC):完整性校验字段,用于验证响应消息的完整性和正确性。
✅ 多个控制原语的并行发送
- 管理控制器可以 不等待之前的控制原语响应,就向命令插槽发送多个控制原语。这意味着在某些情况下,管理控制器可以并行执行多个控制操作。
- 注意:多个控制原语的并行处理不需要等到前一个原语的响应返回,可以提高系统的响应速度和效率。
🔍 总结
-
控制原语(Control Primitives):用于从管理控制器向管理端点发送命令,执行诸如暂停、恢复、查询状态等操作。控制原语具有灵活性,允许在命令插槽的任何状态下进行处理。
-
控制原语字段(CPO):控制原语的操作码(CPO)决定了要执行的控制操作,每个操作码对应不同的任务(如暂停、恢复、查询状态等)。
-
成功响应格式:控制原语的成功响应格式包含状态信息、响应特定数据(CPSR)和完整性校验等,确保管理控制器能够正确解析执行结果。
-
并行控制原语发送:管理控制器可以并行发送多个控制原语,不需要等待前一个控制原语的响应,这样可以提高命令处理的效率。
如果你希望进一步了解 控制原语操作码 的具体应用场景,或对如何实现 多个控制原语的并行处理 感兴趣,可以告诉我,我将为你提供更多详细的信息和例子。