トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 スティッキービット生成回路及び乗算器
【発明者】 【氏名】井出 進博

【要約】 【課題】スティッキービット生成の処理を高速化して丸め処理に掛かる時間を短縮化することにより、乗算速度を更に向上させること。

【解決手段】乗算結果を求める前のキャリー・セーブ・フォーマットの部分積の和より直接スティッキービット生成を行う。具体的には、キャリー・セーブ・フォーマットの部分積の和成分とキャリー成分の対応するビットごとの論理和の反転G、排他的論理和P、論理積Gを求め、各ビットの隣接上位ビットとキャリー伝搬を考慮した仮想和を求め、その全論理和をとることによりスティッキービット生成するため、キャリーの伝播がなく、高速にスティッキービットを生成することができる。
【特許請求の範囲】
【請求項1】 2個の正規化オペランドを乗算する乗算手段と、前記乗算手段から得られる部分積の和成分の下位ビットとキャリー成分の下位ビットから論理和の反転KB(キャリー伝播の停止)、排他的論理和P(キャリーの伝播)、論理積G(キャリーの生成)を生成するPKG生成手段と、前記PKG生成手段により得られた反転KB、排他的論理和P、論理積Gよりスティッキービットを生成するスティッキービット生成手段と、を具備することを特徴とするスティッキービット生成回路。
【請求項2】 前記スティッキービット生成手段は、前記和成分とキャリー成分の対応するビットとその隣接上位ビットとの排他的論理和P、論理積G、反転KBの各信号から、そのビットが1とならないことを示す信号を求めた後、前記各ビットが1とならないことを示す信号の全論理和をとることによりスティッキービットを生成することを特徴とする請求項1記載のスティッキービット生成回路。
【請求項3】 前記PKG生成手段はビットスライスで演算して前記排他的論理和P、論理積G、反転KBの各信号を求め、前記スティッキービット生成手段はスティッキービットを複数ブロックに分割して求めることを特徴とする請求項1又は2記載のスティッキービット生成回路。
【請求項4】 2個の正規化オペランドを乗算する乗算手段と、前記乗算手段から得られる部分積の和成分の下位ビットとキャリー成分の下位ビットから論理和の反転KB(キャリー伝播の停止)、排他的論理和P(キャリーの伝播)、論理積G(キャリーの生成)を生成するPKG生成手段と、前記PKG生成手段により得られた反転KB、排他的論理和P、論理積Gよりスティッキービットを生成するスティッキービット生成手段と、前記乗算手段から得られる部分積の和成分の上位ビットとキャリー成分の上位ビットを加算する第1の加算手段と、前記スティッキービット生成手段により生成されたスティッキービットより乗算結果に丸め処理を行うかどうかを判定する判定手段と、前記PKG生成手段により得られた反転KB、排他的論理和P、論理積Gよりキャリーを生成するキャリー生成手段と、前記第1の加算手段から得られる乗算結果に前記キャリー生成手段より生成されたキャリーを加算すると共に、前記判定手段により丸め処理を行うと判定された場合に1を加える第2の加算手段と、を具備することを特徴とする乗算器。
【請求項5】 前記第1の加算手段による加算処理と前記PKG生成手段及びスティッキービット生成手段の処理を並列に行うことを特徴とする請求項4記載の乗算器。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、浮動小数点演算器に係り、特に計算誤差を少なくするための補助用のビットであるスティッキービットを生成するスティッキービット生成回路及びこのスティッキービット生成回路を用いた乗算器に関する。
【0002】
【従来の技術】従来より、コンピュータで使用するための高速乗算器の構成は様々に提案されている。このような高速乗算器では、基本的には、乗数の各ビットに対応する部分積を求め、1ビットだけ左にずれている複数の部分積を加算することにより積を求める。高速化のため、ブースのアルゴリズムなどのように乗数の複数ビットに対応する部分積を求めることで、部分積の数を減らし、加算作業を少なくする方法、加算器を木構造状に構成し、並列に加算する方法「ワラスの方法」、キャリー・セーブ加算器を用いて部分積を加算する方法、などが知られている。多くの高速乗算器は、これらの手法を用いており、部分積の和は、キャリー成分、和成分のキャリー・セーブ・フォームで求め、最後に1回だけ、桁上げ伝搬加算を実行する。以上は整数の乗算の方法であるが、浮動小数点において仮数を生成するときにも用いられる。
【0003】図4は典型的な従来の浮動小数点乗算器の構成例である。52ビットのオペランドSと52ビットのオペランドTが乗算器201に入力され、ここで乗算されて、部分積の105ビットの和成分SS、105ビットのキャリー成分CCが得られる。これら部分積の和成分SS、キャリー成分CCは加算器202で加算されて、最終的な乗算結果が得られる。スティッキービット生成回路203は得られた乗算結果のシフトビットの論理和を取ることにより、スティッキービットを生成し、それを丸め回路204に渡す。
【0004】丸め回路204は前記スティッキービットから乗算結果を丸めるかどうかを判定し、丸める場合は加算値1を加算器205に供給する。加算器205の出力値は選択回路(マルチプレクサ)206に入力され、ここで、1ビットシフトしたものとしないものとをオーバーフローするかどうかによって選択し、最終乗算結果を出力する。
【0005】浮動小数点乗算器構成で乗算する場合、積は特定のフォーマットで定められたビット数に結果を丸めなければならないことが多い。例えば、二倍精度2進数に関する規格は53ビット[整数部1ビット、小数点以下52ビット]である。
【0006】2つの53ビット2進数の積は106ビットの長さである。ところが、二倍精度の結果はこの積のうち上位の54ビットしか使用しない。ここで最上位ビットは桁あふれを示す。また、下位の53ビットは、下位ビットから桁上げが生成されるか否か、丸めが必要であるか否か、さらに丸め値を確定するためにのみ使用され、値そのものは破棄される。
【0007】
【発明が解決しようとする課題】ところで上記した積の丸めを行うには、まず、仮数を正規化しなければならない。2つの正規化オペランドS、Tの乗算を行う乗算器では、そのために仮数の右への1ビットシフトが生じる場合がある。仮数が正規化されるまでは、丸めが実行されるビット位置が確定しない。結局、演算は、最悪、最下位からのキャリーが最上位まで伝搬し、最上位の結果により正規化が施され、丸めの位置および丸め処理の有無の判定に必要なビットの位置が確定するのを待っていなければならないのが普通である。
【0008】従って、下位ビットからの桁上げはクリテイカルパスに入っている。このような乗算器においては、通常、[1]積のキャリー成分、和成分の加算を加算器202で行い、[2]正規化、[3]スティッキービット生成を203の回路で行なった後、この結果を用いて、[4]丸めの判定を204の回路で行い、[5]丸めのインクリメントを加算器205で施すという手順で結果を発生するのが典型的である。
【0009】しかしながら、このような構成では、スティッキービット生成の前に加算器202で最終加算を行う必要が必須であり、この加算に時間が掛かると共に、スティッキービット生成に全シフトビットの論理和を取らなければならず、スティッキービット生成までに時間が掛かり、一連の丸め処理に時間を要することになる。それ故、乗算器の速度が遅くなる。
【0010】本発明は、上述の如き従来の課題を解決するためになされたもので、その目的は、スティッキービット生成の処理を高速化して丸め処理に掛かる時間を短縮化することにより、乗算速度を更に向上させることができるスティッキービット生成回路及びこのスティッキービット生成回路を用いた浮動小数点乗算器を提供することである。
【0011】
【課題を解決するための手段】上記目的を達成するために、請求項1の発明の特徴は、2個の正規化オペランドを乗算する乗算手段と、前記乗算手段から得られる部分積の和成分の下位ビットとキャリー成分の下位ビットから論理和の反転KB(キャリー伝播の停止)、排他的論理和P(キャリーの伝播)、論理積G(キャリーの生成)を生成するPKG生成手段と、前記PKG生成手段により得られた反転KB、排他的論理和P、論理積Gよりスティッキービットを生成するスティッキービット生成手段とを具備することにある。
【0012】請求項2の発明の前記スティッキービット生成手段は、前記和成分とキャリー成分の対応するビットとその隣接上位ビットとの排他的論理和P、論理積G、反転KBの各信号から、そのビットが1とならないことを示す信号を求めた後、前記各ビットが1とならないことを示す信号の全論理和をとることによりスティッキービットを生成することを特徴とする。
【0013】請求項3の発明の前記PKG生成手段はビットスライスで演算して前記排他的論理和P、論理積G、反転KBの各信号を求め、前記スティッキービット生成手段はスティッキービットを複数ブロックに分割して求めることを特徴とする。
【0014】請求項4の発明の特徴は、2個の正規化オペランドを乗算する乗算手段と、前記乗算手段から得られる部分積の和成分の下位ビットとキャリー成分の下位ビットから論理和の反転KB(キャリー伝播の停止)、排他的論理和P(キャリーの伝播)、論理積G(キャリーの生成)を生成するPKG生成手段と、前記PKG生成手段により得られた反転KB、排他的論理和P、論理積Gよりスティッキービットを生成するスティッキービット生成手段と、前記乗算手段から得られる部分積の和成分の上位ビットとキャリー成分の上位ビットを加算する第1の加算手段と、前記スティッキービット生成手段により生成されたスティッキービットより乗算結果に丸め処理を行うかどうかを判定する判定手段と、前記PKG生成手段により得られた反転KB、排他的論理和P、論理積Gよりキャリーを生成するキャリー生成手段と、前記第1の加算手段から得られる乗算結果に前記キャリー生成手段より生成されたキャリーを加算すると共に、前記判定手段により丸め処理を行うと判定された場合に1を加える第2の加算手段とを具備することにある。 請求項5の発明の特徴は、前記第1の加算手段による加算処理と前記PKG生成手段及びスティッキービット生成手段の処理を並列に行うことにある。
【0015】
【発明の実施の形態】以下、本発明の実施の形態を図面に基づいて説明する。図1は、本発明の乗算器の一実施形態の構成を示したブロック図である。乗算回路1は、正規化オペランドS、Tを入力して乗算する乗算回路1と、乗算回路1から出力される和成分SS、キャリー成分CCの上位ビットを加算して、2個のオペランドS(52:0)とオペランドT(52:0)の乗算結果を算出する加算回路2、論理和の反転KB(キャリー伝播の停止)、排他的論理和P(キャリーの伝播)、論理積G(キャリーの生成)を生成するPKG生成回路3、スティッキービット100を発生するスティッキービット生成回路4、キャリーを生成するキャリー生成回路5、乗算結果に丸めを施すかどうかを判定する丸め回路6、乗算結果に丸めを施したり、或いはキャリーを加算する加算回路7、乗算結果の1ビットシフトしたものとしないものとをオーバーフローするかどうかによって選択する選択回路(マルチプレクサ)8を有している。
【0016】図2は、PKG生成回路3の構成例を示した回路図である。PKG生成回路3は排他的論理和回路、論理和回路、論理積回路より構成されている。
【0017】排他的論理和回路では、乗算回路1の演算結果SS、およびCCの各ビットを入力とし、対応するビットにおけるキャリーの伝播を示す信号Pを生成する。図中の信号PBは、Pの反転である。
【0018】論理和回路は、同様に前記演算結果SS、およびCCの各ビットを入力とし、対応するビットにおけるキャリーの消滅を示す信号Kを生成する。図中の信号KBは、Kの反転を示す。
【0019】論理積回路は、同様に前記演算結果SS、およびCCの各ビットを入力とし、対応するビットにおけるキャリーの生成を示す信号Gを生成する。
【0020】図3は、スティッキー・ビット生成回路4の構成例を示した回路図である。
【0021】スティッキー・ビット生成回路4は構成部材103,105,107,109の排他的論理和回路、構成部材104,106,108,110の論理和回路から構成されている。本回路は、PKG生成回路の出力、反転KB信号、P信号を入力とし、スティッキー信号を生成する。処理がビット・スライスになっている点に注意されたい。
【0022】本実施例では、倍精度の乗算結果の下位SS<50:0>,CC<50:0>を演算結果が得られる順番にビットごとに4つのフィールドに分割して求めているが、一度に演算しても何ら演算結果に変わりはない。本実施例のように分割することにより、乗算結果が得られた部分から計算できるので、一度に実行するより高速にスティッキー・ビット生成を行うことができる。
【0023】次に、本実施形態の動作について説明する。乗算回路1は正規化オペランドS、Tを乗算して、部分積の和成分SSとキャリー成分CCを出力するもので、部分積の和がキャリーセーブ・フォームで生成され、倍精度の場合を仮定すると、和成分SS(105:0)、キャリー成分CC(105:0)となる。和成分SSとキャリー成分CCの上位ビットは加算回路2に入力され、下位ビットはPKG生成回路3に入力される。
【0024】PKG生成回路3はキャリー・セーブ・フォーマットの部分積の和成分SS(50:0)とキャリー成分CC(50:0)を入力とし、各対応するビットごとの論理和の反転KB、排他的論理和P、論理積Gをビットスライスで求める。論理和の反転KB、排他的論理和P、論理積Gはスティッキービット生成回路4に渡され、スティッキービット生成回路4は論理和の反転KB、排他的論理和P、論理積Gに基づいてスティッキービット100を生成し、得られたスティッキービット100を丸め回路6に出力する。
【0025】スティッキービット生成回路4は入力される各ビットのキャリー情報をもとに、スティッキービットを段階的に生成する。スティッキービット生成回路4は複数のXORなる論理ゲートと複数の論理和ゲートを備え、各ビットのP信号と1ビット上位のKとのXORをとり、各ビットに1が立つか否かを求め、前記各ビットに1が立つか否かを示す信号の論理和を取ることにより、スティッキービット100を生成する。スティッキービット生成回路4はこのようにキャリーの生成過程で加算を行っていないので、キャリーの伝播がなく、ステッキービットを高速に求めることが出来る。
【0026】ここで、本例では、スティッキービットを4つのブロックに分割して求めている。これは乗算アレーをワラスの方法で加算しているためである。部分積の部分和は下位の部分から順番に確定していく。本例では、倍精度の乗算アレーを構成しているので、下位よりSS(3:0、CC(3:0)の4ビット、SS(11:4)、CC(11:4)の8ビット、SS(25:15)、CC(25:15)の14ビット、残りSS(105:26)、CC(105:26)が段階的に確定していく。
【0027】本方式では、スティッキービットはビット・スライスで行った演算結果の論理和をとればいいので、どのビットから計算を開始してもかまわない。一般に多ビットの論理和をとる処理は、木構造で段階的に行う必要があり、本質的に時間のかかる処理である。スティッキービットの生成を更に高速化するため、本例では確定した部分積の部分より、段階的にスティッキービットの生成を行っている。
【0028】丸め回路6は入力されるスティッキービットから丸めを行うかどうかを判定し、丸めを行う場合は加算回路7に加算値“1”を出力する。加算回路7は丸めを行う場合に限り、加算回路2の乗算結果に“1”を加算して、丸めを行うがその他の場合は乗算結果をそのまま選択回路8に出力する。また、キャリー生成回路5は、キャリー・セーブ・フォーマットの部分積の和成分SS(50:0)とキャリー成分CC(50:0)を入力とし、部分積の下位のキャリ−C51を求め、求めたキャリーを加算回路7に送る。これにより、加算回路7では加算回路2から入力される乗算結果にキャリーを加算し、正しい乗算結果を得ている。
【0029】選択回路8は乗算結果の1ビットシフトしたものとしないものとをオーバーフローするかどうかによって選択し、最終の乗算結果を出力する。
【0030】本実施形態によれば、乗算回路1の部分積の和成分SSとキャリー成分CCからP、K、G信号を生成し、これらP、K、G信号からスティッキービット100をビットスライスで求めることにより、キャリーの伝搬がないことと、加算回路2による部分積の和成分SSとキャリー成分CCの加算処理と並列にスティッキービット100を求める処理を行うことにより、スティッキービット100を高速に生成することができる。これにより、乗算結果を得る時間を短縮化でき、回路の乗算速度を向上させることができる。
【0031】尚、本発明は上記実施形態に限定されることなく、その要旨を逸脱しない範囲において、具体的な構成、機能、作用、効果において、他の種々の形態によっても実施することができる。
【0032】
【発明の効果】以上詳細に説明したように、本発明によれば、浮動小数点演算器に於けるスティッキービット生成回路において、乗算結果を求める前のキャリー・セーブ・フォーマットの部分積の和成分とキャリー成分の対応するビットごとの論理和の反転G、排他的論理和P、論理積Gを求め、得られP、K、G信号からスティッキービットを求めることにより、スティッキービット生成の処理を高速化して丸め処理に掛かる時間を短縮化することにより、乗算速度を更に向上させることができる。
【出願人】 【識別番号】000003078
【氏名又は名称】株式会社東芝
【出願日】 平成12年9月26日(2000.9.26)
【代理人】 【識別番号】100083806
【弁理士】
【氏名又は名称】三好 秀和 (外7名)
【公開番号】 特開2002−108606(P2002−108606A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2000−292654(P2000−292654)