MSI-X 之有别于MSI

MSI-X Capability结构

MSI-X Capability中断机制与MSI Capability的中断机制相似。PCIe总线引出MSI-X机制的主要目的是为了扩展PCIe设备使用中断向量的个数,同时解决MSI中断机制要求使用中断向量号连续所带来的问题数组

MSI中断机制最多只能使用32个中断向量,而MSI-X能够使用更多的中断向量。目前Intel的许多PCIe设备支持MSI-X中断机制。与MSI中断机制相比,MSI-X机制更为合理。首先MSI-X能够支持更多的中断请求,可是这并非引入MSI-X中断机制最重要的缘由。由于对于多数PCIe设备,32种中断请求已经足够了。而引入MSI-X中断机制的主要缘由是,使用该机制不须要中断控制器分配给该设备的中断向量号连续。spa

若是一个PCIe设备须要使用8个中断请求时,若是使用MSI机制时,Message Data的[2:0]字段能够为0b000~0b111,所以能够发送8种中断请求,可是这8种中断请求的Message Data字段必须连续。在许多中断控制器中,Message Data字段连续也意味着中断控制器须要为这个PCIe设备分配8个连续的中断向量号。ip

有时在一个中断控制器中,虽然具备8个以上的中断向量号,可是很难保证这些中断向量号是连续的。所以中断控制器将没法为这些PCIe设备分配足够的中断请求,此时该设备的“Multiple Message Enable”字段将小于“Multiple Message Capable”。资源

而使用MSI-X机制能够合理解决该问题。在MSI-X Capability结构中,每个中断请求都使用独立的Message Address字段和Message Data字段,从而中断控制器能够更加合理地为该设备分配中断资源。it

与MSI Capability寄存器相比,MSI-X Capability寄存器使用一个数组存放Message Address字段和Message Data字段,而不是将这两个字段放入Capability寄存器中,本篇将这个数组称为MSI-X Table。从而当PCIe设备使用MSI-X机制时,每个中断请求能够使用独立的Message Address字段和Message Data字段。扩展

除此以外MSI-X中断机制还使用了独立的Pending Table表,该表用来存放与每个中断向量对应的Pending位。这个Pending位的定义与MSI Capability寄存器的Pending位相似。MSI-X Table和Pending Table存放在PCIe设备的BAR空间中。MSI-X机制必须支持这个Pending Table,而MSI机制的Pending Bits字段是可选的。请求

 

正所谓技术

长江后浪推前浪,前浪死在沙滩上。di

技术革新永不断,一不当心就完蛋。co

相关文章
相关标签/搜索