Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3176
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5
  • 用 户 组: 普通用户
  • 注册时间: 2015-11-18 12:14
文章分类

全部博文(5)

文章存档

2015年(5)

我的朋友
最近访客

分类: LINUX

2015-11-18 12:31:49



关于pcie中断  

最近才开始接触到pcie的有关内容,先把基本的一些概念搞清楚,后续调完这个问题,再记录...

PCI支持两种中断,传统INTx中断和MSI中断。 比较两种中断能让我们了解PCI规范发展的来龙去脉,也能使我们把握PCI发展的技术方向。
什么是MSI
MSI 是 Message Signaled Interrupt (MSI) 的缩写,PCI设备写一个特定消息到特定地址,从而触发一个CPU中断.
MSI 相对于传统中断有三个主要优势:
其一,共享中断带来的性能损失:
传统中断的中断引脚常常被多个设备共享. 当中断触发时, 内核必须依次触发每个设备相应的中断处理,这必将损失系统的整体性能.  每个MSI中断属于设备所独有,因此不会产生共享中断带来的性能损失。
  
其二,传统中断超前产生,实际数据并未真正达到:
众所周之,中断通常是设备发送完数据后,给CPU一个中断通知CPU进行处理。但是这种看似简单的应用如果是传统中断也会产生问题,那就是,中断已经产生,并且数据也已经从设备发出,但是实际上并没有到达主存。这时候CPU是读不到它想要的数据的。在这种情况下,CPU必须从设备端读取寄存器来知道数据是否真的已经到达目的地,PCI事务排序规则确保该寄存器只有在数据真实到达之前才会更新。这是传统中断的另一弊端,而MSI中断因为与数据包共享同一通路并且有严格的先后顺序,所以不会出现这种问题,更不需要更新和查询设备端寄存器,从而节省了很多开销。


其三,每个设备最多只有四个传统中断引脚:
对于多功能PCI设备而言,每一个功能最多只有一个中断引脚。设备驱动程序必须查询设备产生的具体事件,势必降低中断处理速度。而一个设备可以支持最多32个MSI中断,每个中断有其特定功能,譬如,一些一场情况和错误处理有其单独的中断能让驱动程序处理如数据收发中断更有效。
阅读(1738) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~