(57)【特許請求の範囲】
【請求項１】
ビット数が２×ｎ×ｍ個（ｎ及びｍは正の整数）である乗数及び被乗数からｎ×ｍ個の部分積を求める部分積生成回路と、部分積を加算処理して２個の部分積にまとめるキャリセーブ加算器と、２個の部分積を加算処理して乗算結果を出力する全加算器とを備えた乗算回路において、前記部分積生成回路の各部分積生成列を下位エレメント演算部分と上位エレメント演算部分とに分け、下位エレメントの最上位ビットの符号拡張ビットについては、上位エレメントにキャリが伝播しないような値とし、２ｋ×２ｋビット（ｋは正の整数）の演算処理を行う１エレメント処理と、ｋ×ｋビットの演算処理を２個まとめて行う２エレメント処理と、を選択して行うことを特徴とする乗算回路。
【請求項２】
乗数と被乗数の部分積を求める部分積生成回路であって、３ビットから２ビットの部分積を生成する部分積生成回路と、部分積を加算処理して２個の部分積にまとめるキャリセーブ加算器と、２個の部分積を加算処理して乗算結果を出力する全加算器とを備えた乗算回路において、前記部分積生成回路の各部分積生成列を下位エレメント演算部分と上位エレメント演算部分とに分け、下位エレメントの最上位ビットの符号拡張ビットについては、上位エレメントにキャリが伝播しないような値とし、２ｋ×２ｋビット（ｋは正の整数）の演算処理を行う１エレメント処理と、ｋ×ｋビットの演算処理を２個まとめて行う２エレメント処理と、を選択して行うことを特徴とする乗算回路。
【請求項３】
前記符号拡張ビットは、部分積の所定ビットに基づいて所定の変換方法で生成されることを特徴とする請求項１または請求項２に記載の乗算回路。
【請求項４】
前記符号拡張ビットに基づいて、前記上位エレメントの演算部分を所定値にマスクすることを特徴とする請求項１、請求項２または請求項３に記載の乗算回路。
【請求項５】
最上位部分積の最上位ビットの一つ下位のビットに従って前記乗算結果の最上位ビットを補正することを特徴とする請求項１、請求項２、請求項３または請求項４に記載の乗算回路。
【請求項６】
ビット数が２×ｎ×ｍ個（ｎ及びｍは正の整数）である乗数及び被乗数からｎ×ｍ個の部分積を求め、前記部分積の部分積生成列を下位エレメント演算部分と上位エレメント演算部分とに分け、上位に位置するエレメントにキャリが伝播しないような値を部分積の符号拡張ビットとして下位エレメントの所定ビットに設定し、部分積を加算処理して２個の部分積にまとめ、２個の部分積を加算処理して乗算結果を出力するとともに、２ｋ×２ｋビット（ｋは正の整数）の演算処理を行う１エレメント処理と、ｋ×ｋビットの演算処理を２個まとめて行う２エレメント処理と、を選択して行うことを特徴とする乗算方法。
【請求項７】
乗数と被乗数を乗算する乗算方法であって、３ビットから２ビットの部分積を生成する部分積生成回路と、ビット数が２×ｎ×ｍ個（ｎ及びｍは正の整数）である乗数及び被乗数からｎ×ｍ個の部分積を求め、前記部分積の部分積生成列を下位エレメント演算部分と上位エレメント演算部分とに分け、上位に位置するエレメントにキャリが伝播しないような値を部分積の符号拡張ビットとして下位エレメントの所定ビットに設定し、部分積を加算処理して２個の部分積にまとめ、２個の部分積を加算処理して乗算結果を出力するとともに、２ｋ×２ｋビット（ｋは正の整数）の演算処理を行う１エレメント処理と、ｋ×ｋビットの演算処理を２個まとめて行う２エレメント処理と、を選択して行うことを特徴とする乗算方法。
【請求項８】
最上位部分積の最上位ビットの一つ下位のビットに従って前記乗算結果の最上位ビットを補正することを特徴とする請求項６または請求項７に記載の乗算方法。
【請求項９】
ビット数が２×２n×ｍ個（ｎ及びｍは正の整数）である乗数及び被乗数から２n×ｍ個の部分積を求める部分積生成回路と、部分積を加算処理して２個の部分積にまとめるキャリセーブ加算器と、２個の部分積を加算処理して乗算結果を出力する全加算器とを備えた乗算回路において、前記部分積生成回路の各部分積生成列を２n個のエレメント演算部分に分け、最上位エレメントを除く各下位エレメントの最上位ビットの符号拡張ビットについては、上位エレメントにキャリが伝播しないような値とし、２×２n×ｍビットと２×２n×ｍビットの演算処理を行う１エレメント処理と、２×２n×ｍ／２iビット（ｉ＝１からｎの整数）と２×２n×ｍ／２iビットの演算処理を２i個まとめて行う２iエレメント処理と、を選択して行うことを特徴とする乗算回路。
【請求項１０】
最上位部分積の最上位ビットの一つ下位のビットに従って前記乗算結果の最上位ビットを補正することを特徴とする請求項９に記載の乗算回路。
【請求項１１】
ビット数が２×２n×ｍ個（ｎ及びｍは正の整数）である乗数及び被乗数から２n×ｍ個の部分積を求め、前記部分積の部分積生成列を２n個のエレメント演算部分に分け、上位に位置するエレメントにキャリが伝播しないような値を部分積の符号拡張ビットとして最上位エレメントを除く各下位エレメントの所定ビットに設定し、部分積を加算処理して２個の部分積にまとめ、２個の部分積を加算処理して乗算結果を出力するとともに、２×２n×ｍビットと２×２n×ｍビットの演算処理を行う１エレメント処理と、２×２n×ｍ／２iビット（ｉ＝１からｎの整数）と２×２n×ｍ／２iビットの演算処理を２i個まとめて行う２iエレメント処理と、を選択して行うことを特徴とする乗算方法。
【請求項１２】
最上位部分積の最上位ビットの一つ下位のビットに従って前記乗算結果の最上位ビットを補正することを特徴とする請求項１１に記載の乗算方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、乗算回路に関し、特に、ブース（Booth）のアルゴリズムを用いた並列形の乗算回路に関する。
【０００２】
【従来の技術】
乗算回路は、乗数（multiplier）と被乗数（multiplicand）が並列に入力される並列形と、乗数又は被乗数の一方が直列に入力され、他方が並列に入力される直列形に分類されるが、一般にコプロセッサやベクトルプロセッサなどの演算用ＬＳＩには演算速度の速い並列形が多く採用される。並列形乗算回路の基本は、部分積を求める回路（ＡＮＤ）と部分和を求める回路（全加算器）を一つの単位回路としてアレー状に並べて構成したものであり、単位回路の並び方や配線に規則性があるため、ＬＳＩ化に最適である。
【０００３】
図１８は、乗算回路の全体ブロック図である。１は乗数Ｍと被乗数Ｙの部分積Ｚ0〜Ｚnを求める部分積生成回路、２は部分積Ｚ0〜Ｚnを加算処理して２個の部分積Ｚａ、Ｚｂにまとめるキャリセーブ加算器、３は２個の部分積Ｚａ、Ｚｂを加算処理して乗算結果Ｐを出力する全加算器であり、この乗算回路は、例えば、８×８ビットの乗算を一度に行う（いわゆる１エレメント乗算処理）ことができるというものである。
【０００４】
ところで、画像処理のように少ビットの演算を大量かつ高速にこなさなければならない用途では、例えば、４×４ビットの乗算を二つまとめて行う（いわゆる２エレメント乗算処理）ことができれば都合が良い。
それには、演算対象外の部分積を“０”にマスクすると共に、キャリセーブ加算器２や全加算器３内のキャリパスの中で、エレメント境界部分のパスをカットする手段を設ければよい。
【０００５】
図１９は、そのような手段を備えた従来回路のキャリセーブ加算器２の具体例である。図において、頭に“Ｂ”を付けた信号（例えば、Ｂ０１＿２）は、部分積生成回路１からの部分積信号ビットであり、頭に“Ｃ”を付けた信号（例えば、Ｃ＿３）と“Ｓ”を付けた信号（例えば、Ｓ＿２）は、全加算器３への出力信号である。また、ＣＳＡは要素回路であり、図２０に示すように、イクスクルーシブＯＲゲート４、５、ナンドゲート６、７、８、９を備え、キャリ入力（Ａ３）と二つの入力（Ａ２、Ａ１）を加算して、その加算結果（Ｓ）とキャリ（Ｃ）を出力するというものである。
【０００６】
ＣＣＵＴはエレメント境界部分のパスをカットする手段に相当する回路であり、この回路は、図２１に示すように、Ｃ入力の制御信号（ＣＡＲＲＹＣＵＴバー）がＬレベルのときは、ＡＮＤゲート１０の出力ＸをＬレベル固定にして入力Ａのパスをカットするというものである。
かかる回路（ＣＣＵＴ）をキャリパス中のエレメント境界部分に入れておき、ＣＡＲＲＹＣＵＴバーの論理を切り換えれば、１エレメント演算と２エレメント乗算の双方を行うことができる。
【０００７】
【発明が解決しようとする課題】
しかしながら、かかる従来の乗算回路にあっては、キャリパス中のエレメント境界部分にパスをカットする手段（ＣＣＵＴ）を入れる構成となっていたため、折角の要素回路（ＣＳＡ）の規則性が崩れてしまい、レイアウト設計が困難になるという問題点がある。
【０００８】
そこで、本発明は、レイアウト上の規則性を損なわずに２エレメント演算処理を可能にすることを目的とする。
【０００９】
【課題を解決するための手段】
請求項１に係る発明は、ビット数が２×ｎ×ｍ個（ｎ及びｍは正の整数）である乗数及び被乗数からｎ×ｍ個の部分積を求める部分積生成回路と、部分積を加算処理して２個の部分積にまとめるキャリセーブ加算器と、２個の部分積を加算処理して乗算結果を出力する全加算器とを備えた乗算回路において、前記部分積生成回路の各部分積生成列を下位エレメント演算部分と上位エレメント演算部分とに分け、下位エレメントの最上位ビットの符号拡張ビットについては、上位エレメントにキャリが伝播しないような値とし、２ｋ×２ｋビット（ｋは正の整数）の演算処理を行う１エレメント処理と、ｋ×ｋビットの演算処理を２個まとめて行う２エレメント処理と、を選択して行うことを特徴とする。
請求項２に係る発明は、乗数と被乗数の部分積を求める部分積生成回路であって、３ビットから２ビットの部分積を生成する部分積生成回路と、部分積を加算処理して２個の部分積にまとめるキャリセーブ加算器と、２個の部分積を加算処理して乗算結果を出力する全加算器とを備えた乗算回路において、前記部分積生成回路の各部分積生成列を下位エレメント演算部分と上位エレメント演算部分とに分け、下位エレメントの最上位ビットの符号拡張ビットについては、上位エレメントにキャリが伝播しないような値とし、２ｋ×２ｋビット（ｋは正の整数）の演算処理を行う１エレメント処理と、ｋ×ｋビットの演算処理を２個まとめて行う２エレメント処理と、を選択して行うことを特徴とする。
請求項３に係る発明は、請求項１または請求項２記載の構成に加え、前記符号拡張ビットは、部分積の所定ビットに基づいて所定の変換方法で生成されることを特徴とする。
請求項４に係る発明は、請求項１、請求項２または請求項３記載の構成に加え、前記符号拡張ビットに基づいて、前記上位エレメントの演算部分を所定値にマスクすることを特徴とする。
請求項５に係る発明は、請求項１、請求項２、請求項３または請求項４記載の構成に加え、最上位部分積の最上位ビットの一つ下位のビットに従って前記乗算結果の最上位ビットを補正することを特徴とする。
請求項６に係る発明は、ビット数が２×ｎ×ｍ個（ｎ及びｍは正の整数）である乗数及び被乗数からｎ×ｍ個の部分積を求め、前記部分積の部分積生成列を下位エレメント演算部分と上位エレメント演算部分とに分け、上位に位置するエレメントにキャリが伝播しないような値を部分積の符号拡張ビットとして下位エレメントの所定ビットに設定し、部分積を加算処理して２個の部分積にまとめ、２個の部分積を加算処理して乗算結果を出力するとともに、２ｋ×２ｋビット（ｋは正の整数）の演算処理を行う１エレメント処理と、ｋ×ｋビットの演算処理を２個まとめて行う２エレメント処理と、を選択して行うことを特徴とする。
請求項７に係る発明は、乗数と被乗数を乗算する乗算方法であって、３ビットから２ビットの部分積を生成する部分積生成回路と、ビット数が２×ｎ×ｍ個（ｎ及びｍは正の整数）である乗数及び被乗数からｎ×ｍ個の部分積を求め、前記部分積の部分積生成列を下位エレメント演算部分と上位エレメント演算部分とに分け、上位に位置するエレメントにキャリが伝播しないような値を部分積の符号拡張ビットとして下位エレメントの所定ビットに設定し、部分積を加算処理して２個の部分積にまとめ、２個の部分積を加算処理して乗算結果を出力するとともに、２ｋ×２ｋビット（ｋは正の整数）の演算処理を行う１エレメント処理と、ｋ×ｋビットの演算処理を２個まとめて行う２エレメント処理と、を選択して行うことを特徴とする。
請求項８に係る発明は、請求項６または請求項７記載の構成に加え、最上位部分積の最上位ビットの一つ下位のビットに従って前記乗算結果の最上位ビットを補正することを特徴とする。
請求項９に係る発明は、ビット数が２×２n×ｍ個（ｎ及びｍは正の整数）である乗数及び被乗数から２n×ｍ個の部分積を求める部分積生成回路と、部分積を加算処理して２個の部分積にまとめるキャリセーブ加算器と、２個の部分積を加算処理して乗算結果を出力する全加算器とを備えた乗算回路において、前記部分積生成回路の各部分積生成列を２n個のエレメント演算部分に分け、最上位エレメントを除く各下位エレメントの最上位ビットの符号拡張ビットについては、上位エレメントにキャリが伝播しないような値とし、２×２n×ｍビットと２×２n×ｍビットの演算処理を行う１エレメント処理と、２×２n×ｍ／２iビット（ｉ＝１からｎの整数）と２×２n×ｍ／２iビットの演算処理を２i個まとめて行う２iエレメント処理と、を選択して行うことを特徴とする。
請求項１０に係る発明は、請求項９記載の構成に加え、最上位部分積の最上位ビットの一つ下位のビットに従って前記乗算結果の最上位ビットを補正することを特徴とする。
請求項１１に係る発明は、ビット数が２×２n×ｍ個（ｎ及びｍは正の整数）である乗数及び被乗数から２n×ｍ個の部分積を求め、前記部分積の部分積生成列を２n個のエレメント演算部分に分け、上位に位置するエレメントにキャリが伝播しないような値を部分積の符号拡張ビットとして最上位エレメントを除く各下位エレメントの所定ビットに設定し、部分積を加算処理して２個の部分積にまとめ、２個の部分積を加算処理して乗算結果を出力するとともに、２×２n×ｍビットと２×２n×ｍビットの演算処理を行う１エレメント処理と、２×２n×ｍ／２iビット（ｉ＝１からｎの整数）と２×２n×ｍ／２iビットの演算処理を２i個まとめて行う２iエレメント処理と、を選択して行うことを特徴とする。
請求項１２に係る発明は、請求項１１記載の構成に加え、最上位部分積の最上位ビットの一つ下位のビットに従って前記乗算結果の最上位ビットを補正することを特徴とする。
【００１０】
これによれば、下位エレメントから上位エレメントへのキャリ伝播がなくなるため、従来のようなキャリパスカット手段（ＣＣＵＴ）が不要になり、レイアウト上の規則性を損なわずに２エレメント演算処理が可能になる。
【００１１】
【発明の実施の形態】
以下、本発明の実施例を図面に基づいて説明する。
図１は本発明に係る乗算回路の一実施例を示す図であり、乗数Ｍと被乗数Ｙの部分積を求める部分積生成回路の概念図である。なお、この概念図では、乗数Ｍ及び被乗数Ｙのビット数を２×ｎ×ｍビットとし、この乗数Ｍと被乗数Ｙから生成される部分積の数をｎ×ｍ個としている。ここに、ｎ、ｍは正の整数である。
【００１２】
図１において、２０〜２７は下から順に第０列、第１列、……、第７列と並べられたｎ×ｍ個（図では８個）のブースデコーダ、３０〜３７は同様にｎ×ｍ個の部分積回路、４０〜４７は同様にｎ×ｍ個の補数補正回路であり、５０は符号補正制御回路、５１は符号補正回路である。
図１の概念図のポイントは、次のとおりである。すなわち、部分積回路３０〜３７の白抜き部分は、下位エレメント演算部分３０ａ、３１ａ、３２ａ、３３ａ、及び、上位エレメント演算部分３４ａ、３５ａ、３６ａ、３７ａであり、これ以外の部分に次の条件を適用した点がポイントである。
▲１▼  下位エレメントの符号拡張部分（左下がりハッチング部分）３０ｂ、３１ｂ、３２ｂ、３３ｂは、通常の符号拡張と同様に、次表１で示される値を部分積の符号拡張ビットに使用する。
▲２▼  但し、下位エレメントの最上位ビットの符号拡張部分３０ｂ’、３１ｂ’、３２ｂ’、３３ｂ’については、上位に位置するエレメントにキャリが伝播しないように、次表２で示される値を部分積の符号拡張ビットとして使用する。
▲３▼  符号補正部分（右下がりハッチング部分）３４ｃ、５１ｃは、補正値として＋１を発生させる。
▲４▼  上位に位置するエレメントの補数補正部分（黒塗り部分）３５ｄ、３６ｄ、３７ｄ、５１ｄは、部分積に強制的に“０”が出力されているビットのうち補数の補正が必要なビットだけを反転させる。
【００１３】
0003657388.tif 000002
【００１４】
以上のポイントを適用して生成した部分積を図１８のキャリセーブ加算器及び全加算器に通せば、２エレメント演算処理を行うことができ、全加算器から２エレメント符号付き整数の乗算の結果を出力できる。
このように、本実施例では、下位エレメントの最上位ビットの符号拡張部分３０ｂ’、３１ｂ’、３２ｂ’、３３ｂ’については、上位に位置するエレメントにキャリが伝播しないように、表２で示される値を部分積の符号拡張ビットとして使用する（▲２▼）ようにしたため、従来のようなキャリパスカットのための物理的な手段（図１９のＣＣＵＴ）を設ける必要がない。したがって、並列形乗算回路の特長（レイアウト規則性）を損なうことなく、２エレメント演算処理を可能にすることができる。
【００１５】
なお、上記ポイント▲２▼で、下位エレメントの最上位ビットの符号拡張部分３０ｂ’、３１ｂ’、３２ｂ’、３３ｂ’を補正しているため、正しくない値が出力されるが、これについては、最上位−１ビットの値を符号ビットにコピーするだけで容易に正しい値にすることができる。符号付き整数の乗算の場合、最上位−１ビットは符号ビット（最上位ビット）と同じであるからである。又は、符号ビットのビット反転を行うか否かの制御ビットを生成し、その制御ビットとＥＯＲ演算を行って、正しい符号ビットを生成してもよい。この場合、符号ビットのコピー方式に比べてハード量が若干増加するが、符号なし整数の乗算と共用できるため無駄にはならない。
【００１６】
次に、図１の概念図において、１エレメント処理モードと２エレメント処理モードのときの各部の機能を説明する。
１．１エレメント演算処理モード
１．１  全ての部分積回路３０〜３７は、対応列のブースデコーダからの指示（表３参照）に従って被乗数から部分積を生成する。
【００１７】
0003657388.tif 000003
【００１８】
１．２  全ての補数補正回路４０〜４７は、対応列のブースデコーダからの指示に従って補数補正値を生成する。
１．３  符号補正回路５１は、２×ｎ×ｍ−１ビットから１ビットまでは“０”を出力すると共に０ビットは“１”を出力する。
【００１９】
２．２エレメント演算処理モード
２．１  第０列から第ｍ−１列までの部分積回路３０〜３０＋ｍ−１は、２×ｎ×ｍ＋１ビットから２×ｍ＋２ビットまでは“０”を出力し、２×ｍ＋１ビットから２×ｍビットは対応列のブースデコーダからの指示に従って予め決定された計算式に基づき符号情報を発生し、２×ｍ−１ビットから０ビットは対応列のブースデコーダからの指示に従い、被乗数の対応ビットから部分積を生成する。
【００２０】
２．２  第ｍ列の部分積回路３０＋ｍは、２×ｎ×ｍ＋１ビットから４×ｍ＋２ビットまでは“０”を出力し、４×ｍ＋１ビットから４×ｍビットは対応列のブースデコーダからの指示に従って予め決定された計算式に基づき符号情報を発生し、４×ｍ−１ビットから２×ｍビットは対応列のブースデコーダからの指示に従い、被乗数の対応ビットから部分積を生成し、２×ｍ−１ビットから１ビットは“０”を出力し、０ビットは“１”を出力する。
【００２１】
２．３  第２×ｍ、…、（ｎ−２）×ｍ列の部分積回路３０＋（２×ｍ、…、（ｎ−２）×ｍ）は、２×ｎ×ｍ＋１ビットから２×（ｋ＋１）×ｍ＋２ビットまでは“０”を出力し、２×（ｋ＋１）×ｍ＋１ビットから２×（ｋ＋１）×ｍビットは対応列のブースデコーダからの指示に従って予め決定された計算式に基づき符号情報を発生し、２×（ｋ＋１）×ｍ−１ビットから２×ｋ×ｍビットは対応列のブースデコーダからの指示に従い、被乗数の対応ビットから部分積を生成し、２×（ｋ−１）×ｍビットは“１”を出力し、２×（ｋ−１）×ｍ−２ビットは、第２×ｋ×ｍ−１列の部分積の補数補正値を出力し、２×ｋ×ｍ−１ビットから２×（ｋ−１）×ｍ＋１ビット及び２×（ｋ−１）×ｍ−１ビット並びに２×（ｋ−１）×ｍ−３ビットから０ビットは、“０”を出力する。ここに、ｋは２〜ｎ−２の整数である。
【００２２】
２．４  第ｍ＋１〜２×ｍ−１、…、（ｎ−２）×ｍ＋１〜（ｎ−１）×ｍ−１列の部分積回路３０＋（ｍ＋１〜２×ｍ−１、…、（ｎ−２）×ｍ＋１〜（ｎ−１）×ｍ−１）は、２×ｎ×ｍ＋１ビットから２×（ｋ＋１）×ｍ＋２ビットまでは“０”を出力し、２×（ｋ＋１）×ｍ＋１ビットから２×（ｋ＋１）×ｍビットは対応列のブースデコーダからの指示に従って予め決定された計算式に基づき符号情報を発生し、２×（ｋ＋１）×ｍ−１ビットから２×ｋ×ｍビットは対応列のブースデコーダからの指示に従い、被乗数の対応ビットから部分積を生成し、２×ｋ×ｍ−２ビットは、前列の部分積の補数補正値を生成し、２×ｋ×ｍ−１ビット及び２×ｋ×ｍ−３ビットから０ビットは“０”を出力する。
【００２３】
２．５  第（ｎ−１）×ｍ＋１〜ｎ×ｍ−１列の部分積回路３０＋（（ｎ−１）×ｍ＋１〜ｎ×ｍ−１）は、２×ｎ×ｍ＋１ビットから２×ｎ×ｍ＋２ビットまでは、対応列のブースデコーダからの指示に従って予め決定された計算式に基づき符号情報を発生し、２×ｎ×ｍ−１ビットから２×（ｎ−１）×ｍビットは対応列のブースデコーダからの指示に従い、被乗数の対応ビットから部分積を生成し、２×（ｎ−１）×ｍ−２ビットは、前列の部分積の補数補正値を生成し、２×（ｎ−１）×ｍ−１ビット及び２×（ｎ−１）×ｍ−３ビットから０ビットは“０”を出力する。
【００２４】
２．６  第０〜ｍ−１列の補数補正回路４０＋（０〜ｍ−１）は、対応列のブースデコーダからの指示に従い、補数補正値を生成する。
２．７  第ｍ〜ｎ×ｍ−１列の補数補正回路４０＋（ｍ〜ｎ×ｍ−１）は、“０”を出力する。
２．８  符号補正回路５１は、２×ｎ×ｍ−１ビットから２×（ｎ−１）×ｍ＋１ビット及び２×（ｎ−１）×ｍ−１ビット並びに２×（ｎ−１）×ｍ−３から０ビットは、“０”を出力し、２×（ｎ−１）×ｍビットは“１”を出力し、２×（ｎ−１）×ｍ−２ビットは、ｍ−１列の補数補正値を生成する。
【００２５】
３．まとめ
部分積回路３０〜３７は、１エレメント演算処理を行う場合、対応列のブースデコーダからの制御信号に従い被乗数を部分積に変換するが、２エレメント演算処理（便宜上、各エレメントを８×８ビットの符号付き整数の乗算とする）を行う場合は、それぞれ以下のとおり動作する。すなわち、第０〜２列のビット７〜０は１エレメント演算処理と同様に対応列のブースデコーダからの制御信号に従い被乗数を部分積に変換し、ビット８、９は対応列のブースデコーダからの制御信号に従い表４で示される値を用いて符号拡張値を生成し、ビット１７〜１０は演算対象外の部分であるので無条件に“０”にマスクする。第３列のビット７〜０は１エレメント演算処理と同様に対応列のブースデコーダからの制御信号に従い被乗数を部分積に変換し、ビット８、９は対応列のブースデコーダからの制御信号に従い表５で示される値を用いて符号拡張値を生成し、ビット１７〜１０は演算対象外の部分であるので無条件に“０”にマスクする。第４列のビット０は下位エレメントの符号補正値として“１”を生成し、ビット７〜１は演算対象外の部分であるので無条件に“０”にマスクし、ビット１７〜８は１エレメント演算処理と同様に対応列のブースデコーダからの制御信号に従い被乗数を部分積に変換する。第５〜７列のビット７、５〜０は演算対象外の部分であるので無条件に“０”にマスクし、ビット６は上位エレメントの補数補正値として対応列のブースデコーダで“−１”、“−２”の演算が指定されると“１”を出力し、ビット１７〜８は１エレメント演算処理と同様に対応列のブースデコーダからの制御信号に従い被乗数を部分積に変換する。
【００２６】
また、符号補正回路５１は、１エレメント演算処理を行う場合、マイナス方向に引きすぎているときに正の値に補正するための補正値を発生する（但し、符号なし整数の乗算の場合、符号付き整数の乗算の場合は無条件に“＋１”の補正値を発生する）が、２エレメント演算処理を行う場合は、ビット７、５〜０は演算対象外の部分であるため無条件に“０”にマスクし、ビット６は上位エレメントの補数補正値として対応列のブースデコーダで“−１”、“−２”の演算が指定されると“１”を出力し、ビット８は上位エレメントの符号補正値として“１”を発生し、ビット１５〜９は無条件に“０”にマスクする。
【００２７】
また、補数補正回路４０〜４７は、１エレメント演算処理を行う場合、部分積回路３０〜３７で発生する部分積の補数を１の補数表現から２の補数表現に補正（“＋１”の補正）するが、第０〜３列は１エレメント演算処理と同様に補数補正値として対応列のブースデコーダで“−１”、“−２”の演算が指定されると“１”を出力し、第４〜７列は演算対象外の部分であるので無条件に“０”にマスクする。
【００２８】
以上の部分積及び各補正値の出力をキャリセーブ加算器及び前加算器に入力して加算を行えば、その加算結果の上位３２ビットに乗数と被乗数の上位エレメント同士の乗算結果が現れ、また、その加算結果の下位３２ビットに乗数と被乗数の下位エレメント同士の乗算結果が現れる。したがって、下位３２ビットの符号ビットの補正処理（加算結果の下位３２ビットの符号ビットにビット３０をコピー）を行うことにより、正しい値の２エレメント演算処理結果が得られる。
【００２９】
0003657388.tif 000004
（以下余白）
0003657388.tif 000005
図２は本発明に係る乗算回路の他の実施例を示す図であり、図１と共通する要素には同一の符号を付してある。
【００３０】
２エレメント演算処理を行う場合、第０〜２列の部分積回路３０〜３２のビット７〜０は１エレメント演算処理と同様に対応列のブースデコーダからの制御信号に従い被乗数を部分積に変換し、ビット９、８は対応列のブースデコーダからの制御信号に従い表４で示される変換方法で符号拡張値を生成し、ビット１７〜１０は演算対象外であるので無条件に“０”にマスクする。第３列の部分積回路３３のビット７〜０は１エレメント演算処理と同様に対応列のブースデコーダからの制御信号に従い被乗数を部分積に変換し、ビット９、８は対応列のブースデコーダからの制御信号に従い表５で示される変換方法で符号拡張値を生成し、ビット１７〜１０は演算対象外であるので無条件に“０”にマスクする。第４列の部分積回路３４のビット７〜０はマイナス方向に引きすぎているときに正の値に補正するための補正値を発生し、ビット１７〜８は１エレメント演算処理と同様に対応列のブースデコーダからの制御信号に従い被乗数を部分積に変換する。第５〜７列の部分積回路３５〜３７のビット７、５〜０は演算対象外であるので無条件に“０”にマスクし、ビット６は上位エレメントの補数補正値として対応列のブースデコーダで“−１”、“−２”の演算が指定されると“１”を出力し、ビット１７〜８は１エレメント演算処理と同様に対応列のブースデコーダからの制御信号に従い被乗数を部分積に変換する。符号補正回路５１のビット７、５〜０は演算対象外であるので無条件に“０”にマスクし、ビット６は上位エレメントの補数補正値として対応列のブースデコーダで“−１”、“−２”の演算が指定されると“１”を出力し、ビット１５〜８はマイナス方向に引きすぎているときに正の値に補正するための補正値を発生する。第０〜３列の補数補正回路４０〜４３は１エレメント演算処理と同様に補数補正値として対応列のブースデコーダで“−１”、“−２”の演算が指定されると“１”を出力する。第４〜７列の補数補正回路４４〜４７は演算対象外の部分であるので無条件に“０”にマスクする。
【００３１】
以上の部分積及び各補正値の出力をキャリセーブ加算器及び前加算器に入力して加算を行えば、その加算結果の上位３２ビットに乗数と被乗数の上位エレメント同士の乗算結果が現れ、また、その加算結果の下位３２ビットに乗数と被乗数の下位エレメント同士の乗算結果が現れる。但し、下位３２ビットから上位３２ビットにキャリが発生する可能性があるため、２エレメント演算処理を行う全加算器に、キャリパスのカット手段を設ける必要がある。
【００３２】
なお、以上の説明では、１６ビット・１エレメントと８ビット・２エレメントとを切り換える例を示したが、これに限らない。３２ビット・１エレメント、１６ビット・２エレメント、８ビット・４エレメントの三つに切り換えるものであってもよいし、これ以外のビット数であってもよい。
図３はブースデコーダ２０〜２７の構成図、図４は部分積回路３０〜３７の構成図、図５はキャリセーブ加算器（図１８の符号２）の構成図であり、図６〜図１７は各部の要素回路の構成図である。
【００３３】
図３において、ブースデコーダ２０〜２７は、８ビットの乗数Ｍ０〜Ｍ７、符号付の有無を示す制御信号（なし：Ｈレベル）ＵＮＳＩＧＮ、及び、２エレメント演算処理モードを指定する制御信号（Ｈレベルアクティブ）ＳＰＲＩＴに基づいてＣ０１、Ｃ２３、Ｃ４５、Ｃ６７、Ｃ８９のデコード信号を発生するものである。要素回路はＢＡＪとＢＤＥＣの二つであり、ＢＡＪは図６に示すように、ＡＮＤゲート１００で構成され、ＢＤＥＣは図７に示すように、ＩＮＶゲート２００、ノア・アンド複合ゲート２０１、ＥＯＲゲート２０２、負論理入力のＡＮＤゲート２０３、ＮＯＲゲート２０４で構成されている。
【００３４】
図４において、部分積回路３０〜３７は、８ビットの被乗数Ａ０〜Ａ７、制御信号（ＵＮＳＩＧＮ、ＳＰＲＩＴ）、及び、ブースデコーダ２０〜２７からの信号（Ｃ０１、Ｃ２３、Ｃ４５、Ｃ６７、Ｃ８９）に基づいて、各列の部分積信号（Ｂで始まる信号）を発生するものである。要素回路は、ＺＳＥＸＴ、ＳＥＸＴ、ＺＰＭＵＬ、ＰＭＵＬ、ＰＡＤＪ、ＳＰＭＵＬ、ＣＳＭＵＬ、ＡＰＭＵＬ、ＡＰＡＤＪ、ＳＡＤＪである。
【００３５】
ＺＳＥＸＴは、図８に示すように、ＩＮＶゲート３００〜３０２、ナンドゲート３０３〜３０５、ＮＯＲゲート３０６〜３０９、ＥＯＲゲート３１０〜３１１、複合ゲート３１２〜３１５で構成されており、２エレメント演算時、０クリップ付の符号部生成という機能を有するものである。ＳＥＸＴは、図９に示すように、ＩＮＶゲート４００〜４０１、ナンドゲート４０２〜４０４、ＮＯＲゲート４０５、ＥＯＲゲート４０６〜４０７、複合ゲート４０８〜４１１で構成されており、符号部生成という機能を有するものである。ＺＰＭＵＬは、図１０に示すように、ＩＮＶゲート５００、ナンドゲート５０１〜５０２、複合ゲート５０３〜５０６で構成されており、２エレメント演算時、０クリップ付の部分積生成という機能を有するものである。ＰＭＵＬは、図１１に示すように、ＥＯＲゲート６００〜６０１、複合ゲート６０２〜６０３で構成されており、部分積生成という機能を有するものである。ＰＡＤＪは、図１２に示すように、ＡＮＤゲート７００〜７０１で構成されており、部分積の補正値生成という機能を有するものである。ＳＰＭＵＬは、図１３に示すように、ＩＮＶゲート８００〜８０１、ナンドゲート８０２、ＮＯＲゲート８０３、ＥＯＲゲート８０４〜８０５、複合ゲート８０６〜８１０で構成されており、２エレメント演算時、符号部生成、１エレメント演算時、部分積生成という機能を有するものである。ＣＳＭＵＬは、図１４に示すように、ＩＮＶゲート９００、ナンドゲート９０１、ＮＯＲゲート９０２、ＥＯＲゲート９０３〜９０４、複合ゲート９０５〜９０９で構成されており、２エレメント演算時、キャリカットの符号部生成、１エレメント時、部分積生成という機能を有するものである。ＡＰＭＵＬは、図１５に示すように、ＩＮＶゲート１０００〜１００１、ナンドゲート１００２〜１００３、ＮＯＲゲート１００４、複合ゲート１００５〜１００９で構成されており、２エレメント時、部分積の補正値生成、１エレメント時、部分積生成という機能を有するものである。ＡＰＡＤＪは、図１６に示すように、ＡＮＤゲート１１００、複合ゲート１１０１で構成されており、２エレメント時、部分積の補正値生成、１エレメント時、部分積の補正値生成という機能を有するものである。ＳＡＤＪは、図１７に示すように、ＩＮＶゲート１２００、ＮＯＲゲート１２０１で構成されており、２エレメント時、０クリップ付補正値生成という機能を有するものである。
【００３６】
図５において、本実施例のキャリセーブ加算器の要素回路はＣＳＡ（構成は図２０参照）だけである。従来のキャリセーブ加算器のキャリパス回路（図１９のＣＣＵＴ）は必要ない。したがって、キャリセーブ加算器のレイアウト上の規則性が損なわれない。
【００３７】
【発明の効果】
本発明によれば、下位エレメントから上位エレメントへのキャリ伝播がなくなるため、従来のようなキャリパスカット手段（ＣＣＵＴ）が不要になり、レイアウト上の規則性を損なわずに２エレメント演算処理を可能にすることが可能になる。
【図面の簡単な説明】
【図１】一実施例の概念図（符号付き整数の乗算に適用できるもの）である。
【図２】一実施例の他の概念図（符号なし整数の乗算に適用できるもの）である。
【図３】ブースデコーダの構成図である。
【図４】部分積回路の構成図である。
【図５】キャリセーブ加算器の構成図である。
【図６】ＢＡＪ回路の構成図である。
【図７】ＢＤＥＣ回路の構成図である。
【図８】ＺＳＥＸＴ回路の構成図である。
【図９】ＳＥＸＴ回路の構成図である。
【図１０】ＺＰＭＵＬ回路の構成図である。
【図１１】ＰＭＵＬ回路の構成図である。
【図１２】ＰＡＤＪ回路の構成図である。
【図１３】ＳＰＭＵＬ回路の構成図である。
【図１４】ＣＳＭＵＬ回路の構成図である。
【図１５】ＡＰＭＵＬ回路の構成図である。
【図１６】ＡＰＡＤＪ回路の構成図である。
【図１７】ＳＡＤＪ回路の構成図である。
【図１８】並列形乗算回路のブロック図である。
【図１９】従来のキャリセーブ加算器の構成図である。
【図２０】ＣＳＡ回路の構成図である。
【図２１】ＣＣＵＴ回路の構成図である。
【符号の説明】
１：部分積生成回路
２：キャリセーブ加算器
３：全加算器
３０〜３７：部分積回路（部分積生成列）
【図１】
0003657388.tif 000006
【図２】
0003657388.tif 000007
【図３】
0003657388.tif 000008
【図４】
0003657388.tif 000009
【図５】
0003657388.tif 000010
【図６】
0003657388.tif 000011
【図７】
0003657388.tif 000012
【図８】
0003657388.tif 000013
【図９】
0003657388.tif 000014
【図１０】
0003657388.tif 000015
【図１１】
0003657388.tif 000016
【図１２】
0003657388.tif 000017
【図１３】
0003657388.tif 000018
【図１４】
0003657388.tif 000019
【図１５】
0003657388.tif 000020
【図１６】
0003657388.tif 000021
【図１７】
0003657388.tif 000022
【図１８】
0003657388.tif 000023
【図１９】
0003657388.tif 000024
【図２０】
0003657388.tif 000025
【図２１】
0003657388.tif 000026