CN117033008A - 一种基于描述符共享循环队列的多核快速消息通信方法 - Google Patents
一种基于描述符共享循环队列的多核快速消息通信方法 Download PDFInfo
- Publication number
- CN117033008A CN117033008A CN202310456956.1A CN202310456956A CN117033008A CN 117033008 A CN117033008 A CN 117033008A CN 202310456956 A CN202310456956 A CN 202310456956A CN 117033008 A CN117033008 A CN 117033008A
- Authority
- CN
- China
- Prior art keywords
- core
- message
- inter
- queue
- descriptor
- 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
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000004891 communication Methods 0.000 title claims abstract description 30
- 230000005540 biological transmission Effects 0.000 claims abstract description 8
- 230000007547 defect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明属于多核处理器嵌入式***领域,具体涉及一种基于描述符共享循环队列的多核快速消息通信方法。在共享内存区内建立共享循环队列;消息发送核和消息接收核上建立多个不同编号的协议,每个协议绑定一个消息队列;消息发送核在共享循环队列中写入要发送的核间消息,核间消息附有协议编号,向消息接收核发送核间中断;消息接收核接收核间中断,从核间消息中获取协议编号,并将其放入对应消息队列中,上传给应用程序。本发明通过编号协议和消息队列绑定的方式进行多核消息传递,在共享内存区建立消息存储区,克服了现有核间消息通信方法中不适用于多线程运行和依赖硬件的缺点。
Description
技术领域
本发明属于多核处理器嵌入式***领域,具体涉及一种基于描述符共享循环队列的多核快速消息通信方法。
背景技术
处理器的主频连年提高,但最终由于散热和工艺问题,遇到了瓶颈。多核成为处理器厂家提高处理器性能的优选方案。
多核处理器是一个内部集成多个计算单元的处理器,一个计算单元就是一个处理器核。每个核上运行一个独立的程序,多核程序协作完成任务。多核程序协作时不可避免需要传递信息,因此,高效可靠的核间消息传递成为多核协同、提升处理器效能的重要保证。现有的核间消息通信方法主要有以下几种:
(1)利用核间共享内存进行消息传递。多核程序提前约定核间消息格式,选定核间共享内存中的某块区域存储核间消息,在其中划定各个处理器核的可写入区域,其他处理器核从该区域读取核间消息;消息接收核循环查询该区域的消息写入标志等待消息发送核写入消息,获取到信息写入标志后读走消息并重置消息写入标志,以备下一轮的消息传递。该方式简单明了,适合于顺序执行的程序,但不适合多线程运行的程序。
(2)利用硬件通道传递消息。多数多核处理器都具有核间数据传递模块,如TMS320C6678的QMSS模块、FT-Q6713J/500的QLINK模块,其上的软件多利用硬件核间通信模块完成核间消息传递。该方式对硬件依赖性高,对于无核间数据传递模块的多核处理器,***软件尤其是支持并行编程的多核***软件在进行移植时改动较大。
发明内容
本发明提出一种基于描述符共享循环队列的多核快速消息通信方法,以解决现有技术不适合多线程运行的程序、对硬件依赖性高的问题。
为达上述目的,本发明提出技术方案如下:
一种基于描述符共享循环队列的多核快速消息通信方法,包括如下步骤:
步骤1,在描述符的共享内存区分配一块区域建立共享循环队列;
步骤2,消息发送核和消息接收核上建立多个不同编号的协议,每个协议绑定一个消息队列;
步骤3,消息发送核在步骤1所述的共享循环队列中写入要发送的核间消息,所述核间消息附有协议编号,向消息接收核发送核间中断;
步骤4,消息接收核接收核间中断,从共享循环队列中获取核间消息,解析其中的协议编号,并将核间消息放入与所述协议编号绑定的消息队列中,上传给应用程序。
优选的,所述共享循环队列的区域为一段连续的内存区,大小为L*L*S,L为多核处理器的核数,S为描述符的长度。
优选的,所述描述符长度S大于核间消息的长度。
优选的,所述描述符中设置多个消息存储区,消息存储区循环使用;当消息接收核的接受速度慢于消息发送核的消息发送速度时,描述符S中的多个消息存储区可缓存未被目的核接收走的核间消息。
优选的,所述消息队列的个数与多核处理器的核数相同。
优选的,步骤2中,消息发送核通过核间通信协议建立接口将协议消息队列进行绑定。
优选的,步骤3中,具体为:
消息发送核在消息队列中写入要发送的核间消息协议号、当前核号和消息数据,然后向消息接收核发送核间中断。
优选的,步骤3中,具体为:
消息发送核在向消息接收核发送核间中断前,更新消息队列的写指针。
优选的,步骤4中,消息接收核接收核间中断,从共享循环队列中获取核间消息,解析其中的协议编号和源核号,并将核间消息放入对应的消息队列中,上传给应用程序。
优选的,步骤4中,步骤4中,消息接收核通过核间中断服务程序判断核间消息发送源。
本发明的有益之处在于:
该方法通过上层核间通信协议编号和上层***消息队列绑定以及下层共享循环消息队列与核间中断的方式来完成多核消息传递,该方法中核间通信协议编号与***软件的消息队列进行绑定,克服了现有核间消息通信方法中不适用于多线程运行的缺点;
该方法中在共享内存区建立核间消息存储区,不依赖核间数据传递模块传递核间消息,克服现有核间消息通信方法中的硬件依赖强的缺点。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为一种基于描述符共享循环队列的多核快速消息通信方法流程示意图;
图2为一种基于描述符共享循环队列的多核快速消息通信方法演示图;
图3为描述符共享循环队列示意图;
图4为消息队列中的消息格式示意图。
具体实施方式
下面将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
以下详细说明均是示例性的说明,旨在对本发明提供进一步的详细说明。除非另有指明,本发明所采用的所有技术术语与本发明所属领域的一般技术人员的通常理解的含义相同。本发明所使用的术语仅是为了描述具体实施方式,而并非意图限制根据本发明的示例性实施方式。
实施例1:
请参阅图1所示,本发明提供一种基于描述符共享循环队列的多核快速消息通信方法,包括如下步骤:
步骤1,在共享内存区分配一块区域建立共享循环队列,用于存放核间消息。
在共享内存区分配一块区域建立共享循环队列,用于存放核间消息;共享循环队列区域大小为L*L*S,L为多核处理器的核数,S为描述符的长度;每个处理器核使用L*S大小的区域存储其发送给其他核的核间消息,消息接收核从所述L*S大小的区域中读取消息;
L*L*S区域为一段连续的内存区,描述符的长度S为预设值,描述符的长度S大于***中用到的最大核间消息长度;消息发送核到消息接收核的核间消息S区域地址直接通过地址偏移计算得到。
描述符S中设置多个消息存储区,消息存储区循环使用;一般情况下,核间中断是实时的,核间消息均能够被实时的接收,被存储到上层消息队列中;特殊情况下,描述符S中的多个消息存储区可缓存未被目的核接收走的核间消息,例如当消息接收核的接受速度慢于消息发送核的消息发送速度时。
步骤2,核间消息发送核和接收核上建立相同编号的协议,绑定一个消息队列。
消息发送核和消息接收核上的应用程序调用***软件的核间通信协议建立接口,建立多个不同编号的协议,约定所述协议用于传输核间消息;
***的核间通信协议建立接口将一个协议与一个消息队列数组进行绑定,用于存储核间消息;消息队列数组个数为L,与多核处理器的核数对应,可实现程序接收从不同核发来不同协议的核间消息;协议个数上限可由***设置,消息总长度Y由用户自定义。
步骤3,消息发送核向步骤1中的循环队列中写入要发送的核间消息,向消息接收核发送核间中断。
消息发送核在循环消息队列中写入要发送的核间消息协议号、当前核号和消息数据,更新循环队列的写指针,然后向消息接收核发送核间中断;
发送核间消息时指明当前消息的协议编号和消息目的核,从而实现程序不同协议下的核间消息传递。
步骤4,消息接收核的核间中断服务程序判断核间消息发送源,从共享循环队列中获取核间消息,解析其中的协议编号和源核号,并放入对应的消息队列中,上传给应用程序。
消息接收核B的核间中断服务程序判断核间消息发送源,从核A的消息队列中获取核间消息,解析其中的协议编号和源核号并放入对应的上层消息队列中,上传给上层程序。
消息接收核B上的核间中断服务程序中判断核间中断来源,从对应的共享内存Q中读取核间消息并解析得到当前核间消息所属的协议编号、核间消息来源和真正的消息数据。
本发明通过在上层通信协议与操作***消息队列绑定+下层共享循环消息队列的方式实现核间消息的传递,本方法核间消息长度自定义,且核间通过编号方式的协议进行通信,方法简单易用,同时可实现从指定核接收指定协议消息的目的,本方法对多核处理器的硬件依赖度低,具有普遍的多核可推广性。
由技术常识可知,本发明可以通过其它的不脱离其精神实质或必要特征的实施方案来实现。因此,上述公开的实施方案,就各方面而言,都只是举例说明,并不是仅有的。所有在本发明范围内或在等同于本发明的范围内的改变均被本发明包含。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种基于描述符共享循环队列的多核快速消息通信方法,其特征在于,包括如下步骤:
步骤1,在共享内存区分配一块区域建立共享循环队列;
步骤2,消息发送核和消息接收核上建立多个不同编号的协议,每个协议绑定一个消息队列;
步骤3,消息发送核在步骤1所述的共享循环队列中写入要发送的核间消息,所述核间消息附有协议编号,向消息接收核发送核间中断;
步骤4,消息接收核接收核间中断,从共享循环队列中获取核间消息,解析其中的协议编号,并将核间消息放入与所述协议编号绑定的消息队列中,上传给应用程序。
2.如权利要求1所述的一种基于描述符共享循环队列的多核快速消息通信方法,其特征在于,所述共享循环队列的区域为一段连续的内存区,大小为L*L*S,L为多核处理器的核数,S为描述符的长度。
3.如权利要求2所述的一种基于描述符共享循环队列的多核快速消息通信方法,其特征在于,所述描述符长度S大于核间消息的长度。
4.如权利要求1所述的一种基于描述符共享循环队列的多核快速消息通信方法,其特征在于,所述描述符中设置多个消息存储区,消息存储区循环使用;当消息接收核的接受速度慢于消息发送核的消息发送速度时,描述符S中的多个消息存储区可缓存未被目的核接收走的核间消息。
5.如权利要求1所述的一种基于描述符共享循环队列的多核快速消息通信方法,其特征在于,所述消息队列的个数与多核处理器的核数相同。
6.如权利要求1所述的一种基于描述符共享循环队列的多核快速消息通信方法,其特征在于,步骤2中,消息发送核通过核间通信协议建立接口将协议消息队列进行绑定。
7.如权利要求1所述的一种基于描述符共享循环队列的多核快速消息通信方法,其特征在于,步骤3中,具体为:
消息发送核在消息队列中写入要发送的核间消息协议号、当前核号和消息数据,然后向消息接收核发送核间中断。
8.如权利要求1所述的一种基于描述符共享循环队列的多核快速消息通信方法,其特征在于,步骤3中,具体为:
消息发送核在向消息接收核发送核间中断前,更新消息队列的写指针。
9.如权利要求7所述的一种基于描述符共享循环队列的多核快速消息通信方法,其特征在于,步骤4中,消息接收核接收核间中断,从共享循环队列中获取核间消息,解析其中的协议编号和源核号,并将核间消息放入对应的消息队列中,上传给应用程序。
10.如权利要求9所述的一种基于描述符共享循环队列的多核快速消息通信方法,其特征在于,步骤4中,消息接收核通过核间中断服务程序判断核间消息发送源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310456956.1A CN117033008A (zh) | 2023-04-25 | 2023-04-25 | 一种基于描述符共享循环队列的多核快速消息通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310456956.1A CN117033008A (zh) | 2023-04-25 | 2023-04-25 | 一种基于描述符共享循环队列的多核快速消息通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117033008A true CN117033008A (zh) | 2023-11-10 |
Family
ID=88635999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310456956.1A Pending CN117033008A (zh) | 2023-04-25 | 2023-04-25 | 一种基于描述符共享循环队列的多核快速消息通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117033008A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117724874A (zh) * | 2024-02-06 | 2024-03-19 | 珠海星云智联科技有限公司 | 用于管理共享接收队列的方法、计算机设备及介质 |
-
2023
- 2023-04-25 CN CN202310456956.1A patent/CN117033008A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117724874A (zh) * | 2024-02-06 | 2024-03-19 | 珠海星云智联科技有限公司 | 用于管理共享接收队列的方法、计算机设备及介质 |
CN117724874B (zh) * | 2024-02-06 | 2024-04-26 | 珠海星云智联科技有限公司 | 用于管理共享接收队列的方法、计算机设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109992407B (zh) | 一种yarn集群gpu资源调度方法、装置和介质 | |
CN110851371B (zh) | 报文处理方法及相关设备 | |
US8352710B2 (en) | Off-loading of processing from a processor blade to storage blades | |
WO2023179415A1 (zh) | 机器学***台 | |
CN117033008A (zh) | 一种基于描述符共享循环队列的多核快速消息通信方法 | |
CN114579285B (zh) | 一种任务运行***、方法及计算设备 | |
CN111221759A (zh) | 一种基于dma的数据处理***及方法 | |
CN113312161A (zh) | 一种应用调度方法、平台及存储介质 | |
WO2021212965A1 (zh) | 一种资源调度方法及相关装置 | |
CN112114983B (zh) | 一种基于共享内存的通信方法、装置和设备 | |
CN101770504A (zh) | 数据存储、读取方法及设备 | |
CN105550025A (zh) | 分布式基础设施即服务(IaaS)调度方法及*** | |
CN110737530A (zh) | 一种提升handle标识解析***收包能力的方法 | |
US12019909B2 (en) | IO request pipeline processing device, method and system, and storage medium | |
CN114238213A (zh) | 多线程文件解析方法及装置 | |
CN113296972A (zh) | 一种信息的注册方法、计算设备及存储介质 | |
JPH02245864A (ja) | 多重プロセッサシステム | |
CN117891583B (zh) | 异步并行i/o请求的进程调度方法、装置及设备 | |
CN116991593B (zh) | 操作指令处理方法、装置、设备及存储介质 | |
CN112835823B (zh) | 存储控制器应答发送方法 | |
CN114564154B (zh) | 一种基于分布式存储的数据读取方法 | |
CN113760798A (zh) | Rdma设备的分配方法、计算设备及存储介质 | |
CN117707416A (zh) | 一种基于分布式存储的异步io高速存取方法及其装置 | |
CN111143078A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN117041389A (zh) | 一种用于pcie设备的数据报文管理***及方法 |
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 |