基于神经网络的计算阵列的制作方法

文档序号:13934286阅读:353来源:国知局
基于神经网络的计算阵列的制作方法

本发明是关于卷积计算技术领域,特别涉及一种基于神经网络的计算阵列。



背景技术:

目前,计算机技术已经步入高速发展阶段,尤其在数值运算和逻辑处理方面,它的性能已经远远超过人类大脑本能的计算能力水平。而近几年来,由于人工神经网络和深度学习的发展,计算机在图像处理和语音识别方面也取得了相当大的进步。人工神经网络力图建立、模拟人脑神经活动的数学模型,并在一定算法指导下,模仿出人类大脑处理信息的能力。随着google的alphago在与李世石的对战中胜出,人工智能时代的来临,无论是在工业界还是学术界,人工神经网络研究收到了越来越多的关注和重视。

神经网络的大规模并行性使它具有快速处理某些任务的潜在能力,这一特性使得神经网络很适合使用超大规模集成(verylargescaleintegrationvlsi)技术来实现。vlsi的一个特殊优点是可以提供一个以高度分层的方式来捕捉真实复杂行为的方法。随着微电子技术的发展,电子器件在尺寸、速度、成本等方面都有了很大的飞跃,硬件实人工神经网络系统也开始商业化,其中卷积神经网络(convolutionalneuralnetworkcnn)是最常用的神经网络模型。它作为一种前馈网络结构,层与层之间具有高度的独立性。

在卷积神经网络模型中,需要进行大量的卷积计算,同时也要耗费大量的计算资源。因此硬件架构中的pearray的设计就显得尤为关键,尤其是针对pearray中的计算mac单元。研究如何使得硬件资源在低功耗、高速的前提下实现卷积计算任务具有十分重要的意义,同时针对不同比特位数的权重值和inputfeaturemap值相乘运算,如何做到硬件最大化的利用,如何使得计算速度更快,硬件架构的设计在很大程度上限制了算法的应用。许多硬件架构并不能做到很好的折中,它们往往考虑到了如何提过硬件的利用率,却忽视了执行任务上的并行性问题;也有许多硬件架构一味地追求执行计算任务上的并行度,却忽略了硬件的利用率。



技术实现要素:

本发明实施例提供了一种基于神经网络的计算阵列,以使得硬件资源在低功耗、高速的前提下实现卷积计算,同时做到硬件最大化的利用,并提高计算速度。

为了实现上述目的,本发明实施例提供了一种基于神经网络的计算阵列,所述计算阵列包括多个可重构计算单元,每一所述可重构计算单元包括(n+1)层多比特位宽乘法器,所述多比特位宽乘法器由上层至下层分别为:

2n个22比特乘以22比特的最小乘法单元;

2n-1个22比特乘以23比特的乘法单元;

2n-2个23比特乘以23比特的乘法单元;

2n-3个23比特乘以24比特的乘法单元;

……

2n-n个2n比特乘以2n比特的乘法单元;

每一层乘法单元用于执行不同的计算任务,从最小乘法单元开始,每一层乘法单元的计算结果通过移位及加法器的加法操作输送给下一层乘法单元;

其中,n≥4,且n为偶数。

一实施例中,每一所述可重构计算单元还包括:与不同乘法单元连接的寄存器,分别用于存储对应的乘法单元的计算结果。

一实施例中,当需要执行第m层多比特位宽乘法器的计算任务时,仅使能第1层至第m层多比特位宽乘法器对应的寄存器,m≤n。

一实施例中,每一寄存器中包括:有符号寄存器及无符号寄存器。

一实施例中,每一所述可重构计算单元还包括:

多个第一选择器,连接对应的乘法单元,用于选择将对应的乘法单元的计算结果保存至有符号寄存器或无符号寄存器;

多个第二选择器,连接对应的加法器,用于选择有符号寄存器或无符号寄存器中存储的计算结果。

为了实现上述目的,本发明实施例提供了一种基于神经网络的计算阵列,所述计算阵列包括多个可重构计算单元,每一所述可重构计算单元包括(n+1)层多比特位宽乘法器,所述多比特位宽乘法器由上层至下层分别为:

2n个22比特乘以22比特的最小乘法单元;

2n-1个22比特乘以23比特的乘法单元;

2n-2个23比特乘以23比特的乘法单元;

2n-3个23比特乘以24比特的乘法单元;

……

2n-n个2n-1比特乘以2n比特的乘法单元;

每一层乘法单元用于执行不同的计算任务,从最小乘法单元开始,每一层乘法单元的计算结果通过移位及加法操作输送给下一层乘法单元;

其中,n≥4,且n为奇数。

一实施例中,每一所述可重构计算单元还包括:与不同乘法单元连接的寄存器,分别用于存储对应的乘法单元的计算结果。

一实施例中,当需要执行第m层多比特位宽乘法器的计算任务时,仅使能第1层至第m层多比特位宽乘法器对应的寄存器,m≤n。

一实施例中,每一寄存器中包括:有符号寄存器及无符号寄存器。

一实施例中,每一所述可重构计算单元还包括:

多个第一选择器,连接对应的乘法单元,用于选择将对应的乘法单元的计算结果保存至有符号寄存器或无符号寄存器;

多个第二选择器,连接对应的加法器,用于选择有符号寄存器或无符号寄存器中存储的计算结果。

本申请实施例中,可以并行执行多比特宽度的乘法任务,将乘法器的利用率达到100%,实现硬件的最大利用化;加法器不仅在进行部分积累加的拼接作用时起效果,也可以将已经计算完毕的比特数进行累加求和,完成卷积神经网络的乘法和累加部分,大大提高了加法器的复用性,也满足不同需求下硬件的多样化运用。

当然实施本申请的任一产品或者方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例的可重构计算单元的硬件电路示意图;

图2为本发明实施例的4比特数乘以8比特数的数学平移原理示意图;

图3为本发明实施例的8比特数乘以8比特数的数学平移原理示意图;

图4为本发明实施例的8比特数乘以16比特数的数学平移原理示意图;

图5为本发明实施例的8比特数乘以16比特数的数学平移原理示意图;

图6为本发明实施例的多比特位宽乘法器在卷积神经网络加速器中的位置示意图;

图7是本发明实施例的可重构计算单元的完整硬件结构图。

具体实施方式

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

本发明实施例提供了一种基于神经网络的计算阵列,所述计算阵列包括多个可重构计算单元(processingelement,pe),每一所述可重构计算单元包括(n+1)层多比特位宽乘法器,n≥4。当n为偶数时,多比特位宽乘法器由上层至下层分别为:

2n个22比特乘以22比特的最小乘法单元;

2n-1个22比特乘以23比特的乘法单元;

2n-2个23比特乘以23比特的乘法单元;

2n-3个23比特乘以24比特的乘法单元;

……

2n-n个2n比特乘以2n比特的乘法单元。

当n为偶数时,多比特位宽乘法器由上层至下层分别为:

2n个22比特乘以22比特的最小乘法单元;

2n-1个22比特乘以23比特的乘法单元;

2n-2个23比特乘以23比特的乘法单元;

2n-3个23比特乘以24比特的乘法单元;

……

2n-n个2n-1比特乘以2n比特的乘法单元。

上述(n+1)层多比特位宽乘法器中,每一层乘法单元用于执行不同的计算任务,从最小乘法单元开始,每一层乘法单元的计算结果通过移位及加法器的加法操作输送给下一层乘法单元。

上述为了表述方便,将n分为奇数和偶数两种情况,上述多层乘法单元,可以通过下式表示:

2n-x比特乘以比特的乘法单元

其中,n≥4,x=0,1,2……n。

本发明具体实施时,每一可重构计算单元还包括:与不同乘法单元连接的寄存器,每一寄存器中包括:有符号寄存器及无符号寄存器。分别用于存储对应的乘法单元的计算结果。当需要执行第m层多比特位宽乘法器的计算任务时,仅使能第1层至第m层多比特位宽乘法器对应的寄存器,m≤n,计算时灵活高效。具体实施时,

本发明具体实施时,每一可重构计算单元还包括:

多个第一选择器,连接对应的乘法单元,用于选择将对应的乘法单元的计算结果保存至有符号寄存器或无符号寄存器;

多个第二选择器,连接对应的加法器,用于选择有符号寄存器或无符号寄存器中存储的计算结果。

本发明具体实施时,n理论上可以取无穷大,本发明以n=4为例进行说明,并非用于限定。图1为本发明一实施例的可重构计算单元的硬件电路示意图,如图1所示,mul1~mul16为16个4比特乘4比特的最小乘法器(即最小乘法单元),rul4_4为存放4比特数乘以4比特数的结果寄存器,rul4_8为存放4比特数乘以8比特数的结果寄存器,rul8_8为存放8比特数乘以8比特数的结果寄存器,rul8_16为存放8比特数乘以16比特数的结果寄存器,rul16_16为存放16比特数乘以16比特数的结果寄存器,“<<4”为算术左移4比特,“<<8”为算术左移8比特,add1~add4为无符号加法器。

如图1所示,自上而下第一条虚线以上部分,它可以同时执行16个4比特数乘以4比特数的计算任务,并将计算结果保存在16个8比特宽的rul4_4寄存器中。16个4比特数乘以4比特数的乘法单元所对应的硬件电路部分为图1所示第一条虚线以上部分。

如图1所示,自上而下第二条虚线以上部分,它可以同时执行8个4比特数乘以8比特数的计算任务。图2为本发明实施例的4比特数乘以8比特数的数学平移原理示意图,根据图2所示的数学平移原理可知,存在2个部分的4比特数乘以4比特数的计算结果,只需将其中一部分4比特数乘以4比特数的计算结果向左逻辑平移4比特,再与另一部分相加即可。最终的结果会存在到8个12比特宽的rul4_8寄存器中。8个4比特数乘以8比特数的乘法单元所对应的硬件电路部分为图1所示第二条虚线以上部分。

如图1所示,自上而下第三条虚线以上部分,它可以同时执行4个8比特数乘以8比特数的计算任务。图3为本发明实施例的8比特数乘以8比特数的数学平移原理示意图,由图3所示的数学平移原理可知,存在4个部分的4比特数乘以4比特数的计算结果,需将其中两部分的计算结果向左逻辑平移4比特位,其中一部分的计算结果向左逻辑平移8比特位,剩下一部分结果保持不变,将四者做累加,最终的结果会存放到4个16比特位宽的rul8_8寄存器中。4个8比特数乘以8比特数的乘法单元所对应的硬件电路部分为图1所示第三条虚线以上部分。

如图1所示,自上而下第四条虚线以上部分,它可以同时执行2个8比特数乘以16比特数的计算任务。图4为本发明实施例的8比特数乘以16比特数的数学平移原理示意图,根据图4所示的数学平移原理可知,存在8个部分的4比特数乘以4比特数的计算结果,需将其中两部分的计算结果向左逻辑平移4比特位,其中两部分的计算结果向左逻辑平移8比特位,其中两部分的计算结果向左逻辑平移12比特位,其中一部分的计算结果向左逻辑平移16比特位,剩下一部分结果保持不变,将8个部分相加,最终的结果会存放到2个24比特位宽的rul8_16寄存器中。2个8比特数乘以16比特数的乘法单元所对应的硬件电路部分为图1所示第四条虚线以上部分。

图1所示的整个电路结构能够实现1个16比特数乘以16比特数的计算任务。图5为本发明实施例的8比特数乘以16比特数的数学平移原理示意图,根据图5所示的数学平移原理可知,存在有16个部分的4比特数乘以4比特数的计算结果。其中有2部分需要向平逻辑移位4比特位,有3部分需要向平逻辑移位8比特位,有4部分需要向平逻辑移位12比特位,有3部分需要向平逻辑移位16比特位,有2部分需要向平逻辑移位20比特位,有1部分需要向平逻辑移位24比特位,最终将平移后的结果相加,存放到1个32比特位宽的run16_16寄存器中。

本发明具体实施时,针对不同的计算任务,当需要进行4比特数与4比特数相乘时,只需开启rul4_4寄存器的使能信号;当需要进行4比特数与8比特数相乘时,需要同时开启rul4_4寄存器和rul4_8寄存器的使能信号;当需要进行8比特数与8比特数相乘时,需要同时开启rul4_4、rul4_8、rul8_8寄存器的使能信号;当需要进行8比特数与16比特数相乘时,需要同时开启rul4_4、rul4_8、rul8_8、rul8_16寄存器的使能信号;当需要进行16比特数与16比特数相乘时,需要开启全部寄寄存器的使能信号。

本发明的可重构计算单元可同时处理多个同比特位的数据,并采用流水线的方式,提高了数据的处理能力。例如在图1所示的硬件结构中,每一个加法器后面都会有一个寄存器存储相应的内容,从而起到流水线的作用,降低了关键路径的时间,有利于电路工作频率的提高;同时乘法器本身可处理多个同比特位的运算,也提高了吞吐数据的能力。

上述描述中详细说明了如何实现可配置多比特位的无符号乘法运输。然而,加法器只是完成了无符号乘法中部分积的累加工作,由于在神经网络卷积运算中,卷积运算的结果需要求和相加,即需要对inputfeaturemap(卷积输入数据)与weight(权重)相乘的值进行累加求和。本发明的可重构计算单元中,加法器还可以进行复用,来实现累加求和的功能。图6为本发明实施例的多比特位宽乘法器在卷积神经网络加速器中的位置示意图,图6中虚线框部分为现有pe计算单元的结构,当乘法器完成单个运算任务后与之前存放在寄存器中的结果进行加法操作,再存回到寄存器中。而本发明中,如图6右边的实线框中,可以同时并行处理多个运算,并使用内部加法器将多个运算结果相加,最终得到一个数,再与之前结果做累加。图6中,本发明用实线框代替了虚线框结构,可以将内部数进行累加(通过mul&add模块)。

针对本发明图1所示的实施例中的硬件电路结构,下面以4比特数乘以4比特数和4比特数乘以8比特数,举例说明在不同模式的比特位运算时的数据通路,以及硬件模块工作状态。其中contl信号控制硬件电路的数据通路,它支配值多路选择器sel1、sel2、sel3、sel4、sel5、sel6、sel7、sel8的选择,以及加法器add1、add2、add3、add4进行无符号加法或是有符号加法。

图7是本发明实施例的可重构计算单元的完整硬件结构图。当需要计算4比特数乘以4比特数的计算任务时,如图7所示。mul1~mul16为16个4比特数乘4比特数的乘法器,在进行有符号数乘法时,使用方式是:将每一个乘法器两个4比特输入数的msb(初始位)置为0,低3位置入有效数,因而真正使用到的是3比特有效数的相乘,最大能进行运算的数值范围不能超过7。在第一个时钟周期内,contl信号选择多路选择器sel1,将计算的结果保存到sig有符号寄存器中(此时将符号位与无符号计算结果进行拼接),同时令unsig无符号寄存器使能失效;在第二个时钟周期内,contl信号控制多路选择器sel2,将sig寄存器中的结果选中,并将数据送到add1加法器中进行有符号加法;之后contl信号控制多路选择器sel3,将add1加法器计算的结果传输到下一个sig寄存器中的值;在第三个时钟周期内,contl信号控制的选择器sel4选择sig寄存器中的值,传递到add2加法器中进行有符号加法,contl信号控制的选择器sel5选择将数据存储到sig寄存器中;在第四个时钟周期内,contl信号控制的选择器sel6就选择sig寄存器中的值,将它们交给add3加法器进行有符号位数相加,之后将结果经sel7选择器存储在下一个sig的寄存器中;在第五个时钟周期内,sel8选择sig寄存器中的值,将它们传递给add4进行有符号相加,并将最终结果给最后一个sig寄存器,此时16个带符号位的4比特乘以4比特的计算任务已经完成,并且16个有符号数已经进行有符号位相加,结果存储在最下方的sig寄存器中。

当需要计算带符号位4比特数乘以8比特数的计算任务时:如图7所示。在第一个时钟周期内,contl信号选择unsig寄存器有效,而屏蔽掉sig寄存器的使能信号,将mul1~mul16的计算结果存储在unsig寄存器中,此时有部分值已移位;在第二个时钟周期内,contl信号驱动sel2选择器选择unsig寄存器的值,并将它们送入add1加法器中进行无符号加法,另外控制sel3选择器将结果存储在sig寄存器中(此时将符号位与无符号计算结果进行拼接);在第三个时钟周期内,sel4选择器选择sig寄存器中的值,并将结果传递给add2进行有符号数相加,并由sel5将结果保存在sig寄存器中;在第四个时钟周期内,sel6选择sig寄存器中的值,并将值传递给add3进行有符号数相加,结果由sel7选择sig寄存器进行保存;在第五个时钟周期内,sel8选择与之相连的sig寄存器中的值,并将结果传递给add4进行有符号加法,并将结果存储在最末sig寄存器中。此时8个带符号位的4比特数乘以8比特数的计算任务完成,且8个有符号数已经进行有符号位相加,结果存储在最下方的sig寄存器中。

图1所示的实施例中,除了4比特数乘以1比特数及4比特数乘以8比特数的计算任务,还有8比特数乘以8比特数、8比特数乘以16比特数、16比特数乘以16比特数的计算任务模式,以此类推,在计算出带符号位计算结果前的数据通路中,多路选择器都选择含unsig的支路,加法器选择无符号加法模式,在将符号位与无符号计算结果拼接完成,得到相应比特位乘数结果后;对应后半段的数据通路,多路选择器都选择含sig的支路,并且加法器都进行有符号加法。

图7的硬件结构实质为图6中的mul&add模块。本发明既能并行执行乘法运算,又能根据计算任务需求,在充分利用硬件资源的前提下,实现不同比特位宽的乘法计算,并完成计算结果的相加任务。

本发明具备如下技术效果:

1、可配置多比特位宽度乘法任务

运用乘法结果部分积累加的原理,通过小比特数乘法器拼接成大比特数乘法器的方式,此乘法器可根据计算任务需求,进行不同比特位数的乘法运算。例如,对于图1所示的结构,可以能实现4比特乘以4比特,4比特乘以8比特,8比特乘以8比特,8比特乘以16比特,16比特乘以16比特,在执行计算任务时,可以将乘法器的利用率达到100%,实现硬件的最大利用化。

2、可并行处理多个计算任务

在执行比特数相乘运算时,此乘法器可以并行执行多个计算任务。采用流水线的方式,在一个时钟周期内,可以给出16个4比特数乘4比特数的结果,或8个4比特数乘8比特数的结果,或4个8比特数乘8比特数的结果,或2个8比特数乘16比特数的结果,或1个16比特数乘16比特数的结果。

3、可实现乘法与求和一体化

硬件结构图中的加法器不光在进行部分积累加的拼接作用时起效果,也可以将已经计算完毕的比特数进行累加求和,完成卷积神经网络的乘法和累加部分,大大提高了加法器的复用性,也满足不同需求下硬件的多样化运用。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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