gunl

导航

 
PCI支持两种中断,传统INTx中断和MSI中断。 比较两种中断能让我们了解PCI规范发展的来龙去脉,也能使我们把握PCI发展的技术方向。
什么是MSI
MSI 是 Message Signaled Interrupt (MSI) 的缩写,PCI设备写一个特定消息到特定地址,从而触发一个CPU中断.

MSI 相对于传统中断有三个主要优势:

其一,共享中断带来的性能损失:
传统中断的中断引脚常常被多个设备共享. 当中断触发时, 内核必须依次触发每个设备相应的中断处理,这必将损失系统的整体性能.  每个MSI中断属于设备所独有,因此不会产生共享中断带来的性能损失。
  
其二,传统中断超前产生,实际数据并未真正达到:
众所周之,中断通常是设备发送完数据后,给CPU一个中断通知CPU进行处理。但是这种看似简单的应用如果是传统中断也会产生问题,那就是,中断已经产生,并且数据也已经从设备发出,但是实际上并没有到达主存。这时候CPU是读不到它想要的数据的。在这种情况下,CPU必须从设备端读取寄存器来知道数据是否真的已经到达目的地,PCI事物排序规则确保该寄存器只有在数据真实到达之前才会更新。这是传统中断的另一弊端,而MSI中断因为与数据包共享同一通路并且有严格的先后顺序,所以不会出现这种问题,更不需要更新和查询设备端寄存器,从而节省了很多开销。

其三,每个设备最多只有四个传统中断引脚:
对于多功能PCI设备而言,每一个功能最多只有一个中断引脚。设备驱动程序必须查询设备产生的具体事件,势必降低中断处理速度。而一个设备可以支持最多32个MSI中断,每个中断有其特定功能,譬如,一些一场情况和错误处理有其单独的中断能让驱动程序处理如数据收发中断更有效。
posted on 2011-06-09 22:18  gunl  阅读(3046)  评论(0编辑  收藏  举报