CN108762721A - 浮点到定点转换 - Google Patents
浮点到定点转换 Download PDFInfo
- Publication number
- CN108762721A CN108762721A CN201810247092.1A CN201810247092A CN108762721A CN 108762721 A CN108762721 A CN 108762721A CN 201810247092 A CN201810247092 A CN 201810247092A CN 108762721 A CN108762721 A CN 108762721A
- Authority
- CN
- China
- Prior art keywords
- significant
- bit
- index
- input
- floating
- 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
- 238000006073 displacement reaction Methods 0.000 claims description 41
- 238000004519 manufacturing process Methods 0.000 claims description 38
- 238000000034 method Methods 0.000 claims description 38
- 230000002159 abnormal effect Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 13
- 238000012937 correction Methods 0.000 claims description 10
- 230000005856 abnormality Effects 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 5
- 230000001052 transient effect Effects 0.000 claims description 2
- 238000001514 detection method Methods 0.000 description 19
- 230000014509 gene expression Effects 0.000 description 18
- 230000005611 electricity Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 229910002056 binary alloy Inorganic materials 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000001259 photo etching Methods 0.000 description 2
- 241001467982 Mermessus index Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- 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/4824—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 using signed-digit representation
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Analogue/Digital Conversion (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开涉及浮点到定点转换。一种二进制逻辑电路,用于将数字从浮点格式转换为定点格式,浮点格式具指数E、指数偏差B、以及有效数,定点格式具有iw位的整数宽度和fw位的小数宽度,该电路包括:第一移位器,可操作以接收第一有效数输入,并被配置为将该输入左移位以生成第一输出;反转单元,被配置为反转指数的位值;第二移位器,耦合到反转单元,被配置为接收第二有效数输入,并被配置为将该输入右移位以生成第二输出;多路复用器,耦合到第一和第二移位器,被配置为:接收包括第一输出的连续位集合的第一输入以及包括第二输出的连续位集合的第二输入,在指数的最高有效位等于1时输出第一输入,并在指数的最高有效位等于0时输出第二输入。
Description
技术领域
本发明涉及用于将数字从浮点格式转换为定点格式的二进制逻辑电路。特别地,某些方面涉及将浮点数的尾数进行移位以将数字转换为定点格式的电路。
背景技术
一种表示数值的方法是利用浮点格式。浮点数由于其能够以相对较少的位来表示大范围的值而被广泛用在计算领域。浮点数可以使用二进制位来表示。二进制浮点数的示意表示在图1中示出。浮点数包括符号段S(101)、尾数段M(105)、以及指数段E(103)。符号段包括单个符号位。如果浮点数是无符号数,则其可以不包括符号段。指数段E包括ew位的集合。
尾数具有mw位的位宽度并且形成有效数的一部分。有效数由值Y.M给出,其中,Y是有效数的前导位并且可以等于1或0。当Y=1时,有效数被认为是“正规的(normal)”;并且当Y=0时,有效数被认为是“非正规的(denormal)”。对于给定的实施方式,前导位的值一般是固定的并且可以被当作隐含位。因此,只有尾数M可以被存储。
符号位代表浮点数的符号。指数可以是有符号整数(一般在-2ew-1≤E≤2ew-1-1的范围内,其中ew是指数位的数目或者指数宽度)或者无符号整数(一般在0≤E≤2ew的范围内)。如果指数是无符号整数,则其将被偏置指数偏差B以给出决定浮点数的值的“真”指数。
因此,一般,浮点数所表示的值由(-1)sign×2E-B×significand=(-1)sign×2E-B×Y.M给出。
对指数进行偏置使得“真”指数(即,E-B)为负或正指数,同时将指数段E中的值限制到大于或等于零的整数。因为这能够使得不同浮点数的指数的相对大小可以比指数段中的值为有符号整数的情况更为容易地进行比较,因此是有利的。
另一种表示数值的方法是利用定点表示。在定点表示中,小数点(数字的整数和小数位之间的点)是数字中的固定位置。这与浮点数相反(在浮点数中,小数点可以移动或“浮动”)。二进制定点数的示意性表示在图2中示出。定点数包括整数部分201和小数部分203。整数部分和小数部分被小数点205隔开。形成整数部分的位数可以被称为整数宽度iw,形成小数部分的位数可以被称为小数宽度fw。对于具有给定位宽度的定点格式,用于表示整数部分的位数是固定的(因此用于表示小数部分的位数也是固定的)。
通常希望将数字在浮点格式和定点格式之间转换。例如,由于小数点的位置固定,在硬件中以定点数执行诸如加法和减法之类的某些数学运算会比较简单。用于将浮点数转换为定点数的电路的示例在图3中示出。电路300包括耦合到减法单元303和取反(negation)单元305的移位器301。将被转换的浮点数100被出于说明的目的示出。
取反单元被配置为接收浮点数的符号位作为第一输入、以及浮点数的尾数作为第二输入。取反单元被配置为在符号位指示浮点数表示负值的情况下对尾数取补并输出结果。如果符号位指示浮点数表示正值,则取反单元不对尾数取补并替代地输出未改变的尾数。
减法单元接收浮点数的指数E作为输入,并从该值中减去指数偏差B。偏差值可以是固定的或预定的,以使得减法单元被配置为从指数值减去固定值。减法值(E-B)随后被输出到移位器301。
移位器301从取反单元305接收尾数M作为第一输入,并从减法单元303接收值(E-B)作为第二输入。移位器可操作以将尾数左移位或右移位等于值(E-B)的大小的位数,以将浮点数转换为定点数。特别地,移位器被配置为在(E-B)大于0时将尾数左移位等于值(E-B)的位数,并且在值(E-B)小于0时将尾数右移位等于值(B-E)的位数。经移位的尾数随后被作为定点数输出。输出的定点数随后可以被取整。舍入方式的示例包括舍入到零(RTZ)、舍入到负无穷(RTN)、舍入到正无穷(RTP)、以及舍入到最接近的偶数(RNE)。
二进制电路的决定该电路可以将浮点数转换为定点数的速度的关键路径可以取决于舍入方式以及浮点数是有符号的还是无符号的。例如,对于无符号浮点数,从指数中减去偏差在该电路的关键路径中;对于使用RNI的有符号负浮点数,尾数的取反在关键路径中。
发明内容
提供本发明内容部分以简单介绍随后将在具体实施方式部分进一步描述的概念的选择。本发明内容部分不用于识别请求保护的客体的关键特征或重要特征,也不用于限制请求保护的客体的范围。
根据本公开的第一方面,提供了一种二进制逻辑电路,用于将数字从浮点格式转换为定点格式,浮点格式具有ew位的指数E、由B=2ew-1-1给出的指数偏差B、以及包括mw位的尾数M的有效数,定点格式具有iw位的整数宽度和fw位的小数宽度,该电路包括:
第一移位器,可操作以接收包括有效数的最高有效位的连续集合的第一有效数输入,并且被配置为将该输入左移位等于指数的k个最低有效位所表示的值的位数以生成第一输出,其中,min{(ew-1),bitwidth(iw-2-sy)}≤k≤(ew-1),其中对于有符号浮点数sy=1,并且对于无符号浮点数sy=0;
反转单元,被配置为反转指数的位值;
第二移位器,耦合到反转单元,被配置为接收包括有效数的最高有效位的连续集合的第二有效数输入,并且被配置为将该输入右移位等于经反转的指数的p个最低有效位所表示的值的位数以生成第二输出,其中,min{(ew-1),bitwidth(fw)}≤p≤(ew-1);以及
多路复用器,耦合到第一和第二移位器,被配置为:接收包括第一输出的连续位集合的第一输入以及包括第二输出的连续位集合的第二输入,在所述指数的最高有效位等于1的情况下输出第一输入,并在所述指数的最高有效位等于0的情况下输出第二输入。
该电路可以进一步包括耦合到第一移位器的第一格式化单元,该格式化单元被配置为接收包括mw个尾数位的字符串作为输入并对该字符串进行格式化,以生成对于第一移位器的有效数输入。
该格式化单元可以被配置为执行包括向有效数的最高有效位添加(iw-2-sy)个位的一个或多个格式化操作,其中,对于无符号浮点数sy=0且所添加的位是零位,对于有符号浮点数sy=1且所添加的位是符号位。
多路复用器的第一输入可以等于第一输出。
第一移位器可以具有等于iw”+min(mw,(fw+iw”))的位宽度,其中iw”=min{(iw-2-sy),2ew-1-2}。
格式化单元可以被配置为执行包括向有效数的最高有效位添加(iw-1-sy)个位的一个或多个格式化操作,其中,对于无符号浮点数sy=0且所添加的位是零位,对于有符号浮点数sy=1且所添加的位是符号位。
该电路可以进一步包括耦合到第一移位器和多路复用器的校正单元,该校正单元被配置为接收第一输出,丢弃其最高有效位,并向其最低有效位添加零位,以形成对于多路复用器的第一输入。
第一移位器可以具有等于iw’+min(mw,(fw+iw’))的位宽度,其中iw’=min{(iw-1-sy),2ew-1-1}。
格式化单元可以进一步被配置为截断mw个尾数位中在被左移位等于第一移位器的移位范围的值的情况下将不形成定点格式的fw位的部分的最低有效位集合。
第一移位器可以具有被限制到i)iw-2-sy和ii)2ew-1-2中的最小值的移位范围。
浮点格式和定点格式可以为(iw-sy-1)<2ew-1-1,并且k等于值(iw-sy-2)的位宽度,其中,对于有符号浮点数sy=1,对于无符号浮点数sy=0。
浮点格式和定点格式可以为2ew-1-1≤(iw-sy-1),并且k=ew-1,其中对于有符号浮点数sy=1,对于无符号浮点数sy=0。
该电路可以进一步包括耦合到第二移位器的第二格式化单元,该第二格式化单元被配置为接收包括mw个尾数位的字符串作为输入并对该字符串进行格式化,以生成对于第二移位器的第二有效数输入。
格式化单元可以被配置为当mw>fw时截断尾数的(mw-fw)个最低有效位。
第二移位器可以具有等于(1+sy)+min(fw,mw+2ew-1-2)的位宽度。第二移位器可以具有被限制到i)2ew-1-2和ii)fw中的最小值的移位范围。
该电路可以进一步包括耦合到第二移位器的第三格式化单元,该第三格式化单元被配置为向第二输出的最高有效位添加(iw-1-sy)个位,其中,对于无符号浮点数sy=0且所添加的位是零位,对于有符号浮点数sy=1且所添加的位是符号位。
浮点格式和定点格式可以为fw<2ew-1-1并且p等于位宽度以表示fw。
浮点数和定点数可以为fw≥2ew-1-1并且p=ew-1。
二进制逻辑电路可以进一步包括异常处理电路,该异常处理电路被配置为响应于检测到包括i)E>B+iw-1-sy;ii)E<B-fw中的至少一者的一组异常条件中的异常条件而输出异常结果,其中,对于有符号数sy=1,对于无符号数sy=0。
二进制逻辑电路可以进一步包括输出多路复用器,该输出多路复用器被配置为在异常结果和来自耦合到第一和第二移位器的多路复用器的输出之间进行多路复用。
根据本公开的另一方面,提供了一种将数字从浮点格式转换为定点格式的方法,浮点格式具有ew位的指数E、由B=2ew-1-1给出的指数偏差B、以及包括mw位的尾数M的有效数,定点格式具有iw位的整数宽度和fw位的小数宽度,该方法包括:
在第一移位器接收包括有效数的最高有效位的连续集合的第一有效数输入,并将该输入左移位等于指数的k个最低有效位所表示的值的位数以生成第一输出,其中,min{(ew-1),bitwidth(iw-2-sy)}≤k≤(ew-1),其中对于有符号浮点数sy=1,对于无符号浮点数sy=0;
在反转单元反转指数的位值;
在第二移位器接收包括有效数的最高有效位的连续集合的第二有效数输入,并将该输入右移位等于经反转的指数的p个最低有效位所表示的值的位数以生成第二输出,其中,min{(ew-1),bitwidth(fw)}≤p≤(ew-1);以及
在多路复用器接收包括第一输出的连续位集合的第一输入以及包括第二输出的连续位集合的第二输入,在指数的最高有效位等于1的情况下输出第一输入,并在指数的最高有效位等于0的情况下输出第二输入。
该方法可以进一步包括在第一格式化单元接收包括mw个尾数位的字符串作为输入并对该字符串进行格式化,以生成对于第一移位器的有效数输入。
对字符串进行格式化以生成对于第一移位器的输入的步骤可以包括:向有效数的最高有效位添加(iw-2sy)个位,其中,对于无符号浮点数sy=0且所添加的位是零位,对于有符号浮点数sy=1且所添加的位是符号位。
多路复用器的第一输入可以等于第一输出。
第一移位器可以具有等于iw”+min(mw,(fw+iw”))的位宽度,其中iw”=min{(iw-2-sy),2ew-1-2}。
该方法可以包括:执行包括向有效数的最高有效位添加(iw-1-sy)个位的一个或多个格式化操作,其中,对于无符号浮点数sy=0且所添加的位是零位,对于有符号浮点数sy=1且所添加的位是符号位。
该方法可以进一步包括:在校正单元接收第一输出,丢弃其最高有效位,并向其最低有效位添加零位,以形成对于多路复用器的第一输入。
第一移位器可以具有等于iw’+min(mw,(fw+iw’))的位宽度,其中iw’=min{(iw-1-sy),2ew-1-1}。
该方法可以进一步包括:截断mw个尾数位中在被左移位等于第一移位器的移位范围的值的情况下将不形成定点格式的fw位的部分的最低有效位集合。
第一移位器可以具有被限制到i)iw-2-sy和ii)2ew-1-2中的最小值的移位范围。
浮点格式和定点格式可以为(iw-sy-1)<2ew-1-1,并且k等于值(iw-sy-2)的位宽度,其中,对于有符号浮点数sy=1,对于无符号浮点数sy=0。
浮点格式和定点格式可以为(iw-sy-1)>2ew-1-1,并且k=ew-1,其中,对于有符号浮点数sy=1,对于无符号浮点数sy=0。
该方法可以进一步包括在耦合到第二移位器的第二格式化单元接收包括mw个尾数位的字符串作为输入并对该字符串进行格式化,以生成对于第二移位器的第二有效数输入。
该方法可以包括:当mw>fw时,在第二格式化单元截断尾数的(mw-fw)个最低有效位。
第二移位器可以具有等于(1+sy)+min(fw,mw+2ew-1-2)的位宽度。
第二移位器可以具有被限制到i)2ew-1-2和ii)fw中的最小值的移位范围。
浮点格式和定点格式可以为fw<2ew-1-1并且p等于位宽度以表示fw。
浮点数和定点数可以为fw≥2ew-1-1并且p=ew-1。
该方法可以进一步包括:响应于检测到包括i)E>B+iw-1-sy;ii)E<B+iw-1-sy中的至少一者的一组异常条件中的异常条件而输出异常结果,其中,对于有符号数sy=1,对于无符号数sy=0。
该方法可以进一步包括:在异常结果和来自多路复用器的输出之间进行多路复用。
根据本发明的另一方面,提供了一种二进制逻辑电路,用于将数字从浮点格式转换为定点格式,浮点格式具有指数E、指数偏差B=2ew-1-1、以及包括mw位的尾数M的有效数,定点格式具有iw位的整数宽度和fw位的小数宽度,该电路包括:
偏移单元,被配置为将浮点数的指数偏移一偏移值以生成sw位的移位值sv,该偏移值等于在定点格式中发生溢出之前有效数能够左移位的最大数量;
右移位器,可操作以接收包括从有效数得出的经过格式化的位集合的有效数输入,该移位器被配置为将该输入右移位等于移位值的k个最低有效位所表示的值的位数以生成输出结果,其中,bitwidth[min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]≤k≤sw,其中对于有符号浮点数sy=1,对于无符号浮点数sy=0。
偏移单元可以被配置为将浮点数的指数偏移等于(iw-1-sy)的值,其中,对于有符号数sy=1,对于无符号数sy=0。
偏移单元可以被配置为生成由sv=(B-E)+(iw-1-sy)给出的移位值。
右移位器可以具有被限制到[min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]的移位范围。
浮点数可以是有符号数,并且二进制逻辑电路可以进一步包括取反单元,该取反单元被配置为接收指示浮点数的符号的符号位、以及包括有效数的最高有效位的集合的输入,根据该数字的符号位的值对这些有效数位取补,以生成sY.M形式的有符号数,其中,s表示该数字的符号位,Y表示该有效数的前导位。
二进制逻辑电路可以进一步包括:格式化单元,耦合到右移位器,并且被配置为当mw>(iw+fw-(1+sy))时截断尾数的[mw–(iw+fw–(1+sy))]个最低有效位。
移位器可以具有等于i)iw+fw和ii)1+sy+mw+min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]中的最小值的位宽度。
格式化单元可以耦合到取反单元。
根据本公开的另一方面,提供了一种将数字从浮点格式转换为定点格式的方法,浮点格式具有指数E、指数偏差B=2ew-1-1、以及包括mw位的尾数M的有效数,定点格式具有iw位的整数宽度和fw位的小数宽度,该方法包括:
将浮点数的指数偏移一偏移值以生成sw位的移位值sv,该偏移值等于在定点格式中发生溢出之前有效数能够左移位的最大数量;
在右移位器接收包括从有效数得出的经过格式化的位集合的有效数输入,并将该输入右移位等于移位值的k个最低有效位所表示的值的位数以生成输出结果,其中,bitwidth[min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]≤k≤sw,其中对于有符号浮点数sy=1,对于无符号浮点数sy=0。
指数可以被偏移等于(iw-1-sy)的值,其中,对于具有符号位的数sy=1,对于无符号数sy=0。
所生成的移位值可以由sv=(B-E)+(iw-1-sy)给出。
右移位器可以具有被限制到min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]的移位范围。
该方法可以进一步包括:在取反单元接收浮点数的符号位和包括有效数的最高有效位的集合的输入,并根据符号位的值对这些有效位取补以生成sY.M形式的有符号数,其中,s表示该数字的符号位,Y表示该有效数的前导位。
该方法可以进一步包括:当mw>(iw+fw-(1+sy))时,在格式化单元截断尾数的[mw–(iw+fw–(1+sy))]个最低有效位。
移位器可以具有等于i)iw+fw和ii)1+sy+mw+min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]中的最小值的位宽度。
根据本公开的另一方面,提供了一种二进制逻辑电路,用于将数字从浮点格式转换为定点格式,浮点格式包括指数E、指数偏差B=2ew-1-1、以及包括mw位的尾数的有效数,定点格式具有iw位的整数宽度和fw位的小数宽度,该电路包括:
偏移单元,被配置为将浮点数的指数偏移一偏移值以生成sw位的移位值sv,该偏移值等于在定点格式中发生溢出之前有效数能够右移位的最大数量;
左移位器,可操作以接收包括从有效数得出的经过格式化的位集合的有效数输入,该移位器被配置为将该输入左移位等于移位值的k个最低有效位所表示的值的位数以生成输出结果,其中,bitwidth[min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]≤k≤sw,对于有符号浮点数sy=1,对于无符号浮点数sy=0。
偏移单元可以被配置为将浮点输入的指数偏移等于fw的值。
偏移单元可以被配置为生成由sy=(E-B)+fw给出的移位值。
左移位器可以具有被限制到[min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]的移位范围。
浮点数可以是有符号数,并且二进制逻辑电路可以进一步包括取反单元,该取反单元被配置为接收符号位、以及包括有效数的最高有效位的集合的输入,根据该数字的符号位的值对这些有效位取补,以生成sY.M形式的有符号数,其中,s表示该数字的符号位,Y表示该有效数的前导位。
二进制逻辑电路可以进一步包括:格式化单元,耦合到左移位器,并且被配置为对有效数进行格式化,以使该有效数与定点格式左对齐。
格式化单元可以被配置为向有效数的前导位添加(iw+fw-(1+sy))个位,其中,对于无符号浮点数sy=0且所添加的位是零位,对于有符号浮点数sy=1且所添加的位是符号位。
移位器可以具有widthLS’的位宽度,格式化单元可以被配置为当(iw+fw+mw)>widthLS’时截断尾数的[iw+fw+mw-widthLS’]个最低有效位。
移位器的位宽度widthLS’可以等于iw+fw+min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]。
格式化单元可以耦合到取反单元。
格式化单元可以被配置为接收来自取反单元的输出作为输入。
根据本公开的另一方面,提供了一种将数字从浮点格式转换为定点格式的方法,浮点格式具有指数E、指数偏差B=2ew-1-1、以及包括mw位的尾数的有效数,定点格式具有iw位的整数宽度和fw位的小数宽度,该方法包括:
将浮点数的指数偏移一偏移值以生成sw位的移位值sv,该偏移值等于在定点格式中发生下溢之前有效数能够右移位的最大数量;
在左移位器接收包括从有效数得出的经过格式化的位集合的有效数输入,并将该输入左移位等于移位值的k个最低有效位所表示的值的位数以生成输出结果,其中,bitwidth[min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]≤k≤sw,对于有符号浮点数sy=1,对于无符号浮点数sy=0。
指数可以被偏移等于fw的值。
所生成的移位值可以由sv=(E-B)+fw给出。
左移位器可以具有被限制到[min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]的移位范围。
浮点数可以是有符号数,该方法可以进一步包括:在取反单元接收指示该数字的符号的符号位和包括有效数的最高有效位的集合的输入,并根据sY.M形式的有符号数对这些有效位取补,其中,s表示该数字的符号位,Y表示该有效数的前导位。
该方法可以进一步包括:在格式化单元对有效数进行格式化,以将该有效数与定点格式左对齐。
对有效数进行格式化的步骤可以包括向有效数的前导位添加(iw+fw-(1+sy))个位,其中,对于无符号浮点数sy=0且所添加的位是零位,对于有符号浮点数sy=1且所添加的位是符号位。
移位器可以具有widthLS’的位宽度,格式化单元可以被配置为当(iw+fw+mw)>widthLS’时截断尾数的[iw+fw+mw-widthLS’]个最低有效位。
移位器的位宽度widthLS’可以等于iw+fw+min(2ew-1-1,iw-1-sy)+min(2ew-1-2,fw)]。
以上二进制逻辑电路可以被实现在集成电路上的硬件中。
可以提供一种在集成电路制造系统制造这里描述的二进制逻辑电路的方法。
可以提供一种集成电路定义数据集,该数据集在集成电路制造系统中被处理时将集成电路制造系统配置为制造这里描述的二进制逻辑电路。
可以提供一种非暂态计算机可读存储介质,其上存储有集成电路的计算机可读描述,该计算机可读描述在集成电路制造系统中被处理时使得集成电路制造系统制造这里描述的二进制逻辑电路。
可以提供一种集成电路制造系统,包括:
非暂态计算机可读存储介质,其上存储有描述这里描述的二进制逻辑电路的集成电路的计算机可读描述;
布局处理系统,被配置为处理集成电路描述以生成实现二进制逻辑电路的集成电路的电路布局描述;以及
集成电路生成系统,被配置为根据电路布局描述制造二进制逻辑电路。
附图说明
现在将参考附图,通过示例的方式描述本发明。在附图中:
图1示出了有符号浮点数的示意性表示。
图2示出了定点数的示意性表示。
图3示出了用于将数字从浮点格式转换为定点格式的逻辑电路的示例。
图4示出了用于在无需从指数减去偏差的情况下,将数字从浮点格式转换为定点格式的分路(Split-path)移位器的示例。
图5A示出了用于将无符号浮点数转换为定点数的二进制逻辑电路的示例。
图5B示出了用于将有符号浮点数转换为定点数的二进制逻辑电路的示例。
图6A示出了可以如何对有效数进行格式化和左移位,以将浮点数转换为定点数的示意性表示。
图6B示出了可以如何对有效数进行格式化和右移位,以将浮点数转换为定点数的示意性表示。
图6C示出了可以如何对有效数进行格式化和左移位,以将浮点数转换为定点数的示意性表示。
图7示出了用于将浮点数转换为定点数的单移位器二进制逻辑电路的示例。
图8示出了图7的单个移位器可以如何对有效数进行移位以将数字从浮点格式转换为定点格式的示意性表示。
图9示出了用于将浮点数转换为定点数的单移位器二进制逻辑电路的进一步示例。
图10示出了图9的单个移位器可以如何对有效数移位,以将数字从浮点格式转换为定点格式的示意性表示。
图11示出了用于处理集成电路定义数据集并制造二进制逻辑电路的示例集成电路制造系统。
在适当的情况下,相似的参考标号被用来表示相同的组件。
具体实施方式
本公开描述了用于将浮点格式的二进制数或表示转换为定点格式或表示的各种二进制逻辑电路。浮点格式的数字在本文中可被称为浮点数,并且类似地,定点格式的数字可以称为定点数。浮点数可以具有被偏置指数偏差的无符号整数指数。二进制逻辑电路可被大致分为两类:具有能够左移和右移尾数的分路移位器的二进制逻辑电路;以及具有用于移位尾数的单移位器(单右移位器或单左移位器)的二进制逻辑电路。分路移位器被配置为将浮点数的尾数移位从浮点数的指数确定的位数。也就是说,分路移位器可以通过利用指数的知识来确定应用于尾数的移位,而不必执行从指数中减去偏差。单移位器电路被配置为将浮点数的指数偏差偏移取决于浮点正被转换到的定点格式的整数宽度或小数宽度的值。这使得单移位器电路能够仅使用单个移位器来通过一系列“真”指数值(即对于正和负“真”指数值)将浮点数转换为定点格式。下面更详细地描述二进制逻辑电路的各种示例的结构和操作。
如本文使用的,术语“有效数”包括由小数点分隔的前导位Y和尾数M,即有效数表示值Y.M(=Y.0+0.M)。尾数由mw个位组成。
分路移位器
图4示出了用于将浮点格式的二进制数转换为定点格式的二进制数的二进制逻辑电路400的示例。二进制数可以是有符号数(即包括符号位)或无符号数(不包括符号位)。定点数具有iw个位的整数宽度和fw个位的小数宽度。换句话说,定点数具有iw个位的整数部分和fw个位的小数部分。定点数表示值I.W。值I.W可以是Siw.fw格式,其中,“S”表示它是有符号格式,或者值I.W可以是Uiw.fw格式,其中,“U”表示它是无符号格式。
二进制逻辑电路在400处被总体示出,并且包括耦合到多路复用器405的左移位器401和右移位器403。该电路还包括耦合到右移位器的反转单元407。
将被转换的浮点数在409处被示意性地示出,并且包括ew个位的指数段(表示指示E)和mw位的尾数段(表示尾数M)。为了简单起见,在该示例中,浮点是无符号的。指数被偏置指数偏差B。指数偏差由B=2ew-1-1给出。尾数形成包括前导位Y和尾数M的有效数的一部分。有效数可以是正规的(即前导位是“1”)或非正规的(即前导位是“0”)。尾数的位宽是mw个位;并且有效数的位宽是(mw+1)个位。浮点数因此表示由2E-B×有效数=2E-B×Y.M给出的值,其中,对于正规浮点数Y=1并且对于非正规浮点数Y=0。值(E-B)可被称为浮点数的“真”指数。通常,当将数字从浮点格式转换为定点格式时,真指数的值被用于确定将有效数进行移位的位数。
反转单元407被配置为接收指数E的ew-1个最低有效位,并且反转每个所接收的指数的位值。也就是说,反转单元被配置为对指数的位执行逐位反转以生成一组反转指数位。这里,反转表示位的二进制值被反转为其互补值,例如,位值1被反转为0并且位值0被反转为1。反转单元然后在线411上输出反转指数的ew-1个最低有效位。反转指数可被表示为
左移位器401和右移位器403二者都被配置为接收尾数M作为输入。尾数是更一般的有效数输入的示例。有效数输入可以额外地包括有效数的前导位Y,否则这可能被每个移位器分别接收,或者被添加到移位器内的尾数以形成有效数。下面将描述其他类型的浮点输入的示例。Y可被假设为“1”,并且其中Y=0的情况被视为异常。左移位器被配置为对其有效数输入执行左移操作以生成第一输出,并且右移位器被配置为对其有效数输入执行右移操作以生成第二输出。例如,左移位器和右移位器可以是桶形移位器。左移位器还被配置为接收指数E的ew-1个最低有效位作为输入。右移位器还被配置为从反转单元407接收反转指数的ew-1个最低有效位作为输入。
右移位器403被配置为将有效数右移等于由反转指数的ew-1个最低有效位所表示的值的位数。也就是说,右移位器被配置为将有效数输入向右移位等于由二进制串(即由反转指数的第0个-第(ew-2)个位表示的串,其中,第0个位指最低有效位)表示的值的位数。已经发现,当指数E的最高有效位等于0时,将有效数移位由反转指数的(ew-1)个最低有效位表示的值可被用于根据指数E和偏差B的值来正确地移位有效数,而不必执行从指数中减去偏差。
为了看到这一点,考虑以下示例,其中,为简单起见,ew=5并且mw=8。具体地,考虑其中E=00101(即十进制格式E=5)和有效数=1.0+0.M=1.0101001的示例。因此,偏差B由B=2ew-1-1=15(即二进制格式B=01111)给出,并且由浮点数表示的值然后由2E-B×1.尾数=2-10×1.0101001给出。也就是说,真指数的值等于-10,这表示有效数将被向右移十位。通常,当真指数的值(E-B)为负时,有效数将被向右移位等于真指数的幅度的位数,即有效数将被右移位等于(B-E)的值的位数。转到我们的具体示例,(B-E)=01111-00101=01010。该值与反转指数的比较表明(B-E)等于反转指数的(ew-1)(即在该示例中,4)个最低有效位。
因此,通过配置右移位器403来将有效数向右移位等于由反转指数的(ew-1)个最低有效位所表示的值的位数,右移位器403可以根据指数E和偏差B来正确地移位有效数,而不必从指数中减去偏差。
左移位器401被配置为将尾数M(从而有效数)左移等于由指数E的ew-1个最低有效位所表示的值的位数。也就是说,左移位器被配置为将有效数输入向左移位等于由二进制串E[ew-2:0](即由指数的第0个-第(ew-2)个位表示的串)表示的值的位数。已经发现,当指数的最高有效位等于1时,将有效数移位由指数的(ew-1)个最低有效位表示的值可被用于根据指数E和偏置B的值来移位有效数,而不必执行从指数中减去偏差。
为了看到这一点,考虑另一示例,其中,E=11010(即十进制格式的E=26)并且M=0101001。偏差B还由B=2ew-1-1=01111(即十进制格式B=15)给出。由浮点数表示的值然后由2E-B×1.尾数=211×1.0101001给出,这表示有效数将被向左移11位。
替代从指数中减去偏差B,考虑从指数中减去(B+1)。二进制格式B+1=2ew-1=10000。因此(E-(B+1))=11010-10000=01010。(E-(B+1))与E的比较表明(E-(B+1))的值等于由指数E的四个最低有效位表示的值。通常,当B=2ew-1-1时,在E(ew-1)=1时(E-(B+1))=E[ew-2:0]。因此,通过配置左移位器来将有效数左移等于由指数的ew-1个最低有效位所表示的值的位数,左移位器可以将有效数向左移位等于(E-(B+1))的位数,而不必从指数在中减去偏差。
将有效数向左移位等于(E-(B+1))的位数导致有效数被左移小于真指数(E-B)的值所指示的一个位。下面参考图5和图6A-6C讨论了用于校正移位的方法,但在一个示例中,左移位器被配置为相对于由指数E的ew-1个位的值所指示的执行一个额外的移位。也就是说,左移位器被配置为接收指数E,确定其ew-1个最低有效位的值,并且将有效数左移等于该值加一的位数,即左移位器被配置为将其输入左移等于二进制字符串E[ew-2:0]+1的值。
多路复用器405被配置为接收指数E的最高有效位的连续集合作为输入。最高有效位的连续集合可以是包括最高有效位的指数的位的子集。多路复用器可以接收指数的所有ew个位。在一些示例中,多路复用器可以仅接收指数的最高有效位(如图4所示)。多路复用器还被配置为接收分别来自左移位器和右移位器的第一输出和第二输出作为输入。
多路复用器405被配置为如果指数E的最高有效位等于1,则输出来自左移位器的输出,并且如果指数E的最高有效位等于零,则输出来自右移位器的输出。以这种方式配置多路复用器意味着根据真指数(E-B)的符号来输出来自移位器的正确结果。也就是说,当B=2ew-1-1时,如果指数的最高有效位等于1,则有(E-B)的值大于0,因此有效数在转换到定点格式时将被左移;并且当指数的最高有效位等于零时,(E-B)的值小于或等于0,因此有效数在转换到定点格式时将被右移。
上面的示例说明了通过其左移位器和右移位器可以利用指数的知识来移位有效数而不必执行从指数中减去偏差的步骤的原理。因此,二进制逻辑电路400能够将数字从浮点转换为定点格式,而不必执行从指数中减去偏差的操作。这是有利的,因为从指数中减去偏差花费时间,并且因此避免了该操作可能增加浮点数可被转换为定点格式的速度。它还可以通过不需要用于执行减法的任何电路来减少对电路的硬件要求。
下面将描述电路400的变型和示例,其更详细地示出了电路可以如何操作以及可以如何针对各种类型的浮点和定点格式(例如,整数宽度、小数宽度的大小、指数的位数等)来对电路的输入进行格式化。还描述了电路的各种优化。
有效数的位串可以在被输入到移位器之前被格式化。左移位器和右移位器的输入可被单独地格式化。格式化可以取决于浮点输入是有符号的还是无符号的。在某些情况下,根据尾数的大小以及整数宽度iw和小数宽度fw的值,格式化可能包括调整有效数的大小。有效数可能需要被调整大小为左移位器和/或右移位器的位宽(即使得经调整大小的有效数的位数等于移位器的位宽)。调整大小可以包括将一个或多个“0”附接到有效数的最高有效位,还被称为零填充有效数的前导位。调整大小可以额外地包括截断尾数的一个或多个最低有效位。当已知这些位不会被移位到定点数的小数位时(例如,由于指数的位宽ew所施加的最大左移限制),位可能被截断。参考图5以及图6A到6C描述了二进制逻辑电路如何格式化有效数的示例。
图5A示出了用于将浮点格式的无符号数转换为定点格式的数字的示例二进制逻辑电路500。浮点数表示通常由2E-B×有效数=2E-B×Y.M给出的值,其中,E还是ew个位的指数,B是由B=2ew-1-1给出的指数偏差,Y是有效数的前导位并且M是具有mw个位的宽度的尾数。定点数具有iw个位的整数宽度和fw个位的小数宽度。
如前所述,二进制逻辑电路500包括耦合到多路复用器405的左移位器401和右移位器403,以及耦合到右移位器的反转单元407。电路500还包括格式化单元501、511和513。格式化单元501是用于左移位器401的移位前格式化单元;格式化单元513是用于右移位器403的移位前格式化单元;并且格式化单元511是用于右移位器403的移位后格式化单元。格式化单元501被耦合到左移位器401;格式化单元513被耦合到右移位器403,并且格式化单元511被耦合到右移位器403和多路复用器405二者。该电路还包括耦合到左移位器和多路复用器405的校正器单元509,用于将有效数的移位向左递增一个位置。因此,校正器单元有效地校正了左移位器仅将有效数向左移位(E-(B+1))个位而不是(E-B)个位的事实。
电路500还包括异常检测电路503,该异常检测电路503被配置为接收指数E并可选地接收尾数M作为输入。电路被耦合到输出多路复用器505。输出多路复用器可以形成二进制逻辑电路500的一部分或者可以是单独的组件。输出多路复用器505还被耦合到多路复用器405。电路503可被预配置为知道或者已经在其上预存储了整数宽度iw、小数宽度fw和偏差B的值,以及将被转换的数字是有符号的还是无符号的。
现在将描述在左移操作期间电路的操作。
格式化单元501接收尾数M作为输入,并且格式化该输入以生成到左移位器的有效数输入。格式化单元501还可以接收有效数的隐式前导位Y(并且因此接收整个有效数作为输入),或者它可以将隐式较高位添加到尾数以形成有效数。格式化单元可以通过执行一个或多个格式化操作来格式化有效数。格式化单元可以格式化有效数以生成具有等于左移位器401的位宽的位数的浮点输入。图6A示出了该过程的图示。在该示例中,浮点数是具有由1.M=10110010(即mw=7)给出的有效数的无符号浮点数,并且将被转换为具有4位整数部分(即iw=4)和5位小数部分(即fw=5)的定点格式。
图6A示出了在格式化单元501处接收到的有效数601的位。对于该示例,(E-B)的值等于3并且因此有效数将被向左移位3位。定点数的整数宽度iw和小数宽度fw相对于有效数的位被示出。示出了左移位器401的移位器宽度(被表示为宽度LS)。
格式化单元501将(iw-1)个零附接到有效数的最高有效位(即有效数的前沿)。格式化单元这样做是为了将有效数与定点格式中的小数点对齐。因此,在该特定示例中,格式化单元将3个零附接到有效数的前导位以生成二进制串00010110010,被表示为603。有效数现在与定点格式的位位置对齐,以使得有效数的前导位Y对应于紧接在将整数位和小数位分开的小数点的左边的位,并且尾数M的前导位对应于紧接在小数点的右边的位;即前导位Y和尾数M被小数点分开。
在该示例中,左移位器的宽度,宽度LS=iw+mw。因此,一旦格式化单元501已经将(iw-1)个零位附接到有效数的前导位,则有效数被格式化以输入到左移位器(即经格式化的有效数具有等于左移位器的位宽的位数)。
将左移位器的位宽设置为iw+mw的值确保了在被输入到左移位器之前没有有效数的位被截断,这对于提供精确的移位结果是有益的。然而,在其他示例中,左移位器的位宽可能小于iw+mw(例如,为了降低移位器的硬件要求)。在这种情况下,已经被格式化以将(iw-1)个零位附接到其前沿的有效数可能具有大于左移位器的位宽的位宽。在这种情况下,格式化单元501可以截断尾数的多个最低有效位以将位数减少为等于移位器401的位宽。数学上,当宽度LS<[mw-iw]时,格式化单元可以截断有效数的[mw-iw]-宽度LS个最低有效位。所截断的位可被存储并被考虑用于对来自电路500的输出结果进行舍入。该舍入可由舍入单元(图5中未示出)执行。
格式化单元501将重新格式化的有效数603输出到左移位器401。因此,移位器401接收有效数的最高有效位的连续集合作为其输入。最高有效位的集合包括有效数的前导位(即其最高有效位),但如上面的示例所示,可能不包括尾数的一些最低有效位(例如,如果尾数被截断)。输入还可以包括被附接或连接到有效数的最高有效位的一组前导零位。
左移位器401检查指数以确定由ew-1个最低有效位表示的值并将该有效数向左移位该量。如上所述,这导致左移位器将有效数向左移位(E-(B+1))个位。因此,在该示例中,左移位器401将重新格式化的有效数603左移两位(因为E-B=3)以生成移位结果607。当以定点格式解释时,移位结果表示值101.10010。应注意,移位结果607的精度比该示例中定点格式所允许的精度更高。二进制逻辑电路可以包括舍入单元,该舍入单元被配置为将移位结果舍入到由定点格式设置的小数位数以处理这种情况。然后从左移位器401输出经移位的有效数607。
来自移位器401的输出607被输入到校正器单元509。校正器单元被配置为将有效数的移位向左递增一位。结果是有效数然后被正确地左移(E-B)位。校正器单元509可以采取被配置为将其输入向左左移一个位置的恒定移位器的形式。在这种情况下,校正器单元可以具有一的固定移位范围,以最小化所需的硬件并使移位器的速度最大化。替代地,校正器单元可被配置为将零位附接到重新格式化的有效数607的最低有效位。为了保持输出607的位宽恒定,校正器单元可以额外地丢弃输出607的最高有效位。在图6A中609处示出了该过程。可以看出,向输出607附接零最低有效位并丢弃其最高有效位具有将输出607向左左移一位的效果。所生成的结果611然后从校正器单元509输出并被输入到多路复用器405。
用于校正左移的替代方法是格式化单元501将(iw-2)个零位而不是(iw-1)零位附接到有效数的最高有效位。这是将有效数向左预先移位一个位置的效果,如图6C所示。
为了清楚起见,该示例使用与图6A所示的示例相同的有效数601和真指数的值(E-B=3)。mw、iw和fw的值也与图6A所示的相同。
在601处示出有效数。格式化单元501将(iw-2)个零位附接到有效数的最高有效位(即到其前沿)以生成格式化结果613。应注意,将(iw-2)个零位附接到有效数的前沿意味着有效数的前导位不再与小数点对齐(相反,有效数对齐小数点的左边的一位),这与图6A所示的格式化有效数不同。因此,附接(iw-2)个“0”位有效地产生到左移位器401的输入,其相对于被扩展(iw-1)个零的有效数(例如,如图6A所示)被左移一位。
然后将格式化结果613输入到左移位器中。
左移位器401检查指数的(ew-1)个最低有效位从而将输入613左移(E-(B+1))个位(其在该示例中为2位)以生成移位结果617。对移位结果617的检查示出了有效数相对于定点格式的小数点已被左移三位。也就是说,通过将(iw-2)个“0”位附接到有效数的最高有效位以生成到左移位器401的输入,左移位器使得有效数根据真指数的值(E-B)而被向左移位正确的量。换句话说,通过将其前沿扩展(iw-2)个零来重新调整有效数的大小有效地引入了补充由移位器401执行的移位(如上所述,根据真指数将尾数左移(E-(B+1))个位而不是(E-B)个位)所需的额外的左移。
以这种方式格式化有效数是有利的,因为它不需要校正器单元509,因此降低了电路的硬件要求。它还可以使得减小左移位器的大小。例如,可以看出,与图6A所示的情况下的iw+mw的宽度相比,图6C的示例中的左移位器的宽度是宽度LS=iw+mw-1。
现在将描述在右移操作期间电路的操作。
格式化单元513接收尾数M作为其输入并格式化该输入以生成到右移位器403的有效数输入。格式化单元513可以额外地接收有效数的隐式前导位作为有效数输入的一部分,或者它可以将该位内部地添加到尾数M以形成有效数。格式化单元513执行一个或多个格式化操作来格式化有效数以输入到右移位器403。具体地,格式化单元格式化有效数以生成具有等于右移位器403的位宽的位数的第二有效数输入。图6B针对无符号数的情况(即sy=0)示出了该过程的图示。
图6B示出了有效数601的位,但针对该示例,示出了(E-B)的值等于-3的右移位器的操作,因此有效数将被向右移位三位。还示出了整数宽度iw和小数宽度fw,以及右移位器的位宽,被表示为宽度RS。
在该示例中,宽度RS的值等于fw+1,利用由于右移位器将其输入向右移位,因此超出第fw个位的任何附加位将不会出现在移位结果中的事实。
因此,在该示例中,尾数宽度和右移位器403的宽度是使得(mw+1)>宽度RS。格式化单元因此可以截断尾数的等于值((mw+1)-宽度RS)的多个最低有效位。这将重新调整有效数的大小以等于右移位器403的位宽。同样,这些所截断的位可被存储并被考虑用于舍入输出结果。该舍入可以由舍入单元(未示出)执行。在该示例中,格式化单元截断尾数的两个最低有效位以生成重新格式化的有效数623。
格式化单元513将重新格式化的有效数623输出到右移位器403。
右移位器403检查反转指数以确定由其(ew-1)个最低有效位表示的值,并且将该有效数向右移位该量。因此,在该示例中,右移位器将有效数向右移位3位(因为(E-B)=-3)以生成移位结果625。
应注意,格式化单元513在该示例中将不向有效数的前沿附接任何位。由于移位器403仅向右移位,因此不需要向有效数的前沿附接任何位。相反,右移位器403将移位结果625输出到格式化单元511,其重新调整移位结果的大小为iw+fw个位(即重新调整大小为iw.fw格式的数字)。使得格式化单元511重新调整移位结果的大小为定点格式有利地减小了移位器403的位宽的大小。
图6B示出了格式化单元511的操作。格式化单元511将(iw-1)个零位附接到有效数的前沿以便将移位结果与定点格式的小数点对齐。所得到的二进制串在627处被示出。这生成大小为(iw+fw)个位的输出结果629。相反地,如果宽度RS<fw+1,则格式化单元511将(fw+1)-宽度RS个零位附接到移位结果625的最低有效位或后沿以生成大小为(iw+fw)个位的输出结果。
经重新调整大小的移位结果629然后从格式化单元511被输出到多路复用器405。
如上所述,将有效数向右移位由反转指数的ew-1个最低有效位表示的值使得有效数被右移(B-E)个位(当B>E时)。因此,右移位器可以输出正确移位的结果,而在移位器403和多路复用器之间不需要校正器单元。
通常,多路复用器405因此接收包括来自左移位器的输出的位的连续集合的第一输入和包括来自右移位器的输出的位的连续集合的第二输入。例如,如果校正器单元509丢弃了最高有效位,则第一输入可以包括左移位器输出的除了最高有效位以外的所有位。替代地,例如,如果电路不包括校正器单元509,则第一输入可以等于来自左移位器的输出。第二输入中的位的连续集合包括来自右移位器的输出的最高有效位。
异常检测电路503被配置为检测指数的值是否会导致定点格式下溢或溢出。当E-B>iw-1-sy时会发生溢出,并且(B-E)>fw时会发生下溢。电路503可以被配置为分析指数以检测条件E>B+iw-1-sy(溢出条件)和/或条件E<B-fw(下溢条件)。电路503可以被配置为响应于检测到异常情况(例如下溢和/或溢出条件)而输出异常的指示。响应于检测到溢出条件,电路503还可以输出第一异常值或结果,并且响应于检测到下溢条件输出第二异常值。例如,第一个异常值可以是定点格式中的最大可表示值。该电路可以可选地配置为接收浮点数的符号位(如果该数被签名)。在这种情况下,电路可以响应于检测到溢出条件并且在符号位指示数字为正的情况下而输出固定点格式的最大可表示数,并响应于检测到溢出条件并且在符号位指示数字为负的情况下而输出固定点格式的最小可表示数。
异常检测电路额外地可被配置为检测与当尾数M具有零值或者其最大可表示值时相对应的零和无穷大条件。响应于检测到零条件,电路503可以输出零作为异常结果。响应于检测到无穷大条件,电路503可以输出对无穷大的指示,或者可能输出NaN(非数字)。
异常检测电路503还可被配置为检测非正规输入(即其中Y=0的输入)并将它们视为异常。为此,电路503可被配置为接收隐式高位“Y”作为输入,并且响应于检测到Y位具有零值来检测输入409是非正规的。
电路503将对异常的指示和异常结果输出到输出多路复用器505。
输出多路复用器505被配置为在异常结果和来自多路复用器405的输出(偏移结果)之间进行多路复用。多路复用器505可被配置为响应于从电路503接收到对异常的指示而输出异常结果。如果未接收到对异常的指示,则多路复用器505输出从多路复用器405接收到的偏移结果。例如,异常检测电路503可以在未检测到异常条件时输出无检测信号(例如,0或1的序列),并且在检测到异常条件时输出对异常的指示(相对于无检测信号的互补信号)。输出多路复用器505然后可以在从电路503接收到无检测信号时输出移位结果,并且在接收到对异常条件的指示时示出异常结果。
异常检测电路503可以有利地与二进制逻辑电路的其余组件并行地操作,以使得对任何异常条件的检测不会显著地延迟电路的操作。此外,通过配置异常检测电路来通过比较指数E(而不是例如真指数(E-B))的值而检测溢出或下溢条件,可以提升电路的速度。这是因为B、iw和fw的值可被预先加载到电路上,因此电路可以简单地将变量(指数E)的值与预先存储的值进行比较。这还避免了电路必须执行(E-B)的减法以检测下溢或溢出条件。
在图5B中示出了用于将有符号浮点数转换为定点格式的对电路500的修改。该电路总体上在500’处被示出,并且将被转换的有符号浮点数在517处被示出。该电路包括在515处被示出的取反单元。取反单元515接收尾数M和符号位作为输入。它可以内部地添加隐式高位Y以形成有效数,或者以其他方式接收该位作为输入。来自取反单元515的输出可以是以SY.M形式的有符号数,其中,S表示符号位,Y表示有效数的高位并且M表示尾数。
输出SY.M作为输入被馈送到格式化单元501。在由校正器单元509进行移位后校正的情况下,格式化单元501进行操作以将(iw-2)个符号位附接到由取反单元515输出的数字SY.M的前导位以生成到左移位器401的输入。因此,通常,对于移位后校正的情况,格式化单元可以进行操作以将(iw-1-sy)个位附接到其接收到的输入的前导位,其中,对于有符号浮点数sy=1并且所附接的位是符号位,并且对于无符号浮点数sy=0并且所附接的位是零位。
在移位前校正的情况下,格式化单元501进行操作以将(iw-3)个符号位附接到由取反单元515输出的有符号数的前导位以生成到左移位器401的输入。因此,通常,对于移位前校正的情况,格式化单元可以进行操作以将(iw-2-sy)个位附接到其所接收到的输入的前导位,其中,对于有符号浮点数sy=1并且所附接的位是符号位,并且对于无符号浮点数sy=0并且所附接的位是零位。
格式化单元513从取反单元接收有符号数SY.M,并且在尾数宽度使得(mw+1+1)>宽度RS时可以截断尾数的等于值((mw+1+1)-宽度RS)的多个最低有效位。因此,通常,当(mw+1+sy)>宽度RS时,格式化单元513可以截断尾数的等于值[(mw+1+sy)-宽度RS]的多个最低有效位。在有符号数的情况下,右移位器的宽度可被设置为(1+fw+1)。因此,通常,右移位器403的宽度可以等于(1+fw+sy),其中,对于无符号数sy=0并且对于有符号数sy=1。
对于有符号浮点输入,格式化单元511可以进行操作以将(iw-2)个符号位附接到来自右移位器403的输出的前导位。因此,通常,格式化单元511可以将(iw-1-sy)个位附接到右移位器输出的前导位,其中,在无符号浮点输入的情况下sy=0并且所附接的是零位,并且在有符号位浮点输入的情况下sy=1并且所附接的位是符号位。
在电路500’的替代布置中,取反单元515可被布置在格式化单元501、513以及左移位器和右移位器之间,以使得取反单元接收格式化单元的输出作为其输入,并且将其值输出到左移位器和右移位器。
可以进行多次优化以最小化移位器401、403的位宽和/或它们针对电路500和500’的移位范围。在下文中,注意的是,对于无符号浮点数sy=0并且对于有符号浮点数sy=1。
已经认识到,有效数可被移位的最大量由整数宽度iw和fw或者指数宽度ew的大小来决定。首先考虑左移情况,注意到,值(iw-1-sy)表示在给定的定点格式发生溢出之前有效数可被左移的最大量。值2ew-1-1表示如从真指数E-B确定的最大左移并且在E=2ew-2时发生(E=2ew-1是异常结果)。因此,如果2ew-1-1≤iw-sy-1,则最大左移由指数宽度决定,并且即使在真指数取其最大值时也不会发生溢出。相反地,如果iw-sy-1<2ew-1-1,则指数能够取将导致溢出发生的值(即将导致结果的最高有效位被移出定点格式的值)。在这种情况下,最大左移由值(iw-sy-1)决定。因此,如果将溢出作为异常结果来处理,则左移范围可被限制于下列项中的最小值:iw-1-sy;和ii)2ew-1-1。
然而,对于有效数进行的总左移由两部分组成:i)由移位器401执行的移位;和ii)单移位修正(在移位前或移位后应用)。因此,移位器401的范围可以被限制于比总左移范围的值小1。换句话说,移位器401可以通过将其移位范围限制于下列项中的最小值来优化:i)iw-2-sy;和ii)2ew-1-2。注意,如本文使用的,移位范围“n”被认为表示移位器能够将输入从0移位到n个位并包括n个位的移位器。换句话说,移位器401可被配置为将其输入移位范围0–min[(iw-2-sy),2ew-1-2]中的任何值。这确保了一旦已经应用了偏移校正,则有效数的总左移被限制于iw-1-sy和2ew-1-1的最小值。
限制移位器的范围以最小化其硬件要求并最大化其速度可能是有利的。例如,一些移位器(例如,桶形移位器)可以每移位范围位宽的位包括一个多路复用器。移位器的位宽可以指表示移位器的范围所需的位数。例如,如果移位器具有255位的移位范围,则移位器需要8位来覆盖该范围;即8位移位器能够将输入移位最多255位。如果移位范围受到限制,则可以减少形成移位器的多路复用器的数目,这进而可以增加移位器的速度。
如果即使当指数取最大值时也不会发生溢出,则左移位器401可被配置为将有效数左移等于由指数的ew-1个最低有效位表示的值的位数。
如果可能发生溢出(即如果iw-sy-1<2ew-1-1),则左移位器仅需要检查指数的k个最低有效位以确定移位,其中,k=位宽(iw-sy-2)=ceiling{log2(iw-sy-1)}。通常,位宽(n)=ceiling{(log2(n+1)},其中,位宽(n)是给出表示0到n范围内的值(即n+1个不同的值)所需的位数的函数。注意,由于对左移应用了额外的校正(所应用的预校正或后校正),因此k=位宽(iw-sy-2)而不是位宽(iw-sy-1)。
移位器401不需要知道指数的(ew-k)个最高有效位的值,因为如果这些位中的任何一个是非零的,则真指数的值(E-B)无论如何都会导致溢出(并且因此可能作为异常结果而被单独地处理)。对于其中指数的所有(ew-k)个最高有效位都为零的情况,则如从检测大于k个最低有效位来检测k个最低有效位以获得相同的移位值。
当然,左移位器可被配置为检查指数的(ew-1)个位,而不管ew和iw的值(并且溢出条件由异常检测电路处理)。因此,通常,为了使得移位器401给出正确的移位结果,k至少等于下列项中的最小值:i)(ew-1);和ii)位宽(iw-2-sy),但注意,可通过配置左移器来将其输入向左移位由指数E的k个最低有效位所表示的值来优化电路,其中,当2ew-1-1≤iw-sy-1时k=ew-1,并且当iw-sy-1<2ew-1-1时k=位宽(iw-sy-2)。
整数宽度iw、小数宽度fw和尾数宽度mw的值也可被用于优化左移位器401的宽度,宽度LS。
参考图6A,可以理解,对于移位后校正的情况(例如,通过校正器单元509),如果mw≤fw,则宽度LS的值可被减小到iw’+mw,其中,iw’是有效数可被左移的最大量,即iw’=min{(iw-1-sy),2ew-1-1}。相反地,如果mw>fw,则宽度LS的值可被减小到(iw’+fw+iw’)(即输出范围加上移位范围)。因此,就可以通过注意到宽度LS=iw’+min(mw,(fw+iw’))来优化移位器的宽度。
对于移位前校正的情况(即当最大左移时),iw”=min[(iw-2-sy),2ew-1-2],如果mw≤fw+1,则移位器宽度宽度LS可被减小到iw”+mw。相反地,如果mw>fw+1,则移位器宽度宽度LS可被减小到(iw”+fw+iw”)。因此,对于移位前校正的情况,可以通过注意到宽度LS=iw”+min(mw,(fw+iw”)来优化移位器。将注意到,相比于应用移位后移位校正的情况,应用移位前移位校正的情况可以因此减小左移位器的宽度。
现在转到右移位情况,已经意识到,在下溢发生之前有效数可被右移的最大量是fw。如由真指数(E-B)决定的,最大右移是2ew-1-2,这在E=1时发生(E=0是异常结果)。指数宽度可以决定2ew-1-2≤fw(即,即使指数取其最小值也不会发生下溢)时的最大右移。相反地,如果fw<2ew-1-2,则指数能够取将导致下溢发生的值。在这种情况下,最大右移由值fw决定。
如果甚至在指数取其最小值时也不会发生下溢,则右移位器403可以被配置为将有效数右移等于由反转指数的ew-1位表示的值的位数。
如果可能发生下溢(即,如果fw<2ew-1-2),则右移位器只需检查反转指数的p个最低有效位以确定移位,其中p=bitwidth(fw)。右移位器403不需要知道反转指数的(ew-p)个最高有效位的值,因为如果这些位中的任何位为非零,则真指数的值无论如何都会导致下溢(因此可以作为异常结果来单独处理)。如果反转指数的(ew-p)个最高有效位全部都为零,则从检查p个最低有效位获得的右移值与从检查>p个最低有效位获得的右移值相同。
右移位器可以被配置为检查反转指数的(ew-1)个最低有效位,而不管ew和fw的值如何(因为这将给出要右移的正确量),并且因此通常对于移位器403,给出大于或等于以下各项的最小值的正确结果p:i)(ew-1);和ii)bitwidth(fw),但应注意的是,可以通过将右移位器配置为将其输入右移由反转指数的p个最低有效位表示的值来优化电路,其中,在2ew-1-2≤fw时p=ew-1并且在fw<2ew-1-2时p=bitwidth(fw)。
与左移位器类似,右移位器的范围可以被限制到最大右移。因此,对于在2ew-1-2≤fw的情况下的浮点和定点格式,右移位器403的范围可以被限制为2ew-1-2的值,因为无论指数值如何右移位器都不需要进行超过此值的移位。相反,如果浮点和定点格式使得fw<2ew -1-2,则移位器的范围可能被限制为fw的值(不需要进行超过该值的移位,否则将发生下溢)。因此,右移位器403可以通过将其移位范围限制到以下各项的最小值来优化:i)2ew-1-2;和ii)fw。
可利用尾数宽度mw、指数宽度ew、和小数宽度fw的值来优化右移位器403的宽度widthRS。
参考图6B,可以理解的是,当mw>fw时,widthRS的值可以减小到(1+sy+fw)。如果mw<fw,则widthRS的值可以被设置为(1+sy+mw+2ew-1-2),这根据mw、ew和fw的值可能会或可能不会超过值(1+sy+fw)。因此,已经意识到右移位器的大小可以通过注意到widthRS=(1+sy)+min(fw,mw+2ew-1-2)来优化。
二进制逻辑电路可能不一定具有异常检测电路和校正器单元两者:该电路可以例如具有校正器单元和/或异常检测电路。它可能这两个组件都没有。格式化单元可以被包括在二进制逻辑电路内(如本文的示例中所示),但是在其他示例中,二进制逻辑电路可以不包括格式化单元。在这种情况下,二进制逻辑电路可以被配置为直接接收适当格式化的有效数。这些输入可以直接输入到左移位器和右移位器。
上述二进制逻辑电路可以提供超过传统浮点到定点转换电路的性能优势。例如,对于无符号数,尾数可能在被移位之前几乎没有经受计算逻辑(例如,取反)。在这种情况下,传统转换电路的性能可能受限于从指数中减去偏差以确定有效数移位的延迟。上述电路通过根据指数确定有效数移位来消除这种相减,并因此克服了这种性能限制。
二进制逻辑电路可能特别适合的另一种情况是用舍入到零(RTZ)舍入模式将有符号数转换为定点格式。对于RTZ舍入模式,优选在有效位被移位后执行对有效数的取反,以便产生正确舍入的结果。因此,尽管数字可以是有符号的,但是在移位器之前有效数的路径中可能存在很少或没有计算逻辑,并且因此避免从指数中减去偏差可以提供与传统转换电路相比改进的电路性能。
单路径移位器
图7示出了用于将浮点格式的二进制数转换为定点格式的二进制逻辑电路700的另一示例。
二进制逻辑电路包括右移位器701、格式化单元715、偏移单元703、以及取反单元705。移位器701耦合到偏移单元703和格式化单元715。移位器具有被表示为widthRS'的宽度。格式化单元被耦合到取反单元。要转换的浮点数在707处示意性地示出,并且包括符号位S 709、标识指数E的ew位的指数段711、以及表示尾数M的mw位的尾数段713。指数被偏置指数偏差B,在该示例中给出B=2ew-1-1。浮点数的实际指数由(E-B)给出。因此,浮点数表示由(-1)符号×2E-B×有效数=(-1)符号×2E-B×Y.M给出的值,其中,Y是有效位的前导位,M是尾数,对于正规浮点数,Y=1,并且对于非正规浮点数,Y=0。定点格式具有iw位的整数部分和fw位的小数部分,使得定点格式的数字由iw.fw给出,其中iw和fw由小数点隔开。
取反单元705被配置为接收尾数M并且添加隐含的高位Y以形成有效数。在替代示例中,取反单元可以接收尾数和高位两者。取反单元还被配置为接收符号位709并根据符号位的值来对有效位取反。取反单元还被配置为将符号位附加到有效数的前沿以生成SY.M形式的有符号输出,其中SY是小数点之前的位,并且表示该数的两个最高有效位:符号位S和尾数的隐含的位Y。因此,有符号输出包括附加到有效数的前导位的符号位。有符号输出可以是仅包括符号位和有效位的位串。取反单元可以通过取有效数的补数来对有效数进行取反。在该示例中,取反单元被配置为在符号位的值为'1'时取反有效数,并且在符号位的值为'0'时不取反有效数。取反单元的输出作为输入被馈送到格式化单元715。
格式化单元715被配置为接收有符号有效数并执行一个或多个格式化操作。格式化操作可以包括例如重新调整有效数的大小以产生具有适用于右移位器701的位数的位串。例如,有效数可以被重新调整为等于移位器widthRS'的位宽的位数。重新调整大小的操作可以包括将一个或多个零位附加到尾数的最低有效位(例如,如果值(1+sy+mw)小于移位器701的位宽),或者截断尾数的最低有效位中的一个或多个(例如,如果值(1+sy+mw)大于移位器701的位宽)。具体地,如果(1+sy+mw)>widthRS',则格式化单元可以截断有效数的[(1+sy+mw)-widthRS']个最低有效位;如果(1+sy+mw)<widthRS',则格式化单元可将[widthRS'-(1+sy+mw)]个零位附加到有效数的后沿。
右移位器701因此接收经格式化的有效位集合作为其输入。符号位已被附加到最高有效位和/或有效数已被重新调整大小意味着有效数可能已被格式化。可替代地或另外地,有效数已根据符号位的值被取反意味着该位可能被格式化。经格式化的位集合可以包括有效数的全部位(例如,如果没有位被截断),或者替代地,其可以仅包括包含最高有效位的连续位的子集(例如,如果在重新调整大小期间多个最低有效位被截断)。最高有效位可以包括符号位和隐含的前导位Y。
经格式化的位集合形成到右移位器701的输入,其可以被称为有效数输入。然后,该输入由移位器进行移位以将数字转换为由iw.fw给出的定点格式。
偏移单元703被配置为偏移浮点数的指数E以生成由移位器701用来移位有符号数的移位值sv。偏移单元703将移位值sv输出到移位器701。移位值是由sw位表示的值。通过以适当的方式偏移指数,二进制逻辑电路能够使用仅能够在单个方向上进行移位的单移位器将浮点数转换为针对真指数(E-B)的正值和负值两者的定点格式。
在该示例中,偏移单元被配置为接收指数E并且将指数E偏移等于尾数(或者等同地,有符号数SY.M)在定点格式下的溢出发生之前(即,在数字的最高有效位移出结果之前)可以被左移的最大量的值。在该示例中,因为数字是有符号的,所以偏移单元将指数E偏移值(iw-2)以生成移位值。如果该数字是无符号的,则偏移单元可以将该指数偏移值(iw-1)。因此,通常偏移单元可以将指数偏移值(iw-1-sy),其中,对于有符号数,sy=1并且对于无符号数,sy=0。
偏移单元偏移指数以生成移位值sv=((B-E)+(iw-1-sy))。移位器701然后被配置为将有符号数右移与值sv相等的位数以生成移位结果,并且以sv个符号位进行移位。也就是说,移位器701复制符号位S以填充由每次右移引入的空位。以这种方式配置移位器使得能够将浮点格式的数转换成针对真指数(EB)的正值和负值两者的定点格式。为了证明这一点,现将参考图8来描述对有符号数进行移位的各种示例。
在这些示例中,经格式化的有效数是有符号数SY.M的形式。也就是说,在该示例中,为了清楚起见,有效数还未被重新调整大小。
有符号数SY.M在800处示出,并且包括符号位801、有效数的隐含的前导位Y 803和mw位的尾数M 805。数字800将被解释为使得有效数的前导位Y和小数位M被小数点隔开。数字被示出为小数点与隔开定点格式的整数部分和小数部分的小数点对齐,其中在此示例中,iw=4位且fw=5位。在807处示出了被重新解释为iw.(mw-iw+1+sy)形式的数字的有符号数。数字807将被解释为使得前导iw位和后部(mw-(iw-1-sy))位被小数点隔开。注意形成数字807的位与表示数字800的位相同-这些位所表示的内容出于说明的目的而被认为是不同的。
现在,作为第一示例,考虑真指数的值等于0的情况,所以浮点数表示值(-1)符号×Y.M。其遵循sv=iw-2=2的值。因此,如果真指数等于0,则右移位器将有符号数右移2位以生成在809处示出的移位结果。因为在该示例中输入数字800是有符号的,所以右移位器以sv个符号位(在该示例中为两个有符号位)进行移位。尾数的两个最低有效位已经移出结果809。当然,移出结果的位数取决于移位器宽度,在这些示例中仅出于说明的目的已被选择为等于(iw+fw+2)。可以看出,在以定点格式iw.fw解释时,有效数的前导位Y与尾数的mw-2个剩余小数位被小数点隔开,因此移位器701给出正确结果。
作为另一示例,如果真指数(EB)的值等于-fw(使得有效数的前导位Y是iw.fw格式中的被移位数的最低有效位),则sv的值=((BE)+(iw-1-1))=(fw+iw-2)=7。也就是说,如果真指数的值等于-fw,则移位器701将有符号数801右移(fw+iw-2)位以生成在811处示出的移位结果。可以看出,有效数的前导位Y是定点格式的结果的最低有效位,因此移位器701再次给出正确结果。在该示例中,尾数的7个最低有效位已被移出结果,而右移位器已以7个符号位进行移位。
对于最后的示例,考虑真指数的值等于iw-2的情况(使得符号位801是定点格式中的被移位数的最高有效位)。在这种情况下,sv的值=0并且因此移位器701不移位有符号数801,从而有符号数的最高有效位(即,符号位)也是移位结果813的最高有效位。
将在溢出发生之前将指数偏差偏移等于最大左移的值可以在概念上被视为将经格式化的有效数(例如,有符号数SY.M)与定点格式左对齐(即,对齐具有定点格式的最高有效位的数字的符号位或最高有效位)。
从移位器701输出的移位结果可以被视为定点数。
移位器701可以通过利用浮点和定点格式的知识来进行优化。
移位器701可以通过限制其移位范围来优化。从图8可以看出,在发生下溢之前(即,在尾数的前导位被移出结果之前),移位器701可以向右移位的最大值是(iw+fw-1-sy)位。然而,在某些情况下,移位器701需要右移的最大量将受限于指数而非定点格式的大小。更具体地,当E=2ew-2(E=2ew-1是异常结果)时,有效数位可以根据指数左移的最大量是最大左移(E-B)max=2ew-2-(2ew-1-1)=2ew-1-1=B。因此,当2ew-1-1≤(iw-1-sy)时,不会发生溢出。相反,当2ew-1-1>(iw-1-sy)时,指数能够取导致溢出的值,因此最大左移限于(iw-1-sy)。因此最大左移等于以下各项的最小值:i)2ew-1-1和ii)(iw-1-sy)。
发生溢出之前的最大右移等于小数宽度fw。当E=1(E=0是异常)时,由指数控制的最大右移发生,给出右移为2ew-1-2(=B-1)。因此最大右移等于以下各项的最小值:i)fw和ii)2ew-1-2。
因此,移位器701的总移位范围可以被最小化为:min(2ew-1-1,iw-1-sy)+min(fw,2ew-1-2)。这是有利的,因为如上所述,减小移位器的范围可以通过减少所需的多路复用器的数目来提高其速度。
因此,如果移位器701的移位范围可以被优化,则移位器701仅需要检查移位值sv的k'个最低有效位,其中k'=bitwidth[min(2ew-1-1,iw-1-sy)+min(fw,2ew-1-2)]。检查这些k'个最低有效位确保了移位值sv的最小位数被检查以覆盖移位器701的移位范围。
当然,在一些示例中,k'可能等于sv的位宽,而不管浮点和定点格式如何。在这种情况下,将导致溢出发生的移位值sv的值将由异常处理电路作为异常进行处理。
因此,通常bitwidth[min(2ew-1-1,iw-1-sy)+min(fw,2ew-1-2)]≤k'≤sw。
由此也可以看出,如果移位器701的范围被优化,则移位器的位宽(widthRS')也可以被优化。参考图8可以看出,如果mw>(iw+fw-(1+sy)),则通过将移位器的宽度设置为等于iw+fw来对其进行优化。另一方面,如果mw<iw+fw-(1+sy),则在总宽度小于iw+fw的情况下移位器的最小宽度等于(1+sy+mw)加移位器的最小移位范围,即,widthRS'=(1+sy+mw)+min(2ew-1-1,iw-1-sy)+min(fw,2ew-1-2)。因此,通常移位器701的位宽可以被最小化为:widthRS'=min[(iw+fw),(1+sy+mw)+min(2ew-1-1,iw-1-sy)+min(fw,2ew-1-2)]。
在图9中示出了单移位器二进制逻辑电路的替代示例。在该示例中,二进制逻辑电路包括被配置为仅向左移位的单移位器。
如图9所示,二进制逻辑电路900包括左移位器901、偏移单元903、取反单元905、和格式化单元907。移位器901耦合到偏移单元903和格式化单元907,并且具有被表示为widthLS'的位宽。取反单元905耦合到格式化单元907。
浮点数在707处被示意性地示出,并且再次表示由(-1)符号×2E-B×有效数=(-1)符号×2E-B×Y.M给出的值,其中,Y是有效数的前导位,M是尾数,并且对于正规浮点数,Y=1,对于非正规浮点数,Y=0。浮点数要转换到的定点数包括iw位的整数部分和fw位的小数部分。
偏移单元903被配置为偏移浮点数的指数E以生成由移位器901用于左移有符号数的移位值sv。偏移单元将移位值输出到移位器901。通过适当地偏移指数偏差B,二进制逻辑电路900能够使用仅能向左移位的单移位器来将浮点数转换为针对真指数(E-B)的正值和负值两者的定点数。
偏移单元903被配置为接收指数E并且将其偏移一个值,该值等于经格式化的有效数(例如,有符号数SY.M)在发生下溢之前可以被右移的最大量。在这种情况下,偏移单元被配置为将指数E偏移fw以生成由sv=(E-B+fw)给出的移位值。值sv然后被输入到移位器901。移位值sv具有sw位的位宽。
取反单元905被配置为接收尾数M和符号位709。取反单元可以附加地接收有效数的隐含的高位,或者它可以在内部将其附加到尾数的前沿以形成有效数。取反单元还可以被配置为将符号位附加到有效数的前沿以生成SY.M形式的有符号输出。取反单元根据符号位709来取有效数的补数。在该示例中,取反单元被配置为在符号位的值为'1'时取反有效数,并且在符号位的值为'0'时不取反有效数。有符号输出包括附加到有效数的前导位的符号位。有符号输出可以是仅包括符号位和有效数的位串。有符号输出作为输入被馈送到格式化单元907。
格式化单元907被配置为接收有符号输出SY.M并执行一个或多个格式化操作。格式化单元被配置为将(iw+fw-(1+sy))个符号位附加到有符号数SY.M的最高有效位(其中sy=1,因为输入数字707是有符号的)。这有效地将有效数与定点格式右对齐,即,有效数的前导位(隐含的高位Y)与定点格式的最低有效位对齐。换言之,在经格式化的有效数中,有效位的前导位是第fw个最高有效位。在图10中的1001处示出了经格式化的有符号数SY.M的示例。格式化操作还可以包括重新调整有效数的大小以产生具有适用于左移位器901的位数的位串。例如,有效数可以被重新调整到等于移位器的位宽的位数。具体地,如果(iw+fw+mw)>widthLS',则格式化单元可以截断有效数的[(iw+fw+mw)-widthRS']个最低有效位。替代地,如果widthLS'>(iw+fw+mw),则格式化单元可将[widthLS'-(iw+fw+mw)]个零位附加到有效数的后沿。
因此左移位器接收经格式化的有效位集合作为其输入。(iw+fw-(1+sy))个符号位已被附加到最高有效位和/或尾数已被重新调整大小意味着有效位可能已被格式化。可替代地或另外地,已根据符号位的值来取这些位的补数意味着该位可能被格式化。经格式化的位集合可以包括有效数SY.M的全部位(例如,如果没有位被截断),或者替代地,其可以仅包括包含最高有效位的连续位的子集(例如,如果在重新调整大小期间多个最低有效位被截断)。最高有效位可以包括符号位和前导位Y。
移位器901被配置为仅向左移位。它被配置为接收从格式化单元907输出的经格式化的位集合和来自偏移单元903的移位值sv作为输入。移位器被配置为将有符号数向左移位等于sv=(E-B+fw)的位数。以这种方式配置左移位器允许使用单移位器将数字转换为针对真指数(E-B)的正值和负值的定点格式。为了说明这一点,现在将参考图10描述多个示例,其中再次iw=4和fw=5。
在1001处示出了由左移位器901接收到的经格式化的有效数的示例。它包括被标记为1003的前导的(iw+fw-(1+sy))个附加的符号位、被标记为1005的符号位S、被标记为1007的隐含的前导位Y、以及被标记为1009的小数尾数位M。出于说明的目的,还示出了定点数的整数和小数宽度。在该示例中,尾数并未通过截断或将零位附加到其最低有效位来被重新调整大小。
考虑第一个示例,其中真指数的值等于0,使得浮点数表示值(-1)符号×20×Y.M以及sv=sv=(E-B+fw)=fw的值。左移位器901被配置为将数字1001向左移位fw位以生成移位结果1011。可以看出,移位结果相对于定点格式被正确地对齐,即,符号位以及前导有效位形成定点数的整数部分,并且M个尾数位形成定点数的小数部分。被解释为Siw.fw格式的定点数,移位结果1011表示数值Y.M(不包括符号位)。二进制逻辑电路900因此提供了正确的结果。移位器901输出移位结果1011。
考虑第二个示例,其中真指数的值等于-fw,使得sv的值=0。在这种情况下,左移器901将有符号数左移0位(即,有符号数未被移位)以生成从移位器901输出的结果1013。因此,在这种情况下,有效数的最高有效位(隐含的前导位Y)对应于Siw.fw格式中的定点数的最低有效位。结果1013表示在前导有效位被移出定点结果并发生下溢之前的定点数的最小值。
对于第三个示例,考虑真指数等于(iw-2)使得浮点数表示值(-1)符号×2iw-2×Y.M的情况。由偏移单元生成的移位值因此由sv=iw+fw-2给出。因此,在这种情况下,左移位器901将经格式化的有效数1001左移(iw+fw-2)位以生成移位结果1015。然后从移位器901输出结果1015。在这种情况下,有效数1001的最高有效位(符号位)对应于iw.fw格式中的定点结果的最高有效位。结果1015因此表示在符号位被移出结果并发生溢出之前的定点数的最大值。
将指数偏差偏移小数宽度fw可以在概念上被视为将有效数与定点格式右对齐,使得有效数的前导位与定点格式的最低有效位对齐。
类似于图7中示出的单移位器电路,移位器901可以通过利用浮点和定点格式的知识来优化。可以优化移位器的一种方式是使移位范围最小化。移位范围可以以与上述移位器701相同的方式来进行优化。具体地,
已经意识到的是,移位器901的优化范围等于最大上移(由指数宽度ew或整数宽度iw限制)加上最大下移(由指数宽度ew或小数宽度fw限制)。因此,移位器901的经优化的移位范围与移位器701的经优化的移位范围相同并且等于:min(2ew-1-1,iw-1-sy)+min(fw,2ew -1-2)。
因此,如果移位器901的移位范围可以被优化,则移位器901不一定需要检查移位值sv的全部sw位,而只需检查k”个最低有效位,其中k”=bitwidth[min(2ew-1-1,iw-1-sy)+min(fw,2ew-1-2)]。检查这些k”个最低有效位确保了移位值sv的最小位数被检查,以便覆盖移位器901的移位范围。移位值的(sw-k”)个最高有效位不需要被检查,因为如果这些位中的任何一位为非零,则移位值将导致溢出发生(并且因此被作为异常结果来处理)。
当然,无论浮点格式和定点格式如何,k”的值都可以被设置为等于移位值sv的位宽。在这种情况下,将导致溢出发生的移位值sv的值将由异常处理电路作为异常来处理。
因此,通常bitwidth[min(2ew-1-1,iw-1-sy)+min(fw,2ew-1-2)]≤k”≤sw。
还可以利用经优化的移位范围的知识来最小化移位器901的大小(即其位宽)。被标记为widthLS'的移位器901的位宽可以通过将其设定为等于定点格式中的输出数字的范围加上最小移位范围来被最小化。因此移位器的优化宽度为widthLS'=iw+fw+min(2ew-1-1,iw-1-sy)+min(fw,2ew-1-2)。对移位器901的位宽进行优化有利地允许降低移位器的硬件要求。
参考图7至图10描述的上述示例用于说明如何将二进制逻辑电路配置为仅使用单移位器将浮点格式的数字转换为定点格式。尽管未示出,但二进制逻辑电路700和900还可以包括舍入模块,其被配置为对从移位器输出的结果进行舍入。舍入模块可以被配置为将来自移位器的输出舍入到fw个小数位。舍入模块可以被配置为实现以下舍入模式中的一者:舍入到零;舍入到最近的偶数;舍入到负无穷;舍入到正无穷。
二进制逻辑电路700和900还可以包括异常处理电路(例如,异常检测电路503)。该异常处理电路可以被配置为检测溢出状态和下溢状态中的一者或两者,如上面针对电路503所描述的。电路700、900可以另外包括多路复用器(例如,输出多路复用器505),该多路复用器在从异常处理电路输出的异常结果以及从移位器输出的结果之间进行多路复用。
二进制逻辑电路700和900已被描述为包括将结果输出到格式化单元的取反单元。在替代的布置中,取反单元可以被布置在格式化单元的下游,使得格式化单元将结果输出到取反单元,然后取反单元生成到移位器的输入。替代地,取反单元可以被布置在移位器的下游,使得移位器的输出被输入到取反单元。这些电路也被描述为对有符号数进行操作。电路700和900可以适用于在无符号数上工作。在这种情况下,电路不需要包括取反单元705和907。此外,对于无符号数,格式化单元905可以将(iw+fw-1)个零位附加到有效数的前导位。因此,格式化单元905通常将(iw+fw-(1+sy))个位附加到有效数的前导位,其中对于有符号浮点数,sy=1并且被附加的位是符号位,并且对于无符号浮点数,sy=0并且被附加的位是零位。
以上参考图7至图10描述的单移位器电路可以提供优于传统浮点到定点转换电路的性能优点。例如,通过利用被配置为仅单向移位的单移位器,避免了对移位取反的需要(例如,如果真指数为负)。此外,对于某些浮点和定点格式,单移位器的延迟小于与分路移位器和相关多路复用器相关联的延迟。当要转换为定点格式的数字是有符号的时,这可能会提供性能优势。这在下文更详细地解释。
与移位器相关的延迟与其位深度(即,其移位范围的位宽)有关。右移位器701和左移位器901的位深度是bitwidth[min(2ew-1-1,iw-1-sy)+min(fw,2ew-1-2)]=ceil{log2[1+min(2ew-1-1,iw-1-sy)+min(fw,2ew-1-2)]}。对于分路移位器,左移位器的位深度为ceil[log2(1+(iw-1-sy))]=ceil[log2(iw-sy)],并且右移位器的位深度为ceil[log2(1+(1+fw))]=ceil[log2(2+fw)]。分路电路的总延迟等于移位器延迟加上多路复用器的延迟的较大者,其可能通常与移位器延迟的较大者相同。例如,如果iw=7且fw=16并且数字是无符号的(即,sy=0),则单移位器的深度是ceil[log2(1+(7-1)+16)=ceil[log223]=5,而对于分路电路,左移位器和右移位器的深度分别为和ceil[log2(1+(1+16))]=5。因此,分路电路的右移位器具有与单移位器相同的延迟,但分路电路也具有另外的多路复用器。对于采用RTN舍入模式的有符号数转换,尾数优选地在被移位之前被取反以确保舍入结果的最大精度。在这种情况下,对尾数的取反可能会限制数字被转换为定点格式的速度。这提供了计算移位偏移的时间,并且因为单移位器通常小于分路移位器的总大小,所以单移位器电路可以在这些情况下降低硬件要求。
本文已经描述了用于将浮点格式的二进制数转换为定点格式的示例电路。在这些示例中,已将特定值分配给浮点格式和定点格式(整数宽度、小数宽度等)。应理解的是,这仅是出于说明的目的,并且本文所描述的电路能够将各种浮点格式的数字转换为各种定点格式。根据IEEE 754标准,浮点格式可以是例如32位单精度,或者64位双精度。数字(浮点和/或定点格式)可以是有符号的或无符号的。
本文所描述的示例说明了在被移位之前有效数如何被格式化。格式化可以由形成二进制逻辑电路的一部分的格式化单元来执行(如在本文所描述的一些示例),但应理解的是,格式化可以由与二进制逻辑电路分离的一个或多个组件执行。在这种情况下,到二进制逻辑电路的(经格式化的)尾数/有效数输入可以直接由移位器接收。
本文所描述的示例使用术语“左移”和“右移”。这些术语用于表示二进制字符串被移位器移位的方向。这些术语已经在传统二进制逻辑系统的情境中使用,其中二进制字符串从左向右读取;即字符串的最高有效位是最左边的位,而字符串的最低有效位是最右边的位。应理解的是,术语“左移”已被用于表示输入在朝着最高有效位的方向上移位,并且术语“右移”已被用于表示输入朝着最低有效位的方向上移位。
图4-10的逻辑电路被示出为包括多个功能块。这仅仅是示意性的,并不旨在定义这些实体的不同逻辑元件之间的严格划分。每个功能块可以以任何合适的方式提供。应理解的是,本文描述为由单元或移位器形成的中间值不需要由单元或移位器在任何点处物理地生成,并且可以仅表示逻辑值,其便于描述单元或移位器在其输入和输出之间执行的处理。
通常,上述的功能、方法、技术、或组件中的任何一者可以用软件、固件、硬件(例如,固定逻辑电路)或其任何组合来实现。本文可以使用术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”来总体地表示软件、固件、硬件、或其任何组合。在软件实现方式的情况下,模块、功能、组件、元件、单元、块、或逻辑表示在处理器上执行时执行指定任务的程序代码。本文所描述的算法和方法可以由执行使得(一个或多个)处理器执行算法/方法的代码的一个或多个处理器来执行。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器、以及可以使用磁的、光学的、和其他技术来存储指令或其他数据并且可以被机器访问的其他存储器设备。
本文所使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何种类的可执行代码,包括以机器语言、解释型语言、或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义了集成电路的代码(例如,硬件描述语言或网表)、以及以编程语言代码(例如C、Java或OpenCL)表达的代码。可执行代码可以是任何类型的软件、固件、脚本、模块、或库,它们例如当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、执行时使得在其处支持可执行代码的计算机系统的处理器执行由代码指定的任务。
处理器、计算机、或计算机系统可以是具有使得其可以执行指令的处理能力的任何种类的设备、机器、或专用电路、或其集合或其一部分。处理器可以是任何种类的通用或专用处理器,诸如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、可编程门阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
还旨在包含定义本文所描述的硬件配置以用于设计集成电路或用于配置可编程芯片以执行期望功能的软件,例如,HDL(硬件描述语言)软件。也就是说,可以提供计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,其当在集成电路制造系统中被处理时将该系统配置为制造二进制逻辑电路,该二进制逻辑电路被配置为执行本文所描述的方法中的任一者,或者制造包括本文所描述的任何装置的二进制逻辑电路。
集成电路定义数据集可以是计算机代码的形式,例如,作为网表、用于配置可编程芯片的代码、作为定义任何级别的集成电路的硬件描述语言、包括作为寄存器传输级(RTL)代码、诸如Verilog或VHDL之类的高级电路表示、以及诸如OASIS和GDSII之类的低级电路表示。逻辑上定义集成电路(例如,RTL)的较高级表示可以在被配置用于在软件环境的上下文中生成集成电路的制造定义的计算机系统处被处理,其中该软件环境包括电路元件的定义和用于将这些元件进行组合的规则以便生成由该表示定义的集成电路的制造定义。如通常在计算机系统处执行以定义机器的软件的情况那样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等)以用于被配置用于生成集成电路的制造定义的计算机系统,以执行定义集成电路的代码从而生成该集成电路的制造定义。
现将参考图11描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置为制造二进制逻辑电路的示例。
图11示出了包括布局处理系统1104和集成电路生成系统1106的集成电路(IC)制造系统1102的示例。IC制造系统1102被配置为接收IC定义数据集(例如,将逻辑电路定义为在本文的任何示例中描述的那样),处理IC定义数据集,并且根据IC定义数据集(例如,其实现本文的任何示例中描述的二进制逻辑电路)来生成IC。IC定义数据集的处理将IC制造系统1102配置为制造实现本文的任何示例中所描述的二进制逻辑电路的集成电路。
布局处理系统1104被配置为接收并处理IC定义数据集以确定电路布局。从IC定义数据集确定电路布局的方法是本领域中已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级(gate level)表示,例如,就逻辑组件(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)而言。通过确定逻辑组件的定位信息,可以从电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统1104确定了电路布局时,它可以将电路布局定义输出到IC生成系统1106。
如现有技术中已知的,IC生成系统1106根据电路布局定义生成IC。例如,IC生成系统1106可以实施半导体器件制造工艺以生成IC,半导体器件制造工艺可以包括光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可以是掩模的形式的,其可以在用于根据电路定义生成IC的光刻工艺中使用。替代地,提供给IC生成系统1106的电路布局定义可以是IC生成系统1106可用来形成用于生成IC的合适的掩模的计算机可读代码的形式。
由IC制造系统1102执行的不同处理可以全部在一个位置(例如,由一方)实现。替代地,IC制造系统1102可以是分布式系统,从而一些处理可以在不同位置执行,并且可以由不同方来执行。例如,可以在不同位置和/或由不同方来执行以下阶段中的一些:(i)合成表示IC定义数据集的RTL代码以形成要生成的电路的门级表示,(ii)基于门级表示生成电路布局,(iii)根据电路布局形成掩模,以及(iv)使用该掩模来制造集成电路。
在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可以将系统配置为在不需要对IC定义数据集进行处理以确定电路布局的情况下制造二进制逻辑电路。例如,集成电路定义数据集可以定义对诸如FPGA之类的可重新配置处理器的配置,并且对该数据集的处理可以将IC制造系统配置为生成具有该定义的配置的可重新配置处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,集成电路制造定义数据集当在集成电路制造系统中被处理时可以使得集成电路制造系统生成本文所描述的设备。例如,以上文关于图11所描述的方式通过集成电路制造定义数据集进行的对集成电路制造系统的配置可使得本文所描述的设备被制造。
在一些示例中,集成电路定义数据集可以包括在数据集中定义的硬件上运行的软件或者与数据集中定义的硬件相结合的软件。在图11所示的示例中,IC生成系统还可以由集成电路定义数据集配置为在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到集成电路上,或者以其他方式向集成电路提供程序代码以供与集成电路一起使用。
申请人在此独立地公开了本文所描述的每个单独的特征以及两个或更多个这样的特征的任何组合,使得这样的特征或组合能够基于本说明书(整体地)、根据本领域技术人员的公知常识被执行,而不受限于权利要求的范围且无论这样的特征或特征的组合是否解决了本文所公开的任何问题。申请人表示本发明的各方面可以包括任何这种单独的特征或特征的组合。鉴于上文的描述,本领域技术人员将明白可以在本发明的范围内进行各种修改。
Claims (20)
1.一种二进制逻辑电路,用于将数字从浮点格式转换为定点格式,所述浮点格式具有ew位的指数E、由B=2ew-1-1给出的指数偏差B、以及包括mw位的尾数M的有效数,所述定点格式具有iw位的整数宽度和fw位的小数宽度,所述电路包括:
第一移位器,可操作以接收包括所述有效数的最高有效位的连续集合的第一有效数输入,并且被配置为将该输入左移位等于所述指数的k个最低有效位所表示的值的位数以生成第一输出,其中,min{(ew-1),bitwidth(iw-2-sy)}≤k≤(ew-1),其中对于有符号浮点数sy=1,并且对于无符号浮点数sy=0;
反转单元,被配置为反转所述指数的位值;
第二移位器,耦合到所述反转单元,被配置为接收包括所述有效数的最高有效位的连续集合的第二有效数输入,并且被配置为将该输入右移位等于经反转的指数的p个最低有效位所表示的值的位数以生成第二输出,其中,min{(ew-1),bitwidth(fw)}≤p≤(ew-1);以及
多路复用器,耦合到所述第一和第二移位器,并且被配置为:接收包括所述第一输出的连续位集合的第一输入以及包括所述第二输出的连续位集合的第二输入;在所述指数的最高有效位等于1的情况下输出所述第一输入;并且在所述指数的最高有效位等于0的情况下输出所述第二输入。
2.如权利要求1所述的二进制逻辑电路,其中,所述电路进一步包括耦合到所述第一移位器的第一格式化单元,该格式化单元被配置为接收包括mw个尾数位的字符串作为输入并对该字符串进行格式化,以生成对于所述第一移位器的有效数输入。
3.如权利要求2所述的二进制逻辑电路,其中,所述格式化单元被配置为执行包括向所述有效数的最高有效位添加(iw-2-sy)位的一个或多个格式化操作,其中,对于无符号浮点数sy=0且所添加的位是零位,并且对于有符号浮点数sy=1且所添加的位是符号位。
4.如权利要求1至3中任一项所述的二进制逻辑电路,其中,所述多路复用器的所述第一输入等于所述第一输出。
5.如权利要求1至3中任一项所述的二进制逻辑电路,其中,所述第一移位器具有等于iw”+min(mw,(fw+iw”))的位宽度,其中iw”=min{(iw-2-sy),2ew-1-2}。
6.如权利要求2所述的二进制逻辑电路,其中,所述格式化单元被配置为执行包括向所述有效数的最高有效位添加(iw-1-sy)位的一个或多个格式化操作,其中,对于无符号浮点数sy=0且所添加的位是零位,并且对于有符号浮点数sy=1且所添加的位是符号位。
7.如权利要求1至3中任一项所述的二进制逻辑电路,进一步包括耦合到所述第一移位器和所述多路复用器的校正单元,该校正单元被配置为接收所述第一输出,丢弃其最高有效位,并向其最低有效位添加零位,以形成对于所述多路复用器的所述第一输入。
8.如权利要求1至3中任一项所述的二进制逻辑电路,其中,所述第一移位器具有等于iw’+min(mw,(fw+iw’))的位宽度,其中iw’=min{(iw-1-sy),2ew-1-1}。
9.如权利要求2或3所述的二进制逻辑电路,其中,所述格式化单元进一步被配置为截断所述mw个尾数位中在被左移位等于所述第一移位器的移位范围的值的情况下将不形成所述定点格式的fw位的部分的最低有效位集合。
10.如权利要求1至3中任一项所述的二进制逻辑电路,其中,所述第一移位器具有被限制到i)iw-2-sy和ii)2ew-1-2中的最小值的移位范围。
11.如权利要求1至3中任一项所述的二进制逻辑电路,其中,所述浮点格式和所述定点格式为(iw-sy-1)<2ew-1-1,并且k等于值(iw-sy-2)的位宽度;或者所述浮点格式和所述定点格式为2ew-1-1≤(iw-sy-1),并且k=ew-1,其中对于有符号浮点数sy=1,并且对于无符号浮点数sy=0。
12.如权利要求1至3中任一项所述的二进制逻辑电路,进一步包括耦合到所述第二移位器的第二格式化单元,该第二格式化单元被配置为接收包括mw个尾数位的字符串作为输入并对该字符串进行格式化,以生成对于所述第二移位器的所述第二有效数输入。
13.如权利要求12所述的二进制逻辑电路,其中,所述格式化单元被配置为当mw>fw时截断所述尾数的(mw-fw)个最低有效位。
14.如权利要求1至3中任一项所述的二进制逻辑电路,其中,所述第二移位器具有等于(1+sy)+min(fw,mw+2ew-1-2)的位宽度。
15.如权利要求1至3中任一项所述的二进制逻辑电路,其中,所述第二移位器具有被限制到i)2ew-1-2和ii)fw中的最小值的移位范围。
16.如权利要求1至3中任一项所述的二进制逻辑电路,进一步包括耦合到所述第二移位器的第三格式化单元,该第三格式化单元被配置为向所述第二输出的最高有效位添加(iw-1-sy)个位,其中,对于无符号浮点数sy=0且所添加的位是零位,并且对于有符号浮点数sy=1且所添加的位是符号位。
17.如权利要求1至3中任一项所述的二进制逻辑电路,其中,所述浮点格式和所述定点格式为fw<2ew-1-1并且p等于所述位宽度以表示fw;或者所述浮点数和所述定点数为fw≥2ew-1-1并且p=ew-1。
18.如权利要求1至3中任一项所述的二进制逻辑电路,其中,所述二进制逻辑电路进一步包括异常处理电路,该异常处理电路被配置为响应于检测到包括i)E>B+iw-1-sy;ii)E<B-fw中的至少一者的一组异常条件中的异常条件而输出异常结果,其中,对于有符号数sy=1,并且对于无符号数sy=0;以及所述二进制逻辑电路进一步包括输出多路复用器,该输出多路复用器被配置为在所述异常结果和来自耦合到所述第一和第二移位器的所述多路复用器的输出之间进行多路复用。
19.一种将数字从浮点格式转换为定点格式的方法,所述浮点格式具有ew位的指数E、由B=2ew-1-1给出的指数偏差B、以及包括mw位的尾数M的有效数,所述定点格式具有iw位的整数宽度和fw位的小数宽度,所述方法包括:
在第一移位器接收包括所述有效数的最高有效位的连续集合的第一有效数输入,并将该输入左移位等于所述指数的k个最低有效位所表示的值的位数以生成第一输出,其中,min{(ew-1),bitwidth(iw-2-sy)}≤k≤(ew-1),其中对于有符号浮点数sy=1,并且对于无符号浮点数sy=0;
在反转单元反转所述指数的位值;
在第二移位器接收包括所述有效数的最高有效位的连续集合的第二有效数输入,并将该输入右移位等于经反转的指数的p个最低有效位所表示的值的位数以生成第二输出,其中,min{(ew-1),bitwidth(fw)}≤p≤(ew-1);以及
在多路复用器接收包括所述第一输出的连续位集合的第一输入以及包括所述第二输出的连续位集合的第二输入,在所述指数的最高有效位等于1的情况下输出所述第一输入,并在所述指数的最高有效位等于0的情况下输出所述第二输入。
20.一种非暂态计算机可读存储介质,其上存储有如权利要求1至3中任一项所述的二进制逻辑电路的计算机可读描述,该计算机可读描述在集成电路制造系统中被处理时使得所述集成电路制造系统:
使用布局处理系统处理所述二进制逻辑电路的所述计算机可读描述,以生成体现所述二进制逻辑电路的集成电路的电路布局描述;以及
使用集成电路生成系统根据所述电路布局描述制造所述二进制逻辑电路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1704748.1 | 2017-03-24 | ||
GB1704748.1A GB2560766B (en) | 2017-03-24 | 2017-03-24 | Floating point to fixed point conversion |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108762721A true CN108762721A (zh) | 2018-11-06 |
CN108762721B CN108762721B (zh) | 2024-05-31 |
Family
ID=58688019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810247092.1A Active CN108762721B (zh) | 2017-03-24 | 2018-03-23 | 浮点到定点转换 |
Country Status (3)
Country | Link |
---|---|
US (5) | US10558428B2 (zh) |
CN (1) | CN108762721B (zh) |
GB (1) | GB2560766B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558110A (zh) * | 2018-11-30 | 2019-04-02 | 上海寒武纪信息科技有限公司 | 数据转换装置及相关产品 |
CN111625183A (zh) * | 2019-02-27 | 2020-09-04 | 美光科技公司 | 涉及加速电路系统的系统、设备和方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2560766B (en) | 2017-03-24 | 2019-04-03 | Imagination Tech Ltd | Floating point to fixed point conversion |
US20220229633A1 (en) | 2020-01-07 | 2022-07-21 | SK Hynix Inc. | Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator |
US11663000B2 (en) | 2020-01-07 | 2023-05-30 | SK Hynix Inc. | Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator |
TW202141290A (zh) | 2020-01-07 | 2021-11-01 | 韓商愛思開海力士有限公司 | 記憶體中處理(pim)系統和pim系統的操作方法 |
KR102399197B1 (ko) | 2020-01-17 | 2022-05-18 | 경희대학교 산학협력단 | 이상치 인지 근사적 코딩을 수행하는 전자 장치 그리고 그것의 동작 방법 |
CN111510483B (zh) * | 2020-04-09 | 2022-10-18 | 眸芯科技(上海)有限公司 | 芯片测试中不同网络域之间的配置同步系统、方法及装置 |
CN113377334B (zh) * | 2021-08-16 | 2021-11-02 | 北京微核芯科技有限公司 | 一种浮点数据处理方法、装置及存储介质 |
JP7526538B1 (ja) | 2024-03-15 | 2024-08-01 | 明男 三水 | 検索装置、検索方法、及びプログラム |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4475173A (en) * | 1980-09-30 | 1984-10-02 | Heinrich-Hertz-Institut fur Nachrichtentechnik | Multibit unidirectional shifter unit |
US4511990A (en) * | 1980-10-31 | 1985-04-16 | Hitachi, Ltd. | Digital processor with floating point multiplier and adder suitable for digital signal processing |
US4815021A (en) * | 1986-01-30 | 1989-03-21 | Star Technologies, Inc. | Multifunction arithmetic logic unit circuit |
US6144977A (en) * | 1995-07-10 | 2000-11-07 | Motorola, Inc. | Circuit and method of converting a floating point number to a programmable fixed point number |
US6986142B1 (en) * | 1989-05-04 | 2006-01-10 | Texas Instruments Incorporated | Microphone/speaker system with context switching in processor |
CN101452571A (zh) * | 2007-12-07 | 2009-06-10 | 辉达公司 | 积和熔加功能单元 |
US20110320513A1 (en) * | 2010-06-25 | 2011-12-29 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US20120054256A1 (en) * | 2010-06-25 | 2012-03-01 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
CN105468331A (zh) * | 2014-09-26 | 2016-04-06 | Arm有限公司 | 独立的浮点转换单元 |
US20170293471A1 (en) * | 2014-03-28 | 2017-10-12 | Universidad De Málaga | Arithmetic units and related converters |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04290122A (ja) * | 1991-03-19 | 1992-10-14 | Fujitsu Ltd | 数値表現変換装置 |
JP3253660B2 (ja) * | 1991-12-19 | 2002-02-04 | 松下電器産業株式会社 | 数値丸め装置および数値丸め方法 |
JP3731565B2 (ja) * | 2002-06-18 | 2006-01-05 | ソニー株式会社 | データ変換装置 |
US9608662B2 (en) * | 2014-09-26 | 2017-03-28 | Arm Limited | Apparatus and method for converting floating-point operand into a value having a different format |
US9722629B2 (en) * | 2015-01-15 | 2017-08-01 | Huawei Technologies Co., Ltd. | Method and apparatus for converting from floating point to integer representation |
US10310809B2 (en) * | 2016-04-08 | 2019-06-04 | Arm Limited | Apparatus and method for supporting a conversion instruction |
GB2560766B (en) | 2017-03-24 | 2019-04-03 | Imagination Tech Ltd | Floating point to fixed point conversion |
-
2017
- 2017-03-24 GB GB1704748.1A patent/GB2560766B/en active Active
-
2018
- 2018-03-23 CN CN201810247092.1A patent/CN108762721B/zh active Active
- 2018-03-26 US US15/935,313 patent/US10558428B2/en active Active
-
2020
- 2020-01-04 US US16/734,317 patent/US10691411B2/en active Active
- 2020-05-18 US US16/876,402 patent/US10884702B2/en active Active
-
2021
- 2021-01-05 US US17/141,284 patent/US11573766B2/en active Active
-
2023
- 2023-02-01 US US18/104,719 patent/US20230176814A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4475173A (en) * | 1980-09-30 | 1984-10-02 | Heinrich-Hertz-Institut fur Nachrichtentechnik | Multibit unidirectional shifter unit |
US4511990A (en) * | 1980-10-31 | 1985-04-16 | Hitachi, Ltd. | Digital processor with floating point multiplier and adder suitable for digital signal processing |
US4815021A (en) * | 1986-01-30 | 1989-03-21 | Star Technologies, Inc. | Multifunction arithmetic logic unit circuit |
US6986142B1 (en) * | 1989-05-04 | 2006-01-10 | Texas Instruments Incorporated | Microphone/speaker system with context switching in processor |
US6144977A (en) * | 1995-07-10 | 2000-11-07 | Motorola, Inc. | Circuit and method of converting a floating point number to a programmable fixed point number |
CN101452571A (zh) * | 2007-12-07 | 2009-06-10 | 辉达公司 | 积和熔加功能单元 |
US20110320513A1 (en) * | 2010-06-25 | 2011-12-29 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US20120054256A1 (en) * | 2010-06-25 | 2012-03-01 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US20170293471A1 (en) * | 2014-03-28 | 2017-10-12 | Universidad De Málaga | Arithmetic units and related converters |
CN105468331A (zh) * | 2014-09-26 | 2016-04-06 | Arm有限公司 | 独立的浮点转换单元 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558110A (zh) * | 2018-11-30 | 2019-04-02 | 上海寒武纪信息科技有限公司 | 数据转换装置及相关产品 |
CN109558110B (zh) * | 2018-11-30 | 2021-06-01 | 上海寒武纪信息科技有限公司 | 数据转换装置及相关产品 |
CN111625183A (zh) * | 2019-02-27 | 2020-09-04 | 美光科技公司 | 涉及加速电路系统的系统、设备和方法 |
US11714605B2 (en) | 2019-02-27 | 2023-08-01 | Micron Technology, Inc. | Acceleration circuitry |
Also Published As
Publication number | Publication date |
---|---|
GB201704748D0 (en) | 2017-05-10 |
US20180275960A1 (en) | 2018-09-27 |
GB2560766A (en) | 2018-09-26 |
US10884702B2 (en) | 2021-01-05 |
US20200142668A1 (en) | 2020-05-07 |
US10691411B2 (en) | 2020-06-23 |
GB2560766B (en) | 2019-04-03 |
US20210132902A1 (en) | 2021-05-06 |
US20230176814A1 (en) | 2023-06-08 |
CN108762721B (zh) | 2024-05-31 |
US11573766B2 (en) | 2023-02-07 |
US20200278834A1 (en) | 2020-09-03 |
US10558428B2 (en) | 2020-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108628589A (zh) | 浮点到定点转换 | |
CN108762721A (zh) | 浮点到定点转换 | |
US10838695B2 (en) | Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks | |
US8166092B2 (en) | Arithmetic device for performing division or square root operation of floating point number and arithmetic method therefor | |
US11645042B2 (en) | Float division by constant integer | |
Villalba et al. | Fast HUB floating-point adder for FPGA | |
US20240134607A1 (en) | Hardware to perform squaring | |
US11829728B2 (en) | Floating point adder | |
GB2560830A (en) | Floating point to fixed point conversion | |
JP2868075B2 (ja) | 浮動小数点演算処理装置 | |
Zheng et al. | Floating-point unit processing denormalized numbers | |
GB2590865A (en) | Float division by constant integer with output subtraction |
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 | ||
TG01 | Patent term adjustment | ||
TG01 | Patent term adjustment |