集成电路系统中小数乘法器的低功耗优化方法

文档序号:6434257阅读:166来源:国知局
专利名称:集成电路系统中小数乘法器的低功耗优化方法
技术领域
本发明属于电子技术领域,更进一步涉及集成电路技术领域中小数乘法器的低功耗优化方法。本发明基于正则有符号数字量算法(CSD)和霍纳算法(Horner kheme),可用于集成电路中含有小数乘法器的系统的低功耗优化设计。
背景技术
在数字电路设计中,减少冗余信号翻转是一种降低系统功耗的常见方法,但该方法需要在系统中增加额外的控制电路,这会使得系统引入该控制电路所带来的额外功耗和面积。浪潮电子信息产业股份有限公司拥有的专利技术“一种用于SOC的动态多时钟低功耗AHB总线的设计方法”(申请号:CN200910014266. 0,公告号:CN101493717)中公开了一种门控时钟设计方法,用来降低系统功耗。该方法的实现步骤是引入多个AHB总线,将对工作频率要求不同的外设连接到不同的AHB总线上,对时钟频率不同的各个AHB总线通过AHB-AHB桥相连,以降低某些低速外设的时钟频率,从而降低其动态功耗;通过APB总线动态对多时钟门控寄存器进行读写,控制相应的门控时钟信号,打开需要工作的模块的门控时钟,关闭不需要工作模块的门控时钟。该方法的不足之处是,需要在系统中引入额外的 AHB总线及AHB-AHB桥等控制逻辑来减少或降低时钟在不工作时的动态翻转,在降低系统动态功耗的同时引入了额外控制逻辑所带来的功耗和面积。华为技术有限公司拥有的专利技术“一种动态共享存储器存储空间的实现方法”(申请号CN200510066582.4,公告号CN1855881)中公开了一种存储器分块访问的实现方法。该方法的实现步骤是第一,将存储器的存储空间分成若干个存储分块,并为每个存储分块分配对应的地址指针信息;第二,当发生数据存储需求时,动态为其分配一条由一个或多个存储分块基于所述地址指针信息组成的数据存储分块链,并利用所述数据存储分块链进行数据的存储;第三,当所述的数据存储分块链中的存储分块无需存储数据时,则将其释放为可以分配给其他数据存储需求的存储分块。该方法的不足之处是,需要额外为存储分块分配地址指针,从而动态分配各存储分块的存储需求,因此在降低系统功耗的同时引入了额外地址指针所带来的功耗和面积。

发明内容
本发明的目的在于针对上述已有技术的不足,提出一种小数乘法器的低功耗优化方法。该方法基于正则有符号数字量算法(CSD)和霍纳算法(Horner kheme),两种算法相辅相承,同时作用于同一小数乘法器。对于含有小数乘法器的系统,本发明可以大幅降低其功耗和面积,同时不引入算法自身的逻辑单元。为了实现上述目的,本发明的技术方案是将优化乘法器模块与系统分离,仅在系统中实例化,并替换系统中各小数乘法器。在乘法器模块内部,由类属参数传入的小数系数首先经过整数化处理;其次进行正则有符号数字量优化,将优化结果以常数序列表示,综合后,乘法器模块根据这些常数就可以转化为对应的加法器,而算法逻辑本身不会引入乘法器模块中,正则有符号数字量优化指标是综合后乘法器模块转化为加法器的数量;再次进行霍纳优化,针对各级加法器根据正则有符号数字量优化结果,缺省对下级加法运算无任何进位贡献的本级加法结果末位,从而降低各级加法结果位宽;最后将计算结果小数化处理并保持数据宽度后得到最终小数乘法结果。本发明包括以下步骤(1)构建乘法器模块用硬件描述语言构建乘法器模块实体,包括一个用于输入原小数乘法器系数的类属参数端口 ;两个用于输入被乘数与数据宽度的输入端口 ;一个用于输出最终乘法运算结果的输出端口。(2)系数整数化处理在乘法器模块内部,按照整数化处理公式X = BQn-I),对由模块类属参数输入的小数乘法系数进行整数化处理,其中,X为二进制整数处理结果;B为小数乘法器系数;η为数据宽度。(3)正则有符号数字量优化对二进制整数处理结果由最低位向第η-1位搜索并做以下记录和处理3a)逢“1”则以两个变量分别记录其位置和符号;3b)逢“0”则判断之前有没有连续的“1”存在若有,取该连续“1”的补码,将位
置变量中的最大连续值加1,与其对应的符号变量为正,位置变量中最小连续值保持不变, 与其对应的符号变量为负,删除该两个位置变量之间的位置变量和所对应的符号变量,执行步骤3a);若无,直接执行步骤3a)。3c)搜索至整数处理结果的第η-1位,将所有位置变量和符号变量分别组成位置序列和符号序列。(4)提取优化结果在乘法器模块内部定义两个常数序列,分别将位置序列和符号序列赋值于这两个常数序列。(5)霍纳优化将位置常数序列和符号常数序列相乘,结果与被乘数进行霍纳优化,霍纳优化结果进行右移n-nk位的小数化处理,保留高η位作为小数乘法运算的最终结果,由乘法器模块输出端口输出。(6)替换小数乘法器将乘法器模块替换被优化系统中各小数乘法器,乘法器模块的类属参数设置为小数乘法器系数;乘法器模块的被乘数输入端设置为小数乘法器输入;乘法器模块的位宽输入端设置为小数乘法器位宽;乘法器模块的输出端赋值于小数乘法器结果。本发明与现有技术相比具有如下优点第1,本发明采用的小数乘法器系数由乘法器模块的类属参数传入的实现方法, 克服了现有技术低功耗设计中额外逻辑引入系统的问题,使得本发明的乘法器模块内部只有优化结果参与生成加法器,而优化算法自身的逻辑单元不会引入到乘法器内部。对于含有大规模乘法运算的系统,避免其内部各乘法器所引入的算法逻辑的功耗和面积累加入系
4统;第2,本发明基于正则有符号数字量算法和霍纳算法,前者的优化指标是乘法器转化为加法器的数量,后者的优化指标是乘法器内部寄存中间加法运算结果的寄存器位宽。 两种算法同时作用于同一小数乘法器,提升了单一算法的优化效果;第3,本发明采用先正则有符号数字量优化后霍纳优化的方法,前者计算结果可以为后者所利用,节省了后者计算工作量,提高了整个设计运算速度和运算效率;第4,本发明在运算过程中只需搜索乘法器系数中“1”的排列和位置并加以记录和处理,具有运行速度快,占用资源少,简单易行的优点;第5,本发明能够在不降低系统工作效率、不损失系统运算精度的条件下,大幅降低系统功耗和面积。


图1为本发明的流程图;图2为本发明中小数乘法整数化处理后的乘法竖式图;图3为本发明中正则有符号数字量优化后的乘法竖式图;图4为本发明中霍纳优化乘法竖式图。
具体实施例方式参照图1,本发明的具体实施步骤如下步骤1,构建乘法器模块用硬件描述语言构建乘法器模块实体,包括一个用于输入原小数乘法器系数的类属参数端口 ;两个用于输入被乘数与数据宽度的输入端口 ;一个用于输出最终乘法运算结果的输出端口。本发明实施例中,用VHDL语言构建乘法器模块实体,类属参数端口为g,被乘数输入端口为x_i,数据宽度输入端口为n,输出端口为z_o。步骤2,系数整数化处理在乘法器模块内部,按照整数化处理公式X = BQn-I),对由模块类属参数输入的小数乘法系数进行整数化处理,其中X为二进制整数处理结果、B为小数乘法器系数、η为数据宽度。此时数据宽度η所能表达出的最大数被归一化为“1”,小数B则被表示为所占该 “归一化1”的比例。本发明实施例中,八位的小数119/255被整数化处理为119/255 Q8-I)= 119 (01 IlOlllb),这里 255 (Illlllllb)被归一化为“1”。八位小数乘法 153X 119/255 进行整数化处理后的乘法竖式如图2所示。图中被乘数153以二进制表示为10011001b,乘数为 OlllOlllb,该乘法运算共转化为五个加法器,第一级加法结果为IllOOlOllb,位宽为9 ;第二级加法结果为10000101111b,位宽为11 ;第三级加法结果为Iioiioilllllb,位宽为12 ; 第四级加法结果为10000011011111b,位宽为14 ;第五级加法结果为100011100011111b,位宽为15,小数化处理后的八位最终乘法结果为1000111.0b。步骤3,正则有符号数字量优化对二进制整数处理结果由最低位向第n-1位搜索并做以下记录和处理逢“1”则以两个变量分别记录其位置和符号;逢“0”则判断之前有没有连续的“1”存在若有,取该连续“1”的补码,将位置变量中的最大连续值加1,与其对应的符号变量为正;位置变量中最小连续值保持不变,与其对应的符号变量为负,删除该两个位置变量之间的位置变量和所对应的符号变量,然后继续向高位搜索;若无,直接向高位搜索;搜索至整数处理结果的第n-1位,将所有位置变量和符号变量分别组成位置序列和符号序列。本发明实施例中,对步骤2中八位小数乘法153X 119/255整数化处理结果进行正则有符号数字量优化后的乘法竖式如图3所示。图中被乘数153以二进制表示为 iooiiooib,乘数为ιοοο οο Α,其中 表示-1。优化后该乘法运算共转化为2个加法器,第一级加法结果为-10101100001b ;第二级加法结果为100011100011111b,相比于优化前加法器数量减少3个。步骤4,提取优化结果在乘法器模块内部定义两个常数序列,分别将步骤3的位置序列和符号序列赋值于这两个常数序列。步骤5,霍纳优化将位置常数序列和符号常数序列相乘,结果记为(ni,n2,. . .,nk);第一个加法器是由被乘数左移Ii1位加被乘数左移n2位构成,并缺省加法结果的最末n2位作为第一个中间结果;第二个加法器是由被乘数左移n3位加第一个中间结果构成,并缺省加法结果的最末 113位作为第二个中间结果;第i个加法器是由被乘数左移位加第i-Ι个中间结果构成, 并缺省加法结果的最末IV1位作为第i个中间结果;直至构建出第k-Ι个加法器。由于霍纳优化算法是缺省对下级加法无进位贡献的本级加法结果的末位,从而减少各级加法结果的位宽。因此在乘法器模块内部,除了缺省操作,没有引入任何额外的运算和逻辑单元。由于步骤2中对η位小数系数B乘以Qn-I),相当于将B左移η位,因此最末级加法运算的结果需要右移η位进行小数化处理。然而在霍纳优化过程中最大缺省位为nk,即在优化过程中已经右移了 nk位,所以最末级加法器的结果只需右移n-nk位,并保留高η位作为小数乘法运算的最终结果,由乘法器模块输出端口输出。本发明实施例中,对步骤3中八位小数乘法153X 119/255的正则有符号数字量优化结果,经霍纳优化后的乘法竖式如图4所示。图中被乘数153以二进制表示为 10011001b,乘数为1000 00 Λ,其中 表示-1。优化后该乘法运算共转化为2个加法器,第一级加法结果为-10101100b,位宽为8 ;第二级加法结果为10001110b,位宽也为8,小数化处理后的八位最终乘法结果为IOOOllLOb,与优化之前完全一致,加法结果位宽总共节省 (9+11+12+14+15)-(8+8) =45 位。步骤6,替换小数乘法器将乘法器模块替换系统中各小数乘法器,乘法器模块的类属参数设置为小数乘法器系数;乘法器模块的被乘数输入端设置为小数乘法器输入;乘法器模块的位宽输入端设置为乘法器位宽;乘法器模块的输出端赋值于小数乘法器的结果。对于含有乘法器的系统,系统的参数和特性一旦确定,其内部各乘法器系数也将确定。而乘法器系数由类属参数传入而不以常数参数传入的原因是,常数只能从设计实体的内部得到赋值且不能再改变,而类属的值可以由设计实体外部提供,因此设计者可以从外面通过类属参量的重新设定而容易地改变该模块的内部电路结构。本发明实施例中,采用ATERA公司的Quartus II作为综合工具,首先创建项目向导,在QuartusII的工具栏中点击File- > New Project Wizard并选中乘法器模块;其次在工具栏中点击!Processing- > Start Compilation,启动全程编译;最后在工具栏中点击 Tools-> Netlist Viewer- > RTL Viewer,查看乘法器模块综合后生成的门级电路。在综合初期,小数乘法器的系数通过类属参数传入乘法器模块,得到以常数序列表示的正则有符号数字量优化结果,综合后根据这些常数,乘法器模块就可以转化为对应的加法器,霍纳优化算法同时针对各级加法器缺省对下级加法运算无任何进位贡献的本级加法结果末位, 从而降低寄存器位宽。这时正则有符号数字量优化逻辑本身不会进入乘法器模块中,而模块内部的霍纳算法也只含有缺省操作,不会引入额外的逻辑单元和运算。为了精确测试本发明的优化效果,以某含有大量数字滤波器和数字信号处理的射频模块作为被优化系统。测试工具为kquence Design公司的Power Theater,作为标准功耗计算工具,它可以对系统的前端RTL代码计算出准确的功耗和面积。表1与表2为优化前射频模块功耗与面积;表3与表4为本发明方法优化后的射频模块的功耗与面积。优化前模块的功耗为10. 7mW,逻辑单元数为95962,面积为1. 479mm2。经过本发明方法优化后, 以上参数分别为7. 94mW、74915、l. 412mm2,同比降低25. 79%,21. 93%,4. 53%。优化效果十分明显。表1优化前射频模块功耗
权利要求
1.一种集成电路系统中小数乘法器的低功耗优化方法,包括以下步骤(1)构建乘法器模块用硬件描述语言构建乘法器模块实体,包括一个用于输入原小数乘法器系数的类属参数端口 ;两个用于输入被乘数与数据宽度的输入端口 ;一个用于输出最终乘法运算结果的输出端口 ;(2)系数整数化处理在乘法器模块内部,按照整数化处理公式X = B(2n_l),对由模块类属参数输入的小数乘法系数进行整数化处理,其中,X为二进制整数处理结果;B为小数乘法器系数;η为数据宽度;(3)正则有符号数字量优化对二进制整数处理结果由最低位向第η-1位搜索并做以下记录和处理3a)逢“1”则以两个变量分别记录其位置和符号;3b)逢“0”则判断之前有没有连续的“1”存在若有,取该连续“1”的补码,将位置变量中的最大连续值加1,与其对应的符号变量为正,位置变量中最小连续值保持不变,与其对应的符号变量为负,删除该两个位置变量之间的位置变量和所对应的符号变量,执行步骤3a);若无,直接执行步骤3a);3c)搜索至整数处理结果的第η-1位,将所有位置变量和符号变量分别组成位置序列和符号序列;(4)提取优化结果在乘法器模块内部定义两个常数序列,分别将位置序列和符号序列赋值于这两个常数序列;(5)霍纳优化将位置常数序列和符号常数序列相乘,结果与被乘数进行霍纳优化,霍纳优化结果进行右移n-nk位的小数化处理,保留高η位作为小数乘法运算的最终结果,由乘法器模块输出端口输出;(6)替换小数乘法器将乘法器模块替换被优化系统中各小数乘法器,乘法器模块的类属参数设置为小数乘法器系数;乘法器模块的被乘数输入端设置为小数乘法器输入;乘法器模块的位宽输入端设置为小数乘法器位宽;乘法器模块的输出端赋值于小数乘法器结果。
2.根据权利要求1所述的集成电路系统中小数乘法器的低功耗优化方法,其特征在于,步骤(1)中所述的硬件描述语言为VHDL语言。
3.根据权利要求1所述的集成电路系统中小数乘法器的低功耗优化方法,其特征在于,步骤(5)中所述的霍纳优化方法的步骤是,将将位置常数序列和符号常数序列相乘的结果记为Oi1, n2,. . .,nk);第一个加法器由被乘数左移Ii1位加被乘数左移n2位构成,缺省加法结果的最末112位后作为第一个中间结果;第二个加法器由被乘数左移n3位加第一个中间结果构成,缺省加法结果的最末n3位后作为第二个中间结果;第i个加法器是由被乘数左移位加第i-Ι个中间结果构成,缺省加法结果的最末IV1位后作为第i个中间结果; 直至构建出第k-Ι个加法器。
全文摘要
本发明公开了一种集成电路系统中小数乘法器的低功耗优化方法,主要解决目前低功耗设计中额外逻辑引入系统从而影响系统功耗的问题。其主要步骤包括(1)构建乘法器模块;(2)系数整数化处理;(3)正则有符号数字量优化;(4)提取优化结果;(5)霍纳优化;(6)替换小数乘法器。本发明具有运行速度快,占用资源少,简单易行的优点,能够在不降低系统工作效率、不损失系统运算精度的条件下,大幅降低系统功耗和面积。适用于诸如数字信号处理、数字滤波器等含有大量小数乘法器的系统。
文档编号G06F7/52GK102314215SQ20111028998
公开日2012年1月11日 申请日期2011年9月27日 优先权日2011年9月27日
发明者刘红侠, 袁博 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1