JP2010079840A - デジタル演算回路 - Google Patents

デジタル演算回路 Download PDF

Info

Publication number
JP2010079840A
JP2010079840A JP2008250484A JP2008250484A JP2010079840A JP 2010079840 A JP2010079840 A JP 2010079840A JP 2008250484 A JP2008250484 A JP 2008250484A JP 2008250484 A JP2008250484 A JP 2008250484A JP 2010079840 A JP2010079840 A JP 2010079840A
Authority
JP
Japan
Prior art keywords
multiplier
circuit
register
terminal
coefficient
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.)
Pending
Application number
JP2008250484A
Other languages
English (en)
Inventor
Yoichi Katayama
陽一 片山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2008250484A priority Critical patent/JP2010079840A/ja
Publication of JP2010079840A publication Critical patent/JP2010079840A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】算器の消費電力を削減すると共に、乗算器の演算速度の低下を抑制する。
【解決手段】乗算器20は、第1の端子22に乗数が入力され、第2の端子24に被乗数が入力される。制御回路30は、乗算されるAとBについて、いずれを乗数としたほうが乗算器20による乗算にキャリの発生回数が少ないかを判定すると共に、キャリの発生が少ない乗算が行われるように、AとBの片方を第1の端子22と第2の端子24の片方に入力し、AとBの他方を第1の端子22と第2の端子24の他方に入力する。
【選択図】図3

Description

本発明は、乗算器を備えるデジタル演算回路における電力消費を抑制する技術に関する。
乗算器は、画像処理や音声処理などの様々な分野のデジタル演算回路に多数用いられている。乗算器の消費電力はこれらのデジタル演算回路の消費電力の大きな割合を占める。
特許文献1には、定数(特許文献1で定乗数とも呼ばれている)と不定数の乗算を行う乗算器の電力消費を抑制する手法が開示されている。図11(特許文献1の図4)を参照してこの手法を説明する。
この手法は、402の数列により表される定乗数401絶対値|A|を変換作業用数列bk403に置き換える。そして、bk403の最下位ビットから、「1」となるビットが3つ以上連続しているビット列を検索する。図11の404に示すように、iビット目、「i+1」ビット目、「i+2」ビット目に「1」が3つ連続したビット列が抽出され、これをα列部とする。
α列部の存在が確認できたら、α列部の最上位ビットより1だけ上位のビットである「i+3」ビット目を「1」に、α列部の最下位ビットであるiビット目を[−1]に、最上位ビットより1だけ上位のビットと、最下位ビットとに挟まれたビット(「i+2」、「i+1」ビット目)を「0」にすることで数列bkは、405のように変換される。
数列bkに対して、上述したようなα列の検索とビットの置き換えを、α列部が無くなるまで繰り返して406が示すβ列を得る。このβ列は、定乗数401の絶対値|A|と等価である。
このように変化して得たβ列を乗算に用いることにより、乗算するための加減算項目を減らし、乗算器を構成する加減算器の数を減らすことができる。そのため、乗算器の消費電力を削減できる。
特開2000−235480号公報
しかし、特許文献1に提案された乗算器は、例えば画像処理装置用のフィルタに用いられ、係数が一般的な汎用係数である場合には、ビット毎に上記変換作業を行うことになるため、演算が低速になるという問題がある。
本発明の一つの態様は、乗算器と制御回路を備えたデジタル演算回路である。乗算器は、第1の端子に乗数が入力され、第2の端子に被乗数が入力される。制御回路は、乗算されるAとBについて、いずれを乗数としたほうが乗算器による乗算にキャリの発生回数が少ないかを判定すると共に、キャリの発生が少ない乗算が行われるようにAとBの片方を第1の端子と第2の端子の片方に入力し、AとBの他方を第1の端子と第2の端子の他方に入力する。
本発明の別の態様もデジタル演算回路である。このデジタル演算回路は、積和演算を行うものであり、n(n:2以上の整数)個の乗算器と、該n個の乗算器に対して共通に設けられた指標値算出回路と、該n個の乗算器に対してそれぞれ設けられた入力切替回路を備える。
乗算器は、第1の端子に乗数が入力され、第2の端子に被乗数が入力される。
指標値算出回路は、夫々の乗算器により乗算されるAiとBi(1≦i≦n)について、いずれを乗数としたほうが当該乗算器による乗算にキャリの発生回数が少ないかを判定するための指標値を算出する。
力切替回路は、指標値算出回路により当該乗算器に対して算出した指標値に基づいて上記判定を行うと共に、判定の結果に応じて、キャリの発生が少ない乗算が行われるように、該乗算器により乗算が行われるAiとBiの片方を該乗算器の第1の端子と第2の端子の片方に入力し、AiとBiの他方を第1の端子と第2の端子の他方に入力する。
なお、上記演算回路を演算装置やシステム、または演算方法に置き換えて表現したものも、本発明の態様としては有効である。
本発明の技術によれば、乗算器の消費電力を削減すると共に、乗算器の演算速度の低下を抑制することができる。
本願発明者は、乗算器の消費電力をいかに抑制することについて鋭意研究模索した結果、下記のことを知見した。
数値Aと数値Bの乗算に際して、数値Aと数値Bのいずれを乗数とするかによって、キャリの発生回数が異なる。これについて、2次のブースアルゴリズを用いる乗算器(以下ブース乗算器という)により、−200(f38)と1000(3e8)を乗算して−200000(7cf2c0)を得る場合を例に説明する。
<−200(f38)を乗数とした場合>
ブース乗算器は、ブースエンコーダを備え、乗算の際に、まずブースエンコーダにより乗数に対してブースアルゴリズを適用した演算を行う。
図1に示すように、この場合、−200が乗数であるため、ブースエンコーダが、−200に対してブースアルゴリズを適用し、演算結果の「010010」を得る。
その後、ブース乗算器は、ブースエンコーダの演算結果の夫々の桁ごとに被乗数1000との間で乗算を行って部分積を得、各部分積を加算することにより乗算結果のー200000を得る。
図1において、「*」がキャリの発生箇所を示す。この場合、乗算結果を得るまで45回のキャリが発生する。
<1000(3e8)を乗数とした場合>
この場合、ブースエンコードが1000に対してアルゴリズを適用し、演算結果の「000110」を得る。
その後、ブース乗算器は、ブースエンコーダの演算結果の夫々の桁ごとに被乗数−200との間で乗算を行って部分積を得、各部分積を加算することにより乗算結果のー200000を得る。
図2に示すように、この場合、乗算結果を得るまでに33回のキャリが発生する。
キャリの発生は、当該ビットでビット反転(「1」から「0」、または「0」から「1」)を生じさせる。
デジタル回路を構成する論理ゲートでは、ビット反転が生じたときに消費電力が発生し、「1」または「0」が続く状態、すなわちビット反転が生じていない状態では、消費電力が発生しない。そのため、多数の論理ゲートにより構成される乗算器において、ビット反転すなわちキャリの発生回数を抑制すれば、乗算器の消費電力を抑制することができる。
上記知見に基づき、本願発明者は、乗算される数値Aと数値Bのいずれを乗数として乗算器に入力することを制御することにより、乗算器の消費電力を抑制する手法を確立した。図3の模式図を参照してこの手法を説明する。
図3に示す演算回路10は、乗算器20と制御回路30を備える。乗算器20は、乗数が入力される第1の端子22と、被乗数が入力される第2の端子24を有する。制御回路30は、乗算される数値Aと数値Bついて、いずれを乗数としたほうが乗算器20による乗算にキャリの発生回数が少ないかを判定すると共に、キャリの発生が少ない乗算が行われるように数値Aと数値Bを第1の端子22と第2の端子24に夫々入力する。具体的には、制御回路30は、数値Aを乗数とした場合にキャリの発生回数が少ないと判定した場合、数値Aを第1の端子22に入力し、数値Bを第2の端子24に入力する。一方、数値Bを乗数とした場合にキャリの発生回数が少ないと判定した場合、数値Bを第1の端子22に入力し、数値Aを第2の端子24に入力する。
演算回路10のこのような構成により、乗算器20は、数値Aと数値Bの乗算に際して、(A×B)と(B×A)のうちのキャリの発生回数が少ないほうの演算を行うことになるため、消費電力を削減することができる。また、キャリの発生回数の多少の判定は、ビット毎に行うわけではないので、消費電力を削減することに起因する処理速度の低下を抑制することができる。
また、乗算時のキャリの発生回数を抑制することにより、乗算器内部から発生するシリコン基板ノイズを減らすという効果も得ることができる。
本願発明者は、さらに、ブースアルゴリズを用いた乗算器の場合、数値Aと数値Bのうちの、ブースエンコーダによる演算結果が小さいほうが、該数値を乗数とした場合にキャリの発生回数が少ない傾向を知見した。例えば、図1に示すように、−200に対するブースエンコーダの演算結果が010010(=18)であり、1000に対するブースエンコーダの演算結果が000110(=6)である。この結果に対応して、1000を乗数とした場合は、−200を乗数とした場合より乗算時にキャリの発生回数が少ない。すなわち、乗算される2つの数値のそれぞれに対するブースエンコーダの演算結果を、該2つの数値のいずれを乗数としたほうがブース乗算器による乗算にキャリの発生回数が少ないかの判定をするための指標値として用いることができる。
この知見に基づく、ブース乗算器に対して、図4に示す制御回路30を用いることができる。
図4に示す制御回路30は、数値Aと数値Bに対してそれぞれブースアルゴリズムでエンコードして演算結果SAとSBを得るブースエンコーダ32と、AとBのうちの、SAとSBのうちの小さいほうに対応する片方を第1の端子22に出力し、他方を第2の端子24に出力する。
さらに、被乗数のビット列に「1」が少ないほど、ブース乗算器に含まれたブースエンコーダにより得られた演算結果の各ビットと、被乗数とを乗算する際に、キャリの発生回数が少なくなることも考えられる。そのため、図5に示す制御回路30の構成により、数値Aと数値Bのいずれを乗数とした場合にキャリの発生回数が少ないかを判定する精度を高めることができる。
図5に示す制御回路30は、ブースエンコーダ32と、カウント乗算回路36と、入力切替回路38を備える。ブースエンコーダ32は、数値Aと数値Bに対してそれぞれブースアルゴリズを適用して演算結果SAとSBを得る。
カウント乗算回路36は、数値Aと数値Bのビット列における「1」の個数Num(A)とNum(B)を夫々カウントすると共に、ブースエンコーダ32により得られた数値Aの演算結果SAとNum(B)の積PABと、ブースエンコーダ32により得られた数値Aの演算結果SBとNum(A)の積PBAとを算出して入力切替回路38に出力する。
入力切替回路38は、PABとPBAを比較し、PABのほうが小さい場合には、数値Aを乗算器20の第1の端子22に出力し、数値Bを乗算器20の第2の端子24に出力する。一方、PBAのほうが小さい場合には、数値Bを乗算器20の第1の端子22に出力し、数値Aを乗算器20の第2の端子24に出力する。
以上に述べた本発明の技術の原理を踏まえて、本発明の実施の形態を説明する。
<第1の実施の形態>
図6は、本発明の第1の実施の形態にかかる積和演算回路100を示す。この積和演算回路100は、画像処理装置や音声処理装置に用いられるフィルタ回路であり、下記の式(1)が示す処理を行うものである。
Filter(E0,E1,E2,E3,E4)=Lim(C0*e0+C1*e1+C2*e2+ C3*e3+ C4*e4) (1)
式(1)において、C0〜C4は係数であり、e0〜e4は、これらの係数と夫々乗算されるデータ(以下乗算データという)である。「Lim」は、Limit演算を意味する。
積和演算回路100は、乗算データを格納するレジスタEaおよびレジスタE0〜E4と、係数を格納するレジスタHaおよびレジスタH0〜H4と、選択器110と、ブースエンコーダ120と、乗算器を含む5つの回路(130、140、150、160、170)と加算器180と、Limit演算回路182と、積和演算回路100の演算結果を格納するレジスタEoutを備える。
レジスタEaは、順次入力される乗算データをレジスタE0と選択器110に出力する。レジスタE0〜E3は、前のレジスタからの乗算データを格納すると共に、格納していた乗算データを後のレジスタに出力する。レジスタE4は、レジスタE3からの乗算データを格納すると共に、格納していた乗算データを回路170に出力する。レジスタE0〜E3は、格納していた乗算データをさらに回路130、回路140、回路150、回路160にそれぞれ出力する。
レジスタHaは、順次入力される係数をレジスタH0とブースエンコーダ120に出力する。レジスタH0〜H3は、前のレジスタからの係数を格納すると共に、格納していた係数を後のレジスタに出力する。レジスタH4が、レジスタH3から係数C4を受け取った格納した後は、係数の入力が停止され、レジスタH0〜H4に係数C0〜C4が格納され状態は維持される。レジスタH0〜H4は、回路130〜回路170に接続しており、格納中の係数を当該回路に供することができる。
選択器110は、レジスタEaからの乗算データとレジスタHaからの係数を選択的にブースエンコーダ120に出力する。
ブースエンコーダ120は、指標値算出回路として機能し、各乗算器により乗算される乗算データと係数について、いずれを乗数としたほうが乗算にキャリの発生回数が少ないかを判定するための指標値を算出する。この指標値は、選択器110からの乗算データまたは係数に対してブースアルゴリズを適用してエンコードを行って得た演算結果である。ブースエンコーダ120は、乗算データに対して得た演算結果fをレジスタF0に出力し、係数に対して得た演算結果gをレジスタG0に出力する。
図7は、ブースエンコーダ120を示す。このブースエンコーダ120は、エンコード対象のデータ(ビット列)を入力するための複数のレジスタ121と、複数のANDゲート122と、複数の反転入力付きORゲート123を備え、エンコード対象のビット列に対して、2次のブースのアルゴリズを適用する。具体的には、ビット列を最下位側から2ビットずつ区切り、区切られた2ビットとオーバラップの1ビットからなる3ビット毎にアルゴリズムを適用する。例えば、「0、−2、−1、0、1、2、−2」のビット列に対して、ブースエンコーダ120により「0110001」の演算結果が得られる。
図6に戻って、積和演算回路100の他の機能ブロックを説明する。
レジスタF0は、ブースエンコーダ120からの演算結果fを格納すると共に、格納していた演算結果fをレジスタF1に出力する。レジスタF1〜F3は、前のレジスタからの演算結果fを格納すると共に、格納していた演算結果fを後のレジスタに出力する。レジスタF4は、レジスタF3からの演算結果fを格納すると共に、格納していた演算結果fを回路170に出力する。レジスタF0〜F3は、格納していた演算結果fをさらに回路130、回路140、回路150、回路160にそれぞれ出力する。
レジスタG0〜G4は、格納するデータが係数の演算結果gである点を除いて、レジスタF0〜F4と同様の動作をする。
回路130〜回路170が同じ構成を有するため、回路130についてのみ詳細に説明および図示をする。
図6に示すように、回路130は、入力切替回路132とブース乗算器136を有する。ブース乗算器136は、ブースアルゴリズを用いて、係数C0と乗算データを乗算するものである。なお、ブース乗算器136にはブースエンコーダが備えられており、乗数がブースエンコーダに入力されるようになっている。
入力切替回路132は、レジスタH0に格納された係数C0と、レジスタE0に格納された乗算データeと、レジスタF0に格納された演算結果fと、レジスタG0に格納された演算結果gとが入力される。入力切替回路132は、演算結果fと演算結果gを比較し、比較の結果に応じて、乗算データと係数のいずれを乗数とするかを決定し、乗数に決定された側をブース乗算器136のブースエンコーダに入力する。
すなわち、本実施の形態において、ブースエンコーダ120と、ブース乗算器136は、制御回路を構成する。
図8は、入力切替回路132の具体的な構成を示す。入力切替回路132は、セレクタ133と、比較器134と、セレクタ135を有する。セレクタ133は、乗算データeと係数Cが入力され、比較器134からの制御信号Ctrに従って、乗算データeと係数Cの片方をブース乗算器136の乗数入力端子137に入力する。セレクタ135は、乗算データeと係数Cが入力され、比較器134からの制御信号Ctrに従って、乗算データeと係数Cのうちの、セレクタ133が選択した片方とは別の一方をブース乗算器136の被乗数入力端子138に入力する。乗数入力端子137は、ブース乗算器136に備えられたブースエンコーダと接続しており、該端子から入力されたデータは、ブースエンコーダに入力される。
比較器134は、乗算データeの演算結果fと、係数Cの演算結果gが入力され、これらの大小関係を比較する。比較器134は、演算結果fが小さいほうである場合には、乗算データeが乗数入力端子137に入力され、係数Cが被乗数入力端子138に入力されるように制御信号Ctrを出力する。一方、演算結果gが小さいほうである場合には、係数Cが乗数入力端子137に入力され、乗算データeが被乗数入力端子138に入力されるように制御信号Ctrを出力する。
図9は、図6に示す積和演算回路100による演算に伴って、各レジスタに格納されるデータの遷移を示すタイミングチャートである。時間順に説明する。
<タイミングt1>
タイミングt1において、積和演算回路100の動作開始により、回路170に含まれる乗算器が乗算する係数C4は、レジスタHaに格納される。
<タイミングt2>
レジスタHaは係数C4をレジスタH0と選択器110に出力し、係数C3を格納する。
レジスタH0は乗算係数C4を格納する。
選択器110は、係数C4をブースエンコーダ120に出力し、ブースエンコーダ120は、係数C4に対してブースアルゴリズムを適用して演算結果g04を得る。この演算結果g04は、レジスタG0に格納される。
<タイミングt3>
レジスタHaは、係数C3をレジスタH0と選択器110に出力し、係数C2を格納する。
レジスタH0は、係数C4をレジスタH1に出力し、係数C3を格納する。
レジスタH1は、係数C4を格納する。
ブースエンコーダ120は、係数C3に対してブースアルゴリズムを適用して演算結果g03を得る。この演算結果g03は、レジスタG0に格納される。
なお、レジスタG0に格納されていた演算結果g04は、レジスタG0からレジスタG1に出力され、レジスタG1により格納される。
<タイミングt4>
レジスタHaは、係数C2をレジスタH0と選択器110に出力し、係数C1を格納する。
レジスタH0は、係数C3をレジスタH1に出力し、係数C2を格納する。
レジスタH1は、係数C4をレジスタH2に出力し、係数C3を格納する。
レジスタH2は、係数C4を格納する。
レジスタG0は、係数C3の演算結果g03をレジスタG1に出力し、ブースエンコーダ120により得られた係数C2の演算結果g02を格納する。
レジスタG1は、係数C4の演算結果g04をレジスタG2に出力し、係数C3の演算結果g03を格納する。
レジスタG2は、係数C4の演算結果g04を格納する。
なお、タイミングt4まで、係数と乗算されるデータ(以下乗算データという)の入力がなされない。
<タイミングt5>
レジスタHaは、係数C1をレジスタH0と選択器110に出力し、係数C0を格納する。
レジスタH0は、係数C2をレジスタH1に出力し、係数C1を格納する。
レジスタH1は、係数C3をレジスタH2に出力し、係数C2を格納する。
レジスタH2は、係数C4をレジスタH3に出力し、係数C3を格納する。
レジスタH3は、係数C4を格納する。
レジスタG0は、係数C2の演算結果g02をレジスタG1に出力し、ブースエンコーダ120により得られた係数C1の演算結果g01を格納する。
レジスタG1は、係数C3の演算結果g03をレジスタG2に出力し、係数C2の演算結果g02を格納する。
レジスタG2は、係数C4の演算結果g04をレジスタG3に出力し、係数C3の演算結果g03を格納する。
レジスタG3は、係数C4の演算結果g04を格納する。
また、このタイミングにおいて、乗算データの入力が開始される。それにより、レジスタEaに乗算データe04が格納される。
<タイミングt6>
レジスタHaは、係数C0をレジスタH0と選択器110に出力する。
レジスタH0は、係数C1をレジスタH1に出力し、係数C0を格納する。
レジスタH1は、係数C2をレジスタH2に出力し、係数C1を格納する。
レジスタH2は、係数C3をレジスタH3に出力し、係数C2を格納する。
レジスタH3は、係数C4をレジスタH4に出力し、係数C3を格納する。
レジスタG4は、係数C4を格納する。
レジスタG0は、係数C1の演算結果g01をレジスタG1に出力し、ブースエンコーダ120により得られた係数C0の演算結果g00を格納する。
レジスタG1は、係数C2の演算結果g02をレジスタG2に出力し、係数C1の演算結果g01を格納する。
レジスタG2は、係数C3の演算結果g03をレジスタG3に出力し、係数C2の演算結果g02を格納する。
レジスタG3は、係数C4の演算結果g04をレジスタG4に出力し、係数C3の演算結果g03を格納する。
レジスタG4は、係数C4の演算結果g04を格納する。
レジスタEaは、乗算データe04をレジスタE0と選択器110に出力し、乗算データe03を格納する。
レジスタE0は、乗算データe04を格納する。
選択器110は、乗算データe04をブースエンコーダ120に出力し、ブースエンコーダ120は、乗算データe04に対してブースアルゴリズムを適用して演算結果f04を得る。この演算結果f04は、レジスタF0に格納される。
なお、タイミングt6以降、レジスタH0〜H4が係数C0〜C4を夫々格納した状態は、維持される。また、レジスタG0〜G4が係数C0〜C4の演算結果g00〜G04を夫々格納した状態も維持される。
タイミングt6以降にも、レジスタEaに乗算データが順次入力される。その結果、タイミングt10において、レジスタE0、レジスタE1、レジスタE2、レジスタE3、レジスタE4に、乗算データe00、乗算データe01、乗算データe02、乗算データe03、乗算データe04がそれぞれ格納される。また、レジスタF0、レジスタF1、レジスタF2、レジスタF3、レジスタF4には、ブースエンコーダ120による乗算データe00の演算結果f00、乗算データe01の演算結果f01、乗算データe02の演算結果f02、乗算データe03の演算結果f03、乗算データe04がそれぞれ格納される。
<タイミングt11>
回路130の入力切替回路132は、レジスタF0とレジスタG0から演算結果f00と演算結果g00を読み出し、それらの大小を比較する。
演算結果f00のほうが小さいときには、入力切替回路132は、乗算データe00を乗数とすべく、レジスタE0に格納された乗算データe00をブース乗算器136の乗数入力端子137に入力し、レジスタH0に格納された係数C0をブース乗算器136の被乗数入力端子138に入力する。
一方、演算結果g00のほうが小さいときには、入力切替回路132は、係数C0を乗数とすべく、係数C0を乗数入力端子137に入力し、乗算データe00を被乗数入力端子138に入力する。
ブース乗算器136は、乗数入力端子137と被乗数入力端子138に入力された2つのデータを乗算して、乗算結果「乗算データe00*係数C0」を加算器180に出力する。
同曜日、回路140〜回路170からも、「乗算データe01*係数C1」、「乗算データe02*係数C2」、「乗算データe03*係数C3」、「乗算データe04*係数C4」が加算器180に夫々出力される。
加算器180は、回路130〜回路170の5つの回路の出力を加算して加算結果をLimit演算回路182に出力する。
Limit演算回路182は、加算器180の加算結果に対してLimit演算を行い、演算結果R00を得てレジスタEoutに出力する。
レジスタEoutは、演算結果R00を格納して、後段の処理に供する。
このように、レジスタEaへの乗算データの入力、ブースエンコーダ120により、該乗算データを乗数とした場合の演算結果fの算出、レジスタE0〜レジスタE4に格納される乗算データの更新、レジスタF0に格納される演算結果fの更新に伴って、タイミングt11の処理が繰り返される。
本実施の形態の積和演算回路100は、図3及び図4に示す模式を具現化したものであり、これらの模式の説明時に述べた効果を得ることができる。
さらに、積和演算回路100は、1つのブースエンコーダ120により、複数の乗算器に対して、係数と乗算データのいずれを当該乗算器の乗数入力端子に入力するかを判断するための演算結果eを得ているので、回路規模を抑制すると共に、電力消費をより削減することができる。
<第2の実施の形態>
本発明の第2の実施の形態も積和演算回路である。この積和演算回路は、図6に示す積和演算回路100において、ブースエンコーダ120の代わりに、ブースエンコーダ120が含まれた回路220を設けてなるものである。ここでは、第2の実施の形態の積和演算回路における回路220についてのみ詳細に説明する。
図10は、回路220を示す。この回路220は、ブースエンコーダ120と、カウント回路221と、乗算器222を備える。
ブースエンコーダ120は、乗算データまたは係数に対してブースアルゴリズムを適用して演算結果を得て乗算器222に出力する。
カウント回路221は、ブースエンコーダ120が乗算データまたは係数に対して演算を行っているときに、該乗算データまたは係数のビット列における「1」の数Numをカウントして乗算器222に供する。
乗算器222は、ブースエンコーダ120により得られた乗算データの演算結果fと、カウント回路221により得られた、該乗算データと乗算される係数のNum(C)とを乗算する。また、ブースエンコーダ120により得られた係数の演算結果gと、カウント回路221により得られた、該係数と乗算される乗算データのNum(e)を乗算する。
回路130〜170に含まれる入力切替回路は、このようにして得た「f*Num(C)」と「g*Num(e)」を比較し、「f*Num(C)」のほうが小さいときには、乗算データが乗数になり、「g*Num(e)」のほうが小さいときには、係数が乗数になるように乗算データと係数を当該乗算器に入力する。
この第2の実施の形態の積和演算回路は、図5に示す模式を具現化したものであり、第1の実施の形態の効果を得ることができると共に、乗算データと係数のいずれを乗数とした場合にキャリの発生回数が少ないかを判定する精度を高めることができる。
上記第1の実施の形態と第2の実施の形態の積和演算回路を用いて、ランダムに選ばれたサンプルデータに対して処理を行った。その結果、従来の積和演算回路と比べ、第1の実施の形態の積和演算回路は、消費電力を15%程度削減できており、第2の実施の形態の積和演算回路は、消費電力を37%程度削減できている。
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
ブースアルゴリズを用いた乗算器のキャリ発生回数を説明するための図である(その1)。 ブースアルゴリズを用いた乗算器のキャリ発生回数を説明するための図である(その2)。 本発明の原理を適用した演算回路の模式図である。 ブースアルゴリズを用いた乗算器に本発明の原理を適用した演算回路の模式図である。 ブースアルゴリズを用いた乗算器に本発明の原理を適用した別の演算回路の模式図である。 本発明の第1の実施の形態にかかる積和演算回路を示す図である。 図6に示す積和演算回路におけるブースエンコーダを示す図である。 図6に示す積和演算回路における入力切替回路の詳細を示す図である。 図6に示す積和演算回路における処理の流れを示すタイミングチャートである。 本発明の第2の実施の形態と第1の実施の形態の積和演算回路の異なる部分を示す図である。 特許文献1の手法を説明するための図である。
符号の説明
10 演算回路 20 乗算器
22 第1の端子 24 第2の端子
30 制御回路 32 ブースエンコーダ
34 入力切替回路 36 カウント乗算回路
38 入力切替回路 100 積和演算回路
110 選択器 120 ブースエンコーダ
121 レジスタ 122 ANDゲート
123 反転入力付きORゲート 130 回路
132 入力切替回路 133 セレクタ
134 比較器 135 セレクタ
136 ブース乗算器 137 乗数入力端子
138 被乗数入力端子 140〜170 回路
180 加算器 182 Limit演算回路
220 回路 221 カウント回路
222 乗算器 C 係数
e 乗算データ f 乗算データに対するブースエンコーダの演算結果
g 係数に対するブースエンコーダの演算結果

Claims (6)

  1. 第1の端子に乗数が入力され、第2の端子に被乗数が入力される乗算器と、
    乗算されるAとBについて、いずれを乗数としたほうが前記乗算器による乗算にキャリの発生回数が少ないかを判定すると共に、キャリの発生が少ない乗算が行われるように、前記AとBの片方を前記第1の端子と前記第2の端子の片方に入力し、前記AとBの他方を前記第1の端子と前記第2の端子の他方に入力する制御回路とを備えたことを特徴とする演算回路。
  2. 前記乗算器は、ブースアルゴリズを用いて乗算を行うものであり、
    前記制御回路は、
    前記AとBに対してそれぞれエンコードを行うブースエンコーダを備え、
    前記ブースエンコーダによる演算結果が小さいほうに対応するAまたはBを乗数とした場合に、キャリの発生回数が少ないと判定することを特徴とする請求項1に記載のデジタル演算回路。
  3. 前記制御部は、前記Aのビット列における「1」の個数Num(A)と、前記Bのビット列における「1」の個数Num(B)を夫々カウントするカウント回路をさらに備え、
    前記Aに対する前記ブースエンコーダの演算結果とNum(B)の積と、前記Bに対する前記ブースエンコーダの演算結果とNum(A)の積とを比較し、積が小さいほうの演算結果に対応するAまたはBを乗数とした場合に、前記キャリの発生回数が少ないと判定することを特徴とする請求項2に記載のデジタル演算回路。
  4. 第1の端子に乗数が入力され、第2の端子に被乗数が入力されるn(n:2以上の整数)個の乗算器を備えて、積和演算を行うデジタル演算回路であって、
    前記n個の乗算器に対して共通に設けられており、夫々の乗算器により乗算されるAiとBi(1≦i≦n)について、いずれを乗数としたほうが当該乗算器による乗算にキャリの発生回数が少ないかを判定するための指標値を算出する指標値算出回路と、
    前記n個の乗算器に対して夫々設けられた入力切替回路であって、前記指標値算出回路により当該乗算器に対して算出した前記指標値に基づいて前記判定を行うと共に、判定の結果に応じて、キャリの発生が少ない乗算が行われるように、該乗算器により乗算が行われるAiとBiの片方を前記乗算器の第1の端子と前記第2の端子の片方に入力し、前記AiとBiの他方を前記第1の端子と前記第2の端子の他方に入力する入力切替回路とを備えたことを特徴とするデジタル演算回路。
  5. 前記乗算器は、ブースアルゴリズを用いて乗算を行うものであり
    前記指標値算出回路は、各Aiと各Biに対してそれぞれエンコードを行うブースエンコーダであり、
    前記入力切替回路は、前記ブースエンコーダによる演算結果を前記指標値とし、該演算結果が小さいほうに対応するAiまたはBiを乗数とした場合に、キャリの発生回数が少ないと判定することを特徴とする請求項4に記載のデジタル演算回路。
  6. 前記指標値算出回路は、Aiのビット列における「1」の個数Num(Ai)と、Biのビット列における「1」の個数Num(Bi)を夫々カウントするカウント回路をさらに備え、前記Aiに対する前記ブースエンコーダの演算結果とNum(B)の積と、前記Bに対する前記ブースエンコーダの演算結果とNum(A)の積とを算出するものであり、
    前記入力切替回路は、前記指標値算出回路により得た積を前記指標値とし、該積が小さいほうの演算結果に対応するAiまたはBiを乗数とした場合に、キャリの発生回数が少ないと判定することを特徴とする請求項5に記載のデジタル演算回路。
JP2008250484A 2008-09-29 2008-09-29 デジタル演算回路 Pending JP2010079840A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008250484A JP2010079840A (ja) 2008-09-29 2008-09-29 デジタル演算回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008250484A JP2010079840A (ja) 2008-09-29 2008-09-29 デジタル演算回路

Publications (1)

Publication Number Publication Date
JP2010079840A true JP2010079840A (ja) 2010-04-08

Family

ID=42210168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008250484A Pending JP2010079840A (ja) 2008-09-29 2008-09-29 デジタル演算回路

Country Status (1)

Country Link
JP (1) JP2010079840A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020528621A (ja) * 2017-07-24 2020-09-24 テスラ,インコーポレイテッド 加速数学エンジン
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US11157287B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system with variable latency memory access
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
JP7009609B2 (ja) 2017-07-24 2022-01-25 テスラ,インコーポレイテッド 加速数学エンジン
JP2022064892A (ja) * 2017-07-24 2022-04-26 テスラ,インコーポレイテッド 加速数学エンジン
US11403069B2 (en) 2017-07-24 2022-08-02 Tesla, Inc. Accelerated mathematical engine
JP2020528621A (ja) * 2017-07-24 2020-09-24 テスラ,インコーポレイテッド 加速数学エンジン
US11681649B2 (en) 2017-07-24 2023-06-20 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11698773B2 (en) 2017-07-24 2023-07-11 Tesla, Inc. Accelerated mathematical engine
JP7374236B2 (ja) 2017-07-24 2023-11-06 テスラ,インコーポレイテッド 加速数学エンジン
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11797304B2 (en) 2018-02-01 2023-10-24 Tesla, Inc. Instruction set architecture for a vector computational unit

Similar Documents

Publication Publication Date Title
JP4790791B2 (ja) 乗算器、デジタルフィルタ、信号処理装置、合成装置、合成プログラム、および合成プログラム記録媒体
JP2010079840A (ja) デジタル演算回路
JP6309196B2 (ja) 多項式演算のための部分積発生装置及び方法
JPH07234778A (ja) 演算回路
RU2717915C1 (ru) Вычислительное устройство
TW202319909A (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
JP5175983B2 (ja) 演算装置
KR102208274B1 (ko) 특히 함수 모델을 순수 하드웨어에 기초하여 연산하기 위한 함수 모델 유닛 내에서 사용하기 위한 fma 유닛
JP3660075B2 (ja) 除算装置
US11494165B2 (en) Arithmetic circuit for performing product-sum arithmetic
JP4159565B2 (ja) ベクトル積和演算回路
JP2608090B2 (ja) 高基数非回復型除算装置
JP7183079B2 (ja) 半導体装置
US7962538B2 (en) Method of operand width reduction to enable usage of narrower saturation adder
JP2009267606A (ja) 演算器
Mallya et al. Efficient Implementation of Multiplier for Digital FIR Filters
JPH0637592A (ja) ディジタルフィルタ設計法
Manderson et al. Runtime reconfigurable DSP unit using one's complement and Minimum Signed Digit
JP2002318792A (ja) データ演算処理装置及びデータ演算処理プログラム
¹Rmesh Babu Badite ²P et al. Performance Evaluation of High Speed Multipliers
JPH06243194A (ja) 論理回路の自動設計方法およびその装置
JP3659408B2 (ja) データ演算処理装置及びデータ演算処理プログラム
TWI411247B (zh) PN sequence correlation calculation method and circuit
JP2003223316A (ja) 演算処理装置
MANI et al. Realization of Low Power and Low Area MUX Based Multiplier