CN101853238A - 通信处理器间消息通信方法和系统 - Google Patents
通信处理器间消息通信方法和系统 Download PDFInfo
- Publication number
- CN101853238A CN101853238A CN201010192654A CN201010192654A CN101853238A CN 101853238 A CN101853238 A CN 101853238A CN 201010192654 A CN201010192654 A CN 201010192654A CN 201010192654 A CN201010192654 A CN 201010192654A CN 101853238 A CN101853238 A CN 101853238A
- Authority
- CN
- China
- Prior art keywords
- processor
- message
- biu
- buffer zone
- buffer
- 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.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供一种通信处理器间消息通信方法和系统,其中方法包括:由主处理器在共享内存中动态更新发送缓冲区和接收缓冲区;利用所述发送缓冲区或所述接收缓冲区在所述主处理器和从处理器之间进行消息通信。系统包括主处理器、从处理器和共享内存,其中:所述主处理器用于在共享内存中动态更新发送缓冲区和接收缓冲区,并利用所述发送缓冲区或所述接收缓冲区与所述从处理器进行消息通信;所述从处理器用于利用所述发送缓冲区或所述接收缓冲区与所述主处理器进行消息通信。本实施例实现了对共享存储资源的更有效利用。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种通信处理器间消息通信方法和系统。
背景技术
在共享存储器系统中,多个处理器通过对共享存储器的访问来交换信息。当共享存储器系统为基于非均匀存储器访问(Non Uniform Memory Access;以下简称:NUMA)的系统时,各个处理器对共享存储器的访问效率及访问功能各不相同。其中,在NUMA系统中,邮箱通讯技术为处理器间交换信息的一种典型方法。
现有的邮箱通讯技术中,在共享存储器中两个方向的数据通道上分别设置环形数据队列和数据索引队列,其中,每个环形数据队列由N个长度为M的数据项构成,通过读指针和写指针来控制对环形数据队列的循环读写,每个数据索引队列用于存放环形数据队列中某个数据包的指针。作为发送方的处理器直接从数据写指针所指位置开始填写发送数据,然后更新数据写指针,并将发送数据的首地址写入数据索引队列中写指针所指的存储单元中,然后更新索引写指针,使其指向下一个存储单元。作为接收方的处理器则根据数据索引队列的读指针和写指针来计算待接收的数据包的个数,从索引读指针所指的存储单元开始逐个读取各个数据包的首地址,然后根据该地址接收数据,并更新索引读指针和数据读指针。
现有技术中共享存储器系统在两个方向上的环形数据队列均占据固定大小的共享存储空间,对共享存储资源的利用率较低。
发明内容
本发明实施例提供一种通信处理器间消息通信方法和系统,实现对共享存储资源的更有效利用。
本发明实施例提供一种通信处理器间消息通信方法,包括:
由主处理器在共享内存中动态更新发送缓冲区和接收缓冲区;
利用所述发送缓冲区或所述接收缓冲区在所述主处理器和从处理器之间进行消息通信。
本发明实施例提供一种通信处理器间消息通信系统,包括主处理器、从处理器和共享内存,其中:
所述主处理器用于在共享内存中动态更新发送缓冲区和接收缓冲区,并利用所述发送缓冲区或所述接收缓冲区与所述从处理器进行消息通信;
所述从处理器用于利用所述发送缓冲区或所述接收缓冲区与所述主处理器进行消息通信。
本发明实施例的通信处理器间消息通信方法和系统,通过主处理器在共享内存中动态更新发送缓冲区和接收缓冲区,主处理器利用发送缓冲区或接收缓冲区与处理器进行消息通信,从处理器利用发送缓冲区或接收缓冲区与处理器进行消息通信;本实施例实现了对共享存储资源的更有效利用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明通信处理器间消息通信方法实施例一的流程示意图;
图2为本发明通信处理器间消息通信方法实施例二的流程示意图;
图3为本发明通信处理器间消息通信方法实施例二中主从处理器的通信示意图;
图4为本发明通信处理器间消息通信方法实施例三的流程示意图;
图5为本发明通信处理器间消息通信方法实施例四的流程示意图;
图6为本发明通信处理器间消息通信方法实施例五的流程示意图;
图7为本发明通信处理器间消息通信方法实施例六的流程示意图;
图8为本发明通信处理器间消息通信方法实施例七的流程示意图;
图9为本发明通信处理器间消息通信系统实施例一的结构示意图;
图10为本发明通信处理器间消息通信系统实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明通信处理器间消息通信方法实施例一的流程示意图,如图1所示,本实施例提供了一种通信处理器间消息通信方法,可以包括如下步骤:
步骤101,由主处理器在共享内存中动态更新发送缓冲区和接收缓冲区;
步骤102,利用所述发送缓冲区或所述接收缓冲区在所述主处理器和从处理器之间进行消息通信。
在本实施例中,通信处理器可以包括互相通信的主处理器和从处理器,其中,主处理器可以由和共享存储器联系更紧密的处理器担任。作为一个示例,在NUMA系统中,由于主处理器与共享存储器之间的联系更紧密,其对共享存储器的访问效果更高,因此主处理器用于完成对共享存储器中共享内存的管理。
本实施例中,主处理器用于在共享内存中动态更新用于主处理器和从处理器间消息通信的发送缓冲区和接收缓冲区,此处的更新操作可以包括分配和释放操作,即主处理器可以用于提供从共享内存中分配缓冲区和向共享内存中释放缓冲区的操作,并利用分配的接收缓冲区或发送缓冲区与从处理器进行消息通信。而从处理器则不承担缓冲区分配和释放,其只利用分配的发送缓冲区或接收缓冲区与主处理器进行消息通信。
本实施例中,接收和发送相对于主处理器而言,接收为从处理器向主处理器的消息传递,发送为主处理器向从处理器的消息传递,后续不再赘述。
本发明实施例提供了一种通信处理器间消息通信方法,通过主处理器在共享内存中动态更新发送缓冲区和接收缓冲区,主处理器利用发送缓冲区或接收缓冲区与处理器进行消息通信,从处理器利用发送缓冲区或接收缓冲区与处理器进行消息通信;本实施例中接收缓冲区和发送缓冲区均由主处理器从同一个共享内存中动态分配,使用完后再由主处理器动态释放到共享内存中,从而使得共享存储资源得到了重复利用,相比于现有技术更有效地利用了共享存储资源。
图2为本发明通信处理器间消息通信方法实施例二的流程示意图,如图2所示,本实施例提供了一种通信处理器间消息通信方法,本实施例从从处理器向主处理器发送消息,主处理器接收消息的角度来说明,具体可以包括如下步骤:
步骤201,从处理器根据消息的数据量计算所需的接收缓冲区数量n,并从接收缓冲区索引表获取n个缓冲区索引单元(Buffer Index Unit;以下简称:BIU)。
其中,主处理器和从处理器的关系可参见图3,图3为本发明通信处理器间消息通信方法实施例二中主从处理器的通信示意图,如图3所示,本实施例中的共享内存可以具体为图3中所示的共享内存池。本实施例中的共享内存为从共享存储空间划分出来的用于动态分配内存块的区域,在需要使用共享内存块时,主处理器可以从共享内存中分配获取到空闲内存块,在内存块使用完毕之后,主处理器再将该内存块释放到共享内存池中。如图3所示,在主从处理器的接收和发送两个方向上各有一个缓冲区索引表,即接收缓冲区索引表和发送缓冲区索引表。在本实施例中,接收缓冲区索引表和发送缓冲区索引表均由一组BIU构成,每个BIU包含对应的缓冲区的描述信息,本实施例中的描述信息包括缓冲区指针(Buffer Pointer;以下简称:BP)、有效数据长度(Valid Data Length;以下简称:VDL)、控制域(Control Field;以下简称:CF)和逻辑通道号(Logic Channel Number;以下简称:LCN)。其中,一条消息所包含的数据可以保存在一个缓冲区内,也可以保存在多个缓冲区内,BP用于指示该BIU对应的缓冲区所携带的消息数据的首地址,VDL用于指示该BIU对应的缓冲区所携带的消息数据的有效数据量。CF包含RF和结尾标志(End;以下简称:ED);RF用于标识缓存区中是否缓存数据,RF有效表示该BIU对应的缓存区中已缓冲有数据,RF无效表示该BIU对应的缓冲区为空,未缓冲数据;ED用于标识对应的接收缓冲区所携带的数据是否为消息结尾,ED有效表示该BIU对应的接收缓冲区携带的数据为消息结尾,ED无效表示该BIU对应的接收缓冲区未携带消息结尾的数据,在后续的接收缓冲区中还携带有本消息的数据。LCN用于标识该BIU对应的缓冲区所携带的消息所属的逻辑通道,不同的逻辑通道用于建立主处理器和从处理器之间不同的通信连接。
在本实施例中,当从处理器向主处理器发送消息前,从处理器先根据待发送消息的数据量,并结合接收缓冲区的尺寸,来计算本次发送消息过程所需的接收缓冲区的数量n,并从接收缓冲区索引表中获取n个BIU。其中n为正整数,BIU用于保存缓冲区的信息。
步骤202,如果检测到n个BIU对应的缓冲区允许写入消息,从处理器将消息写入n个BIU对应的接收缓冲区。
从处理器在从接收缓冲区索引表中获取到n个BIU后,对该n个BIU的状态进行检测,如果检测到这n个BIU对应的接收缓冲区允许写入消息,则从处理器将待发送的消息写入到这n个BIU对应的接收缓冲区中。
例如,从处理器具体可以根据接收缓冲区索引表中BIU的RF来检测是否允许写入消息,当BIU的RF为无效时,表示允许写入数据;当为有效时表示已经写入数据,尚未读取,因而不允许写入数据;当BIU中RF为无效的数值较大时,表明这对应的接收缓冲区尚未使用的缓存较多;如果RF为有效的BIU较多时,表明接收方向已经积压了过多消息等待主处理器接收。
步骤203,如果检测到接收缓冲区被所述从处理器写入消息,主处理器从共享内存中分配空闲内存块,并将空闲内存块替换承载消息的接收缓冲区。
主处理器在接收消息时,对接收缓冲区的状态进行检测。如果检测到接收缓冲区已经被从处理器写入消息,则主处理器从共享内存中分配空闲内存块,并将分配的空闲内存块替换承载消息的接收缓冲区。
例如,主处理器可以根据接收缓冲区索引表中当前BIU的RF检测对应的接收缓冲区是否被从处理器写入消息,当接收缓冲区索引表中当前BIU的RF为有效时,表明从处理器已经发送了新的消息。主处理器根据BIU的RF获取到承载消息的所有n个BIU,从共享内存中分配n个空闲内存块来替换承载该消息的接收缓冲区,并重新初始化这些BIU,从处理器可以向这些空闲的接收缓冲区中写入新的消息;而被替换的承载消息的接收缓冲区,处理完后可释放到共享内存池中。
本发明实施例提供了一种通信处理器间消息通信方法,主处理器和处理器利用动态更新的缓冲区收发消息,共享内存可以重复利用,相比于现有技术更有效地利用了共享存储资源;并且,进一步的,由主处理器动态更新缓冲区,可以避免对共享存储资源的使用浪费,减少存储开销。
另外,在现有技术中,两个处理器之间的异步运行关系造成它们向一个环形数据队列发送数据的速度和从这一环形队列接收数据的速度存在差异,即存在收发速度差,且收发速度差可能随时间变化,因此现有技术中需要预先设定足够大的数据项个数N,以适应收发速度差的变化。当收发速度差变化幅度较大时,相应地需要设定较大的N,则会造成共享存储资源的浪费;而设定较小的N时,容易因环形数据队列的溢出而导致数据发送失败。而在本实施例提供的通信处理器间消息通信方法中,主处理器接收消息和发送消息的时间开销很短,因此只需设置较短的接收缓冲区索引表便可以适应两个处理器间收发速度差的较大变化。
图4为本发明通信处理器间消息通信方法实施例三的流程示意图,如图4所示,本实施例提供了一种通信处理器间消息通信方法,本实施例从主处理器向从处理器发送消息,从处理器接收消息的角度来说明,具体可以包括如下步骤:
步骤401,如果检测到发送缓冲区索引表的当前BIU对应的发送缓冲区允许写入消息,主处理器将承载消息的内存块作为发送缓冲区。
本实施例可以继续参见上述图3,图3中的发送缓冲区索引表用于在主处理器进行消息发送时对发送缓冲区进行管理。
当主处理器向从处理器发送消息前,主处理器向对发送缓冲区索引表进行扫描,检测发送缓冲区索引表中的当前BIU对应的发送缓冲区是否允许写入消息,如果检测到送缓冲区索引表的当前BIU对应的发送缓冲区允许写入消息,则主处理器将承载待发送消息的内存块直接作为发送缓冲区。例如,主处理器可以具体根据发送缓冲区索引表中的当前发送BIU位置对应的BIU的RF来检测是否允许写入消息,如果当前发送BIU位置对应的BIU的RF无效,表明该发送缓冲区允许写入消息,则主处理器直接将承载该待发送消息的内存块作为发送缓冲区,即可以将该内存块的首地址和待发送消息的长度填入该BIU的BP和VDL中,以完成向从处理器发送消息的过程。
步骤402,如果检测到所述发送缓冲区索引表的当前BIU对应的发送缓冲区已写入消息,从处理器从所述当前BIU对应的发送缓冲区读取消息,并将所述消息加入到所述BIU的LCN所对应的进程的消息队列中。
当主处理器向从处理器发送消息后,从处理器对消息进行接收,从处理器在接收消息前,先检测发送缓冲区索引表中当前BIU对应的缓冲区中是否已写入消息。
例如,从处理器可以具体根据发送缓冲区索引表中当前接收BIU位置对应的BIU的RF来判断对应的发送缓冲区是否已写入消息,当对应的BIU的RF有效时,表明该发送缓冲区已由主处理器写入消息。
如果当前BIU对应的缓冲区写入消息,从处理器从当前BIU对应的发送缓冲区中将消息读取出来,并将读取的该消息加入到该BIU的LCN所对应的进程的消息队列中。
步骤403,如果检测到发送缓冲区承载的消息已经被所述从处理器读取,主处理器将被所述从处理器读取的发送缓冲区释放到所述共享内存中。
主处理器在维护承载该消息的发送缓冲区时,先检测该发送缓冲区承载的消息是否被从处理器读取,如果是,则主处理器将被从处理器读取的发送缓冲区释放到共享内存中,并将发送缓冲区索引表中被从处理器读取的发送缓冲区对应的缓冲区索引单元BIU置为初始状态。
例如,主处理器可以具体维护发送缓冲区索引表中的一个待释放BIU位置,该待释放BIU位置用于标识最早承载消息且尚未被释放的发缓冲区。如果主处理器检测到发送缓冲区索引表中当前发送BIU位置与待释放BIU位置重叠时,则将该待释放BIU位置与当前发送BIU位置之间的未释放BIU对应的发送缓冲区释放到共享内存中,实现对那些消息已被从处理器接收了的发送缓冲区的释放处理。
本发明实施例提供了一种通信处理器间消息通信方法,主处理器和从处理器利用动态更新的缓冲区收发消息,共享内存可以重复利用,相比于现有技术更有效地利用了共享存储资源;并且,进一步的,由主处理器动态更新缓冲区,可以避免对共享存储资源的使用浪费,减少存储开销。
另外,在现有技术中,两个处理器之间的异步运行关系造成它们向一个环形数据队列发送数据的速度和从这一环形队列接收数据的速度存在差异,即存在收发速度差,且收发速度差可能随时间变化,因此现有技术中需要预先设定足够大的数据项个数N,以适应收发速度差的变化。当收发速度差变化幅度较大时,相应地需要设定较大的N,则会造成共享存储资源的浪费;而设定较小的N时,容易因环形数据队列的溢出而导致数据发送失败。而在本实施例提供的通信处理器间消息通信方法中,主处理器接收消息和发送消息的时间开销很短,因此只需设置较短的发送缓冲区索引表便可以适应两个处理器间收发速度差的较大变化。
图5为本发明通信处理器间消息通信方法实施例四的流程示意图,如图5所示,本实施例在上述实施例二的基础之上,提供了一种具体的通信处理器间消息通信方法,具体为从处理器向主处理器发送消息的过程,可以包括如下步骤:
步骤501,从处理器根据消息的数据量计算所需的接收缓冲区数量n。
在从处理器向主处理器发送消息时,从处理器先根据消息的数据量和接收缓冲区的尺寸计算所需的接收缓冲区数量,此处假设计算得到的所需的接收缓冲区数量为n,其中,n为正整数。其中,接收缓冲区的尺寸由从处理器向主处理器发送的大多数消息的典型数据量长度来确定,从而使得一个接收缓冲区就可以容纳从处理器向主处理器传递的大多数消息的数据量,因此,在本实施例中的大多数情况下,n取1,即需要1个接收缓冲区来接收消息。
步骤502,从处理器从接收缓冲区索引表中获取n个BIU。
从处理器在向主处理器发送消息时,从处理器维护接收缓冲区索引表中的当前发送BIU位置。在接收方向上,即从处理器向主处理器发送消息的方向上,本实施例中的接收缓冲区索引表中包含当前发送BIU位置和当前接收BIU位置,其中,当前发送BIU位置由从处理器维护,当前接收BIU位置由主处理器维护。
当前发送BIU位置和当前接收BIU位置为实时更新的,当前发送BIU位置紧接在前一次发送消息所使用的n个BIU之后,当前接收BIU位置紧接在前一次接收消息时获取的BIU之后。本步骤为从处理器在每次发送消息时,从接收缓冲区索引表的当前发送BIU位置开始,获取连续的n个BIU,如果从当前发送BIU位置开始到接收缓冲区索引表末尾的后续BIU不足n个,则回绕到接收缓冲区索引表的开头获取不足的部分。
步骤503,从处理器判断n个BIU的RF是否均为无效,如果是,则执行步骤504,否则结束本流程。
在获取到n个BIU之后,从处理器判断这n个BIU的RF是否均为无效,由于BIU的RF用于指示对应的接收缓冲区中是否缓存有消息,即本步骤为从处理器判断这n个BIU分别对应的接收缓冲区中是否已缓冲有消息。
如果接收方向上已经积压了过多消息等待主处理器接收,以致于没有足够的空闲的接收缓冲区可以被用来承载新的消息数据,此时从处理器直接退出发送消息的过程,本流程结束。
如果n个BIU的RF均为无效,即获取到的n个BIU对应的接收缓冲区均未积压消息,可以对本次发送的消息进行缓存,则执行后续步骤504。
步骤504,从处理器将消息写入到n个BIU对应的接收缓冲区中。
从处理器在获知n个BIU对应的接收缓冲区均可以缓冲消息时,将待发送的消息写入到n个BIU对应的接收缓冲区中。
如果n为1,则从处理器只需将消息数据完整地写入这个BIU对应的接收缓冲区中。如果n大于1,则从处理器将消息数据进行分段处理,将消息顺序地写入这n个BIU分别对应的接收缓冲区中。其中,前n-1个BIU分别对应的n-1个接收缓冲区被填满,而第n个BIU对应的第n个接收缓冲区则承载最后一个消息数据分段,即承载消息的剩余数据,当消息的数据量不是接收缓冲区尺寸的整数倍时,最后一个消息数据分段不能填满第n个接收缓冲区。
步骤505,从处理器对n个BIU的描述信息进行设置。
从处理器在将消息写入到n个BIU对应的n个接收缓冲区之后,对该n个BIU的描述信息分别进行设置。
例如,对于n为1,即一个接收缓冲区便能承载消息的完整数据的情况,则只需将该BIU的VDL设置为消息的实际数据量长度,即将消息的实际数据量填入该BIU的VDL中,并将该BIU的ED置为有效,表明该消息的数据已经发送完毕,该BIU对应的接收缓冲区中承载有该消息的结尾。对于n大于1,即消息的数据被分段写入到n个接收缓冲区中的情况,直接将前n-1个BIU的VDL均设置为接收缓冲区的尺寸,并将这些BIU的ED置为无效,表明该消息的数据还未发送完毕,该BIU对应的接收缓冲区中未承载有该消息的结尾;将第n个BIU的VDL设置为该消息的剩余数据量长度,并将这个BIU的ED置为有效,表明该消息的数据已经发送完毕,该BIU对应的接收缓冲区中承载有该消息的结尾。
从处理器将这n个BIU的RF均设置为有效,表明这n个BIU中均已缓存有消息数据,用于指示主处理器可以接收当前消息。从处理器将这n个BIU的LCN设置为该消息所属的逻辑通道号,即将当前消息所属的逻辑通道号填入这n个BIU的LCN中。
步骤506,从处理器更新接收缓冲区索引表中的当前发送BIU位置。
在完成消息的发送以及对应BIU的描述信息的设置之后,从处理器更新接收缓冲区索引表中的当前发送BIU位置。从处理器将接收缓冲区索引表的当前发送BIU位置更新到这n个BIU之后的那个BIU,如果这n个BIU已经达到接收缓冲区索引表的末尾,则将当前发送BIU位置更新到接收缓冲区索引表的第一个BIU。
进一步地,在步骤501之前,还可以包括:主处理器对接收缓冲区索引表中的各个BIU进行初始化。本实施例中接收方向上的初始化过程为主处理器对接收缓冲区索引表进行扫描,逐个初始化接收缓冲区索引表中的BIU的描述信息的过程。其中,对一个BIU的初始化过程包括:主处理器从共享内存池中为该BIU分配一个空闲内存块作为接收缓冲区,将该空闲内存块的首地址填入该BIU的BP中,即将该空闲内存块的首地址作为该BIU的BP的初始值;主处理器将该BIU的VDL的初始值设为0,表示该BIU对应的接收缓冲区中不包含有效数据;主处理器清除该BIU的RF,表示该BIU对应的接收缓冲区中未缓冲有消息,主处理器等待从处理器向该接收缓冲区写入消息数据;主处理器清除该BIU种的LCN,表示该接收缓冲区不属于任何逻辑通道。
本实施例提供了一种通信处理器间消息通信方法,从处理器利用动态分配的接收缓冲区向主处理器发送消息,共享内存可以重复利用,且从处理器根据消息的数据量获取所需的接收缓冲区数量,可以满足变长消息的数据收发需求,实现了对共享存储资源的更有效利用,减少了消息发送过程中的数据拷贝,降低了处理器的开销,同时通过设置较短的发送缓冲区索引表来实现消息的发送,能适应两个处理器间收发速度差的较大变化。
图6为本发明通信处理器间消息通信方法实施例五的流程示意图,如图6所示,本实施例在上述实施例二的基础之上,提供了一种具体的通信处理器间消息通信方法,具体为主处理器接收从处理器发送的消息的过程。本实施例可以在上述实施例四的基础之上,还可以包括如下步骤:
步骤601,主处理器判断接收缓冲区索引表中的当前接收BIU位置对应的BIU的RF是否有效,如果是,执行步骤602,否则结束本流程。
主处理器对接收缓冲区索引表中的当前接收BIU位置进行维护,该当前接收BIU位置紧接在前一次接收消息时获取的BIU之后,当开始一次新的接收消息过程时,首先从该当前接收BIU位置获取一个BIU。主处理器判断该BIU的RF是否有效,如果是,则表明该BIU对应的接收缓冲区已缓存有消息数据,即确定从处理器已发送了新的消息,执行后续步骤602,并将n置为1,即至少有一个接收缓冲区承载该消息的数据;否则表明BIU对应的接收缓冲区未缓存有消息数据,即确定从处理器未发送新的消息,则直接退出接收消息过程,结束本流程。
步骤602,主处理器判断获取到的BIU的ED是否有效,如果是,则执行步骤604,否则执行步骤603。
主处理器继续判断获取到的该BIU的ED是否有效,如果是,则表明该BIU对应的接收缓冲区包含有消息的数据结尾,则执行后续步骤604;否则表明该BIU对应的接收缓冲区未包含有消息的数据结尾,则执行后续步骤603。
步骤603,主处理器将n增加1,获取下一个BIU,并返回执行步骤602。
当之前获取到的BIU的ED无效时,主处理器将n增加1,获取下一个BIU,并返回执行步骤602。即重复执行上述步骤602,对后续的BIU的ED进行判断,直到获取到承载所述消息的n个接收缓冲区对应的n个BIU。
步骤604,主处理器从共享内存池中分配n个空闲内存块,将所述n个空闲内存块替换承载所述消息的的n个接收缓冲区,并重新初始化n个BIU。
主处理器在获取到承载该消息的n个接收缓冲区对应的n个BIU之后,从共享内存池中分配n个空闲内存块,利用分配的n个空闲内存块来替换承载该消息的n个接收缓冲区。即将分配的这些空闲内存块的首地址填入到n个BIU的BP中,并对这n个BIU进行重新初始化,从而从处理器后续可以向这些空闲的接收缓冲区写入新的消息数据。
步骤605,主处理器判断n是否大于1,如果是,则执行步骤606,否则执行步骤609。
主处理器判断获取到的承载该消息的BIU的数量n是否大于1,如果是,则执行后续步骤606,如果n等于1,则执行后续步骤609。
步骤606,主处理器根据所述消息的数据量从所述共享内存池中分配一个空闲内存块。
当n大于1时,由于整条消息的全部数据被分段存放在多个接收缓存区中,则需要将这些分段数据顺序连接起来,则主处理器可以根据获取到的承载该消息的n个BIU的VDL值,将n个VDL值相加,即获取到该消息的整体数据量长度,根据该消息的数据量长度从共享内存池中分配一个空闲内存块。
步骤607,主处理器将所述n个接收缓冲区中的消息顺序拷贝到所述空闲内存块中。
主处理器在为n个BIU对应的接收缓冲区分配到合适尺寸的空闲内存块之后,将这n个接收缓冲区中的消息按照对应BIU的顺序拷贝到该空闲内存块中,以实现将整条消息拷贝到空闲内存块中。
步骤608,主处理器将承载所述消息的所述空闲内存块加入所述BIU的LCN所对应的进程的消息队列中,并将承载所述消息的所述n个接收缓存区释放到所述共享内存池中,并执行后续步骤610。
主处理器根据获取到的n个BIU的LCN,将承载该消息的空闲内存块加入该LCN对应的进程的消息队列中。同时,主处理器将原来承载该消息的n个接收缓存区释放到共享内存池中,并执行后续步骤610。
步骤609,主处理器将承载所述消息的接收缓冲区加入所述BIU的LCN所对应的进程的消息队列中,并执行后续步骤610。
当n等于1时,说明一个接收缓冲区完整地承载该消息的全部数据,则只需按照该BIU中的LCN,将承载该消息的接收缓冲区加入到该LCN对应的进程的消息队列中,并执行后续步骤610。在本实施例中,由于接收缓冲区的尺寸是根据从处理器向主处理器发送消息的典型长度而确定的,大多数情况下n等于1,即一个接收缓冲区可以完整地承载该消息的全部数据,则采用本实施例的方法在大多数情况下不需要进行数据拷贝,对比现有技术中两个处理器的接收和发送操作都涉及数据拷贝,本实施例可以大大提高数据收发的效率。
步骤610,主处理器更新接收缓冲区索引表中的当前接收BIU位置。
在完成一条消息的接收处理后,主处理器更新接收缓冲区索引表中的当前接收BIU位置,将接收缓冲区索引表的当前接收BIU位置更新到上述n个BIU之后的那个BIU。如果n个BIU已达到接收缓冲区索引表的末尾,则将当前接收BIU位置更新为接收缓冲区索引表的第一个BIU,然后返回步骤401接收下一条消息。
本实施例提供了一种通信处理器间消息通信方法,主处理器利用动态分配的接收缓冲区接收消息,共享内存可以重复利用,实现了对共享存储资源的更有效利用,减少了接收过程中的数据拷贝,降低了处理器的开销,提高了数据的接收效率,同时通过设置较短的接收缓冲区索引表来实现消息的接收和发送,能适应两个处理器间收发速度差的较大变化。
图7为本发明通信处理器间消息通信方法实施例六的流程示意图,如图7所示,本实施例在上述实施例三的基础之上,提供了一种具体的通信处理器间消息通信方法,具体为主处理器向从处理器发送消息的过程,可以包括如下步骤:
步骤701,主处理器判断发送缓冲区索引表中的当前发送BIU位置对应的BIU的RF是否无效,如果是,执行步骤702,否则结束本流程。
在主处理器向从处理器发送消息时,主处理器维护发送缓冲区索引表中的当前发送BIU位置。在发送方向上,即主处理器向从处理器发送消息的方向上,本实施例中的发送缓冲区索引表中也包含当前发送BIU位置和当前接收BIU位置,其中,当前发送BIU位置由主处理器维护,当前接收BIU位置由从处理器维护。当前发送BIU位置和当前接收BIU位置为实时更新的,当前发送BIU位置紧接在前一次发送消息时获取的BIU之后,当前接收BIU位置紧接在前一次接收消息时获取的BIU之后。本步骤为主处理器在开始一次新的发送消息过程时,首先从当前发送BIU位置获取一个BIU。主处理器判断该BIU的RF是否无效,如果是,则表明该BIU对应的发送缓冲区中未缓存有消息,其中的消息数据已被从处理器接收,此时可以发送新的消息,执行后续步骤702;否则表明该BIU对应的发送缓冲区中缓存有未被从处理器接收的消息,此时不能发送新的消息,直接退出主处理器发送消息过程,结束本流程。
步骤702,主处理器将承载消息的内存块作为发送缓冲区,并对BIU的描述信息进行设置。
主处理器在获知获取的BIU中未缓存有消息数据时,将承载待发送消息的内存块作为发送缓冲区,直接将该内存块挂在该BIU上,然后对该BIU的描述信息进行设置。具体地,将该内存块的首地址填入该BIU的BP,将该待发送消息的数据量长度填入该BIU的VDL,并将该BIU的RF和ED均置为有效,表示该BIU对应的发送缓冲区包含一条完整的消息数据,等待从处理器接收,主处理器将该待发送消息所属的逻辑通道号填入该BIU的LCN中。
步骤703,主处理器对发送缓冲区索引表中的当前发送BIU位置进行更新。
主处理器对发送缓冲区索引表中的当前发送BIU位置进行更新,将发送缓冲区索引表中的当前发送BIU位置指向下一个BIU,如果更新前的当前发送BIU位置已经达到发送缓冲区索引表的末尾,则将当前发送BIU位置更新为发送缓冲区索引表的第一个BIU。
步骤704,主处理器判断当前发送BIU位置是否与待释放BIU位置重叠,如果是,则执行步骤705,否则结束本流程。
在对当前发送BIU位置进行更新之后,主处理器判断当前发送BIU位置是否与待释放BIU位置重叠,即判断当前发送BIU位置是否赶上待释放BIU位置。此处的待释放BIU位置用于标识最早承载消息数据且尚未被释放的发送缓冲区,位于待释放BIU位置与当前发送BIU位置之间的BIU即为所有未被释放的发送缓冲区。主处理器在向从处理器发送消息,将消息缓存到发送缓冲区之后,还需要将那些消息数据已经被从处理器接收的发送缓冲区进行释放处理,因此,主处理器需要对该待释放BIU位置进行维护。经过判断,当当前发送BIU位置赶上待释放BIU位置时,执行后续步骤705,否则结束本流程。
步骤705,主处理器将待释放BIU位置与当前发送BIU位置之间的待释放BIU对应的发送缓冲区释放到共享内存池中,并重新初始化待释放BIU。
当当前发送BIU位置赶上待释放BIU位置时,主处理器开始扫描待释放BIU位置与当前发送BIU位置之间的那些未释放的发送缓冲区,根据各发送缓冲区对应的BIU的RF,即当某个BIU的RF无效时,将该BIU对应的发送缓冲区释放到共享内存池中,并重新初始化该BIU。
步骤706,主处理器更新该待释放BIU位置。
主处理器在完成一个发送缓冲区的释放之后,对待释放BIU位置进行更新,将待释放BIU位置指向最后被释放的发送缓冲区对应的BIU之后的那个BIU。
进一步地,本实施例在上述步骤701之前,还可以包括:主处理器对发送缓冲区索引表中的各个BIU进行初始化。本实施例中发送方向上的初始化过程为主处理器对发送缓冲区索引表进行扫描,逐个初始化发送缓冲区索引表中的BIU的描述信息的过程。其中,对一个BIU的初始化过程包括:主处理器清除发送缓冲区索引表中每个BIU的BP、RF和LCN,并将每个BIU的VDL设置为0。
本实施例提供了一种通信处理器间消息通信方法,主处理器利用动态分配的发送缓冲区向从处理器发送消息,共享内存可以重复利用,实现了对共享存储资源的更有效利用,减少了消息发送过程中的数据拷贝,降低了处理器的开销,提高了数据的发送效率,同时通过设置较短的发送缓冲区索引表来实现消息的发送,能适应两个处理器间收发速度差的较大变化。
图8为本发明通信处理器间消息通信方法实施例七的流程示意图,如图8所示,本实施例在上述实施例三的基础之上,提供了一种具体的通信处理器间消息通信方法,具体为从处理器接收主处理器发送的消息的过程。本实施例在上述实施例六的基础之上,还可以包括如下步骤:
步骤801,从处理器判断发送缓冲区索引表中的当前接收BIU位置对应的BIU的RF是否有效,如果是,则执行步骤802,否则结束本流程。
从处理器在接收主处理器发送的消息时,对发送缓冲区索引表中的当前接收BIU位置进行维护。当前接收BIU位置紧接在前一次接收消息时获取的BIU之后,当开始一次新的接收消息过程时,首先从当前接收BIU位置开始获取一个BIU,即获取当前接收BIU位置对应的BIU。从处理器判断获取到的该BIU的RF是否有效,如果是,则表明主处理器已经发送了新的消息,执行后续步骤802,否则表明主处理器尚未发送新的消息,直接退出从处理器接收消息的过程,结束本流程。
步骤802,从处理器从该BIU对应的发送缓冲区中读取消息。
由于该BIU的VDL指示了消息的数据量长度,从处理器根据该BIU的VDL从该BIU对应的发送缓冲区中读取消息。
步骤803,从处理器将所述消息加入到所述BIU的LCN所对应的进程的消息队列中。
从处理区在读取到该BIU对应的发送缓冲区中的消息后,根据该BIU的LCN,将该消息加入到该LCN对应的进程的消息队列中。同时,从处理器将该BIU的RF置为无效。
步骤804,从处理器对所述发送缓冲区索引表中的所述当前接收BIU位置进行更新,并返回执行上述步骤801。
在完成一条消息的接收处理后,从处理器对发送缓冲区索引表中的当前接收BIU位置进行更新,将当前接收BIU位置指向后一个BIU。若更新前的当前接收BIU位置已达到发送缓冲区索引表的末尾,则将当前接收BIU位置更新为发送缓冲区索引表的第一个BIU,然后返回步骤801接收下一条消息,直到所述当前接收BIU位置对应的BIU的RF为无效。
本实施例提供了一种通信处理器间消息通信方法,处理器利用动态分配的发送缓冲区接收消息,共享内存可以重复利用,实现了对共享存储资源的更有效利用,减少了消息接收过程中的数据拷贝,降低了处理器的开销,提高了数据的收发效率,同时通过设置较短的发送缓冲区索引表来实现消息的接收,能适应两个处理器间收发速度差的较大变化。
与现有技术相比,本实施例具有如下优点:第一,本实施例提供的方法更有效地利用共享存储资源。一方面,主处理器从同一个共享内存池中动态分配接收缓冲区和发送缓冲区,并在使用完成之后将其动态释放进共享内存池,从而使共享存储资源得到重复利用。另一方面,当两个处理器之间没有消息收发时,接收缓冲区索引表占据固定数目的空闲缓冲区,而发送缓冲区索引表不占用共享存储资源,则减少了存储开销。第二,本实施例中主处理器在大多数情况下不需要进行数据拷贝,提高了数据收发效率。在接收方向上,由于接收缓冲区尺寸是根据消息的典型长度来确定,大多数情况下消息数据由一个接收缓冲区承载,所以主处理器只需从共享内存池分配一个空闲缓存区替换承载消息数据的接收缓冲区,再把接收缓冲区加入相应进程的消息队列中;在发送方向上,主处理器只需把承载消息数据的发送缓冲区直接挂入发送缓冲区索引表即可。第三,本实施例在满足变长消息数据收发需求的同时,由于主处理器接收消息和发送消息的时间开销很短,因此只要设置比较短的接收缓冲区索引表和发送缓冲区索引表,就能适应两个处理器之间收发速度差的较大变化。第四,本实施例把主从处理器通信接口划分为多个逻辑通道,使运行于两个处理器上的多个进程能够互不干扰地通过不同的逻辑通道进行消息交互。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图9为本发明通信处理器间消息通信系统实施例一的结构示意图,如图9所示,本实施例提供了一种通信处理器间消息通信系统,其可以具体执行上述方法实施例中的各个步骤,此处不再赘述。本实施例提供的通信处理器间消息通信系统可以具体包括主处理器1、从处理器2和共享内存3。其中,主处理器1用于在共享内存3中动态更新发送缓冲区和接收缓冲区,并利用所述发送缓冲区或所述接收缓冲区与从处理器2进行消息通信。从处理器2用于利用所述发送缓冲区或所述接收缓冲区与主处理器1进行消息通信。
图10为本发明通信处理器间消息通信系统实施例二的结构示意图,如图10所示,本实施例提供了一种通信处理器间消息通信系统,其可以具体执行上述方法实施例中的各个步骤,此处不再赘述。本实施例在上述实施例一的基础之上,主处理器1可以具体包括分配单元11或释放单元12。其中,分配单元11用于如果检测到接收缓冲区被所述从处理器写入消息,从共享内存3中分配空闲内存块,并将所述空闲内存块替换承载消息的接收缓冲区。释放单元12用于如果检测到发送缓冲区承载的消息已经被所述从处理器读取,将被所述从处理器读取的发送缓冲区释放到共享内存3中。
进一步地,从处理器2可以具体包括获取单元21和消息处理单元22。其中,获取单元21用于根据消息的数据量计算所需的接收缓冲区数量n,并从接收缓冲区索引表中获取n个BIU,所述n为正整数,所述BIU用于保存缓冲区的信息。消息处理单元22用于如果检测到n个所述BIU对应的接收缓冲区允许写入消息,将消息写入n个所述BIU对应的接收缓冲区。
进一步地,主处理器1还可以包括更新单元13,更新单元13用于如果检测到发送缓冲区索引表的当前BIU对应的发送缓冲区允许写入消息时,将承载消息的内存块作为发送缓冲区。
更进一步地,所述BIU可以包括逻辑通道号,从处理器2还可以包括读取单元23。读取单元23用于如果检测到所述发送缓冲区索引表的当前BIU对应的发送缓冲区已写入消息时,从所述当前BIU对应的发送缓冲区中读取消息,并将所述消息加入到所述BIU的LCN所对应的进程的消息队列中。
本发明实施例提供了一种通信处理器间消息通信系统,通过设置主处理器、从处理器和共享内存,本实施例中接收缓冲区和发送缓冲区均由主处理器从同一个共享内存中动态分配,使用完后再由主处理器动态释放到共享内存中,从而使得共享存储资源得到了重复利用,相比于现有技术更有效地利用了共享存储资源。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种通信处理器间消息通信方法,其特征在于,包括:
由主处理器在共享内存中动态更新发送缓冲区和接收缓冲区;
利用所述发送缓冲区或所述接收缓冲区在所述主处理器和从处理器之间进行消息通信。
2.根据权利要求1所述的方法,其特征在于,所述由主处理器在共享内存中动态更新发送缓冲区和接收缓冲区包括:
如果检测到接收缓冲区被从处理器写入消息,所述主处理器从共享内存中分配空闲内存块,并将所述空闲内存块替换承载消息的接收缓冲区;或者
如果检测到发送缓冲区承载的消息已经被从处理器读取,所述主处理器将被所述从处理器读取的发送缓冲区释放到共享内存中。
3.根据权利要求1或2所述的方法,其特征在于,利用所述接收缓冲区进行所述主处理器和从处理器之间的消息通信包括:
从处理器根据消息的数据量计算所需的接收缓冲区数量n,并从接收缓冲区索引表获取n个缓冲区索引单元BIU,所述n为正整数,所述BIU用于保存缓冲区的信息;
如果检测到n个所述BIU对应的接收缓冲区允许写入消息,所述从处理器将消息写入n个所述BIU对应的接收缓冲区。
4.根据权利要求1或2所述的方法,其特征在于,利用所述接收缓冲区进行所述主处理器和从处理器之间的消息通信包括:
如果检测到发送缓冲区索引表的当前BIU对应的发送缓冲区允许写入消息,所述主处理器将承载消息的内存块作为发送缓冲区。
5.根据权利要求4所述的方法,其特征在于,所述BIU包括逻辑通道号LCN,利用所述接收缓冲区进行所述主处理器和从处理器之间的消息通信还包括:
如果检测到所述发送缓冲区索引表的当前BIU对应的发送缓冲区已写入消息,所述从处理器从所述当前BIU对应的发送缓冲区读取消息,并将所述消息加入到所述BIU的LCN所对应的进程的消息队列中。
6.一种通信处理器间消息通信系统,其特征在于,包括主处理器、从处理器和共享内存,其中:
所述主处理器用于在共享内存中动态更新发送缓冲区和接收缓冲区,并利用所述发送缓冲区或所述接收缓冲区与所述从处理器进行消息通信;
所述从处理器用于利用所述发送缓冲区或所述接收缓冲区与所述主处理器进行消息通信。
7.根据权利要求6所述的系统,其特征在于,所述主处理器包括:
分配单元,用于如果检测到接收缓冲区被所述从处理器写入消息,从所述共享内存中分配空闲内存块,并将所述空闲内存块替换承载消息的接收缓冲区;或者
释放单元,用于如果检测到发送缓冲区承载的消息已经被所述从处理器读取,将被所述从处理器读取的发送缓冲区释放到所述共享内存中。
8.根据权利要求6或7所述的系统,其特征在于,所述从处理器包括:
获取单元,用于根据消息的数据量计算所需的接收缓冲区数量n,并从接收缓冲区索引表中获取n个BIU,所述n为正整数,所述BIU用于保存缓冲区的信息;
消息处理单元,用于如果检测到n个所述BIU对应的接收缓冲区允许写入消息,将所述消息写入n个所述BIU对应的接收缓冲区。
9.根据权利要求6或7所述的系统,其特征在于,所述主处理器还包括:
更新单元,用于如果检测到发送缓冲区索引表的当前BIU对应的发送缓冲区允许写入消息时,将承载消息的内存块作为发送缓冲区。
10.根据权利要求9所述的系统,其特征在于,所述BIU包括逻辑通道号LCN,所述从处理器还包括:
读取单元,用于如果检测到所述发送缓冲区索引表的当前BIU对应的发送缓冲区已写入消息时,从所述当前BIU对应的发送缓冲区中读取消息,并将所述消息加入到所述BIU的LCN所对应的进程的消息队列中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010192654A CN101853238A (zh) | 2010-06-01 | 2010-06-01 | 通信处理器间消息通信方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010192654A CN101853238A (zh) | 2010-06-01 | 2010-06-01 | 通信处理器间消息通信方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101853238A true CN101853238A (zh) | 2010-10-06 |
Family
ID=42804736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010192654A Pending CN101853238A (zh) | 2010-06-01 | 2010-06-01 | 通信处理器间消息通信方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101853238A (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609378A (zh) * | 2012-01-18 | 2012-07-25 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN103176854A (zh) * | 2011-12-26 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种进程间通信方法、装置及系统 |
CN103176852A (zh) * | 2011-12-22 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种用于进程间通信的方法及装置 |
CN105302489A (zh) * | 2015-10-30 | 2016-02-03 | 致象尔微电子科技(上海)有限公司 | 一种异构多核远程嵌入式存储器系统与方法 |
CN105938466A (zh) * | 2015-03-04 | 2016-09-14 | 吉林克斯公司 | 用于处理器间通信的电路和方法 |
CN106126359A (zh) * | 2016-08-25 | 2016-11-16 | 成都交大光芒科技股份有限公司 | 进程间共享数据的快速传输方法 |
CN106330887A (zh) * | 2016-08-22 | 2017-01-11 | 苏州华兴源创电子科技有限公司 | 一种用于多媒体中转服务的数据传输方法 |
WO2017008687A1 (zh) * | 2015-07-14 | 2017-01-19 | 阿里巴巴集团控股有限公司 | 消息队列系统以及实现消息通信的方法 |
CN107147590A (zh) * | 2017-07-12 | 2017-09-08 | 郑州云海信息技术有限公司 | 一种基于rdma协议消息通信的方法及系统 |
CN109558107A (zh) * | 2018-12-04 | 2019-04-02 | 中国航空工业集团公司西安航空计算技术研究所 | 一种共享缓冲区的fc消息接收管理方法 |
CN109857573A (zh) * | 2018-12-29 | 2019-06-07 | 深圳云天励飞技术有限公司 | 一种数据共享方法、装置、设备及系统 |
CN111651286A (zh) * | 2020-05-27 | 2020-09-11 | 泰康保险集团股份有限公司 | 数据通信方法、装置及计算设备、存储介质 |
CN111796901A (zh) * | 2019-04-08 | 2020-10-20 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
CN113179327A (zh) * | 2021-05-14 | 2021-07-27 | 中兴通讯股份有限公司 | 基于大容量内存的高并发协议栈卸载方法、设备、介质 |
CN116107762A (zh) * | 2023-04-11 | 2023-05-12 | 远江盛邦(北京)网络安全科技股份有限公司 | 内存分配方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101105786A (zh) * | 2006-07-14 | 2008-01-16 | 中兴通讯股份有限公司 | 一种基于共享存储器的双cpu通信方法 |
CN101303687A (zh) * | 2008-06-03 | 2008-11-12 | 浙江大学 | 一种嵌入式异构多核体系片上通信的实现方法 |
CN100490435C (zh) * | 2006-10-09 | 2009-05-20 | 北京航空航天大学 | 一种降低并行多数字信号处理器之间消息传递开销的方法 |
CN101609432A (zh) * | 2009-07-13 | 2009-12-23 | 中国科学院计算技术研究所 | 共享缓存管理系统及方法 |
-
2010
- 2010-06-01 CN CN201010192654A patent/CN101853238A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101105786A (zh) * | 2006-07-14 | 2008-01-16 | 中兴通讯股份有限公司 | 一种基于共享存储器的双cpu通信方法 |
CN100490435C (zh) * | 2006-10-09 | 2009-05-20 | 北京航空航天大学 | 一种降低并行多数字信号处理器之间消息传递开销的方法 |
CN101303687A (zh) * | 2008-06-03 | 2008-11-12 | 浙江大学 | 一种嵌入式异构多核体系片上通信的实现方法 |
CN101609432A (zh) * | 2009-07-13 | 2009-12-23 | 中国科学院计算技术研究所 | 共享缓存管理系统及方法 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176852A (zh) * | 2011-12-22 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种用于进程间通信的方法及装置 |
CN103176852B (zh) * | 2011-12-22 | 2016-05-25 | 腾讯科技(深圳)有限公司 | 一种用于进程间通信的方法及装置 |
CN103176854A (zh) * | 2011-12-26 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种进程间通信方法、装置及系统 |
CN103176854B (zh) * | 2011-12-26 | 2018-09-07 | 腾讯科技(深圳)有限公司 | 一种进程间通信方法、装置及系统 |
US9870327B2 (en) | 2012-01-18 | 2018-01-16 | Huawei Technologies Co., Ltd. | Message-based memory access apparatus and access method thereof |
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN102609378A (zh) * | 2012-01-18 | 2012-07-25 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN105938466B (zh) * | 2015-03-04 | 2021-01-26 | 吉林克斯公司 | 用于处理器间通信的电路和方法 |
CN105938466A (zh) * | 2015-03-04 | 2016-09-14 | 吉林克斯公司 | 用于处理器间通信的电路和方法 |
WO2017008687A1 (zh) * | 2015-07-14 | 2017-01-19 | 阿里巴巴集团控股有限公司 | 消息队列系统以及实现消息通信的方法 |
CN105302489B (zh) * | 2015-10-30 | 2018-03-13 | 致象尔微电子科技(上海)有限公司 | 一种异构多核远程嵌入式存储器系统与方法 |
CN105302489A (zh) * | 2015-10-30 | 2016-02-03 | 致象尔微电子科技(上海)有限公司 | 一种异构多核远程嵌入式存储器系统与方法 |
CN106330887B (zh) * | 2016-08-22 | 2019-10-29 | 苏州华兴源创科技股份有限公司 | 一种用于多媒体中转服务的数据传输方法 |
CN106330887A (zh) * | 2016-08-22 | 2017-01-11 | 苏州华兴源创电子科技有限公司 | 一种用于多媒体中转服务的数据传输方法 |
CN106126359A (zh) * | 2016-08-25 | 2016-11-16 | 成都交大光芒科技股份有限公司 | 进程间共享数据的快速传输方法 |
CN106126359B (zh) * | 2016-08-25 | 2019-10-18 | 成都交大光芒科技股份有限公司 | 进程间共享数据的快速传输方法 |
CN107147590A (zh) * | 2017-07-12 | 2017-09-08 | 郑州云海信息技术有限公司 | 一种基于rdma协议消息通信的方法及系统 |
CN109558107A (zh) * | 2018-12-04 | 2019-04-02 | 中国航空工业集团公司西安航空计算技术研究所 | 一种共享缓冲区的fc消息接收管理方法 |
CN109857573A (zh) * | 2018-12-29 | 2019-06-07 | 深圳云天励飞技术有限公司 | 一种数据共享方法、装置、设备及系统 |
CN109857573B (zh) * | 2018-12-29 | 2021-03-05 | 深圳云天励飞技术有限公司 | 一种数据共享方法、装置、设备及系统 |
CN111796901A (zh) * | 2019-04-08 | 2020-10-20 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
CN111651286A (zh) * | 2020-05-27 | 2020-09-11 | 泰康保险集团股份有限公司 | 数据通信方法、装置及计算设备、存储介质 |
CN113179327A (zh) * | 2021-05-14 | 2021-07-27 | 中兴通讯股份有限公司 | 基于大容量内存的高并发协议栈卸载方法、设备、介质 |
CN116107762A (zh) * | 2023-04-11 | 2023-05-12 | 远江盛邦(北京)网络安全科技股份有限公司 | 内存分配方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101853238A (zh) | 通信处理器间消息通信方法和系统 | |
JP6314355B2 (ja) | メモリ管理方法およびデバイス | |
CN101115054B (zh) | 用于网络接口控制器的存储器映射的缓冲器 | |
KR101850318B1 (ko) | 가상 메모리 관리 장치 및 방법 | |
CN100444134C (zh) | 数据处理系统和方法 | |
CN101079015B (zh) | 数据传送方法及系统 | |
CN101127685B (zh) | 一种进程间通讯装置及其进程间通讯方法 | |
US7249152B2 (en) | Dynamic disk space management by multiple database server instances in a cluster configuration | |
JP2780032B2 (ja) | マルチプロセッサディジタルデータ処理システム | |
CN101594309B (zh) | 集群系统中内存资源的管理方法、设备及网络系统 | |
CN101617298B (zh) | 用于dma、任务终止和同步操作的缓存一致保持 | |
CN100440184C (zh) | 一种能同时进行读写操作的dma控制器及传输方法 | |
JP3748774B2 (ja) | キャッシュコヒーレンス共用ディスクコンピュータシステムにおけるi/o転送 | |
CN102193874B (zh) | 用于管理存储器的缓存管理器和方法 | |
CN101625664A (zh) | 满足部分写和非监听存取之间的存储器排序要求 | |
US20110307677A1 (en) | Device for managing data buffers in a memory space divided into a plurality of memory elements | |
CN103246614A (zh) | 多处理器数据处理系统、高速缓存存储器及其方法 | |
US8336050B2 (en) | Shared memory inter-process communication of virtual machines using virtual synchrony | |
CN103559088A (zh) | 维持公平性和顺序的资源管理子系统 | |
KR102064764B1 (ko) | 메시지 시그널 인터럽트의 통신 | |
CN107256196A (zh) | 基于闪存阵列的支持零拷贝的缓存系统及方法 | |
CN109697122A (zh) | 任务处理方法、设备及计算机存储介质 | |
CN102934076A (zh) | 指令发行控制装置以及方法 | |
US6886031B2 (en) | Efficient connection and memory management for message passing on a single SMP or a cluster of SMPs | |
WO2014022402A1 (en) | Coherence management using a coherent domain table |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20101006 |