JP3391448B2 - 除算器 - Google Patents
除算器Info
- Publication number
- JP3391448B2 JP3391448B2 JP51132992A JP51132992A JP3391448B2 JP 3391448 B2 JP3391448 B2 JP 3391448B2 JP 51132992 A JP51132992 A JP 51132992A JP 51132992 A JP51132992 A JP 51132992A JP 3391448 B2 JP3391448 B2 JP 3391448B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- decoding
- quotient
- sign
- result
- 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
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
- 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
-
- 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/535—Dividing only
-
- 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/535—Dividing only
- G06F7/537—Reduction of the number of iteration steps or stages, e.g. using the Sweeny-Robertson-Tocher [SRT] algorithm
- G06F7/5375—Non restoring calculation, where each digit is either negative, zero or positive, e.g. SRT
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4873—Dividing
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
【発明の詳細な説明】
2.技術分野
本発明は、除算器、特に高基数非回復型の除算器であ
って、その除算器自体、またはその除算器を含む浮動小
数点コプロセッサやベクトルプロセッサに関する。 3.背景技術 一般に、除算は概念的には乗算の逆処理と考えられて
いるが、乗算と多くの点で相違している。第1に、除算
では前後の処理が独立ではなく順序性を持つ点である。
乗算においては、すべての部分積を同時に得ることが可
能であるためこのような順序性はなく、したがって、乗
算と比べて除算では演算サイクルが余分にかかる。第2
に、除算は決定論的な処理ではなく試行錯誤的な処理で
あるという点である。すなわち、繰返し演算の過程にお
いて部分商の予測処理を必要とし、例えば、あるデジッ
ト集合の中から一連の商の各デジットを選ぶというデジ
ット選択規則が使われる。 第1図は、従来の除算器のブロック図であり、高基数
非回復型除算器の例である。ここで、除算の方式は、デ
ジット集合の違いから回復型除算(restoring divisio
n)と非回復型除算(nonrestoring division)に分ける
ことができる。回復型は、筆算による除算と本質的に同
一であり実現も容易であるが、商デジット中に0が多い
と実行時間が遅くなることがある。これは、部分剰余が
負の場合に部分剰余を回復するための処理(加算)が別
途必要となることに起因する。これに対して非回復型
は、剰余の絶対値が除数より小さい限り負の剰余を正に
回復する必要がなく、かかる余分な加算処理を要しない
点で有利である。なお、かかる除算方法については、例
えば「Computer Arithmetic PRINCIPLES,ARCHITECTURE,
AND DESIGN」Kai Hwang著,John Wiley & Sons,Inc.発
行の第7章または特開昭61−7939号公報(昭和61年1月
14日公開)「高基数非回復型除算装置」に説明されてい
る。 高基数非回復型除算器は、2より大きな基数(高基
数)を使用するもので、基数の増大に伴って除算命令の
実行に必要な繰返し回数を急速に減少でき、実行時間を
短縮化できる。 第1図において、1は除数レジスタ、2は被除数レジ
スタ、3は倍数発生部、4は加減算部、5は補数発生
部、6は商予測部、7は商補正部、8は商レジスタであ
る。なお、商予測部6は、回路規模削減のために、部分
剰余の正・負何れかに対応する1つのものが備えられ
る。 演算処理の大まかな流れは、まず、除数レジスタ1
の内容(DSR)をm倍(mは倍数発生部3で発生した倍
数)し、そのmDSRと被除数レジスタ2の内容(PR)と
を加算した後、加算結果(部分剰余)の最上位ビット
(符号ビット)に従ってセレクタ5aを切換え、加算結果
の符号ビットを除く上記nビット(以下、便宜的にn=
5)または補数変換回路5bの出力(加算結果の符号ビッ
トを除く上位5ビットの補数変換したもの)の何れか一
方をデコーダ5c(詳細構成は後述の「発明を実施するた
めの最良の形態」の欄で説明する)に与える。例えば、
符号ビットが0(正符号)であれば加算結果の5ビット
をそのまま与え、符号ビットが1(負符号)であれば補
数を与える。そして、デコーダ5cの出力と除数レジス
タ1の内容とに基づいて部分商予測信号を生成し部分商
を決定するといった一連の動作をデジット毎に繰り返
す。 しかしながら、かかる従来の除算器にあっては、加算
結果(但し符号ビットを除く上位5ビット)または補数
変換後の同加算結果を、同加算結果の符号ビットに従っ
て択一的に選択する構成となっていたため、符号ビット
が確定するまではデコード処理を開始することができな
いから、例えば、加算結果の符号ビットを除く上位5ビ
ットの確定時点から加算結果の符号ビットの確定時点ま
での遅延時間(便宜的にtα)が、デコーダ5cの処理時
間(便宜的にtβ)に加算されてしまうといった問題点
がある。特に除算を極めて多数回繰り返して行なうベク
トルプロセッサでは前記遅延による影響が大きい。 第2図は補数発生部5の具体的な回路図である。符号
ビットを除く5ビットの加算結果は、そのままの論理で
セレクタ5aのA入力に与えられると共に、インバータ
(補数変換回路5b)によって論理反転(すなわち補数変
換)されてB入力に与えられる。A、B入力の選択は加
算結果の最上位ビット(符号ビット)に依存し、符号ビ
ットが0であればA入力が、1であればB入力が選択さ
れるようになっている。 ここで、加算結果の全ビットの確定は、最上位ビット
(一般に符号ビット)へのキャリー伝播後であり、上記
セレクタ5aの出力すなわちデコーダ5cへの入力確定は、
少なくとも加減算部4におけるキャリー伝播の最大値に
相当する時間後である。しかし、セレクタ5aのA、B入
力には、キャリー伝播の最大値に相当する時間前にデー
タが与えられているため、配線遅延やインバータ5bの遅
延等を無視すれば、符号ビットを除く加算結果の5ビッ
トの確定時点から、同加算結果の符号ビットの確定時点
までの時間に相当する無駄な遅延時間(tα)が生じる
のである。 本発明は、このような技術的課題に鑑みてなされたも
ので、キャリー伝播に伴って発生する無駄な遅延時間
(tα)をデコード処理時間(tβ)で吸収してより一
層の演算時間の短縮化を図ることを目的とする。 4.発明の開示 本発明の目的は、商予測値に基づく情報により除数の
倍数値を求める倍数発生手段(10)と、該除数の倍数値
と被除数との演算結果及び該演算結果の極性を表す符号
ビットを出力する演算処理手段(11)と、該符号ビット
の生成中に該演算結果のデコード処理を開始し、該演算
結果のデコード信号と該演算結果の補数のデコード信号
を出力するデコード処理手段(12)と、該演算結果のデ
コード信号と該演算結果の補数のデコード信号のいずれ
かを該符号ビットに従って選択する選択手段(13)と、
該選択手段(13)の出力に基づいて商予測値を生成する
商予測値生成手段(14)とを備えることを特徴とする除
算器、あるいは、今回の演算結果の符号ビットと先回の
演算結果の符号ビットに基づいて前記商予測値生成手段
(14)の出力を補正する商補正部を備える前記除算器に
よって達成される。 本発明では、演算結果の最上位ビット(符号ビット)
の確定を待つことなくデコード処理が開始され、その
後、符号ビットが確定した時点で当該符号ビットにより
デコード信号が選択されるので、キャリー伝搬に伴って
発生する無駄な遅延時間(tα)がデコード処理時間
(tβ)によって吸収され演算時間の短縮化を図ること
ができ、さらに、選択したデコード信号に基づいて商予
測値を生成しているので回路規模を従来と同等に抑える
ことができる。 5.図面の簡単な説明 第1図は従来例のブロック図、 第2図は従来例の要部構成図、 第3図は本発明の原理図、 第4図は本発明を適用したベクトルプロセッサの全体
構成図、 第5図は第4図の除算回路(DIV)のブロック図、 第6図は第5図の仮数除算部のブロック図、 第7図は第6図の倍数発生部の概念構成図、 第8図は第6図の加減算部のブロック図、 第9図は第8図のCPAのブロック図、 第10図は第9図の1つのブロックの構成図、 第11図は第6図のセレクト群の1つのセレクタの構成
図、 第12図は第6図の商予測部(QP)の予測テーブル図、 第13図は第6図の商予測部(QP)の信号生成テーブル
図、 第14図は第6図の商補正部(QG)の補正条件テーブル
図、 第15図は従来例と本発明との遅延時間を対比するタイ
ミングチャートである。 6.発明を実施するための最良の形態 本発明の除算器は、例えば第4図にその全体構成図を
示すベクトルプロセッサに用いることができる。ベクト
ルプロセッサでは、1回のコマンドに基づき除算を高速
に極めて多数回繰り返す必要がある為、1除算サイクル
を短縮できる本願発明の効果は大きい。 第4図において、ベクトルプロセッサは、ベクトル演
算ユニット(VU)100、バスユニット(BU)200、アドレ
スユニット(AU)300、制御ユニット400およびコマンド
バッファユニット(CBU)500からなり、各ユニット間が
データバス600やアドレスバス700を介して互いに接続さ
れている。 ベクトル演算ユニット100は、ベクトルデータを格納
するベクトルレジスタ(VR)101、スカラデータを格納
するスカラレジスタ(VSR)102、マスクデータを格納す
るベクトルマスクレジスタ(VMR)103、加算回路(AD
D)104、乗算回路(MUL)105、除算回路(DIV)106、マ
スクデータ生成回路107、データ取り込みラッチ108およ
びデータ出力ラッチ109などを含む。上記除算回路106が
本発明の除算器に相当するものである。 なお、バスユニット200は64ビット幅のデータの入出
力を調停するもの、アドレスユニット300は32ビット幅
のアドレスの入・出力を調停するもの、制御ユニット40
0はパイプラインコントローラ401やスコアボード402お
よびデコードユニット403を含み、ベクトルプロセッサ
の動作をコントロールするもの、コマンドバッファユニ
ット500は1キロバイト程度の容量のベクトルコマンド
バッファ(VCB)501内に演算に必要な各コマンドを格納
するものである。なお、アドレスユニット300内のVTRは
ベクトルトランスレーションレジスタ、TLBは変換索引
バッファであり、これらは仮想アドレスから実アドレス
への変換時に使用される。 このような構成のベクトルプロセッサにおいて、演算
データは、ロード命令に従ってAU300で発生したアドレ
スにより、外部メモリから読み出され、VU101のデータ
取り込みラッチ108を経てVR101に格納される。 VCB501に命令が格納されると、CU400内のコマンドス
タートレジスタ(図示略)のスタートビットに“1"が書
き込まれ、CU400は、VCB501の命令をデコードユニット4
03に送り、VU100のどのパイプラインの命令かを解読し
てその結果をVU100に通知する。この解読は、1サイク
ルごとに行われ、当然に演算のスタートも1サイクルご
とにかかる。その際、異なる演算器でベクトルレジスタ
101を共有する恐れがあるが、そのチェックはCU400内の
パイプラインコントローラ401およびスコアボード402が
行い、共有を回避するようになっている。スタートがか
けられた演算器(ADD104、MUL105、DIV106またはマスク
データ生成回路107)は定められた演算処理を実行し、
その演算結果はストア命令に従って外部メモリに書き込
まれる。 ここで、VU100内の演算処理は、ロード/ストアパイ
プライン処理、マスクパイプライン処理、グラフィック
パイプライン処理、加減算パイプライン処理、乗算パイ
プライン処理および除算パイプライン処理に分けられ
る。 マスクパイプライン処理は演算を省略するデータをベ
クトルレジスタ103との間でやり取りする処理であり、
マスクデータ生成回路107で実行され、また、グラフィ
ックパイプライン処理は図形データのパイプライン処理
であり、加算回路104で加減算パイプライン処理と選択
的に実行される。さらに、乗算パイプライン処理は乗算
回路105で、また、除算パイプライン処理は除算回路106
でそれぞれ実行される。従って、例えば、加減算パイプ
ライン処理や乗算パイプライン処理などと並列に、除算
パイプライン処理を実行することができる。 次に、本発明の除算器を適用する除算回路(DIV)106
について、第5図を参照しながら、その構成および作用
を説明する。 除算回路106は、IEEE規格に基づく浮動小数点除算を
行なうものであり、除算前処理および型判定部20、指数
演算部21、例外および非演算検出部22、丸め出力判定部
23、制御部24、および、仮数除算部40から構成されてい
る。 以下、IEEE規格に基づく浮動小数点倍精度演算を例
に、各部を詳細に説明する。 まず、除算前処理および型判定部20のうち、型判定部
は、入力レジスタOPDおよびOPNにそれぞれセットされた
除数Dおよび被除数Nの型、すなわち、非数、ゼロ、無
限大あるいはデノーマル等を判定してその判定結果を型
判定フラグレジスタEXCにセットする。また、前処理部
では、除数Dおよび被除数Nの浮動小数点データについ
て、符号S(1ビット)、指数部EXP(11ビット)およ
び仮数部M(52ビット)をそれぞれ切出し、仮数部Mの
隠れビット(IEEE規格では、仮数部Mの際上位ビットの
さらに上位1ビットに隠れビット1を持つように正規化
されている)を復元し、さらに、被除数Nの仮数部の絶
対値が除数Dの仮数部の絶対値よりも小さくなるように
設定する。 このような前処理部の処理は、例えば、OPDおよびOPN
にセットされた除数Dおよび被除数Nのそれぞれの仮数
部を切出し、隠れビットを復元した後、これら2つのデ
ータを比較し、被除数Nの仮数部の絶対値が除数Dの仮
数部の絶対値よりも小さいときはそのままとする一方、
被除数Nの仮数部の絶対値が除数Dの仮数部の絶対値よ
りも大きいときは、被除数Nの仮数部を右に1ビットシ
フト(1桁下げる)すると共に、被除数Nの指数部EXP
を+1することにより実現できる。なお、この前処理後
の被除数Nの指数部は、レジスタEPNに、被除数Nの仮
数部は部分剰余レジスタPRに、また、除数Dの指数部レ
ジスタEPDに、除数Dの仮数部は除数レジスタDSRにそれ
ぞれセットされる。 次に、指数演算部21では、指数値の減算とバイアス値
の加算を行う。すなわち、除数Dの指数部の補数値、被
除数Nの指数部の値、および、IEEE規格に規定されたバ
イアス値の3つを加算し、その結果をレジスタEXPにセ
ットする。 また、例外および非演算検出部22では、例外判定と非
演算の検出を行う。例外判定としては、ゼロ除算例外や
インバリットオペレーション例外等があり、これらは除
数Dおよび被除数Nのデータから判定される。非演算パ
ターンとしては、IEEE規格に基づき下記の組合わせがあ
る。除数Dおよび被除数Nのデータからパターンを判定
し、下記組み合わせの論理和により停止信号DSTOP#X
を出力して規格パターンを発生するように制御する。 SNaN÷SNaN QNaN÷SNaN INF ÷SNaN NORM÷SNaN ZERO÷SNaN SNaN÷QNaN QNaN÷QNaN INF ÷QNaN NORM÷QNaN ZERO÷QNaN SNaN÷ INF QNaN÷ INF INF ÷ INF NORM÷ INF ZERO÷ INF SNaN÷ZERO QNaN÷ZERO INF ZERO NORM÷ZERO ZERO÷ZERO SNaN÷NORM QNaN÷NORM INF ÷NORM NORM÷NORM ZERO÷NORM ここで、SNaN:Signaling NOT Number QNaN:Quiet NOT Number INF:無限大 ZERO:ゼロ NORM:正規化数 (IEEE754−1985規格より) なお、停止信号DSTOP#Xは、除数Dおよび被除数N
のデータの判定によってアサートされた後、1つの演算
終了でネゲートされるまでアクティブである。DSTOP#
X以外の他の信号の意味は以下のとおりである。 START#X:除算回路106全体の動作開始を指示する信号
であり、この信号は第4図の制御ユニット(CU)400で
作られる。 END#X:除算回路106全体の動作停止を指示する信号で
あり、この信号は第4図の制御ユニット(CU)400で作
られる。 DRUN#X:部分剰余レジスタPR、加減算部42、補数発生
部43、商予測部44および除数倍数発生部41によって行わ
れる繰返し除算の動作開始と終了を指示する信号であ
り、動作開始の指示は、上記START#Xの発生後の次の
クロックに同期して行われ、また、動作終了の指示は、
上記END#Xに応答してクロックの発生を止めることに
より行われる。 DCNT0#X〜DCNT15#X:上記START#Xの発生後の次の
クロックに同期して発生する信号であり、除算回路106
の各レジスタ(EPN、EPD、EXO、DSR、EXP、EXD、REM、Q
R、OPOおよびEXN)の動作タイミングを制御する信号で
ある。最初に発生するDCNT0#Xから最後に発生するDCN
T15#Xまでの16種のクロック信号で構成される。 次に、仮数除算部40では、基数を16とした非回復型除
算法による除算を行う。この仮数除算部40は、除数倍数
発生部(以下、倍数発生部)41、加減算部42、補数発生
部43、商予測部44、および商補正部45を含むと共に、除
数レジスタDSR、被除数レジスタPR、および、商レジス
タQRを含んで構成されており、さらに詳細な構成は第6
図に示すとおりである。なお、第6図では、倍数発節部
41を略号MULTで、加減算部42を略号ALUで、商予測部44
を略号QPで、商補正部45を略号QGでそれぞれ表してい
る。 本実施例では、基数が16であるので、−15×除数、−
14×除数、……、−1×除数、+1×除数、……、+14
×除数、+15×除数の全部で30通りの除数倍数データが
必要になる。倍数発生部41はこの除数倍数データを作る
ためのもので、第7図にその概念図を示すように、所定
の倍数選択信号SELa(商予測部44で作られる)に従って
+16倍、−16倍、+8倍または−8倍の何れかの倍数
(以下、倍数a)を発生する第1のブロック41aと、所
定の倍数選択信号SELbに従って+4倍、−4倍、+2倍
または−2倍の何れかの倍数(以下、倍数b)を発生す
る第2のブロック41bと、所定の倍数選択信号SELcに従
って+1倍または−1倍の何れかの倍数(以下、倍数
c)を発生する第3のブロック41cとからなる。 例えば、第1のブロック41aを代表として倍数の発生
動作を説明すると、まず、除数レジスタDSR内のデータ
を4ビット左シフトした(4桁上げた)+16倍データ
と、同4ビット左シフトしたデータの補数をとった−16
倍データと、除数レジスタDSR内のデータを3ビット左
シフトした(3桁上げた)+8倍データと、同3ビット
左シフトしたデータの補数をとった−8倍データとを作
り、これらの1つをSELaの内容に従って動作するセレク
タで選択する。 加減算部42は、第8図に示すように、4入力桁上げ保
存加算器(4入力キャリーセーブアダー)CSAと、CSAか
ら出力されるキャリー(Carry)および和(Sum)を加算
する桁上げ伝播加算器CPAとを有し、部分除数レジスタP
Rの内容から、倍数a、倍数bおよび倍数cの和を減
じ、MSB(最上位ビット)の符号ビットSと、この符号
ビットSを除く上記の5ビットからなる加算結果を出力
する。以下、符号ビットSを除く上位の5ビットを「加
算結果の絶対値」と言う。 ここで、CPAは、第9図に示すように、4つのブロッ
クB0〜B3からなり、各ブロックは、第10図にその構成を
示すように、キャリー有りを想定してあらかじめ演算を
行う部分と、キャリー無しを想定してあらかじめ演算を
行う部分を備え、これらの両演算部分の出力を下位側か
らのCarry入力に従って選択するようになっている。こ
れによれば、最下位ブロックB0を除く他のブロックB1〜
B3のキャリー伝播遅延を最小限に抑えることができ、CP
Aの演算時間を最下位ブロックB0のキャリー伝播遅延相
当にすることができる。但し、当然ながら、各ブロック
のセレクタ遅延や配線遅延等がこれに加算される。 加減算部42から出力される加算結果は、最上位ブロッ
クB3の16ビット出力のうちの上記6ビットであり、その
最上位ビットが符号ビットS、残りの5ビットが加算結
果の絶対値になる。従って、加算結果の絶対値の確定か
ら、符号ビットSの確定までの間には、最下位ブロック
B0のキャリー伝播遅延に、各ブロックごとのセレクト遅
延と配線遅延とを加算した遅延時間(前述のtαに相
当)が発生する。 補正発生部43は、第6図にその構成を示すように、加
算結果の絶対値をデコードする5入力アンドゲート群43
aと、符号ビットSに従ってそのデコード結果を選択す
る32個の二入力セレクタセレクタSL0A,SL0B,〜SL15A,SL
15Bよりなるセレクタ群43bとからなる。アンドゲート群
43aは、加算結果のビット数と同数の入力をもつ32個の
5入力アンドゲートG0〜G31からなり、アンドゲートの
各入力にはビット重みが[24、23、22、21、20]の5ビ
ットデータ(加算結果)が与えられている。各アンドゲ
ートの5本の入力には左端から右端に順に24のビット、
23ビット、22ビット、21ビット、20ビットが入力され
る。本実施例ではデコーダは1つであるが、符号ビット
に従ってセレクタ群43bによりデコード信号のD0〜D31と
補数発生部43の出力端との対応関係を換えることで、前
記加算結果のデコードした結果と前記加算結果の補数を
デコードした結果を出力できるようにしている。例え
ば、加算結果の絶対値を「00000(2)=0(10)」に対する
補数は「11111(2)=31(10)」であるから、加算結果が
「00000(2」のときは、アンドゲートG0のデコード信号D
0とアンドゲートG31のデコード信号D31の一方を符号ビ
ットに従ってセレクタSL0Aにより選択すれば良い。同様
にして同絶対値が「00001(2)=1(10)」のときにはデコ
ード信号D1とデコード信号D30の一方を符号ビットに従
って選択すれば良い。尚、5入力アンドゲートG1は入力
が「00010(2)=2(10)」のときにデコード信号D2を出力
し、G3は「00011(2)=3(10)」、G4は「00100(2)=
4(10)」、G5は「00101(2)=5(10)」、G6は「00110(2)=
6(10)」、G7は「00111(2)=7(10)」、G8は「01000(2)=
8(10)」、G9は「01001(2)=9(10)」、G10は「01010(2)
=10(10)」、G11は「01011(2)=11(10)」、G12は「0110
0(2)=12(10)」、G13は「01101(2)=13(10)」、G14は
「01110(2)=14(10)」、G15は「01111(2)=15(10)」、G
16は「10000(2)=16(10)」、G17は「10001(2)=1
7(10)、G18は「10010(2)=18(10)」、G19は「10011(2)
=19(10)」、G20は「10100(2)=20(10)」、G21は「1010
1(2)=21(10)」、G22は「10110(2)=22(10)」、G23は
「10111(2)=23(10)」、G24は「11000(2)=24(10)」、G
25は「11001(2)=25(10)」、G26は「11010(2)=2
6(10)」、G27は「11011(2)=27(10)」、G28は「11100
(2)=28(10)」、G29は「11101(2)=29(10)」、G30は「1
1110(2)=30(10)」、G31は「11111(2)=31(10)」のとき
に各々デコード信号D3〜D31を出力する。セレクタ群43b
は、32個のセレクタSL0A〜SL15A SL0B〜SL15Bを備える
もので、加算結果の絶対値のデコード結果と、加算結果
の補数のデコード結果と等価の結果が得られるようにデ
コード信号の対が入力されている。すなわち、D0とD31
の対がセレクタSL0Aに入力され、同様にしてD1とD30、D
2とD29、D3とD28、D4とD27、D5とD26、D6とD25、D7とD
24、D8とD23、D9とD22、D10とD21、D11とD20、D12と
D19、D13とD18、D14とD17、D15とD16、D16とD15、D17と
D14、D18とD13、D19とD12、D20とD11、D21とD10、D22と
D9、D23とD8、D24とD7、D25とD6、D26とD5、D27とD4、D
28とD3、D29とD2、D30とD1、D31とD0が各々対になり、
対応するセレクタに入力される。このようにすること
で、デコーダは1つであっても入力データをデコードし
た結果と入力データの補数をデコードした結果が得られ
る。勿論、デコーダを2種類設けて、その出力を符号ビ
ットに従って選択しても良い。なお、第11図はセレクタ
(代表してSL0A、SL0B、〜SL15A、SL15B)の好ましい構
成例である。2組のトランスファゲートTa、Tbにデコー
ド信号D0とD31(SL15ではD15とD16)を入力すると共
に、符号ビットSとその反転信号Sxによってそのオン/
オフ動作を択一的にコントロールすることにより、D0と
D31(SL15ではD15とD16)の何れか一方を選択できる。 ここで、本実施例における補数発生部43の特徴は、第
1に、加算結果の絶対値が確定すると直ちに、同絶対値
のデコード処理と同絶対値の補数のデコード処理とを実
行し、その後、符号ビットSが確定した時点でこれら2
つのデコード結果を選択するようにした点にある。これ
により、加算結果の絶対値の確定時間と符号ビットSの
確定時間の差に相当する演算遅延時間(tα)を、デコ
ード処理時間(tβ)で吸収でき、特に、繰返し回数の
多い非回復型除算演算の処理時間を大幅に短縮できると
いう顕著な効果を奏することができる。また、第2の特
徴は、加算結果の絶対値のデコード結果と、同絶対値の
補数のデコード結果の対を選択できるようにした点にあ
る。これにより、デコード処理部の回路規模を従来と同
等に抑えることができ、上記第1の特徴と相まって、特
にワンチップ・ベクトルプロセッサに好適な除算器を提
供できる。 次に、商予測部44は、除数Dの上位9ビット(以下、
Di)と、補数発生部43からの部分剰余の上位5ビット
(以下、Pi)とに基づいてデジットごとの部分商を予測
する第1の機能を備える。この第1の機能では、例え
ば、第12図に示すような予測テーブルが用いられる。な
お、予測テーブルはROM等のメモリ上にテーブルマップ
の形で展開してもよく、あるいはハードロジックで構成
してもよいが、処理速度の点で後者が望ましい。第12図
において、縦軸には部分剰余の上記5ビット(Pi)に対
応した「00(16)」から「1F(16)」までの参照値Pi'が与
えられ、横軸には「F(16)」から「0(16)」までの部分商
の予測値(以下、予測商mi)が与えられている。また、
縦軸に直交する線と横軸に直交する線の各交点にはPiと
miの組み合せに対応した参照値Di'が格納されており、
この参照値Di'は、除数Dの上位9ビット(Di)で表す
ことのできる値のいくつかを抜き出し、所定の順序で配
列したものである。今、例えばPi=「0F(16)」で、Di=
「100(16)」であれば、図中の破線で示すように、mi=
「F(16)」が予測される。また、Diが例えば「101(16)」
であれば、この「101(16)」を含むDi'の範囲(「10
016」←→「112(16)」)の最小値、すなわち「10
0(16)」が指定され、同様に、mi=「F(16)」が予測され
る。 さらに、商予測部44は、上記第1の機能で予測された
予測商(mi)と、前回の符号ビットS-1および今回の符
号ビットSに基づいて、倍数選択信号SELa〜SELcを生成
する第2の機能を備える。この第2の機能では、例え
ば、第13図に示すような信号生成テーブルが用いられ
る。第13図において、縦軸には予測商miに対応した「0
(10)」から「15(10)」(2進表現では「0000(2)から「1
111(2)」)までの参照値mi'が与えられ、縦軸の各値ご
とに、S-1=“0"すなわち前回の部分剰余が正値の場合
と、S=“1"すなわち今回の部分剰余が負値の場合のそ
れぞれの、倍数選択信号SELa、SELb、SELcが格納されて
いる。但し、格納された値はそれぞれ倍率を表してお
り、例えば0は0倍、−1は−1倍、……、+16は+16
倍を表している。 最後に、商補正部45は、今回の繰返しにおける部分剰
余の符号ビット(S)と、前回の繰返しにおける符号ビ
ット(S-1)とに基づいて、商予測部44で生成された予
測商miを補正して、部分商レジスタQPにセットする。実
際の補正は、第14図にその概念図を示すように、(1)
S-1=“0"(正符号)かつS=“0"(正符号)の場合に
は、予測商をそのままQPにセットし(2)S-1=“0"
(正符号)かつS=“1"(負符号)の場合には、予測商
から1を減じた値をQPにセットし(3)S-1=“1"(負
符号)かつS=“0"(正符号)の場合には、予測商の2
の補数をQPにセットし(4)S-1=“1"(負符号)かつ
S=“1"(負符号)の場合には、予測商の1の補数をQP
にセットする、ように実行される。 以上述べたように、本実施例では、加減算部42で生成
された加算結果の絶対値およびその補数を、同加算結果
の符号ビット(S)が確定する前に5入力アンドゲート
群43aによってデコード処理し、その後、符号ビット
(S)が確定した時点でセレクタ群43bによって2つの
デコード結果の一方を選択するようにしたので、加減算
部42におけるキャリー伝播遅延に起因する加算結果の絶
対値と符号ビットの間の時間差(tα)を、デコード処
理時間(tβ)で吸収することができる。すなわち、第
15図のタイミングチャートに示すように、加算結果の絶
対値が確定した時点t0から、前記tαに相当する時間後
の時点t1で加算結果の符号ビットが確定するが、従来例
では、この時点t1からセレクタ5aの選択動作が始まり、
さらに、選択動作の終了時点t3からデコーダ5bの動作が
始まっていたため、結局、デコード結果が出力される時
点t5までに、符号ビットの遅延時間(tα)+セレクト
動作時間(tSEL)+デコード動作時間(tβ)もの長い
時間が費やされるといった欠点がある。 これに対し、本実施例では、符号ビットの確定を待た
ずに5入力インバータ群43aによるデコード動作を開始
するので、デコード動作の開始時点(加算結果の絶対値
の確定時点t0に略一致)からデコード動作の完了時点t2
までの間に、前記tαを吸収することができ、全体の動
作遅れを、5入力アンドゲート群43aの動作遅延(t
β)と、セレクタ群43bの動作遅延(tSEL)とを足し合
わせた程度に減少させることができる。なお、セレクタ
群43bは符号ビットの確定時点t1で動作を開始するか
ら、すなわちデコード動作とセレクタの準備動作が同時
に進行するから、セレクタ群43bの動作遅延(tSEL)の
一部若しくは殆どを5入力アンドゲート群43aの動作遅
延(tβ)で吸収することができる。 7.産業上の利用可能性 本発明の除算器は、加算結果より部分剰余を生成する
際の処理速度を向上できるから、非回復型除算方式の除
算器のように再帰的な手順を繰返す、例えば浮動小数点
コプロセッサやベクトルプロセッサの除算器に好適であ
る。
って、その除算器自体、またはその除算器を含む浮動小
数点コプロセッサやベクトルプロセッサに関する。 3.背景技術 一般に、除算は概念的には乗算の逆処理と考えられて
いるが、乗算と多くの点で相違している。第1に、除算
では前後の処理が独立ではなく順序性を持つ点である。
乗算においては、すべての部分積を同時に得ることが可
能であるためこのような順序性はなく、したがって、乗
算と比べて除算では演算サイクルが余分にかかる。第2
に、除算は決定論的な処理ではなく試行錯誤的な処理で
あるという点である。すなわち、繰返し演算の過程にお
いて部分商の予測処理を必要とし、例えば、あるデジッ
ト集合の中から一連の商の各デジットを選ぶというデジ
ット選択規則が使われる。 第1図は、従来の除算器のブロック図であり、高基数
非回復型除算器の例である。ここで、除算の方式は、デ
ジット集合の違いから回復型除算(restoring divisio
n)と非回復型除算(nonrestoring division)に分ける
ことができる。回復型は、筆算による除算と本質的に同
一であり実現も容易であるが、商デジット中に0が多い
と実行時間が遅くなることがある。これは、部分剰余が
負の場合に部分剰余を回復するための処理(加算)が別
途必要となることに起因する。これに対して非回復型
は、剰余の絶対値が除数より小さい限り負の剰余を正に
回復する必要がなく、かかる余分な加算処理を要しない
点で有利である。なお、かかる除算方法については、例
えば「Computer Arithmetic PRINCIPLES,ARCHITECTURE,
AND DESIGN」Kai Hwang著,John Wiley & Sons,Inc.発
行の第7章または特開昭61−7939号公報(昭和61年1月
14日公開)「高基数非回復型除算装置」に説明されてい
る。 高基数非回復型除算器は、2より大きな基数(高基
数)を使用するもので、基数の増大に伴って除算命令の
実行に必要な繰返し回数を急速に減少でき、実行時間を
短縮化できる。 第1図において、1は除数レジスタ、2は被除数レジ
スタ、3は倍数発生部、4は加減算部、5は補数発生
部、6は商予測部、7は商補正部、8は商レジスタであ
る。なお、商予測部6は、回路規模削減のために、部分
剰余の正・負何れかに対応する1つのものが備えられ
る。 演算処理の大まかな流れは、まず、除数レジスタ1
の内容(DSR)をm倍(mは倍数発生部3で発生した倍
数)し、そのmDSRと被除数レジスタ2の内容(PR)と
を加算した後、加算結果(部分剰余)の最上位ビット
(符号ビット)に従ってセレクタ5aを切換え、加算結果
の符号ビットを除く上記nビット(以下、便宜的にn=
5)または補数変換回路5bの出力(加算結果の符号ビッ
トを除く上位5ビットの補数変換したもの)の何れか一
方をデコーダ5c(詳細構成は後述の「発明を実施するた
めの最良の形態」の欄で説明する)に与える。例えば、
符号ビットが0(正符号)であれば加算結果の5ビット
をそのまま与え、符号ビットが1(負符号)であれば補
数を与える。そして、デコーダ5cの出力と除数レジス
タ1の内容とに基づいて部分商予測信号を生成し部分商
を決定するといった一連の動作をデジット毎に繰り返
す。 しかしながら、かかる従来の除算器にあっては、加算
結果(但し符号ビットを除く上位5ビット)または補数
変換後の同加算結果を、同加算結果の符号ビットに従っ
て択一的に選択する構成となっていたため、符号ビット
が確定するまではデコード処理を開始することができな
いから、例えば、加算結果の符号ビットを除く上位5ビ
ットの確定時点から加算結果の符号ビットの確定時点ま
での遅延時間(便宜的にtα)が、デコーダ5cの処理時
間(便宜的にtβ)に加算されてしまうといった問題点
がある。特に除算を極めて多数回繰り返して行なうベク
トルプロセッサでは前記遅延による影響が大きい。 第2図は補数発生部5の具体的な回路図である。符号
ビットを除く5ビットの加算結果は、そのままの論理で
セレクタ5aのA入力に与えられると共に、インバータ
(補数変換回路5b)によって論理反転(すなわち補数変
換)されてB入力に与えられる。A、B入力の選択は加
算結果の最上位ビット(符号ビット)に依存し、符号ビ
ットが0であればA入力が、1であればB入力が選択さ
れるようになっている。 ここで、加算結果の全ビットの確定は、最上位ビット
(一般に符号ビット)へのキャリー伝播後であり、上記
セレクタ5aの出力すなわちデコーダ5cへの入力確定は、
少なくとも加減算部4におけるキャリー伝播の最大値に
相当する時間後である。しかし、セレクタ5aのA、B入
力には、キャリー伝播の最大値に相当する時間前にデー
タが与えられているため、配線遅延やインバータ5bの遅
延等を無視すれば、符号ビットを除く加算結果の5ビッ
トの確定時点から、同加算結果の符号ビットの確定時点
までの時間に相当する無駄な遅延時間(tα)が生じる
のである。 本発明は、このような技術的課題に鑑みてなされたも
ので、キャリー伝播に伴って発生する無駄な遅延時間
(tα)をデコード処理時間(tβ)で吸収してより一
層の演算時間の短縮化を図ることを目的とする。 4.発明の開示 本発明の目的は、商予測値に基づく情報により除数の
倍数値を求める倍数発生手段(10)と、該除数の倍数値
と被除数との演算結果及び該演算結果の極性を表す符号
ビットを出力する演算処理手段(11)と、該符号ビット
の生成中に該演算結果のデコード処理を開始し、該演算
結果のデコード信号と該演算結果の補数のデコード信号
を出力するデコード処理手段(12)と、該演算結果のデ
コード信号と該演算結果の補数のデコード信号のいずれ
かを該符号ビットに従って選択する選択手段(13)と、
該選択手段(13)の出力に基づいて商予測値を生成する
商予測値生成手段(14)とを備えることを特徴とする除
算器、あるいは、今回の演算結果の符号ビットと先回の
演算結果の符号ビットに基づいて前記商予測値生成手段
(14)の出力を補正する商補正部を備える前記除算器に
よって達成される。 本発明では、演算結果の最上位ビット(符号ビット)
の確定を待つことなくデコード処理が開始され、その
後、符号ビットが確定した時点で当該符号ビットにより
デコード信号が選択されるので、キャリー伝搬に伴って
発生する無駄な遅延時間(tα)がデコード処理時間
(tβ)によって吸収され演算時間の短縮化を図ること
ができ、さらに、選択したデコード信号に基づいて商予
測値を生成しているので回路規模を従来と同等に抑える
ことができる。 5.図面の簡単な説明 第1図は従来例のブロック図、 第2図は従来例の要部構成図、 第3図は本発明の原理図、 第4図は本発明を適用したベクトルプロセッサの全体
構成図、 第5図は第4図の除算回路(DIV)のブロック図、 第6図は第5図の仮数除算部のブロック図、 第7図は第6図の倍数発生部の概念構成図、 第8図は第6図の加減算部のブロック図、 第9図は第8図のCPAのブロック図、 第10図は第9図の1つのブロックの構成図、 第11図は第6図のセレクト群の1つのセレクタの構成
図、 第12図は第6図の商予測部(QP)の予測テーブル図、 第13図は第6図の商予測部(QP)の信号生成テーブル
図、 第14図は第6図の商補正部(QG)の補正条件テーブル
図、 第15図は従来例と本発明との遅延時間を対比するタイ
ミングチャートである。 6.発明を実施するための最良の形態 本発明の除算器は、例えば第4図にその全体構成図を
示すベクトルプロセッサに用いることができる。ベクト
ルプロセッサでは、1回のコマンドに基づき除算を高速
に極めて多数回繰り返す必要がある為、1除算サイクル
を短縮できる本願発明の効果は大きい。 第4図において、ベクトルプロセッサは、ベクトル演
算ユニット(VU)100、バスユニット(BU)200、アドレ
スユニット(AU)300、制御ユニット400およびコマンド
バッファユニット(CBU)500からなり、各ユニット間が
データバス600やアドレスバス700を介して互いに接続さ
れている。 ベクトル演算ユニット100は、ベクトルデータを格納
するベクトルレジスタ(VR)101、スカラデータを格納
するスカラレジスタ(VSR)102、マスクデータを格納す
るベクトルマスクレジスタ(VMR)103、加算回路(AD
D)104、乗算回路(MUL)105、除算回路(DIV)106、マ
スクデータ生成回路107、データ取り込みラッチ108およ
びデータ出力ラッチ109などを含む。上記除算回路106が
本発明の除算器に相当するものである。 なお、バスユニット200は64ビット幅のデータの入出
力を調停するもの、アドレスユニット300は32ビット幅
のアドレスの入・出力を調停するもの、制御ユニット40
0はパイプラインコントローラ401やスコアボード402お
よびデコードユニット403を含み、ベクトルプロセッサ
の動作をコントロールするもの、コマンドバッファユニ
ット500は1キロバイト程度の容量のベクトルコマンド
バッファ(VCB)501内に演算に必要な各コマンドを格納
するものである。なお、アドレスユニット300内のVTRは
ベクトルトランスレーションレジスタ、TLBは変換索引
バッファであり、これらは仮想アドレスから実アドレス
への変換時に使用される。 このような構成のベクトルプロセッサにおいて、演算
データは、ロード命令に従ってAU300で発生したアドレ
スにより、外部メモリから読み出され、VU101のデータ
取り込みラッチ108を経てVR101に格納される。 VCB501に命令が格納されると、CU400内のコマンドス
タートレジスタ(図示略)のスタートビットに“1"が書
き込まれ、CU400は、VCB501の命令をデコードユニット4
03に送り、VU100のどのパイプラインの命令かを解読し
てその結果をVU100に通知する。この解読は、1サイク
ルごとに行われ、当然に演算のスタートも1サイクルご
とにかかる。その際、異なる演算器でベクトルレジスタ
101を共有する恐れがあるが、そのチェックはCU400内の
パイプラインコントローラ401およびスコアボード402が
行い、共有を回避するようになっている。スタートがか
けられた演算器(ADD104、MUL105、DIV106またはマスク
データ生成回路107)は定められた演算処理を実行し、
その演算結果はストア命令に従って外部メモリに書き込
まれる。 ここで、VU100内の演算処理は、ロード/ストアパイ
プライン処理、マスクパイプライン処理、グラフィック
パイプライン処理、加減算パイプライン処理、乗算パイ
プライン処理および除算パイプライン処理に分けられ
る。 マスクパイプライン処理は演算を省略するデータをベ
クトルレジスタ103との間でやり取りする処理であり、
マスクデータ生成回路107で実行され、また、グラフィ
ックパイプライン処理は図形データのパイプライン処理
であり、加算回路104で加減算パイプライン処理と選択
的に実行される。さらに、乗算パイプライン処理は乗算
回路105で、また、除算パイプライン処理は除算回路106
でそれぞれ実行される。従って、例えば、加減算パイプ
ライン処理や乗算パイプライン処理などと並列に、除算
パイプライン処理を実行することができる。 次に、本発明の除算器を適用する除算回路(DIV)106
について、第5図を参照しながら、その構成および作用
を説明する。 除算回路106は、IEEE規格に基づく浮動小数点除算を
行なうものであり、除算前処理および型判定部20、指数
演算部21、例外および非演算検出部22、丸め出力判定部
23、制御部24、および、仮数除算部40から構成されてい
る。 以下、IEEE規格に基づく浮動小数点倍精度演算を例
に、各部を詳細に説明する。 まず、除算前処理および型判定部20のうち、型判定部
は、入力レジスタOPDおよびOPNにそれぞれセットされた
除数Dおよび被除数Nの型、すなわち、非数、ゼロ、無
限大あるいはデノーマル等を判定してその判定結果を型
判定フラグレジスタEXCにセットする。また、前処理部
では、除数Dおよび被除数Nの浮動小数点データについ
て、符号S(1ビット)、指数部EXP(11ビット)およ
び仮数部M(52ビット)をそれぞれ切出し、仮数部Mの
隠れビット(IEEE規格では、仮数部Mの際上位ビットの
さらに上位1ビットに隠れビット1を持つように正規化
されている)を復元し、さらに、被除数Nの仮数部の絶
対値が除数Dの仮数部の絶対値よりも小さくなるように
設定する。 このような前処理部の処理は、例えば、OPDおよびOPN
にセットされた除数Dおよび被除数Nのそれぞれの仮数
部を切出し、隠れビットを復元した後、これら2つのデ
ータを比較し、被除数Nの仮数部の絶対値が除数Dの仮
数部の絶対値よりも小さいときはそのままとする一方、
被除数Nの仮数部の絶対値が除数Dの仮数部の絶対値よ
りも大きいときは、被除数Nの仮数部を右に1ビットシ
フト(1桁下げる)すると共に、被除数Nの指数部EXP
を+1することにより実現できる。なお、この前処理後
の被除数Nの指数部は、レジスタEPNに、被除数Nの仮
数部は部分剰余レジスタPRに、また、除数Dの指数部レ
ジスタEPDに、除数Dの仮数部は除数レジスタDSRにそれ
ぞれセットされる。 次に、指数演算部21では、指数値の減算とバイアス値
の加算を行う。すなわち、除数Dの指数部の補数値、被
除数Nの指数部の値、および、IEEE規格に規定されたバ
イアス値の3つを加算し、その結果をレジスタEXPにセ
ットする。 また、例外および非演算検出部22では、例外判定と非
演算の検出を行う。例外判定としては、ゼロ除算例外や
インバリットオペレーション例外等があり、これらは除
数Dおよび被除数Nのデータから判定される。非演算パ
ターンとしては、IEEE規格に基づき下記の組合わせがあ
る。除数Dおよび被除数Nのデータからパターンを判定
し、下記組み合わせの論理和により停止信号DSTOP#X
を出力して規格パターンを発生するように制御する。 SNaN÷SNaN QNaN÷SNaN INF ÷SNaN NORM÷SNaN ZERO÷SNaN SNaN÷QNaN QNaN÷QNaN INF ÷QNaN NORM÷QNaN ZERO÷QNaN SNaN÷ INF QNaN÷ INF INF ÷ INF NORM÷ INF ZERO÷ INF SNaN÷ZERO QNaN÷ZERO INF ZERO NORM÷ZERO ZERO÷ZERO SNaN÷NORM QNaN÷NORM INF ÷NORM NORM÷NORM ZERO÷NORM ここで、SNaN:Signaling NOT Number QNaN:Quiet NOT Number INF:無限大 ZERO:ゼロ NORM:正規化数 (IEEE754−1985規格より) なお、停止信号DSTOP#Xは、除数Dおよび被除数N
のデータの判定によってアサートされた後、1つの演算
終了でネゲートされるまでアクティブである。DSTOP#
X以外の他の信号の意味は以下のとおりである。 START#X:除算回路106全体の動作開始を指示する信号
であり、この信号は第4図の制御ユニット(CU)400で
作られる。 END#X:除算回路106全体の動作停止を指示する信号で
あり、この信号は第4図の制御ユニット(CU)400で作
られる。 DRUN#X:部分剰余レジスタPR、加減算部42、補数発生
部43、商予測部44および除数倍数発生部41によって行わ
れる繰返し除算の動作開始と終了を指示する信号であ
り、動作開始の指示は、上記START#Xの発生後の次の
クロックに同期して行われ、また、動作終了の指示は、
上記END#Xに応答してクロックの発生を止めることに
より行われる。 DCNT0#X〜DCNT15#X:上記START#Xの発生後の次の
クロックに同期して発生する信号であり、除算回路106
の各レジスタ(EPN、EPD、EXO、DSR、EXP、EXD、REM、Q
R、OPOおよびEXN)の動作タイミングを制御する信号で
ある。最初に発生するDCNT0#Xから最後に発生するDCN
T15#Xまでの16種のクロック信号で構成される。 次に、仮数除算部40では、基数を16とした非回復型除
算法による除算を行う。この仮数除算部40は、除数倍数
発生部(以下、倍数発生部)41、加減算部42、補数発生
部43、商予測部44、および商補正部45を含むと共に、除
数レジスタDSR、被除数レジスタPR、および、商レジス
タQRを含んで構成されており、さらに詳細な構成は第6
図に示すとおりである。なお、第6図では、倍数発節部
41を略号MULTで、加減算部42を略号ALUで、商予測部44
を略号QPで、商補正部45を略号QGでそれぞれ表してい
る。 本実施例では、基数が16であるので、−15×除数、−
14×除数、……、−1×除数、+1×除数、……、+14
×除数、+15×除数の全部で30通りの除数倍数データが
必要になる。倍数発生部41はこの除数倍数データを作る
ためのもので、第7図にその概念図を示すように、所定
の倍数選択信号SELa(商予測部44で作られる)に従って
+16倍、−16倍、+8倍または−8倍の何れかの倍数
(以下、倍数a)を発生する第1のブロック41aと、所
定の倍数選択信号SELbに従って+4倍、−4倍、+2倍
または−2倍の何れかの倍数(以下、倍数b)を発生す
る第2のブロック41bと、所定の倍数選択信号SELcに従
って+1倍または−1倍の何れかの倍数(以下、倍数
c)を発生する第3のブロック41cとからなる。 例えば、第1のブロック41aを代表として倍数の発生
動作を説明すると、まず、除数レジスタDSR内のデータ
を4ビット左シフトした(4桁上げた)+16倍データ
と、同4ビット左シフトしたデータの補数をとった−16
倍データと、除数レジスタDSR内のデータを3ビット左
シフトした(3桁上げた)+8倍データと、同3ビット
左シフトしたデータの補数をとった−8倍データとを作
り、これらの1つをSELaの内容に従って動作するセレク
タで選択する。 加減算部42は、第8図に示すように、4入力桁上げ保
存加算器(4入力キャリーセーブアダー)CSAと、CSAか
ら出力されるキャリー(Carry)および和(Sum)を加算
する桁上げ伝播加算器CPAとを有し、部分除数レジスタP
Rの内容から、倍数a、倍数bおよび倍数cの和を減
じ、MSB(最上位ビット)の符号ビットSと、この符号
ビットSを除く上記の5ビットからなる加算結果を出力
する。以下、符号ビットSを除く上位の5ビットを「加
算結果の絶対値」と言う。 ここで、CPAは、第9図に示すように、4つのブロッ
クB0〜B3からなり、各ブロックは、第10図にその構成を
示すように、キャリー有りを想定してあらかじめ演算を
行う部分と、キャリー無しを想定してあらかじめ演算を
行う部分を備え、これらの両演算部分の出力を下位側か
らのCarry入力に従って選択するようになっている。こ
れによれば、最下位ブロックB0を除く他のブロックB1〜
B3のキャリー伝播遅延を最小限に抑えることができ、CP
Aの演算時間を最下位ブロックB0のキャリー伝播遅延相
当にすることができる。但し、当然ながら、各ブロック
のセレクタ遅延や配線遅延等がこれに加算される。 加減算部42から出力される加算結果は、最上位ブロッ
クB3の16ビット出力のうちの上記6ビットであり、その
最上位ビットが符号ビットS、残りの5ビットが加算結
果の絶対値になる。従って、加算結果の絶対値の確定か
ら、符号ビットSの確定までの間には、最下位ブロック
B0のキャリー伝播遅延に、各ブロックごとのセレクト遅
延と配線遅延とを加算した遅延時間(前述のtαに相
当)が発生する。 補正発生部43は、第6図にその構成を示すように、加
算結果の絶対値をデコードする5入力アンドゲート群43
aと、符号ビットSに従ってそのデコード結果を選択す
る32個の二入力セレクタセレクタSL0A,SL0B,〜SL15A,SL
15Bよりなるセレクタ群43bとからなる。アンドゲート群
43aは、加算結果のビット数と同数の入力をもつ32個の
5入力アンドゲートG0〜G31からなり、アンドゲートの
各入力にはビット重みが[24、23、22、21、20]の5ビ
ットデータ(加算結果)が与えられている。各アンドゲ
ートの5本の入力には左端から右端に順に24のビット、
23ビット、22ビット、21ビット、20ビットが入力され
る。本実施例ではデコーダは1つであるが、符号ビット
に従ってセレクタ群43bによりデコード信号のD0〜D31と
補数発生部43の出力端との対応関係を換えることで、前
記加算結果のデコードした結果と前記加算結果の補数を
デコードした結果を出力できるようにしている。例え
ば、加算結果の絶対値を「00000(2)=0(10)」に対する
補数は「11111(2)=31(10)」であるから、加算結果が
「00000(2」のときは、アンドゲートG0のデコード信号D
0とアンドゲートG31のデコード信号D31の一方を符号ビ
ットに従ってセレクタSL0Aにより選択すれば良い。同様
にして同絶対値が「00001(2)=1(10)」のときにはデコ
ード信号D1とデコード信号D30の一方を符号ビットに従
って選択すれば良い。尚、5入力アンドゲートG1は入力
が「00010(2)=2(10)」のときにデコード信号D2を出力
し、G3は「00011(2)=3(10)」、G4は「00100(2)=
4(10)」、G5は「00101(2)=5(10)」、G6は「00110(2)=
6(10)」、G7は「00111(2)=7(10)」、G8は「01000(2)=
8(10)」、G9は「01001(2)=9(10)」、G10は「01010(2)
=10(10)」、G11は「01011(2)=11(10)」、G12は「0110
0(2)=12(10)」、G13は「01101(2)=13(10)」、G14は
「01110(2)=14(10)」、G15は「01111(2)=15(10)」、G
16は「10000(2)=16(10)」、G17は「10001(2)=1
7(10)、G18は「10010(2)=18(10)」、G19は「10011(2)
=19(10)」、G20は「10100(2)=20(10)」、G21は「1010
1(2)=21(10)」、G22は「10110(2)=22(10)」、G23は
「10111(2)=23(10)」、G24は「11000(2)=24(10)」、G
25は「11001(2)=25(10)」、G26は「11010(2)=2
6(10)」、G27は「11011(2)=27(10)」、G28は「11100
(2)=28(10)」、G29は「11101(2)=29(10)」、G30は「1
1110(2)=30(10)」、G31は「11111(2)=31(10)」のとき
に各々デコード信号D3〜D31を出力する。セレクタ群43b
は、32個のセレクタSL0A〜SL15A SL0B〜SL15Bを備える
もので、加算結果の絶対値のデコード結果と、加算結果
の補数のデコード結果と等価の結果が得られるようにデ
コード信号の対が入力されている。すなわち、D0とD31
の対がセレクタSL0Aに入力され、同様にしてD1とD30、D
2とD29、D3とD28、D4とD27、D5とD26、D6とD25、D7とD
24、D8とD23、D9とD22、D10とD21、D11とD20、D12と
D19、D13とD18、D14とD17、D15とD16、D16とD15、D17と
D14、D18とD13、D19とD12、D20とD11、D21とD10、D22と
D9、D23とD8、D24とD7、D25とD6、D26とD5、D27とD4、D
28とD3、D29とD2、D30とD1、D31とD0が各々対になり、
対応するセレクタに入力される。このようにすること
で、デコーダは1つであっても入力データをデコードし
た結果と入力データの補数をデコードした結果が得られ
る。勿論、デコーダを2種類設けて、その出力を符号ビ
ットに従って選択しても良い。なお、第11図はセレクタ
(代表してSL0A、SL0B、〜SL15A、SL15B)の好ましい構
成例である。2組のトランスファゲートTa、Tbにデコー
ド信号D0とD31(SL15ではD15とD16)を入力すると共
に、符号ビットSとその反転信号Sxによってそのオン/
オフ動作を択一的にコントロールすることにより、D0と
D31(SL15ではD15とD16)の何れか一方を選択できる。 ここで、本実施例における補数発生部43の特徴は、第
1に、加算結果の絶対値が確定すると直ちに、同絶対値
のデコード処理と同絶対値の補数のデコード処理とを実
行し、その後、符号ビットSが確定した時点でこれら2
つのデコード結果を選択するようにした点にある。これ
により、加算結果の絶対値の確定時間と符号ビットSの
確定時間の差に相当する演算遅延時間(tα)を、デコ
ード処理時間(tβ)で吸収でき、特に、繰返し回数の
多い非回復型除算演算の処理時間を大幅に短縮できると
いう顕著な効果を奏することができる。また、第2の特
徴は、加算結果の絶対値のデコード結果と、同絶対値の
補数のデコード結果の対を選択できるようにした点にあ
る。これにより、デコード処理部の回路規模を従来と同
等に抑えることができ、上記第1の特徴と相まって、特
にワンチップ・ベクトルプロセッサに好適な除算器を提
供できる。 次に、商予測部44は、除数Dの上位9ビット(以下、
Di)と、補数発生部43からの部分剰余の上位5ビット
(以下、Pi)とに基づいてデジットごとの部分商を予測
する第1の機能を備える。この第1の機能では、例え
ば、第12図に示すような予測テーブルが用いられる。な
お、予測テーブルはROM等のメモリ上にテーブルマップ
の形で展開してもよく、あるいはハードロジックで構成
してもよいが、処理速度の点で後者が望ましい。第12図
において、縦軸には部分剰余の上記5ビット(Pi)に対
応した「00(16)」から「1F(16)」までの参照値Pi'が与
えられ、横軸には「F(16)」から「0(16)」までの部分商
の予測値(以下、予測商mi)が与えられている。また、
縦軸に直交する線と横軸に直交する線の各交点にはPiと
miの組み合せに対応した参照値Di'が格納されており、
この参照値Di'は、除数Dの上位9ビット(Di)で表す
ことのできる値のいくつかを抜き出し、所定の順序で配
列したものである。今、例えばPi=「0F(16)」で、Di=
「100(16)」であれば、図中の破線で示すように、mi=
「F(16)」が予測される。また、Diが例えば「101(16)」
であれば、この「101(16)」を含むDi'の範囲(「10
016」←→「112(16)」)の最小値、すなわち「10
0(16)」が指定され、同様に、mi=「F(16)」が予測され
る。 さらに、商予測部44は、上記第1の機能で予測された
予測商(mi)と、前回の符号ビットS-1および今回の符
号ビットSに基づいて、倍数選択信号SELa〜SELcを生成
する第2の機能を備える。この第2の機能では、例え
ば、第13図に示すような信号生成テーブルが用いられ
る。第13図において、縦軸には予測商miに対応した「0
(10)」から「15(10)」(2進表現では「0000(2)から「1
111(2)」)までの参照値mi'が与えられ、縦軸の各値ご
とに、S-1=“0"すなわち前回の部分剰余が正値の場合
と、S=“1"すなわち今回の部分剰余が負値の場合のそ
れぞれの、倍数選択信号SELa、SELb、SELcが格納されて
いる。但し、格納された値はそれぞれ倍率を表してお
り、例えば0は0倍、−1は−1倍、……、+16は+16
倍を表している。 最後に、商補正部45は、今回の繰返しにおける部分剰
余の符号ビット(S)と、前回の繰返しにおける符号ビ
ット(S-1)とに基づいて、商予測部44で生成された予
測商miを補正して、部分商レジスタQPにセットする。実
際の補正は、第14図にその概念図を示すように、(1)
S-1=“0"(正符号)かつS=“0"(正符号)の場合に
は、予測商をそのままQPにセットし(2)S-1=“0"
(正符号)かつS=“1"(負符号)の場合には、予測商
から1を減じた値をQPにセットし(3)S-1=“1"(負
符号)かつS=“0"(正符号)の場合には、予測商の2
の補数をQPにセットし(4)S-1=“1"(負符号)かつ
S=“1"(負符号)の場合には、予測商の1の補数をQP
にセットする、ように実行される。 以上述べたように、本実施例では、加減算部42で生成
された加算結果の絶対値およびその補数を、同加算結果
の符号ビット(S)が確定する前に5入力アンドゲート
群43aによってデコード処理し、その後、符号ビット
(S)が確定した時点でセレクタ群43bによって2つの
デコード結果の一方を選択するようにしたので、加減算
部42におけるキャリー伝播遅延に起因する加算結果の絶
対値と符号ビットの間の時間差(tα)を、デコード処
理時間(tβ)で吸収することができる。すなわち、第
15図のタイミングチャートに示すように、加算結果の絶
対値が確定した時点t0から、前記tαに相当する時間後
の時点t1で加算結果の符号ビットが確定するが、従来例
では、この時点t1からセレクタ5aの選択動作が始まり、
さらに、選択動作の終了時点t3からデコーダ5bの動作が
始まっていたため、結局、デコード結果が出力される時
点t5までに、符号ビットの遅延時間(tα)+セレクト
動作時間(tSEL)+デコード動作時間(tβ)もの長い
時間が費やされるといった欠点がある。 これに対し、本実施例では、符号ビットの確定を待た
ずに5入力インバータ群43aによるデコード動作を開始
するので、デコード動作の開始時点(加算結果の絶対値
の確定時点t0に略一致)からデコード動作の完了時点t2
までの間に、前記tαを吸収することができ、全体の動
作遅れを、5入力アンドゲート群43aの動作遅延(t
β)と、セレクタ群43bの動作遅延(tSEL)とを足し合
わせた程度に減少させることができる。なお、セレクタ
群43bは符号ビットの確定時点t1で動作を開始するか
ら、すなわちデコード動作とセレクタの準備動作が同時
に進行するから、セレクタ群43bの動作遅延(tSEL)の
一部若しくは殆どを5入力アンドゲート群43aの動作遅
延(tβ)で吸収することができる。 7.産業上の利用可能性 本発明の除算器は、加算結果より部分剰余を生成する
際の処理速度を向上できるから、非回復型除算方式の除
算器のように再帰的な手順を繰返す、例えば浮動小数点
コプロセッサやベクトルプロセッサの除算器に好適であ
る。
Claims (1)
- (57)【特許請求の範囲】 【請求項1】商予測値に基づく情報により除数の倍数値
を求める倍数発生手段と、 被除数から前記除数の倍数値を減じた演算結果の最上位
ビットである符号ビットと、該符号ビットを除く上位所
定ビットとを出力する演算処理手段と、 前記演算処理手段において前記符号ビットが確定する前
に、前記上位所定ビットのデコードを開始し、その後、
該上位所定ビットをデコードしたデコード信号及び該上
位所定ビットの補数をデコードしたデコード信号を出力
するデコード処理手段と、 確定した前記符号ビットが0(正符号)の場合は前記上
位所定ビットをデコードしたデコード信号を出力する一
方、確定した前記符号ビットが1(負符号)の場合は前
記上位所定ビットの補数をデコードしたデコード信号を
出力する選択手段と、 該選択手段の出力に従って商予測値を生成する商予測値
生成手段と を備えることを特徴とする非回復型の除算器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13663991 | 1991-06-07 | ||
JP3-136639 | 1991-06-07 | ||
PCT/JP1992/000725 WO1992022027A1 (en) | 1991-06-07 | 1992-06-05 | Divider |
Publications (1)
Publication Number | Publication Date |
---|---|
JP3391448B2 true JP3391448B2 (ja) | 2003-03-31 |
Family
ID=15180014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51132992A Expired - Fee Related JP3391448B2 (ja) | 1991-06-07 | 1992-06-05 | 除算器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5377135A (ja) |
EP (1) | EP0543024B1 (ja) |
JP (1) | JP3391448B2 (ja) |
KR (1) | KR950007879B1 (ja) |
WO (1) | WO1992022027A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69626596T2 (de) * | 1995-10-20 | 2003-12-18 | Kabushiki Kaisha Toshiba, Kawasaki | Logische Schaltung, die nach dem Carry select Prinzip arbeitet |
US5784307A (en) * | 1996-05-31 | 1998-07-21 | Intel Corporation | Division algorithm for floating point or integer numbers |
US5818745A (en) * | 1996-05-31 | 1998-10-06 | Intel Corporation | Computer for performing non-restoring division |
US6109777A (en) * | 1997-04-16 | 2000-08-29 | Compaq Computer Corporation | Division with limited carry-propagation in quotient accumulation |
US6012078A (en) * | 1997-06-23 | 2000-01-04 | Wood; Lawson A. | Calculation unit |
US6975629B2 (en) * | 2000-03-22 | 2005-12-13 | Texas Instruments Incorporated | Processing packets based on deadline intervals |
US8041927B2 (en) * | 2008-04-16 | 2011-10-18 | Nec Corporation | Processor apparatus and method of processing multiple data by single instructions |
JP5509839B2 (ja) * | 2009-12-22 | 2014-06-04 | 富士通株式会社 | 通信装置、受信データ長判定方法、倍数判定回路及び受信データ長判定プログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6054045A (ja) * | 1983-09-02 | 1985-03-28 | Hitachi Ltd | 除算装置 |
CA1231455A (en) * | 1984-04-09 | 1988-01-12 | Masayuki Ikeda | Nonrestoring divider |
JPS617939A (ja) * | 1984-06-22 | 1986-01-14 | Fujitsu Ltd | 高基数非回復型除算装置 |
US5031138A (en) * | 1990-06-04 | 1991-07-09 | International Business Machines Corporation | Improved ratio decoder for use in a non-restoring binary division circuit |
-
1992
- 1992-06-05 EP EP92911460A patent/EP0543024B1/en not_active Expired - Lifetime
- 1992-06-05 KR KR1019930700333A patent/KR950007879B1/ko not_active IP Right Cessation
- 1992-06-05 WO PCT/JP1992/000725 patent/WO1992022027A1/ja active IP Right Grant
- 1992-06-05 US US07/983,597 patent/US5377135A/en not_active Expired - Lifetime
- 1992-06-05 JP JP51132992A patent/JP3391448B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO1992022027A1 (en) | 1992-12-10 |
US5377135A (en) | 1994-12-27 |
KR930701784A (ko) | 1993-06-12 |
KR950007879B1 (ko) | 1995-07-21 |
EP0543024A1 (en) | 1993-05-26 |
EP0543024A4 (ja) | 1994-02-02 |
EP0543024B1 (en) | 1998-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6564239B2 (en) | Computer method and apparatus for division and square root operations using signed digit | |
JP3144816B2 (ja) | 除算を行なう装置 | |
JP2662196B2 (ja) | 演算結果正規化方法及び装置 | |
JP3689183B2 (ja) | 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 | |
US5357237A (en) | In a data processor a method and apparatus for performing a floating-point comparison operation | |
US4578750A (en) | Code determination using half-adder based operand comparator | |
JPH0635675A (ja) | データプロセッサにおいて除算を行うための方法および装置 | |
EP0530372B1 (en) | Numerical expression converter and vector processor using the same | |
US6549926B1 (en) | SRT divider having several bits of each partial remainder one-hot encoded to minimize the logic levels needed to estimate quotient bits | |
US5426600A (en) | Double precision division circuit and method for digital signal processor | |
EP0529101B1 (en) | Floating-point dividing circuit | |
Takagi et al. | A hardware algorithm for integer division | |
JP3391448B2 (ja) | 除算器 | |
JPH09212337A (ja) | 浮動小数点演算処理装置 | |
US5790444A (en) | Fast alignment unit for multiply-add floating point unit | |
US7016930B2 (en) | Apparatus and method for performing operations implemented by iterative execution of a recurrence equation | |
JP2857505B2 (ja) | 除算装置 | |
JPH10143355A (ja) | 種々の書式のオペランドを高効率で乗算する能力を有するマイクロプロセッサ及びその演算方法 | |
JP3493085B2 (ja) | 演算器 | |
JP3517162B2 (ja) | 除算・開平演算装置 | |
JP3233432B2 (ja) | 乗算器 | |
JPWO2002029546A1 (ja) | 演算器及びそれを用いた電子回路装置 | |
JP2607759B2 (ja) | 除算器 | |
JPH02171923A (ja) | 浮動小数点加減算装置 | |
JPS62159224A (ja) | 浮動小数点演算回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |