进行矩阵向量乘法运算的系统及进行神经网络运算方法与流程

文档序号:16898152发布日期:2019-02-19 17:40阅读:384来源:国知局
进行矩阵向量乘法运算的系统及进行神经网络运算方法与流程

本发明属于半导体器件及集成电路领域,具体是一种基于norflash计算阵列进行矩阵向量乘法运算的系统及方法。



背景技术:

深度学习和人工智能的发展对数据处理的能效比和硬件消耗提出了严苛的要求,传统意义上的基于冯诺依曼式的计算架构,在执行运算时,受限于中央处理单元cpu和内存间的数据传输瓶颈,数据处理速度受到极大限制,同时能量和硬件资源消耗剧增。深度学习中存在大量的矩阵向量乘法运算,基于norflash设计的存储计算一体化阵列能够并行执行矩阵向量乘法运算,能够在硬件层面对运算进行加速,同时极大地降低能量和硬件资源消耗,对于未来人工智能的硬件化实现和应用具有重要意义。



技术实现要素:

为至少部分解决上述问题,本发明提出了一种基于norflash计算阵列加速深度学习的方法和系统。

根据本发明的一方面,提供一种基于norflash计算阵列进行矩阵向量乘法运算的系统,包括:

norflash计算阵列,阵列中每列单元的栅极接在一起,各列用于依次输入与被乘数向量的元素相对应的输入电压;阵列中每列单元的源极接在一起,用于接入驱动电压;阵列中每行单元的漏极连接在一起,用于输出各单元进行乘法运算后并累加得到的运算电流;按照乘法对应关系,阵列中每两行为一组,其中一行表示负数,另一行表示正数,各组按照正负关系被预先写入乘数向量的各元素;

加权求和电路,用于对位于同一组代表不同位的所述运算电流进行加权求和运算;

减法电路,每组设置一减法电路,用于对代表不同比特(位)加权求和后的运算结果进行减法运算;

模数转换电路,用于将进行减法运算后的结果转换为二进制数字量。

在进一步的实施方案中,所述加权求和电路为电流镜,用于将处于不同位的电流值加权求和,权值为2k-1,其中k为不同电流值对应的位数。

在进一步的实施方案中,所述norflash计算阵列为多个,分别对应乘数向量中各元素的不同位。

在进一步的实施方案中,所述矩阵向量乘法运算为神经网络全连接层的运算,所述被乘数向量为1×m的输入向量x,所述乘数向量为m×n的权值矩阵k,其中m,n分别为正整数。

在进一步的实施方案中,所述矩阵向量乘法运算为神经网络卷积层的运算,输入矩阵x(m×n)的各部分分别与卷积核k(k×k)进行矩阵向量乘法运算,完成卷积操作并得到输出矩阵y(m×n),数学表达如下:

yi,j=xi,j·kk,k+xi,j+1·kk,k-1+xi+1,j·kk-1,k+…+xi+k-1,j+k-1·k1,1

其中l≤i≤m-k+1(m),l≤j≤n-k+1(n)。

在进一步的实施方案中,所述矩阵向量乘法运算为神经网络平均池化运算,平均池化对应于卷积核均为1/n,步长为n的卷积运算。

根据本发明的另一方面,提供一种应用上述系统进行卷积层运算的方法,包括:按照卷积运算对应关系,在norflash计算阵列各组中预先写入卷积核中数据;

在norflash计算阵列中,各列依次输入与输入矩阵的元素相对应的输入电压;

通过模数转换电路获得卷积后的矩阵。

根据本发明的另一方面,提供一种应用上述系统进行全连接层运算的方法,包括:

按照全连接层运算对应关系,在norflash计算阵列各组中预先写入权值矩阵数据;

在norflash计算阵列中,各列依次输与入输入向量的元素相对应的输入电压;

通过模数转换电路获得全连接运算后的向量。

根据本发明的另一方面,提供一种应用上述系统进行平均池化运算的方法,包括:

按照平均池化运算对应关系,在norflash计算阵列各组中预先写入与n×n的卷积核相对应的数据,卷积核中各元素均为1/n;

在norflash计算阵列中,各列依次输入与输入向量的元素相对应的输入电压;

通过模数转换电路获得平均池化运算后的矩阵。

根据本发明的另一方面,提供一种应用上述系统进行矩阵向量乘法运算的方法,包括:

按照矩阵向量乘法运算对应关系,在norflash计算阵列各组中预先写入乘数向量数据;

在norflash计算阵列中,各列依次输入与输入向量的元素相对应的输入电压;

通过模数转换电路获得进行乘法运算后的运算结果。

本发明提出了一种基于norflash计算阵列加速深度学习的方法,主要解决了以下技术问题:(1)通过本发明的系统,实现了存储计算一体化;(2)本发明的向量乘法运算基于norflash计算阵列的处理单元实现,提高了运算速度;(3)本发明的系统可以应用于深度学习,提高深度神经网络的运算速度。

附图说明

图1a和图1b分别为本发明实施例的深度学习中全连接和卷积操作的示意图。

图2a为本发明实施例的深度学习流程示意图,以及图2b和图2c为利用预编程后的norflash计算阵列实现全连接和卷积操作示意图。

图3为本发明实施例的基于norflash计算阵列进行矩阵向量乘法运算的系统实现示意图。

图4a为全连接运算示意图,图4b为基于图3的系统实现全连接操作示意图。

图5a为卷积运算示意图,图5b为基于图3的系统实现卷积操作示例图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。

根据本发明的基本构思,深度学习网络包含卷积、池化和全连接层,从本质上而言,矩阵向量乘法运算在各层中占据极大比重。norflash存储计算一体化阵列能够高效地执行矩阵向量乘法运算,加速深度学习。具体而言:norflash单元的阈值电压可以通过编程/擦除进行调节,当对norflash单元编程时,热电子注入,器件阈值电压升高,存储状态视为“0”;当对norflash单元擦除时,电子隧穿,器件阈值电压降低,存储状态视为“1”。因此,当对不同状态的norflash单元施加相同的偏置时,不同单元的漏极电流反映了norflash单元的存储状态。经过预编程的norflash阵列可以应用于矩阵向量乘法运算并实现全连接、卷积和池化操作:在运算开始前,将二进制输入矩阵的各个元素排成一行形成输入向量,输入向量中不同元素的值(0或1)决定norflash阵列中字线wl上的栅极输入电压(0或vg)。漏极的输出电流反映了输入数据与norflash单元内所存数据相乘后的结果。当栅极输入电压为vg(等效为“1”)时,漏极输出电流与参考电流iref的比值1即为输入数据1与norflash单元存储数据的乘积;当栅极输入电压为0(等效为“0”)时,漏极输出电流与参考电流的比值0即为输入数据0与norflash单元存储数据的乘积。在此基础上,将多个norflash单元的漏极连接在一起输出,“和电流”反映了输入矩阵和norflash阵列中所存矩阵相乘后的结果,实现矩阵向量乘法运算。

基于上述的norflash计算存储一体化阵列,本发明提出了基于norflash计算阵列加速深度学习的系统。norflash计算阵列运算得到的结果经外围电路各模块处理后,得到输出矩阵,该输出矩阵可以作为深度学习网络中下一级的输入参与运算。因此,多个norflash计算阵列可以协同工作,并行处理矩阵向量乘法,对深度学习进行加速。基于norflash计算阵列的存储计算一体化系统能够有效提高深度学习中的能效比,显著减少硬件开销。

图1为本发明实施例中深度学习中全连接、卷积操作的示意图,从图中可知,全连接操作与一般意义上的矩阵向量乘法运算相同,输入向量x(1×m)与权值矩阵k(m×n)相乘后得到输出向量y(1×n),数学表达如下:

yi=x1·k1,i+x2·k2,i+...+xm·km,i

其中l≤i≤n。

卷积可以视为多个局部区域的全连接,输入矩阵x(m×n)的各部分分别与卷积核k(k×k)进行矩阵向量乘法运算,完成卷积操作并得到输出矩阵y(m×n),数学表达如下:

yi,j=xi,j·kk,k+xi,j+1·kk,k-1+xi+1,j·kk-1,k+…+xi+k-1,j+k-1·k1,1

其中l≤i≤m-k+1(m),l≤j≤n-k+1(n)。

池化是对输入矩阵的各个n×n区域取平均值或最大值作为输出矩阵的组成元素,因此,平均池化可以视为卷积核均为1/n,步长为n的卷积操作。综上,全连接、卷积和池化操作均可以视为矩阵向量乘法运算。现具体阐述将经过预编程的norflash存储计算一体化阵列应用于矩阵向量乘法运算、实现并行化数据处理的过程。

图2为利用预编程后的norflash计算阵列实现全连接和卷积操作示意图。阵列中同一列单元的栅极和源极分别接在一起作为输入(wl,sl),同一行单元的漏极接在一起作为输出(bl)。进行运算之前,需要按照矩阵向量乘法中输入矩阵与权值矩阵或卷积核的对应关系将卷积核或权值矩阵分行写入norflash阵列。进行运算时,阵列中所有单元的源极均接固定的驱动电压vds,输入矩阵各个元素的值(0/1)决定字线(wl)的输入电压(0/vg),位线(bl)输出的“和电流”反映了输入矩阵与norflash阵列所存储权值矩阵或卷积核进行矩阵向量乘法后的结果。考虑到权值矩阵或卷积核中可能存在负值,因此本发明中利用两行“和电流”相减的方式实现针对权值矩阵或卷积核负值的处理。对得到的数个输出电流进行数值化处理后,便可得到与软件运算结果相同的输出矩阵。特别地,对于1×m的输入向量,与m×n的权值矩阵运算后得到的输出矩阵尺寸为1×n,阵列中的norflash单元数为m×n×2;对于m×n的输入矩阵,经k×k的卷积核卷积后得到的输出矩阵尺寸为m×n,阵列中的norflash单元数为:m×n×m×n×2。

图3为基于norflash计算阵列进行矩阵向量乘法运算的系统实现示意图。如图3所示,其包括:norflash计算阵列,阵列中每列单元的栅极接在一起,各列用于依次输入与被乘数向量的元素相对应的输入电压;阵列中每列单元的源极接在一起,用于接入驱动电压;阵列中每行单元的漏极连接在一起,用于输出各单元进行乘法运算后并累加得到的运算电流;按照乘法对应关系,阵列中每两行为一组,其中一行表示负数,另一行表示正数,各组按照正负关系被预先写入乘数向量的各元素;加权求和电路,用于对位于同一组代表不同位的所述运算电流进行加权求和运算;减法电路,每组设置一减法电路,用于对代表不同比特(位)加权求和后的运算结果进行减法运算;以及模数转换电路,用于将进行减法运算后的结果转换为二进制数字量。

结合图2a-2c以及图3所示以进一步描述该系统。该系统的norflash计算阵列,阵列中每列单元的栅极接在一起,各列用于依次输入被乘数向量的元素相应的输入电压;阵列中每列单元的源极接在一起,用于接入驱动电压;阵列中每行单元的漏极连接在一起,用于输出各单元进行乘法运算后的运算电流;按照乘法对应关系,阵列中每两行为一组,其中一行表示负数,另一行表示正数,各组按照正负数关系被预先写入乘数向量的各元素;

加权求和电路,用于对代表不同比特(位)的所述运算电流进行加权求和运算;

由于所设计的计算结构是基于二进制的,当乘数向量是多位,那么输入向量与乘数向量的运算就需要多个阵列来完成。阵列的个数取决于乘数向量的位数k。举例来说,如果输入被乘数向量为101,乘数向量为302,那么需要将乘数向量拆分为101(高位)和100(低位),利用两个norflash阵列计算后得到的结果分别是2和1。2代表高位的运算结果,1代表高位的运算结果,所述的加权求和电路完成的操作是将本身运算得到的结果乘以系数,即2^k-1,再相加,得到的结果即为和数值运算相同的结果5。(2*2^1+1*2^0)。

减法电路,每组设置一减法电路,用于对代表不同比特(位)加权求和后的运算结果进行减法运算;

模数转换电路,且用于将进行减法运算后的结果转换为二进制数字量。

经多个代表不同位(对应于预先写入的乘数向量的元素)的norflash计算阵列运算后的结果(电流)先后经过加权求和电路、减法电路和模数转换电路得到最终的运算结果,这里以二进制形式存在的结果可以作为系统的输出结果或下一级norflash计算阵列的输入。具体而言:电流加权求和电路由电流镜实现,将不同位(bitk)的电流值加权求和,权值为2k-1;考虑到权值矩阵或卷积核中可能存在负值,因此本发明中利用运算放大器实现对两路“和电流”相减的操作;模数转换电路将处理完毕的模拟量转换为二进制数字量,作为系统输出或下一级输入。基于norflash计算阵列设计的系统能够并行化执行深度学习中大量的矩阵乘法运算,同时与传统cpu和gpu等计算架构相比,极大地降低了能量和硬件资源消耗。

以下是通过具体实施例说明本发明的实施方式,本领域人员可由本说明书所揭示的内容轻易地了解本发明的其他优点与功效。本发明也可通过其他不同的具体实施例加以施行或应用,本说明书中的各项细节也可针对不同观点与应用,在不脱离本发明的精神下进行各种修饰与变更。

示例说明

图4a为全连接运算示意图,图4b为基于图3的系统实现全连接操作示意图。如图4a和图4b所示,对于全连接操作:假设输入向量x尺寸为1×3,权值矩阵k尺寸为3×2,经norflash计算阵列处理后得到的输出矩阵尺寸为1×2。考虑到权值矩阵中负值的存在,我们采用由两个norflash组成的差分对来存储权值。因此,norflash计算阵列位线bl数目为4(2×2),通过附图3中外围电路的处理可以实现对两路相邻电流相减的操作。

图5a为卷积运算示意图,图5b为基于图3的系统实现卷积操作示例图。如图5a和图5b所示,对于卷积操作:假设输入矩阵x尺寸在3×3,卷积核k尺寸为2×2,经卷积后得到的输出矩阵尺寸为2×2。在如附图4所示的卷积示例中,卷积核与输入矩阵x中四个2×2区域(图中四个圆圈部分)分别做矩阵向量乘法,得到卷积后的结果。这一数学表达反映在norflash计算阵列上,每两行norflash单元完成对应的一次矩阵向量乘法即实现单次卷积运算。因此,norflash计算阵列位线bl数目为8(4×2)。

在上面的描述中,出于说明目的,阐述了众多具体细节以便提供对本发明的各实施例的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节中的某些也可实施一个或多个其他实施例。所描述的具体实施例不是为了限制本发明而是为了说明。本发明的范围不是由上面所提供的具体示例确定,而是仅由下面的权利要求确定。在其他情况下,以框图形式,而不是详细地示出已知的电路、结构、设备,和操作以便不至于使对描述的理解变得模糊。在认为适宜之处,附图标记或附图标记的结尾部分在诸附图当中被重复以指示可选地具有类似特性或相同特征的对应或类似的要素,除非以其他方式来指定或显而易见。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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