CN103593159A - 一种高效率高精度除法实现方法及装置 - Google Patents

一种高效率高精度除法实现方法及装置 Download PDF

Info

Publication number
CN103593159A
CN103593159A CN201210288609.4A CN201210288609A CN103593159A CN 103593159 A CN103593159 A CN 103593159A CN 201210288609 A CN201210288609 A CN 201210288609A CN 103593159 A CN103593159 A CN 103593159A
Authority
CN
China
Prior art keywords
value
divisor
bit
symbol
division
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201210288609.4A
Other languages
English (en)
Inventor
刘若堃
王清
桂竟晶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Keen (Chongqing) Microelectronics Technology Co., Ltd.
Original Assignee
Chongqing Cyit Communication Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chongqing Cyit Communication Technologies Co Ltd filed Critical Chongqing Cyit Communication Technologies Co Ltd
Priority to CN201210288609.4A priority Critical patent/CN103593159A/zh
Publication of CN103593159A publication Critical patent/CN103593159A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明实施例提供了一种高精度除法运算方法,包括设定系统有效位宽度l,从符号位开始从高位到低位搜索无符号除数x有效位的起始位位置Ps,获得无符号除数x的有效位长度,将无符号除数x分解为包含高l bit有效位的a和包含剩余有效bit位的b,变换无符号除数的倒数
Figure DDA00002010831900011
对a进行归一化处理,查询预存的倒数表,进行回归处理,获得的值;进而获得
Figure DDA00002010831900013
的值;还提供了一种高精度除法运算装置;本发明通过设定预存的倒数表或/和等式扩展的方式提高商的精度,适用于精度要求较高的场景,也适用于运算速率高且精度误差控制在一定范围内的场景,不但避免了现有技术除法运算中多次移位运算与减法操作,而且避免了插值拟合带来的误差过大现象。

Description

一种高效率高精度除法实现方法及装置
技术领域
本发明涉及电子与信号处理领域一种高精度高效率的除法实现方法,具体涉及高效率高精度除法实现方法及装置。
背景技术
在数字信号处理领域,经常涉及到除法运算。如在接收信号归一化过程中用到除法运算,信号处理中的矩阵运算等。这些运算中,很多情况下不需要求出余数,但需要求出精度相对较高的商。此类除法运算有很高的运算速度要求,即需要在很短的时间内求出运算结果,或硬件除法器需要工作在很高的频率。
现有除法器结构种多采用多次移位减法与移位操作得到精确的商以及余数。该类除法运算实现时间长,需要多个时钟周期或者综合后硬件工作频率低。例如,在Donald E.Knuth著的《计算机程序设计艺术》,第2卷,半数值算法(“TheArt of Computer Programming,Vol.2,Seminumerical Algorithms”)的第4章第3节介绍了一种计算除法的算法。该法先采用多次牛顿迭代方法求出除数的倒数,然后用被除数乘之得到商。但该法缺点在于为求得一个相对高精度的结果,迭代次数需要很多,插值繁杂,计算时间长。在采用赛灵斯(XILINX)公司的FPGA集成开发工具ISE中的Core Generator生成的32位除16位的除法器,在60MHz的工作时钟绝数下,完成一次运算需要20多个时钟周期。在专利申请号为01132302.7的中国专利申请“一种除法器”中采用移位加减法的方式实现除法器,,32位除16位的除法器需要16个时钟周期。以上现有技术存在的问题在于时钟周期较长,实现速度慢,在数字信号处理领域的应用受到极大限制。
发明内容
本发明针对现有技术除法运算时钟周期较长,实现速度慢问题,提出提出一种高效率高精度除法实现方法及装置。
本发明实施例提供了一种高精度除法运算方法,对不同或相同位宽的除数x′和被除数y′进行预处理,分解计算商
Figure BDA00002010831700021
设定系统有效位宽度l,1≤l≤Bw,Bw为系统位宽,在{16,32,40,64,128,256,…}中取任意值;
从符号位开始,从高位到低位搜索无符号除数x有效位的起始位位置Ps,获得无符号除数x的有效位长度Lx=Bw-Ps+1;
将无符号除数x分解为包含高lbit有效位的a和包含剩余有效bit位的b,变换无符号除数的倒数
Figure BDA00002010831700022
1 x = 1 a + b = 1 a 1 + b a = ( 1 1 + b a ) × ( 1 a ) - - - ( 1 )
对a进行归一化处理得到a′;
查询预存的倒数表,获得
Figure BDA00002010831700024
的值,所述预存的倒数表为预先存储的倒数表,存储[2l-1,2l-1]内整数的倒数值;
Figure BDA00002010831700025
的值进行回归处理得到的值;
获得
Figure BDA00002010831700027
的值;
其中,s表示商的符号,x为无符号除数,y为无符号被除数,式(1)中+号表示异或运算。
作为一种可选实施方式,若Lx>l,所述对a进行归一化处理得到a′为将a的高lbit的有效位右移m位得到a′,其中m=Bw-Ps-l+1。
优选地,所述将的值进行回归处理得到
Figure BDA00002010831700029
的值为,若左移m位会产生溢出,则将
Figure BDA00002010831700031
的值左移m位,否则降低Q值,Q=Q-m,Q值表示定点精度。
作为另一种可选实施方式,若Lx≤l,所述对a进行归一化处理得到a′为将a的高lbit的有效位左移m′位;所述将
Figure BDA00002010831700032
的值进行回归处理为将
Figure BDA00002010831700033
的值右移m′位,其中m′=Ps-Bw+l-1。
本发明实施例还提供了一种高精度除法实现装置,包括:
流水线控制单元,与操作寄存器和旁路单元相连接,包括定时器、中断控制逻辑、位操作逻辑和存储器,所述存储器用于存储控制寄存器文件;
所述操作寄存器,用于程序流的控制和计算,与指令定序单元相连接;
所述旁路单元,提供算术逻辑单元、乘累加单元、操作寄存器和地址寄存器之间的物理连接;
所述地址寄存器,连接存储单元、操作寄存器和旁路单元,用于地址产生和作为暂存器;
所述算术逻辑单元,包括两个16bit的算术逻辑运算,即加法运算或移位运算;
所述乘累加单元,包括一个40bit的算术逻辑运算,两个40bit的乘法运算和一个40bit的累加运算;
所述指令定序单元,包括指令译码器,指令组合逻辑,调试接口和输出逻辑,用于用以控制算术逻辑单元、乘累加单元,决定数据和资源的独立性,进行指令组合判决。
预存取单元,连接指令定序单元和存储单元,用于指令的预取,包括一个8×8words的指令缓存,一个cycle读取8个words的指令到指令缓存中,一个跳转预测逻辑,产生跳转和调用;
所述存储单元,用于存储运算结果。
相比于现有技术本,发明避免了常规除法实现方式中多次移位运算与减法操作,极大的提高了执行效率,适用于运算速率要求高,精度误差控制在一定范围内的场景;该实现方法通过设定查找表的精度与等式扩展的方式提高商的精度,避免了插值拟合带来的误差过大现象,适用与精度要求较高的场景;综合来说,本发明通过设定系统有效位宽度降低倒数表代码空间开销,且比原有的移位减的普通除法实现方法能减少较多的时间开销,且无论软硬件实现均可达到高速及高精度,且适用范围十分广泛,不限制bit位宽。
附图说明
图1为本发明高效率高精度除法实现方法优选实施例流程示意图;
图2为本发明高效率高精度除法实现装置优选实施例结构示意图;
图3为非精度模式求取1/N商值的仿真图结果示意图;
图4为非精度模式求取N/0x7FFFFFFF商值的仿真图结果示意图;
图5为一级精度模式求取N/0x7FFFFFFF商值的仿真图结果示意图;
图6为二级精度模式求取N/0x7FFFFFFF商值的仿真图结果示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明做进一步详细说明。
本发明中,假设除数x′和被除数y′为任意值,当除数x′和被除数y′为小数时采用定点方式(用Q值表示定点精度)表示,所述定点方式表示方法为本领域公知技术,在此不再累述。
步骤401、数据预处理
符号判断的步骤:根据除数x′和被除数y′的符号判断商w′的符号s(正正得正,负负得正,正负得负),并将除数x′和被除数y′转化为无符号除数x和无符号被除数y;
选定系统位宽Bw,系统位宽根据设备计算能力确定,可选范围为{16,32,40,64,128,256,…},例如,若设备最大能处理16比特,则系统位宽就是16bit,如果设备最大能处理为64bit,那么16bit、32bit、40bit、64bit都可被选取为比特位宽,本发明实施例选取Bw值为32。
作为一种可选实施方式,还包括:
异常判断的步骤:若除数x′为0,则需进行异常处理,输出一个最大值常数constant,并输出一个异常处理标志,结束运算。在一般情况下不需要进行此步骤,而当除数x′为0时,才进行此步骤。
以上符号判断的步骤、异常判断的步骤和选定系统位宽Bw在执行时序上不予限定,即是说,既可先执行符号判断的步骤再执行异常判断的步骤和选定系统位宽Bw,也可先选定系统位宽Bw再执行符号判断的步骤和异常判断的步骤,以及按其他顺序执行都可以,再则,根据需要进行全部或部分步骤也是可以的。
步骤402、对等式进行分解:
w = y ′ x ′ = s × y × ( 1 x ) ;
等式分解为商的符号s与无符号被除数y、无符号除数的倒数相乘,对于数字信号处理系统(如DSP、ZSP等),乘法用一个指令耗费一个时钟周期即可完成。
步骤403、搜索无符号除数x有效位的起始位位置Ps,Ps从1开始计数,获得无符号除数x的有效位长度Lx=Bw-Ps+1;
为使描述更加清楚,以如下实例1进行说明,假定l=8,除数x′为32bit数,经预处理后,无符号除数x=0000 0101 0100 1110 0111 1101 0000 0010;
从符号位开始,从高位到低位(本发明位置序号从1开始计数),搜索无符号除数x有效位的起始位位置Ps;本实施例搜索得到有效位起始位位置为6(即Ps=6),则从第6位至第32位为无符号除数x有效位,有效位长度为Lx=Bw-Ps+1=32-6+1=27位;
步骤404、将无符号除数x分解为包含高lbit有效位的a和包含剩余有效bit位的b,变换无符号除数的倒数
Figure BDA00002010831700053
1 x = 1 a + b = 1 a 1 + b a = ( 1 1 + b a ) × ( 1 a ) - - - ( 4.1 )
其中l为系统有效位宽度,根据计算系统处理能力取值,取值范围为[1,Bw],例如系统位宽Bw为32时,l取值范围为[1,32]。l取值越大,商的精度越高,但本发明预存表所占数据存储空间越大,因此考虑到精度需求和空间开销,本实施例优选取值为8,预存表所占数据存储空间为28-1=128word。式(4.1)中+号表示异或运算。
本以上实施例中,将无符号除数x分解为包含高lbit有效位的a和包含剩余有效bit位的b,则a包含从第6位开始的8bit有效位(即从第6位至第13位),b包含从第14位开始至第32位的有效位,分解后a和b分别为:
a=0000 0101 0100 1000 0000 0000 0000 0000
b=0000 0000 0000 0110 0111 1101 0000 0010
满足 a ⊕ b = x ;
步骤405、对a进行归一化处理得到a′
将a移位至[2l-1,2l]范围内,以便查询预存的倒数表;
作为一种可实施情况,如果Lx>l,则将a的有效位右移m位(m=Bw-Ps-l+1),左边补0;将a的有效位右移m位得到a′,相当于将a缩小2m倍;
1 a = ( 1 / 2 m ) ( a / 2 m ) = ( 1 a / 2 m ) × ( 1 / 2 m ) = ( 1 a ′ ) × ( 1 / 2 m )
继续以以上实例进行说明,由于Lx>l(Lx=27,l=8),则将a的有效位右移m=Bw-Ps-l+1=32-6-8+1=19位,得到a′
a′=0000 0000 0000 0000 0000 0000 1010 1001
此时,a′在[128,255]范围内,a′的倒数在预存表范围内,可查询预存表求得a′的倒数值;
作为另一种可实施情况,若Lx≤l,所述对a进行归一化处理得到a′为将a的高lbit的有效位左移m′位(m′=Ps-Bw+l-1),右边补0,将a有效位移位至[128,255]范围内,即:
1 a = 2 m ′ a × 2 m ′ = ( 1 a × 2 m ′ ) × 2 m ′ , 其中(a×2m′)∈[128,255];
上述移位即2的m′次方相乘,即a×2m′,对于ZSP系统而言,移位采用一个指令一个时钟周期可完成。
为使描述更加清楚,以如下实例2进行说明,假定l=8,除数x′为32bit数,经预处理后,无符号除数x=0000 0000 0000 0000 0000 0000 0000 0101,由可知Ps=30,Lx=Bw-Ps+1=32-30+1=3
将无符号除数x分解为包含高lbit有效位的a和包含剩余有效bit位的b,分解后:
a=0000 0000 0000 0000 0000 0000 0000 0101
b=0000 0000 0000 0000 0000 0000 0000 0000
此时的a值实际上等效于无符号除数x,b值为零。
由于Lx<l(Lx=3,l=8),对a进行归一化处理得到a′,即将a的高lbit的有效位左移m′位(m′=Ps-Bw+l-1=30-32+8-1=5),即移位后得到:
a′=0000 0000 0000 0000 0000 0000 1010 0000
此时,a′在[128,255]范围内,a′的倒数在预存表范围内,可查询预存表求得a′的倒数值;
步骤406:查询倒数预存表,获得
Figure BDA00002010831700072
的值
所述预存的倒数表存储[2l-1,2l-1]内整数的倒数值,预存的倒数表通过预先计算并存储,计算方式为
Figure BDA00002010831700073
(以
Figure BDA00002010831700074
为例举例说明预存的倒数表的计算方式:Q值为38时,本实施例中,预存了
Figure BDA00002010831700076
的值,表的大小为128个倒数值,占用系统数据存储空间128word,如表1所示,为
Figure BDA00002010831700077
区间内Q值为38的整数预存的倒数表;
表1倒数表
  原数据   倒数值   原数据   倒数值   原数据   倒数值
  1/255   0x40404040   1/212   0x4D4873EC   1/169   0x60F25DEA
  1/254   0x40810204   1/211   0x4DA637CF   1/168   0x61861861
  1/253   0x40C246D4   1/210   0x4E04E04E   1/167   0x621B97C2
  1/252   0x41041041   1/209   0x4E6470B0   1/166   0x62B2E43D
  1/251   0x41465FDF   1/208   0x4EC4EC4E   1/165   0x634C0634
  1/250   0x4189374B   1/207   0x4F265691   1/164   0x63E7063E
  1/249   0x41CC9829   1/206   0x4F88B2F3   1/163   0x6483ED27
  1/248   0x42108421   1/205   0x4FEC04FE   1/162   0x6522C3F3
  1/247   0x4254FCE4   1/204   0x50505050   1/161   0x65C393E0
  1/246   0x429A0429   1/203   0x50B59897   1/160   0x66666666
  1/245   0x42DF9BB0   1/202   0x511BE195   1/159   0x670B453B
  1/244   0x4325C53E   1/201   0x51832F1F   1/158   0x67B23A54
  1/243   0x436C82A2   1/200   0x51EB851E   1/157   0x685B4FE5
  1/242   0x43B3D5AF   1/199   0x5254E78E   1/156   0x69069069
  1/241   0x43FBC043   1/198   0x52BF5A81   1/155   0x69B4069B
  1/240   0x44444444   1/197   0x532AE21C   1/154   0x6A63BD81
  1/239   0x448D639D   1/196   0x5397829C   1/153   0x6B15C06B
  1/238   0x44D72044   1/195   0x54054054   1/152   0x6BCA1AF2
  1/237   0x45217C38   1/194   0x54741FAB   1/151   0x6C80D901
  1/236   0x456C797D   1/193   0x54E42523   1/150   0x6D3A06D3
  1/235   0x45B81A25   1/192   0x55555555   1/149   0x6DF5B0F7
  1/234   0x46046046   1/191   0x55C7B4F1   1/148   0x6EB3E453
  1/233   0x46514E02   1/190   0x563B48C2   1/147   0x6F74AE26
  1/232   0x469EE584   1/189   0x56B015AC   1/146   0x70381C0E
  1/231   0x46ED2901   1/188   0x572620AE   1/145   0x70FE3C07
  1/230   0x473C1AB6   1/187   0x579D6EE3   1/144   0x71C71C71
  1/229   0x478BBCEC   1/186   0x58160581   1/143   0x7292CC15
  1/228   0x47DC11F7   1/185   0x588FE9DC   1/142   0x73615A24
  1/227   0x482D1C31   1/184   0x590B2164   1/141   0x7432D63D
  1/226   0x487EDE04   1/183   0x5987B1A9   1/140   0x75075075
  1/225   0x48D159E2   1/182   0x5A05A05A   1/139   0x75DED952
  1/224   0x49249249   1/181   0x5A84F345   1/138   0x76B981DA
  1/223   0x497889C2   1/180   0x5B05B05B   1/137   0x77975B8F
  1/222   0x49CD42E2   1/179   0x5B87DDAD   1/136   0x78787878
  1/221   0x4A22C04A   1/178   0x5C0B8170   1/135   0x795CEB24
  1/220   0x4A7904A7   1/177   0x5C90A1FD   1/134   0x7A44C6AF
  1/219   0x4AD012B4   1/176   0x5D1745D1   1/133   0x7B301ECC
  1/218   0x4B27ED36   1/175   0x5D9F7390   1/132   0x7C1F07C1
  1/217   0x4B809701   1/174   0x5E293205   1/131   0x7D119679
  1/216   0x4BDA12F6   1/173   0x5EB48823   1/130   0x7E07E07E
  1/215   0x4C346404   1/172   0x5F417D05   1/129   0x7F01FC07
  1/214   0x4C8F8D28   1/171   0x5FD017F4   1/128   0x7FFFFFFF
  1/213   0x4CEB916D   1/170   0x60606060
查询预存的倒数表则可得到
Figure BDA00002010831700091
值。
例如,查询预存的倒数表,得到实例1:a′=0000 0000 0000 0000 00000000 1010 1001转化为十进制数值为169,其倒数值为1/169,查询预存表得到
Figure BDA00002010831700092
值为0x60F25DEA;
例如,查询预存的倒数表,得到实例2:a′=0000 0000 0000 0000 0000 00001010 0000转化为十进制数值为160,其倒数值为1/160,查询预存表得到
Figure BDA00002010831700093
值为0x66666666;
通过设定预存的倒数表,不但避免了现有技术除法运算中多次移位运算与减法操作,而且避免了现有技术插值拟合带来的误差过大现象。
步骤407、将
Figure BDA00002010831700101
的值进行回归处理得到
Figure BDA00002010831700102
的值;
由于
Figure BDA00002010831700103
的值是经过归一化处理后获得的,获取的值后,需要进行回归处理;
作为一种可实施情况,若Lx>l,所述将
Figure BDA00002010831700105
的值进行回归处理得到
Figure BDA00002010831700106
的值为将
Figure BDA00002010831700107
的值左移m位,其中m=Bw-Ps-l+1;左移m位得到原始
Figure BDA00002010831700108
的值,相当于将
Figure BDA00002010831700109
放大2m倍;
另外,如果左移m位会产生溢出,则不进行左移操作,而是采取降低Q值的措施,Q=Q-m,例如,实例1:值为0x60F25DEA,m=Bw-Ps-l+1=32-6-8+1=19,左移19位会产生溢出,为尽可能多的保留其有效位(即精度),采取降低Q值的措施,降低后的Q值为Q=Q-m,此处Q=Q-m=38-19=19,降低Q值后得到
Figure BDA000020108317001011
值为0x60F25DEA,其Q值为19;将
Figure BDA000020108317001012
值0x60F25DEA和Q值19同时输出。本实例中,从数值上看
Figure BDA000020108317001013
值与值是一致的,但区别在于Q值,
Figure BDA000020108317001015
的Q值为38,
Figure BDA000020108317001016
的Q值为19,Q值也是结果的一部分,最后输出结果需带Q值。
作为另一种可实施情况,若Lx≤l,所述将
Figure BDA000020108317001017
的值进行回归处理为将的值右移m′位,其中m′=Ps-Bw+l-1,右移m′位得到原始
Figure BDA000020108317001019
的值,相当于将
Figure BDA000020108317001020
缩小2m倍;;
例如,实例2:
Figure BDA000020108317001021
值为0x66666666,m′=Ps-Bw+l-1=30-32+8-1=5,右移5位后得到
Figure BDA000020108317001022
值为0x03333333,其Q值为38;
在某些情况下,只需要计算
Figure BDA00002010831700111
而不需要计算
Figure BDA00002010831700112
便可得到w′(本发明的非精度模式),尽管会损失掉部分精度,但在损失精度可接受且对运算效率有较高要求的情况下,损失的精度不会对商的结果有影响,而不需要计算
Figure BDA00002010831700113
可节约大量时间,满足这些情况下的高效率运算要求。
而在计算
Figure BDA00002010831700114
时,本发明可以通过设置不同的Q值来提升计算精度,Q值越大,计算精度越高;
若仅计算
Figure BDA00002010831700115
并不能满足精度要求时,需要进一步计算
Figure BDA00002010831700116
因此,作为一种可选择实施方式,进一步包括:
步骤408:计算
Figure BDA00002010831700117
优选地,可简单地将
Figure BDA00002010831700118
设置为1,此时,整个除法运算就相当于是计算
Figure BDA00002010831700119
此时整个商个的精度有损失,但在精度要求不高,而运算速度要求高的场景,具有较高的适用性。
优选地,利用已经得到的
Figure BDA000020108317001110
的值,计算
Figure BDA000020108317001111
进而计算得到
Figure BDA000020108317001112
优选地,对
Figure BDA000020108317001113
进行分解,按分解级数来计算
Figure BDA000020108317001114
1 1 + b a = 1 - b a ( 1 + b a ) ( 1 - b a ) = 1 - b a 1 - ( b a ) 2
= ( 1 - b a ) ( 1 + ( b a ) 2 ) ( 1 - ( b a ) 2 ) ( 1 + ( b a ) 2 ) = ( 1 - b a ) ( 1 + ( b a ) 2 ) 1 - ( b a ) 4
= . . . . . .
= ( 1 - b a ) ( 1 + ( b a ) 2 ) ( . . . ) ( 1 + ( b a ) k ) 1 - ( b a ) 2 k
其中,k≥1,且k为偶数,表示精度级数。
若采用第一级精度(k=1,即一级精度模式),则此时, ( b a ) 2 < = 1 / 2 14 ;
若采用第二级精度(k=2,即二级精度模式),则 1 1 + b a = 1 - b a 1 - ( b a ) 2 = ( 1 - b a ) ( 1 + ( b a ) 2 ) 1 - ( b a ) 4 , 此时, ( b a ) 4 < = 1 / 2 28 ;
依次类推,分子的级数越高,分母越无限趋近于1,即级数越高,精度越高,所引入的仅仅只是乘法计算和加法计算,极大满足高精度运算要求。
上述等式根据精度要求可控,根据该等式可得出的值。通过等式扩展的方式进一步提高商的精度。
步骤409:采用乘法指令求出商值
w = y &prime; x &prime; = s &times; y &times; ( 1 x )
在输出的运算结果中,应注明w的Q值。
本发明所述方案不限定除数和被除数的位宽,在可表示的位宽限定范围内均可实现。
本发明还提供一种高效率高精度除法实现装置,可用于实施以上所述方法,如图2所示,包括:
流水线控制单元,与操作寄存器和旁路单元相连接,包括定时器、中断控制逻辑、位操作逻辑和存储器,所述存储器用于存储控制寄存器文件;
所述操作寄存器,用于程序流的控制和计算,与指令定序单元相连接;
所述旁路单元,提供算术逻辑单元、乘累加单元、操作寄存器和地址寄存器之间的物理连接;
所述地址寄存器,连接存储单元、操作寄存器和旁路单元,用于地址产生和作为暂存器;
所述算术逻辑单元,包括两个16bit的算术逻辑运算,即加法运算或移位运算;
所述乘累加单元,包括一个40bit的算术逻辑运算,两个40bit的乘法运算和一个40bit的累加运算;
所述指令定序单元,包括指令译码器,指令组合逻辑,调试接口和输出逻辑,用于用以控制算术逻辑单元、乘累加单元,决定数据和资源的独立性,进行指令组合判决。
预存取单元,连接指令定序单元和存储单元,用于指令的预取,包括一个8×8words的指令缓存,一个cycle读取8个words的指令到指令缓存中,一个跳转预测逻辑,产生跳转和调用;
所述存储单元,用于存储运算结果。
下面以本发明实施例方案相比于现有技术的除法运算的时间开销进行对比说明,以ZSP系统为平台,求取32bit除32bit数据商值,采用常规除法实现方法实现,即采用除法指令循环移位减的方式,与采用本方案的高效率高精度的除法实现方法所耗费时间开销对比如表2所示;
表2时间开销比较表
  实现方式   时间开销
  非精度模式   51cycle
  一级精度模式   68cycle
  二级精度模式   82cycle
  常规移位减模式   190cycle
上表中:
所述cycle为时钟周期,即1cycle为1个时钟周期。
所述非精度模式为仅计算有效bit位倒数查表的方式,该方式下获取的商值误差限定在一定范围内。所述误差范围通过表内数据取不同Q值实现不同精度来限定。
所述一级精度模式为步骤4等式扩展仅扩展一步,与有效bit位倒数相乘获取商值的方式,该方式比非精度模式的商值精度高。
所述二级精度模式为步骤4等式扩展扩展两步,与有效bit位倒数相乘获取商值的方式,该方式比非精度模式和一级精度模式的商值精度高。
由表一时间开销比较可知,非精度模式获取商值所需时钟周期最少,常规移位减除法方式所需时钟周期最多,二级精度模式精度最高。但其时间开销比常规移位减除法方式有大大提升。
另外,对于以上几种模式的精度对比,见图3、图4、图5和图6,二级精度模式较一级精度模式精度高,一级精度模式较非精度模式精度高,分子、分母越大,理论可能出现最大误差值越大。
图3是非精度模式求取1/N商值的仿真图,(N取值为1,1+32768,1+32768×2.,…,1+32768×26000;横坐标为N值,纵坐标为32bit的1/N真实值与计算值的误差值);此图表示从1~32768×26000区间内整数进行倒数计算的误差范围,基本控制在(0,1/2^31)的范围内,可满足一般运算精度需求。
图4是非精度模式求取N/0x7FFFFFFF商值的仿真图,(N取值为1,1+1048576,1+1048576×2,…,1+1048576×2048;横坐标为N值,纵坐标为32bit的N/0x7FFFFFFF在非精度模式下的商值),此图表示在非精度模式下,分子由1依次递增至极大值1048576×2048,分母不变且为最大值的商值曲线图,由于dsp的计算精度主要由分母的倒数产生,说明该取值场景是产生最大误差值的情况,分子越大,产生的误差越大,因此,此图说明在非精度模式下可产生最大误差值的的除法场景。
图5是一级精度模式求取N/0x7FFFFFFF商值的仿真图,(N取值为1,1+1048576,1+1048576×2,…,1+1048576×2048;横坐标为N值,纵坐标为32bit的N/0x7FFFFFFF在一级精度模式下的商值);此图表示在一级精度模式下,分子由1依次递增至极大值1048576×2048,分母不变且为最大值的商值曲线图,由于dsp的计算精度主要由分母的倒数产生,说明该取值场景是产生最大误差值的情况,分子越大,产生的误差越大,因此,此图说明在一级精度模式下可产生最大误差值的的除法场景。
图6是二级精度模式求取N/0x7FFFFFFF商值的仿真图,(N取值为1,1+1048576,1+1048576×2,…,1+1048576×2048;横坐标为N值,纵坐标为32bit的N/0x7FFFFFFF在二级精度模式下的商值);此图表示在二级精度模式下,分子由1依次递增至极大值1048576×2048,分母不变且为最大值的商值曲线图,由于dsp的计算精度主要由分母的倒数产生,说明该取值场景是产生最大误差值的情况,分子越大,产生的误差越大,因此,此图说明在二级精度模式下可产生最大误差值的的除法场景。
本发明的高效率高精度的除法实现方法,通过设定预存的倒数表或/和等式扩展的方式提高商的精度,适用于精度要求较高的场景,也适用于运算速率高且精度误差控制在一定范围内的场景。不但避免了现有技术除法运算中多次移位运算与减法操作,而且避免了插值拟合带来的误差过大现象。
进一步,本发明通过可通过设置系统有效位宽度降低倒数表代码空间开销,且比原有的移位减的普通除法实现方法能减少较多的时间开销,且无论软硬件实现均可达到高速及高精度。
本领域技术人员显然清楚并且理解,本发明方法所举的以上实施例仅用于说明本发明,而并不用于限制本发明。虽然通过实施例有效描述了本发明,本领域技术人员知道,本发明存在许多变化而不脱离本发明的精神。在不背离本发明的精神及其实质的情况下,本领域技术人员当可根据本发明方法做出各种相应的改变或变形,但这些相应的改变或变形均属于本发明的权利要求保护范围。

Claims (10)

1.一种高精度除法运算方法,对不同或相同位宽的除数x'和被除数y'进行预处理,分解计算商
Figure FDA00002010831600011
其特征在于:包括:
设定系统有效位宽度l,1≤l≤Bw,Bw为系统位宽,在{16,32,40,64,128,256,…}中取任意值;
从符号位开始,从高位到低位搜索无符号除数x有效位的起始位位置Ps,Ps从1开始计数,获得无符号除数x的有效位长度Lx=Bw-Ps+1;
将无符号除数x分解为包含高lbit有效位的a和包含剩余有效bit位的b,变换无符号除数的倒数
Figure FDA00002010831600012
1 x = 1 a + b = 1 a 1 + b a = ( 1 1 + b a ) &times; ( 1 a ) - - - ( 1 )
对a进行归一化处理得到a';
查询预存的倒数表,获得
Figure FDA00002010831600014
的值,所述预存的倒数表为预先存储的倒数表,存储[2l-1,2l-1]内整数的倒数值;
Figure FDA00002010831600015
的值进行回归处理得到
Figure FDA00002010831600016
的值;
获得
Figure FDA00002010831600017
的值;
其中,s表示商的符号,x为无符号除数,y为无符号被除数,式(1)中+号表示异或运算。
2.如权利要求1所述除法实现方法,其特征在于:所述对不同或相同位宽的除数x'和被除数y'进行预处理包括:
根据除数x'和被除数y'的符号判断商w'的符号s,并将除数x'和被除数y'转化为无符号除数x和无符号被除数y;
若除数x'为0,则需进行异常处理,输出一个最大值常数constant,并输出一个异常处理标志,结束运算;
根据设备计算能力确定系统位宽Bw。
3.如权利要求1所述除法实现方法,其特征在于:若Lx>l,所述对a进行归一化处理得到a'为将a的高lbit的有效位右移m位得到a',其中m=Bw-Ps-l+1。
4.如权利要求3所述除法实现方法,其特征在于:所述将的值进行回归处理得到的值为,若左移m位会产生溢出,则将的值左移m位,否则降低Q值,Q=Q-m,Q值表示定点精度。
5.如权利要求1所述除法实现方法,其特征在于:若Lx≤l,所述对a进行归一化处理得到a'为将a的高lbit的有效位左移m'位;所述将的值进行回归处理为将
Figure FDA00002010831600025
的值右移m'位,其中m'=Ps-Bw+l-1。
6.如权利要求1-5任一所述除法实现方法,其特征在于:所述获得
Figure FDA00002010831600026
的值为将
Figure FDA00002010831600027
设置为1。
7.如权利要求1-5任一所述除法实现方法,其特征在于:所述获得的值为根据
Figure FDA00002010831600029
的值计算
Figure FDA000020108316000210
进而计算得到
Figure FDA000020108316000211
8.如权利要求1-5任一所述除法实现方法,其特征在于:所述获得
Figure FDA000020108316000212
的值为:
1 1 + b a = ( 1 - b a ) ( 1 + ( b a ) 2 ) ( . . . ) ( 1 + ( b a ) k ) 1 - ( b a ) 2 k , k≥1,且k为偶数,表示精度级数。
9.一种高精度除法实现装置,其特征在于:包括:
流水线控制单元,与操作寄存器和旁路单元相连接,包括定时器、中断控制逻辑、位操作逻辑和存储器,所述存储器用于存储控制寄存器文件;
所述操作寄存器,用于程序流的控制和计算,与指令定序单元相连接;
所述旁路单元,提供算术逻辑单元、乘累加单元、操作寄存器和地址寄存器之间的物理连接;
所述地址寄存器,连接存储单元、操作寄存器和旁路单元,用于地址产生和作为暂存器;
所述算术逻辑单元,包括两个16bit的算术逻辑运算,即加法运算或移位运算;
所述乘累加单元,包括一个40bit的算术逻辑运算,两个40bit的乘法运算和一个40bit的累加运算;
所述指令定序单元,包括指令译码器,指令组合逻辑,调试接口和输出逻辑,用于用以控制算术逻辑单元、乘累加单元,决定数据和资源的独立性,进行指令组合判决。
预存取单元,连接指令定序单元和存储单元,用于指令的预取,包括一个8×8words的指令缓存,一个cycle读取8个words的指令到指令缓存中,一个跳转预测逻辑,产生跳转和调用;
所述存储单元,用于存储运算结果。
10.如权利要求9所述除法实现装置,其特征在于:所述指令定充单元将最多4条指令组合起来在一个cycle中执行。
CN201210288609.4A 2012-08-14 2012-08-14 一种高效率高精度除法实现方法及装置 Pending CN103593159A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210288609.4A CN103593159A (zh) 2012-08-14 2012-08-14 一种高效率高精度除法实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210288609.4A CN103593159A (zh) 2012-08-14 2012-08-14 一种高效率高精度除法实现方法及装置

Publications (1)

Publication Number Publication Date
CN103593159A true CN103593159A (zh) 2014-02-19

Family

ID=50083329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210288609.4A Pending CN103593159A (zh) 2012-08-14 2012-08-14 一种高效率高精度除法实现方法及装置

Country Status (1)

Country Link
CN (1) CN103593159A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126190A (zh) * 2015-05-04 2016-11-16 三星电子株式会社 部分余数/除数表拆分实现
CN107992284A (zh) * 2017-11-27 2018-05-04 中国航空无线电电子研究所 一种可编程器件的除法功能实现方法
CN109272111A (zh) * 2018-08-15 2019-01-25 东南大学 一种基于化学反应网络的神经网络元件实现方法
CN112328511A (zh) * 2021-01-04 2021-02-05 统信软件技术有限公司 一种数据处理方法、计算设备及可读存储介质
CN113254072A (zh) * 2021-05-27 2021-08-13 上海阵量智能科技有限公司 数据处理器、数据处理方法、芯片、计算机设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1855031A (zh) * 2005-04-18 2006-11-01 展讯通信(上海)有限公司 求定点数除法的算法在视频编码流量控制中的应用
CN1952875A (zh) * 2006-09-18 2007-04-25 华为技术有限公司 一种定点除法器及其实现运算的方法
US7574468B1 (en) * 2005-03-18 2009-08-11 Verisilicon Holdings (Cayman Islands) Co. Ltd. Digital signal processor having inverse discrete cosine transform engine for video decoding and partitioned distributed arithmetic multiply/accumulate unit therefor
CN102063284A (zh) * 2010-12-13 2011-05-18 青岛海信信芯科技有限公司 一种除法运算方法及装置
CN102231101A (zh) * 2011-07-29 2011-11-02 电子科技大学 一种除法器及除法处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7574468B1 (en) * 2005-03-18 2009-08-11 Verisilicon Holdings (Cayman Islands) Co. Ltd. Digital signal processor having inverse discrete cosine transform engine for video decoding and partitioned distributed arithmetic multiply/accumulate unit therefor
CN1855031A (zh) * 2005-04-18 2006-11-01 展讯通信(上海)有限公司 求定点数除法的算法在视频编码流量控制中的应用
CN1952875A (zh) * 2006-09-18 2007-04-25 华为技术有限公司 一种定点除法器及其实现运算的方法
CN102063284A (zh) * 2010-12-13 2011-05-18 青岛海信信芯科技有限公司 一种除法运算方法及装置
CN102231101A (zh) * 2011-07-29 2011-11-02 电子科技大学 一种除法器及除法处理方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ISI LOGIC: "《ZSP540-highly efficient quad-MAC DSP Core》", 31 December 2004, ISI LOGIC CORPORATION *
廖娅等: "TMS320C2XX(DSP)除法程序的实现", 《重庆石油高等专科学校学报》 *
张洋: "基于ZSP500处理器的3G可视电话视频编码软件设计", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
王华等: "浮点除法运算在TMS320C3X DSP中的实现", 《微计算机信息》 *
石元君等: "定点DSP除法原理及其TMS320C6000实现", 《单片机与嵌入式系统》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126190A (zh) * 2015-05-04 2016-11-16 三星电子株式会社 部分余数/除数表拆分实现
CN106126190B (zh) * 2015-05-04 2021-04-13 三星电子株式会社 部分余数/除数表拆分实现
CN107992284A (zh) * 2017-11-27 2018-05-04 中国航空无线电电子研究所 一种可编程器件的除法功能实现方法
CN107992284B (zh) * 2017-11-27 2022-12-23 中国航空无线电电子研究所 一种可编程器件的除法功能实现方法
CN109272111A (zh) * 2018-08-15 2019-01-25 东南大学 一种基于化学反应网络的神经网络元件实现方法
CN112328511A (zh) * 2021-01-04 2021-02-05 统信软件技术有限公司 一种数据处理方法、计算设备及可读存储介质
CN112328511B (zh) * 2021-01-04 2021-05-04 统信软件技术有限公司 一种数据处理方法、计算设备及可读存储介质
CN113064841A (zh) * 2021-01-04 2021-07-02 统信软件技术有限公司 一种数据存储方法、处理方法、计算设备及可读存储介质
CN113064841B (zh) * 2021-01-04 2023-06-06 统信软件技术有限公司 一种数据存储方法、处理方法、计算设备及可读存储介质
CN113254072A (zh) * 2021-05-27 2021-08-13 上海阵量智能科技有限公司 数据处理器、数据处理方法、芯片、计算机设备及介质

Similar Documents

Publication Publication Date Title
CN105955706B (zh) 一种除法器及除法运算方法
CN103593159A (zh) 一种高效率高精度除法实现方法及装置
Benchohra et al. Existence and Ulam stability for nonlinear implicit differential equations with Riemann-Liouville fractional derivative
CN102681815B (zh) 用加法器树状结构的有符号乘累加算法的方法
CN106951211B (zh) 一种可重构定浮点通用乘法器
CN103999078A (zh) 具有包含用于fir滤波的矢量卷积函数的指令集的矢量处理器
CN103914276A (zh) 利用浮点架构的定点除法电路
CN101399553A (zh) 一种可在线编程的准循环ldpc码编码器装置
CN106155627A (zh) 基于t_cordic算法的低开销迭代三角函数装置
CN115344237A (zh) 结合Karatsuba和蒙哥马利模乘的数据处理方法
JP2021517301A (ja) 確率的丸めロジック
CN111242293B (zh) 一种处理部件、数据处理的方法以及电子设备
JP2016062404A (ja) 演算処理方法及び演算処理装置
CN111813371A (zh) 数字信号处理的浮点除法运算方法、系统及可读介质
CN111399803A (zh) 除法运算方法、装置、存储介质及电子设备
CN106681691A (zh) 基于蒙哥马利模乘的数据处理方法、模乘运算方法和装置
CN103399725A (zh) 一种不恢复余数的除法器
CN207115387U (zh) Xiu‑累加寄存器、xiu‑累加寄存器电路、以及电子设备
US9569175B2 (en) FMA unit, in particular for utilization in a model computation unit for purely hardware-based computing of function models
CN108334305B (zh) 一种除法运算方法、装置、设备和存储介质
CN108897524B (zh) 除法函数处理电路、方法、芯片以及系统
Hertz et al. Parabolic synthesis methodology implemented on the sine function
CN103176768B (zh) 计算经典模乘的模乘方法以及可扩展模乘器
CN103699729A (zh) 模乘法器
RU148925U1 (ru) Вычислительный элемент бимодульной модулярной арифметики

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20170418

Address after: Nanping Street 400060 Chongqing Nan'an District Nancheng Road No. 199 left attached to the floor 403

Applicant after: Keen (Chongqing) Microelectronics Technology Co., Ltd.

Address before: 400065 Chongqing Nan'an District huangjuezhen pass Fort Park No. 1

Applicant before: Chongqing City Communication & Technology Co., Ltd.

TA01 Transfer of patent application right
RJ01 Rejection of invention patent application after publication

Application publication date: 20140219

RJ01 Rejection of invention patent application after publication