MSI
1、什么是MSI?(Message Signaled Interrupts)
用简单的一句话就可以说明msi的原理:cpu有一段特殊的寄存器空间,往这个寄存器里面写数据,就会触发cpu的中断。pci设备经过配置以后,一旦需要上报中断就会往cpu这种寄存器里面写一个值,触发cpu的中断。
2、MSI和INTx的区别
MSI和INTx中断是pci/pcie总线的两种中断方式。 在PCI总线里面INTx中断是由四条可选的中断线决定的,这种中断方式是共享式的,所有的pci设备把中断信号在一条中短线上相与,再上报给cpu,cpu收到中断以后再查询具体是哪个设备产生了中断。 在PCIE总线里面已经没有了实体的INTx物理中断线了,PCIE标准使用专门的Message事务包来实现INTx中断,这是为了兼容以前的PCI软件。 MSI中断在PCI和PCIE中的机制都是一样的,往配置的CPU中断寄存器里进行memory写操作,来产生中断。
对于PCI设备来说,INTx和MSI中断两者只能选择一种,不能同时使用。比较来说,INTx是共享式的,cpu相应中断后还需要查询具体中断源,效率比较低。所以推荐使用MSI中断。