JP3689183B2 - 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 - Google Patents
正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 Download PDFInfo
- Publication number
- JP3689183B2 JP3689183B2 JP16750896A JP16750896A JP3689183B2 JP 3689183 B2 JP3689183 B2 JP 3689183B2 JP 16750896 A JP16750896 A JP 16750896A JP 16750896 A JP16750896 A JP 16750896A JP 3689183 B2 JP3689183 B2 JP 3689183B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- carry
- sum
- zero
- partial remainder
- 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 - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/544—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 for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
- G06F7/5525—Roots or inverse roots of single operands
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/487—Multiplying; Dividing
- G06F7/4873—Dividing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Description
【0001】
【発明の属する技術分野】
本発明はマイクロプロセッサ内の浮動小数点除算器(Floating point dividers)の分野、より詳細には、SRT除算/平方根演算のインプリメンテーション(SRT division/square root implementation)における商デジット選択規則(Quotient digit selection rules)に関し、同規則は結果が正確な場合、負の最終部分剰余(Negative final partial remainders)の形成を防止する。
【0002】
【従来の技術及び発明が解決しようとする課題】
SRTアルゴリズムは引き放し法除算(Non-restoring division)を実行する1つの方法を提供する。この詳細については、1958年9月に発行された米国電気電子学会コンピュータ部会会報(IEEE Trans. Comput.)第C−7巻218〜222頁に記載されているジェイ.イー.ロバートソンによる“デジタル除算法の新たなクラス”と、1958年に発行されたメカニカル応用数学誌(Quart. J. Mech. Appl. Math.)第11刊第3部364〜384頁に記載されているケー.ディー.トーチャーによる“自動2進コンピュータのための乗算及び除算技術”を参照のこと。デジタル除算では、オペランドとして除数及び被除数が使用され、かつ出力として商が形成される。複数の商デジットは反復計算され、同商デジットのうちの最上位商デジットが最初に形成される。SRT除算は他の除算アルゴリズムとは異なる。SRT除算では、連続する各商デジットは上位の僅かな部分剰余デジットのみに基づいて公式化され、非常に多くのデジットを含み得る部分剰余全体に基づいて公式化されることはない。全ての反復において、正確な商デジットの選択は部分剰余全体を考慮せずには保証できない。このため、SRTアルゴリズムは不正確な商デジットを時々形成する。しかし、SRTアルゴリズムは正、ゼロ及び負の各商デジットの可能性を提供する。商デジットを1つの反復において過大予測した場合、誤りは負の商デジットを選択することにより、次の反復において補正される。SRT除算では、商デジットを過小予測してはならない。即ち、商デジットは常に過大予測するか、または正確に予測する必要がある。全ての商デジットを過小予測しなかった場合、部分剰余は所定の上下限内に維持され、正確な最終商の計算が可能になる。SRTアルゴリズムは負の商デジットの形成を可能にする。このため、一般的に最終商出力は通常の除算のように全商デジットを単に連結するのではなく、寧ろ商デジットの重み付け加算及び減算を介して行われる。
【0003】
基数が更に大きい場合、1つの反復において形成される商デジットの数が更に多くなる。これは複雑さを増大させる。基数2のインプリメンテーションは1つのデジットを1つの反復において形成する。基数4のインプリメンテーションは2つのデジットを1つの反復において形成する。図1はSRTに基づく基数2を使用する簡単な浮動小数点インプリメンテーション(Simple SRT radix-2 floating point implementation)を示す。同インプリメンテーションは、除数及び被除数の両方が正であって、かつ正規化されていることを要する。従って、1/2≦D、被除数<1となる。シフトされた最初の部分剰余(Initial shifted partial remainder)、即ち2PR[0]は被除数である。第1商デジットの計算の反復(First quotient digit calculation iteration)開始前に、被除数は部分剰余レジスタ100に対してロードされる。この結果、最初の部分剰余は被除数となる。その後、反復によって形成される部分剰余は以下の数式1に基づいて形成される。
【0004】
【数1】
数式1において、qi+1は商デジットであって、−1,0または+1の値を有し得る。商デジットqi+1は直前の部分剰余の値に基づいて単独で決定され、かつ除数から独立している。商選択ロジック102は部分剰余のうちの上位4ビットのみを入力され、そして商デジットを形成する。除算では、全ての反復において除数は一定に維持される。しかし、平方根演算は各反復後に除数レジスタ101内に格納された除数に対する調整を一般的に含む。従って、商デジットが除数から独立していることは平方根演算における魅力的な特徴である。
【0005】
部分剰余は一般的に冗長桁上げ保留の形態に維持される。この結果、次の部分剰余の計算では、更に処理速度が遅く、かつ大きい桁上げ伝搬加算器に代えて桁上げ保留加算器の使用が可能である。部分剰余は全ての反復が実施され、かつ所望の精度に達した後で、非冗長形態(Non-redundant form)へ変換される。SRTアルゴリズムは商デジットの過大予測を可能にする。商デジットの過大予測により、負の部分剰余が続いて形成される。このため、最終部分剰余を負にすべく最後の商デジットを過大予測し得る。この場合、過大予測に対する補正が不可能なため、Q及びQ−1の維持が必要である。この結果、最終部分剰余が負である場合、Q−1がQに代えて選択される。商デジットは常には冗長形態に維持され、さらには最後の反復において非冗長形態へ変換される。これに代えて、商(即ちQ)と、商−1(即ちQ−1)とを1992年12月に発行された米国電気電子学会コンピュータ部会会報(IEEE Trans. Comput.)第41巻第12号の1497〜1503頁に記載されているエム.ディ.エルセゴバック及びティ.ラングによる“オン・ザ・フライ・ラウンディング(On-the-fly rounding)”に開示されている規則に基づいてフライ(Fly)上に形成し得る。
【0006】
SRTアルゴリズムは平方根演算にも適用される。これにより、従来の除算ハードウェアの使用が可能である。簡略化された平方根の式は除算の式に類似している。これについては、1990年8月に発行された米国電気電子学会コンピュータ部会会報(IEEE Trans. Comput.)の第39巻第8号の1016〜1024頁に記載されているエム.ディ.エルセゴバック及びティ.ラングによる“初期PLAを伴わない基数4を使用した平方根演算(Radix-4 square root without initial PLA)”を参照のこと。平方根演算の反復方程式を以下の数式2に示す。
【0007】
【数2】
数式2において、括弧内の項は有効除数である。平方根演算において、除数はQiの関数であり、同Qiは直前の全ルート・デジット(Previous root digits)q1〜qiの関数である。用語の一貫性を維持すべく、ルート・デジットを商デジットと称する。従って、除算で使用するハードウェアと同一のハードウェアを使用する平方根演算を実現すべく、オン・ザ・フライ商形成(On-the-fly quotient generation)は各反復後の除数の更新に必要である。
【0008】
2進法の除算アルゴリズムはグラマー・スクールで教授されている標準的な十進法の除算に類似している。R/D=Qにおいて、Qに対する各商デジットが予測される。第1商デジットを決定すべく、商デジットの適切な予測値に対して除数が掛けられる。次いで、その積は剰余を形成すべく被除数から引かれる。剰余が除数より更に大きい場合、商デジットの予測値は過小である。更に、剰余が負である場合、商デジットの予測値は過大である。いづれにしても、商デジットの予測値が誤っている場合、予測値の変更が必要である。この結果、正確な商デジットは次のデジットへ進む前に導き出される。次の関係、即ち0≦PR<Dが正しい場合、商デジットは正しい。ここで、PRは除数を掛けた商デジットを引いた後の部分剰余を示す。
【0009】
SRT除算アルゴリズムの鍵としては、負の商デジットを使用し得る点が挙げられる。例えば、基数10において、商デジットは標準デジット0〜9に加えて、−1〜−9の値を有し得る。600÷40の除算演算を以下に例示する。各反復において、正しい商デジットを選択した場合、正しい結果は15になる。しかし、正しいデジットである1に代えて、商デジットとして2が第1の反復中に選択されたと仮定する。第1の商デジットとして2を選択した後の部分剰余は600−(2*40*101)=−200である。SRT除算では、このエラーを補正すべくバックアップを行い、かつ第1の反復を繰り返すことはない。寧ろ、エラーは次の反復において補正可能である。SRT除算に基づき、第2の商デジットとして−5を正しく予測したと仮定する。反復後、部分剰余は−200−(−5*40*100)=0となる。反復後の部分剰余がゼロの場合、残りの全てのデジットの正しい値はゼロになる。従って、計算結果は(2*101)+(−5*100)=15となり、同計算結果は正しい。従って、SRTアルゴリズムは、後から1つ以上の負の商デジットを選択することにより、任意の商デジットの過大予測の補正を可能にする。その後の部分剰余を実質的にゼロまで削減すべく、予測された商デジットから正しい商デジットを引いた値が1を上回ってはならない。商デジットの予測における誤りが+1を上回ることを許容した場合、−9を下回る商デジット(例:−10、−11等)が底10において必要とされる。同様に、商デジットの範囲はSRTアルゴリズムに基づいて正の方向へ拡大されることはない。このため、正しい商デジットの過小予測は致命的である。これは部分剰余が基数を掛けた除数より更に大きく、かつその後、底10において9を上回る商デジット(例:10、11等)を必要とすることに起因する。従って、部分剰余を所定の上下限内に維持するために、商デジット選択において、正しい商デジットを過小予測してはならない。更に、商デジット選択において商デジットが過大予測された場合、予測された商デジットから正しい商デジットを引いた値は1を上回ってはならない。
【0010】
部分剰余を所定の上下限内に維持するための前記の基準を全ての部分剰余デジットを使用することなく満足させ得る点が保証される。正しい演算結果の算出を可能にする商デジットを選択するためには、部分剰余のうちの上位の僅かなデジットのみを使用すればよい。
【0011】
SRT除算は冗長商表示を負以外のデジットのみを有する標準的な非冗長形態まで削減するために、全ての商デジットの選択後に最終加算を要する。
最近の電子計算回路に用いられる2進法(底2)では、SRT除算は+1、0または−1の商デジットを提供する。商選択デジットを形成するロジック102はSRT除算インプリメンテーションの中心エレメントである。初期のリサーチは冗長部分剰余のうちの上位3ビットのみが基数2を使用する商デジット選択関数(Radix-2 quotient digit selection function)に必要な入力であることを示している(1983年に発行された米国電気電子学会第6回コンピュータ計算シンポジウムの予稿集(Proc. Sixth IEEE Symp. Comput. Arithmetic.)の99〜102頁に記載されているエス.マジェルスキーによる“高速デジタル回路のための平方根アルゴリズム”と、1986年10月に発行された米国電気電子学会の固体回路ジャーナル(IEEE J. Solid-State Circuits.)第SC−21巻第5番の814〜819頁に記載されているディー.ズラス及びダブリュ.マックアリスターによるVLSIにおける平衡遅延ツリー及び組合せ除算を参照)。しかし、更に最近の研究結果は、商デジット選択デジットを正しく形成し、かつ部分剰余を所定の上下限内に維持するために4ビットを要する点を指摘している(1994年にクルワー・アカデミック出版社(Kluwer Academic Publishers)から発行されたエム.ディー.エルセゴバック及びティー.ラングによる除算及び平方根演算:デジット漸化アルゴリズム及びインプリメンテーション(Division and Square Root: Digit-recurrence Algorithms and Implementations)ch.3と、1985年8月に発行された米国電気電子学会コンピュータ部会会報第C−34巻第8号の724〜733頁に記載のエス.マジェルスキーによる“高速デジタル回路のための平方根アルゴリズム”と、1991年に発行された米国電気電子学会第10回コンピュータ計算シンポジウムの予稿集の202〜209頁に記載のピー.モンツシ及びエル.シミニエラによる“幾つかの加算工程の省略をともなう基数2を使用する簡単な除算及び平方根演算”と、1987年に発行された米国電気電子学会第8回コンピュータ計算シンポジウムの予稿集の95〜101頁に記載のブイ.ペング、エス.サムドララ及びエム.ガブリエロフによる“浮動小数点ユニットにおけるシフター、乗算器及び除算器のインプリメンテーション”とを参照)。従来の商デジット選択規則は以下の数式3によって表すことができる。ここで、PRは実際の部分剰余のうちの上位4ビットを示し、10進小数点は上位の第3デジット及び第4デジットの間に位置する。部分剰余は2の補数であり、第1ビットは符合ビットとなる。
【0012】
【数3】
部分剰余はレジスタ100内に桁上げ保留の形態で格納されている。このため、実際の上位4ビットは部分剰余の桁上げ部分及び和部分の桁上げ伝搬全加算(Full carry propagate addition of the carry and sum portions of the partial remainder)を行わずには得られない。部分剰余のうちの上位4ビットを計算すべく各反復中に桁上げ伝搬全加算の実施を回避することが望ましい。このため、商デジット選択規則は予測部分剰余を使用して形成できる。
【0013】
予測部分剰余(PRest)は4ビット桁上げ伝搬加算器のみを用いて計算できる。4ビット桁上げ伝搬加算器は実際の部分剰余のうちの桁上げ部分及び和部分の上位4ビットを加算する。実際の部分剰余のうちの上位4ビットの計算には、59ビット桁上げ伝搬全加算を要する。従って、この簡略化は待ち時間の大きな節約を意味する。予測部分剰余PRestは59ビット桁上げ伝搬全加算を実施した場合に、予測部分剰余のうちの最下位ビット位置に一致するビット位置へ桁上げが伝搬される可能性を示していない。表1は基数2を使用する従来の商選択の真理値表である。予測部分剰余の上位4ビットは正しい商デジットを選択すべく使用される。従って、以下の真理値表は真の部分剰余の上位4ビットが予測部分剰余の上位4ビットとは異なり得るという事実を考慮している。
【0014】
【表1】
表1の真理値表において、2PRestを示す4ビットは部分剰余の上位4つの桁上げビット及び和ビット(Carry and sum bits)の非冗長表示である。第4ビットは少数部である。従って、部分剰余の上位4ビットの導出演繹は1/2である。
【0015】
商選択ロジックは0に代えて1、または−1に代えて0を予測する等、真の商結果を正しく予測するか、または過大予測すべく設計されている。SRTアルゴリズムは誤った商デジットを選択した場合、後から自身を補正する。
【0016】
部分剰余は−5/2≦2PR[i]≦3/2に制限される。このため、SRTに基づく基数2を使用する商選択ロジック(SRT radix-2 quotient selection logic)に関する従来の真理値表は幾つかのドントケア・インプット(Don't care inputs)を有する。下位ビットが無視されるため、予測部分剰余は常に真の部分剰余の最も重要な上位ビットより少ないか、または同上位ビットに等しい。従って、予測部分剰余が上下限外に位置する1つのケース(上記の真理値表において、星印で示す)が存在する。インプリメントされたSRTアルゴリズムは上下限外の部分剰余を形成しない。このため、実際の部分剰余は負の限界内に位置する。従って、−1は選択すべき適切な商デジットである。予測部分剰余に基づいて選択された商デジットが実際の部分剰余に基づいて選択された商デジットと異なる他の2つのケース(表1の111.0及び111.1に対するエントリに対応するケース)が存在する。しかし、ここに示す商デジットの誤った選択例では、商デジットは過小予測されないうえ、部分剰余は所定の上下限内に維持される。従って、最終結果は依然正確に形成される。
【0017】
以下の表2は表1に示す従来の商選択ロジックを簡単に表した真理値表である。以下の表において、“X”はドントケア論理変数("Don't care" logic variable)を表す。1xx.xが−1の商デジットを形成する第3のケースは、予測部分剰余が111.1である場合には適用されない。この場合、第2のエントリが使用され、正しい商デジットは0になる。
【0018】
【表2】
浮動小数点演算は結果が正確であるか否かを表示するために、同結果とともにスティッキー・ビット(Sticky bit)を形成する。結果が不正確である場合、スティッキー・ビットがアサート(Assert)される。また、結果が正確である場合、スティッキー・ビットがデアサート(Deassert)される。実質的に、スティッキー・ビットは任意の下位ビットがゼロでないか否かを示す。スティッキー・ビットは米国電気電子学会754規格(IEEE Standard 754)に基づく丸めのためのガード・ビット及び丸めビットとともに使用される。これについては、1985年にニューヨークに所在する米国電気電子学会から発行された米国規格協会/米国電気電子学会標準規格(ANSI/IEEE Standard)754規格に記載されている2進浮動小数点演算のための米国電気電子学会規格を参照のこと。
【0019】
除算及び平方根演算において、スティッキー・ビットは最終部分剰余がゼロであるか否かを確認することによって決定される。所望の数の商ビットを計算した後、最終部分剰余は部分剰余として定義される。部分剰余は冗長形態であるため、桁上げ伝搬加算はゼロ検出前に実施される。図2はスティッキー・ビットを計算するための回路を示す。図2において、最終部分剰余の桁上げ部分201及び和部分202は桁上げ伝搬加算器200によって合計される。加算器200から出力される最上位ビット(Most significant bit;略してmsb)は最終部分剰余の符号ビット203である。図1に示すように、除算ハードウェアは商(即ちQ)及び商−1(即ちQ−1)を累算する。最終部分剰余が負の場合、Q−1は適切な商である。また、最終部分剰余がゼロまたは正の場合、Qは正しい商である。従って、符合ビット203は正しい商を選択すべく使用される。図2において、ゼロ検出器204は非冗長最終部分剰余205の全てのビットがゼロであるか否かを決定し、かつスティッキー・ビット206を出力する。ゼロ検出器204は59入力論理和ゲート(59-input OR gate)と論理的に等しい。
【0020】
一見して、前記の解決策は正または負の最終部分剰余の全ての可能性について適切に見える。しかし、結果が正確である希なケースでは、最終部分剰余は負の除数に等しい。表3は自身によって除される数のための除算反復を示す。ここで、PR[i]はi番目の商デジットが選択された後における部分剰余を示す。
【0021】
【表3】
被除数は常に正であり、かつ正規化されている。このため、第1の反復から得られる商デジットは1になる。これは正の正規化数がゼロの符合ビットと、1の最上位デジットとを有するという事実に基づく。1ビットだけ位置を右へシフトすることにより、正の正規化数を2で割った際に、最上位ビットは必ずゼロになる。(最上位ビットは正しい2の補数を形成する符合ビットに対して整合すべく拡大されている。このため、負の数を2で割った場合、最上位ビットは1になる。)最上位ビットがゼロである場合、表2は1の商デジットを選択すべきことを命ずる。
【0022】
表3に示す第2の反復において、部分剰余PR[1]はゼロである。このため、第2の商デジットは1になる。その後の全ての反復において、部分剰余は負の除数に等しく、−1の商デジットが選択される。最後の反復後、最終部分剰余PR[n]における符合検出は、最終部分剰余が負であることを決定し、かつQ−1を選択すべきことを表示する。事実、これは正しい結果である。しかし、この最終部分剰余はゼロではない。これは不正確な結果を誤って示すとともに、スティッキー・ビットをアサートすべきことを誤って示す。
【0023】
この問題は正確な結果を要する全ての除算演算に波及する。表2に示すように、商選択ロジックは実際にはゼロである部分剰余に対して正の値を予測し、そして同予測を後から補正すべく定義されている。基本的に、前記の問題はこの商選択ロジックの定義に起因して生じる。従来の除算器はスティッキー・ビットの計算前に負の最終部分剰余を復元するために1つのプロセッサ・サイクルを要する。正確なスティッキー・ビット計算の実現が望まれる。負の最終部分剰余を復元することなく正確なスティッキー・ビットの計算を保証する除算器の開発は効果的である。
【0024】
本発明は前述した事情に鑑みてなされたものであって、その目的は、浮動小数点除算及び平方根演算中、最終部分剰余が負の場合にスティッキー・ビットを正確、かつ効果的に計算する能力を提供することにある。本発明の別の目的は商選択規則を実行する際の待ち時間を短縮するとともに、最小限のサイズを有する最適な商選択回路及び同商選択回路を含む除算回路を提供することにある。
【0025】
【課題を解決するための手段】
本発明の課題を解決すべく、2進除算及び平方根演算における商デジットを冗長部分剰余入力に基づいて決定する商デジット選択回路であって、冗長部分剰余入力は第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビットを含み、選択された商デジットは−1商デジットに該当するマイナス出力(Minus output)と、ゼロ商デジットに該当するゼロ出力(Zero output)と、+1商デジットに該当するプラス出力(Plus output)とのうちのいづれか1つをアサートすることによって出力される商デジット選択回路において、第1和ビット、第2和ビット、第3和ビット及び第4和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビットを入力され、そして第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを出力として形成する4ビット桁上げ伝搬加算器と、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ゼロ信号を形成し、オール・ゼロ信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロの場合にのみアサートされる4ビット・ゼロ検出器と、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ワン信号を形成し、オール・ワン信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全て1の場合にのみアサートされる4ビット1検出器(Four-bit one detector)と、第5和ビット及び第5桁上げビットを入力され、そして第5ビット・ゼロ信号を形成する否定論理和ゲートと、オール・ワン信号、第5ビット・ゼロ信号及びオール・ゼロ信号を入力され、そしてゼロ出力を形成し、ゼロ出力はオール・ワン信号がアサートされるか、または第5ビット・ゼロ信号及びオール・ゼロ信号の両方がアサートされた場合にのみアサートされるゼロ回路(Zero circuit)とを含む商デジット選択回路が提供される。
【0026】
更に、前記の商デジット選択回路は第1予測部分剰余ビット、オール・ゼロ信号及び第5ビット・ゼロ信号を入力され、そしてプラス出力を形成し、前記プラス出力は第1予測部分剰余ビットがデアサートされ、かつオール・ゼロ信号または第5ビット・ゼロ信号がデアサートされた場合にのみアサートされるプラス回路(Plus circuit)を含み得る。同商デジット選択回路は第1予測部分剰余ビット及びオール・ワン信号を入力され、そしてマイナス出力を形成し、前記マイナス出力は第1予測部分剰余ビットがアサートされ、かつオール・ワン信号がデアサートされた場合にのみアサートされるマイナス回路(Minus circuit)を含み得る。4ビット・ゼロ検出器として4入力論理和ゲート(Four input OR gate)を使用可能である。また、4ビット1検出器は4入力論理積ゲート(Four input AND gate)であり得る。
【0027】
更に本発明では、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして商デジットを計算する商デジット選択回路であって、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてゼロ出力を形成する商ゼロ回路(Quotient zero circuit)と、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてプラス出力を形成する商ポジティブ回路(Quotient positive circuit)とを含む商デジット選択回路を提供する。
【0028】
前記の商デジット選択回路は第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そしてマイナス出力を形成する商ネガティブ回路(Quotient negative circuit)を含み得る。更に商デジット選択回路は、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたゼロ出力を形成する反転商ゼロ回路(Inverted quotient zero circuit)と、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたプラス出力を形成する反転商ポジティブ回路(Inverted quotient positive circuit)と、第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そして反転されたマイナス出力を形成する反転商ネガティブ回路(Inverted quotient negative circuit)とを含み得る。
【0029】
更に本発明では、被除数を第1の反復中に入力され、次いで左シフトされた部分剰余をその後の複数の反復中に入力され、そして出力として部分剰余を形成する部分剰余レジスタと、オペランド除数を第1の反復中に入力され、そして出力として除数を形成する除数レジスタと、本発明の商デジット選択回路と、部分剰余と、商デジット及び除数の否定論理積とを入力され、そして左シフトされた部分剰余を形成する加算器とを含む浮動小数点正規形仮数除算回路(Floating point normalized mantissa division circuit)を提供する。同除算回路は商デジットを累算する商レジスタを含み得る。前記の部分剰余は桁上げ部分及び和部分を有する桁上げ保留の形態で表示し得る。また、前記の加算器は桁上げ保留加算器であり得る。
【0030】
更に、2進除算及び平方根演算において商デジットを冗長部分剰余から選択する方法であって、冗長部分剰余は第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビットを含む方法において、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを形成すべく第1和ビット、第2和ビット、第3和ビット及び第4和ビットを第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビットに対して加算する工程と、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全て1である場合、または前記第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロであって、かつ第5和ビット及び第5桁上げビットの両方がゼロに等しい場合にのみ商デジットとしてゼロを選択する工程とを含む方法を提供する。
【0031】
更に、前記の商デジットを選択する方法は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロにならない状態と、第5和ビット及び第5桁上げビットが全てゼロにならない状態とのうちのいづれかにおいて、第1予測部分剰余ビットがゼロである場合にのみ商デジットとして+1を選択する工程を含み得る。また、同商デジットを選択する方法は第1予測部分剰余ビットがアサートされ、さらには第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロにならない場合にのみ商デジットとして−1を選択する工程を含み得る。
【0032】
更に本発明では、2進除算及び平方根演算における商デジットを冗長部分剰余入力に基づいて決定する商デジット選択回路を形成する方法であって、冗長部分剰余入力は第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビットを含み、選択された商デジットは−1商デジットに該当するマイナス出力と、ゼロ商デジットに該当するゼロ出力と、+1商デジットに該当するプラス出力とのうちのいづれか1つをアサートすることによって出力される方法において、第1和ビット、第2和ビット、第3和ビット及び第4和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビットを入力され、そして第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを出力として形成する4ビット桁上げ伝搬加算器を形成する工程と、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ゼロ信号を形成し、オール・ゼロ信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロの場合にのみアサートされる4ビット・ゼロ検出器を形成する工程と、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ワン信号を形成し、オール・ワン信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全て1の場合にのみアサートされる4ビット1検出器を形成する工程と、第5和ビット及び第5桁上げビットを入力され、そして第5ビット・ゼロ信号を形成する否定論理和ゲートを形成する工程と、オール・ワン信号、第5ビット・ゼロ信号及びオール・ゼロ信号を入力され、そしてゼロ出力を形成し、前記ゼロ出力はオール・ワン信号がアサートされるか、または第5ビット・ゼロ信号及びオール・ゼロ信号の両方がアサートされた場合にのみアサートされるゼロ回路を形成する工程とを含む方法を提供する。
【0033】
前記の商デジット選択回路を形成する方法は第1予測部分剰余ビット、オール・ゼロ信号及び第5ビット・ゼロ信号を入力され、そしてプラス出力を形成し、プラス出力は第1予測部分剰余ビットがデアサートされ、かつオール・ゼロ信号または第5ビット・ゼロ信号がデアサートされた場合にのみアサートされるプラス回路を形成する工程を含み得る。商デジット選択回路は第1予測部分剰余ビット及びオール・ワン信号を入力され、そしてマイナス出力を形成し、マイナス出力は第1予測部分剰余ビットがアサートされ、かつオール・ワン信号がデアサートされた場合にのみアサートされるマイナス回路を形成する工程を含み得る。4ビット・ゼロ検出器として4入力論理和ゲートを使用可能である。また、4ビット1検出器は4入力論理積ゲートであり得る。
【0034】
更に本発明では、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして商デジットを計算する商デジット選択回路を形成する方法であって、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてゼロ出力を形成する商ゼロ回路を形成する工程と、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてプラス出力を形成する商ポジティブ回路を形成する工程とを含む方法を提供する。
【0035】
前記の商ポジティブ回路を形成する工程は第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そしてマイナス出力を形成する商ネガティブ回路を形成する工程を含み得る。
【0036】
更に、前記の商ネガティブ回路を形成する工程は第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたゼロ出力を形成する反転商ゼロ回路を形成する工程と、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたプラス出力を形成する反転商ポジティブ回路を形成する工程と、第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そして反転されたマイナス出力を形成する反転商ネガティブ回路を形成する工程とを含み得る。
【0037】
また本発明では、被除数を第1の反復中に入力され、次いで左シフトされた部分剰余をその後の複数の反復中に入力され、そして出力として部分剰余を形成する部分剰余レジスタを形成する工程と、オペランド除数を第1の反復中に入力され、そして出力として除数を形成する除数レジスタを形成する工程と、本発明の商デジット選択回路を形成する工程と、部分剰余と、商デジット及び除数の否定論理積とを入力され、そして左シフトされた部分剰余を形成する加算器を形成する工程とを含む浮動小数点正規形仮数除算回路を形成する方法を提供する。同方法は商デジットを累算する商レジスタを形成する工程を含み得る。また、部分剰余は桁上げ部分及び和部分を有する桁上げ保留の形態で表示し得る。更に、加算器は桁上げ保留加算器であり得る。
【0038】
本発明は浮動小数点除算及び平方根演算中、最終部分剰余が負の場合にスティッキー・ビットを正確、かつ効果的に計算する能力を提供する。本発明は本発明に基づく商選択規則を最小限の待ち時間で実行するとともに、最小限のサイズを有する最適な商選択回路を提供する。
【0039】
本発明は正確な結果が得られた際に、作業中の部分剰余が負になることを防止する更に効果的な商デジット選択関数を提供する。負の部分剰余はスティッキー・ビットの計算前に復元する必要がないため、1サイクルが削減される。
【0040】
本発明に基づき、商デジット選択ロジックは負の除数に等しい部分剰余の形成を防止すべく変更される。正確な除算結果を実現する正確、かつ効果的なスティッキー・ビットの計算を行うために、負の除数に等しい負の部分剰余の形成を防止する必要がある。これを実現すべく商デジット選択関数を強化して、ハードウェアのコストの削減及び待ち時間の短縮を行い得る。このため、商デジット選択関数の強化は理想的な解決策である。予備最終部分剰余(Preliminary final partial remainder)を復元するための余分なメカニズムを提供する必要がないため、余分なハードウェアが排除される。負の予備部分剰余を復元する別のサイクル時間を必要としないため、待ち時間が短縮される。
【0041】
本発明に基づき、実際の部分剰余がゼロの際に、1の商デジットに変えてゼロの商デジットを選択すべく商デジット選択ロジックが変更される。上位4ビットがゼロである5ビットからなる予測部分剰余を使用することにより、第4の上位ビットへの可能な桁上げ伝搬が検出される。これは冗長部分剰余のうちの第5の最上位和ビット及び桁上げビットの確認により実現可能である。これら両方がゼロである場合、同ビット位置から予測部分剰余の最下位ビット位置への桁上げ伝搬は不可能であり、ゼロの商デジットが選択される。冗長部分剰余の第5の最上位桁上げビット及び和ビットのうちの少なくともいづれか一方が1である別のケースでは、1の商デジットが選択される。
【0042】
【発明の実施の形態】
浮動小数点演算において、負の最終部分剰余が生じた際にスティッキー・ビットを正確に計算すべく幾つかのオプションを検討する必要がある。最も簡単な解決策はゼロ検出を行う前に除数を加算することにより、負の最終部分剰余を復元することが挙げられる。別の桁上げ伝搬加算器を設置するために要する空間を考慮した場合、解決策は従来のハードウェアを利用する必要がある。これを実現する2つの方法を図3及び図4に示す。
【0043】
図3に示す解決策は基本的な反復工程をインプリメントする従来の桁上げ保留加算器300を利用している。通常の演算中、最終サイクル信号301はロー(Low)である。この結果、マルチプレクサ302,303は図1に関連して詳述した標準的反復工程をインプリメントすべく形成されている。しかし、最終サイクル中、最終サイクル信号301はハイ(High)であり、マルチプレクサ303はレジスタ305内に格納された部分剰余の桁上げ部分及び和部分に対して除数D304を加算すべく同除数D304を加算器300へ出力する。予備部分剰余の符号が負の場合、マルチプレクサ306は加算器300の結果を最終部分剰余フリップ・フロップ307に対して出力する。
【0044】
図4に示す解決策では、図2に示すスティッキー・ビット計算を行う従来の桁上げ伝搬加算器400を再び使用している。図1に示す反復データパス等のデータパスが所望の精度の商デジットを形成した後、冗長部分剰余の桁上げ部分PRC及び和部分PRSは最終サイクル信号がローの間にマルチプレクサ403,402へそれぞれ入力される。次いで、桁上げ伝搬加算器400は冗長部分剰余を予備非冗長最終部分剰余(Preliminary non-redundant final partial remainder)へと削減する。桁上げ伝搬加算器400の最上位出力ビット404は予備最終部分剰余の符号を示す。非冗長予備最終部分剰余はフリップ・フロップ406内へラッチされる。次いで、最終サイクル信号401がアサートされる。予備最終部分剰余が負であることを符号ビット404が示した場合、マルチプレクサ405は加算器400に対して除数を出力するマルチプレクサ402に対して同除数を出力する。その一方、マルチプレクサ403は加算器400に対する別の入力として予備非冗長部分剰余を出力する。次いで、ゼロ検出器407は復元された部分剰余を使用してスティッキー・ビットを形成する。符号ビットが負以外の部分剰余を示す場合、マルチプレクサ405は除数Dに代えてゼロを部分剰余に対して加算させる。
【0045】
図3及び図4に示す前記の2つの解決策は、予備最終部分剰余が負の際にスティッキー・ビットを計算すべく別のマルチプレクサ・ハードウェアと、別のサイクルとを要する。マルチプレクサ302は部分剰余形成クリティカル・パス(Partial remainder formation critical path)上に配置されている。このため、図3に示す解決策は基本的反復のためのサイクル時間に影響を及ぼす。更に、パイプライン・スーパースカラ・プロセッサ内の待ち時間可変命令(Variable latency instructions)は命令スケジューリング及びバイパス制御ロジックを更に複雑にするため望ましくない。従って、スティッキー・ビットを正確に計算するために除算演算の全分布のうちの僅かな部分のみが余分なサイクルを必要とする場合にも、負の予備最終部分剰余を形成しない除算命令のための余分なサイクルを削除すべくプロセッサのデザインは更に複雑になる。従って、負の部分剰余を復元する正味の効果は、全ての除算及び平方根演算を行う別の待ち時間サイクルを必要とする。
【0046】
本発明に基づき、商デジット選択ロジックは負の除数に等しい部分剰余の形成を防止するために変更される。正確な除算結果を実現するスティッキー・ビットを正確、かつ効果的に計算すべく、負の除数に等しい負の部分剰余の形成を防止する必要がある。これを実現すべく商デジット選択関数を強化することにより、ハードウェアが削減され、かつ待ち時間が短縮される。このため、同選択関数の強化は理想的な解決策である。予備最終部分剰余を復元するための余分なメカニズムを提供する必要がないため、余分なハードウェアを排除し得る。また、負の予備部分剰余を復元する別のサイクル時間を必要としないため待ち時間が短縮される。
【0047】
本発明に基づく、商デジット選択ロジックは、実際の部分剰余がゼロの際に1の商デジットに代えてゼロの商デジットを選択すべく変更される。これは2PR[i]est=000.0に対してq[i+1]=0を選択することを示唆している。しかし、商デジット選択関数は実際の部分剰余より寧ろ予測部分剰余に対して作用するため、商選択ロジックの注意深いデザインが必要である。実際には予測部分剰余は1/2未満であり得るため、更に下位の冗長部分剰余ビットの加算は実際の部分剰余の上位4ビットのうちの最下位ビット位置へ1を伝搬させる。従って、実際の部分剰余は1/2以上になる。
【0048】
実際の部分剰余が1/2(または1/2以上)である場合、除数は1/2≦D<1に限定されるため、q=1を常に選択する必要がある。実際の部分剰余が1/2より更に大きく、かつq=0が選択された場合、次の部分剰余は除数を最初に加算または減算することなく、実際の部分剰余を左側へ1ビットだけシフトすることによって得られる。この左シフトは正確な商への収束に必要な3/2の上限を越える次の実際の部分剰余を形成する。
【0049】
正確な商デジットがゼロの際に、除数が実際の部分剰余より更に大きく、さらに商デジットとして+1の値が選択された場合、このエラーは後の反復において補正可能である。しかし、予測部分剰余が000.0であって、かつ正確な商デジットが1である際に商デジットとしてゼロが選択された場合、このエラーを補正する方法はない。q=1が正しい商デジットである際にq=0が選択された場合、過小予測を補正する方法はない。結果は回復不能な誤りであり、次の部分剰余は正確な結果への収束に必要な所定の上下限の外に位置する。
【0050】
全ての部分剰余に対する2進加算の実施は予測の問題を排除する。しかし、これはSRT除算のタイミング及び空間に関する効果を無効にする。ゼロの商デジットは全ての部分剰余がゼロである際にのみ選択可能である。しかし、全ての部分剰余に対するゼロの検出は同一の理由により逆効果となる。
【0051】
前記の解決策に対する簡単な代替策としては、実際の部分剰余の上位4ビットのうちの最下位ビットへの可能な桁上げ伝搬を検出することが挙げられる。これは冗長部分剰余のうちの第5の最上位和ビット及び桁上げビット、即ちPRS,msb-4及びPRC,msb-4を確認することによって実現し得る。PRS,msb-4及びPRC,msb-4がそれぞれゼロである場合、そのビット位置から予測部分剰余の最下位ビット位置への桁上げ伝搬は不可能であり、さらにはゼロの商デジットを選択する必要がある。冗長部分剰余の第5の最上位桁上げビット及び和ビットのうちの少なくともいづれか一方が1である別のケースでは、1の商デジットを選択する必要がある。部分剰余のうちの複数の下位ビットがゼロでない場合にも、同部分剰余は所定の上下限(−5/2≦2PR≦3/2)内に存在し、かつ正しい結果が依然算出されることになる。
【0052】
予測部分剰余の計算に必要な桁上げ伝搬加算は実際の冗長部分剰余の上位4つの伝搬ビット及び和ビットに対してのみ行われる。このため、本発明に基づく計算の待ち時間に対する影響は最低限に抑制される。表4は本発明に基づく正確な商選択ロジックのための真理値表を示す。
【0053】
【表4】
図5は強化された商デジット選択関数の論理図を示す。図5において、4ビット桁上げ伝搬加算器500は実際の冗長部分剰余の桁上げ部分(2PRC[msb:msb−3])及び和部分(2PRS[msb:msb−3])の上位4ビットを入力され、そして予測非冗長部分剰余x[3:0]を形成する。オール・ゼロ検出器(All-zero detector)501は予測部分剰余x[3:0]の4ビット全てがゼロであるか否かを決定する。x[3:0]の全ビットがゼロである場合、中間信号n0がアサートされる。オール・ゼロ検出器501は4入力否定論理和ゲート(Four input NOR gate)と機能的に同じである。x[3:0]の全ビットが1である場合、中間信号n1がアサートされる。オール・ワン検出器(All-one detector)502は4入力論理積ゲートと機能的に同じである。否定論理和ゲート503は冗長部分剰余のうちの最上位の第5桁上げビット(2PRC[msb−4])及び第5和ビット(2PRS[msb−4])を入力され、そして中間信号i0を形成する。中間信号i0は2PRC[msb−4]及び2PRS[msb−4]がゼロである際にのみアサートされる。
【0054】
ランダム・ロジック504のブロックはSRT除算に基づく可能な商デジット値のうちの1つにそれぞれ該当する3つの信号(M、Z及びP)を形成する。Mは−1の商デジットに該当する。Zはゼロの商デジットに該当する。Pは+1の商デジットに該当する。Mはx[3]がデアサートされ、かつn1がデアサートされた場合にのみアサートされる。Zはn1がアサートされるか、またはi0及びn0がアサートされた場合にのみアサートされる。PはX[3]がアサートされ、n0またはi0がデアサートされた場合にのみアサートされる。各論理関係を仮定した場合、商デジット信号M、Z及びPのうちの任意の2つを同時にアサートすることは不可能である。
【0055】
図5に示すインプリメンテーションは論理的に正しい。しかし実際には、4ビット2進加算器及びその後のロジックは統合され、さらには最適化されたロジック・インプリメンテーションへの併合が可能である。図6に示すように、5段階ロジック・インプリメンテーション(Five-stage logic implementation)は空間を更に効果的に使用するとともに、出力を更に短い遅延時間を伴って形成する。
【0056】
図6に示すインプリメンテーションでは、M、Z及びPが計算されるとともに、論理反転/M、/Z及び/Pも計算される。これはデコードされた選択入力を有するCMOSマルチプレクサ内等において伝達ゲートをイネーブルするために商信号を使用する際に効果的である。M及び/Mは冗長部分剰余ビットの上位4ビット(2PRC[msb:msb−3]及び2PRS[msb:msb−3])にのみ依存する。その一方、Z、P、/Z及び/Pは全て冗長部分剰余の上位5ビット(2PRC[msb:msb−4]及び2PRS[msb:msb−4])に依存する。図6のセルは回路が占める空間の削減を第2の課題とする一方で、主に遅延を最小限に抑制すべく最適化されている。図6に示す殆どの論理は空間を削減すべく幾つかの出力計算の間において共有されている。
【0057】
本発明に基づく基数2を使用する新たな商デジット選択論理(Radix-2 quotient digit selection logic)をインプリメントするために必要な別のゲートの総数は比較的少ない。好ましい実施の形態のインプリメンテーションに関するスパイス・シミュレーション分析(Spice simulation analysis)において、商選択論理クリティカル・タイミング・パス(Quotient selection logic critical timing path)が5%未満であることが示されている。
【0058】
更に遅い商選択ロジックと、最後に行われる部分剰余復元サイクルの排除との間には、インプリメンテーションに依存するタイミング・トレードオフが存在する。僅かにより複雑な商選択論理に起因する遅延の増加がプロセッサ・サイクル時間(Processor cycle time)を制限しない場合、性能の増加は負の最終部分剰余の復元に必要とされる待ち時間サイクルの削減により常には実現される。本発明のハードウェア除算器等を含む最近のマイクロプロセッサでは、プロセッサ・サイクル時間は他のクリティカル・パスによって決定されるか、またはプロセッサを設計する前に任意で適合させ得る。商選択ロジックのうちの増大した遅延が最長パスでないケースにおいて、各除算演算あたり1サイクルの正味節約は新たな出費を伴うことなく実現し得る。
【0059】
図6に示す実施の形態において、変更された商選択ロジック・アルゴリズムは内部浮動小数点除算器クリティカル・パス(Internal floating point divider critical path)の速度を従来の商選択規則を使用して最適化された同等のクリティカル・パスより約100ps遅くする。これは2パーセント未満の速度低下に相当する。プロセッサの限界タイミング・パス(Limiting timing path)は更に長い。従って、改善された商選択ロジックはプロセッサ・サイクル時間に悪影響を及ぼさない。スティッキー検出(Sticky detection)前に部分剰余を復元するサイクルを排除する効果が実現される。
【0060】
本発明の商選択ロジックを使用しても負の最終部分剰余は依然形成され得る。しかし、負の最終部分剰余が形成された際、本発明に基づく商選択ロジックは負の部分剰余が負の除数より更に大きいことを保証する。従って、本発明に基づく負の最終部分剰余が形成された場合、Q−1が選択され、結果は必ず不正確になる。この結果、負の最終部分剰余が負の除数に等しくなる恐れを伴うことなくスティッキー・ビットを安全にアサートし得る。
【0061】
符号検出及びスティッキー・ビット計算を平行して実施する一方で、ハードウェアの節約が可能である。59ビット全加算器を使用する代わりに、59ビット符号検出加算器(59-bit sign detect adder)を使用し得る。これはタイミングを僅かに改善する一方で、主に空間の節約を実現する。ゼロ検出は冗長部分剰余を2進数へ変換する明確な加算を伴うことなく行える。
【0062】
【数4】
数式4の式において、Si及びCiはそれぞれ最終部分剰余の和の値及び桁上げ値である。次いで、スティッキー・ビットは以下の数式5に基づいて計算される。
【0063】
【数5】
この方法は59ビット桁上げ伝搬加算器の遅延に代えて3入力排他的論理和遅延(3-input XOR delay )を伴うゼロ検出器に対する入力を形成し、大きな正味節約を可能にする。
【0064】
以上、本発明を好ましい実施の形態に基づいて詳述したが、同実施の形態は例示を目的とするものであって、本発明を限定するものではない。当業者は必要に応じて本発明の実施の形態を変更することが可能であり、同変更は請求項に開示する本発明の範囲及び精神を逸脱しないものとする。例えば、図6に示す商選択ロジックの最適化された論理インプリメンテーションは各種の同等の方法を用いて設計し得る。また、図6に示す回路は標準的なCMOS伝達ゲート・マルチプレクサ(CMOS transmission gate multiplexor)に代えて、n−チャネル・パス・トランジスタ・マルチプレクサ(n-channel pass transistor multiplexor)を制御すべく商デジットの正の極性のみを計算し、論理反転の計算を削除できる。最適化された異なるインプリメンテーションは異なる技術(例:NMOS、ECL等)におけるインプリメンテーション、または同一技術に属する異なる設計規則及び設計ツールを用いたインプリメンテーションの結果である。請求項は表4に示す真理値表の全ての回路インプリメンテーションを網羅することを目的とする。従って、本発明の技術分野の当業者にとって自明な各種の変更及び修正は、本発明の精神及び範囲に属する。
【0065】
【発明の効果】
以上詳述したように、本発明によれば、浮動小数点除算及び平方根演算中、最終部分剰余が負の場合にスティッキー・ビットを正確、かつ効果的に計算し得る。更に、本発明は商選択規則を実行する際の待ち時間を短縮するとともに、最小限のサイズを有する最適な商選択回路及び同商選択回路を含む除算回路を実現するという優れた効果を発揮する。
【図面の簡単な説明】
【図1】反復SRT除算アルゴリズムをインプリメントする従来のハードウェア除算モジュールの簡単な論理図。
【図2】従来のスティッキー・ビット演算回路の簡単な論理図。
【図3】反復SRT除算アルゴリズムをインプリメントするか、または負の最終部分剰余を復元する1つのハードウェア除算モジュールの簡単な論理図。
【図4】反復SRT除算アルゴリズムをインプリメントするか、または負の最終部分剰余を復元する別のハードウェア除算モジュールの簡単な論理図。
【図5】本発明の商選択規則をインプリメントする回路の簡単な論理図。
【図6】商デジット信号及びその論理反転を形成する商選択規則をインプリメントする回路の詳細な論理図。
【符号の説明】
300…桁上げ保留加算器、301,401…最終サイクル信号、302,303,306,403,402,405…マルチプレクサ、304…除数、305…レジスタ、307,406…フリップ・フロップ、400…桁上げ伝搬加算器、404…最上位出力ビット、404…符号ビット、407…ゼロ検出器、500…4ビット桁上げ伝搬加算器、501…オール・ゼロ検出器、502…オール・ワン検出器、503…否定論理和ゲート、504…ランダム・ロジック。
【発明の属する技術分野】
本発明はマイクロプロセッサ内の浮動小数点除算器(Floating point dividers)の分野、より詳細には、SRT除算/平方根演算のインプリメンテーション(SRT division/square root implementation)における商デジット選択規則(Quotient digit selection rules)に関し、同規則は結果が正確な場合、負の最終部分剰余(Negative final partial remainders)の形成を防止する。
【0002】
【従来の技術及び発明が解決しようとする課題】
SRTアルゴリズムは引き放し法除算(Non-restoring division)を実行する1つの方法を提供する。この詳細については、1958年9月に発行された米国電気電子学会コンピュータ部会会報(IEEE Trans. Comput.)第C−7巻218〜222頁に記載されているジェイ.イー.ロバートソンによる“デジタル除算法の新たなクラス”と、1958年に発行されたメカニカル応用数学誌(Quart. J. Mech. Appl. Math.)第11刊第3部364〜384頁に記載されているケー.ディー.トーチャーによる“自動2進コンピュータのための乗算及び除算技術”を参照のこと。デジタル除算では、オペランドとして除数及び被除数が使用され、かつ出力として商が形成される。複数の商デジットは反復計算され、同商デジットのうちの最上位商デジットが最初に形成される。SRT除算は他の除算アルゴリズムとは異なる。SRT除算では、連続する各商デジットは上位の僅かな部分剰余デジットのみに基づいて公式化され、非常に多くのデジットを含み得る部分剰余全体に基づいて公式化されることはない。全ての反復において、正確な商デジットの選択は部分剰余全体を考慮せずには保証できない。このため、SRTアルゴリズムは不正確な商デジットを時々形成する。しかし、SRTアルゴリズムは正、ゼロ及び負の各商デジットの可能性を提供する。商デジットを1つの反復において過大予測した場合、誤りは負の商デジットを選択することにより、次の反復において補正される。SRT除算では、商デジットを過小予測してはならない。即ち、商デジットは常に過大予測するか、または正確に予測する必要がある。全ての商デジットを過小予測しなかった場合、部分剰余は所定の上下限内に維持され、正確な最終商の計算が可能になる。SRTアルゴリズムは負の商デジットの形成を可能にする。このため、一般的に最終商出力は通常の除算のように全商デジットを単に連結するのではなく、寧ろ商デジットの重み付け加算及び減算を介して行われる。
【0003】
基数が更に大きい場合、1つの反復において形成される商デジットの数が更に多くなる。これは複雑さを増大させる。基数2のインプリメンテーションは1つのデジットを1つの反復において形成する。基数4のインプリメンテーションは2つのデジットを1つの反復において形成する。図1はSRTに基づく基数2を使用する簡単な浮動小数点インプリメンテーション(Simple SRT radix-2 floating point implementation)を示す。同インプリメンテーションは、除数及び被除数の両方が正であって、かつ正規化されていることを要する。従って、1/2≦D、被除数<1となる。シフトされた最初の部分剰余(Initial shifted partial remainder)、即ち2PR[0]は被除数である。第1商デジットの計算の反復(First quotient digit calculation iteration)開始前に、被除数は部分剰余レジスタ100に対してロードされる。この結果、最初の部分剰余は被除数となる。その後、反復によって形成される部分剰余は以下の数式1に基づいて形成される。
【0004】
【数1】
数式1において、qi+1は商デジットであって、−1,0または+1の値を有し得る。商デジットqi+1は直前の部分剰余の値に基づいて単独で決定され、かつ除数から独立している。商選択ロジック102は部分剰余のうちの上位4ビットのみを入力され、そして商デジットを形成する。除算では、全ての反復において除数は一定に維持される。しかし、平方根演算は各反復後に除数レジスタ101内に格納された除数に対する調整を一般的に含む。従って、商デジットが除数から独立していることは平方根演算における魅力的な特徴である。
【0005】
部分剰余は一般的に冗長桁上げ保留の形態に維持される。この結果、次の部分剰余の計算では、更に処理速度が遅く、かつ大きい桁上げ伝搬加算器に代えて桁上げ保留加算器の使用が可能である。部分剰余は全ての反復が実施され、かつ所望の精度に達した後で、非冗長形態(Non-redundant form)へ変換される。SRTアルゴリズムは商デジットの過大予測を可能にする。商デジットの過大予測により、負の部分剰余が続いて形成される。このため、最終部分剰余を負にすべく最後の商デジットを過大予測し得る。この場合、過大予測に対する補正が不可能なため、Q及びQ−1の維持が必要である。この結果、最終部分剰余が負である場合、Q−1がQに代えて選択される。商デジットは常には冗長形態に維持され、さらには最後の反復において非冗長形態へ変換される。これに代えて、商(即ちQ)と、商−1(即ちQ−1)とを1992年12月に発行された米国電気電子学会コンピュータ部会会報(IEEE Trans. Comput.)第41巻第12号の1497〜1503頁に記載されているエム.ディ.エルセゴバック及びティ.ラングによる“オン・ザ・フライ・ラウンディング(On-the-fly rounding)”に開示されている規則に基づいてフライ(Fly)上に形成し得る。
【0006】
SRTアルゴリズムは平方根演算にも適用される。これにより、従来の除算ハードウェアの使用が可能である。簡略化された平方根の式は除算の式に類似している。これについては、1990年8月に発行された米国電気電子学会コンピュータ部会会報(IEEE Trans. Comput.)の第39巻第8号の1016〜1024頁に記載されているエム.ディ.エルセゴバック及びティ.ラングによる“初期PLAを伴わない基数4を使用した平方根演算(Radix-4 square root without initial PLA)”を参照のこと。平方根演算の反復方程式を以下の数式2に示す。
【0007】
【数2】
数式2において、括弧内の項は有効除数である。平方根演算において、除数はQiの関数であり、同Qiは直前の全ルート・デジット(Previous root digits)q1〜qiの関数である。用語の一貫性を維持すべく、ルート・デジットを商デジットと称する。従って、除算で使用するハードウェアと同一のハードウェアを使用する平方根演算を実現すべく、オン・ザ・フライ商形成(On-the-fly quotient generation)は各反復後の除数の更新に必要である。
【0008】
2進法の除算アルゴリズムはグラマー・スクールで教授されている標準的な十進法の除算に類似している。R/D=Qにおいて、Qに対する各商デジットが予測される。第1商デジットを決定すべく、商デジットの適切な予測値に対して除数が掛けられる。次いで、その積は剰余を形成すべく被除数から引かれる。剰余が除数より更に大きい場合、商デジットの予測値は過小である。更に、剰余が負である場合、商デジットの予測値は過大である。いづれにしても、商デジットの予測値が誤っている場合、予測値の変更が必要である。この結果、正確な商デジットは次のデジットへ進む前に導き出される。次の関係、即ち0≦PR<Dが正しい場合、商デジットは正しい。ここで、PRは除数を掛けた商デジットを引いた後の部分剰余を示す。
【0009】
SRT除算アルゴリズムの鍵としては、負の商デジットを使用し得る点が挙げられる。例えば、基数10において、商デジットは標準デジット0〜9に加えて、−1〜−9の値を有し得る。600÷40の除算演算を以下に例示する。各反復において、正しい商デジットを選択した場合、正しい結果は15になる。しかし、正しいデジットである1に代えて、商デジットとして2が第1の反復中に選択されたと仮定する。第1の商デジットとして2を選択した後の部分剰余は600−(2*40*101)=−200である。SRT除算では、このエラーを補正すべくバックアップを行い、かつ第1の反復を繰り返すことはない。寧ろ、エラーは次の反復において補正可能である。SRT除算に基づき、第2の商デジットとして−5を正しく予測したと仮定する。反復後、部分剰余は−200−(−5*40*100)=0となる。反復後の部分剰余がゼロの場合、残りの全てのデジットの正しい値はゼロになる。従って、計算結果は(2*101)+(−5*100)=15となり、同計算結果は正しい。従って、SRTアルゴリズムは、後から1つ以上の負の商デジットを選択することにより、任意の商デジットの過大予測の補正を可能にする。その後の部分剰余を実質的にゼロまで削減すべく、予測された商デジットから正しい商デジットを引いた値が1を上回ってはならない。商デジットの予測における誤りが+1を上回ることを許容した場合、−9を下回る商デジット(例:−10、−11等)が底10において必要とされる。同様に、商デジットの範囲はSRTアルゴリズムに基づいて正の方向へ拡大されることはない。このため、正しい商デジットの過小予測は致命的である。これは部分剰余が基数を掛けた除数より更に大きく、かつその後、底10において9を上回る商デジット(例:10、11等)を必要とすることに起因する。従って、部分剰余を所定の上下限内に維持するために、商デジット選択において、正しい商デジットを過小予測してはならない。更に、商デジット選択において商デジットが過大予測された場合、予測された商デジットから正しい商デジットを引いた値は1を上回ってはならない。
【0010】
部分剰余を所定の上下限内に維持するための前記の基準を全ての部分剰余デジットを使用することなく満足させ得る点が保証される。正しい演算結果の算出を可能にする商デジットを選択するためには、部分剰余のうちの上位の僅かなデジットのみを使用すればよい。
【0011】
SRT除算は冗長商表示を負以外のデジットのみを有する標準的な非冗長形態まで削減するために、全ての商デジットの選択後に最終加算を要する。
最近の電子計算回路に用いられる2進法(底2)では、SRT除算は+1、0または−1の商デジットを提供する。商選択デジットを形成するロジック102はSRT除算インプリメンテーションの中心エレメントである。初期のリサーチは冗長部分剰余のうちの上位3ビットのみが基数2を使用する商デジット選択関数(Radix-2 quotient digit selection function)に必要な入力であることを示している(1983年に発行された米国電気電子学会第6回コンピュータ計算シンポジウムの予稿集(Proc. Sixth IEEE Symp. Comput. Arithmetic.)の99〜102頁に記載されているエス.マジェルスキーによる“高速デジタル回路のための平方根アルゴリズム”と、1986年10月に発行された米国電気電子学会の固体回路ジャーナル(IEEE J. Solid-State Circuits.)第SC−21巻第5番の814〜819頁に記載されているディー.ズラス及びダブリュ.マックアリスターによるVLSIにおける平衡遅延ツリー及び組合せ除算を参照)。しかし、更に最近の研究結果は、商デジット選択デジットを正しく形成し、かつ部分剰余を所定の上下限内に維持するために4ビットを要する点を指摘している(1994年にクルワー・アカデミック出版社(Kluwer Academic Publishers)から発行されたエム.ディー.エルセゴバック及びティー.ラングによる除算及び平方根演算:デジット漸化アルゴリズム及びインプリメンテーション(Division and Square Root: Digit-recurrence Algorithms and Implementations)ch.3と、1985年8月に発行された米国電気電子学会コンピュータ部会会報第C−34巻第8号の724〜733頁に記載のエス.マジェルスキーによる“高速デジタル回路のための平方根アルゴリズム”と、1991年に発行された米国電気電子学会第10回コンピュータ計算シンポジウムの予稿集の202〜209頁に記載のピー.モンツシ及びエル.シミニエラによる“幾つかの加算工程の省略をともなう基数2を使用する簡単な除算及び平方根演算”と、1987年に発行された米国電気電子学会第8回コンピュータ計算シンポジウムの予稿集の95〜101頁に記載のブイ.ペング、エス.サムドララ及びエム.ガブリエロフによる“浮動小数点ユニットにおけるシフター、乗算器及び除算器のインプリメンテーション”とを参照)。従来の商デジット選択規則は以下の数式3によって表すことができる。ここで、PRは実際の部分剰余のうちの上位4ビットを示し、10進小数点は上位の第3デジット及び第4デジットの間に位置する。部分剰余は2の補数であり、第1ビットは符合ビットとなる。
【0012】
【数3】
部分剰余はレジスタ100内に桁上げ保留の形態で格納されている。このため、実際の上位4ビットは部分剰余の桁上げ部分及び和部分の桁上げ伝搬全加算(Full carry propagate addition of the carry and sum portions of the partial remainder)を行わずには得られない。部分剰余のうちの上位4ビットを計算すべく各反復中に桁上げ伝搬全加算の実施を回避することが望ましい。このため、商デジット選択規則は予測部分剰余を使用して形成できる。
【0013】
予測部分剰余(PRest)は4ビット桁上げ伝搬加算器のみを用いて計算できる。4ビット桁上げ伝搬加算器は実際の部分剰余のうちの桁上げ部分及び和部分の上位4ビットを加算する。実際の部分剰余のうちの上位4ビットの計算には、59ビット桁上げ伝搬全加算を要する。従って、この簡略化は待ち時間の大きな節約を意味する。予測部分剰余PRestは59ビット桁上げ伝搬全加算を実施した場合に、予測部分剰余のうちの最下位ビット位置に一致するビット位置へ桁上げが伝搬される可能性を示していない。表1は基数2を使用する従来の商選択の真理値表である。予測部分剰余の上位4ビットは正しい商デジットを選択すべく使用される。従って、以下の真理値表は真の部分剰余の上位4ビットが予測部分剰余の上位4ビットとは異なり得るという事実を考慮している。
【0014】
【表1】
表1の真理値表において、2PRestを示す4ビットは部分剰余の上位4つの桁上げビット及び和ビット(Carry and sum bits)の非冗長表示である。第4ビットは少数部である。従って、部分剰余の上位4ビットの導出演繹は1/2である。
【0015】
商選択ロジックは0に代えて1、または−1に代えて0を予測する等、真の商結果を正しく予測するか、または過大予測すべく設計されている。SRTアルゴリズムは誤った商デジットを選択した場合、後から自身を補正する。
【0016】
部分剰余は−5/2≦2PR[i]≦3/2に制限される。このため、SRTに基づく基数2を使用する商選択ロジック(SRT radix-2 quotient selection logic)に関する従来の真理値表は幾つかのドントケア・インプット(Don't care inputs)を有する。下位ビットが無視されるため、予測部分剰余は常に真の部分剰余の最も重要な上位ビットより少ないか、または同上位ビットに等しい。従って、予測部分剰余が上下限外に位置する1つのケース(上記の真理値表において、星印で示す)が存在する。インプリメントされたSRTアルゴリズムは上下限外の部分剰余を形成しない。このため、実際の部分剰余は負の限界内に位置する。従って、−1は選択すべき適切な商デジットである。予測部分剰余に基づいて選択された商デジットが実際の部分剰余に基づいて選択された商デジットと異なる他の2つのケース(表1の111.0及び111.1に対するエントリに対応するケース)が存在する。しかし、ここに示す商デジットの誤った選択例では、商デジットは過小予測されないうえ、部分剰余は所定の上下限内に維持される。従って、最終結果は依然正確に形成される。
【0017】
以下の表2は表1に示す従来の商選択ロジックを簡単に表した真理値表である。以下の表において、“X”はドントケア論理変数("Don't care" logic variable)を表す。1xx.xが−1の商デジットを形成する第3のケースは、予測部分剰余が111.1である場合には適用されない。この場合、第2のエントリが使用され、正しい商デジットは0になる。
【0018】
【表2】
浮動小数点演算は結果が正確であるか否かを表示するために、同結果とともにスティッキー・ビット(Sticky bit)を形成する。結果が不正確である場合、スティッキー・ビットがアサート(Assert)される。また、結果が正確である場合、スティッキー・ビットがデアサート(Deassert)される。実質的に、スティッキー・ビットは任意の下位ビットがゼロでないか否かを示す。スティッキー・ビットは米国電気電子学会754規格(IEEE Standard 754)に基づく丸めのためのガード・ビット及び丸めビットとともに使用される。これについては、1985年にニューヨークに所在する米国電気電子学会から発行された米国規格協会/米国電気電子学会標準規格(ANSI/IEEE Standard)754規格に記載されている2進浮動小数点演算のための米国電気電子学会規格を参照のこと。
【0019】
除算及び平方根演算において、スティッキー・ビットは最終部分剰余がゼロであるか否かを確認することによって決定される。所望の数の商ビットを計算した後、最終部分剰余は部分剰余として定義される。部分剰余は冗長形態であるため、桁上げ伝搬加算はゼロ検出前に実施される。図2はスティッキー・ビットを計算するための回路を示す。図2において、最終部分剰余の桁上げ部分201及び和部分202は桁上げ伝搬加算器200によって合計される。加算器200から出力される最上位ビット(Most significant bit;略してmsb)は最終部分剰余の符号ビット203である。図1に示すように、除算ハードウェアは商(即ちQ)及び商−1(即ちQ−1)を累算する。最終部分剰余が負の場合、Q−1は適切な商である。また、最終部分剰余がゼロまたは正の場合、Qは正しい商である。従って、符合ビット203は正しい商を選択すべく使用される。図2において、ゼロ検出器204は非冗長最終部分剰余205の全てのビットがゼロであるか否かを決定し、かつスティッキー・ビット206を出力する。ゼロ検出器204は59入力論理和ゲート(59-input OR gate)と論理的に等しい。
【0020】
一見して、前記の解決策は正または負の最終部分剰余の全ての可能性について適切に見える。しかし、結果が正確である希なケースでは、最終部分剰余は負の除数に等しい。表3は自身によって除される数のための除算反復を示す。ここで、PR[i]はi番目の商デジットが選択された後における部分剰余を示す。
【0021】
【表3】
被除数は常に正であり、かつ正規化されている。このため、第1の反復から得られる商デジットは1になる。これは正の正規化数がゼロの符合ビットと、1の最上位デジットとを有するという事実に基づく。1ビットだけ位置を右へシフトすることにより、正の正規化数を2で割った際に、最上位ビットは必ずゼロになる。(最上位ビットは正しい2の補数を形成する符合ビットに対して整合すべく拡大されている。このため、負の数を2で割った場合、最上位ビットは1になる。)最上位ビットがゼロである場合、表2は1の商デジットを選択すべきことを命ずる。
【0022】
表3に示す第2の反復において、部分剰余PR[1]はゼロである。このため、第2の商デジットは1になる。その後の全ての反復において、部分剰余は負の除数に等しく、−1の商デジットが選択される。最後の反復後、最終部分剰余PR[n]における符合検出は、最終部分剰余が負であることを決定し、かつQ−1を選択すべきことを表示する。事実、これは正しい結果である。しかし、この最終部分剰余はゼロではない。これは不正確な結果を誤って示すとともに、スティッキー・ビットをアサートすべきことを誤って示す。
【0023】
この問題は正確な結果を要する全ての除算演算に波及する。表2に示すように、商選択ロジックは実際にはゼロである部分剰余に対して正の値を予測し、そして同予測を後から補正すべく定義されている。基本的に、前記の問題はこの商選択ロジックの定義に起因して生じる。従来の除算器はスティッキー・ビットの計算前に負の最終部分剰余を復元するために1つのプロセッサ・サイクルを要する。正確なスティッキー・ビット計算の実現が望まれる。負の最終部分剰余を復元することなく正確なスティッキー・ビットの計算を保証する除算器の開発は効果的である。
【0024】
本発明は前述した事情に鑑みてなされたものであって、その目的は、浮動小数点除算及び平方根演算中、最終部分剰余が負の場合にスティッキー・ビットを正確、かつ効果的に計算する能力を提供することにある。本発明の別の目的は商選択規則を実行する際の待ち時間を短縮するとともに、最小限のサイズを有する最適な商選択回路及び同商選択回路を含む除算回路を提供することにある。
【0025】
【課題を解決するための手段】
本発明の課題を解決すべく、2進除算及び平方根演算における商デジットを冗長部分剰余入力に基づいて決定する商デジット選択回路であって、冗長部分剰余入力は第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビットを含み、選択された商デジットは−1商デジットに該当するマイナス出力(Minus output)と、ゼロ商デジットに該当するゼロ出力(Zero output)と、+1商デジットに該当するプラス出力(Plus output)とのうちのいづれか1つをアサートすることによって出力される商デジット選択回路において、第1和ビット、第2和ビット、第3和ビット及び第4和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビットを入力され、そして第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを出力として形成する4ビット桁上げ伝搬加算器と、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ゼロ信号を形成し、オール・ゼロ信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロの場合にのみアサートされる4ビット・ゼロ検出器と、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ワン信号を形成し、オール・ワン信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全て1の場合にのみアサートされる4ビット1検出器(Four-bit one detector)と、第5和ビット及び第5桁上げビットを入力され、そして第5ビット・ゼロ信号を形成する否定論理和ゲートと、オール・ワン信号、第5ビット・ゼロ信号及びオール・ゼロ信号を入力され、そしてゼロ出力を形成し、ゼロ出力はオール・ワン信号がアサートされるか、または第5ビット・ゼロ信号及びオール・ゼロ信号の両方がアサートされた場合にのみアサートされるゼロ回路(Zero circuit)とを含む商デジット選択回路が提供される。
【0026】
更に、前記の商デジット選択回路は第1予測部分剰余ビット、オール・ゼロ信号及び第5ビット・ゼロ信号を入力され、そしてプラス出力を形成し、前記プラス出力は第1予測部分剰余ビットがデアサートされ、かつオール・ゼロ信号または第5ビット・ゼロ信号がデアサートされた場合にのみアサートされるプラス回路(Plus circuit)を含み得る。同商デジット選択回路は第1予測部分剰余ビット及びオール・ワン信号を入力され、そしてマイナス出力を形成し、前記マイナス出力は第1予測部分剰余ビットがアサートされ、かつオール・ワン信号がデアサートされた場合にのみアサートされるマイナス回路(Minus circuit)を含み得る。4ビット・ゼロ検出器として4入力論理和ゲート(Four input OR gate)を使用可能である。また、4ビット1検出器は4入力論理積ゲート(Four input AND gate)であり得る。
【0027】
更に本発明では、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして商デジットを計算する商デジット選択回路であって、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてゼロ出力を形成する商ゼロ回路(Quotient zero circuit)と、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてプラス出力を形成する商ポジティブ回路(Quotient positive circuit)とを含む商デジット選択回路を提供する。
【0028】
前記の商デジット選択回路は第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そしてマイナス出力を形成する商ネガティブ回路(Quotient negative circuit)を含み得る。更に商デジット選択回路は、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたゼロ出力を形成する反転商ゼロ回路(Inverted quotient zero circuit)と、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたプラス出力を形成する反転商ポジティブ回路(Inverted quotient positive circuit)と、第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そして反転されたマイナス出力を形成する反転商ネガティブ回路(Inverted quotient negative circuit)とを含み得る。
【0029】
更に本発明では、被除数を第1の反復中に入力され、次いで左シフトされた部分剰余をその後の複数の反復中に入力され、そして出力として部分剰余を形成する部分剰余レジスタと、オペランド除数を第1の反復中に入力され、そして出力として除数を形成する除数レジスタと、本発明の商デジット選択回路と、部分剰余と、商デジット及び除数の否定論理積とを入力され、そして左シフトされた部分剰余を形成する加算器とを含む浮動小数点正規形仮数除算回路(Floating point normalized mantissa division circuit)を提供する。同除算回路は商デジットを累算する商レジスタを含み得る。前記の部分剰余は桁上げ部分及び和部分を有する桁上げ保留の形態で表示し得る。また、前記の加算器は桁上げ保留加算器であり得る。
【0030】
更に、2進除算及び平方根演算において商デジットを冗長部分剰余から選択する方法であって、冗長部分剰余は第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビットを含む方法において、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを形成すべく第1和ビット、第2和ビット、第3和ビット及び第4和ビットを第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビットに対して加算する工程と、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全て1である場合、または前記第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロであって、かつ第5和ビット及び第5桁上げビットの両方がゼロに等しい場合にのみ商デジットとしてゼロを選択する工程とを含む方法を提供する。
【0031】
更に、前記の商デジットを選択する方法は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロにならない状態と、第5和ビット及び第5桁上げビットが全てゼロにならない状態とのうちのいづれかにおいて、第1予測部分剰余ビットがゼロである場合にのみ商デジットとして+1を選択する工程を含み得る。また、同商デジットを選択する方法は第1予測部分剰余ビットがアサートされ、さらには第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロにならない場合にのみ商デジットとして−1を選択する工程を含み得る。
【0032】
更に本発明では、2進除算及び平方根演算における商デジットを冗長部分剰余入力に基づいて決定する商デジット選択回路を形成する方法であって、冗長部分剰余入力は第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビットを含み、選択された商デジットは−1商デジットに該当するマイナス出力と、ゼロ商デジットに該当するゼロ出力と、+1商デジットに該当するプラス出力とのうちのいづれか1つをアサートすることによって出力される方法において、第1和ビット、第2和ビット、第3和ビット及び第4和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビットを入力され、そして第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを出力として形成する4ビット桁上げ伝搬加算器を形成する工程と、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ゼロ信号を形成し、オール・ゼロ信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロの場合にのみアサートされる4ビット・ゼロ検出器を形成する工程と、第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ワン信号を形成し、オール・ワン信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全て1の場合にのみアサートされる4ビット1検出器を形成する工程と、第5和ビット及び第5桁上げビットを入力され、そして第5ビット・ゼロ信号を形成する否定論理和ゲートを形成する工程と、オール・ワン信号、第5ビット・ゼロ信号及びオール・ゼロ信号を入力され、そしてゼロ出力を形成し、前記ゼロ出力はオール・ワン信号がアサートされるか、または第5ビット・ゼロ信号及びオール・ゼロ信号の両方がアサートされた場合にのみアサートされるゼロ回路を形成する工程とを含む方法を提供する。
【0033】
前記の商デジット選択回路を形成する方法は第1予測部分剰余ビット、オール・ゼロ信号及び第5ビット・ゼロ信号を入力され、そしてプラス出力を形成し、プラス出力は第1予測部分剰余ビットがデアサートされ、かつオール・ゼロ信号または第5ビット・ゼロ信号がデアサートされた場合にのみアサートされるプラス回路を形成する工程を含み得る。商デジット選択回路は第1予測部分剰余ビット及びオール・ワン信号を入力され、そしてマイナス出力を形成し、マイナス出力は第1予測部分剰余ビットがアサートされ、かつオール・ワン信号がデアサートされた場合にのみアサートされるマイナス回路を形成する工程を含み得る。4ビット・ゼロ検出器として4入力論理和ゲートを使用可能である。また、4ビット1検出器は4入力論理積ゲートであり得る。
【0034】
更に本発明では、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして商デジットを計算する商デジット選択回路を形成する方法であって、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてゼロ出力を形成する商ゼロ回路を形成する工程と、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてプラス出力を形成する商ポジティブ回路を形成する工程とを含む方法を提供する。
【0035】
前記の商ポジティブ回路を形成する工程は第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そしてマイナス出力を形成する商ネガティブ回路を形成する工程を含み得る。
【0036】
更に、前記の商ネガティブ回路を形成する工程は第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたゼロ出力を形成する反転商ゼロ回路を形成する工程と、第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたプラス出力を形成する反転商ポジティブ回路を形成する工程と、第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そして反転されたマイナス出力を形成する反転商ネガティブ回路を形成する工程とを含み得る。
【0037】
また本発明では、被除数を第1の反復中に入力され、次いで左シフトされた部分剰余をその後の複数の反復中に入力され、そして出力として部分剰余を形成する部分剰余レジスタを形成する工程と、オペランド除数を第1の反復中に入力され、そして出力として除数を形成する除数レジスタを形成する工程と、本発明の商デジット選択回路を形成する工程と、部分剰余と、商デジット及び除数の否定論理積とを入力され、そして左シフトされた部分剰余を形成する加算器を形成する工程とを含む浮動小数点正規形仮数除算回路を形成する方法を提供する。同方法は商デジットを累算する商レジスタを形成する工程を含み得る。また、部分剰余は桁上げ部分及び和部分を有する桁上げ保留の形態で表示し得る。更に、加算器は桁上げ保留加算器であり得る。
【0038】
本発明は浮動小数点除算及び平方根演算中、最終部分剰余が負の場合にスティッキー・ビットを正確、かつ効果的に計算する能力を提供する。本発明は本発明に基づく商選択規則を最小限の待ち時間で実行するとともに、最小限のサイズを有する最適な商選択回路を提供する。
【0039】
本発明は正確な結果が得られた際に、作業中の部分剰余が負になることを防止する更に効果的な商デジット選択関数を提供する。負の部分剰余はスティッキー・ビットの計算前に復元する必要がないため、1サイクルが削減される。
【0040】
本発明に基づき、商デジット選択ロジックは負の除数に等しい部分剰余の形成を防止すべく変更される。正確な除算結果を実現する正確、かつ効果的なスティッキー・ビットの計算を行うために、負の除数に等しい負の部分剰余の形成を防止する必要がある。これを実現すべく商デジット選択関数を強化して、ハードウェアのコストの削減及び待ち時間の短縮を行い得る。このため、商デジット選択関数の強化は理想的な解決策である。予備最終部分剰余(Preliminary final partial remainder)を復元するための余分なメカニズムを提供する必要がないため、余分なハードウェアが排除される。負の予備部分剰余を復元する別のサイクル時間を必要としないため、待ち時間が短縮される。
【0041】
本発明に基づき、実際の部分剰余がゼロの際に、1の商デジットに変えてゼロの商デジットを選択すべく商デジット選択ロジックが変更される。上位4ビットがゼロである5ビットからなる予測部分剰余を使用することにより、第4の上位ビットへの可能な桁上げ伝搬が検出される。これは冗長部分剰余のうちの第5の最上位和ビット及び桁上げビットの確認により実現可能である。これら両方がゼロである場合、同ビット位置から予測部分剰余の最下位ビット位置への桁上げ伝搬は不可能であり、ゼロの商デジットが選択される。冗長部分剰余の第5の最上位桁上げビット及び和ビットのうちの少なくともいづれか一方が1である別のケースでは、1の商デジットが選択される。
【0042】
【発明の実施の形態】
浮動小数点演算において、負の最終部分剰余が生じた際にスティッキー・ビットを正確に計算すべく幾つかのオプションを検討する必要がある。最も簡単な解決策はゼロ検出を行う前に除数を加算することにより、負の最終部分剰余を復元することが挙げられる。別の桁上げ伝搬加算器を設置するために要する空間を考慮した場合、解決策は従来のハードウェアを利用する必要がある。これを実現する2つの方法を図3及び図4に示す。
【0043】
図3に示す解決策は基本的な反復工程をインプリメントする従来の桁上げ保留加算器300を利用している。通常の演算中、最終サイクル信号301はロー(Low)である。この結果、マルチプレクサ302,303は図1に関連して詳述した標準的反復工程をインプリメントすべく形成されている。しかし、最終サイクル中、最終サイクル信号301はハイ(High)であり、マルチプレクサ303はレジスタ305内に格納された部分剰余の桁上げ部分及び和部分に対して除数D304を加算すべく同除数D304を加算器300へ出力する。予備部分剰余の符号が負の場合、マルチプレクサ306は加算器300の結果を最終部分剰余フリップ・フロップ307に対して出力する。
【0044】
図4に示す解決策では、図2に示すスティッキー・ビット計算を行う従来の桁上げ伝搬加算器400を再び使用している。図1に示す反復データパス等のデータパスが所望の精度の商デジットを形成した後、冗長部分剰余の桁上げ部分PRC及び和部分PRSは最終サイクル信号がローの間にマルチプレクサ403,402へそれぞれ入力される。次いで、桁上げ伝搬加算器400は冗長部分剰余を予備非冗長最終部分剰余(Preliminary non-redundant final partial remainder)へと削減する。桁上げ伝搬加算器400の最上位出力ビット404は予備最終部分剰余の符号を示す。非冗長予備最終部分剰余はフリップ・フロップ406内へラッチされる。次いで、最終サイクル信号401がアサートされる。予備最終部分剰余が負であることを符号ビット404が示した場合、マルチプレクサ405は加算器400に対して除数を出力するマルチプレクサ402に対して同除数を出力する。その一方、マルチプレクサ403は加算器400に対する別の入力として予備非冗長部分剰余を出力する。次いで、ゼロ検出器407は復元された部分剰余を使用してスティッキー・ビットを形成する。符号ビットが負以外の部分剰余を示す場合、マルチプレクサ405は除数Dに代えてゼロを部分剰余に対して加算させる。
【0045】
図3及び図4に示す前記の2つの解決策は、予備最終部分剰余が負の際にスティッキー・ビットを計算すべく別のマルチプレクサ・ハードウェアと、別のサイクルとを要する。マルチプレクサ302は部分剰余形成クリティカル・パス(Partial remainder formation critical path)上に配置されている。このため、図3に示す解決策は基本的反復のためのサイクル時間に影響を及ぼす。更に、パイプライン・スーパースカラ・プロセッサ内の待ち時間可変命令(Variable latency instructions)は命令スケジューリング及びバイパス制御ロジックを更に複雑にするため望ましくない。従って、スティッキー・ビットを正確に計算するために除算演算の全分布のうちの僅かな部分のみが余分なサイクルを必要とする場合にも、負の予備最終部分剰余を形成しない除算命令のための余分なサイクルを削除すべくプロセッサのデザインは更に複雑になる。従って、負の部分剰余を復元する正味の効果は、全ての除算及び平方根演算を行う別の待ち時間サイクルを必要とする。
【0046】
本発明に基づき、商デジット選択ロジックは負の除数に等しい部分剰余の形成を防止するために変更される。正確な除算結果を実現するスティッキー・ビットを正確、かつ効果的に計算すべく、負の除数に等しい負の部分剰余の形成を防止する必要がある。これを実現すべく商デジット選択関数を強化することにより、ハードウェアが削減され、かつ待ち時間が短縮される。このため、同選択関数の強化は理想的な解決策である。予備最終部分剰余を復元するための余分なメカニズムを提供する必要がないため、余分なハードウェアを排除し得る。また、負の予備部分剰余を復元する別のサイクル時間を必要としないため待ち時間が短縮される。
【0047】
本発明に基づく、商デジット選択ロジックは、実際の部分剰余がゼロの際に1の商デジットに代えてゼロの商デジットを選択すべく変更される。これは2PR[i]est=000.0に対してq[i+1]=0を選択することを示唆している。しかし、商デジット選択関数は実際の部分剰余より寧ろ予測部分剰余に対して作用するため、商選択ロジックの注意深いデザインが必要である。実際には予測部分剰余は1/2未満であり得るため、更に下位の冗長部分剰余ビットの加算は実際の部分剰余の上位4ビットのうちの最下位ビット位置へ1を伝搬させる。従って、実際の部分剰余は1/2以上になる。
【0048】
実際の部分剰余が1/2(または1/2以上)である場合、除数は1/2≦D<1に限定されるため、q=1を常に選択する必要がある。実際の部分剰余が1/2より更に大きく、かつq=0が選択された場合、次の部分剰余は除数を最初に加算または減算することなく、実際の部分剰余を左側へ1ビットだけシフトすることによって得られる。この左シフトは正確な商への収束に必要な3/2の上限を越える次の実際の部分剰余を形成する。
【0049】
正確な商デジットがゼロの際に、除数が実際の部分剰余より更に大きく、さらに商デジットとして+1の値が選択された場合、このエラーは後の反復において補正可能である。しかし、予測部分剰余が000.0であって、かつ正確な商デジットが1である際に商デジットとしてゼロが選択された場合、このエラーを補正する方法はない。q=1が正しい商デジットである際にq=0が選択された場合、過小予測を補正する方法はない。結果は回復不能な誤りであり、次の部分剰余は正確な結果への収束に必要な所定の上下限の外に位置する。
【0050】
全ての部分剰余に対する2進加算の実施は予測の問題を排除する。しかし、これはSRT除算のタイミング及び空間に関する効果を無効にする。ゼロの商デジットは全ての部分剰余がゼロである際にのみ選択可能である。しかし、全ての部分剰余に対するゼロの検出は同一の理由により逆効果となる。
【0051】
前記の解決策に対する簡単な代替策としては、実際の部分剰余の上位4ビットのうちの最下位ビットへの可能な桁上げ伝搬を検出することが挙げられる。これは冗長部分剰余のうちの第5の最上位和ビット及び桁上げビット、即ちPRS,msb-4及びPRC,msb-4を確認することによって実現し得る。PRS,msb-4及びPRC,msb-4がそれぞれゼロである場合、そのビット位置から予測部分剰余の最下位ビット位置への桁上げ伝搬は不可能であり、さらにはゼロの商デジットを選択する必要がある。冗長部分剰余の第5の最上位桁上げビット及び和ビットのうちの少なくともいづれか一方が1である別のケースでは、1の商デジットを選択する必要がある。部分剰余のうちの複数の下位ビットがゼロでない場合にも、同部分剰余は所定の上下限(−5/2≦2PR≦3/2)内に存在し、かつ正しい結果が依然算出されることになる。
【0052】
予測部分剰余の計算に必要な桁上げ伝搬加算は実際の冗長部分剰余の上位4つの伝搬ビット及び和ビットに対してのみ行われる。このため、本発明に基づく計算の待ち時間に対する影響は最低限に抑制される。表4は本発明に基づく正確な商選択ロジックのための真理値表を示す。
【0053】
【表4】
図5は強化された商デジット選択関数の論理図を示す。図5において、4ビット桁上げ伝搬加算器500は実際の冗長部分剰余の桁上げ部分(2PRC[msb:msb−3])及び和部分(2PRS[msb:msb−3])の上位4ビットを入力され、そして予測非冗長部分剰余x[3:0]を形成する。オール・ゼロ検出器(All-zero detector)501は予測部分剰余x[3:0]の4ビット全てがゼロであるか否かを決定する。x[3:0]の全ビットがゼロである場合、中間信号n0がアサートされる。オール・ゼロ検出器501は4入力否定論理和ゲート(Four input NOR gate)と機能的に同じである。x[3:0]の全ビットが1である場合、中間信号n1がアサートされる。オール・ワン検出器(All-one detector)502は4入力論理積ゲートと機能的に同じである。否定論理和ゲート503は冗長部分剰余のうちの最上位の第5桁上げビット(2PRC[msb−4])及び第5和ビット(2PRS[msb−4])を入力され、そして中間信号i0を形成する。中間信号i0は2PRC[msb−4]及び2PRS[msb−4]がゼロである際にのみアサートされる。
【0054】
ランダム・ロジック504のブロックはSRT除算に基づく可能な商デジット値のうちの1つにそれぞれ該当する3つの信号(M、Z及びP)を形成する。Mは−1の商デジットに該当する。Zはゼロの商デジットに該当する。Pは+1の商デジットに該当する。Mはx[3]がデアサートされ、かつn1がデアサートされた場合にのみアサートされる。Zはn1がアサートされるか、またはi0及びn0がアサートされた場合にのみアサートされる。PはX[3]がアサートされ、n0またはi0がデアサートされた場合にのみアサートされる。各論理関係を仮定した場合、商デジット信号M、Z及びPのうちの任意の2つを同時にアサートすることは不可能である。
【0055】
図5に示すインプリメンテーションは論理的に正しい。しかし実際には、4ビット2進加算器及びその後のロジックは統合され、さらには最適化されたロジック・インプリメンテーションへの併合が可能である。図6に示すように、5段階ロジック・インプリメンテーション(Five-stage logic implementation)は空間を更に効果的に使用するとともに、出力を更に短い遅延時間を伴って形成する。
【0056】
図6に示すインプリメンテーションでは、M、Z及びPが計算されるとともに、論理反転/M、/Z及び/Pも計算される。これはデコードされた選択入力を有するCMOSマルチプレクサ内等において伝達ゲートをイネーブルするために商信号を使用する際に効果的である。M及び/Mは冗長部分剰余ビットの上位4ビット(2PRC[msb:msb−3]及び2PRS[msb:msb−3])にのみ依存する。その一方、Z、P、/Z及び/Pは全て冗長部分剰余の上位5ビット(2PRC[msb:msb−4]及び2PRS[msb:msb−4])に依存する。図6のセルは回路が占める空間の削減を第2の課題とする一方で、主に遅延を最小限に抑制すべく最適化されている。図6に示す殆どの論理は空間を削減すべく幾つかの出力計算の間において共有されている。
【0057】
本発明に基づく基数2を使用する新たな商デジット選択論理(Radix-2 quotient digit selection logic)をインプリメントするために必要な別のゲートの総数は比較的少ない。好ましい実施の形態のインプリメンテーションに関するスパイス・シミュレーション分析(Spice simulation analysis)において、商選択論理クリティカル・タイミング・パス(Quotient selection logic critical timing path)が5%未満であることが示されている。
【0058】
更に遅い商選択ロジックと、最後に行われる部分剰余復元サイクルの排除との間には、インプリメンテーションに依存するタイミング・トレードオフが存在する。僅かにより複雑な商選択論理に起因する遅延の増加がプロセッサ・サイクル時間(Processor cycle time)を制限しない場合、性能の増加は負の最終部分剰余の復元に必要とされる待ち時間サイクルの削減により常には実現される。本発明のハードウェア除算器等を含む最近のマイクロプロセッサでは、プロセッサ・サイクル時間は他のクリティカル・パスによって決定されるか、またはプロセッサを設計する前に任意で適合させ得る。商選択ロジックのうちの増大した遅延が最長パスでないケースにおいて、各除算演算あたり1サイクルの正味節約は新たな出費を伴うことなく実現し得る。
【0059】
図6に示す実施の形態において、変更された商選択ロジック・アルゴリズムは内部浮動小数点除算器クリティカル・パス(Internal floating point divider critical path)の速度を従来の商選択規則を使用して最適化された同等のクリティカル・パスより約100ps遅くする。これは2パーセント未満の速度低下に相当する。プロセッサの限界タイミング・パス(Limiting timing path)は更に長い。従って、改善された商選択ロジックはプロセッサ・サイクル時間に悪影響を及ぼさない。スティッキー検出(Sticky detection)前に部分剰余を復元するサイクルを排除する効果が実現される。
【0060】
本発明の商選択ロジックを使用しても負の最終部分剰余は依然形成され得る。しかし、負の最終部分剰余が形成された際、本発明に基づく商選択ロジックは負の部分剰余が負の除数より更に大きいことを保証する。従って、本発明に基づく負の最終部分剰余が形成された場合、Q−1が選択され、結果は必ず不正確になる。この結果、負の最終部分剰余が負の除数に等しくなる恐れを伴うことなくスティッキー・ビットを安全にアサートし得る。
【0061】
符号検出及びスティッキー・ビット計算を平行して実施する一方で、ハードウェアの節約が可能である。59ビット全加算器を使用する代わりに、59ビット符号検出加算器(59-bit sign detect adder)を使用し得る。これはタイミングを僅かに改善する一方で、主に空間の節約を実現する。ゼロ検出は冗長部分剰余を2進数へ変換する明確な加算を伴うことなく行える。
【0062】
【数4】
数式4の式において、Si及びCiはそれぞれ最終部分剰余の和の値及び桁上げ値である。次いで、スティッキー・ビットは以下の数式5に基づいて計算される。
【0063】
【数5】
この方法は59ビット桁上げ伝搬加算器の遅延に代えて3入力排他的論理和遅延(3-input XOR delay )を伴うゼロ検出器に対する入力を形成し、大きな正味節約を可能にする。
【0064】
以上、本発明を好ましい実施の形態に基づいて詳述したが、同実施の形態は例示を目的とするものであって、本発明を限定するものではない。当業者は必要に応じて本発明の実施の形態を変更することが可能であり、同変更は請求項に開示する本発明の範囲及び精神を逸脱しないものとする。例えば、図6に示す商選択ロジックの最適化された論理インプリメンテーションは各種の同等の方法を用いて設計し得る。また、図6に示す回路は標準的なCMOS伝達ゲート・マルチプレクサ(CMOS transmission gate multiplexor)に代えて、n−チャネル・パス・トランジスタ・マルチプレクサ(n-channel pass transistor multiplexor)を制御すべく商デジットの正の極性のみを計算し、論理反転の計算を削除できる。最適化された異なるインプリメンテーションは異なる技術(例:NMOS、ECL等)におけるインプリメンテーション、または同一技術に属する異なる設計規則及び設計ツールを用いたインプリメンテーションの結果である。請求項は表4に示す真理値表の全ての回路インプリメンテーションを網羅することを目的とする。従って、本発明の技術分野の当業者にとって自明な各種の変更及び修正は、本発明の精神及び範囲に属する。
【0065】
【発明の効果】
以上詳述したように、本発明によれば、浮動小数点除算及び平方根演算中、最終部分剰余が負の場合にスティッキー・ビットを正確、かつ効果的に計算し得る。更に、本発明は商選択規則を実行する際の待ち時間を短縮するとともに、最小限のサイズを有する最適な商選択回路及び同商選択回路を含む除算回路を実現するという優れた効果を発揮する。
【図面の簡単な説明】
【図1】反復SRT除算アルゴリズムをインプリメントする従来のハードウェア除算モジュールの簡単な論理図。
【図2】従来のスティッキー・ビット演算回路の簡単な論理図。
【図3】反復SRT除算アルゴリズムをインプリメントするか、または負の最終部分剰余を復元する1つのハードウェア除算モジュールの簡単な論理図。
【図4】反復SRT除算アルゴリズムをインプリメントするか、または負の最終部分剰余を復元する別のハードウェア除算モジュールの簡単な論理図。
【図5】本発明の商選択規則をインプリメントする回路の簡単な論理図。
【図6】商デジット信号及びその論理反転を形成する商選択規則をインプリメントする回路の詳細な論理図。
【符号の説明】
300…桁上げ保留加算器、301,401…最終サイクル信号、302,303,306,403,402,405…マルチプレクサ、304…除数、305…レジスタ、307,406…フリップ・フロップ、400…桁上げ伝搬加算器、404…最上位出力ビット、404…符号ビット、407…ゼロ検出器、500…4ビット桁上げ伝搬加算器、501…オール・ゼロ検出器、502…オール・ワン検出器、503…否定論理和ゲート、504…ランダム・ロジック。
Claims (27)
- 2進除算及び平方根演算における商デジットを冗長部分剰余入力に基づいて決定する商デジット選択回路であって、前記冗長部分剰余入力は第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビットを含み、前記選択された商デジットは−1商デジットに該当するマイナス出力と、ゼロ商デジットに該当するゼロ出力と、+1商デジットに該当するプラス出力とのうちのいづれか1つをアサートすることによって出力される商デジット選択回路において、
前記第1和ビット、第2和ビット、第3和ビット及び第4和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビットを入力され、そして第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを出力として形成する4ビット桁上げ伝搬加算器と、
前記第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ゼロ信号を形成し、前記オール・ゼロ信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロの場合にのみアサートされる4ビット・ゼロ検出器と、
前記第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ワン信号を形成し、前記オール・ワン信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全て1の場合にのみアサートされる4ビット1検出器と、
前記第5和ビット及び第5桁上げビットを入力され、そして第5ビット・ゼロ信号を形成する否定論理和ゲートと、
前記オール・ワン信号、第5ビット・ゼロ信号及びオール・ゼロ信号を入力され、そしてゼロ出力を形成し、前記ゼロ出力はオール・ワン信号がアサートされるか、または第5ビット・ゼロ信号及びオール・ゼロ信号の両方がアサートされた場合にのみアサートされるゼロ回路と
を含む商デジット選択回路。 - 前記第1予測部分剰余ビット、オール・ゼロ信号及び第5ビット・ゼロ信号を入力され、そしてプラス出力を形成し、前記プラス出力は第1予測部分剰余ビットがデアサートされ、かつオール・ゼロ信号または第5ビット・ゼロ信号がデアサートされた場合にのみアサートされるプラス回路を含む請求項1に記載の商デジット選択回路。
- 前記第1予測部分剰余ビット及びオール・ワン信号を入力され、そしてマイナス出力を形成し、前記マイナス出力は第1予測部分剰余ビットがアサートされ、かつオール・ワン信号がデアサートされた場合にのみアサートされるマイナス回路を含む請求項2に記載の商デジット選択回路。
- 前記4ビット・ゼロ検出器は4入力論理和ゲートである請求項1に記載の商デジット選択回路。
- 前記4ビット1検出器は4入力論理積ゲートである請求項1に記載の商デジット選択回路。
- 第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして商デジットを計算する商デジット選択回路であって、
前記第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてゼロ出力を形成する商ゼロ回路と、
前記第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてプラス出力を形成する商ポジティブ回路と
を含む商デジット選択回路。 - 前記第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そしてマイナス出力を形成する商ネガティブ回路を含む請求項6に記載の商デジット選択回路。
- 前記第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたゼロ出力を形成する反転商ゼロ回路と、
前記第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたプラス出力を形成する反転商ポジティブ回路と、
前記第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そして反転されたマイナス出力を形成する反転商ネガティブ回路と
を含む請求項7に記載の商デジット選択回路。 - 被除数を第1の反復中に入力され、次いで左シフトされた部分剰余をその後の複数の反復中に入力され、そして出力として部分剰余を形成する部分剰余レジスタと、
オペランド除数を第1の反復中に入力され、そして出力として除数を形成する除数レジスタと、
請求項7に記載の商デジット選択回路と、
前記部分剰余と、商デジット及び除数の否定論理積とを入力され、そして左シフトされた部分剰余を形成する加算器と
を含む浮動小数点正規形仮数除算回路。 - 商デジットを累算する商レジスタを含む請求項9に記載の浮動小数点正規形仮数除算回路。
- 前記部分剰余は桁上げ部分及び和部分を有する桁上げ保留の形態で表示される請求項10に記載の浮動小数点正規形仮数除算回路。
- 前記加算器は桁上げ保留加算器である請求項11に記載の浮動小数点正規形仮数除算回路。
- 2進除算及び平方根演算において商デジットを冗長部分剰余から選択する方法であって、前記冗長部分剰余は第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビットを含む方法において、
第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを形成すべく第1和ビット、第2和ビット、第3和ビット及び第4和ビットを第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビットに対して加算する工程と、
前記第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全て1である場合、または前記第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロであって、かつ第5和ビット及び第5桁上げビットの両方がゼロに等しい場合にのみ商デジットとしてゼロを選択する工程と
を含む方法。 - 前記第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロにならない状態と、第5和ビット及び第5桁上げビットが全てゼロにならない状態とのうちのいづれかにおいて、前記第1予測部分剰余ビットがゼロである場合にのみ商デジットとして+1を選択する工程を含む請求項13に記載の商デジットを選択する方法。
- 前記第1予測部分剰余ビットがアサートされ、さらには第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロにならない場合にのみ商デジットとして−1を選択する工程を含む請求項13に記載の商デジットを選択する方法。
- 2進除算及び平方根演算における商デジットを冗長部分剰余入力に基づいて決定する商デジット選択回路を形成する方法であって、前記冗長部分剰余入力は第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビットを含み、前記選択された商デジットは−1商デジットに該当するマイナス出力と、ゼロ商デジットに該当するゼロ出力と、+1商デジットに該当するプラス出力とのうちのいづれか1つをアサートすることによって出力される方法において、
前記第1和ビット、第2和ビット、第3和ビット及び第4和ビット並びに第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビットを入力され、そして第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを出力として形成する4ビット桁上げ伝搬加算器を形成する工程と、
前記第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ゼロ信号を形成し、前記オール・ゼロ信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全てゼロの場合にのみアサートされる4ビット・ゼロ検出器を形成する工程と、
前記第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットを入力され、そしてオール・ワン信号を形成し、前記オール・ワン信号は第1予測部分剰余ビット、第2予測部分剰余ビット、第3予測部分剰余ビット及び第4予測部分剰余ビットが全て1の場合にのみアサートされる4ビット1検出器を形成する工程と、
前記第5和ビット及び第5桁上げビットを入力され、そして第5ビット・ゼロ信号を形成する否定論理和ゲートを形成する工程と、
前記オール・ワン信号、第5ビット・ゼロ信号及びオール・ゼロ信号を入力され、そしてゼロ出力を形成し、前記ゼロ出力はオール・ワン信号がアサートされるか、または第5ビット・ゼロ信号及びオール・ゼロ信号の両方がアサートされた場合にのみアサートされるゼロ回路を形成する工程と
を含む方法。 - 前記第1予測部分剰余ビット、オール・ゼロ信号及び第5ビット・ゼロ信号を入力され、そしてプラス出力を形成し、前記プラス出力は第1予測部分剰余ビットがデアサートされ、かつオール・ゼロ信号または第5ビット・ゼロ信号がデアサートされた場合にのみアサートされるプラス回路を形成する工程を含む請求項16に記載の方法。
- 前記第1予測部分剰余ビット及びオール・ワン信号を入力され、そしてマイナス出力を形成し、前記マイナス出力は第1予測部分剰余ビットがアサートされ、かつオール・ワン信号がデアサートされた場合にのみアサートされるマイナス回路を形成する工程を含む請求項17に記載の方法。
- 前記4ビット・ゼロ検出器は4入力論理和ゲートである請求項16に記載の方法。
- 前記4ビット1検出器は4入力論理積ゲートである請求項16に記載の方法。
- 第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして商デジットを計算する商デジット選択回路を形成する方法であって、
前記第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてゼロ出力を形成する商ゼロ回路を形成する工程と、
前記第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そしてプラス出力を形成する商ポジティブ回路を形成する工程と
を含む方法。 - 前記第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そしてマイナス出力を形成する商ネガティブ回路を形成する工程を含む請求項21に記載の方法。
- 前記第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたゼロ出力を形成する反転商ゼロ回路を形成する工程と、
前記第1桁上げビット、第2桁上げビット、第3桁上げビット、第4桁上げビット及び第5桁上げビット並びに第1和ビット、第2和ビット、第3和ビット、第4和ビット及び第5和ビットを入力され、そして反転されたプラス出力を形成する反転商ポジティブ回路を形成する工程と、
前記第1桁上げビット、第2桁上げビット、第3桁上げビット及び第4桁上げビット並びに第1和ビット、第2和ビット、第3和ビット及び第4和ビットを入力され、そして反転されたマイナス出力を形成する反転商ネガティブ回路を形成する工程と
を含む請求項22に記載の方法。 - 被除数を第1の反復中に入力され、次いで左シフトされた部分剰余をその後の複数の反復中に入力され、そして出力として部分剰余を形成する部分剰余レジスタを形成する工程と、
オペランド除数を第1の反復中に入力され、そして出力として除数を形成する除数レジスタを形成する工程と、
請求項22に記載の商デジット選択回路を形成する工程と、
前記部分剰余と、商デジット及び除数の否定論理積とを入力され、そして左シフトされた部分剰余を形成する加算器を形成する工程と
を含む浮動小数点正規形仮数除算回路を形成する方法。 - 商デジットを累算する商レジスタを形成する工程を含む請求項24に記載の方法。
- 前記部分剰余は桁上げ部分及び和部分を有する桁上げ保留の形態で表示される請求項25に記載の方法。
- 前記加算器は桁上げ保留加算器である請求項26に記載の方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/498,397 US5787030A (en) | 1995-07-05 | 1995-07-05 | Correct and efficient sticky bit calculation for exact floating point divide/square root results |
| US08/498397 | 1995-07-05 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0934691A JPH0934691A (ja) | 1997-02-07 |
| JP3689183B2 true JP3689183B2 (ja) | 2005-08-31 |
Family
ID=23980922
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP16750896A Expired - Fee Related JP3689183B2 (ja) | 1995-07-05 | 1996-06-27 | 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US5787030A (ja) |
| JP (1) | JP3689183B2 (ja) |
| KR (1) | KR100323338B1 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI754680B (zh) * | 2016-11-03 | 2022-02-11 | 南韓商三星電子股份有限公司 | 產生起始估算值的裝置及方法、製造方法及測試方法 |
Families Citing this family (56)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5995992A (en) * | 1997-11-17 | 1999-11-30 | Bull Hn Information Systems Inc. | Conditional truncation indicator control for a decimal numeric processor employing result truncation |
| US6594681B1 (en) * | 1998-11-04 | 2003-07-15 | Sun Microsystems, Inc. | Quotient digit selection logic for floating point division/square root |
| US6732135B1 (en) * | 1999-02-01 | 2004-05-04 | Hewlett-Packard Development Company, L.P. | Method and apparatus for accumulating partial quotients in a digital processor |
| US6360241B1 (en) * | 1999-02-01 | 2002-03-19 | Compaq Information Technologies Goup, L.P. | Computer method and apparatus for division and square root operations using signed digit |
| JP2002063025A (ja) * | 2000-08-18 | 2002-02-28 | Fujitsu Ltd | 可変長データ処理用プロセッサ |
| JP3793505B2 (ja) * | 2000-09-26 | 2006-07-05 | 株式会社ルネサステクノロジ | 演算器及びそれを用いた電子回路装置 |
| US7031996B2 (en) * | 2000-11-02 | 2006-04-18 | Seagate Technology Llc | Calculating square root of binary numbers with fixed-point microprocessor |
| US6792443B2 (en) * | 2001-06-29 | 2004-09-14 | Intel Corporation | Economical on-the-fly rounding for digit-recurrence algorithms |
| EP1315080A1 (en) * | 2001-11-22 | 2003-05-28 | STMicroelectronics Limited | Circuitry for carrying out square root and division operations |
| EP1315081B1 (en) * | 2001-11-22 | 2008-05-07 | STMicroelectronics Limited | Circuitry for carrying out at least one of a square root operation and a division operation |
| EP1315079A1 (en) * | 2001-11-22 | 2003-05-28 | STMicroelectronics Limited | Circuit for calculation of division and square root with floating point numbers |
| EP1315082A1 (en) | 2001-11-22 | 2003-05-28 | STMicroelectronics Limited | Iteration circuitry for carrying out square root operation on floating point numbers |
| EP1315077A1 (en) * | 2001-11-23 | 2003-05-28 | STMicroelectronics Limited | Circuitry and method for performing floating point compare operations |
| US7127483B2 (en) * | 2001-12-26 | 2006-10-24 | Hewlett-Packard Development Company, L.P. | Method and system of a microprocessor subtraction-division floating point divider |
| EP1485904B1 (en) * | 2002-03-13 | 2012-08-29 | Dolby Laboratories Licensing Corporation | High dynamic range display devices |
| US7016930B2 (en) * | 2002-10-25 | 2006-03-21 | Arm Limited | Apparatus and method for performing operations implemented by iterative execution of a recurrence equation |
| US7139786B2 (en) | 2003-05-12 | 2006-11-21 | Sun Microsystems, Inc. | Method and apparatus for efficiently performing a square root operation |
| US7660842B2 (en) * | 2003-05-12 | 2010-02-09 | Sun Microsystems, Inc. | Method and apparatus for performing a carry-save division operation |
| US7185178B1 (en) | 2004-06-30 | 2007-02-27 | Sun Microsystems, Inc. | Fetch speculation in a multithreaded processor |
| US7478225B1 (en) | 2004-06-30 | 2009-01-13 | Sun Microsystems, Inc. | Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor |
| US7330988B2 (en) * | 2004-06-30 | 2008-02-12 | Sun Microsystems, Inc. | Method and apparatus for power throttling in a multi-thread processor |
| US7437538B1 (en) | 2004-06-30 | 2008-10-14 | Sun Microsystems, Inc. | Apparatus and method for reducing execution latency of floating point operations having special case operands |
| US7890734B2 (en) * | 2004-06-30 | 2011-02-15 | Open Computing Trust I & II | Mechanism for selecting instructions for execution in a multithreaded processor |
| US8095778B1 (en) | 2004-06-30 | 2012-01-10 | Open Computing Trust I & II | Method and system for sharing functional units of a multithreaded processor |
| US7523330B2 (en) * | 2004-06-30 | 2009-04-21 | Sun Microsystems, Inc. | Thread-based clock enabling in a multi-threaded processor |
| US7426630B1 (en) | 2004-06-30 | 2008-09-16 | Sun Microsystems, Inc. | Arbitration of window swap operations |
| US7343474B1 (en) | 2004-06-30 | 2008-03-11 | Sun Microsystems, Inc. | Minimal address state in a fine grain multithreaded processor |
| US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
| US7747771B1 (en) | 2004-06-30 | 2010-06-29 | Oracle America, Inc. | Register access protocol in a multihreaded multi-core processor |
| US7178005B1 (en) | 2004-06-30 | 2007-02-13 | Sun Microsystems, Inc. | Efficient implementation of timers in a multithreaded processor |
| US7774393B1 (en) | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
| US7373489B1 (en) | 2004-06-30 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for floating-point exception prediction and recovery |
| US7216216B1 (en) | 2004-06-30 | 2007-05-08 | Sun Microsystems, Inc. | Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window |
| US7370243B1 (en) | 2004-06-30 | 2008-05-06 | Sun Microsystems, Inc. | Precise error handling in a fine grain multithreaded multicore processor |
| US7941642B1 (en) | 2004-06-30 | 2011-05-10 | Oracle America, Inc. | Method for selecting between divide instructions associated with respective threads in a multi-threaded processor |
| US7533248B1 (en) | 2004-06-30 | 2009-05-12 | Sun Microsystems, Inc. | Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor |
| US7861063B1 (en) | 2004-06-30 | 2010-12-28 | Oracle America, Inc. | Delay slot handling in a processor |
| US8225034B1 (en) | 2004-06-30 | 2012-07-17 | Oracle America, Inc. | Hybrid instruction buffer |
| US7383403B1 (en) | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded processor |
| US7702887B1 (en) | 2004-06-30 | 2010-04-20 | Sun Microsystems, Inc. | Performance instrumentation in a fine grain multithreaded multicore processor |
| US7434000B1 (en) | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
| US7676655B2 (en) * | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore processor |
| US7353364B1 (en) | 2004-06-30 | 2008-04-01 | Sun Microsystems, Inc. | Apparatus and method for sharing a functional unit execution resource among a plurality of functional units |
| US8037250B1 (en) | 2004-12-09 | 2011-10-11 | Oracle America, Inc. | Arbitrating cache misses in a multithreaded/multi-core processor |
| JP4273071B2 (ja) * | 2004-12-15 | 2009-06-03 | エヌイーシーコンピュータテクノ株式会社 | 除算・開平演算器 |
| US7539720B2 (en) * | 2004-12-15 | 2009-05-26 | Sun Microsystems, Inc. | Low latency integer divider and integration with floating point divider and method |
| US7752250B2 (en) * | 2006-01-12 | 2010-07-06 | International Business Machines Corporation | Rounding floating point division results |
| ES2893327T3 (es) * | 2007-02-01 | 2022-02-08 | Dolby Laboratories Licensing Corp | Calibración de visualizadores que tienen luz de fondo espacialmente variable |
| US20100115494A1 (en) * | 2008-11-03 | 2010-05-06 | Gorton Jr Richard C | System for dynamic program profiling |
| US8024719B2 (en) | 2008-11-03 | 2011-09-20 | Advanced Micro Devices, Inc. | Bounded hash table sorting in a dynamic program profiling system |
| US8478948B2 (en) * | 2008-12-04 | 2013-07-02 | Oracle America, Inc. | Method and system for efficient tracing and profiling of memory accesses during program execution |
| US20100214282A1 (en) | 2009-02-24 | 2010-08-26 | Dolby Laboratories Licensing Corporation | Apparatus for providing light source modulation in dual modulator displays |
| US8452831B2 (en) * | 2009-03-31 | 2013-05-28 | Oracle America, Inc. | Apparatus and method for implementing hardware support for denormalized operands for floating-point divide operations |
| US8817875B2 (en) * | 2009-08-13 | 2014-08-26 | The Johns Hopkins University | Methods and systems to encode and decode sequences of images |
| US9086890B2 (en) | 2012-01-06 | 2015-07-21 | Oracle International Corporation | Division unit with normalization circuit and plural divide engines for receiving instructions when divide engine availability is indicated |
| US10706101B2 (en) | 2016-04-14 | 2020-07-07 | Advanced Micro Devices, Inc. | Bucketized hash tables with remap entries |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5023827A (en) * | 1988-08-18 | 1991-06-11 | Digital Equipment Corporation | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction |
| US5272660A (en) * | 1992-06-01 | 1993-12-21 | Motorola, Inc. | Method and apparatus for performing integer and floating point division using a single SRT divider in a data processor |
| US5386376A (en) * | 1992-08-31 | 1995-01-31 | Intel Corporation | Method and apparatus for overriding quotient prediction in floating point divider information processing systems |
| US5258944A (en) * | 1992-09-01 | 1993-11-02 | Cray Research, Inc. | High performance mantissa divider |
| US5357455A (en) * | 1992-10-09 | 1994-10-18 | Intel Corporation | Floating point remainder generator for a math processor |
-
1995
- 1995-07-05 US US08/498,397 patent/US5787030A/en not_active Expired - Fee Related
-
1996
- 1996-05-15 US US08/648,410 patent/US5954789A/en not_active Expired - Lifetime
- 1996-06-27 JP JP16750896A patent/JP3689183B2/ja not_active Expired - Fee Related
- 1996-07-03 KR KR1019960026783A patent/KR100323338B1/ko not_active Expired - Fee Related
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI754680B (zh) * | 2016-11-03 | 2022-02-11 | 南韓商三星電子股份有限公司 | 產生起始估算值的裝置及方法、製造方法及測試方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US5954789A (en) | 1999-09-21 |
| JPH0934691A (ja) | 1997-02-07 |
| KR970008882A (ko) | 1997-02-24 |
| US5787030A (en) | 1998-07-28 |
| KR100323338B1 (ko) | 2002-06-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3689183B2 (ja) | 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 | |
| Zhang et al. | Efficient multiple-precision floating-point fused multiply-add with mixed-precision support | |
| Obermann et al. | Division algorithms and implementations | |
| US6594681B1 (en) | Quotient digit selection logic for floating point division/square root | |
| EP0450754B1 (en) | High speed dividers | |
| US6847985B1 (en) | Floating point divide and square root processor | |
| US5696712A (en) | Three overlapped stages of radix-2 square root/division with speculative execution | |
| JP3609512B2 (ja) | 演算器 | |
| Lang et al. | A radix-10 digit-recurrence division unit: algorithm and architecture | |
| US5132925A (en) | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction | |
| US5023827A (en) | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction | |
| Bruguera | Low latency floating-point division and square root unit | |
| US8019805B1 (en) | Apparatus and method for multiple pass extended precision floating point multiplication | |
| US6941334B2 (en) | Higher precision divide and square root approximations | |
| JPH05250146A (ja) | 整数累乗処理を行なうための回路及び方法 | |
| EP0436905B1 (en) | High performance adder using carry predictions | |
| US7016930B2 (en) | Apparatus and method for performing operations implemented by iterative execution of a recurrence equation | |
| Dixit et al. | FPGA accomplishment of a 16-bit divider | |
| US6598065B1 (en) | Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal | |
| US7127483B2 (en) | Method and system of a microprocessor subtraction-division floating point divider | |
| US7660842B2 (en) | Method and apparatus for performing a carry-save division operation | |
| US6615228B1 (en) | Selection based rounding system and method for floating point operations | |
| Baesler et al. | FPGA implementation of a decimal floating-point accurate scalar product unit with a parallel fixed-point multiplier | |
| JPH04172526A (ja) | 浮動小数点除算器 | |
| US5208769A (en) | Unsigned integer multiply/divide circuit |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050428 |
|
| 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: 20050517 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050610 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |