NVME Command Set

NVM子系统由若干控制器组成,其中每个控制器可以访问若干名称空间,其中每个名称空间由若干逻辑块组成。逻辑块是可从控制器读取或写入的最小数据单元。以字节为单位报告的逻辑块数据大小始终是2的幂。逻辑块大小可以是512字节、1 KiB、2 KiB、4 KiB、8 KiB等。支持的逻辑块大小在标识命名空间数据结构中报告。
NVM命令集包括图346中列出的命令。有关各种控制器类型的强制、可选和禁止命令,请参阅第7.1节。下面的小节描述了每个命令的定义。只有当控制器状态寄存器(CSTS.RDY)中指示的控制器准备就绪时,并且在创建了适当的I/O提交队列和I/O完成队列之后,主机才能提交命令。
提交队列条目(SQE)结构和所有NVM命令通用的字段在第4.2节中定义。第4.6节定义了完成队列条目(CQE)结构和所有NVM命令通用的字段。NVM命令集的SQE和CQE结构(即SQE命令Dword 10-15和CQE Dword 0)中的命令特定字段在本节中定义。
在Compare、Read、Verify、Write和Write Zeroes命令的情况下,主机可以通过在命令中设置Limited Retry(LR)位来指示是否应该对操作的错误恢复应用时间限制。时间限制在第5.21.1.5节规定的错误恢复功能中规定。如果主机未指定时间限制,则控制器应应用所有错误恢复方法来完成操作。

6.1 Namespaces

6.1.1 Namespace Overview

命名空间是逻辑块地址范围从0到命名空间大小(1)的逻辑块的集合。命名空间ID(NSID)是控制器用于提供对命名空间的访问的标识符。

6.1.2 Valid and Invalid NSIDs

有效NSID是可能用于引用NVM子系统中存在的名称空间的NSID的范围。任何NSID都是有效的,除非NSID是0h或大于Identify Controller数据结构中报告的Namespaces字段的数量(参见图247)。NSID FFFFFFFFh是用于指定所有名称空间的广播值。无效NSID是指任何不是有效NSID且也不是广播值的值。
有效的NSID是:
a) 在NVM子系统中分配或未分配;和
b) 特定控制器的激活或非激活状态。

6.1.3 Allocated and Unallocated NSID Types

在NVM子系统中,有效的NSID为:
a) 分配的NSID;或
b) 未分配的NSID。
已分配NSID指NVM子系统中存在的名称空间。未分配NSID不引用NVM子系统中存在的任何名称空间。

6.1.4 Active and Inactive NSID Types

对于特定控制器,分配的NSID是:
a) 一个活跃的NSID;或
b) 非活动NSID。
控制器的活动nsid是指附加到该控制器的名称空间。为控制器分配的非活动NSID指的是未连接到该控制器的命名空间。
未分配的NSID是NVM子系统中所有控制器的非活动NSID。
如果NSID引用的名称空间附加到NVM子系统中的某些控制器(而不是所有控制器),则分配的NSID可以是同一NVM子系统中的某些控制器的活动NSID和其他控制器的非活动NSID。
请参阅第8.12节,了解与正在分离或删除的命名空间相关的操作。

6.1.5 NSID and Namespace Relationships

除非另有说明,在使用名称空间标识符(NSID)字段的命令中指定非活动NSID将导致控制器在命令中使用status Invalid字段中止命令。在使用NSID字段的命令中指定无效的NSID将导致控制器中止状态为invalid Namespace或Format的命令。
下表总结了有效的NSID类型,图347直观地显示了NSID类型及其关系。

6.1.6 NSID and Namespace Usage

如果支持名称空间管理(请参阅第8.12节)、ANA报告(请参阅第8.20节)或NVM集(请参阅第4.9节),则NSID在NVM子系统中应是唯一的(例如,NSID为3时应引用相同的物理名称空间,而不考虑访问控制器)。如果不支持命名空间管理、ANA报告和NVM集,则NSID:
a) 共享名称空间应是唯一的;和
b) 对于私有名称空间,不需要唯一。
Identify命令(参考第5.15节)可用于确定控制器的活动nsid和NVM子系统中分配的nsid。
如果MNAN字段(参见图247)被清除为0h,则分配的nsid的最大数量与NN字段中报告的值相同(参见图247)。如果MNAN字段为非零,则分配的NSID的最大数目可以小于名称空间的数目(例如,NVM子系统可以支持设置为1000000的最大有效NSID值(即NN字段),但是支持最多10个分配的NSID值)。

要确定特定控制器的活动nsid,主机可以遵循以下方法之一:
1.发出一个Identify命令,将每个有效NSID的CNS字段清除为0h(基于Identify Controller数据结构中的Namespaces值(即MNAM字段或NN字段)的个数)。如果为特定NSID返回非零数据结构,则该NSID是活动NSID;或
2.发出Identify命令,CNS字段设置为2h,以检索最多1024个活动nsid的列表。如果有1024个以上的活动nsid,则继续发出Identify命令,CNS字段设置为2h,直到检索到所有活动nsid。

为了确定NVM子系统中分配的nsid,主机可以发出一个Identify命令,CNS字段设置为10h,以检索最多1024个分配的nsid的列表。如果分配的nsid超过1024个,则继续发出Identify命令,CNS字段设置为10h,直到检索到所有分配的nsid。

命名空间ID可能会在断电情况下发生变化。但是,建议命名空间标识符在断电情况下保持静态,以避免EFI或OSE出现问题。要确定是否遇到相同的命名空间,主机可以使用:
a)名称空间标识描述符中的UUID字段(参见图249),如果存在;
b)标识名称空间数据(参见图245)或名称空间标识描述符(如果存在)中的NGUID字段;或
c)标识命名空间数据或命名空间标识描述符(如果存在)中的EUI64字段。
NSFEAT字段中的bit 3(参见图245)表示NGUID和EUI64重用特性。

Identify Namespace数据结构中的Namespace Size(NSZE)字段以逻辑块(LBA 0到n-1)的形式定义命名空间的总大小。Identify Namespace数据结构中的Namespace Utilization(NUSE)字段定义了当前在命名空间中分配的逻辑块的数量。Identify数据结构中的Namespace Capacity(NCAP)字段定义了在精简配置使用模型中一次可以作为命名空间的一部分分配的最大逻辑块数。以下关系成立:命名空间大小>=命名空间容量>=命名空间利用率。

如果控制器支持非对称命名空间访问报告(即,在Identify controller数据结构的CMIC字段中将位3设置为“1”(参见图247)),如果控制器和命名空间之间的关系处于ANA不可访问状态(参见第8.20.3.3节)或ANA持续丢失状态(参见第8.20.3.4节),则NUSE字段(参见图245)和NVMCAP字段(参见图245)被清除为0h。命名空间属性Changed事件不会为这些字段的更改生成,这些更改是由图147中所述的ANA状态更改引起的。主机使用非对称命名空间访问更改通知作为这些更改的指示。

命名空间可能与提交队列有关系,也可能没有关系;这种关系由主机软件实现决定。控制器应支持从任何I/O提交队列访问任何活动命名空间。

NVME-Express-1.4-2019.06.10 :第六章NVM Command Set 6.1 Namespaces相关推荐

  1. Python每日一编程小练习(2019.06.10)——赛场统分

    题目: 在编程竞赛中,有10个评委为参赛的选手打分,分数为0 ~ 100分.选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值. 请编写一个程序实现. 分析: 本题思路为:先对元素进行排 ...

  2. 【每日早报】2019/06/10

    今日看点 ✦ 搜狐加入社交大战推出狐友,张朝阳:这是搜狐的未来 ✦ 中国联通:设立百亿孵化基金,助力5G应用和数字化转型 ✦ 联邦快递宣布对亚马逊终止航空快递服务:"战略决定" ✦ ...

  3. 10第六章:【01】常用指令-帮助指令

    Shell 可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面.我们可以 通过终端控制台来输入命令,由 shell 进行解释并最终交给内核执行. 当我们对某个指令不熟悉时,我们可以使用 Li ...

  4. mysql第五章项目二_Todo List:Node+Express 搭建服务端毗邻Mysql – 第五章(第1节)

    点击右上方红色按钮关注"web秀",让你真正秀起来 前言 万丈高楼平地起,我们的Todo List项目也是越来越结实了.Todo List的前面4章内容都是在为Client端开发, ...

  5. MIR DATABANK工业机器人每周要闻—2019年10月14日

    下述新闻摘要由MIR DATABANK数据平台收集.整理.撰写.其中原创新闻属于MIR DATABANK数据平台所有.(MIR DATABANK数据平台属德佳咨询旗下品牌) 注册成为MIR DATAB ...

  6. 前端面试每日3+1(周汇总2019.06.02)

    周汇总 2019.06.02 <论语>,曾子曰:"吾日三省吾身"(我每天多次反省自己). 前端面试每日3+1题,以面试题来驱动学习,每天进步一点! 让努力成为一种习惯, ...

  7. 解读 | 2019年10篇计算机视觉精选论文(中)

    导读:2019 年转眼已经接近尾声,我们看到,这一年计算机视觉(CV)领域又诞生了大量出色的论文,提出了许多新颖的架构和方法,进一步提高了视觉系统的感知和生成能力.因此,我们精选了 2019 年十大 ...

  8. 自考护理学计算机考试时间,护理学专业2019年10月江苏自考科目及考试时间安排...

    江苏2019年10月护理学自考专业在的考试科目有护理管理学.内科护理学(二).外科护理学(二).马克思主义基本原理概论等课程. 江苏护理学专业自考专业,专业代码为A2100702.以下为江苏护理学自考 ...

  9. java web开发学习手册_【Java手册】Java开发手册_华山版(2019.06)

    版本号:1.5.0 更新日期:2019.06.19 制定团队:阿里巴巴与Java社区开发者 更新亮点:华山版,新增21条设计规约,修改描述112处,完善若干处示例 2017年春天,<阿里巴巴Ja ...

最新文章

  1. 四肢切割_四肢瘫痪者用大脑信号和先进的假肢完成吃饭动作
  2. LSTM之父,现已加入鬼畜全明星,“他为啥没得图灵奖,太不公平了!”
  3. 【Hadoop】MAC下hadoop2.6安装以及执行wordcount
  4. 【链表】BZOJ1588: [HNOI2002]营业额统计
  5. vue ajax跨域提交,vue-cli开发时ajax跨域的方法
  6. 手动实现Spring中的IOC容器
  7. 带你认识传统语音识别技术
  8. 作为互联网面临的最大危险之一,当前的 DDoS 趋势如何?
  9. TCP/IP协议-三次握手四次挥手
  10. 英特尔第四代酷睿处理器数字和字母代表什么意思
  11. 四种实时操作系统的分析比较
  12. 创建linux u盘启动,创建Linux之USB启动盘
  13. 连接mysql失败怎么办_数据库连接失败有什么原因?怎么解决?
  14. 【C语言】【MPI】MPI编程入门详解
  15. 10分钟帮你全面了解ASO
  16. 【解决办法】解决OneDrive登陆界面空白的方法
  17. mysql http_put_洪永佳 - SegmentFault 思否
  18. 我为什么要表扬深信服(转)
  19. sql server 使用drop column 列名 删除列时报错,由于一个或多个对象访问此 列,ALTER TABLE DROP COLUMN stu_cou_num 失败
  20. 2020知道python答案_2020知道智慧树Python程序设计答案

热门文章

  1. iOS 中集合如何弱引用对象
  2. 极域电子书包课堂管理系统_依托数字化环境 提高教学实效 ——马桥实小开展“电子书包”项目共同体研讨活动...
  3. 3D MAX制作游戏高端人物模型
  4. 鸿蒙系统全球发布,原创丨新一代鸿蒙正式发布,中国人自己的操作系统来了
  5. Final Cut Pro下载附免费资源
  6. 干货!数据分析报告之风资源分析(2)
  7. 什么骨传导耳机比较好,好用的骨传导蓝牙耳机推荐
  8. 问题排除——SVPWM模块为什么会出现扇区判断错误?
  9. python之路-进程
  10. 三菱PLC通过RS485串口连接维特智能Modbus协议角度姿态传感器(1)——环境搭建