NVMe配置空间寄存器
本文属于《 NVMe协议基础系列教程》之一,欢迎查看其它文章。
NVMe基于PCIe协议,因此也必须满足PCIe协议的基本要求。
NVMe (Over PCle)寄存器,主要分为两类:
- PCle配置空间寄存器
- NVMe控制器寄存器(PCIe内存空间)
本节主要介绍,NVMe设备的配置空间组成,比如PCI Header、PCI Capabilities和PCI Express Extended Capabilities,并且还有NVMe设备的附加要求。
NVMe设备必须具备的基础PCIe Capability,如下所示:
可以看到有,1个PCI Header,4个Capability,1个Extended Capability,接下来,我们详细介绍。
1 PCIe Capability组织结构
PCIe的配置空间为4KB:
- 0~256B是PCI空间(PCI Compatible Space),用于存放PCI Header和Capability。
- 256~4KB是PCIe扩展空间(Extended Configuration Space),用于存放Extended Capability。
Capability组织结构,如下所示:
Extended Capability组织结构,如下所示:
第一个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类型,如下所示:
Header中各个寄存器的含义,如下所示:
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)
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
PCI Express Capability包含设备能力、设备控制、设备状态、Link能力、Link控制、Link状态等,是必须实现的能力。
需要注意的是Device Control 2寄存器,可通过改变它来设置链路超时时间(SSD侧认为的),一般Host侧的超时时间是37~50ms。
寄存器具体含义,参考NVM Express 1.1a协议规范。
7 Advanced Error Reporting Capability (Optional)
Advanced Error Reporting Capability 可选能力,用于向host报告错误,注意,这个错误是PCIe协议上的错误,而不是NVMe命令执行错误。
此外还有一些其他PCIe Capability,是NVMe规范未提及但会使用的,这取决于NVMe SSD的实现。
寄存器具体含义,参考NVM Express 1.1a协议规范。