CN103853620A - 一种众核处理器进程间相互通信的方法、装置及系统 - Google Patents

一种众核处理器进程间相互通信的方法、装置及系统 Download PDF

Info

Publication number
CN103853620A
CN103853620A CN201210505157.0A CN201210505157A CN103853620A CN 103853620 A CN103853620 A CN 103853620A CN 201210505157 A CN201210505157 A CN 201210505157A CN 103853620 A CN103853620 A CN 103853620A
Authority
CN
China
Prior art keywords
message
message body
qmc
message header
header
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
Application number
CN201210505157.0A
Other languages
English (en)
Other versions
CN103853620B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201210505157.0A priority Critical patent/CN103853620B/zh
Priority to EP13859349.6A priority patent/EP2908246B1/en
Priority to PCT/CN2013/074709 priority patent/WO2014082421A1/zh
Publication of CN103853620A publication Critical patent/CN103853620A/zh
Priority to US14/725,066 priority patent/US9678813B2/en
Application granted granted Critical
Publication of CN103853620B publication Critical patent/CN103853620B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

本发明实施例提供的一种众核处理器进程间相互通信的方法、装置及系统,涉及众核操作系统领域,用以实现提高消息体的读取速度,提高用户体验。所述方法,包括:由目的内核Kernal执行,所述目的内核对应于目的处理器核,所述方法包括:从快速消息通道QMC获取消息的消息头;根据所述消息头执行CPU预取指令,使得存储在共享内存中的所述消息中与所述消息头对应的消息体被加载到所述目的处理器核对应的缓存cache中;切换到目的进程,使得所述目的进程从所述cache中获取所述消息体。本发明实施例适用于众核处理器的进程间相互通信的场景。

Description

一种众核处理器进程间相互通信的方法、装置及系统
技术领域
本发明涉及众核操作系统领域,尤其涉及一种众核处理器进程间相互通信的方法、装置及系统。
背景技术
随着移动通信技术的迅速发展,人们对通信系统的高性能、高速率、低延时的要求也越来越迫切,因此对电子设备的处理器要求也越来越高。电子设备的处理器由单核发展到多核,再发展到众核。众核处理器采用了non-cache-coherent(非高速缓存一致)体系架构和multi-kernel OS(多内核操作系统)。在众核处理器中各进程间采用消息传递进行通信。
在现有技术中,通过在non-cache-coherent的众核处理器平台上通过共享内存、轮询和IPI(Inter-Process Interrupt核间中断)实现核间通信。其中,共享内存被分为与cache line(高速缓存线)大小相等的多个块。发送端将消息体放在共享内存中,将包含内存地址信息的channel ID(通道标识)放在MPB(Message Passing Buffer消息传递缓存)中,通过IPI通知接收端从MPB中获得channel ID,最后由接收端的用户层应用从共享内存中读取消息体。
在实现上述核间通信的过程中,发明人发现现有技术中至少存在如下问题:用户层应用需从共享内存中读取消息体,降低了消息体的读取速度,降低了用户体验。
发明内容
本发明的实施例提供一种众核处理器进程间相互通信的方法、装置及系统,用以实现提高消息体的读取速度,提高用户体验。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种众核处理器进程间相互通信的方法,由目的内核Kernal执行,所述目的内核对应于目的处理器核,所述方法包括:从快速消息通道QMC获取消息的消息头;根据所述消息头执行CPU预取指令,使得存储在共享内存中的所述消息中与所述消息头对应的消息体被加载到所述目的处理器核对应的缓存cache中;切换到目的进程,使得所述目的进程从所述cache中获取所述消息体。
在第一种可能的实现方式中,所述消息头包括所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size,所述起始地址以及所述消息体的大小用于指示存储在所述共享内存中的所述消息体;或者,所述消息头包括所述消息体在所述共享内存中存储的起始地址以及结束地址,所述起始地址以及所述结束用于指示存储在所述共享内存中的所述消息体。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述消息头包括:标识信息;所述标识信息用于标示所述消息的消息体通过所述QMC传输。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在所述根据所述消息头执行CPU预取指令之前,还包括:检测所述消息头中是否包含所述标识信息;所述根据所述消息头执行CPU预取指令包括:若检测出所述消息头中不包含所述标识信息,则根据所述消息头执行CPU预取指令。
结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述消息头包括第一目的进程标识,用于标识所述消息头对应的所述目的进程;所述方法还包括,在所述从快速消息通道QMC获取消息的消息头之前,包括:接收源内核发送的第一中断触发信号;根据所述第一中断触发信号进行第一中断处理,在第一中断处理过程中,从所述QMC中读取所述消息头,根据所述消息头中的所述第一目的进程标识将所述消息头放入所述目的进程对应的消息接收队列;退出第一中断处理后进行进程调度;所述从快速消息通道QMC获取消息的消息头包括:当调度到所述目的进程时,从所述目的进程对应的消息接收队列中获取所述消息头。
结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,若检测出所述消息头中包含所述标识信息,则切换到目的进程,使得所述目的进程从所述QMC中获取所述消息中与所述消息头对应的消息体。
结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述消息头还包括:第二目的进程标识;所述方法还包括:在从快速消息通道QMC获取消息的消息头之前,包括:接收所述源内核发送的第二中断触发信号;根据所述第二中断触发信号进行第二中断处理,在第二中断处理过程中,从所述QMC中读取所述消息头及消息体,根据所述消息头中的所述第二目的进程标识将所述消息头及消息体放入所述目的进程对应的消息接收队列;退出第二中断处理后进行进程调度;所述若检测出所述消息头中包含所述标识信息,则切换到目的进程,使得所述目的进程从所述QMC中获取所述消息中与所述消息头对应的消息体包括:若检测出所述消息头中包含所述标识信息,则当调度到所述目的进程时,切换到所述目的进程,使得所述目的进程从与所述目的进程对应的消息接收队列中获取所述消息体。
结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式,或第一方面的第五种可能的实现方式,或第一方面的第六种可能的实现方式,在第七种可能的实现方式中,所述消息体由源处理器核通过下述方法发送:检测所述消息体的大小size是否大于所述QMC所能发送的最大载荷;若检测到所述消息体的大小size大于所述QMC所能发送的最大载荷,则源处理器核将所述消息体存储至共享内存中;所述源内核将用于指示存储在共享内存中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至所述目的内核;若检测到所述消息体的大小size不大于所述QMC所能发送的最大载荷,则所述源内核将所述消息的消息体存储至所述QMC,并将用于指示存储在所述QMC中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至所述目的内核。
第二方面,本发明实施例提供了一种众核处理器,包括:源处理器核、目的处理器核,所述目的处理器核运行有目的内核,所述目的内核包括:获取单元,用于从快速消息通道QMC获取消息的消息头;指令预取单元,用于根据所述获取单元获取的所述消息头执行CPU预取指令,使得存储在共享内存中的所述消息中与所述消息头对应的消息体被加载到所述目的处理器核对应的缓存cache中;进程切换单元,用于在所述指令预取单元执行CPU预取指令后,切换到目的进程,使得所述目的进程从所述缓存中获取所述消息体。
第三方面,本发明实施例提供了一种众核处理器系统,包括:源处理器核,目的处理器核,存储器;所述存储器,用于存储所述源处理器核及所述目的处理器核运行的代码;所述目的处理器核用于读取所述存储器中存储的代码以便目的内核Kernal执行,通过运行内核程序,执行下述方法:从快速消息通道QMC获取消息的消息头;根据所述消息头执行CPU预取指令,使得存储在共享内存中的所述消息中与所述消息头对应的消息体被加载到所述目的处理器核对应的缓存cache中;切换到目的进程,使得所述目的进程从所述cache中获取所述消息体。
本发明实施例提供了一种众核处理器进程间相互通信的方法、装置及系统,通过目的处理器核的目的内核从QMC中获取消息头,并根据获取的消息头执行CPU预取指令,指示将消息体加载到目的处理器核对应的cache中,切换到目的进程,以使得目的进程从cache中获取消息体。这样,在进程间通信过程中,将消息体加载至cache中,从而使得目的进程可以直接从cache中获取消息体,而无需访问共享内存获取消息体,进而提高了消息体的读取速度,并提高了用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种众核处理器进程间相互通信的方法的示意图;
图2为本发明实施例提供的另一种众核处理器进程间相互通信的方法的示意图;
图3为本发明实施例提供的另一种众核处理器进程间相互通信的方法的示意图;
图4为本发明实施例提供的另一种众核处理器进程间相互通信的方法的示意图;
图5为本发明实施例提供的一种众核处理器的结构示意图;
图6为图5所示的目的内核的一种结构示意图;
图7为图5所示的目的内核的另一种结构示意图;
图8为图5所示的目的内核的另一种结构示意图;
图9为图5所示的目的内核的另一种结构示意图;
图10为图5所示的源处理器核的一种结构示意图;
图11为本发明实施例提供的一种众核处理器系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种众核处理器进程间相互通信的方法,由目的内核Kernal执行,所述目的内核对应于目的处理器核,如图1所示,包括:
101、从QMC(Quick Message Channel,快速消息通道)获取消息的消息头。
具体的,若源内核处理器将消息的消息体存储在共享内存中,则消息的消息头用于指示存储在所述共享内存中的所述消息体。此时,所述消息的消息头包括:所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size。
其中,所述起始地址以及所述消息体的大小用于指示存储在所述共享内存中的所述消息体。
或者,所述消息的消息头包括:所述消息体在所述共享内存中存储的起始地址以及结束地址。
其中,所述起始地址以及所述结束地址用于指示存储在所述共享内存中的所述消息体。
需要说明的是,消息头还可用其他方法指示存储在所述共享内存中的所述消息体,本发明对此不做限制。
进一步的,所述消息头还包括第一目的进程标识。
其中,所述第一目的进程标识用于标识所述消息头对应的所述目的进程。
需要说明的是,在本发明所有实施中,每个进程都有其对应的进程标识。
需要说明的是,目的内核从QMC中获取消息的消息头时,目的内核处于内核态。
102、根据所述消息头执行CPU预取指令,使得存储在共享内存中的所述消息中与所述消息头对应的消息体被加载到所述目的处理器核对应的缓存cache中。
具体的,目的内核在获取了消息的消息头后,若消息头中包括:所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size,则目的内核根据所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size,执行CPU(Central Processing Unit,中央处理器)预取指令,使得目的内核将所述消息的消息体从共享内存中加载到目的处理器核对应的cache(缓存)中。
若消息头中包括:所述消息体在所述共享内存中存储的起始地址以及结束地址,则目的内核根据所述消息体在所述共享内存中存储的起始地址以及结束地址,执行CPU(Central Processing Unit,中央处理器)预取指令,使得目的内核将所述消息的消息体从共享内存中加载到目的处理器核对应的cache(缓存)中。
103、切换到目的进程,使得所述目的进程从所述cache中获取所述消息体。
具体的,目的内核在将执行CPU预取指令后,目的内核切换到目的进程,可选的,在将消息体加载到目的处理器核对应的cache时,目的内核同时切换到目的进程,使得目的进程从所述cache中获取所述消息体。
进一步的,目的内核切换到目的内核包括:目的内核从内核态切换到用户态。
本发明实施例提供了一种众核处理器进程间相互通信的方法,通过目的处理器核的目的内核从QMC中获取消息头,并根据获取的消息头执行CPU预取指令,指示将消息体加载到目的处理器核对应的cache中,切换到目的进程,以使得目的进程从cache中获取消息体。这样,在进程间通信过程中,将消息体加载至cache中,从而使得目的进程可以直接从cache中获取消息体,而无需访问共享内存获取消息体,进而提高了消息体的读取速度,并提高了用户体验。
本发明实施例提供了一种众核处理器进程间相互通信的方法,由目的内核Kernal和源内核执行,所述目的内核对应于目的处理器核,所述源内核对应于源处理器核,包括:
201、源处理器核的第一进程调用MsgLib中的库函数,用以发送消息。
具体的,第一进程需向目的处理器核的目的进程发送消息时,需要调用MsgLib中的库函数。
需要说明的是,在源处理器核将消息发送至目的处理器核的方法有两种,一种是源处理器核的MsgLib中的库函数不检测消息的消息体大小size,直接将消息的消息体存储至共享内存中,使得目的内核通过共享内存获取所述消息的消息体,若源处理器核采用此种方法,则执行步骤202a,203-206,208b-209b,如图2及图3所示。第二种方法是,源处理器核的MsgLib中的库函数检测消息的消息体大小size,根据检测结果存储所述消息的消息体,若源处理器核采用第二种方法,则执行步骤202b,203-207,208a或执行步骤202b,203-207,208b-209b,如图4及参考图3所示。
202a、源处理器核的MsgLib中的库函数将消息的消息体存储至共享内存中,并切换至内核态。
具体的,源处理器核的MsgLib中的库函数将消息的消息体存储至共享内存后,通过系统调用,将源处理器核由用户态切换为内核态,此时进入到源内核。
202b、源处理器核的MsgLib中的库函数检测所述消息体的大小size是否大于所述QMC所能发送的最大载荷,并切换至内核态。
其中,QMC所能发送的最大载荷是预先设置。可以通过三种方法预先设置QMC所能发送的最大载荷,具体如下。
需要说明的是,进行进程间通信的众核处理器中包括至少两个处理器核,确定处理器核是众核处理器启动时,开启的第一个处理器核,可以是上述的源处理器核,也可是目的处理器核,在确定处理器核确定了QMC所能发送的最大载荷后,将确定的QMC所能发送的最大载荷发送给其他处理器核。
确定处理器核确定QMC所能发送的最大载荷的第一种方法为:
确定处理器核将QMC传输数据量确定为与Cache Line(高速缓存线)相等,则可根据公式Spayload=Scache-Saddr-Ssize-Sdstp确定所述QMC所能发送的最大载荷。其中,Scache表示QMC的传输数据量所占的字节,Saddr表示共享存储器的起始地址所占的字节、Ssize表示消息的体的大小size所占的字节、Sdstp表示目的进程标识所占的字节,Spayload表示QMC所能发送的最大载荷所占的字节。此时,确定处理器核中包含的QMC的个数为:ST/Scache。其中,ST是第一通道中承载的字节数。其中,第一通道是为每个处理器核分配的传输消息体的通道。
需要说明的是,上述过程是将第一通道分成ST/Scache个QMC。
需要说明的是,在本发明所有实施例中,每次消息的传输使用一个QMC。
举例说明,假设第一通道中承载的字节数为8k字节,Cache Line大小为32字节,Addr占5字节,消息体的大小size占1字节,目的进程标识占2字节,则根据公式Spavload=Scache-Saddr-Ssize-Sdstp计算出QMC所能发送的最大载荷占24字节。确定处理器核可以使用ST/Scache=8k/32=256个第QMC,即为将第一通道分为256个QMC。
确定处理器核确定QMC所能发送的最大载荷的第二种方法为:
确定处理器核先根据公式 S chanel = | S T ( N - 1 ) * S cache | * S cache 确定QMC的传输数据量。在根据公式Spayload=Schanel-Saddr-Ssize-Sdstp确定所述QMC所能发送的最大载荷。
其中,ST表示第一通道中承载的字节数;所述第一通道是为众核处理器的每个处理器核分配的传输息体的通道;N-1表示QMC的个数;Scache表示Cache Line所占的字节。
需要说明的是,在此方法中,进行进程间通信的众核处理器中有至少两个处理器核,使每两个处理器核之间复用一QMC。若众核处理器中有N个处理器核,则有N-1个QMC。
示例性的,若N为48,则QMC的个数为47,Cache Line大小为32字节Addr占5字节,消息体的大小size占1字节,目的进程标识占2字节,第一通道中承载的字节数为8192字节,则根据公式
Figure BDA00002504160400091
确定QMC的传输数据量为160字节。根据公式Spayload=Schanel-Saddr-Ssize-Sdstp确定QMC所能发送的最大载荷为152字节。
确定处理器核确定QMC所能发送的最大载荷的第三种方法为:
确定处理器核将第一通道分为用于内核间通信的部分和用于应用程序间通信的部分。确定处理器核根据公式
Figure BDA00002504160400092
Figure BDA00002504160400093
确定用于内核间通信的QMC的传输数据量。根据公式Spavload=Schanel1-Saddr-Ssize-Sdstp确定用于内核间通信的QMC所能发送的最大载荷。其中,Pkernel表示确定处理器核用于内核间通信的占第一通道的百分比;N-1表示用于内核间通信的QMC的个数。
进一步的,在此方法中,内核间通信的QMC个数的确定方式是,在进行进程间通信的众核处理器中有至少两个处理器核的情况下,使每两个处理器核之间复用一个QMC。例如众核处理器中有N个处理器核,则有N-1个QMC。
确定处理器核根据公式 S chanel 2 = | S T * ( 1 - P kernel ) M * S cache | * S cache 确定所述确定处理器核用于应用程序间通信的QMC的传输数据量。根据公式Spayload=Schanel2-Saddr-Ssize-Sdstp确定所述确定处理器核用于应用程序间通信的QMC所能发送的最大载荷。其中,M表示用于应用程序间通信的QMC的个数。
需要说明的是,在此方法中,Pkernel和M都是根据用户需求预设设置的。
实例性的,N为48,则用于核间通信的QMC的个数为47,第一通道的50%用于核间通信,则Pkernel为50%,Cache Line大小为32字节Addr占5字节,消息体的大小size占1字节,目的进程标识占2字节,第一通道中承载的内核间通信的字节数为8192字节,则根据公式确定用于内核间通信的QMC的传输数据量为64字节,则根据公式Spayload=Schanel1-Saddr-Ssize-Sdstp确定用于内核间通信的QMC所能发送的最大载荷为56字节。
假设M为4,则根据 S chanel 2 = | S T * ( 1 - P kernel ) M * S cache | * S cache 确定用于应用程序间通信的QMC的传输数据量为1024字节,根据公式Spavload=Schanel2-Saddr-Ssize-Sdstp确定用于应用程序间通信的QMC所能发送的最大载荷为1016字节。
需要说明的是,进行进程间通信的众核处理器的至少两个处理器核中第一通道中承载的数据量是相同的。
需要说明的是,确定处理器核也可用其他方法确定QMC所能发送的最大载荷,本发明对此不做限制。
具体的,第一进程调用MsgLib中的库函数后,MsgLib中的库函数检测第一进程要发送的消息的消息体的大小size是否大于所述QMC所能发送的最大载荷。
若检测到消息的消息体的大小size大于所述QMC所能发送的最大载荷,则将所述消息体存储至共享内存中。并通过系统调用,将源处理器核由用户态切换为内核态,此时进入到源内核。
可选的,先将所述消息体写入到缓存单元,等到所述消息体的全部数据都写入值缓存单元后,再将所述缓存单元中的所述消息体的全部数据写入到所述共享存储器中。这样,能够保证从共享存储器中读到的消息体是完整和正确的。
需要说明的是,也可以将消息体的全部数据直接写入到共享存储器中,还可是其他方式将消息体的全部数据写入到共享存储器中,本发明对此不做限制。
可选的,所述消息体所占共享存储器的大小为高速缓存线CacheLine的大小的第一整数倍。所述第一整数为大于0的整数。
若检测到消息的消息体的大小size不大于所述QMC所能发送的最大载荷,则通过系统调用,将源处理器核由用户态切换为内核态,此时进入到源内核。
203、源内核将消息写入QMC。
具体的,在源内核处理器执行了步骤202a,或者,执行了步骤202b,且在步骤202b中检测出消息的消息体大于QMC所能承载的最大载荷的情况下,由于此消息的消息体已经存储至共享内存中,所以源内核只需将此消息的用于指示存储在共享内存中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至目的内核。
可选的,所述消息的消息头包括:所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size。
其中,共享内存中存储的起始地址不为空。所述起始地址以及所述消息体的大小用于指示存储在所述共享内存中的所述消息体。
或者,所述消息的消息头包括:所述消息体在所述共享内存中存储的起始地址以及结束地址。
其中,所述起始地址以及所述结束地址用于指示存储在所述共享内存中的所述消息体。且所述起始地址以及所述结束地址均不为空。
需要说明的是,所述消息的消息头还可用其他方法指示存储在所述共享内存中的所述消息体,本发明对此不做限制。
进一步的,所述消息头还包括:第一目的进程标识。
其中,所述第一目的进程标识用于标识所述消息头对应的所述目的进程。
更进一步的,所述消息头还包括:所述消息体的第一数据,使得所述目的进程根据所述消息头中包括的所述消息体的第一数据检测其是否与从所述cache中获取的所述消息体中的第一数据一致,如果一致,则执行后续所述消息体的处理流程。如果不一致,则可将从所述cache中获取的所述消息体丢弃,不作处理。
在执行了步骤202b,且在步骤202b中检测出消息的消息体不大于QMC所能承载的最大载荷的情况下,源内核将所述消息的消息体存储至所述QMC,并将用于指示存储在所述QMC中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至目的内核。即为将消息的消息头及消息体均存储至QMC中。
需要说明的是,在本发明所有实施例中,若消息的消息头及消息体均存储至QMC,则称此消息为小消息。
可选的,小消息的消息头包括:所述消息体的大小size,及标识信息。
其中,所述标识信息用于标示所述消息的消息体通过所述QMC传输。
可选的,所述标识信息包括:共享内存中存储的起始地址为空的信息。
需要说明的是,还可用其他信息作为标识信息,例如,通过将消息体的大小size设置为一个固定值作为标识信息,本发明对此不做限制。
进一步的,所述小消息的消息头还包括:第二目的进程标识。
204、源内核向目的处理器核的目的内核发送中断触发信号,以触发目的内核进行中断处理。目的内核接收中断触发信号。
具体的,源内核可以根据消息的消息头中携带的目的进程标识确定目的内核所在的目的处理器核,并向目的处理器核发送中断触发信号。
在消息的消息体存储在共享内存中的情况下,消息的消息头中的目的进程标识为第一目的进程标识,则源内核根据第一目的进程标识确定出第一目的处理器核,向此第一目的处理器核发送第一中断触发信号。此时,位于第一目的处理器核的目的内核接收第一中断触发信号。
若消息的消息体存储在QMC时,消息的消息头中的目的进程标识为第二目的进程标识,则源内核根据第二目的进程标识确定出第二目的处理器核,向此第二目的处理器核发送第二中断触发信号。此时,位于第二目的处理器核的目的内核接收第二中断触发信号。
需要说明的是,第一中断触发信号与第二中断触发信号可以相同,也可不同,本发明对此不做限制。
205、目的内核根据中断触发信号进行中断处理,并将所述QMC中存储的所述消息转存至相应的消息接收队列中。
具体的,目的内核接收到中断触发信号,进行中断处理,此时目的处理器停止执行当前进程,即为由用户态切换为内核态。
若目的内核接收的中断触发信号为第一中断触发信号,则说明消息的消息体存储在共享内存中,源内核将所述消息的消息头存储至QMC中。目的内核根据第一中断触发信号进行中断处理,且在第一中断处理过程中,从所述QMC中读取所述消息头,根据所述消息头中的所述第一目的进程标识将所述消息头放入所述目的进程对应的消息接收队列。
若目的内核接收的中断触发信号为第二中断触发信号,则说明消息的消息体存储在QMC中,源内核将所述消息的消息头及消息体存储至QMC中,即为源内核将小消息存储至QMC中。目的内核根据第二中断触发信号进行第二中断处理,并在第二中断处理过程中,从所述QMC中读取所述消息头及消息体,根据所述消息头中的所述第二目的进程标识将所述消息头及消息体作为一个小消息放入所述目的进程对应的消息接收队列。
206、目的内核退出中断处理后进行进程调度。
具体的,若目的内核进行的中断处理为第一中断处理,则退出第一中断处理后进行进程调度。若目的内核进行的中断处理为第二中断处理,则退出第二中断处理后进行进程调度。
目的内核进行进程调度后,若当前调度的进程为源处理器核的第一进程要发送消息的进程,即调度了目的进程,目的内核找到目的进程的消息接收队列,并获取此消息接收队列中存储的消息头。
需要说明的是,若当前调度的进程不是源处理器核的第一进程要发送消息的进程,即调度了第三进程,目的内核找到第三进程的消息接收队列,并获取此消息接收队列中存储的消息头。其处理过程与调度了目的进程的处理过程一致,下面以调度了目的进程为例进行说明。
207、目的内核检测消息头中是否包含所述标识信息。
其中,若消息的消息体存储在QMC时,此消息的消息头包含有标识信息。若消息的消息体存储在共享内存中,此消息的消息头中不包含标识信息。
需要说明的是,根据目的内核检测的结果不同,目的内核下面执行的步骤也不相同,若目的内核检测到消息头中包含有标识信息,则执行步骤208a。若目的内核检测到消息头中不包含标识信息,则执行步骤208b-209b。
208a、目的内核切换到目的进程。
具体的,若目的内核检测到消息头中包含有标识信息,则说明消息的消息体也是通过QMC传输至目的内核,并在步骤205中将此消息体存储至目的进程的消息接收队列中。
若在进行中断处理前,执行的进程就是目的进程,此时目的内核无需进行进程切换,只需由内核态切换到用户态,即可切换至目的进程,目的进程从与目的进程对应的消息接收队列中直接获取消息体。
若在进行中断处理前,执行的进程不是目的进程,则目的内核需执行进程切换程序,切换到目的进程,使得目的进程从与目的进程对应的消息接收队列中直接获取消息体。
208b、目的内核根据所述消息头执行CPU预取指令。
具体的,在目的内核在不执行步骤207的情况下,或者,在执行了步骤207,且目的内核检测到消息头中不包含标识信息,则根据消息头执行CPU预取指令,使得所述消息体被加载到所述目的处理器核对应的缓存cache中。
若消息头中包括:所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size,则目的内核根据所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size,执行CPU(Central Processing Unit,中央处理器)预取指令,使得目的内核将存储在共享内存中的所述消息中与所述消息头对应的消息体从共享内存中加载到目的处理器核对应的cache(缓存)中。
若消息头中包括:所述消息体在所述共享内存中存储的起始地址以及结束地址,则目的内核根据所述消息体在所述共享内存中存储的起始地址以及结束地址,执行CPU(Central Processing Unit,中央处理器)预取指令,使得目的内核将存储在共享内存中的所述消息中与所述消息头对应的消息体从共享内存中加载到目的处理器核对应的cache(缓存)中。
209b、切换到目的进程,使得所述目的进程从所述cache中获取所述消息体。
具体的,目的内核在将执行CPU预取指令后,目的内核切换到目的进程,可选的,在将消息体加载到目的处理器核对应的cache时,目的内核同时切换到目的进程,使得目的进程从所述cache中获取所述消息体。
若在进行中断处理前,执行的进程就是目的进程,此时目的内核无需进行进程切换,只需由内核态切换到用户态,即可切换至目的进程,目的进程从所述cache中获取所述消息体。
可选的,目的内核在将消息体加载到目的处理器核对应的cache时,同时由内核态切换到用户态,切换到目的进程。
若在进行中断处理前,执行的进程不是目的进程,则目的内核需执行进程切换程序,切换到目的进程,使得目的进程从所述cache中获取所述消息体。
可选的,目的内核在将消息体加载到目的处理器核对应的cache时,同时执行进程切换程序,切换到目的进程。
本发明实施例提供了一种众核处理器进程间相互通信的方法,目的内核根据消息的消息头检测对应的消息体是否由QMC传输。若不是由QMC传输,则目的内核获知消息体存储在共享内存中,根据获取的消息头执行CPU预取指令,指示将消息体由共享内存加载到目的处理器核对应的cache中,切换到目的进程,以使得目的进程从cache中获取消息体。若消息体直接QMC传输,则切换至目的进程,以使得目的进程从目的进程对应的消息队列中获取消息。这样,在进程间通信过程中,将消息体加载至cache中,从而使得目的进程可以直接从cache中获取消息体,而无需访问共享内存获取消息体,进而提高了消息体的读取速度,并提高了用户体验。并且,若消息体的大小不大于QMC所能承载的最大载荷时,通过QMC传输消息体,目的内核无需访问共享内存传输,直接从QMC中获取消息体,进一步提高了消息体的读取速度,提高了用户体验。
本发明实施例提供了一种众核处理器,如图5所示,包括:源处理器核401、目的处理器核402,所述目的处理器核运行有目的内核403,所述源处理器核401运行有源内核404,所述目的内核,如图6所示,包括:
获取单元4031,用于从快速消息通道QMC获取消息的消息头。
可选的,所述消息头包括:所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size,所述起始地址以及所述消息体的大小用于指示存储在所述共享内存中的所述消息体。或者,所述消息头包括:所述消息体在所述共享内存中存储的起始地址以及结束地址,所述起始地址以及所述结束用于指示存储在所述共享内存中的所述消息体。
指令预取单元4032,用于根据所述获取单元4031获取的所述消息头执行CPU预取指令,使得存储在共享内存中的所述消息中与所述消息头对应的消息体被加载到所述目的处理器核对应的缓存cache中。
进程切换单元4033,用于在所述指令预取单元4032执行CPU预取指令后,切换到目的进程,使得所述目的进程从所述cache中获取所述消息体。
所述目的内核403,如图7所示,还包括:
可选的,上述所述消息头包括:标识信息。
其中,所述标识信息用于标示所述消息的消息体通过所述QMC传输的信息。
第一检测单元4034,用于检测所述消息头中是否包含所述标识信息。
具体的,所述指令预取单元4032具体用于,在所述第一检测单元4034检测出所述消息头中不包含标识信息的情况下,根据所述获取单元4031获取的所述消息头执行CPU预取指令。
进一步的,所述目的内核403,如图8所示,还包括:
第一收发单元4035,用于接收源内核404发送的第一中断触发信号。
第一处理单元4036,用于根据所述第一收发单元4035接收的第一中断触发信号进行第一中断处理。
所述消息头还包括:第一目的进程标识,用于标识所述消息头对应的所述目的进程。
所述获取单元4031具体用于,在所述第一处理单元4036进行第一中断处理过程中,从所述QMC中读取所述消息头,根据所述消息头中的所述第一目的进程标识将所述消息头放入所述目的进程对应的消息接收队列。
进一步的,在消息的消息体存储在共享内存的情况下,所述消息头还包括:所述消息体的第一数据,使得所述目的进程根据所述消息头中包括的所述消息体的第一数据检测其是否与从所述cache中获取的所述消息体中的第一数据一致,如果一致,则执行后续所述消息体的处理流程。如果不一致,则可将从所述cache中获取的所述消息体丢弃,不作处理。
所述第一处理单元4036,还用于退出第一中断处理后进行进程调度。
所述获取单元4031具体用于,在所述第一处理单元4036调度到所述目的进程时,从所述目的进程对应的消息接收队列中获取所述消息头。
上述进程切换单元4033具体用于,在所述第一检测单元4034检测出所述消息头中包含所述标识信息,则切换到目的进程,使得所述目的进程从所述QMC中获取所述消息中与所述消息头对应的消息体。
进一步的,所述消息头还包括:第二目的进程标识。
所目的内核,如图9所示,还包括:
第二收发单元4037,用于接收所述源内核404发送的第二中断触发信号。
第二处理单元4038,还用于根据所述第二收发单元4037接收的第二中断触发信号进行第二中断处理。
所述获取单元4031具体用于,在所述第二处理单元4038进行第二中断处理过程中,从所述QMC中读取所述消息头及消息体,根据所述消息头中的所述第二目的进程标识将所述消息头及消息体放入所述目的进程对应的消息接收队列。
所述第二处理单元4038,还用于退出第二中断处理后进行进程调度。
所述进程切换单元4033,还用于在所述第一检测单元4034检测出所述消息头中包含所述标识信息的情况下,在所述第二处理单元4038调度到所述目的进程时,切换到所述目的进程,使得所述目的进程从与所述目的进程对应的消息接收队列中获取所述消息体。
需要说明的是,第一处理单元与第二处理单元可以集成为一个处理单元,也可单独设置为两个处理单元。第一收发单元与第二收发单元可以集成为一个收发单元,也可单独设置为两个收发单元,本发明对此不做限制。
所述源处理器核401,如图10所示,包括:
第二检测单元4011,用于检测所述消息体的大小size是否大于所述QMC所能发送的最大载荷。
存储单元4012,用于在所述第二检测单元4011检测到所述消息体的大小size大于所述QMC所能发送的最大载荷,则将所述消息体存储至共享内存中。
具体的,所述存储单元4012具体用于,先将所述消息体的全部数据写入到缓存单元,再将所述缓存单元中的所述消息体的全部数据写入到所述共享存储器中。
可选的,所述消息体所述共享存储器的大小为高速缓存线CacheLine的大小的第一整数倍;所述第一整数为大于0的整数。
所述源内核404,参考图10所示,包括:
第三处理单元4041,将用于指示存储在共享内存中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至目的内核。
所述第三处理单元4041,还用于在所述源处理器核401的检测单元4011检测到所述消息体的大小size不大于所述QMC所能发送的最大载荷,则所述消息体存储至所述QMC,并将用于指示存储在所述QMC中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至目的内核。
具体的,若消息的消息体的大小size大于QMC所能承载的最大载荷,则所述消息头用于指示存储在所述共享内存中的所述消息体。
若消息的消息体的大小size不大于QMC所能承载的最大载荷,则所述消息头用于指示存储在所述QMC中所述消息的消息体。
本发明实施例提供了一种众核处理器,目的处理器核的目的内核从QMC中传输的消息头,并存储至目的进程对应的消息接收队列中。目的内核根据消息的消息头检测对应的消息体是否由QMC传输。若不是由QMC传输,则目的内核获知消息体存储在共享内存中,根据获取的消息头执行CPU预取指令,指示将消息体由共享内存加载到目的处理器核对应的cache中,切换到目的进程,以使得目的进程从cache中获取消息体。若消息体直接QMC传输,则切换至目的进程,以使得目的进程从目的进程对应的消息队列中获取消息。这样,在进程间通信过程中,将消息体加载至cache中,从而使得目的进程可以直接从cache中获取消息体,而无需访问共享内存获取消息体,进而提高了消息体的读取速度,并提高了用户体验。并且,若消息体的大小不大于QMC所能承载的最大载荷时,通过QMC传输消息体,目的内核无需访问共享内存传输,直接从QMC中获取消息体,进一步提高了消息体的读取速度,提高了用户体验。
本发明实施例提供了一种众核处理器系统,如图11所示,包括:源处理器核801,目的处理器核802,存储器803。
所述存储器803,用于存储所述源处理器核及所述目的处理器核运行的代码。
所述目的处理器核802用于读取所述存储器803中存储的代码以便目的内核Kernal执行,通过运行内核程序,执行下述方法:
目的内核Kernal,执行从快速消息通道QMC获取消息的消息头。
可选的,所述消息头包括:所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size,所述起始地址以及所述消息体的大小用于指示存储在所述共享内存中的所述消息体。或者,所述消息头包括:所述消息体在所述共享内存中存储的起始地址以及结束地址,所述起始地址以及所述结束用于指示存储在所述共享内存中的所述消息体。
目的内核Kernal,还执行根据所述消息头执行CPU预取指令,使得存储在共享内存中的所述消息中与所述消息头对应的消息体被加载到所述目的处理器核对应的缓存cache中。
目的内核Kernal,还执行切换到目的进程,使得所述目的进程从所述cache中获取所述消息体。
进一步的,上述所述消息头包括:标识信息。
其中,所述标识信息用于标示所述消息的消息体通过所述QMC传输的信息。
此时,所述目的内核Kernal,还执行检测所述消息头中是否包含标识信息。
具体的,在检测出所述消息头中不包含标识信息,则根据所述消息头执行CPU预取指令。
进一步的,所述目的内核Kernal,还执行接收源处理器核801发送的第一中断触发信号。并根据接收的所述第一中断触发信号进行第一中断处理。
所述消息头还包括:第一目的进程标识,用于标识所述消息头对应的所述目的进程。
目的内核Kernal在进行第一中断处理过程中,还执行从所述QMC中读取所述消息头,根据所述消息头中的所述第一目的进程标识将所述消息头放入所述目的进程对应的消息接收队列。
进一步的,在消息的消息体存储在共享内存的情况下,所述消息头还包括:所述消息体的部分数据,使得所述目的进程根据所述消息体的部分数据检测所述从所述cache中获取的所述消息体。
目的内核Kernal,还执行在退出第一中断处理后进行进程调度。
具体的,在目的内核Kernal调度到所述目的进程时,从所述目的进程对应的消息接收队列中获取所述消息头。
在检测出所述消息头中包含标识信息的情况下,则目的内核Kernal切换到目的进程,使得所述目的进程从所述QMC中获取所述消息中与所述消息头对应的消息体。
进一步的,所述消息头还包括:第二目的进程标识。
此时,目的内核Kernal,还执行接收所述源处理器核801发送的第二中断触发信号。并根据接收的所述第二中断触发信号进行第二中断处理。
具体的,目的内核Kernal在执行第二中断处理过程中,从所述QMC中读取所述消息头及消息体,根据所述消息头中的所述第二目的进程标识将所述消息头及消息体放入所述目的进程对应的消息接收队列。
所述目的内核Kernal,还执行在退出第二中断处理后进行进程调度。
具体的,在目的内核Kernal调度到所述目的进程时,切换到所述目的进程,使得所述目的进程从与所述目的进程对应的消息接收队列中获取所述消息体。
所述源处理器核801用于读取所述存储器803中存储的代码,以便源内核Kernal执行,通过运行内核程序,执行下述方法:
所述源处理器核801,执行检测所述消息体的大小size是否大于所述QMC所能发送的最大载荷。
具体的,在检测到所述消息体的大小size大于所述QMC所能发送的最大载荷,则将所述消息体存储至共享内存中。
可选的,所述源处理器核801具体执行,先将所述消息体的全部数据写入到缓存单元,再将所述缓存单元中的所述消息体的全部数据写入到所述共享存储器中。
可选的,所述消息体所述共享存储器的大小为高速缓存线CacheLine的大小的第一整数倍;所述第一整数为大于0的整数。
所述源内核Kernal,执行将用于指示存储在共享内存中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至目的内核。
所述源内核Kernal,还执行在检测到所述消息体的大小size不大于所述QMC所能发送的最大载荷,则所述消息体存储至所述QMC,并将用于指示存储在所述QMC中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至目的内核。
具体的,若消息的消息体的大小size大于QMC所能承载的最大载荷,则所述消息头用于指示存储在所述共享内存中的所述消息体。
若消息的消息体的大小size不大于QMC所能承载的最大载荷,则所述消息头用于指示存储在所述QMC中所述消息的消息体。
本发明实施例提供了一种众核处理器系统,目的处理器核的目的内核从QMC中传输的消息,并存储至目的进程对应的消息接收队列中。目的内核根据消息的消息头检测对应的消息体是否由QMC传输。若不是由QMC传输,则目的内核获知消息体存储在共享内存中,根据获取的消息头执行CPU预取指令,指示将消息体由共享内存加载到目的处理器核对应的cache中,切换到目的进程,以使得目的进程从cache中获取消息体。若消息体直接QMC传输,则切换至目的进程,以使得目的进程从目的进程对应的消息队列中获取消息。这样,在进程间通信过程中,将消息体加载至cache中,从而使得目的进程可以直接从cache中获取消息体,而无需访问共享内存获取消息体,进而提高了消息体的读取速度,并提高了用户体验。并且,若消息体的大小不大于QMC所能承载的最大载荷时,通过QMC传输消息体,目的内核无需访问共享内存传输,直接从QMC中获取消息体,进一步提高了消息体的读取速度,提高了用户体验。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (22)

1.一种众核处理器进程间相互通信的方法,其特征在于,由目的内核Kernal执行,所述目的内核对应于目的处理器核,所述方法包括:
从快速消息通道QMC获取消息的消息头;
根据所述消息头执行CPU预取指令,使得存储在共享内存中的所述消息中与所述消息头对应的消息体被加载到所述目的处理器核对应的缓存cache中;
切换到目的进程,使得所述目的进程从所述cache中获取所述消息体。
2.根据权利要求1所述的方法,其特征在于,所述消息头包括所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size,所述起始地址以及所述消息体的大小用于指示存储在所述共享内存中的所述消息体;
或者,
所述消息头包括所述消息体在所述共享内存中存储的起始地址以及结束地址,所述起始地址以及所述结束地址用于指示存储在所述共享内存中的所述消息体。
3.根据权利要求1所述的方法,其特征在于,所述消息头包括:标识信息;所述标识信息用于标示所述消息的消息体通过所述QMC传输。
4.根据权利要求3所述的方法,其特征在于,在所述根据所述消息头执行CPU预取指令之前,还包括:
检测所述消息头中是否包含所述标识信息;
所述根据所述消息头执行CPU预取指令包括:
若检测出所述消息头中不包含所述标识信息,则根据所述消息头执行CPU预取指令。
5.根据权利要求1-4任一项所述的方法,其特征在于:
所述消息头包括第一目的进程标识,用于标识所述消息头对应的所述目的进程;
所述方法还包括,在所述从快速消息通道QMC获取消息的消息头之前,包括:
接收源内核发送的第一中断触发信号;
根据所述第一中断触发信号进行第一中断处理,在第一中断处理过程中,从所述QMC中读取所述消息头,根据所述消息头中的所述第一目的进程标识将所述消息头放入所述目的进程对应的消息接收队列;
退出第一中断处理后进行进程调度;
所述从快速消息通道QMC获取消息的消息头包括:
当调度到所述目的进程时,从所述目的进程对应的消息接收队列中获取所述消息头。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述消息头包括:所述消息体的第一数据;
所述方法还包括:
使得所述目的进程根据所述消息头中包括的所述消息体的第一数据检测其是否与从所述cache中获取的所述消息体中的第一数据一致,如果一致,则执行后续对所述消息体的处理流程。
7.根据权利要求4所述的方法,其特征在于,还包括:
若检测出所述消息头中包含所述标识信息,则切换到目的进程,使得所述目的进程从所述QMC中获取所述消息中与所述消息头对应的消息体。
8.根据权利要求7述的方法,其特征在于,还包括:
所述消息头还包括:第二目的进程标识;
所述方法还包括:
在从快速消息通道QMC获取消息的消息头之前,包括:
接收所述源内核发送的第二中断触发信号;
根据所述第二中断触发信号进行第二中断处理,在第二中断处理过程中,从所述QMC中读取所述消息头及消息体,根据所述消息头中的所述第二目的进程标识将所述消息头及消息体放入所述目的进程对应的消息接收队列;
退出第二中断处理后进行进程调度;
所述若检测出所述消息头中包含所述标识信息,则切换到目的进程,使得所述目的进程从所述QMC中获取所述消息中与所述消息头对应的消息体包括:
若检测出所述消息头中包含所述标识信息,则当调度到所述目的进程时,切换到所述目的进程,使得所述目的进程从与所述目的进程对应的消息接收队列中获取所述消息体。
9.根据权利要求1-8任一项所述的方法,其特征在于,
所述消息体由源处理器核通过下述方法发送:
检测所述消息体的大小size是否大于所述QMC所能发送的最大载荷;
若检测到所述消息体的大小size大于所述QMC所能发送的最大载荷,则源处理器核将所述消息体存储至共享内存中;所述源内核将用于指示存储在共享内存中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至所述目的内核;
若检测到所述消息体的大小size不大于所述QMC所能发送的最大载荷,则所述源内核将所述消息的消息体存储至所述QMC,并将用于指示存储在所述QMC中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至所述目的内核。
10.根据权利要求9所述的方法,其特征在于,若检测到所述消息体的大小大于所述QMC所能发送的最大载荷,则将所述消息体存储至共享内存中包括:
将所述消息体的全部数据写入到缓存单元,再将所述缓存单元中的所述消息体的全部数据写入到所述共享存储器中。
11.根据权利要求9或10所述的方法,其特征在于,所述消息体所占共享存储器的大小为高速缓存线Cache Line的大小的第一整数倍;所述第一整数为大于0的整数。
12.一种众核处理器,包括:源处理器核、目的处理器核,所述目的处理器核运行有目的内核,其特征在于,所述目的内核包括:
获取单元,用于从快速消息通道QMC获取消息的消息头;
指令预取单元,用于根据所述获取单元获取的所述消息头执行CPU预取指令,使得存储在共享内存中的所述消息中与所述消息头对应的消息体被加载到所述目的处理器核对应的缓存cache中;
进程切换单元,用于在所述指令预取单元执行CPU预取指令后,切换到目的进程,使得所述目的进程从所述cache中获取所述消息体。
13.根据权利要求12所述的众核处理器,其特征在于,所述消息头包括所述消息体在所述共享内存中存储的起始地址以及所述消息体的大小size,所述起始地址以及所述消息体的大小用于指示存储在所述共享内存中的所述消息体;
或者,
所述消息头包括所述消息体在所述共享内存中存储的起始地址以及结束地址,所述起始地址以及所述结束用于指示存储在所述共享内存中的所述消息体。
14.根据权利要求12所述的众核处理器,其特征在于,所述消息头包括:标识信息;所述标识信息用于标示所述消息的消息体通过所述QMC传输。
15.根据权利要求14所述的众核处理器,其特征在于,所述目的内核还包括:
第一检测单元,用于检测所述消息头中是否包含所述标识信息;
所述指令预取单元具体用于,在所述第一检测单元检测出所述消息头中不包含标识信息的情况下,根据所述获取单元获取的所述消息头执行CPU预取指令。
16.根据权利要求12-15任一项所述的众核处理器,其特征在于,所述消息头包括第一目的进程标识,用于标识所述消息头对应的所述目的进程;
所述目的内核还包括:
第一收发单元,用于接收源内核发送的第一中断触发信号;
第一处理单元,用于根据所述第一收发单元接收的第一中断触发信号进行第一中断处理;
所述获取单元具体用于,在所述第一处理单元进行第一中断处理过程中,从所述QMC中读取所述消息头,根据所述消息头中的所述第一目的进程标识将所述消息头放入所述目的进程对应的消息接收队列;
所述第一处理单元,还用于退出第一中断处理后进行进程调度;
所述获取单元具体用于,在所述第一处理单元调度到所述目的进程时,从所述目的进程对应的消息接收队列中获取所述消息头。
17.根据权利要求15所述的众核处理器,其特征在于,
所述进程切换单元具体用于,在所述第一检测单元检测出所述消息头中包含所述标识信息,则切换到目的进程,使得所述目的进程从所述QMC中获取所述消息中与所述消息头对应的消息体。
18.根据权利要求17所述的众核处理器,其特征在于,
所述消息头还包括:第二目的进程标识;
所述目的内核还包括:
第二收发单元,还用于接收所述源内核发送的第二中断触发信号;
第二处理单元,还用于根据所述第二收发单元接收的第二中断触发信号进行第二中断处理;
所述获取单元具体用于,在所述第二处理单元进行第二中断处理过程中,从所述QMC中读取所述消息头及消息体,根据所述消息头中的所述第二目的进程标识将所述消息头及消息体放入所述目的进程对应的消息接收队列;
所述第二处理单元,还用于退出第二中断处理后进行进程调度;
所述进程切换单元具体用于,在所述第一检测单元检测出所述消息头中包含所述标识信息的情况下,若所述第二处理单元调度到所述目的进程时,切换到所述目的进程,使得所述目的进程从与所述目的进程对应的消息接收队列中获取所述消息体。
19.根据权利要求12-18任一项所述的众核处理器,其特征在于,
所述源处理器核包括:
第二检测单元,用于检测所述消息体的大小size是否大于所述QMC所能发送的最大载荷;
存储单元,用于在所述第二检测单元检测到所述消息体的大小size大于所述QMC所能发送的最大载荷,则将所述消息体存储至共享内存中;
所述源内核包括:
第三处理单元,将用于指示存储在共享内存中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至目的内核;
所述第三处理单元,还用于在所述源处理器核的检测单元检测到所述消息体的大小size不大于所述QMC所能发送的最大载荷,则所述消息体存储至所述QMC,并将用于指示存储在所述QMC中所述消息的消息体的信息作为消息头存储至所述QMC中,发送至目的内核。
20.根据权利要求19所述的众核处理器,其特征在于,
所述存储单元具体用于,先将所述消息体的全部数据写入到缓存单元,再将所述缓存单元中的所述消息体的全部数据写入到所述共享存储器中。
21.根据权利要求19或20所述的众核处理器,其特征在于,所述消息体所述共享存储器的大小为高速缓存线Cache Line的大小的第一整数倍;所述第一整数为大于0的整数。
22.一种众核处理器系统,其特征在于,包括:源处理器核,目的处理器核,存储器;
所述存储器,用于存储所述源处理器核及所述目的处理器核运行所需的代码;
所述目的处理器核用于读取所述存储器中存储的代码以便目的内核Kernal执行,通过运行内核程序,执行下述方法:
从快速消息通道QMC获取消息的消息头;
根据所述消息头执行CPU预取指令,使得存储在共享内存中的所述消息中与所述消息头对应的消息体被加载到所述目的处理器核对应的缓存cache中;
切换到目的进程,使得所述目的进程从所述cache中获取所述消息体。
CN201210505157.0A 2012-11-30 2012-11-30 一种众核处理器进程间相互通信的方法、装置及系统 Active CN103853620B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201210505157.0A CN103853620B (zh) 2012-11-30 2012-11-30 一种众核处理器进程间相互通信的方法、装置及系统
EP13859349.6A EP2908246B1 (en) 2012-11-30 2013-04-25 Method, device and system for inter-process communication of many-core processor
PCT/CN2013/074709 WO2014082421A1 (zh) 2012-11-30 2013-04-25 一种众核处理器进程间相互通信的方法、装置及系统
US14/725,066 US9678813B2 (en) 2012-11-30 2015-05-29 Method, apparatus, and system for mutual communication between processes of many-core processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210505157.0A CN103853620B (zh) 2012-11-30 2012-11-30 一种众核处理器进程间相互通信的方法、装置及系统

Publications (2)

Publication Number Publication Date
CN103853620A true CN103853620A (zh) 2014-06-11
CN103853620B CN103853620B (zh) 2017-06-09

Family

ID=50827134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210505157.0A Active CN103853620B (zh) 2012-11-30 2012-11-30 一种众核处理器进程间相互通信的方法、装置及系统

Country Status (4)

Country Link
US (1) US9678813B2 (zh)
EP (1) EP2908246B1 (zh)
CN (1) CN103853620B (zh)
WO (1) WO2014082421A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016041447A1 (zh) * 2014-09-15 2016-03-24 华为技术有限公司 基于多核处理器芯片的数据处理方法、装置以及系统
CN107391278A (zh) * 2017-07-25 2017-11-24 郑州云海信息技术有限公司 一种基于共享内存的前后端通信方法
CN110149262A (zh) * 2019-04-02 2019-08-20 视联动力信息技术股份有限公司 一种信令报文的处理方法和装置、及存储介质

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487933A (zh) * 2015-11-24 2016-04-13 无锡江南计算技术研究所 一种基于核间异步消息队列与共享内存的域间通信方法
CN105912410A (zh) * 2015-12-15 2016-08-31 乐视网信息技术(北京)股份有限公司 一种用于多个进程之间进行通信方法及客户端
KR102578648B1 (ko) 2016-03-14 2023-09-13 삼성전자주식회사 모뎀 데이터에 따라 코어 스위칭이 수행되는 애플리케이션 프로세서 및 이를 포함하는 시스템 온 칩
CN106657327A (zh) * 2016-12-20 2017-05-10 上海银禾油信息技术有限公司 消息推送方法及装置
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US10846224B2 (en) * 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
CN111382441B (zh) * 2018-12-29 2023-04-25 阿里巴巴集团控股有限公司 一种应用处理器、协处理器及数据处理设备
US11477123B2 (en) 2019-09-26 2022-10-18 Apple Inc. Methods and apparatus for low latency operation in user space networking
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
CN110851289B (zh) * 2019-10-23 2022-11-08 新华三信息安全技术有限公司 协议报文处理方法及交换机
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050058119A1 (en) * 1999-06-29 2005-03-17 Hidenori Inouchi Node apparatus and packet communication method for communicating with a mobile terminal
US6938253B2 (en) * 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method
CN101448018A (zh) * 2008-12-26 2009-06-03 中兴通讯股份有限公司 进程间通信方法和装置
CN102622329A (zh) * 2011-02-11 2012-08-01 微软公司 多核计算机中的远程核操作
CN102779110A (zh) * 2011-05-11 2012-11-14 扬智科技股份有限公司 基于远端代码调用和数据访问的多核心系统及其控制方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4388895B2 (ja) 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
US7950012B2 (en) 2005-03-16 2011-05-24 Oracle America, Inc. Facilitating communication and synchronization between main and scout threads
CN100424675C (zh) * 2005-10-12 2008-10-08 大唐移动通信设备有限公司 多处理器系统的消息通信方法及装置
US8108863B2 (en) 2005-12-30 2012-01-31 Intel Corporation Load balancing for multi-threaded applications via asymmetric power throttling
CN100471180C (zh) 2006-02-09 2009-03-18 华为技术有限公司 一种消息传递的方法、装置和系统
US7890488B2 (en) 2007-10-05 2011-02-15 Yahoo! Inc. System and method for caching posting lists
US7953685B2 (en) 2007-12-27 2011-05-31 Intel Corporation Frequent pattern array
US8196147B1 (en) * 2008-10-31 2012-06-05 Netapp, Inc. Multiple-processor core optimization for producer-consumer communication
US8122132B2 (en) 2008-12-16 2012-02-21 International Business Machines Corporation Techniques for dynamically assigning jobs to processors in a cluster based on broadcast information
US8009682B2 (en) * 2009-05-05 2011-08-30 Citrix Systems, Inc. Systems and methods for packet steering in a multi-core architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050058119A1 (en) * 1999-06-29 2005-03-17 Hidenori Inouchi Node apparatus and packet communication method for communicating with a mobile terminal
US6938253B2 (en) * 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method
CN101448018A (zh) * 2008-12-26 2009-06-03 中兴通讯股份有限公司 进程间通信方法和装置
CN102622329A (zh) * 2011-02-11 2012-08-01 微软公司 多核计算机中的远程核操作
CN102779110A (zh) * 2011-05-11 2012-11-14 扬智科技股份有限公司 基于远端代码调用和数据访问的多核心系统及其控制方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016041447A1 (zh) * 2014-09-15 2016-03-24 华为技术有限公司 基于多核处理器芯片的数据处理方法、装置以及系统
CN105589829A (zh) * 2014-09-15 2016-05-18 华为技术有限公司 基于多核处理器芯片的数据处理方法、装置以及系统
CN107391278A (zh) * 2017-07-25 2017-11-24 郑州云海信息技术有限公司 一种基于共享内存的前后端通信方法
CN110149262A (zh) * 2019-04-02 2019-08-20 视联动力信息技术股份有限公司 一种信令报文的处理方法和装置、及存储介质
CN110149262B (zh) * 2019-04-02 2021-03-12 视联动力信息技术股份有限公司 一种信令报文的处理方法和装置、及存储介质

Also Published As

Publication number Publication date
US20150261588A1 (en) 2015-09-17
EP2908246A1 (en) 2015-08-19
EP2908246A4 (en) 2015-08-19
WO2014082421A1 (zh) 2014-06-05
CN103853620B (zh) 2017-06-09
EP2908246B1 (en) 2018-03-21
US9678813B2 (en) 2017-06-13

Similar Documents

Publication Publication Date Title
CN103853620A (zh) 一种众核处理器进程间相互通信的方法、装置及系统
US20060165109A1 (en) Data communication device
US9507652B2 (en) Synchronizing communication over shared memory
CN108140234B (zh) 基于命令流标记的gpu操作算法选择
US20150212941A1 (en) Managing out-of-order memory command execution from multiple queues while maintaining data coherency
US8145820B2 (en) Multiprocessor system and computer program product
KR101717494B1 (ko) 인터럽트 처리 장치 및 방법
CN107003899B (zh) 一种中断响应方法、装置及基站
CN101390057A (zh) 两级中断服务例程
US9619265B2 (en) Reconfiguration with virtual machine switching
US11803490B2 (en) Apparatus and method for data transmission and readable storage medium
US20070130386A1 (en) DMA chain
CN110677623B (zh) 数据处理的方法、装置、设备和存储介质
US8244947B2 (en) Methods and apparatus for resource sharing in a programmable interrupt controller
CN112559403B (zh) 一种处理器及其中的中断控制器
US20130262726A1 (en) Task based message signaled interrupt
US8909873B2 (en) Traffic control method and apparatus of multiprocessor system
CN105579963A (zh) 任务处理装置、电子设备及方法
EP2413248A1 (en) Direct memory access device for multi-core system and operating method of the same
US20200125510A1 (en) Method for handling kernel service request for interrupt routines in multi-core environment and electronic device thereof
US20140139533A1 (en) Graphic processing unit virtual apparatus, graphic processing unit host apparatus, and graphic processing unit program processing methods thereof
CN103593305A (zh) 信息处理设备、信息处理方法以及程序
KR20130051821A (ko) 인터럽트 속도 지연이 개선된 코어 시스템 및 이의 벡터 레지스터 파일 데이터 전송방법
KR102668599B1 (ko) 하드웨어 가속을 위한 하드웨어 리소스들의 임베디드 스케줄링
CN117075819A (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
GR01 Patent grant
GR01 Patent grant