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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/527—Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
- G06F7/5272—Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/727—Modulo N arithmetic, with N being either (2**n)-1,2**n or (2**n)+1, e.g. mod 3, mod 4 or mod 5
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49931—Modulo N reduction of final result
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/722—Modular 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
データ処理技法に関し、特に、小修正しか必要とせず
に、既存データ処理装置で2進乗算をサポートする方法
と装置に関する。
る演算なので、中央処理装置(「CPU」) には標準的に
乗算命令を行う能力が備わっている。このような乗算命
令の代表的な例は、以下では「MULi」と呼ぶことにする
が、それはナショナルセミコンダクタ社(「NSC 」)製
のCPUシリーズ32000/EPファミリで実行できる。
の補数)または符号なし整数オペランドを乗算して、 n
ビットの演算結果を返す命令である。ここではn=8、16ま
たは32である。MULi命令では、たとえその結果が大きす
ぎて nビットの数を使って表せなくても、トラップは生
じない。
専用配列乗算器かシフト及び加算式アルゴリズムのどち
らかを使用している。専用配列乗算器を利用するCPU
は、少数のサイクル(普通、1または2サイクル)で乗
算を行うために、n2(n はビット数)要素の行列につい
ての両方のオペランドを取り扱うことで、高い性能を達
成している。低費用で、性能を簡略化した解法には、シ
フト及び加算式アルゴリズムを利用している。その実行
時間はn (普通、1*n+kまたは2*n+k、ここでのkは小定
数)に比例する。図1および図2を参照して、普通の2
進数用MULiのシフト及び加算式乗算アルゴリズムを以下
に説明する。
チ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も受け取る。
フローチャートに従って進行する。ステップ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は、桁外れして桁落ちされる。
25または26、27そして29のシーケンス(一連の動作)を
n回発生すると、その乗算の積はレジスタの5と7に格納
される。レジスタ5の内容Bはその積の値として得られ
る。レジスタ7内のデータPは無視されうる。MULi命令が
レジスタ5のデータBしか頼りにしていない事実は、以下
で説明する本発明の利点として使用される。
る。すなわち、ALU11、ANDゲート9、シフトレジスタの5
と7、およびラッチ3である。大抵のCPUの構成につい
て、ハードウェア要素のリストは、二つのシフトレジス
タの加算を必要とするが、その一方でALU 及びラッチは
既存ハードウェアの部品として利用できる。
は、小修正しか必要とせずに、入手可能なCPUシリーズ
の既存ハードウェアで、整数の2進乗算を実現すること
である。
題は、オペランドを格納するための第一の手段と、もう
一つのオペランドを格納しているシフトレジスタとを設
けた2進乗算器に関する、本発明の一つの態様によって
達成される。第二の手段が、次のように誘導した部分積
を格納するために用意される。順序制御手段が、第一の
格納手段にあるオペランドのビットを連続的に指定す
る。部分積は、順序制御手段と指定されたビットそれぞ
れに応じてシフトレジスタ内に格納したオペランドをシ
フトすることとに同期した手段によって更新される。そ
のため、指定ビットがある値の時、部分積はシフトレジ
スタの内容で増加され、指定ビットが別の値の時、部分
積はそのままで変化しない。順序制御手段が第一の格納
手段にあるオペランドのビット全体を順序付けした後、
あるオペランドと別のオペランドを乗算した積は第二の
格納手段に存在する。
を含む2進乗算のための方法に向けられる。第一のオペ
ランドと第二のオペランドを、それらの部分積と共に格
納する。第一のオペランドのビットを、LSBからMSBへと
順次指定する。第二のオペランドを、LSBから左に繰り
返しシフトし、そしてMSBを捨てる。部分積を、シフト
のステップと指定化のステップに同期して更新する。こ
うして、指定されたビットが一つの値を持つ時、部分積
はシフトされた第二のオペランド分増加され、指定され
たビットが別の値を持つ時、部分積はそのままで変化し
ない。最初のオペランドのビット全てを順次指定し終わ
ると、部分積は第一のオペランドと第二のオペランドを
乗算した積として得られる。
2進乗算器に向けられており、それはn回の動作ステッ
プが完了すると、nビットの積を与えるために二つのnビ
ットのオペランドを受け取る。また、それは部分積を生
じさせるために二つのnビットの整数オペランドを加算
するための加算器を内蔵している。ある手段が、動作ス
テップのそれぞれに対して、オペランドの一つのnビッ
トから一つのビットを指定する。第一の手段が部分積を
格納する。第二の手段がオペランドの別の一つを格納
し、そして、動作ステップのそれぞれにおいて、最下位
ビットに「0」 をロードしたり、最上位ビットを捨てたり
しながら、このオペランドの一つのビットを左へシフす
る。加算器には、第一の手段と第二の手段の出力に結合
させた入力がある。制御手段では、1ビットインクリメ
ント(増分)でLSBからMSBへとシフトするための指定化
手段を起動させることによって、n回の動作ステップの
それぞれを実行する。そして、指定されたビットが所定
の値を持つ場合に、第二の格納手段の内容に部分積を加
算する。加算器、第一の格納手段および第二の格納手段
は、n回の動作ステップのそれぞれに対してnビットのみ
処理するように設計される。
ステップを含むn回の動作ステップが完了すると、nビッ
トの積を提供するために二つのnビットのオペランドを
受け取る整数乗算の方法に向けられている。二つのnビ
ットの整数オペランドは、部分積を生み出すために加算
される。オペランドのうちの一つのnビットから一つの
ビットが、n回の動作ステップそれぞれに対して指定さ
れる。部分積は格納される。オペランドの別の一つは格
納され、動作ステップのそれぞれにおいて、このオペラ
ンドは、「0」 をLSB内にロードして、MSBを捨てながら一
つのビットが左へシフトされる。n回の動作ステップの
それぞれは、1ビットインクリメントでLSBからMSBへと
シフトするための指定化手段を起動させることによって
制御される。そして、指定されたビットが所定の値を持
つと、部分積はシフトされた別のオペランドに加算され
る。この加算、部分積の格納ステップ及び別のオペラン
ドの格納ステップは、n回の動作ステップのそれぞれに
対してnビットのみ処理する。
ェアのみをMULi専用としなければならないということを
証明するため、特定のCPUで実行されているシフト及び
加算式のMULi命令がどんな方法かを例示することで説明
する。下記に引用した特定のCPUは、ロード/ストアの
アーキテクチャを有する32ビットRISC型CPUである。そ
のCPUは、8、16または32ビットのオペランドで実行する
算術演算と論理演算の各種命令をサポートしている。そ
のCPUの構造と動作の詳細は、「オンチップ記憶素子を
アクセスするためのCPUコアバスの最適化」として、199
2年12月11日に出願された米国出願番号989217に提供さ
れている。その内容はここで引用することによって、本
明細書に組み入れるものとする。便宜のために、そのCP
Uの構造と動作を下記に要約する。
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は、残り
の時間はトライステート(無活動状態)になる。
ド(プログラムストリームの一部)である計算に使用す
るため、バス63上にデータを出力する。また、このこと
はメモリ参照での置き換えの場合も同様である。
取り出し)命令実行中、バス48上のメモリから読み出し
たデータを受け取る。フェッチ命令は、バスが利用で
き、キューが一杯でない時はいつも、デコードおよび制
御回路60の制御部によって放出される。回路60のデコー
ド部は、キューの冒頭でその命令をデコードし、そし
て、それらを実行する。命令を実行すると、それは、次
の命令のための場所を作るためにキューから除かれる
(すなわち、FIFO動作)。デコード及び制御回路60
は、デコードされた命令の内容に従ってCPU28の残りを
活性化する。たとえば、その命令が、あるレジスタの内
容を別のレジスタの内容に加算することであると、次の
ステップが実行される。二つのレジスタが、レジスタフ
ァイル50からALU11の二つの入力のそれぞれへ読み出さ
れる。それから、ALUは加算命令を受け取り、そして実
行する。そしてMUX46は、結果バス49を通して、レジス
タファイル50内の対応レジスタへと戻るよう、ALUの結
果出力を経路指定する。
すオペランドで、論理演算(AND、 OR、XOR、等)と算術
演算(加算、減算、等)を行う。シフト動作で、オペラ
ンドは、レジスタファイルからBS44の入力へ読み出され
る。シフトの結果は、BS44の出力からMUX46を通し、か
つ結果バス49を通してレジスタファイル50へ戻すよう、
制御回路60によって管理される。
内の新しい値は、DISP62から受け取った置換を、PC40か
ら読み出された現在の値へ加算するALU11内で計算され
る。その演算結果は、MUX52を通して、新しいフェッチ
命令用のアドレスとして使用される。それからまた、そ
れは、将来の使用のためPC40内にも格納される。PC40
は、メモリから命令がフェッチされる毎に、その内容を
2又は4だけインクリメントする機能がある。この機能
は、データを、ワード(すなわち、2バイト)あるいは
倍長ワード(すなわち、4バイト)としてしかフェッチ
しないことから必要となる。
データを読み出したり、書き込んだりするために使用さ
れる。ロード命令は、メモリから1や2または4バイト
で読み出している(例示せず)。データのアドレスは、
ALUにおいてレジスタの内容(レジスタファイル50から
読み出す)を置き換えの値(DISP装置62から読み出す)
へ加算することで生成される。加算結果は、MUX46と52
を通してアドレスバス54へ渡している。メモリから読み
出したデータは、データバス48上で受け取られ、そこか
らMUX46を通して、レジスタファイル50へ書き込まれ
る。データ整列が要求されると、それからそのデータ
は、BS44を通してシフトされ、そして再びレジスタファ
イル50へ書き込まれる。ストア命令で、アドレスの生成
は、ロード命令について上記に説明したとちょうど同じ
ように実行される。データは、レジスタファイル50から
読み出され、BS44によって一列に並べられ、そしてMUX4
6とバッファ53を通してデータバス48へ書き込まれる。
わち命令ローダ、実行ユニット、および制御ロジックで
ある。キュー58、PC40およびMUX52を含む命令ローダ
は、外部システムから命令をロードし、それらを実行す
るために実行ユニットへ与えている。実行ユニットに
は、レジスタファイル50、ALU11、BS44、DISP62および
バッファ53が含まれる。ブロック60を含む制御ロジック
は、命令ローダ、実行ユニットおよびCPUコアへのイ
ンターフェースを制御している。命令は、バス48から命
令キュー58内へフェッチされ、回路60によってデコード
される。それから、その命令は実行するため実行ユニッ
トへ送られる。ブロック60の制御ロジックは、各命令を
行うために実行ユニット内のどのリソース(資源)を使
用するかを選出する。さらに詳細に述べると、算術命令
と論理命令では、オペランドは、ALU11またはBS44内に
読み出され、そしてその結果は、レジスタファイル50内
の目的レジスタへ書き込まれる。ロード命令では、ALU1
1は有効メモリアドレスを計算する。そしてソースオペ
ランドはバス48によってメモリへ書き込まれる。分岐命
令と飛び越し命令については、目的のアドレスを、PC40
の現在の内容をDISP62内の置き換えの値へ加算すること
によってALU11で計算し、そしてその結果は、PC40内へ
書き込まれる。
のシフト及び加算アルゴリズムを実現するための乗算回
路を示している。ALU11とANDゲート9は、図1に示すも
のと同じものである。これらの要素に加えて、ラッチ71
がオペランドBを格納し、シフトレジスタ73がオペラン
ドAを格納し、そしてPはラッチ75内に格納される。CPU
のBS44は、ラッチ71とANDゲート9 間に接続される。二
つのオペランドはn ビットの整数であり、乗算の積はn
ビットの結果である。先ほど言及した手段すべてには、
乗算の各動作に対してnビットのみ処理する能力があ
る。この構成は、図5のフローチャートに従って動作さ
れる。
フトレジスタ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の内容に変
化は生じない。
ジスタ73を1位置分左へ、すなわち、MSBの方へシフト
し、そして「0」を、そのLSB内にロードする。そのMSBは
桁外れし、桁落ちされる。同時に、BS44はラッチ71内で
左へ、すなわち、MSBの方へ、次のi番目のビットの値を
抽出するためにシフトする。それから、ステップ93で
は、ステップ83、85、87または88、89そして91のシーケ
ンスがn回実行されたかどうかをチェックする。n回実行
されていないと、この動作はステップ83へ戻る。n回の
シーケンスが実行されると、乗算の積は、値Pとしてレ
ジスタ75内に存在する。
あるBS44を利用する。前記に説明したように、本発明は
次の事実を利用する。それは、MULi命令はその結果のn
個の最下位ビットしか必要としていない、つまり、オー
バフロー(桁あふれ)検出が必要ないということであ
る。
がいかにCPUで実現されるかを示している。本発明に直
接に必要な図3のCPUの部分しか、図6には示していな
い。前述した米国出願番号989217に記載のCPUに対して
使用した二段階の方法論では、ALU11とBS44の入力にラ
ッチを必要とする。オペランドBを格納するためのラッ
チ71は、ALU11の入力用ラッチである。ラッチ75はALU11
の入力用ラッチのうちの一つである。要素73は標準的に
は、単に ALU11の入力用ラッチのもう一つである。ALU1
1は、MULi命令以外の論理機能と算術機能すべてを実現
するために、簡単なラッチ73しか必要としていない。し
かし、本発明を実現するために、要素73は次のように動
作しているレジスタの73aと73bを含むように修正され
る。
ラッチである。オペランド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の方へ)シフトされる。
時レジスタ内に格納される。このような一時レジスタは
一般に、ロード命令の実行で使用するため、および割り
込みの実行中のベクトルアドレスを計算するためのレジ
スタファイル50の一部である。一時レジスタは、CPUの
実行プロセス中にのみ、一時的な(例えば、部分的な)
結果を保持し、そのレジスタはプログラミングの型(す
なわち、ソフトウェアからは見えないが、ハードウェア
設計者にだけわかるもの)の一部ではない。前記したよ
うなステップの各シーケンスに対して、Pの値は一時レ
ジスタからラッチ75内に読み出される(PHI1の間)。P
はレジスタ73から受け取ったAに加算され、そしてPの新
しい値は、結果バス49によって一時レジスタ内へ再度書
き込まれる。
伴う最小限の修正しか必要とせず、1サイクルの間に1
ビットのスループット(処理能力)でMULi命令を実行す
る。
示しているが、各種修正が当該技術における当業者に対
して容易に明らかである。たとえば、ALUは他の算術お
よび/または論理演算装置で置き換えられる。また、特
定CPUに対しての実現がALUおよび/またはBSへの入力に
おいてラッチの使用を必要としない場合、オペランドの
PとBをレジスタファイルから直接、各サイクル内でフェ
ッチ可能である。さらに、一時レジスタがレジスタファ
イル内で利用できない場合、ALU11によって出力されたP
の更新値はこれに代えて、レジスタファイルにある宛先
レジスタ内に格納できる。しかし、そのような場合に
は、宛先レジスタ内に格納されたデータは、演算の始め
で消去される。この変更のCPUへの効果は次のようであ
る。一時レジスタの使用によって、ソースオペランドを
破壊せずに、実行完了前に乗算実行プロセスの中断がで
きる。この特徴は、割り込み(すなわち、割り込み待ち
時間)への応答をかなり減らすことができる。これは一
時レジスタが利用できないと可能にならない。
許請求の範囲によって定義された本発明の範囲内に包含
されるものである。
とせずに、CPUシリーズの既存ハードウェアで、整数の
2進乗算を実現することができる。
ブロック図である。
来技術回路で実行するステップのフローチャートであ
る。
ック図である。
の略ブロック図である。
ために図4の回路で実行するステップのフローチャート
である。
のCPUの一部の略ブロック図である。
Claims (26)
- 【請求項1】オペランドを格納するための第一の手段
と、 別のオペランドを格納するためのシフトレジスタと、 部分積を格納するための第二の手段と、 第一の格納手段内のオペランドのビットを順次指定する
ための順序制御手段と、および前記順序制御手段及び前
記シフトレジスタに格納されたオペランドのシフトに同
期して各々の指定されたビットに応じて部分積をそれぞ
れ更新し、指定されたビットが一つの値である時にシフ
トレジスタの内容によって部分積を増加し、指定された
ビットが別の値である時に部分積を変化させない手段か
らなり、 順序制御手段が、第一の格納手段におけるオペランドの
ビット全体を順序付けした後、一つのオペランドを他の
オペランドで乗算した積が前記第二の格納手段内に存在
する、2進乗算器。 - 【請求項2】更に、最上位ビット(「MSB 」)の方にシ
フトレジスタ内でオペランドをシフトし、最下位ビット
(「LSB 」)に「0」を付与する手段を含む、請求項1
記載の2進乗算器。 - 【請求項3】前記順序制御手段が第一の格納手段内のオ
ペランドのLSBからMSBへと順序付けする、請求項2記載
の2進乗算器。 - 【請求項4】前記更新手段が、指定されたビットが前記
一つの値を持つとき、シフトレジスタの内容に第二の格
納手段内の部分積を加算するための手段、および第二の
格納手段にその加算の結果を入力するための手段からな
る、請求項3記載の2進乗算器。 - 【請求項5】指定されたビットの前記一つの値が「1」 で
ある、請求項4記載の2進乗算器。 - 【請求項6】前記更新手段が、指定されたビットが前記
別の値を持つとき、格納手段内の部分積に「0」を加算
する、請求項5記載の2進乗算器。 - 【請求項7】前記第二の格納手段が、乗算演算の始めで
ゼロの値に初期化される、請求項6記載の2進乗算器。 - 【請求項8】前記該第一の手段、シフトレジスタ、第二
の手段、順序制御手段および更新手段が nビットのみを
処理する、請求項7記載の2進乗算器。 - 【請求項9】前記順序制御手段が、第一の格納手段内の
オペランドをLSBからMSBへ順序付けする、請求項1記載
の2進乗算器。 - 【請求項10】前記更新手段が、指定されたビットが前
記一つの値を持つとき第二の格納手段内の部分積をシフ
トレジスタの内容に加算するための手段、および第二の
格納手段へこのような加算結果を入力するための手段か
ら構成される、請求項1記載の2進乗算器。 - 【請求項11】前記第二の格納手段が、乗算演算の始め
にゼロの値に初期化される、請求項1記載の2進乗算
器。 - 【請求項12】前記第一の手段、シフトレジスタ、第二
の手段、順序制御手段および更新手段が nビットのみを
処理する、請求項1記載の2進乗算器。 - 【請求項13】第一と第二のオペランド、およびその部
分積を格納すること、 第一のオペランドのビットを順次指定すること、 第二のオペランドを繰り返しシフトすること、 指定されたビットが一つの値である時に部分積をシフト
された第二オペランドで増加させ、指定されたビットが
別の値である時に部分積を変化させないようにして、シ
フト及び指定ステップに同期して部分積を更新すること
からなり、 第一のオペランドのビットすべてが順次指定された後
に、部分積を第一と第二のオペランドの乗算した積とし
て得る、2進乗算の方法。 - 【請求項14】第二のオペランドを最上位ビット(「MS
B」) の方へシフトするステップおよび最下位ビット(「LS
B」)へ「0」を割り当てるステップをさらに含む、請求項13
記載の2進乗算の方法。 - 【請求項15】前記指定ステップが、第一のオペランド
のLSBからMSBへ順序付けする、請求項14記載の2進乗算
の方法。 - 【請求項16】前記更新ステップが、指定されたビット
が前記一つの値を持つ時に部分積をシフトされた第二の
オペランドへ加算すること、および部分積としてこのよ
うな加算の結果を格納することから成る、請求項15記載
の2進乗算の方法。 - 【請求項17】指定されたビットの前記一つの値が
「1」である、請求項16記載の2進乗算の方法。 - 【請求項18】前記更新ステップが、指定されたビット
が前記別の値である時、「0」 を格納された部分積に加算
することを含む、請求項17記載の2進乗算の方法。 - 【請求項19】前記格納された部分積が、乗算演算の始
めでゼロの値に初期化される、請求項18記載の2進乗算
の方法。 - 【請求項20】前記格納、指定、シフト、および更新の
ステップが nビットのみを処理する、請求項19記載の2
進乗算の方法。 - 【請求項21】前記格納、指定、シフト、および更新の
ステップが nビットのみを処理する、請求項13記載の2
進乗算の方法。 - 【請求項22】前記指定ステップが、第一のオペランド
のLSBからMSBへ順序付けする、請求項13記載の2進乗算
の方法。 - 【請求項23】前記更新ステップが、指定されたビット
が前記一つの値を持つ時に部分積をシフトされた第二の
オペランドへ加算すること、および部分積としてこのよ
うな加算の結果を格納することから成る、請求項13記載
の2進乗算の方法。 - 【請求項24】前記格納された部分積が、乗算演算の始
めにゼロの値に初期化される、請求項13記載の2進乗算
の方法。 - 【請求項25】n回の動作ステップの実行後に nビット
の積を提供すべく、二つのnビットのオペランドを受け
取る整数用の2進乗算器であって、 部分積を生じるために二つのnビットの整数オペランド
を加算するための加算器と、 n回の動作ステップのそれぞれについて、前記オペラン
ドのうちの一つのnビットから一つのビットを指定する
手段と、 前記部分積を格納するための第一の手段と、 前記オペランドのうち別の一つを格納し、n 回の動作ス
テップのそれぞれで、最下位ビット(「LSN」) 内に「0」 を
ロードし最上位ビット(「MSB」) を捨てる間に、このよう
なオペランドを1ビット分左へシフトする第二の手段
と、 前記加算器が前記第一の手段および第二の手段の出力へ
結合された入力を有し、及び1ビットの増分でもってLS
BからMSBへシフトし、および指定されたビットが所定の
値を持つ場合に部分積を前記第二の格納手段の内容に加
算するために、前記指定する手段を起動することによっ
て前記 n回の動作ステップのそれぞれを実行するための
制御手段とからなり、 前記加算器、前記第一の格納手段および第二の格納手段
が前記 n回の動作ステップのそれぞれに対して nビット
のみを処理する、整数用の2進乗算器。 - 【請求項26】n回の動作ステップの実行後にnビットの
積を提供すべく、二つのnビットのオペランドを乗算す
る方法であって、 部分積を生じるために二つのnビットの整数オペランド
を加算し、 n回の動作ステップそれぞれに対して前記オペランドの
うちの一つのnビットからのビットを指定し、 前記部分積を格納し、 前記オペランドの別の一つを格納し、動作ステップのそ
れぞれで、最下位ビット内に「0」 をロードし、最上位ビ
ットを捨てる間にこのようなオペランドを1ビット分左
へシフトし、および1ビットインクリメントにおいてLS
BからMSBへシフトするために前記指定を行う手段を起動
し、および指定されたビットが所定の値を持つ場合に部
分積をシフトされた別のオペランドへ加算することによ
って前記 n回の動作ステップのそれぞれを制御すること
からなり、 前記部分積の加算、格納および別のオペランドの格納の
ステップが、前記 n回の動作ステップのそれぞれに対し
てn ビットのみを処理する乗算方法。
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)
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)
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 |
-
1992
- 1992-12-11 US US07/989,219 patent/US5446909A/en not_active Expired - Lifetime
-
1993
- 1993-11-11 EP EP93309048A patent/EP0601716A1/en not_active Withdrawn
- 1993-12-10 KR KR1019930027143A patent/KR100328141B1/ko not_active IP Right Cessation
- 1993-12-13 JP JP31229993A patent/JP3519765B2/ja not_active Expired - Lifetime
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 |