(57)【特許請求の範囲】
【請求項１】
ブースのアルゴリズムに従って生成された複数の部分積に基づいて累進的な加算を行うことにより、個数が逓減する中間和を生成しつつ、一対の最終中間和を出力するツリー回路であって、
複数のビット幅のデータの複数を加算して一対の前記中間和を出力する通常型加算ブロックと、
複数のビット幅のデータの複数と、１ビット幅のデータとを加算して一対の前記中間和を出力する拡張型加算ブロックと
を備え、
各々の前記部分積は、複数ビットの第１要素と１ビットの第２要素との和に対して自身の最下位ビット位置を示す位取り部が乗じられたものとして表され、
前記拡張型加算ブロックは、前記複数の部分積を入力し、自身に入力される前記複数の部分積以外の前記複数の部分積に属する第２要素の一つを更に入力し、
前記拡張型加算ブロックに入力される前記第２要素は、前記複数の部分積のうち前記位取り部が最も大きな部分積に属するツリー回路。
【請求項２】
前記拡張型加算ブロックには、前記複数の部分積のうちその前記位取り部が最も小さな部分積が与えられる、請求項１記載のツリー回路。
【請求項３】
前記拡張型加算ブロックは、これに入力される前記第２要素のビット位置である特定ビット位置を含んだ上位において所定個数の拡張型加算器を、前記特定ビット位置よりも下位のビット位置において複数の通常型加算器を、それぞれ有し、
前記拡張型加算器は、前記通常型加算器と比較して、自身よりも一つ上位のビットへと出力する上位伝搬出力の数が一つ多い、請求項２記載のツリー回路。
【請求項４】
前記拡張型加算ブロックは、前記拡張型加算器よりも上位においても加算器を有し、
最も上位に配置された前記拡張型加算器に隣接した上位に配置された前記加算器は、前記上位伝搬出力の１つを、桁上げ入力以外の入力として受ける、請求項３記載のツリー回路。
【請求項５】
前記拡張型加算器は、その隣接する下位のビット位置から与えられる前記上位伝搬出力の他の入力の個数が４であり、その値が、全て“１”であるか否かに応じて、前記上位伝搬出力の１つが異なる値を採る、請求項３記載のツリー回路。
【請求項６】
複数の前記拡張型加算器同士において伝搬する前記上位伝搬出力は、疑似桁上げ出力として一対で生じ、かつ前記通常型加算器において生じる一対の桁上げに対して行われる所定の２つの演算の結果として表され得て、
前記２つの演算の何れもが、前記一対の桁上げに対して可換である、請求項５記載のツリー回路。
【請求項７】
前記特定ビット位置に配置される前記拡張型加算器は、その隣接する下位のビット位置からの一対の桁上げ出力と、前記拡張型加算ブロックに入力する前記第２要素とを受け、その隣接する上位ビットに位置する前記拡張型加算器に前記疑似桁上げ出力を伝搬させる、請求項６記載のツリー回路。
【請求項８】
前記拡張型加算ブロックは、前記拡張型加算器よりも上位においても前記通常型加算器を有し、
前記拡張型加算器のうち最も上位に配置されるものは、その隣接する下位のビット位置から一対の前記疑似桁上げ出力を受け、その隣接する上位ビットに位置する前記通常型加算器に一対の桁上げ出力を与える、請求項７記載のツリー回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、２値デジタル算術演算器に関し、特に、符号付き２の補数表現された乗数及び被乗数から符号付き２の補数表現された積を求める並列乗算回路に用いられるツリー回路に関するものである。
【０００２】
【従来の技術】
今日の、マイクロプロセッサやＤＳＰなどでは、乗算命令を高速に実行するために並列乗算器を搭載しているものが一般的である。並列乗算回路は、乗算の入力オペランドである乗数と被乗数から、複数個の部分積を生成し、これら部分積を足し合わせることにより乗算結果である積出力を得るものである。よって、並列乗算回路の高速化手法としては、以下の２つの目的のためのアプローチがある。
【０００３】
第１の目的は、生成する部分積の数を減らすことである。この目的を達成するためにはブースのアルゴリズム、特に２次のブースのアルゴリズムが代表的に用いられる。第２の目的は、生成された複数の部分積の加算を高速に実行することであり、このためには高速な加算回路を並列に動作させる回路方式が求められる。
【０００４】
従来の技術による高速乗算回路を説明するため、まず３２ビットの符号付き２の補数表現された乗数Ｙと、３２ビットの符号付き２の補数表現された被乗数Ｘとを乗算し、６４ビットの符号付き２の補数表現された積Ｚを求める回路（以下、３２×３２乗算器と略称する）を例に採る。
【０００５】
乗数Ｙの各ビット毎に部分積を生成すると、部分積の数は３２となり、これらを足し合わせる必要がある。しかし２次のブースのアルゴリズムを用いることにより、乗数Ｙにおいて隣り合う３ビットを組にして把握することにより、部分積の数を減らし、第１の目的を達成することができる。
【０００６】
つまり、乗数Ｙを３２ビットの符号付き２の補数で表現すると、ｙi （ｉ＝０〜３１）が０または１を採るとして、
【０００７】
【数１】
0003652447.tif 000002
【０００８】
となるので、積Ｚは、
【０００９】
【数２】
0003652447.tif 000003
【００１０】
と表すことができる。このようにして積Ｚを求めるのには１６個の部分積Ｐj （ｊ＝０〜１５）を足し合わせるだけで足りる。
【００１１】
表１に、２次のブースのアルゴリズムの真理値表を示す。
【００１２】
【表１】
0003652447.tif 000004
【００１３】
乗数Ｙにおいて隣り合う３ビットのとりうる値の組み合わせは８通りある。よって、部分積Ｐj は、０，＋Ｘ・２j ，＋Ｘ・２j+1 ，−Ｘ・２j ，−Ｘ・２j+1 のいずれかの値を採る。２の補数表現された２値デジタル演算においては、あるデータを「２倍する」には１ビットだけ上位にそのデータ全体をシフトすればよく、「符号反転する」には、そのデータの各ビットを反転させ（これは部分積の第１要素ｐｐj の値の反転が対応する）、最下位ビットの桁に１を加算すればよい（これは部分積の第２要素ｐｃj が値“１”を採ることに対応する）。そして、部分積Ｐj は次のように表すことができる。
【００１４】
【数３】
0003652447.tif 000005
【００１５】
よって、２次のブースのアルゴリズムによって生成された１６の部分積Ｐ0 〜Ｐ15を足し合わせるためには、ｊ＝０〜１５に対し、最下位桁が２ｊビット目である３３ビット（つまり、ビット位置が２ｊ〜２ｊ＋３２を占める。３２ビットのデータが２倍される可能性があるため、３２ビットよりも１ビット大きい位置が必要となる。）の部分積の第１要素ｐｐj 、及び、位置が２ｊビット目である１ビットの部分積の第２要素ｐｃj を足し合わす必要があることになる（つまり２2jは第１及び第２要素の位取りを示している）。
【００１６】
また、第２の目的を達成するための、即ち部分積の加算を高速に実行するための、高速な加算回路を並列に動作させる回路方式としては、キャリーセーブ法や、Wallace-Tree法等が代表的である。いずれも、複数（本例では１６）の部分積を加算する際に、中間和の数を順次減少させつつ段階的に加算して最終的に２つの中間和（以下「最終中間和」という）を生成する。この最終中間和を得る迄に生じる桁上げ信号が後段の加算へと先送りされる。これにより、桁上げ信号が上位ビットへ伝搬することを並列化し、全体としてのクリティカルパス（回路動作を律速する経路）が短くなり、加算が高速となる。
【００１７】
生成された２つの最終中間和は、最終的に加算されて乗数と被乗数との積として得られる。この最終加算は２つの複数ビットの加算であり、例えばキャリールックアヘッド方式等を用いて高速化を図ることができる。かかる最終加算は周知の技術であるので詳細な説明は省略する。
【００１８】
以下では、第２の目的を達成するための、複数の部分積を順次減少させつつ段階的に加算して最終的に２つの最終中間和を生成する技術について詳細な検討を行い、従来の技術の問題点を呈示する。
【００１９】
図１８は、Wallace-Tree法を実現する従来の技術を示すブロック図であり、４入力２出力加算ブロック２２ａ〜２２ｇが木（Tree）構造をとるように相互接続されている。そして、４入力２出力加算ブロック２２ｇの出力が与えられる３入力２出力加算ブロック２４ａも備えられている。
【００２０】
図１９乃至図２１は三者相まって図１８の詳細を示すブロック図である。図１９は図２０と仮想線Ｑ19Ｑ19において連続し、図２０は図２１と仮想線Ｑ20Ｑ20において連続する。各加算ブロックの横幅はそのブロックのビット幅に相当し、横方向の位置はビット位置を表している。
【００２１】
図２２乃至図２４は三者相まって４入力２出力加算ブロック２２ａの構成を例示するブロック図であり、図２２は図２３と仮想線Ｑ22Ｑ22において連続し、図２３は図２４と仮想線Ｑ23Ｑ23において連続する。４入力２出力加算ブロック２２ａは、１ビットに対応する４入力２出力加算器２００の３５個が直列接続されて構成されている。各ビット位置の４入力２出力加算器２００の桁上げ出力Ｃｏは、１つ上位に位置する４入力２出力加算器２００の桁上げ入力Ｃｉとなる。１ビットの４入力２出力加算器の機能として、桁上げ出力Ｃｏを桁上げ入力Ｃｉに依存しないようにすれば、これらを直列に接続して得られる４入力２出力加算ブロック内では、桁上げ出力Ｃｏが、隣接するビットを越えて伝搬することはない。
【００２２】
【発明が解決しようとする課題】
しかし、図１８乃至図２１に示された従来の技術における部分積の加算では、１ビットの部分積の第２要素ｐｃ15を４入力２出力加算ブロック２２ｇの下位出力ｓｏ27と上位出力ｃｏ27とに加算するだけのために、４段目に属する３入力２出力加算ブロック２４ａが必要とされる。そしてこの部分積の第２要素ｐｃ15が乗算器の高速化の妨げになっており、３入力２出力加算ブロック２４ａが集積化の妨げになっている。
【００２３】
具体的に、乗算器の速度を以下のようにして見積もってみる。図２５は、それらが直列に接続されて３入力２出力加算ブロック２４ａを構成する３入力２出力加算器４００の１ビット分の例を示す回路図であり、表２はその真理値表である。
【００２４】
【表２】
0003652447.tif 000006
【００２５】
通常、排他的論理和ゲート（以降ＸＯＲ）１段分の遅延は、他の論理積、論理和ゲートや複合ゲート１段分の遅延よりも大きく、２段分程度である。例えば、図２５に示された構成における３入力２出力加算器４００のクリティカルパスはＸＯＲ２段である。
【００２６】
図２６は４入力２出力加算器２００の構成例を示すブロック図である。４入力２出力加算器２００の１ビット分は、１ビットの３入力２出力加算器４００を２つ用いて構成することができる。この場合にはそのクリティカルパスはＸＯＲ４段である。
【００２７】
しかし、４入力２出力加算器２００の構成を工夫することにより、更にここで要される遅延を小さくすることができる。表３は４入力２出力加算器２００が満足すべき機能の一例を示す真理値表である。
【００２８】
【表３】
0003652447.tif 000007
【００２９】
図２７は表３を満たす回路の一例を示す回路図である。クリティカルパスは４入力２出力加算器２００の出力ＳＯを得る経路である。出力ＳＯは４つの入力Ａ，Ｂ，Ｃ，Ｄと桁上げ入力Ｃｉの５つの信号の排他的論理和であるが、図２７から分かるように、入力Ａ，Ｂの排他的論理和と、入力Ｃ，Ｄの排他的論理和とは並列して処理できるので、結局クリティカルパスはＸＯＲ３段である。そこで簡単のため、以降では３入力２出力加算器４００の遅延はＸＯＲ２段、４入力２出力加算器２００の遅延はＸＯＲ３段として説明を進める。
【００３０】
既述のように、桁上げ出力Ｃｏは隣接するビットを越えて伝搬しないので、加算器２００，４００の遅延時間はそのままそれぞれ加算ブロック２２ａ〜２２ｇ，２４ａの遅延時間を決定する。
【００３１】
乗算器の入力である乗数Ｙと被乗数Ｘとが同時に入力されると仮定すれば、２次のブースのアルゴリズムによって生成される部分積は、その第１要素ｐｐ0 〜ｐｐ15及び第２要素ｐｃ0 〜ｐｃ15は同時にその値が確定する。
【００３２】
よって、図１８乃至図２１に示された加算ブロックのうち、Tree回路の１段目に属するもの（４入力２出力加算ブロック２２ａ〜２２ｄ）、２段目に属するもの（４入力２出力加算ブロック２２ｅ，２２ｆ）、３段目に属するもの（４入力２出力加算ブロック２２ｇ）、４段目に属するもの（３入力２出力加算ブロック２４ａ）の順番に加算処理が行われる。従って、部分積の第１要素ｐｐ0 〜ｐｐ15及び第２要素ｐｃ0 〜ｐｃ15が確定してから、２つの最終中間和となる、３入力２出力加算ブロック２４ａの下位出力ｓｏ28及び上位出力ｃｏ28が確定するまでの遅延時間は、４入力２出力加算ブロック３段と３入力２出力加算ブロック１段を経由するので、ＸＯＲ１１（＝３×３＋２）段分となる。
【００３３】
図１８では、１６個の部分積を足し合わせて２つの最終中間和を生成するTree回路として４入力２出力加算ブロックを基本とした構成を示したが、Treeの最終段以外にも３入力２出力加算ブロックを用いて構成することもできる。
【００３４】
図２８は、３入力２出力加算ブロックの占める割合を多くしたTree回路の構造を示すブロック図である。図２９乃至図３２は四者相まって図２８の詳細を示すブロック図である。図２９は図３０と仮想線Ｑ29Ｑ29において連続し、図３０は図３１と仮想線Ｑ30Ｑ30において連続し、図３１は図３２と仮想線Ｑ31Ｑ31において連続する。図１９乃至図２１と同様に、各加算ブロックの横幅はそのブロックのビット幅に相当し、横方向の位置はビット位置を表している。
【００３５】
４入力２出力加算ブロック３２ａ〜３２ｄの出力を３入力２出力加算ブロック３４ａ〜３４ｃが受け、３入力２出力加算ブロック３４ａ〜３４ｃの出力を３入力２出力加算ブロック３４ｄ〜３４ｅが受け、３入力２出力加算ブロック３４ｄ〜３４ｅの出力を４入力２出力加算ブロック３２ｅが受ける。そして４入力２出力加算ブロック３２ｅが２つの最終中間和として下位出力ｓｏ40、上位出力ｃｏ40を出力する。
【００３６】
図１８を用いて示された場合と異なり、第２要素ｐｃj はｊの順に並べて集められ、ｐｐｃとして４入力２出力加算ブロック３２ａに与えられる。つまり
【００３７】
【数４】
0003652447.tif 000008
【００３８】
である。
【００３９】
図２８乃至図３２における加算ブロックのうち、Tree回路の１段目に属するもの（４入力２出力加算ブロック３２ａ〜３２ｄ）、２段目に属するもの（３入力２出力加算ブロック３４ａ〜３４ｃ）、３段目に属するもの（３入力２出力加算ブロック３４ｄ〜３４ｅ）、４段目に属するもの（４入力２出力加算ブロック３２ｅ）の順番に加算処理が行われる。従って、部分積の第１要素ｐｐ0 〜ｐｐ15及び第２要素ｐｃ0 〜ｐｃ15が確定してから、２つの最終中間和となる、４入力２出力加算ブロック３２ｅの下位出力ｓｏ40及び上位出力ｃｏ40が確定するまでの遅延時間は、４入力２出力加算ブロック２段と３入力２出力加算ブロック２段を経由するので、ＸＯＲ１０（＝３×２＋２×２）段分となる。図１８乃至図２１で示された構成と比較して、遅延時間が改善されている。
【００４０】
しかし、加算ブロックの数は２個増加しており、回路規模が大きくなってしまうという欠点がある。これは３入力２出力加算ブロックが、４入力２出力加算ブロックよりも遅延時間が短いものの、並列処理できる入力の数が１つ少ないことに起因する。
【００４１】
図３３は、いずれも２４ビットの符号付き２の補数表現された乗数及び被乗数を乗算し、４８ビットの符号付き２の補数表現された積を求める回路における最終中間和を生成するTree回路を例示するブロック図である。２次のブースのアルゴリズムを用いた場合に得られる部分積の数は１２個であり、これらを順次減少させつつ段階的に加算して最終的に２つの最終中間和を生成する。
【００４２】
４入力２出力加算ブロック４２ａ〜４２ｅ及び３入力２出力加算ブロック４４ａでTree回路が構成されている。Tree回路の１段目に属するもの（４入力２出力加算ブロック４２ａ〜４２ｃ）、２段目に属するもの（４入力２出力加算ブロック４２ｄ、３入力２出力加算ブロック４４ａ）、３段目に属するもの（４入力２出力加算ブロック４２ｅ）の順番に加算処理が行われる。ｐｐｃは
【００４３】
【数５】
0003652447.tif 000009
【００４４】
として表される。
【００４５】
４入力２出力加算ブロック３段を経由する方（４２ａ（または４２ｂ），４２ｄ，４２ｅを通る経路）が、４入力２出力加算ブロック２段と３入力２出力加算ブロック１段を経由する方（４２ｃ，４４ａ，４２ｅを通る経路）よりも遅延時間が長い。従って、部分積の第１要素ｐｐ0 〜ｐｐ11及び第２要素ｐｃ0 〜ｐｃ11が確定してから、２つの最終中間和となる４入力２出力加算ブロック４２ｅの下位出力ｓｏ46及び上位出力ｃｏ46が確定するまでの遅延時間は、４入力２出力加算ブロックの３段分に相当し、ＸＯＲ９段分となる。
【００４６】
ここで、上述のように４入力２出力加算ブロック４２ｅに入力するデータの確定時刻は等しくない。即ち３入力２出力加算ブロック４４ａの下位出力ｓｏ45と上位出力ｃｏ45が、４入力２出力加算ブロック４２ｄの下位出力ｓｏ44と上位出力ｃｏ44よりもＸＯＲ１段分早く確定している。更に、３入力２出力加算ブロック４４ａに入力するデータについて言えば、部分積の第１要素ｐｐ11が、４入力２出力加算ブロック４２ｃの下位出力ｓｏ43と上位出力ｃｏ43よりもＸＯＲ３段分早く確定している。
【００４７】
このように、従来の技術において、乗算の入力データのビット幅によってはTree回路の回路動作の並列度が低い場合があった。換言すればTree回路を構成する回路ブロックの入力データが確定するタイミングが不揃いであるため、乗算器の高速化の妨げとなるという問題点もあった。
【００４８】
本発明は、上記のような問題点を解消するためになされたもので、２次のブースのアルゴリズムを用いた並列乗算回路の回路動作の並列度を高め、回路規模を著しく増大させることなく乗算器を高速化することを目的とする。
【００４９】
【課題を解決するための手段】
この発明のうち請求項１にかかるものは、ブースのアルゴリズムに従って生成された複数の部分積に基づいて累進的な加算を行うことにより、個数が逓減する中間和を生成しつつ、一対の最終中間和を出力するツリー回路である。そして複数のビット幅のデータの複数を加算して一対の前記中間和を出力する通常型加算ブロックと、複数のビット幅のデータの複数と、１ビット幅のデータとを加算して一対の前記中間和を出力する拡張型加算ブロックとを備える。
【００５０】
そして各々の前記部分積は、複数ビットの第１要素と１ビットの第２要素との和に対して自身の最下位ビット位置を示す位取り部が乗じられたものとして表される。前記拡張型加算ブロックは、前記複数の部分積を入力し、自身に入力される前記複数の部分積以外の前記複数の部分積に属する第２要素の一つを更に入力する。
【００５１】
そして前記拡張型加算ブロックに入力される前記第２要素は、前記複数の部分積のうち前記位取り部が最も大きな部分積に属する。
【００５２】
この発明のうち請求項２にかかるものは、請求項１記載のツリー回路であって、前記拡張型加算ブロックには、前記複数の部分積のうちその前記位取り部が最も小さな部分積が与えられる。
【００５３】
この発明のうち請求項３にかかるものは、請求項２記載のツリー回路であって、前記拡張型加算ブロックは、これに入力される前記第２要素のビット位置である特定ビット位置を含んだ上位において所定個数の拡張型加算器を、前記特定ビット位置よりも下位のビット位置において複数の通常型加算器を、それぞれ有する。前記拡張型加算器は、前記通常型加算器と比較して、自身よりも一つ上位のビットへと出力する上位伝搬出力の数が一つ多い。
【００５４】
この発明のうち請求項４にかかるものは、請求項３記載のツリー回路であって、前記拡張型加算ブロックは、前記拡張型加算器よりも上位においても加算器を有する。最も上位に配置された前記拡張型加算器に隣接した上位に配置された前記加算器は、前記上位伝搬出力の１つを、桁上げ入力以外の入力として受ける。
【００５５】
この発明のうち請求項５にかかるものは、請求項３記載のツリー回路であって、前記拡張型加算器は、その隣接する下位のビット位置から与えられる前記上位伝搬出力の他の入力の個数が４であり、その値が全て“１”であるか否かに応じて、前記上位伝搬出力の１つが異なる値を採る。
【００５６】
この発明のうち請求項６にかかるものは、請求項５記載のツリー回路であって、複数の前記拡張型加算器同士において伝搬する前記上位伝搬出力は、疑似桁上げ出力として一対で生じ、かつ前記通常型加算器において生じる一対の桁上げに対して行われる所定の２つの演算の結果として表され得る。そして前記２つの演算の何れもが、前記一対の桁上げに対して可換である。
【００５７】
この発明のうち請求項７にかかるものは、請求項６記載のツリー回路であって、前記特定ビット位置に配置される前記拡張型加算器は、その隣接する下位のビット位置からの一対の桁上げ出力と、前記拡張型加算ブロックに入力する前記第２要素とを受け、その隣接する上位ビットに位置する前記拡張型加算器に前記疑似桁上げ出力を伝搬させる。
【００５８】
この発明のうち請求項８にかかるものは、請求項７記載のツリー回路であって、前記拡張型加算ブロックは、前記拡張型加算器よりも上位においても前記通常型加算器を有する。前記拡張型加算器のうち最も上位に配置されるものは、その隣接する下位のビット位置から一対の前記疑似桁上げ出力を受け、その隣接する上位ビットに位置する前記通常型加算器に一対の桁上げ出力を与える。
【００５９】
【発明の実施の形態】
実施の形態１．
図１は本発明の実施の形態１にかかる乗算器の構成の一部を示すブロック図である。乗数、被乗数は共に３２ビットで符号付き２の補数表現され、２次のブースのアルゴリズムを用いて１６個の部分積Ｐ0 〜Ｐ15が得られる。ここではこれらの部分積を生成する部分は示さず、部分積を加算する際に、中間和の数を順次段階的に減少させ、最終的に２つの最終中間和を生成するTree回路の概略を示している。従来の技術において説明されたように数３に基づいて、部分積Ｐj は３３ビット幅の第１要素ｐｐj と、１ビット幅の第２要素ｐｃj と、これらの最下位ビットの位置を示す２ｊとによって決定される。
【００６０】
実施の形態１において示されたTree回路は、複数ビット幅の４つの入力データと１ビットの入力データとを同時に加算する回路ブロック（以降「拡張型４入力２出力加算ブロック」と称する）１ａと、４入力２出力加算ブロック２ａ〜２ｆとから構成されている。
【００６１】
従来の技術において３入力２出力加算ブロック２４ａに与えられていた部分積の第２要素ｐｃ15は、本実施の形態においては拡張型４入力２出力加算ブロック１ａに与えられる。このため、本実施の形態では３入力２出力加算ブロック２４ａは必要ない。
【００６２】
拡張型４入力２出力加算ブロック１ａは、部分積の第２要素ｐｃ15と、部分積の第１要素ｐｐ0 〜ｐｐ3 を入力し、上位出力ｃｏ1 及び下位出力ｓｏ1 を出力する。４入力２出力加算ブロック２ａは部分積の第１要素ｐｐ4 〜ｐｐ7 を入力し、中間和として上位出力ｃｏ2 及び下位出力ｓｏ2 を出力する。４入力２出力加算ブロック２ｂは部分積の第１要素ｐｐ8 〜ｐｐ11を入力し、中間和として上位出力ｃｏ3 及び下位出力ｓｏ3 を出力する。４入力２出力加算ブロック２ｃは部分積の第１要素ｐｐ12 〜ｐｐ15を入力し、中間和として上位出力ｃｏ4 及び下位出力ｓｏ4 を出力する。４入力２出力加算ブロック２ｄは上位出力ｃｏ1 ，ｃｏ2 及び下位出力ｓｏ1 ，ｓｏ2 を入力し、中間和として上位出力ｃｏ5 及び下位出力ｓｏ5 を出力する。４入力２出力加算ブロック２ｅは上位出力ｃｏ3 ，ｃｏ4 及び下位出力ｓｏ3 ，ｓｏ4 を入力し、中間和として上位出力ｃｏ6 及び下位出力ｓｏ6 を出力する。４入力２出力加算ブロック２ｆは上位出力ｃｏ5 ，ｃｏ6 及び下位出力ｓｏ5 ，ｓｏ6 を入力し、最終中間和として上位出力ｃｏ7 及び下位出力ｓｏ7 を出力する。下位出力ｓｏ7 と上位出力ｃｏ7 とは、図示しない最終加算ブロックによって最終加算されて乗算結果が得られる。但し、以上の関係は概略的なものであり、詳細には図２乃至図４を用いて後述される。
【００６３】
図２乃至図４は三者相まって図１の詳細を示すブロック図である。図２と図３とは仮想線Ｑ2 Ｑ2 において連続し、図３と図４とは仮想線Ｑ3 Ｑ3 において連続する。各加算ブロックの横幅はそのブロックのビット幅に相当し、横方向の位置はビット位置を表している。
【００６４】
部分積Ｐ0 の第１要素ｐｐ0 ＜３２：０＞（＜ｕ：ｖ＞はその前に配置された符号によって表されるデータが、乗算結果の最下位たる第０ビット目から数えて、ｖビット目〜ｕビット目の位置を占めることを示す。以下ビット位置は乗算結果の最下位から数えた値を表す。）のうち第２ビット目〜第３２ビット目と、部分積Ｐ1 の第１要素ｐｐ1 ＜３４：２＞の全てと、部分積Ｐ1 の第２要素ｐｃ1 と、部分積Ｐ2 の第１要素ｐｐ2 ＜３６：４＞の全てと、部分積Ｐ2 の第２要素ｐｃ2 と、部分積Ｐ3 の第１要素ｐｐ3 ＜３８：６＞のうち第６ビット目〜第３６ビット目と、部分積Ｐ15の第２要素ｐｃ15とが、ビット位置を整合させて拡張型４入力２出力加算ブロック１ａに与えられる。
【００６５】
部分積Ｐ1 の第２要素ｐｃ1 と、部分積Ｐ2 の第２要素ｐｃ2 とは部分積Ｐ3 の第１要素ｐｐ3 の疑似的な下位として扱われる。
【００６６】
部分積Ｐ0 の第２要素ｐｃ0 は、これが占めるビット位置（第０ビット目）には他のデータが位置しないので、図示しない最終加算ブロックへと送られる。
【００６７】
部分積Ｐ3 の第１要素ｐｐ3 のうちの第３７ビット目及び第３８ビット目は、これが占めるビット位置には拡張型４入力２出力加算ブロック１ａが対応しないので、拡張型４入力２出力加算ブロック１ａの下位出力ｓｏ1 ＜３６：２＞の疑似的な上位として扱われ、４入力２出力加算ブロック２ｄへと送られる。
【００６８】
第２要素ｐｃ3 は、これが占めるビット位置（第６ビット目）に対応するデータが既に４つ存在するので、拡張型４入力２出力加算ブロック１ａにおいて加算されはしない。これは４入力２出力加算ブロック２ｄへと送られる。
【００６９】
部分積Ｐ0 の第１要素ｐｐ0 の第０ビット目及び第１ビット目はこれが占めるビット位置には拡張型４入力２出力加算ブロック１ａが対応しないので、拡張型４入力２出力加算ブロック１ａの下位出力ｓｏ1 の疑似的な下位として扱われる。
【００７０】
第２要素ｐｃ1 ，ｐｃ2 が配置されるビット位置においては、それぞれ第１要素ｐｐ2 ，ｐｐ3 が配置されないので、拡張型４入力２出力加算ブロック１ａにおいて、この位置には従来の４入力２出力加算器２００を用いることができる。しかし、第２要素ｐｃ15が配置されるビット位置、つまり３０ビット目においては、４つの第１要素ｐｐ0 〜ｐｐ3 も配置される。このため、少なくともこの位置における拡張型４入力２出力加算ブロック１ａは、６入力を扱う加算器を備えていなければならない。つまり４つの第１要素ｐｐ0 ＜３０＞，ｐｐ1 ＜３０＞，ｐｐ2 ＜３０＞，ｐｐ3 ＜３０＞（＜ｗ＞はビット位置を示す）と、第２要素ｐｃ15と、第２９ビット目に配置された４入力２出力加算器２００の桁上げ出力Ｃｏとの６つである。
【００７１】
しかも、この第３０ビット目に配置される加算器（以下「拡張型４入力２出力加算器」と称する）の出力は桁上げ出力が２つ必要となる。１ビットのデータが６個入力するのであるから、その加算結果の最大値は１０進数で６である。桁上げ出力を隣接するビットにのみ伝搬させるためには入力されるデータのビット位置に対して更に２1 の重みを有する桁上げのみで処理を行い、２2 の重みを有する桁上げを用いて処理することは許されないためである。勿論、加算結果が１０進数でいう奇数になる場合もあるので、入力されるデータのビット位置に対して２0 の重みを有する（即ち当該ビット位置に対応する）出力も必要である。よって、拡張型４入力２出力加算器は、２0 の重みを有する下位出力ＳＯ、２1 の重みを有する上位出力ＣＯ（これらはそれぞれ４入力２出力加算ブロックの下位出力ｓｏ、上位出力ｃｏの１ビット分に相当する）を出力し、更にいずれも２1 の重みを有する第１の桁上げ出力Ｃｏ１、第２の桁上げ出力Ｃｏ２が一つ上位に位置する加算器に送られる。
【００７２】
このため、第１の原則として第２要素ｐｃ15が配置されるビット位置よりも上位に配置される加算器は、４つの第１要素ｐｐ0 〜ｐｐ3 と、下位において隣接する拡張型４入力２出力加算器から与えられる第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２とを入力する必要があり、やはり拡張型４入力２出力加算器でなければならない。
【００７３】
但し、第１要素ｐｐ0 の最上位ビットは第３２ビット目に位置しているので、第３３ビット目以上での拡張型４入力２出力加算ブロック１ａにおいては、入力が一つ不要となっている。従って、第２の原則として第３３ビット目以上では、下位からの桁上げ出力が２つ存在しても、（通常の）４入力２出力加算器を用いて拡張型４入力２出力加算ブロック１ａを構成することができる。
【００７４】
つまり第１及び第２の原則に従えば、最もビット位置の高い部分積Ｐ15の第２要素ｐｃ15が配置されるビット位置を含んでこれよりも大きく、最もビット位置の低い部分積Ｐ0 の第１要素ｐｐ0 が占める最上位のビット位置以下のビット位置に対して、従来の４入力２出力加算ブロックにおける４入力２出力加算器２００を拡張型４入力２出力加算器に置換すれば良いことになる。
【００７５】
但し、第１及び第２の原則以外に後述するように「１加算法」に因る補正があり、拡張型４入力２出力加算器は更に上位のビット位置においても必要となってくる。以下、拡張型４入力２出力加算ブロックの構成について詳細に説明すると共に上記補正について簡単に説明する。
【００７６】
図５乃至図７は三者相まって拡張型４入力２出力加算ブロック１ａの構成を例示するブロック図である。図５及び図６は仮想線Ｑ5 Ｑ5 において連続し、図６及び図７は仮想線Ｑ6 Ｑ6 において連続する。
【００７７】
拡張型４入力２出力加算ブロック１ａは３５ビットの加算を並列して行うため、１ビットの拡張型４入力２出力加算器１００が第３０ビット目〜第３４ビット目において５個配置され、１ビットの４入力２出力加算器２００が第２ビット目〜第２９ビット目において２８個、第３５ビット目及び第３６ビット目において２個配置されている。
【００７８】
第０ビット目の４入力２出力加算器２００の桁上げ入力Ｃｉには下位からの桁上げがないので“０”が入力されている。そして順次、４入力２出力加算器２００の桁上げ出力Ｃｉはその上位において隣接する４入力２出力加算器２００の桁上げ入力Ｃｉとなっている。
【００７９】
但し、第２９ビット目の４入力２出力加算器２００の桁上げ出力Ｃｏは、その上位において隣接する拡張型４入力２出力加算器１００へ、その第２桁上げ入力Ｃｉ２として与えられる。そして第３０ビット目〜第３３ビット目の拡張型４入力２出力加算器１００の第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２は、それぞれ第３１ビット目〜第３４ビット目の拡張型４入力２出力加算器１００の第１及び第２の桁上げ入力Ｃｉ１，Ｃｉ２として与えられる。
【００８０】
第３０ビット目の拡張型４入力２出力加算器１００の第１の桁上げ入力Ｃｉ１には部分積Ｐ15の第２要素ｐｃ15が入力されている。第１の桁上げ入力Ｃｉ１も、この第３０ビット目というビット位置の重みを持つという点では４つの第１要素ｐｐ0 ＜３０＞，ｐｐ1 ＜３０＞，ｐｐ2 ＜３０＞，ｐｐ3 ＜３０＞と同格であり、上記第１の原則に従ったものである。勿論同じ理由で第３０ビット目の拡張型４入力２出力加算器１００の第２の桁上げ入力Ｃｉ２に部分積Ｐ15の第２要素ｐｃ15を入力し、第１の桁上げ入力Ｃｉ１に第２９ビット目の４入力２出力加算器２００の桁上げ出力Ｃｏを与えても良い。
【００８１】
第３４ビット目の拡張型４入力２出力加算器１００の第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２は、それぞれ第３５ビット目の４入力２出力加算器２００の４入力の内の一つ（図において“Ｄ”と示された入力）と桁上げ入力Ｃｉとして与えられる。第３５ビット目の４入力２出力加算器２００の桁上げ出力Ｃｏは第３６ビット目の４入力２出力加算器２００の桁上げ入力Ｃｉとして与えられる。
【００８２】
４つの第１要素ｐｐ0 〜ｐｐ3 はそれぞれビット位置を整合させつつ、対応するビット位置の４入力２出力加算器１００，２００の４入力Ａ〜Ｄに与えられる。そしてビット毎に４入力２出力加算器１００，２００はそれぞれ上位出力ＣＯと下位出力ＳＯとを出力し、これらはそれぞれ拡張型４入力２出力加算ブロック１ａの上位出力ｃｏ１と下位出力ｓｏ１の各ビットに対応している。
【００８３】
但し、第１要素ｐｐ2 には第２及び第３ビット目に配置されるべきデータを有さず、第１要素ｐｐ3 には第２乃至及び第５ビット目に配置されるべきデータを有さない。その一方で第２要素ｐｃ1 ，ｐｃ2 がそれぞれ第２ビット目、第４ビット目に配置される。従って、第２ビット目の４入力２出力加算器２００のＡ入力には第２要素ｐｃ1 が、Ｂ入力には“０”が、第３ビット目の４入力２出力加算器２００のＡ入力及びＢ入力には“０”が、第４ビット目の４入力２出力加算器２００のＡ入力には第２要素ｐｃ2 が、第５ビット目の４入力２出力加算器２００のＡ入力には“０”が、それぞれ与えられることになる。
【００８４】
第１及び第２の原則に従うのであれば、拡張型４入力２出力加算器１００は第３０ビット目乃至第３２ビット目の３個で済むはずであり、第３３ビット目及び第３４ビット目においては（通常の）４入力２出力加算器２００が配置されるはずである。しかし、図５に示されているように、実は第３２ビット目の拡張型４入力２出力加算器１００のＤ入力には第１要素ｐｐ0 ＜３２＞ではなくその反転した値が与えられ、第３３ビット目の拡張型４入力２出力加算器１００のＤ入力には“０”ではなく第１要素ｐｐ0 ＜３２＞の反転した値が与えられ、第３４ビット目の拡張型４入力２出力加算器１００のＤ入力には“０”ではなく第１要素ｐｐ0 ＜３２＞が与えられ、そして第３５ビット目の４入力２出力加算器２００のＣ入力には“０”ではなく“１”が与えられている。
【００８５】
このような、２の補数表示を行った符号つきの数の演算における被加算数の変更は、ここでは詳細を示さないが、符号ビット拡張を簡略化するための「１加算法」と呼ばれる周知の技法である。通常かかる技法が用いられるため、本実施の形態においても拡張型４入力２出力加算器１００は第１及び第２の原則に必要な個数よりも所定の個数だけ上位側にも必要となる（第１及び第２の原則に対する補正）。この所定の個数は、部分積を生成するためのブースのアルゴリズムが何次であるかに依存し、ここでは２個である。
【００８６】
第３５ビット目において与えられるべき第１要素はｐｐ2 ＜３５＞，ｐｐ3 ＜３５＞の２つであり、「１加算法」を施すことに因って入力するのが必要な“１”と、第３４ビット目の第１の桁上げ出力Ｃｏ１を含めて４つの入力を加算すればよいので、（通常の）４入力２出力加算器２００を用いることができる。勿論第３６ビット目においては第３５ビット目の４入力２出力加算器２００からの桁上げ出力Ｃｏを桁上げ入力Ｃｉとして入力し、第１要素ｐｐ0 ，ｐｐ1 はこのビット位置においては存在しないので、やはり（通常の）４入力２出力加算器２００を用いることができる。
【００８７】
勿論、第３５ビット目の４入力２出力加算器２００において、その桁上げ入力Ｃｉと、Ｃ入力と、Ｄ入力とは互いに等しい重みを有しているので互いに入れ換えることができる。また、拡張型４入力２出力加算器１００の第１及び第２の桁上げ入力Ｃｉ１，Ｃｉ２を互いに入れ換えることもできる。
【００８８】
さて、上記の拡張型４入力２出力加算器１００は以下のようにして実現することができる。拡張型４入力２出力加算器１００は実は６つの１ビットデータを入力し、その位置するビットに対応した下位出力ＳＯ１つと、その位置するビットよりも１つ上位のビットに対応した３つの出力、即ち第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２並びに上位出力ＣＯを出力する。つまり、
【００８９】
【数６】
0003652447.tif 000010
【００９０】
が成立する。
【００９１】
下位側で隣接する拡張型４入力２出力加算器１００の第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２の値の和は１０進法でいえば高々“２”であり、その与える影響は当該拡張型４入力２出力加算器１００自身が位置するビットにおいて出力する上位出力ＣＯと、下位出力ＳＯのみに限定することができる。換言すれば、第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２は４つの入力Ａ〜Ｄのみに依存させることができる。これによって自身が位置するビット位置よりも２以上上位のビット位置へは桁上げが伝搬することがない。
【００９２】
また、第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２は４つの入力Ａ〜Ｄにおける“１”の数によってのみ決め、桁上げ入力Ｃｉ１，Ｃｉ２の値は上位出力ＣＯに反映させることができる。４つの入力Ａ〜Ｄにおける“１”の数が１つ以下であれば桁上げは生じないので、第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２はいずれも“０”とする。また“１”の数が２つまたは３つであれば第１の桁上げ出力Ｃｏ１のみを“１”とし、第２の桁上げ出力Ｃｏ２を“０”とする。そして“１”の数が４つであれば、第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２をいずれも“１”とする。
【００９３】
一方、下位出力ＳＯは当該拡張型４入力２出力加算器１００自身の出力が１０進法でいう偶数か奇数かを決定するのであるから、４つの入力Ａ〜Ｄと第１および第２の桁上げ入力Ｃｉ１，Ｃｉ２における“１”の個数が偶数か奇数かで値が定まる。
【００９４】
また、上位出力ＣＯは第１及び第２の桁上げ入力Ｃｉ１，Ｃｉ２が共に“１”の場合には“１”である。また４つの入力のＡ〜Ｄにおける“１”の数が奇数のときには、第１および第２の桁上げ入力Ｃｉ１，Ｃｉ２のいずれかが“１”の場合にも“１”である。それ以外は“０”となる。
【００９５】
これらを纏めると、
【００９６】
【表４】
0003652447.tif 000011
【００９７】
が得られる。つまり表４は拡張型４入力２出力加算器１００が満足すべき入出力関係を例示する真理値表の第１の例である。表４の真理値表をブール式で表現すると、
【００９８】
【数７】
0003652447.tif 000012
【００９９】
となる。
【０１００】
図８は数７に基づいて構成された、拡張型４入力２出力加算器１００の構成の第１例を示す回路図である。ＮＡＮＤゲートＧ１には入力Ａ〜Ｄが与えられ、その出力はインバータＧ２に与えられ、インバータＧ２は第２の桁上げ出力Ｃｏ２を出力する。
【０１０１】
ＯＲゲートＧ３には入力Ａ，Ｂが与えられ、ＯＲゲートＧ４には入力Ｃ，Ｄが与えられ、ＯＲゲートＧ３，Ｇ４の出力はＮＡＮＤゲートＧ５に与えられる。ゲートＧ３〜Ｇ５は複合ゲートとして構成することができる。
【０１０２】
ＡＮＤゲートＧ７には入力Ａ，Ｂが与えられ、ＡＮＤゲートＧ８には入力Ｃ，Ｄが与えられ、ＡＮＤゲートＧ７，Ｇ８の出力はＮＯＲゲートＧ９に与えられる。ゲートＧ７〜Ｇ９は複合ゲートとして構成することができる。
【０１０３】
ＮＡＮＤゲートＧ５の出力とＮＯＲゲートＧ９の出力とはＮＡＮＤゲートＧ６に与えられ、ＮＡＮＤゲートＧ６は第１の桁上げ出力Ｃｏ１を出力する。
【０１０４】
ＸＯＲゲートＧ１７には入力Ａ，Ｂが与えられ、ＸＯＲゲートＧ１８には入力Ｃ，Ｄが与えられる。ＸＯＲゲートＧ１７，Ｇ１８の出力はＸＯＲゲートＧ１９に与えられる。第１及び第２の桁上げ入力Ｃｉ１，Ｃｉ２はＸＯＲゲートＧ２０に与えられ、ＸＯＲゲートＧ１９，Ｇ２０の出力はＸＯＲゲートＧ２１に与えられる。ＸＯＲゲートＧ２１は下位出力ＳＯを出力する。
【０１０５】
第１及び第２の桁上げ入力Ｃｉ１，Ｃｉ２はＮＡＮＤゲートＧ１０に与えられる。第１及び第２の桁上げ入力Ｃｉ１，Ｃｉ２はＮＯＲゲートＧ１１にも与えられ、その出力はインバータＧ１２に与えられる。ＮＡＮＤゲートＧ１０の出力はＸＯＲゲートＧ１９の出力と共にＮＯＲゲートＧ１３に与えられる。インバータＧ１２の出力はＸＯＲゲートＧ１９の出力と共にＡＮＤゲートＧ１４に与えられる。ＮＯＲゲートＧ１３の出力はＡＮＤゲートＧ１４の出力と共にＮＯＲゲートＧ１５に与えられ、ＮＯＲゲートＧ１５の出力はインバータＧ１６に与えられる。ゲートＧ１４，Ｇ１５は複合ゲートとして構成することができる。インバータＧ１６は上位出力ＣＯを出力する。
【０１０６】
第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２は、互いにその重みが等しいので、採る値を互いに入れ換えても良い。“１”の数が２つであれば第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２をそれぞれ“１”，“０”とし、３つであれば第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２をそれぞれ“０”，“１”とすることができる。
【０１０７】
かかる変更を表４に施して、
【０１０８】
【表５】
0003652447.tif 000013
【０１０９】
が得られる。つまり表５は拡張型４入力２出力加算器１００が満足すべき入出力関係を例示する真理値表の第２の例である。表５の真理値表をブール式で表現すると、
【０１１０】
【数８】
0003652447.tif 000014
【０１１１】
となる。
【０１１２】
図９は数８に基づいて構成された、拡張型４入力２出力加算器１００の構成の第２例を示す回路図である。ゲートＧ１７〜Ｇ２１を用いて下位出力ＳＯ、上位出力ＣＯを得る構造は図８に示された構成と同様である。
【０１１３】
ＯＲゲートＧ３１には入力Ａ，Ｂが与えられ、その出力は入力Ｃ，Ｄと共にＮＡＮＤゲートＧ３３に与えられる。ゲートＧ３１，Ｇ３３は複合ゲートとして構成することができる。ＯＲゲートＧ３２には入力Ｃ，Ｄが与えられ、その出力は入力Ａ，Ｂと共にＮＡＮＤゲートＧ３４に与えられる。ゲートＧ３２，Ｇ３４は複合ゲートとして構成することができる。ＮＡＮＤゲートＧ３３，Ｇ３４の出力は共にＮＡＮＤゲートＧ３５に与えられ、ＮＡＮＤゲートＧ３５は第２の桁上げ出力Ｃｏ２を出力する。
【０１１４】
ＮＡＮＤゲートＧ３６には入力Ａ，Ｂが与えられ、ＮＡＮＤゲートＧ３７には入力Ｃ，Ｄが与えられる。ＮＡＮＤゲートＧ３６の出力はＸＯＲゲートＧ１８の出力と共にＮＯＲゲートＧ３８に与えられる。ＮＡＮＤゲート３７の出力はＸＯＲゲートＧ１７の出力と共にＮＯＲゲートＧ３９に与えられる。ＡＮＤゲートＧ４０にはＸＯＲゲートＧ１７，Ｇ１８の出力が与えられる。ＮＯＲゲートＧ３８，Ｇ３９、ＡＮＤゲートＧ４０の出力はＮＯＲゲートＧ４１に与えられ、その出力はインバータＧ４２に与えられ、インバータＧ４２は第１の桁上げ出力Ｃｏ１を出力する。ゲートＧ４０，Ｇ４１は複合ゲートとして構成することができる。
【０１１５】
表４と表５とを比較して分かるように、これらが異なるのは第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２が入れ替わっている箇所が存在するのみである。つまり下位出力ＳＯと上位出力ＣＯに関しては異なっていない。下位出力ＳＯと上位出力ＣＯはいずれも第１及び第２の桁上げ入力の論理積、論理和、排他的論理和の関数であって第１及び第２の桁上げ入力Ｃｉ１とＣｉ２に関して可換である。
【０１１６】
そして
【０１１７】
【数９】
0003652447.tif 000015
【０１１８】
が成立する。
【０１１９】
つまり、図５に示された拡張型４入力２出力加算器１００の構成としては、図８及び図９に示されるものに限らず、以下のブール式を満たしさえすれば良い。つまり図５中の拡張型４入力２出力加算器１００が各々異なる構成を有していても良い。
【０１２０】
【数１０】
0003652447.tif 000016
【０１２１】
図８に示された回路や図９に示された回路のいずれの場合も、拡張型４入力２出力加算器１００のクリティカルパスはＧ１７（或いはＧ１８），Ｇ１９，Ｇ２１を通る経路ではない。第１及び第２桁上げ入力Ｃｉ１，Ｃｉ２は、ＸＯＲゲートＧ１７，Ｇ１８の出力が確定した後に確定するためである。
【０１２２】
第１及び第２桁上げ入力Ｃｉ１，Ｃｉ２は、その一つ低いビット位置からの第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２が用いられるので、これらが確定するのに必要な時間を見積もる必要がある。図８に示された回路及び図９に示された回路において、第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２を確定するのに必要なゲート段数はそれぞれ２段及び４段である（図８に示された回路においては図９に示された回路と比較して、第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２を得るのに必要なゲート段数は少なくて済む。）。既述のように一般的にはＸＯＲ１段の遅延が他の論理和ゲートの遅延の１段分よりも大きく、２段分程度であることを考慮すると、第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２を確定するのに必要な遅延時間はＸＯＲ２段分よりも少ない。
【０１２３】
下位出力のＳＯを得るためには第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２が確定してから更にＸＯＲゲートＧ２０，Ｇ２１の２段分の遅延時間が必要であり、これは結局ＸＯＲ３段分とＸＯＲ４段分の間となる。しかし拡張型４入力２出力加算器１００は４入力２出力加算器２００よりＸＯＲ１段分も遅れはしない。
【０１２４】
図１乃至図４に示された加算ブロックのうち、Tree回路の１段目に属するもの（拡張型４入力２出力加算ブロック１ａ、４入力２出力加算ブロック２ａ〜２ｃ）、２段目に属するもの（４入力２出力加算ブロック２ｄ，２ｅ）、３段目に属するもの（４入力２出力加算ブロック２ｆ）の順番に加算処理が行われる。従って、部分積の第１要素ｐｐ0 〜ｐｐ15及び第２要素ｐｃ0 〜ｐｃ15が確定してから、２つの最終中間和となる、４入力２出力加算ブロック２ｆの下位出力ｓｏ7 及び上位出力ｃｏ7 が確定するまでの遅延時間は、拡張型４入力２出力加算ブロック１段と、４入力２出力加算ブロック２段を経由するので、ＸＯＲゲートに換算して（３＋α）＋２×３＝９＋α（但し０＜α＜１）段分となる。
【０１２５】
つまり、遅延時間はＸＯＲ１０段分も必要ではなく、従来の技術に比べて高速化が図られている。しかも加算ブロックの数は７個で足りており、回路規模も抑制できるという効果がある。既述のように、本実施の形態では拡張型４入力２出力加算器１００を従来の４入力２出力加算器２００とビット毎に置換するのみで足りる。しかも加算ブロック全体が３５個の加算器で構成されるのに対して、わずか５個の加算器を置換するのみでよい。
【０１２６】
図８と図２７を比較すると、拡張型４入力２出力加算器１００と４入力２出力加算器２００の回路規模の比は１．５：１程度であるので、上記置換によって拡張型４入力２出力加算ブロック１ａが４入力２出力加算ブロック２２ａよりも回路規模が増大してもそれは乗算器全体からみれば無視できる程度である。
【０１２７】
拡張型４入力２出力加算ブロック１ａ以外は、全て従来の技術を用いて本実施の形態を構成することができる。図２乃至図４を用いて詳細に説明すると、４入力２出力加算ブロック２ａには部分積Ｐ4 の第１要素ｐｐ4 ＜４０：８＞のうち第１０ビット目〜第４０ビット目と、部分積Ｐ5 の第１要素ｐｐ5 ＜４２：１０＞の全てと、部分積Ｐ5 の第２要素ｐｃ5 と、部分積Ｐ6 の第１要素ｐｐ6 ＜４４：１２＞の全てと、部分積Ｐ6 の第２要素ｐｃ6 と、部分積Ｐ7 の第１要素ｐｐ7 ＜４６：１４＞のうち第１４ビット目〜第４４ビット目とが、ビット位置を整合させて与えられる。
【０１２８】
部分積Ｐ5 の第２要素ｐｃ5 と、部分積Ｐ6 の第２要素ｐｃ6 とは、部分積Ｐ7 の第１要素ｐｐ7 の疑似的な下位として扱われる。
【０１２９】
部分積Ｐ4 の第１要素ｐｐ4 の第８ビット目及び第９ビット目は、これらが占めるビット位置には４入力２出力加算ブロック２ａが対応しないので、４入力２出力加算ブロック２ａの上位出力ｃｏ2 ＜４５：１１＞の疑似的な下位として扱われ、４入力２出力加算ブロック２ｄへと送られる。
【０１３０】
第２要素ｐｃ4 は、これが占めるビット位置には４入力２出力加算ブロック２ａが対応しないので、４入力２出力加算ブロック２ｄに送られる。
【０１３１】
部分積Ｐ7 の第１要素ｐｐ7 の第４５ビット目は、これが占めるビット位置には４入力２出力加算ブロック２ａが対応しないので、４入力２出力加算ブロック２ａの下位出力ｓｏ2 ＜４４：１０＞の疑似的な上位として扱われ、４入力２出力加算ブロック２ｄへと送られる。第１要素ｐｐ7 の第４６ビット目は、これが占めるビット位置には４入力２出力加算ブロック２ａ，２ｄのいずれもが対応しないので、４入力２出力加算ブロック２ｄの下位出力ｓｏ5 ＜４５：６＞の疑似的な上位として扱われ、４入力２出力加算ブロック２ｆへと送られる。
【０１３２】
部分積Ｐ7 の第２要素ｐｃ7 は、これが占めるビット位置にデータが既に４つ存在するので、拡張型４入力２出力加算ブロック２ａにおいて加算されはしない。これは４入力２出力加算ブロック２ｆへと送られる。
【０１３３】
４入力２出力加算ブロック２ｆは全て第１４ビット目以上に配置される。よって、４入力２出力加算ブロック２ｄの下位出力ｓｏ5 の第６ビット目〜第１３ビット目はその疑似的な下位として扱われる下位出力ｓｏ1 の第２ビット目〜第５ビット目と、第１要素ｐｐ0 の第０ビット及び第１ビットと同様に、４入力２出力加算ブロック２ｆの下位出力ｓｏ7 ＜６２：１４＞の疑似的な下位として扱われ、最終加算の対象となる。
【０１３４】
同様にして、４入力２出力加算ブロック２ｄの上位出力ｃｏ5 の第７ビット目〜第１３ビット目はその疑似的な下位として扱われる上位出力ｃｏ1 の第３ビット目〜第５ビット目と、第２要素ｐｃ0 と同様に、４入力２出力加算ブロック２ｆの上位出力ｃｏ7 ＜６３：１５＞の疑似的な下位として扱われ、最終加算の対象となる。
【０１３５】
４入力２出力加算ブロック２ｂには部分積Ｐ8 の第１要素ｐｐ8 ＜４８：１６＞のうち第１８ビット目〜第４８ビット目と、部分積Ｐ9 の第１要素ｐｐ9 ＜５０：１８＞の全てと、部分積Ｐ9 の第２要素ｐｃ9 と、部分積Ｐ10の第１要素ｐｐ10＜５２：２０＞の全てと、部分積Ｐ10の第２要素ｐｃ10と、部分積Ｐ11の第１要素ｐｐ11＜５４：２２＞のうち第２２ビット目〜第５２ビット目とが、ビット位置を整合させて与えられる。
【０１３６】
部分積Ｐ9 の第２要素ｐｃ9 と、部分積Ｐ10の第２要素ｐｃ10とは、部分積Ｐ11の第１要素ｐｐ11の疑似的な下位として扱われる。
【０１３７】
部分積Ｐ8 の第１要素ｐｐ8 の第１６ビット目と第１７ビット目は、これらが占めるビット位置には４入力２出力加算ブロック２ｂが対応しないので、４入力２出力加算ブロック２ｂの上位出力ｃｏ３ ＜５３：１９＞の疑似的な下位として扱われる。
【０１３８】
第２要素ｐｃ8 は、これが占めるビット位置には４入力２出力加算ブロック２ｂが対応しないので、４入力２出力加算ブロック２ｆに送られる。
【０１３９】
部分積Ｐ11の第１要素ｐｐ11の第５３ビット目及び第５４ビット目は、これらが占めるビット位置には４入力２出力加算ブロック２ｂが対応しないので、４入力２出力加算ブロック２ｂの下位出力ｓｏ3 ＜５２：１８＞の疑似的な上位として扱われ、４入力２出力加算ブロック２ｅへと送られる。
【０１４０】
部分積Ｐ11の第２要素ｐｃ11は、これが占めるビット位置にデータが既に４つ存在するので、拡張型４入力２出力加算ブロック２ｂにおいて加算されはしない。これは４入力２出力加算ブロック２ｅへと送られる。
【０１４１】
４入力２出力加算ブロック２ｅは全て第２２ビット目以上に配置される。よって、４入力２出力加算ブロック２ｂの下位出力ｓｏ3 の第１８ビット目〜第２１ビット目は４入力２出力加算ブロック２ｅの下位出力ｓｏ6 ＜６１：２２＞の疑似的な下位として扱われ、４入力２出力加算ブロック２ｆに送られる。
【０１４２】
同様にして、４入力２出力加算ブロック２ｂの上位出力ｃｏ3 の第１９ビット目〜第２１ビット目はその疑似的な下位として扱われる第１要素ｐｐ8 の第１６ビット目及び第１７ビット目と共に、４入力２出力加算ブロック２ｅの上位出力ｃｏ6 ＜６２：２３＞の疑似的な下位として扱われ、４入力２出力加算ブロック２ｆに送られる。
【０１４３】
４入力２出力加算ブロック２ｃには部分積Ｐ12の第１要素ｐｐ12＜５６：２４＞のうち第２６ビット目〜第５６ビット目と、部分積Ｐ13の第１要素ｐｐ13＜５８：２６＞の全てと、部分積Ｐ13の第２要素ｐｃ13と、部分積Ｐ14の第１要素ｐｐ14＜６０：２８＞の全てと、部分積Ｐ14の第２要素ｐｃ14と、部分積Ｐ15の第１要素ｐｐ15＜６２：３０＞のうち第３０ビット目〜第６０ビット目とが、ビット位置を整合させて与えられる。
【０１４４】
部分積Ｐ13の第２要素ｐｃ13と、部分積Ｐ14の第２要素ｐｃ14とは、部分積Ｐ15の第１要素ｐｐ15の疑似的な下位として扱われる。
【０１４５】
部分積Ｐ12の第１要素ｐｐ12の第２４ビット目と第２５ビット目は、これらが占めるビット位置には４入力２出力加算ブロック２ｃが対応しないので、４入力２出力加算ブロック２ｃの上位出力ｃｏ4 ＜６１：２７＞の疑似的な下位として扱われる。
【０１４６】
第２要素ｐｃ12は、これが占めるビット位置には４入力２出力加算ブロック２ｃが対応しないので、そのまま４入力２出力加算ブロック２ｅに送られる。
【０１４７】
部分積Ｐ15の第１要素ｐｐ15の第６１ビット目は、これが占めるビット位置には４入力２出力加算ブロック２ｃが対応しないので、４入力２出力加算ブロック２ｃの下位出力ｓｏ4 ＜６０：２６＞の疑似的な上位として扱われ、４入力２出力加算ブロック２ｅへと送られる。また部分積Ｐ15の第１要素ｐｐ15の第６２ビット目は、これが占めるビット位置には４入力２出力加算ブロック２ｃが対応しないので、４入力２出力加算ブロック２ｅの下位出力ｓｏ6 ＜６１：２２＞の疑似的な上位として扱われ、４入力２出力加算ブロック２ｆへと送られる。
【０１４８】
４入力２出力加算ブロック２ｆは４入力２出力加算ブロック２ｅの上位出力ｃｏ6 、下位出力ｓｏ6 の全てと、４入力２出力加算ブロック２ｄの上位出力ｃｏ5 、下位出力ｓｏ5 のうちの第１４ビット目以上の部分と、４入力２出力加算ブロック２ｂの上位出力ｃｏ3 、下位出力ｓｏ3 のうちの第２１ビット目以下の部分と、第２要素ｐｃ7 ，ｐｃ8 との加算を行う。かかる加算において、同一ビット位置においてその入力数が４以下であることは図から明白である。
【０１４９】
以上の様にビット位置を揃えて演算するのであるから、遅延時間の面のみから考えると第２要素ｐｃ15はそのビット位置（第３０ビット目）さえ同じであれば、第２要素ｐｃ15を入力する加算ブロックは７つの加算ブロックのうちどこでも良い。例えば拡張型４入力２出力加算ブロック１ａを４入力２出力加算ブロックにして、４入力２出力加算ブロック２ａを拡張型４入力２出力加算ブロックにすることもできる。
【０１５０】
しかし、既述のように、拡張型４入力２出力加算ブロックにおいて配置されるべき拡張型４入力２出力加算器の個数（ビット幅）が増加するため、回路規模は増加するという短所が無視できなくなる。
【０１５１】
よって拡張型４入力２出力加算ブロックを構成する際の拡張型４入力２出力加算器のビット幅の最小値は、第２要素ｐｃ15のビット位置（ここでは第３０ビット目）（第１の原則）と、複数ビット幅の４つの入力データのうちの最上位ビットが最も小さいもの（ここではｐｐ0 ）の最上位ビットの位置（ここでは第３２ビット目）と（第２の原則）、「１加算法」で必要なビット数（ここでは２。これはブースアルゴリズムの次数に依存する。第１及び第２の原則に対する補正）で決まる。
【０１５２】
換言すれば、最も面積効率良く本実施の形態を実現するには、２次のブースアルゴリズムによって生成される第２要素ｐｃj のうち最も上位のビット位置のものを、第１要素ｐｐj のうち最上位ビットの位置が最も小さいものと、同一の拡張型４入力２出力加算ブロックに入力すれば良い。
【０１５３】
実施の形態２．
数１０から分かるように、拡張型４入力２出力加算器１００間で伝達される第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２はそれら自身の値に桁上げの意味を持たせる必要はない。第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２の論理積、論理和、排他的論理和（或いはその反転）が拡張型４入力２出力加算器１００間で伝達されればよい。
【０１５４】
このことに鑑みれば、拡張型４入力２出力加算器はもっと簡単な構成で実現することができる。具体的には第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２の代わりに新たな第１及び第２の疑似桁上げ出力Ｃｏａ，Ｃｏｂを導入する。そしてこれらはその隣接する上位の拡張型４入力２出力加算器の第１及び第２の疑似桁上げ出力Ｃｉａ，Ｃｉｂとして機能する。例えば
【０１５５】
【数１１】
0003652447.tif 000017
【０１５６】
として第１及び第２の疑似桁上げ出力Ｃｏａ，Ｃｏｂを設定すれば
【０１５７】
【数１２】
0003652447.tif 000018
【０１５８】
が成立する。よって第１及び第２の疑似桁上げ出力Ｃｏａ，Ｃｏｂ、第１及び第２の疑似桁上げ出力Ｃｉａ，Ｃｉｂを用いて数１０を書き換えれば
【０１５９】
【数１３】
0003652447.tif 000019
【０１６０】
となる。
【０１６１】
拡張型４入力２出力加算器同士の間ではかかる疑似的な桁上げを行えば足りる。表６は拡張型４入力２出力加算器が満足すべき入出力関係を例示する真理値表の例である。
【０１６２】
【表６】
0003652447.tif 000020
【０１６３】
図１０は表６の関係を満足する拡張型４入力２出力加算器１１１の構成を例示する回路図である。数１３を数７と比較すれば分かるように、第１の疑似桁上げ出力Ｃｏａは第１の桁上げ出力Ｃｏ１と等しく、第２の疑似桁上げ出力Ｃｏｂは第２の桁上げ出力Ｃｏ２の反転に等しい。従って、第１及び第２の疑似桁上げ出力Ｃｏａ，Ｃｏｂは図８に示されたゲートＧ１〜Ｇ９からインバータＧ２を省いた構造で求めることができる。
【０１６４】
拡張型４入力２出力加算器１１１の桁上げは疑似的であっても、上位出力ＣＯ及び下位出力ＳＯを出力する。ＸＯＲゲートＧ１７には入力Ａ，Ｂが与えられ、ＸＯＲゲートＧ１８には入力Ｃ，Ｄが与えられる。ＸＯＲゲートＧ１７，Ｇ１８の出力はＸＯＲゲートＧ１９に与えられる。第１及び第２の疑似桁上げ入力Ｃｉａ，ＣｉｂはＮＡＮＤゲートＧ５１に与えられる。
【０１６５】
ＸＮＯＲゲートＧ５２の入力として、ＮＡＮＤゲートＧ５１の出力とＸＯＲゲートＧ１９の出力が与えられる。ＸＮＯＲゲートＧ５２は下位出力ＳＯを出力する。
【０１６６】
第２の疑似桁上げ入力ＣｉｂはＸＯＲゲートＧ１９の出力と共にＮＯＲゲートＧ１３に与えられる。第１の疑似桁上げ入力ＣｉａはＸＯＲゲートＧ１９の出力と共にＡＮＤゲートＧ１４に与えられる。ＮＯＲゲートＧ１３の出力はＡＮＤゲートＧ１４の出力と共にＮＯＲゲートＧ１５に与えられ、ＮＯＲゲートＧ１５の出力はインバータＧ１６に与えられる。ゲートＧ１４，Ｇ１５は複合ゲートとして構成することができる。インバータＧ１６は上位出力ＣＯを出力する。
【０１６７】
このように構成された拡張型４入力２出力加算器１１１は、その有するゲート数が図８に示された拡張型４入力２出力加算器１００の有するゲート数よりも４つ少なく、より簡単な構造で実現できる。
【０１６８】
但し、拡張型４入力２出力加算器１１１のみを直列に接続したのみでは、第２要素ｐｃjのうち最も上位のもの（図１乃至図４に即してみればｐｃ15）と、これが対応するビット位置よりも一つ下位のビット位置（図１乃至図４に即してみれば第２９ビット目）に配置された（通常の）４入力２出力加算器２００からの桁上げ出力Ｃｏとを正しく処理することができない。逆に、拡張型４入力２出力加算器１１１の第１及び第２の疑似桁上げ出力Ｃｏａ，Ｃｏｂは、（通常の）４入力２出力加算器２００の桁上げ入力ＣｉやＤ入力として用いることができない。
【０１６９】
従って、拡張型４入力２出力加算器１１１が直列に接続されたものの上位側・下位側には、それぞれ（通常の）４入力２出力加算器２００との整合を採るための別の拡張型４入力２出力加算器が必要となる。
【０１７０】
図１１は拡張型４入力２出力加算ブロック１ａの構成の一部を示すブロック図であり、図５に対応している。図１１は図６及び図７と相まって拡張型４入力２出力加算ブロック１ａの構成を示す。換言すれば、本実施の形態にかかるTree回路は図１に示されたものと同様の構成を示しており、拡張型４入力２出力加算ブロック１ａはその構成のうち図５で示された部分の構成を図１１で示された部分の構成に置換したものである。
【０１７１】
図１１に示された構成は、図５に示された構成のうち、拡張型４入力２出力加算器１００を拡張型４入力２出力加算器１１０〜１１２で置換した構成を有している。詳細に言えば、第３０ビット目には拡張型４入力２出力加算器１１０が、第３１ビット目〜第３３ビット目には拡張型４入力２出力加算器１１１が、第３３ビット目には拡張型４入力２出力加算器１１２が、それぞれ拡張型４入力２出力加算器１００に代わって配置されている。
【０１７２】
拡張型４入力２出力加算器１１０のＥ入力にはｐｃ15が入力され、桁上げ入力Ｃｉとして第２９ビット目の４入力２出力加算器２００の桁上げ出力Ｃｏが与えられる。
【０１７３】
第３５ビット目を占める部分積はｐｐ2 ，ｐｐ3 の２つであり、更に「１加算法」によって加算すべき“１”が存在するので、この位置にある４入力２出力加算器２００のＤ入力が余っている。そこでこのＤ入力へと拡張型４入力２出力加算器１１２の第１の桁上げ出力Ｃｏ１が与えられ、第２の桁上げ出力Ｃｏ２は同じ４入力２出力加算器２００の桁上げ入力Ｃｉとして入力される。
【０１７４】
勿論、拡張型４入力２出力加算器１１０のＥ入力に桁上げ出力Ｃｏを、桁上げ入力Ｃｉとして第２要素ｐｃ15を各々入力してもよい。また拡張型４入力２出力加算器１１２の第２の桁上げ出力Ｃｏ２を第３５ビット目の４入力２出力加算器２００のＤ入力として与え、拡張型４入力２出力加算器１１２の第１の桁上げ出力Ｃｏ１を第３５ビット目の４入力２出力加算器２００の桁上げ入力Ｃｉとして与えてもよい。但し、拡張型４入力２出力加算器１１０〜１１２の間の接続を入れ換えることはできない。
【０１７５】
このようにして配置された拡張型４入力２出力加算器１１０〜１１２が図５に示された拡張型４入力２出力加算器１００と同一機能をもつためには、拡張型４入力２出力加算器１１０が入力Ａ〜Ｄ及び桁上げ入力Ｃｉ並びにＥ入力から第１及び第２の疑似桁上げ出力Ｃｏａ，Ｃｏｂを出力し、拡張型４入力２出力加算器１１２が入力Ａ〜Ｄ及び第１及び第２の疑似桁上げ入力Ｃｉａ，Ｃｉｂから第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２を出力すればよい。
【０１７６】
表７は、拡張型４入力２出力加算器１１０の機能を示す真理値表であり、数１４は表７を満足するブール式であり、図１２は表７、数１４を満足する拡張型４入力２出力加算器１１０の構成を例示する回路図である。
【０１７７】
【表７】
0003652447.tif 000021
【０１７８】
【数１４】
0003652447.tif 000022
【０１７９】
既述のように第１及び第２の疑似桁上げ出力Ｃｏａ，Ｃｏｂは図８に示されたゲートＧ１〜Ｇ９からインバータＧ２を省いた構造で求めることができる。また、Ｅ入力も桁上げ入力Ｃｉも、実施の形態１で示された第１及び第２の桁上げ入力Ｃｉ１，Ｃｉ２と同じ信号の意味を有している。このため上位出力ＣＯ、下位出力ＳＯは図８に示されたゲートＧ１０〜Ｇ２１を用いて得ることができる。従って、拡張型４入力２出力加算器１１０も拡張型４入力２出力加算器１００よりも少ないゲート数で実現することができる。
【０１８０】
表８は、拡張型４入力２出力加算器１１２の機能を示す真理値表であり、数１５は表８を満足するブール式であり、図１３は表８、数１５を満足する拡張型４入力２出力加算器１１２の構成を例示する回路図である。
【０１８１】
【表８】
0003652447.tif 000023
【０１８２】
【数１５】
0003652447.tif 000024
【０１８３】
拡張型４入力２出力加算器１１２は第１及び第２の桁上げ出力Ｃｏ１，Ｃｏ２を出力する必要があるので、図８と同様に接続されたゲートＧ１〜Ｇ９を必要とする。また上位出力ＣＯ、下位出力ＳＯは拡張型４入力２出力加算器１１１と同様にゲートＧ１３〜Ｇ１９，Ｇ４１，Ｇ４２で求めることができる。従って、拡張型４入力２出力加算器１１０も拡張型４入力２出力加算器１００よりも少ないゲート数で実現することができる。
【０１８４】
本実施の形態では拡張型４入力２出力加算器の間を伝搬する論理を最適化することにより、上記の様に回路規模を削減しているが、実施の形態１の場合より遅延時間も短縮されている。
【０１８５】
図１０、図１２、図１３を参照して分かるように、本実施の形態による拡張型４入力２出力加算器１１０〜１１２において、自身よりも一つ下位のビット位置の拡張型４入力２出力加算器における入力Ａ〜Ｄの値が確定してから、自身の下位出力ＳＯが確定するまでに必要な遅延時間は、実施の形態１に示された拡張型４入力２出力加算器１００におけるそれよりも短縮される。これは実施の形態１においてＸＯＲゲートＧ２０が必要であったのに対し、本実施の形態においてはＸＯＲゲートよりも遅延時間が短いＮＡＮＤゲートＧ５１を備えれば良いためである。従って、本実施の形態によれば拡張型４入力２出力加算ブロック１ａにおける遅延時間はほぼＸＯＲ３段分と見積もることができる。
【０１８６】
本実施の形態を用いてTree回路を構成した場合、その１段目に属するもの（拡張型４入力２出力加算ブロック１ａ、４入力２出力加算ブロック２ａ〜２ｃ）、２段目に属するもの（４入力２出力加算ブロック２ｄ，２ｅ）、３段目に属するもの（４入力２出力加算ブロック２ｆ）の順番に加算処理が行われる。従って、部分積の第１要素ｐｐ0 〜ｐｐ15及び第２要素ｐｃ0 〜ｐｃ15が確定してから、２つの最終中間和となる、４入力２出力加算ブロック２ｆの下位出力ｓｏ7 及び上位出力ｃｏ7 が確定するまでの遅延時間は、拡張型４入力２出力加算ブロック１段と、４入力２出力加算ブロック２段を経由するので、ＸＯＲゲートに換算して３＋２×３＝９段分となる。これは実施の形態１で実現された（９＋α）段分（０＜α＜１）よりも短い。
【０１８７】
実施の形態３．
図１４は本発明の実施の形態３にかかる乗算器の構成の一部を示すブロック図である。乗数、被乗数は共に２４ビットで符号付き２の補数表現され、２次のブースのアルゴリズムを用いて１２個の部分積Ｐ0 〜Ｐ11が得られる。ここではこれらの部分積を生成する部分は示さず、部分積を加算する際に、中間和の数を順次段階的に減少させ、最終的に２つの最終中間和を生成するTree回路の概略を示している。従来技術において説明されたように数５に基づいて、部分積Ｐj は２５ビット幅の第１要素ｐｐj と、１ビット幅の第２要素ｐｃj と、これらの最下位ビットの位置を示す２ｊとによって決定される。
【０１８８】
実施の形態３において示されたTree回路は、複数ビット幅の３つの入力データと１ビットの入力データとを同時に加算する回路ブロック（以降「拡張型３入力２出力加算ブロック」と称する）１３ａと、３入力２出力加算ブロック１４ａ〜１４ｃと、４入力２出力加算器ブロック１２ａ〜１２ｃとから構成されている。
【０１８９】
拡張型３入力２出力加算ブロック１３ａは、部分積の第２要素ｐｃ11と、部分積の第１要素ｐｐ0 〜ｐｐ2 を入力し、中間和として上位出力ｃｏ11及び下位出力ｓｏ11を出力する。３入力２出力加算ブロック１４ａは部分積の第１要素ｐｐ3 〜ｐｐ5 を入力し、中間和として上位出力ｃｏ12及び下位出力ｓｏ12を出力する。３入力２出力加算ブロック１４ｂは部分積の第１要素ｐｐ6 〜ｐｐ8 を入力し、中間和として上位出力ｃｏ13及び下位出力ｓｏ13を出力する。３入力２出力加算ブロック１４ｃは部分積の第１要素ｐｐ9 〜ｐｐ11を入力し、中間和として上位出力ｃｏ14及び下位出力ｓｏ14を出力する。
【０１９０】
４入力２出力加算ブロック１２ａは上位出力ｃｏ11，ｃｏ12及び下位出力ｓｏ11，ｓｏ12を入力し、中間和として上位出力ｃｏ15及び下位出力ｓｏ15を出力する。４入力２出力加算ブロック１２ｂは上位出力ｃｏ13，ｃｏ14及び下位出力ｓｏ13，ｓｏ14を入力し、中間和として上位出力ｃｏ16及び下位出力ｓｏ16を出力する。４入力２出力加算ブロック１２ｃは上位出力ｃｏ15，ｃｏ16及び下位出力ｓｏ15，ｓｏ16を入力し、最終中間和として上位出力ｃｏ17及び下位出力ｓｏ17を出力する。下位出力ｓｏ17と上位出力ｃｏ17とは、図示しない最終加算ブロックによって最終加算されて乗算結果が得られる。
【０１９１】
図１５及び図１６は両者相まって拡張型３入力２出力加算ブロック１３ａの構成を例示するブロック図である。図１５及び図１６は仮想線Ｑ15Ｑ15において連続する。
【０１９２】
拡張型３入力２出力加算ブロック１３ａは２６ビットの加算を並列して行うため、１ビットの拡張型３入力２出力加算器３００が第２２ビット目〜第２６ビット目において５個配置され、１ビットの３入力２出力加算器４００が第２ビット目〜第２１ビット目において２０個、第２７ビット目において１個配置されている。
【０１９３】
３つの１ビット入力Ａ，Ｂ，Ｃの総和は高々１０進数でいう３迄であり、これは２つの１ビット出力ＳＯ，ＣＯで表すことができる。従って、第２１ビット目以下においてはビット間を伝搬する桁上げが生じないので、３入力２出力加算器４００同士の接続は不要となっている。
【０１９４】
第２２ビット目の拡張型３入力２出力加算器３００の桁上げ入力Ｃｉには部分積Ｐ11の第２要素ｐｃ11が入力されている。桁上げ入力Ｃｉも、この第２２ビット目というビット位置の重みを持つという点では３つの第１要素ｐｐ0 ＜２２＞，ｐｐ1 ＜２２＞，ｐｐ2 ＜２２＞と同格であり、既述した第１の原則に従ったものである。
【０１９５】
第１及び第２の原則に対する補正として「１加算法」を施すので、第２４ビット目及び第２５ビット目の拡張型３入力２出力加算器３００のＣ入力に第１要素ｐｐ0 ＜２４＞の論理反転が与えられ、第２６ビット目の拡張型３入力２出力加算器３００のＣ入力には第１要素ｐｐ0 ＜２４＞が与えられる。この故に１ビットの拡張型３入力２出力加算器３００は第２６ビット目まで必要となる。そして第２２ビット目乃至第２６ビット目のそれぞれにおいて、拡張型３入力２出力加算器３００の桁上げ出力Ｃｏは上位ビットの桁上げ入力Ｃｉとして与えられる。
【０１９６】
第２７ビット目では部分積の数が減少するため、第１要素ｐｐ2 ＜２７＞と、「１加算法」を施すための“１”とがそれぞれ入力Ａ，Ｂとして与えられる他、入力Ｃには第２６ビット目の拡張型３入力２出力加算器３００の桁上げ出力Ｃｏが与えられる。
【０１９７】
さて、上記の拡張型３入力２出力加算器３００は以下のようにして実現することができる。拡張型３入力２出力加算器３００は実は４つの１ビットデータを入力し、その位置するビットに対応した下位出力ＳＯ１つと、その位置するビットよりも１つ重みの高いビットに対応した２つの出力、即ち桁上げ出力Ｃｏ並びに上位出力ＣＯを得る。つまり、
【０１９８】
【数１６】
0003652447.tif 000025
【０１９９】
が成立する。
【０２００】
一方、下位出力ＳＯは当該拡張型３入力２出力加算器３００自身が与える出力が１０進法でいう偶数か奇数かを決定するのであるから、３つの入力Ａ〜Ｃと桁上げ入力Ｃｉにおける“１”の個数が偶数か奇数かで値が決まる。従って、拡張型３入力２出力加算器３００が満足すべき真理値表として
【０２０１】
【表９】
0003652447.tif 000026
【０２０２】
が得られる。
【０２０３】
３つの入力Ａ，Ｂ，Ｃのうち“１”の数が２のときには、桁上げ出力Ｃｏと上位出力ＣＯの値は、どちらかが１でどちらかが０であれば良いので、機能としては２3 ＝８通り表現されている。表９の真理値表から、下位出力ＳＯの論理はブール式で表現すると、
【０２０４】
【数１７】
0003652447.tif 000027
【０２０５】
となる。
【０２０６】
表１０は、拡張型３入力２出力加算器３００が満足すべき機能の一つを例示する真理値表である。
【０２０７】
【表１０】
0003652447.tif 000028
【０２０８】
表１０の真理値表をブール式で表現すると、
【０２０９】
【数１８】
0003652447.tif 000029
【０２１０】
となる。
【０２１１】
また図１７は表１０の機能を満たす回路の一例を示す回路図である。ここで示された回路は回路規模を削減するため、および動作の高速化のために、桁上げ入力Ｃｉと桁上げ出力Ｃｏの論理はいずれも反転させている。
【０２１２】
ＯＲゲートＧ６１は入力Ａ，Ｂを受け、ＡＮＤゲートＧ６２はＯＲゲートＧ６１の出力と入力Ｃとを受ける。ＡＮＤゲートＧ６３は入力Ａ，Ｂを受け、ＮＯＲゲートＧ６４はＡＮＤゲートＧ６２，Ｇ６３の出力を受け、桁上げ出力Ｃｏの反転を出力する。ゲートＧ６１〜Ｇ６４は複合ゲートで構成することができる。
【０２１３】
ＸＯＲゲートＧ６５は入力Ａ，Ｂを受け、ＸＮＯＲゲートＧ６７はＸＯＲゲートＧ６５の出力と入力Ｃとを受ける。ＮＯＲゲートＧ６８はＸＮＯＲゲートＧ６７の出力と桁上げ入力Ｃｉの反転とを受けて、上位出力ＣＯを出力する。
【０２１４】
ＸＮＯＲゲートＧ６６は入力Ｃと桁上げ入力Ｃｉの反転とを受ける。ＸＯＲゲートＧ６９はＸＮＯＲゲートＧ６６の出力とＸＯＲゲートＧ６５の出力とを受けて下位出力ＳＯを出力する。
【０２１５】
拡張型３入力２出力加算器３００のクリティカルパスは隣接する下位ビットのＡ，Ｂ，Ｃ入力からそれぞれ自身の上位出力ＣＯまでであり、遅延時間はＸＯＲ２段分とＸＯＲ３段分の間である。
【０２１６】
図１４に示されたTree回路の１段目に属するもの（拡張型３入力２出力加算ブロック１３ａ、３入力２出力加算ブロック１４ａ〜１４ｃ）、２段目に属するもの（４入力２出力加算ブロック１２ａ，１２ｂ）、３段目に属するもの（４入力２出力加算ブロック１２ｃ）の順番に加算処理が行われる。従って、部分積の第１要素ｐｐ0 〜ｐｐ11及び第２要素ｐｃ0 〜ｐｃ11が確定してから、２つの最終中間和となる、４入力２出力加算ブロック１２ｃの下位出力ｓｏ17及び上位出力ｃｏ17が確定するまでの遅延時間は、拡張型３入力２出力加算ブロック１段と、４入力２出力加算ブロック２段を経由するので、ＸＯＲゲートに換算して（２＋α）＋２×３＝８＋α（但し０＜α＜１）段分となる。つまりＸＯＲ８段とＸＯＲ９段の間であり、従来の技術に比べて高速化が図られている。
【０２１７】
実施の形態３においても、実施の形態１の場合と同様に、２次のブースアルゴリズムによって生成される第２要素ｐｃj のうち最も上位のビット位置のものを、第１要素ｐｐj のうち最上位ビットの位置が最も小さいものと、同一の拡張型３入力２出力加算器に入力した場合が、回路規模としては最小になる。
【０２１８】
補足的説明．
実施の形態１乃至実施の形態３においては、本発明を２次のブースのアルゴリズムを用いた３２×３２乗算器と２４×２４乗算器を具体例に採って説明してきたが、ここでは更に一般化した態様を説明する。
【０２１９】
乗算器の２つの入力のうち、２次のブースのアルゴリズムのエンコードの対象となる方を乗数とし、他方を被乗数とする。乗数のビット幅が２ｎもしくは２ｎ−１（ｎは２以上の整数）の場合、部分積はｎ個生成される。各部分積をＰj （ｊ＝０〜ｎ−１）とすると、ビット幅が「被乗数のビット幅＋１」の第１要素ｐｐj と、部分積が負の場合に部分積の最下位桁に加算する１ビットの第２要素ｐｃj とを導入すると、数３が成立する。
【０２２０】
従来の技術において説明したように、（通常の）４入力２出力加算ブロックと（通常の）３入力２出力加算ブロックを用いて、ｎ個の部分積を足し合わせて２つの最終中間和を出力するTree回路を構成する場合には、（ｎ−１）個の第２要素ｐｃj（ｊ＝０〜ｎ−２）は加算ブロックの空いている端子に入力することができるが、第２要素ｐｃ(n-1)に対応する空き端子がない。この故に、第２要素ｐｃ(n-1)だけを単独に加算するか（例えば図１８）、全ての第２要素ｐｃj（ｊ＝０〜ｎ−１）をまとめて加算の対象にするか（例えば図２８）していた。すなわち、Tree回路の入力データの数としては（ｎ＋１）個の扱いをしていた。
【０２２１】
４入力２出力加算ブロックと３入力２出力加算ブロックを用いて構成するTree回路の入力データの数が２k・３h（ｋ＝０，１，２，…、ｈ＝０，１，２，…）の場合のみ、Tree回路は「密」に構成できる（ここで「密」であるとは、同一段の各加算ブロックの入力データの到達時刻が揃っており、回路動作の並列度を最高の状態にすることができることを指す）。理由を以下に示す。
【０２２２】
Tree回路を構成する加算ブロックの出力は２つであるため、「密」なTree回路の最終段は必ず４入力２出力加算ブロックである。そしてその前段は４入力２出力加算ブロックが２個であるか、３入力２出力加算ブロックが２個であるかのいずれかである。換言すれば最終段の加算ブロックの前段の加算ブロックの入力の数は８か６かのいずれかである。このように最終段から逆に追っていくと、「密」なTree回路の入力データの数は２k ３h である必要があることがわかる。
【０２２３】
部分積の数ｎが２k ・３h で表される場合には、入力データの数（ｎ＋１）は２k ・３h で表されず、従来の技術であれば「密」なTree回路が構成できなかった。
【０２２４】
しかし本発明によると、拡張型４入力２出力加算ブロック、或いは拡張型３入力２出力加算ブロックを１つ用いることで、（通常の）４入力２出力加算ブロックや（通常の）３入力２出力加算ブロックと比較して見かけ上１つ空き端子が増加し、従ってTree回路において、同一段の加算ブロックに入力する全ての入力データの到達時刻を揃えることができる。つまり「密」なTree回路を構成でき、遅延時間の改善ができる。
【０２２５】
勿論、部分積の数ｎが２k ・３h で表されない場合には、その部分積の数ｎの固有の性質上、「密」なTree回路を構成し得ないため、（ｎ＋１）入力のTree回路を本発明に基づいて構成しても遅延時間の減少は図れない。
【０２２６】
以上のように、乗数（２次のブースのアルゴリズムのエンコードの対象となる入力）のビット幅が２・２k ・３h 、もしくは２・２k ・３h −１である場合に、本発明による拡張型４入力２出力加算ブロックないし拡張型３入力２出力加算ブロックを用いて、２次のブースのアルゴリズムを用いた乗算器の複数の部分積を足し合わせて２つの最終中間和を出力するTree回路を構成すれば、Tree回路を構成する同一段の各加算ブロックの入力データの到達時刻を揃え、Tree回路のクリティカルパスの論理段数を削減することができ、回路動作の並列度が向上し、乗算器の高速化を図ることが可能である。
【０２２７】
特に、第２要素ｐｃj のうち最も上位のビット位置のものを、第１要素ｐｐj のうち最上位ビットの位置が最も小さいものと、同一の拡張型４入力２出力加算ブロックないし拡張型３入力２出力加算ブロックに入力することにより、面積効率が最も良くなる。
【０２２８】
【発明の効果】
この発明のうち請求項１にかかるツリー回路によれば、拡張型加算ブロックにおいて、通常型加算ブロックの入力よりも、１ビットだけ多く入力する。よってこのツリー回路は、その数が２つにまで逓減された中間和と、この１ビットとを加えて最終中間和を得る為の加算ブロックを別途に必要としない。
【０２２９】
そして拡張型加算ブロックをツリー回路の初段に配置するので、ツリー回路の第２段目（初段から求められた中間和同士を更に加算する段階）にはタイミングが整合して中間和が与えられる。従って回路構成を大きくすることなく、中間和を求めるタイミングを整合させることで処理速度を向上させることができる。
【０２３０】
拡張型加算ブロックに入力される第２要素のビット位置を含んだ上位においては、その他のビット位置における構成と比較して、規模の大きな構成が必要となる。この発明のうち請求項１にかかるツリー回路によれば、そのビット位置が最大となるように、拡張型加算ブロックに入力される第２要素が選択されるので、拡張型加算ブロックの構成規模の増大を抑制することができる。
【０２３１】
この発明のうち請求項２にかかるツリー回路によれば、加算されるべき部分積の数が最も多くなる（つまり入力される部分積の数と等しくなる）ビット位置が最も小さい加算ブロックが拡張型加算ブロックとして機能する。加算されるべき部分積の数が、入力される部分積の数よりも小さいビット位置以上では、拡張型加算ブロックの構成規模を増大することなく、入力された第２要素の影響に対処することができる。つまり拡張型加算ブロックの構成のうち、これに入力される第２要素のビット位置以上において構成規模が大きくなるとは言え、その占める部分の増大を抑制することができ、ひいては拡張型加算ブロックの構成規模の増大を抑制することができる。
【０２３２】
拡張型拡散ブロックに入力する第２要素の影響を受けて、特定ビットの加算器は、それよりも下位の加算器と比較して、上位伝搬出力が１ビット多く必要となり得る。この上位伝搬出力は特定ビットよりも上位に伝搬するので、特定ビットより上位においても、上位伝搬出力が１ビット多く必要となるビット位置がある。この発明のうち請求項３にかかるツリー回路は、特定ビット位置を含んだ上位において、上位伝搬出力の数を増加した拡張型加算器を備えているので、これに対応することができる。
【０２３３】
この発明のうち請求項４にかかるツリー回路によれば、最も上位に配置された前記拡張型加算器（最上位拡張型加算器）に隣接した上位に配置された加算器は、桁上げ入力以外の入力において最上位拡張型加算器の上位伝搬出力を受けるので、通常型加算器を採用することができる。
【０２３４】
この発明のうち請求項５にかかるツリー回路によれば、上位伝搬出力の一つを求めるのに必要な構成が簡単となり、拡張型加算器の構成、ひいては拡張型加算ブロックの構成規模が増大することを抑制することができる。
【０２３５】
この発明のうち請求項６にかかるツリー回路によれば、上位伝搬出力が桁上げを意味する必要がなく、疑似桁上げ出力を上位に伝搬させることによって回路規模を簡単にして拡張型加算器を構成することができる。
【０２３６】
この発明のうち請求項７にかかるツリー回路によれば、特定ビット位置よりも下位に配置された通常型加算器と、疑似桁上げ出力を入力する拡張型加算器との整合を採る拡張型加算器を設けるので、特定ビットよりも下位では通常の加算を行いつつ、拡張型加算器同士では疑似桁上げ出力を伝搬させることができる。
【０２３７】
この発明のうち請求項８にかかるツリー回路によれば、疑似桁上げ出力を上位に伝搬させる拡張型加算器と、これよりも上位に配置される通常型加算器との整合を採る拡張型加算器を設けるので、拡張型加算器同士では疑似桁上げ出力を伝搬させつつ、拡張型加算器よりも上位に配置される通常型加算器では通常の加算を行うことができる。
【図面の簡単な説明】
【図１】  本発明の実施の形態１の構成を示すブロック図である。
【図２】  図３及び図４と相まって図１の詳細を示すブロック図である。
【図３】  図２及び図４と相まって図１の詳細を示すブロック図である。
【図４】  図２及び図３と相まって図１の詳細を示すブロック図である。
【図５】  図６及び図７と相まって拡張型４入力２出力加算ブロック１ａの構成を例示するブロック図である。
【図６】  図５及び図７と相まって拡張型４入力２出力加算ブロック１ａの構成を例示するブロック図である。
【図７】  図５及び図６と相まって拡張型４入力２出力加算ブロック１ａの構成を例示するブロック図である。
【図８】  拡張型４入力２出力加算器１００の構成の第１例を示す回路図である。
【図９】  拡張型４入力２出力加算器１００の構成の第２例を示す回路図である。
【図１０】  拡張型４入力２出力加算器１１１の構成を例示する回路図である。
【図１１】  拡張型４入力２出力加算ブロック１ａの構成の一部を示すブロック図である。
【図１２】  拡張型４入力２出力加算器１１０の構成を例示する回路図である。
【図１３】  拡張型４入力２出力加算器１１２の構成を例示する回路図である。
【図１４】  本発明の実施の形態３の構成を示すブロック図である。
【図１５】  図１６と相まって拡張型３入力２出力加算ブロック１３ａの構成を例示するブロック図である。
【図１６】  図１５と相まって拡張型３入力２出力加算ブロック１３ａの構成を例示するブロック図である。
【図１７】  拡張型３入力２出力加算器３００の構成を例示する回路図である。
【図１８】  従来のTree回路の構造を示すブロック図である。
【図１９】  図２０及び図２１と相まって図１８の詳細を示すブロック図である。
【図２０】  図１９及び図２１と相まって図１８の詳細を示すブロック図である。
【図２１】  図１９及び図２０と相まって図１８の詳細を示すブロック図である。
【図２２】  図２３及び図２４と相まって４入力２出力加算ブロック２２ａの構成を例示するブロック図である。
【図２３】  図２２及び図２４と相まって４入力２出力加算ブロック２２ａの構成を例示するブロック図である。
【図２４】  図２２及び図２３と相まって４入力２出力加算ブロック２２ａの構成を例示するブロック図である。
【図２５】  ３入力２出力加算器４００の構成例を示す回路図である。
【図２６】  ４入力２出力加算器２００の構成例を示すブロック図である。
【図２７】  ４入力２出力加算器２００の一例を示す回路図である。
【図２８】  従来のTree回路の構造を示すブロック図である。
【図２９】  図３０乃至図３２と相まって図２８の詳細を示すブロック図である。
【図３０】  図２９、図３１及び図３２と相まって図２８の詳細を示すブロック図である。
【図３１】  図２９、図３９及び図３２と相まって図２８の詳細を示すブロック図である。
【図３２】  図２９乃至図３１と相まって図２８の詳細を示すブロック図である。
【図３３】  従来のTree回路を例示するブロック図である。
【符号の説明】
Ｐ0 〜Ｐ15  部分積、ｐｐ0 〜ｐｐ15  第１要素、ｐｃ0 〜ｐｃ15  第２要素、ｓｏ1 〜ｓｏ7 ，ｃｏ1 〜ｃｏ7 ，ｓｏ11〜ｓｏ17，ｃｏ11〜ｃｏ17，ｓｏ21〜ｓｏ28，ｃｏ21〜ｃｏ28，ｓｏ31〜ｓｏ46，ｃｏ31〜ｃｏ46  中間和、ｓｏ7 ，ｃｏ7 ，ｓｏ17，ｃｏ17，ｓｏ28，ｃｏ28  最終中間和、Ｃｏ１  第１の桁上げ出力、Ｃｏ２  第２の桁上げ出力、Ｃｏａ  第１の疑似桁上げ出力、Ｃｏｂ  第２の桁上げ出力、１ａ  拡張型４入力２出力加算ブロック、２ａ〜２ｆ，１２ａ〜１２ｃ  ４入力２出力加算ブロック、１３ａ  拡張型３入力２出力加算ブロック、１４ａ〜１４ｃ  ３入力２出力加算ブロック、１００，１１０〜１１２  拡張型４入力２出力加算器、２００  （通常の）４入力２出力加算器、３００  拡張型３入力２出力加算器、４００  （通常の）３入力２出力加算器。
【図１】
0003652447.tif 000030
【図２】
0003652447.tif 000031
【図３】
0003652447.tif 000032
【図４】
0003652447.tif 000033
【図５】
0003652447.tif 000034
【図６】
0003652447.tif 000035
【図７】
0003652447.tif 000036
【図８】
0003652447.tif 000037
【図９】
0003652447.tif 000038
【図１０】
0003652447.tif 000039
【図１１】
0003652447.tif 000040
【図１２】
0003652447.tif 000041
【図１３】
0003652447.tif 000042
【図１４】
0003652447.tif 000043
【図１５】
0003652447.tif 000044
【図１６】
0003652447.tif 000045
【図１７】
0003652447.tif 000046
【図１８】
0003652447.tif 000047
【図１９】
0003652447.tif 000048
【図２０】
0003652447.tif 000049
【図２１】
0003652447.tif 000050
【図２２】
0003652447.tif 000051
【図２３】
0003652447.tif 000052
【図２４】
0003652447.tif 000053
【図２５】
0003652447.tif 000054
【図２６】
0003652447.tif 000055
【図２７】
0003652447.tif 000056
【図２８】
0003652447.tif 000057
【図２９】
0003652447.tif 000058
【図３０】
0003652447.tif 000059
【図３１】
0003652447.tif 000060
【図３２】
0003652447.tif 000061
【図３３】
0003652447.tif 000062