本发明涉及通信数据处理技术,尤其涉及一种复杂soc的片上通信方法。
背景技术:
半导体制造工艺的快速发展使得芯片上可以集成更大规模的硬件资源,soc趋向于由多种类型的cpu、dsp和面向应用的硬件加速引擎的多核异构系统芯片,而对于多处理模块间的通信,现有的星形和总线形拓扑结构面对大量信号处理处理时会存在竞争和冲突问题,并且使得主处理器负荷过大,降低主处理器的任务处理能力,另外,现有的通信结构设计难度高,不利于扩展和开放,因此急需针对soc通信进行重新设计,使得从基于计算的设计转变为基于通信的设计,并实现可扩展的通信架构。面向异构系统通用的开放式、标准化、统一的调度和的通信架构具有广阔的发展前景。
技术实现要素:
本发明为了解决上述技术问题,提供了一种复杂soc的片上通信方法,包括以下步骤:
s1、当主处理器接收到待求解信号时,则将待求解信号的处理算法分解为多个opencl调用,发送到通信与数据管理池中;
s2、通信与数据管理池接收到多个opencl调用后,依次将多个opencl调用发送到通信环路上;
s3、通信环路将opencl调用单向传递到各个信号处理模块上;
s4、信号处理模块接收opencl调用并进行处理,当opencl调用处理好后,再发送到通信环路上;
s5、处理好的opencl调用随通信环路回到通信与数据管理池中。
进一步的,所述复杂soc的片上通信方法基于一种复杂soc的片上通信结构,所述复杂soc的片上通信结构包括主处理器、通信与数据管理池、单向闭合的通信环路和多个信号处理模块,所述通信与数据管理池和多个信号处理模块均挂载在通信环路上,所述主处理器与通信与数据管理池连接。
信号处理模块用于运行opencl的具体计算。
进一步的,所述步骤s2还包括:
存储opencl调用的调用队列。
进一步的,所述步骤s1之后还包括:
主处理器启动对通信与数据管理池的侦听,当侦听到通信与数据管理池中的调用队列为空时,则确认当前所有opencl调用执行完毕。
进一步的,所述opencl调用包括状态标签,所述状态标签包括未执行状态和已完成状态。
进一步的,在步骤s2中,所述依次将多个opencl调用发送到通信环路上之前还包括:
设置opencl调用的状态标签为未执行状态。
进一步的,在步骤s4中,所述的信号处理模块接收opencl调用并进行处理,当opencl调用处理好后,还包括:
将opencl调用的状态标签设置为已完成状态。
进一步的,所述信号处理模块包括空闲状态和调用状态,所述信号处理模块处理opencl调用时为调用状态,否则为空闲状态,所述通信与数据管理池和多个信号处理模块为通信环路上的节点;当信号处理模块处于空闲状态时,监控通信环路,当未执行状态的opencl调用经过时,截取该opencl调用的信息进行处理,并设置当前信号处理模块为调用状态,当信号处理模块处于调用状态时,将直接将通信环路上经过的opencl调用传递到下一个节点。
进一步的,通信与数据管理池读取通信环路返回的包含opencl调用的状态标签信息,并将此信息更新到调用队列中的对应opencl调用中。
进一步的,所述步骤s5之后还包括:
当通信与数据管理池中的调用队列为空时,则确认当前所有opencl调用执行完毕,通信与数据管理池汇总各个信号处理模块处理的结果,然后与主处理器进行通信。
本发明具有以下有益效果:
1、本发明提供的复杂soc的通信方法可实现芯片内多处理模块间通信,简化了通信的复杂度,基于通信和数据管理池的单向环状结构调度,可解决当存在大量信号处理模块时的通信管理,可以使得复杂soc内的处理模块在进行通信时能够保证传输效率,避免星形和总线形拓扑结构在芯片设计时候的难度。
2、本发明提供的复杂soc的通信方法通过基于通信与数据管理池将opencl调用依次通过信号处理模块的方法,可解决多个处理模块可完成同一个opencl调度时的竞争和冲突问题,简化了仲裁机制。
附图说明
图1是本发明具有5个信号处理模块的复杂soc的片上通信结构示意图;
图2是一个opencl调用在单向通信环路中被执行的流程图;
图3是一个opencl调用执行完成后在单向通信环路上的运行流程图。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征更易被本领域技术人员理解,从而对本发明的保护范围作出更为清楚的界定。
实施例1:
本实施例中的一种复杂soc的片上通信方法包括以下步骤:
s1、当主处理器接收到待求解信号时,则将将待求解信号的处理算法分解为多个opencl调用,发送到通信与数据管理池中;
s2、通信与数据管理池接收到多个opencl调用后,依次将多个opencl调用发送到通信环路上;
s3、通信环路将opencl调用单向传递到各个信号处理模块上;
s4、信号处理模块接收opencl调用并进行处理,当opencl调用处理好后,再发送到通信环路上;
s5、处理好的opencl调用随通信环路回到通信与数据管理池中。
实施时,主处理器将一项信号处理工作分解为多个opencl的调用,所有的调用被主处理器传送给通信与数据管理池存储的opencl调用队列,通信与数据管理池将opencl调用分发给信号处理模块,信号处理模块负责运行opencl的具体计算,信号处理模块可以由标准化的opencl接口调用。
本实施例主要目的在于为具有多个处理模块的多核异构处理芯片提供一种基于标准化的opencl调用封装,并调用处理模块进行处理的片上通信方法。复杂soc被设计为由一个主处理器、一个通信和数据管理池、一个单向闭合通信环路和多个信号处理模型组成。基于通信和数据管理池的单向环状结构调度,可解决当存在大量信号处理模块时的通信管理,可以使得复杂soc内的处理模块在进行通信时能够保证传输效率,避免星形和总线形拓扑结构在芯片设计时候的难度,基于通信与数据管理池和处理模块共同维护opencl调度的状态标签方法,可解决多个处理模块可完成同一个opencl调度时的竞争和冲突问题。
实施例2:
本实施例中的一种复杂soc的片上通信方法包括以下步骤:
sa1、当主处理器接收到待求解信号时,则将待求解信号的处理算法分解为多个opencl调用,发送到通信与数据管理池中;
sa2、主处理器启动对通信与数据管理池的侦听,当侦听到通信与数据管理池中的调用队列为空时,则确认当前所有opencl调用执行完毕;
sa3、通信与数据管理池接收到多个opencl调用后,存储opencl调用的调用队列,并设置opencl调用的状态标签为未执行状态,然后依次将多个opencl调用发送到通信环路上;opencl调用包括状态标签,所述状态标签包括未执行状态和已完成状态;
sa4、通信环路将opencl调用单向传递到各个信号处理模块上;
sa5信号处理模块接收opencl调用并进行处理,当opencl调用处理好后,将opencl调用的状态标签设置为已完成状态,再发送到通信环路上;
sa6、处理好的opencl调用随通信环路回到通信与数据管理池中,通信与数据管理池读取通信环路返回的包含opencl调用的状态标签信息,并将此信息更新到调用队列中的对应opencl调用中。
实施例3:
本实施例中的一种复杂soc的片上通信方法包括以下步骤:
sb1、当主处理器接收到待求解信号时,则将待求解信号的处理算法分解为多个opencl调用,发送到通信与数据管理池中;
sb2、通信与数据管理池接收到多个opencl调用后,存储opencl调用的调用队列,并设置opencl调用的状态标签为未执行状态,然后依次将多个opencl调用发送到通信环路上;opencl调用包括状态标签,所述状态标签包括未执行状态和已完成状态;
sb3、通信环路将opencl调用单向传递到各个信号处理模块上;
sb4、信号处理模块接收opencl调用并进行处理,当opencl调用处理好后,将opencl调用的状态标签设置为已完成状态,再发送到通信环路上;
sb5、处理好的opencl调用随通信环路回到通信与数据管理池中,通信与数据管理池读取通信环路返回的包含opencl调用的状态标签信息,并将此信息更新到调用队列中的对应opencl调用中;
sb6、当通信与数据管理池中的调用队列为空时,则确认当前所有opencl调用执行完毕,通信与数据管理池汇总各个信号处理模块处理的结果,然后与主处理器进行通信。
实施例4:
基于上述实施例,在本实施例中,上述复杂soc的片上通信方法基于一种复杂soc的片上通信结构实施的,复杂soc的片上通信结构包括主处理器、通信与数据管理池、单向闭合的通信环路和多个信号处理模块,通信与数据管理池和多个信号处理模块均挂载在通信环路上,主处理器与通信与数据管理池连接。上述信号处理模块包括空闲状态和调用状态,所述信号处理模块处理opencl调用时为调用状态,否则为空闲状态,所述通信与数据管理池和多个信号处理模块为通信环路上的节点;当信号处理模块处于空闲状态时,监控通信环路,当未执行状态的opencl调用经过时,截取该opencl调用的信息进行处理,并设置当前信号处理模块为调用状态,当信号处理模块处于调用状态时,将直接将通信环路上经过的opencl调用传递到下一个节点。
实施例5:
本实施例中的一种复杂soc的片上通信方法如图1所示,描述了可利用本发明的复杂soc的片上通信方法的复杂soc示意图。该复杂soc由一个主处理器、五个信号处理模块、一个通信与数据管理池以及一个单向闭合通信环路构成。主处理器可以访问并管理通信与数据管理池。单向闭合通信环路的起始节点由通信与数据管理池接入,通信与数据管理池通过单向链路和下一个节点的信号处理模块1相连并进行单向的信息传输,每一个信号处理模块都和下一个信号处理模块机遇单向链路进行信息传输,最后一个信号处理模块通过单向链路向通信与数据管理池链接发送有其自身或者其他信号处理模块转发的信息。
实施例6:
图2是利用本发明的复杂soc的一个opencl调用在单向通信环路中被执行的流程图。为完成soc需要处理的既定任务,soc的各个模块需要依次完成如下工作:
首先,主处理器根据复杂soc的结构特点,将该任务内分解得到2个opencl调用,分别记为a和b,这两个划分的调用需要协调执行才能完成既定任务;a和b被压入通信与数据管理池的任务调用队列并被标注为未执行状。通信与数据管理池将a和b调用依次传送到单向通信环路上;处于空闲状态的信号处理模块1截取a调用;信号处理模块1设置a调用的标记为被模块1执行;其后,带有被执行标记状态调用a由单向通信链路发送给信号处理模块2,处于空闲状态的信号处理模块2分析接收到的信息,检测到此调用的标签为被执行状态,即转到此信息到模块3;带标签的信息逐模块转发到通信与数据管理池;通信与数据管理池根据标签信息设置调用队列中的a为执行中状态。在a被发送到单向通信环路上后,b也被通信与数据管理池发送到单向通信环路上。此次,如调用a的转发过程类似,首先有信号处理模块1接收到调用b的信息,此时信号处理模块1处于执行a调用的状态,直接转发b相关信息到信号处理模块2,处于空闲状态的信号处理模块2接收到信息后,截取b调用;信号处理模块2设置b调用的标记为被模块2执行;其后,带有被执行标记状态调用b由单向通信链路发送给信号处理模块3,处于空闲状态的信号处理模块3分析接收到的信息,检测到此调用的标签为被执行状态,即转到此信息到下一个模块;带标签的信息逐模块转发到通信与数据管理池;通信与数据管理池根据标签信息设置调用队列中的b为执行中状态。
实施例7:
图3是利用本发明的复杂soc的一个opencl调用执行完成后在单向通信环路上的运行流程图。处于执行任务中的信号处理模块1完成了a调用后,a调用执行完成状态被打包后由模块1发送到单向通信环路,单向通信链路将此信息传送到处理模块2,模块2检测到此调用的标签为执行完成状态,转到此信息到模块3,带标签的信息逐模块转发到通信与数据管理池通信与数据管理池根据标签信息执行完成状态将a清除出调用队列。处于侦听通信与数据管理池状态的组处理器如果发送调用队列为空,则表示所有的调用已经执行结束,主处理器的信号处理任务完成。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。