MSI(Message Signaled Interrupt)/MSI-X

MSI(Message Signaled Interrupt)是PCI2.2提出的新的中断处理形式,即,有中断产生时在系统特定内存地址写入中断数据已通知CPU一个中断。该种方式脱离了中断引脚(PIN)带来的数目限制,并且延迟小、效率高。MSI的扩展MSI-X在3.0里定义,相较MSI,MSI-X支持更多的消息数量(2048)以及独立的消息地址。MSI支持32个消息,一个MSI地址。

PCI支持两种中断,INTx和MSI。疑义相对析:

1) 基于引脚的PCI中断往往被多个设备所共享,内核需要判断并调用相应的中断处理函数,这样效率就比较低。MSI不存在共享问题。中断共享的时候,中断触发以后,由于Linux并不知道是哪个设备产生的,所以要一一调用对应的ISR(interrupt service routines)来确定。

2) 当设备向内存写入数据,然后发起引脚中断时,有可能在CPU收到中断时,数据还未到达内存(在PCI-PCI桥后的设备更有可能如此)。为了保证数据已达 内存,中断处理程序必须轮询产生该中断的设备的一个寄存器,PCI事务保序规则会确保所有数据到达内存后,寄存器才会返回值。使用MSI时,产生中断的写不能越过数据写,因而避免了这个问题。当中断产生时,驱动可以确信所有数据已经到达内存。

3) 对于多功能PCI设备而言,每一个功能最多只有一个中断引脚。设备驱动程序必须查询设备产生的具体事件,势必降低中断处理速度。而一个设备可以支持最多32个MSI中断,每个中断有其特定功能,譬如,一些一场情况和错误处理有其单独的中断能让驱动程序处理如数据收发中断更有效。


内核选项为:CONFIG_PCI_MSI

dmesg | grep -i msi-x


http://saview.wordpress.com/2011/03/06/%E7%BD%91%E5%8D%A1%E4%B8%AD%E6%96%AD%E6%96%B9%E5%BC%8Fmsi-msi-x/

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值