NVM Express 5 Admin Command Set

5 管理员命令集

管理员命令集定义了可以提交到管理员提交队列的命令。

提交队列条目 (SQE) 结构和所有管理员命令通用的字段在第 4.2 节中定义。完成队列条目 (CQE) 结构和所有管理员命令通用的字段在第 4.6 节中定义。本节定义了管理员命令集的 SQE 和 CQE 结构(即 SQE 命令 Dwords 10 到 15 和 CQE Dword 0)中的命令特定字段。

管理员命令不应受 I/O 队列状态的影响(例如,完整的 I/O 完成队列不应延迟或停止删除 I/O 提交队列命令)。

图 141 定义了 Admin 命令,而图 142 定义了特定于 NVM 命令集的 I/O 命令集特定管理员命令(即 NVM 命令集特定管理员命令)。请参阅第 7.1 节,了解各种控制器类型的强制、可选和禁止命令。

图 141:管理员命令的操作码

图 142:管理员命令的操作码 - 特定于 NVM 命令集

5.14 获取日志页命令

“获取日志页”命令返回包含所请求日志页的数据缓冲区

“获取日志页”命令使用“数据指针”“命令 Dword 10”、“命令 Dword 11”、“命令 Dword 12”、“命令 Dword 13”和“命令 Dword 14”字段。所有其他特定于命令的字段都是保留的。

图 195 和图 196 中定义了必需和可选的日志标识符。如果“获取日志页”命令指定了不支持的日志标识符,则控制器应中止命令,状态设为“命令中字段无效”。

identify控制器数据结构的“log page attributes”字段定义了日志页偏移量扩展 Dword数(32 位,而不是 12 位)。如果不支持扩展数据,则 Number of Dwords Lower 字段的 27:16位 指定要传输的 Dwords 数。

图 189:获取日志页 - 数据指针

127:00位:数据指针 (DPTR):此字段指定数据缓冲区的开始。有关此字段的定义,请参阅图 106。


图 190:获取日志页 – 命令 Dword 10

31:16b:低Dwords数 (NUMDL):此字段指定要返回的 dWords数的低16位。如果主机软件指定的大小大于请求的日志页,则控制器将返回完整的日志页,并在超出日志页末尾的 dwords返回未定义结果。组合的 NUMDL 和 NUMDU 字段构成一个基于0的值。

15b:保留异步事件 (RAE):此位指定何时保留或清除异步事件。如果此位被清除为“0”,则在命令成功完成后,将清除相应的异步事件。如果此位设置为“1”,则在命令成功完成后,将保留相应的异步事件(即不清除)。对于不与异步事件一起使用的日志页,主机软件应将此位清除为“0”。请参阅第 5.2 节。

11:08b:日志特定字段 (LSP):如果没有为“日志页标识符”字段指定日志定义,则保留此字段。

07:00b: 日志页标识符 (LID):此字段指定要检索的日志页的标识符。


图 191:获取日志页 – 命令 Dword 11

31:16b:日志特定标识符:此字段指定特定日志页所需的标识符。下表列出了需要日志特定标识符的日志页。

  • 耐久性组信息:耐久性组标识符(请参阅第 8.17 节)
  • 每个 NVM 集的可预测延迟:NVM 设置标识符(请参阅第 4.9 节)

15:00b:Dword数 (NUMDU):此字段指定要返回的Dword数的高16位


图 192:获取日志页 – 命令 Dword 12

31:00b:日志页偏移量低位 (LPOL)日志页偏移量指定了日志页中开始返回数据的位置。此字段指定日志页偏移量的低 32 位偏移量应与 dword 对齐,由 1:0 位清空到 00b 表示。控制器不需要检查位 1:0 是否已清除到 00b。如果位 1:0 未清除到 00b,控制器可能会报告命令中无效字段的错误。如果控制器没有报告命令中无效字段的错误,则控制器应像将 1:0 位清除到 00b 一样运行。如果主机指定的偏移量(即 LPOL 和 LPOU)大于所请求的日志页的大小(例如,从偏移量 200 开始请求包含 100 个字节的日志页),则控制器应中止命令,返回状态为 Invalid Field in Command 。


图 193:获取日志页 – 命令 Dword 13

31:00b:日志页偏移量高位(LPOU):此字段指定日志页偏移量的高 32 位。请参阅日志页面偏移量下限定义。


如果控制器支持通过 Get Log Page 命令选择 UUID(请参阅图 195 和第 8.24 节),则使用命令 Dword 14 指定 UUID 索引值(请参阅图 194)。

图 194:获取日志页面 – 命令 Dword 14

06:00b:UUID 索引:参考图 502。


5.14.1 日志特定信息

图 195 和图 196 定义了可以使用 Get Log Page 命令检索的日志页面以及这些日志页面中返回的信息范围。请参阅第 7.1 节,了解各种控制器类型的必填、可选和禁止的日志页面。

NVM子系统范围的日志页返回的对 NVM 子系统而言是全局信息。控制器范围的日志页返回特定于处理命令的控制器的信息。Namespace 范围的日志页返回特定于指定命名空间的信息。对于指示多个范围的日志页,指定的命名空间标识符确定返回的信息。日志页中任何单个字段的定义都可能指示特定于该单个字段的不同范围

对于范围为 NVM 子系统或控制器的日志页面(如图 195 和图 196 所示),控制器应中止标识符不是 0h 或 FFFFFFFFh的命名空间标识符的命令,状态设为 Command 中的字段无效。否则,图 106 中的命名空间标识符使用规则适用。

图 195:获取日志页 – 日志页标识符

图 196:获取日志页 – 日志页面标识符,特定于 NVM 命令集

5.14.1.1 错误信息(日志标识符 01h)64B

此日志页用于描述完成但出错的命令的扩展错误信息,或报告不特定于特定命令的错误。当在与完成错误的命令或者作为具有错误状态类型的异步事件的一部分相关联的完成队列条目的状态字段中将“more(M)”位设置为“1”时,将提供扩展错误信息。此日志页面对控制器是全局的

此错误日志可能会返回最近的n个错误。如果主机软件指定了 n 个错误日志大小的数据传输,则返回最近 n 个错误的错误日志。条目的顺序基于错误发生的时间,最新的错误将作为第一个日志条目返回。

返回的日志页中的每个条目都在图 197 中定义。日志页是一组 64 字节的条目;支持的最大条目数在 Identify Controller 数据结构的 ELPE 字段中指示(请参阅图 251)。如果在生成新条目时日志页已满,则控制器应将新条目插入日志并丢弃最早的条目

控制器应在电源循环和控制器级别重置时通过删除所有条目来清除此日志页。

图 197:获取日志页 – 错误信息日志条目(日志标识符 01h)

07:00B:错误计数:这是一个64位递增的错误计数,指示此错误的唯一标识符。错误计数从1h开始,针对每个唯一的错误日志条目递增,并在断电条件下保持不变。值为 0h 表示条目无效;当存在丢失的条目或少于控制器支持的最大条目数时,将使用此值。如果此字段的值为 FFFFFFFFh,则该字段在递增时应设置为 1h(即回滚到 1h)。在 NVMe 1.4 之前,未指定处理超出 FFFFFFFFh 的增量。

09:08B:提交队列 ID:此字段指示与错误信息关联的命令的SQ标识符。如果错误不是针对于特定命令的,则此字段应设置为 FFFFh

11:10B:命令 ID:此字段指示与错误关联的命令的命令标识符。如果错误不是针对于特定命令的,则此字段应设置为 FFFFh

13:12B:15:1b:状态字段:此字段表示已完成命令的状态字段。如果错误不是针对于特定命令的,则此字段报告最适用的状态值。0b:P标签:此字段可能指示为命令发布的P标签

15:14B:参数错误位置:此字段指示与错误关联的命令参数的字节和位(如果适用)。如果参数跨越多个字节或位,则位置指示参数的第一个字节和位。10:08b: 包含错误的命令位。有效值为 0 到 7。07:00b :包含错误的命令字节。有效值为 0 到 63。如果错误不是针对于特定命令的,则此字段应设置为 FFFFh

23:16B:LBA:此字段表示遇到错误情况的第一个 LBA(如果适用)。

27:24B:Namespace:此字段指示与错误关联的命名空间的 NSID(如果适用)。

28B:供应商特定信息可用:如果有其他供应商特定错误信息可用,则此字段提供与该页面关联的日志页面标识符。值为 0h 表示没有其他信息可用。有效值在 80h到 FFh 的范围内。

29B:传输类型(TRTYPE):此字段指示与错误关联的传输的传输类型。此字段中的值与 Discovery Log Page Entry 中的 TRTYPE 值相同(请参阅 NVMe over Fabrics 规范)。如果错误与传输无关,则应将此字段清除至 0h。如果错误与传输相关,则此字段应设置为传输的类型,如下所示:0h:未指示传输类型或错误与传输无关。1h:RDMA 传输(请参阅 NVMe over Fabric 规范)。2h:光纤通道传输(请参阅 INCITS 540)。3h:TCP 传输(请参阅 NVMe over Fabrics 规范)。FEh:主机内传输(即环回)(注意:这是主机软件使用的保留值)。

39:32B:命令特定信息:此字段包含命令特定信息。如果使用,命令定义将指定返回的信息。

41:40B:传输类型特定信息:此字段指示其他传输类型特定错误信息。如果存在多个错误,则此字段指示有关第一个错误的其他信息。此字段与传输类型相关(请参阅 TRTYPE),如下所示:3h:此字段表示从传输标头的开始到出错的字段的开始的偏移量(以字节为单位)。如果存在多个错误,则此字段指示出错的最小偏移量


5.14.1.2 SMART/健康信息(日志标识符 02h)

此日志页面用于提供 SMART(Slef-Monitoring, Analysis, and Reporting Technology) 和一般健康信息。所提供的信息在控制器的整个生命周期内维护,并在电源周期中保留。要请求控制器日志页,指定的命名空间标识符为 FFFFFFFFh 或 0h。为了与符合本规范修订版 1.4 及更早版本的实现兼容,主机应使用 FFFFFFFFh 的命名空间标识符来请求控制器日志页。控制器还可以支持基于每个命名空间请求日志页,如图 251 中 Identify Controller 数据结构中 LPA 字段的第 0 位所示。

如果每个命名空间都不支持日志页,则指定 0h 或 FFFFFFFFh 以外的命名空间标识符应中止命令且状态设为“命令中字段无效”。如果控制器未中止该命令,则符合此修订版和本规范的早期修订版的实现将返回控制器日志页。在此修订版的规范中,SMART / Health日志页中没有定义特定于命名空间的信息,因此控制器日志页面和特定于命名空间的日志页面包含相同的信息。

有关 NVM 子系统运行状况的严重警告可以通过向主机发送异步事件通知来指示。导致向主机发出异步事件通知的警告是使用“设置功能”命令配置的;请参阅第 5.21.1.11 节。

可以使用 SMART/健康信息日志的一部分返回的参数来计算性能。具体来说,通过读取或写入命令的数量、读取或写入的数据量以及控制器繁忙时间的数量,可以计算出每秒的 I/O 数和带宽。

返回的日志页在图 198 中定义。

图 198:获取日志页 – SMART / 运行状况信息日志

00B:严重警告:此字段指示控制器状态的严重警告每个位对应一个严重警告类型;多个位可以设置为“1”。如果某个位被清除为“0”,则该严重警告不适用。严重警告可能会导致向主机发出异步事件通知。此字段中的位表示当前关联状态,不是持久的。

  • 5b:如果置为 '1',则持久内存区域已变为只读或不可靠(请参阅第 4.8 节)。
  • 4b:如果设置为“1”,则表示易失性内存备份设备出现故障。仅当控制器具有易失性内存备份解决方案时,此字段才有效。
  • 3b:如果设置为“1”,则所有媒体都已置于只读模式。如果媒体上的只读条件是命名空间的写保护状态发生变化的结果,则控制器不应将此位设置为“1”(请参阅第 8.19.1 节)。
  • 2b:如果设置为“1”,则 NVM 子系统的可靠性已降低,这是由于严重的介质相关错误或任何降低 NVM 子系统可靠性的内部错误而降低的。
  • 1b:如果设置为“1”,则温度为:a) 大于或等于过温阈值;或 b) 小于或等于低温阈值,(请参阅第 5.21.1.4 节)。
  • 0b:如果设置为“1”,则可用备用容量已降至阈值以下

02:01B:复合温度:包含与温度对应的值(以开尔文为单位),该值表示控制器和与该控制器关联的命名空间的当前复合温度。此值的计算方式是特定于实现的,可能不代表 NVM 子系统中任何物理点的实际温度。此字段的值可用于触发异步事件(请参阅第 5.21.1.4 节)。警告和临界过热复合温度阈值由图 251 中 Identify Controller 数据结构中的 WCTEMP 和 CCTEMP 字段报告。

03B:可用备用容量:包含剩余可用备用容量的标准化百分比(0% 到 100%)。

04B:可用备用阈值:当可用备用值低于此字段中指示的阈值时,可能会发生异步事件完成。该值以标准化百分比(0% 到 100%)表示。值 101 到 255 是保留的

05B:已用百分比基于实际使用情况和制造商对 NVM 寿命的预测,供应商对已使用的NVM 子系统寿命百分比的特定估计值。值为 100 表示 NVM 子系统中 NVM 的估计耐久性已被消耗,但可能不表示 NVM 子系统故障。该值允许超过 100。大于 254 的百分比应表示为 255。该值应在每个开机小时更新一次(当控制器未处于睡眠状态时)。请参阅 JEDEC JESD218A 标准,了解 SSD 设备寿命和耐久性测量技术。

06B:耐力组严重警告摘要:此字段指示耐力组状态的严重警告。每个位对应一个严重警告类型,多个位可以设置为“1”。如果将位清除为“0”,则该严重警告不适用于任何耐力组。严重警告可能会导致向主机发出异步事件通知。此字段中的位表示当前关联状态,不是持久的。如果在一个或多个耐久组中将位设置为“1”,则在此字段中应将相应的位设置为“1”。

  • 3b:如果设置为“1”,则一个或多个耐久性组中的命名空间已置于只读模式,而不是由于命名空间的写保护状态发生变化(请参阅第 8.19.1 节)。
  • 2b:如果设置为“1”,则由于严重的介质相关错误或任何降低 NVM 子系统可靠性的内部错误,一个或多个耐久性组的可靠性已降低。
  • 0b:如果设置为“1”,则一个或多个耐力组的可用备用容量已降至阈值以下。

47:32B:读取的数据单元:包含主机从控制器读取的 512 字节数据单元的数量;此值不包括元数据。该值以千为单位报告(即,值 1 对应于 1,000 个读取的 512 字节字节单位)并四舍五入(例如,1 表示读取的 512 字节数据单元的数量从 1 到 1,000,3 表示读取的 512 字节数据单元的数量从 2,001 到 3,000)。当 LBA 大小不是 512 字节的值时,控制器应将读取的数据量转换为 512 字节单位。对于 NVM 命令集,作为比较、读取和验证操作的一部分读取的逻辑块应包含在此值中。此字段中的值为 0h 表示不报告读取的数据单元数。

63:48B:写入的数据单元:包含主机已写入控制器的 512 字节数据单元的数量;此值不包括元数据。该值以千为单位报告(即,值 1 对应于 1,000 个单位,每写入 512 个字节)并四舍五入(例如,1 表示写入的 512 字节数据单元的数量从 1 到 1,000,3 表示写入的 512 字节数据单元的数量从 2,001 到 3,000)。当 LBA 大小不是 512 字节的值时,控制器应将写入的数据量转换为 512 字节单位。对于 NVM 命令集,作为写入操作的一部分写入的逻辑块应包含在此值中。“写入不可更正”命令和“写入零”命令不应影响此值。此字段中的值为 0h 表示不报告写入的数据单元数。

79:64B:主机读取命令:包含控制器完成的读取命令数。对于 NVM 命令集,此值是 Compare 命令数和 Read 命令数之和。

95:80B:主机写入命令:包含控制器完成的写入命令数。对于 NVM 命令集,这是写入命令的数量。

111:96B:控制器繁忙时间:包含控制器忙于 I/O 命令的时间量。当 I/O 队列中有未完成的命令时,控制器处于繁忙状态(具体而言,是通过 I/O 提交队列尾部门铃写入发出的命令,并且相应的完成队列条目尚未发布到关联的 I/O 完成队列)。此值以分钟为单位报告。

127:112B:电源周期:包含电源周期的数量。

143:128B:开机小时数:包含开机小时数。这可能不包括控制器通电且处于非运行电源状态的时间。

159:144B:不安全关机:包含不安全关机的次数。如果在断电之前未收到关机通知 (CC.SHN),则此计数将递增。

175:160B:媒体和数据完整性错误:包含控制器检测到未恢复的数据完整性错误的发生次数。此字段中包含无法纠正的 ECC、CRC 校验和失败或 LBA 标记不匹配等错误。由于 Write Uncorrectable 命令(请参阅第 6.16 节)而引入的错误可能会也可能不会包含在此字段中。

191:176B:错误信息日志条目数:包含控制器生命周期内错误信息日志条目的数量。

195:192B: 警告复合温度时间:包含控制器运行的时间量(以分钟为单位),并且复合温度大于或等于图 251 中识别控制器数据结构中的警告复合温度阈值 (WCTEMP) 字段且小于临界复合温度阈值 (CCTEMP) 字段。如果 WCTEMP 或 CCTEMP 字段的值为 0h,则无论复合温度值如何,此字段始终清除到 0h。

199:196B:临界复合温度时间:包含控制器运行的时间量(以分钟为单位),并且复合温度大于或等于图 251 中识别控制器数据结构中的临界复合温度阈值 (CCTEMP) 字段。如果 CCTEMP 字段的值为 0h,则无论复合温度值如何,此字段始终清除为 0h。

201:200B:温度传感器 1:包含温度传感器 1 报告的当前温度。此字段由图 199 定义。

203:202B:温度传感器 2:包含温度传感器 2 报告的当前温度。此字段由图 199 定义。

205:204B:温度传感器 3:包含温度传感器 3 报告的当前温度。此字段由图 199 定义。

207:206B:温度传感器 4:包含温度传感器 4 报告的当前温度。此字段由图 199 定义。

209:208B:温度传感器 5:包含温度传感器 5 报告的当前温度。此字段由图 199 定义。

211:210B:温度传感器 6:包含温度传感器 6 报告的当前温度。此字段由图 199 定义。

213:212B:温度传感器 7:包含温度传感器 7 报告的当前温度。此字段由图 199 定义。

215:214B:温度传感器 8:包含温度传感器 8 报告的当前温度。此字段由图 199 定义。

219:216B:热量管理温度 1 转换计数:包含控制器转换为低功耗有功功率状态或执行供应商特定热管理操作的次数,同时最小化对性能的影响,以便尝试降低由于主机控制的热量管理功能(请参阅第 8.4.5 节)(即 复合温度上升到热管理温度 1 以上。一旦达到值 FFFFFFFFh,此计数器将不换行。值为 0h 表示此转换从未发生过或未实现此字段。

223:220B:热量管理温度 2 转换计数:包含控制器转换为较低功率有功功率状态或执行供应商特定热管理操作的次数,无论对性能的影响如何(例如,重度节流),以便尝试降低复合温度,因为主机控制的热量管理功能(请参阅第 8.4.5 节)(即 复合温度上升到热管理温度 2 以上。一旦达到值 FFFFFFFFh,此计数器将不换行。值为 0h 表示此转换从未发生过或未实现此字段。

227:224B:热量管理温度 1 的总时间:包含控制器转换为低功耗有功功率状态或执行供应商特定热量管理操作的秒数,同时最小化对性能的影响,以便尝试降低复合温度,因为主机控制的热量管理功能(请参阅第 8.4.5 节)。一旦达到值 FFFFFFFFh,此计数器将不换行。值为 0h 表示此转换从未发生过或未实现此字段。

231:228B:热量管理温度 2 的总时间:包含控制器转换为较低功率有功功率状态或执行供应商特定热量管理操作的秒数,而不考虑对性能的影响(例如,重度节流),以便尝试降低复合温度,因为主机控制的热量管理功能(请参阅第 8.4.5 节)。一旦达到值 FFFFFFFFh,此计数器将不换行。值为 0h 表示此转换从未发生过或未实现此字段。

---------------------------------------------------------------------------------------------------------------------------------


图 199:获取日志页 - 温度传感器数据结构

15:00b:温度传感器温度 (TST):包含温度传感器报告的当前温度(以开尔文为单位)。NVM 子系统中的物理点,其温度由温度传感器报告,温度精度是特定于实现的。未实现温度传感器的实现报告值为 0h。温度传感器报告的温度可用于触发异步事件(请参阅第 5.21.1.4 节)。

5.14.1.3 固件插槽信息(日志标识符 03h)

此日志页面用于描述存储在支持的每个固件插槽中的固件版本。固件修订版以 ASCII 字符串表示。日志页面还会指示活动插槽编号。返回的日志页在图 200 中定义。

图 200:获取日志页 – 固件插槽信息日志

5.14.1.4 更改的 Namespace 列表(日志标识符 04h)

此日志页用于描述附加到控制器的命名空间,这些命名空间具有:

  1. a) 自上次读取日志页以来,其标识 Namespace 数据结构中的信息已更改;
  2. b) 已添加;
  3. c) 已删除。

日志页面包含一个包含最多 1,024 个条目的Namespace列表。如果自上次读取日志页以来更改了超过 1,024 个命名空间的属性,则日志页中的第一个条目应设置为 FFFFFFFFh,列表的其余部分应为零填充。

5.14.1.5 支持的命令和效果(日志标识符 05h)

此日志页面用于描述控制器支持的命令以及这些命令对 NVM 子系统状态的影响。日志页的大小为 4,096 字节。每个管理员命令有一个“支持的命令”和“效果”数据结构,每个 I/O 命令有一个“支持的命令”和“效果”数据结构(基于在 CC.CSS 中选择的 I/O 命令集)。

图 201:获取日志页 - 支持的命令和效果日志

“支持的命令”和“效果”数据结构描述了命令的整体可能效果,包括命令的任何可选功能。

主机软件在确定如何提交命令以及命令完成后要执行的操作时,可能会考虑命令效果。建议在命令完成后,如果命令可能会更改托管软件的特定功能,请重新枚举和/或重新初始化关联的功能。例如,如果可能发生命名空间功能变更,则建议主机软件暂停关联命名空间的使用,提交可能导致命名空间能力变更的命令并等待其完成,然后重新发出 Identify 命令。

如果命名空间连接到多个控制器,则与这些控制器关联的主机应协调其命令,以满足命令提交和执行要求(请参阅图 202)。此协调的详细信息超出了本规范的范围。

图 202:获取日志页 - 支持的命令和影响数据结构

5.14.1.6 设备自检(日志标识符 06h)

此日志页面用于指示:

  1. a) 正在进行的任何设备自检操作的状态以及该操作的完成百分比;
  2. b) 最近 20 次设备自检操作的结果。

“最新自检结果数据结构”字段中包含的“自检结果数据结构”始终是上次完成或中止的自检操作的结果。“设备自检日志”中的下一个“自检结果数据结构”字段包含第二个最新的自检操作的结果,依此类推。如果完成或中止的自检操作少于 20 个,则未使用的“自检结果数据结构”字段中的“设备自检状态”字段应设置为 Fh,而该“自检结果数据结构”中的所有其他字段将被忽略。

图 203:获取日志页 – 设备自检日志

---------------------------------------------------------------------------------------------------------------------------------

5.14.1.7 遥测主机启动(日志标识符 07h)

此日志由描述日志的标头和零个或多个遥测数据块组成(请参阅第 8.14 节)。所有遥测数据块的大小均为 512 字节。当控制器处理此日志的“获取日志页”命令时,控制器应启动对此日志的控制器内部控制器状态的捕获,并在“日志特定字段”中将“创建遥测主机启动的数据”位设置为“1”。如果主机在此日志的“获取日志页”命令中指定的“日志页偏移量下限”值不是 512 个字节的倍数,则控制器应返回“命令中字段无效”的错误。此日志页面对控制器是全局的。

图 205:命令 Dword 10 – 日志特定字段

---------------------------------------------------------------------------------------------------------------------------------

5.14.1.8 遥测控制器启动(日志标识符 08h)

此日志由描述日志的标头和零个或多个遥测数据块组成(请参阅第 8.14 节)。所有遥测数据块的大小均为 512 字节。此日志是控制器启动的对控制器内部状态的捕获。遥测控制器启动的数据应在所有重置中保留。如果主机在此日志的“获取日志页”命令中指定的“日志页偏移量下限”值不是 512 个字节的倍数,则控制器应返回“命令中字段无效”的错误。此日志页面对控制器是全局的。

遥测控制器启动的数据由三个区域组成:遥测控制器启动的数据区域 1、遥测控制器启动的数据区域 2 和遥测控制器启动的数据区域 3。所有三个区域都从遥测控制器启动的数据区域块 1 开始。每个区域的最后一个块分别在遥测控制器启动的数据区域和最后一个块中指示。捕获的遥测数据及其大小取决于实现。日志页的大小是可变的,可以使用 Telemetry Controller 启动的数据区域 3 Last Block 字段进行计算。

控制器应返回所有请求的块的数据。遥测控制器启动的数据区域 3 最后一个块中最后一个块之外的数据未定义。如果主机请求的数据传输不是 512 字节的倍数,则控制器应返回 Invalid Field in Command 的错误。

图 207:获取日志页 - 遥测控制器启动的日志(日志标识符 08h)

---------------------------------------------------------------------------------------------------------------------------------

5.14.1.9 耐力组信息(日志标识符 09h)

此日志页面用于提供基于耐力组的耐力信息(请参阅第 8.17 节)。耐久组由零个或多个 NVM 集组成。所提供的信息是 Endurance Group 的整个生命周期。“耐久组标识符”在“获取日志页”命令的 Dword 11 的“日志特定标识符”字段中指定。日志页的大小为 512 个字节。

图 208:获取日志页 – 耐力组日志(日志标识符 09h)

---------------------------------------------------------------------------------------------------------------------------------

5.14.1.10每个 NVM 集的可预测延迟(日志标识符 0Ah)

此日志页可用于确定启用可预测延迟模式时指定 NVM 集的当前窗口以及指定 NVM 集发生的任何事件。当支持可预测延迟模式时,每个 NVM 集都有一个日志页面。命令 Dword 11(参见图 191)指定要返回日志页的 NVM 集。日志页的大小为 512 个字节。

日志页面指示与指定 NVM 集的确定性窗口和非确定性窗口关联的属性的典型值和可靠估计值。典型值、最大值和最小值是 NVM 子系统生命周期内的静态值和最坏情况值。

控制器成功完成此日志页面的读取后,将 Retain Asynchronous Event 位清除为“0”,然后将指定 NVM 集的报告事件清除为“0”,并在 Predictable Latency Event Aggregate 日志页面中将与指定 NVM Set 对应的字段清除为“0”。两个或多个主机之间的协调超出了本规范的范围。

图 209:获取日志页 - 每个 NVM 设置日志的可预测延迟

---------------------------------------------------------------------------------------------------------------------------------

5.14.1.11可预测延迟事件聚合日志页面(日志标识符 0Bh)

此日志页面指示特定 NVM 集是否发生了可预测延迟事件(请参阅第 8.18 节)。如果发生了可预测延迟事件,则特定事件的详细信息将包含在该 NVM 集的“每个 NVM 集的可预测延迟”日志页面中。当 NVM Set 的条目新添加到此日志页面时,将生成异步事件。

如果 NVM 集已启用可预测延迟事件挂起,则“可预测延迟事件聚合”日志页面将包含该 NVM 集的条目。日志页面是按 NVM 集标识符排序的列表。例如,如果 NVM 集 27、13 和 17 的可预测延迟事件处于挂起状态,则日志页面应按 13、17 和 27 的数字顺序包含条目。在成功完成“获取日志”页面后,将从此日志页面中删除特定 NVM 集,并且该 NVM 集的“每个 NVM 集的可预测延迟”日志页面的“保留异步事件”位已清除为“0”。

日志页面大小受 Identify Controller 数据结构中报告的 NVM Set Identifier Maximum 值的限制(请参阅图 251)。如果主机读取超过日志页的末尾,则返回零。日志页面在图 210 中定义。

---------------------------------------------------------------------------------------------------------------------------------

5.14.1.12 非对称 Namespace 访问(日志标识符 0Ch)

此日志由描述日志的标头和包含 ANA 组的非对称命名空间访问信息的描述符组成(请参阅第 8.20.2 节),这些组包含连接到处理命令的控制器的命名空间。如果支持ANA报告(请参阅第8.20节),则支持此日志页面。ANA集团描述符将按照ANA集团标识符的升序返回。

如果在命令 Dword 10 中将 RGO 位清除为“0”,则应将“获取日志页”命令的 Command Dword 12 中的 LPOL 字段和 Command Dword 13 中的 LPOU 字段清除为 0h。

如果主机执行多个“获取日志页”命令来读取ANA日志页(例如,使用LPOL字段或LPOU字段),则主机应重新读取日志页的标题,并确保“非对称Namespace访问日志中的更改计数字段与读取的原始值匹配。如果不匹配,则表示捕获的数据不一致,应重新读取 ANA 日志页。

图 211:命令 Dword 10 – 日志特定字段

---------------------------------------------------------------------------------------------------------------------------------

5.14.1.13持续性事件日志(日志标识符0Dh)

“持续性事件日志”页面包含有关不特定于特定命令的重要事件的信息。此日志页中的信息应在电源循环和重置期间保留。NVM 子系统的设计应尽可能减少电源故障时的事件信息损失。此日志由描述日志的标头和零个或多个持久性事件组成(请参阅第 5.14.1.13.1 节)。

此日志页面是 NVM 子系统的全局页面。

清理操作可能会更改此日志页面(例如,删除或修改事件以防止从日志页面信息派生用户数据,请参阅第 8.15 节)。未指定通过清理操作从此日志页中删除的事件。

本节中指定的持久性事件日志事件应按顺序报告,以便较新的事件通常比较旧的事件更早地报告在日志数据中。NVM 子系统确定事件发生顺序的方法特定于供应商。

支持的事件数量是特定于供应商的。持久性事件日志支持的最大大小在 Identify Controller 的 PELS 字段中指示。支持的事件数和支持的最大大小应足够大,以使事件数或持久性事件日志数据的大小在 NVM 子系统的可用生命周期内不会达到支持的最大大小。

控制者应在每次事件发生时记录所有受支持的事件,除非控制者确定同一事件的发生频率超过了供应商特定的事件创建频率阈值。如果同一事件发生的频率超过供应商特定阈值,则供应商可以禁止同一事件的进一步输入。控制器可以指示供应商特定事件数据中是否已禁止显示事件。

在以下情况下,特定于供应商删除哪些事件(例如,可以保留重要事件,并且可能会删除比保留的重要事件更新的事件),以便为将来的事件腾出空间:

  1. a) 持久性事件日志数据的大小达到支持的最大大小;
  2. b) 事件数量达到最大可报告事件数;或
  3. c) 事件类别达到该类别的最大可报告事件数(例如,有关时间戳发生 1,000 次更改的信息存储在内部数据结构中,并提取以作为持续事件日志中的时间戳更改事件进行报告,并且已发生超过 1,000 个时间戳更改事件)。

影响多个控制器的事件(例如,NVM 子系统重置)应由供应商选择的控制器记录一次,而不是由任何其他控制器记录。

Log Specific 字段中的 Action 字段(参见图 214)指定是否:

  1. a) 在开始处理此“获取日志页”命令时创建持久性事件日志报告上下文,并从与该日志报告上下文关联的日志页数据中读取日志页数据(如果有);
  2. b) 日志页数据是从与预先存在的日志报告上下文关联的日志页数据中读取的;或
  3. c) 发布持久性事件日志报告上下文(如果有)。

持久性事件日志报告上下文是控制器创建的供应商特定信息,用于确定持久性事件日志页面数据中包含哪些信息(例如,持久性事件日志报告上下文可以是持久性事件日志页面数据,或者可能包含指向要报告的事件的一组指针)。

控制器应保留持久性事件日志报告上下文:

a) 直到控制器处理:

  1. a) 请求持久性事件日志页面的“获取日志页面”命令,并将“操作”字段设置为 02h(即“发布上下文”);
  2. b) NVM 子系统复位;或
  3. c) 控制器电平复位;或

b) 对于供应商的特定时间,足够长的时间以允许检索持久性事件日志页数据。

在存在持久性事件日志报告上下文时发生的持久性事件日志事件不应在现有报告上下文中报告,而应进行记录。

主机应发出“获取日志页”命令,并将“操作”字段设置为 02h,以在读取持久性事件日志页数据后释放持久性事件日志报告上下文。

---------------------------------------------------------------------------------------------------------------------------------

5.14.1.14LBA 状态信息(日志标识符 0Eh)

此日志页用于提供有关主机可能采取的后续操作的信息,以发现连接到控制器的命名空间中的哪些逻辑块在读取时可能不再可恢复。它包含零个或多个 LBA 状态日志 Namespace 元素(请参阅图 238)。如果控制器不知道连接到控制器的给定命名空间中的任何可能无法恢复的逻辑块,则此日志页不会返回该命名空间的 LBA 状态日志 Namespace 元素。对于未连接到控制器的命名空间,此日志页不应返回任何 LBA 状态日志 Namespace 元素。

每个 LBA 状态日志 Namespace 元素都包含零个或多个 LBA 范围描述符(请参阅图 239)。每个 LBA 范围描述符都描述了一个 LBA 范围,这些 LBA 已被检测为可能无法恢复,主机应在后续的 Get LBA Status 命令中使用 Recommended Action Type 字段(请参阅图 237)中指定的机制进行检查,该 LBA Status Log Namespace Element。

主机可以通过随后发出一个或多个“获取 LBA 状态”命令来识别可能无法再恢复的逻辑块。一旦被识别出来,主机就可以从备用源恢复用户数据,并将该数据写入命名空间中的原始逻辑块地址。如果用户数据已成功写入,则后续读取不应导致不可恢复的读取错误(例如,由于写入更改了用户数据的物理位置)。

收到 LBA 状态信息警报异步事件后,主机应为日志标识符 0Eh 发送一个或多个“获取日志页”命令,并将“保留异步事件”位设置为“1”,直到读取整个日志页。为了清除该事件,主机为日志标识符 0Eh 发送“获取日志页”命令,并将“保留异步事件”位清除为“0”。主机决定何时发送“获取 LBA 状态”命令,以及何时恢复由“获取 LBA 状态”命令标识的 LBA,这与主机清除事件的时间有关。第 8.22.1 节介绍了示例主机实现。清除该事件将导致 LBA 状态信息报告间隔重新启动,并允许更新日志页面的内容。

图 237:LBA 状态信息日志

---------------------------------------------------------------------------------------------------------------------------------

5.14.1.15耐力组事件聚合(日志标识符:0Fh)

此日志页面指示特定耐力组是否发生了耐力组事件(参见第8.17节)。如果发生了耐力组事件,则特定事件的详细信息将包含在该耐力组的耐力组信息日志页面中。当 Endurance Group 的条目新添加到此日志页面时,将生成异步事件。

如果 Endurance Group 有一个已启用的 Endurance Group Event 待处理,则 Endurance Group Event Aggregate 日志页面将包含该 Endurance Group 的条目。日志页面是按 Endurance Group Identifier 排序的列表。例如,如果 Endurance Group 2、1 和 7 的 Endurance Group 事件处于挂起状态,则日志页面应按 1、2 和 7 的数字顺序包含条目。在成功完成“获取日志”页面后,将从此日志页面中删除特定的 Endurance Group 条目,并将该 Endurance Group 的 Endurance Group Information 日志页面的 Retain Asynchronous Event 位清除为“0”。

日志页面大小受 Identify Controller 数据结构中报告的 Endurance Group Identifier Maximum 值的限制(请参阅图 251)。如果主机读取超过日志页的末尾,则返回零。日志页面在图 240 中定义。

图 240:获取日志页 – Endurance Group 事件聚合日志页

---------------------------------------------------------------------------------------------------------------------------------

5.14.1.16 NVM 命令集特定日志页标识符

本节介绍 NVM 命令集特定日志页。

5.14.1.16.1预订通知(日志标识符80h)

“预订通知”日志页面报告一个日志页面,该日志页面来自按时间排序的预订通知日志页面队列中的一个日志页面(如果有)。每当在附加到控制器的任何命名空间上发生未屏蔽的预留通知时,都会创建新的预留通知日志页,并将其添加到预留通知队列的末尾。“获取日志页”命令:

  • • 返回一个数据缓冲区,其中包含一个日志页,该日志页对应于预留通知队列中最早的日志页(即,包含最低日志页计数字段的日志页;考虑包装);以及
  • • 从队列中删除该预留通知日志页面。

如果在发出“获取日志”命令时没有可用的“预留通知”日志页条目,则应返回一个空日志页(即,日志页中的所有字段都已清除到 0h)。如果由于队列的大小,控制器无法在预留通知日志中存储预留通知,则该预留通知将丢失。如果预订通知丢失,则控制者应递增队列中最后一个预留通知的“日志页数”字段(即,队列中最后一个预留通知中的“日志页数”字段应包含与丢失的最新预留通知关联的值)。

日志页的格式在图 241 中定义。

---------------------------------------------------------------------------------------------------------------------------------

5.14.2 命令完成

完成 Get Log Page 命令后,控制器将完成队列条目发布到Admin CQ。图 243 中定义了特定于 Get Log Page 命令的状态值。

图 243:获取日志页面 - 命令特定状态值

9h:无效的日志页面:指示的日志页面无效或不支持。如果请求保留日志页,也会返回此错误条件。在这种情况下,符合规范版本 1.3 及更早版本的控制器可能会返回 Invalid Field in Command。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值