一种多核通信方法和装置制造方法及图纸

技术编号:28202822 阅读:22 留言:0更新日期:2021-04-24 14:25
本申请公开了一种多核通信方法和装置,其中方法包括:当任意两个处理核之间需要传输消息时,作为消息发送方的第一处理核,根据空闲消息指针队列,从消息数据区中获取空闲消息数据空间;其中,所述空闲消息指针队列的空闲消息区存储了所述消息数据区中所有空闲消息数据空间的起始地址;第一处理核将所述消息写入所获取的空闲消息数据空间,并将消息所占用数据空间的位置信息写入作为消息接收方的第二处理核的消息队列中;第二处理核在需要接收消息时,从第二处理核的消息队列中,获取待接收消息所占用数据空间的位置信息,根据该位置信息读取所述待接收消息并释放相应空间。应用本申请公开的技术方案,能够有效提高存储空间的使用率,且易于实现。且易于实现。且易于实现。

【技术实现步骤摘要】
一种多核通信方法和装置


[0001]本申请涉及嵌入式系统
,特别涉及一种多核通信方法和装置。

技术介绍

[0002]目前,为了降低处理器的体积与功耗,多核技术得到了广泛的应用,尤其是在航天、通信、医疗、机械等领域。多核处理器也称为片上多处理器(chip multi-processor,CMP),或单芯片多处理器。多核处理器将多个完全功能的处理核集成在同一个芯片内,整个芯片作为一个统一的结构对外提供服务,输出性能。
[0003]共享内存,顾名思义就是允许多个处理核访问同一段物理内存,共享内存是多核之间共享和传递数据的一种非常有效的方式。专利技术人在实现本专利技术的过程中发现:现有的基于共享内存进行核间数据通信的方案存在内存使用率低、实现复杂的问题。具体原因分析如下:
[0004]在现有多核通信方案中,需要为每个核分别配置一个足够大的共享内存,该共享内存用于接收其他处理核向其发送的数据,是由地址连续的存储空间组成。每个处理核的共享内存大小是根据该处理核最大的数据通信需求量设置的。而在实际使用中,每个处理核的实际数据通信量并不能达到最大数据通信需求量,这样就会造成内存的浪费。并且,现有的多处理核通信方案中,如果处理核间通信需要的数据量发生改变,则需要根据改变后的通信数据量需求对共享内存进行重新规划,这样,重新规划后各处理核上对应的软件参数也需要相应的修改,从而造成现有多处理核通信方案对共享内存的管理很复杂。

技术实现思路

[0005]本申请提供了一种多核通信方法和装置,能够有效提高存储空间的使用率,且易于实现。
[0006]本专利技术实施例提供了一种多核通信方法,包括:
[0007]当任意两个处理核之间需要传输消息时,作为消息发送方的第一处理核,根据当前的空闲消息指针队列,采用互斥访问所述空闲消息指针队列的方式,为所述消息从消息数据区中获取相应的空闲消息数据空间;其中,所述空闲消息数据空间占用连续的存储空间,所述空闲消息指针队列的空闲消息区存储了所述消息数据区中所有空闲消息数据空间的起始地址;
[0008]所述第一处理核将所述消息写入所获取的空闲消息数据空间,并将所述消息所占用数据空间的位置信息写入作为消息接收方的第二处理核的消息队列中;
[0009]所述第二处理核在需要接收消息时,从所述第二处理核的消息队列中,获取待接收消息所占用数据空间的位置信息,根据该位置信息,从所述消息数据区中读取所述待接收消息并释放相应的数据空间。
[0010]较佳地,所述空闲消息指针队列为非环形队列;所述消息队列为环形消息队列。
[0011]较佳地,所述第一处理核为所述消息从消息数据区中获取相应的空闲消息数据空
间包括:
[0012]所述第一处理核从所述空闲消息指针队列中获取互斥锁;其中,所述空闲消息指针队列具有头结构和空闲消息区,所述头结构包括所述互斥锁和空闲消息指针索引,所述空闲消息指针索引指向所述空闲消息区中保存的首个空闲消息数据空间的起始地址;
[0013]当所述互斥锁获取成功时,所述第一处理核从所述空闲消息指针队列的头结构中获取空闲消息指针索引,如果所述空闲消息指针索引小于所述空闲消息指针队列的最大长度,则获取所述空闲消息指针索引指示的空闲消息数据空间的起始地址,将所述空闲消息指针索引增加一;否则,判定当前没有可用的空闲消息数据空间;
[0014]所述第一处理核释放所述互斥锁。
[0015]较佳地,所述将所述消息写入所获取的空闲消息数据空间,并将所述消息所占用数据空间的位置信息写入作为消息接收方的第二处理核的消息队列中包括:
[0016]所述第一处理核将所述消息写入到所获取的空闲消息数据空间中;
[0017]所述第一处理核根据所述第二处理核的消息队列的头结构中的读索引值和写索引值,判断所述第二处理核的消息队列是否已满,如果已满,则触发释放所获取的空闲消息数据空间;如果未满,则将所述消息所占用数据空间的位置信息写入所述第二处理核的消息队列中;所述位置信息包括:数据空间的起始地址和消息长度;按照W=(W+1)%M0,更新所述第二处理核的消息队列的头结构中的写索引W,其中,M0为预设的所述第二处理核的消息队列的最大消息数量。
[0018]较佳地,所述触发释放所获取的空闲消息数据空间包括:
[0019]所述第一处理核从所述空闲消息指针队列中获取互斥锁;
[0020]当所述互斥锁获取成功时,所述第一处理核从所述空闲消息指针队列的头结构中获取空闲消息指针索引,如果所述空闲消息指针索引大于零,则将所述空闲消息指针索引减一;
[0021]所述第一处理核将所获取的空闲消息数据空间的起始地址,写入所述空闲消息指针队列中所述空闲消息指针索引所指示的位置;
[0022]所述第一处理核释放所述互斥锁。
[0023]较佳地,所述从所述第二处理核的消息队列中,获取待接收消息所占用数据空间的位置信息包括:
[0024]当所述第二处理核从所述第二处理核的消息队列中获取头结构中的读索引和写索引,判断出当前有未读取的消息时,从所述第二处理核的消息队列中获取读索引指示的位置信息;按照R=(R+1)%M0,更新所述第二处理核的消息队列的头结构中的读索引R。
[0025]较佳地,所述第二处理核在读取完所述待接收消息后释放相应的数据空间包括:
[0026]所述第二处理核从所述空闲消息指针队列中获取所述互斥锁;
[0027]当所述互斥锁获取成功时,所述第二处理核从所述空闲消息指针队列的头结构中获取空闲消息指针索引,如果所述空闲消息指针索引大于零,则将所述空闲消息指针索引减一;
[0028]将所述待接收消息所占用数据空间的位置信息所指示的起始地址,写入所述空闲消息指针队列中所述空闲消息指针索引所指示的位置;
[0029]所述第二处理核释放所述互斥锁。
[0030]本专利技术实施例还提供了一种多核通信装置,包括:至少两个处理核;
[0031]所述处理核,用于在向任意其他处理核发送消息时,根据当前的空闲消息指针队列,采用互斥访问所述空闲消息指针队列的方式,为所述消息从消息数据区中获取相应的空闲消息数据空间;其中,所述空闲消息数据空间占用连续的存储空间,所述空闲消息指针队列的空闲消息区存储了所述消息数据区中所有空闲消息数据空间的起始地址;将所述消息写入所获取的空闲消息数据空间,并将所述消息所占用数据空间的位置信息写入作为消息接收方的处理核的消息队列中;在需要接收消息时,从本处理核的消息队列中,获取待接收消息所占用数据空间的位置信息,根据该位置信息,从所述消息数据区中读取所述待接收消息并释放相应的数据空间。
[0032]较佳地,所述空闲消息指针队列为非环形队列;所述消息队列为环形消息队列。
[0033]较佳地,所述处理核用于为所述消息从消息数据区中获取相应的空闲消息数据空间,具体包括:
[0034]从所述空闲消息指针队列中获取互斥锁;其中,所述空闲消息指针队列具有头本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多核通信方法,其特征在于,包括:当任意两个处理核之间需要传输消息时,作为消息发送方的第一处理核,根据当前的空闲消息指针队列,采用互斥访问所述空闲消息指针队列的方式,为所述消息从消息数据区中获取相应的空闲消息数据空间;其中,所述空闲消息数据空间占用连续的存储空间,所述空闲消息指针队列的空闲消息区存储了所述消息数据区中所有空闲消息数据空间的起始地址;所述第一处理核将所述消息写入所获取的空闲消息数据空间,并将所述消息所占用数据空间的位置信息写入作为消息接收方的第二处理核的消息队列中;所述第二处理核在需要接收消息时,从所述第二处理核的消息队列中,获取待接收消息所占用数据空间的位置信息,根据该位置信息,从所述消息数据区中读取所述待接收消息并释放相应的数据空间。2.如权利要求1所述的方法,其特征在于:所述空闲消息指针队列为非环形队列;所述消息队列为环形消息队列。3.如权利要求2所述的方法,其特征在于:所述第一处理核为所述消息从消息数据区中获取相应的空闲消息数据空间包括:所述第一处理核从所述空闲消息指针队列中获取互斥锁;其中,所述空闲消息指针队列具有头结构和空闲消息区,所述头结构包括所述互斥锁和空闲消息指针索引,所述空闲消息指针索引指向当前所述空闲消息区中保存的首个空闲消息数据空间的起始地址;当所述互斥锁获取成功时,所述第一处理核从所述空闲消息指针队列的头结构中获取空闲消息指针索引,如果所述空闲消息指针索引小于所述空闲消息指针队列的最大长度,则获取所述空闲消息指针索引指示的空闲消息数据空间的起始地址,将所述空闲消息指针索引增加一;否则,判定当前没有可用的空闲消息数据空间;所述第一处理核释放所述互斥锁。4.如权利要求3所述的方法,其特征在于:所述将所述消息写入所获取的空闲消息数据空间,并将所述消息所占用数据空间的位置信息写入作为消息接收方的第二处理核的消息队列中包括:所述第一处理核将所述消息写入到所获取的空闲消息数据空间中;所述第一处理核根据所述第二处理核的消息队列的头结构中的读索引值和写索引值,判断所述第二处理核的消息队列是否已满,如果已满,则触发释放所获取的空闲消息数据空间;如果未满,则将所述消息所占用数据空间的位置信息写入所述第二处理核的消息队列中;所述位置信息包括:数据空间的起始地址和消息长度;按照W=(W+1)%M0,更新所述第二处理核的消息队列的头结构中的写索引W,其中,M0为预设的所述第二处理核的消息队列的最大消息数量。5.如权利要求4所述的方法,其特征在于:所述触发释放所获取的空闲消息数据空间包括:所述第一处理核从所述空闲消息指针队列中获取互斥锁;当所述互斥锁获取成功时,所述第一处理核从所述空闲消息指针队列的头结构中获取空闲消息指针索引,如果所述空闲消息指针索引大于零,则将所述空闲消息指针索引减一;所述第一处理核将所获取的空闲消息数据空间的起始地址,写入所述空闲消息指针队
列中所述空闲消息指针索引所指示的位置;所述第一处理核释放所述互斥锁。6.如权利要求4所述的方法,其特征在于:所述从所述第二处理核的消息队列中,获取待接收消息所占用数据空间的位置信息包括:当所述第二处理核从所述第二处理核的消息队列中获取头结构中的读索引和写索引,判断出当前有未读取的消息时,从所述第二处理核的消息队列中获取读索引指示的位置信息;按照R=(R+1)%M0,更新所述第二处理核的消息队列的头结构中的读索引R。7.如权利要求6所述的方法,其特征在于:所述第二处理核在读取完所述待接收消息后释放相应的数据空间包括:所述第二处理核从所述空闲消息指针队列中获取所述互斥锁;当所述互斥锁获取成功时,所述第二处理核从所述空闲消息指针队列的头结构中获取空闲消息指针索引,如果所述空闲消息指针索引大于零,则将所述空闲消息指针索引减一;将所述待接收消息所占用数据空间的位置信息所指示的起始地址,写入所述空闲消息指针队列中所述空闲消息指针索引所指示的位置;所述第二处理核释放所述互斥锁。8.一种多核通信装置,其特征在于,包括:至少两个处理核;所述处理核,用于在向任意其他处理核发送消息时,根据当前的空闲消息指针队列,...

【专利技术属性】
技术研发人员:赵彩云
申请(专利权)人:普天信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1