(57)【要約】【課題】  整数の演算と拡大体の演算とを小さい回路規模で高速に実行する。【解決手段】  全加算器に比べて桁上げ出力切換用のアンドゲート１０６が無い分だけ小さい回路で高速演算可能な桁上げ保存加算器ＣＳＡ１２０−１〜１２０−５から構成された整数加算用のＣＳＡツリーを改良する。具体的には、整数加算用のＣＳＡツリーの一部を、和出力Ｓ０〜Ｓ２（＝排他的論理和の出力）のみを互いに加算するように各桁上げ保存加算器ＣＳＡ１２０−１〜１２０−３を構成する。これにより、整数加算用のＣＳＡツリーの一部を拡大体加算用のＣＳＡツリー１２０Ｇとして機能させることができる。従って、整数の演算と拡大体の演算とを小さい回路規模で高速に実行できる。【選択図】  図１
2005293256.tif 000002
【特許請求の範囲】
【請求項１】
入力された３個以上のデータを互いに加算し、加算結果を表す排他的論理和データと桁上げデータとを出力する複数の桁上げ保存加算器が互いに多入力少出力のツリー状に直列接続されてなり、前記排他的論理和データ及び前記桁上げデータを順次、加算して整数加算を実行するように構成された整数加算用の加算器ツリーを備えた演算装置であって、
前記整数加算用の加算器ツリーの一部分として設けられ、先頭から途中までの複数の桁上げ保存加算器からなり、当該各桁上げ保存加算器から得られる排他的論理和データ及び桁上げデータのうち、排他的論理和データのみを互いに加算して拡大体加算を実行するように構成された拡大体加算用の加算器ツリーと、
前記拡大体加算用の加算器ツリーにおける最後尾の桁上げ保存加算器の排他的論理和データ及び桁上げデータのうち、排他的論理和データのみを拡大体の加算結果として前記整数加算用の加算器ツリーから分岐出力する拡大体加算結果出力手段と、
を備えたことを特徴とする演算装置。
【請求項２】
請求項１に記載の演算装置において、
前記各データが複数ビットからなり、前記複数ビットを１ワード単位としたとき、複数ワードからなる被乗数データに複数ワードからなる乗数データを乗算する際に、前記被乗数データと前記乗数データの各ワードとを当該各ワード内の各ビット毎に乗算し、前記乗数データの各ワード毎に、当該各ワード内のビット数と同じ個数の部分積データを算出する部分積算出回路と、
前記部分積算出回路により得られた各部分積データを下位側から１ワードずつ加算するように、各部分積データの各ワードを前記先頭の桁上げ保存加算器に入力する部分積入力手段と、
前記部分積入力手段による入力の結果、前記整数加算用の加算器ツリー内の最後尾の桁上げ保存加算器から得られる排他的論理和データと桁上げデータとを加算し、得られた整数加算結果を出力する桁上げ伝搬加算器と、
前記桁上げ伝搬加算器から得られた整数加算結果のうち、１ワードを越えたビットデータを桁上げデータとして次の上位側のワードの加算に繰り越すように、前記部分積入力手段を制御する部分積入力制御手段と、
を備えたことを特徴とする演算装置。
【請求項３】
請求項１に記載の演算装置において、
前記各データが複数ビットからなり、前記複数ビットを１ワード単位としたとき、複数ワードからなる被乗数データに複数ワードからなる乗数データを乗算する際に、前記被乗数データの各ワードと前記乗数データの各ワードとを乗算し、前記乗数データの各ワード毎に、前記被乗数データのワード数と同じ個数の部分積データを算出する部分積算出回路と、
前記部分積算出回路により得られた各部分積データを加算するように、当該各部分積データを前記先頭の桁上げ保存加算器に入力する部分積入力手段と、
前記部分積入力手段による入力の結果、前記整数加算用の加算器ツリー内の最後尾の桁上げ保存加算器から得られる排他的論理和データと桁上げデータとを加算し、得られた整数加算結果を出力する桁上げ伝搬加算器と、
を備えたことを特徴とする演算装置。
【請求項４】
請求項２又は請求項３に記載の演算装置において、
整数加算を実行するときには前記桁上げ伝搬加算器から得られる整数加算結果を選択し、拡大体加算を実行するときには前記拡大体加算結果出力手段から得られる拡大体の加算結果を選択するための選択手段を備えたことを特徴とする演算装置。
【請求項５】
請求項１乃至請求項３のいずれか１項に記載の演算装置において、
前記拡大体加算結果出力手段に代えて、
整数加算を実行するときには前記整数加算用の加算器ツリー内の最後尾の桁上げ保存加算器に入力される桁上げデータを通過させ、拡大体加算を実行するときには当該最後尾の桁上げ保存加算器に入力される桁上げデータを遮断するための桁上げデータ遮断手段を備えたことを特徴とする演算装置。
【請求項６】
請求項１乃至請求項３のいずれか１項に記載の演算装置において、
前記拡大体加算結果出力手段に代えて、
前記拡大体加算用の加算器ツリー内の最後尾の桁上げ保存加算器から排他的論理和データが入力される桁上げ保存加算器に対して他の桁上げ保存加算器から入力される排他的論理和データ及び桁上げデータに関し、整数加算を実行するときには当該排他的論理和データ及び桁上げデータを通過させ、拡大体加算を実行するときには当該排他的論理和データ及び桁上げデータを遮断するための桁上げデータ遮断手段を備えたことを特徴とする演算装置。
【請求項７】
請求項１乃至請求項３のいずれか１項に記載の演算装置において、
前記拡大体加算結果出力手段に代えて、
前記拡大体加算用の加算器ツリー内の最後尾の桁上げ保存加算器から桁上げデータが入力される桁上げ保存加算器に関し、整数加算を実行するときには当該桁上げ保存加算器から出力される排他的論理和データ及び桁上げデータを通過させ、拡大体加算を実行するときには当該桁上げ保存加算器から出力される排他的論理和データ及び桁上げデータを遮断するための桁上げデータ遮断手段を備えたことを特徴とする演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、整数の演算と２の拡大体（ガロア体）の演算とを実行可能な演算装置に係り、特に、両演算を小さい回路規模で高速に実行し得る演算装置に関する。
【背景技術】
【０００２】
従来、整数の演算と２の拡大体の演算とをいずれも実行可能な演算装置が知られている（例えば、特許文献１参照）。
【０００３】
この演算装置では、例えば整数乗算と拡大体乗算を実現するために、図１３に示す如き、乗算結果の一部である部分積を加算するための部分積加算回路と、図１４に示す如き、この部分積加算回路を構成する全加算器（ＦＡ：Full Adder）とを備えている。
【０００４】
部分積加算回路は、図１３に示す場合、７ビットのデータＡ（＝ａ０，…，ａ６）と７ビットのデータＢ（＝ｂ０，…，ｂ６）とを乗算したとき、得られる７つの部分積Ｚ０（＝Ａ・ｂ０），Ｚ１（＝Ａ・ｂ１），…，Ｚ６（＝Ａ・ｂ６）を順次加算する。
【０００５】
この種の部分積加算回路は、制御信号ＣＥによって桁上げ（キャリー）出力Ｃの有無を切換可能な全加算器ＦＡを備えたことにより、桁上げのある整数の乗算と、桁上げの無い拡大体の乗算とのいずれも実行可能となっている。
【０００６】
詳しくは、全加算器ＦＡは、アンドゲート１０１，１０２，１０６、排他的論理和ゲート１０３，１０４及びオアゲート１０５を備え、入力信号として、データ入力Ｘ，Ｙ，Ｚ及び制御入力ＣＥがあり、出力信号として、桁上げ出力Ｃ及び和出力Ｓがある。これにより、全加算器ＦＡは、データ入力Ｘ，Ｙ，Ｚが排他的論理和ゲート１０３，１０４を通過して得られた排他的論理和を、和出力Ｓとして出力する。また、全加算器ＦＡは、データ入力Ｘ，Ｙがアンドゲート１０１を通過して得られた論理積と、データ入力Ｘ，Ｙが排他的論理和ゲート１０３を通過して得られた排他的論理和とデータ入力Ｚとがアンドゲート１０２を通過して得られた論理積と、からなる両論理積がオアゲート１０５を通過して得られた論理和をアンドゲート１０６を介して桁上げ出力Ｃとして出力する。
【０００７】
ここで、アンドゲート１０６はキャリー出力Ｃを切換制御する機能を持つ。アンドゲート１０６は、制御入力ＣＥが‘Ｈ’のときにのみ、桁上げ入力（キャリー信号）を出力し、制御入力ＣＥが‘Ｌ’のときには、桁上げ入力の値によらずに桁上げ出力‘０’を出力する。
【０００８】
例えば整数の演算の際には、制御入力ＣＥを‘Ｈ’として桁上げ出力Ｃを有効にし、部分積Ｚ０，Ｚ１，…，Ｚ６を順次加算していき、最終的に結果Ｒを得る。ここで、部分積Ｚｉ（ｉ＝０〜６）は、Ａとｂｉ（ｉ＝０〜６）の論理積の結果である。すなわち、最初に加算器１１０−０により、部分積Ｚ０，Ｚ１の和が求められ、次に加算器１１０−１により、部分積の和（Ｚ０＋Ｚ１）と部分積Ｚ２との和が求められる。以下同様にして、最終的に積Ｒ＝Ａ×Ｂの結果が得られる。
【０００９】
一方、拡大体の演算は、整数の演算とは異なり、桁上げが無いので、下位の演算結果が上位の演算結果に影響しない。このため、拡大体の演算は、全加算器ＦＡにて、桁上げ出力Ｃを無効にし、排他論理和からなる和出力Ｓのみで実行される。
【００１０】
例えば拡大体の乗算の際には、全ての加算器の桁上げ出力を‘０’とするので、乗算結果として、部分積Ｚ０〜Ｚ６の排他論理和の結果である和出力Ｓが出力される。
【００１１】
以上のように整数の演算と拡大体の演算とはそれぞれ実行可能となっている。  
また一方、整数乗算のみを実現する演算装置が知られている。この演算装置は、図１３に示した部分積加算回路を、図１５に示すように、複数の入力を加算して次段に出力するようにツリー状に配置された桁上げ保存加算器（ＣＳＡ：Carry Save Adder）１１２−１〜１１２−５と、最後尾に配置された桁上げ伝搬加算器（ＣＰＡ：Carry Propagate Adder）１１３とにより実現する方式である（例えば、非特許文献１参照）。
【００１２】
ここで、桁上げ保存加算器ＣＳＡ１１２−１〜１１２−５は、例えば図１６に示すように、図１４のアンドゲート１０６を省略した全加算器を必要なビット数分だけ並べて構成される。なお、桁上げ保存加算器ＣＳＡ１１２−１〜１１２−５は、桁上げ（キャリー）を伝播しないので、多入力を加算する場合に遅延時間が短くなる利点がある。
【００１３】
但し、桁上げ保存加算器ＣＳＡ１１２−１〜１１２−５はその出力値が最終的な加算結果ではなく、また、桁上げ出力Ｃと和出力Ｓの２値が出力される。このため、最終的な加算結果を得るために、最後尾に桁上げ伝播加算器ＣＰＡ１１３を用いている。桁上げ伝播加算器ＣＰＡ１１３は、図１７に示すように、全加算器の桁上げ出力Ｃが上位桁の全加算器の入力に転送される。このため、桁上げ伝播加算器ＣＰＡ１１３は、桁上げ（キャリー）の伝播経路が長くなり、遅延時間が長くなる。
【００１４】
このように、多入力を加算する場合、ツリー状に接続した桁上げ保存加算器ＣＳＡ（以下、ＣＳＡツリーともいう）１１２−１〜１１２−５の最終出力を入力とするように桁上げ伝搬加算器ＣＰＡ１１３を配置し、演算を高速化する。
【００１５】
例えばＣＳＡツリー１１２−１〜１１２−５は、部分積Ｚ０〜Ｚ６を加算する機能を持つ。この部分積Ｚ０〜Ｚ６の加算動作を図１８を用いて説明する。
【００１６】
１段目の桁上げ保存加算器ＣＳＡ１１２−１は、入力された部分積Ｚ０，Ｚ１，Ｚ２を互いに加算し、加算結果（合計値）を表す桁上げ出力Ｃ０と和出力Ｓ０を出力する。また同様に、１段目の他方の桁上げ保存加算器ＣＳＡ１１２−２は、入力された部分積Ｚ３，Ｚ４，Ｚ５を互いに加算し、得られた桁上げ出力Ｃ１と和出力Ｓ１を出力する。
【００１７】
２段目の桁上げ保存加算器ＣＳＡ１１２−３は、１段目のＣＳＡ１１２−２の和出力Ｓ１及び桁上げ出力Ｃ１と、部分積Ｚ６とを加算し、得られた和出力Ｓ２と桁上げ出力Ｃ２を出力する。
【００１８】
３段目の桁上げ保存加算器ＣＳＡ１１２−４は、１段目のＣＳＡ１１２−１の出力Ｓ０，Ｃ０と２段目のＣＳＡ１１２−３の桁上げ出力Ｃ２とを加算し、得られた和出力Ｓ３と桁上げ出力Ｃ３とを出力する。
【００１９】
４段目の桁上げ保存加算器ＣＳＡ１１２−５は、３段目のＣＳＡ１１２−４の出力Ｓ３，Ｃ３と、２段目のＣＳＡ１１２−３の和出力Ｓ２とを加算し、得られた和出力Ｓ４と桁上げ出力Ｃ４とを出力する。
【００２０】
最後尾の桁上げ伝播加算器ＣＰＡ１１３は、４段目のＣＳＡ１１２−５の出力Ｓ４，Ｃ４を互いに加算し、最終的な加算結果として、部分積Ｚ０〜Ｚ６の合計値Ｒを出力する。
【００２１】
このようなＣＳＡツリー１１２−１〜１１２−５及びＣＰＡ１１３は、小さい回路規模で整数乗算の部分積を高速に加算する。従って、ＣＳＡツリーを乗算における部分積の加算に用いることで高速な乗算が実現可能となる。
【特許文献１】特開２０００−２０７３８７号公報
【非特許文献１】ベルーズ・パルハミ（Behrooz Parhami）著、「コンピュータ算術（Computer Arithmetic）」、オックスフォード大学出版局（Oxford University Press）、２０００年。
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかしながら、以上のような演算装置では、例えば整数の乗算と拡大体の乗算とを実現する場合、桁上げ出力を制御するためのアンドゲート１０６を全加算器ＦＡ毎に必要とするため、回路規模の増大と処理時間の増大を招いてしまう。
【００２３】
一方、例えば整数の乗算のみを実現する演算装置では、ＣＳＡツリーにより、小さい回路規模で整数乗算の部分積を高速に加算するものの、拡大体乗算を実行できない問題がある。
【００２４】
本発明は上記実情を考慮してなされたもので、整数の演算と拡大体の演算とを小さい回路規模で高速に実行し得る演算装置を提供することを目的とする。
【課題を解決するための手段】
【００２５】
第１の発明は、入力された３個以上のデータを互いに加算し、加算結果を表す排他的論理和データと桁上げデータとを出力する複数の桁上げ保存加算器が互いに多入力少出力のツリー状に直列接続されてなり、前記排他的論理和データ及び前記桁上げデータを順次、加算して整数加算を実行するように構成された整数加算用の加算器ツリーを備えた演算装置であって、前記整数加算用の加算器ツリーの一部分として設けられ、先頭から途中までの複数の桁上げ保存加算器からなり、当該各桁上げ保存加算器から得られる排他的論理和データ及び桁上げデータのうち、排他的論理和データのみを互いに加算して拡大体加算を実行するように構成された拡大体加算用の加算器ツリーと、前記拡大体加算用の加算器ツリーにおける最後尾の桁上げ保存加算器の排他的論理和データ及び桁上げデータのうち、排他的論理和データのみを拡大体の加算結果として前記整数加算用の加算器ツリーから分岐出力する拡大体加算結果出力手段と、を備えた演算装置である。
【００２６】
第１の発明では、図１４に示した全加算器に比べてアンドゲート１０６が無い分だけ小さい回路で高速演算可能な桁上げ保存加算器からなる整数加算用の加算器ツリーの一部を排他的論理和データのみを加算させるように構成して、整数加算用の加算器ツリーの一部を拡大体加算用の加算器ツリーとして機能させることにより、整数の演算と拡大体の演算とを小さい回路規模で高速に実行することができる。
【発明の効果】
【００２７】
以上説明したように本発明によれば、整数の演算と拡大体の演算とを小さい回路規模で高速に実行することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の各実施形態について図面を参照しながら説明する。  
（第１実施形態）
図１は本発明の第１の実施形態に係る演算装置の構成を示す模式図である。この演算装置は、整数加算用の構成の一部を、拡大体加算用の構成として機能させたものである。
【００２９】
ここで、整数加算用の構成は、整数加算用のＣＳＡ（加算器）ツリーと、桁上げ伝搬加算器ＣＰＡ１２１とを備えている。
【００３０】
整数加算用のＣＳＡツリーは、入力された３個以上のデータを互いに加算し、加算結果を表す排他的論理和データと桁上げデータとを出力する複数の桁上げ保存加算器ＣＳＡ１２０−１〜１２０−５が互いに多入力少出力のツリー状に直列接続されてなる。この整数加算用のＣＳＡツリーは、各桁上げ保存加算器ＣＳＡ１２０−１〜１２０−５の和出力（排他的論理和データ）Ｓ０〜Ｓ４及び桁上げ出力（桁上げデータ）Ｃ０〜Ｃ４を順次、加算して整数加算を実行するように構成されている。
【００３１】
各桁上げ保存加算器ＣＳＡ１２０−１〜１２０−５は、例えば図１６に示した全加算器を必要なビット数並べたものとなる。例えば４ビットの場合、図２に示す回路構成となる。この場合、各桁上げ保存加算器ＣＳＡ１２０−１〜１２０−５は、Ｘ＝（Ｘ４，Ｘ３，Ｘ２，Ｘ１）、Ｙ＝（Ｙ４，Ｙ３，Ｙ２，Ｙ１）、Ｚ＝（Ｚ４，Ｚ３，Ｚ２，Ｚ１）の３つの数値データが入力され、和出力としてＳ＝（Ｓ４，Ｓ３，Ｓ２，Ｓ１）が出力され、桁上げ出力としてＣ＝（Ｃ５，Ｃ４，Ｃ３，Ｃ２）が出力される。
【００３２】
桁上げ伝搬加算器ＣＰＡ１２１は、整数加算用のＣＳＡツリー内の最後尾の桁上げ保存加算器ＣＳＡ１２０−５の和出力Ｓ４と桁上げ出力Ｃ０とを加算し、得られた整数加算結果Ｒを出力するものである。
【００３３】
一方、拡大体加算用の構成は、拡大体加算用のＣＳＡ（加算器）ツリー１２０Ｇと、拡大体加算結果出力部１２２とを備えている。
【００３４】
ここで、拡大体加算用のＣＳＡツリー１２０Ｇは、整数加算用のＣＳＡツリーの一部分として設けられ、先頭から途中までの桁上げ保存加算器ＣＳＡ１２０−１〜１２０−３からなり、当該各桁上げ保存加算器１２０−１〜１２０−３から得られる和出力Ｓ０〜Ｓ２及び桁上げ出力Ｃ０〜Ｃ２データのうち、和出力Ｓ０〜Ｓ２のみを互いに加算して拡大体加算を実行するように構成されている。すなわち、拡大体加算用のＣＳＡツリーは、データ入力とＣＳＡの和出力のみで構成されている。
【００３５】
拡大体加算結果出力部１２２は、拡大体加算用のＣＳＡツリーにおける最後尾の桁上げ保存加算器１２０−３の和出力Ｓ２及び桁上げ出力Ｃ２のうち、和出力Ｓ２のみを拡大体の加算結果ＲＧとして整数加算用のＣＳＡツリーから分岐出力するものである。
【００３６】
次に、以上のように構成された演算装置の動作を説明する。  
始めに、整数の乗算動作と２の拡大体の乗算動作について述べる。
【００３７】
図３は２進数７ビットの被乗数データＡと、２進数７ビットの乗数データＢとの整数乗算の様子を示す模式図である。被乗数データＡの各ビットは、それぞれ（ａ６、ａ５、ａ４、ａ３、ａ２、ａ１、ａ０）と表され、最上位ビットＭＳＢがａ６であり、最下位ビットＬＳＢがａ０である。同様に乗数データＢの各ビットは、最上位ビットから順に（ｂ６、ｂ５、ｂ４、ｂ３、ｂ２、ｂ１、ｂ０）と表される。
【００３８】
整数乗算においては、最初に被乗数データＡと乗数データＢとの各ビットの論理積が行なわれ、部分積データＺ０〜Ｚ６が得られる。すなわち、部分積データＺｉ（＝Ａ・ｂｉ）を得るため、論理積Ａ・ｂｉ（ｉ＝０〜６）が行なわれる。
【００３９】
例えば、部分積データＺ０は、乗数データＢの最下位ビットｂ０と被乗数データＡとの論理積である。次に、部分積データＺｉは、左に１ビットずつシフト（２倍）される。それら部分積データＺ０〜Ｚ６が、全て加算されることにより、乗算結果Ｒ（＝Ａ・Ｂ）が得られる。
【００４０】
一方、拡大体の加算では桁上げが起こらない。従って、論理積の後のシフトまでの手順は整数の場合と同じであるが、通常の加算とは異なり、各桁の排他論理和を行なうことで拡大体での乗算が実現される。この加算部分を実現するのが、拡大体加算用のＣＳＡツリー１２０Ｇである。
【００４１】
拡大体加算用のＣＳＡツリー１２０Ｇは、整数加算用のＣＳＡツリーの一部であり、全てのデータ入力Ｚ０〜Ｚ６とＣＳＡの和出力Ｓ０，Ｓ１のみが入力される桁上げ保存加算器ＣＳＡ１２０−１〜１２０−３のみで構成される。
【００４２】
各桁上げ保存加算器ＣＳＡ１２０−１〜１２０−３の和出力Ｓ０〜Ｓ２は、それぞれ３つの入力データの各ビットの排他論理和の結果であり、すなわち、拡大体における加算結果である。従って、拡大体加算用のＣＳＡツリー１２０Ｇにおける最後尾の桁上げ保存加算器ＣＳＡ１２０−３の和出力Ｓ２は、全ての入力の各桁（ビット）の排他論理和の結果となる。従って、拡大体加算用のＣＳＡツリー１２０Ｇの出力ＲＧは、拡大体の乗算結果と一致する。
【００４３】
以上のようなＣＳＡツリーの演算過程を図４を用いて詳細に述べる。
【００４４】
乗数データＢの各ビットとの部分積データＺ０〜Ｚ６が入力データとして本実施形態のＣＳＡツリーに入力される。ＣＳＡツリーにおいては、入力された部分積データＺ０〜Ｚ２は、桁上げ保存加算器ＣＳＡ１２０−１により互いに加算され、加算結果を表す和出力Ｓ０及び桁上げ出力Ｃ０として桁上げ保存加算器ＣＳＡ１２０−１から出力される。同様に、入力された部分積データＺ３〜Ｚ５は、桁上げ保存加算器ＣＳＡ１２０−２により互いに加算され、加算結果を表す和出力Ｓ１及び桁上げ出力Ｃ１として桁上げ保存加算器ＣＳＡ１２０−２から出力される。
【００４５】
次に、和出力Ｓ０，Ｓ１及び部分積データＺ６は、桁上げ保存加算器ＣＳＡ１２０−３により互いに加算され、和出力Ｓ２及び桁上げ出力Ｃ２として桁上げ保存加算器ＣＳＡ１２０−３から出力される。この和出力Ｓ２は、部分積データＺ０〜Ｚ６の各桁の排他論理和であり、整数加算用のＣＳＡツリーから分岐して、拡大体の乗算結果ＲＧとして出力される。
【００４６】
さらに、桁上げ出力Ｃ０〜Ｃ２は、桁上げ保存加算器ＣＳＡ１２０−４により互いに加算され、和出力Ｓ３及び桁上げ出力Ｃ３として桁上げ保存加算器ＣＳＡ１２０−４から出力される。
【００４７】
そして、和出力Ｓ２，Ｓ３及び桁上げ出力Ｃ３は、桁上げ保存加算器ＣＳＡ１２０−５により互いに加算され、和出力Ｓ４及び桁上げ出力Ｃ４として桁上げ保存加算器ＣＳＡ１２０−５から出力される。この和出力Ｓ４と桁上げ出力Ｃ４は、桁上げ伝播加算器ＣＰＡ１２１により互いに加算され、最終的な整数を表す乗算結果Ｒとして出力される。
【００４８】
上述したように本実施形態によれば、図１４に示した全加算器に比べてアンドゲート１０６が無い分だけ小さい回路で高速演算可能な桁上げ保存加算器ＣＳＡ１２０−１〜１２０−５からなる整数加算用のＣＳＡツリーの一部を和出力Ｓ０〜Ｓ２のみを加算させるように構成して、整数加算用のＣＳＡツリーの一部を拡大体加算用のＣＳＡツリー１２０Ｇとして機能させることにより、整数の演算と拡大体の演算とを小さい回路規模で高速に実行することができる。
【００４９】
すなわち、入力データＺ０〜Ｚ６とＣＳＡの和出力のみを入力とするＣＳＡから構成されるＣＳＡツリー１２０Ｇを用いるので、ＣＳＡツリー１２０Ｇの和出力Ｓ２が拡大体の演算結果ＲＧとなり、拡大体演算に関し、桁上げ（キャリー）信号の制御が不要となる。また、ＣＳＡツリー１２０Ｇの和出力Ｓ２は整数加算の途中結果であるので、さらに桁上げ出力Ｃ０〜Ｃ２を加算することにより、整数の加算結果Ｒをも得ることができる。すなわち、整数加算用のＣＳＡツリーの一部を拡大体加算用のＣＳＡツリーとして機能させる構成により、回路規模の小型化、高速化を実現することができる。
【００５０】
（第２の実施形態）
次に、本発明の第２の実施形態について説明するが、予めその背景について述べる。暗号処理では、数百ビットから数千ビットの多ワードの乗数データ同士を乗算することがある。この種の多ワードの乗算処理は一度に実行する場合、大規模なハードウェア抜きでは困難である。従って、多ワードの乗算処理は、比較的短いビットの乗算を繰り返して実行される。本実施形態は、このような多ワードの乗算処理にも適用可能な複数ワードの乗算処理に関するものである。
【００５１】
図５は本発明の第２の実施形態に係る演算装置の構成を示す模式図である。この演算装置は、メモリ１４０、部分積算出回路１４１、部分積加算器１４２−１、加算回路１４３、排他論理和回路１４４、選択回路１４５及び制御部１４６を備えている。
【００５２】
メモリ１４０は、制御部１４６によりバスを介して読出／書込されるＲＡＭであり、入力データ（被乗数データＡ、乗数データＢ）、中間結果Ｃ及び最終結果Ｚがバスを介して一時的に記憶される。
【００５３】
部分積算出回路１４１は、メモリ１４０からバスを介して転送入力された被乗数データＡと乗数データＢとの部分積を算出し、得られた部分積データＺ０〜Ｚ７を部分積加算器１４２−１に出力する機能をもっている。
【００５４】
具体的には、部分積算出回路１４１は、各データが複数ビットからなり、複数ビットを１ワード単位としたとき、複数ワードからなる被乗数データＡに複数ワードからなる乗数データＢを乗算する際に、被乗数データＡの各ワードと乗数データＢの各ワードとを乗算し、乗数データＢの各ワード毎に、被乗数データＡのワード数と同じ個数の部分積データを算出する機能をもっている。また、部分積算出回路１４１は、算出した各部分積データＺ０〜Ｚ７を加算させるように、各部分積データＺ０〜Ｚ７を先頭の桁上げ保存加算器１２０−１，１２０−２，１２０−４に入力する機能（部分積入力手段）をもっている。
【００５５】
部分積加算器１４２−１は、図１に示したＣＳＡツリーで構成され、部分積算出回路１４１から入力された部分積データＺ０〜Ｚ７の拡大体加算と整数加算とを実行する機能と、得られた整数加算結果Ｒを加算器１４３に出力する機能と、得られた拡大体加算結果ＲＧを排他論理和回路１４４に出力する機能とをもっている。
【００５６】
加算器１４３は、部分積加算回路１４２の整数加算結果Ｒとメモリ１４０からバスを介して転送入力された中間結果Ｃとを加算し、得られた加算結果を選択回路１４５に出力するものである。
【００５７】
排他論理和回路１４４は、部分積加算回路１４２の拡大体加算結果ＲＧとメモリ１４０からバスを介して転送入力された中間結果Ｃとの排他的論理和を算出し、得られた算出結果を選択回路１４５に出力するものである。
【００５８】
選択回路１４５は、部分積加算器１４２−１で整数加算を実行するときには加算器１４３の出力を選択し、部分積加算器１４２−１で拡大体加算を実行するときには排他論理和回路１４４の出力を選択し、選択により得られた最終結果データＺをメモリ１４０に向けてバスに出力するものである。
【００５９】
制御部１４６は、前述した各回路１４０〜１４５を、被乗数データＡと乗数データＢとの乗算を実行するように制御するものである。
【００６０】
次に、以上のように構成された演算装置の動作を説明する。  
図６は１２ビットの被乗数データＡと８ビットの乗数データＢとを乗算する様子を示す概念図である。図６の例では４ビットを１ワードとしている。すなわち、被乗数データＡは、３ワードａ２，ａ１，ａ０で構成される。各ワードは、ａ２＝｛ａ２３，ａ２２，ａ２１，ａ２０｝であり、ａ１＝｛ａ１３，ａ１２，ａ１１，ａ１０｝であり、ａ０＝｛ａ０３，ａ０２，ａ０１，ａ００｝である。
【００６１】
乗数データＢは、２ワードｂ１，ｂ０で構成される。各ワードは、ｂ１＝｛ｂ１３，ｂ１２，ｂ１１，ｂ１０｝であり、ｂ０＝｛ｂ０３，ｂ０２，ｂ０１，ｂ００｝である。
【００６２】
この２数Ａ，Ｂの乗算は、図６に示すように、各ビットの論理積を求め、得られた部分積データを乗数データＢのビットの位置によって左にシフトした値を全て加算して実行される。
【００６３】
すなわち、被乗数データＡと乗数データＢの最下位ビットｂ００との論理積の値（Ａ・ｂ００）、被乗数データＡと最下位から２番目ビットｂ０１との論理積（Ａ・ｂ０１）を１ビット左シフトした値、…、被乗数データＡと最下位から７番目ビットｂ１３との論理積（Ａ・ｂ１３）を７ビット左シフトした値、の全てを合計した値が乗算結果となる。
【００６４】
このような乗算Ａ×Ｂを１ワード分の乗算器を用いて実現する場合の様子を図７に示す。この例では、被乗数データＡの１ワードａ２，ａ１又はａ０と、乗数データの１ワードｂ０とを入力とし、２ワードの部分積データを出力する乗算器（部分積算出回路１４１）を用いる。
【００６５】
乗算Ａ×Ｂの概略としては、被乗数データＡと、乗数データＢの最下位ワードｂ０とを乗算し、部分積データｇ（＝Ａ×ｂ０）を得る。次に、被乗数データＡと、乗数データＢの次のワードｂ１とを乗算し、部分積データｋ（＝Ａ×ｂ１）を得る。最後に、部分積データｇ，ｋを加算することで、乗算結果Ａ×Ｂ（＝ｇ＋ｋ）が得られる。
【００６６】
この乗算を１ワード分の乗算器を用いて実現する場合、部分積データｇ，ｋは次のように算出される。ここでは、部分積データｇの算出過程を代表例に挙げて述べる。
【００６７】
始めに、制御部１４６は、メモリ１４０内の被乗数データＡの最下位ワードａ０および乗数データＢの最下位ワードｂ０を部分積算出回路１４１に入力する。部分積算出回路１４１は、被乗数データＡの最下位ワードａ０と、乗数データＢの最下位ワードｂ０の各ビットとの論理積を計算する。すなわち、ａ０（＝｛ａ０３，ａ０２，ａ０１，ａ００｝）とｂ００の論理積、ａ０（＝｛ａ０３，ａ０２，ａ０１，ａ００｝）とｂ０１の論理積、ａ０（＝｛ａ０３，ａ０２，ａ０１，ａ００｝）とｂ０２の論理積、ａ０（＝｛ａ０３，ａ０２，ａ０１，ａ００｝）とｂ０３の論理積が部分積として部分積加算器１４２−１に入力する。
【００６８】
続いて、部分積加算器１４２−１は、入力された部分積を互いに加算し、中間データｄ＝｛ｄ１３，ｄ１２，ｄ１１，ｄ１０，ｄ０３，ｄ０２，ｄ０１，ｄ００｝が得られる。
【００６９】
ｄの下位４ビット（下位１ワード）は、中間データｇの最下位ワード（｛ｇ０３，ｇ０２，ｇ０１，ｇ００｝）としてメモリ１４０に書き込まれる。
【００７０】
次に、制御部１４６は、メモリ１４０内の被乗数データＡの最下位ワードａ１および乗数データＢの最下位ワードｂ０を部分積算出回路１４１に入力する。同様に部分積算出回路１４１によってａ１とｂ０の部分積が計算され、結果が部分積加算器１４２−１に入力される。部分積加算器１４２−１では、入力された部分積を互いに加算し、中間データｅ＝＝｛ｅ１３，ｅ１２，ｅ１１，ｅ１０，ｅ０３，ｅ０２，ｅ０１，ｅ００｝が得られる。
【００７１】
中間データｅの下位ワードは、中間データｄの上位ワードと加算され，中間結果ｇの一部（｛ｇ１３，ｇ１２，ｇ１１，ｇ１０｝）としてメモリに保存される。
【００７２】
また、中間データｅの下位ワードと中間データｄの上位ワードの加算において桁上げが発生するが、これは、中間データｅの上位ワードと中間データｆ（ａ２とｂ０の処理の結果）のときに一緒に加算される。
【００７３】
同様にａ２とｂ０の乗算も実行され、中間データｇがメモリに保存される。
【００７４】
次にＡとｂ１の乗算が同様に実行される。このとき、制御部１４６は、メモリ１４０から中間データｇを読み出し、加算器１４３に入力する。これによって、Ａとｂ１の乗算による中間データｋとメモリに保存されていた中間データｇ（Ａとｂ０の乗算結果）の加算が行われ、最終的な乗算結果ｃ＝｛ｃ４３，ｃ４２，ｃ４１，ｃ４０，…，ｃ０３，ｃ０２，ｃ０１，ｃ００｝が計算される。
【００７５】
このように、多ワードの乗算は、小規模な乗算器（１ワード分の部分積算出回路１４１と部分積加算器１４２−１）による乗算を繰り返し実行し、得られた部分積データｇ，ｋを加算器１４３が加算することで実現される。ここで、部分積加算器１４２−１は、第１の実施形態（図１）に示した演算装置であるので、多ワードの乗算においても整数乗算と拡大体の乗算とを実現することができる。また、選択回路１４５により、整数乗算の結果又は拡大体乗算の結果を選択して出力することができる。
【００７６】
上述したように本実施形態によれば、多ワードの乗数データ同士を乗算する際に、得られた部分積データの加算に第１の実施形態の演算装置を用いた構成により、第１の実施形態の効果を多ワードの乗算においても得ることができる。
【００７７】
なお、本実施形態では、図７中、部分積データｇ（＝Ａ×ｂ０），ｋ（＝Ａ×ｂ１）を算出した後に、部分積データの加算（ｇ＋ｋ）を実行する場合を説明したが、これに限らず、図８に示すように、部分積データｋを算出する時に、同時に同じ桁の部分積データｇを加算器に入力する構成に変形することができる。この変形例では、部分積加算器１４２−２は、部分積加算器１４２−１に比べ、中間結果Ｃの入力端子が付加されている。
【００７８】
（第３の実施形態）
次に、本発明の第３の実施形態に係る演算装置について、前述した図５及び新たな図９を参照しながら説明する。図９は同演算装置に適用される部分積加算器の構成を示す模式図であり、前述した要素には同一符号を付してその詳しい説明を省略し、ここでは異なる部分について主に述べる。
【００７９】
すなわち、本実施形態は、第２の実施形態の変形例であり、乗数データＡ，Ｂの乗算過程が異なるものである。これに伴い、部分積加算器１４２−１を図９に示す構成としており、制御部１４６をこの部分積加算器１４２−１を制御する機能を有するものとしている。
【００８０】
ここで、部分積算出回路１４１は、各データが複数ビットからなり、複数ビットを１ワード単位としたとき、複数ワードからなる被乗数データＡに複数ワードからなる乗数データＢを乗算する際に、被乗数データＡと乗数データＢの各ワードとを当該各ワード内の各ビット毎に乗算し、乗数データＢの各ワード毎に、当該各ワード内のビット数と同じ個数の部分積データを算出する機能をもっている。また、部分積算出回路１４１は、算出した部分積データＺ０〜Ｚ７を下位側から１ワードずつ加算するように、各部分積データＺ０〜Ｚ７の各ワードを先頭の桁上げ保存加算器１２０−１，１２０−２，１２０−４に入力する機能（部分積入力手段）をもっている。
【００８１】
部分積加算器１４２−１は、図９に示したＣＳＡツリーで構成され、部分積算出回路１４１から入力された部分積データＺ０〜Ｚ７の拡大体加算と整数加算とを実行する機能と、得られた整数加算結果Ｒを加算器１４３に出力する機能と、得られた拡大体加算結果ＲＧを排他論理和回路１４４に出力する機能とをもっている。
【００８２】
図９に示すＣＳＡツリーは、前述同様に、全ての桁上げ保存加算器ＣＳＡ１２０−１〜１２０−８からなる整数加算用のＣＳＡツリーにおいて、この整数加算用のＣＳＡツリーの一部が拡大体加算用のＣＳＡツリー１２０Ｇとして機能するように構成されている。また、外部から桁上げ出力ＣＩＮが２段目の桁上げ保存加算器１２０−３に入力可能となっている。
【００８３】
制御部１４６は、前述した各回路１４０〜１４５を制御するものであり、例えば、桁上げ伝搬加算器１２１から得られた整数加算結果のうち、１ワードを越えたビットデータを桁上げデータＣＩＮとして次の上位側のワードの加算に繰り越すように、部分積算出回路１４１における部分積データＺ０〜Ｚ７の各ワードを先頭の桁上げ保存加算器１２０−１，１２０−２，１２０−４に入力する機能を制御する機能（部分積入力制御手段）をもっている。
【００８４】
次に、以上のように構成された演算装置の動作を説明する。  
図１０は１２ビットの被乗数データＡと８ビットの乗数データＢとを乗算する様子を示す模式図である。４ビットを１ワードとする点は、前述同様である。また、部分積データｇ（＝Ａ×ｂ０）を算出し、次に部分積データｋ（＝Ａ×ｂ１）を算出し、両者を加算するという点も図７と同様である。しかしながら、図１０に示した例は、図７と比べ、部分積データｇ，ｋを算出する方法が異なっている。図１０に示した例では、１ワード毎の乗算を実行せず、加算のみで実現している。
【００８５】
ここでは、部分積データｇ（＝Ａ×ｂ０）の算出過程を代表例に挙げて述べる。  
始めに、制御部１４６は、メモリ１４０内の被乗数データＡ及び乗数データＢを部分積算出回路１４１に入力する。部分積算出回路１４１は、被乗数データＡと、乗数データＢの最下位ビットｂ００との論理積の値（Ａ×ｂ００）を求め、部分積データ（ｍ２３，…ｍ００）を得る。次に、被乗数データＡと、乗数データＢの最下位から２番目ビットｂ０１との論理積の値（Ａ×ｂ０１）を求め、部分積データ（ｎ２３，…ｎ００）を得る。以下同様に、論理積の値（Ａ×ｂ０２）として部分積データ（ｐ２３，…ｐ００）と、論理積の値（Ａ×ｂ０３）として部分積データ（ｑ２３，…ｑ００）とを求める。
【００８６】
すなわち、部分積算出回路１４１は、被乗数データＡと乗数データＢの各ワードｂ０とを当該各ワードｂ０内の各ビットｂ００，ｂ０１，ｂ０２，ｂ０３毎に乗算し、乗数データＢの各ワードｂ０毎に、当該各ワードｂ０内のビット数（＝４）と同じ個数（＝４）の部分積データを算出する。また、部分積算出回路１４１は、制御部１４６からの制御に基づき、算出した部分積データを下位側から１ワードずつ部分積加算器１４２−１に入力する。
【００８７】
次に、部分積加算器１４２−１は、各部分積データ（ｍ２３，…ｍ００），（ｎ２３，…ｎ００），（ｐ２３，…ｐ００），（ｑ２３，…ｑ００）を下位から１ワードずつ加算していく。
【００８８】
最初に部分積加算器１４２−１は、下位から１ワード分の部分積データとして（ｍ０３，ｍ０２，ｍ０１，ｍ００）と（ｎ０２，ｎ０１，ｎ００，０）と（ｐ０１，ｐ００，０，０）と（ｑ００，０，０，０）とを加算し、下位から１ワード分の部分積データ（ｒ０３，ｒ０２，ｒ０１，ｒ００）を得る。このとき、桁上げ出力ＣＩＮが発生するが、桁上げ出力ＣＩＮは、次の１ワード分の加算に繰り込まれる。
【００８９】
次に部分積加算器１４２−１は、下位から２ワード目の１ワード分の部分積データとして（ｍ１３，ｍ１２，ｍ１１，ｍ１０）と（ｎ１２，ｎ１１，ｎ１０，ｎ０３）と（ｐ１１，ｐ１０，ｐ０３，ｐ０２）と（ｑ１０，ｑ０３，ｑ０２，ｑ０１）と、下位の１ワードの計算による桁上げ出力ＣＩＮとを加算し、下位から２ワード目の１ワード分の部分積データ（ｒ１３，ｒ１２，ｒ１１，ｒ１０）及び桁上げ出力ＣＩＮを得る。
【００９０】
以下同様に、部分積加算器１４２−１は、下位から３ワード目の１ワード分の部分積データ（ｒ２３，ｒ２２，…，ｒ２０）及び桁上げ出力ＣＩＮを算出し、下位から４ワード目の１ワード分の部分積データ（ｒ３３，ｒ３２，…，ｒ３０）を算出する。そして、これら各部分積データ（ｒ３３，ｒ３２，…，ｒ３０），（ｒ２３，ｒ２２，…，ｒ２０），（ｒ１３，ｒ１２，…，ｒ１０），（ｒ０３，ｒ０２，…，ｒ００）を連結することにより、最終的に、部分積データｇ（＝Ａ×ｂ０）として（ｒ３３，ｒ３２，…，ｒ０１，ｒ００）が算出される。
【００９１】
また同様に、部分積データｋ（＝Ａ×ｂ１）として部分積データ（ｗ３３，ｗ３２，…，ｗ００）が算出される。そして、部分積加算器１４２−１は、各部分積データ（ｒ３３，ｒ３２，…，ｒ００）と（ｗ３３，ｗ３２，…，ｗ００）とを加算し、乗算結果Ａ×Ｂを得る。乗算結果Ａ×Ｂは、選択回路１４５やバス等を介して制御部１４６によりメモリ１４０に書込まれる。
【００９２】
図１０に示すような演算の際に、１ワード分の部分積データを順次加算する構成として図９に示すＣＳＡツリーを用いるため、整数の乗算と拡大体の乗算を実行できる。
【００９３】
次に、図９に示すＣＳＡツリーによる加算過程を詳細に説明する。なお、図６〜図１０は、１ワード４ビットの場合の乗算の例を示したが、図９では、１ワード８ビットの場合の例を示している。また、桁上げ入力ＣＩＮは、拡大体の演算を実行するＣＳＡツリー１２０Ｇには含まれない。
【００９４】
図１１は図９に示すＣＳＡツリーの動作を説明するための模式図である。図４では、部分積データＺ０〜Ｚ６が１ビットずつ左にシフトしていたのに対し、図１１では、部分積データＺ０〜Ｚ７が同じ桁に配置されている。この理由は、図１０に示した乗算方法を用いるためである。
【００９５】
最初に、部分積データＺ０，Ｚ１，Ｚ２が桁上げ保存加算器ＣＳＡ１２０−１に入力され、桁上げ保存加算器ＣＳＡ１２０−１から和出力Ｓ０、桁上げ出力Ｃ０が出力される。また、部分積データＺ３，Ｚ４，Ｚ５が桁上げ保存加算器ＣＳＡ１２０−２に入力され、桁上げ保存加算器ＣＳＡ１２０−２から和出力Ｓ１、桁上げ出力Ｃ１が出力される。
【００９６】
次に、部分積データＺ６，Ｚ７及び和出力Ｓ１が桁上げ保存加算器ＣＳＡ１２０−４に入力され、桁上げ保存加算器ＣＳＡ１２０−４から和出力Ｓ３、桁上げ出力Ｃ３が出力される。また、桁上げ保存加算器ＣＳＡ１２０−１の桁上げ出力Ｃ０、桁上げ保存加算器ＣＳＡ１２０−２の桁上げ出力Ｃ１、桁上げ入力ＣＩＮが桁上げ保存加算器ＣＳＡ１２０−３に入力され、桁上げ保存加算器ＣＳＡ１２０−３から和出力Ｓ２、桁上げ出力Ｃ２が出力される。
【００９７】
次に、桁上げ保存加算器ＣＳＡ１２０−１の和出力Ｓ０と、桁上げ保存加算器ＣＳＡ１２０−４の和出力Ｓ３とがＣＳＡ１２０−６に入力され、桁上げ保存加算器ＣＳＡ１２０−６から和出力Ｓ５、桁上げ出力Ｃ５が出力される。
【００９８】
ＣＳＡ１２０−６の和出力Ｓ５は、データ入力Ｚ０〜Ｚ７と途中の和出力のみから計算された和出力であり、拡大体の乗算結果となる。
【００９９】
また、桁上げ保存加算器ＣＳＡ１２０−３の桁上げ出力Ｃ２、和出力Ｓ２、桁上げ保存加算器ＣＳＡ１２０−４の桁上げ出力Ｃ３がＣＳＡ１２０−５に入力され、和出力Ｓ４、桁上げ出力Ｃ４が出力される。
【０１００】
次に、桁上げ保存加算器ＣＳＡ１２０−５の和出力Ｓ４及び桁上げ出力Ｓ４と、桁上げ保存加算器ＣＳＡ１２０−６の桁上げ出力Ｃ５とが桁上げ保存加算器ＣＳＡ１２０−７に入力され、和出力Ｓ６、桁上げ出力Ｃ６が出力される。
【０１０１】
次に、これら和出力Ｓ６及び桁上げ出力Ｃ６と、桁上げ保存加算器ＣＳＡ１２０−６の和出力Ｓ５とが桁上げ保存加算器ＣＳＡ１２０−８に入力され、桁上げ保存加算器１２０−８から和出力Ｓ７、桁上げ出力Ｃ７が出力される。この出力Ｓ７，Ｃ７が桁上げ伝播加算器１２１に入力され、桁上げ伝播加算器１２１から整数の乗算結果Ｒが出力される。また前述同様に、選択回路１４５により、整数の乗算結果Ｒ又は拡大体の乗算結果ＲＧを選択して出力することができる。
【０１０２】
上述したように本実施形態によれば、部分積データを１ワード毎に加算するように図９に示したＣＳＡツリーを用いた構成としても、第２の実施形態と同様の効果を得ることができ、整数乗算と拡大体乗算とを実行することができる。
【０１０３】
（第４の実施形態）
図１２は本発明の第４の実施形態に係る演算装置に適用されるＣＳＡツリーの構成を示す模式図である。
【０１０４】
すなわち、本実施形態は、第３の実施形態の変形例であり、セレクタ１４５を省略する観点から、拡大体の演算結果Ｓ５を整数の演算結果Ｃ６，Ｓ６と合流させる箇所に配置され、合流する予定の整数の演算結果Ｃ６，Ｓ６を通過又は遮断するアンドゲート（桁上げデータ遮断手段）１２３を備えている。
【０１０５】
アンドゲート１２３は、整数切替信号を受けると、桁上げ保存加算器１２０−７の出力Ｃ６，Ｓ６を通過させて桁上げ保存加算器１２０−８に入力し、拡大体切替信号を受けると、桁上げ保存加算器１２０−７の出力Ｃ６，Ｓ６を遮断してゼロ出力（０値）を桁上げ保存加算器１２０−８に入力する。
【０１０６】
これにより、整数切替信号がアンドゲート１２３に入力中、桁上げ保存加算器１２０−８では、整数の演算結果Ｃ６，Ｓ６と拡大体の演算結果Ｓ５とを加算し、整数の演算結果を示す出力Ｃ７，Ｓ７を桁上げ伝搬加算器１２１に出力する。桁上げ伝搬加算器１２１では、この出力Ｃ７，Ｓ７を加算し、整数の演算結果Ｒを出力する。
【０１０７】
一方、拡大体切替信号がアンドゲート１２３に入力中、桁上げ保存加算器１２０−８では、ゼロ出力（０値）と拡大体の演算結果Ｓ５とを加算し、拡大体の演算結果を示す出力Ｃ７，Ｓ７を桁上げ伝搬加算器１２１に出力する。桁上げ伝搬加算器１２１では、この出力Ｃ７，Ｓ７を加算し、拡大体の演算結果ＲＧを出力する。  
従って、整数／拡大体切替信号に応じて、整数の演算結果Ｒと拡大体の演算結果ＲＧを得ることができる。
【０１０８】
以上のような構成によれば、選択回路１４５を省略しつつ、整数の乗算と拡大体の乗算の両方を同一の回路で実現でき、回路の小型化と高速化を実現することができる。
【０１０９】
詳しくは、図１２に示す構成は、ＣＳＡツリー全体で１個のアンドゲート１２３を必要とするので、回路規模を小型化できる。一方、図１４に示す従来の構成は、ＣＳＡツリーの各ＣＳＡ毎にアンドゲート１０６を必要とするので、回路規模を増大させてしまう。
【０１１０】
なお、本願発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１１１】
【図１】本発明の第１の実施形態に係る演算装置の構成を示す模式図である。
【図２】同実施形態における４ビットのＣＳＡの回路構成を示す図である。
【図３】同実施形態における整数乗算の様子を示す模式図である。
【図４】同実施形態におけるＣＳＡツリーによる演算過程を示す模式図である。
【図５】本発明の第２の実施形態に係る演算装置の構成を示す模式図である。
【図６】同実施形態における多ビットの乗算の様子を示す概念図である。
【図７】同実施形態における多ビットの乗算を１ワード分の乗算器を用いて実現する場合の様子を示す模式図である。
【図８】同実施形態における演算装置の変形構成を示す模式図である。
【図９】本発明の第３の実施形態に係る演算装置に適用されるＣＳＡツリーの構成を示す模式図である。
【図１０】同実施形態における乗算の様子を示す模式図である。
【図１１】同実施形態におけるＣＳＡツリーの動作を説明するための模式図である。
【図１２】本発明の第４の実施形態に係る演算装置に適用されるＣＳＡツリーの構成を示す模式図である。
【図１３】従来の整数乗算と拡大体乗算を実現するための部分積加算回路の構成を示す模式図である。
【図１４】従来の整数乗算と拡大体乗算を実現する全加算器の回路構成を示す模式図である。
【図１５】従来のＣＳＡツリーの構成を示す模式図である。
【図１６】一般的なＣＳＡ（全加算器）の回路構成を示す模式図である。
【図１７】一般的な桁上げ伝播加算器の回路構成を示す模式図である。
【図１８】従来のＣＳＡツリーによる加算動作を示す模式図である。
【符号の説明】
【０１１２】
１２０−１〜１２０−８…桁上げ保存加算器（ＣＳＡ）、１２０Ｇ…拡大体加算用の加算器ツリー、１２１…桁上げ伝播加算器（ＣＰＡ）、１２２…拡大体加算結果出力部、１２３…アンドゲート、１４０…メモリ、１４１…部分積算出回路、１４２−１，１４２−２…部分積加算器、１４３…加算器、１４４…排他論理和回路、１４５…選択回路、１４６…制御部。
【図１】
2005293256.tif 000003
【図２】
2005293256.tif 000004
【図３】
2005293256.tif 000005
【図４】
2005293256.tif 000006
【図５】
2005293256.tif 000007
【図６】
2005293256.tif 000008
【図７】
2005293256.tif 000009
【図８】
2005293256.tif 000010
【図９】
2005293256.tif 000011
【図１０】
2005293256.tif 000012
【図１１】
2005293256.tif 000013
【図１２】
2005293256.tif 000014
【図１３】
2005293256.tif 000015
【図１４】
2005293256.tif 000016
【図１５】
2005293256.tif 000017
【図１６】
2005293256.tif 000018
【図１７】
2005293256.tif 000019
【図１８】
2005293256.tif 000020