JPH0748176B2 - 浮動小数点算術演算方法及び装置 - Google Patents
浮動小数点算術演算方法及び装置Info
- Publication number
- JPH0748176B2 JPH0748176B2 JP2413158A JP41315890A JPH0748176B2 JP H0748176 B2 JPH0748176 B2 JP H0748176B2 JP 2413158 A JP2413158 A JP 2413158A JP 41315890 A JP41315890 A JP 41315890A JP H0748176 B2 JPH0748176 B2 JP H0748176B2
- Authority
- JP
- Japan
- Prior art keywords
- difference
- exponent
- low
- determining
- floating point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
【0001】
【産業上の利用分野】本発明は、データ処理システムに
おける浮動小数点算術演算を行う方法と装置に関する。
より詳細には本発明は浮動小数点数の加算と減算の算術
演算に必要な指数の減算を行う装置およびその装置を動
作させる方法に関する。大きな指数からの小さい指数の
減算は2つの浮動小数点数の小数部を加算する前に小さ
い方の浮動小数点数の小数部にある、2進点がシフトさ
れねばならない位置の数を決定するために用いられる。
おける浮動小数点算術演算を行う方法と装置に関する。
より詳細には本発明は浮動小数点数の加算と減算の算術
演算に必要な指数の減算を行う装置およびその装置を動
作させる方法に関する。大きな指数からの小さい指数の
減算は2つの浮動小数点数の小数部を加算する前に小さ
い方の浮動小数点数の小数部にある、2進点がシフトさ
れねばならない位置の数を決定するために用いられる。
【0002】
【従来技術】データ処理システムでの浮動小数点算術演
算の使用はコンピュータ技術のスタート以来共通のこと
である。浮動小数点演算ハードウェアの開発が一般にハ
ードウェア構成の簡略化または処理速度の向上を目的と
して多くの形でなされている。加算、減算、乗算および
除算の4つの演算が一般に加算と減算を含む特殊なプロ
セスサブセットを用いて行われている。例えば、乗算は
加算をくり返すことにより多くの場合行われており、除
算は減算をくり返すことで行われている。これら処理の
速度を上げるための努力はハードウェア回路、特にすべ
ての演算の最大処理速度を究極的に制限する加算回路の
設計の改善と簡略化に向けられている。除算の場合には
除算に必要な加算または減算のくり返し回数を減らすた
め、部分商計算しあるいは多数の高ビットを同時的に予
測することにより、演算速度を向上することに努力が向
けられている。
算の使用はコンピュータ技術のスタート以来共通のこと
である。浮動小数点演算ハードウェアの開発が一般にハ
ードウェア構成の簡略化または処理速度の向上を目的と
して多くの形でなされている。加算、減算、乗算および
除算の4つの演算が一般に加算と減算を含む特殊なプロ
セスサブセットを用いて行われている。例えば、乗算は
加算をくり返すことにより多くの場合行われており、除
算は減算をくり返すことで行われている。これら処理の
速度を上げるための努力はハードウェア回路、特にすべ
ての演算の最大処理速度を究極的に制限する加算回路の
設計の改善と簡略化に向けられている。除算の場合には
除算に必要な加算または減算のくり返し回数を減らすた
め、部分商計算しあるいは多数の高ビットを同時的に予
測することにより、演算速度を向上することに努力が向
けられている。
【0003】浮動小数点演算システムの実行を支配する
ための均一なルールシステムを与えるために米国規格が
開発されている。この規格はANSI/IEEEスタン
ダードNo. 754−1985であってここでもそれを組
込んでいる。浮動小数点演算システムおよびアルゴリズ
ムの設計においては、問題を他の異るコンピュータシス
テムを用いて解くことが出来るとしても、そのようなシ
ステムおよびアルゴリズムのユーザが計算と問題の解答
に一致を得ることが出来るようにするためにこのスタン
ダードと一致する結果を達成することが主目的である。
このスタンダードは基本的および拡張された浮動小数点
数フォーマット、算術演算、整数部と小数部フォーマッ
ト間の変換、異る浮動小数点フォーマット間の変換、基
本フォーマットの浮動小数点数と10進ストリング間の
変換および浮動小数点の例外の処理を特定する。
ための均一なルールシステムを与えるために米国規格が
開発されている。この規格はANSI/IEEEスタン
ダードNo. 754−1985であってここでもそれを組
込んでいる。浮動小数点演算システムおよびアルゴリズ
ムの設計においては、問題を他の異るコンピュータシス
テムを用いて解くことが出来るとしても、そのようなシ
ステムおよびアルゴリズムのユーザが計算と問題の解答
に一致を得ることが出来るようにするためにこのスタン
ダードと一致する結果を達成することが主目的である。
このスタンダードは基本的および拡張された浮動小数点
数フォーマット、算術演算、整数部と小数部フォーマッ
ト間の変換、異る浮動小数点フォーマット間の変換、基
本フォーマットの浮動小数点数と10進ストリング間の
変換および浮動小数点の例外の処理を特定する。
【0004】より一般的には浮動小数点演算はIEEE
スタンダードにより定められているように単精度または
倍精度フォーマットで行われる。これらフォーマットは
符号、指数および小数部フィールドを利用し、夫々のフ
ィールドが浮動小数点数の予め限定された部分を占め
る。32ビット単精度数の場合には符号フィールドは最
大桁位置を占める単一ビットであり、指数フィールドは
次の8桁を占める8ビット量であり、小数部フィールド
は下23ビット位置を占める。倍精度浮動小数点数の場
合には符号フィールドは最大桁位置を占める単一ビット
であり指数フィールドは次の11桁を占める11ビット
フィールドであり、小数部は下位52ビット位置を占め
る52ビットフィールドである。指数フィールドと小数
部フィールドについての他のフォーマットが使用可能で
あり、多くはアプリケーションの要求により開発されう
る。
スタンダードにより定められているように単精度または
倍精度フォーマットで行われる。これらフォーマットは
符号、指数および小数部フィールドを利用し、夫々のフ
ィールドが浮動小数点数の予め限定された部分を占め
る。32ビット単精度数の場合には符号フィールドは最
大桁位置を占める単一ビットであり、指数フィールドは
次の8桁を占める8ビット量であり、小数部フィールド
は下23ビット位置を占める。倍精度浮動小数点数の場
合には符号フィールドは最大桁位置を占める単一ビット
であり指数フィールドは次の11桁を占める11ビット
フィールドであり、小数部は下位52ビット位置を占め
る52ビットフィールドである。指数フィールドと小数
部フィールドについての他のフォーマットが使用可能で
あり、多くはアプリケーションの要求により開発されう
る。
【0005】
【発明が解決しようとする課題】これまで2つの指数間
の差は特定の浮動小数点フォーマットに必要な同一の幅
をもつ加算器を用いて見い出されていた。例えば、倍精
度フォーマットの2個の浮動小数点数の指数間の差を見
い出すには11ビット幅の加算器が必要であった。これ
ら加算器は一般に、一方の指数から他方の指数を減算す
るに必要な時間が行われている全算術演算の総合速度に
直接影響することを意味するクリティカルパスによる。
その結果、指数の差を得る際に必要な時間は全算術演算
速度を向上させる。
の差は特定の浮動小数点フォーマットに必要な同一の幅
をもつ加算器を用いて見い出されていた。例えば、倍精
度フォーマットの2個の浮動小数点数の指数間の差を見
い出すには11ビット幅の加算器が必要であった。これ
ら加算器は一般に、一方の指数から他方の指数を減算す
るに必要な時間が行われている全算術演算の総合速度に
直接影響することを意味するクリティカルパスによる。
その結果、指数の差を得る際に必要な時間は全算術演算
速度を向上させる。
【0006】加算器の速度を低下させる演算の一つは桁
上げが夫々のビットについて伝ぱんするときである。桁
上げを幅の広い加算器にわたり伝ぱんさせるに必要な時
間は幅の狭い加算器について必要なものより長くなる。
2つの指数の差の決定速度を上げる一つの方法は特定の
浮動小数点フォーマットにより示されるビット幅より小
さい加算器を用いることである。
上げが夫々のビットについて伝ぱんするときである。桁
上げを幅の広い加算器にわたり伝ぱんさせるに必要な時
間は幅の狭い加算器について必要なものより長くなる。
2つの指数の差の決定速度を上げる一つの方法は特定の
浮動小数点フォーマットにより示されるビット幅より小
さい加算器を用いることである。
【0007】本発明の主目的は浮動小数点算術演算につ
いて所望のフォーマットを用いることの出来る装置およ
び方法を提供することである。
いて所望のフォーマットを用いることの出来る装置およ
び方法を提供することである。
【0008】本発明の他の目的は浮動小数点算術演算を
行うに必要な時間量を減少させることによりこれまでよ
りも短い時間でそれら演算を行う装置および方法を提供
することである。
行うに必要な時間量を減少させることによりこれまでよ
りも短い時間でそれら演算を行う装置および方法を提供
することである。
【0009】本発明の他の目的は2つの浮動小数点数を
加算そして減算するための装置および方法を提供するこ
とである。詳細に述べると、本発明の目的は一方の数の
指数フィールドから他方の数の指数フィールドを減算し
てそれら2数の内の一方における2進小数点のシフトを
決定して処理時間を短縮させつつ2数の加算または減算
を可能にする装置および方法を提供することである。
加算そして減算するための装置および方法を提供するこ
とである。詳細に述べると、本発明の目的は一方の数の
指数フィールドから他方の数の指数フィールドを減算し
てそれら2数の内の一方における2進小数点のシフトを
決定して処理時間を短縮させつつ2数の加算または減算
を可能にする装置および方法を提供することである。
【0010】
【課題を解決するための手段および作用】本発明は浮動
小数点加算および減算を処理するための装置の指数加算
器内の2個の指数間の差を決定するための方法と装置を
含む。2つの浮動小数点数を加算するとき、それら2数
の指数部分はそれらの小数部を加算する前に等しくなっ
ていなければならない。本発明によれば各指数は高位部
分と低位部分に分けられる。低位部分は表示しうる最高
数が選ばれたフォーマット内の小数部分に与えられる数
のビットにより大または等しくなるように選ばれる。2
数の指数間の差は低位部分間の差と高位部分間の差を並
列に得ることにより得られる。指数の低位部分間の差
は、高位部分間の差が或る結果を有するとき全指数間の
適正な差を与える。指数の高位部分間の差の決定から他
の結果が得られる場合には、大きい方の数に小さい方の
数を加算すると大きい数が得られるのであり、その理由
は2つの小数部を整合させるに必要なシフトが非常に大
きくなるために2数の小数部は重ならないからである。
或る結果が指数の高位部分間の差として得られる場合に
はこれらの結果は指数の低位部分間の適正な差を選ぶた
めに用いられる。
小数点加算および減算を処理するための装置の指数加算
器内の2個の指数間の差を決定するための方法と装置を
含む。2つの浮動小数点数を加算するとき、それら2数
の指数部分はそれらの小数部を加算する前に等しくなっ
ていなければならない。本発明によれば各指数は高位部
分と低位部分に分けられる。低位部分は表示しうる最高
数が選ばれたフォーマット内の小数部分に与えられる数
のビットにより大または等しくなるように選ばれる。2
数の指数間の差は低位部分間の差と高位部分間の差を並
列に得ることにより得られる。指数の低位部分間の差
は、高位部分間の差が或る結果を有するとき全指数間の
適正な差を与える。指数の高位部分間の差の決定から他
の結果が得られる場合には、大きい方の数に小さい方の
数を加算すると大きい数が得られるのであり、その理由
は2つの小数部を整合させるに必要なシフトが非常に大
きくなるために2数の小数部は重ならないからである。
或る結果が指数の高位部分間の差として得られる場合に
はこれらの結果は指数の低位部分間の適正な差を選ぶた
めに用いられる。
【0011】
【実施例】図1は本発明に関連して使用可能な浮動小数
点算術回路10のブロック図の一例を示す。浮動小数点
算術の実行は、適正な結果を決定するために行われねば
ならない特定のアルゴリズムの故にそのような回路を利
用する。この回路は浮動小数点数が特定のフォーマット
すなわち最大桁ビットが浮動小数点の符号を表わし、そ
れ以降の桁ビットが指数を表わし、残りのビットが小数
部の値を表わすフォーマットに従って予めアレンジされ
ているものと仮定しており、小数部の値は2進小数点が
この小数部の値の最左端に置かれるものと仮定してい
る。数のサイズが32ビットである単精度計算を利用す
る浮動小数点算術演算の場合には、符号ビットはビット
0であり、指数ビットは1−8であり小数部値ビットが
9−31であるとする。浮動小数点演算が倍精度数を用
いて行われる場合には符号ビットがビット0、指数ビッ
トが1−11そして小数部値ビットが12−63である
とする。これらビットに加えて、図1に関連するハード
ウェアレジスタおよびロジックが更に4ビットを含み、
Iビットが小数部フィールドの最大桁位置を占め、G、
RおよびSビットが夫々小数部フィールドの下位ビット
位置を占める。
点算術回路10のブロック図の一例を示す。浮動小数点
算術の実行は、適正な結果を決定するために行われねば
ならない特定のアルゴリズムの故にそのような回路を利
用する。この回路は浮動小数点数が特定のフォーマット
すなわち最大桁ビットが浮動小数点の符号を表わし、そ
れ以降の桁ビットが指数を表わし、残りのビットが小数
部の値を表わすフォーマットに従って予めアレンジされ
ているものと仮定しており、小数部の値は2進小数点が
この小数部の値の最左端に置かれるものと仮定してい
る。数のサイズが32ビットである単精度計算を利用す
る浮動小数点算術演算の場合には、符号ビットはビット
0であり、指数ビットは1−8であり小数部値ビットが
9−31であるとする。浮動小数点演算が倍精度数を用
いて行われる場合には符号ビットがビット0、指数ビッ
トが1−11そして小数部値ビットが12−63である
とする。これらビットに加えて、図1に関連するハード
ウェアレジスタおよびロジックが更に4ビットを含み、
Iビットが小数部フィールドの最大桁位置を占め、G、
RおよびSビットが夫々小数部フィールドの下位ビット
位置を占める。
【0012】浮動小数点オペランドはそれらの指数が等
しくないかぎり互いに加算あるいは減算出来ない。これ
には、それら指数の比較が必要であり、小さい指数をも
つオペランド小数部は指数の差だけ右にシフトしなけれ
ばならない。これら小数部は次に結果の指数としての大
きい指数をもつものと加算または減算しうる。浮動小数
点オペランドの乗算には指数の加算と小数部の乗算が必
要である。浮動小数点オペランドの除算には除数の指数
の被除数の指数からの減算と被除数小数部の除数小数部
による除算が必要である。
しくないかぎり互いに加算あるいは減算出来ない。これ
には、それら指数の比較が必要であり、小さい指数をも
つオペランド小数部は指数の差だけ右にシフトしなけれ
ばならない。これら小数部は次に結果の指数としての大
きい指数をもつものと加算または減算しうる。浮動小数
点オペランドの乗算には指数の加算と小数部の乗算が必
要である。浮動小数点オペランドの除算には除数の指数
の被除数の指数からの減算と被除数小数部の除数小数部
による除算が必要である。
【0013】図1の浮動小数点算術回路は単精度および
倍精度の演算を行う。これは浮動小数点加算または減算
をサポートするようにされる。本発明は他の浮動小数点
フォーマットを用いる回路でも有効であることに注意さ
れたい。
倍精度の演算を行う。これは浮動小数点加算または減算
をサポートするようにされる。本発明は他の浮動小数点
フォーマットを用いる回路でも有効であることに注意さ
れたい。
【0014】図1の回路はデータ処理システム等のよう
な他のソースからのデータを受けて伝送する記憶データ
バス12を利用する。データ記憶バス12を介して受け
た情報は複数の浮動小数点レジスタ14に伝送されう
る。レジスタ14はその情報をFAレジスタ16、FB
レジスタ18またはFCレジスタ22に送ることが出来
る。FAレジスタ16も情報を浮動小数点レジスタ14
にもどすことが出来る。
な他のソースからのデータを受けて伝送する記憶データ
バス12を利用する。データ記憶バス12を介して受け
た情報は複数の浮動小数点レジスタ14に伝送されう
る。レジスタ14はその情報をFAレジスタ16、FB
レジスタ18またはFCレジスタ22に送ることが出来
る。FAレジスタ16も情報を浮動小数点レジスタ14
にもどすことが出来る。
【0015】FAレジスタ16はレジスタ14からのデ
ータについての宛先レジスタでありまたレジスタ14に
送られているデータについてのソースレジスタでもあ
る。FAレジスタ16は記憶データバス12を介してメ
モリに移しうるデータ用のソースレジスタでもあり、こ
れはまた桁上伝ぱん加算器30、指数加算器20および
正規化−繰上げ回路34からのデータについては宛先レ
ジスタである。FAレジスタ16は加算、減算、比較、
乗算および除算オペランドについての第2オペランドを
含む。FAレジスタ16は浮動小数点数の指数を保持す
る部分16aとその小数部を保持する部分16bを有す
る。
ータについての宛先レジスタでありまたレジスタ14に
送られているデータについてのソースレジスタでもあ
る。FAレジスタ16は記憶データバス12を介してメ
モリに移しうるデータ用のソースレジスタでもあり、こ
れはまた桁上伝ぱん加算器30、指数加算器20および
正規化−繰上げ回路34からのデータについては宛先レ
ジスタである。FAレジスタ16は加算、減算、比較、
乗算および除算オペランドについての第2オペランドを
含む。FAレジスタ16は浮動小数点数の指数を保持す
る部分16aとその小数部を保持する部分16bを有す
る。
【0016】FAレジスタ16への複数の入力の内のそ
のレジスタにゲートされるべきものを選択的に制御する
ために、FAレジスタは入力マルチプレクサ回路15を
有する。回路15は活性化信号Aの制御によりレジスタ
16への種々の入力の選択的ゲートを行うためのもので
ある。浮動小数点演算回路10内の他のレジスタも同様
なマルチプレクサ入力制御を有する。
のレジスタにゲートされるべきものを選択的に制御する
ために、FAレジスタは入力マルチプレクサ回路15を
有する。回路15は活性化信号Aの制御によりレジスタ
16への種々の入力の選択的ゲートを行うためのもので
ある。浮動小数点演算回路10内の他のレジスタも同様
なマルチプレクサ入力制御を有する。
【0017】制御ロジック回路11は回路10内でのデ
ータ交換と処理動作に必要なすべての活性化信号を発生
する。制御ロジック回路11は複数の制御信号出力Aを
有し、その夫々が種々の回路およびレジスタへの制御入
力として作用する。制御ロジック回路11並びに回路1
0の動作に必要な活性化信号Aの要件と設計は当業者に
は明らかである。従ってこれら回路および信号の詳細は
説明しない。
ータ交換と処理動作に必要なすべての活性化信号を発生
する。制御ロジック回路11は複数の制御信号出力Aを
有し、その夫々が種々の回路およびレジスタへの制御入
力として作用する。制御ロジック回路11並びに回路1
0の動作に必要な活性化信号Aの要件と設計は当業者に
は明らかである。従ってこれら回路および信号の詳細は
説明しない。
【0018】FBレジスタ18は記憶データバス12、
浮動小数点レジスタ14からのデータについては宛先レ
ジスタであり、また桁上げ伝ぱん加算器30と正規化−
繰上げ回路34からのデータについての宛先レジスタで
もある。その出力はマルチセレクタ24、プレアライナ
回路26および指数加算器20に接続する。FBレジス
タは加算、減算、比較および除算のための第1オペラン
ドを含むように用いられそしてまた加算、減算および乗
算の中間結果を含む。FBレジスタ18は浮動小数点数
の指数値を含むための部分18aとその小数点部を含む
ための部分18bを有し、更に制御ロジック回路11か
らの活性化信号の制御によりレジスタへのデータをゲー
トするための入力マルチプレクサ回路17を有する。
浮動小数点レジスタ14からのデータについては宛先レ
ジスタであり、また桁上げ伝ぱん加算器30と正規化−
繰上げ回路34からのデータについての宛先レジスタで
もある。その出力はマルチセレクタ24、プレアライナ
回路26および指数加算器20に接続する。FBレジス
タは加算、減算、比較および除算のための第1オペラン
ドを含むように用いられそしてまた加算、減算および乗
算の中間結果を含む。FBレジスタ18は浮動小数点数
の指数値を含むための部分18aとその小数点部を含む
ための部分18bを有し、更に制御ロジック回路11か
らの活性化信号の制御によりレジスタへのデータをゲー
トするための入力マルチプレクサ回路17を有する。
【0019】FCレジスタ22はメモリから記憶データ
バス12を介して入るデータの宛先レジスタであり、桁
上げ−伝ぱん加算器30と正規化−繰上げ回路34から
のデータの宛先レジスタである。これはまた浮動小数点
レジスタ14からの宛先レジスタである。FCレジスタ
22の出力はマルチプレクサ24、プレアライナ26お
よび正規化−繰上げ回路34に接続する。FCレジスタ
22では乗算の第1オペランドを含み、そして除算結果
についての宛先レジスタである。入力マルチプレクサ回
路21はFCレジスタ22へのデータのゲートを制御ロ
ジック回路11からの活性化信号の制御により制御す
る。
バス12を介して入るデータの宛先レジスタであり、桁
上げ−伝ぱん加算器30と正規化−繰上げ回路34から
のデータの宛先レジスタである。これはまた浮動小数点
レジスタ14からの宛先レジスタである。FCレジスタ
22の出力はマルチプレクサ24、プレアライナ26お
よび正規化−繰上げ回路34に接続する。FCレジスタ
22では乗算の第1オペランドを含み、そして除算結果
についての宛先レジスタである。入力マルチプレクサ回
路21はFCレジスタ22へのデータのゲートを制御ロ
ジック回路11からの活性化信号の制御により制御す
る。
【0020】プレアライナ回路26は加算および減算用
の小さい方の指数をもつ小数部をプレシフトするために
用いられるものであり、これは加算または減算前に浮動
小数点オペランドの指数を等しくするために必要であ
る。プレアライナ回路26は浮動小数点について選ばれ
たフォーマットにより要求される位置だけ0から右に浮
動小数点小数部をシフトする能力を有する。倍精度演算
が行われているとすれば、このプレアライナは0−55
ビット位置のシフトを行うことが出来る。プレアライナ
26の出力は桁上−伝ぱん加算器30とFCレジスタ2
2に接続する。
の小さい方の指数をもつ小数部をプレシフトするために
用いられるものであり、これは加算または減算前に浮動
小数点オペランドの指数を等しくするために必要であ
る。プレアライナ回路26は浮動小数点について選ばれ
たフォーマットにより要求される位置だけ0から右に浮
動小数点小数部をシフトする能力を有する。倍精度演算
が行われているとすれば、このプレアライナは0−55
ビット位置のシフトを行うことが出来る。プレアライナ
26の出力は桁上−伝ぱん加算器30とFCレジスタ2
2に接続する。
【0021】マルチプルセレクタ24は乗算用の被乗数
の倍数および除算用の除数の倍数を発生するロジック回
路である。除算については、これら倍数は被除数または
部分被乗数および除数を高次ビットからデコードされ
る。オペランドの補数が必要なときにこのセレクタによ
り発生される。マルチプルセレクタ24はFAレジスタ
16、FBレジスタ18およびFCレジスタ22からデ
ータを受ける。セレクタ24の出力は桁上−セーブ加算
ツリー28に接続する。
の倍数および除算用の除数の倍数を発生するロジック回
路である。除算については、これら倍数は被除数または
部分被乗数および除数を高次ビットからデコードされ
る。オペランドの補数が必要なときにこのセレクタによ
り発生される。マルチプルセレクタ24はFAレジスタ
16、FBレジスタ18およびFCレジスタ22からデ
ータを受ける。セレクタ24の出力は桁上−セーブ加算
ツリー28に接続する。
【0022】桁上−セーブ加算ツリー28は同時に3個
のオペランドを加算しうるようにする。これにより1回
のくり返しにつき2個の商ビットを発生する除算アルゴ
リズムの使用が可能となる。桁上−セーブ加算ツリー2
8はマルチプルセレクタ24からデータを受けそして桁
上−伝ぱん加算器30にデータを送る。
のオペランドを加算しうるようにする。これにより1回
のくり返しにつき2個の商ビットを発生する除算アルゴ
リズムの使用が可能となる。桁上−セーブ加算ツリー2
8はマルチプルセレクタ24からデータを受けそして桁
上−伝ぱん加算器30にデータを送る。
【0023】桁上−伝ぱん加算器30は57ビット加算
器であり、乗算の部分積または除去の部分被除数を発生
するための入力を桁上−セーブ加算器28から受ける。
桁上−伝ぱん加算回路30はプレアライナ回路26、F
Aレジスタ16およびFBレジスタ18から入力を受け
る。この回路30の出力はFAレジスタ16とFBレジ
スタ18に接続する。入力マルチプレクサ回路29は制
御ロジック回路11からの活性化信号Aの制御により回
路30へのデータのゲートを制御する。
器であり、乗算の部分積または除去の部分被除数を発生
するための入力を桁上−セーブ加算器28から受ける。
桁上−伝ぱん加算回路30はプレアライナ回路26、F
Aレジスタ16およびFBレジスタ18から入力を受け
る。この回路30の出力はFAレジスタ16とFBレジ
スタ18に接続する。入力マルチプレクサ回路29は制
御ロジック回路11からの活性化信号Aの制御により回
路30へのデータのゲートを制御する。
【0024】正規化−繰上げ回路34は浮動小数点演算
の結果を正規化するために用いられる正規化回路34a
を有する。例えば、乗算の結果は小数部の正規化のため
に1ビット左へのシフトを必要とすることがあり、加算
または減算では54ビット位置までの左シフトを必要と
することがある。正規化−繰上げ回路34はまた繰上げ
回路34bを有し、これは、結果が下位ビット位置で1
だけ増加されるべき場合の或る繰り上げ操作に用いるイ
ンクレメンタ回路を含む。
の結果を正規化するために用いられる正規化回路34a
を有する。例えば、乗算の結果は小数部の正規化のため
に1ビット左へのシフトを必要とすることがあり、加算
または減算では54ビット位置までの左シフトを必要と
することがある。正規化−繰上げ回路34はまた繰上げ
回路34bを有し、これは、結果が下位ビット位置で1
だけ増加されるべき場合の或る繰り上げ操作に用いるイ
ンクレメンタ回路を含む。
【0025】図2は従来の指数加算器または減算器20
に用いられる装置を原理的に示している。従来の指数減
算器は一般に2個の加算器40,42からなる。各加算
器は浮動小数点数を表わすために用いられる特定のフォ
ーマットにより指定された指数ビット幅に等しいビット
幅を有している。例えば、倍精度浮動小数点では11ビ
ットの加算器が用いられており、その理由はそのフォー
マットでは数の指数部に11ビットが当てられているか
らである。これより大きな加算器が指数の減算に必要な
場合には浮動小数点数の指数部に対し付加的なビットを
与える他のフォーマットがある。
に用いられる装置を原理的に示している。従来の指数減
算器は一般に2個の加算器40,42からなる。各加算
器は浮動小数点数を表わすために用いられる特定のフォ
ーマットにより指定された指数ビット幅に等しいビット
幅を有している。例えば、倍精度浮動小数点では11ビ
ットの加算器が用いられており、その理由はそのフォー
マットでは数の指数部に11ビットが当てられているか
らである。これより大きな加算器が指数の減算に必要な
場合には浮動小数点数の指数部に対し付加的なビットを
与える他のフォーマットがある。
【0026】基本的には第1指数および第2指数の2の
補数が加算器40で加算され、第2指数と第1指数の2
の補数が加算器42で加算される。これら指数の一方の
2の補数を他の指数に加算することにより、これら2個
の指数の差が得られる。これら2回の演算は並列に行わ
れる。夫々の差の符号または桁上げは大きい指数から減
算される小さい指数を表わす差を選ぶことが出来るよう
にそのときチェックされる。この差が決定されてしまう
と、指数の小さい方の数の小数部が、これら指数間の差
によりきまる数の位置だけ右にシフトされる。
補数が加算器40で加算され、第2指数と第1指数の2
の補数が加算器42で加算される。これら指数の一方の
2の補数を他の指数に加算することにより、これら2個
の指数の差が得られる。これら2回の演算は並列に行わ
れる。夫々の差の符号または桁上げは大きい指数から減
算される小さい指数を表わす差を選ぶことが出来るよう
にそのときチェックされる。この差が決定されてしまう
と、指数の小さい方の数の小数部が、これら指数間の差
によりきまる数の位置だけ右にシフトされる。
【0027】指数の減算器における桁上げの伝ぱんは指
数間の差をきめる全プロセスの速度を低下させ、これが
浮動小数点加算または減算における演算プロセスの速度
を低下させる。前述のように指数に11ビットを与える
倍精度フォーマットよりも指数により多いビットを与え
る浮動小数点フォーマットがある。特定のフォーマット
において指数部分に与えられるビットの数が大きい程よ
り幅の大きい加算器を指数の差の決定に必要としそして
桁上げがより多数のビットにわたり伝ぱんするから、桁
上げによる遅れが大きくなる。
数間の差をきめる全プロセスの速度を低下させ、これが
浮動小数点加算または減算における演算プロセスの速度
を低下させる。前述のように指数に11ビットを与える
倍精度フォーマットよりも指数により多いビットを与え
る浮動小数点フォーマットがある。特定のフォーマット
において指数部分に与えられるビットの数が大きい程よ
り幅の大きい加算器を指数の差の決定に必要としそして
桁上げがより多数のビットにわたり伝ぱんするから、桁
上げによる遅れが大きくなる。
【0028】次に図3により2つの指数間の差を決定す
るための本発明の主題である装置50を説明する。これ
ら指数をAとBで示す。指数Aは2つの部分、すなわち
高位部分52と低位部分54に分けられる。低位部分5
4は或る数の下位桁ビットを表わす。高位部分52はあ
る数のそれより上位の桁のビットを表わす。図3のAH
は指数Aの高位部分52、ALは指数Aの低位部分54
を示す。同様に指数Bも高位部分56と低位部分58に
分けられ、BHは指数Bの高位部分に関連するビット
を、BLは指数Bの低位部分に関連するビットを示す。
るための本発明の主題である装置50を説明する。これ
ら指数をAとBで示す。指数Aは2つの部分、すなわち
高位部分52と低位部分54に分けられる。低位部分5
4は或る数の下位桁ビットを表わす。高位部分52はあ
る数のそれより上位の桁のビットを表わす。図3のAH
は指数Aの高位部分52、ALは指数Aの低位部分54
を示す。同様に指数Bも高位部分56と低位部分58に
分けられ、BHは指数Bの高位部分に関連するビット
を、BLは指数Bの低位部分に関連するビットを示す。
【0029】装置50は更に加算器60と62を含む。
これら加算器において差(AL−BL)と(BL−A
L)が決定される。またこれら加算器の一方から桁上げ
信号64が出力される。図3において桁上げ信号64は
加算器60から出るように示されている。この桁上げ信
号は加算器62の出力であってもよく、そして装置50
は指数間の差の決定に同じ効果を出す。
これら加算器において差(AL−BL)と(BL−A
L)が決定される。またこれら加算器の一方から桁上げ
信号64が出力される。図3において桁上げ信号64は
加算器60から出るように示されている。この桁上げ信
号は加算器62の出力であってもよく、そして装置50
は指数間の差の決定に同じ効果を出す。
【0030】装置50には比較回路66が含まれる。比
較回路66は三つの状態の1つすなわち、AH=BHで
あるか、AH+1=BHであるかBH+1=AHである
かを決定するために用いられる。比較回路66は加算器
1個を有する回路、2個を有する回路または2個のイン
クレメンタを有する回路により構成出来る。図4は後者
の形の比較回路66を示しており、これはインクレメン
タ92と94を含む。比較回路66は更に3個の比較器
96,98,100を含む。信号AHとBHは比較器9
6に入り、それらが等しいかどうかの決定が行われる。
これらが等しくないときは比較器96は出力を出さな
い。信号AHは、インクレメンタ92にも加えられ、そ
こで、ビットストトリームAHに1を加算する。信号
(AH+1)が信号BHと共に比較器98に加えられ
る。AH+1=BHであれば比較器98は出力を出す。
最後に信号BHがインクレメンタ94に加えられて(B
H+1)に日賭してビットストリームをつくる。信号
(BH+1)はAHと共に比較器100に入り、AH=
BH+1であれば比較器100が出力を出す。多くの場
合、比較回路66からAH=BH、AH=BH+1また
はBH=AH+1を示す出力が出る。
較回路66は三つの状態の1つすなわち、AH=BHで
あるか、AH+1=BHであるかBH+1=AHである
かを決定するために用いられる。比較回路66は加算器
1個を有する回路、2個を有する回路または2個のイン
クレメンタを有する回路により構成出来る。図4は後者
の形の比較回路66を示しており、これはインクレメン
タ92と94を含む。比較回路66は更に3個の比較器
96,98,100を含む。信号AHとBHは比較器9
6に入り、それらが等しいかどうかの決定が行われる。
これらが等しくないときは比較器96は出力を出さな
い。信号AHは、インクレメンタ92にも加えられ、そ
こで、ビットストトリームAHに1を加算する。信号
(AH+1)が信号BHと共に比較器98に加えられ
る。AH+1=BHであれば比較器98は出力を出す。
最後に信号BHがインクレメンタ94に加えられて(B
H+1)に日賭してビットストリームをつくる。信号
(BH+1)はAHと共に比較器100に入り、AH=
BH+1であれば比較器100が出力を出す。多くの場
合、比較回路66からAH=BH、AH=BH+1また
はBH=AH+1を示す出力が出る。
【0031】図3において、この装置は更にセレクト高
回路67を含む。比較回路66の出力がない場合にはこ
のセレクト高回路67はBH>AHであるかAH>BH
であるかを決定する。この回路はまたAまたはBの大き
い方の数を選択する。そのような回路67は種々の構成
をもつことが出来る。その一例は、比較回路66の出力
すなわちAH=BH,BH=AH+1およびAH=BH
+1を3入力NORゲートに接続して構成するものであ
る。このNORゲートが出力を出すとき、セレクト高回
路67はAがBより大のときAを、BがAより大のとき
Bを選択する。夫々入力として3入力NORを有し、A
H>BHのとき一方が入力を得そしてBH>AHのとき
入力を得る2個のセレクタをAまたはBの内の大きい方
を選ぶために使用出来る。加算器69はAHまたはBH
が大きいことを決定するために用いることが出来る。差
AH−BHまたはBH−AHからの桁上げは高い方の浮
動小数点数を決定する。
回路67を含む。比較回路66の出力がない場合にはこ
のセレクト高回路67はBH>AHであるかAH>BH
であるかを決定する。この回路はまたAまたはBの大き
い方の数を選択する。そのような回路67は種々の構成
をもつことが出来る。その一例は、比較回路66の出力
すなわちAH=BH,BH=AH+1およびAH=BH
+1を3入力NORゲートに接続して構成するものであ
る。このNORゲートが出力を出すとき、セレクト高回
路67はAがBより大のときAを、BがAより大のとき
Bを選択する。夫々入力として3入力NORを有し、A
H>BHのとき一方が入力を得そしてBH>AHのとき
入力を得る2個のセレクタをAまたはBの内の大きい方
を選ぶために使用出来る。加算器69はAHまたはBH
が大きいことを決定するために用いることが出来る。差
AH−BHまたはBH−AHからの桁上げは高い方の浮
動小数点数を決定する。
【0032】装置50は更に数個のセレクタ68,7
0,72とマルチプレクサ74を含む。セレクタ68へ
の入力は(AL−BL)を決定する加算器60からの桁
上信号64と比較回路66の2つの出力すなわち(AH
=BH)と(AH=BH+1)である。セレクタ70へ
の入力は(AL−BL)を決定する加算器60からの桁
上げ信号64と比較回路66の2つの出力すなわち(A
H=BH)と(AH+1=BH)である。セレクタ72
はシフトされることになる小数部分を選択する。セレク
タ72の入力は(AH=BH+1)、(AH=BH)お
よび桁上信号64である。マルチプレクサ74は指数A
とBの適正な差を選択する。マルチプレクサ74の入力
はセレクタ68と70の出力および加算器60と62の
出力である。マルチプレクサ74はこれら入力から指数
の差を選択して小さい方の浮動小数点数の小数部分の適
正な右シフトを生じさせる。
0,72とマルチプレクサ74を含む。セレクタ68へ
の入力は(AL−BL)を決定する加算器60からの桁
上信号64と比較回路66の2つの出力すなわち(AH
=BH)と(AH=BH+1)である。セレクタ70へ
の入力は(AL−BL)を決定する加算器60からの桁
上げ信号64と比較回路66の2つの出力すなわち(A
H=BH)と(AH+1=BH)である。セレクタ72
はシフトされることになる小数部分を選択する。セレク
タ72の入力は(AH=BH+1)、(AH=BH)お
よび桁上信号64である。マルチプレクサ74は指数A
とBの適正な差を選択する。マルチプレクサ74の入力
はセレクタ68と70の出力および加算器60と62の
出力である。マルチプレクサ74はこれら入力から指数
の差を選択して小さい方の浮動小数点数の小数部分の適
正な右シフトを生じさせる。
【0033】本発明は、小さい方の浮動小数点の小数部
が加算のためにその幅より大きく右シフトされねばなら
ないとき、小さい方の浮動小数点数の加算の効果が0の
加算と同じとなるという前提に立脚する。云い換える
と、指数の差が浮動小数点数の小数部に与えられるビッ
ト数より大きいシフトの必要なことを示すときには小さ
い方の数を大きい方の数に加算する必要がない。小さい
方を大きい数に加算する効果は非常に小さい。
が加算のためにその幅より大きく右シフトされねばなら
ないとき、小さい方の浮動小数点数の加算の効果が0の
加算と同じとなるという前提に立脚する。云い換える
と、指数の差が浮動小数点数の小数部に与えられるビッ
ト数より大きいシフトの必要なことを示すときには小さ
い方の数を大きい方の数に加算する必要がない。小さい
方を大きい数に加算する効果は非常に小さい。
【0034】この前提から浮動小数点数の小数部に与え
られるビット数の範囲内のシフトを生じさせる指数の差
を決定するだけでよいことになる。浮動小数点数の一方
の小数部におけるより大きいシフトを生じさせるような
指数の差は検出するだけでよい。そのような大きな差が
あるとすれば大きい方の浮動小数点数がセレクト高回路
67を用いてこれら2つの数の和として選択されるので
あり、その理由は、小さい方の浮動小数点数の加算が小
さい方の数を大きい方の数に加算するときには大きい方
の数の小数部内のビットを変更しないからである。
られるビット数の範囲内のシフトを生じさせる指数の差
を決定するだけでよいことになる。浮動小数点数の一方
の小数部におけるより大きいシフトを生じさせるような
指数の差は検出するだけでよい。そのような大きな差が
あるとすれば大きい方の浮動小数点数がセレクト高回路
67を用いてこれら2つの数の和として選択されるので
あり、その理由は、小さい方の浮動小数点数の加算が小
さい方の数を大きい方の数に加算するときには大きい方
の数の小数部内のビットを変更しないからである。
【0035】基本的には本発明においては加算または減
算される2数の夫々の浮動小数点指数部分は高位部分と
低位部分に分けられる。低位部分は表わされる最も高い
数がそれら特定の数を含むフォーマットの浮動小数点数
の小数部に与えられるビット数に等しいかあるいはそれ
より大きくなるように選ばれる。例えば、浮動小数点数
についての倍精度フォーマットでは53ビットがその数
の小数部に与えられる。低位部分は、6ビットで表わさ
れる最も大きい数は53より大きい63であるから、6
ビットにセットされる。これを5ビットとすると最大数
は31であり、これは53より小さくなってしまう。夫
々の指数部の低位部分に必要なビット数はLOG2
[(小数部に与えられるビット数)]に等しい。勿論、
低位部分のビット数は整数でなくてはならず、それ故こ
の数は常にすぐ上の桁の整数に切り上げられる。各指数
の高位部分に与えられるビット数は[(指数のビット
数)−(低位部分のビット数)]に等しい。
算される2数の夫々の浮動小数点指数部分は高位部分と
低位部分に分けられる。低位部分は表わされる最も高い
数がそれら特定の数を含むフォーマットの浮動小数点数
の小数部に与えられるビット数に等しいかあるいはそれ
より大きくなるように選ばれる。例えば、浮動小数点数
についての倍精度フォーマットでは53ビットがその数
の小数部に与えられる。低位部分は、6ビットで表わさ
れる最も大きい数は53より大きい63であるから、6
ビットにセットされる。これを5ビットとすると最大数
は31であり、これは53より小さくなってしまう。夫
々の指数部の低位部分に必要なビット数はLOG2
[(小数部に与えられるビット数)]に等しい。勿論、
低位部分のビット数は整数でなくてはならず、それ故こ
の数は常にすぐ上の桁の整数に切り上げられる。各指数
の高位部分に与えられるビット数は[(指数のビット
数)−(低位部分のビット数)]に等しい。
【0036】本発明では指数Aの低位部分と指数Bの低
位部分の差を決定しそして指数Aの高位部分と指数Bの
高位部分について三つの条件が生じるかどうかを決定す
るだけでよい。この情報から、小さい方の小数部が大き
い方の小数部と重なる場合の小さい方の浮動小数点数の
小数部におけるシフトを必要とするすべての差が決定す
る。本発明では従来のような加算器ではなくより小さい
すなわち幅の狭い加算を用いる。従来、加算器のビット
幅は一般に指数に与えられるビット数に対応していた。
本発明は、回数がより少く桁上げがより小さいすなわち
より狭い加算器内で生じるため、より高速である。加算
器を伝ぱんする桁上げは加算プロセスの速度を低下させ
そして指数減算は浮動小数点数の加算および減算を行う
クリチカルパスに沿っている。
位部分の差を決定しそして指数Aの高位部分と指数Bの
高位部分について三つの条件が生じるかどうかを決定す
るだけでよい。この情報から、小さい方の小数部が大き
い方の小数部と重なる場合の小さい方の浮動小数点数の
小数部におけるシフトを必要とするすべての差が決定す
る。本発明では従来のような加算器ではなくより小さい
すなわち幅の狭い加算を用いる。従来、加算器のビット
幅は一般に指数に与えられるビット数に対応していた。
本発明は、回数がより少く桁上げがより小さいすなわち
より狭い加算器内で生じるため、より高速である。加算
器を伝ぱんする桁上げは加算プロセスの速度を低下させ
そして指数減算は浮動小数点数の加算および減算を行う
クリチカルパスに沿っている。
【0037】受け入られる組合せにより、小数部のシフ
トを必要とする差が決定される。2つの指数の高位部分
間の差は0か1でなくてはならない。他の差は浮動小数
点数の小数部に与えられる位置の数より大きいシフトを
示すことにする。その場合には浮動小数点数AとBの内
の大きい方がA+Bの答えとして選ばれる。セレクト高
回路67はこの大きい方の浮動小数点数を選択するため
に用いられる。
トを必要とする差が決定される。2つの指数の高位部分
間の差は0か1でなくてはならない。他の差は浮動小数
点数の小数部に与えられる位置の数より大きいシフトを
示すことにする。その場合には浮動小数点数AとBの内
の大きい方がA+Bの答えとして選ばれる。セレクト高
回路67はこの大きい方の浮動小数点数を選択するため
に用いられる。
【0038】次の一つの例がこれをより明確にするもの
である。倍精度フォーマットを用いるものとすると、指
数部分の下位6桁のビットを低位部分のビットとして割
り振る。この指数の高位部分は浮動小数点数の夫々の指
数部の上位5桁のビットを含むことになる。2個の浮動
小数点数の高位部分の差が1であればそれは差64に対
応する。低位部分の最大差はせいぜい63であるから指
数間の最大の差は従って[127,(64+63)]、
最小差は1(64−63)となる。高位部分の差が2で
あればそれは128の差に対応する。このとき最小差は
128−63=65である。65のビットシフトは倍精
度フォーマット(最大53ビット)での浮動小数点数の
小数部より大きく、それ故、大きい浮動小数点数に小さ
いものを加算することは大きい方に0を加算する場合と
同じ値を得る。
である。倍精度フォーマットを用いるものとすると、指
数部分の下位6桁のビットを低位部分のビットとして割
り振る。この指数の高位部分は浮動小数点数の夫々の指
数部の上位5桁のビットを含むことになる。2個の浮動
小数点数の高位部分の差が1であればそれは差64に対
応する。低位部分の最大差はせいぜい63であるから指
数間の最大の差は従って[127,(64+63)]、
最小差は1(64−63)となる。高位部分の差が2で
あればそれは128の差に対応する。このとき最小差は
128−63=65である。65のビットシフトは倍精
度フォーマット(最大53ビット)での浮動小数点数の
小数部より大きく、それ故、大きい浮動小数点数に小さ
いものを加算することは大きい方に0を加算する場合と
同じ値を得る。
【0039】このように、重要な条件はAH=BHであ
るが、BH=AH+1であるかあるいはAH=BH+1
であるかということのみである。指数AとBの高位部分
について他の条件が生じた場合には小さい方の数の加算
は大きい方の数に何らの効果も有しない。AHとBHの
間に他の条件が生じるときにはセレクト回路67は大き
い方の浮動小数点数を選択するために用いられる。
るが、BH=AH+1であるかあるいはAH=BH+1
であるかということのみである。指数AとBの高位部分
について他の条件が生じた場合には小さい方の数の加算
は大きい方の数に何らの効果も有しない。AHとBHの
間に他の条件が生じるときにはセレクト回路67は大き
い方の浮動小数点数を選択するために用いられる。
【0040】差(AL−BL)と(BL−AL)は浮動
小数点系の指数の低位部分に与えられるビット数に等し
いビット幅を有する2個の加算器を用いて得られる。例
えば、指数の低位部分は下位6桁のビットを含むから6
ビット加算器が用いられる。選ばれる差は各指数の高位
部分について3条件のどれが存在するかによりそして夫
々の指数の低部間の関係によりきまる。この選択プロセ
スを次の表に要約する。
小数点系の指数の低位部分に与えられるビット数に等し
いビット幅を有する2個の加算器を用いて得られる。例
えば、指数の低位部分は下位6桁のビットを含むから6
ビット加算器が用いられる。選ばれる差は各指数の高位
部分について3条件のどれが存在するかによりそして夫
々の指数の低部間の関係によりきまる。この選択プロセ
スを次の表に要約する。
【0041】 IF AH=BH AND AL>BL,THEN DIF=AL−BL IF AH=BH AND BL>AL,THEN DIF=BL−AL IF AH=BH+1 AND BL>AL,THEN DIF=AL−BL IF BH=AH+1 AND AL>BL,THEN DIF=BL−AL これらは浮動小数点数の小数部に与えられるビット数内
のシフトを得るに必要な条件である。他の条件はその小
数部に与えられるビット数より大きいシフトを生じさせ
る。例えばBHがAHより差64に対応する1だけ大き
くそしてBLがALより大きければ64を越えるシフト
が要求され、これは最大シフト53を越えることにな
る。
のシフトを得るに必要な条件である。他の条件はその小
数部に与えられるビット数より大きいシフトを生じさせ
る。例えばBHがAHより差64に対応する1だけ大き
くそしてBLがALより大きければ64を越えるシフト
が要求され、これは最大シフト53を越えることにな
る。
【0042】AH=BHの場合は正しい差(DIF)の
選択は、AL>BLのときAL−BL、BL>ALのと
きBL−ALである。AHとBHの差が1のときのDI
Fは次のように得られる。AH=BH+1であってBL
>ALのときは差BL−ALと同じであり低位部分は2
**NからNビット幅である。従ってDIF=2**N−
(BL−AL)=AL−BLとなる。同様にBH=AH
+1であってAL>BLのときには同様にDIF=2**
N−(AL−BL)=BL−ALを得る。
選択は、AL>BLのときAL−BL、BL>ALのと
きBL−ALである。AHとBHの差が1のときのDI
Fは次のように得られる。AH=BH+1であってBL
>ALのときは差BL−ALと同じであり低位部分は2
**NからNビット幅である。従ってDIF=2**N−
(BL−AL)=AL−BLとなる。同様にBH=AH
+1であってAL>BLのときには同様にDIF=2**
N−(AL−BL)=BL−ALを得る。
【0043】動作を述べると、図3,4に示すハードウ
ェアは前記の表に示す条件を行う。図4の比較回路はA
HとBH,(AH+1)とBHおよび(BH+1)とA
Hを比較する。この表の条件の一つすなわち、AH=B
H,BH=AH+1,またはAH=BH+1を示す一つ
の信号が比較回路66から出る。回路66に出力がない
ことは数AとBの一方が他方より著しく大きく2進小数
点をシフトした後の小さい方の数の加算が大きい方の値
に何の効果もないことを示す。この場合にはセレクト高
回路67は加算または減算の答えとして大きい方の浮動
小数点数を選択する。
ェアは前記の表に示す条件を行う。図4の比較回路はA
HとBH,(AH+1)とBHおよび(BH+1)とA
Hを比較する。この表の条件の一つすなわち、AH=B
H,BH=AH+1,またはAH=BH+1を示す一つ
の信号が比較回路66から出る。回路66に出力がない
ことは数AとBの一方が他方より著しく大きく2進小数
点をシフトした後の小さい方の数の加算が大きい方の値
に何の効果もないことを示す。この場合にはセレクト高
回路67は加算または減算の答えとして大きい方の浮動
小数点数を選択する。
【0044】セレクタ68,70,72およびマルチプ
レクサ74は2×2AND−ORゲートで構成される。
これらセレクタおよびマルチプレクサの機能はAND−
ORゲートの他の組合せおよびサイズを用いても実現し
うる。セレクタ68はAH=BHであって加算器60の
桁上げが1、すなわちAL>BL、のときAL−BLを
選択する。またセレクタ68はAH=BH+1であって
加算器60の桁上げが0、すなわちBL>ALのときA
L−BLを選択する。セレクタ70はAH=BHであっ
て加算器60から桁上げが0、すなわちBL>ALのと
き、BL−ALを選択し、BH=AH+1であって桁上
げが1、すなわちAL>BLのときBL−ALを選択す
る。
レクサ74は2×2AND−ORゲートで構成される。
これらセレクタおよびマルチプレクサの機能はAND−
ORゲートの他の組合せおよびサイズを用いても実現し
うる。セレクタ68はAH=BHであって加算器60の
桁上げが1、すなわちAL>BL、のときAL−BLを
選択する。またセレクタ68はAH=BH+1であって
加算器60の桁上げが0、すなわちBL>ALのときA
L−BLを選択する。セレクタ70はAH=BHであっ
て加算器60から桁上げが0、すなわちBL>ALのと
き、BL−ALを選択し、BH=AH+1であって桁上
げが1、すなわちAL>BLのときBL−ALを選択す
る。
【0045】マルチプレクサ74はセレクタ68または
70からの信号に応じて加算器60または62により決
定される適正な差(AL−BL)または(BL−AL)
をゲートする。加算器60と62の出力はマルチプレク
サ74の入力である。マルチプレクサ74はセレクタ6
8からの信号があるとき量AL−BLを選択し、セレク
タ70の出力により量BL−ALを選択する。マルチプ
レクサ74の出力は浮動小数点数における2進小数点の
適正なシフト位置数を示す適正な指数差を示す。マルチ
プレクサ74の出力がないときには大きい方の浮動小数
点数が適正な和である。出力がないことは指数の差が浮
動小数点数の小数部に与えられるビット数より大きく且
つシフトがその小数部のビット数より大きいことを示
す。
70からの信号に応じて加算器60または62により決
定される適正な差(AL−BL)または(BL−AL)
をゲートする。加算器60と62の出力はマルチプレク
サ74の入力である。マルチプレクサ74はセレクタ6
8からの信号があるとき量AL−BLを選択し、セレク
タ70の出力により量BL−ALを選択する。マルチプ
レクサ74の出力は浮動小数点数における2進小数点の
適正なシフト位置数を示す適正な指数差を示す。マルチ
プレクサ74の出力がないときには大きい方の浮動小数
点数が適正な和である。出力がないことは指数の差が浮
動小数点数の小数部に与えられるビット数より大きく且
つシフトがその小数部のビット数より大きいことを示
す。
【0046】セレクタ72は右にシフトされる浮動小数
点数AまたはBの小数部を選択する。小さい方の数の小
数部が選ばれる。AH=BHであって桁上信号64が0
のとき、数Aの小数部が選択される。BH=AH+1で
あって桁上信号64が1のときもAが選ばれる。その他
の場合はBが選ばれる。
点数AまたはBの小数部を選択する。小さい方の数の小
数部が選ばれる。AH=BHであって桁上信号64が0
のとき、数Aの小数部が選択される。BH=AH+1で
あって桁上信号64が1のときもAが選ばれる。その他
の場合はBが選ばれる。
【0047】
【発明の効果】本発明によれば2個の浮動小数点数の加
算または減算に必要な、2つの指数間の差を決定するプ
ロセスの速度が上昇する。加算器のビットにわたる桁上
げの伝ぱんは加算動作を低速とする主たる原因である。
また、加算器のビット幅が小さい程、桁上げが多数のビ
ットにまたがらないためその動作速度は高くなるので、
本発明は夫々の浮動小数点数の指数部を2つの部分に分
け、差の決定にビット幅の狭い加算器を用いる。これに
より加算器にまたがり伝ぱんする桁上げ回数が制限さ
れ、2つの指数の差の決定にその幅と同じ幅の加算器を
用いる従来のものと比較して差の決定のための時間が短
縮される。
算または減算に必要な、2つの指数間の差を決定するプ
ロセスの速度が上昇する。加算器のビットにわたる桁上
げの伝ぱんは加算動作を低速とする主たる原因である。
また、加算器のビット幅が小さい程、桁上げが多数のビ
ットにまたがらないためその動作速度は高くなるので、
本発明は夫々の浮動小数点数の指数部を2つの部分に分
け、差の決定にビット幅の狭い加算器を用いる。これに
より加算器にまたがり伝ぱんする桁上げ回数が制限さ
れ、2つの指数の差の決定にその幅と同じ幅の加算器を
用いる従来のものと比較して差の決定のための時間が短
縮される。
【図1】本発明に用いる浮動小数点演算回路のブロック
図。
図。
【図2】従来の2個の指数の差の決定に用いられる装置
を示す図。
を示す図。
【図3】本発明による2個の指数の差の決定に用いられ
る装置を示す図。
る装置を示す図。
【図4】図3の装置の部分である比較回路の一実施例を
示す図。
示す図。
10 浮動小数点演算回路 11 制御ロジック回路 12 記憶データバス 14 浮動小数点レジスタ 15 マルチプレクサ 20 指数加算器 24 マルチプルセレクタ 26 プリアライナ回路 30 桁上げ伝ぱん加算器 34 正規化−繰上げ回路
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スコット、アラン、ヒルカー アメリカ合衆国ミネソタ州、ロチェスタ ー、トゥエンティーシックスス、アベニ ュ、エヌ、ダブリュ、5500エー
Claims (24)
- 【請求項1】第1の数Aに関連した第1指数部分と第2
の数Bに関連した第2指数部分の差を決定するための方
法であって、これら第1および第2の数は選ばれた浮動
点フォーマットにおいて両者の小数部に与えられる選ば
れた数のビットと、両者の指数部分に与えられた選ばれ
た数のビットを有しており、上記の差が上記第1または
第2数の小数部分におけるシフト量を決定して両数の加
算を可能にするために用いる下記段階を含む方法: 第1数Aの指数部を高位部分AHと低位部分ALに分け
る段階; 第2数Bの指数部を高位部分BHと低位部分BLに分け
る段階; 第1指数部の低位部分ALと第2指数の低位部分BLの
差を決定する段階; 第1指数部の高位部分AHと第2指数部の高位部分BH
の差を決定する段階; 第1数Aと第2数Bの指数部の低位部分の差の一方を第
1指数部の高位部分と 第2指数部の高位部分の差に応じて数AまたはBの小数
部における2進小数点のシフト位置数として選択する段
階。 - 【請求項2】第1数Aに関連する第1指数部と第2数B
に関連する第2指数部の差を決定するための方法であっ
て、上記両数は選ばれた浮動小数点フォーマットにおい
てそれらの小数部に与えられる選ばれた数のビットおよ
びそれらの指数部に与えられる選ばれた数のビットを有
しており、第1数Aと第2数Bの浮動小数点加算または
減算を行うために小さい指数部を有する数の小数部を右
にシフトするために用いられる、下記段階を含む方法: 第1数Aの指数部の高位部分AHと低位部分ALに分け
る段階; 第2数Bの指数部を高位部分BHと低位部分BLに分け
る段階; 差(AL−BL)を決定する段階; 差(BL−AL)を決定する段階; 差(AH−BH)および(BH−AH)を決定する段
階; 差(AH−BH)および(BH−AH)およびAL>B
LまたはBL>ALに応じて数AとBの一方の小数部分
をシフトする位置数として差(AL−BL)または(B
L−AL)を選択する段階。 - 【請求項3】前記第1および第2数A,Bの指数部の分
割段階は前記低位部分ALとBLに与えられるビットを
同数とすることを特徴とする請求項2の方法。 - 【請求項4】前記第1および第2数A,Bの指数部の分
割段階は、夫々の指数の低位部分で表わされる最大数が
第1数Aまたは第2数Bの小数部に与えられるビット数
より大かあるいは等しくなるように各指数部の低位部分
についてのビット数を決定する段階を含むことを特徴と
する、請求項3の方法。 - 【請求項5】前記第1および第2数A,Bの指数部の分
割段階は第1数Aまたは第2数Bの小数部に与えられる
ビット数にもとづく各指数部の低位部分についてのビッ
ト数を決定する段階を含み、上記各指数部の低位部分の
ビット数はLOG2[(浮動小数点数の小数部に与えら
れるビット数)]より大きいかまたはそれに等しい1桁
上の整数に等しくなった、ことを特徴とする請求項3の
方法。 - 【請求項6】前記差(AL−BL)は、AH=BHであ
ってAL>BLであるとき前記選択段階において指数の
差として選ばれることを特徴とする請求項2の方法。 - 【請求項7】前記差(BL−AL)は、AH=BHであ
ってBL>ALのとき前記選択段階において指数の差と
して選択されることを特徴とする請求項2の方法。 - 【請求項8】前記差(AL−BL)はAH−BH=1で
あってBL>ALであるとき前記選択段階において指数
の差として選ばれることを特徴とする請求項2の方法。 - 【請求項9】前記差(BL−AL)はBH−AH=1で
ありAL>BLのときに前記選択段階において指数の差
として選択されることを特徴とする請求項2の方法。 - 【請求項10】AH−BH=1であってAL>BLのと
きAとBの加算または減算の結果としてAを選択する段
階を更に含む請求項2の方法。 - 【請求項11】BH−AH=1であってAL<BLのと
きAとBの加算または減算の結果としてBを選択する段
階を更に含む請求項2の方法。 - 【請求項12】AH−BHの結果が0または1でないと
きAとBの加算または減算の結果としてAとBの内の大
きい方を選択する段階を更に含む請求項2の方法。 - 【請求項13】BH−AHの結果が0または1でないと
きAとBの加算または減算の結果としてAとBの内の大
きい方を選択する段階を更に含む請求項2の方法。 - 【請求項14】第1数Aに関連する第1指数部と第2数
Bに関連する第2指数部の差を決定するための装置であ
って、これら第1および第2数は選ばれた浮動小数点フ
ォーマットにおいてそれらの小数部に与えられた選ばれ
た数のビットとそれらの指数部に与えられた選ばれた数
のビットを有しており、上記差は上記第1および第2数
の加算または減算のためのそれらの一方の小数部におけ
るシフト量を決定するために用いられる、下記要件を含
む装置: 第1数Aの指数部を高位部分AHと低位部分ALに分け
る手段; 第2数Bの指数部を高位部分BHと低位部分BLに分け
る手段; 第1数の第1指数部の低位部分ALと第2指数部の低位
部分BLの差を決定する手段; 第1指数部の高位部分AHと第2指数部の高位部分BH
の差を決定する段階; 上記高位部分の差と、第1指数部の低位部分が2指数部
の低位部分より大きいかどうかまたは第2指数部の低位
部分が第1指数の低位部分より大きいかどうかに応じて
AまたはBの小数部をシフトする位置数として第1およ
び第2数A,Bの指数部の低位部分の差の一方を選択す
る手段。 - 【請求項15】前記第1指数部と第2指数部の低位部分
AL,BLの差を決定する手段は下記要件を含むごとく
なった請求項14の装置:差AL−BLを決定する第1
加算器;差BL−ALを決定する第2加算器。 - 【請求項16】前記第1および第2加算器は数AとBの
指数部の低位部分におけるビット数に等しい幅を有する
ことを特徴とする請求項15の装置。 - 【請求項17】前記AHとBHの差を決定する手段は下
記要件をさらに含む請求項14の装置: 差AH−BH
を決定するための第3加算器;BHがAHより大である
かどうかを決定する手段。 - 【請求項18】前記AHとBHの差を決定する手段は下
記要件をさらに含む請求項14の装置: 差AH−BH
を決定する第3加算器;差BH−AHを決定するための
第4加算器。 - 【請求項19】第1指数の高位部分と第2指数の高位部
分の差が2以上であるとき第1および第2数A,Bの内
の大きい方を選択する手段を更に含む請求項14の装
置。 - 【請求項20】前記AHとBHの差を決定する手段は比
較器であり、この比較器は下記要件を含む請求項14の
装置:第1インクレメンタ出力としてAH+1を発生す
るためにAHに1を加算する第1インクレメンタ;第2
インクレメンタ出力としてBH+1を発生するためにB
Hに1を加算する第2インクレメンタ;BHに対してA
Hを比較してAH=BHのとき出力を発生する第1比較
器;BHに対して上記第1インクレメンタの出力を比較
してAH+1=BHのとき出力を発生する第2比較器;
AHに対して上記第2インクレメンタの出力を比較して
BH+1=AHのとき出力を発生する第3比較器。 - 【請求項21】AHまたはBHの大きい方を選択するた
めの第4比較器を更に含む請求項20の装置。 - 【請求項22】小数部分と指数部分を有する浮動小数点
の小数部分における2進小数点をシフトするシフト位置
数を決定するための、下記段階を含む方法:第1数の指
数部を第1低位部分と第1高位部分に分ける段階;第2
数の指数部を第2低位部分と第2高位部分に分ける段
階;上記第1および第2低位部分の差と、上記第1およ
び第2高位部分の差と第1および第2数の指数の低位部
分の内どちらが大きいかとに応じて第1または第2数の
一方の小数部における2進小数点をシフトするスペース
数を決定する段階。 - 【請求項23】第1浮動小数点数の指数を高位部分と低
位部分に分ける段階および第2浮動小数点数の指数を高
位部分と低位部分に分ける段階は上記両低位部分を同ビ
ット数とするものである請求項22の方法。 - 【請求項24】第1浮動小数点数の指数を高位部分と低
位部分に分ける段階および第2浮動小数点数の指数を高
位部分と低位部分に分ける段階は下式を用いて夫々の数
の低位部分に与えられるビット数を決定する段階を含む
請求項23の方法:L=LOG2[(浮動小数点数の小
数部に与えられるビット数)]
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US46962890A | 1990-01-24 | 1990-01-24 | |
US469628 | 1990-01-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04213110A JPH04213110A (ja) | 1992-08-04 |
JPH0748176B2 true JPH0748176B2 (ja) | 1995-05-24 |
Family
ID=23864482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2413158A Expired - Lifetime JPH0748176B2 (ja) | 1990-01-24 | 1990-12-21 | 浮動小数点算術演算方法及び装置 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP0438962A3 (ja) |
JP (1) | JPH0748176B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69130627T2 (de) * | 1990-09-07 | 1999-09-09 | Nec Corp. | Schaltung zur Bestimmung des Betrags der Verschiebung in einen Gleitkommarechner, welche nur wenig Hardware braucht und mit hoher Geschwindigkeit zu betreiben ist |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US2949231A (en) * | 1958-02-24 | 1960-08-16 | Westinghouse Electric Corp | Arithmetic unit for floating radix notation |
US3993891A (en) * | 1975-07-03 | 1976-11-23 | Burroughs Corporation | High speed parallel digital adder employing conditional and look-ahead approaches |
US4310879A (en) * | 1979-03-08 | 1982-01-12 | Pandeya Arun K | Parallel processor having central processor memory extension |
JPS63157231A (ja) * | 1986-12-20 | 1988-06-30 | Fujitsu Ltd | 指数加減算回路 |
US4858165A (en) * | 1987-06-19 | 1989-08-15 | Digital Equipment Corporation | Apparatus and method for acceleration of effective subtraction procedures by the approximation of the absolute value of the exponent argument difference |
-
1990
- 1990-12-21 JP JP2413158A patent/JPH0748176B2/ja not_active Expired - Lifetime
- 1990-12-28 EP EP19900480228 patent/EP0438962A3/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP0438962A2 (en) | 1991-07-31 |
JPH04213110A (ja) | 1992-08-04 |
EP0438962A3 (en) | 1992-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4941120A (en) | Floating point normalization and rounding prediction circuit | |
US5844830A (en) | Executing computer instrucrions by circuits having different latencies | |
EP0483864B1 (en) | Hardware arrangement for floating-point addition and subtraction | |
US5272660A (en) | Method and apparatus for performing integer and floating point division using a single SRT divider in a data processor | |
US4999803A (en) | Floating point arithmetic system and method | |
US6647404B2 (en) | Double precision floating point multiplier having a 32-bit booth-encoded array multiplier | |
US4926370A (en) | Method and apparatus for processing postnormalization and rounding in parallel | |
US5357237A (en) | In a data processor a method and apparatus for performing a floating-point comparison operation | |
US6401194B1 (en) | Execution unit for processing a data stream independently and in parallel | |
US5245564A (en) | Apparatus for multiplying operands | |
JPH04227530A (ja) | 浮動小数点プロセッサ | |
JPH02138620A (ja) | 数値量を計算する方法および数値データ処理装置 | |
JPH07200260A (ja) | 単一プロセッサにおける並列データ処理 | |
JP2002108606A (ja) | スティッキービット生成回路及び乗算器 | |
JPS584441A (ja) | デ−タ処理システム | |
US6549926B1 (en) | SRT divider having several bits of each partial remainder one-hot encoded to minimize the logic levels needed to estimate quotient bits | |
JPH0542013B2 (ja) | ||
US5687106A (en) | Implementation of binary floating point using hexadecimal floating point unit | |
US5117384A (en) | Method and apparatus for exponent adder | |
US4979142A (en) | Two-bit floating point divide circuit with single carry-save adder | |
US6061707A (en) | Method and apparatus for generating an end-around carry in a floating-point pipeline within a computer system | |
US6233595B1 (en) | Fast multiplication of floating point values and integer powers of two | |
US5237525A (en) | In a data processor an SRT divider having a negative divisor sticky detection circuit | |
JPH02294731A (ja) | 浮動小数点数演算処理装置及び除数倍数生成装置 | |
JPH0748176B2 (ja) | 浮動小数点算術演算方法及び装置 |