CN101872330B - 多pcie设备***中断处理方法 - Google Patents

多pcie设备***中断处理方法 Download PDF

Info

Publication number
CN101872330B
CN101872330B CN 200910250798 CN200910250798A CN101872330B CN 101872330 B CN101872330 B CN 101872330B CN 200910250798 CN200910250798 CN 200910250798 CN 200910250798 A CN200910250798 A CN 200910250798A CN 101872330 B CN101872330 B CN 101872330B
Authority
CN
China
Prior art keywords
interrupt
register
pcie
status register
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN 200910250798
Other languages
English (en)
Other versions
CN101872330A (zh
Inventor
栾焕志
赵先林
胡扬忠
邬伟琪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN 200910250798 priority Critical patent/CN101872330B/zh
Publication of CN101872330A publication Critical patent/CN101872330A/zh
Application granted granted Critical
Publication of CN101872330B publication Critical patent/CN101872330B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

本发明公开一种多PCIE设备***中断处理方法,涉及自动控制领域。预先设置中断寄存器和中断状态寄存器,中断状态寄存器的值按预设规则随中断寄存器值改变而改变;当PCIE设备产生中断时发送通知消息,消息中携带预先为PCIE设备配置的中断向量号及中断寄存器地址;主控端在接收到通知消息后,将中断向量号写入所述映射地址对应的中断寄存器;根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复中断处理程序对应PCIE设备的中断状态为未产生中断状态。能够处理多个PCIE设备同时产生的中断。且不支持MSI中断方式的PCIE设备能够应用本发明,提高***中断处理效率。

Description

多PCIE设备***中断处理方法
技术领域
本发明涉及自动控制领域,特别涉及一种多PCIE设备***中断处理方法。
背景技术
PCIE(个人计算机扩展总线接口)设备是新一代能够提供大量带宽和丰富功能以实现令人激动的新式图形应用的全新架构。参见图1,为多PCIE设备***的拓扑结构示意图,包括主控端和若干个作为终点(End Point)的PCIE设备,其中主控端包括CPU和PCIE主桥(PCIE host bridge),PCIE主桥主要用于实现CPU所支持CPU总线数据格式与各PCIE设备所支持数据格式间的数据转换,通常,还会包括PCIE Switch(交换器),用于协调多PCIE设备间数据交换。
当前,在多PCIE设备的***中,多个PCIE设备往往采用中断方式与主控端协作。目前PCIE设备支持的一种传统的中断处理方式主要是,***为PCIE设备提供4个中断信号,INTA、INTB、INTC、INTD,不同的PCIE设备会被配置到不同的中断信号上,当***中的PCIE设备多于4个时,需要采用共享中断的方式,即共享中断处理程序逐个检测共享该中断的多个PCIE设备的中断状态位,判断具体产生中断的PCIE设备,执行对应的中断处理程序。
在多PCIE设备的***中,多个PCIE设备同时产生中断时,由于需要共享中断处理程序逐个检测共享该中断的多个PCIE设备的中断状态寄存器,导致中断延时非常大,并且随着***中PCIE设备的增加急剧增大。
有些PCIE设备的硬件能够支持MSI(Message Signaled Interrupt,信息信号中断)中断方式,MSI中断方式的处理过程具体为:产生中断的PCIE设备生成MSI消息(MSI消息中携带有预先为该PCIE设备分配的中断向量号),PCIE主桥接收到MSI消息后,将中断向量号写入预先配置在***中的中断寄存器中,主控端便可以根据中断寄存器中的中断向量号调用中断处理程序。由于MSI中断方式中无需查询各个PCIE设备的中断状态位,节约了中断处理时间,解决了传统的中断处理方式的低效问题。
在实施本发明过程中,发明人发现现有技术中至少存在如下问题:当多个PCIE设备同时产生中断时,会产生多个MSI消息,PCIE主桥接收到多个MSI消息后,会将多个中断向量号顺序写入预先配置在***中的中断寄存器中,此时,由于主控端还未来得及处理前一个中断向量号对应的中断,后一个中断向量号便会覆盖中断寄存器中的前一个中断向量号,也就是说,对于支持MSI中断方式的主控端CPU而言,无法处理多个PCIE设备同时产生的中断。
发明内容
为解决上述技术问题,本发明提供一种多PCIE设备***中断处理方法。
一种多PCIE设备***中断处理方法,预先设置中断寄存器和用于记录产生中断的PCIE设备的中断状态寄存器,所述中断状态寄存器的值按预设规则随所述中断寄存器的值的改变而改变;所述方法包括:
当PCIE设备产生中断时发送通知消息,所述通知消息中携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址;
主控端在接收到通知消息后,将所述中断向量号写入所述映射地址对应的中断寄存器;根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态。
所述主控端包括CPU,与所述CPU相连的PCIE主桥,用于所述CPU所支持CPU总线数据格式与各PCIE设备所支持数据格式间的数据转换,和与所述CPU相连的可编程逻辑器件,在所述可编程逻辑器件中设置中断寄存器和中断状态寄存器。
所述主控端在接收到通知消息后,将所述中断向量号写入所述映射地址对应的中断寄存器;根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态,具体为:
所述PCIE主桥在接收到通知消息后,向所述可编程逻辑器件中的中断寄存器中写入所述中断向量号;
当所述中断状态寄存器的值发生改变时,所述可编程逻辑器件通过中断引脚向所述CPU触发中断请求;
所述CPU根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态。
当所述PCIE设备支持MSI中断方式时,将中断寄存器在PCIE空间的映射地址写入PCIE设备的Msi_Addr寄存器中;将中断向量号写入PCIE设备的Msi_Data寄存器中;且所述通知消息具体为MSI消息。
当所述PCIE设备不支持MSI中断方式时,预配置所述PCIE设备在产生中断时,发送携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址的通知消息;并将中断寄存器在PCIE空间的映射地址和中断向量号分别写入PCIE设备的两个寄存器中。
用所述中断状态寄存器中每一位的值对应标识一个PCIE设备的中断状态;所述中断寄存器至少包括:
中断状态寄存器选择段,用于选择中断状态寄存器;和
中断状态寄存器位选择段,用于选择中断状态寄存器中的位;则
所述中断状态寄存器的值按预设规则随所述中断寄存器的值的改变而改变具体为:
根据中断寄存器中所述中断状态寄存器选择段的值,选择对应的中断状态寄存器;
根据中断寄存器中所述中断状态寄存器位选择段的值,在选出的中断状态寄存器中选择对应的位;
将选出的所述位的值设置为预设值,用于标识该位对应的PCIE设备产生中断。
所述至少一个中断状态寄存器的位数相同,则
所述中断状态寄存器选择段的位数为Log2(N/M),当Log2(N/M)不是整数时,所述中断状态寄存器选择段的位数为Log2(N/M)向上取整,其中N为所述的多PCIE设备***支持的最大PCIE设备数,M为中断状态寄存器的位数。
注册中断处理程序具体为:
将为PCIE设备配置的中断向量号加上偏移量得到CPU中断号;所述偏移量为所述CPU自身支持的中断数量;
所述PCIE设备驱动程序向所述CPU中断号注册中断处理程序;
所述根据中断状态寄存器的值调用并执行预先注册的中断处理程序具体为:
根据所述中断状态寄存器的值计算写入所述中断寄存器中的中断向量号;
将所述中断向量号加上所述偏移量得到CPU中断号;
调用并执行向所述CPU中断号注册的中断处理程序。
所述CPU为可编程逻辑器件中每个中断状态寄存器分配一个中断引脚,则当某中断状态寄存器的值发生改变时,所述可编程逻辑器件通过该中断状态寄存器对应的中断引脚向所述CPU触发中断请求。
所述CPU为可编程逻辑器件分配一个中断引脚,则所述可编程逻辑器件中还设置有主中断状态寄存器,将所述中断引脚与主中断状态寄存器相连;
每个中断状态寄存器在所述主中断寄存器中有一位与其相对应,当某个中断状态寄存器的值发生改变时,设置所述主中断状态寄存器中对应位的值为约定值;则当主中断状态寄存器的值发生改变时,所述可编程逻辑器件通过所述中断引脚向所述CPU触发中断请求。
本发明提供的多PCIE设备***中断处理方法,有益效果是:由于本发明的多PCIE设备***中,预先设置中断寄存器和用于记录产生中断的PCIE设备的中断状态寄存器,且所述中断状态寄存器的值能按预设规则随所述中断寄存器的值的改变而改变。这样,当多个PCIE设备同时产生中断时,主控端接收到多个MSI消息后,会将多个中断向量号顺序写入中断寄存器中,每写入中断寄存器中一个中断向量号,中断状态寄存器会记录该中断向量号对应的产生中断的PCIE设备,则当多个中断向量号顺序写入中断寄存器后,虽然中断寄存器中后写入的值会覆盖前一个值,但是中断状态寄存器中却将全部产生中断的PCIE设备记录了下来,主控端便可以根据中断状态寄存器中的值处理同时产生的多个中断,从而使得多PCIE设备***能够处理多个PCIE设备同时产生的中断。
进一步的,当PCIE设备不支持MSI中断方式时,通过预配置所述PCIE设备,能够使其在产生中断时向主控端发送通知消息,将预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址告知主控端,从而能够使得主控端无需共享中断处理程序逐个检测共享该中断的多个PCIE设备的中断状态寄存器,大大缩短处理不支持MSI中断方式的PCIE设备的中断延时,提高***中断处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中多PCIE设备***的拓扑结构示意图;
图2为本发明实施例一提供一种多PCIE设备***中断处理方法流程图;
图3为本发明实施例二提供一种优选的多PCIE设备***中断处理方法流程图;
图4为本发明实施例二中主控端的一种优选结构框图;
图5为本发明实施例二中中断寄存器与中断状态寄存器的一种逻辑图;
图6为本发明实施例二中中断寄存器与中断状态寄存器的另一种逻辑图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在实施本发明过程中,发明人发现现有技术中至少存在如下问题:当多个PCIE设备同时产生中断时,会产生多个MSI消息,PCIE主桥接收到多个MSI消息后,会将多个中断向量号顺序写入预先配置在***中的中断寄存器中,此时,由于主控端还未来得及处理前一个中断向量号对应的中断,后一个中断向量号便会覆盖中断寄存器中的前一个中断向量号,也就是说,对于支持MSI中断方式的主控端CPU而言,无法处理多个PCIE设备同时产生的中断。进一步的,目前仅有少数的PCIE设备的硬件设计能够支持MSI中断方式,特别是嵌入式领域中应用的PCIE设备几乎都不支持MSI中断方式,只能采用传统中断方式。为解决上述技术问题,本发明实施例提出一种多PCIE设备***中断处理方法,详细描述如下。
实施例一
参见图2,本发明实施例提供一种多PCIE设备***中断处理方法,包括以下步骤:
步骤S201:预先设置中断寄存器,和用于记录产生中断的PCIE设备的中断状态寄存器,所述中断状态寄存器的值按预设规则随所述中断寄存器的值的改变而改变。
步骤S202:当PCIE设备产生中断时发送通知消息,所述通知消息中携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址。
步骤S203:主控端在接收到通知消息后,将所述中断向量号写入所述映射地址对应的中断寄存器;根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态。
可见,由于本发明实施例的多PCIE设备***中,预先设置中断寄存器和用于记录产生中断的PCIE设备的中断状态寄存器,且所述中断状态寄存器的值能按预设规则随所述中断寄存器的值的改变而改变。这样,当多个PCIE设备同时产生中断时,主控端接收到多个MSI消息后,会将多个中断向量号顺序写入中断寄存器中,每写入中断寄存器中一个中断向量号,中断状态寄存器会记录该中断向量号对应的产生中断的PCIE设备,则当多个中断向量号顺序写入中断寄存器后,虽然中断寄存器中后写入的值会覆盖前一个值,但是中断状态寄存器中却将全部产生中断的PCIE设备记录了下来,主控端便可以根据中断状态寄存器中的值处理同时产生的多个中断,从而使得多PCIE设备***能够处理多个PCIE设备同时产生的中断。
进一步的,当PCIE设备不支持MSI中断方式时,通过预配置所述PCIE设备,能够使其在产生中断时向主控端发送通知消息,将预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址告知主控端,从而能够使得主控端无需共享中断处理程序逐个检测共享该中断的多个PCIE设备的中断状态寄存器,大大缩短处理不支持MSI中断方式的PCIE设备的中断延时,提高***中断处理效率。
实施例二
参见图3,本发明实施例提供一种优选的多PCIE设备***中断处理方法,结合参见图4,优选的,主控端包括中央处理器CPU401,与CPU401相连的PCIE主桥402,用于CPU401所支持CPU总线数据格式与各PCIE设备所支持数据格式间的数据转换,和与CPU401相连的可编程逻辑器件403。当然,根据实际应用场景,在PCIE主桥402与各PCIE设备之间还可以包括PCIE Switch,用于协调多PCIE设备间数据交换。
优选的,所述可编程逻辑器件可以是CPLD或FPGA等。
在实际应用中,PCIE主桥402可以设置在主板上,也可以集成在CPU401中。
本发明实施例提供的方法包括如下步骤:
步骤S301:预先在可编程逻辑器件中设置中断寄存器,和用于记录产生中断的PCIE设备的中断状态寄存器。
优选的,用所述中断状态寄存器中每一位的值对应标识一个PCIE设备的中断状态;所述中断寄存器至少包括:中断状态寄存器选择段,用于选择中断状态寄存器;和中断状态寄存器位选择段,用于选择中断状态寄存器中的位。若中断寄存器中还剩余其它位的话,可以将其作为保留段。
进一步的,本实施例中,多个中断状态寄存器的位数均相同,则所述中断状态寄存器选择段的位数为Log2(N/M),当Log2(N/M)不是整数时,所述中断状态寄存器选择段的位数为Log2(N/M)向上取整,其中N为所述的多PCIE设备***支持的最大PCIE设备数,M为中断状态寄存器的位数。
中断状态寄存器的值按预设规则随所述中断寄存器的值的改变而改变,具体为:
根据中断寄存器中中断状态寄存器选择段的值,选择对应的中断状态寄存器;根据中断寄存器中中断状态寄存器位选择段的值,在选出的中断状态寄存器中选择对应的位;将选出的所述位的值设置为预设值,用于标识该位对应的PCIE设备产生中断。
比如,可以用“0”和“1”两个值分别标识对应PCIE设备未产生中断的状态和对应PCIE设备产生中断的状态,即用“1”作为预设值,用于标识该位对应的PCIE设备产生中断。实际应用中,也可以用其它值标识对应PCIE设备未产生/产生中断状态,本发明实施例对此不做限制。在本实施例中,以用“1”作为预设值,用于标识该位对应的PCIE设备产生中断,用“0”作为默认值,用于标识该位对应的PCIE设备未产生中断为例进行说明。
具体的,假设中断寄存器为32位(当然实际应用中,中断寄存器的位数也可以是64位等,可以依据实际应用场景确定,本发明实施例对此不做限定。这里,中断寄存器的位数选为32位通常已经可以满足现有多PCIE设备***的需求),中断状态寄存器的位宽可以选为8位、16位、或者32位等等,中断状态寄存器的位宽通常由访问可编程逻辑器件的PCIE主桥控制器(Device Controller)所支持的位宽决定,这里设定中断状态寄存器的位宽为M,本多PCIE设备***所支持的最多PCIE中断数为N,两类寄存器的定义如下:
1)中断寄存器:该寄存器分为三段,第一段为中断状态寄存器位选择段,用来选择一个中断状态寄存器中的某一位,该段的位数为Log2M,即0~Log2M-1;第二段为中断状态寄存器选择段,该段的位数为Log2(N/M),即,Log2M~Log2N-1。中断寄存器中的其它位为第三段,即Log2N~32,用于保留。假设中断状态寄存器的位数为32(M=32),***所支持的最大PCIE设备中断数为128(N=128),则需要4(128/32)个中断状态寄存器,第一段的位数为5位,为bit0~bit4(Log232-1),第二段的位数为2(Log2(128/32)),为bit5(Log232)~bit6(Log2128-1)。也就是说,根据中断寄存器中所述中断状态寄存器选择段的值,选择对应的中断状态寄存器:当中断寄存器的中断状态寄存器选择段的值为0x00时,表示选择第1个中断状态寄存器;当中断寄存器的中断状态寄存器选择段的值为0x01时,表示选择第2个中断状态寄存器;当中断寄存器的中断状态寄存器选择段的值为0x10时,表示选择第3个中断状态寄存器;当中断寄存器的中断状态寄存器选择段的值为0x11时,表示选择第4个中断状态寄存器,等等,依此类推,不再赘述。
根据中断寄存器中所述中断状态寄存器位选择段的值,在选出的中断状态寄存器中选择对应的位:当中断寄存器的中断状态寄存器位选择段的值为00000(二进制)时,表示选择该中断状态寄存器的第1位;当中断寄存器的中断状态寄存器位选择段的值为0x00001时,表示选择该中断状态寄存器的第2位;当中断寄存器的中断状态寄存器位选择段的值为00010(二进制)时,表示选择该中断状态寄存器的第3位;当中断寄存器的中断状态寄存器位选择段的值为00011(二进制)时,表示选择该中断状态寄存器的第4位,等等,依此类推,不再赘述。
2)中断状态寄存器:该寄存器的每一位保存着一个对应的MSI中断向量号,其中第一个中断状态寄存器保存的PCIE设备的MSI中断向量号为1~32,第二个中断寄存器保存的PCIE设备的MSI中断向量号为33~64,以此类推。该寄存器的每一位的值可以通过中断寄存器设置,当中断寄存器的值被修改时,中断状态寄存器中相应的位就会被设置为1。
步骤S302:将中断寄存器映射到PCIE空间中,为各PCIE设备配置中断向量号,并将中断寄存器在PCIE空间的映射地址及中断向量号写入各PCIE设备。
通过设置相关寄存器的值,将中断寄存器映射到PCIE空间中,以便***中其它设备可以访问。
优选的,为各PCIE设备配置的中断向量号根据中断寄存器中断状态寄存器选择段及中断状态寄存器位选择段的定义,计算得到,比如:
为第1个中断状态寄存器的第1位对应PCIE设备分配的中断向量号为0x0000000,其中bit0-bit4为中断状态寄存器位选择段的值,bit5-bit6为中断状态寄存器选择段的值。
为第2个中断状态寄存器的第1位对应PCIE设备分配的中断向量号为0100000(二进制),其中bit0-bit4为中断状态寄存器位选择段的值,bit5-bit6为中断状态寄存器选择段的值。
为第1个中断状态寄存器的第2位对应PCIE设备分配的中断向量号为0x0000001,其中bit0-bit4为中断状态寄存器位选择段的值,bit5-bit6为中断状态寄存器选择段的值。
等等,依此类推,不再赘述。
本发明实施例中,当PCIE设备支持MSI中断方式时,将中断寄存器在PCIE空间的映射地址写入PCIE设备的Msi_Addr寄存器中;将中断向量号写入PCIE设备的Msi_Data寄存器中。
而当PCIE设备不支持MSI中断方式时,将中断寄存器在PCIE空间的映射地址和中断向量号分别写入PCIE设备的两个寄存器中;并需要预配置所述PCIE设备在产生中断时,发送携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址的通知消息,而不直接采用传统INTA、INTB、INTC、INTD的中断方式。
可见,当PCIE设备不支持MSI中断方式时,通过预配置所述PCIE设备,能够使其在产生中断时向主控端发送通知消息,将预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址告知主控端,从而能够使得主控端CPU无需共享中断处理程序逐个检测共享该中断的多个PCIE设备的中断状态寄存器,大大缩短处理不支持MSI中断方式的PCIE设备的中断延时,提高***中断处理效率。
本发明实施例中并不限制步骤S301和步骤S302的顺序,可以先执行步骤S301,再执行步骤S302;也可以先执行步骤S302,再执行步骤S301;还可以同时执行。
步骤S303:在各PCIE设备中注册中断处理程序。
优选的,在PCIE设备中注册中断处理程序的方法可以是:
(1)将为PCIE设备配置的中断向量号加上偏移量得到CPU中断号;其中偏移量为主控端CPU自身支持的中断数量。由于可编程逻辑器件中设置的中断寄存器和中断状态寄存器为在主控端CPU外新扩展的MSI中断,则对于主控端CPU而言,可编程逻辑器件中扩展的MSI中断所使用的中断号,应为在中断向量号的基础上加上PCIE主桥自身支持的MSI中断数量。
(2)所述PCIE设备驱动程序向所述CPU中断号注册中断处理程序。
步骤S304:当PCIE设备产生中断时发送通知消息,所述通知消息中携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址。
优选的,当PCIE设备支持MSI中断方式时,所述通知消息具体为MSI消息。
步骤S305:所述PCIE主桥在接收到通知消息后,向所述可编程逻辑器件中的中断寄存器中写入所述中断向量号。
当中断寄存器中写入中断向量号时,中断状态寄存器的值便会相应改变,具体的:首先,根据中断寄存器中所述中断状态寄存器选择段的值,选择对应的中断状态寄存器;再次,根据中断寄存器中所述中断状态寄存器位选择段的值,在选出的中断状态寄存器中选择对应的位;最后,将选出的所述位的值设置为预设值(比如置1),用于标识该位对应的PCIE设备产生中断。
中断寄存器用来记录通知消息发送过来的数据(中断向量号),并根据数据的内容来将相应的中断状态寄存器中的某一位设置为1,这样就记录了相应产生中断的PCIE设备。
当多个PCIE设备同时产生中断时,PCIE主桥将接收到的多个中断向量号顺序写入中断寄存器中,每写入中断寄存器中一个中断向量号,中断状态寄存器会记录该中断向量号对应的产生中断的PCIE设备,则当多个中断向量号顺序写入中断寄存器后,虽然中断寄存器中后写入的值会覆盖前一个值,但是中断状态寄存器中却将全部产生中断的PCIE设备记录了下来,比如,若中断向量号0000000(二进制)对应的PCIE设备、中断向量号0100000(二进制)对应的PCIE设备、及中断向量号0000001(二进制)对应的PCIE设备同时产生中断,则主控端CPU按顺序将中断向量号0000000(二进制)、0100000(二进制)、0000001(二进制)写入中断寄存器,当将中断向量号0000000(二进制)写入中断寄存器时,对应第1个中断状态寄存器的第1位被置1,当将中断向量号0100000(二进制)写入中断寄存器时,对应第2个中断状态寄存器的第1位被置1,当将中断向量号0000001(二进制)写入中断寄存器时,对应第1个中断状态寄存器的第2位被置1,则当将接收到的中断向量号全部写入中断寄存器后,对应的中断状态寄存器中便记录了全部产生中断的PCIE设备(中断状态寄存器中的值不会覆盖,只有在对应的中断被处理后才会被清掉,重新被置0)。
步骤S306:当所述中断状态寄存器的值发生改变时,所述可编程逻辑器件通过中断引脚向主控端CPU触发中断请求。
所述主控端CPU为可编程逻辑器件中每个中断状态寄存器分配一个中断引脚,当某中断状态寄存器的值发生改变时,所述可编程逻辑器件通过该中断状态寄存器对应的中断引脚向主控端CPU触发中断请求。图5中,每个中断状态寄存器对应一个中断引脚,当中断状态寄存器中至少有1位被置1时,该中断寄存器对应的中断引脚就产生中断。
但是在某些***中由于可编程逻辑器件的引脚或者***中断数的限制无法为每一个中断状态寄存器提供一个中断引脚,在这样的***可以为多个中断状态寄存器分配一个中断引脚。当主控端CPU为可编程逻辑器件分配一个中断引脚,则所述可编程逻辑器件中还设置有主中断状态寄存器,将所述中断引脚与主中断状态寄存器相连;每个中断状态寄存器在所述主中断寄存器中有一位与其相对应,当某个中断状态寄存器的值发生改变时,设置所述主中断状态寄存器中对应位的值为约定值(比如置1);则当主中断状态寄存器的值发生改变时,所述可编程逻辑器件通过所述中断引脚向主控端CPU触发中断请求。参见图6,为多个中断状态寄存器提供了一个中断引脚,此时需增加一个主中断状态寄存器,每个中断状态寄存器在主中断状态寄存器都有一位与其相对应,当某个中断状态寄存器中至少有一位被设置为1时,在主中断寄存器中与其对应的相应位就会被设置为1,同时当主中断寄存器中至少有一位为1时该中断引脚就会产生中断。
步骤S307:主控端CPU根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态。
优选的,根据中断状态寄存器的值调用并执行预先注册的中断处理程序可以包括如下步骤:
(1)根据所述中断状态寄存器的值计算写入所述中断寄存器中的中断向量号。
(2)将所述中断向量号加上所述偏移量得到CPU中断号。
(3)调用并执行向所述CPU中断号注册的中断处理程序。
对于图5所示逻辑结构而言,在中断分配函数中根据引发中断的中断引脚,确定引发中断的中断状态寄存器,然后读取该中断状态寄存器的值,进一步确定产生中断的MSI中断向量号,计算出对应的CPU中断号,最后调用并执行与该CPU中断号对应的中断处理程序。
对于图6所示逻辑结构而言,在中断分配函数中首先要读取主中断状态寄存器,根据其内容确定引发中断的中断状态寄存器,然后读取该中断状态寄存器的值,进一步确定产生中断的MSI中断向量号,计算出对应的CPU中断号,最后调用并执行与该CPU中断号对应的中断处理程序。
在本实施例中,修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态具体为,将被调用并执行的中断处理程序对应的中断状态寄存器中的位的值置0。
本发明实施例中,主控端CPU还可以为不同的中断向量号设置优先级,则主控端CPU便可以按不同的优先级顺序判断产生中断的CPU中断号,进一步扩展本实施例的应用。
由于本发明实施例的多PCIE设备***中,预先设置中断寄存器和用于记录产生中断的PCIE设备的中断状态寄存器,且所述中断状态寄存器的值能按预设规则随所述中断寄存器的值的改变而改变。这样,当多个PCIE设备同时产生中断时,主控端接收到多个MSI消息后,会将多个中断向量号顺序写入中断寄存器中,每写入中断寄存器中一个中断向量号,中断状态寄存器会记录该中断向量号对应的产生中断的PCIE设备,则当多个中断向量号顺序写入中断寄存器后,虽然中断寄存器中后写入的值会覆盖前一个值,但是中断状态寄存器中却将全部产生中断的PCIE设备记录了下来,主控端便可以根据中断状态寄存器中的值处理同时产生的多个中断,从而使得多PCIE设备***能够处理多个PCIE设备同时产生的中断。
进一步的,当PCIE设备不支持MSI中断方式时,通过预配置所述PCIE设备,能够使其在产生中断时向主控端发送通知消息,将预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址告知主控端,从而能够使得主控端无需共享中断处理程序逐个检测共享该中断的多个PCIE设备的中断状态寄存器,大大缩短处理不支持MSI中断方式的PCIE设备的中断延时,在中断产生时只需读取中断状态寄存器中的值即可确定产生中断的PCIE设备,并且中断处理的时延不会随着***中的PCIE设备的增多而增加,从而提高***中断处理效率。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括若干指令用以执行本发明各个实施例所述的方法。这里所述的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (8)

1.一种快捷外设互联标准PCIE设备***中断处理方法,其特征在于,预先设置中断寄存器和用于记录产生中断的PCIE设备的中断状态寄存器,所述中断状态寄存器中每一位的值对应标识一个PCIE设备的中断状态;所述中断寄存器至少包括:中断状态寄存器选择段,用于选择中断状态寄存器;和中断状态寄存器位选择段,用于选择中断状态寄存器中的位;
将中断寄存器映射到PCIE空间中,为各PCIE设备配置中断向量号,并将中断寄存器在PCIE空间的映射地址及中断向量号写入各PCIE设备;
所述中断状态寄存器的值按预设规则随所述中断寄存器的值的改变而改变;具体为,根据中断寄存器中中断状态寄存器选择段的值,选择对应的中断状态寄存器;根据中断寄存器中中断状态寄存器位选择段的值,在选出的中断状态寄存器中选择对应的位;将选出的所述位的值设置为预设值,用于标识该位对应的PCIE设备是否产生中断;
所述方法包括:
当PCIE设备产生中断时发送通知消息,所述通知消息中携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址;
主控端在接收到通知消息后,将所述中断向量号写入所述映射地址对应的中断寄存器;根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态。
2.根据权利要求1所述的快捷外设互联标准PCIE设备***中断处理方法,其特征在于,所述主控端包括中央处理器CPU,与所述CPU相连的PCIE主桥,用于所述CPU所支持CPU总线数据格式与各PCIE设备所支持数据格式间的数据转换,和与所述CPU相连的可编程逻辑器件,在所述可编程逻辑器件中设置中断寄存器和中断状态寄存器。
3.根据权利要求2所述的快捷外设互联标准PCIE设备***中断处理方法,其特征在于,所述主控端在接收到通知消息后,将所述中断向量号写入所述映射地址对应的中断寄存器;根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态,具体为:
所述PCIE主桥在接收到通知消息后,向所述可编程逻辑器件中的中断寄存器中写入所述中断向量号;
当所述中断状态寄存器的值发生改变时,所述可编程逻辑器件通过中断引脚向所述CPU触发中断请求;
所述CPU根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态。
4.根据权利要求3所述的快捷外设互联标准PCIE设备***中断处理方法,其特征在于,当所述PCIE设备支持信息信号中断MSI中断方式时,将中断寄存器在PCIE空间的映射地址写入PCIE设备的地址寄存器寄存器中;将中断向量号写入PCIE设备的数据寄存器寄存器中;且所述通知消息具体为MSI消息。
5.根据权利要求4所述的快捷外设互联标准PCIE设备***中断处理方法,其特征在于,当所述PCIE设备不支持MSI中断方式时,预配置所述PCIE设备在产生中断时,发送携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址的通知消息;并将中断寄存器在PCIE空间的映射地址和中断向量号分别写入PCIE设备的两个寄存器中。
6.根据权利要求3所述的快捷外设互联标准PCIE设备***中断处理方法,其特征在于,用所述中断状态寄存器中每一位的值对应标识一个PCIE设备的中断状态;所述中断寄存器至少包括:
中断状态寄存器选择段,用于选择中断状态寄存器;和
中断状态寄存器位选择段,用于选择中断状态寄存器中的位;则
所述中断状态寄存器的值按预设规则随所述中断寄存器的值的改变而改变具体为:
根据中断寄存器中所述中断状态寄存器选择段的值,选择对应的中断状态寄存器;
根据中断寄存器中所述中断状态寄存器位选择段的值,在选出的中断状态寄存器中选择对应的位;
将选出的所述位的值设置为预设值,用于标识该位对应的PCIE设备产生中断。
7.根据权利要求6所述的快捷外设互联标准PCIE设备***中断处理方法,其特征在于,多个中断状态寄存器的位数均相同,则
所述中断状态寄存器选择段的位数为Log2(N/M),当Log2(N/M)不是整数时,所述中断状态寄存器选择段的位数为Log2(N/M)向上取整,其中N为所述的多PCIE设备***支持的最大PCIE设备数,M为中断状态寄存器的位数。
8.根据权利要求6所述的快捷外设互联标准PCIE设备***中断处理方法,其特征在于,注册中断处理程序具体为:
将为PCIE设备配置的中断向量号加上偏移量得到CPU中断号;所述偏移量为所述CPU自身支持的中断数量;
所述PCIE设备驱动程序向所述CPU中断号注册中断处理程序;
所述根据中断状态寄存器的值调用并执行预先注册的中断处理程序具体为:
根据所述中断状态寄存器的值计算写入所述中断寄存器中的中断向量号;
将所述中断向量号加上所述偏移量得到CPU中断号;
调用并执行向所述CPU中断号注册的中断处理程序。
CN 200910250798 2009-11-04 2009-12-11 多pcie设备***中断处理方法 Active CN101872330B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910250798 CN101872330B (zh) 2009-11-04 2009-12-11 多pcie设备***中断处理方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN200910209358 2009-11-04
CN200910209358.4 2009-11-04
CN 200910250798 CN101872330B (zh) 2009-11-04 2009-12-11 多pcie设备***中断处理方法

Publications (2)

Publication Number Publication Date
CN101872330A CN101872330A (zh) 2010-10-27
CN101872330B true CN101872330B (zh) 2012-07-25

Family

ID=42997197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910250798 Active CN101872330B (zh) 2009-11-04 2009-12-11 多pcie设备***中断处理方法

Country Status (1)

Country Link
CN (1) CN101872330B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105993009A (zh) * 2013-11-18 2016-10-05 华为技术有限公司 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9128920B2 (en) * 2011-11-30 2015-09-08 Marvell World Trade Ltd. Interrupt handling systems and methods for PCIE bridges with multiple buses
CN103440188B (zh) * 2013-08-29 2016-09-28 福建星网锐捷网络有限公司 一种pcie硬件故障的检测方法及装置
EP2961098B1 (en) * 2014-04-02 2017-06-14 Huawei Technologies Co. Ltd. Method, device and system for processing pcie link failure
CN107889280B (zh) * 2014-08-22 2021-06-25 安科讯(福建)科技有限公司 自适应信号最佳路径选择的wlan室外无线接入点装置
CN104679687B (zh) * 2014-12-19 2018-04-20 杭州华为数字技术有限公司 一种识别中断源的方法及装置
CN104683229A (zh) * 2015-02-04 2015-06-03 金万益有限公司 快速进行数据传输的方法
CN105550091A (zh) * 2015-09-03 2016-05-04 刘晓建 一种PCI/PCIe设备状态的监测卡及千兆网卡链路监测方法
CN105426337A (zh) * 2015-10-29 2016-03-23 上海飞斯信息科技有限公司 一种通用处理模块
EP3286637B1 (en) * 2016-02-04 2023-04-05 Hewlett Packard Enterprise Development LP Memory register interrupt based signaling and messaging
CN107168895B (zh) * 2016-03-07 2020-03-13 龙芯中科技术有限公司 控制外部设备的方法、桥片及***
CN108628782B (zh) * 2018-03-27 2024-03-15 天津麒麟信息技术有限公司 一种基于飞腾平台的中断转换机制的实现方法
CN111723032B (zh) * 2019-03-21 2021-09-24 杭州宏杉科技股份有限公司 一种中断管控方法及电子设备
CN110399324A (zh) * 2019-06-28 2019-11-01 苏州浪潮智能科技有限公司 中断转换器及中断转换方法
CN111078597B (zh) * 2019-12-04 2021-07-30 江苏芯盛智能科技有限公司 一种中断消息生成装置、方法以及端设备
CN112631883B (zh) * 2020-12-15 2023-10-13 成都海光集成电路设计有限公司 一种PCIe数据传输压力制造方法、***及电子设备
CN114546912A (zh) * 2022-01-17 2022-05-27 飞腾信息技术有限公司 一种用于服务器***的中断拓展方法
CN114265800B (zh) * 2022-03-02 2022-06-07 山东云海国创云计算装备产业创新中心有限公司 中断消息处理方法、装置、电子设备及可读存储介质
CN118260224A (zh) * 2022-12-28 2024-06-28 华为技术有限公司 上报中断的方法、中断的配置方法和装置
CN117873672A (zh) * 2023-12-26 2024-04-12 象帝先计算技术(重庆)有限公司 中断处理***、组件、设备、方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1052202A (zh) * 1989-11-03 1991-06-12 国际商业机器公司 可编程中断控制器
CN1298519A (zh) * 1998-04-29 2001-06-06 英特尔公司 中断控制器
CN1894680A (zh) * 2003-12-19 2007-01-10 英特尔公司 驱动程序透明的消息信号中断
CN101211323A (zh) * 2006-12-28 2008-07-02 联想(北京)有限公司 一种硬件中断的处理方法和处理装置
CN100416530C (zh) * 2003-08-09 2008-09-03 得州仪器公司 在PCI-Express环境中通知串行中断的方法以及桥接设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1052202A (zh) * 1989-11-03 1991-06-12 国际商业机器公司 可编程中断控制器
CN1298519A (zh) * 1998-04-29 2001-06-06 英特尔公司 中断控制器
CN100416530C (zh) * 2003-08-09 2008-09-03 得州仪器公司 在PCI-Express环境中通知串行中断的方法以及桥接设备
CN1894680A (zh) * 2003-12-19 2007-01-10 英特尔公司 驱动程序透明的消息信号中断
CN101211323A (zh) * 2006-12-28 2008-07-02 联想(北京)有限公司 一种硬件中断的处理方法和处理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105993009A (zh) * 2013-11-18 2016-10-05 华为技术有限公司 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置
CN105993009B (zh) * 2013-11-18 2019-04-19 华为技术有限公司 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置

Also Published As

Publication number Publication date
CN101872330A (zh) 2010-10-27

Similar Documents

Publication Publication Date Title
CN101872330B (zh) 多pcie设备***中断处理方法
KR100762388B1 (ko) 낮은 오버헤드 프로세서 인터페이싱
CN101390057B (zh) 两级中断服务例程
JPWO2009133669A1 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
JP5507317B2 (ja) マイクロコンピュータ及び割込み制御方法
CN101634974A (zh) 一种多中断类型的处理方法、装置和***
CN103077140A (zh) 一种机器人运动控制卡与上位机的通信方法及通信装置
CN103455363A (zh) 一种虚拟机的指令处理方法、装置及物理主机
CN106489132A (zh) 读写数据的方法、装置、存储设备和计算机***
CN103019848B (zh) 一种pci总线非向量中断实现方法
CN111913898A (zh) 使用端点的pcie根复合体消息中断产生方法
KR101673247B1 (ko) 할당가능 범용 레지스터 셋트를 갖는 프로세서
CN113282397B (zh) 外设的中断处理方法及设备
CN102622274A (zh) 计算机装置及其中断任务分配方法
CN102473136A (zh) 存储器管理装置、存储器管理方法、存储器管理程序、记录存储器管理程序的可由计算机读取的记录介质以及集成电路
CN101645051A (zh) 一种gpio中断控制装置、芯片及一种gpio中断控制方法
CN101814011A (zh) Usb主机控制器以及用于usb主机控制器的控制方法
KR100528476B1 (ko) 컴퓨터 시스템의 인터럽트 처리 장치
CN102117261B (zh) 一种芯片内部处理器之间的通信方法
US10162530B2 (en) Computer and computer system for collision determination of a command identifier
JP2010244164A (ja) Dmaコントローラ、情報処理装置、及びdma管理方法
CN104123261B (zh) 一种电子设备及信息传送方法
JP2014038438A (ja) 演算処理装置、情報処理装置及び割込制御方法
CN105159859A (zh) 基于接口扩展的数据处理***及方法
CN217085748U (zh) 处理器、主板及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20101027

Assignee: The anti-Technology Service Co., Ltd in guarantor Tai'an, Haikang, Fuyang

Assignor: Hangzhou Hikvision Digital Technology Co., Ltd.

Contract record no.: 2014990000024

Denomination of invention: Interrupt processing method of multi-PCIE (Peripheral Component Interface Express) equipment system

Granted publication date: 20120725

License type: Exclusive License

Record date: 20140113

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model