CN107015783A - 一种浮点角度压缩实现方法及装置 - Google Patents
一种浮点角度压缩实现方法及装置 Download PDFInfo
- Publication number
- CN107015783A CN107015783A CN201710265233.8A CN201710265233A CN107015783A CN 107015783 A CN107015783 A CN 107015783A CN 201710265233 A CN201710265233 A CN 201710265233A CN 107015783 A CN107015783 A CN 107015783A
- Authority
- CN
- China
- Prior art keywords
- angle
- multiplier
- mantissa
- index
- blocked
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/548—Trigonometric functions; Co-ordinate transformations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开一种浮点角度压缩实现方法及实现装置,该方法步骤包括:1)根据待压缩角度的指数获取需要参与2/π乘法运算的区间;2)将待压缩角度的尾数与获取到的区间采用截断乘法器执行2/π乘法运算,输出乘法运算结果;3)获取乘法运算结果中整数部分以及小数位,根据整数部分确定压缩后角度的象限,并将小数位经过前导零和移位得到指数和第一尾数;4)将第一尾数和乘数采用截断乘法器执行π/2乘法运算,得到第二尾数输出;5)根据指数以及第二尾数确定得到压缩后角度;该装置包括预处理模块、2/π截断乘法模块、前导零和移位模块、π/2截断乘法模块以及后处理模块。本发明能够实现任意浮点角度压缩,且具有实现方法简单、压缩效率及精度高,同时开销小等优点。
Description
技术领域
本发明涉及函数计算技术领域,尤其涉及一种浮点角度压缩实现方法及装置。
背景技术
基本函数计算是科学计算和工程应用程序的重要组成部分,函数计算中的第一步通常即需要执行角度压缩,如三角函数等的基本函数计算处理中,要求输入角度在一定的范围内,对于任意输入角度则需要将输入角度压缩至指定范围,同时保证压缩后角度的精度。
通过mod函数定义角度压缩时,输入角度Z则其中Z和为实数,且K为整数,当输入角度Z越接近的整数倍时,有限位数中有效位数会变得越少,即前导零的位数会变得越多,最终压缩后输出角度的有效位数会变得越少,浮点角度压缩的误差就会变得越大。
为提高浮点角度压缩精度,目前主要包括以下两种方式:
(1)纯软件实现方式,如多精度算法,可以提高压缩角度精度,但是计算速度较慢;
(2)结合硬件流水结构实现的方式,可以提高压缩角度精度,且具有更快的压缩速度;但是该类方式中,需要依赖于指定硬件结构实现,如需要依赖于处理器上有现存的fma融合单元,不便于实际使用;或基于DRMRR(Double-residue modular range reduction)改进的硬件实现,如CER(Constant Elementary Residues)、ORC(On-the-fly ElementaryResidues Computation)、DTR(Drmrr with Table Replication)等角度压缩方法,可以使得迭代结构的开销很小,但是通常是采用完整乘法器,如上所述,当输入角度Z越接近的整数倍时,采用完整乘法器则需要大量的使用剩余角度查找表,存在开销太大的问题。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能够实现任意浮点角度压缩,且实现方法简单、压缩效率及精度高,同时开销小的浮点角度压缩实现方法及装置。
为解决上述技术问题,本发明提出的技术方案为:
一种浮点角度压缩实现方法,步骤包括:
1)预处理:输入待压缩角度Z,根据待压缩角度Z的指数EZ获取需要参与2/π乘法运算的区间C;
2)2/π截断乘法运算:将待压缩角度Z的尾数MZ与获取到的所述区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0;
3)前导零和移位:获取所述乘法运算结果M0中整数部分Q以及小数位R,根据所述整数部分Q确定压缩后角度ZR的象限,并将所述小数位R经过前导零和移位得到指数和第一尾数输出;
4)π/2截断乘法运算:将所述第一尾数和乘数D采用截断乘法器执行π/2乘法运算,得到第二尾数输出;
5)后处理:根据得到的所述指数以及所述第二尾数确定得到压缩后角度ZR输出。
作为本发明方法的进一步改进,所述步骤1)的具体步骤为:
1.1)分别获取所述指数EZ的高位、低位,根据获取到的指数EZ的高位从2/π存储单元中查找出所述区间C所在的所有r个存储单元组;
1.2)将获取的指数EZ的低位作为r个左移位器的移位控制信号,并分别对查找出的所述存储单元组进行移位,由各个所述左移位器输出的高位部分得到所述区间C。
作为本发明方法的进一步改进:所述步骤2)中具体采用位截断乘法器执行2/π乘法运算,其中LC为所述区间C的长度,为待压缩角度Z的尾数MZ的长度;所述采用截断乘法器执行2/π乘法运算时,具体将整数位的高位和小数位的低位截断不输出,输出中间位计算结果。
作为本发明方法的进一步改进,所述步骤3)的具体步骤为:获取所述乘法运算结果M0中整数部分Q的高两位Q[1:0]并作为指示象限的信号,其余位得到小数位,将所述小数位的高位部分RH前导零后输出高位部分0的个数,并作为左移控制器移位的控制信号以控制进行移位,得到指数和第一尾数
作为本发明方法的进一步改进,所述步骤4)中具体采用位截断乘法器执行π/2乘法运算,其中为所述第一尾数的长度,LD为乘数D的长度;所述采用截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位。
作为本发明方法的进一步改进,所述步骤5)的具体步骤为:对得到的所述指数进行偏移,输出偏移后指数分别判断所述偏移后指数以及所述尾数中最高位是否为0并在为0时进行修正,得到最终的压缩后角度ZR输出。
一种浮点角度压缩实现装置,包括:
预处理模块,用于输入待压缩角度,根据待压缩角度的指数EZ获取需要参与2/π乘法运算的区间C;
2/π截断乘法运算模块,用于将待压缩角度的尾数MZ与获取到的所述区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0;
前导零和移位模块,用于获取所述乘法运算结果M0中整数部分Q以及小数位R,根据所述整数部分Q确定压缩后角度ZR的象限,并将所述小数位R经过前导零和移位得到指数和尾数
π/2截断乘法运算模块,用于将所述尾数和D采用截断乘法器执行π/2乘法运算,得到尾数输出
后处理模块,用于根据所述指数以及所述尾数确定得到最终的压缩后角度ZR输出。
作为本发明装置的进一步改进,所述预处理模块包括:
索引单元,用于获取所述指数EZ的高位、低位,根据获取到的指数EZ的高位从所述2/π存储单元中查找出所述区间C所在的所有r个存储单元组;
移位单元,用于将获取的所述指数EZ的低位作为r个左移位器的移位控制信号,并分别对查找出的所述存储单元组进行移位,由各个所述左移位器输出的高位部分得到所述区间C。
作为本发明装置的进一步改进:所述2/π截断乘法运算模块中具体采用位截断乘法器,其中LC为所述区间C的长度,为待压缩角度Z的尾数MZ的长度;所述位截断乘法器执行2/π乘法运算时,具体将整数位的高位和小数位的低位截断不输出,输出中间位计算结果。
作为本发明装置的进一步改进:所述π/2截断乘法运算模块中具体采用位截断乘法器,其中为所述尾数的长度,LD为乘数D的长度;所述位截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位。
与现有技术相比,本发明的优点在于:
1)本发明基于硬件流水结构实现浮点角度压缩,通过先根据待压缩角度的指数确定2/π中需要参与乘法运算的区间,再采用截断乘法器执行2/π乘法运算、以及使用截断乘法器执行π/2乘法运算,从而优化乘法器的位宽,能够实现任意IEEE754标准下浮点角度的压缩,且压缩效率高,能够在保证压缩精度的同时,有效减少了参与乘法运算的位数,从而大大减少了乘法器硬件开销;
2)本发明使用2/π截断乘法器执行2/π乘法运算,以及π/2截断乘法器执行π/2乘法运算的基础上,通过采用位截断乘法器执行2/π乘法运算,以及采用位截断乘法器执行π/2乘法运算,优化2/π截断乘法器、π/2截断乘法器的位宽,能够进一步减少压缩的硬件开销,同时提高浮点角度压缩的精度,使得压缩后的计算结果误差可小于1ulp。
附图说明
图1是本实施例浮点角度压缩实现方法的流程示意图。
图2是使用完整乘法器执行2/π乘法运算时所需计算部分的原理示意图。
图3是使用位宽被优化的乘法器执行2/π乘法运算时第一种计算部分的原理示意图。
图4是使用位宽被优化的乘法器执行2/π乘法运算时第二种计算部分的原理示意图。
图5是使用截断乘法器执行π/2乘法运算所需计算部分的原理示意图。
图6是本发明在具体实施例中所采用的预处理模块结构示意图。
图7是本发明在具体实施例中所采用的2/π截断乘法运算模块结构示意图。
图8是本发明在具体实施例中所采用的前导零和移位模块结构示意图。
图9是本发明在具体实施例中所采用的π/2截断乘法运算模块的结构示意图。
图10是本发明在具体实施例中所采用的后处理模块的结构示意图。
图11是本发明在具体实施例中所采用的浮点角度压缩的实现装置的结构示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本实施例浮点角度压缩实现方法,步骤包括:
1)预处理:输入待压缩角度Z,根据待压缩角度Z的指数EZ获取需要参与2/π乘法运算的区间C;
2)2/π截断乘法运算:将待压缩角度Z的尾数MZ与获取到的区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0;
3)前导零和移位:获取乘法运算结果M0中整数部分Q以及小数位R,根据整数部分确定压缩后角度ZR的象限,并将小数位经过前导零和移位得到指数和第一尾数
4)π/2截断乘法运算:将第一尾数和乘数D采用截断乘法器执行π/2乘法运算,得到第二尾数输出;
5)后处理:根据得到的指数以及第二尾数确定得到压缩后角度ZR输出。
对于IEEE754标准下任意的待压缩角度Z,可表示为:根据三角函数的周期性,将角度Z压缩至[0,π/2]的范围内时,令其中Q为整数,可指示输入角度所在的象限,R为纯小数,为映射角度;首先进行区间映射:计算出Q和R,Q是整数、R是小数;然后进行象限选择,根据整数最低两位Q[1:0]和输入角度Z符号SZ确定压缩后输入角度所在象限,假设SZ为正,象限选择对应表如表1所示;再进行映射角度计算:得到映射角度MR;上述角度压缩过程中,本实施例使用2/π截断乘法器执行尾数MZ与区间C之间的2/π乘法运算、以及使用π/2截断乘法器执行尾数和乘数D之间的π/2乘法运算,D是π/2的高LD位,其中对于双精度浮点数D是π/2的高60位。
表1:象限选择对应表。
Domain | Q[1∶0] |
[0,π/2] | 00 |
[π/2,π] | 01 |
[π,3π/2] | 10 |
[3π/2,2π] | 11 |
在上述区间映射步骤中,执行乘法操作时,实质是尾数MZ和2/π进行计算,得到的结果包括整数Q和小数R。如图2所示,当使用完整乘法器执行2/π乘法运算时,中间填充部分代表位宽没有被优化时完整乘法器需要计算的部分,其余省略不计算,参与乘法运算的2/π的位数是其中LQ为整数Q的长度,LRH为小数位高位部分RH的长度;则根据角度压缩原理,需要计算整数Q指示输入角度所在象限,Q包括EZ-Eoffset+1位;同时为保证压缩后角度满足精度要求,小数高位部分RH需要包含有效位,其中为第一尾数的长度,从而保证最终的压缩结果RH×π/2有有效位,其中为第二尾数即RH需要的位数由RH中前导零位数LRLZERO、π/2截断乘法器输入的有效位2/π截断乘法器的保护位LRG组成;但是当输入角度越接近π/2的整数倍时,RH中前导零的位数越多,为保证此时仍然有有效位,需要计算的RH位数增多,参与乘法运算的2/π的位数增多,使得乘法器开销也同时增大。
考虑上述压缩过程中开销问题,为了减少参与乘法运算的2/π的位数,本实施例通过确定2/π中需要参与乘法运算的区间C,同时采用截断乘法器执行2/π乘法运算、以及使用截断乘法器执行π/2乘法运算,从而优化乘法器的位宽,基于硬件流水结构能够实现任意IEEE754标准下浮点角度的压缩,且压缩效率高,能够在保证压缩精度的同时,有效减少了参与乘法运算的位数,从而大大减少了乘法器硬件开销。
本实施例具体通过减少LQ和位数优化乘法器位宽,能够保证压缩精度的同时,减少角度压缩所需的硬件开销。对于位数,本实施例具体通过获取小数位高位部分RH中前导零位数的最大值LMAXLZERO,基于最大值LMAXLZERO减少位数,小数位R前导零位数的最大值LMAXLZERO具体可采用W.Kahan搜索算法等方法,其中对于双精度,LMAXLZERO=61。对于LQ的位数,根据三角函数的周期性原理,整数部分Q需要计算的只是低两位Q[1:0],如3图所示,中间填充部分代表位宽被优化的完整乘法器需要计算的部分,矩形框内部分代表位宽被优化的截断乘法器需要计算的部分。为计算任意指数的输入角度,2/π中需要存储的位数最少是但是参与乘法运算的只是2/π的一个区间,本实施例通过确定2/π中需要参与乘法运算的区间C,以减少LQ的位数。
本实施例中,步骤1)的具体步骤为:
1.1)分别获取指数EZ的高位、低位,根据获取到的指数EZ的高位从2/π存储单元中查找出区间C所在的所有r个存储单元组;
1.2)将获取的指数EZ的低位作为r个左移位器的移位控制信号,并分别对查找出的存储单元组进行移位,由各个左移位器输出的高位部分得到区间C。
本实施例具体采用二级查找的方法从2/π中存储的位数中获得区间C,通过EZ的高位部分查找出区间C所在的所有存储单元组r个,其中EZ的低位作为r个桶形左移位器的移位控制信号对查找出的存储单元组进行移位,r个移位器输出拼接的高位部分就是所需区间C。
当时,如图3所示,矩形框内包围的部分代表位宽被优化的截断乘法器计算的部分,所有填充部分代表位宽被优化的完整乘法器计算的部分,则2/π中参与乘法运算的区间C应当为:从2/π第位开始,向低位取位,区间C的长度为位;
当时,如图4所示,矩形框内包围的部分代表位宽被优化的截断乘法器计算的部分,所有填充代表位宽被优化的完整乘法器计算的部分,左侧阴影填充部分是指在2/π之前补充的0位,此时2/π中参与乘法运算的区间C应当为:最高位是补充的0位,接下来从2/π第0位开始,向低位取位,区间C的长度为位。
本实施例2/π存储单元中存储的位数被划分成k个存储单元,每个存储单元有l位,最后一个未存满的存储单元补0,如对于单精度,存储单元l=32,k=7,对于双精度,l=64,k=19。由上述可知,本实施例采用截断乘法器,相比于传统的完整乘法器,最高位和最低位可以不用计算。为保证对任意指数的输入角度都能有统一位数的区间C,本实施例具体使得2/π中需要存储的位数最少是其中最高位是补充的0,其余由2/π的高位组成。其中LC为区间C的长度,且
本实施例中,步骤2)中具体采用位截断乘法器执行2/π乘法运算,其中采用截断乘法器执行2/π乘法运算时,具体将整数位的高位和小数位的低位截断不输出,输出中间位计算结果。
执行2/π计算时,截断乘法器的输入具体为(位,位),乘法器的最高位和最低位都截断不计算,输出中间的位,即位,其中最高两位是Q[1:0],其余是其中LRG为保护位,且保护位LRG为位。
本实施例中,步骤3)的具体步骤为:获取乘法运算结果M0中整数部分Q的高两位Q[1:0]并作为指示象限的信号,其余位得到小数位R,将小数位R的高位部分RH前导零后输出高位部分0的个数,并作为左移控制器移位的控制信号以控制进行移位,得到指数和第一尾数
本实施例中,步骤4)中具体采用位截断乘法器执行π/2乘法运算,其中为第一尾数的长度,LD为D的长度;采用截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位。
为保证后处理步骤中具有MZR位宽,同时考虑到第二尾数最高位有可能为0,第二尾数中至少需要高MZR+1的精确位。如图5所示,当采用截断乘法器时,图中填充处代表省略不计算,为保证高MZR+1位计算结果正确,必须满足:
其中代入MZR,解得即执行π/2计算时,截断乘法器的输入位,输出高位,其中高MZR+1位是需要保证的精确位,其余为保护位。
本实施例使用2/π截断乘法器执行2/π乘法运算,以及π/2截断乘法器执行π/2乘法运算的基础上,通过采用上述方式进一步优化2/π截断乘法器、π/2截断乘法器的位宽,压缩后的计算结果误差具体可小于1ulp。
本实施例中,步骤5)的具体步骤为:对得到的指数进行偏移,输出偏移后指数分别判断偏移后指数以及尾数中最高位是否为0并在为0时进行修正,得到最终的压缩后角度ZRε[0,π/2]输出。
如图6~11所示,本发明在具体实施例中实现浮点角度压缩所采用的装置结构,输入浮点双精度格式的任意角度Z,输出指示压缩后输入角度象限的Q[1:0]和浮点双精度格式的压缩后输入角度ZRε[0,π/2];具体包括依次连接的预处理模块、2/π截断乘法运算模块、前导零和移位模块、π/2截断乘法运算模块以及后处理模块,以依次执行预处理、2/π截断计算、前导零和移位、π/2截断计算以及后处理。在预处理阶段,根据输入角度Z的指数EZ判断是否需要角度压缩,并根据EZ[10:6]索引出区间C所在的4个2/π存储单元,EZ[5:0]作为桶形左移位器移位控制信号;将区间C和尾数MZ利用截断乘法器完成π/2乘法运算,结果包括整数部分Q[1:0]和小数部分位,小数位高位部分RH经过前导零和移位得到指数和尾数指数在后处理阶段完成偏移,第一尾数和D相乘得到第二尾数由于乘法结果的最高位可能为0,需要经过后处理阶段对第二尾数和指数进行确认修正,并最终选择输出压缩结果ZRε[0,π/2]。
如图6所示,本发明在具体实施例中所采用的预处理模块,预处理模块首先完成输入角度压缩与否的判断,并从2/π查找表中分两级查找得到参与2/π乘法运算区间C;当EZ≥Eoffset+0=1023时,输入角度需要进行角度压缩,此时SR信号为真;2/π查找表存储位,其中高位是补充的0位,其余是2/π的高位部分;查找表具体被分成19个存储单元,每个单元64位,待压缩角度Z的指数EZ的高位需要索引出的存储单元组的个数是再根据E[10:6]索引2/π存储表的连续4个存储单元,将E[5:0]作为桶形左移位器移位控制信号。
如图7所示为本发明在具体实施例中所采用的2/π截断乘法运算模块,其中截断乘法器输入分别是53位MZ和182位C,乘法器最高53位和最低52位截断不输出,中间M0=129位计算输出,其中包括整数位Q[1:0]和小数位
如图8所示为本发明在具体实施例中所采用的前导零和移位模块,由Q[1:0]决定待压缩角度所在的象限,输出小数位高位部分RH中前导零的个数,并根据前导零个数进行左移位,得到第一尾数和指数
如图9所示为本发明在具体实施例中所采用的π/2截断乘法运算模块,其中截断乘法器输入分别是60位和60位D,乘法结果低60位截断不计算,高60位计算输出,其中保护位6位。
如图10所示为本发明在具体实施例中所采用的后处理模块,首先输入指数完成偏移,中的高位有可能为0,因此判断的最高位,并修正和ER,从而保证结果是规格化浮点格式;如果SR为真,即不进行角度压缩,则直接输出未压缩的输入角度Z,否则输出压缩后的输入角度ZR,输出的Q[1:0]指示输出角度所在象限。
本实施例进一步包括浮点角度压缩实现装置,包括:
预处理模块,用于输入待压缩角度,根据待压缩角度的指数EZ获取需要参与2/π乘法运算的区间C;
2/π截断乘法运算模块,用于将待压缩角度的尾数MZ与获取到的区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0;
前导零和移位模块,用于获取乘法运算结果M0中整数部分Q以及小数位R,根据整数部分Q确定压缩后角度ZR的象限,并将小数位R经过前导零和移位得到指数和尾数
π/2截断乘法运算模块,用于将尾数和D采用截断乘法器执行π/2乘法运算,得到尾数输出
后处理模块,用于根据指数以及所述尾数确定得到最终的压缩后角度ZR输出。
本实施例中,预处理模块包括:
索引单元,用于获取指数EZ的高位、低位,根据获取到的指数EZ的高位从2/π存储单元中查找出区间C所在的所有r个存储单元组;
移位单元,用于将获取的指数EZ的低位作为r个左移位器的移位控制信号,并分别对查找出的存储单元组进行移位,由各个左移位器输出的高位部分得到区间C。
本实施例中,2/π截断乘法运算模块中具体采用位截断乘法器,其中LC为区间C的长度,为待压缩角度Z的尾数MZ的长度;截断乘法器执行2/π乘法运算时,具体将整数位的高位和小数位的低位截断不输出,输出中间位计算结果。
本实施例中,π/2截断乘法运算模块中具体采用位截断乘法器,其中为尾数的长度,LD为D的长度;截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位。
本发明具体实施例中所采用的预处理模块、2/π截断乘法运算模块、前导零和移位模块、π/2截断乘法运算模块以及后处理模块分别如图6~11所示。本实施例浮点角度压缩实现装置与上述浮点角度压缩实现方法的原理一致,在此不再赘述。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.一种浮点角度压缩实现方法,其特征在于步骤包括:
1)预处理:输入待压缩角度Z,根据待压缩角度Z的指数EZ获取需要参与2/π乘法运算的区间C;
2)2/π截断乘法运算:将待压缩角度Z的尾数MZ与获取到的所述区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0;
3)前导零和移位:获取所述乘法运算结果M0中整数部分Q以及小数位R,根据所述整数部分Q确定压缩后角度ZR的象限,并将所述小数位R经过前导零和移位得到指数和第一尾数输出;
4)π/2截断乘法运算:将所述第一尾数和乘数D采用截断乘法器执行π/2乘法运算,得到第二尾数输出;
5)后处理:根据得到的所述指数以及所述第二尾数确定得到压缩后角度ZR输出。
2.根据权利要求1所述的浮点角度压缩实现方法,其特征在于,所述步骤1)的具体步骤为:
1.1)分别获取所述指数EZ的高位、低位,根据获取到的所述指数EZ的高位从2/π存储单元中查找出所述区间C所在的所有r个存储单元组;
1.2)将获取的所述指数EZ的低位作为r个左移位器的移位控制信号,并分别对查找出的所述存储单元组进行移位,由各个所述左移位器输出的高位部分得到所述区间C。
3.根据权利要求1或2所述的浮点角度压缩实现方法,其特征在于:所述步骤2)中具体采用位截断乘法器执行2/π乘法运算,其中LC为所述区间C的长度,为待压缩角度Z的尾数MZ的长度;所述采用截断乘法器执行2/π乘法运算时,具体将整数位的高位和小数位的低位截断不输出,输出中间位计算结果。
4.根据权利要求1或2所述的浮点角度压缩实现方法,其特征在于:所述步骤3)的具体步骤为:获取所述乘法运算结果M0中整数部分Q的高两位Q[1:0]并作为指示象限的信号,其余位得到小数位R,将所述小数位R的高位部分RH前导零后输出高位部分0的个数,并作为左移控制器移位的控制信号以控制进行移位,得到所述指数和第一尾数
5.根据权利要求1或2所述的浮点角度压缩实现方法,其特征在于:所述步骤4)中具体采用位截断乘法器执行π/2乘法运算,其中为所述第一尾数的长度,LD为D的长度;所述采用截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位。
6.根据权利要求1或2所述的浮点角度压缩实现方法,其特征在于:所述步骤5)的具体步骤为:对得到的所述指数进行偏移,输出偏移后指数分别判断所述偏移后指数以及所述尾数中最高位是否为0并在为0时进行修正,得到最终的压缩后角度ZR输出。
7.一种浮点角度压缩实现装置,其特征在于,包括:
预处理模块,用于输入待压缩角度,根据待压缩角度的指数EZ获取需要参与2/π乘法运算的区间C;
2/π截断乘法运算模块,用于将待压缩角度的尾数MZ与获取到的所述区间C采用截断乘法器执行2/π乘法运算,输出乘法运算结果M0;
前导零和移位模块,用于获取所述乘法运算结果M0中整数部分Q以及小数位R,根据所述整数部分Q确定压缩后角度ZR的象限,并将所述小数位R经过前导零和移位得到指数和尾数
π/2截断乘法运算模块,用于将所述尾数和乘数D采用截断乘法器执行π/2乘法运算,得到尾数输出
后处理模块,用于根据所述指数以及所述尾数确定得到最终的压缩后角度ZR输出。
8.根据权利要求7所述的浮点角度压缩实现装置,其特征在于,所述预处理模块包括:
索引单元,用于获取所述指数EZ的高位、低位,根据获取到的指数EZ的高位从所述2/π存储单元中查找出所述区间C所在的所有r个存储单元组;
移位单元,用于将获取的所述指数EZ的低位作为r个左移位器的移位控制信号,并分别对查找出的所述存储单元组进行移位,由各个所述左移位器输出的高位部分得到所述区间C。
9.根据权利要求7或8所述的浮点角度压缩实现装置,其特征在于,所述2/π截断乘法运算模块中具体采用位截断乘法器,其中LC为所述区间C的长度,为待压缩角度Z的尾数MZ的长度;所述截断乘法器执行2/π乘法运算时,具体将整数位的高位和小数位的低位截断不输出,输出中间位计算结果。
10.根据权利要求7或8所述的浮点角度压缩实现装置,其特征在于,所述π/2截断乘法运算模块中具体采用位截断乘法器,其中为所述尾数的长度,LD为乘数D的长度;所述截断乘法器执行π/2乘法运算时,具体将低LD位截断不输出,输出高LD位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710265233.8A CN107015783B (zh) | 2017-04-21 | 2017-04-21 | 一种浮点角度压缩实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710265233.8A CN107015783B (zh) | 2017-04-21 | 2017-04-21 | 一种浮点角度压缩实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107015783A true CN107015783A (zh) | 2017-08-04 |
CN107015783B CN107015783B (zh) | 2019-12-17 |
Family
ID=59448167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710265233.8A Active CN107015783B (zh) | 2017-04-21 | 2017-04-21 | 一种浮点角度压缩实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107015783B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871197A (zh) * | 2018-12-29 | 2019-06-11 | 航天信息股份有限公司 | 数据存储装置及数据确定装置 |
CN112558918A (zh) * | 2020-12-11 | 2021-03-26 | 北京百度网讯科技有限公司 | 用于神经网络的乘加运算方法和装置 |
-
2017
- 2017-04-21 CN CN201710265233.8A patent/CN107015783B/zh active Active
Non-Patent Citations (3)
Title |
---|
J.ZHOU, Y.DOU, Y.LEI, J.XU, Y.DONG: "Double precision hybrid-mode floating-point FPGA CORDIC co-processor", 《PROC.10TH IEEE INT.CONF.HIGH PERFORM.COMPUT.COMMUN》 * |
M.R.D.RODRIGUES, M.SC,J.H.P.ZURAWSKI: "Hardware evaluation of mathematical functions", 《IEE PROC》 * |
S.AGGARWAL,P.K.MEHER, K.KHARE: "Scale-free hyperbolic CORDIC processor and its application to waveform generation", 《IEEE TRANS.CIRCUITS SYST.I,REG.PAPERS》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109871197A (zh) * | 2018-12-29 | 2019-06-11 | 航天信息股份有限公司 | 数据存储装置及数据确定装置 |
CN109871197B (zh) * | 2018-12-29 | 2022-03-04 | 航天信息股份有限公司 | 数据存储装置及数据确定装置 |
CN112558918A (zh) * | 2020-12-11 | 2021-03-26 | 北京百度网讯科技有限公司 | 用于神经网络的乘加运算方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107015783B (zh) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9753695B2 (en) | Datapath circuit for digital signal processors | |
CN107273090A (zh) | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
CN108021537A (zh) | 一种基于硬件平台的softmax实现方式 | |
CN106155627B (zh) | 基于t_cordic算法的低开销迭代三角函数装置 | |
CN1172539A (zh) | 利用截尾泰勒级数的对数/反对数转换器及其使用方法 | |
JPH03204720A (ja) | 初等関数演算装置 | |
CN105930128B (zh) | 一种利用浮点数计算指令实现大整数乘法计算加速方法 | |
CN106775577B (zh) | 一种高性能非精确冗余二进制乘法器的设计方法 | |
CN116400883A (zh) | 一种可切换精度的浮点乘加器 | |
CN107015783A (zh) | 一种浮点角度压缩实现方法及装置 | |
CN115407965A (zh) | 一种基于泰勒展开的高性能近似除法器及误差补偿方法 | |
CN107423026A (zh) | 一种正余弦函数计算的实现方法及装置 | |
CN103176948A (zh) | 一种低成本的单精度初等函数运算加速器 | |
CA2329104C (en) | Method and apparatus for calculating a reciprocal | |
CN104636114B (zh) | 一种浮点数乘法的舍入方法及装置 | |
JP2502836B2 (ja) | 除算回路の前処理装置 | |
van der Hoeven et al. | On sparse interpolation of rational functions and gcds | |
CN110784226B (zh) | 一种基于pcm压缩编码的数据处理方法及数据处理装置 | |
US20180203669A1 (en) | Digit recurrence division | |
CN104731551B (zh) | 基于fpga进行除法操作的方法及装置 | |
CN117032625A (zh) | 一种低延时的浮点平方根函数硬件实现方法 | |
US3167645A (en) | Method and apparatus for performing arithmetical operations in the system of residual classes | |
CN100458647C (zh) | 一种提高数字信号处理器准确度的方法及装置 | |
KR100402799B1 (ko) | 오차를 최소화할 수 있는 제곱근기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |