JP5996946B2 - 浮動小数点加算器 - Google Patents
浮動小数点加算器 Download PDFInfo
- Publication number
- JP5996946B2 JP5996946B2 JP2012145354A JP2012145354A JP5996946B2 JP 5996946 B2 JP5996946 B2 JP 5996946B2 JP 2012145354 A JP2012145354 A JP 2012145354A JP 2012145354 A JP2012145354 A JP 2012145354A JP 5996946 B2 JP5996946 B2 JP 5996946B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- circuit
- floating
- shift
- point
- 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
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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
-
- 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/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49952—Sticky bit
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Position Fixing By Use Of Radio Waves (AREA)
Description
遠経路の回路は、
MBの最下位端部から始まるMBの最下位ビット(EA−EB)内の後置ゼロ値のランレングスに対応した後置ゼロ値TZを決定するように構成された後置ゼロ計数回路と、
第1の加算値を第2の加算値に加算するように構成された遠経路の加算器であって、第1の加算値は、第1のサフィックス値に連結されたMAを含み、第2の加算値は、最下位ビット(EA−EB)がないMBを含むとともに第2のサフィックス値に連結されている、遠経路の加算器と、
を有し、
第1のサフィックス値及び第2のサフィックス値をTZ及び(EA−EB)のうちのそれぞれ1つに基づき形成する、浮動小数点加算器回路を提供する。
Pi=(LZi AND NOT GRi)OR(EAi AND GRi)であって、LZiは長さ2iのLZのプレフィックス部分であり、EAiは長さ2iのEAのプレフィックス部分であり、
i=0及び降順の各ビット位置kについて、EQi[k]がNOT(LZ[k] XOR EA[k])であり、かつ、LZ[k]>EA[k]のときにGRi[k]=1であり、LZ[k]≦EA[k]のときにGRi[k]=0であり、
i>0及び降順の各ビット位置kについて、EQi[k]=EQi−1[k] AND EQi−1[k+2(i−1)]であり、かつ、GRi[k]=GRi−1[k] OR (Ei−1[k] AND GRi−1[k+2(i−1)]である。
近経路の回路は、
(MA−MB)に対応した中間仮数値MIを決定するように構成された近経路の加算器と、
MIの最上位端部から始まるMI内の前置ゼロ値のランレングスに対応した前置ゼロ値LZを決定するように構成された前置ゼロ計数回路と、
LZとEAとの低い方の値としてシフト値結果を決定するように構成された最小値回路と、
浮動小数点数の結果の一部を形成する仮数結果MRを生成するように、シフト値結果に対応した複数のビット位置ぶんMIを左シフトさせるように構成された結果シフト回路と、
を有する、浮動小数点加算器回路を提供する。
(EA−EB)に基づきシフト量を決定するように構成されたシフト量決定回路であって、シフト量は、MAに加算するMBのシフトバージョンを形成するようにMBに適用する右シフトに対応している、シフト量決定回路と、
MBの最下位ビット端部から始まるMBの後置ゼロ値のランレングスに対応した後置ゼロ値を決定するように構成された後置ゼロ計数回路と、
MAに加算するMBのシフトバージョンから任意の非ゼロビットがシフトアウトするかを示す前記スティッキービットの値を決定するように、シフト量を後置ゼロ値と比較するように構成されたスティッキービット値決定回路と、
を有する、浮動小数点演算回路を提供する。
1: 2つの入力が同符号ならば、これは「有効な加算」であり、遠経路を用いる。
2: EA−EBが1以上ならば、遠経路を用いる。
3: EA−EBがゼロであり、かつ2つの入力が異符号ならば、近経路を用いる。
4: EA−EBが1であり、かつ入力が異符号ならば、仮数ビットを調べる。MAの最上位ビットの次のビット(すなわち、前置1ビット後の最上位ビット)が1ならば、遠経路を用い、それ以外の場合は近経路を用いる。
MA=1.01010、EA=5
MB=1.10100、EB=2
MBは2つの後置ゼロを有するが、拡張(パディング)によって4つの後置ゼロを有する。
ここで、右シフトと加算を実行すると、以下のようになる。
1.01010_00_0_011 // MAに加え、パディングの3つのゼロ、そしてシフト量が続く
+0.00110_10_0_011 // 3桁右シフトしたMBであって、シフトされた仮数の2つの最下位ビットを保有するMB、その後に1つのパディングビット、そしてNOT(TZ+2)が続く
+0.00000_10_0_000 // ULPの半分
----------------------------------------
+1.10001_00_0_110 // 中間結果
GR S
GRSがすべてゼロのため、仮数結果の最下位ビット(LSB)を消す必要がある。
+1.10001 AND NOT LSB=1.10000が正確な結果である。
Pi=(LZi AND NOT GRi)OR(EAi AND GRi)であって、LZiは長さ2iのLZのプレフィックス部分であり、EAiは長さ2iのEAのプレフィックス部分であり、
i=0及び降順の各ビット位置kについて、EQi[k]がNOT(LZ[k] XOR EA[k])であり、かつ、LZ[k]>EA[k]のときにGRi[k]=1であり、LZ[k]≦EA[k]のときにGRi[k]=0であり、
i>0及び降順の各ビット位置kについて、EQi[k]=EQi−1[k] AND EQi−1[k+2(i−1)]であり、かつ、GRi[k]=GRi−1[k] OR (Ei−1[k] AND GRi−1[k+2(i−1)]である。
それは以下のように作動する。
*2つの入力値LZとEAにおける各ビット位置に関して、2つのビット「EQ」と「GR」を決定する。「EQ」は、LZからのビットが入力EAからのビットに等しいケースに対応している。ビット「GR」は、LZからのビットが入力EAからのビットより大きいケースに対応している。
*各ビット位置EQ[k]とGR[k]の「EQ」と「GR」ビットに基づいて、次に、以下の「EQ」と「GR」ビットを組み合わせることによって任意の2ビット列用の「EQ」と「GR」ビットを計算できる。
*EQ_combined=EQ_high AND EQ_low
*GR_combined=GR_high OR(EQ_high AND GR_low)
*次に、任意の2ビット列用の「EQ」ビットと「GR」ビットから、あらゆる4ビット列用の「EQ」ビットと「GR」ビットを計算するために、隣接した2ビット列からの「EQ」ビットと「GR」ビットを組み合わせることができる。
*次に、この組み合わせ手順は、あらゆる8ビット列用の「EQ」と「GR」を形成する隣接した4ビット列で繰り返されるとともに、16ビット列用の「EQ」と「GR」を形成するように「EQ」と「GR」を形成する隣接した8ビット列で繰り返されるなどする。
最後に、「GR」値が各ビット位置について決定される。このビットは、LZとEAの最小値(min)の選択に使用できる:min(LZ、EA)=(LZ AND NOT GR)OR(EA AND GR)
この最小値自体は、初めは最上位ビットを与えない。しかしながら、最小値関数用に、入力の上位ビットのある数をただ戻す、関数prefix()を定義するならば、prefix(min(a,b))=min(prefix(a),prefix(b))という関係が成り立つ。
(たとえば、prefix関数が上位4ビットを戻し、a=01011100、及びb=10101111ならば、min(a,b)=01011100、prefix(a)=0101、prefix(b)=1010、prefix(min(a,b)=0101及びmin(prefix(a),prefix(b))=0101となり、この関係は保持される)
この関係は、prefix()関数の戻すビット数の多い少ないに拘わらずに保持される。
この関係は、「EQ」と「GR」ビットを用いて以下のように使用できる。
*LZとEAの最上位ビットがLZとEAの1ビットのprefix(プレフィックス)であるため、最小値結果の最上位ビットを正確に決定するように、最上位ビット用の「GR」ビットを使用できる。
*同様に、上位2ビット用に、最小値結果の上位2ビットを正確に決定するように、上位2ビット列用の「GR」ビットを使用できる。
*また、上位4ビット用に、最小値結果の上位4ビットを正確に決定するように、上位4ビット列用の「GR」ビットを使用できる。
*8ビット、16ビット、32ビットなどについても同様である。
このようにして、正確な最小値ビットは、最上位ビットを最初に決定する方法で求めることができる。
実施例として、ビット列LZ=01010111とEA=01010101を与え、値X=min(LZ,EA)を計算してみる。
*最初に、「EQ」と「GR」ビットを各ビット位置について計算する。これによって、EQ=11111101とGR=00000010を得る。
*この時点で、最上位ビット用の「GR」は「0」である。そのため、Xの最上位ビットは(LZ AND NOT GR)OR(EA AND GR)として計算され、その計算結果は、「0」となる。
*次に、「EQ」と「GR」ビットを隣接したビット位置用に組み合わせる。これにより、EQ=1111100とGR=0000011を得る。
*この時点で、上位2ビット列用の「GR」は「0」である。そのため、上位2ビットは(LZ AND NOT GR)OR(EA AND GR)として計算でき、その計算結果は、「01」となる。(当然ながら、この時点で最上位ビットを計算することは、この計算は既に以前になされているため、冗長である。)
*次に、「EQ」と「GR」ビットを隣接した2ビット位置用に組み合わせる。これにより、EQ=11100とGR=00011を得る。
*この時点で、上位4ビット列用の「GR」は「0」である。そのため、上位4ビットは(LZ AND NOT GR)OR(EA AND GR)として計算でき、その計算結果は、「0101」となる。(この時点で上位2ビットを計算することは、この計算は既に以前になされているため、冗長である。)
*次に、「EQ」と「GR」ビットを隣接した4ビット位置用に組み合わせる。全体としての数に関する最終的な「EQ」と「GR」値は、「EQ」=0、「GR」=1となる。
*この時点で、8ビット全体の数用の「GR」は「1」である。そのため、上位4ビットは(LZ AND NOT GR)OR(EA AND GR)として計算でき、その計算結果は、「01010101」となる。(この時点で上位4ビットを計算することは、この計算は既に以前になされているため、冗長である。)
1ビットのプレフィックス、2ビットのプレフィックス及び4ビットのプレフィックスの結果を8ビット全体の数の結果よりも早く得るこの方法に注意されたい。
先に記載したように、近経路は、キャンセル(減算)が起こる場合(AがBに非常に近い値を取る、AとBの浮動小数点の加算)を扱うのに使用される。この場合、結果として生じる浮動小数点数の仮数を正規化するように左シフトを実行する必要がある。しかしながら、このキャンセルによって、浮動小数点数は、非正規化数になるほどに小さい数となり得る。この場合、実行される左シフトを制限しなければならない。
減算後に、仮数上で前置ゼロ計数(CLZ)を実行することで正規化する。当該目的のために、CLZ前に単一の「0」ビットを追加し、次にCLZ演算を実行する。次に、CLZ結果とより大きい入力数の指数との間で最小値演算を実行した後に、この最小値演算の結果を結果数に適用するシフト量として使用する。
その結果が非正規化数ではない第1の16ビットの浮動小数点数(FP16)の実施例を考えてみる。
*A=0_00111_1100001010、B=1_00111_1000000000とする。
*これらの2つの数を指数と仮数(陰的な1ビットを含む)に分解すると、A_exp=00111、A_mant=11100001010、B_exp=00111、B_mant=1100000000、より大きい指数は、MaxExp=max(A_exp,B_exp)=00111となる。
次に、減算の前に、仮数の上位端と下位端にゼロを付加する。
A_mant:=0_11100001010_0
B_mant:=0_11000000000_0
次に実際の減算を実行する。
Diff=A_mant−B_mant=0001000010100
この結果に前置ゼロ計数を実行すると、Cdiff=CLZ(Diff)=3となる。
次に最小値を計算すると、Lsh=Min(Cdiff,MaxExp)=3となる。次に、仮数値結果を得るように「Lsh」ビットぶん左シフトさせる。その結果は、Res_mant=Diff<<Lsh=1000010100000となる。この結果は正規であるため、次に指数を計算すると、その結果は、Res_exp=MaxExp+1−Cdiff=00100となる。次に、最下位2ビットを切り捨てるようにして仮数結果を得る。
次に最終的な結果を作ると、その結果は、Res=0_00100_0000101000となる(仮数のMSBは陰的であるため、その結果に実際には現れないことに注意されたい)。
次に、結果が非正規化数である第2のFP16の実施例を考えてみる。
*A=0_00010_1100001010、B=1_00010_1100000000とする。
*これらの2つの数を指数と仮数(陰的な1ビットを含む)に分解すると、
A_exp=00010、A_mant=11100001010、B_exp=00010、B_mant=11100000000、より大きい指数は、MaxExp=max(A_exp,B_exp)=00010となる。
次に、減算の前に、仮数の上位端と下位端にゼロを付加する。
A_mant:=0_11100001010_0
B_mant:=0_11100000000_0
次に実際の減算を実行する。
Diff=A_mant−B_mant=0000000010100
この結果に前置ゼロ計数を実行すると、Cdiff=CLZ(Diff)=8となる。
次に最小値を計算すると、Lsh=Min(Cdiff,MaxExp)=2となる。次に、仮数値結果を得るように「Lsh」ビットぶん左シフトさせる。その結果は、Res_mant=Diff<<Lsh=0000001010000となる。この結果は非正規であるため、指数はゼロとなる。また、最下位2ビットを切り捨てるようにして仮数結果を得る。次に最終的な結果を作ると、その結果は、Res=0_00000_0000010100となる(繰り返しになるが、仮数のMSBは最終的な結果に現れず、この非正規のケースでは、このMSBはゼロである)。
両方の実施例は、同程度の大きさの2つの入力を含む。異なる大きさの2つの入力の場合、この大きさは高々1だけ異なってもよい(これ以外の場合、システムは遠経路を使用してきた)。この場合、より小さい数の仮数は、減算の前に、上位端に2つのゼロビットを有し、下位端にゼロビットを有していない傾向がある。一方で、より大きい数の仮数は、上位端に1つのゼロビットを有し、下位端に1つのゼロビットを有している傾向がある。
4 浮動小数点レジスタ
6 データ処理パイプライン
8,16,18,20,24 浮動小数点加算器回路
10 比較回路
12,14,22,30 マルチプレクサ
26 遠経路の加算器
28 近経路の加算器
Claims (39)
- 第1の浮動小数点数を第2の浮動小数点数に加算する浮動小数点加算器回路であって、前記第1の浮動小数点数は指数値EA及び仮数値MAを有し、前記第2の浮動小数点数は指数値EB及び仮数値MBを有し、EAはEB以上であり、
前記第1の浮動小数点数と前記第2の浮動小数点数とが少なくとも1つの所定の遠経路の条件に適合するときに、浮動小数点値の結果を生成するように構成された遠経路の回路を有し、
前記遠経路の回路は、
MBの最下位端部から始まるMBの最下位ビット(EA−EB)内の後置ゼロ値のランレングスに対応した後置ゼロ値TZを決定するように構成された後置ゼロ計数回路と、
第1の加算値を第2の加算値に加算するように構成された遠経路の加算器であって、前記第1の加算値は、第1のサフィックス値に連結されたMAを含み、前記第2の加算値は、最下位ビット(EA−EB)がないMBを含むとともに第2のサフィックス値に連結されている、遠経路の加算器と、
を有し、
前記第1のサフィックス値及び前記第2のサフィックス値をTZ及び(EA−EB)のうちのそれぞれ1つに基づき形成する、浮動小数点加算器回路。 - 前記第1のサフィックス値及び前記第2のサフィックス値が、TZ及びNOT((EA−EB))のうちのそれぞれ1つに基づき形成される、請求項1に記載の浮動小数点加算器回路。
- 前記第1のサフィックス値が、第1のサフィックス終端値の前に3つのパディングビットを有し、
前記第2のサフィックス値が、第2のサフィックス終端値の前に1つのパディングビットを有し、
前記第1のサフィックス終端値及び前記第2のサフィックス終端値は、(TZ+2)及びNOT((EA−EB))のうちのそれぞれ1つを有する、請求項2に記載の浮動小数点加算器回路。 - 前記3つのパディングビット及び前記1つのパディングビットが、前記遠経路の加算器の出力において最小精度の単位の半分に対応して値が合計される、請求項3に記載の浮動小数点加算器回路。
- 前記第1のサフィックス値及び前記第2のサフィックス値が、NOT(TZ)及び(EA−EB)のうちのそれぞれの1つに基づき形成される、請求項1に記載の浮動小数点加算器回路。
- 前記第1のサフィックス値が、第1のサフィックス終端値の前に3つのパディングビットを有し、
前記第2のサフィックス値が、第2のサフィックス終端値の前に1つのパディングビットを有し、
前記第1のサフィックス終端値及び前記第2のサフィックス終端値は、NOT(TZ+2)及び(EA−EB)のうちのそれぞれ1つを有する、請求項5に記載の浮動小数点加算器回路。 - 前記3つのパディングビット及び前記1つのパディングビットが、前記遠経路の加算器の出力において最小精度の単位の半分に対応して値が合計される、請求項6に記載の浮動小数点加算器回路。
- 前記第2の加算値が、(EA−EB)のゼロ値のプレフィックスを有する、請求項1に記載の浮動小数点加算器回路。
- 前記遠経路の回路が、前記後置ゼロ計数回路と並列して動作するように構成された第2の加算値シフト回路を有し、該第2の加算値シフト回路は、(EA−EB)ビット位置ぶんMBを論理的に右シフトさせる、請求項1に記載の浮動小数点加算器回路。
- 前記第2の加算値シフト回路が、前記第2の加算値の最上位(EA−EB)のビット位置に前置ゼロ値を入れる、請求項9に記載の浮動小数点加算器回路。
- 前記遠経路の回路が、前記後置ゼロ計数回路と並列して動作するように構成された指数差計算回路を有し、該指数差計算回路は、(EA−EB)の値を計算する、請求項1に記載の浮動小数点加算器回路。
- MAのビット長が2X以上(Xは正の整数)であり、
前記第1の加算値のビット長が2(X+1)未満である、請求項1に記載の浮動小数点加算器回路。 - 第1の入力加算値及び第2の入力加算値が受け取られ、
第1の処理経路、第2の処理経路、並びに該第1の処理経路及び該第2の処理経路の1つから結果を選択するマルチプレクサを形成するように構成された二重化回路を有し、
前記第1の処理経路は、前記第1の入力加算値が前記第2の入力加算値より大きいものと仮定し、
前記第2の処理経路は、前記第2の入力加算値が前記第1の入力加算値より大きいものと仮定し、
前記マルチプレクサは、前記第1の入力加算値及び第2の前記入力加算値のどちらかがより大きいか前記二重化回路内で少なくとも部分的に加算処理を完了した後に前記第1の処理経路及び前記第2の処理経路の1つを決定したときに、前記結果を選択する、請求項1に記載の浮動小数点加算器回路。 - 第1の入力加算値及び第2の入力加算値が受け取られ、
比較回路と、
スイッチング回路と、
を有し、
前記比較回路は、前記第1の入力加算値と前記第2の入力加算値との大小を決定するように、該第1の入力加算値と該第2の入力加算値との比較を実行するように構成されており、
前記スイッチング回路は、前記第1の入力加算値と前記第2の入力加算値の加算の開始前に、前記第1の入力加算値の経路及び前記第2の入力加算値の経路を前記比較に従う経路へ切り換えるように構成されている、請求項1に記載の浮動小数点加算器回路。 - 前記遠経路の回路が反転回路を有し、該反転回路は、前記第2の浮動小数点数を前記第1の浮動小数点数から減じるように前記浮動小数点加算器回路が前記第1の加算値と前記第2の加算値を加える前に、MB内でビットを反転するように構成されている、請求項1に記載の浮動小数点加算器回路。
- 前記第1の浮動小数点数と前記第2の浮動小数点数とが少なくとも1つの所定の近経路の条件値に適合するときに、浮動小数点値の結果を生成するように構成された近経路の回路を有し、
前記近経路の回路は、
(MA−MB)に対応した中間仮数値MIを決定するように構成された近経路の加算器と、
MIの最上位端部から始まるMI内の前置ゼロ値のランレングスに対応した前置ゼロ値LZを決定するように構成された前置ゼロ計数回路と、
LZとEAとの低い方の値としてシフト値結果を決定するように構成された最小値回路と、
浮動小数点数の結果の一部を形成する仮数結果MRを生成するように、前記シフト値結果に対応した複数のビット位置ぶんMIを左シフトさせるように構成された結果シフト回路と、
を有する、請求項1に記載の浮動小数点加算器回路。 - 前記近経路の回路が、仮数シフト回路を有し、該仮数シフト回路は、EAがEBに等しくないならば、MBを前記近経路の加算器に入力する前にMBを(EA−EB)ビット位置ぶん右シフトさせるように構成されている、請求項16に記載の浮動小数点加算器回路。
- 前記最小値回路が、前記シフト値結果の下位ビットを1以上生成する前に前記シフト値結果の上位ビットを1以上生成するように構成されている、請求項16に記載の浮動小数点加算器回路。
- 前記結果シフト回路が、前記シフト値結果で得られた複数のビット位置ぶんMIを右シフトさせるように構成された対数シフト回路であり、該対数シフト回路は、前記最小値回路が前記1以上の下位ビットを生成する前に前記1以上の上位ビットに基づき任意の左シフトを開始するように構成されている、請求項18に記載の浮動小数点加算器回路。
- 前記最小値回路が、LZ及びEAに対応した2つの入力P及びQを有するとともに、長さ2iの前記シフト値結果のプレフィックス部分Piの順番の決定により前記シフト値結果を決定し、該決定はi=0から始まり、
Pi=(LZi AND NOT GRi)OR(EAi AND GRi)であって、LZiは長さ2iのLZのプレフィックス部分であり、EAiは長さ2iのEAのプレフィックス部分であり、
i=0及び降順の各ビット位置kについて、EQi[k]がNOT(LZ[k] XOR EA[k])であり、かつ、LZ[k]>EA[k]のときにGRi[k]=1であり、LZ[k]≦EA[k]のときにGRi[k]=0であり、
i>0及び降順の各ビット位置kについて、EQi[k]=EQi−1[k] AND EQi−1[k+2(i−1)]であり、かつ、GRi[k]=GRi−1[k] OR (Ei−1[k] AND GRi−1[k+2(i−1)]である、請求項16に記載の浮動小数点加算器回路。 - 前記近経路の所定値が1である、請求項16に記載の浮動小数点加算器回路。
- 前記最小値回路が、前記浮動小数点数の結果が有効な非正規の浮動小数点数であるように前記シフト値結果を制限する、請求項16に記載の浮動小数点加算器回路。
- 第1の浮動小数点数から第2の浮動小数点数を減算する浮動小数点加算器回路であって、前記第1の浮動小数点数は指数値EA及び仮数値MAを有し、前記第2の浮動小数点数は指数値EB及び仮数値MBを有し、EAはEB以上であり、
(EA−EB)が近経路の所定値未満のときに浮動小数点値の結果を生成するように構成された近経路の回路を有し、
前記近経路の回路は、
(MA−MB)に対応した中間仮数値MIを決定するように構成された近経路の加算器と、
MIの最上位端部から始まるMI内の前置ゼロ値のランレングスに対応した前置ゼロ値LZを決定するように構成された前置ゼロ計数回路と、
LZとEAとの低い方の値としてシフト値結果を決定するように構成された最小値回路と、
浮動小数点数の結果の一部を形成する仮数結果MRを生成するように、前記シフト値結果に対応した複数のビット位置ぶんMIを左シフトさせるように構成された結果シフト回路と、
を有する、浮動小数点加算器回路。 - 前記近経路の回路が、仮数シフト回路を有し、該仮数シフト回路は、EAがEBに等しくないならば、MBを前記近経路の加算器に入力する前にMB上を(EA−EB)ビット位置ぶん右シフトさせるように構成されている、請求項23に記載の浮動小数点加算器回路。
- 前記最小値回路が、前記シフト値結果の下位ビットを1以上生成する前に前記シフト値結果の上位ビットを1以上生成するように構成されている、請求項23に記載の浮動小数点加算器回路。
- 前記結果シフト回路が、前記シフト値結果で得られた複数のビット位置ぶんMIを右シフトさせるように構成された対数シフト回路であり、該対数シフト回路は、前記最小値回路が前記シフト値結果の1以上の下位ビットを生成する前に前記シフト値結果の1以上の上位ビットに基づき任意の左シフトを開始するように構成されている、請求項25に記載の浮動小数点加算器回路。
- 前記最小値回路が、LZ及びEAに対応した2つの入力P及びQを有するとともに、長さ2iの前記シフト値結果のプレフィックス部分Piの順番の決定により前記シフト値結果を決定し、i=0から始まり、
Pi=(LZi AND NOT GRi)OR(EAi AND GRi)であって、LZiは長さ2iのLZのプレフィックス部分であり、EAiは長さ2iのEAのプレフィックス部分であり、
i=0及び降順の各ビット位置kについて、EQi[k]がNOT(LZ[k] XOR EA[k])であり、かつ、LZ[k]>EA[k]のときにGRi[k]=1であり、LZ[k]≦EA[k]のときにGRi[k]=0であり、
i>0及び降順の各ビット位置kについて、EQi[k]=EQi−1[k] AND EQi−1[k+2(i−1)]であり、かつ、GRi[k]=GRi−1[k] OR (Ei−1[k] AND GRi−1[k+2(i−1)]である、請求項23に記載の浮動小数点加算器回路。 - 前記近経路の所定値が1である、請求項23に記載の浮動小数点加算器回路。
- 前記最小値回路が、前記浮動小数点数の結果が有効な非正規の浮動小数点数であるように前記シフト値結果を制限する、請求項23に記載の浮動小数点加算器回路。
- 第1の浮動小数点数を第2の浮動小数点数に加算する浮動小数点加算器回路であって、前記第1の浮動小数点数は指数値EA及び仮数値MAを有し、前記第2の浮動小数点数は指数値EB及び仮数値MBを有し、EAはEB以上であり、
前記第1の浮動小数点数と前記第2の浮動小数点数とが少なくとも1つの所定の遠経路の条件に適合するときに、浮動小数点値の結果を生成するように構成された遠経路手段を有し、
前記遠経路手段は、
MBの最下位端部から始まるMBの最下位ビット(EA−EB)内の後置ゼロ値のランレングスに対応した後置ゼロ値TZを決定する後置ゼロ計数手段と、
第1の加算値を第2の加算値に加算する遠経路加算手段であって、前記第1の加算値は、第1のサフィックス値に連結されたMAを含み、前記第2の加算値は、最下位ビット(EA−EB)がないMBを含むとともに第2のサフィックス値に連結されている、遠経路加算手段と、
を有し、
前記第1のサフィックス値及び前記第2のサフィックス値をTZ及び(EA−EB)のうちのそれぞれ1つに基づき形成する、浮動小数点加算器回路。 - 第1の浮動小数点数から第2の浮動小数点数を減算する浮動小数点加算器回路であって、前記第1の浮動小数点数は指数値EA及び仮数値MAを有し、前記第2の浮動小数点数は指数値EB及び仮数値MBを有し、EAはEB以上であり、
前記第1の浮動小数点数と前記第2の浮動小数点数とが少なくとも1つの所定の近経路の条件に適合するときに、浮動小数点値の結果を生成するように構成された近経路手段を有し、
前記近経路手段は、
(MA−MB)に対応した中間仮数値MIを決定する近経路加算手段と、
MIの最上位端部から始まるMI内の前置ゼロ値のランレングスに対応した前置ゼロ値LZを決定する前置ゼロ計数手段と、
LZとEAとの低い方の値としてシフト値結果を決定する最小値手段と、
浮動小数点数の結果の一部を形成する仮数結果MRを生成するように、前記シフト値結果に対応した複数のビット位置ぶんMIをシフトさせる結果シフト手段と、
を有する、浮動小数点加算器回路。 - 第1の浮動小数点数を第2の浮動小数点数に加算する方法であって、
前記第1の浮動小数点数は指数値EA及び仮数値MAを有し、前記第2の浮動小数点数は指数値EB及び仮数値MBを有し、EAはEB以上であり、
前記第1の浮動小数点数と前記第2の浮動小数点数とが少なくとも1つの所定の遠経路の条件に適合するときに、
MBの最下位端部から始まるMBの最下位ビット(EA−EB)内の後置ゼロ値のランレングスに対応した後置ゼロ値TZを決定するステップと、
第1の加算値を第2の加算値に加算するステップであって、前記第1の加算値は、第1のサフィックス値に連結されたMAを含み、前記第2の加算値は、最下位ビット(EA−EB)がないMBを含むとともに第2のサフィックス値に連結されている、ステップと、
を有し、
前記第1のサフィックス値及び前記第2のサフィックス値をTZ及び(EA−EB)のうちのそれぞれ1つに基づき形成する、方法。 - 第1の浮動小数点数から第2の浮動小数点数を減算する方法であって、
前記第1の浮動小数点数は指数値EA及び仮数値MAを有し、前記第2の浮動小数点数は指数値EB及び仮数値MBを有し、EAはEB以上であり、
前記第1の浮動小数点数と前記第2の浮動小数点数とが少なくとも1つの所定の近経路の条件値に適合するときに、
(MA−MB)に対応した中間仮数値MIを決定するステップと、
MIの最上位端部から始まるMI内の前置ゼロ値のランレングスに対応した前置ゼロ値LZを決定するステップと、
LZとEAとの低い方の値としてシフト値結果を決定するステップと、
浮動小数点数の結果の一部を形成する仮数結果MRを生成するように、前記シフト値結果に対応した複数のビット位置ぶんMIをシフトさせるステップと、
を有する、方法。 - 第1の浮動小数点数を第2の浮動小数点数に加算するときに用いるスティッキービットを決定する浮動小数点演算回路であって、前記第1の浮動小数点数は指数値EA及び仮数値MAを有し、前記第2の浮動小数点数は指数値EB及び仮数値MBを有し、EAはEBより大きく、
(EA−EB)に基づきシフト量を決定するように構成されたシフト量決定回路であって、前記シフト量は、MAに加算するMBのシフトバージョンを形成するようにMBに適用する右シフトに対応している、シフト量決定回路と、
MBの最下位ビット端部から始まるMBの後置ゼロ値のランレングスに対応した後置ゼロ値を決定するように構成された後置ゼロ計数回路と、
MAに加算するMBの前記シフトバージョンから任意の非ゼロビットがシフトアウトするかを示す前記スティッキービットの値を決定するように、前記シフト量を前記後置ゼロ値と比較するように構成されたスティッキービット値決定回路と、
を有する、浮動小数点演算回路。 - EAがEBより大きいことを決定する指数比較回路を有する、請求項34に記載の浮動小数点演算回路。
- 前記シフト量決定回路が、EAがEBより大きいことを前記指数比較回路が決定する前に(EB−EA)に基づき更なるシフト量を決定するように構成されている、請求項35に記載の浮動小数点演算回路。
- 前記後置ゼロ計数回路が、MAの最下位ビット端部から始まるMAの後置ゼロ値のランレングスに対応した更なる後置ゼロ値を決定するように構成されている、請求項35に記載の浮動小数点演算回路。
- 第1の浮動小数点数を第2の浮動小数点数に加算するときに用いるスティッキービットを決定する浮動小数点演算回路であって、前記第1の浮動小数点数は指数値EA及び仮数値MAを有し、前記第2の浮動小数点数は指数値EB及び仮数値MBを有し、EAはEBより大きく、
(EA−EB)に基づきシフト量を決定するシフト量決定手段であって、前記シフト量は、MAに加算するMBのシフトバージョンを形成するようにMBに適用する右シフトに対応している、シフト量決定手段と、
MBの最下位ビット端部から始まるMBの後置ゼロ値のランレングスに対応した後置ゼロ値を決定する後置ゼロ計数手段と、
MAに加算するMBの前記シフトバージョンから任意の非ゼロビットがシフトアウトするかを示す前記スティッキービットの値を決定するように、前記シフト量を前記後置ゼロ値と比較するスティッキービット値決定手段と、
を有する、浮動小数点演算回路。 - 第1の浮動小数点数を第2の浮動小数点数に加算するときに用いるスティッキービットを決定する方法であって、前記第1の浮動小数点数は指数値EA及び仮数値MAを有し、前記第2の浮動小数点数は指数値EB及び仮数値MBを有し、EAはEBより大きく、
(EA−EB)に基づきシフト量を決定するステップであって、前記シフト量は、MAに加算するMBのシフトバージョンを形成するようにMBに適用する右シフトに対応している、ステップと、
MBの最下位ビット端部から始まるMBの後置ゼロ値のランレングスに対応した後置ゼロ値を決定するステップと、
MAに加算するMBの前記シフトバージョンから任意の非ゼロビットがシフトアウトするかを示す前記スティッキービットの値を決定するように、前記シフト量を前記後置ゼロ値と比較するステップと、
を有する、方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB1111035.0A GB201111035D0 (en) | 2011-06-29 | 2011-06-29 | Floating point adder |
GB1111035.0 | 2011-06-29 | ||
GB1111399.0A GB2492173B (en) | 2011-06-29 | 2011-07-05 | Floating point adder |
GB1111399.0 | 2011-07-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013012203A JP2013012203A (ja) | 2013-01-17 |
JP5996946B2 true JP5996946B2 (ja) | 2016-09-21 |
Family
ID=44485348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012145354A Active JP5996946B2 (ja) | 2011-06-29 | 2012-06-28 | 浮動小数点加算器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9009208B2 (ja) |
JP (1) | JP5996946B2 (ja) |
CN (1) | CN102855117B (ja) |
GB (2) | GB201111035D0 (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9830129B2 (en) | 2013-11-21 | 2017-11-28 | Samsung Electronics Co., Ltd. | High performance floating-point adder with full in-line denormal/subnormal support |
US9582248B2 (en) * | 2014-09-26 | 2017-02-28 | Arm Limited | Standalone floating-point conversion unit |
US9836278B2 (en) * | 2015-05-29 | 2017-12-05 | Huawei Technologies Co., Ltd. | Floating point computation apparatus and method |
US9996319B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Floating point (FP) add low instructions functional unit |
WO2017185203A1 (zh) * | 2016-04-25 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于执行多个浮点数相加的装置及方法 |
CN107305485B (zh) * | 2016-04-25 | 2021-06-08 | 中科寒武纪科技股份有限公司 | 一种用于执行多个浮点数相加的装置及方法 |
CN117499645A (zh) * | 2016-04-29 | 2024-02-02 | 英迪股份有限公司 | 图像解码装置、图像编码装置和用于发送比特流的装置 |
KR102481418B1 (ko) * | 2016-06-07 | 2022-12-26 | 목원대학교 산학협력단 | 단일 곱셈-누산 방법 및 장치 |
US10042607B2 (en) | 2016-08-22 | 2018-08-07 | Altera Corporation | Variable precision floating-point multiplier |
US10055195B2 (en) | 2016-09-20 | 2018-08-21 | Altera Corporation | Variable precision floating-point adder and subtractor |
US10606557B2 (en) * | 2016-12-06 | 2020-03-31 | Arm Limited | Leading zero anticipation |
US10379851B2 (en) | 2017-06-23 | 2019-08-13 | International Business Machines Corporation | Fine-grained management of exception enablement of floating point controls |
US10740067B2 (en) | 2017-06-23 | 2020-08-11 | International Business Machines Corporation | Selective updating of floating point controls |
US10684852B2 (en) | 2017-06-23 | 2020-06-16 | International Business Machines Corporation | Employing prefixes to control floating point operations |
US10514913B2 (en) | 2017-06-23 | 2019-12-24 | International Business Machines Corporation | Compiler controls for program regions |
US10310814B2 (en) | 2017-06-23 | 2019-06-04 | International Business Machines Corporation | Read and set floating point control register instruction |
US10725739B2 (en) | 2017-06-23 | 2020-07-28 | International Business Machines Corporation | Compiler controls for program language constructs |
US10481908B2 (en) | 2017-06-23 | 2019-11-19 | International Business Machines Corporation | Predicted null updated |
US10275218B1 (en) * | 2017-10-25 | 2019-04-30 | Arm Limited | Apparatus and method for subtracting significand values of floating-point operands |
US10871946B2 (en) | 2018-09-27 | 2020-12-22 | Intel Corporation | Methods for using a multiplier to support multiple sub-multiplication operations |
US10732932B2 (en) | 2018-12-21 | 2020-08-04 | Intel Corporation | Methods for using a multiplier circuit to support multiple sub-multiplications using bit correction and extension |
CN110045944A (zh) * | 2019-04-23 | 2019-07-23 | 陈新豫 | 新型快速加法器 |
CN112463113B (zh) * | 2020-12-02 | 2021-11-23 | 中国电子科技集团公司第五十八研究所 | 浮点加法单元 |
US20220206747A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Efficient Dual-path Floating-Point Arithmetic Operators |
CN113672198B (zh) * | 2021-08-18 | 2024-01-26 | 南京英锐创电子科技有限公司 | 二进制浮点数加法运算电路控制方法、电路及计算装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4758972A (en) * | 1986-06-02 | 1988-07-19 | Raytheon Company | Precision rounding in a floating point arithmetic unit |
US5128889A (en) * | 1990-02-22 | 1992-07-07 | Matsushita Electric Industrial Co., Ltd. | Floating-point arithmetic apparatus with compensation for mantissa truncation |
JPH07104777B2 (ja) * | 1990-02-22 | 1995-11-13 | 松下電器産業株式会社 | 浮動小数点加減算装置 |
US5136536A (en) * | 1990-05-04 | 1992-08-04 | Weitek Corporation | Floating-point ALU with parallel paths |
US5694350A (en) * | 1995-06-30 | 1997-12-02 | Digital Equipment Corporation | Rounding adder for floating point processor |
JPH09204295A (ja) * | 1996-01-29 | 1997-08-05 | Kofu Nippon Denki Kk | スティッキービット検出回路 |
WO1998006031A1 (en) * | 1996-08-05 | 1998-02-12 | Valery Yakovlevich Gorshtein | Floating point addition methods and apparatus |
JP2919386B2 (ja) * | 1996-09-19 | 1999-07-12 | 甲府日本電気株式会社 | 浮動小数点数検出装置および浮動小数点数検出回路 |
US6298367B1 (en) * | 1998-04-06 | 2001-10-02 | Advanced Micro Devices, Inc. | Floating point addition pipeline including extreme value, comparison and accumulate functions |
EP1025485B1 (en) * | 1997-10-23 | 2001-09-12 | Advanced Micro Devices, Inc. | Multifunction bipartite look-up table |
US6131106A (en) * | 1998-01-30 | 2000-10-10 | Sun Microsystems Inc | System and method for floating-point computation for numbers in delimited floating point representation |
JP2003029960A (ja) * | 2001-06-07 | 2003-01-31 | Fujitsu Ltd | 浮動小数点加算器のショートパスにおける丸めステップの排除 |
CN100543723C (zh) * | 2004-08-13 | 2009-09-23 | 模拟装置公司 | 用于高效浮点运算器(alu)的方法 |
US7707236B2 (en) * | 2004-08-13 | 2010-04-27 | Analog Devices, Inc. | Methods and apparatus for an efficient floating point ALU |
US7437400B2 (en) * | 2005-03-14 | 2008-10-14 | Arm Limited | Data processing apparatus and method for performing floating point addition |
CN101438232B (zh) * | 2006-05-16 | 2015-10-21 | 英特尔公司 | 不同浮点格式的浮点加法 |
-
2011
- 2011-06-29 GB GBGB1111035.0A patent/GB201111035D0/en not_active Ceased
- 2011-07-05 GB GB1111399.0A patent/GB2492173B/en active Active
-
2012
- 2012-06-28 US US13/536,113 patent/US9009208B2/en active Active
- 2012-06-28 JP JP2012145354A patent/JP5996946B2/ja active Active
- 2012-06-29 CN CN201210229706.6A patent/CN102855117B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US9009208B2 (en) | 2015-04-14 |
GB201111399D0 (en) | 2011-08-17 |
GB2492173A (en) | 2012-12-26 |
JP2013012203A (ja) | 2013-01-17 |
GB201111035D0 (en) | 2011-08-10 |
CN102855117B (zh) | 2017-04-12 |
US20130007084A1 (en) | 2013-01-03 |
GB2492173B (en) | 2020-04-22 |
GB2492173A8 (en) | 2013-02-13 |
CN102855117A (zh) | 2013-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5996946B2 (ja) | 浮動小数点加算器 | |
US7668896B2 (en) | Data processing apparatus and method for performing floating point multiplication | |
US9823897B2 (en) | Apparatus and method for floating-point multiplication | |
JP6001276B2 (ja) | 浮動小数点加算を実行するための装置および方法 | |
US9582248B2 (en) | Standalone floating-point conversion unit | |
CN107769791B (zh) | 用于定点到浮点的转换的装置和方法及2的负幂检测器 | |
JPH05250143A (ja) | 丸め装置及び丸め方法 | |
US6996596B1 (en) | Floating-point processor with operating mode having improved accuracy and high performance | |
CN104899004A (zh) | 一种用于将浮点操作数相乘的数据处理装置和方法 | |
JP3845009B2 (ja) | 積和演算装置、及び積和演算方法 | |
CN108694037B (zh) | 用于在执行浮点减法时估计移位量的装置和方法 | |
US7668892B2 (en) | Data processing apparatus and method for normalizing a data value | |
US7437400B2 (en) | Data processing apparatus and method for performing floating point addition | |
US20060136543A1 (en) | Data processing apparatus and method for performing floating point addition | |
JPH0520028A (ja) | 加減算のための浮動小数点演算装置の仮数部処理回路 | |
US8015231B2 (en) | Data processing apparatus and method for performing floating point multiplication | |
KR102459011B1 (ko) | 선두 제로 예측 | |
JP2558669B2 (ja) | 浮動小数点演算装置 | |
KR101922462B1 (ko) | 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법 | |
US7640286B2 (en) | Data processing apparatus and method for performing floating point multiplication | |
US10275218B1 (en) | Apparatus and method for subtracting significand values of floating-point operands | |
US20240004611A1 (en) | Tininess detection | |
KR20230015844A (ko) | 극소 검출 | |
Khobragade et al. | Floating point unit using error correction scheme and modified anticipator | |
JP2003029960A (ja) | 浮動小数点加算器のショートパスにおける丸めステップの排除 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150603 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160413 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160418 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160713 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160808 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160825 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5996946 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |