JP3710193B2 - 積和演算回路 - Google Patents
積和演算回路 Download PDFInfo
- Publication number
- JP3710193B2 JP3710193B2 JP05303896A JP5303896A JP3710193B2 JP 3710193 B2 JP3710193 B2 JP 3710193B2 JP 05303896 A JP05303896 A JP 05303896A JP 5303896 A JP5303896 A JP 5303896A JP 3710193 B2 JP3710193 B2 JP 3710193B2
- Authority
- JP
- Japan
- Prior art keywords
- overflow
- output
- booth
- circuit
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
本発明は、並列乗算器等に用いられる積和演算回路に係り、詳細には、例えば2次ブース(Booth)理論及び符号拡張方式の乗算器を用いた積和演算回路に関する。
【0002】
【従来の技術】
乗算器はディジタル演算処理装置において加算器、遅延回路とともに最も基本的な回路の1つであり、集積度の向上によりMbit×Nbit乗算を一気に実行する並列乗算器も既にオンチップ化されている。並列乗算器の基本的な構造は、被乗数に乗数の1bitを掛け合わせた結果得られる部分積生成と、生成された部分積を乗数bitの重みに従って桁を合わせ加算する積和演算回路からなる。
【0003】
従来のこの種の積和演算回路としては、例えば「ディジタルCMOSの回路設計」コロナ社,p184〜p191に記載されたものがある。
【0004】
乗算アレイの構造を符号拡張の扱いの差により、主に3パターンの区分が広く知られており、最も単純な構造の符号拡張方式と、上記文献による符号伝搬方式及び符号生成方式(符号不拡張方式)である。
【0005】
従来、乗算器を用いた積和演算器では累積を計算する際のオーバーフローを検出することが困難であった。累積計算時のオーバーフロー発生は後のデータの値が全く不正確となるため、信号処理等の処理ではオーバーフローは避けなければならない。これを避けるには演算実行毎にオーバーフローの発生の有無をチェックする必要がある。さらには、オーバーフローが発生した時には、計算結果を正又は負の最大値に抑える飽和演算を行う場合もある。何れにしても積和演算においてオーバーフローの検出を行うということは極めて重要なことであり、この処理を高速かつハード量を少なく実行することが望まれる。
【0006】
本来、(Mbit×Nbit)の乗算を行い、(M+N)bitの積を得る場合、(M+N)bitを超えるオーバーフローを発生することはない。しかし、符号拡張方式の乗算アレイ部において、2次のブース(Booth)理論を用いた場合、部分積加算時に符号拡張部の加算によりキャリーアウトが発生することがある。これは2次のブース理論により、「−1」あるいは「−2」とエンコードされた場合の部分積は、被乗数の2の補数を(M+N)bitに符号(この場合、1)拡張するためである。ちなみに、更に「−2」にエンコードされた場合は1bit上位側にシフトする。
【0007】
この場合、出力される桁上げ出力を無視するために、乗算アレイ部では、(M/2)個の部分積を2個の中間積に圧縮し、それらを2入力桁上げ伝搬加算器に入力し、その加算和を積として得ておき、2入力桁上げ伝搬加算器によって得た積と累積データを加算するためにはもう1つ別の2入力桁上げ伝搬加算器を用意し、その加算器に積と累積データを入力していた。
【0008】
図4は上述した飽和演算機能付き積和演算回路の回路構成図である。
【0009】
図4において、積和演算回路10は、ブースエンコーダ11、乗算アレイ12及び2入力加算器13,14から構成される。
【0010】
上記ブースエンコーダ11は、2次のブース(Booth)理論を用いるために、乗数のうち隣り合う3bitを選択条件とするブースエンコードを行うためのものである。
【0011】
上記乗算アレイ12は、被乗数にブースエンコーダ11によりエンコードされた乗数を掛け合わせて部分積を生成する。
【0012】
上記2入力加算器13は、乗算アレイ12からの部分積を加算するための加算器である。
【0013】
上記2入力加算器14は、2入力加算器13からの積に累積データを加算するための加算器である。
【0014】
このように、積和演算回路10では、累積の計算を2入力加算器13,14を2段直列接続し、後段の2入力加算器14で累積データを加算し出力された積和演算結果からオーバーフローの判定を行っていた。
【0015】
【発明が解決しようとする課題】
しかしながら、このような従来の積和演算回路10にあっては、累積データを加算するために2つの2入力加算器13,14を備えた構成となっていたため、回路規模が大きくなり、かつ遅延性能への影響も大きく動作周波数の改善が難しいという問題点があった。
【0016】
この問題を改善するためには、2入力加算器の入力側に全加算器を設け、この全加算器で2個の中間積と累積データを加算して出力を2本に絞り、この出力を加算する方法を用いればよい。ところが、これまでは積和演算時に発生する桁上げ出力が、積生成時に生じる無視するべきオーバーフロー発生の要素を2個の中間積が含んでいるため、オーバーフロー出力が不正確となりそのまま全加算器に入力することはできなかった。
【0017】
本発明は、積生成時の不要なオーバーフロー発生を予測することができ、飽和演算機能付き符号拡張方式の積和演算回路においても2入力加算器を2つ別々の回路で必要とせず、遅延性能及び積和演算のスループットを高めることができる積和演算回路を提供することを目的とする。
【0018】
【課題を解決するための手段】
本発明に係る積和演算回路は、2進数Nビット(Nは任意のビット数)の乗数から2次のブースエンコード結果を生成するブースエンコーダと、2次のブース理論及び符号拡張方式を用いて、2進数Mビット(Mは任意のビット数)の被乗数及び前記ブースエンコード結果から部分積を生成・加算し、2個の中間積に圧縮して出力する乗算アレイと、前記2個の中間積と前記累積データとを加算して2個の出力に絞る桁上げ保存加算器と、前記桁上げ保存加算器からの前記2個の出力を加算して(M+N)ビットの積和演算結果及びキャリーアウトを生成する桁上げ伝搬加算器と、前記被乗数及び前記乗数から前記積を生成するときに(M+N)ビットを超えるオーバーフローが発生するか否かを予測するオーバーフロー予測回路と、前記オーバーフロー予測回路が、オーバーフローが発生しないと予測したときに前記桁上げ伝搬加算器で生成されたキャリーアウトをそのまま出力し、オーバーフローが発生すると予測したときに前記桁上げ伝搬加算器で生成されたキャリーアウトを出力させない飽和処理手段とを有するものである。
【0019】
また、前記オーバーフロー予測回路が、前記被乗数がすべて0の場合を検出するオールゼロ検出部と、前記乗数から2次のブースエンコード結果を生成する予測用ブースエンコード部とを有し、前記被乗数がすべて0の時にはオーバーフローが発生しないと予測し、前記被乗数がすべて0の時以外で、且つ、前記予測用ブースエンコード部によるブースエンコード結果が−1又は−2の出力を含まないときには、オーバーフローが発生しないと予測し、前記被乗数がすべて0の時以外で、且つ、前記予測用ブースエンコード部によるブースエンコード結果が−1又は−2の出力を複数個含むときには、オーバーフローが発生すると予測し、前記被乗数がすべて0の時以外で、且つ、前記予測用ブースエンコード部によるブースエンコード結果が−1又は−2の出力を1個のみ含むときにおいて、−1又は−2の出力が最上位で出力される第1の場合にはオーバーフローが発生しないと予測し、−1又は−2の出力よりも上位の出力がすべて0で出力される第2の場合にはオーバーフローが発生しないと予測し、前記第1及び第2の場合以外の第3の場合にはオーバーフローが発生すると予測する構成としてもよい。
【0020】
また、前記オーバーフロー予測回路が、オーバーフローが発生すると予測したときに1を出力し、オーバーフローが発生しないと予測したときに0を出力し、前記飽和処理手段は、前記オーバーフロー予測回路の出力と前記桁上げ伝搬加算器で生成されたキャリーアウトとを入力とする排他的論理和素子である構成としてもよい。
【0023】
【発明の実施の形態】
本発明に係る積和演算回路は、2次ブース(Booth)理論及び符号拡張方式の乗算器を用いた(Mbit×Nbit)+(M+N)bitの積和演算回路に適用することができる。
【0024】
図1は本発明の第1の実施形態に係る積和演算回路の構成図である。図1に示す積和演算回路は符号拡張方式の乗算アレイを用いた積和演算回路に適用した例である。
【0025】
図1において、積和演算回路100は、入力端子101,102,103、ブースエンコーダ104、オーバーフロー予測回路105(オーバーフロー予測手段)、乗算アレイ106、桁上げ保存加算器107、2入力加算器108、排他的論理和ゲート109及び出力端子110,111から構成される。入力端子101には被乗数が、入力端子102には乗数が、入力端子103には累積データがそれぞれ入力され、出力端子110から積和演算結果が、出力端子111からオーバーフローが出力される。
【0026】
上記桁上げ保存加算器107及び2入力加算器108は、全体として加算手段112を構成する。
【0027】
上記ブースエンコーダ104は、入力された乗数により2次ブースエンコードを行い、エンコード結果(+2,+1,0,−1,−2)を出力する。
【0028】
上記オーバーフロー予測回路105は、被乗数及び乗数に基づいて積生成時に不要なオーバーフローが発生するか否かを予測し、不要なオーバーフローが発生するときは「1」を、発生しないときは「0」を出力する。
【0029】
上記乗算アレイ106は、符号拡張方式の乗算アレイ部であり、被乗数とブースエンコーダ104からの出力により(M/2)個の部分積を生成・加算し、2個の中間積に圧縮して出力する。
【0030】
上記桁上げ保存加算器107は、乗算アレイ106から出力された2個の中間積と累積データを加算して出力を2本に絞る。
【0031】
上記2入力加算器108は、桁上げ保存加算器107からの2本の出力を加算する(M+N)bitの最終桁上げ伝搬加算器であり、加算和を積和演算結果として出力し、(M+N)bitを超えるキャリーアウトも出力する。
【0032】
上記排他的論理和ゲート109は、オーバーフロー予測回路105からの出力と2入力加算器108のキャリーアウト出力との排他的論理和をとりその排他的論理和出力をオーバーフローとして出力する。
【0033】
このように、積和演算回路100は、2次のブース理論を用いてブースエンコードを行うブースエンコーダ104と、被乗数とブースエンコーダ104からの出力により(M/2)個の部分積を生成・加算し、2個の中間積に圧縮して出力する乗算アレイと106と、被乗数及び乗数に基づいて積生成時に不要なオーバーフローが発生するか否かを予測するオーバーフロー予測回路105と、乗算アレイ106から出力された2個の中間積と累積データを加算して出力を2本に絞る桁上げ保存加算器107と、桁上げ保存加算器107からの2本の出力を加算し、加算和を積和演算結果として出力し、(M+N)bitを超えるキャリーアウトも出力する2入力加算器108と、オーバーフロー予測回路105からの出力と2入力加算器108のキャリーアウト出力との排他的論理和をとる排他的論理和ゲート109とを備えて構成する。
【0034】
図2は上記オーバーフロー予測回路105の回路構成を示す図であり、このオーバーフロー予測回路105の回路動作は後述する図3のフローで示される。
【0035】
図2において、オーバーフロー予測回路105は、入力端子201,202、ALL0検出回路203(ALL0検出手段)、ブースマイナス判定回路204、2進木・逆2進木AND回路205、ブースマイナス・1連続性判定回路206、ブースマイナスカウンタ207、2入力AND回路208,209、4入力OR回路210、AND回路211及び出力端子212から構成される。入力端子201には被乗数が、入力端子202には乗数がそれぞれ入力され、出力端子212からはオーバーフローが出力される。
【0036】
上記ブースマイナス判定回路204、2進木・逆2進木AND回路205、ブースマイナス・1連続性判定回路206、ブースマイナスカウンタ207、2入力AND回路208,209、4入力OR回路210及びAND回路211は、全体として判定手段213を構成する。
【0037】
上記ALL0検出回路203は、入力された被乗数がALL0の場合は「1」を出力し、ALL0でない場合は「0」を出力する。
【0038】
上記ブースマイナス判定回路204は、N/2組のANDNRとインバータから構成され、該当する入力3bitをブースエンコーダ104に入力した際に「−1」あるいは「−2」がブースエンコーダ104から出力される場合に「1」を出力する。
【0039】
上記2進木・逆2進木AND回路205は、入力された乗数において最上位bitから各奇数bitまでの「1」の連続性の判定を行う。論理的には、最上位bitから各奇数bitまでの乗数を入力とする(N/2−1)出力の多入力AND回路となるが、2進木・逆2進木構造を採用することにより、効率的に実現することが可能である。また、乗数入力は最上位bit(ここでは、0)から最下位から2bit目(ここでは、N−3)までである。
【0040】
上記ブースマイナス・1連続性判定回路206は、ブースマイナス判定回路204のN/2本の出力のうち最上位の出力を除いた(N/2−1)本とブースマイナス判定回路204からの(N/2−1)本の出力を入力とし、それぞれの入力を上位側から2入力ANDに入力し、出力される(N/2−1)本の信号のOR論理をとることでブースマイナスを出力したエンコーダ入力より上位の乗数がALL1である場合を検出する。
【0041】
上記ブースマイナスカウンタ207は、ブースマイナス判定回路204の出力するN/2bitの信号に含まれる「1」の個数をカウントし、0個、1個、複数個の3つのパターンに分類し、それぞれに対応する端子に「1」を出力し、他の端子には「0」を出力する。
【0042】
上記2入力AND回路208は、ブースマイナスカウンタ207の「=1」出力を入力とブースマイナス・1連続性判定回路206の出力を入力とし、ブースマイナスが1個であり、ブースマイナスを出力したエンコーダ入力より上位の乗数がALL1である場合を検出する。
【0043】
上記2入力AND回路209は、ブースマイナスカウンタ207の「=1」出力を入力とブースマイナス・1連続性判定回路206の出力を入力とし、ブースマイナスが1個であり、ブースマイナスを出力したエンコーダが最上位のエンコーダである場合を検出する。
【0044】
上記4入力OR回路210は、ブースマイナスカウンタ207の「≧2」出力と2入力AND回路208の否定及び2入力AND回路209の否定を入力とし、被乗数がALL0ではない時のオーバーフローを検出する。
【0045】
上記AND回路211は、ALL0検出回路203の出力の否定と4入力OR回路210の出力を入力とし、積生成時に発生する不要なオーバーフローを出力する。
【0046】
次に、上述のように構成された積和演算回路100の動作を説明する。
【0047】
本積和演算回路100は、乗算には2次ブース理論と符号拡張方式を採用した乗算アレイを用い、かつ積結果と累積結果の加算器に対し、オーバーフロー予測回路105を設け、累積計算時に発生するオーバーフロー検出を行うことにより累積用3入力加算器を桁上げ保存加算器と2入力加算器で構成可能にしたことを特徴としている。
【0048】
まず、積和演算回路100の全体動作を説明し、次いで図3のフローチャートを参照しながらオーバーフロー予測回路105の動作について説明する。
【0049】
図1に示すように、入力端子101に被乗数、入力端子102に乗数、入力端子103に累積データがそれぞれ入力されると、
ブースエンコーダ104は、入力された乗数により2次ブースエンコードを行い、エンコード結果(+2,+1,0,−1,−2)を乗算アレイ106に出力する。
【0050】
一方、入力端子101,102に入力された被乗数、乗数はオーバーフロー予測回路105にも入力され、オーバーフロー予測回路105は、後述するように被乗数及び乗数に基づいて積生成時に不要なオーバーフローが発生するか否かを予測し、不要なオーバーフローが発生するときは「1」を、発生しないときは「0」を出力する。
【0051】
乗算アレイ106では、符号拡張方式により、被乗数とブースエンコーダ104からの出力により(M/2)個の部分積を生成・加算し、2個の中間積に圧縮して桁上げ保存加算器107に出力する。桁上げ保存加算器107では、乗算アレイ106から出力された2個の中間積に、入力端子103から入力された累積データを加算して出力を2本に絞り2入力加算器108に出力する。
【0052】
2入力加算器108では、桁上げ保存加算器107からの2本の出力を桁上げ加算し、積和演算結果(M+N)bitを出力端子110から出力するとともに、(M+N)bitを超えるキャリーアウトを排他的論理和ゲート109に出力する。排他的論理和ゲート109は、オーバーフロー予測回路105からの出力と2入力加算器108のキャリーアウト出力との排他的論理和をとりその排他的論理和出力をオーバーフローとして出力する。
【0053】
以下、図3のフローチャートを参照しながらオーバーフロー予測回路105の動作を説明する。
【0054】
図3はオーバーフロー予測回路105の動作を示すフローチャートであり、図2に示すオーバーフロー予測回路105の各部に対応する動作部分は破線で囲んでいる。
【0055】
図3に示すフローチャートは、以下1.及び2.のような判定を段階的に行っていることを示している。なお、図中、STはフローの各ステップを示す。
【0056】
1.被乗数がALL0の時
オーバーフローが発生することはない。
【0057】
2.被乗数がALL0ではない時
(1)乗数をブースエンコードした結果、−1、−2を出力するエンコーダがない場合
オーバーフローが発生することはない。
【0058】
(2)乗数をブースエンコードした結果、−1、−2を出力するエンコーダが複数個ある場合
オーバーフローが発生する。
【0059】
(3)乗数をブースエンコードした結果、−1、−2を出力するエンコーダが1個のみの場合
・−1、−2が最上位で出力される時は、オーバーフローが発生することはない。
【0060】
・−1、−2を出力するエンコーダよりも上位のエンコーダが全て「0」の時は、オーバーフローが発生することはない。なお、この場合、−1、−2を出力したエンコーダよりも上位のエンコーダの入力は、全て「1」でなければならない。エンコーダ出力が「0」となるケースはエンコーダの全出力が「0」の場合とエンコーダの全出力が「1」の場合があるが、全入力が「0」の場合は−1、−2を出力するエンコーダの1つ上位のエンコーダ出力が「0」とはなり得ないためである。
【0061】
・上記以外の場合、オーバーフローが発生する。
【0062】
具体的には、図3において、まず、ステップST1で入力端子201からALL0検出回路203に被乗数B=b0,b1,…,bn-1(但し、bn=0。また、nは語長を表す。)1.被乗数がALL0の時を入力し、ステップST2で数1に示す式に従って入力された被乗数BのALL0をとり、ステップST3でALL0か(Z=1か)否かを判別する。上記ステップST2及びステップST3の処理は図2のALL0検出回路203に相当し、入力された被乗数BがALL0の場合は「1」を出力し、ALL0でない場合は「0」を出力することになる。
【0063】
【数1】
【0064】
ステップST3でZ=1と判別したときは被乗数BがALL0であるからオーバーフローが発生することはないと判断しステップST4に進んでオーバーフロー予測回路105の処理を終える。
【0065】
ステップST3でZ=0と判別したときは被乗数BがALL0でない時であるから上述したように乗数のブースエンコードの結果として、オーバーフローが発生する可能性があると判断してステップST5に進む。ステップST5では、入力端子202からブースマイナス判定回路204に乗数A=a0,a1,…,an-1(但し、an=0。また、nは語長を表す。)を入力し、ステップST6でステップST7のブースマイナス判定をi≦n/2−1(nは語長)になるまでループさせる。
【0066】
すなわち、ステップST7で数2に示す式に従って、入力された乗数Aについて入力3bitをブースエンコーダ104に入力した際に「−1」あるいは「−2」がブースエンコーダ104から出力される計算を行い、「−1」あるいは「−2」が出力される時の個数yiをi≦n/2−1の各奇数bitまで繰り返す。
【0067】
上記ステップST6及びステップST7の処理は図2のブースマイナス判定回路204に相当し、該当する乗数入力3bitをブースエンコーダ104に入力した際に「−1」あるいは「−2」がブースエンコーダ104から出力される場合に「1」を出力することになる。ここで、ブースエンコーダ104は、入力された乗数により2次ブースエンコードを行い、エンコード結果(+2,+1,0,−1,−2)を乗算アレイ106に出力している。
【0068】
【数2】
【0069】
ステップST8では、数3に示す式に従って、入力3bitをブースエンコーダ104に入力した際に「−1」あるいは「−2」がブースエンコーダ104から出力される場合に「1」を出力する際の個数yiをカウントし、ステップST9でこのカウントをn/2−1になるまで繰り返す。
【0070】
【数3】
【0071】
ステップST10で上記個数yiをn/2−1になるまで繰り返した結果の総数xが0か(x=0か)、1か(x=1か)、複数か(x≧2か)を判別する。上記ステップST8〜ステップST10の処理は図2のブースマイナスカウンタ207に相当し、ブースマイナス判定回路204の出力するN/2bitの信号に含まれる「1」の個数をカウントし、0個、1個、複数個の3つのパターンに分類し、それぞれに対応する端子に「1」を出力し、他の端子には「0」を出力する。ここで、0個、1個、複数個の3つのパターンに分類しているのは、上述したように、被乗数がALL0ではない時において、乗数をブースエンコードした結果、−1、−2を出力するエンコーダの有無、又はその個数によってオーバーフローが発生する、若しくは発生しないことを判別するためである。
【0072】
ステップST10でx=0と判別したときには、被乗数がALL0ではないが−1、−2を出力するエンコーダがない場合であるからオーバーフローが発生することはないと判断してステップST4に進んでオーバーフロー予測回路105の処理を終える。
【0073】
ステップST10でx=0と判別したときには、ステップST11でブースエンコーダ104の「−1」あるいは「−2」の最初の個数y0が「1」であるか(y0=1か)否かを判別し、y0=1のときは−1、−2を出力するエンコーダが1個のみの場合であるが−1、−2が最上位で出力される時であるからオーバーフローが発生することはないと判断してステップST4に進んでオーバーフロー予測回路105の処理を終える。上記ステップST11の処理は図2のブースマイナス・1連続性判定回路206に相当する。
【0074】
ここで、図2に示すように、2進木・逆2進木AND回路205の2進木・逆2進木構造により、最上位bit(ここでは、0)から最下位から各奇数bitまでの「1」の連続性が判定され、ブースマイナス・1連続性判定回路206が、ブースマイナス判定回路204のN/2本の出力のうち最上位の出力を除いた(N/2−1)本とブースマイナス判定回路204からの(N/2−1)本の出力を入力とし、それぞれの入力を上位側から2入力AND208,209に入力し、出力される(N/2−1)本の信号のOR論理をとることでブースマイナスを出力したエンコーダ入力より上位の乗数がALL1である場合を検出するようにする。
【0075】
図3のフローに戻って、ステップST11でy0=1でないと判別したときは、ブースマイナスの個数y1,y2,…,y(n/2)-1が1(y1,y2,…,y(n/2)-1=1)の該当するステップST12〜ステップST14に分岐する。
【0076】
y1=1のときはステップST12で乗数a0とa1が「0」か「1」かを判別し、a0とa1が「0」のときは−1、−2を出力するエンコーダよりも上位のエンコーダが全て「0」の時であるからオーバーフローが発生することはないと判断してステップST4に進んでオーバーフロー予測回路105の処理を終え、a0とa1が「1」のときはオーバーフローが発生すると判断してステップST15に進んでオーバーフロー予測回路105の処理を終える。
【0077】
y2=1のときはステップST13で乗数a0,a1,a2及び3aが「0」か「1」かを判別し、a0,a1,a2及びa3が「0」のときは−1、−2を出力するエンコーダよりも上位のエンコーダが全て「0」の時であるからオーバーフローが発生することはないと判断してステップST4に進んでオーバーフロー予測回路105の処理を終え、a0,a1,a2及びa3が「1」のときはオーバーフローが発生すると判断してステップST15に進んでオーバーフロー予測回路105の処理を終える。
【0078】
y(n/2)-1=1のときはステップST14で乗数a0,a1,a2及びan-3が「0」か「1」かを判別し、a0,a1,a2及びan-3が「0」のときは−1、−2を出力するエンコーダよりも上位のエンコーダが全て「0」の時であるからオーバーフローが発生することはないと判断してステップST4に進んでオーバーフロー予測回路105の処理を終え、a0,a1,a2及びan-3が「1」のときはオーバーフローが発生すると判断してステップST15に進んでオーバーフロー予測回路105の処理を終える。
【0079】
上記ステップST12〜ステップST14の処理は全体として図2のブースマイナス・1連続性判定回路206、ブースマイナスカウンタ207、2入力AND回路208,209、4入力OR回路210及びAND回路211に相当する。すなわち、2入力AND回路208が、ブースマイナスカウンタ207の「=1」出力を入力とブースマイナス・1連続性判定回路206の出力を入力とし、ブースマイナスが1個であり、ブースマイナスを出力したエンコーダ入力より上位の乗数がALL1である場合を検出し、また2入力AND回路209が、ブースマイナスカウンタ207の「=1」出力を入力とブースマイナス・1連続性判定回路206の出力を入力とし、ブースマイナスが1個であり、ブースマイナスを出力したエンコーダが最上位のエンコーダである場合を検出し、さらに4入力OR回路210が、ブースマイナスカウンタ207の「≧2」出力と2入力AND回路208の否定及び2入力AND回路209の否定を入力とし、被乗数がALL0ではない時のオーバーフローを検出するものである。
【0080】
そして、AND回路211が、ALL0検出回路203の出力の否定と4入力OR回路210の出力を入力とし、積生成時に発生する不要なオーバーフローを出力する。
【0081】
以上説明したように、本実施形態に係る積和演算回路100は、2次のブース理論を用いてブースエンコードを行うブースエンコーダ104と、被乗数とブースエンコーダ104からの出力により(M/2)個の部分積を生成・加算し、2個の中間積に圧縮して出力する乗算アレイと106と、被乗数及び乗数に基づいて積生成時に不要なオーバーフローが発生するか否かを予測するオーバーフロー予測回路105と、乗算アレイ106から出力された2個の中間積と累積データを加算して出力を2本に絞る桁上げ保存加算器107と、桁上げ保存加算器107からの2本の出力を加算し、加算和を積和演算結果として出力し、(M+N)bitを超えるキャリーアウトも出力する2入力加算器108と、オーバーフロー予測回路105からの出力と2入力加算器108のキャリーアウト出力との排他的論理和をとる排他的論理和ゲート109とを備え、オーバーフロー予測回路105が、入力された被乗数がALL0であること、及び乗数のブースエンコード結果について、−1、−2を出力するエンコーダの数、若しくは−1、−2を出力する場合のビット位置を基にオーバーフローを予測する構成となっているので、積生成時の不要なオーバーフロー発生を予測することができ、飽和演算機能付き符号拡張方式の積和演算回路100において、従来例のように2入力加算器を2つ別々の回路で必要とせず、遅延性能及び積和演算のスループットを高めることができる。
【0082】
すなわち、従来例では累積データを加算するための2つの2入力加算器13,14が必要であり、回路規模が大きくなり、かつ遅延性能への影響も大きく動作周波数の改善が難しく、また、これを回避するための2入力加算器の入力側に全加算器を設ける方法も2次のブース理論を用いることからオーバーフロー発生が発生する可能性があり出力が不正確となりそのまま全加算器に入力することはできなかった。これに対し、本実施形態に係る積和演算回路100では、オーバーフロー予測回路105によって、積生成時の不要なオーバーフロー発生を予測することができ、飽和演算機能付き符号拡張方式の積和演算回路100においても2入力加算器108は1個で済み、遅延性能及び積和演算のスループットを高めることができる。
【0083】
なお、上述の実施形態では、2次ブース理論及び符号拡張方式の乗算器を用いた(Mbit×Nbit)+(M+N)bitの積和演算回路に適用した例であるが、加算手段の累積計算時にオーバーフローの発生予測を行い得るオーバーフロー予測手段を備えるものであればどのような積和演算回路に適用してもよい。例えば、部分積の生成に2次のブース理論を用いない並列乗算器に用いることもできる。
【0084】
また、上記積和演算回路100及びオーバーフロー予測回路105を構成する各種回路及びゲート回路の種類や数、種類接続状態などは前述した上述の実施形態に限られないことは言うまでもなく、積和演算回路100全体がDSP等を構成する算術回路の一部であってもよい。
【0085】
さらに、上述の各実施形態では、並列乗算器等に用いられる積和演算回路に適用しているが、(Mbit×Nbit)+(M+N)bitの積和演算を行う回路であればどのような装置にも適用することもできる。
【0086】
【発明の効果】
本発明に係る積和演算回路では、被乗数と乗数から部分積を生成・加算し、中間積に圧縮して出力する乗算アレイと、被乗数及び乗数に基づいて積生成時にオーバーフローが発生することを予測するオーバーフロー予測手段と、乗算アレイから出力された中間積と累積データを加算し、該加算和を積和演算結果として出力するとともに、(M+N)ビットを超えるキャリーアウトも出力する加算手段とを備えて構成しているので、積生成時の不要なオーバーフロー発生を予測することができ、飽和演算機能付き符号拡張方式の積和演算回路においても2入力加算器を2つ別々の回路で必要とせず、遅延性能及び積和演算のスループットを高めることができる。
【図面の簡単な説明】
【図1】本発明を適用した実施形態に係る積和演算回路の構成図である。
【図2】上記積和演算回路のオーバーフロー予測回路の回路構成図である。
【図3】上記積和演算回路のオーバーフロー予測回路の動作を説明するためのタイミングチャートである。
【図4】従来の積和演算回路の構成図である。
【符号の説明】
100 積和演算回路、101,102,103,201,202 入力端子、104 ブースエンコーダ、105 オーバーフロー予測回路(オーバーフロー予測手段)、106 乗算アレイ、107 桁上げ保存加算器、108 2入力加算器、109 排他的論理和ゲート、110,111,212 出力端子、112 加算手段112、203 ALL0検出回路(ALL0検出手段)、204 ブースマイナス判定回路、205 2進木・逆2進木AND回路、206 ブースマイナス・1連続性判定回路、207 ブースマイナスカウンタ、208,209 2入力AND回路、210 4入力OR回路、211 AND回路、213 判定手段
Claims (3)
- 2進数Nビット(Nは任意のビット数)の乗数から2次のブースエンコード結果を生成するブースエンコーダと、
2次のブース理論及び符号拡張方式を用いて、2進数Mビット(Mは任意のビット数)の被乗数及び前記ブースエンコード結果から部分積を生成・加算し、2個の中間積に圧縮して出力する乗算アレイと、
前記2個の中間積と前記累積データとを加算して2個の出力に絞る桁上げ保存加算器と、
前記桁上げ保存加算器からの前記2個の出力を加算して(M+N)ビットの積和演算結果及びキャリーアウトを生成する桁上げ伝搬加算器と、
前記被乗数及び前記乗数から前記積を生成するときに(M+N)ビットを超えるオーバーフローが発生するか否かを予測するオーバーフロー予測回路と、
前記オーバーフロー予測回路が、オーバーフローが発生しないと予測したときに前記桁上げ伝搬加算器で生成されたキャリーアウトをそのまま出力し、オーバーフローが発生すると予測したときに前記桁上げ伝搬加算器で生成されたキャリーアウトを出力させない飽和処理手段と
を有することを特徴とする積和演算回路。 - 前記オーバーフロー予測回路は、
前記被乗数がすべて0の場合を検出するオールゼロ検出部と、
前記乗数から2次のブースエンコード結果を生成する予測用ブースエンコード部とを有し、
前記被乗数がすべて0の時にはオーバーフローが発生しないと予測し、
前記被乗数がすべて0の時以外で、且つ、前記予測用ブースエンコード部によるブースエンコード結果が−1又は−2の出力を含まないときには、オーバーフローが発生しないと予測し、
前記被乗数がすべて0の時以外で、且つ、前記予測用ブースエンコード部によるブースエンコード結果が−1又は−2の出力を複数個含むときには、オーバーフローが発生すると予測し、
前記被乗数がすべて0の時以外で、且つ、前記予測用ブースエンコード部によるブースエンコード結果が−1又は−2の出力を1個のみ含むときにおいて、−1又は−2の出力が最上位で出力される第1の場合にはオーバーフローが発生しないと予測し、−1又は−2の出力よりも上位の出力がすべて0で出力される第2の場合にはオーバーフローが発生しないと予測し、前記第1及び第2の場合以外の第3の場合にはオーバーフローが発生すると予測する
ことを特徴とする請求項1に記載の積和演算回路。 - 前記オーバーフロー予測回路は、オーバーフローが発生すると予測したときに1を出力し、オーバーフローが発生しないと予測したときに0を出力し、
前記飽和処理手段は、前記オーバーフロー予測回路の出力と前記桁上げ伝搬加算器で生成されたキャリーアウトとを入力とする排他的論理和素子である
ことを特徴とする請求項1又は2のいずれかに記載の積和演算回路。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP05303896A JP3710193B2 (ja) | 1996-03-11 | 1996-03-11 | 積和演算回路 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP05303896A JP3710193B2 (ja) | 1996-03-11 | 1996-03-11 | 積和演算回路 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH09245019A JPH09245019A (ja) | 1997-09-19 |
| JP3710193B2 true JP3710193B2 (ja) | 2005-10-26 |
Family
ID=12931728
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP05303896A Expired - Fee Related JP3710193B2 (ja) | 1996-03-11 | 1996-03-11 | 積和演算回路 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3710193B2 (ja) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100477913B1 (ko) * | 1997-12-30 | 2005-08-29 | 주식회사 하이닉스반도체 | 부스알고리즘을이용한멀티플라이어 |
| KR100403194B1 (ko) * | 2000-06-21 | 2003-10-23 | 주식회사 에이디칩스 | 승산장치 |
| US8316071B2 (en) * | 2009-05-27 | 2012-11-20 | Advanced Micro Devices, Inc. | Arithmetic processing unit that performs multiply and multiply-add operations with saturation and method therefor |
| JP6707752B2 (ja) * | 2017-08-22 | 2020-06-10 | 日本電信電話株式会社 | 光乗算器および光乗算方法 |
| CN111258633B (zh) * | 2018-11-30 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
| CN113031918B (zh) * | 2019-12-24 | 2024-07-30 | 上海寒武纪信息科技有限公司 | 数据处理器、方法、装置及芯片 |
-
1996
- 1996-03-11 JP JP05303896A patent/JP3710193B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JPH09245019A (ja) | 1997-09-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3689183B2 (ja) | 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 | |
| JP3560623B2 (ja) | 算術または論理演算の計算結果の検出方法 | |
| WO1996028774A1 (en) | Exponentiation circuit utilizing shift means and method of using same | |
| Li et al. | A stochastic reconfigurable architecture for fault-tolerant computation with sequential logic | |
| Venkatachalam et al. | Approximate sum-of-products designs based on distributed arithmetic | |
| JP3710193B2 (ja) | 積和演算回路 | |
| Gonzalez-Navarro et al. | Binary integer decimal-based floating-point multiplication | |
| EP0539010A2 (en) | Method and device for generating sum information/rounding control signal | |
| US9575725B1 (en) | Specialized processing block with embedded pipelined accumulator circuitry | |
| US7139789B2 (en) | Adder increment circuit | |
| Ranjbar et al. | FPGA-based multiplier with a new approximate full adder for error-resilient applications | |
| US10374580B2 (en) | FIR filter circuit design method using approximate computing | |
| Ramesh et al. | Efficient implementation of 16-bit multiplier-accumulator using radix-2 modified booth algorithm and SPST adder using Verilog | |
| CN111694543B (zh) | 近似乘法器设计方法、近似乘法器和图像锐化电路 | |
| Ibrahim | Radix-2/sup n/multiplier structures: a structured design methodology | |
| Rao et al. | High-performance compensation technique for the radix-4 CORDIC algorithm | |
| JP3675111B2 (ja) | 3入力比較器 | |
| Rémi et al. | Multiple Constant Multiplication: From Target Constants to Optimized Pipelined Adder Graphs | |
| Kim et al. | Digit-serial modular multiplication using skew-tolerant domino CMOS | |
| FATHI et al. | Improving Accuracy, Area and Speed of Approximate Floating-Point Multiplication Using Carry Prediction | |
| Balasubramanian | Approximate early output asynchronous adders based on dual-rail data encoding and 4-phase return-to-zero and return-to-one handshaking | |
| Palsodkar et al. | Three operand fused floating point add-subtract unit using redundant adder | |
| Yanushkevich | 8. 2 Computer Arithmetic | |
| US7640286B2 (en) | Data processing apparatus and method for performing floating point multiplication | |
| Satyanarayana et al. | Design and fpga implementation of digit-serial modified booth multipliers |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041008 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041019 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041122 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050809 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050809 |
|
| R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080819 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090819 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090819 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100819 Year of fee payment: 5 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100819 Year of fee payment: 5 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100819 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110819 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120819 Year of fee payment: 7 |
|
| S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120819 Year of fee payment: 7 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120819 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130819 Year of fee payment: 8 |
|
| LAPS | Cancellation because of no payment of annual fees |
