(57)【特許請求の範囲】
【請求項１】
輝度値を表わす第１データを入力する第１データ入力手段と、
浮動小数点データで表わされる第２データを入力する第２データ入力手段と、
前記第１および第２データの演算を直接ハードウェアで行なう演算手段と、
前記演算手段の演算結果を前記入力された輝度値データと同じフォーマットで出力する手段とを備え、
前記第１のデータはＮ個の成分で規定され、前記各成分はそれぞれｎ１ビットで表わされ、前記第２データはｍ１ビットで表わされ、
前記演算手段は、前記第１データを各々が前記ｎ１ビットを有するＮ個の成分に分離する手段と前記第２データから前記ｎ１ビットを有する仮数部を抽出する手段とを含む乗算準備手段と、前記Ｎ個のｎ１×ｎ１ビット乗算器とを含む、乗算装置。
【請求項２】
輝度値を表わす第１データを入力する第１データ入力手段と、
浮動小数点データで表わされる第２データを入力する第２データ入力手段と、
前記第１および第２データの演算を直接ハードウェアで行なう演算手段と、
前記演算手段の演算結果を前記入力された輝度値データと同じフォーマットで出力する手段とを備え、
前記第１のデータはＮ個の成分で規定され、前記各成分はそれぞれｎ１ビットで表わされ、前記第２データはｍ１ビットで表わされ、
前記演算手段は乗算準備手段と乗算器とをさらに含み、
前記乗算準備手段は、前記第１データを各々がｎ１ビットを有するＮ個の成分に分離する手段と、前記第２データから前記ｎ１ビットを有する仮数部を抽出する手段とを含み、
前記乗算器は、各々がｎ１ビットで表わされた前記Ｎ個の成分のそれぞれのデータの間に（Ｎ−１）個のｎ１ビットの“０”を書込んだｎ１×（２Ｎ−１）ビットのデータをハードウェアで準備する第１データ準備手段および前記準備されたｎ１×（２Ｎ−１）ビットのデータと前記第２データから抽出されたｎ１ビットの仮数部との乗算を行なう、乗算装置。
【請求項３】
前記装置はさらに、ｍ１ビットの浮動小数点データで表わされる第３データを入力する第３データ入力手段と、前記第３データからｎ２ビットを有する仮数部を抽出する手段とを備え、
前記第２データから仮数部を抽出する手段はｎ１ビットではなく、ｎ２ビットを有する仮数部を抽出し、
前記乗算準備手段はさらに、
外部からの信号に応答して前記第１データと第２データとの第１の乗算か、前記第２データと第３データとの第２の乗算のいずれかを選択する選択手段と、
前記選択に応じて前記第１の乗算であれば、前記第１データ準備手段からのデータを準備し、前記第２の乗算であれば、下位にｎ２ビットの仮数部を有し、上位に（ｎ１×（２Ｎ−１）−ｎ２）ビットの“０”を有するｎ１×（２Ｎ−１）ビットデータを準備する第２データ準備手段からのデータを準備する手段とを含み、
前記乗算器は、前記選択に応じて前記第１または第２データ準備手段の準備した前記ｎ１×（２Ｎ−１）ビットデータと前記第２データから抽出されたｎ２ビットのデータとの乗算を行なう、請求項２に記載の乗算装置。
【請求項４】
前記第２データおよび第３データは、前記ｍ１ビットより大きいｍ２ビットで表わされ、それによって前記第２および第３データから仮数部を抽出する手段はｎ３ビットの仮数部を抽出し、
前記第２データ準備手段は、前記選択に応じて、前記第２の乗算であれば下位にｎ３ビットの仮数部を有し、上位に（ｎ１×（２Ｎ−１）−ｎ３）ビットの“０”を有するｎ１×（２Ｎ−１）ビットデータを準備し、
前記乗算器は前記選択に応じて前記準備されたｎ１×（２Ｎ−１）ビットデータと前記第２データから抽出されたｎ３ビットデータとの乗算を行なう、請求項３に記載の乗算装置。
【請求項５】
前記装置はさらに、
外部から与えられる信号に応答して前記ｍ１ビットで表わされる第４データと前記ｍ１ビットより大きいｍ２ビットで表わされる第５データおよび前記ｍ１ビットで表わされる第６データと前記ｍ２ビットで表わされる第７データとからそれぞれが前記ｍ１またはｍ２ビットで表わされる前記第２および第３データを選択する手段と、外部から与えられる信号に応じて、前記第２および第３データがｍ１ビットである場合には、ｎ３ビットデータをｎ２ビットデータに切換える手段とを備える、請求項４に記載の乗算装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は乗算装置に関し、特に三次元コンピュータグラフィックスを中心としたコンピュータグラフィックス技術における数値計算を高速処理できる乗算装置に関する。
【０００２】
【従来の技術】
近年、コンピュータの高性能化に伴い、コンピュータグラフィックス技術が急速に発展している。コンピュータグラフィックスは、各種科学技術計算結果の可視化や、人工現実感等を達成する上で必要な技術で、その実現には極めて高速の数値演算処理が必要とされる。
【０００３】
コンピュータグラフィックスにおいて質の高い画面を得ようとする場合、画面上に現れる全光線を追跡するレイトレーシング法や、グーロウシェイディング法、フォンシェーディング法などの各種シェーディング法が用いられる。いずれの方式においても計算の途中において物体の各点での輝度を決定するために次のような計算が行なわれる。
【０００４】
【数１】
0003583474.tif 000002
【０００５】
ここで、Ｉは物体各点での光線の輝度であり、Ｉｉをこの点に入射する光線の輝度値であり、Ｘｉは光線の角度や光源からの距離、および反射率や透過率で決まる係数値である。通常、輝度値Ｉｉは整数値で表わされ、係数Ｘｉは計算の精度を上げるために浮動小数点データで計算される。したがって、式（１）の計算を行なうためには整数と浮動小数点データとの乗算が必要となる。しかしながら、従来はこの計算を直接行なう機能を有するハードウェアはなく、次に示すような方法が用いられていた。
【０００６】
図８は従来の整数と浮動小数点データとの乗算を行なう場合の機能ブロック図である。これはデータ長を３２ビットとした場合の一例を示している。図８を参照して、乗算部５には、３２ビットの整数で表わされた輝度値データ１が入力される。輝度値データ１は通常３原色（Ｒ：赤、Ｇ：緑、Ｂ：青）と透明度を表わす値αの各８ビットのデータから構成されている。なおここでは透明度データαが通常の３原色以外に用いられたが、輝度値データは通常の３原色を含んでおれば他のデータはこの透明度に限らない。
【０００７】
乗算部５にはもう一方のデータとして浮動小数点データで表わされた係数２が入力される。ここで係数２はＩＥＥＥ規格に準拠する３２ビットの単精度浮動小数点データである。すなわち、最上位ビットが符号ビットであり、次の８ビットが指数部であり、下位２３ビットが仮数部を表わす。この係数２は浮動小数点データを固定小数点データに変換するための固定小数点化装置３へ入力され、その結果固定小数点データ４が得られる。固定小数点データ４は固定ビット長の整数部と小数部とからなり、この固定小数点データ４が乗算部５へ入力され、先の輝度値データ１と乗算される。乗算部５で乗算された結果は再び輝度値のフォーマットに変換するフォーマット変換部６で変換され、最終的に輝度値データ７が得られる。
【０００８】
固定小数点化装置３は浮動小数点データ２に対して指数部の値に従って仮数部をシフトさせることによって固定小数点データ４を得る。乗算部５は輝度値データ１の４つのデータの要素のそれぞれと固定小数点データ４とを別々に乗算する。フォーマット変換部６は、乗算部５の乗算結果の整数部を８桁分ずつ取出して並べる。従来は上記した固定小数点化装置３、乗算部５およびフォーマット変換部６の各部分には専用のハードウェアがほとんどなく、上記のような演算はＡＬＵや乗算器等の汎用の演算器だけを用いて主にソフトウェアで処理が行なわれていた。このために計算にはデータを１バイトずつ個別に取出して処理したり、シフトあるいはマージしたりする操作が必要で、多数の処理ステップを踏むために計算時間が長くかかるという問題点があった。
【０００９】
このような問題点を改善するために、乗算部５およびフォーマット変換部６を専用ハードウェア化した例もある。この例がたとえば“Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  ｗｉｔｈ  ｔｈｅ  ８８１１０  ＲＩＳＣ  ＭＩＣＲＯＰＲＯＣＥＳＳＯＲ”，  ｄｉｇｅｓｔ  ｏｆ  ｐａｐｅｒｓ，  ＣＯＭＰＣＯＮ  ’９２，  ｐｐ．１６９−１７４，  １９９２  に開示されている。同文献によれば、ｐｕｎｐｋ、ｐｍｕｌおよびｐｐａｃｋという命令を使用可能とすることによってこの機能を実現している。
【００１０】
図９（Ａ）、（Ｂ）および（Ｃ）は同文献に示されたこの機能を達成する方法を説明するための図である。図９（Ａ）、（Ｂ）および（Ｃ）を参照して、命令ｐｕｎｐｋによって（Ａ）に示すようにそれぞれが８ビットの透明度データα，ＲＧＢデータを含む３２ビットデータから６４ビットデータにデータを拡張する。これにｐｍｕｌで８ビットのデータＡｘを乗ずることによって（Ｂ）に示すように各輝度値の乗算を実現することができる。また、（Ｃ）に示すようにｐｐａｃｋ命令によって拡張されたデータの各上位８ビットずつを取出して、もとの３２ビットの輝度データのフォーマットにすることができる。
【００１１】
【発明が解決しようとする課題】
従来のソフトウェアによる処理の問題点を改善するめたの専用ハードウェアは上記のように構成されていた。この方式によれば、６４ビットの乗算器があれば通常の３原色プラスたとえば透明度のような４つの輝度要素を並列に乗算できるメリットがあり、計算時間を短縮することができるというメリットがある。しかしながら、この方法においても、浮動小数点データである係数２から固定小数点データ４へのデータ変換が必要であり、またｐｐａｃｋ，ｐｕｎｐｋなどの命令の実行が必要なために、複数の計算ステップを要し、やはり計算時間が長くかかってしまうという問題点があった。
【００１２】
この発明は上記のような問題点を解消するためになされたもので、以下のような内容を目的とする。
【００１３】
（１）  高速で輝度計算を行なうことができる乗算装置を提供する。
（２）  簡単な構成で輝度値データと浮動小数点データの乗算が可能な乗算装置を提供する。
【００１４】
（３）  簡単な構成で高速な輝度計算が可能な乗算装置を提供する。
（４）  通常の浮動小数点演算だけでなく、輝度の演算も容易に行なうことができ、グラフィックス計算に適した乗算装置を提供する。
【００１５】
（５）  精度の高い輝度値データや浮動小数点データの乗算が可能な乗算装置を提供する。
【００１６】
（６）  単精度および倍精度浮動小数点乗算機能に加えて、輝度値と単精度浮動小数点データとの乗算および輝度値と倍精度浮動小数点データとの乗算を少ないハードウェアの追加で実行できる乗算装置を提供する。
【００１７】
【課題を解決するための手段】
請求項１に係る乗算装置は、輝度値を表わす第１データを入力する第１データ入力手段と、浮動小数点データで表わされる第２データを入力する第２データ入力手段と、第１および第２データの乗算を直接ハードウェアで行なう手段と、乗算結果を入力された輝度値データと同じフォーマットで出力する手段とを備える。第１のデータがＮ個の成分で規定され、各成分はそれぞれｎ１ビットで表わされ、第２データはｍ１ビットで表わされ、演算手段は、第１データを各々がｎ１ビットを有するＮ個の成分に分割する手段と第２データからｎ１ビットを有する仮数部を抽出する手段とを含む乗算準備手段と、Ｎ個のｎ１×ｎ１ビットの乗算器とを含む。
【００１９】
請求項２に係る乗算装置は、輝度値を表わす第１データを入力する第１データ入力手段と、浮動小数点データで表わされる第２データを入力する第２データ入力手段と、第１および第２データの乗算を直接ハードウェアで行なう手段と、乗算結果を入力された輝度値データと同じフォーマットで出力する手段とを備える。乗算装置において、第１のデータはＮ個の成分で規定され、各成分はそれぞれｎ１ビットで表わされ、第２データはｍ１ビットで表わされ、演算手段は乗算準備手段と乗算器とを含み、乗算準備手段は第１データを各々がｎ１ビットを有するＮ個の成分に分離する手段と、第２データからｎ１ビットを有する仮数部を抽出する手段とを含み、乗算器は、各々がｎ１ビットで表わされたＮ個の成分のそれぞれのデータの間に（Ｎ−１）個のｎ１ビットの“０”を書込んだｎ１×（２Ｎ−１）ビットのデータをハードウェアで準備する第１データ準備手段および準備されたｎ１×（２Ｎ−１）ビットのデータと前記第２データから抽出されたｎ１ビットの仮数部との乗算を行なう。
【００２０】
請求項３に係る乗算装置においては、請求項２の乗算装置がさらにｍ１ビットの浮動小数点で表わされる第３データを入力する第３データ入力手段と第３データからｎ２ビットを有する仮数部を抽出する手段とを含む。第２データから仮数部を抽出する手段はｎ１ビットではなく、ｎ２ビットを有する仮数部を抽出する。乗算準備手段はさらに、外部からの信号に応答して第１データと第２データとの第１の乗算から第２データと第３データとの第２の乗算のいずれかを選択する選択手段と、選択に応じて第１の乗算であれば第１データ準備手段からのデータを準備し、第２の乗算であれば、下位にｎ２ビットの仮数部を有し、上位に（ｎ１×（２Ｎ−１）−ｎ２）ビットの“０”を有するｎ１×（２Ｎ−１）ビットデータを準備する第２データ準備手段からのデータを準備する手段とを含み、乗算器は上記選択に応じて第１または第２データ準備手段の準備したｎ１×（２Ｎ−１）ビットデータと第２データから抽出されたｎ２ビットのデータとの乗算を行なう。
【００２１】
請求項４に係る乗算装置においては、請求項３の乗算装置の第２データおよび第３データはｍ１ビットより大きいｍ２ビットで表わされ、それによって第２および第３データから仮数部を抽出する手段はｎ３ビットの仮数部を抽出し、第２データ準備手段は上記選択に応じて第２の乗算であれば下位にｍ３ビットの仮数部を有し、上位に（ｎ１×（２Ｎ−１）−ｎ３）ビットの“０”を有するｎ１×（２Ｎ−１）ビットデータを準備し、乗算器は上記選択に応じて準備されたｎ１×（２Ｎ−１）ビットデータと第２データから抽出されたｍ３ビットデータとの乗算を行なう。
【００２２】
請求項５に係る乗算装置においては、請求項４の乗算装置がさらに、外部から与えられる信号に応答してｍ１ビットで表わされる第４データとｍ１ビットより大きいｍ２ビットで表わされる第５データおよびｍ１ビットで表わされる第６データとｍ２ビットで表わされる第７データとからそれぞれがｍ１またはｍ２ビットで表わされる第２および第３データを選択する手段を含む。乗算装置においては、外部から与えられる信号に応じて第２および第３データがｍ１ビットであればｎ３ビットデータをｎ２ビットデータに切換える手段をさらに含む。
【００２３】
【作用】
請求項１に係る乗算装置においては、輝度値データと浮動小数点データとを直接ハードウェアで演算する。
【００２４】
請求項１に係る乗算装置においては、乗算手段がＮ個のｎ１×ｎ１ビットの乗算器で構成される。
【００２５】
請求項２に係る乗算装置においては、各々がｎ１ビットで表わされたＮ個の成分のそれぞれのデータの間に（Ｎ−１）個のｎ１ビットの“０”データを書込むことによってｎ×（２Ｎ−１）ビットデータをハードウェアで準備し、それを第２データから抽出されたｎ１ビットの仮数部と乗算するため乗算器を１個とすることができる。
【００２６】
請求項３に係る乗算装置においては、第１データである輝度値データと第２データである浮動小数点データの演算だけでなく、第２データと第３データとの演算すなわち、浮動小数点データ同士の演算が選択的に可能になる。
【００２７】
請求項４に係る乗算装置においては、ｍ１ビットより大きいｍ２ビットで表わされるたとえば倍精度のようなデータを用いて演算が行なわれるため、浮動小数点乗算の精度が向上する。
【００２８】
請求項５に係る乗算装置においては、第２データおよび第３データとしてはｍ１ビットのデータまたはｍ１ビットより大きいｍ２ビットのデータを選択的に用いて乗算が行なわれるため、単精度だけでなくたとえば倍精度のデータを用いた浮動小数点乗算が選択的に可能になる。
【００２９】
【実施例】
（１）  第１実施例
以下この発明の実施例を図面を参照して説明する。図１はこの発明が適用される乗算装置が組込まれた高速の数値演算処理を行なうためのマイクロプロセッサのブロック図である。
【００３０】
図１を参照して、グラフィックス処理を高速に実行するマイクロプロセッサ１００は、整数演算などを実行するＲＩＳＣ型ＣＰＵコア１０１と、ＣＰＵコア１０１に接続され、本願発明に係る乗算装置を制御する浮動小数点演算制御部１０２と、外部データの入出力や、外部への制御信号の出力を行なうバス制御部１０３と、命令をストアする命令キャッシュ１０４と、外部アドレスに接続されメモリの管理を行なうメモリ管理ユニット１０５と、データをストアするデータキャッシュ１０６とを含む。
【００３１】
外部から与えられたデータはバス制御部１０３を介して命令キャッシュ１０４やデータキャッシュ１０６に送られる。命令キャッシュ１０４にストアされたコア命令はＣＰＵコア１０１に与えられる。
【００３２】
浮動小数点演算制御部１０２は、乗算装置１１に入力される輝度値データ１、浮動小数点データ２を出力する。乗算装置１１での演算結果は出力値３として出力され、浮動小数点演算制御部１０２に送られる。浮動小数点演算制御部１０２からは、乗算装置１１に対して乗算内容を制御する乗算命令が出力される。
【００３３】
図２は図１に示したこの発明に係る乗算装置１１のブロック図であり、従来の図８に対応する。図２を参照して乗算装置１１に入力される輝度値データ１、浮動小数点データで表わされる係数２および乗算装置１１から出力される出力データとなる輝度値データ７は従来例と同じである。乗算装置１１は従来の図８に示した固定小数点化装置３、乗算部５およびフォーマット変換部６の機能をすべてハードウェアとして一体化したものである。
【００３４】
図３は図１に示した乗算装置１１の構成を示すブロック図である。図３を参照して、乗算装置１１は４つの８×８ビット乗算器１２〜１５と、それぞれの８×８ビット乗算器１２〜１５に接続された４つのシフタ１６〜１９とを含む。８×８ビット乗算器１２〜１５のそれぞれは輝度値データ１から透明度を表わす値α、Ｒ、Ｇ、Ｂのそれぞれの８ビットのデータが入力され、浮動小数点データで表わされる係数２からはその仮数部から上位８ビットがそれぞれ入力される。８×８ビット乗算器１２〜１５は輝度値の各値（８ビット）と浮動小数点データで表わされる係数２の仮数部の上位８ビットとの積を計算しそれぞれ１６ビットのデータをシフタ１６〜１９へ出力する。
【００３５】
ここで係数２がＩＥＥＥ規格に準拠している場合には、最上位の“１”が省略された表現となっているため、この８×８ビット乗算器１２〜１５の入力の一方は係数２の仮数部上位７ビットとその上位に“１”を付加した８ビットとなる。
【００３６】
シフタ１６〜１９は、８×８ビット乗算器１２〜１５の出力の１６ビットデータを浮動小数点データで表わされる係数２の値によって左右方向シフトして整数部を８ビットのデータとして出力する働きを有する。ただし、浮動小数点データで表わされる係数２がＩＥＥＥ規格に準拠している場合には、指数部にはバイアス値“０１１１１１１１”（＝１２７）が付加された値となっているため、まず指数部からこのバイアス値を引かなければならない。これは、ＩＥＥＥ規格においては、８ビットの指数部が−１２８〜＋１２７を表わすのに、負の表現を避けるために１２７を加えた表現をとるように定められているためである。これによって表現上は指数部は−１〜＋２５４となる。このうち−１は∞や非数等の例外を表わすために用いられるため、数値としての意味をもつのは０〜２５４となり、負の表現が避けられる。したがって実際の値を求めるには指数部の値から１２７を差し引かなければならない。
【００３７】
次に例を挙げて説明する。いま輝度値１の成分を“００００１０１０”とし、浮動小数点データで表わされる係数２のバイアスを差し引かれた指数部を“００００００１０”、最上位に“１”を付加した８ビットの仮数部を“１．００００００１”とする。輝度値と仮数部との積の結果は“００００１０１０．０００１０１００”となるが、指数部は十進数で“２”を表わしているため左方向へ２ビットシフトして“００００１０１０００．０１０１００”となるので、整数部の８ビットとして“００１０１０００”が出力される。この８ビットデータを４成分繋ぎ合わせることによって３２ビットの輝度値７を得ることができる。
【００３８】
このように、この発明の第１実施例によれば、乗算装置１１を８×８ビット乗算器４個とシフタ４個で構成したため、簡単な構成で所望の機能を達成することができる。従来のように多数のステップをソフトウェアで制御することなく浮動小数点データを直接入力して処理することができるので、プログラミングが容易で極めて高速なグラフィックス演算を実現することができる。
【００３９】
（２）  第２実施例
図４はこの発明の第２実施例に係る乗算装置を示すブロック図である。図４を参照して、第２実施例においては、第１実施例における４個の８×８ビット乗算器１２〜１５を１つに纏め、５６×８ビット乗算器２１としている。それぞれが８ビットで表わされる４つの成分からなる輝度値データ１は５６×８ビット乗算器２１に入力される前に５６ビットデータ２０に変換される。この変換においては、まず輝度値データ１の各成分の間に８ビットの０データすなわち“００００００００”を挿入することによって５６ビットデータ２０が作成される。これはハードウェア的にはＲ，Ｇ，Ｂ，αのそれぞれを表わすデータ部分の間を接地することによって極めて簡単に達成される。
【００４０】
５６×８ビット乗算器２１においては、５６ビットデータ２０と浮動小数点データで表わされた係数２の上部８ビットデータとが第１実施例と同様に乗算される。輝度値データの各々の成分は８ビットで表わされ、それが係数２から得られた上位８ビットのデータと乗算されても予め各成分の上位に８ビットの０が準備されているため各成分の乗算結果が混じり合うことはない。５６×８ビット乗算器２１での乗算結果は１６ビットずつに区切られてそれぞれシフタ１６〜１９に出力され、シフタ１６〜１９からそれぞれの上位８ビットが出力されて輝度値データ７が得られる。
【００４１】
以上のようにこの発明の第２実施例においては、輝度値データの間に８ビットの０データを入れるだけで乗算器を１個にすることができる。５６ビットデータ２０に生成は５６×８ビット乗算器２１の入力の必要箇所に“０”入力を与えるだけで実現できるので、特別なハードウェアは不要である。これによって乗算器を１個とすることができ、浮動小数点データで表わされる係数２の仮数部の入力を１箇所に纏めることができるので、配線が容易化され、レイアウト効率が向上する。
【００４２】
（３）  第３実施例
図５はこの発明の第３実施例の内容を示す模式図である。第３実施例においては、本発明の乗算器を浮動小数点乗算器に適用している。
【００４３】
図５を参照して、第３実施例においては第２実施例とを比べて係数２以外の浮動小数点データで表わされた係数２３が入力される。輝度値データ１と浮動小数点データで表わされた係数２３とは輝度値データあるいは浮動小数点データの選択ならびにフォーマット変換を行なう選択／フォーマット変換装置２４に入力される。選択／フォーマット変換装置２４の選択は図１に示した浮動小数点演算制御部１０２から与えられる選択信号２２の値によって行なわれる。選択／フォーマット変換装置２４において輝度値データ１が選択された場合はこれを各成分ごとに８ビットずつ切離し、それぞれの間に８ビットの０データすなわち“００００００００”を挿入することによって第２実施例と同様の５６ビットデータ２５を得る。また、浮動小数点データで表わされた係数２３が選択された場合は、この仮数部の先頭に１を付加しさらにその上位に３２ビットの０データを付加することによって５６ビットの仮数データ２５を得る。ここでは仮に、選択信号２２が“１”のときに輝度値データ１を、“０”のときに浮動小数点データで表わされた係数２３を選択するものとする。
【００４４】
５６ビットデータ２５は次に５６×２４ビット乗算器３０に入力される。５６×２４ビット乗算器３０には５６ビットデータ２５以外に、浮動小数点データで表わされた係数２の仮数部の上位に“１”を付加された２４ビットデータも入力され、ここで５６ビットデータ２５との乗算が行なわれる。
【００４５】
第３実施例における乗算装置１１は排他的論理和を算出するＸＯＲ回路２６を含む。浮動小数点データで表わされた係数２および係数２３の符号ビットを入力とし、両者が一致すれば“０”、異なれば“１”をそれぞれ符号ビットデータ２８として出力する。符号ビットデータ２８は浮動小数点乗算の答えの符号ビットとなる。
【００４６】
乗算装置１１はさらに浮動小数点データで表わされた係数２および係数２３の指数部の和を計算し指数部データ２９として出力する加算器２７を含む。ただし、バイアス値も加算されるため、加算器２７は加算結果からバイアス値を差し引く機能も備えている必要がある。また、輝度計算の際には浮動小数点データ２の指数部からバイアス値を引いた値を２９に出力する必要があるが、これはたとえば浮動小数点データ２３の指数部を０とすることによって容易に実現できる。このようにして出力２９には、浮動小数点乗算の場合は答の指数部となる指数データが出力され、輝度計算の場合は浮動小数点データ２の指数部からバイアス値を引いた値が出力される。
【００４７】
５６×２４ビット乗算器３０からの出力はその出力結果に対して丸めを行なう丸め回路３１と、シフタ１６〜１９に出力される。丸め回路３１の行なう丸め方法としては、たとえばＩＥＥＥ規格では、最近似値への丸め、０方向の丸め、プラス∞方向の丸めおよびマイナス∞方向の丸めの４種類があり、それぞれ必要に応じて選ばれる。丸めの結果は後に説明する選択／フォーマット変換回路３７に出力される。シフタ１６〜１９は上記実施例と同様のシフタで、それぞれ５６×２４ビット乗算器３０の出力の最下位から１６ビットずつが入力され、加算器２７の出力である指数部データ２９の値に基づいて先の実施例と同様にシフトが行なわれ、それぞれ８ビットのデータ３３〜３６が出力される。
【００４８】
丸め回路３１からの出力、シフタ１６〜１９から出力３３〜３６、ＸＯＲ回路２６の出力データである符号ビットデータ２８および加算器２７の出力である指数部データ２９は選択／フォーマット変換装置３７に入力される。選択／フォーマット変換装置３７は第２実施例における選択／フォーマット変換装置２４と同様に選択信号２２の値によって輝度値あるいは浮動小数点データを出力する。選択信号２２が“１”のときは輝度値の各成分３３〜３６から輝度値データを出力し、選択信号２２が“０”のときは符号ビットデータ２８を符号ビットとし、指数部データ２９を指数部とし、丸め回路３１からの出力データ３２を仮数部とする浮動小数点データを出力部４５に出力する。
【００４９】
以上のように第３実施例においては、選択信号２２が“１”のときは第１実施例および第２実施例と同様の輝度値の演算が実行され、選択信号２２が“０”のときは通常の浮動小数点乗算が実行される。これによって通常の浮動小数点演算だけでなく、輝度の演算も容易に行なうことができ、グラフィックス計算に適した乗算器を得ることができる。
【００５０】
（４）  第４実施例
図６はこの発明の第４実施例に係る乗算装置の内容を示すブロック図である。第４実施例においては、この発明に係る乗算装置を倍精度浮動小数点乗算器に適用している。図６を参照して、乗算装置１１に入力される浮動小数点データ３８および３９はいずれも１ビットの符号ビット、１１ビットの指数部および５２ビットの仮数部を持つ６４ビットのデータとなる。これに伴い、５６ビットデータ４６は選択／フォーマット変換装置２４によって輝度値データ１が選択された場合は第３実施例の場合と同様であるが、浮動小数点データが選択された場合は浮動小数点データ３９の仮数部５２ビットの上位に“１”とさらにその上位に３ビットの“０”が付加されたデータとなる。また、浮動小数点データ３８の仮数部の上位にも“１”が付加されて５３ビットのデータが入力するので乗算器５０は５６×５３ビット乗算器となる。
【００５１】
５６×５３ビット乗算器５０からの出力データがシフト１６〜１９および丸め回路３１によって処理され、選択／フォーマット変換装置３７を経て出力データ４５が得られるまでの構成および動作は第３実施例の場合と同様である。
【００５２】
なお、出力データ４５は、選択信号２２によって輝度値が選択された場合は３２ビットの輝度値データとなり、浮動小数点データが選択された場合は入力の浮動小数点データ３８および３９と同様の６４ビット浮動小数点データとなる。
【００５３】
以上のようにこの発明の第４実施例においては、入力されるデータを倍精度の浮動小数点データとすることによって浮動小数点乗算の精度が向上するだけでなく、通常の浮動小数点乗算器が５３×５３ビットの構成を必要とするのに対して、ここではそれよりもほとんどハードウェア量の増加しない５６×５３ビット構成でグラフィックス演算機能を付加することができるので、極めて効率よくグラフィックス演算機能の付加を実現することができる。
【００５４】
（５）  第５実施例
図７はこの発明の第５実施例を示す乗算装置のブロック図である。第５実施例においては、乗算装置を単精度、倍精度兼用の浮動小数点乗算器に適用している。言い換えると本願発明の第３実施例と第４実施例とを組合わせたような実施例となっている。
【００５５】
図７を参照して第５実施例においては、単精度浮動小数点データ２３および倍精度浮動小数点データ３８が入力されそのいずれかを選択するセレクタ４１と、単精度浮動小数点データ２３と倍精度浮動小数点データ３９とが入力されそのいずれかを選択するセレクタ４０とが設けられる。セレクタ４０，４１の選択は図１に示した浮動小数点演算制御部１０２から出力される選択信号４２によって行なわれる。選択信号４２の選択に応じてセレクタ４０，４１は入力された単精度および倍精度浮動小数点データのうちのいずれかを選択して浮動小数点データ４３，４４を準備する。乗算装置１１には輝度値データ１、浮動小数点データ４３，４４が入力されて処理されるが、その装置の構成および動作は上記した第３実施例および第４実施例と同様であるのでその説明は省略する。
【００５６】
以上のように第５実施例においては、単精度および倍精度の浮動小数点乗算機能に加えて、輝度値と単精度浮動小数点データとの乗算および輝度値と倍精度浮動小数点データとの乗算を少ないハードウェアの追加で実行することができ、多くの機能を実現することができる。
【００５７】
【発明の効果】
以上のように請求項１に係る発明によれば、輝度値データと浮動小数点データとを直接ハードウェアで演算することが可能であるため、極めて高速な輝度計算が可能な乗算装置が提供できる。
【００５８】
請求項１に係る乗算装置においては、乗算器がＮ個のｎ×ｎビット乗算器で構成されるため、簡単な構成で輝度値データと浮動小数点データの乗算が可能な乗算装置が提供できる。
【００５９】
請求項２に係る発明においては、特別なハードウェアの追加を要することなく乗算器を１個とすることができるため、簡単な構成で高速な輝度計算が可能な乗算装置が提供できる。
【００６０】
請求項３においては、輝度計算および浮動小数点乗算とが選択的に実施できるため、通常の浮動小数点演算だけでなく輝度の演算も容易に行なうことができ、グラフィックス計算に適した乗算装置を得ることができる。
【００６１】
請求項４に係る乗算装置においては、処理される浮動小数点データのビット数が上げられるため、浮動小数点乗算の精度が向上する。その結果、精度の高い輝度値データや浮動小数点データの乗算が可能な乗算装置が提供できる。
【００６２】
請求項５に係る乗算装置においては、ビット数の異なる浮動小数点データと輝度値データを用いてその乗算が容易に行なわれるため、たとえば単精度および倍精度の浮動小数点乗算機能に加えて、輝度値と単精度浮動小数点データとの乗算および輝度値と倍精度浮動小数点データとの乗算を少ないハードウェアの追加で実行することができる乗算装置が提供できる。
【図面の簡単な説明】
【図１】この発明が適用される乗算装置が組込まれたマイクロプロセッサの構成を示すブロック図である。
【図２】この発明に係る乗算装置を示すブロック図である。
【図３】この発明の第１実施例に係る乗算装置の内容を示すブロック図である。
【図４】この発明の第２実施例に係る乗算装置の内容を示すブロック図である。
【図５】この発明の第３実施例に係る乗算装置の内部を示すブロック図である。
【図６】この発明の第４実施例に係る乗算装置の内容を示すブロック図である。
【図７】この発明の第５実施例に係る乗算装置の内容を示すブロック図である。
【図８】従来の輝度値の乗算を行なう方法を説明するための機能ブロック図である。
【図９】従来の輝度値の乗算を行なう方法を説明するための図である。
【符号の説明】
１  輝度値データ、２  係数、１１  乗算装置、１２〜１５  ８×８ビット乗算器、１６〜１９  シフタ、２０  ５６ビットデータ、２１  乗算器、２２選択信号、２３  浮動小数点データ、２４  選択／フォーマット変換装置、２５  ５６ビットデータ、３０  ５６×２４ビット乗算器、３１  丸め回路。
【図１】
0003583474.tif 000003
【図２】
0003583474.tif 000004
【図３】
0003583474.tif 000005
【図４】
0003583474.tif 000006
【図５】
0003583474.tif 000007
【図６】
0003583474.tif 000008
【図７】
0003583474.tif 000009
【図８】
0003583474.tif 000010
【図９】
0003583474.tif 000011