JP3493085B2 - 演算器 - Google Patents

演算器

Info

Publication number
JP3493085B2
JP3493085B2 JP29439095A JP29439095A JP3493085B2 JP 3493085 B2 JP3493085 B2 JP 3493085B2 JP 29439095 A JP29439095 A JP 29439095A JP 29439095 A JP29439095 A JP 29439095A JP 3493085 B2 JP3493085 B2 JP 3493085B2
Authority
JP
Japan
Prior art keywords
arithmetic
unit
holding
multiplication
calculation
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
JP29439095A
Other languages
English (en)
Other versions
JPH09134277A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP29439095A priority Critical patent/JP3493085B2/ja
Publication of JPH09134277A publication Critical patent/JPH09134277A/ja
Application granted granted Critical
Publication of JP3493085B2 publication Critical patent/JP3493085B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は演算器に関し、特
に、効率的にプログラムシーケンスを終了させることの
できる演算器に関する。
【0002】
【従来の技術】演算器のなかで、除算器は大きく反復型
演算器と収束型演算器とに分けることができる。反復型
演算器は、筆算の原理に基づき、被除数を減算して商デ
ィジットを決定していく方式である。また、収束型演算
器は多項式で表現された漸化式を比較的高速な乗算器や
加減算器を用いて繰り返し演算する事により、商を収束
値として求める。収束型除算の多くのアルゴリスムは、
2次の収束係数を持つため収束が早く、適当に初期値の
有効数字をとれば、反復型よりも高速である。
【0003】図5は、典型的な収束型除算器の例であ
る。主要な構成は、冗長2進数系で行う乗算器であり、
ハードウエアを共有して演算を行うようにしてある。こ
こで、冗長2進数は、正のディジットと負のディジット
とを表す2つの2進数の組によって表現される。乗算
器、除算器の具体的な構成やその動作に関しては、以下
の文献に種々開示されている。
【0004】乗算に関して 高木 直史、安浦 寛人、矢島 修三:“冗長2進加算
木を用いたVLSI向き高速乗算器”,電子通信学会論
文誌、Vol.J66−D No.6,pp.683−
690,1983.6. 除算・開平演算器に関して 高木 直史、矢島 修三:“冗長2進乗算器を用いた高
速2進除算及び開平”,電子通信学会論文誌、Vol.
85No.320,pp.45−50,1986.3. H.Kabuo, et al.:“Accurate Rounding Scheme for the
Newton-Raphson Method Using Redundant Binary Rapr
esentation, ”IEEE Trans. on COMPUTERS, Vol.43, N
o.1, Jan. 1994. 一般的な収束型の除算器は、Newton-Raphson法(以下、
ニュートン法と略)を冗長2進数を用いて実装してい
る。ニュートン法は、以下のような漸化式を繰り返し計
算することによって除数Yの逆数R[n]を求め、R
[n]に被除数Xをかけることにより商Dを求める。こ
こで[n]は反復演算の反復回数を表す。R[0]は、
除数Yの逆数の初期値(近似値)である。初期値とし
て、8ビットの精度があれば、IEEE754規格が定
める倍精度の除算を行うには、3回の反復演算を行えば
よい。
【0005】
【数1】 R[0] =1/Y (1) R[n+1]=R[n]×(2−Y・R[n]) (2) D =X×R[n] (3) 従って、一般的な収束型の除算器においては乗算器が必
要となるが、この乗算器は相当量のハードウエアを必要
とするため、除算及び乗算を行うにあたっては、乗算器
を共有して実装する場合が多い。
【0006】具体的な乗・除算器の構成を図5に示す。
100,101,102,103,104は、パイプラ
インレジスタである。120は、除数の逆数の初期値
(近似値)を格納するメモリである。このメモリ120
は、パイプラインレジスタ100に格納された乗数の上
位8ビットをアドレスとして入力すると8ビットの精度
の逆数を出力するようにしてある。乗算ツリーは、2進
→冗長2進数変換回路121と、2次のブース・リコー
ダ122と、部分積生成器(図示せず)と、部分積を加
算する冗長2進数系の部分積加算ツリー123とを備え
ている。2進→冗長2進数変換回路121は,2進数の
オペランドXを冗長2進数に変換する。ブースのリコー
ダ122は、入力として冗長2進フォームを許す。部分
積加算ツリー123に入力され、冗長2進数に変換され
たオペランドXの0,1,2倍を生成する。部分積加算
ツリー123は、冗長2進加算器の2進木で構成されて
いる。124は、減算器であり式(2)のカッコ内の計
算、すなわち、定数からの減算を行う。冗長2進数で計
算を行っているため、実際にはインバータより構成され
ている。125は112ビット加算器であり、冗長2進
フォームで表された演算中間値を通常の2進数に変換す
るために用いられる。
【0007】次に、図5に示した乗・除算器の動作につ
いて説明する。この乗・除算器は、2ステージのパイプ
ライン構成を有するものである。
【0008】まず、乗算は、線形(リニア)なパイプラ
インを構成し、2ステージで乗算を終了するものであ
る。第1ステージでは、2進・冗長2進変換回路121
にて冗長2進数への変換を行い、冗長2進・2進ブース
・リコーダ122にてブースのリコードと部分積の生成
し、部分積加算ツリー123にて部分積加算を行い、演
算中間結果205を冗長2進数で求める。その結果はパ
イプラインレジスタ102,103に格納される。第2
ステージでは、冗長2進→2進変換回路125にて冗長
2進数→2進数変換、丸め処理を行う。
【0009】一方、除算は、第1、及び第2ステージで
2つのループを構成し、反復演算を行って演算を終了す
る。次に、図5に示した演算器を用いて、どのように除
算が行われるかを第6図のタイミング図を参照しながら
説明する。除算は10ステップで実行を完了する。
【0010】ステップ1:初期値R[0]をメモリ12
0より読み出す ステップ2:除数YとR[0]を部分積加算ツリー12
3で乗ずる/減算器124を用いて2より乗算結果R
[0]・Yを引く ステップ3:初期値R[0]とステップ2の演算結果を
乗ずる(演算結果をR[1]とする) ステップ4:除数YとR[1]を部分積加算ツリー12
3で乗ずる/減算器124を用いて2より乗算結果R
[1]・Yを引く/加算器125を用いてR[1]を冗
長2進フォームより2進に変換する ステップ5:2進数に変換されたR[1]とステップ4
の演算結果を乗ずる(演算結果をR[2]とする) ステップ6:除数YとR[2]を部分積加算ツリー12
3で乗ずる/減算器124を用いて2より乗算結果R
[2]・Yを引く/加算器125を用いてR[2]を冗
長2進フォームより2進に変換する ステップ7:2進数に変換されたR[2]とステップ6
の演算結果を乗ずる(演算結果をR[3]とする) ステップ8:被除数XとR[3]を掛け、仮の商D’を
求める ステップ9:仮の商D’と除数Yを掛け、商の補正のた
めその結果と被除数Xを比較する ステップ10:商D’を補正、丸めを行い正しい商Dを
求める このように収束型除算器の実際の実装においては、ハー
ドウェア量を削減するため、乗算器に少量のハードウェ
ア(例えば、初期値ROM、パイプライン・レジスタ
等)を追加し、多くの部分を乗算器と共有した形で実装
することで乗・除算の両演算を行うようにした演算器が
多い。
【0011】
【発明が解決しようとする課題】しかしながら、上述の
演算器においては、除算が実行されている間は、除算命
令に乗算器を占有されてしまうので、他の演算を実行す
ることができない。除算は、反復演算であり、リニアな
パイプラインを構成していないため、除算実行時には、
後続の演算を投入することができない。従って、演算器
のスループットは、著しく低下する。前述の例では、除
算は10クロックを掛けて行われる。従って、スループ
ットは9クロックである。つまり、乗算では、クロック
毎に演算を開始・終了することができるが(スループッ
ト1)、除算を行うと、除算開始9クロック後でない
と、後続の演算を開始することができない。
【0012】以上のように従来の演算器、特に収束型の
演算器においては、乗算器と共有した形で乗算器に実装
するため、除算を行っている間は除算によって乗算器が
占有され後続の乗算を実行することができない。このこ
とにより、演算パイプラインが停止してしまうため、処
理性能の著しい低下を招くという問題点があった。
【0013】本発明は以上のような問題点を鑑みて成さ
れたものであり、その目的とするところは、効率的にプ
ログラムシーケンスを終了させる演算器を提供すること
にある。
【0014】
【課題を解決するための手段】上記目的を達成するた
め、第1の発明の特徴は、第1の演算を行う第1の演算
手段と、この第1の演算手段の構成の一部または全部を
共有しており、前記第1の演算より長い演算時間を要す
る第2の演算を行い、前記第2の演算の実行中に演算を
中断する場合には、前記第2の演算の中間情報を出力す
る第2の演算手段と、前記第2の演算の実行中に演算を
中断した場合には、少なくとも前記第2の演算手段が出
力する中間情報を記憶する中間値記憶手段と、前記第1
の演算若しくは前記第2の演算のいずれの演算を行うか
の選択制御信号を出力する演算選択制御手段と、この演
算選択制御手段の選択制御信号に従って、前記第2の演
算の実行中に前記第1の演算を行う前記選択制御信号を
入力した場合には、前記第2の演算を中断して、前記第
2の演算を行う演算器から前記第1の演算手段を用いて
第1の演算を行う演算器へ構成を切替え、前記第1の演
算が終了後に前記第2の演算手段を用いて前記第2の演
算を行う演算器に構成を切替える演算器再構成手段と、
を有し、前記第2の演算手段は、前記演算器再構成手段
により第2の演算器に切替えられた場合に、前記中間値
記憶手段に記憶された前記中間情報を入力して前記第2
の演算を再開することである。
【0015】上記第1の発明の構成では、第1の演算手
段と第2の演算手段が共有する場合であって、第2の演
算の実行中に第1の演算を行う必要が生じた場合には、
中間値記憶手段に第2の演算手段の中間情報を保持して
おく。また、演算器再構成手段により第2の演算を行う
演算器から前記第1の演算手段を用いて第1の演算を行
う演算器へ構成を切替えるようにして先に第1の演算を
追い越し実行するようにする。次に、第1の演算が終了
した後には、演算器再構成手段により再び第2の演算器
に構成される。そして、中間値記憶手段に保持されてい
た中間情報を入力することにより、中断されていた第2
の演算の実行が続行されるようにしてある。これによ
り、演算の停止を回避して、処理性能の著しい低下を防
止するので、効率的にプログラムシーケンスを終了させ
ることができるのである。
【0016】ここで、前記中間情報には、第2の演算の
中間値が含まれ、また、演算の状態のパラメータ等をも
含めたものとしてもよい。
【0017】また、前記第1の演算は、整数または浮動
小数点数の乗算であり、前記第2の演算は、整数若しく
は浮動小数点数の除算または開平演算であることが好ま
しい。
【0018】また、前記演算器は、所定のステージを有
するパイプライン構造を有し、前記中間値記憶手段は、
前記第1の演算手段が出力する中間情報を記憶する第1
のパイプラインレジスタと、前記第2の演算手段が出力
する中間情報を記憶する第2のパイプラインレジスタと
を備え、演算選択制御手段は、演算命令を入力して前記
第1の演算若しくは前記第2の演算のいずれかの演算を
行うかの選択制御信号を前記ステージ毎に出力し、前記
演算器再構成手段は、前記選択制御信号に従って、前記
第2の演算の実行中に前記第1の演算を行う前記選択制
御信号を入力した場合には、前記第2の演算を中断し、
前記第2の演算手段を用いて第2の演算を行う演算器か
ら前記第1の演算の有効な命令及びオペランドが入力さ
れたステージのみが第1の演算を行う演算器へ構成を切
替え、前記第1の演算が終了後に前記第2の演算を行う
演算器に前記ステージ毎に構成を切替えるようにするこ
とが好ましい。
【0019】上記構成では、上記演算器をパイプライン
構成となるようにしてある。これにより、さらに効率的
にプログラムシーケンスを終了させることができるよう
になるのである。
【0020】また、上記目的を達成するため、第2の発
明の特徴は、第1の入力値を保持する第1の保持手段
と、第2の入力値を保持する第2の保持手段と、入力さ
れた値についての乗算を行う乗算器と、この乗算器の出
力を用いて所定の減算を行う減算器と、この減算器の出
力を保持する減算器結果保持手段と、を備えて、乗算ま
たは除算若しくは開平演算を行う演算器において、第3
の入力値を保持する第3の保持手段と、前記第1の入力
値若しくは前記第3の入力値の選択して前記乗算器に出
力する第1の選択手段と、第4の入力値を保持する第4
の保持手段と、前記第2の入力値若しくは前記第4の入
力値の選択して前記乗算器に出力する第2の選択手段
と、演算器が除算または開平演算を中断して乗算を行う
場合には、前記減算器の出力を保持する第5の保持手段
と、演算器が乗算を行う際には、減算器結果保持手段の
出力を選択し、前記演算器が除算または開平演算を再開
する場合には、前記第5の保持手段の出力を選択する第
3の選択手段と、を備えることである。
【0021】前記演算器は、所定のステージを有するパ
イプライン構造を有し、前記第1の保持手段、前記第2
の保持手段、前記減算器結果保持手段、前記第3の保持
手段、前記第4の保持手段、及び前記第5の保持手段
は、パイプラインレジスタであることが好ましい。
【0022】上記第2の発明の構成では、乗算器に少量
のハードウェアを追加、特に乗算用と除算用、それぞれ
専用のパイプラインレジスタを設けた収束型除算器を構
成し、乗算を行うときには乗算専用のパイプライン・レ
ジスタを用いて、リニアなパイプラインを構成し、乗算
をパイプライン動作で実行し、また除算を行う場合は除
算専用のパイプライン・レジスタに切り替えて、ループ
を含む非線形(アンリニア)なパイプラインを構成し、
反復演算を繰り返すことにより除算を実行する。また、
除算実行中に乗算を行う必要が生じた場合には、直ちに
除算専用パイプライン・レジスタから、乗算専用パイプ
ライン・レジスタに切り替えられ、リニアなパイプライ
ンを構成して乗算器に再構成され、後続の乗算を先に追
い越し実行する。この間、除算の中間値は除算専用パイ
プライン・レジスタに保持される。乗算がパイプライン
を通り過ぎると、通過終了したステージから順に乗算専
用パイプラインレジスタは除算専用パイプラインレジス
タに切り替わり、除算器に再々構成される。そして、一
時的に中止されていた除算の実行が続行されるようにし
てある。
【0023】これにより、演算パイプラインが停止を回
避して、処理性能の著しい低下を防止するので、効率的
にプログラムシーケンスを終了させることができるので
ある。
【0024】
【発明の実施の形態】以下、本発明に係る演算器につい
て図面を用いて説明する。図1は、本発明の構成を示す
ブロック図である。本発明に係る演算器は、第1の演算
を行う第1の演算手段1と、第1の演算手段1の構成の
一部または全部を共有しており、第1の演算より長い演
算時間を要する第2の演算を行い、第2の演算の実行中
に演算を中断する場合には、前記第2の演算の中間情報
を出力する第2の演算手段5と、第2の演算手段5が出
力する中間情報を記憶する中間値記憶手段7と、第1の
演算若しくは第2の演算のいずれの演算を行うかの選択
制御信号を出力する演算選択制御手段9と、演算選択制
御手段9の選択制御信号に従って、第2の演算の実行中
に第1の演算を行う前記選択制御信号を入力した場合に
は、第2の演算を中断し、第2の演算を行う演算器から
第1の演算手段1を用いて第1の演算を行う演算器へ構
成を切替え、第1の演算が終了後に第2の演算手段5を
用いて第2の演算を行う演算器に構成を切替える演算器
再構成手段11とを有し、第2の演算手段5は、演算器
再構成手段11により第2の演算器5に切替えられた場
合に、中間値記憶手段7に記憶された中間情報を入力し
て第2の演算を再開するようにしてある。
【0025】図2,図3は、本発明に関する具体的な実
施形態を示したものである。まず、図2を参照して、本
実施形態の構成について詳しく説明する。本除算器は、
乗算器に少量のハードウェアを追加して、除算器を構成
している。基になる乗算器は、冗長2進数系を用いて乗
算を行う。乗算はリニアなパイプラインを構成し2ステ
ージ(E1,E2)で乗算を終了する。また、除算は、
第1(E1)、第2(E2)ステージで2つのループを
構成し、反復演算を行って演算を終了する。図1に示す
本発明の実施形態は、図5に示した従来の乗・除算器に
ハードウェアを追加したものである。すなわち、パイプ
ライン・レジスタ105〜109、選択回路112〜1
16、および演算選択制御回路(図3)を追加してあ
る。図3に示した演算選択制御回路に関しては、後で詳
しく説明する。
【0026】100〜109は、パイプラインレジスタ
である。ここで、パイプラインレジスタ100〜104
は、乗算を行う場合に用い、またパイプラインレジスタ
105〜109は、除算を行う場合に用いるための専用
のレジスタである。パイプラインレジスタ100,10
1には乗算のオペランド、パイプラインレジスタ10
2,103には冗長2進フォームの乗算結果の記憶に用
いられる。パイプラインレジスタ104には、2進フォ
ームの乗算結果が入力される。また、パイプラインレジ
スタ105,106は除算のオペランド、パイプライン
レジスタ107,108は冗長2進フォームの反復演算
の中間値、パイプラインレジスタ109は2進フォーム
の反復演算の中間値がそれぞれ記憶される。
【0027】110〜116は選択回路である。選択回
路110は、メモリ120の出力、乗算オペランドY、
冗長2進フォーム反復中間値207を選択する。演算器
が乗算を実行する時は、乗算オペランドYを選択する。
また、演算器が除算を実行する時は、第2サイクルのみ
メモリ120の出力を選択する。選択回路111は、被
除数Xと除数Y(または、乗算オペランドX,Y)、メ
モリ120の値、2進除算反復演算中間値の内、何れか
を選択する。乗算を行うときは、乗算オペランドXを選
択する。除算を行うときは、最初のサイクルのみメモリ
120の出力を選択する。それ以外は、交互に除数Yま
たは2進反復中間値209を選択する。選択回路112
〜116は、乗算用パイプライン・レジスタと、除算用
パイプライン・レジスタの切り替えを行う。この切り替
えにより乗算器の構成と除算器の構成とを切り替えて実
行することができるようにしてある。また、120は、
除数の逆数の近似値を記憶したメモリである。除数の上
位8ビットをアドレスとして入力すると近似値を8ビッ
トの精度で出力する。
【0028】また、121は、2進→冗長2進数変換器
である。122は、2次のブースリコーダであり、特
に、このリコーダは冗長2進数に直接リコードすること
ができる。123は、SD2進加算ツリーであり、SD
2進加算器が2進木状に構成されている。これら、ブー
スのリコーダ122、冗長2進数加算器ツリー123、
2進→冗長2進変換器121、により乗算ツリーが構成
されている。本乗算ツリーは、冗長2進数で加算を行
い、冗長2進数で乗算結果を出力する。乗算ツリーで
は、
【数2】 漸化式 R[n+]=R[n]×(2−Y・R[n]) の中の2つの乗算、すなわち、R[n]
×(.....)とY・R[n]の計算を行う。124
は、減算器である。漸化式中の減算、すなわち、 2−Y・R[n] を行う。この演算は、定数からの減算であり、冗長2進
数を用いれば、インバータのみで構成することができ
る。加算器125では、冗長2進フォームの中間結果が
入力され、正ディジットから負ディジットを減算する事
により2進数に変換する。
【0029】次に、本実施形態の演算器の動作につい
て、図4を用いて説明する。図4は、本実施形態の動作
のタイミングを説明するための図である。以下、実行の
様子について説明する。図4(a)は、乗算の追い越し
要求が発生しない場合、(b)は乗算の追い越し要求が
あった場合の実行タイミング図である。
【0030】まず、図4(a)について説明する。乗算
の追い越し要求が発生しない場合は、従来と同様に除算
が行われ、10ステップで実行を終了する(ステップ1
〜10)。このとき選択回路112〜116は、演算選
択制御手段により、全て除算用パイプライン・レジスタ
105〜109の出力を選択する。
【0031】ステップ0:除算命令のデコード(デコー
ド・ステージ) ステップ1:初期値R[0]を初期値ROMより読み出
す ここでは、被除数X、除数Yがオペランドレジスタ10
5,106にラッチされる。除数Yの上位8ビットが、
初期値ROM120に入力され、除数Yの逆数の近似値
R[0]が出力される。
【0032】ステップ2:除数YとR[0]を乗算ツリ
ー123で乗じ、減算器124により、2から乗算結果
R[0]・Yを引く ここでは、漸化式 2−Y・R[0]の計算を行う。ま
ず、レジスタ101より除数Yが乗算ツリーの入力Aに
入力される。Yは、2進→冗長2進変換器121で冗長
2進数に変換される。一方、初期値R[0]は、ROM
120より選択回路110を通して、乗算ツリーの入力
Bに入力される。乗算ツリーでは、2つの入力の積R
[0]・Yを計算する。この乗算結果は、冗長2進フォ
ームで求められる。この演算結果は、減算器124に入
力され、定数‘2’から、この乗算結果を減算する。こ
の結果は、レジスタ107,108に入力される。
【0033】ステップ3:初期値R[0]とステップ2
の演算結果を乗ずる(演算結果をR[1]とする) ここでは、初期値R[0]と乗ずるため、レジスタ10
7,108に格納されたステップ2の結果は、乗算ツリ
ーの入力Bに入力され、冗長2進数のままブースのリコ
ーダでリコードされる。この結果を用いて、初期値R
[0]との乗算を行う。演算結果冗長2進R[1]はレ
ジスタ107,108に記憶される。以上で一回の反復
を終了する。
【0034】ステップ4:除数YとR[1]を乗じ、減
算器124を用いて2から乗算結果R[1]・Yを引く
/加算器125を用いてR[1]を冗長2進フォームよ
り2進に変換する ここでは、漸化式 2−Y・R[0]の計算を行う。ま
ず、レジスタ105より除数Yが乗算ツリーの入力Aに
入力される。Yは、2進→冗長2進変換器121で冗長
2進数に変換される。一方、冗長2進R[1]は、レジ
スタ107,108より選択回路110を通して、乗算
ツリーの入力Bに入力される。乗算ツリーでは、2つの
入力の積R[1]・Yを計算する。この乗算結果は、冗
長2進フォームで求められ、減算器124に於いて定数
‘2’よりこの乗算結果を減算する。この結果は、レジ
スタ107,108に入力される。
【0035】また、冗長2進R[1]は加算器125に
も入力され、2進数に変換され(2進R[1]、レジス
タ109に記憶される。
【0036】ステップ5:2進数に変換されたR[1]
とステップ4の演算結果を乗ずる(演算結果をR[2]
とする) ここでは、2進に変換されたR[1]と乗ずるため、レ
ジスタ107,108に格納されたステップ4の結果
は、乗算ツリーの入力Bに入力され、冗長2進数のまま
ブースのリコーダでリコードされる。この結果を用い
て、初期値R[1]との乗算を行う。演算結果冗長2進
R[2]はレジスタ107,108に記憶される。以上
で二回目の反復を終了する。
【0037】ステップ6:除数YとR[2]を乗じ、減
算器124を用いて2から乗算結果R[2]・Yを引く
/加算器125を用いてR[2]を冗長2進フォームよ
り2進に変換 ここでは、漸化式 2−Y・R[2]の計算を行う。ま
ず、レジスタ105より除数Yが乗算ツリーの入力Aに
入力される。Yは、2進→冗長2進変換器121で冗長
2進数に変換される。一方、冗長2進R[2]は、レジ
スタ107,108より選択回路110を通して、乗算
ツリーの入力Bに入力される。乗算ツリーでは、2つの
入力の積R[2]・Yを計算する。この乗算結果は、冗
長2進フォームで求められ、減算器124に於いて定数
‘2’よりこの乗算結果を減算する。この結果は、レジ
スタ107,108に入力される。
【0038】また、冗長2進R[2]は加算器125に
も入力され、2進数に変換され(2進R[2]、レジス
タ109に記憶される。
【0039】ステップ7:2進数に変換されたR[2]
とステップ4の演算結果を乗ずる(演算結果をR[3]
とする) 2進に変換されたR[2]と乗ずるため、レジスタ10
7,108に格納されたステップ4の結果は、乗算ツリ
ーの入力Bに入力され、冗長2進数のままブースのリコ
ーダでリコードされる。この結果を用いて、初期値R
[1]との乗算を行う。演算結果冗長2進R[2]はレ
ジスタ107,108に記憶される。以上で3回目の反
復を終了する。
【0040】ステップ8:被除数XとR[3]を掛け、
仮の商D’を求める ここでは、被除数Xが、乗算ツリーの入力Aに入力され
る。一方乗算ツリーの入力Bには、冗長2進数のR
[3]が入力され、被除数XとR[3]を乗ずることに
より、商D’を求める。本商D’は、1LSUの誤差を
生じる場合があるため、検算により補正する必要があ
る。
【0041】ステップ9:仮の商D’と除数Yを掛け、
検算を行う ここでは、除数Yを乗算ツリーの入力Aに、ステップ8
の結果(冗長2進数)を入力Bに入力することにより、
仮の商D’と被除数Xをかけ、その結果と被除数を比較
する。
【0042】ステップ10:商D’を補正、丸めを行い
正しい商Dを求める ここでは、ステップ9の結果に基づいて、商D’を補正
する。さらに補正結果に基づき、丸め処理を施し正しい
商Dを求める。丸め処理は、IEEE754規格に従
う。
【0043】以上が割り込みがなかった場合の除算の実
行タイミングである。割り込みが無い場合には、なんら
従来の場合と変わり無く実行される。
【0044】次に、除算演算中に乗算の要求があり、割
り込みがかかった場合の動作について図4(b)を用い
て説明する。ここでは、ステップ3のあと乗算を行う例
を示す。
【0045】ステップ0:除算命令のデコード(デコー
ド・ステージ) ステップ1:初期値R[0]を初期値ROMより読み出
す ここでは、被除数X、除数Yがオペランドレジスタ10
5,106にラッチされる。除数Yの上位8ビットが、
初期値ROM120に入力され、除数Yの逆数の近似値
R[0]が出力される。
【0046】ステップ2:除数YとR[0]を乗算ツリ
ーで乗じ、減算器124により、2から乗算結果R
[0]・Yを引く ここでは、漸化式 2−Y・R[0]の計算を行う。ま
ず、レジスタ101より除数Yが乗算ツリーの入力Aに
入力される。Yは、2進→冗長2進変換器121で冗長
2進数に変換される。一方、初期値R[0]は、ROM
120より選択回路110を通して、乗算ツリーの入力
Bに入力される。乗算ツリーでは、2つの入力の積R
[0]・Yを計算する。この乗算結果は、冗長2進フォ
ームで求められる。この演算結果は、減算器124に入
力され、定数‘2’から、この乗算結果を減算する。こ
の結果は、レジスタ107,108に入力される。
【0047】ステップ3:初期値R[0]とステップ2
の演算結果を乗ずる(演算結果をR[1]とする) ここでは、初期値R[0]と乗ずるため、レジスタ10
7,108に格納されたステップ2の結果は、乗算ツリ
ーの入力Bに入力され、冗長2進数のままブースのリコ
ーダでリコードされる。この結果を用いて、初期値R
[0]との乗算を行う。演算結果冗長2進R[1]はレ
ジスタ107,108に記憶される。以上で一回の反復
を終了する。
【0048】ステップM:選択回路を乗算器側に切り替
え、乗算を実行/加算器125を用いてR[1]を冗長
2進フォームより2進に変換 第1ステージでは、演算選択制御手段により、選択回路
112,113を乗算側に切り替えて、乗算オペランド
X´,Y´を乗算ツリーに入力し、通常の乗算を行う。
このとき、乗算のオペランド、反復中間値は、105〜
109に保持される。
【0049】冗長2進R[1]は加算器125に入力さ
れ、冗長2進フォームで求めた中間結果を2進数に変換
され(2進R[1])、レジスタ109に記憶される。
すなわち、第1ステージのみが、乗算器に再構成され乗
算を行う。第2ステージは、乗算器を構成したままであ
る。このように、演算器の再構成は、ステージ毎に行う
ことができる。
【0050】ステップ4:除数YとR[1]を乗じ、減
算器124を用いて2より乗算結果R[1]・Yを引く
/乗算中間値の丸め処理を行う 第1ステージでは、漸化式 2−Y・R[1]の計算を
行う。まず、レジスタ100より除数Yが乗算ツリーの
入力Aに入力される。Yは、2進→冗長2進変換器12
1で冗長2進数に変換される。一方、冗長2進R[1]
は、レジスタ107,108より選択回路を通して、乗
算ツリーの入力Bに入力される。乗算ツリーでは、2つ
の入力の積R[1]・Yを計算する。この乗算結果は、
冗長2進フォームで求められ、減算器124に入力され
る。定数‘2’より乗算結果を減算する。この結果は、
レジスタ107,108に入力される。
【0051】レジスタ104に記憶された割り込みされ
た乗算の中間値を減算器125に入力し、冗長2進→2
進変換、丸め処理を行う。演算結果は、乗算結果として
出力される。すなわち、第2ステージのみが乗算器を構
成し、乗算を行う。第1ステージは、再度除算器に再構
成される。
【0052】ステップ5:2進数に変換されたR[1]
とステップ4の演算結果を乗ずる(演算結果をR[2]
とする) 2進に変換されたR[1]と乗ずるため、レジスタ10
7,108に格納されたステップ4の結果は、乗算ツリ
ーの入力Bに入力され、冗長2進数のままブースのリコ
ーダでリコードされる。この結果を用いて、初期値R
[1]との乗算を行う。演算結果冗長2進R[2]はレ
ジスタ107,108に記憶される。以上で二回目の反
復を終了する。すなわち、第2ステージも再度除算器を
再構成され、もとの除算器を構成する。以下、ステップ
6〜10は、割り込みのない場合と同様である。
【0053】以上、除算実行中の乗算命令が発行され、
除算に乗算を割り込み実行させた例を示した。このよう
に除算を実行中に、乗算命令が発効された場合には、実
行中の除算が一時中断され、先に後続の乗算が実行さ
れ、引き続き除算が演算の途中より実行される。
【0054】次に、割り込みを発生するメカニズムにつ
いて説明する。乗算の追い越し実行は、演算選択制御手
段によって制御される。なお、命令発行、終了のメカニ
ズムに関しては、公知技術を用いて実現可能であるため
説明を省略する。また、本実施形態のプロセッサは命令
発行、終了のメカニズムとして、除算と乗算に関し、ou
t-of-orderの演算終了をサポートしているものとする。
【0055】本実施形態の演算器が実装されるプロセッ
サは、整数演算部、浮動小数点演算部より構成されてい
る。整数演算分、浮動小数点演算部は、以下のような5
段のパイプラインステージを持ち、パイプライン動作す
る。整数演算部は、整数演算の他、分岐処理など、浮動
小数点命令以外の全命令の実行を行う。浮動小数点演算
部は、浮動小数点命令の実行のみを行う。
【0056】整数演算部:以下の5ステージからなる (1)F:命令をフェッチする (2)D:命令をデコードする (3)E:命令を実行する (4)M:メモリをアクセスする (5)W:実行結果のライトバック 浮動小数点演算部:以下の5ステージからなる (1)F:命令をフェッチする (2)D:命令をデコードする (3)E1:命令を実行する(#1) (4)E2:命令を実行する(#2) (5)W:実行結果のライトバック 上記パイプラインにおいて、(1)F:フェッチ・ステ
ージ、(2)D:デコード・ステージは、整数演算器、
浮動小数点演算器に於いて共通である。ここでは、説明
を簡単にするため、1クロック毎に1命令のみが実行開
始できるものとする。
【0057】本実施形態で用いる演算器は、Dステージ
に於いて、如何なる命令が実行されるかを解読し、命令
有効信号309,311を生成する。例えば、命令が浮
動小数点乗算であれば、F乗算有効信号311,浮動小
数点除算であれば、F除算有効信号309が、出力され
る。これらの信号は、この演算が終了するまで、パイプ
ラインの中をオペランドとともに流れていくものであ
る。DE1BSY信号306は、次のクロック(サイク
ル)に於いて、実施形態の乗・除算器のE1ステージで
除算が実行されるか、否かを示す信号である。すなわ
ち、次のクロックにおいて、除算がE1ステージで実行
された場合にはDE1BSY信号がアサートされる。こ
のような信号は様々な方法で生成できるが、本実施形態
では、演算選択制御回路において、カウンタを用いて実
現している。
【0058】図3は演算選択制御回路の構成を示した図
である。演算選択制御回路は、演算器が乗算・除算、何
れを行うかを制御する。演算選択制御回路は、本実施例
の演算器の構成に合わせ、3ステージのパイプライン構
成となっている。第1のステージは、プロセッサ・パイ
プラインのデコードステージに対応する。第2、3のス
テージは、同様にE1,E2ステージに対応する。演算
選択制御回路は、反復定数発生回路401,カウンタ回
路402,カウンタ・ダウン制御回路400,などから
構成される。
【0059】反復定数発生回路401は、除算に於ける
第1ステージの反復演算回数(クロック数)を発生す
る。本実施形態では、“9”である。この定数はF除算
有効信号309によってカカウンタにロードされる。カ
ウンタ402は、ループ回数をカウントダウン制御回路
400に従いカウント・ダウンする。カウント・ダウン
制御回路400は、例えばパイプラインのストール(ス
トール信号310)など、演算パイプラインが停止した
場合にカウントダウンを行わないように制御する。ま
た、乗算の先行実行が生じる際にも、カウントダウンを
行わないように制御する。カウンタの値の論理和が、D
E1BSY信号306である。演算選択制御信号300
は、F乗算有効信号311とDE1BSY信号306と
の論理積となる。演算選択制御信号300,301,及
び302は、パイプライン・レジスタにより、クロック
毎に各ステージに伝搬される。
【0060】演算選択制御信号300,301,302
がアサートされると、演算器は除算を一時中止して、乗
算の先行実行を行う。具体的には、前述したように選択
回路112〜116の切り替えを行うことにより、乗算
器に構成を切り替える。
【0061】演算選択制御回路は、このDE1BSY信
号306がアサート時に乗算命令がDステージに来た場
合、次のサイクルから、除算を一時停止し、乗算を先行
して実行するように制御する。このような制御の場合、
乗算が実行されるたびに本来の除算の終了は1クロック
づつ遅れていく。しかし、演算の依存関係により、本除
算が終了しなければ実行できない乗算は、発行されてこ
ない。また、本除算の完了の遅れによって、本除算に依
存した演算の実行が遅れる可能性はあるが、除算終了が
遅れた分、従来では除算が終了してから実行される乗算
を先行して実行しているので、本実施例のように1サイ
クルで1命令を発行するようなプロセッサでは、以上の
様な制御によって演算性能が低下する、すなわち全体の
処理時間が増加するということは生じない。
【0062】本実施形態では、除算及び乗算についての
み示したが、乗算器に実装された如何なる命令に関して
も適用することができる。例えば、開平演算はニュート
ン法を用いて収束法により根を求めることができる。す
なわち、本発明を用いることにより、除算同様に開平演
算を実行中に一時中断し、乗算を実行させることができ
る。切り替え操作の方法は、本実施形態で説明した除算
の場合と同様な形態にて実施することができる。
【0063】また、ここでは、収束演算(除算、平方根
演算、その他)アルゴリズムとしてニュートン法のみを
取り上げたが、ニュートン法以外の多くの方法にも適用
することができる。例えば、除数と非除数をそれぞれ分
母と分子として、この分数の分子を1にするように所定
の数を分母及び分子に乗じていくことで商を求めるGold
shmidt法等があるが、同様に本発明を適用することがで
きる。
【0064】
【発明の効果】本発明によれば、除算演算中に乗算を行
う必要がある場合には、除算を一時的に中止し、先に乗
算を終了させる事ができるので、除算に後続の命令が除
算によって実行を待たされる事が少なくなるので、演算
パイプラインの停止による著しい性能の低下を避けるこ
とができ、効率的にプログラムシーケンスを終了させる
ことができる。
【図面の簡単な説明】
【図1】本発明に係る演算器を示すブロック図である。
【図2】本発明の実施形態を示した図である。
【図3】演算選択制御回路の一構成例である。
【図4】本発明の実施形態の演算実行のタイミング図で
ある。
【図5】従来の収束型除算器の構成の一例である。
【図6】従来の収束型除算器の演算実行のタイミング図
である。
【符号の説明】
1 第1の演算手段 5 第2の演算手段 3,7 中間値記憶手段 9 演算選択制御手段 11 演算器再構成手段 100〜109 パイプラインレジスタ 111〜116 選択回路 120 記憶装置 121 2進→冗長2進変換回路 122 冗長2進→2進ブース・リコーダ 123 部分積加算ツリー 124 3−R・Y,3−R2 ・Y演算器 125 冗長2進→2進変換回路 200〜211 信号線 300,301,302 演算器選択制御信号 308 カウントダウン制御信号 309 F除算有効信号 310 ストール要求信号 311 F乗算有効信号 400 カウントダウン制御信号 401 反復定数発生回路 402 カウンタ 403〜405 パイプライン・レジスタ

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 第1の演算を行う第1の演算手段と、 この第1の演算手段の構成の一部または全部を共有して
    おり、前記第1の演算より長い演算時間を要する第2の
    演算を行い、前記第2の演算の実行中に演算を中断する
    場合には、前記第2の演算の中間情報を出力する第2の
    演算手段と、前記第2の演算の実行中に演算を中断した場合には、
    なくとも前記第2の演算手段が出力する中間情報を記憶
    する中間値記憶手段と、 前記第1の演算若しくは前記第2の演算のいずれの演算
    を行うかの選択制御信号を出力する演算選択制御手段
    と、 この演算選択制御手段の選択制御信号に従って、前記第
    2の演算の実行中に前記第1の演算を行う前記選択制御
    信号を入力した場合には、前記第2の演算を中断して、
    前記第2の演算を行う演算器から前記第1の演算手段を
    用いて第1の演算を行う演算器へ構成を切替え、前記第
    1の演算が終了後に前記第2の演算手段を用いて前記第
    2の演算を行う演算器に構成を切替える演算器再構成手
    段と、 を有し、 前記第2の演算手段は、前記演算器再構成手段により第
    2の演算器に切替えられた場合に、前記中間値記憶手段
    に記憶された前記中間情報を入力して前記第2の演算を
    再開することを特徴とする演算器。
  2. 【請求項2】 前記第1の演算は、整数または浮動小数
    点数の乗算であり、前記第2の演算は、整数若しくは浮
    動小数点数の除算または開平演算であることを特徴とす
    る請求項1記載の演算器。
  3. 【請求項3】 前記演算器は、所定のステージを有する
    パイプライン構造を有し、 前記中間値記憶手段は、前記第1の演算手段が出力する
    中間情報を記憶する第1のパイプラインレジスタと、前
    記第2の演算手段が出力する中間情報を記憶する第2の
    パイプラインレジスタとを備え、 演算選択制御手段は、演算命令を入力して前記第1の演
    算若しくは前記第2の演算のいずれかの演算を行うかの
    選択制御信号を前記ステージ毎に出力し、 前記演算器再構成手段は、前記選択制御信号に従って、
    前記第2の演算の実行中に前記第1の演算を行う前記選
    択制御信号を入力した場合には、前記第2の演算を中断
    し、前記第2の演算手段を用いて第2の演算を行う演算
    器から前記第1の演算の有効な命令及びオペランドが入
    力されたステージに該当する部分毎にのみが第1の演算
    を行う演算器に構成を切替え、前記第1の演算が終了後
    に前記第2の演算を行う演算器に前記ステージに該当す
    る部分毎に構成を切替えることを特徴とする請求項1記
    載の演算器。
  4. 【請求項4】 第1の入力値を保持する第1の保持手段
    と、 第2の入力値を保持する第2の保持手段と、 入力された値についての乗算を行う乗算器と、 この乗算器の出力を用いて所定の減算を行う減算器と、 この減算器の出力を保持する減算器結果保持手段と、 を備えて、乗算または除算若しくは開平演算を行う演算
    器において、 第3の入力値を保持する第3の保持手段と、 前記第1の入力値若しくは前記第3の入力値の選択して
    前記乗算器に出力する第の選択手段と、 第4の入力値を保持する第4の保持手段と、 前記第2の入力値若しくは前記第4の入力値の選択して
    前記乗算器に出力する第の選択手段と、 演算器が除算または開平演算を中断して乗算を行う場合
    には、前記減算器の出力を保持する第5の保持手段と、 演算器が乗算を行う際には、減算器結果保持手段の出力
    を選択し、前記演算器が除算または開平演算を再開する
    場合には、前記第5の保持手段の出力を選択する第3の
    選択手段と、 を備えることを特徴とする演算器。
  5. 【請求項5】 前記演算器は、所定のステージを有する
    パイプライン構造を有し、前記第1の保持手段、前記第
    2の保持手段、前記減算器結果保持手段、前記第3の保
    持手段、前記第4の保持手段、及び前記第5の保持手段
    は、パイプラインレジスタであることを特徴とする請求
    項4記載の演算器。
JP29439095A 1995-11-13 1995-11-13 演算器 Expired - Fee Related JP3493085B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29439095A JP3493085B2 (ja) 1995-11-13 1995-11-13 演算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29439095A JP3493085B2 (ja) 1995-11-13 1995-11-13 演算器

Publications (2)

Publication Number Publication Date
JPH09134277A JPH09134277A (ja) 1997-05-20
JP3493085B2 true JP3493085B2 (ja) 2004-02-03

Family

ID=17807118

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29439095A Expired - Fee Related JP3493085B2 (ja) 1995-11-13 1995-11-13 演算器

Country Status (1)

Country Link
JP (1) JP3493085B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3723775B2 (ja) * 2002-01-10 2005-12-07 松下電器産業株式会社 データ処理装置
JP7013707B2 (ja) * 2017-08-02 2022-02-01 富士通株式会社 情報処理装置および情報処理方法

Also Published As

Publication number Publication date
JPH09134277A (ja) 1997-05-20

Similar Documents

Publication Publication Date Title
JP3689183B2 (ja) 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算
US5768170A (en) Method and apparatus for performing microprocessor integer division operations using floating point hardware
JP3025776B2 (ja) 精密浮動小数点例外用の方法及び装置
US5381360A (en) Modulo arithmetic addressing circuit
KR100681199B1 (ko) 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
JPH0157817B2 (ja)
US5426600A (en) Double precision division circuit and method for digital signal processor
JPH0991270A (ja) 演算器
US5132925A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
JPH06202850A (ja) データ処理装置
US6941334B2 (en) Higher precision divide and square root approximations
US7016930B2 (en) Apparatus and method for performing operations implemented by iterative execution of a recurrence equation
JP2518293B2 (ja) デ−タフロ−プロセツサ
JP3493085B2 (ja) 演算器
US5867413A (en) Fast method of floating-point multiplication and accumulation
JPH04270415A (ja) 高性能加算器
JP3391448B2 (ja) 除算器
Brand et al. Anytime floating-point addition and multiplication-concepts and implementations
US20040230635A1 (en) Method and apparatus for performing a carry-save division operation
JPH08202533A (ja) 除算処理装置
JPH10333883A (ja) 乗算方法および乗算回路
JP3413940B2 (ja) 演算回路
JP3541086B2 (ja) 除算結果、及び開平算結果に正確な丸め処理を行う方法、及び装置
JPWO2002029546A1 (ja) 演算器及びそれを用いた電子回路装置
JP2607759B2 (ja) 除算器

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071114

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081114

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091114

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees