JP3271120B2 - 2進数を高速乗算する装置 - Google Patents

2進数を高速乗算する装置

Info

Publication number
JP3271120B2
JP3271120B2 JP14924191A JP14924191A JP3271120B2 JP 3271120 B2 JP3271120 B2 JP 3271120B2 JP 14924191 A JP14924191 A JP 14924191A JP 14924191 A JP14924191 A JP 14924191A JP 3271120 B2 JP3271120 B2 JP 3271120B2
Authority
JP
Japan
Prior art keywords
bit
binary number
consecutive
binary
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP14924191A
Other languages
English (en)
Other versions
JPH04232528A (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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH04232528A publication Critical patent/JPH04232528A/ja
Application granted granted Critical
Publication of JP3271120B2 publication Critical patent/JP3271120B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • 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/5332Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は論理回路に関し、特に、
コンピュータシステムにおいて2進数を高速乗算する装
置に関する。
【0002】
【従来の技術】2つの2進数を乗算する典型的な方法は
一方の数を取り出し、その数と他方の数のそれぞれのビ
ット(1又は0)とを最下位のビットから始めて順に乗
算し、各ステップの乗算値をそれぞれ先行するステップ
で得た部分積の上位ビットに加算し、その結果を1ビッ
ト右へシフトする。この演算はきわめて多くの時間を要
する。
【0003】
【発明が解決しようとする課題】従って、本発明の目的
は、2進数を高速乗算する新たな回路を提供することで
ある。
【0004】
【課題を解決するための手段】本発明の上記の目的及び
その他の目的は、全ての2進数は1と0から成る様々な
数の順序通りに配列するビットを1つのグループとし
て、1つのグループ又はそのようなグループが順序通り
に配列した集合体から構成され、しかも、1のビットは
全て下位のビット位置で連続し、0のビットは全て上位
のビット位置で連続しているという事実を利用すること
により2つの2進数を乗算する回路において実現され
る。回路は、仮想として、それらのグループのそれぞれ
において下位ビット位置にある連続する1のビットの数
に基づいて、グループごとの部分積を生成する。回路は
下位のグループから始めて、第1の2進数全体をたどり
終わるまで上位グループに向かって動作を進めてゆく。
回路はそのようにして仮想として生成した部分積を累算
して、最終積を得る。回路は、一方の2進数の固定長サ
ブセットについて部分積を生成することにより、仮想と
してそれらのグループの部分積を生成する。回路は、下
位ビット位置にある連続する1のビットの数に基づい
て、固定長サブセットごとの部分積を生成する。回路は
一方の2進数の最下位の固定長サブセットから始めて、
その2進数全体をたどり終わるまで、先行する固定長サ
ブセットから次の固定長サブセットをあるビット数だけ
オフセットしながら、上位の固定長サブセットに向かっ
て動作を進めてゆく。その都度オフセットされるビット
の数は先行する固定長サブセットの下位ビット位置にあ
る連続する1のビットの数と、それらの連続する1のビ
ットのすぐ後に続く連続する0のビットの数との和に等
しい。
【0005】本発明のこれらの目的及び特徴と、その他
の目的及び特徴は、添付の図面に関連する以下の詳細な
説明を参照することによりさらに良く理解されるであろ
う。図面中、いくつかの図を通して、同じ符号は同じ素
子を指す。
【0006】〔表記法及び用語〕以下の詳細な説明の中
には、コンピュータメモリ内部におけるデータビットの
操作をアルゴリズム及び記号表示により表している部分
がある。そのようなアルゴリズムによる説明や表示は、
データ処理技術に熟達する人がその作業の内容を同じ分
野の当業者に最も有効に伝達するために使用する手段で
ある。ここでは、また、一般的にも、アルゴリズムは所
望の結果に至る一連の首尾一貫したステップであると考
えられている。それらのステップは、物理的な量の物理
的操作を必要とするステップである。通常、そのような
量を記憶,転送,組み合わせ,比較及びその他の方法に
よる操作が可能である電気的信号又は磁気信号の形態を
とるが、必ずしもそうである必要はない。時によって
は、主に一般に使用されている用語であるという理由に
より、それらの信号をビット,値,要素,記号,文字,
項,数などと呼ぶと好都合であることがわかっている。
しかしながら、それらの用語及びそれに類する用語は適
切な物理的な量と関連させるべきものであり、そのよう
な量に単に便宜上付されたラベルであるにすぎないとい
うことを忘れてはならない。
【0007】さらに、実行される動作を、一般にはオペ
レータが実行する知的動作と関連している加算又は比較
などの用語で呼ぶ場合が多いが、ここで説明する本発明
の一部を形成する動作のいずれにおいても、そのような
オペレータの能力は不要であり、多くの場合に望ましく
ない。動作は機械の動作である。本発明の動作を実行す
るのに有用な機械には汎用デジタルコンピュータ又は他
の同様な装置がある。いずれの場合にも、コンピュータ
を動作させる際の方法動作と、計算それ自体の方法との
区別に留意すべきである。本発明は、電気的信号又はそ
の他の物理的(たとえば、機械的,化学的)信号を処理
して、他の所望の物理的信号を発生させるのに際してコ
ンピュータを動作させる装置に関する。
【0008】
【実施例】まず、図1に関して説明すると、図1には、
本発明に従って2つの2進数の高速乗算を実行する回路
10のブロック線図が示されている。第1の2進数Yは
第1のレジスタ22に記憶されている。また、第2の2
進数Xは第2のレジスタ12に記憶されている。
【0009】第2のレジスタ12の値を一連の乗算器回
路13〜17においていくつかの定数と乗算するのであ
るが、各乗算器回路は、下位ビット位置に連続する1の
ビットを有し且つ残る上位ビット位置には連続する0の
ビットを有する2進定数と値Xとを乗算する。たとえ
ば、乗算器回路13は値Xと2進定数0000000000000001
とを乗算し、乗算器回路14は値Xと2進定数00000000
00000011とを乗算する。乗算器回路15は値Xと2進定
数0000000000000111とを乗算する。乗算器回路16と、
それに続く乗算器回路も同じようにしてXに同様の2進
定数を乗算した値を計算する。必要とされる乗算器回路
13〜17の数については後に説明する。このような演
算それぞれの結果は乗算器回路13〜17によりラッチ
され、マルチプレクサ19の入力端子に保持されても良
い。
【0010】乗算器回路13〜17による実際の乗算
は、値Xをアキュムレータの上位ビットに加算し、次
に、その値を右へ1ビットシフトすることにより全く簡
単に実行できる。このようなアキュムレータへのXの値
の加算と、部分積のシフトは、2進定数に1が増えるた
びに続いてゆく。全ての加算とシフトが終了した後、部
分積を2進定数の残る上位ビット位置にある連続する0
のビットの数に等しいビット数だけさらに右へシフトし
て、最終積を得る。あるいは、乗算は、次に低い乗算器
回路が発生された結果を左へ1ビットシフトして、その
値を2倍にし、その結果にXの値を加算することにより
実行されても良い。これらの構成の組み合わせは、利用
できる回路を最も有利に利用している当業者であれば思
いつくことであろう。
【0011】乗算器回路13〜17からのこれらの出力
を使用して、本発明の回路10は第1の2進数Yに関わ
る部分積を生成する。このことは、図1に示すように最
も右側の位置にある最下位ビットから始まって配列して
いる第1のレジスタ22の数0000111001000011を見る
と、さらに良く理解できるであろう。最下位ビットから
始めて、最初に現れる値は1である。すぐ左側には再び
1が続き、その後に4つの0が連続して現れる。さらに
その左には1つの1があり、その後に2つの0が連続し
ている。最後に、3つの連続する1の後に、4つの連続
する0が続いている。このように、これらのグループは
1(1を利用できる場合)から始まり、左側にある全て
の連続する1を取り込み、1の左側にある連続する0が
全て取り込んだ後に終わる。先にYとして説明した値に
ついて、レジスタ22の上に3つのグループg0〜g2
を示してある。
【0012】前述のように、あらゆる2進数は、1と0
から成る様々な数の順序通りに配列するビットを1つの
グループとして、1つのグループ又はそのようなグルー
プが順序通りに配列した集合体から構成され、しかも、
1のビットは全て下位のビット位置で連続し、0のビッ
トは全て上位のビット位置で連続していることは認めら
れるであろう。2進数1111111111111111は下位のビット
位置に16個の連続する1のビットを有し、上位のビッ
ト位置には連続する0のビットを全く含まない上記のよ
うなグループを1つ有し、2進数0000000000000000は下
位のビット位置には連続する1のビットを全く含まず、
上位のビット位置に16個の連続する0のビットを有す
る上記のようなグループを1つ有することが分かるであ
ろう。
【0013】個々のグループにそれぞれ含まれている1
の数は、個々の乗算器回路13〜17で使用する2進定
数の値により表される。従って、値Xと値Yとの乗算
は、Yの値の最下位のグループから始めて、先に説明し
たような隣接する1と連続する0の数を確定し、Xにグ
ループ中の連続する1の数と同じ数の1から構成される
2進定数を乗算した事前計算値を選択し、その値をシフ
トレジスタの上位ビットに加算し、その部分積を当該グ
ループの0と1の数(グループのサイズ)だけ右へシフ
トし、Xに第2のグループの連続する1の数と同じ数の
1から構成される2進定数を乗算した第2の事前計算値
を選択し、その値をシフトレジスタの部分積の上位ビッ
トに加算し、その部分積を第2のグループの0と1の数
だけ右へシフトし、グループごとに上記の選択、加算及
びシフトの各ステップが実行され終わるまでこのように
して動作を継続することにより実行されれば良い。
【0014】2進数Yのグループごとの選択,加算及び
シフトの各動作をグループの固定長サブセットを使用し
て仮想実行する構成を図1に示す。特定の回路において
はさらに大きな固定長サブセット(たとえば、一度に8
ビットずつ)を使用することが望ましいであろうが、そ
のような回路を詳細に説明すると煩雑になるので、一度
に4ビットのみの固定長サブセットを処理する能力を有
する回路を図1には示した。尚、一度に8ビットの固定
長サブセットを処理する回路を詳細に表す論理式を図3
〜図5としてこの明細書に添付した。
【0015】図1の回路はYレジスタ22にあるビット
を一度に4つずつ処理する。4ビットから成る第1の固
定長サブセットを処理した後、Yレジスタに残っている
ビットを動作中に確定した数のビット位置だけ右へシフ
トし、次の4ビットの固定長サブセットを処理する。Y
レジスタのビット位置を、右側の最下位のビット位置か
ら始まって左へ進む順序で、b〔31..0〕と示して
ある。このように、最下位の4つのビットはビットb
〔3..0〕ということになる。これらの位置にあるビ
ットの値を4つのANDゲート COUNT 0〜3へ転
送する。ビット位置b
〔0〕のビットの値をANDゲー
ト0〜3のそれぞれへ転送し、ビット位置b〔1〕のビ
ットの値をANDゲート COUNT1〜3のそれぞれ
へ転送する。また、ビット位置b〔2〕のビットの値を
ANDゲート COUNT 2〜3のそれぞれへ転送し、
ビット位置b〔3〕のビットの値をANDゲートCOU
NT3のみへ転送する。
【0016】ANDゲートCOUNT 0〜3 は正規
(非反転)出力端子と、反転出力端子とをそれぞれ有す
る。それぞれのANDゲートCOUNT 0〜3 は、全
て1である入力値を受信したときに限って非反転出力端
子で1を発生するので、ANDゲートCOUNT 0
は、ビット位置b0のビットの値が1であるときに非反
転出力端子で1を発生し、ANDゲートCOUNT 1
はビット位置b0及びb1のビットの値が共に1である
ときに非反転出力端子で1を発生し、ANDゲートCO
UNT 2 は、ビット位置b0,b1及びb2のビット
の値が全て1であるときに非反転出力端子で1を発生
し、ANDゲートCOUNT 3 はビット位置b0,b
2,b2及びb3のビットの値が全て1であるときに非
反転出力端子で1を発生する。このように、Yレジスタ
22に示した初めの4つのビット(0011)を例にと
ると、ANDゲートCOUNT 0及びCOUNT 1は
非反転出力端子で1を発生するが、ANDゲートCOU
NT 2及びCOUNT 3は非反転出力端子で0を発生
する。全体の結果としては、レジスタ22の最上位の1
を保持しているビットと同じ位置にあるANDゲート
COUNT 0〜3は1を発生し、下位の番号のAND
ゲート COUNT 0〜3も同様に1を発生するという
ことになる。
【0017】それぞれのANDゲート COUNT 0〜
3は反転出力をも発生する。ANDゲートCOUNT
0〜3 の非反転出力端子及び反転出力端子の値は、第
2組のANDゲートLENGTH 0〜3 に選択的に供
給される。ANDゲートLENGTH 0はANDゲー
ト COUNT 0の非反転出力と、ANDゲート CO
UNT 1〜3 の反転出力とを受け取る。すなわち、こ
のゲート LENGTH 0は、ANDゲート COUN
T 0が1を供給し且つその他のANDゲートCOUN
T 1〜3が非反転出力端子から0を供給したときにの
みイネーブルされる。ANDゲートLENGTH 1
は、ANDゲートCOUNT 1の非反転出力及びAN
DゲートCOUNT 2〜3の反転出力を受け取る。従
って、このゲートLENGTH 1は、ANDゲートC
OUNT 1が1を供給し且つその他のANDゲートC
OUNT 2〜3 が非反転出力端子から0を供給したと
きにのみイネーブルされる。ANDゲートLENGTH
2は、ANDゲートCOUNT 2の非反転出力及びA
NDゲートCOUNT 3の反転出力を受け取る。AN
Dゲート LENGTH3はANDゲートCOUNT 3
の非反転出力のみを受け取る。このように、ANDゲ
ートLENGTH 0〜3は、ANDゲートLENGT
H 0〜3の唯一つにおいてのみ、固定長サブセット中
の連続する1のストリングの長さを指示する出力を発生
する。数0011の場合、ANDゲート LENGTH
1のみが1の出力を発生する。
【0018】第1の固定長サブセットg0の中の連続す
る1の数をANDゲートLENGTH 0〜3 の出力で
確定したならば、それを使用して、乗算器回路13〜1
7により供給される事前計算値をマルチプレクサ19に
よって選択する動作を制御する。必要とされる乗算器回
路13〜17の数は、回路が使用する固定長サブセット
のサイズに応じて決まる。図1に示す実施例の回路10
においては、4ビットの固定長サブセットを使用するの
で、必要な乗算器回路は13〜16の4つだけである。
【0019】図示してある数Yの場合、数0011(1
0進数3)は、乗算器回路14で供給された値をマルチ
プレクサ19により転送する動作をイネーブルする。こ
の値は、マルチプレクサ19により、従来の技術では良
く知られている構成の加算器回路30に供給される。そ
の後、マルチプレクサ19により加算器回路30へ転送
された値を、先にシフトレジスタ31に部分積があれば
(この時点ではない)、その部分積の上位ビットに加算
する。
【0020】4ビットずつのサブセットとして供給され
た0と1の総計をカウントするために、ビットb
〔3..0〕をそれぞれ反転させて、4つのORゲート
TOTAL0〜3の中の1つへ転送する。ANDゲート
COUNT 0〜3の非反転出力も4つのORゲート
TOTAL 0〜3へそれぞれ1つずつ転送される。A
NDゲート COUNT 0〜3は、入力として接続され
た全てのビット位置が1を保持しているとき及びいずれ
か1つのANDゲート COUNT 0〜3と、それより
下位の全てのANDゲート COUNT 0〜3とが全て
1の出力を発生するときにのみ1を発生するので、OR
ゲートTOTAL 0〜3はビット位置b〔3..0〕
ごとに、最初の1から始めて、それに連続する全ての1
をたどり、最終的には最上位の連続する1に続く0をた
どってゆくという順序で、1の出力は発生する。ビット
位置b〔3..0〕に示す値(0011)の場合、OR
ゲートTOTAL0〜3はそれぞれ1の出力を発生す
る。
【0021】1つの固定長サブセットの中の1と0とを
合計するために、ORゲートTOTAL0〜3の出力を
4つのANDゲート CT 0〜3に供給する。これらの
ゲートは、ORゲート TOTAL 0〜3から供給され
てきた値が全て1であるときにのみ1の出力を発生す
る。すなわち、ANDゲートCT0〜3の非反転出力
は、最初の1から始まって、連続する1と0の全てをた
どって続くビット位置b〔3..0〕における最上位の
0を反映するゲートCT0〜3で1となる結果になる。
また、下位のゲートCT0〜3も1を出力する。このよ
うに、ANDゲートCT0〜3は、連続する1と、連続
する0の双方を表すゲートCT0〜3の全ての非反転出
力端子で1の出力値を発生するという点を除いて、AN
DゲートCOUNT 0〜3 と同様に機能する。Yレジ
スタのビット位置b〔3..0〕に示した値(001
1)の場合、それぞれのANDゲートCT0〜3が1の
出力を発生する。
【0022】ANDゲート CT 0〜3はそれぞれ反転
出力をも発生する。ANDゲートCT 0〜3の非反転
出力端子及び反転出力端子における値は、一連のAND
ゲートGS 0〜3に選択的に供給される。これらのゲ
ート GS 0〜3は、カウントした連続する1と連続す
る0の数を指示するゲート GS 0〜3でのみ1の出力
を発生する。ANDゲートGS 0はANDゲートCT
0 の非反転出力と、ANDゲートCT 1〜3の反転出
力とを受け取る。従って、このゲートGS 0は、AN
Dゲート CT 0 が1を供給し且つその他のANDゲ
ート CT 1〜3がゼロを供給するときにのみイネーブ
ルされる。ANDゲート GS 1はANDゲート CT
1の非反転出力と、ANDゲート CT2〜3 の反転出
力とを受け取る。従って、このゲートGS 1は、AN
DゲートCT 1が1を供給し且つその他のANDゲー
トCT 2〜3 が0を供給するときに限ってイネーブル
される。ANDゲートGS2はANDゲートCT 2 の
非反転出力と、ANDゲートCT 3の反転出力とを受
け取る。ANDゲートGS 3はANDゲートCT 3の
非反転出力のみを受け取る。このように、ANDゲート
GS 0〜3は、固定長サブセットの下位ビットにおけ
る連続する1と0の全ストリングの長さを指示する出力
を単一のゲート GS 0〜3でのみ発生する。この値は
シフトレジスタ31に供給されて、事前計算2進定数が
加算されるたびにそれに続いて部分積の値をシフトさせ
る。値0011の場合、ANDゲート GS 3は、シフ
トレジスタ31における部分積のビット位置4つ分のシ
フトを指示する1を発生する。
【0023】ANDゲート GS 0〜3の出力端子にお
けるこの値は、Yレジスタにある数をグループ及びビッ
ト位置の数だけシフトさせるためにも使用される。グル
ープg0の初めの4つのビット位置は第1回の反復でカ
ウント済みであるので、数をビット位置4つだけ右へシ
フトすると、新たなビット位置b〔3..0〕の数は
(0100)となる。この数がANDゲートCOUNT
0〜3に供給されると、それらのゲートの非反転出力端
子は全て0を発生する。これらの値はANDゲートCO
UNT 0〜3の反転出力端子の値と共にANDゲート
LENGTH 0〜3に供給されて、ANDゲート LE
NGTH 0〜3の全ての出力端子で0の出力を発生さ
せる。この値をマルチプレクサ19へ転送するので、第
2回の反復では数Xの事前計算倍数は使用されない。従
って、シフトレジスタ31の部分積の上位ビットは加算
器回路30によりシフトレジスタ31に戻されるだけで
ある。
【0024】これに対し、数0100が反転後にORゲ
ート TOTAL0〜3に供給されたときには、ORゲ
ート TOTAL 0、ORゲート TOTAL 1及びO
Rゲート TOTAL 3の端子で1の出力が発生する。
これらの値が4つのANDゲートCT 0〜3に供給さ
れると、ANDゲートCT 0〜1の非反転出力端子で
1の値が発生する。そこで、それらの値はANDゲート
GS 0〜3の中のANDゲート GS 1でのみ1の出
力を発生させる。この値はシフトレジスタ31に供給さ
れて、部分積をビット位置2つだけ右へシフトさせる。
これで、グループg0の第1のグループのビットに関す
る動作は完了する。
【0025】先の場合と同様に、ANDゲート GS 0
〜3の出力端子の値はYレジスタ22の数をカウントし
た固定長サブセットにおけるビット位置の数だけ右へシ
フトさせるためにも使用される。第2回の反復では第2
の固定長サブセットにある2つのビット位置をカウント
したので、数はビット位置2つ分シフトされ、その結
果、ビット位置における新たな数は(1001)となる
る。この時点から後、動作は同じように進行してゆき、
数Y全体をたどり終わって最終積が計算されるまで、残
るグループそれぞれにおける1の数と、1と0の総数と
に基づいて部分積を仮想計算する。
【0026】さらに詳細に云えば、グループg1の第1
のビットとグループg1の3つのビットを処理するとき
には、ANDゲート TOTAL 0〜3は、マルチプレ
クサ19に乗算器回路13から供給された値を加算器回
路30へ転送させる単一の1を指示する。加算器回路3
0はシフトレジスタ31の部分積をさらに受け取る。加
算器回路30は乗算器回路13から受け取った値をシフ
トレジスタ31から受け取った部分積の上位ビットに加
算し、その結果をシフトレジスタ31へ転送する。AN
Dゲート GS 0〜3は、固定長サブセットの下位ビッ
トには合わせて3つの連続する1と0があることを示
す。この値は、シフトレジスタの部分積をビット位置3
つだけ右へシフトさせるために使用される。
【0027】この値は、Yレジスタの値をビット位置3
つだけ右へシフトさせるためにも使用され、そこで、ビ
ット位置b〔3..0〕には数0111が来る。これら
のビットにより、ANDゲート TOTAL 0〜3は連
続する3つの1があることを指示し、マルチプレクサ1
9は乗算器回路15から供給された値を加算器回路30
へ転送することになる。加算器回路30はシフトレジス
タ31の部分積をさらに受け取る。加算器回路30は乗
算器回路15から受け取った値をシフトレジスタ31か
ら受け取った部分積の上位ビットに加算し、その結果を
シフトレジスタ31へ転送する。ANDゲート GS 0
〜3は、固定長サブセットの中に合わせて4つの連続す
る1と0があることを指示する。この値は、シフトレジ
スタの部分積をビット位置4つだけ右へシフトさせるた
めに使用される。
【0028】グループg2の残る部分についても動作は
同様に続いて、最終積を得る。
【0029】図2は、図1に示した本発明を実施するた
めの構成の変形を示す。図2では、事前計算が不要であ
るように乗算器回路13〜17を省略してある。その代
わりに、固定長サブセットごとにXの値を固定長サブセ
ットの下位ビット位置にある連続する1のビットの数と
等しいビット数だけシフトし、このシフト値をXの値及
び先に計算した部分積(もしあれば)と共に加算器回路
へ転送するシフトレジスタ35を設けている。このよう
に、X3の乗算の場合には、Xの値を右へ2つシフトし
且つXの値を減算することが必要である。X7の乗算で
は、Xの値を右へビット3つ分シフトし且つXの値を減
算することが必要である。X15の乗算では、Xの値を
右へビット4つ分シフトし且つXの値を減算することが
必要である。これらの値はANDゲート TOTAL 0
〜3の出力として直接供給されても良い。シフトレジス
タ35は、単に、加算器回路30の入力側に存在する乗
算器回路13〜17及びマルチプレクサ19の代わりに
使用されているにすぎない。
【0030】以上、本発明を好ましい一実施例に関して
説明したが、当業者の趣旨から逸脱せずに様々な変形や
変更を実施し得ることは理解できるであろう。従って、
本発明は特許請求の範囲によって評価されるべきであ
る。
【0031】
【発明の効果】本発明によれば、連続する0が現れたと
きにのみシフト動作を起こせば良いので、2進数の乗算
に通常必要であった加算とシフトの動作は全て不要にな
る。そのため、従来の乗算器と比べて相当に高速で乗算
プロセスを実行できるであろう。
【図面の簡単な説明】
【図1】本発明に従って構成した回路を示すブロック線
図。
【図2】図1の回路の変形を示すブロック線図。
【図3】〜
【図5】一度に8ビットの固定長サブセットを処理する
回路を詳細に表す論理式。
【符号の説明】
12 Xレジスタ 13,14,15,16,17 乗算器回路 19 マルチプレクサ 22 Yレジスタ 30 加算器回路 31 シフトレジスタ COUNT 0〜3,LENGTH 0〜3,CT 0〜
3,GS 0〜3 ANDゲート TOTAL0〜3 ORゲート
───────────────────────────────────────────────────── フロントページの続き (73)特許権者 591064003 901 SAN ANTONIO ROA D PALO ALTO,CA 94303, U.S.A. (56)参考文献 特開 平1−3734(JP,A) 特開 昭63−282839(JP,A) 特開 平2−293929(JP,A) 米国特許5036482(US,A) (58)調査した分野(Int.Cl.7,DB名) G06F 7/52 310

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】 連続する1のビット群を下位側に、連続
    する0のビット群を上位側にそれぞれ有するビット群グ
    ループが1以上順に配置された形式を持つ第1の2進数
    と第2の2進数を乗算する回路において、 (a)前記第1の2進数と、前記第2の2進数とをそれ
    ぞれ保持する第1のレジスタ手段及び第2のレジスタ手
    段と、 (b)前記第1のレジスタ手段及び第2のレジスタ手段
    に結合し、前記第1の2進数の前記ビット群グループ
    のそれぞれ前記第2の2進数とを乗算して各ビット群
    グループに対応する部分積を生成する部分積生成手段
    と; (c)前記部分積生成手段に結合し、前記生成された部
    分積のそれぞれを累算して、第1、第2の2進数の積を
    得る累算手段とを具備する回路。
  2. 【請求項2】 第1の2進数と、第2の2進数とを乗算
    する回路において、 (a)前記第1の2進数と、前記第2の2進数とをそれ
    ぞれ保持する第1のレジスタ手段及び第2のレジスタ手
    段と; (b)前記第1のレジスタ手段に結合し、前記第1の2
    進数の固定長サブセットについて、前記固定長サブセッ
    トのそれぞれの最下位ビットから始まる連続する1のビ
    ットの数と、前記連続する1のビットにすぐ続いている
    連続する0のビットの数とを確定する確定手段と; (c)前記第2のレジスタ手段及び前記確定手段に結合
    し、前記固定長サブセットのそれぞれについて前記連続
    する1のビットの数が確定されたとき、前記固定長サブ
    セットのそれぞれについて前記第2の2進数の倍数を計
    算し、 計算される前記倍数が、前記第2の2進数に、前記固定
    長サブセットのそれぞれについて確定された前記連続す
    る1のビットの数と等しい数において、下位のビット位
    置にある連続する1のビットと、残る上位のビット位置
    にある連続する0のビットとから構成される2進定数を
    乗算した値に等しくなるように構成される計算手段と; (d)前記計算手段及び前記確定手段に結合し、前記第
    1の2進数の前記固定長サブセットについて前記第2の
    2進数の前記計算された倍数のそれぞれを累算する累算
    手段とを具備する回路。
  3. 【請求項3】 第1の2進数と、第2の2進数とを乗算
    する回路において、 (a)前記第1の2進数と、前記第2の2進数とをそれ
    ぞれ保持する第1のレジスタ手段及び第2のレジスタ手
    段と; (b)前記第1のレジスタ手段に結合し、前記第1の2
    進数の4ビットサブセットについて、前記4ビットサブ
    セットのそれぞれの最下位ビットから始まる連続する1
    のビットの数と、前記連続する1のビットにすぐ続いて
    いる連続する0のビットの数とを確定する確定手段と; (c)前記第2のレジスタ手段及び前記確定手段に結合
    し、前記4ビットサブセットのそれぞれについて前記連
    続する1のビットの数が確定されたとき、前記4ビット
    サブセットのそれぞれについて前記第2の2進数の倍数
    を計算し、 計算される前記倍数が、前記第2の2進数に、前記4ビ
    ットサブセットのそれぞれについて確定された前記連続
    する1のビットの数と等しい数の、下位のビット位置に
    ある連続する1のビットと、残る位のビット位置にあ
    る連続する0のビットとから構成される2進定数を乗算
    した値に等しくなるように構成される計算手段と; (d)前記計算手段及び前記確定手段に結合し、前記第
    1の2進数の前記4ビットサブセットについて前記第2
    の2進数の前記計算された倍数のそれぞれを累算する累
    算手段とを具備する回路。
JP14924191A 1990-05-25 1991-05-27 2進数を高速乗算する装置 Expired - Fee Related JP3271120B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US528,937 1990-05-25
US07/528,937 US5008850A (en) 1990-05-25 1990-05-25 Circuitry for multiplying binary numbers

Publications (2)

Publication Number Publication Date
JPH04232528A JPH04232528A (ja) 1992-08-20
JP3271120B2 true JP3271120B2 (ja) 2002-04-02

Family

ID=24107837

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14924191A Expired - Fee Related JP3271120B2 (ja) 1990-05-25 1991-05-27 2進数を高速乗算する装置

Country Status (4)

Country Link
US (1) US5008850A (ja)
JP (1) JP3271120B2 (ja)
KR (1) KR940008614B1 (ja)
AU (1) AU639329B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5119325A (en) * 1990-12-04 1992-06-02 Motorola, Inc. Multiplier having a reduced number of partial product calculations
GB2287333B (en) * 1994-03-11 1998-02-11 Advanced Risc Mach Ltd Data processing multiplier
US5646877A (en) * 1995-05-25 1997-07-08 Texas Instruments Incorporated High radix multiplier architecture
US5771186A (en) * 1995-06-07 1998-06-23 International Business Machines System and method for multiplying in a data processing system
US6263081B1 (en) * 1997-07-17 2001-07-17 Matsushita Electric Industrial Co., Ltd. Elliptic curve calculation apparatus capable of calculating multiples at high speed
ITTO20010817A1 (it) * 2001-08-17 2003-02-17 Telecom Italia Lab Spa Circuito moltiplicatore.
US7296049B2 (en) * 2002-03-22 2007-11-13 Intel Corporation Fast multiplication circuits
US7167885B2 (en) * 2002-03-22 2007-01-23 Intel Corporation Emod a fast modulus calculation for computer systems
US11256979B2 (en) * 2018-03-30 2022-02-22 Intel Corporation Common factor mass multiplication circuitry

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864528A (en) * 1986-07-18 1989-09-05 Matsushita Electric Industrial Co., Ltd. Arithmetic processor and multiplier using redundant signed digit arithmetic
US4864529A (en) * 1986-10-09 1989-09-05 North American Philips Corporation Fast multiplier architecture

Also Published As

Publication number Publication date
US5008850A (en) 1991-04-16
KR940008614B1 (ko) 1994-09-24
KR910020548A (ko) 1991-12-20
AU639329B2 (en) 1993-07-22
JPH04232528A (ja) 1992-08-20
AU7637991A (en) 1991-11-28

Similar Documents

Publication Publication Date Title
US4754421A (en) Multiple precision multiplication device
US6209017B1 (en) High speed digital signal processor
EP0411491B1 (en) Method and apparatus for performing division using a rectangular aspect ratio multiplier
US3515344A (en) Apparatus for accumulating the sum of a plurality of operands
JP3271120B2 (ja) 2進数を高速乗算する装置
JPH0477338B2 (ja)
JPH05250146A (ja) 整数累乗処理を行なうための回路及び方法
JP2502836B2 (ja) 除算回路の前処理装置
US3578961A (en) Preconditioned divisor for expedite division by successive subtraction
US7607165B2 (en) Method and apparatus for multiplication and/or modular reduction processing
US6240540B1 (en) Cyclic redundancy check in a computer system
US4570056A (en) Automatically adaptable radix conversion system for use with variable length input numbers
JPS58129653A (ja) 乗算方式
JP2737933B2 (ja) 除算装置
JP2705162B2 (ja) 演算処理装置
JPS6259828B2 (ja)
US3293419A (en) Information handling device
JP3422001B2 (ja) 除算・剰余算方法及びその装置
JP3693873B2 (ja) マスクビット数演算装置、ベクトル処理装置、情報処理装置
JPH0619703B2 (ja) 除算装置
SU857979A1 (ru) Вычислительное устройство дл поворота вектора
KR100206184B1 (ko) 유클리디안 알고리즘을 이용한 유한 필드 다항식 나누기 연산 장치 및 방법
JPH0619704B2 (ja) 除算装置
JP2001211083A (ja) Crc出力演算装置
JPH04242425A (ja) 10進乗算器

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees