logo资料库

NVM_Express_Revision_1.3中文翻译.docx

第1页 / 共218页
第2页 / 共218页
第3页 / 共218页
第4页 / 共218页
第5页 / 共218页
第6页 / 共218页
第7页 / 共218页
第8页 / 共218页
资料共218页,剩余部分请下载后查看
1 Introduction(介绍)
1.1 Overview(概述)
1.1.1NVMe over PCIe and NVMe over Fabrics
1.2Scope(范围)
1.3Outside of Scope(超出范围)
1.4Theory of Operation(操作理论)
1.4.1多路径I/O和命名空间共享
1.5惯例
1.6定义
1.6.1 Admin Queue
1.6.2仲裁突发
1.6.3仲裁机制
1.6.4缓存
1.6.5候选命令
1.6.6命令完成
1.6.7命令提交
1.6.8控制器
1.6.9指令
1.6.10仿真控制器
1.6.11扩展LBA
1.6.12固件插槽
1.6.13 I/O命令
1.6.14 I/O完成队列
1.6.15 I/O提交队列
1.6.16 LBA范围
1.6.17逻辑块
1.6.18逻辑块地址(LBA)
1.6.19元数据
1.6.20命名空间
1.6.21命名空间ID(NSID)
1.6.22 NVM
1.6.23 NVM子系统
1.6.24主控制器
1.6.25私有命名空间
1.6.26特权行动
1.6.27运行时D3(断电)
1.6.28净化操作
1.6.29二级控制器
1.6.30共享命名空间
1.6.31用户数据
1.7关键词
1.7.1强制性
1.7.2 可以
1.7.3可选
1.7.4 R
1.7.5保留
1.7.6 shall
1.7.7 should
1.8字节、字和双字关系
1.9参考文献
1.10正在开发的参考文献
2. 系统总线(PCI Express)寄存器
2.1 PCI Header
2.1.1偏移量00h:ID-标识符
2.1.2偏移04h:CMD-命令
2.1.3偏移06h:STS-设备状态
2.1.4偏移量08h:RID-修订ID
2.1.5偏移量09h:CC-类别码
2.1.6偏移量0Ch:CLS–缓存线大小
2.1.7偏移量0Dh:MLT主延迟计时器
2.1.8偏移量0Eh:HTYPE–头类型
2.1.9偏移量0Fh:BIST内置自检(可选)
2.1.10偏移量10h:MLBAR(BAR0)–内存寄存器基址,低32位
2.1.11偏移量14h:MUBAR(BAR1)–存储器寄存器基址,高32位
2.1.12偏移18h:BAR2–索引/数据对寄存器基址或特定于供应商(可选)
2.1.13偏移量1Ch-20h:BAR3特定供应商
2.1.14偏移量20h-23h:BAR4特定供应商
2.1.15 24-27小时偏移量:BAR5:特定供应商
2.1.16偏移28h:CCPTR CardBus CIS指针
2.1.18偏移30h:EROM–扩展ROM(可选)
2.1.19偏移34h:CAP-能力指针
2.1.20偏移量3Ch:INTR-中断信息
2.1.21偏移量3Eh:MGNT–最小授权
2.1.22偏移量3Fh:MLAT–最大延迟
2.2 PCI电源管理能力
2.2.1偏移PMCAP:PID-PCI电源管理能力ID
2.2.2偏移PMCAP+2h:PC-PCI电源管理能力
2.2.3偏移PMCAP+4h:PMCS–PCI电源管理控制和状态
2.3 消息信号中断能力(可选)
2.3.1偏移量MSICAP:MID-消息信号中断标识符
2.3.2偏移量MSICAP+2h:MC—消息信号中断消息控制
2.3.3偏移量MSICAP+4h:MA——消息信号中断消息地址
2.3.4偏移量MSICAP+8h:MUA——消息信号中断上限地址
2.3.5偏移量MSICAP+Ch:MD–消息信号中断消息数据
2.3.6偏移量MSICAP+10h:MMASK–消息信号中断屏蔽位(可选)
2.3.7偏移量MSICAP+14h:MPEND–消息信号中断挂起位(可选)
2.4 MSI-X功能(可选)
2.4.1偏移量MSIXCAP:MXID–MSI-X标识符
2.4.2偏移量MSIXCAP+2h:MXC–MSI-X消息控制
2.4.3偏移量MSIXCAP+4h:MTAB–MSI-X表格偏移量/表格BIR
2.4.4偏移MSIXCAP+8h:MPBA–MSI-X PBA偏移/PBA BIR
2.5 PCI Express功能
2.5.1偏移量PXCAP:PXID–PCI Express功能ID
2.5.2偏移量PXCAP+2h:PXCAP–PCI Express功能
2.5.3偏移PXCAP+4h:PXDCAP–PCI Express设备功能
2.5.4偏移PXCAP+8h:PXDC–PCI Express设备控制
2.5.5偏移量PXCAP+Ah:PXDS–PCI Express设备状态
2.5.6偏移PXCAP+Ch:PXLCAP–PCI Express链路能力
2.5.7偏移量PXCAP+10h:PXLC–PCI Express链路控制
2.5.8偏移量PXCAP+12h:PXLS–PCI Express链路状态
2.5.9偏移PXCAP+24小时:PXDCAP2–PCI Express设备功能2
2.5.10偏移量PXCAP+28h:PXDC2–PCI Express设备控制2
2.6高级错误报告功能(可选)
2.6.1偏移AERCAP:AERID–AER能力ID
2.6.2偏移量AERCAP+4:AERUCES–AER不可纠正错误状态寄存器
2.6.3偏移AERCAP+8:AERUCEM–AER不可纠正错误屏蔽寄存器
2.6.4偏移量AERCAP+Ch:AERUCESEV–AER不可纠正错误严重性寄存器
2.6.5偏移AERCAP+10h:AERCS–AER可纠正错误状态寄存器
2.6.6偏移AERCAP+14h:AERCEM–AER可纠正错误屏蔽寄存器
2.6.7偏置AERCAP+18h:AERCC-AER能力和控制寄存器
2.6.8偏移量AERCAP+1Ch:AERHL–AER报头日志寄存器
2.6.9偏移量AERCAP+38h:AERTLP–AER TLP前缀日志寄存器(可选)
2.7其他能力指标
3. 控制器寄存器
3.1寄存器定义
3.1.1偏移00h:CAP–控制器能力
3.1.2偏移量08h:VS–版本
3.1.2.1 1.0兼容控制器的VS值
3.1.3偏移量0Ch:INTMS–中断掩码设置
3.1.4偏移量10h:INTMC–中断屏蔽清除
3.1.5偏移14h:CC–控制器配置
3.1.6偏移量1Ch:CSTS–控制器状态
3.1.7偏移量20h:NSSR–NVM子系统复位
3.1.8 24小时偏移量:AQA–管理队列属性
3.1.9偏移量28h:ASQ–管理员提交队列基地址
3.1.10偏移量30h:ACQ–管理完成队列基地址
3.1.11偏移量38h:CMBLOC–控制器内存缓冲区位置
3.1.12偏移量3Ch:CMBSZ–控制器内存缓冲区大小
3.1.13偏移40h:BPINFO–引导分区信息
3.1.14偏移44h:BPRSEL–引导分区读取选择
3.1.15偏移48h:BPMBL–引导分区内存缓冲区位置(可选)
3.1.16偏移量(1000h+((2y)*(4<
3.1.17偏移量(1000h+((2y+1)*(4<
3.2.1限制
3.2.2寄存器定义
3.2.3偏移量00h:IDX–索引寄存器
3.2.4偏移04h:DAT–数据寄存器
4 数据结构
4.1提交队列和完成队列定义
4.1.1空队列
4.1.2全队列
4.1.3队列大小
4.1.4队列标识符
4.1.5队列优先级
4.2提交队列条目-命令格式
4.3物理区域页面输入和列表
4.4散点集列表(SGL)
4.4.1 SGL示例
4.5元数据区域(MR)
4.6完成队列输入
4.6.1状态字段定义
4.6.1.1状态码类型(SCT)
4.6.1.2状态代码(SC)
4.6.1.2.1通用命令状态定义
4.6.1.2.2命令特定错误定义
4.6.1.2.3媒体和数据完整性错误定义
4.7控制器存储器缓冲器
4.8命名空间列表
4.9控制器链表
4.10融合操作
4.11命令仲裁
4.11.1循环仲裁
4.11.2具有紧急优先级仲裁的加权循环
4.11.3供应商特定仲裁
5管理命令集
5.1中止命令
5.1.1命令完成
5.2异步事件请求命令
5.2.1命令完成
5.3创建I/O完成队列命令
5.3.1命令完成
5.4创建I/O提交队列命令
5.4.1命令完成
5.5删除I/O完成队列命令
5.5.1命令完成
5.6删除I/O提交队列命令
5.6.1命令完成
5.7门铃缓冲器配置命令
5.7.1命令完成
5.8设备自检命令
5.8.1命令完成
5.9指令接收命令
5.9.1命令完成
5.10指令发送命令
5.10.1命令完成
5.11固件提交命令
5.11.1命令完成
5.12固件映像下载命令
5.12.1命令完成
5.13获取特征命令
5.13.1选择字段
5.13.2命令完成
5.14获取日志页命令
5.14.1日志特定信息
5.15.1命令完成
5.16保持活力命令
5.16.1命令完成
5.17 NVMe MI接收命令
5.17.1命令完成
5.18 NVMe MI Send命令
5.18.1命令完成
5.19.1命令完成
5.20名称空间管理命令
5.20.1命令完成
5.21.1特性特定信息
5.21.1.1仲裁(特征标识符01h)
5.21.1.2电源管理(功能标识02h)
5.21.1.3 LBA范围类型(特征标识符03h),(可选)
5.21.1.4温度阈值(特性标识符04h)
5.21.1.5错误恢复(功能标识符05h)
5.21.1.6易失性写缓存(功能标识符06h),(可选)
5.21.1.7队列数量(特征标识符07h)
5.21.1.8中断合并(特征标识符08h)
5.21.1.9中断向量配置(特征标识符09h)
5.21.1.10写入原子性正常(特征标识符0Ah)
5.21.1.11异步事件配置(功能标识符0Bh)
5.21.1.12自主电源状态转换(功能标识符0Ch),(可选)
5.21.1.13主机内存缓冲区(功能标识符0Dh),(可选)
5.21.1.15保持活动计时器(特征标识符0Fh)
5.21.1.16主机控制热管理(功能标识10h),(可选)
5.21.1.17非运行电源状态配置(功能标识符11h),(可选)
5.21.1.18软件进度标记(功能标识符80h),(可选)–特定于NVM命令集
5.21.1.19主机标识符(特征标识符81h),(可选1)
5.21.1.19.1 NVME over PCIE
5.21.1.19.2织物上的NVMe
5.21.1.20预订通知掩码(功能标识符82h),(可选2)
5.21.1.21保留持久性(特征标识符83h),(可选3)
5.21.2命令完成
5.22虚拟化管理指挥部
5.22.1命令完成
5.23格式NVM命令–NVM命令集特定
5.23.1命令完成
5.24 Sanitize命令–特定于NVM命令集
5.24.1命令完成
5.25安全接收命令–特定于NVM命令集
5.25.1命令完成
如果命令完成,则控制器应向管理完成队列发送一个完成队列条目,指示命令的状态。
5.25.3安全协议EAh
5.26安全发送命令–特定于NVM命令集
5.26.1命令完成
6 NVM命令集
6.1名称空间
6.2融合操作
6.2.1比较和写入
6.3指挥命令要求
6.4原子操作
6.4.1AWUN/NAWUN
6.4.1.1 AWUN/NAWUN示例(资料性
6.4.2 AWUPF/NAWUPF标准
6.4.2.1 AWUPF/NAWUPF示例(资料性)
6.4.3原子边界
6.5端到端保护信息
6.6比较命令
6.6.1命令完成
6.7数据集管理命令
6.7.1上下文属性
6.7.1.1解除分配
6.7.2命令完成
6.8刷新命令
6.8.1命令完成
6.9读取命令
6.9.1命令完成
6.10预定获取命令
6.10.1命令完成
6.11保留寄存器命令
6.11.1命令完成
6.12.1命令完成
6.13预订报告命令
6.13.1命令完成
6.14写入命令
6.14.1命令完成
6.15写入不可纠正命令
6.15.1命令完成
6.16写零命令
6.16.1命令完成
7控制器架构
7.1简介
7.2命令提交和完成机制(资料性)
7.2.1命令处理
7.2.2建立命令的基本步骤
7.2.3处理完成的命令
7.2.4与指挥有关的资源退役
7.2.5命令示例
7.2.5.1创建I/O提交队列
7.3重置
7.3.1 NVM子系统复位
7.3.2控制器电平复位
7.3.3队列级别
7.4队列管理
7.4.1队列设置和初始化
7.4.2队列协调
7.4.3队列中止
7.5中断
7.5.1基于管脚、单个MSI和多个MSI行为
7.5.1.1主机软件中断处理
7.5.1.1.1中断示例(资料性)
7.5.1.2基于引脚和MSI中断之间的差异
7.5.2基于MSI-X的行为
7.6控制器初始化和关闭处理
7.6.1初始化
7.6.1.1软件进度标记
7.6.2停机
7.7异步事件请求主机软件建议(资料性)
7.8特征值
7.9 NVMe限定名称
7.10标识符格式和布局(资料性)
7.10.1 PCI供应商ID(VID)和PCI子系统供应商ID(SSVID)
7.10.2序列号(SN)和型号(MN)
7.10.3 IEEE OUI标识符(IEEE)
7.10.4 IEEE扩展唯一标识符(EUI64)
7.10.5命名空间全局唯一标识符(NGUID)
7.11唯一标识符
7.12保持活力
7.12.1通过PCIe的NVMe
7.13使用影子门铃缓冲器更新控制器门铃寄存器
7.13.1影子门铃缓冲器概述
7.13.2控制器门铃寄存器更新示例算法(参考)
8特点
8.1固件更新过程
8.2元数据处理
8.3端到端数据保护(可选)
8.3.1实际钻头
8.3.1.1保护信息和写入命令
8.3.1.2实际位和读指令
8.3.1.3熔合操作的保护信息
8.3.1.4使用比较命令进行保护检查
8.3.1.5保护信息检查控制-PRCHK
8.4电源管理
8.4.1非运行功率状态
8.4.2自主电源状态转换
8.4.3 NVM子系统工作负载
8.4.4运行时D3转换
8.4.5主控热管理
8.5虚拟化增强(可选)
8.5.1 VQ资源定义
8.5.2 VI资源定义
8.5.3辅助控制器状态和资源配置
8.5.4单根I/O虚拟化和共享(SR-IOV)
8.6软件仿真的门铃步幅
8.7特定于供应商的标准命令格式
8.8预订(可选)
8.8.1预订通知
8.8.2登记
8.8.3预订类型
8.8.4注销
8.8.5获得预订
8.8.6解除预约
8.8.7抢先预订或登记
8.8.8清除预订
8.8.9报告预订状态
8.9主机内存缓冲区(可选)
8.10重放保护内存块(可选)
8.10.2 RPMB操作
8.10.2.1认证密钥编程
8.10.2.2读写计数器值
8.10.2.3验证数据写入
8.10.2.4认证数据读取
8.10.3认证设备配置块写入
8.10.4认证设备配置块读取
8.11设备自检操作(可选)
8.11.1短设备自检操作
8.11.2扩展设备自检操作
8.12命名空间管理(可选)
8.13引导分区(可选)
8.13.1从引导分区读取
8.13.2写入启动分区
8.13.3引导分区保护
8.14遥测(可选)
8.14.1遥测数据采集示例(资料性)
8.15消毒操作(可选)
9指令
9.1 I/O命令中的指令使用
9.2识别(指令类型00h)
9.2.1指令接收
9.2.1.1返回参数(指令操作01h)
9.2.2指令发送
9.2.2.1启用指令(指令操作01h)
9.3流(指令类型01h,可选)
9.3.1指令接收
9.3.1.1返回参数(指令操作01h)
9.3.1.2获取状态(指令操作02h)
9.3.1.3资源分配(指令操作03h)
9.3.2指令发送
9.3.2.1发布标识符(指令操作01h)
9.3.2.2发布资源(指令操作02h)
10错误报告和恢复
10.1命令和队列错误处理
10.2媒体和数据错误处理
10.3内存错误处理
10.4内部控制器错误处理
10.5控制器致命状态
1 Introduction(介绍) 1.1 Overview(概述) NVM-Express(NVMe)是一个允许主机软件与非易失性存储子系统通信的接口。此接口针 对企业和客户机固态驱动器进行了优化,通常作为寄存器级接口连接到 PCI Express 接口。 注:在开发过程中,本规范被称为企业 NVMHCI。但是,在规范完成之前,名称被修改为 NVM Express。此接口用于客户端和企业系统。 有关从版本 1.2.1 到版本 1.3 的更改概述,请参阅 nvmexpress.org/changes 以获取描述新功 能的文档,包括控制器遵守版本 1.3 的强制性要求。 1.1.1 NVMe over PCIe and NVMe over Fabrics NVM Express 1.3 和先前版本定义了一个寄存器级接口,用于主机软件通过 PCI Express (NVMe over PCIe)与非易失性内存子系统通信。NVMe-over-Fabrics 规范定义了一个协议 接口和 NVMe 的相关扩展,这些扩展支持通过其他互连(例如,以太网、InfiniBand)进行 操作™,光纤通道)。NVMe over Fabrics 规范对每个 NVMe 传输都有一个 NVMe 传输绑定 (在该规范内或通过引用)。 在本规范中,要求/特性可记录为特定于 NVMe over fabric 或特定 NVMe 传输绑定。此外, 对功能和功能的支持要求可能会在基于 PCIe 的 NVMe 和基于结构的 NVMe 之间有所不同。 为符合 NVM Express 1.2.1,控制器应支持图 109 中标识控制器数据结构中的 NVM 子系统 NVMe 限定名。 1.2 Scope(范围) 该规范定义了与非易失性存储器子系统通信的寄存器接口。它还定义了一个用于 NVM 子系 统的标准命令集。 1.3 Outside of Scope(超出范围) 寄存器接口和命令集是在 NVM 的任何使用模型之外指定的,但只指定到 NVM 子系统 的通信接口。因此,本规范未指定非易失性存储器系统是否用作固态驱动器、主存储器、高 速缓存存储器、备份存储器、冗余存储器等。特定的使用模式不在范围内,可选且未经许可。 此接口是在任何非易失性内存管理(如损耗均衡)之上指定的。抽象了 NVM 技术(如 NAND)的擦除和其他管理任务 此规范不包含任何有关缓存算法或技术的信息。 本规范中提及的其他已发布规范的实现或使用,即使为了符合本规范的要求,也不在本 规范的范围内(例如,PCI、PCI Express 和 PCI-X)。 1.4 Theory of Operation(操作理论) NVM-Express 是一种可扩展的主机控制器接口,旨在满足使用基于 PCI-Express 的固态 驱动器的企业和客户机系统的需要。该接口提供优化的命令提交和完成路径。它支持 多达 65535 个 I/O 队列,每个 I/O 队列最多有 64K 个未完成的命令,从而支持并行操 作。此外,还添加了对许多企业功能的支持,如端到端数据保护(与 SCSI 保护信息兼 容,通常称为 T10 DIF 和 SNIA DIX 标准)、增强的错误报告和虚拟化。 接口具有以下关键属性:  不需要在命令提交或完成路径中读取不可缓存的/MMIO((Memory-mapped I/O) 即内存映射 I/O)寄存器。  命令提交路径中最多需要写入一个 MMIO 寄存器  最多支持 65535 个 I/O 队列,每个 I/O 队列最多支持 64K 个未完成的命令。  使用定义良好的仲裁机制与每个 I/O 队列关联的优先级。  完成 4KB 读取请求的所有信息都包含在 64B 命令本身中,确保高效的小型 I/O 操
作  高效、精简的命令设置。  支持 MSI/MSI-X 和中断聚合。  支持多个命名空间。  有效支持 SR-IOV 等 I/O 虚拟化体系结构。  强大的错误报告和管理功能。  支持多路径 I/O 和命名空间共享。 本规范定义了一组精简的寄存器,其功能包括:  控制器能力指示  控制器故障状态(命令状态直接通过 CQ 处理)  管理队列配置(通过管理命令处理的 I/O 队列配置)  门铃注册,可扩展提交和完成队列的数量 NVM Express 控制器与单个 PCI 功能关联。适用于整个控制器的功能和设置在控制器功 能(CAP)寄存器和标识控制器数据结构中指示 命名空间是可以格式化为逻辑块的非易失性内存量。NVM Express 控制器可以支持使用 命名空间 ID 引用的多个命名空间。可以使用命名空间管理和命名空间附件命令创建和删除 命名空间。标识命名空间数据结构指示特定于特定命名空间的功能和设置。命名空间 ID ffffffff h 的标识名称空间数据结构报告所有名称空间通用的功能和设置 NVM Express 基于成对提交和完成队列机制。命令由主机软件放入提交队列。完成操作 由控制器放入关联的完成队列中。多个提交队列可以使用同一个完成队列。提交和完成队列 在内存中分配。 管理提交和相关的完成队列用于控制器管理和控制(例如,创建和删除 I/O 提交和完成 队列、中止命令等)。只有属于管理命令集的命令才能提交到管理提交队列。 I/O 命令集与 I/O 队列对一起使用。该规范定义了一个 I/O 命令集,称为 NVM 命令集。 主机选择一个用于所有 I/O 队列对的 I/O 命令集。 主机软件创建队列,最多可达控制器支持的最大值。通常,创建的命令队列的数量取决 于系统配置和预期的工作负载。例如,在基于四核处理器的系统上,每个核心可能有一个队 列对,以避免锁定,并确保在适当的处理器核心缓存中创建数据结构。图 1 提供了队列对机 制的图形表示,显示了提交队列和完成队列之间的 1:1 映射。图 2 显示了一个示例,其中多 个 I/O 提交队列在 Core B 上使用相同的 I/O 完成队列。图 1 和图 2 显示了管理提交队列和 管理完成队列之间始终存在 1:1 映射。
提交队列(SQ)是一个具有固定插槽大小的循环缓冲区,主机软件使用该缓冲区提交 命令供控制器执行。当有 1 到 n 个新命令要执行时,主机软件会更新相应的 SQ 尾门铃寄存 器。当有一个新的门铃寄存器写入时,先前的 SQ Tail 值在控制器中被覆盖。控制器按顺序 从提交队列中获取 SQ 条目,但是,它可以按任何顺序执行这些命令。 每个提交队列条目都是一个命令。命令的大小为 64 字节。内存中用于数据传输的物理 内存位置是使用物理区域页(PRP)条目或散点收集列表指定的。每个命令可以包括两个 PRP 条目或一个散点收集列表(SGL)段。如果描述数据缓冲区需要两个以上的 PRP 条目,则提 供一个指向描述 PRP 条目列表的 PRP 列表的指针。如果需要多个 SGL 段来描述数据缓冲区, 则 SGL 段提供指向下一个 SGL 段的指针。 完成队列(CQ)是具有固定槽大小的循环缓冲区,用于发布已完成命令的状态。完成 的命令由主机软件分配的关联 SQ 标识符和命令标识符的组合唯一标识。多个提交队列可以 与单个完成队列相关联。此功能可用于单个工作线程通过一个完成队列处理所有命令完成的 情 况, 即使 这 些命 令来 自 多个 提交 队 列。 CQ 头 指针 在处 理 完成 后由 主 机软 件更 新 指示最后一个空闲 CQ 插槽的队列条目。在完成队列条目中定义了阶段标记(P)位,以指 示条目是否在未咨询寄存器的情况下被新发布。这使主机软件能够确定新条目是作为前一轮 或当前一轮完成通知的一部分发布的。具体地说,在完成队列条目的每一轮中,控制器 反转相位标记位。 1.4.1 多路径 I/O 和命名空间共享 本节概述了多路径 I/O 和命名空间共享。多路径 I/O 指单个主机和命名空间之间的两个 或多个完全独立的 PCI Express 路径,而命名空间共享指两个或多个主机使用不同的 NVM Express 控制器访问公共共享命名空间的能力。多路径 I/O 和命名空间共享都要求 NVM 子系 统包含两个或多个控制器。两个或多个主机对共享命名空间的并发访问需要主机之间某种形 式的协调。用于协调这些主机的过程不在本规范的范围内。 图 3 显示了一个 NVM 子系统,该子系统包含一个 NVM Express 控制器和一个 PCI Express 端口。由于这是单功能 PCI Express 设备,NVM Express 控制器应与 PCI 功能 0 相关 联。控制器可以支持多个名称空间。图 3 中的控制器支持标记为 NS A 和 NS B 的两个名称 空间。与每个控制器名称空间关联的是一个名称空间 ID,标记为 NSID 1 和 NSID 2,控制器 使用它来引用特定的名称空间。命名空间 ID 与命名空间本身不同,是主机和控制器用于在 命令中指定特定命名空间的句柄。控制器名称空间 ID 的选择不在本规范的范围内。在此示 例中,命名空间 ID 1 与命名空间 A 关联,命名空间 ID 2 与命名空间 B 关联。这两个命名空 间都是控制器专用的,此配置既不支持多路径 I/O,也不支持命名空间共享。
图 4 显示了一个多功能 NVM 子系统,其中一个 PCI Express 端口包含两个控制器,一个控 制器与 PCI 功能 0 关联,另一个控制器与 PCI 功能 1 关联。每个控制器都支持单个私有命名 空间和对共享命名空间 B 的访问。在所有有权访问特定共享命名空间的控制器中,命名空 间 ID 应相同。在本例中,两个控制器都使用命名空间 ID 2 来访问共享命名空间 B。 每个控制器都有一个唯一的标识控制器数据结构,每个命名空间都有一个唯一的标识命 名空间数据结构。访问共享命名空间的控制器返回与该共享命名空间关联的标识命名空间数 据结构(即,访问同一共享命名空间的所有控制器都返回相同的数据结构内容)。有一个与 命名空间本身关联的全局唯一标识符,可用于确定同一共享命名空间何时存在多个路径。参 见第 7.10 节。 与共享命名空间关联的控制器可以同时在命名空间上操作。单个控制器执行的操作是提
交命令的控制器的写原子级别的共享命名空间的原子操作(请参阅第 6.4 节)。在共享命名 空间的控制器中,不要求写入原子性级别相同。如果向访问共享命名空间的不同控制器发出 的命令之间存在任何排序要求,则需要主机软件或关联的应用程序来强制执行这些排序要求。 图 5 展示了一个具有两个 PCI Express 端口的 NVM 子系统,每个端口都有一个关联的 控制器。两个控制器都映射到对应端口的 PCI 功能 0。本例中的每个 PCI Express 端口完全 独立,并具有自己的 PCI Express 基本复位和参考时钟输入。端口的重置仅影响与该端口关 联的控制器,对其他控制器、共享命名空间或其他控制器在共享命名空间上执行的操作没有 影响。本例的功能行为与图 4 所示的相同。 图 5 中所示的两个端口可以与同一个根复合体或不同的根复合体相关联,并且可以用于 实现多路径 I/O 和 I/O 共享体系结构。系统级体系结构方面以及 PCI Express 结构中多个端 口的使用超出了本规范的范围。 图 6 说明了一个支持单根 I/O 虚拟化(SR-IOV)的 NVM 子系统,该子系统具有一个物 理功能和四个虚拟功能。NVM Express 控制器与每个函数关联,每个控制器都有一个私有名 称空间,并且可以访问所有控制器共享的名称空间,标记为 NS F。此示例中控制器的行为 与本节中其他示例的行为相似。有关 SR-IOV 的更多信息,请参阅第 8.5.4 节。
本节提供的示例旨在说明概念,而不是枚举所有可能的配置。例如,NVM 子系统可以包含 多个 PCI Express 端口,每个端口支持 SR-IOV。 1.5 惯例 对于所有标记为保留的位和寄存器,硬件应返回“0”,主机软件应写入所有保留位和值 为“0”的寄存器。 在 register 部分中,使用以下缩写: RO 只读 RW 读写 R/W 读写。读取的值可能不是最后写入的值。 RWC 读取/写入“1”以清除 RWS Read/Write ‘1’ to set Impl Spec Implementation Specific–控制器可以自由选择其实现。 HwInit 默认状态取决于 NVM Express 控制器和系统配置。该值在重置时初始化, 例如通过扩展 ROM,或者在集成设备的情况下,通过平台 BIOS。 对于某些寄存器字段,具体实现取决于该字段是 RW、RWC 还是 RO;这通常显示为 RW/RO 或 RWC/RO,以指示如果不支持该功能,则该字段是只读的。 在文档中引用寄存器字段时,使用的约定是“register Symbol.field Symbol”。例如,PCI 命令寄存器奇偶校验错误响应启用字段由名称 CMD.PEE 引用。如果寄存器字段是一个位数 组,则该字段称为“寄存器符号.字段符号(数组偏移到元素)”。基于 0 的值是一个编号方案, 其数字 0h 实际上对应于 1h 的值,从而产生 0h=1h,1h=2h,2h=3h 等的模式。在该编号 方案中,没有方法指定 0h 的值。除非另有规定,否则本规范中的值是基于 1 的(即数字 1h 对应于 1h 的值,2h=2h 等)。 当文档中指定大小为 KB 时,使用的约定是 1KB=1024 字节。 ^运算符用于表示要将数字、符号或表达式提升到的幂。 一些参数被定义为 ASCII 字符串。ASCII 字符串只能包含 20h 到 7Eh 的代码值。对于字 符串“Copyright”,字符“C”是第一个字节,字符“o”是第二个字节等。该字符串左对齐,如有 必要,应在右侧填充空格(ASCII 字符 20h)。十六进制 ASCII 字符串是使用代码值子集的 ASCII 字符串:“0”到“9”,“A”到“F”大写,“a”到“f”小写。 1.6 定义 1.6.1 Admin Queue
管理队列是标识符为 0 的提交队列和完成队列。管理提交队列和相应的管理完成队列分 别用于提交管理命令和接收这些管理命令的完成。 1.6.2 仲裁突发 一次可以从使用循环或带有紧急优先级类仲裁的加权循环的提交队列中启动的最大命令数。 1.6.3 仲裁机制 用于确定在启动要由控制器执行的命令旁边选择哪个提交队列的方法。定义了三种仲裁机制, 包括循环机制、具有紧急优先级的加权循环机制和特定于供应商的仲裁机制。参见第 4.11 节。 1.6.4 缓存 NVM 子系统使用的一种数据存储区,主机不能访问,它可以包含存储在非易失性介质中的 用户数据的子集,也可以包含未提交给非易失性介质的用户数据。 1.6.5 候选命令 候选命令是一个已提交的命令,该命令已传输到控制器,并且控制器认为已准备好进行处理。 1.6.6 命令完成 当控制器已完成对命令的处理、已更新完成队列条目中的状态信息并已将完成队列条目发布 到关联的完成队列时,命令即完成。 1.6.7 命令提交 对于通过 PCIe 的 NVMe,在提交队列尾门铃写入完成时提交命令,该写入将提交队列尾指 针值移过放置该命令的提交队列插槽。 有关 NVMe over Fabrics,请参阅 NVMe over Fabrics 1.0 规范中的第 1.4.14 节。 1.6.8 控制器 实现 NVM Express 的 PCI Express 函数。 1.6.9 指令 主机与 NVM 子系统或控制器信息交换的一种方法。可以使用指令 Send 和指令 Receive 命 令来传输信息。I/O 命令的子集可以包括指令类型字段和指令特定字段,以传递特定于关联 I/O 命令的更多信息。参见第 9 节。 1.6.10 仿真控制器 在软件中定义的 NVM 快速控制器。模拟控制器可以有也可以没有底层物理 NVMe 控制器(例 如,物理 PCIe 功能)。 1.6.11 扩展 LBA 扩展的 LBA 是在与 LBA 相关联的元数据与 LBA 数据连续传输时创建的较大的 LBA。参见图 255。 1.6.12 固件插槽 固件插槽是控制器中用于存储固件映像的位置。控制器存储一到七个固件映像。将新固件下 载到控制器时,主机软件可以通过指示固件插槽号来指定要替换的映像。 1.6.13 I/O 命令 I/O 命令是提交到 I/O 提交队列的命令。 1.6.14 I/O 完成队列 I/O 完成队列是一个完成队列,用于指示命令完成,并与一个或多个 I/O 提交队列关联。I/O 完成队列标识符从 1 到 65535。 1.6.15 I/O 提交队列 I/O 提交队列是一个提交队列,用于提交 I/O 命令供控制器执行(例如,对 NVM 命令集进 行读、写)。I/O 提交队列标识符从 1 到 65535。 1.6.16 LBA 范围
由起始 LBA 和逻辑块数指定的连续逻辑块的集合。 1.6.17 逻辑块 用于读写命令的最小可寻址数据单元。 1.6.18 逻辑块地址(LBA) 逻辑块的地址,通常称为 LBA。 1.6.19 元数据 元数据是关于特定数据 LBA 的上下文信息。如果控制器提供存储空间,主机可以包括要由 NVM 子系统存储的元数据。 1.6.20 命名空间 一种可以格式化成逻辑块的非易失性存储器。格式化时,大小为 n 的命名空间是逻辑块的集 合,逻辑块地址从 0 到(n-1)。 1.6.21 命名空间 ID(NSID) 控制器用来访问命名空间的标识符。有关有效 NSID、无效 NSID、活动 NSID、非活动 NSID、 已分配 NSID 和未分配 NSID 的定义,请参阅第 6.1 节。 1.6.22 NVM NVM 是非易失性存储器的缩写。 1.6.23 NVM 子系统 NVM 子系统包括一个或多个控制器、一个或多个命名空间、一个或多个 PCI Express 端口、 非易失性存储器存储介质以及控制器和非易失性存储器存储介质之间的接口。 1.6.24 主控制器 支持虚拟化管理命令的 NVM Express 控制器。NVM 子系统可以包含多个主控制器。NVM 子 系统中的辅助控制器依赖于用于动态资源管理的主控制器(请参阅第 8.5 节)。 支持 NVM Express 和虚拟化增强功能的 PCI Express SR-IOV 物理功能是主控制器的一个示例 (请参阅第 8.5.4 节)。 1.6.25 私有命名空间 一次只能附加到一个控制器的命名空间。主机可以通过标识名称空间数据结构中名称空间多 路径 I/O 和名称空间共享功能(NMIC)字段的值来确定名称空间是私有名称空间还是共享 名称空间。 1.6.26 特权行动 影响或有可能影响整个 NVM 子系统状态的操作(命令、寄存器写入等),而不仅仅是与操 作关联的控制器和/或命名空间。具有特权的管理命令包括命名空间管理、命名空间附件、 虚拟化管理、格式化 NVM 和清理。特权寄存器操作是 NVM 子系统重置。特定于供应商的 命令和寄存器也可能具有特权。 1.6.27 运行时 D3(断电) 在运行时 D3(RTD3)主电源从控制器上断开。可提供或不提供辅助电源。 1.6.28 净化操作 更改 NVM 子系统中所有用户数据的过程,这样就不可能从任何缓存或非易失性介质中恢复 以前的用户数据。 1.6.29 二级控制器 依赖于 NVM 子系统中的主控制器来管理某些控制器资源的 NVM Express 控制器(参见第 8.5 节)。 支持 NVM Express 并从主控制器接收资源的 PCI Express SR-IOV 虚拟功能是辅助控制器的一 个示例(请参阅第 8.5.4 节)。 1.6.30 共享命名空间
分享到:
收藏