1. MSI和MSI-X对比

从INTx过渡到MSI,可以说是完全两套天壤之别的中断上报架构。一个是带外,一个是带内。而MSI-X则是以MSI为基础发展起来的,很多特性很类似。MSI-X某种程度上可以看做的MSI的一个超集。它和MSI一样,可以生成Memory Write事务,来向中断控制器报告中断。

但是,MSI-X定义了一套新的capability structure,并且在Memory空间存储MSI-X中断地址表,可以处理更多的中断,也更灵活,在软件处理上也无法兼容MSI。

下面简单列表对比一下两者的差异:

对比项MSIMSI-X
Message Address存放在MSI相关配置空间存放在BAR空间MSI-X table structure
Message Data存放在MSI相关配置空间存放在BAR空间MSI-X table structure
Sataus相关存放在MSI相关配置空间存放在BAR空间PBA structure
每个设备支持的Vector数量322048
中断号连续?
  • 举个例子

说了这么多拿网卡举个例子吧。我们的I350网卡位于bus 3,device0,function 0。从配置空间可以看出网卡申请了一个BAR3,这正是MSI-X所使用的BAR3,MSI-X table structure存放在BAR3起始地址+0的位置,PBA structure存在BAR3起始地址+0x2000的位置。

我们来读一下该地址,发现使用的entry的message地址为LAPIC的地址。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注