面向深度神经网络加速器应用的近似计算系统的制作方法

文档序号:16137012发布日期:2018-12-01 01:07阅读:350来源:国知局

本发明属于神经网络近似计算技术领域,特别涉及一种面向深度神经网络加速器应用的近似计算系统设计。

背景技术

深度学习是机器学习研究中的一个新的领域,其动机在于模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,在多个领域得到应用,有极大的研究与商业价值。深度学习通过对原始信号进行逐层特征变换,将样本在原空间的特征表示变换到新的特征空间,自动地学习得到层次化的特征表示,从而更有利于分类或特征的可视化(参考文献1)。通过深度学习得到的深度网络结构符合神经网络的特征,深度学习应用在图像识别,自动驾驶,人工智能,语音识别等多个领域(参考文献2、3)。目前图像识别已在我们日常生活里被广泛使用,例如扫描图片购物、人脸识别、手写字母识别等等,以后的使用场景只会更加丰富。卷积神经网络功能强大,可以应用在不同的数据资源和平台。

现有的深度神经网络表现出了问题处理的强大能力。为了解决更加抽象、更加复杂的学习问题,深度学习的网络规模在不断增加,计算和数据的复杂度也随之剧增,比如googlenet网络具有10亿个神经元连接口。cnn网络的规模也越来越大,从手写图像识别网络lenet-5的五层,alexnet的8层到vgg的19层,再到resnet的152层,网络规模日益增大。神经网络的访存密集和计算密集型问题日益突出。如何高能效地实现深度学习相关算法,成为科研与商业机构的研究热点。

神经网络计算算法经常严重依赖于大量的乘法,这是既耗时又耗电。但是,有许多简化乘法的实际解决方案,如截断乘法器和对数乘法器。这些方法消耗更少的时间和功率,但会引入错误。尽管如此,它们可以用于延迟时间比精度更重要的情况。esmaeilzadeh(参考文献4)等人证明神经网络具有更好的容错性。因此,在神经网络计算中,经常会遇到这些情况。(参考文献5)等人提出了一个简单高效的乘法器,通过迭代程序达到任意精度的可能性,然后达到确切的结果。

近似乘法器的功耗和精确度之间的权衡一直是业内研究的热点。如何将近似乘法器引入到神经网络中更是本领域研究的热点问题。

其中涉及的参考文献如下:

[1]bengioy.learningdeeparchitecturesforai[j].foundationsandtrendsinmachinelearning,2009,2(1):1-127.

[2]markoffj.scientistsseepromiseindeep-learningprograms[n].thenewyorktimes,2012-11-23

[3]10breakthroughtechnologies2013[n].mittechnologyreview,2013-04-23.

[4]esmaeilzadehh,sampsona,cezel,etal.neuralaccelerationforgeneral-purposeapproximateprograms[j].ieeemicro,2013,33(3):16-27.

[5]babicz,avramovica,bulicp.aniterativemitchell'salgorithmbasedmultiplier[c]//ieeeinternationalsymposiumonsignalprocessingandinformationtechnology.ieee,2009:303-308.



技术实现要素:

本发明的目的,在于提供一种面向深度神经网络加速器应用的近似计算系统,其可解决加速器中运算速度慢、运算量复杂、无法实现高性能高运算速率的问题,达到了深度神经网络加速器的高性能、高能效以及高运算速率的设计优点。

为了达成上述目的,本发明的解决方案是:

一种面向深度神经网络加速器应用的近似计算系统,包括:

片上分布式静态随机存取存储器,片下压缩后的权重被存放在对应处理单元中的片上分布式静态随机存取存储器中;

控制单元和霍夫曼解码器,压缩后的权重的首“1”位置的霍夫曼编码比特流被存储到配置单元的静态随机存取存储器中,霍夫曼解码器对配置单元中的编码进行解码操作,并将结果返回给控制单元,控制单元将数据分配到处理单元阵列;

首“1”探测电路,用于得到输入数据的首“1”位置,并将输入数据和其首“1”位置输出到处理单元阵列中;以及,

阈值函数单元和处理单元阵列,处理单元阵列包括4*4=16个处理单元,每个处理单元实现权重和输入数据的乘加操作,利用近似计算的设计方法输出运算结果;运算输出的部分和结果放在目标寄存器阵列中,并经过阈值函数单元进行处理后输出最终结果。

上述各处理单元中均设有累加对数乘法器,累加对数乘法器包括移位器、超前进位加法器、快速优先编码器以及零检测门,移位器获得权重和输入数据的最高有效位,并且通过快速优先编码器控制移位得到下一组乘数与被乘数;零检测门检测输入的乘数和被乘数有没有为0的情况,通过移位器对准乘数与被乘数的相乘位;超前进位加法器实现乘数与被乘数的最高有效位的相加以及相邻两次最高有效位的和的累加。

上述累加对数乘法器采用自适应精度调节的电路设计,根据权重的不同量化结果,自适应地改变累加对数乘法器的精度,对于16比特的权重,当权重的最高有效位在第0-6位时,通过控制权重的有效长度,实现权重和输入数据的一次累加;当权重的最高有效位在第7-12位时,实现权重和输入数据二次累加;当权重的最高有效位在第13-15位时,累加对数乘法器的电路完全开启,权重和输入数据会一直进行到三次累加输出结果。

上述首“1”探测电路采用16比特首“1”探测器。

上述16比特首“1”探测器包括8组d触发器组、5个4比特首“1”探测器、5个或门和4组4位选择器,其中,每个d触发器组包含4个d触发器,5个或门均采用四输入或门;第一至第四d触发器组的输出端分别对应连接第一至第四或门的输入端,第一至第四d触发器组的输出端还分别对应连接第一至第四4比特首“1”探测器的输入端;第一至第五4比特首“1”探测器的输出端分别对应连接第一至第四组4位选择器的输入端,第一至第四或门的输出端均连接第五4比特首“1”探测器的输入端,第一至第四或门的输出端还分别连接第五或门的输入端,第五或门的输出端用于输出零输入标志;第一至第四组4位选择器的输出端连接第五至第八d触发器组的输入端。

采用上述方案后,本发明在处理单元阵列中引入累加对数乘法器,二维处理单元阵列实现权重和输入数据的流水运算,每一个处理单元包括一个静态随机存取存储,实现片上分布式静态随机存取存储的设计,提高访存效率。每一个处理单元阵列通过配置信号可以实现加法和乘法的操作并且引入近似乘法的概念。累积对数乘法器一次计算实现传统对数乘法器的三次迭代的结果。根据权重的量化结果可以自适应调节乘法器的累加次数,关闭部分工作电路,分别实现一次累加、二次累加以及三次累加的乘法结果。

本发明通过引入累加对数乘法器实现近似计算,提高深度神经网络的运算速度,实现自适应精度可调的神经网络设计,提高了处理单元阵列中数据的存储效率,实现高能效、高性能的深度神经网络加速器。

附图说明

图1是本发明的系统框图;

图2(a)是本发明中16位首“1”探测电路的电路结构图;

图2(b)是本发明中4位首“1”探测电路的电路结构图;

图3是本发明中累加对数乘法器的算法框图;

图4是本发明中累加对数乘法器的电路结构图;

图5是本发明中累加对数乘法器自适应精度调节示意图。

具体实施方式

以下将结合附图,对本发明的技术方案及有益效果进行详细说明。

如图1所示,本发明提供一种面向深度神经网络加速器应用的近似计算系统,包括控制单元、阈值函数单元、霍夫曼解码器、片上分布式静态随机存取存储器、首“1”探测电路和处理单元阵列,通过直接内存存取直接访问数据,下面分别介绍。

所述片上分布式静态随机存取存储器:片下压缩后的权重被存放在对应处理单元中的片上分布式静态随机存取存储器中,提高神经网络加速器的运算速度。

如图1所示,其中的片上分布式静态随机存取存储器是指在处理单元阵列中的每一个处理单元均对应一个静态随机存取存储结构,提高加速器的数据重用率,实现流水计算操作,进一步提高神经网络加速器的运算速度和访存效率。

所述控制单元和霍夫曼解码器:压缩后的权重的首“1”位置的霍夫曼编码被逐个存储到配置单元静态随机存取存储器中,霍夫曼解码器会对配置单元中的编码进行解码操作,并将结果返回给控制单元,控制单元将数据分配到处理单元阵列。

如图1所示,其中的控制单元可以对霍夫曼解码器、处理单元阵列以及目标寄存器阵列进行控制;其中的霍夫曼解码器对片上分布式静态随机存取存储器的压缩后的权重的霍夫曼编码进行解码操作,并且通过控制单元将解码后的输出数据输入到处理单元阵列中,实现权重和输入数据的乘法和加法的操作。

所述首“1”探测电路:输入数据的首“1”位置可以通过首“1”探测电路得到,并将输入数据和其首“1”位置输出到处理单元阵列中,实现和权重的乘加操作。

如图2所示的首“1”探测电路结构,16比特首“1”探测器主要由d触发器、五个4比特首“1”探测器、或门以及4组4位选择器组成。假设最高有效位是d15,最低有效位是d0。16比特首“1”探测电路是一个串行并行结合电路。将16比特的首“1”探测器由四组4比特首“1”探测器组合设计,并且4组探测器并行工作;每组4比特首“1”探测器是从最高有效位到最低有效位串行工作的;4组首“1”探测器的输出会被输入到中间的4比特首“1”探测器中,再次探测首“1”位置,并且控制选择器的工作状态,引入或门作零输入标志;四组4比特首“1”探测器的输出控制四条线作为四组4位mux选择信号;最后,四组4位d触发器输出结果。显然,当且仅当选择信号为高电平时,4位选择器才能输出首位“1”的4位解码字。该电路产生一个16位有效高位解码的二进制字,只有一个高位对应于首“1”位。该电路的最坏情况延迟对应于以十六进制表示为“0001”的16位输入二进制字。

所述处理单元阵列:二维处理单元(pe)阵列,包括4*4=16个处理单元。每个处理单元实现权重和输入数据的乘加操作,利用近似计算的设计方法输出运算结果。运算输出的部分和结果放在目标寄存器阵列中,并经过阈值函数单元输出最终结果。每个处理单元引入累加对数乘法器,实现近似计算,提高神经网络加速器的运算效率。

如图1所示的深度神经网络加速器的系统框架,其中处理单元阵列结构包括4*4个二维处理单元。处理单元之间可以并行工作,提高了神经网络加速器的吞吐率和运算速度。

如图3所示的对数乘法器的算法实现,将输入数据和权重分别拆分成对数的表达形式,即n=2k(1+x),其中x*2k=n-2k。通过首“1”探测器检测输入数据的首1位置,权重的首“1”检测在对权重进行量化时线下完成。那么有其中通过加法、移位以及解码得到最后的输出。

所述累加对数乘法器:累加对数乘法器包括移位器,超前进位加法器,快速优先编码器以及零检测门。移位器可以获得权重和输入数据的最高有效位,并且通过快速优先编码器控制移位得到下一组乘数与被乘数。这里的零检测门会检测输入的乘数和被乘数有没有为0的情况,通过移位器对准乘数与被乘数的相乘位。超前进位加法器实现乘数与被乘数的最高有效位的相加以及相邻两次最高有效位的和的累加。快速优先编码器相比于传统的优先编码器具有明显的优势,可快速实现首“1”的检测并输出编码器结果。传统首“1”探测器的复杂,延时长。快速优先编码器提高了乘法器的整体运算速率。

如图4所示的累加对数乘法器的电路结构,电路一次计算可以达到乘法器迭代3次的精度效果。通过移位器的移位操作可以将权重和输入数据的最高有效位相加,三输入与门可以作为零输入标志,输出给自对准移位器,并将移位后的结果存放到寄存器中,为下一步的累加做准备。优先编码器部分引入了改进的优先编码器代替了传统优先编码器,消除了传统的优先编码器耗时长的缺点,大大提高了运算速度,提高了累加对数乘法器的性能。

所述累加对数乘法器自适应精度调节结构,根据权重的不同量化结果,可以自适应的改变累加对数乘法器的精度。对于16比特的权重,当权重的最高有效位在第0-6位时,通过控制权重的有效长度,实现权重和输入数据的一次累加;当权重的最高有效位在第7-12位时,实现权重和输入数据二次累加;当权重的最高有效位在第13-15位时,电路中的单元全部开启,权重和输入数据会一直进行到三次累加输出结果。通过权重的最高有效位的位置实现累加对数乘法器的自适应精度调节。这大大地降低了神经网络加速器的功耗并且提高了神经网络的运算速度。

如图5所示的累加对数乘法器自适应精度调节电路设计,由权重的量化结果控制累加对数乘法器的累加次数以及相对应的工作电路,从而自适应地改变累加对数乘法器的精度。对于16比特的权重,当权重的最高有效位在第0-6位时,如图5(a)所示,累加对数乘法器的灰色部分的2/3的电路处于不工作状态,权重和输入数据累加一次输出结果;当权重首位最高有效位在第7-12位时,如图5(b)所示,累加对数乘法器的灰色部分的1/3的电路处于不工作状态,权重和输入数据累加两次输出结果;当权重的最高有效位在第13-15位时,如图5(a)所示,累加对数乘法器的电路均处于工作状态,权重和输入数据累加三次输出结果,相当于传统对数乘法器迭代三次的精度输出。通过权重的最高有效位即可以自适应地调节累加对数乘法器的精度,实现高性能、高能效、低功耗的神经网络加速器设计,大大地提高了运算速度。

以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

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