买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:电子科技大学
摘要:本发明属于集成电路领域,涉及一种基于对数数据的CNN高效乘加单元。本发明包括线性域转对数域转换模块、对数域加法模块和累加模块,基于对数数据的CNN高效乘加单元中将权重W和神经元激活值X相乘的乘法运算转换为对数域的加法计算。首先将线性域的神经元激活值X和权重W转换为对数域,然后利用加法器将已经对数化的神经元激活值X和权重W进行相加,最后对对数域加法模块的输出数据进行移位和累加,得到线性域的神经元激活值X和权重W相乘累加的结果。本发明可减少硬件设计的复杂度、硬件功耗和面积、以及最大组合逻辑延时,从而提高系统的最高时钟频率,可使用流水线形式处理多组数据,实现运算速率的提升。
主权项:1.一种基于对数数据的CNN高效乘加单元,其特征在于:包括线性域转对数域转换模块、对数域加法模块和累加模块三个模块;所述线性域转对数域转换模块包含2个线性域转对数域转换单元,接收线性域的二进制位宽为L位的有符号定点数输入,最高位为符号位,次L1位为整数位,后L2位为小数位;通过2个线性域转对数域转换单元分别将线性域的神经元激活值X和权重W转换为对数域;对于有n个神经元激活值X和n个权重W的乘加算法如公式1所示:Y=X1*W1+X2*W2+…+Xn*Wn1简化过程如下所示,对于整数m∈[1,n],令:Ym=Xm*Wm2有:log2Ym=log2Xm+log2Wm3signYm=signXmxorsignWm4signYm表示Ym的符号位,此时:Y=Y1+Y2+…+Yn5线性域转对数域转换单元的工作过程对于神经元激活值Xm,如公式6所示: 其中ixm表示对数域数据log2Xm的整数部分,获取输入的定点数的整数部分最高位1的位置,其在整数部分的位数记为ixm,若整数部分最高位1后一位为1,将ixm左移1位,为0则不做调整;将输入的定点数Xm左移L1-ixm-1位得到pxm;采用公式6对lnpxm进行近似,近似得到的[pxm-1+qxm]*log2e表示对数域数据的小数部分,并引入qxm用作对pxm的修正;对pxm进行修正得到pxm-1+qxm,将ixm存入定点数的整数部分,将pxm-1+qxm去除整数部分位数后存入小数部分,保留线性域数据的符号位,得到Xm从线性域转换到对数域的数据;另一个线性域转对数域转换单元的工作过程对于权重Wm,如公式8所示: 其中iwm表示对数域数据log2Wm的整数部分,获取输入的定点数的整数部分最高位1的位置,其在整数部分的位数记为iwm,若整数部分最高位1后一位为1,将iwm左移1位,为0则不做调整;将输入的定点数Wm左移L1-iwm-1位得到pwm;采用公式6对lnpwm进行近似,近似得到的[pwm-1+qwm]*log2e表示对数域数据的小数部分,并引入qwm用作对pwm的修正;对pwm进行修正得到pwm-1+qwm,将iwm存入定点数的整数部分,将pwm-1+qwm去除整数部分位数后存入小数部分,保留线性域数据的符号位,得到Wm从线性域转换到对数域的数据;同时从2个线性域转对数域转换单元中输出结果送入对数域加法模块,对其他的X和W做与Xm和Wm相同的操作,得到所有X和W从线性域转换到对数域的数据;所述对数域加法模块的两个输入端口分别连接神经元激活值X和权重W经过线性域转对数域转换模块转换为对数域后的输出,利用加法器将已经对数化的神经元激活值Xm和权重Wm进行相加,如公式10和11所示:jm=ixm+iwm10fm=[pxm-1+qxm+pwm-1+qwm]*log2e11其中jm表示进行过对数域加操作后的整数部分,即Xm和Wm的整数部分ixm和iwm相加和;fm表示进行过对数域加操作后的小数部分,即Xm和Wm的小数部分pxm-1+qxm和pwm-1+qwm相加和;将得出的数据根据公式12转换回线性域: 采用公式8对efm*ln2进行近似,近似得到的fm+gmln2表示进行过对数域加操作后的小数部分,并引入gm用做对fm的修正;根据线性域定点数整数位长度k设置2k+1个不同的数据存储单元,其中2k个数据存储单元iacc0、iacc1、iacc2……iacc2k-1用于存储Y1、Y2……Yn的整数部分j1、j2……jn在0到2k-1中各个取值的个数,另外2k个facc0、facc1、facc2……facc2k-1用于存储j1、j2……jn为0到2k-1中不同取值时Y1、Y2……Yn的小数部分f1+g1、f2+g2……fn+gn的值;对于数值相同的jm1=jm2=r,将fm1+gm1、fm2+gm2相加后存入faccr数据存储单元,其中,m1,m2∈[1,n]且m1≠m2,r∈[1,2k];而fm+gm系数ln2可以和公式6中的log2e相互抵消,故无需对系数进行操作;根据公式5,存入的数据需与之前已经存入的数据进行累加最终得到j为不同值时的整数部分和小数部分和;所述累加模块对对数域加法模块的输出数据进行移位和累加,根据iacc和facc存储器的标号对内部存储的数据进行左移,移位的长度为标号的大小;然后对最终得到的整数部分值和小数部分值求和得到线性域的神经元激活值X和权重W相乘累加的结果Y。
全文数据:
权利要求:
百度查询: 电子科技大学 一种基于对数数据的CNN高效乘加单元
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。