JPH08185309A - 4倍精度演算の実行方法 - Google Patents
4倍精度演算の実行方法Info
- Publication number
- JPH08185309A JPH08185309A JP7258341A JP25834195A JPH08185309A JP H08185309 A JPH08185309 A JP H08185309A JP 7258341 A JP7258341 A JP 7258341A JP 25834195 A JP25834195 A JP 25834195A JP H08185309 A JPH08185309 A JP H08185309A
- Authority
- JP
- Japan
- Prior art keywords
- precision
- double
- extended double
- quad
- bit
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49957—Implementation of IEEE-754 Standard
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
(57)【要約】
【課題】拡張倍精度ハードウェア上で正確な丸めを伴う
4倍精度浮動小数点演算を実行できる浮動小数点処理シ
ステムを提供する。 【解決手段】最初に、演算対象の4倍精度数量をペアと
しての2つの拡張倍精度数量に変換する。次に、変換し
た拡張倍精度数量ペアに対して所望の拡張倍精度算術演
算を実行する。演算の結果、丸めが必要となる場合、拡
張倍精度形式に備えられるスティッキー・ビットを活用
して、ユーザが指定するIEEE規格準拠の丸めモード
に従って正確な丸めを行う。最後に、演算結果の拡張倍
精度数量ペアを4倍精度数量に変換する。このようにし
て、4倍精度演算機構を備えていないハードウェア上で
4倍精度の浮動小数点演算が行われる。
4倍精度浮動小数点演算を実行できる浮動小数点処理シ
ステムを提供する。 【解決手段】最初に、演算対象の4倍精度数量をペアと
しての2つの拡張倍精度数量に変換する。次に、変換し
た拡張倍精度数量ペアに対して所望の拡張倍精度算術演
算を実行する。演算の結果、丸めが必要となる場合、拡
張倍精度形式に備えられるスティッキー・ビットを活用
して、ユーザが指定するIEEE規格準拠の丸めモード
に従って正確な丸めを行う。最後に、演算結果の拡張倍
精度数量ペアを4倍精度数量に変換する。このようにし
て、4倍精度演算機構を備えていないハードウェア上で
4倍精度の浮動小数点演算が行われる。
Description
【0001】
【発明の属する技術分野】本発明は、浮動小数点演算機
構を持つデータ処理システムに関するもので、特に、4
倍精度浮動小数点演算を4倍精度未満のハードウェア上
で実行する方法および装置に関するものある。
構を持つデータ処理システムに関するもので、特に、4
倍精度浮動小数点演算を4倍精度未満のハードウェア上
で実行する方法および装置に関するものある。
【0002】
【従来の技術】コンピュータの出現は、複雑な数値計算
を迅速に実行する能力に革命を起こした。例えば、天気
予報は、コンピュータを利用できる前は実用上不可能で
あった。予報は、理論的に可能であっても多くの計算を
必要とするので、コンピュータを使用しない場合は、計
算が完了するまでに時間がかかりすぎ、陳腐化してしま
う。コンピュータの使用によって、コンピュータなしで
は不可能であった天気予報のような計算が可能となっ
た。
を迅速に実行する能力に革命を起こした。例えば、天気
予報は、コンピュータを利用できる前は実用上不可能で
あった。予報は、理論的に可能であっても多くの計算を
必要とするので、コンピュータを使用しない場合は、計
算が完了するまでに時間がかかりすぎ、陳腐化してしま
う。コンピュータの使用によって、コンピュータなしで
は不可能であった天気予報のような計算が可能となっ
た。
【0003】しかしながら、初期のコンピュータでは、
一部の計算は、あまりにも時間を消費するため実用的で
なかった。また、特殊なコンピュータでは十分高速に実
行できたとしても、汎用コンピュータでは計算速度が非
常に遅くなる計算もあった。しかし、マイクロプロセッ
サの処理能力の向上によって、一層数多くの多種の計算
を適切な時間で実行することができるようになった。1
980年代の後半には、マイクロプロセッサ利用のコン
ピュータの処理能力は、年に1.5倍から2倍の率で向
上した。この傾向は今後も続くと予想される。従って、
わずか数年前まではあまりにも遅かったか、またはスー
パーコンピュータや特殊コンピュータでのみ可能であっ
たような計算が現在では可能である。
一部の計算は、あまりにも時間を消費するため実用的で
なかった。また、特殊なコンピュータでは十分高速に実
行できたとしても、汎用コンピュータでは計算速度が非
常に遅くなる計算もあった。しかし、マイクロプロセッ
サの処理能力の向上によって、一層数多くの多種の計算
を適切な時間で実行することができるようになった。1
980年代の後半には、マイクロプロセッサ利用のコン
ピュータの処理能力は、年に1.5倍から2倍の率で向
上した。この傾向は今後も続くと予想される。従って、
わずか数年前まではあまりにも遅かったか、またはスー
パーコンピュータや特殊コンピュータでのみ可能であっ
たような計算が現在では可能である。
【0004】時間消費的計算の多くは、反復的なプロシ
ージャである。反復的なプロシージャは、丸め(roundin
g)誤差が累算されるため不正確な結果を生む傾向があ
る。浮動小数点演算においては、すべての計算が、一定
量の丸め誤差を伴う。丸め誤差による小さい精度の損失
が、何回かの繰返しの後、大きな不正確さに増大するこ
とがある。
ージャである。反復的なプロシージャは、丸め(roundin
g)誤差が累算されるため不正確な結果を生む傾向があ
る。浮動小数点演算においては、すべての計算が、一定
量の丸め誤差を伴う。丸め誤差による小さい精度の損失
が、何回かの繰返しの後、大きな不正確さに増大するこ
とがある。
【0005】丸め誤差の1つの例は、無理数を固定ビッ
ト数で表す場合である。最終結果の正確度は、中間結果
のために使われる有効桁数に比例する。最近のアーキテ
クチャが高度に反復的なプロシージャを実行可能にする
ので、そのようなプロシージャの結果の精度を維持する
ため、多くの有効桁数を持つ形式で中間結果を記憶させ
ることが必要とされる。
ト数で表す場合である。最終結果の正確度は、中間結果
のために使われる有効桁数に比例する。最近のアーキテ
クチャが高度に反復的なプロシージャを実行可能にする
ので、そのようなプロシージャの結果の精度を維持する
ため、多くの有効桁数を持つ形式で中間結果を記憶させ
ることが必要とされる。
【0006】大きい有効桁数に対する別の動機づけは、
大きさが非常に異なる数量を伴う算術演算の問題、例え
ば、非常に大きい数量への非常に小さい数量の加算の問
題である。浮動小数点加算に関するプロシージャは、通
常、両方の数量が同じ指数部を持つように、各オペラン
ドの有効桁数を合わせる。次に、有効桁を加算する。次
に、有効桁加算が桁あふれする場合、プロシージャは、
結果の指数部を増分させる。有効桁調整プロセスは、1
つの(または両方の)有効桁をシフトすることを必要と
する。有効桁のシフトによって、有効桁の一部のビット
が消失することがある。そのような消失は、有効桁記憶
領域の使用可能なフィールドを越えて有効桁をシフトさ
せることに起因する。従って、精度の過大な損失なしに
シフトを行なうことができる範囲を拡張することによっ
て一層大きい有効桁数を取り扱うことを可能にすること
が必要とされる。
大きさが非常に異なる数量を伴う算術演算の問題、例え
ば、非常に大きい数量への非常に小さい数量の加算の問
題である。浮動小数点加算に関するプロシージャは、通
常、両方の数量が同じ指数部を持つように、各オペラン
ドの有効桁数を合わせる。次に、有効桁を加算する。次
に、有効桁加算が桁あふれする場合、プロシージャは、
結果の指数部を増分させる。有効桁調整プロセスは、1
つの(または両方の)有効桁をシフトすることを必要と
する。有効桁のシフトによって、有効桁の一部のビット
が消失することがある。そのような消失は、有効桁記憶
領域の使用可能なフィールドを越えて有効桁をシフトさ
せることに起因する。従って、精度の過大な損失なしに
シフトを行なうことができる範囲を拡張することによっ
て一層大きい有効桁数を取り扱うことを可能にすること
が必要とされる。
【0007】IEEE規格754は、単精度について2
3ビットの小数フィールド、倍精度について52ビット
の小数フィールドを定めている。これらの形式は、それ
ぞれ約7桁および16桁の10進数に対応する。倍精度
を使用する場合でさえ計算が不正確なことがある。従っ
て、なお一層高い精度の浮動小数点計算のための手段を
提供することが必要とされる。
3ビットの小数フィールド、倍精度について52ビット
の小数フィールドを定めている。これらの形式は、それ
ぞれ約7桁および16桁の10進数に対応する。倍精度
を使用する場合でさえ計算が不正確なことがある。従っ
て、なお一層高い精度の浮動小数点計算のための手段を
提供することが必要とされる。
【0008】
【発明が解決しようとする課題】4倍精度用のハードウ
ェアを構築することは可能ではあるが、そのようなハー
ドウェアは一般的に望ましくない。4倍精度ハードウェ
アは、128ビット幅のデータ経路と算術論理ユニット
(ALU)を必要とする。そのようなデータ経路および大
規模なALUは、さもなければ他の機構のために使用す
ることができるマイクロプロセッサ・チップ上の領域を
使用する。更に、一層広い幅のデータ経路およびALU
は、一層大きいチップ領域を占有するばかりではなく、
実行時間の一層長い遅延を意味する。一部の計算に関し
て4倍精度が望ましいか必要であっても、別の計算に関
しては倍精度または単精度で十分な場合がある。真正の
4倍精度プロセッサ上ではデータ経路幅が広いため、そ
のようなハードウエア上の単精度および倍精度計算速度
は、単精度および倍精度ハードウェア上の場合よりも遅
い。従って、不当に倍精度および単精度の計算を遅くす
ることなく速い4倍精度計算を提供することが必要とさ
れる。
ェアを構築することは可能ではあるが、そのようなハー
ドウェアは一般的に望ましくない。4倍精度ハードウェ
アは、128ビット幅のデータ経路と算術論理ユニット
(ALU)を必要とする。そのようなデータ経路および大
規模なALUは、さもなければ他の機構のために使用す
ることができるマイクロプロセッサ・チップ上の領域を
使用する。更に、一層広い幅のデータ経路およびALU
は、一層大きいチップ領域を占有するばかりではなく、
実行時間の一層長い遅延を意味する。一部の計算に関し
て4倍精度が望ましいか必要であっても、別の計算に関
しては倍精度または単精度で十分な場合がある。真正の
4倍精度プロセッサ上ではデータ経路幅が広いため、そ
のようなハードウエア上の単精度および倍精度計算速度
は、単精度および倍精度ハードウェア上の場合よりも遅
い。従って、不当に倍精度および単精度の計算を遅くす
ることなく速い4倍精度計算を提供することが必要とさ
れる。
【0009】ハードウェアを変更することなく倍精度ハ
ードウェア上で4倍精度計算を提供することは可能であ
る。しかしながら、そのような実施では、4倍精度計算
の実行がソフトウェアに非常に依存するので、計算速度
は非常に遅く、許容できない。従って、低い精度の計算
を遅くすることなく高精度の計算を可能にするための技
術改良が必要とされる。
ードウェア上で4倍精度計算を提供することは可能であ
る。しかしながら、そのような実施では、4倍精度計算
の実行がソフトウェアに非常に依存するので、計算速度
は非常に遅く、許容できない。従って、低い精度の計算
を遅くすることなく高精度の計算を可能にするための技
術改良が必要とされる。
【0010】
【課題を解決するための手段】本発明は、広義には、倍
精度プロセッサ上で4倍精度計算を可能にするものであ
る。本発明は、浮動小数点数値を拡張倍精度形式で処理
する浮動小数点演算機構を含む。本発明の浮動小数点演
算機構は、真正の4倍精度表示とペアとしての2つの拡
張倍精度表示との間の変換を行う命令を実行するように
動作することができる。上記変換は、倍精度拡張形式の
ペアの数値を加算すれば、正確に等価の4倍精度数値に
なるように行われる。本発明の浮動小数点演算機構は、
IEEE−754規格に規定の丸めモードに準拠して、
倍の(すなわち2つの)拡張倍精度表示の浮動小数点数
の正確な丸めを行う命令を実行する。
精度プロセッサ上で4倍精度計算を可能にするものであ
る。本発明は、浮動小数点数値を拡張倍精度形式で処理
する浮動小数点演算機構を含む。本発明の浮動小数点演
算機構は、真正の4倍精度表示とペアとしての2つの拡
張倍精度表示との間の変換を行う命令を実行するように
動作することができる。上記変換は、倍精度拡張形式の
ペアの数値を加算すれば、正確に等価の4倍精度数値に
なるように行われる。本発明の浮動小数点演算機構は、
IEEE−754規格に規定の丸めモードに準拠して、
倍の(すなわち2つの)拡張倍精度表示の浮動小数点数
の正確な丸めを行う命令を実行する。
【0011】本発明は、4倍精度数値をペアとして2つ
の拡張倍精度数値に変換するためのツールをユーザに提
供する。拡張倍精度数値ペア定義の特徴は、ある拡張倍
精度数値のペアが加算される時、無限精度で加算すれ
ば、結果として生ずる和は、正確に対応する4倍精度数
値に等しいことである。拡張倍精度数値ペア定義の第2
の特徴は、2つの数値のうちの位数の大きい方の数値の
指数部は、小さい方の数値より少なくともnだけ大きい
指数部を持つ(但し、nは拡張倍精度ワードの有効数に
おけるビットの数とする)ことである。
の拡張倍精度数値に変換するためのツールをユーザに提
供する。拡張倍精度数値ペア定義の特徴は、ある拡張倍
精度数値のペアが加算される時、無限精度で加算すれ
ば、結果として生ずる和は、正確に対応する4倍精度数
値に等しいことである。拡張倍精度数値ペア定義の第2
の特徴は、2つの数値のうちの位数の大きい方の数値の
指数部は、小さい方の数値より少なくともnだけ大きい
指数部を持つ(但し、nは拡張倍精度ワードの有効数に
おけるビットの数とする)ことである。
【0012】4倍精度数値を2つの拡張倍精度表示に変
換した後、ユーザは、拡張倍精度ハードウェアを使用し
て、2つの拡張倍精度数値に関する算術演算を実行する
ことができる。これらの算術演算の結果として、別の拡
張倍精度数値のペアが生成される。本発明は、更に、上
記演算の結果である拡張倍精度数値ペアを、IEEE−
754規格に準拠するように正確に丸められた4倍精度
数値に変換するツールを提供する。
換した後、ユーザは、拡張倍精度ハードウェアを使用し
て、2つの拡張倍精度数値に関する算術演算を実行する
ことができる。これらの算術演算の結果として、別の拡
張倍精度数値のペアが生成される。本発明は、更に、上
記演算の結果である拡張倍精度数値ペアを、IEEE−
754規格に準拠するように正確に丸められた4倍精度
数値に変換するツールを提供する。
【0013】拡張倍精度数値の各々は、4倍精度数値の
指数部フィールドより少くとも1ビット広い指数部フィ
ールドを持つ。更に、従来技術に従って拡張倍精度数値
に含められるビットに加えて、本発明においては、拡張
倍精度数値の各々が、1つの付加ビット、すなわちステ
ィッキー・ビット(sticky bit)を含む。スティッキー・
ビットは、IEEE−754丸めモードに準拠して4倍
精度の演算結果を正確に丸めるために使用される。
指数部フィールドより少くとも1ビット広い指数部フィ
ールドを持つ。更に、従来技術に従って拡張倍精度数値
に含められるビットに加えて、本発明においては、拡張
倍精度数値の各々が、1つの付加ビット、すなわちステ
ィッキー・ビット(sticky bit)を含む。スティッキー・
ビットは、IEEE−754丸めモードに準拠して4倍
精度の演算結果を正確に丸めるために使用される。
【0014】装置としては、本発明は、浮動小数点演算
機構に関連する。本発明は、浮動小数点演算機構をし
て、拡張倍精度用に設計されたハードウェア上で4倍精
度演算を実行することを可能ならしめる。本演算機構
は、データを記憶するための複数ポートを備えた記憶装
置、2つの数値を掛けて積を作成し、2つの数値を加え
て和を作成する演算手段、および乗算、加算、減算、除
算、平方根を含む様々な4倍精度演算に関するマイクロ
コードを含む。
機構に関連する。本発明は、浮動小数点演算機構をし
て、拡張倍精度用に設計されたハードウェア上で4倍精
度演算を実行することを可能ならしめる。本演算機構
は、データを記憶するための複数ポートを備えた記憶装
置、2つの数値を掛けて積を作成し、2つの数値を加え
て和を作成する演算手段、および乗算、加算、減算、除
算、平方根を含む様々な4倍精度演算に関するマイクロ
コードを含む。
【0015】
【発明の実施の形態】本発明は、浮動小数点演算機構に
おける使用を意図する。本発明は、ハードウェアによっ
て提供される精度の2倍までの精度を持つ正確なIEE
E−754規格に準拠した形式の数値を浮動小数点演算
機構が生成することを可能にするものである。好ましく
は、本発明は、Nビット近似値(半精度)から2Nビッ
ト近似値(全精度)を生成する。例えば、ハードウェア
が倍精度の演算結果を提供することができるならば、本
発明は4倍精度演算結果を提供する。本発明は、多倍精
度数値に等しく適用できる。多倍精度数値とは、4倍精
度より大きい精度を持つ数値という意味である。これら
の数値は、単精度浮動小数点アレイに記憶することがで
きる。1つの実施例では、アレイの最初のワードは、絶
対値が浮動小数点数の仮数のワード数を表す整数であ
る。最初のワードの符号は、多倍精度数の符号である。
次のワードは、基数の指数を表す整数である。10進小
数点は、第1の仮数ワードに従う。これらの数値に対す
る数学的動作を実行するため、既知のソフトウェア・ラ
イブラリ・ルーチンが利用可能である。そのようなルー
チンの例は、Bailey著"A Portable High Performance M
ultiprecision Package(高性能多倍精度可搬パッケー
ジ)"( RNR Technical Report RNR-90-022, NASA Appl
ied Research Branch, NASA Ames Research Center, Mo
ffett Field,California, May 1992)に記載されてい
る。
おける使用を意図する。本発明は、ハードウェアによっ
て提供される精度の2倍までの精度を持つ正確なIEE
E−754規格に準拠した形式の数値を浮動小数点演算
機構が生成することを可能にするものである。好ましく
は、本発明は、Nビット近似値(半精度)から2Nビッ
ト近似値(全精度)を生成する。例えば、ハードウェア
が倍精度の演算結果を提供することができるならば、本
発明は4倍精度演算結果を提供する。本発明は、多倍精
度数値に等しく適用できる。多倍精度数値とは、4倍精
度より大きい精度を持つ数値という意味である。これら
の数値は、単精度浮動小数点アレイに記憶することがで
きる。1つの実施例では、アレイの最初のワードは、絶
対値が浮動小数点数の仮数のワード数を表す整数であ
る。最初のワードの符号は、多倍精度数の符号である。
次のワードは、基数の指数を表す整数である。10進小
数点は、第1の仮数ワードに従う。これらの数値に対す
る数学的動作を実行するため、既知のソフトウェア・ラ
イブラリ・ルーチンが利用可能である。そのようなルー
チンの例は、Bailey著"A Portable High Performance M
ultiprecision Package(高性能多倍精度可搬パッケー
ジ)"( RNR Technical Report RNR-90-022, NASA Appl
ied Research Branch, NASA Ames Research Center, Mo
ffett Field,California, May 1992)に記載されてい
る。
【0016】本発明の実施の形態を、図1ないし図5を
参照しながら以下に記述する。しかし、これらの図に関
する本明細書の詳細な記述は、説明の目的のためのもの
であって、本発明はこれらの限定的実施形態を越えて拡
張することができることは、当業者によって容易に理解
されるであろう。
参照しながら以下に記述する。しかし、これらの図に関
する本明細書の詳細な記述は、説明の目的のためのもの
であって、本発明はこれらの限定的実施形態を越えて拡
張することができることは、当業者によって容易に理解
されるであろう。
【0017】図1は、拡張倍精度ハードウェアを使用し
て4倍精度計算を実行するための浮動小数点演算装置を
備えたプロセッサ100のブロック図である。プロセッ
サ100は、少なくとも1つの特殊機構103に接続す
る中央処理装置(CPU)101を含む。CPU101
は、更に、バス111を経由して、変換ルックアサイド
・バッファ(TLB)105、キャッシュ107および
浮動小数点演算ユニット(FPU)109に接続してい
る。好ましい実施例においては、FPU109は、乗加
算融合(MAF)設計のFPUである。FPU109の
詳細は、図2ないし図5を参照しながら後述する。プロ
セッサ100は、キャッシュ107およびTLB105
に接続する中央バス113経由で他のプロセッサおよび
周辺装置に接続している。
て4倍精度計算を実行するための浮動小数点演算装置を
備えたプロセッサ100のブロック図である。プロセッ
サ100は、少なくとも1つの特殊機構103に接続す
る中央処理装置(CPU)101を含む。CPU101
は、更に、バス111を経由して、変換ルックアサイド
・バッファ(TLB)105、キャッシュ107および
浮動小数点演算ユニット(FPU)109に接続してい
る。好ましい実施例においては、FPU109は、乗加
算融合(MAF)設計のFPUである。FPU109の
詳細は、図2ないし図5を参照しながら後述する。プロ
セッサ100は、キャッシュ107およびTLB105
に接続する中央バス113経由で他のプロセッサおよび
周辺装置に接続している。
【0018】図2は、本発明の1つの好ましい実施例に
従った浮動小数点演算ユニット109のブロック図であ
る。図2に示される浮動小数点演算ユニット109は、
乗加算融合(MAF)FPUである。すなわち、乗算と
加算が1つのアトミック動作として発生するように、す
なわち、基本動作がa+b*cであるように、乗算装置
と加算機が融合されている。加算はa+1*c、乗算は
0+b*cとして実行される。
従った浮動小数点演算ユニット109のブロック図であ
る。図2に示される浮動小数点演算ユニット109は、
乗加算融合(MAF)FPUである。すなわち、乗算と
加算が1つのアトミック動作として発生するように、す
なわち、基本動作がa+b*cであるように、乗算装置
と加算機が融合されている。加算はa+1*c、乗算は
0+b*cとして実行される。
【0019】プロセッサ100は実用精度Nビットを持
つ。1つの好ましい実施例では、プロセッサ100の実
用精度はIEEE−754規格の倍精度である。図3の
(a),(b)および(c)は、種々の浮動小数点デー
タ・タイプを示し、図3の(d)は、プロセッサ100
によって使用される1つの特定データ形式を示す。図3
の(a)は、IEEE−754規格の単精度浮動小数点
形式のフィールドを示している。これは、単一の符号ビ
ット、8ビット指数部および23ビット小数部を含む。
図3の(b)は、IEEE−754規格の倍精度形式を
示す。これは、単一の符号ビット、11ビット指数部お
よび52ビット小数部を含む。図3の(c)は、4倍精
度形式を示す。これは、単一の符号ビット、15ビット
指数部および112ビット小数部を含む。プロセッサ1
00は、メモリ上で、1つの4倍精度数値を2つの隣接
する64ビット・ワードに記憶する。図3の(d)は、
拡張倍精度の81ビット浮動小数点表示形式を示す。拡
張倍精度形式は、単一の符号ビット、16ビット指数
部、明示的整数ビットおよび63ビット小数部を含む。
図3の(d)の形式は、また、以下に詳細に記述するス
ティッキー・ビット(SB)を含む。
つ。1つの好ましい実施例では、プロセッサ100の実
用精度はIEEE−754規格の倍精度である。図3の
(a),(b)および(c)は、種々の浮動小数点デー
タ・タイプを示し、図3の(d)は、プロセッサ100
によって使用される1つの特定データ形式を示す。図3
の(a)は、IEEE−754規格の単精度浮動小数点
形式のフィールドを示している。これは、単一の符号ビ
ット、8ビット指数部および23ビット小数部を含む。
図3の(b)は、IEEE−754規格の倍精度形式を
示す。これは、単一の符号ビット、11ビット指数部お
よび52ビット小数部を含む。図3の(c)は、4倍精
度形式を示す。これは、単一の符号ビット、15ビット
指数部および112ビット小数部を含む。プロセッサ1
00は、メモリ上で、1つの4倍精度数値を2つの隣接
する64ビット・ワードに記憶する。図3の(d)は、
拡張倍精度の81ビット浮動小数点表示形式を示す。拡
張倍精度形式は、単一の符号ビット、16ビット指数
部、明示的整数ビットおよび63ビット小数部を含む。
図3の(d)の形式は、また、以下に詳細に記述するス
ティッキー・ビット(SB)を含む。
【0020】例示の目的のため、本発明は、IEEE−
754準拠の拡張倍精度の実用精度、すなわち、81ビ
ットのワード幅であって、図3の(d)に規定されてい
るように4倍精度に等しい拡張精度を持つものとして記
述される。この例に対する代替策は多くあり、本発明
が、本発明の実施形態の範囲内でそのような代替策も包
含するものであると解釈されるべきことは、当業者によ
って認められるであろう。
754準拠の拡張倍精度の実用精度、すなわち、81ビ
ットのワード幅であって、図3の(d)に規定されてい
るように4倍精度に等しい拡張精度を持つものとして記
述される。この例に対する代替策は多くあり、本発明
が、本発明の実施形態の範囲内でそのような代替策も包
含するものであると解釈されるべきことは、当業者によ
って認められるであろう。
【0021】図4は、線形コンピュータ・メモリ400
の1部を示す。図示のように、メモリは、64ビット
幅、すなわち、各メモリ・アドレスは、64ビット数量
に対応する。代替実施例では、各アドレスは、8ビット
数量(1バイト)に対応し、各64ビット・ワードは、
次または前の64ビット・ワードに続く8個のアドレス
位置である。
の1部を示す。図示のように、メモリは、64ビット
幅、すなわち、各メモリ・アドレスは、64ビット数量
に対応する。代替実施例では、各アドレスは、8ビット
数量(1バイト)に対応し、各64ビット・ワードは、
次または前の64ビット・ワードに続く8個のアドレス
位置である。
【0022】メモリ位置401において、単精度数量が
記憶される。すなわち、符号ビット、指数部および小数
部がメモリ幅の半分を占める。IEEE−754規格の
単精度の場合、それは64ビット幅メモリのうちの32
ビットに対応する。メモリ位置403は、IEEE−7
54規格の倍精度数値を図示する。メモリ位置405お
よび407は、1つの4倍精度数値に対応する。この4
倍精度数値の第1のメモリ位置は、符号ビット、指数部
および小数部の上位有効桁部分を含み、第2のメモリ位
置は、小数部の残りを含む。このようにして、2つのメ
モリ位置が連結されると、それらは、数値の4倍精度表
示に対応する。
記憶される。すなわち、符号ビット、指数部および小数
部がメモリ幅の半分を占める。IEEE−754規格の
単精度の場合、それは64ビット幅メモリのうちの32
ビットに対応する。メモリ位置403は、IEEE−7
54規格の倍精度数値を図示する。メモリ位置405お
よび407は、1つの4倍精度数値に対応する。この4
倍精度数値の第1のメモリ位置は、符号ビット、指数部
および小数部の上位有効桁部分を含み、第2のメモリ位
置は、小数部の残りを含む。このようにして、2つのメ
モリ位置が連結されると、それらは、数値の4倍精度表
示に対応する。
【0023】図2に戻って、FPU109は、情報をレ
ジスタ・ファイル202へロードするためおよびレジス
タ・ファイル202からの情報を記憶するためのメモリ
・システム228へ接続している。レジスタ・ファイル
202は、図3の(d)に示されている拡張倍精度形式
で情報を記憶する。従って、好ましい実施例では、レジ
スタ・ファイル202における各レジスタは、82ビッ
ト幅である。レジスタ・ファイル202の各レジスタ
は、レジスタに保持される数値を正しく丸めるために使
われるスティッキィ・ビット(SB)と呼ばれるビット
を含む点に注意する必要がある。「スティッキー・ビッ
ト」および丸めについての詳細は後述する。
ジスタ・ファイル202へロードするためおよびレジス
タ・ファイル202からの情報を記憶するためのメモリ
・システム228へ接続している。レジスタ・ファイル
202は、図3の(d)に示されている拡張倍精度形式
で情報を記憶する。従って、好ましい実施例では、レジ
スタ・ファイル202における各レジスタは、82ビッ
ト幅である。レジスタ・ファイル202の各レジスタ
は、レジスタに保持される数値を正しく丸めるために使
われるスティッキィ・ビット(SB)と呼ばれるビット
を含む点に注意する必要がある。「スティッキー・ビッ
ト」および丸めについての詳細は後述する。
【0024】メモリ228からレジスタ・ファイル20
2へ4倍精度数量をロードする動作によって、4倍精度
数量の最初の64ビットワードがメモリから1つのレジ
スタの下位64ビットへ、そして4倍精度数量の第2の
64ビット・ワードがメモリから第2のレジスタの下位
64ビットへ転送される。好ましい実施例においては、
これらの転送は、レジスタ仕様に完全な柔軟性を与える
ため、通常2つの命令で実行される。しかし、代替的実
施例では、アドレス・レジスタの奇数・偶数ペアリング
を用いて1つの命令だけで転送が行われる。
2へ4倍精度数量をロードする動作によって、4倍精度
数量の最初の64ビットワードがメモリから1つのレジ
スタの下位64ビットへ、そして4倍精度数量の第2の
64ビット・ワードがメモリから第2のレジスタの下位
64ビットへ転送される。好ましい実施例においては、
これらの転送は、レジスタ仕様に完全な柔軟性を与える
ため、通常2つの命令で実行される。しかし、代替的実
施例では、アドレス・レジスタの奇数・偶数ペアリング
を用いて1つの命令だけで転送が行われる。
【0025】複数ポート・レジスタ・ファイル202
は、読取りポートA、B、CおよびDおよび書込みポー
トE、FおよびGを含む。乗算ユニット204は、読取
りポートAおよびBから被乗数と乗数を受け取り、積を
作成する。位置合せシフト器206は、読取りポートD
から加数を受け取り、乗算ユニット204からの信号2
07を使用して積の指数に従って、加数の位置あわせを
行う。
は、読取りポートA、B、CおよびDおよび書込みポー
トE、FおよびGを含む。乗算ユニット204は、読取
りポートAおよびBから被乗数と乗数を受け取り、積を
作成する。位置合せシフト器206は、読取りポートD
から加数を受け取り、乗算ユニット204からの信号2
07を使用して積の指数に従って、加数の位置あわせを
行う。
【0026】3:2桁上げ保存加算器208は、乗算ユ
ニット204および位置合せシフト器206から入力を
受け取り、桁上げ伝播加算器(CPA)210へ少くと
も2Nビットの出力を提供する。桁上げ伝播加算器21
0は、集合的に4倍精度データ・マルチプレクサ232
と呼ばれる多数のマルチプレクサに供給される2Nビッ
ト結果を作成する。4倍精度データ・マルチプレクサ2
32は、種々のデータ形式の間のマッピングを提供す
る。マッピングは、図3および図4を参照しながら後述
する。次に、4倍精度データ・マルチプレクサ232か
らの再マップされた出力が、正規化シフト器212によ
って正規化され、丸め増分器214によって2Nビット
結果に丸められる。次に、丸められた結果が2つのNビ
ット部分に分割され、それぞれ高位部ラッチ216およ
び低位部ラッチ218に供給される。マルチプレクサ2
20は、ラッチ216、218からラッチされたNビッ
ト部分を受け取る。マルチプレクサ220の出力は、レ
ジスタ・ファイル202の書込ポートFに接続されてい
て、これにより、2つのNビット部分が、1つは高位部
のためもう1つは低位部のための2つの命令によって、
レジスタ・ファイル202に記憶される。
ニット204および位置合せシフト器206から入力を
受け取り、桁上げ伝播加算器(CPA)210へ少くと
も2Nビットの出力を提供する。桁上げ伝播加算器21
0は、集合的に4倍精度データ・マルチプレクサ232
と呼ばれる多数のマルチプレクサに供給される2Nビッ
ト結果を作成する。4倍精度データ・マルチプレクサ2
32は、種々のデータ形式の間のマッピングを提供す
る。マッピングは、図3および図4を参照しながら後述
する。次に、4倍精度データ・マルチプレクサ232か
らの再マップされた出力が、正規化シフト器212によ
って正規化され、丸め増分器214によって2Nビット
結果に丸められる。次に、丸められた結果が2つのNビ
ット部分に分割され、それぞれ高位部ラッチ216およ
び低位部ラッチ218に供給される。マルチプレクサ2
20は、ラッチ216、218からラッチされたNビッ
ト部分を受け取る。マルチプレクサ220の出力は、レ
ジスタ・ファイル202の書込ポートFに接続されてい
て、これにより、2つのNビット部分が、1つは高位部
のためもう1つは低位部のための2つの命令によって、
レジスタ・ファイル202に記憶される。
【0027】制御装置222は、命令を受け取り実行す
る。特に、制御装置222は、種々の制御信号224を
使用して浮動小数点演算機構109の回路を制御する。
制御装置222は、マイクロコード・メモリ226に記
憶されているマイクロコード命令に基づいて制御信号2
24を生成する。浮動小数点演算機構200は、拡張倍
精度に作用する多数の命令を自動的に実行するように動
作する。それらの命令には、数値の逆数演算(RECI
P)、2つの数値の乗算(FMPY)、2つの数値の加
算(FADD)および減算(FSUB)、乗算と加算の
融合演算(FMPYADD)、乗算と減算の融合演算
(FMPYSUB)、およびFMPYADDとFMPY
SUBの負数が含まれる。
る。特に、制御装置222は、種々の制御信号224を
使用して浮動小数点演算機構109の回路を制御する。
制御装置222は、マイクロコード・メモリ226に記
憶されているマイクロコード命令に基づいて制御信号2
24を生成する。浮動小数点演算機構200は、拡張倍
精度に作用する多数の命令を自動的に実行するように動
作する。それらの命令には、数値の逆数演算(RECI
P)、2つの数値の乗算(FMPY)、2つの数値の加
算(FADD)および減算(FSUB)、乗算と加算の
融合演算(FMPYADD)、乗算と減算の融合演算
(FMPYSUB)、およびFMPYADDとFMPY
SUBの負数が含まれる。
【0028】マイクロコード・メモリ226は、また、
除算226a、平方根226b、乗算226c、加算2
26dおよび減算226eに関する4倍精度命令を含
む。これらの4倍精度演算命令は、複数の拡張倍精度命
令から合成され、1サイクル以上を必要とする。マイク
ロコード・メモリ226は、また、4倍精度と拡張倍精
度との間の変換226fおよび4倍精度丸め226gに
関する命令を含む。
除算226a、平方根226b、乗算226c、加算2
26dおよび減算226eに関する4倍精度命令を含
む。これらの4倍精度演算命令は、複数の拡張倍精度命
令から合成され、1サイクル以上を必要とする。マイク
ロコード・メモリ226は、また、4倍精度と拡張倍精
度との間の変換226fおよび4倍精度丸め226gに
関する命令を含む。
【0029】図5は、制御装置222によって実行され
または制御される基本プロシージャの流れ図である。制
御装置222が命令を受け取ると、種々の動作が演算ユ
ニット109に発生する。先ず、命令がデコードされ
(502)、そのオペランドが読み取られる(50
4)。次に、特別なケースが存在するか否かの判定が行
われる(506)。オペランドが通常の数値でない場
合、特別ケースが存在する。オペランドが通常の数でな
い場合、動作は、IEEE規格754−1985に従っ
て「手直し」され(508)、次に、数値が初めから通
常であったかのように動作の流れ制御は続く。例えば、
数値の1つが、0.02×10-3である場合、数値を0.
2×10-4に手直し(この場合正規化)してから処理を
継続する。
または制御される基本プロシージャの流れ図である。制
御装置222が命令を受け取ると、種々の動作が演算ユ
ニット109に発生する。先ず、命令がデコードされ
(502)、そのオペランドが読み取られる(50
4)。次に、特別なケースが存在するか否かの判定が行
われる(506)。オペランドが通常の数値でない場
合、特別ケースが存在する。オペランドが通常の数でな
い場合、動作は、IEEE規格754−1985に従っ
て「手直し」され(508)、次に、数値が初めから通
常であったかのように動作の流れ制御は続く。例えば、
数値の1つが、0.02×10-3である場合、数値を0.
2×10-4に手直し(この場合正規化)してから処理を
継続する。
【0030】次に、命令が、4倍精度演算命令であるか
否かの判定が行われる(509)。命令が4倍精度演算
命令でない場合、非4倍命令に対応するマイクロコード
が実行される(511)。例えば、命令が加算または乗
算であれば、乗算または加算演算は、図2に示されるよ
うな乗算ユニット204および加算器210によって従
来技術の形態で実行される。さもなければ、4倍精度命
令のタイプが判定される(510a、510b、510
c、510d、510e、510fおよび510g)。
命令が除算命令であれば、制御装置222は、除算マイ
クロコード(226a)を実行する(512)。除算マ
イクロコード(226a)の完了とともに、制御の流れ
は次の命令をデコードするためステップ502へ戻る。
同様に、命令が平方根命令ならば、制御装置234は平
方根マイクロコード226bを実行し(516)、その
後次の命令をデコードするためステップ502に制御の
流れを戻す。その後、結果が、一時的記憶のためレジス
タ・ファイル202に書き戻される(522)。
否かの判定が行われる(509)。命令が4倍精度演算
命令でない場合、非4倍命令に対応するマイクロコード
が実行される(511)。例えば、命令が加算または乗
算であれば、乗算または加算演算は、図2に示されるよ
うな乗算ユニット204および加算器210によって従
来技術の形態で実行される。さもなければ、4倍精度命
令のタイプが判定される(510a、510b、510
c、510d、510e、510fおよび510g)。
命令が除算命令であれば、制御装置222は、除算マイ
クロコード(226a)を実行する(512)。除算マ
イクロコード(226a)の完了とともに、制御の流れ
は次の命令をデコードするためステップ502へ戻る。
同様に、命令が平方根命令ならば、制御装置234は平
方根マイクロコード226bを実行し(516)、その
後次の命令をデコードするためステップ502に制御の
流れを戻す。その後、結果が、一時的記憶のためレジス
タ・ファイル202に書き戻される(522)。
【0031】制御装置222で受け取られた命令が除算
命令または平方根命令である時、制御装置222は、除
算および平方根マイクロコード226aおよび226b
にそれぞれアクセスして、乗算および加算回路を使用し
て除算および平方根演算を行うために必要とされる反復
プロシージャを実行する。倍精度ハードウェアを使用す
る4倍精度数値に対する除算および平方根演算は、米国
特許出願第08/058,164号の"FLOATING POINT ARITHMETIC
UNIT USING MODIFIED NEWTON-RAPHSON TECHNIQUE FOR
DIVISION AND SQUARE ROOT(除算及び平方根演算のため
の修正ニュートン−パフソン法使用の浮動小数点演算装
置)"に記載されている。
命令または平方根命令である時、制御装置222は、除
算および平方根マイクロコード226aおよび226b
にそれぞれアクセスして、乗算および加算回路を使用し
て除算および平方根演算を行うために必要とされる反復
プロシージャを実行する。倍精度ハードウェアを使用す
る4倍精度数値に対する除算および平方根演算は、米国
特許出願第08/058,164号の"FLOATING POINT ARITHMETIC
UNIT USING MODIFIED NEWTON-RAPHSON TECHNIQUE FOR
DIVISION AND SQUARE ROOT(除算及び平方根演算のため
の修正ニュートン−パフソン法使用の浮動小数点演算装
置)"に記載されている。
【0032】命令が変換命令510fの1つである場
合、適切な変換マイクロコード226fが実行される
(524)。浮動小数点演算ユニットは、4倍データ・
マルチプレクサ232を経由して、4倍精度表示と拡張
倍精度表示との間で変換を行うように動作する。好まし
い実施例における4倍精度表示は、図3の(c)に示さ
れている128ビット・データ形式である。4倍精度演
算を実行するため、各4倍精度数量Qは、図3の(d)
に示されるような高位ワードXと低位ワードYという2
つの拡張倍精度量に変換される。ただし、この時、X+
Yは、無限の精度で加算されたとしても、正確にQと等
しくなる。高位拡張倍精度ワードXは、Yより大きい指
数部Nを持つ。この場合、Nは、拡張倍ワードにおける
有効桁のビットの数である。好ましい実施例では、Nは
64である。
合、適切な変換マイクロコード226fが実行される
(524)。浮動小数点演算ユニットは、4倍データ・
マルチプレクサ232を経由して、4倍精度表示と拡張
倍精度表示との間で変換を行うように動作する。好まし
い実施例における4倍精度表示は、図3の(c)に示さ
れている128ビット・データ形式である。4倍精度演
算を実行するため、各4倍精度数量Qは、図3の(d)
に示されるような高位ワードXと低位ワードYという2
つの拡張倍精度量に変換される。ただし、この時、X+
Yは、無限の精度で加算されたとしても、正確にQと等
しくなる。高位拡張倍精度ワードXは、Yより大きい指
数部Nを持つ。この場合、Nは、拡張倍ワードにおける
有効桁のビットの数である。好ましい実施例では、Nは
64である。
【0033】1つの4倍精度表示から2つの拡張倍精度
量への変換は、QCNVTF (Q,X) およびQCNVTFL (Q,Y)とい
う2つの命令に応答して4倍データ・マルチプレクサ2
32および指数調整器230によって実行される。これ
らの命令に応答して、制御装置222は、4倍データ・
マルチプレクサ232および指数調整器230へ信号2
24を送って、対応する変換を遂行する。QCNVTF (Q,X)
命令は、2倍の拡張倍精度表示Qの高位ワードXを作成
するように、4倍データ・マルチプレクサ232および
指数調整器230に命じる。QCNVTFL (Q,Y)命令は、2
倍の拡張倍精度表示Qの低位ワードYを作成するよう
に、4倍データ・マルチプレクサ232および指数調整
器230に命じる。
量への変換は、QCNVTF (Q,X) およびQCNVTFL (Q,Y)とい
う2つの命令に応答して4倍データ・マルチプレクサ2
32および指数調整器230によって実行される。これ
らの命令に応答して、制御装置222は、4倍データ・
マルチプレクサ232および指数調整器230へ信号2
24を送って、対応する変換を遂行する。QCNVTF (Q,X)
命令は、2倍の拡張倍精度表示Qの高位ワードXを作成
するように、4倍データ・マルチプレクサ232および
指数調整器230に命じる。QCNVTFL (Q,Y)命令は、2
倍の拡張倍精度表示Qの低位ワードYを作成するよう
に、4倍データ・マルチプレクサ232および指数調整
器230に命じる。
【0034】QCNVTF命令に応答して、4倍データ・マル
チプレクサ232は、Xの符号ビットにQの符号ビット
をマップし、Xの小数部64ビットへQの有効桁の高位
64ビットをマップし、Xのスティッキー・ビットをゼ
ロにセットする。調整器230は、Xの指数部の低位1
5ビットに、Qの指数部をマップする。Qの有効桁の高
位64ビットは、隠された(暗示的)ビットおよび明示
的に表されるQの小数部の高位63ビットを含む。
チプレクサ232は、Xの符号ビットにQの符号ビット
をマップし、Xの小数部64ビットへQの有効桁の高位
64ビットをマップし、Xのスティッキー・ビットをゼ
ロにセットする。調整器230は、Xの指数部の低位1
5ビットに、Qの指数部をマップする。Qの有効桁の高
位64ビットは、隠された(暗示的)ビットおよび明示
的に表されるQの小数部の高位63ビットを含む。
【0035】QCNVTFL命令に応答して、4倍データ・マ
ルチプレクサ232は、Yの符号ビットにQの符号ビッ
トをマップし、Yの小数部の高位49ビットへQの有効
桁の低位49ビットをマップし、Yの小数部の残りの1
5ビットをゼロにセットし、Yのスティッキー・ビット
をゼロにセットする。指数調整器230は、Yの指数部
をXの指数部より64小さい指数に調節して、その数量
をYにマップする。
ルチプレクサ232は、Yの符号ビットにQの符号ビッ
トをマップし、Yの小数部の高位49ビットへQの有効
桁の低位49ビットをマップし、Yの小数部の残りの1
5ビットをゼロにセットし、Yのスティッキー・ビット
をゼロにセットする。指数調整器230は、Yの指数部
をXの指数部より64小さい指数に調節して、その数量
をYにマップする。
【0036】2つの拡張倍精度数量から1つの4倍精度
表示への変換は、FCNVTQ (X,Y,QH)およびFCNVTQL(X,Y,Q
L)という2つの命令に応答して4倍データ・マルチプレ
クサ232および指数調整器230によって実行され
る。これらの命令に応答して、制御装置222は、4倍
データ・マルチプレクサ232および指数調整器230
へ信号224を送って、対応する変換を遂行する。FCNV
TQ (X,Y,QH)命令は、Qの4倍精度表示の高位ワードQ
Hを作成するように、4倍データ・マルチプレクサ23
2および指数調整器230に命じる。高位ワードQH
は、符号ビット、15ビット指数部および小数部の最初
の48ビットを含む。FCNVTQL (X,Y,QL)命令は、Qの4
倍精度表示の低位ワードQLを作成するように、4倍デ
ータ・マルチプレクサ232および指数調整器230に
命令する。低位ワードQLは、Qの4倍精度表示の小数
部の低位64ビットを含む。このようにして、QHとQ
Lの連結は、Qの標準4倍精度表示と等価となる。
表示への変換は、FCNVTQ (X,Y,QH)およびFCNVTQL(X,Y,Q
L)という2つの命令に応答して4倍データ・マルチプレ
クサ232および指数調整器230によって実行され
る。これらの命令に応答して、制御装置222は、4倍
データ・マルチプレクサ232および指数調整器230
へ信号224を送って、対応する変換を遂行する。FCNV
TQ (X,Y,QH)命令は、Qの4倍精度表示の高位ワードQ
Hを作成するように、4倍データ・マルチプレクサ23
2および指数調整器230に命じる。高位ワードQH
は、符号ビット、15ビット指数部および小数部の最初
の48ビットを含む。FCNVTQL (X,Y,QL)命令は、Qの4
倍精度表示の低位ワードQLを作成するように、4倍デ
ータ・マルチプレクサ232および指数調整器230に
命令する。低位ワードQLは、Qの4倍精度表示の小数
部の低位64ビットを含む。このようにして、QHとQ
Lの連結は、Qの標準4倍精度表示と等価となる。
【0037】FCNVTQ命令に応答して、制御装置222
は、2つの拡張倍精度数量XとYを加算するように、信
号224を使用して、乗算ユニット224、位置あわせ
シフト器206、3:2桁上げ保存加算器208および
桁上げ伝播加算器210に命令する。4倍データ・マル
チプレクサ232は、QHの符号ビットに結果として生
ずる数量の符号ビットをマップし、QHの小数部フィー
ルドへ結果として生ずる有効桁の高位49ビットをマッ
プする(48ビットは暗示的先頭ビットを49番目のビ
ットとみなす)。調整器230は、QHの指数部の低位
15ビットに、加算の結果の指数部をマップする。
は、2つの拡張倍精度数量XとYを加算するように、信
号224を使用して、乗算ユニット224、位置あわせ
シフト器206、3:2桁上げ保存加算器208および
桁上げ伝播加算器210に命令する。4倍データ・マル
チプレクサ232は、QHの符号ビットに結果として生
ずる数量の符号ビットをマップし、QHの小数部フィー
ルドへ結果として生ずる有効桁の高位49ビットをマッ
プする(48ビットは暗示的先頭ビットを49番目のビ
ットとみなす)。調整器230は、QHの指数部の低位
15ビットに、加算の結果の指数部をマップする。
【0038】FCNVTQL命令に応答して、制御装置222
は、2つの拡張倍精度数量XとYを加算するように、信
号224を使用して、乗算ユニット224、位置あわせ
シフト器206、3:2桁上げ保存加算器208および
桁上げ伝播加算器210に命令する。4倍データ・マル
チプレクサ232は、結果の下位有効桁64ビットをQ
Lにマップする。
は、2つの拡張倍精度数量XとYを加算するように、信
号224を使用して、乗算ユニット224、位置あわせ
シフト器206、3:2桁上げ保存加算器208および
桁上げ伝播加算器210に命令する。4倍データ・マル
チプレクサ232は、結果の下位有効桁64ビットをQ
Lにマップする。
【0039】命令が4倍精度加算命令510dであると
判定される場合、4倍精度加算マイクロコード226d
が実行される(520)。2つの4倍精度数量QXおよ
びQYの加算は、QCNVTFとQCNVTFLを使用して次の4つ
の拡張倍精度ワードへの変換で始まる。すなわち、lo_
x, hi_x, lo_y,およびhi_yであって、ここで 、無限精
度で加算されるなら、 QX = hi_x + lo_x (1) QY = hi_y + lo_y (2) QXとQYの加算(QX + QY = sum)は、次の方程式(3)を使
用して行われる。 hi_sum+lo_sum=lo_x+lo_y+hi_x+hi_y (3) 拡張倍形式に追加されるスティッキー・ビットが、EE
E−754丸めモードに従って、いかなる4倍精度演算
における結果の適切な丸めをも保証するために使われ
る。結果として拡張倍精度数量を生み出す演算が1にセ
ットされている最小有効桁ビットより小さい有効桁ビッ
トを持つならば、スティッキー・ビットは、1にセット
される。スティッキ・ビットのこのような用法を、簡略
化した例を使用して以下に例示する。以下の例示で使用
する浮動小数点形式は、1ビットの符号ビット、2ビッ
トの指数部、5ビットの小数部および1ビットのスティ
ッキー・ビットを持つ。
判定される場合、4倍精度加算マイクロコード226d
が実行される(520)。2つの4倍精度数量QXおよ
びQYの加算は、QCNVTFとQCNVTFLを使用して次の4つ
の拡張倍精度ワードへの変換で始まる。すなわち、lo_
x, hi_x, lo_y,およびhi_yであって、ここで 、無限精
度で加算されるなら、 QX = hi_x + lo_x (1) QY = hi_y + lo_y (2) QXとQYの加算(QX + QY = sum)は、次の方程式(3)を使
用して行われる。 hi_sum+lo_sum=lo_x+lo_y+hi_x+hi_y (3) 拡張倍形式に追加されるスティッキー・ビットが、EE
E−754丸めモードに従って、いかなる4倍精度演算
における結果の適切な丸めをも保証するために使われ
る。結果として拡張倍精度数量を生み出す演算が1にセ
ットされている最小有効桁ビットより小さい有効桁ビッ
トを持つならば、スティッキー・ビットは、1にセット
される。スティッキ・ビットのこのような用法を、簡略
化した例を使用して以下に例示する。以下の例示で使用
する浮動小数点形式は、1ビットの符号ビット、2ビッ
トの指数部、5ビットの小数部および1ビットのスティ
ッキー・ビットを持つ。
【0040】100.00および001.0001という2つの2進浮
動小数点数量の加算を想定する。上述の形式において、
これら2つの数量は(スティッキー・ビットなしで)、 s e f (s-符号, e-指数部, f-小数部) 0 10 10000 0 00 10001 と表現される。加算演算は、先ず、2番目の数の小数部
を2つの2進数位置だけシフトさせることによって2つ
の指数部を調節する。すなわち、 s e f r (s-符号, e-指数部, f-小数部, r-剰余) 0 10 10000 0 10 00100 01 となる。このようにして、2番目の数値の最小有効数の
1が、所与の浮動小数点形式の小数部フィールドの範囲
外にシフトされる。2つの小数部が加算され、次の結果
を生み出す。 s e f r 0 10 10100 01 この結果が、当該形式の小数部フィールドの最小有効桁
よりも小さい最小有効桁である位置にセットされた1を
持つので、この結果のスティッキー・ビットは1にセッ
トされる。
動小数点数量の加算を想定する。上述の形式において、
これら2つの数量は(スティッキー・ビットなしで)、 s e f (s-符号, e-指数部, f-小数部) 0 10 10000 0 00 10001 と表現される。加算演算は、先ず、2番目の数の小数部
を2つの2進数位置だけシフトさせることによって2つ
の指数部を調節する。すなわち、 s e f r (s-符号, e-指数部, f-小数部, r-剰余) 0 10 10000 0 10 00100 01 となる。このようにして、2番目の数値の最小有効数の
1が、所与の浮動小数点形式の小数部フィールドの範囲
外にシフトされる。2つの小数部が加算され、次の結果
を生み出す。 s e f r 0 10 10100 01 この結果が、当該形式の小数部フィールドの最小有効桁
よりも小さい最小有効桁である位置にセットされた1を
持つので、この結果のスティッキー・ビットは1にセッ
トされる。
【0041】スティッキー・ビットは、2つの拡張倍精
度ワードによって表される4倍精度数量の丸め操作の間
に使われる。本発明は、QRND (x, y, u, MODE) および
QRNL(x, y, v, MODE)という2つの丸め命令を含む。拡
張倍精度のペアに関する計算の決着時点で、結果は、4
倍精度数値が持つ最小有効桁の数に丸められる。4倍精
度数値の有効桁は、拡張倍精度数値が持つビット数の2
倍未満でなければならない。丸め操作は、拡張倍精度数
値の別のペアとして結果を戻す。そこでは、有効桁ビッ
トの総数は、4倍精度形式数値で許容されるビット数に
等しく、低位ビットは、指定された丸めモードに従って
丸められている。拡張倍精度数値の各々にセットされた
スティッキー・ビットが、指定されたモードに従って正
確に丸めを行うために使用される。
度ワードによって表される4倍精度数量の丸め操作の間
に使われる。本発明は、QRND (x, y, u, MODE) および
QRNL(x, y, v, MODE)という2つの丸め命令を含む。拡
張倍精度のペアに関する計算の決着時点で、結果は、4
倍精度数値が持つ最小有効桁の数に丸められる。4倍精
度数値の有効桁は、拡張倍精度数値が持つビット数の2
倍未満でなければならない。丸め操作は、拡張倍精度数
値の別のペアとして結果を戻す。そこでは、有効桁ビッ
トの総数は、4倍精度形式数値で許容されるビット数に
等しく、低位ビットは、指定された丸めモードに従って
丸められている。拡張倍精度数値の各々にセットされた
スティッキー・ビットが、指定されたモードに従って正
確に丸めを行うために使用される。
【0042】本発明の倍の拡張倍精度表示は、2つの拡
張倍精度ワードを結合したものである。各拡張倍精度ワ
ードは、64ビットの有効桁、すなわち、1ビットの明
示的先行ビットおよび63ビットの小数部を含む。倍の
拡張倍精度表示のために結合される有効桁は、128ビ
ットである。しかし、図3の(c)の4倍精度表示は、
113ビットの有効桁、すなわち、1ビットの暗示的先
行ビットおよび112ビットの小数部のみを必要とす
る。倍の拡張倍精度表示における残りの15ビットは、
ガード・ビット(すなわち保護ビット)である。
張倍精度ワードを結合したものである。各拡張倍精度ワ
ードは、64ビットの有効桁、すなわち、1ビットの明
示的先行ビットおよび63ビットの小数部を含む。倍の
拡張倍精度表示のために結合される有効桁は、128ビ
ットである。しかし、図3の(c)の4倍精度表示は、
113ビットの有効桁、すなわち、1ビットの暗示的先
行ビットおよび112ビットの小数部のみを必要とす
る。倍の拡張倍精度表示における残りの15ビットは、
ガード・ビット(すなわち保護ビット)である。
【0043】算術演算の間、いかなる加算および減算オ
ペランドも同じ指数部を持つように、オペランド有効桁
はシフトされ、オペランド指数は調整される。有効桁が
右にシフトされるにつれ、ガード・ビットは、所与のデ
ータ形式の範囲外へシフトされた有効桁部分を保持す
る。最小有効ガード桁が、スティッキー・ビットにシフ
トされる。スティッキー・ビットが1にセットされる
際、スティッキー・ビットへの最小有効ガード桁から1
がシフトされるので、スティッキー・ビットは、1にセ
ットされたままとなる。
ペランドも同じ指数部を持つように、オペランド有効桁
はシフトされ、オペランド指数は調整される。有効桁が
右にシフトされるにつれ、ガード・ビットは、所与のデ
ータ形式の範囲外へシフトされた有効桁部分を保持す
る。最小有効ガード桁が、スティッキー・ビットにシフ
トされる。スティッキー・ビットが1にセットされる
際、スティッキー・ビットへの最小有効ガード桁から1
がシフトされるので、スティッキー・ビットは、1にセ
ットされたままとなる。
【0044】ガード桁とスティッキー・ビットが、最近
似値への丸め(round-to-nearest)モードの間使われ
る。最近似値への丸めには、最近似値偶数丸め(round-
to-nearest-even)と最近似値奇数丸め(round-to-neares
t-odd)という2つのタイプがある。これらの2つのモー
ドの間の相違は、値が2つの近似値の丁度中間にある場
合偶数か奇数のどちらの近似値を選択するかを定めるも
のである。ほとんどの場合、偶数が使われる。表1は、
有効数字の最小有効桁(L)、丸めビット(R)、ガー
ド・ビット(G)およびスティッキ・ビット(S)の値
に基づいてとられる動作を示す。動作ビット(A)は、
適切な丸めが得られるようにRに加えられるビットであ
る。表1において、"X"は、「注意不要」、すなわち、
そのビットの値は重要でないことを示し、"*"は、少な
くとも1つの保護ビットが値1を持つことを示す。
似値への丸め(round-to-nearest)モードの間使われ
る。最近似値への丸めには、最近似値偶数丸め(round-
to-nearest-even)と最近似値奇数丸め(round-to-neares
t-odd)という2つのタイプがある。これらの2つのモー
ドの間の相違は、値が2つの近似値の丁度中間にある場
合偶数か奇数のどちらの近似値を選択するかを定めるも
のである。ほとんどの場合、偶数が使われる。表1は、
有効数字の最小有効桁(L)、丸めビット(R)、ガー
ド・ビット(G)およびスティッキ・ビット(S)の値
に基づいてとられる動作を示す。動作ビット(A)は、
適切な丸めが得られるようにRに加えられるビットであ
る。表1において、"X"は、「注意不要」、すなわち、
そのビットの値は重要でないことを示し、"*"は、少な
くとも1つの保護ビットが値1を持つことを示す。
【0045】
【表1】L R G S 動作 A X 0 0 0 正確な結果。丸め不要。 X X 0 0 0 不正確な結果であるが、有効桁は正しく丸められた。 X X 0 * X 不正確な結果であるが、有効桁は正しく丸められた。 X 0 1 0 0 2つの最近似値の中間で、偶数の有効桁をもつケース。 0 丸められない。 1 1 0 0 2つの最近似値の中間で、奇数の有効桁をもつケース。 1 偶数の最近似値へ丸められる。 X 1 0 1 Lビットに1を加えることによって最近似値へ丸め 1 られる。 X 1 * 1 Lビットに1を加えることによって最近似値へ 1 丸められる。
【0046】制御装置222が丸め命令510gに出会
うと、丸めマイクロコード(226g)が実行されレジ
スタ・ファイル(222)へ適切な制御信号(224)
を送り、適切な出力ポートに2つの拡張倍精度数量を出
力し、それにより、乗算ユニット204、位置あわせシ
フト器206、3:2桁上げ加算器208および桁上げ
伝播加算器210が、2つの拡張倍精度数量を加算する
(525)。
うと、丸めマイクロコード(226g)が実行されレジ
スタ・ファイル(222)へ適切な制御信号(224)
を送り、適切な出力ポートに2つの拡張倍精度数量を出
力し、それにより、乗算ユニット204、位置あわせシ
フト器206、3:2桁上げ加算器208および桁上げ
伝播加算器210が、2つの拡張倍精度数量を加算する
(525)。
【0047】次に、4倍データ・マルチプレクサ232
が、加算の結果を正規化シフト器212に渡し、そこで
結果が正規化される。次に、正規化された結果は、丸め
増分器214によって処理される。丸め増分器214
は、スティッキー制御論理215を含む。オペランドが
スティッキー・ビットを含むか、あるいは、和が、加算
器210または正規化シフト器212の出力において表
されることができない非ゼロ・ビットを含む場合、丸め
増分器214へ渡される低位入力ビットは、1にセット
される。
が、加算の結果を正規化シフト器212に渡し、そこで
結果が正規化される。次に、正規化された結果は、丸め
増分器214によって処理される。丸め増分器214
は、スティッキー制御論理215を含む。オペランドが
スティッキー・ビットを含むか、あるいは、和が、加算
器210または正規化シフト器212の出力において表
されることができない非ゼロ・ビットを含む場合、丸め
増分器214へ渡される低位入力ビットは、1にセット
される。
【0048】IEEE−754には、最近似値へ丸め
(round-to-nearest),ゼロへの丸め(round-to-zer
o)、不定値への丸め(round-to-infinity),および負
の不定値への丸め(round- to-negative-infinity)と
いう4つの丸めモードがある。第1のモードは、有効桁
の最近似値へ丸め、残りが正確に0.5である時は偶数
値へ丸める。2番目は、有効桁に合わない小数部のビッ
トを切り捨てる。これは、一般に、切捨てとして知られ
ている。第3のモードは、次の最も大きい数値に丸めら
れることを意味する。第4のモードは、次に小さい数値
に丸められることを意味する。実際問題として、最近近
似値へ丸め(round-to-nearest)のモードは、最も実行
するのが難しい。これらのモードは、丸め命令において
MODEオペランドとして指定される。
(round-to-nearest),ゼロへの丸め(round-to-zer
o)、不定値への丸め(round-to-infinity),および負
の不定値への丸め(round- to-negative-infinity)と
いう4つの丸めモードがある。第1のモードは、有効桁
の最近似値へ丸め、残りが正確に0.5である時は偶数
値へ丸める。2番目は、有効桁に合わない小数部のビッ
トを切り捨てる。これは、一般に、切捨てとして知られ
ている。第3のモードは、次の最も大きい数値に丸めら
れることを意味する。第4のモードは、次に小さい数値
に丸められることを意味する。実際問題として、最近近
似値へ丸め(round-to-nearest)のモードは、最も実行
するのが難しい。これらのモードは、丸め命令において
MODEオペランドとして指定される。
【0049】次に、丸められた結果は、高位部ラッチ2
16および低位部ラッチ218へマップされる。制御装
置222がQRND命令を処理しているならば、マルチプレ
クサ220は、制御信号224の制御に従って、高位部
ラッチ216の内容をレジスタ・ファイル202に戻
す。制御装置222がQRNL命令を処理しているならば、
マルチプレクサ220は、制御信号224の制御に従っ
て、低位部ラッチ218の内容をレジスタ・ファイル2
02に戻す。
16および低位部ラッチ218へマップされる。制御装
置222がQRND命令を処理しているならば、マルチプレ
クサ220は、制御信号224の制御に従って、高位部
ラッチ216の内容をレジスタ・ファイル202に戻
す。制御装置222がQRNL命令を処理しているならば、
マルチプレクサ220は、制御信号224の制御に従っ
て、低位部ラッチ218の内容をレジスタ・ファイル2
02に戻す。
【0050】4倍精度加算の記述に戻って、方程式(3)
は、次の表2の命令シーケンスを使用して実行される。
は、次の表2の命令シーケンスを使用して実行される。
【0051】
【表2】 QCNVTF , x, , hi_x QCNVTFL , x, , lo_x QCNVTF , y, , hi_y QCNVTFL , y, , lo_y FADD , lo_x, lo_y, a [RZ] a <- lo_x+lo_y FMPYADDSL 1.0, a, hi_y, lo_b [RZ] lo_b <- a+hi_y FADD , a, hi_y, hi_b [RZ] hi_b <- a+hi_y FADD , hi_x, hi_b, hi_c [RZ] hi_c <- hi_x+hi_b FMPYADDSL 1.0, hi_x, hi_b, lo_c [RZ] lo_c <- hi_x+hi_b FADD , lo_b, lo_c, lo_c [RZ] lo_c <- lo_c+lo_b FADD , lo_c, hi_c, hi_d [RZ] hi_d <- lo_c+hi_c FMPYADDSL 1.0, lo_c, hi_c, lo_d [RZ] lo_d <- lo_c+hi_c QRNL mode, hi_d, lo_d, lo_sum [R?] lo_sum <- hi_d+lo_d[@113] QRND mode, hi_d, lo_d, hi_sum [R?] hi_sum <- hi_d+lo_d[@113] FCNVTQH ,lo_sum, hi_sum, qh FCNVTQL ,lo_sum, hi_sum, ql 4倍精度加算を実施する命令の各々は、そのそれぞれの
中間結果のスティッキー・ビットをセットする。加算項
目の最小有効桁部分から加算結果の低位部分へのスティ
ッキー・ビットの適切な伝播を確実にするため命令の順
序は重要である。
中間結果のスティッキー・ビットをセットする。加算項
目の最小有効桁部分から加算結果の低位部分へのスティ
ッキー・ビットの適切な伝播を確実にするため命令の順
序は重要である。
【0052】各命令は、特定の丸めモードで実行され
る。すべての中間の演算は、ゼロへの丸め(round-to-z
ero)モード(RZ)で実行される点に注意する必要があ
る。これは、単調性を保証し、スティッキー制御論理2
15をイネーブルする。
る。すべての中間の演算は、ゼロへの丸め(round-to-z
ero)モード(RZ)で実行される点に注意する必要があ
る。これは、単調性を保証し、スティッキー制御論理2
15をイネーブルする。
【0053】演算がRZモードで実行される時、オペラン
ドが非ゼロのスティッキー・ビットを持つか、あるい
は、結果が正確でない場合、スティッキー制御論理21
5は、結果のスティッキー・ビットに1をセットする。
丸めモードがゼロへの丸め以外の丸めモードであれば、
結果のスティッキー・ビットは、0にセットされる。
ドが非ゼロのスティッキー・ビットを持つか、あるい
は、結果が正確でない場合、スティッキー制御論理21
5は、結果のスティッキー・ビットに1をセットする。
丸めモードがゼロへの丸め以外の丸めモードであれば、
結果のスティッキー・ビットは、0にセットされる。
【0054】命令が、4倍精度減算命令510eである
と判定されると、4倍精度減算マイクロコード226e
が実行される。2つの4倍精度数量QXおよびQYの減
算は、QCNVTFとQCNVTFLを使用して次の4つの拡張倍精
度ワードへ の変換で始まる。すなわち、lo_x, hi_x, l
o_y,およびhi_yであって、ここで 、無限精度で加算さ
れるなら、 QX = hi_x + lo_x (4) QY = hi_y + 1o_y (5) QXとQYの減算(QX - QY = rem)は、次の方程式(6)を使
用して行われる。 hi_rem+lo_rem=lo_x-lo_y+hi_x-hi_y (6) 方程式(6)は、次の表3の命令シーケンスを使用して実
行される。
と判定されると、4倍精度減算マイクロコード226e
が実行される。2つの4倍精度数量QXおよびQYの減
算は、QCNVTFとQCNVTFLを使用して次の4つの拡張倍精
度ワードへ の変換で始まる。すなわち、lo_x, hi_x, l
o_y,およびhi_yであって、ここで 、無限精度で加算さ
れるなら、 QX = hi_x + lo_x (4) QY = hi_y + 1o_y (5) QXとQYの減算(QX - QY = rem)は、次の方程式(6)を使
用して行われる。 hi_rem+lo_rem=lo_x-lo_y+hi_x-hi_y (6) 方程式(6)は、次の表3の命令シーケンスを使用して実
行される。
【0055】
【表3】 QCNVTF , x, , hi_x QCNVTFL , x, , lo_x QCNVTF , y, , hi_y QCNVTFL , y, , lo_y FSUB , lo_x, lo_y, a [RZ] a <- lo_x-lo_y FMPYSUBSL 1.0, a, hi_y, lo_b [RZ] lo_b <- a-hi_y FSUB , a, hi_y, hi_b [RZ] hi_b <- a-hi_y FSUB , hi_x, hi_b, hi_c [RZ] hi_c <- hi_x-hi_b FMPYSUBSL 1.0, hi_x, hi_b, lo_c [RZ] lo_c <- hi_x-hi_b FADD , lo_b, lo_c, lo_c [RZ] lo_c <- lo_c+lo_b FADD , lo_c, hi_c, hi_d [RZ] hi_d <- lo_c+hi_c FMPYADDSL 1.0, lo_c, hi_c, lo_d [RZ] lo_d <- lo_c+hi_c QRNL mode, hi_d, lo_d, lo_sum [R?] lo_sum <- hi_d+lo_d[@113] QRND mode, hi_d, lo_d, hi_sum [R?] hi_sum <- hi_d+lo_d[@113] FCNVTQH ,hi_sum, lo_sum, qh FCNVTQL ,hi_sum, lo_sum, ql 命令が4倍精度乗算命令510cであると判定される場
合、4倍精度加算マイクロコード226cが実行される
(518)。2つの4倍精度数量QXおよびQYの加算
は、QCNVTFとQCNVTFLを使用して次の4つの拡張倍精度
ワードへ の変換で始まる。すなわち、lo_x, hi_x, lo_
y,およびhi_yであって、ここで 、無限精度で加算され
るなら、 QX = hi_x + lo_x (7) QY = hi_y + 1o_y (8) QXとQYの加算(QX * QY = p)は、次の方程式(3)を使用
して行われる。 hi_p+lo_p=lo_x*lo_y+hi_x*lo_y+lo_x*hi_y+hi_x*hi_y (9) 方程式(9)は、次の表4の命令シーケンスを使用して実
行される。
合、4倍精度加算マイクロコード226cが実行される
(518)。2つの4倍精度数量QXおよびQYの加算
は、QCNVTFとQCNVTFLを使用して次の4つの拡張倍精度
ワードへ の変換で始まる。すなわち、lo_x, hi_x, lo_
y,およびhi_yであって、ここで 、無限精度で加算され
るなら、 QX = hi_x + lo_x (7) QY = hi_y + 1o_y (8) QXとQYの加算(QX * QY = p)は、次の方程式(3)を使用
して行われる。 hi_p+lo_p=lo_x*lo_y+hi_x*lo_y+lo_x*hi_y+hi_x*hi_y (9) 方程式(9)は、次の表4の命令シーケンスを使用して実
行される。
【0056】
【表4】 QCNVTF , x, , hi_x QCNVTFL , x, , lo_x QCNVTF , y, , hi_y QCNVTFL , y, , lo_y FMPY lo_x, lo_y, , a [RZ] a <- lo_x*lo_y FMPYADD hi_x, lo_y, a , hi_b [RZ] hi_b <- hi_x*lo_y+a FADDADDSL hi_x, lo_y, a , lo_b [RZ] lo_b <- hi_x*lo_y+a FMPYADD lo_x, hi_y, lo_b, hi_c [RZ] hi_c <- lo_x*hi_y+lo_b FMPYADDSL lo_x, hi_y, lo_b, lo_c [RZ] lo_c <- lo_x*hi_y+lo_b FADD , hi_b, lo_c, hi_d [RZ] hi_d <- hi_b+lo_c FADD , hi_d, hi_c, hi_e [RZ] hi_e <- hi_d+hi_c FMPYADD hi_x, hi_y, hi_e, hi_f [RZ] hi_f <- hi_x*hi_y+hi_e FMPYADDSL hi_x, hi_y, hi_e, lo_f [RZ] lo_f <- hi_x*hi_y+hi_e QRND , lo_f, hi_f, hi_p [R?] hi_p <- lo_f+hi_f[@113] QRNL , lo_f, hi_f, lo_p [R?] lo_p <- lo_f+hi_f[@113] FCNVTQH , hi_p, lo_p, zh FCNVTQL , hi_p, lo_p, zl 上述されてないその他の4倍精度演算が実行されること
もある(527)。また、パフォーマンスの理由から、
図1および図2の実施例は,よく知られている回路を使
用して改良することができるであろう。例えば、レジス
タ・ファイルと乗算ユニットまたは位置合せシフト器と
の間にラッチを追加してそれらのパイプライン化を図る
ことができよう。また、乗算ユニットおよび位置合せシ
フト器に一層迅速に供給できるように、レジスタ・ファ
イル202、乗算ユニット204および206の間にマ
ルチプレクサを挿入することもできる。上記およびその
他多数の既知の改良は、本発明を構成してはいないが、
ハードウェアに関する重要な設計選択の対象である。こ
の点について、本明細書ではこれ以上の言及を行わな
い。
もある(527)。また、パフォーマンスの理由から、
図1および図2の実施例は,よく知られている回路を使
用して改良することができるであろう。例えば、レジス
タ・ファイルと乗算ユニットまたは位置合せシフト器と
の間にラッチを追加してそれらのパイプライン化を図る
ことができよう。また、乗算ユニットおよび位置合せシ
フト器に一層迅速に供給できるように、レジスタ・ファ
イル202、乗算ユニット204および206の間にマ
ルチプレクサを挿入することもできる。上記およびその
他多数の既知の改良は、本発明を構成してはいないが、
ハードウェアに関する重要な設計選択の対象である。こ
の点について、本明細書ではこれ以上の言及を行わな
い。
【0057】2つのハードウェア精度数値の積における
すべての桁、および和の先行4倍(例えば、2N)精度
部分を、ハードウェアが提供することができると本発明
は仮定している。現在、2つの倍精度数値の乗算の4倍
精度結果(即ちすべての桁)を戻すコンピュータもあれ
ば、そのような命令を備えていないコンピュータもあ
る。例えば、IBM S/370のようなコンピュータ
は、2つの数値の和の4倍精度部分を戻す命令を備えて
いる。
すべての桁、および和の先行4倍(例えば、2N)精度
部分を、ハードウェアが提供することができると本発明
は仮定している。現在、2つの倍精度数値の乗算の4倍
精度結果(即ちすべての桁)を戻すコンピュータもあれ
ば、そのような命令を備えていないコンピュータもあ
る。例えば、IBM S/370のようなコンピュータ
は、2つの数値の和の4倍精度部分を戻す命令を備えて
いる。
【0058】本発明には、例として次のような実施様態
が含まれる。 (1)各々が1つの値を記憶する複数のセルを持つメモ
リを備えたコンピュータにおいて、(A)第1の4倍精
度数量を第1の拡張倍精度数量ペアに変換し、上記第1
の拡張倍精度数量ペアを第1および第2の拡張倍精度数
量格納手段に記憶するステップと、(B)上記第1の拡
張倍精度数量ペアに対する少なくとも1つの拡張倍精度
算術演算を実行することによって、第2の拡張倍精度数
量ペアを生成し、この第2の拡張倍精度数量ペアを第3
および第4の拡張倍精度数量格納手段に記憶するステッ
プと、(C)上記第2の拡張倍精度数量ペアを第2の4倍
精度数量に変換するステップと、を含む4倍精度算術演
算を実行する方法。 (2)上記第1の4倍精度数量が符号ビット、複数の指
数部ビットおよび複数の小数部ビットを含み、上記第1
の4倍精度数量を変換するステップ(A)が、(A.1)上記
符号ビットの値を上記第1の拡張倍精度数量の符号ビッ
トおよび上記第3の拡張倍精度数量格納手段の符号ビッ
トへ割り当てるステップと、(A.2)上記4倍精度数量の
上記指数部の値を上記第1の拡張倍精度数量格納手段の
指数部フィールドへ割り当てるステップと、(A.3)上記
小数部の第1の部分の値を上記第1の拡張倍精度数量格
納手段の小数部フィールドへ割り当てるステップと、
(A.4)上記4倍精度数量の指数部から小数部フィールド
の長さを差し引き、その結果を上記第2の拡張倍精度数
量格納手段の指数部フィールドに記憶するステップと、
(A.5)上記小数部の第2の部分の値を上記第2の拡張倍
精度数量格納手段の小数部フィールドへ割り当てるステ
ップと、(A.6)上記第1の拡張倍精度格納手段のスティ
ッキー・ビットおよび上記第2の拡張倍精度格納手段の
スティッキー・ビットに値ゼロを割り当てるステップ
と、を含む上記(1)に記載の方法。 (3)上記第2の拡張倍精度数量ペアを変換するステッ
プ(C)が、(C.1)上記第2の拡張倍精度数量ペアを4倍精
度数量の高位部分へ変換するステップと、(C.2)上記第
2の拡張倍精度数量ペアを4倍精度数量の低位部分へ変
換するステップと、を含む上記(1)に記載の方法。
が含まれる。 (1)各々が1つの値を記憶する複数のセルを持つメモ
リを備えたコンピュータにおいて、(A)第1の4倍精
度数量を第1の拡張倍精度数量ペアに変換し、上記第1
の拡張倍精度数量ペアを第1および第2の拡張倍精度数
量格納手段に記憶するステップと、(B)上記第1の拡
張倍精度数量ペアに対する少なくとも1つの拡張倍精度
算術演算を実行することによって、第2の拡張倍精度数
量ペアを生成し、この第2の拡張倍精度数量ペアを第3
および第4の拡張倍精度数量格納手段に記憶するステッ
プと、(C)上記第2の拡張倍精度数量ペアを第2の4倍
精度数量に変換するステップと、を含む4倍精度算術演
算を実行する方法。 (2)上記第1の4倍精度数量が符号ビット、複数の指
数部ビットおよび複数の小数部ビットを含み、上記第1
の4倍精度数量を変換するステップ(A)が、(A.1)上記
符号ビットの値を上記第1の拡張倍精度数量の符号ビッ
トおよび上記第3の拡張倍精度数量格納手段の符号ビッ
トへ割り当てるステップと、(A.2)上記4倍精度数量の
上記指数部の値を上記第1の拡張倍精度数量格納手段の
指数部フィールドへ割り当てるステップと、(A.3)上記
小数部の第1の部分の値を上記第1の拡張倍精度数量格
納手段の小数部フィールドへ割り当てるステップと、
(A.4)上記4倍精度数量の指数部から小数部フィールド
の長さを差し引き、その結果を上記第2の拡張倍精度数
量格納手段の指数部フィールドに記憶するステップと、
(A.5)上記小数部の第2の部分の値を上記第2の拡張倍
精度数量格納手段の小数部フィールドへ割り当てるステ
ップと、(A.6)上記第1の拡張倍精度格納手段のスティ
ッキー・ビットおよび上記第2の拡張倍精度格納手段の
スティッキー・ビットに値ゼロを割り当てるステップ
と、を含む上記(1)に記載の方法。 (3)上記第2の拡張倍精度数量ペアを変換するステッ
プ(C)が、(C.1)上記第2の拡張倍精度数量ペアを4倍精
度数量の高位部分へ変換するステップと、(C.2)上記第
2の拡張倍精度数量ペアを4倍精度数量の低位部分へ変
換するステップと、を含む上記(1)に記載の方法。
【0059】(4)上記ステップ(C.1)が、上記拡張倍
精度数量ペアを互いに加算し、それによって、符号ビッ
ト、指数部および小数部を持つ和を作成するステップ
と、和の符号ビット、指数部および小数部の最大有効桁
部分を倍精度格納手段に記憶するステップを含む上記
(3)に記載の方法。 (5)上記ステップ(C.2)が上記拡張倍精度数量ペアを
互いに加算し、それによって、符号ビット、指数部およ
び小数部を持つ和を作成するステップと、上記和の小数
部の最小有効桁部分を倍精度格納手段に記憶するステッ
プを含む上記(3)に記載の方法。 (6)上記ステップ(B)が、(B.1)上記算術演算の少くと
も1つが上記第3の拡張倍精度数量格納手段に記憶され
た値を変え、かつ、上記算術演算が上記第3の拡張倍精
度数量格納手段の範囲を越える有効桁を持つ結果を生み
出す時、上記第3の拡張倍精度数量格納手段のスティッ
キー・ビットを1にセットするステップと、(B.2)上記
算術演算の少くとも1つが上記第4の拡張倍精度数量格
納手段に記憶された値を変え、かつ、上記算術演算が上
記第4の拡張倍精度数量格納手段の範囲を越える有効桁
を持つ結果を生み出す時、上記第4の拡張倍精度数量格
納手段のスティッキー・ビットを1にセットするステッ
プと、を含む上記(1)に記載の方法。 (7)(D)上記スティッキー・ビットを使用して、拡張
倍精度数量ペアによって表される4倍精度数量を、複数
の丸めモードの1つに従って、丸めるステップを、更に
含む上記(6)に記載の方法。 (8)上記複数の丸めモードが、最近似値へ丸め(roun
d-to-nearest),ゼロへの丸め(round-to-zero) 不定
値への丸め(round-to-infinity),および負の不定値へ
の丸め(round- to-negative-infinity)という4つの
丸めモードを含む上記(7)に記載の方法。 (9)上記ステップ(D)が,上記拡張倍精度数量ペアを加
算し、符号ビット、指数部、小数部およびスティッキー
・ビットを持つ4倍精度結果を生成するステップと、上
記4倍精度結果の符号ビット、指数部、および小数部の
最大有効桁部分を第1の拡張倍精度格納手段に記憶する
ステップと、上記4倍精度結果の小数部の最小有効桁部
分を第2の拡張倍精度格納手段に記憶するステップと、
最近似値への丸めモードの場合、上記拡張倍精度数量ペ
アのいずれかのスティッキー・ビットが1であれば、上
記第2の拡張倍精度格納手段の最小有効桁を1にセット
するステップと、を含む、上記(8)に記載の方法。
精度数量ペアを互いに加算し、それによって、符号ビッ
ト、指数部および小数部を持つ和を作成するステップ
と、和の符号ビット、指数部および小数部の最大有効桁
部分を倍精度格納手段に記憶するステップを含む上記
(3)に記載の方法。 (5)上記ステップ(C.2)が上記拡張倍精度数量ペアを
互いに加算し、それによって、符号ビット、指数部およ
び小数部を持つ和を作成するステップと、上記和の小数
部の最小有効桁部分を倍精度格納手段に記憶するステッ
プを含む上記(3)に記載の方法。 (6)上記ステップ(B)が、(B.1)上記算術演算の少くと
も1つが上記第3の拡張倍精度数量格納手段に記憶され
た値を変え、かつ、上記算術演算が上記第3の拡張倍精
度数量格納手段の範囲を越える有効桁を持つ結果を生み
出す時、上記第3の拡張倍精度数量格納手段のスティッ
キー・ビットを1にセットするステップと、(B.2)上記
算術演算の少くとも1つが上記第4の拡張倍精度数量格
納手段に記憶された値を変え、かつ、上記算術演算が上
記第4の拡張倍精度数量格納手段の範囲を越える有効桁
を持つ結果を生み出す時、上記第4の拡張倍精度数量格
納手段のスティッキー・ビットを1にセットするステッ
プと、を含む上記(1)に記載の方法。 (7)(D)上記スティッキー・ビットを使用して、拡張
倍精度数量ペアによって表される4倍精度数量を、複数
の丸めモードの1つに従って、丸めるステップを、更に
含む上記(6)に記載の方法。 (8)上記複数の丸めモードが、最近似値へ丸め(roun
d-to-nearest),ゼロへの丸め(round-to-zero) 不定
値への丸め(round-to-infinity),および負の不定値へ
の丸め(round- to-negative-infinity)という4つの
丸めモードを含む上記(7)に記載の方法。 (9)上記ステップ(D)が,上記拡張倍精度数量ペアを加
算し、符号ビット、指数部、小数部およびスティッキー
・ビットを持つ4倍精度結果を生成するステップと、上
記4倍精度結果の符号ビット、指数部、および小数部の
最大有効桁部分を第1の拡張倍精度格納手段に記憶する
ステップと、上記4倍精度結果の小数部の最小有効桁部
分を第2の拡張倍精度格納手段に記憶するステップと、
最近似値への丸めモードの場合、上記拡張倍精度数量ペ
アのいずれかのスティッキー・ビットが1であれば、上
記第2の拡張倍精度格納手段の最小有効桁を1にセット
するステップと、を含む、上記(8)に記載の方法。
【0060】(10)倍精度メモリと倍精度バスを含む
倍精度ハードウェア、および拡張倍精度レジスタと拡張
倍精度算術演算論理ユニットを有する浮動小数点機構を
備えたコンピュータにおいて、(A)4倍精度数量の第1
の部分を上記4倍精度数量を表す倍の拡張倍精度表示の
第1の低位ワードに変換するステップと、(B)上記4倍
精度数量の第2の部分を上記4倍精度数量を表す倍の拡
張倍精度表示の第1の高位ワードに変換するステップ
と、(C)上記拡張倍精度算術演算論理ユニットを使用し
て、第2の低位拡張倍精度数値および第2の高位拡張倍
精度数値によって表される4倍精度の演算結果を入手す
るためのアルゴリズムを活用して、上記第1の高位ワー
ドおよび上記第1の低位ワードに対する少くとも1つの
拡張倍精度算術演算を実行するステップと、(D)上記第
2の低位ワードおよび上記第2の高位ワードを演算結果
の4倍精度数量の高位部へ変換するステップと、(E)上
記第2の低位ワードおよび上記第2の高位ワードを演算
結果の4倍精度数量の低位部へ変換するステップと、を
含む4倍精度演算を実行する方法。 (11)(A.1)上記メモリの第1のワードの内容を持つ
上記拡張倍精度レジスタの第1のレジスタに上記第1の
低位ワードをロードするステップと、(A.2)上記メモリ
の第2のワードの内容を持つ上記拡張倍精度レジスタの
第2のレジスタに上記第1の高位ワードをロードするス
テップと、を含み、上記第1のワードと上記第2のワー
ドが組み合わせられて、1つの4倍精度数量を表す、上
記(10)に記載の方法。
倍精度ハードウェア、および拡張倍精度レジスタと拡張
倍精度算術演算論理ユニットを有する浮動小数点機構を
備えたコンピュータにおいて、(A)4倍精度数量の第1
の部分を上記4倍精度数量を表す倍の拡張倍精度表示の
第1の低位ワードに変換するステップと、(B)上記4倍
精度数量の第2の部分を上記4倍精度数量を表す倍の拡
張倍精度表示の第1の高位ワードに変換するステップ
と、(C)上記拡張倍精度算術演算論理ユニットを使用し
て、第2の低位拡張倍精度数値および第2の高位拡張倍
精度数値によって表される4倍精度の演算結果を入手す
るためのアルゴリズムを活用して、上記第1の高位ワー
ドおよび上記第1の低位ワードに対する少くとも1つの
拡張倍精度算術演算を実行するステップと、(D)上記第
2の低位ワードおよび上記第2の高位ワードを演算結果
の4倍精度数量の高位部へ変換するステップと、(E)上
記第2の低位ワードおよび上記第2の高位ワードを演算
結果の4倍精度数量の低位部へ変換するステップと、を
含む4倍精度演算を実行する方法。 (11)(A.1)上記メモリの第1のワードの内容を持つ
上記拡張倍精度レジスタの第1のレジスタに上記第1の
低位ワードをロードするステップと、(A.2)上記メモリ
の第2のワードの内容を持つ上記拡張倍精度レジスタの
第2のレジスタに上記第1の高位ワードをロードするス
テップと、を含み、上記第1のワードと上記第2のワー
ドが組み合わせられて、1つの4倍精度数量を表す、上
記(10)に記載の方法。
【0061】(12)(A)倍精度ワード幅を持つメモリ
と、(B)拡張倍精度ワード幅を持つレジスタ・ファイル
と、(C)上記メモリの値を上記レジスタ・ファイルへ転
送することができるロード装置と、(D)上記レジスタ・
ファイルに記憶された拡張倍精度数量に対する算術演算
を実行することができる算術論理装置と、(E)上記算術
論理装置に接続し、4倍精度形式と拡張倍精度形式との
間でビットを選択的に転送させることができるマルチプ
レクサのセットと、(F)上記レジスタ・ファイル、上記
算術論理装置および上記マルチプレクサに接続する制御
装置と、(G)上記制御装置に接続し、4倍精度数量を拡
張倍精度数量に変換するための命令を含むマイクロコー
ド・メモリと、を備えた4倍精度演算を実行するための
装置。 (13)(H) 上記制御装置によって制御され、上記レジ
スタ・ファイルに接続し、上記レジスタ・ファイルに記
憶された数量の指数部をシフトすることができる指数調
整器を、更に備える上記(12)に記載の装置。 (14)(I)上記マルチプレクサのセットに接続し、上
記レジスタ・ファイルに記憶された指数部をシフトする
ように動作できる正規化シフト器、を更に備える上記
(12)に記載の装置。 (15)上記レジスタ・ファイルに記憶された各数量
が、スティッキー・ビットを有し、上記算術論理装置
が、算術演算の結果、拡張倍精度ワードで表すことがで
きる限界を越えた2進有効桁が発生する場合、上記ステ
ィッキー・ビットをセットするように動作することがで
きる、上記(12)に記載の装置。 (16)(J)上記正規化シフト器に接続し、上記制御装
置の制御の下、複数の丸めモードに従って浮動小数点数
量を丸めるように動作することができる丸め論理機構を
更に備える上記(15)に記載の装置。 (17)上記マイクロコード・メモリが、上記算術論理
装置に2つの拡張倍精度数値の加算を行わせ、上記丸め
論理機構に複数の丸めモードに従って上記結果の丸めを
行わせ、それにより4倍精度数値を作成する命令を保持
する、上記(16)に記載の装置。 (18)上記マイクロコード・メモリが、2つのオペラ
ンドに対する4倍精度算術演算を実行する命令を保持す
る、上記(12)に記載の装置。 (19)上記マイクロコード命令は、2つの4倍精度オ
ペランドに対する4倍精度数値演算を実行し、無限精度
で上記演算が実行される場合、演算結果が値Qであると
して、上記マイクロコード命令が、2つの拡張倍精度数
量の和が実質的に1つの4倍精度数量に等しくなるよう
に、1つの4倍精度数量を2つの拡張倍精度数量に変換
する命令と、2つの拡張倍精度数量の和が実質的に上記
値Qに等しくなるような2つの拡張倍精度数量が生成さ
れるように上記2つの拡張倍精度数量に対する算術演算
を実行する命令と、上記作成された2つの拡張倍精度数
量を複数の倍精度ワードに記憶される1つの4倍精度数
量に変換する命令と、を含む、上記(12)に記載の装
置。
と、(B)拡張倍精度ワード幅を持つレジスタ・ファイル
と、(C)上記メモリの値を上記レジスタ・ファイルへ転
送することができるロード装置と、(D)上記レジスタ・
ファイルに記憶された拡張倍精度数量に対する算術演算
を実行することができる算術論理装置と、(E)上記算術
論理装置に接続し、4倍精度形式と拡張倍精度形式との
間でビットを選択的に転送させることができるマルチプ
レクサのセットと、(F)上記レジスタ・ファイル、上記
算術論理装置および上記マルチプレクサに接続する制御
装置と、(G)上記制御装置に接続し、4倍精度数量を拡
張倍精度数量に変換するための命令を含むマイクロコー
ド・メモリと、を備えた4倍精度演算を実行するための
装置。 (13)(H) 上記制御装置によって制御され、上記レジ
スタ・ファイルに接続し、上記レジスタ・ファイルに記
憶された数量の指数部をシフトすることができる指数調
整器を、更に備える上記(12)に記載の装置。 (14)(I)上記マルチプレクサのセットに接続し、上
記レジスタ・ファイルに記憶された指数部をシフトする
ように動作できる正規化シフト器、を更に備える上記
(12)に記載の装置。 (15)上記レジスタ・ファイルに記憶された各数量
が、スティッキー・ビットを有し、上記算術論理装置
が、算術演算の結果、拡張倍精度ワードで表すことがで
きる限界を越えた2進有効桁が発生する場合、上記ステ
ィッキー・ビットをセットするように動作することがで
きる、上記(12)に記載の装置。 (16)(J)上記正規化シフト器に接続し、上記制御装
置の制御の下、複数の丸めモードに従って浮動小数点数
量を丸めるように動作することができる丸め論理機構を
更に備える上記(15)に記載の装置。 (17)上記マイクロコード・メモリが、上記算術論理
装置に2つの拡張倍精度数値の加算を行わせ、上記丸め
論理機構に複数の丸めモードに従って上記結果の丸めを
行わせ、それにより4倍精度数値を作成する命令を保持
する、上記(16)に記載の装置。 (18)上記マイクロコード・メモリが、2つのオペラ
ンドに対する4倍精度算術演算を実行する命令を保持す
る、上記(12)に記載の装置。 (19)上記マイクロコード命令は、2つの4倍精度オ
ペランドに対する4倍精度数値演算を実行し、無限精度
で上記演算が実行される場合、演算結果が値Qであると
して、上記マイクロコード命令が、2つの拡張倍精度数
量の和が実質的に1つの4倍精度数量に等しくなるよう
に、1つの4倍精度数量を2つの拡張倍精度数量に変換
する命令と、2つの拡張倍精度数量の和が実質的に上記
値Qに等しくなるような2つの拡張倍精度数量が生成さ
れるように上記2つの拡張倍精度数量に対する算術演算
を実行する命令と、上記作成された2つの拡張倍精度数
量を複数の倍精度ワードに記憶される1つの4倍精度数
量に変換する命令と、を含む、上記(12)に記載の装
置。
【0062】(20)(A)中央処理装置(CPU)と、
(B) 上記CPUに接続し、数量を4倍精度で記憶する能
力を持つメモリと、(C)上記CPUに接続し、(C.1)上記
メモリに接続し、拡張倍精度数量を記憶する能力を持つ
レジスタ・ファイルと、(C.2)上記レジスタ・ファイル
に接続し、拡張倍精度数量に対して算術演算を実行する
能力を持つ算術論理装置と、(C.3)上記制御装置および
上記算術論理装置に接続し、1つの4倍精度数量を2つ
の拡張倍精度数量に変換するように動作することができ
るデータ・マルチプレクサのセットと、(C.4)上記算術
論理装置に接続し、複数の丸めモードのどのモードにも
従って拡張倍精度数量を丸めるように動作することがで
きる丸め増分器と、(C.5)1つの4倍精度数量を倍の拡
張倍精度数量に変換する命令と、拡張倍精度数量に対す
る算術演算を実行する命令と、拡張倍精度数量のペアか
ら1つの4倍精度数量へ変換する命令と、拡張倍精度数
量のペアを丸める命令と、を含むマイクロコード・メモ
リと、(C.6)上記レジスタ・ファイル、上記算術論理装
置、上記データ・マルチプレクサおよび上記丸め増分器
に接続し、上記マイクロコード・メモリに記憶されたマ
イクロコードによって制御され、上記算術演算装置に命
じて拡張倍精度算術演算を実行させ、上記データ・マル
チプレクサに命じて1つの4倍精度数量を拡張倍精度数
量に変換させ、上記丸め増分器に命じて、拡張倍精度数
量および拡張倍精度のペアとして表される4倍精度数量
に対して、複数の丸めモードの1つを使用して、丸めを
実行させる制御装置とを持つ浮動小数点演算ユニット
(FPU)と、を備えた汎用コンピュータ。
(B) 上記CPUに接続し、数量を4倍精度で記憶する能
力を持つメモリと、(C)上記CPUに接続し、(C.1)上記
メモリに接続し、拡張倍精度数量を記憶する能力を持つ
レジスタ・ファイルと、(C.2)上記レジスタ・ファイル
に接続し、拡張倍精度数量に対して算術演算を実行する
能力を持つ算術論理装置と、(C.3)上記制御装置および
上記算術論理装置に接続し、1つの4倍精度数量を2つ
の拡張倍精度数量に変換するように動作することができ
るデータ・マルチプレクサのセットと、(C.4)上記算術
論理装置に接続し、複数の丸めモードのどのモードにも
従って拡張倍精度数量を丸めるように動作することがで
きる丸め増分器と、(C.5)1つの4倍精度数量を倍の拡
張倍精度数量に変換する命令と、拡張倍精度数量に対す
る算術演算を実行する命令と、拡張倍精度数量のペアか
ら1つの4倍精度数量へ変換する命令と、拡張倍精度数
量のペアを丸める命令と、を含むマイクロコード・メモ
リと、(C.6)上記レジスタ・ファイル、上記算術論理装
置、上記データ・マルチプレクサおよび上記丸め増分器
に接続し、上記マイクロコード・メモリに記憶されたマ
イクロコードによって制御され、上記算術演算装置に命
じて拡張倍精度算術演算を実行させ、上記データ・マル
チプレクサに命じて1つの4倍精度数量を拡張倍精度数
量に変換させ、上記丸め増分器に命じて、拡張倍精度数
量および拡張倍精度のペアとして表される4倍精度数量
に対して、複数の丸めモードの1つを使用して、丸めを
実行させる制御装置とを持つ浮動小数点演算ユニット
(FPU)と、を備えた汎用コンピュータ。
【0063】
【発明の効果】本発明によって、4倍精度数量の算術演
算機構を備えていないハードウェア上で、4倍精度数量
の浮動小数点演算を高速に実行することができる。ま
た、丸めが必要な場合、IEEE−754規格の丸めモ
ードに準拠した正確な丸めが同時に実行される。
算機構を備えていないハードウェア上で、4倍精度数量
の浮動小数点演算を高速に実行することができる。ま
た、丸めが必要な場合、IEEE−754規格の丸めモ
ードに準拠した正確な丸めが同時に実行される。
【図1】本発明の好ましい実施例に従った浮動小数点演
算装置を持つプロセッサのブロック図である。
算装置を持つプロセッサのブロック図である。
【図2】本発明の好ましい実施例に従った浮動小数点演
算装置のブロック図である。
算装置のブロック図である。
【図3】種々の浮動小数点形式を示す図である。
【図4】種々の浮動小数点形式を記憶するコンピュータ
・メモリを示す図である。
・メモリを示す図である。
【図5】制御装置によって実行される基本動作の流れ図
である。
である。
100 プロセッサ 101 中央処理装置(CPU) 103 特殊機構 105 変換ルックアサイド・バッファ(TLB) 107 キャッシュ 109 浮動小数点演算ユニット(FPU) 111 バス 113 中央バス 200 浮動小数点演算機構 202 レジスタ・ファイル 204 乗算ユニット 206 位置合せシフト器 207 信号 208 3:2桁上げ保存加算器 210 桁上げ伝播加算器(CPA) 212 正規化シフト器 214 丸め増分器 216 高位部ラッチ 218 低位部ラッチ 220 マルチプレクサ 222 制御装置 224 制御信号 226 マイクロコード・メモリ 228 システム・メモリ 230 指数調整器 232 4倍精度データ・マルチプレクサ
フロントページの続き (72)発明者 デニス・ブルゼジンスキ アメリカ合衆国94087カリフォルニア州サ ニーベール、ブルックリン・ドライブ 824
Claims (1)
- 【請求項1】各々が1つの値を記憶する複数のセルを持
つメモリを備えたコンピュータにおいて、 第1の4倍精度数量を第1の拡張倍精度数量ペアに変換
し、上記第1の拡張倍精度数量ペアを第1および第2の
拡張倍精度数量格納手段に記憶するステップと、 上記第1の拡張倍精度数量ペアに対する少なくとも1つ
の拡張倍精度算術演算を実行することによって、第2の
拡張倍精度数量ペアを生成し、この第2の拡張倍精度数
量ペアを第3および第4の拡張倍精度数量格納手段に記
憶するステップと、 上記第2の拡張倍精度数量ペアを第2の4倍精度数量に
変換するステップと、 を含む4倍精度算術演算を実行する方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/330,391 US5631859A (en) | 1994-10-27 | 1994-10-27 | Floating point arithmetic unit having logic for quad precision arithmetic |
US330,391 | 1994-10-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08185309A true JPH08185309A (ja) | 1996-07-16 |
Family
ID=23289556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7258341A Pending JPH08185309A (ja) | 1994-10-27 | 1995-10-05 | 4倍精度演算の実行方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5631859A (ja) |
JP (1) | JPH08185309A (ja) |
DE (1) | DE19540102C2 (ja) |
GB (1) | GB2294565A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631391B1 (en) | 1999-04-09 | 2003-10-07 | Fuji Xerox Co., Ltd. | Parallel computer system and parallel computing method |
JP2012198666A (ja) * | 2011-03-18 | 2012-10-18 | Fujitsu Ltd | 数値丸め方法,数値丸めプログラム,コンピュータおよびコンパイルプログラム |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370623B1 (en) * | 1988-12-28 | 2002-04-09 | Philips Electronics North America Corporation | Multiport register file to accommodate data of differing lengths |
US6643677B2 (en) * | 1995-06-05 | 2003-11-04 | Kabushiki Kaisha Toshiba | Digital arithmetic integrated circuit |
US6070180A (en) * | 1995-06-05 | 2000-05-30 | Kabushiki Kaisha Toshiba | Digital arithmetic integrated circuit |
US5768169A (en) * | 1995-10-02 | 1998-06-16 | Intel Corporation | Method and apparatus for improved processing of numeric applications in the presence of subnormal numbers in a computer system |
US5740093A (en) * | 1995-12-20 | 1998-04-14 | Intel Corporation | 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility |
US5729724A (en) * | 1995-12-20 | 1998-03-17 | Intel Corporation | Adaptive 128-bit floating point load and store operations for quadruple precision compatibility |
US8583895B2 (en) * | 1996-05-15 | 2013-11-12 | Nytell Software LLC | Compressed instruction format for use in a VLIW processor |
US5901316A (en) * | 1996-07-01 | 1999-05-04 | Sun Microsystems, Inc. | Float register spill cache method, system, and computer program product |
US6289365B1 (en) * | 1997-12-09 | 2001-09-11 | Sun Microsystems, Inc. | System and method for floating-point computation |
US6138135A (en) * | 1998-08-27 | 2000-10-24 | Institute For The Development Of Emerging Architectures, L.L.C. | Propagating NaNs during high precision calculations using lesser precision hardware |
US6199089B1 (en) | 1998-09-18 | 2001-03-06 | Ati International Srl | Floating point arithmetic logic unit rounding using at least one least significant bit |
US6205461B1 (en) | 1998-09-18 | 2001-03-20 | Ati International Srl | Floating point arithmetic logic unit leading zero count using fast approximate rounding |
US6384748B1 (en) | 1998-12-21 | 2002-05-07 | Base One International Corporation | Method of encoding numeric data and manipulating the same |
US6732259B1 (en) | 1999-07-30 | 2004-05-04 | Mips Technologies, Inc. | Processor having a conditional branch extension of an instruction set architecture |
US7242414B1 (en) | 1999-07-30 | 2007-07-10 | Mips Technologies, Inc. | Processor having a compare extension of an instruction set architecture |
US6912559B1 (en) | 1999-07-30 | 2005-06-28 | Mips Technologies, Inc. | System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit |
US6697832B1 (en) | 1999-07-30 | 2004-02-24 | Mips Technologies, Inc. | Floating-point processor with improved intermediate result handling |
US7346643B1 (en) * | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US6631392B1 (en) | 1999-07-30 | 2003-10-07 | Mips Technologies, Inc. | Method and apparatus for predicting floating-point exceptions |
US6714197B1 (en) | 1999-07-30 | 2004-03-30 | Mips Technologies, Inc. | Processor having an arithmetic extension of an instruction set architecture |
US6748107B1 (en) * | 1999-08-05 | 2004-06-08 | Microsoft Corporation | Implementation and uses of XsRGB |
US6996596B1 (en) | 2000-05-23 | 2006-02-07 | Mips Technologies, Inc. | Floating-point processor with operating mode having improved accuracy and high performance |
GB2364079B (en) * | 2000-06-28 | 2004-11-17 | Renovus Ltd | Drill bits |
CA2327924A1 (en) * | 2000-12-08 | 2002-06-08 | Ibm Canada Limited-Ibm Canada Limitee | Processor design for extended-precision arithmetic |
GB0315350D0 (en) * | 2003-06-28 | 2003-08-06 | Transitive Ltd | Method and apparatus for the emulation of high precision floating point instructions |
US7299170B2 (en) * | 2003-06-28 | 2007-11-20 | Transitive Limited | Method and apparatus for the emulation of high precision floating point instructions |
US7284117B1 (en) * | 2003-11-04 | 2007-10-16 | Advanced Micro Devices, Inc. | Processor that predicts floating point instruction latency based on predicted precision |
US7730117B2 (en) * | 2005-02-09 | 2010-06-01 | International Business Machines Corporation | System and method for a floating point unit with feedback prior to normalization and rounding |
US20060179096A1 (en) * | 2005-02-10 | 2006-08-10 | International Business Machines Corporation | System and method for a fused multiply-add dataflow with early feedback prior to rounding |
DE102005020233A1 (de) * | 2005-04-30 | 2006-11-09 | Carl Zeiss Jena Gmbh | Head-Up-Display |
US7500390B2 (en) | 2005-06-29 | 2009-03-10 | Weatherford/Lamb, Inc. | Method for estimating pump efficiency |
US7477260B1 (en) * | 2006-02-01 | 2009-01-13 | Nvidia Corporation | On-the-fly reordering of multi-cycle data transfers |
US7489315B1 (en) * | 2006-02-01 | 2009-02-10 | Nvidia Corporation | Pixel stream assembly for raster operations |
US8024394B2 (en) * | 2006-02-06 | 2011-09-20 | Via Technologies, Inc. | Dual mode floating point multiply accumulate unit |
US9223751B2 (en) * | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
US7565513B2 (en) * | 2007-02-28 | 2009-07-21 | Advanced Micro Devices, Inc. | Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations |
US20080209185A1 (en) * | 2007-02-28 | 2008-08-28 | Advanced Micro Devices, Inc. | Processor with reconfigurable floating point unit |
US8495121B2 (en) * | 2008-11-20 | 2013-07-23 | Advanced Micro Devices, Inc. | Arithmetic processing device and methods thereof |
US20100125621A1 (en) * | 2008-11-20 | 2010-05-20 | Advanced Micro Devices, Inc. | Arithmetic processing device and methods thereof |
US8150902B2 (en) * | 2009-06-19 | 2012-04-03 | Singular Computing Llc | Processing with compact arithmetic processing element |
US8407271B2 (en) * | 2009-08-28 | 2013-03-26 | Advanced Micro Devices, Inc. | Method for floating point round to integer operation |
US8990282B2 (en) * | 2009-09-21 | 2015-03-24 | Arm Limited | Apparatus and method for performing fused multiply add floating point operation |
US8463834B2 (en) * | 2009-11-03 | 2013-06-11 | Arm Limited | Floating point multiplier with first and second partial product shifting circuitry for result alignment |
US8965945B2 (en) | 2011-02-17 | 2015-02-24 | Arm Limited | Apparatus and method for performing floating point addition |
US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
US9098332B1 (en) | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
US9189200B1 (en) * | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
US9817662B2 (en) * | 2015-10-24 | 2017-11-14 | Alan A Jorgensen | Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof |
US10073676B2 (en) * | 2016-09-21 | 2018-09-11 | Altera Corporation | Reduced floating-point precision arithmetic circuitry |
US10503473B1 (en) * | 2018-05-30 | 2019-12-10 | Apple Inc. | Floating-point division alternative techniques |
KR20210085461A (ko) | 2019-12-30 | 2021-07-08 | 삼성전자주식회사 | 프로세싱 장치 및 프로세싱 장치에서 부동 소수점 연산을 처리하는 방법 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3930232A (en) * | 1973-11-23 | 1975-12-30 | Raytheon Co | Format insensitive digital computer |
US4041292A (en) * | 1975-12-22 | 1977-08-09 | Honeywell Information Systems Inc. | High speed binary multiplication system employing a plurality of multiple generator circuits |
JPH061438B2 (ja) * | 1984-04-26 | 1994-01-05 | 日本電気株式会社 | 倍精度乗算器 |
JP2651267B2 (ja) * | 1990-07-26 | 1997-09-10 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
US5341321A (en) * | 1993-05-05 | 1994-08-23 | Hewlett-Packard Company | Floating point arithmetic unit using modified Newton-Raphson technique for division and square root |
-
1994
- 1994-10-27 US US08/330,391 patent/US5631859A/en not_active Expired - Lifetime
-
1995
- 1995-10-05 JP JP7258341A patent/JPH08185309A/ja active Pending
- 1995-10-25 GB GB9521847A patent/GB2294565A/en not_active Withdrawn
- 1995-10-27 DE DE19540102A patent/DE19540102C2/de not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631391B1 (en) | 1999-04-09 | 2003-10-07 | Fuji Xerox Co., Ltd. | Parallel computer system and parallel computing method |
JP2012198666A (ja) * | 2011-03-18 | 2012-10-18 | Fujitsu Ltd | 数値丸め方法,数値丸めプログラム,コンピュータおよびコンパイルプログラム |
Also Published As
Publication number | Publication date |
---|---|
GB2294565A (en) | 1996-05-01 |
GB9521847D0 (en) | 1996-01-03 |
DE19540102A1 (de) | 1996-05-02 |
DE19540102C2 (de) | 1998-11-12 |
US5631859A (en) | 1997-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH08185309A (ja) | 4倍精度演算の実行方法 | |
CN107077417B (zh) | 有效性配准 | |
US5515308A (en) | Floating point arithmetic unit using modified Newton-Raphson technique for division and square root | |
US5042001A (en) | Method and apparatus for performing mathematical functions using polynomial approximation and a rectangular aspect ratio multiplier | |
US6163791A (en) | High accuracy estimates of elementary functions | |
US5768170A (en) | Method and apparatus for performing microprocessor integer division operations using floating point hardware | |
GB2497469B (en) | Multiply add functional unit capable of executing scale,round,Getexp,round,getmant,reduce,range and class instructions | |
US5671170A (en) | Method and apparatus for correctly rounding results of division and square root computations | |
US10579338B2 (en) | Apparatus and method for processing input operand values | |
US8019805B1 (en) | Apparatus and method for multiple pass extended precision floating point multiplication | |
Nannarelli | Variable precision 16-bit floating-point vector unit for embedded processors | |
US20060184602A1 (en) | Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value | |
US20060184594A1 (en) | Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation | |
US6912559B1 (en) | System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit | |
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 | |
Iordache et al. | An Overview of Floating-point Support and Math Library on the Intel/spl reg/XScale/spl trade/architecture | |
Sasidharan et al. | VHDL Implementation of IEEE 754 floating point unit | |
US10963245B2 (en) | Anchored data element conversion | |
Vazquez et al. | Redundant floating-point decimal CORDIC algorithm | |
Chen et al. | Fast additive normalisation method for exponential computation | |
Dieter et al. | Low-cost microarchitectural support for improved floating-point accuracy | |
US20220129245A1 (en) | High-precision anchored-implicit processing | |
JP3541086B2 (ja) | 除算結果、及び開平算結果に正確な丸め処理を行う方法、及び装置 | |
Gopal | Design and performance analysis of high throughput and low latency double precision floating point division on FPGA | |
Trummer et al. | A high-performance data-dependent hardware divider |