面向多核DSP的服务组件通信架构及任务调度、数据交互方法与流程

    专利2022-07-07  148


    本发明属于通信框架技术领域,特别涉及一种面向多核dsp的服务组件通信架构及基于该服务组件通信框架实现的任务调度和组件数据交互方法。



    背景技术:

    随着无线通信技术的不断发展,用于无线通信的收发设备也需要快速更新,传统的由asic芯片构成的收发机存在迭代周期长、升级费用高的问题,因此业界提出了软件无线电(sdr)设计方案,sdr以软件为核心,将无线通信过程中的部分处理流程制作为软件模块,通过软件模块的替换来实现系统功能的快速更改,极大地增强了无线通信设备的灵活性,降低了设备升级的花费。服务组件框架sca是实现sdr的唯一标准,该标准统一了软件和硬件的抽象方法,旨在为软件无线电组件提供一个统一的开发和使用平台,在降低应用开发复杂度的同时,增加应用的可移植性。由于sdr采用了一种模块逻辑互联,物理连接无关的设计方法,因此为了能够满足无线通信信号的实时处理需求,必须保证设备拥有足够的信号处理能力,此外模块之间必须使用高带宽、高速率、低延时的通路进行数据传输。

    异构计算平台是由多种不同硬件架构的处理器组成的硬件平台,非常适合在有限空间内最大化硬件计算资源,dsp凭借其强大的信号处理能力和并行处理能力成为异构计算平台中不可或缺的一部分。但是其多核架构的复杂性和嵌入式操作系统对多核性能的支持不足,使其在sca框架中集成会损失较多性能。



    技术实现要素:

    为此,本发明提供一种面向多核dsp的服务组件通信架构及基于该服务组件通信框架实现的任务调度和组件数据交互方法,通过将操作环境与服务组件框架sca分离,将多核dsp处理器核心抽象为类操作系统对象,以增加系统的资源使用率,提升系统性能。

    按照本发明所提供的设计方案,提供一种面向多核dsp的服务组件通信架构,用于异构硬件平台中任务调度和消息传递,采用操作环境与服务组件框架相分离式的架构结构,该分离式的架构结构内容如下:用于服务各功能应用组件的操作环境由服务组件框架中分离,并作为独立任务部署至dsp主控核,各功能组件作为独立任务分配至dsp其他辅核;将各处理器核心抽象为类线程对象,向服务组件框架提供线程式操作方案。

    作为本发明面向多核dsp的服务组件通信架构,进一步的,主控核具有对外部i/o总线的唯一访问权,统一管理所有与外部环境的数据i/o,各核心之间通过共享内存区域和ipc进行核间通信。

    作为本发明面向多核dsp的服务组件通信架构,进一步地,将多核dsp处理器每个核心抽象为与操作环境任务相映射的类任务对象,通过抽象化的类任务对象向服务组件框架提供与操作环境照应的操作接口和交互逻辑。

    作为本发明面向多核dsp的服务组件通信架构,进一步地,将每个辅核抽象为一个任务,通过事件机制来控制任务执行;利用dsp内部多核导航器处理核间任务通信;针对批量数据通过地址描述符进行任务间数据传输。

    进一步地,基于上述的服务组件通信架构,本发明还提供一种基于事件触发的任务调度方法,将每个辅核抽象为一个任务,通过事件机制来控制任务执行。

    作为本发明基于事件触发的任务调度方法,进一步地,利用dsp内部多核导航器处理核间任务通信;针对批量数据通过地址描述符进行任务间数据传输。

    作为本发明基于事件触发的任务调度方法,进一步地,多核导航器进行事件传递中,各核通过检测其中断标志位,若监测到中断发生且有新描述符被压入队列管理器队列内,则取出描述符并执行操作。

    作为本发明基于事件触发的任务调度方法,进一步地,针对批量数据交互,首先发送核心通过消息队列机制将与消息发送缓冲地址相关的描述符通知接收核心;然后接收核心根据缓冲地址从内存位置访问数据。

    进一步地,基于上述的服务组件通信架构,本发明还提供一种组件数据交互方法,包含如下内容:

    接收过程,将接收到的数据放到主控核接收缓冲中;主控核运行的操作环境对数据进行解析并获取数据的目的接收核;主控核通过多核导航器向接收核消息队列内部放入与数据地址及长度相关的描述符地址,并向接收核提交中断;接收核接收到终端后,根据描述符地址获取数据存放位置及长度信息,并对数据进行处理;接收核处理完毕后,在主控核消息队列内压入处理完成及已处理数据块相关描述符信息;主控核根据相关描述符信息解析已处理的数据块并释放内存;

    发送过程,辅核将需要发送数据放入发送内存池中,并在主控核消息队列内放入与待发送数据块相关的描述符地址并向主控核提交中断;主控核根据描述符地址解析待发送数据的地址及长度,并调用edma将数据从相应接口发送,发送完毕后,主控核通过消息队列发送辅核数据发送完成及已完成数据块相关信息的描述符地址,并中断辅核;辅核根据描述符地址解析已处理的数据块信息,并释放内存。

    作为本发明组件数据交互方法,进一步地,所有与外部环境的数据交互均通过主控核来控制。

    本发明的有益效果:

    本发明将操作环境与sca分离,将其作为独立任务部署至dsp主控核,并通过将各个处理器核心抽象为类线程对象,向sca提供线程式操作,同时进而使用dsp内部的多核导航器的硬件队列机制来实现消息队列功能,处理核间任务的通信,特别地,针对大批量数据通信,使用传输地址的方式实现零拷贝数据传输,最大发挥各核核心性能,极大提升系统整体性能,提升硬件资源利用率,具有较好的应用前景。

    附图说明:

    图1为实施例中sca通信架构总体部署示意;

    图2为实施例中核操作与任务操作映射示意;

    图3为实施例中事件传输流程示意;

    图4为实施例中消息队列映射示意;

    图5为实施例中任务间数据传输操作流程示意;

    图6为实施例中组件数据交互示意。

    具体实施方式:

    为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。

    传统的面向多核dsp的sca通信框架需要借助于嵌入式实时微内核操作系统,通过内核提供的服务实现本地任务调度和任务间的消息传递,但是这种方法在对实时性和处理速度有较高要求的场景下存在两个弊端:1)通过操作系统访问内存时,会引入额外的开销,任务之间的消息传递也存在数据复制操作,增加了操作冗余。2)频繁地进行任务上下文的切换会引入较大的处理器开销,导致任务的实时性和任务处理速度下降。

    针对于sca通信框架在多核dsp上部署存在的问题,本发明实施例,提供一种面向多核dsp的服务组件通信架构,用于异构硬件平台中任务调度和消息传递,采用操作环境与服务组件框架相分离式的架构结构,该分离式的架构结构内容如下:用于服务各功能应用组件的操作环境由服务组件框架中分离,并作为独立任务部署至dsp主控核,各功能组件作为独立任务分配至dsp其他辅核;将各处理器核心抽象为类线程对象,向服务组件框架提供线程式操作方案。

    参见图1所示,操作环境(operatingenvironment,oe)是sca的核心,除了为组件提供统一的运行平台,还负责管理、配置应用组件,并为组件之间的互联通信提供支持。在本案实施例的方案中,将oe从sca中分离出来,作为一个独立的任务部署到dsp的0核;将各个功能组件作为独立任务分配到其它核心上。0核作为主控核,所有与外部环境的数据i/o,可均由该核统一管理,即0核具有对外部i/o总线的唯一访问权,避免了多核之间的总线竞争。处理器内部各个核心之间通过共享内存区域和ipc实现核间通信。这种分离式的设计,可以最大地发挥各个核心的性能,提升系统响应速度。

    sca必须基于操作系统提供的任务相关服务来实现对组件的管理和调度,在无操作系统的环境下,为了不影响sca功能的完整性,可通过抽象化的方法向其提供与操作系统任务相似的操作接口和交互逻辑。

    在操作系统中,任务的切换是任务的核心操作,在切换过程中,首先处理器会保存当前任务的状态,将运行原始任务时的寄存器组的值压入原始任务的专属栈中,之后,从下一任务的专属栈中弹出保存的寄存器数据,并恢复寄存器状态,cpu开始执行新任务。在多核dsp处理器中,每个核心都拥有独立的寄存器组,也拥有专属的内存空间。为了简化设计复杂度,减少上下文切换的次数,本案实施例方案中,可将每个核心抽象为类任务对象,其支持的操作方法包括启动核心、复位核心、等待启动响应信号,与操作系统中任务的操作方法相照应,映射关系可如图2所示。

    进一步地,基于上述的服务组件通信架构,本发明实施例还提供一种基于事件触发的任务调度方法,将每个辅核抽象为一个任务,通过事件机制来控制任务执行。

    在绝大多数的操作系统中,使用基于时间的调度方法,该方法能够为任务的执行提供确定性延迟,非常适合周期性任务和对可靠性要求较高的场景。但是在突发数据传输和实时性要求很强的场景中,如果一个时间片内,任务不能将数据处理完毕,将会因为时间片用尽产生任务切换,引入额外的延迟,降低系统的实时性。本案实施例中,将每个辅核抽象为一个任务,即在运行过程可以将其视为一个单线循环过程,通过事件机制来控制任务的执行。

    使用dsp的多核导航器实现事件的传递,当没有可处理的数据时,处于等待状态,并且监测本核的中断标志位,若监测到发生中断,且中断产生的原因是有新的描述符被压入本核的队列管理器所管理的队列内,则取出描述符,并执行相关操作,具体流程如图3所示。总地来说,本案实施例中任务调度方法较为简单,任务的执行仅与是否有其感兴趣的事件产生,有则立刻执行,无则挂起。以上过程与操作系统消息队列的处理流程非常相似,因此可以将两者之间进行映射,进一步完善类操作系统的功能,映射关系如图5所示。

    对于大块数据的传输,操作系统常采用的数据传输方式主要有消息队列、共享内存(大部分微内核不支持)。基于消息队列的传输方式存在大量的数据复制操作,浪费了大量的处理器资源,因此,结合上文提到的类消息队列方案,参见图6所示,当核载任务之间存在大批量数据交互时,首先发送核心通过消息队列机制将与数据发送缓冲地址相关的描述符通知到接收核心,之后接收核心根据发送缓冲地址直接从对应内存位置访问数据,该方法减少了数据的拷贝次数,提升了系统的处理性能。

    进一步地,基于上述的服务组件通信架构,本发明实施例还提供一种组件数据交互方法,包含如下内容:

    接收过程,将接收到的数据放到主控核接收缓冲中;主控核运行的操作环境对数据进行解析并获取数据的目的接收核;主控核通过多核导航器向接收核消息队列内部放入与数据地址及长度相关的描述符地址,并向接收核提交中断;接收核接收到终端后,根据描述符地址获取数据存放位置及长度信息,并对数据进行处理;接收核处理完毕后,在主控核消息队列内压入处理完成及已处理数据块相关描述符信息;主控核根据相关描述符信息解析已处理的数据块并释放内存;

    发送过程,辅核将需要发送数据放入发送内存池中,并在主控核消息队列内放入与待发送数据块相关的描述符地址并向主控核提交中断;主控核根据描述符地址解析待发送数据的地址及长度,并调用edma将数据从相应接口发送,发送完毕后,主控核通过消息队列发送辅核数据发送完成及已完成数据块相关信息的描述符地址,并中断辅核;辅核根据描述符地址解析已处理的数据块信息,并释放内存。

    参见图6所示,具有4个核心的dsp作为示例,所有与外部环境的数据交互均通过0核来控制。内外数据交互操作基本相同,下面以外部数据交互为例,进行说明:

    一)接收:1)、底层驱动接收到数据后,将数据放到0核的接收缓冲rxmem_pool中;2)、0核运行的oe负责对数据进行解析,获取该数据的目的核;3)、0核通过多核导航器,向接收核的消息队列内部放入与数据地址和长度相关的描述符地址,并向接收核提交中断;4)、接收核接收到中断后,根据描述符地址获取数据存放位置及长度信息,并对数据进行处理;5)、接收核将本次提交的数据处理完毕后,在0核的消息队列内部压入处理完成和已处理数据块相关的描述符信息;6)、0核根据描述符信息,解析出已处理的数据块信息,并释放内存。

    二)发送:1)、当辅核需要发送数据到外部时,将数据放入该核的发送内存池中txmem_pool;2)、辅核在0核的消息队列内部放入与待发送数据块相关的描述符地址,并中断0核;3)、0核根据描述符地址指向的描述符,解析出待发送数据的地址和长度,并调用edma将数据从相应接口发送出去;4)、数据发送完成后,0核通过消息队列发送辅核数据发送完成和已完成数据块相关信息的描述符地址,并产生辅核中断;5)、辅核根据描述符信息,解析出已处理的数据块信息,释放内存。

    本发明实施例中,基于无操作系统软件框架,能够充分发挥多核处理器架构特点,结合操作系统中基于任务的设计模式,将各个处理器核抽象为完全独立的类任务对象,在为sca提供类任务操作逻辑的同时,避免了传统操作系统中,任务上下文切换频繁导致系统实时性下降的问题。基于事件的调度,通过核心抽象方法,将每个处理器核抽象为一种能够始终占据cpu的特殊任务,针对该任务的特点,结合dsp的硬件队列单元,使用基于事件队列的方法来触发任务的执行,极大地提高了任务的响应速度,增加了系统的实时性。基于零拷贝数据传输,在核载任务之间需要进行大量数据交互时,结合优化的消息队列传输机制,将发生端的数据缓冲地址通过消息队列传递到接收端,接收端通过地址信息,直接访问相应内存位置,避免了数据的冗余拷贝,提高了任务间数据的访问速度。

    作为本发明组件数据交互方法,进一步地,所有与外部环境的数据交互均通过主控核来控制。

    除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。

    基于上述的方法或系统,本发明实施例还提供一种网络设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的系统或执行上述的方法。

    基于上述的系统,本发明实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现上述的系统。

    本发明实施例所提供的装置,其实现原理及产生的技术效果和前述系统实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述系统实施例中相应内容。

    所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述系统实施例中的对应过程,在此不再赘述。

    在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。

    应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

    附图中的流程图和框图显示了根据本发明的多个实施例的系统、系统和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

    所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述系统的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

    最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。


    技术特征:

    1.一种面向多核dsp的服务组件通信架构,用于异构硬件平台中任务调度和消息传递,其特征在于,采用操作环境与服务组件框架相分离式的架构结构,该分离式的架构结构内容如下:用于服务各功能应用组件的操作环境由服务组件框架中分离,并作为独立任务部署至dsp主控核,各功能组件作为独立任务分配至dsp其他辅核;将各处理器核心抽象为类线程对象,向服务组件框架提供线程式操作方案。

    2.根据权利要求1所述的面向多核dsp的服务组件通信架构,其特征在于,主控核具有对外部i/o总线的唯一访问权,统一管理所有与外部环境的数据i/o,各核心之间通过共享内存区域和ipc进行核间通信。

    3.根据权利要求1或2所述的面向多核dsp的服务组件通信架构,其特征在于,将多核dsp处理器每个核心抽象为与操作环境任务相映射的类任务对象,通过抽象化的类任务对象向服务组件框架提供与操作环境照应的操作接口和交互逻辑。

    4.根据权利要求1所述的面向多核dsp的服务组件通信架构,其特征在于,将每个辅核抽象为一个任务,通过事件机制来控制任务执行;利用dsp内部多核导航器处理核间任务通信;针对批量数据通过地址描述符进行任务间数据传输。

    5.一种基于事件触发的任务调度方法,其特征在于,基于权利要求1所述的服务组件通信架构实现,将每个辅核抽象为一个任务,通过事件机制来控制任务执行。

    6.根据权利要求5所述的基于事件触发的任务调度方法,其特征在于,利用dsp内部多核导航器处理核间任务通信;针对批量数据通过地址描述符进行任务间数据传输。

    7.根据权利要求6所述的基于事件触发的任务调度方法,其特征在于,多核导航器进行事件传递中,各核通过检测其中断标志位,若监测到中断发生且有新描述符被压入队列管理器队列内,则取出描述符并执行操作。

    8.根据权利要求6所述的基于事件触发的任务调度方法,其特征在于,针对批量数据交互,首先发送核心通过消息队列机制将与消息发送缓冲地址相关的描述符通知接收核心;然后接收核心根据缓冲地址从内存位置访问数据。

    9.一种组件数据交互方法,其特征在于,基于权利要求1所述的服务组件通信架构实现,包含如下内容:

    接收过程,将接收到的数据放到主控核接收缓冲中;主控核运行的操作环境对数据进行解析并获取数据的目的接收核;主控核通过多核导航器向接收核消息队列内部放入与数据地址及长度相关的描述符地址,并向接收核提交中断;接收核接收到终端后,根据描述符地址获取数据存放位置及长度信息,并对数据进行处理;接收核处理完毕后,在主控核消息队列内压入处理完成及已处理数据块相关描述符信息;主控核根据相关描述符信息解析已处理的数据块并释放内存;

    发送过程,辅核将需要发送数据放入发送内存池中,并在主控核消息队列内放入与待发送数据块相关的描述符地址并向主控核提交中断;主控核根据描述符地址解析待发送数据的地址及长度,并调用edma将数据从相应接口发送,发送完毕后,主控核通过消息队列发送辅核数据发送完成及已完成数据块相关信息的描述符地址,并中断辅核;辅核根据描述符地址解析已处理的数据块信息,并释放内存。

    10.根据权利要求9所述的组件数据交互方法,其特征在于,所有与外部环境的数据交互均通过主控核来控制。

    技术总结
    本发明属于通信框架技术领域,特别涉及一种面向多核DSP的服务组件通信架构及基于该服务组件通信框架实现的任务调度和组件数据交互方法,采用操作环境与服务组件框架相分离式的架构结构,该分离式的架构结构内容如下:用于服务各功能应用组件的操作环境由服务组件框架中分离,并作为独立任务部署至DSP主控核,各功能组件作为独立任务分配至DSP其他辅核;将各处理器核心抽象为类线程对象,向服务组件框架提供线程式操作方案。本发明通过将操作环境与服务组件框架SCA分离,将多核DSP处理器核心抽象为类操作系统对象,增加系统的资源使用率,极大提升系统整体性能。

    技术研发人员:胡泽明;代江涛;冀亚玮;高博;余果;徐志坚;董春宵;张锋印;周南
    受保护的技术使用者:中国人民解放军战略支援部队信息工程大学
    技术研发日:2020.11.17
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-9226.html

    最新回复(0)