JP3519765B2 - 小修正を行って既存ハードウェアで実現する2進乗算 - Google Patents

小修正を行って既存ハードウェアで実現する2進乗算

Info

Publication number
JP3519765B2
JP3519765B2 JP31229993A JP31229993A JP3519765B2 JP 3519765 B2 JP3519765 B2 JP 3519765B2 JP 31229993 A JP31229993 A JP 31229993A JP 31229993 A JP31229993 A JP 31229993A JP 3519765 B2 JP3519765 B2 JP 3519765B2
Authority
JP
Japan
Prior art keywords
bit
operand
partial product
value
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP31229993A
Other languages
English (en)
Other versions
JPH06214760A (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.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of JPH06214760A publication Critical patent/JPH06214760A/ja
Application granted granted Critical
Publication of JP3519765B2 publication Critical patent/JP3519765B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • G06F7/5272Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/727Modulo N arithmetic, with N being either (2**n)-1,2**n or (2**n)+1, e.g. mod 3, mod 4 or mod 5
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49931Modulo N reduction of final result
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、整数乗算を行うための
データ処理技法に関し、特に、小修正しか必要とせず
に、既存データ処理装置で2進乗算をサポートする方法
と装置に関する。
【0002】
【従来の技術】データ処理において乗算はよく使用され
る演算なので、中央処理装置(「CPU」) には標準的に
乗算命令を行う能力が備わっている。このような乗算命
令の代表的な例は、以下では「MULi」と呼ぶことにする
が、それはナショナルセミコンダクタ社(「NSC 」)製
のCPUシリーズ32000/EPファミリで実行できる。
【0003】MULi命令とは、二つの nビットの信号(2
の補数)または符号なし整数オペランドを乗算して、 n
ビットの演算結果を返す命令である。ここではn=8、16ま
たは32である。MULi命令では、たとえその結果が大きす
ぎて nビットの数を使って表せなくても、トラップは生
じない。
【0004】MULi命令をサポートしている既存CPU は、
専用配列乗算器かシフト及び加算式アルゴリズムのどち
らかを使用している。専用配列乗算器を利用するCPU
は、少数のサイクル(普通、1または2サイクル)で乗
算を行うために、n2(n はビット数)要素の行列につい
ての両方のオペランドを取り扱うことで、高い性能を達
成している。低費用で、性能を簡略化した解法には、シ
フト及び加算式アルゴリズムを利用している。その実行
時間はn (普通、1*n+kまたは2*n+k、ここでのkは小定
数)に比例する。図1および図2を参照して、普通の2
進数用MULiのシフト及び加算式乗算アルゴリズムを以下
に説明する。
【0005】図1に示すように、記憶レジスタ即ちラッ
チ3と、およびシフトレジスタ5が、オペランドのAとBを
それぞれ格納するために用意される。シフトレジスタ7
は、部分積Pを格納するために用意される。AND(論理
積)ゲート9 と算術論理演算装置(「ALU」)11が、必要と
されるハードウェアを完全なものにしている。ANDゲー
ト9 として図1に示す単一ゲートは、便宜上使用した表
現である。現実には、オペランドA内のビット数がn個
で、n個のANDゲートのアレーを使用する。これらの各ゲ
ートは、2入力の一つで、オペランドA の対応するビッ
トを受け取る。ゲートのもう一つの入力で、各ゲートの
全ては同じ制御ビット、すなわちレジスタ5の最下位ビ
ット(「LSB」)を受け取る。このように、ANDゲート9 は一
緒に、並列に、ラッチ3内のオペランドAの全ビットを受
け取る。ANDゲート9にはn 本の出力線があり、レジスタ
5のLSBが「1」 である時、その出力線はラッチ3のnビット
を伝達し、その他の時、その出力線は「0」を伝達する。A
LU11には前記のANDゲート9の n本の出力に対してn本の
入力があり、また別のn本の入力の組では、レジスタ7
から部分積Pも受け取る。
【0006】図1に示すハードウェアの動作は、図2の
フローチャートに従って進行する。ステップ21で、ラッ
チ7をゼロに初期化し、そしてオペランドのAとBをラッ
チ3とレジスタ5のそれぞれへロードする。ステップ23
でレジスタ5のLSBが「1」であると判定すると、ALU11の入
力にラッチ3の内容Aを置くためにANDゲート9が開い
て、そしてステップ25によって、ALU11はレジスタ7のP
をラッチ3 のAに加算する。その演算結果をステップ27
によってレジスタ7 内に戻し置き、このようにしてPの
新しい値を構成する。しかし、レジスタ5のLSBが「0」で
あると、ANDゲート9は閉じて、「0」をALU11へのゲート出
力に置く。この「0」の値をステップ26によってPに加算す
る。したがって、ステップ26と27でレジスタ7内のPの値
は変化しない。ステップ27を実行すると、ステップ29で
レジスタ5と7の内容を右へ、すなわちLSBの方へ1ビッ
トずつシフトする。また、レジスタ7のLSBをレジスタ5
の最上位ビット(「MSB」) へと連結するので、このステッ
プの一部として、ゼロをレジスタ7のMSBへとシフトす
る。そしてレジスタ7のLSBを、レジスタ5のMSB内へシフ
トする。レジスタ5のLSBは、桁外れして桁落ちされる。
【0007】ステップ31で判定しながら、ステップ23、
25または26、27そして29のシーケンス(一連の動作)を
n回発生すると、その乗算の積はレジスタの5と7に格納
される。レジスタ5の内容Bはその積の値として得られ
る。レジスタ7内のデータPは無視されうる。MULi命令が
レジスタ5のデータBしか頼りにしていない事実は、以下
で説明する本発明の利点として使用される。
【0008】前記の実現には次のハードウェアを利用す
る。すなわち、ALU11、ANDゲート9、シフトレジスタの5
と7、およびラッチ3である。大抵のCPUの構成につい
て、ハードウェア要素のリストは、二つのシフトレジス
タの加算を必要とするが、その一方でALU 及びラッチは
既存ハードウェアの部品として利用できる。
【0009】
【発明が解決しようとする課題】本発明の課題の一つ
は、小修正しか必要とせずに、入手可能なCPUシリーズ
の既存ハードウェアで、整数の2進乗算を実現すること
である。
【0010】
【課題を解決するための手段】この課題及びその他の課
題は、オペランドを格納するための第一の手段と、もう
一つのオペランドを格納しているシフトレジスタとを設
けた2進乗算器に関する、本発明の一つの態様によって
達成される。第二の手段が、次のように誘導した部分積
を格納するために用意される。順序制御手段が、第一の
格納手段にあるオペランドのビットを連続的に指定す
る。部分積は、順序制御手段と指定されたビットそれぞ
れに応じてシフトレジスタ内に格納したオペランドをシ
フトすることとに同期した手段によって更新される。そ
のため、指定ビットがある値の時、部分積はシフトレジ
スタの内容で増加され、指定ビットが別の値の時、部分
積はそのままで変化しない。順序制御手段が第一の格納
手段にあるオペランドのビット全体を順序付けした後、
あるオペランドと別のオペランドを乗算した積は第二の
格納手段に存在する。
【0011】本発明のもう一つの態様は、次のステップ
を含む2進乗算のための方法に向けられる。第一のオペ
ランドと第二のオペランドを、それらの部分積と共に格
納する。第一のオペランドのビットを、LSBからMSBへと
順次指定する。第二のオペランドを、LSBから左に繰り
返しシフトし、そしてMSBを捨てる。部分積を、シフト
のステップと指定化のステップに同期して更新する。こ
うして、指定されたビットが一つの値を持つ時、部分積
はシフトされた第二のオペランド分増加され、指定され
たビットが別の値を持つ時、部分積はそのままで変化し
ない。最初のオペランドのビット全てを順次指定し終わ
ると、部分積は第一のオペランドと第二のオペランドを
乗算した積として得られる。
【0012】さらに、本発明の態様の一つは、整数用の
2進乗算器に向けられており、それはn回の動作ステッ
プが完了すると、nビットの積を与えるために二つのnビ
ットのオペランドを受け取る。また、それは部分積を生
じさせるために二つのnビットの整数オペランドを加算
するための加算器を内蔵している。ある手段が、動作ス
テップのそれぞれに対して、オペランドの一つのnビッ
トから一つのビットを指定する。第一の手段が部分積を
格納する。第二の手段がオペランドの別の一つを格納
し、そして、動作ステップのそれぞれにおいて、最下位
ビットに「0」 をロードしたり、最上位ビットを捨てたり
しながら、このオペランドの一つのビットを左へシフす
る。加算器には、第一の手段と第二の手段の出力に結合
させた入力がある。制御手段では、1ビットインクリメ
ント(増分)でLSBからMSBへとシフトするための指定化
手段を起動させることによって、n回の動作ステップの
それぞれを実行する。そして、指定されたビットが所定
の値を持つ場合に、第二の格納手段の内容に部分積を加
算する。加算器、第一の格納手段および第二の格納手段
は、n回の動作ステップのそれぞれに対してnビットのみ
処理するように設計される。
【0013】さらに、本発明のもう一つの態様は、次の
ステップを含むn回の動作ステップが完了すると、nビッ
トの積を提供するために二つのnビットのオペランドを
受け取る整数乗算の方法に向けられている。二つのnビ
ットの整数オペランドは、部分積を生み出すために加算
される。オペランドのうちの一つのnビットから一つの
ビットが、n回の動作ステップそれぞれに対して指定さ
れる。部分積は格納される。オペランドの別の一つは格
納され、動作ステップのそれぞれにおいて、このオペラ
ンドは、「0」 をLSB内にロードして、MSBを捨てながら一
つのビットが左へシフトされる。n回の動作ステップの
それぞれは、1ビットインクリメントでLSBからMSBへと
シフトするための指定化手段を起動させることによって
制御される。そして、指定されたビットが所定の値を持
つと、部分積はシフトされた別のオペランドに加算され
る。この加算、部分積の格納ステップ及び別のオペラン
ドの格納ステップは、n回の動作ステップのそれぞれに
対してnビットのみ処理する。
【0014】
【実施例】本発明の好適な実施例を、最小限のハードウ
ェアのみをMULi専用としなければならないということを
証明するため、特定のCPUで実行されているシフト及び
加算式のMULi命令がどんな方法かを例示することで説明
する。下記に引用した特定のCPUは、ロード/ストアの
アーキテクチャを有する32ビットRISC型CPUである。そ
のCPUは、8、16または32ビットのオペランドで実行する
算術演算と論理演算の各種命令をサポートしている。そ
のCPUの構造と動作の詳細は、「オンチップ記憶素子を
アクセスするためのCPUコアバスの最適化」として、199
2年12月11日に出願された米国出願番号989217に提供さ
れている。その内容はここで引用することによって、本
明細書に組み入れるものとする。便宜のために、そのCP
Uの構造と動作を下記に要約する。
【0015】CPU28 において、プログラムカウンタ(「P
C」)40はカウンタ、またはより正確には増分器であり、
その出力はバス41を通って算術論理演算装置(「ALU」)11
とバレルシフタ(「BS」)44に連結されている。マルチプレ
クサ(「MUX」)46 はALU11 とBS44の出力を受け取り、それ
に提供される別の入力はデータバス48上の信号である。
MUX46 は、結果バス49を通してバッファ53、レジスタフ
ァイル50、PC40およびMUX52 ヘ出力し、後者の出力はア
ドレスバス54と結合している。レジスタファイル50はバ
ス41に出力する。バッファ53は、MUX46 からデータバス
48上に出力信号を駆動するために適用される。このバッ
ファは、書き込みサイクルの対応時間中のみ、データバ
ス48上のデータを駆動する。つまりバッファ53は、残り
の時間はトライステート(無活動状態)になる。
【0016】置換回路(「DISP」)62は、データが即値モー
ド(プログラムストリームの一部)である計算に使用す
るため、バス63上にデータを出力する。また、このこと
はメモリ参照での置き換えの場合も同様である。
【0017】キュー(待ち行列)58は、フェッチ(命令
取り出し)命令実行中、バス48上のメモリから読み出し
たデータを受け取る。フェッチ命令は、バスが利用で
き、キューが一杯でない時はいつも、デコードおよび制
御回路60の制御部によって放出される。回路60のデコー
ド部は、キューの冒頭でその命令をデコードし、そし
て、それらを実行する。命令を実行すると、それは、次
の命令のための場所を作るためにキューから除かれる
(すなわち、FIFO動作)。デコード及び制御回路60
は、デコードされた命令の内容に従ってCPU28の残りを
活性化する。たとえば、その命令が、あるレジスタの内
容を別のレジスタの内容に加算することであると、次の
ステップが実行される。二つのレジスタが、レジスタフ
ァイル50からALU11の二つの入力のそれぞれへ読み出さ
れる。それから、ALUは加算命令を受け取り、そして実
行する。そしてMUX46は、結果バス49を通して、レジス
タファイル50内の対応レジスタへと戻るよう、ALUの結
果出力を経路指定する。
【0018】ALU11は、レジスタファイル50から読み出
すオペランドで、論理演算(AND、 OR、XOR、等)と算術
演算(加算、減算、等)を行う。シフト動作で、オペラ
ンドは、レジスタファイルからBS44の入力へ読み出され
る。シフトの結果は、BS44の出力からMUX46を通し、か
つ結果バス49を通してレジスタファイル50へ戻すよう、
制御回路60によって管理される。
【0019】分岐命令と飛び越し命令については、PC40
内の新しい値は、DISP62から受け取った置換を、PC40か
ら読み出された現在の値へ加算するALU11内で計算され
る。その演算結果は、MUX52を通して、新しいフェッチ
命令用のアドレスとして使用される。それからまた、そ
れは、将来の使用のためPC40内にも格納される。PC40
は、メモリから命令がフェッチされる毎に、その内容を
2又は4だけインクリメントする機能がある。この機能
は、データを、ワード(すなわち、2バイト)あるいは
倍長ワード(すなわち、4バイト)としてしかフェッチ
しないことから必要となる。
【0020】ロード命令およびストア命令は、メモリへ
データを読み出したり、書き込んだりするために使用さ
れる。ロード命令は、メモリから1や2または4バイト
で読み出している(例示せず)。データのアドレスは、
ALUにおいてレジスタの内容(レジスタファイル50から
読み出す)を置き換えの値(DISP装置62から読み出す)
へ加算することで生成される。加算結果は、MUX46と52
を通してアドレスバス54へ渡している。メモリから読み
出したデータは、データバス48上で受け取られ、そこか
らMUX46を通して、レジスタファイル50へ書き込まれ
る。データ整列が要求されると、それからそのデータ
は、BS44を通してシフトされ、そして再びレジスタファ
イル50へ書き込まれる。ストア命令で、アドレスの生成
は、ロード命令について上記に説明したとちょうど同じ
ように実行される。データは、レジスタファイル50から
読み出され、BS44によって一列に並べられ、そしてMUX4
6とバッファ53を通してデータバス48へ書き込まれる。
【0021】CPU28には、主要な部品が3つあり、すな
わち命令ローダ、実行ユニット、および制御ロジックで
ある。キュー58、PC40およびMUX52を含む命令ローダ
は、外部システムから命令をロードし、それらを実行す
るために実行ユニットへ与えている。実行ユニットに
は、レジスタファイル50、ALU11、BS44、DISP62および
バッファ53が含まれる。ブロック60を含む制御ロジック
は、命令ローダ、実行ユニットおよびCPUコアへのイ
ンターフェースを制御している。命令は、バス48から命
令キュー58内へフェッチされ、回路60によってデコード
される。それから、その命令は実行するため実行ユニッ
トへ送られる。ブロック60の制御ロジックは、各命令を
行うために実行ユニット内のどのリソース(資源)を使
用するかを選出する。さらに詳細に述べると、算術命令
と論理命令では、オペランドは、ALU11またはBS44内に
読み出され、そしてその結果は、レジスタファイル50内
の目的レジスタへ書き込まれる。ロード命令では、ALU1
1は有効メモリアドレスを計算する。そしてソースオペ
ランドはバス48によってメモリへ書き込まれる。分岐命
令と飛び越し命令については、目的のアドレスを、PC40
の現在の内容をDISP62内の置き換えの値へ加算すること
によってALU11で計算し、そしてその結果は、PC40内へ
書き込まれる。
【0022】ここで図4を参照すると、それは、本発明
のシフト及び加算アルゴリズムを実現するための乗算回
路を示している。ALU11とANDゲート9は、図1に示すも
のと同じものである。これらの要素に加えて、ラッチ71
がオペランドBを格納し、シフトレジスタ73がオペラン
ドAを格納し、そしてPはラッチ75内に格納される。CPU
のBS44は、ラッチ71とANDゲート9 間に接続される。二
つのオペランドはn ビットの整数であり、乗算の積はn
ビットの結果である。先ほど言及した手段すべてには、
乗算の各動作に対してnビットのみ処理する能力があ
る。この構成は、図5のフローチャートに従って動作さ
れる。
【0023】ステップ81では、オペランドのAとBを、シ
フトレジスタ73とラッチ71のそれぞれに格納する間に、
ラッチ75内に格納したPの値は、ゼロに初期化される。B
S44はラッチ71からi番目のビットを指定する。ここで
は、i=1〜nである。したがって、初めにラッチ71のLSB
を指定し、そしてステップ83によって、その値は抽出さ
れる。このビットの値が「1」であると、ステップ85によ
って判定された場合、ANDゲート9は開いて、ALU11に対
する入力へと、レジスタ73の内容Aを置く。ステップ87
では、Aを値Pへ加算し、そしてその結果は、ステップ89
によってP の新しい値としてラッチ75内へ再度格納され
る。しかし、抽出されたi番目のビットの値が「0」である
と、ALU11は、ステップ88によって「0」をPに加算し、そ
してステップの88と89の実行では、ラッチ75の内容に変
化は生じない。
【0024】ステップ89を実行すると、ステップ91はレ
ジスタ73を1位置分左へ、すなわち、MSBの方へシフト
し、そして「0」を、そのLSB内にロードする。そのMSBは
桁外れし、桁落ちされる。同時に、BS44はラッチ71内で
左へ、すなわち、MSBの方へ、次のi番目のビットの値を
抽出するためにシフトする。それから、ステップ93で
は、ステップ83、85、87または88、89そして91のシーケ
ンスがn回実行されたかどうかをチェックする。n回実行
されていないと、この動作はステップ83へ戻る。n回の
シーケンスが実行されると、乗算の積は、値Pとしてレ
ジスタ75内に存在する。
【0025】前記のMULi命令の実現には、CPUの一部で
あるBS44を利用する。前記に説明したように、本発明は
次の事実を利用する。それは、MULi命令はその結果のn
個の最下位ビットしか必要としていない、つまり、オー
バフロー(桁あふれ)検出が必要ないということであ
る。
【0026】図6には、本発明のMULi命令アルゴリズム
がいかにCPUで実現されるかを示している。本発明に直
接に必要な図3のCPUの部分しか、図6には示していな
い。前述した米国出願番号989217に記載のCPUに対して
使用した二段階の方法論では、ALU11とBS44の入力にラ
ッチを必要とする。オペランドBを格納するためのラッ
チ71は、ALU11の入力用ラッチである。ラッチ75はALU11
の入力用ラッチのうちの一つである。要素73は標準的に
は、単に ALU11の入力用ラッチのもう一つである。ALU1
1は、MULi命令以外の論理機能と算術機能すべてを実現
するために、簡単なラッチ73しか必要としていない。し
かし、本発明を実現するために、要素73は次のように動
作しているレジスタの73aと73bを含むように修正され
る。
【0027】レジスタ73aは入力線路の42と43を有する
ラッチである。オペランドAはバス41と入力線路42を介
してラッチ73a内ロードされる。入力線路42は、並列で
バス41からのデータをラッチ73aに供給する n本の線路
である。ラッチ73aの下位31ビットは、やはりラッチで
あるレジスタ73b の上位31ビットへ接続される。ラッチ
73bはそのLSBで「0」を受け取る。ラッチ73bの出力は、ラ
イン42のように並列でこのデータを供給する線路43を介
してラッチ73aに供給される。したがって、73bのLSB に
割り当てられた「0」を含めて、73bからデータがラッ
チ73aに入力されるごとに、ラッチ73aの内容は効果的に
左へ(すなわち、MSBの方へ)シフトされる。
【0028】オペランドPは、レジスタファイル50の一
時レジスタ内に格納される。このような一時レジスタは
一般に、ロード命令の実行で使用するため、および割り
込みの実行中のベクトルアドレスを計算するためのレジ
スタファイル50の一部である。一時レジスタは、CPUの
実行プロセス中にのみ、一時的な(例えば、部分的な)
結果を保持し、そのレジスタはプログラミングの型(す
なわち、ソフトウェアからは見えないが、ハードウェア
設計者にだけわかるもの)の一部ではない。前記したよ
うなステップの各シーケンスに対して、Pの値は一時レ
ジスタからラッチ75内に読み出される(PHI1の間)。P
はレジスタ73から受け取ったAに加算され、そしてPの新
しい値は、結果バス49によって一時レジスタ内へ再度書
き込まれる。
【0029】このCPUの処理系は、シフトレジスタ73を
伴う最小限の修正しか必要とせず、1サイクルの間に1
ビットのスループット(処理能力)でMULi命令を実行す
る。
【0030】本発明の上記した説明はその特定の詳細を
示しているが、各種修正が当該技術における当業者に対
して容易に明らかである。たとえば、ALUは他の算術お
よび/または論理演算装置で置き換えられる。また、特
定CPUに対しての実現がALUおよび/またはBSへの入力に
おいてラッチの使用を必要としない場合、オペランドの
PとBをレジスタファイルから直接、各サイクル内でフェ
ッチ可能である。さらに、一時レジスタがレジスタファ
イル内で利用できない場合、ALU11によって出力されたP
の更新値はこれに代えて、レジスタファイルにある宛先
レジスタ内に格納できる。しかし、そのような場合に
は、宛先レジスタ内に格納されたデータは、演算の始め
で消去される。この変更のCPUへの効果は次のようであ
る。一時レジスタの使用によって、ソースオペランドを
破壊せずに、実行完了前に乗算実行プロセスの中断がで
きる。この特徴は、割り込み(すなわち、割り込み待ち
時間)への応答をかなり減らすことができる。これは一
時レジスタが利用できないと可能にならない。
【0031】これらのこととこの他の修正すべては、特
許請求の範囲によって定義された本発明の範囲内に包含
されるものである。
【0032】
【発明の効果】本発明は上述のように、小修正しか必要
とせずに、CPUシリーズの既存ハードウェアで、整数の
2進乗算を実現することができる。
【図面の簡単な説明】
【図1】整数の2進乗算を行うための従来技術回路の略
ブロック図である。
【図2】二つのオペランドの乗算を行うために図1の従
来技術回路で実行するステップのフローチャートであ
る。
【図3】本発明を実現するために使用するCPUの略ブロ
ック図である。
【図4】本発明によって整数の2進乗算を実現する回路
の略ブロック図である。
【図5】本発明によって二つのオペランドの乗算を行う
ために図4の回路で実行するステップのフローチャート
である。
【図6】本発明を実現するために修正が施された、図3
のCPUの一部の略ブロック図である。
【符号の説明】
3 記憶レジスタまたはラッチ 5 シフトレジスタ 7 シフトレジスタ 9 ANDゲート 11 ALU(算術論理演算装置) 28 CPU(中央処理装置) 40 PC(プログラムカウンタ) 41 バス 42 入力線路 43 入力線路 44 BS(バレルシフタ) 46 MUX(マルチプレクサ) 48 データバス 49 結果バス 50 レジスタファイル 52 MUX(マルチプレクサ) 53 バッファ 54 アドレスバス 58 キュー(待ち行列) 60 デコード及び制御回路 62 DISP(置換回路) 63 バス 71 ラッチ 73 シフトレジスタ 75 ラッチ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 オハド・ファリク イスラエル国ペタッチ−ティクヴァ,シ ャパイラ・ストリート・54 (72)発明者 アハロン・オストラー イスラエル国ハーツェリア,エル−ア ル・ストリート・4 (72)発明者 イェアー・ベイダッチ イスラエル国ラマット−ハサロン,シヴ ティ−イスラエル・ストリート・22 (72)発明者 ガーディ・アーリッチ イスラエル国クファー−ヘイム(番地表 示なし) (56)参考文献 特開 平3−156638(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 7/52 310

Claims (26)

    (57)【特許請求の範囲】
  1. 【請求項1】オペランドを格納するための第一の手段
    と、 別のオペランドを格納するためのシフトレジスタと、 部分積を格納するための第二の手段と、 第一の格納手段内のオペランドのビットを順次指定する
    ための順序制御手段と、および前記順序制御手段及び前
    記シフトレジスタに格納されたオペランドのシフトに同
    期して各々の指定されたビットに応じて部分積をそれぞ
    れ更新し、指定されたビットが一つの値である時にシフ
    トレジスタの内容によって部分積を増加し、指定された
    ビットが別の値である時に部分積を変化させない手段か
    らなり、 順序制御手段が、第一の格納手段におけるオペランドの
    ビット全体を順序付けした後、一つのオペランドを他の
    オペランドで乗算した積が前記第二の格納手段内に存在
    する、2進乗算器。
  2. 【請求項2】更に、最上位ビット(「MSB 」)の方にシ
    フトレジスタ内でオペランドをシフトし、最下位ビット
    (「LSB 」)に「0」を付与する手段を含む、請求項1
    記載の2進乗算器。
  3. 【請求項3】前記順序制御手段が第一の格納手段内のオ
    ペランドのLSBからMSBへと順序付けする、請求項2記載
    の2進乗算器。
  4. 【請求項4】前記更新手段が、指定されたビットが前記
    一つの値を持つとき、シフトレジスタの内容に第二の格
    納手段内の部分積を加算するための手段、および第二の
    格納手段にその加算の結果を入力するための手段からな
    る、請求項3記載の2進乗算器。
  5. 【請求項5】指定されたビットの前記一つの値が「1」 で
    ある、請求項4記載の2進乗算器。
  6. 【請求項6】前記更新手段が、指定されたビットが前記
    別の値を持つとき、格納手段内の部分積に「0」を加算
    する、請求項5記載の2進乗算器。
  7. 【請求項7】前記第二の格納手段が、乗算演算の始めで
    ゼロの値に初期化される、請求項6記載の2進乗算器。
  8. 【請求項8】前記該第一の手段、シフトレジスタ、第二
    の手段、順序制御手段および更新手段が nビットのみを
    処理する、請求項7記載の2進乗算器。
  9. 【請求項9】前記順序制御手段が、第一の格納手段内の
    オペランドをLSBからMSBへ順序付けする、請求項1記載
    の2進乗算器。
  10. 【請求項10】前記更新手段が、指定されたビットが前
    記一つの値を持つとき第二の格納手段内の部分積をシフ
    トレジスタの内容に加算するための手段、および第二の
    格納手段へこのような加算結果を入力するための手段か
    ら構成される、請求項1記載の2進乗算器。
  11. 【請求項11】前記第二の格納手段が、乗算演算の始め
    にゼロの値に初期化される、請求項1記載の2進乗算
    器。
  12. 【請求項12】前記第一の手段、シフトレジスタ、第二
    の手段、順序制御手段および更新手段が nビットのみを
    処理する、請求項1記載の2進乗算器。
  13. 【請求項13】第一と第二のオペランド、およびその部
    分積を格納すること、 第一のオペランドのビットを順次指定すること、 第二のオペランドを繰り返しシフトすること、 指定されたビットが一つの値である時に部分積をシフト
    された第二オペランドで増加させ、指定されたビットが
    別の値である時に部分積を変化させないようにして、シ
    フト及び指定ステップに同期して部分積を更新すること
    からなり、 第一のオペランドのビットすべてが順次指定された後
    に、部分積を第一と第二のオペランドの乗算した積とし
    て得る、2進乗算の方法。
  14. 【請求項14】第二のオペランドを最上位ビット(「MS
    B」) の方へシフトするステップおよび最下位ビット(「LS
    B」)へ「0」を割り当てるステップをさらに含む、請求項13
    記載の2進乗算の方法。
  15. 【請求項15】前記指定ステップが、第一のオペランド
    のLSBからMSBへ順序付けする、請求項14記載の2進乗算
    の方法。
  16. 【請求項16】前記更新ステップが、指定されたビット
    が前記一つの値を持つ時に部分積をシフトされた第二の
    オペランドへ加算すること、および部分積としてこのよ
    うな加算の結果を格納することから成る、請求項15記載
    の2進乗算の方法。
  17. 【請求項17】指定されたビットの前記一つの値が
    「1」である、請求項16記載の2進乗算の方法。
  18. 【請求項18】前記更新ステップが、指定されたビット
    が前記別の値である時、「0」 を格納された部分積に加算
    することを含む、請求項17記載の2進乗算の方法。
  19. 【請求項19】前記格納された部分積が、乗算演算の始
    めでゼロの値に初期化される、請求項18記載の2進乗算
    の方法。
  20. 【請求項20】前記格納、指定、シフト、および更新の
    ステップが nビットのみを処理する、請求項19記載の2
    進乗算の方法。
  21. 【請求項21】前記格納、指定、シフト、および更新の
    ステップが nビットのみを処理する、請求項13記載の2
    進乗算の方法。
  22. 【請求項22】前記指定ステップが、第一のオペランド
    のLSBからMSBへ順序付けする、請求項13記載の2進乗算
    の方法。
  23. 【請求項23】前記更新ステップが、指定されたビット
    が前記一つの値を持つ時に部分積をシフトされた第二の
    オペランドへ加算すること、および部分積としてこのよ
    うな加算の結果を格納することから成る、請求項13記載
    の2進乗算の方法。
  24. 【請求項24】前記格納された部分積が、乗算演算の始
    めにゼロの値に初期化される、請求項13記載の2進乗算
    の方法。
  25. 【請求項25】n回の動作ステップの実行後に nビット
    の積を提供すべく、二つのnビットのオペランドを受け
    取る整数用の2進乗算器であって、 部分積を生じるために二つのnビットの整数オペランド
    を加算するための加算器と、 n回の動作ステップのそれぞれについて、前記オペラン
    ドのうちの一つのnビットから一つのビットを指定する
    手段と、 前記部分積を格納するための第一の手段と、 前記オペランドのうち別の一つを格納し、n 回の動作ス
    テップのそれぞれで、最下位ビット(「LSN」) 内に「0」 を
    ロードし最上位ビット(「MSB」) を捨てる間に、このよう
    なオペランドを1ビット分左へシフトする第二の手段
    と、 前記加算器が前記第一の手段および第二の手段の出力へ
    結合された入力を有し、及び1ビットの増分でもってLS
    BからMSBへシフトし、および指定されたビットが所定の
    値を持つ場合に部分積を前記第二の格納手段の内容に加
    算するために、前記指定する手段を起動することによっ
    て前記 n回の動作ステップのそれぞれを実行するための
    制御手段とからなり、 前記加算器、前記第一の格納手段および第二の格納手段
    が前記 n回の動作ステップのそれぞれに対して nビット
    のみを処理する、整数用の2進乗算器。
  26. 【請求項26】n回の動作ステップの実行後にnビットの
    積を提供すべく、二つのnビットのオペランドを乗算す
    る方法であって、 部分積を生じるために二つのnビットの整数オペランド
    を加算し、 n回の動作ステップそれぞれに対して前記オペランドの
    うちの一つのnビットからのビットを指定し、 前記部分積を格納し、 前記オペランドの別の一つを格納し、動作ステップのそ
    れぞれで、最下位ビット内に「0」 をロードし、最上位ビ
    ットを捨てる間にこのようなオペランドを1ビット分左
    へシフトし、および1ビットインクリメントにおいてLS
    BからMSBへシフトするために前記指定を行う手段を起動
    し、および指定されたビットが所定の値を持つ場合に部
    分積をシフトされた別のオペランドへ加算することによ
    って前記 n回の動作ステップのそれぞれを制御すること
    からなり、 前記部分積の加算、格納および別のオペランドの格納の
    ステップが、前記 n回の動作ステップのそれぞれに対し
    てn ビットのみを処理する乗算方法。
JP31229993A 1992-12-11 1993-12-13 小修正を行って既存ハードウェアで実現する2進乗算 Expired - Lifetime JP3519765B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US989219 1992-12-11
US07/989,219 US5446909A (en) 1992-12-11 1992-12-11 Binary multiplication implemented by existing hardware with minor modifications to sequentially designate bits of the operand

Publications (2)

Publication Number Publication Date
JPH06214760A JPH06214760A (ja) 1994-08-05
JP3519765B2 true JP3519765B2 (ja) 2004-04-19

Family

ID=25534888

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31229993A Expired - Lifetime JP3519765B2 (ja) 1992-12-11 1993-12-13 小修正を行って既存ハードウェアで実現する2進乗算

Country Status (4)

Country Link
US (1) US5446909A (ja)
EP (1) EP0601716A1 (ja)
JP (1) JP3519765B2 (ja)
KR (1) KR100328141B1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724280A (en) * 1995-08-31 1998-03-03 National Semiconductor Corporation Accelerated booth multiplier using interleaved operand loading
FR2775369B1 (fr) * 1998-02-26 2001-08-03 Sgs Thomson Microelectronics Procede de mise en oeuvre d'une multiplication modulaire specifique relative a la methode de montgomery
US6088800A (en) 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
US8438207B2 (en) * 2007-09-28 2013-05-07 University Of Washington Adaptive precision arithmetic unit for error tolerant applications
FR2990781A1 (fr) * 2012-05-15 2013-11-22 St Microelectronics Grenoble 2 Multiplieur serie numerique
RU2625528C1 (ru) * 2016-05-17 2017-07-14 Федеральное государственное бюджетное образовательное учреждение высшего образования "Кубанский государственный технологический университет" (ФГБОУ ВО "КубГТУ") Арифметическое устройство

Family Cites Families (16)

* 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
US4228518A (en) * 1978-09-25 1980-10-14 Motorola, Inc. Microprocessor having multiply/divide circuitry
JPS6042965B2 (ja) * 1979-06-01 1985-09-26 愛介 片山 複数法形高速乗算装置
US4658094A (en) * 1985-03-28 1987-04-14 Itt Corporation Encryption apparatus and methods for raising a large unsigned integer to a large unsigned integer power modulo a large unsigned integer
SU1304018A1 (ru) * 1985-09-23 1987-04-15 Физико-механический институт им.Г.В.Карпенко Устройство дл умножени по модулю 2 @ -1 @
JPH0831025B2 (ja) * 1986-03-29 1996-03-27 株式会社東芝 乗算回路
JPH07107664B2 (ja) * 1987-02-13 1995-11-15 日本電気株式会社 乗算回路
US4970676A (en) * 1989-04-04 1990-11-13 Rca Licensing Corporation Digital word-serial multiplier circuitry
US5025408A (en) * 1989-07-31 1991-06-18 Shographics, Inc. Bit serial multiplier with parallel-in-serial-out carry and partial product shift registers
US5184318A (en) * 1989-09-05 1993-02-02 Cyrix Corporation Rectangular array signed digit multiplier
US5031137A (en) * 1989-12-07 1991-07-09 The Boeing Company Two input bit-serial multiplier
JP3113667B2 (ja) * 1990-05-30 2000-12-04 日本テキサス・インスツルメンツ株式会社 トランスバーサルフィルタ回路
US5150321A (en) * 1990-12-24 1992-09-22 Allied-Signal Inc. Apparatus for performing serial binary multiplication
US5218564A (en) * 1991-06-07 1993-06-08 National Semiconductor Corporation Layout efficient 32-bit shifter/register with 16-bit interface
US5220525A (en) * 1991-11-04 1993-06-15 Motorola, Inc. Recoded iterative multiplier
US5289400A (en) * 1992-07-30 1994-02-22 Westinghouse Electric Corp. Single-flux-quantum multiply-accumulator

Also Published As

Publication number Publication date
US5446909A (en) 1995-08-29
KR100328141B1 (ko) 2002-06-20
KR940015793A (ko) 1994-07-21
JPH06214760A (ja) 1994-08-05
EP0601716A1 (en) 1994-06-15

Similar Documents

Publication Publication Date Title
US5996057A (en) Data processing system and method of permutation with replication within a vector register file
US6334176B1 (en) Method and apparatus for generating an alignment control vector
US6671797B1 (en) Microprocessor with expand instruction for forming a mask from one bit
KR100412920B1 (ko) 데이터 밀도가 높은 risc 프로세서
EP2241968B1 (en) System with wide operand architecture, and method
US6073215A (en) Data processing system having a data prefetch mechanism and method therefor
EP0395348A2 (en) Method and apparatus for multi-gauge computation
US5884069A (en) Computer and a method of operating a computer to combine data values within a singularly addressable data string
JP2002366348A (ja) 多重命令セットによるデータ処理
US5404560A (en) Microprocessor having external control store
JP2005202964A (ja) 割り込みをタイプ別に計数する方法、システムおよびプログラム
JPH09512651A (ja) 複数命令セットのマッピング
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
JP2581236B2 (ja) データ処理装置
JPS5918738B2 (ja) 割込みシステム
JPH01214932A (ja) データ処理装置
JP2001034472A (ja) データ処理装置および除算、剰余算アルゴリズム
US6986028B2 (en) Repeat block with zero cycle overhead nesting
JP3519765B2 (ja) 小修正を行って既存ハードウェアで実現する2進乗算
US5771366A (en) Method and system for interchanging operands during complex instruction execution in a data processing system
JP3834145B2 (ja) ネスト可能な遅延分岐命令を有するマイクロプロセッサを備えたデータ処理装置及びそのマイクロプロセッサを動作させる方法
US7376819B2 (en) Data processor with selectable word length
US5034880A (en) Apparatus and method for executing a conditional branch instruction
US20190369995A1 (en) Vector generating instruction
US6499046B1 (en) Saturation detection apparatus and method therefor

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

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

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100206

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110206

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120206

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130206

Year of fee payment: 9

EXPY Cancellation because of completion of term