MSI-X中断的好处
2015-09-10 15:30
218 查看
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中断,每个中断有其特定功能,譬如,一些一场情况和错误处理有其单独的中断能让驱动程序处理如数据收发中断更有效。
PCI支持两种中断,INTx和MSI。疑义相对析:
1) 基于引脚的PCI中断往往被多个设备所共享,内核需要判断并调用相应的中断处理函数,这样效率就比较低。MSI不存在共享问题。中断共享的时候,中断触发以后,由于Linux并不知道是哪个设备产生的,所以要一一调用对应的ISR(interrupt service routines)来确定。
2) 当设备向内存写入数据,然后发起引脚中断时,有可能在CPU收到中断时,数据还未到达内存(在PCI-PCI桥后的设备更有可能如此)。为了保证数据已达 内存,中断处理程序必须轮询产生该中断的设备的一个寄存器,PCI事务保序规则会确保所有数据到达内存后,寄存器才会返回值。使用MSI时,产生中断的写不能越过数据写,因而避免了这个问题。当中断产生时,驱动可以确信所有数据已经到达内存。
3) 对于多功能PCI设备而言,每一个功能最多只有一个中断引脚。设备驱动程序必须查询设备产生的具体事件,势必降低中断处理速度。而一个设备可以支持最多32个MSI中断,每个中断有其特定功能,譬如,一些一场情况和错误处理有其单独的中断能让驱动程序处理如数据收发中断更有效。
相关文章推荐
- mac 桌面美化
- 详解C++中的内联函数和函数重载
- java中日期格式转换
- Square:从今天开始抛弃Fragment吧!
- 【Spring】Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决
- 客户端 适应不同大小屏幕
- WebService SendTimeout 超时问题
- [LeetCode] Minimum Path Sum
- LVM实现逻辑卷镜像
- 按行政区域范围下载并裁剪卫星地图数据教程
- 浅谈游戏服务器端编程(1)
- CompCars模型测试
- easyui之 combobox自动补全(多选)
- Android自定义View和控件之一-定制属于自己的UI
- linux 启动weblogic的某服务报错
- hdu 2232 矩阵 ***
- WPF实现炫酷Loading控件
- CALayer4-自定义层
- 浅谈MMORPG游戏服务器端的设计
- freemarker IDE 安装