JPH0687218B2 - 浮動小数点数演算処理装置及び除数倍数生成装置 - Google Patents

浮動小数点数演算処理装置及び除数倍数生成装置

Info

Publication number
JPH0687218B2
JPH0687218B2 JP2089292A JP8929290A JPH0687218B2 JP H0687218 B2 JPH0687218 B2 JP H0687218B2 JP 2089292 A JP2089292 A JP 2089292A JP 8929290 A JP8929290 A JP 8929290A JP H0687218 B2 JPH0687218 B2 JP H0687218B2
Authority
JP
Japan
Prior art keywords
divisor
register
dividend
bits
circuit
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
JP2089292A
Other languages
English (en)
Other versions
JPH02294731A (ja
Inventor
トーマス・ジヨセフ・ビーコム
ドナルド・リイ・フリークセン
Original Assignee
インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
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 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン filed Critical インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン
Publication of JPH02294731A publication Critical patent/JPH02294731A/ja
Publication of JPH0687218B2 publication Critical patent/JPH0687218B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5352Non-restoring division not covered by G06F7/5375
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4873Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard

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)
  • Error Detection And Correction (AREA)

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明は、データ処理システムにおける除算の浮動小数
点数演算を実行する方法及び装置に関する。具体的に
は、本発明は、除算アルゴリズムが繰返し中に除数の倍
数を使用するという、2ビット非復元除算の方法を何回
か繰返し実施して、浮動小数点除算回路から商を生成す
る装置に関する。本発明は、特に除算動作の各繰返し中
に使用される特定の倍数の選択に関する。
B.従来の技術及び課題 データ処理システムにおける浮動小数点数演算の使用
は、コンピュータ技術の開始以来一般に実施されてき
た。浮動小数点数演算ハードウェアの開発は多くの形を
取り、通常はハードウェア構成を単純化したり演算処理
動作の速度を増加させることを目的としていた。加速乗
除の4つの演算は、通常、加算と減算を含む専用の処理
の部分集合を使用することにより実施行された。たとえ
ば、乗算は、多くの場合、加算演算を繰り返すことによ
り実行され、除算は減算を繰り返すことにより実行され
てきた。こうした処理演算の速度を上げるために払われ
た努力は、ハードウェア回路、特に最終的にすべての演
算の最高処理速度を制限する加算回路の設計の機能改良
と単純化に集中されてきた。除算の場合には、部分商を
計算し、あるいは複数の商ビットを同時に予想して除算
に必要な加算または減算の繰返しの数を減少させること
により、演算速度を高める努力が払われてきた。
残念ながら、加算または減算を実行するために加算器を
利用する演算回路は、不可避的に最下位ビット位置から
より上位の位置に伝播し、実際には演算中にすべてのビ
ット位置を伝播する繰上げビットの生成を必要とする。
この影響で、計算の完了に必要な処理時間が長くなり、
この問題を処理するために様々な設計努力が払われてき
た。たとえば、米国特許第4754422号明細書は、3つの
桁上げセーブ加算器を利用して、演算動作の各繰返しま
たはサイクル中に複数の商ビットを生成する除算装置を
開示している。米国特許第3621218号明細書は、演算の
各繰返し中に複数の商ビットを生成するための単一の桁
上げセーブ加算器と、その演算で使用された一連の部分
商を保持するための複数のレジスタを利用する高速除算
器を開示している。
IBMテクニカル・ディスクロージャ・ブルテン、Vo1.1
4、No.11、(1972年4月)pp.3279−3281は、動作の速
度を増すため2つの桁上げセーブ加算器及び除数のある
倍数を利用して、繰返しごとに2つの商ビットを生成す
る除算器を開示している。
「2進浮動小数点数演算のIEEE基準」ANSI/IEEE基準第7
54−1985号と呼ばれる米国基準が作成されている。この
基準は、浮動小数点数演算の結果の処理を取り扱う規則
を含めて、ある種の浮動小数点数演算を実行するための
定義、書式及び規則を定めている。これらの規則の1つ
として、この基準は、浮動小数点数演算の結果が、その
計算を無限精度で行なった場合に得られるはずの結果と
等しくない場合に「不正確な結果」と呼ばれるフラグを
セットすることを要求している。この基準はさらに、必
要な時に演算結果の丸めを実行する様々な複数の規則も
定義している。
浮動小数点数演算回路及びアルゴリズムの設計は、ANSI
/IEEE基準第754−1985号の条項の強い影響を受ける。す
べての演算条件の下で、この基準のすべての条項に合致
する結果を生成するような回路及びアルゴリズムを設計
することが望ましい。たとえば、IBMテクニカル・ディ
スクロージャ・ブルテン、Vol.30、No.7、(1987年12
月)、pp.276−278は、この基準に定義されているよう
な、正確な剰余を生成する、引数の大きさには無関係な
方法を開示している。しかし、この論文は、正確なまた
は不正確な結果の検出を特に取り扱っていないので、IE
EE基準の要件に完全に応えてはいない。
米国特許第3852581号明細書は、2つの商ビットが各追
加サイクル中に同時に生成されるという、非復元除算ア
ルゴリズムを実行する方法と装置を開示している。除算
の結果として剰余を得るのと同時に、後続サイクルの剰
余の4倍から差し引くべき除数の倍数を選択する。表と
復号器を用いて、除数中の剰余の大きさを検査して、こ
の増倍率を予想する。この増倍率は仮に2ビットの商の
形で得られる。加算の結果としてその仮の商に補正を加
え、補正済みの商を商レジスタに入力する。この特許
は、最終的な剰余を取り扱い、結果が正確かそれとも不
正確かを検出し、あるいは最後の商を丸める問題に対す
る解決策を開示していない。
本発明の主目的は、全体的にANSI/IEEE基準第754−1985
号に合致する、浮動小数点除算装置を提供することにあ
る。
本発明の別の目的は、その商の結果をANSI/IEEE基準第7
54−1985号に従って適切に丸めることができ、かつ「不
正確な結果」条件をその基準に従って適切に示すことが
できるという、浮動小数点数除算を実行する装置を提供
することにある。
本発明の別の目的は、除数に適用されたとき、この基準
の合致する商と剰余の結果を正確に生成する、倍数を保
持する装置を提供することにある。
C.発明の概要及び解決課題 本発明は、除数、被除数、部分被除数を保持する複数の
レジスタと、及びそれらに結合された単一の桁上げ加算
器及び桁上げ伝播加算器を含み、特定の方法で除数を順
序づけて、各繰返しごとに2つの商ビットを生成する。
各繰返しごとに2つの商ビットを生成するのに必要な除
数の倍数は、ゼロ、1/2、3/4、1及び3/2倍である。除
数の3/4及び3/2倍は、桁上げセーブ加算器に1/2及び1
倍を適切にゲートすることにより有効に生成される。桁
上げセーブ加算器は3つのオペランドを収容できるの
で、除数と被除数または部分被除数を1つのレジスタに
記憶するだけでよい除算反復が可能になる。この順序づ
け方法は、除数の倍数の加算または減算を行なって、部
分被除数を生成し、各繰返しごとにそれを2位置だけ左
にシフトして各繰返しごとに2つの商ビットを生成する
ことを含む。除数の上位ビットと、被除数または部分被
除数の上位ビットは、次の繰返し用の除数の倍数を選択
するために復号される。どの商ビットが選択されるか
は、ある繰返しの開始時の部分被除数が真数かそれとも
補数か、その繰返しの終了時の部分被除数が真数かそれ
とも補数か、及び選択された特定の除数の倍数によって
決まる。
倍数は、除算回路によって課される物理的制約の範囲内
で使用できる可能なすべての倍数を検査し、ANSI/IEEE
基準754−1985号の要件に合致した結果を生成する、特
別の除算アルゴリズムを実施することによって事前選択
される。事前選択された倍数は、被除数値と除数値の特
定の3ビットの組合せを表す信号線によってアクセスで
きる、マトリックス表の形の倍数セレクタ論理回路に記
憶される。
D.実施例 第1図を参照すると、本発明と共に使用される浮動小数
点数演算回路の構成図が示されている。適切な結果を決
定するには特定のアルゴリズムを実行しなければならな
いので、浮動小数点数演算の実行にはこの回路を利用す
る。この回路は、浮動小数点数が、特定の書式に従って
事前に配列されているものと想定する。この書式では、
最上位ビットが浮動小数点数の符号を表し、最上位の次
のビットのグループが浮動小数点数の指数を表し、残り
のビットがその数の小数部の値を表す。すなわち、小数
部の値は2進点が小数部値の左端に置かれていると仮定
している。その数の大きさが32ビットである単精度計算
を利用する浮動小数点数演算の場合は、符号ビットはビ
ット0であり、指数ビットは1−8であり、小数部値ビ
ットは9−31である。浮動小数点数演算が倍精度数を用
いて実施される場合、符号ビットはビット0であり、指
数ビットは1−11であり、小数部値ビットは12−63であ
る。上記の識別されたビットに加えて、第1図に関連す
るハードウェア・レジスタ及び論理回路は、4つの追加
ビットを含む。Iビットは小数部フィールドの最上位位
置を占める。G、R及びSビットは、それぞれ小数部フ
ィールドの最下位ビット位置を占める。
浮動小数点オペランドは、それらの指数が等しくない限
り、互いに加算または減算できない。そのため、それら
の指数を比較し、指数が小さい方のオペランドの小数部
を指数の差の大きさだけシフトすることが必要である。
そうすると、小数部は、大きい方の指数を結果指数とし
て、加算または減算できる。浮動小数点オペランドの乗
算には、指数を加算し小数部を乗算する必要がある。浮
動小数点オペランドの除算には、除数の指数を被除数の
指数から引き、被除数の小数部を除数の小数部で割るこ
とが必要である。
第1図の浮動小数点数演算回路は、単精度及び倍精度演
算動作を支援できる。これは、浮動小数点数加算または
減算、4ビット浮動小数点数乗算、または2ビット浮動
小数点数除算を支援するように設計される。
第1図の浮動小数点数演算回路10は、記憶データ・バス
12を利用してデータ処理システムなど他のソースとの間
でデータを送受する。データ記憶バス12を介して受け取
った情報は、複数の浮動小数点レジスタ14に送られる。
好ましい実施例では、8つの浮動小数点レジスタ14があ
り、それぞれが浮動小数点オペランドと浮動小数点動作
の結果を保持するようになっている。浮動小数点レジス
タ14は、情報をFAレジスタ16、FBレジスタ18、またはFC
レジスタ22に送ることができる。FAレジスタ16はまた、
情報を浮動小数点レジスタ14に戻す。
FAレジスタ16は、浮動小数点レジスタ14からのデータの
宛先レジスタであり、浮動小数点レジスタ14に送られる
データのソース・レジスタである。FAレジスタ16はま
た、記憶データ・バス12を介してメモリに転送されるデ
ータのソース・レジスタであり、桁上げ伝播加算器30、
指数加算器20及び正規化丸め回路34から送られるデータ
の宛先レジスタである。FAレジスタ16は、倍数セレクタ
24、事前桁合せ回路26、正規化丸め回路34、及び指数加
算器20への出力を有する。FAレジスタ16は、加算、減
算、比較、乗算及び除算用の第2のオペランドを含む。
FAレジスタ16は浮動小数点数の指数を保持するセクショ
ン16aと、浮動小数点数の小数部を保持するセクション1
6bを有する。
FAレジスタ16への複数の入力のうちのどれがレジスタに
ゲートされるかを選択的に制御するために、FAレジスタ
16は、それと関連する入力マルチプレクサ回路15を有す
る。マルチプレクサ回路15は、活動化信号Aの制御下
で、レジスタ16への様々な入力の選択的なゲーティング
を行なう。浮動小数点数演算回路10の他のレジスタも同
様のマルチプレクサ入力制御を有する。
制御論理回路11は、浮動小数点数演算回路10内でのデー
タ交換及び処理動作に必要な活動化信号をすべて生成す
る。制御論理回路11は、複数の制御信号出力Aを有し、
そのそれぞれが、様々な回路及びレジスタへの制御入力
として働く。制御論理回路11の必要性と設計、並びに浮
動小数点数演算回路10の動作に必要な活動化信号Aを理
解することは当業者の技量の範囲に含まれる。したがっ
て、これらの回路及び信号の詳細な説明はここでは不要
である。
FBレジスタ18は、記憶データ・バス12浮動小数点レジス
タ14から受け取ったデータの宛先レジスタであり、桁上
げ伝播加算器30、正規化丸め回路34からのデータの宛先
レジスタでもある。これは、倍数セレクタ24、事前桁合
せ回路26、及び指数加算器20への出力を有する。FBレジ
スタは、加算、減算、比較及び除算の第1オペランドを
記憶するために使用される。これは、加算、減算、及び
乗算の中間結果も含む。FBレジスタ18は、浮動小数点数
の指数値を含むセクション18a、及び浮動小数点数のオ
ペランド部分を含むセクション18bを有し、制御論理回
路11からの活動化信号の制御下でレジスタにデータをゲ
ートする入力マルチプレクサ回路17を有する。
FCレジスタ22は、記憶データ・バス12を介してメモリか
らデータが送られる宛先レジスタであり、桁上げ伝播加
算器30と正規化丸め回路34からのデータの宛先レジスタ
である。これは、浮動小数点レジスタ14からの宛先レジ
スタでもある。FCレジスタ22は、倍数セレクタ24、事前
桁合せ回路26、及び正規化丸め回路34への出力を有す
る。FCレジスタ22は、乗算の第1オペランドを記憶する
ために使用される。これは、乗算の結果の宛先レジスタ
である。入力マルチプレクサ回路21は、制御論理回路11
からの活動化信号の制御下で、FCレジスタ22へのデータ
のゲーティングを制御する。
指数加算器20は、指数演算に使用される13ビット加算回
路である。これは、単精度または倍精度指数の指数計算
を処理する。指数加算器は、FAレジスタ・セクション16
aとFBレジスタ・セクション18aに送られるデータのソー
スである。指数加算器20は、入力マルチプレクサ回路19
を有する。
事前桁合せ回路26は、浮動小数点オペランドの指数を加
算または減算の前に等しくするため、加算及び減算の指
数がより小さい方の小数部を事前にシフトする。事前桁
合せ回路26は、実行されるのか単精度演算か倍精度演算
かに応じて浮動小数点の小数部を0ビット位置から55ビ
ット位置に右にシフトする機能をもつ。事前桁合せ回路
26は、桁上げ伝播加算器30とFCレジスタ22への出力を有
する。
倍数セレクタ24は、乗算の被乗数の倍数及び除算の除数
の倍数を生成する論理回路である。除算では、倍数は、
被除数または部分被除数及び除数の上位ビットから復号
される。オペランドの補数は、必要に応じて倍数セレク
タにより生成される。倍数セレクタ24は、FAレジスタ1
6、FBレジスタ18及びFCレジスタ22からデータを受け取
る。倍数セレクタ24は、桁上げセーブ加算器28への出力
を有する。倍数セレクタ24は、除算シーケンスの各繰返
し中に除数倍数として使用できる可能性のある倍数のマ
トリックスを具体化する論理回路を含む。これらの倍数
は、各繰返しごとに除数の上位3ビット及び被除数また
は部分被除数の上位3ビットを復号することによって活
動化される、アクセス線により選択される。倍数は、半
導体論理マトリックスまたはプログラム式読取り専用メ
モリ・チップの形で物理的に具体化されるが、本明細書
では、参照及び理解がしやすいように表の形で表す。適
切な倍数の選択は、浮動小数点数除算回路の動作にとっ
て重要である。というのは、それらの倍数は正確な商の
結果をもたらすだけでなく、除算シーケンスの丸め動作
で使用される、剰余の正確な指示を行なわなければなら
ない。本発明は、こうした倍数の選択に関し、具体的に
はANSI/IEEE基準754−1985号に合致する倍数の選択に関
する。
桁上げセーブ加算器28を用いると、3つのオペランドが
同時にいっしょに加算できる。このため、繰返し1回当
り2つの商ビットを生成する除算アルゴリズムの使用が
可能になる。桁上げセーブ加算器28は、倍数セレクタ24
からデータを受け取り、桁上げ伝播加算器30にデータを
送る。
桁上げ伝播加算器30は、57ビット加算器であり、乗算の
部分積または除算の部分被除数を生成する桁上げセーブ
加算器28からの入力を有する。桁上げ伝播加算器回路30
は、事前桁合せ回路26、FAレジスタ16、及びFBレジスタ
18からの入力も受け取る。桁上げ伝播加算器は、FAレジ
スタ16とFBレジスタ18に接続された出力端を有する。入
力マルチプレクサ回路29は、制御論理回路11からの活動
化信号の制御下で、桁上げ伝播加算器30へのデータのゲ
ーティングを制御する。
正規化丸め回路34は、浮動小数点数演算の結果を正規化
するのに使用される正規化回路34aを含む。たとえば、
乗算の結果は、小数部を正規化するために1ビットの左
シフトが必要であり、加算または減算の結果は、最高54
ビット位置の左シフトが必要である。正規化丸め回路34
はまた、結果を、低位ビット位置の1の値だけ増分しな
ければならないある種の丸め演算で使用するための増分
回路を含む丸み回路34bも含む。
第1図の回路を、浮動小数点数除算に利用するときは、
除数をFAレジスタ16に入れ、被除数をFBレジスタ18に入
力する。浮動小数点オペランドを除算するには、指数加
算器20を利用して、レジスタ・セクション16aにある除
数の指数をレジスタ・セクション18aにある被除数の指
数から引く。レジスタ・セクション18bにある小数部被
除数を、レジスタ・セクション16bにある小数部除数で
割る。小数部除算アルゴリズムは、各繰返し中に2ビッ
トの非復元均一シフトを必要とする。これには、部分被
除数を生成するために倍数セレクタ24に入力される除数
の正確な倍数を必要とする。部分被除数は、各繰返しご
とに2ビットだけ左にシフトでき、各繰返しごとに2つ
の商ビットを作成する。商は、最終的にはFCレジスタ22
中に現れ、部分被除数は、演算中にレジスタ・セクショ
ン18b中に生成される。
動作に際しては、この方法は、一連の減算を含む。被除
数と除数の上位ビットに基づいて、倍数が選択される。
除数にこの倍数を掛け、その積を被除数から引くと、部
分剰余が生成される。部分剰余は、2ビットだけ左にシ
フトされて、次の部分被除数になる。次に、部分被除数
と除数の上位ビットに基づいて、他の倍数が選択され
る。この場合も、除数に選択された倍数を掛け、その積
を部分被除数から引くと、次の部分剰余が生成される。
こうしたステップが繰り返され、選択された倍数及びそ
の繰返しの前後の部分剰余の符号に基づいて、各繰返し
ごとに2ビットの商を生成する。
最後の繰返しの後で、部分剰余をゼロに等しいかどうか
検査する。ゼロでない場合、乗算の結果は不正確であ
る。この場合、通常は、特定の事前に定義された規則に
従って、商の値を1ビットだけ増分することにより商を
丸めるかどうかを決定する丸めシーケンスが実行され
る。この場合、適用されるANSI/IEEE基準第754−1985号
に基づいて、レジスタの特定のビットを「1」に設定す
ることにより、不正確な結果条件を指示する。この処理
手順の目的は、ソフトウェアによる考慮が必要であると
見なされる場合に、そのような考慮のために、不正確な
結果が得られたと指示を行なうことである。
ある種の従来技術では、不正確な結果条件が不正確に確
認されて、そうすべきでないときに商が丸められること
が判明している。問題の根本は、除算の繰返しから誘導
された商が正確であるとしても、剰余がゼロでないとき
に発生する。除算シーケンスの各繰返しで除算の終わり
頃になると、商ビットとして00が生成され、同じ部分剰
余が生成される。この場合、その除算の繰返し中に選択
された倍数は、従来技術の非復元除算アルゴリズムで設
定された基準に従って適切に選択されたけれども、その
倍数の故に剰余はゼロでない。この問題の基礎は、非復
元除算アルゴリズムが正確な商ビットを生成するように
設計されたが、ある商が正確かそれとも不正確かを決定
する必要のあることを特に考慮してなかったことである
と考えられる。正確な結果と不正確な結果の区別は、AN
SI/IEEE基準によって要求されているが、これまでは他
の基準によって要求されていなかった。したがって、正
確な商を生成し、常にゼロの部分剰余を生成する、除算
の必要性は、そうした基準でこうした要件が規定される
までは存在しなかった。
従来技術の2ビット非復元除算アルゴリズムに従って倍
数を選択する基準は、その結果得られる部分剰余の大き
さが、2つの上位ビットを無視しても部分剰余の値が影
響を受けないほど小さくなるように、倍数を選択するこ
とである。部分剰余が正の場合、2つの上位ビットは00
でなければならない。部分剰余が負の場合、2つの上位
ビットは11でなければならない。これが真であるのは、
アルゴリズムのステップの1つが、各繰返しで部分剰余
を2ビット左にシフトすることであり、意味のあるビッ
トが失われないからである。
本発明では、上記の失敗状況を回避するため、他の基準
を追加して、倍数の選択をさらに制限する。この状況
は、繰り返され、ゼロでないが、商ビットに対して00を
生成する部分剰余である。ゼロの部分剰余が繰り返すこ
とが認められるのは、それが正確な結果を示しているか
らである。非ゼロの繰返し部分剰余及び商ビットを生成
する繰返しも認められる。というのは、この場合、その
結果は本当に不正確であるからである。
除算アルゴリズムの各繰返しを検査する際、各繰返しは
以下の式を満足することが明かである。
R=D−MV ただし、Rは繰返しの終りの部分剰余である。
Dは繰返しの始めの部分剰余である。
Mは、除数を掛けられ、最初の部分剰余から引かれるフ
ァクタであり、倍数とも呼ばれる。
Vは除数である。
上記の式は、部分剰余Rを形成する。次に部分剰余が、
2ビットだけ左にシフトして、次の繰返しを準備する。
このシフトされたRの値が次の繰返しのDになる。Vは
常に正の数であるが、RとDの値は正または負であるこ
とに留意されたい。Dが負の場合、倍数Mは負数になる
ように選択されるので、この式は、常にDとMVの差とし
て差値Rを生成する。
除算アルゴリズムのこの実施態様では、第1図に示すハ
ードウェアを利用して、被除数Dと除数Vの3つの上位
ビットの関数として倍数Mを選択する。除数アルゴリズ
ムの設計時に、Mに対する可能な1組の候補を選択し、
除算アルゴリズムの基準に照らして個別に検査する。こ
れには、DとVのすべての組合せを使用し、Mの様々な
候補を用いて、値Rを計算することが必要である。除算
アルゴリズムの唯一の基準が、各繰返しから得られる部
分剰余が意味のあるビットを失わずに2ビット左にシフ
トできることである場合、これは、各繰返しによって生
成される部分剰余が以下の範囲に含まれるという要件と
等価である。
−2≦R<+2 第2図及び第3図は、倍数Mの値の候補を生成するため
に従来技術で使用されたアルゴリズムの流れ図である。
以下の定義が、これらの図に示された用語に適用され
る。
D1は、Dの可能な値のある間隔におけるDの最も負側の
値に等しい。
D2は、Dの可能な値のある間隔におけるDの最も正側の
値に等しい。
Vは、除数に等しい。
V1は、Vの可能な値のある間隔におけるVの最も負側の
値に等しい。
V2は、Vの可能な値のある間隔におけるVの最も正側の
値に等しい。
Mは、除数が掛けられ、部分剰余Dから引かれるファク
タ(倍数と呼ばれる)に等しい。
LBは、Mの受入れ可能な値の下限に等しい。
UBは、Mの受入れ可能な値の上限に等しい。
UBDとLBDは、それぞれ分母の上限及び下限に等しい。
UBNとLBNは、それぞれ分子の上限及び下限に等しい。
第2図及び第3図に示されたアルゴリズムは、ゼロ、1/
2、3/4、1、3/2、−1/2、−3/4、−1、−3/2及び−2
というMの値を含む、検査に合致するMの複数の候補値
を生成する。上記の候補が選ばれたのは、それぞれが、
標準的なコンピュータ・ハードウェアで比較的容易に生
成できる、小数部の量または2の累乗を生成するための
左右のシフトや、2つの数の和を生成するための他のシ
フトされた値の単純な加算を伴うシフトなど、2進値の
比較的単純な演算操作しか必要としないからである。M
の候補値を、第1図の倍数セレクタ回路24に、より具体
的には除算繰返し中にアクセス可能な論理回路に入力す
ると、表1の形で表される論理回路が導かれる。表1
は、Mの値のマトリックを示し、Mのそれぞれの値は、
真数の被除数または補数の被除数の値として表される特
定の除数値及び特定の被除数値の交点にある。物理的論
理回路マトリックスは、特定の除数と被除数の値を表す
信号線が同時に活動化されるとき、特定の倍数Mを生成
するように設計されている。
前述のように、上記の表1は、Mの値の選択用の半導体
チップに還元すると、ほとんどすべての場合に除算の完
全かつ正確な結果を示した。しかし、いくつかの除数及
び被除数では、1つの商が不正確に増分されたり、不正
確な結果が不正確に指示されるという、不正確な結果を
生成することが判明した。こうしたケースは、除算の繰
返しの終り近くで生成された商ビットが00であり、部分
剰余が変わらなくなる数を含むものである。この問題
は、あらゆる場合にANSI/IEEE基準に合致する除算回路
を設計しようとしている時に明らかになった。
本発明では、倍数Mを選択するために新しい追加基準を
規定する。この新しい基準は、古い基準に加えて使用さ
れるものであり、古い基準の代りに使用されるものでは
ない。新しい基準は、以下のようにすることができる。
ゼロの商ビット、非ゼロの部分剰余を生成する繰返しで
は、2回連続してDが等しくなってはならないことか
ら、倍数Mは、以下の式を満たすように選択すべきであ
る。
R≠D/4 以下の基準は、前述のANSI/IEEE基準には従わない、一
時的に発生する状況を回避するために選択される。上記
の不等式を前述の反復式に適用すると、以下の計算が導
かれる。
R=D−MV D−MV≠D/4 MV≠D−(D/4) MV≠(3/4)D M≠(3/4)D/V 上記の不等式を満たすには、関連する範囲内のDとVの
すべての値について、以下のどちらかの式を満たさなけ
ればならない。
M<(3/4)D/Vまたは M>(3/4)D/V 第4図及び第5図は、この新しい基準に従ってMの候補
値を検査するアルゴリズムの流れ図を示す。新しい基準
は、第4図に示され、第5図により詳細に示される「検
査2」に組み込まれている。以下の定義が、第4図と第
5図に示した用語に適用される。
D1=Dの可能な値のある間隔におけるDの最も負側の値 D2=Dの可能な値のある間隔におけるDの最も正側の値 V1=Vの可能な値のある間隔におけるVの最も正側の値 V2=Vの可能な値のある間隔におけるVの最も正側の値 LB=Mの受入れ可能な値の下限 UB=Mの受入れ可能な値の下限 LT=3/4D1/V1(負D)または=3/4D1/V2(正D) GT=3/4D2/V2(負D)または=3/4D2/V1(正D) 上記の定義を上記の不等式に適用すると、Dの値が負の
場合、以下の結果が得られる。
M<(3/4)D1/V1または M>(3/4)D2/V2 上記の定義をDの値が正の場合に適用すると、以下の結
果が得られる。
M<(3/4)D1/V2または M>(3/4)D2/V1 上記の規則に従って除数Mを選択すると、除数及び被除
数の初期値に関わらず、ANSI/IEEE基準第754−1985号に
規定された基準を常に満たす除算アルゴリズムが得られ
る。
この新しい基準の適用の結果、Mの受入れ可能な値が決
定されると、表1に示したMの上記の値が、大部分は維
持される。しかし、新しい基準を満たすにはMの値の1
つを変えなければならないことが明らかになり、その結
果得られる回路論理マトリックスは表2のように表され
る。“010"の補数被除数値と“110"の除数値の交点から
取り出される倍数Mを倍数M=1に変えなければならな
いことが明かである。この例のMの値をこう変えると、
ANSI/IEEE標準に完全に合致する商及び剰余値が得られ
る。
表2は、各除算繰返しで使用される正確な倍数Mを誘導
するために倍数セレクタ24で利用できる半導体チップの
電気的特性を示す。除算を完了するには、各繰返しごと
に商ビットを選択しなければならない。これは、繰返し
中に計算された値の関数として、商ビット値を1つの出
力として提供するように事前にプログラミングされた別
の回路論理チップによって実現される。
表3は、部分被除数の値及び倍数選択に応じて1対の商
ビットを選択するための表を示す。選択される商ビット
は、次の3つの条件に依存する。
(1)繰返しの開始時の部分被除数が真であるか補であ
るか (2)繰返しの終了時の部分被除数が真であるか補であ
るか (3)その繰返し中にどの倍数が使用されたか たとえば、繰返しの開始時の部分被除数が真であり、繰
返しの終了時の部分被除数が補であり、繰返し中に1/2
倍の倍数が使用された場合、選択された商ビットは01に
なる。繰返し中に3/4倍の倍数が使用される場合は、3
つの商ビットが生成される。これらの3つの商ビットは
すべて有効であり、第3のビットは次の繰返しで生成さ
れる上位ビットの代わりに使用しなければならない。
本発明は、その精神及び基本的属性から逸脱することな
く、他の特定の形式でも具体化でき、したがって、本実
施例はあるゆる点で限定的なものではなく例示的なもの
と考えることが望ましく、本発明の範囲を示すには、上
記の説明ではなく頭記の特許請求の範囲を参照すべきで
ある。
F.発明の効果 上述のごとく、本発明によれば、ANSI/IEEE基準第754−
1985号に合致する「不正確な結果」条件を適切に示すこ
との可能な浮動小数点数除算装置が提供される。
【図面の簡単な説明】
第1図は、本発明と共に使用される浮動小数点数演算回
路の構成図である。 第2図は、任意の繰返し中に生成された部分剰余が重み
の損失なく左にシフトできるという基準を満足する除数
倍数を選択するための従来技術で周知のアルゴリズムの
流れ図である。 第3図は、第2図に関係する流れ図である。 第4図は、選択された倍数が正しい商を生成し、必要な
時に不正確な結果であることを示す、第1のタイプのア
ルゴリズムの流れ図である。 第5図は、第4図に関係する別の流れ図である。 10……浮動小数点数演算回路、11……制御論理回路、12
……データ記憶バス、14……浮動小数点レジスタ、16…
…FAレジスタ、17、19、21、29……入力マルチプレクサ
回路、18……FBレジスタ、20……指数加算器、22……FC
レジスタ、24……倍数セレクタ、26……事前桁合せ回
路、28……桁上げセーブ加算器、30……桁上げ伝播加算
器、34……正規化丸め回路。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭49−22054(JP,A) 特開 昭51−35245(JP,A) 特公 昭43−12546(JP,B1) 特公 昭44−17188(JP,B1)

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】2ビット非復元除算法を使用するタイプの
    浮動小数点数除算回路において、除数及び被除数の上位
    3ビットの関数として除数の倍数を選択するための手段
    を有する倍数選択回路を含み、前記選択手段が更に、可
    能な除数倍数を表す信号の選択可能なマトリックスを有
    する半導体回路を含み、前記倍数のどれもが、関連する
    上位3ビットの範囲内の除数及び被除数の全ての値につ
    いて被除数を除数で割った値の3/4倍に等しくないもの
    とする浮動小数点数演算処理装置。
  2. 【請求項2】浮動小数点数演算処理装置において、信号
    生成セルのマトリックスを有する半導体回路で構成され
    る除数倍数生成装置であって、前記各セルが、それぞれ
    被除数レジスタ及び除数レジスタの上位3ビットに接続
    され、それぞれ除数及び被除数の上位3ビットを表す信
    号に応答して除数の倍数を表す信号を生成する手段を有
    し、DとVがそれぞれ被除数レジスタ及び除数レジスタ
    の全ての被除数及び除数の上位3ビットであるとき、前
    記除数の倍数を表す信号が、(3/4)D/Vと等しくない除
    数の倍数を表す信号で構成される除数倍数生成装置。
JP2089292A 1989-04-17 1990-04-05 浮動小数点数演算処理装置及び除数倍数生成装置 Expired - Fee Related JPH0687218B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/339,268 US4996660A (en) 1989-04-17 1989-04-17 Selection of divisor multipliers in a floating point divide circuit
US339268 1989-04-17

Publications (2)

Publication Number Publication Date
JPH02294731A JPH02294731A (ja) 1990-12-05
JPH0687218B2 true JPH0687218B2 (ja) 1994-11-02

Family

ID=23328240

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2089292A Expired - Fee Related JPH0687218B2 (ja) 1989-04-17 1990-04-05 浮動小数点数演算処理装置及び除数倍数生成装置

Country Status (3)

Country Link
US (1) US4996660A (ja)
EP (1) EP0394161A3 (ja)
JP (1) JPH0687218B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2835153B2 (ja) * 1990-06-25 1998-12-14 株式会社東芝 高基数除算器
JPH04172526A (ja) * 1990-11-07 1992-06-19 Toshiba Corp 浮動小数点除算器
JPH04283831A (ja) * 1991-03-13 1992-10-08 Fujitsu Ltd 除算器
US5272660A (en) * 1992-06-01 1993-12-21 Motorola, Inc. Method and apparatus for performing integer and floating point division using a single SRT divider in a data processor
US5404324A (en) * 1993-11-01 1995-04-04 Hewlett-Packard Company Methods and apparatus for performing division and square root computations in a computer
US5339266A (en) * 1993-11-29 1994-08-16 Motorola, Inc. Parallel method and apparatus for detecting and completing floating point operations involving special operands
US5771366A (en) * 1995-06-09 1998-06-23 International Business Machines Corporation Method and system for interchanging operands during complex instruction execution in a data processing system
US5825681A (en) * 1996-01-24 1998-10-20 Alliance Semiconductor Corporation Divider/multiplier circuit having high precision mode
US6731294B1 (en) * 2000-04-21 2004-05-04 Ati International Srl Vector engine with pre-accumulation buffer and method therefore
CN107168682B (zh) 2011-12-23 2021-01-26 英特尔公司 用于确定值是否在范围内的指令的装置和方法
CN114462350B (zh) * 2021-12-21 2022-11-15 北京百度网讯科技有限公司 集成电路芯片验证方法、装置、电子设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5240940B2 (ja) * 1972-06-17 1977-10-15
US3852581A (en) * 1972-12-14 1974-12-03 Burroughs Corp Two bit binary divider
JPS5135245A (ja) * 1974-09-20 1976-03-25 Hitachi Ltd
JPS56123038A (en) * 1980-03-04 1981-09-26 Fujitsu Ltd Division control system
US4320464A (en) * 1980-05-05 1982-03-16 Control Data Corporation Binary divider with carry-save adders
CA1231455A (en) * 1984-04-09 1988-01-12 Masayuki Ikeda Nonrestoring divider
US4724529A (en) * 1985-02-14 1988-02-09 Prime Computer, Inc. Method and apparatus for numerical division

Also Published As

Publication number Publication date
JPH02294731A (ja) 1990-12-05
EP0394161A2 (en) 1990-10-24
EP0394161A3 (en) 1992-06-17
US4996660A (en) 1991-02-26

Similar Documents

Publication Publication Date Title
US4941120A (en) Floating point normalization and rounding prediction circuit
US5787030A (en) Correct and efficient sticky bit calculation for exact floating point divide/square root results
US5631859A (en) Floating point arithmetic unit having logic for quad precision arithmetic
US6360241B1 (en) Computer method and apparatus for division and square root operations using signed digit
EP0421092B1 (en) Method and apparatus for performing mathematical functions using polynomial approximation and a rectangular aspect ratio multiplier
US4926370A (en) Method and apparatus for processing postnormalization and rounding in parallel
US6138135A (en) Propagating NaNs during high precision calculations using lesser precision hardware
US5671170A (en) Method and apparatus for correctly rounding results of division and square root computations
US5245564A (en) Apparatus for multiplying operands
JPH07182143A (ja) コンピュータにおいて除算および平方根計算を実施するための方法および装置
JPH02196328A (ja) 浮動小数点演算装置
JPH0749771A (ja) 近似値を丸める方法
US5132925A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
US5023827A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
US5548545A (en) Floating point exception prediction for compound operations and variable precision using an intermediate exponent bus
US4594680A (en) Apparatus for performing quadratic convergence division in a large data processing system
JPH0687218B2 (ja) 浮動小数点数演算処理装置及び除数倍数生成装置
JPH05250146A (ja) 整数累乗処理を行なうための回路及び方法
US4979142A (en) Two-bit floating point divide circuit with single carry-save adder
US7016930B2 (en) Apparatus and method for performing operations implemented by iterative execution of a recurrence equation
US5818745A (en) Computer for performing non-restoring division
US6598065B1 (en) Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal
US5648924A (en) Method and apparatus for finding arctangents
JP2857505B2 (ja) 除算装置
EP0377992A2 (en) Floating point division method and apparatus

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees