Device Self-test

article/2025/11/7 12:31:03

DST

  • Device Self-test命令
  • Command Completion
  • Device Self-test Operations (Optional)
    • Short Device Self-Test Operation
    • Extended Device Self-Test Operation

Device Self-test命令

  Device Self-test命令用于开始一个device self-test操作,或者中止一个device self-test操作(NVMe1.4 8.11).Device Self-test命令一般用于:

  1. 开始一个short device self-test操作
  2. 开始一个extended device self-test 操作
  3. 开始一个供应商特定的device self-test操作
  4. 中止一个正在进行的device self-test操作

  Device self-test命令提交到控制器,由控制器执行。Namespace Identifier字段控制在device self-test中包含哪些namespaces在表1中指出。
表 1: Device Self-test Test Action

描述
00000000hDevice self-test不包括任何namespace,只有控制器是该device self-test的一部分
00000001h ~ FFFFFFFEhDevice self-test包括这个字段代表的namespace.如果这个字段指示的是一个无效的namespace ID,那么控制器会中止掉device self-test命令,返回Invalid Field状态
FFFFFFFFhDevice self-test操作包括开始device self-test过程期间控制器所有可以访问的已激活的namespaces

  Device Self-test命令在Command Dword 10字段中,所有其他命令指定的字段都要保留。
表 2:Device Self-test – Command Dword 10

比特位描述
31:04保留
03:00 Self-test Code(STC):这个字段表示Device Self-test命令的行为
描述
0h保留
1h开始一个short device self-test
2h开始一个extended device self-test
3h~Dh保留
Eh供应商指定
Fh中止device self-test
  表3中定义了Device Self-test命令的处理过程与device self-test操作的交互。

表 3: Device Self-test – Command Processing

Self-test in ProgressSelf-test Code in new Drive Self-test command 控制器行为
1h中止新的device Self-test命令,返回状态Device Self-test in Progress
2h
Eh供应商指定
Fh控制器按下列顺序执行:
  1. 中止正在进行的device self-test操作
  2. 在Device Self-test log的最新Self-test Result数据结构中创建log entry
  3. 将Device Self-test Log字段中的Current Device Self-test Status置为0h
  4. 成功完成该命令
1h控制器按下列顺序执行:
  1. 验证命令参数
  2. 将Device Self-test Log字段中的Current Device Self-test Status置为1h
  3. 开始device self-test操作
  4. 成功完成该命令
2h控制器按下列顺序执行:
  1. 验证命令参数
  2. 将Device Self-test Log字段中的Current Device Self-test Status置为2h
  3. 开始device self-test操作
  4. 成功完成该命令
Eh供应商指定
Fh成功完成命令,不修改Device Self-test Log
注意: 如果在Identify Controller数据结构的Device Self-test Options(DSTO)中将位0清除为“ 0”(NVMe1.4 Figure247),则“Self-test in Progress”列表示控制器收到新的Drive Self-test命令,正在进行Device self-test操作。 如果在Identify Controller数据结构的“Device Self-test Options”(DSTO)中将位0设置为“ 1”,则“Self-test in Progress”列表示NVM子系统上正在device self-test操作。

Command Completion

  在按照表3所示执行适当的操作之后,complete queue entry将放到Admin Completion Queue中。表4中定义了Device Self-test命令的特定的状态值。
表 4:Device Self-test – Command Specific Status Values

描述
1DhDevice Self-test in Progress:控制器或NVM子系统中已经有一个正在进行的device self-test操作

Device Self-test Operations (Optional)

  Device Self-test操作是一个诊断测序列,用于测试控制器的功能和完整性,并且可以测试与命名空间相关的介质。该操作分多个segment,每个segment是一组供应商特定的测试。Self-test Result数据结构中的segment number(NVMe1.4 5.14.1.6)用于报告指示测试失败的位置(如果有)。对于short device self-test和extended device self-test操作,在每个segment中执行的测试可以相同。
设备自检操作在后台执行,允许并发处理某些命令,并且可能需要暂停当前设备自检操作来处理其他命令。哪些命令可以同时处理,哪些需要中止设备自检操作,这取决于供应商的要求。
  如果控制器收到任何需要暂停设备自检操作以进行处理和完成的命令,则控制器应:

  1. 暂停当前设备自检操作
  2. 处理并完成收到的命令
  3. 继续设备自检操作

  在设备自检操作期间,NVM子系统的性能可能会下降(如:控制器不执行设备自检操作也可能会出现性能下降)
下面定义了两种类型的设备自检操作,后面会具体解释:
a) Short device self-test operation
b) Extended device self-test operation
  表5是一个具有相关segments的设备自检操作以及再每个segment中执行的测试示例:
表 5:Example Device Self-test Operation (Informative)
Example Device Self-test Operation (Informative)

Short Device Self-Test Operation

  一个short device self-test 操作应该在2S内(含2S)。short device self-test完成的百分比在Device Self-test Log里指出(NVMe1.4 5.14.1.6)。
  一个正在进行的short Device Self-Test operation:

  1. 当device self-test正在执行时,任何会影响到controller的Controller Level Reset,short dst需要被中止
  2. 对于像表6中描述的Format NVM命令会中止short device self-test
  3. 一个Self-Test Code值为Fh的Device Self-test正在进行时,应该中止掉
  4. 当开始一个sanitize操作时,应该中止掉
  5. 如果从命名空间的清单中移除了某个命名空间,可能会被中止掉
    表6:Format NVM command Aborting a Device Self-Test Operation
    在这里插入图片描述

Extended Device Self-Test Operation

  Extended Device Self-Test操作应在Identify Controller数据结构中“Extended Device Self-test Time”字段中指定的时间内完成。extended device self-test的完成百分比在Device Self-test Log的“Current Percentage Complete”字段中指示(请参阅第5.14.1.6节)。
  extended device self-test操作应在所有Controller Level Reset中持续存在,并且应在reset完成或任何上电操作后(如有)恢复。恢复extended device self-test操作的segment是供应商指定的,但实现只应在reset之前的在最近测试的segment内再次执行测试。
  Extended Device Self-Test操作:
a)如表6中所述的Format NVM命令,中止extended dst;
b)在开始sanitize操作时应中止(请参阅第5.24节);
c)如果处理了将“Self-Test Code”字段设置为Fh的Device Self-test命令,则中止;
d)如果从命名空间清单中删除了指定的名称空间,则可能会中止。


http://chatgpt.dhexx.cn/article/ffxER8AV.shtml

相关文章

Test ignored.

项目场景: springboot 问题描述: 创建单元测试执行后控制台输出: Test ignored. 解决方案: 测试文件路径与项目文件路径不一致造成的。

Shell test命令

概述 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 或者使用 [ ] 来判断 数值测试 #!/bin/bash num1100 num2100 if test $[num1] -eq $[num2] thenecho 两个数相等! elseecho 两个数不相等! …

Google Test简述

Google Test简述 Google Test 是由 Google 推出的 C 测试框架,具有稳定、跨平台、快速等特点,能够为 C 开发人员提供有效的单元测试和集成测试工具。Google Test 支持 Linux、macOS 和 Windows 操作系统,同时支持 gcc、clang 和 MSVC 等多种…

8051单片机基础4:数据存储类型(data,idata,xdata,code)

文章目录 存储类型使用方法详细说明8051存储器结构dataidatabdatapdataxdatacode 关于作者 参考来源:Keil > Help > uVision Help > Cx51 Compiler User’s Guide > Language Extensions > Memory Types 存储类型 Cx51编译器可以访问8051的所有存储…

安装xdata步骤

1.修改配置文件/etc/security/limits.conf 修改配置文件/etc/security/limits.conf 在该配置文件中添加: vim /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535修改之后重新SSH连接即可,不需要重启主机或服务 2. 禁用禁用SELINUX …

ObjectARX开发笔记(二)——使用Xdata向AutoCAD图形追加自定义数据

1.自定义数据 ObjectARX开发过程中,有时会使用自定义数据,主要包括: 自定义对象——可以让用户按照自己希望的方式封装数据,并向AutoCAD中添加第三方实体类型,这些实体类型用于与AutoCAD自身实体一样的特性&#xff…

matlab xdata ydata,matlab中set(head1,'xdata',x1,'ydata',y1)什么意思?

满意答案 amuese6418 2014.10.25 采纳率:59% 等级:12 已帮助:8722人 这个主要是set的用法 它是功能 设置对象的属性。 用法 set(H,PropertyName,PropertyValue,…) 用属性值PropertyValue设置关于用参量H 标志的对象(一个或多个)的属性名P…

用Proteus仿真C51时用到xdata时的问题

在用做一个程序,但是51的内存资源太过稀有,使用到较大的数组的时候资源很快就耗尽了,可能会遇到以下错误: src\main.c(195): error C249: DATA: SEGMENT TOO LARGE这时需要用到大模式下编译。 然而在proteus下默认xdata是必须加…

xdata,volatile,extern,static,#pragma 关键字

1. xdata xdata:声明的变量位于外部 RAM 地址范围内某一位置。 2. volatile volatile: 的本意是“易变的” ,因为访问寄存器要比访问内存单元快的多,所以编译器一般都会作减少存取内存的优化。当要求使用 volatile 声明变量值的时候&#…

51 单片机 data idata xdata 使用

51 单片机 data idata xdata 使用 简介 该篇文章只提使用,先不详细讲解,使用的原因就是自己写的代码 ROM 超了!!!新建工程默认使用 data Keil 配置如下图 测试芯片FlashRAMSTC15W408AS8Kbyte512byte data idata xd…

TMS XData 4.6.0.1 Full Source XE2-DX10.3

TMS XData 4.6.0.1 Full Source XE2-DX10.3 用于多层REST / JSON HTTP / HTTPS应用服务器开发和ORM远程处理的Delphi框架。 TMS XData功能概述 基于REST / JSON架构样式的服务器 由于它是基于REST / JSON的,因此可以轻松地从不同的客户端平台(如.NET,Jav…

10.扩展数据(XData)

愿你出走半生,归来仍是少年! 环境:.NET FrameWork4.5、ObjectArx 2016 64bit、Entity Framework 6. CAD中所有数据库对象都包含一个可以供开发人员进行自定义的对象:XDATA,本文主要针对此对象进行探索。 XDATA的使用中需要使用到部分DXFCOD…

【51】单片机中的data、idata、xdata、code等关键字的作用

说明 data:RAM低128字节,响应速度最快,采用直接寻址方式 idata:RAM高128字节,采用间接寻址方式,速度相对较慢 bdata:片内RAM,位寻址方式 xdata:外部扩展RAM&#xff…

Kmeans算法

Kmeans算法 是最简单的聚类算法之一,算法接受参数 k ;然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得…

图像分割与实战(一)——基于主动轮廓(snake)的图像分割

1.主动轮廓图像分割算法的概述 1.1主要思想 将图像分割问题转化为轮廓进化问题 1.2工作原理 将一条曲线在内外力的共同作用下,使得曲线逐步收敛到目标轮廓 1.3 算法流程 初始化曲线利用内外力更新曲线判断曲线是否收敛,否则返回第2步 1.4 需要解决…

实时实例分割算法Deep Snake,速度32.3fps|CVPR 2020

论文提出基于轮廓的实例分割方法Deep snake,轮廓调整是个很不错的方向,引入循环卷积,不仅提升了性能还减少了计算量,保持了实时性,但是Deep snake的大体结构不够优雅,应该还有一些工作可以补,推…

数字图像处理笔记——Snakes算法、活动轮廓以及水平集(Snakes, active contours, and level sets)

Snakes算法 上一讲我们讲的图像分割算法主要是基于像素的,这一讲主要是基于曲线的。我们希望能得到一个能够包围住图像轮廓的平滑的曲线,snakes算法就是一个很有用的算法。首先我们将曲线的坐标x、y同一用参数s表示,s范围从0-1代表从起点绕曲…

Deep Snake for Real-Time Instance Segmentation:基于Deep Snake的实例实时分割

本文针对自己所看的 Deep Snake 做一个总结和存档,也方便其他同学学习 —— 阿波,2020.4.23 论文原文:Deep Snake for Real-Time Instance Segmentation 代码地址: snake 本篇文章工作有以下贡献: •提出了一种基于…

KMeans算法流程

一、什么是簇? 我们知道聚类就是让机器把数据集中的样本按照特征的性质分组,直观上来看,簇是一组一组聚集在一起的数据,在 一个簇 中的数据就认为是 同一类 ,簇就是聚类的结果表现。实际上簇并没有明确的定义&#xf…