掌桥专利:专业的专利平台
掌桥专利
首页

一种基于国产DSP的多节点任意核间全域通信方法

文献发布时间:2023-06-19 19:35:22


一种基于国产DSP的多节点任意核间全域通信方法

技术领域

本发明涉及一种全域通信方法,具体为一种基于国产DSP的多节点任意核间全域通信方法,属于计算机通信技术领域。

背景技术

在信号处理领域,随着信息技术的发展和信号采集精度的不断提高,信息复杂度也在不断的提高,人们对信号处理设备的算力需求也随之增加。

然而,由于当下芯片制程工艺已经接近理论极限,单核性能的增长变得缓慢,尽管此时提高单核处理器的主频可以带来性能方面的提升,但是所带来功耗上的增加往往得不偿失。单核处理器设备已经不再能满足人们在信号处理场景对的算力和功耗的需求,由多核多处理器组成的大规模集成信号处理设备成为当下信号处理领域研究的热门。

此外,在多核多处理器带来算力提升的同时,如何进行高效的核间数据通信成为了提升信号处理效率的重点和难点。现有技术中的核间通信方案大多是多核处理器基于共享内存的片内核间通信,该方案仅能满足多核处理器内部核与核之间进行数据通信,对于由多核多处理器组成的大规模集成信号处理设备进行全域处理器节点间核到核数据通信,暂时不存在一种有效的解决方案。

发明内容

本发明的目的就在于为了解决上述至少一个技术问题而提供一种基于国产DSP的多节点任意核间全域通信方法。

本发明通过以下技术方案来实现上述目的:一种基于国产DSP的多节点任意核间全域通信方法,包括集成信号处理设备,所述集成信号处理设备包括多个DSP处理器组成信号处理模块;各个所述DSP处理器相互之间通过SRIO交换机互连组成网络互通的交换系统,实现数据交互,每个所述DSP处理器由八个核心(Core)组成,八个核心共享2G的DDR RAM存储器,八个核心相互之间通过IPC中断进行通信;

多节点任意核间全域通信方法包括以下步骤:

S1)在多核DSP处理器的每个核心都划分专属内存空间组成循环消息队列用于缓存接收数据;

S2)在DSP处理器主核中安装通信代理模块,该模块处理来自本处理器节点外的其他核的请求和路由。

作为本发明再进一步的方案:循环消息队列由专属内存空间上32个大小相同的内存块组成,且循环消息队列由映射表进行维护管理,映射表为32bit位图,每个bit代表循环消息队列中的一个内存块,bit位置1表示对应内存块已用。

作为本发明再进一步的方案:通信代理模块实现跨处理器核间通信时交互信息的处理和路由,且通信代理模块在doorbell门铃中断服务函数的实现,doorbell门铃能够被全域内任意核心发起并携带16bit门铃信息。

作为本发明再进一步的方案:当进行跨DSP处理器节点通信时,源核向目标核所在DSP处理器发送携带16bit门铃信息的doorbell中断,16bit门铃信息包含交互指令和源核目标核核号,目标核所在DSP处理器的通信代理模块根据指令和目标核核号完成相应动作,并在必要时,根据门铃信息中源核核号将结果反馈至源核。

作为本发明再进一步的方案:交互指令分为“查询”和“数据送达”。

作为本发明再进一步的方案:“查询”指令由源核向目标核所在处理器通信代理模块发送,表示通信代理模块需要根据门铃信息中携带的目标核核号访问目标核循环消息队列映射表,获取目标核循环消息队列首个空闲块地址,并将空闲块地址通过SRIO NWRITE事务包反馈至所述源核。

作为本发明再进一步的方案:“数据送达”指令由源核向目标核所在处理器通信代理模块发送,表示此时源核已经完成数据的发送,数据已经存在于目标核的循环消息队列中,通信代理模块需要将此消息“路由”至目标核,通信代理模块根据门铃信息中携带的目标核核号向所述目标核发送IPC中断。

本发明的有益效果是:

一方面,对于全域处理器节点间核到核数据通信,方法采用先将消息发送至目标处理器通信代理模块,再由目标处理器通信代理模块处理消息或路由至目标核,从而达到了对全域核间的消息互通;

另一方面,目标核采用循环队列的方式接收来自域内各核的数据,相对于单一共享内存的核间通信方式,该方法有效降低了通信过程中由于网络拥塞导致的传输延时,大大提高了高吞吐量、高并发场景下核间通信数据的传输效率。

附图说明

图1为本发明信号处理模块结构图;

图2为本发明核间通信方式图;

图3为本发明处理器内核到核通信序列图;

图4为本发明处理器间核到核通信序列图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

如图1至图4所示,一种基于国产DSP的多节点任意核间全域通信方法,包括集成信号处理设备,集成信号处理设备包括多个DSP处理器组成信号处理模块,多个DSP处理器相互之间通过SRIO交换机互连组成网络互通的交换系统,各所述DSP处理器之间通过SRIO实现数据交互,每个DSP处理器由八个核心(Core)组成,八个核心共享2G的DDR RAM存储器,DSP处理器的核心间通过IPC中断进行通信;

多节点任意核间全域通信方法包括以下步骤:

S1)在多核DSP处理器的每个核心都划分专属内存空间组成循环消息队列用于缓存接收数据;

S2)在DSP处理器主核中安装通信代理模块,该模块处理来自本处理器节点外的其他核的请求和路由。

在本发明实施例中,循环消息队列由专属内存空间上32个大小相同的内存块组成,且循环消息队列由映射表进行维护管理,映射表为32bit位图,每个bit代表循环消息队列中的一个内存块,bit位置1表示对应内存块已用。

在本发明实施例中,通信代理模块实现跨处理器核间通信时交互信息的处理和路由,且通信代理模块在doorbell门铃中断服务函数的实现,doorbell门铃能够被全域内任意核心发起并携带16bit门铃信息。

在本发明实施例中,当进行跨DSP处理器节点通信时,源核向目标核所在DSP处理器发送携带16bit门铃信息的doorbell中断,16bit门铃信息包含交互指令和源核目标核核号,目标核所在DSP处理器的通信代理模块根据指令和目标核核号完成相应动作,并在必要时,根据门铃信息中源核核号将结果反馈至源核。

在本发明实施例中,交互指令分为“查询”和“数据送达”。

在本发明实施例中,“查询”指令由源核向目标核所在处理器通信代理模块发送,表示通信代理模块需要根据门铃信息中携带的目标核核号访问目标核循环消息队列映射表,获取目标核循环消息队列首个空闲块地址,并将空闲块地址通过SRIO NWRITE事务包反馈至所述源核。

在本发明实施例中,“数据送达”指令由源核向目标核所在处理器通信代理模块发送,表示此时源核已经完成数据的发送,数据已经存在于目标核的循环消息队列中,通信代理模块需要将此消息“路由”至目标核,通信代理模块根据门铃信息中携带的目标核核号向所述目标核发送IPC中断。

实施例二

如图2所示,一种基于国产DSP的多节点任意核间全域通信方法,还包括:在信号处理模块全域核与核之间通信存在两种场景,一种是源核与目标核处于同一处理器内部,其共享同一内存空间;另一种是源核与目标核分别处于不同处理器,其可通过SRIO进行数据交互。

针对以上两种场景,核到核的数据交互方式有所不同。对于第一种场景,源核与目标核处于同一处理器,可以通过共享内存+核间IPC中断的方式直接进行数据的交互;而第二种场景,源核与目标核无法进行直接通信,对此我们将处理器内设计为主从核的结构,并在每个处理器主核上实现一个通信代理模块,用于对来自其他处理器交互信息的代理和转发。源核通过与目标核所在处理器的通信代理模块进行交互,达到向目标核进行数据传输的目的。在本次实施中,默认处理器0核为主核,且通信代理模块在SRIO的doorbell门铃中断服务函数中实现。doorbell门铃中断安装于各个处理器主核,每次doorbell门铃可以携带16bit的信息。源核与通信代理模块的交互实际为源核向目标核所在处理器主核发送携带16bit信息的doorbell门铃中断,通信代理模块解析该16bit信息执行查询、路由等指令,并将结果反馈至源核。虽然上述跨处理器核间通信方法在通信模型设计上仍然采用主从核的模式,但是对于用户层面,上述主从通信结构是不可感知的,即在用户视角,其各处理器核与核之间呈去中心化的网状分布结构,任意核与核之间互通,且不存在差异。

对于以上所述的两种场景,源核数据发送流程根据目标核所在位置不同而存在差异,但是对于目标核数据接收流程,两种场景完全一致。

实施例三

如图3所示,一种基于国产DSP的多节点任意核间全域通信方法,对于源核与目标核处于同一处理器,源核与目标核可以直接通过共享内存进行数据交互,不需要通过通信代理模块对交互信息进行路由转发,对于源核发送数据,其发送流程具体包括:

源核直接通过共享内存访问目标核消息队列映射表,获取当前目标核消息队列使用情况,根据使用情况计算目标核当前空闲队列头部空闲块在内存中的地址,并在映射表中锁定该空闲块,表示当前空闲块已被使用。锁定该空闲块后,源核将用户数据通过EDMA搬移至该空闲块地址。数据搬移完成后,源核通过向目标核发送IPC中断通知其进行数据读取。至此,完成一次数据“发送”。

实施例四

如图4所示,一种基于国产DSP的多节点任意核间全域通信方法,对于源核与目标核处于不同处理器的场景,源核无法与目标核进行直接通信,所以源核无法获取目标核消息队列使用情况。此时通过与目标处理器的通信代理模块进行交互,达到间接与目标核进行通信的效果,对于源核发送数据,其发送流程具体包括:

源核向目标核所在处理器的通信代理模块发送“查询”指令,指令携带源核与目标核核号信息。通信代理模块根据信息中的目标核核号,通过共享内存访问目标核消息队列映射表,获取当前目标核消息队列使用情况,根据使用情况得到目标核当前空闲队列头部空闲块,并在映射表中锁定该空闲块,表示当前空闲块已被使用。锁定该空闲块后,通信代理模块通过SRIO的NWRITE事务包将已锁定的目标核空闲块信息发送至源核。源核解析空闲块信息,获取目标核空闲块在其DDR RAM存储器中的地址,随后通过SRIO的NWRITE事务包向该地址发送用户数据。数据发送完毕后,源核向目标核所在处理器的通信代理模块发送“数据发送完毕”的指令。通信代理模块根据该指令向目标核发送IPC中断通知其进行数据读取。至此,完成一次数据“发送”。

实施例五

本实施例中除包括实施例三和实施例四中的所有技术特征之外,不管源核与目标核是否处于同一处理器,对于目标核,在数据接收流程上不存在差异,仅仅只是响应的IPC中断来源不同。前者IPC中断直接来自于源核,后者IPC中断来自于本处理器通信代理模块,对于目标核接收数据,其发送流程具体包括:

目标核在未收到来自源核或者通信代理模块的IPC中断前,数据接收接口阻塞在将由IPC中断服务函数释放的信号量。当目标核接收到来自源核或者通信代理模块的IPC中断,表示此时数据已经到达本核消息队列。IPC中断服务函数执行并释放信号量解除接收数据接口阻塞。数据接收接口查询消息队列映射表,获取当前数据所在内存块,并将内存块中数据通过EDMA搬移至用户接收数据地址,然后在映射表中解锁该内存块,向消息队列释放内存块,至此,完成一次数据“接收”。

工作原理:先将消息发送至目标处理器通信代理模块,再由目标处理器通信代理模块处理消息或路由至目标核,从而达到了对全域核间的消息互通。另一方面,目标核采用循环队列的方式接收来自域内各核的数据。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

相关技术
  • 一种核间通信方法、ARM、DSP及终端
  • 一种多核DSP处理芯片核间通信系统及其方法
技术分类

06120115967943