首页 > 代码库 > MSI/MSI-X

MSI/MSI-X

MSI

 PCI2.2规范引进了MSI作为传统的基于线的中断的替代方案。MSI允许设备通过向一个特定的地址写入一个特定的值来允许中断,而不是使用一个专有的引脚来触发中断。注意消息的目的地址和消息数据被当做向量。MSI比传统的中断提供了如下的关键优点:

  • 一个PCI功能可以请求多达32个MSI消息
  • 它们是带内消息,而不是使用引脚,而且选择在host 桥上的目标地址。
  • 它们可以和中断消息一起发送数据而且数据的负载是可变的。
  • 它们并不共享,因此指定给一个设备的MSI可以在系统内认为是唯一的。

MSI-X

PCI3.0定义了一个MSI的扩展形式,称作MSI-X,它解决了MSI的限制特性。比如,支持大量的CPU的基于NUMA的服务器被大量地部署,当前MSI中每个适配器功能只支持32个MSI消息的限制已经不大合适。MSI-X通过增加消息的数量到2048来解决这个限制。另一个例子是MSI只提供一个MSI地址这样所有的消息的目标是同一个CPU组。MSI-X通过为每个消息提供唯一的地址和值对克服了这个问题。PCI3.0里为MSI-X提供的核心改变如下:

  • 支持2048个消息而不是32个消息
  • 为每个消息提供一个独立的消息地址和消息数据
  • 支持每向量掩码

MSI/MSI-X