JP3139466B2 - 乗算器及び積和演算器 - Google Patents
乗算器及び積和演算器Info
- Publication number
- JP3139466B2 JP3139466B2 JP10242754A JP24275498A JP3139466B2 JP 3139466 B2 JP3139466 B2 JP 3139466B2 JP 10242754 A JP10242754 A JP 10242754A JP 24275498 A JP24275498 A JP 24275498A JP 3139466 B2 JP3139466 B2 JP 3139466B2
- Authority
- JP
- Japan
- Prior art keywords
- partial
- multiplier
- product
- partial product
- bit
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3828—Multigauge devices, i.e. capable of handling packed numbers without unpacking them
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
- G06F7/5336—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
- G06F7/5338—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
Description
るのに好適な乗算器及び積和演算器に関するものであ
る。
アで乗算を高速に実行する方法として、Boothのアルゴ
リズムによる部分積生成とキャリーセーブ方式による部
分積加算が広く用いられている。また、ローコストの計
算機システム向けの汎用プロセッサでは、近年、32ビ
ットあるいは64ビットの高精度乗算に加え、画像処理
等の信号処理で中心的に用いられる16ビット程度の低
精度乗算を行う比率が増大している。
cessor)等の専用プロセッサを用いて行っていた信号処
理を、計算機システムの部品点数を削減するために、汎
用プロセッサで行う必要性が増している。このことは、
汎用プロセッサが実装する乗算機能として16ビット等
の低精度乗算もサポートする必要性があることを意味し
ている。特に、画像処理等の信号処理では扱うデータ量
が膨大であるため、整数乗算に比べて低精度乗算の性能
を大きく改善する必要がある。
の例を、図8に示す。この乗算器は、2個の16ビット
精度の乗算器801a、801b、1個の64ビット加
算器802、1個の64ビットレジスタ803、乗算器
801a、801bへの入力セレクタ804a、804
b、及び加算器804への入力セレクタ805で構成さ
れている。
ット(a1)、下位16ビット(a2)からなる32ビットデー
タAと、上位16ビット(b1)、下位16ビット(b2)から
なる32ビットデータBを与えるとする。16ビット精
度の乗算を行う場合、a1、a2、b1、b2をそれぞれ独立し
た16ビットデータとみなし、2個の16ビット乗算器8
01a、801bに、それぞれ(a1、a2)及び(b1、b2)の
組み合わせでデータを供給するように入力セレクタ80
4a、804bを設定する。これにより、(a1×a2)およ
び(b1×b2)のそれぞれの乗算結果が、乗算器801a、
801bの出力として並列に得られる。
行する場合、まず、入力セレクタ804a、804bの
設定により乗算器801a、801bで、それぞれ(a1
×b2)および(a2×b1)を計算する。次に、これらを加算
器802で加算して中間結果(a1×b2+a2×b1)を生成
し、レジスタ803に格納する。次に、乗算器801a
で(a1×a2)を計算するとともに、入力セレクタ805が
レジスタ803の出力を選択するように設定する。そし
て、乗算器801aの出力と入力セレクタ805の出力
とをを加算器802で加算し、その結果(a1×b2+a2×b
1+a1×a2)を新たな中間結果としてレジスタ803に格
納する。同様にして乗算結果(b1×b2)と新たな中間結果
を加算して、最終的な乗算結果(a1×b2+a2×b1+a1×a
2+b1×b2)を得る。
算を並列に実行でき、低精度乗算時の性能を改善するこ
とができると共に、32ビット精度の高精度乗算も実行
することが可能となる。
示す。この乗算器は、32ビットの乗算器901と、2
個の16ビットの乗算器902a、902bを備えてい
る。この構成により、16ビット精度の並列乗算での低
精度乗算時の性能を補償することが可能になるととも
に、32ビット精度の高精度乗算も高速に実行すること
が可能になる。
とにより、上記第1、および第2の例の乗算器と比較し
てハードウエア量を削減した第3の乗算器の例が、特開
平7−121354号公報に開示されている。この乗算
器では、高精度乗算器を用いて複数の低精度データの内
積演算や複素数乗算を行うことができる。例えば、この
第3の例の乗算器によれば、第1の例の乗算器のところ
で説明した(a1×a2+b1×b2)なる演算を一度に実行する
ことが可能となる。
来例には、次のような問題点があった。まず、上記第1
の例の乗算器には、低精度乗算の性能を改善できるが、
高精度乗算の性能(特に演算時間)が劣化するという問
題があった。また、上記第2の例の乗算器では、低精度
と高精度の両方の乗算を高性能で実行することができる
が、ハードウエア量が大きくなってしまうという問題点
があった。また、上記第3の例の乗算器では、ハードウ
エア量を増大させずに低精度の乗算と高精度の乗算との
双方の性能を改善できるが、実行可能な演算が内積演算
や複素数乗算等に限られており、最終段階で複数の乗算
結果を加算しなければならないという問題点があった。
ためになされたものであり、高精度乗算を高速に実行す
るとともに、複数の低精度乗算或いは積和演算を独立か
つ並列に行うことができる乗算器及び積和演算器を提供
することを目的とする。
め、本発明の第1の観点にかかる乗算器は、乗数を複数
の部分ビット列に分割する乗数分割手段と、前記乗数分
割手段が分割する部分ビット列に含まれる前記乗数の下
位半分のビットのうちの最上位ビットを第1の制御信号
に従って“0”に置換する乗数置換手段と、前記乗数分
割手段が分割する部分ビット列のそれぞれに対応して設
けられ、各部分ビット列と被乗数との、前記被乗数のビ
ット数の2倍のビット数で表される部分積を生成する複
数の部分積生成手段と、前記被乗数の下位半分のビット
を前記第1の制御信号に従って“0”に置換し、前記複
数の部分積生成手段のうちの前記乗数の上位半分の部分
ビット列に対応する部分積を生成するものに供給する第
1の被乗数置換手段と、前記被乗数の上位半分のビット
を前記第1の制御信号に従って下位半分のビットのうち
の最上位ビットの値に置換し、前記複数の部分積生成手
段のうちの前記乗数の下位半分の部分ビット列に対応す
る部分積を生成するものに供給する第2の被乗数置換手
段と、前記複数の部分積生成手段のそれぞれで生成され
た部分積のうち前記乗数の下位半分の部分ビット列に対
応する部分積を加算する第1の部分加算手段と、前記複
数の部分積生成手段のそれぞれで生成された部分積のう
ち前記乗数の上位半分の部分ビット列に対応する部分積
を加算する第2の部分加算手段と、前記複数の部分積生
成手段が生成した部分積のうち前記乗数の下位半分の部
分ビット列に対応するものの上位半分のビットを前記第
1の制御信号に従って“0”に置換し、前記第2の部分
加算手段に供給する部分積置換手段と、前記第1の部分
加算手段からの桁上げ信号と“0”とのいずれかを前記
第1の制御信号に従って選択し、前記第2の部分加算手
段に下位からの桁上げ信号として供給する桁上げ選択手
段とを備えることを特徴とする。
は、前記乗数の全ビットと前記被乗数の全ビットとの積
を求める高精度の乗算、或いは前記乗数の上位半分のビ
ットと前記被乗数の上位半分のビットとの積及び前記乗
数の下位半分のビットと前記被乗数の下位半分のビット
との積を求める低精度の乗算のいずれか一方を指示する
ものとすることができる。この場合、前記乗数置換手段
は、前記第1の制御信号が低精度の乗算を指示している
ときに、上位の部分ビット列に含まれる前記乗数の下位
半分のビットのうちの最上位ビットを“0”に置換する
ものとすることができ、前記第1の被乗数置換手段は、
前記第1の制御信号が低精度の乗算を指示しているとき
に、前記被乗数の下位半分のビットを“0”に置換し、
前記第2の被乗数置換手段は、前記第1の制御信号が低
精度の乗算を指示しているときに、前記被乗数の上位半
分のビットを下位半分のビットのうちの最上位ビットの
値に置換するものとすることができ、前記部分積置換手
段は、前記第1の制御信号が低精度の乗算を指示してい
るときに、前記部分積のうち前記乗数の下位半分の部分
ビット列に対応するものの上位半分のビットを“0”に
置換するものとすることができ、前記桁上げ選択手段
は、前記第1の制御信号が高精度の乗算を指示している
ときに前記第1の部分加算手段からの桁上げ信号を、前
記第1の制御信号が低精度の乗算を指示しているときに
“0”をそれぞれ選択して前記第2の部分加算手段に桁
上げ信号として供給するものとすることができる。
を指示するものとすれば、上記第2、第1の部分加算手
段による加算結果を並べたものが乗数の全ビットと被乗
数の全ビットとの積となる。一方、制御信号を低精度の
乗算を指示するものとすれば、第2の部分加算手段の出
力が乗数の上位半分のビットと被乗数の上位半分のビッ
トとの積となり、第1の部分加算手段の出力が乗数の下
位半分のビットと被乗数の下位半分のビットとの積とな
る。
時に求める低精度の乗算とを同一のハードウェアで実行
することが可能となる。しかも、高精度の乗算、複数の
低精度の乗算を行う場合とも、中間結果の蓄積等を行う
必要がなく、高速に演算結果を得ることができる。
部分積加算手段は、前記部分積の桁毎の和と上位への桁
上げとを算出する第1のウォリスの加算ツリーと、前記
第1のウォリスの加算ツリーで算出された桁毎の和と桁
上げとを加算する第1の加算器によって構成されたもの
とすることができ、前記第2の部分積加算手段は、前記
部分積の各桁毎の和と上位への桁上げとを算出する第2
のウォリスの加算ツリーと、前記第2のウォリスの加算
ツリーで算出された桁毎の和と桁上げとを加算する第2
の加算器によって構成されたものとすることができる。
成手段は、それぞれ前記乗数と前記被乗数とを符号付き
として扱うか符号無しとして扱うかを示す第2の制御信
号が入力され、入力された第2の制御信号に従って対応
する部分ビット列と前記被乗数とを符号付きとして扱っ
たときの部分積と符号無しとして扱ったときの部分積と
のいずれかを生成する手段を備えるものとすることがで
きる。
観点にかかる乗算器は、互いに同数のブロックに分ける
ことが可能な乗数と被乗数との全ビット同士での積、或
いは対応するブロックのビット同士の積を求める乗算器
であって、乗数を複数の部分ビット列に分割する乗数分
割手段と、前記乗数分割手段が分割する部分ビット列に
含まれる前記乗数のブロック毎の最上位ビットを第1の
制御信号に従って“0”に置換する乗数置換手段と、前
記乗数分割手段が分割する部分ビット列のそれぞれに対
応して設けられ、各部分ビット列と被乗数との、前記被
乗数のビット数の2倍のビット数で表される部分積を生
成する複数の部分積生成手段と、前記被乗数の下位から
いずれかのブロックまでのビットを前記第1の制御信号
に従って“0”に置換し、前記複数の部分積生成手段の
うちの前記乗数の置換を行うブロックまでに対応する部
分ビット列に対応する部分積を生成するものに供給する
第1の被乗数置換手段と、前記被乗数の上位からいずれ
かのブロックまでのビットを前記第1の制御信号に従っ
て該ブロックより1つ下位のブロックのうちの最上位ビ
ットの値に置換し、前記複数の部分積生成手段のうちの
前記乗数の置換を行うブロックまでに対応する部分ビッ
ト列に対応する部分積を生成するものに供給する第2の
被乗数置換手段と、前記複数の部分積生成手段のそれぞ
れで生成された部分積を、それぞれいずれかのブロック
に対応するもの同士で加算する複数の部分加算手段と、
前記複数の部分積生成手段がそれぞれ生成した部分積の
うち、対応するブロックよりも上位のビットを前記第1
の制御信号に従って“0”に置換し、対応する前記複数
の部分加算手段に供給する部分積置換手段と、前記複数
の部分加算手段のそれぞれからの桁上げ信号と“0”と
のいずれかを前記第1の制御信号に従って選択し、それ
ぞれ1つ上位の部分加算手段に下位からの桁上げ信号と
して供給する複数の桁上げ選択手段とを備えることを特
徴とする。
観点にかかる積和演算器は、乗数の下位半分のビットの
うちの最上位ビットを第1の制御信号に従って“0”に
置換する乗数置換手段と、前記乗数置換手段により下位
半分のビットのうちの最上位ビットが置換されたまたは
置換されていない乗数を複数の部分ビット列に分割する
乗数分割手段と、前記乗数分割手段が分割する部分ビッ
ト列のそれぞれに対応して設けられ、各部分ビット列と
被乗数との、前記被乗数のビット数の2倍のビット数で
表される部分積を生成する複数の部分積生成手段と、前
記被乗数の下位半分のビットを前記第1の制御信号に従
って“0”に置換し、前記複数の部分積生成手段のうち
の前記乗数の上位半分の部分ビット列に対応する部分積
を生成するものに供給する第1の被乗数置換手段と、前
記被乗数の上位半分のビットを前記第1の制御信号に従
って下位半分のビットのうちの最上位ビットの値に置換
し、前記複数の部分積生成手段のうちの前記乗数の下位
半分の部分ビット列に対応する部分積を生成するものに
供給する第2の被乗数置換手段と、前記乗数の下位半分
の部分ビット列の積和に対応する、過去に求めた積和を
保持する第1の積和保持手段と、前記乗数の上位半分の
部分ビット列の積和に対応する、過去に求めた積和を保
持する第2の積和保持手段と、前記複数の部分積生成手
段のそれぞれで生成された部分積のうち前記乗数の下位
半分の部分ビット列に対応する部分積と、前記第1の積
和保持手段に保持された過去の積和とをそれぞれ加算し
て、積和を求める第1の積和演算手段と、前記複数の部
分積生成手段のそれぞれで生成された部分積のうち前記
乗数の上位半分の部分ビット列に対応する部分積と、前
記第2の積和保持手段に保持された過去の積和とをそれ
ぞれ加算して、積和を求める第2の積和演算手段と、前
記複数の部分積生成手段が生成した部分積のうち前記乗
数の下位半分の部分ビット列に対応するものの上位半分
のビットを前記第1の制御信号に従って“0”に置換
し、前記第2の積和演算手段に供給する部分積置換手段
と、前記第1の積和演算手段からの桁上げ信号と“0”
とのいずれかを前記第1の制御信号に従って選択し、前
記第2の積和演算手段に下位からの桁上げ信号として供
給する桁上げ選択手段とを備えることを特徴とする。
で、上記第2、第1の積和演算手段による加算結果を並
べたものを乗数の全ビットと被乗数の全ビットとの積の
積和とすることができる。また、制御信号の制御によっ
て、第2の積和手段の出力を乗数の上位半分のビットと
被乗数の上位半分のビットとの積の積和とし、第1の部
分加算手段の出力を乗数の下位半分のビットと被乗数の
下位半分のビットとの積の積和とすることもできる。
和を同時に求める低精度の積和演算とを同一のハードウ
ェアで実行することが可能となる。しかも、高精度の乗
算、複数の低精度の乗算を行う場合とも、中間結果の蓄
積等を行う必要がなく、高速に演算結果を得ることがで
きる。
観点にかかる積和演算器は、互いに同数のブロックに分
けることが可能な乗数と被乗数との全ビット同士での
積、或いは対応するブロックのビット同士の積を求める
積和演算器であって、乗数を複数の部分ビット列に分割
する乗数分割手段と、前記乗数分割手段が分割する部分
ビット列に含まれる前記乗数のブロック毎の最上位ビッ
トを第1の制御信号に従って“0”に置換する乗数置換
手段と、前記乗数分割手段が分割する部分ビット列のそ
れぞれに対応して設けられ、各部分ビット列と被乗数と
の、前記被乗数のビット数の2倍のビット数で表される
部分積を生成する複数の部分積生成手段と、前記被乗数
の下位からいずれかのブロックまでのビットを前記第1
の制御信号に従って“0”に置換し、前記複数の部分積
生成手段のうちの前記乗数の置換を行うブロックまでに
対応する部分ビット列に対応する部分積を生成するもの
に供給する第1の被乗数置換手段と、前記被乗数の上位
からいずれかのブロックまでのビットを前記第1の制御
信号に従って該ブロックより1つ下位のブロックのうち
の最上位ビットの値に置換し、前記複数の部分積生成手
段のうちの前記乗数の置換を行うブロックまでに対応す
る部分ビット列に対応する部分積を生成するものに供給
する第2の被乗数置換手段と、それぞれいずれかのブロ
ックに対応する過去に求めた積和を保持する複数の積和
保持手段と、前記複数の部分積生成手段のそれぞれで生
成された部分積と、前記複数の積和保持手段に保持され
た過去の積和とをそれぞれいずれかのブロックに対応す
るもの同士で加算して、積和を求める複数の積和演算手
段と、前記複数の部分積生成手段がそれぞれ生成した部
分積のうち、対応するブロックよりも上位のビットを前
記第1の制御信号に従って“0”に置換し、対応する前
記複数の部分積和演算手段に供給する部分積置換手段
と、前記複数の積和演算手段のそれぞれからの桁上げ信
号と“0”とのいずれかを前記第1の制御信号に従って
選択し、それぞれ1つ上位の積和演算手段に下位からの
桁上げ信号として供給する複数の桁上げ選択手段とを備
えることを特徴とする。
て詳細に説明する。
形態にかかる符号付き乗算器の構成を示すブロック図で
ある。この乗算器は、8ビット精度または2個の4ビッ
ト精度の符号付き乗算を行うものである。
符号付き乗算器は、Boothデコーダ100と、部分積生
成部101〜104と、Wallace加算ツリー105、1
06と、2入力桁上げ加算器107、108と、セレク
タ110、111、112とから構成されている。
乗算を行う場合、セレクタ110の出力に従い、乗数Y
(Y7..Y0)を(0,Y0,Y1)、(Y1,Y2,Y3)、(Y3,Y4,Y5)、(Y5,Y
6,Y7)の部分ビット列に分解し、それぞれ部分積生成部
101〜104に供給する。Boothデコーダ100は、
4ビット精度の乗算を行う場合、セレクタ110の出力
に従い、乗数Y(Y7..Y0)を(0,Y0,Y1)、(Y1,Y2,Y3)、(0,
Y4,Y5)、(Y5,Y6,Y7)の部分ビット列に分解し、それぞれ
部分積生成部101〜104に供給する。
Boothデコーダ100から供給された乗数Yのビット列
と被乗数Xとの部分積を16ビットのデータとして求
め、それぞれ上位8ビットをWallace加算ツリー105
へ、下位8ビットをWallace加算ツリー106へ供給す
る。部分積生成部101〜104の詳細については、さ
らに後述する。
部101〜104で求められた部分積の下位8ビットを
加算し、各桁の和と桁上げ信号とを求め、2入力桁上げ
加算器108に供給する。Wallace加算ツリー106の
桁上げ信号は、セレクタ111に供給される。
部101〜104で求められた部分積の上位8ビットを
加算し、各桁の和と桁上げ信号とを求め、2入力桁上げ
加算器107に供給する。Wallace加算ツリー105
は、各桁の和と桁上げ信号とを求めるときに、下位から
の桁上げを考慮して行う。Wallace加算ツリー105、
106の詳細については、さらに後述する。
れぞれWallace加算ツリー105、106によって求め
られた各桁の和と桁上げ信号とを加算する。2入力桁上
げ加算器107には、下位からの桁上げ信号も入力され
る。2入力桁上げ加算器107、108の詳細について
は、さらに後述する。
って、乗数YのY3ビットの値と“0”とのいずれかを
選択し、Boothデコーダ100に供給する。すなわち、
セレクタ100は、制御信号SIMDが8ビット精度の
演算を示すときは、Boothデコーダ100から(Y3,Y4,Y
5)が部分ビット列として出力されるように、4ビット精
度の演算を示すときは、Boothデコーダ100から(0,Y
4,Y5)が部分ビット列として出力されるように、その出
力を制御する。
って、Wallace加算ツリー106の上位2桁の桁上げ信
号と“0”とのいずれかを選択し、Wallace加算ツリー
105に下位からの桁上げ信号として供給する。セレク
タ111の詳細については、さらに後述する。セレクタ
112は、制御信号SIMDに従って、2入力桁上げ加
算器108の最上位桁の桁上げ信号と“0”とのいずれ
かを選択し、2入力桁上げ加算器107に下位からの桁
上げ信号として供給する。
細に示す図である。図示するように、部分積生成部10
1〜104は、それぞれ部分積生成回路201〜204
と、インバータ群205〜208と、セレクタ群209
〜212とから構成されている。
a、201bと、シフト回路201cとから構成されて
いる。セレクタ201aは、制御信号SIMDに従っ
て、被乗数Xの部分ビット列(X3..X0)と“0000”と
のいずれかを選択して出力する。セレクタ201bは、
制御信号SIMDに従って、被乗数Xの部分ビット列(X
7..X4)と(X3,X3,X3,X3)とのいずれかを出力する。シフ
ト回路201cは、セレクタ201aの出力を下位0〜
3ビット、セレクタ201bの出力を下位4〜7ビッ
ト、セレクタ201bの最上位の出力を上位8ビットと
するデータを入力し、これをBoothデコーダ100から
供給される部分ビット列の値に従ってシフトする。
れ部分積生成回路201と同一に構成されている。但
し、それぞれのセレクタは、対応する乗数Yの部分ビッ
ト列に応じてシフトを行った後、2ビット、4ビット、
6ビットの左シフト(以下、この左シフトを再シフトと
いう)を行い、そこに“0”を挿入する。
部分積生成回路201〜204からの出力信号(但し、
再シフトによって挿入されたものを除く)のそれぞれを
反転し、セレクタ群209〜210に供給する。
1の出力信号が正であるか負であるかに従って、それぞ
れ部分積生成回路201の出力信号とインバータ群20
5の出力信号とのいずれかを選択して出力し、さらに上
位8ビットについては、制御信号SIMDに従って、そ
れぞれ部分積生成回路201の出力信号とインバータ群
205の出力信号と“0”とのいずれかとを選択して出
力する。
2の出力信号が正であるか負であるかに従って、それぞ
れ部分積生成回路202の出力信号の上位14ビットと
インバータ群206の出力信号とのいずれかを選択して
出力し、さらに上位8ビットについては、制御信号SI
MDに従って、それぞれ部分積生成回路202の出力信
号とインバータ群206の出力信号と“0”とのいずれ
かとを選択して出力する。
3の出力信号(4ビット精度の乗算ではその上位8ビッ
ト)が正であるか負であるか、及び制御信号SIMDに
従って、それぞれ部分積生成回路203の出力信号の上
位12ビットとインバータ群207の出力信号とのいず
れかを選択して出力する。
4の出力信号(4ビット精度の乗算ではその上位8ビッ
ト)が正であるか負であるか、及び制御信号SIMDに
従って、それぞれ部分積生成回路203の出力信号の上
位10ビットとインバータ群207の出力信号とのいず
れかを選択して出力する。
タ群205〜208、及びセレクタ群209〜212に
おいて上記のような計算がされることにより、部分積生
成部101〜104は、乗数Yの部分ビット列と被乗数
Xとの符号付きの部分積を出力する。なお、部分積生成
部101〜104から出力される部分積を、それぞれ(P
f0..P00)、(Pf1..P01)、(Pf2..P02)、(Pf3..P03)とす
る。ここで、P01,P11,P02,P12,P22,P32,P03,P13,P23,P3
3,P43,P53の値は、常に“0”である。
加算ツリー106、105の詳細を示す図である。図示
するように、Wallace加算ツリー106は、セレクタ1
06a、106bと、24個の全加算器で構成される全
加算器群300とから構成される。
SIMDに従って、それぞれN3またはN2と“0”と
のいずれかを選択して出力する。全加算器群300は、
部分積生成部101〜104の出力信号のそれぞれの下
位8ビット、N0、N1、及びセレクタ106a、10
6bの出力信号を入力とし、部分積生成部101〜10
4から出力された部分積を加算し、各桁の和(S0..S7)と
桁上げ信号(C0..C7)を求める。なお、N1〜N4は、そ
れぞれ部分積生成部101〜104が出力した部分積が
負であるときに値を“1”とする。
は、2つのセレクタ111a、111bから構成され、
セレクタ111aは、制御信号SIMDに従って、全加
算器群300の図の最上段左端の全加算器の桁上げ信号
と“0”とのいずれかを選択し、桁上げ信号C7aとしてW
allace加算ツリー105へ供給する。セレクタ111b
は、制御信号SIMDに従って、全加算器群300の図
の中段左端の全加算器の桁上げ信号と“0”とのいずれ
かを選択し、桁上げ信号C7bとしてWallace加算ツリー1
05へ供給する。
クタ105a、105bと、24個の全加算器で構成さ
れる全加算器群301とから構成される。セレクタ10
5a、105bは、制御信号SIMDに従って、それぞ
れN3またはN2と“0”とのいずれかを選択して出力
する。全加算器群300は、部分積生成部101〜10
4の出力信号のそれぞれの上位8ビット、セレクタ10
6a、106bの出力信号、セレクタ111a、111
bからの桁上げ信号C7a,C7bを入力とし、部分積生成部
101〜104から出力された部分積を加算し、各桁の
和(S8..Sf)と桁上げ信号(C8..Cf)を求める。
7、108の詳細を示す図である。図示するように、2
入力桁上げ加算器108は、Wallace加算ツリー106
の各桁の出力信号(S0..S7)と桁上げ信号(C0..C6)とを加
算し、乗算結果(Z0..Z7)を出力する。2入力桁上げ加算
器108は、2入力桁上げ加算器108からの桁上げを
考慮して、Wallace加算ツリー105の各桁の出力信号
(S8..Sf)と桁上げ信号(C8..Ce)とを加算し、乗算結果(Z
8..Zf)を出力する。
作について、説明する。この実施の形態の乗算器では、
(1)8ビット精度の乗算を行う場合、(2)4ビット
精度の乗算を行う場合、の2つの場合がある。以下、そ
れぞれの場合に分けて、この実施の形態にかかる乗算器
の動作を説明する。
は、乗数YのY3ビットを出力する。これにより、Boot
hデコーダ100は、乗数Yを(0,Y0,Y1)、(Y1,Y2,Y3)、
(Y3,Y4,Y5)、(Y5,Y6,Y7)の部分ビット列に分解し、それ
ぞれ部分積生成部101〜104に供給する。
積生成回路201〜204において、セレクタ201a
(部分積生成回路202〜204の対応するものを含
む。次段落まで同じ)は被乗数Xの下位0〜3ビット(X
3..X0)を選択して出力し、セレクタ201bは被乗数X
の下位4〜7ビット(X4..X7)を選択して出力し、シフト
回路201cの下位8ビットの入力とする。また、シフ
ト回路201cの上位8ビットの入力は、(X7,X7,X7,X
7,X7,X7,X7,X7)となる。
ーダ100から供給された部分ビット列に従って入力信
号をビットシフトして、さらに部分積生成回路202〜
204に対応するものではそれぞれ2、4、6ビット左
にビットシフトして、部分積生成回路201〜204に
よる乗数Yの部分ビット列と被乗数Xとの部分積として
出力する。これらは、インバータ群205〜208によ
って反転して出力され、部分積生成回路201〜204
の出力信号とインバータ群205〜208の出力信号と
が、セレクタ群209〜212によって次のようにして
選択して出力される。
路201から出力された部分積の符号が正であれば、部
分積生成回路201の出力信号をすべて選択し、部分積
生成部101の出力信号(Pf0..P00)として出力する。一
方、符号が負であれば、インバータ群205の出力信号
をすべて選択し、部分積生成部101の出力信号(Pf0..
P00)として出力する。
2から出力された部分積の符号が正であれば、部分積生
成回路202の出力信号の上位14ビットをすべて選択
し、部分積生成部102の出力信号の上位14ビット(P
f1..P21)として出力する。一方、符号が負であれば、イ
ンバータ群206の出力信号をすべて選択し、部分積生
成部102の出力信号の上位14ビット(Pf1..P21)とし
て出力する。部分積生成部102の出力信号の下位2ビ
ット(P11,P01)は、部分積の符号に関わらず、いずれも
“0”である。
3から出力された部分積の符号が正であれば、部分積生
成回路203の出力信号の上位12ビットをすべて選択
し、部分積生成部103の出力信号の上位12ビット(P
f2..P42)として出力する。一方、符号が負であれば、イ
ンバータ群207の出力信号をすべて選択し、部分積生
成部103の出力信号の上位12ビット(Pf2..P42)とし
て出力する。部分積生成部103の出力信号の下位4ビ
ット(P32,P02)は、部分積の符号に関わらず、いずれも
“0”である。
4から出力された部分積の符号が正であれば、部分積生
成回路204の出力信号の上位10ビットをすべて選択
し、部分積生成部104の出力信号の上位10ビット(P
f3..P63)として出力する。一方、符号が負であれば、イ
ンバータ群208の出力信号をすべて選択し、部分積生
成部104の出力信号の上位10ビット(Pf3..P63)とし
て出力する。部分積生成部104の出力信号の下位6ビ
ット(P53,P03)は、部分積の符号に関わらず、いずれも
“0”である。
ら出力された部分積は、それぞれの下位8ビットがWall
ace加算ツリー106に供給され、上位8ビットがWalla
ce加算ツリー105に供給される。このとき、Wallace
加算ツリー105、106内のセレクタ105a、10
6aは、N3を選択して出力し、セレクタ105b、1
06bは、N2を選択して出力する。
部101〜104のそれぞれで生成された部分積の下位
8ビットの各桁をキャリーセーブ方式で加算し、桁毎の
和信号(S7..S0)と上位桁への桁上げ信号(C7..C0)を生成
する。生成された桁毎の和信号(S7..S0)と上位桁への桁
上げ信号(C6..C0)は、2入力桁上げ加算器108へ供給
される。また、Wallace加算ツリー106で生成された
中間結果の桁上げ信号(C7a,C7b)は、それぞれセレクタ
111a、111bによって選択され、Wallace加算ツ
リー105に供給される。
ツリー106からの桁上げ信号(C7a,C7b)を考慮して、
部分積生成部101〜104のそれぞれで生成された部
分積の上位8ビットの各桁をキャリーセーブ方式で加算
し、桁毎の和信号(Sf..S8)と上位桁への桁上げ信号(C
f..C8)を生成する。生成された桁毎の和信号(Sf..S8)と
上位桁への桁上げ信号(Ce..C8)は、2入力桁上げ加算器
107へ供給される。
ace加算ツリー106からの桁毎の和信号(S7..S0)と上
位桁への桁上げ信号(C6..C0)とを加算し、下位8ビット
の乗算結果(Z7..Z0)を得る。このとき生じた上位への桁
上げ信号は、セレクタ112によって選択され、2入力
桁上げ加算器107に入力される。そして、2入力桁上
げ加算器107は、2入力桁上げ加算器108からの桁
上げ信号を考慮して、Wallace加算ツリー105からの
桁毎の和信号(Sf..S8)と上位桁への桁上げ信号(Ce..C8)
とを加算し、下位8ビットの乗算結果(Zf..Z8)を得る。
乗数の部分ビット列(Y7..Y4)、(Y3..Y0)をそれぞれ独立
したデータとみなし、以下のようにして(X7..X4)と(Y
7..Y4)の乗算、および(X7..X4)と(Y3..Y0)の乗算を並列
に行う。
タ110は、“0”を出力する。これにより、Boothデ
コーダ100は、乗数Yを(0,Y0,Y1)、(Y1,Y2,Y3)、(0,
Y4,Y5)、(Y5,Y6,Y7)の部分ビット列に分解し、それぞれ
部分積生成部101〜104に供給する。
積生成回路201、202において、セレクタ201a
(部分積生成回路202の対応するものを含む。次々段
落まで同じ)は被乗数Xの下位0〜3ビット(X3..X0)を
選択して出力し、セレクタ201bは被乗数XのX3ビ
ットを選択して出力し、シフト回路201cの下位8ビ
ットの入力とする。また、シフト回路201cの上位8
ビットの入力は、(X3,X3,X3,X3,X3,X3,X3,X3)となる。
ーダ100から供給された部分ビット列に従って入力信
号をビットシフトして、さらに部分積生成回路202に
対応するものでは2ビット左にビットシフトして、部分
積生成回路201、202による乗数Yの部分ビット列
と被乗数Xとの部分積として出力する。これらは、イン
バータ群205、206によって反転して出力され、部
分積生成回路201、202の出力信号とインバータ群
205、206の出力信号とが、セレクタ群209、2
10によって次のようにして選択して出力される。
ては“0”を選択し、部分積生成部101の出力信号の
上位8ビット(Pf0..P80)として出力する。下位8ビット
については、部分積生成回路201から出力された部分
積の符号が正であれば、部分積生成回路201の出力信
号を選択し、部分積生成部101の出力信号の下位8ビ
ット(P70..P00)として出力する。一方、符号が負であれ
ば、インバータ群205の出力信号を選択し、部分積生
成部101の出力信号の下位8ビット(P70..P00)として
出力する。
ては“0”を選択し、部分積生成部102の出力信号の
上位8ビット(Pf1..P81)として出力する。下位2〜7ビ
ットについては、部分積生成回路202から出力された
部分積の符号が正であれば、部分積生成回路202の出
力信号を選択し、部分積生成部102の出力信号の下位
2〜7ビット(P71..P21)として出力する。一方、符号が
負であれば、インバータ群205の出力信号を選択し、
部分積生成部102の出力信号の下位2〜7ビット(P7
1..P21)として出力する。部分積生成部102の出力信
号の下位2ビット(P11,P01)は、部分積の符号に関わら
ず、いずれも“0”である。
積生成回路203、204において、セレクタ201a
(実際は、部分積生成回路203、204の対応するも
のを指す。次々段落まで同じ)は被乗数Xの“0”を選
択して出力し、セレクタ201bは被乗数Xの下位4〜
7ビット(X4..X7)を選択して出力し、シフト回路201
cの下位8ビットの入力とする。また、シフト回路20
1cの上位8ビットの入力は、(X7,X7,X7,X7,X7,X7,X7,
X7)となる。
ーダ100から供給された部分ビット列に従って入力信
号をビットシフトして、さらに部分積生成回路203、
204に対応するものでそれぞれ4、6ビット左にビッ
トシフトして、部分積生成回路203、204による乗
数Yの部分ビット列と被乗数Xとの部分積として出力す
る。これらは、インバータ群207、208によって反
転して出力され、部分積生成回路203、204の出力
信号とインバータ群207、208の出力信号とが、セ
レクタ群211、212によって次のようにして選択し
て出力される。
ては、部分積生成回路203から出力された部分積の符
号が正であれば、部分積生成回路203の出力信号を選
択し、部分積生成部103の出力信号の上位8ビット(P
f2..P82)として出力する。一方、符号が負であれば、イ
ンバータ群207の出力信号を選択し、部分積生成部1
03の出力信号の上位8ビット(Pf2..P82)として出力す
る。下位4〜7ビットについては部分積生成回路203
の出力信号を選択し、部分積生成部103の出力信号の
下位4〜7ビット(P72..P42)として出力する。部分積生
成部103の出力信号の下位4ビット(P32..P30)は、部
分積の符号に関わらず、いずれも“0”である。
ては、部分積生成回路204から出力された部分積の符
号が正であれば、部分積生成回路204の出力信号を選
択し、部分積生成部104の出力信号の上位8ビット(P
f3..P83)として出力する。一方、符号が負であれば、イ
ンバータ群208の出力信号を選択し、部分積生成部1
04の出力信号の上位8ビット(Pf3..P83)として出力す
る。下位6、7ビットについては部分積生成回路203
の出力信号を選択し、部分積生成部104の出力信号の
下位6、7ビット(P73,P63)として出力する。部分積生
成部104の出力信号の下位6ビット(P53..P03)は、部
分積の符号に関わらず、いずれも“0”である。
ら出力された部分積は、それぞれの下位8ビットがWall
ace加算ツリー106に供給され、上位8ビットがWalla
ce加算ツリー105に供給される。このとき、Wallace
加算ツリー105、106内のセレクタ105a、10
6aは、“0”を選択して出力し、セレクタ105b、
106bは、“0”を選択して出力する。
部101〜104のそれぞれで生成された部分積の下位
8ビットの各桁をキャリーセーブ方式で加算し、桁毎の
和信号(S7..S0)と上位桁への桁上げ信号(C7..C0)を生成
する。生成された桁毎の和信号(S7..S0)と上位桁への桁
上げ信号(C6..C0)は、2入力桁上げ加算器108へ供給
される。Wallace加算ツリー106で生成された桁上げ
信号(C7a,C7b)は、それぞれセレクタ111a、111
bによって選択されず、Wallace加算ツリー105には
それぞれ“0”が供給される。
部101〜104のそれぞれで生成された部分積の上位
8ビットの各桁をキャリーセーブ方式で加算し、桁毎の
和信号(Sf..S8)と上位桁への桁上げ信号(Cf..C8)を生成
する。生成された桁毎の和信号(Sf..S8)と上位桁への桁
上げ信号(Ce..C8)は、2入力桁上げ加算器107へ供給
される。
ace加算ツリー106からの桁毎の和信号(S7..S0)と上
位桁への桁上げ信号(C6..C0)とを加算し、下位8ビット
の乗算結果(Z7..Z0)を得る。このとき生じた上位への桁
上げ信号は、セレクタ112によって選択されず、2入
力桁上げ加算器107には“0”が下位からの桁上げ信
号として入力される。そして、2入力桁上げ加算器10
7は、Wallace加算ツリー105からの桁毎の和信号(S
f..S8)と上位桁への桁上げ信号(Ce..C8)とを加算し、下
位8ビットの乗算結果(Zf..Z8)を得る。
作について、図4(a)、(b)に従って具体的に説明
する。ここでは、乗数Yが“00111110”であ
り、被乗数Xが“11001101”である場合を例と
して説明する。
度の符号付き乗算を行う場合を示す。この場合は、乗数
Yを8ビットデータと見なし、通常のBoothのアルゴリ
ズムを適用する。すなわち、この例では、上記のように
してBoothデコーダ100が乗数Yを部分ビット列“0
01”、“111”、“111”、“100”に分解す
る。そして、部分積生成部101〜104において、こ
れらと被乗数Xとの部分積が、図に示すように求められ
る。
6及び2入力桁上げ加算器107、108で部分積が上
位8ビット同士、下位8ビット同士でそれぞれ加算され
るが、セレクタ111はWallace加算ツリー106の桁
上げ信号をWallace加算ツリー105に供給し、セレク
タ112は2入力桁上げ加算器108の桁上げ信号を2
入力桁上げ加算器107に供給するように、選択する。
従って、2入力桁上げ加算器107、108で部分積を
そのまま加算した結果の“1100111010011
0”が、乗数Yと被乗数Xの乗算結果となる。
0100110)2=(−3162)10は、乗数Y
(00111110)2=(+62)10と、被乗数
(11001101)2=(−51)10との積を示し
ている。ここで、()2は、括弧内の数字が2進数であ
ることを、()10は括弧内の数字が10進数であるこ
とをそれぞれ示す(以下、同じ)。
度の符号付き乗算を行う場合を示す。この場合、乗数Y
と被乗数Xをそれぞれ上位4ビットと下位4ビットに分
割し、独立した符号付きデータとして扱う。この例で
は、上記のようにしてBoothデコーダ100が乗数Yを
部分ビット列“001”、“110”、“111”、
“100”に分解し、また、部分積生成回路203、2
04は、セレクタ201a(部分積生成回路203、2
04が有するセレクタ201aに対応するものをいう)
により被乗数Xの下位4ビットを“0”に置き換えて部
分積を求める。
位8ビットとに“0”を選択して出力する。また、この
とき、部分積生成回路203、204によって求めた部
分積の下位8ビットは、被乗数Xの下位4ビットが
“0”に置換されたことと、シフト回路によるビットシ
フトにより、すべて“0”となる。これにより、部分積
生成部101〜104において、部分ビット列と被乗数
Xとの部分積が、図に示すように求められる。
6及び2入力桁上げ加算器107、108で部分積が上
位8ビット同士、下位8ビット同士でそれぞれ加算され
るが、セレクタ111、112は、それぞれ“0”を選
択して加算ツリー105、2入力桁上げ加算器107に
供給する。従って、2入力桁上げ加算器107の出力信
号は、“11110100”となり、2入力桁上げ加算
器108の出力信号は、“00000110”となる。
100)2=(−12)10、(00000110)2
=(+6)10は、乗数Yの上位4ビット(0011)
2=(+3)10と被乗数Xの上位4ビット(110
0)2=(−4)10との積と、乗数Yの下位4ビット
(1110)2=(−2)10と被乗数Xの下位4ビッ
ト(1101)2=(−3)10との積をそれぞれ示し
ている。
かる乗算器によれば、8ビット同士の乗算と、2つの4
ビット同士の乗算とを同一のハードウェアを用いて実行
することができる。これにより、この乗算器をプロセッ
サ等に適用することで、小面積化及び低電力化の効果を
得ることができる。
は、8ビット精度の乗算と4ビット精度の乗算とのいず
れを行う場合においても、中間結果を蓄積していく必要
はないので、乗算結果を高速に得ることができる。さら
に、実行可能な演算が限られておらず、最終的な乗算結
果を高速に得ることができる。
サに適用することにより、整数演算中心のソフトウエア
だけでなく、低精度演算を中心としたソフトウエアに対
する処理速度を改善することが可能になる。また乗算部
分のハードウエア量の増大を抑えることができるので、
システム全体を低コストで実現することが可能となる。
形態にかかる乗算器の構成を示すブロック図である。こ
の乗算器は、符号付きまたは符号無しの乗算を8ビット
精度または2個の4ビット精度で行うものである。
る乗算器は、Boothデコーダ501と、セレクタ502
〜504と、部分積生成部505〜510と、Wallace
加算ツリー511、512と、2入力桁上げ加算器10
7、108と、セレクタ111、112とから構成され
ている。2入力桁上げ加算器107、108、及びセレ
クタ111、112は、第1の実施の形態のものと同一
である。
符号無し乗算(乗数Y及び被乗数Xを符号無しの数とし
て扱って行う乗算をいう。以下、同じ)を行う場合、セ
レクタ502〜504の出力に従い、乗数Y(Y7..Y0)を
(0,Y0,Y1)、(Y1,Y2,Y3)、(0,0,0)、(Y3,Y4,Y5)、(Y5,Y
6,Y7)、(Y7,0,0)の部分ビット列に分解し、それぞれ部
分積生成部505〜510に供給する。
符号付き乗算(乗数Y及び被乗数Xを符号付きの数とし
て扱って行う乗算をいう。以下、同じ)を行う場合、セ
レクタ502〜504の出力に従い、乗数Y(Y7..Y0)を
(0,Y0,Y1)、(Y1,Y2,Y3)、(0,0,0)、(Y3,Y4,Y5)、(Y5,Y
6,Y7)、(0,0,0)の部分ビット列に分解し、それぞれ部分
積生成部505〜510に供給する。
ビット精度の符号無し乗算を行う場合、セレクタ502
〜504の出力に従い、乗数Y(Y7..Y0)を(0,Y0,Y1)、
(Y1,Y2,Y3)、(Y3,0,0)、(0,Y4,Y5)、(Y5,Y6,Y7)、(Y7,
0,0)の部分ビット列に分解し、それぞれ部分積生成部5
05〜510に供給する。
4ビット精度の符号付き乗算を行う場合、セレクタ50
2〜504の出力に従い、乗数Y(Y7..Y0)を(0,Y0,Y
1)、(Y1,Y2,Y3)、(0,0,0)、(0,Y4,Y5)、(Y5,Y6,Y7)、
(0,0,0)の部分ビット列に分解し、それぞれ部分積生成
部505〜510に供給する。
Boothデコーダ501から供給された乗数Yのビット列
と被乗数Xとの部分積を16ビットのデータとして求
め、それぞれ上位8ビットをWallace加算ツリー511
へ、下位8ビットをWallace加算ツリー512へ供給す
る。部分積生成部505〜510は、符号有無信号に従
って乗数Yの部分ビット列と被乗数Xとの部分積を符号
無しまたは符号付きで生成する。このため、部分積生成
部505〜510は、符号無しまたは符号付きの乗算を
行うために、セレクタ505a〜505c、シフト回路
505d、及びセレクタ505eを備えている(図で
は、部分積生成回路505についてのみ示すが、他も同
様である)。
は、セレクタ505aは(X3..X0)を選択し、セレクタ5
05bは(X4..X7)を選択し、セレクタ505cは“0”
を選択する(それぞれ部分積生成回路505〜510に
おいて対応するものを含む)。一方、8ビット精度の符
号付き乗算を行う場合は、セレクタ505aは(X3..X0)
を選択し、セレクタ505bは(X4..X7)を選択し、セレ
クタ505cはX7ビットを選択し、符号の拡張を行
う。
は、部分積生成回路505〜507に対応するセレクタ
505aは(X3..X0)を選択し、セレクタ505bは
“0”を選択し、セレクタ505cは“0”を選択す
る。また、部分積生成回路508〜510に対応するセ
レクタ505aは“0”を選択し、セレクタ505bは
(X7..X4)を選択し、セレクタ505cは“0”を選択す
る。
は、部分積生成回路505〜507に対応するセレクタ
505aは(X3..X0)を選択し、セレクタ505bは
“0”を選択し、セレクタ505cは“0”を選択す
る。また、部分積生成回路508〜510に対応するセ
レクタ505aは“0”を選択し、セレクタ505bは
(X7..X4)を選択し、セレクタ505cはY7ビットを選
択する。
〜505cから供給されたデータを対応する乗数Yの部
分ビット列に従ってビットシフトする。さらに、部分積
生成部506〜510に対応するシフト回路505d
は、乗数Yの部分ビット列に応じてシフトを行った後、
それぞれ2ビット、4ビット、4ビット、6ビット、8
ビットの左シフトを行い、そこに“0”を挿入する。
し及び符号付きの場合の両方とも、部分積生成部505
〜510のすべてのセレクタ505eは、対応するシフ
ト回路505dの出力信号の上位8ビットを選択して出
力する。
符号無し及び符号付きの場合の両方とも、部分積生成部
505〜507のセレクタ505eは、“0”を選択し
て出力する。部分積生成部508〜510のセレクタ5
05eは、対応するシフト回路505dの出力信号の上
位8ビットを選択して出力する。
このようにして16ビットの部分積を求め、その上位8
ビットをWallace加算ツリー511に、下位8ビットをW
allace加算ツリー512に供給する。
部505〜510で求められた部分積の下位8ビットを
加算し、各桁の和と桁上げ信号とを求め、2入力桁上げ
加算器108に供給する。Wallace加算ツリー512の
桁上げ信号は、セレクタ111に供給される。Wallace
加算ツリー511は、部分積生成部505〜510で求
められた部分積の上位8ビットを加算し、各桁の和と桁
上げ信号とを求め、2入力桁上げ加算器107に供給す
る。Wallace加算ツリー511は、各桁の和と桁上げ信
号とを求めるときに、下位からの桁上げを考慮して行
う。
符号有無信号に従ってセレクタによる選択が行われるこ
とを加えれば、第1の実施の形態で説明した乗算器の動
作をほぼ同様である。
作について、図6に従って具体的に説明する。ここで
も、第1の実施の形態における具体例と同様に、乗数Y
が“00111110”であり、被乗数Xが“1100
1101”である場合を例として説明する。
度の符号無し乗算を行う場合を示す。この場合は、Boot
hデコーダ501が乗数Yを部分ビット列“001”、
“111”、“000”、“111”、“100”、
“000”に分解する。そして、部分積生成部505〜
510において、これらと被乗数Xとの部分積が、図に
示すように求められる。
2及び2入力桁上げ加算器107、108で部分積が上
位8ビット同士、下位8ビット同士でそれぞれ加算され
るが、セレクタ111はWallace加算ツリー512の桁
上げ信号をWallace加算ツリー511に供給し、セレク
タ112は2入力桁上げ加算器108の桁上げ信号を2
入力桁上げ加算器107に供給するように、選択する。
従って、2入力桁上げ加算器107、108で部分積を
そのまま加算した結果の“0011000110100
110”が、乗数Yと被乗数Xの乗算結果となる。
110100110)2は、乗数Y(0011111
0)2=(62)10と、被乗数(11001101)
2=(51)10との積である(12710)10を示
している。
度の符号無し乗算を行う場合を示す。この場合、乗数Y
と被乗数Xをそれぞれ上位4ビットと下位4ビットに分
割し、独立した符号付きデータとして扱う。この例で
は、上記のようにしてBoothデコーダ501が乗数Yを
部分ビット列“001”、“111”、“100”、
“011”、“100”、“000”分解する。また、
部分積生成部508〜510のセレクタ505bより被
乗数Xの下位4ビットを“0”に置き換えて部分積を求
める。
05eは、部分積の上位8ビットとに“0”を選択して
出力する。また、このとき、部分積生成部508〜51
0求めた部分積の下位8ビットは、被乗数Xの下位4ビ
ットが“0”に置換されたことと、シフト回路によるビ
ットシフトにより、すべて“0”となる。こうして部分
積生成部505〜510において、部分ビット列と被乗
数Xとの部分積が、図に示すように求められる。
2及び2入力桁上げ加算器107、108で部分積が上
位8ビット同士、下位8ビット同士でそれぞれ加算され
るが、セレクタ111、112は、それぞれ“0”を選
択して加算ツリー105、2入力桁上げ加算器107に
供給する。従って、2入力桁上げ加算器107の出力信
号は、“00010100”となり、2入力桁上げ加算
器108の出力信号は、“00000110”となる。
100)2=(36)10、(00000110)2=
(+6)10は、乗数Yの上位4ビット(0011)2
=(3)10と被乗数Xの上位4ビット(1100)2
=(12)10との積と、乗数Yの下位4ビット(11
10)2=(14)10と被乗数Xの下位4ビット(1
101)2=(13)10との積をそれぞれ示してい
る。
かる乗算器によれば、8ビット同士の乗算と、2つの4
ビット同士の乗算とを、その符号を考慮または考慮せず
に、同一のハードウェアを用いて実行することができ
る。これにより、この乗算器をプロセッサ等に適用する
ことで、小面積化及び低電力化の効果を得ることができ
る。
は、8ビット精度の乗算と4ビット精度の乗算とのいず
れを行う場合においても、中間結果を蓄積していく必要
はないので、乗算結果を高速に得ることができる。さら
に、実行可能な演算が限られておらず、最終的な乗算結
果を高速に得ることができる。
サに適用することにより、整数演算中心のソフトウエア
だけでなく、低精度演算を中心としたソフトウエアに対
する処理速度を改善することが可能になる。また乗算部
分のハードウエア量の増大を抑えることができるので、
システム全体を低コストで実現することが可能となる。
実施の形態では、乗算器を例として説明したが、この実
施の形態では、積和演算器を例として説明する。この実
施の形態では、第1の実施の形態にかかる乗算器と比較
してWallaceの加算ツリー105、106及びセレクタ
111の構成を変えることにより、積和演算器を実現す
るものである。
の形態にかかる積和演算器に適用されるWallaceの加算
ツリー105’及びセレクタ111’、Wallaceの加算
ツリー106’の構成を詳細に示すブロック図である。
ツリー106’は、第1の実施の形態にかかるWallace
の加算ツリー106(図3)の構成に加えて、全加算器
群700及びレジスタ702を有している。セレクタ1
11’は、第1の実施の形態にかかるセレクタ111
(図3)の構成に加えて、セレクタ111cを有してい
る。
下位8ビットの積和を保持する。全加算器群700は、
全加算器群300が出力した下位8ビットの桁毎の和と
桁上げ信号とレジスタ702に保持されている過去の積
和を加算し、桁毎の和と桁上げ信号とを求める。そし
て、全加算器群700が出力した桁毎の和と桁上げ信号
とを2入力桁上げ加算器108に供給し、下位8ビット
の積和を求めさせる。
従って、全加算器群300の図の3段目左端の全加算器
の桁上げ信号と“0”とのいずれかを選択し、桁上げ信
号C7cとしてWallace加算ツリー105へ供給する。
の加算ツリー105’は、第1の実施の形態にかかるWa
llaceの加算ツリー105(図3)の構成に加えて、全
加算器群701及びレジスタ703を有している。
上位8ビットの積和を保持する。全加算器群701は、
全加算器群301が出力した上位8ビットの桁毎の和と
桁上げ信号とレジスタ703に保持されている過去の積
和を加算し、桁毎の和と桁上げ信号とを求める。そし
て、全加算器群700が出力した桁毎の和と桁上げ信号
とを2入力桁上げ加算器108に供給し、上位8ビット
の積和を求めさせる。
かる積和演算器によれば、8ビット同士の積和演算と、
2つの4ビット同士の積和演算とを同一のハードウェア
を用いて実行することができる。これにより、この積和
演算器をプロセッサ等に適用することで、小面積化及び
低電力化の効果を得ることができる。
セッサに適用することにより、整数演算中心のソフトウ
エアだけでなく、低精度演算を中心としたソフトウエア
に対する処理速度を改善することが可能になる。また乗
算部分のハードウエア量の増大を抑えることができるの
で、システム全体を低コストで実現することが可能とな
る。
1〜第3の実施の形態に限られず、種々の変形、応用が
可能である。以下、本発明に適用可能な上記の実施の形
態の変形態様について説明する。
積生成部101〜104、505〜509が生成した部
分積の加算を、Wallace加算ツリー105、106、5
11、512及び2入力桁上げ加算器107、108で
行っていた。これに対し、部分積生成部101〜10
4、505〜509が生成した部分積の加算には、例え
ば、4入力2出力加算器等、任意の多入力多出力加算器
を用いてもよい。
の形態にかかる乗算器のWallace加算ツリー105、1
06(図1、図3)を、図7に示すWallace加算ツリー
105’、106’に置き換えることによって積和演算
器を実現していた。これに対し、第2の実施の形態にか
かる乗算器のWallace加算ツリー511、512を同様
に置き換えることによって積和演算器を実現することも
可能である。
明を8ビット同士の乗算(積和演算)或いは2つの4ビ
ット同士の乗算(積和演算)を行う場合を例として説明
したが、乗数、被乗数のビット数が異なる場合にも本発
明を適用することができる。また、乗数と被乗数の分割
数を変えること、例えば、32ビットの乗数、被乗数の
乗算と、これを8ビット毎に分割した4つの低精度の乗
算とを行う場合などにも本発明を適用することができ
る。
高精度の乗算または積和演算と複数の低精度の乗算また
は積和演算とを、同一のハードウェアを用いて実行する
ことが可能となる。
数の低精度の乗算または積和演算を行う場合とも、中間
結果の蓄積等を行う必要がなく、高速に演算結果を得る
ことができる。
算器の構成を示すブロック図である。
を詳細に示す図である。
けるWallace加算ツリーを詳細に示す図、(c)は、図
1の符号付き乗算器における2入力桁上げ加算器を詳細
に示す図である。
算器の動作を説明する図である。
成を示すブロック図である。
作を説明する図である。
にかかる積和演算器のWallace加算ツリーを詳細に図で
ある。
ック図である。
ック図である。
Claims (7)
- 【請求項1】乗数を複数の部分ビット列に分割する乗数
分割手段と、 前記乗数分割手段が分割する部分ビット列に含まれる前
記乗数の下位半分のビットのうちの最上位ビットを第1
の制御信号に従って“0”に置換する乗数置換手段と、 前記乗数分割手段が分割する部分ビット列のそれぞれに
対応して設けられ、各部分ビット列と被乗数との、前記
被乗数のビット数の2倍のビット数で表される部分積を
生成する複数の部分積生成手段と、 前記被乗数の下位半分のビットを前記第1の制御信号に
従って“0”に置換し、前記複数の部分積生成手段のう
ちの前記乗数の上位半分の部分ビット列に対応する部分
積を生成するものに供給する第1の被乗数置換手段と、 前記被乗数の上位半分のビットを前記第1の制御信号に
従って下位半分のビットのうちの最上位ビットの値に置
換し、前記複数の部分積生成手段のうちの前記乗数の下
位半分の部分ビット列に対応する部分積を生成するもの
に供給する第2の被乗数置換手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
積のうち前記乗数の下位半分の部分ビット列に対応する
部分積を加算する第1の部分加算手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
積のうち前記乗数の上位半分の部分ビット列に対応する
部分積を加算する第2の部分加算手段と、 前記複数の部分積生成手段が生成した部分積のうち前記
乗数の下位半分の部分ビット列に対応するものの上位半
分のビットを前記第1の制御信号に従って“0”に置換
し、前記第2の部分加算手段に供給する部分積置換手段
と、 前記第1の部分加算手段からの桁上げ信号と“0”との
いずれかを前記第1の制御信号に従って選択し、前記第
2の部分加算手段に下位からの桁上げ信号として供給す
る桁上げ選択手段とを備えることを特徴とする乗算器。 - 【請求項2】前記第1の制御信号は、前記乗数の全ビッ
トと前記被乗数の全ビットとの積を求める高精度の乗
算、或いは前記乗数の上位半分のビットと前記被乗数の
上位半分のビットとの積及び前記乗数の下位半分のビッ
トと前記被乗数の下位半分のビットとの積を求める低精
度の乗算のいずれか一方を指示するものであり、 前記乗数置換手段は、前記第1の制御信号が低精度の乗
算を指示しているときに、上位の部分ビット列に含まれ
る前記乗数の下位半分のビットのうちの最上位ビットを
“0”に置換し、 前記第1の被乗数置換手段は、前記第1の制御信号が低
精度の乗算を指示しているときに、前記被乗数の下位半
分のビットを“0”に置換し、 前記第2の被乗数置換手段は、前記第1の制御信号が低
精度の乗算を指示しているときに、前記被乗数の上位半
分のビットを下位半分のビットのうちの最上位ビットの
値に置換し、 前記部分積置換手段は、前記第1の制御信号が低精度の
乗算を指示しているときに、前記部分積のうち前記乗数
の下位半分の部分ビット列に対応するものの上位半分の
ビットを“0”に置換し、 前記桁上げ選択手段は、前記第1の制御信号が高精度の
乗算を指示しているときに前記第1の部分加算手段から
の桁上げ信号を、前記第1の制御信号が低精度の乗算を
指示しているときに“0”をそれぞれ選択して前記第2
の部分加算手段に桁上げ信号として供給することを特徴
とする請求項1に記載の乗算器。 - 【請求項3】前記第1の部分積加算手段は、前記部分積
の桁毎の和と上位への桁上げとを算出する第1のウォリ
スの加算ツリーと、前記第1のウォリスの加算ツリーで
算出された桁毎の和と桁上げとを加算する第1の加算器
によって構成され、 前記第2の部分積加算手段は、前記部分積の各桁毎の和
と上位への桁上げとを算出する第2のウォリスの加算ツ
リーと、前記第2のウォリスの加算ツリーで算出された
桁毎の和と桁上げとを加算する第2の加算器によって構
成されることを特徴とする請求項1または2に記載の乗
算器。 - 【請求項4】前記複数の部分積生成手段は、それぞれ前
記乗数と前記被乗数とを符号付きとして扱うか符号無し
として扱うかを示す第2の制御信号が入力され、入力さ
れた第2の制御信号に従って対応する部分ビット列と前
記被乗数とを符号付きとして扱ったときの部分積と符号
無しとして扱ったときの部分積とのいずれかを生成する
手段を備えることを特徴とする請求項1乃至3のいずれ
か1項に記載の乗算器。 - 【請求項5】互いに同数のブロックに分けることが可能
な乗数と被乗数との全ビット同士での積、或いは対応す
るブロックのビット同士の積を求める乗算器であって、 乗数を複数の部分ビット列に分割する乗数分割手段と、 前記乗数分割手段が分割する部分ビット列に含まれる前
記乗数のブロック毎の最上位ビットを第1の制御信号に
従って“0”に置換する乗数置換手段と、 前記乗数分割手段が分割する部分ビット列のそれぞれに
対応して設けられ、各部分ビット列と被乗数との、前記
被乗数のビット数の2倍のビット数で表される部分積を
生成する複数の部分積生成手段と、 前記被乗数の下位からいずれかのブロックまでのビット
を前記第1の制御信号に従って“0”に置換し、前記複
数の部分積生成手段のうちの前記乗数の置換を行うブロ
ックまでに対応する部分ビット列に対応する部分積を生
成するものに供給する第1の被乗数置換手段と、 前記被乗数の上位からいずれかのブロックまでのビット
を前記第1の制御信号に従って該ブロックより1つ下位
のブロックのうちの最上位ビットの値に置換し、前記複
数の部分積生成手段のうちの前記乗数の置換を行うブロ
ックまでに対応する部分ビット列に対応する部分積を生
成するものに供給する第2の被乗数置換手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
積を、それぞれいずれかのブロックに対応するもの同士
で加算する複数の部分加算手段と、 前記複数の部分積生成手段がそれぞれ生成した部分積の
うち、対応するブロックよりも上位のビットを前記第1
の制御信号に従って“0”に置換し、対応する前記複数
の部分加算手段に供給する部分積置換手段と、 前記複数の部分加算手段のそれぞれからの桁上げ信号と
“0”とのいずれかを前記第1の制御信号に従って選択
し、それぞれ1つ上位の部分加算手段に下位からの桁上
げ信号として供給する複数の桁上げ選択手段とを備える
ことを特徴とする乗算器。 - 【請求項6】乗数の下位半分のビットのうちの最上位ビ
ットを第1の制御信号に従って“0”に置換する乗数置
換手段と、 前記乗数置換手段により下位半分のビットのうちの最上
位ビットが置換されたまたは置換されていない乗数を複
数の部分ビット列に分割する乗数分割手段と、 前記乗数分割手段が分割する部分ビット列のそれぞれに
対応して設けられ、各部分ビット列と被乗数との、前記
被乗数のビット数の2倍のビット数で表される部分積を
生成する複数の部分積生成手段と、 前記被乗数の下位半分のビットを前記第1の制御信号に
従って“0”に置換し、前記複数の部分積生成手段のう
ちの前記乗数の上位半分の部分ビット列に対応する部分
積を生成するものに供給する第1の被乗数置換手段と、 前記被乗数の上位半分のビットを前記第1の制御信号に
従って下位半分のビットのうちの最上位ビットの値に置
換し、前記複数の部分積生成手段のうちの前記乗数の下
位半分の部分ビット列に対応する部分積を生成するもの
に供給する第2の被乗数置換手段と、 前記乗数の下位半分の部分ビット列の積和に対応する、
過去に求めた積和を保持する第1の積和保持手段と、 前記乗数の上位半分の部分ビット列の積和に対応する、
過去に求めた積和を保持する第2の積和保持手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
積のうち前記乗数の下位半分の部分ビット列に対応する
部分積と、前記第1の積和保持手段に保持された過去の
積和とをそれぞれ加算して、積和を求める第1の積和演
算手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
積のうち前記乗数の上位半分の部分ビット列に対応する
部分積と、前記第2の積和保持手段に保持された過去の
積和とをそれぞれ加算して、積和を求める第2の積和演
算手段と、 前記複数の部分積生成手段が生成した部分積のうち前記
乗数の下位半分の部分ビット列に対応するものの上位半
分のビットを前記第1の制御信号に従って“0”に置換
し、前記第2の積和演算手段に供給する部分積置換手段
と、 前記第1の積和演算手段からの桁上げ信号と“0”との
いずれかを前記第1の制御信号に従って選択し、前記第
2の積和演算手段に下位からの桁上げ信号として供給す
る桁上げ選択手段とを備えることを特徴とする積和演算
器。 - 【請求項7】互いに同数のブロックに分けることが可能
な乗数と被乗数との全ビット同士での積、或いは対応す
るブロックのビット同士の積を求める積和演算器であっ
て、 乗数を複数の部分ビット列に分割する乗数分割手段と、 前記乗数分割手段が分割する部分ビット列に含まれる前
記乗数のブロック毎の最上位ビットを第1の制御信号に
従って“0”に置換する乗数置換手段と、 前記乗数分割手段が分割する部分ビット列のそれぞれに
対応して設けられ、各部分ビット列と被乗数との、前記
被乗数のビット数の2倍のビット数で表される部分積を
生成する複数の部分積生成手段と、 前記被乗数の下位からいずれかのブロックまでのビット
を前記第1の制御信号に従って“0”に置換し、前記複
数の部分積生成手段のうちの前記乗数の置換を行うブロ
ックまでに対応する部分ビット列に対応する部分積を生
成するものに供給する第1の被乗数置換手段と、 前記被乗数の上位からいずれかのブロックまでのビット
を前記第1の制御信号に従って該ブロックより1つ下位
のブロックのうちの最上位ビットの値に置換し、前記複
数の部分積生成手段のうちの前記乗数の置換を行うブロ
ックまでに対応する部分ビット列に対応する部分積を生
成するものに供給する第2の被乗数置換手段と、 それぞれいずれかのブロックに対応する過去に求めた積
和を保持する複数の積和保持手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
積と、前記複数の積和保持手段に保持された過去の積和
とをそれぞれいずれかのブロックに対応するもの同士で
加算して、積和を求める複数の積和演算手段と、 前記複数の部分積生成手段がそれぞれ生成した部分積の
うち、対応するブロックよりも上位のビットを前記第1
の制御信号に従って“0”に置換し、対応する前記複数
の部分積和演算手段に供給する部分積置換手段と、 前記複数の積和演算手段のそれぞれからの桁上げ信号と
“0”とのいずれかを前記第1の制御信号に従って選択
し、それぞれ1つ上位の積和演算手段に下位からの桁上
げ信号として供給する複数の桁上げ選択手段とを備える
ことを特徴とする積和演算器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10242754A JP3139466B2 (ja) | 1998-08-28 | 1998-08-28 | 乗算器及び積和演算器 |
US09/385,357 US6704762B1 (en) | 1998-08-28 | 1999-08-30 | Multiplier and arithmetic unit for calculating sum of product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10242754A JP3139466B2 (ja) | 1998-08-28 | 1998-08-28 | 乗算器及び積和演算器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000076046A JP2000076046A (ja) | 2000-03-14 |
JP3139466B2 true JP3139466B2 (ja) | 2001-02-26 |
Family
ID=17093778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10242754A Expired - Fee Related JP3139466B2 (ja) | 1998-08-28 | 1998-08-28 | 乗算器及び積和演算器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6704762B1 (ja) |
JP (1) | JP3139466B2 (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3779602B2 (ja) * | 2001-11-28 | 2006-05-31 | 松下電器産業株式会社 | Simd演算方法およびsimd演算装置 |
AU2003221680A1 (en) * | 2002-04-09 | 2003-10-27 | The Research Foundation Of State University Of New York | Multiplier-based processor-in-memory architectures for image and graphics processing |
US7506017B1 (en) * | 2004-05-25 | 2009-03-17 | Altera Corporation | Verifiable multimode multipliers |
US20060020655A1 (en) * | 2004-06-29 | 2006-01-26 | The Research Foundation Of State University Of New York | Library of low-cost low-power and high-performance multipliers |
US20060004903A1 (en) * | 2004-06-30 | 2006-01-05 | Itay Admon | CSA tree constellation |
CN100356315C (zh) * | 2004-09-02 | 2007-12-19 | 中国人民解放军国防科学技术大学 | 一种支持单指令多操作数的混合乘法器 |
US8234319B2 (en) * | 2005-05-25 | 2012-07-31 | Qualcomm Incorporated | System and method of performing two's complement operations in a digital signal processor |
US20070011222A1 (en) * | 2005-07-07 | 2007-01-11 | Dance Sherman M | Floating-point processor for processing single-precision numbers |
US7739324B1 (en) | 2006-03-22 | 2010-06-15 | Cadence Design Systems, Inc. | Timing driven synthesis of sum-of-product functional blocks |
US7519646B2 (en) * | 2006-10-26 | 2009-04-14 | Intel Corporation | Reconfigurable SIMD vector processing system |
US20080140753A1 (en) * | 2006-12-08 | 2008-06-12 | Vinodh Gopal | Multiplier |
US20130332707A1 (en) * | 2012-06-07 | 2013-12-12 | Intel Corporation | Speed up big-number multiplication using single instruction multiple data (simd) architectures |
US9355068B2 (en) | 2012-06-29 | 2016-05-31 | Intel Corporation | Vector multiplication with operand base system conversion and re-conversion |
US10095516B2 (en) | 2012-06-29 | 2018-10-09 | Intel Corporation | Vector multiplication with accumulation in large register space |
KR102338863B1 (ko) | 2015-09-09 | 2021-12-13 | 삼성전자주식회사 | 연산을 제어하기 위한 장치 및 방법 |
CN107291420B (zh) | 2017-06-27 | 2020-06-05 | 上海兆芯集成电路有限公司 | 整合算术及逻辑处理的装置 |
CN107315710B (zh) * | 2017-06-27 | 2020-09-11 | 上海兆芯集成电路有限公司 | 全精度及部分精度数值的计算方法及装置 |
JP6995629B2 (ja) * | 2018-01-05 | 2022-01-14 | 日本電信電話株式会社 | 演算回路 |
CN111966327A (zh) * | 2020-08-07 | 2020-11-20 | 南方科技大学 | 基于nas搜索的混合精度时空复用乘法器及其控制方法 |
US20240329932A1 (en) * | 2023-04-03 | 2024-10-03 | Arm Limited | Multiplication circuitry, apparatus, system, chip-containing product, method and computer-readable medium |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59149540A (ja) | 1983-02-15 | 1984-08-27 | Toshiba Corp | 分割型乗算器 |
JPS62229440A (ja) * | 1986-03-31 | 1987-10-08 | Toshiba Corp | 配列乗算器 |
US5189636A (en) * | 1987-11-16 | 1993-02-23 | Intel Corporation | Dual mode combining circuitry |
JPH04142619A (ja) | 1990-10-04 | 1992-05-15 | Nec Corp | 乗算器 |
JP3637073B2 (ja) | 1993-10-21 | 2005-04-06 | 株式会社東芝 | 倍精度・単精度・内積演算および複素乗算が可能な乗算器 |
US5446651A (en) * | 1993-11-30 | 1995-08-29 | Texas Instruments Incorporated | Split multiply operation |
JPH07234778A (ja) | 1994-02-22 | 1995-09-05 | Texas Instr Japan Ltd | 演算回路 |
US5586070A (en) * | 1994-08-03 | 1996-12-17 | Chromatic Research, Inc. | Structure and method for embedding two small multipliers in a larger multiplier |
JPH08292876A (ja) | 1995-04-24 | 1996-11-05 | Matsushita Electric Ind Co Ltd | 演算装置 |
US5751622A (en) * | 1995-10-10 | 1998-05-12 | Chromatic Research, Inc. | Structure and method for signed multiplication using large multiplier having two embedded signed multipliers |
US5880985A (en) * | 1996-10-18 | 1999-03-09 | Intel Corporation | Efficient combined array for 2n bit n bit multiplications |
JP3479438B2 (ja) * | 1997-09-18 | 2003-12-15 | 株式会社東芝 | 乗算回路 |
US6249799B1 (en) * | 1998-06-19 | 2001-06-19 | Ati International Srl | Selective carry boundary |
-
1998
- 1998-08-28 JP JP10242754A patent/JP3139466B2/ja not_active Expired - Fee Related
-
1999
- 1999-08-30 US US09/385,357 patent/US6704762B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6704762B1 (en) | 2004-03-09 |
JP2000076046A (ja) | 2000-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3139466B2 (ja) | 乗算器及び積和演算器 | |
US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
US5790446A (en) | Floating point multiplier with reduced critical paths using delay matching techniques | |
US7395304B2 (en) | Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic | |
JPH05233228A (ja) | 浮動小数点演算装置およびその演算方法 | |
US6754689B2 (en) | Method and apparatus for performing subtraction in redundant form arithmetic | |
JP3516503B2 (ja) | 電子乗算および加算装置および方法 | |
JP3276444B2 (ja) | 除算回路 | |
Yan et al. | An energy-efficient multiplier with fully overlapped partial products reduction and final addition | |
JP2006228190A (ja) | 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法 | |
US5721697A (en) | Performing tree additions via multiplication | |
JP2006172035A (ja) | 除算・開平演算器 | |
US20040010536A1 (en) | Apparatus for multiplication of data in two's complement and unsigned magnitude formats | |
Rafiq et al. | Design of an improved low-power and high-speed booth multiplier | |
JPH09231055A (ja) | 論理演算回路及びキャリールックアヘッド加算器 | |
Manca et al. | Accelerating quantized dnn layers on risc-v with a star mac unit | |
JPH05173761A (ja) | 2進整数乗算器 | |
JP3222313B2 (ja) | 演算装置及び演算方法 | |
Singh et al. | Energy Efficient Vedic Multiplier | |
CN118170344B (zh) | 一种处理器多功能定点除法计算装置及方法 | |
Darsana et al. | Implementation and Analysis of Single Digit BCD Multipliers Without Generating Partial Products | |
Louwers et al. | Multi-granular arithmetic in a coarse-grain reconfigurable architecture | |
Tyagi et al. | A novel hardware efficient reconfigurable 32-bit arithmetic unit for binary, BCD and floating point operands | |
JP2777265B2 (ja) | 高基数開平演算装置 | |
JP3413940B2 (ja) | 演算回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20001114 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071215 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081215 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091215 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091215 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101215 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101215 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111215 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111215 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121215 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121215 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131215 Year of fee payment: 13 |
|
LAPS | Cancellation because of no payment of annual fees |