接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第10章 MSI和MSI-X中断机制(3)
10.1.2 MSI-X Capability结构
MSI-X Capability中断机制与MSI Capability的中断机制类似。PCIe总线引出MSI-X机制的主要目的是为了扩展PCIe设备使用的中断向量的个数(次要),同时解决MSI中断机制要求使用中断向量号连续所带来的问题(主要)。
1. MSI-X Capability结构
MSI-X Capability结构比MSI Capability结构略微复杂一些。在该结构中,使用MSI-X Table存放该设备使用的所有Message Address和Message Data字段,这个表格存放在该设备的BAR空间中,从而PCIe设备可以使用MSI-X机制时,中断向量号可以并不连续,也可以申请更多的中断向量号。MSI-X Capability结构的组成方式如下图所示:
上图中各字段的含义如下:
- Capability ID字段
记载MSI-X Capability结构的ID号,其值为0x11。在PCIe设备中,每一个Capability都有唯一的一个ID号。
- Next Pointer字段
Next Pointer字段存放下一个Capability结构的地址。
- Message Control字段
该字段存放当前PCIe设备使用MSI-X机制进行中断请求的状态与控制信息。如表10-2所示:
- Table BIR(BAR Indicator Register)字段
该字段存放MSI-X Table所在的位置,PCIe总线规范规定,MSI-X Table存放在设备的BAR空间中。该字段表示设备使用BAR0~5寄存器中的哪个空间存放MSI-X table。该字段由三位组成,其中0b000~0b101与BAR0~5空间一一对应。
- Table Offset字段
该字段存放MSI-X Table在相应BAR空间中的偏移。
- PBA(Pending Bit Array)BIR字段
该字段存放Pending Table在PCIe设备的哪个BAR空间中。在通常情况下,Pending Table和MSI-X Table存放在PCIe设备的同一个BAR空间中。
- PBA Offset字段
该字段存放Pending Table在相应BAR空间中的偏移。
更多内容请看下回。