NVMe配置空间寄存器

NVMe配置空间寄存器

  • 1 PCIe Capability组织结构
  • 2 PCI Header
  • 3 PCI Power Management Capabilities
  • 4 Message Signaled Interrupt Capability (Optional)
  • 5 MSI-X Capability (Optional)
  • 6 PCI Express Capability
  • 7 Advanced Error Reporting Capability (Optional)

本文属于《 NVMe协议基础系列教程》之一,欢迎查看其它文章。

NVMe基于PCIe协议,因此也必须满足PCIe协议的基本要求。
NVMe (Over PCle)寄存器,主要分为两类:

  • PCle配置空间寄存器
  • NVMe控制器寄存器(PCIe内存空间)

本节主要介绍,NVMe设备的配置空间组成,比如PCI Header、PCI Capabilities和PCI Express Extended Capabilities,并且还有NVMe设备的附加要求。

NVMe设备必须具备的基础PCIe Capability,如下所示:

NVMe配置空间寄存器_第1张图片
可以看到有,1个PCI Header,4个Capability,1个Extended Capability,接下来,我们详细介绍。

1 PCIe Capability组织结构

NVMe配置空间寄存器_第2张图片
PCIe的配置空间为4KB:

  • 0~256B是PCI空间(PCI Compatible Space),用于存放PCI Header和Capability。
  • 256~4KB是PCIe扩展空间(Extended Configuration Space),用于存放Extended Capability。

Capability组织结构,如下所示:
NVMe配置空间寄存器_第3张图片
Extended Capability组织结构,如下所示:
NVMe配置空间寄存器_第4张图片第一个Extended Capability,默认从100h偏移位置开始放置。

2 PCI Header

PCI配置Header(64B,00h~3Ch)具有固定的格式,主要有两种:Type0和Type1。

  • Header Type为Type0,表示Endpoint(Agent)的Configuration Space;
  • Header Type为Type1,表示Switch或Bridge的Configuration Space。

NVMe控制器是以Endpoint形式,挂接在PCIe Port下,因此配置空间为Type0类型,如下所示:
NVMe配置空间寄存器_第5张图片
Header中各个寄存器的含义,如下所示:
NVMe配置空间寄存器_第6张图片
NVMe配置空间寄存器_第7张图片在这里插入图片描述
NVMe配置空间寄存器_第8张图片
NVMe配置空间寄存器_第9张图片
NVMe配置空间寄存器_第10张图片
NVMe配置空间寄存器_第11张图片
NVMe配置空间寄存器_第12张图片

3 PCI Power Management Capabilities

在这里插入图片描述
PCI Power Management Capabilities用于电源管理,该能力必须实现。
PCI Power Management Capabilities由Capability ID、Capabilities、Control and Status三部分组成。
至于每个寄存器具体含义,可参考NVM Express 1.1a协议规范,这里不再赘述。

4 Message Signaled Interrupt Capability (Optional)

NVMe配置空间寄存器_第13张图片
Message Signaled Interrupt Capability用于支持MSI中断,这是可选的能力,一般情况使用MSI-X居多。
寄存器具体含义,参考NVM Express 1.1a协议规范。

5 MSI-X Capability (Optional)

在这里插入图片描述
MSI-X Capability用于支持MSI-X中断,虽然是可选能力,但大多数SSD都会采用MSI-X方式上报中断。
寄存器具体含义,参考NVM Express 1.1a协议规范。

6 PCI Express Capability

NVMe配置空间寄存器_第14张图片
PCI Express Capability包含设备能力、设备控制、设备状态、Link能力、Link控制、Link状态等,是必须实现的能力。
需要注意的是Device Control 2寄存器,可通过改变它来设置链路超时时间(SSD侧认为的),一般Host侧的超时时间是37~50ms。
寄存器具体含义,参考NVM Express 1.1a协议规范。

7 Advanced Error Reporting Capability (Optional)

NVMe配置空间寄存器_第15张图片
Advanced Error Reporting Capability 可选能力,用于向host报告错误,注意,这个错误是PCIe协议上的错误,而不是NVMe命令执行错误。

此外还有一些其他PCIe Capability,是NVMe规范未提及但会使用的,这取决于NVMe SSD的实现。
寄存器具体含义,参考NVM Express 1.1a协议规范。

你可能感兴趣的:(计算机组成,NVMe,PCIe,配置空间)