NVM Express Revision 1.3学习笔记(三、控制器寄存器)

注意:本文翻译仅为学习交流用,版权归原文作者所有。原文出处
3.控制器寄存器
控制器寄存器位于MLBAR/MUBAR寄存器(PCI BAR0和BAR1)中,这些寄存器映射到支持顺序访问和可变访问宽度的存储空间。对于许多计算机体系结构,将内存空间指定为不可缓存会产生这种行为。主机不得发出锁定访问。主机应以寄存器的原生宽度或对齐的32位访问方式访问寄存器。违反这些主机要求都会导致未定义的行为。不支持以两个或更多寄存器的任何部分为目标的访问。所有保留寄存器和寄存器中的所有保留位都是只读的,读取时返回0h。软件不依赖于返回的0h。

3.1寄存器定义
下表描述了控制器的寄存器映射。供应商特定地址范围从控制器支持的最后一个门铃之后开始,一直持续到BAR0/1支持范围的末尾。供应商特定地址范围的起点在同一位置,不取决于分配的门铃数量。
在这里插入图片描述
3.1.1 Offset 00h: CAP – Controller Capabilities (00-07h:64bits)
该寄存器向主机指示控制器的基本能力。
在这里插入图片描述
在这里插入图片描述
3.1.2 Offset 08h: VS – Version
该寄存器指示控制器实现支持的NVM Express规范的主要、次要和第三版本。规范的有效版本是:1.0、1.1、1.2、1.2.1和1.3。
这里只贴1.3版本
在这里插入图片描述
3.1.3 Offset 0Ch: INTMS – Interrupt Mask Set 中断屏蔽设置
暂略

3.1.4 Offset 10h: INTMC – Interrupt Mask Clear中断屏蔽清除
暂略

3.1.5 Offset 14h: CC – Controller Configuration控制器配置
该寄存器修改控制器的设置。主机软件应在设置CC.EN为1(启动控制器)之前设置仲裁机制(CC.AMS),内存页面大小(CC.MPS)以及命令集(CC.CSS)为有效值。不能在没有初始化I/O完成、提交队列条目数之前创建I/O队列,这样会造成控制器终止创建I/O完成、提交队列命令,同时状态码会显示无效队列大小。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.1.6 Offset 1Ch: CSTS – Controller Status 控制器状态
在这里插入图片描述
在这里插入图片描述
3.1.7 Offset 20h: NSSR – NVM Subsystem Reset NVM子系统复位
暂略

3.1.8 Offset 24h: AQA – Admin Queue Attributes 管理队列属性
该寄存器定义了管理提交队列和管理完成队列的属性。管理提交队列和管理完成队列的队列标识符为0h。管理提交队列的优先级由所·选的仲裁机制决定,参见第4.11节。管理提交队列和管理完成队列需要存在物理上连续的内存中。
注意:建议在引导操作期间使用UEFI(统一可扩展固件接口)。在低内存环境中(如传统的BIOS环境中的Option ROMs),可能没有足够的可用内存来分配必需的提交和完成队列。在这些类型的条件下,控制器的低内存操作是供应商特定的。
在这里插入图片描述
3.1.9 Offset 28h: ASQ – Admin Submission Queue Base Address 管理提交队列基地址
该寄存器定义了管理提交队列的内存基地址。
在这里插入图片描述
3.1.10 Offset 30h: ACQ – Admin Completion Queue Base Address 管理完成队列基地址
该寄存器定义了管理完成队列的内存基地址。
在这里插入图片描述
3.1.11 Offset 38h: CMBLOC – Controller Memory Buffer Location 控制器内存缓冲区位置
暂略。

3.1.12 Offset 3Ch: CMBSZ – Controller Memory Buffer Size 控制器内存缓冲区大小
暂略。

3.1.13 Offset 40h: BPINFO – Boot Partition Information引导分区信息
暂略。

3.1.14 Offset 44h: BPRSEL – Boot Partition Read Select 引导分区读取选择
暂略。

3.1.15 Offset 48h: BPMBL – Boot Partition Memory Buffer Location (Optional) 引导分区内存缓冲区地址(可选)
暂略。

3.1.16 Offset (1000h + ((2y) * (4 << CAP.DSTRD))): SQyTDBL – Submission Queue y Tail Doorbell 提交队列尾门铃
该寄存器定义门铃寄存器,用于更新提交队列y的尾条目指针。y的值相当于队列标识符。这向控制器指示新的命令已经被提交进行处理。
主机不应该读门铃寄存器。如果读取了门铃寄存器,返回值是供应商特定的。写入不存在的提交队列尾门铃,会产生未定义的结果。
在这里插入图片描述
3.1.17 Offset (1000h + ((2y + 1) * (4 << CAP.DSTRD))): CQyHDBL – Completion Queue y Head Doorbell 完成队列头门铃
该寄存器定义门铃寄存器,用于更新完成队列y的头条目指针。y的值相当于队列标识符。这表示完成队列条目已由主机软件处理。
主机不应该读门铃寄存器。如果读取了门铃寄存器,返回值是供应商特定的。写入不存在的完成队列头门铃,会产生未定义的结果。
主机软件应确保继续处理完成队列中的条目,无论(特定或任意)提交队列中是否还有条目。
在这里插入图片描述
3.2索引/数据对寄存器(可选)
暂略。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值