(57)【特許請求の範囲】
【請求項１】
第１のオペランド、第２のオペランド、及び第３のオペランドを入力して、それらの積和を求める浮動小数点積和演算器において、
前記第１のオペランドと前記第２のオペランドとの積を求める乗算手段と、
桁合わせのための情報であるシフト量を入力し、前記第３のオペランド若しくは先行する積和演算の正規化前の中間結果と前記乗算手段にて求められた乗算結果との桁合わせを行う桁合わせ手段と、
前記乗算結果と桁合わせ手段の桁合わせ結果との和を求めて積和演算を行う加算手段と、
前記加算手段の積和演算結果の正規化を行う正規化手段と、
前記第１のオペランドと第２のオペランドとの積の指数を求める指数部演算手段と、
前記第３のオペランド若しくは先行する演算結果の前記シフト量を計算して、前記桁合わせ手段に出力するシフト量算出手段と、
前記積和演算結果の正規化を行う指数部正規化演算手段と、
を備え、
第１の積和演算の後に第２の積和演算が連続して実行される場合には、
第２の積和演算の実行時において、前記桁合わせ手段は、前記加算手段にて演算された前記第１の積和演算の積和演算結果を入力して、前記第２の積和演算の第１のオペランドと第２のオペランドの積との桁合わせ処理を行い、
前記シフト量算出手段は、第２の積和演算における第１のオペランドと第２のオペランドとの積の指数と、第１の積和演算の指数部の値との差を算出してシフト量とし、
前記加算手段は、前記第１の積和演算の演算中間値を前記第１の積和演算の演算完了以前に、前記先行する積和演算の正規化前の中間結果として前記桁合わせ手段に受け渡たすことで、前記第１の積和演算の終了を待たずに前記第２の積和演算を開始し、
前記桁合わせ手段は、演算開始後に前記先行する積和演算の正規化前の中間結果を第２の積和演算のオペランドとして受け取ることを特徴とする浮動小数点積和演算器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は浮動小数点積和演算器に関し、特に、依存関係にある連続した積和演算についての処理の高速化を図ることができる浮動小数点積和演算器に関する。
【０００２】
【従来の技術】
近年、マルチメディアの急速な普及、ＷＹＳＷＹＧの徹底化、高度なＧＵＩ（Graphic User Interface）、またグラフィックを用いたＴＶゲームの普及などにより、コンピュータ・グラフィック（ＣＧ）が大変重要になってきている。特にパソコンの家庭への急激な普及、ＴＶゲーム機の普及により、高性能プロセッサ上で走らせるアプリケーションとして3次元コンピュータ・グラフィックス(3D-CG)、特に高い品位の動画の要求が高まっている。動画を処理するには、１フレームを３０〜６０分の１秒で処理する必要があり、この処理には膨大な計算量、計算能力が要求される。CGに於けるジオメトリカル処理は、座標変換、視点変換などの幾何学的なグラフィックモデルの変換処理や照光処理を行うフェイズである。そのため、これらの処理には、行列演算、ベクトル演算、が行われるため、内積の演算が多く用いられる。また、以上のような３Ｄ-ＣＧ処理以外にも、従来からの科学技術計算に於ける数値計算に於いても同様に、内積の計算は多用される。
【０００３】
以上のような要求により高速な積和演算器の実現が望まれている。以下に従来の浮動小数点積和演算器の構成に関して具体的に説明する。積和演算器の構成の方法には、大きく分けて２つの方法がある。
【０００４】
第１の従来の浮動小数点積和演算器の構成は、積和演算器を直接構成する手法である。図４に第１の従来の浮動小数点積和演算器の仮数部演算器および指数部演算器のブロック図を示す。仮数部演算器は、演算器は、第１、第２のオペランドの積を求める乗算ツリー３０１、３０２と、第３のオペランドの桁合わせを行う双方向シフタ３０３と、前記乗算結果および桁合わせ結果の和（積和）を求める加算器３０４、３０５と、前記加算器による積和演算結果の正規化を行う正規化回路３０７と、先行０検出回路３０６とから構成される。また、指数部演算器は、第１、第２のオペランドの積の指数部の値（指数部同士の和）を計算する加算器３０８、第３のオペランドと前記第１、第２のオペランドの積との和（積和）の指数部（第３のオペランドの指数部と前記第１、第２のオペランドの積の指数部の内、大きい方の値）を求める選択回路３１８と、桁合わせの桁数（第３のオペランドの指数部と前記第１、第２のオペランドの積の指数部の差）を求める減算器３０９と正規化を行う減算器３１２とから構成される。
【０００５】
この演算器は、３ソース・オペランド、１ディスティネーション、計４オペランドの演算器である。積和演算は、次のように実行される。すなわち、第１、第２のオペランドは、第１、第２のオペランドの積を求める乗算ツリー３０１、３０２に入力され、乗算が行われる。この処理と並行して、第３のオペランドの桁合わせが双方向シフタ３０３により行われる。左右どちらに、何ビットシフトされるかは、第１と第２のオペランドの指数の和と第３のオペランドの指数の差として求められる。第１、第２のオペランドの積と第３のオペランドの桁合わせ結果の和（積和）は、加算器３０４、３０５によって求められる。前記加算器による積和演算結果は、正規化回路３０７で正規化が行われる。
【０００６】
これら、一連の処理は２ステージのパイプライン処理によって実行される。したがって、あるオペランドの演算結果は、２クロック後にならないと次の演算のオペランドとして用いることができない。すなわち依存関係のある演算は、２クロック毎にしか実行することができない。図５に内積演算の命令シーケンス（同図（ａ））とその実行のタイミング（同図（ｂ））を示す。このタイミング図に於いて、Ｆ，Ｄ，Ｅ１、Ｅ２、ＷＢ  は、パイプラインの各ステージを表す。すなわち、Ｆ／命令フェッチ・ステージ、Ｄ／命令デコード・ステージ、Ｅ１，Ｅ２／演算実行ステージ、ＷＢ／ライトバック・ステージである。
【０００７】
第２の従来の浮動小数点積和演算器の構成は、独立した乗算器および加減算器を実装し、積和演算はこれらの演算器を縦列接続、あるいは演算結果をオペランドとしてバイパスすることにより実現する手法である。専用の積和命令を持つ方法と、バイパスを用いて乗算、加算によって実現する方法がある。図６に第２の従来の浮動小数点積和演算器の仮数部演算器のブロック図を示す。乗算器は、第１、第２のオペランドの積を求める乗算ツリー５０１、５０２、部分積の最終加算を行う加算器５０５、正規化回路５０７、先行０検出回路５０６から構成される。加算器は、オペランドの桁合わせを行うシフタ５０３と、和を求める加算器５０５’、正規化回路５０７’、先行０検出回路５０６’から構成される。
【０００８】
このような構成では、積和演算の結果を得るまでに第１の構成方法よりも多くの時間を要する。一般的なＭＰＵに実装された浮動小数点演算器では、乗算、加減算を行うのに２ないし５サイクルを必要とするように設計されている。例えば、乗算、加減算が共に２クロックで実行できたとすると、２サイクル毎に命令の発効はできるが、積和の結果を求めるには４クロックが必要になる。図７に内積演算の命令シーケンス（同図（ａ））とその実行のタイミング（同図（ｂ））を示す。
【０００９】
内積の実行には依存関係のある積和演算が必要である。図５、図７で説明したように、第１の構成、第２の構成を用いて内積を求める命令シーケンスを実行した場合には、依存関係のある積和演算は連続に実行できない。
【００１０】
このような場合、一般には図８に示すように、命令のスケジューリング技術によって独立な命令を実行し、演算のレイテンシを隠蔽するが、独立に実行できる命令が無い場合には演算器は演算結果の終了を待たなければならない。特に、第２の従来の構成のようにレイテンシが大きい場合には、この傾向が大きくなる。
【００１１】
このように依存関係のある積和演算が連続実行できない場合には、
（１）連続する依存関係のある積和演算の間に実行可能な演算がない場合には、オーバヘッドを隠蔽できない
（２）スケジューリングなどの技術が必要で、プログラミングが難しい
（３）中間値を保存するため、レジスタを多く必要とする
などの問題点があった。
【００１２】
【発明が解決しようとする課題】
以上のように従来の浮動小数点積和演算器は、整数積和演算器と異なり、レイテンシが多く、依存のある積和演算を毎クロックごとに実行することができない、という問題点があった。
【００１３】
本発明は、以上のような問題点を鑑みて成されたものであり、その目的とするところは、連続する積和演算の処理時間を短縮することができ、特に、毎クロックごとに依存する積和演算を実行開始、終了することのできる浮動小数点積和演算器を提供することである。
【００１４】
【課題を解決するための手段】
上記目的を達成するため、本発明の特徴は、第１のオペランド、第２のオペランド、及び第３のオペランドを入力して、それらの積和を求める浮動小数点積和演算器において、前記第１のオペランドと前記第２のオペランドとの積を求める乗算手段と、桁合わせのための情報であるシフト量を入力し、前記第３のオペランド若しくは先行する演算の結果と前記乗算手段にて求められた乗算結果との桁合わせを行う桁合わせ手段と、前記乗算結果と桁合わせ手段の桁合わせ結果との和を求めて積和演算を行う加算手段と、前記加算手段の積和演算結果の正規化を行う正規化手段と、前記第１のオペランドと第２のオペランドとの積の指数を求める指数部演算手段と、前記第３のオペランド若しくは先行する演算結果の前記シフト量を計算して、前記桁合わせ手段に出力するシフト量算出手段と、前記積和演算結果の正規化を行う指数部正規化演算手段と、を備え、第１の積和演算の後に第２の積和演算が連続して実行される場合には、前記桁合わせ手段は、前記加算手段にて演算された前記第１の積和演算の積和演算結果を入力して、前記第２の積和演算の第１のオペランドと第２のオペランドの積との桁合わせ処理を行い、前記シフト量算出手段は、第２の積和演算における第１のオペランドと第２のオペランドとの積の指数と、第１の積和演算の指数部の値との差を算出してシフト量とすることである。
【００１５】
ここで、前記加算手段は、前記第１の積和演算の演算中間値を前記第１の積和演算の演算完了以前に、前記第２の積和演算のオペランドとして前記桁合わせ手段に受け渡たすことで、前記第２の積和演算は前記第１の積和演算の終了を待たずに演算を開始し、前記桁合わせ手段は、演算開始後に前記第１の積和演算の中間結果を第２の積和演算のオペランドとして受け取ることが好ましい。
【００１６】
上記発明の構成では、積和演算が連続して実行される場合には、先行する積和演算の結果は、正規化されずに現在実行中の積和演算の第３のオペランドとしてフィード・バックされ、桁合わせが実行される。桁合わせは、現在実行中の積和演算における第１、第２のオペランドの積の指数部と先行する積和演算の指数部（未正規化）の差として求める。
【００１７】
従って、上記発明の構成によれば、連続する積和演算の処理時間を短縮することができ、特に、毎クロックごとに依存する積和演算を実行開始、終了することのできるのである。
【００１８】
ここで、「桁合わせのための情報であるシフト量」には桁合わせの桁数（シフトビット数）、桁合わせの方向（シフト方向）を含む。
【００１９】
なお、差が大きすぎて、正規化結果がシフトアウトする事があるが、ＭＳＢ側にシフトアウトする場合は積が先行する累積結果と比較して有効範囲外であり、ＬＳＢ側にシフトアウトする場合は逆に累積結果が積と比較して有効範囲外となる。この場合は、演算規則に従って丸め処理が行われる。
【００２０】
【発明の実施の形態】
本発明に係る浮動小数点積和演算器の実施形態について、図面を参照しながら説明する。図１は、本発明に係る浮動小数点積和演算器を示したブロック図である。この浮動小数点積和演算器は、第１のオペランドと第２のオペランドとの積を求める乗算手段１０１、１０２と、桁合わせのための桁数であるシフト量を入力し、第３のオペランド若しくは先行する演算の結果と乗算手段１０１、１０２にて求められた乗算結果との桁合わせを行う桁合わせ手段１０３と、前記乗算結果と桁合わせ手段１０３の桁合わせ結果との和を求めて積和演算を行う加算手段１０４と、前記加算手段１０４の積和演算結果の正規化を行う正規化手段１０７と、第１のオペランドと第２のオペランドとの積の指数を求める指数部演算手段１０８と、第３のオペランド若しくは先行する演算結果の前記シフト量を計算して、桁合わせ手段１０３に出力するシフト量算出手段１０９と、積和演算結果の正規化を行う指数部正規化演算手段１１２とを備えてある。
【００２１】
図２は、本実施形態の構成を示すブロック図である。図２を参照しながら実施形態の構成を説明する。図２には、３２ビット単精度浮動小数点積和演算器の仮数部演算部、指数部演算部を示してある。この実施形態では、演算器は２ステージのパイプラインで構成される。ここで３２ビット単精度の数値フォーマットは、IEEE754-85浮動小数点演算規格に準ずることとする。
【００２２】
まず、仮数部演算器の構成について説明する。構成部材１０１、１０２は、乗算ツリーである。第１、第２のオペランドの仮数部（信号線１、２）を入力し、仮数部の乗算結果（信号線４、５）を出力する。乗算ツリーは、ブース（Booth）のデコーダ１０１とワラス・ツリー（WallaceTree）１０２とから構成され、乗算結果は、キャリー・セーブ・フォーム形式で４８ビットの和成分（信号線４）およびキャリー成分（信号線５）として求められる。バレルシフタ１０３は、７５ビットの双方向バレルシフタであって、積和結果（信号線１２）または第３のオペランドの桁合わせを行う。選択回路１１４は、乗算結果（信号線４、５）を０にクリアするための選択回路である。桁合わせの結果がシフトアウトする場合にクリアする。３入力加算機ＣＳＡ加算器（CarrySaveAdder）１０４は、乗算結果（信号線６、７）および桁合わせ結果（信号線８）の加算を行い、和成分（信号線９）、キャリー成分（信号線１０）として求める。選択回路１１３は、第３のオペランドとして、先行する演算の結果とレジスタから読み出した値の何れかを選択する。以上が第１ステージの構成である。
【００２３】
加算器１０５は、７５ビットのＣＬＡ（CarryLookaheadAdder）で、加算器１０４で求めた和成分（信号線９）、キャリー成分（信号線１０）の加算を行って、積和結果（信号線１２）を求める。また、構成部材１０６は、７５ビットの先行０検出器（ＬＺＡ：LeadingZeroAbsoruter）であって、積和結果（信号線１２）で最もMSB側に位置する‘１’を検出して、積和結果（信号線１２）を正規化するために必要なシフト数を算出する。この処理は、加算器１０５に於ける加算処理と並行して実行される。シフタ１０７は、５０ビットの左方向シフタであって、積和結果（信号線１２）の正規化を行い正規化された累積結果（信号線１４）を求める。以上が第２ステージの構成である。
【００２４】
つぎに、指数部演算器の構成について説明する。構成部材１０８は、９ビットの加算器であり、第１及び第２のオペランドの指数部（信号線１５、１６）より、第１、２のオペランドの積の指数部の値（信号線２６）を求める。構成部材１０９は、１０ビットの減算器であり、仮数部の桁合わせに必要なシフト方向およびシフト数（信号線１７）を求める。構成部材１１０は、１０ビットの減算器であり、仮数部の桁合わせに於いてシフト可能な最大ビット数（信号線２２）を求める。シフト可能な最大ビット数とは、桁合わせシフトによって仮数部がシフトされた場合、ＭＳＢが桁合わせシフタ１０３からシフトアウトしないこと、である。構成部材１１１は１０ビットの比較器であり、減算器１０９で求めた桁合わせのためのシフト量（信号線１７）が、減算器１１０で求めた最大シフト数（信号線２２）以内であることを検出し、もし最大シフト数より大きかった場合には信号線１９をアサートする。選択回路１１６は、第３のオペランドとして、先行する演算の結果（信号線２０）とレジスタから読み出した値（信号線２５）の何れかを選択する。また、選択回路１１８は、積和演算結果の指数の値を選択する。第１、第２のオペランド（信号線１５、１６）の積が、第３のオペランド（信号線２５）との桁合わせに於いてシフトアウトした場合（信号線１９がアサートの場合）は、第３のオペランドの指数の値（信号線２７）が選択される。構成部材１１２は、１０ビットの減算器であり、正規化された累積結果の指数（信号線２４）を計算する。
【００２５】
つぎに本実施形態の動作について説明する。本積和演算器は、積和すなわち  Ｒ＝ＡｘＢ＋Ｃ  なる計算を行う。ここで本演算器は、ＡあるいはＢを‘１’にする事により加減算器として、Ｃを‘０’にする事により乗算器として動作することに注意されたい。ここでは、まず積和演算を単独で実行した場合の動作について説明する。選択回路１１３、１１６は、レジスタから読み出した値を、第３オペランドとして選択している。
【００２６】
まず第１ステージでは、オペランドA,Bの仮数部は、第１、第２のオペランド（信号線１、２）として、乗算ツリー１０１、１０２に入力され、仮数部の乗算結果（信号線４、５）を出力する。この乗算結果は、キャリー・セーブ・フォーム形式で、４８ビットの和成分（信号線４）、キャリー成分（信号線５）として求められる。一方、第３のオペランドＣの仮数部は、バレルシフタ１０３に入力され、第１、第２の乗算結果と加算を行うために桁合わせ処理を行う。桁合わせの桁数（シフトビット数）、桁合わせの方向（シフト方向）は、加算器１０８で求めた第１、第２のオペランドＡ，Ｂの指数の和（信号線２６）から第３のオペランドＣの指数（信号線２７）を引いた差（信号線１７）として減算器１０９によって求める。シフトビット数は、減算値の絶対値である。また、差（信号線１７）が負の場合は第３オペランドの指数の方が大きいので左シフト、正の場合は逆に小さいので右シフトとなる。ただし、差（信号線１７）は指数部比較器１１１で最大シフト数（信号線２２）と比較され、この値が最大シフト数（信号線２２）より大きな場合は、第１、第２のオペランドＡ，Ｂの積の仮数部が有効桁数以下（桁合わせの結果、仮数部がシフトアウトする）であることを示し、選択回路１１４、１１５は‘０’を選択する（シフトアウトするので、第３のオペランドには、何も足さない）。３つのオペランドの仮数部（信号線６、７、８）は、ＣＳＡ加算器４によってキャリー・セーブ・フォーム形式で、７２ビットの和成分（信号線１０）、キャリー成分（信号線１１）として求められ、パイプラインレジスタ１２３、１２４に記憶される。
【００２７】
第２ステージでは、まず、パイプラインレジスタ１２３、１２４に記憶された和成分（信号線１０）、キャリー成分（信号線１１）が、加算器１０５で加算される。また、加算と並行して先行０検出回路１０６によって正規化のためのシフト数（信号線１３）が算出される。このシフト数（信号線１３）は、桁合わせシフタ１０７に入力され仮数部の正規化が行われる。また、シフト数（信号線１３）は減算器１１２にも入力され、指数部の正規化が行われる。以上が、単独で積和演算を実行した場合の動作である。
【００２８】
次に連続して積和計算を行った場合の動作を説明する。既に１サイクル前で積和演算が実行されているとする。選択回路１１３、１１６は、先行する演算の演算中間値（信号線１２、２０）を第３オペランドとして選択している。第１、第２のオペランドの仮数部は、第１、第２のオペランド（信号線１、２）として、乗算ツリー１０１,１０２に入力され、仮数部の乗算結果（信号線３、４）を出力する。この乗算結果は、キャリー・セーブ・フォーム形式で、４８ビットの和成分（信号線４）、キャリー成分（信号線５）として求められる。一方、先行する演算の中間値の仮数部（信号線１２）は、バレルシフタ１０３に入力され、第１、第２の乗算結果と加算を行うために桁合わせ処理を行う。ここで中間値１２は、先行する積和演算の中間結果、すなわち正規化シフトする前の加算結果である。この実施形態では第２図に示すように、先行する積和演算の第２ステージの後半から現在実行中の積和演算の第１ステージにデータを転送している。このようにすることによって累積演算を毎クロックごとにスタート、実行することが可能となっている。これは、第１、第２のオペランドの積を求める必要となる時間が、桁合わせシフト、及び最終加算に必要な時間よりも長くかかることによる。桁合わせ桁数（シフトビット数）、桁合わせの方向（シフト方向）は、加算器１０８で求めた第１、第２のオペランドの指数の和（信号線２６）から、先行する積和演算の正規化前の指数の値（信号線２０）を引いた差（信号線１７）として減算器１０９で求める。シフトビット数は、差（信号線１７）の絶対値である。ここで差（信号線１７）が負の場合は累積結果０１２の方が大きいので左シフト、正の場合は逆に右シフトとなる。ただし、差（信号線１７）は指数部比較器１１１で最大シフト数と比較される。この値（信号線１７）が最大シフト数（信号線２２）より大きな場合は、第１、第２のオペランドの積が仮数部の有効桁数以下（桁合わせの異結果、仮数部がシフトアウトする）であることを示す。最大シフト数（信号線２２）は、桁合わせシフトを行った結果、ＭＳＢが有効桁数からシフトアウトしない範囲を示している。この値は、先行する積和演算によって行われた桁合わせシフト量（信号線１８）を先行する積和演算の最大シフト量（信号線２３）（初期値＝２４（仮数部の有効ビット数、この例は単精度数であるから２４））から減算器１１０によって引いたものである。最大シフト量（信号線２２）より信号線１７が大きい場合は、選択回路１１４、１１５は‘０’を選択する。３つのオペランドの仮数部（信号線６、７、８）は、ＣＳＡ加算器１０４によってキャリー・セーブ・フォーム形式で、７２ビットの和成分（信号線９）、キャリー成分（信号線１０）として求められ、パイプラインレジスタ１２３、１２４に記憶される。
【００２９】
第２ステージでは、まず、パイプラインレジスタ１２３、１２４に記憶された和成分（信号線９）、キャリー成分（信号線１０）は、加算器１０５で加算される。この値は、同じステージ内に後続の積和演算の第３オペランド（信号線１２）として、後続の積和命令の第１ステージにバイパスされる。また、加算と並行して先行０検出回路１０６によって正規化シフト数（信号線１３）が算出される。このシフト数（信号線１３）は、桁合わせシフタ１０７に入力され仮数部の正規化が行われる。また、正規化前の指数の値（信号線２０）は、後続の積和演算の第３オペランドとして、後続命令の第１ステージにバイパスされるとともに、減算器１１２に入力もされ、指数部の正規化が行われる。
【００３０】
以上、積和計算の過程を説明した。このように本発明では、先行する第１の演算の結果の正規化を行う前に後続の第２の積和演算のオペランドとすることによって、第１の演算による正規化に於けるシフト処理と第２の積和演算の桁合わせに於けるシフト処理とを一度に行い、連続する積和演算の処理を高速化する。
【００３１】
上記説明に於いて、第２のオペランドを‘１’とすれば加算・減算、第３のオペランドを‘０’とすれば乗算を実行することができる。
【００３２】
次に、具体的な内積を求めるプログラム・シーケンスを例に、図３を参照しながらその過程を順をおって説明する。
【００３３】
A × B  + D × E + F × G
上に示す内積計算は、累積演算を行えば効率よく求めることができる。すなわち、乗算、および、積和演算を用いて、同図（ａ）に示す命令シーケンスの如く実現できる。まず、第１の命令MULAは、積和演算の第３のオペランドを０として実行することにより実現される。次に第２の命令MACは、D, Eを第１、第２オペランド、また先行するMULAの乗算結果を第３オペランドとして実行される。MULAの乗算結果は、図２に示すように第２ステージから現在実行されている第２の命令MACの第１ステージにバイパスされる。さらに第３の命令MACは、F, Gを第１、第２オペランド、また先行する第２の命令MACの積和結果を第３オペランドとして実行される。この場合も、第２の命令MACの積和結果は、同図（ｂ）のタイミング図を示すように第２ステージから現在実行されているMAC命令の第１ステージにバイパスされる。
【００３４】
以上のように本実施形態によれば、積和演算を効率良く実行することができる。特に従来では連続して実行することのできなかった依存関係のある積和演算を毎クロック連続して、すなわち、スループット１で実行することができる。
【００３５】
【発明の効果】
本発明によれば、積和結果の正規化を施す前に後続の積和演算の加算用オペランドとして用いることにより、連続する積和演算の処理時間を短縮する積和演算器、特に毎クロックごとに依存する積和演算を実行開始、終了することのできる浮動小数点積和演算器を提供することができる。
【００３６】
【発明の効果】
本発明によれば、積和結果の正規化を施す前に後続の積和演算の加算用オペランドとして用いることにより、連続する積和演算の処理時間を短縮する積和演算器、特に毎クロックごとに依存する積和演算を実行開始、終了することのできる浮動小数点積和演算器を提供することができる。
【図面の簡単な説明】
【図１】本発明に係る浮動小数点積和演算器を示すブロック図である。
【図２】本発明の実施形態に係る浮動小数点積和演算器を示すブロック図である。
【図３】本実施形態による内積演算の例を説明するための図である。
【図４】第１の従来例の構成を示すブロック図である。
【図５】第１の従来例による内積演算の例を説明するための図である。
【図６】第２の従来例の構成を示すブロック図である。
【図７】第２の従来例による内積演算の例を説明するための図である。
【図８】従来の例による命令スケジューリング技術によって独立に命令を実行した場合を説明するための図である。
【符号の説明】
１，２，４，５，６，７，８，９，１０，１２，１３，１４，１５，１６，１７，１８，１９，２０，２１，２２，２３，２４，２５，２６，２７  信号線
１０１  ブースのデコーダ
１０２  ワラスのツリー
１０３  桁合わせ回路
１０４、１０５  加算器
１０６  先行０検出回路
１０７  正規化回路
１０８，１０９，１１０，１１２  指数部加減算器
１１１  比較器
１１３，１１４，１１５，１１６，１１７，１１８  選択回路
１２０，１２１，１２２，１２３，１２４，１２５，１２６，１２７，１２８，１２９，１３０  パイプラインレジスタ
３０１  ブースのデコーダ
３０２  ワラスのツリー
３０３  桁合わせ回路
３０４，３０５  加算器
３０６  先行０検出回路
３０７  正規化回路
３０８，１０９，３１２  指数部加減算器
５０１  ブースのデコーダ
５０２  ワラスのツリー
５０３  桁合わせ回路
５０４  スワッパー
５０５，５０５’  加算器
５０６，５０６’  先行０検出回路
５０７，５０７’  正規化回路
【図１】
0003695820.tif 000002
【図２】
0003695820.tif 000003
【図３】
0003695820.tif 000004
【図４】
0003695820.tif 000005
【図５】
0003695820.tif 000006
【図６】
0003695820.tif 000007
【図７】
0003695820.tif 000008
【図８】
0003695820.tif 000009