集成电路芯片装置及相关产品的制作方法

文档序号:20756917发布日期:2020-05-15 17:29阅读:98来源:国知局
集成电路芯片装置及相关产品的制作方法

本披露涉及神经网络领域,尤其涉及一种集成电路芯片装置及相关产品。



背景技术:

人工神经网络(artificialneuralnetwork,即ann),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于cpu(centralprocessingunit,中央处理器)或gpu(英文:graphicsprocessingunit,图形处理器)来实现神经网络的运算,此种运算的计算量大,功耗高。



技术实现要素:

本披露实施例提供了一种集成电路芯片装置及相关产品,可提升计算装置的处理速度,提高效率。

第一方面,提供一种集成电路芯片装置,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路或多个基础处理电路中至少一个基础处理电路包括:数据类型运算电路,所述数据类型运算电路,用于执行浮点类型数据以及定点类型数据之间的转换;

所述主处理电路,用于执行神经网络运算中的各个连续的运算以及与所述基础处理电路传输数据;

所述多个基础处理电路,用于依据所述主处理电路传输的数据以并行方式执行神经网络中的运算,并将运算结果传输给所述主处理电路。

第二方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第一方面提供的集成电路芯片装置。

第三方面,提供一种组合处理装置,所述组合处理装置包括:第二方面提供的神经网络运算装置、通用互联接口和通用处理装置;

所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。

第四方面,提供一种芯片,所述芯片集成第一方面的装置、第二方面的装置或第三方面的装置。

第五方面,提供一种电子设备,所述电子设备包括第四方面的芯片。

第六方面,提供一种神经网络的运算方法,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括:第一方面所述的集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的运算。

可以看出,通过本披露实施例,提供数据转换运算电路将数据块的类型进行转换后运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。

附图说明

图1a是一种集成电路芯片装置结构示意图。

图1b是另一种集成电路芯片装置结构示意图。

图1c是一种基础处理电路的结构示意图。

图1d为一种定点数据类型的示意结构图。

图2为一种矩阵乘以向量流程示意图。

图2a是矩阵乘以向量的示意图。

图2b为一种矩阵乘以矩阵流程示意图。

图2c是矩阵ai乘以向量b的示意图。

图2d是矩阵a乘以矩阵b的示意图。

图2e是矩阵ai乘以矩阵b的示意图。

图3a为神经网络训练示意图。

图3b为卷积运算示意图。

图4a为神经网络正向运算示意图。

图4b为神经网络反向运算示意图。

具体实施方式

为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。

在第一方面提供的装置中,所述集成电路芯片装置还包括:分支处理电路,所述分支处理电路设置在主处理电路与至少一个基础处理电路之间;所述分支处理电路,用于在主处理电路与至少一个基础处理电路之间转发数据。

在第一方面提供的装置中,所述主处理电路,用于获取待计算的数据块以及运算指令,通过所述数据类型运算电路将待计算的数据块转换成定点类型的数据块,依据该运算指令对定点类型的待计算的数据块划分成分发数据块以及广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至所述至少一个基础处理电路,将所述广播数据块广播至所述至少一个基础处理电路;

所述基础处理电路,用于对所述基本数据块与所述广播数据块以定点类型执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;

所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。

在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块通过一次广播至所述多个基础处理电路。

在第一方面提供的装置中,所述基础处理电路,具体用于将所述基本数据块与所述广播数据块以定点数据类型执行内积处理得到内积处理结果,将所述内积处理结果累加得到运算结果,将所述运算结果发送至所述主处理电路。

在第一方面提供的装置中,所述主处理电路,用于在如所述运算结果为内积处理的结果时,对所述运算结果累加后得到累加结果,将该累加结果排列得到所述待计算的数据块以及运算指令的指令结果。

在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述多个基础处理电路。

在第一方面提供的装置中,所述基础处理电路,具体用于将所述部分广播数据块与所述基本数据块以定点数据类型执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路。

在第一方面提供的装置中,所述基础处理电路,具体用于复用n次该部分广播数据块执行该部分广播数据块与该n个基本数据块内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至主处理电路,所述n为大于等于2的整数。

在第一方面提供的装置中,所述主处理电路包括:主寄存器或主片上缓存电路;

所述基础处理电路包括:基本寄存器或基本片上缓存电路。

在第一方面提供的装置中,所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路、数据类型运算电路或数据重排电路中的一种或任意组合。

在第一方面提供的装置中,所述主处理电路,用于获取待计算的数据块以及运算指令,依据该运算指令对所述待计算的数据块划分成分发数据块以及广播数据块;对所述分发数据块进行拆分处理得到多个基本数据块,将所述多个基本数据块分发至所述至少一个基础处理电路,将所述广播数据块广播至所述至少一个基础处理电路;

所述基础处理电路,用于对所述基本数据块与所述广播数据块转换成定点类型的数据块,依据定点类型的数据块执行内积运算得到运算结果,将所述运算结果转换成浮点数据后发送至所述主处理电路;

所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。

在第一方面提供的装置中,所述分支处理电路包含多个分支处理电路,所述主处理电路与所述多个分支处理电路分别连接,每个分支处理电路与至少一个基础处理电路连接。

在第一方面提供的装置中,所述数据为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。

在第一方面提供的装置中,如所述运算指令为乘法指令,所述主处理电路确定乘数数据块为广播数据块,被乘数数据块为分发数据块;

如所述运算指令为卷积指令,所述主处理电路确定输入数据块为广播数据块,卷积核为分发数据块。

在第六方面提供的方法中,所述神经网络的运算包括:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏执运算、全连接运算、gemm运算、gemv运算、激活运算中的一种或任意组合。

参阅图1a,图1a为一种集成电路芯片装置的结构示意图,如图1a所示,该芯片装置包括:主处理电路、基本处理电路和分支处理电路(可选的)。其中,

主处理电路可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、alu(arithmeticandlogicunit,算数逻辑单元)电路、累加器电路、dma(directmemoryaccess,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路;

可选的,主处理电路可以包括:数据类型转换运算电路,数据类型转换运算电路可以用于将接收或发送的数据从浮点类型数据转换成定点类型数据,当然在实际应用中,也可以将定点类型数据转换成浮点类型数据。本发明并不限制上述数据类型转换运算电路的具体形式。

主处理电路还包括数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置;在实际应用中上述数据发送电路以及数据接收电路也可以集成在一起形成数据收发电路。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的选择方式可以由主处理电路依据负载以及计算方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本申请具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。

在实现分发数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据(该数据可以相同,也可以不同,具体的,如果采用分发的方式发送数据,各个接收数据的基础处理电路收到的数据可以不同,当然也可以有部分基础处理电路收到的数据相同;

具体地,广播数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据,各个接收数据的基础处理电路可以收到相同的数据。

可选的,上述主处理电路的向量运算器电路可以执行向量运算,包括但不限于:两个向量加减乘除,向量与常数加、减、乘、除运算,或者对向量中的每个元素执行任意运算。其中,连续的运算具体可以为,向量与常数加、减、乘、除运算、激活运算、累加运算等等。

每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。

该芯片装置可选的还可以包括一个或多个分支处理电路,如具有分支处理电路时,其中主处理电路与分支处理电路连接,该分支处理电路与基本处理电路连接,该基本处理电路的内积运算器电路用于执行数据块之间的内积运算,该主处理电路的控制电路控制数据接收电路或数据发送电路收发外部数据,以及通过控制电路控制数据发送电路将外部数据分发至分支处理电路,该分支处理电路用于收发主处理电路或基本处理电路的数据。如图1a所示的结构适合复杂数据的计算,因为对于主处理电路来说,其连接的单元的数量有限,所以需要在主处理电路与基本处理电路之间添加分支处理电路以实现更多的基本处理电路的接入,从而实现对复杂数据块的计算。分支处理电路和基础处理电路的连接结构可以是任意的,不局限在图1a的h型结构。可选的,主处理电路到基础处理电路是广播或分发的结构,基础处理电路到主处理电路是收集(gather)的结构。广播,分发和收集的定义如下,对于分发或广播结构,此时的基础处理电路的数量大于主处理电路,即1个主处理电路对应多个基础处理电路,即从主处理电路到多个基础处理电路为广播或分发的结构,反之,从多个基础处理电路到主处理电路可以为收集结构。

基础处理电路,接收主处理电路分发或者广播的数据保存到基础处理电路的片上缓存中,可以进行运算产生结果,可以向主处理电路发送数据。

基础处理电路中所涉及到的数据可以是任意数据类型的数据,可以是任意位宽的浮点数表示的数据也可以是任意位宽的定点数表示的数据;涉及到的所有运算电路和存储电路都可以是能够处理的任意数据类型的运算电路和存储电路,可以是任意位宽的浮点数的运算电路和存储电路也可以是任意位宽的定点数的运算电路和存储电路。

可选的,每个基础处理电路均可以包括数据类型转换运算电路,也可以在部分基础处理电路配置数据类型转换运算电路;数据类型转换运算电路可以用于将接收或发送的数据从浮点类型数据转换成定点类型数据,也可以将定点类型数据转换成浮点类型数据。本发明并不限制上述数据类型转换运算电路的具体形式。

可选的,该基础处理电路的向量运算器电路可以对数据类型转换后的两个向量执行的向量运算,当然在实际应用中,基础处理电路的内积运算器电路可以对数据类型转换后的两个向量执行内积运算,累加器电路也可以对内积运算的结果进行累加。

在一种可选方案中,两个向量可以存放在片上缓存和/或寄存器中,基础处理电路可以根据实际计算的需要提取两个向量执行运算。该运算包括但不限于:内积运算、乘法运算、加法运算或其他的运算。

在一种可选方案中,内积运算的结果可以累加到片上缓存和/或寄存器上;其可选方案的优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。

在一种可选方案中,内积运算的结果不进行累加,直接作为结果传输;此技术方案的优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。

在一种可选方案中,每个基础处理电路可以执行多组两个向量的内积运算,也可以对多组内积运算的结果分别进行累加;

在一种可选方案中,多组的两个向量数据可以存放在片上缓存和/或寄存器中;

在一种可选方案中,多组内积运算的结果可以分别累加到片上缓存和/或寄存器中;

在一种可选方案中,各组内积运算的结果可以不进行累加,直接作为结果传输;

在一种可选方案中,每个基础处理电路可以执行同一个向量与多个向量分别进行内积运算的操作(“一对多”内积,即多组内积里每组的两个向量中有一个向量是共享的),并将每个向量对应的内积结果分别进行累加。此技术方案可以实现同一套权值对不同的输入数据进行多次计算,增加了数据复用,减少基础处理电路内部数据的数据传输量,提高计算效率,降低功耗。

具体地,计算内积使用的数据中,各组共享的向量和每组的另一个向量(即每组之间不同的那个向量)的数据来源可以不同:

在一种可选方案中,在计算内积时,各组共享的向量来自主处理电路或者分支处理电路的广播或者分发;

在一种可选方案中,在计算内积时,各组共享的向量来自片上缓存;

在一种可选方案中,在计算内积时,各组共享的向量来自寄存器;

在一种可选方案中,在计算内积时,每组的另一个非共享向量来自主处理电路或者分支处理电路的广播或者分发;

在一种可选方案中,在计算内积时,每组的另一个非共享向量来自从片上缓存;

在一种可选方案中,在计算内积时,每组的另一个非共享向量来自寄存器;

在一种可选方案中,在进行多组的内积运算时,每组共享的向量在基础处理电路的片上缓存和/寄存器中保留任意份数;

在一种可选方案中,共享向量可以对应每组内积各保留一份;

在一种可选方案中,共享向量可以只保留一份;

具体地,多组内积运算的结果可以分别累加到片上缓存和/或寄存器中;

具体地,各组内积运算的结果可以不进行累加,直接作为结果传输;

参阅图1a所示的结构,其包含一主处理电路(可以执行向量操作),多基础处理电路(可以执行内积操作)。这样组合的好处是:装置不仅能使用基础处理电路执行矩阵和向量乘法运算,也能使用主处理电路执行其他任意的向量运算,使装置在有限的硬件电路的配置下,能够更快的完成更多的运算,减少了与装置外部进行数据传输的次数,提高了计算效率,降低了功耗。另外,本芯片在基础处理电路和/或主处理电路均可以设置数据类型转换运算电路,这样在进行神经网络计算时能够将浮点类型数据转换成定点类型数据,也可以将定点类型数据转换成浮点类型数据,并且本芯片可以依据各个电路(主要是主处理电路和基础处理电路)的运算量(即负载量)动态的分配由那个电路将数据类型进行转换,这样能够减少数据计算的复杂程序,降低功耗,并且动态的分配数据类型的转换能够实现不影响芯片的计算效率。该分配的方式包括但不限于:负载均衡、负载最小值分配等等方式。

该定点类型数据的一种结构示意图如图1d所示,如图1d所示,为一种定点类型数据的表达方法,对于计算系统,1个浮点数据的存储位数为32bit,而对于定点数据,尤其是采用如图1d所示的浮点类型的数据进行数据的表示,其1个定点数据的存储位数可以做到16bit以下,所以对于此转换来说,可以极大的减少计算器之间的传输开销,另外,对于计算器来说,较少比特位的数据存储的空间也较小,即存储开销会较小,计算量也会减少,即计算开销会减少,所以能够减少计算开销以及存储的开销,但是对于数据类型的转换也是需要有部分的开销的,下面简称转换开销,对于计算量大,数据存储量大的数据,转换开销相对于后续的计算开销、存储开销以及传输开销来说几乎可以忽略不计,所以对于计算量大,数据存储量大的数据,本披露采用了将数据类型转换成定点类型的数据的技术方案,反之,对于计算量小,数据存储量小的数据,此时由于本身计算开销、存储开销以及传输开销就比较小,此时如果使用定点数据,由于定点数据的精度会略低于浮点数据,在计算量较小的前提下,需要保证计算的精度,所以这里将定点类型的数据转换成浮点数据,即通过增加较小的开销来提高计算的精度的目的。

参阅图1b所示的装置,图1b所示的装置为无分支处理电路的计算装置,如图1b所示的装置,其包括:主处理电路以及n个基础处理电路,其中,主处理电路(具体的结构如图1c所示)与n个基础处理电路可以直接或间接连接,如为间接连接的方式时,一种可选的方案如图1a所示可以包括n/4个分支处理电路,每个分支处理电路分别连接4个基础处理电路,对于主处理电路以及n个基础处理电路分别包含的电路可以参见上述如图1a所示的描述,这里不再赘述,这里需要说明的是,上述基础处理电路还可以设置在分支处理电路内,另外,每个分支处理电路连接基础处理电路的数量也可以不局限于4个,厂家可以根据实际需要进行配置。该上述主处理电路和/或n个基础处理电路均可以包括数据类型转换运算电路,具体的,可以是主处理电路包括数据类型运算电路,也可以是n个基础处理电路或其中的一部分包括数据类型转换电路,也可以是主处理电路和n个基础处理电路或其中的一部分均包括。上述主处理电路可以根据神经网络计算指令动态的分配数据类型转换步骤的操作实体,具体的,主处理电路可以根据自身的负载确定是否对接收到的数据执行数据类型转换步骤,具体的,可以将负载的值设置多个区间,每个区间对应分配数据类型转换步骤的执行主体,例如,以3个区间为例,区间1的负载值较低,可以由主处理电路单独执行数据类型转换步骤,区间2负载值位于区间1以及区间3之间,可以由主处理电路或n个基础处理电路共同执行数据类型转换步骤,区间3负载值较高,可以由n个基础处理电路执行数据类型转换步骤。对此,可以以明示的方式来执行,例如主处理电路可以配置一个特殊指示或指令,当基础处理电路接收到该特殊指示或指令时,确定执行数据类型转换步骤,如基础处理电路未接收到特殊指示或指令时,确定不执行数据类型转换步骤。又如,可以以暗示的方式来执行,例如,基础处理电路接收到数据类型为浮点类型的数据且确定需要执行内积运算时,将该数据类型转换成定点类型的数据。

下面提供一种采用如图1a所示的装置实现计算的方法,该计算的方法具体可以为神经网络的计算方式,例如神经网络的正向运算,神经网络的训练,在实际应用中,正向运算依据不同的输入数据可以执行矩阵乘矩阵、卷积运算、激活运算、变换运算等等运算,上述运算均可以采用如图1a所示的装置实现。

主处理电路的数据转换运算电路先对数据的类型进行转换然后由控制电路传输给基础处理电路运算,例如,主处理电路的数据转换运算电路可以将浮点数转换成位宽更低的定点数再传输给基础处理电路,其优点是可以减少传输数据的位宽,减少传输的总比特数量,基础处理电路执行地位宽定点运算的效率也更高,功耗更低。

如基础处理电路接收到的数据为浮点数据,那么基础处理电路可以收到数据后由数据转换运算电路先进行数据类型转化然后再进行计算,例如,基础处理电路收到主处理电路传输过来的浮点数,数据转换运算电路然后转换为定点数,然后基础处理电路的内积运算器电路、向量运算器电路或累加器电路进行运算,提高运算效率,降低功耗。

基础处理电路计算出结果之后可以先进行数据类型转换然后再传输给主处理电路,例如,基础处理电路计算出的浮点数运算结果可以先转换为低位宽的定点数然后再传输给主处理电路,其好处是降低了传输过程的数据位宽,效率更高,而且节约了功耗。

主处理电路将待计算的数据传输到全部或者一部分基础处理电路上;以矩阵乘以向量计算为例,主处理电路的控制电路可以将矩阵数据拆分每列作为一个基础数据,例如m*n矩阵,可以拆分成n个m行的向量,主处理电路的控制电路将拆分后的n个m行的向量分发给多个基础处理电路。对于向量,主处理电路的控制电路可以将向量整体广播给每个基础处理电路。如果m的值比较大,那么控制电路可以先将m*n矩阵拆分成x*n个向量,以x=2为例,具体的可以拆分成,2n个向量,每个向量包含m/2行,即将n个m行的向量中每个向量均分成2个向量,以第一行为例,如n个m行的向量的第一个向量为1000行,那么均分成2个向量可以为,将前500行组成第一向量,将后500行组成第二向量,控制电路通过2个广播将2个向量广播给多个基础处理电路。

所述数据传输的方式可以是广播或者分发,或者其他任何可能的传输方式;

基础处理电路接收到数据后,执行运算,得到运算结果;

基础处理电路将运算结果传输回主处理电路;

所述运算结果可以是中间运算结果,也可以是最终运算结果。

使用如图1a所示装置完成矩阵乘向量的运算;

(矩阵乘向量可以是矩阵中的每一行分别与向量进行内积运算,并将这些结果按对应行的顺序摆放成一个向量。)

下面描述计算尺寸是m行l列的矩阵s和长度是l的向量p的乘法的运算,如下图2a所示,(矩阵s中的每一行与向量p长度相同,他们中的数据按位置一一对应)所述神经网络计算装置拥有k个基础处理电路:

参阅图2,图2提供了了一种矩阵乘向量的实现方法,具体可以包括:

步骤s201、主处理电路的数据转换运算电路将矩阵s中的每一行数据转换成定点类型的数据,主处理电路的控制电路分发到k个基础处理电路中的某一个上,基础处理电路将接收到的分发数据保存在基础处理电路的片上缓存和/或寄存器中;

在一种可选方案中,如果矩阵s的行数m<=k则,主处理电路的控制电路给k个基础处理电路分别分发s矩阵的一行;

在一种可选方案中,如果矩阵s的行数m>k,则主处理电路的控制电路给每个基础处理电路分别分发s矩阵中一行或多行的数据。

分发到第i个基础处理电路的s中的行的集合为ai,共有mi个行,如图2c表示第i个基础处理电路上将要执行的计算。

在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中,可以将接收到的分发数据例如矩阵ai保存在第i个基础处理电路的寄存器和/或片上缓存中;优点是减少了之后的分发数据的数据传输量,提高了计算效率,降低了功耗。

步骤s202、主处理电路的数据类型运算电路将向量p转换成定点类型的数据,主处理电路的控制电路将定点类型的向量p中各部分以广播的方式传输给k个基础处理电路;

在一种可选方案中,主处理电路的控制电路可以将向量p中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的向量p的数据进行充分地复用,完成对应与矩阵ai中每一行的内积运算。优点是,减少从主处理电路到基础处理电路的向量p的重复传输的数据传输量,提高执行效率,降低传输功耗。

在一种可选方案中,主处理电路的控制电路可以将向量p中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量p的数据不进行复用,分次完成对应于矩阵ai中的每一行的内积运算;优点是,减少基础处理电路内部的单次传输的向量p的数据传输量,并可以降低基础处理电路缓存和/或寄存器的容量,提高执行效率,降低传输功耗,降低成本。

在一种可选方案中,主处理电路的控制电路可以将向量p中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量p的数据进行部分复用,完成对应于矩阵ai中的每一行的内积运算;优点是,减少从主处理电路到基础处理电路的数据传输量,也减少基础处理电路内部的数据传输量,提高执行效率,降低传输功耗。

步骤s203、k个基础处理电路的内积运算器电路计算矩阵s和向量p的数据的内积,例如第i个基础处理电路,计算矩阵ai的数据和向量p的数据的内积;

步骤s204、k个基础处理电路的累加器电路将内积运算的结果进行累加得到累加结果,将累加结果以定点类型形式传输回主处理电路。

在一种可选方案中,可以将每次基础处理电路执行内积运算得到的部分和(部分和即累加结果的一部分,例如累加结果为:f1*g1+f2*g2+f3*g3+f4*g4+f5*g5,那么部分和可以为:f1*g1+f2*g2+f3*g3的值)传输回主处理电路进行累加;优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。

在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。

在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。

参阅图2b,使用如图1a所示的装置完成矩阵乘矩阵的运算;

下面描述计算尺寸是m行l列的矩阵s和尺寸是l行n列的矩阵p的乘法的运算,(矩阵s中的每一行与矩阵p的每一列长度相同,如图2d所示)所述神经网络计算装置拥有k个基础处理电路:

步骤s201b、主处理电路的控制电路将矩阵s中的每一行数据分发到k个基础处理电路中的某一个上,基础处理电路将接收到的数据保存在片上缓存和/或寄存器中;

在一种可选方案中,如果s的行数m<=k则,主处理电路的控制电路给m个基础处理电路分别分发s矩阵的一行;

在一种可选方案中,如果s的行数m>k,主处理电路的控制电路给每个基础处理电路分别分发s矩阵中一行或多行的数据。

s中有mi行分发到第i个基础处理电路,这mi行的集合称为ai,如图2e表示第i个基础处理电路上将要执行的计算。

在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:

接收的由主处理电路分发的矩阵ai,将矩阵ai保存在第i个基础处理电路寄存器和/或片上缓存中;优点是减少了之后的数据传输量,提高了计算效率,降低了功耗。

步骤s202b、主处理电路的控制电路将矩阵p中各部分以广播的方式传输给各个基础处理电路;

在一种可选方案中,可以将矩阵p中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的矩阵p的数据进行充分地复用,完成对应与矩阵ai中每一行的内积运算;本实施例中的复用具体可以为基础处理电路在计算中重复使用,例如矩阵p的数据的复用,可以是对矩阵p的数据在多次使用。

在一种可选方案中,主处理电路的控制电路可以将矩阵p中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵p的数据不进行复用,分次完成对应于矩阵ai中的每一行的内积运算;

在一种可选方案中,主处理电路的控制电路可以将矩阵p中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵p的数据进行部分复用,完成对应于矩阵ai中的每一行的内积运算;

在一种可选方案中,每个基础处理电路,例如第i个基础处理电路,计算矩阵ai的数据和矩阵p的数据的内积;

步骤s203b、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路。

在一种可选方案中,基础处理电路可以将每次执行内积运算得到的部分和传输回主处理电路进行累加;

在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;

在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路。

参阅图3a,使用如图1a所示的装置完成全连接运算:

如果全连接层的输入数据是一个向量(即神经网络的输入是单个样本的情况),则以全连接层的权值矩阵作为矩阵s,输入向量作为向量p,按照所述装置的使用方法一执行如图2所示的矩阵乘向量的运算;

如果全连接层的输入数据是一个矩阵(即神经网络的输入是多个样本作为batch的情况),则以全连接层的权值矩阵作为矩阵s,输入向量作为矩阵p,或者以全连接层的权值矩阵作为矩阵p,输入向量作为矩阵s,按照所述装置的使用如图2c所示的矩阵乘矩阵的执行运算;

参阅图3b,使用如图1a所示的装置完成卷积运算:

对于一个卷积层,记其卷积核的数量为m;

步骤s301、主处理电路的控制电路将卷积层权值中的每一个卷积核的权值分发到k个基础处理电路中的某一个上,保存在基础处理电路的片上缓存和/或寄存器中;

在一种可选方案中,如果卷积核的个数m<=k则,主处理电路的控制电路给m个基础处理电路分别分发一个卷积核的权值;

在一种可选方案中,如果卷积核的个数m>k,主处理电路的控制电路给每个基础处理电路分别分发一个或多个卷积核的权值。

共有mi个卷积核分发到第i个基础处理电路,这些卷积核权值的集合称为ai。

在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:

将收到的由主处理电路分发的卷积核权值ai保存在其寄存器和/或片上缓存中;

步骤s302、主处理电路的控制电路将输入数据p中各部分以广播的方式传输给各个基础处理电路;

在一种可选方案中,主处理电路的控制电路可以将输入数据p中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的输入数据p的数据进行充分地复用,完成对应与ai中每一个卷积核的内积运算;

在一种可选方案中,主处理电路的控制电路可以将输入数据p中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的输入数据p的数据不进行复用,分次完成对应于ai中的每一个卷积核的内积运算;

在一种可选方案中,主处理电路的控制电路可以将输入数据p中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的输入数据p的数据进行部分复用,完成对应于ai中的每一个卷积核的内积运算;

步骤s303、每个基础处理电路计算卷积核和输入数据p的数据内积,例如第i个基础处理电路,计算ai的每一个卷积核和输入数据p的数据的内积;

步骤s304、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路:

在一种可选方案中,可基础处理电路以将每次执行内积运算得到的部分和传输回主处理电路进行累加;

在一种可选方案中,基础处理电路也可以将每次执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;

在一种可选方案中,基础处理电路也可以将每次执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;

使用如图1a所示的装置更新权值的方法:

利用主处理电路的向量运算器电路实现神经网络训练过程中的权值更新功能,具体地,权值更新是指使用权值的梯度来更新权值的方法。

在一种可选方案中,使用主处理电路的向量运算器电路对权值和权值梯度这两个向量进行加减运算得到运算结果,该运算结果即为更新权值。

在一种可选方案中,使用主处理电路的向量运算器电路在权值以及权值梯度乘以或除以一个数得到中间权值和中间权值梯度值,向量运算器电路对中间权值和中间权值梯度值进行加减运算得到运算结果,该运算结果即为更新权值。

在一种可选方案中,可以先使用权值的梯度计算出一组动量,然后再使用动量与权值进行加减计算得到更新后的权值;

使用如图1a所示的装置实现全连接层的反向运算的方法

全连接层的反向运算可以分成两部分,如下图4a所示,实线箭头表示全连接层的正向计算过程,如图4b所示,表示全连接层的反向计算过程。

图4a、图4b所示的全连接层的反向运算,可以使用如图1a所示的装置如图2b所示的矩阵乘矩阵方法来完成;

使用如图1a所示的装置实现卷积层的反向运算;

卷积层的反向运算可以分成两部分,如下图4a中,实线箭头表示卷积层的正向计算过程,如图4b所示,表示卷积层的反向计算过程。

图4b所示的卷积层的反向运算,可以使用如图1a所示装置采用如图3b所示的方法完成卷积层的反向运算。

使用如图1a所示的装置实现blas(basiclinearalgebrasubprograms)函数的方法

gemm计算是指:blas库中的矩阵-矩阵乘法的运算。该运算的通常表示形式为:c=alpha*op(s)*op(p)+beta*c,其中,s和p为输入的两个矩阵,c为输出矩阵,alpha和beta为标量,op代表对矩阵s或p的某种操作,此外,还会有一些辅助的整数作为参数来说明矩阵的s和p的宽高;

使用如图1a的装置实现gemm计算的步骤包括:

主处理电路的数据类型转换运算电路可以对矩阵s以及矩阵p进行数据类型转换;

主处理电路的转换电路对输入矩阵s和矩阵p进行各自相应的op操作;

在一种可选方案中,op可以为矩阵的转置操作;可以利用主处理电路的矩阵转置电路实现该矩阵转置操作;

在一种可选方案中,在执行完矩阵s和矩阵p的op操作以后,还可以由主处理电路的数据转换运算电路执行数据类型转换操作,即数据转换运算电路将op(s)以及op(p)的数据类型由浮点类型数据转换成定点类型数据,然后执行如图2b所示的矩阵乘法运算。

在一种可选方案中,某个矩阵的op可以为空,op操作不进行;

用如图1a所示的装置的使用如图2b中所述矩阵乘矩阵的计算方法完成op(s)与op(p)之间的矩阵乘法计算;

利用主处理电路的算术逻辑单元对op(s)*op(p)的结果中的每一个值进行乘以alpha的操作;

在一种可选方案中,alpha为1的情况下乘以alpha的操作不进行;

利用主处理电路的算术逻辑单元实现beta*c的运算;

在一种可选方案中,beta为1的情况下,不进行乘以beta的操作;

利用主处理电路的向量运算器电路实现矩阵alpha*op(s)*op(p)和beta*c之间对应位置相加的步骤得到gemm计算的结果。

在一种可选方案中,beta为0的情况下,不进行这步操作;

gemv计算是指:blas库中的矩阵-向量乘法的运算。该运算的通常表示形式为:c=alpha*op(s)*p+beta*c,其中,s为输入矩阵,p为输入的向量,c为输出向量,alpha和beta为标量,op代表对矩阵s的某种操作;

使用如图1a的装置实现gemv计算的步骤为:

主处理电路的数据类型转换运算电路可以对输入矩阵s以及矩阵p进行数据类型转换;

主处理电路的转换电路对输入矩阵s进行相应的op操作;

在一种可选方案中,op可以为矩阵的转置操作;利用主处理电路的转换电路实现矩阵转置操作;

在一种可选方案中,某个矩阵的op可以为空,转置操作不进行;

用如图1a所示装置使用如图2a中所述矩阵乘向量的计算方法完成矩阵op(s)与向量p之间的矩阵-向量乘法计算;

利用主处理电路的算术逻辑单元对op(s)*p的结果中的每一个值进行乘以alpha的操作;

在一种可选方案中,alpha为1的情况下乘以alpha的操作不进行;

利用主处理电路的算术逻辑单元实现beta*c的运算;

在一种可选方案中,beta为1的情况下,不进行乘以beta的操作;

利用主处理电路的向量运算器电路实现矩阵alpha*op(s)*p和beta*c之间对应位置相加的步骤得到gemv的结果。

在一种可选方案中,beta为0的情况下,不进行相加的步骤操作;

使用如图1a的装置实现激活函数的方法

利用主处理电路的激活电路输入一向量,计算出该向量的激活向量;

在一种可选方案中,主处理电路激活电路将输入向量中的每一个值通过一个激活函数(激活函数的输入是一个数值,输出也是一个数值),计算出一个数值输出到输出向量的对应位置;

在一种可选方案中,激活函数可以是:y=max(m,x),其中x是输入数值,y是输出数值,m是一个常数;

在一种可选方案中,激活函数可以是:y=tanh(x),其中x是输入数值,y是输出数值;

在一种可选方案中,激活函数可以是:y=sigmoid(x),其中x是输入数值,y是输出数值;

在一种可选方案中,激活函数可以是一个分段线性函数;

在一种可选方案中,激活函数可以是任意输入一个数,输出一个数的函数。

在一种可选方案中,输入向量的来源有(包括但不限于):

所述装置的外部数据来源;

在一种可选方案中,输入数据来自所述装置进行矩阵乘向量的运算结果;

在一种可选方案中,输入数据来自所述装置进行矩阵乘矩阵的运算结果;

所述装置的主处理电路计算结果;

在一种可选方案中,输入数据来自所述装置主处理电路实现加偏置之后的计算结果。

需要说明的是,上述激活操作可以由主处理电路内的算数逻辑电路和累加器电路来实现,也可以在主处理电路单独增加一个激活电路来实现激活操作。

使用如图1a的装置实现加偏置操作:

利用主处理电路的向量运算器电路可以实现两个向量或者两个矩阵相加的功能;

利用主处理电路的向量运算器电路可以实现把一个向量加到一个矩阵的每一行上,或者每一个列上的功能。

在一种可选方案中,所述矩阵可以来自所述装置执行矩阵乘矩阵运算的结果;

在一种可选方案中,所述矩阵可以来自所述装置执行矩阵乘向量运算的结果;

在一种可选方案中,所述矩阵可以来自所述装置的主处理电路从外部接受的数据。

在一种可选方案中,所述向量可以来自所述装置的主处理电路从外部接受的数据。

包括但不限于以上这些数据来源。

使用如图1a的装置实现数据类型转换:

利用主处理电路的数据类型转换运算电路实现将数据类型的转换;

在一种可选方案中,使用主处理电路的数据类型转换运算电路实现一组数据的数据类型转换;

在一种可选方案中,数据类型转化的形式包括但不限于:浮点数转定点数和定点数转浮点数等;

本发明还提供一种芯片,该芯片包含计算装置,该计算装置包括:

包括一个主处理电路,主处理电路中所涉及到的数据可以是任意数据类型的数据,在一种可选方案中,可以是任意位宽的浮点数表示的数据也可以是任意位宽的定点数表示的数据;涉及到的所有运算电路和存储电路都可以是任意数据类型的运算电路和存储电路,在一种可选方案中,可以是任意位宽的浮点数的运算电路和存储电路也可以是任意位宽的定点数的运算电路和存储电路。

在一种可选方案中,主处理电路包括数据类型转换运算电路;

在一种可选方案中,主处理电路包括执行数据类型转换的向量运算单元;

具体地,包含接收输入数据的数据输入接口;

在一种可选方案中,所述接收的数据来源可以是:所述神经网络运算电路装置的外部或所述神经网络运算电路装置的部分或全部基础处理电路;

在一种可选方案中,所述数据输入接口可以有多个;具体地,可以包含输出数据的数据输出接口;

在一种可选方案中,所述输出的数据的去向可以是:所述神经网络运算装置的外部或所述神经网络运算电路装置的部分或全部基础处理电路;

在一种可选方案中,所述数据输出接口可以有多个;

在一种可选方案中,所述主处理电路包括片上缓存和/或寄存器;

在一种可选方案中,所述主处理电路中包含运算单元,可以执行数据运算;

在一种可选方案中,所述主处理电路中包含算术运算单元;

在一种可选方案中,所述主处理电路中包含向量运算单元,可以同时对一组数据执行运算;具体地,所述算术运算和/或向量运算可以是任意类型的运算,包括但不限于:两个数相加减乘除,一个数与常数加减乘除,对一个数执行指数运算,幂次运算,对数运算,以及各种非线性运算,对两个数执行比较运算,逻辑运算等。两个向量相加减乘除,一个向量中的每一个元素与常数加减乘除,对向量中的每一个元素执行指数运算,幂次运算,对数运算,以及各种非线性运算等,对一个向量中的每两个对应的元素执行比较运算,逻辑运算等。

在一种可选方案中,所述主处理电路包括数据重排列单元,用于按照一定的顺序向基础处理电路传输数据,或者按照一定的顺序原地重新排列数据;

在一种可选方案中,所述数据排列的顺序包括:对一个多维数据块进行维度顺序的变换;所述数据排列的顺序还可以包括:对一个数据块进行分块以发送到不同的基础处理电路。

该计算装置还包括多个基础处理电路:每一个基础处理电路用于计算两个向量的内积,计算的方法是,基础处理电路收到的两组数,将这两组数中的元素对应相乘,并且将相乘的结果累加起来;内积的结果传输出去,这里传输出去根据基础处理电路的位置,有可能传输给其他基础处理电路,也可以直接传输给主处理电路。

基础处理电路中所涉及到的数据可以是任意数据类型的数据,在一种可选方案中,可以是任意位宽的浮点数表示的数据也可以是任意位宽的定点数表示的数据;涉及到的所有运算电路和存储电路都可以是任意数据类型的运算电路和存储电路,在一种可选方案中,可以是任意位宽的浮点数的运算电路和存储电路也可以是任意位宽的定点数的运算电路和存储电路。

在一种可选方案中,基础处理电路包括数据类型转换运算电路;

在一种可选方案中,基础处理电路包括执行数据类型转换的向量运算单元;

具体地,包括由片上缓存和/或寄存器构成的存储单元;

具体地,包括一个或多个接收数据的数据输入接口;

在一种可选方案中,包括两个数据输入接口,每次从两个数据输入接口处可以分别获得一个或多个数据;

在一种可选方案中,基础处理电路可以将从数据输入接口接收到输入数据后保存在寄存器和/或片上缓存中;

上述数据输入接口接收数据的来源可以是:其他基础处理电路和/或主处理电路。

所述神经网络运算电路装置的主处理电路;

所述神经网络运算电路装置的其他基础处理电路(所述神经网络运算电路装置拥有多个基础处理电路);

具体地,包括一个或多个传输输出数据的数据输出接口;

在一种可选方案中,可以将一个或多个数据从数据输出接口传输出去;

具体地,通过数据输出接口传输出去的数据可以是:从数据输入接口接收到的数据、保存在片上缓存和/或寄存器中的数据、乘法器运算结果、累加器运算结果或内积运算器运算结果中的一种或任意组合。

在一种可选方案中,包含三个数据输出接口,其中的两个分别对应于两个数据输入接口,每一层出上一层从数据输入接口接收到的数据,第三个数据输出接口负责输出运算结果;

具体地,所述数据输出接口传输数据的去向可以是:上文数据来源和此处的数据去向决定了基础处理电路在装置中的连接关系。

所述神经网络运算电路装置的主处理电路;

所述神经网络运算电路装置的其他基础处理电路,所述神经网络运算电路装置拥有多个基础处理电路;

具体地,包括算术运算电路:该算术运算电路具体可以为:一个或多个乘法器电路、一个或多个累加器电路、一个或多个执行两组数内积运算的电路中的一个或任意组合。

在一种可选方案中,可以执行两个数的乘法运算,其结果可以保存在片上缓存和/或寄存器上,也可以直接累加到寄存器和/或片上缓存中;

在一种可选方案中,可以执行两组数据的内积运算,其结果可以保存在片上缓存和/或寄存器中,也可以直接累加到寄存器和/或片上缓存中;

在一种可选方案中,可以执行数据的累加运算,将数据累加到片上缓存和或寄存器中;

具体地,累加器电路被累加的数据,可以是:从数据输入接口接收到的数据、保存在片上缓存和/或寄存器中的数据、乘法器运算结果、累加器运算结果、内积运算器运算结果中的一个或任意组合。

需要说明的是,上述对基础处理电路的描述中所用到的“数据输入接口”和“数据输出接口”是指每一个基础处理电路的数据输入与输出接口,而不是整个装置的数据输入与输出接口。

本披露还揭露了一个神经网络运算装置,其包括一个或多个在如图1a或如图1b所示的芯片,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过i/o接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上神如图1a或如图1b所示的芯片时,如图1a或如图1b所示的芯片间可以通过特定的结构进行链接并传输数据,譬如,通过pcie总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。

该神经网络运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1