JPH0831025B2 - 乗算回路 - Google Patents

乗算回路

Info

Publication number
JPH0831025B2
JPH0831025B2 JP61069749A JP6974986A JPH0831025B2 JP H0831025 B2 JPH0831025 B2 JP H0831025B2 JP 61069749 A JP61069749 A JP 61069749A JP 6974986 A JP6974986 A JP 6974986A JP H0831025 B2 JPH0831025 B2 JP H0831025B2
Authority
JP
Japan
Prior art keywords
partial
multiplier
partial product
multiplication
bits
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 - Lifetime
Application number
JP61069749A
Other languages
English (en)
Other versions
JPS62229330A (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.)
Toshiba Corp
Original Assignee
Tokyo Shibaura Electric Co Ltd
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 Tokyo Shibaura Electric Co Ltd filed Critical Tokyo Shibaura Electric Co Ltd
Priority to JP61069749A priority Critical patent/JPH0831025B2/ja
Priority to US07/022,968 priority patent/US4807175A/en
Publication of JPS62229330A publication Critical patent/JPS62229330A/ja
Publication of JPH0831025B2 publication Critical patent/JPH0831025B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/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

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Description

【発明の詳細な説明】 〔発明の目的〕 (産業上の利用分野) この発明は、比較的経済的な方法で高速乗算動作を達
成し得る乗算回路に関する。
(従来の技術) 乗算回路は並列乗算回路と直列乗算回路に大きく分類
することができる。直列乗算回路は被乗算に対して乗数
を1桁ずつ乗算処理し、この1桁ずつの乗算処理を順次
シフトしながらすべての桁について順次累積加算して被
乗数と乗数との積を求めるものである。更に詳細に説明
すると、直列乗算回路は乗算の1桁ずつ、すなわち2進
コンピュータの場合には1ビットずつ被乗算と掛けて部
分積を作成している。例えば、乗数および被乗数が32ビ
ットの数の場合(32ビット×32ビット)には32ビットの
被乗数に対して乗数の各1ビットずつを掛けた32ビット
の部分積を32個作成し、それからこの32個の部分積を順
次累積加算して積を求めている。この直列乗算回路は各
部分積を乗数の各桁毎に順次作成し、この作成順に順次
累積加算しているので、部分積を作成する部分積作成回
路およびこの部分積を順次累積加算する加算回路はそれ
ぞれ1回路ずつあればよいことになるが、演算速度はそ
の分遅くなっている。また、並列乗算回路は被乗数に対
する乗数の各桁の部分積を同時に作成し、この同時に作
成されたすべての部分積を同時に加算するものであり、
その演算速度は非常に高速になっているが、部分積を同
時に作成し、これを同時に加算するために例えば32ビッ
トの乗算の場合には、32個分の部分積作成回路とこの32
個の部分積を同時に加算する32個に相当する加算回路が
必要となっている。
また、一方、直並列的に乗算を行なう方法として、ブ
ース(Booth)のアルゴリズムによる方法がある。前記
直列乗算が乗数の1ビットずつについて乗算処理して例
えば32個の部分積を作成しているのに対して、このブー
スの方法は乗数の3ビットずつについて部分積を作成す
るとともに、この3ビットのうち1ビットを隣接するビ
ットと重複させるようにしている。この結果、例えば32
ビットの乗算の場合には16個の部分積のみを作成すれば
よいことになる。そして、このように作成される16個の
部分積を加算して積を求めている。このブースの方法は
回路的には被乗数の3ビットずつについて16個の部分積
を順次作成し、この部分積を順次累積加算することがで
きるので、直列乗数の場合と同様に部分積作成回路と加
算回路がそれぞれ1回路ずつあればよいことになるとと
もに、演算速度は直列乗算に比較して倍になっている。
(発明が解決しようとする問題点) 直列乗算回路は回路的に最も簡単で経済的であるが、
演算速度が非常に遅いという問題がある。並列乗算回路
は演算速度が非常に高速であるが、多くの部分積作成回
路および加算回路を必要として非常に高価となり、回路
を実装するスペースとして大きなスペースを必要とする
という問題がある。また、ブースのアルゴリズムを利用
した乗算回路は直並列回路の中間的回路であって比較的
少ない回路構成でやや高速な演算を行なうことができる
が、速度的には並列乗算回路を比較してかなり遅く、例
えば並列乗算の場合には部分積の作成およびすべての部
分積の加算を同時に1回の処理でおこなっているのに対
して例えば32ビットの乗算の場合にはブースの方法は16
回の処理を必要とするため乗算速度がほぼ16分の1の速
度、すなわちほぼ16倍も遅いという問題がある。
この発明は、上記の鑑みてなされたもので、その目的
とするところは、経済的な回路構成で比較的高速な演算
速度を達成し得る乗算回路を提供することにある。
〔発明の構成〕
(問題点を解決するための手段) 上記目的を達成するために、この発明による乗算回路
は、乗数を保持する第1のレジスタと、前記第1のレジ
スタに接続され、この第1のレジスタの内容を右にシフ
トするシフタと、被乗数を保持する第2のレジスタと、
前記第2のレジスタに接続され、前記第1のレジスタか
ら前記乗数を構成するビットの一部を下位から順番に入
力し、前記一部のビットと前記被乗数との部分積を計算
する部分積発生回路と、この部分積発生回路で計算され
た部分積を累計計算して、前記被乗数と前記乗数との積
を計算する部分積加算回路とからなり、前記シフタによ
るシフタ処理と、この部分積発生回路で計算された部分
積の計算の処理と、前記部分積加算回路による部分積の
加算の処理は並列に行われ、少なくともこれら3つの処
理を構成ステージとするパイプライン方式によって乗算
を行う乗算回路であって、前記部分積加算回路の出力の
一部で、乗算結果として確定した下位のビットは、前記
第1のレジスタの上位ビットに順次入力され、そこで保
持されることを特徴とする。
(作用) この発明の乗算回路においては、乗数を所定の複数桁
ずつ分割して作成した複数の部分乗数のうち2つの部分
乗数の各々と被乗数との掛算によって形成される2つの
部分積を加算して作成される部分積和を複数の部分乗数
のすべてについて順次作成し、このすべての部分積和を
順次累積加算して積を求めている。
(実施例) 以下、図面を用いてこの発明の実施例について説明す
る。
第1図はこの発明の一実施例に係わる乗算回路のブロ
ック図である。同図の乗算回路は2つの部分積を作成
し、この2つの部分積を加算した部分積和を求める部分
積乗算部(MUL)1、上記部分積和を累積加算する演算
論理ユニット(ALU)3、乗数を4ビットずつ右シフ
ト、すなわちLSB側かられシフトアウトし、このシフト
アウトした4ビットを部分積乗算部一に転送するバレル
シフタを構成しているシフタ部5を有し、これらの各部
は2つのバス7および9を介して互いに連結され、この
バス7,9を介してパイプライン処理により乗算動作を達
成するようになっている。
第1図の乗算回路は例えば32ビットの乗算を行なうも
のであり、第2図に示すように32ビット用のマイクロプ
ロセッサ(CPU)に使用され、このCPU内のバス7,9を介
してパイプライン処理し得るように接続されている。こ
のCPUはアドレスバスインターフェース11およびデータ
バスインターフェース13を介して図示しない記憶装置と
接続され、メモリ管理ユニット15の制御のもとに該記憶
装置から命令、例えば乗算命令等を読み出し、この命令
をデータバスインタフェース13を介してプリフェニッチ
ユニット17にセットし、命令デコーダ19によって解読し
ている。そして、この解読された命令はパイプラインコ
ントロール21を介して各部、すなわち乗算命令の場合に
は上記部分乗算部1、ALU3、シフタ部5等が適宜制御さ
れるようになっている。また、このCPUフラグコンロー
ラ25およびレジスタファイル27等も有している。
第1図に戻って、部分積乗算部1には32ビットの被乗
数Xを格納しているMROレジスタ31が接続され、被乗数
Xが供給されている。この被乗数Xはバス7を介して前
記パイプラインコントローラ21の制御によりMROレジス
タ31にセットされる。また、シフタ部5には32ビットの
乗数Yを格納しているSROレジスタ33が接続され、乗数
Yが供給されている。この乗数Yはバス7を介してSRO
レジスタ33にセットされる。ALU3の入力にはAROレジス
タ35およびAR1レジスタ37が接続され、AROレジスタ35に
はALU3の出力に接続されたセレクタ39を介したALU3の出
力、すなわち後述するように部分積和の累積加算結果が
セットされ、AR1レジスタ37には部分積乗算部1からの
新たな部分積和がセットされ、両入力の和、すなわち累
積部分積和と新部分積和の和がALU3で演算されるように
なっている。そして、更に、このALU3の出力である累積
部分和は後述するようにその一部、すなわち下位4ビッ
トが前記SROレジスタ33に供給され、残りのビットがセ
レクタ39を介してAROレジスタ35に供給されている。SRO
レジスタ33にセットされた乗数Yは下位4ビットずつ部
分積乗算部1に供給され、この下位4ビットについての
2つの部分積の和が部分積乗算部1で演算されるととも
に、SROレジスタ33にセットされた残りの28ビットはシ
フタ部5およびバス9を介して4ビットずつそのLSD側
へ右シフトされて再度SROレジスタ33にセットされ、次
の下位4ビットが部分積乗算部1に供給される準備が行
なわれている。また、部分積乗算部1には4ビットずつ
の右シフトでシフトアウトした結果の最初のビットがシ
フタ部5からCYビットとして供給されているが、CYビッ
トは第1回目の部分積の計算においては後述するように
「0」となっている。
第3図は部分積乗算部1の回路図である。部分積乗算
部1は2つの部分積を発生する部分積発生部41,43と、
この部分積発生部41,43の出力である2つの部分積を加
算する加算器45とを有する。部分積発生部41,43は直列
乗算のように32ビットの乗数Yの1ビットずつについて
部分積を発生するのでなく、ブースの方法を適用して乗
数YをLSDから3ビットずつに分割した複数の部分乗数
(yi,yi+1,yi+2)を作成し、この各3ビットの部分乗
数(yi,yi+1,yi+2)と32ビットの被乗数Xとの部分積
をそれぞれ算出している。このため、部分積乗算部1は
このビット部分乗数(yi,yi+1,yi+2)を前記SROレジ
スタ33から供給され、この部分乗数(yi,yi+1,yi+2
から部分積モード、すなわち後述するようにブースの方
法において部分積を求めるための3ビット部分乗数に基
づいて決定される部分乗数解読値を発生する部分積モー
ド発生回路47,49を有し、該部分積モード発生回路47,49
の出力が部分積発生部41,43にそれぞれ供給されてい
る。
本実施例の乗算回路は以下に詳細に説明するように部
分積乗算部1においてブースの方法によって3ビット単
位の部分乗数(yi,yi+1,yi+2)と被乗数Xとの部分積
を同時に2つ作成し、この2つの部分積の和を順次累積
加算することにより積を求めている。この原理を以下に
第4図乃至第8図を参照して説明する。
通常、乗算を筆算により行なう場合には被乗数Xを上
側に書き、その下に乗数Yを並列に書いた後、更にその
下の線を書き、この線の下に乗数Yの1桁ずつに対して
求めた部分積を順次書き込み、最後にこれらの部分積を
加算している。ブースの方法は、このように乗数Yの1
桁ずつに対して部分積を求める代りに乗数Yを3桁ず
つ、すなわち3ビットずつ複数の部分乗算に分割し、こ
の分割された3ビットずつに対して被乗数Xと部分積を
求め、この部分積を加算して積を求めている。この乗数
Yを複数に分割した3ビットの部分乗数と被乗数Xとの
部分積を求める場合に、3ビットの部分乗数PPi(yi,y
i+1、yi+2)の2進値をそのまま被乗数Xと掛けるので
なく、3ビットの部分乗数PPi(yi,yi+1,yi+2)をブ
ースの理論に従って解読した部分乗数解読値Vppを使用
し、この部分乗数開度口Vppを被乗数Xと掛けて部分積P
Diを求めている。
第4図はブースの方法による乗算方法を被乗数X=13
(2進数で00001101)および乗数Y=36(2進数で0010
0100)の(13×36)について部分常数PPi、部分乗数解
読値Vpp、部分積PDiとともに示しているものである。乗
数Y=y7,y6,y5,y4,y3,y2,y0(=00100100)に対
する部分乗数PPiを3ビット単位で形成するために、最
下位ビットyoの下位に更に「0」の1ビット分y-1を前
記CYビットとして追加し、ビットy-1,y0,y1で第1の
部分乗数PP1を形成し、ビットy1,y2,y3,で第2の部
分乗数PP2を形成し、以下同様に第3の乗数PP3、第4の
部分定数PP4を形成している。それから、これらの各部
分乗数PPiと被乗数Xとを掛けた部分積PDi、すなわちPD
1,PD2,PD3,PD4を作成し、これらの部分乗数PPiを加
算して積468(2進数で0000000111010100)を求めてい
る。部分乗数PPiは3ビットずつ取って形成するも、そ
のうちの1ビットはオーバーラップしているので、実際
的には2ビットとなり、上述した乗算例の場合のように
8ビットの場合には4つの部分乗数PPiが作成され、こ
の4つの部分乗数PPiに対しそれぞれ部分積PDiが作成さ
れ、合計で4つの部分積PDiが作成される。また、32ビ
ットの乗算の場合、すなわち被乗数Xおよび乗数Yが32
ビットの場合には16個の部分積PDiが形成されることに
なる。第5図は32ビットの乗算の場合の乗数YIiの部分
乗数PP1,PP2,PP3,……PP16を示しているものであ
る。ブースの方法ではこのように32ビットの被乗数Xに
対して16の部分乗数PPiが作成され、この16部分乗数PPi
に対応して16の部分積PDiを作成し、この16の部分積PDi
を作成し、この16部分PDiを順次加算している。なお、
ここで部分乗数PP1を作成するにY0の下位に「0」のY-1
を追加し、最下位の部分乗数PPiとしてY-1,Y0,Y1によ
り構成している。しかしながら、本実施例においては、
16のい部分積PDiを別々に作成するのでなく、同時に2
つずつの部分積PDiを作成している。すなわち、第5図
に示すように部分乗数PP1とPP2,PP3とPP4,PP5とPP6
PP7とPP8,PP9とPP10,PP11とPP12,PP13とPP14,PP15
PP16の2つずつの部分積PDiを同時に作成し、この同時
に作成された2つの部分積PDiを同時に加算する演算を
8回行なって、8つの部分積和PSiを作成し、8つの部
分積和PSiを順次加算して積を求めているのである。こ
のブースの方法において、部分乗数PPiと被乗数Xとを
掛けて部分積PDiを形成するのに、部分乗数PPiをそのま
ま数値として掛けるのでなく、次に示すようにこの部分
乗数PPiを前記部分積モード発生回路47,49により解読し
て求めた部分乗数解読値Vppを使用している。部分乗数P
Piは3ビットで構成されるものであるため、000,001,01
0,…,111の8つの状態が存在するが、この8つの状態の
部分乗数PPiに対して第5図の表で示される部分乗数解
読値Vppが使用され、この部分乗数解読値Vppと被乗数X
とを掛けて部分積PDiを作成している。すなわち、この
表からわかるように、部分乗数PPi=000,111に対しては
部分乗数解読値Vpp=0、部分乗数PPi=001,010に対し
ては部分乗数解読値Vpp=+1、部分乗数PPi=011に対
しては部分乗数解読値Vpp=+2、部分乗数PPi=100に
対しては部分乗数解読値Vpp=−2、部分乗数PPi=101,
110に対しては部分乗数解読値Vpp=−1となっている。
第4図に示す表はこの部分乗数解読値Vppを乗数Yの各
部分乗数PPiに対して示している表である。
次に、ブースのアルゴリズムおよびその中における部
分乗数解読値Vppについて説明する。
今、被乗数Xおよび乗数Yをnビットの有符号数とし
てX=Xn-1,Xn-2…X0とし、Y=Yn-1,Yn-2,…Y0とす
ると と表わすことができる。乗数Yの桁数を偶数とし、Y0
0とすると、乗数Yは次のようになる。
この結果、被乗数Xと乗数Yの積Pは次のようにな
る。
この(5)式からわかるように、被乗数Xと乗数Yと
の積Pはn/2個の部分積でよく、括弧内で示す(Y2iY
2i+1−2Y2i+2)の計算値が第4図の表で示す部分乗数
解読値Vpp、すなわち0,±1,±2を表している。(5)
式で表される乗算動作を実現したものがブースのアルゴ
リズムであり、上述したように(Y2iY2i+1−2Y2i+2
で表される部分乗数解読値Vppと被乗数Xとの部分積PDi
がn/2個必要としているものである。前記第5図は32ビ
ットの乗数Yに対する部分乗数PP1−PP16および部分乗
数解読値Vppを示しているものである。なお、この部分
乗数解読値Vppが「0」とは被乗数Xに「0」を掛ける
ことであり、「+1」とは被乗数Xをそのまま、「−
1」は被乗数Xを負数とすること、「+2」は被乗数X
を倍、すなわち1ビット左にシフトすることであり、
「−2」とは被乗数Xを倍にし、かつ負にすることであ
る。
部分積乗算部1は各部分乗数PPiに対応する部分乗数
解読値Vppを部分積モード発生回路47,49によって作成
し、この部分乗数解読値Vppと被乗数Xとの部分積PDiを
部分積発生部41,43において同時に2個ずつ作成し、こ
の2個の部分積PDiを加算器45で加算し、この加算した
部分積和PSiを出力している。そして、この部分積和PSi
を求めるに当って、加算器45において部分積発生部41か
らの第1の部分積PDiと部分積発生部43からの第2の部
分積PDiとを加算するのに、第4図および第5図からも
わかるように、2つの部分積和PSiを2ビットずらして
加算器45で加算して部分積和PSiを算出している。とこ
ろで、加算器45に供給される入力信号の被乗数Xは32ビ
ットであり、部分乗数解読値Vppは「2」が最大数であ
り、これは、被乗数Xを左へ1ビットずらすことであ
り、また部分積PDiの加算に2ビットずらし、更に符号
ビットとして1ビット必要となるので、加算器45の出力
データは第3図(b)に示されているように36ビットに
なる。
以上のように部分積乗算部1において算出される32ビ
ットの部分積和PSiは前記AR1レジスタ37にセットされる
とともに、AROレジスタ35に格納される36ビットの部分
積和PSiの累積結果とALU3において累積加算される。な
お、乗算の開始時においてはAROレジスタ35には「0」
がセットされている。第6図は部分積乗算部1における
部分積和PSiの演算ALU3における累積加算処理を説明し
ている図である。この図からわかるように、まず1サイ
クル目において部分積乗算部1の加算器45は第1の部分
積PD1と第2の部分積PD2とを加算1、この加算した第1
の部分積和PS1をAR1レジスタ37を介してALU3に供給す
る。そして、この第1の部分積和PS1はAROレジスタ35か
らの最初「0」である累積結果と加算され、36ビットの
累積結果がALU3から出力される。この36ビットの累積結
果のうち下位4ビットは1サイクル目の乗算として確定
しているビットであるので上記SROレジスタ33に上位ビ
ットとして供給される。ALU3の出力の残りの上位32ビッ
トの累積結果はセレクタ39を介してAROレジスタ35に下
位32ビットとしてセットされ、レジスタ35に下位32ビッ
トとしてセットされ、AROレジスタ35の上位4ビットに
は符号拡張ビットがセットされ、AROレジスタ35は36ビ
ットとなる。この36ビットの累積結果はAROレジスタ35
からALU3に再度供給され、部分積乗算部1における2サ
イクル目の演算結果である第2の部分積和PS2と累積加
算される。また、ALU3からの36ビットの累積結果のうち
の4ビットは同様に2サイクル目の確定した4ビットと
してSROレジスタ33に供給され、残りの32ビットが拡張
された4ビットの符号とともにセレクタ39を介してALU3
に供給されるというように以下第15の部分積PD15と第16
の部分積和PS16とを加算した第8部分積和PS8とそれま
での累積結果とがALU3で累積加算されるまで行なわれ
る。
部分積乗算部1にはSROレジスタ33からの2つの部分
乗数PPiを構成する4ビットが順次供給されるともに、
上述したように部分積乗算部1における1サイクルの動
作に同期してALU3から確定した累積結果の上位4ビット
が順次上位ビットに供給されるが、これに同期して下位
4ビットから順次部分積乗算部1に供給している。第7
図および第8図はこのSROレジスタ33に対するシフタ部
5によるシフト動作と部分除数PPiとの関係を示してい
るものである。同図に示すように、SROレジスタ33に最
初セットされた乗数Y(=y0,y1,y2…,y29、y30,y
31)はCYビットとしてセットされた「0」を最下位ビッ
トとして含んだ下位4ビット(cy,y0,y1,y2)が第1
の部分乗数PP1(cy,y0,y1)および第2の部分乗数PP2
(y1,y2,y3)として部分積乗算部1の部分席モード発
生回路47,49にそれぞれ供給される。これにより第1回
目の乗算が行なわれる。第1回目の乗算が終了すると、
SROレジスタ33の内容はシフタ部5、バス9を介して4
ビットシフトされ、CYビットを含んだ下位4ビットy3
y4,y5,y6がセットされるとともに、上述したようにAL
U3から累積加算結果で確定して下位4ビットがSROレジ
スタ33の上位4ビットに供給され、第2回目の乗算が行
なわれる。同様に繰返されて、最終の第8回目の乗算の
場合には下位4ビットに乗数Yの最上位の4ビットがシ
フトされ、残りの上位28ビットには確定した累積結果が
セットされる。そして、第8回目の乗算が終了する時に
はSROレジスタ33のすべてに積Pの下位の32ビットがセ
ットされていることになり、またAROレジスタ35には積
Pの上位32ビットがセットされていることになる。
以上説明したように、本実施例は部分積乗算部1にお
いて2つの部分積PDiを同時に加算して部分積和PSiを求
め、この部分積和PSiをALU3において順次累積加算する
とともに、この部分積和PSiおよび累積加算を求めるた
めにSROレジスタ33およびシフタ部5において乗数Yの
部分乗数PPiを順次シフト動作させて乗算動作を逐次的
に行ない、この逐次的動作を部分積乗算部1、ALR3、シ
フタ部5間において順次行なうためにバス7,9を使用し
たパイプライン方式で達成しているものである。
なお、上述したように、部分積乗算部1、ALU3、シフ
タ部5のブロックのパイプライン処理により乗算が実施
されるのであるが、通常ブースのアルゴリズムは有符号
で乗算するものであるため、無符号に対して補正が必要
である。この補正方法について説明する。無符号の被乗
数、乗数をそれぞれX*,Y*とし、有符号の被乗数、乗数
をそれぞれX,Yとすると、両者は次式の関係となる。
X*・Y*=X・Y+2nYn-1・X+2nXn-1・Y …(6) 従って、被乗数X、乗数Yの有符号結果を無符号に補
正するには、2nYn-1・Xと2nXn-1・Yを加算すればよ
い。この補正はALUを使用して行なうことができ、2nY
n-1・Xの補正は乗数Yの最上位が「1」の場合には結
果にXを加算し、最上位が「0」場合には何もせず、す
なわち「0」を加算すればよいことになる。また、2nX
n-1・Yの補正は被乗数Xの最上位が「1」の場合には
結果にYを加算し、最上位が「0」の場合には何もせ
ず、すなわち「0」を加算すればよいことになる。
次に、この作用を更に明確にするための第9図に示す
被乗数Xおよび乗数Yともに8ビットの乗算についての
パイプライン処理のタイミング図を参照して説明する。
第9図における処理は図において一番上に数字で示す
角サイクル毎に各部分積和PSi、累積加算動作等が行な
われている。被乗数Xおよび乗数YはそれぞれX7,X6
…X1,X0およびY7,Y6,…Y1,Y0で表されている。SRO
レジスタ33の出力はSROで表され、シフタ部5の出力はS
HFで表され、部分積乗算部1の出力はMULで表され、ALU
3の出力はALUで表されている。SROにおいて「0000Y7−Y
4はY7−Y0が4ビットシフトした結果を示している。MUL
において「X・Y<3:0>」は乗数YのY3−Y0の4ビッ
トとCYビットの値を解読して部分積PD1,2を作成し、そ
の部分積和PSを示している。また、SROにおいては上位
4ビットに例えば第4サイクルで示すようにALU3で確定
した累積結果の下位4ビットP3−P0が供給され、更に第
5サイクルで4ビットシフトされて次の確定した結果が
供給さ、P7−P0となっている。ALUにおいては第3サイ
クルで第1回目の累積加算「0+X・Y<3:0>」が行
なわれ、第4サイクルで第2回目の累積加算X・Y<3:
0+X・Y<7:0>が行なわれている。
まず、第1サイクルにおいて、バス7,9を介して被乗
数X、乗数Yがそれぞれ供給され、第2サイクルにおい
てMROレジスタ31、SROレジスタ33にそれぞれセットされ
る。SROレジスタ33に乗数Yがセットされると、この乗
数Yの下位4ビットが部分積乗算部1に供給され、部分
積助運部1の部分積モード発生回路47,49において解読
された2つの部分乗数解読値Vppが部分積発生部41,43に
それぞれ供給され、ここで2つの部分積PDiが作成さ
れ、更に加算器45においてこの2つの部分積PDiが加算
されて部分積和PS、すなわちX・Y<3:0>が演算され
る。また、これと同時にSROレジスタ33にセットされた
乗数Yはシフタ部5によって4ビットシフトされ、「00
00Y7−Y4」になる。このように第2サイクルにおいては
部分積和PSiの演算とシフト動作とが同時に行なわれ、
乗算速度を高速化している。
第3サイクルになると、シフタ部5でシフトされた結
果の乗数YがSROレジスタ33にセットされ、このシフト
された乗数Yの下位4ビットが部分積乗算部1に供給さ
れて、上述したようにこの4ビットと被乗数Xとの部分
積和PSであるX・Y<7:4>が演算される。また、SROレ
ジスタ33にセットされた乗数Yは更にシフタ部5におい
て4ビットシフトされ、シフタ部5の出力は「0000000
0」となるとともに、ALU3には前記部分積和PSのX・Y
<3:0>が最初の累積加算として行なわれ、「0+X・
Y<3:0>」として示されている。この最初の累積加算
においては前の累積加算は存在しないので「0」となっ
ている。
第4サイクルにおいては、第3サイクルのシフタ部5
の出力がSROレジスタ33に供給される時前述したようALU
3における第3サイクルの累積加算で確定した下位の4
ビットがSROレジスタ33の上位4ビットに供給されてSRO
レジスタ33は「P3−P00000」となっている。また、この
SROレジスタ33の内容はシフタ部5でシフトされ、シフ
タ部5の出力は「0000P3−P0」になっている。この第4
サイクルにおいては既に部分積乗算部1における部分積
和PSの演算が終了しているのでMULには情報は存在しな
い。ALU3においては前の累積加算結果X・Y<3:0>に
部分積乗算部1から出力されている部分積和PSであるX
・Y<7:4>を累積加算している。
第5サイクルになると、ALU3における第4サイクルの
累積加算で確定した下位4ビットがSROレジスタ33の上
位4ビットに供給されてSROレジスタ33は「P7−P0」と
なり、乗算の下位8ビットがセットされている。シフタ
部5および部分積乗算部1は既に動作が終了している。
また、ALU3にはこの乗算の上位8ビットがセットされて
いる。なお、この演算結果に対して補正が必要な時に
は、乗数Yの最上位ビットからY7・X+X・Y=Sの補
正を行なう。上述したように、ブースのアルゴリズムは
有符号で乗算を行なうので、無符号の場合には有符号か
ら無符号への変換補正が必要である。また、第6サイク
ルでは補正が必要な時のためにXの最上位ビットからX7
・Y+S′の演算を行ない、その結果を同じサイクルで
所望の行先に転送し、更に第7サイクルではSROレジス
タ33にセットされている下位の乗算結果をまた所望の行
先に転送している。
本実施例の乗算回路は部分積乗算部1,ALU3、シフタ部
5の3ブロックで構成され、これらのうちALU3とシフタ
部5は通常のマイクロプロセッサに既に設けられている
ものを使用可能であり、新たに必要とするものは部分積
乗算部1のみであるので、マイクロプロセッサ用のLSI
の中に同時に集積化するのに非常に適しているととも
に、比較的ハードフェアの量が少なくてよいため、コス
トパーフォーマンスが良いLSIを実現可能である。並列
方式およびパイプライン方式の素子数とクロック数を一
例として比較すると、並列方式では11,800個のトランジ
スタ素子が必要であるのに対して、パイプライン方式は
1,900個のトランジスタ素子でよく、並列方式に比較し
てかなり少ない。また、クロック数は並列方式は4クロ
ックであるのに対して、パイプライン方式では13クロッ
クとなっている。
〔発明の効果〕
以上説明したように、この発明によれば、乗数を所定
の複数桁ずつ分割して作成した複数の部分乗数のうち2
つの部分乗数の各々と被乗数との掛算によって形成され
る2つの部分積を加算して作成される部分積和を複数の
部分乗数のすべてについて順次作成し、このすべての部
分積和を順次累積加算して積を求めているので、直列乗
算方式に比較してかなり高速が可能であるとともに、並
列乗算方式に比較してはハードウェア数が非常に少な
く、またブースの方式に比較しては部分積を同時に2つ
加算しているためにほぼ2倍の高速化が可能となり、経
済的な回路構成で比較的高速な乗算動作が達成されてい
る。
【図面の簡単な説明】
第1図はこの発明の一実施例に係わる乗算回路のブロッ
ク図、第2図は第1図の乗算回路が適用されるCPUのブ
ロック図、第3図は第1図の乗算回路に使用される部分
積乗算部1の回路ブロック図、第4図乃至第8図は第1
図の乗算回路の原理および作用を説明するための図、第
9図は第1図の乗算回路の作用を示すタイミング図であ
る。 1…部分積乗算部 3…ALU 5…シフタ 31…MROレジスタ 33…SROレジスタ 41,43…部分積発生部
フロントページの続き (56)参考文献 特開 昭59−184945(JP,A) 特開 昭60−235240(JP,A) 特開 昭56−72739(JP,A) 堀越 彌監訳「コンピュータの高速演算 方式」(株)近代科学社(昭55−9−1) P.129−156

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】乗数を保持する第1のレジスタと、前記第
    1のレジスタに接続され、この第1のレジスタの内容を
    右にシフトするシフタと、被乗数を保持する第2のレジ
    スタと、前記第2のレジスタに接続され、前記第1のレ
    ジスタから前記乗数を構成するビットの一部を下位から
    順番に入力し、前記一部のビットと前記被乗数との部分
    積を計算する部分積発生回路と、この部分積発生回路で
    計算された部分積を累積加算して、前記被乗数と前記乗
    数との積を計算する部分積加算回路とからなり、前記シ
    フタによるシフタ処理と、この部分積発生回路で計算さ
    れた部分積の計算の処理と、前記部分積加算回路による
    部分積の加算の処理は並列に行われ、少なくともこれら
    3つの処理を構成ステージとするパイプライン方式によ
    って乗算を行う乗算回路であって、前記部分積加算回路
    の出力の一部で、乗算結果として確定した下位のビット
    は、前記第1のレジスタの上位のビットに順次入力さ
    れ、そこで保持されることを特徴とする乗算回路。
  2. 【請求項2】前記部分積発生回路は、2次のブースのア
    ルゴリズムに従って部分積を計算することを特徴とする
    請求項1に記載の乗算回路。
JP61069749A 1986-03-29 1986-03-29 乗算回路 Expired - Lifetime JPH0831025B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP61069749A JPH0831025B2 (ja) 1986-03-29 1986-03-29 乗算回路
US07/022,968 US4807175A (en) 1986-03-29 1987-03-06 Booth's multiplier

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61069749A JPH0831025B2 (ja) 1986-03-29 1986-03-29 乗算回路

Publications (2)

Publication Number Publication Date
JPS62229330A JPS62229330A (ja) 1987-10-08
JPH0831025B2 true JPH0831025B2 (ja) 1996-03-27

Family

ID=13411757

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61069749A Expired - Lifetime JPH0831025B2 (ja) 1986-03-29 1986-03-29 乗算回路

Country Status (2)

Country Link
US (1) US4807175A (ja)
JP (1) JPH0831025B2 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4972362A (en) * 1988-06-17 1990-11-20 Bipolar Integrated Technology, Inc. Method and apparatus for implementing binary multiplication using booth type multiplication
US4965762A (en) * 1989-09-15 1990-10-23 Motorola Inc. Mixed size radix recoded multiplier
US5150322A (en) * 1990-06-05 1992-09-22 Vlsi Technology, Inc. Mixed-radix serial/parallel multipliers
US5289398A (en) * 1990-08-07 1994-02-22 Matsushita Electric Industrial Co., Ltd. Small-sized low power consumption multiplication processing device with a rounding recording circuit for performing high speed iterative multiplication
US5119325A (en) * 1990-12-04 1992-06-02 Motorola, Inc. Multiplier having a reduced number of partial product calculations
KR100262438B1 (ko) * 1991-05-08 2000-08-01 가나이 쓰도무 연산장치 및 이것을 사용한 비트필드조작 연산방법
JPH05204609A (ja) * 1992-01-13 1993-08-13 Nec Corp 乗算回路
JPH0612229A (ja) * 1992-06-10 1994-01-21 Nec Corp 乗累算回路
US5446909A (en) * 1992-12-11 1995-08-29 National Semiconductor Corporation Binary multiplication implemented by existing hardware with minor modifications to sequentially designate bits of the operand
KR0147942B1 (ko) * 1994-08-12 1998-09-15 배순훈 승산기에서의 부스 레코딩회로
US5960009A (en) * 1996-08-09 1999-09-28 Lucent Technologies Inc. Built in shelf test method and apparatus for booth multipliers
DE19632246C1 (de) * 1996-08-09 1997-10-23 Siemens Ag Verfahren für eine Multiplikationsschaltung zur Multiplikation eines Multiplikanden und eines Multiplikators nach dem Booth-Verfahren in iterativen Schritten
US6183122B1 (en) * 1997-09-04 2001-02-06 Cirrus Logic, Inc. Multiplier sign extension
US5892699A (en) * 1997-09-16 1999-04-06 Integrated Device Technology, Inc. Method and apparatus for optimizing dependent operand flow within a multiplier using recoding logic
FR2775369B1 (fr) * 1998-02-26 2001-08-03 Sgs Thomson Microelectronics Procede de mise en oeuvre d'une multiplication modulaire specifique relative a la methode de montgomery
DE60015119D1 (de) * 2000-08-01 2004-11-25 St Microelectronics Sa Sättigung in einer Arithmetik-Einheit
US8615540B2 (en) 2009-07-24 2013-12-24 Honeywell International Inc. Arithmetic logic unit for use within a flight control system
US8933731B2 (en) 2013-03-11 2015-01-13 Freescale Semiconductor, Inc. Binary adder and multiplier circuit
US9032009B2 (en) 2013-03-11 2015-05-12 Freescale Semicondutor, Inc. Multiplier circuit
US9519460B1 (en) 2014-09-25 2016-12-13 Cadence Design Systems, Inc. Universal single instruction multiple data multiplier and wide accumulator unit

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4153938A (en) * 1977-08-18 1979-05-08 Monolithic Memories Inc. High speed combinatorial digital multiplier
US4168530A (en) * 1978-02-13 1979-09-18 Burroughs Corporation Multiplication circuit using column compression
JPS57141753A (en) * 1981-02-25 1982-09-02 Nec Corp Multiplication circuit
US4575812A (en) * 1984-05-31 1986-03-11 Motorola, Inc. X×Y Bit array multiplier/accumulator circuit

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
堀越彌監訳「コンピュータの高速演算方式」(株)近代科学社(昭55−9−1)P.129−156

Also Published As

Publication number Publication date
US4807175A (en) 1989-02-21
JPS62229330A (ja) 1987-10-08

Similar Documents

Publication Publication Date Title
JPH0831025B2 (ja) 乗算回路
JPH0612229A (ja) 乗累算回路
JP3667635B2 (ja) 演算装置
JPS6217770B2 (ja)
JPH0713742A (ja) 乗算装置
JPS60163128A (ja) 乗算回路
JP3139466B2 (ja) 乗算器及び積和演算器
US5796645A (en) Multiply accumulate computation unit
JPH0368416B2 (ja)
US6018758A (en) Squarer with diagonal row merged into folded partial product array
JPS62280930A (ja) デイジタル乗算器
JPH0477932B2 (ja)
US5289399A (en) Multiplier for processing multi-valued data
US5870322A (en) Multiplier to selectively perform unsigned magnitude multiplication or signed magnitude multiplication
JP3660075B2 (ja) 除算装置
US4190894A (en) High speed parallel multiplication apparatus with single-step summand reduction
Shawl et al. Implementation of Area and Power efficient components of a MAC unit for DSP Processors
US5954791A (en) Multipliers with a shorter run time
JP2734438B2 (ja) 乗算装置
JP3855491B2 (ja) 乗算器
JPS6259828B2 (ja)
KR100386979B1 (ko) 갈로아체상에서 비트 직렬 승산기의 병렬화 방법 및 이를이용한 직병렬 승산기
JPS593634A (ja) 乗算器
JP2568608B2 (ja) 乗算回路
JP3696307B2 (ja) 積和演算装置