CN107769791A - 用于定点到浮点的转换的装置和方法及2的负幂检测器 - Google Patents
用于定点到浮点的转换的装置和方法及2的负幂检测器 Download PDFInfo
- Publication number
- CN107769791A CN107769791A CN201710696272.3A CN201710696272A CN107769791A CN 107769791 A CN107769791 A CN 107769791A CN 201710696272 A CN201710696272 A CN 201710696272A CN 107769791 A CN107769791 A CN 107769791A
- Authority
- CN
- China
- Prior art keywords
- value
- point
- fixed
- input
- input value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 11
- 238000006243 chemical reaction Methods 0.000 title abstract description 10
- 238000001514 detection method Methods 0.000 claims abstract description 18
- 238000006073 displacement reaction Methods 0.000 claims description 26
- 230000000295 complement effect Effects 0.000 claims description 24
- 230000035800 maturation Effects 0.000 abstract 1
- 238000002347 injection Methods 0.000 description 10
- 239000007924 injection Substances 0.000 description 10
- 238000007792 addition Methods 0.000 description 6
- 229910002056 binary alloy Inorganic materials 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification 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/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
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49936—Normalisation mentioned as feature only
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)
- Manipulation Of Pulses (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本公开提供用于定点到浮点的转换的装置和方法及2的负幂检测器。数据处理系统(2)支持定点数到浮点数的转换。得到的浮点数可以为次正规的。第一移位器(28)将表示定点数的输入信号移位第一移位量,第一移位量取决于定点数的后跟小数部分的整数部分内的前导零的计数。第二移位器(30)将输入信号移位第二移位量,第二移位量取决于定点数内的可变点位置。次正规结果检测器(34)根据对与具有次正规值的浮点数相对应的可变点位置和前导零的计数的组合的检测来生成选择信号。选择电路(32)根据由次正规结果检测器生成的选择信号选择来自第一移位器或第二移位器的输出中的一者来形成有效数。
Description
技术领域
本公开涉及数据处理系统领域。更具体地,本公开涉及将定点数转换为浮点数的数据处理系统。
背景技术
已知为数据处理系统提供能够处理具有整数部分、可变点位置和小数部分的定点数以及具有指数和有效数的浮点数的电路。还已知在这样的系统中提供用于在定点数和浮点数之间转换的机制。
发明内容
本公开的至少一些实施例提供了一种用于将表示具有整数部分、小数部分和可变点位置的定点数的输入信号转化为表示具有指数和有效数的浮点数的输出信号的装置,该装置包括:
第一移位器,用于将输入信号移位第一移位量以生成第一移位输出,其中第一移位量取决于定点数的后跟小数部分的整数部分内的前导零的计数并且独立于可变点位置;
第二移位器,用于将输入信号移位第二移位量以生成第二移位输出,其中第二移位量取决于可变点位置并且独立于前导零的计数;
次正规结果检测器,用于根据对可变点位置和前导零的计数的组合的检测来生成选择信号,该组合对应于具有次正规值的浮点数;以及
选择电路,用于根据选择信号选择第一移位输出和第二移位输出中的一者来用于形成有效数。
本公开的至少一些实施例提供了一种将表示具有整数部分、小数部分和可变点位置的定点数的输入信号转换为表示具有指数和有效数的浮点数的输出信号的方法,该方法包括:
将输入信号移位第一移位量以生成第一移位输出,第一移位量取决于定点数的后跟小数部分的整数部分内的前导零的计数并且独立于可变点位置;
将输入信号移位第二移位量以生成第二移位输出,其中第二移位量取决于可变点位置并且独立于前导零的计数;
根据对可变点位置和前导零的计数的组合的检测来生成选择信号,该组合对应于具有次正规值的浮点数;以及
根据选择信号选择第一移位输出和第二移位输出中的一者来用于形成有效数。
本公开的至少一些实施例提供了一种用于检测表示作为2的负幂的2的补码数的输入信号的装置,该装置包括:
输入值移位器,用于通过将输入值向输入值的最高有效位位置左移一位位置来形成左移输入值;
反相器,用于对输入值和左移输入值中的一者进行按位取反以生成反相值;
按位逻辑组合电路,执行与对输入值和左移位输入值中的另一者与反相值的按位逻辑组合相对应的逻辑组合以生成逻辑组合值;以及
单位值检测电路,用于在逻辑组合值包括预定位值的单个实例时将输入值检测为表示2的负幂。
附图说明
现仅以示例的方式参考附图来描述示例实施例,其中:
图1示意性地示出了包括用于在定点数和浮点数之间进行操纵和转换的电路的数据处理系统;
图2示意性地示出了定点数;
图3示意性地示出浮点数;
图4示意性地示出了用于将定点数转换为浮点数的电路内的重要路径;以及
图5是示意性地示出图4的电路的一部分的操作的流程图。
具体实施方式
浮点(FP)是使用少量位来近似实数的有用方式。IEEE 754-2008FP标准提出了FP数的多种不同格式,但ARM所关心的格式是二进制64(也被称为双精度或DP)、二进制32(也被称为单精度或SP)、以及二进制16(也称为半精度或HP)。数字64、32和16指每种格式所需的位数。
表示
FP数与理科课上教授的“科学记数法”非常相似,其中我们写-2.0×106来代替负二百万。这个数的一部分是符号(在此情况下是负)、有效数(2.0)、指数的基数(10)、以及指数(6)。所有这些部分在FP数中都有类似部分,但存在差异,其中最主要的差异是组成部分被存储为二进制数,并且指数的基数始终是2。
更准确地说,所有FP数由符号位、一些数目的偏置指数位和一些数目的小数位组成。特别地,我们感兴趣的格式包括以下位:
格式 | 符号 | 指数 | 小数 | 指数偏置 |
DP[63:0] | 63 | 62:52(11位) | 51:0(52位) | 1023 |
SP[31:0] | 31 | 30:23(8位) | 22:0(23位) | 127 |
HP[15:0] | 15 | 14:10(5位) | 9:0(10位) | 15 |
符号为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,例如,除以零或取负数的平方根。
在任何格式中,指数零被保留用于次正规数和零。正规数表示值:
-1符号×1.小数×2e
其中e是从偏置指数计算出的真实指数。术语“1.小数”被称为有效数,并且1不作为FP数的一部分被存储,而是从指数被推断出。除零和最大指数之外的所有指数都指示“1.小数”形式的有效数。指数零指示“0.小数”形式的有效数,以及针对给定格式,真实指数等于“1-偏置”。这样的数被称为次正规(subnormal)(历史上这些数被称为非正规(denoarmal),但是现代使用倾向于术语“次正规”)。指数和小数都等于零的数是零。
下表具有一些HP格式的示例数。条目是二进制的,其中'_'字符被添加以增强可读性。注意,次正规条目(在表的第4行,指数为零)产生与上一行中的正规条目不同的有效数。
符号 | 5位指数 | 10位小数 | 11位有效数 | 值 |
0 | 01111 | 00_0000_0000 | 100_0000_0000 | 1.0×20 |
1 | 01110 | 10_0000_0000 | 110_0000_0000 | -1.1×2-1 |
0 | 00001 | 10_0000_0000 | 110_0000_0000 | 1.1×2-14 |
0 | 00000 | 10_0000_0000 | 010_0000_0000 | 0.1×2-14 |
1 | 11111 | 00_0000_0000 | 负无穷 | |
0 | 11111 | 00_1111_0011 | NaN |
FP实现的大部分复杂性是由于次正规,因此它们通常由微代码或软件来处理。所有最近的ARM部件(名称具有Cortex的任何东西)以硬件方式处理次正规,与软件或微代码实现相比,将这些运算加速了10到100倍。
整数、定点、浮点
处理符号的FP方式被称为符号值(sign-magnitude),并且这与在计算机中存储整数的常用方式(2的补码(two’s complement))不同。在符号值表示中,相同数的正负版本仅在符号位不同。由符号位和3个有效位组成的4位符号值整数将正负1表示为:
+1=0001
-1=1001
在2的补码表示中,n位整数i由二进制n+1-位值2n+i的低n位表示,所以4位的2的补码整数将正负1表示为:
+1=0001
-1=1111
在实践中,2的补码格式对于有符号整数是通用的,因为它简化了计算机运算。
定点数看起来完全像整数,但实际上它表示具有一定数目的小数位的值。传感器数据通常采用定点格式,存在在广泛采用FP之前写的大量定点软件。用定点数工作十分乏味,因为程序员必须跟踪“二进制点”,即在数的整数部分和小数部分之间的分隔符,并且还必须不断地对数进行移位以保持位在正确的地方。FP数就没有这个困难,所以期望能够在定点数和FP数之间进行转换。能够进行转换也意味着我们仍然可以使用定点软件和数据,但在编写新软件时不限于定点。
舍入FP数
大多数FP运算按IEEE-754标准要求来被计算,就如同该运算是在具有无界的范围和精度的情况下进行的,然后对其进行舍入以符合FP数。如果该计算与FP数完全匹配,则该值总被返回,但通常该计算得出的结果是位于两个连续浮点数之间的值。舍入是选择两个连续数中的哪一者应被返回的过程。
存在多种舍入的方式,被称为舍入模式;ARM对其中的六个感兴趣。这六个是:
这个定义并未告诉我们如何以任何实际的方式进行舍入。一个常见的实现方式是进行该运算,查看截断的值(即,符合FP格式的值)以及所有剩余的位,然后如果某些条件成立,则调整截断的值。这些计算都基于:
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)
L Gss
截断的4位结果的最低有效位被标记为L,其下一位被标记为G,S是被标记为s的剩余位的逻辑或(即S=0|1=1)。为了舍入,我们根据舍入模式和上表中的计算调整我们的4位结果(1001)。因此,例如在RNA舍入中,G被置位所以我们返回1001+1=1010。对于RX舍入G|S为真,所以我们将L设置为1(已经是1,所以在这种情况下没有改变)并返回1001。
注入舍入
更快的进行舍入的方式是注入作为有效数的加法的一部分的舍入常数,其中有效数加法几乎是每个FP运算的一部分。为了看它是如何工作的,考虑对以美元和美分形式的数进行相加,然后舍入成美元。如果我们进行下述加法:
$1.27
+$2.35
$3.62
我们看到,$3.62比起$3更接近$4,所以两种就近舍入模式中的任一种都应返回$4。如果我们用二进制表示数,则我们可以使用来自上一节的L、G、S方法来得到相同的结果。但假设我们再加上五十美分,然后截断结果?
1.27
+2.35
+0.50(舍入注入)
4.12
如果我们恰好从我们的总和($4.12)中返回了美元数额($4),则我们使用RNA舍入模式正确地舍入。如果我们加上$0.99而非$0.50,则我们使用RP正确地舍入。RNE稍微复杂一些:我们加上$0.50,截断,然后查看剩余的美分。如果剩余的美分非零,则截断的结果是正确的。如果剩余零美分,则我们在注入之前就恰好在两个美元数额之间,所以我们选择偶数美元数额。对于二进制FP,这相当于将美元数额的最低有效位设置为零。
将三个数相加仅比将两个数相加稍慢一些,所以与我们将两个有效数相加,检查L、G和S,然后根据舍入模式来递增我们的结果相比,通过使用注入舍入我们会更快地获得舍入结果。
实现注入舍入
对于FP,舍入注入是三个不同值中的一者,这些值取决于舍入模式和(有时)结果的符号。
RNA和RNE都需要我们在G位置处注入1(这就像在我们的美元和美分的示例中加上0.50美元)。
RP和RM舍入取决于符号以及模式。RP对正结果进行向上舍入(向正无穷方向增加有效数的值),但截断负结果(选择更接近正无穷的有效数)。类似地,RM对负结果进行向上舍入(向负无穷方向增加有效数的值),但截断正结果(选择更接近负无穷的有效数)。因此,我们将RM和RP分为两种情况:在符号与舍入方向匹配时进行向上舍入(RU),在符号与舍入注入不同时进行截断(RZ)。对于RU的情况,我们在G位位置处以及在逻辑上对S有贡献的每个位置处注入1(这就像在我们的美元和美分示例中加上$0.99)。
对于RZ和RX模式,以及对于减小到RZ模式的RP和RM模式,我们注入零。
对于大多数舍入模式,加上舍入注入并且然后截断会给出正确的舍入结果。两个例外是RNE和RX,其需要我们在加上舍入注入之后检查G和S。对于RNE,如果G和S都为零,则我们将L设置为0。对于RX,如果G或S为非零,则我们将L设置为1。
图1示意性地示出了包括用于在程序控制下执行处理操作的处理器核心4以及用于存储程序指令和要被操纵的数据的存储器6的数据处理系统2。处理器核心4包括用于存储操作数的寄存器组8,其中操作数可以是以定点值、浮点值、SIMD值、整数值、向量值的形式或其他形式。浮点和定点处理电路10耦接到寄存器组8并用于执行数据处理操作,例如对存储在寄存器组8的寄存器内的定点值和浮点值进行的加法、减法、乘法等。浮点和定点处理电路10包括用于将定点数转换为浮点数的电路。加载存储单元(LSU)12负责在存储器6和寄存器组8之间传送数据值。
图2示意性地示出了定点数。图2示例中的定点数是64位定点数。最高有效位b63:bq包括定点数的整数部分。该整数部分包括Y位。在实践中,对于该示例,Y的值等于或大于0且小于64。定点数内的最低有效位bq-1:b0包括定点数的小数部分。在该小数部分内存在Z位,其中Z的值大于0且小于或等于64。定点数包括一个或更多个小数位和零个或更多个整数位。整数部分和小数部分之间的二进制点位置由可变点位置值fbit指定,在该示例中,64位定点数是这样的64位数:允许在可变点位置处指定的二进制点的范围从位b1和b0之间开始并延伸到位b63的紧前位置(b63左侧)的位置。
图3示意性地示出浮点数。如前所述,浮点数包括符号值、小数值和指数。有效数通过向小数值加二进制“1”来给出。在半精度浮点数的情况下,它们用16位值表示。一位被用于表示符号。五位被用于表示指数值,并且因此指数的范围为15到-14。小数用十位表示,因此有效数是11位值。此示例中指数值的范围向下延伸至-14。因此,当该定点数向浮点数转换发生时,浮点数将能够为次正规的,这依赖于要被转换为浮点数的定点数中的可变二进制点位置。次正规数是在有效数的开始处不存在隐含的“1”且有效数据中的前导非零位发生在有效数内的小数点位置的右侧的数。在可能生成次正规浮点数的情况下,当从定点数转换为浮点数时可能会出现提供快速转换的问题,因为要应用到整数部分和小数部分的移位量取决于产生的浮点数是否将是次正规浮点数。
图4示意性地示出了定点数到浮点数转换电路的一部分,其包括在输出浮点数可能是次正规的情况下生成要应用于输入定点数的正确移位的能力。以2的补码的形式表示定点数的输入信号被接收到输入寄存器14中。在该示例实施例中,输入信号包括表示输入操作数位opa[63:0]的64个信号值。这些输入信号传递到1的补码(one’s complement)转换电路16,该电路16用于在定点数为负(即,以位值1开头的2的补码的形式的数)时将输入信号从以2的补码形式表示的定点数转换为1的补码形式表示的定点数。因此,来自1的补码转换电路16的输出是根据定点数的大小而包括一个或多个前导零值的定点数。
前导零计数电路18用于对由从1的补码转换电路16输出的输入信号表示的定点二进制数中的前导零的数目进行计数(不管是否进行了1的补码转换)。前导零计数电路生成后跟小数部分的整数部分中的前导零的计数。前导零可能在整数部分中终止,或者在小的数的情况下,前导零可以延伸以覆盖整个整数部分并超出二进制点位置而进入小数部分。前导零计数电路18包括两个计数器电路20、22,在计数器22的情况下,产生与简单的前导零计数相对应的输出,以及在计数器20的情况下,产生前导零计数被减一相对应的输出。从计数器20产生的计数可以通过将从1的补码转换电路16输出的输入信号传递给计数器20来实现,其中1的补码转换电路16已从这些信号中移除了最高有效位,即已将任何前导零计数减一。计数选择器24用于将要在电路中的别处使用的前导零计数值选择为来自计数器电路20的输出或来自计数器22的输出。
负幂检测电路26用于检测表示定点数的输入信号何时与是负数且是2的幂的定点数相对应,如下面进一步描述的。当定点数是这种2的负幂时,计数选择器24选择来自计数器电路20的计数(即前导零计数被减一)。当定点值不是2的负幂时,计数选择器24选择来自计数器电路22的计数值(即定点数的全部前导零计数)。
来自1的补码转换电路16的输入信号被作为输入提供给第一移位器28和第二移位器30。第一移位器28用于将输入信号左移第一移位量,该第一移位量取决于作为计数选择器24的输出的定点数中后跟小数部分的整数部分中的前导零的计数。第一移位量独立于可变点位置。来自第一移位器的输出是第一移位输出。第二移位器30用于将从1的补码转换电路16接收的输入信号左移第二移位量,该第二移位量取决于可变点位置,且独立于前导零的计数。第二移位器30生成第二移位输出。更具体地,所应用的第二移位量可以通过将“13”与表示定点数内的可变点位置的变量(即,值fbit[5:0])进行相加来确定。来自第一移位器28的第一移位输出和来自第二移位器30的第二移位输出作为输入被提供给选择电路32,选择电路32用于根据次正规结果检测器34是否检测到与具有次正规值的结果浮点数相对应的可变点位置和前导零计数的组合来选择这些输出中的一者。当结果浮点数具有(将具有)次正规值时,则选择电路选择来自第二移位器30的第二移位输出并将其传递到输出寄存器36以形成输出浮点数的有效数。当次正规结果检测器34未检测到结果浮点数将是次正规的时,则选择电路32选择来自第一移位器28的第一移位输出并将其传递到输出寄存器36。可以理解的是,在实践中,只有输出寄存器36内的一部分位被选择用作要转换到的半精度浮点数内的有效数(注入舍入被用于使64位输入与11位有效数相符)。这样的半精度浮点数具有11位有效数。
在图1的示例中的定点数和浮点数的位宽只是可以使用的位宽的一个示例。在实践中,转换可以以不同位宽的定点数开始,并以不同位宽的浮点数为目标。通常,如果目标浮点数具有相对有限的指数值范围(相对于可由定点值表示的值的最小大小),则会出现输出浮点数为次正规的可能性,因此,图4的次正规处理机制变得有利。
2的负幂检测电路26包括输入值移位器,其将来自输入寄存器14的输入信号朝输入值内的最高有效位移1位位置。然后这个被左移的输入值被按位取反,并且使位值“1”被添加到其最小有效位端。然后按位逻辑组合电路应用按位逻辑组合。所应用的逻辑组合在图4的示例中是逻辑与。在这种情况下,如果输入信号与是负数且为2的幂的浮点数相对应,则来自按位逻辑组合电路的输出将包括单个位值“1”,其余位值都为“0”。单位值检测电路用于通过检测逻辑组合值何时包括预定位值的单个实例(在此情况下预定位值为“1”)来检测这种情况。
更一般地,在其它实施例中,下述操作是可能的:不对被左移的输入值取反,而是可以对尚未被左移一位位置的输入值进行取反,然后对其应用按位逻辑组合。在这种情况下,当预定值(其仅仅一个实例要被检测)为“1”时,所使用的按位逻辑组合是按位或非。
更一般地,2的负幂检测电路26内的输入值移位器、反相器、按位逻辑组合电路和单位检测电路可以具有执行不同数学/逻辑操纵的各种不同形式,其全部用于生成指示何时输入定点数表示2的负幂的输出。这些示例包括:
被左移的输入值被反相器按位取反,预定值为0,以及按位逻辑组合是按位异或;
被左移的输入值被反相器按位取反,预定值为1,以及按位逻辑组合是按位与;
输入值被反相器按位取反,预定值为0,以及按位逻辑组合是按位或;以及
输入值被反相器按位取反,预定值为1,以及按位逻辑组合是按位或非。
单位检测电路可以具有各种不同的可能形式,其用于检测逻辑组合值何时包括预定位值的单个实例(无论是“1”还是“0”)。在单位检测电路寻求检测位值“1”的单个实例的情况下,这可以由由以下信号组合定义的电路来提供。
at_least_one_bit_set=所有位的逻辑或(or)
more_than_one_bit_set=对32对输入以及较大块的或位的按对与(and)
更准确地说,给定输入字符串inp[63:0]:
or2[31:0]=inp[63:32]|inp[31:0];
or4[15:0]=or2[31:16]|or2[15:0];
or8[7:0]=or4[15:8]|or4[7:0];
or16[3:0]=or8[7:4]|or8[3:0];
or32[1:0]=or16[3:2]|or16[1:0];
or64=or32[1]|or32[0]
and2[31:0]=inp[63:32]&inp[31:0];
and4[15:0]=and2[31:16]&and2[15:0];
and8[7:0]=and4[15:8]&and4[7:0];
and16[3:0]=and 8[7:4]&and8[3:0];
and32[1:0]=and16[3:2]&and16[1:0];
and64=and32[1]&and32[0];
at_least_one_bit_set=or64;
more_than_one_bit_set=and64
|(|and32[1:0])
|(|and16[3:0])
|(|and8[7:0])
|(|and4[15:0])
||and2[31:0]);
exact_one_bit_set=at_least_one_bit_set&more_than_one_bit_set。
次正规结果检测器34是三输入加法电路,用于对从计数选择器24输出的前导零计数值的按位取反、值“14”、以及(64-fbit)的值进行相加。来自该3输入加法的进位输出与指示电路当前正执行定点数到半精度浮点转换的信号进行与运算,以生成提供给选择电路32的选择信号。因此,当图4的电路正在执行定点数到半精度浮点数转换并且结果被检测为次正规的时,应用到选择电路32的选择信号用于选择来自第二移位器30的输出以形成要生成的且将是次正规的浮点数的有效数。当次正规结果检测器34未检测到次正规结果时,选择信号用于控制选择电路32选择来自第一移位器28的输出。
从图4可以看出,第一移位器28、第二移位器30和次正规结果检测器34都在处理级V1内至少部分地并行工作。
2的负幂检测电路26可以在除了图4所示的定点数到浮点数转换电路之外的电路内使用。2的负幂检测电路26可以用于执行该检测功能作为其本身或该检测是有用的算数或其他电路的部分内所期望的功能。因此,对于上述2的负幂检测电路26的使用不限于定点数到浮点数的转换的情境。
图5是示意性地示出图4的电路的一部分的操作的流程图。更具体地,图5示意性地示出了第一移位器28、第二移位器30、次正规结果检测器34和选择电路32的操作。在步骤38处,第一移位器28将输入信号移位取决于从计数选择器24输出的前导零计数值的量。在步骤40处,第二移位器30用于将输入信号移位取决于可变点位置fbit的量。在步骤42处,次正规结果检测器34用于检测所得到的浮点数是否将是次正规的。在图4的示例性实施例的实践中,步骤38、40和42至少部分地被并行执行。步骤44用于选择在步骤28处生成的第一移位值或在步骤40处生成的第二移位值之间的一者,以形成将被用于生成浮点数的有效数的输出值。在步骤44处的选择由在步骤42处的次正规结果的结果控制。
虽然本文参考附图详细描述了说明性实施例,但应理解的是,权利要求不限于这些精确的实施例,并且本领域技术人员可以在不背离所附权利要求的范围和精神的情况下在其中进行各种改变、添加和修改。例如,可以用独立权利要求的特征与从属权利要求的特征做出各种不同的组合。
Claims (19)
1.一种用于将表示具有整数部分、小数部分和可变点位置的定点数的输入信号转化为表示具有指数和有效数的浮点数的输出信号的装置,所述装置包括:
第一移位器,用于将所述输入信号移位第一移位量以生成第一移位输出,其中所述第一移位量取决于所述定点数的后跟所述小数部分的所述整数部分内的前导零的计数并且独立于所述可变点位置;
第二移位器,用于将所述输入信号移位第二移位量以生成第二移位输出,其中所述第二移位量取决于所述可变点位置并且独立于所述前导零的计数;
次正规结果检测器,用于根据对与具有次正规值的所述浮点数相对应的所述可变点位置和所述前导零的计数的组合的检测来生成选择信号;以及
选择电路,用于根据所述选择信号选择所述第一移位输出和所述第二移位输出中的一者来用于形成所述有效数。
2.根据权利要求1所述的装置,其中,所述第一移位器、所述第二移位器和所述次正规检测器至少部分地并行工作。
3.根据权利要求1所述的装置,其中,所述次正规结果检测器从根据所述可变点位置、所述前导零的计数和所述浮点数能表示的最小指数值的值的加法生成所述选择信号作为进位输出值。
4.根据权利要求3所述的装置,其中,所述次正规检测器是三输入加法器,并且所述前导零的计数在所述加法之前被按位取反。
5.根据权利要求1所述的装置,其中,所述定点数是定点二进制数,并且所述输入信号以2的补码的形式表示所述定点二进制数。
6.根据权利要求5所述的装置,包括:
1的补码转换电路,用于在所述定点二进制数为负时将所述输入信号转换为以1的补码的形式表示所述定点二进制数;以及
前导零计数电路,用于对由所述二进制反码转换电路输出的所述输入信号表示的所述定点二进制数中的前导零的数目进行计数。
7.根据权利要求6所述的装置,包括负幂检测电路,用于检测何时所述定点二进制数表示2的负幂,并且其中所述前导零计数电路在所述定点二进制数表示2的负幂时将提供给所述第一移位器和所述次正规结果检测器的所述前导零的计数减一。
8.根据权利要求7所述的装置,其中,所述前导零计数电路包括计数器电路,用于并行地确定第一候选计数值和第二候选计数值,其中,所述第一候选计数值是所述输入信号内的前导零的计数,所述第二候选计数值是所述输入信号内排除经转换的输入信号的最高有效位的前导零的计数。
9.根据权利要求8所述的装置,包括计数选择器,用于在所述定点二进制数表示除了2的负幂以外的其他数时选择所述第一候选计数值,并且在所述定点二进制数表示2的负幂时选择所述第二候选计数值。
10.根据权利要求7所述的装置,其中,所述负幂检测电路包括:
输入值移位器,用于通过将所述输入值向所述输入值的最高有效位位置左移一位位置来形成左移输入值;
反相器,用于对所述输入值和所述左移输入值中的一者进行按位取反以生成反相值;
按位逻辑组合电路,用于执行与对所述输入值和所述左移位输入值中的另一者与所述反相值的按位逻辑组合相对应的逻辑组合以生成逻辑组合值;以及
单位检测电路,用于在所述逻辑组合值包括预定位值的单个实例时将所述输入值检测为表示2的负幂。
11.根据权利要求10所述的装置,其中,当在所述输入值和所述左移输入值中的相应位值具有相同值时,所述按位逻辑组合电路生成具有所述预定位值的输出位。
12.根据权利要求11所述的装置,其中进行下述中的一者:
所述左移输入值被所述反相器按位取反,所述预定值为0,以及所述按位逻辑组合是按位异或;
所述左移输入值被所述反相器按位取反,所述预定值为1,以及所述按位逻辑组合是按位与;
所述输入值被所述反相器按位取反,所述预定值为0,以及所述按位逻辑组合是按位或;以及
所述输入值被所述反相器按位取反,所述预定值为1,以及所述按位逻辑组合是按位或非。
13.根据权利要求1所述的装置,其中,作为所述定点数的所述输入信号能表示的最小值小于作为所述浮点数的所述输出信号能表示的最小值。
14.根据权利要求1所述的装置,其中,所述定点数是64位定点数,以及所述浮点数是半精度浮点数。
15.根据权利要求1所述的装置,其中,所述输入信号表示X位定点二进制数,所述整数部分具有Y位,所述小数部分具有Z位,X=Y+Z,0=<Y<X以及0<Z=<X。
16.一种将表示具有整数部分、小数部分和可变点位置的定点数的输入信号转换为表示具有指数和有效数的浮点数的输出信号的方法,所述方法包括:
将所述输入信号移位第一移位量以生成第一移位输出,所述第一移位量取决于所述定点数的后跟所述小数部分的所述整数部分内的前导零的计数并且独立于所述可变点位置;
将所述输入信号移位第二移位量以生成第二移位输出,其中所述第二移位量取决于所述可变点位置并且独立于所述前导零的计数;
根据对与具有次正规值的所述浮点数相对应的所述可变点位置和所述前导零的计数的组合的检测来生成选择信号;以及
根据所述选择信号选择所述第一移位输出和所述第二移位输出中的一者来用于形成所述有效数。
17.一种用于检测表示作为2的负幂的2的补码数的输入信号的装置,所述装置包括:
输入值移位器,用于通过将所述输入值向所述输入值的最高有效位位置左移一位位置来形成左移输入值;
反相器,用于对所述输入值和所述左移输入值中的一者进行按位取反以生成反相值;
按位逻辑组合电路,执行与对所述输入值和所述左移位输入值中的另一者与所述反相值的按位逻辑组合相对应的逻辑组合以生成逻辑组合值;以及
单位值检测电路,用于在所述逻辑组合值包括预定位值的单个实例时将所述输入值检测为表示2的负幂。
18.根据权利要求17所述的装置,其中,当所述输入值和所述左移输入值中的相应位值具有相同值时,所述按位逻辑组合电路生成所述预定位值。
19.根据权利要求18所述的设备,其中进行下述中的一者:
所述左移输入值被所述反相器按位取反,所述预定值为0,以及所述按位逻辑组合是按位异或;
所述左移输入值被所述反相器按位取反,所述预定值为1,以及所述按位逻辑组合是按位与;
所述输入值被所述反相器按位取反,所述预定值为0,以及所述按位逻辑组合是按位或;以及
所述输入值被所述反相器按位取反,所述预定值为1,以及所述按位逻辑组合是按位或非。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/242,782 US10019231B2 (en) | 2016-08-22 | 2016-08-22 | Apparatus and method for fixed point to floating point conversion and negative power of two detector |
US15/242,782 | 2016-08-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107769791A true CN107769791A (zh) | 2018-03-06 |
CN107769791B CN107769791B (zh) | 2023-06-23 |
Family
ID=61191648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710696272.3A Active CN107769791B (zh) | 2016-08-22 | 2017-08-15 | 用于定点到浮点的转换的装置和方法及2的负幂检测器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10019231B2 (zh) |
CN (1) | CN107769791B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762720A (zh) * | 2018-06-14 | 2018-11-06 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置以及电子设备 |
CN109670582A (zh) * | 2018-12-28 | 2019-04-23 | 四川那智科技有限公司 | 一种全定点化神经网络的设计方法 |
CN111290790A (zh) * | 2020-01-22 | 2020-06-16 | 安徽大学 | 一种定点转浮点的转换装置 |
CN111338600A (zh) * | 2018-12-18 | 2020-06-26 | 富士通株式会社 | 计算处理设备和控制计算处理设备的方法 |
WO2022052625A1 (zh) * | 2020-09-08 | 2022-03-17 | 腾讯科技(深圳)有限公司 | 一种定点与浮点转换器、处理器、方法以及存储介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US10224954B1 (en) | 2017-09-29 | 2019-03-05 | Intel Corporation | Floating point to fixed point conversion |
US10223114B1 (en) | 2017-09-29 | 2019-03-05 | Intel Corporation | Fixed point to floating point conversion |
CN109697083B (zh) * | 2018-12-27 | 2021-07-06 | 深圳云天励飞技术有限公司 | 数据的定点化加速方法、装置、电子设备及存储介质 |
US20230004523A1 (en) * | 2021-06-30 | 2023-01-05 | Amazon Technologies, Inc. | Systolic array with input reduction to multiple reduced inputs |
US11880682B2 (en) | 2021-06-30 | 2024-01-23 | Amazon Technologies, Inc. | Systolic array with efficient input reduction and extended array performance |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136536A1 (en) * | 2004-12-22 | 2006-06-22 | Arm Limited | Data processing apparatus and method for converting a fixed point number to a floating point number |
CN101174200A (zh) * | 2007-05-18 | 2008-05-07 | 清华大学 | 一种浮点乘加融合单元的五级流水线结构 |
US20160092169A1 (en) * | 2014-09-26 | 2016-03-31 | Arm Limited | Standalone floating-point conversion unit |
US20160224318A1 (en) * | 2015-01-30 | 2016-08-04 | Huong Ho | Method and apparatus for converting from integer to floating point representation |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341300B1 (en) * | 1999-01-29 | 2002-01-22 | Sun Microsystems, Inc. | Parallel fixed point square root and reciprocal square root computation unit in a processor |
US9916130B2 (en) * | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
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 |
-
2016
- 2016-08-22 US US15/242,782 patent/US10019231B2/en active Active
-
2017
- 2017-08-15 CN CN201710696272.3A patent/CN107769791B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136536A1 (en) * | 2004-12-22 | 2006-06-22 | Arm Limited | Data processing apparatus and method for converting a fixed point number to a floating point number |
CN101174200A (zh) * | 2007-05-18 | 2008-05-07 | 清华大学 | 一种浮点乘加融合单元的五级流水线结构 |
US20160092169A1 (en) * | 2014-09-26 | 2016-03-31 | Arm Limited | Standalone floating-point conversion unit |
CN105468331A (zh) * | 2014-09-26 | 2016-04-06 | Arm有限公司 | 独立的浮点转换单元 |
US20160224318A1 (en) * | 2015-01-30 | 2016-08-04 | Huong Ho | Method and apparatus for converting from integer to floating point representation |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762720A (zh) * | 2018-06-14 | 2018-11-06 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置以及电子设备 |
CN108762720B (zh) * | 2018-06-14 | 2021-06-29 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置以及电子设备 |
CN111338600A (zh) * | 2018-12-18 | 2020-06-26 | 富士通株式会社 | 计算处理设备和控制计算处理设备的方法 |
CN109670582A (zh) * | 2018-12-28 | 2019-04-23 | 四川那智科技有限公司 | 一种全定点化神经网络的设计方法 |
CN111290790A (zh) * | 2020-01-22 | 2020-06-16 | 安徽大学 | 一种定点转浮点的转换装置 |
CN111290790B (zh) * | 2020-01-22 | 2023-03-24 | 安徽大学 | 一种定点转浮点的转换装置 |
WO2022052625A1 (zh) * | 2020-09-08 | 2022-03-17 | 腾讯科技(深圳)有限公司 | 一种定点与浮点转换器、处理器、方法以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10019231B2 (en) | 2018-07-10 |
CN107769791B (zh) | 2023-06-23 |
US20180052660A1 (en) | 2018-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107769791A (zh) | 用于定点到浮点的转换的装置和方法及2的负幂检测器 | |
KR950001941B1 (ko) | 부동소수점 데이터의 연산방법 및 연산장치 | |
CN102855117B (zh) | 浮点加法器 | |
CN107273090A (zh) | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 | |
CN108351761A (zh) | 使用冗余表示的第一和第二操作数的乘法 | |
CN104899004A (zh) | 一种用于将浮点操作数相乘的数据处理装置和方法 | |
CN101326486B (zh) | 进行浮点数的除法运算或平方根运算的运算装置和运算方法 | |
CN103984522B (zh) | Gpdsp中定点和浮点混合除法的实现方法 | |
CN108351776A (zh) | 用于向量的处理的通道位置信息 | |
US20220091819A1 (en) | System and method for rounding reciprocal square root results of input floating point numbers | |
CN108351762A (zh) | 使用重叠位的数值的冗余表示 | |
JPH04283831A (ja) | 除算器 | |
CN105302519B (zh) | 用于执行浮点平方根运算的装置和方法 | |
Ivančić et al. | Numerical stability analysis of floating-point computations using software model checking | |
US7752250B2 (en) | Rounding floating point division results | |
CN108334304B (zh) | 数字递归除法 | |
US20070260665A1 (en) | Method of Specifying and Tracking Precision in Floating-point Calculation | |
Lefèvre et al. | Accurate calculation of Euclidean Norms using Double-word arithmetic | |
CN108153513A (zh) | 前导零预测 | |
CN108351763A (zh) | 重叠传播操作 | |
EP0377992A2 (en) | Floating point division method and apparatus | |
Mudawar | Exact versus inexact decimal floating-point numbers and arithmetic | |
US10579333B2 (en) | Arithmetic unit and control method for arithmetic unit | |
Saiki | An Overview of Computer Number Representations and Error In Computation | |
US5689721A (en) | Detecting overflow conditions for negative quotients in nonrestoring two's complement division |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180531 Address after: cambridge Applicant after: ARM Ltd. Applicant after: ARM TECHNOLOGY (CHINA) Co.,Ltd. Address before: cambridge Applicant before: ARM Ltd. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |