一种内嵌fpga的众核架构及其数据处理方法
技术领域
本发明涉及众核架构
技术领域
,具体而言,涉及一种内嵌FPGA的众核架构及其数据处理方法。背景技术
现有的众核架构在遇到不支持的算法或运算指令时,通常是将数据传送到芯片外的CPU进行处理,待CPU处理完成后,再将结果返回芯片的核内继续下一个算法或运算指令的运算。这种方式会在取指和译码等方面耗费大量的时间。
发明内容
为解决上述问题,本发明的目的在于提供一种内嵌FPGA的众核架构及其数据处理方法,能够节省处理时间,提高运算效率。
本发明提供了一种内嵌FPGA的众核架构,包括:众核阵列,所述众核阵列包括多个计算核和至少一个集成FPGA的处理核,所述处理核与所述多个计算核设置同步时钟,所述处理核与其相邻的计算核通过核间路由进行通信。
作为本发明进一步的改进,所述计算核包括AI计算单元、存储单元和路由,所述处理核包括FPGA计算单元、存储单元和路由,所述处理核与所述多个计算核的存储单元和路由配置相同。
作为本发明进一步的改进,所述计算核包括AI计算单元、存储单元和路由,所述处理核包括FPGA计算单元、存储单元和路由,所述处理核与所述多个计算核的存储单元的存储容量不同。
作为本发明进一步的改进,所述众核阵列为二维矩阵网络、二维环形网络、二维星形网络或三维层级网络。
作为本发明进一步的改进,所述众核阵列为二维矩阵网络,至少一个所述处理核设置于所述众核阵列的边角处,所述处理核通过两条核间路由路径与其相邻的两个计算核进行通信。
作为本发明进一步的改进,所述众核架构包括多个处理核,所述多个处理核对称设置于所述众核阵列的边角处。
作为本发明进一步的改进,所述众核阵列为二维矩阵网络,至少一个所述处理核设置于所述众核阵列的内部,所述处理核通过四条核间路由路径与其相邻的四个计算核进行通信。
作为本发明进一步的改进,所述众核架构包括多个处理核,所述多个处理核对称设置于所述众核阵列的内部的对角线上。
本发明还提供了一种内嵌FPGA的众核架构的数据处理方法,采用所述的一种内嵌FPGA的众核架构,所述数据处理方法包括:当前计算核无法处理的计算数据通过核间路由从当前计算核传输至至少一个处理核中进行运算。
作为本发明进一步的改进,当前计算核无法处理的计算数据通过核间路由从当前计算核传输至至少一个所述处理核中的FPGA计算单元进行运算,所述FPGA计算单元运算完毕后,将运算结果通过核间路由传输至下一个计算核继续运算。
作为本发明进一步的改进,将单个运算任务切分成若干个子运算任务,并将所述若干个子运算任务分配至至少一个所述处理核与所述多个计算核中级进行处理;
t-1时刻,核a处理对应的子运算任务,并将处理得到的数据传输至核b;
t时刻,核b接收所述核a传输的数据并继续处理,并将处理得到的数据传输至核c;
t+1时刻,核c接收所述核b传输的数据并继续处理,并将处理得到的数据传输至其他核继续处理;
如此,在时间轴上,至少一个所述处理核与所述多个计算核流水线处理各自的子运算任务,其中,所述核a、所述核b、所述核c和所述其他核为至少一个所述处理核与所述多个计算核中的其中一核;
在同一时刻,至少一个所述处理核与所述多个计算核并行处理各自的子运算任务。
作为本发明进一步的改进,当前计算核无法处理的对应子运算任务的计算数据通过核间路由由当前计算核传输至所述处理核进行处理。
作为本发明进一步的改进,通过核间路由寻找距离当前在计算核最近的处理核,并将当前计算核无法处理的子运算任务的计算数据传输至该处理核中的FPGA计算单元进行运算,FPGA计算单元运算完毕后,将运算结果通过核间路由传输至下一个计算核继续运算。
作为本发明进一步的改进,通过核间路由分别寻找距离当前计算核最近的多个处理核,并将当前计算核无法处理的多个子运算任务的计算数据分别传输至各处理核中的FPGA计算单元进行运算,各FPGA计算单元运算完毕后,分别将运算结果通过核间路由传输至下一个计算核继续运算。
本发明还提供了一种众核芯片,包括所述的一种内嵌FPGA的众核架构。
作为本发明进一步的改进,众核芯片包括所述内嵌FPGA的众核架构、片内处理器、PCle控制器、DMA、通用接口、DDR控制器,所述内嵌FPGA的众核架构、所述片内处理器、所述PCle控制器、所述DMA、所述通用接口和所述DDR控制器通过总线进行通信。
本发明还提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被处理器执行以实现所述的一种内嵌FPGA的众核架构的数据处理方法。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现所述的一种内嵌FPGA的众核架构的数据处理方法。
本发明的有益效果为:
将FPGA集成在AI众核芯片之内,节省了处理时间,提高了运算效率。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一示例性实施例所述的一种包含内嵌FPGA的众核架构的众核芯片的原理框图;
图2为本公开一示例性实施例所述的一种内嵌FPGA的众核架构且FPGA集成于众核阵列边角处的示意图;
图3为本公开一示例性实施例所述的一种内嵌FPGA的众核架构且FPGA集成于众核阵列内部的示意图;
图4为本公开一示例性实施例所述的一种内嵌FPGA的众核架构运行时的数据处理示意图;
图5为本公开一示例性实施例所述的一种内嵌FPGA的众核架构运行时的时序示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明,若本公开实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,在本公开的描述中,所用术语仅用于说明目的,并非旨在限制本公开的范围。术语“包括”和/或“包含”用于指定所述元件、步骤、操作和/或组件的存在,但并不排除存在或添加一个或多个其他元件、步骤、操作和/或组件的情况。术语“第一”、“第二”等可能用于描述各种元件,不代表顺序,且不对这些元件起限定作用。此外,在本公开的描述中,除非另有说明,“多个”的含义是两个及两个以上。这些术语仅用于区分一个元素和另一个元素。结合以下附图,这些和/或其他方面变得显而易见,并且,本领域普通技术人员更容易理解关于本公开所述实施例的说明。附图仅出于说明的目的用来描绘本公开所述实施例。本领域技术人员将很容易地从以下说明中认识到,在不背离本公开所述原理的情况下,可以采用本公开所示结构和方法的替代实施例。
AI芯片是专门用于处理人工智能应用中的大量计算任务的模块,传统的CPU、GPU不是为AI算法设计的,无法达到最优的性价比。APU(AI Processing Unit)是众核架构的类脑芯片,它支持深度学习至关重要的并行计算能力,比传统处理器更加快速,大大加快了训练及推理过程。但是,APU应用于深度学习算法时有一定的局限性,其硬件结构对原语和指令的支持相对较弱。当遇到不支持的算法或运算指令时,需要将数据传送到片外的CPU进行处理,CPU处理完成后,再将结果返回至芯片的核内,继续下一个算法或运算指令的运算。CPU虽然拥有巨大的灵活性和覆盖性,但CPU采用取指、译码等方面也需耗费大量的时间。
本公开实施所述的一种内嵌FPGA的众核架构,包括:众核阵列,众核阵列包括多个计算核和至少一个集成FPGA的处理核,处理核与多个计算核设置同步时钟,处理核与其相邻的计算核通过核间路由进行通信。如图1所示,本公开实施例的一种内嵌FPGA的众核架构,将FPGA集成在AI计算核阵列中,通过AI计算核阵列的片间路由进行对外的通信。CPU/ARM/MCU等控制模块可以在初始化的时候对FPGA进行配置。通过FPGA实现预编译,当AI计算核阵列进行运算时,CPU和ARM无需对FPGA的数据或指令进行调度,可以形成流水式数据处理模式,降低处理延迟,提升处理效率。
本公开实施所述的一种内嵌FPGA的众核架构,利用FPGA将任务预编译后再高速处理的优势,解决了取指、译码等方面大量耗时的问题。本公开实施所述的一种内嵌FPGA的众核架构,相较于FPGA集成于芯片外部的众核架构,解决了FPGA集成于芯片外部所导致的片间通信传输产生额外能耗的问题,以及FPGA集成于芯片外部所导致的对FPGA进行任务调度时打断数据流水处理造成总体性能下降的问题。
本公开实施例所述的一种内嵌FPGA的众核架构,解决了通过总线对FPGA进行任务调度时打断数据流水处理造成总体性能下降的问题,也相应减少了片内CPU的开销。
本公开实施例所述的一种内嵌FPGA的众核架构,只需在现有的片上网络结构中增加节点的类型即可支持新增的内嵌FPGA的处理核。新增的内嵌FPGA的处理核也可以当做普通计算核使用,因此无需修改上层已经调通的软件和各种应用。当遇到复杂逻辑控制运算时,调用内嵌FPGA的处理核来完成相应逻辑运算,在一个众核阵列中设计多个内嵌FPGA的处理核时可以支持多种小网络同时进行逻辑控制。
在一种可实现的实施方式中,计算核包括AI计算单元、存储单元和路由,处理核包括FPGA计算单元、存储单元和路由,处理核与多个计算核的存储单元和路由配置相同。例如,处理核与多个计算核的存储单元的存储容量可以相同。将计算核与处理核设计成同等定位的模块进行集成,拥有相同的时序控制和通信模式,形成类同构的二维网格的阵列集成架构。
在一种可实现的实施方式中,处理核与多个计算核的存储单元的配置可以不同,例如,处理核与多个计算核的存储单元的存储容量还可以不相同。其中,可以是各核(包括处理核与多个计算核)的存储单元的存储容量皆不同,也可以是各核的存储容量不完全相同,本公开对处理核与多个计算核的存储单元的存储容量大小、是否相同不做限制。
在一种可实现的实施方式中,众核阵列为二维矩阵网络、二维环形网络、二维星形网络或三维层级网络。对于众核阵列网络结构的选取可以根据芯片的功能和需求等进行选择设计。而至于内嵌FPGA的处理核的数量可以根据芯片所要完成的功能进行适应性设计,当逻辑运算和判断指令的处理量较小时,可以仅在片内众核阵列中集成一个FPGA的处理核,而当逻辑运算和判断指令的处理量大时,则可以适当增加内嵌FPGA的处理核的数量。另外,在一个众核阵列中设计多个集成FPGA的处理核,可以支持多个小网络的同时运算,提高运算速度。
在一种优选的实施方式中,将众核阵列设计为二维方形网络,对称结构的设计使数据的传输、处理和芯片功耗散热等更为优化,提高芯片整体的性能。
至于内嵌FPGA的处理核在众核阵列中的位置,可以根据计算数据的指定输入计算核的位置来确定其最佳位置,以实现快速寻找到距离该计算核最近的内嵌FPGA的处理核,从而提高芯片的整体运算速率。
在一种可实现的实施方式中,如图2所示,众核阵列选取二维矩阵网络,至少一个内嵌FPGA的处理核设置于众核阵列的边角处,处理核通过两条核间路由路径与其相邻的两个计算核进行通信。
在一种可实现的实施方式中,众核架构包括多个处理核,可以将多个处理核也即偶数个处理核对称设置于众核阵列的边角处。这种处理核对称设置的方式适用于二维矩阵网络,尤其是二维方形网络。每增加一个处理核,能相应的增加芯片逻辑运算和判断指令的处理能力。例如,可以将2个处理核对称设置于众核阵列的斜对角,一个设置于众核阵列的左上角,另一个设置于众核阵列的右下角。也可以将2个处理核对称设置于众核阵列的右上角和左下角。在众核阵列斜对角设计2个内嵌FPGA的处理核,一方面能增加逻辑运算和判断指令的处理能力,另一方面对称的设计也能减少数据从计算核传输至处理核的时间,提高运算的实时性。还可以将4个处理核设置于众核阵列的4个边角处。每个边角处都设置一个处理核,一般针对逻辑运算和判断指令处理量较多的情形,将4个处理核设置于4个边角处,在增加逻辑运算和判断指令能力的同时,减少了数据从计算核传输至处理核的时间。在具体设计时,需要综合考虑芯片的面积、功能和能耗等,对处理核的数量和位置进行适应性的设计。
在一种可实现的实施方式中,如图3所示,众核阵列为二维矩阵网络,至少一个处理核设置于众核阵列的内部,处理核通过四条核间路由路径与其相邻的四个计算核进行通信。
在一种可实现的实施方式中,众核架构包括多个处理核,可以将多个处理核对称设置于众核阵列的内部的对角线上。这种处理核对称于众核阵列内部对角线的方式尤其适用于二维方形网络。每增加一个处理核,能相应的增加芯片逻辑运算和判断指令的处理能力。在众核阵列内部对角线的设计多个内嵌FPGA的处理核,一方面能增加逻辑运算和判断指令的处理能力,另一方面对称的设计也能减少数据从计算核传输至处理核的时间,提高运算的实时性。例如,对于二维4*4的网络,可以在众核阵列的第二行第二列和第三行第三列各设置一个内嵌FPGA的处理核。例如,也可以在众核阵列的第二行第三列和第三行第二列各设置一个内嵌FPGA的处理核。例如,也可以在众核阵列的第二行第二列、第二行第三列、第三行第二列和第三行第三列都设置一个处理核,这种一般针对逻辑运算和判断指令处理量较多的情形,将4个处理核设置于众核阵列内部,是在增加逻辑运算和判断指令能力的同时,减少了数据从计算核传输至处理核的时间。在具体设计时,需要综合考虑芯片的面积、功能和能耗等,对处理核的数量和位置进行适应性的设计。
本公开实施例所述的一种内嵌FPGA的众核架构的数据处理方法,采用前述实施方式中的一种内嵌FPGA的众核架构,计算数据通过核间路由从计算核传输至至少一个处理核中进行运算。如图4所示,当前计算核遇到不支持的运算指令(例如复杂的逻辑控制和判断指令等)时,当前计算核无法处理的计算数据通过核间路由从当前计算核传输至至少一个处理核中的FPGA计算单元进行运算,FPGA计算单元运算完毕后,将运算结果通过核间路由传输至下一个计算核继续运算。
在一种可实现的实施方式中,如图5所示,本公开的一种内嵌FPGA的众核架构在数据处理时,将单个运算任务切分成若干个子运算任务,若干个子运算任务被分配在至少一个处理核与多个计算核中进行处理。
t-1时刻,核a处理对应的子运算任务,并将处理得到的数据传输至核b;t时刻,核b接收所述核a传输的数据并继续处理,并将处理得到的数据传输至核c;t+1时刻,核c接收所述核b传输的数据并继续处理,并将处理得到的数据传输至其他核继续处理;如此,在时间轴上,至少一个处理核与多个计算核流水线处理各自的子运算任务,其中,核a、核b、核c和其他核为至少一个处理核与多个计算核中的其中一核。其中,t为大于等于1的整数,0时刻为开始运算的时刻。
例如,如图5所示,在整个时间轴上,APU核1将T1时间段内处理得到的数据传输到APU核5(计算核5)在T2时间段内进行处理,同时APU核1(计算核1)继续处理T2时间段内的数据,并将T2时间段内处理得到的数据传输给APU核5在T3时间段内进行处理,同时APU核1继续处理T3时间段内的数据,并将T3时间段内处理得到的数据传输给APU核5在T4时间段内进行处理,……,
APU核5在T2时间段内处理APU核1在T1时间段内处理得到的数据,并将T2时间段内处理得到的数据传输至FPGA核8(处理核)在T3时间段内进行处理,同时APU核5继续在T3时间段内处理APU核1在T2时间段内处理得到的数据,并将T3时间段内处理得到的数据传输至FPGA核8在T4时间段内进行处理,同时APU核5继续在T4时间段内处理APU核1在T3时间段内处理得到的数据,……,
FPGA核8在T3时间段内处理APU核5在T2时间段内处理得到的数据,并将T3时间段内处理得到的数据传输至APU核3在T4时间段内进行处理,同时FPGA核8在T4时间段内处理APU核5在T3时间段内处理得到的数据,……,
如此,在时间轴上则形成流水式处理模式。
另外,在同一时刻,至少一个处理核与多个计算核并行处理各自的子运算任务。
例如,如图5所示,在T6时间段,APU核1(计算核1)、APU核5(计算核5)、APU核3(计算核3)、APU核6(计算核6)均各自处理相应的计算子任务,而FPGA核8(处理核)处理相应的逻辑控制和判断指令子任务。
在这种流水线处理模式下,众核间的数据传输和运行不需要片上CPU的干预和调度,降低了处理延迟,提升了处理效率。FPGA可处理APU核所不能处理或低效处理的算法以及逻辑控制和判断指令的处理等等,所有的传输和处理过程都在片上完成,可大大节省传输带宽,降低能耗,提高运算效率,加速神经网络的推理/训练流程。
在一种可实现的实施方式中,当众核阵列包括多个内嵌FPGA的处理核时,如果当前计算核遇到一个不支持的子运算任务,此时,可以通过核间路由寻找距离当前计算核最近的处理核,并将当前计算核无法处理的子运算任务的数据传输至该处理核中的FPGA计算单元进行运算,FPGA计算单元运算完毕后,将运算结果通过核间路由传输至下一个计算核继续运算。通过快速寻找距离该计算核最近的内嵌FPGA的处理核,提高了芯片的整体运算速率。
在一种可实现的实施方式中,当众核阵列包括多个内嵌FPGA的处理核时,如果当前计算核遇到多个不支持的子运算任务,此时,可以通过核间路由分别寻找距离当前计算核最近的多个处理核,并将当前计算核无法处理的多个子运算任务的计算数据分别传输至各处理核中的FPGA计算单元进行运算,各FPGA计算单元运算完毕后,分别将运算结果通过核间路由传输至下一个计算核继续运算。多个内嵌FPGA的处理核同时进行子运算任务的处理,大大提高了芯片的整体运算效率。
本公开还涉及一种众核芯片,包括本公开实施例所述的一种内嵌FPGA的众核架构。在一种可实施的方式中,如图2所示,众核芯片包括,内嵌FPGA的众核架构(例如AI计算核阵列)、片内处理器(例如CPU/ARM/MCU)、PCle控制器、DMA、通用接口(例如UART/I2C/SPI/GPIO等)、DDR控制器,所述内嵌FPGA的众核架构、所述片内处理器、所述PCle控制器、所述DMA、所述通用接口和所述DDR控制器通过总线进行通信。这种众核芯片一方面利用了FPGA的预编译后再高速处理的优势,可以解决取指译码等方面大量耗时的问题,在不改变现有片上网络结构的前提下,只需增加节点的类型,使得芯片在实现普通AI计算的同时还能支持各种复杂逻辑控制运算。另一方面,将FPGA集成于众核架构(AI计算核阵列)中,通过AI计算核阵列的片间路由进行对外的通信,减少芯片能耗。CPU/ARM/MCU等只在初始化的时候对FPGA进行配置。通过FPGA实现预编译,当AI计算核阵列进行运算时,CPU和ARM无需对FPGA的数据或指令进行调度,可以形成流水式数据处理模式,降低处理延迟,提升处理效率。
本公开实施例所述的众核芯片,可以应用于人工智能领域,通过在AI计算阵列中增加内嵌FPGA的处理核,可处理AI计算核所不能处理或低效处理的算法以及逻辑控制和判断指令的处理,可大大节省传输带宽,降低能耗,提高运算效率,加速神经网络的推理/训练流程。
本公开还涉及一种电子设备,包括服务器、终端等。该电子设备包括:至少一个处理器;与至少一个处理器通信连接的存储器;以及与存储介质通信连接的通信组件,通信组件在处理器的控制下接收和发送数据;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行以实现上述实施例中的内嵌FPGA的众核架构的数据处理方法。
在一种可选的实施方式中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述内嵌FPGA的众核架构的数据处理方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器中,当被一个或者多个处理器执行时,执行上述任意方法实施例中的内嵌FPGA的众核架构的数据处理方法。
上述产品可执行本申请实施例所提供的内嵌FPGA的众核架构的数据处理方法方法,具备执行方法相应的功能模块和有益效果,未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的内嵌FPGA的众核架构的数据处理方法。
本公开还涉及一种计算机可读存储介质,用于存储计算机可读程序,计算机可读程序用于供计算机执行上述部分或全部的内嵌FPGA的众核架构的数据处理方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
此外,本领域普通技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本领域技术人员应理解,尽管已经参考示例性实施例描述了本公开,但是在不脱离本公开的范围的情况下,可进行各种改变并可用等同物替换其元件。另外,在不脱离本公开的实质范围的情况下,可进行许多修改以使特定情况或材料适应本公开的教导。因此,本公开不限于所公开的特定实施例,而是本公开将包括落入所附权利要求范围内的所有实施例。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种集中式管理的框式交换机