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

数据处理装置及人工智能处理器

文献发布时间:2023-06-19 10:24:22


数据处理装置及人工智能处理器

技术领域

本公开涉及计算机技术领域,尤其涉及一种数据处理装置及人工智能处理器。

背景技术

近年来神经形态计算领域发展迅速,可以采用硬件电路直接构建神经网络,从而模拟大脑的功能。具体的,可以利用神经形态芯片建立大规模、并行、低能耗和可支撑复杂模式学习的计算平台。在此基础上,以人工神经网络(ANNs,Artificial Neural Network)和脉冲神经网络(SNNs,Spiking Neural Network)为代表的神经网络的种类越来越多,规模越来越大,对神经形态芯片的计算能力提出了更高的要求,因此神经形态芯片应该具有更高的数据处理和整理的能力。

然而,传统的神经形态芯片能处理的数据种类有限,有的仅局限在矩阵或低维度张量。另外,传统的神经形态芯片能处理的数据精度有限,导致无法适用更多种类的网络。例如,作为第三代神经网络的脉冲神经网络,其数据是以神经元脉冲信号的时空信息编码,可用三值数据来描述(例如,0、1和-1),而目前大多数的神经形态芯片在支持三值数据运算的同时,无法高效地支持多精度(例如,8位或8位以上)的数据计算,也无法按神经网络的计算需求与其他种类的数据进行转换。此外,传统的神经形态芯片用来进行数据处理的模块结构复杂,针对不同的计算任务和数据种类(例如,向量、矩阵和张量)采用不同的处理方法,这极大地限制了神经形态芯片的计算效率以及神经网络的推理效率,而且可扩展性差。

发明内容

有鉴于此,本公开提出了一种数据处理装置,通过根据处理类别及数据类别产生对应数据的地址并进行数据转换,提高了神经形态芯片的计算效率和神经网络的推理效率,容易扩展。

根据本公开的一方面,提供了一种数据处理装置,所述装置应用于人工智能处理器的处理核心,所述人工智能处理器包括多个处理核心,每个处理核心包括存储模块、计算模块及数据处理装置,所述数据处理装置分别连接所述存储模块和所述计算模块,所述数据处理装置包括:地址产生模块,用于:根据设定的地址产生方式,生成待读取的第一数据的第一地址;数据转换模块,连接到所述地址产生模块,用于:根据所述第一地址从所述存储模块读取所述第一数据;对读取到的所述第一数据进行转换,得到转换后的第二数据;将所述第二数据发送到所述计算模块,以使所述计算模块进行数据计算;控制模块,分别连接到所述地址产生模块及所述数据转换模块,用于:根据预设的处理类别以及所述第一数据的数据类别,确定对应的地址产生方式,并控制所述地址产生模块根据所述地址产生方式生成地址。

根据本公开的另一方面,提供了一种人工智能处理器,所述人工智能处理器包括多个处理核心,每个处理核心包括存储模块、计算模块及数据处理装置,所述数据处理装置分别连接所述存储模块和所述计算模块,所述数据处理装置包括:地址产生模块,用于:根据设定的地址产生方式,生成待读取的第一数据的第一地址;数据转换模块,连接到所述地址产生模块,用于:根据所述第一地址从所述存储模块读取所述第一数据;对读取到的所述第一数据进行转换,得到转换后的第二数据;将所述第二数据发送到所述计算模块,以使所述计算模块进行数据计算;控制模块,分别连接到所述地址产生模块及所述数据转换模块,用于:根据预设的处理类别以及所述第一数据的数据类别,确定对应的地址产生方式,并控制所述地址产生模块根据所述地址产生方式生成地址。

根据本公开的实施例,通过根据处理类别及数据类别产生对应数据的地址并进行数据转换,能够加快对所述数据的访问速度,提高神经形态芯片的计算效率以及神经网络的推理效率,容易扩展。

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

附图说明

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

图1示出本公开实施例的数据处理装置的框图。

图2示出本公开实施例的数据处理装置的示意图。

图3示出本公开实施例的地址产生模块及数据处理过程的示意图。

图4示出本公开实施例的数据处理过程的示意图。

图5a示出本公开实施例的数据处理过程的示意图。

图5b示出本公开实施例的数据处理过程的示意图。

具体实施方式

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

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

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

图1示出本公开实施例的数据处理装置的框图。

如图1所示,所述数据处理装置60应用于人工智能处理器的处理核心,所述人工智能处理器包括多个处理核心,每个处理核心包括存储模块40、计算模块50及数据处理装置60,所述数据处理装置分别连接所述存储模块和所述计算模块,所述数据处理装置包括:

地址产生模块10,用于:根据设定的地址产生方式,生成待读取的第一数据的第一地址;

数据转换模块20,连接到所述地址产生模块,用于:根据所述第一地址从所述存储模块读取所述第一数据;对读取到的所述第一数据进行转换,得到转换后的第二数据;将所述第二数据发送到所述计算模块,以使所述计算模块进行数据计算;

控制模块30,分别连接到所述地址产生模块及所述数据转换模块,用于:根据预设的处理类别以及所述第一数据的数据类别,确定对应的地址产生方式,并控制所述地址产生模块根据所述地址产生方式生成地址。

在一种可能的实现方式中,所述数据处理装置、存储模块和计算模块可以位于人工智能处理器的处理核心内。所述人工处理器可以是神经形态芯片,所述处理核心可以是神经形态芯片的功能核。

神经形态芯片是一种新型架构的芯片,可以模拟人类大脑的工作机理。所述神经形态芯片可以按照处理核心进行组织。例如,一个神经形态芯片可以包括4096个(例如,64×64的阵列)处理核心,每个处理核心内部可以模拟256个生物学意义上的神经元,这样,一个神经形态芯片总共可以模拟约100万个神经元。

在一种可能的实现方式中,所述处理核心可以将神经元按照二维网状结构进行组织。例如,一个神经元可以包括轴突、树突和突触等,轴突可以是二维网状结构的行,树突可以是二维网状结构的列,突触可以是行列的十字交叉点。其中,轴突可以用于数据的发送,树突可以用于数据的接收,突触可以用于存储权重,所述权重可以是后一神经元对经过突触前的前一神经元的加权值,对应神经网络的权重参数。例如,当用不到某一神经元时,该神经元的权重可以置0,当需要使用某一神经元进行计算时,可以为该神经元分配一个权重值。

在一种可能的实现方式中,所述处理核心可以包括存储模块和计算模块,即所述神经形态芯片可以采用存算一体的处理架构。其中,所述存储模块可以用于存储和神经网络计算相关的数据和指令,所述计算模块可以用于执行神经网络计算(例如,乘累加运算)。在一个示例中,所述存储模块可以是具有一定存储容量的内存,存储神经网络计算中的向量、矩阵和张量等不同种类的数据,所述计算模块可以是128个乘累加器组成的乘累加器阵列(MACs,Multiply Accumulators)。所述乘累加器阵列可以分为4组,每组包括32个乘累加器,用于对所述数据处理装置的输出数据执行乘加类运算,并可以将运算结果返回数据处理装置等待进一步处理。

在一种可能的实现方式中,所述处理核心既可以进行人工神经网络计算,也可以进行脉冲神经网络计算,还可以进行人工神经网络和脉冲神经网络进行混合的混合神经网络计算。不同的神经网络计算任务需要处理不同精度的数据。例如,对于脉冲神经网络而言,时间信息是一个重要的考虑因素。脉冲神经网络的某个神经元只有在其膜电位达到一个特定值时才被激活,当该神经元被激活,就会产生信号传递给其他神经元,提高或降低其他神经元的膜电位。因此,在将三值数据送入计算模块进行计算前,需要先将三值数据转换成计算模块可以接受的数据精度以便进行计算。

在一种可能的实现方式中,本公开的神经形态芯片可以采用存算一体的芯片架构,将处理器、存储模块和通信组件集成在一起,信息处理在本地进行,有利于更好地满足神经网络大规模并行计算的需求。本公开的神经形态芯片可以支持两种计算范式的计算,既可以支持人工神经网络计算,也可以支持脉冲神经网络计算以及人工神经网络和脉冲神经网络进行混合的混合神经网络计算。这样神经形态芯片可以以极低的能耗来分布式、大规模和并行地计算神经网络。本领域技术人员应当理解的是,所述神经形态芯片以及处理核心是示例性的。本公开对于所述数据处理装置应用于何种处理器架构以及所述处理器是否按照处理核心组织并不限定。

在一种可能的实现方式中,不同的处理核心可以处理不同的神经网络计算任务,同一处理核心也可以在不同的工作周期内执行不同的神经网络计算任务。例如,在某个工作周期内,处理核心A可以用于处理关于图像的神经网络计算任务,处理核心B可以同时处理关于文本的神经网络计算任务。不同的神经网络计算任务的数据可以分配到一个处理核心中进行处理,也可以分配到不同处理核心中进行处理。因此,不同种类以及不同精度的数据在处理核心之间以及处理核心内部进行数据交换比较频繁,需要寻找一种合适的解决方案来高效调度不同种类以及不同精度的数据。

传统的芯片采用冯·诺依曼架构将存储模块和处理器分离,处理器通过总线和存储模块反复交换信息,对于不同种类以及不同精度的数据的读写效率较低,并且存在算力和能耗的瓶颈。同时,现有的神经形态芯片对于不同种类以及不同精度的数据的处理是分散的,即对于不同的计算任务和数据种类采用不同的处理方法。现有的神经形态芯片只能支持人工神经网络计算或者脉冲神经网络计算其中一种计算范式,例如采用泄露-积分-点火(LIF,Leaky Integrate-and-Fire)神经元模型的神经形态芯片。这些神经形态芯片对于不同的计算任务和数据种类采用的是不同的处理方法,增加了对存储模块的访问次数,调度数据的过程繁琐,访问效率也不高,有可能造成信息冗余。因此传统的神经形态芯片无法对不同种类和/或不同精度的数据进行高效的调度,对存储模块的访问效率较低,极大地限制了神经形态芯片的计算效率以及神经网络的推理效率,而且可扩展性差。

传统的神经网络芯片在访问不同种类的数据时,不同种类的数据的各个数据块的存储区域差别较大,因此神经元需要频繁地访问各个分开的存储区域,对访问存储的能力要求较高,且用来进行数据处理的模块结构复杂,整个神经网络芯片对不同种类和/或不同精度的数据的调度效率比较低。

本公开提出了一种数据处理装置,所述数据处理装置可以位于神经形态芯片的处理核心内,统一调度不同种类和/或不同精度的数据。通过将不同种类和/或不同精度的数据统一集中到所述数据处理装置进行处理,不仅可以高效地对不同种类和/或不同精度的数据进行有效的调度,加快所述数据的访问速度,而且可以适配不同的计算模式和存储方式,提高神经形态芯片的计算效率以及神经网络的推理效率,不会产生信息冗余,容易扩展。

图2示出本公开实施例的数据处理装置的示意图。

在一种可能的实现方式中,如图2所示,所述数据处理装置可以包括地址产生模块(AGU,Address Generator Unit)、数据转换模块以及控制模块。本领域技术人员应当理解的是,尽管图2中没有示出存储模块,所述数据处理装置也可以和存储模块进行交互。例如,所述数据处理装置可以对存储模块进行读写操作。

在一种可能的实现方式中,所述地址产生模块可以用于:根据设定的地址产生方式,生成待读取的第一数据的第一地址。

在一种可能的实现方式中,所述第一数据包括多种类别,即所述第一数据可以是不同种类的数据。例如,所述第一数据可以包括向量、矩阵和张量等。向量可以是一行或一列数据,矩阵可以是二维的数据集合,张量可以是多维的数据集合(例如,一幅彩色图片包含长、宽和色彩三个维度的数据,可以用三维张量表示)。值得注意的是,脉冲神经网络中神经元的输出脉冲序列可以按照三值数据进行编码。例如,(0、1和-1)可以用于描述脉冲神经网络的神经元分别处于无动作、激活和抑制的状态,三值数据也可以有不同的种类。本领域技术人员应当理解的是,本公开对于不同种类的数据并不限定。

在一种可能的实现方式中,所述第一数据可以按照一定的存储方式存储在和所述数据处理装置相连的存储模块中。例如,矩阵数据可以以一维向量的形式在存储模块中的某个地址范围限定的存储区域中存储,可以集中存储,也可以分散存储。偏置向量可以存储在存储模块中的不同于矩阵数据的存储区域。不同种类的数据有着不同的特点,因此可以有不同的存储方式。另外,所述数据处理装置可以按照一定的位宽对所述数据进行读写。在一个示例中,用于读写数据的数据总线的位宽可以是128位。

在一种可能的实现方式中,所述第一数据的数据类别可以包括:输入图像数据、参数权重数据、偏置数据中的至少一种;所述第一计算结果的数据类别包括膜电位值。本领域技术人员应当理解的是,本公开对所述数据类别和所述第一计算结果的数据类别并不限定。

在一种可能的实现方式中,在整个数据处理过程中,对数据所作的处理还可以包括:数据加载、数据缓存以及数据的移位、变序和重组等。例如,所述数据处理装置可以从存储模块中读取彩色图像的数据,所述彩色图像的数据可以是一个三维的张量,所述数据处理装置可以将读取到的张量数据送入数据转换模块进行转换。在读取张量数据的过程中,所述数据处理装置可以加载PI寄存器中的部分参数,改变读取张量数据的顺序。所述寄存器组单元也可以对部分数据进行缓存,以便加快数据访问速度。所述数据处理装置还可以对对所述数据的某个位进行移动以及对按位的排列顺序进行改变,也可以将数据进行拆分或合并等重组操作,例如将两个8位的整型数据拼接成一个16位的整型数据或者将一个16位的整型数据拆分为两个8位的整型数据。本领域技术人员应当理解的是,以上对所述处理的举例是示例性的,可以在其他实施例中增加更多的处理方式,本公开对所述处理并不限定。

在一种可能的实现方式中,所述第一数据的第一地址可以是不同种类的数据在存储模块中存储的地址。所述第一地址可以是数据存储的起始地址,也可以是一定存储区域的地址。例如,某个种类为矩阵的数据的起始地址可以是0x20020000,在读取该数据时,可以根据该数据的起始地址进行读取。本公开对在存储模块中如何读写数据并不限定,在此不再赘述。

表1示出了典型计算模式所需循环及循环含义。在本公开中,所述处理类别可以理解为表1中的计算模式。如表1所示,所述处理类别(即,计算模式)可以包括卷积、向量点乘、向量累加、平均池化和全连接等。另外,所述处理类别还可以包括:卷积、向量点乘、张量点乘、向量累加、平均池化、数据加载、数据缓存、数据移位、数据变序及数据重组中的至少一种。本领域技术人员应当理解的是,本公开对于所述计算模式的描述是示例性的而非穷尽性的,本公开对于所述计算模式并不限定。

在一种可能的实现方式中,如表1所示,对于不同的计算模式,所需的循环计数等级可以是不同的。例如,对于向量点乘这种计算模式,可以只用到L3、L4和L5这三个循环等级。本公开对计算模式所用循环等级并不限定。

在一个示例中,如表1所示,对于常见的卷积神经网络计算而言,该计算模式可以分为6个步骤,每个步骤可以使用不同等级的循环计数器来进行处理。例如,L0级循环可以处理输入通道分组,L1级循环可以处理卷积核宽度Kx,L2级循环可以处理卷积核高度Ky,L3级循环可以处理输出通道分组,L4级循环可以处理输出图像宽度Ox,L5循环可以处理输出图像高度Oy。所述循环计数子模块的循环顺序也可以灵活配置。例如,L1级循环可以处理卷积核高度Ky,L2级循环可以处理卷积核宽度Kx。本领域技术人员应当理解的是,可以改变循环计数的等级数目,例如将所述循环计数等级扩展为8级。本公开循环计数的顺序和数目并不限定。

表1

在一种可能的实现方式中,所述设定的地址产生方式可以是根据第一数据的处理类别以及数据类别,动态地生成待读取的第一数据的第一地址的多种方式。例如,卷积运算和向量点乘所处理的数据类别不同,卷积运算处理的可能是张量,向量点乘可以处理向量;卷积运算和向量点乘的处理类别也不同,即卷积元素和向量点乘是两个不同的计算模式,有着不同的计算步骤。因此,在分别处理卷积运算和向量点乘时,可以根据两者的这些不同动态地产生所需要读取的数据的地址,以便更加高效和简便。

在一种可能的实现方式中,所述地址产生模块包括:地址产生子模块,用于分别生成各种类别的第一数据的第一地址;循环计算子模块,用于根据当前待读取的第一数据的第一地址以及所述地址产生方式,循环计算下一次待读取的第一数据的第一地址。

在一种可能的实现方式中,地址产生子模块,用于分别生成各种类别的第一数据的第一地址。所述地址产生子模块包括多个地址产生单元,分别用于生成各种类别的第一数据的第一地址。如图2所示,所述地址产生子模块可以由四个相同的地址产生单元(AGU_InA、AGU_InB、AGU_V和AGU_Bias)组成。所述四个地址产生单元可以对应处理神经网络计算模型的四种参数。由于神经网络的计算模型具有一定的共性,因此采用四个地址产生单元足以满足神经网络的计算需求。每一个地址产生单元可以分别产生和不同的神经网络参数对应的地址,指向相应的神经网络参数在存储模块中所存储的区域,从而使得所述数据处理装置可以从存储模块中直接读写所述数据相应的存储区域。为了方便起见,以下将AGU_InA、AGU_InB、AGU_V和AGU_Bias这四个地址产生单元分别称作第一地址产生单元、第二地址产生单元、第三地址产生单元和第四地址产生单元。本领域技术人员应当理解的是,本公开对于所述地址产生单元的个数并不限定。

在一种可能的实现方式中,所述地址产生单元可以根据不同的处理类别(即,计算模式)以及所述第一数据的数据类别进行切换。例如,常见的卷积神经网络计算模式可以表达为:V=X×W+Bias,其中,V可以表示膜电位的值,当膜电位达到某一阈值该神经元被激活。X可以表示卷积神经网络计算的输入,W可以表示卷积神经网络计算的权重,Bias可以表示卷积神经网络计算的偏置。对于此种神经网络计算模式,第一地址产生单元可以产生输入图像X的地址,如果该卷积神经网络的输入图像是一个彩色的图片,则输入图像X可以是一个三维的张量。第二地址产生单元可以产生权重参数W的地址,权重参数W可以是一个二维的矩阵。第三地址产生单元可以产生膜电位的地址,第四地址产生单元可以产生偏置的地址,所述膜电位可以是一个数量值,所述偏置可以是一个向量。其中,膜电位和偏置这两个参数是神经网络计算中常用的参数,可以在控制模块中配置相应的值,以便当需要产生这两个参数的地址进行读写时,地址产生模块可以不需要进行地址变换就可以直接产生所需地址,这样所述数据处理装置能够更加快速地进行读写操作。

在一种可能的实现方式中,对于不同的处理类别以及所述第一数据的数据类别,所述地址产生单元可以灵活切换,用于执行不同的功能。例如,第一地址产生单元可以产生权重参数的地址,第二地址产生单元可以产生输入张量的地址。当神经网络计算不需要加偏置时,第四地址产生单元也可以不工作。所述地址产生单元产生的地址可以通过一个多路选择器进行选择输出,以便在某个时间段只对四种参数的一部分进行操作。本领域技术人员应当理解的是,本公开对于地址产生单元的命名和组合只是示例性的,并不构成限定。

在一种可能的实现方式中,所述循环计算子模块用于根据当前待读取的第一数据的第一地址以及所述地址产生方式,循环计算下一次待读取的第一数据的第一地址。具体的,所述循环计数子模块可以包括一个6级的循环计数器。该循环计数器可以硬件实现,也可以软件实现。优选的,采用硬件循环计数器(HWL,Hardware Loop Counter)来实现循环计数,以便加快循环速度。每一级循环可以对应不同的含义,对应神经网络计算的不同步骤。所述数据处理装置可以根据地址产生子模块产生的地址从存储模块中读取相应存储区域中存储的不同种类的数据,送入计算模块(即,乘累加器阵列)中进行计算。不同的数据有着不同的地址,可以使用一个6级的循环计数器来对不同数据的地址进行变换。

在一种可能的实现方式中,所述地址产生子模块和循环计数子模块可以根据计算模式和存储方式的不同进行切换。对于同一种计算模式,在不同的时间段,所述地址产生子模块和循环计数子模块的功能也可以不同。在部分地址产生子模块和循环计数子模块没有接收到相关指令时,所述地址产生模块可以只部分工作。所述指令可以由外部模块通过控制总线发出,也可以预先存储在控制模块的PI寄存器中。所述地址产生模块也可以产生读写使能信号,以便控制所述数据处理装置在何时从存储模块中读写数据。多个读写使能信号可以经由或门输出。

在一种可能的实现方式中,所述数据转换模块连接到所述地址产生模块,用于:根据所述第一地址从所述存储模块读取所述第一数据;对读取到的所述第一数据进行转换,得到转换后的第二数据;将所述第二数据发送到所述计算模块,以使所述计算模块进行数据计算。

在一种可能的实现方式中,所述数据转换模块包括精度转换单元,所述精度转换单元用于:根据适应于所述计算模块的数据精度,对所述第一数据进行精度转换,得到所述第二数据;所述精度转换单元还用于:根据适应于所述存储模块的数据精度,对所述第二计算结果进行精度转换,得到所述第一计算结果。

在一种可能的实现方式中,所述精度转换单元可以用于对不同精度的数据进行转换,并将转换后的数据送入计算模块中进行计算。计算模块的输出数据也可以进行精度转换,以方便存储或送到其他模块进行处理。在一个示例中,所述计算模块可以是乘累加器阵列,分为4组,每组可以包括32个乘累加器。所述乘累加器可以以任何可能的方式实现,本公开对此不作限定。所述乘累加器阵列可以只接收精度为int9(即,整型9位)的数据。这样不同精度的数据,包括int16、int8以及三值数据等,在送入乘累加器阵列进行计算前,都需要先经过精度转换模块将不同精度的数据转换为int9。值得说明的是,为了支持更多的计算模式(例如向量累加),在数据转换模块和乘累加器阵列之间除了图2中示出的Data_InA_to_D这条数据线,还设置了Data_InB_to_D数据线。Data_InA_to_D这条数据线可以只接收int9的数据,Data_InB_to_D数据线则可以根据需要接收多种精度的数据,包括int9和int32等。这样能够加快不同精度的数据的转换速度,提高精度转换效率。

在一种可能的实现方式中,所述数据转换模块还包括重整(Rearrangement)单元,所述重整单元用于:对不同精度的第一数据进行拼接或拆分处理,得到所述第二数据。

在一种可能的实现方式中,所述重整单元可以对不同精度的数据进行重新整合,包括对不同精度的数据进行拼接或拆分。例如,在神经网络计算过程中,可以直接将4个2位宽的数据拼接成8位宽的数据,或者一个32位宽的数据直接拆分为16个2位宽的数据。通过这种对数据进行重新整合而非在原有数据的基础上进行扩展的方式,能够更加高效地对不同精度的数据进行转换。

在一种可能的实现方式中,所述数据转换模块还可以包括寄存器组单元。所述寄存器组单元可以包括多个不同位宽的寄存器的组合,例如16位寄存器和8位寄存器等。在不同的计算模式和存储方式下,可以将具有同样功能的多个寄存器组成一个子模块以便于可以重复使用。所述寄存器组单元中的寄存器可以包括移位寄存器和选通寄存器。移位寄存器可以对不同种类的数据按位进行改变(即,变序)。例如,可以对某个二值数据(由0和1组成)的部分位进行左移或右移。选通寄存器可以用于对寄存器组中的部分寄存器进行开启或关闭。另外,该寄存器组还可以对数据转换模块的输入数据进行缓存,以便根据不同的循环将数据转换模块的输出结果送入乘累加器阵列进行计算时,所述数据转换模块可以直接读取或写入缓存数据,不需要频繁访问存储模块。

在一种可能的实现方式中,所述数据转换模块可以用于根据所述地址从存储模块中访问所述数据,对所述数据进行转换并将转换后的数据和计算模块进行交互。具体的,对所述数据进行转换可以是对数据进行精度转换。例如,在神经网络计算的过程中需要处理各种不同精度的数据,包括32位的整型数据、8位的整型数据和三值数据等。不同的精度数据在送入计算模块进行计算前,需要统一转换以适配计算模块。

在一种可能的实现方式中,地址产生模块可以用于生成所述第一数据的第一计算结果的第二地址。所述数据转换模块还用于:在接收到所述计算模块针对所述第二数据的第二计算结果时,对所述第二计算结果进行转换,得到所述第一计算结果;将所述第一计算结果发送到所述存储模块的第二地址。

在一种可能的实现方式中,所述控制模块分别连接到所述地址产生模块及所述数据转换模块,用于:根据预设的处理类别以及所述第一数据的数据类别,确定对应的地址产生方式,并控制所述地址产生模块根据所述地址产生方式生成地址。

在一种可能的实现方式中,所述控制模块可以包括PI(Primitive Instruction,原语指令)寄存器,用于对所述存储模块和/或计算模块进行控制。原语可以是由若干条指令组成的程序段,用来实现某个特定功能。具体的,所述PI寄存器可以是一个32字节的寄存器。所述PI寄存器可以控制乘累加器阵列运行的组数以及每组使用的乘累加器的数量,例如对于分为4组,每个组包括32个乘累加器的乘累加器阵列,可以在PI寄存器中分配一定的存储空间,在执行神经网络计算时只有部分乘累加器进行工作,这样可以减少神经形态芯片的能量消耗,缩短神经网络的的计算时间,从而提升神经网络的计算效率。

在一种可能的实现方式中,所述PI寄存器可以用于对存储模块进行控制。例如,所述PI寄存器可以存放禁止对部分存储模块的存储区域进行读写操作的指令,对部分数据的读写访问进行控制,这样可以避免在进行神经网络计算的过程中对被保护数据误操作,导致数据丢失。所述PI寄存器也可以配置特定的存储空间,用于区分不同的计算模式,例如卷积、向量累加、向量点乘、张量放缩等。例如,当所述数据处理装置进行神经网络计算时,PI寄存器中的某些位可以用于指示乘累加器阵列执行卷积运算这种模式,也可以指示乘累加器阵列执行点乘运算这种模式。所述PI寄存器也可以预先存储所述计算模式用到的步长、卷积核大小等参数,以便于地址产生模块可以直接从PI寄存器中取出这些预先存储的参数进行循环计算,而无需反复读写,快速产生不同种类数据的地址。

在一种可能的实现方式中,所述控制模块可以用于对所述存储模块和/或计算模块进行控制。例如,所述控制模块可以用于控制在何时对存储模块进行读写,也可以用于针对不同的计算模式和存储方式控制计算模块的哪些乘累加器进行工作。在一个示例中,所述控制模块可以包括一个128位宽的寄存器。所述计算模式可以包括卷积、向量累加、平均池化、向量点乘以及全连接等神经网络计算模式。

在一种可能的实现方式中,所述计算模块包括乘累加器阵列,所述控制模块还用于对所述存储模块和/或所述计算模块进行控制;所述控制模块对所述计算模块进行控制,包括:根据预设的处理类别,控制所述计算模块中参与数据计算的乘累加器的组数以及每组乘累加器的数量,以使所述计算模块进行数据计算。

通过根据设定的地址产生方式生成待读取的第一数据的第一地址,然后根据所述第一地址从所述存储模块读取所述第一数据,对读取到的所述第一数据进行转换进而得到转换后的第二数据,接着将所述第二数据发送到所述计算模块,并根据预设的处理类别及数据类别确定对应的地址产生方式并控制所述地址产生模块生成地址,本公开能够克服传统神经形态芯片在处理不同的处理类别及数据类别的数据时受限、复杂和低效的问题,能够减少访存次数,提高数据获取效率,提高数据的访问速度,同时提高了神经形态芯片的计算效率和神经网络的推理效率,容易扩展。

图3示出本公开实施例的地址产生模块及数据处理过程的示意图。

在一种可能的实现方式中,如图3所示,所述神经网络的计算过程可以映射到所述地址产生模块。在图3中,X可以是卷积神经网络计算的输入图像,经过和矩阵Y进行卷积运算,得到输出结果Y。X包括一个四行四列的像素点,共16个像素点。可以指定水平向右的方向为x方向,垂直向下的方向为y方向。当所述数据处理装置接收到要进行卷积神经网络计算的指令时,可以由第一地址产生单元产生X左上方的第一个像素点值的地址,在这个地址的基础上沿x方向增加一个步长(L1_step)的长度,从而进行地址变换(即,地址跳变),产生第二个像素点的地址。依次类推,直到对第一行的像素点处理完毕,开始换行进行地址变换,产生第二行最左侧的第一个像素点的地址。所述步长可以预先存储在控制模块的PI(Primitive Instruction,原语指令)寄存器中。当X的像素点进行地址变换时,需要确定循环的次数和顺序。例如,卷积核H的宽度为3,高度为4,则在进行地址变换时,L1级循环可以处理卷积核的宽度,即读取宽度为3的像素点需要循环3次;L2级循环可以处理卷积核的高度,即读取完宽度为3的各行的像素点之后,还需要循环4次,以便在行与行之间进行地址变换。

值得说明的是,所述6级循环可以按照不同的顺序执行,即可以在L1级循环之后进行L2级循环,也可以在L1级循环之后进行L5级循环。所述6级循环也可以通过一个多路选择器进行选择,将经过多路选择器输出的地址作为起始地址,在完成一级循环之后,可以将所述起始地址加上预定的步长或者直接加1,作为新一级循环的起始地址。通过地址产生模块适配不同的计算模式和存储方式,所述数据处理装置能够灵活增加不同种类数据的地址产生,实现更加复杂的计算。本公开对于如何进行地址变换并不限定。

图4示出本公开实施例的数据处理过程的示意图。

在一种可能的实现方式中,如图4所示,所述数据处理装置可以用于执行卷积神经网络计算。在图4中,所述数据处理装置的输入特征图X1,是一个四维的张量,所述特征图包括Px*Py个像素点,深度为m(图中m为4),卷积核的宽度为Kx,卷积核X2的高度为Ky,卷积核深度为m,共有n个这样的卷积核。每一个卷积核和输入特征图上的每一个像素点作卷积运算,然后进行加和,最终得到宽度为Ox,高度为Oy,深度为n的输出图像X3。

在执行整个卷积神经网络计算的过程中,所述地址产生子模块可以产生输入张量、偏置向量以及权重参数的源地址,快速地将这些卷积神经网络计算参数从存储模块中读出,送入数据转换模块进行处理后,再送入计算模块进行计算。所述具有6级循环的循环计数子模块可以对应卷积神经网络计算的6个步骤,每个步骤可以按照一定的步长进行循环,所述步长可以预先存储在控制模块的PI寄存器中,以便当地址产生子模块用于读写不同的神经网络参数需要进行地址变换时,能快速地进行地址跳变。在卷积神经网络的计算过程中,不同的精度的数据可以送到数据转换模块进行精度转换,然后将转换后的数据送入计算模块中进行计算。计算模块的输出数据(即,计算结果)可以写入到存储模块中,写入的地址同样可以由地址模块产生。这样通过所述数据处理装置能快速地访问卷积神经网络的各种参数,提高卷积神经网络的计算效率。

在一种可能的实现方式中,卷积神经网络计算时可以有不同的计算顺序,所述数据处理装置可以适配不同的计算顺序。例如,在读取X1的像素点时,可以先读取左上角的第一个像素点。假设水平向右的方向为x方向,垂直向下的方向为y方向,垂直纸面向内的方向为z方向,则在读取第一个像素点之后,可以先沿x方向读取第一行的第二个像素点,直到读完第一行的所有像素点,然后沿y方向跳转到第二行的第一个像素点进行读取,直到读完二维特征图的所有像素点。接着再沿z方向将4个二维特征图的像素点全部读取完毕。也可以在读取左上角的第一个像素点之后,先沿z方向读取每个深度的二维特征图的第一个像素点,然后再按x方向读取第二个像素点,直到所有深度的像素点读取完毕,再沿x方向读取第三个像素点,读取完本行的像素点之后,再沿y方向读取直到所有的像素点读取完毕。卷积神经网络计算中按照步长依次读取像素点和换行,对应于所述数据处理装置意味着每读取一个不同的像素点,相应的数据地址要进行改变,通过所述地址产生模块快速生成和变换不同种类的数据的地址,所述数据处理装置可以快速读写相应的数据,从而提高神经网络的计算效率。

图5a和图5b示出本公开实施例的数据处理过程的示意图。

在一种可能的实现方式中,图5a和图5b示出了所述数据处理装置对于张量的处理过程,可以分为三种类型,分别用图中(1)、(2)和(3)示出。

在一种可能的实现方式中,图5b示出了第一种张量处理过程和第二种张量处理过程。对于第一种张量处理过程,可以是两个相同维度的张量进行点乘。例如,X1是一个宽度为Ox,高度为Oy,深度为n(n为4)的输入图像的特征图,X2是一个有着同样宽度、高度以及深度的张量,这两个张量进行点乘,得到同样宽度、高度以及深度的输出结果X3。对于第二种张量处理过程,可以是张量和放缩后的向量进行点乘。例如,X1是一个宽度为Ox,高度为Oy,深度为n(n为4)的输入图像的特征图,a是放缩后的向量,即a可以是取自其他张量(也可以是X1)的左上角的第一个像素点沿垂直纸面向内的方向(即,深度方向)展开得到的一维向量,两者进行点乘,得到输出结果X2。

图5a则示出了第三种张量处理过程。图5a中的向量a可以是多维的。例如,a可以是张量X1的某一行像素点沿垂直纸面向内的方向(即,深度方向)展开得到的多维向量,即a可以是X1的一部分。两者进行点乘得到输出结果X2。值得注意的是,如图5a和图5b中关于X1′、X2′及X3′的张量运算所示,对于以上三种张量的计算类型,进行向量点乘的张量的深度都可以为1,且都可以在做完点乘后加上相应的偏置(Bias)得到输出结果。图5a和图5b中关于X1′、X2′及X3′的运算过程和关于X1、X2及X3的运算过程类似,例如,图5a中的X1′可以是是一个宽度为Ox,高度为Oy,深度为1的输入图像的特征图,X2′可以是一个与X1′有着同样宽度、高度以及深度的张量,在此不再赘述。

在一种可能的实现方式中,对于以上三种张量的计算类型,可以只需要3级循环来处理,分别对应处理特征图的宽度、特征图的高度以及特征图的深度。例如,对于图5b的第一种张量过程,由于X1、X2和X3都是同样的宽度、高度和深度,因此循环计数子模块只需要选用6级循环中的3级循环,即可以完成整个运算过程,余下的3级循环可以用来处理其他神经网络计算任务。本领域技术人员应当理解的是,对于不同的计算模式和存储方式,可以依照上述方法灵活运用所述数据处理装置进行计算,计算逻辑和存储逻辑密切配合,因此能够更加简单方便地处理不同种类和/或不同精度的数据,提高神经形态芯片的计算效率和神经网络的推理效率,具有良好的扩展性。

在一种可能的实现方式中,所述数据处理装置既可以适用于人工神经网络的计算,也可以使用于脉冲神经网络的计算,还可以处理包括人工神经网络和脉冲神经网络的混合神经网络的计算。

本公开还提供了一种人工智能处理器,所述人工智能处理器包括多个处理核心,每个处理核心包括存储模块、计算模块及数据处理装置,所述数据处理装置分别连接所述存储模块和所述计算模块,所述数据处理装置包括:

地址产生模块,用于:根据设定的地址产生方式,生成待读取的第一数据的第一地址;

数据转换模块,连接到所述地址产生模块,用于:根据所述第一地址从所述存储模块读取所述第一数据;对读取到的所述第一数据进行转换,得到转换后的第二数据;将所述第二数据发送到所述计算模块,以使所述计算模块进行数据计算;

控制模块,分别连接到所述地址产生模块及所述数据转换模块,用于:根据预设的处理类别以及所述第一数据的数据类别,确定对应的地址产生方式,并控制所述地址产生模块根据所述地址产生方式生成地址。

通过根据设定的地址产生方式生成待读取的第一数据的第一地址,然后根据所述第一地址从所述存储模块读取所述第一数据,对读取到的所述第一数据进行转换进而得到转换后的第二数据,接着将所述第二数据发送到所述计算模块,并根据预设的处理类别及数据类别确定对应的地址产生方式并控制所述地址产生模块生成地址,本公开的数据处理装置及人工智能处理器能够克服传统神经形态芯片在处理不同的处理类别及数据类别的数据时受限、复杂和低效的问题,提高了神经形态芯片的计算效率和神经网络的推理效率,容易扩展。

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

相关技术
  • 数据处理装置及人工智能处理器
  • 用于人工智能处理器的数据互联方法、系统、芯片和装置
技术分类

06120112533779