CN112667197B - 一种基于posit浮点数格式的参数化加减法运算电路 - Google Patents
一种基于posit浮点数格式的参数化加减法运算电路 Download PDFInfo
- Publication number
- CN112667197B CN112667197B CN202011601975.1A CN202011601975A CN112667197B CN 112667197 B CN112667197 B CN 112667197B CN 202011601975 A CN202011601975 A CN 202011601975A CN 112667197 B CN112667197 B CN 112667197B
- Authority
- CN
- China
- Prior art keywords
- floating point
- point number
- operation result
- mantissa
- unit
- 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.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Complex Calculations (AREA)
Abstract
本发明提供的一种基于POSIT浮点数格式的参数化加减法运算电路,涉及计算机技术领域,通过数据输入单元、译码单元、scale确定单元、尾数处理单元、MSB单元、结果编码单元、结果选择输出单元构建一种基于POSIT浮点数格式的参数化加减法运算电路,舍弃了原本的IEEE 754浮点计算格式,采用了新的POSIT浮点数据格式进行加减法运算,该格式对于浮点数的表示方法更加灵活简单,基于POSIT格式的加减法运算更好的节省了硬件平台计算时的硬件资源,且在相同位宽的情况下,可以提高运算精度。
Description
技术领域
本发明涉及计算机技术领域,更具体的,涉及一种基于POSIT浮点数格式的参数化加减法运算电路。
背景技术
浮点数硬件运算单元是很多的特定的CPU或者计算平台中必须存在的一部分。目前通用的浮点数格式是IEEE 754,IEEE 754格式中包括四种不同的精度格式,以应对不同的数据精度要求。浮点数的运算单元消耗着大量的硬件资源,以最低的32位单精度浮点数处理单元为例,根据观察,在简单的顺序标量处理元件中,它消耗了芯片约50%的芯片面积和能量,而双精度的浮点数可以达到60%到70%。除此之外,IEEE 754格式的精度上的局限性和它的高复杂度都是浮点计算中值得注意的问题。
POSIT格式浮点数与IEEE 754格式相比,它的编码方式更为灵活和简单,可以根据需求选择想要的精度,在相同位宽下,可以达到比IEEE 754方式更高的精度。若使用POSIT数据格式进行硬件计算,可以减少所占用的硬件资源,并可以获得更高的数据精度。公开号为CN111538472A的中国发明专利申请于2020年8月14日公开了一种Posit浮点数的运算处理器以及运算处理***,其虽然公开了一种直接以自解码电路获取的补码形式的中间数据进行加、减、乘运算,得到以补码形式的中间数据表示的运算结果,直接将以补码形式的中间数据表示的运算结果输入编码电路,以使编码电路直接将补码形式的中间数据转换为Posit浮点数,但其并无法满足不同位宽POSIT格式的参数化的加减法运算。
发明内容
本发明为克服现有的POSIT浮点加减法运算运算存在无法满足不同位宽POSIT格式的参数化的加减法运算的技术缺陷,提供一种基于POSIT浮点数格式的参数化加减法运算电路。
为解决上述技术问题,本发明的技术方案如下:
一种基于POSIT浮点数格式的参数化加减法运算电路,包括数据输入单元、译码单元、scale确定单元、尾数处理单元、MSB单元、结果编码单元、结果选择输出单元;其中:
所述数据输入单元用于进行posit格式的第一浮点数和posit格式的第二浮点数的数据输入,第一浮点数和第二浮点数的总位宽都为N,且指数部分所允许的最大宽度为ES;
所述译码单元对于对于第一浮点数、第二浮点数进行POSIT中各个不同字段进行获取,确定第一浮点数的符号段、指数段以及尾数段的值和第二浮点数的符号段、指数段以及尾数段的值;
所述scale确定单元用于接收第一浮点数和第二浮点数的特定字段,并根据该特定字段得到第一浮点数和第二浮点数的浮点数值的scale的大小,然后根据计算出来的第一浮点数和第二浮点数的scale大小确定较大的scale;并将两者大小关系以及两个scale之间的差值diff送入所述尾数处理单元;同时,该scale确定单元接收尾数部分的移位大小以及进位标志来决定是否对较大的scale进行调整,由此确定第一运算结果;
所述尾数处理单元用来接收第一浮点数和第二浮点数的尾数字段,并根据所述scale确定单元的两个浮点数scale的大小关系以及两者之间的差值对较小的浮点数的尾数字段作出相应的调整,然后根据调整过后得第一浮点数和第二浮点数的尾数字段得到第二运算结果;同时,根据第一运算结果对第二运算结果进行规范化,得到符合POSIT格式标准的尾数部分的第二运算结果作为第三运算结果;
所述MSB单元用于确定第二运算结果的最高位,并将第二运算结果的最高位输出至所述scale确定单元;
所述结果编码单元用于接收第二运算结果和第三运算结果以及译码单元中的符号字段,编码形成目标运算结果,由所述结果选择输出单元进行输出。
在一种可能的实现方式中,所述译码单元包括第一译码单元和第二译码单元;其中:
所述第一译码单元用于对于第一浮点数进行POSIT中各个不同字段进行获取,确定第一浮点数中符号段,指数段以及尾数段的值;
所述第二译码单元用于对于第二浮点数进行POSIT中各个不同字段进行获取,确定第二浮点数中符号段,指数段以及尾数段的值。
在一种可能的实现方式中,所述scale确定单元包括拼接器、比较器和加法器;其确定第一运算结果过程为:
确定单个浮点数的scale的值,具体计算公式为:
scale={regime,exp},
其中,scale表示的是POSIT格式编码中代表的浮点数中其对应得缩放尺度,regime是指POSIT中某一字段的具体值,exp是阶码字段的具体值,{}表示拼接器件,即用拼接器件将regime和exp拼接起来;在数学意义上,这个拼接动作表示了以下公式的意义:
scale=2ES×regime+exp
此处,ES代表阶码exp部分的宽度;
得到第一浮点数和第二浮点数的scale的大小后,通过比较器得到第一浮点数和第二浮点数的scale部分的大小,然后将较大的scale部分送入加法器中作为其中一个操作数,加法器最终进行的操作如下公式,如此确定了最终结果的scale:
scale=scalemax+Flag-Lshift,
其中,scalemax表示第一浮点数和第二浮点数的scale值中较大的那个,Flag表示所述MSB单元中输出的第一运算结果的最高位,Lshift表示来自尾数规范化单元的参数,该数表示尾数进行移位的位数大小;
此处的scale就是第一运算结果,代表目标运算结果的scale的值。
在一种可能的实现方式中,所述第二运算结果确定过程具体为:
假设根据所述scale确定单元的scale值大小比较的结果,第一浮点数scale值更大,Ma表示来自译码单元的第一浮点数的尾数部分,Mb代表第二浮点数的尾数部分;两个浮点数中scale的差值diff,也是来自所述scale确定单元;则首先对较小scale的第二浮点数的尾数部分Mb根据以下公式处理:
Mb=Mb>>diff,
然后将处理过后的第一浮点数和第二浮点数中的Ma和Mb相加或者相减计算得到下列公式中的X、Y和Z部分:
Ma±Mb=XY.Z,
其中,1为尾数部分的隐藏位,Ma代表第一浮点数的尾数部分,Mb代表第二浮点数的尾数部分,X代表第二运算结果的最高位,Y代表第二运算结果的次高位,Z代表第二运算结果剩余的尾数部分;
若X是1,则说明第一浮点数和第二浮点数尾数部分进行相加得到的值出现了溢出,此时第二运算结果根据下式得到结果:
add_M=YZ,
若X是0,则说明第一浮点数和第二浮点数尾数部分的相减,且没有出现溢出情况,此时第二运算结果根据下式得到:
add_M=XY.Z<<1,
此处,add_M就是第二运算结果,代表了结果中的尾数部分。
在一种可能的实现方式中,所述尾数处理单元包括尾数规范化单元;所述尾数规范化单元根据第一运算结果对第二运算结果进行规范化,得到符合POSIT格式标准的尾数部分的第二运算结果作为第三运算结果。
其中,在所述尾数规范化单元中,将第二运算结果进行规范化得到符合POSIT格式标准的尾数部分的第二运算结果,规范时用到的中间参数Lshift送入所述scale确定单元加入对第一运算结果的调整过程中,并将规范化后得结果作为第三运算结果送入所述结果编码单元中。
在一种可能的实现方式中,所述的第三运算结果的确定方式是通过所述尾数规范化单元,具体用公式表示为:
add_ML=add_M<<LOD(add_M),
其中,add_M即表示第二运算结果,LOD表示所述尾数规范化单元中的前导零检测电路,检测add_M中第一个为1位在编码中的位置,然后利用尾数规范化中的移位器件将第二运算结果左移LOD的结果值;
此处,Frac就是第三运算结果,代表目标运算结果的尾数部分值。
在一种可能的实现方式中,所述电路还包括特殊结果处理单元;所述特殊结果处理单元根据第一译码单元和第二译码单元的译码结果确定第一浮点数和第二浮点数是否为0或者无穷,以确定运算的特殊结果,并将特殊结果直接进入所述结果编码单元。
其中,在所述结果选择输出单元中,若接收到特殊结果,则将特殊结果输出;否则,将结果编码单元的结果输出。
其中,在所述特殊结果处理单元中,若第一浮点数和第二浮点数都是0,则加减法运算的结果为0;若第一浮点数和第二浮点数其中一个为0,则加减法的运算结果为另一个浮点数;若第一浮点数和第二浮点数任意一个为无穷,则加减法的运算结果为无穷。
与现有技术相比,本发明技术方案的有益效果是:
本发明提供一种基于POSIT浮点数格式的参数化加减法运算电路,浮点计算舍弃了原本的IEEE 754浮点计算格式,采用了新的POSIT浮点数据格式进行加减法运算,该格式对于浮点数的表示方法更加灵活简单,基于POSIT格式的加减法运算更好的节省了硬件平台计算时的硬件资源,且在相同位宽的情况下,可以提高运算精度。
附图说明
图1为本申请中POSIT浮点数据格式的具体示意图;
图2为本申请实例中一种基于Posit数据格式的参数化的加减法运算电路示意图;
图3为本申请实例中基于Posit数据格式的参数化的加减法运算电路的子模块译码单元的步骤结构示意图;
图4为本申请实例中另一种基于Posit数据格式的参数化的加减法运算电路;
其中:1、数据输入单元;2、译码单元;21、第一译码单元;22、第二译码单元;3、scale确定单元;4、尾数处理单元;41、尾数规范化单元;5、MSB单元;6、结果编码单元;7、结果选择输出单元;8、特殊结果处理单元。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
Unums(universal numbers)是由John L.Gustafson提出的类似于浮点数中的实数中的算术和二进制表示格式,用来替代现在普遍使用的IEEE 754。POSIT属于Unums中的第三版,也就是Type III unum。POSIT像IEEE 754中一样,用科学计数法的方式表示实数,若是该数无法精确表示,则采用舍入到最接近的值的方式。
Posit的格式设计是硬件友好易于硬件实现的。如图1所示,posit中分为符号位(sign),regime位,exponent位和fraction位。Posit数会给定好总位宽N和指数(exponent)能占据的最大的宽度,其余字段的宽度主要根据regime字段所占据的宽度来变化。下面对各个字段进行具体的分析阐述:
符号段:代表posit编码表示的浮点数的正负性,位于编码字段的最高位。
regime字段:紧接着在符号字段之后,一连串相同的1序列和最低位的翻转位0组成或者由一连串的0序列和最低的翻转位1组成。还有一种情况是一连串的1序列由位宽限制而终止,而不是由翻转位的0而终止。拥有连续1序列的regime字段属于正regime,它的值为连续的1的个数减1;拥有连续0序列的regime字段属于负regime,它的值为序列中0的个数的相反数。如对于regime字段00001,表示的值-4;regime字段为111110,它代表的值为4。若总位宽N=8的posit编码为01111111,该编码中regime字段为1111111,其所表示的值为6,它的终止位并不是翻转位,而是受位宽限制而终止。
exponent字段:该字段在给定Posit数时约定好了给定的最大宽度ES。若是regime字段以翻转位的方式终止,且总位宽还有空余位置,则紧接在regime字段之后的就是exponent字段,exponent字段的宽度不能超过事先约定的ES位。该字段属于无符号整数,也属于Posit对于所表示的浮点数的指数的组成部分。
fraction字段:尾数部分是紧接在exponent字段之后,若是在ES位的指数编码字段之后总位宽还有剩余,则紧接着的就是尾数字段。也就是说尾数字段的宽度完全取决于总位宽在其他字段编码完成后剩余的宽度。值得注意的是,尾数部分存在一个整数隐藏位1,它在Posit编码中并没有实际表示出来,但它是实际存在的,所以尾数部分表示的是一个大于等于1.0小于2的实数。例如,当尾数字段为0010时,所表示的浮点数值为:
1+0*2-1+0*2-2+1*2-3+0*2-4=1.125;
对于一个regime值k,指数部分的值为e,尾数部分的值为f(加上了隐藏位1的值)的posit数,它所表示的浮点数的值可以用下面公式表示:
x=(-1)S×useedk×2e×f;
s代表Posit编码的最高符号位,useed=22es,ES表示指数位的宽度。Useed和e是两个不同大小的对于浮点数值得缩放尺度,可以共同转化为以2为底的缩放尺度,此时以2为底的缩放尺度scale的大小可用以下公式表示:
scale=2ES×k+e
实施例1
如图2所示,给出了本实施例中一种基于POSIT浮点数格式的参数化加减法运算电路。所谓的参数化,即输入的POSIT数的位宽N和指数宽度ES可以任意选择。该电路包括数据输入单元1、译码单元2、scale确定单元3、尾数处理单元4、MSB单元5、结果编码单元6、结果选择输出单元7;其中:
通过数据输入单元1输入待进行加减法运算的两个操作数,也就是Posit数据格式的第一浮点数和第二浮点数,并送入译码单元2。此处假设第一浮点数和第二浮点数的配置均为<N,ES>,即总位宽为N,指数最大宽度为ES的Posit数。假设第一浮点数其IN1,译码单元2包含了拼接器件,异或电路,LZD电路,移位器件,加法器,乘法器等等。该单元接收到第一浮点数后,开始对其进行译码工作。译码工作的步骤结构示意图如图3所示。译码单元包括首先取出第一浮点数编码中的最高位作为符号位。
若前一步提取到的符号位为1,则将第一浮点数进行求补码操作;否则,不进行任何操作,也就是说,要确定该Posit数的绝对值的编码XIN1,宽度为N。求补码就是对IN1每一位取反后再加1。
取得第一浮点数绝对值编码XIN1后,将N-1个XIN1的次高位用拼接器件连接起来作为译码单元中的异或电路的其中一个输入数,因为XIN1的次高位可以知道该posit数regime字段的正负性。另一个输入数来自于XIN1[N-2:0],也就是其次高位一直到最低位,将两个数进行异或操作后得到一个新的N位数RIN1。进行异或操作的目的是为了能够使得不管是正的regime字段还是负的regime字段都可以利用译码单元中的LZD电路(前导零检测电路)获得它的值。假设XIN1的次高位是1,即正的regime字段,经过异或电路后,次高位的1与XIN1中为1的regime序列运算结果为0;假设XIN1的次高位是0,即负的regime序列,经过异或电路后,次高位的0与XIN1中为0的regime序列运算结果为0。由此可以看出,对于正的regime序列,会将原本的11…0转化成00…1,负的regime序列不会变化,这样操作可以保证只需用到LZD单元,而不需要再多采用LOD单元(前导1检测电路),节省电路面积。
从异或电路输出得到RIN1后,通过译码单元中的LZD电路,它可以检测出来RIN1中第一个为1的位所在的位置,也就是检测RIN1中前面的0的个数r。
不管是正的regime字段还是负的regime字段,r代表了连续的1序列或者0序列的个数,所以r+2就代表了符号位加上regime字段的长度,由于符号位加上regime字段的最短长度为3,所以将XIN1[N-4:0]利用移位器件左移r-1个长度得到一个临时数temp,temp[N-4:0]就是浮点数中exponent字段和fraction字段。
然后根据Posit中对于指数部分最大宽度为ES的限制,temp[N-4:N-3-ES]部分为指数exponent字段,temp[N-4-ES:0]部分为fraction字段。但为了后续的计算处理,fraction字段要用拼接器件将隐藏位1和编码中的fraction字段以及grs=3’b0拼接起来,隐藏位位于最高位,grs位于最低3位。Grs位是紧接着尾数字段的最后一位的添加的3个位,它用于尾数字段运算完成后进行最后的四舍五入,隐藏位,fraction字段,grs位拼接起来组成拓展的尾数字段Frac。
得到第一浮点数的各个字段后,计算得出浮点数值的绝对值X1,当XIN1中regime字段是正时,得出浮点数值的公式如下所示:
X1=22ES*(r-1)*2exponent*(1+fraction)
当regime字段是负时,得出浮点数值得公式如下所示:
X1=22ES*(-r)*2exponent*(1+fraction)
第二浮点数在译码单元2中的操作过程与第一浮点数译码工作一样,处不再赘述。
在具体实施过程中,所述译码单元2包括第一译码单元21和第二译码单元22;其中:
所述第一译码单元21用于对于第一浮点数进行POSIT中各个不同字段进行获取,确定第一浮点数中符号段,指数段以及尾数段的值;
所述第二译码单元22用于对于第二浮点数进行POSIT中各个不同字段进行获取,确定第二浮点数中符号段,指数段以及尾数段的值。
更具体的,scale确定单元3包括拼接器、比较器和加法器。首先接收到来自两个译码单元中第一浮点数和第二浮点数中regime字段的值和指数部分的值exp,然后用拼接器件将分别两者拼接则可得到第一浮点数和第二浮点数scale的值。然后用比较器比较得到第一浮点数和第二浮点数的大小关系,并相减得到两者的差值diff,且将这些结果送入尾数处理单元。较大的scale的值并不是最终的目标运算结果的scale值,还要接受来自尾数处理单元4的最高位flag以及Lshift用于对scalemax进行调整得到第一运算结果即最终的scale值。调整的公式在前文已提过,此处不再赘述。
在具体实施过程中,尾数处理单元4包括尾数规范化单元41;所述尾数规范化单元41根据第一运算结果对第二运算结果进行规范化,得到符合POSIT格式标准的尾数部分的第二运算结果作为第三运算结果。在所述尾数规范化单元41中,将第二运算结果进行规范化得到符合POSIT格式标准的尾数部分的第二运算结果,规范时用到的中间参数Lshift送入所述scale确定单元3加入对第一运算结果的调整过程中,并将规范化后得结果作为第三运算结果送入所述结果编码单元6中。
在具体实施过程中,所述尾数规范化单元41包括了LZD电路以及移位器件,接收到来自尾数处理单元4的处理过后的第二运算结果add_M,利用LZD电路探测前导零个数Lshift后,将add_M左移对应Lshift位后得到规范化后得add_ML,add_ML[MSB-1:0]位即为目标运算结果的fraction字段,即第三运算结果,最高位的1即作为目标运算结果的隐藏位。
更具体的,尾数处理单元4包括了加法器,移位器件,数值比较器,接收第一浮点数和第二浮点数的Frac作为加法器的两个操作数,根据操作要求是加法还是减法,将第一浮点数和第二浮点数的Frac字段相加或者相减,得到第二运算结果。若操作是加法,则直接进行相加即可;若操作是减法,则先用数值比较器比较两个尾数字段Frac的大小关系,作减法时用较大的Frac字段值减去较小的Frac字段值。注意的是,两个Frac字段所代表的的值都是大于等于1.0小于2的数,即它们都是属于无符号数。它们相加的值一定是大于等于小于4的数,所以第二运算结果的位宽会比Frac的宽度多1位,否则现有的Frac的宽度无法容纳结果的宽度会产生溢出现象;它们相减的值一定是大于等于0小于1的数。当第二运算结果的最高位为1,最高位所代表的的加权数位2^1,add_M表示第二运算结果,将add_M不变的作为显示包含隐藏位的小数部分传入尾数规范化单元,MSB表示add_M的最高位,这样的操作将add_M中原本位于二进制小数点左边加权数为2^1的数的加权数变为2^(0),该操作相当于将add_M右移了一位,所以该操作会造成对目标运算结果scale的调整;当第二运算结果的最高位为0,只有减法操作会出现该情况,此时,利用移位器件将其左移一位,再将其送入尾数规范化单元,该操作不会使得整体的scale的值变化,因为二进制小数点左边的数经过减法运算后都变成零了,所以左移只是使得尾数部分的最后增加了位数。
更具体的,MSB单元用于确定第二运算结果的最高位,并将第二运算结果的最高位输出至所述scale确定单元3;
更具体的,所述结果编码单元6包括拼接器件,移位器件,数值比较器,与器件,或器件,接收来自各个不同单元运算得到的第一运算结果,第二运算结果以及第三运算结果,以及译码单元得到的第一浮点数和第二浮点数的绝对值以及符号字段。用数值比较器比较第一浮点数绝对值X1和第二浮点数的绝对值X2的大小,然后取绝对值大的那一个浮点数的符号字段作为目标运算结果的符号位。
然后根据第一运算结果中得到的目标运算结果的scale值,要注意的是,若scale是负值,scale中负值的部分一定来源于regime值,指数部分的值exp是无符号的。所以直接取scale部分的最低ES位scale[ES-1:0]即为指数部分exponent,若scale为正值,则除了最低ES位的指数部分外,剩下的部分即为regime的值r。而若scale为负值,则regime值的绝对值r为scale[ES+RS-1:RS]部分的值取反加1,RS表示regime值的编码宽度,一般为log2(N)+1,根据regime最大值不超过N-2,再加上值的符号位可推知。根据posit数中对于scale值得计算方式可以知道,只要regime的值为负,最终scale的值一定为负,所以scale为正时,regime的值一定是正的,也就是说scale的正负决定了regime的正负。
将各个字段用拼接器件连接起来,最终的目标运算结果的绝对值可根据scale值得正负由下列式平移得到:
Shift_temp={!scale[MSB],scale[MSB],exponent,add_ML[MSB-1:0],{N-1{0}}}
若scale的值为正,即regime的值为正,则用移位器件将上式右移r个长度;若scale的值为负,则将上式右移r-1个长度;
根据不同情况右移相应长度得到移位过后的shift_temp后,shift_temp[MSB:MSB-(N-1)]即为舍入前的结果。而Posit数中只有一种舍入方式,就是舍入到最接近的值。先从移位过后的shift_temp中获取LSB,G,R,S位,LSB代表目标运算结果中尾数部分的最低位,GRS为紧接着LSB之后的3位。Shift_temp[MSB-(N-1):MSB-(N+2)]由高到低分别为LSB,G,R,S位。若GRS位大于100或者等于100且LSB位为1时,即会使得目标结果入,否则舍去。所以加上符号位后,最终的目标运算结果的绝对值可用下式表示:
result={0,shift_temp[MSB:MSB-(N-1)]+G&&(L||R||S)}
根据所述的数值比较器比较出来的绝对值大小得到的目标运算结果的符号位,若是0,则result即为最终结果;若是1,则要将result进行求反再加1的求补码工作才是最终的目标运算结果。
更具体的,所述结果选择输出单元7进行输出,接收到目标运算结果,并将结果输出。
在具体实施过程中,本发明提供一种基于POSIT浮点数格式的参数化加减法运算电路,浮点计算舍弃了原本的IEEE 754浮点计算格式,采用了新的POSIT浮点数据格式进行加减法运算,该格式对于浮点数的表示方法更加灵活简单,基于POSIT格式的加减法运算更好的节省了硬件平台计算时的硬件资源,且在相同位宽的情况下,可以提高运算精度。
实施例2
如图4所示,在前一实施例的基础上,考虑到Posit数据格式计算时出现的特殊浮点数,本实施例中添加了特殊结果处理单元9,可以更快的得到关于特殊结果的目标运算结果,而无需经过其他的单元。
特殊结果处理单元9接收来自数据输入单元第一浮点数和第二浮点数的输入编码值。Posit数据格式中只有两种特殊的数据格式,分别是编码字段全为0的0以及除了符号位为1,其余字段为0的NaR。特殊结果处理单元设定一个valid信号,当检测到第一浮点数或者第二浮点数中任意一个存在0或者NaR的情况时,该信号置高。该信号会送入结果选择输出单元8,使得结果选择输出单元输出当前特殊结果处理单元传来的结果。特殊结果分为以下几种情况:当第一浮点数和第二浮点数各个字段均为0,即两者的浮点数值都为0,则直接将结果0送入结果选择输出单元;当第一浮点数和第二浮点数任意一个为NaR或者两个都是NaR,即浮点数的编码字段除了最高位为1,其余所有字段均为0时,直接将NaR送入结果输出单元;当第一浮点数或者第二浮点数其中只有一个为0,另一个为普通情况的编码时,直接将不为0的编码的浮点数送入结果选择输出单元。
结果选择输出单元8接收到特殊结果处理单元9的valid信号后,直接将其传来的结果输出为目标运算结果。
本发明可用于众多含有浮点数计算单元的处理平台中,如个人计算机,多处理器***,各种小型或者大型计算机中。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.一种基于POSIT浮点数格式的参数化加减法运算电路,其特征在于,包括数据输入单元(1)、译码单元(2)、scale确定单元(3)、尾数处理单元(4)、MSB单元(5)、结果编码单元(6)、结果选择输出单元(7);其中:
所述数据输入单元(1)用于进行POSIT格式的第一浮点数和POSIT格式的第二浮点数的数据输入;
所述译码单元(2)对于第一浮点数、第二浮点数进行POSIT中各个不同字段进行获取,确定第一浮点数的符号段、指数段以及尾数段的值和第二浮点数的符号段、指数段以及尾数段的值;
所述scale确定单元(3)用于接收第一浮点数和第二浮点数的预设字段,并根据该预设字段得到第一浮点数和第二浮点数的浮点数值的scale的大小,然后根据计算出来的第一浮点数和第二浮点数的scale大小,确定第一浮点数和第二浮点数的scale之间较大的scale;并将两者大小关系以及两个scale之间的差值diff送入所述尾数处理单元(4);同时,该scale确定单元(3)接收尾数部分的移位大小以及进位标志来决定是否对第一浮点数和第二浮点数的scale之间较大的scale进行调整,由此确定第一运算结果;
所述尾数处理单元(4)用来接收第一浮点数和第二浮点数的尾数字段,并根据所述scale确定单元(3)的两个浮点数scale的大小关系以及两者之间的差值对第一浮点数和第二浮点数的scale之间较小的浮点数的尾数字段作出相应的调整,然后根据调整过后得第一浮点数和第二浮点数的尾数字段得到第二运算结果;同时,根据第一运算结果对第二运算结果进行规范化,得到符合POSIT格式标准的尾数部分的第二运算结果作为第三运算结果;
所述MSB单元(5)用于确定第二运算结果的最高位,并将第二运算结果的最高位输出至所述scale确定单元(3);
所述结果编码单元(6)用于接收第二运算结果和第三运算结果以及译码单元中的符号字段,编码形成目标运算结果,由所述结果选择输出单元(7)进行输出。
2.根据权利要求1所述的一种基于POSIT浮点数格式的参数化加减法运算电路,其特征在于,所述译码单元(2)包括第一译码单元(21)和第二译码单元(22);其中:
所述第一译码单元(21)用于对于第一浮点数进行POSIT中各个不同字段进行获取,确定第一浮点数中符号段,指数段以及尾数段的值;
所述第二译码单元(2)用于对于第二浮点数进行POSIT中各个不同字段进行获取,确定第二浮点数中符号段,指数段以及尾数段的值。
3.根据权利要求1所述的一种基于POSIT浮点数格式的参数化加减法运算电路,其特征在于,所述scale确定单元(3)包括拼接器、比较器和加法器;其确定第一运算结果过程为:
确定单个浮点数的scale的值,具体计算公式为:
scale={regime,exp},
其中,scale表示的是POSIT格式编码中代表的浮点数中其对应得缩放尺度,regime是指POSIT中某一字段的具体值,exp是阶码字段的具体值,{}表示拼接器件,即用拼接器件将regime和exp拼接起来;
得到第一浮点数和第二浮点数的scale的大小后,通过比较器得到第一浮点数和第二浮点数的scale部分的大小,然后将第一浮点数和第二浮点数的scale之间较大的scale部分送入加法器中作为其中一个操作数,加法器最终进行的操作如下公式,如此确定了最终结果的scale:
scale=scalemax+Flag-Lshift,
其中,scalemax表示第一浮点数和第二浮点数的scale值中较大的scale,Flag表示所述MSB单元(5)中输出的第一运算结果的最高位,Lshift表示来自尾数规范化单元的参数,该参数表示尾数进行移位的位数大小;
此处的scale就是第一运算结果,代表目标运算结果的scale的值。
4.根据权利要求3所述的一种基于POSIT浮点数格式的参数化加减法运算电路,其特征在于,所述第二运算结果确定过程具体为:
假设根据所述scale确定单元(3)的scale值大小比较的结果,第一浮点数scale值更大,Ma表示来自译码单元的第一浮点数的尾数部分,Mb代表第二浮点数的尾数部分;两个浮点数中scale的差值diff,也是来自所述scale确定单元(3);则首先对第一浮点数和第二浮点数的scale之间较小scale对应的第二浮点数的尾数部分Mb根据以下公式处理:
Mb=Mb>>diff,
然后将处理过后的第一浮点数和第二浮点数中的Ma和Mb相加或者相减计算得到下列公式中的X、Y和Z部分:
Ma±Mb=XY.Z,
其中,1为尾数部分的隐藏位,Ma代表第一浮点数的尾数部分,Mb代表第二浮点数的尾数部分,X代表第二运算结果的最高位,Y代表第二运算结果的次高位,Z代表第二运算结果剩余的尾数部分;
若X是1,则说明第一浮点数和第二浮点数尾数部分进行相加得到的值出现了溢出,此时第二运算结果根据下式得到结果:
add_M=YZ,
若X是0,则说明第一浮点数和第二浮点数尾数部分的相减,且没有出现溢出情况,此时第二运算结果根据下式得到:
add_M=XY.Z<<1,
此处,add_M就是第二运算结果,代表了结果中的尾数部分。
5.根据权利要求4所述的一种基于POSIT浮点数格式的参数化加减法运算电路,其特征在于,尾数处理单元(4)包括尾数规范化单元(41);所述尾数规范化单元(41)根据第一运算结果对第二运算结果进行规范化,得到符合POSIT格式标准的尾数部分的第二运算结果作为第三运算结果。
6.根据权利要求5所述的一种基于POSIT浮点数格式的参数化加减法运算电路,其特征在于,在所述尾数规范化单元(41)中,将第二运算结果进行规范化得到符合POSIT格式标准的尾数部分的第二运算结果,规范时用到的中间参数Lshift送入所述scale确定单元(3)加入对第一运算结果的调整过程中,并将规范化后得结果作为第三运算结果送入所述结果编码单元(6)中。
7.根据权利要求6所述的一种基于POSIT浮点数格式的参数化加减法运算电路,其特征在于,所述的第三运算结果的确定方式是通过所述尾数规范化单元(41),具体用公式表示为:
add_ML=add_M<<LOD(add_M),
其中,add_M即表示第二运算结果,LOD表示所述尾数规范化单元(41)中的前导零检测电路,检测add_M中第一个为1位在编码中的位置,然后利用尾数规范化中的移位器件将第二运算结果左移LOD的结果值;
此处,Frac就是第三运算结果,代表目标运算结果的尾数部分值。
8.根据权利要求1-7任一项所述的一种基于POSIT浮点数格式的参数化加减法运算电路,其特征在于,还包括特殊结果处理单元(8);所述特殊结果处理单元(8)根据第一译码单元和第二译码单元的译码结果确定第一浮点数和第二浮点数是否为0或者无穷,以确定运算的特殊结果,并将特殊结果直接进入所述结果编码单元(6)。
9.根据权利要求8所述的一种基于POSIT浮点数格式的参数化加减法运算电路,其特征在于,在所述结果选择输出单元(7)中,若接收到特殊结果,则将特殊结果输出;否则,将结果编码单元(6)的结果输出。
10.根据权利要求9所述的一种基于POSIT浮点数格式的参数化加减法运算电路,其特征在于,在所述特殊结果处理单元(8)中,若第一浮点数和第二浮点数都是0,则加减法运算的结果为0;若第一浮点数和第二浮点数其中一个为0,则加减法的运算结果为另一个浮点数;若第一浮点数和第二浮点数任意一个为无穷,则加减法的运算结果为无穷。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011601975.1A CN112667197B (zh) | 2020-12-29 | 2020-12-29 | 一种基于posit浮点数格式的参数化加减法运算电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011601975.1A CN112667197B (zh) | 2020-12-29 | 2020-12-29 | 一种基于posit浮点数格式的参数化加减法运算电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112667197A CN112667197A (zh) | 2021-04-16 |
CN112667197B true CN112667197B (zh) | 2023-07-14 |
Family
ID=75410611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011601975.1A Active CN112667197B (zh) | 2020-12-29 | 2020-12-29 | 一种基于posit浮点数格式的参数化加减法运算电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667197B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117075842B (zh) * | 2023-08-25 | 2024-02-06 | 上海合芯数字科技有限公司 | 十进制加法器及十进制运算方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290732A (zh) * | 2020-03-03 | 2020-06-16 | 南京大学 | 基于posit数据格式的浮点数乘法运算电路 |
CN111538472A (zh) * | 2020-04-27 | 2020-08-14 | 西安交通大学 | 一种Posit浮点数的运算处理器以及运算处理*** |
CN111538473A (zh) * | 2020-04-27 | 2020-08-14 | 西安交通大学 | 一种Posit浮点数处理器 |
-
2020
- 2020-12-29 CN CN202011601975.1A patent/CN112667197B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290732A (zh) * | 2020-03-03 | 2020-06-16 | 南京大学 | 基于posit数据格式的浮点数乘法运算电路 |
CN111538472A (zh) * | 2020-04-27 | 2020-08-14 | 西安交通大学 | 一种Posit浮点数的运算处理器以及运算处理*** |
CN111538473A (zh) * | 2020-04-27 | 2020-08-14 | 西安交通大学 | 一种Posit浮点数处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN112667197A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4758972A (en) | Precision rounding in a floating point arithmetic unit | |
CN101263467B (zh) | 浮点规格化和反规格化 | |
US9608662B2 (en) | Apparatus and method for converting floating-point operand into a value having a different format | |
JP3178746B2 (ja) | 浮動小数点数のためのフォーマット変換装置 | |
US6175851B1 (en) | Fast adder/subtractor for signed floating point numbers | |
CN112463113B (zh) | 浮点加法单元 | |
CN111538473A (zh) | 一种Posit浮点数处理器 | |
JP3313560B2 (ja) | 浮動小数点演算処理装置 | |
US9059726B2 (en) | Apparatus and method for performing a convert-to-integer operation | |
CN116643718B (zh) | 一种流水线结构的浮点融合乘加装置、方法及处理器 | |
US5260889A (en) | Computation of sticky-bit in parallel with partial products in a floating point multiplier unit | |
CN112667197B (zh) | 一种基于posit浮点数格式的参数化加减法运算电路 | |
KR970073162A (ko) | 단일명령사이클에서 2정수의 절대차 산출방법 및 장치(Calculating the absolute difference of two integer numbers in a single instruction cycle) | |
CN113625989A (zh) | 数据运算装置、方法、电子设备及存储介质 | |
JP6290886B2 (ja) | 装飾構成に基づくモーダル区間計算 | |
JP3753275B2 (ja) | 最上位有効ビット位置予測方法 | |
CN1619484A (zh) | 浮点单元及计算指数的方法 | |
CN108153513B (zh) | 前导零预测 | |
US20200183650A1 (en) | Radix-1000 decimal floating-point numbers and arithmetic units using a skewed representation of the fraction | |
JP2558669B2 (ja) | 浮動小数点演算装置 | |
KR920003493B1 (ko) | 부동 소숫점 표기를 기초로 하는 연산회로 | |
KR101922462B1 (ko) | 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법 | |
US5710730A (en) | Divide to integer | |
CN112671411B (zh) | 一种基于ieee 754和posit的浮点数据格式的双向转换电路 | |
JP4439060B2 (ja) | 浮動小数点加算器 |
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 |