CN112671411B - 一种基于ieee 754和posit的浮点数据格式的双向转换电路 - Google Patents
一种基于ieee 754和posit的浮点数据格式的双向转换电路 Download PDFInfo
- Publication number
- CN112671411B CN112671411B CN202011605646.4A CN202011605646A CN112671411B CN 112671411 B CN112671411 B CN 112671411B CN 202011605646 A CN202011605646 A CN 202011605646A CN 112671411 B CN112671411 B CN 112671411B
- Authority
- CN
- China
- Prior art keywords
- unit
- format
- ieee754
- floating point
- field
- 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
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供的一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,由数据输入单元、IEEE 754格式字段提取单元、Posit格式字段提取单元、特殊字段探测单元、尾数再处理单元、指数计算单元、IEEE 754阶码重构单元、Posit指数重构单元、regime值计算单元、Posit格式编码单元、IEEE 754格式编码单元、结果编码输出单元搭建而成,实现了IEEE 754浮点数据格式向Posit数据格式的转换电路,也实现了Posit数据格式向IEEE 754格式的转换电路,IEEE 754浮点数据格式与Posit数据格式的双向转换电路有利于更好的利用不同浮点数数据格式的优缺点,根据不同的应用场景需求选择合适的浮点数据格式进行运算和存储。
Description
技术领域
本发明涉及计算机数据处理技术领域,更具体的,涉及一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路。
背景技术
浮点数在要求数据高精度的应用场景中是一种必须要用到的数据表示方法,如航空航天,医学,化学,军事等领域中,都大量的运用浮点数进行数据处理。
IEEE 754和Posit是两种不同标准的浮点数的数据格式。Posit数据格式表示方法更加灵活,可以根据应用场景的需求,对特定位宽的Posit数不同字段的位宽的分配进行调节,来得到想要的精度,以免造成对硬件资源的浪费。在相同位宽的情形下,Posit甚至可以达到比IEEE 754更高的精度,比IEEE 754更能满足对高精度的应用场景的需求。但是IEEE754在计算复杂度方面更低,且相同位宽情况下,运算速度也更快。
针对不同需求的应用场景,比如需要节省存储资源时,利用IEEE 754进行计算处理,但以posit数据格式进行存储,此时需要将IEEE 754浮点数据格式向Posit数据格式进行转换。如数据处理中有更高的精度要求,由于现在主流的浮点数格式还是IEEE 754,所以需要将IEEE 754格式转化为Posit格式后再进行计算处理。
公开号为CN111313906A的中国发明专利申请于2020年6月19日公开了一种浮点数转换电路,能够将posit数据格式的浮点数转换为IEEE 754数据格式的浮点数,但其无法实现IEEE 754和Posit两种不同标准数据格式的相互转化,不适用于很多应用场景。
发明内容
本发明为克服现有的浮点数转换电路存在无法实现IEEE 754和Posit两种不同标准数据格式的相互转化的技术缺陷,提供一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,既能满足从IEEE 754数据格式向Posit数据格式的转换,也能满足从Posit数据格式到IEEE 754数据格式的转化。注意,转换过程要求源转换格式与目标转换格式浮点数的位宽一致。
为解决上述技术问题,本发明的技术方案如下:
一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,包括以下部分:
数据输入单元,用于输入第一浮点数,所述第一浮点数可以是Posit数据格式,也可以是IEEE754数据格式。若所述第一浮点数为Posit格式,Posit数据格式的固定参数为<N,ES>,表示位宽为N位,指数宽度为ES的Posit数;若所述第一浮点数为IEEE 754格式,表示位宽为N的IEEE 754格式的浮点数。
IEEE 754格式字段提取单元,用于提取输入的IEEE 754格式的第一浮点数的不同字段,以用于后续的格式转换过程。
Posit格式字段提取单元,用于提取输入的Posit格式的第一浮点数的不同字段,以用于后续的格式转换过程。
特殊字段探测单元,其内部有两种针对不同的浮点数格式的特殊字段的探测电路,根据特定的转换过程选择对应的探测电路,用于探测第一浮点数的特殊字段组合表示出来的特殊浮点数值,如浮点数值0的字段。
尾数再处理单元,用于对提取单元提取出来的尾数字段进行再处理。
指数计算单元,用于计算IEEE 754格式浮点数的阶数值,同样有两种不同的计算电路,根据浮点数格式的转换方向不同,选择不同的计算方式。
IEEE 754阶码重构单元,用于重新构建IEEE 754数据格式浮点数的指数字段。
Posit指数重构单元,用于重新构建Posit格式浮点数的指数字段。
regime值计算单元,用于在转换过程中计算regime字段的值。
Posit格式编码单元,用于进行Posit格式的最终编码。
IEEE 754格式编码单元,用于进行IEEE 754格式的编码。
结果编码输出单元,用于输出由第一浮点数转换完成的目标浮点数编码格式,有两种不同进行结果编码输出的方式,根据浮点数格式的转换方向不同,选择不同的输出方式。
与现有技术相比,本发明技术方案的有益效果是:
本发明提供一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,实现了IEEE 754浮点数据格式向Posit数据格式的转换电路,也实现了Posit数据格式向IEEE 754格式的转换电路,IEEE 754浮点数据格式与Posit数据格式的双向转换电路有利于更好的利用不同浮点数数据格式的优缺点,根据不同的应用场景需求选择合适的浮点数据格式进行运算和存储。
附图说明
图1为是本申请实例中IEEE 754数据格式的示意图(以32位单精度浮点数为例);
图2为本申请实例中Posit数据格式的示意图;
图3为本申请基于IEEE 754和POSIT的浮点数据格式的双向转换电路结构示意图;
图4为由IEEE 754数据格式向Posit数据格式转换的电路结构示意图;
图5为DLS电路计算流程示意图;
图6是由Posit数据格式向IEEE 754数据格式转换的电路结构示意图;
其中:101、数据输入单元;102、IEEE 754格式字段提取单元;103、Posit格式字段提取单元;104、特殊字段探测单元;105、尾数再处理单元;106、指数计算单元;107、IEEE754阶码重构单元;108、Posit指数重构单元;109、regime值计算单元;110、Posit格式编码单元;111、IEEE 754格式编码单元;112、结果编码输出单元。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
IEEE 754是自上世纪80年代以来的主流浮点数运算标准。许多硬件浮点运算单元都是使用的该标准。该标准定义了包含有限数(包括有符号0和非规格化数),无限数,和特殊值(NaN)等数据格式。还定义了四种舍入原则和五种异常情况。IEEE中共有四种表示浮点数值的方式,分别是单精度(32位),双精度(64位),延伸单精度和延伸双精度。
如图1是IEEE 754数据格式的示意图。一个IEEE 754浮点数字段包含以下几个部分,分别是符号字段、指数字段、尾数字段。对于给定位宽的IEEE 754格式的浮点数,各个不同字段的宽度都是一个确定的数值。对于一个IEEE 754格式的浮点数来说,其浮点数值与格式的关系为:
value=(-1)s×2e×f;
s是符号位的值,e是指数值,f是包含了隐藏位的尾数段的值,对于规格化的IEEE754格式的浮点数来说,隐藏位为1,f=1+m,m是纯尾数段的值,e=E-Bias。E是指数段二进制编码的值,Bias只与浮点数的位宽有关。对于非规格化的IEEE 754格式的浮点数,f=m,e=1-Bias。若浮点数的位宽为n,Bias的值可用以下公式表示:
Bias=2(n-1)-1;
如图2所示为Posit数据格式示意图。Posit数据格式是浮点数的另一种表示形式,它的表示方式相对于IEEE 754来说更加灵活和简单。它只有一种舍入原则,就是舍入到最接近的值。表示的数据种类为有限数(不存在负零的情况),无限数(属于NaR)。确定一个Posit需要给定两个参数,分别是N和ES,N表示位宽,ES表示指数部分的最大位宽。如图2所示,为所述的Posit数的数据格式的示意图,Posit数包括以下字段:
符号段:代表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
如图3所示,本发明提供一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,包括数据输入单元101、IEEE 754格式字段提取单元102、Posit格式字段提取单元103、特殊字段探测单元104、尾数再处理单元105、指数计算单元106、IEEE 754阶码重构单元107、Posit指数重构单元108、regime值计算单元109、Posit格式编码单元110、IEEE 754格式编码单元111、结果编码输出单元112;其中:
所述数据输入单元101用于输入第一浮点数,所述第一浮点数是Posit数据格式或IEEE754数据格式;
所述IEEE 754格式字段提取单元102用于提取输入的IEEE 754格式的第一浮点数的不同字段,以用于后续的格式转换过程,其输出端与所述尾数再处理单元105输入端、指数计算单元106输入端电性连接;
所述Posit格式字段提取单元103用于提取输入的Posit格式的第一浮点数的不同字段,以用于后续的格式转换过程;其输出端与所述IEEE 754阶码重构单元107输入端、IEEE 754格式编码单元111输入端电性连接;
所述特殊字段探测单元104其内部有两种针对不同的浮点数格式的特殊字段的探测电路,根据特定的转换过程选择对应的探测电路,用于探测第一浮点数的特殊字段组合表示出来的特殊浮点数值,并传输至所述结果编码输出单元112或所述IEEE 754格式编码单元111;
所述尾数再处理单元105用于对IEEE 754格式字段提取单元102提取出来的尾数字段进行再处理,其输出端与所述指数计算单元106输入端、Posit格式编码单元110输入端电性连接;
所述指数计算单元106,用于计算IEEE 754格式浮点数的阶数值,有两种不同的计算电路,根据浮点数格式的转换方向不同,选择不同的计算方式;其输出端与所述Posit指数重构单元108输入端、regime值计算单元109输入端电性连接;
所述IEEE 754阶码重构单元107用于重新构建IEEE 754数据格式浮点数的指数字段,其输出端与所述IEEE 754格式编码单元111输入端电性连接;
所述Posit指数重构单元108用于重新构建Posit格式浮点数的指数字段,并将结果传输至所述Posit格式编码单元110;
所述regime值计算单元109用于在转换过程中计算regime字段的,并将结果传输至所述Posit格式编码单元110;
所述Posit格式编码单元110用于进行Posit格式的最终编码,并将编码结果传输至所述结果编码输出单元112;
所述IEEE 754格式编码单元111,用于进行IEEE 754格式的编码,并将编码结果传输至所述结果编码输出单元112;
所述结果编码输出单元112用于输出由第一浮点数转换完成的目标浮点数编码格式,有两种不同进行结果编码输出的方式,根据浮点数格式的转换方向不同,选择不同的输出方式。
更具体的,所述IEEE 754格式字段提取单元102包括逻辑或器件、拼接器件;其中:
当IEEE 754格式字段提取单元102接收到来自所述数据输入单元101的第一浮点数后,取IN的最高位即为浮点数的符号位s,然后取IN的次高位一直到宽度为ew的位数为止即为该浮点数的指数字段,即IN[N-2:N-1-ew],尾数字段除了IN最后的fw宽度的尾数字段外,用拼接器件在最高位加上隐藏位;最后利用逻辑或器件对IN的指数字段进行缩减或操作,获得隐藏位的值,完成IEEE 754格式的第一浮点数的不同字段的提取。
更具体的,所述Posit格式字段提取单元103包括拼接器件、异或电路、LOD电路、移位器件和逻辑或器件;其中:
当Posit格式字段提取单元103接收到来自所述数据输入单元101的第一浮点数后,首先取出第一浮点数编码中的最高位作为符号位,若前一步提取到的符号位为1,则将第一浮点数进行求补码操作;否则,不进行任何操作;即要确定该Posit数的绝对值的编码XIN1,宽度为N;求补码就是对IN1每一位取反后再加1;
取得第一浮点数绝对值编码XIN1后,将N-1个XIN1的次高位用所述拼接器件连接起来作为译码单元中的异或电路的其中一个输入数;另一个输入数来自于XIN1[N-2:0],也就是其次高位一直到最低位,将两个数通过所述异或电路进行异或操作后得到一个新的N位数RIN1;
从所述异或电路输出得到RIN1后,通过所述LOD电路,检测出RIN1中第一个为1的位所在的位置,也就是检测RIN1中前面的0的个数r;
将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字段;
使用所述逻辑或器件对输入IN[N-2:0]进行缩减或操作,若缩减或操作的结果为0,则说明Posit数对应的尾数字段的隐藏位为0,只有在这种情况下,Posit数尾数字段的隐藏位为0,其余正常情况下Posit格式尾数字段的隐藏位均为1;
然后将缩减或操作的结果与fraction字段拼接起来即可得到具有显式隐藏位的尾数字段Manta;并将计算结果传输至所述IEEE 754阶码重构单元107、IEEE754格式编码单元111。
更具体的,所述尾数再处理单元105包括LOD电路、DLS电路和拼接器件;其中:
所述LOD电路用于检测出一组二进制数中第一个1所在的位置,返回二进制数中第一个1所在的位置,对于规格化数,尾数字段最高位始终为1,所以不用进行任何移位操作;对于非规格化数,所述LOD电路返回的第一个1所在的位置即为该尾数应该移位的大小Lshift;
在得到尾数字段后,通过所述拼接器件将其与宽度为ew的0连接起来成为拓展的尾数,再用所述DLS电路将拓展的尾数左移Lshift个单位,将移位后的结果frac送入Posit格式编码单元110。
更具体的,所述指数计算单元106包括拼接器件、逻辑或器件和逻辑非器件;其中:
当指数计算单元106接收到所述IEEE 754格式字段提取单元102的指数字段以及所述尾数再处理单元105的Lshift参数后,先根据浮点数的位宽N计算出BIAS,对于指数字段都为0的非规格化IEEE浮点数,指数的计算公式为1-BIAS,规格化的浮点数的计算公式为e-BIAS,所以对于全零的指数段,要将指数段最低位变成1;
为了同时满足规格化和非规格化浮点数指数计算的要求,在指数计算之前先将指数字段用所述逻辑或器件进行缩减或操作,然后再将缩减或操作的结果用所述逻辑非器件取相反数,然后将该相反数与指数字段的最低位用所述逻辑或器件进行或操作,最后将该或操作的结果与指数字段剩下的位用所述拼接器件拼接器件连接起来,完成指数的计算。
更具体的,所述Posit指数重构单元108包括逻辑或器件;其中:
当Posit指数重构单元108接收到所述指数计算单元106计算完的指数值后,若指数值编码的最高位为1,则将指数值编码进行求补码操作,否则不进行任何操作,得到指数值的绝对值的编码En_value;
当指数值是负值时,E_value的最高位为1,用所述逻辑或器件对En_value的最低ES位进行缩减或操作,若结果不为0,则指数绝对值编码En_value最低ES位的求补码之后的结果即为转换之后的Posit数的指数字段ee;若E_value的最高位为0,则En_value的最低ES位即为所求得指数字段ee;最后将得到的结果传输至所述regime值计算单元109和所述Posit格式编码单元110;
在所述regime值计算单元109中对指数值的正负进行判断,若是指数值为负且En_value的最低ES位不是均为0,则regime值得绝对值r为En_value[E-1:ES]+1;若指数值为正值,则En_value[E-1:ES]字段即为regime的绝对值r。
更具体的,所述Posit格式编码单元110包括拼接器件和DRS电路;其中:
该单元接收到所述尾数再处理单元105、Posit指数重构单元108计算的各字段的编码和值之后,首先将N个E_value的最高位用所述拼接器件连接起来;然后将N个E_value的最高位的反码、E_value的最高位、指数字段ee、frac[N-2:ES]等宽度为2N的数用所述拼接器件连接起来组成临时数TRM;
此时,对于E_value是正值的情况,则将TRM通过所述DRS电路右移r+1位;若E_value是负值,将TRM通过所述DRS电路右移r位;此外,若是第一浮点数的符号位为1,需要将TRM进行求补码的操作之后才是目标浮点格式的编码,否则不进行任何操作;
根据第一浮点数符号位对TRM处理完成后,将符号位与TRM的最低N-1位拼接起来即为目标浮点格式编码,最后将目标浮点格式编码输出至所述结果编码输出单元112。
更具体的,所述IEEE 754阶码重构单元107包括拼接器件、加法器;其中:
当IEEE 754阶码重构单元107接收到来自所述Posit格式字段提取单元103提取到的regime的绝对值、exponent字段以及XIN时;
若XIN编码的次高位为1,则说明regime的值为正,则直接将regime的绝对值r与exponent用所述拼接器件连接后即为该Posit数计算表示的浮点数值时以2为底时指数值得大小scale,也就是要转换成IEEE 754格式所需要的指数值大小;接着计算BIAS值,将目标浮点数格式的阶码为scale加上BIAS值求得阶码E_out;
若XIN编码的次高位为0,则说明regime的值为负,则计算scale时需要先对r求补码,再将-r与exponent用拼接器件连接起来,然后接着加上BIAS即为所求得阶码E_out;
注意E_out宽度为ew+1,比原本为IEEE 754格式规定的阶码宽度多1;阶码的二进制编码所代表的是无符号二进制数,若多出的最高位为1,说明出现了溢出情况,当前阶码的宽度不足以容纳计算出来的阶码值所需要的宽度。这种情况下属于IEEE 754格式的无穷的情况;
最后将阶码E_out传输至所述IEEE 754格式编码单元111中。
更具体的,所述IEEE 754格式编码单元111包括逻辑或器件、逻辑与器件和拼接器件;其中:
所述IEEE 754格式编码单元111在接收到特殊字段探测单元104、Posit格式字段提取单元103、IEEE 754阶码重构单元107字段的处理结果后,根据不同情况得到对应的IEEE 754格式编码;
用所述逻辑或器件判断是否出现以下任意一种情况,特殊字段单元valid信号置高且探测到了无穷,或者E_out最高位为1,或者E_out除了最高位所有字段都为1;
若逻辑或操作结果为1,则说明目的浮点数格式为无穷,即根据IEEE 754中对于无穷的编码格式要求进行编码;若特殊字段探测到了零字段,则根据IEEE754对于零的编码格式要求进行编码;
若不满足以上几种情况都不是则用拼接器件将符号位,E_out的最低ew位,以及fraction[N-2:ew]连接起来即为目标浮点数编码;最后将目标浮点格式编码输出至所述结果编码输出单元112。
更具体的,所述特殊字段探测单元104包括Posit数据格式探测电路和IEEE754特殊字段探测电路;其中:
所述IEEE 754特殊字段探测电路包括逻辑与器件、逻辑非器件;该探测电路收到来自所述IEEE 754格式字段提取单元102中各字段及IN后,需要探测出IEEE 754浮点数格式的两种特殊情况,分别是浮点数值0和无穷;IEEE 754数据格式中是用除了符号位之外,剩下的所有位均为0来表示正零和负零两种符号不同的零的;因此用所述逻辑或器件对IN除了符号位剩下的所有位进行缩减或操作,然后再对缩减或操作的结果用所述逻辑非器件取反,若该值为1,则说明IN[N-2:0]为全0;IEEE 754数据格式中对于无穷的定义为阶码处均为1,所以运用所述逻辑与器件对IN的指数字段进行缩减与操作,探测接收的第一浮点数是否为无穷;所述特殊字段探测单元104中设置有一个valid信号,若是探测到以上两种为0或者为无穷的任意一种特殊字段的情况,则会将该valid信号拉高并将当前探测结果直接送入所述结果编码输出单元112;
所述Posit数据格式探测电路包括逻辑或器件、逻辑非器件、逻辑与器件;该探测电路收到来自所述Posit格式字段提取单元103的字段;Posit数据格式中只有两种特殊字段,分别是全0字段的浮点数0和除了最高位是1其余字段均为0的无穷;用所述逻辑非器件对IN进行缩减或后再取反,若结果为1则说明IN为全0字段的浮点数0;然后通过所述逻辑与器件判断输入的第一浮点数IN是否同时满足最高位为1且其余字段均为0这两个要求;浮点数0和无穷任意一种情况的出现都会置高所述特殊字段探测单元104内部的valid信号,并将探测结果直接送入所述IEEE 754格式编码单元111中。
在具体实施过程中,本发明提供基于IEEE 754和POSIT的浮点数据格式的双向转换电路,实现了IEEE 754浮点数据格式向Posit数据格式的转换电路,也实现了Posit数据格式向IEEE 754格式的转换电路,IEEE 754浮点数据格式与Posit数据格式的双向转换电路有利于更好的利用不同浮点数数据格式的优缺点,根据不同的应用场景需求选择合适的浮点数据格式进行运算和存储。
实施例2
更具体的,如图6所示,给出了本实施例由IEEE 754数据格式向Posit数据格式进行转换的电路结构示意图。该电路结构中包含了数据输入单元101,IEEE754格式字段提取单元102,特殊字段探测单元104,尾数再处理单元105,指数计算单元106,Posit指数重构单元108,regime值计算单元109,Posit格式编码单元110,结果编码输出单元112。
由数据输入单元101输入要进行格式转换的IEEE 754格式的第一浮点数,并将输入的第一浮点数送入IEEE 754格式字段提取单元102,此处假设第一浮点数的位宽为N,其所对定的指数字段的宽度为ew,尾数字段的宽度为fw,输入的第一浮点数为IN。要转换的目的Posit数的位宽为N,指数宽度为ES。所以:N=1+ew+fw;
IEEE 754格式字段提取单元102,包括逻辑或器件,拼接器件,接收到来自数据输入单元101的第一浮点数后,取IN的最高位即为浮点数的符号位s,然后取IN的次高位一直到宽度为ew的位数为止即为该浮点数的指数字段,即IN[N-2:N-1-ew],尾数字段除了IN最后的fw宽度的尾数字段外,还要用拼接器件在最高位加上隐藏位。隐藏位根据浮点数是否规格化,分为0和1两种不同的结果。对于指数字段为全0的浮点数,属于非规格化浮点数,它的隐藏位为0;对于指数字段不是全0的浮点数(全1属于另一种特殊值的情况,单独进行处理),属于规格化数,它的隐藏位为1。所以利用逻辑或器件对IN的指数字段进行缩减或操作即可获得隐藏位的值。
特殊字段探测单元104,选择IEEE 754特殊字段的探测电路,包括逻辑与器件,逻辑非器件。该单元接收到来自字段提取单元中各字段及IN后,需要探测出IEEE 754浮点数格式的两种特殊情况,分别是浮点数值0和无穷。IEEE 754数据格式中是用除了符号位之外,剩下的所有位均为0来表示正零和负零两种符号不同的零的。所以先用逻辑或器件对IN除了符号位剩下的所有位(IN[N-2:0])进行缩减或操作,然后再对缩减或操作的结果用逻辑非器件取反,若该值为1,则说明IN[N-2:0]为全0。IEEE 754中对于无穷的定义为阶码处均为1,所以运用逻辑与器件对IN的指数字段进行缩减与操作,即可探测接收的第一浮点数是否为无穷。特殊字段探测单元中设置有一个valid信号,若是探测到以上两种为0或者为无穷的任意一种特殊字段的情况,则会将该valid信号拉高。特殊字段探测单元104会将当前探测结果直接送入结果编码单元110。该单元的存在可以使得迅速检测到第一浮点数的特殊编码数据类型,更加直接迅速的转换为对应的Posit数据类型。
尾数再处理单元105,包括LOD电路(前导1检测电路),DLS电路(Dynamic LeftShift,动态左移电路),拼接器件。LOD电路用于检测出一组二进制数中第一个1所在的位置。对于IEEE 754标准中的非规格化数,它的尾数段的隐藏位为0,而在Posit数据格式中,尾数的隐藏位始终为1,所以在由IEEE 754向Posit进行格式转换的时候,对于IEEE 754数据格式的非规格化数,它由字段提取单元提取出来的尾数部分的最高位为0(即隐藏位为0),要将该尾数字段进行移位操作使得最高位(隐藏位所在位置)为1,这样才符合Posit数据格式中对于尾数字段的定义方式。LOD电路可以返回二进制数中第一个1所在的位置,对于规格化数,尾数字段最高位始终为1,所以不用进行任何移位操作;对于非规格化数,LOD电路返回的第一个1所在的位置即为该尾数应该移位的大小Lshift。所以采用LOD电路对IEEE 754格式字段提取单元提取出来的尾数字段进行探测可以使得所有尾数字段变成带有隐藏位1的规格化数。为了使得移位过后浮点数值不变,要将该Lshift值传入指数计算单元106,用于调整指数的大小。DLS电路全称为动态左移电路,它可以接收不同宽度的二进制数,并对其作出不同大小的左移,核心还是由移位器组成,只是加了针对具体移位大小二进制数值中的每一位的判断逻辑。电路的核心计算流程如图5所示。例如,若二进制数宽度为8,若移位的大小为101(宽度为log2(N)),则有一个临时变量矩阵TEMP[2:0][7:0]用于存储进行每一次移位过后的二进制数,移位的次数取决于移位大小二进制数的宽度。从移位大小的最低位开始进行判断,若为0,则TEMP[0]的值为原本输入的二进制数,否则,将二进制数左移2^0位;然后判断移位大小的次低位,若该位为1,TEMP[1]的值为TEMP[0]左移2^1位,否则TEMP[1]的值还是TEMP[0]的值,如此继续直到判断到移位次数二进制的最高位,最终的移位结果就是最后得到的TEMP的值。对于要进行1012次左移的宽度为8二进制数101001112,TMP[0]为010011102,TMP[1]为010011102,TMP[3]为111000002,所以TMP[3]就是最终的移位结果。DLS的存在说明格式转换电路结构完全可以接收不同位宽的IEEE 754格式进行格式转换,满足多精度的格式转换要求。在得到尾数字段后,先用拼接器件将其与宽度为ew的0连接起来成为拓展的尾数,再用DLS电路将拓展的尾数左移Lshift个单位,将移位后的结果frac送入Posit格式编码单元。
指数计算单元106,包括拼接器件,逻辑或器件,逻辑非器件,减法器,接收到字段提取单元的指数字段以及尾数再处理单元的Lshift参数后,先根据浮点数的位宽N计算出BIAS。特别注意的是,对于指数字段都为0的非规格化IEEE浮点数,指数的计算公式为1-BIAS,规格化的浮点数的计算公式为e-BIAS,所以对于全零的指数段,要将指数段最低位变成1。为了同时满足规格化和非规格化浮点数指数计算的要求,在指数计算之前先将指数字段用逻辑或器件进行缩减或操作,然后再将缩减或操作的结果用逻辑非器件取相反数,然后将该相反数与指数字段的最低位用逻辑或器件进行或操作,最后将该或操作的结果与指数字段剩下的位用拼接器件连接起来。所述操作过程可以用下式表达:
Exp={Exp[ew-1:1],Exp[0]|(!(|Exp[ew:0]))}
Exp表示指数字段,{}表示拼接符号。
完成指数字段的处理后,再用当前处理完成的Exp字段的值减去BIAS和尾数再处理单元传来Lshift的值之后得到当前浮点数的指数值。用公式表示为:
E_value[ew:0]=Exp[ew-1:0]-BIAS-Lshift
E_value即为计算得到的指数值,E_value的宽度为ew+1,比原本的指数字段的宽度多1,该位用来接收溢出的位,可以表示出当前指数值的符号。
Posit指数重构单元108,包括逻辑非器件,逻辑与器件,加法器。该单元接收到指数计算单元106计算完的指数值后,若指数值编码的最高位为1,则将指数值编码进行求补码操作,否则不进行任何操作,如此可以得到指数值的绝对值的编码En_value。由于Posit数中指数字段始终为无符号整数,若Posit的指数是负值,一定是来源于regime字段。所以当指数计算单元106计算的结果是负值时,即E_value的最高位为1,用逻辑或器件对En_value的最低ES位进行缩减或操作,若结果不为0,则指数绝对值编码En_value最低ES位的求补码之后的结果即为转换之后的Posit数的指数字段ee。要进行缩减或操作的原因是,若是指数字段均为0,求补码结果还是0,不必再进行多一步的操作。若是E_value的最高位为0,则En_value的最低ES位即为所求得指数字段ee。
regime值计算单元109,包含逻辑与器件,逻辑或器件,逻辑非器件。如前所述,regime值与指数值得正负的关系很大。所以需要先对指数值的正负进行判断。若是指数值为负且En_value的最低ES位不是均为0,则regime值得绝对值r为En_value[E-1:ES]+1,要进行加1是因为当指数值为负时,在求En_value的求补操作时的加1加在了指数段,regime字段进行的是求反操作,regime值一定是负值,所以求绝对值时还要进行加1。根据Posit数据格式对于regime字段的定义要求,负值的regime对应得是00…1形式。若指数值为正值,则En_value[E-1:ES]字段即为regime的绝对值r,正值的regime在编码中对应的是11…0形式。
Posit格式编码单元110,包括拼接器件,DRS电路(Dynamic shift Right,动态右移电路),加法器,逻辑非器件。该单元接收到之前所述单元计算的各字段的编码和值之后,首先将N个E_value的最高位用拼接器件连接起来,因为regime字段的起始位与E_value的符号位是相反的,所以regime正常的终止位即为E_value的符号位。然后将N个E_value的最高位的反码,E_value的最高位,指数字段ee,frac[N-2:ES]等宽度为2N的数用拼接器件连接起来组成临时数TRM。用数学表达式为:
TRM[2*N-1:0]={N{~E_value[MSB]},E_value[MSB],ee,frac[N-2:ES]}
DRS电路结构类似于DLS电路,都是能够数据输入二进制位宽以及移位大小的不同对其作出相应移位的电路模块。核心器件还是移位器件,移位的方向由左移换成了右移。对于E_value是正值的情况,将TRM通过DRS电路右移r+1位;若E_value是负值,将TRM通过DRS右移r位。如之前所述,E_value的正负代表了regime值得正负,而正regime中连续的1个数为regime绝对值加1,负regime中连续的0个数为regime绝对值,所以两者移位的宽度相差1。此外,若是第一浮点数的符号位为1,还要将TRM进行求补码的操作之后才是目标浮点格式的编码,否则不进行任何操作。根据第一浮点数符号位对TRM处理完成后,将符号位与TRM的最低N-1位拼接起来即为目标浮点格式编码。
结果编码输出单元112,接收来自目标格式编码单元的编码结果以及特殊字段探测单元的结果,若特殊字段探测单元valid信号置高,则根据特殊字段探测单元的结果进行输出。若特殊字段探测单元探测第一浮点数为0,则根据Posit数中对于0的编码要求,将宽度为N的全0字段作为编码结果输出。若特殊字段探测单元探测的第一浮点数为无穷,则根据Posit数中对于无穷的编码要求,将最高位为1其余字段均为0的N位二进制数作为编码结果输出。若没有接收到valid信号,则根据目标格式编码单元的结果输出。
实施例3
在上述实施例的基础上,如图4所示,给出了本实施例由Posit数据格式向IEEE754数据格式进行转换的电路结构示意图。除了上述实施例的数据输入单元101,特别字段探测单元104,结果编码输出单元112,本实施例还包括Posit格式字段提取单元103,IEEE754阶码重构单元107,IEEE 754格式编码单元111。
数据输入单元101的输入变成待转换的位宽为N,指数宽度为ES的Posit数据格式的第一浮点数IN,目的浮点数格式为IEEE 754,指数字段(阶码)宽度为ew,尾数字段宽度为fw。
Posit格式字段提取单元103,包含了拼接器件,异或电路,LOD电路,移位器件,加法器等等。该单元接收到第一浮点数后,开始对其进行字段作。103单元包括首先取出第一浮点数编码中的最高位作为符号位。
若前一步提取到的符号位为1,则将第一浮点数进行求补码操作;否则,不进行任何操作,也就是说,要确定该Posit数的绝对值的编码XIN1,宽度为N。求补码就是对IN1每一位取反后再加1。
取得第一浮点数绝对值编码XIN1后,将N-1个XIN1的次高位用拼接器件连接起来作为译码单元中的异或电路的其中一个输入数,因为XIN1的次高位可以知道该posit数regime字段的正负性。另一个输入数来自于XIN1[N-2:0],也就是其次高位一直到最低位,将两个数进行异或操作后得到一个新的N位数RIN1。进行异或操作的目的是为了能够使得不管是正的regime字段还是负的regime字段都可以利用该单元中的LOD电路(前导1检测电路)获得它的值。假设XIN1的次高位是1,即正的regime字段,经过异或电路后,次高位的1与XIN1中为1的regime序列运算结果为0;假设XIN1的次高位是0,即负的regime序列,经过异或电路后,次高位的0与XIN1中为0的regime序列运算结果为0。由此可以看出,对于正的regime序列,会将原本的11…0转化成00…1,负的regime序列不会变化,这样操作可以保证只需用到LOD单元,而不需要再多采用LZD单元(前导零检测电路),节省电路面积。
从异或电路输出得到RIN1后,通过单元中的LOD电路,它可以检测出来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字段。
Posit数据格式中尾数字段的隐藏位始终为1,而IEEE 754格式尾数字段的隐藏位取决于是否规格化。使用逻辑或器件对输入IN[N-2:0]进行缩减或操作,若缩减或操作的结果为0,则说明Posit数对应的尾数字段的隐藏位为0,只有在这种情况下,Posit数尾数字段的隐藏位为0,其余正常情况下Posit格式尾数字段的隐藏位均为1。然后将缩减或操作的结果与fraction字段拼接起来即可得到具有显式隐藏位的尾数字段Manta。
特殊字段探测单元104,选择Posit数据格式探测电路,包括逻辑或器件,逻辑非器件,逻辑与器件,Posit数据格式中只有两种特殊字段,分别是全0字段的浮点数0和除了最高位是1其余字段均为0的无穷。用逻辑非器件对IN进行缩减或后再取反,若结果为1则说明IN为全0字段的浮点数0。然后通过逻辑与器件判断输入的第一浮点数IN是否同时满足最高位为1且其余字段均为0这两个要求。浮点数0和无穷任意一种情况的出现都会置高单元内部的valid信号,特殊字段探测单元的探测结果会送入IEEE 754格式编码单元111。
IEEE 754阶码重构单元107,包括拼接器件,加法器,它接收到来自Posit格式字段提取单元103提取到的regime的绝对值,exponent字段以及XIN。首先根据XIN编码的次高位确定regime值得正负。若XIN编码的次高位为1,则说明regime的值为正,则直接将regime的绝对值r与exponent用拼接器件连接起来后即为该Posit数计算表示的浮点数值时以2为底时指数值得大小scale,也就是要转换成IEEE 754格式所需要的指数值大小。根据所述的IEEE 754格式指数值的计算方式,目标浮点数格式的阶码为scale加上BIAS值。BIAS值计算方式之前已提到过,此处不再赘述。若XIN编码的次高位为0,则说明regime的值为负,则计算scale时需要先对r求补码,再将-r与exponent用拼接器件连接起来,然后接着加上BIAS即为所求得阶码E_out。注意E_out宽度为ew+1,比原本为IEEE 754格式规定的阶码宽度多1。阶码的二进制编码所代表的是无符号二进制数,若多出的最高位为1,说明出现了溢出情况,当前阶码的宽度不足以容纳计算出来的阶码值所需要的宽度。这种情况下属于IEEE754格式的无穷的情况。将107单元重构的阶码E_out传入IEEE 754格式编码单元110。
IEEE 754格式编码单元111,包括逻辑或器件,逻辑与器件,拼接器件,该单元在接收到特殊字段探测单元,Posit格式字段提取单元,IEEE 754阶码重构单元等字段的处理结果后,根据不同情况得到对应的IEEE 754格式编码。用逻辑或器件判断是否出现以下任意一种情况,特殊字段单元valid信号置高且探测到了无穷,或者E_out最高位为1,或者E_out除了最高位所有字段都为1(用逻辑与器件对其进行缩减与操作)。若逻辑或操作结果为1,则说明目的浮点数格式为无穷,即根据IEEE 754中对于无穷的编码格式要求进行编码。若特殊字段探测到了零字段,则根据IEEE 754对于零的编码格式要求进行编码。以上几种情况都不是则用拼接器件将符号位,E_out的最低ew位,以及fraction[N-2:ew]连接起来即为目标浮点数编码。
结果编码输出单元112,选择Posit格式向IEEE 754格式转换时的编码输出方式,直接将目标浮点数编码格式单元的结果输出。
本申请中的电路结构支持Posit格式和IEEE 754格式的相互转换。不管是IEEE754格式向Posit格式转换电路,还是Posit格式向IEEE 754格式的转换电路,在两者共同的电路模块单元中,由于实现时的细节不一样,内部的电路结构还是有些不一样。所以要根据格式转换的方向选择内部对应的电路结构。为了实现这种选择功能,可以添加一位输入的第一浮点数的宽度,用最高位来表示选择哪种电路结构。例如,若输入的第一浮点数的最高位为1,则选择IEEE 754向Posit数据格式转换的内部电路结构;若输入的第一浮点数的最高位为0,则选择Posit向IEEE 754格式转换的内部电路结构。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,其特征在于,包括数据输入单元(101)、IEEE 754格式字段提取单元(102)、Posit格式字段提取单元(103)、特殊字段探测单元(104)、尾数再处理单元(105)、指数计算单元(106)、IEEE 754阶码重构单元(107)、 Posit 指数重构单元(108)、regime值计算单元(109)、 Posit格式编码单元(110)、IEEE 754格式编码单元(111)、结果编码输出单元(112);其中:
所述数据输入单元(101)用于输入第一浮点数,所述第一浮点数是Posit数据格式或IEEE754数据格式;
所述IEEE 754格式字段提取单元(102)用于提取输入的IEEE 754格式的第一浮点数的不同字段,以用于后续的格式转换过程,其输出端与所述尾数再处理单元(105)输入端、指数计算单元(106)输入端电性连接;
所述Posit格式字段提取单元(103)用于提取输入的Posit格式的第一浮点数的不同字段,以用于后续的格式转换过程;其输出端与所述IEEE 754阶码重构单元(107)输入端、IEEE754格式编码单元(111)输入端电性连接;
所述特殊字段探测单元(104)其内部有两种针对不同的浮点数格式的特殊字段的探测电路,根据特定的转换过程选择对应的探测电路,用于探测第一浮点数的特殊字段组合表示出来的特殊浮点数值,并传输至所述结果编码输出单元(112)或所述IEEE754格式编码单元(111);
所述尾数再处理单元(105)用于对IEEE754格式字段提取单元(102)提取出来的尾数字段进行再处理,其输出端与所述指数计算单元(106)输入端、Posit格式编码单元(110)输入端电性连接;
所述指数计算单元(106),用于计算IEEE 754格式浮点数的阶数值,有两种不同的计算电路,根据浮点数格式的转换方向不同,选择不同的计算方式;其输出端与所述 Posit 指数重构单元(108)输入端、regime值计算单元(109)输入端电性连接;
所述IEEE 754阶码重构单元(107)用于重新构建IEEE 754数据格式浮点数的指数字段,其输出端与所述IEEE 754格式编码单元(111)输入端电性连接;
所述Posit 指数重构单元(108)用于重新构建Posit格式浮点数的指数字段,并将结果传输至所述Posit格式编码单元(110);
所述regime值计算单元(109)用于在转换过程中计算regime字段的,并将结果传输至所述Posit格式编码单元(110);
所述 Posit格式编码单元(110)用于进行Posit格式的最终编码,并将编码结果传输至所述结果编码输出单元(112);
所述IEEE 754格式编码单元(111),用于进行IEEE 754格式的编码,并将编码结果传输至所述结果编码输出单元(112);
所述结果编码输出单元(112)用于输出由第一浮点数转换完成的目标浮点数编码格式,有两种不同进行结果编码输出的方式,根据浮点数格式的转换方向不同,选择不同的输出方式。
2.根据权利要求1所述的一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,其特征在于,所述IEEE 754格式字段提取单元(102)包括逻辑或器件、拼接器件;其中:
当IEEE 754格式字段提取单元(102)接收到来自所述数据输入单元(101)的第一浮点数后,取IN的最高位即为浮点数的符号位s,然后取IN的次高位一直到宽度为ew的位数为止即为该浮点数的指数字段,即IN[N-2:N-1-ew],尾数字段除了IN最后的fw宽度的尾数字段外,用拼接器件在最高位加上隐藏位;最后利用逻辑或器件对IN的指数字段进行缩减或操作,获得隐藏位的值,完成IEEE 754格式的第一浮点数的不同字段的提取。
3.根据权利要求1所述一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,其特征在于,所述Posit格式字段提取单元(103)包括拼接器件、异或电路、LOD电路、移位器件和逻辑或器件;其中:
当Posit格式字段提取单元(103)接收到来自所述数据输入单元(101)的第一浮点数后,首先取出第一浮点数编码中的最高位作为符号位,若前一步提取到的符号位为1,则将第一浮点数进行求补码操作;否则,不进行任何操作;即要确定该Posit数的绝对值的编码XIN1,宽度为N;求补码就是对IN1每一位取反后再加1;
取得第一浮点数绝对值编码XIN1后,将N-1个XIN1的次高位用所述拼接器件连接起来作为译码单元中的异或电路的其中一个输入数;另一个输入数来自于XIN1[N-2:0],也就是其次高位一直到最低位,将两个数通过所述异或电路进行异或操作后得到一个新的N位数RIN1;
从所述异或电路输出得到RIN1后,通过所述LOD电路,检测出RIN1中第一个为1的位所在的位置,也就是检测RIN1中前面的0的个数r;
将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字段;
使用所述逻辑或器件对输入IN[N-2:0]进行缩减或操作,若缩减或操作的结果为0,则说明Posit数对应的尾数字段的隐藏位为0,只有在这种情况下,Posit数尾数字段的隐藏位为0,其余正常情况下Posit格式尾数字段的隐藏位均为1;
然后将缩减或操作的结果与fraction字段拼接起来即可得到具有显式隐藏位的尾数字段Manta;并将计算结果传输至所述IEEE 754阶码重构单元(107)、IEEE754格式编码单元(111)。
4.根据权利要求2所述的一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,其特征在于,所述尾数再处理单元(105)包括LOD电路、DLS电路和拼接器件;其中:
所述LOD电路用于检测出一组二进制数中第一个1所在的位置,返回二进制数中第一个1所在的位置,对于规格化数,尾数字段最高位始终为1,所以不用进行任何移位操作;对于非规格化数,所述LOD电路返回的第一个1所在的位置即为该尾数应该移位的大小Lshift;
在得到尾数字段后,通过所述拼接器件将其与宽度为ew的0连接起来成为拓展的尾数,再用所述DLS电路将拓展的尾数左移Lshift个单位,将移位后的结果frac送入Posit格式编码单元(110)。
5.根据权利要求4所述的一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,其特征在于,所述指数计算单元(106)包括拼接器件、逻辑或器件和逻辑非器件;其中:
当指数计算单元(106)接收到所述IEEE 754格式字段提取单元(102)的指数字段以及所述尾数再处理单元(105)的Lshift参数后,先根据浮点数的位宽N计算出BIAS,对于指数字段都为0的非规格化IEEE浮点数,指数的计算公式为1-BIAS,规格化的浮点数的计算公式为e-BIAS,所以对于全零的指数段,要将指数段最低位变成1;其中,BIAS表示浮点数的偏置值,e表示浮点数阶码段的二进制值;
为了同时满足规格化和非规格化浮点数指数计算的要求,在指数计算之前先将指数字段用所述逻辑或器件进行缩减或操作,然后再将缩减或操作的结果用所述逻辑非器件取相反数,然后将该相反数与指数字段的最低位用所述逻辑或器件进行或操作,最后将该或操作的结果与指数字段剩下的位用所述拼接器件拼接器件连接起来,完成指数的计算。
6.根据权利要求5所述的一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,其特征在于,所述Posit指数重构单元(108)包括逻辑或器件;其中:
当Posit指数重构单元(108)接收到所述指数计算单元(106)计算完的指数值后,若指数值编码的最高位为1,则将指数值编码进行求补码操作,否则不进行任何操作,得到指数值的绝对值的编码En_value;
当指数值是负值时,E_value的最高位为1,用所述逻辑或器件对En_value的最低ES位进行缩减或操作,若结果不为0,则指数绝对值编码En_value最低ES位的求补码之后的结果即为转换之后的Posit数的指数字段ee;若E_value的最高位为0,则En_value的最低ES位即为所求得指数字段ee;最后将得到的结果传输至所述regime值计算单元(109)和所述Posit格式编码单元(110);
在所述regime值计算单元(109)中对指数值的正负进行判断,若是指数值为负且En_value的最低ES位不是均为0,则regime值得绝对值r为En_value[E-1:ES]+1;若指数值为正值,则En_value[E-1:ES]字段即为regime的绝对值r。
7.根据权利要求6所述的一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,其特征在于,所述Posit格式编码单元(110)包括拼接器件和DRS电路;其中:
该单元接收到所述尾数再处理单元(105)、Posit指数重构单元(108)计算的各字段的编码和值之后,首先将N个E_value的最高位用所述拼接器件连接起来;然后将N个E_value的最高位的反码、E_value的最高位、指数字段ee、frac[N-2:ES]等宽度为2N的数用所述拼接器件连接起来组成临时数TRM;
此时,对于E_value是正值的情况,则将TRM通过所述DRS电路右移r+1位;若E_value是负值,将TRM通过所述DRS电路右移r位;此外,若是第一浮点数的符号位为1,需要将TRM进行求补码的操作之后才是目标浮点格式的编码,否则不进行任何操作;
根据第一浮点数符号位对TRM处理完成后,将符号位与TRM的最低N-1位拼接起来即为目标浮点格式编码,最后将目标浮点格式编码输出至所述结果编码输出单元(112)。
8.根据权利要求3所述的一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,其特征在于,所述 IEEE 754阶码重构单元(107)包括拼接器件、加法器;其中:
当 IEEE 754阶码重构单元(107)接收到来自所述Posit格式字段提取单元(103)提取到的regime的绝对值、exponent字段以及XIN时;
若XIN编码的次高位为1,则说明regime的值为正,则直接将regime的绝对值r 与exponent用所述拼接器件连接后即为该Posit数计算表示的浮点数值时以2为底时指数值得大小scale,也就是要转换成IEEE 754格式所需要的指数值大小;接着计算BIAS值,将目标浮点数格式的阶码为scale加上BIAS值求得阶码E_out;其中,BIAS表示浮点数的偏置值;
若XIN编码的次高位为0,则说明regime的值为负,则计算scale时需要先对r求补码,再将-r与exponent用拼接器件连接起来,然后接着加上BIAS即为所求得阶码E_out;
注意E_out宽度为ew+1,比原本为IEEE 754格式规定的阶码宽度多1;阶码的二进制编码所代表的是无符号二进制数,若多出的最高位为1,说明出现了溢出情况,当前阶码的宽度不足以容纳计算出来的阶码值所需要的宽度,这种情况下属于IEEE 754格式的无穷的情况;
最后将阶码E_out传输至所述IEEE 754格式编码单元(111)中。
9.根据权利要求8所述的一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,其特征在于,所述IEEE 754格式编码单元(111)包括逻辑或器件、逻辑与器件和拼接器件;其中:
所述IEEE 754格式编码单元(111)在接收到特殊字段探测单元(104)、Posit格式字段提取单元(103)、IEEE 754阶码重构单元(107)字段的处理结果后,根据不同情况得到对应的IEEE 754格式编码;
用所述逻辑或器件判断是否出现以下任意一种情况,特殊字段单元valid信号置高且探测到了无穷,或者E_out最高位为1,或者E_out除了最高位所有字段都为1;
若逻辑或操作结果为1,则说明目的浮点数格式为无穷,即根据IEEE 754中对于无穷的编码格式要求进行编码;若特殊字段探测到了零字段,则根据IEEE 754对于零的编码格式要求进行编码;
若不满足如果不满足逻辑或操作结果为1或者特殊字段探测到了零字段这两种情况,则用拼接器件将符号位,E_out的最低ew位,以及fraction[N-2:ew]连接起来即为目标浮点数编码;最后将目标浮点格式编码输出至所述结果编码输出单元(112)。
10.根据权利要求2~9任一项所述的一种基于IEEE 754和POSIT的浮点数据格式的双向转换电路,其特征在于,所述特殊字段探测单元(104)包括Posit数据格式探测电路和IEEE754特殊字段探测电路;其中:
所述IEEE 754特殊字段探测电路包括逻辑与器件、逻辑非器件;该探测电路收到来自所述IEEE 754格式字段提取单元(102)中各字段及IN后,需要探测出IEEE 754浮点数格式的两种特殊情况,分别是浮点数值0和无穷;IEEE754数据格式中是用除了符号位之外,剩下的所有位均为0来表示正零和负零两种符号不同的零的;因此用所述逻辑或器件对IN除了符号位剩下的所有位进行缩减或操作,然后再对缩减或操作的结果用所述逻辑非器件取反,若该值为1,则说明IN[N-2:0]为全0;IEEE 754数据格式中对于无穷的定义为阶码处均为1,所以运用所述逻辑与器件对IN的指数字段进行缩减与操作,探测接收的第一浮点数是否为无穷;所述特殊字段探测单元(104)中设置有一个valid信号,若是探测到以上两种为0或者为无穷的任意一种特殊字段的情况,则会将该valid信号拉高并将当前探测结果直接送入所述结果编码输出单元(112);
所述Posit数据格式探测电路包括逻辑或器件、逻辑非器件、逻辑与器件;该探测电路收到来自所述 Posit格式字段提取单元(103)的字段;Posit数据格式中只有两种特殊字段,分别是全0字段的浮点数0和除了最高位是1其余字段均为0的无穷;用所述逻辑非器件对IN进行缩减或后再取反,若结果为1则说明IN为全0字段的浮点数0;然后通过所述逻辑与器件判断输入的第一浮点数IN是否同时满足最高位为1且其余字段均为0这两个要求;浮点数0和无穷任意一种情况的出现都会置高所述特殊字段探测单元(104)内部的valid信号,并将探测结果直接送入所述IEEE 754格式编码单元(111)中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011605646.4A CN112671411B (zh) | 2020-12-29 | 2020-12-29 | 一种基于ieee 754和posit的浮点数据格式的双向转换电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011605646.4A CN112671411B (zh) | 2020-12-29 | 2020-12-29 | 一种基于ieee 754和posit的浮点数据格式的双向转换电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112671411A CN112671411A (zh) | 2021-04-16 |
CN112671411B true CN112671411B (zh) | 2023-04-18 |
Family
ID=75410810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011605646.4A Active CN112671411B (zh) | 2020-12-29 | 2020-12-29 | 一种基于ieee 754和posit的浮点数据格式的双向转换电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671411B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628589A (zh) * | 2017-03-24 | 2018-10-09 | 畅想科技有限公司 | 浮点到定点转换 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2865643B2 (ja) * | 1996-05-14 | 1999-03-08 | 株式会社東芝 | 再生状態に応じて副映像を強制的に再現させることが可能なビデオデータが格納されている記録媒体及びその再生システム |
US8638850B2 (en) * | 2009-05-06 | 2014-01-28 | Advanced Micro Devices, Inc. | Execution units for context adaptive binary arithmetic coding (CABAC) |
CN105634499B (zh) * | 2015-12-30 | 2020-12-01 | 广东工业大学 | 一种基于新短浮点型数据的数据转换方法 |
US10778245B1 (en) * | 2019-08-20 | 2020-09-15 | Micron Technology, Inc. | Bit string conversion |
CN111290732B (zh) * | 2020-03-03 | 2023-03-14 | 南京大学 | 基于posit数据格式的浮点数乘法运算电路 |
CN111313906B (zh) * | 2020-03-03 | 2023-11-07 | 南京大学 | 一种浮点数的转换电路 |
CN111538473B (zh) * | 2020-04-27 | 2023-05-30 | 西安交通大学 | 一种Posit浮点数处理器 |
CN111538472B (zh) * | 2020-04-27 | 2022-11-04 | 西安交通大学 | 一种Posit浮点数的运算处理器以及运算处理系统 |
-
2020
- 2020-12-29 CN CN202011605646.4A patent/CN112671411B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628589A (zh) * | 2017-03-24 | 2018-10-09 | 畅想科技有限公司 | 浮点到定点转换 |
Also Published As
Publication number | Publication date |
---|---|
CN112671411A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4758972A (en) | Precision rounding in a floating point arithmetic unit | |
CN107769791B (zh) | 用于定点到浮点的转换的装置和方法及2的负幂检测器 | |
CN111538473B (zh) | 一种Posit浮点数处理器 | |
JPH07225671A (ja) | 結果正規化機構と動作の方法 | |
CN111538472B (zh) | 一种Posit浮点数的运算处理器以及运算处理系统 | |
US6175851B1 (en) | Fast adder/subtractor for signed floating point numbers | |
CN116643718B (zh) | 一种流水线结构的浮点融合乘加装置、方法及处理器 | |
KR100465371B1 (ko) | 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치 | |
US9059726B2 (en) | Apparatus and method for performing a convert-to-integer operation | |
JPH05224883A (ja) | 浮動小数点n−ビット符号付大きさの2進数を固定小数点m−ビット2の補数表示の2進数に変換するためのシステム | |
US6542915B1 (en) | Floating point pipeline with a leading zeros anticipator circuit | |
JP6290886B2 (ja) | 装飾構成に基づくモーダル区間計算 | |
CN112671411B (zh) | 一种基于ieee 754和posit的浮点数据格式的双向转换电路 | |
CN112667197B (zh) | 一种基于posit浮点数格式的参数化加减法运算电路 | |
US7024439B2 (en) | Leading Zero Anticipatory (LZA) algorithm and logic for high speed arithmetic units | |
JP7044528B2 (ja) | リーディングゼロ予想 | |
JPH09244874A (ja) | 最上位有効ビット位置予測方法 | |
JPH09114641A (ja) | 最上位デジットを決定するための装置と方法 | |
CN115268832A (zh) | 浮点数取整的方法、装置以及电子设备 | |
KR101922462B1 (ko) | 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법 | |
KR920003493B1 (ko) | 부동 소숫점 표기를 기초로 하는 연산회로 | |
JP4439060B2 (ja) | 浮動小数点加算器 | |
CN114691082A (zh) | 乘法器电路、芯片、电子设备及计算机可读存储介质 | |
CN111290790A (zh) | 一种定点转浮点的转换装置 | |
CN117075842B (zh) | 十进制加法器及十进制运算方法 |
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 |