CN113222126B - 数据处理装置、人工智能芯片 - Google Patents
数据处理装置、人工智能芯片 Download PDFInfo
- Publication number
- CN113222126B CN113222126B CN202010072639.6A CN202010072639A CN113222126B CN 113222126 B CN113222126 B CN 113222126B CN 202010072639 A CN202010072639 A CN 202010072639A CN 113222126 B CN113222126 B CN 113222126B
- Authority
- CN
- China
- Prior art keywords
- selection unit
- input
- unit
- output
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
Abstract
本公开实施例提供一种数据处理装置、人工智能芯片,包括具有多个输入端和多个输出端的第一选择单元,具有多个输入端和多个输出端的第二选择单元,以及多个运算单元;所述第一选择单元的多个输入端可配置地连接所述第一选择单元的多个输出端,所述第一选择单元的多个输出端中的至少一部分连接所述多个运算单元的输入端,所述多个运算单元的输出端连接于所述第二选择单元的多个输入端,所述第二选择单元的多个输入端可配置地连接所述第二选择单元的多个输出端,所述第二选择单元的多个输出端中的至少一部分与所述第一选择单元的多个输入端连接,和/或与所述数据处理装置的数据输出端口连接,以使所述多个运算单元构成不同的运算通路。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及数据处理装置、人工智能芯片。
背景技术
在各种应用场景(例如,神经网络应用场景)中,存在各种各样的运算操作,有基本的简单函数的运算,比如加、减、乘、除等,也存在大量的非常规的复杂运算,并且不同的应用场景所包括的复杂运算的形式也五花八门,同时新类型的复杂运算组合方式也层出不穷。随着运算类型的增加以及运算量的增大,执行运算操作的数据处理装置的面积和功耗也相应增大。
发明内容
本公开提供一种数据处理装置、人工智能芯片。
根据本公开实施例的第一方面,提供一种数据处理装置,所述装置包括:具有多个输入端和多个输出端的第一选择单元,具有多个输入端和多个输出端的第二选择单元,以及多个运算单元;所述第一选择单元的多个输入端可配置地连接所述第一选择单元的多个输出端,所述第一选择单元的多个输出端中的至少一部分连接所述多个运算单元的输入端,所述多个运算单元的输出端连接于所述第二选择单元的多个输入端,所述第二选择单元的多个输入端可配置地连接所述第二选择单元的多个输出端,所述第二选择单元的多个输出端中的至少一部分与所述第一选择单元的多个输入端连接,和/或与所述数据处理装置的数据输出端口连接,以使所述多个运算单元构成不同的运算通路。
在一些实施例中,所述装置还包括:第一寄存器,用于存储第一配置信息,所述第一配置信息用于配置:所述第一选择单元的多个输入端与所述第一选择单元的多个输出端之间的连接关系,和/或,所述第二选择单元的多个输入端与所述第二选择单元的多个输出端之间的连接关系。
在一些实施例中,所述装置还包括:第二寄存器,用于存储第二配置信息,所述第二配置信息用于配置所述多个运算单元中的至少一部分的运算类型。
在一些实施例中,所述第一选择单元的多个输入端包括至少一个第一输入端,所述第一输入端与所述数据处理装置的数据输入端口连接,用于输入原始操作数。
在一些实施例中,所述运算单元用于检测输入数据中的有效标识信息,并响应于检测到所述输入数据中的有效标识信息,对所述输入数据进行运算。
在一些实施例中,所述装置还包括:至少一个延迟单元;所述延迟单元的输入端连接于所述第一选择单元的输出端,所述延迟单元的输出端连接于所述第二选择单元的输入端;所述延迟单元用于对从所述第一选择单元的输出端接收到的数据进行延迟处理,并将所述延迟处理后的数据传输至所述第二选择单元的输入端。
在一些实施例中,所述装置还包括:至少一个第三寄存器,所述第三寄存器的输入端连接所述第二选择单元的输出端,所述第三寄存器的输出端连接所述第一选择单元的输入端,或连接于所述数据处理装置的数据输出端口。
在一些实施例中,所述第一选择单元的多个输入端包括至少一个第二输入端,所述第二输入端通过连接线与所述第二选择单元的输出端连接,或者通过连接线与用于存储运算参数的第四寄存器连接。
在一些实施例中,所述多个运算单元包括至少一个算数运算单元和/或至少一个逻辑运算单元。
根据本公开实施例的第二方面,提供一种人工智能芯片,所述人工智能芯片包括任一实施例所述的数据处理装置。
在一些实施例中,所述人工智能芯片还包括:控制单元,所述控制单元用于控制所述数据处理装置,以使所述数据处理装置中的多个运算单元构成不同的运算通路。
在一些实施例中,所述控制单元进一步用于:对所述数据处理装置的配置信息进行配置,以使所述数据处理装置中的多个运算单元构成不同的运算通路。
在一些实施例中,所述配置信息包括以下至少任一:第一配置信息,用于配置所述第一选择单元的多个输入端与所述第一选择单元的多个输出端之间的连接关系,和/或所述第二选择单元的多个输入端与所述第二选择单元的多个输出端之间的连接关系,第二配置信息,用于配置所述多个运算单元中的至少一部分的运算类型。
在一些实施例中,所述第一选择单元的多个输入端包括至少一个第一输入端;所述控制单元进一步用于:将原始操作数写入所述第一选择单元的至少一个第一输入端。
本公开实施例的数据处理装置,通过改变第一选择单元和第二选择单元内部的连接方式,能够形成不同的数据处理通路,通过非固化的装置连接方式,实现了运算单元的高效复用,节省了数据处理装置的面积。另外,在第一选择单元和第二选择单元内部的连接方式配置好之后,本公开实施例的方案能够在运算通路中自动形成多个运算单元的流水操作,完成高效的数据处理,节省了数据处理功耗,获得了较高的能耗比。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1是本公开实施例的数据处理装置的结构示意图。
图2是本公开另一些实施例的数据处理装置的结构示意图。
图3A是本公开一些实施例的连接方式的示意图。
图3B是图3A所示的连接方式对应的数据处理通路的示意图。
图4A是本公开另一些实施例的连接方式的示意图。
图4B是图4A所示的连接方式对应的数据处理通路的示意图。
图5是本公开实施例的配置信息的示意图。
图6是本公开具体实施例的数据处理装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好的理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中的技术方案作进一步详细的说明。
在许多应用场景下,往往存在各种各样的数据处理操作,例如,运算操作。以神经网络应用场景为例,神经网络中的激活函数的运算可能包括基本的简单函数运算,比如加法运算、减法运算、乘法运算和除法运算等,也可能包括大量的非常规的复杂运算,并且不同的神经网络中所包括的复杂运算的形式也五花八门;同时,新类型的神经网络也层出不穷。因此,在设计用于执行数据处理操作的数据处理装置时,往往面临着运算单元类型多、数据处理量大的难题,另外,还要求数据处理装置同时要兼顾面积小和低功耗的设计要求。
本公开实施例提供了一种数据处理装置,如图1所示,所述装置可包括:
具有多个输入端和多个输出端的第一选择单元101,具有多个输入端和多个输出端的第二选择单元102,以及多个运算单元103;
所述第一选择单元101的多个输入端可配置地连接所述第一选择单元101的多个输出端,所述第一选择单元101的多个输出端中的至少一部分连接所述多个运算单元103的输入端,
所述多个运算单元103的输出端连接于所述第二选择单元102的多个输入端,
所述第二选择单元102的多个输入端可配置地连接所述第二选择单元102的多个输出端,所述第二选择单元102的多个输出端中的至少一部分与所述第一选择单元101的多个输入端连接,和/或与所述数据处理装置的数据输出端口连接,以使所述多个运算单元103构成不同的运算通路。
在本公开实施例中,所述第一选择单元101和所述第二选择单元102均可以包括多个输入端和多个输出端,所述第一选择单元101可配置地将输入端中的部分或全部连接到输出端中的部分或全部;同理,所述第二选择单元102也可配置地将输入端中的部分或全部连接到输出端中的部分或全部,从而使连接在第一选择单元101和所述第二选择单元102之间的多个运算单元103构成数据处理通路。在实际应用中,第一选择单元101的输入端的数量与第一选择单元101的输出端的数量可以相同,也可以不同;第二选择单元102的输入端的数量与第二选择单元102的输出端的数量可以相同,也可以不同;第一选择单元101的输入端的数量与第二选择单元102的输出端的数量可以相同,也可以不同。
在本公开实施例中,选择单元的内部连接关系可以根据需求配置,例如,连接单元的输入端与输出端之间的连接关系,或者,连接单元的外部连接关系可以配置,例如,连接单元的输入端或输出端与其他单元之间的连接关系,等等。
第一选择单元101的输入端与输出端的连接方式,以及第二选择单元102的输入端与输出端的连接方式,可以根据第一配置信息来确定。所述第一配置信息可以预先配置。当第一配置信息不同的时候,第一选择单元101的输入端与输出端的连接方式,以及所述第二选择单元102的输入端与输出端的连接方式均可以不同,从而使多个运算单元103构成不同的数据处理通路。所述连接方式包括第一选择单元101的每个输入端所连接的第一选择单元101的输出端,以及所述第二选择单元102的每个输入端所连接的第二选择单元102的输出端。
如图2所示,在一些实施例中,所述装置还包括:第一寄存器104,用于存储第一配置信息,所述第一配置信息用于配置:所述第一选择单元101的多个输入端与所述第一选择单元101的多个输出端之间的连接关系,和/或,所述第二选择单元102的多个输入端与所述第二选择单元102的多个输出端之间的连接关系。所述第一选择单元101可以与所述第一寄存器104相连接,以从所述第一寄存器104获取所述第一配置信息。同理,所述第二选择单元102也可以与所述第一寄存器104相连接,以从所述第一寄存器104获取所述第一配置信息。所述第一寄存器104的数量可以是一个或多个,其数量可以根据所述第一配置信息的长度以及所述第一寄存器104的宽度来确定。
如图3A和图3B所示,是本公开一些实施例的第一选择单元101和所述第二选择单元102的连接方式的示意图,以及该连接方式下各个运算单元103构成的数据处理通路的示意图。在图3A中,第一选择单元101的输入端1与输出端2、输入端2与输出端4、输入端3与输出端1对应连接,第二选择单元102的输入端1与输出端1、输入端2与输出端2、输入端4与输出端3对应连接。从而构成的数据处理通路上依次包括运算单元2、运算单元4和运算单元1。
如图4A和图4B所示,是本公开另一些实施例的第一选择单元101和所述第二选择单元102的连接方式的示意图,以及该连接方式下各个运算单元103构成的数据处理通路的示意图。在图4A中,第一选择单元101的输入端1与输出端1、输入端2与输出端2、输入端3与输出端3、输入端4与输出端4对应连接,第二选择单元102的输入端1与输出端2、输入端2与输出端3、输入端3与输出端4、输入端4与输出端1对应连接。从而构成的数据处理通路上依次包括运算单元1、运算单元2、运算单元3和运算单元4。
本领域技术人员可以理解,以上连接方式以及数据处理通路的实施例仅为示例性说明,本公开不限于此。在实际应用中,第一选择单元101的输入端的数量和输出端的数量以及连接方式均可以根据需要而设定。并且,第一选择单元101和所述第二选择单元102均可以是一个单独的选择单元,也可以是由多个选择单元构成的选择单元。
其中,运算单元103可以包括各种类型的运算单元,其类型可以包括但不限于算术运算单元和逻辑运算单元中的至少一者,或者包括向量运算单元、标量运算单元和矩阵运算单元中的至少一种,等等。其中,算术运算单元可包括但不限于以下至少一种:加减法运算单元、乘法运算单元、除法运算单元、指数运算单元、对数运算单元、开方运算单元、三角函数运算单元、导数运算单元、积分运算单元、卷积运算单元、取整运算单元等。所述逻辑运算单元可包括求与运算单元、求或运算单元、求非运算单元等等。每种类型的运算单元的数量可以是一个或多个。每个运算单元103可以包括一个或多个输入端,也可以包括一个或多个输出端。当一个运算单元103包括多个输入端时,所述运算单元103的每个输入端连接所述第一选择单元101的一个输出端;当一个运算单元103包括多个输出端时,所述运算单元103的每个输出端连接所述第二选择单元102的一个输入端。
运算单元103中的一者或多者的运算类型可根据实际情况进行配置。例如,选择比较器的运算方式可被配置为求最大值,求最小值,累计求最大值等形式;加减法运算单元可被配置为加法或者减法;累加运算单元可被配置为求累加或者加法;指数运算单元的幂指数可被配置为操作数或者操作数的相反数。在一些实施例中,所述装置还包括:第二寄存器105,用于存储第二配置信息,所述第二配置信息用于配置所述多个运算单元103中的至少一部分的运算类型。所述多个运算单元103中的至少一部分可以与所述第二寄存器105相连接,以从所述第二寄存器105中获取所述第二配置信息。所述第二寄存器105的数量可以是一个或多个,其数量可以根据所述第二配置信息的长度以及所述第二寄存器105的宽度来确定。
在一些实施例中,第一寄存器104和第二寄存器105可以是相同的寄存器,该寄存器中的一部分存储空间用于存储第一配置信息,另一部分存储空间用于存储第二配置信息。例如,寄存器的第1至第N1位用于存储第一配置信息,第N1+1至第N2位用于存储第二配置信息。在一些实施例中,第一寄存器104和第二寄存器105也可以是不同的寄存器。
在一些实施例中,所述第一选择单元101的多个输入端包括至少一个第一输入端,所述第一输入端与所述数据处理装置的数据输入端口连接,用于输入原始操作数。所述第一输入端也称为操作数输入端。所述数据处理装置的数据输入端口可以从内存、外部控制单元或者其他数据处理装置获取到所述原始操作数。在实际应用中,所述第一输入端与所述数据处理装置的数据输入端口连接,也可以包括将所述第一输入端本身作为所述数据处理装置的数据输入端口的情形。
在进行运算时,首先向第一选择单元101的一个操作数输入端输入操作数,由第一选择单元101将操作数输出至第一选择单元101的一个或多个输出端,再输出至与所述一个或多个输出端相连接的运算单元103进行运算,得到中间运算结果。中间运算结果经运算单元103的输出端输出至第二选择单元102与运算单元103相连接的输入端,再由第二选择单元102的输入端输出至第二选择单元102的输出端,然后由第二选择单元102的输出端输出至第一选择单元101的输入端,再重复上述过程,如此循环往复,直到得到最终运算结果,该最终运算结果可通过第二选择单元102输出至所述数据处理装置的数据输出端口。输入到第一选择单元101的操作数也可以经过运算单元103进行运算之后作为最终运算结果,再经第二选择单元102直接输出至所述数据处理装置的数据输出端口。
在一些实施例中,所述运算单元103用于检测输入数据中的有效标识信息,并响应于检测到所述输入数据中的有效标识信息,对所述输入数据进行运算。所述输入数据可以是原始操作数,也可以是经运算单元103运算后的中间运算结果,运算单元103对原始操作数进行运算得到中间运算结果之后,可以将所述有效标识信息与所述中间运算结果一起输出到第二选择单元102。
在本实施例中,通过向所述第一选择单元101写入有效标识信息从而开始执行运算操作。只有在写入有效标识信息之后,才开始执行运算操作,否则,不执行运算操作。在一次运算过程中,当输入到第一选择单元101的某个输入端的一组操作数的数量为多个时,可以在该组操作数中的每一个操作数中携带所述有效标识信息。
例如,当需要进行计算的操作数包括{1,2,3},而输入到第一选择单元101的操作数输入端的数据为{1,x,2,x,3}时,只有1、2和3这三个操作数为有效操作数,两个x均为无效操作数。此时,操作数1、2和3中可以分别携带所述有效标识信息,而x中不携带所述有效标识信息,从而可以区分出有效操作数和无效操作数。只有当操作数中携带所述有效标识信息时,运算单元103才会对所述操作数进行处理,不携带所述有效标识信息的操作数则不进行处理,从而可以节省数据处理装置的功耗。
在一些实施例中,所述装置还包括:至少一个延迟单元106;所述延迟单元106的输入端连接于所述第一选择单元101的输出端,所述延迟单元106的输出端连接于所述第二选择单元102的输入端;所述延迟单元106用于对从所述第一选择单元101的输出端接收到的数据进行延迟处理,并将所述延迟处理后的数据传输至所述第二选择单元102的输入端。由于不同类型的运算单元进行运算所需的时间不同,因此,通过延迟单元106对运算单元103各个输入端的数据进行对齐,可以保证具有多元输入的运算单元103的每个输入数据同时有效到达。
例如,对于1+ex这一运算,首先需要通过指数运算单元对操作数进行指数运算,再将指数运算的结果输入到加法运算单元的第一输入端,将运算参数1输入到加法运算单元的第二输入端,然后由加法单元对两个输入端的数据进行相加运算。由于加法运算单元的第一输入端的数据相对于第二输入端的数据会存在延迟,因此,可以将运算参数1先输入到一个延迟单元进行延迟处理,再输入到加法运算单元的第二输入端,以使加法运算单元的第一输入端和第二输入端的数据同时到达。
在一些实施例中,所述装置还包括:至少一个第三寄存器107,所述第三寄存器107的输入端连接所述第二选择单元102的输出端,所述第三寄存器107的输出端连接所述第一选择单元101的输入端,或连接于所述数据处理装置的数据输出端口。其中,所述第三寄存器107的输出端连接于所述数据处理装置的数据输出端口,也可以包括将所述第三寄存器107的输出端作为所述数据处理装置的数据输出端口的情形。所述数据输出端口可以连接到内存或者其他数据处理装置。通过设置第三寄存器107,能够减少数据处理装置内部的数据传输时延。
在一些实施例中,所述第一选择单元101的多个输入端包括至少一个第二输入端,所述第二输入端通过连接线与所述第二选择单元102的输出端连接,或者通过连接线与用于存储运算参数的第四寄存器连接。所述运算参数为常量运算参数,例如,对于y=1+x这一运算函数而言,其中的“1”即为所述运算参数。所述第四寄存器的数量可以是一个或多个,各个第四寄存器可以用于存储取值不同的运算参数,例如,0,±1,±2,±Max等。所述连接线可以根据第三配置信息选择性地连接所述第二选择单元102的输出端或者所述第四寄存器。
第三寄存器和第四寄存器可以是相同或不同的寄存器,在一些实施例中,数据处理装置可以包括共享缓存单元,以供所述多个运算单元共享,或者进一步供所述第二选择单元和/或第一选择单元,以用于缓存数据,例如,缓存原始操作数、运算参数和运算结果中的一种或多种,本公开实施例对此不做限定。
在实际应用场景下,以上各种配置信息(包括第一配置信息、第二配置信息、第三配置信息和第四配置信息)均可以是配置码,或者是其他类型的配置信息。以上各种配置信息可以是同一配置信息中的不同部分,或者是不同的配置信息。
本公开一些实施例的配置信息如图5所示。例如,第1位至第c1位为第一配置信息,第c1+1位至第c1+c2位为第二配置信息,第c1+c2+1位至第c1+c2+c3位为第三配置信息,第c1+c2+c3+1位至第c1+c2+c3+c4位为第四配置信息。进一步地,所述配置信息中还可以包括用于对延迟单元106的延迟周期数进行配置的第五配置信息,根据不同的第五配置信息,可将延迟单元106的延迟周期数配置为一个或多个时钟周期。通过对第一选择单元101和第二选择单元102内部的连接方式、各个运算单元103的运算类型和/或连接线的连接方式进行配置,可以适应各种复杂的运算类型,提高数据处理装置的复用率。
上述c1、c2和c3的数值可以相同也可以不同,配置信息中各部分的顺序也可以根据实际需要而调整,例如,所述配置信息中的第1位至第c2位可以是第二配置信息,第c2+1位至第c1+c2位可以是第一配置信息。配置信息中各部分的功能以及长度可以预先设置好。
在一次运算中,各配置信息均保持不变。一次运算结束之后,可以通过改变配置信息,从而改变运算通路或者运算通路上至少一个运算单元的运算类型。其中,所述一次运算过程是指从向第一选择单元101的一个或多个输入端各输入一组操作数,直到输出这组操作数对应的一组最终运算结果的过程,其中,第一选择单元101的每个输入端输入的一组操作数中均可包括一个或多个操作数,同一输入端的一组操作数依次输入到该输入端。
假设向第一选择单元101的k个输入端各输入一组原始操作数,每个输入端输入的各组原始操作数分别为d11,d12,…,d1m,d21,d22,…,d2m,……,dk1,dk2,…,dkm,m为每组原始操作数中的原始操作数的总数,则首先分别向k个输入端输入d11,d21,…,dm1,再分别向k个输入端输入d12,d22,…,dm2,以此类推,对应得到最终运算结果r1,r2,…,rm。从输入d11,d21,…,dm1,直到得到rm的过程称为一次运算过程。当需要同时向第一选择单元101的多个输入端输入原始操作数时,各个输入端输入的原始操作数可以先经过对齐再输入到第一选择单元101的多个输入端。
本公开实施例通过两个可配置的选择单元,将一个或多个原始操作数映射连接到运算单元的输入上,再将运算单元的运算结果重新映射连接到下一个运算单元的输入上,直到得到最终的运算结果并输出。通过这种方式让数据和运算“流动”起来。在一次运算过程中,将配置信息保持不变,从而在一次运算过程中固化运算通路,自动根据配置信息形成多个运算单元流水操作,完成高效运算。在获取最终运算结果之前,各个运算单元输出的运算结果可以无需存储到内存中,而是直接输入到下一个运算单元继续进行运算,这样,减少了访存次数,从而降低了功耗。进一步地,如果运算函数比较复杂,可以先对运算函数中的一部分进行运算,将得到的最终运算结果写入内存,再从内存中读取所述最终运算结果用于对运算函数的另一部分进行运算,然后将另一部分的最终运算结果写入内存,如此反复多次,得到整个运算函数的最终运算结果。在完成一次运算过程之后,可以重新输入配置信息,从而更改各个运算单元之间的连接方式,使得本公开实施例的装置可以适用于多种类型的算式,实现资源的高效复用,节省面积和功耗,获得较高的能耗比。
在本公开实施例中,运算单元的数量、连接线的数量以及配置码的宽度可以根据实际需要进行不同的配置,以实现更多类型的运算形式覆盖,扩展性较强。输入的原始操作数可以是向量也可以是标量,可以是定点数,也可以是浮点数,只要对运算单元的形式和延迟单元的位宽做调整即可支持。
运算单元的总数、延迟单元的总数、第一选择单元用于输入操作数的输入端的总数,以及第一选择单元的输入端中与第二选择单元相连接的输入端的总数可以相同,也可以不同,以上各个数量可以根据实际需求设置。
下面以一个具体实施例为例对本公开实施例的方案进行说明。Sigmoid(y=1/(e-x+1))是神经网络中常见的一种激活函数,其运算过程涉及到基本的运算有指数运算、加法运算和除法运算,该Sigmoid函数可通过图6所示的装置来实现。如图6所示,在本实施例中,通过合理配置,将装置功能重构为Sigmoid激活函数运算,具体配置方式如下:
步骤1:Sigmoid为一元函数,只有一个操作数,假设来自于操作数输入端1,通过配置将操作数1连接到指数运算单元的输入端;
步骤2:将指数单元的输出端通过配置连接到加减法单元的一个输入端上;
步骤3:将连接线1配置为运算参数1,连接到加减法单元的另一个输入端上,同时连接到除法单元的被除数输入端;
步骤4:将加法单元的输出结果配置连接到除法单元的除数输入端;
步骤5:配置指数单元的运算方式为exp(-x),加减法单元配置为加法运算;
步骤6:配置除法单元的输出端连接到最终的结果输出端。
通过上述配置所形成的运算通路即完整的Sigmoid函数运算。本公开实施例可通过修改配置码,通过有限的运算单元以及连接线涵盖大量简单及复杂运算类型。
本公开实施例可以实现高效灵活可配置、扩展性强的数据处理装置,可以高效实现多种复杂运算,同时兼顾了面积和功耗。可以利用本公开实施例的装置实现神经网络运算中的各种类型的激活函数的运算。神经网络的运算中出现的激活函数大多是一些复杂函数,并且支持神经网络运算的硬件装置在通用性和可拓展方面有一定的需求,利用本公开实施例可以用一种装置实现多个激活函数。
本公开实施例还提供一种人工智能芯片,所述人工智能芯片包括以上任一实施例所述的数据处理装置。该人工智能芯片中的数据处理装置的实施例详见上述数据处理装置的实施例,此处不再赘述。
在一些实施例中,所述人工智能芯片还包括:控制单元,所述控制单元用于控制所述数据处理装置,以使所述数据处理装置中的多个运算单元构成不同的运算通路。
在一些实施例中,所述控制单元进一步用于:对所述数据处理装置的配置信息进行配置,以使所述数据处理装置中的多个运算单元构成不同的运算通路。
在一些实施例中,所述配置信息包括以下至少任一:第一配置信息,用于配置所述第一选择单元的多个输入端与所述第一选择单元的多个输出端之间的连接关系,和/或所述第二选择单元的多个输入端与所述第二选择单元的多个输出端之间的连接关系,第二配置信息,用于配置所述多个运算单元中的至少一部分的运算类型。
在一些实施例中,所述第一选择单元的多个输入端包括至少一个第一输入端;所述控制单元进一步用于:将原始操作数写入所述第一选择单元的至少一个第一输入端。
上述人工智能芯片中的数据处理装置的实施例与前述数据处理装置的实施例相同,此处不再赘述。通过上述人工智能芯片中的控制单元进行配置的配置信息的实施例详见前述数据处理装置的实施例中的配置信息,此处不再赘述。
本领域技术人员在考虑说明书及实践这里公开的说明书后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
Claims (14)
1.一种数据处理装置,其特征在于,所述装置包括:
具有多个输入端和多个输出端的第一选择单元,具有多个输入端和多个输出端的第二选择单元,以及多个运算单元;
所述第一选择单元的多个输入端可配置地连接所述第一选择单元的多个输出端,所述第一选择单元的多个输出端中的至少一部分连接所述多个运算单元的输入端,
所述多个运算单元的输出端连接于所述第二选择单元的多个输入端,
所述第二选择单元的多个输入端可配置地连接所述第二选择单元的多个输出端,所述第二选择单元的多个输出端中的至少一部分与所述第一选择单元的多个输入端连接,和/或与所述数据处理装置的数据输出端口连接,以使所述多个运算单元构成不同的运算通路。
2.根据权利要求1所述的装置,其特征在于,所述装置还包括:
第一寄存器,用于存储第一配置信息,所述第一配置信息用于配置:所述第一选择单元的多个输入端与所述第一选择单元的多个输出端之间的连接关系,和/或,所述第二选择单元的多个输入端与所述第二选择单元的多个输出端之间的连接关系。
3.根据权利要求1或2所述的装置,其特征在于,所述装置还包括:
第二寄存器,用于存储第二配置信息,所述第二配置信息用于配置所述多个运算单元中的至少一部分的运算类型。
4.根据权利要求1或2所述的装置,其特征在于,所述第一选择单元的多个输入端包括至少一个第一输入端,所述第一输入端与所述数据处理装置的数据输入端口连接,用于输入原始操作数。
5.根据权利要求1或2所述的装置,其特征在于,所述运算单元用于检测输入数据中的有效标识信息,并响应于检测到所述输入数据中的有效标识信息,对所述输入数据进行运算。
6.根据权利要求1或2所述的装置,其特征在于,所述装置还包括:
至少一个延迟单元;
所述延迟单元的输入端连接于所述第一选择单元的输出端,所述延迟单元的输出端连接于所述第二选择单元的输入端;
所述延迟单元用于对从所述第一选择单元的输出端接收到的数据进行延迟处理,并将所述延迟处理后的数据传输至所述第二选择单元的输入端。
7.根据权利要求1或2所述的装置,其特征在于,所述装置还包括:
至少一个第三寄存器,所述第三寄存器的输入端连接所述第二选择单元的输出端,所述第三寄存器的输出端连接所述第一选择单元的输入端,或连接于所述数据处理装置的数据输出端口。
8.根据权利要求1或2所述的装置,其特征在于,所述第一选择单元的多个输入端包括至少一个第二输入端,所述第二输入端通过连接线与所述第二选择单元的输出端连接,或者通过连接线与用于存储运算参数的第四寄存器连接。
9.根据权利要求1或2所述的装置,其特征在于,所述多个运算单元包括至少一个算数运算单元和/或至少一个逻辑运算单元。
10.一种人工智能芯片,其特征在于,所述人工智能芯片包括权利要求1至9任意一项所述的数据处理装置。
11.根据权利要求10所述的人工智能芯片,其特征在于,所述人工智能芯片还包括:
控制单元,所述控制单元用于控制所述数据处理装置,以使所述数据处理装置中的多个运算单元构成不同的运算通路。
12.根据权利要求11所述的人工智能芯片,其特征在于,所述控制单元进一步用于:对所述数据处理装置的配置信息进行配置,以使所述数据处理装置中的多个运算单元构成不同的运算通路。
13.根据权利要求12所述的人工智能芯片,其特征在于,所述配置信息包括以下至少任一:
第一配置信息,用于配置所述第一选择单元的多个输入端与所述第一选择单元的多个输出端之间的连接关系,和/或所述第二选择单元的多个输入端与所述第二选择单元的多个输出端之间的连接关系,
第二配置信息,用于配置所述多个运算单元中的至少一部分的运算类型。
14.根据权利要求11至13任意一项所述的人工智能芯片,其特征在于,所述第一选择单元的多个输入端包括至少一个第一输入端;所述控制单元进一步用于:将原始操作数写入所述第一选择单元的至少一个第一输入端。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010072639.6A CN113222126B (zh) | 2020-01-21 | 2020-01-21 | 数据处理装置、人工智能芯片 |
KR1020217031326A KR20210131417A (ko) | 2020-01-21 | 2020-12-23 | 데이터 처리 장치 및 인공 지능 칩 |
JP2021558016A JP7250953B2 (ja) | 2020-01-21 | 2020-12-23 | データ処理装置、及び人工知能チップ |
PCT/CN2020/138552 WO2021147602A1 (zh) | 2020-01-21 | 2020-12-23 | 数据处理装置、人工智能芯片 |
TW109146826A TWI740761B (zh) | 2020-01-21 | 2020-12-30 | 數據處理裝置、人工智能晶片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010072639.6A CN113222126B (zh) | 2020-01-21 | 2020-01-21 | 数据处理装置、人工智能芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113222126A CN113222126A (zh) | 2021-08-06 |
CN113222126B true CN113222126B (zh) | 2022-01-28 |
Family
ID=76991985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010072639.6A Active CN113222126B (zh) | 2020-01-21 | 2020-01-21 | 数据处理装置、人工智能芯片 |
Country Status (5)
Country | Link |
---|---|
JP (1) | JP7250953B2 (zh) |
KR (1) | KR20210131417A (zh) |
CN (1) | CN113222126B (zh) |
TW (1) | TWI740761B (zh) |
WO (1) | WO2021147602A1 (zh) |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3170599B2 (ja) * | 1996-03-01 | 2001-05-28 | 経済産業省産業技術総合研究所長 | プログラマブルlsiおよびその演算方法 |
JP2000255668A (ja) * | 1999-03-10 | 2000-09-19 | Giyoumei Furuyama | 食品容器 |
JP2004206326A (ja) * | 2002-12-25 | 2004-07-22 | Seiko Epson Corp | 演算処理回路及びそれを用いた半導体装置 |
US8443169B2 (en) * | 2005-03-28 | 2013-05-14 | Gerald George Pechanek | Interconnection network connecting operation-configurable nodes according to one or more levels of adjacency in multiple dimensions of communication in a multi-processor and a neural processor |
US8442927B2 (en) * | 2009-07-30 | 2013-05-14 | Nec Laboratories America, Inc. | Dynamically configurable, multi-ported co-processor for convolutional neural networks |
US9449257B2 (en) * | 2012-12-04 | 2016-09-20 | Institute Of Semiconductors, Chinese Academy Of Sciences | Dynamically reconstructable multistage parallel single instruction multiple data array processing system |
CN103065330B (zh) * | 2013-01-15 | 2016-01-20 | 南京师范大学 | 基于流水线并行处理技术的粒子滤波目标跟踪方法及装置 |
KR102161742B1 (ko) * | 2013-10-11 | 2020-10-05 | 삼성전자주식회사 | 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법 |
MX2018009255A (es) * | 2016-01-26 | 2019-03-18 | Icat Llc | Procesador con nucleo canalizado algoritmico reconfigurable y compilador canalizado de correlacion algoritmica. |
CN106203617B (zh) * | 2016-06-27 | 2018-08-21 | 哈尔滨工业大学深圳研究生院 | 一种基于卷积神经网络的加速处理单元及阵列结构 |
CN106126481B (zh) * | 2016-06-29 | 2019-04-12 | 华为技术有限公司 | 一种计算系统和电子设备 |
US9940534B1 (en) * | 2016-10-10 | 2018-04-10 | Gyrfalcon Technology, Inc. | Digital integrated circuit for extracting features out of an input image based on cellular neural networks |
US10402527B2 (en) * | 2017-01-04 | 2019-09-03 | Stmicroelectronics S.R.L. | Reconfigurable interconnect |
PL3607453T3 (pl) * | 2017-04-07 | 2022-11-28 | Intel Corporation | Sposoby i urządzenie dla potoku wykonawczego sieci głębokiego uczenia na platformie multiprocesorowej |
US10789202B2 (en) * | 2017-05-12 | 2020-09-29 | Google Llc | Image processor with configurable number of active cores and supporting internal network |
CN107145467A (zh) * | 2017-05-13 | 2017-09-08 | 贾宏博 | 一种分布式实时计算硬件系统 |
US10755169B2 (en) * | 2017-10-17 | 2020-08-25 | Mediatek Inc. | Hybrid non-uniform convolution transform engine for deep learning applications |
GB201717295D0 (en) * | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Synchronization in a multi-tile processing array |
GB2569270B (en) * | 2017-10-20 | 2020-02-19 | Graphcore Ltd | Parallel computing |
CN109522254B (zh) * | 2017-10-30 | 2022-04-12 | 上海寒武纪信息科技有限公司 | 运算装置及方法 |
US10915317B2 (en) * | 2017-12-22 | 2021-02-09 | Alibaba Group Holding Limited | Multiple-pipeline architecture with special number detection |
CN110083333A (zh) * | 2019-03-22 | 2019-08-02 | 福州麦辽自动化设备有限公司 | 一种数据处理电路 |
CN110245756B (zh) * | 2019-06-14 | 2021-10-26 | 第四范式(北京)技术有限公司 | 用于处理数据组的可编程器件及处理数据组的方法 |
CN110390383B (zh) * | 2019-06-25 | 2021-04-06 | 东南大学 | 一种基于幂指数量化的深度神经网络硬件加速器 |
CN110427169B (zh) * | 2019-07-12 | 2021-07-02 | 东南大学 | 一种面向人工神经网络的三层结构可配置近似位宽加法器 |
-
2020
- 2020-01-21 CN CN202010072639.6A patent/CN113222126B/zh active Active
- 2020-12-23 JP JP2021558016A patent/JP7250953B2/ja active Active
- 2020-12-23 KR KR1020217031326A patent/KR20210131417A/ko not_active Application Discontinuation
- 2020-12-23 WO PCT/CN2020/138552 patent/WO2021147602A1/zh active Application Filing
- 2020-12-30 TW TW109146826A patent/TWI740761B/zh active
Also Published As
Publication number | Publication date |
---|---|
TW202129553A (zh) | 2021-08-01 |
TWI740761B (zh) | 2021-09-21 |
CN113222126A (zh) | 2021-08-06 |
JP7250953B2 (ja) | 2023-04-03 |
JP2022527318A (ja) | 2022-06-01 |
WO2021147602A1 (zh) | 2021-07-29 |
KR20210131417A (ko) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729990B (zh) | 支持离散数据表示的用于执行正向运算的装置及方法 | |
CN109716318B (zh) | 配置硬件在运行时期间多种模式下操作的装置和方法 | |
CN110689126B (zh) | 一种用于执行神经网络运算的装置 | |
US20230244632A1 (en) | Neural processing accelerator | |
CN109358900B (zh) | 支持离散数据表示的人工神经网络正向运算装置和方法 | |
JP3573755B2 (ja) | 画像処理プロセッサ | |
CN107957976B (zh) | 一种计算方法及相关产品 | |
CN113064852B (zh) | 一种可重构处理器及配置方法 | |
WO1995009394A1 (en) | Minimal instruction set computer architecture and multiple instruction issue method | |
US11017290B2 (en) | Signal processing module, especially for a neural network and a neuronal circuit | |
IL99055A (en) | CPU processor reduces | |
CN102262611B (zh) | 一种16位的risc cpu系统结构 | |
CN111242293B (zh) | 一种处理部件、数据处理的方法以及电子设备 | |
CN108874730B (zh) | 一种数据处理器及数据处理方法 | |
CN113222126B (zh) | 数据处理装置、人工智能芯片 | |
US11061674B2 (en) | DSP slice configured to forward operands to associated DSP slices | |
CN111368967B (zh) | 一种神经网络计算装置和方法 | |
US8607029B2 (en) | Dynamic reconfigurable circuit with a plurality of processing elements, data network, configuration memory, and immediate value network | |
US10922098B2 (en) | DSP execution slice array to provide operands to multiple logic units | |
KR20170089678A (ko) | 처리 유닛, 인-메모리 데이터 처리 장치 및 방법 | |
CN111078286A (zh) | 数据通信方法、计算系统和存储介质 | |
US10761847B2 (en) | Linear feedback shift register for a reconfigurable logic unit | |
CN117114055B (zh) | 面向工业应用场景的fpga二值神经网络加速方法 | |
JPH05324694A (ja) | 再構成可能並列プロセッサ | |
CN114365110A (zh) | 重复使用相邻simd单元用于快速宽结果生成 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40047497 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |