JPH0727458B2 - 乗算器 - Google Patents

乗算器

Info

Publication number
JPH0727458B2
JPH0727458B2 JP1260388A JP26038889A JPH0727458B2 JP H0727458 B2 JPH0727458 B2 JP H0727458B2 JP 1260388 A JP1260388 A JP 1260388A JP 26038889 A JP26038889 A JP 26038889A JP H0727458 B2 JPH0727458 B2 JP H0727458B2
Authority
JP
Japan
Prior art keywords
bit
bits
matrix
row
sign
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
JP1260388A
Other languages
English (en)
Other versions
JPH02202632A (ja
Inventor
スタマテイス・ヴアスリイアデイス
エリツク・マーク・シユワーツ
バイク・ムーン・サング
Original Assignee
インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
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 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン filed Critical インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Publication of JPH02202632A publication Critical patent/JPH02202632A/ja
Publication of JPH0727458B2 publication Critical patent/JPH0727458B2/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

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)
  • Image Processing (AREA)

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明は、オーバーラップ式複数ビット走査による2進
数の乗算、より具体的には、ともに符号付き絶対値また
は符号付き2進数である2つの複数ビット2進数を掛け
合わせる乗算器に関するものである。
B.従来技術 1対の2進数を掛け合わせて結果を生成する乗算器は、
数字の形を考慮するとき、実現するのが複雑になる。周
知のように、2進数は、符号ビットを伴う複数個の絶対
値ビットの組合せとして表すことができる。絶対値ビッ
トはその数の絶対値を表し、符号ビットは正または負を
表す。もう1つの表示形式は符号付き2進数であり、こ
れはその数の絶対値の補数化によって表現される。最も
頻繁に使われるのは2の補数である。この表示法では、
元の絶対値の補数化で、その数の符号がその絶対値の表
示に埋め込まれる。
符号付き絶対値表示の場合と同様に、2の補数の符号も
その絶対値から離すことはできないので、どちらの表示
用の乗算ハードウェアでもある表示形の訂正または変換
が必要である。もちろん、訂正及び変換には、追加のハ
ードウェアと時間が必要となる。
符号付き絶対値乗算器を用いて2つの補数の乗算を実行
するには、少なくとも3つの一般的方法がある。第1の
方法では、2の補数オペランドを事前補数化して符号付
き絶対値数をもたらす。得られた符号付き絶対値数を次
に掛け合わせ、結果を事後補数化によって2の補数の形
に戻す。この方法は、ハードウェア及び処理サイクルの
点で追加のコストが必要である。補数化を実行するため
のハードウェアを追加しなければならず、そのための時
間がかかる。事前補数化及び事後補数化を加算器ハード
ウェアで実施すれば、ハードウェアが節約できる。しか
し、そうすれば乗算を実行するのに要するサイクル数が
増し、加算器入力用に乗算ハードウェアを追加すること
が必要になる。
第2の技法では、乗算の前にオペランドを検出して、条
件付きで補数化する。両方のオペランドが正の場合は、
事前補数化も事後補数化も不要である。符号が逆の2つ
の数の乗算には、一方のオペランドの事前補数化と事後
補数化だけが必要である。2つの負の乗算には、両方の
オペランドの事前補数化が必要である。すなわち、オペ
ランドを検出すると、符号付き絶対値の乗算の全体的性
能が向上する。この技法でも、余分のハードウェアと追
加の動作サイクルが必要である。この手法は、2進乗算
器の実施例で最も一般的に使用されている。たとえば、
米国特許第4594679号を参照のこと。
最後に、符号付き絶対値回路を使った2の補数の乗算
が、特殊な形の加算器を使って要素の加減算を実行する
ことによって実現できる。たとえば、S.D.ペサリス(Pe
saris)の論文「40ナノ秒17ビット・アレイ乗算器(A F
orty-ns 17-bit Array Multiplier)」、IEEEコンピュ
ータ紀要(IEEE TRANSACTIONS ON COMPUTERS)、Vol.C
−20(971年4月)、TP442−447を参照のこと。この場
合は、4種の加算器が使用できる必要があるが、それは
特定の技術では完全には実現されないことがしばしばで
ある。乗算マトリックスの作成と操作を必要とする全加
算器が必要である。マトリックス中で、2の補数の乗算
で提示される負の項目の訂正行が既存のマトリックスに
追加される。そのために、追加のハードウェアと、乗算
全体に対する遅延が必要である。
乗算器の設計における大きな進歩は、1対のオペランド
を掛け合わすことのできる乗算器によって得られるもの
であろう。1対にオペランドは共に符号付き絶対値また
は共に2の補数であり、この乗算には、事前補数化、事
後補数化、特殊加算器、マトリックス用の余分の訂正
行、あるいは2の補数の乗算を実行するために追加の分
岐を必要とするオペランド検出のどれも必要でない。
C.発明の概要 本発明の1つの目的は、補数化、オペランド検出あるい
は複雑なマトリックスを必要とせず、2つの符号付き絶
対値オペランドまたは2つの2の補数オペランドを掛け
合わせることができる乗算器を、ハードウェアで実施す
るための新しい方式を提供することにある。
本発明のもう1つの目的は、ハードウェアの基本要素に
わずかな工夫を加えて、動作の実行に追加の時間を要せ
ず、従来技術の乗算器の面倒さのない、符号付き絶対値
乗算器を使って符号付き絶対値または2の補数オペラン
ドの乗算を実行する方式を確立することにある。
本発明のもう1つの目的は、1対の符号付き絶対値オペ
ランドと同じ時間の間に1対の2の補数オペランドを掛
け合わせる、2の補数の乗算用装置を作成することにあ
る。
本発明の1つの利点は、オペランドの最終結果によって
ハードウェアにおける事前及び事後補数化サイクルが不
要なことである。
本発明のもう1つの顕著な利点は、要素の加減算用及び
基本的部分積マトリックスの拡張用の特別な回路が不要
なことである。
本発明によれば、オペランド対の乗算において、部分積
項のマトリックスが、各部分積に符号コード化ビットを
付加するアルゴリズムに従って形成される。2つのnビ
ット・オペランドの場合、乗数オペランドを走査して一
連のビット・グループを得ることにより、マトリックス
が展開される。各グループは連続するs個の乗数ビット
を含み、隣接グループと1ビットずつオーバーラップ
し、s≧3である。マトリックス・アセンブラは、乗数
を被乗数ビット・グループと掛け合わせて得られる部分
積を受け取り、m+1個のオフセット行を含むマトリッ
クスにアセンブルされた一連の部分積を生成する。ただ
し、m=INT[(n−1)/(S−1)]であり、各マ
トリックス行は1つの部分積を含む。マトリックス・ア
センブラには符号コーダが含まれ、一連の乗数ビット・
グループまたは1つの被乗数符号ビットに応答して、部
分積に符号コード化ビットを付加してマトリックスの当
該の行を完成する。最後に、符号コード化ビットが付加
された部分積を加えて2つのオペランドの積を生成する
ように、加算回路が、マトリックス・アセンブラに接続
されている。
下記のアルゴリズムが示すように、符号コーダは、乗数
ビット・グループまたは1つの被乗数符号ビットに応答
して符号コード化ビットを生成する際に、従来技術の符
号付き絶対値オーバーラップ式走査乗算器が、事前補数
化も事後補数化もなしで符号付き絶対値または2の補数
の形のオペランドを乗算できるように、その乗算器を改
善する。
本発明のその他の利点及び目的は、添付の図面を参照し
ながら以下の詳細な説明を読めば明らかになるはずであ
る。
D.実施例 アレイ乗算は、2つのnビット2進数の積を得るための
既知の技法である。広く使われているこうした乗算用の
アルゴリズムは、マックソーリー(MacSorley)の論文
「2進式計算機における高速算術演算(High-Speed Ari
thmetic in Binary Computers)」、PROCEEDINGS OFTHE
IRE、Vol.39(1961年1月)に報告されている、3ビッ
ト走査用オーバーラップ・シフト法である。この走査乗
算技法では、複数ビットの被乗数に複数ビットの乗数を
掛けて、複数ビットの積を生成する。この技法の走査に
は、連続する乗数ビット・グループを取り出して乗数を
「走査」し、被乗数に各ビット・グループを掛けて部分
積項を生成し、それによって必要な部分積の数を有効に
減少させることが含まれる。本出願人に譲渡された1987
年11月3日出願の米国特許出願第116172号には、オーバ
ーラップ式複数ビット走査の代表的技法及び手段が教示
されている。上記特許出願の教示では、乗数のビット・
グループは4つ以上のビットからなる。その特定の実施
例について、上記特許出願を引用により本発明に組み込
む。
上記の特許出願では、オーバーラップ式走査乗算システ
ムは、被乗数がそれで走査される乗数ビット・グループ
のサイズを3より大きくすることによって、修正された
部分積をより少なくマトリックスにアセンブルする。さ
らに、各乗数ビット・グループが、隣接するビット・グ
ループと1ビットだけオーバーラップする。負の部分積
項が生成されるときは、部分積項の拡張として前の行に
「ホット1」がコード化され、したがってそのために行
を追加する必要がなくなる。各行をマトリックスの左端
に拡張する代りに、部分積項の各端部に限られた長さの
コード化拡張幅だけ行が拡張される。
この説明では、符号付き絶対値オペランドを、連続する
n個のビットを含む複数ビット2進数であると考える。
被乗数オペランドXは次のように表示される。
X0X1X2・・・Xn-2Xn-1 ただし、X0は符号ビット、X1〜Xn-1は絶対値をX1からX
n-1へと降順で表す。
同様に、符号付き絶対値の形の被乗数オペランドは、Y0
からYn-1へと番号を付けたn個のビットを含む。ただ
し、Y0は符号ビット、Y1〜Yn-1はY1から降順で表した絶
対値ビットである。
この実施例では、符号付き2進オペランドは、せいぜい
幅(n−(s−1))ビットである。すなわち、符号付
き2進被乗数オペランドはビットX0〜Xn-sを含み、X0
符号ビット、残りのビットはXn-sに向かって降順であ
る。符号付き2進乗数オペランドも同様に表記される。
この実施例では、符号付き2進数の符号ビットのs−1
個の複製が符号ビットの左に付加されて、それらの数に
幅nビットの符号付き絶対値数を与える。
この説明では、下記の表記法を用いた。
Xsm : 被乗数Xの符号付き絶対値表示 ysm : 乗数Yの符号付き絶対値表示 Xtc : Xの2の補数表示 Ytc : Yの2の補数表示 Σ : 求和 Y : 項の排他的OR + : 項の論理的OR 項の論理的ANDは、並置によって表す。
第1図のシステムで、2の補数標識(tc)によって活動
化された桁合わせ/拡張回路10に被乗数Xが供給され
る。tc信号が活動化された場合、Xは2の補数の数であ
る。tc信号が活動化されると、オペランドXの最下位ビ
ットが符号付き絶対値数の最下位ビットと桁合わせさ
れ、符号ビットXがs−1の複製によって拡張されて、
Xをnビット符号付き2進数として表現する。tc信号が
非活動状態の場合、Xは桁合わせや拡張を必要としない
符号付き絶対値数である。3×乗算器14は、標準の左シ
フト/加算法によってXのビットXiに3を掛けて3Xi
生成する。乗数Yは、桁合わせ/拡張回路10と同一の桁
合わせ/拡張回路18に供給される。次いでnビット・オ
ペランドが走査手段20中で走査される。当技術分野で周
知のように、走査手段20は、各ビット集合がsビットを
含み、連続するビット集合が隣接するビット集合と1ビ
ットだけオーバーラップする、一連の乗数ビット集合を
生成する。たとえば、s=4の例の場合、Yの最初の走
査でYの最初の4ビットの値、すなわちY0、Y1、Y2、Y3
が出力される。2回目の走査で値Y3、Y4、Y5、Y6が出力
され、3回目の走査でYの第6ビットから第9ビットま
での値が出力され、以下同様にしてYのすべてのビット
の値が出力される。たとえば、Yが56ビット+符号ビッ
トからなる場合、走査手段20によって19回Yの走査値が
出力される。
走査手段の出力は組合せ回路22に供給され、そこで乗数
ビット集合の各ビットが組み合わされて現走査の係数W
の値を生成する。さらに、Yの現走査値が符号コード化
回路24に供給される。符号コード化回路24は被乗数符号
ビットX0、係数W[0]、及びYの現走査からのビット
を受け取って、部分積に付加されるビットをコード化す
る。
係数、3Xを含むXの値、及び符号コード化ビットはすべ
てマトリックス・アセンブラ26に供給され、そこで、符
号コード化ビットを付加された部分積を各行に含むオー
バーラップした走査マトリックスが1行ずつ生成され
る。このマトリックス28はたとえば主記憶装置またはRA
M記憶装置でよく、そこに現在の結果が記憶される。ま
た、本発明の実施は、桁上げセーブ加算法にも対応でき
る。この方法では、マトリックス全体がアセンブルされ
ず、各行が生成されるたびに以前のすべての行の和と組
み合わされ、最終積が得られるまでその操作が続けられ
る。
次に加算回路でマトリックスが加算されて乗算結果をも
たらす。部分積を組み合わせて結果を生成するのに使用
できる加算回路は多数知られている。たとえば、マトリ
ックスの列を桁上げと和のわずか2項に減らす、1組の
桁上げセーブ加算器ツリーを設けることができる。これ
らの列は、通常は次のサイクルで2:1加算器34によって
加算され、結果をもたらす。この加算器要素の集合は、
たとえば本明細書に組み込んだ前記の特許出願を参照す
れば理解できる。
sビット・オーバーラップ式走査用のマトリックスのコ
ード化に話を移して、浮動小数点式符号付き絶対値表記
法乗算器のハードウェアを使用した2の補数表記法によ
る固定小数点オペランド用乗算器について説明する。固
定小数点演算と浮動小数点演算は、オペランドのロード
後、同数のサイクルで計算される。符号付き絶対値ハー
ドウェアで両方のタイプの乗算を計算するのに必要な変
更について説明する。
符号付き絶対値乗算器 nビットの符号付き絶対値分数をXsmとすると、次式が
成立する。
2つの符号付き絶対値数XsmとYsm′の2つの絶対値を掛
け合わせ、それらの符号は別途処理するものと仮定す
る。そうすると、次のように記述できる。
次式が成立することが証明できる。
ただし、m=INT[(n−1)/(s−1)]、INT=整
数部、sは走査されるビット数でs≧2。
考察しやすいようにs=4とすると、 かつkはjに比例するものとする。ただし、k=(s−
1)j−1。
定理1 SjXsm|Wj|は次のように書き直すことができる。
「ホット1」を追加することが可能である。
ただし、Sj=0ならばXi *=Xi、またSj=1ならばXj *
Xio|W|=LかつL≠K(W[L]はW[K]と相互排他
的)のときW[L]が「オン」。
注:一部のビット位置(π)及びW(L)はjに依存す
る。理解及び表示をしやすくするため、そうした依存関
係は省略した。
証明 |Wj|≦22((SjXsm|Wj|)max=22Xsm)とする
と、符号拡張で値が保存されるので、SjXsm|Wj|は第
2図のように表すことができる。
第2図から、次のことが容易に検証できる。Sj=0なら
ば、θj *はSjXsm|Wj|の正しい表示である。Sj=1な
らば、位置2-(n-1)に「ホット1」を付加しなければな
らない。したがって定理1は成立する。
X0は常に(3X)0に等しいことが観察できる。したがっ
て、π-2=X0 *W[0]。X0=0なので、π-2=X0 *も成
立する。しかし、後で考察する2の補数表記法など他の
表示法では必ずしもこれは成立しない。
SjXsm|Wj|=θjとすると、あらゆるj(1≦j≦m)
について次式が証明できる。
θj=θj *+ζ2-[(n-1)+3] ただし、Sj+1=0ならばδ=0、またSj+1=1ならばδ
=1。j=m+1のとき、次式が成立する。
これは、追従すべき行(または走査)がもうそれ以上な
いのでそれ以上の拡張は不要だからである。W1≧0とす
ると、δ1は常に正であり、可能な「ホット1」を加え
るための余分の行は必要がない。したがって、 (2.5)XsmYsm=θ12-2+θ22-5+…+θj2-[3j-1]+…
θm+1 *-[3(m+1)-1] (2.5)式は、列20から始まり列 2-[3(m+1)-1+n-1]で終わるm+1行を含むマトリック
スを表す。
符号拡張でθj(1≦j<m+1)が変化しないものと
すると、次のように記述できる。
したがって、(2.5)式の第j行は次のように書くこと
ができる。
Φm+1 *についても同様の結論が得られる。
(2.6)式によるΦjの表示は、XsmYsmマトリックスは第
3図に示すように加算したとき、値が変化しないことを
示唆している。2-1かた始まる積の位置が重要だとする
と、位置21、20に対応する積ビットは考慮する必要が
ない。乗算に関しては、第5図のマトリックスは第4図
のマトリックスに対応すると言うことができる。第5図
では、α=π-2すなわちαが積中で重要であることに留
意されたい。本明細書に組み込んだ特許出願では、αを
含む下側の3角マトリックスが次式と等価なことが証明
されている。
ただし、αjはj行目の符号である。ここで、j行目が
負の場合にのみαj=1である。また下側の3角マトリ
ックスが、マトリックスのバンドへの符号コード化と等
価であることも証明できる。このコード化は、次のよう
にしてΦjに中に埋め込むことができる。
定理2 ただし、2≦j≦mがWj<0の場合のみSj=1 証明 拡張が1か0かはSjのみによって決まるので、この符号
コード化はSjに依存する。すなわち、符号ビットX0が常
に0とすれば、Φjが正か負かはSjによって決まる。し
たがって、 ケース1:Sj=0で、すなわちWj≧0ならば これは、Sj=0の場合にj行目に“111"を加えられたと
いう意味であり、本明細書に組み込んだ特許出願で教示
されるように右コード化を置くことによって、定理2の
妥当性が証明される。
ケース2:Sj=0で、すなわちWj<0ならば これは次式と等価である。
この式は、本明細書に組み込んだ特許出願で教示される
ようにSj=1の場合の右コード化“110"に対応する。し
たがって、定理2は成立する。
定理3 証明 ケース1:Sj=0ならば これは、|Φm+1|の前のコード化“1000"と等価であ
る。これは、本明細書に組み込んだ特許出願で教示され
るように最終行の右コード化に対応する。
ケース2:Sj=1ならば これは、|Φm+1|の前のコード化“0111"と等価であ
り、本明細書に組み込んだ特許出願で教示されるように
Sjが負のときの右コード化に対応する。したがって、定
理3が成立する。
定理4 ただし、 証明 定理1、2、3と式(2.6)から簡単にできる。
2の補数の乗算 定理4は、符号付き絶対値の乗算の公式を規定する。こ
のような装置を使って2の補数の乗算が計算できるかと
いう質問が出るかもしれない。次の誘導式は、符号付き
絶対値乗算器をどのように使えば、ハードウェア補正や
余分の遅延なしでかつハードウェアに関する最小限の修
正だけで、符号付き絶対値と2の補数の乗算の両方を計
算することができるかを記述している。2つのnビット
2の補数非分数XtcとYtc′があるものとして、乗算XtcY
tc′を考える。
したがって、次式が成立する。
これは、非分数XtcおよびYtcが、適当に小数点を移動し
ビット位置を名付け直すと、分数と見ることができると
いう意味である。
と置く。Xtc *は、適当に名付け直すと、次のように書く
ことができる。
したがって、 符号付き絶対値乗算器が2の補数の乗算に対処できるこ
とを証明するには、どちらの乗算でも定理1、2、3、
4が成立することを証明しなければならない。小数点を
移動した場合以外は、Xtc′とYtcとXsm′Ysmは2つの一
方の名付け方が違っていても等価な表現となる。
ハードウェアでは、これは、オペランドを最下位ビット
を同じ位置にしてレジスタに強制的に入れることにな
る。これは規約にすぎず、ハードウェアの必要条件では
ない。両方の乗算について定理1が成立することは、容
易に確認できる。
したがって、θj=θj *+δ2-[(n-1)+3]かつθm+1=θ
m+1 * 余分の行(余分の部分積)を回避し、マトリックスを保
存するには、W1≧0であることを証明しなければならな
い。符号付き絶対値数ではY0=0、すなわちW1≧0であ
る。2の補数による表記ではこの式は成立しない。Yn-1
は0または1であり、したがってマトリックスを保存す
る。
(4.1) −4Yn-1+2Yn-2+Yn-3+Yn-40 そのためには、Yn-1=Yn-2=Yn-3=Yn-4となる必要があ
る。これは、マトリックスを保存するには、最初の復号
がすべての符号ビットでなければならないという意味で
ある。定理2と3は成立しない。なぜならば、符号拡張
がコード化されており、符号付き絶対値の乗算でX0=0
だ(すなわち、Xsmが強制的に正にされている)からで
ある。したがって、SjによってΦjの符号が決まる。2
の補数の乗算ではこのことは成立しない。
Xn-1は1または0である。したがって、SjだけでΦj
符号ビットは決まらない。次の定理が成り立つ。
定理5 符号付き絶対値でも2の補数でもΦjの符号は、 によって決まる。ただし、|W|=0の場合のみW(0)
=1であり、XsignはXの最上位ビット、SjはWjの符号
である。
証明 を証明しなければならない。ただし、X0はXの最上位ビ
ット、すなわちXsignである。
ケース1: かつπ-2=XsignVSjo第1表にΦjの符号の計算を記載す
る。
π-2が第1表の計算に従うことは容易に確認できる。す
なわち、XsignVSjからΦjの符号が計算される。
ケース2:|W|=0すなわちW(0)=1かつπ-2=0
(a)から したがって、ケース2の場合に定理5が成立する。
定理6 定理2と3が成立するのは にそれぞれ が代入される場合だけである。ただし、 証明 定理2については、Sjにπ-jを代入するとき、次式が成
立する。
ただし、2≦j≦mかつ したがって、 ケース1:|W|≠0すなわちW(0)=0で、 であることを意味する。
サブケース1:符号付き絶対値 Sjならば したがって、j行目に“111"が加えられている。
Sjならば したがって、j行目に“110"が加えられており、定理2
は成立する。
サブケース2:2の補数の乗算 Sj=0ならば、 Xsign=0の場合、j行目は正で、“111"が加えられて
いる。
Xsign=1の場合、j行目は負で、“110"が加えられて
いる。
Sj=1ならば、 Xsign=0の場合、j行目は負で、“110"が加えられて
いる。
Xsign=1の場合、j行目は正で、“111"が加えられて
いる。
したがって、サブケース2では定理2が成立する。
ケース2:|W|=0、すなわちW(0)=1したがって、 であり、“111"が加えられている。すなわち、ケース2
では定理2が成立する。
定理3については、次式が成立する。
ケース1:|W|≠0すなわち、 でπ-2=(XsignVSj) サブケース1:Sj=0ならば、π-2=Xsign 符号付き絶対値表記を考慮すると、π-2=0であり、Φ
m+1の前に“1000"が加えられている。
2の補数表記では、Xが正の場合はΦm+1の前に“1000"
が付加され、Xが負の場合は“0111"が付加される。し
たがって、サブケース1の場合は定理3が成立する。
サブケース2:Sjc=1ならば、 符号付き絶対値表記では、Φjは負であり、Φm+1の前に
“0111"が付加されている。
2の補数表記では、Xが正でΦjがやはり負であること
を示す場合は“0111"が付加され、Xが負でΦjが正であ
ることを示す場合は“1000"が付加されている。
したがって、サブケース2の場合は定理3が成立する。
ケース2:|W|=0すなわちW(0)=1かつπ-2=0で
“1000"が付加されていることを意味する。すなわち、
ケース2についてはあらゆる場合に定理3が成立する。
符号拡張コード化 1<j≦mのあらゆるΦjについて、3ビットを によって計算して加えなければならない。2つのビット
は1で、第3のビット(b)は次式に等しい。
またj=m+1である行については、4ビットをπ-2
及びπ-2によって計算して加えなければならない。X
signは既知のSjであるが、W(0)は計算しなければな
らない。Sjによって、π-2及び反転が決まり、また前の
行への「ホット1」の加算も決まる。
そのWが与えられている場合、Yk-2、Yk-1、Yk、Yk+1
4ビットを考慮する。Yk-2=1の場合にのみW<0とな
り、W=0は成立しない。
がSj=Yk-2+W(0)。
したがって、 Yk-2=Yk-1=Yk=Yk+1の場合にのみW=0すなわち、 代替コード化 W=0の場合の部分積は、その和が等しい異なる2つの
方法で表すことができる。
先に述べたバージョンでは、コード化法(a)を使用し
た。完璧を期し、かつ制御論理の削減を示すため、バー
ジョン(a)と(b)の両方を使用する等価な方法を示
す。両方のバージョンを採用する場合、次式が成立す
る。
π-2=((XsignW(0))VSj) ただし、Sj=Y(k-(s-2))かつSj+1=Y(k+1)0Y(k-(s-2))
=0の場合Xi *=Xi、Y(k-(s-2))=1の場合Xi *=Xio
つYk+1=0の場合δ=0、Yk+1の場合δ=1。
Wが0でない場合は、以前に証明したのと同様。
π-2=(XsignVY(k-(s-2)))で右コード化が計算され
る。W=0ならば、π-2=Y(k-(s-2))かつSi=Y
(k-(s-2))。Y(k-(s-2))=0の場合は、前述のコード化
もこのコード化もW=0のバージョン(a)での表現を
与える。Y(k-(s-2))=1の場合は、前のコード化はW=
0の(a)による表現をもたらし、このコード化は
(b)による表現を与える。両者は等価なので、このコ
ード化は有効である。したがって、所与の1<j≦mに
ついて、コード化は有効である。j=m+1の場合は、
下記の等価なコード化を使用する。
バージョン(c)は前述の方法で使用され、どちらもY
(k-(s-2))に応じて代替法で使用される。以上、使用す
るハードウェアがより少ない、部分積コード化の代替法
について考察した。このことに関する詳細は、添付の図
表を参照のこと。
定理7 XsmYsmとXtcYtcは、マトリックスPと等価である。ただ
し、 したがって、Φ1は正であることが保証され、次式に等
しい。
また、あらゆるΦjについて、π-1、π0、π1はその行
に対応するSjに応じてXの対応ビットまたはその反転に
等しい。
したがって、任意のjについて かつSj+1=1の場合にのみδ=1。
ただし、XsignはXの最上位ビットであり、 によって計算される。
ただし、Yk-2、Yk-1、Yk、Yk+1はj番目の走査で考慮さ
れるYの4つのビットであり、Yk-2は走査の第1ビッ
ト、Yk-1は第2ビット、Ykは第3ビット、Yk+1は第4ビ
ットである。Sj、π-2はSj=Yk-2によって生成される。
証明 定理4、5、6及び代替コード化法から簡単にできる。
ハードウェアによる実施 次に、バウ(Bough)等の論文「2の補数並列アレイ乗
算アルゴリズム(A Two′s Complement Parallel Array
Multiplication Algorithm)」、IEEEコンピュータ紀
要、Vol.C−22(1973年12月)、pp.1045−1047に示され
ている符号付き絶対値乗算の設計を採用して、同じ乗算
器で2の補数の乗算と符号付き絶対値の乗算の両方に対
処するのに必要な変更について考察する。前記の定理及
び知見に基づいて、次のことが言える。
1.2のオペランドの各ビットを正しく置く。すなわち、
2の補数でも符号付き絶対値でも最下位ビットが同じ位
置にくるようにする。ハードウェアも時間も不要であ
る。
2.XtcとXtcを正しく符号拡張する。すなわち、オペラン
ドを置くときに多重化が必要である。追加のハードウェ
アとしては、XマルチプレクサとYマルチプレクサの符
号ビットからそれぞれ32本及び48本のファンアウトが出
るので、再給電のために10個のバッファが必要である。
3.3×を正しく計算する。余分に1回のORと1回のXOR
(排他的OR)が必要である。
4.j行目を走査する。
5.Sjを正しく計算する。
6.ΦjとΦm+1を作成する。
7.Sjの代りにπ-2を使って符号拡張コード化を作成す
る。このために、18回のXORが余分に必要である。
8.最後の行では、ANDをXORに変更するために6個のセル
が余分に必要である。
9.他のデータとのサイクル同期を行なうために、XREGB
及びYREGに符号拡張用ラッチを追加する。このため、ラ
ッチが3個増える。
一般化アルゴリズム [4]で証明したように、|Wj|≦2(s-2)である。し
たがって、SjXsm|Wj|を表すのに(s−2+n−1)
ビット必要である。したがって、必要ならば「ホット
1」を加えてSjXsm|Wj|を表すことのできるΦj *が存
在する。
関連特許出願では、符号拡張をコード化するために加え
るべきビットの数、すなわち最終行以外のすべての行に
ついてはs−1、最終行ではsを規定している。
1<j≦mのあらゆる走査についてs−1個の符号拡張
追加ビットの最初の走査をもつことによって、最初の行
が正であることを保証しなければならない。これらのビ
ットは、π-2=(XsignVSj)=W(0)によって、Φj
≧0の場合は(s−1)個の1を加え、Φj<0の場合
は(s−2)個の1とその後に0を1個加えるように計
算しなければならない。また、π-2によって、Φm+1
0の場合は1個の0とその後に(s−1)個の1を加
え、Φm+1<0の場合は“1"を1個とその後に(s−
1)個の0を加えるようにsビットが正しく計算され
る。
これらの定理を使って、マトリックスを形成するための
アルゴリズムを定式化する。まず、m+1個の部分積に
よるsビットのオーバーラップ走査を仮定する。ただ
し、m=INT[(n−1)/(s−1)]、INTは整数除
算、nは乗算Yの長さである。加算回路を正しく考慮し
て倍数を計算するためのアプリケーションのハードウェ
ア要件とタイミング要件の比較検討を行なった後、sの
値を求めることができる。
下記の例では、説明のため、n=57、s=4であると仮
定する。この場合は、m+1=19である。これらのどの
値も、この説明の教示を限定するものではない。実際に
は、n、s、mの範囲は、設計上の考慮と上記で確立さ
れた関係のみによって制限される。
第6図に、この実施例のマトリックスを示す。走査がY
の上位ビット、すなわちY0Y1Y2Y3から開始するものと仮
定すると、(j+1)番目の部分積はj番目の部分積に
対して3(=s−1)ビットだけ右にシフトされる。た
だし、iは整数で≧1かつ≧m+1である。第6図では
連続する部分積1−19がマトリックスの行として示して
あるが、各行は最初の2行を除き前の行に対して3(=
s−1)ビットだけ右にシフトされている。各部分積
は、π符号で示される部分乗算の積を含む。さらに各部
分積には符号コード化ビットが付加されている。最初の
部分積にはその右端に符号コード化ビットが付加され、
最後の部分積にはその左端に符号コード化ビットが付加
され、中間のすべての部分積には右端と左端に符号コー
ド化ビットは付加されている。
第6図に示すように、最初の部分積は61ビット、中間の
(2番目から18番目までの)部分積は64ビット、最後の
19番目の部分積は62ビットを有する。π符号は、部分積
の未知の有意ビットを表す。*は部分積のマトリックス
中の未知の有意ビットを表すが、前述のようにこれは符
号付き絶対値乗算と2の補数乗算では異なるやり方で計
算される。値1及び0は部分積の行の既知の有意ビット
を表す。最後に、δ符号は、とくに上記のように「ホッ
ト1」のコード化のための行の未知の有意ビットを表
す。マトリックスを構成する1211ビットのうち、21個
(すべて*で示す)だけがオペランドの形に基づいてコ
ード化される。
第6図のマトリックスの1行目を第7A図に示す。この行
は、第7B図に示した最初の乗数ビット・グループでオペ
ランドXを走査することによって生成される。図のよう
に1行目は幅61ビットで、最後の3ビットは“00δ”の
右コード化である。ただし、δはY3に等しく、次の部分
積の“擬似符号”である。この行の各ビットは−1ない
し56で表示される。ただし、−1と0はオペランドXに
(s-2)または22を掛けて得られるビットである。*で
表される項はなく、この部分積が符号付き絶対値オペラ
ンドでも2の補数オペランドでも同じことを示してい
る。
最初の部分積の各ビットを求めるための方程式は式(A
1)〜(A4)で与えられる。
π(−1)=(X(1)W[4]+3X(1)W[3]+X(0)
[2]+X(0)W[1]) (i=−1の場合) (A1) π(0)=(X(2)W[4]+3X(2)W[3]+X(1)
[2]+X(0)W[1]) (i=0の場合) (A2) π(i)=(X(i+2)W[4]+3X(i+2)W[3]+X
(i+1)W[2]+ X(i)W[1]) (i=1〜56の場合) (A3) 係数は式(C0)〜(C4)で与えられる。
第8A図及び第8B図に、2≦j≦18の場合のj番目の部分
積を示す。これらの行はそれぞれ64ビットを有し、両端
に3つの符号コード化ビットを含んでいる。第8A図で、
左端のビット=“11*”である。ただし、*は符号付き
絶対値オペランドでは2の補数オペランドとは異なるや
り方で求められる。この右端の3ビットは、必要な場合
j+1番目の部分積に「ホット1」を加え、“00δ”で
表示される。ただし、δ=Y(k+1)。j番目の部分積の各
ビットは−1ないし56で表示され、左端のコード化の場
合は−4−3−2で表示される。第8B図に、乗数Yをど
のように走査するとj番目の部分積が生成されるかを示
す。第8B図で、連続する4つの乗数ビットY(k-2)−Y
(k+1)は被乗数Xを走査して、j番目の部分積を生成す
る。(j+1)番目の部分積を走査するための乗数ビッ
ト・グループは、第8図のビット・グループとY(k+1)
1ビットだけオーバーラップする。j番目の部分積の各
ビットを求めるための方程式は式D(1)〜D(7)で
与えられる。
π(−4)=1 (D1) π(−3)=1 (D2) π(−2)=−(Y(k-2)V(X(0)−W[0]))(D3) π(−1)=Y(k-2)V(X(1)W[4]+3X(1)W[3]
+ X(0)W[2]+X(0)W[1])(i=−1の場合) (D
4) π(0)=Y(k-2)V(X(2)W[4]+3X(2)W[3]+ X(1)W[2]+X(0)W[1])(i=0の場合)(D5) π(i)=Y(k-2)V(X(i+2)W[4]+3X(i+2)
[3]+ X(i+1)W[2]+X(i)W[1])(i=1〜56の場合)
(D6) δ=Y(k+1) (D7) j番目の行に対するビットπ(−2)の決定は排他的OR
(XOR)項であることが認識される。定理7に関する上
記の考察を考えると、第1図の乗算器が符号付き絶対値
オペランドに限定される場合、式(D3)の左辺はY(k-2)
のみを含むことが認められる。ただし、符号付き絶対値
オペランドと符号付き2進オペランドの両方に対処する
ため、このビットは式(D3)に基づいて求める。したが
って、j番目の行の符号コード化は、j番目の乗数ビッ
ト・グループから導かれたビットY(k-2)または被乗数の
符号ビットX0に依存する。
第9A図に、マトリックスの最後の行に含まれる19番目の
部分積を示す。図のように、右辺のコード化はなく、そ
の後のマトリックス行はなく、したがって場合によって
は「ホット1」をコード化するための要件もない。左辺
のコード化は、π(−5)ないしπ(−2)の4ビット
を含んでいる。19番目の行の各ビットに対する方程式は
次式で与えられている。
π(−5)=−(Y(54)V(X(0)−W[0])) (E1) π(−4)=(Y(54)V(X(0)−W[0])) (E2) π(−3)=(Y(54)V(X(0)−W[0])) (E3) π(−2)=(Y(54)V(X(0)−W[0])) (E4) π(−1)=Y(54)V(X(1)W[4]+3X(1)W[3]
+ X(0)W[2]+X(0)W[1])(i=−1の場合) (E
5) π(0)=Y(54)V(X(2)W[4]+3X(2)W[3]+ X(1)W[2]+X(0)W[1])(i=0の場合)(E6) π(i)=Y(54)V(X(i+2)W[4]+3X(i+2)
[3]+ X(i+1)W[2]+X(i)W[1])(i=1〜56の場合)
(E7) 式(E1)〜(E4)が示すように、第1図の乗算器は、19
番目の乗数ビット・グループの最初のビットY54を被乗
数オペランドの符号ビットX0を含む式と排他的ORするこ
とにより、符号付き絶対値オペランドと符号付き2進オ
ペランドの両方に対処する。
以上、57ビット被乗数の4ビット・オーバーラップ走査
のためのマトリックスを詳しく示してきた。第6図に示
すように、マトリックスの中間の17行はそれぞれ前のマ
トリックス行からs−1ビットだけずれている。ただ
し、2行目は1行目からずれていず、また最後の行はそ
の直前の行から2ビットずれている。当業者には自明の
如く、マトリックス行に対する上記の方程式を、符号ビ
ットは数えずにn−1ビットを有する乗数の場合に一般
化することができる。その場合、各部分積はせいぜい
((n−1)+(s−2))ビットしか含まず、中間の
部分積に対する右端と左端のコード化はそれぞれs−1
ビットとなる。さらに、2行目から最後から2行目まで
はs−1ビットだけ右にずれている。
一般の場合のマトリックス全体は幅2(n−1)ビット
で、m+1個の部分積を有する。一般マトリックスの1
行目は((n−1)+(s−2)+(s−1))ビット
を含み、最初の((n−1)+(s−2))ビットは部
分積で、右端にs−1ビットが付加されている。付加さ
れたビットはs−2個の0とその後にδを1個含む。δ
は第2の部分積に対する「ホット1」であり、Y(s-1)
よって決まる。この場合、Y0が最上位ビットで、符号付
き絶対値乗数の場合は符号ビットでもあり、補数化2進
乗数の場合はY0ないしY(s-1)はすべて符号ビットに等し
い。
一般の場合のj行目(ただし2≦j≦m)について、各
行は幅((n−1)+(s−2)+2(s−1))ビッ
トで、((n−1)+(s−2))ビットは部分積を表
し、各行の左端と右端にはそれぞれ符号拡張及び「ホッ
ト1」の可能性をコー化するためにs−1個の符号コー
ド化ビットが付加されている。各左符号コード化はs−
2個の1とその後に*を1個含む。これらのビットは
(−(2s−4))ないし(−(s−2))で表示され
る。右コード化は、S−2個の0とその後にδ=Yk+1
1個含む。この部分積は位置(−(s−3))ないし
(n−1)にビットを有する。
一般の場合の部分積マトリックスの(m+1)番目、す
なわち最後の行は((n−1)+(s−2)+s)ビッ
トを有する。この行では、部分積を表すのに(n−1+
s−2)ビットが必要であり、部分積の左端にsビット
が付加されている。s個のコード化ビットはすべて*で
表示される。
以上、マトリックスについて説明したので、第10図ない
し第17図を参照してそれを生成するための手段を理解す
ることができる。これらの図では、4ビット・オーバー
ラップ走査を使用した例を掲示する。第10図には、マト
リックス・アンセブラが詳しく示しあり、アセンブラ26
は部分ビット生成機構40と行生成回路42を含んでいる。
部分ビット生成機構は、式(A1)〜(A3)、(D4)〜
(D6)、及び(E5)〜(E7)を参照すると理解できる。
これらの式は第6図のマトリックスの各行に対する部分
積ビットπ(−1)−π(i)を生成するためのもので
ある。部分ビット生成機構40は、これらの式で必要とさ
れるように、X、3X及びW[1]〜W[4]を組み合わ
せる。行生成回路42は生成された項をYk-2と組み合わせ
て、マトリックスの中間及び最後の行の部分積ビットを
生成し、また符号コーダと協働して、Yk-2、X0及びW
[0]を組み合わせて必要な符号コード化ビットを付加
する。行生成回路42は、上記の第6図ないし第9B図で示
したように、符号コード化ビットが付加したm+1個の
シフトした部分積の列を生成する。
マトリックスをアセンブルする前に、必要ならば、第11
図及び第12図に示すようにオペランドを桁合わせし拡張
する。第11図で、レジスタ50は上記のようにY0〜Yn-1
nビットの符号付き絶対値乗数を記憶するための端部記
憶空間を含む。ビットY0は符号ビットであり、かつ符号
付き絶対値乗数の最上位ビットである。ビットYn-1はこ
の乗数の最下位ビットである。2の補数の形の符号付き
2進乗数Ytcは、n−(s−1)ビットを含むように制
約されている。これらのビットは最上位ビットかた順に
ビットY0ないしビットYn-stcへと延び、ビットY0は符号
ビットである。本発明を実施するに際しては、最初の部
分積の絶対値がすべて0となるようにするために、符号
付き2進乗数の前にs−1ビットが付加されている。こ
れらのビットは符号ビットY0の複製である。これは、た
とえば符号付き2進乗数をレジスタ50の下位n−(s−
1)ビット位置に入れ、Y0をマルチプレクサ52で多重化
してレジスタ50の最初のs−1ビット位置に入れること
によって実行される。この場合、マルチプレクサ52は、
たとえば2の補数乗数を示す信号tcを受けたときだけ、
符号付き補数乗数の符号ビットを多重化してレジスタ50
の最初のs−1ビットに入れる。
第12図を検討するとわかるように、符号付き2進乗数X
tcは、レジスタの下位ビットに入れることによって符号
付き絶対値被乗数と桁合わせされ、符号ビットはtc信号
に応答してマルチプレクサ62によって多重化されて上位
s−1ビットに入れる。そうではなくXが符号付き絶対
値オペランドの場合は、最上位ビットから順にレジスタ
60に入れられる。
係数W[0]〜W[4]を生成する組合せ回路22を第13
A図ないし第13E図に詳しく示す。これらは式それぞれ
(C0)〜(C4)を具体化したものである。図のように、
係数は、被乗数を走査して現マトリックス行を生成する
現乗数ビット・グループの各ビットに応答して生成され
る。
部分ビット生成機構を第14図に示す。第14図では、58個
の回路が並列に接続され、Xの値及び係数W[1]〜W
[4]に応答する。各回路は1個の部分ビットを生成
し、それを使っれ第6図のマトリックスの各行ごとに58
個の部分積ビットのうちの1ビットが生成される。した
がって、ANDゲート70〜73とORゲート74から構成される
回路は、X1、3X1、X0及び4つの係数W[1]〜W
[4]を組み合わせて、部分積中のπ(−1)に対する
部分ビットを生成する。部分ビット0は、X0、X1、3X2
及びX2を4つの係数と組み合わせるようにORゲート84に
接続された4個のANDゲート80〜83によって生成され
る。部分ビットπ(i)は、4つの係数をXi、Xi+1、3
Xi+2及びXi+2と組み合わせるように接続された4個のAN
Dゲート90〜93及びORゲート94からなる回路によって生
成される。
部分ビットπ(−1)用の回路に話を戻すと、ANDゲー
ト70〜73はそれぞれ2入力1出力ゲートで、各出力がOR
ゲート74の当該の入力に接続されている。ANDゲート70
はX1をW[4]と組み合わせ、ANDゲート71は3X1をW
[3]と組み合わせ、ANDゲート72はX0をW[2]と組
み合わせ、ANDゲート73はX0をW[1]と組み合わせ
る。式(A1)を検討すると、最初の部分ビット回路が実
際に最初の部分積に対するビットπ(−1)を生成する
ことが確認できる。式(D4)及び(E5)を検討すると、
最初の部分ビットがYk-2と排他的ORされる項を生成する
ことが確認される。同様にして、残りの部分ビット回路
は、式(A2)及び(A3)によって必要とされる最初の部
分積に対するビットπ(0)及びπ(i)を生成する。
第6図のマトリックスの中間及び最後の行については、
残り部分ビット回路はYk-2と排他的ORされる項を生成す
る。このようにして、被乗数の1回目の走査中に、第14
図の部分ビット回路は第6図のマトリックスの1行目を
形成する部分積を生成する。残りの走査では、部分ビッ
ト回路は、部分積ビットを生成するために現在走査中の
乗数グループのビットの1つと排他的ORされる値を生成
する。
第15図は、マトリックス・アセンブラ26の、第6図のマ
トリックスの1行目をアセンブラする部分を示す。部分
ビット生成機構40の出力は、レジスタ100(1)で示されて
いる、最初の部分積行のための記憶位置に直接送られ
る。レジスタ100(1)の最初の58ビットは、部分ビット生
成機構40から出力されたビットを、最上位ビットから順
に直接受け取る。この点に関連して、それらの最上位か
らの順序はπ(−1)π(0)・・・π(i)であり、
式(7.1)で与えられる。符号コード化回路24が最初の
部分積項の右端に境界ビットを付加するよう動作する様
子も第15図に示されている。前述のように、最初の部分
積については、部分積項の右端にs−1ビットが付加さ
れる。これらのビットは、その後に続く部分積が正の場
合はすべて0である。しかし、後に続く部分積が負の場
合は、最初の部分積の右に付加されるビットは、s−2
個の0とその後に1が1個である。上記で証明したよう
に(最初の行Y3に対する)次の行の符号はYk+1で与えら
れるので、第15図の符号コード化回路24は、記憶位置10
0(1)の最後の3ビット位置に供給するビット線110、11
2、114を含んでいる。ビット線110及び112は論理レベル
“0"にハードワイヤ接続され、ビット線114はY3の値に
応答する。したがって、Y3が論理レベル“0"のとき、1
行目の符号値は0となり、次の行が正であることを示
す。一方、Y3が1の場合、デルタの値は1となり、次の
マトリックス行の符号が負であることを示す。
第16図は、本発明に基づくマトリックス行2ないしmの
生成を示す。第16図で、部分ビット生成機構40が行生成
回路42に接続されている。行生成回路40は排他的OR(XO
R)ゲート120-1〜120iから構成される。各XORゲート
は、部分ビット生成機構40からの当該の部分ビットと乗
数ビット・グループのビットYk-2を入力として受け取
る。行生成回路のXORゲートの出力は、レジスタ100(j)
の、マトリックス行jに対する記憶位置を表す当該のビ
ット・セルに接続されている。マトリックスのj行目の
部分積の58ビットは最上位ビットから順にπ(−1)か
らπ(i)へとなっていることが認められる。j行目の
部分積の右端に付加されるs−1ビットは、先に第15図
に関して説明したように符号コード化回路24内で生成さ
れる。この点に関連して、s=4なので、j番目の部分
積の左端に付加するため3個の符号コード化ビットが生
成される。部分積項が正の場合、コード化はs−1個の
1であり、負の場合はs−2個の1とその後に0が1個
である。第16図で、線115及び116は論理“1"に恒久的に
ハードワイヤ接続されている。ビット線117は排他的NOR
(XN)ゲート142の出力に接続されている。XNゲート142
への入力は、Yk-2と、X0を−W[0]と組み合わせたAN
Dゲート140の出力である。このように、マトリックスの
j行目は式(7.2)によって与えられる例に合致する。
第6図のマトリックスの(m+1)行目の形成を第17図
に示す。第17図で、レジスタ100(m+1)は、マトリックス
の最終行が記憶される記憶位置を示す。その行の部分積
を構成する58ビットが、第16図と同様に部分ビット生成
機構40と行生成回路42によって生成される。最終行の場
合、部分積の左端にs個のコード化ビットが付加されて
行が完成する。この点に関連して、s=4、かつ4ビッ
トはπ(−5)ないしπ(−2)である。π(−5)に
ついては、XNゲート152はY54(最後の乗数ビット・グル
ープではYk-2)を、X0と−W[0]を組み合わせたAND
ゲート150出力と組み合わせる。ANDゲート150とXORゲー
ト154の組合せは、式(E2)〜(E4)のそれぞれを満足
する。したがって、上記の代替符号コード化法の考察で
示したように、部分積m+1の左端に“0111"と“1000"
のどちらかが付加されることは自明である。
s=4、n−1=56、m+1=19であるこの実施例の場
合について、第6図のマトリックスの導き方について説
明する。第6図のマトリックスの各行は、被乗数Xを乗
数Yの一連のオーバーラップしたビット・グループの1
つで走査することによって生成される。最初の部分積
は、被乗数をビットY0ないしY3で走査することによって
得られ、第2の走査にはビットY3ないしY6が関与し、以
下同様である。乗数Yのこの除算では19回走査を行な
い、したがって19個の部分積が生成される。
マトリックスを作成する際、1行目と最終行以外のすべ
ての行の部分積項の各端にs−1ビットが付加されて、
それらの長さ及び変位が一様になる。この付加でマトリ
ックスも「得られない」。各部分積は58(=n−1+s
−2)ビットで表される。負の部分積は有効に1の補数
にされ、前の部分積を付加して「ホット1」を加えられ
ると2の補数となる。したがって、負の積を2の補数で
はなく1の補数として表すことをするため、最後の部分
積以外の各部分積の右にs−1ビットが付加される。部
分積jが負の場合、それは1の補数として表される。1
の補数化された(j−1)番目の部分積の右に001を付
加し、j行目のπ(n−1)と桁合わせすると、それら
の部分積が加えられるとき、部分積jは2の補数の形に
なる。もちろん、000は、正に部分積の前の行の各部分
積の右に付加される。
最後に、中間の各部分積の左に3ビット付加される。こ
れは、負の部分積の符号を拡張するために行なわれる。
この3ビットは、部分積が正の場合は111、負の場合は1
10である。最後の部分積は、右端にsビットのコード化
が付加される。それは積が負の場合は0111、正の場合は
1000である。
このようにして、1行目が61個の有意ビットを含み、次
の17行が64個の有意ビットを含み、最終行が62個の有意
ビットを含む、オーバーラップした一団となった走査マ
トリックスが形成される。マトリックスの各行は、前の
行に対して右に3ビット位置だけシフトされる。1行目
の部分積は左3ビットの符号拡張を有さないので、1行
目と2行目は同じ列から始まる。最終行は右にビット拡
張を有さないので、最終行とその直前の行は同じ列で終
わる。また最終行は左に4ビット拡張されているので、
その直前の行の右2ビットの位置から始まる。
このマトリックスを、桁送りセーブ加算器ツリー技術を
使用して積に還元することができる。たとえば、第18図
の桁送りセーブ加算器ツリーは17個の桁送りセーブ加算
器CSA1〜CSA17を含んでいる。この加算器構造では、第
6図のマトリックスの3行を6組と7組目の1行に分割
する必要がある。最初の6組、たとえば1〜18は、桁送
りセーブ加算器ツリーの最初の段CSA1〜CSA6で処理され
る。ツリーの第2段では、縮小された部分積項マトリッ
クスが組み合わされる。表示C1、S1、C2、S2、C3、S3、
C4、S4、C5、S5、C6、S6は、第3図のツリーの第1段の
桁送りセーブ加算器からの当該の桁送り出力及び和出を
示す。このとき3行が4組あり、CSA7〜CSA10からなる
ツリーの第2段にそれが加えられる。
桁送りセーブ加算器ツリーの第3段は、第2段から得ら
れた縮小マトリックスを加える。このマトリックスはこ
のとき3行を3組含み、最後の組はCSA13中で加えられ
る元のマトリックスの最終行を含む。
桁送りセーブ加算器ツリーの第4段は、それぞれ3行を
2組含むさらに縮小されたマトリックスを加える。1組
目はCSA14中で加えられ、2組目はCSA15中で加えられ
る。桁送りセーブ加算器の第5段はCSA16からなり、3
つの入力C14、S14、C15を1組だけ加えなければならな
い。出力S15から導かれる余分の行は、第18図に示すよ
うにツリーの第6段用にセーブされる。マトリックスの
部分積項の最後の3行は、桁送りセーブ加算器CSA17中
で加えられる。
第1図に戻ると、桁送りセーブ加算回路30の出力2入力
加算器34の前に置かれたレジスタ32は、CSA17から出力
される2つの縮小マトリックス行を記憶する。この2行
が加算器34に供給されて、オペランドXとYの乗算によ
り積を生成する。
この説明では、下記の表記法を用いた。
Xsm : 被乗数Xの符号付き絶対値表示 Ysm : 乗数Yの符号付き絶対値表示 Xtc : Xの2の補数表示 Ytc : Yの2の補数表示 Σ: 求和 Y : 項の排他的OR + : 項の論理的OR 項の論理的ANDは、並置によって表す。
明らかな通り、これらの教示に照らせば本発明に対して
多数の修正や変更が可能であり、したがってこの詳細な
説明の範囲内で上記で具体的に教示したのとは異なる方
法で本発明が実施できる可能正があることを理解された
い。
F.発明の効果 上述の如く本発明の演算装置によれば事前及び事後補数
化サイクルの不要な効率のよい乗算が達成される。
【図面の簡単な説明】
第1図は、本発明の一実施例の構成図である。 第2図は、オフセット部分積マトリックスの中央の数行
の項の生成を示す図である。 第3図ないし第5図は、本発明に基づくマトリックスの
展開を追跡する部分積マトリックスの説明図である。 第6図ないし第9B図は、本発明のマトリックスの形成を
示す概略図である。 第10図は、本発明のマトリックス・アセンブラの概略回
路図である。 第11図及び第12図は、2の補数オペランドの桁合わせ及
び符号拡張を行なう手段を示す概略回路図である。 第13A図ないし第13E図は、本発明の実施例の組合せ回路
のオフセット部分積を形成する際に使う係数を生成す
る、部分の概略回路図である。 第14図は、本発明の実施例のマトリックス・アセンブラ
内の部分ビット生成機構を示す概略回路図である。 第15図ないし第17図は、本発明の実施例の部分積を生成
するために使われる行生成回路を示す概略回路図であ
る。 第18図は、部分積マトリックスを加算するための桁送り
セーブ加算器ツリーを示す構成図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 バイク・ムーン・サング アメリカ合衆国ニユーヨーク州ビングハン トン、カントリイ・クラブ・ロード904番 地 (56)参考文献 特開 昭51−38942(JP,A)

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】X、Y共に符号付き絶対値数または補数化
    2進数のいずれかである、2進ディジタル被乗数Xのオ
    ペランド(オペランドX)を2進ディジタル乗数Yのオ
    ペランド(オペランドY)と乗算するためのシステムに
    おいて、 上記各オペランドが少なくとも1個の符号ビットを含む
    2つのnビットのオペランドX及びオペランドYを、各
    オペランドのビットを最上位ビットから順に保持する記
    憶手段と、 上記記憶手段に接続され、各グループがYの連続するs
    個のビットを含み、各グループが隣接するグループと少
    なくとも1ビットだけオーバーラップし、sが3よりも
    大きい、オペランドYから得られた乗数ビット・グルー
    プの列でオペランドXを乗算することによって部分積を
    得る、オーバーラップ走査手段と、 上記オーバーラップ走査手段に接続され、Xの連続する
    走査に対応して、各行が上記部分積を1つ含むm+1個
    のオフセット行を含むマトリックスに組立てられた部分
    積の列を生成し、 m=INT{(n−1)/(s−1)} であるマトリックス組立て手段と、 上記オーバーラップ走査手段に接続され、乗数ビット・
    グループの上記の列または被乗数符号ビットに対応し
    て、上記部分積に符号コード化ビットを付加して上記の
    行を完成する、上記マトリックス組立て手段中の符号コ
    ード化手段と、 上記マトリックス組立て手段に接続され、上記符号コー
    ド化ビットを付加された上記部分積を加えてXとYの積
    を生成する手段と、 を含む、事前補数化も事後補数化もせずに上記オペラン
    ドの乗算を行うための乗算器。
  2. 【請求項2】上記の補数化2進数が、各符号ビットX0
    たはY0から各最下位ビットXn-sまたはyn-sへと降順にn
    −(s−1)ビットを含む2進数であって、 上記記憶手段は、第1及び第2のレジスタを有し、それ
    ぞれのレジスタは、nビットの符号付き絶対値数を最上
    位ビットから順に記憶し、又はn−(s−1)ビットの
    補数化2進数を符号ビットから最下位ビットへと最上位
    ビットから順に記憶し、 上記第1及び第2のレジスタに接続され、符号付き絶対
    値数の上位s−1ビットが記憶されている、符号付き2
    進数の符号ビットのs−1個の複製を入力するための符
    号拡張手段を含む、 特許請求の範囲第1項に記載の乗算器。
  3. 【請求項3】XとYが補数化2進数であり、上記の列の
    最初のビット・グループが、Yの符号と等しいビットの
    みを含む、 特許請求の範囲第2項に記載の乗算器。
  4. 【請求項4】上記マトリックスをPとし、Pが で定義され、 j行目のマトリックスΦjは乗数ビット・グループ(Y
    k-(s-2)Yk-(s-2)+1・・・YkYk+1)でXを乗算すること
    によって生成され、 k=(s−1)j−1 Φj=SjX|Wj| であり、|Wj|はWjの絶対値を表し、Wjは上記のj行目
    を生成するためにXに掛けられる係数で、 であり、Sjは上記係数の符号であり、 であり、ここで であって、上記式において、+は論理「OR」、項の並記
    は論理「AND」で、 特許請求の範囲第3項に記載の乗算器。
  5. 【請求項5】上記マトリックスのj行目(2≦j≦m)
    について、上記符号コード化手段がj番目の部分積にs
    −1個の符号拡張ビットの列を付加し、上記符号拡張ビ
    ットは、s−2個の1とその後に で決定される値をとる最終ビットbを含み、 XsignはXの符号ビットであり、Vは「排他的OR」操作
    を表す、 特許請求の範囲第4項に記載の乗算器。
  6. 【請求項6】上記の各部分積がそれぞれ最上位端を有
    し、上記の(s−1)個の符号拡張ビットが上記各部分
    積の最上位端に付加され、上記ビットbが最上位部分積
    ビットに隣接している、 特許請求の範囲第5項に記載の乗算器。
  7. 【請求項7】s個の符号拡張ビットの列が上記マトリッ
    クスの最終行の最上位端に付加され、上記s個の符号拡
    張ビットのうち最初のビットが、 で決定され、上記符号拡張ビットの次のs−1個のビッ
    トがそれぞれ bits={(XsingVSj)W(O)} で決定される、 特許請求の範囲第6項に記載の乗算器。
  8. 【請求項8】各行がYのビット・グループの列の1つで
    Xを乗算して生成された部分積を含み、各ビット・グル
    ープが隣接するビット・グループとオーバーラップし、
    各ビット・グループがsビットを含むという、オーバー
    ラップした走査マトリックスを生成するための手段を含
    む、nビットの符号付き絶対値オペランドX(被乗数X
    のオペランド)とオペランドY(乗数Yのオペランド)
    を乗算して積を生成するためのマルチビット・オーバー
    ラップ走査式乗算器において、 2つの補数化2進オペランドXtcとYtcが、 であって、 上記Xtcに上記Xの符号ビットX0の複製をs−1個付加
    することと、上記Ytcに上記Yの符号ビットY0の複製を
    s−1個付加することによって、Xtc及びYtcの符号ビッ
    トを拡張する拡張手段と、 上記拡張手段に接続され、各列がそれぞれXtcをYtcの上
    記sビットのビット・グループと乗算して生成されるn
    +1ビットの部分積を含み、上記ビット・グループが最
    上位ビットから順にビットYk-(s-2)Yk-(s-2)+1・・・Yk
    Yk+1を含み、 k=(s−1)j−1 であって、上記ビット・グループが次のビット・グルー
    プとYk+1だけオーバーラップし、上記マトリックスがm
    +1行を含み、 m=INT{(n−1)/(s−1)} であり、上記マトリックスがj個(2≦j≦m)の中間
    行を含み、各行Φjは Φj=SjXtc|Wj|で与えられ、 Sjはj行目の符号であり、|Wj|は係数Wjの絶対値を表
    し、Wjは上記のj行目を生成するためにXtcに掛けられ
    る係数で、 であり、オーバーラップした行のマトリックスを生成す
    るためのマトリックス手段と、 ただし、 であり、+は論理「OR」、項の並記は論理「AND」で、 上記の式に従って上記マトリックスのj行目の符号Sjを
    計算する符号手段とを含む、それぞれ符号ビットである
    ビット0からビットn−sへと最上位ビットから順に配
    列されたn−(s−1)ビットを含む、2つの補数化2
    進オペランドXtcとYtcの乗算を行うための乗算器。
JP1260388A 1988-12-28 1989-10-06 乗算器 Expired - Lifetime JPH0727458B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/291,659 US4926371A (en) 1988-12-28 1988-12-28 Two's complement multiplication with a sign magnitude multiplier
US291659 1988-12-28

Publications (2)

Publication Number Publication Date
JPH02202632A JPH02202632A (ja) 1990-08-10
JPH0727458B2 true JPH0727458B2 (ja) 1995-03-29

Family

ID=23121253

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1260388A Expired - Lifetime JPH0727458B2 (ja) 1988-12-28 1989-10-06 乗算器

Country Status (4)

Country Link
US (1) US4926371A (ja)
EP (1) EP0375947B1 (ja)
JP (1) JPH0727458B2 (ja)
DE (1) DE68923262T2 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303176A (en) * 1992-07-20 1994-04-12 International Business Machines Corporation High performance array multiplier using four-to-two composite counters
KR0158647B1 (ko) * 1995-05-22 1998-12-15 윤종용 부호/무부호 수 겸용 곱셈기
US5870322A (en) * 1995-05-22 1999-02-09 Samsung Electronics Co., Ltd. Multiplier to selectively perform unsigned magnitude multiplication or signed magnitude multiplication
US5646877A (en) * 1995-05-25 1997-07-08 Texas Instruments Incorporated High radix multiplier architecture
US6081823A (en) * 1998-06-19 2000-06-27 Ati International Srl Circuit and method for wrap-around sign extension for signed numbers
US6073156A (en) * 1998-06-19 2000-06-06 Ati International Srl Circuit and method for wrap-around sign extension for signed numbers using replacement of most significant bit
US6421698B1 (en) * 1998-11-04 2002-07-16 Teleman Multimedia, Inc. Multipurpose processor for motion estimation, pixel processing, and general processing
US7020788B2 (en) * 2001-06-01 2006-03-28 Microchip Technology Incorporated Reduced power option
US20020184566A1 (en) * 2001-06-01 2002-12-05 Michael Catherwood Register pointer trap
US7003543B2 (en) * 2001-06-01 2006-02-21 Microchip Technology Incorporated Sticky z bit
US7007172B2 (en) * 2001-06-01 2006-02-28 Microchip Technology Incorporated Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection
US20030023836A1 (en) * 2001-06-01 2003-01-30 Michael Catherwood Shadow register array control instructions
US20030005268A1 (en) * 2001-06-01 2003-01-02 Catherwood Michael I. Find first bit value instruction
US6937084B2 (en) * 2001-06-01 2005-08-30 Microchip Technology Incorporated Processor with dual-deadtime pulse width modulation generator
US6975679B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Configuration fuses for setting PWM options
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US6952711B2 (en) * 2001-06-01 2005-10-04 Microchip Technology Incorporated Maximally negative signed fractional number multiplication
US6934728B2 (en) * 2001-06-01 2005-08-23 Microchip Technology Incorporated Euclidean distance instructions
US6985986B2 (en) * 2001-06-01 2006-01-10 Microchip Technology Incorporated Variable cycle interrupt disabling
US20030005269A1 (en) * 2001-06-01 2003-01-02 Conner Joshua M. Multi-precision barrel shifting
US20030028696A1 (en) * 2001-06-01 2003-02-06 Michael Catherwood Low overhead interrupt
US7467178B2 (en) * 2001-06-01 2008-12-16 Microchip Technology Incorporated Dual mode arithmetic saturation processing
US8234319B2 (en) * 2005-05-25 2012-07-31 Qualcomm Incorporated System and method of performing two's complement operations in a digital signal processor
US11301542B2 (en) * 2019-05-15 2022-04-12 Nxp B.V. Methods and apparatuses involving fast fourier transforms processing of data in a signed magnitude form

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3617723A (en) * 1970-02-25 1971-11-02 Collins Radio Co Digitalized multiplier
US3730425A (en) * 1971-05-03 1973-05-01 Honeywell Inf Systems Binary two{40 s complement multiplier processing two multiplier bits per cycle
US3737638A (en) * 1972-07-18 1973-06-05 Ibm A series-parallel multiplication device using modified two{40 s complement arithmetic
US3805043A (en) * 1972-10-11 1974-04-16 Bell Telephone Labor Inc Serial-parallel binary multiplication using pairwise addition
US3866030A (en) * 1974-04-01 1975-02-11 Bell Telephone Labor Inc Two{3 s complement parallel array multiplier
JPS571014B2 (ja) * 1974-09-30 1982-01-08
US4153938A (en) * 1977-08-18 1979-05-08 Monolithic Memories Inc. High speed combinatorial digital multiplier
US4130878A (en) * 1978-04-03 1978-12-19 Motorola, Inc. Expandable 4 × 8 array multiplier
NL7809398A (nl) * 1978-09-15 1980-03-18 Philips Nv Vermenigvuldiginrichting voor binaire getallen in twee-complement notatie.
JPS5899839A (ja) * 1981-12-10 1983-06-14 Toshiba Corp 符号付き乗算補正回路
US4594679A (en) * 1983-07-21 1986-06-10 International Business Machines Corporation High speed hardware multiplier for fixed floating point operands
JPS60163128A (ja) * 1984-02-02 1985-08-26 Nec Corp 乗算回路
US4748582A (en) * 1985-06-19 1988-05-31 Advanced Micro Devices, Inc. Parallel multiplier array with foreshortened sign extension
JPH069028B2 (ja) * 1986-02-18 1994-02-02 日本電気株式会社 演算装置
US4796219A (en) * 1987-06-01 1989-01-03 Motorola, Inc. Serial two's complement multiplier

Also Published As

Publication number Publication date
EP0375947B1 (en) 1995-06-28
EP0375947A3 (en) 1992-03-04
DE68923262D1 (de) 1995-08-03
JPH02202632A (ja) 1990-08-10
US4926371A (en) 1990-05-15
DE68923262T2 (de) 1996-02-15
EP0375947A2 (en) 1990-07-04

Similar Documents

Publication Publication Date Title
JPH0727458B2 (ja) 乗算器
Omondi et al. Residue number systems: theory and implementation
JPS592054B2 (ja) 高速2進乗算の方法及び装置
Vassiliadis et al. A general proof for overlapped multiple-bit scanning multiplications
US6728744B2 (en) Wide word multiplier using booth encoding
JP2585649B2 (ja) 除算回路
Ercegovac et al. Very high radix division with selection by rounding and prescaling
EP0428942B1 (en) Plural-bit recoding multiplier
JPH02293929A (ja) デジタルシステム乗算の方法及び装置
US7174015B1 (en) Methods and apparatus for variable radix scalable modular multiplication
US6633896B1 (en) Method and system for multiplying large numbers
JP3256251B2 (ja) 乗算器
TWI240199B (en) Interstitial product generator, multiplication circuit and multiplication method for bit segments
US7958180B2 (en) Multiplier engine
JPH04355827A (ja) 開平演算装置
JPS58137045A (ja) 並列乗算器
KR20080016803A (ko) 큰 수 곱셈 방법 및 디바이스
EP0534760A2 (en) High speed multiplier device
RU2661797C1 (ru) Вычислительное устройство
US5691930A (en) Booth encoder in a binary multiplier
JP3210420B2 (ja) 整数上の乗算回路
Castellanos et al. Decimal partial product generation architectures
JP3561051B2 (ja) 演算同期回路
RU2007037C1 (ru) Рекуррентный формирователь остатков по произвольному модулю
Takagi et al. Digit-recurrence algorithm for computing Euclidean norm of a 3-D vector