一种用于神经网络处理器的加法器和乘法器的制作方法

文档序号:14269333阅读:157来源:国知局
本发明涉及神经网络处理器,尤其涉及对神经网络处理器中加法器和乘法器的改进。
背景技术
:在计算机对信号进行处理的过程中往往包含许多复杂的运算,这些复杂的运算可以被拆解为加法和乘法运算的组合。以神经网络中的卷积运算为例,一次卷积运算需要执行多次读取数据、加法、乘法的操作,以最终实现卷积运算。传统的加法器逐位地对加数以及被加数执行加的运算、传统的乘法器将乘数与被乘数中的每一位分别相乘再通过移位以及传统的加法器将所得的结果相加以执行乘法运算,尽管上述传统的加法器和乘法器能够获得具有很高的准确性的计算结果,然而,采用这样的加法器和乘法器对于诸如神经网络这样包含大量计算的应用而言会带来非常高的延时、能耗。在神经网络中包含多个网络层,网络层对神经网络的输入或者对前一个网络层的输出执行诸如卷积、以及其他复杂运算,以获得针对该网络层的输出,通过多个网络层的计算最终获得学习、分类、识别、处理等相应的结果。可以理解,神经网络中多个网络层的计算量非常大,并且这样的计算往往需要使用较早执行的计算结果,采用上述传统的加法器和乘法器会占用神经网络处理器中大量的资源,带来极高的延时、能耗。技术实现要素:因此,本发明的目的在于克服上述现有技术的缺陷,提供一种用于神经网络处理器的加法器,包括:至少一个加法装置,所述加法装置包括一个异或非门、第一与非门和第二与非门,所述异或非门以两个比特位ai和bi为输入,所述第一与非门以两个比特位ai-1和bi-1为输入,所述第二与非门以所述异或非门的输出和所述第一与非门的输出为输入,所述第二与非门的输出为所述加法装置的输出位si;其中,ai和ai-1为加数中相邻的两个比特,bi和bi-1为被加数中相邻的两个比特,i大于等于0。优选地,根据所述加法器,其中包括一个所述加法装置,用于在对具有k个比特位的加数ak-1ak…a0和被加数bk-1bk…b0执行逻辑计算,k大于等于2,逐一地取i=0,1,2…,k-1,分别将ai和bi作为所述异或非门的输入、将ai-1和bi-1作为所述第一与非门的输入,按照比特位从高到低逐一顺序排列得到的所述第二与非门的输出sk-1sk…s0,以作为所述加数ak-1ak…a0和被加数bk-1bk…b0的和。优选地,根据所述加法器,其中包括k个所述加法装置,其序号j分别为j=0,1,2…,k-1,用于在具有k个比特位的加数ak-1ak…a0和被加数bk-1bk…b0执行逻辑计算,k大于等于2,其中,加法装置j用于将分别将aj和bj作为所述加法装置j的异或非门的输入、将aj-1和bj-1作为所述加法装置j的第一与非门的输入,按照比特位从高到低顺序排列由所述k个所述加法装置中的每一个得到的所述第二与非门的输出位sk-1sk…s0,以作为所述加法器的计算结果。优选地,根据所述加法器,其中所述加法装置用于在i=0时将ai-1取0和bi-1取0。优选地,根据所述加法器,其中所述加法装置用于在i大于所述加数或所述被加数的最高比特位时,将对应的ai或bi取0。以及,一种用于神经网络处理器的乘法器,包括:部分积产生器、移位器、和累加器;其中,所述累加器中包含至少一个上述任意一项所述的加法器。优选地,根据所述乘法器,其中所述累加器中还包括至少一个寄存器,用于对所述加法器输出的结果进行缓存并输入到所述加法器中,以执行累加操作。优选地,根据所述乘法器,其中所述累加器中包含的各个加法器采用累加树的方式连接。优选地,根据所述乘法器,用于对n比特的乘数和被乘数执行以下处理:产生n个部分积,n个部分积两两一组分为n/2组,每组数据采用所述加法器进行加法操作,产生n/2个部分和;将得到的所述n/2个部分和两两一组分为n/4组,每组数据采用所述加法器进行加法操作;重复上述步骤,直至得到最终的一个累加计算结果。优选地,根据所述乘法器,在所述处理中,将在移动位数后相邻的两个部分积组合在一起,并且,凡是已处于一个组合中的部分积将不再被划分到其他组合中。与现有技术相比,本发明的优点在于:提供了一种能够提升神经网络处理系统的运算速度并降低能耗、使得神经网络处理系统性能更加高效的加法器以及相应的乘法器,其克服了神经网络处理器中加法器以及乘法器存在的设计复杂度高、运算速度差、能量效率低这一问题,通过引入近似计算技术,降低了加法以及乘法操作的能量损耗,提高了运算速度。附图说明以下参照附图对本发明实施例作进一步说明,其中:图1是根据本发明的一个实施例用于加法器的加法装置的逻辑电路;图2(a)、(b)是根据本发明的实施例的加法器;图2是本发明的一个实施例可提供误差位的用于加法器的加法装置的逻辑电路;图3是本发明的一个实施例的乘法器的示意图;图4是由乘数和被乘数生成部分积的示意图;图5是根据本发明的一个实施例乘法器中累加装置的示意图。具体实施方式下面结合附图和具体实施方式对本发明作详细说明。发明人通过研究神经网络算法发现,神经网络模型的算法本身对于计算所产生的中间结果存在一定的容错性,其会对中间结果进行进一步的加工处理,即便在计算过程中的某些运算结果并不完全准确,也不会影响最终输出的计算结果。基于上述发现,发明人提出可以采用能够执行近似加法运算的硬件来代替传统的加法器,并将这样的加法器硬件应用到乘法器中,从而减少硬件执行运算的延时、以及电路的整体能耗。根据本发明的一个实施例,提供了一种用于神经网络处理器的加法器,其能够提供近似的加法计算结果。图1示出了所述加法器中的一个加法装置的示例,所述加法装置能够对加数中的相邻两位以及被加数中对应的两位进行逻辑运算,获得与所述相邻两位中较高一位对应的加法运算的近似计算结果。可以看到,所述加法装置中包括一个异或非门(xnor)、两个与非门(nand),其中异或非门以ai和bi为输入并且其输出被连接作为第一与非门的一个输入,第二与非门以ai-1和bi-1为输入并且其输出被连接作为第一与非门的另一个输入,所述第一与非门的输出位为si。由此,可以将输出位si以及ai、biai-1和bi-1之间的逻辑关系表示为:si=(aixnorbi)nand(ai-1nandbi-1);图1所提供的加法装置可以提供近似的加法运算结果,以a=1010和b=0011两个数相加为例:当i=0时,ai=0,bi=1,ai-1和bi-1置为0,得到s0=1;当i=1时,ai=1,bi=1,ai-1=0,bi-1=1,得到s1=0;当i=2时,ai=0,bi=0,ai-1=1,bi-1=1,得到s2=1;当i=3时,ai=1,bi=0,ai-1=0,bi-1=0,得到s3=1。分别将a和b的各个比特输入到图1所提供的加法装置中,可以获得对应的输出位,将这些输出位按照从高到低的比特位顺序地排列在一起可以获得最终的求和结果s3s2s1s0=1101。这里当i=0时,i-1小于比特位的最小标号0,在计算时将ai-1和bi-1置为0以作为所述加法装置中异或非门的输入。根据本发明的一个实施例,可以采用多个上述加法器并行进行计算。例如如图2(a)所示,当i的最大值为3时,可以采用4个图1所示的加法装置,并行地对i=0、1、2、3的比特位按照图1所示执行加的运算,将相应的输出位si逐位连接,得到相应的和。也可以根据需要,如图2(b)所示,在上述加法器中采用数量小于加数或者被加数位长的一个或多个加法装置,通过对所述加法装置进行复用实现加法运算。对于本领域普通技术人员来说,大多数现有的加法装置的延时均大于两个门延时,即数据需要通过超过两个逻辑门的处理才可以获得计算结果。相比之下,本发明所提供的上述加法装置以牺牲一小部分的精确度为代价,仅以2个门延时便可获得相应的输出位。下表示出了根据本发明的加法器的计算准确率的指标。表1加法器计算准确率指标加法器类型平均误差率出错率传统加法器(8bit)0%0%本发明提供加法器(8bit)8.6%64%其中,平均误差率的计算公式为其中ve表示加法器的计算结果,v表示准确的加法结果,i表示第i个加法操作;出错率的计算公式为出错率=出错的加法次数/总加法次数。参考表1,可以看到本发明提供的加法器的出错率为64%,表示将本发明提供的加法器应用于神经网络处理器运算时,有64%的概率无法得到完全准确的计算结果。然而,这并不意味着本发明的加法器不适合于执行加法的逻辑运算。从上表的结果中可以看到,通过本发明的加法器所获得的计算结果与准确结果之间的平均误差率为8.6%,这意味着,例如若执行加法运算的准确的计算结果应当为100,则根据本发明提供的加法器所获得的计算结果的大小相较于准确结果平均偏离了8.6%,结果为91.4或108.6。基于上述结果可知本发明提供的加法器即使计算出错的概率较高,但计算准确度仍保持在较高水平(91.4%)。并且,由于神经网络自身具有一定容错性,由本发明提供的加法器构成的乘法器应用于神经网络运算过程中,可以实现较高的计算准确度(详见下文表2)。基于上述加法器,本发明还提供了一种用于神经网络处理器的乘法器,参考图3,其包括部分积产生器、移位器、和累加器。其中,所述部分积产生器中包含一个或多个与门,用于对输入乘法器的乘数和被乘数进行处理以获得需要在随后的计算中进行移位和累加的部分积。以部分积产生器对4比特的乘数和被乘数进行计算为例,在部分积产生器中设置4个具有两个输入位的与门,使得所述4个与门的一个输入位分别连接至被乘数的4个比特位,并且顺序的将乘数的每个比特位输入到所述4个与门的另一个输入位中,从而依次得到相应的部分积。移位器用于对部分积产生器的结果进行相应的移位,以在随后的计算中进行累加。累加器中包含至少一个根据本发明的加法器以及一个寄存器,用于对通过移位器移位后的部分积进行累加,其中,所述加法器以部分积或移位器的输出作为其一个输入、并且以寄存器作为其另一个输入,寄存器的输入与加法器的输出相连。下面以二进制数1110乘以1001为例,介绍执行乘法的过程:首先,参考图4,部分积产生器将1110与1001中的每一位通过或门执行乘法,通过前文中所述的4个或门,可以分别产生部分积1010、1010、0000、和1010,其中第一个部分积1010不需要由移位器进行处理,第二个部分积1010需要由移位器向左移动1个比特位,第三个部分积0000需要由移位器向左移动2个比特位,第四个部分积1010需要由移位器向左移动3个比特位。累加器利用其所包含的加法器对上述部分积执行加法,利用寄存器存储执行完加法后所获得的中间结果,将中间结果与尚未执行累加的经过移位的部分积相加以实现累加过程,获得最终的计算结果10111110。为了提高累加器的工作效率,可以针对所述累加器设置多个加法器,并且分级地连接所述加法器,例如以累加树的方式连接所述加法器,以减少累加过程中的时延。这样的n比特的乘法器的工作过程为:步骤1,对于nbit输入的乘法器,产生n个部分积,n个部分积两两一组分为n/2组,每组数据采用本发明提供的近似加法器进行加法操作,产生n/2个部分和;步骤2,将步骤1中得到的n/2个部分和两两一组分为n/4组,每组数据采用本发明提供的近似加法器进行加法操作;步骤3,重复步骤2,直至得到最终的一个累加计算结果。优选地,将在移动位数后相邻的两个部分积组合在一起,这样可以减少处理的延时。并且,凡是已处于一个组合中的部分积将不再被划分到其他组合中。图5示出了根据本发明的一个实施例的8比特乘法器执行乘法运算的过程,其中adder1至adder7为根据本发明的加法器,虚线框中错位的黑点表示经过移位器处理后的多比特的部分积。参考图5,adder1、adder2、adder3、adder4均处于同一层级中,用于对移动1个比特位的部分积执行加法,adder5、adder6处于同一层级中,分别用于对adder1和adder2的结果以及adder3和adder4的结果执行加法,adder7处于最高层级,用于对adder5和adder6的结果执行加法。下面以8比特的二进制数11101000乘以00110011为例,介绍采用图5所示出的乘法器执行乘法的过程:首先,该乘法器中的部分积产生器(未示出)将11101000与00110011中的每一位通过与门执行乘法,通过例如前文中所述的8个与门,可以分别产生8个部分积10101000、10101000、00000000、00000000、10101000、10101000、00000000、00000000。由adder1对第1个部分积10101000和由移位器向左移动1位的第2个部分积10101000执行加法;adder1对向左移动2位的第3个部分积00000000和向左移动3位的第4个部分积00000000执行加法;adder3对向左移动4位的第5个部分积10101000和向左移动5位的第6个部分积10101000执行加法;adder4对向左移动6位的第7个部分积00000000和向左移动7位的第8个部分积00000000执行加法。adder5以adder1的输出111111000和adder2的输出000000000向左移动2位的结果为输入,进行计算;adder6以adder3的输出111111000向左移动5位的结果和adder4的输出000000000向左移动7位的结果为输入,进行计算。adder7以adder5的输出00111111000和adder6的输出向左移动4位的结果为输入,进行计算,并获得最终的计算结果001110101111000。可以理解对二进制数11101000与00110011执行乘法的准确结果应当是0010000101111000,根据本发明的乘法器所计算的结果与该准确结果之间存在大小为10000000000的误差。这样的误差是由加法器执行运算时所带来的,发明人进行了以下仿真实验以测试采用根据本发明的乘法器对神经网络的计算结果的影响程度。表2示出了在神经网络中采用根据本发明的8比特的乘法器(在该根据本发明的乘法器之外的全部其他加法器采用的是传统加法器)以及采用传统8比特的乘法器(在该传统乘法器之外的全部其他加法器采用的是传统加法器)的测试结果。表2乘法器针对两种神经网络的性能指标并且,发明人还在alexnet网络和vgg-19网络这两类神经网络中进行了测试,测试所采用的测试集为imagenet数据集,进行了10000张图片测试,将数据集top5分类正确率作为计算准确率。在表2中,乘法器的运算延时是实际电路设计中的延时,该延时不仅取决于电路中逻辑门的理论数量,还包括线延时和寄生效应所带来的延时,在上述表格中,其计算式为:运算延时=器件实际延时/门延时平均值。可以理解,不同比特位的乘法器延时并不相同,增加比特位则会相应地增加乘法器的延时。在本发明中对8比特的根据本发明的乘法器以及8比特的传统乘法器进行了测试和比较。基于上述计算式,根据本发明的乘法器具有约为8个门延时,其远小于传统乘法器的约14个门延时。对于上述alexnet神经网络的前向推理过程而言,采用根据本发明的乘法器最多可节省4.2×109个门延时。表2还示出了针对两种神经网络进行计算的准确率,对于alexnet网络而言,根据本发明的乘法器的计算准确率为72.6%,其准确率仅略微低于采用传统乘法器的准确率76.5%。类似地,对于vgg-19网络而言,根据本发明的的乘法器的计算准确率为85.5%,略微低于采用传统乘法器的准确率88.1%。上述实验证实了,在计算量相同的情况下,根据本发明的乘法器能够以仅牺牲一小部分准确率为代价而大幅降低执行神经网络计算的耗时。这对于需要执行极大量计算的神经网络而言,能够大幅提高运算速度、降低处理器的能耗。综上所述,本发明提供了一种能够提升神经网络处理系统的运算速度并降低能耗、使得神经网络处理系统性能更加高效的加法器以及相应的乘法器,其克服了神经网络处理器中加法器以及乘法器存在的设计复杂度高、运算速度差、能量效率低这一问题,通过引入近似计算技术,降低了加法以及乘法操作的能量损耗,提高了运算速度。需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1