CN116841952A - 核间通信系统、方法、装置、设备、芯片及可读存储介质 - Google Patents
核间通信系统、方法、装置、设备、芯片及可读存储介质 Download PDFInfo
- Publication number
- CN116841952A CN116841952A CN202311124128.4A CN202311124128A CN116841952A CN 116841952 A CN116841952 A CN 116841952A CN 202311124128 A CN202311124128 A CN 202311124128A CN 116841952 A CN116841952 A CN 116841952A
- Authority
- CN
- China
- Prior art keywords
- endpoint
- core
- target data
- index
- kernel
- 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
- 230000006854 communication Effects 0.000 title claims abstract description 214
- 238000004891 communication Methods 0.000 title claims abstract description 212
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000013500 data storage Methods 0.000 claims description 109
- 238000004590 computer program Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 10
- 230000007175 bidirectional communication Effects 0.000 abstract description 7
- 230000007246 mechanism Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000006978 adaptation Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000009954 braiding Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种核间通信系统、方法、装置、设备、芯片及可读存储介质,所述系统包括共享内存设备,所述共享内存设备包括适用于N个端点内核的共享内存空间;其中:所述共享内存空间包括针对所述N个端点内核中的指定内核配置且所述指定内核可读写的指定端点内存区域;所述指定端点内存区域包括针对任一其他内核分配的索引存储队列;所述索引存储队列存储有目标位置索引;所述目标位置索引用于表示所述指定端点内存区域中目标数据块的位置,以指示所述任一其他内核从所述指定端点内存区域中读取所述目标数据块。由此能够实现多个端点内核之间的任意peer‑to‑peer的双向通信,并可以支持跨设备或者跨操作系统的通信。
Description
技术领域
本发明涉及核间通信技术领域,尤其涉及一种核间通信系统、方法、装置、设备、芯片及可读存储介质。
背景技术
在多核处理器系统中,各内核共用缓存、外部存储空间、网络控制器等资源。各内核在共享使用这些资源的同时,也会产生一些频繁的信息交互,如果各内核之间不能进行有效的通信,势必会影响多核系统的整体性能。
相关技术中,针对同构和异构多核处理器的核间通信方法进行了设计。然而,相关技术中的核间通信方法并不适用于不同设备上的处理器之间的通信,或者,并不适用于不同的操作系统之间的通信。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的第一个目的在于提出一种核间通信系统,能够实现多个端点内核之间的任意peer-to-peer的双向通信,并可以支持跨设备或者跨操作系统的通信。
本发明的第二个目的在于提出另一种核间通信系统。
本发明的第三个目的在于提出一种核间通信方法。
本发明的第四个目的在于提出一种核间通信装置。
本发明的第五个目的在于提出一种计算机设备。
本发明的第六个目的在于提出一种芯片。
本发明的第七个目的在于提出一种计算机可读存储介质。
为达到上述目的,本发明第一方面实施方式提出了一种核间通信系统,所述核间通信系统包括共享内存设备,所述共享内存设备包括适用于N个端点内核的共享内存空间;所述N为正整数;其中:所述共享内存空间包括针对所述N个端点内核中的指定内核配置且所述指定内核可读写的指定端点内存区域;所述指定端点内存区域被配置为所述N个端点内核中除所述指定内核之外其他内核的只读内存区域;所述指定端点内存区域包括针对任一其他内核分配的索引存储队列;所述索引存储队列存储有目标位置索引;所述目标位置索引用于表示所述指定端点内存区域中目标数据块的位置,以指示所述任一其他内核从所述指定端点内存区域中读取所述目标数据块。
根据本发明的一个实施方式,所述指定端点内存区域中包括若干个数据存储单元;所述目标数据块存储在所述若干个数据存储单元中的目标数据存储单元;所述目标位置索引用于表示所述目标数据存储单元的位置,以指示所述任一其他内核从所述目标数据存储单元中读取所述目标数据块。
根据本发明的一个实施方式,所述指定内核为发送端内核,所述任一其他内核为任一接收端内核;所述共享内存空间包括针对所述任一接收端内核配置且所述任一接收端内核可读写的接收端点内存区域;所述接收端点内存区域被配置为所述N个端点内核中除所述任一接收端内核之外其他内核的只读内存区域。
根据本发明的一个实施方式,所述目标数据块包括多笔目标数据;所述接收端点内存区域中包括所述发送端内核对应的使用数据索引;所述使用数据索引用于在所述任一接收端内核从所述指定端点内存区域中读取所述目标数据块包括的任一笔目标数据后,指向所述任一笔目标数据的位置对应的下一个位置。
根据本发明的一个实施方式,所述使用数据索引还用于在所述使用数据索引指向的所述下一个位置不是所述目标数据块的终止位置的情况下,指示所述任一接收端内核从所述指定端点内存区域中读取下一笔目标数据;其中,所述下一笔目标数据是所述下一个位置对应的目标数据。
根据本发明的一个实施方式,所述使用数据索引还用于在所述使用数据索引指向的所述下一个位置是所述目标数据块的终止位置的情况下,指示所述任一接收端内核向所述发送端内核发送第一中断信号;其中,所述第一中断信号用于表明所述目标数据块已被所述任一接收端内核读取。
根据本发明的一个实施方式,所述索引存储队列具有入队指针和出队指针;所述入队指针和所述出队指针被初始化为指向所述索引存储队列中的同一个位置;所述入队指针用于指示所述发送端内核将所述目标位置索引存入所述入队指针指向的目标入队位置,并将所述入队指针指向所述目标入队位置的下一个入队位置;所述出队指针用于指示所述任一接收端内核从所述索引存储队列中获取所述目标位置索引。
根据本发明的一个实施方式,所述第一中断信号用于指示所述发送端内核将所述出队指针指向所述入队指针指向的所述下一个入队位置,并释放所述目标数据块占用的存储区域。
根据本发明的一个实施方式,所述目标位置索引用于指示所述任一其他内核在接收到第二中断信号的情况下,从所述指定端点内存区域中读取所述目标数据块;其中,所述第二中断信号用于表明所述指定端点内存区域中存在所述目标数据块。
为达到上述目的,本发明第二方面实施方式提出了一种核间通信系统,所述核间通信系统包括共享内存设备,所述共享内存设备包括适用于N个端点内核的共享内存空间;所述N为正整数;其中:所述共享内存空间包括所述N个的端点内存区域;针对任一端点内存区域,所述任一端点内存区域被配置为所述N个端点内核中指定内核可读写的指定端点内存区域,以及所述N个端点内核中除所述指定内核之外其他内核的只读内存区域。
根据本发明的一个实施方式,所述共享内存空间还包括状态表区域和共享内存区域;其中:所述状态表区域用于存储所述N个端点内核的状态数据;所述共享内存区域被配置为所述N个端点内核的可读写内存区域。
根据本发明的一个实施方式,所述任一端点内存区域包括所述N个的索引存储队列;针对任一索引存储队列,所述任一索引存储队列与所述N个端点内核中的任一端点内核一一对应;其中,所述任一索引存储队列用于存储位置索引;所述位置索引用于指示所述任一端点内核从所述任一端点内存区域中读取数据块。
为达到上述目的,本发明第三方面实施方式提出了一种核间通信方法,应用于核间通信系统;所述核间通信系统包括共享内存设备,所述共享内存设备包括适用于N个端点内核的共享内存空间;所述共享内存空间包括针对所述N个端点内核中的指定内核配置且所述指定内核可读写的指定端点内存区域;所述方法包括:所述指定内核向所述指定端点内存区域写入目标数据块;其中,所述指定端点内存区域被配置为所述N个端点内核中除所述指定内核之外其他内核的只读内存区域;所述指定端点内存区域包括针对任一其他内核分配的索引存储队列;所述索引存储队列存储有所述目标数据块对应的目标位置索引;所述任一其他内核根据所述目标位置索引从所述指定端点内存区域读取所述目标数据块。
根据本发明的一个实施方式,所述目标数据块被存储在所述指定端点内存区域中的目标数据存储单元;所述目标位置索引用于指向所述目标数据存储单元的位置;所述索引存储队列具有入队指针;在所述指定内核向所述指定端点内存区域写入目标数据块之后,所述核间通信方法包括:所述指定内核根据所述目标数据存储单元的位置得到所述目标位置索引,并将所述目标位置索引存入所述索引存储队列中所述入队指针指向的目标入队位置;所述指定内核将所述入队指针指向所述目标入队位置的下一个入队位置;所述指定内核向所述任一其他内核发送第二中断信号;其中,所述第二中断信号用于表明所述指定端点内存区域中存在所述目标数据块。
根据本发明的一个实施方式,所述索引存储队列还具有出队指针;所述出队指针用于指向所述目标位置索引;在所述任一其他内核根据所述目标位置索引从所述指定端点内存区域读取所述目标数据块之前,所述核间通信方法包括:所述任一其他内核响应所述第二中断信号,以根据所述索引存储队列中的所述出队指针指向的位置,得到所述目标位置索引;所述任一其他内核根据所述目标位置索引从所述指定端点内存区域读取所述目标数据块,包括:所述任一其他内核根据所述目标位置索引从所述目标数据存储单元中读取所述目标数据块。
根据本发明的一个实施方式,所述指定内核为发送端内核,所述任一其他内核为任一接收端内核;所述共享内存空间包括针对所述任一接收端内核配置且所述任一接收端内核可读写的接收端点内存区域;所述接收端点内存区域中包括所述发送端内核对应的使用数据索引;所述目标数据块包括多笔目标数据;所述任一其他内核根据所述目标位置索引从所述目标数据存储单元中读取所述目标数据块,包括:所述任一接收端内核根据所述目标位置索引从所述目标数据存储单元中读取所述目标数据块包括的任一笔目标数据;所述任一接收端内核将所述使用数据索引指向所述任一笔目标数据的位置对应的下一个位置;其中,所述接收端点内存区域被配置为所述N个端点内核中除所述任一接收端内核之外其他内核的只读内存区域。
根据本发明的一个实施方式,在所述任一接收端内核将所述使用数据索引指向所述任一笔目标数据的位置对应的下一个位置之后,所述核间通信方法还包括:若所述使用数据索引指向的所述下一个位置是所述目标数据块的终止位置,所述任一接收端内核向所述发送端内核发送第一中断信号;其中,所述第一中断信号用于表明所述目标数据块已被所述任一接收端内核读取。
根据本发明的一个实施方式,所述核间通信方法还包括:所述发送端内核响应所述第一中断信号,以将所述出队指针指向所述入队指针指向的所述下一个入队位置,并释放所述目标数据存储单元。
为达到上述目的,本发明第四方面实施方式提出了一种核间通信装置,应用于核间通信系统;所述核间通信系统包括共享内存设备,所述共享内存设备包括适用于N个端点内核的共享内存空间;所述共享内存空间包括针对所述N个端点内核中的指定内核配置且所述指定内核可读写的指定端点内存区域;所述装置包括:目标数据块写入模块,用于所述指定内核向所述指定端点内存区域写入目标数据块;其中,所述指定端点内存区域被配置为所述N个端点内核中除所述指定内核之外其他内核的只读内存区域;所述指定端点内存区域包括针对任一其他内核分配的索引存储队列;所述索引存储队列存储有所述目标数据块对应的目标位置索引;目标数据块读取模块,用于所述任一其他内核根据所述目标位置索引从所述指定端点内存区域读取所述目标数据块。
根据本发明的一个实施方式,所述目标数据块被存储在所述指定端点内存区域中的目标数据存储单元;所述目标位置索引用于指向所述目标数据存储单元的位置;所述索引存储队列具有入队指针;所述目标数据块写入模块,还用于:所述指定内核根据所述目标数据存储单元的位置得到所述目标位置索引,并将所述目标位置索引存入所述索引存储队列中所述入队指针指向的目标入队位置;所述指定内核将所述入队指针指向所述目标入队位置的下一个入队位置;所述指定内核向所述任一其他内核发送第二中断信号;其中,所述第二中断信号用于表明所述指定端点内存区域中存在所述目标数据块。
根据本发明的一个实施方式,所述索引存储队列还具有出队指针;所述目标数据块读取模块,还用于:所述任一其他内核响应所述第二中断信号,以根据所述索引存储队列中的所述出队指针指向的位置,得到所述目标位置索引;所述任一其他内核根据所述目标位置索引从所述目标数据存储单元中读取所述目标数据块。
为达到上述目的,本发明第五方面实施方式提出了一种计算机设备,包括存储器和处理器,所述存储器存储有第一计算机程序,所述处理器执行所述第一计算机程序时实现前述任一项实施方式所述的核间通信方法的步骤。
为达到上述目的,本发明第六方面实施方式提出了一种芯片,包括存储单元和处理单元,所述存储单元存储有第二计算机程序,所述处理单元执行所述第二计算机程序时实现前述任一项实施方式所述的核间通信方法的步骤。
为达到上述目的,本发明第七方面实施方式提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述任一项实施方式所述的核间通信方法的步骤。
根据本发明提供的多个实施方式,根据共享内存设备的原理和通信模型,考虑到存在N个端点内核时,所有端点内核均具有可读写权限的共享内存区域只有一个,如果通过这一个区域来实现所有端点内核之间的数据通信,难以保证每个端点内核对数据的访问时机的协调性和数据的一致性,多个端点内核之间的同步通信的实现非常困难。因此,基于在共享内存设备的共享内存空间中包括的针对指定内核配置的该指定内核具有可读写权限、其他内核具有只读权限的指定端点内存区域,来构建指定内核与其他内核之间的通信链路。由此,可以实现多个端点内核之间的任意peer-to-peer的双向通信,并可以支持跨设备或者跨操作系统的通信。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1a为根据本说明书提供的核间通信系统的应用场景示意图。
图1b为根据本说明书提供的ivshmem共享内存空间的结构示意图。
图1c为根据本说明书一个实施方式提供的核间通信系统的结构示意图。
图1d为根据本说明书提供的基于每个端点内核共享的可读写区域进行通信的流程示意图。
图1e为根据本说明书提供的基于指定内核独占的可读写内存区域进行通信的流程示意图。
图2为根据本说明书一个实施方式提供的指定端点内存区域的结构示意图。
图3为根据本说明书一个实施方式提供的共享内存空间的结构示意图。
图4为根据本说明书一个实施方式提供的接收端点内存区域的结构示意图。
图5为根据本说明书一个实施方式提供的索引存储队列的指针更新的流程示意图。
图6a为根据本说明书一个实施方式提供的核间通信系统的结构示意图。
图6b为根据本说明书一个实施方式提供的共享内存空间的结构示意图。
图7a为根据本说明书一个实施方式提供的任一端点内存区域的结构示意图。
图7b为根据本说明书一个实施方式提供的通信链路的示意图。
图7c为根据本说明书一个实施方式提供的通信链路的示意图。
图8为根据本说明书一个实施方式提供的核间通信方法的流程示意图。
图9为根据本说明书一个实施方式提供的核间通信方法的流程示意图。
图10为根据本说明书一个实施方式提供的核间通信方法的流程示意图。
图11为根据本说明书一个实施方式提供的核间通信装置的结构框图。
图12为根据本说明书一个实施方式提供的计算机设备的结构框图。
图13为根据本说明书一个实施方式提供的芯片的结构框图。
图中,100:核间通信系统;110:共享内存设备;120:共享内存空间;130:指定端点内存区域;132:索引存储队列;134:数据存储单元;140:接收端点内存区域;142:使用数据索引;200:核间通信系统;210:共享内存设备;220:共享内存空间;230:端点内存区域;240:状态表区域;250:共享内存区域;232:索引存储队列;1100:核间通信装置;1110:目标数据块写入模块;1120:目标数据块读取模块;1200:计算机设备;1210:存储器;1220:处理器;1230:第一计算机程序;1300:芯片;1310:存储单元;1320:处理单元;1330:第二计算机程序。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
近年来,处理器的性能越来越强,无论是通用处理器还是嵌入式处理器,都进入了多核处理器时代。多核处理器中,需要多个核心协同工作才能充分发挥处理器的性能,即需要高效的核间通信机制。核间通信的主要目标是充分利用硬件提供的机制,实现高效的核间通信,以及给需要核间通信的应用程序提供简洁高效的编程接口。根据所使用的处理器的硬件特性,核间通信可能的实现机制包括:(1)Mailbox中断机制;(2)基于共享内存的消息队列机制;(3)POW(Proof of Work,工作量证明)+Group集群机制;(4)FAU机制,支持原子的读、写、fetch-and-add(读取并加入)指令操作。
随着多核处理器被越来越广泛的应用到各个技术领域,其强大的并行计算能力,低功耗以及高集成度的优点逐渐被市场所接受。多核处理器的显著特征是同一个任务可以被分解到多个内核的线程或进程上并行运行,这种并行性带来了性能的显著提升。但是,多核处理器带来性能提升的同时,也有其自身不可避免的缺点。在多核处理器系统中,各内核共用缓存、外部存储空间、网络控制器等资源。运行在多核处理器上的应用程序在共享使用这些资源的同时,也会产生一些频繁的信息交互,如果各内核之间不能进行有效的通信,势必会影响多核系统的整体性能。
相关技术中,提出了一种异构多核处理器的核间通信方法和相关装置。该异构多核处理器的核间通信方法首先在异构多核处理器中建立实时操作系统内核SYS/BIOS工程并添加相关依赖包,其次基于SYS/BIOS工程添加底层开发接口SysLink框架并引入相关依赖包,然后通过获取异构多核处理器中第一内核、第二内核的硬件配置信息,最后基于SysLink框架和硬件配置信息建立核间通信框架,以利用核间通信框架进行第一内核和第二内核的核间通信。该方法在建立SYS/BIOS工程的基础上,添加SysLink框架结合一内核、第二内核的硬件配置信息,自动化建立核间通信框架,可以实现异构多核处理器的核间通信,无需人为操作进行额外相关配置,使得异构多核处理器的核间通信效率更高效。
该异构多核处理器的核间通信方法主要是在标准的MCAPI(MulticoreCommunications Application Program Interface,多核通信应用程序接口)轻量级开源多核通信框架的基础上,针对嵌入式多核平台开发了一套多核通信库。该方法针对同构和异构多核处理器核间通信方法进行了设计,然而,一方面,该方法在异构多核通信的场景中,只针对了包含ARM(Advanced RISC Machine,进阶精简指令集机器)与DSP(DigitalSignal Processor,数字信号处理器)或者包含ARM与FPGA(Field Programmable GateArray,现场可编程门阵列)的多核处理器之间的异构多核处理器通信进行设计,并没有针对不同设备上的处理器之间的通信(或者,不同的操作系统之间的通信)进行设计。这意味着该方法实现的多核通信库只能在嵌入式单开发板中移植使用,而并不适用于跨设备的处理器通信,例如,并不适用于host主机的操作系统和guest虚拟机的操作系统之间的通信。另一方面,虽然该方法实现的多核通信库在PC平台上的性能比开源MCAPI的性能更加优越,但是也带来了一个问题,即,该方法使用的所有测试数据全部来源于内部,且该方法的测试是基于内部测试环境进行的,尚缺少大量其他测试数据和测试工程的支撑。因此,后续还需要通过选取大量测试数据以及测试用例,在不同的测试平台上对该方法的性能进行测试。
相关技术中,还提出了一种多核处理器核间通信方法及其电路结构。该多核处理器核间通信方法属于高性能处理器技术领域,通过对现有多核处理器架构中的寄存器电路模块进行功能性扩展,在该模块中添加多核处理器核间通信地址映射单元,从而能够通过访问寄存器地址实现对核间通信地址的访问。由此,可以实现核间通信地址的快速访问和核间数据的快速交互。相应地,多核处理器核间通信电路结构包括:扩展寄存器电路模块、先入先出队列电路模块、数据路由阵列电路模块、核间通信控制电路模块和处理器功能电路模块。该核间通信电路结构分为三个数据链路层次。该多核处理器核间通信方法能够提升现有多核处理器的通信效率与运算效率,具有明显的学术价值与实用价值。然而,该方法还不能支持host主机和guest虚拟机之间的通信。
为了实现多个端点内核之间的任意peer-to-peer的双向通信,并支持跨设备或者跨操作系统的通信,有必要提出一种核间通信系统、方法、装置、设备、芯片及可读存储介质。针对参与通信的N个端点内核,该方法基于共享内存设备构建任意两个端点内核之间的通信链路。具体地,共享内存设备包括适用于N个端点内核的共享内存空间,共享内存空间包括针对N个端点内核中的指定内核配置的指定端点内存区域,且该指定端点内存区域被配置为仅有指定内核可读写,其他内核只可读。在该指定端点内存区域中包括针对任一其他内核分配的索引存储队列,当该指定内核需要与该任一其他内核通信时,该指定内核将需要传输的目标数据块写入该指定端点内存区域。目标数据块在该指定端点内存区域中对应的目标位置索引被存储在针对该任一其他内核分配的索引存储队列中。该任一其他内核通过读取其对应的索引存储队列中的目标位置索引,来获取目标数据块在该指定端点内存区域中的存储位置,从而可以将目标数据块从该指定端点内存区域中读取出来。由此,可以在共享内存设备的基础上构建指定内核与任一其他内核之间的通信链路。
进一步地,共享内存空间包括N个端点内存区域,且端点内存区域与端点内核一一对应。针对任一端点内存区域,该任一端点内存区域被配置为仅有N个端点内核中的指定内核可读写,以及N个端点内核中除指定内核之外的其他内核只可读。由此,可以基于N个端点内存区域构建任意两个端点内核之间的双向通信链路,实现任意两个端点内核之间的点对点核间通信。
再进一步地,针对任一端点内存区域,该任一端点内存区域中包括N个索引存储队列,且索引存储队列与端点内核一一对应。由此,可以构建任一端点内核对应的多条通信链路,使任一端点内核能够同时与多个其他端点内核进行通信。
图1a为本说明书提供的核间通信系统、方法、装置、设备、芯片及可读存储介质的应用场景示意图。以包含一个主机操作系统、两个虚拟机操作系统的三个端点内核为例,参考图1a所示,root cell用于表示主机操作系统(以下简称主机),guest1 cell用于表示第一虚拟机操作系统(以下简称第一虚拟机),guest2 cell用于表示第二虚拟机操作系统(以下简称第二虚拟机)。ivshmem是虚拟机内部共享内存的PCI(Peripheral ComponentInterconnect,外设部件互连标准)设备,可以用于虚拟机操作系统之间、虚拟机操作系统与主机操作系统之间的通信。虚拟机之间实现内存共享是把内存映射成虚拟机内的PCI设备来实现的。virtio-net模块是网络半虚拟化模块,可以基于各操作系统上的ivshmem设备实现各操作系统的端对端的网络通信。hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,可以允许多个操作系统和应用共享硬件,也可以称为VMM(virtualmachine monitor),即虚拟机监视器。虚拟机操作系统之间、虚拟机操作系统与主机操作系统之间的消息通信工作建立在ivshmem设备上。
在本场景示例中,共享内存设备是虚拟机监视器hypervisor上的ivshmem共享内存设备。由于hypervisor中包含有PCI设备模拟功能,因此,可以在hypervisor上模拟出一个ivshmem共享内存设备,用于支持任意端点内核之间的peer-to-peer(点对点,或者,端对端)通信。hypervisor上的ivshmem共享内存设备包括有ivshmem共享内存空间。参考图1b所示,该ivshmem共享内存空间包括有内存共享模块、通信模块和协议适配模块。其中,内存共享模块包括有用于支持端点内核之间进行通信的内存区域,通信模块用于基于内存共享模块实现端点内核之间的通信,协议适配模块用于处理不同的端点内核对应的操作系统之间的协议适配。
在本场景示例中,ivshmem共享内存空间中的内存共享模块包括有主机内存区域、第一虚拟机内存区域和第二虚拟机内存区域。其中,主机内存区域被配置为主机可读写且第一虚拟机和第二虚拟机只可读的内存区域;第一虚拟机内存区域被配置为第一虚拟机可读写且主机和第二虚拟机只可读的内存区域;第二虚拟机内存区域被配置为第二虚拟机可读写且主机和第一虚拟机只可读的内存区域。
示例性地,当主机需要与第一虚拟机通信时,主机将需要传输的目标数据块写入主机内存区域,并可以得到目标数据块对应的目标位置索引。主机内存区域中包括有针对第一虚拟机分配的索引存储队列,用于存储目标数据块对应的目标位置索引,使得第一虚拟机通过读取该索引存储队列中的目标位置索引,能够获取到目标数据块在主机内存区域中的存储位置,从而第一虚拟机可以根据目标位置索引从主机内存区域中读取目标数据块。
相应地,当第一虚拟机需要与主机通信时,第一虚拟机将需要传输的目标数据块写入第一虚拟机内存区域,并可以得到目标数据块对应的目标位置索引。第一虚拟机内存区域中包括有针对主机分配的索引存储队列,用于存储目标数据块对应的目标位置索引,使得主机通过读取该索引存储队列中的目标位置索引,能够获取到目标数据块在第一虚拟机内存区域中的存储位置,从而主机可以根据目标位置索引从第一虚拟机内存区域中读取目标数据块。主机与第二虚拟机之间、第一虚拟机与第二虚拟机之间的双向通信过程与上述过程类似,具体不再赘述。
在本场景示例中,主机、第一虚拟机和第二虚拟机基于peer-to-peer通信模块实现任意两者之间的数据通信。进一步地,主机、第一虚拟机和第二虚拟机对应的peer-to-peer通信模块通过各自对应的ivshmem设备与hypervisor上的ivshmem共享内存空间进行交互,以构建任意两者之间的数据通信链路,实现虚拟机之间、虚拟机与主机之间的消息通信。
在本场景示例中,可以通过中断机制实现端点内核之间的消息通知。示例性地,当主机需要与第一虚拟机通信时,主机将需要传输的目标数据块写入主机内存区域后,可以由主机或者hypervisor上的ivshmem共享内存设备生成相应的中断信号,并发送给第一虚拟机,以表明主机内存区域中存在需要发送给第一虚拟机的目标数据块。第一虚拟机响应该中断信号,从主机内存区域中读取相应的目标数据块。在第一虚拟机将相应的目标数据块全部读取出来以后,第一虚拟机可以生成相应的中断信号并发送给主机,以表明需要发送给第一虚拟机的目标数据块已被第一虚拟机全部读取。进一步地,主机响应该中断信号,以将主机内存区域中的目标数据块的存储区域释放。
本说明书实施方式提供一种核间通信系统,参考图1c所示,核间通信系统100包括共享内存设备110,共享内存设备110包括适用于N个端点内核的共享内存空间120;N为正整数。
其中:共享内存空间120包括针对N个端点内核中的指定内核配置且指定内核可读写的指定端点内存区域130;指定端点内存区域130被配置为N个端点内核中除指定内核之外其他内核的只读内存区域;指定端点内存区域130包括针对任一其他内核分配的索引存储队列132;索引存储队列132存储有目标位置索引;目标位置索引用于表示指定端点内存区域130中目标数据块的位置,以指示任一其他内核从指定端点内存区域130中读取目标数据块。
其中,共享内存设备是ivshmem设备,共享内存空间是ivshmem共享内存空间。端点内核是参与通信的peer端点内核,可以是处理器或者操作系统等,任一其他内核是指定内核的通信对象。目标数据块是指定内核需要发送给相应的任一其他内核的数据块,由指定内核写入指定端点内存区域,且目标数据块的位置为目标数据块的起始存储地址。指定端点内存区域可以称为指定内核独占的可读写内存区域(Output section),由一段连续的内存空间构成。
在一些情况中,根据共享内存设备的原理和通信模型,共享内存设备为通信提供了基本的共享内存空间和中断通知功能。根据共享内存空间的组成,每个端点内核可以访问的共享内存区域包括每个端点内核共享的可读写区域(Read/Write section)、指定内核独占的可读写区域(Output section)。其中,其他内核可以读取指定内核独占的可读写区域(Output section)。只有共享内存区域和中断通知功能,还无法实现完整的通信逻辑,因此需要在此基础上设计一个通信规则,确定共享内存区域的用法。通过确定通信过程中各个端点内核的角色(例如,发送端内核或者接收端内核),来协调每个端点内核对共享内存区域的读写时机。参考图1d所示,针对每个端点内核共享的可读写区域(Read/Writesection),每个端点内核(peer A和peer B)都可以读写,因此需要复杂的机制来保证各个端点内核之间的同步。并且,由于只存在一个这样的区域,难以在多个端点内核场景下,实现任意端点内核之间的通信。因此,该区域适用于两个端点内核之间的通信。参考图1e所示,针对指定内核独占的可读写内存区域Output section for A和Output section forB,每个端点内核(peer A和peer B)可以读指定内核独占的可读写共享内存区域,但只有对应的指定内核具有写权限。由于基于共享内存设备的peer-to-peer通信的实现原理是通过在共享内存设备的基础上构建任意端点内核之间的通信链路,以构建类似于基于UDP(UserDatagram Protocol,用户数据报协议)的数据传输模型,使得在任意端点内核之间能够实现可靠的基于数据包的数据传输。因此,“Output section”比“Read/Write section”更适用于实现peer-to-peer通信。
具体地,共享内存设备中包括适用于N个端点内核的共享内存空间,可以用于构建任意两个端点内核之间的数据通信链路。针对N个端点内核中的指定内核,共享内存空间中包括针对该指定内核配置的指定端点内存区域,且该指定端点内存区域被配置为仅有该指定内核具有可读写权限,除了该指定内核之外的N-1个其他内核仅有读权限。针对该N-1个其他内核中的任一其他内核,该指定端点内存区域中包括有针对该任一其他内核分配的索引存储队列,用于存储目标数据块在该指定端点内存区域中的存储位置对应的目标位置索引。该任一其他内核根据该索引存储队列中的目标位置索引,可以从该指定端点内存区域中的相应位置处读取出目标数据块。由此,通过该指定端点内存区域和该任一其他内核对应的索引存储队列,可以构建由该指定内核向该任一其他内核传输数据的数据通信链路。
示例性地,N个端点内核包括端点内核A、端点内核B、端点内核C。以端点内核A为指定内核,则共享内存空间中包括针对端点内核A配置的指定端点内存区域1。若端点内核A需要向端点内核B发送数据块DB1,则端点内核A可以将数据块DB1写入指定端点内存区域1。根据指定端点内存区域1中包括的针对端点内核B分配的索引存储队列B,数据块DB1的存储位置对应的目标位置索引被存储在索引存储队列B中。端点内核B根据索引存储队列B中的目标位置索引,可以从指定端点内存区域1中的相应位置处读取数据块DB1。
示例性地,若端点内核A需要向端点内核C发送数据块DB2,则端点内核A可以将数据块DB2写入指定端点内存区域1。根据指定端点内存区域1中包括的针对端点内核C分配的索引存储队列C,数据块DB2的存储位置对应的目标位置索引被存储在索引存储队列C中。端点内核C根据索引存储队列C中的目标位置索引,可以从指定端点内存区域1中的相应位置处读取数据块DB2。
可以理解的是,由该任一其他内核向该指定内核传输数据的数据通信链路的构建方法和上述方法类似,因此,通过上述方法可以构建任意两个端点内核之间的双向的数据通信链路。
示例性地,N个端点内核包括端点内核A、端点内核B。以端点内核A为指定内核,则共享内存空间中包括针对端点内核A配置的指定端点内存区域1,且指定端点内存区域1中包括针对端点内核B分配的索引存储队列B。端点内核A可以将需要发送给端点内核B的数据块DB1写入指定端点内存区域1,且数据块DB1的存储位置对应的目标位置索引被存储在索引存储队列B中。端点内核B根据索引存储队列B中的目标位置索引,可以从指定端点内存区域1中的相应位置处读取数据块DB1。由此,可以构建由端点内核A向端点内核B传输数据的数据通信链路。
以端点内核B为指定内核,则共享内存空间中包括针对端点内核B配置的指定端点内存区域2,且指定端点内存区域2中包括针对端点内核A分配的索引存储队列A。端点内核B可以将需要发送给端点内核A的数据块DB2写入指定端点内存区域2,且数据块DB2的存储位置对应的目标位置索引被存储在索引存储队列A中。端点内核A根据索引存储队列A中的目标位置索引,可以从指定端点内存区域2中的相应位置处读取数据块DB2。由此,可以构建由端点内核B向端点内核A传输数据的数据通信链路。
在一些实施例中,N个端点内核可以包括主机操作系统和虚拟机操作系统GuestOS,共享内存设备是虚拟机监视器上模拟出来的ivshmem设备,共享内存空间是ivshmem共享内存空间。指定内核和任一其他内核之间可以通过中断机制或者非中断机制进行数据通信。
示例性地,通过相关代码分析和实际验证,在指定内核和任一其他内核均为虚拟机操作系统的情况下,指定内核和任一其他内核之间可以通过中断机制和非中断机制中的任一种机制模式进行数据通信。例如,任一其他内核可以在接收到指定内核或者共享内存设备发送的中断信号的情况下从指定端点内存区域中读取目标数据块,也可以采用定时轮询等方式从指定端点内存区域中读取目标数据块。
示例性地,在指定内核和任一其他内核中有一个端点内核为主机操作系统,另一个端点内核为虚拟机操作系统的情况下,若主机操作系统和虚拟机操作系统是同样的操作系统(例如,主机操作系统和虚拟机操作系统均为Linux操作系统),则指定内核和任一其他内核可以通过中断机制和非中断机制中的任一种机制模式进行数据通信。若主机操作系统和虚拟机操作系统是不同的操作系统(例如,主机操作系统是Windows操作系统,虚拟机操作系统是Linux操作系统),则指定内核和任一其他内核只支持通过非中断机制模式进行数据通信。
在另一些实施例中,指定内核和任一其他内核之间可以通过非中断机制进行数据通信。示例性地,任一其他内核可以采用定时轮询等方式从指定端点内存区域中读取目标数据块。
需要说明的是,指定端点内存区域可以是动态分配给指定内核的,也可以是事先为指定内核分配好的。同样地,索引存储队列可以是动态分配给任一其他内核的,也可以是事先为任一其他内核分配好的。索引存储队列的大小可以根据实际需求进行设置,本说明书中不作具体限定。
上述实施方式中,根据共享内存设备的原理和通信模型,考虑到存在N个端点内核时,“Read/Write section”共享内存区域只有一个,如果通过这一个区域来实现所有端点内核之间的数据通信,难以保证每个端点内核对数据的访问时机的协调性和数据的一致性,多个端点内核之间的同步通信的实现非常困难。因此,“Output section”比“Read/Write section”更适用于实现多个端点内核之间的peer-to-peer通信。由于“Outputsection”只负责一部分通信链路的数据交互,因此多个端点内核之间的同步通信的实现会更加简单。同时,由于“Output section”有严格的读写权限控制,因此能够在一定程度上保证数据安全。由此,可以在共享内存设备的基础上构建任意端点内核之间的数据通信链路,实现多个端点内核之间的任意peer-to-peer的双向通信,并且适用于跨设备或者跨操作系统的通信。
在一些实施方式中,参考图2所示,指定端点内存区域130中包括若干个数据存储单元134;目标数据块存储在若干个数据存储单元134中的目标数据存储单元134。目标位置索引用于表示目标数据存储单元134的位置,以指示任一其他内核从目标数据存储单元134中读取目标数据块。
其中,目标数据存储单元134的位置为目标数据存储单元134的起始地址,每个数据存储单元134对应有一个唯一的位置索引。
具体地,指定端点内存区域中包括若干个数据存储单元,当指定内核向指定端点内存区域写入需要发送给任一其他内核的目标数据块时,指定端点内存区域可以从若干个数据存储单元中分配目标数据存储单元给指定内核,使指定内核能够将目标数据块存储在目标数据存储单元中。在目标数据块存储至目标数据存储单元后,目标数据存储单元的位置对应的目标位置索引会被存入该指定端点内存区域中与该任一其他内核对应的索引存储队列中。该任一其他内核根据该索引存储队列中的目标位置索引,可以找到指定端点内存区域中目标数据存储单元的位置,并从目标数据存储单元中读取目标数据块。
在一些实施例中,若干个数据存储单元可以具有相同的尺寸,一个目标数据存储单元可以用于存储一个目标数据块。
示例性地,指定内核为端点内核A,任一其他内核为端点内核B。端点内核A对应有指定端点内存区域1,指定端点内存区域1中包括有端点内核B对应的索引存储队列B,以及若干个数据存储单元。当端点内核A需要向端点内核B发送目标数据块DB1时,指定端点内存区域1可以将若干个数据存储单元中的数据存储单元unit1作为目标数据存储单元,并将数据存储单元unit1分配给端点内核A,用于存储目标数据块DB1。端点内核A将目标数据块DB1写入数据存储单元unit1后,数据存储单元unit1对应的位置索引会作为目标位置索引,被存储在索引存储队列B中。端点内核B根据指定端点内存区域1中索引存储队列B中的目标位置索引,可以找到指定端点内存区域1中数据存储单元unit1的位置,并从数据存储单元unit1中读取数据块DB1。
在另一些实施例中,一个目标数据块可以存储在多个目标数据存储单元中。具体地,当指定内核向指定端点内存区域写入目标数据块时,指定端点内存区域可以将若干个数据存储单元中的一部分数据存储单元作为目标数据存储单元分配给指定内核,用于存储目标数据块。
进一步地,若干个数据存储单元可以构成数据存储池。当指定内核需要向指定端点内存区域中写入目标数据块时,指定端点内存区域可以从指定端点内存区域的数据存储池中动态分配目标数据存储单元给指定内核。
在一些实施方式中,指定内核为发送端内核,任一其他内核为任一接收端内核。参考图3所示,共享内存空间120包括针对任一接收端内核配置且任一接收端内核可读写的接收端点内存区域140;接收端点内存区域140被配置为N个端点内核中除任一接收端内核之外其他内核的只读内存区域。
其中,接收端点内存区域140可以称为任一接收端内核独占的可读写区域,用于存储任一接收端内核写入的数据。
具体地,针对N个端点内核中除发送端内核以外的任一接收端内核,共享内存空间中包括针对该任一接收端内核配置的接收端点内存区域,且该接收端点内存区域被配置为仅有该任一接收端内核具有可读写权限,除了该任一接收端内核之外的N-1个其他内核仅有读权限。在发送端内核向该任一接收端内核传输数据的过程中,或者,在该任一接收端内核从发送端内核对应的指定端点内存区域中读取目标数据块的过程中,该接收端点内存区域可以用于存储该任一接收端内核产生的一些数据,例如,目标数据块的读取时间、读取状态等数据。
示例性地,发送端内核为端点内核A,任一接收端内核为端点内核B。共享内存空间中包括针对端点内核A配置的指定端点内存区域A和针对端点内核B配置的接收端点内存区域B。端点内核A将需要发送给端点内核B的数据块DB1存储在指定端点内存区域A中,在端点内核B从指定端点内存区域A中读取数据块DB1的过程中,端点内核B可以将读取数据块DB1的时间以及是否成功读取等数据写入接收端点内存区域B。由此,在端点内核A或者端点内核B发生异常时,可以根据接收端点内存区域B中存储的相关数据进行后续的处理,从而保障数据传输的可靠性。
需要说明的是,接收端点内存区域可以是动态分配给任一接收端内核的,也可以是事先为任一接收端内核分配好的。
在一些实施方式中,目标数据块包括多笔目标数据。参考图4所示,接收端点内存区域140中包括发送端内核对应的使用数据索引142;使用数据索引142用于在任一接收端内核从指定端点内存区域130中读取目标数据块包括的任一笔目标数据后,指向任一笔目标数据的位置对应的下一个位置。
其中,使用数据索引142可以用于表示目标数据块包括的多笔目标数据中未被任一接收端内核读取的目标数据的位置。
具体地,任一接收端内核从指定端点内存区域中读取目标数据块包括的任一笔目标数据后,可以对接收端点内存区域中发送端内核对应的使用数据索引进行更新,使该使用数据索引指向指定端点内存区域中的该任一笔目标数据的位置对应的下一个位置。该任一接收端内核可以根据使用数据索引,从该下一个位置处读取数据。
可以理解的是,使用数据索引初始指向目标数据块的起始位置。
示例性地,发送端内核为端点内核A,任一接收端内核为端点内核B。端点内核A对应有指定端点内存区域A,指定端点内存区域A中包括针对端点内核B分配的索引存储队列B。端点内核B对应有接收端点内存区域B,接收端点内存区域B中包括端点内核A对应的使用数据索引K1。指定端点内存区域A中存储有需要发送给端点内核B的目标数据块DB1,目标数据块DB1包括4笔目标数据,且目标数据块DB1对应的目标位置索引存储在指定端点内存区域A中的索引存储队列B。端点内核B首先根据索引存储队列B中的目标位置索引从指定端点内存区域A中读取目标数据块DB1包括的第一笔目标数据,然后对接收端点内存区域B中的使用数据索引K1进行更新,以将使用数据索引K1指向该第一笔目标数据的位置对应的下一个位置,即指向第二笔目标数据的位置。端点内核B根据使用数据索引K1当前指向的位置,可以从第二笔目标数据的位置读取第二笔目标数据,并将使用数据索引K1指向第三笔目标数据的位置。端点内核B根据使用数据索引K1当前指向的位置,可以从第三笔目标数据的位置读取第三笔目标数据,并将使用数据索引K1指向第四笔目标数据的位置。端点内核B根据使用数据索引K1当前指向的位置,可以从第四笔目标数据的位置读取第四笔目标数据。
进一步地,在一些实施例中,在端点内核B读取目标数据块DB1包括的第四笔目标数据以后,端点内核B根据使用数据索引K1当前指向的位置处没有读取到数据,或者判断使用数据索引K1当前指向的位置处的数据不属于当前目标数据块DB1,可以表明当前目标数据块DB1已全部被端点内核B读取。
需要说明的是,可以将使用数据索引称为used索引。由于未被任一接收端内核读取的目标数据也可以理解为是未被任一接收端内核使用的目标数据,因此,使用数据索引也可以用于表示目标数据块包括的多笔目标数据中尚未被任一接收端内核使用的目标数据的位置。
上述实施方式中,通过引入使用数据索引,可以保证接收端内核正确接收目标数据块,提高发送端内核和接收端内核之间数据通信的可靠性。
在一些实施方式中,继续参考图4所示,使用数据索引142还用于在使用数据索引142指向的下一个位置不是目标数据块的终止位置的情况下,指示任一接收端内核从指定端点内存区域130中读取下一笔目标数据。
其中,下一笔目标数据是下一个位置对应的目标数据。
具体地,任一接收端内核从指定端点内存区域中读取目标数据块包括的任一笔目标数据后,可以对接收端点内存区域中发送端内核对应的使用数据索引当前指向的下一个位置进行判断。若判断该使用数据索引指向的下一个位置不是目标数据块的终止位置,表明目标数据块未被全部读取,则该任一接收端内核根据该使用数据索引从指定端点内存区域中继续读取下一笔目标数据。
示例性地,发送端内核为端点内核A,任一接收端内核为端点内核B。端点内核A对应有指定端点内存区域A,指定端点内存区域A中包括针对端点内核B分配的索引存储队列B。端点内核B对应有接收端点内存区域B,接收端点内存区域B中包括端点内核A对应的使用数据索引K1。指定端点内存区域A中存储有需要发送给端点内核B的目标数据块DB1,目标数据块DB1包括4笔目标数据,且目标数据块DB1对应的目标位置索引存储在指定端点内存区域A中的索引存储队列B。端点内核B首先根据索引存储队列B中的目标位置索引从指定端点内存区域A中读取目标数据块DB1包括的第一笔目标数据,然后对接收端点内存区域B中的使用数据索引K1进行更新,以将使用数据索引K1指向该第一笔目标数据的位置对应的下一个位置,即指向第二笔目标数据的位置。端点内核B判断使用数据索引K1当前指向的位置不是目标数据块DB1的终止位置,目标数据块DB1未被全部读取,则根据使用数据索引K1当前指向的位置读取第二笔目标数据,并将使用数据索引K1指向第三笔目标数据的位置。端点内核B判断使用数据索引K1当前指向的位置不是目标数据块DB1的终止位置,则根据使用数据索引K1当前指向的位置读取第三笔目标数据,并将使用数据索引K1指向第四笔目标数据的位置。端点内核B判断使用数据索引K1当前指向的位置不是目标数据块DB1的终止位置,则根据使用数据索引K1当前指向的位置读取第四笔目标数据。
进一步地,若使用数据索引当前指向的下一个位置是目标数据块的终止位置,可以认为使用数据索引当前指向的下一个位置处的数据不属于当前目标数据块。
在一些实施例中,目标数据块对应有数据长度。接收端内核可以通过比较当前已读取的目标数据的总数据长度与目标数据块对应的数据长度,判断使用数据索引当前指向的位置是否是目标数据块的终止位置。进一步地,可以判断使用数据索引当前指向的位置处的数据是否属于当前目标数据块。
示例性地,目标数据块在传输时由数据块包头和有效数据构成,数据块包头中包含的信息如表1所示。
表1
其中,字段size用于表示目标数据块中的有效数据的长度;字段channel用于表示当前通信链路的通道号,可以根据N个端点内核之间构建的通信链路进行设定;字段reserved用于表示预留的可修改字段,后续可以根据实际应用需要进行修改和设置。数据块包头共占用8字节,其余部分内容用来存放有效数据。
以上述端点内核A和端点内核B为例。端点内核B从指定端点内存区域A中读取目标数据块DB1包括的第一笔目标数据后,可以根据当前已读取的1笔目标数据,判断该1笔目标数据的总数据长度和目标数据块DB1对应的数据块包头中的数据长度不相同,则端点内核B可以判断使用数据索引K1当前指向的位置不是目标数据块DB1的终止位置。端点内核B根据使用数据索引K1读取目标数据块DB1包括的第二笔目标数据,并根据当前已读取的2笔目标数据,判断该2笔目标数据的总数据长度和目标数据块DB1对应的数据块包头中的数据长度不相同,则端点内核B可以判断使用数据索引K1当前指向的位置不是目标数据块DB1的终止位置。端点内核B根据使用数据索引K1读取目标数据块DB1包括的第三笔目标数据,并根据当前已读取的3笔目标数据,判断该3笔目标数据的总数据长度和目标数据块DB1对应的数据块包头中的数据长度不相同,则端点内核B可以判断使用数据索引K1当前指向的位置不是目标数据块DB1的终止位置。端点内核B根据使用数据索引K1读取目标数据块DB1包括的第四笔目标数据。
在一些实施方式中,使用数据索引142还用于在使用数据索引142指向的下一个位置是目标数据块的终止位置的情况下,指示任一接收端内核向发送端内核发送第一中断信号。其中,第一中断信号用于表明目标数据块已被任一接收端内核读取。
在一些情况中,为了避免发送端内核向任一接收端内核重复发送目标数据块,发送端内核和任一接收端内核之间可以基于中断机制进行通信。
具体地,任一接收端内核从指定端点内存区域中读取目标数据块包括的任一笔目标数据后,可以对接收端点内存区域中发送端内核对应的使用数据索引当前指向的下一个位置进行判断。若判断该使用数据索引指向的下一个位置是目标数据块的终止位置,表明目标数据块已被该任一接收端内核全部读取,则该任一接收端内核可以向发送端内核发送第一中断信号,用于指示发送端内核当前目标数据块的传输已完成。
示例性地,以上述端点内核A和端点内核B为例。端点内核B从指定端点内存区域A中读取目标数据块DB1包括的第四笔目标数据后,可以判断使用数据索引K1当前指向的位置是目标数据块DB1的终止位置,则向端点内核A发送第一中断信号。
在一些实施例中,目标数据块对应有数据长度。接收端内核可以通过比较当前已读取的目标数据的总数据长度与目标数据块对应的数据长度,判断使用数据索引当前指向的位置是否是目标数据块的终止位置。
示例性地,以上述端点内核A和端点内核B为例。端点内核B从指定端点内存区域A中读取目标数据块DB1包括的第四笔目标数据后,可以根据当前已读取的4笔目标数据,判断该4笔目标数据的总数据长度和目标数据块DB1对应的数据块包头中的数据长度相同。由此,端点内核B可以判断使用数据索引K1当前指向的位置是目标数据块DB1的终止位置,表明当前目标数据块DB1已全部被端点内核B读取,当前目标数据块DB1传输完成,则端点内核B可以向端点内核A发送第一中断信号。
上述实施方式中,通过使接收端内核在确认目标数据块中的多笔目标数据均已读取的情况下,向发送端内核发送中断信号,来避免发送端内核向接收端内核重复发送目标数据块的情况。由此,发送端内核和接收端内核之间基于中断机制进行数据通信,可以有效提高数据通信的效率。同时,利用中断机制可以减少发送端内核或者接收端内核发生系统崩溃的情况下导致的数据通信异常,从而提高数据通信的可靠性。
在一些实施方式中,索引存储队列132具有入队指针和出队指针;入队指针和出队指针被初始化为指向索引存储队列132中的同一个位置。入队指针用于指示发送端内核将目标位置索引存入入队指针指向的目标入队位置,并将入队指针指向目标入队位置的下一个入队位置;出队指针用于指示任一接收端内核从索引存储队列132中获取目标位置索引。
其中,索引存储队列132是一个先入先出的循环队列。目标入队位置和目标入队位置的下一个入队位置均为索引存储队列132中的单元。
具体地,初始阶段,指定端点内存区域中任一接收端内核对应的索引存储队列的入队指针和出队指针指向同一个目标入队位置。发送端内核将目标数据块写入指定端点内存区域后,可以将目标数据块对应的目标位置索引保存到指定端点内存区域中任一接收端内核对应的索引存储队列的入队指针当前所指向的目标入队位置。发送端内核更新入队指针,将入队指针向后移动一个位置,使入队指针指向目标入队位置的下一个入队位置。任一接收端内核根据对应的索引存储队列的出队指针,可以获取到目标位置索引。
需要说明的是,可以将入队指针表示为end指针,将出队指针表示为begin指针。
示例性地,发送端内核为端点内核A,任一接收端内核为端点内核B。端点内核A对应有指定端点内存区域1,指定端点内存区域1中包括有端点内核B对应的索引存储队列B,索引存储队列B具有begin指针和end指针。参考图5所示,初始阶段,索引存储队列B的begin指针和end指针指向索引存储队列B的队首位置。端点内核A将目标数据块DB1写入指定端点内存区域1,并将目标数据块DB1对应的目标位置索引Index1保存到索引存储队列B的end指针当前所指向的队首位置。端点内核A更新end指针,将end指针向后移动一个位置,使end指针指向队首位置的下一个位置。端点内核B根据索引存储队列B的begin指针,可以获取到目标位置索引Index1。
需要说明的是,也可以由共享内存设备在发送端内核将目标数据块写入指定端点内存区域后,将目标数据块对应的目标位置索引保存到索引存储队列的入队指针当前所指向的目标入队位置,并更新入队指针。begin指针指向的队列位置中的内容为指定端点内存区域中要发送的目标数据块的位置,end指针指向的队列位置中的内容为空。当begin指针和end指针指向相同的队列位置时,表示队列为空,表明指定端点内存区域中不存在需要对应的任一接收端内核读取的目标数据块。
在一些实施方式中,第一中断信号用于指示发送端内核将出队指针指向入队指针指向的下一个入队位置,并释放目标数据块占用的存储区域。
具体地,任一接收端读取目标数据块后,向发送端内核发送第一中断信号。发送端内核接收到该任一接收端内核发送的第一中断信号后,响应第一中断信号,更新该任一接收端内核对应的索引存储队列的出队指针,以将该出队指针指向入队指针当前指向的下一个入队位置,并将指定端点内存区域中目标数据块所占用的存储区域释放。
示例性地,以上述端点内核A和端点内核B为例。端点内核A接收到端点内核B发送的第一中断信号后,响应该第一中断信号,将索引存储队列B的begin指针移动到end指针处,并将目标数据块DB1占用的存储区域释放。
在一些实施例中,目标数据块占用的存储区域为目标数据存储单元。具体地,任一接收端读取目标数据块后,向发送端内核发送第一中断信号。发送端内核接收到该任一接收端内核发送的第一中断信号后,响应第一中断信号,将该任一接收端内核对应的索引存储队列的出队指针指向入队指针当前指向的下一个入队位置,并将指定端点内存区域中的目标数据存储单元释放。
在一些实施方式中,目标位置索引用于指示任一其他内核在接收到第二中断信号的情况下,从指定端点内存区域中读取目标数据块。其中,第二中断信号用于表明指定端点内存区域中存在目标数据块。
其中,任一其他内核是接收端内核,指定内核是发送端内核。
具体地,在指定内核将需要发送给任一其他内核的目标数据块写入指定端点内存区域后,可以向该任一其他内核发送第二中断信号,用于表明该指定端点内存区域中存在需要该任一其他内核读取的目标数据块。
示例性地,指定内核为端点内核A,任一其他内核为端点内核B。端点内核A将需要发送给端点内核B的目标数据块DB1写入端点内核A对应的指定端点内存区域1中,指定端点内存区域1中包括端点内核B对应的索引存储队列B,索引存储队列B具有begin指针和end指针。端点内核A将目标数据块DB1对应的目标位置索引存储在指定端点内存区域1中索引存储队列B的end指针指向的位置,然后将end指针向后移动一个位置,即在该索引存储队列B中添加一个元素。最后,端点内核A向端点内核B发送第二中断信号,用于指示端点内核B需要从指定端点内存区域1中读取目标数据块DB1。
进一步地,端点内核B接收到第二中断信号后,响应该第二中断信号,以从指定端点内存区域1中的索引存储队列B中获取目标位置索引,并根据目标位置索引从指定端点内存区域1中读取目标数据块DB1。
在一些实施例中,目标数据块被存储在目标数据存储单元中,目标数据存储单元是从指定端点内存区域中的数据存储池中动态分配得到的。具体地,指定内核发送数据的流程可以包括:首先,指定内核从指定端点内存区域中的数据存储池中分配得到一个目标数据存储单元,并向目标数据存储单元中写入需要发送给任一其他内核的目标数据块。然后,指定内核将目标数据存储单元对应的目标位置索引存储在指定端点内存区域中包括的该任一其他内核对应的索引存储队列中,并向该任一其他内核发送第二中断信号。
相应地,该任一其他内核接收数据的流程可以包括:首先,该任一其他内核接收到指定内核发送的第二中断信号后,响应该第二中断信号,根据指定端点内存区域中的该任一其他内核对应的索引存储队列的begin指针指向的位置获取目标位置索引,并根据目标位置索引获取目标数据存储单元。其次,该任一其他内核从目标数据存储单元中读取目标数据块包括的多笔目标数据,并在读取任一笔目标数据后,更新任一其他内核对应的接收端点内存区域中与该指定内核对应的使用数据索引,使其指向该任一笔目标数据的位置的下一个位置。然后,该任一其他内核根据该使用数据索引继续读取下一笔目标数据。重复上述步骤,直至目标数据块被该任一其他内核全部读取。最后,该任一其他内核向指定内核发送第一中断信号,由指定内核响应第一中断信号,将该任一其他内核对应的索引存储队列的begin指针指向end指针指向的位置,并将目标数据存储单元释放。
示例性地,以上述端点内核A和端点内核B为例。端点内核A向端点内核B发送数据的流程可以包括:首先,端点内核A从指定端点内存区域1中的数据存储池中分配得到一个目标数据存储单元,并向该目标数据存储单元中写入目标数据块DB1。然后,端点内核A将该目标数据存储单元对应的目标位置索引存储在指定端点内存区域1中索引存储队列B的end指针指向的位置,并将end指针向后移动一个位置,即在该索引存储队列B中添加一个元素。最后,端点内核A向端点内核B发送第二中断信号,用于指示端点内核B需要从指定端点内存区域1中读取目标数据块DB1。
相应地,端点内核B接收数据的流程可以包括:首先,端点内核B接收到端点内核A发送的第二中断信号后,响应该第二中断信号,根据指定端点内存区域1中的索引存储队列B的begin指针指向的位置获取目标位置索引,并根据目标位置索引获取目标数据存储单元。其次,端点内核B从目标数据存储单元中读取目标数据块DB1包括的多笔目标数据,并在读取任一笔目标数据后,将端点内核B对应的接收端点内存区域2与端点内核A对应的使用数据索引指向该任一笔目标数据的位置的下一个位置。然后,端点内核B根据该使用数据索引继续读取下一笔目标数据。重复上述步骤,直至目标数据块DB1被端点内核B全部读取。最后,端点内核B向端点内核A发送第一中断信号,由端点内核A响应第一中断信号,将端点内核B对应的索引存储队列B的begin指针指向end指针指向的位置,并将目标数据存储单元释放。
需要说明的是,在指定内核将需要发送给任一其他内核的目标数据块写入指定端点内存区域后,也可以由共享内存设备将目标数据块对应的目标位置索引存储在指定端点内存区域中包括的该任一其他内核对应的索引存储队列中,并由共享内存设备向该任一其他内核发送第二中断信号。
本说明书实施方式提供一种核间通信系统,参考图6a所示,核间通信系统200包括共享内存设备210,共享内存设备210包括适用于N个端点内核的共享内存空间220;N为正整数。
其中:共享内存空间220包括N个的端点内存区域230;针对任一端点内存区域230,任一端点内存区域230被配置为N个端点内核中指定内核可读写的指定端点内存区域,以及N个端点内核中除指定内核之外其他内核的只读内存区域。
具体地,针对每个端点内核,在共享内存空间中包括针对每个端点内核配置的对应的端点内存区域。在有N个端点内核参与通信的情况下,共享内存空间中包括N个端点内存区域,且针对该N个端点内存区域中的任一端点内存区域,其被配置为仅有N个端点内核中的指定内核具有可读写权限,除该指定内核之外的其他内核仅有读权限。
示例性地,N个端点内核包括端点内核A、端点内核B、端点内核C、端点内核D、端点内核E,则共享内存空间中包括5个端点内存区域,分别为端点内存区域1、端点内存区域2、端点内存区域3、端点内存区域4、端点内存区域5。针对端点内存区域1,该端点内存区域可以被配置为指定端点内核A的可读写内存区域,以及其他4个端点内核的只读内存区域;针对端点内存区域2,该端点内存区域可以被配置为指定端点内核B的可读写内存区域,以及其他4个端点内核的只读内存区域;针对端点内存区域3,该端点内存区域可以被配置为指定端点内核C的可读写内存区域,以及其他4个端点内核的只读内存区域;针对端点内存区域4,该端点内存区域可以被配置为指定端点内核D的可读写内存区域,以及其他4个端点内核的只读内存区域;针对端点内存区域5,该端点内存区域可以被配置为指定端点内核E的可读写内存区域,以及其他4个端点内核的只读内存区域。
需要说明的是,由于任一端点内存区域仅有指定内核可读写,因此,可以理解为该任一端点内存区域用于该指定内核的数据输出。
在一些实施方式中,参考图6b所示,共享内存空间220还包括状态表区域240和共享内存区域250。
其中:状态表区域240用于存储N个端点内核的状态数据;共享内存区域250被配置为N个端点内核的可读写内存区域。
其中,共享内存区域250是所有端点内核具有可读写权限的内存区域。
具体地,共享内存空间中包括用于存储N个端点内核的状态数据的状态表区域,以及N个端点内核均具有可读写权限的共享内存区域。当任一端点内核更新自己的状态时,其状态值会被更新到状态表区域中对应的位置。通过状态表区域,每个端点内核可以快速获取其他端点内核的状态,从而确定是否可以与其他端点内核进行通信等。
示例性地,端点内核包括主机操作系统和虚拟机操作系统GuestOS,每个端点内核上对应有各自的ivshmem设备。本说明书中的共享内存设备是由虚拟机监视器hypervisor模拟的ivshmem共享内存设备,可以通过对DABT(数据访问异常)来处理GuestOS对PCI配置空间、ivshmem寄存器等的访问操作。共享内存设备需要定义共享内存空间中的各个共享区域来支持多个端点内核之间基于共享内存设备的peer-to-peer通信。共享内存设备的共享内存空间由多个共享区域构成,具体如下表2所示:
其中,第一个区域为状态表区域。该区域中包含了所有端点内核上的ivshmem设备端的状态数据,每个状态数据的长度可以是32bit。当任一端点内核上的ivshmem设备更新其状态时,其状态数据会被更新到上述状态表区域中对应的位置。例如,将端点内核称为peer,当端点内核peer 0上的ivshmem设备将其状态更新为离线,则该离线状态数据会被更新到状态表区域中对应存储端点内核peer 0的状态数据的位置;当端点内核peer 2上的ivshmem设备将其状态更新为在线,则该在线状态数据会被更新到状态表区域中对应存储端点内核peer 2的状态数据的位置。通过状态表区域,每个端点内核上的ivshmem设备可以快速地获取到其他端点内核上的ivshmem设备的状态信息。
第二个区域为所有端点内核具有可读写权限的共享内存区域。需要说明的是,该区域可以是共享内存设备为通信提供的基本的共享内存区域,由于本说明书提供的核间通信方法是基于每个端点内核分别对应的端点内存区域实现的,因此,本说明书不对该共享内存区域作进一步的描述。
剩下的N个内存区域是N个端点内存区域,用于每个端点内核的输出。针对该N个端点内存区域中的任一端点内存区域,其被配置为仅有N个端点内核中的指定内核具有可读写权限,除该指定内核之外的其他内核仅有读权限。示例性地,端点内存区域“Outputsection for peer 0”被配置为端点内核peer 0具有可读写权限、其他内核仅有读权限的内存区域,用于端点内核peer 0的输出;端点内存区域“Output section for peer 1”被配置为端点内核peer 1具有可读写权限、其他内核仅有读权限的内存区域,用于端点内核peer 1的输出;端点内存区域“Output section for peer 2”被配置为端点内核peer 2具有可读写权限、其他内核仅有读权限的内存区域,用于端点内核peer 2的输出。以此类推,端点内存区域“Output section for peer N-1”被配置为端点内核peer N-1具有可读写权限、其他内核仅有读权限的内存区域,用于端点内核peer N-1的输出。
进一步地,通过状态表区域中各个端点内核对应的状态数据,共享内存设备还可以确定各个端点内核对应的角色,例如,可以确定各个端点内核是发送端内核或者接收端内核。
在一些实施方式中,参考图7a所示,任一端点内存区域230包括N个的索引存储队列232。针对任一索引存储队列232,任一索引存储队列232与N个端点内核中的任一端点内核一一对应;其中,任一索引存储队列232用于存储位置索引;位置索引用于指示任一端点内核从任一端点内存区域230中读取数据块。
在一些情况中,基于共享内存设备的通信模型和常规的通信模型差异较大,需要设计一个软件协议,来实现任意端点内核之间的peer-to-peer通信。可以理解的是,当存在N个端点内核参与通信时,若要实现任意端点内核之间的peer-to-peer的双向通信,需要建立个相互独立的通信通道,且每一个通道为单向通信通道。若所有的通信通道均采用相同的设计(即任意端点内核之间用于实现双向通信的两条通信通道是对称的),那么只需要关注一条单向通信通道的设计和实现即可。由此,可以大大降低对任意端点内核之间的通信通道进行设计的复杂度和编码的工作量。由于一个端点内核对应的端点内存区域需要负责该端点内核向其他N-1个端点内核输出数据的通信链路,因此,为了便于处理,可以将该端点内核对应的端点内存区域划分为N份,每一份负责一个通信链路。对于每一个通信链路,采用循环队列的方式实现数据传输,因此,任一端点内存区域中可以包括N个索引存储队列。
具体地,针对任一端点内存区域,可以在该任一端点内存区域中分配N个索引存储队列,且N个索引存储队列与N个端点内核分别一一对应。针对N个索引存储队列中的任一索引存储队列,该队列用于存储需要发送给该队列对应的端点内核的数据块的位置索引,使得该队列对应的端点内核可以根据该队列中的位置索引从该任一端点内存区域中读取相应的数据块。
示例性地,参考图7b所示,N个端点内核中包括有端点内核peer A、端点内核peerB、端点内核peer C、端点内核peer D等。针对端点内核peer A对应的端点内存区域Outputsection for A,可以将该端点内存区域划分为N份,每一份对应一个通信链路,包括由peerA向peer B发送数据的单向通信链路、由peer A向peer C发送数据的单向通信链路、由peerA向peer D发送数据的单向通信链路等。每一份对应有一个索引存储队列,用于通过循环队列的方式实现数据传输。由此,可以得到N个索引存储队列,包括索引存储队列Queue forB、索引存储队列Queue for C、索引存储队列Queue for D等。
进一步地,参考图7c所示,由端点内核peer A向其他端点内核传输数据的每一个通信链路可以由数据存储单元、索引存储队列、使用数据索引构成,数据存储单元用于存储数据块,每一个索引存储队列对应有begin指针和end指针。以peer A向peer B传输数据的通信链路为例。其中,需要发送给peer B的数据块存储在端点内存区域Output sectionfor A动态分配的数据存储单元中。索引存储队列Queue for B的begin指针指向的位置中存储有数据块对应的位置索引,用于指向数据块的位置,end指针指向下一个入队位置。peer B能够根据该begin指针指向的位置获取该数据块对应的位置索引。peer B对应的端点内存区域Output section for B中包括peer A对应的使用数据索引Queue used of A,用于指向该数据块中未被peer B读取的数据的位置。由于端点内存区域Output sectionfor A中不存在需要发送给peer C的数据块,因此,索引存储队列Queue for C的begin指针和end指针指向同一个位置,peer C对应的端点内存区域Output section for C中包括的peer A对应的使用数据索引Queue used of A可以指向该begin指针和end指针指向的同一个位置。
在一些实施例中,针对任一端点内存区域,还可以在该针对任一端点内存区域中分配N个使用数据索引,且N个使用数据索引与N个端点内核分别一一对应。
示例性地,针对任一端点内存区域,该端点内存区域由一段连续的内存空间构成,需要将这段内存空间按照特定的布局进行分配,以满足基于共享内存设备的通信模型设计的通信协议,则任一端点内存区域中可以包括以下信息:(1)索引存储队列N;(2)数据存储池,用于动态分配存储数据块的数据存储单元;(3)使用数据索引/>N;(4)其他控制或状态数据。其中,数据存储池的原理和内存池类似,分配数据存储池的目的是提高对任一端点内存区域的利用率。针对任一端点内存区域,在该端点内存区域中预先指定一块区域作为数据存储池,并按照固定的大小将数据存储池分成多个数据存储单元。数据存储池中的数据存储单元在运行时(对应的发送端内核向该端点内存区域写入数据块时)被动态地分配给各个通信链路。数据存储池的分配可以采用bitmap(位图)技术进行管理。
上述实施方式中,通过在任一端点内存区域中分配N个索引存储队列,实现N个端点内核中任意两者间的通信,且支持为任一端点内核建立多个通信通道。在N个端点内核包括主机操作系统和多个虚拟机操作系统GuestOS的场景中,在任一虚拟机操作系统GuestOS被动态创建或者销毁的情况下,均能够保证通信的稳定性和可靠性。
本说明书实施方式提供一种核间通信方法,应用于核间通信系统。核间通信系统包括共享内存设备,共享内存设备包括适用于N个端点内核的共享内存空间;共享内存空间包括针对N个端点内核中的指定内核配置且指定内核可读写的指定端点内存区域。参考图8所示,该核间通信方法可以包括以下步骤。
S810、指定内核向指定端点内存区域写入目标数据块。其中,指定端点内存区域被配置为N个端点内核中除指定内核之外其他内核的只读内存区域;指定端点内存区域包括针对任一其他内核分配的索引存储队列;索引存储队列存储有目标数据块对应的目标位置索引。
S820、任一其他内核根据目标位置索引从指定端点内存区域读取目标数据块。
在一些实施方式中,目标数据块被写入指定端点内存区域中的目标数据存储单元;目标位置索引用于指向目标数据存储单元的位置;索引存储队列具有入队指针。参考图9所示,在指定内核向指定端点内存区域写入目标数据块之后,核间通信方法可以包括以下步骤。
S910、指定内核根据目标数据存储单元的位置得到目标位置索引,并将目标位置索引存入索引存储队列中入队指针指向的目标入队位置。
S920、指定内核将入队指针指向目标入队位置的下一个入队位置。
S930、指定内核向任一其他内核发送第二中断信号。其中,第二中断信号用于表明指定端点内存区域中存在目标数据块。
在一些实施方式中,索引存储队列还具有出队指针;出队指针用于指向目标位置索引。在任一其他内核根据目标位置索引从指定端点内存区域读取目标数据块之前,核间通信方法可以包括:任一其他内核响应第二中断信号,以根据索引存储队列中的出队指针指向的位置,得到目标位置索引。相应地,任一其他内核根据目标位置索引从指定端点内存区域读取目标数据块,可以包括:任一其他内核根据目标位置索引从目标数据存储单元中读取目标数据块。
在一些实施方式中,指定内核为发送端内核,任一其他内核为任一接收端内核。共享内存空间包括针对任一接收端内核配置且任一接收端内核可读写的接收端点内存区域;接收端点内存区域中包括发送端内核对应的使用数据索引;目标数据块包括多笔目标数据。参考图10所示,任一其他内核根据目标位置索引从目标数据存储单元中读取目标数据块,可以包括以下步骤。
S1010、任一接收端内核根据目标位置索引从目标数据存储单元中读取目标数据块包括的任一笔目标数据。
S1020、任一接收端内核将使用数据索引指向任一笔目标数据的位置对应的下一个位置。其中,接收端点内存区域被配置为N个端点内核中除任一接收端内核之外其他内核的只读内存区域。
在一些实施方式中,在任一接收端内核将使用数据索引指向任一笔目标数据的位置对应的下一个位置之后,核间通信方法还可以包括:若使用数据索引指向的下一个位置是目标数据块的终止位置,任一接收端内核向发送端内核发送第一中断信号。其中,第一中断信号用于表明目标数据块已被任一接收端内核读取。
在一些实施方式中,核间通信方法还可以包括:发送端内核响应第一中断信号,以将出队指针指向入队指针指向的下一个入队位置,并释放目标数据存储单元。
需要说明的是,关于上述实施方式中共享内存设备、N个端点内核、指定端点内存区域、索引存储队列、接收端点内存区域、使用数据索引的描述,请参考本说明书中关于核间通信系统中共享内存设备、N个端点内核、指定端点内存区域、索引存储队列、接收端点内存区域、使用数据索引的描述,具体这里不再赘述。
本说明书实施方式提供一种核间通信装置,应用于核间通信系统。核间通信系统包括共享内存设备,共享内存设备包括适用于N个端点内核的共享内存空间;共享内存空间包括针对N个端点内核中的指定内核配置且指定内核可读写的指定端点内存区域。参考图11所示,核间通信装置1100可以包括:目标数据块写入模块1110、目标数据块读取模块1120。
目标数据块写入模块1110,用于指定内核向指定端点内存区域写入目标数据块。其中,指定端点内存区域被配置为N个端点内核中除指定内核之外其他内核的只读内存区域;指定端点内存区域包括针对任一其他内核分配的索引存储队列;索引存储队列存储有目标数据块对应的目标位置索引。
目标数据块读取模块1120,用于任一其他内核根据目标位置索引从指定端点内存区域读取目标数据块。
在一些实施方式中,目标数据块被存储在指定端点内存区域中的目标数据存储单元;目标位置索引用于指向目标数据存储单元的位置;索引存储队列具有入队指针。目标数据块写入模块1110,还用于:指定内核根据目标数据存储单元的位置得到目标位置索引,并将目标位置索引存入索引存储队列中入队指针指向的目标入队位置;指定内核将入队指针指向目标入队位置的下一个入队位置;指定内核向任一其他内核发送第二中断信号;其中,第二中断信号用于表明指定端点内存区域中存在目标数据块。
在一些实施方式中,索引存储队列还具有出队指针。目标数据块读取模块1120,还用于:任一其他内核响应第二中断信号,以根据索引存储队列中的出队指针指向的位置,得到目标位置索引;任一其他内核根据目标位置索引从目标数据存储单元中读取目标数据块。
关于核间通信装置的具体限定可以参见上文中对于核间通信方法的限定,在此不再赘述。上述核间通信装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于电子设备中的处理器中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本说明书实施方式还提供一种计算机设备,参考图12所示,该计算机设备1200包括存储器1210和处理器1220,存储器1210存储有第一计算机程序1230,处理器1220执行第一计算机程序1230时实现前述任一项实施方式的核间通信方法的步骤。
本说明书实施方式还提供一种芯片,参考图13所示,该芯片1300包括存储单元1310和处理单元1320,存储单元1310存储有第二计算机程序1330,处理单元1320执行第二计算机程序1330时实现前述任一项实施方式的核间通信方法的步骤。
本说明书实施方式还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现前述任一项实施方式的核间通信方法的步骤。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (24)
1.一种核间通信系统,其特征在于,所述核间通信系统包括共享内存设备,所述共享内存设备包括适用于N个端点内核的共享内存空间;所述N为正整数;其中:
所述共享内存空间包括针对所述N个端点内核中的指定内核配置且所述指定内核可读写的指定端点内存区域;
所述指定端点内存区域被配置为所述N个端点内核中除所述指定内核之外其他内核的只读内存区域;
所述指定端点内存区域包括针对任一其他内核分配的索引存储队列;所述索引存储队列存储有目标位置索引;
所述目标位置索引用于表示所述指定端点内存区域中目标数据块的位置,以指示所述任一其他内核从所述指定端点内存区域中读取所述目标数据块。
2.根据权利要求1所述的系统,其特征在于,所述指定端点内存区域中包括若干个数据存储单元;所述目标数据块存储在所述若干个数据存储单元中的目标数据存储单元;
所述目标位置索引用于表示所述目标数据存储单元的位置,以指示所述任一其他内核从所述目标数据存储单元中读取所述目标数据块。
3.根据权利要求1所述的系统,其特征在于,所述指定内核为发送端内核,所述任一其他内核为任一接收端内核;
所述共享内存空间包括针对所述任一接收端内核配置且所述任一接收端内核可读写的接收端点内存区域;
所述接收端点内存区域被配置为所述N个端点内核中除所述任一接收端内核之外其他内核的只读内存区域。
4.根据权利要求3所述的系统,其特征在于,所述目标数据块包括多笔目标数据;所述接收端点内存区域中包括所述发送端内核对应的使用数据索引;
所述使用数据索引用于在所述任一接收端内核从所述指定端点内存区域中读取所述目标数据块包括的任一笔目标数据后,指向所述任一笔目标数据的位置对应的下一个位置。
5.根据权利要求4所述的系统,其特征在于,所述使用数据索引还用于在所述使用数据索引指向的所述下一个位置不是所述目标数据块的终止位置的情况下,指示所述任一接收端内核从所述指定端点内存区域中读取下一笔目标数据;其中,所述下一笔目标数据是所述下一个位置对应的目标数据。
6.根据权利要求5所述的系统,其特征在于,所述使用数据索引还用于在所述使用数据索引指向的所述下一个位置是所述目标数据块的终止位置的情况下,指示所述任一接收端内核向所述发送端内核发送第一中断信号;其中,所述第一中断信号用于表明所述目标数据块已被所述任一接收端内核读取。
7.根据权利要求6所述的系统,其特征在于,所述索引存储队列具有入队指针和出队指针;所述入队指针和所述出队指针被初始化为指向所述索引存储队列中的同一个位置;
所述入队指针用于指示所述发送端内核将所述目标位置索引存入所述入队指针指向的目标入队位置,并将所述入队指针指向所述目标入队位置的下一个入队位置;
所述出队指针用于指示所述任一接收端内核从所述索引存储队列中获取所述目标位置索引。
8.根据权利要求7所述的系统,其特征在于,所述第一中断信号用于指示所述发送端内核将所述出队指针指向所述入队指针指向的所述下一个入队位置,并释放所述目标数据块占用的存储区域。
9.根据权利要求1所述的系统,其特征在于,所述目标位置索引用于指示所述任一其他内核在接收到第二中断信号的情况下,从所述指定端点内存区域中读取所述目标数据块;其中,所述第二中断信号用于表明所述指定端点内存区域中存在所述目标数据块。
10.一种核间通信系统,其特征在于,所述核间通信系统包括共享内存设备,所述共享内存设备包括适用于N个端点内核的共享内存空间;所述N为正整数;其中:
所述共享内存空间包括所述N个的端点内存区域;
针对任一端点内存区域,所述任一端点内存区域被配置为所述N个端点内核中指定内核可读写的指定端点内存区域,以及所述N个端点内核中除所述指定内核之外其他内核的只读内存区域。
11.根据权利要求10所述的系统,其特征在于,所述共享内存空间还包括状态表区域和共享内存区域;其中:
所述状态表区域用于存储所述N个端点内核的状态数据;
所述共享内存区域被配置为所述N个端点内核的可读写内存区域。
12.根据权利要求10所述的系统,其特征在于,所述任一端点内存区域包括所述N个的索引存储队列;
针对任一索引存储队列,所述任一索引存储队列与所述N个端点内核中的任一端点内核一一对应;其中,所述任一索引存储队列用于存储位置索引;所述位置索引用于指示所述任一端点内核从所述任一端点内存区域中读取数据块。
13.一种核间通信方法,其特征在于,应用于核间通信系统;所述核间通信系统包括共享内存设备,所述共享内存设备包括适用于N个端点内核的共享内存空间;所述共享内存空间包括针对所述N个端点内核中的指定内核配置且所述指定内核可读写的指定端点内存区域;所述方法包括:
所述指定内核向所述指定端点内存区域写入目标数据块;其中,所述指定端点内存区域被配置为所述N个端点内核中除所述指定内核之外其他内核的只读内存区域;所述指定端点内存区域包括针对任一其他内核分配的索引存储队列;所述索引存储队列存储有所述目标数据块对应的目标位置索引;
所述任一其他内核根据所述目标位置索引从所述指定端点内存区域读取所述目标数据块。
14.根据权利要求13所述的方法,其特征在于,所述目标数据块被存储在所述指定端点内存区域中的目标数据存储单元;所述目标位置索引用于指向所述目标数据存储单元的位置;所述索引存储队列具有入队指针;在所述指定内核向所述指定端点内存区域写入目标数据块之后,所述方法包括:
所述指定内核根据所述目标数据存储单元的位置得到所述目标位置索引,并将所述目标位置索引存入所述索引存储队列中所述入队指针指向的目标入队位置;
所述指定内核将所述入队指针指向所述目标入队位置的下一个入队位置;
所述指定内核向所述任一其他内核发送第二中断信号;其中,所述第二中断信号用于表明所述指定端点内存区域中存在所述目标数据块。
15.根据权利要求14所述的方法,其特征在于,所述索引存储队列还具有出队指针;所述出队指针用于指向所述目标位置索引;在所述任一其他内核根据所述目标位置索引从所述指定端点内存区域读取所述目标数据块之前,所述方法包括:
所述任一其他内核响应所述第二中断信号,以根据所述索引存储队列中的所述出队指针指向的位置,得到所述目标位置索引;
所述任一其他内核根据所述目标位置索引从所述指定端点内存区域读取所述目标数据块,包括:
所述任一其他内核根据所述目标位置索引从所述目标数据存储单元中读取所述目标数据块。
16.根据权利要求15所述的方法,其特征在于,所述指定内核为发送端内核,所述任一其他内核为任一接收端内核;所述共享内存空间包括针对所述任一接收端内核配置且所述任一接收端内核可读写的接收端点内存区域;所述接收端点内存区域中包括所述发送端内核对应的使用数据索引;所述目标数据块包括多笔目标数据;所述任一其他内核根据所述目标位置索引从所述目标数据存储单元中读取所述目标数据块,包括:
所述任一接收端内核根据所述目标位置索引从所述目标数据存储单元中读取所述目标数据块包括的任一笔目标数据;
所述任一接收端内核将所述使用数据索引指向所述任一笔目标数据的位置对应的下一个位置;其中,所述接收端点内存区域被配置为所述N个端点内核中除所述任一接收端内核之外其他内核的只读内存区域。
17.根据权利要求16所述的方法,其特征在于,在所述任一接收端内核将所述使用数据索引指向所述任一笔目标数据的位置对应的下一个位置之后,所述方法还包括:
若所述使用数据索引指向的所述下一个位置是所述目标数据块的终止位置,所述任一接收端内核向所述发送端内核发送第一中断信号;其中,所述第一中断信号用于表明所述目标数据块已被所述任一接收端内核读取。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
所述发送端内核响应所述第一中断信号,以将所述出队指针指向所述入队指针指向的所述下一个入队位置,并释放所述目标数据存储单元。
19.一种核间通信装置,其特征在于,应用于核间通信系统;所述核间通信系统包括共享内存设备,所述共享内存设备包括适用于N个端点内核的共享内存空间;所述共享内存空间包括针对所述N个端点内核中的指定内核配置且所述指定内核可读写的指定端点内存区域;所述装置包括:
目标数据块写入模块,用于所述指定内核向所述指定端点内存区域写入目标数据块;其中,所述指定端点内存区域被配置为所述N个端点内核中除所述指定内核之外其他内核的只读内存区域;所述指定端点内存区域包括针对任一其他内核分配的索引存储队列;所述索引存储队列存储有所述目标数据块对应的目标位置索引;
目标数据块读取模块,用于所述任一其他内核根据所述目标位置索引从所述指定端点内存区域读取所述目标数据块。
20.根据权利要求19所述的装置,其特征在于,所述目标数据块被存储在所述指定端点内存区域中的目标数据存储单元;所述目标位置索引用于指向所述目标数据存储单元的位置;所述索引存储队列具有入队指针;所述目标数据块写入模块,还用于:
所述指定内核根据所述目标数据存储单元的位置得到所述目标位置索引,并将所述目标位置索引存入所述索引存储队列中所述入队指针指向的目标入队位置;
所述指定内核将所述入队指针指向所述目标入队位置的下一个入队位置;
所述指定内核向所述任一其他内核发送第二中断信号;其中,所述第二中断信号用于表明所述指定端点内存区域中存在所述目标数据块。
21.根据权利要求20所述的装置,其特征在于,所述索引存储队列还具有出队指针;所述目标数据块读取模块,还用于:
所述任一其他内核响应所述第二中断信号,以根据所述索引存储队列中的所述出队指针指向的位置,得到所述目标位置索引;
所述任一其他内核根据所述目标位置索引从所述目标数据存储单元中读取所述目标数据块。
22.一种计算机设备,包括存储器和处理器,所述存储器存储有第一计算机程序,其特征在于,所述处理器执行所述第一计算机程序时实现权利要求13至18中任一项所述的方法的步骤。
23.一种芯片,包括存储单元和处理单元,所述存储单元存储有第二计算机程序,其特征在于,所述处理单元执行所述第二计算机程序时实现权利要求13至18中任一项所述的方法的步骤。
24.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求13至18中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311124128.4A CN116841952A (zh) | 2023-09-01 | 2023-09-01 | 核间通信系统、方法、装置、设备、芯片及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311124128.4A CN116841952A (zh) | 2023-09-01 | 2023-09-01 | 核间通信系统、方法、装置、设备、芯片及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116841952A true CN116841952A (zh) | 2023-10-03 |
Family
ID=88171091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311124128.4A Pending CN116841952A (zh) | 2023-09-01 | 2023-09-01 | 核间通信系统、方法、装置、设备、芯片及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116841952A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931381A (zh) * | 2024-03-25 | 2024-04-26 | 成都菁蓉联创科技有限公司 | 一种基于ivshmem技术的端对端通讯方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090183180A1 (en) * | 2001-06-08 | 2009-07-16 | Vmware, Inc. | High-performance virtual machine networking |
CN109240800A (zh) * | 2018-09-11 | 2019-01-18 | 武汉光庭信息技术股份有限公司 | 一种基于Hypervisor多系统共享内存的管理方法 |
CN110825690A (zh) * | 2019-11-14 | 2020-02-21 | 北京华捷艾米科技有限公司 | 多核处理器的核间通信方法及装置 |
CN115827506A (zh) * | 2022-10-14 | 2023-03-21 | 中信科智联科技有限公司 | 数据写入方法、数据读取方法、装置、处理核和处理器 |
-
2023
- 2023-09-01 CN CN202311124128.4A patent/CN116841952A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090183180A1 (en) * | 2001-06-08 | 2009-07-16 | Vmware, Inc. | High-performance virtual machine networking |
CN109240800A (zh) * | 2018-09-11 | 2019-01-18 | 武汉光庭信息技术股份有限公司 | 一种基于Hypervisor多系统共享内存的管理方法 |
CN110825690A (zh) * | 2019-11-14 | 2020-02-21 | 北京华捷艾米科技有限公司 | 多核处理器的核间通信方法及装置 |
CN115827506A (zh) * | 2022-10-14 | 2023-03-21 | 中信科智联科技有限公司 | 数据写入方法、数据读取方法、装置、处理核和处理器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931381A (zh) * | 2024-03-25 | 2024-04-26 | 成都菁蓉联创科技有限公司 | 一种基于ivshmem技术的端对端通讯方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11372802B2 (en) | Virtual RDMA switching for containerized applications | |
US9495310B2 (en) | Computing system with hardware bus management and method of operation thereof | |
US9052957B2 (en) | Method and system for conducting intensive multitask and multiflow calculation in real-time | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US9842075B1 (en) | Presenting multiple endpoints from an enhanced PCI express endpoint device | |
CN113641457B (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
CN108351783A (zh) | 多核数字信号处理系统中处理任务的方法和装置 | |
KR20140018187A (ko) | 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법 | |
US20140068165A1 (en) | Splitting a real-time thread between the user and kernel space | |
Sun et al. | A ugni-based asynchronous message-driven runtime system for cray supercomputers with gemini interconnect | |
CN116841952A (zh) | 核间通信系统、方法、装置、设备、芯片及可读存储介质 | |
KR20220158804A (ko) | 네트워크 스택 프레임워크에서 일관성 있게 부착된 인터페이스들의 이용 | |
WO2023274278A1 (zh) | 一种资源调度的方法、装置及计算节点 | |
Hruby et al. | On Sockets and System Calls: Minimizing Context Switches for the Socket {API} | |
CN115421787A (zh) | 指令执行方法、装置、设备、系统、程序产品及介质 | |
CN115686346A (zh) | 一种数据存储方法、设备及计算机可读存储介质 | |
US8166256B2 (en) | Using a dual mode reader writer lock | |
US10379918B2 (en) | System and method for MPI implementation in an embedded operating system | |
CN114281529B (zh) | 分布式虚拟化的客户操作系统调度优化方法、系统及终端 | |
CN113391821B (zh) | 一种非对称多处理器嵌入式操作系统 | |
US9367329B2 (en) | Initialization of multi-core processing system | |
CN117112466B (zh) | 一种数据处理方法、装置、设备、存储介质及分布式集群 | |
CN116069451B (zh) | 一种虚拟化方法、装置、设备、介质、加速器及系统 | |
WO2023198128A1 (zh) | 一种分布式资源共享方法及相关装置 | |
CN118170563A (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 |