本发明属于运算装置和数据处理,具体涉及一种除法运算方法及系统。
背景技术:
1、在工程应用领域,例如芯片设计过程中,往往涉及要使用如定点处理器等运算装置实现基本数学运算的情况,包括除法计算;在数字图像处理如二维图像背景去除、变化检测以及图形渲染等应用场景中,除法运算都发挥着重要作用。
2、由于除法的计算复杂度较高,特别是定点运算,在快速实现的要求下还要保证较高精度,实施起来较为困难;现有的运算装置实现除法运算的方式在精度要求较高的情况下,需要占用更大的存储空间来实现,随着输入数据变大,存储空间也相应的需要增加,势必会提高成本;并且,有的实现高精度除法的运算装置还对输入数据的大小做限制,必须小于某个比特数以下的才行,这也会影响除法的应用范围。另外,现有的精度较高的除法运算方法通常运算过程复杂,也会存在对应的运算装置处理时延过长和维护困难的问题。
技术实现思路
1、本发明的目的在于提供一种除法运算方法及系统,用于解决现有技术中的运算装置实现除法运算的方式运算过程复杂、占用存储空间较大且应用范围可能受输入数据大小限制的问题。
2、为了实现上述目的,本发明提供了一种除法运算方法,包括如下步骤:
3、1)若原始除数为正整数,则直接将所述原始除数以无符号正整数的形式存储为w位的二进制代码的除数;若原始除数为负整数,则取绝对值后,将所述原始除数以无符号正整数的形式存储为w位的二进制代码的除数;
4、2)根据以无符号正整数的形式存储为w位的二进制代码的除数和对应的二进制代码位数w得到有理数y,并根据有理数y构建临时变量z,构建方式为:
5、
6、z=y-1,z∈[-0.5,0)
7、其中,d为以无符号正整数的形式存储为w位的二进制代码的除数,w为除数d以二进制代码形式存储至寄存器的位数;
8、3)根据二项式级数分解,构建临时变量z、除数d和除数d对应的二进制代码位数w之间的关系式;其中,二项式级数分解如下:
9、
10、其中,n为二项式级数分解对应的分解次数;
11、4)根据二项式级数分解,对临时变量z进行迭代乘累加处理,处理方式为:
12、令y1=1,z0=1,m=1;其中y1为第一中间变量,z0为第二中间变量zm的初始值,m为当前迭代次数;
13、对-z和zm-1做相乘处理得到zm:
14、zm=(-z)*zm-1
15、再对y1和zm做相加处理,得到新的y1:
16、y1=y1+zm
17、令m=m+1,重复本步骤的相乘和相加处理,直到m=m,完成迭代乘累加;其中,m为设定迭代总次数;
18、5)根据临时变量z、除数d和对应的二进制代码位数w之间的关系式以及迭代乘累加完成后第一中间变量y1的值,得到除数d的倒数d1;
19、6)将除数d的倒数d1以及被除数n相乘,得到除法运算的输出值;若原始除数为负整数,则对除法运算的输出值进行取反操作。
20、上述技术方案的有益效果为:在能够保证较高的精度的前提下,本发明提供的除法运算方法不需要复杂的数学运算,每次迭代只需要简单的两次乘累加运算,迭代次数可以根据精度要求做适当增减,实现简单,占用存储空间非常小,处理时延很短,不需要额外存储空间来存放特殊的系数,维护容易;并且进行除法运算的过程中乘累加运算的迭代以及二项式级数分解等原理均不涉及位数的要求,则该方法对输入的正整数除数变量d没有大小限制,在定点运算中,只要保证d为不等于0的整数就可以,求取的除法运算输出值也是通过被除数乘以除数变量的倒数实现的,对被除数同样没有位数约束,克服了很多现有除法运算方法中对除数和被除数的大小值限制。
21、进一步地,步骤3)中构建的临时变量z、除数d和除数d对应的二进制代码位数w之间的关系式为:
22、
23、根据临时变量z、除数d和对应的二进制代码位数w之间的关系式以及迭代乘累加完成后第一中间变量y1的值,得到除数d的倒数d1为:
24、
25、其中,t为除数动态门限值,所述除数动态门限值随除数d对应的二进制代码位数w变化。
26、上述技术方案的有益效果为:尽可能避免临时变量z的值靠近0.5,以进一步缩小二项式级数分解的近似误差。
27、进一步地,步骤2)-6)通过定点处理器中的全部定点进行运算的方式为:
28、设定除法运算的输出值v的量化放大倍数为2s,s为设定常数值,且s≥1;
29、定义临时变量pw=1<<w、pn=1<<n及除数动态门限值t;其中,符号>>指的是二进制数的向右移位操作,符号<<指的是二进制数的向左移位操作;w为除法运算中除数d的对应的二进制代码位数;
30、如果d大于t,则令z=pn-(d>>(w-n));否则令z=pn-(2*d>>(w-n));其中,n为设定常数值,且n≥1;
31、令y1=pn和z0=pn,初始设置m=1,其中y1为第一中间变量,z0为第二中间变量zm的初始值,m为当前迭代次数,进行如下相乘和相加处理:
32、zm=(z*zm-1)>>n
33、y1=y1+zm
34、令m=m+1,重复上述相乘和相加处理,直到m=m,完成迭代乘累加;其中,m为设定迭代总次数;
35、对被除数n做高低32比特处理,令变量nh=n>>32,另一变量nl=n-nh<<32;
36、如果d>t,则除法运算的输出值v的计算公式如下:
37、x1=(nh*y1)>>(n+w-s)
38、x2=x1<<32
39、v=x2+(nl*y1)>>(n+w-s)
40、如果d≤t,则除法运算的输出值v的计算公式如下:
41、x1=(2*nh*y1)>>(n+w-s)
42、x2=x1<<32
43、v=x2+(2*nl*y1)>>(n+w-s)
44、被除数n和除数d之间的除法运算结果为:
45、
46、上述技术方案的有益效果为:保证具体在计算过程中的中间变量和参数都能够通过定点处理器中的全部定点来实现,并且对被除数n做高低32比特处理,能够防止被除数n过大,避免造成定点化的较大误差。
47、进一步地,设定迭代总次数m根据除法运算精度需求确定。
48、本发明还提供了一种除法运算系统,包括处理器,所述处理器用于执行程序指令,以实现如下除法运算方法步骤:
49、1)若原始除数为正整数,则直接将所述原始除数以无符号正整数的形式存储为w位的二进制代码的除数;若原始除数为负整数,则取绝对值后,将所述原始除数以无符号正整数的形式存储为w位的二进制代码的除数;
50、2)根据以无符号正整数的形式存储为w位的二进制代码的除数和对应的二进制代码位数w得到有理数y,并根据有理数y构建临时变量z,构建方式为:
51、
52、z=y-1,z∈[-0.5,0)
53、其中,d为以无符号正整数的形式存储为w位的二进制代码的除数,w为除数d以二进制代码形式存储至寄存器的位数;
54、3)根据二项式级数分解,构建临时变量z、除数d和除数d对应的二进制代码位数w之间的关系式;其中,二项式级数分解如下:
55、
56、其中,n为二项式级数分解对应的分解次数;
57、4)根据二项式级数分解,对临时变量z进行迭代乘累加处理,处理方式为:
58、令y1=1,z0=1,m=1;其中y1为第一中间变量,z0为第二中间变量zm的初始值,m为当前迭代次数;
59、对-z和zm-1做相乘处理得到zm:
60、zm=(-z)*zm-1
61、再对y1和zm做相加处理,得到新的y1:
62、y1=y1+zm
63、令m=m+1,重复本步骤的相乘和相加处理,直到m=m,完成迭代乘累加;其中,m为设定迭代总次数;
64、5)根据临时变量z、除数d和对应的二进制代码位数w之间的关系式以及迭代乘累加完成后第一中间变量y1的值,得到除数d的倒数d1;
65、6)将除数d的倒数d1以及被除数n相乘,得到除法运算的输出值;若原始除数为负整数,则对除法运算的输出值进行取反操作。
66、上述技术方案的有益效果为:在能够保证较高的精度的前提下,本发明提供的除法运算系统不需要复杂的数学运算,每次迭代只需要简单的两次乘累加运算,迭代次数可以根据精度要求做适当增减,实现简单,占用存储空间非常小,处理时延很短,不需要额外存储空间来存放特殊的系数,维护容易;并且进行除法运算的过程中乘累加运算的迭代以及二项式级数分解等原理均不涉及位数的要求,则对输入的正整数除数变量d没有大小限制,在定点运算中,只要保证d为不等于0的整数就可以,求取的除法运算输出值也是通过被除数乘以除数变量的倒数实现的,对被除数同样没有位数约束,克服了很多现有技术的除法运算系统中对除数和被除数的大小值限制。
67、进一步地,步骤3)中构建的临时变量z、除数d和除数d对应的二进制代码位数w之间的关系式为:
68、
69、根据临时变量z、除数d和对应的二进制代码位数w之间的关系式以及迭代乘累加完成后第一中间变量y1的值,得到除数d的倒数d1为:
70、
71、其中,t为除数动态门限值,所述除数动态门限值随除数d对应的二进制代码位数w变化。
72、上述技术方案的有益效果为:尽可能避免临时变量z的值靠近0.5,以进一步缩小二项式级数分解的近似误差。
73、进一步地,步骤2)-6)通过定点处理器中的全部定点进行运算的方式为:
74、设定除法运算的输出值v的量化放大倍数为2s,s为设定常数值,且s≥1;
75、定义临时变量pw=1<<w、pn=1<<n及除数动态门限值t;其中,符号>>指的是二进制数的向右移位操作,符号<<指的是二进制数的向左移位操作;w为除法运算中除数d的对应的二进制代码位数;
76、如果d大于t,则令z=pn-(d>>(w-n));否则令z=pn-(2*d>>(w-n));其中,n为设定常数值,且n≥1;
77、令y1=pn和z0=pn,初始设置m=1,其中y1为第一中间变量,z0为第二中间变量zm的初始值,m为当前迭代次数,进行如下相乘和相加处理:
78、zm=(z*zm-1)>>n
79、y1=y1+zm
80、令m=m+1,重复上述相乘和相加处理,直到m=m,完成迭代乘累加;其中,m为设定迭代总次数;
81、对被除数n做高低32比特处理,令变量nh=n>>32,另一变量nl=n-nh<<32;
82、如果d>t,则除法运算的输出值v的计算公式如下:
83、x1=(nh*y1)>>(n+w-s)
84、x2=x1<<32
85、v=x2+(nl*y1)>>(n+w-s)
86、如果d≤t,则除法运算的输出值v的计算公式如下:
87、x1=(2*nh*y1)>>(n+w-s)
88、x2=x1<<32
89、v=x2+(2*nl*y1)>>(n+w-s)
90、则被除数n和除数d之间的除法运算结果为:
91、
92、上述技术方案的有益效果为:保证具体在计算过程中的中间变量和参数都能够通过定点处理器中的全部定点来实现,并且对被除数n做高低32比特处理,能够防止被除数n过大,避免造成定点化的较大误差。
93、进一步地,设定迭代总次数m根据除法运算精度需求确定。