JPH0683587A - 乗算処理装置 - Google Patents

乗算処理装置

Info

Publication number
JPH0683587A
JPH0683587A JP5094774A JP9477493A JPH0683587A JP H0683587 A JPH0683587 A JP H0683587A JP 5094774 A JP5094774 A JP 5094774A JP 9477493 A JP9477493 A JP 9477493A JP H0683587 A JPH0683587 A JP H0683587A
Authority
JP
Japan
Prior art keywords
data
circuit
multiplication
register
multiplier
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.)
Pending
Application number
JP5094774A
Other languages
English (en)
Inventor
Akira Miyoshi
明 三好
Takashi Taniguchi
隆志 谷口
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP5094774A priority Critical patent/JPH0683587A/ja
Publication of JPH0683587A publication Critical patent/JPH0683587A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】 【目的】 ニュートンラフソン法を用いた開平演算を高
速化する。 【構成】 乗数をリコードするための乗数リコード回路
109と、乗数リコード回路109の出力データと被乗
数とを入力として部分積を生成しかつ各部分積を加算す
るための部分積加算木105とを有する並列乗算回路を
備えた乗算処理装置において、被乗数に右シフト処理を
施すためのシフト回路104を設け、該シフト回路10
4の出力データを部分積加算木105の一方の入力とす
る。部分積加算木105の乗数側及び被乗数側の2つの
入力について遅延のバランスがとれる結果、該部分積加
算木105における乗算の実行速度が向上する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はLSI化に好適な高速乗
算処理装置に関するものであり、特にニュートンラフソ
ン法(以下NR法と記す。)を用いた繰り返し乗算を実
行するための装置に関するものである。
【0002】
【従来の技術】近年の集積回路技術の進歩に伴い、32
ビット、64ビットの浮動小数点演算を実行するための
1チップの算術演算用プロセッサが開発され、グラフィ
ックスや回路シミュレーション等の種々の分野への応用
がなされている。
【0003】高木直史ほか「冗長2進加算木を用いたV
LSI向き高速乗算器」(電子通信学会論文誌Vol.
J66−D No.6 1983年6月 pp.683
−690)によれば、内部計算に冗長2進表現を利用し
た乗算器が提案されている。通常の2進表現によれば、
各桁は0又は1の値を持つ。これに対し、冗長2進表現
では符号付きの桁(SD:Signed Digit)が採用され、
各桁は−1,0又は1の値を持つ。各桁が−2,−1,
0,1又は2の値を持つようにSD表現を拡張する場合
もある。
【0004】2ビットBoothの方法を効率良く利用
した高木らの乗算器は、乗数リコード回路と、部分積加
算木と、冗長2進数/2進数変換回路とを備える。部分
積加算木は、部分積生成回路及び冗長2進数加算回路に
より構成される。この乗算器によれば、乗数リコード回
路により、乗数(2進数)は基数を4とした拡張SD表
現の冗長2進数に変換される。基数4の拡張SD表現で
は、各桁は集合{−2,−1,0,1,2}の要素であ
る。拡張SD表現に変換された乗数の各桁毎に1つの部
分積が生成されるので、部分積の個数は冗長2進表現を
利用しない場合の半分になる。しかも、冗長2進数加算
回路では冗長性のゆえ桁上げ伝搬が抑制されるので、部
分積加算木により冗長2進表現の積が高速に求められ
る。そして、部分積加算木の出力(冗長2進表現の積)
は、冗長2進数/2進数変換回路により2進表現の積に
変換される。
【0005】さて、高木は上記乗算器を用いた繰り返し
乗算のための乗算処理装置をも提案している。その構成
を図5に示す。図5中の400〜403は4個のレジス
タR0〜R3を示している。このうち、レジスタR3は
冗長2進数を格納するためのレジスタであり、他の3個
のレジスタR0,R1,R2は符号なし2進数を格納す
るためのレジスタである。符号なし2進数とは、最上位
ビットが符号を表わす2の補数表示の2進数とは違っ
て、全てのビットが有効桁として扱われる2進数であ
る。
【0006】第1のシフト回路404は、レジスタR1
から出力されたデータをそのまま出力(1/1倍)する
か、右1桁シフト(1/2倍)するか、右3桁シフト
(1/8倍)するものである。部分積加算木405は、
部分積生成回路と冗長2進数加算回路とで構成され、冗
長2進表現の乗数側データと2進表現の被乗数側データ
との積(中間結果)を冗長2進表現で出力するものであ
る。乗数リコード回路409は、乗数側の2進表現デー
タを冗長2進表現のデータにリコードするための回路で
ある。第2のシフト回路406は、部分積加算木405
から出力された中間結果をそのまま出力(1倍)する
か、左1桁シフト(2倍)して出力するものである。減
算回路407は、定数(3/2,2,1)から冗長2進
数を減算するための回路である。冗長2進数/2進数変
換回路408は、レジスタR3から出力された冗長2進
数を2進数に変換し、その変換結果をレジスタR2に格
納するための回路である。
【0007】第1の選択回路410は、第1のシフト回
路404及びレジスタR3の各出力のうちのいずれかを
選択的に乗数リコード回路409に供給するものであ
る。第2の選択回路411は、第1のシフト回路40
4、レジスタR0及びレジスタR2の各出力のうちのい
ずれかを選択的に部分積加算木405の被乗数側に供給
するものである。第3の選択回路412は、第1のシフ
ト回路404及び部分積加算木405の各出力のうちの
いずれかを選択的に減算回路407に供給するものであ
る。第4の選択回路413は、第2のシフト回路406
及び減算回路407の各出力のうちのいずれかを選択的
にレジスタR3に供給するものである。
【0008】以上の構成を備えた図5の乗算処理装置に
よれば、レジスタR0に2進表現の被乗数を、レジスタ
R1に2進表現の乗数を各々設定し、かつ第1及び第2
のシフト回路404,406のシフト処理を禁止するこ
とにより、部分積加算木405による1回の乗算実行で
積が求められる。
【0009】この乗算処理装置で2進除算又は開平演算
を実行する場合には、収束型の繰り返し演算方法の1つ
であるNR法が適用される。以下、浮動小数点数の仮数
部Ymを入力オペランドとした開平演算を実行する際の
各部の動作を説明する。適用されるアルゴリズムは、仮
数部Ymに対してSQRT(1/Ym)の近似値を求
め、これにYmを乗ずることにより開平値Zm=SQR
T(Ym)を求めるものである。そのアルゴリズムは、 r0 =1−Ym/8 loop i= 1 to n ri =(ri-1 /2)*(3−ri-1 2 *Ym) end loop Zm=rn *Ym (1) である。ただし、*は乗算を意味する。ri の誤差すな
わちri と真値SQRT(1/Ym)との差が所定の範
囲内に納まったときに、式(1)中のループを抜ける。
【0010】図5の乗算処理装置で式(1)のアルゴリ
ズムを実現するための演算のフローは、 [1] R1 ← Ym [2] R3 ← 1−<R1>/8 loop i= 1 to n [3] R2 ← conv(<R3>) R3 ← mul(<R1>/2,<R3>) [4] R3 ← 3/2−mul(<R2>,<R3
>) [5] R3 ← mul(<R2>,<R3>) end loop [6] R3 ← mul(<R1>/2,<R3>)
*2 [7] R2 ← conv(<R3>) である。ただし、式中の記号の意味は、 <R1> : レジスタR1からの読み出しデータ ← : レジスタへのデータの書き込み mul(A,B): 2進数A及び冗長2進数Bから冗
長2進表現の積A*Bを求めること conv(A) : 冗長2進数Aの2進数への変換 である。
【0011】上記演算フローを1サイクル毎に詳しく説
明すると、まず、第1サイクル目では、浮動小数点数の
仮数部YmがレジスタR1に書き込まれる。
【0012】第2サイクル目では、レジスタR1からY
mが読み出され、該Ymに第1のシフト回路404で右
3桁シフトを施すことによりYm/8が生成される。生
成されたYm/8は、第3の選択回路412を経て減算
回路407に入力される。減算回路407では、1−Y
m/8(これをr0 とする。)が求められる。その結果
は、第4の選択回路413を経てレジスタR3に書き込
まれる。ここで、ループ制御変数iを1とする。
【0013】第3サイクル目では、冗長2進数/2進数
変換と乗算とが並列に実行される。レジスタR3からr
i-1 (初期値r0 )が読み出され、該読み出されたr
i-1 が冗長2進数/2進数変換回路408に入力され、
その変換結果がレジスタR2に書き込まれる。一方、レ
ジスタR3から読み出されたri-1 は、第1の選択回路
410を経て乗数リコード回路409にも入力される。
この時、レジスタR1からYmが再度読み出され、該Y
mに第1のシフト回路404で右1桁シフトを施すこと
によりYm/2が生成される。生成されたYm/2は、
第2の選択回路411を経て部分積加算木405の被乗
数側に入力される。そして、部分積加算木405により
乗算ri-1 *(Ym/2)が実行される。その乗算結果
は、第2のシフト回路406をそのまま通過し、第4の
選択回路413を経てレジスタR3に書き込まれる。
【0014】第4サイクル目では、レジスタR2のデー
タとレジスタR3のデータとの乗算が実行される。その
ため、レジスタR2から2進表現のri-1 が読み出さ
れ、該ri-1 が第2の選択回路411を経て部分積加算
木405の被乗数側に入力される。一方、レジスタR3
から冗長2進表現のri-1 *(Ym/2)が読み出さ
れ、該ri-1 *(Ym/2)が第1の選択回路410を
経て乗数リコード回路409に入力される。そして、部
分積加算木405により積ri-1 *ri-1 *(Ym/
2)が求められる。この乗算結果は、第3の選択回路4
12を経て減算回路407に入力される。減算回路40
7では、3/2−ri-1 *ri-1 *(Ym/2)が求め
られる。その結果は、第4の選択回路413を経てレジ
スタR3に書き込まれる。
【0015】第5サイクル目では、レジスタR2のデー
タとレジスタR3のデータとの乗算が再度実行される。
そのため、レジスタR2からri-1 が読み出され、該r
i-1が第2の選択回路411を経て部分積加算木405
の被乗数側に入力される。一方、レジスタR3から3/
2−ri-1 *ri-1 *(Ym/2)が読み出され、該3
/2−ri-1 *ri-1 *(Ym/2)が第1の選択回路
410を経て乗数リコード回路409に入力される。そ
して、部分積加算木405により積ri-1 *(3/2−
i-1 *ri-1 *(Ym/2))が求められる。この乗
算結果は(ri- 1 /2)*(3−ri-1 *ri-1 *Y
m)に等しく、これをri とする。部分積加算木405
から出力されたri は、第2のシフト回路406をその
まま通過し、第4の選択回路413を経てレジスタR3
に書き込まれる。ここで、ループ制御変数iがインクリ
メントされる。そして、上記第3サイクル目から第5サ
イクル目の動作がn回繰り返される。この結果、SQR
T(1/Ym)の近似値rnがレジスタR3に格納され
る。
【0016】第(3n+3)サイクル目では、レジスタ
R1のデータ(Ym)とレジスタR3のデータ(rn
との乗算が実行される。そのため、レジスタR3からr
n が読み出され、該rn が第1の選択回路410を経て
乗数リコード回路409に入力される。一方、第1のシ
フト回路404の出力Ym/2は第2の選択回路411
を経て部分積加算木405の被乗数側に入力される。そ
して、部分積加算木405により乗算rn *(Ym/
2)が実行される。その乗算結果は第2のシフト回路4
06に入力され、左1桁シフトにより(rn *(Ym/
2))*2=rn*Ymが生成される。このrn *Ym
は、第4の選択回路413を経てレジスタR3に書き込
まれる。
【0017】第(3n+4)サイクル目では、レジスタ
R3からrn *Ymが読み出され、該rn *Ymが冗長
2進数/2進数変換回路408に入力され、その変換結
果がレジスタR2に書き込まれる。レジスタR2の保持
データは、浮動小数点数仮数部Ymの2進表現された開
平値Zmである。
【0018】なお、レジスタR1から出力されたデータ
をそのまま出力する第1のシフト回路404の機能と、
定数2から冗長2進数を減算する減算回路407の機能
とは、NR法による2進除算を図5の乗算処理装置で実
行する際に利用される。
【0019】
【発明が解決しようとする課題】図5に示す従来の乗算
処理装置の構成によれば、被乗数側にはレジスタR0と
部分積加算木405との間に第2の選択回路411のみ
が介在するのに対して、乗数側にはレジスタR1と部分
積加算木405との間に第1のシフト回路404、第1
の選択回路410及び乗数リコード回路409の三者が
介在している。したがって、部分積加算木405への乗
数の入力は、被乗数の入力に比べて大幅に遅れることと
なる。このことは、乗算処理装置の演算速度を低下させ
る1つの要因となっていた。
【0020】本発明の目的は、乗算処理装置の演算速度
を向上させることにある。
【0021】
【課題を解決するための手段】上記目的を達成するた
め、本発明は、従来は部分積加算木の乗数側にあったシ
フト回路を被乗数側に配置することとしたものである。
【0022】具体的には、請求項1の発明は、図1及び
図2に示すように、乗数側の第1のデータと被乗数側の
第2のデータとを各々入力とした繰り返し乗算を実行す
るための乗算処理装置において、第1のデータをリコー
ドした結果を出力するためのリコード手段109と、第
2のデータに特定の処理を施した結果を出力するための
処理手段104と、リコード手段109の出力データと
処理手段104の出力データとの積を出力するための乗
算手段105と、定数データと乗算手段105の出力デ
ータとの算術演算の結果を出力するための演算手段10
7とを備えた構成を採用したものである。
【0023】請求項2の発明では、変数データ又は定数
1のデータを第1のデータとして選択的に前記リコード
手段109に供給するための選択手段110を更に備え
ることとした。
【0024】請求項3の発明では、前記処理手段104
は第2のデータに右シフト処理を施した結果を出力する
ためのシフト回路を備えることとした。また、請求項4
の発明では、該シフト回路は開平演算のオペランドYm
を第2のデータとして受け取ることとした。
【0025】請求項5の発明では、図3に示すように、
与えられたオペランドをアドレスとして読み出されるべ
きデータを格納しかつ該読み出されたデータを第2のデ
ータとして処理手段204に供給するための記憶手段2
01を更に備えることとした。請求項6の発明では、該
記憶手段201をROM(Read Only Memory)で構成す
ることとした。
【0026】請求項7の発明では、図1〜図3に示すよ
うに、前記乗算手段105は、前記リコード手段109
から出力される冗長2進表現のデータと前記処理手段1
04,204から出力される2進表現のデータとの積を
冗長2進表現で出力するための部分積加算木を備えるこ
ととした。
【0027】請求項8の発明は、図4に示すように、乗
数側の第1のデータと被乗数側の第2のデータとを各々
入力とした乗算を実行するための乗算処理装置におい
て、第1のデータをリコードした結果を出力するための
リコード手段307と、第2のデータに特定の処理を施
した結果を出力するための処理手段305と、リコード
手段307の出力データと処理手段305の出力データ
との積を出力するための乗算手段306とを備えた構成
を採用したものである。
【0028】
【作用】請求項1の発明によれば、乗算手段105の乗
数側にはリコード手段109が、被乗数側には処理手段
104が各々配置される結果、該乗算手段105の2つ
の入力に関し、遅延のバランスがとれる。この結果、繰
り返し乗算のために必要な処理手段104を備えている
にもかかわらず、乗算処理装置の演算速度の低下を防止
できる。
【0029】請求項2の発明によれば、選択手段110
からリコード手段109へ定数1を供給することによ
り、乗算手段105で被乗数に定数1を乗じることが可
能になる。つまり、被乗数側の第2のデータをリコード
した結果を乗算手段105から出力することができ、リ
コード手段109及び乗算手段105の有効利用が図れ
る。
【0030】請求項3の発明によれば、収束型開平演算
等のNR法の適用に際して必要となる右シフト処理を実
現することができる。また、請求項4の発明によれば、
開平演算のオペランドYmを被乗数側の処理手段104
に入力することとしたので、図5中の第3の選択回路4
12や第2のシフト回路406の配設を省略できる。つ
まり、乗算処理装置の回路構成を簡略化でき、LSI化
に好適となる。しかも、処理手段(シフト回路)104
を被乗数側に配置したことと相俟って、乗算処理装置の
演算速度が向上する。
【0031】請求項5又は6の発明によれば、NR法の
適用にあたって記憶手段201から誤差の小さい初期値
が得られる。この結果、乗算の繰り返し実行回数が低減
され、乗算処理装置の演算が高速化される。
【0032】請求項7の発明によれば、内部計算に冗長
2進表現を利用した部分積加算木で乗算手段105を構
成したので、該乗算手段105のコンパクト化と乗算の
高速化とが図られる。
【0033】請求項8の発明によれば、乗算手段306
の乗数側にはリコード手段307が、被乗数側には処理
手段305が各々配置される結果、該乗算手段306の
2つの入力に関し、遅延のバランスがとれる。この結
果、乗算の実行前に要求される被乗数の前処理に必要な
処理手段305を備えているにもかかわらず、乗算処理
装置の演算速度の低下を防止できる。
【0034】
【実施例】以下、図面を参照しながら本発明の実施例に
係る3つの乗算処理装置について説明する。
【0035】(第1の実施例)図1は、本発明の第1の
実施例に係る収束型開平演算のための乗算処理装置のブ
ロック図である。図1中の100〜103は4個のレジ
スタR0〜R3を示している。このうち、レジスタR3
は冗長2進数を格納するためのレジスタであり、他の3
個のレジスタR0,R1,R2は符号なし2進数を格納
するためのレジスタである。シフト回路104は、被乗
数側のデータをそのまま出力(1/1倍)するか、右1
桁シフト(1/2倍)するか、右3桁シフト(1/8
倍)するものである。部分積加算木105は、部分積生
成回路と冗長2進数加算回路とで構成され、冗長2進表
現の乗数側データと2進表現の被乗数側データとの積
(中間結果)を冗長2進表現で出力するものである。乗
数リコード回路109は、乗数側の2進表現データを冗
長2進表現のデータにリコードするための回路である。
減算回路107は、定数(3,1)から冗長2進数を減
算するための回路である。冗長2進数/2進数変換回路
108は、レジスタR3から出力された冗長2進数を2
進数に変換し、その変換結果をレジスタR2に格納する
ための回路である。第1の選択回路110は、定数1、
レジスタR1の出力及びレジスタR3の出力の三者のう
ちのいずれかを選択的に乗数リコード回路109に供給
するものである。第2の選択回路111は、レジスタR
0及びレジスタR2の各出力のうちのいずれかを選択的
にシフト回路104に供給するものである。第3の選択
回路112は、部分積加算木105及び減算回路107
の各出力のうちのいずれかを選択的にレジスタR3に供
給するものである。
【0036】以上の説明から判るように、図1の乗算処
理装置では、図5に示す従来例に比べてシフト回路及び
選択回路の数が各々1つ少なくなっており、構成が簡略
化されている。
【0037】図1に示す本実施例の乗算処理装置によれ
ば、従来と同様にレジスタR0に2進表現の被乗数を、
レジスタR1に2進表現の乗数を各々設定し、かつシフ
ト回路104のシフト処理を禁止することにより、部分
積加算木105による1回の乗算実行で積が求められ
る。
【0038】この乗算処理装置で開平演算を実行する場
合には、前記の式(1)に従ったNR法が適用される。
以下、浮動小数点数の仮数部Ymを入力オペランドとし
た開平演算を実行する際の各部の動作を説明する。その
演算のフローは、 [1] R0 ← Ym [2] R3 ← 1−<R0>/8 loop i= 1 to n [3] R2 ← conv(<R3>) R3 ← mul(<R0>,<R3>) [4] R3 ← 3−mul(<R2>,<R3>) [5] R3 ← mul(<R2>/2,<R3>) end loop [6] R3 ← mul(<R0>,<R3>) [7] R2 ← conv(<R3>) である。
【0039】上記演算フローを1サイクル毎に詳しく説
明すると、まず、第1サイクル目では、浮動小数点数の
仮数部YmがレジスタR0に書き込まれる。
【0040】第2サイクル目では、レジスタR0からY
mが読み出され、該Ymが第2の選択回路111を経て
シフト回路104に入力される。シフト回路104は、
入力されたYmに右3桁シフトを施すことによりYm/
8を生成する。生成されたYm/8は、部分積加算木1
05の被乗数側に入力される。一方、第1の選択回路1
10は、定数1を乗数リコード回路109に供給する。
したがって、部分積加算木105により乗算1*(Ym
/8)が実行される。その乗算結果は、減算回路107
に入力される。減算回路107では1−1*(Ym/
8)(これをr0とする。)が求められる。その結果
は、第3の選択回路112を経てレジスタR3に書き込
まれる。ここで、ループ制御変数iを1とする。
【0041】第3サイクル目では、冗長2進数/2進数
変換と乗算とが並列に実行される。レジスタR3からr
i-1 (初期値r0 )が読み出され、該読み出されたr
i-1 が冗長2進数/2進数変換回路108に入力され、
その変換結果がレジスタR2に書き込まれる。一方、レ
ジスタR3から読み出されたri-1 は、第1の選択回路
110を経て乗数リコード回路109にも入力される。
この時、シフト回路104は、レジスタR0から第2の
選択回路111を経て入力されたYmをそのまま通過さ
せることにより、部分積加算木105の被乗数側にYm
を供給する。そして、部分積加算木105により乗算r
i-1 *Ymが実行される。その乗算結果は、第3の選択
回路112を経てレジスタR3に書き込まれる。
【0042】第4サイクル目では、レジスタR2のデー
タとレジスタR3のデータとの乗算が実行される。その
ため、レジスタR2から2進表現のri-1 が読み出さ
れ、該ri-1 がそのまま第2の選択回路111及びシフ
ト回路104を経て部分積加算木105の被乗数側に入
力される。一方、レジスタR3から冗長2進表現のri-
1 *Ymが読み出され、該ri-1 *Ymが第1の選択回
路110を経て乗数リコード回路109に入力される。
そして、部分積加算木105により積ri-1 *ri-1
Ymが求められる。この乗算結果は、減算回路107に
入力される。減算回路107では、3−ri-1 *ri-1
*Ymが求められる。その結果は、第3の選択回路11
2を経てレジスタR3に書き込まれる。
【0043】第5サイクル目では、レジスタR2のデー
タの半値とレジスタR3のデータとの乗算が実行され
る。そのため、シフト回路104は、レジスタR2から
第2の選択回路111を経て入力されたri-1 に右1桁
シフトを施すことによりri-1/2を生成する。生成さ
れたri-1 /2は、部分積加算木105の被乗数側に入
力される。一方、レジスタR3から3−ri-1 *ri-1
*Ymが読み出され、該3−ri-1 *ri-1 *Ymが第
1の選択回路110を経て乗数リコード回路109に入
力される。そして、部分積加算木105により積(r
i-1 /2)*(3−ri-1 *ri-1 *Ym)が求められ
る。この乗算結果をri とする。部分積加算木105か
ら出力されたri は、第3の選択回路112を経てレジ
スタR3に書き込まれる。ここで、ループ制御変数iが
インクリメントされる。そして、上記第3サイクル目か
ら第5サイクル目の動作がn回繰り返される。この結
果、SQRT(1/Ym)の近似値rn がレジスタR3
に格納される。
【0044】第(3n+3)サイクル目では、レジスタ
R0のデータ(Ym)とレジスタR3のデータ(rn
との乗算が実行される。そのため、レジスタR3からr
n が読み出され、該読み出されたrn が第1の選択回路
110を経て乗数リコード回路109に入力される。一
方、レジスタR0からYmが再度読み出され、該Ymが
そのまま第2の選択回路111及びシフト回路104を
経て部分積加算木105の被乗数側に入力される。そし
て、部分積加算木105により乗算rn *Ymが実行さ
れる。その乗算結果は、第3の選択回路112を経てレ
ジスタR3に書き込まれる。
【0045】第(3n+4)サイクル目では、レジスタ
R3からrn *Ymが読み出され、該rn *Ymが冗長
2進数/2進数変換回路108に入力され、その変換結
果がレジスタR2に書き込まれる。レジスタR2の保持
データは、浮動小数点数仮数部Ymの2進表現された開
平値Zmである。
【0046】以上のように本実施例によれば、図5に示
す従来の乗算処理装置の場合と同じサイクル数で開平値
Zmが求められる。ただし、部分積加算木105の乗数
側には乗数リコード回路109が、被乗数側にはシフト
回路104が各々バランス良く配置されているので、部
分積加算木105による多数回の乗算が各々従来に比べ
て高速化される結果、開平値Zmが格段に速く得られ
る。
【0047】なお、図2に示すように、開平演算のオペ
ランドYmを乗数側のレジスタR1に入力することも可
能である。ただし、第2の選択回路111aは、レジス
タR0、レジスタR1及びレジスタR2の3つの出力の
うちのいずれかを選択的にシフト回路104に供給する
ものとする。この変形例によれば、前記演算のフロー
[1]〜[7]中のR0をR1に変更したうえ該フロー
を実行することにより、図1の構成の場合と同様に開平
値Zm=SQRT(Ym)が高速に得られる。
【0048】また、NR法による2進除算のために、図
5の場合にならって図1及び図2の乗算処理装置に若干
の修正を加えることは容易である。また、図1及び図2
の乗算処理装置では部分積加算木105の被乗数側に右
シフト処理のためのシフト回路104を配置して開平演
算を実行していたが、他の種類の演算のために該シフト
回路104を他の処理手段に置き換えることも可能であ
る。この場合にも、処理手段を部分積加算木105の被
乗数側に配置することにより、乗算処理装置の高速性が
担保される。
【0049】(第2の実施例)図3は、本発明の第2の
実施例に係る収束型開平演算のための乗算処理装置のブ
ロック図である。一般に、NR法等の収束型の繰り返し
演算方法では、初期値の誤差が小さいほど演算の繰り返
し実行回数が低減されるので、所望の演算結果が速く得
られる。前記第1の実施例は開平演算のための初期値r
0 を1−Ym/8の計算によって求めるものであるが、
第2の実施例は誤差の小さい初期値が得られるようにR
OM201を備えた構成を採用したものである。
【0050】図3において、ROM201は、レジスタ
R0に書き込まれた開平演算の入力オペランドすなわち
浮動小数点数の仮数部Ymをアドレスとして読み出され
るべき初期値データを格納したメモリである。シフト回
路204は、被乗数側のデータをそのまま出力(1/1
倍)するか、右1桁シフト(1/2倍)するものであ
る。減算回路207は、定数3から冗長2進数を減算す
るための回路である。第1の選択回路210は、レジス
タR1及びレジスタR3の各出力のうちのいずれかを選
択的に乗数リコード回路109に供給するものである。
第2の選択回路211は、ROM201、レジスタR0
及びレジスタR2の各出力のうちのいずれかを選択的に
シフト回路204に供給するものである。部分積加算木
105、乗数リコード回路109、冗長2進数/2進数
変換回路108及び第3の選択回路112を含む他の構
成要素は図1及び図2と同様である。
【0051】図3に示す第2の実施例の乗算処理装置に
よれば、第1の実施例の場合と同様に、部分積加算木1
05による1回の乗算実行で被乗数と乗数との積が求め
られる。
【0052】この乗算処理装置で浮動小数点数の仮数部
Ymの開平値Zm=SQRT(Ym)を求める開平演算
を実行する場合に適用されるアルゴリズムは、 r0 =ROM(Ym) loop i= 1 to n ri =(ri-1 /2)*(3−ri-1 2 *Ym) end loop Zm=rn *Ym (2) である。ただし、また、ROM(Ym)は、Ymをアド
レスとしてROM201から読み出したデータを意味す
る。
【0053】図3の乗算処理装置で式(2)のアルゴリ
ズムを実現するための演算のフローは、 [1] R1 ← Ym R0 ← Ym [2] R3 ← mul(ROM(<R0>),<R
1>) [3] R3 ← 3−mul(ROM(<R0>),
<R3>) [4] R3 ← mul(ROM(<R0>)/2,
<R3>) loop i= 2 to n [5] R2 ← conv(<R3>) R3 ← mul(<R0>,<R3>) [6] R3 ← 3−mul(<R2>,<R3>) [7] R3 ← mul(<R2>/2,<R3>) end loop [8] R3 ← mul(<R0>,<R3>) [9] R2 ← conv(<R3>) である。
【0054】上記演算フローを1サイクル毎に詳しく説
明すると、まず、第1サイクル目では、浮動小数点数の
仮数部YmがレジスタR0及びレジスタR1の双方に書
き込まれる。
【0055】第2サイクル目では、レジスタR0からY
mが読み出され、該YmがROM201に読み出しアド
レスとして与えられる。ROM201から読み出された
データ(これをr0 とする。)は、そのまま第2の選択
回路211及びシフト回路204を経て部分積加算木1
05の被乗数側に入力される。一方、レジスタR1から
Ymが読み出され、該Ymが第1の選択回路210を経
て乗数リコード回路109に入力される。そして、部分
積加算木105により乗算r0 *Ymが実行される。そ
の乗算結果は、第3の選択回路112を経てレジスタR
3に書き込まれる。ここで、ループ制御変数iを1とす
る。
【0056】第3サイクル目では、ROM201からの
読み出しデータとレジスタR3のデータとの乗算が実行
される。そのため、レジスタR3からr0 *Ymが読み
出され、該r0 *Ymが第1の選択回路210を経て乗
数リコード回路109に入力される。一方、部分積加算
木105の被乗数側には、ROM201から読み出され
たr0 が与えられている。そして、部分積加算木105
により積r0 *r0 *Ymが求められる。その乗算結果
は、減算回路207に入力される。減算回路207では
3−r0 *r0 *Ymが求められる。その結果は、第3
の選択回路112を経てレジスタR3に書き込まれる。
【0057】第4サイクル目では、ROM201からの
読み出しデータの半値とレジスタR3のデータとの乗算
が実行される。そのため、レジスタR3から3−r0
0*Ymが読み出され、該3−r0 *r0 *Ymが第
1の選択回路210を経て乗数リコード回路109に入
力される。一方、シフト回路204は、ROM201か
ら第2の選択回路211を経て入力されたr0 に右1桁
シフトを施すことによりr0 /2を生成する。生成され
たr0 /2は、部分積加算木105の被乗数側に入力さ
れる。そして、部分積加算木105により積(r0
2)*(3−r0*r0 *Ym)が求められる。この乗
算結果をr1 とする。部分積加算木105から出力され
たr1 は、第3の選択回路112を経てレジスタR3に
書き込まれる。ここで、ループ制御変数iを2とする。
【0058】第5サイクル目では、冗長2進数/2進数
変換と乗算とが並列に実行される。レジスタR3からr
i-1 (=r1 )が読み出され、該読み出されたri-1
冗長2進数/2進数変換回路108に入力され、その変
換結果がレジスタR2に書き込まれる。一方、レジスタ
R3から読み出されたri-1 は、第1の選択回路210
を経て乗数リコード回路109にも入力される。この
時、レジスタR0からYmが再度読み出され、該Ymが
そのまま第2の選択回路211及びシフト回路204を
経て部分積加算木105の被乗数側に入力される。そし
て、部分積加算木105により乗算ri-1 *Ymが実行
される。その乗算結果は、第3の選択回路112を経て
レジスタR3に書き込まれる。
【0059】第6サイクル目では、レジスタR2のデー
タとレジスタR3のデータとの乗算が実行される。その
ため、レジスタR2から2進表現のri-1 が読み出さ
れ、該ri-1 がそのまま第2の選択回路211及びシフ
ト回路204を経て部分積加算木105の被乗数側に入
力される。一方、レジスタR3から冗長2進表現のri-
1 *Ymが読み出され、該ri-1 *Ymが第1の選択回
路210を経て乗数リコード回路109に入力される。
そして、部分積加算木105により積ri-1 *ri-1
Ymが求められる。この乗算結果は、減算回路207に
入力される。減算回路207では、3−ri-1 *ri-1
*Ymが求められる。その結果は、第3の選択回路11
2を経てレジスタR3に書き込まれる。
【0060】第7サイクル目では、レジスタR2のデー
タの半値とレジスタR3のデータとの乗算が実行され
る。そのため、レジスタR2からri-1 が読み出され、
該読み出されたri-1 が第2の選択回路211を経てシ
フト回路204に入力される。シフト回路204は、入
力されたri-1 に右1桁シフトを施すことによりri-1
/2を生成する。生成されたri-1 /2は、部分積加算
木105の被乗数側に入力される。一方、レジスタR3
から3−ri-1 *ri-1 *Ymが読み出され、該3−r
i-1 *ri-1 *Ymが第1の選択回路210を経て乗数
リコード回路109に入力される。そして、部分積加算
木105により積(ri-1 /2)*(3−ri-1 *r
i-1 *Ym)が求められる。この乗算結果をri とす
る。部分積加算木105から出力されたri は、第3の
選択回路112を経てレジスタR3に書き込まれる。こ
こで、ループ制御変数iがインクリメントされる。そし
て、上記第5サイクル目から第7サイクル目の動作が
(n−1)回繰り返される。この結果、SQRT(1/
Ym)の近似値rn がレジスタR3に格納される。
【0061】第(3n+5)サイクル目では、レジスタ
R0のデータ(Ym)とレジスタR3のデータ(rn
との乗算が実行される。そのため、レジスタR3からr
n が読み出され、該読み出されたrn が第1の選択回路
210を経て乗数リコード回路109に入力される。一
方、レジスタR0からYmが再度読み出され、該Ymが
そのまま第2の選択回路211及びシフト回路204を
経て部分積加算木105の被乗数側に入力される。そし
て、部分積加算木105により乗算rn *Ymが実行さ
れる。その乗算結果は、第3の選択回路112を経てレ
ジスタR3に書き込まれる。
【0062】第(3n+6)サイクル目では、レジスタ
R3からrn *Ymが読み出され、該rn *Ymが冗長
2進数/2進数変換回路108に入力され、その変換結
果がレジスタR2に書き込まれる。レジスタR2の保持
データは、浮動小数点数仮数部Ymの2進表現された開
平値Zmである。
【0063】以上のように本実施例によれば、部分積加
算木105の乗数側には乗数リコード回路109が、被
乗数側にはシフト回路204が各々バランス良く配置さ
れているので、部分積加算木105による多数回の乗算
が各々従来に比べて高速化される結果、開平値Zmが格
段に速く得られる。また、乗数リコード回路109の動
作中に、被乗数側に配置されたROM201から初期値
0 を読み出すことができる。しかも、ROM201に
より誤差の小さい初期値r0 を得ることができるので、
上記第5サイクル目から第7サイクル目の動作の繰り返
し実行回数が低減され、開平値Zmが更に高速に得られ
る。
【0064】なお、NR法による2進除算のために、図
5の場合にならって図3の乗算処理装置に若干の修正を
加えることは容易である。また、図3の乗算処理装置で
は部分積加算木105の被乗数側に右シフト処理のため
のシフト回路204を配置して開平演算を実行していた
が、他の種類の演算のために該シフト回路204を他の
処理手段に置き換えることも可能である。この場合に
も、処理手段を部分積加算木105の被乗数側に配置す
ることにより、乗算処理装置の高速性が担保される。
【0065】(第3の実施例)図4は、本発明の第3の
実施例に係る(A−B)*Yの演算のための乗算処理装
置のブロック図である。図4中の300〜304は5個
のレジスタR0〜R4を示している。このうち、レジス
タR4は冗長2進数を格納するためのレジスタであり、
他の4個のレジスタR0,R1,R2,R3は2進数を
格納するためのレジスタである。減算回路305は、2
つの2進表現データA,Bの差X(=A−B)を冗長2
進表現で出力するものである。部分積加算木306は、
部分積生成回路と冗長2進数加算回路とで構成され、冗
長2進表現の乗数側データと、同じく冗長2進表現の被
乗数側データXとの積を冗長2進表現で出力するもので
ある。乗数リコード回路307は、乗数側の2進表現デ
ータYを冗長2進表現のデータにリコードするための回
路である。冗長2進数/2進数変換回路308は、レジ
スタR4から出力された冗長2進数を2進数に変換し、
その変換結果をレジスタR3に格納するための回路であ
る。
【0066】減算回路305は、各々n桁の2進数デー
タA,B、すなわち A=An-1 n-2 n-3 ...A2 1 0 B=Bn-1 n-2 n-3 ...B2 1 0 を入力データとする。各桁Ai 及びBi (i=0〜n−
1)は、それぞれ0又は1の値を持つ。減算回路305
は、各桁毎の減算Ai −Bi を実行することにより、冗
長2進数データX(=A−B)を生成する。この冗長2
進数データXの生成にはボローの伝播が発生しないた
め、たかだか2ゲート程度相当の遅延が発生するのみで
ある。この遅延は、乗数リコード回路307の遅延と同
等又はこれより小さい。
【0067】一方、乗数を2桁毎にリコードする2ビッ
トBoothの方法を乗数リコード回路307に採用す
る場合、乗数リコード回路307は、n桁の2進数デー
タYを、各桁Yi (i=0〜n−1)が集合{−2,−
1,0,1,2}の要素で構成された冗長2進表現の乗
数データにリコードする。部分積加算木306は、乗数
リコード回路307から与えられる乗数データの各桁Y
i と、減算回路305から出力される冗長2進数データ
Xとを入力として部分積X*Yi を生成し、かつ各部分
積を加算する。この際、Yi =2に対応する部分積X*
i はXを左1桁シフトさせたデータ、Yi =1に対応
する部分積X*Yi はXそのもの、Yi=0に対応する
部分積X*Yi は0、Yi =−1に対応する部分積X*
i はXの各桁を符号反転させたデータ、Yi =−2に
対応する部分積X*Yi はXを左1桁シフトさせかつそ
の各桁を符号反転させたデータである。このようにして
乗数データの各桁Yi 毎に生成された部分積は、トリー
状の構成を持った冗長2進数加算回路により加算され
る。この結果、部分積加算木306から冗長2進表現の
積X*Yが出力される。
【0068】図4に示す本実施例の乗算処理装置によれ
ば、次のような演算フローに従って(A−B)*Yの演
算が実行される。
【0069】この演算フローを1サイクル毎に説明する
と、まず、第1サイクル目では、レジスタR0及びレジ
スタR1に2進数A,Bが、レジスタR2に2進数Yが
各々書き込まれる。
【0070】第2サイクル目では、レジスタR0及びレ
ジスタR1からA及びBが各々読み出され、該A及びB
が減算回路305に入力される。減算回路305では、
冗長2進表現の差X(=A−B)が求められる。その演
算結果Xは、部分積加算木306の被乗数側に入力され
る。一方、レジスタR2から2進数Yが読み出され、該
Yが乗数リコード回路307に入力される。そして、部
分積加算木306により冗長2進表現の積(A−B)*
Yが求められる。その乗算結果は、レジスタR4に書き
込まれる。
【0071】第3サイクル目では、レジスタR4から
(A−B)*Yが読み出され、該読み出された(A−
B)*Yが冗長2進数/2進数変換回路308に入力さ
れ、その変換結果がレジスタR3に書き込まれる。レジ
スタR3の保持データは、2進表現の(A−B)*Yで
ある。
【0072】以上のように本実施例によれば、部分積加
算木306の乗数側に乗数リコード回路307を、被乗
数側に減算回路305をバランス良く配置したので、部
分積加算木306による乗算が高速化される結果、(A
−B)*Yの演算結果が高速に得られる。
【0073】なお、本実施例に係る図4の乗算処理装置
では冗長2進表現の積を出力するための部分積加算木3
06を用いた構成を採用したが、例えば全加算器をWa
llace木状に組み上げて部分積加算木を構成し、該
部分積加算木で桁上げ保存加算を実行する構成でも、本
実施例と同様の効果を奏することができる。
【0074】
【発明の効果】以上説明してきたとおり、請求項1の発
明によれば、乗算手段の乗数側にリコード手段を、被乗
数側に処理手段を各々配置した構成を採用したので、乗
算手段の2つの入力に関し、遅延のバランスがとれる。
この結果、繰り返し乗算のために必要な処理手段を備え
ているにもかかわらず、乗算処理装置の演算速度の低下
を防止でき、実用上極めて有用である。
【0075】請求項2の発明によれば、リコード手段へ
定数1を供給することができる選択手段を設けた構成を
採用したので、リコード手段及び乗算手段の有効利用が
図れる。
【0076】請求項3の発明によれば、処理手段を右シ
フト処理のためのシフト回路で構成したので、収束型開
平演算等の実行が可能となる。また、請求項4の発明に
よれば、開平演算のオペランドYmを乗算手段の被乗数
側に入力することとしたので、乗算処理装置の回路構成
を簡略化できる。しかも、処理手段を被乗数側に配置し
たことと相俟って、乗算処理装置の演算速度が向上す
る。
【0077】請求項5又は6の発明によれば、NR法の
適用にあたって誤差の小さい初期値を出力できる記憶手
段(ROM)を被乗数側に備えた構成を採用したので、
乗算の繰り返し実行回数が低減され、乗算処理装置の演
算が高速化される。
【0078】請求項7の発明によれば、内部計算に冗長
2進表現を利用した部分積加算木で乗算手段を構成した
ので、乗算手段のコンパクト化と乗算の高速化とを達成
できる。
【0079】また、請求項8の発明によれば、乗算手段
の乗数側にリコード手段を、被乗数側に処理手段を各々
配置した構成を採用したので、乗算手段の2つの入力に
関し、遅延のバランスがとれる。この結果、乗算の実行
前に要求される被乗数の前処理に必要な処理手段を備え
ているにもかかわらず、乗算処理装置の演算速度の低下
を防止でき、実用上極めて有用である。
【図面の簡単な説明】
【図1】本発明の第1の実施例に係る乗算処理装置のブ
ロック図である。
【図2】図1の乗算処理装置の変形例を示すブロック図
である。
【図3】本発明の第2の実施例に係る乗算処理装置のブ
ロック図である。
【図4】本発明の第3の実施例に係る乗算処理装置のブ
ロック図である。
【図5】従来の乗算処理装置のブロック図である。
【符号の説明】
100〜103 レジスタ 104 シフト回路(処理手段) 105 部分積加算木(乗算手段) 107 減算回路(演算手段) 108 冗長2進数/2進数変換回路 109 乗数リコード回路(リコード手段) 110 第1の選択回路(選択手段) 111,111a 第2の選択回路 112 第3の選択回路 201 ROM(記憶手段) 204 シフト回路(処理手段) 207 減算回路(演算手段) 210 第1の選択回路 211 第2の選択回路 305 減算回路(処理手段) 306 部分積加算木(乗算手段) 307 乗数リコード回路(リコード手段)

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 乗数側の第1のデータと被乗数側の第2
    のデータとを各々入力とした繰り返し乗算を実行するた
    めの乗算処理装置であって、 第1のデータをリコードした結果を出力するためのリコ
    ード手段と、 第2のデータに特定の処理を施した結果を出力するため
    の処理手段と、 前記リコード手段の出力データと前記処理手段の出力デ
    ータとの積を出力するための乗算手段と、 定数データと前記乗算手段の出力データとの算術演算の
    結果を出力するための演算手段とを備えたことを特徴と
    する乗算処理装置。
  2. 【請求項2】 請求項1記載の乗算処理装置において、 変数データ又は定数1のデータを第1のデータとして選
    択的に前記リコード手段に供給するための選択手段を更
    に備えたことを特徴とする乗算処理装置。
  3. 【請求項3】 請求項1記載の乗算処理装置において、 前記処理手段は、第2のデータに右シフト処理を施した
    結果を出力するためのシフト回路を備えたことを特徴と
    する乗算処理装置。
  4. 【請求項4】 請求項3記載の乗算処理装置において、 前記シフト回路は、開平演算のオペランドを第2のデー
    タとして受け取ることを特徴とする乗算処理装置。
  5. 【請求項5】 請求項1記載の乗算処理装置において、 与えられたオペランドをアドレスとして読み出されるべ
    きデータを格納し、かつ該読み出されたデータを第2の
    データとして前記処理手段に供給するための記憶手段を
    更に備えたことを特徴とする乗算処理装置。
  6. 【請求項6】 請求項5記載の乗算処理装置において、 前記記憶手段は、ROMを備えたことを特徴とする乗算
    処理装置。
  7. 【請求項7】 請求項1記載の乗算処理装置において、 前記乗算手段は、前記リコード手段から出力される冗長
    2進表現のデータと前記処理手段から出力される2進表
    現のデータとの積を冗長2進表現で出力するための部分
    積加算木を備えたことを特徴とする乗算処理装置。
  8. 【請求項8】 乗数側の第1のデータと被乗数側の第2
    のデータとを各々入力とした乗算を実行するための乗算
    処理装置であって、 第1のデータをリコードした結果を出力するためのリコ
    ード手段と、 第2のデータに特定の処理を施した結果を出力するため
    の処理手段と、 前記リコード手段の出力データと前記処理手段の出力デ
    ータとの積を出力するための乗算手段とを備えたことを
    特徴とする乗算処理装置。
JP5094774A 1992-05-01 1993-04-22 乗算処理装置 Pending JPH0683587A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5094774A JPH0683587A (ja) 1992-05-01 1993-04-22 乗算処理装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP4-112790 1992-05-01
JP11279092 1992-05-01
JP5094774A JPH0683587A (ja) 1992-05-01 1993-04-22 乗算処理装置

Publications (1)

Publication Number Publication Date
JPH0683587A true JPH0683587A (ja) 1994-03-25

Family

ID=26436009

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5094774A Pending JPH0683587A (ja) 1992-05-01 1993-04-22 乗算処理装置

Country Status (1)

Country Link
JP (1) JPH0683587A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001046796A1 (fr) * 1999-12-22 2001-06-28 Wataru Ogata Systeme de calcul utilisant la methode de newton-raphson

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001046796A1 (fr) * 1999-12-22 2001-06-28 Wataru Ogata Systeme de calcul utilisant la methode de newton-raphson
US7191204B1 (en) * 1999-12-22 2007-03-13 Wataru Ogata Computing system using newton-raphson method

Similar Documents

Publication Publication Date Title
Lang et al. A radix-10 combinational multiplier
JP3626769B2 (ja) 除算及び開平算に関して修正ニュートン−ラプソン技術を用いる浮動小数点演算装置
US6233597B1 (en) Computing apparatus for double-precision multiplication
US5280439A (en) Apparatus for determining booth recoder input control signals
JPH02196328A (ja) 浮動小数点演算装置
US20050044124A1 (en) Arithmetic processor
JPH0612229A (ja) 乗累算回路
JPH08185309A (ja) 4倍精度演算の実行方法
JP2002108606A (ja) スティッキービット生成回路及び乗算器
JP5640081B2 (ja) 飽和を伴う整数乗算および乗算加算演算
JP4273071B2 (ja) 除算・開平演算器
US5734599A (en) Performing a population count using multiplication
KR100308726B1 (ko) 고속 산술 장치에서 올림수 예견가산기 스테이지의 수를 감소시키는 장치 및 방법
US20040010536A1 (en) Apparatus for multiplication of data in two's complement and unsigned magnitude formats
JP2511527B2 (ja) 浮動小数点演算器
JPH0683587A (ja) 乗算処理装置
TWI258698B (en) Static floating-point processor suitable for embedded digital signal processing and shift control method thereof
Villalba et al. Radix-4 vectoring cordic algorithm and architectures
JP3222313B2 (ja) 演算装置及び演算方法
JPH04172526A (ja) 浮動小数点除算器
KR102338863B1 (ko) 연산을 제어하기 위한 장치 및 방법
Hickmann et al. Improved combined binary/decimal fixed-point multipliers
Wires et al. Reciprocal and reciprocal square root units with operand modification and multiplication
JP3691538B2 (ja) ベクトルデータ加算方法及びベクトルデータ乗算方法
Tan et al. A Multi-level Parallel Integer/Floating-Point Arithmetic Architecture for Deep Learning Instructions

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20011030