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

多核架构的同步信号产生电路、芯片和同步方法及装置

文献发布时间:2023-06-19 10:02:03


多核架构的同步信号产生电路、芯片和同步方法及装置

技术领域

本发明涉及一种基于多核架构的同步信号产生电路、芯片和相关方法及装置。

背景技术

随着科学技术的发展,人类社会正在快速进入智能时代。智能时代的重要特点,就是人们获得数据的种类越来越多,获得数据的量越来越大,而对处理数据的速度要求越来越高。芯片是数据处理的基石,它从根本上决定了处理数据的能力。为了提高芯片的数据处理能力,除了通过芯片的处理速度和定制化的专用芯片外,芯片之间的并行计算模型也是当前的研究热点。

在现有的并行计算模型中,BSP计算模型(Bulk Synchronous ParallelComputing Model)是一种整体同步并行计算模型,它可以用于系统级应用中,例如多服务器组成的计算机群进行并行计算,也可以用于芯片级应用中,例如多(众)核芯片进行并行计算。BSP计算模型能够有效避免死锁,掩盖具体的互连网络拓扑,又简化了通信协议,还能够采用障碍同步的方式以硬件实现的全局同步是在可控的粗粒度级,从而提供了执行紧耦合同步式并行算法的有效方式。

然而,在目前的BSP计算模型中,各节点要通过总线或者片上网络发送消息给控制器,具有较大的延时,当节点数量较多的时候,会显著加大总线或者片上网络的负载,且控制器需要对每一个节点发送的消息进行处理,因此,控制器与节点之间的信号传递效率较低,延时较大,增大了整体系统的误差,而为了降低这种误差,经常会增加控制各节点的软件的复杂性,导致整体系统的效率进一步降低。

发明内容

本发明有鉴于上述现有技术的状况而完成,其目的在于提供一种能够降低整体延迟,提高信号传递效率并减小传输负担的基于多核架构的同步并行装置及其控制方法。

为此,本公开的第1方面提供了一种同步信号产生电路,其特征在于:所述同步信号产生电路用于为M个节点组产生同步信号,所述节点组中包括至少一个节点,所述M为大于等于1的整数;所述同步信号产生电路包括:同步信号生成单元和M个组准备信号生成单元;所述M个组准备信号生成单元与所述M个节点组一一对应;所述M个组准备信号生成单元中的第一组准备信号生成单元与待同步的第一节点组中的K个节点相连接;所述第一组准备信号生成单元用于为所述待同步的第一节点组生成第一待启动信号,所述K为大于等于1的整数;所述M个组准备信号生成单元的输出端与所述同步信号生成单元相连接;所述同步信号生成单元根据所述第一待启动信号生成第一同步信号,所述第一同步信号用于指示所述第一节点组内的所述K个节点开始同步。

在本公开第1方面所涉及的同步信号产生电路中,M个组准备信号生成单元与M个节点组一一对应,并且第一组准备信号生成单元与待同步的第一节点组中的K个节点相连接,第一组准备信号生成单元用于为待同步的第一节点组生成第一待启动信号,同步信号生成单元根据第一待启动信号生成第一同步信号,第一节点组内的K个节点开始同步,由此,同步信号生成单元能够同时对多个待启动信号进行处理,以及M个组准备信号生成单元和同步信号生成单元能够独立地进行信号的传递。

另外,在本公开的第1方面所涉及的同步信号产生电路中,可选地,所述第一组准备信号生成单元用于为所述待同步的第一节点组生成第一待启动信号,包括:所述第一准备信号生成单元用于根据所述待同步的第一节点组中的全部K个节点的准备信号生成所述第一待启动信号。在这种情况下,能够根据第一待启动信号得知第一节点组中的全部K个节点是否全部进入空闲状态,由此,能够确保第一节点组中的全部K个节点能够同步并行运算。

另外,在本公开的第1方面所涉及的同步信号产生电路中,可选地,所述同步信号生成单元包括:M个屏蔽单元、M个待同步组指示单元和M个组同步信号生成单元;所述M个待同步组指示单元分别与所述M个屏蔽单元相连接;所述M个屏蔽单元中的每个屏蔽单元的输入端与所述M个组准备信号生成单元的输出端相连接;所述M个屏蔽单元的输出端分别与所述M个组同步信号生成单元中对应的组同步信号生成单元相连接;所述M个屏蔽单元中的第一屏蔽单元根据连接在其上的第一待同步组指示单元的指示,输出第一组的准同步信号;所述M个组同步信号产生单元中的第一组同步信号生成单元根据所述第一组的准同步信号生成所述第一组的同步信号。在这种情况下,第一屏蔽单元根据连接在其上的第一待同步组指示单元的指示,屏蔽其它组的待启动信号并输出第一组的准同步信号,第一组同步信号生成单元根据第一组的准同步信号生成第一组的同步信号,由此,能够通过第一屏蔽单元判断是否生成第一组的同步信号。

另外,在本公开的第1方面所涉及的同步信号产生电路中,可选地,所述待同步组指示单元包括寄存器;所述寄存器包括至少M个寄存器位,所述M个寄存器位与所述M个节点组一一对应,所述M个寄存器位中与所述待同步的第一节点组对应的寄存器位被配置为第一值,所述M个寄存器位中与所述M个节点组中除所述待同步的第一节点组之外的节点组对应的寄存器位被配置为第二值。由此,能够根据需要选择配置为第一值的寄存器位。

另外,在本公开的第1方面所涉及的同步信号产生电路中,可选地,所述第一同步信号用于指示所述第一节点组内的所述K个节点开始同步,包括:所述第一同步信号用于指示所述第一节点组内的所述K个节点同时开始计算,或同时开始传输数据。由此,能够确第一节点组内的所述K个节点同时开始计算或传输数据。

此外,本公开的第2方面提供了一种芯片,包括上述第1方面的同步信号产生电路,以及N个处理节点,所述N个处理节点被分为M个处理节点组,其中,所述N为大于1的整数,M小于等于N。

在本公开第2方面所涉及的芯片中,N个处理节点被分为M个处理节点组,由此,同步信号产生电路能够对M个处理节点组一一对应,并能够对M个处理节点组进行信号的接收与发送。

另外,在本公开的第2方面所涉及的芯片中,可选地,还包括N个第一通信硬件线路,所述N个第一通信硬件线路用于传输从所述N个处理节点发送至对应的组准备信号生成单元的准备信号。在这种情况下,组准备信号生成单元与对应的处理节点组中的各个处理节点分别独立地进行连接,由此,能够确保各个处理节点生成的准备信号准确地发送至对应的组准备信号生成单元,且提高了准备信号的传输速率。

另外,在本公开的第2方面所涉及的芯片中,可选地,还包括N个第二通信硬件线路,所述N个第二通信硬件线路用于传输从同步信号生成单元发送至对应处理节点的同步信号。在这种情况下,同步信号生成单元与对应的处理节点组中的各个处理节点分别独立地进行连接,由此,能够确保同步信号生成单元生成的同步信号准确地发送至对应的处理节点组中的各个处理节点,且提高了同步信号的传输速率。

另外,在本公开的第2方面所涉及的芯片中,可选地,还包括控制单元,所述控制单元用于改变寄存器的设置。由此,能够通过控制单元控制寄存器的寄存器位的值从而控制屏蔽单元。

另外,在本公开的第2方面所涉及的芯片中,可选地,还包括控制单元,所述控制单元用于控制处理节点组中的各个处理节点的任务的执行和分配。由此,能够通过控制单元对处理节点组中的各个处理节点的任务进行分配。

另外,在本公开的第2方面所涉及的芯片中,可选地,所述N个处理节点包括RISC-V核。由此,能够基于通用RISC-V基础指令和扩展指令对芯片进行灵活的编程。

此外,本公开的第3方面提供了一种基于多核架构的同步并行控制方法,其是基于上述第1方面任一项所述的同步并行装置的同步并行控制方法,包括:当所述节点组中的第一节点进入空闲状态时,所述第一节点向所述第一节点所在的组准备信号生成单元发送准备信号;响应于所述节点组中所有节点均发送了准备信号,所述组准备信号生成单元生成待启动信号;同步信号生成单元根据所述待启动信号生成同步信号;所述节点组中的所有节点响应于接收到的所述同步信号,开始同步。

在本公开的第3方面所涉及的同步并行控制方法中,节点组中的第一节点在进入空闲状态时向第一节点所在的组准备信号生成单元发送准备信号,当组准备信号生成单元接收到与之对应的节点组中全部节点的准备信号后生成待启动信号,再由同步信号生成单元生成对应的同步信号,节点组中的所有节点响应于接收到的同步信号,使得所有节点开始同步,由此,同步信号生成单元能够同时对多个待启动信号处理,以及组准备信号生成单元和同步信号生成单元能够独立地进行信号的传递。

此外,本公开的第4方面提供了一种基于多核架构的同步并行装置,其特征在于,包括:处理模块,其具有N个处理节点,所述N个处理节点被分为M个处理节点组,其中,所述N为大于1的整数,M小于等于N;以及同步信号发生模块,其包括同步信号生成单元和M个组准备信号生成单元;所述M个组准备信号生成单元与所述M个节点组一一对应;所述M个组准备信号生成单元中的第一组准备信号生成单元与待同步的第一节点组中的K个节点相连接;所述第一组准备信号生成单元用于为所述待同步的第一节点组生成第一待启动信号,所述K为大于等于1的整数;所述M个组准备信号生成单元的输出端与所述同步信号生成单元相连接;所述同步信号生成单元根据所述第一待启动信号生成第一同步信号,所述第一同步信号用于指示所述第一节点组内的所述K个节点开始同步。

在本公开的第4方面所涉及的同步并行装置中,M个组准备信号生成单元与M个节点组一一对应,并且第一组准备信号生成单元与待同步的第一节点组中的K个节点相连接,第一组准备信号生成单元用于为待同步的第一节点组生成第一待启动信号,同步信号生成单元根据第一待启动信号生成第一同步信号,第一节点组内的K个节点开始同步,由此,同步信号生成单元能够同时对多个待启动信号进行处理,以及M个组准备信号生成单元和同步信号生成单元能够独立地进行信号的传递。

另外,在本公开的第4方面所涉及的同步并行装置中,可选地,所述处理节点为处理电路、处理芯片和服务器中的至少一种。由此,能够根据实际应用情况选择。

此外,本公开的第5方面提供了一种计算设备,其包括处理器和存储器,所述处理器执行所述存储器存储的计算机指令,使得所述计算设备执行上述所描述的同步并行控制方法。

另外,本公开的第6方面提供了一种计算机可读存储介质,其存储有计算机程序,并且当所述计算机程序被处理器执行时实现上述所描述的同步并行控制方法的步骤。

此外,本公开的第7方面提供了一种计算机程序产品,其包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行上述所描述的同步并行控制方法。

根据本公开,能够提供一种能够降低整体延迟,提高信号传递效率,减小总线负担的基于多核架构的同步并行装置、方法及系统。

附图说明

现在将仅通过参考附图的例子进一步详细地解释本公开的实施例,其中:

图1是示出了本公开的实施方式所涉及的同步并行装置的用于处理数据的场景示意图。

图2是示出了本公开的实施方式所涉及的同步并行装置的功能框图示意图。

图3是示出了本公开的实施方式所涉及的同步并行装置的同步信号发生模块的功能框图。

图4是示出了本公开的实施方式所涉及的同步并行装置的一个组准备信号生成单元的功能框图。

图5是示出了本公开的实施方式所涉及的同步并行装置的同步信号生成单元的功能框图。

图6是示出了本公开的实施方式所涉及的同步并行装置的一个同步信号生成单元的功能框图。

图7是示出了本公开的实施方式所涉及的同步并行装置的寄存器的功能框图。

图8是示出了本公开的实施方式所涉及的同步并行装置的部分信号示意图。

图9是示出了本公开的实施方式所涉及的同步并行方法的流程图。

附图标号说明:

1…处理模块,10…处理组,101…处理器,2…同步信号发生模块,21…组准备信号生成单元,22…同步信号生成单元,221…筛选器,222…寄存器,223…同步信号生成器,3…控制模块。

具体实施方式

下面,结合附图和具体实施方式,进一步详细地说明本发明。在附图中,相同的部件或具有相同功能的部件采用相同的符号标记,省略对其的重复说明。

图1是示出了本公开的实施方式所涉及的同步并行装置S的用于处理数据应用场景示意图。

本公开的实施方式所涉及的基于多核架构的同步并行装置S可以包括处理模块1、同步信号发生模块2和控制模块(有时也称“控制单元”)3。如图1所示,控制模块3获取需要处理的计算任务(例如海量图片处理、大数据处理等)。接着,控制模块3可以将计算任务分配至各个处理节点(例如:服务器、处理器101或处理芯片等),并对同步信号发生模块2进行配置,当芯片上的处理节点接收到来自控制模块的计算任务后根据同步信号发生模块的同步信号,处理各自的任务,并在处理结束时生成各自的准备信号。此外,同步信号发生模块2可以接收各个处理节点所发出的准备信号,接收到准备信号后,根据同步信号发生模块2的配置情况,同步信号发生模块2生成同步信号,并发送至处理节点,使得处理节点在接收到同步信号后开始处理下一个计算任务。

在同步并行装置S中,处理模块1可以包括至少一个处理组(节点组)10,处理组10可以具有多个处理器(节点)101(有时也称“核”),处理器101可以具有空闲状态和非空闲状态,并且在处理器101进入空闲状态时生成准备信号(参见稍后描述的图2)。另外,同步信号发生模块2可以包括组准备信号生成单元21和同步信号生成单元22,其中,组准备信号生成单元21与处理组10中的各个处理器101可以彼此独立地硬件连接,并且可以基于由该处理组10中的各个处理器101所生成的准备信号产生组准备信号(待启动信号),同步信号生成单元22与处理组10中的各个处理器101可以彼此独立地进行连接,并且能够接收由组准备信号生成单元21产生的组准备信号并根据组准备信号生成组同步信号(同步信号),其中,当处理组10中各个处理器101接收组同步信号时该处理组10中的各个处理器101进入非空闲状态,所述非空闲状态包括计算状态和传输状态,对于BSP同步来说,非空闲状态可以先进行计算再进行传输,或者先传输再计算,计算和传输在一个同步周期内完成。

空闲状态是指处理模块中的处理组中的处理节点在计算完所接收到的计算任务并将处理结果传输至下一处理核后,没有任务可以执行时的状态。在一些示例中,当处理器101处于空闲状态时可以发出低电平信号,而当处理器101处于非空闲时发出高电平电信(参见稍后描述的图8)。

在本公开的实施方式所涉及的同步并行装置S中,处理组10中的处理器101在进入空闲状态时彼此独立地向同步信号发生模块2中与该处理组10对应的组准备信号生成单元21发送准备信号,当组准备信号生成单元21接收到与之对应的处理组10中全部处理器101的准备信号后生成组准备信号,再由同步信号生成单元22接收组准备信号并生成对应的组同步信号,最后发送至该处理组10中的全部处理器101,使得处理器101进入非空闲状态,由此,同步信号生成单元22能够同时对多个组准备信号处理,以及组准备信号单元和同步信号生成单元22能够独立地与同步并行装置S进行信号的传递。

另外,如上所述,同步并行装置S还可以包括用于分配计算任务的控制模块3。控制模块3可以与处理模块1(稍后描述)和同步信号发生模块2(稍后描述)通信连接,并且控制模块3与寄存器222(稍后描述)通信连接,寄存器222的状态由控制模块3控制。由此,控制模块3用于对处理模块1分配计算任务,并且对寄存器222的状态进行控制。

在同步并行装置S中,控制模块可以将获得的计算任务根据预估的计算量算出需要多少处理组参与处理,再根据各处理组中的各个处理器的计算能力将计算任务相应地分为多份并发送至对应的处理器中。由此,能够确保进行计算的各处理组中的各个处理器进入非空闲状态下的时间大致相同,从而能够有效地利用处理模块的计算资源,减少计算资源的浪费。

在一些示例中,控制模块3可以通过编程语言对寄存器222进行读写,从而改变寄存器222中与处理组对应的标记位(有时也称“寄存器位”)的有效性。由此,能够通过控制模块3对寄存器222进行控制(稍后描述)。作为例子,上述编程语言可以是C语言、汇编语言、Verilog语言或其他硬件语言。

如上所述,在传统的BSP运算中,各处理节点要通过Fabirc,例如:总线或者片上网络发送消息给控制器,具有较大的延时,当处理节点数量较多的时候,会显著加大总线或者片上网络的负载,且控制器需要对每一个节点发送的消息进行处理,因此,控制器与节点之间的信号传递效率较低,延时较大,增大了整体系统的误差。在传统的BSP运算中,为了降低这种误差,需要增加控制各节点的软件的复杂性,导致整体系统的效率进一步降低。而且,空闲状态的处理器101要将准备信号通过总线或片上网络发送至控制器,当该处理组中的各个处理器101同时将准备信号发送至控制器时,会增大总线或者片上网络的负载,带来较大延时,且控制器需要单独对各个处理器101的准备信号进行处理,进一步加大了延时。

在本公开的实施方式所涉及的同步并行装置S中,通过增加同步信号发生模块2,使得同步信号的生成发生在同步信号发生模块2内,同步信号发生模块2通过专有且独立的线路(如通信硬件线路)与各个处理器101直接连接,无需经由或占用数据传输的总线或者片上网络。由此,能够提高处理器101之间同步的信号传输效率,降低总线或片上网络的负载和芯片的功耗。此外,同步信号发生模块2通过设置有组准备信号生成单元21和同步信号生成单元22,使得同步信号发生模块2能够同时对所有的处理组10中的各个处理器101的准备信号进行处理并准确地向需要同步计算的处理组发送组同步信号(稍后描述)。

在一些示例中,处理节点可以为处理电路、处理器、处理芯片和服务器中的至少一种。由此,能够根据实际应用情况选择不同的处理方式。在一些示例中,处理器101可以为中央处理单元(CPU)、数字信号处理器(DSP)、张量处理单元(TPU)、图像处理单元(GPU)、片上可编程逻辑阵列(FPGA)或专用定制芯片等。在一些示例中,处理芯片可以是集成有多核的处理器101。例如,处理芯片可以为基于RISC-V多核架构的芯片。具体而言,该芯片中的每一个处理器101都是一个扩展的RISC-V核,并且能够支持RISC-V的通用指令集。由此,能够基于通用RISC-V基础指令和扩展指令对芯片进行灵活的编程。另外,在一些示例中,服务器也可以是具有运算能力的本地服务器、云端服务器或者分布在不同的物理位置而通过网络连接的服务器群等。

在一些示例中,同步并行装置S可以包括:处理模块,其具有N个处理节点,N个处理节点被分为M个处理节点组,其中,N为大于1的整数,M小于等于N;以及同步信号发生模块,其包括同步信号生成单元和M个组准备信号生成单元;M个组准备信号生成单元与M个节点组一一对应;M个组准备信号生成单元中的第一组准备信号生成单元与待同步的第一节点组中的K个节点相连接;第一组准备信号生成单元用于为待同步的第一节点组生成第一待启动信号,K为大于等于1的整数;M个组准备信号生成单元的输出端与同步信号生成单元相连接;同步信号生成单元根据第一待启动信号生成第一同步信号,第一同步信号用于指示第一节点组内的K个节点开始同步。

在一些示例中,同步信号发生模块2可以以同步信号发生电路的形式实现。该同步信号产生电路可以包括:同步信号生成单元和M个组准备信号生成单元;M个组准备信号生成单元与M个节点组一一对应;M个组准备信号生成单元中的第一组准备信号生成单元与待同步的第一节点组中的K个节点相连接;第一组准备信号生成单元用于为待同步的第一节点组生成第一待启动信号,K为大于等于1的整数;M个组准备信号生成单元的输出端与同步信号生成单元相连接;同步信号生成单元根据第一待启动信号生成第一同步信号,第一同步信号用于指示第一节点组内的K个节点开始同步。

另外,在一些示例中,第一组准备信号生成单元用于为待同步的第一节点组生成第一待启动信号,包括:第一准备信号生成单元用于根据待同步的第一节点组中的全部K个节点的准备信号生成第一待启动信号。

另外,在一些示例中,同步信号生成单元可以包括:M个屏蔽单元、M个待同步组指示单元和M个组同步信号生成单元;M个待同步组指示单元分别与M个屏蔽单元相连接;M个屏蔽单元中的每个屏蔽单元的输入端与M个组准备信号生成单元的输出端相连接;M个屏蔽单元的输出端分别与M个组同步信号生成单元中对应的组同步信号生成单元相连接;M个屏蔽单元中的第一屏蔽单元根据连接在其上的第一待同步组指示单元的指示,输出第一组的准同步信号;M个组同步信号产生单元中的第一组同步信号生成单元根据第一组的准同步信号生成第一组的同步信号。

另外,在一些示例中,待同步组指示单元可以包括寄存器;寄存器可以包括至少M个寄存器位,M个寄存器位与M个节点组一一对应,M个寄存器位中与待同步的第一节点组对应的寄存器位可以被配置为第一值,M个寄存器位中与M个节点组中除待同步的第一节点组之外的节点组对应的寄存器位被配置为第二值。

另外,在一些示例中,第一同步信号可以用于指示第一节点组内的K个节点开始同步,包括:第一同步信号用于指示第一节点组内的K个节点同时开始计算,或同时开始传输数据。

此外,在一些示例中,当处理模块1为芯片时,可选地,控制模块3可以集成于芯片内。在这种情况下,芯片可以包括多个核和控制模块3。具体而言,该芯片可以包括上述描述的同步信号产生电路、以及N个处理节点,N个处理节点被分为M个处理节点组,其中,N为大于1的整数,M小于等于N。在一些示例中,N个处理节点包括RISC-V核。

另外,在一些示例中,该芯片还可以包括N个第一通信硬件线路,N个第一通信硬件线路用于传输从N个处理节点发送至对应的组准备信号生成单元的准备信号。另外,在一些示例中,该芯片还可以包括N个第二通信硬件线路,N个第二通信硬件线路用于传输从同步信号生成单元发送至对应处理节点的同步信号。

另外,在一些示例中,该芯片还可以包括控制单元,控制单元用于改变寄存器的设置。在另一些示例中,控制单元可以用于控制处理节点组中的各个处理节点的任务的执行和分配。

图2是示出了本公开的实施方式所涉及的同步并行装置S的功能框图示意图。如图2所示,如上所述,处理模块1可以包括至少一个处理组10,处理组10可以具有多个处理器101。另外,处理组10中的各个处理器101可以具有空闲状态和非空闲状态,并且在处理器101进入空闲状态时生成准备信号。当处理组10中各个处理器101接收组同步信号时该处理组10中的各个处理器101进入非空闲状态。

一些示例中,处理模块1可以是具有多核架构的芯片,并划分为多个处理组10,各个处理组10中的各个处理器101具有独立的核内内存。在这种情况下,处理器101可以利用自身的核内内存进行数据的临时存取。

可选的,各个处理组10还可以具有本地内存(有时也称“局部内存”)。在这种情况下,处理组10可以利用本地内存完成数据的存取,无需通过Fabric向外部存储器交互数据,因此能够明显地提高处理组的处理效率。

另外,对作为处理模块1的芯片上的多个处理器101进行分组,所划分的处理组的个数是指一个芯片上最大分组数,处理组的个数没有什么特别限制,处理组的个数可以是预先设计好的,例如在芯片设计过程中根据预期应用设计好。另外,在一些示例中,各个处理组中处理器101的个数可以相同。在另一些示例中,各个处理组中处理器101的个数也可以不同。

在一些示例中,每个处理组10可以具有至少一个处理器101。此外,每一个处理组10中的处理器101的个数可以是预先设定的。

在一些示例中,作为处理模块1的芯片可以为基于RISC-V多核架构的芯片。此时,该芯片中的各个处理器101可以为支持RISC-V的通用指令集的扩展RISC-V核。在这种情况下,能够基于通用RISC-V基础指令和扩展指令对芯片进行灵活的编程。

以下,结合图2的具体例子对本实施方式所涉及的处理模块1进行进一步详细描述。

在图2所示的同步并行装置S中,处理模块1包括m个处理组,即处理组10a1、处理组10a2、……、处理组10am。其中,第m个处理组10am包括n个处理器,即处理器101am1、处理器101am2、……、处理器101amn。下面,以图2中的处理组10a1为例进行具体说明。

如图2所示,在处理组10a1中,各个处理器101接收计算任务(这里是处理器101a11、处理器101a12、……、处理器101a1n)。其中,处理器101a11至处理器101a1n彼此独立地连接至同步信号发生模块2,具体而言,处理器101a11至处理器101a1n可以分别经由独立的硬件线路分别连接至同步信号发生模块2。当同步信号发生模块2接收到处理组10a1中的全部处理器101(处理器101a11、处理器101a12、……、处理器101a1n)发送的准备信号,同步信号发生模块2基于所接收的各个准备信号组同步信号并发送至处理组10a1中的各个处理器(处理器101a11、处理器101a12、……、处理器101a1n)。在收到组同步信号后,处理组10a1中的各个处理器(处理器101a11、处理器101a12、……、处理器101a1n)进入非空闲状态开始处理所分配的计算任务。

在一些示例中,各个处理器(处理器101a11、处理器101a12、……、处理器101a1n)可以与处理组10a1的本地内存进行数据读写并暂时存储处理过程中的临时数据,在计算完毕后,再通过Fabric将计算结果发送至控制模块3。

在一些示例中,本地内存可以被设置为仅用于一个处理组10中的各个处理器101的存储器。由此,能够将处理器101的数据暂时地存放在存储器中,提高处理器101的计算速度。在另一些示例中,处理组10中的处理器101可以彼此独立地向本地内存读写数据。另外,在一些示例中,多个处理组也可以共用一块物理内存。

在一些示例中,本地内存或所使用的物理内存可以为闪速(flash)存储器、硬盘类型存储器、微型多媒体卡型存储器、卡式存储器(例如SD或XD存储器)、随机存取存储器(random access memory,RAM)、静态随机存取存储器(static RAM,SRAM)、只读存储器(read only memory,ROM)、电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM)、可编程只读存储器(programmable ROM,PROM)、回滚保护存储块(replay protected memory block,RPMB)、磁存储器、磁盘或光盘。出于从运算速率的角度考虑,本地内存或所使用的物理内存优选采用随机存取存储器或静态随机存取存储器。

在另一些示例中,对于处理节点为服务器的情况而言,本地内存也可以是网络上的网络存储设备,在这种情况下处理节点可以对在因特网上的存储器执行存取等操作。

在一些示例中,处理器101完成计算和传输进入空闲状态时可以生成并发送准备信号以表示处理器101正处于空闲状态。在另一些示例中,处理器101可以在处于空闲状态时每隔预定时间间隔生成并发送准备信号。另外,在一些示例中,当处理器101处于空闲状态时可以持续地生成并发送准备信号。

在一些示例中,处理组10中的各个处理器101在接收到组同步信号后可以由空闲状态进入非空闲状态,并开始对获得的计算任务进行处理。

在一些示例中,计算状态之后还包括传输状态。在这种情况下,处理器101在计算完成后可以进入传输状态进行数据的接收与发送,由此,处理器101能够将计算得出的数据进行发送并接收计算任务。在另一些示例中,当处理器101完成计算和传输任务后便进入空闲状态,处于空闲状态的处理器101能够随时接收新的计算任务。在另一些示例中,传输状态也可以设置在计算状态之前。

在一些示例中,各个处理组10中的全部处理器101在接收到组同步信号由空闲状态进入非空闲状态直至下一个组同步信号到来的这段时间有时也被称为“超步”。

在一些示例中,处理器101可以包括一个或多个不同类型的处理器。例如,一个处理器101可以是中央处理单元(CPU)、张量处理单元(TPU)或图形处理单元(GPU)等,也可以是组合了一个中央处理单元(CPU)和一个图形处理器(GPU)或组合了一个张量处理单元(TPU)和一个图形处理单元(GPU)的处理器。另外,处理器101也可以是定制化的芯片,例如是支持RISC-V的通用指令集和扩展指令集的芯片。

图3是示出了本公开的实施方式所涉及的同步并行装置S的同步信号发生模块2的功能框图。如图3所示,在本实施方式中,同步信号发生模块2可以包括组准备信号生成单元21和同步信号生成单元22。在一些示例中,同步信号发生模块2可以与处理模块1中的所有(全部)处理器101彼此独立地进行连接。换言之,同步信号发生模块2可以通过专有且独立的硬件线路与处理模块1中的全部处理器101进行连接。在这种情况下,各个处理器101与同步信号发生模块2之间的信号传递互不干扰,而且各个处理器101与同步信号发生模块2之间不经过Fabric,由此能够提高整体的运行效率。

在一些示例中,同步信号发生模块2可以是用于产生组同步信号的逻辑电路。例如,在一个例子中,同步信号发生模块2可以由现场可编程逻辑阵列(FPGA)来实现。在一些示例中,组同步信号经由输入同步信号发生模块2的准备信号经过“或(or)”,“与(and)”或者“取反(not)”及其组合等逻辑运算后产生。在一些示例中,组同步信号可以为脉冲信号或电平信号。

以下,结合图3和图4的具体例子对本实施方式所涉及的同步信号发生模块2进行进一步详细描述。

在图3所示的同步信号发生模块2中,同步信号发生模块2包括组准备信号生成单元和同步信号生成单元。首先,各个组准备信号生成单元(组准备信号生成单元21a1、组准备信号生成单元21a2、……、组准备信号生成单元21am)分别用于接收对应处理组(处理组10a1至10am)中的全部处理器101所发出的准备信号,并生成组准备信号并发送至同步信号生成单元22,再由同步信号生成单元22生成组同步信号发送至对应的处理组中的各个处理器。下面,以组准备信号生成单元21a1为例进行说明。

在同步信号发生模块2中,组准备信号生成单元21a1接收来自于全部处理器(处理器101a11、处理器101a12、……、处理器101a1n)的各个准备信号,基于所接收的全部准备信号生成组准备信号,并将组准备信号发送到同步信号生成单元22。同步信号生成单元22基于所接收的各个组准备信号,生成组同步信号并将组同步信号发送至对应的处理组中的各个处理器。如上所述,当同步信号发生模块2将组同步信号发送到各个处理器(例如处理器101a11、处理器101a12、……、处理器101a1n)时,使各个处理器101即处理器101a11、处理器101a12、……、处理器101a1n同步处理所分配的计算任务。

图4是示出了本公开的实施方式所涉及的同步并行装置S的组准备信号生成单元21的功能框图。如图4所示,在本实施方式中,组准备信号生成单元21与处理组10中的各个处理器101(例如处理器101a11、处理器101a12、……、处理器101a1n)可以彼此独立地进行连接,具体而言,处理器101a11至处理器101a1n可以分别经由独立的硬件线路分别连接至组准备信号生成单元21。接着,组准备信号生成单元21可以基于由该处理组10中的各个处理器101所生成的准备信号产生组准备信号。

在一些示例中,组准备信号生成单元21可以在接收到处理组10中的全部处理器101(例如处理器101a11、处理器101a12、……、处理器101a1n)的准备信号后生成组准备信号。在这种情况下,能够根据组准备信号得知处理组10中的处理器101是否全部进入空闲状态,由此,能够确保处理组10中的全部处理器101能够同步并行运算。

在一些示例中,组准备信号生成单元21可以与处理组10相对应,相对应的处理组10中的各个处理器101彼此独立地与组准备信号生成单元21进行连接。这里,组准备信号生成单元21可以与处理组10相对应是指,一个组准备信号生成单元21对应一个处理组10,且组准备信号生成单元21与处理组10的数量相等。在这种情况下,组准备信号生成单元21能够同时接收并处理对应地处理组10中的各个处理器101的准备信号,由此,同步信号发生模块2能够同时接收并处理来自处理模块1中所有处理组10的信号。

如图4所示,以处理组10a1和组准备信号生成单元21a1为例,处理组10a1中的各个处理器(处理器101a11、处理器101a12、……、处理器101a1n)分别生成准备信号a11、准备信号a12、……、准备信号a1n,各个信号通过独立的硬件线路彼此独立地发送至与处理组10a1对应的组准备信号生成单元21a1,组准备信号生成单元21a1在收到处理组10a1中的全部处理器(处理器101a11、处理器101a12、……、处理器101a1n)的准备信号也即收到准备信号a11、准备信号a12、……、准备信号a1n后,生成组准备信号a1,以表示处理组10a1中的全部处理器101都处于空闲状态。此时,处理组10a1中的全部处理器101处于等待同步的状态。

在一些示例中,组准备信号生成单元21可以与处理组10中的各个处理器101通过彼此独立的专用硬件线路(第一通信硬件线路)直接连接,并且同步信号生成单元22与处理组10中的各个处理器101通过彼此独立的专用硬件线路直接连接。在这种情况下,处理组10中的各个处理器101能够通过专用硬件线路发送和接收信号,由此,能够降低信号之间的干扰,提高处理器101发送和接收信号的效率。

在一些示例中,组准备信号可以经由输入同步信号发生模块2的准备信号经过“或(or)”,“与(and)”或者“取反(not)”及其组合等逻辑运算后产生。在一些示例中,组准备信号可以为脉冲信号或电平信号。

以下,结合图5和图6的具体例子对本实施方式的同步信号生成单元22进行进一步详细描述。

图5是示出了本公开的实施方式所涉及的同步并行装置S的同步信号生成单元22的功能框图。如图5所示,在本实施方式中,同步信号生成单元22与处理组10中的各个处理器101可以彼此独立地进行连接,并且能够接收由组准备信号生成单元21产生的组准备信号并根据组准备信号生成组同步信号。

在一些示例中,同步信号生成单元22可以与组准备信号生成单元21连接。由此,同步信号生成单元22能够接收来自全部组准备信号生成单元21的信号。

在一些示例中,组准备信号生成单元21可以彼此独立的连接至同步信号生成单元22。在另一些示例中,组准备信号生成单元21可以经由内部Fabirc连接至同步信号生成单元22。

如图5所示,组准备信号a1、组准备信号a2、……、组准备信号am被发送至筛选器(屏蔽单元)221a1至221am。这里,筛选器有时也称为屏蔽器。各个筛选器221(筛选器221a1、筛选器221a2、……、筛选器221am)均会收到组准备信号a1、组准备信号a2、……、组准备信号am等各个组准备信号。另外,寄存器(待同步组指示单元)222a1、寄存器222a2、……、寄存器222am分别控制对应的筛选器(筛选器221a1、筛选器221a2、……、筛选器221am),并根据控制模块3所分配的计算任务的有效位确定筛选器中哪些组准备信号有效。各个筛选器(筛选器221a1、筛选器221a2、……、筛选器221am)在接收到有效的组准备信号后分别生成启动信号(准同步信号),并发送至对应的同步信号生成器(组同步信号生成单元)(同步信号生成器223a1、同步信号生成器223a2、……、同步信号生成器223am),再由各个同步信号生成器(同步信号生成器223a1、同步信号生成器223a2、……、同步信号生成器223am)分别将组同步信号发送至各个处理器。

图6是示出了本公开的实施方式所涉及的同步并行装置S的一个同步信号生成单元22的功能框图。如图6所示,在一些示例中,同步信号生成单元22还可以包括用于接收并筛选组准备信号的筛选器221和用于控制筛选器221接收的组准备信号是否有效的寄存器222,筛选器221根据组准备信号和寄存器222的状态判断是否生成启动信号。在这种情况下,寄存器222能够通过控制筛选器221从而对接收的组准备信号进行筛选,由此,同步信号生成单元22能够通过筛选器221进行判断是否生成组同步信号。

在一些示例中,如上所述,组准备信号生成单元21所生成的组准备信号可以发送至各个筛选器221。在这种情况下,筛选器221可以对收到的组准备信号进行筛选,当接收到的信号为对应的组准备信号生成单元21所发出的信号时生成启动信号,由此,筛选器221可以彼此独立地筛选组准备信号,并独立地生成启动信号。

在另一些示例中,筛选器221可以与多个组准备信号生成单元21相对应,当筛选器221接收到对应的多个组准备信号时生成启动信号。

另外,在一些示例中,相对应的组准备信号生成单元21彼此独立地与组同步信号生成单元223进行连接。

在一些示例中,启动信号经由输入筛选器221的组准备信号经过“或(or)”,“与(and)”或者“取反(not)”及其组合等逻辑运算后产生。在一些示例中,启动信号可以为脉冲信号或电平信号。

如图6所示,以筛选器221a1和222a1为例,各个组准备信号a1、组准备信号a1、……、组准备信号am被发送至筛选器221a1。筛选器221a1根据寄存器222a1的设置(例如由控制模块3根据计算任务决定),在接收到有效的组准备信号a1后分别生成启动信号,并发送至对应的同步信号生成器(同步信号生成器223a1、同步信号生成器223a2、……、同步信号生成器223am),再由同步信号生成器223a1将组同步信号发送至这一组内的各个处理器。

图7是示出了本公开的实施方式所涉及的同步并行装置S的寄存器222的功能框图。图8是示出了本公开的实施方式所涉及的同步并行装置S的部分信号示意图。

如图7所示,寄存器222可以具有至少与组准备信号生成单元21相对应的标记位。当与组准备信号生成单元21相对应的标记位被设置为有效时,筛选器221接收该组准备信号生成单元21所生成的组准备信号。由此,能够根据需要选择筛选器221能够接收的组准备信号。

在一些示例中,寄存器222可以具有与组准备信号生成单元21相对应的标记位。例如,寄存器222具有m位的标记位(标记位t1、标记位t2、……、标记位tm),标记位t1对应组准备信号a1,标记位t2对应组准备信号a2,……,标记位tm对应组准备信号am。当一个标记位设置为有效时,筛选器221通过读取有效的标记位将其它无效的组准备信号屏蔽,从而能够在接收到有效的组准备信号时生成启动信号。

此外,当多个寄存器222的多个标记位设置为有效时,即意味着有多个组同时进行同步并行计算。例如,寄存器222a1的标记位t1和标记位t2为有效标记位,此时,寄存器222a1所控制的筛选器221a1若要生成启动信号,则需要接收到组准备信号生成单元21a1的组准备信号a1和组准备信号生成单元21a2的组准备信号a2。在这种情况下,处理组10a1中的各个处理器在进入空闲状态后,需要等待处理组10a2中的各个处理器全部进入空闲状态后才可以生成启动信号进而生成组同步信号,由此,能够通过对寄存器222的标记位的设置来控制筛选器221接收的组准备信号是否有效,进而控制组同步信号生成的时间。

在一些示例中,当寄存器222的多个标记位被设置为有效时,筛选器221在接收到与多个标记位对应的多个组准备信号生成单元21的组准备信号后生成启动信号。在这种情况下,能够使得筛选器221成为组同步信号生成中的障碍机制,由此,能够通过控制寄存器222的标记位来控制筛选器221,进而对组同步信号的生成时间进行控制。

如上所述,在寄存器222a1的标记位t1和标记位t2为有效标记位的同时,寄存器222a2的标记位t1和标记位t2同样被设置为有效标记位,此时,筛选器221a1和筛选器221a2均需要接收到来自于组准备信号生成单元21a1的组准备信号a1和组准备信号生成单元21a2的组准备信号a2才可以生成启动信号。在这种情况下,通过对寄存器222的标记位的设置能够实现多个筛选器221同时生成启动信号,由此,能够使得多个同步信号生成单元22同时生成组同步信号,进而能够使得多个处理组10同时进入非空闲状态。

在一些示例中,寄存器222可以选自多功能寄存器、指针寄存器、变址寄存器、专用寄存器、段寄存器、控制寄存器、调试寄存器、任务寄存器、浮点寄存器、多媒体寄存器、单指令流多数据流寄存器中的一种或多种。优选地,寄存器222可以为控制寄存器。

在一些示例中,启动信号经由输入筛选器221的组准备信号和寄存器222标记位信号经过“或(or)”,“与(and)”或者“取反(not)”及其组合等逻辑运算后产生。在一些示例中,标记位信号可以为脉冲信号或电平信号。

以下,结合图7和图8对本实施方式所涉及的筛选器进行进一步详细的描述。

如图7所示,以筛选器221a1为例,组准备信号a1、组准备信号a2、……、组准备信号am发送至筛选器221a1,当筛选器222a1中的两个标记位(假定与组准备信号生成单元21a1和21a2对应)被设置为有效时,筛选器221a1屏蔽组准备信号a1、a2以外的其他准备信号,并在接收到组准备信号a1和组准备信号a2后,生成启动信号a1,并发送至对应的同步信号生成器223a1,再由同步信号生成器223a1发出组同步信号a1至各个处理器101。

图8反映了图7中所示的时序电平信号输入输出的变化情况。以图8所示的例子为例,筛选器221a1接收组准备信号a1、组准备信号a2、……、组准备信号am,以及与上述组准备信号(组准备信号a1、组准备信号a2、……、组准备信号am)分别对应的寄存器222a1中的标记位(标记位t1、标记位t2、……、标记位tm)。筛选器221a1根据寄存器222a1的标记位的是否有效来生成启动信号a1。例如,此时寄存器222a1的中标记位t1、标记位t2有效,而其他标记位t3、标记位t4、……、标记位tm均无效,此时筛选器221a1仅能够接收到组准备信号a1和组准备信号a2并屏蔽其他组准备信号。筛选器221a1基于组准备信号a1和组准备信号a2生成启动信号a1。

在一些示例中,由同步信号生成单元22所生成的组同步信号可以被同时发送至处理组10中的各个处理器101。由此,能够确保处理组10中的各个处理器101同时开始运算。

在一些示例中,同步信号生成单元22还可以包括与筛选器221连接并接收启动信号的同步信号生成器223,同步信号生成器223根据启动信号生成组同步信号,并发送至处理组10中的各个处理器101,同步信号生成器223与处理组10中的各个处理器101彼此独立地进行连接,例如通过第二通信硬件线路进行连接。在这种情况下,同步信号生成器223仅与对应的处理组10中的各个处理器101分别独立地进行连接,由此,能够确保生成的组同步信号准确地发送至对应的处理组10中的各个处理器101,且提高了组同步信号的传输速率。

在一些示例中,每个筛选器221均连接有一个同步信号生成器223。进一步地,由于筛选器221与处理组10对应,因此与筛选器221对应的同步信号生成器223与处理组10对应。

在一些示例中,同步信号生成器223可以与对应的处理组10中的各个处理器101彼此独立地进行连接。在这种情况下,组同步信号能够直接发送至与同步信号生成器223对应的处理组10中的各个处理器101,由此,能够进一步降低信号传输的延时。

在一些示例中,组同步信号经由输入同步信号生成器223的启动信号经过“或(or)”,“与(and)”或者“取反(not)”及其组合等逻辑运算后产生。在一些示例中,组同步信号可以为脉冲信号或电平信号。

在一些示例中,寄存器222的标记位可以由控制模块3控制。由此,能够通过控制模块3控制寄存器222的标记位从而控制寄存器222的状态。

在一些示例中,控制模块3可以通过Fabirc与处理模块1和同步信号发生模块2进行通信连接。在这种情况下,控制模块3能够通过Fabirc与处理模块1和同步信号发生模块2进行数据交换。在一些示例中,处理模块1中的处理器101在计算完成后可以通过Fabirc发送计算结果。

在另一些示例中,控制模块3还可以包括无线通信单元。在这种情况下,控制模块3可以通过无线信号发送和接收数据。

在一些示例中,控制模块3可以为芯片的顶层微控制单元(MCU)、位于芯片外的主控电路(Host)、其他芯片或者其他程序应用(Server)。

以下,结合图9分析基于上述多核架构的同步并行装置S的同步并行控制方法。图9是示出了本公开的实施方式所涉及的同步并行方法的流程图。

如图9所示,基于上述多核架构的同步并行装置S的同步并行控制方法包括以下步骤:当节点组中的第一节点进入空闲状态时,第一节点向第一节点所在的组准备信号生成单元21发送准备信号(步骤S100);响应于节点组中所有节点均发送了准备信号,组准备信号生成单元21生成待启动信号(步骤S200);同步信号生成单元22根据待启动信号生成同步信号(步骤S300);节点组中的所有节点响应于接收到的同步信号,开始同步(步骤S400)。

在本公开所涉及的同步并行控制方法中,处理组(节点组)10中的处理器(节点)101在进入空闲状态时彼此独立地向同步信号发生模块2中与该处理组10对应的组准备信号生成单元21发送准备信号,当组准备信号生成单元21接收到与之对应的处理组10中全部处理器101的准备信号后生成组准备信号,再由同步信号生成单元22接收组准备信号并生成对应的组同步信号,最后发送至该处理组10中的全部处理器101,使得处理器101开始同步,由此,同步信号生成单元22能够同时对多个组准备信号处理,以及组准备信号单元和同步信号生成单元22能够独立地进行信号的传递。

在步骤S100中,当处理组10中的各个处理器101进入空闲状态时,使该处理组10中的各个处理器101发出准备信号。这里,处理组10和处理组10中的各个处理器101的设置方式可以具体参见上述处理模块1的描述,这里不再赘述。

在一些示例中,当处理器101开始同步时该处理器101进行计算或传输,并且在完成计算后进入空闲状态。在这种情况下,完成计算和传输后的处理器101可以等待其他计算或传输中的处理器101,由此,能够使得处理器101在下一个组同步信号到来时同时开始同步。

在步骤S200中,通过组准备信号生成单元21接收处理组10中各个处理器101发出的准备信号,并且当组准备信号生成单元21接收到该处理组10中全部处理器101所发出的准备信号时,使组准备信号生成单元21生成组准备信号。这里,组准备信号生成单元21的设置方式具体参见上述组准备信号生成单元21的描述,这里不再赘述。

在步骤S300和步骤S400中,通过同步信号生成单元22接收组准备信号,并且根据组准备信号生成组同步信号并发送给处理组10中的各个处理器101,当该处理组10中的各个处理器101接收到组同步信号时进入同步。这里,同步信号生成单元22的设置方式具体参见上述同步信号生成单元22的描述,这里不再赘述。

在一些示例中,将计算任务分配给处理组10中的各个处理器101,并且使用该处理组10中的各个处理器101进行运算。由此,处理组10中的各个处理器101能够在本地完成运算。

在一些示例中,当所述控制模块3控制所述寄存器以使该寄存器的标记位有效时,具有该寄存器的筛选器接收与该标记位对应的组准备信号生成单元所生成的组准备信号。由此,能够通过控制寄存器进而控制筛选器接收的组准备信号的有效性。

另外,在一些示例中,本公开还提供一种计算设备,该计算设备包括处理器和存储器,该处理器执行所述存储器存储的计算机指令,使得所述计算设备执行上述本公开所描述的并行控制方法。

另外,在一些示例中,本公开还提供一种计算机可读存储介质,其存储有计算机程序,并且当该计算机程序被处理器执行时实现上述本公开所描述的同步并行控制方法的步骤。

此外,在一些示例中,本公开还提供一种计算机程序产品,其包括计算机指令,当该计算机指令被计算设备执行时,所述计算设备可以执行上述本公开所描述的同步并行控制方法。

在上述示例中,对各个示例的描述都各有侧重,某个示例中没有详述的部分,可以参见其它示例的相关描述。

需要说明的是,对于前述的各方法示例,为了简单描述,有时将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤有可能采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的示例均属于优选的例子,所涉及的动作和模块并不一定是本申请所必须的。

在本申请所提供的几个示例中,应该理解到,所公开的装置,可通过其它的方式来实现。例如,以上所描述的装置示例仅仅是示意性的,例如上述单元的划分,也仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本示例方案的目的。

另外,在本申请各示例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

相关技术
  • 多核架构的同步信号产生电路、芯片和同步方法及装置
  • 一种Lockstep架构下的节点间信号同步方法、装置及电路
技术分类

06120112390387