一种浮点角度压缩实现方法及装置与流程

文档序号:11620363阅读:158来源:国知局
本发明涉及函数计算
技术领域
:,尤其涉及一种浮点角度压缩实现方法及装置。
背景技术
::基本函数计算是科学计算和工程应用程序的重要组成部分,函数计算中的第一步通常即需要执行角度压缩,如三角函数等的基本函数计算处理中,要求输入角度在一定的范围内,对于任意输入角度则需要将输入角度压缩至指定范围,同时保证压缩后角度的精度。通过mod函数定义角度压缩时,输入角度z则其中z和为实数,且k为整数,当输入角度z越接近的整数倍时,有限位数中有效位数会变得越少,即前导零的位数会变得越多,最终压缩后输出角度的有效位数会变得越少,浮点角度压缩的误差就会变得越大。为提高浮点角度压缩精度,目前主要包括以下两种方式:(1)纯软件实现方式,如多精度算法,可以提高压缩角度精度,但是计算速度较慢;(2)结合硬件流水结构实现的方式,可以提高压缩角度精度,且具有更快的压缩速度;但是该类方式中,需要依赖于指定硬件结构实现,如需要依赖于处理器上有现存的fma融合单元,不便于实际使用;或基于drmrr(double-residuemodularrangereduction)改进的硬件实现,如cer(constantelementaryresidues)、orc(on-the-flyelementaryresiduescomputation)、dtr(drmrrwithtablereplication)等角度压缩方法,可以使得迭代结构的开销很小,但是通常是采用完整乘法器,如上所述,当输入角度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:象限选择对应表。domainq[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所示。本实施例浮点角度压缩实现装置与上述浮点角度压缩实现方法的原理一致,在此不再赘述。上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1