(57)【要約】  本発明は、マイクロプロセッサの演算論理ユニット（ＡＬＵ）において、近距離処理経路（１１０）指数差を実行するための改善された技術を提供する。一つの実施形態では、近距離処理経路（１１０）減算および遠距離処理経路（１４０）減算のための別々の論理回路を有する装置（１００）が、二つの浮動小数点式オペランドの指数の二つの最下位ビットのみを使用して指数差信号を発生させて、指数差を実行する。【選択図】図１
2008510229.tif 000002
【特許請求の範囲】
【請求項１】
浮動小数点式算術演算を実行するための装置（１００）であって：
近距離処理経路（１１０）を具備し；
該近距離処理経路に対して並列の遠距離処理経路（１４０）を具備し；
第一および第二の浮動小数点式オペランドを、実質的に同時に、前記近距離処理経路（１１０）および前記遠距離処理経路（１４０）に与える入力データバス（１７０）であって、前記第一および第二の浮動小数点式オペランドの各々が符号ビット、仮数ビット、および指数ビットを含んでいる入力データバスを具備し；
前記近距離処理経路（１１０）は、前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数としての複数の指数差信号を発生し、ここでの前記近距離処理経路（１１０）は、前記指数差信号に基づいて近距離経路減算結果を発生し、
前記近距離経処理経路（１１０）は、前記第一および第二の浮動小数点式オペランドの指数差を計算し、ここでの前記近距離処理経路（１１０）は前記計算された指数差に基づいて指数差信号を発生し、
前記遠距離経処理経路（１４０）は、前記第一および第二の浮動小数点式オペランドの仮数差を計算し、ここでの前記遠距離処理経路（１４０）は、前記計算された指数差が０，１、または−１に等しくなければ、前記計算された仮数差に基づいて遠距離減算結果を発生し、
また、前記近距離処理経路（１１０）および遠距離処理経路（１４０）に結合された最終結果マルチプレクサ（１８０）であって、前記発生された指数差信号に基づいて前記遠距離経路減算結果、前記近距離経路減算結果、または標準結果の何れかを出力し、ここでの該標準結果は前記近距離処理経路（１１０）の状態または前記遠距離減算結果に基づいて選択されるマルチプレクサを具備する装置。
【請求項２】
請求項１に記載の装置であって、前記kン距離処理経路（１１０）が、下記式に基づいて、前記第一および第二の浮動小数点式オペランドの指数のパターンの関数としてＧＴ、ＬＴ、およびＥＱ指数差信号を発生し、
ＧＴ＝（ＥＸＰsame[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]） ;
ＬＴ＝（ＥＸＰsame[l] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]） ;
ＥＱ＝ ＥＸＰsame[O] ;
ここでの「〜」は反転を意味し、ＥＸＰsame[i]＝ＸＥＸＰ[i] xnor ＹＥＸＰ[i]；ＥＸＰdiffr[i]＝ＸＥＸＰ[i] xor ＹＥＸＰ[i]であり、またＧＴ、ＬＴ、およびＥＱは上記式によって発生された指数差信号である装置。
【請求項３】
請求項１に記載の装置であって、更に、
前記入力データバスから前記第一および第二の浮動小数点式オペランドを受け取り、また前記第一および第二の浮動小数点式オペランドに対応する複数の指数および仮数を与えるために、前記入力データバス（１７０）に結合された入力論理回路（１６０）を具備する装置。
【請求項４】
請求項１に記載の装置であって、前記近距離処理経路（１１０）は、前記第一および第二の浮動小数点式オペランドに関連した指数の二つの最下位ビットを使用する関数として、複数の指数差信号を発生する装置。
【請求項５】
第一および第二の浮動小数点式オペランドを受取り、ここでの第一および第二の浮動小数点式オペランドの各々は、符号ビット、仮数および指数を含むこと（２１０）と；
前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として、複数の指数差信号を発生させること（２３０）と；
前記複数の指数差信号の関数として、近距離経路減算結果を発生させること（２５０）と；
前記第一および第二の浮動小数点式オペランドに関連した二つの指数のうちの小さい方に関連した仮数をシフトさせることによって、正規化された仮数を発生させることと；
前記第一および第二の浮動小数点式オペランドの前記正規化された仮数を減算することによって、仮数差を計算すること（２４０）と；
前記第一および第二の浮動小数点式オペランドの指数を減算することによって、指数差を計算すること（２２０）と；
前記計算された仮数差に基づいて、また前記計算された指数差が１、−１または０に等しくないときに、遠距離経路減算結果を計算すること（２６０）と
前記計算された指数差の関数として、前記遠距離経路減算結果、前記近距離経路減算結果、または標準結果の何れかを選択し、前記標準結果は前記近距離経路の状態または前記遠距離経路減算結果に基づいて選択されること（２７０）
を含んでなる方法。
【請求項６】
請求項５に記載の方法であって：前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として前記複数の指数差信号を発生させること（２３０）が、
前記第一および第二の浮動小数点式オペランドの間に＋１の指数差を有することの指標が存在すれば、ＧＴ指数差信号を発生させることと；
前記第一および第二の浮動小数点式オペランドの間に−１の指数差を有することの指標が存在すれば、ＬＴ指数差信号を発生させることと；
前記第一および第二の浮動小数点式オペランドの間に０の指数差を有することの指標が存在すれば、ＥＱ指数差信号を発生させること
を含んでなる方法。
【請求項７】
請求項５に記載の方法であって：前記第一および第二の浮動小数点式の数における指数のパターンの関数として前記複数の指数差信号を発生させること（２３０）が、
次式を使用して、前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数としてのＧＴ、ＬＴ、およびＥＱ指数パターン差信号を発生させることを含んでなる方法：
ＧＴ＝（ＥＸＰsame[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]） ;
ＬＴ＝（ＥＸＰsame[l] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]） ;
ＥＱ＝ ＥＸＰsame[O]。
【請求項８】
コンピュータ処理プラットホームによりデコードされたときに、
第一および第二の浮動小数点式オペランドを受取り、ここでの第一および第二の浮動小数点式オペランドの各々は、符号ビット、仮数および指数を含むこと（２１０）と；
前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として、複数の指数差信号を発生させること（２３０）；
前記複数の指数差信号の関数として、近距離経路減算結果を発生させること（２５０）；
前記第一および第二の浮動小数点式オペランドに関連した二つの指数のうちの小さい方に関連した仮数をシフトさせることによって、正規化された仮数を発生させることと；
前記第一および第二の浮動小数点式オペランドの前記正規化された仮数を減算することによって、仮数差を計算すること（２４０）；
前記第一および第二の浮動小数点式オペランドの指数を減算することによって、指数差を計算すること（２２０）；
前記計算された仮数差に基づいて、また前記計算された指数差が１、−１または０に等しくないときに、遠距離経路減算結果を計算すること（２６０）；および
前記計算された指数差の関数として、前記遠距離経路減算結果、前記近距離経路減算結果、または標準結果の何れかを選択し、前記標準結果は前記近距離経路の状態または前記遠距離経路減算結果に基づいて選択されること（２７０）からなる方法の実行を生じる命令を有する記憶媒体を具備してなる物品。
【請求項９】
請求項８に記載の物品であって：前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として前記複数の指数差信号を発生させること（２３０）が、
前記第一および第二の浮動小数点式オペランドの指数が１、−１、または０の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に＋１の指数差を有することの指標が存在すれば、ＧＴ指数差信号を発生させることと；
前記第一および第二の浮動小数点式オペランドの指数が１、−１、または０の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に−１の指数差を有することの指標が存在すれば、ＬＴ指数差信号を発生させることと；
前記第一および第二の浮動小数点式オペランドの指数が１、−１、または０の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に０の指数差を有することの指標が存在すれば、ＥＱ指数差信号を発生させること
を含んでなる方法。
【請求項１０】
請求項８に記載の方法であって：前記第一および第二の浮動小数点式の数における指数のパターンの関数として前記複数の指数差信号を発生させること（２３０）が、
次式を使用して、前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数としてのＧＴ、ＬＴ、およびＥＱ指数パターン差信号を発生させることを含んでなる方法：
ＧＴ＝（ＥＸＰsame[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]） ;
ＬＴ＝（ＥＸＰsame[l] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]） ;
ＥＱ＝ ＥＸＰsame[O]。
【請求項１１】
コンピュータシステムであって：
プロセッサと；
前記プロセッサに結合されたメモリーであって、その中に保存されたコードを有し、該コードは、前記プロセッサによりデコードされたときに、前記プロセッサに一つの方法を実行させるメモリーとを具備し、
前記方法は、
第一および第二の浮動小数点式オペランドを受取り、ここでの第一および第二の浮動小数点式オペランドの各々は、符号ビット、仮数および指数を含むこと（２１０）と；
前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として、複数の指数差信号を発生させること（２３０）；
前記複数の指数差信号の関数として近距離経路減算結果を発生させること（２５０）；
前記第一および第二の浮動小数点式オペランドに関連した二つの指数のうちの小さい方に関連した仮数をシフトさせることによって、正規化された仮数を発生させることと；
前記第一および第二の浮動小数点式オペランドの前記正規化された仮数を減算することによって、仮数差を計算すること（２４０）；
前記第一および第二の浮動小数点式オペランドの指数を減算することによって、指数差を計算すること（２２０）；
前記計算された仮数差に基づいて、また前記計算された指数差が１、−１または０に等しくないときに、遠距離経路減算結果を計算すること（２６０）；および
前記計算された指数差および前記選択されるべき結果の状態の関数として、前記遠距離経路減算結果、前記近距離経路減算結果、または標準結果の何れかを選択し、前記標準結果は前記近距離経路の状態または前記遠距離経路減算結果に基づいて選択されること（２７０）
を含んでなるコンピュータシステム。
【請求項１２】
請求項１１に記載のシステムであって：前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として前記複数の指数差信号を発生させること（２３０）が、
前記第一および第二の浮動小数点式オペランドの指数が１、−１、または０の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に＋１の指数差を有することの指標が存在すれば、ＧＴ指数差信号を発生させることと；
前記第一および第二の浮動小数点式オペランドの指数が１、−１、または０の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に−１の指数差を有することの指標が存在すれば、ＬＴ指数差信号を発生させることと；
前記第一および第二の浮動小数点式オペランドの指数が１、−１、または０の差を有していれば、また前記第一および第二の浮動小数点式オペランドの間に０の指数差を有することの指標が存在すれば、ＥＱ指数差信号を発生させること
を含んでなるシステム。
【請求項１３】
請求項１１に記載のシステムであって：前記第一および第二の浮動小数点式の数における指数のパターンの関数として前記複数の指数差信号を発生させること（２３０）が、
次式を使用して、前記第一および第二の浮動小数点式オペランドにおける指数のパターンの関数としてのＧＴ、ＬＴ、およびＥＱ指数パターン差信号を発生させることを含んでなるシステム：
ＧＴ＝（ＥＸＰsame[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]） ;
ＬＴ＝（ＥＸＰsame[l] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]） ;
ＥＱ＝ ＥＸＰsame[O]。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサ内での浮動小数点式算術演算に関し、特に、不動小数点ユニット内における加算／減算パイプラインに関する。
【背景技術】
【０００２】
（関連出願の相互参照）
２００４年８月１３日にＳａｕｒｂｈ  Ｓｒｉｖａｓｔａｖａによって出願された、「３２／４０ビット浮動小数点式ＡＬＵ」と題する米国仮出願第６０／６０１，３８３号、および２００５年６月２１日にＳａｕｒｂｈ  Ｓｒｉｖａｓｔａｖａによって出願された、「効率的な浮動小数点式Ａｌｕのための方法および装置」と題する米国特許出願第１１／１５７６５０号に対する３５．Ｕ．Ｓ．Ｃ．１１９（ｅ）の利益を請求する。
【０００３】
一般的に、浮動小数点式オペランドは三つの要素からなっており、第一は符号ビットであり、第二は仮数ビットであり、第三は指数ビットである．例えば、３２ビットの浮動小数点式オペランドは、ＩＥＥＥ（アメリカ電気・電子通信学会）基準に従って次のように表される。
（−Ｉ）s  ×  １．Ｍ２３  ×  ２(E8-127)
…符号…        …仮数…        …指数…
【０００４】
典型的には、浮動小数点加算演算には、二つの浮動小数点式オペランドに対する算術演算が含まれる。例えば、この二つの浮動小数点式オペランドに対する算術演算には、次のステップが含まれる：
１．低い指数を有するオペランドの仮数をダウンシフトすることにより、二つの浮動小数点式オペランド（オペランド）の指数を同じにする。
２．両方のオペランドの仮数を加算し（丸め操作を伴って、または伴わずに）、加算された数を出力する。
３．加算された数がオーバーフローするときは（例えば、３２ビット加算において、加算された数が３２ビットを越えれば、加算された数はオーバーフローする）、加算された数を１ビットだけダウンシフトする。
【０００５】
上記で概略を説明した浮動小数点式加算演算は、全ダウンシフタ、加算器、および１ビットダウンシフタを必要とする。
【０００６】
同様に、浮動小数点式減算演算も、一般に二つのオペランドに対する算術演算を含んでいる。従来の技術は、遠距離処理経路および近距離処理経路と称される二つの並行処理経路を使用し、一方の処理経路の出力を減算結果として選択することによって、減算演算を行う。
【０００７】
両オペランドの指数の差が１またはゼロであるときは、近距離処理経路演算が使用される。指数の差が１または０であるから、最大１ビットのダウンシフト演算には、指数を等しくすることが必要とされる。指数を等しくした後に、シフトされた仮数が他の残りの仮数から差引かれる。このような場合に、最も重要なビット（ＭＳＢ）は、減算結果における如何なるビット位置にあってもよい。その結果、一つの完全なアップシフタは、ＭＳＢを１番目の位置に持ってくる（および指数はアップシフタに等しい量だけ減算される）ことが必要とされる。この１番目の位置は、減算された数の左側から参照される。例えば、３２ビット減算器においては、結果のＭＳＢは、３２番目のビット〜１番目のビットの間の何処であることもできる。このような場合、ＭＳＢは最高の３２番目のビット位置までアップシフトされなければならず、これは一般に、３２ビットのアップシフタを必要とする。従って、近距離処理経路減算は、一つの１ビットダウンシフタ、一つの３２ビット減算器、および３２ビットアップシフタを要求することができる。
【０００８】
遠距離処理経路操作は、両オペランドの指数間の差が１よりも大きいときに使用される。遠距離処理経路の指数差は１より大きいことができ、従って、如何なる数であることもできる。その結果、仮数をダンシフトすることによって二つのオペランドの指数を同じにするために、完全なダウンシフタが必要とされる。次いで、小さい方の入力された指数を有するオペランドの仮数が、他方のオペランドの仮数から減算される。次いで、この減算された結果は、１ビットのアップシフト演算を要求することができる。その結果、遠距離処理経路の減算演算は、完全なダンシフタ、完全な減算器、および１ビットアップシフタを必要とすることができる。例えば、３２ビット遠距離処理経路の減算は、３２ビットのダウンシフタ、３２ビットの減算器、および１ビットのアップシフタを要求することができる。
【０００９】
従って、上記の近距離処理経路の浮動小数点式減算演算は、指数減算器、または二つのオペランドの指数差を検出する他の何れかの論理回路を必要とすることができる。仮数の差が０、１、または−１であれば、近距離処理経路は減算を行う。この指数減算論理時間は、有意であることができる。この時間の間、近距離処理経路はアイドル状態のままである。即ち、それは指数差論理の結果を待つであろう。これは、上記の近距離処理経路および遠距離技術を使用するときに、全体の減算演算時間に有意に加えることができる。更に、丸め、アップシフトエラー訂正、アンダーフロー検出、およびダウンシフトされた仮数選択のような操作もまた、浮動小数点減算のために上記の遠距離操作経路および近距離操作経路技術を使用するときには、有意な量の追加の論理時間を必要とする可能性がある。
【発明の開示】
【課題を解決するための手段】
【００１０】
本発明は、指数差評価を行うための改善された技術であって、マイクロプロセッサの演算論理ユニット（ＡＬＵ）の近距離処理経路と等価な減算結果を生じるために使用できる技術を提供する。一つの実施形態では、近距離処理経路および遠距離処理経路の減算のために別の論理を有する回路が、二つの浮動小数点式オペランドの指数の二つの最下位ビットのみを使用して、近距離処理経路のための指数差信号を発生する。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態の詳細な説明においては、本開示の一部をなす添付の図面が参照され、該図面には本発明が実施される特定の実施形態の例が示される。これらの実施形態は、当業者が本発明を実施できるように充分に詳細に記述され、従って他の実施形態が活用されてよいこと、および本発明の範囲を逸脱することなく変更を加えてよいことが理解されるべきである。
【００１２】
＜近距離処理経路のための指数差を予測する改良スキーム＞
図１を参照すると、本発明の一実施形態に従うマイクロプロセッサの演算論理ユニット（ＡＬＵ）において、二つの浮動小数点式オペランドの減算を行うための並行演算を実施する装置のブロック図が示されている。図１に示すように、装置１００は、近距離処理経路１１０および遠距離処理経路１４０、入力論理回路１６０、入力データバス１７０、および最終結果マルチプレクサ１８０を含んでいる。
【００１３】
更に、図１に示すように、近距離処理経路１１０は、近距離処理経路指数コンパレータ（ＮＰＥＣ）１１２、一対の近距離処理経路減算前マルチプレクサ１１４、一対の近距離処理経路減算器１１６、近距離処理経路ＭＳＢ／キャリー発生回路（ＣＭＧ１）１１８、近距離処理経路減算結果セレクタ（ＳＲＳ）１２０、減算後近距離処理経路マルチプレクサ１２２、アップシフト予測器１２４、アップシフト誤差予測モジュール１２６、近距離処理経路減算後アップシフタ（ＮＰＰＰＳＵ）１３８．仮数アンダーフロー信号発生モジュール１３２、指数アンダーフロー信号発生モジュール１３４、および正常結果信号発生モジュール１３６を含んでいる。図１に示すように、近距離処理経路減算後アップシフタ１３８は、アップシフタ１２８およびマルチプレクサ１３０を含んでいる。
【００１４】
遠距離処理経路１４０は、遠距離処理経路指数減算器（ＦＰＥＳ）１４２、遠距離処理経路指数コンパレータ（ＦＰＥＣ）１４４、一対のダウンシフタ１４６、一対の減算前遠距離処理経路マルチプレクサ（ＰＳＦＰＭ）１４８、一対の遠距離処理経路減算器１５０、遠距離経路減算ＭＳＢ／キャリー発生回路（ＣＭＧ２）１５２、遠距離処理経路ＳＲＳ１５４、減算後遠距離処理経路マルチプレクサ１５６を含んでいる。
【００１５】
動作に際し、一つの実施形態においては、入力データバス１７０が第一および第二の浮動小数点式オペランドを受取り、これらを入力論理回路１６０に与える。次いで、該入力論理回路１６０は、第一および第二の浮動小数点式オペランドの各々に関連した符号ビット、仮数および指数を計算し、それらを、第一および第二の浮動小数点式オペランドの間の差を計算するために、近距離処理経路１１０および遠距離処理経路１４０に与える。これらの実施形態において、入力データバス１７０に結合された入力論理回路１６０は、入力データバス１７０から第一および第二の浮動小数点式オペランドを受取り、この受取った第一および第二の浮動小数点式オペランドに対応する複数の計算された指数および仮数を提供する。
【００１６】
本発明は、近距離経路指数差が０、１、または−１に等しいかどうかを計算するために、従来の技術で必要とされる時間の殆ど半分だけ、必要な時間を減少させる。加えて、この新しいスキームは、このようなＡＬＵ演算を実行する従来のスキームと比較すると、より少ないハードウエアしか必要としない。
【００１７】
第一および第二の浮動小数点式オペランドに関連した指数を受取ると、近距離処理経路１１０は複数の指数差信号を発生する。一つの実施形態において、近距離処理経路１１０は以下の方程式を使用する。これは、ＡＬＵ演算を実行するために必要な指数差信号を発生するために、指数の最下位２ビットだけが必要とされることを示している。
ＧＴ＝（ＥＸＰsame[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]） ;
ＬＴ＝（ＥＸＰsame[l] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]） ;
ＥＱ＝ ＥＸＰsame[O] ;
【００１８】
ここで、ＥＸＰsame[i]＝ＸＥＸＰ[i] xnor ＹＥＸＰ[i]；ＥＸＰdiffr[i]＝ＸＥＸＰ[i] xor ＹＥＸＰ[i]であり；またＧＴ、ＬＴ、およびＥＱは、上記式によって発生された指数差信号であり、これらは＋１、−１、および０の指数差信号に等しい。それらは、基本的にはＸＥＸＰおよびＹＥＸＰの間の差の予測であり、ここでのＸＥＸＰおよびＹＥＸＰは第一および第二の浮動小数点式オペランドの指数である。このＧＴ、ＬＴおよびＥＱ、並びに＋１、−１および０の間の同値関係は条件付きである。即ち、この同値関係は、ＸＥＸＰおよびＹＥＸＰの間の差が＋１、−１、または０に等しい時だけである。これは、何れか二つの数の間の差が＋１、−１、または０であれば、上記等式は実際の指数差を計算するために使用できることを意味している。近距離処理経路の結果は、このような場合だけ（即ち、指数差が＋１、−１、または０のとき）のために選択される。従って、選択された結果について予測された指数差結果が正しいとき、最終出力結果は正しく終了する。よって、近距離減算器１１０のための指数差は、有意に長い時間および大きなシリコン面積を要し得る現在の技術を使用するのではなく、むしろ上記式を使用して発生させることができる。
【００１９】
近距離経路計算のためにこの技術を使用することは、何れか二つの数の指数差が＋１、−１、または０に等しいときには、同じ指数差計算をもたらすであろう。他方、この結果は、何れか二つの数の指数差が＋１、−１、または０に等しくないときは異なるであろう。最終マルチプレクサは他の指数差のために近距離経路出力を取らないので、これは減算器の最終結果には影響しない。この技術を近距離経路指数差のために使用すると、より迅速な予測および条件付きの正確な差信号をもたらし、また指数差の全ての場合について同じ結果は生じない。
【００２０】
幾つかの実施形態において、ＮＰＥＣ１１２、近距離処理経路１１０は、入力論理回路１６０を介して第一および第二の浮動小数点式オペランドに関連した指数を受取ったときに、ＧＴ、ＬＴ、およびＥＱ指数差信号を発生する。
【００２１】
幾つかの実施形態では、近距離処理経路１１０におけるアップシフト予測器１２４は、次いで、両オペランドの発生した複数の指数差信号および仮数に基づいて、近距離処理経路アップシフト値を発生させる。
【００２２】
幾つかの実施形態において、一対の近距離経路の減算前マルチプレクサ１１４は、発生されたＧＴ、ＬＴ、およびＥＱ指数差信号、並びに入力論理回路１６０から受信された第一および第二の浮動小数点式オペランドの仮数に基づいて、一対の近距離処理経路正規化仮数を発生する。
【００２３】
これらの実施形態においては、一対の近距離処理経路減算器１１６、即ち、丸めを伴った一つの数および丸めを伴わない他の数を減算することにより、一対の近距離処理経路正規化仮数に基づいて一対の減算された値が発生される。次いで、ＣＭＧ１・１１８は、前記発生された一対の近距離処理経路正規化仮数および丸めモード（即ち、ＡＬＵへの入力信号）、並びに減算前マルチプレクサからの廃棄されたビットを使用して、ＭＳＢおよびキャリーを発生させる（減算前マルチプレクサは該仮数を直接渡すか、または１ビットだけダウンシフトさせ、１ビットダウンシフトの場合は、該ダウンシフトされ得た仮数からの一つのＬＳＢビットが廃棄される）。
【００２４】
これらの実施形態においても、次いで、減算後近距離処理経路マルチプレクサ１２２は、前記一対の減算された値から、選択された信号に基づいて近距離減算された値を選択する。
【００２５】
アップシフト予測器１２４は、ＧＴ、ＬＴおよびＥＱ指数差信号をＮＰＥＣ１１２から、また第一および第二の浮動小数点オペランドの仮数を入力論理回路１６０から実質的に同時に受取り、アップシフト予測信号およびエラー整合パターンを発生する。幾つかの実施形態において、アップシフト予測器１２４は、第一および第二の浮動小数点式オペランドに関連したＧＴ、ＬＴ、およびＥＱ指数差信号および仮数を受取ったときに、アップシフト予測信号およびエラー整合パターンを発生する。
【００２６】
更に、これらの実施形態において、アップシフトエラー予測モジュール１２６は、次いで、前記エラー整合パターンおよび前記近距離処理経路減算値に基づいて、予測エラー信号を発生する。前記近距離処理経路減算後アップシフタ１３８は、次いで、前記近距離処理経路減算値、前記アップシフト予測信号および前記予測エラー信号に基づいて、近距離処理経路アップシフトされた値を発生する。
【００２７】
幾つかの実施形態では、入力論理回路１６０から第一および第二の浮動小数点オペランドに関連した指数を受取ったときに、遠距離処理経路１４０は、実質的に同時に該指数を減算して、より小さい指数の仮数のために必要とされるダウンシフトの量を出力する。次いで、遠距離処理経路１４０は、第一および第二の浮動小数点式オペランドに関連した仮数のための、一対の遠距離処理経路ダウンシフトされた仮数選択信号を発生する。更に、遠距離処理経路１４０は、前記第一および第二の浮動小数点式オペランドに関連した指数に基づいて、第一および第二の医浮動小数点式オペランドに関連した仮数のための、一対の遠距離処理経路直接仮数選択信号を発生する。
【００２８】
これらの実施形態において、ＦＰＥＳ１４２は、入力論理回路１６０から第一および第二の浮動小数点式オペランドの指数を受取り、該第一および第二の浮動小数点式オペランドに関連した指数を減算して、一対の予測されたダウンシフト値を出力する。次いで、ＦＰＥＣ１４４が、第一および第二の浮動小数点式オペランドに関連した仮数のための、一対の遠距離処理経路ダウンシフトされた仮数選択信号を発生する。更に、ＦＰＥＣ１４４は、第一および第二の浮動小数点式オペランドに関連した指数に基づいて、第一および第二の浮動小数点式オペランドに関連した仮数のための一対の遠距離処理経路直接仮数選択信号を発生する。
【００２９】
これらの実施形態においても、一対のダウンシフタ１４６は、次いで、第一および第二の浮動小数点式オペランドに関連した仮数を、前記第一および第二の浮動小数点式オペランドに関連した指数に基づいてダウンシフトする。更に、一対のダウンシフタ１４６は、ダウンシフト後の仮数範囲の外にある仮数ビットを廃棄する。前記一対のダウンシフタ１４６に結合されたＰＳＦＰＭ１４８は、前記一対の遠距離処理経路ダウンシフト仮数選択信号、前記一対の遠距離処理経路直接仮数選択信号、前記第一および第二の浮動小数点式オペランドに関連した仮数、および前記一対のダウンシフトされた仮数に基づいて一対の値を選択し、一対の遠距離処理経路正規化仮数を出力する。
【００３０】
これらの実施形態では更に、前記一対の遠距離処理経路減算器１５０は、次いで、前記一対の遠距離処理経路正規化仮数に基づいて、一対の減算された値（即ち、一つは丸めを伴った減算された値、他方は丸めを伴わない値）を発生する。次に、ＣＭＧ２・１５２が、前記一対の遠距離処理経路正規化仮数を使用してＭＳＢ／キャリーを発生する。次いで、遠距離処理経路ＳＲＳ１５４が、発生されたＭＳＢ／キャリー、前記一対のダンシフタ１４６から廃棄されたビット、およびこの減算論理回路への入力である丸めモード入力値に基づいて、選択信号を発生する。
【００３１】
更にこれらの実施形態では、次に、減算後遠距離処理経路マルチプレクサ１５６が、前記選択された信号に基づいて、前記一対の減算された値から遠距離処理経路減算値を選択する。ＭＳＢがゼロであれば、遠距離処理経路マルチプレクサ１５６が該選択された遠距離処理経路減算値を調節し、１ビットアップシフトを実行する。次いで、近距離処理経路１１０が、計算された指数差に基づいて指数差信号を発生する。次いで、最終結果マルチプレクサ１８０は、発生された指数差信号および選択されるべき結果の状態に基づいて、前記遠距経路減算結果、前記近距離経路減算結果、または標準結果（指数／仮数アンダーフローの場合、標準結果は全てのゼロ指数およびゼロ仮数ビットを含み、符号ビットは１または０であることができる）の何れかを選択する。
【００３２】
幾つかの実施形態においては、最終結果マルチプレクサ１８０は、次いて、第一および第二の浮動小数点式オペランドに関連した指数を使用して指数差を計算することにより得られた入ってくる指数差に基づいて、遠距離処理経路減算値もしくは近距離処理経路減算後アップシフト値、またはアンダーフローのための標準結果の何れかを選択する。幾つかの実施形態では、最終結果マルチプレクサ１８０はまた、ＮＲＧＳＭ１３６により計算された結果の状態の結果として、前記近距離処理経路アップシフトされた値を選択する。
【００３３】
一つの実施形態において、最終結果マルチプレクサ１８０は、指数差が１、−１または０に等しく、且つ最終結果がアンダーフロー（即ち、指数／仮数アンダーフロー）を生じなかったときには、第一および第二の浮動小数点式オペランドの減算の結果として、近距離処理経路アップシフトされた値を選択する。この実施形態において、最終結果マルチプレクサ１８０は、指数差が１よりも大きく且つ最終結果がアンダーフロー条件を生じなかったときには、第一および第二の浮動小数点式オペランドの減算の結果として、遠距離処理経路アップシフトされた値を選択する。
【００３４】
図２は、本発明に従って、浮動小数点式オペランドの差を計算するための並行演算を実施する方法２００の実施例を示すフローチャートである。ステップ２１０において、当該方法２００は、第一および第二の浮動小数点式オペランドを受取る。受取られた第一および第二の浮動小数点式オペランドの各々は、符号ビット、仮数および指数を有している。ステップ２２０では、第一および第二の浮動小数点式オペランドの指数を減算することによって、指数差が計算される。
【００３５】
ステップ２３０では、第一および第二の浮動小数点式オペランドにおける指数のパターンの関数として、複数の指数差信号が発生される。幾つかの実施例においては、第一および第二の浮動小数点式オペランドの指数が１、−１または０の差を有していれば、また第一および第二の浮動小数点式オペランドの間に＋１の差を有することの指標が存在すれば、先ずＧＴ指数差信号を発生することによって複数の指数信号が計算される。第一および第二の浮動小数点式オペランドの指数が１、−１または０の差を有していれば、また第一および第二の浮動小数点式オペランドの間に−１の差を有することの指標が存在すれば、ＬＴ指数差信号が発生される。第一および第二の浮動小数点式オペランドの指数が１、−１または０の差を有していれば、更に第一および第二の浮動小数点式オペランドの間に０の差を有することの指標が存在すれば、ＥＱ指数差信号が発生される。
【００３６】
幾つかの実施形態においては、下記の式を使用して、第一および第二のオペランドにおける指数のパターンの関数としてのＧＴ、ＬＴ、およびＥＱ指数差信号を発生させることによって、複数の指数差信号が得られる。
ＧＴ＝（ＥＸＰsame[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]） ;
ＬＴ＝（ＥＸＰsame[l] and ＹＥＸＰ[O] and 〜ＸＥＸＰ[O]）または
（ＥＸＰdiffr[1] and ＸＥＸＰ[O] and 〜ＹＥＸＰ[O]） ;
ＥＱ＝ ＥＸＰsame[O] ;
【００３７】
ステップ２５０では、第一および第二のオペランドの発生された複数の指数信号および仮数の関数として、近距離経路減算結果が発生される。ステップ２４０では、第一および第二の浮動小数点式の数の仮数を減算することによって、仮数差が計算される。幾つかの実施形態では、次いで、第一および第二の浮動小数点式オペランドに関連した指数を使用して、小さい方の指数に関連した仮数が決定される。次に、前記小さい方の指数に関連した仮数をシフトさせることにより、正規化された仮数が発生される。次いで、第一および第二の浮動小数点式オペランドに関連した正規化された仮数を減算することによって、仮数差が計算される。ステップ２６０では、この計算された仮数差に基づいて、遠距離経路減算結果が計算される。幾つかの実施形態では、第一および第二の浮動小数点式オペランドに関連した指数を減算することによって、指数差が計算される。次いで、前記計算された指数差が１、−１、または０に等しくなければ、前記計算された仮数差に基づいて、遠距離経路減算結果が計算される。
【００３８】
ステップ２７０では、前記計算された指数差および選択されるべき減算結果の状態の関数として、遠距離経路減算結果、近距離経路減算結果、または標準結果が選択される。これらの実施形態において、前記近距離経路減算結果が指数または仮数アンダーフローであれば、前記標準結果が選択される。ステップ２８０では、前記選択された減算結果がＡＬＵによって出力される。
【００３９】
方法２００は、実施例において連続的に配置されるステップ２１０〜２８０を含んでいるが、本発明の他の実施形態は、複数のプロセッサ、または二以上の仮想マシンンもしくは副プロセッサとして組織された一つのプロセッサを使用して、二以上のブロックを並列に実行してもよい。更に、他の別の実施形態は、これらブロックを、関連の制御信号およびデータ信号がモジュール間でおよびモジュールを通して交信される二以上の特定の相互連結されたハードウエアモジュールとして、またはアプリケーション特異的な集積回路の一部として組込んでもよい。従って、上記例示プロセスのフロー図は、ソフトウエア、ファームウエア、および／またはハードウエア実装に適用可能である。
【００４０】
＜改良されたＭＳＢおよびキャリー発生スキーム＞
正しいデータ配列を備えた正しい減算結果を選択するためには、近距離／遠距離減算器１１０および１４０のＭＳＢ／キャリー信号が必要とされる。これらの信号は、減算結果選択論理回路ＳＲＳ１２０／１５４が適切なときに選択信号を生じることができるように、減算結果よりも実質的に早期に発生される。
【００４１】
これは、一対の減算器１１６および１５０と並列の別々のキャリー発生回路を有することによって達成される。ＭＳＢ／キャリー発生回路１１８は、キャリーを発生するだけなので、その内部回路は、完全な減算器回路よりも遥かに単純であることができ、ゲートはより少ない出力ファンアウトを有する。結果として、その内部信号は、近距離／炎距離経路減算器１１６および１５０によって発生される信号よりも有意に迅速に発生される。改善されたＭＳＢ／キャリー発生技術の動作については、上記で述べた図１を参照して更に詳細に説明する。
【００４２】
＜近距離処理経路アップシフタのためのエラー訂正信号発生＞
近距離処理経路１１０においては、減算結果のＭＳＢが、データの最終ビット位置にあることはないであろう。アップシフト予測器１２４は、必要とされるアップシフトの量を予想する。アップシフト予測器１２４は、実際にはＭＳＢが最終ビット位置の後の２０もしくは２１ビットであるときに、２０ビットのアップシフトが必要であることを予測するならば、例えば１ビットの可能なエラーと共にアップシフトの大きさを通知する。アップシフトした後に得られた仮数がＭＳＢに１を有していないならば、それは、アップシフト予測器１２４が一つ少ない予測を与えたこと、および更にもう１ビットのアップシフトが必要とされることを意味している。従って、アップシフタ（１２８）出力のＭＳＢは、１ビットアップシフタのための制御信号のように作用する。アップシフタ１２８出力のＭＳＢは、大きな選択論理回路を駆動するのに充分に強くなるようにバッファに通される。
【００４３】
このようなバッファリングに費やされる時間を節約するために、ＭＳＢは、該ビットの停止前に発生されなければならない。上記で述べた技術において、図１に示したアップシフト予測器１２４は、必要とされるアップシフトの大きさ（それは必要とされるよりも１少なくてよい）を発生するだけでなく、高レベルの１ビットおよび低レベルの残りのビット（即ち、ワン−ホット）を有するアレイＰＲＥＤ［ｎ−ｌ：０］をも発生する。該高レベルビットの位置は、予測器がＭＳＢ位置を予測する場所である。一般に、アップシフト予測器１２４の予測は、以下で概説する二つのステップにおいてアップシフト数を発生する。
１．MSB予測を支持するパターンを発生する。例えば、８ビット数については、アップシフト予測器１２４が、最後から３番目のビットとして最初の一つの位置を予測すれば、発生されるパターンは００１ｘｘｘｘｘであり、ここでのｘは０または１である。
２．上記の発生されたパターンから、前記アップシフト数を発生する。
【００４４】
追加の回路を使用してこのようなパターンを発生させ（ここでは予測された最初の非ゼロビットを指示するために、データ中の一つのビットのみが数字１を有している）、第一のパターンの出力を使用することは追加の時間を必要とせず、また上記で指示したステップ２と前記追加の回路は独立なので、新たなパターンは前記テップ２と平行して発生されることができる。以下は、アップシフト予測器１２４を使用して、８ビット仮数のために発生させることができるパターンの一つの例を示している。
【００４５】
８ビット仮数のために発生されるパターン：patt[7:0]
New_patt[7 :0]= patt[7:0]｜{0,patt[7:1]}｜…{0,0,0,0,0,0,0,patt[7]} 
PRED = New_patt[7:O]＾{0,New_patt[7:l]}
ここで、「＾」はＸＯＲ演算を示し、「｜」はＯＲ演算を示す。
上記パターンを発生させることは、アップシフト予測器１２４の如何なる追加の時間も必要としないことが分かる。
【００４６】
アップシフト予測器１２４が正しければ、ＰＲＥＤ［ｎ−１：０］における１の位置および減算結果におけるＭＳＢの位置は、下記の式に示すように一致するであろう：
Correct_prediction = ｜(PRED[n-1:O] & subtraction_result [n-1:O]); 
ここで、「＆」はＡＮＤ演算を意味する。
【００４７】
余分なアップシフト信号はアップシフタがその演算を完了するまでに準備できているであろうことの結果として、Correct_prediction信号の発生には、アップシフタよりも少ない時間を要することが分かる。
【００４８】
＜仮数アンダーフロー信号発生＞
減算結果を容認するか否かの決定は、仮数アンダーフロー信号に依存する。減算結果が０であれば、それは仮数アンダーフロー状態にあることを意味する。このような状況（仮数アンダーフロー）が生じれば、最終結果としてＩＥＥＥのような標準結果が選択され、計算された減算結果には基づかない。
【００４９】
図１に示した仮数アンダーフロー信号発生モジュール１３２を使用して仮数アンダーフロー信号を発生させるための、より迅速なスキームが開発された。仮数減算の結果が０であれば、アンダーフローが一般的に起きる。これは、望ましい減算結果がＡ−Ｂ（ＡおよびＢは第一および第二の浮動小数点オペランドに関連した正規化された仮数である）であり、且つＡ＝Ｂであるとき、または望ましい結果がＡ−Ｂ−１（丸めなし）であり且つＡ＝Ｂ＋１であるときを意味する。仮数アンダーフローモジュール（１３２）は、その分析のために減算結果を待つ代りに、減算と平行して上記の条件を決定する。更に、Ａ＝ＢおよびＡ＝Ｂ＋１の条件は、下記に示すように、前記正規化された仮数ＡおよびＢを「０，１差検出器アルゴリズム」に入力することによって検出される：
XD[n-1:0] = ({1'bO,B[n-1:1]}＾{1'bO,A[n-1:1]}＾(〜B[n-1:0]｜A[n-1:0]))；
YD[n-1:0] = ({1'b0,B[n-1:1]}＾{1'b0,A[n-1:1]}＾(〜A[n-1:0]｜B[n-1:0]))；
YDIF = &YD；
XDIF = &XD;
(A=B case:)  EQ = YDIF & XDIF；
(A=B+1 case:) GT = 〜YDIF & XDIF；
Mantissa_Underflow = select_AeqB_or_BeqA ? EQ:GT
【００５０】
＜指数アンダーフロー信号発生＞
減算結果を最終結果とするか、またはアンダーフローの特別な結果を駆除するかどうかを決定するためには、指数アンダーフロー信号発生モジュール１３４によって出力される指数アンダーフロー信号が必要とされる。先に述べたように、ＡＬＵによる減算を完了した後に、減算結果のＭＳＢが最終ビット位置の後にある可能性があり、ＩＥＥＥ適合性にするために、該減算結果をアップシフトしなければならない可能性がある。アップシフトを処理するために、指数は同じ量（仮数のアップシフトに等しい）だけ減分されなければならない。減少の大きさが指数を０または負にするならば、それは指数アンダーフローの状況にあるとみなされる。
【００５１】
従来のスキームでは、最初に元の指数からアップシフトの量が減算され、次いでその減算結果が分析されて、該減算結果が１、０または負の数であるかどうかがチェックされる。この後に、下記の式を使用して指数アンダーフローが決定される。
Exponent_underflow = (1 or 0 or negative) & (one bit upshift correction required)｜(0 or negative) & (no upshift correction is required)
【００５２】
図に示した実施形態において、１、０または負は、簡単なコンパレータ（Ｂ＞＝Ａであれば、Ａ−Ｂは０または負であろう）によって発生させることができ、１の差は、先の節に示した「０、１差検出器アルゴリズム」を使用することによって決定することができる。これは、アンダーフロー条件が如何なる減算器および結果分析器も必要とせず、それにより減算を行うために必要な合計時間が低減されることを保証するであろう。
【００５３】
＜ダウンシフトされた仮数選択信号＞
上記で述べたように、遠距離処理経路１４０には、小さい指数を有するオペランドの仮数をダウンシフトさせるために、少なくとも一つのダウンシフタが必要とされる。ここでもまた上記で述べたのと同様に、何れの指数が大きいかの決定にはかなりの時間を要する可能性があるので、時間を節約するために、「大きな指数−小さい指数」の結果に従って小さい方の指数を有する仮数がダウンシフトされ、または両方の仮数がダウンシフトされる。第二の仮数は「第一の指数−第二の指数」の結果に従ってダウンシフトされ、第一の仮数は「第二の仮数−第一の仮数」の結果に従ってダウンシフトされる。そのときまでに大きい方の指数信号が利用可能になるであろうから、ダウンシフトした後に、関連のダウンシフトされた仮数を選択することができる。第二の仮数および第一の仮数のダウンシフトが起きる時までに、並列の論理回路が何れの指数が小さいかを決定し、次いで、それに従って対応する浮動小数点式オペランドについてダンシフトされる仮数を選択する。他の浮動小数点式オペランドについて、ＡＬＵは未シフトの仮数を選択する。大きい方の指数を有する浮動小数点式オペランドについては、直接仮数選択信号は高レベルになる。小さい方の指数を有する他の浮動小数点式オペランドについては、ダウンシフトされた仮数がゼロにならないような指数差である場合にのみ、シフトされた仮数選択信号は高レベルになる。例えば、３２ビット仮数について指数差が３３であれば、ダウンシフトされた仮数はゼロになるはずである。これを達成するために、両方の選択信号は低レベルのまま残る。このような場合、ＡＮＤ−ＯＲ論理は、正規化された仮数としてゼロを渡す。これは、ゼロ充填の役割をダンシフタから仮数選択マルチプレクサへと移し、これは幾らかの時間を節約するが、シフトされた仮数選択信号を更にタイミング臨界的にする。ブロックＦＰＥＣ１４４は、新しい技術を用いてこの仕事を行い、従来のスキームに比較してより少ない時間で同じ信号を発生させる。
【００５４】
以下の式は、８ビット指数および３２ビット仮数を有するデータのための、新規な／提案されたスキームの実施を例示している。
select_shifted_B = ((expA[7:5] ＝＝expB[7:5]) and (expA[4:0] > expB[4:0]))
または
((expA[7:5]- expB[7:5] =1) and (expB[4:0] > expA[4:0]))；
select_shifted_A = ((expB[7:5] ＝＝expA[7:5]) and (expB[4:0] > expA[4:0])) 
または
((expB[7:5] - expA[7:5] =1) and (expA[4:0] > expB[4:0]))；
ここでのｅｘｐＡおよびｅｘｐＢは、第一および第二の浮動小数点式オペランドの指数である。
【００５５】
仮数アンダーフロー信号発生を参照して上記で説明したアルゴリズムは、（ｅｘｐＢ［７：５］−ｅｘｐＡ［７：５］＝１）信号および（ｅｘｐＡ［７：５］−ｅｘｐＢ［７：５］＝１）信号を発生させるために使用することができる。仮数アンダーフローの節を参照して先に述べたアルゴリズムを使用することにより、ｅｘｐＡ［７：５］＆ｅｘｐＢ［７：５］について、ＸＤＩＦおよびＹＤＩＦを発生させることができ、これは全て下記に示すような望ましい情報を与える：
(expB[7:5] - expA[7:5] = 1) ⇒ YDIF & 〜XDIF
(expA[7:5] - expB[7:5] = 1) ⇒ XDIF & 〜YDIF
【００５６】
上記の説明は例示を目的としたものであり、限定的なものではない。当業者には、他の多くの実施形態が明らかであろう。従って、本発明の範囲は、特許請求の範囲ならびにそれと均等な全範囲によって決定されるべきである。
【図面の簡単な説明】
【００５７】
【図１】図１は、本発明の主題の一実施形態に従って、ＡＬＵにおいて並列演算を実施するための装置のブロック図を示している。
【図２】図２は、図１の並列演算を実施するための、本発明の実施形態に従うフローチャートを示している。
【図１】
2008510229.tif 000003
【図２】
2008510229.tif 000004
【国際調査報告】
2008510229.tif 000005
2008510229.tif 000006