具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个要素与另一要素区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
相关技术中,主要是通过INTx、消息信号中断(Message Signaled Interrupt,MSI)以及拓展消息信号中断(Extended Message Signaled Interrupt,MSI-X)这三种中断机制来实现中断控制。
图1示出了相关技术中的INTx中断机制的示意图。如图1所示,在INTx中断中,外设高速互联标准(Peripheral Component Interconnect express,PCIe)设备101中的PCIe控制器106收集各功能模块102~105的中断信号,并将各功能模块102~105的中断信号INT0~INT3分别映射到中断输出信号INTA/B/C/D,以使得PCIe设备101通过边带信号INTx产生中断请求,经过主机南桥107的可编程中断控制器(Programmable Interrupt Controller,PIC)108来转换为INTR信号并发送至CPU109。
由于PCIe设备的中断信号的输出引脚只有4位,即INTA、INTB、INTC和INTD。因此能够使用的中断数量最多为4,这会极大的限制系统中断处理的效率,降低系统的整体性能。
图2示出了相关技术中的拓展消息信号中断的中断机制的示意图。如图2所示,在MSI-X中断中,PCIe控制器206将收集到的各功能模块202~205的中断信号INT0~INT3转换为内存写事务,并将各功能模块202~205的中断信号INT0~INT3对应的信息数据写入CPU内存的特定地址。CPU收到该信息数据时则认为有对应的中断发生。通常,每个中断号对应一对唯一的写地址及信息数据,中断号与写地址及信息数据的映射关系存储在MSI-X列表中,映射关系可以通过MSI-X性能表(Capability)208中所存储的MSI-X列表的地址信息进行查询。MSI-X列表由多个条目(entry)组成。每个条目对应于一个中断号,包含了一个特定中断对应的控制、待写入的信息数据以及待写入信息数据的目标地址的信息。
由于MSI-X是一种较新的技术,片上系统能否使用MSI-X这一中断严重依赖于第三方PCIe设备的完善程度。
为解决上述问题,本公开提供了一种中断控制方法,通过收集来自中断源的中断信号,并确定中断信号对应的中断信息,来将中断信号对应的中断信息数据写入PCIe中对应的地址处,进而实现中断的上报,由此能够独立于中断源和外设高速互联标准PCIe设备来实现对中断的控制。同时,可以根据需求对中断信息进行配置,以支持更多的中断数目的同时具有较好的灵活性。
下面将详细描述本公开的示例性实施例。
图3示出了根据本公开的实施例的中断控制方法的流程图。如图3所示,中断控制方法300包括:步骤S301、存储来自至少一个中断源的至少一个中断信号;步骤S302、基于所述至少一个中断源中的每一个中断源与中断号的映射关系,确定所述至少一个中断信号中的每一个中断信号对应的中断号;步骤S303、基于所述至少一个中断信号和每一个中断信号对应的中断号,确定待发送的目标中断号;步骤S304、基于所述目标中断号,确定所述目标中断号对应的中断信息,其中,所述中断信息包括待写入的信息数据以及待写入所述信息数据的目标地址;以及步骤S305、基于所述中断信息,将对应的信息数据写入外设高速互联标准PCIe设备的从接口的目标地址处。
由此,可以通过步骤S301来收集来自中断源的中断信号。在步骤S302中,可以基于事先所存储的中断源与中断号的映射关系来确定中断号,以及在步骤S302中,基于事先所存储的中断号与中断信息的映射关系来确定中断信号对应的中断信息,从而将中断信号对应的中断信息数据写入PCIe中对应的地址处,进而来实现中断的上报。由此,能够独立于中断源和外设高速互联标准PCIe设备来实现对中断的控制。同时,可以根据需求对中断信息进行配置,以支持更多的中断数目的同时具有较好的灵活性。通过使用内存写事务来向PCIe设备上报中断,摆脱了物理引脚的限制,能够支持更多的中断数目,极大提升了中断处理的速度和效率。
根据一些实施例,所述方法所控制的中断类型为拓展消息信号中断MSI-X。
中断控制方法300通过使用MSI-X中断机制,将中断信号转换为内存写事务,从而实现中断信号的上报。具体地,中断控制方法300根据映射关系将来自中断源的中断信号映射到中断号,并将中断号映射为该中断号对应的待写入的信息数据以及待写入所述信息数据的目标地址,通过将中断信号所对应的待写入的信息数据写入PCIe设备的从接口的目标地址处,来实现对该中断信号的上报。
由此,中断控制方法300具备MSI-X中断机制的优点,摆脱了物理引脚的限制,相比INTx能够支持更多的中断数目,提升了中断处理的速度和效率。此外,由于MSI-X对中断信号对应的目标地址的连续性没有要求,因而相比于要求所有中断具有连续不间断的目标地址的MSI中断,基于MSI-X中断的中断控制方法300能够支持多达2048个中断号。同时,在与PCIe设备进行通信以实现中断控制的过程中,无需该PCIe设备支持MSI-X中断机制,相比于相关技术中对MSI-X中断机制的应用,能够摆脱与对第三方PCIe设备的依赖,从而实现对中断的独立控制。
根据一些实施例,在中断源与中断号的所述映射关系中,一个中断源仅对应于一个中断号,并且,一个中断号能够对应于多个中断源。
示例性的,在执行中断控制方法300之前,需预先存储或设置中断源与中断号的映射关系。具体地,可以针对每个中断源设置对应的映射寄存器,该映射寄存器中的值决定了对应的中断源中断号之间的映射关系。当配置的中断类型为MSI-X时,该映射寄存器中的值决定了使用几号MSI-X条目来发送对应中断源的中断信号。
示例性的,当配置的中断类型为MSI-X时,需事先存储MSI-X列表,以存储每个MSI-X中断号对应的待写入的信息数据以及待写入信息数据的目标地址等中断信息。在一个示例中,所存储的MSI-X列表中的中断信息还包括针对中断号的控制信息,以实现对每个中断的单独控制。MSI-X列表支持的最大中断数量可根据片上系统的规模进行缩减或扩展。
根据一些实施例,所述方法所配置的中断类型可以为消息信号中断MSI。
根据一些实施例,中断控制方法300还包括:在对所述至少一个中断信号进行存储之前,针对所述至少一个中断源中的每一个中断源,确定是否接收来自该中断源的中断信号。
示例性的,可以为每一个中断源设置对应的屏蔽寄存器,通过配置与中断源对应的屏蔽寄存器来选择是否接收来自该中断源的中断信号,从而实现了对每一个中断源的中断信号的接收控制。
示例性的,屏蔽寄存器确定接收的中断信号将被存储在对应的中断状态寄存器中。
根据一些实施例,步骤S103包括:记录所述至少一个中断信号的产生顺序;以及基于所述产生顺序和每一个中断信号对应的中断号,确定待发送的目标中断号。
可以理解的是,同一时刻可能存在来自中断源侧的多个等待发送的中断信号,在这种情况下,可以记录多个中断信号的产生的先后顺序,并基于所述产生顺序确定所述目标中断号,以使得产生的较早的中断信号能够被先发送。
根据一些实施例,所述目标中断号是利用轮询调度仲裁器来确定的。
轮询调度仲裁器在对多个待发送的中断信号进行仲裁时,基于所述产生顺序确定所述目标中断号,并依次进行轮询,来确定下一个待发送的中断信号。中断源间不存在优先级关系,在有限时间内均可以被发送。
在一个示例中,用比特0-比特10是否置位来表示对应的比特位是否有中断信号,当比特2最先置位表示该位最先产生中断信号时,轮询调度仲裁器会将比特2对应的中断信号对应的中断号确定为目标中断号,并按照比特3-比特2的顺序进行轮询以确定下一个待发送的中断信号。
根据一些实施例,也可以利用优先级编码器作为仲裁器,并基于为中断源配置的优先级来决定中断信号的发送顺序。
根据一些实施例,中断控制方法300还包括:基于预设规则,将所述PCIe设备的所述从接口的所述目标地址重映射为CPU物理地址;以及利用所述从接口将所述目标地址中的所述信息数据转发到所述CPU物理地址中。
示例性的,PCIe设备的从接口的地址空间小于CPU的物理地址空间,因此,在从接口处接收到的地址信息会损失一部分信息,需要地址翻译器将从接口的目标地址重映射为CPU物理地址,以使得从接口能够将目标地址中的所述信息数据转发到所述CPU物理地址中。在一个示例中,地址翻译器将从接口的目标地址重映射为CPU物理地址的过程包括将从接口的目标地址的高位补零使得重映射的到的CPU物理地址与CPU的物理地址空间具有相同位数。
根据本公开的另一方面,提供了一种中断控制器。如图4所示,中断控制器400包括:至少一个中断状态寄存器,所述至少一个中断状态寄存器中的每一个中断状态寄存器401被配置为存储来自中断源的中断信号;映射寄存器402,被配置为存储每一个中断源与中断号的映射关系,以用于确定来自每一个中断源的中断信号对应的中断号;中断仲裁器403,被配置为基于所述中断状态寄存器和所述映射寄存器中存储的内容,确定待发送的目标中断号;中断信息存储器404,被配置为存储每个中断号对应的中断信息,其中,所述中断信息包括待写入的信息数据以及待写入所述信息数据的目标地址;和直接存储器访问控制器405,被配置为基于所述中断仲裁器所确定的所述目标中断号,从所述中断信息存储器中确定所述目标中断号对应的中断信息,并基于所述中断信息将对应的信息数据写入外设高速互联标准PCIe设备的从接口的目标地址处。
由此,通过设置独立于中断源和PCIe设备的中断控制器,实现了对中断的独立控制。中断控制器300通过中断状态寄存器301来接收来自中断源的中断信号,并通过映射寄存器302、中断仲裁器303和中断信息存储器304对中断信号进行配置,以使得直接存储器访问控制器305能够将来自中断源的中断信号转换为写数据,并将中断信号对应的信息数据写入PCIe设备的从接口中。同时,中断信息存储器304可以根据需求进行配置,以支持更多的中断数目的同时具有较好的灵活性。通过使用内存写事务来向PCIe设备上报中断,摆脱了物理引脚的限制,能够支持更多的中断数目,极大提升了中断处理的速度和效率。
根据一些实施例,中断控制器300配置的中断类型为拓展消息信号中断MSI-X。
中断控制器300通过使用MSI-X中断机制,将中断信号转换为内存写事务,从而实现中断信号的上报。具体地,中断控制器300根据映射寄存器302将来自中断源的中断信号映射到中断号,并根据中断信息存储器304将中断号映射为该中断号对应的待写入的信息数据以及待写入所述信息数据的目标地址,通过将中断信号所对应的待写入的信息数据写入PCIe设备的从接口的目标地址处,来实现对该中断信号的上报。
由此,中断控制器300具备MSI-X中断机制的优点,摆脱了物理引脚的限制,相比INTx能够支持更多的中断数目,提升了中断处理的速度和效率。此外,由于MSI-X对中断信号对应的目标地址的连续性没有要求,因而相比于要求所有中断具有连续不间断的目标地址的MSI中断,基于MSI-X中断的中断控制器300能够支持多达2048个中断号。同时,独立于中断源和PCIe设备设置的中断控制器300,在与PCIe设备进行通信以实现中断控制的过程中,无需该PCIe设备支持MSI-X中断机制,相比于相关技术中对MSI-X中断机制的应用,能够摆脱与对第三方PCIe设备的依赖,从而实现对中断的独立控制。
根据一些实施例,在所述映射寄存器所指示的每一个中断源与中断号的映射关系中,一个中断源仅对应于一个中断号,并且,一个中断号能够对应于多个中断源。
示例性的,在中断控制器中,针对每个中断源设置有对应的映射寄存器302,该映射寄存器302中的值决定了对应的中断源中断号之间的映射关系。当中断控制器300配置的中断类型为MSI-X时,该映射寄存器302中的值决定了使用几号MSI-X条目来发送对应中断源的中断信号。
示例性的,当中断控制器300配置的中断类型为MSI-X时,中断控制器300中的中断信息存储器304用于存储MSI-X列表,以存储每个MSI-X中断号对应的待写入的信息数据以及待写入信息数据的目标地址等中断信息。在一个示例中,中断信息存储器304所存储的MSI-X列表中的中断信息还包括针对中断号的控制信息,以实现对每个中断的单独控制。MSI-X列表支持的最大中断数量可根据片上系统的规模进行缩减或扩展。
根据一些实施例,中断控制器300配置的中断类型可以为消息信号中断MSI。
根据一些实施例,中断控制器300还包括:与中断源对应的屏蔽寄存器,被配置为确定是否接收来自该中断源的中断信号。
示例性的,可以在中断控制器300中为每一个中断源设置对应的屏蔽寄存器,通过配置与中断源对应的屏蔽寄存器,中断控制器可以选择是否接收来自该中断源的中断信号,从而实现了对每一个中断源的中断信号的接收控制。
示例性的,屏蔽寄存器确定接收的中断信号将被存储在对应的中断状态寄存器301中。
根据一些实施例,中断仲裁器303还被配置为:响应于所述中断状态寄存器接收到多个中断信号,记录所述多个中断信号的产生顺序,并基于所述产生顺序确定所述目标中断号。
可以理解的是,同一时刻可能存在来自中断源侧的多个等待发送的中断信号,在这种情况下,中断仲裁器303用于记录多个中断信号的产生的先后顺序,并基于所述产生顺序确定所述目标中断号,以使得产生的较早的中断信号能够被先发送。
根据一些实施例,中断仲裁器303为轮询调度仲裁器。轮询调度仲裁器在对多个待发送的中断信号进行仲裁时,基于所述产生顺序确定所述目标中断号,并依次进行轮询,来确定下一个待发送的中断信号。中断源间不存在优先级关系,在有限时间内均可以被发送。
在一个示例中,用比特0-比特10是否置位来表示对应的比特位是否有中断信号,当比特2最先置位表示该位最先产生中断信号时,轮询调度仲裁器会将比特2对应的中断信号对应的中断号确定为目标中断号,并按照比特3-比特2的顺序进行轮询以确定下一个待发送的中断信号。
根据一些实施例,也可以利用优先级编码器作为中断仲裁器303,并基于为中断源配置的优先级来决定中断信号的发送顺序。
根据一些实施例,中断控制器300还包括:地址翻译器,被配置为基于预设规则,将所述PCIe设备的所述从接口的所述目标地址重映射为CPU物理地址,以使得所述从接口将所述目标地址中的所述信息数据转发到所述CPU物理地址中。
示例性的,PCIe设备的从接口的地址空间小于CPU的物理地址空间,因此,在从接口处接收到的地址信息会损失一部分信息,需要地址翻译器将从接口的目标地址重映射为CPU物理地址,以使得从接口能够将目标地址中的所述信息数据转发到所述CPU物理地址中。在一个示例中,地址翻译器将从接口的目标地址重映射为CPU物理地址的过程包括将从接口的目标地址的高位补零使得重映射的到的CPU物理地址与CPU的物理地址空间具有相同位数。
根据本公开的另一方面,还提供了一种芯片,包括如前所述的中断控制器。
如图5所示,电子设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储电子设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
电子设备500中的多个部件连接至I/O接口505,包括:输入单元506、输出单元507、存储单元508以及通信单元509。输入单元506可以是能向电子设备500输入信息的任何类型的设备,输入单元506可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入,并且可以包括但不限于鼠标、键盘、触摸屏、轨迹板、轨迹球、操作杆、麦克风和/或遥控器。输出单元507可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元508可以包括但不限于磁盘、光盘。通信单元509允许电子设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、802.11设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如中断控制方法。例如,在一些实施例中,中断控制方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到电子设备500上。当计算机程序加载到RAM 503并由计算单元501执行时,可以执行上文描述的中断控制方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行中断控制方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行、也可以顺序地或以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。