集成电路装置、电子设备、板卡和计算方法与流程

文档序号:24743073发布日期:2021-04-20 22:21阅读:147来源:国知局
集成电路装置、电子设备、板卡和计算方法与流程

1.本披露一般地涉及数据处理领域。更具体地,本披露涉及一种集成电路装置、电子设备、板卡和计算方法。


背景技术:

2.随着人工智能领域的发展,大规模神经网络涉及的运算数据量越来越大,对存储量的要求越来越高,例如反向传播中的卷积权重梯度等运算。在现有运算方式中,通常利用中央处理器(“cpu”)或者图像处理单元(“gpu”)等处理器进行运算。然而,即使采用并行计算的方式,由于处理器受制于内部寄存器资源的容量限制,庞大的数据运算量可能会导致处理器与外部存储设备之间产生大量的数据交互。由于输入/输出(“i/o”)总线的带宽有限,由此可能会出现严重的i/o瓶颈问题,因此极大地降低了并行运算效率。另外,不仅i/o总线的带宽限制会成为性能的瓶颈,而且处理器与外部存储设备间大量的i/o访存量也会造成较大的计算和功耗开销。


技术实现要素:

3.为了解决在上文中所提到的技术问题,本披露提供一种可以减少与外部存储设备的数据传输量,最大程度地降低总线带宽限制带来的i/o瓶颈问题的解决方案。具体地,本披露在如下的多个方面中提供前述的解决方案。
4.在第一方面中,本披露公开了一种集成电路装置,包括:
5.数据接口,其配置用于在所述集成电路装置和外部存储器之间传递数据;以及
6.多个主计算单元,其中每个主计算单元配置成经由数据接口接收来自于所述外部存储器的第一数据,并且还配置成接收来自于互联的主计算单元的第二数据,以便利用接收到的所述第一数据和第二数据来执行与其关联的计算任务。
7.在第二方面中,本披露公开了一种电子设备,包括前述及其稍后描述的多个实施例的集成电路装置。
8.在第三方面中,本披露公开了一种板卡,包括前述及其稍后描述的多个实施例的集成电路装置。
9.在第四方面中,本披露公开了一种使用前述的集成电路装置来执行计算的方法,其中所述集成电路装置包括数据接口和多个主计算单元,所述数据接口用于在所述集成电路装置和外部存储器之间传递数据,所述方法包括在每个主计算单元处执行以下操作:
10.经由数据接口接收来自于所述外部存储器的第一数据;
11.接收来自于互联的主计算单元的第二数据;以及
12.根据接收到的所述第一数据和第二数据来执行关联的计算任务。
13.通过利用本披露的集成电路装置、电子设备、板卡和方法,可以充分利用内部资源,在主计算单元之间实现数据共用和传递,由此可以减少与外部存储器之间的i/o数据传输量,实现数据传送和计算方面的并行操作。另外,通过显著减少与外部存储器的数据交
互,本披露的方案还可以提升运算的执行效率,降低i/o带宽限制造成的运算性能瓶颈问题,从而可以提升集成电路装置、电子设备或板卡的整体性能。
附图说明
14.通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
15.图1是示出根据本披露实施例的集成电路装置的示意架构图;
16.图2是示出根据本披露实施例的主计算单元连接的示意图;
17.图3是示出根据本披露实施例的主计算单元的示意架构图;
18.图4是示出根据本披露实施例的主计算单元与其子计算单元的数据传送示意图;
19.图5是示出根据本披露实施例的主计算单元及其子计算单元所执行的流水操作示意图;
20.图6是示出根据本披露实施例的使用集成电路装置来执行计算方法的简化流程图;
21.图7是示出根据本披露实施例的一种组合处理装置的结构图;以及
22.图8是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
23.下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露公开的方案保护的范围。
24.下面结合附图来详细描述本披露的具体实施方式。
25.图1是示出根据本披露实施例的集成电路装置100的示意架构图。如图1所示,本披露提供的集成电路装置100可以包括数据接口102和多个主计算单元104。在一个实施例中,数据接口可以配置用于在所述集成电路装置100和外部存储器106之间传递数据。在一个应用场景中,可以使用直接存储器访问(direct memory access,“dma”)接口作为前述的数据接口,以便将外部存储器的数据发送至多个主计算单元,例如图中示例性明确示出的四个主计算单元和中间以黑点省略示出的一个或多个主计算单元。
26.在主计算单元接收数据(例如矩阵数据)的过程中,多个主计算单元中的每个主计算单元可以配置成经由数据接口102接收来自于所述外部存储器106的第一数据,并且每个主计算单元还可以配置成接收来自于与其互联的主计算单元的第二数据,以便每个主计算单元可以利用前述接收到的第一数据和第二数据来执行与其关联的计算任务。在一个实施例中,每个主计算单元向互联的主计算单元发送所述第一数据,以作为接收的主计算单元的第二数据。根据不同的数据结构(例如不同的数据摆放规则),本披露的第一数据和/或第二数据可以各自包括一个或多个数据块。在一个运算场景中,当本披露的集成电路装置用于矩阵计算时,第一数据和/或第二数据可以是矩阵中一定大小的分块,以用于矩阵的分块并行计算。
27.在一个实施例中,多个主计算单元可以依次连接并且形成闭合环路,并且相邻的主计算单元之间具有双向的通信连接108,以便接收来自于互联的主计算单元的第二数据。根据不同的运算场景,可以预先设置不同数目(例如图2中所示出的四个)的主计算单元进行连接,以形成双向传输的闭合环路。在一个实现场景中,闭合环路中的每个主计算单元可以与其互联的主计算单元通过两条dma总线进行通信连接,并且两条dma通信总线可以为全双工通信,并且带宽可达到例如128gb/s。基于前述的双向传输方式,本披露闭合环路中的多个主计算单元可以同时运行且并行执行各自关联的不同计算任务,例如各自的第一计算任务和第二计算任务。
28.具体地,在执行各自关联的计算任务的过程中,本披露的每个主计算单元可以通过接收外部存储器发送的数据作为其第一数据,并且通过接收相邻互联的主计算单元发送的数据,作为该主计算单元的第二数据。接着,每个主计算单元可以利用所述第一数据以完成第一计算任务和利用所述第二数据以完成第二计算任务。在一些运算场景中,每个主计算单元还可以根据所述第一计算任务的计算结果和所述第二计算任务的计算结果来执行计算,以获得与其关联的所述计算任务的计算结果。在这样的情形中,第一和第二计算任务的计算结果可以分别视为第一和第二中间结果,并且通过对第一和第二中间结果来执行进一步的计算(例如求和操作),从而可以获得该主计算单元执行此次计算任务的最终结果。
29.在一个运算场景中,本披露的主计算单元可以对接收到的第一数据和第二数据执行人工智能领域(例如神经网络)中所涉及的卷积运算。为了更好地理解本披露的主计算单元如何执行卷积运算,下面以利用cannon算法来执行卷积运算为例示例性说明本公开的方案。
30.假定神经网络将在两个输入数据ina和inb(二者可以为多维矩阵的数据类型)之间执行卷积运算以获得卷积结果,并且假定ina和inb二者都存储于外部存储器例如外部存储器106。进一步,假定本披露的集成电路装置包括如图2中所示的四个主计算单元,并且将利用cannon算法来执行卷积运算。为此,本披露提出可以根据cannon算法将输入数据ina和inb分别划分成与主计算单元数目相同的四个矩阵分块。例如,可以将ina划分成ina1、ina2、ina3和ina4,将inb划分成inb1、inb2、inb3和inb4,并且预先存储在外部存储器中。
31.接着,在执行运算的初始阶段,外部存储器可以将两个输入数据ina和inb的第一矩阵分块(ina1和inb1)经由数据接口发送至第一主计算单元,作为该第一主计算单元接收的第一数据。接着,经由数据接口将第二矩阵分块(ina2和inb2)发送至第二主计算单元,作为该第二主计算单元的第一数据。以此类推,外部存储器可以将最后的第四矩阵分块(ina4和inb4)经由数据接口发送至对应的第四主计算单元,以作为其第一数据。如前所述,在获得第一数据后,各个主计算单元可以执行针对于第一数据的各自第一计算任务。如前所述,针对于第二计算任务所需的第二数据,各个主计算单元可以从与其互联的主计算单元接收,即作为发送方的主计算单元发送的第一数据(或其一部分)将作为接收方的主计算单元的第二数据(或其一部分),以便每个主计算单元完成各自对应的第二计算任务。接着,可以对第一和第二计算任务的中间结果进行求和,从而获得主计算单元执行卷积运算的运算结果。在一个实施例中,基于cannon算法中矩阵运算的规则,运算结果可以以输出矩阵的形式给出,并且该矩阵也可以划分成与主计算单元数目相同的多个矩阵分块。鉴于此,本领域技术人员可以理解此处示例的四个主计算单元的每个可以负责执行针对于输出矩阵中对应
一个矩阵分块的运算。
32.上文结合图1对本披露的集成电路装置的架构和功能进行了描述。根据本披露的方案,可以利用多个主计算单元之间的互联架构来彼此传递部分运算数据,从而显著减少了通过i/o总线与外部存储器进行数据交互的数据吞吐量并且克服了i/o总线带宽的瓶颈问题。另外,这样的架构和数据传输方式也充分利用了主计算单元之间片上的高速带宽,从而提升了数据传输的运行效率。另外,在一些实施例中,本披露的方案还可以根据运算场景,灵活地预先设置形成闭合环路的主计算单元的数目,以便充分利用内部资源和并行流水运算操作,从而显著提高运算的效率。下面将结合图2对四个主计算单元形成闭合环路以执行计算任务做出示例性描述。
33.图2是示出根据本披露实施例的主计算单元连接的示意图。为了便于理解多个主计算单元中的每个关联的计算任务及其数据传输关系,在图2的右侧对应地示出待运算的两个输入矩阵及其计算结果的矩阵分块。
34.如图2的左侧所示,四个主计算单元(每个即为图1中的主计算单元104)以顺时针方向顺序编号为主计算单元0、主计算单元1、主计算单元2和主计算单元3,并且已经连接形成闭合环路。具体地,相邻的两个主计算单元0与主计算单元1之间具有双向的通信连接,例如主计算单元间可以通过dma进行双向通信。类似地,相邻的主计算单元1和2之间、主计算单元2和3之间、以及主计算单元3和0之间分别具有两条双向的通信连接。另外,每个主计算单元也可以经由数据接口分别与外部存储器(图中虚框示出)进行通信连接,以获得各自执行计算任务所需的数据。
35.下面结合图2右侧所示内容,以神经网络中的卷积权重梯度的计算过程为例来说明每个主计算单元执行计算任务的过程。如本领域技术人员所知,计算所获得的卷积权重梯度可以用于在神经网络反向传播过程中对前向传播中的卷积结果的梯度进行更新。在一个运算场景中,卷积权重梯度计算相当于卷积结果梯度(当为四维矩阵时,其维度可以表示为如图中所示的nihiwici)与卷积输入(当为四维矩阵时,其维度表示为如图中所示的nohowoco)的乘积累加计算。这里,n表示样本数,h表示矩阵高度,w表示矩阵宽度,c表示通道数。进一步,根据矩阵乘的运算规则,输入矩阵“卷积结果梯度”可以表示为ci*nihiwi,而输入矩阵“卷积输入”可以表示为nohowo*co,二者在nihiwi和nohowo方向上做卷积权重梯度计算(例如乘加运算),最终获得的输出矩阵“卷积权重梯度”可以表示为kh*kw*ci*co(其中,kh表示输出矩阵的高度,kw表示输出矩阵的宽度,ci表示输入矩阵“卷积结果梯度”的通道数,co表示输入矩阵“卷积输入”的通道数)。为了简明的目的,图中仅示出ci*co方向上的卷积权重梯度计算。
36.基于上述的示例性数据摆放规则和闭合成环的四个主计算单元的构架,可以将存储在外部存储器中的两个输入矩阵“卷积结果梯度”和“卷积输入”分别划分成四个矩阵分块。为了简化的目的,假设输入矩阵“卷积结果梯度”划分的四个矩阵分块为如图2右侧所示的a00、a01、a10和a11。而输入矩阵“卷积输入”划分的四个矩阵分块为如图2右侧所示的b00、b01、b10和b11。相应地,输出矩阵“卷积权重梯度”也可以划分成四个矩阵分块c00、c01、c10和c11。
37.基于上述的数据分块,各个主计算单元可以分别执行下面的算式(1)至(4),以便计算获得各自对应的卷积权重梯度c00、c01、c11和c10(如图2右侧所示):
38.c00=a00*b00+a01*b10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
39.c01=a00*b01+a01*b11
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
40.c11=a10*b01+a11*b11
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
41.c10=a10*b00+a11*b10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
42.具体来说,本披露的方案可以将图2示出的四个主计算单元0、1、2和3分别用于执行对应上述式(1)至(4)中的计算任务,以分别获得c00、c01、c11和c10。在利用cannon算法执行上述矩阵分块计算的运算场景中,可以根据cannon算法的规则将如图2右侧示例中的输入矩阵“卷积结果梯度”的a10和a11进行位置交换,输入矩阵“卷积输入”的b01和b11进行位置交换。
43.如前文所述,每个主计算单元可以从外部存储器接收第一数据并且执行对应的计算。例如,主计算单元0经由数据接口接收来自于外部存储器的第一数据,即如右图示出的两个输入矩阵“卷积结果梯度”和“卷积输入”的a00和b00分块,并且根据式(1)执行其第一计算任务(a00*b00)。类似地,主计算单元1经由数据接口接收其第一数据(a01和b11),并且根据式(2)执行其第一计算任务(a01*b11)。同样地,主计算单元2和3经由数据接口分别接收各自的第一数据(a10和b01)和(a11和b10),并且根据式(3)和(4)分别执行各自的第一计算任务(a10*b01)和(a11*b10)。
44.在每个主计算单元完成第一数据的接收后,其还可以在执行第一数据的计算任务期间接收来自于互联的主计算单元的第二数据。在一个实施例中,在形成闭合环路中的每个主计算单元可以利用双向的通信连接分别向相邻的主计算单元发送所述第一数据的相应部分,以作为所述相邻的主计算单元的第二数据的相应部分。
45.如前所述,c00为主计算单元0的计算任务,并且根据式(1)可知,c00的第二数据为a01和b10。进一步,从图2中可以看出,与主计算单元0相邻的主计算单元1可以将其第一数据中的a01发送给主计算单元0;与主计算单元0相邻的主计算单元3可以将其第一数据中的b10发送给主计算单元0。由此,主计算单元0可以通过接收与其相邻的主计算单元1和3的数据,而完成其第二数据的接收。类似地,主计算单元1、2与3也可以利用双向的通信连接接收相邻主计算单元发送的数据,以完成各自第二数据的接收。由此,主计算单元1、2与3分别接收到的第二数据为(a00和b01)、(a11和b11)与(a10和b00)。接着,每个主计算单元可以根据式(1)至(4)执行各自的第二计算任务,并且通过将第一计算任务和第二计算任务的中间结果进行求和来获得每个主计算单元各自关联的计算任务的计算结果,即本例中的卷积权重梯度c00、c01、c11和c10。
46.利用本披露的方案,每个主计算单元只需从外部存储器接收部分数据,而另一部分数据的接收则更好地利用了主计算单元之间的高速通信总线进行数据交换。因此,本披露的方案减少了主计算单元与外部存储器的数据交互,从而降低了i/o的数据传输量,并且由此克服了由于带宽限制引起的i/o瓶颈。需要注意的是,图2中所示出的四个主计算单元形成闭合环路仅仅是示例性的而非限制性的。本领域技术人员根据具体的应用场景,也可以预先布置其他合适数目的主计算单元并且形成闭合环路,以执行相应的计算。
47.图3是示出根据本披露实施例的主计算单元的示意架构图。如图3所示,主计算单元104可以包括存储单元302和多个子计算单元304。
48.在一个实施例中,存储单元302可以经由所述数据接口从所述外部存储器获取该
主计算单元的所述第一数据,并且还配置成经由所述双向的通信连接将第一数据向与其相邻的主计算单元发送,以作为接收的主计算单元的第二数据的相应部分。在一个运算场景中,每个主计算单元的存储单元还可以根据cannon算法接收所述第一数据和第二数据,以便所述主计算单元根据cannon算法来执行关联的计算任务。
49.如前所述,在获得第一数据和第二数据后,每个主计算单元104可以利用第一数据以获得第一计算任务的计算结果,并且利用第二数据以获得第二计算任务的计算结果。当前述的两个计算结果视为中间结果时,该主计算单元的存储单元可以存储上述两个计算结果来执行进一步的计算操作,以获得该主计算单元关联计算任务的最终计算结果。例如,结合图2描述的主计算单元0,其关联的计算任务为c00。根据式(1)可知,c00的第一计算任务为(a00*b00),而第二计算任务为(a01*b10)。在一些场景中,主计算单元0的存储单元可以存储前述两个计算任务的计算结果,以用于后续的求和操作。附加地或可选地,主计算单元0也可以将执行两个计算任务获得的中间结果直接进行求和操作,并且将获得的结果存入到存储单元中,例如将计算结果c00进行存储。
50.在一个实施例中,每个主计算单元还可以包括如图3中所示的多个子计算单元304。基于这样的多个子计算单元设置,本披露的第一计算任务可以划分为与所述多个子计算单元中的每个相对应的第一计算子任务,并且所述第二计算任务同样地可以划分为所述多个子计算单元的每个相对应的第二计算子任务。由此,每个所述子计算单元既可以根据从所述存储单元读取的对应第一子数据(其可以是第一数据的一部分)来完成相对应的第一计算子任务,也可以根据从所述存储单元读取的对应第二子数据(其可以是第二数据的一部分)来完成相对应的第二计算子任务。与结合图2描述的示例性运算场景相类似,每个子计算单元也可以根据cannon算法来完成各自对应的计算子任务,具体计算过程在下面结合图4来描述。
51.图4是示出根据本披露实施例的主计算单元与其子计算单元的数据传输示意图。与图2所示类似,为了更好地理解多个子计算单元根据cannon算法来进行数据传输和执行计算子任务操作,在图4的右侧示出前文描述的卷积权重梯度计算中涉及主计算单元0根据cannon算法来执行其第一计算任务a00*b00。
52.如图4左侧的上图和下图所示,主计算单元0包括存储单元0和四个顺序编号为0、1、2和3共四个子计算单元(每个即图3中的子计算单元304)。每个子计算单元从存储单元0接收(或称加载)各自的第一子数据。在一个实施例中,第一子数据可以包括第一数据的一部分数据。具体地,图4左侧上图示出每个子计算单元从存储单元0接收各自的第一子数据,并且执行相应的运算以获得第一计算子任务的第一中间结果。图4下图示出每个子计算单元从存储单元0接收各自的第二子数据,并且执行相应的运算以获得第一计算子任务的第二中间结果。进一步,通过将第一中间结果和第二中间结果进行求和,从而获得针对于第一计算子任务的最终结果。
53.如图4右侧示例示出,利用前述存储于存储单元0中的第一数据“卷积结果梯度”a00(例如为四维矩阵,表示为ci*nihiwi)和“卷积输入”b00(例如为四维矩阵,表示为nohowo*co)作为两个输入数据,来执行主计算单元0的第一计算任务“卷积权重梯度”(a00*b00)(图中只简化示出了ci*co方向)。接着,根据cannon算法可以将a00划分成四个矩阵分块a00、a01、a10和a11,将b00划分成四个矩阵分块b00、b01、b10和b11,并且该八个矩阵分块
存储于存储单元0。相应地,根据cannon算法,输出矩阵(a00*b00)的结果c00也可以划分成四个分块c00、c01、c10和c11。进一步,根据cannon算法中矩阵乘的运算规则,可以通过下式(5)至(8)获得c00、c01、c11和c10:
54.c00=a00*b00+a01*b10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
55.c01=a00*b01+a01*b11
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
56.c11=a10*b01+a11*b11
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
57.c10=a10*b00+a11*b10
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
58.根据本披露的方案,可以令图4所示出的四个子计算单元0、1、2和3分别执行上式(5)至(8)中的计算,即分别执行各自的第一子计算任务以得到对应的c00、c01、c11和c10。以获得c00的第一计算子任务为例,执行该第一计算子任务的子计算单元0的第一子数据为(或者说包括)a00、b00、a01和b10。同样地,对于获得c11的第一计算子任务来说,执行该第一计算子任务的子计算单元2的第一子数据为a10、b01、a11和b11。
59.与结合图2所做描述类似,在利用cannon算法进行计算时,可以将如图4右侧所示的“卷积结果梯度”a00的a10和a11进行位置交换,并且将“卷积输入”b00的b01和b11进行位置交换。由此,执行获得c01的第一计算子任务的子计算单元1的第一子数据为a00、b01、a01和b11,而执行获得c10的第一计算子任务的子计算单元3的第一子数据为a10、b00、a11和b10。
60.如图4左侧上图所示,四个子计算单元中的每个都可以从存储单元接收各自的第一子数据。以子计算单元0为例,其可以从存储单元加载其第一子数据中的(a00和b00)部分以执行(a00*b00)的计算。接着,如图4左侧下图所示,子计算单元0可以从存储单元接着加载其第一子数据中的(a01和b10)部分以执行(a01*b10)的计算。最后,再将(a00*b00)和(a01*b10)的计算结果相加后,子计算单元0完成其第一子计算任务。对于子计算单元1、2和3,其也执行类似于子计算单元0的操作,从而完成各自的第一子计算任务。
61.基于前述结合图2和图4的描述,本领域技术人员将理解到,主计算单元0的第一计算任务(a00*b00)执行每个计算子任务获得的计算结果只是中间结果。因此,还需要进一步完成第二计算任务(a01*b10)所对应的多个第二计算子任务,从而可以获得如图2示出的主计算单元0关联计算任务c00的最终计算结果。具体来说,子计算单元0例如可以根据式(5)执行第一计算任务(a00*b00)对应的第一计算子任务,并且将获得的c00作为第一子c001。接着,利用子计算单元0执行c00的第二计算任务(a01*b10)中对应的第二计算子任务,以获得第二子c002。最后。可以将两个子c001和c002进行求和操作,从而获得输出矩阵分块c00中的矩阵分块c00。考虑到算式(5)右侧包括两部分的加法操作并且由此c002由二个中间结果相加获得,因此c001也可以与c002的第一中间结果和第二中间结果顺序相加,从而获得矩阵分块c00。具体操作将稍后参考图5中第6和第7时间片的计算操作列来描述。
62.执行与子计算单元0相类似的操作,子计算单元1、2和3也可以分别获得c00中的矩阵分块c01、c11和c10,从而如图4右侧所示出的四个矩阵分块c00、c01、c11和c10构成主计算单元0执行第一和第二计算任务所获得的输出矩阵分块c00。由于每个子计算单元的中间计算结果(例如c00、c01、c11和c10)也可以存储于对应的主计算单元的存储单元中而无需存储于外部存储器。由此,本披露的方案可以减少与外部存储器之间的数据交换,从而降低了由于外部带宽限制而导致的i/o瓶颈。
63.进一步,根据上文的描述,本领域技术人员可以理解图4左侧图中示出的主计算单元包括四个子计算单元仅仅是示例性的而非限制性的。根据不同的应用场景,本领域技术人员基于本披露的教导可以预先设置不同数目的子计算单元,或者启用或禁用不同数目的子计算单元,以便来执行例如cannon算法的计算。
64.图5是示出根据本披露实施例的主计算单元及其子计算单元所执行的流水操作示意图。特别地,图5以图4示出的主计算单元0及其子计算单元0执行卷积运算为例,按时间顺序示出主计算单元0、子计算单元0、外部存储器和存储单元0之间的数据传输和具体的操作(包括例如数据加载和计算操作)。
65.具体地,图5以行的形式示出从第1时间片起到第8个时间片结束期间,主计算单元0及其子计算单元0在各个时间片内执行相应的数据接收、发送、加载或计算,从而最终获得关于卷积权重梯度的输出矩阵分块c00中的矩阵分块c00的流水操作。进一步,以列的形式示出在每个时间片内执行的四类操作。如图中所示,第1列表示从外部存储器(例如经由ddr)加载数据的操作,例如从其接收本披露所讨论的第一数据;第2列表示主计算单元间的数据传递,例如主计算单元0的存储单元0向相邻的主计算单元1和3发送其第一数据,并且从主计算单元1和3接收它们的第一数据以作为主计算单元0的第二数据;第3列表示子计算单元0的数据加载;第4列表示子计算单元0内执行的计算操作。根据前述的时间片和操作划分,主计算单元0在相应的时间片执行对应的操作。例如,在第1时间内片,主计算单元0的存储单元0仅执行从外部存储器(即“片外”)接收b00的操作。又例如,在第2时间片内,主计算单元的存储单元0执行从外部存储器接收a00而子计算单元0执行从存储单元0加载b00中的b00的操作。
66.为了高效地利用片上的i/o和计算资源,本披露的片上操作可以是乒乓流水操作。具体来说,根据本披露的方案,可以对片上存储资源进行乒(“ping”)和乓(“pong”)两部分的划分。在一个实施例中,当ping存储资源在用于加载数据时,pong存储资源用于进行计算;相反,当ping存储资源在用于计算时,pong存储资源用于加载数据。基于这样的资源分配,本披露的主计算单元可以执行并行的乒乓流水操作。
67.从图中可以看出,在第1时间片中,主计算单元0从外部存储器加载b00,并且存储于存储单元0的乒部分。在第2时间片中,主计算单元0从外部存储器加载a00,并且存储于存储单元0的乒部分。同时,并行地可以加载b00的b00至子计算单元0。在第3时间片中,可以加载a00的a00至子计算单元0。另外,在第3和第4时间片期间,主计算单元0发送a00至互联的主计算单元1,发送b00至互联的主计算单元3。同时,接收来自于主计算单元1的a01和来自于主计算单元3的b10。
68.在第4时间片的数据加载列中,可以加载b00的b10和a00的a10至子计算单元0;同时,在该第4时间片的计算操作列中,计算a00和b00的a00*b00以获得中间计算结果。在第5时间片的数据加载列中,可以加载b10的b00和a01的a00至子计算单元0;同时,在该第5时间片的计算操作列中,计算a00和b00的a01*b10以获得中间计算结果,并且将该中间结果与上一时间片的中间计算结果进行累加,以获得第5时间片处的计算结果。在第6时间片的数据加载列中,可以加载b10的b10和a01的a01至子计算单元0;同时,在第6时间片的计算操作列中,计算a01和b10的a00*b00以获得中间计算结果,并且将该中间计算结果与上一时间片的中间计算结果进行累加,以获得第6时间片的计算结果。在第7时间片的计算操作列中,计算
a01和b10的a01*b10以获得中间计算结果,并且将该中间计算结果与上一时间片的中间计算结果进行累加,以获得输出矩阵分块c00的矩阵分块c00。
69.在上述第3~第7时间片内执行数据加载和计算的期间,前述片上存储资源的乓部分用于从外部存储器接收下一组b00(b00')和a00(a00')以用于主计算单元0执行其第一计算任务。接着,从第8个时间片开始,子计算单元0将上一片计算输出的c00的c00发送至存储单元0。同时加载下一组b00'的b00和a00'的a00至子计算单元0,以便在下一时间片进行计算(未示出)。
70.类似地,主计算单元0的子计算单元1、2和3,以及不同主计算单元及其子计算单元也执行上述8个时间片的类似操作,以获得各自输出矩阵的对应矩阵分块。由于输入矩阵“卷积结果梯度”和“卷积输入”可以是多维结构,因此可以先计算nhw三个方向上的计算结果进行累加。然后,在两个输入矩阵的ci和co维度上循环执行上述计算,以得到输出矩阵“卷积权重梯度”的计算结果。
71.图6示出根据本披露实施例的使用集成电路装置来执行计算方法600的简化流程图。根据前文的描述,可以理解这里的集成电路装置可以是结合图1

图5所描述的集成电路装置,其具有所示出的内部连接关系并且支持附加的各类操作。
72.如图6所示,在步骤610处,每个主计算单元可以经由数据接口接收来自于所述外部存储器的第一数据。接着,在步骤620处,每个主计算单元可以接收来自于与其互联的主计算单元的第二数据。最后,在步骤630处,每个主计算单元根据接收到的所述第一数据和第二数据来执行关联的计算任务。
73.以上为了简明的目的,仅结合图6描述了本披露的计算方法。本领域技术人员根据本披露的公开内容也可以想到本方法可以包括更多的步骤,并且这些步骤的执行可以实现前文结合图1

图5所描述的本披露的各类操作,此处不再赘述。
74.图7是示出根据本披露实施例的一种组合处理装置700的结构图。如图7中所示,该组合处理装置700包括计算处理装置702、接口装置704、其他处理装置706和存储装置708。根据不同的应用场景,计算处理装置中可以包括一个或多个集成电路装置710,该集成电路装置可以配置用于执行本文结合附图1

图5所描述的操作。
75.在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
76.在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、
分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
77.在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
78.在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
79.附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
80.在一些实施例里,本披露还公开了一种芯片(例如图8中示出的芯片802)。在一种实现中,该芯片是一种系统级芯片(system on chip,soc),并且集成有一个或多个如图7中所示的组合处理装置。该芯片可以通过对外接口装置(如图8中示出的对外接口装置806)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如dram接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图8对该板卡进行详细地描述。
81.图8是示出根据本披露实施例的一种板卡800的结构示意图。如图8中所示,该板卡包括用于存储数据的存储器件804,其包括一个或多个存储单元810。该存储器件可以通过例如总线等方式与控制器件808和上文所述的芯片802进行连接和数据传输。进一步,该板卡还包括对外接口装置806,其配置用于芯片(或芯片封装结构中的芯片)与外部设备812(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准pcie接口等。
82.在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(micro controller unit,mcu),以用于对所述芯片的工作状态进行调控。
83.根据上述结合图7和图8的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
84.根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
85.需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
86.在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
87.在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
88.在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)
的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于u盘、闪存盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
89.在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如cpu、gpu、fpga、dsp和asic等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(resistive random access memory,rram)、动态随机存取存储器(dynamic random access memory,dram)、静态随机存取存储器(static random access memory,sram)、增强动态随机存取存储器(enhanced dynamic random access memory,edram)、高带宽存储器(high bandwidth memory,hbm)、混合存储器立方体(hybrid memory cube,hmc)、rom和ram等。
90.依据以下条款可更好地理解前述内容:
91.条款1、一种集成电路装置,包括:
92.数据接口,其配置用于在所述集成电路装置和外部存储器之间传递数据;以及
93.多个主计算单元,其中每个主计算单元配置成经由数据接口接收来自于所述外部存储器的第一数据,并且还配置成接收来自于互联的主计算单元的第二数据,以便利用接收到的所述第一数据和第二数据来执行与其关联的计算任务。
94.条款2、根据条款1所述的集成电路装置,其中每个所述主计算单元还配置成向互联的主计算单元发送所述第一数据,以作为接收的主计算单元的第二数据。
95.条款3、根据条款1所述的集成电路装置,其中所述多个主计算单元配置成依次连接并且形成闭合环路,并且相邻的主计算单元之间具有双向的通信连接。
96.条款4、根据条款3所述的集成电路装置,其中每个所述主计算单元配置成利用所述双向的通信连接分别向相邻的主计算单元发送所述第一数据的相应部分,以作为所述相邻的主计算单元的第二数据的相应部分。
97.条款5、根据条款3所述的集成电路装置,其中每个所述主计算单元配置成利用所述双向的通信连接分别接收来自于相邻的主计算单元的所述第一数据的相应部分,以作为其第二数据的相应部分。
98.条款6、根据条款3所述的集成电路装置,其中每个所述主计算单元包括各自的存储单元,其配置成经由所述数据接口从所述外部存储器获取所述第一数据,并且还配置成经由所述双向的通信连接将第一数据向相邻的主计算单元发送,以作为接收的主计算单元的第二数据的相应部分。
99.条款7、根据条款6所述的集成电路装置,其中每个所述主计算单元配置成利用所述第一数据以完成第一计算任务和利用所述第二数据以完成第二计算任务。
100.条款8、根据条款7所述的集成电路装置,其中每个所述主计算单元配置成根据所
述第一计算任务的计算结果和所述第二计算任务的计算结果来执行计算,以获得与其关联的所述计算任务的计算结果。
101.条款9、根据条款8所述的集成电路装置,其中每个所述主计算单元的所述存储单元配置成存储所述第一计算任务的计算结果。
102.条款10、根据条款8所述的集成电路装置,其中每个所述主计算单元还包括多个子计算单元,所述第一计算任务包括与所述多个子计算单元的每个相对应的第一计算子任务并且所述第二计算任务包括与所述多个子计算单元的每个相对应的第二计算子任务,其中每个所述子计算单元配置成:
103.根据从所述存储单元读取的对应的第一子数据来完成相对应的第一计算子任务;以及
104.根据从所述存储单元读取的对应的第二子数据来完成相对应的第二计算子任务。
105.条款11、根据条款10所述的集成电路装置,其中所述多个主计算单元配置成并行地执行与各自关联的计算任务,并且所述多个子计算单元配置成并行地执行与各自关联的第一计算子任务以及配置成并行地执行与各自关联的第二计算子任务。
106.条款12、根据条款6

11的任意一项所述的集成电路装置,其中每个所述主计算单元的所述存储单元配置成根据cannon算法接收所述第一数据和第二数据,以便所述主计算单元根据cannon算法执行关联的计算任务。
107.条款13、一种电子设备,包括根据条款1

12的任意一项所述的集成电路装置。
108.条款14、一种板卡,包括根据条款1

12的任意一项所述的集成电路装置。
109.条款15、一种使用集成电路装置来执行计算的方法,其中所述集成电路装置包括数据接口和多个主计算单元,所述数据接口用于在所述集成电路装置和外部存储器之间传递数据,所述方法包括在每个主计算单元处执行以下操作:
110.经由数据接口接收来自于所述外部存储器的第一数据;
111.接收来自于互联的主计算单元的第二数据;以及
112.根据接收到的所述第一数据和第二数据来执行关联的计算任务。
113.应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
114.还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
115.如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0116]
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易
见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1