CN113535341A - Linux下CPU核间中断通信的实现方法及装置 - Google Patents
Linux下CPU核间中断通信的实现方法及装置 Download PDFInfo
- Publication number
- CN113535341A CN113535341A CN202010291197.4A CN202010291197A CN113535341A CN 113535341 A CN113535341 A CN 113535341A CN 202010291197 A CN202010291197 A CN 202010291197A CN 113535341 A CN113535341 A CN 113535341A
- Authority
- CN
- China
- Prior art keywords
- interrupt
- target
- control signal
- message
- task
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种Linux下CPU核间中断通信的实现方法及装置,所述方法包括:在用户空间执行向目标任务发送消息的操作,将消息写入用户空间消息队列中;执行写控制信号器件的操作,触发目标任务所在的目标CPU核发生中断;执行自定义内核中断处理流程,以使得目标CPU核直接跳转至目标任务;从用户空间消息队列中读取消息。本发明实施例消息内容的收发均在用户空间进行,通过外部的控制信号器件触发目标任务所在的目标CPU核发生中断,中断发生后,无须经过内核调度器触发重调度,即可快速从内核态返回到指定消息收发流程,整个过程高效、可靠,缩短了CPU核任务间消息收发的响应时间,可有效提升5G基站系统的实时性能。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种Linux下CPU核间中断通信的实现方法及装置。
背景技术
5G(the 5th Generation,第五代移动通信技术)基站系统的业务软件运行在多任务的Linux操作系统之上,每一个CPU(Central processing unit,中央处理器)核上会运行多个任务(进程),多个任务依靠操作系统内核的调度分时执行。Linux的消息收发机制在内核态完成,应用程序在使用Linux消息收发机制的时候就要涉及到消息内容在用户态、内核态之间的相互拷贝,这种拷贝属于系统开销。
当CPU处于高负荷、非空闲的情况下,一个CPU核上的任务向另外一个CPU核上的任务发送消息时,第一个CPU核上的任务需要进入到内核态,拷贝用户态的消息内容到内核态,唤醒第二个CPU核上的目标任务,触发第二个CPU核上的任务调度,通过操作系统内核的任务调度选择出要切换执行的任务,读取消息队列中的消息并拷贝到用户态,最终用户态任务接收到消息。
现有的CPU核间任务消息收发处理流程具有以下缺点:一个CPU核打断另外一个CPU核的运行需要进入内核态触发IPI中断(Inter processor interrupts,核间中断),从用户态进入内核态这个过程比较耗时;现有的消息收发内容的读取在内核态进行,发送消息时需要把消息从用户态拷贝到内核态,接收任务接收消息时又需要把消息从内核态拷贝到用户态;若目的任务所在CPU较为繁忙,目的CPU核需要经过内核调度才能切换到目的任务,这一过程不够实时,导致CPU核间任务消息收发响应时间变长,从而影响整个系统的实时性能。
发明内容
为了解决或者至少部分地解决CPU核间任务消息收发响应时间较长,影响实时性能的问题,本发明实施例提供一种Linux下CPU核间中断通信的实现方法及装置。
第一方面,本发明实施例提供一种Linux下CPU核间中断通信的实现方法,包括:
在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;
执行写控制信号器件的操作,触发所述目标任务所在的目标中央处理器CPU核发生中断;
执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;
从所述用户空间消息队列中读取所述消息。
可选地,所述执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断,具体为:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向目标CPU核上的通用输入输出管脚发送控制信号;
所述目标CPU核上的通用输入输出管脚接收到所述控制信号后,触发所述目标CPU核发生中断。
可选地,所述执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断,具体为:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向高速外围组件互联PCIE接口发送控制信号;
所述PCIE接口接收到所述控制信号后,触发所述目标CPU核发生中断。
可选地,所述执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务,具体为:
保存被中断任务的上下文,查找所述目标任务对应的上下文;
若查找到所述目标任务对应的上下文,则直接跳转至所述目标任务。
可选地,所述控制信号器件具体为可擦除编程逻辑器件EPLD寄存器。
第二方面,本发明实施例提供一种Linux下CPU核间中断通信的实现装置,包括:
消息发送模块,用于在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;
中断触发模块,用于执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断;
中断处理模块,用于执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;
消息读取模块,用于从所述用户空间消息队列中读取所述消息。
可选地,所述中断触发模块具体用于:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向目标CPU核上的通用输入输出管脚发送控制信号;
所述目标CPU核上的通用输入输出管脚接收到所述控制信号后,触发所述目标CPU核发生中断。
可选地,所述中断触发模块具体用于:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向高速外围组件互联PCIE接口发送控制信号;
所述PCIE接口接收到所述控制信号后,触发所述目标CPU核发生中断。
可选地,所述中断处理模块具体用于:
保存被中断任务的上下文,查找所述目标任务对应的上下文;
若查找到所述目标任务对应的上下文,则直接跳转至所述目标任务。
可选地,所述控制信号器件具体为可擦除编程逻辑器件EPLD寄存器。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的Linux下CPU核间中断通信的实现方法步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的Linux下CPU核间中断通信的实现方法的步骤。
本发明实施例提供的Linux下CPU核间中断通信的实现方法及装置,消息内容的收发均在用户空间进行,消息内容无须经历发送时从用户空间拷贝到内核空间,接收时又从内核空间拷贝到用户空间的过程,通过外部的控制信号器件触发目标任务所在的目标CPU核发生中断,使得触发中断过程在用户态进行,中断发生后,目标CPU核执行自定义的中断处理流程,无须经过内核调度器触发重调度,即可快速从内核态返回到指定消息收发流程,整个过程高效、可靠,提高了系统中不同CPU核任务间消息收发的响应速度,缩短了CPU核间消息收发响应时间,在CPU高负荷状态下可有效地提升5G基站系统的实时性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为CPU高负荷状态下现有CPU核间任务消息处理的流程示意图;
图2为本发明实施例提供的Linux下CPU核间中断通信的实现方法的流程示意图;
图3为本发明另一实施例提供的Linux下CPU核间中断通信的实现方法的流程示意图;
图4为本发明实施例提供的Linux下CPU核间中断通信的实现装置的结构示意图;
图5为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为CPU高负荷状态下现有CPU核间任务消息处理的流程示意图,当CPU1、CPU2在高负荷、非空闲等待状态时,CPU1上运行的任务A发送消息到CPU2上的任务B,这时CPU2忙于执行其它的用户态任务,不能立即接收消息。这时的消息收发响应时间就会相对比较长且不能保证在理想时间内完成。如图1所示,步骤(1)所示为任务A发送消息,标准Linux系统发送消息需要经过系统调用进入内核,这一操作比较耗时;步骤(2)所示为任务A把发送的消息内容挂接到系统消息内容队列中,由于消息内容在用户态内存中,但是消息收发交互在内核态进行,所以此处需要先把用户态内存中的消息内容拷贝到内核态,再挂接到内核态消息结构中;步骤(3)所示为任务A发起通知任务B的操作,包括设置任务内核态消息结构B状态为就绪态;步骤(4)为任务A触发目的为CPU2的IPI中断,用来打断CPU2当前正在执行的任务,标准Linux系统触发IPI中断需要内核态权限;步骤(5)为CPU2收到IPI中断后触发内核调度器,内核调度器选择出CPU2下一个要运行的任务。内核调度器负责统筹整个Linux系统中的所有任务的运行,包括系统任务、用户任务、软中断任务等,基站系统中,内核调度器管理着上万个任务,同一时刻处于就绪态的任务也比较多,所以在CPU负荷比较高、比较繁忙的时候,不能保证内核调度器选出的下一个执行任务是任务B,也可能是一个优先级更高的系统任务,这时任务B最终接收到消息的时间就会不够实时;步骤(6)所示为任务B被成功选择执行后,读取内核态消息结构中的消息内容;步骤(7)所示为任务B拷贝读取到的消息内容到用户态内存中,最终返回到任务B的用户态部分接收到任务A发送的消息。
为了解决现有CPU核间任务消息收发响应时间较长,影响实时性能的问题,本发明实施例提出了Linux下CPU核间中断通信的实现方法及装置。
图2为本发明实施例提供的Linux下CPU核间中断通信的实现方法的流程示意图,如图2所示,Linux下CPU核间中断通信的实现方法包括:
步骤100、在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;
具体地,用户态任务开始执行向目标任务发送消息的操作,并将消息对应的内容数据挂接到目标任务可以访问的用户空间消息队列中,上述步骤在用户空间完成,不需要进入内核空间,不需要进行从用户空间拷贝消息内容数据到内核空间的操作,可有效地提高操作效率。
步骤101、执行写控制信号器件的操作,触发所述目标任务所在的目标中央处理器CPU核发生中断;
具体地,本实施例中,在将消息写入用户空间消息队列之后,用户态任务执行写控制信号器件的操作,触发目标任务所在的目标CPU核发生中断,打断目标CPU核的任务执行。这一操作在用户空间即可进行,不需要通过系统调用进入到内核空间,提高了打断目标CPU任务执行的时效性。
值得说明的是,触发目标任务所在的目标CPU核发生中断由外部的控制信号器件完成,属于硬件行为动作,进一步地提升了操作效率。
步骤102、执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;
具体地,目标CPU核发生中断后,执行预先定义好的自定义内核中断处理流程,从而可以不经过Linux系统内核调度器的任务选择,直接跳转至用户态的目标任务。
由于本实施例中目标CPU核接收到中断后执行自定义中断处理流程,不需要经过Linux系统内核调度器的任务调度,即可直接跳转至用户态的目标任务。这一过程保证了目标任务接收消息的实时性和可靠性。
步骤103、从所述用户空间消息队列中读取所述消息。
最终,目标任务得以执行,访问用户空间消息队列,读取消息的具体内容,最终实现不同CPU核间任务消息的收发。这一操作避免了从内核空间拷贝数据到用户空间,从而更加高效。
本发明实施例提供的Linux下CPU核间中断通信的实现方法,消息内容的收发均在用户空间进行,消息内容无须经历发送时从用户空间拷贝到内核空间,接收时又从内核空间拷贝到用户空间的过程,通过外部的控制信号器件触发目标任务所在的目标CPU核发生中断,使得触发中断过程在用户态进行,中断发生后,目标CPU核执行自定义的中断处理流程,无须经过内核调度器触发重调度,即可快速从内核态返回到指定消息收发流程,整个过程高效、可靠,提高了系统中不同CPU核任务间消息收发的响应速度,缩短了CPU核间消息收发响应时间,在CPU高负荷状态下可有效地提升5G基站系统的实时性能。
本发明另一实施例,在上述实施例的基础上,所述执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断,具体为:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向目标CPU核上的通用输入输出管脚发送控制信号;
所述目标CPU核上的通用输入输出管脚接收到所述控制信号后,触发所述目标CPU核发生中断。
具体地,在将消息写入用户空间消息队列之后,用户态任务执行写控制信号器件的操作,触发目标任务所在的目标CPU核发生中断,打断目标CPU核的任务执行。
本实施例中,用户态任务通过执行写控制信号器件的操作,向控制信号器件写入中断操作指令值,所述控制信号器件接收到中断操作指令值后,发送控制信号至与所述中断操作指令值对应的亲和CPU核上的通用输入输出GPIO管脚,亲和CPU核即目标CPU核,目标CPU核上的GPIO管脚接收到控制信号后,触发中断,打断目标CPU核的运行。
例如,所述中断操作指令值为一个8bit的值,该值的每一位均对应CPU上的一个管脚,每个管脚对应触发亲和CPU核上的中断。
本实施例给出了执行写控制信号器件操作触发目标CPU核发生中断的一种实现方式,通过在用户空间写控制信号器件控制目标CPU核上的管脚触发目标CPU核中断,通过采用上述硬件方式触发中断,效率高,且避免了通过系统调用进入到内核空间,使得中断后的任务执行可以避免Linux内核调度器的调度,可有效地提升目标CPU任务执行的时效性。
本发明另一实施例,在上述实施例的基础上,所述执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断,具体为:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向高速外围组件互联PCIE接口发送控制信号;
所述PCIE接口接收到所述控制信号后,触发所述目标CPU核发生中断。
具体地,本实施例给出了执行写控制信号器件操作触发目标CPU核发生中断的另一种实现方式。用户态任务通过执行写控制信号器件的操作,向控制信号器件写入中断操作指令值,所述控制信号器件接收到中断操作指令值后,发送控制信号至PCIE(Peripheralcomponent interconnect express,高速外围组件互联)接口,PCIE接口向与所述中断操作指令值对应的亲和CPU核发送中断请求,亲和CPU核即目标CPU核,目标CPU核接收到中断请求后向所述PCIE接口发送中断应答,所述PCIE接口接收到所述中断应答后向目标CPU核返回中断向量值,所述目标CPU核根据中断向量值在内存中查找对应的中断服务程序,然后读取对应的中断服务程序,进而处理该中断。
本发明实施例提供的Linux下CPU核间中断通信的实现方法,通过在用户空间写控制信号器件控制PCIE接口触发目标CPU核中断,通过采用上述硬件方式触发中断,效率高,且避免了通过系统调用进入到内核空间,使得中断后的任务执行可以避免Linux内核调度器的调度,可有效地提升目标CPU任务执行的时效性。
基于上述实施例的内容,所述执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务,具体为:
保存被中断任务的上下文,查找所述目标任务对应的上下文;
若查找到所述目标任务对应的上下文,则直接跳转至所述目标任务。
具体地,目标CPU核发生中断后,执行自定义内核中断处理流程,首先保存被中断任务的上下文,进而挂接被中断的任务,然后查找目标任务对应的上下文,若查找到目标任务对应的上下文,则直接跳转至目标任务,执行目标任务。
本发明实施例提供的Linux下CPU核间中断通信的实现方法,目标CPU核执行自定义内核中断处理流程,避免了Linux内核调度器的调度,使得目标CPU核直接执行目标任务,提高了任务间消息传递的时效性。
本发明另一实施例,在上述实施例的基础上,所述控制信号器件具体为可擦除编程逻辑器件EPLD寄存器。
具体地,控制信号器件用于发出控制信号以触发目标CPU核发生中断,在本实施例中,控制信号器件可以是EPLD(Erasable Programmable Logic Device,可擦除编程逻辑器件)寄存器。
值得说明的是,EPLD寄存器是可选的,控制信号器件还可以采用其他可以发出控制信号的器件,比如FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)。
本发明实施例提供的Linux下CPU核间中断通信的实现方法,触发目标任务所在的目标CPU核发生中断由EPLD完成,属于硬件行为动作,进一步地提升了操作效率。
图3为本发明另一实施例提供的Linux下CPU核间中断通信的实现方法的流程示意图。如图3中步骤(1)所示,用户态任务A开始发送消息操作,把消息内容挂接到任务B可访问的队列中,这一操作在用户态进行,不需要进入内核态,不需要进行从用户态拷贝到内核态的操作,提高了操作效率;如图3中步骤(2)、步骤(3)、步骤(4)所示,挂接消息内容队列完成后,任务A写epld寄存器,epld收到指令后控制亲和CPU2的gpio管脚触发中断,打断CPU2的执行,这一操作在用户态即可进行,不需要通过系统调用进入内核态,提高了打断CPU2这一操作的时效性,触发中断操作由epld完成,属于硬件行为动作,效率也较高;如图3中步骤(5)、步骤(6)所示,目标CPU2收到中断后,执行自定义内核中断处理流程,先保存CPU2被打断任务的上下文,再查找目标任务B的上下文,获取到任务B的上下文后,不经过内核调度器的任务选择,直接跳转到任务B中,这一过程保证了任务B接收消息的实时性,可靠性;如图3中步骤(7)所示,任务B在用户态读取任务A发送的消息,这一过程避免了标准系统最终接收消息时从内核态拷贝数据到用户态这一操作,更加高效。
图4为本发明实施例提供的Linux下CPU核间中断通信的实现装置的结构示意图,包括:消息发送模块410、中断触发模块420、中断处理模块430和消息读取模块440,其中,
消息发送模块410,用于在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;
具体地,消息发送模块410用于执行向目标任务发送消息的操作,并将消息对应的内容数据挂接到目标任务可以访问的用户空间消息队列中,不需要从用户空间拷贝消息内容数据到内核空间,可有效地提高操作效率。
中断触发模块420,用于执行写控制信号器件的操作,触发所述目标任务所在的目标中央处理器CPU核发生中断;
具体地,中断触发模块420用于执行写控制信号器件的操作,触发目标任务所在的目标CPU核发生中断,打断目标CPU核的任务执行。这一操作在用户空间即可进行,不需要通过系统调用进入到内核空间,提高了打断目标CPU任务执行的时效性。
中断处理模块430,用于执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;
具体地,中断处理模块430用于在目标CPU核发生中断后,执行预先定义好的自定义内核中断处理流程,从而可以不经过Linux系统内核调度器的任务选择,直接跳转至用户态的目标任务。
由于本实施例中目标CPU核接收到中断后执行自定义中断处理流程,不需要经过Linux系统内核调度器的任务调度,即可直接跳转至用户态的目标任务。这一过程保证了目标任务接收消息的实时性和可靠性。
消息读取模块440,用于从所述用户空间消息队列中读取所述消息。
最终,目标任务得以执行,消息读取模块440用于访问用户空间消息队列,读取消息的具体内容,最终实现不同CPU核间任务消息的收发。这一操作避免了从内核空间拷贝数据到用户空间,从而更加高效。
本发明实施例提供的Linux下CPU核间中断通信的实现装置,消息内容的收发均在用户空间进行,消息内容无须经历发送时从用户空间拷贝到内核空间,接收时又从内核空间拷贝到用户空间的过程,通过外部的控制信号器件触发目标任务所在的目标CPU核发生中断,使得触发中断过程在用户态进行,中断发生后,目标CPU核执行自定义的中断处理流程,无须经过内核调度器触发重调度,即可快速从内核态返回到指定消息收发流程,整个过程高效、可靠,提高了系统中不同CPU核任务间消息收发的响应速度,缩短了CPU核间消息收发响应时间,在CPU高负荷状态下可有效地提升5G基站系统的实时性能。
基于上述实施例的内容,所述中断触发模块420具体用于:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向目标CPU核上的通用输入输出管脚发送控制信号;
所述目标CPU核上的通用输入输出管脚接收到所述控制信号后,触发所述目标CPU核发生中断。
具体地,中断触发模块420将消息写入用户空间消息队列之后,执行写控制信号器件的操作,触发目标任务所在的目标CPU核发生中断,打断目标CPU核的任务执行。
本实施例中,中断触发模块420通过执行写控制信号器件的操作,向控制信号器件写入中断操作指令值,所述控制信号器件接收到中断操作指令值后,发送控制信号至与所述中断操作指令值对应的亲和CPU核上的通用输入输出GPIO管脚,亲和CPU核即目标CPU核,目标CPU核上的GPIO管脚接收到控制信号后,触发中断,打断目标CPU核的运行。
例如,所述中断操作指令值为一个8bit的值,该值的每一位均对应CPU上的一个管脚,每个管脚对应触发亲和CPU核上的中断。
本实施例给出了中断触发模块420执行写控制信号器件操作触发目标CPU核发生中断的一种实现方式,通过在用户空间写控制信号器件控制目标CPU核上的管脚触发目标CPU核中断,通过采用上述硬件方式触发中断,效率高,且避免了通过系统调用进入到内核空间,使得中断后的任务执行可以避免Linux内核调度器的调度,可有效地提升目标CPU任务执行的时效性。
本发明另一实施例,在上述实施例的基础上,所述中断触发模块420具体用于:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向高速外围组件互联PCIE接口发送控制信号;
所述PCIE接口接收到所述控制信号后,触发所述目标CPU核发生中断。
具体地,本实施例给出了中断触发模块420执行写控制信号器件操作触发目标CPU核发生中断的另一种实现方式。中断触发模块420通过执行写控制信号器件的操作,向控制信号器件写入中断操作指令值,所述控制信号器件接收到中断操作指令值后,发送控制信号至PCIE(Peripheral component interconnect express,高速外围组件互联)接口,PCIE接口向与所述中断操作指令值对应的亲和CPU核发送中断请求,亲和CPU核即目标CPU核,目标CPU核接收到中断请求后向所述PCIE接口发送中断应答,所述PCIE接口向目标CPU核返回中断向量值,所述目标CPU核根据中断向量值在内存中查找对应的中断服务程序,然后读取对应的中断服务程序,进而处理该中断。
本发明实施例提供的Linux下CPU核间中断通信的实现装置,通过在用户空间写控制信号器件控制PCIE接口触发目标CPU核中断,通过采用上述硬件方式触发中断,效率高,且避免了通过系统调用进入到内核空间,使得中断后的任务执行可以避免Linux内核调度器的调度,可有效地提升目标CPU任务执行的时效性。
基于上述实施例的内容,所述中断处理模块430具体用于:
保存被中断任务的上下文,查找所述目标任务对应的上下文;
若查找到所述目标任务对应的上下文,则直接跳转至所述目标任务。
具体地,中断处理模块430用于在目标CPU核发生中断后,执行自定义内核中断处理流程,首先保存被中断任务的上下文,进而挂接被中断的任务,然后查找目标任务对应的上下文,若查找到目标任务对应的上下文,则直接跳转至目标任务,执行目标任务。
本发明实施例提供的Linux下CPU核间中断通信的实现装置,目标CPU核执行自定义内核中断处理流程,避免了Linux内核调度器的调度,使得目标CPU核直接执行目标任务,提高了任务间消息传递的时效性。
基于上述实施例的内容,所述控制信号器件具体为可擦除编程逻辑器件EPLD寄存器。
具体地,控制信号器件用于发出控制信号以触发目标CPU核发生中断,在本实施例中,控制信号器件可以是EPLD(Erasable Programmable Logic Device,可擦除编程逻辑器件)寄存器。
值得说明的是,EPLD寄存器是可选的,控制信号器件还可以采用其他可以发出控制信号的器件,比如FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)。
本发明实施例提供的Linux下CPU核间中断通信的实现装置,触发目标任务所在的目标CPU核发生中断由EPLD完成,属于硬件行为动作,进一步地提升了操作效率。
图5为本发明实施例提供的电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储在存储器530上并可在处理器510上运行的计算机程序,以执行上述各方法实施例所提供的Linux下CPU核间中断通信的实现方法,例如包括:在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断;执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;从所述用户空间消息队列中读取所述消息。
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例提供的Linux下CPU核间中断通信的实现方法,例如包括:在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断;执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;从所述用户空间消息队列中读取所述消息。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (12)
1.一种Linux下CPU核间中断通信的实现方法,其特征在于,包括:
在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;
执行写控制信号器件的操作,触发所述目标任务所在的目标中央处理器CPU核发生中断;
执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;
从所述用户空间消息队列中读取所述消息。
2.根据权利要求1所述的Linux下CPU核间中断通信的实现方法,其特征在于,所述执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断,具体为:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向目标CPU核上的通用输入输出管脚发送控制信号;
所述目标CPU核上的通用输入输出管脚接收到所述控制信号后,触发所述目标CPU核发生中断。
3.根据权利要求1所述的Linux下CPU核间中断通信的实现方法,其特征在于,所述执行写控制信号器件的操作,触发所述目标任务所在的目标CPU核发生中断,具体为:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向高速外围组件互联PCIE接口发送控制信号;
所述PCIE接口接收到所述控制信号后,触发所述目标CPU核发生中断。
4.根据权利要求1所述的Linux下CPU核间中断通信的实现方法,其特征在于,所述执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务,具体为:
保存被中断任务的上下文,查找所述目标任务对应的上下文;
若查找到所述目标任务对应的上下文,则直接跳转至所述目标任务。
5.根据权利要求1所述的Linux下CPU核间中断通信的实现方法,其特征在于,所述控制信号器件具体为可擦除编程逻辑器件EPLD寄存器。
6.一种Linux下CPU核间中断通信的实现装置,其特征在于,包括:
消息发送模块,用于在用户空间执行向目标任务发送消息的操作,将所述消息写入用户空间消息队列中;
中断触发模块,用于执行写控制信号器件的操作,触发所述目标任务所在的目标中央处理器CPU核发生中断;
中断处理模块,用于执行自定义内核中断处理流程,以使得所述目标CPU核直接跳转至所述目标任务;
消息读取模块,用于从所述用户空间消息队列中读取所述消息。
7.根据权利要求6所述的Linux下CPU核间中断通信的实现装置,其特征在于,所述中断触发模块具体用于:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向目标CPU核上的通用输入输出管脚发送控制信号;
所述目标CPU核上的通用输入输出管脚接收到所述控制信号后,触发所述目标CPU核发生中断。
8.根据权利要求6所述的Linux下CPU核间中断通信的实现装置,其特征在于,所述中断触发模块具体用于:
向所述控制信号器件写入中断操作指令值,以使得所述控制信号器件根据所述中断操作指令值向高速外围组件互联PCIE接口发送控制信号;
所述PCIE接口接收到所述控制信号后,触发所述目标CPU核发生中断。
9.根据权利要求6所述的Linux下CPU核间中断通信的实现装置,其特征在于,所述中断处理模块具体用于:
保存被中断任务的上下文,查找所述目标任务对应的上下文;
若查找到所述目标任务对应的上下文,则直接跳转至所述目标任务。
10.根据权利要求6所述的Linux下CPU核间中断通信的实现装置,其特征在于,所述控制信号器件具体为可擦除编程逻辑器件EPLD寄存器。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项Linux下CPU核间中断通信的实现方法的步骤。
12.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至5任一项所述Linux下CPU核间中断通信的实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010291197.4A CN113535341B (zh) | 2020-04-14 | 2020-04-14 | Linux下CPU核间中断通信的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010291197.4A CN113535341B (zh) | 2020-04-14 | 2020-04-14 | Linux下CPU核间中断通信的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535341A true CN113535341A (zh) | 2021-10-22 |
CN113535341B CN113535341B (zh) | 2023-09-22 |
Family
ID=78119936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010291197.4A Active CN113535341B (zh) | 2020-04-14 | 2020-04-14 | Linux下CPU核间中断通信的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535341B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023138449A1 (zh) * | 2022-01-20 | 2023-07-27 | 科东(广州)软件科技有限公司 | 核间中断执行方法、处理方法及装置、设备和存储介质 |
WO2024077914A1 (zh) * | 2022-10-11 | 2024-04-18 | 深圳市中兴微电子技术有限公司 | 多核处理器的核间通信系统、方法、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904873A (zh) * | 2005-07-28 | 2007-01-31 | 大唐移动通信设备有限公司 | 嵌入式实时操作系统中多核处理器的核间通信方法及装置 |
US20110219208A1 (en) * | 2010-01-08 | 2011-09-08 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
CN105487933A (zh) * | 2015-11-24 | 2016-04-13 | 无锡江南计算技术研究所 | 一种基于核间异步消息队列与共享内存的域间通信方法 |
US20170185449A1 (en) * | 2014-09-15 | 2017-06-29 | Huawei Technologies Co.,Ltd. | Data processing method based on multi-core processor chip, apparatus, and system |
CN108427640A (zh) * | 2018-01-25 | 2018-08-21 | 南京翼辉信息技术有限公司 | 一种在用户态下调试驱动程序的方法 |
CN110825690A (zh) * | 2019-11-14 | 2020-02-21 | 北京华捷艾米科技有限公司 | 多核处理器的核间通信方法及装置 |
-
2020
- 2020-04-14 CN CN202010291197.4A patent/CN113535341B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1904873A (zh) * | 2005-07-28 | 2007-01-31 | 大唐移动通信设备有限公司 | 嵌入式实时操作系统中多核处理器的核间通信方法及装置 |
US20110219208A1 (en) * | 2010-01-08 | 2011-09-08 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US20170185449A1 (en) * | 2014-09-15 | 2017-06-29 | Huawei Technologies Co.,Ltd. | Data processing method based on multi-core processor chip, apparatus, and system |
CN105487933A (zh) * | 2015-11-24 | 2016-04-13 | 无锡江南计算技术研究所 | 一种基于核间异步消息队列与共享内存的域间通信方法 |
CN108427640A (zh) * | 2018-01-25 | 2018-08-21 | 南京翼辉信息技术有限公司 | 一种在用户态下调试驱动程序的方法 |
CN110825690A (zh) * | 2019-11-14 | 2020-02-21 | 北京华捷艾米科技有限公司 | 多核处理器的核间通信方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023138449A1 (zh) * | 2022-01-20 | 2023-07-27 | 科东(广州)软件科技有限公司 | 核间中断执行方法、处理方法及装置、设备和存储介质 |
WO2024077914A1 (zh) * | 2022-10-11 | 2024-04-18 | 深圳市中兴微电子技术有限公司 | 多核处理器的核间通信系统、方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113535341B (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489213B (zh) | 一种任务处理方法及处理装置、计算机系统 | |
JP7087029B2 (ja) | 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構 | |
CN108958157B (zh) | 控制程序控制调度方法、装置、计算机设备以及存储介质 | |
CN107046508B (zh) | 报文接收方法及网络设备 | |
US7853743B2 (en) | Processor and interrupt controlling method | |
US9092255B2 (en) | Multi-core processor system, computer product, and control method for interrupt execution | |
CN103455376A (zh) | 对操作系统中多个进程对现场可编程门阵列的使用的管理 | |
US20070033384A1 (en) | Real-time embedded simple monitor method and computer product | |
US20200371696A1 (en) | Method, Apparatus, Device and Storage Medium for Managing Access Request | |
CN113535341B (zh) | Linux下CPU核间中断通信的实现方法及装置 | |
US10545890B2 (en) | Information processing device, information processing method, and program | |
US7451454B2 (en) | Event handling mechanism | |
CN115421787A (zh) | 指令执行方法、装置、设备、系统、程序产品及介质 | |
CN114721975A (zh) | 链表处理方法、装置、加速器、电路板、设备和存储介质 | |
CN111274044A (zh) | Gpu虚拟化资源限制处理方法及装置 | |
CN114461365A (zh) | 一种进程调度处理方法、装置、设备和存储介质 | |
CN109840137B (zh) | 一种跨核调度方法和装置 | |
CN116107774A (zh) | Io请求处理方法、装置、电子设备和存储介质 | |
WO2022237419A1 (zh) | 任务执行方法、装置及存储介质 | |
CN114064128B (zh) | 内核重启方法 | |
CN112579460B (zh) | 一种基于多核嵌入式系统的多级调试方法 | |
CN115269452A (zh) | Trim命令处理方法、系统、终端设备及存储介质 | |
CN114911538A (zh) | 一种运行系统的启动方法及计算设备 | |
CN110618794B (zh) | 一种SSD固件访问NandFlash的方法和系统 | |
CN114610485A (zh) | 资源处理系统以及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |