CN104598197A - 一种浮点倒数和/或平方根倒数运算方法及其装置 - Google Patents

一种浮点倒数和/或平方根倒数运算方法及其装置 Download PDF

Info

Publication number
CN104598197A
CN104598197A CN201510037527.6A CN201510037527A CN104598197A CN 104598197 A CN104598197 A CN 104598197A CN 201510037527 A CN201510037527 A CN 201510037527A CN 104598197 A CN104598197 A CN 104598197A
Authority
CN
China
Prior art keywords
floating number
inverse
square root
described floating
mantissa
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
Application number
CN201510037527.6A
Other languages
English (en)
Other versions
CN104598197B (zh
Inventor
王惠娟
肖偌舟
林玻
刘檬
张志伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Silang Technology Co ltd
Original Assignee
Institute of Automation of Chinese Academy of Science
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Automation of Chinese Academy of Science filed Critical Institute of Automation of Chinese Academy of Science
Priority to CN201510037527.6A priority Critical patent/CN104598197B/zh
Publication of CN104598197A publication Critical patent/CN104598197A/zh
Application granted granted Critical
Publication of CN104598197B publication Critical patent/CN104598197B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开了一种浮点倒数和/或平方根倒数运算方法及装置。所述方法包括:根据输入的浮点数获取查找地址;根据所述查找地址从浮点数的倒数或平方根倒数尾数查找表中进行查找,得到所述浮点数的倒数或平方根倒数的尾数;计算得到所述浮点数的倒数或平方根倒数的指数;计算得到所述浮点数的倒数或平方根倒数的符号位;根据所述浮点数的倒数或平方根倒数的指数、尾数和符号位得到所述浮点数的倒数或平方根倒数的运算结果。本发明通过硬件查表获得尾数计算结果,该硬件查找表可配置可复用,根据不同精度要求获得不同位宽输出结果,通过计算获得指数部分结果,最终得到一个硬件计算结果供软件迭代使用。

Description

一种浮点倒数和/或平方根倒数运算方法及其装置
技术领域
本发明属于集成电路中的运算部件设计技术领域,具体涉及一种浮点倒数和/或平方根倒数运算方法及其装置。
背景技术
浮点表示根据IEEE 754标准,有单、双精度及其扩展精度等多种表示方法,其中单精度表示的精度最低,实现相对简单,硬件开销最少,双精度扩展精度的精度最高,实现相对复杂,硬件开销最多。
浮点运算能够提供更高的精度,在当今应用越来越广,而浮点除法运算、倒数运算、平方根倒数运算使用频率低,采用硬件完全实现设计代价很大,采用定点运算配合软件迭代精度很难达到要求,采用硬件查表配合软件迭代共同实现能够达到很好的性能。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种高效的浮点倒数/平方根倒数部件的设计方法,在多精度环境或精度可配置环境下设计实现一种可配置浮点倒数/平方根倒数设计方法,尽最大程度复用硬件资源,实现对浮点多种运算的支持。
(二)技术方案
为此,本发明提出的一种浮点数的倒数和/或平方根倒数运算方法,包括:
步骤1、根据输入的浮点数获取查找地址;
步骤2、根据所述查找地址从浮点数的倒数或平方根倒数尾数查找表中进行查找,得到所述浮点数的倒数或平方根倒数的尾数;其中,所述浮点数的倒数尾数查找表根据以下公式构造:
m y = 2 ( a + 1 ) × 2 b 2 a + m x - 2 b
所述浮点数的平方根倒数尾数查找表根据以下公式构造:
Ex=2N时,
m y = 2 b × ( 2 × 2 a 2 a + m x - 1 )
Ex=2N+1时,
m y = 2 b × ( 4 × 2 a m x - 1 )
其中,my为所述浮点数的倒数或平方根倒数的尾数,mx为所述浮点数的尾数,a为mx的位数,b为my的位数;Ex为所述浮点数的指数,N为整数;
步骤3、计算得到所述浮点数的倒数或平方根倒数的指数,其中,所述浮点数的倒数的指数如下计算:
Ey=(W-1)-Ex
所述浮点数的平方根倒数的指数如下计算:
其中,Ey为所述浮点数的倒数或平方根倒数的指数,W为所述浮点数的倒数或平方根倒数的移码;
步骤4、计算得到所述浮点数的倒数或平方根倒数的符号位,其中,所述浮点数的倒数的符号位与所述浮点数的符号位相同,所述浮点数的平方根倒数当所述浮点数为正数时才有效,且其符号位为0;
步骤5、根据所述浮点数的倒数或平方根倒数的指数、尾数和符号位得到所述浮点数的倒数或平方根倒数的运算结果。
本发明还提出了一种浮点数的倒数和/或平方根倒数运算装置,包括:
查找地址获取模块,其根据输入的浮点数获取查找地址;
尾数获取模块,其根据所述查找地址从浮点数的倒数或平方根倒数尾数查找表中进行查找,得到所述浮点数的倒数或平方根倒数的尾数;其中,所述浮点数的倒数尾数查找表根据以下公式构造:
m y = 2 ( a + 1 ) × 2 b 2 a + m x - 2 b
所述浮点数的平方根倒数尾数查找表根据以下公式构造:
Ex=2N时,
m y = 2 b × ( 2 × 2 a 2 a + m x - 1 )
Ex=2N+1时,
m y = 2 b × ( 4 × 2 a m x - 1 )
其中,my为所述浮点数的倒数或平方根倒数的尾数,mx为所述浮点数的尾数,a为mx的位数,b为my的位数;Ex为所述浮点数的指数,N为整数;
指数获取模块,其计算得到所述浮点数的倒数或平方根倒数的指数,其中,所述浮点数的倒数的指数如下计算:
Ey=(W-1)-Ex
所述浮点数的平方根倒数的指数如下计算:
其中,Ey为所述浮点数的倒数或平方根倒数的指数,W为所述浮点数的倒数或平方根倒数的移码;
符号位获取模块,其计算得到所述浮点数的倒数或平方根倒数的符号位,其中,所述浮点数的倒数的符号位与所述浮点数的符号位相同,所述浮点数的平方根倒数当所述浮点数为正数时才有效,且其符号位为0;
结果输出模块,其根据所述浮点数的倒数或平方根倒数的指数、尾数和符号位得到所述浮点数的倒数或平方根倒数的运算结果。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
本发明提出了一种浮点倒数和/或平方根倒数的计算方法其通过硬件查表获得尾数计算结果,该硬件查找表可配置可复用,根据不同精度要求获得不同位宽输出结果,通过计算获得指数部分结果,最终得到一个硬件计算结果供软件迭代使用。本发明适用于硬件查表配合软件迭代实现高精度浮点倒数、平方根倒数及和其相关的浮点除法等运算,运算精度高,硬件资源消耗小。
附图说明
图1是本发明中浮点倒数/平方根倒数尾数查找表结构示意图;
图2是本发明中可复用浮点倒数/平方根倒数尾数查找表结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
本发明提出了一种可复用硬件资源进行浮点倒数/平方根倒数运算的方法,以支持在不同精度标准下输出不同精度结果,且硬件资源高度复用,最大程度的降低硬件开销。
本发明提出的一种浮点数的倒数/平方根倒数运算方法,包括:
步骤1、根据输入的浮点数构造查找地址;
步骤2、根据所述查找地址从浮点数的倒数或平方根倒数尾数查找表中进行查找,得到所述浮点数的倒数或平方根倒数的尾数;其中,所述浮点数的倒数尾数查找表根据以下公式构造:
m y = 2 ( a + 1 ) × 2 b 2 a + m x - 2 b
所述浮点数的平方根倒数尾数查找表根据以下公式构造:
Ex=2N时,
m y = 2 b × ( 2 × 2 a 2 a + m x - 1 ) ,
Ex=2N+1时,
m y = 2 b × ( 4 × 2 a m x - 1 )
其中,my为所述浮点数的倒数或平方根倒数的尾数,mx为所述浮点数的尾数,a为mx的位数,b为my的位数;Ex为所述浮点数的指数,N为整数;
步骤3、计算得到所述浮点数的倒数或平方根倒数的指数,其中,所述浮点数的倒数的指数如下计算:
Ey=(W-1)-Ex
所述浮点数的平方根倒数的指数如下计算:
其中,Ey为所述浮点数的倒数或平方根倒数的指数,W为所述浮点数的倒数或平方根倒数的移码;
步骤4、计算得到所述浮点数的倒数或平方根倒数的符号位,其中,所述浮点数的倒数的符号位与所述浮点数的符号位相同,所述浮点数的平方根倒数当所述浮点数为正数时才有效,且其符号位为0;
步骤5、根据所述浮点数的倒数或平方根倒数的指数、尾数和符号位得到所述浮点数的倒数或平方根倒数的运算结果。
下面详细介绍上述方法步骤。
假如要计算浮点数Rm的倒数1/Rm,设x为输入Rm,y为其倒数,Mx为x的浮点表示法的尾数(不含隐含位),My为y的浮点表示法的尾数(不含隐含位);Ex为x的浮点表示法的指数,Ey为y的浮点表示法的指数,W为移码的数值。
y=1/x,令x=(-1)s*(1+Mx)*2(Ex-W),其中,
-W<Ex-W<(W+1)           (式1)
y的符号位与x的符号位相同;
y=1/x=1/((1+Mx)×2(Ex-W))
=1/(1+Mx)×2(W-Ex)
=2/(1+Mx)×2((W-1)-Ex)
=(1+My)×2Ey
那么,尾数满足:
1+My=2/(1+Mx)          (式2)
所以,
My=2/(1+Mx)-1=(1-Mx)/(1+Mx)     (式3)
指数:
Ey=(W-1)-Ex       (式4)
式2,式3,式4通用,不随计算精度的改变而变化。
mx取x尾数的高a位,my为y尾数的高b位,则由式2可得:
2 - b × ( 2 b + m y ) = 2 × 2 a m x ,
m y = 2 ( a + 1 ) × 2 b 2 a + m x - 2 b          (式5)。
至此可建立mx的查找表。该查找表中查找数据的个数由x尾数取得位数a决定,即为2a,查找表每一项的大小由y尾数取得位数b决定,则查找表大小为:2a×b,可以看出查找表的大小和所取的x的尾数和y的尾数精度都有关,与a呈指数增长,与b呈倍数增长,原则上x的尾数所取位宽越大,y的尾数位宽也应越大,最终计算的结果x倒数的精度越高,查找表也就越大,查找时间和存储空间也就相应加大,实际应用中需权衡考虑。
假如要计算浮点数Rm的平方根倒数设x为Rm,y为其平方根倒数,设W为移码的数值。设x为输入Rm,y为其平方根倒数,Mx为x的浮点表示法的尾数(不含隐含位),My为y的浮点表示法的尾数(不含隐含位);Ex为x的浮点表示法的指数,Ey为y的浮点表示法的指数。
y = 1 x , x = ( 1 + M x ) × 2 ( E x - W )
y = 1 1 + M x × 2 ( Ex - W )
(1)当Ex=2N时,
y = 1 ( 1 + M x ) 2 × 2 ( ( E x - W - 1 ) = ( 2 1 + M x ) 2 ( W - 1 2 - E x 2 )
(2)当Ex=2N+1时,
y = 1 ( 1 + M x ) 4 × 2 ( E x - W - 2 ) = ( 2 1 + M x ) × 2 ( W - 1 2 - E x + 1 2 )
计算平方根倒数,参加运算的数据为正数才有效,且其符号位输出为0。
分析y的指数,Ex为奇数和偶数时可以统一,即
y的尾数查找表受Ex的影响,Ex为奇数和偶数时不一样,为此需借助Ex建立两个查找表,由于Ex的奇偶性由最低位决定,可以考虑在取x高a位尾数时,同时把Ex的最低位取上,那么mx为(a+1)位=Ex最低位与x尾数高a位进行拼接,y取高b位尾数;其中,0x1表示十六进制1,Ex&0x1表示Ex与1进行与操作,如果Ex是奇数,则与1进行与操作结果为1,偶数的话结果为0。
所以,(1)当Ex=2N时,即mx<2a时,
所以: 2 - b × ( 2 b + m y ) = 2 × 2 a 2 a + m x
所以: m y = 2 b × ( ( 2 × 2 a ) ( 2 a + m x ) - 1 )
(2)当Ex=2N+1时,即mx≥2a时,
所以: 2 - b × ( 2 b + m y ) = 4 × 2 a 2 a + m x - 2 a
所以: m y = 2 b × ( ( 4 × 2 a ) ( m x ) - 1 )
浮点倒数和平方根倒数尾数查找表结构如图1所示。101为查找地址输入,即上面提到倒数运算的所述浮点数的高a位尾数,平方根倒数运算的所述浮点数的指数最低位数据和高a位尾数拼在一起的(a+1)位数据。102为查找表结构,将101的数值和地址值进行比较,从相匹配地址值中得到有效数据传输给103,103将查找结果输出。
浮点倒数和平方根倒数在实现时不同条件下所设计的查找表大小和精度会有所不同,比如设单精度时查找地址为7位,查找精度为8位,双精度时查找地址为8位,查找精度为9位。为达到该目的,设计两个查找表非常浪费资源,对输入输出做一下处理就可复用精度最高的浮点数对应的一个查找表来实现,如低精度的计算就可以复用最高精度浮点数计算对应的查找表,这样就可以节省硬件资源。处理方法如图2所示。201在查找地址输入基础上,增加查找地址宽度指示标识,指明当前查找地址为何种位宽,202根据201提供的地址位宽指示标识生成新的查找地址,如果查找地址为低位宽标识,则查找用的地址为输入地址中从高位截取相应位宽数据,与低位拼接0组成的地址位宽数据,如果为高位宽标识,则直接为查找地址输入,203根据202生成的新地址进行匹配,输出对应地址数据,如果为低位宽地址查找则对查找表的查找为间隔查找,其查找地址部分低位恒为0,如果为高位宽数据,所有查找表项都和结果相关。204根据宽度指示对203输出的结果精度进行处理,如果为高位宽输出,将203的结果直接输出,如果为低位宽输出,则对203的输出结果从高位截取对应低位宽数据,即对应输出精度的位宽,低位补0输出,205即为输出的最终查找结果。
下面以一个具体的实施例来说明本发明提出的上述方法。
假设要设计一个单精度支持查找地址为7位,输出数据精度为8位,双精度时查找地址为8位,输出数据精度为9位的浮点倒数和平方根倒数的运算结果。进行倒数计算的输入查找地址,单精度计算时,查找地址为尾数的高7位与一位0拼接而成,双精度计算时,查找地址为尾数的高8位。进行平方根倒数计算的输入查找地址,最高位为指数的最低位,单精度计算时,查找地址的低7位为尾数的高6位与一位0拼接而成,双精度计算时,查找地址的低7位为尾数的高7位。
根据以上所述技术方案,浮点倒数的符号位与输入浮点数的符号位相同,指数位计算按照:Ey=(W-1)-Ex实现,单精度时移码W为127,双精度时移码W为1023,所以在进行单精度运算时,Ey=126-Ex,在进行双精度运算时Ey=1022-Ex。尾数查找表构造按照:
构造,即my=(29×29)/(28+mx)-29,根据此公式计算得到的查找表如下表1所示。在进行单精度运算时,对输入查找地址进行尾数最低位补0处理,输出结果为查找表中数据的高8位与一位0拼接,查找结果如表1中隔行加粗部分所示:
表1:
序号 查找地址 数据
0 00000000 111111111
1 00000001 111111100
2 00000010 111111000
3 00000011 111110100
4 00000100 111110000
5 00000101 111101100
6 00000110 111101000
7 00000111 111100100
8 00001000 111100000
9 00001001 111011101
10 00001010 111011001
11 00001011 111010101
12 00001100 111010010
13 00001101 111001110
14 00001110 111001010
15 00001111 111000111
16 00010000 111000011
17 00010001 111000000
18 00010010 110111100
19 00010011 110111001
20 00010100 110110101
21 00010101 110110010
22 00010110 110101110
23 00010111 110101011
24 00011000 110101000
25 00011001 110100100
26 00011010 110100001
27 00011011 110011110
28 00011100 110011011
29 00011101 110010111
30 00011110 110010100
31 00011111 110010001
32 00100000 110001110
33 00100001 110001011
34 00100010 110000111
35 00100011 110000100
36 00100100 110000001
37 00100101 101111110
38 00100110 101111011
39 00100111 101111000
40 00101000 101110101
41 00101001 101110010
42 00101010 101101111
43 00101011 101101100
44 00101100 101101001
45 00101101 101100110
46 00101110 101100100
47 00101111 101100001
48 00110000 101011110
49 00110001 101011011
50 00110010 101011000
51 00110011 101010101
52 00110100 101010011
53 00110101 101010000
54 00110110 101001101
55 00110111 101001010
56 00111000 101001000
57 00111001 101000101
58 00111010 101000010
59 00111011 101000000
60 00111100 100111101
61 00111101 100111010
62 00111110 100111000
63 00111111 100110101
64 01000000 100110011
65 01000001 100110000
66 01000010 100101110
67 01000011 100101011
68 01000100 100101001
69 01000101 100100110
70 01000110 100100100
71 01000111 100100001
72 01001000 100011111
73 01001001 100011100
74 01001010 100011010
75 01001011 100010111
76 01001100 100010101
77 01001101 100010011
78 01001110 100010000
79 01001111 100001110
80 01010000 100001100
81 01010001 100001001
82 01010010 100000111
83 01010011 100000101
84 01010100 100000011
85 01010101 100000000
86 01010110 011111110
87 01010111 011111100
88 01011000 011111010
89 01011001 011110111
90 01011010 011110101
91 01011011 011110011
92 01011100 011110001
93 01011101 011101111
94 01011110 011101100
95 01011111 011101010
96 01100000 011101000
97 01100001 011100110
98 01100010 011100100
99 01100011 011100010
100 01100100 011100000
101 01100101 011011110
102 01100110 011011100
103 01100111 011011010
104 01101000 011011000
105 01101001 011010110
106 01101010 011010100
107 01101011 011010010
108 01101100 011010000
109 01101101 011001110
110 01101110 011001100
111 01101111 011001010
112 01110000 011001000
113 01110001 011000110
114 01110010 011000100
115 01110011 011000010
116 01110100 011000000
117 01110101 010111110
118 01110110 010111100
119 01110111 010111011
120 01111000 010111001
121 01111001 010110111
122 01111010 010110101
123 01111011 010110011
124 01111100 010110001
125 01111101 010110000
126 01111110 010101110
127 01111111 010101100
128 10000000 010101010
129 10000001 010101000
130 10000010 010100111
131 10000011 010100101
132 10000100 010100011
133 10000101 010100001
134 10000110 010100000
135 10000111 010011110
136 10001000 010011100
137 10001001 010011011
138 10001010 010011001
139 10001011 010010111
140 10001100 010010101
141 10001101 010010100
142 10001110 010010010
143 10001111 010010001
144 10010000 010001111
145 10010001 010001101
146 10010010 010001100
147 10010011 010001010
148 10010100 010001000
149 10010101 010000111
150 10010110 010000101
151 10010111 010000100
152 10011000 010000010
153 10011001 010000000
154 10011010 001111111
155 10011011 001111101
156 10011100 001111100
157 10011101 001111010
158 10011110 001111001
159 10011111 001110111
160 10100000 001110110
161 10100001 001110100
162 10100010 001110011
163 10100011 001110001
164 10100100 001110000
165 10100101 001101110
166 10100110 001101101
167 10100111 001101011
168 10101000 001101010
169 10101001 001101000
170 10101010 001100111
171 10101011 001100101
172 10101100 001100100
173 10101101 001100011
174 10101110 001100001
175 10101111 001100000
176 10110000 001011110
177 10110001 001011101
178 10110010 001011100
179 10110011 001011010
180 10110100 001011001
181 10110101 001010111
182 10110110 001010110
183 10110111 001010101
184 10111000 001010011
185 10111001 001010010
186 10111010 001010001
187 10111011 001001111
188 10111100 001001110
189 10111101 001001101
190 10111110 001001011
191 10111111 001001010
192 11000000 001001001
193 11000001 001000111
194 11000010 001000110
195 11000011 001000101
196 11000100 001000011
197 11000101 001000010
198 11000110 001000001
199 11000111 001000000
200 11001000 000111110
201 11001001 000111101
202 11001010 000111100
203 11001011 000111011
204 11001100 000111001
205 11001101 000111000
206 11001110 000110111
207 11001111 000110110
208 11010000 000110100
209 11010001 000110011
210 11010010 000110010
211 11010011 000110001
212 11010100 000110000
213 11010101 000101110
214 11010110 000101101
215 11010111 000101100
216 11011000 000101011
217 11011001 000101010
218 11011010 000101001
219 11011011 000100111
220 11011100 000100110
221 11011101 000100101
222 11011110 000100100
223 11011111 000100011
224 11100000 000100010
225 11100001 000100000
226 11100010 000011111
227 11100011 000011110
228 11100100 000011101
229 11100101 000011100
230 11100110 000011011
231 11100111 000011010
232 11101000 000011001
233 11101001 000011000
234 11101010 000010110
235 11101011 000010101
236 11101100 000010100
237 11101101 000010011
238 11101110 000010010
239 11101111 000010001
240 11110000 000010000
241 11110001 000001111
242 11110010 000001110
243 11110011 000001101
244 11110100 000001100
245 11110101 000001011
246 11110110 000001010
247 11110111 000001001
248 11111000 000001000
249 11111001 000000111
250 11111010 000000110
251 11111011 000000101
252 11111100 000000100
253 11111101 000000011
254 11111110 000000010
255 11111111 000000001
浮点平方根倒数计算时,在参与运算的数据为正数时,计算结果才有效,符号位输出为0,指数位计算按照:
实现,单精度时移码W为127,双精度时移码W为1023,所以在进行单精度运算时,Ey=63-(Ex+(Ex&0x1))>>1,在进行双精度运算时Ey=511-(Ex+(Ex&0x1))>>1。尾数查找表构造按照:Ex=2N时,Ex=2N+1时,构造,即Ex=2N时, m y = 2 9 × ( ( 2 × 2 7 ) ( 2 7 + m x ) - 1 ) , Ex=2N+1时, m y = 2 9 × ( ( 4 × 2 7 ) ( m x ) - 1 ) , 根据此公式计算得到的查找表如下表2所示。在进行单精度运算时,对输入地址进行尾数最低位补0处理,输出结果为查找表中数据的高8位与一位0拼接,查找结果如下表2中隔行加粗部分所示:
表2:
序号 查找地址 数据
0 00000000 011010100
1 00000001 011010001
2 00000010 011001110
3 00000011 011001011
4 00000100 011001001
5 00000101 011000110
6 00000110 011000011
7 00000111 011000001
8 00001000 010111110
9 00001001 010111011
10 00001010 010111001
11 00001011 010110110
12 00001100 010110100
13 00001101 010110001
14 00001110 010101111
15 00001111 010101101
16 00010000 010101010
17 00010001 010101000
18 00010010 010100101
19 00010011 010100011
20 00010100 010100001
21 00010101 010011111
22 00010110 010011100
23 00010111 010011010
24 00011000 010011000
25 00011001 010010110
26 00011010 010010100
27 00011011 010010001
28 00011100 010001111
29 00011101 010001101
30 00011110 010001011
31 00011111 010001001
32 00100000 010000111
33 00100001 010000101
34 00100010 010000011
35 00100011 010000001
36 00100100 001111111
37 00100101 001111101
38 00100110 001111011
39 00100111 001111001
40 00101000 001111000
41 00101001 001110110
42 00101010 001110100
43 00101011 001110010
44 00101100 001110000
45 00101101 001101110
46 00101110 001101101
47 00101111 001101011
48 00110000 001101001
49 00110001 001100111
50 00110010 001100110
51 00110011 001100100
52 00110100 001100010
53 00110101 001100000
54 00110110 001011111
55 00110111 001011101
56 00111000 001011011
57 00111001 001011010
58 00111010 001011000
59 00111011 001010111
60 00111100 001010101
61 00111101 001010011
62 00111110 001010010
63 00111111 001010000
64 01000000 001001111
65 01000001 001001101
66 01000010 001001100
67 01000011 001001010
68 01000100 001001001
69 01000101 001000111
70 01000110 001000110
71 01000111 001000100
72 01001000 001000011
73 01001001 001000001
74 01001010 001000000
75 01001011 000111110
76 01001100 000111101
77 01001101 000111100
78 01001110 000111010
79 01001111 000111001
80 01010000 000111000
81 01010001 000110110
82 01010010 000110101
83 01010011 000110011
84 01010100 000110010
85 01010101 000110001
86 01010110 000101111
87 01010111 000101110
88 01011000 000101101
89 01011001 000101100
90 01011010 000101010
91 01011011 000101001
92 01011100 000101000
93 01011101 000100111
94 01011110 000100101
95 01011111 000100100
96 01100000 000100011
97 01100001 000100010
98 01100010 000100000
99 01100011 000011111
100 01100100 000011110
101 01100101 000011101
102 01100110 000011100
103 01100111 000011010
104 01101000 000011001
105 01101001 000011000
106 01101010 000010111
107 01101011 000010110
108 01101100 000010101
109 01101101 000010100
110 01101110 000010011
111 01101111 000010001
112 01110000 000010000
113 01110001 000001111
114 01110010 000001110
115 01110011 000001101
116 01110100 000001100
117 01110101 000001011
118 01110110 000001010
119 01110111 000001001
120 01111000 000001000
121 01111001 000000111
122 01111010 000000110
123 01111011 000000101
124 01111100 000000100
125 01111101 000000011
126 01111110 000000010
127 01111111 000000001
128 10000000 111111111
129 10000001 111111100
130 10000010 111111000
131 10000011 111110100
132 10000100 111110000
133 10000101 111101100
134 10000110 111101000
135 10000111 111100101
136 10001000 111100001
137 10001001 111011101
138 10001010 111011010
139 10001011 111010110
140 10001100 111010011
141 10001101 111001111
142 10001110 111001100
143 10001111 111001000
144 10010000 111000101
145 10010001 111000010
146 10010010 110111110
147 10010011 110111011
148 10010100 110111000
149 10010101 110110101
150 10010110 110110001
151 10010111 110101110
152 10011000 110101011
153 10011001 110101000
154 10011010 110100101
155 10011011 110100010
156 10011100 110011111
157 10011101 110011100
158 10011110 110011001
159 10011111 110010110
160 10100000 110010011
161 10100001 110010001
162 10100010 110001110
163 10100011 110001011
164 10100100 110001000
165 10100101 110000101
166 10100110 110000011
167 10100111 110000000
168 10101000 101111101
169 10101001 101111011
170 10101010 101111000
171 10101011 101110101
172 10101100 101110011
173 10101101 101110000
174 10101110 101101110
175 10101111 101101011
176 10110000 101101001
177 10110001 101100110
178 10110010 101100100
179 10110011 101100001
180 10110100 101011111
181 10110101 101011101
182 10110110 101011010
183 10110111 101011000
184 10111000 101010110
185 10111001 101010011
186 10111010 101010001
187 10111011 101001111
188 10111100 101001100
189 10111101 101001010
190 10111110 101001000
191 10111111 101000110
192 11000000 101000100
193 11000001 101000001
194 11000010 100111111
195 11000011 100111101
196 11000100 100111011
197 11000101 100111001
198 11000110 100110111
199 11000111 100110101
200 11001000 100110011
201 11001001 100110001
202 11001010 100101111
203 11001011 100101101
204 11001100 100101011
205 11001101 100101001
206 11001110 100100111
207 11001111 100100101
208 11010000 100100011
209 11010001 100100001
210 11010010 100011111
211 11010011 100011101
212 11010100 100011011
213 11010101 100011001
214 11010110 100010111
215 11010111 100010110
216 11011000 100010100
217 11011001 100010010
218 11011010 100010000
219 11011011 100001110
220 11011100 100001101
221 11011101 100001011
222 11011110 100001001
223 11011111 100000111
224 11100000 100000110
225 11100001 100000100
226 11100010 100000010
227 11100011 100000000
228 11100100 011111111
229 11100101 011111101
230 11100110 011111011
231 11100111 011111010
232 11101000 011111000
233 11101001 011110110
234 11101010 011110101
235 11101011 011110011
236 11101100 011110010
237 11101101 011110000
238 11101110 011101110
239 11101111 011101101
240 11110000 011101011
241 11110001 011101010
242 11110010 011101000
243 11110011 011100111
244 11110100 011100101
245 11110101 011100100
246 11110110 011100010
247 11110111 011100001
248 11111000 011011111
249 11111001 011011110
250 11111010 011011100
251 11111011 011011011
252 11111100 011011001
253 11111101 011011000
254 11111110 011010110
255 11111111 011010101
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种浮点数的倒数和/或平方根倒数运算方法,包括:
步骤1、根据输入的浮点数获取查找地址;
步骤2、根据所述查找地址从浮点数的倒数或平方根倒数尾数查找表中进行查找,得到所述浮点数的倒数或平方根倒数的尾数;其中,所述浮点数的倒数尾数查找表根据以下公式构造:
所述浮点数的平方根倒数尾数查找表根据以下公式构造:
Ex=2N时,
Ex=2N+1时,
其中,my为所述浮点数的倒数或平方根倒数的尾数,mx为所述浮点数的尾数,a为mx的位数,b为my的位数;Ex为所述浮点数的指数,N为整数;
步骤3、计算得到所述浮点数的倒数或平方根倒数的指数,其中,所述浮点数的倒数的指数如下计算:
Ey=(W-1)-Ex
所述浮点数的平方根倒数的指数如下计算:
其中,Ey为所述浮点数的倒数或平方根倒数的指数,W为所述浮点数的倒数或平方根倒数的移码;
步骤4、计算得到所述浮点数的倒数或平方根倒数的符号位,其中,所述浮点数的倒数的符号位与所述浮点数的符号位相同,所述浮点数的平方根倒数当所述浮点数为正数时才有效,且其符号位为0;
步骤5、根据所述浮点数的倒数或平方根倒数的指数、尾数和符号位得到所述浮点数的倒数或平方根倒数的运算结果。
2.如权利要求1所述的方法,其中,步骤1中,所述查找地址如下获取:
所述浮点数倒数运算时,所述查找地址为所述浮点数的高a位尾数;所述浮点数平方根倒数运算时,所述查找地址为所述浮点数的指数最低位与所述浮点数的高a位尾数拼接而成的a+1位数据。
3.如权利要求1所述的方法,其中,步骤1中所述查找地址如下获取,令低精度计算和高精度计算时所述查找地址为M和N位,M<N:
计算所述浮点数的倒数时,低精度计算时所述查找地址为所述尾数my的高M位,剩余M-N位补0;高精度计算时所述查找地址为所述尾数my的高N位;
计算所述浮点数的平方根倒数时,低精度计算时所述查找地址的最高位为所述指数Ey的最低位,剩余高M-1位为所述尾数my的高M-1位,剩余M-N位补0,高精度计算时所述查找地址的最高位为所述指数Ey的最低位,剩余N-1位为所述尾数my的高N-1位。
4.如权利要求1所述的方法,其中,计算所述浮点数的倒数时,所述浮点数的倒数的符号位与所述浮点数的符号位相同;计算所述浮点数的平方根倒数时,所述浮点数的平方根倒数的符号位为0。
5.如权利要求2所述的方法,其中,所述浮点数的倒数或所述浮点数平方根倒数运算时,低精度计算和高精度计算复用一个查找表实现。
6.如权利要求5所述的方法,其中,步骤1还包括获取查找地址宽度指示标识,并根据所述查找地址和查找地址宽度指示标识更新所述查找地址,其中,所述查找地址宽度指示标识用于指明当前查找地址为何种位宽。
7.如权利要求6所述的方法,其中,步骤1中若所述查找地址宽度指示标识为低位宽标识,则更新后的查找地址为原始查找地址中从高位截取相应位宽数据,与低位拼接0组成的地址;若所述查找地址宽度指示标识为高位宽标识,则不对所述查找地址更新,而直接使用所述查找地址进行查找。
8.如权利要求6所述的方法,其中,步骤2中对查找得到的结果进行如下处理,获得所述浮点数的倒数或平方根倒数的尾数:
如果所述查找地址宽度指示标识为低位宽标识,则对查找得到的结果从高位截取对应精度位宽数据,低位补0;
如果所述查找地址宽度指示标识为高位宽标识,则不对查找得到的结果进行处理,直接输出。
9.如权利要求1-8任一项所述的方法,其中,所述浮点数的倒数和/或平方根倒数尾数查找表为硬件查找表。
10.一种浮点数的倒数和/或平方根倒数运算装置,包括:
查找地址获取模块,其根据输入的浮点数获取查找地址;
尾数获取模块,其根据所述查找地址从浮点数的倒数或平方根倒数尾数查找表中进行查找,得到所述浮点数的倒数或平方根倒数的尾数;其中,所述浮点数的倒数尾数查找表根据以下公式构造:
所述浮点数的平方根倒数尾数查找表根据以下公式构造:
Ex=2N时,
Ex=2N+1时,
其中,my为所述浮点数的倒数或平方根倒数的尾数,mx为所述浮点数的尾数,a为mx的位数,b为my的位数;Ex为所述浮点数的指数,N为整数;
指数获取模块,其计算得到所述浮点数的倒数或平方根倒数的指数,其中,所述浮点数的倒数的指数如下计算:
Ey=(W-1)-Ex
所述浮点数的平方根倒数的指数如下计算:
其中,Ey为所述浮点数的倒数或平方根倒数的指数,W为所述浮点数的倒数或平方根倒数的移码;
符号位获取模块,其计算得到所述浮点数的倒数或平方根倒数的符号位,其中,所述浮点数的倒数的符号位与所述浮点数的符号位相同,所述浮点数的平方根倒数当所述浮点数为正数时才有效,且其符号位为0;
结果输出模块,其根据所述浮点数的倒数或平方根倒数的指数、尾数和符号位得到所述浮点数的倒数或平方根倒数的运算结果。
CN201510037527.6A 2015-01-26 2015-01-26 一种浮点倒数和/或平方根倒数运算方法及其装置 Active CN104598197B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510037527.6A CN104598197B (zh) 2015-01-26 2015-01-26 一种浮点倒数和/或平方根倒数运算方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510037527.6A CN104598197B (zh) 2015-01-26 2015-01-26 一种浮点倒数和/或平方根倒数运算方法及其装置

Publications (2)

Publication Number Publication Date
CN104598197A true CN104598197A (zh) 2015-05-06
CN104598197B CN104598197B (zh) 2017-05-31

Family

ID=53124022

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510037527.6A Active CN104598197B (zh) 2015-01-26 2015-01-26 一种浮点倒数和/或平方根倒数运算方法及其装置

Country Status (1)

Country Link
CN (1) CN104598197B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105068640A (zh) * 2015-08-13 2015-11-18 浪潮(北京)电子信息产业有限公司 一种提高高性能计算能耗比的方法及系统
CN105302520A (zh) * 2015-10-16 2016-02-03 北京中科汉天下电子技术有限公司 一种倒数运算的求解方法及系统
CN107038014A (zh) * 2015-10-19 2017-08-11 想象技术有限公司 舍入反平方根结果
CN109710211A (zh) * 2018-11-15 2019-05-03 珠海市杰理科技股份有限公司 浮点数据类型转换方法、装置、存储介质及计算机设备
CN111651486A (zh) * 2020-05-25 2020-09-11 上海寒武纪信息科技有限公司 处理装置及方法
CN112189184A (zh) * 2019-09-29 2021-01-05 深圳市大疆创新科技有限公司 浮点数处理方法、设备和可移动平台
CN112328511A (zh) * 2021-01-04 2021-02-05 统信软件技术有限公司 一种数据处理方法、计算设备及可读存储介质
CN113296732A (zh) * 2020-06-16 2021-08-24 阿里巴巴集团控股有限公司 数据处理方法和装置,处理器及数据搜索方法和装置
CN114461174A (zh) * 2022-04-13 2022-05-10 深圳云豹智能有限公司 查找表电路、芯片及电子设备
CN116700665A (zh) * 2022-02-24 2023-09-05 象帝先计算技术(重庆)有限公司 一种确定浮点数平方根倒数的方法及装置
WO2024078033A1 (zh) * 2022-10-13 2024-04-18 华为技术有限公司 一种浮点数平方根计算方法及浮点数计算模块

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1315079A1 (en) * 2001-11-22 2003-05-28 STMicroelectronics Limited Circuit for calculation of division and square root with floating point numbers
CN103809930A (zh) * 2014-01-24 2014-05-21 天津大学 一种双精度浮点数除法器的设计方法及除法器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1315079A1 (en) * 2001-11-22 2003-05-28 STMicroelectronics Limited Circuit for calculation of division and square root with floating point numbers
CN103809930A (zh) * 2014-01-24 2014-05-21 天津大学 一种双精度浮点数除法器的设计方法及除法器

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
DONGDONG CHEN ET AL: "DESIGN AND IMPLEMENTATION OF RECIPROCAL UNIT", 《SYMPOSIUM ON CIRCUITS & SYSTEMS》 *
ROBERTO GUTIERREZ ET AL: "Implementation on FPGA of a LUT-Based atan (Y/X) Operator Suitable for Synchronization Algorithms", 《FIELD PROGRAMMABLE LOGIC AND APPLICATIONS,INTERNATIONAL CONFERENCE ON》 *
TIMO VIITANEN ET AL: "INEXPENSIVE CORRECTLY ROUNDED FLOATING-POINT DIVISION AND SQUARE Root With Input Scaling", 《IEEE WORKSHOP ON SIGNAL PROCESSING SYSTEMS》 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105068640A (zh) * 2015-08-13 2015-11-18 浪潮(北京)电子信息产业有限公司 一种提高高性能计算能耗比的方法及系统
CN105068640B (zh) * 2015-08-13 2018-06-26 浪潮(北京)电子信息产业有限公司 一种提高高性能计算能耗比的方法及系统
CN105302520A (zh) * 2015-10-16 2016-02-03 北京中科汉天下电子技术有限公司 一种倒数运算的求解方法及系统
CN105302520B (zh) * 2015-10-16 2018-03-23 北京中科汉天下电子技术有限公司 一种倒数运算的求解方法及系统
CN107038014A (zh) * 2015-10-19 2017-08-11 想象技术有限公司 舍入反平方根结果
CN107038014B (zh) * 2015-10-19 2022-07-01 想象技术有限公司 舍入反平方根结果
CN109710211B (zh) * 2018-11-15 2021-03-19 珠海市杰理科技股份有限公司 浮点数据类型转换方法、装置、存储介质及计算机设备
CN109710211A (zh) * 2018-11-15 2019-05-03 珠海市杰理科技股份有限公司 浮点数据类型转换方法、装置、存储介质及计算机设备
CN112189184A (zh) * 2019-09-29 2021-01-05 深圳市大疆创新科技有限公司 浮点数处理方法、设备和可移动平台
CN111651486A (zh) * 2020-05-25 2020-09-11 上海寒武纪信息科技有限公司 处理装置及方法
CN111651486B (zh) * 2020-05-25 2023-06-27 上海寒武纪信息科技有限公司 处理装置及方法
CN113296732B (zh) * 2020-06-16 2024-03-01 阿里巴巴集团控股有限公司 数据处理方法和装置,处理器及数据搜索方法和装置
CN113296732A (zh) * 2020-06-16 2021-08-24 阿里巴巴集团控股有限公司 数据处理方法和装置,处理器及数据搜索方法和装置
CN112328511A (zh) * 2021-01-04 2021-02-05 统信软件技术有限公司 一种数据处理方法、计算设备及可读存储介质
CN112328511B (zh) * 2021-01-04 2021-05-04 统信软件技术有限公司 一种数据处理方法、计算设备及可读存储介质
CN116700665A (zh) * 2022-02-24 2023-09-05 象帝先计算技术(重庆)有限公司 一种确定浮点数平方根倒数的方法及装置
CN114461174B (zh) * 2022-04-13 2022-06-07 深圳云豹智能有限公司 查找表电路、芯片及电子设备
CN114461174A (zh) * 2022-04-13 2022-05-10 深圳云豹智能有限公司 查找表电路、芯片及电子设备
WO2024078033A1 (zh) * 2022-10-13 2024-04-18 华为技术有限公司 一种浮点数平方根计算方法及浮点数计算模块

Also Published As

Publication number Publication date
CN104598197B (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN104598197A (zh) 一种浮点倒数和/或平方根倒数运算方法及其装置
Moss et al. A two-speed, radix-4, serial–parallel multiplier
CN102722352B (zh) 一种Booth乘法器
Mrazek et al. Scalable construction of approximate multipliers with formally guaranteed worst case error
CN106951211B (zh) 一种可重构定浮点通用乘法器
CN108021537A (zh) 一种基于硬件平台的softmax实现方式
CN102073472B (zh) 一种三角函数cordic迭代运算协处理器及运算处理方法
Reddy Design and implementation of high performance and area efficient square architecture using Vedic Mathematics
CN103348300A (zh) 计算函数的函数值的装置和方法
Abed et al. High‐performance low‐power approximate Wallace tree multiplier
CN116542190B (zh) 用户设计综合方法、装置、设备、介质及产品
CN101986259B (zh) 无符号定点除法器
Barik et al. Efficient ASIC and FPGA implementation of cube architecture
CN105094744A (zh) 一种可变浮点数据微处理器
Ghadiry et al. DLPA: Discrepant low PDP 8-bit adder
Al-Khaleel et al. FPGA implementation of binary coded decimal digit adders and multipliers
CN103809931A (zh) 一种专用高速浮点指数运算器的设计
CN104536720A (zh) 基于fpga的待测角三角函数值的测算方法及系统
Fariddin et al. Design of efficient 16-bit parallel prefix ladner-fischer adder
Wang et al. $(M, p, k) $-Friendly Points: A Table-Based Method to Evaluate Trigonometric Function
CN101510149A (zh) 一种数据处理方法和装置
Moroz et al. Efficient floating-point division for digital signal processing application [Tips & Tricks]
CN104615404A (zh) 一种基于查表操作的高速浮点除法部件装置
Ahmadi et al. Symbolic noise analysis approach to computational hardware optimization
CN102929575B (zh) 一种模(2n+3)乘法器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20171204

Address after: 102412 Beijing City, Fangshan District Yan Village Yan Fu Road No. 1 No. 11 building 4 layer 402

Patentee after: Beijing Si Lang science and Technology Co.,Ltd.

Address before: 100190 Zhongguancun East Road, Beijing, No. 95, No.

Patentee before: Institute of Automation, Chinese Academy of Sciences

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Patentee after: Shanghai Silang Technology Co.,Ltd.

Address before: 102412 room 402, 4th floor, building 11, No. 1, Yanfu Road, Yancun Town, Fangshan District, Beijing

Patentee before: Beijing Si Lang science and Technology Co.,Ltd.