JPH0635675A - データプロセッサにおいて除算を行うための方法および装置 - Google Patents
データプロセッサにおいて除算を行うための方法および装置Info
- Publication number
- JPH0635675A JPH0635675A JP5151540A JP15154093A JPH0635675A JP H0635675 A JPH0635675 A JP H0635675A JP 5151540 A JP5151540 A JP 5151540A JP 15154093 A JP15154093 A JP 15154093A JP H0635675 A JPH0635675 A JP H0635675A
- Authority
- JP
- Japan
- Prior art keywords
- quotient
- division
- integer
- data
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
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
- 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)
Abstract
(57)【要約】
【目的】 データプロセッサ(10)において単一の修
正SRT除算器(30)を使用して整数および浮動小数
点除算操作を可能にする。 【構成】 浮動小数点および整数除算が正規化された正
の仮数(被除数および除数)に対してSRT除算を使用
して行われる。整数除算は浮動小数点回路の一部を共有
するが、動作のシーケンスは整数除算動作の実行中に変
更される。SRT除算器(30)は反復ループの前後に
一連の動作を行い整数除数および被除数をSRTアルゴ
リズムが浮動小数点仮数に対して要求するデータ経路表
現に再構築する。反復ループの間に、商ビットは選択さ
れかつ中間部分剰余を発生するために使用される。該商
ビットはまた最終的な商仮数を累積する商レジスタ(6
6)に入力される。全仮数加算器(61)が最終的な剰
余を発生するために使用される。
正SRT除算器(30)を使用して整数および浮動小数
点除算操作を可能にする。 【構成】 浮動小数点および整数除算が正規化された正
の仮数(被除数および除数)に対してSRT除算を使用
して行われる。整数除算は浮動小数点回路の一部を共有
するが、動作のシーケンスは整数除算動作の実行中に変
更される。SRT除算器(30)は反復ループの前後に
一連の動作を行い整数除数および被除数をSRTアルゴ
リズムが浮動小数点仮数に対して要求するデータ経路表
現に再構築する。反復ループの間に、商ビットは選択さ
れかつ中間部分剰余を発生するために使用される。該商
ビットはまた最終的な商仮数を累積する商レジスタ(6
6)に入力される。全仮数加算器(61)が最終的な剰
余を発生するために使用される。
Description
【0001】
【産業上の利用分野】この発明は、一般的にはデータ処
理システムに関し、かつより特定的にはSRT除算を行
うデータ処理システムに関する。
理システムに関し、かつより特定的にはSRT除算を行
うデータ処理システムに関する。
【0002】
【従来の技術】主データプロセッサ用チップ上により多
くの浮動小数点ハードウェアを集積する傾向が増大して
いる。浮動小数点ハードウェアのオンチップ集積が望ま
しいが、高性能データプロセッサの利用可能なチップ領
域の制限が実現する上での障害となる。整数および浮動
小数点除算はデータプロセッサにおいては頻繁には生じ
ないが、除算操作はパイプライン化するのが困難であり
かつ典型的には長い潜伏期間を有する。
くの浮動小数点ハードウェアを集積する傾向が増大して
いる。浮動小数点ハードウェアのオンチップ集積が望ま
しいが、高性能データプロセッサの利用可能なチップ領
域の制限が実現する上での障害となる。整数および浮動
小数点除算はデータプロセッサにおいては頻繁には生じ
ないが、除算操作はパイプライン化するのが困難であり
かつ典型的には長い潜伏期間を有する。
【0003】
【発明が解決しようとする課題】その結果、多くのデー
タプロセッサにおいては、そのようなデータプロセッサ
が除算操作を行う結果としてかなりの性能の劣化を生じ
る。さらに、大部分のデータ処理システムはより高速の
浮動小数点除算を行うためにコプロセッサを使用し、一
方主データプロセッサは整数除算操作を行う。従って、
今日のデータプロセッサは一般に低速の除算性能、かつ
特に低速の整数除算性能によって特徴付けられる。この
現象はより高速の浮動少数点除算性能は主としてコプロ
セッサに存在するが、単一チップのデータプロセッサに
は存在せず、かつ整数除算のためのものではないという
事実に起因する。
タプロセッサにおいては、そのようなデータプロセッサ
が除算操作を行う結果としてかなりの性能の劣化を生じ
る。さらに、大部分のデータ処理システムはより高速の
浮動小数点除算を行うためにコプロセッサを使用し、一
方主データプロセッサは整数除算操作を行う。従って、
今日のデータプロセッサは一般に低速の除算性能、かつ
特に低速の整数除算性能によって特徴付けられる。この
現象はより高速の浮動少数点除算性能は主としてコプロ
セッサに存在するが、単一チップのデータプロセッサに
は存在せず、かつ整数除算のためのものではないという
事実に起因する。
【0004】
【課題を解決するための手段および作用】シーケンサに
よって発行される、複数の除算命令を実行するための反
復除算ユニット、および複数のデータオペランドを記憶
するための記憶ユニットを有するデータプロセッサにお
ける、前記除算ユニットにおいて整数および浮動小数点
SRT除算を行うための方法および装置が提供される。
1組のマルチプレクサが前記記憶ユニットから読出され
た除数値(divisor value)および被除数
値(dividend value)を前記除算ユニッ
トによって行われるべき除算操作の形式に基づき所定の
データフォーマットに整列させる。前記除算ユニットが
整数除算操作を行っている時、全加算器が前記除数値の
2の補数を計算する。除算ユニットの優先エンコーダお
よびバレルシフタが前記2の補数化された除数値を正規
化して浮動整数除数を生成する。商選択回路が第1の組
の商ビットを発生しかつ反復ループの間に複数の引き続
く組の商ビットを各反復サイクルに発生する。各反復サ
イクルの間に、部分剰余形成論理が前記引き続く組の商
ビットおよび浮動整数除数を使用して複数の中間冗長部
分剰余を形成する。前記組の商ビットは1組のレジスタ
に累積されかつ商(Q)値および商値から1を減算した
もの(Q−1)を形成するために使用される。1組のマ
ルチプレクサが前記QおよびQ−1の値を所定のデータ
フォーマットに正規化し正規化されたQおよびQ−1の
商値を形成する。最終的な部分剰余の符号(正または
負)に基づき、前記正規化されたQまたはQ−1の商値
が選択されて商結果となる。もし除算器の操作が整数除
算であれば、加算器は該商結果の2の補数を計算し整数
除算の商を生成する。該整数除算の商は前記記憶ユニッ
トに記憶するために内部フォーマットに再整列され、か
つ該記憶ユニットに転送し戻される。
よって発行される、複数の除算命令を実行するための反
復除算ユニット、および複数のデータオペランドを記憶
するための記憶ユニットを有するデータプロセッサにお
ける、前記除算ユニットにおいて整数および浮動小数点
SRT除算を行うための方法および装置が提供される。
1組のマルチプレクサが前記記憶ユニットから読出され
た除数値(divisor value)および被除数
値(dividend value)を前記除算ユニッ
トによって行われるべき除算操作の形式に基づき所定の
データフォーマットに整列させる。前記除算ユニットが
整数除算操作を行っている時、全加算器が前記除数値の
2の補数を計算する。除算ユニットの優先エンコーダお
よびバレルシフタが前記2の補数化された除数値を正規
化して浮動整数除数を生成する。商選択回路が第1の組
の商ビットを発生しかつ反復ループの間に複数の引き続
く組の商ビットを各反復サイクルに発生する。各反復サ
イクルの間に、部分剰余形成論理が前記引き続く組の商
ビットおよび浮動整数除数を使用して複数の中間冗長部
分剰余を形成する。前記組の商ビットは1組のレジスタ
に累積されかつ商(Q)値および商値から1を減算した
もの(Q−1)を形成するために使用される。1組のマ
ルチプレクサが前記QおよびQ−1の値を所定のデータ
フォーマットに正規化し正規化されたQおよびQ−1の
商値を形成する。最終的な部分剰余の符号(正または
負)に基づき、前記正規化されたQまたはQ−1の商値
が選択されて商結果となる。もし除算器の操作が整数除
算であれば、加算器は該商結果の2の補数を計算し整数
除算の商を生成する。該整数除算の商は前記記憶ユニッ
トに記憶するために内部フォーマットに再整列され、か
つ該記憶ユニットに転送し戻される。
【0005】
【実施例】用語「肯定する(assert)」および
「肯定(assertion)」は信号または同様の装
置をその論理的に真の(アクティブな)状態にすること
を意味し、一方「否定する(negate)」および
「否定(negation)」は前記信号または他の装
置をその論理的に偽の(インアクティブな)状態にする
場合に使用される。アスタリスク記号(*)は補数化さ
れた信号を示すために使用される。例えば、BUS R
EQUEST*はBUS REQUEST信号の補数化
された論理状態の信号を示す。
「肯定(assertion)」は信号または同様の装
置をその論理的に真の(アクティブな)状態にすること
を意味し、一方「否定する(negate)」および
「否定(negation)」は前記信号または他の装
置をその論理的に偽の(インアクティブな)状態にする
場合に使用される。アスタリスク記号(*)は補数化さ
れた信号を示すために使用される。例えば、BUS R
EQUEST*はBUS REQUEST信号の補数化
された論理状態の信号を示す。
【0006】図1には、本発明を実施するための集積回
路データ処理システム10のブロック図が示されてい
る。好ましい実施例においては、データ処理システム1
0は命令シーケンサ12、命令キャッシュ14、データ
キャッシュ16、バスインタフェースユニット18、外
部メモリ20、ロード/ストアユニット22、整数実行
ユニット24、レジスタファイル26および28、そし
て浮動小数点および整数ユニット30〜32を含む。命
令シーケンサ12は実行ユニット22,24,30〜3
2およびレジスタファイル26および28の間のデータ
フローに対する制御を提供する。従って、命令シーケン
サ12は4ステージ(フェッチ−デコード−実行−ライ
トバック)主命令パイプラインを実施し、データのイン
タロックを実施し、命令を利用可能な実行ユニット2
2,24および30〜32に送り(発行し)、レジスタ
ファイル26および28からのデータをバス33および
34に向けかつ該バスから出力する。
路データ処理システム10のブロック図が示されてい
る。好ましい実施例においては、データ処理システム1
0は命令シーケンサ12、命令キャッシュ14、データ
キャッシュ16、バスインタフェースユニット18、外
部メモリ20、ロード/ストアユニット22、整数実行
ユニット24、レジスタファイル26および28、そし
て浮動小数点および整数ユニット30〜32を含む。命
令シーケンサ12は実行ユニット22,24,30〜3
2およびレジスタファイル26および28の間のデータ
フローに対する制御を提供する。従って、命令シーケン
サ12は4ステージ(フェッチ−デコード−実行−ライ
トバック)主命令パイプラインを実施し、データのイン
タロックを実施し、命令を利用可能な実行ユニット2
2,24および30〜32に送り(発行し)、レジスタ
ファイル26および28からのデータをバス33および
34に向けかつ該バスから出力する。
【0007】好ましい実施例によれば、大きな32ワー
ドの汎用目的レジスタファイル(GRF)26は整数、
論理、ビット−フィールド、メモリアドレシング、およ
び浮動小数点操作のためのオペランドを提供する。さら
に、拡張された32エントリのレジスタファイル(XR
F)28は浮動小数点オペランドのための付加的な記憶
を提供する。XRF28は任意の精度の(シングル、ダ
ブル、または拡張)の32の値を保持できる。実行ユニ
ット22,24および30〜32に利用できる2つのラ
イトバック・バス34がある。説明を簡単にするため
に、用語「ライトバック(write−back)」
が、特定の実行ユニットが情報をライトバック・バス3
4を含む2つのバスの1つに転送する場合に使用され
る。実行ユニット22,24および30〜32は各々そ
れら自身の内部制御されるパイプラインを備えた独立の
機能ユニットである。実行ユニットが命令の実行を終了
する時、それは結果のデータをライトバック・バス34
に与える。レジスタファイル26および28は該ライト
バック・バス34からデータを受け取りかつそれを正し
い行き先レジスタに格納する。もし他の命令がこのデー
タを待っておれば、それはレジスタファイル26および
28を通って直接適切な機能ユニット(単数または複
数)に「送られる(forwarded)」。これはデ
ータ依存命令がレジスタファイルに書き込まれるべきデ
ータを待つことなく次のクロックで発行され再び読出さ
れることができるようにする。異なる実行ユニットは異
なるパイプライン長を有するから、2つより多くの命令
が与えられたクロックサイクルで完了され得る。その結
果、実行ユニット22,24および30〜32はライト
バック・バス34上の利用可能なスロットにつき調停を
行う。最も高いライトバック優先度は、整数ユニット2
4のような、単一サイクルの実行ユニットに与えられ、
それによって、浮動小数点ユニット30〜32およびロ
ード/ストアユニット22のような、マルチステージ・
パイプラインユニットがライトバック・スロットのため
に調停している間に単一サイクルの命令が常にライトバ
ック・スロットを保証される。ライトバック・スロット
を否定されたパイプライン化実行ユニットはそれらの内
部パイプラインステージを進め続けかつすべてのパイプ
ラインステージがいっぱいになるまで新しい命令を受け
入れる。
ドの汎用目的レジスタファイル(GRF)26は整数、
論理、ビット−フィールド、メモリアドレシング、およ
び浮動小数点操作のためのオペランドを提供する。さら
に、拡張された32エントリのレジスタファイル(XR
F)28は浮動小数点オペランドのための付加的な記憶
を提供する。XRF28は任意の精度の(シングル、ダ
ブル、または拡張)の32の値を保持できる。実行ユニ
ット22,24および30〜32に利用できる2つのラ
イトバック・バス34がある。説明を簡単にするため
に、用語「ライトバック(write−back)」
が、特定の実行ユニットが情報をライトバック・バス3
4を含む2つのバスの1つに転送する場合に使用され
る。実行ユニット22,24および30〜32は各々そ
れら自身の内部制御されるパイプラインを備えた独立の
機能ユニットである。実行ユニットが命令の実行を終了
する時、それは結果のデータをライトバック・バス34
に与える。レジスタファイル26および28は該ライト
バック・バス34からデータを受け取りかつそれを正し
い行き先レジスタに格納する。もし他の命令がこのデー
タを待っておれば、それはレジスタファイル26および
28を通って直接適切な機能ユニット(単数または複
数)に「送られる(forwarded)」。これはデ
ータ依存命令がレジスタファイルに書き込まれるべきデ
ータを待つことなく次のクロックで発行され再び読出さ
れることができるようにする。異なる実行ユニットは異
なるパイプライン長を有するから、2つより多くの命令
が与えられたクロックサイクルで完了され得る。その結
果、実行ユニット22,24および30〜32はライト
バック・バス34上の利用可能なスロットにつき調停を
行う。最も高いライトバック優先度は、整数ユニット2
4のような、単一サイクルの実行ユニットに与えられ、
それによって、浮動小数点ユニット30〜32およびロ
ード/ストアユニット22のような、マルチステージ・
パイプラインユニットがライトバック・スロットのため
に調停している間に単一サイクルの命令が常にライトバ
ック・スロットを保証される。ライトバック・スロット
を否定されたパイプライン化実行ユニットはそれらの内
部パイプラインステージを進め続けかつすべてのパイプ
ラインステージがいっぱいになるまで新しい命令を受け
入れる。
【0008】好ましい実施例においては、浮動小数点お
よび整数ユニット30〜32はすべての他の実行ユニッ
ト22および24と同時に実行されかつ整数、メモリ、
および浮動小数点操作の任意の混合物が同じクロックで
一緒に発行され得る。浮動小数点加算器(ADD)31
および乗算器(MULTIPLY)32のユニットは
(オペランドの精度に関係なく)浮動小数点命令を3ク
ロックで実行するが、各クロックごとに新しい命令が発
行できるように完全にパイプライン化されている。本発
明によれば、除算ユニット(DIV)30は非パイプラ
イン化反復組合わせ浮動小数点および整数SRT除算器
である。従って、除算ユニット30は浮動小数点および
整数除算操作の間で共有される。該浮動小数点ユニット
30〜32によって生成された結果は正確なIEEE結
果であり何らのソフトウェアによる調整(fix−u
p)も必要とされない。
よび整数ユニット30〜32はすべての他の実行ユニッ
ト22および24と同時に実行されかつ整数、メモリ、
および浮動小数点操作の任意の混合物が同じクロックで
一緒に発行され得る。浮動小数点加算器(ADD)31
および乗算器(MULTIPLY)32のユニットは
(オペランドの精度に関係なく)浮動小数点命令を3ク
ロックで実行するが、各クロックごとに新しい命令が発
行できるように完全にパイプライン化されている。本発
明によれば、除算ユニット(DIV)30は非パイプラ
イン化反復組合わせ浮動小数点および整数SRT除算器
である。従って、除算ユニット30は浮動小数点および
整数除算操作の間で共有される。該浮動小数点ユニット
30〜32によって生成された結果は正確なIEEE結
果であり何らのソフトウェアによる調整(fix−u
p)も必要とされない。
【0009】図2および図3には本発明の好ましい実施
例に係わる除算ユニット30のブロック図が示されてい
る。該除算ユニット30は除算器仮数データ経路部3
6、除算器制御論理37、商選択回路38、および指数
パイプライン40を含む。本発明においては、除算器3
0はSRT除算を使用して浮動小数点および整数除算操
作を行う。基数(radix)−NのSRT除算の基本
は現在の部分的剰余の近似および(潜在的に)除数を調
べることにより各サイクルでlog2(N)の商ビット
を選択することである。基数−2のSRT除算は(冗長
部分剰余の上位4ビットのみを調べる必要があるから)
最も簡単かつ高速な商選択ハードウェアを有するが、基
数−2のSRT除算は一度に1つの商ビットのみを選択
するという不都合がある。本発明は基数−2の商選択ハ
ードウェアの速度を活用しながら各反復ごとに3つの商
ビット(q0,q1およびq2)を得るために基数−2
商選択論理のオーバラップしたステージを用いる。従っ
て、除算ユニット30はサイクルごとに3つの商ビット
を生成するため3つの基数−2のSRT非回復型(no
n−restoring)ステージ(基数−8)を使用
する。
例に係わる除算ユニット30のブロック図が示されてい
る。該除算ユニット30は除算器仮数データ経路部3
6、除算器制御論理37、商選択回路38、および指数
パイプライン40を含む。本発明においては、除算器3
0はSRT除算を使用して浮動小数点および整数除算操
作を行う。基数(radix)−NのSRT除算の基本
は現在の部分的剰余の近似および(潜在的に)除数を調
べることにより各サイクルでlog2(N)の商ビット
を選択することである。基数−2のSRT除算は(冗長
部分剰余の上位4ビットのみを調べる必要があるから)
最も簡単かつ高速な商選択ハードウェアを有するが、基
数−2のSRT除算は一度に1つの商ビットのみを選択
するという不都合がある。本発明は基数−2の商選択ハ
ードウェアの速度を活用しながら各反復ごとに3つの商
ビット(q0,q1およびq2)を得るために基数−2
商選択論理のオーバラップしたステージを用いる。従っ
て、除算ユニット30はサイクルごとに3つの商ビット
を生成するため3つの基数−2のSRT非回復型(no
n−restoring)ステージ(基数−8)を使用
する。
【0010】除算操作の際には、最上位から始まりかつ
最下位桁に進みながら、商デジットの選択が計算され
る。従って、各反復の一部として、商テジットの決定が
行われこれは前記部分的剰余が最後の部分的剰余および
商デジットに基づき計算されることを必要とする。従っ
て、前記商は方程式(Eq.)1.1から次のように累
算される。 この場合、rは基数(radix)であり、nは計算さ
れる商デジットの数でありかつQはr−(n−1)の精
度を有する累算された商結果であり、qiはステージi
から決定される商デジットである。SRT除算において
は、除算における各ステージにおいて選択される商デジ
ットは次の方程式1.2に従って次の部分剰余を計算す
る操作を決定する。 Eq.(1.2) PRi+1=rRi−Dqi この場合、PRiはステージiの部分剰余出力であり、
かつDは除数であり、かつ除算シーケンスは次の方程式
1.3を使用して開始される。 Eq.(1.3) rR0=被除数
最下位桁に進みながら、商デジットの選択が計算され
る。従って、各反復の一部として、商テジットの決定が
行われこれは前記部分的剰余が最後の部分的剰余および
商デジットに基づき計算されることを必要とする。従っ
て、前記商は方程式(Eq.)1.1から次のように累
算される。 この場合、rは基数(radix)であり、nは計算さ
れる商デジットの数でありかつQはr−(n−1)の精
度を有する累算された商結果であり、qiはステージi
から決定される商デジットである。SRT除算において
は、除算における各ステージにおいて選択される商デジ
ットは次の方程式1.2に従って次の部分剰余を計算す
る操作を決定する。 Eq.(1.2) PRi+1=rRi−Dqi この場合、PRiはステージiの部分剰余出力であり、
かつDは除数であり、かつ除算シーケンスは次の方程式
1.3を使用して開始される。 Eq.(1.3) rR0=被除数
【0011】好ましい実施例においては、除算器の仮数
部分36は6つのステージ100〜105を含む。浮動
小数点除算は正規化された正の仮数(mantissa
s)(被除数および除数)に対してSRT除算を使用し
て行われる。指数減算は指数パイプ40で行われ、そこ
で浮動小数点のオーバフローおよびアンダフローも処理
される。商選択論理38は各反復(クロックサイクル)
ごとに3つの商ビット(q0,q1およびq2)を生成
し、かつ部分剰余形成回路56は次のクロックサイクル
においてこれら3つのビットを消費する。従って、商選
択論理38は現在の部分剰余に基づき次の商ビットを選
択し、一方部分剰余形成回路56は次の商ビットを使用
して次の部分剰余を冗長キャリー−セーブ形式で発生す
る。該商ビットはまた仮数経路またはパス36における
商レジスタ66に入力され最終的な商仮数を形成する。
全仮数加算器61は冗長部分剰余(RDPR)を含む最
後の対のキャリーおよびセーブ部分剰余ベクトルから非
冗長(“real”)最終剰余(RPR)を発生するた
めに使用される。従来のように、最終的な剰余は(制御
論理37の制御の下に)丸め回路76によって浮動小数
点結果の適切な丸めのために使用される。制御論理37
は浮動小数点除算を行うのに必要な制御(CNTRL)
信号を順序制御する(sequences)。
部分36は6つのステージ100〜105を含む。浮動
小数点除算は正規化された正の仮数(mantissa
s)(被除数および除数)に対してSRT除算を使用し
て行われる。指数減算は指数パイプ40で行われ、そこ
で浮動小数点のオーバフローおよびアンダフローも処理
される。商選択論理38は各反復(クロックサイクル)
ごとに3つの商ビット(q0,q1およびq2)を生成
し、かつ部分剰余形成回路56は次のクロックサイクル
においてこれら3つのビットを消費する。従って、商選
択論理38は現在の部分剰余に基づき次の商ビットを選
択し、一方部分剰余形成回路56は次の商ビットを使用
して次の部分剰余を冗長キャリー−セーブ形式で発生す
る。該商ビットはまた仮数経路またはパス36における
商レジスタ66に入力され最終的な商仮数を形成する。
全仮数加算器61は冗長部分剰余(RDPR)を含む最
後の対のキャリーおよびセーブ部分剰余ベクトルから非
冗長(“real”)最終剰余(RPR)を発生するた
めに使用される。従来のように、最終的な剰余は(制御
論理37の制御の下に)丸め回路76によって浮動小数
点結果の適切な丸めのために使用される。制御論理37
は浮動小数点除算を行うのに必要な制御(CNTRL)
信号を順序制御する(sequences)。
【0012】浮動小数点仮数のためのSRTアルゴリズ
ムは被除数および除数に対し次のデータ経路表現フォー
マット1(Format 1)を必要とする。 フォーマット1:0 0 H .M62 M61 M60…M1 M0 (ゼロ)(1)(.)(拡張精度に対し63までの仮数ビット) この場合、Hは隠れたビット(hidden bit)
を示し、かつMは仮数ビットを示す。符号なしおよび符
号付き整数除算(32ビット/32ビットまたは64ビ
ット/32ビット)については、それぞれ、浮動小数点
仮数経路36への次のアライメントフォーマット2およ
び3が必要である。 フォーマット2: 0 0 I63.I62 I61 I60…I1 I0 (ゼロ)(2進ポイントを有する(32または64までの) 整数ビット) フォーマット3: S1 S0 符号 . I62 I61 I60 … I1 I0 (符号、 2拡張ビット)(.) (整数ビット (31または63まで))
ムは被除数および除数に対し次のデータ経路表現フォー
マット1(Format 1)を必要とする。 フォーマット1:0 0 H .M62 M61 M60…M1 M0 (ゼロ)(1)(.)(拡張精度に対し63までの仮数ビット) この場合、Hは隠れたビット(hidden bit)
を示し、かつMは仮数ビットを示す。符号なしおよび符
号付き整数除算(32ビット/32ビットまたは64ビ
ット/32ビット)については、それぞれ、浮動小数点
仮数経路36への次のアライメントフォーマット2およ
び3が必要である。 フォーマット2: 0 0 I63.I62 I61 I60…I1 I0 (ゼロ)(2進ポイントを有する(32または64までの) 整数ビット) フォーマット3: S1 S0 符号 . I62 I61 I60 … I1 I0 (符号、 2拡張ビット)(.) (整数ビット (31または63まで))
【0013】好ましい実施例によれば、指数パイプ40
(図2および図3)は浮動小数点除算に対しすべての指
数操作を実施する。図2および図3に示されるように、
除数の指数および被除数の指数は指数ラッチ47に格納
される。除数指数は減算回路49によって被除数指数か
ら減算され、かつその結果はラッチ50に格納される。
この2の補数の減算は通常の内部浮動小数点値より1大
きな指数結果(EXDIF)を提供する。通常、内部指
数は書き戻された時正しくバイアスされるためには内部
浮動小数点値より1だけ小さくなければならない(バイ
アスは指数値のMSBを反転することにより行われ
る)。減分回路51はラッチされた差分(EXDIF)
を2だけ減分し、それによって内部結果指数から1減算
したもの(EXDIFM1)を生成する。実際の指数結
果(ACTEXP)はこれら2つの指数値の内の1つで
あるかまたはそれらの間にある値である。すべての3つ
の指数(EXDIF,EXDIFM1およびACTEX
P)またはそれらのオーバフロー/アンダフロー値は例
外/結果発生器52によって形成される。正しい(最終
的な)指数結果(RESEXP)およびオーバフロー/
アンダフローフラグは仮数正規化および丸めに基づきマ
ルチプレクサ78によって選択され、かつラッチ79に
ラッチされる。好ましい実施例においては、浮動小数点
除算のオーバフローおよびアンダフローは結果指数(R
ESEXP)に基づいてのみ決定される。もし3つの指
数(RESEXP)の内の選択された1つがオーバフロ
ーあるいはアンダフローすれば例外が発生することにな
る。
(図2および図3)は浮動小数点除算に対しすべての指
数操作を実施する。図2および図3に示されるように、
除数の指数および被除数の指数は指数ラッチ47に格納
される。除数指数は減算回路49によって被除数指数か
ら減算され、かつその結果はラッチ50に格納される。
この2の補数の減算は通常の内部浮動小数点値より1大
きな指数結果(EXDIF)を提供する。通常、内部指
数は書き戻された時正しくバイアスされるためには内部
浮動小数点値より1だけ小さくなければならない(バイ
アスは指数値のMSBを反転することにより行われ
る)。減分回路51はラッチされた差分(EXDIF)
を2だけ減分し、それによって内部結果指数から1減算
したもの(EXDIFM1)を生成する。実際の指数結
果(ACTEXP)はこれら2つの指数値の内の1つで
あるかまたはそれらの間にある値である。すべての3つ
の指数(EXDIF,EXDIFM1およびACTEX
P)またはそれらのオーバフロー/アンダフロー値は例
外/結果発生器52によって形成される。正しい(最終
的な)指数結果(RESEXP)およびオーバフロー/
アンダフローフラグは仮数正規化および丸めに基づきマ
ルチプレクサ78によって選択され、かつラッチ79に
ラッチされる。好ましい実施例においては、浮動小数点
除算のオーバフローおよびアンダフローは結果指数(R
ESEXP)に基づいてのみ決定される。もし3つの指
数(RESEXP)の内の選択された1つがオーバフロ
ーあるいはアンダフローすれば例外が発生することにな
る。
【0014】指数ソースラッチ47はGCLK2に対し
て透明でありかつGCLK2*に対して安定である。減
算器49はGCLK2によってプリチャージされかつオ
ペランド検査ラッチ48とともにGCLK2*によって
計算される。和ラッチ50は指数(EXDIF)の間の
差分を浮動小数点除算の第2のクロックサイクルにおい
てGLCK2*の立下りエッジで浮動小数点除算操作の
間に1度だけラッチする。ラッチ50は前記差分が減分
回路51、例外および結果発生器52およびラッチ79
に送られる間にEXDIFを記憶(保持)する。浮動小
数点除算ライトバックサイクルに先行するクロックサイ
クルにおけるGCLK2に応じて、正しい指数(RES
EXP)が選択されかつGCLK2*に応じてラッチ7
9に安定に保持される。ラッチ79は該RESEXPを
再整列およびライトバックバス34への出力のために仮
数データ経路の第5のステージ105に与える。
て透明でありかつGCLK2*に対して安定である。減
算器49はGCLK2によってプリチャージされかつオ
ペランド検査ラッチ48とともにGCLK2*によって
計算される。和ラッチ50は指数(EXDIF)の間の
差分を浮動小数点除算の第2のクロックサイクルにおい
てGLCK2*の立下りエッジで浮動小数点除算操作の
間に1度だけラッチする。ラッチ50は前記差分が減分
回路51、例外および結果発生器52およびラッチ79
に送られる間にEXDIFを記憶(保持)する。浮動小
数点除算ライトバックサイクルに先行するクロックサイ
クルにおけるGCLK2に応じて、正しい指数(RES
EXP)が選択されかつGCLK2*に応じてラッチ7
9に安定に保持される。ラッチ79は該RESEXPを
再整列およびライトバックバス34への出力のために仮
数データ経路の第5のステージ105に与える。
【0015】除算操作の間に、商選択回路38(図2お
よび図3)は被除数の上位(MSB)ビットまたは現在
の部分剰余を調べて次の3ビットの商デジット(q0,
q1,q2)を決定する。通常、商選択回路38は第1
のステージ101で形成された冗長部分剰余(RDP
R)を選択する。しかしながら、第1の2つの浮動小数
点除算サイクル(第3および第4の整数除算サイクル)
においては、商選択回路38はいくつかのバージョンの
被除数の再上位12ビットを選択する。第1のバージョ
ンは3だけ右シフトされ部分剰余形成回路56によって
行われた3つの左シフトをオフセットする。「反復ルー
プ」の前の第1のパスに際しては、部分剰余形成回路5
6は通常の機能を達成しないが、それは商選択回路38
によって何らの商も選択されていないからである。商選
択回路38内のマスタ/スレーブラッチ(図示せず)は
被除数または部分剰余の上位ビットを記憶しかつ部分剰
余ラッチ57の上位11キャリー/スレーブビットを複
製する。商選択回路38は現在の部分剰余に対して動作
し第1のステージ101が同じクロックサイクルで形成
している次の部分剰余の上位ビットを形成する。従っ
て、商選択回路38へのデータ入力は(符号ビットを含
む)被除数の上位12ビット、冗長部分剰余(RDP
R)の第4〜第14の最上位11ビット、および66ビ
ットの除数(D)の上位13ビットである。出力は第1
のステージ101が(図7に示されるように)次のサイ
クルの間に使用するための3つの商ビット(q0,q
1,q2)である。
よび図3)は被除数の上位(MSB)ビットまたは現在
の部分剰余を調べて次の3ビットの商デジット(q0,
q1,q2)を決定する。通常、商選択回路38は第1
のステージ101で形成された冗長部分剰余(RDP
R)を選択する。しかしながら、第1の2つの浮動小数
点除算サイクル(第3および第4の整数除算サイクル)
においては、商選択回路38はいくつかのバージョンの
被除数の再上位12ビットを選択する。第1のバージョ
ンは3だけ右シフトされ部分剰余形成回路56によって
行われた3つの左シフトをオフセットする。「反復ルー
プ」の前の第1のパスに際しては、部分剰余形成回路5
6は通常の機能を達成しないが、それは商選択回路38
によって何らの商も選択されていないからである。商選
択回路38内のマスタ/スレーブラッチ(図示せず)は
被除数または部分剰余の上位ビットを記憶しかつ部分剰
余ラッチ57の上位11キャリー/スレーブビットを複
製する。商選択回路38は現在の部分剰余に対して動作
し第1のステージ101が同じクロックサイクルで形成
している次の部分剰余の上位ビットを形成する。従っ
て、商選択回路38へのデータ入力は(符号ビットを含
む)被除数の上位12ビット、冗長部分剰余(RDP
R)の第4〜第14の最上位11ビット、および66ビ
ットの除数(D)の上位13ビットである。出力は第1
のステージ101が(図7に示されるように)次のサイ
クルの間に使用するための3つの商ビット(q0,q
1,q2)である。
【0016】好ましい実施例においては、整数除算は、
指数パイプ40および丸め回路76(状態マシン37に
よって制御される)を除き、12に示される、SRT浮
動小数点回路を共有する。好ましい実施例によれば、整
数に対してSRT除算を行うためには付加的な回路が必
要とされる。従って、除算器30はさらに整数除数およ
び被除数整列(dividend alignmen
t)回路43および44(図2)、加算器61およびX
ORゲート110(図7)、優先エンコーダ70および
バレルシフタ(barrel shifter)72
(図3)、被除数補数化回路140(図12)、および
適切に整数除算をシーケンス制御するためにいくらかの
付加的な制御およびルーティング論理を含む。
指数パイプ40および丸め回路76(状態マシン37に
よって制御される)を除き、12に示される、SRT浮
動小数点回路を共有する。好ましい実施例によれば、整
数に対してSRT除算を行うためには付加的な回路が必
要とされる。従って、除算器30はさらに整数除数およ
び被除数整列(dividend alignmen
t)回路43および44(図2)、加算器61およびX
ORゲート110(図7)、優先エンコーダ70および
バレルシフタ(barrel shifter)72
(図3)、被除数補数化回路140(図12)、および
適切に整数除算をシーケンス制御するためにいくらかの
付加的な制御およびルーティング論理を含む。
【0017】好ましい実施例によれば、除算器30を通
るデータフローは2つの主経路を通り、1つは浮動小数
点除算(FDIV)のためのものでありかつ他方は整数
除算(IDIV)のためのものである。基本的な除算デ
ータフローは5つのステージ100〜104からなる。
ゼロ番目のステージ100においては、図2に示される
ように、除数および被除数は、マルチプレクサ41〜4
2を介して、入力され、マルチプレクサ43〜44を介
して、整列される。第1のステージ101においては、
商選択回路38は前記被除数および除数を使用して第1
の3つの商ビット(q0,q1およびq2)を形成す
る。これら3つの発生された商ビット(q0,q1およ
びq2)、被除数(DEND)および除数(D)は次
に、第1のステージ101における、部分剰余形成回路
56によって使用されて次の部分剰余を形成し、これ
は、図5に示されるように、部分剰余ラッチ57にラッ
チされる。反復クロックサイクル(その数は前記結果の
有意ビットの関数である)の間に、部分剰余(PRSU
MおよびPRCRY)が第1のステージ101に戻って
入力され、それによって「反復ループ」を形成する。部
分剰余回路56は商選択回路38によって生成される商
ビット、ラッチ53を介して与えられる、除数(D)を
使用して冗長キャリー−セーブ形式で次の部分剰余を形
成する。
るデータフローは2つの主経路を通り、1つは浮動小数
点除算(FDIV)のためのものでありかつ他方は整数
除算(IDIV)のためのものである。基本的な除算デ
ータフローは5つのステージ100〜104からなる。
ゼロ番目のステージ100においては、図2に示される
ように、除数および被除数は、マルチプレクサ41〜4
2を介して、入力され、マルチプレクサ43〜44を介
して、整列される。第1のステージ101においては、
商選択回路38は前記被除数および除数を使用して第1
の3つの商ビット(q0,q1およびq2)を形成す
る。これら3つの発生された商ビット(q0,q1およ
びq2)、被除数(DEND)および除数(D)は次
に、第1のステージ101における、部分剰余形成回路
56によって使用されて次の部分剰余を形成し、これ
は、図5に示されるように、部分剰余ラッチ57にラッ
チされる。反復クロックサイクル(その数は前記結果の
有意ビットの関数である)の間に、部分剰余(PRSU
MおよびPRCRY)が第1のステージ101に戻って
入力され、それによって「反復ループ」を形成する。部
分剰余回路56は商選択回路38によって生成される商
ビット、ラッチ53を介して与えられる、除数(D)を
使用して冗長キャリー−セーブ形式で次の部分剰余を形
成する。
【0018】好ましい実施例においては、基本的なデー
タフローは整数除算が行われる場合および浮動小数点除
算の間に丸めが必要な場合に変更される。整数除算の場
合は、図6に示される反復ループの前および後に付加的
な操作を行わなければならない。入力除数は、図7に示
されるように、第2のステージ102において2の補数
化されなければならない。もし除数(divisor)
が正であれば、該除数は第2のステージ102を通過し
て第3のステージ103に渡され、かつ次に該第3のス
テージにおいて、図8に示される、優先エンコーディン
グおよび左シフトにより正規化されなければならない。
この手順は「浮動整数(floatedintege
r)」除数(FLTIDIV)を生成し、これは第0番
目のステージ100の除数ラッチ53にラッチし戻さ
れ、かつ次に整数除算が進行する。整数除算のQまたは
Q−1の商が第4ステージ104において生成された
後、選択された商(QまたはQ−1)は第3のステージ
103において31から除数の左シフトを減算したのに
等しい量だけ右シフトされ「最終的整数商(final
integer quotient)」を形成し、かつ
次に第2のステージ102において2の補数化されなけ
ればならない(上に述べたようにもし除数および被除数
が同じ符号を持っておれば通過される)。最終的整数商
は第4ステージ104においてラッチされかつ、第5ス
テージ105を通って、ライトバック・バス34に駆動
出力される。除算器30の動作を次により詳細に説明す
る。
タフローは整数除算が行われる場合および浮動小数点除
算の間に丸めが必要な場合に変更される。整数除算の場
合は、図6に示される反復ループの前および後に付加的
な操作を行わなければならない。入力除数は、図7に示
されるように、第2のステージ102において2の補数
化されなければならない。もし除数(divisor)
が正であれば、該除数は第2のステージ102を通過し
て第3のステージ103に渡され、かつ次に該第3のス
テージにおいて、図8に示される、優先エンコーディン
グおよび左シフトにより正規化されなければならない。
この手順は「浮動整数(floatedintege
r)」除数(FLTIDIV)を生成し、これは第0番
目のステージ100の除数ラッチ53にラッチし戻さ
れ、かつ次に整数除算が進行する。整数除算のQまたは
Q−1の商が第4ステージ104において生成された
後、選択された商(QまたはQ−1)は第3のステージ
103において31から除数の左シフトを減算したのに
等しい量だけ右シフトされ「最終的整数商(final
integer quotient)」を形成し、かつ
次に第2のステージ102において2の補数化されなけ
ればならない(上に述べたようにもし除数および被除数
が同じ符号を持っておれば通過される)。最終的整数商
は第4ステージ104においてラッチされかつ、第5ス
テージ105を通って、ライトバック・バス34に駆動
出力される。除算器30の動作を次により詳細に説明す
る。
【0019】図5に示されるように、除算器30のゼロ
番目のステージ100は、それぞれ、シーケンサ12に
よって与えられるインタフェース信号(MUX CON
TROL,ALIGN MUX CONTROL)に基
づき適切なソースおよびライトバック・バス33および
34からの除算オペランドを送る。図5は、除数の整列
のためのマルチプレクサ41,43および45、および
ラッチ53を示しているが、好ましい実施例において
は、被除数オペランドを整列するのに必要な回路も同じ
である。マルチプレクサ41は各々の命令に対し、それ
ぞれ、正しいソース(SX)バス、またはライトバック
(WB)バス、例えば“SX[0]”および“WB
[1]”、を選択する。マルチプレクサ43は符号、指
数、および仮数を上に示した浮動小数点内部フォーマッ
ト1または整数フォーマット2または3に整列させる。
除算ラッチ53は該仮数をラッチし、確保されたオペラ
ンドをチェックし、かつ符号(単数または複数)、およ
びヒドンビット(hiddenbits)を制御論理3
7に送る。
番目のステージ100は、それぞれ、シーケンサ12に
よって与えられるインタフェース信号(MUX CON
TROL,ALIGN MUX CONTROL)に基
づき適切なソースおよびライトバック・バス33および
34からの除算オペランドを送る。図5は、除数の整列
のためのマルチプレクサ41,43および45、および
ラッチ53を示しているが、好ましい実施例において
は、被除数オペランドを整列するのに必要な回路も同じ
である。マルチプレクサ41は各々の命令に対し、それ
ぞれ、正しいソース(SX)バス、またはライトバック
(WB)バス、例えば“SX[0]”および“WB
[1]”、を選択する。マルチプレクサ43は符号、指
数、および仮数を上に示した浮動小数点内部フォーマッ
ト1または整数フォーマット2または3に整列させる。
除算ラッチ53は該仮数をラッチし、確保されたオペラ
ンドをチェックし、かつ符号(単数または複数)、およ
びヒドンビット(hiddenbits)を制御論理3
7に送る。
【0020】図6に示される、除算器30の第1のステ
ージ101においては、部分剰余形成(PRF)論理5
6は現在の部分剰余を各クロックサイクルごとに形成し
かつラッチする。PRF論理56は被除数(DEND)
または最後の部分剰余(冗長形式のPRSUMおよびP
RCRY)に対して動作し次の部分剰余を形成する。次
の部分剰余の形成は以下に示されるSRTの次の部分剰
余方程式1.4により支配される。従って、次の部分剰
余の形成は現在の商の除数倍数を形成することにより
(q(n)D)、かつ該除数倍数を最後の部分剰余(r
PR(n−1))から減算することにより達成される。 Eq.(1.4) PR(n)=rPR(n−1)−q(n)D, N=0,1,2,...,m−1 この場合、PR(n)=n番目のステージの後の部分剰
余(SX64X63.X62...)、rPR(−1)
=被除数、r=基数(好ましい実施例では2)、q
(n)=n番目の商デジット(完全冗長基数2に対して
はq=−1,0,+1)、D=除数(S1S2H.X
62...)、m=丸めの前に必要とされる結果ビット
の数、である。
ージ101においては、部分剰余形成(PRF)論理5
6は現在の部分剰余を各クロックサイクルごとに形成し
かつラッチする。PRF論理56は被除数(DEND)
または最後の部分剰余(冗長形式のPRSUMおよびP
RCRY)に対して動作し次の部分剰余を形成する。次
の部分剰余の形成は以下に示されるSRTの次の部分剰
余方程式1.4により支配される。従って、次の部分剰
余の形成は現在の商の除数倍数を形成することにより
(q(n)D)、かつ該除数倍数を最後の部分剰余(r
PR(n−1))から減算することにより達成される。 Eq.(1.4) PR(n)=rPR(n−1)−q(n)D, N=0,1,2,...,m−1 この場合、PR(n)=n番目のステージの後の部分剰
余(SX64X63.X62...)、rPR(−1)
=被除数、r=基数(好ましい実施例では2)、q
(n)=n番目の商デジット(完全冗長基数2に対して
はq=−1,0,+1)、D=除数(S1S2H.X
62...)、m=丸めの前に必要とされる結果ビット
の数、である。
【0021】従って、式1.4は各々の中間部分剰余
(PR(n−1))が“r”によって乗算されることを
要求する(これはr=2に対しては前記中間部分剰余を
1つのビット位置だけシフトすることを伴う)。次に、
次の除数倍数(q(n)D)は前記シフトされた部分剰
余から減算されなければならない。その結果はちょうど
4より下の最大の大きさを有する符号付きの2の補数で
あり、従って、余分の大きさビットおよび符号ビットが
除算仮数データ経路36の前に加えられなければならな
い。好ましい実施例によれば、部分剰余形成は1つの反
復クロックサイクルに3ビットの増分で生ずる。除算器
30の第1のステージ101はn=Nに対し式1.4を
実施し、この場合Nは現在の反復クロックサイクルであ
り、従って、部分剰余ラッチ56は中間部分剰余PR
(2),PR(5),PR(8),...,PR(m−
1)をラッチし、この場合“m−1”は浮動小数点除算
(FDIV)拡張および整数倍精度操作に対しては65
であり、FDIV倍精度に対しては56であり、FDI
V単一精度に対しては26であり、整数除算に対しては
32である。
(PR(n−1))が“r”によって乗算されることを
要求する(これはr=2に対しては前記中間部分剰余を
1つのビット位置だけシフトすることを伴う)。次に、
次の除数倍数(q(n)D)は前記シフトされた部分剰
余から減算されなければならない。その結果はちょうど
4より下の最大の大きさを有する符号付きの2の補数で
あり、従って、余分の大きさビットおよび符号ビットが
除算仮数データ経路36の前に加えられなければならな
い。好ましい実施例によれば、部分剰余形成は1つの反
復クロックサイクルに3ビットの増分で生ずる。除算器
30の第1のステージ101はn=Nに対し式1.4を
実施し、この場合Nは現在の反復クロックサイクルであ
り、従って、部分剰余ラッチ56は中間部分剰余PR
(2),PR(5),PR(8),...,PR(m−
1)をラッチし、この場合“m−1”は浮動小数点除算
(FDIV)拡張および整数倍精度操作に対しては65
であり、FDIV倍精度に対しては56であり、FDI
V単一精度に対しては26であり、整数除算に対しては
32である。
【0022】好ましい実施例においては、除算器30の
第1のステージ101(図6)は商選択回路38におけ
る同じ構成に整合するために除数の減算の順序をやや変
更し、かつ該変更はキャリーセーブ加算器(CSA)1
18を通る最悪の経路をスピードアップする。CSA1
14,117および118からのキャリー出力は和出力
よりも1つまたはそれ以上のビットだけ左シフトされ全
てのビットをそれらの適切な意味に保たなければばなら
ない。従って、図6においては、2つの矢じり(arr
owheads)は1つのビット位置だけ左シフトする
ことを意味し、一方3つの矢じりは2つのビット位置だ
け左シフトすることを示している。マルチプレクサ43
および44は(第1の反復に対しては)被除数−DEN
D、または現在の部分剰余(PRSUM,PRCRY)
を冗長キャリー/セーブ形式(全ての他の反復に対し
て)の間で選択を行なう。
第1のステージ101(図6)は商選択回路38におけ
る同じ構成に整合するために除数の減算の順序をやや変
更し、かつ該変更はキャリーセーブ加算器(CSA)1
18を通る最悪の経路をスピードアップする。CSA1
14,117および118からのキャリー出力は和出力
よりも1つまたはそれ以上のビットだけ左シフトされ全
てのビットをそれらの適切な意味に保たなければばなら
ない。従って、図6においては、2つの矢じり(arr
owheads)は1つのビット位置だけ左シフトする
ことを意味し、一方3つの矢じりは2つのビット位置だ
け左シフトすることを示している。マルチプレクサ43
および44は(第1の反復に対しては)被除数−DEN
D、または現在の部分剰余(PRSUM,PRCRY)
を冗長キャリー/セーブ形式(全ての他の反復に対し
て)の間で選択を行なう。
【0023】好ましい実施例によれば、第1のステージ
101(図6)はGCLK1サイクルにつき動作する。
前記反復ループにおいて、部分剰余ラッチはクロック信
号PRCLK1によって制御され、これはGCLK1ク
ロックを使用して制御論理37により発生される。制御
論理37における内部カウンタ(図示せず)は反復サイ
クルが完了した時を判定する。反復ループの完了に応じ
て、PRCLK1はもはやラッチ57の動作を制御しな
い。本質的に、ラッチ57は除算器30が除算動作を完
了するまで冗長部分剰余(RDPR)を保持する。従っ
て、GCLK1の立上りエッジにおいて、3つの商(q
0,q1およびq2)および現在の部分剰余(PRSU
M,PRCRY)は変化しかつ新しい形成サイクルを開
始する。図6に示されるように、第1のステージ101
へのデータ入力は除数(D)および除数の補数(D
*)、被除数(DEND)および商ベクトル(q0,q
1およびq2)である。除数および被除数入力はヒドン
ポジションにおけるビット、2倍のヒドン、および符号
ビットを含む(整数除算に対しては、これらの3つのビ
ットは符号付き除算に対しては全て符号でありあるいは
符号なし除算に対しては2つの先行符号およびMSBで
ある)。結果は前記第1のステージ101のデータ経路
における合計66ビットである。第1のステージ101
の出力は最終的な部分剰余の和(PRSUMOUT)お
よびキャリー(PRCRYOUT)形式である。商ベク
トルは各クロックサイクルごとに変化しかつ9個のビッ
ト(3つの商−q0,q1およびびq2の各々に対し−
1,0および+1)からなる。除数“D”および、それ
ぞれ、q=−1に対するかつq=0に対するゼロ入力は
重要ではなく、かつ除数mux 113は単にq0の値
に基づきCSA104に入力するために正しい倍数(m
ultiple)(D,0)を選択するにすぎない。q
=+1に対する−Dの形成はD*を選択しかつCSA1
14のLSB入力における1つを加算することにより達
成される。(D*に対し、キャリーおよび/またはLS
B1は左シフトのため常にオープンとなる)。同様にし
て、除数の倍数は次にCSA117および118におい
てシフトされた中間部分剰余に加算される。
101(図6)はGCLK1サイクルにつき動作する。
前記反復ループにおいて、部分剰余ラッチはクロック信
号PRCLK1によって制御され、これはGCLK1ク
ロックを使用して制御論理37により発生される。制御
論理37における内部カウンタ(図示せず)は反復サイ
クルが完了した時を判定する。反復ループの完了に応じ
て、PRCLK1はもはやラッチ57の動作を制御しな
い。本質的に、ラッチ57は除算器30が除算動作を完
了するまで冗長部分剰余(RDPR)を保持する。従っ
て、GCLK1の立上りエッジにおいて、3つの商(q
0,q1およびq2)および現在の部分剰余(PRSU
M,PRCRY)は変化しかつ新しい形成サイクルを開
始する。図6に示されるように、第1のステージ101
へのデータ入力は除数(D)および除数の補数(D
*)、被除数(DEND)および商ベクトル(q0,q
1およびq2)である。除数および被除数入力はヒドン
ポジションにおけるビット、2倍のヒドン、および符号
ビットを含む(整数除算に対しては、これらの3つのビ
ットは符号付き除算に対しては全て符号でありあるいは
符号なし除算に対しては2つの先行符号およびMSBで
ある)。結果は前記第1のステージ101のデータ経路
における合計66ビットである。第1のステージ101
の出力は最終的な部分剰余の和(PRSUMOUT)お
よびキャリー(PRCRYOUT)形式である。商ベク
トルは各クロックサイクルごとに変化しかつ9個のビッ
ト(3つの商−q0,q1およびびq2の各々に対し−
1,0および+1)からなる。除数“D”および、それ
ぞれ、q=−1に対するかつq=0に対するゼロ入力は
重要ではなく、かつ除数mux 113は単にq0の値
に基づきCSA104に入力するために正しい倍数(m
ultiple)(D,0)を選択するにすぎない。q
=+1に対する−Dの形成はD*を選択しかつCSA1
14のLSB入力における1つを加算することにより達
成される。(D*に対し、キャリーおよび/またはLS
B1は左シフトのため常にオープンとなる)。同様にし
て、除数の倍数は次にCSA117および118におい
てシフトされた中間部分剰余に加算される。
【0024】図7に示される、第2のステージ102は
汎用目的の全加算器として機能する。SRT除算アルゴ
リズムは除数が正であることを必要とする。浮動小数点
除算のために使用される全加算器61は負の除数の2の
補数化を行なうために使用できる。2の補数モード(X
OR)110が全加算器61と共に導入され、制御信号
(DVPLUSONE)に応じて、加算器61により、
入力値が反転され(1の補数)かつ“1”に加算され
る。もし除数および被除数が反対の符号を持っており、
商が負になるべきことを示していれば、最終的な整数の
商(QUOTIENT)の2の補数化を行なうために補
数器110が使用される。加算器61およびXOR 1
10は除数が常に正であることを保証するように動作す
るが、被除数補数器140(図11)は被除数を正の値
にする高速の方法を提供する。整数除算の間に、被除数
をインバータを通すことにより、中間期の商は常に正で
あり、従って、適切に上限および下限の関数を適用する
ための付加的な回路の必要性を除去する。正の商の結果
は常に単にそのビットの最下位ビットを右側へ切り詰め
ることによってゼロに向かって正しく丸めることができ
る。
汎用目的の全加算器として機能する。SRT除算アルゴ
リズムは除数が正であることを必要とする。浮動小数点
除算のために使用される全加算器61は負の除数の2の
補数化を行なうために使用できる。2の補数モード(X
OR)110が全加算器61と共に導入され、制御信号
(DVPLUSONE)に応じて、加算器61により、
入力値が反転され(1の補数)かつ“1”に加算され
る。もし除数および被除数が反対の符号を持っており、
商が負になるべきことを示していれば、最終的な整数の
商(QUOTIENT)の2の補数化を行なうために補
数器110が使用される。加算器61およびXOR 1
10は除数が常に正であることを保証するように動作す
るが、被除数補数器140(図11)は被除数を正の値
にする高速の方法を提供する。整数除算の間に、被除数
をインバータを通すことにより、中間期の商は常に正で
あり、従って、適切に上限および下限の関数を適用する
ための付加的な回路の必要性を除去する。正の商の結果
は常に単にそのビットの最下位ビットを右側へ切り詰め
ることによってゼロに向かって正しく丸めることができ
る。
【0025】除算動作の間の第2のステージ102にお
いては、第1のステージ101(図6)からの部分剰余
の和(PRSUMOUT)およびキャリー(PRCRY
OUT)の結果が除算の反復の終りで加算され被冗長部
分剰余を形成する。第2のステージの回路102はまた
負の整数除数および整数商(もし必要であれば)を2の
補数化するために、そして丸めが必要な場合に浮動小数
点の商を増分するために使用される。全ての和は部分剰
余ラッチ62にラッチされる。第2のステージの回路1
02はまた被冗長部分剰余に対してスティッキー(st
icky)検出を行なう。負の部分剰余に対するスティ
ッキー検出はワイヤードOR(図示せず)の前に、第1
の反復サイクルの間に形成されかつ負の除数ラッチ64
に格納された、負の除数とのビット的(bit−wis
e)なXORを必要とし、これについては、本件と同時
に出願されかつ本件と同じ譲受人に譲渡された、Pau
lC.Rossbachによる、代理人整理番号SC−
01390A、“Ina Data Processo
r An SRT Divider Having a
Negative Divisor Sticky
Detection Circuit”に記載されてい
る。これは、−D倍数に丁度等しい負の部分剰余は正確
な結果を示すために、必要とされる。
いては、第1のステージ101(図6)からの部分剰余
の和(PRSUMOUT)およびキャリー(PRCRY
OUT)の結果が除算の反復の終りで加算され被冗長部
分剰余を形成する。第2のステージの回路102はまた
負の整数除数および整数商(もし必要であれば)を2の
補数化するために、そして丸めが必要な場合に浮動小数
点の商を増分するために使用される。全ての和は部分剰
余ラッチ62にラッチされる。第2のステージの回路1
02はまた被冗長部分剰余に対してスティッキー(st
icky)検出を行なう。負の部分剰余に対するスティ
ッキー検出はワイヤードOR(図示せず)の前に、第1
の反復サイクルの間に形成されかつ負の除数ラッチ64
に格納された、負の除数とのビット的(bit−wis
e)なXORを必要とし、これについては、本件と同時
に出願されかつ本件と同じ譲受人に譲渡された、Pau
lC.Rossbachによる、代理人整理番号SC−
01390A、“Ina Data Processo
r An SRT Divider Having a
Negative Divisor Sticky
Detection Circuit”に記載されてい
る。これは、−D倍数に丁度等しい負の部分剰余は正確
な結果を示すために、必要とされる。
【0026】好ましい実施例においては、キャリールッ
クアヘッド加算器61(図7)はGCLK1*によって
プリチャージされかつGCLK1によって計算する。そ
の結果、キャリールックアヘッド加算器ラッチ60は安
定であり、かつ部分剰余ラッチ62および負除数ラッチ
64はGCLK1に関して透明(transparen
t)である。GCLK1*に対しては、部分剰余ラッチ
62および負除数ラッチ64は安定であり、かつ正およ
び負のスティッキー検出論理、それぞれ、63および6
5、はそれらの計算(evaluation)を行な
う。第2のステージ102(図7)へのデータ入力は第
1のステージからの部分剰余の和およびキャリー結果、
それぞれ、PRSUMOUTおよびPRCRYOUT、
であり、除数(DIVISOR)(2の補数化された除
数または負の整数除算)、および(浮動小数点結果を丸
めている時あるいは符号付き整数結果を2の補数化して
いる時)商(QUOTIENT)である。第2のステー
ジ102の出力は最終的な商に対する実(real)部
分剰余または2の補数化された整数除数(RPR)、正
の部分剰余スティッキービット(DVSTKY*)、負
の部分剰余スティッキービット(NEGSTKY*)、
前記部分剰余の符号を決定するためのキャリールックア
ヘッド加算器の最上位ビット(CLAMSB)、そして
商を丸めまたは2の補数化する際に発生するオーバフロ
ーを識別するためのキャリールックアヘッド加算器のキ
ャリーアウトビット(CLACOUT)である。
クアヘッド加算器61(図7)はGCLK1*によって
プリチャージされかつGCLK1によって計算する。そ
の結果、キャリールックアヘッド加算器ラッチ60は安
定であり、かつ部分剰余ラッチ62および負除数ラッチ
64はGCLK1に関して透明(transparen
t)である。GCLK1*に対しては、部分剰余ラッチ
62および負除数ラッチ64は安定であり、かつ正およ
び負のスティッキー検出論理、それぞれ、63および6
5、はそれらの計算(evaluation)を行な
う。第2のステージ102(図7)へのデータ入力は第
1のステージからの部分剰余の和およびキャリー結果、
それぞれ、PRSUMOUTおよびPRCRYOUT、
であり、除数(DIVISOR)(2の補数化された除
数または負の整数除算)、および(浮動小数点結果を丸
めている時あるいは符号付き整数結果を2の補数化して
いる時)商(QUOTIENT)である。第2のステー
ジ102の出力は最終的な商に対する実(real)部
分剰余または2の補数化された整数除数(RPR)、正
の部分剰余スティッキービット(DVSTKY*)、負
の部分剰余スティッキービット(NEGSTKY*)、
前記部分剰余の符号を決定するためのキャリールックア
ヘッド加算器の最上位ビット(CLAMSB)、そして
商を丸めまたは2の補数化する際に発生するオーバフロ
ーを識別するためのキャリールックアヘッド加算器のキ
ャリーアウトビット(CLACOUT)である。
【0027】本発明によれば、図8に示される、第3の
ステージ103は整数除数および整数除算に対する商に
対して動作する。正の除数は左シフトされて、フォーマ
ット1に示されるように、最も左の“1”ビットを浮動
小数点“H”位置に置かなければならない。この除数の
擬似正規化はSRTアルゴリズムの使用を可能にする。
従って、優先エンコーダ70は、必要な左シフトの量を
識別し、かつそうする上でバレルシフタ72にLEFT
−SHIFT制御信号を与え、それによってバレルシフ
タ72が正の整数除数に対して算術的左シフトを行なう
ことができるようにする。従って、商は商結果を適切に
整列するために31から元の左シフト量を減算したもの
に等しい量だけ右シフトされる。もし、除数および被除
数が反対の符号を持っておれば、商は、第3のステージ
103に送られた後、前記第2のステージ102(図
7)において再び、その符号を変えるために2の補数化
されなければならない。
ステージ103は整数除数および整数除算に対する商に
対して動作する。正の除数は左シフトされて、フォーマ
ット1に示されるように、最も左の“1”ビットを浮動
小数点“H”位置に置かなければならない。この除数の
擬似正規化はSRTアルゴリズムの使用を可能にする。
従って、優先エンコーダ70は、必要な左シフトの量を
識別し、かつそうする上でバレルシフタ72にLEFT
−SHIFT制御信号を与え、それによってバレルシフ
タ72が正の整数除数に対して算術的左シフトを行なう
ことができるようにする。従って、商は商結果を適切に
整列するために31から元の左シフト量を減算したもの
に等しい量だけ右シフトされる。もし、除数および被除
数が反対の符号を持っておれば、商は、第3のステージ
103に送られた後、前記第2のステージ102(図
7)において再び、その符号を変えるために2の補数化
されなければならない。
【0028】好ましい実施例においては、スタティック
優先エンコーダ70はGCLK1*およびT1に対して
計算を行なう。双方向シフタ72はGCLK2*に対し
てプリチャージされかつGCLK2に対して計算する。
第3のステージ103への入力は、正の整数除数を保持
する、部分除数ラッチ62の出力、商、および商を右シ
フトするための量である。該出力は、FLTIDIV/
IDIVRES バス77に転送される、浮動整数除数
(FLTIDIV)または整数商結果(IDIVIRE
S)、および除数が左シフトされる量である。
優先エンコーダ70はGCLK1*およびT1に対して
計算を行なう。双方向シフタ72はGCLK2*に対し
てプリチャージされかつGCLK2に対して計算する。
第3のステージ103への入力は、正の整数除数を保持
する、部分除数ラッチ62の出力、商、および商を右シ
フトするための量である。該出力は、FLTIDIV/
IDIVRES バス77に転送される、浮動整数除数
(FLTIDIV)または整数商結果(IDIVIRE
S)、および除数が左シフトされる量である。
【0029】図9に示される第4のステージ104にお
いては、商レジスタQおよびQ−1レジスタ、それぞ
れ、66Aおよび66B、は、それぞれ、正および負の
最終部分剰余に対する商を構築する。前に示したよう
に、該商は基数−2の商(q0,q1,q2)に基づき
1度に3ビット構築される。基数−8の3ビットの商が
形成されかつQおよびQ−1レジスタ、それぞれ、66
Aおよび66B、の、結果の精度に対応するビット位置
に、挿入される(シングル −S、ダブル −D、拡張
−X、または整数 −1)。従って、マルチプレクサ
120および124は除算操作の精度(PRECS)に
応じて、QおよびQ−1レジスタ66Aおよび66B、
の別々の位置に3ビットをロードするのみである。これ
らの3ビットは制御論理37(図2および図3)におけ
る減算回路(図示せず)によって発生される。第4のス
テージ104においては、商QおよびQ−1の双方は部
分剰余が負であった場合に商を減分する必要性を避ける
ために形成される。QおよびQ−1の商は部分剰余が第
1のステージ101において形成されるのと同じGLC
K1サイクル、すなわち、商選択回路38が図12およ
び図13に示されるように3つの基数−2の商を選択し
た後のクロックサイクル、に形成される。次の表1には
全ての基数−8のQおよびQ−1(“QM1”と表され
る)の商に対する適切な形成を示す。
いては、商レジスタQおよびQ−1レジスタ、それぞ
れ、66Aおよび66B、は、それぞれ、正および負の
最終部分剰余に対する商を構築する。前に示したよう
に、該商は基数−2の商(q0,q1,q2)に基づき
1度に3ビット構築される。基数−8の3ビットの商が
形成されかつQおよびQ−1レジスタ、それぞれ、66
Aおよび66B、の、結果の精度に対応するビット位置
に、挿入される(シングル −S、ダブル −D、拡張
−X、または整数 −1)。従って、マルチプレクサ
120および124は除算操作の精度(PRECS)に
応じて、QおよびQ−1レジスタ66Aおよび66B、
の別々の位置に3ビットをロードするのみである。これ
らの3ビットは制御論理37(図2および図3)におけ
る減算回路(図示せず)によって発生される。第4のス
テージ104においては、商QおよびQ−1の双方は部
分剰余が負であった場合に商を減分する必要性を避ける
ために形成される。QおよびQ−1の商は部分剰余が第
1のステージ101において形成されるのと同じGLC
K1サイクル、すなわち、商選択回路38が図12およ
び図13に示されるように3つの基数−2の商を選択し
た後のクロックサイクル、に形成される。次の表1には
全ての基数−8のQおよびQ−1(“QM1”と表され
る)の商に対する適切な形成を示す。
【表1】 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− q(k+1) Q[k+1] QM1[k+1] −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 7 { (QM1[k],0,0,1) (QM1[k],0,0,0]) } -6 { (QM1[k],0,1,0) (QM1[k],0,0,1]) } -5 { (QM1[k],0,1,1) (QM1[k], 0,1,0])} -4 クロス { (QM1[k],1,0,0) (QM1[k], 0,1,1])} シフト -3 ロード { (QM1[k],1,0,1) (QM1[k], 1,0,0])} -2 { (QM1[k],1,1,0) (QM1[k], 1,0,1])} -1 { (QM1[k],1,1,1) (QM1[k], 1,1,0])} −−−−−−−−−−−−−−−− 0 { (Q[k],0,0,0) (QM1[k],1,1,1]) } −−−−−−−−−−−−−− 1 { (Q[k],0,0,1) (Q[k], 0,0,0])} 2 { (Q[k],0,1,0) (Q[k], 0,0,1])} 3 { (Q[k],0,1,1) (Q[k], 0,1,0])} 4 シフト { (Q[k],1,0,0) (Q[k], 0,1,1])]} クロス 5 { (Q[k],1,0,1) (Q[k], 1,0,0])} ロード 6 { (Q[k],1,1,0) (Q[k], 1,0,1])} 7 { (Q[k],1,1,1) (Q[k], 1,1,0])} −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
【0030】QおよびQ−1(“QM1”)の商の値は
シフト(SHIFT)制御信号に応じて、それぞれ、レ
ジスタ66Aおよび66Bを3つのビット位置だけ「シ
フトする」ことによりかつ結果の精度によって決定され
るポイントにおいて次の3ビットの商を付加することに
より形成される。あるいは、前記QおよびQ−1の商の
値はクロスロード(CROSS−LOADING)信号
に応じて、1つのレジスタ(すなわち、66B)に格納
された値を、図9に示されるように他のもの(すなわち
66A)に「クロスロードする」ことにより形成され
る。伝統的な様式では、QおよびQ−1の次の3つの低
位のビットは制御論理37における減算器(図示せず)
から得られ、これらは3ビットの2進数(Q0,Q1,
Q2)および3ビットの2進数から1を減算したもの
(QM0,QM1,QM2)を3つの基数−2商ビット
(q0,q1,q2)から形成する。従って、制御論理
37はレジスタ66Aおよび66Bに格納された値を左
シフトすべきかあるいはレジスタ66Bに格納された値
を66Aにクロスロードすべきかを決定するための情報
を提供する。
シフト(SHIFT)制御信号に応じて、それぞれ、レ
ジスタ66Aおよび66Bを3つのビット位置だけ「シ
フトする」ことによりかつ結果の精度によって決定され
るポイントにおいて次の3ビットの商を付加することに
より形成される。あるいは、前記QおよびQ−1の商の
値はクロスロード(CROSS−LOADING)信号
に応じて、1つのレジスタ(すなわち、66B)に格納
された値を、図9に示されるように他のもの(すなわち
66A)に「クロスロードする」ことにより形成され
る。伝統的な様式では、QおよびQ−1の次の3つの低
位のビットは制御論理37における減算器(図示せず)
から得られ、これらは3ビットの2進数(Q0,Q1,
Q2)および3ビットの2進数から1を減算したもの
(QM0,QM1,QM2)を3つの基数−2商ビット
(q0,q1,q2)から形成する。従って、制御論理
37はレジスタ66Aおよび66Bに格納された値を左
シフトすべきかあるいはレジスタ66Bに格納された値
を66Aにクロスロードすべきかを決定するための情報
を提供する。
【0031】好ましい実施例においては、いったんQお
よびQ−1の商が形成されると、その結果は正規化マル
チプレクサ、それぞれ、122および126によりかつ
ガード/丸めビットマスカ128によりラッチ168に
送られる。各々の結果QおよびQ−1は、それぞれのレ
ジスタ66Aおよび66Bに記憶されたヒドン(H)ビ
ットの値に基づき独立に正規化される。もし前記Hビッ
トが“0”であれば、出力は左シフトされ、もし前記H
ビットが“1”であれば、結果はそのまま出力される。
従って、必要なことは1つのビット位置の正規化のみで
ある。拡張精度より小さな浮動小数点除算結果のサイズ
に対しては、最下位ビットの右側の全てのビットはQお
よびQ−1の商が構築されている場合に“1”にセット
される。これは丸めのより容易な実現を可能にするが、
その理由は加算器の「キャリーイン」が全ての精度に対
して使用できるからである。しかしながら、マスカ回路
122がレジスタ66Aおよび66Bに形成されるガー
ド(G)、丸め(R)、および2つまでのスティッキー
(S)ビット(集合的に“GRS”ビットと称される)
をセットするために必要とされる。GRSビットはそれ
らがマスキング動作の結果として失われないことを保証
するために制御論理37に記憶される。GRSビットは
商構築論理を簡単にするためにのみレジスタ66Aおよ
び66Bに入力される。ラッチ68に導かれる制御信号
は部分剰余の符号に基づきレジスタ66Aおよび66B
を選択する。浮動小数点除算結果が丸められた時、ラッ
チ68はQまたはQ−1の初期選択に続くサイクルでラ
ッチ62(図6)からの実(real)部分剰余(RP
R)を選択することになる。
よびQ−1の商が形成されると、その結果は正規化マル
チプレクサ、それぞれ、122および126によりかつ
ガード/丸めビットマスカ128によりラッチ168に
送られる。各々の結果QおよびQ−1は、それぞれのレ
ジスタ66Aおよび66Bに記憶されたヒドン(H)ビ
ットの値に基づき独立に正規化される。もし前記Hビッ
トが“0”であれば、出力は左シフトされ、もし前記H
ビットが“1”であれば、結果はそのまま出力される。
従って、必要なことは1つのビット位置の正規化のみで
ある。拡張精度より小さな浮動小数点除算結果のサイズ
に対しては、最下位ビットの右側の全てのビットはQお
よびQ−1の商が構築されている場合に“1”にセット
される。これは丸めのより容易な実現を可能にするが、
その理由は加算器の「キャリーイン」が全ての精度に対
して使用できるからである。しかしながら、マスカ回路
122がレジスタ66Aおよび66Bに形成されるガー
ド(G)、丸め(R)、および2つまでのスティッキー
(S)ビット(集合的に“GRS”ビットと称される)
をセットするために必要とされる。GRSビットはそれ
らがマスキング動作の結果として失われないことを保証
するために制御論理37に記憶される。GRSビットは
商構築論理を簡単にするためにのみレジスタ66Aおよ
び66Bに入力される。ラッチ68に導かれる制御信号
は部分剰余の符号に基づきレジスタ66Aおよび66B
を選択する。浮動小数点除算結果が丸められた時、ラッ
チ68はQまたはQ−1の初期選択に続くサイクルでラ
ッチ62(図6)からの実(real)部分剰余(RP
R)を選択することになる。
【0032】好ましい実施例においては、除算動作の間
に、図9に示される、除算器30の第4のステージ10
4は前記第1のステージ101および商選択回路38と
同様にGCLK1サイクルで動作する。レジスタ66A
および66Bは、それぞれ、2×1マルチプレクサ12
0および124からの並列ロードを有するマスタ/スレ
ーブ・シフトバイスリー(shift−by−thre
e)レジスタである。マスタラッチ(図示せず)はGC
LK1*の間透明でありかつスレーブラッチ(図示せ
ず)はGCLK1の間透明である。レジスタ66Aおよ
び66Bは反復ループが制御論理37の制御の下に終了
するまで商ビットをシフト/ロードし続ける。その時点
で、商レジスタ(GCLK*ステーブル)の出力はそれ
らのヒドンビットの値に基づき正規化される。GCLK
2の間に、QまたはQ−1が第2のステージ102で行
なわれる部分剰余加算の結果の符号に基づきラッチ68
で選択される。また、引き続きGCLK2のサイクルの
間に、マルチプレクサ68は(丸めを必要とする浮動小
数点除算に対する)RPRまたは(シフトされた後の整
数の商に対する)IDIVRESの結果を選択する。ホ
ールド(HOLD)信号に応じて、ラッチ68は第5の
ステージ105に送るためにRPRまたはIDIVRE
Sを記憶する。
に、図9に示される、除算器30の第4のステージ10
4は前記第1のステージ101および商選択回路38と
同様にGCLK1サイクルで動作する。レジスタ66A
および66Bは、それぞれ、2×1マルチプレクサ12
0および124からの並列ロードを有するマスタ/スレ
ーブ・シフトバイスリー(shift−by−thre
e)レジスタである。マスタラッチ(図示せず)はGC
LK1*の間透明でありかつスレーブラッチ(図示せ
ず)はGCLK1の間透明である。レジスタ66Aおよ
び66Bは反復ループが制御論理37の制御の下に終了
するまで商ビットをシフト/ロードし続ける。その時点
で、商レジスタ(GCLK*ステーブル)の出力はそれ
らのヒドンビットの値に基づき正規化される。GCLK
2の間に、QまたはQ−1が第2のステージ102で行
なわれる部分剰余加算の結果の符号に基づきラッチ68
で選択される。また、引き続きGCLK2のサイクルの
間に、マルチプレクサ68は(丸めを必要とする浮動小
数点除算に対する)RPRまたは(シフトされた後の整
数の商に対する)IDIVRESの結果を選択する。ホ
ールド(HOLD)信号に応じて、ラッチ68は第5の
ステージ105に送るためにRPRまたはIDIVRE
Sを記憶する。
【0033】従って、図8に示されるように、除算器3
0の第4のステージ104は商(Q)レジスタ66A、
商マイナス1(Q−1)レジスタ66B、そして商マル
チプレクサ67およびラッチ68を含む。従って、第4
のステージ104への入力は制御(CNTRL,SHI
FT/LOAD)および商(SUB)ビットであり、こ
れらは、それぞれ、レジスタ66Aおよび66Bにおい
て、QおよびQ−1の商を適切に構築するために制御論
理37によって発生される。好ましい実施例において
は、これらの入力は前記結果において正しいシグニフィ
カンス(ビット位置)で入力されるために制御論理37
からデータ経路の全長まで進行しなければならない。第
4のステージ104への付加的な入力はライトバック・
バス66へのそれらの転送までラッチ68を共有するラ
ッチ62からの冗長部分剰余(RPR)である。第4の
ステージ104の主な出力は商結果(QUOTIEN
T)である。他の出力はQおよびQ−1の双方に対する
制御論理37へのヒドン(HIDDEN Q、およびH
IDDEN Q−1)および最下位ビット(LSB)で
ある。
0の第4のステージ104は商(Q)レジスタ66A、
商マイナス1(Q−1)レジスタ66B、そして商マル
チプレクサ67およびラッチ68を含む。従って、第4
のステージ104への入力は制御(CNTRL,SHI
FT/LOAD)および商(SUB)ビットであり、こ
れらは、それぞれ、レジスタ66Aおよび66Bにおい
て、QおよびQ−1の商を適切に構築するために制御論
理37によって発生される。好ましい実施例において
は、これらの入力は前記結果において正しいシグニフィ
カンス(ビット位置)で入力されるために制御論理37
からデータ経路の全長まで進行しなければならない。第
4のステージ104への付加的な入力はライトバック・
バス66へのそれらの転送までラッチ68を共有するラ
ッチ62からの冗長部分剰余(RPR)である。第4の
ステージ104の主な出力は商結果(QUOTIEN
T)である。他の出力はQおよびQ−1の双方に対する
制御論理37へのヒドン(HIDDEN Q、およびH
IDDEN Q−1)および最下位ビット(LSB)で
ある。
【0034】本発明によれば、除算器30の第5のステ
ージ105(図10)は例外仮数結果を処理し、商結果
(QUOTIENT)をデータ処理システム10のレジ
スタファイルフォーマットに再整列し(realign
s)、かつライトバック・バス34がGCLK2の間に
駆動されることを保証する。従って、商(QUOTIE
NT)はGCLK2*の間安定でありかつ例外マルチプ
レクサ69を通って渡され、整列解除され(unali
gned)かつ同じフェーズの間にライトバック・マル
チプレクサラッチに供給される。非整列の商はラッチさ
れかつシーケンサ12が除算器ライトバック・バス承認
信号を提供した時前記GCLK2フェーズに到達するラ
イトバック・イネーブル(図示せず)に対しGLCK2
に対して安定である。第5のステージ105への入力は
内部浮動小数点ユニットフォーマットの商(QUOTI
ENT)であり、かつ出力は再整列された商またはライ
トバック・バス34上の適切な例外/SLZ値である。
ージ105(図10)は例外仮数結果を処理し、商結果
(QUOTIENT)をデータ処理システム10のレジ
スタファイルフォーマットに再整列し(realign
s)、かつライトバック・バス34がGCLK2の間に
駆動されることを保証する。従って、商(QUOTIE
NT)はGCLK2*の間安定でありかつ例外マルチプ
レクサ69を通って渡され、整列解除され(unali
gned)かつ同じフェーズの間にライトバック・マル
チプレクサラッチに供給される。非整列の商はラッチさ
れかつシーケンサ12が除算器ライトバック・バス承認
信号を提供した時前記GCLK2フェーズに到達するラ
イトバック・イネーブル(図示せず)に対しGLCK2
に対して安定である。第5のステージ105への入力は
内部浮動小数点ユニットフォーマットの商(QUOTI
ENT)であり、かつ出力は再整列された商またはライ
トバック・バス34上の適切な例外/SLZ値である。
【0035】次の表2に示されるように、除算器30を
通るデータフローは2つの主な経路に従い、一方は浮動
小数点除算に対するものであり、かつ他方は整数除算に
対するものである。
通るデータフローは2つの主な経路に従い、一方は浮動
小数点除算に対するものであり、かつ他方は整数除算に
対するものである。
【表2】 浮動小数点 整数 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− クロック(単数または複数) クロック(単数または複数) 1 ラッチオペランド/MSB 1 ラッチオペランド オペランドチェックを行なう ラッチ除数 2 第1の組の商(q)ビットを選択 2 除数を2の補数化する 3−11 反復ループに入る 3 除数をデコード、 商及びPR形成 バレルシフトおよびラッチ 12 (+/−)PRおよび 4 第1の組の商ビットを選択 スティッキービットを決定 Q/Q−1を正規化、Qまたは Q−1選択 13 商丸め、オーバフロー検出 5−15 反復ループに入る 商再整列、商ラッチ 商およびPR形成 14 商をライトバック 16 (+/−)PRを決定、 Q/Q−1正規化、 QまたはQ−1選択 17 商を2の補数化/ラッチ 18 商を再整列、ラッチ 19 商をライトバック −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
【0036】図12は、浮動小数点除算に対して除算器
30によって行なわれる動作のシーケンスを示すタイミ
ング図142である。同様に、図13は整数除算に対し
て除算器30によって行なわれる動作のシーケンスを示
すタイミング図144である。
30によって行なわれる動作のシーケンスを示すタイミ
ング図142である。同様に、図13は整数除算に対し
て除算器30によって行なわれる動作のシーケンスを示
すタイミング図144である。
【0037】タイミング図142によって示されるよう
に、第1のクロックインターバルの間に被除数および除
数(すなわち、S1およびS2)は、それぞれ、ラッチ
46および53によってラッチされる。除数は除算動作
の全期間の間ラッチ53に格納されたままになる。商選
択回路32(図2および図3)は、第1のサイクルの間
に、被除数の上位ビット(MSB)を調べ、かつ第2の
サイクルの間に最初の3つの商デジット(q0,q1,
q2)を発生する。図12に示されるように、除算器3
0は第3のサイクルにおいて反復ループに入る。反復ク
ロックサイクル3〜11の間に、商ビットは商選択回路
38によって累積され、一方部分剰余形成論理56は前
記商ビットおよびラッチ53に格納された除数を使用し
て冗長キャリー−セーブ形式で中間部分剰余を形成す
る。
に、第1のクロックインターバルの間に被除数および除
数(すなわち、S1およびS2)は、それぞれ、ラッチ
46および53によってラッチされる。除数は除算動作
の全期間の間ラッチ53に格納されたままになる。商選
択回路32(図2および図3)は、第1のサイクルの間
に、被除数の上位ビット(MSB)を調べ、かつ第2の
サイクルの間に最初の3つの商デジット(q0,q1,
q2)を発生する。図12に示されるように、除算器3
0は第3のサイクルにおいて反復ループに入る。反復ク
ロックサイクル3〜11の間に、商ビットは商選択回路
38によって累積され、一方部分剰余形成論理56は前
記商ビットおよびラッチ53に格納された除数を使用し
て冗長キャリー−セーブ形式で中間部分剰余を形成す
る。
【0038】第12番目のクロックサイクルの間に、除
算器30は正または負の(+/−)実(最終的な)部分
剰余を決定する。該正および負のスティッキー検出器、
それぞれ63および65、は図7に示されているが、商
の正確さを判定する。同時に、正の最終的な部分剰余に
対する商の値(Q)がQレジスタ66A(図9)に累積
され、一方負の最終的な部分剰余に対する商の値(Q−
1)はQ−1レジスタ66B(図9)に累積される。前
に述べたように、商の値QおよびQ−1は正規化され、
選択されかつラッチ68にラッチされる。第13のクロ
ックサイクルの間に、選択された商の値QまたはQ−1
は丸め回路76の制御の下に丸められる。マルチプレク
サ73は次に選択された商QまたはQ−1をライトバッ
ク・ドライバ74に整列しかつ導く。除算器30は前記
再整列された商の値をライトバック・バス34に転送す
る。
算器30は正または負の(+/−)実(最終的な)部分
剰余を決定する。該正および負のスティッキー検出器、
それぞれ63および65、は図7に示されているが、商
の正確さを判定する。同時に、正の最終的な部分剰余に
対する商の値(Q)がQレジスタ66A(図9)に累積
され、一方負の最終的な部分剰余に対する商の値(Q−
1)はQ−1レジスタ66B(図9)に累積される。前
に述べたように、商の値QおよびQ−1は正規化され、
選択されかつラッチ68にラッチされる。第13のクロ
ックサイクルの間に、選択された商の値QまたはQ−1
は丸め回路76の制御の下に丸められる。マルチプレク
サ73は次に選択された商QまたはQ−1をライトバッ
ク・ドライバ74に整列しかつ導く。除算器30は前記
再整列された商の値をライトバック・バス34に転送す
る。
【0039】本発明によれば、除算器30の動作のシー
ケンスは整数除算動作の実行中にやや修正される。図1
3に示されるように、反復ループの前および後に付加的
な動作を行なわなければならない。該付加的な動作は整
数の除数および被除数の値が適切に除算器30の除算器
仮数データ経路部30(図2および図3)によって使用
されるのに適したフォーマットに整列されることを保証
する。従って、除算器30は整数除数および被除数値を
SRTアルゴリズムが浮動小数点仮数に対して要求する
データ経路表現に再構築するための一連の動作を行な
う。
ケンスは整数除算動作の実行中にやや修正される。図1
3に示されるように、反復ループの前および後に付加的
な動作を行なわなければならない。該付加的な動作は整
数の除数および被除数の値が適切に除算器30の除算器
仮数データ経路部30(図2および図3)によって使用
されるのに適したフォーマットに整列されることを保証
する。従って、除算器30は整数除数および被除数値を
SRTアルゴリズムが浮動小数点仮数に対して要求する
データ経路表現に再構築するための一連の動作を行な
う。
【0040】タイミング図144によって示されるよう
に、第1のクロックサイクルの間に、整数被除数および
除数値(すなわちS1およびS2)は、それぞれラッチ
46および53によってラッチされる。入力される整数
除数は第1のクロックサイクルの間にキャリールックア
ヘッドラッチ60(図7)にラッチされる。SRTアル
ゴリズムは少なくとも除数が正規化されることを必要と
する。その結果、第2および第3のクロックサイクルの
間に、入力される負の除数は第2のステージ102(図
7)において2の補数化され、かつ次に第3のステージ
103(図8)において優先エンコードおよび左シフト
により正規化されなければならない。この動作のシーケ
ンスは前に述べた浮動整数除数(FLTIDIV)を生
成する。第3のサイクルの間に、浮動整数除数はラッチ
53に戻ってラッチされる。整数除算動作は次に浮動小
数点除算動作について上に述べたようにして進行する。
従って、最初の3つの商ビットは第4のクロックサイク
ルの間に発生され、かつ除算器30は第5のクロックサ
イクルにおいて反復ループに入る。
に、第1のクロックサイクルの間に、整数被除数および
除数値(すなわちS1およびS2)は、それぞれラッチ
46および53によってラッチされる。入力される整数
除数は第1のクロックサイクルの間にキャリールックア
ヘッドラッチ60(図7)にラッチされる。SRTアル
ゴリズムは少なくとも除数が正規化されることを必要と
する。その結果、第2および第3のクロックサイクルの
間に、入力される負の除数は第2のステージ102(図
7)において2の補数化され、かつ次に第3のステージ
103(図8)において優先エンコードおよび左シフト
により正規化されなければならない。この動作のシーケ
ンスは前に述べた浮動整数除数(FLTIDIV)を生
成する。第3のサイクルの間に、浮動整数除数はラッチ
53に戻ってラッチされる。整数除算動作は次に浮動小
数点除算動作について上に述べたようにして進行する。
従って、最初の3つの商ビットは第4のクロックサイク
ルの間に発生され、かつ除算器30は第5のクロックサ
イクルにおいて反復ループに入る。
【0041】整数除算(QまたはQ−1)の商は第4の
ステージ104(図9)において生成される。前に示し
たように、反復ループの後に付加的な動作を行わなけれ
ばならない。従って、第17番目のクロックサイクルの
間に、選択された商(QまたはQ−1)は第3のステー
ジ103(図8)において31から除数の左シフト分を
減算したのに等しい量だけ右シフトされ、かつ第2のス
テージ102において2の補数化される(もし除数およ
び被除数が同じ符号をもっておれば通過される)。この
動作のシーケンスは整数除算の商を生成する。第18番
目のクロックサイクルの間に、整数除算の商はラッチ6
8にラッチされる。該整数除算の商は次にマルチプレク
サ73によって適切な内部データフォーマットに再整列
される。再整列の後に、前記整数除算の商はライトバッ
ク・ドライバ74(図3)に導かれかつ第19番目のク
ロックサイクルの間にライトバック・バス34に転送さ
れる。
ステージ104(図9)において生成される。前に示し
たように、反復ループの後に付加的な動作を行わなけれ
ばならない。従って、第17番目のクロックサイクルの
間に、選択された商(QまたはQ−1)は第3のステー
ジ103(図8)において31から除数の左シフト分を
減算したのに等しい量だけ右シフトされ、かつ第2のス
テージ102において2の補数化される(もし除数およ
び被除数が同じ符号をもっておれば通過される)。この
動作のシーケンスは整数除算の商を生成する。第18番
目のクロックサイクルの間に、整数除算の商はラッチ6
8にラッチされる。該整数除算の商は次にマルチプレク
サ73によって適切な内部データフォーマットに再整列
される。再整列の後に、前記整数除算の商はライトバッ
ク・ドライバ74(図3)に導かれかつ第19番目のク
ロックサイクルの間にライトバック・バス34に転送さ
れる。
【0042】従って、本発明においては、整数に対する
SRT除算は始めに、アライメントマルチプレクサ43
および44によって、整数のオペランド値を必要なフォ
ーマット、すなわちフォーマット2(符号なしの整数)
またはフォーマット3(符号付きの整数)、に整列する
ことにより達成される。SRTアルゴリズムは除数が正
の値であることを必要とし、従って、負の入力除数はC
LA加算器61によって2の補数化される。優先エンコ
ーダ70およびバレルシフタ72は除数を「擬似正規
化」するよう動作して最も左の“1”ビットを浮動小数
点の“H”位置に配置する。従って、優先エンコーダ7
0は除数が左シフトされなければならない必要量を決定
し、かつバレルシフタ72は除数に対し算術的左シフト
を行う。バレルシフタ72はまた算術的右シフトを正の
整数の商に対して31から元の左シフト量を減算したも
のに等しい量だけ算術的右シフトを行い商結果が適切な
大きさであることを保証する。
SRT除算は始めに、アライメントマルチプレクサ43
および44によって、整数のオペランド値を必要なフォ
ーマット、すなわちフォーマット2(符号なしの整数)
またはフォーマット3(符号付きの整数)、に整列する
ことにより達成される。SRTアルゴリズムは除数が正
の値であることを必要とし、従って、負の入力除数はC
LA加算器61によって2の補数化される。優先エンコ
ーダ70およびバレルシフタ72は除数を「擬似正規
化」するよう動作して最も左の“1”ビットを浮動小数
点の“H”位置に配置する。従って、優先エンコーダ7
0は除数が左シフトされなければならない必要量を決定
し、かつバレルシフタ72は除数に対し算術的左シフト
を行う。バレルシフタ72はまた算術的右シフトを正の
整数の商に対して31から元の左シフト量を減算したも
のに等しい量だけ算術的右シフトを行い商結果が適切な
大きさであることを保証する。
【0043】本発明が好ましい実施例に関して説明され
たが、当業者には本発明は数多くの方法で実施できるこ
とが理解されるべきである。例えば、本発明は基数に関
係なくSRT除算において整数および浮動小数点除算を
組合わせたものに使用できる。従って、添付の特許請求
の範囲により本発明の真の精神および範囲内にある本発
明のすべての変形をカバーするものと考えている。
たが、当業者には本発明は数多くの方法で実施できるこ
とが理解されるべきである。例えば、本発明は基数に関
係なくSRT除算において整数および浮動小数点除算を
組合わせたものに使用できる。従って、添付の特許請求
の範囲により本発明の真の精神および範囲内にある本発
明のすべての変形をカバーするものと考えている。
【0044】
【発明の効果】以上のように、本発明によれば、データ
プロセッサにおいて単一のSRT除算器を使用しても効
率良く整数および浮動小数点除算を行うことが可能にな
る。
プロセッサにおいて単一のSRT除算器を使用しても効
率良く整数および浮動小数点除算を行うことが可能にな
る。
【図1】本発明の好ましい実施例に係わる組合わされた
浮動小数点および整数SRT除算器を有するデータ処理
システムを示すブロック図である。
浮動小数点および整数SRT除算器を有するデータ処理
システムを示すブロック図である。
【図2】本発明の好ましい実施例に係わる多段組合わせ
浮動小数点および整数SRT除算器の第1の部分を示す
ブロック図である。
浮動小数点および整数SRT除算器の第1の部分を示す
ブロック図である。
【図3】本発明の好ましい実施例に係わる多段組合わせ
浮動小数点および整数SRT除算器の第2の部分を示す
ブロック図である。
浮動小数点および整数SRT除算器の第2の部分を示す
ブロック図である。
【図4】図2および図3の適切な組合わせ方向を示す説
明図である。
明図である。
【図5】本発明の好ましい実施例に係わる図2および図
3の組合わされた浮動小数点および整数SRT除算器の
0番目のステージを示す部分的回路図である。
3の組合わされた浮動小数点および整数SRT除算器の
0番目のステージを示す部分的回路図である。
【図6】本発明の好ましい実施例に係わる図2および図
3の組合わされた浮動小数点および整数SRT除算器の
第1のステージを示すブロック図である。
3の組合わされた浮動小数点および整数SRT除算器の
第1のステージを示すブロック図である。
【図7】本発明の好ましい実施例に係わる図2および図
3の組合わされた浮動小数点および整数SRT除算器の
第2のステージを示す部分的回路図である。
3の組合わされた浮動小数点および整数SRT除算器の
第2のステージを示す部分的回路図である。
【図8】本発明の好ましい実施例に係わる図2および図
3の組合わされた浮動小数点および整数SRT除算器の
第3のステージを示すブロック図である。
3の組合わされた浮動小数点および整数SRT除算器の
第3のステージを示すブロック図である。
【図9】本発明の好ましい実施例に係わる図2および図
3の組合わされた浮動小数点および整数SRT除算器の
第4のステージを示すブロック図である。
3の組合わされた浮動小数点および整数SRT除算器の
第4のステージを示すブロック図である。
【図10】本発明の好ましい実施例に係わる図2および
図3の組合わされた浮動小数点および整数SRT除算器
の第5のステージを示す回路図である。
図3の組合わされた浮動小数点および整数SRT除算器
の第5のステージを示す回路図である。
【図11】本発明の好ましい実施例に係わる図2および
図3の組合わされた浮動小数点および整数SRT除算器
の第2のステージ(図5)において使用するための被除
数補数器を示す回路図である。
図3の組合わされた浮動小数点および整数SRT除算器
の第2のステージ(図5)において使用するための被除
数補数器を示す回路図である。
【図12】本発明の好ましい実施例に係わる、浮動小数
点除算動作の間に組合わされた浮動小数点および整数S
RT除算器によって行われる一連の動作を示すタイミン
グ図である。
点除算動作の間に組合わされた浮動小数点および整数S
RT除算器によって行われる一連の動作を示すタイミン
グ図である。
【図13】本発明の好ましい実施例に係わる、整数除算
動作の間に前記組合わされた浮動小数点および整数SR
T除算器によって行われる一連の動作を示すタイミング
図である。
動作の間に前記組合わされた浮動小数点および整数SR
T除算器によって行われる一連の動作を示すタイミング
図である。
10 データ処理システム 12 命令シーケンサ 14 命令キャッシュ 16 データキャッシュ 18 バスインタフェースユニット 20 メモリ 22 ロードストアユニット 24 整数ユニット 26 汎用レジスタファイル 28 拡張レジスタファイル 30 浮動小数点および整数除算ユニット 31 乗算ユニット 32 加算ユニット 33 ソースバス 34 ライトバックバス 36 仮数データ経路部 37 除算器制御論理 38 商選択回路 40 指数パイプライン 100 除算器30のゼロステージ 101 除算器30の第1のステージ 102 除算器30の第2のステージ 103 除算器30の第3のステージ 104 除算器30の第4のステージ 105 除算器30の第5のステージ
Claims (3)
- 【請求項1】 シーケンサ(12)によって発行される
複数の除算命令を実行するための反復除算ユニット(3
0)、および複数のデータオペランドを記憶するための
記憶ユニット(26)を有するデータプロセッサ(1
0)における、前記除算ユニット(30)において整数
および浮動小数点SRT除算を行う方法であって、 前記記憶ユニット(26)から読出された、第1のデー
タオペランドおよび第2のデータオペランドを前記除算
ユニット(30)によって行われるべき除算操作の形式
に基づき所定のデータフォーマットに整列する段階、 前記除算操作の前記形式が整数除算である場合に、前記
第1のデータオペランドの2の補数を計算し、かつ前記
第1のデータオペランドの前記2の補数を正規化して浮
動整数除数を生成する段階、 第1の組の商ビットを発生しかつ各クロックサイクルに
複数の引続く組の商ビットの1つを反復的に累算し、そ
れによって所定の数の商の値を形成し、一方同時に前記
引続く組の商ビットおよび前記浮動整数除数を使用して
複数の中間冗長部分剰余を形成する段階、 前記所定の数の商の値の各々を、前記所定のデータフォ
ーマットに、正規化して所定の数の正規化された商の値
を形成しかつ前記所定の数の正規化された商の値の1つ
を商結果となるよう選択する段階、 前記商結果を所定の数のビット位置だけシフトして前記
商結果の適切な大きさの表現を提供する段階、そして前
記除算操作の前記形式が前記整数除算である場合に、前
記商結果の2の補数を計算して整数除算の商を形成する
段階、 を具備することを特徴とする前記除算ユニット(30)
において整数および浮動小数点SRT除算を行う方法。 - 【請求項2】 シーケンサ(12)によって発行される
複数の除算命令を実行するための反復除算ユニット(3
0)、および複数のテータオペランドを記憶するための
記憶ユニット(26)を有するデータプロセッサ(1
0)における、前記除算ユニット(30)を使用して整
数および浮動小数点SRT除算を行う方法であって、 前記記憶ユニット(26)から読出された、第1のデー
タオペランドおよび第2のデータオペランドを前記除算
ユニット(30)によって行われるべき除算操作の形式
に基づき所定のデータフォーマットに整列する段階、 前記除算操作の前記形式が整数除算である場合に、前記
第1のデータオペランドの2の補数を計算し、かつ前記
第1のデータオペランドの前記2の補数を正規化して浮
動整数除数を生成する段階、 第1の組の商ビットを発生しかつ各クロックサイクルに
複数の引続く組の商ビットの1つを反復的に累算し、そ
れによって所定の数の商の値を形成し、一方同時に前記
引続く組の商ビットおよび前記第1のデータオペランド
を使用して複数の中間冗長部分剰余を形成する段階、 前記所定の数の商の値の各々を、前記所定のデータフォ
ーマットに、正規化して所定の数の正規化された商の値
を形成しかつ前記所定の数の正規化された商の値の1つ
を商結果となるよう選択する段階、 前記商結果を所定の数のビット位置だけシフトして前記
商結果の適切な大きさの表現を提供する段階、 前記除算操作の前記形式が前記整数除算である場合に、
前記商結果の2の補数を計算して整数除算の商を形成す
る段階、そして前記整数除算の商を前記記憶ユニット
(26)において記憶するために前記データプロセッサ
の内部フォーマットに再整列する段階、 を具備することを特徴とする前記除算ユニット(30)
を使用して整数および浮動小数点SRT除算を行う方
法。 - 【請求項3】 データプロセッサ(10)における、シ
ーケンサ(12)によって発行される複数の除算命令を
実行するための反復除算ユニット(30)であって、該
除算ユニット(30)は、前記シーケンサ(12)の制
御のもとで、記憶ユニット(26)から複数のデータオ
ペランドを受入れかつ前記複数のデータオペランドを使
用して除算操作を行い、前記除算ユニット(30)は前
記除算ユニット(30)によって行われる動作のシーケ
ンスを制御するために複数の制御信号を提供するための
コントローラ(37)を有し、前記除算ユニット(3
0)は、 前記記憶ユニット(26)から第1のデータオペランド
および第2のデータオペランドを受入れかつ該第1のデ
ータオペランドおよび該第2のデータオペランドを前記
除算器(30)によって行われるべき除算操作の形式に
基づき所定のデータフォーマットに整列するための第1
の手段(100)、 前記第1の手段(100)に結合されて前記除算操作の
前記形式が整数除算である場合は、前記第1のデータオ
ペランドの2の補数を計算し、かつ前記第1のデータオ
ペランドの前記2の補数を正規化して浮動整数除数を生
成するための第2の手段(102,103)であって、
該第2の手段は続いて前記除算操作の前記形式が前記整
数除算である場合に商結果の2の補数を計算して整数除
算の商を形成するもの、そして前記第1の手段(10
0)および前記第2の手段(102,103)に結合さ
れクロックサイクルごとに複数の引続く組の商ビットの
1つを反復的に発生し、かつクロックサイクルごとに発
生される各々の組の商ビットを累積して所定の数の商の
値を形成し、一方同時に前記引続く組の商ビットおよび
前記浮動整数除数を使用して複数の中間冗長部分剰余を
形成するための第3の手段(38,101,104)で
あって、該第3の手段(38,101,104)は前記
所定の数の商の値の各々を前記所定のデータフォーマッ
トに正規化して所定の数の正規化された商の値を形成し
かつ前記所定の数の正規化された商の値の1つを商結果
となるよう選択するもの、 を具備することを特徴とする、データプロセッサ(1
0)においてシーケンサ(12)によって発行される複
数の除算命令を実行するための反復除算ユニット(3
0)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US891,095 | 1992-06-01 | ||
US07/891,095 US5272660A (en) | 1992-06-01 | 1992-06-01 | Method and apparatus for performing integer and floating point division using a single SRT divider in a data processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0635675A true JPH0635675A (ja) | 1994-02-10 |
Family
ID=25397609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5151540A Pending JPH0635675A (ja) | 1992-06-01 | 1993-05-28 | データプロセッサにおいて除算を行うための方法および装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5272660A (ja) |
JP (1) | JPH0635675A (ja) |
GB (1) | GB2267589B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776077B2 (en) | 2016-01-20 | 2020-09-15 | Samsung Electronics Co., Ltd. | Method, apparatus and recording medium for processing division calculation |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2984463B2 (ja) * | 1991-06-24 | 1999-11-29 | 株式会社日立製作所 | マイクロコンピュータ |
FR2690771A1 (fr) * | 1992-04-29 | 1993-11-05 | Philips Electronique Lab | Processeur neuronal muni de moyens pour normaliser des données. |
US5689721A (en) * | 1993-05-18 | 1997-11-18 | Cyrix Corporation | Detecting overflow conditions for negative quotients in nonrestoring two's complement division |
US5404324A (en) * | 1993-11-01 | 1995-04-04 | Hewlett-Packard Company | Methods and apparatus for performing division and square root computations in a computer |
US5442581A (en) * | 1993-11-30 | 1995-08-15 | Texas Instruments Incorporated | Iterative division apparatus, system and method forming plural quotient bits per iteration |
US5553015A (en) * | 1994-04-15 | 1996-09-03 | International Business Machines Corporation | Efficient floating point overflow and underflow detection system |
US5507000A (en) * | 1994-09-26 | 1996-04-09 | Bull Hn Information Systems Inc. | Sharing of register stack by two execution units in a central processor |
US5550767A (en) * | 1994-10-14 | 1996-08-27 | Ibm Corporation | Method and apparatus for detecting underflow and overflow |
US5576982A (en) * | 1994-10-17 | 1996-11-19 | Unisys Corporation | Fast significant bit calculator and its application to integer multiplication and division |
US5805475A (en) * | 1995-02-10 | 1998-09-08 | International Business Machines Corporation | Load-store unit and method of loading and storing single-precision floating-point registers in a double-precision architecture |
US5668984A (en) * | 1995-02-27 | 1997-09-16 | International Business Machines Corporation | Variable stage load path and method of operation |
US5646875A (en) * | 1995-02-27 | 1997-07-08 | International Business Machines Corporation | Denormalization system and method of operation |
US5757682A (en) * | 1995-03-31 | 1998-05-26 | International Business Machines Corporation | Parallel calculation of exponent and sticky bit during normalization |
RU95107478A (ru) * | 1995-05-18 | 1997-02-10 | А.И. Грушин | Способ устранения старших незначащих цифр при вычислениях с плавающей запятой и устройство для его осуществления |
US5808926A (en) * | 1995-06-01 | 1998-09-15 | Sun Microsystems, Inc. | Floating point addition methods and apparatus |
US5615113A (en) * | 1995-06-16 | 1997-03-25 | Cyrix Corporation | Early signaling of no-overflow for nonrestoring twos complement division |
US5787030A (en) * | 1995-07-05 | 1998-07-28 | Sun Microsystems, Inc. | Correct and efficient sticky bit calculation for exact floating point divide/square root results |
US6128726A (en) * | 1996-06-04 | 2000-10-03 | Sigma Designs, Inc. | Accurate high speed digital signal processor |
US5844830A (en) * | 1996-08-07 | 1998-12-01 | Sun Microsystems, Inc. | Executing computer instrucrions by circuits having different latencies |
US6021487A (en) * | 1996-12-16 | 2000-02-01 | Intel Corporation | Method and apparatus for providing a signed integer divide by a power of two |
US5910910A (en) * | 1997-06-23 | 1999-06-08 | Sun Microsystems, Inc. | Circuit and method for rapid calculation of quotients and square roots |
US6061781A (en) * | 1998-07-01 | 2000-05-09 | Ip First Llc | Concurrent execution of divide microinstructions in floating point unit and overflow detection microinstructions in integer unit for integer divide |
US7054898B1 (en) * | 2000-08-04 | 2006-05-30 | Sun Microsystems, Inc. | Elimination of end-around-carry critical path in floating point add/subtract execution unit |
JP3886870B2 (ja) * | 2002-09-06 | 2007-02-28 | 株式会社ルネサステクノロジ | データ処理装置 |
US7660842B2 (en) * | 2003-05-12 | 2010-02-09 | Sun Microsystems, Inc. | Method and apparatus for performing a carry-save division operation |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
US20060129624A1 (en) * | 2004-12-09 | 2006-06-15 | Abdallah Mohammad A | Method and apparatus for performing a divide instruction |
US7539720B2 (en) * | 2004-12-15 | 2009-05-26 | Sun Microsystems, Inc. | Low latency integer divider and integration with floating point divider and method |
US20060179092A1 (en) * | 2005-02-10 | 2006-08-10 | Schmookler Martin S | System and method for executing fixed point divide operations using a floating point multiply-add pipeline |
US7584237B1 (en) | 2005-10-11 | 2009-09-01 | Advanced Micro Devices, Inc. | Fast hardware divider |
US8452831B2 (en) * | 2009-03-31 | 2013-05-28 | Oracle America, Inc. | Apparatus and method for implementing hardware support for denormalized operands for floating-point divide operations |
US9086890B2 (en) | 2012-01-06 | 2015-07-21 | Oracle International Corporation | Division unit with normalization circuit and plural divide engines for receiving instructions when divide engine availability is indicated |
US9983850B2 (en) * | 2015-07-13 | 2018-05-29 | Samsung Electronics Co., Ltd. | Shared hardware integer/floating point divider and square root logic unit and associated methods |
US10353671B2 (en) * | 2016-01-13 | 2019-07-16 | Arm Limited | Circuitry and method for performing division |
CN113312021A (zh) * | 2020-02-27 | 2021-08-27 | 南京航空航天大学 | 基于阵列和对数除法器的近似混合除法器电路 |
CN113625992B (zh) * | 2021-06-28 | 2023-07-14 | 山东云海国创云计算装备产业创新中心有限公司 | 基于除法器的任务处理方法、装置、除法器及存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4413326A (en) * | 1978-10-18 | 1983-11-01 | Honeywell Inc. | Floating point division control |
US4484259A (en) * | 1980-02-13 | 1984-11-20 | Intel Corporation | Fraction bus for use in a numeric data processor |
US4405992A (en) * | 1981-04-23 | 1983-09-20 | Data General Corporation | Arithmetic unit for use in data processing systems |
US4477879A (en) * | 1981-12-28 | 1984-10-16 | Sperry Corporation | Floating point processor architecture which performs square root by hardware |
US4594680A (en) * | 1983-05-04 | 1986-06-10 | Sperry Corporation | Apparatus for performing quadratic convergence division in a large data processing system |
US4760550A (en) * | 1986-09-11 | 1988-07-26 | Amdahl Corporation | Saving cycles in floating point division |
GB2202974A (en) * | 1987-03-31 | 1988-10-05 | Plessey Co Plc | Digital divider |
US4878190A (en) * | 1988-01-29 | 1989-10-31 | Texas Instruments Incorporated | Floating point/integer processor with divide and square root functions |
US4901267A (en) * | 1988-03-14 | 1990-02-13 | Weitek Corporation | Floating point circuit with configurable number of multiplier cycles and variable divide cycle ratio |
US4999801A (en) * | 1988-07-15 | 1991-03-12 | Fujitsu Limited | Floating point operation unit in division and square root operations |
US4949295A (en) * | 1988-07-18 | 1990-08-14 | Lsi Logic Corporation | Transformation of divisor and dividend in digital division |
US4979142A (en) * | 1989-04-17 | 1990-12-18 | International Business Machines Corporation | Two-bit floating point divide circuit with single carry-save adder |
US4996660A (en) * | 1989-04-17 | 1991-02-26 | International Business Machines Corporation | Selection of divisor multipliers in a floating point divide circuit |
US5103420A (en) * | 1989-12-04 | 1992-04-07 | Dror Avnon | Method and apparatus for srt division using gray coded quotient bit signals |
-
1992
- 1992-06-01 US US07/891,095 patent/US5272660A/en not_active Expired - Fee Related
-
1993
- 1993-05-20 GB GB9310444A patent/GB2267589B/en not_active Expired - Fee Related
- 1993-05-28 JP JP5151540A patent/JPH0635675A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776077B2 (en) | 2016-01-20 | 2020-09-15 | Samsung Electronics Co., Ltd. | Method, apparatus and recording medium for processing division calculation |
Also Published As
Publication number | Publication date |
---|---|
GB2267589B (en) | 1997-01-15 |
US5272660A (en) | 1993-12-21 |
GB2267589A (en) | 1993-12-08 |
GB9310444D0 (en) | 1993-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0635675A (ja) | データプロセッサにおいて除算を行うための方法および装置 | |
KR100239029B1 (ko) | 가산기와 함께 사용하기 위한 결과 정규화기 및 결과 정규화 방법과 그를 포함하는 데이터 프로세서 | |
US6360241B1 (en) | Computer method and apparatus for division and square root operations using signed digit | |
US6487575B1 (en) | Early completion of iterative division | |
JPH04227535A (ja) | 除算を行なう装置 | |
US5426600A (en) | Double precision division circuit and method for digital signal processor | |
JPH07104778B2 (ja) | 浮動小数点数演算処理装置 | |
CN111752526A (zh) | 浮点相加 | |
JPS61177538A (ja) | 最上位の数字の位置の検出 | |
JPH07168700A (ja) | 浮動小数点数の指数計算における引数縮小を行うための装置 | |
US6941334B2 (en) | Higher precision divide and square root approximations | |
US5237525A (en) | In a data processor an SRT divider having a negative divisor sticky detection circuit | |
Jaiswal et al. | Dual-mode double precision/two-parallel single precision floating point multiplier architecture | |
US6061707A (en) | Method and apparatus for generating an end-around carry in a floating-point pipeline within a computer system | |
JPS63123125A (ja) | 浮動小数点数の加算装置 | |
Ushasree et al. | VLSI implementation of a high speed single precision floating point unit using verilog | |
Isseven et al. | A dual-mode quadruple precision floating-point divider | |
EP0840207A1 (en) | A microprocessor and method of operation thereof | |
Schulte et al. | High-speed reciprocal approximations | |
US6615228B1 (en) | Selection based rounding system and method for floating point operations | |
Knöfel | A hardware kernel for scientific/engineering computations | |
Schulte et al. | A software interface and hardware design for variable-precision interval arithmetic | |
US8892622B2 (en) | Pipelined divide circuit for small operand sizes | |
Lang et al. | Division unit for binary integer decimals | |
Stine Jr | Design issues for accurate and reliable arithmetic |