发明内容
有鉴于此,本申请的目的在于提供一种中断消息处理方法、中断消息处理装置、电子设备及计算机可读存储介质,提高中断消息的处理速度。
为解决上述技术问题,本申请提供了一种中断消息处理方法,应用于中断消息接收器,所述中断消息接收器与目标总线连接,所述目标总线与主机和目标设备相连,所述方法包括:
若从所述目标总线上获取到所述主机发送的中断处理请求,则确定中断地址空间;
若从所述目标总线上获取到所述目标设备发送的中断消息,则响应所述中断消息;其中,所述中断消息的写目的地址处于所述中断地址空间内。
可选地,所述确定中断地址空间,包括:
获取所述主机发送的地址空间信息;
基于所述地址空间信息确定所述中断地址空间。
可选地,所述确定中断地址空间,包括:
检测空闲地址空间;
在所述空闲地址空间中划分得到所述中断地址空间。
可选地,还包括:
将所述中断地址空间上报至所述主机,以便所述主机基于所述中断地址空间对所述目标设备进行配置。
可选地,所述从所述目标总线上获取到所述目标设备发送的中断消息,包括:
从所述目标总线上获取初始消息,并提取所述初始消息的写目的地址;
利用所述写目的地址和所述中断地址空间的基地址得到偏移地址;
若所述偏移地址处于所述中断地址空间的空间长度内,则确定所述初始消息为中断消息,并利用所述偏移地址确定所述初始消息由所述目标设备发送。
可选地,所述中断地址空间包括非连续地址空间,所述方法还包括:
生成所述非连续地址空间对应的地址表;
通过与所述目标设备之间的点对点通道向所述目标设备发送所述地址表。
可选地,所述响应所述中断消息,包括:
确定所述中断消息对应的中断服务类型;
基于所述中断服务类型确定响应资源,并调用所述响应资源以对所述中断消息进行响应。
本申请还提供了一种中断消息处理装置,应用于中断消息接收器,所述中断消息接收器与目标总线连接,所述目标总线与主机和目标设备相连,所述装置包括:
地址空间确定模块,用于若从所述目标总线上获取到所述主机发送的中断处理请求,则确定中断地址空间;
响应模块,用于若从所述目标总线上获取到所述目标设备发送的中断消息,则响应所述中断消息;其中,所述中断消息的写目的地址处于所述中断地址空间内。
本申请还提供了一种电子设备,包括存储器和处理器,其中:
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序,以实现上述的中断消息处理方法。
本申请还提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的中断消息处理方法。
本申请提供的中断消息处理方法,应用于中断消息接收器,中断消息接收器与目标总线连接,目标总线与主机和目标设备相连,方法包括:若从目标总线上获取到主机发送的中断处理请求,则确定中断地址空间;若从目标总线上获取到目标设备发送的中断消息,则响应中断消息;其中,中断消息的写目的地址处于中断地址空间内。
可见,该方法设置了独立于主机之外的中断消息接收器,该中断消息接收器在获取到主机发送的终端处理请求后,可以确定用于提供中断服务的中断地址空间,目标设备可以在目标总线上发送写目的地址位于中断地址空间内的消息。中断消息接收器在检测到目标设备发送的中断消息后,可以对其进行响应。通过确定中断地址空间,允许目标设备利用中断地址空间向中断消息接收器发送中断消息,完成中断消息从主机到中断消息接收器的转移,由中断消息接收器来处理中断消息,可以提高中断消息的处理速度,降低时延,解决了因主机计算资源不足导致的中断消息处理速度慢、时延长的问题。
此外,本申请还提供了一种中断消息处理装置、电子设备及计算机可读存储介质,同样具有上述有益效果。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在PCIe总线中,MSI和MSIX中断被大量的使用。当PCIe设备有事件产生且需要被主机软件服务时,PCIe设备使用MSI或MSIX机制向主机发送中断消息。这种消息基于的是标准的PCIe memory Write TLP数据包,这种数据包在PCIe总线中按照写目标地址来路由。与此相对应的,在主机侧的PCIe空间上有一段特定的memory(即内存)空间,当有memory write(即写内存)动作落到这个空间时,写目标地址对应的中断会被激活。根据主机架构的不同,这个中断通过信号或者消息的方式被传递,最终通过主机上的中断控制器投递至指定的CPU或者CPU组进行响应。
请参考图1,图1为本申请实施例提供的一种相关中断消息处理过程数据流向图。在一个PCIe总线中,Root Complex (RC)根节点(即图1中的PCIe根复合体)向下可以连接1级或多级PCIe switch,而各级switch的下行端口可以连接不同的PCIe设备。如图1所示的PCIe拓扑为一级Swtich,Switch的下游(即下行端口)连接有三个PCIe设备。这些设备具体可以是网卡、非易失存储器、GPU(graphics processing unit,图形处理器)或其他设备。一般的,当主机软件使用这些设备时,需要通过RC->Switch->Device(即设备)这个路径来进行访问。针对不同的设备,传输的数据类型不同,例如对于PCIe网卡来说传输的就是网络数据包,对于非易失存储器来说传输的就是文件或数据块。当有数据需要在多个PCIe设备之间传递的时候,例如从网络收到的数据需要写入非易失存储器的某个存储空间,数据就需要经历一个冗长的路径,即从网卡->Switch->RC->Host->RC->Switch->非易失存储器。当多个设备之间有大量数据需要传递时,所有的数据都需要从Root complex到主机内存进行转发,这样一来对RC的PCIe链路和主机内存的带宽带来很大的压力。而且由于路径较长,数据传输的时延也会较大。
对于中断消息来说,即对于PCIe设备产生的MSI/MSIX中断来说,需要向RC发送进而由主机处理。Host(即主机)仍需处理和响应中断,没有完全释放Host。主机无法提供所有的资源用于处理中断消息,因此处理速度上限较低,当Host处理的中断消息到达速度上限时,对后续每个中断消息的响应时间抖动也会增加,即响应延时会增加。
为了解决上述问题,本申请提供了一种新的中断消息处理系统。请参考图2,图2为本申请实施例提供的一种中断消息处理系统结构示意图。在原有的主机和PCIe设备(或简称为设备)以外,新增了中断消息接收器(即图2中的MSI(x)接收器)。该中断消息接收器用于替代主机完成对中断消息的响应。具体的,请参考图3,图3为本申请实施例提供的一种中断消息处理方法流程图。该方法应用于中断消息接收器,中断消息接收器与目标总线连接,目标总线与主机和目标设备相连,方法包括:
S101:若从目标总线上获取到主机发送的中断处理请求,则确定中断地址空间。
其中,目标总线是指支持主机、中断消息接收器和目标设备之间的数据通信的总线,例如为PCIe总线。中断消息接收器可以为目标总线上任意一个具备中断消息响应能力的非主机设备,数量可以为一个或多个,当接收到主机的中断处理请求时,则说明自身被选定为中断消息接收器,或者开始启用中断消息接收器的身份进行中断消息处理。本实施例并不限定中断处理请求的具体形式,可以根据需要进行设置。在一种实施方式中,主机上具有MSI路由服务,其中包括MSI路由驱动、原始驱动和MSI重定向驱动,其中,当主机上的MSI路由驱动被激活时,该MSI路由驱动可以向指定的电子设备发送中断处理请求。原始驱动,是指为目标设备配置主机上的原有中断地址空间的驱动,MSI重定向驱动,是指为目标设备配置终端消息接收器的中断地址空间,以便将目标设备发起的中断消息从主机重定向至中断消息接收器的驱动。原始驱动和MSI重定向驱动的区别在于对目标设备配置的地址空间不同。
中断地址空间,是指预设的表明数据为中断消息的地址空间,根据中断请求的数量、类型不同,中断地址空间的数量和长度可以不同,例如对于MSI中断消息来说,其对应的中断地址空间为连续空间,对于MSIx中断消息来说,其对应的中断地址空间可以为不连续的离散地址空间。中断地址空间中包括多个地址,每个地址可以作为写消息的写目的地址,用以表明该写消息为中断消息,同时还可以表明该中断消息对应的中断服务的类型。
在确定自身需要进行中断消息的处理后,中断消息接收器可以确定上述的中断地址空间,以便及时检出中断消息并进行响应。本实施例并不限定中断地址空间的具体确定方式。在一种实施方式中,中断消息接收器可以根据自身情况自主确定中断地址空间,并将确定的中断地址空间上报至主机,以便主机通知各个目标设备发起终端消息时的地址空间。具体的,中断消息接收器可以检测自身的空闲地址空间,并在检出的空闲地址空间中划分得到中断地址空间。中断地址空间的大小、形式(即是否连续等形式)可以预先设定。或者,中断处理请求中可以包括中断地址空间的要求信息,中断消息接收器根据该要求信息在空间地址空间中划分得到中断地址空间。进一步,将中断地址空间上报至主机,以便主机基于中断地址空间对目标设备进行配置。其中,目标设备为与目标总线相连的中断消息发起设备,器类型不做限定。目标设备想要发起中断消息,首先需要得知中断地址空间,进而能够将其中的某个地址作为写目的地址发起中断消息。主机对目标设备进行配置的具体方式不做限定,可以参考相关技术。例如可以将中断地址空间写入目标设备的配置空间,该配置空间可以为BAR,Base address register,基地址寄存器。
在另一种实施方式中,中断地址空间的确定过程受到主机的控制。具体的,中断消息接收器可以获取主机发送的地址空间信息,并基于地址空间信息确定中断地址空间。地址空闲信息,是指主机在中断消息接收器上指定一定空间作为中断地址空间的信息,其可以单独发送,或者可以与中断处理请求同时发送,或者可以整合在中断处理请求内部,伴随中断处理请求发送。即中断消息接收器在获取到中断处理请求后,能够从中解析出地址空间信息。得到地址空间信息后,将其指定的位置确定为中断地址空间。
可以理解的是,为了提高不同的非主机设备之间的数据交互效率和速度,解决通过主机RC进行数据交互的路径较长、时延较大的问题。可以利用不同非主机设备之间的peer to peer(即P2P)特征性来直接进行数据交互。在本实施方式中,由于中断地址空间可能包括用于发起MSIx中断的非连续地址空间,而所有的非连续地址空间通常利用地址表记录,目标设备在发起MSIx中断消息时,同样需要利用地址表。在这种情况下,当中断地址空间包括非连续地址空间时,中段消息接收器可以生成非连续地址空间对应的地址表,并通过与目标设备之间的点对点通道(即P2P通道)向目标设备发送地址表,而无需通过主机对目标设备进行有关非连续地址空间的配置,提高了效率。
S102:若从目标总线上获取到目标设备发送的中断消息,则响应中断消息。
其中,中断消息的写目的地址处于中断地址空间内,中断地址空间内可以包括一个或多个可以作为中断消息写目的地址的地址。中断消息接收器可以实时监听目标总线上发送的各种消息,并判断是否为中断消息,若检测到中断消息,则可以对其进行响应,以便提供相应的服务。具体的,可以从目标总线上获取初始消息,并提取初始消息的写目的地址,利用写目的地址和中断地址空间的基地址得到偏移地址。可以理解的是,若中断地址空间为多个且相互不连续,则可以依次利用各个中断地址空间的基地址确定偏移地址。若偏移地址处于中断地址空间的空间长度内,则确定初始消息为中断消息,并利用偏移地址确定初始消息由目标设备发送。具体的,不同偏移地址与设备的对应关系可以预先设定,利用该对应关系即可确定中断消息的发送方。
进一步,还可以确定所述中断消息对应的中断服务类型,中断服务类型,是指中断消息表示的目标设备需要得到的服务的类型,其具体确定方式不做限定,例如可以预设偏移地址和服务类型的对应关系,根据该对应关系确定中断消息的服务类型。基于所述中断服务类型确定响应资源,并调用所述响应资源以对所述中断消息进行响应。响应资源具体可以为计算资源、存储资源等。
具体的,请参考图2,其中的中断消息接收器MSI(x)接收器包括MSI接收逻辑单元、MSI服务单元和MSI配置单元,MSI接收逻辑单元为通过硬件(或软件+硬件的方式)实现的MSI(或MSIx)中断信息接收逻辑,其通过芯片内部的互联机制映射到PCIe总线对应的某个BAR空间(即中断地址空间)上。目标设备可通过向BAR空间地址发送存储器写TLP数据包来触发MSI接收逻辑对中断消息得接收。此外,MSI(x)接收器还通过BAR空间暴露一段内部的RAM存储器用于和其他设备的数据交互。
对于中断地址空间的划分,可以按照PCIe规范,允许写入的地址为4字节对齐,写入的长度为4字节。MSI接收逻辑仅根据写入地址来区分指定的中断向量,具体的,地址与中断向量的对应关系可以为:
PCIe总线地址 (64bit) |
MSI_logic中断向量 |
0x00000001_00000000 |
Vector 0 |
0x00000001_00000004 |
Vector 1 |
…… |
…… |
0x00000001_000000FC |
Vector 63 |
…… |
…… |
MSI接收逻辑的中断地址空间可以根据具体需要调整大小,整个中断向量空间作为全局资源统一管理,分配给PCIe总线上需要被MSI(x)接收器接管中断消息的目标设备使用。
基于上述的地址和中断向量对应关系,假设映射空间的大小为2^N (N>=2)字节,则中断向量个数为2^(N-2)。根据PCIe规范,根据空间的大小不同,该空间在PCIe总线上的分配的基地址为一个32位或64位的地址base_addr。在收到一个写目的地址为arget_addr的PCIe memory Write动作时,中断向量由以下的方法计算:
target_addr - base_addr >> 2
即写目的地址减去基地址后平移两位,例如,当中断地址空间大小为4KB,中断向量个数为1024个(0x000~0x3FF),分配的PCIe基地址为0xA000_0000时,若目标设备向PCIe地址0xA000_0004进行写操作,则可以表示触发了中断向量0x001,具体的:
(0xA000_0004 – 0xA000_0000) >> 2 = 0x001
在硬件实现方面,MSI接收逻辑单元可以包括一个地址译码逻辑单元和一个FIFO(First Input First Output)存储器,请参考图4,图4为本申请实施例提供的一种中断消息处理流程示意图。当有PCIe写入消息时,地址译码逻辑单元对PCIe写入消息中的写目的地址进行上述解码计算,即PCIe控制器获取64位的写目的地址,并将其输入至中断向量解码器,得到中断向量[M:0]。然后将该中断向量作为一笔中断事件写入FIFO存储器。FIFO存储器的“非空”信号输出到MSI服务单元,此信号高电平时表示有中断消息等待处理。MSI服务单元在FIFO非空时依次从FIFO读出中断向量并进行处理。
MSI服务单元可以是由硬件或者软硬件配合实现。传统的实现方法是使用CPU和中断控制器,中断控制器配置FIFO非空信号输入为电平敏感的中断源,CPU的中断处理程序从FIFO读出中断向量,根据MSI配置单元提供的中断向量(可以视为与偏移量等同)与中断服务类型、设备之间的对应关系,查找到该中断向量所属的设备以及处理规则,进而对中断进行处理。在处理中断时,可以根据发送中断的具体的设备不同,遵循相应的设备规范进行相应的中断处理。中断处理包括但不限于NVMe、Virto-IO等标准和相关协议。具体的协议属于公开标准,软硬件实现均有成熟方案,与Host操作系统中设备的原有驱动和软件栈对设备的操作原理相同。
MSI配置单元可以记录所有的中断向量和设备的映射关系,以及各中断的处理策略。当MSI服务单元接收到一个中断时,需要从MSI配置单元查询中断所属设备和处理规则,根据设备所属规范和用户配置规则进行处理。
请参考图5,图5为本申请实施例提供的一种应用场景示意图,一个PCIe域中有RC、switch以及switch下游的两个设备,这两个设备分别为MSI接收器(即中断消息接收器)和NVMe(Non-Volatile Memory express)设备,例如为NVMe存储器。当主机需要频繁读写NVMe盘上的数据,并进行大量计算时,可将任务完全托管给MSI接收器进行,由MSI接收器直接访问NVMe盘来进行相应处理,在处理过程中,NVMe设备会发起终端消息,此时NVMe设备的中断消息完全交由MSI接收器处理。请参考图6,图6为本申请实施例提供的另一种应用场景示意图。一个PCIe域中有RC、switch以及switch下游的三个设备,三个设备分别为中断消息接收器、NVMe存储器以及网络适配器。当网络适配器需要访问NVMe存储器来把磁盘中的数据发送到网络上,或者从网络上接收数据写入NVMe磁盘时,可以由MSI接收器来配置其他两个设备,把MSI接收器BAR上的RAM作为数据缓冲来交换数据,而数据交互过程中NVMe存储器和网络适配器的中断消息都发送给MSI接收器进行处理。
应用本申请实施例提供的中断消息处理方法,设置了独立于主机之外的中断消息接收器,该中断消息接收器在获取到主机发送的终端处理请求后,可以确定用于提供中断服务的中断地址空间,目标设备可以在目标总线上发送写目的地址位于中断地址空间内的消息。中断消息接收器在检测到目标设备发送的中断消息后,可以对其进行响应。通过确定中断地址空间,允许目标设备利用中断地址空间向中断消息接收器发送中断消息,完成中断消息从主机到中断消息接收器的转移,由中断消息接收器来处理中断消息,可以提高中断消息的处理速度,降低时延,解决了因主机计算资源不足导致的中断消息处理速度慢、时延长的问题。
下面对本申请实施例提供的中断消息处理装置进行介绍,下文描述的中断消息处理装置与上文描述的中断消息处理方法可相互对应参照。
请参考图7,图7为本申请实施例提供的一种中断消息处理装置的结构示意图,应用于中断消息接收器,中断消息接收器与目标总线连接,目标总线与主机和目标设备相连,装置包括:
地址空间确定模块110,用于若从目标总线上获取到主机发送的中断处理请求,则确定中断地址空间;
响应模块120,用于若从目标总线上获取到目标设备发送的中断消息,则响应中断消息;其中,中断消息的写目的地址处于中断地址空间内。
可选地,地址空间确定模块110,包括:
信息获取单元,用于获取主机发送的地址空间信息;
第一确定单元,用于基于地址空间信息确定中断地址空间。
可选地,地址空间确定模块110,包括:
空闲检测单元,用于检测空闲地址空间;
第二确定单元,用于在空闲地址空间中划分得到中断地址空间。
可选地,还包括:
上报模块,用于将中断地址空间上报至主机,以便主机基于中断地址空间对目标设备进行配置。
可选地,响应模块120,包括:
写地址获取单元,用于从目标总线上获取初始消息,并提取初始消息的写目的地址;
偏移计算单元,用于利用写目的地址和中断地址空间的基地址得到偏移地址;
中断确定单元,用于若偏移地址处于中断地址空间的空间长度内,则确定初始消息为中断消息,并利用偏移地址确定初始消息由目标设备发送。
可选地,中断地址空间包括非连续地址空间,装置还包括:
地址表生成模块,用于生成非连续地址空间对应的地址表;
P2P通信模块,用于通过与目标设备之间的点对点通道向目标设备发送地址表。
可选地,响应模块120,包括:
类型确定模块,用于确定中断消息对应的中断服务类型;
响应模块,用于基于中断服务类型确定响应资源,并调用响应资源以对中断消息进行响应。
下面对本申请实施例提供的电子设备进行介绍,下文描述的电子设备与上文描述的中断消息处理方法可相互对应参照。
请参考图8,图8为本申请实施例提供的一种电子设备的结构示意图。其中电子设备100可以包括处理器101和存储器102,还可以进一步包括多媒体组件103、信息输入/信息输出(I/O)接口104以及通信组件105中的一种或多种。
其中,处理器101用于控制电子设备100的整体操作,以完成上述的中断消息处理方法中的全部或部分步骤;存储器102用于存储各种类型的数据以支持在电子设备100的操作,这些数据例如可以包括用于在该电子设备100上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,SRAM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、只读存储器(Read-OnlyMemory,ROM)、磁存储器、快闪存储器、磁盘或光盘中的一种或多种。
多媒体组件103可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或通过通信组件105发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口104为处理器101和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件105用于电子设备100与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件105可以包括:Wi-Fi部件,蓝牙部件,NFC部件。
电子设备100可以被一个或多个应用专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field ProgrammableGate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例给出的中断消息处理方法。
下面对本申请实施例提供的计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的中断消息处理方法可相互对应参照。
本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的中断消息处理方法的步骤。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。