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
Application number
JP10242754A
Other languages
English (en)
Other versions
JP2000076046A (ja
Inventor
俊明 井上
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 Corp
Original Assignee
NEC 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 Corp filed Critical NEC Corp
Priority to JP10242754A priority Critical patent/JP3139466B2/ja
Priority to US09/385,357 priority patent/US6704762B1/en
Publication of JP2000076046A publication Critical patent/JP2000076046A/ja
Application granted granted Critical
Publication of JP3139466B2 publication Critical patent/JP3139466B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction 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/5336Reduction 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/5338Reduction 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

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサに用い
るのに好適な乗算器及び積和演算器に関するものであ
る。
【0002】
【従来の技術】近年の汎用プロセッサでは、ハードウエ
アで乗算を高速に実行する方法として、Boothのアルゴ
リズムによる部分積生成とキャリーセーブ方式による部
分積加算が広く用いられている。また、ローコストの計
算機システム向けの汎用プロセッサでは、近年、32ビ
ットあるいは64ビットの高精度乗算に加え、画像処理
等の信号処理で中心的に用いられる16ビット程度の低
精度乗算を行う比率が増大している。
【0003】即ち、従来はDSP(Digital Signal Pro
cessor)等の専用プロセッサを用いて行っていた信号処
理を、計算機システムの部品点数を削減するために、汎
用プロセッサで行う必要性が増している。このことは、
汎用プロセッサが実装する乗算機能として16ビット等
の低精度乗算もサポートする必要性があることを意味し
ている。特に、画像処理等の信号処理では扱うデータ量
が膨大であるため、整数乗算に比べて低精度乗算の性能
を大きく改善する必要がある。
【0004】低精度乗算の性能を向上する乗算器の第1
の例を、図8に示す。この乗算器は、2個の16ビット
精度の乗算器801a、801b、1個の64ビット加
算器802、1個の64ビットレジスタ803、乗算器
801a、801bへの入力セレクタ804a、804
b、及び加算器804への入力セレクタ805で構成さ
れている。
【0005】この乗算器の入力データとして上位16ビ
ット(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の出力として並列に得られる。
【0006】一方、(A×B)の乗算を32ビット精度で実
行する場合、まず、入力セレクタ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)を得る。
【0007】この乗算器によれば、2個の16ビット乗
算を並列に実行でき、低精度乗算時の性能を改善するこ
とができると共に、32ビット精度の高精度乗算も実行
することが可能となる。
【0008】また、従来の乗算器の第2の例を、図9に
示す。この乗算器は、32ビットの乗算器901と、2
個の16ビットの乗算器902a、902bを備えてい
る。この構成により、16ビット精度の並列乗算での低
精度乗算時の性能を補償することが可能になるととも
に、32ビット精度の高精度乗算も高速に実行すること
が可能になる。
【0009】また、Boothのアルゴリズムを修正するこ
とにより、上記第1、および第2の例の乗算器と比較し
てハードウエア量を削減した第3の乗算器の例が、特開
平7−121354号公報に開示されている。この乗算
器では、高精度乗算器を用いて複数の低精度データの内
積演算や複素数乗算を行うことができる。例えば、この
第3の例の乗算器によれば、第1の例の乗算器のところ
で説明した(a1×a2+b1×b2)なる演算を一度に実行する
ことが可能となる。
【0010】
【発明が解決しようとする課題】しかしながら、上記従
来例には、次のような問題点があった。まず、上記第1
の例の乗算器には、低精度乗算の性能を改善できるが、
高精度乗算の性能(特に演算時間)が劣化するという問
題があった。また、上記第2の例の乗算器では、低精度
と高精度の両方の乗算を高性能で実行することができる
が、ハードウエア量が大きくなってしまうという問題点
があった。また、上記第3の例の乗算器では、ハードウ
エア量を増大させずに低精度の乗算と高精度の乗算との
双方の性能を改善できるが、実行可能な演算が内積演算
や複素数乗算等に限られており、最終段階で複数の乗算
結果を加算しなければならないという問題点があった。
【0011】本発明は、上記従来例の問題点を解消する
ためになされたものであり、高精度乗算を高速に実行す
るとともに、複数の低精度乗算或いは積和演算を独立か
つ並列に行うことができる乗算器及び積和演算器を提供
することを目的とする。
【0012】
【課題を解決するための手段】上記目的を達成するた
め、本発明の第1の観点にかかる乗算器は、乗数を複数
の部分ビット列に分割する乗数分割手段と、前記乗数分
割手段が分割する部分ビット列に含まれる前記乗数の下
位半分のビットのうちの最上位ビットを第1の制御信号
に従って“0”に置換する乗数置換手段と、前記乗数分
割手段が分割する部分ビット列のそれぞれに対応して設
けられ、各部分ビット列と被乗数との、前記被乗数のビ
ット数の2倍のビット数で表される部分積を生成する複
数の部分積生成手段と、前記被乗数の下位半分のビット
を前記第1の制御信号に従って“0”に置換し、前記複
数の部分積生成手段のうちの前記乗数の上位半分の部分
ビット列に対応する部分積を生成するものに供給する第
1の被乗数置換手段と、前記被乗数の上位半分のビット
を前記第1の制御信号に従って下位半分のビットのうち
の最上位ビットの値に置換し、前記複数の部分積生成手
段のうちの前記乗数の下位半分の部分ビット列に対応す
る部分積を生成するものに供給する第2の被乗数置換手
段と、前記複数の部分積生成手段のそれぞれで生成され
た部分積のうち前記乗数の下位半分の部分ビット列に対
応する部分積を加算する第1の部分加算手段と、前記複
数の部分積生成手段のそれぞれで生成された部分積のう
ち前記乗数の上位半分の部分ビット列に対応する部分積
を加算する第2の部分加算手段と、前記複数の部分積生
成手段が生成した部分積のうち前記乗数の下位半分の部
分ビット列に対応するものの上位半分のビットを前記第
1の制御信号に従って“0”に置換し、前記第2の部分
加算手段に供給する部分積置換手段と、前記第1の部分
加算手段からの桁上げ信号と“0”とのいずれかを前記
第1の制御信号に従って選択し、前記第2の部分加算手
段に下位からの桁上げ信号として供給する桁上げ選択手
段とを備えることを特徴とする。
【0013】上記乗算器において、前記第1の制御信号
は、前記乗数の全ビットと前記被乗数の全ビットとの積
を求める高精度の乗算、或いは前記乗数の上位半分のビ
ットと前記被乗数の上位半分のビットとの積及び前記乗
数の下位半分のビットと前記被乗数の下位半分のビット
との積を求める低精度の乗算のいずれか一方を指示する
ものとすることができる。この場合、前記乗数置換手段
は、前記第1の制御信号が低精度の乗算を指示している
ときに、上位の部分ビット列に含まれる前記乗数の下位
半分のビットのうちの最上位ビットを“0”に置換する
ものとすることができ、前記第1の被乗数置換手段は、
前記第1の制御信号が低精度の乗算を指示しているとき
に、前記被乗数の下位半分のビットを“0”に置換し、
前記第2の被乗数置換手段は、前記第1の制御信号が低
精度の乗算を指示しているときに、前記被乗数の上位半
分のビットを下位半分のビットのうちの最上位ビットの
値に置換するものとすることができ、前記部分積置換手
段は、前記第1の制御信号が低精度の乗算を指示してい
るときに、前記部分積のうち前記乗数の下位半分の部分
ビット列に対応するものの上位半分のビットを“0”に
置換するものとすることができ、前記桁上げ選択手段
は、前記第1の制御信号が高精度の乗算を指示している
ときに前記第1の部分加算手段からの桁上げ信号を、前
記第1の制御信号が低精度の乗算を指示しているときに
“0”をそれぞれ選択して前記第2の部分加算手段に桁
上げ信号として供給するものとすることができる。
【0014】上記乗算器では、制御信号を高精度の乗算
を指示するものとすれば、上記第2、第1の部分加算手
段による加算結果を並べたものが乗数の全ビットと被乗
数の全ビットとの積となる。一方、制御信号を低精度の
乗算を指示するものとすれば、第2の部分加算手段の出
力が乗数の上位半分のビットと被乗数の上位半分のビッ
トとの積となり、第1の部分加算手段の出力が乗数の下
位半分のビットと被乗数の下位半分のビットとの積とな
る。
【0015】このため、高精度の乗算と、2つの積を同
時に求める低精度の乗算とを同一のハードウェアで実行
することが可能となる。しかも、高精度の乗算、複数の
低精度の乗算を行う場合とも、中間結果の蓄積等を行う
必要がなく、高速に演算結果を得ることができる。
【0016】上記乗算器において、例えば、前記第1の
部分積加算手段は、前記部分積の桁毎の和と上位への桁
上げとを算出する第1のウォリスの加算ツリーと、前記
第1のウォリスの加算ツリーで算出された桁毎の和と桁
上げとを加算する第1の加算器によって構成されたもの
とすることができ、前記第2の部分積加算手段は、前記
部分積の各桁毎の和と上位への桁上げとを算出する第2
のウォリスの加算ツリーと、前記第2のウォリスの加算
ツリーで算出された桁毎の和と桁上げとを加算する第2
の加算器によって構成されたものとすることができる。
【0017】上記乗算器において、前記複数の部分積生
成手段は、それぞれ前記乗数と前記被乗数とを符号付き
として扱うか符号無しとして扱うかを示す第2の制御信
号が入力され、入力された第2の制御信号に従って対応
する部分ビット列と前記被乗数とを符号付きとして扱っ
たときの部分積と符号無しとして扱ったときの部分積と
のいずれかを生成する手段を備えるものとすることがで
きる。
【0018】上記目的を達成するため、本発明の第2の
観点にかかる乗算器は、互いに同数のブロックに分ける
ことが可能な乗数と被乗数との全ビット同士での積、或
いは対応するブロックのビット同士の積を求める乗算器
であって、乗数を複数の部分ビット列に分割する乗数分
割手段と、前記乗数分割手段が分割する部分ビット列に
含まれる前記乗数のブロック毎の最上位ビットを第1の
制御信号に従って“0”に置換する乗数置換手段と、前
記乗数分割手段が分割する部分ビット列のそれぞれに対
応して設けられ、各部分ビット列と被乗数との、前記被
乗数のビット数の2倍のビット数で表される部分積を生
成する複数の部分積生成手段と、前記被乗数の下位から
いずれかのブロックまでのビットを前記第1の制御信号
に従って“0”に置換し、前記複数の部分積生成手段の
うちの前記乗数の置換を行うブロックまでに対応する部
分ビット列に対応する部分積を生成するものに供給する
第1の被乗数置換手段と、前記被乗数の上位からいずれ
かのブロックまでのビットを前記第1の制御信号に従っ
て該ブロックより1つ下位のブロックのうちの最上位ビ
ットの値に置換し、前記複数の部分積生成手段のうちの
前記乗数の置換を行うブロックまでに対応する部分ビッ
ト列に対応する部分積を生成するものに供給する第2の
被乗数置換手段と、前記複数の部分積生成手段のそれぞ
れで生成された部分積を、それぞれいずれかのブロック
に対応するもの同士で加算する複数の部分加算手段と、
前記複数の部分積生成手段がそれぞれ生成した部分積の
うち、対応するブロックよりも上位のビットを前記第1
の制御信号に従って“0”に置換し、対応する前記複数
の部分加算手段に供給する部分積置換手段と、前記複数
の部分加算手段のそれぞれからの桁上げ信号と“0”と
のいずれかを前記第1の制御信号に従って選択し、それ
ぞれ1つ上位の部分加算手段に下位からの桁上げ信号と
して供給する複数の桁上げ選択手段とを備えることを特
徴とする。
【0019】上記目的を達成するため、本発明の第3の
観点にかかる積和演算器は、乗数の下位半分のビットの
うちの最上位ビットを第1の制御信号に従って“0”に
置換する乗数置換手段と、前記乗数置換手段により下位
半分のビットのうちの最上位ビットが置換されたまたは
置換されていない乗数を複数の部分ビット列に分割する
乗数分割手段と、前記乗数分割手段が分割する部分ビッ
ト列のそれぞれに対応して設けられ、各部分ビット列と
被乗数との、前記被乗数のビット数の2倍のビット数で
表される部分積を生成する複数の部分積生成手段と、前
記被乗数の下位半分のビットを前記第1の制御信号に従
って“0”に置換し、前記複数の部分積生成手段のうち
の前記乗数の上位半分の部分ビット列に対応する部分積
を生成するものに供給する第1の被乗数置換手段と、前
記被乗数の上位半分のビットを前記第1の制御信号に従
って下位半分のビットのうちの最上位ビットの値に置換
し、前記複数の部分積生成手段のうちの前記乗数の下位
半分の部分ビット列に対応する部分積を生成するものに
供給する第2の被乗数置換手段と、前記乗数の下位半分
の部分ビット列の積和に対応する、過去に求めた積和を
保持する第1の積和保持手段と、前記乗数の上位半分の
部分ビット列の積和に対応する、過去に求めた積和を保
持する第2の積和保持手段と、前記複数の部分積生成手
段のそれぞれで生成された部分積のうち前記乗数の下位
半分の部分ビット列に対応する部分積と、前記第1の積
和保持手段に保持された過去の積和とをそれぞれ加算し
て、積和を求める第1の積和演算手段と、前記複数の部
分積生成手段のそれぞれで生成された部分積のうち前記
乗数の上位半分の部分ビット列に対応する部分積と、前
記第2の積和保持手段に保持された過去の積和とをそれ
ぞれ加算して、積和を求める第2の積和演算手段と、前
記複数の部分積生成手段が生成した部分積のうち前記乗
数の下位半分の部分ビット列に対応するものの上位半分
のビットを前記第1の制御信号に従って“0”に置換
し、前記第2の積和演算手段に供給する部分積置換手段
と、前記第1の積和演算手段からの桁上げ信号と“0”
とのいずれかを前記第1の制御信号に従って選択し、前
記第2の積和演算手段に下位からの桁上げ信号として供
給する桁上げ選択手段とを備えることを特徴とする。
【0020】上記乗算器では、制御信号を制御すること
で、上記第2、第1の積和演算手段による加算結果を並
べたものを乗数の全ビットと被乗数の全ビットとの積の
積和とすることができる。また、制御信号の制御によっ
て、第2の積和手段の出力を乗数の上位半分のビットと
被乗数の上位半分のビットとの積の積和とし、第1の部
分加算手段の出力を乗数の下位半分のビットと被乗数の
下位半分のビットとの積の積和とすることもできる。
【0021】このため、高精度の積和演算と、2つの積
和を同時に求める低精度の積和演算とを同一のハードウ
ェアで実行することが可能となる。しかも、高精度の乗
算、複数の低精度の乗算を行う場合とも、中間結果の蓄
積等を行う必要がなく、高速に演算結果を得ることがで
きる。
【0022】上記目的を達成するため、本発明の第4の
観点にかかる積和演算器は、互いに同数のブロックに分
けることが可能な乗数と被乗数との全ビット同士での
積、或いは対応するブロックのビット同士の積を求める
積和演算器であって、乗数を複数の部分ビット列に分割
する乗数分割手段と、前記乗数分割手段が分割する部分
ビット列に含まれる前記乗数のブロック毎の最上位ビッ
トを第1の制御信号に従って“0”に置換する乗数置換
手段と、前記乗数分割手段が分割する部分ビット列のそ
れぞれに対応して設けられ、各部分ビット列と被乗数と
の、前記被乗数のビット数の2倍のビット数で表される
部分積を生成する複数の部分積生成手段と、前記被乗数
の下位からいずれかのブロックまでのビットを前記第1
の制御信号に従って“0”に置換し、前記複数の部分積
生成手段のうちの前記乗数の置換を行うブロックまでに
対応する部分ビット列に対応する部分積を生成するもの
に供給する第1の被乗数置換手段と、前記被乗数の上位
からいずれかのブロックまでのビットを前記第1の制御
信号に従って該ブロックより1つ下位のブロックのうち
の最上位ビットの値に置換し、前記複数の部分積生成手
段のうちの前記乗数の置換を行うブロックまでに対応す
る部分ビット列に対応する部分積を生成するものに供給
する第2の被乗数置換手段と、それぞれいずれかのブロ
ックに対応する過去に求めた積和を保持する複数の積和
保持手段と、前記複数の部分積生成手段のそれぞれで生
成された部分積と、前記複数の積和保持手段に保持され
た過去の積和とをそれぞれいずれかのブロックに対応す
るもの同士で加算して、積和を求める複数の積和演算手
と、前記複数の部分積生成手段がそれぞれ生成した部
分積のうち、対応するブロックよりも上位のビットを前
記第1の制御信号に従って“0”に置換し、対応する前
記複数の部分積和演算手段に供給する部分積置換手段
と、前記複数の積和演算手段のそれぞれからの桁上げ信
号と“0”とのいずれかを前記第1の制御信号に従って
選択し、それぞれ1つ上位の積和演算手段に下位からの
桁上げ信号として供給する複数の桁上げ選択手段とを備
えることを特徴とする。
【0023】
【発明の実施の形態】次に、図面を用いて本発明につい
て詳細に説明する。
【0024】[第1の実施の形態]図1は、この実施の
形態にかかる符号付き乗算器の構成を示すブロック図で
ある。この乗算器は、8ビット精度または2個の4ビッ
ト精度の符号付き乗算を行うものである。
【0025】図示するように、この実施の形態にかかる
符号付き乗算器は、Boothデコーダ100と、部分積生
成部101〜104と、Wallace加算ツリー105、1
06と、2入力桁上げ加算器107、108と、セレク
タ110、111、112とから構成されている。
【0026】Boothデコーダ100は、8ビット精度の
乗算を行う場合、セレクタ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に供給する。
【0027】部分積生成部101〜104は、それぞれ
Boothデコーダ100から供給された乗数Yのビット列
と被乗数Xとの部分積を16ビットのデータとして求
め、それぞれ上位8ビットをWallace加算ツリー105
へ、下位8ビットをWallace加算ツリー106へ供給す
る。部分積生成部101〜104の詳細については、さ
らに後述する。
【0028】Wallace加算ツリー106は、部分積生成
部101〜104で求められた部分積の下位8ビットを
加算し、各桁の和と桁上げ信号とを求め、2入力桁上げ
加算器108に供給する。Wallace加算ツリー106の
桁上げ信号は、セレクタ111に供給される。
【0029】Wallace加算ツリー105は、部分積生成
部101〜104で求められた部分積の上位8ビットを
加算し、各桁の和と桁上げ信号とを求め、2入力桁上げ
加算器107に供給する。Wallace加算ツリー105
は、各桁の和と桁上げ信号とを求めるときに、下位から
の桁上げを考慮して行う。Wallace加算ツリー105、
106の詳細については、さらに後述する。
【0030】2入力桁上げ加算器107、108は、そ
れぞれWallace加算ツリー105、106によって求め
られた各桁の和と桁上げ信号とを加算する。2入力桁上
げ加算器107には、下位からの桁上げ信号も入力され
る。2入力桁上げ加算器107、108の詳細について
は、さらに後述する。
【0031】セレクタ110は、制御信号SIMDに従
って、乗数YのY3ビットの値と“0”とのいずれかを
選択し、Boothデコーダ100に供給する。すなわち、
セレクタ100は、制御信号SIMDが8ビット精度の
演算を示すときは、Boothデコーダ100から(Y3,Y4,Y
5)が部分ビット列として出力されるように、4ビット精
度の演算を示すときは、Boothデコーダ100から(0,Y
4,Y5)が部分ビット列として出力されるように、その出
力を制御する。
【0032】セレクタ111は、制御信号SIMDに従
って、Wallace加算ツリー106の上位2桁の桁上げ信
号と“0”とのいずれかを選択し、Wallace加算ツリー
105に下位からの桁上げ信号として供給する。セレク
タ111の詳細については、さらに後述する。セレクタ
112は、制御信号SIMDに従って、2入力桁上げ加
算器108の最上位桁の桁上げ信号と“0”とのいずれ
かを選択し、2入力桁上げ加算器107に下位からの桁
上げ信号として供給する。
【0033】図2は、部分積生成部101〜104を詳
細に示す図である。図示するように、部分積生成部10
1〜104は、それぞれ部分積生成回路201〜204
と、インバータ群205〜208と、セレクタ群209
〜212とから構成されている。
【0034】部分積生成回路201は、セレクタ201
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から
供給される部分ビット列の値に従ってシフトする。
【0035】部分積生成回路202〜204は、それぞ
れ部分積生成回路201と同一に構成されている。但
し、それぞれのセレクタは、対応する乗数Yの部分ビッ
ト列に応じてシフトを行った後、2ビット、4ビット、
6ビットの左シフト(以下、この左シフトを再シフトと
いう)を行い、そこに“0”を挿入する。
【0036】インバータ群205〜208は、それぞれ
部分積生成回路201〜204からの出力信号(但し、
再シフトによって挿入されたものを除く)のそれぞれを
反転し、セレクタ群209〜210に供給する。
【0037】セレクタ群209は、部分積生成回路20
1の出力信号が正であるか負であるかに従って、それぞ
れ部分積生成回路201の出力信号とインバータ群20
5の出力信号とのいずれかを選択して出力し、さらに上
位8ビットについては、制御信号SIMDに従って、そ
れぞれ部分積生成回路201の出力信号とインバータ群
205の出力信号と“0”とのいずれかとを選択して出
力する。
【0038】セレクタ群209は、部分積生成回路20
2の出力信号が正であるか負であるかに従って、それぞ
れ部分積生成回路202の出力信号の上位14ビットと
インバータ群206の出力信号とのいずれかを選択して
出力し、さらに上位8ビットについては、制御信号SI
MDに従って、それぞれ部分積生成回路202の出力信
号とインバータ群206の出力信号と“0”とのいずれ
かとを選択して出力する。
【0039】セレクタ群211は、部分積生成回路20
3の出力信号(4ビット精度の乗算ではその上位8ビッ
ト)が正であるか負であるか、及び制御信号SIMDに
従って、それぞれ部分積生成回路203の出力信号の上
位12ビットとインバータ群207の出力信号とのいず
れかを選択して出力する。
【0040】セレクタ群212は、部分積生成回路20
4の出力信号(4ビット精度の乗算ではその上位8ビッ
ト)が正であるか負であるか、及び制御信号SIMDに
従って、それぞれ部分積生成回路203の出力信号の上
位10ビットとインバータ群207の出力信号とのいず
れかを選択して出力する。
【0041】部分積生成回路201〜204、インバー
タ群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”である。
【0042】図3(a)、(b)は、それぞれWallace
加算ツリー106、105の詳細を示す図である。図示
するように、Wallace加算ツリー106は、セレクタ1
06a、106bと、24個の全加算器で構成される全
加算器群300とから構成される。
【0043】セレクタ106a、106bは、制御信号
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”とする。
【0044】また、上記のセレクタ111は、実際に
は、2つのセレクタ111a、111bから構成され、
セレクタ111aは、制御信号SIMDに従って、全加
算器群300の図の最上段左端の全加算器の桁上げ信号
と“0”とのいずれかを選択し、桁上げ信号C7aとしてW
allace加算ツリー105へ供給する。セレクタ111b
は、制御信号SIMDに従って、全加算器群300の図
の中段左端の全加算器の桁上げ信号と“0”とのいずれ
かを選択し、桁上げ信号C7bとしてWallace加算ツリー1
05へ供給する。
【0045】また、Wallace加算ツリー105は、セレ
クタ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)を求める。
【0046】図3(c)は、2入力桁上げ加算器10
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)を出力する。
【0047】以下、この実施の形態にかかる乗算器の動
作について、説明する。この実施の形態の乗算器では、
(1)8ビット精度の乗算を行う場合、(2)4ビット
精度の乗算を行う場合、の2つの場合がある。以下、そ
れぞれの場合に分けて、この実施の形態にかかる乗算器
の動作を説明する。
【0048】(1)8ビット精度の乗算を行う場合 この場合、制御信号SIMDに従って、セレクタ110
は、乗数YのY3ビットを出力する。これにより、Boot
hデコーダ100は、乗数Yを(0,Y0,Y1)、(Y1,Y2,Y3)、
(Y3,Y4,Y5)、(Y5,Y6,Y7)の部分ビット列に分解し、それ
ぞれ部分積生成部101〜104に供給する。
【0049】また、部分積生成部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)となる。
【0050】次に、シフト回路201cは、Boothデコ
ーダ100から供給された部分ビット列に従って入力信
号をビットシフトして、さらに部分積生成回路202〜
204に対応するものではそれぞれ2、4、6ビット左
にビットシフトして、部分積生成回路201〜204に
よる乗数Yの部分ビット列と被乗数Xとの部分積として
出力する。これらは、インバータ群205〜208によ
って反転して出力され、部分積生成回路201〜204
の出力信号とインバータ群205〜208の出力信号と
が、セレクタ群209〜212によって次のようにして
選択して出力される。
【0051】まず、セレクタ群209は、部分積生成回
路201から出力された部分積の符号が正であれば、部
分積生成回路201の出力信号をすべて選択し、部分積
生成部101の出力信号(Pf0..P00)として出力する。一
方、符号が負であれば、インバータ群205の出力信号
をすべて選択し、部分積生成部101の出力信号(Pf0..
P00)として出力する。
【0052】セレクタ群210は、部分積生成回路20
2から出力された部分積の符号が正であれば、部分積生
成回路202の出力信号の上位14ビットをすべて選択
し、部分積生成部102の出力信号の上位14ビット(P
f1..P21)として出力する。一方、符号が負であれば、イ
ンバータ群206の出力信号をすべて選択し、部分積生
成部102の出力信号の上位14ビット(Pf1..P21)とし
て出力する。部分積生成部102の出力信号の下位2ビ
ット(P11,P01)は、部分積の符号に関わらず、いずれも
“0”である。
【0053】セレクタ群211は、部分積生成回路20
3から出力された部分積の符号が正であれば、部分積生
成回路203の出力信号の上位12ビットをすべて選択
し、部分積生成部103の出力信号の上位12ビット(P
f2..P42)として出力する。一方、符号が負であれば、イ
ンバータ群207の出力信号をすべて選択し、部分積生
成部103の出力信号の上位12ビット(Pf2..P42)とし
て出力する。部分積生成部103の出力信号の下位4ビ
ット(P32,P02)は、部分積の符号に関わらず、いずれも
“0”である。
【0054】セレクタ群212は、部分積生成回路20
4から出力された部分積の符号が正であれば、部分積生
成回路204の出力信号の上位10ビットをすべて選択
し、部分積生成部104の出力信号の上位10ビット(P
f3..P63)として出力する。一方、符号が負であれば、イ
ンバータ群208の出力信号をすべて選択し、部分積生
成部104の出力信号の上位10ビット(Pf3..P63)とし
て出力する。部分積生成部104の出力信号の下位6ビ
ット(P53,P03)は、部分積の符号に関わらず、いずれも
“0”である。
【0055】部分積生成部101〜104のそれぞれか
ら出力された部分積は、それぞれの下位8ビットがWall
ace加算ツリー106に供給され、上位8ビットがWalla
ce加算ツリー105に供給される。このとき、Wallace
加算ツリー105、106内のセレクタ105a、10
6aは、N3を選択して出力し、セレクタ105b、1
06bは、N2を選択して出力する。
【0056】Wallace加算ツリー106は、部分積生成
部101〜104のそれぞれで生成された部分積の下位
8ビットの各桁をキャリーセーブ方式で加算し、桁毎の
和信号(S7..S0)と上位桁への桁上げ信号(C7..C0)を生成
する。生成された桁毎の和信号(S7..S0)と上位桁への桁
上げ信号(C6..C0)は、2入力桁上げ加算器108へ供給
される。また、Wallace加算ツリー106で生成された
中間結果の桁上げ信号(C7a,C7b)は、それぞれセレクタ
111a、111bによって選択され、Wallace加算ツ
リー105に供給される。
【0057】Wallace加算ツリー105は、Wallace加算
ツリー106からの桁上げ信号(C7a,C7b)を考慮して、
部分積生成部101〜104のそれぞれで生成された部
分積の上位8ビットの各桁をキャリーセーブ方式で加算
し、桁毎の和信号(Sf..S8)と上位桁への桁上げ信号(C
f..C8)を生成する。生成された桁毎の和信号(Sf..S8)と
上位桁への桁上げ信号(Ce..C8)は、2入力桁上げ加算器
107へ供給される。
【0058】次に、2入力桁上げ加算器108は、Wall
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)を得る。
【0059】(2)4ビット精度の乗算を行う場合 この場合、被乗数の部分ビット列(X7..X4)、(X3..X0)、
乗数の部分ビット列(Y7..Y4)、(Y3..Y0)をそれぞれ独立
したデータとみなし、以下のようにして(X7..X4)と(Y
7..Y4)の乗算、および(X7..X4)と(Y3..Y0)の乗算を並列
に行う。
【0060】まず、制御信号SIMDに従って、セレク
タ110は、“0”を出力する。これにより、Boothデ
コーダ100は、乗数Yを(0,Y0,Y1)、(Y1,Y2,Y3)、(0,
Y4,Y5)、(Y5,Y6,Y7)の部分ビット列に分解し、それぞれ
部分積生成部101〜104に供給する。
【0061】また、部分積生成部101、102の部分
積生成回路201、202において、セレクタ201a
(部分積生成回路202の対応するものを含む。次々段
落まで同じ)は被乗数Xの下位0〜3ビット(X3..X0)を
選択して出力し、セレクタ201bは被乗数XのX3ビ
ットを選択して出力し、シフト回路201cの下位8ビ
ットの入力とする。また、シフト回路201cの上位8
ビットの入力は、(X3,X3,X3,X3,X3,X3,X3,X3)となる。
【0062】次に、シフト回路201cは、Boothデコ
ーダ100から供給された部分ビット列に従って入力信
号をビットシフトして、さらに部分積生成回路202に
対応するものでは2ビット左にビットシフトして、部分
積生成回路201、202による乗数Yの部分ビット列
と被乗数Xとの部分積として出力する。これらは、イン
バータ群205、206によって反転して出力され、部
分積生成回路201、202の出力信号とインバータ群
205、206の出力信号とが、セレクタ群209、2
10によって次のようにして選択して出力される。
【0063】セレクタ群209は、上位8ビットについ
ては“0”を選択し、部分積生成部101の出力信号の
上位8ビット(Pf0..P80)として出力する。下位8ビット
については、部分積生成回路201から出力された部分
積の符号が正であれば、部分積生成回路201の出力信
号を選択し、部分積生成部101の出力信号の下位8ビ
ット(P70..P00)として出力する。一方、符号が負であれ
ば、インバータ群205の出力信号を選択し、部分積生
成部101の出力信号の下位8ビット(P70..P00)として
出力する。
【0064】セレクタ群210は、上位8ビットについ
ては“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”である。
【0065】一方、部分積生成部103、104の部分
積生成回路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)となる。
【0066】次に、シフト回路201cは、Boothデコ
ーダ100から供給された部分ビット列に従って入力信
号をビットシフトして、さらに部分積生成回路203、
204に対応するものでそれぞれ4、6ビット左にビッ
トシフトして、部分積生成回路203、204による乗
数Yの部分ビット列と被乗数Xとの部分積として出力す
る。これらは、インバータ群207、208によって反
転して出力され、部分積生成回路203、204の出力
信号とインバータ群207、208の出力信号とが、セ
レクタ群211、212によって次のようにして選択し
て出力される。
【0067】セレクタ群211は、上位8ビットについ
ては、部分積生成回路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”である。
【0068】セレクタ群212は、上位8ビットについ
ては、部分積生成回路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”である。
【0069】部分積生成部101〜104のそれぞれか
ら出力された部分積は、それぞれの下位8ビットがWall
ace加算ツリー106に供給され、上位8ビットがWalla
ce加算ツリー105に供給される。このとき、Wallace
加算ツリー105、106内のセレクタ105a、10
6aは、“0”を選択して出力し、セレクタ105b、
106bは、“0”を選択して出力する。
【0070】Wallace加算ツリー106は、部分積生成
部101〜104のそれぞれで生成された部分積の下位
8ビットの各桁をキャリーセーブ方式で加算し、桁毎の
和信号(S7..S0)と上位桁への桁上げ信号(C7..C0)を生成
する。生成された桁毎の和信号(S7..S0)と上位桁への桁
上げ信号(C6..C0)は、2入力桁上げ加算器108へ供給
される。Wallace加算ツリー106で生成された桁上げ
信号(C7a,C7b)は、それぞれセレクタ111a、111
bによって選択されず、Wallace加算ツリー105には
それぞれ“0”が供給される。
【0071】Wallace加算ツリー105は、部分積生成
部101〜104のそれぞれで生成された部分積の上位
8ビットの各桁をキャリーセーブ方式で加算し、桁毎の
和信号(Sf..S8)と上位桁への桁上げ信号(Cf..C8)を生成
する。生成された桁毎の和信号(Sf..S8)と上位桁への桁
上げ信号(Ce..C8)は、2入力桁上げ加算器107へ供給
される。
【0072】次に、2入力桁上げ加算器108は、Wall
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)を得る。
【0073】以下、この実施の形態にかかる乗算器の動
作について、図4(a)、(b)に従って具体的に説明
する。ここでは、乗数Yが“00111110”であ
り、被乗数Xが“11001101”である場合を例と
して説明する。
【0074】図4(a)は、この例において8ビット精
度の符号付き乗算を行う場合を示す。この場合は、乗数
Yを8ビットデータと見なし、通常のBoothのアルゴリ
ズムを適用する。すなわち、この例では、上記のように
してBoothデコーダ100が乗数Yを部分ビット列“0
01”、“111”、“111”、“100”に分解す
る。そして、部分積生成部101〜104において、こ
れらと被乗数Xとの部分積が、図に示すように求められ
る。
【0075】次に、Wallaceの加算ツリー105、10
6及び2入力桁上げ加算器107、108で部分積が上
位8ビット同士、下位8ビット同士でそれぞれ加算され
るが、セレクタ111はWallace加算ツリー106の桁
上げ信号をWallace加算ツリー105に供給し、セレク
タ112は2入力桁上げ加算器108の桁上げ信号を2
入力桁上げ加算器107に供給するように、選択する。
従って、2入力桁上げ加算器107、108で部分積を
そのまま加算した結果の“1100111010011
0”が、乗数Yと被乗数Xの乗算結果となる。
【0076】すなわち、この乗算結果(1100111
0100110)=(−3162)10は、乗数Y
(00111110)=(+62)10と、被乗数
(11001101)=(−51)10との積を示し
ている。ここで、()は、括弧内の数字が2進数であ
ることを、()10は括弧内の数字が10進数であるこ
とをそれぞれ示す(以下、同じ)。
【0077】図4(b)は、この例において4ビット精
度の符号付き乗算を行う場合を示す。この場合、乗数Y
と被乗数Xをそれぞれ上位4ビットと下位4ビットに分
割し、独立した符号付きデータとして扱う。この例で
は、上記のようにしてBoothデコーダ100が乗数Yを
部分ビット列“001”、“110”、“111”、
“100”に分解し、また、部分積生成回路203、2
04は、セレクタ201a(部分積生成回路203、2
04が有するセレクタ201aに対応するものをいう)
により被乗数Xの下位4ビットを“0”に置き換えて部
分積を求める。
【0078】セレクタ群209、210は、部分積の上
位8ビットとに“0”を選択して出力する。また、この
とき、部分積生成回路203、204によって求めた部
分積の下位8ビットは、被乗数Xの下位4ビットが
“0”に置換されたことと、シフト回路によるビットシ
フトにより、すべて“0”となる。これにより、部分積
生成部101〜104において、部分ビット列と被乗数
Xとの部分積が、図に示すように求められる。
【0079】次に、Wallaceの加算ツリー105、10
6及び2入力桁上げ加算器107、108で部分積が上
位8ビット同士、下位8ビット同士でそれぞれ加算され
るが、セレクタ111、112は、それぞれ“0”を選
択して加算ツリー105、2入力桁上げ加算器107に
供給する。従って、2入力桁上げ加算器107の出力信
号は、“11110100”となり、2入力桁上げ加算
器108の出力信号は、“00000110”となる。
【0080】すなわち、これらの乗算結果(11110
100)=(−12)10、(00000110)
=(+6)10は、乗数Yの上位4ビット(0011)
=(+3)10と被乗数Xの上位4ビット(110
0)=(−4)10との積と、乗数Yの下位4ビット
(1110)=(−2)10と被乗数Xの下位4ビッ
ト(1101)=(−3)10との積をそれぞれ示し
ている。
【0081】以上説明したように、この実施の形態にか
かる乗算器によれば、8ビット同士の乗算と、2つの4
ビット同士の乗算とを同一のハードウェアを用いて実行
することができる。これにより、この乗算器をプロセッ
サ等に適用することで、小面積化及び低電力化の効果を
得ることができる。
【0082】しかも、この実施の形態にかかる乗算器で
は、8ビット精度の乗算と4ビット精度の乗算とのいず
れを行う場合においても、中間結果を蓄積していく必要
はないので、乗算結果を高速に得ることができる。さら
に、実行可能な演算が限られておらず、最終的な乗算結
果を高速に得ることができる。
【0083】また、この実施の形態の乗算器をプロセッ
サに適用することにより、整数演算中心のソフトウエア
だけでなく、低精度演算を中心としたソフトウエアに対
する処理速度を改善することが可能になる。また乗算部
分のハードウエア量の増大を抑えることができるので、
システム全体を低コストで実現することが可能となる。
【0084】[第2の実施の形態]図5は、この実施の
形態にかかる乗算器の構成を示すブロック図である。こ
の乗算器は、符号付きまたは符号無しの乗算を8ビット
精度または2個の4ビット精度で行うものである。
【0085】図5に示すように、この実施の形態にかか
る乗算器は、Boothデコーダ501と、セレクタ502
〜504と、部分積生成部505〜510と、Wallace
加算ツリー511、512と、2入力桁上げ加算器10
7、108と、セレクタ111、112とから構成され
ている。2入力桁上げ加算器107、108、及びセレ
クタ111、112は、第1の実施の形態のものと同一
である。
【0086】Boothデコーダ501は、8ビット精度の
符号無し乗算(乗数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に供給する。
【0087】Boothデコーダ501は、8ビット精度の
符号付き乗算(乗数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に供給する。
【0088】Boothデコーダ501は、また、2つの4
ビット精度の符号無し乗算を行う場合、セレクタ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に供給する。
【0089】Boothデコーダ501は、さらに、2つの
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に供給する。
【0090】部分積生成部505〜510は、それぞれ
Boothデコーダ501から供給された乗数Yのビット列
と被乗数Xとの部分積を16ビットのデータとして求
め、それぞれ上位8ビットをWallace加算ツリー511
へ、下位8ビットをWallace加算ツリー512へ供給す
る。部分積生成部505〜510は、符号有無信号に従
って乗数Yの部分ビット列と被乗数Xとの部分積を符号
無しまたは符号付きで生成する。このため、部分積生成
部505〜510は、符号無しまたは符号付きの乗算を
行うために、セレクタ505a〜505c、シフト回路
505d、及びセレクタ505eを備えている(図で
は、部分積生成回路505についてのみ示すが、他も同
様である)。
【0091】8ビット精度の符号無し乗算を行う場合
は、セレクタ505aは(X3..X0)を選択し、セレクタ5
05bは(X4..X7)を選択し、セレクタ505cは“0”
を選択する(それぞれ部分積生成回路505〜510に
おいて対応するものを含む)。一方、8ビット精度の符
号付き乗算を行う場合は、セレクタ505aは(X3..X0)
を選択し、セレクタ505bは(X4..X7)を選択し、セレ
クタ505cはX7ビットを選択し、符号の拡張を行
う。
【0092】4ビット精度の符号無し乗算を行う場合に
は、部分積生成回路505〜507に対応するセレクタ
505aは(X3..X0)を選択し、セレクタ505bは
“0”を選択し、セレクタ505cは“0”を選択す
る。また、部分積生成回路508〜510に対応するセ
レクタ505aは“0”を選択し、セレクタ505bは
(X7..X4)を選択し、セレクタ505cは“0”を選択す
る。
【0093】4ビット精度の符号付き乗算を行う場合に
は、部分積生成回路505〜507に対応するセレクタ
505aは(X3..X0)を選択し、セレクタ505bは
“0”を選択し、セレクタ505cは“0”を選択す
る。また、部分積生成回路508〜510に対応するセ
レクタ505aは“0”を選択し、セレクタ505bは
(X7..X4)を選択し、セレクタ505cはY7ビットを選
択する。
【0094】シフト回路505dは、セレクタ505a
〜505cから供給されたデータを対応する乗数Yの部
分ビット列に従ってビットシフトする。さらに、部分積
生成部506〜510に対応するシフト回路505d
は、乗数Yの部分ビット列に応じてシフトを行った後、
それぞれ2ビット、4ビット、4ビット、6ビット、8
ビットの左シフトを行い、そこに“0”を挿入する。
【0095】8ビット精度の乗算を行う場合は、符号無
し及び符号付きの場合の両方とも、部分積生成部505
〜510のすべてのセレクタ505eは、対応するシフ
ト回路505dの出力信号の上位8ビットを選択して出
力する。
【0096】一方、4ビット精度の乗算を行う場合は、
符号無し及び符号付きの場合の両方とも、部分積生成部
505〜507のセレクタ505eは、“0”を選択し
て出力する。部分積生成部508〜510のセレクタ5
05eは、対応するシフト回路505dの出力信号の上
位8ビットを選択して出力する。
【0097】部分積生成部505〜510は、それぞれ
このようにして16ビットの部分積を求め、その上位8
ビットをWallace加算ツリー511に、下位8ビットをW
allace加算ツリー512に供給する。
【0098】Wallace加算ツリー512は、部分積生成
部505〜510で求められた部分積の下位8ビットを
加算し、各桁の和と桁上げ信号とを求め、2入力桁上げ
加算器108に供給する。Wallace加算ツリー512の
桁上げ信号は、セレクタ111に供給される。Wallace
加算ツリー511は、部分積生成部505〜510で求
められた部分積の上位8ビットを加算し、各桁の和と桁
上げ信号とを求め、2入力桁上げ加算器107に供給す
る。Wallace加算ツリー511は、各桁の和と桁上げ信
号とを求めるときに、下位からの桁上げを考慮して行
う。
【0099】この実施の形態にかかる乗算器の動作は、
符号有無信号に従ってセレクタによる選択が行われるこ
とを加えれば、第1の実施の形態で説明した乗算器の動
作をほぼ同様である。
【0100】以下、この実施の形態にかかる乗算器の動
作について、図6に従って具体的に説明する。ここで
も、第1の実施の形態における具体例と同様に、乗数Y
が“00111110”であり、被乗数Xが“1100
1101”である場合を例として説明する。
【0101】図6(a)は、この例において8ビット精
度の符号無し乗算を行う場合を示す。この場合は、Boot
hデコーダ501が乗数Yを部分ビット列“001”、
“111”、“000”、“111”、“100”、
“000”に分解する。そして、部分積生成部505〜
510において、これらと被乗数Xとの部分積が、図に
示すように求められる。
【0102】次に、Wallaceの加算ツリー511、51
2及び2入力桁上げ加算器107、108で部分積が上
位8ビット同士、下位8ビット同士でそれぞれ加算され
るが、セレクタ111はWallace加算ツリー512の桁
上げ信号をWallace加算ツリー511に供給し、セレク
タ112は2入力桁上げ加算器108の桁上げ信号を2
入力桁上げ加算器107に供給するように、選択する。
従って、2入力桁上げ加算器107、108で部分積を
そのまま加算した結果の“0011000110100
110”が、乗数Yと被乗数Xの乗算結果となる。
【0103】すなわち、この乗算結果(0011000
110100110)は、乗数Y(0011111
0)=(62)10と、被乗数(11001101)
=(51)10との積である(12710)10を示
している。
【0104】図6(b)は、この例において4ビット精
度の符号無し乗算を行う場合を示す。この場合、乗数Y
と被乗数Xをそれぞれ上位4ビットと下位4ビットに分
割し、独立した符号付きデータとして扱う。この例で
は、上記のようにしてBoothデコーダ501が乗数Yを
部分ビット列“001”、“111”、“100”、
“011”、“100”、“000”分解する。また、
部分積生成部508〜510のセレクタ505bより被
乗数Xの下位4ビットを“0”に置き換えて部分積を求
める。
【0105】部分積生成部505〜507のセレクタ5
05eは、部分積の上位8ビットとに“0”を選択して
出力する。また、このとき、部分積生成部508〜51
0求めた部分積の下位8ビットは、被乗数Xの下位4ビ
ットが“0”に置換されたことと、シフト回路によるビ
ットシフトにより、すべて“0”となる。こうして部分
積生成部505〜510において、部分ビット列と被乗
数Xとの部分積が、図に示すように求められる。
【0106】次に、Wallaceの加算ツリー511、51
2及び2入力桁上げ加算器107、108で部分積が上
位8ビット同士、下位8ビット同士でそれぞれ加算され
るが、セレクタ111、112は、それぞれ“0”を選
択して加算ツリー105、2入力桁上げ加算器107に
供給する。従って、2入力桁上げ加算器107の出力信
号は、“00010100”となり、2入力桁上げ加算
器108の出力信号は、“00000110”となる。
【0107】すなわち、これらの乗算結果(00010
100)=(36)10、(00000110)
(+6)10は、乗数Yの上位4ビット(0011)
=(3)10と被乗数Xの上位4ビット(1100)
=(12)10との積と、乗数Yの下位4ビット(11
10)=(14)10と被乗数Xの下位4ビット(1
101)=(13)10との積をそれぞれ示してい
る。
【0108】以上説明したように、この実施の形態にか
かる乗算器によれば、8ビット同士の乗算と、2つの4
ビット同士の乗算とを、その符号を考慮または考慮せず
に、同一のハードウェアを用いて実行することができ
る。これにより、この乗算器をプロセッサ等に適用する
ことで、小面積化及び低電力化の効果を得ることができ
る。
【0109】しかも、この実施の形態にかかる乗算器で
は、8ビット精度の乗算と4ビット精度の乗算とのいず
れを行う場合においても、中間結果を蓄積していく必要
はないので、乗算結果を高速に得ることができる。さら
に、実行可能な演算が限られておらず、最終的な乗算結
果を高速に得ることができる。
【0110】また、この実施の形態の乗算器をプロセッ
サに適用することにより、整数演算中心のソフトウエア
だけでなく、低精度演算を中心としたソフトウエアに対
する処理速度を改善することが可能になる。また乗算部
分のハードウエア量の増大を抑えることができるので、
システム全体を低コストで実現することが可能となる。
【0111】[第3の実施の形態]上記の第1、第2の
実施の形態では、乗算器を例として説明したが、この実
施の形態では、積和演算器を例として説明する。この実
施の形態では、第1の実施の形態にかかる乗算器と比較
してWallaceの加算ツリー105、106及びセレクタ
111の構成を変えることにより、積和演算器を実現す
るものである。
【0112】図7(a)、(b)はそれぞれ、この実施
の形態にかかる積和演算器に適用されるWallaceの加算
ツリー105’及びセレクタ111’、Wallaceの加算
ツリー106’の構成を詳細に示すブロック図である。
【0113】図7(a)に示すように、Wallaceの加算
ツリー106’は、第1の実施の形態にかかるWallace
の加算ツリー106(図3)の構成に加えて、全加算器
群700及びレジスタ702を有している。セレクタ1
11’は、第1の実施の形態にかかるセレクタ111
(図3)の構成に加えて、セレクタ111cを有してい
る。
【0114】レジスタ702は、過去に計算されている
下位8ビットの積和を保持する。全加算器群700は、
全加算器群300が出力した下位8ビットの桁毎の和と
桁上げ信号とレジスタ702に保持されている過去の積
和を加算し、桁毎の和と桁上げ信号とを求める。そし
て、全加算器群700が出力した桁毎の和と桁上げ信号
とを2入力桁上げ加算器108に供給し、下位8ビット
の積和を求めさせる。
【0115】セレクタ111cは、制御信号SIMDに
従って、全加算器群300の図の3段目左端の全加算器
の桁上げ信号と“0”とのいずれかを選択し、桁上げ信
号C7cとしてWallace加算ツリー105へ供給する。
【0116】また、図7(b)に示すように、Wallace
の加算ツリー105’は、第1の実施の形態にかかるWa
llaceの加算ツリー105(図3)の構成に加えて、全
加算器群701及びレジスタ703を有している。
【0117】レジスタ703は、過去に計算されている
上位8ビットの積和を保持する。全加算器群701は、
全加算器群301が出力した上位8ビットの桁毎の和と
桁上げ信号とレジスタ703に保持されている過去の積
和を加算し、桁毎の和と桁上げ信号とを求める。そし
て、全加算器群700が出力した桁毎の和と桁上げ信号
とを2入力桁上げ加算器108に供給し、上位8ビット
の積和を求めさせる。
【0118】以上説明したように、この実施の形態にか
かる積和演算器によれば、8ビット同士の積和演算と、
2つの4ビット同士の積和演算とを同一のハードウェア
を用いて実行することができる。これにより、この積和
演算器をプロセッサ等に適用することで、小面積化及び
低電力化の効果を得ることができる。
【0119】また、この実施の形態の積和演算器をプロ
セッサに適用することにより、整数演算中心のソフトウ
エアだけでなく、低精度演算を中心としたソフトウエア
に対する処理速度を改善することが可能になる。また乗
算部分のハードウエア量の増大を抑えることができるの
で、システム全体を低コストで実現することが可能とな
る。
【0120】[実施の形態の変形]本発明は、上記の第
1〜第3の実施の形態に限られず、種々の変形、応用が
可能である。以下、本発明に適用可能な上記の実施の形
態の変形態様について説明する。
【0121】上記の第1〜第3の実施の形態では、部分
積生成部101〜104、505〜509が生成した部
分積の加算を、Wallace加算ツリー105、106、5
11、512及び2入力桁上げ加算器107、108で
行っていた。これに対し、部分積生成部101〜10
4、505〜509が生成した部分積の加算には、例え
ば、4入力2出力加算器等、任意の多入力多出力加算器
を用いてもよい。
【0122】上記の第3の実施の形態では、第1の実施
の形態にかかる乗算器のWallace加算ツリー105、1
06(図1、図3)を、図7に示すWallace加算ツリー
105’、106’に置き換えることによって積和演算
器を実現していた。これに対し、第2の実施の形態にか
かる乗算器のWallace加算ツリー511、512を同様
に置き換えることによって積和演算器を実現することも
可能である。
【0123】上記の第1〜第3の実施の形態では、本発
明を8ビット同士の乗算(積和演算)或いは2つの4ビ
ット同士の乗算(積和演算)を行う場合を例として説明
したが、乗数、被乗数のビット数が異なる場合にも本発
明を適用することができる。また、乗数と被乗数の分割
数を変えること、例えば、32ビットの乗数、被乗数の
乗算と、これを8ビット毎に分割した4つの低精度の乗
算とを行う場合などにも本発明を適用することができ
る。
【0124】
【発明の効果】以上説明したように、本発明によれば、
高精度の乗算または積和演算と複数の低精度の乗算また
は積和演算とを、同一のハードウェアを用いて実行する
ことが可能となる。
【0125】しかも、高精度の乗算または積和演算、複
数の低精度の乗算または積和演算を行う場合とも、中間
結果の蓄積等を行う必要がなく、高速に演算結果を得る
ことができる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態にかかる符号付き乗
算器の構成を示すブロック図である。
【図2】図1の符号付き乗算器における部分積生成回路
を詳細に示す図である。
【図3】(a)、(b)は、図1の符号付き乗算器にお
けるWallace加算ツリーを詳細に示す図、(c)は、図
1の符号付き乗算器における2入力桁上げ加算器を詳細
に示す図である。
【図4】本発明の第1の実施の形態にかかる符号付き乗
算器の動作を説明する図である。
【図5】本発明の第2の実施の形態にかかる乗算器の構
成を示すブロック図である。
【図6】本発明の第2の実施の形態にかかる乗算器の動
作を説明する図である。
【図7】(a)、(b)は、本発明の第3の実施の形態
にかかる積和演算器のWallace加算ツリーを詳細に図で
ある。
【図8】第1の従来例にかかる乗算器の構成を示すブロ
ック図である。
【図9】第2の従来例にかかる乗算器の構成を示すブロ
ック図である。
【符号の説明】
100 Boothデコーダ 101〜104 部分積生成部 105、106 Wallace加算ツリー 107、108 2入力桁上げ加算器 110〜112 セレクタ 201〜204 部分積生成回路 201a セレクタ群 201b セレクタ群 201c シフト回路 205〜208 インバータ群 209〜212 セレクタ群 300、301 全加算器群 501 Boothデコーダ 502〜504 セレクタ 505〜510 部分積生成部 511、512 Wallace加算ツリー 700、701 全加算器群 702、703 レジスタ
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 7/52 G06F 7/00 101

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】乗数を複数の部分ビット列に分割する乗数
    分割手段と、 前記乗数分割手段が分割する部分ビット列に含まれる前
    記乗数の下位半分のビットのうちの最上位ビットを第1
    の制御信号に従って“0”に置換する乗数置換手段と、 前記乗数分割手段が分割する部分ビット列のそれぞれに
    対応して設けられ、各部分ビット列と被乗数との、前記
    被乗数のビット数の2倍のビット数で表される部分積を
    生成する複数の部分積生成手段と、 前記被乗数の下位半分のビットを前記第1の制御信号に
    従って“0”に置換し、前記複数の部分積生成手段のう
    ちの前記乗数の上位半分の部分ビット列に対応する部分
    積を生成するものに供給する第1の被乗数置換手段と、 前記被乗数の上位半分のビットを前記第1の制御信号に
    従って下位半分のビットのうちの最上位ビットの値に置
    換し、前記複数の部分積生成手段のうちの前記乗数の下
    位半分の部分ビット列に対応する部分積を生成するもの
    に供給する第2の被乗数置換手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
    積のうち前記乗数の下位半分の部分ビット列に対応する
    部分積を加算する第1の部分加算手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
    積のうち前記乗数の上位半分の部分ビット列に対応する
    部分積を加算する第2の部分加算手段と、 前記複数の部分積生成手段が生成した部分積のうち前記
    乗数の下位半分の部分ビット列に対応するものの上位半
    分のビットを前記第1の制御信号に従って“0”に置換
    し、前記第2の部分加算手段に供給する部分積置換手段
    と、 前記第1の部分加算手段からの桁上げ信号と“0”との
    いずれかを前記第1の制御信号に従って選択し、前記第
    2の部分加算手段に下位からの桁上げ信号として供給す
    る桁上げ選択手段とを備えることを特徴とする乗算器。
  2. 【請求項2】前記第1の制御信号は、前記乗数の全ビッ
    トと前記被乗数の全ビットとの積を求める高精度の乗
    算、或いは前記乗数の上位半分のビットと前記被乗数の
    上位半分のビットとの積及び前記乗数の下位半分のビッ
    トと前記被乗数の下位半分のビットとの積を求める低精
    度の乗算のいずれか一方を指示するものであり、 前記乗数置換手段は、前記第1の制御信号が低精度の乗
    算を指示しているときに、上位の部分ビット列に含まれ
    る前記乗数の下位半分のビットのうちの最上位ビットを
    “0”に置換し、 前記第1の被乗数置換手段は、前記第1の制御信号が低
    精度の乗算を指示しているときに、前記被乗数の下位半
    分のビットを“0”に置換し、 前記第2の被乗数置換手段は、前記第1の制御信号が低
    精度の乗算を指示しているときに、前記被乗数の上位半
    分のビットを下位半分のビットのうちの最上位ビットの
    値に置換し、 前記部分積置換手段は、前記第1の制御信号が低精度の
    乗算を指示しているときに、前記部分積のうち前記乗数
    の下位半分の部分ビット列に対応するものの上位半分の
    ビットを“0”に置換し、 前記桁上げ選択手段は、前記第1の制御信号が高精度の
    乗算を指示しているときに前記第1の部分加算手段から
    の桁上げ信号を、前記第1の制御信号が低精度の乗算を
    指示しているときに“0”をそれぞれ選択して前記第2
    の部分加算手段に桁上げ信号として供給することを特徴
    とする請求項1に記載の乗算器。
  3. 【請求項3】前記第1の部分積加算手段は、前記部分積
    の桁毎の和と上位への桁上げとを算出する第1のウォリ
    スの加算ツリーと、前記第1のウォリスの加算ツリーで
    算出された桁毎の和と桁上げとを加算する第1の加算器
    によって構成され、 前記第2の部分積加算手段は、前記部分積の各桁毎の和
    と上位への桁上げとを算出する第2のウォリスの加算ツ
    リーと、前記第2のウォリスの加算ツリーで算出された
    桁毎の和と桁上げとを加算する第2の加算器によって構
    成されることを特徴とする請求項1または2に記載の乗
    算器。
  4. 【請求項4】前記複数の部分積生成手段は、それぞれ前
    記乗数と前記被乗数とを符号付きとして扱うか符号無し
    として扱うかを示す第2の制御信号が入力され、入力さ
    れた第2の制御信号に従って対応する部分ビット列と前
    記被乗数とを符号付きとして扱ったときの部分積と符号
    無しとして扱ったときの部分積とのいずれかを生成する
    手段を備えることを特徴とする請求項1乃至3のいずれ
    か1項に記載の乗算器。
  5. 【請求項5】互いに同数のブロックに分けることが可能
    な乗数と被乗数との全ビット同士での積、或いは対応す
    るブロックのビット同士の積を求める乗算器であって、 乗数を複数の部分ビット列に分割する乗数分割手段と、 前記乗数分割手段が分割する部分ビット列に含まれる前
    記乗数のブロック毎の最上位ビットを第1の制御信号に
    従って“0”に置換する乗数置換手段と、 前記乗数分割手段が分割する部分ビット列のそれぞれに
    対応して設けられ、各部分ビット列と被乗数との、前記
    被乗数のビット数の2倍のビット数で表される部分積を
    生成する複数の部分積生成手段と、 前記被乗数の下位からいずれかのブロックまでのビット
    を前記第1の制御信号に従って“0”に置換し、前記複
    数の部分積生成手段のうちの前記乗数の置換を行うブロ
    ックまでに対応する部分ビット列に対応する部分積を生
    成するものに供給する第1の被乗数置換手段と、 前記被乗数の上位からいずれかのブロックまでのビット
    を前記第1の制御信号に従って該ブロックより1つ下位
    のブロックのうちの最上位ビットの値に置換し、前記複
    数の部分積生成手段のうちの前記乗数の置換を行うブロ
    ックまでに対応する部分ビット列に対応する部分積を生
    成するものに供給する第2の被乗数置換手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
    積を、それぞれいずれかのブロックに対応するもの同士
    で加算する複数の部分加算手段と、 前記複数の部分積生成手段がそれぞれ生成した部分積の
    うち、対応するブロックよりも上位のビットを前記第1
    の制御信号に従って“0”に置換し、対応する前記複数
    の部分加算手段に供給する部分積置換手段と、 前記複数の部分加算手段のそれぞれからの桁上げ信号と
    “0”とのいずれかを前記第1の制御信号に従って選択
    し、それぞれ1つ上位の部分加算手段に下位からの桁上
    げ信号として供給する複数の桁上げ選択手段とを備える
    ことを特徴とする乗算器。
  6. 【請求項6】乗数の下位半分のビットのうちの最上位ビ
    ットを第1の制御信号に従って“0”に置換する乗数置
    換手段と、 前記乗数置換手段により下位半分のビットのうちの最上
    位ビットが置換されたまたは置換されていない乗数を複
    数の部分ビット列に分割する乗数分割手段と、 前記乗数分割手段が分割する部分ビット列のそれぞれに
    対応して設けられ、各部分ビット列と被乗数との、前記
    被乗数のビット数の2倍のビット数で表される部分積を
    生成する複数の部分積生成手段と、 前記被乗数の下位半分のビットを前記第1の制御信号に
    従って“0”に置換し、前記複数の部分積生成手段のう
    ちの前記乗数の上位半分の部分ビット列に対応する部分
    積を生成するものに供給する第1の被乗数置換手段と、 前記被乗数の上位半分のビットを前記第1の制御信号に
    従って下位半分のビットのうちの最上位ビットの値に置
    換し、前記複数の部分積生成手段のうちの前記乗数の下
    位半分の部分ビット列に対応する部分積を生成するもの
    に供給する第2の被乗数置換手段と、 前記乗数の下位半分の部分ビット列の積和に対応する、
    過去に求めた積和を保持する第1の積和保持手段と、 前記乗数の上位半分の部分ビット列の積和に対応する、
    過去に求めた積和を保持する第2の積和保持手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
    積のうち前記乗数の下位半分の部分ビット列に対応する
    部分積と、前記第1の積和保持手段に保持された過去の
    積和とをそれぞれ加算して、積和を求める第1の積和演
    算手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
    積のうち前記乗数の上位半分の部分ビット列に対応する
    部分積と、前記第2の積和保持手段に保持された過去の
    積和とをそれぞれ加算して、積和を求める第2の積和演
    算手段と、 前記複数の部分積生成手段が生成した部分積のうち前記
    乗数の下位半分の部分ビット列に対応するものの上位半
    分のビットを前記第1の制御信号に従って“0”に置換
    し、前記第2の積和演算手段に供給する部分積置換手段
    と、 前記第1の積和演算手段からの桁上げ信号と“0”との
    いずれかを前記第1の制御信号に従って選択し、前記第
    2の積和演算手段に下位からの桁上げ信号として供給す
    る桁上げ選択手段とを備えることを特徴とする積和演算
    器。
  7. 【請求項7】互いに同数のブロックに分けることが可能
    な乗数と被乗数との全ビット同士での積、或いは対応す
    るブロックのビット同士の積を求める積和演算器であっ
    て、 乗数を複数の部分ビット列に分割する乗数分割手段と、 前記乗数分割手段が分割する部分ビット列に含まれる前
    記乗数のブロック毎の最上位ビットを第1の制御信号に
    従って“0”に置換する乗数置換手段と、 前記乗数分割手段が分割する部分ビット列のそれぞれに
    対応して設けられ、各部分ビット列と被乗数との、前記
    被乗数のビット数の2倍のビット数で表される部分積を
    生成する複数の部分積生成手段と、 前記被乗数の下位からいずれかのブロックまでのビット
    を前記第1の制御信号に従って“0”に置換し、前記複
    数の部分積生成手段のうちの前記乗数の置換を行うブロ
    ックまでに対応する部分ビット列に対応する部分積を生
    成するものに供給する第1の被乗数置換手段と、 前記被乗数の上位からいずれかのブロックまでのビット
    を前記第1の制御信号に従って該ブロックより1つ下位
    のブロックのうちの最上位ビットの値に置換し、前記複
    数の部分積生成手段のうちの前記乗数の置換を行うブロ
    ックまでに対応する部分ビット列に対応する部分積を生
    成するものに供給する第2の被乗数置換手段と、 それぞれいずれかのブロックに対応する過去に求めた積
    和を保持する複数の積和保持手段と、 前記複数の部分積生成手段のそれぞれで生成された部分
    積と、前記複数の積和保持手段に保持された過去の積和
    とをそれぞれいずれかのブロックに対応するもの同士で
    加算して、積和を求める複数の積和演算手段と、 前記複数の部分積生成手段がそれぞれ生成した部分積の
    うち、対応するブロックよりも上位のビットを前記第1
    の制御信号に従って“0”に置換し、対応する前記複数
    の部分積和演算手段に供給する部分積置換手段と、 前記複数の積和演算手段のそれぞれからの桁上げ信号と
    “0”とのいずれかを前記第1の制御信号に従って選択
    し、それぞれ1つ上位の積和演算手段に下位からの桁上
    げ信号として供給する複数の桁上げ選択手段とを備える
    ことを特徴とする積和演算器。
JP10242754A 1998-08-28 1998-08-28 乗算器及び積和演算器 Expired - Fee Related JP3139466B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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