[发明专利]一种无锁机制的异构多核CPU间通信系统及方法有效
申请号: | 201811459340.5 | 申请日: | 2018-11-30 |
公开(公告)号: | CN109542832B | 公开(公告)日: | 2020-09-01 |
发明(设计)人: | 卢方勇;李冠 | 申请(专利权)人: | 青岛方寸微电子科技有限公司 |
主分类号: | G06F15/17 | 分类号: | G06F15/17;G06F9/54 |
代理公司: | 济南圣达知识产权代理有限公司 37221 | 代理人: | 董雪 |
地址: | 266111 山东省青岛市高新区*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 机制 多核 cpu 通信 系统 方法 | ||
本发明公开了一种无锁机制的异构多核CPU间通信系统及方法,包括:假设CPU0和CPU1分别为需要进行通信的两个CPU核,为CPU0和CPU1分配一块共享的RAM资源;在共享的RAM资源上面建立深度分别为M和N的两个循环消息队列通道MSG_QUEUE1和MSG_QUEUE2,所述循环消息队列通道由若干消息组成,每一个消息的固定长度为L;队列管理结构QUEUE_MNGT1和QUEUE_MNGT2分别指向循环消息队列通道MSG_QUEUE1和MSG_QUEUE2。本发明方案能够提高多核CPU间工作执行效率和协作能力,使资源利用率最大化。
技术领域
本发明涉及嵌入式技术领域,具体而言,涉及到一种无锁机制的异构多核CPU间通信系统及方法。
背景技术
随着近几年来嵌入式应用的广泛推进,嵌入式设备本身实现的功能越来越复杂.异构多核CPU平台被迅速普及,每个CPU核只做自己擅长的工作,有的负责逻辑调度,有的负责计算和数据处理等等.由此引出了嵌入式软件并行运行及调度的难题,异构多核CPU间如何高效协同工作显得尤为重要。
现今使用的SOC芯片内部可能包含多个异构CPU核,各CPU核拥有私有的cache,中断管理等硬件资源和共享的RAM,寄存器等硬件资源。但多个CPU核本身硬件架构不同,可能运行不同的程序代码,很难共享程序代码,会导致不同CPU间通信困难,很难相互协调工作,需要提供一套协商通信协议来保证。
锁机制具体是指多个CPU在使用统一资源时,需要对资源进行互斥保护,一次只允许单个CPU进行读写访问,其他CPU只能等待,有时需要硬件提供底层互斥锁指令来进行实现,影响数据处理速度。
发明内容
为了解决上述问题,本发明提出了一种无锁机制的异构多核CPU间通信系统及方法,可以高效的实现SOC芯片内部多CPU核间的通信。
为了实现上述目的,本发明采用如下技术方案:
在一个或多个实施方式中公开的一种无锁机制的异构多核CPU间通信系统,包括:
假设CPU0和CPU1分别为需要进行通信的两个CPU核,为CPU0和CPU1分配一块共享的RAM资源;
在共享的RAM资源上面建立深度分别为M和N的两个循环消息队列通道MSG_QUEUE1和MSG_QUEUE2,所述循环消息队列通道由若干消息组成,每一个消息的固定长度为L;循环消息队列通道MSG_QUEUE1由独立的队列管理结构QUEUE_MNGT1维护;循环消息队列通道MSG_QUEUE2由独立的队列管理结构QUEUE_MNGT2维护;
队列管理结构QUEUE_MNGT1和QUEUE_MNGT2分别指向循环消息队列通道MSG_QUEUE1和MSG_QUEUE2,并负责管理各自对应的队列MSG_QUEUE。
后续提及的队列管理结构QUEUE_MNGT代表一个整体,也包含其指向的循环消息队列通道MSG_QUEUE。
进一步地,两个循环消息队列通道中,其中一个为用于CPU0生产消息、CPU1提取消息的队列通道,另一个为用于CPU1生产消息、CPU0提取消息的队列通道。
进一步地,每个消息由唯一的标识码MSG_ID和消息体MSG_BODY组成。
进一步地,每个CPU核能够读写自己维护的变量,只能读其他CPU核维护的变量。
进一步地,两个循环消息队列通道的深度M和N均为2^n,其中,n为正整数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于青岛方寸微电子科技有限公司,未经青岛方寸微电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811459340.5/2.html,转载请声明来源钻瓜专利网。