JPH0820942B2 - 高速乗算器 - Google Patents

高速乗算器

Info

Publication number
JPH0820942B2
JPH0820942B2 JP4226142A JP22614292A JPH0820942B2 JP H0820942 B2 JPH0820942 B2 JP H0820942B2 JP 4226142 A JP4226142 A JP 4226142A JP 22614292 A JP22614292 A JP 22614292A JP H0820942 B2 JPH0820942 B2 JP H0820942B2
Authority
JP
Japan
Prior art keywords
register
multiplicand
remainder
multiplier
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.)
Ceased
Application number
JP4226142A
Other languages
English (en)
Other versions
JPH05204608A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH05204608A publication Critical patent/JPH05204608A/ja
Publication of JPH0820942B2 publication Critical patent/JPH0820942B2/ja
Anticipated expiration legal-status Critical
Ceased 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/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • G06F7/5272Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
    • G06F7/5275Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products using carry save adders
    • 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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/509Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
    • 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
    • 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/3832Less usual number representations
    • G06F2207/3844Hexadecimal

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、メインフレームディジ
タルコンピュータに関し、特に、固定小数点演算に最適
であるが、浮動小数点演算に対して最適な幾つかの設計
より速く浮動小数点結果を生成する改良型高速乗算器に
関する。
【0002】
【従来の技術】当業者には良く知られたことであるが、
乗算の積は、乗数の個々のビットの関数として、被乗数
をシフトしかつ加算することにより形成することができ
る。このため、乗数のビット数と同数のポートを有する
加算器が必要となる。比較的小さい乗数とともに繰り返
しアルゴリズムを用いて、ディジットを加算器ハードウ
ェアに保管する。しかし、和をとりかつ桁上げをフィー
ドバックするため、さらにポートが必要とされる。従っ
て、10ビット乗数のディジットの場合、12ポートの
加算器が必要となることになる。
【0003】加数の数を減ずるため、種々の方式が開発
され、乗数内の近接ビットの復号に基づき、被乗数を、
真数の倍数および/または補数をとった倍数の集合にリ
コードする。これらの方式により、加数の数が半分にな
る。上記の例では、10ビットディジットの乗数である
場合、7ポートの加算器が必要となり、5ポートは乗数
の倍数に対して必要であり、1ポートづつが和と桁上げ
に必要になる。加算器ツリーの出力は和および桁上げビ
ットであり、桁上げ伝播加算器(Carry−Prop
agate Adder;CPA)によりまとめて加算
され、最終結果が生成されなければならない。対話型乗
算装置では、乗算結果の1ディジットは各繰り返しの間
に生成される。さらにディジットが生成されると、生成
されたディジットは連結され全体として積が形成され
る。
【0004】米国特許4,769,780号(発明者:
D.C.Chang)には、高速乗算器が開示されてい
る。乗数と被乗数はAおよびBレジスタにそれぞれ格納
される。乗算の結果はレジスタAおよびCに格納され、
乗算結果の低位部分はレジスタAに格納され、乗算結果
の高位部分はレジスタCに格納される。レジスタAの乗
数の11ビットはリコード回路に選択的にゲートされ
る。リコード回路は乗数を5つの制御群にリコードす
る。これらの制御群は、レジスタBに接続されたシフト
ゲートを制御し、被乗数の倍数群を第1桁上げ保存加算
器(Carry−Save Adder;CSA)に選
択的にゲートする。CSAの和および桁上げ出力は第2
CSAに印加され、第2CSAにより、繰り返しごとに
部分積が累算される。スピル加算器(Spill Ad
der;SPA)は、第2CSAに接続されており、乗
算の最終結果の低位部分を生成する。この低位部分は一
時的にSPAレジスタに格納され、かつAレジスタに転
送される。これら積ディジットは、乗算ディジットをシ
フトおよび退避させることにより空にされた位置に格納
される。乗算結果の高位部分は全加算器により生成され
る。全加算器は、第2CSAの和および桁上げ出力、C
レジスタに格納されている高位出力を受け取るように接
続されている。
【0005】この特定の乗算器は、システムクロック周
波数の2倍のレートで、10ビット長のデータパス上
で、各2倍周波数サイクルで演算される。Changの
高速乗算器の2倍周波数クロックは、非常に複雑な機能
である。このような設計には、多くのステージングレジ
スタが必要である。というのは、半サイクルのパスは許
容数のロジックレベル内に効率的に制限される。この制
限により、任意に演算するのに必要なサイクル数が増加
する。
【0006】米国特許4,584,679号(発明者:
S.George他)に記載のものを含む他の乗算装置
は、本質的には対話型ではない。(通常は)4つの部分
積を並行して生成させることにより、乗数値を全て一度
に退避させる。ここで、各部分積は、被乗数を乗数の部
分集合と乗算した結果である。そして、これらの部分積
は最終積に吸収されなければならない。その種の加算器
は高速であるが、常に、ある量のデータのステージング
を伴もない、大量のハードウェアを必要とする。
【0007】メインフレームコンピュータの乗算装置の
設計に多くの場合に共通する特徴は、科学計算データま
たは浮動小数点データについての設計の最適化にある。
その結果、固定小数点データを含むオペレーション、例
えば、商業計算アプリケーションではより普通のオペレ
ーションは最適化をこうむることができる。例として、
Changの装置は、乗算をする前の固定小数点データ
の位置合わせに余分なサイクルを必要とし、フルワード
結果の位置合わせを行って保持(put away)す
るのに別のサイクルを必要とする。
【0008】Changの乗算器とは対照的に、例え
ば、本発明の好ましい実施例では、固定小数点ハーフワ
ード乗算の結果を1サイクルで生じ、商業計算アプリケ
ーションで最も良く見られるフォーマットを1サイクル
で生じる。フルワード乗算は2サイクルで行われる。浮
動小数点または科学計算結果は4サイクルで生成するこ
とができる。この4サイクルというのは従来の科学計算
乗数または浮動小数点乗数に勝る重要な改良点である。
【0009】よって、本発明の目的は、高パフォーマン
スの乗算装置であって、科学計算上(浮動小数点)およ
び商業計算上(固定少数点)の乗算演算をともに行うこ
とができる乗算装置を提供することにある。
【0010】本発明の他の目的は、浮動小数点乗算装置
内で固定小数点実行を最適化する新規なハードウェアを
提供することにある。
【0011】本発明の他の目的は、乗算装置であって、
両オペランドの乗算結果が1実行サイクルで生成される
ような中間ステージングレジスタを用いない乗算装置を
提供することにある。
【0012】本発明のさらに他の目的は、従来技術の固
定小数点フルワード演算に対して、結果を保持(put
away)する間に、1実行サイクルがセーブされる
方法により、結果データの位置を合わせる結果データに
対する新規なバスアーキテクチャを提供することにあ
る。
【0013】本発明のさらに他の目的は、全ての演算フ
ォーマットに対し、積を生成した後のサイクルで、誤り
を通知をすることができる新規なアーキテクチャを用い
て、乗算装置の演算を検査する方式を提供することにあ
る。
【0014】
【課題を解決するための手段】本発明では、高効率の乗
算器が提供される。この乗算器は、被乗数上で動作する
「プリシフト/符号拡張」装置を利用している。この装
置は、従来例のように、データ揃えと被乗数の符号拡張
を行うサイクルを別に必要としないようにして、固定小
数点演算上の1実行サイクルを除いている。
【0015】本発明の好ましい実施例は、16ビット乗
数ディジットを56ビット被乗数に乗する論理回路であ
って、16ビット乗数ディジットを8つの制御信号群に
変換するリコード装置と;「プリシフト/符号拡張」装
置から出力される被乗数をシフトしその補数をとり、8
つの制御信号群に従って、被乗数の8つの倍数にするシ
フト装置と;17ビット長以上による演算の間、前記被
乗数の倍数と、任意選択的に、前のサイクル(繰り返
し)からの保管された部分積とを加算し、和値および桁
上げ値とする9−2桁上げ保存加算器(CSA)と;和
および桁上げ値の低位16ビットを加算し低位(スピ
ル)結果ディジットを生成する2入力スピル加算器(S
PA)と;17ビット長以上による演算の間、和および
桁上げ値の残りの高位ビットを加算し、その結果の高位
部分と、任意選択的に、繰り返し用いられる部分積とを
生成する2入力桁上げ伝播加算器(CPA)とにより乗
算を行うのに必要な論理回路を提供する。
【0016】本発明に係る剰余計算手段は、乗数と被乗
数を乗算して剰余積を生成する剰余乗算手段と、和剰余
とスピル加算器剰余を加算して剰余和を生成する剰余加
算手段と、剰余積と剰余和を比較して剰余比較出力を生
成する剰余比較手段とを備えたことを特徴とする。
【0017】本発明に係る桁上げ保存加算器手段は、9
つの入力と2つの出力を有する桁上げ保存加算器ツリー
を備え、2つの出力は和および桁上げ出力であり、56
ビットの高位部分と16ビットの低位部分に分割される
ことを特徴とする。
【0018】本発明に係る桁上げ保存加算器手段は、桁
上げ伝播加算器手段からの部分積を一時的に格納する第
2記憶手段をさらに備え、第2記憶手段は、桁上げ保存
加算器ツリーの9つの入力の1つに接続されており、前
記乗数は17ビット以上備えることができ、乗算回路は
各サイクルごとに部分積を16ビットだけ右にシフト
し、第2記憶手段に格納されている部分積を桁上げ保存
加算器ツリーにフィードバックする手段を備えたことを
特徴とする。
【0019】
【実施例】つぎの説明では、幾つかのレジスタを参照し
ている。レジスタA,B,およびCを作業レジスタとし
て記載するのが一般的である。これらレジスタには、説
明を簡単にするため、乗数、被乗数、および結果または
積が格納されているとする。Aレジスタには乗数と、浮
動小数点演算に対して結果の低位部分が共に格納され、
Bレジスタには被乗数が格納され、Cレジスタには結果
の高位部分が格納されている。この慣行は上記のCha
ng特許で用いられる慣行である。
【0020】次に、図面を参照して説明する。図1は本
発明の好ましい実施例に係る高速乗算器の主データフロ
ーを示す。本実施例では、1実行サイクルで、16ビッ
トに56ビットを乗算するようになっている。特に、乗
数は最高{3+(1/2)}16ビットディジットを備
えAレジスタ10に保持され、一方、被乗数は56ビッ
トを備えBレジスタ12に保持されている。
【0021】Aレジスタ10は乗数データを保持し、浮
動少数点演算のために、低位積結果を保持する。浮動小
数点演算のデータフォーマットは3つの部分に分かれて
いる。ビット0は符号ビットであり、ビット1−7は指
数データであり、ビット8−63はベースデータであ
る。符号データおよび指数データは、どこか他の処理で
別々にハンドルされるので、図1に示すデータフローで
は必要ではない。高速乗算器により処理されるデータ
は、Aレジスタ10のビット位置8−63にある。低位
積結果はAレジスタ10のビット位置8−23にロード
される。そのプロセッサの個々の部分は、各サイクル
で、Aレジスタデータを右に16ビットだけシフトし、
次の乗数ディジットをビット位置48−63に転送し、
次の低位積ディジットを入れるために空にされる。
【0022】固定小数点演算のに対して、固定小数点、
フルワードデータはビット位置32−63にある。全て
のサイクルで、16ビットを右にシフトし、適正なディ
ジットをビット位置48−63に入れる。固定小数点、
ハーフワードデータはビット位置48−63にある。こ
のデータをシフトする必要はない。というのは、データ
は全て第1サイクルで処理されるからである。
【0023】Bレジスタ12は被乗数データを保持す
る。被乗数はBレジスタ12にロードされ、演算の間
中、そのまま保持される。再び、浮動小数点演算に対し
て、符号および指数情報がビット位置0−7にあり、ベ
ースデータがビット位置8−63にある。固定小数点演
算に対して、データはAレジスタ10の場合のようにビ
ット位置32−63にある。
【0024】Aレジスタ10にロードされた乗数は、リ
コード回路14により直接アクセスされる。リコード回
路14は制御群を生成する。制御群は真数/補数(T/
C)シフトゲート16を制御するために用いられる。T
/Cシフトゲート16はBレジスタ12に格納されてい
る被乗数をプリシフト/符号拡張回路18を介して接続
され、Bレジスタ12に格納されている被乗数を受け取
る。
【0025】プリシフト/符号拡張回路18は、固定小
数点演算の間、被乗数データをプリシフトし、より速い
保持(putaway)を可能にする。ハーフワード演
算に対して、8ビットを左にシフトし、フルワード演算
に対して、24ビットを左にシフトする。どの場合に
も、右側にゼロが追加される。
【0026】IBM3090高速乗算器では、結果を適
正に位置合わせするために、乗算ハードウェアをスター
トする前に、固定小数点乗算マイクロコードにより、オ
ペランドをプリシフトさせていた。ハーフワード演算に
対して、その結果は高位積としてCレジスタに戻され、
一方、スピル加算器レジスタは無視される。この積は4
8ビット長ある。低位の32ビットはその結果として保
持(put away)され、一方、高位ビットは無視
される。フルワード演算に対して、64ビットの結果は
分割され、高位32ビットはCレジスタのバイト4−7
に戻され、かつ、低位の32ビットはAレジスタのバイ
ト1−4に戻される。Aレジスタ値は、シフトにより、
Cレジスタを介して保持(put away)される。
この最後のシフト操作は本発明では必要ではない。
【0027】このマイクロコードによるプリシフトによ
り、パフォーマンスに1サイクル余分にかかる。この機
能は、命令コード(op−code)のうちの命令レジ
スタ(Iレジスタ)のビット2および3により決定され
るシフト量を用いて、本発明に係るハードウェアで実現
される。また、このシフトは、固定小数点演算に対して
符号拡張を必要とし、そして、Bレジスタビット32は
必要な場合には左に伝播される。
【0028】プリシフト/符号拡張回路18の出力はT
/Cシフトゲート16に供給される。T/Cシフトゲー
ト16はリコード回路14からの制御群を見て、被乗数
を左に適正にシフトし、補数を適正にとり、桁上げ保存
加算器(CSA)ツリー20が必要とする倍数を8つ生
成する。倍数が負でなければならない場合は、ここで、
1の補数のみがとられる。その後、「ホット(ho
t)」1がCSAツリー20の適正な位置に注入され、
全2の補数が提供されることになる。この詳細な説明は
後程図5を参照して行う。
【0029】プリシフト/符号拡張回路18で被乗数の
位置合わせが行われた後、Bレジスタ12にある被乗数
の倍数は、リコード回路14によりリコードされ、出力
された乗数から決定され、加算される。T/Cシフトゲ
ート16の被乗数は、最後の制御群を除けば、どの制御
群でも1つのレベルだけシフトされる。ここでは、2レ
ベルが必要である。しかし、これはレベルをクリチカル
パスに加算しない。というのは、この倍数は9−2桁上
げ保存加算器(CSA)ツリー20の「遅れた入力(l
ate input)」を供給するからである。CSA
20は9つの入力ポートと2つの出力ポートを有すると
いう意味で9−2加算器という。
【0030】本発明に係る乗算器は、IBM3090高
速乗算器と同一のリコード方式を利用するが、実現方法
が異なる。特に、16ビットは、乗数データを保持して
いるAレジスタ10から一度に退避される。16ビット
は8つの制御群にリコードされる。リコードと重み付け
については図4を参照して後ほど詳細に説明する。制御
群は、被乗数の8つの倍数のうちのいずれがCSAツリ
ー20で加算されるかを判定する。全リコードをするた
め、乗数ディジットの高位ビットは覚えておき、次の乗
数ディジットの最低位ビットの後に連結されなければな
らない(図4参照)。このビットはリコード回路14に
ラッチされる。
【0031】16ビット乗数は次の8つの群の33個の
制御値にリコードされる。
【0032】 群1(最低位ビット) :0,TL0 , CL0 , TL1 群2 :0,TL2 , CL2 , TL3 群3 :0,TL4 , CL4 , TL5 群4 :0,TL6 , CL6 , TL7 群5 :0,TL8 , CL8 , TL9 群6 :0,TL10, CL10, TL11 群7 :0,TL12, CL12, TL13 群8(最高位ビット) :0,TL14, CL14, TL15, CL15 この表記法では、T,Cはそれぞれ真数および補数を意
味し、LXXはxxビット位置だけ左にシフトし、「0」
はその倍数に対してゼロがゲートインされることを意味
する。IBM3090高速乗算器はこれら21個の値を
ラッチし、次の半サイクルで用いられる。これは本発明
のパフォーマンスを高めるため削除されるステージング
レベルの1つである。
【0033】スピル加算器(spill adder;
SPA)22は全加算器であり、9−2CSAツリー2
0の和と、桁上げビットの低位16ビット、すなわちス
ピルビット位置を加算する。桁上げ値は1ビットだけ左
にシフトされ、適正に伝播されることに注意されたい。
CPA24はSPA22と同様であるが、9−2CSA
ツリー20からの高位56ビットを操作し、高位の和を
生成する。この高位の和は和レジスタ26に格納される
か、あるいは、浮動小数点演算中に、高位積として、高
位積バス30を介してCレジスタ28にゲートされる。
高位バス30はCPA24から出力された56ビット
と、SPA22の高位8ビットとを連結する。浮動小数
点演算中に、CPA24の最も高位の8ビットは「0」
であり、それを図4のテーブル1に示す。符号および指
数ビットは「0」データの替わりにCレジスタ28にゲ
ートされる。符号および指数は処理の他の領域でハンド
ルされるが、それは本発明の一部でないので、図示しな
い。浮動小数点演算に対する指数(指数部)の処理は全
体的にマイクロコード制御される。拡張された演算は、
全てマイクロコード制御により、結果の「部分積」を加
算し、4つの完全な(ロング)倍数として取り扱われ
る。事後正規化が必要な事象では、乗算器は乗算先行ゼ
ロ(MLZ)信号を生成する。この信号により、シフタ
とマイクロコードに、マイクロオーダLF*MLZによ
り、結果を左に4ビットだけシフトすることを連絡す
る。
【0034】固定小数点、フルワード演算の間、SPA
22およびCPA24からの積結果は、全64ビットの
高位積バス30を使用し、固定小数点、ハーフワード演
算に対して、結果は高位積バス30の低位48ビットと
して伝送される。そのバス利用は、図6ないし図8を参
照した次の説明により明らかになるであろう。図6ない
し図8は、サイクルアクティビティおよび結果が、固定
小数点、ハーフワード、固定小数点、フルワード、およ
び浮動小数点に対して通知されるのをそれぞれ示す。
【0035】SPA22の出力はSPAレジスタ32に
格納され、SPAレジスタ32およびSPA22の内容
は低位積バス34にゲートされる。低位積バス34は、
プリシフト/符号拡張回路18によるプリシフトによ
り、通常固定小数点演算に対して、「0」と同一になる
であろう。このように、結果は全てCレジスタ28に含
まれ、プットアウェを非常に容易にする。S/370ア
ーキテクチャの場合と同様に、Cレジスタから浮動小数
点または汎用レジスタにプットアウェされる。浮動小数
点演算中、データの低位8ビットは第1サイクルのため
にAレジスタ10に戻される。その後のサイクルでは、
16ビット、すなわち、SPA22からの8ビットとS
PAレジスタ32からの8ビットが戻される。この保持
(putaway)方式は分かり易くないかもしれない
が、乗数またはAレジスタディジットは常に右揃えさ
れ、1レベルの論理を保管することにより、リコード回
路を簡単にすることができる。これは低位積バス34内
の複数レベルの論理を犠牲にすることなく達成される。
【0036】特定の倍数に対して被乗数の補数がとられ
る場合、2の補数が必要になる。2の補数の生成は、S
PA22により被乗数をシフトしながら反転し、T/C
シフトレジスタ16で1の補数を生成することにより行
われる。
【0037】CL0 ,CL2 ,CL4 ,CL6 ,CL
8 ,CL10,CL12,CL14,およびCL15制御ポイン
トは、それぞれ桁上げを生成して適正なスピル加算器ビ
ット位置に入れられ、その各倍数の2の補数を完了す
る。
【0038】図2を参照して説明する。図2は剰余検出
機構を示す。Aレジスタ10,Bレジスタ12,および
和およびSPAレジスタ26および32は図1と同一部
分を示す。乗数剰余レジスタ36により全ての乗数値に
対して剰余が累算される。累算された剰余は、剰余生成
器38により合計をとるため、剰余を生成する間フィー
ドバックされる。SPA剰余が同様にして生成され、S
PA剰余レジスタ40で累算され、剰余生成器42にフ
ィードバックされる。従って、剰余生成器38および4
2は乗数およびSPAレジスタディジットに対する剰余
をそれぞれ生成する。剰余生成器38および42は、そ
のサイクルでの演算の間、各剰余レジスタからの累算さ
れたデータに加算する回路を含む。
【0039】被乗数剰余レジスタ44は全データ値が一
度利用可能になると、累算器ではない。剰余生成器46
および48は、それぞれ、32ビットおよび56ビット
のデータに対する剰余生成器であるが、全データの値が
一度に利用可能になるのでフィードバックループを有し
ない。剰余値はすぐに有効になる。剰余生成器46は全
固定小数点演算の間、もっぱら被乗数の剰余を生成する
ようになっている。剰余生成器48は共通の剰余生成器
であり、浮動小数点演算に対する被乗数の剰余と、和レ
ジスタ26からの高位積の剰余とを生成するために用い
られている。和データは56ビット長であり、2サイク
ル以上必要とする演算に対して積を生成した後の1サイ
クルで、その剰余が計算される。同一の生成器は任意の
早い方のサイクルで被乗数剰余を生成することができ
る。競合は単一サイクル固定小数点ハーフワード演算に
対して起こるであろう。従って、剰余生成器46は、固
定小数点、ハーフワード被乗数に関して56ビットに替
えて32ビット長で供給される。マルチプレクサ50は
Bレジスタ12または和レジスタ26のいずれかから5
6ビットを選択し、剰余生成器48に供給する。被乗数
剰余レジスタ44は剰余生成器46または48からの出
力をマルチプレクサ52を介して受け取る。剰余生成の
価値がある24ビットは剰余生成器46に保管され、適
正な時点で剰余検出を行うことができるので、回路に有
意に保管される。適正な時点とは全演算に対して積が生
成された後の1サイクルである。マルチプレクサ50お
よび52は、命令コード(オペランド形式)および実行
サイクルカウントの機能として、状態マシンにより制御
され、剰余生成器46または48のいずれかかを判定
し、被乗数剰余を生成するために用いる。
【0040】剰余誤りは剰余乗算54、剰余加算56,
および剰余比較58により検出される。剰余算術によ
り、乗数剰余レジスタ36の乗数剰余と被乗数剰余レジ
スタ44の剰余の積が、剰余生成器48から高位積の剰
余と剰余生成器42からの低位積の剰余の和に等しくな
いとき、誤りがあることが指示される。
【0041】図3に示すシフト/加算データフローは図
1の説明で一時的に参照される。図3には、3−2CS
A要素60,62,64,66,68,70,および7
2の編成を示す。倍数データに対して遅れた入力(la
te input)(BないしHのラベルが付けられて
いる)を使用することができる。倍数Aに対するリコー
ドおよび制御群は、前の乗数ディジットからの覚えてお
いた高位ビット(または、第1サイクルの0)に連結さ
れた乗数の2つの低位ビットの関数である。一方、各連
続するリコードおよび制御群は前の全てのビットおよび
次の2つの高位ビット(図3参照)の関数である。CS
Aツリーに入力される遅れた入力(late inpu
t)を利用することにより、高位倍数の制御生成を簡単
にし、かつAレジスタバス上の乗数ロード量を減少す
る。図1に示す9−2CAS20の入力Iは、図3に示
す前の和の入力により示される。
【0042】9−2CSAツリー20は、適正な場合
は、8つの倍数をとり、かつ前の部分積をとり、倍数お
よび部分積は加算器要素で加算される。図3は中間桁上
げ伝播を含むビットスライス表現を示す。前の和は56
ビット長であるが、左への符号拡張とともに、16ビッ
トの右シフトにより右桁揃えが行われ、適正な重み付け
を行うのに必要な72ビット値を生成する。図3に示す
ように、T/Cシフトゲートの8つの出力は、9−2C
SA20の9つの入力ポートのうちの8つの入力ポート
に印加され、最後のポートは加算器の前のサイクルから
出力された部分積を受け取る。
【0043】2つの出力ポート74および76は72ビ
ット桁上げ出力および72ビット和出力をそれぞれ提供
する。低位16ビット桁上げおよび和出力はSPA22
に供給され、一方、高位ビットはCPA24に供給され
る。CPA24はCレジスタ28に格納されている最終
積の高位ビットを生成する。
【0044】図4はAレジスタ10およびリコード回路
14を簡単に示す。3つの表はリコード回路14の論理
を規定する。表1に、浮動小数点演算の各サイクルに対
し、Aレジスタ10からの全ての乗数ビットのリコード
群分けを示す。固定小数点、ハーフワードおよび固定小
数点、フルワード演算に対して、演算はサイクル1また
はサイクル2の後でそれぞれ停止する。図1で言及した
ように、乗数は既に右桁揃えされている。表2および表
3はリコード制御群規定および重み付けを示す。群Aな
いしGは2つの制御ビット、または4つの条件を生成
し、適正な倍数に重み付けをし、一方、群Hは5つの条
件に対して3つの制御ビットを生成する。この方式はA
rnold Weinbergerにより”Multi
plierDecoding with Lookah
ead” IBM Technical Disclo
sure Bulletin, vol.20,Fe
b.1978, pp.3591−3に開示されてい
る。
【0045】図5はCSAツリー20およびCPA24
でのデータ桁揃えを示すとともに、高位および低位積バ
ス30および34の生成を示す。フィードバックされた
和はデータビット指標とともに文字Iにより表される。
8つの倍数は文字AないしHおよびデータビット指標に
より表される。例えば、A00は倍数Aの最高位ビット
であり、I71は倍数Iのフィードバックされた和の最
低位ビットである。CYは図3に示すCSAツリーでの
位置と位置との間で伝播される桁上げを表す。S00な
いしS71はCSAツリーの和出力であり、Y01ない
しY71はCSAツリーの桁上げ出力である。両者とも
CPA24およびSPA22に送り込み、桁上げを左に
1ビットだけシフトし伝播する。HT0ないしHT15
は、上述したように、2の補数をとるのに必要な倍数に
対して、適正になると挿入される重み付けされた「ホッ
ト」1である。P00ないしP55はCPA24の高位
積出力であり、一方、L00ないしL15はSPA22
からの低位積ビットである。
【0046】高位および低位積バス生成は次のようにし
て行う。固定小数点、ハーフワードの単一サイクルの演
算の間、8ビットを左にシフトして被乗数を予め桁揃え
し、8つのゼロをL08−L15に出現させる。SPA
レジスタ32は第1サイクル(のみ)の間、無視される
ので、L08−L15およびSPA(0:7)を連結し
たものは全てゼロである。結果の低位8ビットはL00
−L07に現れ、一方、残りの積はP00−P55に現
れる。高位積バスであるこれらの値に、保持(put
away)されるデータを連結したものは、高位バスの
ビット位置32−63にある。
【0047】固定小数点フルワード演算の間、24ビッ
トを左にシフトして被乗数を事前桁揃えすることによ
り、第1サイクルの間、ゼロがL00−L15およびP
48−P55上に現れる。その結果、SPAレジスタ3
2には、和レジスタ26の位置48−55のように、ゼ
ロがロードされる。第2サイクル(最終サイクル)の間
のシナリオは同一であるが、和レジスタ26に覚えてお
いた和は、16ビットが右にシフトされている間、フィ
ードバックされる。右端8ビットはゼロであるので、ゼ
ロがL08−L15上に現れ、一方、結果の最低位8ビ
ットはL00−L07上に現れ、残りの積はP00−P
55上に現れる。これらは連結され、64ビットの積は
全て保持(putaway)可能状態のCレジスタ28
に入れられる。
【0048】浮動小数点演算の間、被乗数の事前桁揃え
はなく、結果データはCおよびAレジスタ28および1
0に戻される。そのことを図8および図9に示す。第1
サイクルの間、有効データはL00−L15上に現れ、
SPAレジスタ32にラッチされる。一方、L08−L
15のみが低位積バス34上のAレジスタ10に戻され
る。次のサイクルでは、L00−L015は常に有効で
あり、L08−L015はSPAレジスタ(0:7)に
連結され、Aレジスタ10への出力が低位積バス34上
に生成され、一方、SPAレジスタ32には新しいL0
0−L15データがロードされる。SPAレジスタ
(8:15)32のデータは、前のサイクルの間に低位
積バス34のビット(0:8)上に戻されたデータと常
に同一であることに注意されたい。最後のサイクルの
間、オペランドデータの右桁揃えは、P08−P55お
よびL00−L15のみが有効データを含むことを暗に
示している。L08−L015は、上述したように、S
PAレジスタ(0:7)32に連結され、低位積バス3
4上に出力を生成し、一方、P00−P55およびL0
0−L015が連結され、高位積バス30上に出力を生
成する。P00−P07はゼロであるので、P00−P
07には、プロセッサのどこかで生成された結果符号お
よび指数が重ね書きされる。その結果は、Cレジスタ2
8にゲートされる。図9に、浮動小数点演算の間のAレ
ジスタ10の内容を詳細に記載したので、参照された
い。レジスタCおよびAのデータは今保持(putaw
ay)可能状態になっている。
【0049】図6は固定小数点、ハーフワード命令に対
するサイクル活動を示す。ほとんど全てがサイクル1で
行われる。サイクル1で、プロセスが開始され終了す
る。プロセスは被乗数を左に8ビット(L8)だけプリ
シフトすることにより開始される。次に、乗数の16ビ
ットが全て全被乗数と乗算され、40ビットのデータが
生成され、高位加算器に入力され、8ビットのデータが
低位加算器で生成される。これらのデータは連結され、
48ビットの結果が得られる。48ビットの結果はCレ
ジスタ28に保持(put away)される。そのア
ーキテクチャによれば、高位の16ビットが無視され、
その結果は実際には48ビット結果のうちの右端32ビ
ットである。
【0050】サイクル2では、そのデータはCレジスタ
28にあり、最高および最低結果は和およびSPAレジ
スタ26および32にそれぞれラッチされる。また、デ
ータは、既に有効な乗数剰余レジスタ36(図2)にあ
る。第1サイクルでは、被乗数の32ビットは剰余生成
器46に入力され、被乗数の剰余を生成する。和レジス
タ26のデータおよびSPAレジスタ32のデータは、
図2に示すように、剰余ツリー48および42をそれぞ
れ通過し、サイクル2では、剰余検出がイネーブルにな
り、次のサイクルで、誤り検出回路に通知される。
【0051】図7は図6と同様であるが、固定小数点、
フルワード演算は異なる。サイクル1が開始されると、
被乗数は左に24ビット(L24)だけプリシフトさ
れ、乗数の最初の16ビットが被乗数と乗算される。よ
って、48ビットのデータが生成され、和レジスタ26
にラッチされる。第2サイクルの間、さらに、左に24
ビット(L24)だけシフトされる。乗数の残りの16
ビットが被乗数と乗算され、フィードバックされた前の
部分積を用いて、56ビットの高位データがCPA24
で生成され、8ビットの低位結果がSPA22で生成さ
れる。これら2つの結果は連結され、高位積バス30上
に64ビット結果が得られる。低位積バス34は必要で
はない。同時に、和の最初の48ビットは和レジスタ2
6で使用可能になり、16ビットの低位積は乗数剰余生
成器38に送られ、乗数剰余の最初の部分を得る。ま
た、56ビットの被乗数は剰余生成器48に供給され、
被乗数の剰余を生成する。
【0052】第3サイクルでは、全結果がCレジスタ2
8にラッチされる。高位和は和レジスタ26にラッチさ
れ、低位結果はSPAレジスタ32にラッチされ、そし
て、ここで、全剰余を生成することができる。剰余検出
が行われ、その検出結果が次のサイクルで剰余誤り回路
に通知される。
【0053】図8は浮動小数点演算のプロセスを示す。
ここでは、被乗数は固定小数点のようにプリシフトされ
ないことに注意されたい。また、浮動小数点演算には、
高位および低位積バスが用いられる。そうでない場合
は、図8に示すプロセスは図6および図7の記述に従
う。
【0054】図9は浮動小数点演算の間のAレジスタ1
0の使用例を示す。第1サイクルの間、乗数ディジット
は全てAレジスタ10で使用可能である。再び、乗数
は、全てのサイクルで、右に16ビットだけシフトされ
る。図9は低位積をレジスタの左側にロードする仕方を
示す。プロセスが連続的にサイクルを経て、最終的にサ
イクル5に到達すると、低位積は全てAレジスタ10で
使用可能になる。
【0055】本発明を一好ましい実施例で説明してきた
が、本発明の精神および特許請求範囲内で、本発明を修
正することができることは、当業者により理解されるで
あろう。
【0056】
【発明の効果】以上説明したように、本発明によれば、
上記のように構成したので、科学計算および商業計算に
おける乗算を、より効率良く行うことができるという効
果がある。
【図面の簡単な説明】
【図1】主データフローをサポートする本発明に係る高
速乗算器の好ましい実施例のブロック図である。
【図2】本発明に係る乗算装置の好ましい実施例の剰余
検出回路のブロック図である。
【図3】本発明の好ましい実施例に係るシフト−加算デ
ータフローを示す図1に示す乗算器に用いられる9−2
桁上げ保存加算器(CSA)の詳細なブロック図であ
る。
【図4】本発明の好ましい実施例に係る乗算器のリコー
ド方法を示す簡略化したブロック図および表図である。
【図5】本発明の好ましい実施例に係る乗数の桁揃えお
よび結果の生成を示す表図である。
【図6】固定小数点ハーフワード演算の間の図1ないし
図5の乗数に対するサイクルタイミング図である。
【図7】固定小数点フルワード演算の間の図1ないし図
5の乗数に対するサイクルタイミング図である。
【図8】浮動小数点ロング演算の間の図1ないし図5の
乗数に対するサイクルタイミング図である。
【図9】浮動小数点ロング演算中の“A”レジスタ(乗
数/低位積ディジット)の内容を示すブロック図であ
る。
【符号の説明】
10 Aレジスタ 12 Bレジスタ 14 リコード回路 16 真数/補数シフトゲート 18 プリシフト/符号拡張回路 20 桁上げ保存加算器(CSA) 22 スピル加算器(SPA) 24 桁上げ伝播加算器(CPA) 26 和レジスタ 28 Cレジスタ 30 高位積バス 32 SPAレジスタ 34 低位積バス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ラッセル スコット クック アメリカ合衆国 12601 ニューヨーク州 パウキープシー ハドソン ハーバー ドライブ 20−ビー (72)発明者 ジェイムズ オコナー アメリカ合衆国 12487 ニューヨーク州 アルスター パーク ラセット レーン 8 (72)発明者 ネルソン ス−ミン シ アメリカ合衆国 12538 ニューヨーク州 ハイド パーク バレリー コート 2 (56)参考文献 特開 昭60−27026(JP,A) 米国特許4769780(US,A)

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 第1および第2レジスタにそれぞれ格納
    された乗数および被乗数を乗算し、かつ、積結果を、固
    定小数点データに対して第3レジスタに格納し、浮動小
    数点データに対して前記第3および第1レジスタに格納
    する高速乗算器において、 前記第1レジスタに接続され、前記第1レジスタに格納
    された乗数をリコードし、制御信号出力を生成するリコ
    ード手段と、 前記第2レジスタに接続され、固定小数点データに対し
    て前記被乗数を左にシフトし、および固定小数点乗算サ
    イクルの間符号信号を供給するプリシフト/符号拡張回
    と、 該プリシフト/符号拡張回路の出力端子に接続され、か
    つ、前記リコード手段の制御信号出力により制御され、
    被乗数の選択されたビット群を出力するシフトゲート手
    段と、 該シフトゲート手段の出力端子に接続され、前記被乗数
    の倍数群を加算し、桁上げおよび和出力信号を出力する
    桁上げ保存加算器手段と、 該桁上げ保存加算器手段の低位出力端子に接続され、前
    記乗算の最終結果の低位部分を生成するスピル加算器手
    段と、 前記最終結果の前記低位部分を一時的に格納する記憶手
    段と、 前記最終結果の前記低位部分を前記第1レジスタに浮動
    小数点演算中に転送する低位バス手段と、 前記桁上げ保存加算手段の高位桁上げおよび前記和出力
    信号から前記最終結果の高位部分を生成する桁上げ伝播
    加算手段と、 前記最終結果の前記高位部分を前記第3レジスタに転送
    する高位積バス手段とを備えたことを特徴とする高速乗
    算器。
  2. 【請求項2】 前記第1レジスタに接続され、乗数剰余
    を生成する乗数剰余生成器手段と、 前記第2レジスタに接続され、被乗数剰余を生成する固
    定小数点、ハーフワード被乗数剰余生成器手段と、 前記第2レジスタまたは前記桁上げ伝播加算器手段から
    の出力を選択的に受け取り、前記桁上げ伝播加算器手段
    または前記第2レジスタのいずれかに対して剰余を生成
    する共通剰余生成器手段と、 前記固定小数点、ハーフワード被乗数剰余生成器手段ま
    たは前記共通剰余生成器手段からの出力を選択的に受け
    取り、前記剰余を格納する被乗数剰余記憶手段と、 該被乗数剰余記憶手段に接続され、スピル加算器剰余を
    生成するスピル加算器剰余生成器手段と、 前記乗数剰余生成器手段、前記被乗数剰余記憶手段、前
    記共通剰余生成器手段、および前記スピル加算器剰余生
    成器手段に接続され、誤りが検出されたか否かを示す剰
    余検出出力を生成する剰余計算手段とをさらに備えたこ
    とを特徴とする請求項1記載の高速乗算器。
  3. 【請求項3】 前記乗数は16ビットを備え、かつ、前
    記被乗数は56ビットを備え、 前記プリシフト/符号拡張回路は、被乗数を、固定小数
    点、ハーフワード演算に対して左に8ビットだけシフト
    し、固定小数点、フルワード演算に対して左に24ビッ
    トだけシフトし、浮動小数点演算に対しては被乗数をシ
    フトせず、 前記第3レジスタに格納された積結果データは固定小数
    点演算に対して桁揃えされ、かつその結果データに対し
    てシフトを必要としないことを特徴とする請求項1記載
    高速乗算器。
JP4226142A 1991-09-26 1992-08-25 高速乗算器 Ceased JPH0820942B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US76585991A 1991-09-26 1991-09-26
US765859 1991-09-26

Publications (2)

Publication Number Publication Date
JPH05204608A JPH05204608A (ja) 1993-08-13
JPH0820942B2 true JPH0820942B2 (ja) 1996-03-04

Family

ID=25074705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4226142A Ceased JPH0820942B2 (ja) 1991-09-26 1992-08-25 高速乗算器

Country Status (2)

Country Link
EP (1) EP0534760A3 (ja)
JP (1) JPH0820942B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1122024A (zh) * 1994-08-15 1996-05-08 张胤微 一种任意字长、任意精度的乘法运算方法及乘法器
CN1075646C (zh) * 1996-01-19 2001-11-28 张胤微 一种高速乘法器
GB2345563B (en) * 1997-08-30 2000-12-27 Lg Electronics Inc Digital signal processor
GB2330226B (en) * 1997-08-30 2000-12-27 Lg Electronics Inc Digital signal processor
WO2018192500A1 (zh) * 2017-04-19 2018-10-25 上海寒武纪信息科技有限公司 处理装置和处理方法
CN111381808B (zh) * 2018-12-28 2022-12-09 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备
CN112286490B (zh) * 2020-11-11 2024-04-02 南京大学 一种循环迭代乘加运算的硬件架构及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4769780A (en) 1986-02-10 1988-09-06 International Business Machines Corporation High speed multiplier

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594679A (en) * 1983-07-21 1986-06-10 International Business Machines Corporation High speed hardware multiplier for fixed floating point operands
US4947364A (en) * 1985-10-23 1990-08-07 Hewlett-Packard Company Method in a computing system for performing a multiplication

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4769780A (en) 1986-02-10 1988-09-06 International Business Machines Corporation High speed multiplier

Also Published As

Publication number Publication date
JPH05204608A (ja) 1993-08-13
EP0534760A3 (en) 1993-06-16
EP0534760A2 (en) 1993-03-31

Similar Documents

Publication Publication Date Title
Anderson et al. The IBM system/360 model 91: Floating-point execution unit
US5253195A (en) High speed multiplier
JP3869269B2 (ja) 単一サイクルにおける乗算累算演算の処理
US4228520A (en) High speed multiplier using carry-save/propagate pipeline with sparse carries
US5790446A (en) Floating point multiplier with reduced critical paths using delay matching techniques
US5220525A (en) Recoded iterative multiplier
US5844830A (en) Executing computer instrucrions by circuits having different latencies
US5631859A (en) Floating point arithmetic unit having logic for quad precision arithmetic
US4754421A (en) Multiple precision multiplication device
US5272660A (en) Method and apparatus for performing integer and floating point division using a single SRT divider in a data processor
US6115729A (en) Floating point multiply-accumulate unit
US4893268A (en) Circuit and method for accumulating partial products of a single, double or mixed precision multiplication
US4866652A (en) Floating point unit using combined multiply and ALU functions
US5184318A (en) Rectangular array signed digit multiplier
JPH05233228A (ja) 浮動小数点演算装置およびその演算方法
US5511017A (en) Reduced-modulus address generation using sign-extension and correction
US6728744B2 (en) Wide word multiplier using booth encoding
US5144576A (en) Signed digit multiplier
US4769780A (en) High speed multiplier
US5036482A (en) Method and circuitry for digital system multiplication
US5734599A (en) Performing a population count using multiplication
JPH0820942B2 (ja) 高速乗算器
US6519621B1 (en) Arithmetic circuit for accumulative operation
KR100308726B1 (ko) 고속 산술 장치에서 올림수 예견가산기 스테이지의 수를 감소시키는 장치 및 방법
US3840727A (en) Binary multiplication by addition with non-verlapping multiplier recording

Legal Events

Date Code Title Description
A045 Written measure of dismissal of application

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20060828