原创 PCI-Express总线的中断机制

2009-4-7 18:43 7956 8 9 分类: 通信

       PCI-Express总线的中断机制在PCI-X总线的基础上又进行了发展,PCI-X总线提出了传统PCI总线中断机制存在的低效问题,并且引入了MSI机制,通过“主动通知”的方法告诉处理器发生中断事件的中断向量号。PCI-Express是串行总线,该总线完全丢弃了传统PCI总线的INTA~INTD中断信号线,继承了PCI-X总线的MSI机制,并且兼容了传统设备的中断方法,提出了“虚拟中断线”的概念。因此,在以PCI-Express为核心的计算机体系结构中,传统的PCI设备还可以向处理器发送INTA的中断事件,但是这种中断事件会在PCI Bridge处被转换成“虚拟中断线”,即Bridge会向处理器发送一个中断消息。中断消息是一种TLP层的事务,这种中断消息(interrupt message)模拟了中断信号线的assertdeassert行为。


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


       MSI机制在前面的文章中有所阐述。MSIMessage Signal Interrupt)最早是在PCI-X中线中提出的,MSI机制的实现需要设备、桥以及PCI总线驱动的支持,在PCI设备中必须实现MSI的配置表单链,其本质是PCI配置空间的扩展,因为规范根本不知道一个设备可以支持多少中断,所以无法在配置空间中为其预留数据存储空间,因此采用了链表的数据存储方法。在配置空间中有MSI配置空间链表头,一个PCI设备需要申请多少中断向量,就需要在配置空间链表上挂接多少个MSI配置表单。简单示意图如下所示:


点击看大图


       PCI配置扫描软件在获取设备配置空间信息之后会扫描得到MSI配置链表,并且为每个MSI配置分配中断向量号以及设备向处理器提交中断向量号的地址信息。MSI配置空间很简单,其关键信息只有两项:一项为提交中断向量号的地址,该地址信息会兼容32位和64位系统;另一项就是具体的中断向量号。有了这两项信息之后,当一个设备需要向处理器发送中断请求时,只需向MSI配置空间中指定的地址空间写入CPU分配的中断向量号,然后根复合体会触发处理器的PCI中断。处理器进入PCI中断上下文,从触发事件的地址空间中获取中断向量号,然后直接调用发起中断请求设备的中断服务程序,无需中断事件的I/O查询,节约了中断处理的时间。


 


       PCI-Express的事务层来看,MSI中断机制采用存储器写的方式提交中断请求,没有采用TLP的消息机制(虚拟中断线的方法采用了消息机制)。采用MSI中断机制需要注意PCI-Express的请求乱序执行的机制。PCI-XPCI总线进行优化的过程中提出了请求乱序执行的方法,PCI-Express也继承了PCI-X的这一机制。交换节点在处理请求事务时会缓冲请求,并且引入QOS的机制,这样总线上的多个请求可能会被乱序执行。乱序执行会对MSI中断产生影响,因为MSI中断请求和普通的数据IO都可能是存储器写事务,如果MSI中断较引发中断的读写IO先抵达处理器,那么处理中断服务程序会处理老数据,因为新的数据可能还在总线上,这会导致错误的数据处理。这对该问题可以有两种解决方法,本质上都应用了TLP报文头中的TC标记。在PCI-Express规范中,交换节点对于具有相同TC标记的事务不会乱序处理,应用该特点可以解决上述问题。


 


       在如今的PCI-Express体系结构中还存在很多非PCI-Express的设备,为了兼容该类设备,PCI-Express协议规范提出了“虚拟中断线”的机制。该机制与传统的PCI中断机制类似,只不过将物理的中断线通过TLP消息来模拟。例如一个传统的PCI设备触发INTA向处理器提交中断请求,那么INTA信号会在PCI-Bridge处被转换成一个含有assert INTA的消息,最后由根复合体触发处理器。中断清除时设备再向处理器发送一个含有deassert INTA的消息。这种机制从软件的层面上来看没有变化,从硬件层面上来看,原来通过物理信号传播的INTA转变成了一个事件报文。对于交换节点而言,需要注意一个问题,传统INTA信号是共享的,也就是多个设备的INTA信号是开漏输出的电路形式,最后线与产生请求信号。所以,交换开关同样需要模拟这种行为,其向处理器提交的消息也需要经过“线与”处理,这对于交换开关来说也不是什么难题。


 


       PCI-Express的中断机制较传统PCI的中断机制复杂了不少,其主要采用如上两种机制。大家还有什么补充的?


 


(本文为《谈谈PCI-Express总线技术》的续文,未完待续。。。)


 

文章评论1条评论)

登录后参与讨论

用户377235 2013-3-14 16:59

写的非常的好,不知道还有没有其他的一些关于pcie的东西

相关推荐阅读
用户411565 2012-12-18 12:58
我的存储之道博客
大家好,最近一直在做存储方面的工作,所以我在51CTO上专门开辟了一个空间讨论存储相关的问题,喜欢存储的朋友可以可以访问我的存储博客: 存储之道 (http://alanwu.blog.51cto...
用户411565 2012-04-06 21:39
SAS Cable可以有多长?
SAS接口是高端硬盘的主流接口,是存储系统的理想选择。我们知道高速信号的传输距离和传输线相关的,那么SAS作为外部通信接口,其Cable线具体可以有多长呢? 我在网上找到上图所示的眼图测...
用户411565 2012-04-06 21:38
对TRIM SCSI命令的一些分析
前一段时间做了一些对SSD方面进行优化的工作,SSD最大的问题在于长时间使用之后,IO性能会急剧下降。其主要问题在于为了防止“写放大”问题的产生,SSD的firmware采用了类似于log方式的算...
用户411565 2012-04-06 21:35
惊叹!我们的跨洋网络
  每次地质自然灾害的时候,总会伴随着网络的问题,这是由于我们的越洋光纤网络出了故障,受到自然力的破坏而导致断裂。越洋光纤,听起来的确是件非常不可思议的事情,工程量非常的巨大,但正是如此伟大的...
用户411565 2012-04-06 21:33
科学仪器网络模型
科学仪器概述     科学仪器发展趋势 科学是从测量开始的,科学仪器是信息技术的源头,是信息产业的重要组成部分,是现代科学与工业的基石。科学仪器产业的发展关系到国家科学研究实力、生...
用户411565 2012-04-06 21:16
谈谈RAID产品与技术
说起RAID,学计算机的同学马上会说RAID技术简单啊,就是将数据条带化,然后计算一些冗余数据,一并写入磁盘。通过RAID技术一方面提高系统的IO性能;另一方面提高系统的可靠性。单纯从RAID的原...
我要评论
1
8
关闭 站长推荐上一条 /2 下一条