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

文档序号:303616 发布日期:2021-11-26 浏览:9次 >En<

阅读说明:本技术 数据处理装置以及人工智能处理器 (Data processing device and artificial intelligence processor ) 是由 裴京 马骋 王冠睿 施路平 于 2021-08-27 设计创作,主要内容包括:本公开涉及一种数据处理装置以及人工智能处理器。数据处理装置,应用于人工智能处理器的处理核心,该人工智能处理器包括多个处理核心,每个处理核心包括存储模块及数据处理装置,该数据处理装置连接存储模块,该数据处理装置包括:地址产生模块,用于根据控制指令,生成输入地址以及输出地址;数据转换模块,连接到地址产生模块,用于根据输入地址从存储模块读取第一数据,对第一数据执行数据转换操作,得到第二数据,并将第二数据写入存储模块的输出地址。本公开实施例的数据处理装置能够对存储模块中的存储数据进行数据整合。(The present disclosure relates to a data processing apparatus and an artificial intelligence processor. Data processing apparatus, be applied to the processing core of artificial intelligence treater, this artificial intelligence treater includes a plurality of processing cores, and every processing core includes memory module and data processing apparatus, and this data processing apparatus connects memory module, and this data processing apparatus includes: the address generation module is used for generating an input address and an output address according to the control instruction; and the data conversion module is connected to the address generation module and used for reading the first data from the storage module according to the input address, performing data conversion operation on the first data to obtain second data and writing the second data into the output address of the storage module. The data processing device of the embodiment of the disclosure can integrate the data of the storage module.)

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

技术领域

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

背景技术

近年来神经形态计算领域发展迅速,可以采用硬件电路构建神经网络,从而模拟大脑的功能。例如,可以利用神经形态芯片建立大规模、并行、低能耗和可支撑复杂模式学习的计算平台。

相关技术中,神经形态芯片包括多个处理核心,如何在处理核心中实现数据整合已经成为一个亟待解决的问题。

发明内容

有鉴于此,本公开提出了一种数据处理装置以及人工智能处理器。

根据本公开的一方面,提供了一种数据处理装置,应用于人工智能处理器的处理核心,所述人工智能处理器包括多个处理核心,每个处理核心包括存储模块及数据处理装置,所述数据处理装置连接所述存储模块,所述数据处理装置包括:

地址产生模块,用于根据控制指令,生成输入地址以及输出地址;

数据转换模块,连接到所述地址产生模块,用于根据所述输入地址从所述存储模块读取第一数据,对所述第一数据执行数据转换操作,得到第二数据,并将所述第二数据写入所述存储模块的输出地址,其中,所述数据转换操作包括数据合并、数据拆分、数据迁移以及数据类型转换操作中的至少一种。

在一种可能的实现方式中,所述数据转换操作包括数据合并操作,

所述地址产生模块,用于根据控制指令,生成多个输入地址以及所述输出地址;

所述数据转换模块,用于根据多个输入地址,从所述存储模块中读取多个第一数据,并将所述多个第一数据合并生成的第二数据写入所述存储模块的所述输出地址。

在一种可能的实现方式中,所述数据转换操作包括数据拆分操作,

所述地址产生模块,用于根据控制指令,生成所述输入地址以及多个输出地址;

所述数据转换模块,用于根据所述输入地址从所述存储模块中读取第一数据,并将所述第一数据拆分得到的多个第二数据分别写入所述存储模块的多个输出地址。

在一种可能的实现方式中,所述数据转换操作包括数据迁移操作,

所述地址产生模块,用于根据控制指令,生成所述输入地址以及所述输出地址;

所述数据转换模块,用于根据所述输入地址从所述存储模块中读取第一数据,并将根据所述第一数据确定的第二数据写入所述存储模块的所述输出地址。

在一种可能的实现方式中,所述数据转换操作包括数据类型转换操作,

所述数据转换模块,用于在所述第一数据的数据类型与所述第二数据的数据类型不同时,对所述第一数据执行数据类型转换操作,得到第二数据,

其中,所述数据类型包括32位整数int32、8位整数int8以及三值数据类型中的任意一种。

在一种可能的实现方式中,所述装置还包括行计数模块,

所述行计数模块,用于根据所述处理核心的控制模块发送的计数脉冲进行计数,并在计数次数大于或等于行数阈值时,向所述地址产生模块发送所述控制指令。

在一种可能的实现方式中,所述控制指令包括所述处理核心的控制模块发送的原语指令。

在一种可能的实现方式中,所述地址产生模块包括多组计数器,所述多组计数器分别用于生成所述输入地址以及所述输出地址,并通过计数器逻辑控制所述数据转换模块执行所述数据转换操作。

在一种可能的实现方式中,所述地址产生模块包括第一组计数器、第二组计数器以及第三组计数器,

所述第一组计数器,用于生成第一地址,所述第一地址为所述输入数据的地址;

所述第二组计数器,用于生成第二地址;

所述第三组计数器,用于生成第三地址,所述第三地址为所述输出数据的地址,

其中,在执行数据合并操作时,所述第二地址为所述输入地址;在执行数据拆分操作时,所述第二地址为所述输出地址;在执行数据迁移操作时,跳过所述第二地址的生成操作。

在一种可能的实现方式中,所述输出地址包括位于所述处理核心的路由模块发送数据区的地址,

所述数据转换模块,用于将第二数据写入所述路由模块的发送数据区,以使所述路由模块发送所述第二数据。

在一种可能的实现方式中,所述数据类型包括32位整数int32、8位整数int8以及三值数据类型中的至少一种。

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

根据本公开的实施例,通过地址产生模块根据控制指令,生成输入地址以及输出地址;通过数据转换模块根据所述输入地址从所述存储模块读取第一数据,对所述第一数据执行数据转换操作,得到第二数据,并将所述第二数据写入所述存储模块的输出地址,能够实现对存储模块中的存储数据进行数据整合处理。

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

附图说明

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

图1示出根据本公开实施例的一种人工智能处理器的框图。

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

图3示出本公开实施例的特征图数据在存储模块的存储示意图。

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

图5示出本公开实施例的数据转换操作的示意图。

图6示出本公开实施例的数据合并操作的示意图。

图7示出本公开实施例的多个第一数据合并成第二数据的示意图。

图8示出本公开实施例的数据拆分操作的示意图。

具体实施方式

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

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

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

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

在一种可能的实现方式中,所述处理核心可以将神经元按照二维网状结构进行组织。其中,一个神经元可以包括轴突、树突和胞体等,神经元的轴突、树突和胞体均可以由硬件电路来实现。轴突可以是二维网状结构的行,树突可以是二维网状结构的列,突触可以是行列的十字交叉点,用于存储权重。其中,轴突可以用于数据的发送,树突可以用于数据的接收,突触可以用于存储权重,所述权重可以是后一神经元对经过突触前的前一神经元的加权值,对应神经网络的权重参数。例如,当用不到某一神经元时,该神经元的权重可以置0,当需要使用某一神经元进行计算时,可以为该神经元分配一个权重值。胞体可以用于实现对存储模块中的数据进行整理,数据整理的方法包括:数据迁移Move、数据合并Merge和数据拆分Split操作,胞体也可以规划相应的路径将数据进行路由,最终到达目的处理核心。

图1示出根据本公开实施例的一种人工智能处理器的框图。如1所示,该人工智能处理器100包括多个处理核心101,每个处理核心101可以包括存储模块、运算模块、数据处理装置等。

其中,存储模块可以用于各类数据,例如,存储图像的像素数据及卷积核的权重数据,存储模块可以包括单独的存储模块,也可以包括位于其他模块内部的存储模块,例如,位于路由模块内的存储模块;运算模块可以包括乘数累加器MAC阵列,用于根据像素数据及权重数据进行运算。数据处理装置可以用于对存储模块的存储数据进行数据整理,例如,数据迁移、数据合并、数据比较等操作。

本公开提供一种数据处理装置,可以用于实现对存储模块的存储数据进行数据整理。

图2示出本公开实施例的数据处理装置的框图。如图2所示,所述数据处理装置60可以应用于人工智能处理器的处理核心,所述人工智能处理器包括多个处理核心,每个处理核心包括存储模块40、控制模块50及数据处理装置60,所述数据处理装置连接所述存储模块和所述控制模块,所述数据处理装置包括:

地址产生模块10,用于根据控制指令,生成输入地址以及输出地址;

数据转换模块20,连接到所述地址产生模块,用于根据所述输入地址从所述存储模块读取第一数据,对所述第一数据执行数据转换操作,得到第二数据,并将所述第二数据写入所述存储模块的输出地址,其中,所述数据转换操作包括数据合并、数据拆分、数据迁移以及数据类型转换操作中的至少一种。

举例来说,数据转换操作可以是对多个第一数据进行的合并操作、对第一数据进行的拆分操作、对第一数据进行的迁移操作等,其中,在进行上述操作过程中,还可以进行数据类型的转换操作,例如,将数据类型为32位整数int32的第一数据或者中间转换数据的数据类型转换为8位整数int8。第一数据可以为一个或多个,第二数据可以为一个或多个,本公开对数据转换操作的类型、第一数据和第二数据的个数均不做限制。

通过本公开实施例的数据处理装置,能够实现对存储模块的存储数据进行数据整理。

其中,所述处理核心的存储模块可以用于存储和神经网络计算相关的数据和指令。在一个示例中,所述存储模块可以是具有一定存储容量的内存,存储神经网络计算中的向量、矩阵和张量等不同种类的数据。

在一种可能的实现方式中,所述存储模块中存储有特征图(Feature Map)数据,其中,特征图数据以向量为单位存放,每个向量包含通道Channel方向的数据,可以称为向量的深度。通道Channel数据可以按照16Byte宽度对齐,其所占存储模块的单元数量,可以称为单位向量的长度,特征图数据可以由向量个数和每个向量的长度所构成。

图3示出本公开实施例的特征图数据在存储模块的存储示意图。如图3所示,特征图数据为宽×高×通道,其中,宽、高以3为例,该特征图包括的向量个数为9。每个向量通道方向的数据按照16Byte宽度对齐,得到向量的长度为3。如图3所示,该特征图数据在存储器的存放顺序可以为:按照通道Channel方向、特征图数据中向量的行方向以及特征图数据中向量的列方向依次存放。

应理解,特征图数据在存储模块的存储顺序可以包括多种形式,本公开对数据处理装置处理的数据类型、数据在存储模块中的存储形式均不做限制。为便于理解,本公开以对存储模块中存储的向量形式的特征图数据执行数据转换操作为例进行说明。

在一种可能的实现方式中,所述数据转换操作包括数据合并、数据拆分、数据迁移以及数据类型转换操作中的至少一种。

在一种可能的实现方式中,所述数据转换操作包括数据合并操作,

所述地址产生模块,用于根据控制指令,生成多个输入地址以及所述输出地址;

所述数据转换模块,用于根据多个输入地址,从所述存储模块中读取多个第一数据,并将所述多个第一数据合并生成的第二数据写入所述存储模块的所述输出地址。

在一种可能的实现方式中,所述数据转换操作包括数据拆分操作,

所述地址产生模块,用于根据控制指令,生成所述输入地址以及多个输出地址;

所述数据转换模块,用于根据所述输入地址从所述存储模块中读取第一数据,并将所述第一数据拆分得到的多个第二数据分别写入所述存储模块的多个输出地址。

在一种可能的实现方式中,所述数据转换操作包括数据迁移操作,

所述地址产生模块,用于根据控制指令,生成所述输入地址以及所述输出地址;

所述数据转换模块,用于根据所述输入地址从所述存储模块中读取第一数据,并将根据所述第一数据确定的第二数据写入所述存储模块的所述输出地址。

在一种可能的实现方式中,所述数据转换操作包括数据类型转换操作,

所述数据转换模块,用于在所述第一数据的数据类型与所述第二数据的数据类型不同时,对所述第一数据执行数据类型转换操作,得到第二数据,

其中,所述数据类型包括32位整数int32、8位整数int8以及三值数据类型中的任意一种。

举例来说,数据合并操作可以理解为根据多个第一数据合并生成第二数据,例如,可以实现两个向量在深度方向的合并。数据拆分操作可以理解为根据第一数据拆分为多个第二数据,例如,可以实现向量的深度方向的拆分。数据迁移操作可以理解为将存储模块中输入地址对应的第一数据转换为第二数据,并将第二数据写入至存储模块的输出地址中,其中,第一数据转换为第二数据可以是将第一数据确定为第二数据,也可以是将第一数据进行数据类型转换,得到转换后的第二数据。这样,可以实现存储空间的向量循环迁移操作。

其中,数据类型转换操作可以是指对数据类型进行转换,例如,待写入存储器的第二数据的目标数据类型为int8,第一数据的数据类型为int32,可以将数据类型从int32转换为int8等。其中,在进行数据转换操作时,可以包括数据合并、数据拆分、数据迁移以及数据类型转换操作中的至少一种,例如,可以同时包括执行数据合并和数据拆分操作,还可以同时包括数据合并与数据类型转换操作,本公开对此不做限制。

通过这种方式,可以实现对存储模块中的数据进行数据合并、数据拆分、数据迁移、数据类型转换等各种操作,从而使得人工智能处理器能够实现神经网络中的多种数据变换,例如,如求部分和,图像的抽帧,数据空间的迁移及存储空间执行清零等操作。

其中,控制指令可以用于确定数据转换操作的类别以及与数据转换操作对应的地址产生方式,举例来说,不同的数据转换操作,对应的输入地址的数量、输出地址的数量可以不同。控制指令还可以用于确定输入地址和输出地址的地址起始和地址终止位置,或者输入地址和输出地址的存储区域等。

例如,在数据转换操作为数据合并操作时,输入地址可以包括第一地址和第二地址,输出地址可以包括第三地址。在数据转换操作为数据拆分操作时,输入地址可以包括第一地址,输出地址可以包括第二地址和第三地址。在数据转换操作为数据迁移操作时,可以跳过第二地址的生成,输入地址可以包括第一地址,输出地址可以包括第三地址。

应理解,在数据转换操作为数据合并操作时,输入地址可以包括多于两个的地址,不限于第一地址和第二地址,在数据转换操作为数据拆分操作时,输出地址也可以包括多于两个的地址,本公开对数据转换操作中产生的输入地址的数量以及输出地址的数量均不做限制。

为便于理解,将以在数据转换操作为数据合并操作时,输入地址包括第一地址和第二地址,输出地址包括第三地址。在数据转换操作为数据拆分操作时,输入地址包括第一地址,输出地址包括第二地址和第三地址。在数据转换操作为数据迁移操作时,输入地址包括第一地址,输出地址包括第三地址为例进行说明。

其中,所述控制指令可以是来自于与数据处理装置连接的控制模块,也可以是数据处理装置在满足预设条件时,生成的控制指令,本公开对此不做限制。

在一些可选的实施例中,所述控制指令可以是控制模块发送的原语指令,例如,可以是来自控制模块中的原语指令(PI,Primitive Instructions)寄存器的原语指令。

在一些可选的实施例中,所述控制指令可以是数据处理装置中的行计数模块产生的控制指令。

图4示出本公开实施例的数据处理装置的示意图。如图4所示,在一些可选的实施例中,所述数据处理装置还包括行计数模块,

所述行计数模块,用于根据所述控制模块发送的计数脉冲进行计数,并在计数次数大于或等于行数阈值时,向所述地址产生模块发送所述控制指令。

其中,如图4所示,行计数模块可以为行计数器。

图5示出本公开实施例的数据转换操作的示意图。如图5所示,控制模块的原语指令寄存器向行计数模块发送计数脉冲,行计数模块根据接收到的计数脉冲进行计数,并在计数次数大于行数阈值时,向地址产生模块发送启动的控制指令,地址产生模块响应于该控制指令,生成输入地址和输出地址。

通过行计数模块,可以完成数据转换的行流水操作。其中,行流水操作可以理解为:输入向量存储模块每收到1行特征图的数据,由原语指令寄存器发送1个计数脉冲。行计数模块每接收到1个计数脉冲都会触发计数器计数,当计数器的行数大于或等于预设的行数阈值时,由行计数模块发送地址产生模块启动的控制信号,地址产生模块可以根据该控制信号运行数据转换操作。

在一种可能的实现方式中,所述地址产生模块包括多组计数器,所述计数器分别用于产生输入地址以及输出地址,并通过计数器控制所述数据转换模块完成数据转换操作。其中,可以根据向量个数和向量长度作为计数器循环,以产生输入地址以及输出地址。

举例来说,本公开实施例的地址产生模块可以包括三组计数器。第一组计数器,用于生成第一地址Addr_in,第二组计数器,用于生成第二地址Addr_ciso,第三组计数器,用于生成第三地址Addr_out。

其中,在各类数据转换操作中,第一地址Addr_in可以作为输入地址,第三地址Addr_out可以用于输出地址。第二地址Addr_ciso可以根据数据转款操作的类别,分别用于输入地址或输出地址。例如,当执行数据合并操作时,可以将第二地址Addr_ciso作为输入地址;当执行数据拆分操作时,可以将第二地址Addr_ciso作为输出地址。当执行数据迁移操作时,可以跳过第二地址Addr_ciso的生成。

这样,通过地址产生模块的三组计数器,便于实现对存储模块的各类数据整理。应理解,本公开实施例对地址产生模块的形式不做限制,且只要能够实现数据合并、数据拆分、数据迁移以及数据类型转换中至少一个数据转换操作即可,本公开对地址产生模块的计数器的个数不做限制。

在一种可能的实现方式中,所述数据转换模块,还用于在第一数据的数据类型与待输出的第二数据的数据类型不同时,在数据转换操作过程中执行数据类型转换操作。

通过数据转换模块,能够更加高效地处理带数据类型转换的数据合并、数据拆分和数据迁移操作。

在一些可选的实施例中,所述数据转换模块,用于根据第二数据的数据类型,对所述第一数据执行数据类型转换,并根据数据类型转换后的第三数据执行数据转换操作,得到所述第二数据。

例如,数据转换模块可以根据数据类型转换规则,将第一数据转换为与待输出的第二数据类型相同的第三数据,并对第三数据执行数据合并、数据拆分或者数据迁移等操作,得到第二数据。

在一些可选的实施例中,所述数据转换模块,还用于对第一数据执行数据转换操作,得到第三数据,并将第三数据的数据类型转换为第二数据的类型,本公开对此不做限制。

在一种可能的实现方式中,所述数据转换模块,可以用于int32,int8,三值数据ternary三种数据类型间的转换操作。例如,可以将int32数据转换为三值数据、将int8数据转换为三值数据、将int32数据转换为int8数据。

其中,脉冲神经网络中神经元的输出脉冲序列可以按照三值数据进行编码。例如,(0、1和-1)可以用于描述脉冲神经网络的神经元分别处于无动作、激活和抑制的状态,三值数据也可以有不同的种类。应理解,数据转换模块还可以将数据转换为全0数据等,本公开对数据转换模块的转换类型不做限制。

如图4所示,在一种可能的实现方式中,所述数据转换模块可以包括多条通路以及数据选通器(Multiplexer)。其中,多条通路可以分别为int32转换为三值通路、int8转换为三值通路、int32转换为int8通路、直通通路以及16B的“0”通路。

这样,通过该数据转换模块可以实现在输入数据和输出数据的数据类型不相同时,支持三种数据类型转换。例如,在输入数据和输出数据的数据类型相同时,可以选择直通通路,在执行针对输出地址的清零操作时,可以选择16B的“0”通路,使得写入输出地址的第二数据为全0数据。本公开对数据转换模块包括的通路数量、通路类型均不作限制。

为便于理解,下文将以地址产生模块三组计数器,三组计数器可以根据控制指令,分别生成第一地址、第二地址以及第三地址为例,说明本公开实施例的数据处理装置在输入数据和输出数据的数据类型相同以及输入数据和输出数据的数据类型不相同时,如何执行数据合并操作、数据拆分操作以及数据迁移操作。

在一种可能的实现方式中,所述数据转换操作为数据合并操作,所述输入地址包括第一地址和第二地址,所述输出地址包括第三地址,

所述数据转换模块20,用于根据所述第一地址以及所述第二地址,分别从所述存储模块中读取多个第一数据,并将所述多个第一数据合并生成的第二数据写入所述存储模块的第三地址。

其中,在第一数据与第二数据的数据类型相同时,如前所述,所述数据转换模块的数据选通器可以选择直通通路,并执行对多个第一数据的合并操作。

举例来说,第一地址对应的第一数据以及第二地址对应的第一数据可以理解为输入数据,多个第一数据合并后的数据可以理解为输出数据。以第一地址对应的第一数据为in、第二地址对应的第一数据为ciso,合并得到的第二数据为out为例。

其中,第一数据in和第一数据ciso可以为包含向量个数相同、向量数据类型相同的输入向量。其中,第一数据in和第一数据ciso的向量长度可以不相同。

在一种可能的实现方式中,可以将第一地址对应的第一数据和第二地址对应的第一数据拼接为输出向量,其中,在拼接后的第二数据中,第一地址对应的第一数据的向量元素位于第二地址对应的第一数据的向量元素之前。

举例来说,在数据合并过程中,可以将in的向量整合到输出向量中,再整合ciso向量。例如,in、ciso和out分别是三组向量集,向量集内的最小单位是向量,数学表示可以如下:

in={in00,in01,in02};ciso={ciso00,ciso01,ciso02};

对多个第一数据执行合并操作得到的第二数据可以为:

out={out0,out1,out2}

其中:out0={in00,ciso00},out1={in01,ciso01},out2={in02,ciso02};

其中,第二数据out={{in00,ciso00},{in01,ciso11},{in02,ciso12}}。

需要说明的是,上述数学表达式为示例性说明,本公开对合并的方式不做限制。

在一些可选的实施例中,所述数据转换模块模块20,用于在所述第二数据的向量数量大于所述多个第一数据的向量数量之和,和/或,所述第二数据的向量长度大于所述多个第一数据的向量长度之和时,对剩余存储空间执行补0操作。

图6示出本公开实施例的数据合并操作的示意图。第一数据in的个数为:num_in,向量长度:Km_num_in;第一数据ciso的个数为:num_ciso,向量长度:Km_num_ciso;第二数据out的个数为:num_out,向量长度:Km_num_out。

如图6所示,当执行数据合并操作时,第二数据out的向量总长度为15,第一数据in和第一数据ciso的向量总长度之和为12,可以对剩余存储空间执行补0操作,根据第一数据in的X0和第一数据ciso的X0合并得到的Y0、第一数据in的X1和第一数据ciso的X1合并得到Y1以及第一数据in的X2和补0得到的Y2,生成第二数据out,并写入第三地址。

在一些可选的实施例中,第一数据与第二数据的数据类型不相同。

举例来说,可以通过设置不同的截取位,以实现精度设置。举例来说,可以通过设置参数in_cut_start位来实现数据类型转换。应理解,在进行数据类型转换过程中,向量长度会发生变化,例如,将数据类型为int32、向量长度为4的数据转换为数据类型为int8的向量时,向量长度会由4变为1。其中,可以是将数据类型为int32的第一数据的目标位起向前或向后截取的连续的多位确定为int8的第一数据,也可以是将随机选择多位数据,确定为int8的第一数据,本公开对此不做限制。

图7示出本公开实施例的多个第一数据合并成第二数据的示意图。

如图7所示,第一数据in的X0为int32类型的数据,可以将其转换为int8的向量,向量长度会由4变为1。同理,第一数据ciso的X0转换为int8的向量,向量长度会由4变为1,并将向量长度均为1的向量进行合并,得到第二数据out中的Y0。如前所述,在数据转换过程中可以执行补0操作,在此不再赘述。

在一种可能的实现方式中,所述数据转换操作为数据拆分操作,所述输入地址包括第一地址,所述输出地址包括第二地址和第三地址,

所述数据转换模块20,用于根据所述第一地址从所述存储模块中读取第一数据,并将所述第一数据拆分得到的多个第二数据分别写入所述存储模块的第二地址和第三地址。

如前所述,第一数据in表示输入数据,第二数据out表示第一输出数据,第一数据ciso表示第二输出数据,在数据拆分时,可以按照先第二数据out,再第一数据ciso的顺序进行拆分,若第一数据in的向量数量小于第二数据out和第一数据ciso的向量数量之和,和/或,第一数据in的向量长度小于第二数据out和第一数据ciso的向量长度之和时,可以优先拆分为第二数据out。

例如,in、ciso和out分别是三组向量集,向量集内的最小单位是向量长度,数学表示可以表示为如下:

in={in00,in01,in02};

向量拆分结果可以表示为:

out={out0,out1,out2};ciso={ciso00,ciso01,ciso02};

其中:in00={out0,ciso00},in01={out1,ciso01},in02={out2,ciso02}

需要说明的是,上述数学表达式为示例性说明,本公开对数据拆分的方式、形式均不做限制。如前所述,在确定存在剩余存储空间时,可以执行补0操作,在此不再赘述。

图8示出本公开实施例的数据拆分操作的示意图。

如图8所示,在数据拆分时,根据第二数据out的向量数量和向量长度以及第一数据ciso0的向量长度和向量数据,对第一数据in执行数据拆分操作。如图8所示,第二数据out的向量长度为2,第一数据ciso0的向量长度为1,可以将第一数据in的X0拆分成out0(向量长度为2)和ciso0(向量长度为1),并将out0写入第三地址,将ciso0写入第二地址。

其中,在第二数据和第一数据的数据类型不同时,执行数据拆分操作的数据类型转换操作可以参考执行数据合并操作的数据类型转换操作,在此不再赘述。

在一种可能的实现方式中,所述数据转换操作为数据迁移操作,所述输入地址包括第一地址,所述输出地址包括第三地址,

所述数据转换模块20,用于根据所述第一地址从所述存储模块中读取第一数据,并将根据所述第一数据确定的第二数据写入所述存储模块的第三地址。

其中,可以将第一数据确定为第二数据,也可以将第一数据进行数据类型转换得到的数据确定为第二数据。

举例来说,数据转换操作为数据迁移操作(例如,控制指令中第二地址的个数或长度为0)时,地址产生模块跳过第二地址的生成,生成第一地址和第三地址。

这样,可以实现数据直接迁移操作,还可以实现带数据类型转换的数据迁移操作,第一数据通过数据转换模块转换数据类型,并作为第二数据写入第三地址,实现数据迁移操作。

在一种可能的实现方式中,所述数据处理装置、存储模块和控制模块可以位于人工智能处理器的处理核心内。所述人工处理器可以是神经形态芯片,所述处理核心可以是神经形态芯片的功能核。所述处理核心还可以包括其他模块,例如,计算模块、路由模块等。

在一种可能的实现方式中,所述输出地址包括位于所述处理核心的路由模块发送数据区的地址,

所述数据转换模块,用于将第二数据写入所述路由模块的发送数据区,以使所述路由模块发送所述第二数据。

这样,可以直接启动路由模块发送数据。

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

本公开还提供了一种处理核心,所述处理核心包括所述控制模块、所述存储模块以及所述数据处理装置,所述数据处理装置包括:

地址产生模块,用于根据控制指令,生成输入地址以及输出地址;

数据转换模块,连接到所述地址产生模块,用于根据所述输入地址从所述存储模块读取第一数据,对所述第一数据执行数据转换操作,得到第二数据,并将所述第二数据写入所述存储模块的输出地址。

在一种可能的实现方式中,所述处理核心还包括路由模块,所述路由模块包括发送数据区,路由模块用于,发送所述发送数据区的第二数据,其中,第二数据可以是数据处理模块写入的第二数据。

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

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

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

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

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

地址产生模块,用于根据控制指令,生成输入地址以及输出地址;

数据转换模块,连接到所述地址产生模块,用于根据所述输入地址从所述存储模块读取第一数据,对所述第一数据执行数据转换操作,得到第二数据,并将所述第二数据写入所述存储模块的输出地址。

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

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

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

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

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

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

20页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:设备控制方法、装置、设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!