首页> 中国专利> 一种基于布斯编码的16*8近似乘法器片上动态计算系统

一种基于布斯编码的16*8近似乘法器片上动态计算系统

摘要

本发明公开了一种基于布斯编码的16*8近似乘法器片上动态计算系统,属于计算、推算或计数的技术领域。本发明中,输入的运算数据经过数据预加载模块读出有效位宽;将读到的有效位宽再输入相应的数据计算模式动态预解析模块,根据有效位宽将输入数据分为不同的类型,并作为配置近似方案的重要依据;将此前得到的数据位宽输入容许误差计算模块,计算最大容许误差;近似乘法器结构动态配置运算模块根据数据类型给出基础近似方案;比较该方案对应误差与最大容许误差,根据比较结果不断调整近似方案,最终得到最适合的方案,算出近似结果。在误差容许范围内找到最适合的近似配置方案,实时对乘法运算进行动态配置,使精度和功耗的选择更加灵活。

著录项

  • 公开/公告号CN112612446A

    专利类型发明专利

  • 公开/公告日2021-04-06

    原文格式PDF

  • 申请/专利权人 东南大学;

    申请/专利号CN202011480410.2

  • 申请日2020-12-15

  • 分类号G06F7/46(20060101);G06F7/533(20060101);

  • 代理机构32200 南京经纬专利商标代理有限公司;

  • 代理人熊玉玮

  • 地址 210096 江苏省南京市玄武区四牌楼2号

  • 入库时间 2023-06-19 10:29:05

说明书

技术领域

本发明涉及动态可配置近似乘法计算技术,具体地,涉及一种基于布斯编码的16*8近似乘法器片上动态计算系统,属于计算、推算或计数的技术领域。

背景技术

近年来,节能设计越来越受到人们的重视,这是因为大量的应用都需要低功耗的定制设计,但是这些硬件需要处理的数据量急剧增加,为了同时满足这两个要求,近似计算成为一种有效的解决方案。

随着神经网路、机器学习等与人类感知相关应用的日益普及,片上硬件的计算量逐渐增大,但在精度上并不要求完全的准确性和正确性,这是由于神经网络具有天然的容错性,因此,使用近似计算可以进一步地降低功耗,提升电路性能。

神经网络具有大量复杂的、并行的乘加运算,需要消耗大量的计算资源。在传统的近似电路中,近似配置往往是不可调的,对所有的输入数据不加区分地用同种方案近似,这通常会导致功耗收益不明显或计算精度超过容许范围。例如,对于一个复杂的神经网络,不同网络层对误差的容错范围不同,因此,对不同网络层配置不同的近似方案可以实现收益的最大化。

现有近似乘法动态配置方案有两种:一种方法是通过配置迭代次数控制计算精度,这种方案需要反复迭代,配置时间长,不能保证计算的实时性;另一种方案是根据数据位宽配置近似位数,但可调节的范围和结果具有盲目性。本申请旨在提出一种基于布斯编码的16*8近似乘法器片上动态计算系统以克服现有近似乘法动态配置方案的缺陷。

发明内容

本发明的发明目的是针对上述背景技术的不足,提供了一种基于布斯编码的16*8近似乘法器片上动态计算系统,在近似计算技术中根据输入系统的数据有效位宽动态调整近似乘法运算的配置,在误差容许范围内找到最适合的近似配置方案,实现了近似乘法运算进行动态配置,使精度和功耗的选择更加灵活,解决了现有近似乘法动态配置方案精度不佳的技术问题。

本发明为实现上述发明目的采用如下技术方案:

基于布斯编码的16*8近似乘法器片上动态计算系统,动态可配置地对多种输入数据实现近似计算。本发明的特点是在近似计算模块的基础上,新设计了一款动态误差配置系统,针对每组运算的数据都根据其数据特点找到最合适的近似方案,确保对每一组数据的近似误差都是在可接受范围内,大大提升了近似方案的可靠性。本发明核心模块为数据预加载模块、数据计算模式动态预解析模块、实时误差计算比较评估模块以及近似乘法器结构动态配置运算模块。

数据预加载模块包括首位判断电路子模块、先导0计数器电路子模块、先导1计数器电路子模块和减法电路子模块,串行地处理16bit乘数和8bit被乘数,先处理16bit乘数,再处理8bit被乘数,两次串行处理仅在最后的减法部分有差异;由首位判断电路子模块进行符号位的判断,将首位判断电路子模块判断为正数的数据送入先导0计数器电路子模块,将首位判断子模块判断为负数的数据送入先导1计数器电路子模块,将先导0计数器或先导1计数器读取到的数据再送入减法电路运算,计算公式如下:其中,t

16bit的数据读取器的有效位宽计算公式为:

16-t

8bit的数据读取器的有效位宽计算公式为:

8-t

数据计算模式动态预解析模块包括16位乘数分类子模块和8位被乘数编码分类子模块。16位乘数分类子模块包括两个5bit数据比较器以及一个2bit结果寄存器;2bit结果寄存器初值置‘10’,16bit数据有效位宽首先进入第一个5bit数据比较器和5比较,小于或等于5时,2bit寄存器置00,比较结束,配置为全精度模式;16bit数据有效位宽大于5时,2bit寄存器低位置1。第二个5bit数据比较器的使能端连接2bit寄存器的低位,2bit寄存器低位是‘0’时,第二个5bit数据比较器不开启,分类模块工作结束;2bit寄存器低位是‘1’时,第二个比较器开始工作,将16bit数据有效位宽和10比较,16bit数据有效位宽小于或等于10时,2bit寄存器高位置‘0’,配置为高精度模式;16bit数据有效位宽大于10时,2bit寄存器高位置‘1’,配置为低精度模式。总结为:当16bit数据有效位宽为0~5时,配置为全精度模式,输出分类结果为‘00’;16bit数据有效位宽为6~10时,配置为高精度模式,输出分类结果为‘01’;16bit数据有效位宽为11~16时,配置为低精度模式,输出分类结果为‘11’。

8位被乘数编码分类子模块包括两个4bit数据比较器以及一个2bit寄存器;8位被乘数经过布斯编码将产生4组编码结果。当编码结果对应‘0’操作时,记为‘0’,当编码结果对应非‘0’操作时,记为‘x’。2bit寄存器初值置‘10’,8bit数据有效位宽首先进入第一个4bit数据比较器和3比较,8bit数据有效位宽小于或等于3时,2bit寄存器置‘00’,比较结束,8位被乘数的布斯编码为两位有效编码‘00xx’;8bit数据有效位宽大于3时,2bit寄存器低位置1。第二个4bit数据比较器的使能端连接2bit寄存器的低位,是‘0’的话,第二个4bit数据比较器不开启,分类模块工作结束;是‘1’时,第二个4bit数据比较器开始工作,将8bit数据有效位宽和6比较,8bit数据有效位宽小于或等于6时,2bit寄存器高位置‘0’,8位被乘数的布斯编码为三位有效编码‘0xxx’;8bit数据有效位宽大于6时,2bit寄存器高位置‘1’,8位被乘数的布斯编码为四位有效编码‘xxxx’。总结为:4位编码结果可被分类为:两位有效编码‘00xx’,输出分类结果为‘00’;三位有效编码‘0xxx’,输出分类结果为‘01’;四位有效编码‘xxxx’,输出分类结果为‘11’。

实时误差计算比较评估模块包括容许误差计算模块和当前误差比较模块,其中,容许误差计算模块由一系列运算器构成,运算逻辑根据16位乘数分类子模块的分类结果选择。对于全精度模式,最大容许误差值为0;对于高精度模式和低精度模式,最大容许误差会根据读取到的数据有效位宽对应得出,计算方法是取当前位宽乘法计算的可能的最大值时,绝对误差约为0.75%的情况,k

当前误差比较模块也根据16位乘数分类子模块的分类结果选择计算方式,在全精度模式下,当前误差为0,在高精度或低精度模式下计算当前误差的方法如下述公式,其中,v表示进位舍弃线的值,k

比较当前误差和最大容许误差,当前误差大于最大容许误差时,输出结果‘1’,当前误差小于最大容许误差时,输出结果‘0’,误差比较结果输入到近似乘法器结构动态配置运算模块,用于进一步配置近似方案。

近似乘法器结构动态配置运算模块,包括若干1位全加器、若干1位或门加法器以及若干1位与门加法器组成的可配置加法运算单元以及参数配置模块。对于全精度模式,进位舍弃线初始设定为0;对于高精度模式,进位舍弃线初始设定为8;对于低精度模式,进位舍弃线初始设定为12。进位舍弃线将进一步根据误差计算比较模块的输出结果调整。具体包括步骤101至步骤105

步骤101:设定初始进位舍弃线的值,对于全精度模式,进位舍弃线初始设定为0;对于高精度模式,进位舍弃线初始设定为8;对于低精度模式,进位舍弃线初始设定为12。

步骤102:计算此时进位舍弃线取值下的当前误差,并比较当前误差和最大容许误差,如果当前误差大于最大容许误差,进入步骤103a,否则进入步骤103b。

步骤103a:发送误差比较结果至参数配置模块,进位舍弃线的值减1,进入步骤102;

步骤103b:发送误差比较结果至参数配置模块,参数配置模块检查之前是否出现过当前误差大于最大容许误差的情况,如果出现,进入步骤105,否则进入步骤104。

步骤104:进位舍弃线值加一,计算此时进位舍弃线取值下的当前误差,并比较当前误差和最大容许误差。如果当前误差大于最大容许误差,进入步骤103a,否则进入步骤103b。

步骤105:确定最终的进位舍弃线值,完成近似方案的动态配置。

近似乘法器结构动态配置运算模块包括三组可配置加法运算单元,根据8位被乘数编码分类模块的结果,可以进一步配置三组运算单元的开启情况,减少运算量。

在编码是0的情况下,对应该行的加数先乘以‘0’再送入加法单元运算,运算的加数都是‘0’,那么实际上该行的加法单元开启不开启都不会影响最后的结果,动态地根据布斯编码结果选择性地开启加法单元可以有效节省能耗。当8位被乘数编码分类结果为两位有效编码‘00xx’时,只需要开启第一组加法运算单元;同理,三位有效编码‘0xxx’时,开启第一组和第二组加法运算单元;四位有效编码‘xxxx’时,则开启全部加法运算单元。仅当在全精度模式下,电路不配置进位舍弃线。在高精度模式下,即对应16位数据分类模块结果为‘01’,此时进位舍弃线初值为‘8’,进位舍弃线可取的范围是“5、6、7、8、9、10、11、12”,为了便于配置乘法运算单元,将这8个数用3位二进制编码得:

在低精度模式下,即对应16位数据分类模块结果为‘11’,此时进位舍弃线初值为‘12’,进位舍弃线可取的范围是“9、10、11、12、13、14、15、16”,为了便于配置乘法运算单元,将这8个数用3位二进制编码得:

综合考虑可得,配置参数模块需要7bit的输入,其进位舍弃线配置参数和输入二进制码的低五位对应关系为:

7bit输入的高两位是读取8bit数据分类模块的结果,有:

进一步提出,整个系统的工作流程为:

步骤201:数据预加载模块读入乘数和被乘数,得到数据和有效位宽,并将结果输入数据计算模式动态预解析模块;

步骤202:16位乘数分类子模块根据16bit乘数有效位宽,将计算模式分为全精度、高精度和低精度三种模式,并将分类结果输入实时误差计算比较评估模块和近似乘法器结构动态配置运算模块;

步骤203:8位被乘数编码分类子模块将编码分为三种有效位模式,并将分类结果输入近似乘法器结构动态配置运算模块,同时依据基4布斯编码原理,把8位被乘数编码成4位;

步骤204:实时误差计算比较评估模块根据计算模式和有效位宽得出最大容许误差和当前误差,并将两个误差计算值进行比较,再将比较结果输入到近似乘法器结构动态配置运算模块;

步骤205:近似乘法器结构动态配置运算模块根据数据计算模式动态预解析模块的结果,初步选择近似方案,并根据实时误差计算比较评估模块的结果进一步调整近似方案;

步骤206:重复步骤204、205,直到得出最优近似方案,并输出最终计算结果。

本发明采用上述技术方案,具有以下有益效果:

(1)本发明提供了一种基于布斯编码的16*8近似乘法器片上动态计算系统,可根据输入数据有效位宽大小动态调整乘法运算单元参数配置,首先根据16bit乘数有效位宽配置计算模式,在确定的计算模式下结合乘数和被乘数的有效位宽计算当前误差和最大容许误差,根据误差比较结果动态配置进位舍弃线取值,克服了仅根据数据位宽配置近似位数的近似方案未考虑计算精度存在调节范围不明确的缺陷。

(2)本申请在处理部分积时,引入了布斯编码对8位被乘数进行编码压缩,并根据8位被乘数的有效布斯编码动态选择计算网络,将原先8位的乘数压成4位编码,原本会产生8个部分积的16*8乘数在编码后只会产生4个部分积,加入一个小的编码模块换取了整个运算模块的面积减半,动态选择计算网络则开启操作8位被乘数有效布斯编码的加法单元,在误差容许范围内动态选择最合适的近似配置方案,拥有比传统精确运算神经网络更小的硬件资源占用率,同时相比静态近似电路能够更加灵活地选择精度和功耗。

(3)本申请通过数据预加载模块、数据计算模式动态预解析模块、实时误差计算比较评估模块以及近似乘法器结构动态配置运算模块的配合动态调整配置方案,使得计算网络工作于满足精度要求且快速进行近似乘法运算的状态,是一种能够实现动态配置、快速近似乘法计算的片上动态计算技术,具有功耗低、模块面积小、检测精度高的优点。

附图说明

图1为本发明公开的16*8近似乘法器片上动态计算系统的整体架构图。

图2为本发明配置近似方案的流程图。

图3为本发明中16位乘数分类子模块的工作流程图。

图4为本发明中8位被乘数编码分类子模块的工作流程图。

图5为本发明动态配置运算网络的示意图。

图6为本发明16*8近似乘法器片上动态计算系统的整体工作流程图。

具体实施方式

下面结合附图对发明的技术方案进行详细说明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明做出的各种等价形式的修改均落入本申请所附权利要求所限定的范围。

本申请公开的基于布斯编码的16*8近似乘法器片上动态计算系统如图1所示,在内部各模块之间的协调控制下,根据输入数据的有效位宽,实现动态调节16*8近似乘法器参数配置的目的,即实现计算精度的动态调节并计算出当前数据位宽情况下最适合的近似结果,动态配置的整体工作流程如图6所示。

这里选取两个二进制数输入做示例,分别是16bit的‘0001 0101 0111 1111’和8bit的‘1110 1010’,首先将两个数据输入至数据预加载模块,数据预加载模块中的16bit数据读取器先处理16位数,首位判断电路读出符号位是‘0’,则表示16位数是正数,将16位数送入先导0计数器,计数得3个先导0,所以根据公式(1)得出16bit数的有效位宽是:16-3+1=14。16bit数据读取器输出16bit数及其有效位宽至数据计算模式动态预解析模块。

接着,数据预加载模块中的8bit数据读取器处理8位数,首位判断电路读出符号位是‘1’,则表示8位数是负数,将8位数送入先导1计数器,计数得3个先导1,所以根据公式(2)得出8位数的有效位宽是:8-3+1=6。8bit数据读取器输出8bit数及其有效位宽至数据计算模式动态预解析模块。

数据计算模式动态预解析模块中的16位乘数分类子模块处理16bit数有效位宽得到计算精度模式分类结果的流程如图3所示,将16bit数有效位宽14输入第一个5bit数据比较器和5比较,比较结果大于5,2bit寄存器的低位置‘1’,需要继续比较,继续将14输入第二个5bit数据比较器和10比较,比较结果大于10,2bit寄存器的高位置‘1’,确认需要低精度工作模式,寄存器值为‘11’。

数据计算模式动态预解析模块中的8位被乘数编码分类子模块处理8bit数有效位宽得到8bit数布斯编码分类结果的流程如图4所示,将8bit数有效位宽6输入第一个4bit数据比较器和3比较,比较结果大于3,2bit寄存器的低位置‘1’,需要继续比较,继续将6输入第二个4bit数据比较器和6比较,比较结果小于等于6,2bit寄存器的高位置‘0’,确认是三位有效编码,寄存器值为‘01’。

动态配置近似方案的流程如图2所示,包括如下八个步骤:

步骤一:实时误差计算比较评估模块用数据预加载模块读取到的数据有效位宽计算当前情况下对应的最大容许误差,按照公式(3)有:2

步骤二:近似乘法器结构动态配置运算模块中的参数配置模块读取16位乘数分类子模块的寄存器,读出‘11’,需要工作在低精度模式,进位舍弃线初值取12,近似乘法器结构动态配置运算模块将这个初值发给实时误差计算比较评估模块,根据公式(4)得到低精度时的当前误差为:ε=2

步骤三:实时误差计算比较评估模块中的误差比较模块将低精度时的当前误差和最大容许误差作比较,得2560<8192,误差比较模块输出‘0’,近似乘法器结构动态配置运算模块中的参数配置模块检查误差比较模块之前的输出结果,之前的输出结果未出现过‘1’并且当前比较误差小于最大容许误差,参数配置模块将进位舍弃线加一得到13并反馈13至实时误差计算比较评估模块中的当前误差计算模块,当前误差计算模块根据公式(4)再次计算当前误差得:ε=2

步骤四:实时误差计算比较评估模块中的误差比较模块将4096和最大容许误差作比较,得4096<8192,误差比较模块输出‘0’,近似乘法器结构动态配置运算模块中的参数配置模块检查误差比较模块之前的输出结果,之前的输出结果未出现过‘1’并且当前比较误差小于最大容许误差,参数配置模块将进位舍弃线加一得到14并返回14至实时误差计算比较评估模块中的当前误差计算模块,当前误差计算模块根据公式(4)计算当前误差得:ε=2

步骤五:实时误差计算比较评估模块中的误差比较模块将7168和最大容许误差作比较,得7168<8192,误差比较模块输出‘0’,近似乘法器结构动态配置运算模块中的参数配置模块检查误差比较模块之前的输出结果,之前的输出结果未出现过‘1’并且当前比较误差小于最大容许误差,参数配置模块将进位舍弃线加一得到15并反馈15至实时误差计算比较评估模块中的当前误差计算模块,当前误差计算模块根据公式(4)计算当前误差得:ε=2

步骤六:实时误差计算比较评估模块中的误差比较模块将13312和最大容许误差作比较,得13312>8192,误差比较模块输出‘1’,发送误差比较模块输出结果至近似乘法器结构动态配置运算模块中的参数配置模块,参数配置模块将进位舍弃线减一得到14并反馈14至实时误差计算比较评估模块中的当前误差计算模块,当前误差计算模块根据公式(4)计算当前误差得:ε=2

步骤七:实时误差计算比较评估模块中的误差比较模块将7168和最大容许误差作比较,得7168<8192,误差比较模块输出‘0’,近似乘法器结构动态配置运算模块检查误差比较模块之前的输出结果,之前的输出结果出现过‘1’,则表示进位舍弃线等于14时的低精度工作模式是最适合当前位宽的近似方案,参数配置模块发送最适合当前位宽的近似方案的进位舍弃线取值至运算网络控制器。

步骤八:近似乘法器结构动态配置运算模块中的运算网络控制器接收进位舍弃线取值的同时读取8位被乘数编码分类子模块的寄存器,读到‘01’,对应三位有效编码‘0xxx’,即,需要对8bit被乘数布斯编码的低三位进行乘法运算,采用图5所示运算网络对16bit乘数和8bit被乘数布斯编码的低三位进行加法运算,该运算网络包括三组可配置的加法运算单元后,第一组加法单元表示对16bit乘数和8bit被乘数布斯编码的低两位00xx进行加法运算,第二组加法单元表示对16bit乘数和8bit被乘数布斯编码的次高位0x00进行加法运算,第三组加法单元表示对16bit乘数和8bit被乘数布斯编码的最高位x000进行加法运算,本例中8位被乘数编码分类子模块分类结果表示8bit被乘数布斯编码为三位有效编码‘0xxx’,因此只需要只开启运算网络的第一组和第二组加法运算单元,给控制器输入编码‘0111101’,网络就会开启第一组合第二组加法运算单元并配置进位舍弃线等于14,进行近似计算,输出最后计算结果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号