【NVMe2.0b 7】NVMe 基本队列数据结构

3.3.3Queueing Data Structures

3.3.3.1Submission Queue Entry

每个通用命令格式命令的大小为 64 字节。

Command Dword 0、Namespace Identifier、Metadata Pointer、PRP Entry 1、PRP Entry 2、SGL Entry 1 和 Metadata SGL Segment Pointer 对所有 Admin 命令和所有 I/O Command Sets 的 I/O 命令具有通用定义。并非所有命令都使用 Metadata Pointer、PRP Entry 1、PRP Entry 2 和 Metadata SGL Segment Pointer。Command Dword 0 在 Figure 86 中定义。

Figure 86: Command Dword 0

在这里插入图片描述

Common Command Forma 在Figure 87中定义。将来定义的任何额外的 I/O Command Set都可以使用替代命令大小或格式。

SGL 不得用于 NVMe over PCIe 中的Admin命令。

Figure 87: Common Command Format

在这里插入图片描述

在这里插入图片描述

除了为 Common Command Format 通常定义的字段外,Admin 和 NVM Vendor Specific命令可能支持Data Transfer中的Number of Dwords和Metadata Transfer中的Number of Dwords字段。如果支持,Admin Vendor Specific Command 和 NVM Vendor Specific Commands 的命令格式在Figure 88 中定义。有关更多详细信息,请参阅第 8.23 节。

Figure 88: Common Command Format – Admin and NVM Vendor Specific Commands (Optional)

在这里插入图片描述

3.3.3.2Common Completion Queue Entry

Common Completion Queue Entry Layout 的大小至少为 16 个字节。Figure 89 描述了遵循 Common Completion Queue Entry Layout 的完成队列条目数据结构的前 16 个字节的布局。Dword 0 和 Dword 1 的内容是特定于命令的。如果命令使用 Dword 0 或 Dword 1,则这些 dword 的定义包含在相关的命令定义中。如果命令不使用 Dword 0 或 Dword 1,则保留未使用的字段。Dword 2 在 Figure 90 中定义,Dword 3 在Figure 91 中定义。

如果完成队列条目是通过多次写入来构建的,则Phase Tag位应在该完成队列条目的最后一次写入中更新。

Figure 89: Common Completion Queue Entry Layout – Admin and All I/O Command Sets

在这里插入图片描述

Figure 90: Completion Queue Entry: DW 2

在这里插入图片描述

Figure 91: Completion Queue Entry: DW 3

在这里插入图片描述

3.3.3.2.1Status Field 定义

Status Field 定义完成队列条目中指示的命令的状态,在Figure 92 中定义。

Status Field 的值 0h 表示命令成功完成,没有致命或非致命错误条件。除非另有说明,如果命令由于多种原因未能成功完成,则返回的特定状态代码,由供应商选择。

Figure 92: Completion Queue Entry: Status Field

在这里插入图片描述

完成队列条目指示正在报告的完成响应的 Status Code Type(SCT)。Figure 93 指定了状态码类型值和描述。

Figure 93: Status Code – Status Code Type Values

在这里插入图片描述

完成队列条目中的Status Code(SC) 字段指示有关正在报告的完成的更详细的状态信息。

每个 Status Code 值集分为三个范围:

  • 00h 到 7Fh:适用于Admin Command Set,或跨多个Command Set;
  • 80h到 BFh:I/O Command Set具体状态码;
  • C0h 到 FFh:供应商特定状态代码。

除非另有说明,否则如果应用多个状态代码,则由控制器选择返回的 Status Code。

3.3.3.2.1.1Generic Command Status Definition

具有 Generic Command Status 的 Status Code Type(SCT) 的完成队列条目指示与该命令关联的状态值,该状态值在许多不同类型的命令中是通用的。

Figure 94: Status Code – Generic Command Status Values

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.3.3.2.1.2Command Specific Status 定义

具有命令特定错误Status Code Type (SCT) 的完成队列条目表示特定命令opcode的错误。00h 到 7Fh 的状态代码用于 Admin 命令错误。80h 到 BFh 的状态码特定的 I/O command sets。

Figure 95: Status Code – Command Specific Status Values

在这里插入图片描述
在这里插入图片描述

Figure 96: Status Code – Command Specific Status Values, I/O Commands

在这里插入图片描述

Figure 97: Status Code – Command Specific Status Values, Fabrics Commands

在这里插入图片描述

在这里插入图片描述

3.3.3.2.1.3Media and Data Integrity Errors定义

具有Media and Data Integrity Errors的 Status Code Type(SCT) 的完成队列条目指示与命令关联的错误,该错误是由于与 NVM 介质关联的错误或数据完整性类型错误造成的。

Figure 98: Status Code – Media and Data Integrity Error Values

在这里插入图片描述

3.3.3.2.1.4Path Related Status定义

具有Path Related Status的 Status Code Type(SCT)(参见Figure 99)的完成队列条目指示与命令关联的状态值,该状态值在许多不同类型的命令中是通用的,并适用于主机和控制器处理之间的特定连接命令或控制器和命名空间之间。如果主机可以使用多个控制器,则可以在同一 NVM 子系统中的不同控制器上重试返回此状态的命令。

在多路径环境中,除非另有说明,否则应使用不同的路径(如果可用)重试此类错误。

Figure 99: Status Code – Path Related Status Values

在这里插入图片描述

3.3.3.3Queue Size

队列大小在一个基于 0 的 16 位字段中表示,该字段表示队列中的槽数。队列的最小大小是两个槽。I/O Submission Queue 或 I/O Completion Queue 的最大大小定义为 64 Ki 个槽,受 CAP.MQES 字段中报告的控制器支持的最大队列大小限制。Admin Submission 和 Admin Completion Queue 的最大大小定义为 4 Ki 个槽。由于Head和Tail条目指针的定义,每个队列中有一个槽不可用。

3.3.3.4Queue Identifier

每个队列都通过一个 16 位 ID 值标识,该 ID 值在创建队列时分配给该队列。I/O Submission Queue标识符和 I/O Completion Queue 标识符都是从 1 到 65,535 的值。

3.3.3.5队列优先级

如果支持具有紧急优先级等级仲裁机制的加权轮询,则主机软件可以分配Urgent、High、Medium或Low的队列优先级服务等级。如果不支持具有紧急优先级等级仲裁机制的加权轮询,则不使用优先级设置并且被控制器忽略。

3.3.3.6队列协调

有一个Admin Queue对与多个 I/O Queue 对关联。Admin Submission Queue 和 Completion Queue 用于执行影响整个控制器的功能。I/O Submission Queue 和 Completion Queue 可用于执行 I/O(读/写)操作,并可分布在 CPU 内核和线程之间。

一个Admin命令可能会影响一个或多个 I/O queue 对。主机应确保Admin操作与负责 I/O queue 对的线程协调,以避免不必要的错误情况。协调细节超出了本规范的范围。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值