CN105468331B - 独立的浮点转换单元 - Google Patents
独立的浮点转换单元 Download PDFInfo
- Publication number
- CN105468331B CN105468331B CN201510600250.3A CN201510600250A CN105468331B CN 105468331 B CN105468331 B CN 105468331B CN 201510600250 A CN201510600250 A CN 201510600250A CN 105468331 B CN105468331 B CN 105468331B
- Authority
- CN
- China
- Prior art keywords
- input
- floating point
- rounding
- significand
- output
- 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
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 72
- 238000000034 method Methods 0.000 claims description 46
- 238000010276 construction Methods 0.000 claims description 38
- 230000000295 complement effect Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 description 29
- 238000007792 addition Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 3
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 2
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- 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)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开涉及独立的浮点转换单元。一种数据处理装置,包括:浮点加法器电路;以及浮点转换电路,该浮点转换电路通过对具有来自格式列表中的格式的任意输入执行转换来生成作为输出的浮点数,其中格式列表包括整数、定点数、以及具有小于输出浮点数的格式的浮点数。浮点转换电路物理上不同于浮点加法器电路。
Description
技术领域
本公开涉及数据处理领域。
背景技术
在数据处理装置中,数字可以被以多种不同格式中的一种格式表示。例如,32位整数格式使用32位来表示整个二进制数。另一示例是64位整数格式,其使用64位来表示整个二进制数。64位格式中使用的增多的位数可以使得相比32位整数格式表示的数值范围更大范围的值被表示。
另一示例格式是浮点数。浮点数可以被用来表示任何实数(而不仅仅是任何整数)。与利用整数格式的情况一样,增大用于表示浮点数的位数一般会增大可以被表示的值的范围。另外,增大用于表示浮点数的位数可以增加表示数字的精确度。
通常,在数据处理装置中,期望能够从多种不同的格式转换到浮点格式。例如,如果程序员希望将整数与小数相加,则一种方法是首先将整数转换为浮点数。替代地,如果要求更高的精度,则期望增大用于表示浮点数的位数,并且在这种情形下,更少的位表示的输入浮点数提供了输入格式。
期望允许多种不同格式之间的直接转换,因为这可以减少转换到中间格式导致的延时(这使得两个以上转换成为必要)。但是,操控多个直接转换的电路通常更为复杂,因此相比支持较少直接转换的电路需要更多空间。更大的电路会导致具有更高功耗的更大设备,这在低功耗设备中是不期望的。
发明内容
根据一个方面,提供了一种数据处理装置,包括:浮点加法器电路;以及浮点转换电路,该浮点转换电路通过对具有格式列表中的格式的任意输入执行转换来生成作为输出的浮点数,该格式列表包括整数、定点数、以及具有小于输出浮点数的格式的浮点数,其中浮点转换电路物理上不同于浮点加法器电路。
根据第二方面,提供了一种操作数据处理装置的方法,该数据处理装置包括浮点加法器电路和浮点转换电路,其中所述浮点转换电路物理上不同于所述浮点加法器电路,并且所述方法包括由数据处理装置执行的以下步骤:接收具有格式列表中的格式的任意输入,其中格式列表包括整数、定点数、以及具有小于所述输出浮点数的格式的浮点数;以及通过对输入执行转换生成作为输出的浮点数。
根据第三方面,提供了一种数据处理装置,包括:用于执行浮点加法的装置;以及用于执行浮点转换的装置,所述用于浮点转换的装置通过对具有格式列表中的格式的任意输入执行转换生成作为输出的浮点数,该格式列表包括整数、定点数、以及具有小于所述输出浮点数的格式的浮点数,其中,所述用于执行浮点转换的装置物理上不同于所述用于执行浮点加法的装置。
附图说明
仅通过示例,参考附图中示出的本发明的实施例来进一步描述本发明,其中:
图1是示意性地示出根据一个实施例的电路配置的示意图;
图2是示意性地示出根据一个实施例用于对输入的有效数进行规范化的电路的示意图;
图3是示出根据一个实施例的各种输入可以被如何调整的示意图;
图4是示意性地示出根据一个实施例的用于舍入经规范化的有效数的电路的示意图;
图5是示出根据一个实施例的用于通过对输入执行转换来生成作为输出的浮点数的方法的流程图,其中输入可以具有多种不同格式;
图6是示出根据一个实施例的对输入的有效数进行规范化、生成指数、对经规范化的有效数执行舍入、以及调整指数的处理的流程图;以及
图7是示出根据一个实施例的将从输入生成的不同值相结合以产生经转换的输出的处理的流程图。
具体实施方式
浮点(FP)是使用少数的位来近似实数的有用途径。IEEE 754-2008浮点标准提出了浮点数的多种不同格式。示例包括二进制64(也称为双精度或DP)、二进制32(也称为单精度或SP)、以及二进制16(也称为半精度或HP)。数字64、32、和16是指每种格式需要的位数。
浮点数非常类似于科学课中教的“科学计数法”,其中负两百万可以替代写成-2.0×106。这个数字的各部分是符号(在这个示例中为负)、有效数(2.0)、指数的基数(10)、以及指数(6)。所有这些部分在浮点数中具有类似物,尽管存在不同,其中最重要的不同是组成部分被存储为二进制数,并且指数的基数(base of exponent)总是2。浮点数一般包括符号位、一些数目的偏置指数位、以及一些数目的小数位:
负数的符号是1,正数的符号是0。包括零在内的每个数字都具有符号。
指数被偏置,意味着真指数不同于数字中存储的指数。例如,经偏置的SP指数是8位长,并且在0到255范围内变化。指数0和255是特例,所有其他指数都具有偏差127,这意味着真指数比经偏置的指数小127。最小的经偏置的指数是1(其对应于真指数-126)。最大的经偏置的指数是254(其对应于真指数127)。HP和DP指数以相同的方式工作,具有以上表格中指示的偏差。SP指数255(或者DP指数2047、或者HP指数31)被保留用于无穷大和被称为NaN(没有这样的值)的特殊符号。无穷大(可以是正或者负)具有为零的小数。具有指数255和非零小数的任意数是NaN。无穷大提供饱和值,所以其实际上表示“这种计算导致比我们可以用这种格式表示的数更大的数”的意思。NaN针对实数上没有数学定义的操作(例如,除以零、或者将负数作为平方根)被返回。
指数零(在任意格式)被保留用于次正规数和零。正规数(normal number)表示这样的值:符号×1小数×2e,其中e是根据经偏置的指数计算出的真指数。术语“1.小数”被称为有效数,1不作为浮点数的部分被存储,但是替代地从指数推定得出。除了零和最大指数以外的所有指数指示形式“1.小数”的有效数。指数零指示形式“0.小数”的有效数、以及针对给定格式等于(1-偏差)的真指数。这样的数字被称为次正规数(历史上,这些数字被称为“非正规数”,但是现代用法更喜欢用术语“次正规数”)。
具有等于零的指数和小数(fraction)二者的数为零。下面的表格具有HP格式的一些示例数字。条目是二进制的,并且添加了字符“_”来增加可读性。注意,次正规条目(表格的第四行,具有零指数)相对于在前行中的正规条目产生了不同的有效数。
符号 | 5位指数 | 10位小数 | 11位有效数 | 值 |
0 | 01111 | 00_0000_0000 | 100_0000_0000 | 1.0×2<sup>0</sup> |
1 | 01110 | 10_0000_0000 | 110_0000_0000 | -1.0×2<sup>-1</sup> |
0 | 00001 | 10_0000_0000 | 110_0000_0000 | 1.1×2<sup>-14</sup> |
0 | 00000 | 10_0000_0000 | 110_0000_0000 | 0.1×2<sup>-14</sup> |
1 | 11111 | 00_0000_0000 | 负无穷大 | |
0 | 11111 | 00_1111_0011 | NaN |
浮点实现中的大部分复杂度是由于次正规数,因此它们通常由微代码或者软件操控。
操控符号的方式被称为符号-量值,并且不同于整数被存储在计算机中的通常方式(二进制补码)。在符号-量值表示中,同一数字的正版本和负版本仅在符号位不同。包括符号位和3个有效数位的4位符号-量值整数将如下表示+1和-1:
+1=0001
-1=1001
在二进制补码表示中,n位整数i由二进制n+1位值2n+i的低n位表示,所以4位二进制补码整数将如下表示+1和-1:
+1=0001
-1=1111
二进制补码格式实际上对有符号整数是通用的,因为其简化了计算机运算。
定点数可以看上去与整数类似甚至相同,但是实际上表示具有一定数目的小数位的值。传感器数据通常是定点格式的。利用定点数,程序员通常必须追踪“二进制点”(即,数字的整数和小数部分之间的分隔符),并且还必须不停地对数字移位以保持这些位处于正确的位置。
IEEE-754标准要求大多数浮点操作被计算(如同该操作是利用无界范围和精度进行一样)然后被舍入,以纳入浮点数。如果计算精确匹配浮点数,则该值总是被返回,但是通常计算会产生介于两个连续的浮点数之间的值。舍入(rounding)是选择两个连续数字中的哪个应该被返回的处理。
存在多种舍入方式(称为舍入模式);这里示出了六个示例:
一种常见的实施方式是进行操作,查看截断值(即,纳入浮点格式的值)以及所有剩余位,然后如果某些条件满足则调整截断值。这些计算全部基于以下三个值:
L-(最低)截断值的最低有效位
G-(保护)下一个最高有效位(即,没有包括在截断中的第一个位)
S-(粘着)不是截断部分的所有剩余位的逻辑或
给出这三个值和截断值,我们可以根据以下表格计算正确舍入后的值:
模式 | 对截断值的改变 |
RNE | (L&G)|(G&S)情况下,递增 |
RNA | G情况下,递增 |
RZ | 无 |
RP | 正&(G|S)情况下,递增 |
RM | 负&(G|S)情况下,递增 |
RX | G|S情况下,将L置位 |
例如,考虑将两个4位有效数相乘,然后舍入到4位有效数。
sig1=1011(十进制的11)
sig2=0111(十进制的7)
相乘产生:
sig1×sig2=1001_101(十进制的77)
截断的4位结果是结果中的最右4位-1101。截断的4位结果的最低有效位(第一数位1)被标记以L,下一个位(1)被标记以G,并且S是剩余位的逻辑或(即,S=(0|1)=1)。为了舍入,我们根据舍入模式和以上表格中的计算调整我们的4位结果(1001)。所以,例如在RNA舍入中,G被置位从而使得我们通过返回1001+1=1010而增大。对于RX舍入,G|S为真,所以我们设置L为1(其已经为1,所以在这种情况下没有改变)并且返回1001。
进行舍入的更快方式是添加舍入常数作为有效数加法的部分。为了看这个如何工作,考虑以美元和美分为单位对数字进行相加,然后舍入到美元。如果我们进行以下加法运算:
$1.27+$2.35=$3.62
我们看到总和$3.62更接近$4而不是$3,所以舍入到最近模式应该返回$4。如果我们以二进制来表示数字,则我们可以使用前面描述的L,G,S方法得到相同的结果。但是,假设我们仅加50美分然后截断结果。
$1.27+$2.35+$0.05(舍入添加)=$4.12
如果我们仅返回我们的总和($4.12)中的美元量($4),则我们使用RNA舍入模式进行了正确舍入。如果我们加$0.99而不是$0.50,则我们将使用RP舍入进行正确舍入。RNE稍微复杂一些:我们加$0.50,截断,然后查看剩余的美分。如果剩余的美分是非零的,则截断结果是正确的。如果剩余零美分,则我们在添加之前正好处于两个美元量之间,所以我们选择偶数美元量。对于二进制浮点,这意味着将美元量的最低有效位设置为零。
三个数相加比两个数相加稍微慢一点,所以我们使用舍入添加(roundinginiection)相比以下情况可以更快地得到舍入后的结果:我们对两个有效数相加,检查L、G、S,然后根据舍入模式增大我们的结果。对于浮点数,舍入添加是三个不同值中的一个,这些值取决于舍入模式和(有时)结果的符号。
RNA和RNE二者要求我们在G位置添加1(就像以上的美元和美分示例中加$0.50美分一样)。
RP和RM舍入取决于符号和模式。RP向上舍入正结果(朝向正无穷),但是截断负结果(再次朝向正无穷舍入)。类似地,RM向上舍入负结果(朝向负无穷),但是截断正结果(再次朝向负无穷舍入)。因此,我们将RM和RP划分为两种情况:当符号匹配舍入方向时上舍入(round up,RU),以及当符号不同于舍入添加时截断(RZ)。对于RU情况,我们在G位的位置和逻辑上对S有贡献的每个位置添加1(就像美元和美分示例中加$0.99一样)。
对于RZ和RX模式、和降低到RZ模式的RP和RM模式,我们添加零。
对于大多数舍入模式,与舍入添加相加然后截断给出了正确的舍入后结果。两个例外是RNE和RX,它们要求我们在执行加法之后检查G和S。对于RNE,如果G和S均为零,则我们设置L为零。对于RX,如果G或S为非零,则我们设置L为1。
第一方面的浮点转换电路物理上不同于浮点加法器电路(例如,分离)。如前面所述,常见的是浮点转换电路形成加法器电路的一部分,因为到特定格式的浮点数的转换通常在对浮点数执行ADD操作时是必需的。但是,浮点加法器电路的剩余部分通常比较大,并且对整个单元上电以执行转换是浪费的。通过分离出执行转换的电路,可以提供电路尺寸的整体减小。多个不同格式可以包括:整数、定点数、以及具有比所述输出的所述格式更小的格式的浮点数。浮点转换电路因此接受至少这些格式的任意输入。通过接受各种不同格式,浮点转换电路可以无需执行从输入到中间格式、以及从中间格式到输出格式的转换而执行转换。
格式列表可以包括次正规浮点数。因此,有可能在更大范围的输入上执行转换,而不要求在转换可以被执行之前以特定方式对输入进行格式化。
尽管有多种对次正规浮点数进行规范化的方式,但是在一些实施例中,响应于输入为次正规浮点数,经规范化的有效数可以通过对输入进行多次移位使得最高有效位为1来产生。
浮点转换电路可以包括以下各项中的一项或多项:能够对负整数或定点输入进行反向的反向器电路;能够确定输入中前导1的位置的计数前导零电路;能够对输入进行规范化的左移位器电路;以及用于将经移位的输入、根据舍入模式的舍入常数、以及经移位的输入被反向的情况下的进位输入(carry-in)相结合的整数加法器电路。这种电路可以被用于使用少量电路空间来执行浮点转换。整数加法器电路中使用进位输入值意味着从负数的转换可以被有效操控。特别地,一种表示负整数的方法是使用二进制补码表示。可以通过采用二进制反码(即,对数字的二进制表示中的零和1进行反向)并且加1,在数字与其二进制补码表示之间转换。浮点数不使用二进制补码表示来表示负数。因此,如果到浮点转换电路的输入是二进制补码形式的,则必须将数转换为符号-量值形式。如已经提及的,这是通过采用二进制反码形式并且加1来实现的。由于整数加法器电路可以为了实现舍入而将舍入常数相加,所以可以延迟加1直到舍入常数被相加为止,并且可以通过向执行舍入加法的整数加法器提供进位输入值同时进行两个加法。这节省了处理中的额外步骤,并且还省去了向装置提供第二加法单元。
浮点转换电路可以包括舍入电路,该舍入电路通过将舍入常数与所述经规范化的有效数相加对所述经规范化的有效数进行舍入,来产生经舍入的有效数。特别地,舍入电路可以执行添加舍入(iniection rounding)。因此,舍入可以在无需对数字本身进行任何分析的条件下被实现。舍入处理因此可以被简单且快速地实现。
舍入电路可以根据舍入模式生成舍入常数。已经讨论了多种不同舍入模式和它们的操作。通过根据舍入模式生成舍入常数,可以使用相同的电路来支持各种不同的舍入模式。
舍入电路可以根据所述舍入模式是否是舍入到零而生成舍入常数。另外,舍入电路可以根据舍入模式是否是上舍入来生成舍入常数。最后,舍入常数可以根据输出的格式被生成。舍入常数可以根据所使用的舍入模式是哪种(如果有舍入模式的话)而变化。舍入常数还可以根据输出格式变化。输出格式可以指示用于表示数字的位数和/或这些位被如何实际使用。
例如,舍入电路可以根据以下各项生成舍入常数:指示所述输出是否是32位浮点数并且所述舍入方法是否不是舍入到零的第一值;指示所述输出是否是32位浮点数并且所述舍入方法是否是上舍入的第二值;指示所述输出是否是64位浮点数并且所述舍入方法是否不是舍入到零的第三值;以及指示所述输出是否是64位浮点数并且所述舍入方法是否是上舍入的第四值。例如,舍入常数可以是这四个值的级联。
舍入常数可以是64位的数。因此,可以对32位以及64位的输入二者进行舍入。在其他实施例中,舍入常数可以是32位的数。
在一个示例中,舍入电路可以通过依次输出以下各项生成舍入常数:值0输出24次;所述第一值;所述第二值输出28次;对所述第三值和所述第二值执行逻辑或的第一结果;第二结果输出10次,其中所述第二结果是对所述第四值和所述第二值执行逻辑或的结果。
舍入电路可以输出指示所述舍入常数与所述经规范化的有效数相加是否产生了溢出的进位输出值(carry out value)。例如,进位输出值可以指示舍入常数与经规范化的有效数的和是否大于执行加法的电路能够表示的最大数。
浮点转换电路可以包括将经舍入的有效数、指数或者经调整的指数之一、以及符号位相结合,以产生浮点数的结合电路。根据进位输出值存在与否(即,加法结果是否大于电路能表示的数),经舍入的有效数可以被与指数或者经调整的指数相结合。例如,在一些实施例中,结合电路可以在所述进位输出值指示没有溢出发生的情况下将经舍入的有效数与所述指数相结合,并且在所述进位输出值指示溢出发生的情况下将所述经舍入的有效数与所述经调整的指数相结合。
浮点转换电路可以包括有效数构建电路,该有效数构建电路接收所述输入并且通过使用移位电路对所述输入执行移位来生成经规范化的有效数。另外,响应于输入为二进制补码格式,有效数构建电路可以通过对输入的位进行反向来生成经规范化的有效数。如前所述,在一些实施例中,从二进制补码格式到自然表示的完全转换还会涉及到加1。这可以通过在任何后续加法步骤中将进位输入值的值设置为1来实现。
浮点转换电路可以包括指数构建电路,该指数构建电路接收所述输入并且根据所述输出的精度的指数偏差来提供指数,其中响应于所述输入是浮点数,所述指数构建电路通过将所述输出的所述精度的所述指数偏差与所述输入的指数相加,并且减去所述次数和所述输入的精度的指数偏差来提供所述指数;其中,响应于所述输入的所述指数为零,所述指数构建电路通过加1来调整所述指数;并且其中,响应于所述输入不是浮点数,所述指数构建电路通过将所述输出的所述精度的所述指数偏差、所述输入的非小数位的数目、所述次数相加并减1来提供所述指数。
在一些实施例中,有效数构建电路可以调整输入,从而使得输入具有预定义数目的位。这可以通过“填充(padding)”来实现。通过添加较低有效位,可以使数字具有正确的(预定义的)位数。例如,可向32位数添加较低有效位以产生64位数。类似地,可以向16位数添加位,以产生64位数。该修改后的64位数可以成为输入。
图1示意性地示出了根据一个实施例的电路配置。浮点转换单元(也称为浮点转换电路)10接收具有特定格式的输入。浮点转换单元对输入进行转换,以产生具有不同格式的输出。该输出随后可以被提供给例如,浮点加法器(也称为浮点加法器电路)20,浮点加法器20与浮点转换单元10物理上是分离的。所以,注意,浮点转换单元10和浮点加法器20被具体化为彼此不同的组件。浮点转换单元10接收输入,输入被发送到有效数构建单元30和指数构建单元40。有效数构建单元30在步骤1a中接收输入,并且生成经规范化的有效数。如前所述,有效数包括正在被表示的数字的有效数位。换言之,有效数是除指数以外的数字部分。有效数构建单元30产生经规范化的有效数。换言之,有效数构建单元30的输出包含作为最高有效数位的数1。通过对有效数进行规范化并且将值传递到舍入单元50,舍入单元50可以对具有类似格式的数进行操作。结果,舍入单元50不必处理具有多种不同格式的不同输入。
在步骤2a,舍入单元50对有效数构建单元30产生的经规范化的有效数执行舍入处理,以产生经舍入和规范化的有效数。
到浮点转换单元10的输入也被传递到指数构建单元40。指数构建单元40可以在步骤1b中使用两个不同公式之一来确定输出数的指数应该是什么。注意,有效数构建单元30和指数构建单元40可以分别实质上并行操作。指数构建单元40的输出被传递到指数调整单元60和结合单元70。
指数调整单元60在步骤2b中接收已经由指数构建单元40构建的指数,并且通过向该值加1来产生经调整的指数。得到的经调整的指数被作为输出传递到结合单元70。注意,舍入单元50和指数调整单元60可以分别并行操作。
结合单元70接收指数构建单元40计算出的指数、指数调整单元60计算出的经调整的指数、以及舍入单元50生成的经舍入和规范化的有效数作为输入。来自舍入单元50的经舍入和规范化的有效数的至少一部分被与来自指数构建单元40的指数、或者来自指数调整单元60的经调整的指数相结合,以产生输出(其是经转换的数)。结合单元70的输出可以被传递到例如,浮点加法器20。
浮点转换单元10能够从各种不同格式转换到各种不同格式。特别地,图1中所示的实施例中的浮点转换单元10能够采用16位整数、32位整数、64位整数、浮点数、或者定点数作为输入。整数输入可以是有符号的或者没有符号的。当输入是定点数或者整数时,输出可以是标准浮点格式中的任意格式。当输入是浮点数时,输出可以是任意更大格式的浮点数(例如,半精度或者单精度浮点数可以被转换为双精度数,或者半精度数可以被转换为单精度数)。这全都可以通过使用相同的电路来实现。这里描述的浮点转换电路10相对于其他提出的方案具有非常小且快速的优点。特别地,浮点转换单元10的延时可以小至两个周期。
由有效数构建单元30、指数构建单元40、舍入单元50、以及指数调整单元60中的每个单元执行的处理可以被认为是四个不同的步骤,其中的一些步骤可以被并行执行。特别地,有效数构建单元30可以被认为执行处理1a,指数构建单元40可以被认为执行处理1b(应该理解,处理1a和1b被并行执行),同时舍入单元50可以被认为执行处理2a,并且指数调整单元60可以被认为执行处理2b(同样,处理2a和2b被并行执行)。但是需要注意,步骤的这种分配仅是说明性的,并且尽管这里描述的实施例可以基本或者完全并行地执行特定处理,但是在其他实施例中,处理可以被顺序或者以其他方式并行执行。
图2示出了根据一个实施例的有效数构建单元30。如前所述,有效数构建单元30可以被认为执行步骤1a。特别地,有效数构建单元30被配置为从输入生成经规范化的有效数。有效数构建单元30包括多路复用器80,该多路复用器80接收输入。多路复用器80被配置为对输入进行转换从而使得他们具有一致的格式。具体地,多路复用器80的输出将具有64位。这可以通过对输入(其可能具有少于64位)进行填充来实现。另外,填充可以在最低有效位处进行,从而使得感兴趣的位被全部对齐。接受的不同输入、以及转换发生的方式参考图3被示出。
如果到有效数构建单元30的输入对应于负整数或者负定点数,则neg_convert的值首先被设置为1,并且多路复用器90被配置为选择多路复用器80的输出的经反向的版本作为输入。反向由反向器100实现。换言之,如果输入是二进制补码格式的,则使用反向器100,二进制反码可以被复用器90采用并输出。否则,多路复用器80的输出的原始形式将被多路复用器90输出。另外,neg_convert的值被多路复用器90输出,以指示输入是否是二进制补码格式的。因此,多路复用器90的输出不是二进制补码格式的。由多路复用器90输出的作为结果的64位值被称为1s_in[63:0]。应该明白,到自然形式的转换并不是完全在这个阶段完成的,因为从二进制补码格式到自然格式的转换也要求与值1相加。然而,该加法是在随后阶段实现的。
在图2中所示的实施例中,前导零的数目由计数器105计数。值随后作为值lzc[5:0]被发送给左移位器110,并且左移位器110对多路复用器90输出的值左移位值lzc[5:0]指示的次数。换言之,多路复用器90输出的值被左移位,直到最高有效位等于1为止。将明白的是,在一些实施例中,诸如计数器105之类的特定计数器将不是必需的,因为前导零的数目可以由系统中的其他电路提供。例如,对指令进行解码的解码单元可以向左移位器110提供前导零的数目。
该处理的结果是经规范化的有效数,该经规范化的有效数被传递到舍入单元50。
图3示出了根据一个实施例的输入是如何被多路复用器80转换为具有64位的一致格式的:
对于半精度整数,64位格式数由半精度输入的11位有效数及跟随其后的53个零组成;
对于单精度数,输出由输入的23位有效数及跟随其后的41个零组成;
对于16位有符号或者没有符号的整数或者定点数,输出由该16位数及跟随其后的48个零组成;
对于32位有符号或者没有符号的整数或者定点数,输出由该32位数及跟随其后的32个零组成;并且
对于64位有符号或者没有符号的整数或者定点数,输入直接被作为输出而输出。
如前所述,输入通过多路复用器80被以多种方式中的一种转换,并且输出被转发到多路复用器90和反向器100。
图4示出了根据一个实施例的舍入单元50。在图4中示出的实施例中,舍入单元包括整数加法器120。整数加法器接收从有效数构建单元30的左移位器110输出的经规范化的有效数、舍入常数cvt_round[63:0]、以及由有效数构建单元30中的多路复用器90确定的值neg_convert作为输入。
通过将值neg_convert作为进位输入值提供给整数加法器120,可以将二进制补码格式的输入进行转换。初始步骤使用有效数构建单元30中的多路复用器90进行,其中输入在多路复用器90中被反向。通过使用进位输入值在整数加法器120处执行加1的加法步骤,只需要单个整数加法器。注意,如果到有效数构建单元30中的多路复用器90的输入不是二进制补码格式的,则值neg_convert将为零,并且因此没有进位输入值在舍入单元50中的整数加法器120中被提供。
现在讨论舍入常数cvt_round[63:0]的构建。在图4所示的实施例中,添加舍入处理被使用,以执行舍入。添加舍入是一种在不分析将被舍入的数的条件下实现舍入的技术。相反,诸如加法和截断之类的操作可以在不对数本身进行分析的情况下被执行。舍入常数根据多个参数被生成。第一参数指示输出大小是单精度数(32位)还是双精度数(64位)。第二参数指示舍入模式是否舍入到零。换言之,该参数表示舍入模式是否截断将被舍入的数。第三参数指示舍入模式是否是上舍入。换言之,该参数表示舍入模式是否涉及对数的上取整。使用这些参数,四个不同的值可以被计算出来。这些值中的每个值都是单个位,并且被示出如下:
sp_guard在输出是单精度的并且舍入模式不是舍入到零的情况下值为1,在其他情况下值为0;
sp_ru在输出是单精度的并且舍入模式是上舍入的情况下值为1,在其他情况下值为0;
dp_guard在输出为双精度的并且舍入模式不是舍入到零的情况下值为1,在其他情况下值为0;
dp_ru在输出是双精度的并且舍入模式是上舍入的情况下值为1,在其他情况下值为0。
64位的舍入常数cvt_round[63:0]随后可以通过以下处理生成:输出24个0;输出sp_guard的值;重复输出sp_ru的值28次;输出值dp_guard和sp_ru的逻辑或;然后重复输出值dp_ru和sp_ru的逻辑或10次。
将舍入常数cvt_round[63:0]与有效数构建单元30中的左移位器110输出的经规范化的有效数相加的结果是经规范化和舍入的有效数(rounded_sig[63:0])。整数加法器120的另一输出可以是cout,其是整数加法器120执行的加法的结果溢出的情况中的进位输出值。该值被结合单元70用来确定使用指数构建单元40计算出的指数还是指数调整单元60产生的经调整的指数。
图5示出了与根据一个实施例的通过对输入执行转换来生成作为输出的浮点数的方法相对应的流程图。
在步骤S10,输入被接收。注意,输入可以具有包括半精度浮点数、单精度浮点数、16位整数、32位整数、64位整数、16位定点数、32位定点数、或者64位定点数在内的各种不同的格式。在步骤S20,输入被用来生成经规范化的有效数(对应于处理1a)。这可以使用例如图2中所示的有效数构建单元30来执行。在步骤S30(对应于处理1b),指数根据输入被生成。在步骤S40(对应于处理2a),在步骤S20产生的经规范化的有效数随后被舍入。这可以通过使用例如,图4中所示的舍入单元50执行。对经规范化的有效数进行舍入处理的步骤可以使用多种不同的方法。但是,在图5所示的实施例中,舍入处理使用添加舍入,其包括将舍入常数与经规范化的有效数相加。在步骤S50(对应于处理2b),在步骤S30生成的指数被调整,以生成经调整的指数。最后,在步骤S60,在步骤S40产生的经规范化和舍入的有效数的至少一部分被与指示输出数是正还是负的符号位、以及在步骤S30生成的指数或者在步骤S50生成的经调整的指数之一相结合,以产生输出值。该最终步骤在图7中更详细地描述。
注意,在图5所示的实施例中,该系列步骤被顺序示出。但是,这不是必须的。在其他实施例中,步骤S20处的经规范化的有效数的生成、以及步骤S30处的指数的生成可以并行进行。类似地,步骤S40处的对经规范化的有效数进行舍入的处理和步骤S50处的经调整的指数的生成可以并行进行。替代地,其他并行化处理也是适当的。类似地,并行化处理可以完全并行或者是实质并行。换言之,在实践中,并行化处理可以包括一定数量的交织,或者可以包括横跨“并行”发生的处理使用共享的变量。
图6是示出根据一个实施例的对输入的有效数进行规范化、生成指数、对经规范化的有效数执行舍入、以及调整指数的处理的详细流程图。
处理1a对应于图5的步骤S20。该处理也可以由例如,有效数构建单元30执行。在步骤S21,输入被转换。例如,输入可以被填充,以产生64位值,其中填充被以附加零的形式添加到最低有效位。这种格式化在图3中被详细示出。在步骤S22,确定经转换的输入值是否为负的。例如,可以确定经转换的输入是否为二进制补码格式。
如果输入为负,则流程进行到步骤S24,在该步骤该数的二进制反码被采用。这可以通过对该数的所有位进行反向来实现。该处理的结果随后在步骤S25处被左移位x次。这里,值x表示数中前导零的数目。因此,在步骤S25,值被左移位,直到最高有效数位为1为止。换言之,采用二进制反码的结果被规范化。该流程随后进行到步骤S41。
如果在步骤S22经转换的输入的值不为负(即,为正或者零),则流程继续到步骤S23,在该步骤输入被左移位x次。该左移位以步骤S25中相同的方式进行。流程随后进行到步骤S42。
处理1b基本上与处理1a同步进行。处理1b对应于图5中的步骤S30,并且包括指数的生成。这可以通过例如,图1中所示的指数构建单元40执行。
在步骤S31,确定输入是否为浮点数。如果输入不是浮点数,则流程进行到步骤S33。在步骤S33,指数被使用以下公式计算出来:
(obias+size-fbits-x-1)其中:
“obias”是与将输出的数的指数相关联的偏差。尽管指数可以为正或者负,但是一般被表示为没有符号的数。因此,为了从所表示的指数确定实际的指数,必须减去偏差。例如,单精度数的偏差是127。因此,如果指数被表示为数1,则真指数为-126(即,1-127)。半精度浮点数的偏差是15,双精度浮点数的偏差是1023。
“size”是用来表示输入数的位数。
“fbits”表示用来表示输入中的小数(如果有的话)的位数。例如,具有3个小数位的32位定点数将具有值3。替代地,不具有小数的64位整数具有值0。
“x”是输入数中前导零的数目。
一旦输出指数的值被以这种方式计算出来,流程进行到步骤S50。如果在步骤S31确定输入是浮点数,则流程进行到步骤S32,在步骤S32输出指数被使用以下等式计算出来:
(obias-ibias+iexp-x),其中:
“obias”是以前讨论的输出的指数的偏差。
“ibias”是输入数的指数的偏差。
“iexp”是输入指数的值。
“x”是输入数中前导零的数目。
流程随后进行到步骤S34,在步骤S34确定输入指数是否为零。如果输入指数为零,则在步骤S35,输出指数加1。在每种情况下,流程随后进行到步骤S50。
有很多可以被用来执行处理1b的不同电路。但是,由于步骤S32和S33不是同时被需要,所以通过对输入多路复用,每个步骤可以使用3:2进位保留加法器及跟随其后的11位进位传播加法器执行。这样的实施方式避免了对额外的有可能复杂的电路的需要,并且可以使处理1b使用少量电路空间(因此利用少量功率)被执行。
处理2a对应于图5中的步骤S40。例如,其可以使用舍入单元50(其示例在图4中被示出)来实现。
如果在前一步骤S22处输入被发现为负,则处理2a可以开始于步骤S41。在步骤S41,值1被与有效数相加,并且流程进行到步骤S42。
如果在步骤S22确定输入不是负的,则处理2a可以直接在步骤S42处开始。在步骤S42,舍入常数被相加。注意,步骤S41和S42可以使用整数加法器来执行,其中该整数加法器采用值neg_convet作为进位输入值(在输入为负的情况下该值被设置为1,在其他情况下该值被设置为0)。这种电路参考图4中所示的实施例被示出。使用加法器进行该处理的优点在于,整数加法器特别小。因此,舍入可以使用少量电路被执行,从而该电路的功率消耗相对较小。在步骤S43,确定与舍入常数(在合适的情况下,该常数为1)相加的结果是否导致进位输出值被生成。换言之,确定与舍入常数相加是否产生了溢出。如果进位输出值在步骤S43处被生成,则流程进行到步骤S44,在步骤S44输出小数被设置为零。
处理2b对应于图5中所示的步骤S50。处理2b也可以使用例如,图1中所示的指数调整单元60被执行。
指数调整单元通过采用在处理1b中生成的指数并且加1生成经调整的指数。
注意,处理2a和2b可以被并行执行。
图7示出了结合单元70可以如何将舍入单元50与指数构建单元40和指数调整单元60中的一者的结果相结合的流程图。结合单元70执行图5中所示的结合步骤S60。
在步骤S61,确定输入是否为负。如果输入为负,则在步骤S62,用在输出中的符号位也被设置为负。否则,在步骤S63,输出的符号位被设置为正。在每种情况中,流程随后进行到步骤S64,在步骤S64确定舍入加法器(例如,整数加法器120)的进位输出值是否为1。如果进位输出值不是1,则在步骤S66如处理1b中一样生成输出的指数。如果舍入加法器的进位输出值等于1,则在步骤S65输出的指数等于在步骤S50计算出的经调整的指数。在每种情况下,流程都继续到步骤S67,在步骤S67经舍入和规范化的有效数的至少一部分被用作小数分量。特别地,如果期望单精度输出,则经舍入和规范化的有效数的高24位被使用。但是,如果期望双精度输出,则高53位被使用。
因此,输出由符号位、指数或者经调整的指数、以及作为处理2a的结果产生并且被舍入单元50输出的经调整和规范化的有效数组成。
因此,作为使用前述电路的结果,可以通过时间和空间高效的方式使用相同的电路从多种不同的输入格式进行转换。
尽管这里参考附图详细描述了本发明的说明性实施例,但是将理解的是本发明不限于这些清楚的实施例,并且本领域技术人员可以在不脱离所附权利要求限定的本发明的范围和精神的条件下做出各种改变、添加和修改。例如,从属权利要求的特征的各种组合可以在不偏离本发明的范围的条件下与独立权利要求的特征相结合。
Claims (17)
1.一种数据处理装置,包括:
浮点加法器电路;以及
浮点转换电路,该浮点转换电路通过对具有来自格式列表中的格式的任意输入执行转换来生成作为输出的浮点数,所述格式列表包括整数、定点数、以及具有小于输出浮点数的格式的浮点数,
其中,所述浮点转换电路物理上不同于所述浮点加法器电路,所述浮点转换电路包括:
有效数构建电路,该有效数构建电路接收所述输入并且通过使用移位电路对所述输入执行移位来生成经规范化的有效数;并且
所述有效数构建电路响应于所述输入是二进制补码格式,通过对所述输入的位进行反向来生成所述经规范化的有效数。
2.根据权利要求1所述的数据处理装置,其中,所述格式列表包括:次正规浮点数。
3.根据权利要求1所述的数据处理装置,
所述浮点转换电路能够响应于所述输入为次正规浮点数,通过对所述输入执行一定次数的移位从而使得最高有效位为1来生成经规范化的有效数。
4.根据权利要求1所述的数据处理装置,其中,所述浮点转换电路包括以下各项中的一项或多项:
反向器电路,该反向器电路能够对负整数或者负定点输入进行反向;
计数前导零电路,该计数前导零电路能够确定所述输入中前导1的位置;
左移位器电路,该左移位器电路能够对所述输入进行规范化;以及
整数加法器电路,用于将经移位的输入、根据舍入模式的舍入常数、以及所述经移位的输入被反向时的进位输入相结合。
5.根据权利要求1所述的数据处理装置,其中,所述浮点转换电路包括:
舍入电路,该舍入电路通过将舍入常数与所述经规范化的有效数相加来对所述经规范化的有效数进行舍入,以产生经舍入的有效数。
6.根据权利要求5所述的数据处理装置,
所述舍入电路根据舍入模式生成所述舍入常数。
7.根据权利要求6所述的数据处理装置,
所述舍入电路根据所述舍入模式是否是舍入到零来生成所述舍入常数;
所述舍入电路根据所述舍入模式是否是上舍入来生成所述舍入常数;并且
所述舍入电路根据所述输出的格式来生成所述舍入常数。
8.根据权利要求6所述的数据处理装置,所述舍入电路根据以下各项生成所述舍入常数:
指示所述输出是否是32位浮点数并且所述舍入方法是否不是舍入到零的第一值;
指示所述输出是否是32位浮点数、并且所述舍入方法是否是上舍入的第二值;
指示所述输出是否是64位浮点数、并且所述舍入方法是否不是舍入到零的第三值;以及
指示所述输出是否是64位浮点数、并且所述舍入方法是否是上舍入的第四值。
9.根据权利要求5所述的数据处理装置,
其中所述舍入常数是64位的数。
10.根据权利要求8所述的数据处理装置,所述舍入电路通过依次输出以下各项来生成所述舍入常数:
值0输出24次;
所述第一值;
所述第二值输出28次;
对所述第三值和所述第二值执行逻辑或的第一结果;
第二结果输出10次,其中所述第二结果是对所述第四值和所述第二值执行逻辑或的结果。
11.根据权利要求5所述的数据处理装置,
所述舍入电路输出指示所述舍入常数与所述经规范化的有效数的所述相加是否产生了溢出的进位输出值。
12.根据权利要求11所述的数据处理装置,其中所述浮点转换电路包括:
结合电路,该结合电路将经舍入的有效数、指数或者经调整的指数之一、以及符号位相结合,来产生所述浮点数。
13.根据权利要求12所述的数据处理装置,
所述结合电路在所述进位输出值指示没有溢出发生的情况下,将所述经舍入的有效数与所述指数相结合;并且
所述结合电路在所述进位输出值指示溢出发生的情况下,将所述经舍入的有效数与所述经调整的指数相结合。
14.根据权利要求3所述的数据处理装置,其中所述浮点转换电路包括:
指数构建电路,该指数构建电路接收所述输入并且根据所述输出的精度的指数偏差提供指数,
所述指数构建电路响应于所述输入为浮点数,通过将所述输出的所述精度的所述指数偏差与所述输入的指数相加,并且减去所述输入的精度的指数偏差和所述次数来提供所述指数;
所述指数构建电路响应于所述输入的所述指数为零而通过加1来调整所述指数;并且
所述指数构建电路响应于所述输入不是浮点数,通过将所述输出的所述精度的所述指数偏差、所述输入的非小数位的数目、以及所述次数相加,并且减去1来提供所述指数。
15.根据权利要求1所述的数据处理装置,
所述有效数构建电路调整所述输入,从而使得所述输入具有预定数目的位。
16.一种操作数据处理装置的方法,该数据处理装置包括浮点加法器电路和浮点转换电路,其中所述浮点转换电路物理上不同于所述浮点加法器电路,所述方法包括由所述数据处理装置执行的以下步骤:
接收具有来自格式列表中的格式的任意输入,所述格式列表包括整数、定点数、以及具有小于输出浮点数的格式的浮点数;以及
通过对所述输入执行转换来生成作为输出的浮点数,
其中,所述浮点转换电路包括:
有效数构建电路,该有效数构建电路接收所述输入并且通过使用移位电路对所述输入执行移位来生成经规范化的有效数;并且
所述有效数构建电路响应于所述输入是二进制补码格式,通过对所述输入的位进行反向来生成所述经规范化的有效数。
17.一种数据处理装置,包括:
用于执行浮点加法的装置;以及
用于执行浮点转换的装置,所述用于执行浮点转换的装置通过对具有来自格式列表中的格式的任意输入执行转换来生成作为输出的浮点数,所述格式列表包括整数、定点数、以及具有小于输出浮点数的格式的浮点数,
其中所述用于执行浮点转换的装置物理上不同于所述用于执行浮点加法的装置,所述用于执行浮点转换的装置包括:
有效数构建电路,该有效数构建电路接收所述输入并且通过使用移位电路对所述输入执行移位来生成经规范化的有效数;并且
所述有效数构建电路响应于所述输入是二进制补码格式,通过对所述输入的位进行反向来生成所述经规范化的有效数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/498,172 US9582248B2 (en) | 2014-09-26 | 2014-09-26 | Standalone floating-point conversion unit |
US14/498,172 | 2014-09-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468331A CN105468331A (zh) | 2016-04-06 |
CN105468331B true CN105468331B (zh) | 2020-12-11 |
Family
ID=54200337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510600250.3A Active CN105468331B (zh) | 2014-09-26 | 2015-09-18 | 独立的浮点转换单元 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9582248B2 (zh) |
KR (1) | KR102430645B1 (zh) |
CN (1) | CN105468331B (zh) |
GB (1) | GB2532309B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9582248B2 (en) * | 2014-09-26 | 2017-02-28 | Arm Limited | Standalone floating-point conversion unit |
CN107340993B (zh) * | 2016-04-28 | 2021-07-16 | 中科寒武纪科技股份有限公司 | 运算装置和方法 |
CN107330515A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行人工神经网络正向运算的装置和方法 |
US10019231B2 (en) * | 2016-08-22 | 2018-07-10 | Arm Limited | Apparatus and method for fixed point to floating point conversion and negative power of two detector |
GB2556645B (en) * | 2017-03-24 | 2019-04-03 | Imagination Tech Ltd | Floating point to fixed point conversion |
GB2560766B (en) * | 2017-03-24 | 2019-04-03 | Imagination Tech Ltd | Floating point to fixed point conversion |
CN107729990B (zh) | 2017-07-20 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行正向运算的装置及方法 |
CN108052307B (zh) * | 2017-11-27 | 2020-07-03 | 北京时代民芯科技有限公司 | 处理器浮点单元前导零数量的超前运算方法及系统 |
US11281463B2 (en) * | 2018-03-25 | 2022-03-22 | Intel Corporation | Conversion of unorm integer values to floating-point values in low power |
CN108762720B (zh) * | 2018-06-14 | 2021-06-29 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置以及电子设备 |
CN110069240B (zh) * | 2019-04-30 | 2021-09-03 | 北京探境科技有限公司 | 定点与浮点数据计算方法及装置 |
CN110221808B (zh) * | 2019-06-03 | 2020-10-09 | 深圳芯英科技有限公司 | 向量乘加运算的预处理方法、乘加器及计算机可读介质 |
US11210064B2 (en) | 2019-07-30 | 2021-12-28 | International Business Machines Corporation | Parallelized rounding for decimal floating point to binary coded decimal conversion |
US11221826B2 (en) * | 2019-07-30 | 2022-01-11 | International Business Machines Corporation | Parallel rounding for conversion from binary floating point to binary coded decimal |
CN111123818B (zh) * | 2019-11-05 | 2020-12-25 | 珠海格力电器股份有限公司 | 一种plc浮点数和定点数相互转换控制系统及方法 |
US11150806B1 (en) * | 2021-04-22 | 2021-10-19 | Coupang Corp. | Systems and methods for reducing disk usage and network latency |
CN118585164A (zh) * | 2023-03-03 | 2024-09-03 | 华为技术有限公司 | 浮点数据精度转换方法和装置 |
CN117155396A (zh) * | 2023-09-07 | 2023-12-01 | 上海合芯数字科技有限公司 | 浮点数的转换处理方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3930232A (en) * | 1973-11-23 | 1975-12-30 | Raytheon Co | Format insensitive digital computer |
US7774393B1 (en) * | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
CN102103479A (zh) * | 2011-03-02 | 2011-06-22 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
CN102855117A (zh) * | 2011-06-29 | 2013-01-02 | Arm有限公司 | 浮点加法器 |
CN103069381A (zh) * | 2010-07-01 | 2013-04-24 | 瑞典爱立信有限公司 | 循环浮点数生成器和循环浮点数加法器 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6249798B1 (en) | 1996-10-10 | 2001-06-19 | Institute For The Development Of Emerging Architectures, L.L.C. | Method, apparatus and computer system for directly transferring and translating data between an integer processing unit and a floating point processing unit |
US20060047734A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Fast conversion of integer to float using table lookup |
US7401107B2 (en) | 2004-12-22 | 2008-07-15 | Arm Limited | Data processing apparatus and method for converting a fixed point number to a floating point number |
DE112006003875T5 (de) * | 2006-05-16 | 2009-06-18 | Intel Corporation, Santa Clara | Gleitkommaaddition für unterschiedliche Gleitkommaformate |
US8280936B2 (en) * | 2006-12-29 | 2012-10-02 | Intel Corporation | Packed restricted floating point representation and logic for conversion to single precision float |
CN102243577A (zh) * | 2010-05-10 | 2011-11-16 | 上海华虹集成电路有限责任公司 | 一种快速实现浮点加法的电路 |
JP5683839B2 (ja) | 2010-05-17 | 2015-03-11 | セミコンダクター・コンポーネンツ・インダストリーズ・リミテッド・ライアビリティ・カンパニー | 撮像装置の制御回路 |
KR101718817B1 (ko) * | 2010-11-17 | 2017-03-29 | 삼성전자주식회사 | 부동 소수점 데이터와 정수형 데이터 간의 변환장치 및 그 방법 |
US8965945B2 (en) * | 2011-02-17 | 2015-02-24 | Arm Limited | Apparatus and method for performing floating point addition |
GB2488322B (en) * | 2011-02-22 | 2017-09-20 | Advanced Risc Mach Ltd | Number format pre-conversion instructions |
US9582248B2 (en) * | 2014-09-26 | 2017-02-28 | Arm Limited | Standalone floating-point conversion unit |
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 |
-
2014
- 2014-09-26 US US14/498,172 patent/US9582248B2/en active Active
-
2015
- 2015-08-06 GB GB1513897.7A patent/GB2532309B/en active Active
- 2015-09-17 KR KR1020150131319A patent/KR102430645B1/ko active IP Right Grant
- 2015-09-18 CN CN201510600250.3A patent/CN105468331B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3930232A (en) * | 1973-11-23 | 1975-12-30 | Raytheon Co | Format insensitive digital computer |
US7774393B1 (en) * | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
CN103069381A (zh) * | 2010-07-01 | 2013-04-24 | 瑞典爱立信有限公司 | 循环浮点数生成器和循环浮点数加法器 |
CN102103479A (zh) * | 2011-03-02 | 2011-06-22 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
CN102855117A (zh) * | 2011-06-29 | 2013-01-02 | Arm有限公司 | 浮点加法器 |
Also Published As
Publication number | Publication date |
---|---|
GB201513897D0 (en) | 2015-09-23 |
CN105468331A (zh) | 2016-04-06 |
GB2532309B (en) | 2017-06-14 |
KR20160037083A (ko) | 2016-04-05 |
US20160092169A1 (en) | 2016-03-31 |
GB2532309A (en) | 2016-05-18 |
KR102430645B1 (ko) | 2022-08-09 |
US9582248B2 (en) | 2017-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468331B (zh) | 独立的浮点转换单元 | |
CN107769791B (zh) | 用于定点到浮点的转换的装置和方法及2的负幂检测器 | |
US9608662B2 (en) | Apparatus and method for converting floating-point operand into a value having a different format | |
CN106250098B (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
US8751555B2 (en) | Rounding unit for decimal floating-point division | |
Hormigo et al. | New formats for computing with real-numbers under round-to-nearest | |
Hormigo et al. | Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest | |
US20170293471A1 (en) | Arithmetic units and related converters | |
KR20120053344A (ko) | 부동 소수점 데이터와 정수형 데이터 간의 변환장치 및 그 방법 | |
US9059726B2 (en) | Apparatus and method for performing a convert-to-integer operation | |
US20200133633A1 (en) | Arithmetic processing apparatus and controlling method therefor | |
US8626807B2 (en) | Reuse of rounder for fixed conversion of log instructions | |
US10310809B2 (en) | Apparatus and method for supporting a conversion instruction | |
JP2006172035A (ja) | 除算・開平演算器 | |
US11119731B2 (en) | Apparatus and method for rounding | |
US7401107B2 (en) | Data processing apparatus and method for converting a fixed point number to a floating point number | |
KR102459011B1 (ko) | 선두 제로 예측 | |
US20220326911A1 (en) | Product-sum calculation device and product-sum calculation method | |
US7840628B2 (en) | Combining circuitry | |
Nguyen et al. | A combined IEEE half and single precision floating point multipliers for deep learning | |
KR100974190B1 (ko) | 부동 소수점을 이용한 복소수 곱셈방법 | |
US11983237B2 (en) | Floating point dot product multiplier-accumulator | |
Siddamshetty et al. | Efficient Hardware Architecture for Posit Addition/Subtraction | |
Ram et al. | Efficient Hardware Design of Parameterized Posit Multiplier and Posit Adder | |
JP3803653B2 (ja) | 乗算処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |