(57)【要約】【課題】積和演算処理と、異なる命令の加算処理と乗算処理との並列実行処理とを切り替えることができる積和演算装置及び積和演算装置の制御方法を提供すること。【解決手段】本発明にかかる積和演算装置は、入力された第１及び第２のオペランドを乗算する乗算処理と、外部からの積和演算の有無を示す指示に応じて、入力された第３のオペランドを用いた所定の演算処理とを行う演算部と、演算部の処理結果を出力する出力部とを備え、演算部は、指示が積和演算有を示す場合に、乗算処理による乗算結果に第３のオペランドを加算して積和演算結果を求める積和演算処理と、指示が積和演算無を示す場合に、さらに入力された第４のオペランドに第３のオペランドを加算して加算結果を求める加算処理とを行い、出力部は、演算部により積和演算処理が行われた場合に、積和演算結果を出力し、演算部により加算処理が行われた場合に、乗算結果及び加算結果を出力する。【選択図】図１
2011054012.tif 000002
【特許請求の範囲】
【請求項１】
入力された第１及び第２のオペランドを乗算する乗算処理と、外部からの積和演算の有無を示す指示に応じて、入力された第３のオペランドを用いた所定の演算処理とを行う演算部と、
前記演算部の処理結果を出力する出力部とを備え、
前記演算部は、前記指示が積和演算有を示す場合に、前記乗算処理による乗算結果に前記第３のオペランドを加算して積和演算結果を求める積和演算処理と、前記指示が積和演算無を示す場合に、さらに入力された第４のオペランドに前記第３のオペランドを加算して加算結果を求める加算処理とを行い、
前記出力部は、前記演算部により前記積和演算処理が行われた場合に、前記積和演算結果を出力し、前記演算部により前記加算処理が行われた場合に、前記乗算結果及び前記加算結果を出力する積和演算装置。
【請求項２】
前記演算部は、前記乗算処理を行う乗算器と、少なくとも前記加算処理を行う第１の加算器と、前記外部からの積和演算の有無を示す指示により前記第１の加算器への出力を選択する第１の機能セレクタとを有し、
前記第１の機能セレクタは、当該指示が積和演算無を示す場合に、前記第４のオペランドを選択して前記第１の加算器へ出力し、
前記第１の加算器は、前記第１の機能セレクタにより出力された第４のオペランドを用いて前記加算処理を行うことを特徴とする請求項１に記載の積和演算装置。
【請求項３】
前記第１の機能セレクタは、当該指示が積和演算有を示す場合に、前記乗算結果を選択して前記第１の加算器へ出力し、
前記第１の加算器は、前記第１の機能セレクタにより出力された乗算結果を用いて前記積和演算処理を行うことを特徴とする請求項２に記載の積和演算装置。
【請求項４】
前記第１の機能セレクタは、当該指示が積和演算有を示す場合に、前記第３のオペランドを補正する補正値を選択して前記第１の加算器へ出力し、
前記第１の加算器は、前記第１の機能セレクタにより出力された補正値に前記第３のオペランドを加算して補正結果を求める補正処理をさらに行い、
前記出力部は、前記演算部により前記補正処理が行われた場合に、前記積和演算結果を前記補正結果に基づき補正して出力することを特徴とする請求項２に記載の積和演算装置。
【請求項５】
前記演算部は、
前記積和演算処理を行う第２の加算器と、
前記外部からの積和演算の有無を示す指示により前記第２の加算器への出力を選択する第２の機能セレクタとをさらに備え、
前記第２の機能セレクタは、当該指示が積和演算有を示す場合に、前記第３のオペランドを選択して前記第２の加算器へ出力し、
前記第２の加算器は、前記第２の機能セレクタにより出力された前記第３のオペランドを用いて前記積和演算処理を行うことを特徴とする請求項４に記載の積和演算装置。
【請求項６】
前記外部からの指示が積和演算有を示す場合に、前記積和演算結果を選択し、当該指示が積和演算無を示す場合に、前記乗算結果を選択して前記出力部へ出力する第３の機能セレクタをさらに備えることを特徴とする請求項１乃至５のいずれか１項に記載の積和演算装置。
【請求項７】
前記第１、第２、第３及び第４のオペランドは、浮動小数点のデータであり、
前記出力部は、前記演算部の処理結果に丸め処理を行い、出力することを特徴とする請求項１乃至６のいずれか１項に記載の積和演算装置。
【請求項８】
外部からの積和演算の有無を示す指示に応じて、少なくとも入力された第１、第２及び第３のオペランドを演算する演算部と、前記演算部の処理結果を出力する出力部とを備える積和演算装置の制御方法であって、
前記演算部において、入力された前記第１のオペランドと前記第２のオペランドとを乗算して乗算結果を求める乗算処理ステップと、
前記演算部において、前記外部からの指示を受け付け、当該指示が積和演算有無のいずれを示すかを判定する判定ステップと、
前記演算部において、前記指示が積和演算有を示すと判定された場合に、前記乗算ステップによる乗算結果に前記第３のオペランドを加算して積和演算結果を求める積和演算処理ステップと、
前記出力部において、前記積和演算処理ステップが行われた場合に、前記積和演算結果を出力するステップと、
前記演算部において、前記指示が積和演算無を示すと判定された場合に、さらに入力された第４のオペランドに前記第３のオペランドを加算して加算結果を求める加算処理ステップと、
前記出力部において、前記加算処理ステップが行われた場合に、前記乗算結果及び前記加算結果を出力するステップとを含む制御方法。
【請求項９】
当該指示が積和演算無を示すと判定された場合に、前記第４のオペランドを選択する第１の選択ステップをさらに含み、
前記加算処理ステップは、前記第１の選択ステップにより選択された第４のオペランドを用いて前記加算結果を求めることを特徴とする請求項８に記載の制御方法。
【請求項１０】
前記第１の選択ステップは、当該指示が積和演算有を示すと判定された場合に、前記乗算結果を選択し、
前記積和演算処理ステップは、前記第１の選択ステップにより選択された乗算結果を用いて前記積和演算結果を求めることを特徴とする請求項９に記載の制御方法。
【請求項１１】
前記第１の選択ステップは、当該指示が積和演算有を示すと判定された場合に、前記第３のオペランドを補正する補正値を選択し、
前記演算部において、前記第１の選択ステップにより選択された補正値に前記第３のオペランドを加算して補正結果を求める補正処理ステップと、
前記補正処理ステップが行われた場合に、前記出力部において、前記積和演算結果を前記補正結果に基づき補正して出力するステップと、をさらに含むことを特徴とする請求項９に記載の制御方法。
【請求項１２】
当該指示が積和演算有を示すと判定された場合に、前記第３のオペランドを選択する第２の選択ステップをさらに含み、
前記積和演算処理ステップは、前記第２の選択ステップにより選択された前記第３のオペランドを用いて前記積和演算結果を求めることを特徴とする請求項１１に記載の制御方法。
【請求項１３】
当該指示が積和演算有を示すと判定された場合に、前記積和演算結果を選択し、当該指示が積和演算無を示すと判定した場合に、前記乗算結果を選択して前記出力部へ出力するステップをさらに含むことを特徴とする請求項８乃至１２のいずれか１項に記載の制御方法。
【請求項１４】
前記第１、第２、第３及び第４のオペランドは、浮動小数点のデータであり、
前記出力部において、前記演算部の処理結果に丸め処理を行い、出力するステップをさらに含むことを特徴とする請求項８乃至１３のいずれか１項に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、積和演算装置及び積和演算装置の制御方法に関し、特に、３項入力の積和演算と２項入力の加算処理及び乗算処理の並列実行とのいずれかを行うための積和演算装置及び積和演算装置の制御方法に関する。
【背景技術】
【０００２】
特許文献１には、大整数の乗算及びモジュラ簡約を実行するためのシステム及び方法に関する技術が開示されている。特に、特許文献１にかかる大整数ユニットには、乗算器と加算器が並列演算し、乗算器の出力を加算器に入力する構成が開示されている。
【０００３】
特許文献２には、積和演算処理とその他の演算処理を並行して行うことにより、演算処理時間を少なくすることができるデジタル信号処理用ＬＳＩに関する技術が開示されている。特に、特許文献２にかかるデジタル信号処理用ＬＳＩが対象とする積和演算は、ＡとＢの２項を入力としたＳＵＭ＝Ａ＊Ｂ＋ＳＵＭという演算であり、いわゆるＭＡＣ（Multi and ACcumulation）演算である。
【０００４】
特許文献３には、積和演算器と接続されたデジタル信号プロセッサに関する技術が開示されている。特許文献３にかかるデジタル信号プロセッサは、計算（Ｂ＊Ｃ）＋（Ｄ＊Ｅ）を一つのサイクルで完了させるために、２つの積和演算回路を並列に構成し、一方の乗算結果を他方の加算器に入力し、Ｂ＊Ｃ＋Ｄ＊Ｅを演算するものである。
【０００５】
特許文献４には、浮動小数点の演算回路に関する技術が開示されている。また、浮動小数点の演算を行う積和演算回路においては、図６に示すように、レジスタ８１に格納される第１オペランド（以下、第１ＯＰとする）とレジスタ８２に格納される第２オペランド（以下、第２ＯＰとする）との積を求め、その結果とレジスタ８３に格納される第３オペランド（以下、第３ＯＰとする）との和を求める構成がある。
【０００６】
図６において、積和演算回路８０は、レジスタ８１乃至８３と、指数部加算部８４と、指数部加算部８５と、シフト回路８６と、仮数部乗算回路８７と、仮数部加算部８８と、セロカウンタ８９と、指数部補正回路９０と、正規化回路９１と、丸め回路９２と、備える。レジスタ８１に格納された第１ＯＰは、指数部８１１及び仮数部８１２を含む。同様に、レジスタ８２に格納された第２ＯＰは、指数部８２１及び仮数部８２２を含み、レジスタ８３に格納された第３ＯＰは、指数部８３１及び仮数部８３２を含む。
【０００７】
積和演算回路８０において、第１ＯＰと第２ＯＰとの乗算のみを行う場合、第３ＯＰを格納するレジスタ８３の各要素を"０"で埋め、「第１ＯＰ＊第２ＯＰ＋"０"」の演算を行う必要がある。
【０００８】
また、第１ＯＰ又は第２ＯＰと第３ＯＰとの加減算を行う場合には、第１ＯＰと第２ＯＰとのうちの演算対象でない方のレジスタ８１又は８２の各要素を"１"に書換えて「オペランド＊１の乗算」を行った後に、その乗算結果と第３ＯＰとの加減算を行っている。そのため、上記の積和演算回路８０を用いて２つのオペランドの乗算又は加減算を行う際に、演算対象でないオペランドデータを格納するレジスタ８１乃至８３の各要素を書換える必要がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００２−０９９２０８号公報
【特許文献２】特開平０１−１１９８６１号公報
【特許文献３】特表２００４−５０１４１６号公報
【特許文献４】特開平０８−２６３２６９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
このように、積和演算は、３項を入力し、先に乗算を行い、乗算結果に対して残りの１項を加算するというものである。つまり、積和演算は、乗算処理と加算処理に依存関係がある。一方、例えば、情報処理装置などに積和演算器が利用される場合、積和演算以外にも単独の加算処理や乗算処理も多い。しかしながら、上述した積和演算器では、独立した命令である加算処理と乗算処理とを同時に並行して実行することができないという問題がある。
【００１１】
本発明は、このような問題点を解決するためになされたものであり、積和演算処理と、異なる命令の加算処理と乗算処理との並列実行処理とを切り替えることができる積和演算装置及び積和演算装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の態様にかかる積和演算装置は、入力された第１及び第２のオペランドを乗算する乗算処理と、外部からの積和演算の有無を示す指示に応じて、入力された第３のオペランドを用いた所定の演算処理とを行う演算部と、前記演算部の処理結果を出力する出力部とを備え、前記演算部は、前記指示が積和演算有を示す場合に、前記乗算処理による乗算結果に前記第３のオペランドを加算して積和演算結果を求める積和演算処理と、前記指示が積和演算無を示す場合に、さらに入力された第４のオペランドに前記第３のオペランドを加算して加算結果を求める加算処理とを行い、前記出力部は、前記演算部により前記積和演算処理が行われた場合に、前記積和演算結果を出力し、前記演算部により前記加算処理が行われた場合に、前記乗算結果及び前記加算結果を出力する。
【００１３】
本発明の第２の態様にかかる積和演算装置の制御方法は、外部からの積和演算の有無を示す指示に応じて、少なくとも入力された第１、第２及び第３のオペランドを演算する演算部と、前記演算部の処理結果を出力する出力部とを備える積和演算装置の制御方法であって、前記演算部において、入力された第１のオペランドと第２のオペランドとを乗算して乗算結果を求める乗算処理ステップと、前記演算部において、前記外部からの指示を受け付け、当該指示が積和演算有無のいずれを示すかを判定する判定ステップと、前記演算部において、前記指示が積和演算有を示すと判定された場合に、前記乗算ステップによる乗算結果に前記第３のオペランドを加算して積和演算結果を求める積和演算処理ステップと、前記出力部において、前記積和演算処理ステップが行われた場合に、前記積和演算結果を出力するステップと、前記演算部において、前記指示が積和演算無を示すと判定された場合に、さらに入力された第４のオペランドに前記第３のオペランドを加算して加算結果を求める加算処理ステップと、前記出力部において、前記加算処理ステップが行われた場合に、前記乗算結果及び前記加算結果を出力するステップとを含む。
【発明の効果】
【００１４】
本発明により、積和演算処理と、異なる命令の加算処理と乗算処理との並列実行処理とを切り替えて処理効率を高める積和演算装置及び積和演算装置の制御方法を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態１にかかる積和演算装置の構成を示すブロック図である。
【図２】本発明の実施の形態１にかかる積和演算装置の制御方法の流れを示すフローチャート図である。
【図３】本発明の実施の形態２にかかる積和演算装置の構成を示すブロック図である。
【図４】本発明の実施の形態３にかかる積和演算装置の構成を示すブロック図である。
【図５】本発明の実施の形態４にかかる積和演算装置の構成を示すブロック図である。
【図６】関連技術にかかる積和演算装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１７】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかる積和演算装置１００の構成を示すブロック図である。積和演算装置１００は、第１のオペランド１１１、第２のオペランド１１２、第３のオペランド１１３及び第４のオペランド１１４を入力し、外部からの積和演算の有無を示す指示１１５に応じて、３項の入力に対する積和演算、又は、２項の入力に対する乗算及び２項の入力に対する加算を切り替えて実行し、出力結果１１６を出力するものである。すなわち、積和演算装置１００は、積和演算有を示す指示を受け付けた場合、積和演算結果（例えば、Ａ＊Ｂ＋Ｃ）を出力し、積和演算無を示す指示を受け付けた場合、乗算結果（Ａ＊Ｂ）及び加算結果（Ｃ＋Ｄ）を出力する。
【００１８】
ここで、第１のオペランド１１１〜第４のオペランド１１４は、例えば、ＩＥＥＥ（The Institute of Electrical and Electronics Engineers, Inc.）７５４形式に基づく浮動小数点データであり、符号部、指数部及び仮数部を含むものである。また、第１のオペランド１１１〜第４のオペランド１１４は、例えば、３２ビット、６４ビット等である。尚、第１のオペランド１１１〜第４のオペランド１１４は、ＩＥＥＥ７５４形式に限定されず、データサイズも上述した例に限定されない。また、積和演算装置１００は、第１のオペランド１１１〜第４のオペランド１１４を外部のレジスタ（不図示）から読み出すか、直接、入力してもよい。
【００１９】
また、指示１１５は、積和演算装置１００において、積和演算を実行させるか否かを指定するための情報であり、例えば、制御信号であるとよい。
【００２０】
積和演算装置１００は、演算部１０１と、出力部１０２とを備える。演算部１０１は、入力された第１のオペランド１１１及び第２のオペランド１１２を乗算する乗算処理と、外部からの積和演算の有無を示す指示に応じて、入力された第３のオペランド１１３を用いた所定の演算処理とを行う。つまり、演算部１０１は、少なくとも入力された第１のオペランド１１１、第２のオペランド１１２及び第３のオペランド１１３を演算し、指示１１５に応じて、新たに第４のオペランド１１４を入力するようにしてもよい。または、演算部１０１は、第１のオペランド１１１〜第４のオペランド１１４をまとめて入力してもよい。
【００２１】
そして、演算部１０１は、指示１１５が積和演算有を示す場合に、乗算処理による乗算結果に第３のオペランド１１３を加算して積和演算結果を求める積和演算処理と、指示１１５が積和演算無を示す場合に、さらに入力された第４のオペランド１１４に第３のオペランド１１３を加算して加算結果を求める加算処理とを行う。
【００２２】
出力部１０２は、演算部１０１の処理結果を出力結果１１６として出力する。すなわち、出力部１０２は、演算部１０１により積和演算処理が行われた場合に、積和演算結果を出力し、演算部１０１により加算処理が行われた場合に、乗算結果及び加算結果を出力する。
【００２３】
図２は、本発明の実施の形態１にかかる積和演算装置の制御方法の流れを示すフローチャート図である。まず、演算部１０１は、第１のオペランド１１１と第２のオペランド１１２とを乗算して乗算結果を求める（Ｓ１１）。次に、演算部１０１は、指示１１５が外部からの積和演算の有無を示す指示を受け付け、当該指示が積和演算有を示すか否かを判定する（Ｓ１２）。
【００２４】
指示１１５が積和演算有を示すと判定された場合に、演算部１０１は、ステップＳ１１による乗算結果に第３のオペランド１１３を加算して積和演算結果を求める（Ｓ１３）。そして、出力部１０２は、積和演算結果を出力する（Ｓ１４）。
【００２５】
また、指示１１５が積和演算無を示すと判定された場合に、演算部１０１は、第４のオペランド１１４に第３のオペランド１１３を加算して加算結果を求める（Ｓ１５）。そして、出力部１０２は、乗算結果及び加算結果を出力する（Ｓ１６）。
【００２６】
このように、本発明により、積和演算処理と、異なる命令の加算処理と乗算処理との並列実行処理とを切り替えて処理効率を高めることができる。
【００２７】
＜発明の実施の形態２＞
図３は、本発明の実施の形態２にかかる積和演算装置２００の構成を示すブロック図である。積和演算装置２００は、図６に示した浮動小数点の３項の入力に対する積和演算を行う積和演算回路８０に改良を加えて、本発明の実施の形態１にかかる積和演算装置１００を適用した一実施例である。積和演算装置２００は、４つの入力ポート（不図示）から４つのオペランド（以下、Ａ，Ｂ，Ｃ及びＤと呼ぶ）を入力し、演算結果（以下、Ｅ及びＦと呼ぶ）を２つの出力ポート（不図示）へ出力する。尚、積和演算装置２００は、積和演算を行う場合は、１つの出力ポートのみへ出力しても良い。以下では、被乗数をＡ、乗数をＢ、被加算数をＣ及び加算数をＤとする。
【００２８】
また、積和演算装置２００は、本発明の実施の形態１と同様に、外部からの積和演算有無を示す指示（不図示）を受け付ける。そして、積和演算装置２００は、積和演算有を示す指示を受け付けた場合、一つの出力ポートに積和演算結果を出力し、積和演算無を示す指示を受け付けた場合、異なる出力ポートに乗算結果及び加算結果を出力する。つまり、積和演算装置２００は、一つの装置により積和演算処理又は加算処理及び乗算処理のいずれかを実行することが可能な命令融合演算装置である。
【００２９】
積和演算装置２００は、レジスタ２１乃至２４、ｕｎｐａｃｋｅｒ２５乃至２８、指数加算器３１及び３２、シフト回路３３、加算器３４、乗算ツリー３５、ＣＳＡ３６、ＰＧ生成回路３７、ＬＺＡ３８、加算器３９、シフト回路４０、ＳＴＩＣＫＹ生成回路４１及び４３、丸め判定回路４２及び４４、加算器４５、後処理シフト回路４６、丸め回路４７及び４８、ｒｅｐａｃｋｅｒ４９及び５１、レジスタ５０及び５２、セレクタ６０乃至６３を備える。
【００３０】
レジスタ２１、２２、２３、２４、５０及び５２は、浮動小数点データを格納する記憶装置である。例えば、レジスタ２１に格納されたデータは、指数部２１１及び仮数部２１２を含む。同様に、レジスタ２２、２３及び２４に格納されたデータは、指数部２２１及び仮数部２２２、指数部２３１及び仮数部２３２並びに指数部２４１及び仮数部２４２を含む。尚、符号部については、図示を省略している。また、レジスタ５０及び５２についても、レジスタ２１乃至２４と同様であるため、図示及び説明は省略する。
【００３１】
ｕｎｐａｃｋｅｒ２５乃至２８は、レジスタ２１乃至２４に格納された浮動小数点データを入力し、ＩＥＥＥ７５４形式に従い、指数部及び仮数部に分離する。具体的には、ｕｎｐａｃｋｅｒ２５は、レジスタ２１に格納された浮動小数点データを入力し、指数部２１１と仮数部２１２に分離し、それぞれ指数ｄ１０及び仮数ｄ１１として出力する。同様に、ｕｎｐａｃｋｅｒ２６は、レジスタ２２に格納された浮動小数点データを入力し、指数部２２１と仮数部２２２に分離し、それぞれ指数ｄ１２及び仮数ｄ１３として出力する。また、ｕｎｐａｃｋｅｒ２７は、レジスタ２３に格納された浮動小数点データを入力し、指数部２３１と仮数部２３２に分離し、それぞれ指数ｄ１４及び仮数ｄ１５として出力する。また、ｕｎｐａｃｋｅｒ２８は、レジスタ２４に格納された浮動小数点データを入力し、指数部２４１と仮数部２４２に分離し、それぞれ指数ｄ１６及び仮数ｄ１７として出力する。
【００３２】
指数加算器３１は、指数ｄ１０及び指数ｄ１２を入力して加算を行い、指数加算結果ｄ１８を出力する。セレクタ６１は、指数ｄ１６及び指数加算結果ｄ１８を入力し、外部からの指示が積和演算有を示す場合、指数加算結果ｄ１８を選択し、当該指示が積和演算無を示す場合、指数ｄ１６を選択して、指数加算器３２へ出力する。つまり、セレクタ６１は、指示が積和演算有を示す場合、Ａ及びＢの乗算後の指数値を選択し、指示が積和演算無を示す場合、Ｄの指数値を選択する。指数加算器３２は、指数ｄ１４とセレクタ６１により出力されたデータとを入力し、一方から他方を減算し、指数加算結果ｄ１９を出力する。つまり、指数加算器３２は、指数ｄ１４とセレクタ６１により選択されたデータとの差を求める。
【００３３】
シフト回路３３は、仮数ｄ１５を入力し、指数加算結果ｄ１９に基づき、仮数ｄ１５の右シフト又は左シフトを行い、シフト結果ｄ２０を出力する。具体的には、シフト回路３３は、指数加算結果ｄ１９の正負を判定する。例えば、セレクタ６１により指数加算結果ｄ１８が選択され、指数加算器３２は、指数ｄ１４から指数加算結果ｄ１８を減算して指数加算結果ｄ１９を出力したとする。このとき、指数加算結果ｄ１９が０以上の場合、シフト回路３３は、仮数ｄ１５を指数加算結果ｄ１９の桁数で左シフトする。また、指数加算結果ｄ１９が０未満の場合、シフト回路３３は、仮数ｄ１５を指数加算結果ｄ１９の桁数で右シフトする。これは、後述するＣＳＡ３６において、乗算ツリー３５による乗算結果とシフト結果ｄ２０との加算処理を行うための桁合わせ処理である。尚、桁合わせ処理には、乗算結果をシフトしても構わない。但し、例えば、Ａ，Ｂ，Ｃ及びＤが各６４ビットの浮動小数点データである場合、仮数部は各５３ビットとなるため、乗算結果の加算結果ｄ２２は１０６ビットであり、被加算数Ｃの仮数ｄ１５は５３ビットである。そのため、本発明の実施の形態２では、よりシフト量の少ない被加算数Ｃの仮数ｄ１５のシフトを行うことにより、処理負荷を抑えることができる。
【００３４】
乗算ツリー３５は、仮数ｄ１１及びｄ１３を入力して乗算を行い、乗算結果として桁上げ値ｄ２１及び加算結果ｄ２２を出力する。乗算ツリー３５は、例えば、Ｗａｌｌａｃｅ  Ｔｒｅｅ等で実現するとよい。
【００３５】
セレクタ６２は、桁上げ値ｄ２１及び０（不図示）を入力し、外部からの指示が積和演算有を示す場合、桁上げ値ｄ２１を選択し、当該指示が積和演算無を示す場合、０を選択して、ＣＳＡ３６へ出力する。セレクタ６３は、加算結果ｄ２２及び仮数ｄ１７を入力し、外部からの指示が積和演算有を示す場合、加算結果ｄ２２を選択し、当該指示が積和演算無を示す場合、仮数ｄ１７を選択して、ＣＳＡ３６へ出力する。
【００３６】
ＣＳＡ３６は、シフト結果ｄ２０、セレクタ６２及び６３に選択されたデータを入力して加算を行い、桁上げ値ｄ２３及び加算結果ｄ２４を出力する。例えば、外部からの指示が積和演算有を示す場合、セレクタ６２及び６３は、桁上げ値ｄ２１及び加算結果ｄ２２、すなわち、乗算結果を選択する。そのため、ＣＳＡ３６は、乗算結果にシフト結果ｄ２０を加算する積和演算処理を行い、積和演算結果としての桁上げ値ｄ２３及び加算結果ｄ２４を求めることができる。一方、当該指示当該指示が積和演算無を示す場合、セレクタ６２及び６３は、桁上げ値０及び加算数Ｄの仮数ｄ１７を選択する。そのため、ＣＳＡ３６は、加算数Ｄの仮数ｄ１７に被加算数Ｃのシフト結果ｄ２０を加算する加算処理を行い、加算結果としての桁上げ値ｄ２３及び加算結果ｄ２４を求めることができる。
【００３７】
セレクタ６０は、補正値である１及び０を入力し、ＣＳＡ３６に桁上げがある場合に、１を選択して加算器３４に出力する。また、セレクタ６０は、指数加算結果ｄ１９が正であり、乗算結果のレンジ範囲外である場合、１を選択して加算器３４に出力する。
【００３８】
加算器３４は、シフト結果ｄ２０及びセレクタ６０により選択されたデータを入力して加算し、加算結果ｄ２５を出力する。つまり、加算器３４は、シフト結果ｄ２０を補正する補正処理を行う。これにより、加算器３４は、シフト結果ｄ２０の最下位ビットに補正をすることができ、後述するシフト回路４０において、適切に処理することができる。
【００３９】
加算器３９は、桁上げ値ｄ２３及び加算結果ｄ２４を入力して加算し、加算結果ｄ２８を出力する。尚、被加算数Ｃの仮数ｄ１５の左シフトの最大幅は、乗算結果の加算結果ｄ２２のＭＳＢ＝１までであり、被加算数Ｃの仮数ｄ１５の右シフトの最大幅は、加算結果ｄ２２のＬＳＢ＋１ビットと被加算数Ｃの仮数ｄ１５の隠しビットまでである。そのため、加算器３４及び３９は、この幅を考慮して絶対値加減算を行い、加算結果ｄ２５及びｄ２８を得る。
【００４０】
ＰＧ生成回路３７は、桁上げ値ｄ２３及び加算結果ｄ２４を入力し、ＰＧ生成を行い、ＰＧ結果ｄ２６を出力する。尚、ＰＧ生成回路３７は、加算結果ｄ２８と同じ結果が得られる。ＬＺＡ３８は、ＰＧ結果ｄ２６を入力し、ＬＺＡ処理を行い、ＬＺＡ結果ｄ２７を出力する。ＬＺＡ処理では、入力データのＭＳＢからの０の続く数の算出を行い、桁合わせシフト量を求める。
【００４１】
ＳＴＩＣＫＹ生成回路４１は、桁上げ値ｄ２３及び加算結果ｄ２４を入力し、加算結果ｄ２４の内、５３ビットに続く下位ビットの論理和からＳＴＩＣＫＹ生成し、ＳＴＩＣＫＹ結果ｄ３０を出力する。丸め判定回路４２は、ＳＴＩＣＫＹ結果ｄ３０を入力し、丸め判定を行い、丸め指示ｄ３１を出力する。
【００４２】
シフト回路４０は、加算結果ｄ２５及び加算結果ｄ２８を入力し、指数加算結果ｄ１９に基づき、加算結果ｄ２５及び加算結果ｄ２８のシフトを行い、シフト結果ｄ２９を出力する。尚、指数加算結果ｄ１８より指数ｄ１４が大きい場合、シフト回路３３は、仮数ｄ１５を左シフトして桁合わせ処理を行う。しかし、桁合わせ処理の左シフト量が１以上のとき、シフト回路４０は、乗算の中間結果である加算結果ｄ２２を左シフト量だけ右シフトして隠しビットを正規の位置に戻す処理と仮数加算による仮数オーバーフローの正規化シフト処理とを行う。
【００４３】
具体的には、シフト回路４０は、シフト回路３３と同様に、指数加算結果ｄ１９の正負を判定する。そのため、指数加算結果ｄ１９が０以上の場合、シフト回路４０は、加算結果ｄ２５の値を上位、加算結果ｄ２８を下位として結合し、右シフトする。また、指数加算結果ｄ１９が０未満の場合、シフト回路４０は、加算結果ｄ２８のみを選択し、シフト処理を行わない。
【００４４】
例えば、指数加算結果ｄ１９が正であり、乗算結果のレンジ範囲外である場合、外部からの指示が積和演算有を示す場合には、ＣＳＡ３６は積和演算処理を行うが、シフト結果ｄ２０が乗算結果よりはるかに大きいため、実質的に、乗算結果は誤差の範囲となり得る。そのため、予め、加算器３４において、誤差を最下位ビットの１として補正を行うことで、シフト回路４０における補正処理をなくすことができる。また、シフト回路４０における処理結果であるシフト結果ｄ２９を正確とすることができる。尚、指数加算結果ｄ１９が負であり、乗算結果のレンジ範囲外である場合、シフト結果ｄ２０が乗算結果よりはるかに小さいため、実質的に、シフト結果ｄ２５は誤差の範囲となり得る。そのため、シフト回路４０は、シフト結果ｄ２５を切り捨てても構わない。
【００４５】
後処理シフト回路４６は、シフト結果ｄ２９を入力し、ＬＺＡ結果ｄ２７に応じて、仮数加算の中間結果であるシフト結果ｄ２９を左シフトして正規化し、シフト結果ｄ３５を出力する。丸め回路４７は、シフト結果ｄ２９及び丸め指示ｄ３１を入力し、丸め処理を行い、丸め結果ｄ３６を出力する。
【００４６】
ｒｅｐａｃｋｅｒ４９は、指数加算結果ｄ１９、シフト結果ｄ３５及び丸め結果ｄ３６を入力し、ＩＥＥＥ７５４形式に従い、ビット結合を行い、ｒｅｐａｃｋ結果ｄ３８を出力する。レジスタ５０は、ｒｅｐａｃｋ結果ｄ３８を格納し、出力ポートへ出力する。つまり、レジスタ５０には、積和演算結果又は加算結果が格納される。
【００４７】
ＳＴＩＣＫＹ生成回路４３は、桁上げ値ｄ２１及び加算結果ｄ２２を入力し、ＳＴＩＣＫＹ生成し、ＳＴＩＣＫＹ結果ｄ３２を出力する。丸め判定回路４４は、ＳＴＩＣＫＹ結果ｄ３２を入力し、丸め判定を行い、丸め指示ｄ３３を出力する。加算器４５は、桁上げ値ｄ２１及び加算結果ｄ２２を入力し、加算し、加算結果ｄ３４を出力する。丸め回路４８は、丸め指示ｄ３３及び加算結果ｄ３４を入力し、丸め処理を行い、丸め結果ｄ３７を出力する。
【００４８】
ｒｅｐａｃｋｅｒ５１は、指数加算結果ｄ１８、丸め結果ｄ３７及び加算結果ｄ３４を入力し、ＩＥＥＥ７５４形式に従い、ビット結合を行い、ｒｅｐａｃｋ結果ｄ３９を出力する。レジスタ５２は、ｒｅｐａｃｋ結果ｄ３９を格納し、出力ポートへ出力する。つまり、レジスタ５２には、乗算結果が格納される。
【００４９】
以上が本発明の実施の形態２にかかる積和演算装置２００の構成の説明である。続いて、外部からの指示が積和演算有を示す場合の処理、つまり、積和演算処理における動作の特徴を説明する。
【００５０】
まず、乗算ツリー３５は、被乗数Ａの仮数ｄ１１と乗数Ｂの仮数ｄ１３を乗算し、Ａ＊Ｂの乗算結果として桁上げ値ｄ２１及び加算結果ｄ２２を出力する。また、セレクタ６１は、指示が積和演算有を示すため、Ａ＊Ｂの乗算結果の桁数である指数加算結果ｄ１８を選択する。そして、指数加算器３２は、指数ｄ１４及び指数加算結果ｄ１８の差として指数加算結果ｄ１９を算出する。シフト回路３３は、指数加算結果ｄ１９を用いてＡ＊Ｂの乗算結果の桁数と被加算数Ｃの桁数とを比較し、大小に応じて、仮数ｄ１５のシフトを行い、シフト結果ｄ２０を出力する。セレクタ６２及び６３は、指示が積和演算有を示すため、桁上げ値ｄ２１及び加算結果ｄ２２を選択する。そして、ＣＳＡ３６は、シフト結果ｄ２０、桁上げ値ｄ２１及び加算結果ｄ２２を加算、つまり、積和演算を行う。
【００５１】
以降、上述したように、加算器３４、ＰＧ生成回路３７、ＬＺＡ３８、加算器３９、シフト回路４０、ＳＴＩＣＫＹ生成回路４１、丸め判定回路４２、後処理シフト回路４６、丸め回路４７及びｒｅｐａｃｋｅｒ４９によりシフト結果ｄ２０、桁上げ値ｄ２３及び加算結果ｄ２４が加工される。そして、ｒｅｐａｃｋｅ４９によりＩＥＥＥ７５４形式に従ってビット結合され、浮動小数点データである積和演算結果がレジスタ５０に格納され、積和演算結果が出力される。尚、本発明の実施の形態２にかかる積和演算装置２００では、併せて、乗算結果が出力されるが、これを指示が積和演算有を示す場合に、出力を制御するようにしても構わない。
【００５２】
次に、外部からの指示が積和演算無を示す場合の処理、つまり、乗算処理及び加算処理を並列実行する際について説明する。ます、乗算処理における動作の特徴を説明する。
【００５３】
まず、乗算ツリー３５は、被乗数Ａの仮数ｄ１１と乗数Ｂの仮数ｄ１３を乗算し、Ａ＊Ｂの乗算結果として桁上げ値ｄ２１及び加算結果ｄ２２を出力する。以降、ＳＴＩＣＫＹ生成回路４３、丸め判定回路４４及び加算器４５により桁上げ値ｄ２１及び加算結果ｄ２２が加工される。そして、ｒｅｐａｃｋｅｒ５１によりＩＥＥＥ７５４形式に従ってビット結合され、浮動小数点データである乗算結果がレジスタ５２に格納され、乗算結果が出力される。
【００５４】
続いて、加算処理における動作の特徴を説明する。指数加算器３２は、指示が積和演算無を示すため、加算数Ｄの指数ｄ１６を選択する。そして、指数加算器３２は、指数ｄ１４及び指数ｄ１６の差として指数加算結果ｄ１９を算出する。シフト回路３３は、指数加算結果ｄ１９を用いて加算数Ｄの桁数と被加算数Ｃの桁数とを比較し、大小に応じて、仮数ｄ１５のシフトを行い、シフト結果ｄ２０を出力する。セレクタ６２及び６３は、指示が積和演算無を示すため、桁上げ値０及び仮数ｄ１７を選択する。そして、ＣＳＡ３６は、シフト結果ｄ２０、桁上げ値０及び仮数ｄ１７を加算する。
【００５５】
以降、上述したように、加算器３４、ＰＧ生成回路３７、ＬＺＡ３８、加算器３９、シフト回路４０、ＳＴＩＣＫＹ生成回路４１、丸め判定回路４２、後処理シフト回路４６、丸め回路４７及びｒｅｐａｃｋｅｒ４９によりシフト結果ｄ２０、桁上げ値ｄ２３及び加算結果ｄ２４が加工される。そして、ｒｅｐａｃｋｅ４９によりＩＥＥＥ７５４形式に従ってビット結合され、浮動小数点データである加算結果がレジスタ５０に格納され、加算結果が出力される。
【００５６】
尚、図３において、実質的に乗算処理、加算処理及び積和演算処理を行う演算部の構成としては、少なくとも乗算ツリー３５、ＣＳＡ３６、セレクタ６２及びセレクタ６３を含むようにするとよい。すなわち、乗算ツリー３５は、入力された第１及び第２のオペランドを乗算する乗算処理を行うものである。また、ＣＳＡ３６は、少なくとも入力された第３のオペランドを用いた所定の演算処理を行うものである。特に、ＣＳＡ３６は、指示が積和演算有を示す場合に、乗算処理による乗算結果に第３のオペランドを加算して積和演算結果を求める積和演算処理と、指示が積和演算無を示す場合に、さらに入力された第４のオペランドに第３のオペランドを加算して加算結果を求める加算処理とを行うものである。また、セレクタ６２及びセレクタ６３は、外部からの積和演算の有無を示す指示によりＣＳＡ３６への出力を選択する機能セレクタである。特に、セレクタ６３は、指示が積和演算無を示す場合に、第４のオペランドを選択してＣＳＡ３６へ出力する。このとき、ＣＳＡ３６は、セレクタ６３により出力された第４のオペランドを用いて加算処理を行う。このように、本発明の実施の形態２では、セレクタ６２及びセレクタ６３により、積和演算処理又は加算処理のいずれを実行するかを切り替えることができる。
【００５７】
また、セレクタ６２及び６３は、指示が積和演算有を示す場合に、乗算結果を選択してＣＳＡ３６へ出力し、ＣＳＡ３６は、セレクタ６２及び６３により出力された乗算結果を用いて積和演算処理を行う。これにより、ＣＳＡ３６は、積和演算処理のための加算処理と、単独の加算処理とを切り替えて実行することができる。ＣＳＡ３６を有効活用できる。
【００５８】
また、上述した第１、第２、第３及び第４のオペランドは、浮動小数点のデータであり、出力部は、演算部の処理結果に丸め処理を行い、出力する。これにより、浮動小数点における積和演算において、精度を維持しつつ、単独の加算処理及び乗算処理を並行実行することができる。
【００５９】
また、本発明の実施の形態２では、加算処理と乗算処理が同時に実行可能なようにハードウェアを追加しているので、積和演算処理とは別に、加算処理と乗算処理とが同時に実行できるという効果を奏する。
【００６０】
＜発明の実施の形態３＞
図４は、本発明の実施の形態３にかかる積和演算装置２０１の構成を示すブロック図である。本発明の実施の形態３にかかる積和演算装置２０１は、本発明の実施の形態２に係る積和演算装置２００に改良を加えたものである。すなわち、外部からの指示が積和演算無を示す場合に、積和演算装置２００のＣＳＡ３６で行われていた被加算数Ｃ及び加算数Ｄの加算処理を加算器３４で行うようにするため、加算器４５を外し、セレクタ６４乃至６７の追加と、配線の変更を行った。尚、図４において、図３と同様の構成については、詳細な説明を省略する。以下では、本発明の実施の形態２との違いを中心に説明する。
【００６１】
セレクタ６４乃至６７は、外部からの指示に応じて入力を切り替える機能セレクタである。具体的には、セレクタ６４は、上述した補正値（不図示）及び仮数ｄ１７を入力し、外部からの指示が積和演算有を示す場合、補正値を選択し、当該指示が積和演算無を示す場合、仮数ｄ１７を選択して、加算器３４へ出力する。セレクタ６５は、シフト結果ｄ２０及び０（不図示）を入力し、外部からの指示が積和演算有を示す場合、シフト結果ｄ２０を選択し、当該指示が積和演算無を示す場合、０を選択して、ＣＳＡ３６へ出力する。セレクタ６６は、ＰＧ結果ｄ２６及び加算結果ｄ２５を入力し、外部からの指示が積和演算有を示す場合、ＰＧ結果ｄ２６を選択し、当該指示が積和演算無を示す場合、加算結果ｄ２５を選択して、ＬＺＡ３８へ出力する。セレクタ６７は、丸め指示ｄ３１及び丸め指示ｄ３３を入力し、外部からの指示が積和演算有を示す場合、丸め指示ｄ３１を選択し、当該指示が積和演算無を示す場合、丸め指示ｄ３３を選択して、ＬＺＡ３８へ出力する。
【００６２】
続いて、外部からの指示が積和演算有を示す場合の処理、つまり、積和演算処理における動作の特徴を説明する。本発明の実施の形態３では、積和演算処理は、セレクタ６４乃至６７において選択されるデータが本発明の実施の形態２と同等であるため、同様の処理が行われ、積和演算結果が得ることができる。そのため、詳細な説明を省略する。
【００６３】
次に、外部からの指示が積和演算無を示す場合の処理、つまり、乗算処理及び加算処理を並列実行する際について説明する。ます、乗算処理における動作の特徴を説明する。
【００６４】
まず、本発明の実施の形態２と同様に、乗算ツリー３５は、被乗数Ａの仮数ｄ１１と乗数Ｂの仮数ｄ１３を乗算し、Ａ＊Ｂの乗算結果として桁上げ値ｄ２１及び加算結果ｄ２２を出力する。また、ＣＳＡ３６の前段には、図３と異なりセレクタ６２及び６３がない。そのため、ＣＳＡ３６は、常に、桁上げ値ｄ２１及び加算結果ｄ２２を入力する。つまり、当該指示が積和演算無を示す場合、ＣＳＡ３６は、セレクタ６５により選択された０、桁上げ値ｄ２１及び加算結果ｄ２２を入力し、実質的に、桁上げ値ｄ２１及び加算結果ｄ２２をそのまま桁上げ値ｄ２３及び加算結果ｄ２４として出力する。続いて、加算器３９は、桁上げ値ｄ２３及び加算結果ｄ２４を入力し、乗算結果として加算結果ｄ２８を出力する。
【００６５】
また、ＳＴＩＣＫＹ生成回路４１及び丸め判定回路４２は、被乗数Ａ及び乗数Ｂの乗算結果である桁上げ値ｄ２３及び加算結果ｄ２４を用いて、乗算結果に対する丸め指示ｄ３１を出力する。その後、丸め回路４８は、加算結果ｄ２８及び丸め指示ｄ３１を入力し、丸め処理を行い、丸め結果ｄ３７を出力する。
【００６６】
そして、ｒｅｐａｃｋｅｒ５１は、指数加算結果ｄ１８、加算結果ｄ２８及び丸め結果ｄ３７を入力し、ＩＥＥＥ７５４形式に従い、ビット結合を行い、ｒｅｐａｃｋ結果ｄ３９を出力する。レジスタ５２は、ｒｅｐａｃｋ結果ｄ３９を格納し、出力ポートへ出力する。つまり、レジスタ５２には、乗算結果が格納される。
【００６７】
続いて、加算処理における動作の特徴を説明する。まず、加算器３４は、シフト結果ｄ２０及びセレクタ６４により選択された仮数ｄ１７を入力し、加算し、加算結果ｄ２５を出力する。つまり、加算器３４は、当該指示が積和演算無を示す場合、加算数Ｄの仮数ｄ１７に被加算数Ｃのシフト結果ｄ２０を加算する加算処理を行う。
【００６８】
セレクタ６６は、指示が積和演算無を示すため、被加算数Ｃ及び加算数Ｄの加算結果ｄ２５を選択して、ＬＺＡ３８へ出力する。そのため、ＬＺＡ３８は、加算結果ｄ２５を入力し、ＬＺＡ処理を行い、加算結果ｄ２５に基づき生成されたＬＺＡ結果ｄ２７を出力する。また、シフト回路４０は、指示が積和演算無を示す場合、加算結果ｄ２５を用いてシフト処理を行い、シフト結果ｄ２９を出力する。そして、後処理シフト回路４６は、被加算数Ｃ及び加算数Ｄの加算結果ｄ２５に基づき生成されたＬＺＡ結果ｄ２７に応じて、後処理を行う。
【００６９】
また、ＳＴＩＣＫＹ生成回路４３及び丸め判定回路４４は、被加算数Ｃ及び加算数Ｄの加算結果ｄ２５を用いて丸め指示ｄ３３を出力する。そして、セレクタ６７は、指示が積和演算無を示すため、丸め指示ｄ３３を選択して、丸め回路４７へ出力する。丸め回路４７は、被加算数Ｃ及び加算数Ｄの加算結果であるシフト結果ｄ２９及びセレクタ６７に選択された丸め指示ｄ３３を入力し、丸め処理を行い、丸め結果ｄ３６を出力する。
【００７０】
ｒｅｐａｃｋｅｒ４９は、指数加算結果ｄ１９、シフト結果ｄ３５及び丸め結果ｄ３６を入力し、ＩＥＥＥ７５４形式に従い、ビット結合を行い、ｒｅｐａｃｋ結果ｄ３８を出力する。レジスタ５０は、ｒｅｐａｃｋ結果ｄ３８を格納し、出力ポートへ出力する。つまり、レジスタ５０には、加算結果が格納される。
【００７１】
上述した本発明の実施の形態２では、加算器３４は、当該指示が積和演算無を示す場合であっても補正処理を行っていた。しかし、後続のシフト回路４０では、加算結果としてＣＳＡ３６及び加算器３９の処理結果である加算結果ｄ２８を用いていた。つまり、当該指示が積和演算無を示す場合における加算器３４を有効活用できていなかった。そこで、本発明の実施の形態３では、当該指示が積和演算無を示す場合に、加算器３４に被加算数Ｃ及び加算数Ｄの加算処理を行わせるものとした。これにより、処理効率が向上する。併せて、本発明の実施の形態２で必須であった加算器４５を不要とし、同等の処理を実現することで、回路規模を縮小するという効果を奏する。
【００７２】
また、言い換えると、セレクタ６４は、指示が積和演算有を示す場合に、第４のオペランドを補正する補正値を選択して加算器３４へ出力し、指示が積和演算無を示す場合に、第４のオペランドを選択して加算器３４へ出力する機能セレクタである。このとき、加算器３４は、セレクタ６４により出力された補正値に第３のオペランドを加算して補正結果を求める補正処理をさらに行う。そして、シフト回路４０は、積和演算結果を補正結果に基づき補正して出力する。これにより、加算処理に用いられる加算器３４を積和演算処理に有効活用できる。
【００７３】
また、本発明の実施の形態３では、積和演算処理を行うＣＳＡ３６と、外部からの積和演算の有無を示す指示によりＣＳＡ３６への出力を選択するセレクタ６５とを備えている。そして、セレクタ６５は、当該指示が積和演算有を示す場合に、第３のオペランドを選択してＣＳＡ３６へ出力し、ＣＳＡ３６は、セレクタ６５により出力された第３のオペランドを用いて積和演算処理を行う。
【００７４】
また、本発明の実施の形態３では、加算処理と乗算処理が同時に実行可能なように最小限のハードウェアを追加しているので、積和演算処理とは別に、加算処理と乗算処理とが同時に実行できるという効果を奏する。
【００７５】
＜発明の実施の形態４＞
図５は、本発明の実施の形態４にかかる積和演算装置２０２の構成を示すブロック図である。本発明の実施の形態４にかかる積和演算装置２０２は、本発明の実施の形態３に係る積和演算装置２０１に改良を加えたものである。すなわち、外部からの指示が積和演算無を示す場合に、積和演算装置２０１のＣＳＡ３６で行われていた被乗数Ａ及び乗数Ｂの乗算結果をそのまま加算器３９へ出力する処理を待たずに、桁上げ値ｄ２１及び加算結果ｄ２２を直接加算器３９へ出力するようにしたものである。そのために、積和演算装置２０１のセレクタ６５に代えて、ＣＳＡ３６の後段にセレクタ６８及び６９を追加した。尚、図５において、図４と同様の構成については、詳細な説明を省略する。以下では、本発明の実施の形態３との違いを中心に説明する。
【００７６】
セレクタ６８及び６９は、外部からの指示に応じて入力を切り替える機能セレクタである。具体的には、セレクタ６８は、桁上げ値ｄ２１及びＣＳＡ３６から出力される桁上げ値を入力し、外部からの指示が積和演算有を示す場合、当該ＣＳＡ３６から出力される桁上げ値を選択し、当該指示が積和演算無を示す場合、桁上げ値ｄ２１を選択して、加算器３９へ出力する。セレクタ６９は、加算結果ｄ２２及びＣＳＡ３６から出力される加算結果を入力し、外部からの指示が積和演算有を示す場合、当該ＣＳＡ３６から出力される加算結果を選択し、当該指示が積和演算無を示す場合、加算結果ｄ２２を選択して、加算器３９へ出力する。
【００７７】
言い換えると、セレクタ６８及び６９は、外部からの指示が積和演算有を示す場合に、積和演算結果を選択し、当該指示が積和演算無を示す場合に、乗算結果を選択して加算器３９以降へ出力する。これにより、不要な積和演算を行わないことができ、処理を効率かつ迅速に行うことができる。
【００７８】
このように、本発明の実施の形態４では、積和演算装置２０２の乗算処理のみの動作において、セレクタ６８及び６９によりＣＳＡ３６の処理を実質的にスキップすることができるため、積和演算処理よりも短い時間で乗算処理が可能となるという効果を奏する。
【００７９】
＜その他の発明の実施の形態＞
本発明により、情報処置装置で加減算や乗算処理を行う場合に、本発明の実施の形態１乃至４にかかる積和演算装置１００及び２００乃至２０２のいずれかを使用することにより、少ないハードウェアで積和動作か乗算及び加算の同時実行可能な演算器が使用可能となる。本発明は、情報処理を行う積和演算器において、回路の使用効率を高めて、異なる命令の乗算処理と加算処理要求があった場合にも同時に実行できるようにしたことにある。
【００８０】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【００８１】
１００  積和演算装置
１０１  演算部
１０２  出力部
１１１  第１のオペランド
１１２  第２のオペランド
１１３  第３のオペランド
１１４  第４のオペランド
１１５  指示
１１６  出力結果
２００  積和演算装置
２０１  積和演算装置
２０２  積和演算装置
２１  レジスタ
２１１  指数部
２１２  仮数部
２２  レジスタ
２２１  指数部
２２２  仮数部
２３  レジスタ
２３１  指数部
２３２  仮数部
２４  レジスタ
２４１  指数部
２４２  仮数部
２５  ｕｎｐａｃｋｅｒ
２６  ｕｎｐａｃｋｅｒ
２７  ｕｎｐａｃｋｅｒ
２８  ｕｎｐａｃｋｅｒ
３１  指数加算器
３２  指数加算器
３３  シフト回路
３４  加算器
３５  乗算ツリー
３６  ＣＳＡ
３７  ＰＧ生成回路
３８  ＬＺＡ
３９  加算器
４０  シフト回路
４１  ＳＴＩＣＫＹ生成回路
４２  丸め判定回路
４３  ＳＴＩＣＫＹ生成回路
４４  丸め判定回路
４５  加算器
４６  後処理シフト回路
４７  丸め回路
４８  丸め回路
４９  ｒｅｐａｃｋｅｒ
５０  レジスタ
５１  ｒｅｐａｃｋｅｒ
５２  レジスタ
６０  セレクタ
６１  セレクタ
６２  セレクタ
６３  セレクタ
６４  セレクタ
６５  セレクタ
６６  セレクタ
６７  セレクタ
６８  セレクタ
６９  セレクタ
ｄ１０  指数
ｄ１１  仮数
ｄ１２  指数
ｄ１３  仮数
ｄ１４  指数
ｄ１５  仮数
ｄ１６  指数
ｄ１７  仮数
ｄ１８  指数加算結果
ｄ１９  指数加算結果
ｄ２０  シフト結果
ｄ２１  桁上げ値
ｄ２２  加算結果
ｄ２３  桁上げ値
ｄ２４  加算結果
ｄ２５  加算結果
ｄ２６  ＰＧ結果
ｄ２７  ＬＺＡ結果
ｄ２８  加算結果
ｄ２９  シフト結果
ｄ３０  ＳＴＩＣＫＹ結果
ｄ３１  丸め指示
ｄ３２  ＳＴＩＣＫＹ結果
ｄ３３  丸め指示
ｄ３４  加算結果
ｄ３５  シフト結果
ｄ３６  丸め結果
ｄ３７  丸め結果
ｄ３８  ｒｅｐａｃｋ結果
ｄ３９  ｒｅｐａｃｋ結果
Ａ  被乗数
Ｂ  乗数
Ｃ  被加算数
Ｄ  加算数
８０  積和演算回路
８１  レジスタ
８１１  指数部
８１２  仮数部
８２  レジスタ
８２１  指数部
８２２  仮数部
８３  レジスタ
８３１  指数部
８３２  仮数部
８４  指数部加算部
８５  指数部加算部
８６  シフト回路
８７  仮数部乗算回路
８８  仮数部加算部
８９  セロカウンタ
９０  指数部補正回路
９１  正規化回路
９２  丸め回路
【図１】
2011054012.tif 000003
【図２】
2011054012.tif 000004
【図３】
2011054012.tif 000005
【図４】
2011054012.tif 000006
【図５】
2011054012.tif 000007
【図６】
2011054012.tif 000008