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

数据处理方法、处理器、芯片及电子设备

文献发布时间:2023-06-19 10:58:46


数据处理方法、处理器、芯片及电子设备

技术领域

本公开涉及信息处理技术领域,尤其涉及一种数据处理方法、处理器、芯片及电子设备。

背景技术

深度神经网络(Deep Neural Networks,DNNs)为有很多隐藏层的神经网络,当将一个大规模的深度神经网络映射到芯片群上,需要对神经网络的输入图像数据进行拆分,并将拆分后的各数据送入芯片群内各个计算核,各计算核可对接收的拆分数据分别进行计算。然而,对输入图像数据的拆分会引入交叠数据,包括因卷积过程中补全拆分数据边缘引起的数据交叠。

发明内容

有鉴于此,本公开提出了一种数据处理方法、处理器、芯片及电子设备。

根据本公开的一方面,提供了一种数据处理方法,所述方法应用于处理器,所述处理器包括多个计算核,所述方法实现处理数据的卷积运算,其中,处理数据被拆分为N份子数据;

所述方法包括:将N份子数据中的每一份,发送至一个计算核;任一计算核在其他计算核的卷积处理需要该计算核提供交叠数据的情况下,根据接收到的子数据,确定交叠数据,并向其他计算核发送交叠数据;计算核根据接收到的子数据和交叠数据,进行卷积运算。

在一种可能的实现方式中,根据接收到的子数据,确定交叠数据,包括:将接收到的子数据边缘的列或行,确定为交叠数据。

在一种可能的实现方式中,计算核根据接收到的子数据和交叠数据,进行卷积运算,包括:计算核将接收到的子数据和交叠数据进行拼接,并对拼接后的数据进行卷积运算。

在一种可能的实现方式中,将N份子数据中的每一份,发送至一个计算核,包括:将N份子数据中的每一份,封装为路由包后,发送至一个计算核,其中,所述路由包的包头包括:起始地址,用于指示子数据在计算核中存储的起始地址;地址间隔,用于指示子数据中,任一行数据的尾地址与下一行数据的首地址之间的间隔;向量长度,用于指示子数据中,任一行数据的向量长度。

在一种可能的实现方式中,还包括:计算核接收到路由包后,从所述起始地址开始,按照所述地址间隔,存储子数据中的各行数据;起始地址之前、存储子数据的最后一个数据的地址之后、以及地址间隔中的存储空间用于存储接收到的交叠数据。

根据本公开的另一方面,提供了一种处理器,所述处理器包括多个计算核,所述处理器用于实现处理数据的卷积运算,其中,处理数据被拆分为N份子数据;

所述处理器将N份子数据中的每一份,发送至一个计算核;任一计算核在其他计算核的卷积处理需要该计算核提供交叠数据的情况下,根据接收到的子数据,确定交叠数据,并向其他计算核发送交叠数据;计算核根据接收到的子数据和交叠数据,进行卷积运算。

在一种可能的实现方式中,根据接收到的子数据,确定交叠数据,包括:将接收到的子数据边缘的列或行,确定为交叠数据。

在一种可能的实现方式中,计算核根据接收到的子数据和交叠数据,进行卷积运算,包括:计算核将接收到的子数据和交叠数据进行拼接,并对拼接后的数据进行卷积运算。

在一种可能的实现方式中,所述处理器将N份子数据中的每一份,发送至一个计算核,包括:所述处理器将N份子数据中的每一份,封装为路由包后,发送至一个计算核,其中,所述路由包的包头包括:起始地址,用于指示子数据在计算核中存储的起始地址;地址间隔,用于指示子数据中,任一行数据的尾地址与下一行数据的首地址之间的间隔;向量长度,用于指示子数据中,任一行数据的向量长度。

在一种可能的实现方式中,所述方法还包括:计算核接收到路由包后,从所述起始地址开始,按照所述地址间隔,存储子数据中的各行数据;起始地址之前、存储子数据的最后一个数据的地址之后、以及地址间隔中的存储空间用于存储接收到的交叠数据。

根据本公开的另一方面,提供了一种人工智能芯片,所述芯片包括上述的处理器。

根据本公开的另一方面,提供了一种电子设备,所述电子设备包括上述的人工智能芯片。

根据本公开的实施例的数据处理方法,可实现处理数据的卷积运算。其中,处理数据被拆分为N份子数据,处理器可将N份子数据中的每一份,发送至一个计算核,处理器的多个计算核可对接收的子数据并行处理,提高计算效率。并且,任一计算核在其他计算核的卷积处理需要该计算核提供交叠数据的情况下,该计算核确定交叠数据并向其他计算核发送交叠数据,可在需要进行交叠的计算层处理交叠数据,避免在不需要进行交叠的计算层处理交叠数据,造成的路由传输延时及存储空间的浪费。根据本公开的交叠数据处理方法,对接收到的子数据和交叠数据,进行卷积运算,可降低数据传输时间,提高计算效率。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1示出根据本公开的实施例的处理器的示意图;

图2示出相关技术中的交叠列的示意图;

图3示出相关技术中的交叠行的示意图;

图4示出相关技术中的交叠数据处理方法的示意图;

图5示出本公开的实施例的一种数据处理方法的流程图;

图6示出根据本公开的实施例的子数据传输示意图;

图7示出根据本公开的实施例的交叠数据传输示意图;

图8示出根据本公开的实施例的确定交叠数据的示意图;

图9示出根据本公开的实施例的子数据和交叠数据进行拼接的示意图;

图10示出根据本公开的实施例的间隔存放交叠数据的示意图;

图11示出根据本公开的实施例的路由包的示意图;

图12示出根据本公开的实施例计算核接收到路由包后的存储顺序的示意图;

图13示出根据本公开实施例的电子装置的框图;

图14示出根据本公开实施例的电子装置的框图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

图1示出根据本公开的实施例的处理器的示意图。根据本公开实施例的数据处理方法应用于处理器,所述处理器包括多个计算核。

在一种可能的实现方式中,如图1所示,每个处理器包括多个计算核,每个处理器内部的计算核之间、以及不同处理器的计算核之间能够进行数据传输;其中,每个计算核包括存储部件,所述存储部件用于存储与其他计算核进行传输的数据。

在一种可能的实现方式中,如图1所示,每个计算核包括处理部件及存储部件。所述处理部件可以包括树突单元、轴突单元、胞体单元、路由单元。所述存储部件可以包括多个存储单元。

在一种可能的实现方式中,多个处理器可以集成在一个类脑计算芯片中,类脑计算芯片即存算一体的神经形态电路,以大脑的处理模式为参考,通过模拟大脑中神经元对信息的传递与处理,提升处理效率并降低功耗。每个处理器可包括多个计算核,计算核之间可独立处理不同的任务,或并行处理同一任务,以提升处理效率。计算核之间可通过计算核内的路由单元进行核间信息传输。

在计算核之内,可以设置有处理部件和存储部件。处理部件可以包括树突单元、轴突单元、胞体单元和路由单元。处理部件可以模拟大脑的神经元对信息的处理模式,其中,树突单元用于接收信号,轴突单元用于发送尖峰信号,胞体单元用于信号的集成变换,路由单元用于同其它计算核进行信息传输。计算核内的处理部件可以对存储部件的多个存储单元进行读写访问,以与计算核内的存储部件进行数据交互,并可分别承担各自的数据处理任务和/或数据传输任务,以获得数据处理结果,或者与其他计算核进行通信。其中,与其他计算核进行通信包括与本处理器内的其他计算核进行通信,以及与其他处理器内的计算核通信。

在一种可能的实现方式中,所述存储部件包括多个存储单元,其中,存储单元可以为静态随机存取存储器(Static Random Access Memory,SRAM)。例如,可以包括读写宽度为16B,容量为12KB的SRAM。本公开对存储单元的容量大小和位宽不做限定。

在一种可能实现的方式中,所述方法实现处理数据的卷积运算,其中,处理数据被拆分为N份子数据。

举例来说,在将大规模的深度神经网络(包括多层卷积运算)数据映射到众核(处理器中的多个计算核)的过程中,需要对处理数据拆分,可将处理数据拆分为N份子数据,并将拆分后的每一份子数据送入众核内各个计算核,众核内各个计算核对接收的拆分后的子数据分别进行计算。

对处理数据(例如图像数据)在横向进行拆分,当卷积窗的长和宽大于1的情况下,需要对图像进行重复补列。所补的列就称之为交叠列。其中,卷积窗为卷积核滑窗,可在处理数据上滑动,用于提取神经网络中各层的数据特征。

举例来说,图2示出相关技术中交叠列的示意图。如图2所示,假设在对处理数据

可以将处理数据

同样的,当卷积窗

其中,所补充的列3

对于三维卷积来说,卷积窗在三维处理数据中滑动带着深度方向,同样存在类似的交叠列。

当对处理数据(例如图像数据)在纵向进行拆分,当卷积窗的长和宽大于1的情况下,则需要对图像进行重复补行。所补的行就称之为交叠行。

举例来说,图3示出相关技术中的交叠行的示意图。如图3所示,假设在对处理数据

可以将处理数据

当卷积窗

同样的,当卷积窗

其中,所补充的行3[0 0 1 0]和行2[1 1 1 1]为交叠行。

对于三维卷积来说,卷积窗在三维处理数据中滑动带着深度方向,同样存在类似的交叠行。

与相关技术中计算芯片采用字节寻址、随机寻址不同,基于神经形态电路的众核架构芯片,采用的是模块寻址,连续性寻址。利用原语指令可以完成各计算核的模块寻址,连续性寻址,而且原语指令个数有限。其中,原语(primitive)是计算核提供的,可以用于调用核心层子程序或函数,可以是由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。

图4示出相关技术中的交叠数据处理方法的示意图。如图4所示,假设处理数据(即图4中总的数据量)为图像数据,可以将该图像数据按横向或者纵向拆分为4张子图,在T0~T3计算周期分别存入计算核Core0~Core3。对于存入各计算核的各子图数据,在存入数据的过程中对各子图多存一行或者一列。其中,当交叠数据为交叠列的情况下,可以多存一列;当交叠数据为交叠行的情况下,可以多存一行。

对处理数据拆分后的各数据在未开始进行计算的情况下,先将交叠数据(交叠的行或者交叠的列数据)进行复制,补充到各拆分数据(即,拆分后的子数据)中,再将补充了交叠数据的各拆分数据存入对应的计算核。然而,这种交叠数据处理方法可能会存在以下问题:

首先,时间传输比较大。如图4所示,将总的数据量进行串行发给众计算核,例如,在T0计算周期将补充了交叠数据的第一子图数据送入计算核Core0,在T1计算周期将补充了交叠数据的第二子图数据送入计算核Core1,在T2计算周期将补充了交叠数据的第三子图数据送入计算核Core2,在T3计算周期将补充了交叠数据的第四子图数据送入计算核Core3。由于在传输开始就附加了补充的交叠部分的数据,增大了传输时钟。

其次,引入了多余的计算。神经网络可以包括多个卷积层,在第一层或前几层的卷积窗的大小为1×1的情况下,不用对交叠数据计算。而如图4所示在初始就将交叠数据补充到拆分数据的方法,使卷积窗大小为1×1的各卷积层也需要对交叠数据进行计算。因此,对交叠数据的计算可导致多余的计算量。

而且,浪费芯片的存储资源。如图4所示在初始就将交叠数据补充到拆分数据的方法,使第一层或者前几层(卷积窗大小为1×1的各卷积层)增加了对交叠数据的存储,从而增加了总的存储数据量,浪费芯片的内存存储空间。

图5示出本公开的实施例的一种数据处理方法的流程图。所述方法实现处理数据的卷积运算,其中,处理数据被拆分为N份子数据。如图5所示,该方法包括步骤S1~步骤S3:

在步骤S1中,将N份子数据中的每一份,发送至一个计算核;

在步骤S2中,任一计算核在其他计算核的卷积处理需要该计算核提供交叠数据的情况下,根据接收到的子数据,确定交叠数据,并向其他计算核发送交叠数据;

在步骤S3中,计算核根据接收到的子数据和交叠数据,进行卷积运算。

举例来说,该方法可用于实现多层卷积计算,假设处理数据被拆分为多个部分,例如,处理数据X可被拆分为N份子数据,即:子数据X

在一种可能实现的方式中,在步骤S1中,将N份子数据中的每一份,分别送入对应的一个计算核,例如,处理器可并行将子数据X

应当理解,各计算核的标号Core0~CoreN-1代表计算核的逻辑顺序,与各计算核在芯片的物理位置无关,即计算核Core0与计算核Core1在芯片内可以是物理位置上相邻的计算核,也可以是物理位置上不相邻的计算核,本公开对计算核Core0~计算核CoreN-1不做限定。

在一种可能实现的方式中,在步骤S1中,图6示出根据本公开的实施例的子数据传输示意图,如图6所示,不做交叠数据处理,可以将总的数据量(即处理数据)拆分为4份(即N=4),分别将拆分后的数据(即子数据)送入计算核Core0~Core3。例如,假设总的数据量可以为图像数据,将其拆分为4张子图(即子数据),在t0计算周期将第一子图数据X

将N份子数据中的每一份,发送至一个计算核,由于在传输开始各子数据不附加交叠部分的数据,可以减少路由传输延时。

在一种可能实现的方式中,在步骤S2中,图7示出根据本公开的实施例的交叠数据传输示意图,如图7所示,假设计算核Core0~计算核Core3中分别存储了子数据X

例如,计算核Core0~计算核Core3中的各计算核在所在层的卷积窗的大小大于1×1,存在交叠数据的情况下,相邻两个计算核之间可以进行交叠数据的传输。即,计算核Core0和计算核Core1之间,计算核Core1和计算核Core2之间,以及计算核Core2和计算核Core3之间可以并行将交叠数据发送给对应的计算核。所在层的卷积窗的大小可由处理器或处理器之外的其他处理部件来判断,并根据判断结果控制各计算核发送交叠数据。

其中,基于神经形态众核架构计算核的物理分布,可以利用原语逻辑进行交叠数据的传输。

在一种可能实现的方式中,各计算核可并行将接收的子数据进行多层卷积计算。在各计算核对接收的子数据进行多层卷积计算的过程中,在第一层或前几层卷积窗大小为1×1的情况下,计算核不做交叠数据处理。在卷积层的卷积窗大小大于1×1的情况下,计算核对该卷积层的处理数据进行交叠数据处理,可接收其他计算核发送的交叠数据。其中,其他计算核可根据接收的子数据确定交叠数据。

在一种可能实现的方式中,在步骤S2中,根据接收到的子数据,确定交叠数据,包括:将接收到的子数据边缘的列或行,确定为交叠数据。

其中,对于多维子数据,子数据边缘的列或行可以是具有深度方向这一维度的行或列(简称具有深度的行,或者具有深度的列)。

例如,假设子数据为三维数据,第一维度为横向(行方向)维度(例如共0~W行),第二维度为纵向(列方向)维度(例如共0~L列),第三维度为深度方向维度(例如共0~D深度)。可将接收到的三维子数据边缘,第0或第L列,深度为0~D的数据(即具有深度的列)确定为交叠数据。或者,可将接收到的三维子数据边缘,第0或第W行,深度为0~D的数据(即具有深度的行)确定为交叠数据。

应当理解,本公开对子数据的维度不做限定,可以是二维,三维或者多维数据。

图8示出根据本公开的实施例的确定交叠数据的示意图。如图8所示,假设左侧长方体为4×4×2(行×列×深度)的三维图像数据(即拆分后的一份图像数据,也就是子数据),按照先深度方向再横向再纵向的顺序对三维图像中每一个像素标号(0~31)。可确定该三维图像数据具有深度的最后一列(即标号为6、7、14、15、22、23、30、31的像素)为交叠数据,用于发送至其他计算核,使其他计算核完成卷积运算。

其中,图8中各像素的标号顺序对应计算核的存储顺序,例如,计算核可以按照标号顺序,依次将各标号对应的像素按照从高地址到低地址方向写入该计算核的存储单元。

在一个示例中,从图8左侧长方体为4×4×2的三维图像数据中,确定交叠数据。如图8所示,可将三维图像数据最右侧的4×1×2的三维子图数据作为交叠数据,并对交叠数据,以及除交叠数据之外的部分(即图8中间的4×3×2的三维图像数据)中的各像素进行重新编号,以重新确定各像素的存储顺序。图8示出了重新编号的一个示例,其中,4×3×2的三维图像数据和4×1×2的交叠数据,分别按照先深度方向、再横向、再纵向的方向进行了重新编号。

从另一角度来看,以上确定交叠数据的方式也可以理解为:三维图像数据的具有深度的第一行(即标号为0~7的像素)可以看作两个向量,第一个向量(即标号为0~5的像素)长度为6,第二个向量(即标号为6,7的像素)的长度为2。按照三维图像数据中具有深度的第一行的向量划分模式,沿着纵向方向再划分三次,可以得到两个三维子图数据,即大小为4×3×2的三维子图数据(图8中间的长方体)和大小为4×1×2的三维子图数据(图8右侧的长方体)。其中,大小为4×1×2的三维子图数据为交叠向量,即交叠数据。

需要说明的是,尽管以图8作为示例介绍了根据子数据确定交叠数据方法,即根据子数据划分出交叠数据方法,但本领域技术人员能够理解,本公开应不限于此。

根据子数据确定交叠数据,可以按照众核物理布局并行执行交叠数据的划分操作。可根据实际应用场景灵活进行交叠数据划分,支持多维交叠数据向量的划分,可以划分出一个或多个交叠数据,可以划分出多行和/或多列交叠数据(包括具有深度等其他维度方向的多行或多列)。其中,划分的交叠数据的行数或列数可以根据卷积窗的大小确定,例如,假设卷积窗在横向和纵向的窗口大小为N×N,交叠数据的行数或者列数为N-1,存储交叠数据的向量长度可以根据计算需求灵活变化。

举例来说,如果图8中三维图像数据具有深度第一列(即标号为0、1、8、9、16、17、24、25的像素)为交叠数据,具有深度最后一列(即标号为6、7、14、15、22、23、30、31的像素)也为交叠数据,可以并行对这两个交叠数据进行划分。

三维图像数据的具有深度的第一行(即标号为0~7的像素)可以看作三个向量,第一个向量(即标号为0和1的像素)长度为2,第二个向量(即标号为2~5的像素)的长度为4,第三个向量(即标号为6和7的像素)的长度为2。按照三维图像数据中具有深度的第一行的向量划分模式,沿着纵向方向再划分三次,可以得到三个三维子图数据,即两个大小为4×1×2的三维子图数据和一个大小为4×2×2的三维子图数据。其中,两个大小为4×1×2的三维子图数据为需要的两个交叠的向量,即交叠数据。

因此,基于神经形态电路的众核物理布局,利用原语逻辑进行向量划分技术,并行从各个计算核的子数据中确定交叠数据向量,可高效的对处理数据中一侧或多侧的多行和/或多列的交叠数据进行划分,实现对数据向量传输、存储、计算的优化,提高计算核的计算速度。

在一种可能实现的方式中,在步骤S3中,各计算核可根据各自接收到的子数据和交叠数据进行合并处理,根据合并后的数据与对应的卷积核进行卷积运算,得到运算结果。

在一种可能实现的方式中,计算核根据接收到的子数据和交叠数据,进行卷积运算,包括:计算核将接收到的子数据和交叠数据进行拼接,并对拼接后的数据进行卷积运算。

图9示出根据本公开的实施例的子数据和交叠数据进行拼接的示意图。如图9所示,假设左侧长方体为4×4×2的三维图像数据,中间的长方体为4×1×2的交叠数据。

其中,4×4×2的三维图像数据可以是存储在计算核CoreA中的处理数据,4×1×2的交叠数据为在计算核CoreB中采用如图8所示方法划分出的交叠数据。对4×4×2的三维图像数据和4×1×2的交叠数据合并,可以根据如图7所示方法,使计算核CoreB中的路由单元访问存储单元读取4×1×2的交叠数据,并将4×1×2的交叠数据传输给计算核CoreA。计算核CoreA接收4×1×2的交叠数据,并与存储的4×4×2的三维图像数据合并,得到图9右侧的长方体,即大小为4×5×2的合并数据。

如图9所示,可以将大小为4×4×2的三维图像数据的具有深度的第一行(即标号为0~7的像素)看作一个向量,其向量长度看作8,向量个数为1。在1行作为一个向量的情况下,大小为4×4×2的三维图像数据可以看作4个向量,每个向量长度为8。大小为4×1×2的为交叠数据,可以将其看作4个向量,每个向量长度2。将所处在具有深度的同一行的向量左侧(长度为8)和右侧(长度为2)进行两两合并(拼接),最终得到图9中右侧的合并的大小为4×5×2的三维图像数据。

将接收到的子数据和交叠数据进行拼接操作,可基于神经形态电路的众核物理布局,利用原语逻辑进行向量合并技术实现交叠数据向量与子数据的合并。在合并交叠数据的过程中,支持多维交叠数据向量的合并,可高效的对一侧或多侧的多行和/或多列的交叠数据进行合并(包括具有深度等其他维度方向的多行或多列),合并的交叠数据的行数或列数(存储交叠数据的向量长度)可以根据计算需求灵活变化。实现对数据向量存储、计算的优化,提高计算核卷积计算的速度。

综上,在多层卷积计算的过程中,多个计算核可以并行完成对交叠数据的卷积运算。任一计算核在其他计算核的卷积处理需要该计算核提供交叠数据的情况下,该计算核通过采用如图8所示的方法确定交叠数据,并将交叠数据送入对应的计算核,各计算核利用如图9所示方法对接收的交叠数据进行合并,完成交叠数据的处理。在不需要交叠数据的情况下,则无需进行交叠数据的传送,基于计算核中存储的子数据进行运算即可,降低了数据传输时间,提高了处理器的计算效率。

在一种可能的实现方式中,在步骤S1中,将N份子数据中的每一份,发送至一个计算核,还包括:

将N份子数据中的每一份,封装为路由包后,发送至一个计算核,其中,所述路由包的包头包括:

起始地址,用于指示子数据在计算核中存储的起始地址;

地址间隔,用于指示子数据中,任一行数据的尾地址与下一行数据的首地址之间的间隔;

向量长度,用于指示子数据中,任一行数据的向量长度。

举例来说,将每一个子数据封装为路由包,发送至一个计算核,通过路由包头信息设置间隔存放数据向量实现交叠数据合并。

路由包头信息包括存放数据的起始地址,存放数据的向量长度,地址间隔这三个参数信息。

将子数据(即原始数据切分后得到的一份数据,例如图8、图9、图10中最左侧的数据)通过路由包的技术直接存放于路由操作的存储空间中,通过设置路由包机制将数据按规律间隔的存放,把需要接收的数据空间直接空出来,等待着下一步将接收的数据直接间隔的对位入座。由此可提高数据合并过程的效率,并使得计算核中的存储空间得到充分利用。

图10示出根据本公开的实施例的间隔存放交叠数据的示意图。如图10所示,数据在各计算核的存储模式是,按照先深度方向再横向再纵向的顺序依次存储。图10左侧长方体可以表示大小为4×4×2的三维数据,可以按照先深度方向再横向再纵向的顺序对长方体中各立方体标号(0~31);其中,标号顺序为该标号位置的数据在计算核中的存取顺序。

假设对大小为4×4×2的三维数据的具有深度的第一列和具有深度的最后一列进行补列,即图中左侧标号为0、1、8、9、16、17、24、25的数据的左侧补具有深度的一列,其大小为4×1×2的三维数据,图中标号为6、7、14、15、22、23、30、31的数据的右侧补具有深度的一列,其大小为4×1×2的三维数据。

由于数据存取的顺序为先深度方向再横向再纵向的顺序,所补的具有深度一列的每个数据向量的地址信息在计算核存储空间中是不连续,例如标号0和8位置存储的数据在存储空间中的地址不连续。

图10右侧的长方体为存放的结果的示意图。由于在图10右侧的长方体中,增加了两侧所补的具有深度的空白列,为了满足数据存储先深度方向再横向再纵向的顺序,针对补入具有深度的空白列后的4*6*2的三维数据按照先深度方向、再横向、再纵向的方向重新编号,这样,未补列之前各数据的标号0~31变为2~9,14~21,26~33,38~45。其中,路由单元可以接收到其他计算核发过来的交叠数据,并将交叠数据发送至图10右侧的空白处,就可以完成了数据的交叠合并,得到4×6×2的三维数据。

在一种可能实现的方式中,可以通过路由包的包头中的信息,实现图10所示的“空出空白”的效果。

图11示出根据本公开的实施例的路由包的示意图。如图11所示,通过设置路由包头的信息对子数据和交叠数据进行存放,例如,对如图10左侧长方体所示的三维数据进行传输时,可以通过路由单元将路由包头设置为起始地址为0x0002(0x0000、0x0001两地址空出,用于存放交叠数据),向量长度为8(对应三维数据每行8个像素),地址间隔为4(即具有深度的每行最后一个像素与下一行第一个像素之间的地址间隔,例如参见图10,具有深度的第一行最后一个像素标号为9,具有深度的第二行第一个像素标号为14,二者标号间隔为4个像素,即10、11、12、13,相应的,地址间隔也为4);路由包体的数据部分为图9左侧长方体中标号0~31对应的数据,即处理数据中的一份子数据。

计算核的路由单元可以访问存储单元,将路由包体中数据部分标号为0~31对应的数据按照路由包头的规则写入存储单元,也就是按照路由包头的规则对路由包中数据部分(即原标号为0~31对应的数据)重新标号,标号顺序为2~9,14~21,26~33,38~45。其中,重新标号的顺序对应存储单元的存储顺序,预留的标号0,1,10~13,22~25,34~37,46,47(即图10所示的“空出空白”的效果)对应的存储空间可用于存储交叠数据,标号为2~9,14~21,26~33,38~45(即图10右侧长方体标号)对应的存储空间存储的数据为处理数据中的一份子数据(即原标号0~31对应的数据)。

在一种可能的实现方式中,计算核接收到路由包后,从所述起始地址开始,按照所述地址间隔,存储子数据中的各行数据;起始地址之前、存储子数据的最后一个数据的地址之后、以及地址间隔中的存储空间用于存储接收到的交叠数据。

图12示出根据本公开的实施例计算核接收到路由包后的存储顺序的示意图。如图12所示,计算核的路由单元可以访问存储单元,根据包头中为起始地址为0x0002的指示,将原标号为0~7对应的数据写入地址为0x0002~0x009对应的存储空间,即对应图10右侧长方体中第一行的标号2~9;然后根据包头中地址间隔为4的指示,空出四个地址为0x000a~0x000d的存储空间;

将原标号为8~15对应的数据写入地址为0x000e~0x015对应的存储空间,即对应图10右侧长方体中第一行的标号14~21;然后空出四个地址为0x0016~0x0019的存储空间;

将原标号为16~23对应的数据写入地址为0x001a~0x021对应的存储空间,即对应图10右侧长方体中第一行的标号26~33;然后空出四个地址为0x0022~0x0025的存储空间;

将原标号为24~31对应的数据写入地址为0x0026~0x02d对应的存储空间,即对应图10右侧长方体中第一行的标号38~45;然后空出两个地址为0x002e、0x002f的存储空间;

接下来,路由单元可以接受其他计算核发送的交叠数据,并将交叠数据写入如图12所示的空出的地址空间,完成交叠数据的合并。

通过在需要进行交叠的层处理交叠数据,消除前层交叠数据附加的计算时间和存储空间,可以减少芯片计算的时钟,提高芯片计算速度。

在一种可能的实现方式中,提供了一种处理器,所述处理器包括多个计算核,所述处理器用于实现处理数据的卷积运算,其中,处理数据被拆分为N份子数据;

所述处理器将N份子数据中的每一份,发送至一个计算核;任一计算核在其他计算核的卷积处理需要该计算核提供交叠数据的情况下,根据接收到的子数据,确定交叠数据,并向其他计算核发送交叠数据;计算核根据接收到的子数据和交叠数据,进行卷积运算。

在一种可能的实现方式中,根据接收到的子数据,确定交叠数据,包括:将接收到的子数据边缘的列或行,确定为交叠数据。

在一种可能的实现方式中,计算核根据接收到的子数据和交叠数据,进行卷积运算,包括:计算核将接收到的子数据和交叠数据进行拼接,并对拼接后的数据进行卷积运算。

在一种可能的实现方式中,所述处理器将N份子数据中的每一份,发送至一个计算核,包括:所述处理器将N份子数据中的每一份,封装为路由包后,发送至一个计算核,其中,所述路由包的包头包括:起始地址,用于指示子数据在计算核中存储的起始地址;地址间隔,用于指示子数据中,任一行数据的尾地址与下一行数据的首地址之间的间隔;向量长度,用于指示子数据中,任一行数据的向量长度。

在一种可能的实现方式中,该方法还包括:计算核接收到路由包后,从所述起始地址开始,按照所述地址间隔,存储子数据中的各行数据;起始地址之前、存储子数据的最后一个数据的地址之后、以及地址间隔中的存储空间用于存储接收到的交叠数据。

在一种可能的实现方式中,提供了一种人工智能芯片,所述芯片包括上述的处理器。如图1所示,所述芯片可以包括一个或多个处理器,所述处理器可以包括多个计算核,本公开对芯片内计算核的数量不做限制。

在一种可能的实现方式中,提供了一种电子设备,所述电子设备包括上述的人工智能芯片。

图13是示出根据本公开实施例的一种组合处理装置1200的结构图。如图13中所示,该组合处理装置1200包括计算处理装置1202(例如,上述包括多个计算核的人工智能处理器)、接口装置1204、其他处理装置1206和存储装置1208。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1210(例如,计算核)。

在一种可能的实现方式中,本公开的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本公开的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。

在示例性的操作中,本公开的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本公开的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本公开的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。

在一个或多个实施例中,该其他处理装置可以作为本公开的计算处理装置(其可以具体化为人工智能例如神经网络计算的相关计算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成计算任务。

在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。

附加地或可选地,本公开的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。

根据不同的应用场景,本公开的人工智能芯片可用于服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。

图14示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。参照图14,电子设备1900包括处理组件1922(例如,包括多个计算核的人工智能处理器),其进一步包括一个或多个计算核,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。

电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。

在本公开中,作为分离部件说明的空间可以是或者也可以不是物理上分开的,作为空间示出的部件可以是或者也可以不是物理空间。前述部件或空间可以位于同一位置或者分布到多个网络空间上。另外,根据实际的需要,可以选择其中的部分或者全部空间来实现本公开实施例所述方案的目的。另外,在一些场景中,本公开实施例中的多个空间可以集成于一个空间中或者各个空间物理上单独存在。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

本公开的电子设备或处理器还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本公开的电子设备或处理器还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本公开方案的算力高的电子设备或处理器可以应用于云端设备(例如云端服务器),而功耗小的电子设备或处理器可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

相关技术
  • 数据处理方法、处理器、芯片及电子设备
  • 数据处理方法、装置、处理器芯片、电子设备和介质
技术分类

06120112757402