JP3516503B2 - 電子乗算および加算装置および方法 - Google Patents

電子乗算および加算装置および方法

Info

Publication number
JP3516503B2
JP3516503B2 JP02703095A JP2703095A JP3516503B2 JP 3516503 B2 JP3516503 B2 JP 3516503B2 JP 02703095 A JP02703095 A JP 02703095A JP 2703095 A JP2703095 A JP 2703095A JP 3516503 B2 JP3516503 B2 JP 3516503B2
Authority
JP
Japan
Prior art keywords
bit
carry
save
partial
multiplication
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
JP02703095A
Other languages
English (en)
Other versions
JPH07271556A (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 JPH07271556A publication Critical patent/JPH07271556A/ja
Application granted granted Critical
Publication of JP3516503B2 publication Critical patent/JP3516503B2/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/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

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)
  • Complex Calculations (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データ処理装置内にお
ける電子乗算および加算の分野に関する。
【0002】
【従来の技術】集積回路中央処理装置に、ある算術演算
を行うための専用のハードウェアを備えることは公知で
ある。そのような専用のハードウェアは、ある算術演算
の評価を、もしそれらの算術演算が汎用中央処理装置の
コアロジックによりソフトウェアの制御下で行われた場
合に得られるより、高速にするよう設計される。
【0003】Mビット数にもう1つのMビット数を乗算
して2Mビットの結果を生じる専用のハードウェア装置
を用いることは知られている。32ビットベースの中央
処理装置の場合においては、2つの32ビット被乗数は
64ビットの結果を生じる。実行が望まれるさらに改良
された算術演算は、2数を互いに乗算した後もう1つの
数を加算する。
【0004】32ビットマシンの場合には、2つの32
ビット数を互いに乗算した後もう1つの32ビット数を加
算することは、比較的素直な方法で行われうる。しか
し、乗算の結果は64ビット数であり、この乗算演算の
64ビットの結果に対しては64ビット数を加算しうべ
きことが望ましい。これに伴って生じる問題は、32ビ
ットマシンが32ビットデータバス構造を有し、64ビ
ットの加算に対処するためにこれを64ビットの幅に拡
大することは、望ましくない複雑化を招き、大きな回路
面積が必要となる不利が生ずる。
【0005】
【発明が解決しようとする課題】本発明の目的は、デー
タバス幅の不利な増大を招くことなしに、Mビット被乗
数にNビット乗数を乗算し、かつ(M+N)ビット累算
値を加算しうるようにすることである。
【0006】
【課題を解決するための手段】本発明は、1特徴から見
ると、Mビット被乗数にNビット乗数を乗算し、かつ
(M+N)ビット累算値を加算する電子乗算および加算
装置を提供し、該装置は、(i)前記Mビット被乗数
(multiplicand)と前記Nビット乗数との
乗算を表す一連の部分被加数(partial sum
mands)を発生する手段と、(ii)少なくとも1つ
の前記部分被加数を入力キャリー保存部分結果にキャリ
ー保存加算して出力キャリー保存部分結果を生じるキャ
リー保存加算手段であって、該入力キャリー保存部分結
果が、なお変化しつつあるアクティブキャリービット
と、なお変化しつつあるアクティブセーブビットとを有
し、該アクティブセーブビットの最上位ビットがビット
位置Zを有し、該アクティブセーブビットの最下位ビッ
トがビット位置Yを有する、前記キャリー保存加算手段
と、(iii )前記(M+N)ビット累算値のXビット
を、キャリー保存サイクルにおいて前記入力キャリー保
存部分結果に、ビット位置Zより高いビット位置におい
て加算する手段であって、ZおよびYが共にキャリー保
存サイクル間においてXだけ増加するようになってい
る、該加算手段と、を含む。
【0007】この装置は、Mビット被乗数へのNビット
乗数の乗算と同時に、(M+N)ビット累算値の加算が
進行することを可能ならしめる。このようにして、全
(M+N)ビットデータバスの具備が回避されうる。ア
クティブキャリービットおよびアクティブセーブビット
は、それらが不変のまま最終加算へ進みうるのではな
く、それらのための新しい値が計算されようとしている
という意味で、なお変化しつつある。
【0008】X=2である本発明の実施例においては、
前記加算手段は、キャリー保存サイクルにおいて前記出
力キャリー保存部分結果をビット位置Z+1およびZ+
2における拡張セーブビットおよびビット位置Z+2に
おける拡張キャリービットにより拡張する手段を含み、
前記拡張セーブビットは、前記(M+N)ビット累算値
のZ+1番目ビットと、前記アクティブキャリービット
のZ番目ビットの補数と、前記部分被加数のZ+1番目
ビットの補数と、の和によって与えられ、前記拡張キャ
リービットは前記(M+N)ビット累算値のZ+2番目
ビット補数により与えられる。
【0009】このようにして、前記(M+N)ビット累
算値のZ+1番目ビットおよびZ+2番目ビットは、前
記キャリー保存のそれぞれの反復における計算内に取込
まれ、そのために前記乗算演算後の加算を行うための最
終的な(M+N)ビット幅のデータバスの必要が回避さ
れる。本発明の装置は、(M+N)ビット累算値を取扱
う余分な処理を収容するためのデータバス幅の増大を有
するが、この増大は全(M+N)ビット幅への増大と比
較すれば比較的に小さい。
【0010】部分被加数のシーケンスを発生する手段
は、所望される精巧さの程度に依存して多くの形式をと
りうることを認識すべきである。しかし、発生せしめら
れる部分被加数の数は、該発生手段がブース(Boot
h)エンコーダを含み、該部分被加数のシーケンスがブ
ース被加数である時減少せしめられる。
【0011】本発明は任意の値のMおよびNに対して適
用されうるが、汎用算術演算処理装置を構成するために
は、MがNに等しかるべきことが最も通常に望まれる。
上述の関係において、M=N=32である場合には、過
剰に広いデータバスの回避は特に有利となる。M=Nの
場合には、たとえ2Mビット累算値が関係していたとし
ても、データバスはM+3のみの有利な幅を有しさえす
ればよい。
【0012】装置の融通性は、前記部分被加数のZ+1
番目ビットが符号選択入力に依存して0または符号拡張
であり、前記Mビット被乗数およびNビット乗数が、該
符号選択入力に依存してそれぞれ符号なしまたは符号付
き数として取扱われる実施例において改善される。本発
明は、さまざまな応用の特殊な状況に有効に適用されう
るが、本発明は特に、ハードウェア乗算器を有する集積
回路中央処理装置内に用いるのに適している。
【0013】本発明は、もう1つの特徴から見ると、M
ビット被乗数にNビット乗数を乗算し、かつ(M+N)
ビット累算値を加算する電子乗算および加算装置内にお
ける乗算および加算方法を提供し、該方法は、(i)前
記Mビット被乗数と前記Nビット乗数との乗算を表す一
連の部分被加数を発生するステップと、(ii)前記部分
被加数のそれぞれの1つを入力キャリー保存部分結果に
キャリー保存加算して、出力キャリー保存部分結果を生
じるキャリー保存加算ステップであって、該入力キャリ
ー保存部分結果が、変化するアクティブキャリービット
と、変化するアクティブセーブビットとを有し、該アク
ティブセーブビットの最上位ビットがビット位置Zを有
し、該アクティブセーブビットの最下位ビットがビット
位置Yを有する、前記キャリー保存加算ステップと、
(iii )前記(M+N)ビット累算値のXビットを、キ
ャリー保存サイクルにおいて前記入力キャリー保存部分
結果に、ビット位置Zより高いビット位置において加算
するステップであって、ZおよびYが共にキャリー保存
サイクル間においてXだけ増加するようになっている、
該加算ステップと、を含む。
【0014】本発明のもう1つの目的は、高速で演算す
る電子乗算および加算装置を提供することである。演算
速度の増大は、処理における障害を減少せしめ、乗算お
よび加算装置を部分として含む装置の全体的パフォーマ
ンスを改善する。
【0015】本発明は、もう1つの特徴から見ると、M
ビット被乗数にNビット乗数を乗算し、かつ(M+N)
ビット累算値を加算する電子乗算および加算装置を提供
し、該装置は、(i)前記Mビット被乗数と前記Nビッ
ト乗数との乗算を表す部分被加数のシーケンスを発生す
る手段と、(ii)少なくとも1つの前記部分被加数を入
力キャリー保存部分結果にキャリー保存加算して出力キ
ャリー保存部分結果を生じるキャリー保存加算手段であ
って、該入力キャリー保存部分結果および該出力キャリ
ー保存部分結果がそれぞれキャリー値およびセーブ値を
含む、前記キャリー保存加算手段と、(iii )該キャリ
ー値および該セーブ値を、前記(M+N)ビット累算値
の少なくとも一部と、第1部分被加数と、のそれぞれの
1つに初期化する手段と、を含む。
【0016】電子乗算および加算装置の1つの演算段階
は、主計算サイクルの前の該装置の初期化である。本発
明は、キャリー値およびセーブ値を適切に初期化するこ
とによって、主計算演算中に行われる必要のある計算が
減少せしめられ、それによってパフォーマンスの増大が
実現されうることを認識し、かつ利用する。さらに詳述
すると、初期化中に第1部分被加数を処理することによ
り、乗算器の反復数は1だけ減少せしめられうる。一
見、通常は10と20との間にある反復総数からの、そ
のような1反復だけの減少は、それほど意味があること
とは思えない。しかし、もし17反復を必要とする乗算
演算を考えれば、16反復への1反復の減少は、プロセ
スが、4反復毎マシンサイクルとして、平等に4マシン
サイクルへ分割されることを可能にする。その代案とし
て、4反復毎マシンサイクルを行った後、1サイクルに
おいて追加の反復を行えば、必要なサイクル数を5に増
大させ、あるいは、可能な反復数毎サイクルを5に増大
させることを試みれば、それはタイミングの制約を強く
して、恐らくは最大クロック周波数を減少させ、集積回
路を大きくすることになろう。
【0017】本発明の実施例においては、前記発生手段
は改変されたブースエンコーダを含み、前記部分被加数
のシーケンスは改変されたブース被加数のシーケンスで
ある。
【0018】符号付きおよび符号なし乗算の双方を効果
的に処理するためには、前記Nビット乗数が符号付きで
ある時は、該Nビット乗数を表す内部乗数のそれぞれの
ビットR〔a〕が、R〔(N−1)から1まで〕は前記
Nビット乗数の対応ビットに等しく、R〔N〕はR
〔(N−1)〕に等しい、によって与えられ、前記Nビ
ット乗数が符号なしである時は、該Nビット乗数を表す
内部乗数のそれぞれのビットR〔a〕が、R〔(N−
1)から1まで〕は前記Nビット乗数の対応ビットに等
しく、R〔N〕は0に等しい、によって与えられること
が好ましい。
【0019】乗算されるべき数の長さが奇数(例えば、
上述によればN+1)であるブースエンコード装置の場
合には、第1部分被加数の特に簡単な形式が得られる。
この第1部分被加数は、従って速やかに決定されるの
で、過度に遅延する初期化は回避される。さらに詳述す
ると、もしR
〔0〕が0に等しければ、前記第1部分被
加数が0に初期化され、もしR
〔0〕が1に等しけれ
ば、前記第1部分被加数が、前記Mビット被乗数のビッ
ト毎の逆に初期化される。
【0020】さらに詳述すると、もしR
〔0〕が0に等
しければ、前記第1部分被加数は理想的には0にセット
されるべきであり、もしR
〔0〕が1に等しければ、前
記第1部分被加数は理想的にはマイナス前記Mビット被
乗数にセットされるべきである。
【0021】好ましい初期化は、もしR
〔0〕が0に等
しければ、前記第1部分被加数が0に初期化され、もし
〔0〕が1に等しければ、前記第1部分被加数が、前
記Mビット被乗数のビット毎の逆に初期化されるもので
ある。しかし、前記Mビット被乗数のビット毎の逆は、
マイナス該Mビットの被乗数より1小さいので、これ
は、もしR
〔0〕が1ならば、余分な1を後に加算する
必要性を導入する。実施例は、前記キャリー値および前
記セーブ値を加算するための最終加算器を含み、該最終
加算器に対するキャリー入力ビットはR
〔0〕にセット
される。
【0022】乗算反復に続いてキャリー値およびセーブ
値を加算する最終加算器の配設は、追加のオーバヘッド
を招くことなしに2の補数でなく1の補数がとられたの
で、要求される前記「1」を加算する機会を与える。最
終加算器のキャリービットは、それ以外には使用されな
いはずである。
【0023】本発明は、さらにもう1つの特徴から見る
と、Mビットの被乗数にNビットの乗数を乗算し、かつ
(M+N)ビットの累算値を加算する電子乗算および加
算装置内における乗算および加算方法を提供し、該方法
は、(i)前記Mビットの被乗数と前記Nビットの乗数
との乗算を表す一連の部分被加数を発生するステップ
と、(ii)前記部分被加数のそれぞれの1つを入力キャ
リー保存部分結果にキャリー保存加算して、出力キャリ
ー保存部分結果を生じるキャリー保存加算ステップであ
って、該入力キャリー保存部分結果および該出力キャリ
ー保存部分結果がそれぞれキャリー値およびセーブ値を
含む、前記キャリー保存加算ステップと、(iii )該キ
ャリー値および該セーブ値を、前記(M+N)ビットの
累算値の少なくとも一部と、第1部分被加数と、のそれ
ぞれの1つに初期化するステップと、を含む。
【0024】本発明の、以上の、およびその他の、諸目
的、諸特徴、および諸利点は、添付図面を参照しつつ行
われる、実施例に関する以下の詳細な説明において明ら
かにされる。
【0025】
【実施例】上述の回路は、 (1)(N+M)ビットの積を生じるNビット数とMビ
ット数との乗算。 (2)Nビット数とMビット数とを互いに乗算し、かつ
(N+M)ビット累算値を加算して(N+M)ビットの
結果を生じる、乗算−累算演算。 を処理しうる。この回路は、これらの双方を符号付きお
よび符号なしバリアント(variant)として供給
しうる。上述の回路は、例としてN=M=32の特殊な
場合を用いている。(すなわち、32×32→64の乗
算、また32×32+64→64の乗算−累算)。
【0026】「マルチプライヤ(multiplie
r)」という用語は、以下においては、それぞれ乗算器
回路のため、および乗算における2つのオペランドの一
方のため、の両方に用いられる。いずれが意図されてい
るかは、「回路」または「オペランド」の使用から、ま
たは文脈から、明らなはずである。
【0027】Mビット被乗数Dに対するNビット乗数R
の乗算は、通常ハードウェアにおいて次の2つの主要ス
テップとして行われる。 (1) (a) 各々の乗算が容易に生成でき、また(b) X0 +
X1 +...+Xk =Rが成り立つように、被乗数Dの
乗算の集合、X0 *D、X1 *D、....Xk *Dを
形成して、X0 *D、X1 *D...及びXk *Dの和
が、R*D即ち求める積に等しくなるようにする。 (2) ステップ(1) で発生された被乗数の倍数を加算す
る。
【0028】段階(1):被乗数の倍数の形成 段階(1)は、さまざまな方法で行われうる。最も簡単
な方法は、(被乗数の倍数がN個存在するように)k=
N−1とし、次に、Rのビットi(以下R〔i〕または
Riとする)が0であればXi=0とし、R〔i〕が1
であればXi=2i とする。各々のXiは、0または2
の累乗であるから、被乗数の倍数Xi*Dは、0、また
はDをiビットだけ左へシフトした結果を用いることに
より、容易に形成されうる。
【0029】乗算の結果は、いずれのオペランドよりも
長いので、被乗数の倍数Xi*Dは、積の全てのビット
を決定するために十分なビットにより構成されなければ
ならない。即ちそれぞれの被乗数を、その左側のビット
によって拡張することが要求される。これにより、符号
付きおよび符号なし被乗数の相違に対応することができ
る。即ち符号付き被乗数は、その符号ビットのコピーに
よって拡張され、一方符号なし被乗数は、0によって拡
張される。被乗数のこの拡張は、単一の0または符号ビ
ットのコピーによってそれをわずかに拡張することによ
り、しばしば物理的に実行され、その際この単一の余分
なビットは、全ての残りのビットの(共通)値を代表す
るものと理解される。
【0030】別の方法で時おり用いられるものとして、
例えば、アドバンストRISCマシン社(Advanc
ed RISC Machine Lmited)のA
RM6集積回路の乗算命令のように、2つのNビット数
の積の、下位Nビットのみを発生するものがある。この
場合には、上記のように被乗数を拡張する必要はない。
被乗数は、前記命令の符号付きおよび符号なしバリアン
トの双方に対して同じに取扱われうる。少々明瞭でない
が、乗算器はそのようにできる。結局、前記命令の符号
付きおよび符号なしバージョンの間には全く差がなく、
1つの命令のみが与えられさえすればよい。
【0031】この方式による符号なしおよび符号付き乗
数Rの間の差の処理は、いくぶん巧妙なものである。ま
ず、Xiを加算するとRになることに注目する。この方
式は、「本来」符号なし乗算アルゴリズムである。それ
ゆえ、必要とされるのは、符号付き乗数の処理方法であ
る。これを処理するのには、いくつかの方法があり、そ
の多くは、次のいずれかの方法による(a) Rが負のと
き、余分な2N *Dを減算して最終結果を調節する、ま
たは(b)もしR〔k〕=1、すなわちもしRが負なら
ば、Xkを+2k ではなく−2k にする。
【0032】もっと洗練された技術は、改変されたブー
ス・エンコーディングである。これは、Nが偶数である
か奇数であるかにより、2つのやや異なる形式になる。
Nが偶数ならば、k=N/2−1とし(よって、N/2
個の被乗数の倍数を形成することになる)、次のように
定義する。
【数1】 ここで、i=1,2,...,k
【0033】これを考察するもう1つの方法は、乗数
を、2進小数点の後の単一ビットR〔−1〕によって拡
張し、R〔−1〕を0と置く(これは、乗数の値を不変
に保つ)ことである。その時上記第2式は、i=0の場
合にも適用でき、その場合上記第1式に簡単化される。
すなわち、X0に対する外見上の特殊な場合は、この定
義、すなわち0としてのR〔−1〕により回避できる。
その時、以下のようにXiはRの符号付き値に等しくな
る。
【数2】
【0034】さらに、それぞれのXiは、2の累乗に集
合{−2,−1,0,1,2}からの数を乗算したもの
であり、0、2の累乗、マイナス2の累乗、の値を有す
る。これにより被乗数の倍数Xi*Dが容易に形成され
る。この方法は、前出の容易な方法におけるほど、容易
ではない。それは、2の正の累乗と同様に2の負の累乗
にも対処しなくてはならないが、実質的利点として第2
段階において加算すべき被乗数の倍数が、N個ではなく
N/2個であることのみだからである。負の被乗数の倍
数は、対応する正の倍数を形成するための被乗数をシフ
トさせ、次に「1の補数をとって1を加算する」方法に
より負にすることによって行われうる−この段階におい
ては1の加算は行われないが、それは第2段階へ移管さ
れる。従って、第2段階において加算されるのは、N/
2個の被乗数の倍数およびN/2個の単一ビット(これ
らは、対応する被乗数の倍数が正のとき0であり、負の
とき1である)で終わることになる。これはなお、N個
の全ての被乗数の倍数を扱う場合に比し実質的な改善と
なる。
【0035】Nが奇数ならば、k=(N−1)/2であ
ること以外では、極めて良く似たことを行い、Xiに対
する式は次のようになる。
【数3】 ここで、i=1,2,...,k
【0036】(この場合も、X0に対する式は実際には
特殊な場合ではなく、第2式が正しい値を生じるように
するためには、R〔−1〕=R〔−2〕=0と定義しさ
えすればよい)。
【0037】改変されたブース・エンコーディングは互
いに加算されるべき被乗数の倍数を半分にするだけでな
く、いま1つの利点を有し、乗数を符号なし数でなく、
符号付き数として自然な形で処理する。前出の技術にお
いては、符号付き乗数を特殊な場合として処理しなくて
はならなかった。それは、符号なし数の長さがどうであ
れ、それは負符号付き値を有しえないからである。逆は
容易であり、長さN+1ビットまたはそれ以上の符号付
き数は、長さNビットの符号なし値(または実に、長さ
Nビットの符号付き値)を有しうる。それゆえ、もし符
号付きおよび符号なしの32ビット乗数を処理しうる乗
算器回路が欲しければ、例えば、33ビットの、または
それより長い、ブース・エンコーダでそのジョブを行え
る。行うべき全てのことは、乗数を、その左端において
1つまたはそれ以上の追加ビットによって拡張し、該乗
数が符号なしとして取扱われる場合、これらのビットを
0にし、該乗数が符号付きとして取扱われる場合、存在
する符号のコピーとすることのみである。
【0038】符号付きおよび符号なし被乗数の間の相違
の処理は、前出と同じ技術によって行われる。被乗数の
倍数を形成するための、他の、さらに洗練された方法も
存在し、複雑性になるが、該倍数の数をさらに減少させ
ることができる。
【0039】段階(2):被乗数の倍数の加算 段階(1)の後には、互いに加算されるべきかなり多
数、例えば33ビットまたは34ビットの改変されたブ
ース・エンコーダを、符号付きおよび符号なし32×3
2乗算の双方を行いうる回路として用いる場合には17
個、の被乗数の倍数が存在する。
【0040】最も簡単には、単に、それらの2つを互い
に加算し、該最初の2つのものの和に対して第3のもの
を加算し、その結果である和に第4のものを加算し、な
どして、最後の和を得るまで続ける。(ところで、それ
ぞれの加算はまた、改変されたブース・エンコーディン
グによって発生させられたエクストラビットの1つを、
加算器に対するキャリー入力として用いて取扱うことが
可能である)。この技術は、ARM6集積回路によって
用いられるものと同様である。
【0041】1つの相違は、現在の場合、全ての被乗数
の倍数を一度に発生させずに、必要に応じて発生させる
ことである。他の主たる相違は、この技術においては不
規則性が処理されることである。即ち、最初の加算が行
えるためには、2つの被乗数の倍数が発生されなくては
ならないが、他の各々の加算の前には1つの倍数が発生
されればよい。これは、この不規則性がない乗算−累算
機能を、「これまでの和」を累算値に初期化し、1つの
被乗数の倍数を繰返し発生させその結果をこれまでの和
に加算することによって実現するために、利用される。
(簡単な乗算を行う場合、これまでの和が累算値にでは
なく0に初期化されること以外、同じことが行われ
る)。
【0042】これはまた、前の段落において示唆された
ことを完成する。即ち、実際、改変されたブース・エン
コーダからの全てのエクストラビットを処理するのには
少なすぎる1回の加算しかなかったのが、いまは適当な
数が存在する。
【0043】この技術における主たる問題は、それぞれ
の加算が長いキャリー連鎖(carry chain)
を含むために、相当な時間の量を要することである。こ
れに対する良い解決法は、「キャリー保存」加算であ
り、これは、1つの数を得るための、2つの数とキャリ
ービットとの加算は必然的に長いキャリー連鎖を含む
が、2つの数を得るための、3つの数とキャリービット
との加算はそれを必要としないことに基づいている。詳
述すると、3つの数X〔N:0〕、Y〔N:0〕、Z
〔N:0〕とキャリービットWとがある場合、それらは
2つの数S〔N:0〕およびC〔N+1:0〕に減少さ
せられ、これらの2数は加算された時、各々のビット列
内において異なる3つの単一ビットの加算を単に行うこ
とによって得られる値と同じ値になる。
【数4】
【0044】但し、 C
〔0〕=W かつ、 i=0,1,...,N (C〔i+1〕,S〔i〕)は、X〔i〕、Y〔i〕、
およびZ〔i〕の2ビット和である。
【0045】計算は、それぞれの列に対してキャリー連
鎖なしに別個に行われるので、通常の加算よりもかなり
高速である。(例えば、ARM6における乗算は通常の
加算を用い、それらの1つ1つをクロックサイクル毎に
管理した。キャリー保存加算を用いる集積回路は、4回
またはそれ以上の加算をクロックサイクル毎に管理しう
る。)
【0046】加算されるべきJ個の被乗数の倍数があれ
ば、それらを、最終結果を得るために加算しなくてはな
らないちょうど2つの数まで減少させるのに、この技術
をJ−2回用いればよい。この最後の加算は、通常の加
算を必要とするが、J−2回のキャリー保存加算と1回
の通常加算との全体としての総計は、元のJ−1回の通
常加算に比しかなりの改善になっている。
【0047】ある大形の高価な乗算器は、実際に全ての
被乗数の倍数を直ちに発生する。これらによれば、加算
の遅延の多くは、多数の加算器回路が必要となるが、加
算を並列に行うことによって解消できる。例えば、17
個の被乗数の倍数を最終積まで減少させるためには、5
段階の通常加算(第1のものはそれらを9個の数まで減
少させ、第2のものは5個まで減少させ、第3のものは
3個まで減少させ、第4のものは2個まで減少させ、第
5のものは1個まで減少させる)、または6段階のキャ
リー保存加算および1回の最後の通常加算(17→12
→8→6→4→3→2→1)を用いることもできる。キ
ャリー保存加算の時間的利点は、この場合は前よりも少
ないが、この場合は、キャリー保存加算のもう1つの利
点が重要であり、キャリー保存加算器はまた通常の加算
器よりもずっと小さい。
【0048】しかし、小形の簡単な回路を実現させたい
場合、この種の並列加算は望ましくない。通常のアプロ
ーチは通常の加算器におけるものと同様であり、「キャ
リー」値および「セーブ」値が、(例えば、それらの双
方を0に初期化することにより)それらの和が0になる
ように初期化され、次に被乗数の倍数を1つずつ加算す
るためにキャリー保存加算が用いられる。最後に、「キ
ャリー」値と「セーブ」値との最終和を形成するため
に、通常の加算が用いられる。前と同様に、「キャリ
ー」値および「セーブ」値を、例えば、それらの一方を
0に、かつ他方を累算値にして、それらの和が累算値に
なるように初期化することにより、自由な乗算−累算演
算を得ることができる。実際、初期化すべき2つの値が
あるので、2つの累算値を加算しうるはずであるが、こ
れは極めて有用ではない。この第2の累算値スロットを
利用する、より良い方法は後述される。
【0049】上述の事項は、(N+M)ビットの加算を
行うと仮定している。例えば、32×32の乗算が実行
するときは、64ビットの加算が行われるだろう。これ
は通常、他のデータバスの2倍広いデータバス部分を必
要とすることになるので、厄介である。
【0050】しかし、もし加算しようとする値に注目す
れば、それらが、Mビットよりもやや多くの対象領域含
むのみであることがわかる。例えば、奇数のNを有する
改変されたブース・エンコーダに対するXi*Dを考え
てみる。Xi*Dに対応するXiは、−2(2*i) 、−2
(2*i-1) 、0、2(2*i-1) 、2(2*i) の1つである。
【表1】
【0051】上位N−2*iビットおよび下位2*i−
1ビットの双方は、それほど関心のあるものではない。
特に、各々の場合において、全て0にするようにキャリ
ービットを下位2*i−1ビットに加算し、また同じキ
ャリーを中位M+1ビットに加算することができる。す
なわち、上記の表1を下記の表2によって置換すること
ができる。
【表2】
【0052】この場合、キャリー保存加算を下位2*i
−1ビットに対して行う必要がないことがわかる。2つ
の値と0とのキャリー保存加算を行わずに、該2つの値
を単に不変のままにしておくことができる。さらに、
「セーブ」値および「キャリー」値の上位N−2*iビ
ットが、これまで全て同じである限り、全ての上位N−
2*i列の加算は同じになるので、それらを全て評価す
るためには、1つの回路が必要とされるのみである。そ
の結果、下記の条件により、ちょうどM+2個の列加算
器(中位M+1ビットに対するM+1個と、上位N−2
*iビットに対する1個とを足したもの)によって全て
が行われうる。 (a) 同じ上位Nビットを有する「セーブ」値から開始
する。 (b) 同じ上位Nビットを有する「キャリー」値から開
始する。 (c) それぞれの加算が要求する上位における同じビット
の数が、前のものよりも少ないように、被乗数の倍数を
X0*D、X1*D、X2*D、...、Xk*Dの順
序で加算する。 (d) それぞれの反復において「関心ある領域」を2ビッ
トだけ左へシフトさせ、下位端から脱落するビットを取
って記憶する。計算の終了時に、これらのビットは最終
「キャリー」値および「セーブ」値の低位端を形成し、
一方最後の「対象領域」内のそれらは、それらの高位端
を形成する。
【0053】このことにより、乗算器の主要部分を、デ
ータバスの幅の倍増ではなく、該幅のほんのわずかな
「増大」によって、実現することが可能となる。最後の
加算は、なおダブル幅のものでなくてはならないが、シ
ングル幅加算器の2回の使用により、第1加算からのキ
ャリー出力ビットを第2加算に対するキャリー入力とし
て用いる技術を利用して実現されうる。
【0054】制限に関しては、最後の2つは、回路を正
当に実現できるかどうかの問題がある。しかし、最初の
2つは、任意の累算値が、もし符号付きのものならば、
約N+Mビットの広さのものではなく、高々Mビットで
あることを意味している。累算値に関するこの制限を回
避する技術は後述され、例えば、単に32×32+32
ではなく32×32+64の乗算−累算命令の実現が可
能となる。
【0055】任意の特定の乗算器は、被乗数の倍数を発
生し且つ現在の「キャリー」および「セーブ」形式に対
してキャリー保存加算を行う、ハードウェアの多数の例
を含みうることに注意すべきである(このハードウェア
は、以下においては「乗算器行」と呼ばれる)。極端な
例では、図1に示されているようにそれぞれの反復に対
する別個の乗算器行を有する、全乗算器アレイがある。
【0056】他方には、図2に示されているように全て
の反復を処理するただ1つの乗算器行を有する、完全に
反復的な乗算器がある。中間には、1つより多くの行を
有する反復バージョン、例えば図3に示されている2行
を有する乗算器、がある。
【0057】以上のさまざまな選択肢からの選択は、本
質的に空間対時間のトレードオフである。使用する乗算
器が多いほど、回路は大きくかつ高速になる(高速にな
るわけは、乗算毎の乗算器およびラッチ遅延が少なくな
り、次のクロックエッジの起こるのを待つためにある時
間が無駄になる回数が少なくなるからである)。実際に
は、適度に小さい乗算器に対する通常のトレードオフ
は、ループを回っての全遅延を、要求されるサイクル時
間(または、回路が2倍の速度のクロックにより駆動さ
れるある場合には、要求されるサイクル時間の半分)よ
り少し小さくする、正しい数の乗算器行を有する反復乗
算器を用いることである。
【0058】この全てに関する重要な点は、これらの設
計の全てにおいて、本質的に同じ乗算器行のハードウェ
アが用いられることである。乗算器行の設計の任意の改
善は、それらのいずれに対しても平等に適用される。
【0059】キャリー保存形式の初期化 上述のように、キャリー保存形式の「キャリー」および
「セーブ」部分の双方を初期化することができる。それ
らの一方に累算値が要求され、他方は単に0にセットさ
れる。これは被乗数の倍数の1つとして用いることがで
きる。これに関する主要な問題は、それが、キャリー保
存形式のイニシャライザーが被乗数の倍数発生器を含ま
なくてはならないことを意味することである。これは、
ある空間を要し、さらに重要なことは、それがさらに初
期化の遅延を生じることである。
【0060】この付加される遅延の大きさは、関係する
被乗数倍数の発生の複雑さに依存する。上記の改変され
たブース・エンコーディングによって発生せしめられる
Xiに対する式を考察すると、1つのものは特に簡単で
ある。すなわち、奇数のNに対して、X0=−R
〔0〕
である。もちろん、通常関心をもたれるのは、Nが偶数
の場合である。しかし、以上において観察されたよう
に、符号付きおよび符号なしNビット数を乗算する要求
を処理する良い方法は、実は符号付き(N+1)ビット
数を乗算することである。
【0061】これらの観察から、改変されたブース・エ
ンコーディングと、キャリー保存加算と、奇数のNとを
用いて、符号付きおよび符号なしバリアントの双方を処
理する、Mビットに対するNビットの乗算−累算器のた
めの以下の初期化方法が得られる。
【0062】内部乗数オペランドR〔N:0〕を以下に
よって初期化する: R〔N−1:0〕=供給された乗数オペランド: R〔N〕=0 符号なしバリアントが望まれる場合 =R〔N−1〕 符号付きバリアントが望まれる場合 「キャリー」値および「セーブ」値の一方を、供給され
た累算値(それが符号なしであるか、または符号付きで
あるかにより、0または符号ビットのコピーにより拡張
されたもの)に初期化する。「キャリー」値および「セ
ーブ」値の他方を、もしR
〔0〕=0ならば0に、また
もしR
〔0〕=1ならばマイナス供給された被乗数(符
号付きまたは符号なしとして適切に処理されている)
に、初期化する。
【0063】この最後のものは、マイナス供給された被
乗数、すなわち、その2の補数、を発生させなくてはな
らないことによりやや複雑であるように見える。代わり
に、その1の補数を形成し、かつ1を加算する技巧を用
いると有利である。問題は、この1をいつ加算すべきか
である。
【0064】その良い時点は、乗算の終了時である。そ
の理由は、キャリー保存形式に関する最後の加算が、そ
の時ちょうど、その「キャリー」部分と「セーブ」部分
とを互いに加算することを必要としているからである。
多くの加算器は、2つの数とキャリービットとを加算す
るので、該キャリービットは使用されない。キャリービ
ットをR
〔0〕に等しくセットすることにより、R
〔0〕=1の時、初期化において、被乗数の2の補数を
用いることと、1の補数を用いることとの相違は補償さ
れうる。従って、以下の初期化方法が得られる。
【0065】内部乗数オペランドR〔N:0〕を以下に
よって初期化する: R〔N−1:0〕=供給された乗数オペランド: R〔N〕=0 符号なしバリアントが望まれる場合 =R〔N−1〕 符号付きバリアントが望まれる場合 「キャリー」値および「セーブ」値の一方を、供給され
た累算値(符号付きまたは符号なしとして適切に処理さ
れている)に初期化する。「キャリー」値および「セー
ブ」値の他方を、もしR
〔0〕=0ならば0に、またR
〔0〕=1ならば供給された被乗数(符号付きまたは符
号なしとして適切に処理されている)のビット毎の逆
(すなわち、1の補数)に、初期化する。最後の加算に
対するキャリー入力ビットをR
〔0〕にセットする。
【0066】この技術の利点は、初期化ディレイおよび
ハードウェアが少々多くなるのみで、主反復において、
1段階少ないキャリー保存加算しか要らなくなることで
ある。これは、実際の応用においてはNがしばしば2の
累乗である事実により、見かけよりも重要である。N=
n の場合、(N+1)ビットの改変ブース・エンコー
ディングが、総計2(n-1) +1個の被乗数の倍数および
キャリー保存加算を発生することを意味する。これの2
(n-1) 段階への減少は、計算を正確な数のサイクル内へ
極めて適合しやすくすることができ、従って、時間の無
駄の回避を可能ならしめる。
【0067】32×32乗算を行う必要のある回路を考
えてみる。この初期化によれば、それは、16段階のキ
ャリー保存加算を行う必要があり、これは、それぞれが
4段階を行う4サイクルに適合する。もしキャリー保存
形式が単に累算値に初期化されていたものとすれば、1
7段階が要求され、これは賢明に処理するためには遙か
に困難な数である。
【0068】長い累算値の処理 上述のように、乗算の段階iにおいて、もし全ての上位
N−2*iビットを単一ビットによって表すことができ
れば、累算値は、約Mビットの長さのものでしかありえ
ない。もし累算値がもっと長ければ、データバスは、そ
れに対処するために幅を実質的に増大せしめられる必要
がある。
【0069】上位N−2*iビットにおいては、最初
「キャリー」値および「セーブ」値の一方が同じでない
ビットを含むことが可能であることが必要である。もう
片方は、被乗数の倍数の上位N−2*iビットと同様に
全て同じビットを含むことができる。しかしながら、キ
ャリー保存加算の後には、「キャリー」値および「セー
ブ」値は共に、それらの上位ビット内に同じでないビッ
ト列を含みうる。もし、このようでなく、累算値の上位
ビットが加算によって不変のままになっており、他の値
の各々が同じビットの列のままになっているように配列
されうるものと仮定すれば、主な作業はやはりほぼMビ
ットの広さのデータバスによって行われ得るはずであ
る。前の例との唯一の相違は、累算値の2ビットを、反
復毎にメイン計算に供給しなくてはならないことであ
る。
【0070】これを処理する方法は、簡単なキャリー保
存の「各列における3ビット加算」する技術を変更する
ことである。上述と同様に、「キャリー」値および「セ
ーブ」値は、以下の3領域に分割される。 (a) 「低位」領域。この領域においては、「キャリー」
値および「セーブ」値に対し、これ以上の変化はない。
Xi*Dをそれらに加算した後、この領域はLiビット
を含み、(前に示された)Nが奇数の場合はLi=2*
i+1であり、Nが偶数の場合はLi=2*i+2であ
る。Nが偶数の場合は、これはまた、Xi*Dが加算さ
れる前にはLi=2*iであると表現されうる。Nが奇
数の場合は、それはまた、(例えば、X0*Dの加算を
前述のように初期化内に置くことにより)i=0に対し
特殊な場合が作られるという条件で、Xi*Dが加算さ
れる前にはLi=2*i−1であると表現されうる。S
L〔Li−1:0〕およびCL〔Li−1:0〕は、そ
れぞれ低位の「セーブ」ビットおよび「キャリー」ビッ
トを表す。 (b) 「中位」または「アクティブ」領域。この領域にお
いては、主要なキャリー−セーブ加算が行われつつあ
る。この領域は、「セーブ」値および「キャリー」値の
それぞれに対する、S〔M:0〕およびC〔M:0〕で
表されるM+1ビットを含む。 (c) 「高位」領域。この領域においては、「セーブ」値
は累算値の未使用ビットを含み、「キャリー」値は単に
C〔M〕のコピーのストリングである。Xi*Dをキャ
リー保存形式で加算する前には、この領域は2*(k−
1)+2ビットの長さ、すなわち、毎加算2ビットでな
おアクティブ領域内へ入れたい累算ビットの数(kは最
後のXiのインデックスであることを想起されたい)を
有する。
【0071】チェックとして、「キャリー」値および
「セーブ」値の全長は、次のようになる。
【数5】
【0072】従って、当然長さM+N+1ビットの累算
値A〔M+N:0〕を処理することになる。(もちろ
ん、単に適切に、それらを0拡張することにより、また
はそれらを符号拡張することにより、処理される累算値
をもっと短くすることができる。また、余分のビットは
主演算によって全く不変であり、単に対応する「キャリ
ー」値ビット(すなわちC〔M〕のコピー)に加算され
る必要があるだけであるが、処理される累算値をもっと
長くすることもできる)。従って、Xi*Dをキャリー
保存形式に加算する前における「キャリー」値および
「セーブ」値は次表のようになる。
【表3】
【0073】次に、被乗数の倍数がどのようなものであ
るかを考察する必要がある。(M+1)ビットの符号付
き被乗数D〔M:0〕を形成するために、それぞれ符号
拡張または0拡張される、Mビットの符号付きまたは符
号なし被乗数D〔M−1:0〕から開始する。上述のよ
うに被乗数の倍数を形成する時、「ブース・ディジッ
ト」−2*R〔2*i+1〕+R〔2*i〕+R〔2*
i−1〕(Nが偶数の場合)または−2*R〔2*i〕
+R〔2*i−1〕+R〔2*i−2〕(Nが奇数の場
合)の値に依存して、被乗数の倍数に対し次表の形式が
得られる。
【表4】
【0074】ただし、I〔M:0〕は、D〔M:0〕の
ビット毎の反転(すなわち1の補数)である。
【0075】X〔M+1:0〕およびXCのいくつかの
値に対し、これらは全て次表の形式を有する。
【表5】
【0076】従って、実行を望まれている加算は次表の
形式のものとなる。
【表6】
【0077】同じ形式であるが、iは1大きく、従って
Liは2大きい、「キャリー」値および「セーブ」値で
終わることが望まれる。このプロセスにおいては、S
〔M:0〕およびC〔M:0〕に対する新しい値が発生
せしめられようとしており、これらをそれぞれS’
〔M:0〕およびC’〔M:0〕と呼ぶことにする。S
L〔〕の新しい2ビットであるが、存在する諸ビットS
L〔Li−1:0〕には妨害を与えない、SL〔Li+
1:Li〕もまた発生せしめられる。同様にして、新し
い2ビットCL〔Li+1:Li〕が発生せしめられる
が、存在する諸ビットCL〔Li−1:0〕には妨害を
与えない。最後に、最低位の2ビットA〔M+N:Li
+M+1〕が使い尽くされるので、この改変されたキャ
リー保存加算は次表の形式の結果を生じることが望まれ
る。
【表7】
【0078】これに対して実行されることが望まれる加
算に適合するものとして、改変されたキャリー保存加算
が、以下の形式のものであることが望まれているのがわ
かる。
【表8】
【0079】「低位」領域は直ちに消去されうる。その
わけは、この領域が最終和に対して行う寄与は不変であ
るからである。同様にして、線の上下双方の同じ位置に
現れているビットA〔M+N:Li+M+3〕も消去さ
れうる。最終形式に対するそれらの寄与も、やはり明ら
かに不変である。この後、この改変されたキャリー保存
加算は、次の形式のものでなくてはならないことがわか
る。
【表9】
【0080】次に、「アクティブ」領域およびその下の
2つの遷移ビットに関し、ある通常のキャリー保存加算
が行われる。
【数6】CL〔Li〕 =XC (CL〔Li+1〕,SL〔Li〕)=S
〔0〕、C
〔0〕、およびX
〔0〕の2ビット和 (C’
〔0〕,SL〔Li+1〕) =S〔1〕、C
〔1〕、およびX〔1〕の2ビット和 i=2,3,...,Mに対し、 (C’〔i−1〕,S’〔i−2〕)=S〔i〕、C
〔i〕、およびX〔i〕の2ビット和
【0081】この演算を行うことにより、S’〔M−
2:0〕、SL〔Li+1〕、SL〔Li〕、C’〔M
−1:0〕、CL〔Li+1〕およびCL〔Li〕がラ
インの下方の最終和に対し、S〔M:0〕、C〔M−
1:0〕、X〔M:0〕、XCおよびC〔M〕の「アク
ティブ領域」コピーがラインの上方で行うのと同じ寄与
を行うことが保証される。従ってここで、これらの全て
を、XCを含む行上の全ての0と共に消去することがで
き、この改変されたキャリー保存加算の残りは、次の形
式のものではなくてはならない。
【表10】
【0082】この時点で、この残りの和に対し、ある数
学的変更を加える。まず、その第2行は次の2行の和に
よって置換されうる。 1,...,1 1 1 0,...,0 0 NOT(C〔M〕)
【0083】証明:もしC〔M〕が1ならば、これは、
全て1の行と、全て0の行との和であり、それは全て1
の行である。逆に、もしC〔M〕が0ならば、これは、
全て1の行と、右端の単一の1との和である。これは、
全て0の行と、左端のキャリー出力との和を生じる。こ
のキャリー出力は、加算が行われている領域外にあるの
で無視される。従って、いずれの場合においても、和は
C〔M〕のコピーの行である。
【0084】同様にして、第3行は次の2行の和によっ
て置換されうる。 1,...,1 1 1 0,...,0 0 NOT(X〔M+1〕)
【0085】これは、要求されているキャリー保存加算
を次の形式に改変する。
【表11】
【0086】次に、1の行2つを加算し、再びキャリー
出力を無視する。無視する理由は、それが加算の行われ
ている領域外にあるからである。これは、要求されてい
るキャリー保存加算を次の形式に改変する。
【表12】
【0087】この時点で、演算、 (S’〔M〕,S’〔M−1〕)=A〔Li+M+
1〕、NOT(C〔M〕)、およびNOT(X〔M+
1〕)の2ビット和 を行えば、要求されている加算から、全てのこれらのビ
ットをいくつかの0と共に消去しうることがわかり、そ
の結果、次の形式が残る。
【表13】
【0088】そして、最後に、もし演算、 C’〔M〕=NOT(A〔Li+M+2〕) を行えば、全てC〔M〕の行を、全て1の行と、最も右
の位置にまさにNOT(C〔M〕)を含む行と、によっ
て置換しえたことを述べた議論の逆により、加算和のこ
の残部が解決される。
【0089】全体的結論:演算の組、 CL〔Li〕 =XC (CL〔Li+1〕,SL〔Li〕)=S
〔0〕、C
〔0〕、およびX
〔0〕の2ビット和 (C’
〔0〕,SL〔Li+1〕) =S〔1〕、C
〔1〕、およびX〔1〕の2ビット和 i=2,3,...,Mに対し、 (C’〔i−1〕,S’〔i−2〕)=S〔i〕、C
〔i〕、およびX〔i〕の2ビット和 (S’〔M〕,S’〔M−1〕)=A〔Li+M+
1〕、NOT(C〔M〕)、およびNOT(X〔M+
1〕)の2ビット和 C’〔M〕 =NOT(A〔Li+
M+2〕) を行うことにより、所望の演算のための改変されたキャ
リー保存加算を実行することができる。
【表14】
【0090】このようにして、「キャリー」値および
「セーブ」値を正しく初期化できれば、(M+N+1)
ビットの累算値を有する、Mビットに対するNビットの
乗算−累算演算を、初期化し、被乗数の倍数を、上述の
改変されたキャリー保存加算を用い、その後キャリー保
存値に関する最終加算を行って、加算することにより、
行いうる。キャリー保存加算を実現するリスト内にある
演算はM+4個なので、これを行うためには、データバ
スのほんの少しの「増大」が要求され、通常考えられる
はずのその幅の倍増が、所望される演算のために要求さ
れることはなかったのである。
【0091】本発明は、上記の諸方程式を実行する任意
の乗算器行を、それが完全なアレイをなすか、または反
復乗算器をなすかにかかわらず、また、該アレイまたは
反復ループ内にいくつの乗算器行が存在するかにかかわ
らず、含む。
【0092】さらに、もし同じ数的重みを有するビット
が役目を交換しても、本質的な変化は起こらないことに
注意すべきである。例えば、XCとC
〔0〕との、ま
た、C’〔M−1〕とS’〔M−1〕との、役目を交換
することにより、以下の方程式を得ることができ、これ
らは本発明を同様に効果的に実行しうるはずである。
【数7】 CL〔Li〕 =C
〔0〕 (CL〔Li+1〕,SL〔Li〕)=S
〔0〕、X
C、およびX
〔0〕の2ビット和 (C’
〔0〕,SL〔Li+1〕) =S〔1〕、C
〔1〕、およびX〔1〕の2ビット和 i=2,3,...,M−1に対し、 (C’〔i−1〕,S’〔i−2〕)=S〔i〕、C
〔i〕、およびX〔i〕の2ビット和 (S’〔M−1〕,S’〔M−2〕)=S〔M〕、C
〔M〕、およびX〔M〕の2ビット和 (S’〔M〕,C’〔M−1〕)=A〔Li+M+
1〕、NOT(C〔M〕)、およびNOT(X〔M+
1〕)の2ビット和 C’〔M〕 =NOT(A〔Li+
M+2〕)
【0093】本発明はまた、以上において簡単に参照さ
れた、もっと洗練された被乗数の倍数の発生方法のある
ものに対しても適用されうる。例えば、ブース・アルゴ
リズムのもう1つの改変は、Xnを、2の累乗に数−
4、−3、−2、−1、0、1、2、3、または4の1
つを乗じたものにすることにより、サイクル毎に乗数の
3ビットを処理しうる。そのようなアルゴリズムによれ
ば、それぞれのサイクルにおいて、累算値の3ビットが
「アクティブ」領域内へ吸収されなくてはならない。こ
れは、キャリー保存加算の改変された部分が多少似てい
る、上述と類似した方法で行われうる。すなわち、
【表15】
【0094】ただし、C’〔M〕=NOT(A〔Li+
M+2〕)、かつS’〔M:M−1〕は、A〔Li+M
+1〕、NOT(C〔M〕)、およびNOT(X〔M+
1〕)の2ビット和。とするよりも、むしろ、
【表16】
【0095】ただし、C’〔M+1〕=NOT(A〔L
i+M+3〕)、S’〔M+1:M〕は、A〔Li+M
+2〕、1、および0の2ビット和(すなわち、S’
〔M+1〕=A〔Li+M+2〕、S’〔M〕=NOT
(A〔Li+M+2〕))、かつ、(C’〔M〕,S’
〔M−1〕)は、A〔Li+M+1〕、NOT(C
〔M〕)、およびNOT(X〔M+1〕)の2ビット
和。とするのである。
【0096】以上を用いて、符号付きおよび符号なしバ
ージョンの双方における、32×32→64の乗算およ
び32×32+64→64の乗算−累算演算を行う、乗
算器の例を次に説明する。
【0097】この例において説明されない、さらに可能
な改善は、以下の通りであると思われる。 * 全ての残りの被乗数の倍数が0になる(従って、も
う加算が実際には要求されない)時を検出し、その時正
しい最終加算を行うために、「低位」、「アクティ
ブ」、および「高位」領域における諸ビットの、比較的
繁雑な再配置を行うことを本質的に含む早期終了。 * データバス上に、例えばALUの一部として存在し
うるもう1つの加算器を用いることによる、この回路内
の最終加算器の必要性の回避。 * 「キャリー低位ラッチ」が末尾から2ビット/乗算
器行で満たされ、一方「累算値高位ラッチ」が末尾から
おなじ率で空にされる事実を利用して、同じ物理的レジ
スタは双方の値を保持するように使用されうるはずであ
る。開始時には、それは累算値の高位部分を含み、終了
時には、それは「セーブ」値の低位部分を含み、中間で
は、それは、まだ使い尽くされていない高位累算値ビッ
トと、それまでに発生せしめられた低位「キャリー」値
ビットとを含む。これは、回路に対する有用な改善であ
る。
【0098】乗算器は以下の入力を用いる。 MPLIER〔31:0〕 − 乗数オペランド MCAND〔31:0〕 − 被乗数オペランド ACCVAL〔63:0〕 − 累算値 SIGNED − 符号付き演算が行われ
る場合1、符号なし演算が行われる場合0である単一ビ
ット ACCUM − 乗算−累算が行われる
場合1、単に乗算が行われる場合0である単一ビット および、事象の正しいシーケンスを生ずる制御入力。
【0099】この回路は、その結果としてRESULT
〔63:0〕を発生する。この乗算器の基本的ブロック
図は、図4に示されている通りである(わかりやすくす
るために、制御信号は示されていない)。この乗算器
は、MPLIER〔31:0〕*MCAND〔31:
0〕+ACCVAL〔63:0〕を5サイクルで計算
し、さまざまなブロックは、それぞれのサイクルにおい
て以下の機能を行う。
【0100】乗数ラッチ サイクル1: R〔31:0〕=MPLIER〔31:
0〕 R〔32〕 =SIGNED AND MPLIER
〔31〕 サイクル2−5: 変化なし被乗数ラッチ サイクル1: D〔31:0〕=MCAND D〔32〕 =SIGNED AND MCAND
〔31〕 サイクル2−5: 変化なし
【0101】キャリー保存初期化演算子 サイクル1: i=0,1,...,32 に対して、 SI〔i〕= ACCUM AND ACCVAL
〔i〕 CI〔i〕= R
〔0〕 AND NOT(D〔i〕) サイクル2−5: 変化なし
【0102】キャリー保存ラッチA サイクル1−3: フェーズ2において、S0〔32:
0〕およびC0〔32:0〕がそれぞれS6〔32:
0〕およびC6〔32:0〕からロードされる サイクル4−5: 変化なしキャリー保存ラッチB サイクル1−4: フェーズ1において、S4〔32:
0〕およびC4〔32:0〕がそれぞれS3〔32:
0〕およびC3〔32:0〕からロードされる サイクル5: 変化なし
【0103】乗算器A サイクル1: S1〔32:0〕= SI〔32:0〕 C1〔32:0〕= CI〔32:0〕 サイクル2−5: S1〔32:0〕= S0〔32:0〕 C1〔32:0〕= C0〔32:0〕
【0104】ブース・エンコーダ サイクル1: B1〔4:0〕= BoothEnc(R〔2:0〕) B2〔4:0〕= BoothEnc(R〔4:2〕) B4〔4:0〕= BoothEnc(R〔6:4〕) B5〔4:0〕= BoothEnc(R〔8:6〕) サイクル2: B1〔4:0〕= BoothEnc(R〔10:8〕) B2〔4:0〕= BoothEnc(R〔12:10〕) B4〔4:0〕= BoothEnc(R〔14:12〕) B5〔4:0〕= BoothEnc(R〔16:14〕) サイクル3: B1〔4:0〕= BoothEnc(R〔18:16〕) B2〔4:0〕= BoothEnc(R〔20:18〕) B4〔4:0〕= BoothEnc(R〔22:20〕) B5〔4:0〕= BoothEnc(R〔24:22〕) サイクル5: 変化なし
【0105】ただし、BoothEnc機能は、次表に
よって指定される。
【表17】
【0106】乗算器行1、2、4、および5 全てのサイクルにおいて、乗算器行kは、入力D〔3
2:0〕、Bk〔4:0〕、AHk〔1:0〕、Sk
〔32:0〕、およびCk〔32:0〕を得て、以下の
方程式により出力S〔k+1〕〔32:0〕、C〔k+
1〕〔32:0〕、SLk〔1:0〕、およびCLk
〔1:0〕を発生する。
【0107】まず、乗算器を用い、次表によりX〔3
2:0〕およびXCを発生する。
【表18】
【0108】次に、 CLk
〔0〕 =XC (CLk〔1〕,SLk
〔0〕) =Sk
〔0〕、Ck
〔0〕、およびX
〔0〕の2ビット和 (C(k+1)
〔0〕,SLk〔1〕)=Sk〔1〕、
Ck〔1〕、およびX〔1〕の2ビット和 i=2,3,...,32に対し、 (C(k+1)〔i−1〕,S(k+1)〔i−2〕)
=Sk〔i〕、Ck〔i〕、およびX〔i〕の2ビット
和 (S(k+1)〔32〕,S(k+1)〔31〕)=A
Hk
〔0〕、NOTk(C〔32〕)、およびNOT
(X〔33〕)の2ビット和 C(k+1)〔M〕 =NOT(AHk
〔1〕)
【0109】累算値高位ラッチ これらは、内部信号ACCHI〔31:0〕を含む。サ
イクル1: i=0,1,...,30に対し、 ACCHI〔i〕=ACCUM AND ACCVAL
〔i+33〕 ACCHI〔31〕=SIGNED AND ACCU
M ACCVAL〔63〕 AH1〔1:0〕= ACCHI〔1:0〕 AH2〔1:0〕= ACCHI〔3:2〕 AH4〔1:0〕= ACCHI〔5:4〕 AH5〔1:0〕= ACCHI〔7:6〕 サイクル2: AH1〔1:0〕= ACCHI〔9:
8〕 AH2〔1:0〕= ACCHI〔11:10〕 AH4〔1:0〕= ACCHI〔13:12〕 AH5〔1:0〕= ACCHI〔15:14〕 サイクル3: AH1〔1:0〕= ACCHI〔1
7:16〕 AH2〔1:0〕= ACCHI〔19:18〕 AH4〔1:0〕= ACCHI〔21:20〕 AH5〔1:0〕= ACCHI〔23:22〕 サイクル4: AH1〔1:0〕= ACCHI〔2
5:24〕 AH2〔1:0〕= ACCHI〔27:26〕 AH4〔1:0〕= ACCHI〔29:28〕 AH5〔1:0〕= ACCHI〔31:30〕 サイクル4: 変化なし
【0110】キャリーおよびセーブ低位ラッチ サイクル1: SL〔7:0〕 =(SL5〔1:
0〕,SL4〔1:0〕,SL2〔1:0〕,SL1
〔1:0〕) CL〔7:0〕 =(CL5〔1:0〕,CL4〔1:
0〕,CL2〔1:0〕,CL1〔1:0〕) サイクル2: SL〔15:8〕=(SL5〔1:
0〕,SL4〔1:0〕,SL2〔1:0〕,SL1
〔1:0〕) CL〔15:8〕=(CL5〔1:0〕,CL4〔1:
0〕,CL2〔1:0〕,CL1〔1:0〕) サイクル3:SL〔23:16〕=(SL5〔1:
0〕,SL4〔1:0〕,SL2〔1:0〕,SL1
〔1:0〕) CL〔23:16〕=(CL5〔1:0〕,CL4
〔1:0〕,CL2〔1:0〕,CL1〔1:0〕) サイクル4:SL〔31:24〕=(SL5〔1:
0〕,SL4〔1:0〕,SL2〔1:0〕,SL1
〔1:0〕) CL〔31:24〕=(CL5〔1:0〕,CL4
〔1:0〕,CL2〔1:0〕,CL1〔1:0〕) サイクル5: 変化なし
【0111】乗算器B サイクル1−4: SF〔31:0〕= SL〔31:
0〕 CF〔31:0〕= CL〔31:0〕 サイクル5: SF〔31:0〕= S6〔31:
0〕 CF〔31:0〕= C6〔31:0〕乗算器C サイクル1−4: SF〔31:0〕= SL〔31:
0〕 CF〔31:0〕= CL〔31:0〕 サイクル5: CIN=R
〔0〕 CIN=NEWC
【0112】キャリーラッチ サイクル1−3: 変化なし サイクル4: NEWC=COUT サイクル5: 変化なし
【0113】最終加算器 全てのサイクルにおいて:(COUT,SUM〔31:
0〕)=SF〔31:0〕、CF〔31:0〕、および
CINの33ビット和結果ラッチ サイクル1−3: 変化なし サイクル4: RESULT〔31:0〕 = S
UM〔31:0〕 サイクル5: RESULT〔62:32〕= S
UM〔31:0〕
【0114】図4および図5は、Mビットの被乗数(M
CAND〔〕)と、Nビットの乗数(MPLIE
R〔〕)とを乗算し、次に(M+N)ビットの累算値
(ACCVAL〔〕)を加算する、乗算−累算回路を示
し、この例においてはM=N=32である。Nビット乗
数は乗数ラッチ2内にラッチされ、Mビット被乗数は被
乗数ラッチ4内にラッチされる。(M+N)ビット累算
値の低位部分は、キャリー保存初期化器6へ供給され、
(M+N)ビット累算値の高位部分は、累算値高位ラッ
チ8へ供給される。キャリー保存初期化器6は、Mビッ
ト被乗数(D〔〕)を受け、乗数ラッチ2の最下位ビッ
トの値が1であるか、0であるかにより、それぞれ、前
記Mビット被乗数(D〔〕)のビット毎の反転、または
0を出力する。その結果は、マルチプレクサA10へ供
給され、キャリー値またはセーブ値の一方として働く。
キャリー値またはセーブ値の他方は、累算値の最低位ビ
ットを含む。
【0115】Nビット乗数はまた、一連のブース・エン
コーダ12へ供給され、該エンコーダは、後の乗算器行
のそれぞれの1つへ供給される改変されたブース被加数
を発生する。
【0116】図4に示されているように、一連の乗算器
行14、16、18、20が備えられ、それぞれ前述の
乗算器アルゴリズムを実行する。この乗算器アルゴリズ
ムは、それぞれの反復において累算値の2ビットを取入
れる。それぞれのサイクルにおける、それぞれの乗算器
行14、16、18、20への入力は、ブース・ディジ
ット(B1〔〕、B2〔〕、B4〔〕、B5〔〕)と、
累算値高位ラッチ8内に記憶されている累算値からの諸
ビットと、被乗数ラッチ4からのMビット被乗数の諸ビ
ットと、前の乗算器行からの直接的または間接的セーブ
値およびキャリー値と、である。
【0117】それぞれの乗算器行からの出力は、後の反
復においてもう変化しない最低位ビット(SL、CL)
と、現在のセーブ値およびキャリー値とである。これら
の最低位ビットは、キャリーおよびセーブ低位ラッチ2
4内に累算される。セーブ値およびキャリー値(S
6〔〕、C6〔〕)は、キャリー保存ラッチA22およ
びマルチプレクサA10を経て、最初の乗算器行14へ
帰還される。最終乗算反復が完了した時、最後の乗算器
行20およびキャリーおよびセーブ低位ラッチ24から
のキャリー値およびセーブ値は、それぞれ最終加算器2
6へ供給され、そこでそれらは2サイクルで加算され
(キャリーおよびセーブ低位ラッチ24からの値は、第
1サイクルにおいて最終加算器26へ供給され、最終乗
算器行20からの値は、第2サイクルにおいて供給され
る)、その結果は結果ラッチ28内に記憶される。マル
チプレクサC30は、最終加算器26の第1加算サイク
ル中において1の補数の初期化から残されたキャリービ
ットR
〔0〕、および最終加算器26の第1サイクルと
第2サイクルとの間において必要な任意のキャリービッ
ト、を供給する働きをする。
【0118】ここでは、添付図面を参照しつつ本発明の
実施例を詳細に説明してきたが、本発明はこれらの特定
の実施例に制限されるものではなく、本技術分野に習熟
した者ならば、添付の特許請求の範囲によって定められ
る本発明の範囲および精神から逸脱することなく、それ
らに対してさまざまな変更および改変を行いうることを
理解すべきである。
【図面の簡単な説明】
【図1】部分被加数のシーケンスを発生することによ
り、乗算結果を決定する乗算器の概略図。
【図2】全ての部分被加数を決定するために、帰還を用
いて単一乗算器行が再使用される図1の改変バージョン
を示す。
【図3】複数の乗算器行と共に帰還が用いられるもう1
つの改変を示す。
【図4】乗算−累算演算を行う回路の一部分を示す。
【図5】乗算−累算演算を行う回路の、図4とは異なる
部分を示す。
【符号の説明】
2 乗数ラッチ 4 被乗数ラッチ 6 キャリー保存初期化器 8 累算値高位ラッチ 10 マルチプレクサA 12 ブース・エンコーダ 14 乗算器行1 16 乗算器行2 18 乗算器行4 20 乗算器行5 22 キャリー保存ラッチA 24 キャリーおよびセーブ低位ラッチ 26 最終加算器 28 結果ラッチ 30 マルチプレクサC
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 7/52 310 G06F 17/10

Claims (23)

    (57)【特許請求の範囲】
  1. 【請求項1】 Mビット被乗数にNビット乗数を乗算
    し、かつ(M+N)ビットの累算値を加算する電子乗算
    および加算装置であって、該装置が、 (i)前記Mビット被乗数と前記Nビット乗数との乗算
    を表す一連の部分被加数を発生する手段と、 (ii)少なくとも1つの前記部分被加数を入力キャリー
    保存部分結果にキャリー保存加算して、出力キャリー保
    存部分結果を生じる、該キャリー保存加算手段であっ
    て、該入力キャリー保存部分結果が、変化するアクティ
    ブキャリービットと、変化するアクティブセーブビット
    とを有し、該アクティブセーブビットの最上位ビットが
    ビット位置Zを有し、該アクティブセーブビットの最下
    位ビットがビット位置Yを有する、前記キャリー保存加
    算手段と、 (iii )前記(M+N)ビットの累算値のXビットを、
    キャリー保存サイクルにおいて前記入力キャリー保存部
    分結果に、ビット位置Zより高いビット位置において加
    算する手段であって、ZおよびYが共にキャリー保存サ
    イクル間においてXだけ増加するようになっている、該
    加算手段と、を含む、電子乗算および加算装置。
  2. 【請求項2】 X=2である、請求項1記載の電子乗算
    および加算装置。
  3. 【請求項3】 前記加算手段が、 キャリー保存サイクルにおいて、前記出力キャリー保存
    部分結果を、ビット位置Z+1およびZ+2における拡
    張セーブビットおよびビット位置Z+2における拡張キ
    ャリービットにより拡張する手段を含み、 前記拡張セーブビットが、 前記(M+N)ビットの累算値のZ+1番目ビットと、 前記活動キャリービットのZ番目ビットの補数と、 前記部分被加数のZ+1番目ビットの補数と、 の和によって与えられ、 前記拡張キャリービットが前記(M+N)ビット累算値
    のZ+2番目ビットの補数により与えられる、請求項2
    記載の電子乗算および加算装置。
  4. 【請求項4】 前記発生手段がブース(Booth)エ
    ンコーダを含み、前記一連の部分被加数が一連のブース
    被加数である、請求項1記載の電子乗算および加算装
    置。
  5. 【請求項5】 M=Nである、請求項1記載の電子乗算
    および加算装置。
  6. 【請求項6】 M=N=32である、請求項5記載の電
    子乗算および加算装置。
  7. 【請求項7】 前記装置が該装置を通るデータバスを有
    し、該データバスがN+Mビットより小さい幅を有す
    る、請求項1記載の電子乗算および加算装置。
  8. 【請求項8】 M=Nであり、かつ前記データバスがM
    +3ビットの幅を有する、請求項7記載の電子乗算およ
    び加算装置。
  9. 【請求項9】 前記部分被加数のZ+1番目ビットが符
    号選択入力に依存して0または符号拡張であり、前記M
    ビットの被乗数およびNビットの乗数が、該符号選択入
    力に依存してそれぞれ符号なしまたは符号付き数として
    取扱われる、請求項1記載の電子乗算および加算装置。
  10. 【請求項10】 ハードウェア乗算器を有する集積回路
    中央処理装置を含む、請求項1記載の電子乗算および加
    算装置。
  11. 【請求項11】 Mビットの被乗数にNビットの乗数を
    乗算し、かつ(M+N)ビットの累算値を加算する電子
    乗算および加算装置内における乗算および加算方法であ
    って、該方法が、 (i)前記Mビットの被乗数と前記Nビットの乗数との
    乗算を表す一連の部分被加数を発生するステップと、 (ii)前記部分被加数のそれぞれの1つを、入力キャリ
    ー保存部分結果にキャリー保存加算して出力キャリー保
    存部分結果を生じる、キャリー保存加算ステップであっ
    て、該入力キャリー保存部分結果が、変化するアクティ
    ブキャリービットと、変化するアクティブセーブビット
    とを有し、該アクティブセーブビットの最上位ビットが
    ビット位置Zを有し、該アクティブセーブビットの最下
    位ビットがビット位置Yを有する、前記キャリー保存加
    算ステップと、 (iii )前記(M+N)ビット累算値のXビットを、キ
    ャリー保存サイクルにおいて、前記入力キャリー保存部
    分結果に、ビット位置Zより高いビット位置において加
    算するステップであって、ZおよびYが共にキャリー保
    存サイクル間においてXだけ増加するようになってい
    る、該加算ステップと、を含む、電子乗算および加算装
    置内における乗算および加算方法。
  12. 【請求項12】 X=2である、請求項11記載の乗算
    および加算方法。
  13. 【請求項13】 前記加算ステップが、 キャリー保存サイクルにおいて前記出力キャリー保存部
    分結果をビット位置Z+1およびZ+2における拡張セ
    ーブビットおよびビット位置Z+2における拡張キャリ
    ービットにより拡張するステップを含み、 前記拡張セーブビットが、 前記(M+N)ビットの累算値のZ+1番目ビットと、 前記アクティブキャリービットのZ番目ビットの補数
    と、 前記部分被加数のZ+1番目ビットの補数と、 の和によって与えられ、 前記拡張キャリービットが前記(M+N)ビットの累算
    値のZ+2番目ビット補数により与えられる、請求項1
    1記載の乗算および加算方法。
  14. 【請求項14】 Mビットの被乗数にNビットの乗数を
    乗算し、かつ(M+N)ビットの累算値を加算する電子
    乗算および加算装置であって、該装置が、 (i)前記Mビットの被乗数と前記Nビットの乗数との
    乗算を表す部分被加数のシーケンスを発生する手段と、 (ii)少なくとも1つの前記部分被加数を、入力キャリ
    ー保存部分結果にキャリー保存加算して出力キャリー保
    存部分結果を生じるキャリー保存加算手段であって、該
    入力キャリー保存部分結果および該出力キャリー保存部
    分結果がそれぞれキャリー値およびセーブ値を含む、前
    記キャリー保存加算手段と、 (iii )該キャリー値および該セーブ値を、 前記(M+N)ビットの累算値の少なくとも一部と、 第1部分被加数と、のそれぞれの1つに初期化する手段
    と、を含む、電子乗算および加算装置。
  15. 【請求項15】 前記発生手段が改変されたブースエン
    コーダを含み、前記部分被加数のシーケンスが改変され
    たブース被加数のシーケンスである、請求項14記載の
    電子乗算および加算装置。
  16. 【請求項16】 前記Nビットの乗数が符号付きである
    時は、該Nビットの乗数を表す内部乗数のそれぞれのビ
    ットR〔a〕が、 R〔(N−1)から1まで〕は前記Nビットの乗数の対
    応ビットに等しく、 R〔N〕はR〔(N−1)〕に等しい、によって与えら
    れる、請求項15記載の電子乗算および加算装置。
  17. 【請求項17】 前記Nビットの乗数が符号なしである
    時は、該Nビットの乗数を表す内部乗数のそれぞれのビ
    ットR〔a〕が、 R〔(N−1)から1まで〕は前記Nビットの乗数の対
    応ビットに等しく、 R〔N〕は0に等しい、によって与えられる、請求項1
    5記載の電子乗算および加算装置。
  18. 【請求項18】 もしR〔0〕が0に等しければ、前記
    第1部分被加数が0に初期化される、請求項16記載の
    電子乗算および加算装置。
  19. 【請求項19】 もしR〔0〕が1に等しければ、前記
    第1部分被加数が、前記Mビット被乗数のビット毎の逆
    に対して後に1を加算したものに初期化される、請求項
    16記載の電子乗算および加算装置。
  20. 【請求項20】 前記キャリー値と前記セーブ値とを加
    算するための最終加算器を含み、該最終加算器に対する
    キャリー入力ビットがR〔0〕にセットされる、請求項
    19記載の電子乗算および加算装置。
  21. 【請求項21】 Mビットの被乗数にNビットの乗数を
    乗算し、かつ(M+N)ビットの累算値を加算する電子
    乗算および加算装置内における乗算および加算方法であ
    って、該方法が、 (i)前記Mビットの被乗数と前記Nビットの乗数との
    乗算を表す一連の部分被加数を発生するステップと、 (ii)前記部分被加数のそれぞれの1つを入力キャリー
    保存部分結果にキャリー保存加算して、出力キャリー保
    存部分結果を生じるキャリー保存加算ステップであっ
    て、該入力キャリー保存部分結果および該出力キャリー
    保存部分結果がそれぞれキャリー値およびセーブ値を含
    む、前記キャリー保存加算ステップと、 (iii )該キャリー値および該セーブ値を、 前記(M+N)ビットの累算値の少なくとも一部と、 第1部分被加数と、のそれぞれの1つに初期化するステ
    ップと、を含む、電子乗算および加算装置内における乗
    算および加算方法。
  22. 【請求項22】 (i)前記Mビットの被乗数と前記N
    ビットの乗数との乗算を表す一連の部分被加数を発生す
    る手段と、 (ii)少なくとも1つの前記部分被加数を入力キャリー
    保存部分結果にキャリー保存加算して出力キャリー保存
    部分結果を生じるキャリー保存加算手段であって、該入
    力キャリー保存部分結果および該出力キャリー保存部分
    結果がそれぞれキャリー値およびセーブ値を含む、前記
    キャリー保存加算手段と、 (iii )該キャリー値および該セーブ値を、 前記(M+N)ビットの累算値の少なくとも一部と、 第1部分被加数と、のそれぞれの1つに初期化する手段
    と、を含む、請求項1記載の電子乗算および加算装置。
  23. 【請求項23】 (i)前記Mビットの被乗数と前記N
    ビットの乗数との乗算を表す部分被加数のシーケンスを
    発生するステップと、 (ii)前記部分被加数のそれぞれの1つを入力キャリー
    保存部分結果にキャリー保存加算して出力キャリー保存
    部分結果を生じるキャリー保存加算ステップであって、
    該入力キャリー保存部分結果および該出力キャリー保存
    部分結果がそれぞれキャリー値およびセーブ値を含む、
    前記キャリー保存加算ステップと、 (iii )該キャリー値および該セーブ値を、 前記(M+N)ビットの累算値の少なくとも一部と、 第1部分被加数と、のそれぞれの1つに初期化するステ
    ップと、を含む、請求項11記載の電子乗算および加算
    装置内における乗算および加算方法。
JP02703095A 1994-03-02 1995-02-15 電子乗算および加算装置および方法 Expired - Lifetime JP3516503B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB94039559 1994-03-02
GB9403955A GB2287331B (en) 1994-03-02 1994-03-02 Electronic multiplying and adding apparatus and method

Publications (2)

Publication Number Publication Date
JPH07271556A JPH07271556A (ja) 1995-10-20
JP3516503B2 true JP3516503B2 (ja) 2004-04-05

Family

ID=10751118

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02703095A Expired - Lifetime JP3516503B2 (ja) 1994-03-02 1995-02-15 電子乗算および加算装置および方法

Country Status (3)

Country Link
US (1) US5528529A (ja)
JP (1) JP3516503B2 (ja)
GB (2) GB2287331B (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US5721892A (en) * 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
US6237016B1 (en) 1995-09-05 2001-05-22 Intel Corporation Method and apparatus for multiplying and accumulating data samples and complex coefficients
US5936872A (en) * 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
US6058408A (en) * 1995-09-05 2000-05-02 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US5983253A (en) * 1995-09-05 1999-11-09 Intel Corporation Computer system for performing complex digital filters
US6470370B2 (en) 1995-09-05 2002-10-22 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US5822459A (en) * 1995-09-28 1998-10-13 Intel Corporation Method for processing wavelet bands
US5621674A (en) * 1996-02-15 1997-04-15 Intel Corporation Computer implemented method for compressing 24 bit pixels to 16 bit pixels
US5831885A (en) * 1996-03-04 1998-11-03 Intel Corporation Computer implemented method for performing division emulation
US7454361B1 (en) 1999-04-22 2008-11-18 Ceats, Inc. Individual seat selection ticketing and reservation system
US6446104B1 (en) * 1999-09-15 2002-09-03 Sun Microsystems, Inc. Double precision floating point multiplier having a 32-bit booth-encoded array multiplier
US7430578B2 (en) * 2001-10-29 2008-09-30 Intel Corporation Method and apparatus for performing multiply-add operations on packed byte data
US7191203B2 (en) * 2002-09-25 2007-03-13 Broadcom Corporation Method and system for high-speed multiplication
US7797366B2 (en) * 2006-02-15 2010-09-14 Qualcomm Incorporated Power-efficient sign extension for booth multiplication methods and systems
US9563401B2 (en) * 2012-12-07 2017-02-07 Wave Computing, Inc. Extensible iterative multiplier

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4575812A (en) * 1984-05-31 1986-03-11 Motorola, Inc. X×Y Bit array multiplier/accumulator circuit
EP0197945A1 (en) * 1984-09-28 1986-10-22 Motorola, Inc. A digital signal processor for single cycle multiply/accumulation
US5262976A (en) * 1989-11-13 1993-11-16 Harris Corporation Plural-bit recoding multiplier
US5124941A (en) * 1990-11-01 1992-06-23 Vlsi Technology Inc. Bit-serial multipliers having low latency and high throughput
US5325320A (en) * 1992-05-01 1994-06-28 Seiko Epson Area efficient multiplier for use in an integrated circuit
JP2859779B2 (ja) * 1992-06-17 1999-02-24 三菱電機株式会社 乗算器

Also Published As

Publication number Publication date
GB9727525D0 (en) 1998-02-25
GB2287331A (en) 1995-09-13
GB2287331B (en) 1998-04-29
GB9403955D0 (en) 1994-04-20
GB2317978A (en) 1998-04-08
JPH07271556A (ja) 1995-10-20
US5528529A (en) 1996-06-18
GB2317978B (en) 1998-05-20

Similar Documents

Publication Publication Date Title
JP3516503B2 (ja) 電子乗算および加算装置および方法
JP3605181B2 (ja) 掛け算累算命令を使用したデータ処理
JP6694880B2 (ja) 有効度整合
US5220525A (en) Recoded iterative multiplier
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
US6446104B1 (en) Double precision floating point multiplier having a 32-bit booth-encoded array multiplier
JP2011134346A (ja) 算術プロセッサ
JP3139466B2 (ja) 乗算器及び積和演算器
US5796645A (en) Multiply accumulate computation unit
JP2001524698A (ja) マルチプレシジョン整数演算用の装置
US7827226B2 (en) Hybrid arithmetic logic unit
US6728744B2 (en) Wide word multiplier using booth encoding
US5734599A (en) Performing a population count using multiplication
JP2006228190A (ja) 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法
US5036482A (en) Method and circuitry for digital system multiplication
US5721697A (en) Performing tree additions via multiplication
KR100308726B1 (ko) 고속 산술 장치에서 올림수 예견가산기 스테이지의 수를 감소시키는 장치 및 방법
US6633896B1 (en) Method and system for multiplying large numbers
JPH04355827A (ja) 開平演算装置
JP3516504B2 (ja) データ処理乗算装置および方法
US7167885B2 (en) Emod a fast modulus calculation for computer systems
JP2007500388A (ja) 長整数乗算器
EP0534760A2 (en) High speed multiplier device
TWI679577B (zh) 多位元加法器設備與用於執行算術運算之設備及方法
US20240111489A1 (en) Bignum addition and/or subtraction with carry propagation

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: 20040106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040120

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090130

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100130

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100130

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110130

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110130

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120130

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130130

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130130

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term