JP2557190B2 - 引き数簡約の最適化システム - Google Patents

引き数簡約の最適化システム

Info

Publication number
JP2557190B2
JP2557190B2 JP6026960A JP2696094A JP2557190B2 JP 2557190 B2 JP2557190 B2 JP 2557190B2 JP 6026960 A JP6026960 A JP 6026960A JP 2696094 A JP2696094 A JP 2696094A JP 2557190 B2 JP2557190 B2 JP 2557190B2
Authority
JP
Japan
Prior art keywords
adder
cycle
argument
bit
bits
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.)
Expired - Lifetime
Application number
JP6026960A
Other languages
English (en)
Other versions
JPH06314187A (ja
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH06314187A publication Critical patent/JPH06314187A/ja
Application granted granted Critical
Publication of JP2557190B2 publication Critical patent/JP2557190B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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 for evaluating functions by calculation
    • G06F7/548Trigonometric functions; Co-ordinate transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は概して数値データプロセ
ッサに係り、特に、こうしたプロセッサにおいて引き数
簡約(削減)を最適化するためのシステムに関する。
【0002】
【従来の技術】有効数の浮動小数点演算を要求するアプ
リケーションに対してより優れた計算能力を付与するた
めに、数値データプロセッサは加算、減算、乗算、除算
等の基本的浮動小数点演算を特徴とする。一般に、これ
らの浮動小数点演算は、データプロセッサのシリコンチ
ップ内に組み込まれるか(例えば、「INTEL(イン
テル)」社の80486プロセッサを参照する)、ある
いはまた、上記浮動小数点演算を実行するために主デー
タプロセッサと協動する(INTEL社の80387双
対プロセッサ、又は「CYRIX(シリックス)」社の
83D87双対プロセッサ等の)所謂数理又は数値双対
プロセッサである分離した数値データプロセッサにおい
て実行される。
【0003】これらプロセッサ又は双対プロセッサのほ
とんどすべてにおいて、三角関数は正弦及び余弦関数に
対するチェビチェフ(Tchebitchev)の多項式、又は正接
関数に対するパデ(Pade)の有理多項式などの多項式に
よって近似される。多項式の次数が高くなればなるほど
いっそう近似式の正確度が高まり、また計算時間(上位
数のプロセッササイクル)もいっそう長くなることは当
業者には周知とされている。
【0004】従って、許容計算時間内で許容正確度を得
るために、大部分のプロセッサは低次数多項式近似を計
算するが、一方、(0乃至PI/4等の)制限範囲内に
絶対値を有する引き数に関しては、三角法の値が必要と
される実際の引き数の簡約の後で計算することになる。
【0005】しかしながら、すべての周知のプロセッサ
は、例えば、0と2E63との間で構成される広範囲に
対して好適な正確度で引き数簡約を計算することができ
ず、結果的に、同等に好適な正確度でかかる範囲におけ
る引き数に対する三角関数を計算することはできない。
【0006】以下は、ハードウェア乗算器アレイと独立
64−ビット仮数算術論理演算装置(ALU)の双方を
有する「CYRIX」83D87双対プロセッサにおけ
る事例である。三角関数は該双対プロセッサにおいて、
0とPI/4との間の引き数の多項式近似によってさら
に評価(計算)される。この範囲外の引き数は、PI/
4に対して部分剰余演算を介して簡約され、命令実行時
間中に5%増加に至る。しかしながら、正確度は以下に
示されるように非常に悪い。
【0007】 引き数範囲 関数 正確度 誤ビット 〔0;4PI〕 Sin 91% 9 COS 91% 11 Tan 80% 9 〔2E12;2E13〕 Sin 0.3% 21 Cos 0.3% 21 Tan 0% 21 〔2E62;2E63〕 Sin 0% 64 Cos 0% 64 Tan 0% 64
【0008】
【発明が解決しようとする課題】本発明の目的は、プロ
セッサにおいて引き数簡約を最適化するためのシステム
を提供することである。
【0009】本発明のさらなる目的は、プロセッサにお
いて高正確度且つ高速収束で、さらにわずかな専用資源
によって引き数簡約のためのシステムを提供することで
ある。
【0010】本発明のさらに別の目的は、下位数のプロ
セッササイクルで到達し、2E−63よりも低い正確度
で0と、2E63までの値を有する引き数のPIの倍数
と、の間で構成される値に対する簡約を可能にし、なお
まだ最小の専用シリコンエリアを要求するようなシステ
ムを提供することである。
【0011】
【課題を解決するための手段】本発明は特に、プロセッ
サにおいて0とPIの倍数との間で構成される値に対し
引き数簡約を最適化するためのシステムであって、以下
を含むものである。
【0012】(a)引き数仮数上でパイプラインADD
(加算)/SUB(減算)/COMPARE(比較)演
算を実行するように働く第1のブロック。該第1のブロ
ックは、第1の加算器と、アライナ(位置合わせ装置)
と、最上位ビットが上記第1の加算器によって生成され
るキャリーアウト(桁上げ出力)ビットである第1の出
力レジスタと、先行ゼロ検出器/エンコーダと、第2の
出力レジスタと、を有し、上記第1のブロックの出力は
ノーマライザ(正規化装置)に接続されている。
【0013】(b)第2の加算器と、出力がアライナを
制御するエンコーダに接続される第3の出力レジスタ
と、を有するとともに、引き数指数にパイプラインAD
D/SUB/COMPARE演算を実行するように働く
第2のブロック。
【0014】(c)出力が第1の加算器の入力にフィー
ドバックされる乗算器を有する、引き数仮数上でパイプ
ラインMULTIPLY(乗算)演算を実行するように
働く第3のブロック。
【0015】(d)パイプライン引き数に対するスタッ
カーと、上記第1、第2、第3のブロックのそれぞれに
入力定数値を付与するためのメモリ。
【0016】(e)第2の加算器の出力に接続される第
4の出力レジスタ。 (f)エンコーダによりさらにノーマライザの制御を可
能にするための手段。
【0017】(g)第2の出力レジスタがその内容をビ
ットの数だけシフトし、その最上位ビットと同数のビッ
トを第1の加算器から入力することを可能にするための
手段。
【0018】さらに、本発明は、前記記載の引き数簡約
の最適化システムにおいて、前記PIの倍数は1/4で
あることを特徴とする。
【0019】
【実施例】添付図面中において、参照番号に下線を付し
たものはバス幅を表わす。また、*は本明細書及び図面
上、×(乗算)を表わす。
【0020】科学的又は技術的演算において使用される
数値又はデータは、符号S、指数E、及び仮数Mから構
成される浮動小数点構成において表現され、これによっ
て限定数のビットで広範囲の数値の表現を可能にする。
この構成を実行するために多数の異なる標準フォーマッ
トが存在する。とりわけ、一般に広く容認されている浮
動小数点フォーマットは、米国電気電子学会(IEE
E)によって提案されている標準フォーマットである。
この規格は、4つの浮動小数点フォーマット、即ち、単
精度、単拡張精度、二倍精度、二倍拡張精度、を定義す
る。
【0021】図示のために、80ビット二倍拡張精度フ
ォーマットを以下で説明する。図2に示されるように、
該フォーマットは1ビットの符号、15ビットの指数、
及び64ビットの仮数部から構成される。このフォーマ
ットにおいて、63の位置には明示の(explicit)1は
0などのある値を除く、フォーマットの有効部分に記憶
される。有効部分の残りの63ビット部分は所謂仮数M
である。さらに、指数はバイアス形式(biased form)で
表現される。即ち、BIAS=16388と称される定
数は指数(真の指数)の実数値Eに加算される。図2の
フォーマットを用いて、精度のある64仮数ビットが得
られ、この結果、2E−16445(最小非正規化数)
と2E16384(最大正数)の範囲内の数を表現する
ことができる。
【0022】さらに一般的には、IEEE標準フォーマ
ットによって、実数Nの値は以下の式によって示され
る: N=((−1)**S)*(1.M)*(2**(E−
BIAS)) この場合、正数に対してS=0、負数に対してS=1で
ある。
【0023】このフォーマットに関するさらに詳細な説
明を本出願と同一の譲受人に譲渡されるヨーロッパ特許
出願第91480188.1号に見つけることができ
る。この関連出願の教示は以下の詳細な説明に全体とし
て組み込まれる。
【0024】三角関数の計算のための本発明による内部
汎用アルゴリズムは図1に対して付与される。
【0025】三角関数を計算するためのオペランドの有
効性について制御が実行される。即ち、オペランドが無
効である場合、計算は存在せず、例外処理ルーチンに対
してブランチが実行される。
【0026】制御は有効オペランド引き数の値について
実行される。即ち、引き数の絶対値がPI/4よりも小
さい場合、三角関数の多項式評価は直接実行され、引き
数の絶対値が2E63よりも高い場合、ブランチは前述
した例外処理ルーチンに対して実行され、引き数の絶対
値がPI/4と2E63との間で構成される場合、引き
数は、三角関数の実際の多項式評価の前に、本発明のシ
ステムによって0とPI/4との間で構成される値に簡
約される。
【0027】(チェビチェフ/パデ多項式又はそのよう
な)多項近似式は、0乃至PI/4の範囲で多項式チョ
イスに従って計算される。周知の三角変換を用いてこの
領域から完全単位円に移行することは当業者には容易に
想定できる。
【0028】引き数簡約は、PI/4に対する部分剰余
演算と論理的に同等である。部分剰余関数は以下に示し
た演算として定義される: (1)PREM = X − ((PI/4) * N) = X − ((PI/4) * I
nteger(X/(PI/4))) この場合、PREMは、|X|<PI/4の範囲内の部
分剰余又は簡約された引き数、Xは簡約するための引き
数( PI/4 = < |X| < 2E63 )、Nは正確な商X
/(PI/4)をゼロに対して切断することによって得
られる整数(Integer)。
【0029】除算とちょうど同じ様に、部分剰余は中間
剰余が除数より小さくなるまで逐次的スケール化減算を
実行することによって得られ、最終的に部分剰余を表現
することになる。両関数が同様に作動(演算)するとし
ても、それら個々の(演算)結果の正確度は異なる。
【0030】ハードウェアのビット数(バス)の限定が
ない場合、商の正確度は、せいぜい低正確度のオペラン
ドの正確度に等しいにすぎない。しかしながら、部分剰
余の結果は概して算術ハードウェアと同一バス幅で計算
され、このために、その正確度は、以下の関係式によっ
て定義されるように商の整数部分を表現するのに必要な
ビットの数だけ減少される: (2)部分剰余正確度 = 算術ハードウェア幅 −
整数|Log2(N) | この場合、Nは既に定義されたものを用いる。
【0031】さらに、正確度をより一層低減させるゼロ
を先行させることによってこの結果を変更させることも
できる。
【0032】XがPI/4乃至2E63の範囲内で変化
するにしたがって、商X/(PI/4)の整数部分に等
しいNを表現するために63ビットまでが必要とされ
る。一方、多項式評価の後、2E−63よりも小さな相
対誤差に到達することによって、67有効ビットの簡約
引き数(部分剰余)を提供することが要求される。上記
方程式(2)を再構成することによって、部分剰余を計
算する必要のあるバス幅は以下の通りである: (3)算術ハードウェア幅 = 部分剰余正確度 +
整数| LOG2(N)| 算術ハードウェアのバス幅 = 67 + 63 =
130
【0033】PI値は全体としては決して正確ではな
い。算術ハードウェアバス幅に適合させるようにPIの
丸め(rounding)を行なうことによって、丸められた引
き数よりも丸められた周期の効果をより多く生じる。と
にかく、所望の正確度(2E−63)をもつ機会を得る
ために、PI/4は少なくとも130有効ビットととも
に内部的に記憶されなければならない。
【0034】さらにまた理解されるように、本発明のプ
ロセッサでは、PI/4は、134有効ビットに対応す
る2つの67ビット仮数ワードとしてROMに記憶され
る。これによって、引き数がPI/4の倍数に近い場
合、4つの先行ゼロ(63+67+4=134)まで処
理することが可能になる。
【0035】引き数Xは、2PIよりも小さなオリジナ
ル角度Aに2PI回転数の一定量Mを加えたものとして
表わすことができる。 (4)X = (M * (2PI)) + A そこで、X/(PI/4) は以下のように表現され
る。 (5)X/(PI/4) = ((M * (2PI)) + A)*4/PI X/(PI/4) = 8 * M + A*4/PI
【0036】KをA*4/PIの整数部分と考えると、
Aは2PIよりも小さいために、Kは0と7との間に含
まれる。従って、式(5)は以下のようになる。 (6)X/(PI/4) = ( 8 * M + K) + FRACT(A*4/PI) この場合、FRACTはA*4/PIの小数部分であ。
【0037】このためKは、8番目のどれに単位円Aの
PI/4セグメントがあるかを表示する。「K=0」
は、式(1)で定義されたA=PREMを意味し、関数
は直接に計算される、即ち、SIN(X)=SIN(P
REM)。「K=1」は、A = PI/4 + PREM 、及びSIN
(X) = COS(PI/2 − X) を意味する。従って、SIN(A) =
COS(PI/2 − PI/4 − PREM) = COS(PI/4 − PREM)であ
る。「K=2」は、A = PI/2 + PREM 、及びSIN(X) = C
OS(PI/2 − X) を意味する。従って、SIN(A) = COS(PI/
2 − PI/2 − PREM) = COS( − PREM) = COS(PREM)であ
る。「K=3」は、A = 3*PI/4 + PREM 、及びSIN(X) =
SIN(PI − X) を意味する。従って、SIN(A) = SIN(PI
− 3*PI/4 − PREM) = SIN(PI/4 − PREM)である。
【0038】そこで、Kの値に応じて、以下の調整を行
なう必要がある(「PN」は定義されている引き数
「F」に対して計算するための多項式である)。
【0039】
【表1】
【0040】
【表2】
【0041】
【表3】
【0042】既述されたように、多項式近似にPI/4
乃至2E63の範囲内でXに対して2E−63よりも小
さな相対誤差を設けるために、X/(PI/4)の部分
剰余は134有効ビットで表現されるPI/4で計算す
る必要がある。
【0043】算術ハードウェアバスの幅を適切に増大さ
せることによって、適切な正確度が付与されることにな
る。データフローを制御するために論理を正確に同調さ
せることによって、特定の算術演算を134ビットハー
ドウェア上で演算することができ、その他すべての演算
は拡張IEEEフォーマット(内部的には67仮数ビッ
ト、外部的には64仮数ビット)によって要求されるバ
ス幅上で行なわれることになる。しかしながら、この解
法は、後述される実行時間とシリコンエリアを考慮せず
に簡約された引き数の正確度問題を解決するにすぎな
い。実行時間 : 134ビットハードウェアで算術演算を実
行することは、実行する上位数の論理レベルのためにサ
イクルを要求することになる。それは、多数の特別のサ
イクルが適切な部分剰余演算を実行するために要求され
ることを意味し、X<PI/4でSine(正弦)/C
osine(余弦)を近似させるために必要な時間の3
倍の時間まで実行時間を設定する結果となり、これは容
認できないことである。シリコンエリア : ただ部分剰余を目的として67ビッ
トから134ビットに算術ハードウェアバスを拡張させ
ることは、全体のプロセッサセル計数のわずか5%乃至
7%に相当する数百の余分のセルを要求することにな
る。集中使用されない命令に対してこのようなコストを
支払うことは、前述された3つの必要条件の一つに応じ
ること、即ち、引き数簡約に対して専用のシリコンエリ
アを最小限にすること、ではない。
【0044】本発明の好ましい実施例を以下に説明す
る。図3に示された周知のプロセッサに対して解法が提
供される。
【0045】この図によると、80ビットレジスタ20
の内容は以下TMR1として示される。また、80ビッ
トレジスタ21はTMR2、15ビットレジスタ29は
TR4E、67ビットレジスタ30はTR4M、15ビ
ットレジスタ31はTR1E、15ビットレジスタ32
はTR2E、67ビットレジスタ33はTR1M、67
ビットレジスタ34はTR2M、68ビットレジスタ3
9はTR3M、16ビットレジスタ38はTR3E、6
7ビットレジスタ23はTR5Mとして、それぞれ示さ
れている。
【0046】92x83ビットROM24は算術定数値
を含む。
【0047】プロセッサの主要特性は以下の通りであ
る。指数算術ハードウェアは15ビットの数を処理す
る。循環けた上げ(End Around Carry)加算器は、1サ
イクルの指数減算が可能である。レジスタ38にラッチ
されるアライナ44へのシフト(けた送り)量は、デコ
ードステージ43を介してシフタ(ALI)を制御す
る。
【0048】仮数算術ハードウェアは67ビットの数を
処理する。64の仮数ビットに加えられた3つの「エク
ストラ」ビットは、ガード(Guard)、ラウンド(Round)
及びスティッキー(Sticky)ビットと呼ばれる。これらの
ビットは、結果の精度が有限ハードウェアに対して利用
可能である精度を越える場合に正確度を維持するため
に、IEEE規格による丸め演算(rounding operatio
n) に用いられる。67ビット仮数減算は循環けた上げ
機構を使用し、1サイクル半を必要とする。乗算は最終
加算(final add)へと続く67x14−ビット乗算器2
2を介して5つの部分乗算として実行される。加算器長
は実際、1サイクルにおいてかかる最後の加算を実行可
能にする80ビットである。乗算アレイはブースエンコ
ーダ(Boothencoder)とウォリスのトリー(Wallace tre
e)を含む。アライナ44とノーマライザ40はとも
に、1サイクルにおいて63ビットシフトまで実行す
る。レジスタ42は、正規化が生じると指数ハードウェ
アによって次のサイクル内で使用される符号化された先
行ゼロ数をラッチする。
【0049】7個の一時レジスタ(TR1乃至TR5、
TMR1及びTMR2)を一時レジスタとして用いて数
学的演算を実行する。これらのレジスタの指数部分は、
TRxEと称され、仮数部分はTRxMと称される。
【0050】2つのオペランドに対する指数と仮数は異
なる入力レジスタに別個に記憶される。まず、2つのオ
ペランドの指数は入力レジスタ31と32に記憶され
る。同様に、仮数は入力レジスタ33と34に記憶され
る。オペランドは連続的、又は好ましくは同時に、8x
80−ビットスタックレジスタ35の2つのゾーンか
ら、例えば、アドレス0とi(i=1乃至7)におい
て、それぞれ抽出される。スタックレジスタ35は、2
ポートREAD及び1ポートWRITE型である。0と
Iのバスは、スタック35から2つのデータの指数と仮
数を搬送するデュアル80−ビットデータバスである。
【0051】オペランド間の加算/減算は、指数と仮数
に対して16ビット加算器36と80ビット加算器37
においてそれぞれ行なわれる。基本的に、加算器は個々
の入力レジスタに含まれるデータがロードされる。加算
器によって計算されたデータ、即ち、加算(ADD)/
減算(SUB)の部分結果、は2つの個別の出力レジス
タに記憶される。データは、指数データについて加算器
36から出力レジスタ38に、仮数データ(68ビッ
ト)について加算器37から出力レジスタ39に、それ
ぞれロードされる。加算器36の出力はスタック35の
指数入力に接続される。レジスタ39の出力はノーマラ
イザ回路40と先行ゼロエンコーダ回路(LZD)41
の双方に接続される。必要ならばいつでも、レジスタ3
9に記憶された仮数はノーマライザ40においてIEE
Eフォーマットで配列される。レジスタ39に記憶され
る仮数の先行ゼロの数はまず計算され、次にエンコーダ
回路41において符号化され、最後にレジスタ42に記
憶される。上記符号化された数はさらに、ノーマライザ
40を制御する。ノーマライザ40の出力はスタック3
5の仮数入力に入力される。レジスタ38の出力はデコ
ーダ回路43に接続されるので、その内容値はそこで復
号化される。デコーダ回路43の出力はアライナ44に
入力される。アライナ44は入力レジスタ34を駆動す
る。仮数加算器37において生成されたキャリーアウト
(桁上げ出力)ビットcはレジスタ39の68番目の位
置に接続される。上記のように、仮数結果の丸め演算は
必要であるために、レジスタ38の出力は指数加算器3
6の左側入力と、4−ウェイ乗算器回路16の一入力
と、に入力され、乗算器回路16の他の入力はスタック
35とROM24によって供給される。同様に、レジス
タ42の出力は加算器36の右側入力に入力される。実
際は、レジスタ42によって生成される各ビットは、標
準としての加算器36に含まれるXOR回路(図示せ
ず)の一入力に入力され、他の入力は、完了すべきAD
D又はSUB演算に従って決定する制御論理によって生
成される制御ビットを受信する。制御ビットが0に等し
い場合、該ビットは補数演算が行なわれず、ほかの場合
には、該ビットは補数演算が行なわれる。
【0052】仮数加算器に関する限り、0とiのバス
と、ノーマライザ40の出力は4−ウェイ乗算器47と
3−ウェイ乗算器48に入力され、これら乗算器は、
(レジスタ33に対しては)直接に、又は(レジスタ3
4に対しては)アライナ44を介することの何れかによ
って、レジスタ33とレジスタ34に出力する。
【0053】正規化と丸めを行なった後、結果の指数と
仮数はスタック35に記憶される。スタック35は、す
べてのバイナリオペランドと符号が記憶されるRAMと
して作動する。この符号は制御論理において生成される
と同時にスタック35に記憶される。符号処理のための
回路の図示は省略する。
【0054】該プロセッサに関する詳細な説明は、本発
明の出願と同一の譲受人に譲渡されたヨーロッパ特許出
願第92480165.7号(1992年11月5日出
願)に見ることができ、その教示は全体として本出願の
説明中に組み込まれる。
【0055】図3の周知のプロセッサにおいて、乗算
は、除算の時よりも高速で数回実行する。このような機
能を考慮することによって、特定の部分剰余演算を除算
を行なうことなく以下のように再公式化することもでき
る。
【0056】 PREM = X − ((PI/4) * Integer(X/(PI/4))) X = (PI/4 ) * (FRACT(X*4/PI)) + Integer (X*(4/P
I)) PREM = PI/4 * FRACT(X*(4/PI)) PI/4 − PREM = PI/4− PI/4 * FRACT(X*(4/PI)) PI/4 − PREM = PI/4 * (1 − FRACT(X*(4/PI))) この場合、FRACTは小数部分である。
【0057】67の有効ビットのみをもつXによって1
34個のビット上で表現される4/PIを乗算する問題
は、ハードウェアが2個の67有効ビット仮数の乗算の
結果を134ビット上で取り扱うことによって処理さ
れ、演算(4/PI)*Xは、図5に示されるように逐
次的通常67ビット計算をただ実行することによって得
られる。
【0058】この演算は、多項式近似の実行時間(90
サイクル程度)と比較してもなお合理的である16サイ
クルにおいて実行される。
【0059】本発明の解法によって、プロセッサのデー
タフローにおいて追加されたハードウェアは実際に、図
4に対して説明されるように最小化される。
【0060】バス(26)は、除算に使用される商レジ
スタ23の新規入力に対し14LSB加算器37の出力
を接続する。
【0061】最終134ビット加算の第1の67ビット
ステップのキャリー(けた送り)は第2の67ビットス
テップを処理するために再導入される。
【0062】新レジスタ25(内容:TR5E)は設け
られている。部分結果は、主命令(加算、減算、乗算、
除算)によって集中的に使用される一時レジスタに記憶
される。
【0063】さらに17サイクルにおいて、134ビッ
トの最終結果の小数部分は、なおまだ抽出されなければ
ならず(図6参照)、これはさらに、小数部分を抽出す
るためにiだけのシフトが実行される時にIの3LSB
を失わないようにノーマライザ40が3つのビット分だ
け左側に増加されることを除いて新しいハードウェアな
しに逐次的67ビット演算を実行することによってなさ
れる。3つのラッチはさらに、上記テーブル内でKを表
現するこれらビットを記憶するために追加される。追加
された論理は約65セルである。
【0064】結果の67小数部分を抽出するために、上
位部分はiだけシフトされ、下位部分は67−iだけシ
フトされる必要があり、2つのシフトされた数はADD
(加算)演算によって連結される。しかしながら、小数
部分は先行ゼロを有することもある。
【0065】精度を失わないようにするために、抽出さ
れた小数部分は67個の有効ビットを有する必要があ
る。それは、先行ゼロLがlの左にシフトすることによ
ってドロップされ、下位部分は67−lだけ右側にシフ
トされる必要があり、さらにこれら2つのシフトされた
数はADD演算によって連結される。
【0066】最適化によって、一つのADD演算のみが
以下のように67個の有効ビットを抽出するために必要
とされる。 *ノーマライザ40に、(4/PI)*Xの上位ワード
をiビット分だけ左側にシフトさせる。同時に、(4/
PI)*Xの整数部分に対応するシフトされて出された
データの3LSBは、後で実行するための引き数修正を
定義するために記憶される(参照サイクル10)。iは
指数加算器によって67から減算されて、この結果は記
憶される。 *先行するシフトされた数は正規化され(lに先行する
ゼロは落とされる)、lは記憶される。 *指数加算器は67−iからlを減算する。結果67−
i−lは記憶される。 *アライナ44が、(4/PI)*Xの下位部分を(6
7−i−l)ビット分だけ右側にシフトするようにす
る。 *i+lだけ左側にシフトされた上位部分と、67−i
−lだけ右側にシフトされた下位部分と、を加算して、
67有効ビットの数を得る。
【0067】さらに、引き数修正の実行が必要である場
合(特に、PREMがおおよそPI/4である場合)に
精度を失わないようにするために、1−小数部分はま
た、逐次的67ビット演算によって134ビット上で実
行される。まず、下位部分はゼロから減算され、次に上
位部分はゼロから減算されて、先の結果のキャリー・イ
ン(けた入力)=キャリー・アウト(けた出力)とな
る。その後、上記と同じステップが実行されて小数部分
を抽出する。
【0068】引き数簡約/修正ステップにおける最後の
演算のみ−−抽出された小数部分をPI/4で乗算する
こと−−が67ビット上で実行される。
【0069】図7は引き数簡約/修正シーケンスを示し
ている。
【0070】全体の引き数簡約/修正は、実行するため
の修正に応じて30サイクル乃至34サイクルの間のサ
イクルを必要とする。これは多項式近似の実行時間の約
1/3を表現する(正弦/余弦については約90サイク
ル)。
【0071】サイクルは以下に詳述される。
【0072】134ビット上での乗算(4/PI)*X *サイクル1: 初期化 オペランドXはIEEE標準規則セット(データ有効、
ゼロに等しい、無限大、非正規化数、など)に従って検
査される。
【0073】TR1Mは、ROM24に記憶される4/
PIの下位ビット(67乃至134)で設定される。
【0074】オペランドXはTR4にロードされ、仮数
部分はTR4Mに、指数部分はTR4Eに、それぞれロ
ードされる。
【0075】TMR1とTMR2はX’0..0’と、
X’80..0’でそれぞれ初期化される。
【0076】TR2Eは2E63の値に設定されて、X
が範囲外にあるか否かを検査する。
【0077】*サイクル2: 第1の乗算サイクル TMR1、TMR2、及び乗算器22のブースエンコー
ダによって生成される7つの第1の部分項は、ウォリス
のトリーを介し、TMR1とTMR2にラッチバックさ
れる2つの数に簡約される。
【0078】指数加算器はTR2E乃至TR4Eを実行
する。指数キャリー加算器はラッチされる。その値がゼ
ロの場合、これはXが範囲外にあること、即ち、2E6
3よりも大きいこと、を意味する。
【0079】*サイクル3: 第2の乗算サイクル TMR1とTMR2の最上位部分は、(ブースエンコー
ダを介してTR1MとTR4Mから発生する)次の部分
項をそなえたウォリスのトリーに導入されて、TMR1
とTMR2にラッチバックされる2つの数を得ることに
なる。
【0080】TMR1とTMR2の14個の最下位ビッ
トは仮数加算器で加算されて、一時スティッキービット
を生成するために論理和される。結果としてのキャリー
は同一サイクルで部分項に加算されるためのウォリスの
トリーに導入される。
【0081】ROMアドレスは次のワードを読み取る準
備のために増分される。
【0082】*サイクル4: 第3の乗算サイクル 上記サイクルと同一の仮数処理。
【0083】上記一時スティッキービットは、新しい一
時スティッキービットを生成するために14個の最下位
ビットで論理和される。
【0084】サイクル2でラッチされた指数加算器キャ
リーが0の場合、即ち、Xが2E63よりも大きい場
合、処理は終了する。
【0085】*サイクル5: 第4の乗算サイクル 上記サイクルと同一処理。
【0086】*サイクル6: 第5の乗算サイクル 上記サイクルと同一処理。
【0087】*サイクル7: 最終加算 TMR1とTMR2が加算される(80ビット加算)。
結果はTR3M(68ビット幅)を設定する。
【0088】TR3M・LSBは、最終加算の13個の
最下位ビットを備えた上記一時スティッキービットの論
理和である。
【0089】TR1Mは、ROM24に記憶される4/
PIの上位ビット(0乃至67)に設定される。
【0090】TMR1とTMR2は、X’0..0’と
X’80..0’でそれぞれ初期化される。
【0091】TR2Eは4/PIの指数に設定される。 注意:この段階において、(4*PI)の下位ビットに
Xをかけた積はTR3Mにラッチされる。
【0092】*サイクル8: 第1の乗算サイクル TMR1、TMR2及びブースエンコーダによって集積
される7個の第1の部分項は、TMR1とTMR2にラ
ッチされる2つの数を得るためにウォリスのトリーを介
して簡約される。
【0093】*サイクル9: 第2の乗算サイクル TMR1とTMR2の最上位部分は、TMR1とTMR
2にラッチバックされた2つの数を得るために、(ブー
スエンコーダを介してTR1MとTR4Mから生じる)
次の部分項を備えたウォリスのトリーに導入される。
【0094】TMR1とTMR2の14LSBは仮数加
算器で加算されて、TR5Mの14MSBに記憶され
る。結果としてのキャリーはウォリスのトリーに導入さ
れ、同一サイクルで部分項に加算される。
【0095】指数加算器がTR2E+TR4E+1を実
行するのは、形式1.XXX・・・XXX、の2つの仮
数の乗算が1X.XXX・・・XXXである可能性があ
り、最終乗算結果が正規化されるからである。
【0096】結果はTR3Eにラッチされる。この数は
4/PIで乗算されたXの指数を表現する。
【0097】*サイクル10: 第3の乗算サイクル 上記サイクルと同一仮数処理。
【0098】TR5Mは14ビットだけ右側にシフトさ
れ、加算器からの新しい14ビットの結果はTR5Mの
14MSBに記憶される。
【0099】指数加算器はTR3E−Biasを実行す
る。このバイアス修正は、2つのバイアスがサイクル9
で加えられているために必要である。
【0100】結果はTR3EとTR5Eにラッチされ
る。この数は4/PIで乗算されたXのバイアス化指数
を表現する。
【0101】*サイクル11: 第4の乗算サイクル 上記サイクルと同一仮数処理。
【0102】TR5Mは14ビットだけ右側にシフトさ
れ、加算器から得られる新しい14ビットの結果はTR
5Mの14MSBに記憶される。
【0103】*サイクル12: 第5の乗算サイクル 上記サイクルと同一仮数処理。
【0104】*サイクル13: 最終加算 TR3Mは前の結果、即ち、(4*PI)の下位ビット
のXとの積を含み、(4/PI)の上位ビットのXとの
乗算の下位部分が後で加算されるようにアライナ44を
介してTR2Mに転送される。
【0105】TMR1とTMR2は加算される(80ビ
ット加算)。結果はTR3Mにロードされる(68ビッ
ト幅)。
【0106】TR5Mは14ビットだけ右側にシフトさ
れて、加算器出力の14LSBはTR5Mの14MSB
にロードされる。 注意:この段階において、Xによる(4*PI)の上位
ビットの積の下位部分は、上位部分がTR3Mにある場
合、TR5Mにある。
【0107】*サイクル14:TR5Mはノーマライザ
40とMUX1Mを介してTR1Mに転送される。
【0108】*サイクル15:TR3Mはノーマライザ
40とアライナ44を介して(ともにゼロシフトで)T
R4Mに転送される。
【0109】TR2MとTR1Mは仮数加算器によって
加算される。その結果はTR3Mにラッチされる。仮数
キャリーアウト(出力)はラッチされる。この67ビッ
トの数は拡張乗算の下位部分である。
【0110】ROM24に記憶される2E−1の値は、
TR4Eにロードされる。
【0111】*サイクル16:TR3MはTR5Mに転
送される。
【0112】既にラッチされた仮数加算器キャリーアウ
トはTR4Mを備えた仮数加算器によって加算される。
結果はTR3Mにラッチされる。
【0113】指数加算器は、積(4/PI)*Xの指数
を含むTR2Eから、2E−1を含むTR4Eを減算す
る。正規化数の仮数部が常に1.XXX.....XX
XXXであり(この先行する1はさらに小数部分を得る
ためにシフトアウトされる必要がある)、TR2Eにお
ける数はバイアスされることを考慮するために、実数2
E−1のバイアス指数が用いられる。
【0114】TR3Eにラッチされた結果(i)は剰余
の整数部のビットの数である。 注意: この段階では、(4*PI)のXとの積の下位
部分は、その上位部分がTR3Mにある場合、TR5M
にあることになる。積(4/PI)*Xの整数部の下位
ビット、即ち、K値、を計算するための命令に従って、
PREMは計算され、即ち、GOTO サイクル20、
又はPI/4 − PREM、即ち、次のサイクル。
【0115】134ビット上での1−FRACT(X*
(4/PI))の計算 *サイクル17:少なくとも一個の左ビットが小数部分
の抽出によって失われるので、1−(X*(4/P
I))はサイクル18と19で記載されたように計算す
ることができ、小数部分はX*(4/PI)と同一サイ
クルにおいて抽出される。
【0116】TR5Mはノーマライザ40を介してTR
4Mに転送される(シフトゼロ)
【0117】*サイクル18:TR4Mにラッチされ
る、(4*PI)のXとの積の下位部分はゼロから減算
される。キャリーアウトを有する計算結果はTR3Mに
ラッチされる。
【0118】TR3Mはノーマライザ40とアライナ4
4を介してTR2Mに転送される(シフトゼロ)。
【0119】*サイクル19:TR2Mにラッチされ
る、(4*PI)のXとの積の上位部分はゼロ(1.0
00...000 − 1.XXX...XXXは、.
000...000 −.XXX...XXXに等し
い)から減算されて、サイクル18のキャリーイン=キ
ャリーアウトとなる。結果はTR3Mにラッチされる。
【0120】注意: この時点において、上位部分は再
びTR3Mにあり、下位部分はTR5Mにある。
【0121】積(4/PI)*X又は1−((4/P
I)*X)の小数部分の抽出 *サイクル20 TR3MはNORを介して(サイクル16においてT
R3Eにロードされ、ノーマライザを制御するためにD
ECによって復号化された)iだけ左側にシフトされ、
次にALIによってiだけ右側にシフトされ、TR2M
に記憶される。この数のIの部分はi個のゼロに置き換
えられている。
【0122】*サイクル21 ROM24に記憶された値67はTR1Eにロードされ
る。TR2Mは加算器を介してTR3Mにロードされ
る。
【0123】*サイクル22 TR3MはNORを介して正規化され、TR1Mに記憶
されて、小数部分の先行ゼロを抑制する。先行ゼロi+
lの数はレジスタ42に記憶される。FRACTの上位
部分はTR1Mの左側にあり、下位部分はなおまだTR
5Mにある。
【0124】*サイクル23 レジスタ42(i+l)は指数加算器によってTR1E
(67)から減算されて、TR3Eに記憶される。
【0125】*サイクル24 NORを介したTR5M(左ゼロをシフトする)とMU
X2は、67−i−lビットだけアライナを介して右側
にシフトされ(TR3Eは復号回路DECを介してアラ
イナを制御する)、TR2Mにロードされる。
【0126】FRACTの上位部分はTR1Mの左側に
あり、下位部分はTR2Mの右側にある。
【0127】*サイクル25 レジスタ42(i+l)は指数加算器によってTR5E
(サイクル10にロードされるX*4/PIの指数)か
ら減算されて、TR3Eに記憶される。TR3Eは小数
部分の指数を保持する。
【0128】TR1Mは仮数加算器を介してTR2Mに
加算され、TR3Mに記憶される。2つの部分は連結さ
れており、結果は多数の67有効ビットとなる。
【0129】注意: この時点で、X*4/PI又は1
−X*4/PIの小数部分はTR3Mにある。
【0130】67ビットのPI/4による最終積 *サイクル26 ROM24に記憶されている、PI/4の仮数部はTR
1Mにロードされる。
【0131】ROM24に記憶されている、PI/4の
指数部はTR4Eにロードされる。TR3Mに記憶され
ている小数部分はノーマライザを介してTR4Mに転送
される。
【0132】TMR1とTMR2は、X’0..0’と
X’80..0’によってそれぞれ初期化される。
【0133】*サイクル27: 第1の乗算サイクル
(TR1M X TR4M) TMR1、TMR2及び乗算器22のブースエンコーダ
によって生成される7個の第1の部分項はウォリスのト
リーを介してTMR1とTMR2にラッチバックされる
2つの数に簡約される。
【0134】*サイクル28: 第2の乗算サイクル TMR1とTMR2の最上位部は、(ブースエンコーダ
を介してTR1MとTR4Mから生じる)次の部分項と
ともにウォリスのトリーに導入されて、TMR1とTM
R2にラッチバックされる2つの数を得る。
【0135】TMR1とTMR2の14個の最下位ビッ
トは仮数加算器に加算されて、一時スティッキービット
を得るために論理和される。結果としてのキャリーは同
一サイクルで部分項に加算されるためにウォリスのトリ
ーに導入される。
【0136】指数加算器はTR3E(サイクル25でロ
ードされる)+TR4E+1を実行する。
【0137】*サイクル29: 第3の乗算サイクル 上記サイクルと同一の仮数処理。
【0138】上記一時スティッキービットは14ビット
の計算結果で論理和されて新しい一時スティッキービッ
トを生成する。
【0139】指数加算器はTR3E−Biasを実行す
る。このバイアス修正は、2つのバイアスがサイクル2
8において加算されているために必要とされる。結果は
TR3Eにラッチされる。この数は4/PIで乗算され
たXのバイアス指数を表わす。
【0140】*サイクル30: 第4の乗算サイクル 上記サイクルと同一処理。
【0141】*サイクル31: 第5の乗算サイクル 上記サイクルと同一処理。
【0142】*サイクル32: 最終加算 TMR1とTMR2が加算される(80ビット加算)。
計算結果はTR3Mにロードされる(68ビット幅)。
【0143】TR3M LSBは、最終加算の13個の
最下位ビットと上記一時スティッキービットとの論理和
である。
【0144】*サイクル33: 正規化 簡約された引き数(REDUCED ARGUMENT)xを含むTR3
Mはノーマライザを介してTR1M、TR4M及びTR
5Mに転送される。これは、計算するための三角関数に
従ってxE2を計算する必要があるからである。そこ
で、簡約された引き数xをTR1MとTR4Mに置くこ
とによって、xによるxの乗算を開始する用意が可能に
なる。
【0145】
【発明の効果】本発明のシステムは上記のように構成さ
れているので、プロセッサにおいて高正確度且つ高速収
束で、わずかな専用資源によって引き数簡約を行なうこ
とが可能である。
【図面の簡単な説明】
【図1】三角関数の計算のための本発明による内部汎用
アルゴリズムを示す図である。
【図2】80ビット二重拡張IEEE精度フォーマット
を示す図である。
【図3】本発明の解法が適用される周知のプロセッサを
説明する図である。
【図4】本発明による周知のプロセッサのデータフロー
における付加ハードウェアを説明する図である。
【図5】逐次的な通常67ビット演算を実行することを
詳述する図である。
【図6】134ビット最終結果の小数部を抽出すること
を示す図である。
【図7】引き数簡約/訂正シーケンスを示す図である。
【符号の説明】
37 第1の加算器 44 アライナ 39 第1の出力レジスタ(TR3M) 40 ノーマライザ 41 先行ゼロ検出器/エンコーダ 23 第2の出力レジスタ(TR5M) 38 第3の出力レジスタ(TR3E) 43 エンコーダ 22 乗算器 35 スタッカー 24 メモリ 25 第4の出力レジスタ(TR5E) 36 第2の加算器
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ディディエ ルイ フランス国、77300 フォンテヌブロー、 ル ポール ジョゾン 22 (72)発明者 ディディエ パンション フランス国、91940 レ ズリ、ル デ ィ フォレズ 11 (72)発明者 アンドレ ステムレ フランス国、91000 エヴリ、アレ デ ラ ブット ルージュ 10

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 プロセッサにおいて、0とPIの倍数と
    の間で構成される値に対し引き数簡約を最適化するため
    のシステムであって、 (a)第1の加算器(37); アライナ(44);
    最上位ビットが第1の加算器(37)によって生成され
    るキャリーアウトビットであり、第1のブロックの出力
    はノーマライザ(40)に接続されている、第1の出力
    レジスタ(39、TR3M); 先行ゼロ検出器/エン
    コーダ(41); 第2の出力レジスタ(23、TR5
    M)を有するとともに、引き数仮数上でパイプラインA
    DD(加算)/SUB(減算)/COMPARE(比
    較)演算を実行するように働く第1のブロックと、 (b)第2の加算器(36)と、出力がアライナ(4
    4)を制御するエンコーダ(43)に接続される第3の
    出力レジスタ(38、TR3E)と、を有する、引き数
    指数上でパイプラインADD/SUB/COMPARE
    演算を実行するように働く第2のブロックと、 (c)出力が第1の加算器(37)の入力にフィードバ
    ックされる乗算器(22)を有する、引き数仮数上でパ
    イプラインMULTIPLY(乗算)演算を実行するよ
    うに働く第3のブロックと、 (d)パイプライン引き数に対するスタッカー(35)
    と、第1、第2、第3のブロックのそれぞれに入力定数
    値を付与するためのメモリ(24)と、 を含むとともに、 第2の加算器(36)の出力に接続されている第4の出
    力レジスタ(25、TR5E)と、 エンコーダ(43)がさらにノーマライザ(40)を制
    御することを可能にするための手段(28)と、 第2の出力レジスタ(23、TR5M)がその内容をビ
    ットの数だけシフトし、その最上位ビットと同数のビッ
    トを第1の加算器(37)から入力することを可能にす
    るための手段(26、27)と、 をさらに含む引き数簡約の最適化システム。
  2. 【請求項2】 前記PIの倍数は1/4である、請求項
    1記載の引き数簡約の最適化システム。
JP6026960A 1993-04-29 1994-02-24 引き数簡約の最適化システム Expired - Lifetime JP2557190B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP93480051A EP0622727A1 (en) 1993-04-29 1993-04-29 System for optimizing argument reduction
FR93480051/7 1993-04-29

Publications (2)

Publication Number Publication Date
JPH06314187A JPH06314187A (ja) 1994-11-08
JP2557190B2 true JP2557190B2 (ja) 1996-11-27

Family

ID=8214829

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6026960A Expired - Lifetime JP2557190B2 (ja) 1993-04-29 1994-02-24 引き数簡約の最適化システム

Country Status (3)

Country Link
US (1) US5452241A (ja)
EP (1) EP0622727A1 (ja)
JP (1) JP2557190B2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5757682A (en) * 1995-03-31 1998-05-26 International Business Machines Corporation Parallel calculation of exponent and sticky bit during normalization
US5768169A (en) * 1995-10-02 1998-06-16 Intel Corporation Method and apparatus for improved processing of numeric applications in the presence of subnormal numbers in a computer system
US6141670A (en) * 1997-09-30 2000-10-31 Intel Corporation Apparatus and method useful for evaluating periodic functions
US7043516B1 (en) * 1998-03-13 2006-05-09 Hewlett-Packard Development Company, L.P. Reduction of add-pipe logic by operand offset shift
US7366748B1 (en) * 2000-06-30 2008-04-29 Intel Corporation Methods and apparatus for fast argument reduction in a computing system
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7065757B2 (en) * 2001-09-28 2006-06-20 Hewlett-Packard Development Company, L.P. Efficient compilation of family of related functions
US8190669B1 (en) 2004-10-20 2012-05-29 Nvidia Corporation Multipurpose arithmetic functional unit
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US7240184B2 (en) * 2004-11-10 2007-07-03 Nvidia Corporation Multipurpose functional unit with multiplication pipeline, addition pipeline, addition pipeline and logical test pipeline capable of performing integer multiply-add operations
US7225323B2 (en) * 2004-11-10 2007-05-29 Nvidia Corporation Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines
US7428566B2 (en) * 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
US8037119B1 (en) 2006-02-21 2011-10-11 Nvidia Corporation Multipurpose functional unit with single-precision and double-precision operations
US8051123B1 (en) 2006-12-15 2011-11-01 Nvidia Corporation Multipurpose functional unit with double-precision and filtering operations
US20090157788A1 (en) * 2007-10-31 2009-06-18 Research In Motion Limited Modular squaring in binary field arithmetic
US8106914B2 (en) * 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
EP2629195B1 (en) * 2010-01-28 2014-02-19 Nds Limited Exponentiation system
US9436434B2 (en) 2014-03-14 2016-09-06 International Business Machines Corporation Checksum adder
US9875084B2 (en) 2016-04-28 2018-01-23 Vivante Corporation Calculating trigonometric functions using a four input dot product circuit
US10970045B2 (en) * 2018-12-17 2021-04-06 Samsung Electronics Co., Ltd. Apparatus and method for high-precision compute of log1p( )
US20220094518A1 (en) * 2020-09-18 2022-03-24 Intel Corporation Low circuit depth homomorphic encryption evaluation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4484259A (en) * 1980-02-13 1984-11-20 Intel Corporation Fraction bus for use in a numeric data processor
US4777613A (en) * 1986-04-01 1988-10-11 Motorola Inc. Floating point numeric data processor
JPH0772860B2 (ja) * 1986-10-30 1995-08-02 日本電気株式会社 演算方式
JPS63186329A (ja) * 1987-01-28 1988-08-01 Nec Corp 三角関数前処理装置
JPH0776916B2 (ja) * 1987-06-30 1995-08-16 日本電気株式会社 疑似除算方式を用いた三角関数演算装置
US5042001A (en) * 1989-10-02 1991-08-20 Cyrix Corporation Method and apparatus for performing mathematical functions using polynomial approximation and a rectangular aspect ratio multiplier
JPH03204720A (ja) * 1990-01-08 1991-09-06 Nec Corp 初等関数演算装置

Also Published As

Publication number Publication date
JPH06314187A (ja) 1994-11-08
US5452241A (en) 1995-09-19
EP0622727A1 (en) 1994-11-02

Similar Documents

Publication Publication Date Title
JP2557190B2 (ja) 引き数簡約の最適化システム
US5272660A (en) Method and apparatus for performing integer and floating point division using a single SRT divider in a data processor
US5631859A (en) Floating point arithmetic unit having logic for quad precision arithmetic
US6697832B1 (en) Floating-point processor with improved intermediate result handling
US8239440B2 (en) Processor which implements fused and unfused multiply-add instructions in a pipelined manner
KR100267103B1 (ko) 벡터 처리기용 실행 장치 데이터 패스
US7346643B1 (en) Processor with improved accuracy for multiply-add operations
JPH0749771A (ja) 近似値を丸める方法
Wang et al. A survey of hardware designs for decimal arithmetic
JPH02196328A (ja) 浮動小数点演算装置
GB2421327A (en) Calculating the number of digits in a quotient for integer division
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
US5463574A (en) Apparatus for argument reduction in exponential computations of IEEE standard floating-point numbers
US5305248A (en) Fast IEEE double precision reciprocals and square roots
Detrey et al. Return of the hardware floating-point elementary function
Lichtenau et al. Quad precision floating point on the IBM z13
US5943249A (en) Method and apparatus to perform pipelined denormalization of floating-point results
US8019805B1 (en) Apparatus and method for multiple pass extended precision floating point multiplication
EP0416308A2 (en) Rectangular array signed digit multiplier
US20090164544A1 (en) Dynamic range enhancement for arithmetic calculations in real-time control systems using fixed point hardware
US5337265A (en) Apparatus for executing add/sub operations between IEEE standard floating-point numbers
Gerwig et al. High performance floating-point unit with 116 bit wide divider
US6912559B1 (en) System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit
US5237525A (en) In a data processor an SRT divider having a negative divisor sticky detection circuit
US20200183650A1 (en) Radix-1000 decimal floating-point numbers and arithmetic units using a skewed representation of the fraction