所定のデコード単位ごとに被乗数データおよび乗数データを区切って、前記区切られた被乗数データおよび乗数データの複数の部分乗算結果を、前記区切られた被乗数データおよび乗数データよりも広いデータ幅を有する固定値から所定ビット数だけ異なる値を示すデコードデータとして生成する入力値生成部と、前記入力値生成部によって生成された前記複数の部分乗算結果のデコードデータを、対応する桁の前記デコード単位ごとに加算することによって、デコードされた乗算データを生成する乗算部と、前記乗算部によって生成された前記デコードされた乗算データをデコード単位ごとにエンコードすることによって、前記被乗数データと前記乗数データとの間の乗算結果を出力するエンコーダとを具備する乗算回路。前記乗算部は、前記複数の部分乗算結果のデコードデータとして前記固定値が入力されている間は前記デコードされた乗算データとして前記固定値を出力する請求項1記載の乗算回路。前記区切られた被乗数データの3倍値を演算して生成する3倍値演算部をさらに具備し、前記入力値生成部は、前記乗数データの所定のフィールドに基づいて選択信号を生成し、前記選択信号に従って、前記区切られた被乗数データ、当該区切られた被乗数データを1ビット左シフトすることにより得られた2倍値、および、前記3倍値の何れかを前記デコードデータとして生成する請求項1記載の乗算回路。前記入力値生成部は、前記乗数データの所定のフィールドに基づいて選択信号を生成し、前記選択信号に従って前記区切られた被乗数データの-2倍、-1倍、0倍、1倍または2倍の何れかを前記デコードデータとして生成する請求項1記載の乗算回路。リセット信号を出力する同期制御部をさらに具備し、前記入力値生成部は、前記リセット信号に同期して前記複数の部分乗算結果を生成する請求項1記載の乗算回路。ブースのアルゴリズムは、例えばRadix-4のブースエンコーダを用いて、拡張した乗数Bにおいて着目する3ビットの値に基づいて、被乗数Aから生成する-2A乃至2Aまでの値を選択して、加算していくものである。これにより、加算器アレイの縦方向の段数が半分近くに削減されて演算時間が短縮され、また、HAやFAの削減に伴って消費電流が削減される。しかも、2Aはビットシフト、負の値は2の補数によって生成することできる。しかし、従来構成ではHAやFAの加算器は部分積の有効データがある部分のみ配置すればよかったが、2の補数を用いてブースのアルゴリズムを適用する場合、有効データより上位3ビットに1を埋める必要が生じる。そのため、有効データの上位側にも3ビット分のフラグ演算のためのHAやFAを配置する必要が生じる。そして、負値が選択された場合、演算に用いられるデータはビット反転でよいが、有効データの最下位で1を実行する必要があり、そのためのHAやFAも下位ビット側に必要となる。これらにより、加算器列の段数は半分近くになり、演算時間の短縮には効果があるが、HAやFAの個数は半減にはならないため、消費電流の効果は縦方向の演算遅延が低減されたことによる効果のみとなる。ワレスツリーを用いた構成は、加算器マトリクスにおいて各ビットで上段からシリアルに実行されていた加算を、パラレルに実行することにより、縦方向の演算時間を削減するものである。通常の乗算回路ではひし形状に加算器が配置され、この中で加算器の数が最も多く、演算に最も時間を要するのは、中央部分のビットの計算である。例えば、8ビットの乗算回路の中央部分のビットの計算にワレスツリーを適用すると、従来構成で7段の加算器遅延で実行されていた演算処理を、4段の加算器処理で実行することができ、縦方向の演算遅延を半分近くに削減することができる。この構成は、ブースのアルゴリズムを用いた構成にも適用でき、遅延を3段分に短縮することができる。これは乗算回路のビット幅が大きくなるに従って、削減効果は大きくなる。ここで、演算時間は、キャリー処理回路までの縦方向の加算器の段数とキャリー処理回路での横方向の加算器の段数の合計で決まる。すなわち、乗算演算時間=加算器回路遅延×縦方向の段数キャリー処理回路遅延×横方向の段数である。ブースのアルゴリズムおよびワレスツリーは、ともに前者の削減効果だけであり、後者の処理時間は短縮されていない。また、ワレスツリーの構成では、前者の列単位の加算器動作を並列に行うことにより演算時間の削減を図っているが、この構成では同時に動作するHAやFAの数が増加するため、この時間短縮効果と反比例して消費電流は増加してしまう。それに対して、後者のキャリー処理回路では、下位ビットから加算器が1個ずつ動作し、その演算処理時の動作電流は前者の処理時に比べて格段に少ない。キャリールックアヘッドCarryLookAheadを用いて、下位のキャリーを高速演算して上位の加算回路のキャリー入力に供給し、上位の加算の確定時間を短縮する方法も考えられる。しかし、キャリールックアヘッドは、入力される加算値が同時に確定する場合に有効であり、入力の確定タイミングが一定ではない値を入力とするキャリー処理回路では、本来の効果を期待することができない。本技術はこのような状況に鑑みて生み出されたものであり、乗算回路における電流発生を抑止するとともに演算時間を短縮することを目的とする。本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、所定のデコード単位ごとに被乗数データおよび乗数データを区切って、上記区切られた被乗数データおよび乗数データの複数の部分乗算結果を、上記区切られた被乗数データおよび乗数データよりも広いデータ幅を有する固定値から所定ビット数だけ異なる値を示すデコードデータとして生成する入力値生成部と、上記入力値生成部によって生成された上記複数の部分乗算結果のデコードデータを、対応する桁の上記デコード単位ごとに加算することによって、デコードされた乗算データを生成する乗算部と、上記乗算部によって生成された上記デコードされた乗算データをデコード単位ごとにエンコードすることによって、上記被乗数データと上記乗数データとの間の乗算結果を出力するエンコーダとを具備する乗算回路である。これにより、デコードデータを用いて乗算を行うことによって回路内の信号の中間値への変化を抑制するという作用をもたらす。また、この第1の側面において、上記乗算部は、上記複数の部分乗算結果のデコードデータとして上記固定値が入力されている間は上記デコードされた乗算データとして上記固定値を出力するように構成してもよい。これにより、乗算データを一旦リセットするという作用をもたらす。また、この第1の側面において、上記区切られた被乗数データの3倍値を演算して生成する3倍値演算部をさらに具備し、上記入力値生成部は、上記乗数データの所定のフィールドに基づいて選択信号を生成し、上記選択信号に従って、上記区切られた被乗数データ、当該区切られた被乗数データを1ビット左シフトすることにより得られた2倍値、および、上記3倍値の何れかを上記デコードデータとして生成するようにしてもよい。これにより、3倍値を利用することによって乗算に要する段数を削減するという作用をもたらす。また、この第1の側面において、上記入力値生成部は、上記乗数データの所定のフィールドに基づいて選択信号を生成し、上記選択信号に従って上記区切られた被乗数データの-2倍、-1倍、0倍、1倍または2倍の何れかを上記デコードデータとして生成するようにしてもよい。これにより、ブースのアルゴリズムを利用して乗算に要する段数を削減するという作用をもたらす。また、この第1の側面において、リセット信号を出力する同期制御部をさらに具備し、上記入力値生成部は、上記リセット信号に同期して上記複数の部分乗算結果を生成するようにしてもよい。これにより、データのビット間を同期させるという作用をもたらす。本技術によれば、乗算回路における電流発生を抑止するとともに演算時間を短縮することができるという優れた効果を奏し得る。以下、本技術を実施するための形態以下、実施の形態と称するについて説明する。説明は以下の順序により行う。1.第1の実施の形態基本構成例2.第2の実施の形態ブースのアルゴリムの適用例3.第3の実施の形態3A事前計算の適用例4.第4の実施の形態ブースのアルゴリムとワレスツリーの適用例5.第5の実施の形態縦方向へのワレスツリー適用例6.第6の実施の形態多倍長乗算への適用例:キャリーを組み込む例7.第7の実施の形態多倍長乗算への適用例:キャリーを別サイクルで行う例<1.第1の実施の形態>[乗算回路の全体構成]図1は、第1の実施の形態における乗算回路の全体構成例を示す図である。この乗算回路は、被乗数レジスタ110と、乗数レジスタ120と、入力値生成部301と、乗算部401と、エンコーダ600と、同期制御部700とを備えている。被乗数レジスタ110は、被乗数Aのデータを保持するレジスタである。乗数レジスタ120は、乗数Bのデータを保持するレジスタである。被乗数レジスタ110および乗数レジスタ120が入力値を保持するタイミングを示すクロック信号CLKは同期制御部700から供給される。なお、ここでは被乗数レジスタ110および乗数レジスタ120として8ビットずつのレジスタを想定している。入力値生成部301は、乗算部401に対する入力値を生成するものである。この第1の実施の形態では、入力値生成部301は、被乗数Aおよび乗数Bのデータをデコードして乗算部401に供給する。デコードデータを生成するタイミングを示すリセット信号RSTは同期制御部700から供給される。乗算部401は、入力値生成部301から供給された被乗数Aおよび乗数Bのデコードデータを乗算し、その乗算結果のデコードデータを生成する演算器である。なお、乗算部401は、特許請求の範囲に記載の乗算部の一例である。エンコーダ600は、乗算部401によって生成された乗算結果データをエンコードして、被乗数Aと乗数Bとの間の乗算結果を出力するものである。同期制御部700は、被乗数レジスタ110および乗数レジスタ120が値を保持するタイミングを示すクロック信号CLKと、デコードデータを生成するタイミングを示すリセット信号RSTとを供給することにより同期制御を行うものである。図2は、本技術における2進数データとデコードデータとの対応関係例を示す図である。被乗数Aまたは乗数Bが2進数データであることを想定して、2ビットずつに区切ると、00、01、10、11の4通りの値を示す。これに対し、入力値生成部301によってデコードされたデコードデータは4ビットであり、それぞれ0001、0010、0100、1000に対応する。また、デコードデータ0000は固定値であり、何れの2進数データにも対応しない。後述するように、乗算部401内の各演算器は一旦、デコードデータ0000を出力し、その後、0001、0010、0100、1000の何れか1つを出力する。すなわち、各演算器において、固定値0000を介して各値に遷移させることにより、4ビットのうち1ビットのみが変化するようにすることができる。[入力値生成部の構成]図3は、第1の実施の形態における入力値生成部301の構成例を示す図である。ここでは、8ビットの被乗数A2進数表記:a0乃至a7および乗数B2進数表記:b0乃至b7を想定し、乗数Bについては2ビット分bおよびbを代表して示しているnは0から3の整数。この入力値生成部301にはリセット信号RSTが入力されており、乗算開始直後にリセット信号RSTはハイレベルに設定される。これにより、入力値生成部301は、4ゲート分の回路遅延の後に4ビット毎のデコードデータDとして0000を出力する。そして、リセット信号RSTがローレベルに設定されると、有効なデコードデータDが出力されるようになる。この入力値生成部301によって生成されたデコードデータDは乗算部401に供給される。4ビット毎のデコードデータDは、被乗数Aを2ビットずつに区切ったものと乗数Bの各ビットとの部分積に対応している。[乗算部の構成]図4は、第1の実施の形態における乗算部401およびエンコーダ600の構成例を示す図である。乗算部401は、6個のハーフアダーDHAと、23個のフルアダーDFAと、キャリー処理回路2つのDCA2とを備えている。ハーフアダーは、キャリー入力のない加算器である。フルアダーは、キャリー入力のある加算器である。乗算部401内のハーフアダー、フルアダーおよびキャリー処理回路は、何れもデコードデータを扱うものである。ハーフアダーおよびフルアダーに入力されるデコードデータDは、入力値生成部301から供給される。入力値生成部301から乗算部401の各加算器に供給されるデコードデータDの対応関係は図3および図4に図示するとおりである。エンコーダ600は、乗算部401によって生成されたデコードデータを4ビットずつに区切って2ビットずつの2進数データを出力する。[ハーフアダーの構成]図5は、第1の実施の形態における乗算部401のハーフアダーDHAの構成例を示す図である。図6は、第1の実施の形態における乗算部401のハーフアダーDHAの真理値表の例を示す図である。このハーフアダーDHAは、2つのデコードデータ4ビットaおよびbを入力とし、デコードデータ4ビットの加算結果x3乃至x0および1ビットの桁上げキャリーCoutを出力する。このハーフアダーDHAは、2つの信号入力をAND-NORゲートで受けて負論理の中間値を生成して、それを反転して出力する。このハーフアダーDHAのデータパスは、遅延2ゲート分に相当する。また、桁上げCoutを出力するまでのパスも遅延2ゲート分に相当する。すなわち、加算結果出力とキャリー出力は同じ遅延時間になる。このハーフアダーDHAでは、入力aまたはbの少なくとも何れか一方が固定値0000であれば、出力も固定値0000となる。また、入力aまたはbの何れも固定値0000でなければ、両者の加算結果を出力する。加算結果がデコードデータ1000を超える場合には、桁上げCoutが1を示す。これにより、入力信号に遅延差があっても、出力は中間値に遷移することはなく、それに伴う消費電流の増加も起こらない。図7は、第1の実施の形態における乗算部401のハーフアダーDHAの動作タイミング例を示す図である。入力aおよびbの両者が有効な値固定値0000以外を示すようになってから2ゲート分の遅延後に、有効な加算結果を示すようになる。図7aは、入力aが先に有効な値を示す場合であり、図7bは、入力bが先に有効な値を示す場合である。[フルアダーの構成]図8は、第1の実施の形態における乗算部401のフルアダーDFAの構成例を示す図である。図9は、第1の実施の形態における乗算部401のフルアダーDFAの真理値表の例を示す図である。このフルアダーDFAは、2つのデコードデータ4ビットaおよびb、桁上げCinを入力とし、デコードデータ4ビットの加算結果x3乃至x0および1ビットの桁上げCoutを出力する。このフルアダーDFAは、2つの信号入力をAND-NORゲートで受けて負論理の中間値を生成し、キャリー入力が0の場合は負論理の中間値を反転出力し、1の場合はそれを上位ビット側にローテートシフトした後に反転出力する。このフルアダーDFAのデータパスは、遅延2ゲート分に相当する。また、桁上げCoutを出力するまでのパスも遅延2ゲート分に相当する。すなわち、加算結果出力とキャリー出力は同じ遅延時間になる。このフルアダーDFAでは、入力aまたはbの少なくとも何れか一方が固定値0000であれば、出力も固定値0000となる。また、入力aまたはbの何れも固定値0000でなければ、入力aおよびbの加算結果にさらに桁上げCinを加算した加算結果を出力する。加算結果がデコードデータ1000を超える場合には、桁上げCoutが1を示す。これにより、入力信号に遅延差があっても、出力は中間値に遷移することはなく、それに伴う消費電流の増加も起こらない。図10は、第1の実施の形態における乗算部401のフルアダーDFAの動作タイミング例を示す図である。入力aおよびbの両者が有効な値固定値0000以外を示すようになってから2ゲート分の遅延後に、有効な加算結果を示すようになる。図10aは、入力aが最後に有効な値を示す場合である。図10bは、入力aおよびbのあとから桁上げCinが1を示すようになった場合である。図11は、第1の実施の形態における乗算部401のフルアダーDFAの構成例を示す図である。図12は、第1の実施の形態における乗算部401のフルアダーDFAの真理値表の例を示す図である。図4のDFA54、DFA66は、上段から受け取る値がキャリーのみであり、加算値のデコードデータのうち上位2ビットが0に固定されるため、回路構成を工夫することにより回路規模の増加を抑えている。[キャリー処理回路の構成]図13は、第1の実施の形態における乗算部401のキャリー処理回路の1つDCA2の構成例を示す図である。上述のようにキャリー処理回路は2つのDCA2DCA248およびDCA268から構成される。図13aは1つのDCA2を簡略表示したものである。図13bは1つのDCA2の内部構成例である。このDCA2は、図13aに示すように、2つのキャリーアダーDCAを含んで構成される。このDCA2は、デコードデータ8ビットaLおよびaH、2ビットデータbbLおよびbH、1ビットの桁上げCinを入力とする。そして、デコードデータ8ビットの加算結果d0L乃至d3Lおよびd0H乃至d3Hおよび1ビットの桁上げCoutを出力する。このキャリー処理回路のDCA2の入力aからのデータパスは、遅延2ゲート分に相当する。一般に、乗算器は、マトリクス状に配置されたCSACarrySaveAdderとその後に配置されるCPACarryPropagateAdderとにより構成される。CSAマトリクスの入力に加算値がセットされると、各CSAは動作を開始し、マトリクスの上の段から下の段に向かって演算結果は確定していく。そして、CSAの最終段の出力が確定すると、その下のCPAでCSA列からのデータとキャリーを足して乗算結果を下位ビットから確定させていく。これに対し、本開示の技術では、デコードデータを演算に用いるため、キャリー処理回路のデータ入力はデコードデータとする必要がある。これには前述したDHAおよびDFAのキャリー出力を加算値入力の一方の入力d1に接続し、その反転信号をd0に接続する構成を採れば同じ構成を用いることができる。DHAおよびDFAは、上述のように、加算結果およびキャリー出力をともに2段の論理演算で出力する。すなわち、1段目では、2つのデコード値から負論理の加算値および負論理のキャリーをロジック回路で生成する。2段目では、キャリー入力が0の場合、1段目の負論理の加算値を反転出力する。キャリー入力が1の場合、負論理の加算結果をローテートシフトして反転出力する。そして、演算結果が3かつキャリー入力が1である場合、または、1段目からのキャリーがある場合には、キャリーを出力する。マトリクス状に配置されたCSAからの出力は、ほぼ同じタイミングで最下段のCPAで構成されたキャリー処理回路に入力される。そのため、各キャリー処理回路の1段目の出力はほぼ同じタイミングで確定する。そして、キャリー処理回路の2段目の動作が下位ビット側から上位ビット側に確定していき、これが乗算時間の後半の時間を決定する。DFAでは反転させたキャリー入力で2段目の処理を動作させているが、DCA2では2つのDFAを配置し、キャリー処理回路の1つ目は正論理で、2つ目は負論理で動作させる構成を採る。これにより、2つのキャリー処理回路により2ゲート遅延でキャリー出力することが可能となる。キャリー処理回路では、必要となるのは出力のキャリー結果で、途中のキャリー結果は使用しないため、中間値が反転値であっても問題ない。これにより、キャリー処理回路でのキャリーの遅延は、DFAの半分となり、乗算演算時間のうちキャリー処理に要する時間が短縮される。[エンコーダの構成]図14は、第1の実施の形態におけるエンコーダ600の構成例を示す図である。このエンコーダ600は、乗算部401によって生成されたデコードデータを4ビットずつに区切って2ビットずつの2進数データを出力する。このエンコーダ600のデータパスは、遅延2ゲート分に相当する。[乗算回路の動作]図15は、第1の実施の形態における乗算回路の動作例を示す図である。同期制御部700は、演算開始直後にリセット信号RSTを所定期間ハイレベルにする。これにより、入力値生成部301の4ゲート分の回路遅延経過後に、各加算器へのデコード入力は全て0000となる。そのため、乗算器を構成する各DHAおよびDFAの少なくとも一方の入力は0000となり、加算器の回路遅延の2ゲート遅延後に全てのDHAおよびDFAのデコード出力は0000になり、キャリー出力も0となる。リセット信号RSTがローレベルになると、入力値生成部301の出力は、被乗数Aの各2ビットのデコードデータとして乗算部401に供給される。このとき、乗算部401の加算器マトリクスの2段目以降のDFAの一方の入力は入力値生成部301からの加算値となるが、他方の入力が上段のDHAまたはDFAからの演算結果0000であるため、2段目以降のDFAの出力は0000のままである。そして、加算器の演算時間である2ゲート遅延後に1段目の出力が確定して下段に加算結果が出力されると、2段目の加算器が動作を開始し、演算時間経過後に出力が確定して3段目に出力される。以下同様に、加算器の演算時間が経過する度に加算器出力が中間値に変化することなく0000から演算結果に変化し、この変化により次の段の加算器列が動作を開始する。演算が加算器マトリクスの最終段まで到達すると、最終段の加算器列からのデコードされた加算結果およびキャリーが確定した値となる。そして、キャリー処理回路により、加算器マトリクスからのデコードされた加算結果とキャリーとの加算が行われる。ここで、キャリー処理回路のDCA2は2個直列に配置され、その処理時間は4ビットのバイナリ値に対して4ゲート遅延であり、このキャリー処理時間に関しては従来構成の少なくとも半分に短縮される。演算結果はデコードデータであるため、エンコーダ600により、バイナリデータに変換されて出力される。このように、第1の実施の形態によれば、演算結果にかかわらず4本の信号線のうち1本だけが必ず1に変化し、これが次の段の加算器の動作を開始させる。しかも、演算結果とキャリーの生成時間が同じであるため、次の段の加算器での入力に遅延差は生じにくく、仮に遅延差があったとしても、両加算値入力がデコードデータにならないと演算を開始しないように構成されている。さらに、DHAおよびDFAはともに、データの加算処理の部分とキャリー処理の部分とで構成されているが、加算処理の部分はデコードデータの生成回路は同じ構成であるため、演算結果の値にかかわらず動作電流の差異は小さい。これにより、被乗数Aおよび乗数Bの値にかかわらず乗算部401の動作電流の変動は小さく、従来のバイナリ動作の乗算回路と比べてその変動は小さく抑えられる。そして、演算時間の構成要素のキャリー処理時間は、キャリー処理回路としてDCA2の構成を用いることにより、少なくとも従来構成の半分に短縮される。<2.第2の実施の形態>[乗算回路の全体構成]図16は、第2の実施の形態における乗算回路の全体構成例を示す図である。この乗算回路は、被乗数レジスタ110と、乗数レジスタ120と、入力値生成部302と、乗算部402と、エンコーダ600と、同期制御部700とを備えている。入力値生成部302および乗算部402以外の構成は、第1の実施の形態のものと同様であるため、詳細な説明を省略する。入力値生成部302は、乗算部402に対する入力値を生成するものである。この第2の実施の形態では、入力値生成部302は、第1の実施の形態と比べて、ブースデコーダを有する点が異なる。すなわち、入力値生成部302は、乗数Bのデータに対してブースデコーディングし、被乗数Aおよび乗数Bのデータをデコードして乗算部402に供給する。乗算部402は、入力値生成部302から供給された被乗数Aおよび乗数Bのデコードデータを乗算し、その乗算結果のデコードデータを生成する演算器である。なお、乗算部402は、特許請求の範囲に記載の乗算部の一例である。[入力値生成部の構成]図17は、第2の実施の形態における入力値生成部302の構成例を示す図である。ここでは、8ビットの被乗数A2進数表記:a0乃至a7および乗数B2進数表記:b0乃至b7を想定し、乗数Bについては3ビット分b、b、bを代表して示しているmは0から4の整数。ブースのアルゴリズムを用いる場合、拡張した乗数Bの所定のフィールドである3ビットの値をブースデコーダによってデコードして選択信号を生成する。この選択信号に従って、被乗数Aの-2倍、-1倍、0倍、1倍または2倍の何れかの中から加算値を選択して、乗算部402の加算器に設定する。第2の実施の形態では、加算値の絶対値が0、1A、2Aの何れであるかを乗数Bの3ビットから判断して、対応する値を入力値生成部302に取り込み、その後、乗数Bの3ビットから加算値の符号を判断する。そして、正の場合はそのままの値に対して、負の場合は取り込んだ値を反転した上で、入力値生成部302において図2のデコードデータへのデコードを行い、乗算部402の加算器マトリクスの入力値として供給する。[乗算部の構成]図18は、第2の実施の形態における乗算部402およびエンコーダ600の構成例を示す図である。乗算部402は、2個のハーフアダーDHAと、23個のフルアダーDFAと、キャリー処理回路2つのDCA2とを備えている。ハーフアダーおよびフルアダーに入力されるデコードデータDは、入力値生成部302から供給される。入力値生成部302から乗算部402の各加算器に供給されるデコードデータDの対応関係は図17および図18に図示するとおりである。ハーフアダー、フルアダーおよびDCA2の内容は、上述の第1の実施の形態について説明したものと同様である。また、エンコーダ600も、上述の第1の実施の形態について説明したものと同様である。[乗算回路の動作]図19は、第2の実施の形態における乗算回路の動作例を示す図である。第2の実施の形態においても、第1の実施の形態の場合と同様に、リセット信号RSTを乗算開始のタイミングで所定期間ハイレベルにして、加算器マトリクスへの入力値を固定値0000にする。これにより、加算器マトリクスの加算器の出力は全て固定値0000となる。その後、加算器マトリクスへの供給値は加算値となるが、2段目以降の加算器は、その入力の一方は上段からの固定値0000であるため、演算を開始せず、その下段への出力は固定値0000のままである。上段の演算が終了して、その演算結果がデコード値になって初めて加算器は演算を開始し、加算器の演算遅延後に下段に演算結果が出力され、この加算器は動作を停止する。この過程で、出力が中間値を出力することはなく、中間値遷移による余分な電流を消費しない。そして、加算器マトリクスの演算が終了後の、キャリーの処理ではDCA2を2つ配置し、キャリー処理時間は従来構成の少なくとも半分に短縮される。このように、第2の実施の形態によれば、ブースのアルゴリズムを用いることにより、乗算部の加算器マトリクスの段数を半分近くに削減することができる。また、演算に必要な加算値について、ビットシフトで対応できる被乗数Aの2倍値までで対応することができる。しかしながら、ブースのアルゴリズムでは負の値を用いるため、2の補数生成のための1加算および負の場合の上位の1拡張に伴う上位の加算処理も必要となり、加算器マトリクスの1列の加算器の個数が増えてしまう。そして、それに伴って消費電流も増えるという問題がある。そこで、乗算の加算器マトリクスの段数を半分にする方法として、被乗数Aの3倍値3Aを事前計算して、乗数Bの2ビット値に応じて対応する値0、A、2A、3Aから1つを選択して加算する方法を、以下の第3の実施の形態として開示する。<3.第3の実施の形態>[乗算回路の全体構成]図20は、第3の実施の形態における乗算回路の全体構成例を示す図である。この乗算回路は、被乗数レジスタ110と、乗数レジスタ120と、3倍値演算部200と、入力値生成部303と、乗算部403と、エンコーダ600と、同期制御部700とを備えている。3倍値演算部200、入力値生成部303および乗算部403以外の構成は、第1の実施の形態のものと同様であるため、詳細な説明を省略する。3倍値演算部200は、被乗数Aの3倍値3Aを演算して入力値生成部302に出力するものである。具体的な構成例については後述する。入力値生成部303は、乗算部403に対する入力値を生成するものである。この第3の実施の形態では、入力値生成部303は、第1の実施の形態と比べて、3A事前計算値を入力とする点が異なる。乗算部403は、入力値生成部303から供給された被乗数Aおよび乗数Bのデコードデータを乗算し、その乗算結果のデコードデータを生成する演算器である。なお、乗算部403は、特許請求の範囲に記載の乗算部の一例である。[3倍値演算部の構成]図21は、第3の実施の形態における3倍値演算部200の第1の構成例を示す図である。この3倍値演算部200は、8ビットの被乗数A2進数表記:a0乃至a7を入力として、10ビットの3倍値3A、2進数表記:a0乃至a9を出力することを想定している。この3倍値演算部200の第1の構成例では、a1へ通じる経路からa8へ至るまでの経路において10ゲート分の遅延を要する。[入力値生成部の構成]図22は、第3の実施の形態における入力値生成部303の構成例を示す図である。ここでは、8ビットの被乗数A、10ビットの3倍値3A、および、乗数B2進数表記:b0乃至b7を想定し、乗数Bについては2ビット分bおよびbを代表して示しているnは0から3の整数。この第3の実施の形態における入力値生成部303では、乗数Bの所定のフィールドである2ビットの値に基づいて選択信号が生成される。そして、被乗数A、2Aまたは3Aの何れかが選択されてデコードデータとして出力される。2Aの値は被乗数Aを左シフトすることにより得られる。3Aの値は3倍値演算部200から供給される。この構成例では、被乗数Aまたは乗数Bが更新されると、3Aの事前計算が開始され、同時にリセット信号RSTがハイレベルとなり、加算器マトリクスへ供給されるデコードデータは全て固定値0000となる。これにより、2ゲート遅延後に加算器マトリクスの出力は全て固定値0000に変化する。そして、3Aの事前計算時間にマージンを見込んだ時間が経過した後、リセット信号RSTがローレベルに設定される。これにより、乗数の2ビットをデコードした選択信号SEL_1A乃至SEL_3Aがアクティブとなる。乗数の2ビットが00の場合は、3本の選択信号はいずれもローレベルで、入力値生成部303への取り込み値はなく、デコード出力はd0のみがハイレベルとなる。乗数の2ビットが01の場合は、選択信号SEL_1Aのみがハイレベルとなり、乗数Aがそのままデコードされて加算器マトリクスへ供給される。乗数の2ビットが10の場合は、選択信号SEL_2Aのみがハイレベルとなり、乗数Aを1ビットだけ上位側にシフトさせ、LSBを0とした値がデコード回路に入力される。この場合、取り込み値は2Aとなり、各々デコードされて加算器マトリクスへ供給される。乗数の2ビットが11の場合は、選択信号SEL_3Aのみがハイレベルとなり、事前計算した3Aの値が選択されて加算値生成回路に取り込まれ、デコードされて加算器マトリクスへ供給される。[乗算部の構成]図23は、第3の実施の形態における乗算部403およびエンコーダ600の構成例を示す図である。乗算部403は、4個のハーフアダーDHAと、8個のフルアダーDFAと、キャリー処理回路2つのDCA2とを備えている。ハーフアダーおよびフルアダーに入力されるデコードデータDは、入力値生成部303から供給される。入力値生成部303から乗算部403の各加算器に供給されるデコードデータDの対応関係は図22および図23に図示するとおりである。ハーフアダー、フルアダーおよびDCA2の内容は、上述の第1の実施の形態について説明したものと同様である。また、エンコーダ600も、上述の第1の実施の形態について説明したものと同様である。第3の実施の形態では、演算の開始でリセット信号RSTが所定期間ハイレベルとなることにより、乗算部402内の加算器の全ての入力は固定値0000になる。これにより、加算器の演算遅延後、加算器の全ての出力は固定値0000になる。その後、加算器への入力値はデコードされた加算値となるが、2段目以降の加算器の入力値は、上段の加算器の出力である固定値0000であるため、演算動作を開始しない。上段の加算器の動作が終了し、その出力が固定値0000から演算結果であるデコードデータに変化した段階で、それを一方の入力とする加算器が演算動作を開始する。そして、加算器の演算遅延が経過した後、その出力は固定値0000から演算結果であるデコードデータに変化して下段の加算器に出力し、その加算器は動作を終了するとともに、下段の加算器は動作を開始する。この過程で、加算器は上段からの出力に基づく演算を行ってその結果を下段に出力して動作を停止し、中間値を出力することはなく、余分な電流を消費しない。さらに、加算器マトリクスの加算器列の加算器の数はブースのアルゴリズムを用いた場合に比べて少なく、段数も1段少ないため、ブースのアルゴリズムを用いた場合に比べて加算器数が減ることによる消費電流の削減効果が期待できる。このように、被乗数Aの3倍値3Aを事前計算して、乗数の2ビット値に応じて対応する値を加算する演算方法は、回路構成および消費電流の点で優れている。しかし、3Aの事前計算に要する時間は、8ビット乗算の場合は10ゲート遅延程度であるが、16ビット乗算の場合は18ゲート遅延、32ビット乗算の場合は34ゲート遅延、そして、64ビット乗算の場合は66ゲート遅延程度を要する。すなわち、乗算対象となるデータのビット幅が増加するにつれて、乗算時間に対する事前計算の時間が無視できなくなる。そこで、これを改善する方法として、事前計算の3A演算は元々の値とそれを1ビット上位側にシフトした値との加算という限定された加算であることを利用した構成例を、次に説明する。[3倍値演算部の他の構成]図24乃至28は、第3の実施の形態における3倍値演算部200の第2の構成例を示す図である。この3倍値演算部200の第2の構成例は、8ビットの被乗数A2進数表記:a0乃至a7を入力として、10ビットの3倍値3A、2進数表記:a0乃至a9を出力することを想定している。この3倍値演算部200の第2の構成例では、4ビット単位で演算し、この演算回路からCLACarryLookAhead演算に用いられるGGenerate信号とPPropagate信号も生成する。そして、各4ビット演算単位からのGおよびP信号を用いてキャリーを事前演算で生成して、それを用いて各4ビット演算単位の演算結果のキャリー処理をする。これにより、3Aの演算時間を短縮する構成が実現できる。図29は、第3の実施の形態における3倍値演算部200の第3の構成例を示す図である。この3倍値演算部200の第3の構成例は、16ビットの被乗数A2進数表記:a0乃至a15を入力として、18ビットの3倍値3A、2進数表記:a0乃至a17を出力することを想定している。この3倍値演算部200の第3の構成例は、4ビット単位で演算する点で第2の構成例と同様である。この3倍値演算部200の第3の構成例では、16ビットの被乗数の3倍値の事前計算を、7ゲート遅延で終了することができる。先読みするキャリーを増やしても、同じ遅延時間で事前計算を終了することができる。しかし、先読みするキャリーを増やすと、CLA演算に要する演算素子の入力数は増え、例えば32ビットの被乗数の3倍値の事前計算を行う場合、8入力のNAND回路またはNOR回路が必要となる。さらに、64ビットの場合は、16入力のNAND回路またはNOR回路が必要となって、現実的ではなくなる。現実的な方法として、例えば64ビットの被乗数の3倍値の事前計算をする場合、演算を上位下位の32ビットずつの演算に分け、下位32ビットの演算結果からのキャリーを上位32ビット演算のキャリー入力とする構成を採ることができる。この場合、上位32ビットの演算結果は、下位32ビットの演算結果より2ゲート遅延だけ遅れて確定するが、この9ゲート遅延は問題とならないレベルと考えられる。このように、第3の実施の形態によれば、被乗数Aの3倍値3Aを事前計算することにより、加算器マトリクスの段数を削減し、加算器の数を減少させることができる。<4.第4の実施の形態>[乗算回路の全体構成]図30は、第4の実施の形態における乗算回路の全体構成例を示す図である。この乗算回路は、被乗数レジスタ110と、乗数レジスタ120と、入力値生成部302と、乗算部404と、エンコーダ600と、同期制御部700とを備えている。乗算部404以外の構成は、第2の実施の形態のものと同様であるため、詳細な説明を省略する。乗算部404は、入力値生成部302から供給された被乗数Aおよび乗数Bのデコードデータを乗算し、その乗算結果のデコードデータを生成する演算器である。この乗算部404は、ブースのアルゴリズムを適用した構成に対してワレスツリーを適用することにより構成される。なお、乗算部404は、特許請求の範囲に記載の乗算部の一例である。なお、入力値生成部302は、第2の実施の形態におけるものと同様であり、第1の実施の形態と比べて、ブースデコーダを有する点が異なる。[乗算部の構成]図31および図32は、第4の実施の形態における乗算部404およびエンコーダ600の構成例を示す図である。この乗算部404は、入力値生成部302においてブースのアルゴリズムが適用されたことを前提として、加算器マトリクスにおいてワレスツリーおよびフルアダーを構成している。入力値生成部302から乗算部404の各ワレスツリーまたはフルアダーに供給されるデコードデータDの対応関係は図17、図31および図32に図示するとおりである。この第4の実施の形態においては演算段数の変化はなく、加算器マトリクスでの演算時間の短縮効果は得られない。ただし、この第4の実施の形態では、デコード単位内でのビット間のキャリーが内在されるため、ビット間のキャリー信号が不要となり、消費電流の削減効果はある。<5.第5の実施の形態>[乗算回路の全体構成]図33は、第5の実施の形態における乗算回路の全体構成例を示す図である。この第5の実施の形態における乗算回路は、加算マトリクスのデータを縦に見てワレスツリーにより加算するものである。この乗算回路は、被乗数レジスタ110と、乗数レジスタ120と、入力値生成部305と、乗算部405と、エンコーダ600と、同期制御部700とを備えている。入力値生成部305および乗算部405以外の構成は、第1の実施の形態のものと同様であるため、詳細な説明を省略する。入力値生成部305は、乗算部405に対する入力値を生成して乗算部405に供給するものである。乗算部405は、入力値生成部305から供給された入力値の乗算結果を算出して、その乗算結果のデコードデータを生成する演算器である。なお、乗算部405は、特許請求の範囲に記載の乗算部の一例である。[入力値生成部の構成]図34は、第5の実施の形態における入力値生成部305の構成例を示す図である。ここでは、8ビットの被乗数A2進数表記:a0乃至a7および乗数B2進数表記:b0乃至b7を想定している。この第5の実施の形態では、被乗数Aおよび乗数Bの各ビットの部分積が生成され、乗算部405の加算器マトリクスに対する入力値とされる。[乗算部の構成]図35は、第5の実施の形態における乗算部405およびエンコーダ600の構成例を示す図である。乗算部405は、4個のバイナリデータのハーフアダーと、4個のバイナリデータのフルアダーと、5個のデコードデータのハーフアダーと、8個のデコードデータのフルアダーと、1個のOR回路とを備えている。また、この乗算部405は、19個のカウントデコーダCDと、1個のデコーダDecと、5個の合成回路と、5個のDCAとを備えている。カウントデコーダCDは、ビット列単位で3ビット毎に1の数をカウントして、そのデコード値を生成するカウントアンドデコード回路である。デコーダDecは、図2に示したように、2進数データからデコードデータへのデコードを行うデコード回路である。合成回路は、各ビットを加算する際に2ビットずつで重なり合うビットを合成するものである。図36aは、図35において最も処理の多い8ビットの処理をする部分であるWT_7の回路構成を示す図である。従来構成では、7個の加算器で構成され、下位ビット側からのキャリー入力および上位ビット側へのキャリー出力はともに5本である。これに対して、この第5の実施の形態では、カウントデコーダCDが3個配置され、この回路で3ビットの入力値からデコードデータを生成し、DFAへ供給されることにより加算処理が実行される。DFA加算器の個数は3個であり、下位ビット側からのキャリー入力および上位ビット側へのキャリー出力はともに2本である。これは、DFA回路が2ビットのデコードデータの加算回路であり、デコード単位内のビット間のキャリーは内在させているためである。これにより、従来構成のFAでは、3ビットのデータ入力に対して1本のキャリー出力が発生するが、DFA構成では最大で7ビットのデータ入力に対して1本のキャリー出力が発生することになる。したがって、上位ビットへのキャリー出力および下位ビットからのキャリー入力の本数が減り、それに伴ってキャリー処理のための加算器の個数が減り、キャリー処理に伴う加算器での消費電流が削減される。この演算は、各演算対象ビットの縦の加算を行うが、演算結果は2ビットのデコードデータとなり、演算の最後において隣接するビットの2ビットデコードデータとの加算処理を行う必要がある。このため、隣接する両隣のデータから値を合成する処理と、合成結果と加算する処理とが最後に配置されている。この例では、最初にカウントデコーダCDにおいてデコード値に変換したデータで加算処理を行い、最後に隣接するデータからの合成値と加算処理する必要がある。この処理は必ず実行する必要のある処理であるが、乗算するデータのビット数が多くなるに従って、この合成および加算の処理時間の比率は小さくなり、演算時間の短縮効果は大きくなる。図36bは、加算するビット数が16ビットの場合の回路構成を示す図である。従来のようにバイナリの加算器によって処理した場合には、例えば、加算器の個数は16個で、下位ビットからのキャリー入力および上位ビットへのキャリー出力はともに15本であり、これが加算器の数が多い一因となっている。それに対して、本技術を適用した場合、4個のカウントデコーダCDと5個のDFA回路および1個の合成回路によって構成され、下位からのキャリー入力および上位へのキャリー出力はともに4本で、従来構成に比べて格段に少ない。この第5の実施の形態では、各ビットで所定ビットの1の個数HW:HammingWeightを計数した値をデコードデータに変換して、デコードデータでの演算を行う。そして、キャリー処理回路の直前でビット重みのあるデコードデータに変換して、キャリー処理を行う。図37は、第5の実施の形態におけるカウントデコーダCDの構成例を示す図である。この第5の実施の形態では縦方向でデコードデータを生成するが、この場合、演算対象のビット重みは同じであるため、例えば3ビットを加算して、その加算結果をデコードして入力値として用いる。この例では、カウントデコーダCDは、3ビットの2進数データCin_0乃至Cin_2を入力として、4ビットのデコードデータd0乃至d3を出力する。また、このカウントデコーダCDの出力段には、演算前に出力を固定値0000に制御するためのリセット信号RSTが入力されている。乗算開始時に、カウントデコーダCDにおいて、リセット信号RSTを所定期間ローレベルとし、カウントデコーダCDの出力のデコードデータを固定値0000に制御することにより、DFA回路ツリーの出力を一旦、固定値0000に制御する。これにより、DFAの各入力は固定値0000に設定され、リセット信号RSTがハイレベルとされた後、DFAは2つの入力が固定値0000からともにデコードデータになってはじめて出力値が固定値0000からデコードデータに変化する。そして、デコードデータは下段のDFAに入力され、中間値への遷移が発生しないように制御される。これらにより、加算器等の回路素子の数はこの例では約3分の2になり、さらに中間値への遷移も抑えられることにより、消費電流の削減効果は大きくなる。図38は、第5の実施の形態における合成処理に関する概念図である。第5の実施の形態では、各ビットの加算結果は、2ビットのデコード値とキャリーであり、隣接するビットの演算結果と重なる演算結果がある。そのため、演算の最終段階において、隣接するビットの演算結果からの合成値との加算処理を行って、キャリー処理回路へ入力する値を生成する合成処理が必要となる。ここで、ビットbnの加算結果の2ビットのデコードデータに着目すると、この値は、ビットbn1の加算結果のデコード値の上位側の値とbn1の加算結果の下位側の値と重なっている。そのため、対応する2つのデコードデータからの合成により加算値を生成し、ビットbnの加算結果のデコードデータと加算処理する。図39は、第5の実施の形態における合成回路450を付加したDFA回路の構成例を示す図である。この図は、図8のDFA回路に対して合成回路450を付加した構成となっている。合成回路450は、各ビットを加算する際に2ビットずつで重なり合うビットを合成するものである。図35の各加算器による加算結果は、隣接する加算結果と1ビットずつ重なっている。そのため、隣接する加算結果から合成により演算結果を生成し、デコードデータの結果を得る。図40は、第5の実施の形態における合成回路450の真理値表の例を示す図である。このように、第5の実施の形態によれば、従来では縦のビットの値に対して行われていた処理が、横のビットの値に対しての演算に変換される。そして、この変換により、キャリー処理回路での処理に、上述の他の実施の形態の構成例を適用することができ、高速なキャリー処理が可能となり、ここでも処理時間の短縮効果を得ることができる。<6.第6の実施の形態>[積和演算回路の全体構成]図41は、第6の実施の形態における積和演算回路の全体構成例を示す図である。この第6の実施の形態は、多倍長乗算を想定したものであり、積和演算の途中結果を保持しながら加算を行う。この第6の実施の形態における積和演算回路は、被乗数レジスタ110と、乗数レジスタ120と、3倍値演算部200と、入力値生成部303と、積和演算部501と、エンコーダ600と、同期制御部700とを備えている。この第6の実施の形態における積和演算回路は、第3の実施の形態における乗算回路をベースにしたものであり、積和演算部501以外の構成は、第3の実施の形態のものと同様である。なお、積和演算部501は、特許請求の範囲に記載の乗算部の一例である。例えば、公開鍵暗号では、その演算過程で複数回の乗算処理が行われる。この公開鍵暗号は、乗算器のビット幅より遥かに大きい値をべき乗剰余演算して暗号化ならびに復号化の処理を行う暗号である。例えば、32ビットの乗算を行う場合で、乗算器の幅が8ビットの場合、図42に示すように8ビットの乗算器の下に18ビットの加算器およびレジスタを配置される。被乗数および乗数はメモリに格納され、必要に応じてメモリから取り出されて乗算器にセットされる。各ワードの演算終了後に、乗算結果がメモリに格納される。図43は、32ビット乗算を8ビット毎に区切って乗算する多倍長乗算の演算フローの一例を示す図である。まず、ステップ1では、被乗数A0と乗数B0をメモリから取り出して乗算し、演算結果をレジスタに格納する。格納された値のうち下位8ビットは、多倍長乗算の最下位ワードとしてメモリに出力される。ステップ2では、被乗数A1と乗数B0をメモリから取り出して乗算し、その演算結果を、レジスタ値を8ビット下位側にシフトした値と加算する。その加算結果はレジスタに格納される。ステップ3では、被乗数A0と乗数B1をメモリから取り出して乗算し、その演算結果を同じビットのレジスタ値と加算し、その演算結果をレジスタに格納する。格納された値のうち下位8ビットは、多倍長乗算の下位2番目のワードとしてメモリに出力される。ステップ4では、被乗数A2と乗数B0をメモリから取り出して乗算し、その演算結果を、レジスタ値を8ビット下位側にシフトした値と加算して、その加算結果をレジスタに格納する。ステップ5では、被乗数A1と乗数B1をメモリから取り出して乗算し、その演算結果を同じビットのレジスタ値と加算して、その演算結果をレジスタに格納する。ステップ6では、被乗数A0と乗数B2をメモリから取り出して乗算し、その演算結果を同じビットのレジスタ値と加算して、その演算結果をレジスタに格納する。格納された値のうち下位8ビットは、多倍長乗算の下位3番目のワードとしてメモリに出力される。以後、同様な操作が繰り返される。この多倍長乗算の各サイクルの積和演算において、乗算器内では加算器マトリクスの加算とキャリー処理によって乗算結果を生成し、その乗算結果に対して直前までの加算結果と加算してキャリー処理して、そのサイクルでの演算処理を実行している。多倍長乗算では、必ず積和演算が必要であるため、暗号等の多倍長乗算器を設計する場合、積和演算の途中結果である加算値も、乗算器の加算器マトリクスでの演算対象に加える構成を採用することができる。その構成例を図44に示す。[積和演算部の構成]図44は、第6の実施の形態における積和演算部501およびエンコーダ600の構成例を示す図である。積和演算部501は、5個のハーフアダーDHAと、15個のフルアダーDFAと、キャリー処理回路2つのDCA2と、8個の4ビットレジスタRegと、8個のスイッチと、2ビットカウンタと、デコーダとを備えている。同じ3倍値演算を前提とした第3の実施の形態と比較して、加算器マトリクスの下部の各デコード単位に1個のDFAが追加され、最下段にはレジスタが配置されている。ハーフアダーおよびフルアダーに入力されるデコードデータDは、入力値生成部303またはスイッチから供給される。入力値生成部303から積和演算部501の各加算器に供給されるデコードデータDの対応関係は図22および図44に図示するとおりである。ハーフアダー、フルアダーおよびDCA2の内容は、上述の第1の実施の形態について説明したものと同様である。また、エンコーダ600も、上述の第1の実施の形態について説明したものと同様である。レジスタは、積和演算の途中結果を格納するものである。スイッチは、対応するDFAに供給する入力値を切り替えるものである。すなわち、DFA入力は、一方は上段のDFAからの乗算結果であり、他方はスイッチを介して同じデコード単位のデコードデータと乗算器のビット数分上位のデコード単位のデコードデータの何れかが入力される。このスイッチは、桁ワードが切り替わる時のみb側を選択する。例えば、上述のステップ1、3、5または6の場合にはスイッチのa側が選択され、ステップ2または4の場合にはスイッチのb側が選択される。この構成では、キャリー処理は1回でよくなり、消費電流および演算時間が改善される。ワレスツリー構成の乗算回路の場合、加算器マトリクスの段数と処理できるビット数との関係は1対1ではなく、その段数で処理できるビット数には幅があるため、加算対象のビット数が1ビット増えても、必ずしも加算器列の段数が1段増える訳ではない。したがって、乗算器の幅によっては、加算器列の段数や加算器の数を増やすことなく積和演算の途中結果の加算を組み込むことができる場合があり、通常の乗算と同じ演算時間で積和演算を実行できる可能性がある。このように、第6の実施の形態によれば、積和演算回路により多倍長乗算を実行することができる。この第6の実施の形態の積和演算回路による多倍長乗算の1サイクルの演算時間は、次式により表される。積和演算時間=加算器マトリクス演算時間キャリー処理時間ここで、加算器マトリクスの演算回路にワレスツリー構成を用いない場合は、加算器マトリクス演算時間およびキャリー処理時間は次式のようになる。加算器マトリクス演算時間=DFA演算時間×DFA段数キャリー処理時間=所定ビット単位のキャリー処理時間×乗算器のビット数/所定ビットこれに対し、ワレスツリー構成を用いる場合、加算器マトリクス演算時間のみが以下のように短縮される。加算器マトリクス演算時間=CDec処理時間DFA演算時間×DFA最大段数ビット間合成処理時間これを動作電流の観点から見た場合、キャリー処理回路においては下位ビットからシリアルに実行されるため、加算器マトリクスの処理に比べて消費電流が極めて少ない。多倍長乗算で用いられる積和演算回路は、プロセッサ等から演算命令が発行されると、コントローラまたはソフトウェアにより所定回数の積和演算が連続して実行され、このときの最大動作周波数は、上述の積和演算時間の逆数が上限となる。この最大動作周波数を上げるための構成について次に説明する。<7.第7の実施の形態>[積和演算回路の全体構成]図45は、第7の実施の形態における積和演算回路の全体構成例を示す図である。この第7の実施の形態における積和演算回路は、被乗数レジスタ110と、乗数レジスタ120と、3倍値演算部200と、入力値生成部303と、積和演算部502と、エンコーダ600と、同期制御部700とを備えている。この第7の実施の形態における積和演算回路は、積和演算部502以外の構成は、第6の実施の形態のものと同様である。なお、積和演算部502は、特許請求の範囲に記載の乗算部の一例である。この第7の実施の形態における積和演算部502では、図46のように加算器マトリクスとキャリー処理回路の間にレジスタ列の位置を配置する。この構成の場合、乗算のビット幅1ワードより大きいビットの各デコード単位で、1個のキャリーの保存のためのレジスタも必要となる。[積和演算部の構成]図47は、第7の実施の形態における積和演算部502およびエンコーダ600の構成例を示す図である。積和演算部502は、5個のハーフアダーDHAと、15個のフルアダーDFAと、キャリー処理回路2つのDCA2と、8個の4ビットレジスタRegと、8個のスイッチと、5個のキャリーレジスタCRと、2ビットカウンタと、デコーダとを備えている。すなわち、この第7の実施の形態における積和演算部502は、第6の実施の形態の積和演算部501と比較して、5個のキャリーレジスタCRが追加された点が異なる。このキャリーレジスタCRは、デコードデータのレジスタの位置を移動したことに伴って必要となったものであり、デコード単位で1個のキャリーを保存するためのレジスタである。[積和演算回路の動作]図48は、第6および7の実施の形態における積和演算のタイミングを比較するための図である。第6の実施の形態では、図48aのように、加算器マトリクスの乗算、レジスタC値の加算およびキャリー処理が逐次に行われる。これに対し、第7の実施の形態では、図48bのように、加算器マトリクスの乗算が終了すると、演算結果はレジスタに取り込まれる。このとき、下位ワードはキャリー処理の必要もなく、演算結果は確定している。そして、加算器マトリクスでは次の乗算が実行されているのと並行して、レジスタに取り込まれた上位ワードでデコードデータとキャリー値とからキャリー処理の演算が実行され、演算結果は加算器マトリクスの入力の1つに供給される。キャリー処理の処理時間は、加算器マトリクスの演算が最終段に達する時間より短いことが望ましい。この構成を採ることにより、積和演算の処理時間のうち、キャリー処理の時間は見えなくなり、かつ、サイクル内で増加する消費電流はキャリー処理の電流だけであるため、消費電流は僅かに増加するが、動作周波数をかなり高くすることが可能となる。加算器マトリクスをワレスツリーによって構成する場合、ワレスツリーの最終段近くでキャリー処理回路からの加算値を加算する構成を採れば、ワレスツリー構成でもこの効果を実現することができる。このように、第7の実施の形態によれば、加算器マトリクスとキャリー処理回路の間にレジスタを配置することにより、キャリー処理時間を見えなくすることができ、多倍長乗算の動作周波数を高くすることができる。なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。なお、本技術は以下のような構成もとることができる。1所定のデコード単位ごとに被乗数データおよび乗数データを区切って、前記区切られた被乗数データおよび乗数データの複数の部分乗算結果を、前記区切られた被乗数データおよび乗数データよりも広いデータ幅を有する固定値から所定ビット数だけ異なる値を示すデコードデータとして生成する入力値生成部と、前記入力値生成部によって生成された前記複数の部分乗算結果のデコードデータを、対応する桁の前記デコード単位ごとに加算することによって、デコードされた乗算データを生成する乗算部と、前記乗算部によって生成された前記デコードされた乗算データをデコード単位ごとにエンコードすることによって、前記被乗数データと前記乗数データとの間の乗算結果を出力するエンコーダとを具備する乗算回路。2前記乗算部は、前記複数の部分乗算結果のデコードデータとして前記固定値が入力されている間は前記デコードされた乗算データとして前記固定値を出力する前記1に記載の乗算回路。3前記区切られた被乗数データの3倍値を演算して生成する3倍値演算部をさらに具備し、前記入力値生成部は、前記乗数データの所定のフィールドに基づいて選択信号を生成し、前記選択信号に従って、前記区切られた被乗数データ、当該区切られた被乗数データを1ビット左シフトすることにより得られた2倍値、および、前記3倍値の何れかを前記デコードデータとして生成する前記1または2に記載の乗算回路。4前記入力値生成部は、前記乗数データの所定のフィールドに基づいて選択信号を生成し、前記選択信号に従って前記区切られた被乗数データの-2倍、-1倍、0倍、1倍または2倍の何れかを前記デコードデータとして生成する前記1または2に記載の乗算回路。5リセット信号を出力する同期制御部をさらに具備し、前記入力値生成部は、前記リセット信号に同期して前記複数の部分乗算結果を生成する前記1から5のいずれかに記載の乗算回路。