JP2000122850A - 浮動小数点計算実施方法 - Google Patents

浮動小数点計算実施方法

Info

Publication number
JP2000122850A
JP2000122850A JP11278474A JP27847499A JP2000122850A JP 2000122850 A JP2000122850 A JP 2000122850A JP 11278474 A JP11278474 A JP 11278474A JP 27847499 A JP27847499 A JP 27847499A JP 2000122850 A JP2000122850 A JP 2000122850A
Authority
JP
Japan
Prior art keywords
floating
exponent
point
instruction
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.)
Withdrawn
Application number
JP11278474A
Other languages
English (en)
Other versions
JP2000122850A5 (ja
Inventor
C Hack Jerome
ジェローム・シー・ハック
Markstein Peter
ピーター・マークスタイン
T Colon-Bonnet Glenn
グレン・ティー・コロン−ボネット
Alan H Karp
アラン・エイチ・カープ
Goliver Roger
ロジャー・ゴリヴァー
Morrison Michael
マイケル・モリソン
B Doshi Gootam
ゴータム・ビー・ドシ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2000122850A publication Critical patent/JP2000122850A/ja
Publication of JP2000122850A5 publication Critical patent/JP2000122850A5/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 浮動小数点演算の間の指数レンジに関する
不必要な例外の発生を回避する。 【解決手段】浮動小数点計算ユニット内で浮動小数点計
算の中間演算を実施し、中間結果を生成する。浮動小数
点計算の中間演算は、中間結果の指数が第1指数レンジ
に適合しない場合は例外が生じるよう制御される。浮動
小数点計算の最終演算が、浮動小数点計算ユニット内で
実施され、最終結果が生成される。浮動小数点計算の最
終演算は、最終結果の指数が第2指数レンジに適合しな
い場合は例外が生じるよう制御される。第1指数レンジ
は、第2指数レンジより広い。第1指数レンジは、浮動
小数点レジスタ内で使用されるレジスタ形式のレジスタ
指数レンジを含み、第2指数レンジは、メモリ内で使用
されるメモリ形式のメモリ指数レンジを含む。浮動小数
点ステータスレジスタ内のそれぞれの浮動小数点ステー
タスフィールドは、どちらの指数レンジを採用するかを
示すビットを有する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、コンピュータ内
の浮動小数点ユニットのアーキテクチャに関連し、特
に、浮動小数点計算の間、指数レンジを制御する方法お
よび装置に関連する。
【0002】
【従来の技術】一般に、コンピュータ内で浮動算術演算
を実施するための浮動小数点ユニットは、浮動小数点計
算ユニットと、オペランド、中間結果および同類のもの
を保持するための1組の浮動小数点レジスタと、浮動小
数点ステータスレジスタを含む。一般に浮動小数点計算
ユニットは、異なる浮動小数点計算の異なる演算が同時
に実施されるようパイプライン化される。浮動小数点ス
テータスレジスタは、精度制御および丸め制御のような
浮動小数点計算を制御する制御情報を含む。さらに、浮
動小数点ステータスレジスタは、浮動小数点計算の間に
発生する例外を記録するオーバフローおよびゼロ除算フ
ラグのようなフラグ情報を含む。
【0003】浮動小数点ユニットは、典型的に、ANSI/I
EEE浮動小数点標準第754-1985号に準拠するよう構成さ
れる。この標準は、浮動小数点データタイプ、多様な算
術演算および他の演算、ならびに例外の処理を指定して
いる。すべての点でIEEE浮動小数点標準を満たし、か
つ、先行技術の欠点を克服し性能を向上させる追加の機
能をもつ浮動小数点ユニットを提供することが望まし
い。
【0004】従来の浮動小数点ステータスレジスタは、
上述したように制御情報およびフラグ情報を含むハード
ウェア・レジスタである。制御情報は、ソフトウェアに
よって設定され、フラグ情報は、浮動小数点計算の実行
に応じて設定される。従来、制御情報は、浮動小数点ス
テータスレジスタの内容を汎用レジスタにコピーし、汎
用レジスタの内容を変更し、汎用レジスタの内容を浮動
小数点ステータスレジスタに戻すことによって変更され
る。浮動小数点ステータスレジスタ内のフラグ情報も、
同様の方法でクリアすることができる。従って、制御情
報を更新しフラグ情報をクリアする演算は、比較的時間
がかかる。その上、浮動小数点ステータスレジスタ内の
制御情報が更新されるとき、パイプライン化された浮動
小数点計算ユニットをフラッシュする必要があり、これ
により部分的に完了された計算をアボートし性能を低下
させことになる。これらの欠点のため、浮動小数点ステ
ータスレジスタの頻繁な更新は一般に回避される。
【0005】投機的(推測的)な演算の実行は、プロセッ
サ性能を向上させるための既知の技法である。プロセッ
サを最大限に利用するため、実行に必要なオペランドが
利用可能であれば、プログラムの中の後に現れる命令を
前の命令と並行に実行するようにスケジュールすること
ができる。通常、プログラム内には分岐命令があるの
で、命令が実行を要求するかどうかを前もって判断でき
ないことがある。しかし、プロセッサの資源が使用され
ていない状態であれば、たとえそれらの命令の実行が後
で不要であると判断されるとしても、命令を投機的に実
行することによってプロセッサの性能を改善することが
できる。分岐命令の後に続く命令を分岐命令の実行前に
実行することは、投機的な実行として知られている。投
機的に実行された命令の実行をプログラムが最終的に必
要とする場合、性能の改善が得られる。投機的な命令の
実行が必要とされない場合、結果は捨てられる。
【0006】浮動小数点ステータスレジスタは、フラグ
ビット形式のフラグ情報、つまり「フラグ」を含む。フ
ラグは、浮動小数点計算の実行の間に生じる例外を記録
する。さらに例外は、割込みを生成することがある。投
機的な実行の場合、投機的な実行の結果は後で捨てられ
ることがあるので、例外を直ちに報告することは望まし
くない。それにもかわらず、一般に、浮動小数点ユニッ
トは、投機的な演算に関するフラグを投機的でない演算
と同様に処理する。
【0007】フラグ情報内に記録される例外の1つとし
て、計算結果の中の指数(exponent)が指定されたレンジ
を越えるオーバフロー例外がある。レンジは、浮動小数
点数を記憶するために使用されるメモリ形式によって、
または結果のユーザによって設定することができる。し
かし、浮動小数点ユニットは、オーバフロー例外の報告
を生じさせるような、レンジを越える浮動小数点数を処
理することができる。これは、オーバフロー例外の不必
要な報告という問題を生じる。例えば、浮動小数点計算
は典型的にいくつかの演算を伴う。ある計算の中で、計
算が続行することが許される場合、最終の結果がオーバ
フロー例外を生じさせなくても、中間演算の結果がオー
バフロー例外を生じさせることがある。実行を遅らせた
り終わらせることがあるので、例外の不必要な報告は避
けることが望ましい。
【0008】浮動小数点計算中に浮動数を処理する別の
側面は、「ビッグ・エンディアン(big endian)」および
「リトル・エンディアン(little endian)」形式に関連
する。ビッグ・エンディアン形式で、データワードは、
その最上位バイトがメモリワードの最上位バイトに対応
するようにメモリに記憶される。リトル・エンディアン
形式では、データワードは、その最下位バイトがメモリ
ワードの最上位バイトに対応するようにメモリに記憶さ
れる。プロセッサが両方の形式を効率的に処理すること
が要求されうる。
【0009】
【発明が解決しようとする課題】上記の欠点の1つまた
は複数を軽減し、または排除する浮動小数点アーキテク
チャを提供することが望ましい。
【0010】
【課題を解決するための手段】この発明の第1の側面に
よれば、浮動小数点計算ユニット、メモリ、および浮動
小数点レジスタを有するコンピュータ内で浮動小数点計
算を実施するための方法が提供される。この方法は、浮
動小数点計算ユニット内で浮動小数点計算の最終でない
演算を実施し、最終でない結果を生成するステップを含
む。浮動小数点計算の最終でない演算は、最終でない結
果の指数が第1指数レンジに適合しない場合は例外が生
じるよう制御される。浮動小数点計算の最終の演算が、
浮動小数点計算ユニット内で実施され、最終の結果が生
成される。浮動小数点計算の最終の演算は、最終の結果
の指数が第2指数レンジに適合しない場合は例外が生じ
るよう制御される。第1指数レンジは、第2指数レンジ
より広い。第1指数レンジは、浮動小数点レジスタ内で
使用されるレジスタ形式のレジスタ指数レンジを含むこ
とができる。第2指数レンジは、メモリ内で使用される
メモリ形式のメモリ指数レンジを含むことができる。
【0011】最終でない演算および最終の演算は、最も
広いレンジ指数ビットの状態に応じて制御されることが
好ましい。1つの実施形態で、さらにコンピュータは浮
動小数点ステータスレジスタを有し、最も広いレンジ指
数ビットが、浮動小数点ステータスレジスタに記憶され
る。浮動小数点ステータスレジスタは、それぞれが最も
広いレンジ指数ビットを有する2またはそれ以上のステ
ータスフィールドを含むことができる。浮動小数点計算
の異なる演算は、ステータスフィールドの異なるものと
関連することができる。最終でない演算は、設定された
最も広いレンジ指数ビットをもつステータスフィールド
と関連することができ、最終の演算は、リセットされた
最も広いレンジ指数ビットをもつステータスフィールド
と関連することができる。
【0012】別の実施形態で、最終でない演算および最
終の演算は、対応する命令に含まれる最も広いレンジ指
数ビットの状態に応じて制御することができる。
【0013】この発明の別の側面によれば、浮動小数点
計算を実施するための装置が提供される。この装置は、
浮動小数点計算ユニット、メモリ、および浮動小数点レ
ジスタを有するコンピュータを備える。この装置はさら
に、浮動小数点計算ユニット内で浮動小数点計算の最終
でない演算を実施し、最終でない結果を生成する手段
と、最終でない結果の指数が第1指数レンジに適合しな
い場合は例外が生じるよう、最終でない演算を制御する
手段と、浮動小数点計算ユニット内で浮動小数点計算の
最終の演算を実施し、最終の結果を生成する手段と、最
終の結果の指数が第2指数レンジに適合しない場合は例
外が生じるよう、最終の演算を制御する手段とを備え
る。第1指数レンジは、第2指数レンジより広い。
【0014】
【発明の実施の形態】この発明をより良く理解するた
め、添付の図面が参照されこの中で取り入れられる。
【0015】浮動小数点ユニットおよび関連するプロセ
ッサ要素の簡略ブロック図を図1に示す。図1に示され
る要素は、中央処理装置(CPU)の一部を構成する。命令
シーケンサ10は、実行されているプログラムの命令を処
理し復号化する。命令は、メモリ12内のオペランドのア
ドレスを含む。実行されている命令のタイプに依存し
て、メモリ12からのオペランドは、汎用レジスタ(GR)14
または浮動小数点レジスタ(FR)16に供給される。プロセ
ッサは、典型的に、多くの浮動小数点レジスタを含む。
浮動小数点オペランドは、浮動小数点計算を実施するた
め、浮動小数点レジスタ16から浮動小数点計算ユニット
20および22に供給される。浮動小数点計算の結果は、浮
動小数点レジスタ16に返される。プロセッサは、1つま
たは複数の浮動小数点計算ユニットを含むことができ
る。浮動小数点ステータスレジスタ24は、浮動小数点計
算を制御する制御情報、および浮動小数点計算の間に生
じた例外を記録するフラグ情報を含む。浮動小数点レジ
スタ16、浮動小数点計算ユニット20、22、および浮動小
数点ステータスレジスタ24は、プロセッサの浮動小数点
ユニットを構成する。
【0016】図2に、浮動小数点ステータスレジスタ24
の適当な形式の一例を示す。64ビット・アーキテクチャ
を示している。浮動小数点ステータスレジスタ24は、ト
ラップ・フィールド40、メイン・ステータスフィールド
42(sf0)、および少なくとも1つの代替ステータスフィ
ールドを含む。図2の例で、浮動小数点ステータスレジ
スタ24は、トラップ・フィールド40、メイン・ステータ
スフィールド42(sf0)、代替ステータスフィールド44(sf
1)、46(sf2)および48(sf3)、および予約ビット50を含
む。以下に述べるように、メイン・ステータスフィール
ド42および代替ステータスフィールド44、46および48
は、異なる命令または命令グループに関連して浮動小数
点演算の制御および監視を向上させることができる。
【0017】一例として、トラップ・フィールド40は、
ビット位置0に無効な演算の浮動小数点例外フォールト
を、ビット位置1にデノーマル(denormal)/非正規(unnor
mal)オペランドの浮動小数点例外フォールトを、ビット
位置2にゼロによる除算浮動小数点例外フォールトを、
ビット位置3にオーバフロー浮動小数点例外トラップ
を、ビット位置4にアンダーフロー浮動小数点例外トラ
ップを、ビット位置5に不正確な浮動小数点例外トラッ
プを含むことができる。それぞれのケースで、それぞれ
のビットが設定されていると、フォールトまたはトラッ
プは禁止(ディスエーブル)される。
【0018】図3に、それぞれのステータスフィールド
sf0、sf1、sf2およびsf3の適当な形式の一例を示す。そ
れぞれのステータスフィールドは、浮動小数点計算を制
御するための制御情報、および浮動小数点計算の間に生
じた状況を示すためのフラグ情報を含む。
【0019】図4に、適当なビット割当ての例を示す。
制御ビットは、ゼロにフラッシュモード(ビット0)、最
も広いレンジ指数(ビット1)、精度制御(ビット3:2)、丸
め制御(ビット5:4)、およびトラップ禁止(ビット6)を含
む。フラグビットは、無効な演算(ビット7)、デノーマ
ル/非正規オペランド(ビット8)、ゼロ除算(ビット9)、
オーバフロー(ビット10)、アンダーフロー(ビット11)お
よび不正確(ビット12)を含む。
【0020】代替ステータスフィールドの数、メインお
よび代替ステータスフィールド内のビット数、ならびに
ステータスフィールド内のビット割当ては、この発明の
範囲内で変更することができることが分かるであろう。
さらに、ステータスレジスタは、より多くのまたはより
少ない予約ビットを含むことができ、予約ビットは、ど
んな所望の方法で分布させてもよい。
【0021】この発明の機能に従って、浮動小数点命令
セットは、浮動小数点ステータスレジスタの指定された
フィールドを更新するための命令を含む。それぞれのス
テータスフィールド内の制御情報に関して、fsetc.sfx
で示される浮動小数点制御設定命令を使用して、ステー
タスフィールドx(sfx)内の制御ビットを更新する。ここ
で、xはステータスフィールドの番号を表す。より具体
的に述べると、指定されたステータスフィールドの制御
ビットは、メイン・ステータスフィールドsf0の制御ビ
ットを命令内のマスクフィールドと論理積演算し、メイ
ン・ステータスフィールドsf0の制御ビットを命令内の
第2マスクフィールドと論理和演算することによって、
初期化することができる。こうして、制御フィールド内
の指定されたビットが設定され、またはクリアされ、メ
イン・ステータスフィールドsf0からコピーを作ること
ができる。
【0022】さらに、浮動小数点命令セットは、fclrf.
sfxで示される浮動小数点フラグクリア命令を含む。フ
ラグクリア命令は、ステータスフィールドx内のフラグ
をクリアする。上述したように、ステータスフィールド
内のフラグビットは、浮動小数点計算の間に生じる例外
の結果として設定することができる。フラグビットは、
それらがクリアされるまで設定されたままであることを
意味する「スティッキービット」とみなされる。浮動小
数点制御設定命令および浮動小数点フラグクリア命令
は、浮動小数点ステータスレジスタの指定されたステー
タスフィールド内のビットが、他のステータスフィール
ドまたは同じステータスフィールドの他のサブセットに
影響を及ぼすことなく設定されまたはクリアされること
を可能にする。こうして、読み取り-変更-書き込み演算
を必要とすることなく、浮動小数点パイプラインを中止
したりフラッシュすることなく、浮動小数点ステータス
レジスタを更新することができる。
【0023】浮動小数点制御設定命令および浮動小数点
フラグクリア命令は、浮動小数点ステータスレジスタの
指定されたサブフィールドが設定され、またはクリアさ
れることを可能にする命令として記述されうる。上で述
べたように、指定されたステータスフィールドの制御ビ
ットを設定し、またはクリアすることができ、指定され
たステータスフィールドのフラグビットをクリアするこ
とができる。より一般的には、指定されたステータスフ
ィールドの1つもしくは複数のビット、または指定され
たステータスフィールドのサブフィールドを設定し、ま
たはクリアすることができる。以下に述べるように、こ
のように浮動小数点ステータスレジスタを更新する能力
は、性能の向上をもたらす。
【0024】図5および図6に関して、複数の浮動小数点
ステータスフィールドの動作および利用を示す例を述べ
る。図5は、投機的な実行を利用しないプログラムセグ
メントの例を示す。図6および図7は、性能を向上させる
ため投機的な実行を利用する図5のプログラムセグメン
トの異なるバージョンを示す。図5ないし図7は、プログ
ラムセグメントの簡略図であり、実際のプログラムセグ
メントは、コンピュータ制御のための追加の命令を含む
ことができることが分かるであろう。
【0025】図5で、分岐命令102が浮動小数点命令100
の後に続く。分岐命令102の結果に依存して、プログラ
ムセグメントは命令106および108に進むことができ、ま
たは命令104に分岐することができる。
【0026】図5のプログラムセグメントを実行する
際、プロセッサの性能を向上させるため投機的な実行を
利用することが望ましい。命令が投機的に実行されると
き、命令は、それらがプログラム・シーケンス内に現れ
るよりも早く実行されるので、結果は、プログラム・シ
ーケンス内の適切な箇所で利用できる。投機的な実行
は、プロセッサ資源が利用可能であって他で使用されて
いない期間に有利である。また投機的な実行は、命令が
実行に複数サイクルを必要とし、通常に実行される場合
にプログラム実行の遅延をもたらすところでも有利であ
る。1つの例はメモリアクセス命令である。投機的に実
行される命令は、一般に分岐命令の後に続くので、それ
らは、プログラムの実行を完了するために最終的に要求
されないことがある。例えば、命令106が投機的に実行
され、分岐命令102が命令104に分岐することになる場
合、命令106は要求されない。しかし、分岐命令102が、
命令106を実行することになる場合、命令106の投機的な
実行によって性能が高められる。図5で、命令100、10
4、106および108はそれぞれ、浮動小数点ステータスレ
ジスタ内のメイン・ステータスフィールドsf0を利用す
る。
【0027】ここで図6を参照して、投機的な実行を利
用するため、図5のプログラムセグメントが変更されて
いる。図5および図6の中の同じ命令は同じ参照数字をも
つ。図6に示すように、図5の命令104および106にそれぞ
れ対応する命令104Aおよび106Aは、分岐命令102の前に
実行される。命令104Aおよび106Aは、分岐命令102の直
前に実行されるように示されている。しかし、命令104A
および106Aは、これらの命令の実行に必要なデータが利
用可能である分岐命令102の前のどの時間に実行しても
よいことが分かるであろう。なお、1つの命令または命
令シーケンスを投機的に実行してもよい。
【0028】投機的でない命令である命令100は、メイ
ン・ステータスフィールドsf0に割り当てられる。投機
的な命令104Aおよび106Aは、浮動小数点ステータスレジ
スタ内の代替ステータスフィールドsf2およびsf3にそれ
ぞれ割り当てられる。代替ステータスフィールドsf2お
よびsf3内のフラグビットが命令104Aおよび106Aの実行
の前にクリアされることを保証するため、fclrf.sf2お
よびfclrf.sf3で示されるフラグクリア命令110を使用し
て、代替ステータスフィールドsf2およびsf3内のフラグ
ビットをクリアする。
【0029】それぞれの浮動小数点命令は、その命令に
よって使用されおよびそれに関連するステータスフィー
ルドを指定するフィールドを含むことが好ましい。浮動
小数点ステータスレジスタが、メイン・ステータスフィ
ールドおよび3つの代替ステータスフィールドを含む場
合、浮動小数点ポイント命令内の2ビット・フィールド
が、ステータスフィールドを指定する。
【0030】図5および図6を参照して、図5の命令104
が、図6のフラグ検査命令120と置き換えられていること
が分かるであろう。さらに、図5の命令106は、図6のフ
ラグ検査命令122と置き換えられている。fchkf.sf2で示
されるフラグ検査命令120が、代替ステータスフィール
ドsf2内のフラグビットを検査する。同様に、fchkf.sf3
で示されるフラグ検査命令122が、代替ステータスフィ
ールドsf3内のフラグビットを検査する。
【0031】ステータスフィールド内に設定されるフラ
グビットはどれも、関連する命令または命令シーケンス
の実行の間に生じた例外を示す。例外は、フラグビット
内に記録され、プログラム割込みを生じさせる潜在性を
もっている。しかし、投機的な実行の場合、投機的な命
令が実際に必要であると判断されるまで、メイン・ステ
ータスフィールド内のフラグビットの設定またはプログ
ラム割込みは行われるべきではない。投機的に実行され
た命令が捨てられる場合、割込みは、プロセッサ演算に
不必要な遅延を与え、不適当にプログラムに割り込むこ
とになる。以下に述べるように、代替ステータスフィー
ルドは、投機的な実行の間の例外を記録し、投機的に実
行された命令が確約される時間になるまで従来の例外の
報告を遅らせる機構を提供する。
【0032】図2ないし図4に図示され上述した浮動小数
点ステータスレジスタの構成は、投機的な実行の間に生
じる割込みが遅延され、または完全に回避されることを
可能にする。再び図3および図4を参照して、制御ビット
は、トラップ禁止(trap disable:TD)ビットを含む。TD
ビットが、1つまたは複数の代替ステータスフィールド
内に設定されているとき、そのステータスフィールドに
関連する命令の実行の間の例外は、割込みを生じさせな
い。投機的に実行された命令が必要とされ、または確約
されるとき、fchkf.sfxで示される浮動小数点フラグ検
査命令が、代替ステータスフィールドx内のフラグビッ
トを検査する。より具体的には、浮動小数点フラグ検査
命令は、代替ステータスフィールドx内のフラグビット
を、メイン・ステータスフィールドsf0内のフラグビッ
トおよび浮動小数点ステータスレジスタ内のトラップ許
可(イネーブル)ビットと比較する。回復演算への分岐
は、1)代替ステータスフィールドsfxに設定されている
フラグビットが、浮動小数点ステータスレジスタ内の許
可されるトラップに対応する場合、または、2)代替ステ
ータスフィールドsfxに設定されているフラグビット
が、メイン・ステータスフィールドsf0内に設定されて
いない場合に生じる。
【0033】再び図6を参照して、命令104Aおよび106A
の投機的な実行の間、トラップ禁止ビットが、代替ステ
ータスフィールドsf2およびsf3に設定される。代替ステ
ータスフィールドsf2およびsf3内のフラグビットは、命
令104Aおよび106Aの実行の間に生じる例外の結果として
設定することができる。しかし、TDビットは、プログラ
ム割込みを防ぐ。プログラムが、命令120または命令122
に進むとき、浮動小数点フラグ検査命令が実行される。
詳しく述べると、分岐命令102は、投機的に実行された
命令106Aが確約されることを要求すると仮定する。プロ
グラムは、分岐命令102からフラグ検査命令122に進む。
命令122は、代替ステータスフィールドsf3内のフラグビ
ットを、メイン・ステータスフィールドsf0内のフラグ
ビットおよび浮動小数点ステータスレジスタ内のトラッ
プ許可ビットと比較する。回復演算126への分岐は、1)
代替ステータスフィールドsf3に設定されているフラグ
ビットが、浮動小数点ステータスレジスタ内の許可され
るトラップに対応する場合、または、2)代替ステータス
フィールドsf3に設定されているフラグビットが、メイ
ン・ステータスフィールドsf0に設定されていない場
合、に生じる。これらの条件のいずれも満たされない場
合、回復演算126は不要であり、プログラムは直接命令1
08へ進む。
【0034】回復演算126は、投機的に実行された1つ
または複数の命令、この例では命令106Aの再実行を伴
う。再実行の間、再実行される命令は、メイン・ステー
タスフィールドsf0に関連する。1つまたは複数のフラ
グビットが、メイン・ステータスフィールドsf0に設定
され、対応するトラップが許可される場合、割込みを行
うことができる。こうして、投機的に実行された命令10
6Aが確約されるまで、例外の報告は遅らされる。分岐命
令102が命令120の実行を必要とする場合に、命令106Aに
関連する例外の報告が回避される。
【0035】分岐命令102が、投機的に実行された命令1
06Aではなく命令104Aが確約されることを要求する場
合、プログラムは、上述したのと同様にフラグ検査命令
120に進む。命令120は、代替ステータスフィールドsf2
内のフラグビットを、メイン・ステータスフィールドsf
0内のフラグビットおよび浮動小数点ステータスレジス
タ内のトラップ許可ビットと比較する。回復演算124へ
の分岐は、1)代替ステータスフィールドsf2に設定され
ているフラグビットが、浮動小数点ステータスレジスタ
内の許可されるトラップに対応する場合、または、2)代
替ステータスフィールドsf2に設定されているフラグビ
ットが、メイン・ステータスフィールドsf0に設定され
ていない場合、に生じる。これらの条件のいずれも満た
されない場合、回復演算124は不要であり、プログラム
は命令108へジャンプする。
【0036】回復演算124は、投機的に実行された1つ
または複数の命令、この例では命令104Aの再実行を含
む。再実行の間、再実行される命令は、メイン・ステー
タスフィールドsf0に関連する。1つまたは複数のフラ
グビットが、メイン・ステータスフィールドsf0に設定
され、対応するトラップが許可される場合、割込みを行
うことができる。
【0037】TDビットは、メイン・ステータスフィール
ドsf0内では使用されず、投機的でない命令は、典型的
にメイン・ステータスフィールドsf0に割り当てられ
る。メイン・ステータスフィールドsf0に割り当てられ
た命令が実行されるとき、例外は直ちに報告される。
【0038】いくつかの例で、実行されている投機的な
命令または命令シーケンスの数が、浮動小数点ステータ
スレジスタ内で利用可能な代替ステータスフィールドの
数を越えることがある。その場合、2以上の投機的に実
行された命令または命令シーケンスは、浮動小数点ステ
ータスレジスタ内の1つの代替ステータスフィールドに
よって共有することができる。この状況で、1つまたは
複数のフラグビットが、共有される代替ステータスフィ
ールド内に設定されるとき、代替ステータスフィールド
を共有する命令のうちのどれが1つまたは複数のフラグ
ビットを設定させたかに関して曖昧さがある。この困難
を克服するための技法を図7を参照して説明する。
【0039】図7で、投機的な実行を利用するため、図5
のプログラムセグメントが再び変更されている。図5お
よび図7の中の同じ命令は、同じ参照数字をもつ。図7に
示すように、図5の命令104および106にそれぞれ対応す
る命令104Bおよび106Bは、分岐命令102の前に実行され
る。
【0040】投機的でない命令である命令100は、メイ
ン・ステータスフィールドsf0に割り当てられる。投機
的な命令104Bおよび106Bは、浮動小数点ステータスレジ
スタ内の代替ステータスフィールドsf2に割り当てら
れ、それを共有する。命令104Bおよび106Bの実行前に代
替ステータスフィールドsf2内のフラグビットがクリア
されることを保証するため、fclrf.sf2で示されるフラ
グクリア命令130を使用して、代替ステータスフィール
ドsf2内のフラグビットをクリアする。
【0041】さらに図5および図7を参照して、図5の命
令104は、図7のfchkf.sf2で示されるフラグ検査命令132
と置き換えられる。さらに、図5の命令106は、図7のfch
kf.sf2で示されるフラグ検査命令134と置き換えられ
る。フラグ検査命令132および134はそれぞれ、代替ステ
ータスフィールドsf2内のフラグビットを検査する。
【0042】図7のプログラムセグメントの中で、命令1
04Bおよび106Bのどちらかまたは両方の実行の間の例外
は、代替ステータスフィールドsf2内のフラグビットを
設定することができる。トラップ禁止ビットが代替ステ
ータスフィールドsf2に設定されるので、例外は、命令1
04Bおよび106Bが投機的に実行されるときには報告され
ない。
【0043】分岐命令102に続き、フラグ検査命令132ま
たはフラグ検査命令134が実行される。フラグ検査命令1
32または134は、代替ステータスフィールドsf2内のフラ
グビットを、メイン・ステータスフィールドsf0内のフ
ラグビットおよび浮動小数点ステータスレジスタ内のト
ラップ許可ビットと比較する。回復演算への分岐は、1)
代替ステータスフィールドsf2に設定されているフラグ
ビットが、浮動小数点ステータスレジスタ内の許可され
るトラップに対応する場合、または、2)代替ステータス
フィールドsf2に設定されているフラグビットが、メイ
ン・ステータスフィールドsf0に設定されていない場合
に、生じる。詳しく述べると、フラグ検査命令132は回
復演算140に分岐し、フラグ検査命令134は回復演算142
に分岐する。上記の条件のどちらも満たされない場合、
それぞれの回復演算は不要であり、プログラムは直接命
令108に進む。
【0044】代替ステータスフィールドsf2は、この例
で命令104Bおよび106Bによって共有されるので、命令10
4Bおよび106Bのどちらが1つまたは複数のフラグビット
を設定させたかを代替ステータスフィールドsf2のみか
ら判断することはできない。この情報を判断するため、
回復演算140および142は次のように動作する。初めに、
確約される投機的な命令または命令シーケンスが再実行
され、メイン・ステータスフィールドsf0は、再実行さ
れた命令に関連する。命令の再実行が確約されている
間、1つまたは複数のフラグビットが、メイン・ステー
タスフィールドsf0に設定されうる。さらに、対応する
トラップが浮動小数点ステータスレジスタ内で許可され
ている場合、割込みが生じる。次に、共有された代替ス
テータスフィールドがクリアされる。それから、代替ス
テータスフィールドを共有するが、このとき確約されて
いない命令または命令シーケンスが再実行される。代替
ステータスフィールドが、確約されていない命令の再実
行に関連する。確約されていない命令の再実行の間に生
じる例外は、代替ステータスフィールド内のフラグビッ
トを設定させる。回復演算のこのシーケンスは、代替ス
テータスフィールドから確約された命令または命令シー
ケンスに対するフラグ情報を効果的に除去し、それをメ
イン・ステータスフィールドに移す。代替ステータスフ
ィールドは、代替ステータスフィールドを共有するが確
約されなかった残りの命令に対するフラグ情報を保持す
る。
【0045】再び図7の例を参照して、投機的に実行さ
れた命令106Bが確約されることを分岐命令102が要求す
ると仮定する。プログラムは、フラグ検査命令134に進
む。フラグ検査命令134は、代替ステータスフィールドs
f2内のフラグビットを、メイン・ステータスフィールド
sf0内のフラグビットおよび浮動小数点ステータスレジ
スタ内のトラップ許可ビットと比較する。回復演算142
への分岐は、1)代替ステータスフィールドsf2に設定さ
れているフラグビットが、浮動小数点ステータスレジス
タ内の許可されるトラップに対応する場合、または、2)
代替ステータスフィールドsf2に設定されているフラグ
ビットが、メイン・ステータスフィールドsf0に設定さ
れていない場合、に生じる。これらの条件のどちらも満
たされない場合、回復演算142は不要であり、プログラ
ムは直接命令108に進む。
【0046】回復演算142は、投機的に実行された命令1
06Bの再実行を伴う。再実行の間、1つまたは複数のフ
ラグビットが、メイン・ステータスフィールドsf0に設
定され、対応するトラップが許可される場合、割込みを
生じさせることができる。代替ステータスフィールドsf
2内のフラグビットがクリアされ、投機的に実行された
命令104Bが再実行される。命令104Bの再実行の間、1つ
または複数のフラグビットが、代替ステータスフィール
ドsf2に設定されうるが、代替ステータスフィールドsf2
内のトラップ禁止ビットが割込みを防ぐ。ここで、代替
ステータスフィールドsf2は、プログラム実行の間の後
の時間に確約されうる投機的に実行される命令104Bに対
するフラグ情報のみを含む。
【0047】図6および図7のプログラムセグメントは、
命令の再実行を生じさせ、それによって短期的に性能を
低下させることに気付くであろう。しかし、プログラム
の実行のインスタンスの大部分で、例外は生じない。そ
れらのケースで、命令の再実行は必要とされず、投機的
な実行によって全体の性能は高められる。
【0048】投機的な実行の場合、代替ステータスフィ
ールドは、投機的な実行の間に生じる例外が、メイン・
ステータスフィールドsf0に影響を及ぼすことなく記録
されることを可能にする。それぞれの代替ステータスフ
ィールド内のトラップ禁止ビットは、不適当な割込みの
発生を防ぐ。それぞれの命令が確約されるとき、投機的
に実行された命令に関連するフラグ情報が利用される。
【0049】浮動小数点ステータスレジスタ内の複数の
ステータスフィールドの利用を投機的な実行に関連して
上述した。しかし、浮動小数点ステータスレジスタの複
数のステータスフィールド構成は、通常の投機的でない
実行の間に有用である。例えば、浮動小数点ステータス
レジスタの従来の読み取り-変更-書き込み更新によって
必要とされる遅延をまねくことなく、プログラム・シー
ケンス内の異なる命令に対して異なる制御ビットを利用
することが望ましい。したがって、異なる浮動小数点命
令に対して異なる丸めおよび/または切捨てモードを利
用することが望ましい。これは、異なる命令を浮動小数
点ステータスレジスタ内の異なるステータスフィールド
と関連させることによって達成することができる。こう
して、異なるステータスフィールドに関連する命令は、
異なる制御ビットをもつことができる。投機的でない実
行の場合、トラップ禁止ビットはリセットされたままで
ある。したがって、例外は直ちに報告される。
【0050】回転レジスタ(rotating registers)は、実
行に複数サイクルを必要とする命令をもつプログラム・
ループの実行を速めるために利用されてきた。回転レジ
スタは、プログラム・ループの複数の繰り返しが並行に
実行されることを可能にする。命令がレジスタを参照す
るとき、レジスタは、論理的レジスタとみなされ、対応
する物理的レジスタは、ループのそれぞれの繰り返しご
とにインクリメントされる。従っていくつかの繰り返し
が、異なるレジスタの中で進行中になりうる。
【0051】浮動小数点ステータスレジスタ内の1つま
たは複数の代替ステータスフィールドは、回転レジスタ
と関連することができる。回転ステータスフィールド
は、異なる時間にプログラム・ループの異なる繰り返し
と関連する。概して、浮動小数点ステータスレジスタ
は、固定される1つまたは複数のステータスフィール
ド、および回転する1つまたは複数のステータスフィー
ルドを含むことができる。
【0052】図8を参照して、浮動小数点ステータスレ
ジスタ24を更新する技法の一例を述べる。浮動小数点計
算ユニット20は、ステージ200、202、204、206および20
8を含むパイプライン・アーキテクチャをもつ。従来技
術で知られているように、パイプライン化された計算ユ
ニットの異なるステージは、同時に異なる演算を実施し
て動作速度を増加させる。1つの命令はいくつかの演算
を必要とすることがあるので、計算ユニットの複数ステ
ージによって同時に実施される演算は、1つの命令また
は2以上の命令に関連することができる。簡潔にするた
め、図8は、浮動小数点計算ユニットの各ステージにつ
き1つの命令を示す。さらに、図8に、メイン・ステー
タスフィールドsf0および代替ステータスフィールドsf
1、sf2およびsf3を含む浮動小数点ステータスレジスタ2
4が示されている。先に述べたように、それぞれのステ
ータスフィールドは、制御ビットCおよびフラグビットF
を含む。
【0053】浮動小数点計算ユニット20は、異なる浮動
小数点命令がパイプライン化された計算ユニットの異な
るステージで実行されているときの一時点で示されてい
る。それぞれの浮動小数点命令は、ステータスフィール
ドsf0、sf1、sf2およびsf3の1つと関連し、またはそれ
を参照する。従って、例えばステージ204は、fmpyで示
される浮動小数点乗算命令を含み、この命令は、代替ス
テータスフィールドsf3を参照する。浮動小数点計算ユ
ニット20のそれぞれのステージ200、202、204、206およ
び208は、参照されるステータスフィールドからの制御
ビットのコピーを含む。制御ビットは、命令と共にパイ
プライン化された計算ユニットの中を伝搬し、その命令
を制御するために使用される。これは、ステータスフィ
ールドが動的に更新されることを可能にし、従ってプロ
グラム・シーケンス内の異なる命令は、異なる制御情報
を利用することができる。
【0054】ステータス情報に関する図8の装置の動作
を以下に述べる。浮動小数点ステータスレジスタ24は、
浮動小数点制御設定fsetc.sfx(ここで、xは参照される
ステータスフィールドを示す)および浮動小数点フラグ
クリア(fclrf.sfx)を含む浮動小数点命令によって更新
される。浮動小数点制御設定およびフラグクリア命令
は、浮動小数点プログラム・シーケンス内に組み込ま
れ、他の浮動小数点命令と共にパイプライン化された浮
動小数点計算ユニットの中を伝搬する。上述したよう
に、浮動小数点制御設定およびフラグクリア命令は、他
のステータスフィールドに影響を及ぼすことなく、ま
た、同じステータスフィールド内の他のサブフィールド
に影響を及ぼすことなく、浮動小数点ステータスレジス
タの指定されたサブフィールドが迅速に更新されること
を可能にする。
【0055】図8の例で、フラグクリア命令220は、浮動
小数点計算ユニット20から出てきた。命令220は、メイ
ン・ステータスフィールドsf0内のフラグビットをリセ
ットさせる。この演算は、図示されるようにパイプライ
ン化された計算ユニットの出力で実施することができ
る。命令220の後に続き、例えばステージ200および208
内の命令のようなメイン・ステータスフィールドsf0を
示すパイプライン内の命令は、それぞれの演算の間に生
じる例外の結果として、メイン・ステータスフィールド
sf0に1つまたは複数のフラグビットを設定することが
できる。
【0056】ステージ208は、ステータスフィールドsf0
が制御ビット01010を含むことを示す。ステージ202の制
御設定命令は、ステータスフィールドsf0の制御ビット
を11111に更新している。それゆえ、パイプライン内の
ステージ202から上流にあり、ステータスフィールドsf0
を参照するそれらの命令は、制御ビット11111を利用す
る。対照的に、ステージ202の下流にあり、ステータス
フィールドsf0を参照するそれらの命令は、制御ビット0
1010を使用する。このように、異なる命令は、同じステ
ータスフィールドから異なる制御情報を利用することが
できることが分かるだろう。制御情報は、演算を遅延さ
せることなく動的に更新することができる。
【0057】fsetc.sf2で示される制御設定命令224は、
パイプライン化された計算ユニット20の第1ステージ20
0に入るところである。命令224は、ステータスフィール
ドsf2内の制御ビットを、例えば01001に設定することが
できる。こうして、命令224の上流にあって、ステータ
スフィールドsf2を参照するそれらの命令は、新しい制
御ビットを利用する。
【0058】制御情報を必要とするそれぞれの浮動小数
点命令は、それがパイプライン化された浮動小数点計算
ユニットに入るとき、参照されるステータスフィールド
から制御情報を読み取ることができる。参照されるステ
ータスフィールドが、命令の完了前に更新されるとして
も、その制御情報は、命令と共にパイプラインを通して
運ばれ、その命令の実行を制御する。従って、例えば、
ステータスフィールドsf0を参照するステージ208の命令
は、それがパイプライン化された計算ユニットに入ると
きに、ステータスフィールドsf0から制御ビット01010を
取得した。ステージ208の命令がパイプラインから出る
前にステータスフィールドsf0内の制御ビットがステー
ジ202の制御設定命令によって変更されるとしても、そ
れらの制御ビットが命令の実行を制御する。この構成
は、高い柔軟性を与え、ステータス情報を変更するため
の従来の技法に関連する遅延を避ける。
【0059】図8の構成は、制御設定命令は、それがパ
イプライン化された計算ユニットの入力に達するとき、
参照されるステータスフィールド内の制御ビットを更新
し、フラグクリア命令は、パイプライン化された計算ユ
ニットから出るとき、参照されるステータスフィールド
内のフラグビットをクリアするプロトコルを利用する。
さらに、制御情報を必要とするそれぞれの浮動小数点命
令は、それがパイプライン化された計算ユニットに入る
とき、参照されるステータスフィールドを読み取る。こ
の発明の範囲内で、異なるプロトコルを利用することが
できることが理解されるであろう。例えば、制御設定命
令およびフラグクリア命令は、パイプライン化された計
算ユニットに対して早いまたは遅い時間に浮動小数点ス
テータスレジスタを更新することができる。さらに、浮
動小数点命令は、パイプライン化された計算ユニットに
対して早いまたは遅い時間に、参照されるステータス情
報を読み取ることができる。
【0060】IEEE標準に従うメモリ内の浮動小数点数の
記憶装置に適した形式を図9に示す。単精度表現250は、
8ビット指数252、および23ビット仮数(mantissaまたは
significand)254を含む。2倍精度表現260は、11ビット
指数262および52ビット仮数264を含む。拡張2倍表現27
0は、15ビット指数272および63ビット仮数274を含む。
4倍精度表現280は、15ビット指数282および112ビット
仮数284を含む。それぞれの表現は、符号ビットを含
む。これらの表現の中で最も大きい指数は、15ビットで
ある。
【0061】浮動小数点レジスタ16(図1)の中で使用さ
れるレジスタ形式の一例を図10に示す。レジスタ形式
は、符号ビット288、17ビットを有する指数フィールド2
90、64ビットを有する仮数フィールド292を含む。この
ように、レジスタ形式の指数フィールド290は、メモリ
表現のどの指数フィールドよりも大きい。レジスタ形式
の指数フィールドは、メモリ形式で支援される最も広い
指数フィールドより少なくとも2ビット広いことが好ま
しい。
【0062】一般に、従来技術の浮動小数点ユニット
は、結果の指数が所与のレンジを越えるとき、オーバフ
ロー例外を示すフラグビットがステータスレジスタに設
定されるように構成される。レンジは、メモリ形式に基
づいて選択される。従って、指数がメモリに記憶するこ
とができるレンジを越える場合、オーバフロー例外が発
生する。同じレンジが、計算の任意の中間ステップおよ
び最終ステップに適用される。
【0063】多くの計算の中で、中間ステップは、メモ
リ形式の指数レンジを越える結果を生じるが、最終結果
は、メモリ形式の指数レンジの範囲内にある。従って、
浮動小数点レジスタを含む浮動小数点計算ユニットが、
メモリ形式の指数レンジより広い指数レンジを処理する
能力をもつところで、最終結果がメモリ形式の指数レン
ジの範囲内にある限り、中間ステップの間のオーバフロ
ー例外の発生は不要である。
【0064】上記のタイプの浮動小数点計算の例を図11
に図示する。直角三角形の斜辺計算が、ブロック300に
示されている。斜辺Cは、辺AおよびBの2乗の和の平方
根として計算される。図示される例で、メモリ形式は、
指数が9以下であり、AおよびBの値が109に等しいこと
を要求する。AおよびBの値は、中間ステップ302の斜辺
の公式に代入される。追加の中間ステップ304、306およ
び308は、ステップ310で最終結果を導く。指数は、ステ
ップ304および306でメモリ形式のレンジを越えることに
注意しなければならない。しかし、ステップ310の最終
結果の指数は、メモリ形式のレンジの範囲内(9以下)で
ある。浮動小数点計算ユニットは、中間ステップ302-30
8で生成されるレンジで指数を処理することができるこ
とを前提とすると、ステップ310の最終結果は、メモリ
形式の指数レンジの範囲内にあるので、これらの中間ス
テップのオーバフロー例外の発生は不要である。詳しく
述べると、最終結果のみがメモリ形式で記憶されればよ
い。
【0065】この発明の機能に従って、浮動小数点ステ
ータスレジスタ24(図1ないし図4)は、最も広いレンジ指
数(WRE)ビットを含む。最も広いレンジ指数ビットは、
第1および第2の指数レンジと関連する。最も広いレン
ジ指数ビットのセット状態に対応しうる第1指数レンジ
は、浮動小数点計算ユニットの指数レンジ、典型的には
レジスタ形式の指数レンジに関連することができる。最
も広いレンジ指数ビットのリセット状態に対応しうる第
2指数レンジは、メモリ形式の指数レンジに関連するこ
とができる。WREビットがセットされているとき、典型
的に中間結果である結果が第1指数レンジに適合しない
場合は例外が発生する。WREビットがリセットされてい
るとき、典型的に最終結果である結果が第2指数レンジ
に適合しない場合は例外が発生する。結果があらかじめ
決められた条件を満たす場合、結果とそれぞれの指数レ
ンジとの非適合性が確立される。例として、WREビット
がセットされているとき、結果の指数が第1指数レンジ
を越えていれば、オーバフロー例外が発生しうる。WRE
ビットがリセットされているとき、結果の指数が第2指
数レンジを越えていれば、オーバフロー例外が発生しう
る。こうして、WREビットがセットされているとき、対
応する計算の指数レンジは、1または複数ビット増やす
ことができる。計算の中間ステップの間、指数がメモリ
形式のレンジを越えるとしても、計算の中間ステップ
は、オーバフロー例外を生じることなく進むことができ
る。再び図11を参照して、WREビットは、ステップ302、
304、306および308でセットされ、最後のステップ310で
リセットされる。こうして、計算は、オーバフロー例外
の発生なく完了に向けて進み、最終結果の指数はメモリ
形式に適合する。以下で述べるように、WREビットを使
用して、他のタイプの例外の報告を制御することができ
る。
【0066】WREビットは、上述したように2以上の浮
動小数点ステータスフィールドをもつアーキテクチャ、
および1つの浮動小数点ステータスフィールドをもつア
ーキテクチャの中で使用することができる。浮動小数点
ステータスレジスタが2またはそれ以上のステータスフ
ィールドをもつとき、計算の中間ステップは、セットさ
れたWREビットをもつ代替ステータスフィールドを参照
し、計算の最終ステップは、リセットされたWREビット
をもつメイン・ステータスフィールドsf0を参照するこ
とができる。浮動小数点ステータスレジスタが1つのス
テータスフィールドをもつとき、WREビットは、中間ス
テップの間に設定され、計算の最終ステップの前にリセ
ットされる。
【0067】WREビットは、メモリ形式を使用するメモ
リに計算の最終結果を書き込むことに関連して記述され
た。より一般的に、WREビットは、中間結果の指数が最
終結果の指数より大きい必要がある応用例に使用するこ
とができる。従って、例えば最終結果は、指定された形
式で外部装置に伝送することができる。WREビットのセ
ットおよびリセット状態に関連する第1および第2指数
レンジのサイズは、特定のアーキテクチャに依存する。
上で述べたように、第1指数レンジは、第2指数レンジ
より少なくとも2ビット広いことが好ましい。
【0068】WREビットは、オーバフロー例外を防ぐこ
とに限定されない。WREビットを使用して、例えばアン
ダーフロー例外、不正確例外、または、計算の中間ステ
ップでは記録される必要がないが最終ステップで記録さ
れる必要がある任意の他の例外を防ぐことができる。WR
Eビットは、不要な例外の発生を防ぎ、それによって性
能を向上させる。
【0069】浮動小数点ステータスレジスタ内の制御ビ
ットとしてWREビットを説明した。別の実施例で、WREビ
ットは、命令形式で指定することができる。この方法の
不利な点は、命令が特別なビットまたは特別な状態をも
つ必要があることである。この方法の利点は、浮動小数
点ステータスレジスタの更新が必要でないことである。
どちらの場合も、WREビットは、プログラマによって制
御される。
【0070】この発明の更なる機能は、「ビッグ・エン
ディアン」(big endian:BE)および「リトル・エンディ
アン」(little endian:LE)形式を用いた演算に関連す
る。ビッグ・エンディアン形式では、データワードは、
その最上位バイトがメモリワードの最上位バイトに対応
するようメモリに記憶される。リトル・エンディアン形
式で、データワードは、その最下位バイトがメモリワー
ドの最上位バイトに対応するようメモリに記憶される。
データは、両方の形式でメモリに記憶することができる
が、それらの形式の1つだけがプロセッサのレジスタ内
で許される。ビッグ・エンディアンまたはリトル・エン
ディアン形式は、制御レジスタ内でエンディアン制御ビ
ットによって制御することができる。ビッグ・エンディ
アン/リトル・エンディアン制御ビットの状態は、ソフ
トウェアによって制御される。
【0071】上述したように、浮動小数点データは、図
9に示すIEEE形式のメモリに記憶することができ、IEEE
形式とは異なるレジスタ形式の浮動小数点レジスタ内で
処理することができる。いくつかのプロセッサ演算にお
いて、浮動小数点データは、レジスタ形式からIEEE形式
に変換され、メモリに記憶される。逆の場合も同様であ
る。スピル(spill)/フィル(fill)演算として知られる他
のプロセッサ演算では、浮動小数点データは、最初に浮
動小数点数をIEEE形式に変換することなく、レジスタ形
式でメモリに書き込まれる。同様に、浮動小数点データ
がメモリから読み取られるとき、それはすでにレジスタ
形式であり、形式変換は必要とされない。スピル/フィ
ル演算は、例えばプログラムが割り込まれるときに実施
することができる。
【0072】スピル/フィル演算を図12および図13に関
して説明する。浮動小数点レジスタ形式を図12にバイト
表現で示す。詳しく述べると、レジスタ形式400は、8バ
イトs0-s7をもつ仮数(significand:有効数字)、2バイト
e0およびe1をもつ指数404、および1符号バイトse2を含
む。浮動小数点レジスタ形式400は、合計82ビットをも
つ。
【0073】浮動小数点レジスタ形式の82ビットは、図
13に示すように、ビッグ・エンディアンまたはリトル・
エンディアン形式で128ビット・メモリフィールドに記
憶することができる。図13で、形式420は、リトル・エ
ンディアン形式でレジスタ形式のスピル/フィル演算の
結果を示す。形式424は、ビッグ・エンディアン形式の
スピル/フィル演算の結果を示す。それぞれの形式の左
側の数字は、増大するメモリアドレスを示す。リトル・
エンディアン形式420では、仮数の最下位バイトs0が、1
28ビット・メモリフィールドの最も低いメモリアドレス
に記憶される。ビッグ・エンディアン形式424では、仮
数の最下位バイトs0が、128ビット・メモリフィールド
の最も高いメモリアドレスに記憶される。それぞれのケ
ースで、128ビットフィールドの中のゼロは、それぞれ
の浮動小数点数の最上位ビットである。図13で、破線43
0、432および434は、8バイトワードの境界を示してお
り、第1および第2の連続するメモリワードを規定す
る。このように、リトル・エンディアン形式では、仮数
は、ワード境界430と432の間の第1メモリワードに記憶
され、指数および符号は、ワード境界432と434の間の第
2メモリワードに記憶される。ビッグ・エンディアン形
式では、指数および符号は、ワード境界430と432の間の
第1メモリワードに記憶され、仮数は、ワード境界432
と434の間の第2メモリワードに記憶される。
【0074】リトル・エンディアン形式420およびビッ
グ・エンディアン形式424は共に、仮数が8バイトアクセ
スでアクセスされることを可能にし、指数および符号が
8バイトアクセスでアクセスされることを可能にする。
すなわち、BEおよびLE形式のどちらの形式でも、指数お
よび符号は一方の8バイトワードに閉じ込められ、仮数
は他方の8バイトワードに閉じ込められるので、浮動小
数点数のどちらかまたは両方の成分に別個にアクセスす
ることができる。さらに、図13に図示し上述した形式42
0および424は、既存のデータに影響を及ぼすことなく、
ゼロによって占有される位置の浮動小数点フィールドに
制御ビットを加えることを許す。詳しく述べると、制御
ビットおよび他の情報をLE形式420のバイト11-15に加え
ることができ、そのような情報は、BE形式424のバイト0
-4に加えることもできる。
【0075】この発明の好ましい実施例として現在考え
られるものを図示し説明したが、当業者であればこの発
明の範囲から逸脱することなく多様な変更および修正を
行うことができることが分かるであろう。
【0076】本発明は例として次の実施態様を含む。
【0077】(1)浮動小数点計算ユニット、メモリ、
および浮動小数点レジスタを含むコンピュータ内で浮動
小数点計算を実施する方法であって、浮動小数点計算ユ
ニット内で浮動小数点計算の最終でない演算を実施し、
最終でない結果を生成するステップと、最終でない結果
の指数が第1指数レンジに適合しない場合は例外が生じ
るよう、浮動小数点計算の最終でない演算を制御するス
テップと、浮動小数点計算ユニット内で浮動小数点計算
の最終の演算を実施し、最終結果を生成するステップ
と、最終結果の指数が第2指数レンジに適合しない場合
は例外が生じるよう、浮動小数点計算の最終の演算を制
御するステップと、を含み、上記第1指数レンジは上記
第2指数レンジより広い、浮動小数点計算を実施する方
法。
【0078】(2)上記最終でない演算を制御するステ
ップおよび上記最終の演算を制御するステップは、最も
広いレンジ指数ビットの状態に応じることを含む、上記
(1)に記載の浮動小数点計算を実施する方法。
【0079】(3)上記コンピュータはさらに、浮動小
数点ステータスレジスタを含み、上記方法はさらに、上
記浮動小数点ステータスレジスタに上記最も広いレンジ
指数ビットを記憶するステップを含む、上記(2)に記載
の浮動小数点計算を実施する方法。
【0080】(4)上記浮動小数点ステータスレジスタ
は、それぞれが最も広いレンジ指数ビットをもつ2また
はそれ以上のステータスフィールドを含み、浮動小数点
計算の異なる演算は、上記ステータスフィールドの異な
るものと関連する、上記(3)に記載の浮動小数点計算を
実施する方法。
【0081】(5)上記例外は、オーバフロー例外を含
む、上記(1)に記載の浮動小数点計算を実施する方法。
【0082】(6)上記例外は、アンダーフロー例外を
含む、上記(1)に記載の浮動小数点計算を実施する方
法。
【0083】(7)上記例外は、不正確例外を含む、上
記(1)に記載の浮動小数点計算を実施する方法。
【0084】(8)上記第1指数レンジは、上記浮動小
数点レジスタ内で使用されるレジスタ形式のレジスタ指
数レンジを含み、上記第2指数レンジは、上記メモリ内
で使用されるメモリ形式のメモリ指数レンジを含み、さ
らに、浮動小数点計算のため上記メモリ形式の上記メモ
リに浮動小数点数を記憶するステップを含む、上記(1)
に記載の浮動小数点計算を実施する方法。
【0085】(9)上記最終でない演算を制御するステ
ップおよび上記最終の演算を制御するステップは、対応
する命令の中に含まれる最も広いレンジ指数ビットの状
態に応じることを含む、上記(1)に記載の浮動小数点計
算を実施する方法。
【0086】(10)上記メモリ形式は、IEEE浮動小数
点標準に準ずる、上記(1)に記載の浮動小数点計算を実
施する方法。
【0087】(11)上記レジスタ指数レンジは、上記
メモリ指数レンジより少なくとも2ビット広い、上記(8)
に記載の浮動小数点計算を実施する方法。
【0088】(12)さらに、上記最終でない演算の完
了の後に続いて最も広いレンジ指数ビットをデアサート
することを含む、上記(2)に記載の浮動小数点計算を実
施する方法。
【0089】(13)最終でない演算を制御するステッ
プは、最終でない演算を、設定された上記最も広いレン
ジ指数ビットをもつステータスフィールドと関連させる
ことを含み、最終の演算を制御するステップは、最終の
演算を、リセットされた最も広いレンジ指数ビットをも
つステータスフィールドと関連させる、上記(4)に記載
の浮動小数点計算を実施する方法。
【0090】(14)浮動小数点計算を実施する装置で
あって、浮動小数点計算ユニット、メモリ、および浮動
小数点レジスタを含むコンピュータと、浮動小数点計算
ユニット内で浮動小数点計算の最終でない演算を実施
し、最終でない結果を生成する手段と、上記最終でない
結果の指数が第1指数レンジに適合しない場合は例外が
生じるよう、上記最終でない演算を制御する手段と、浮
動小数点計算ユニット内で浮動小数点計算の最終の演算
を実施し、最終の結果を生成する手段と、最終の結果の
指数が第2指数レンジに適合しない場合は例外が生じる
よう、上記最終の演算を制御する手段と、を備え、上記
第1指数レンジは、上記第2指数レンジより広い、浮動
小数点計算を実施する装置。
【0091】(15)上記最終でない演算を制御する手
段および上記最終の演算を制御する手段はそれぞれ、最
も広いレンジ指数ビットの状態に応じる手段を含む、上
記(14)に記載の浮動小数点計算を実施する装置。
【0092】(16)上記コンピュータはさらに、浮動
小数点ステータスレジスタを含み、上記装置はさらに、
上記浮動小数点ステータスレジスタに上記最も広いレン
ジ指数ビットを記憶する手段を含む、上記(15)に記載の
浮動小数点計算を実施する装置。
【0093】(17)上記浮動小数点ステータスレジス
タは、それぞれが最も広いレンジ指数ビットをもつ2ま
たはそれ以上のステータスフィールドを含み、浮動小数
点計算の異なる演算は、上記ステータスフィールドの異
なるものと関連する、上記(16)に記載の浮動小数点計算
を実施する装置。
【0094】(18)上記例外は、オーバフロー例外を
含む、上記(14)に記載の浮動小数点計算を実施する装
置。
【0095】(19)上記例外は、アンダーフロー例外
を含む、上記(14)に記載の浮動小数点計算を実施する装
置。
【0096】(20)上記例外は、不正確例外を含む、
上記(14)に記載の浮動小数点計算を実施する装置。
【0097】(21)上記第1指数レンジは、上記浮動
小数点レジスタ内で使用されるレジスタ形式のレジスタ
指数レンジを含み、上記第2指数レンジは、上記メモリ
内で使用されるメモリ形式のメモリ指数レンジを含み、
さらに、浮動小数点計算のため上記メモリ形式で上記メ
モリに浮動小数点数を記憶する手段を備える、上記(14)
に記載の浮動小数点計算を実施する装置。
【0098】(22)上記最終でない演算を制御する手
段および上記最終の演算を制御する手段はそれぞれ、対
応する命令の中に含まれる最も広いレンジ指数ビットの
状態に応じる手段を含む、上記(14)に記載の浮動小数点
計算を実施する装置。
【0099】(23)上記メモリ形式は、IEEE浮動小数
点標準に準ずる、上記(14)に記載の浮動小数点計算を実
施する装置。
【0100】(24)上記レジスタ指数レンジは、上記
メモリ指数レンジより少なくとも2ビット広い、上記(2
1)に記載の浮動小数点計算を実施する装置。
【0101】(25)さらに、最終でない演算の完了の
後に続いて最も広いレンジ指数ビットをデアサートする
手段を含む、上記(15)に記載の浮動小数点計算を実施す
る装置。
【0102】(26)上記最終でない演算を制御する手
段は、上記最終でない演算を、設定された上記最も広い
レンジ指数ビットをもつステータスフィールドと関連さ
せる手段を含み、上記最終の演算を制御する手段は、上
記最終の演算を、リセットされた上記最も広いレンジ指
数ビットをもつステータスフィールドと関連させる手段
を含む、上記(17)に記載の浮動小数点計算を実施する装
置。
【0103】
【発明の効果】本発明によれば、浮動小数点演算の中間
演算を最終演算の指数レンジよりも広い指数レンジで行
い、この広い指数レンジに基づいて例外を発生させるこ
とにより、不必要な例外の発生を回避することができ
る。
【図面の簡単な説明】
【図1】浮動小数点ユニットおよび関連するプロセッサ
要素の簡略ブロック図。
【図2】浮動小数点ステータスレジスタの形式の一例を
示す図。
【図3】それぞれの浮動小数点ステータスフィールドの
形式の一例を示す図。
【図4】それぞれの浮動小数点ステータスフィールド内
のビット割当ての一例を示す図。
【図5】投機的な演算を伴わないプログラムセグメント
の一例を示すフローチャート。
【図6】第1の投機的実行方法に従う図5のプログラム
セグメントの実行を示すフローチャート。
【図7】第2の投機的実行方法に従う図5のプログラム
セグメントの実行を示すフローチャート。
【図8】それぞれのステージごとに制御ビットのコピー
をもつパイプライン化された浮動小数点計算ユニットの
簡略ブロック図。
【図9】異なる浮動小数点データタイプを記憶するため
に使用されるメモリ形式を示す図。
【図10】ビット表現で浮動小数点レジスタ形式の一例
を示す図。
【図11】最も広いレンジの指数制御ビットがオーバフ
ロー例外の報告を回避する浮動小数点計算の例を示すフ
ローチャート。
【図12】バイト表現で浮動小数点レジスタ形式の一例
を示す図。
【図13】スピルおよびフィル演算の間、ビッグ・エン
ディアンおよびリトル・エンディアン形式で浮動小数点
数を記憶するためのメモリ形式を示す図。
【符号の説明】
16 浮動小数点レジスタ 20,22 浮動小数点計算ユニット 24 浮動小数点ステータスレジスタ 42 メイン・ステータスレジスタ 44,46,48 代替ステータスレジスタ 400 レジスタ形式 420 リトルエンディアン形式 440 ビッグエンディアン形式
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ピーター・マークスタイン アメリカ合衆国94062カリフォルニア州ウ ッドサイド、レッドランズ・ロード、160、 エスアールエックス 96 (72)発明者 グレン・ティー・コロン−ボネット アメリカ合衆国80526コロラド州フォー ト・コリンズ、アントラーズ・コート 4304 (72)発明者 アラン・エイチ・カープ アメリカ合衆国94306カリフォルニア州パ ロ・アルト、イリマ・コート 837 (72)発明者 ロジャー・ゴリヴァー アメリカ合衆国97008オレゴン州ビーヴァ ートン、サウスウェスト・ヴァイオレッ ト・コート 13340 (72)発明者 マイケル・モリソン アメリカ合衆国94086カリフォルニア州サ ニーヴェイル、コーンフラワー・コート 1072 (72)発明者 ゴータム・ビー・ドシ アメリカ合衆国94086カリフォルニア州サ ニーヴェイル、マデラ・アヴェニュー、 442、ナンバー 10

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】浮動小数点計算ユニット、メモリ、および
    浮動小数点レジスタを含むコンピュータ内で浮動小数点
    計算を実施する方法であって、 上記浮動小数点計算ユニット内で上記浮動小数点計算の
    最終でない演算を実施し、最終でない結果を生成するス
    テップと、 上記最終でない結果の指数が第1指数レンジに適合しな
    い場合は例外が生じるよう、上記浮動小数点計算の上記
    最終でない演算を制御するステップと、 上記浮動小数点計算ユニット内で上記浮動小数点計算の
    最終の演算を実施し、最終の結果を生成するステップ
    と、 上記最終の結果の指数が第2指数レンジに適合しない場
    合は例外が生じるよう、上記浮動小数点計算の上記最終
    の演算を制御するステップと、を含み、上記第1指数レ
    ンジは上記第2指数レンジより広い、浮動小数点計算を
    実施する方法。
JP11278474A 1998-10-10 1999-09-30 浮動小数点計算実施方法 Withdrawn JP2000122850A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US169669 1998-10-10
US09/169,669 US6578059B1 (en) 1998-10-10 1998-10-10 Methods and apparatus for controlling exponent range in floating-point calculations

Publications (2)

Publication Number Publication Date
JP2000122850A true JP2000122850A (ja) 2000-04-28
JP2000122850A5 JP2000122850A5 (ja) 2006-11-09

Family

ID=22616673

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11278474A Withdrawn JP2000122850A (ja) 1998-10-10 1999-09-30 浮動小数点計算実施方法

Country Status (2)

Country Link
US (1) US6578059B1 (ja)
JP (1) JP2000122850A (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8667042B2 (en) 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US9092213B2 (en) 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation
US20140067894A1 (en) * 2012-08-30 2014-03-06 Qualcomm Incorporated Operations for efficient floating point computations
CN104572018A (zh) * 2014-12-30 2015-04-29 杭州中天微系统有限公司 一种用于浮点常数生成的装置及方法
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10310814B2 (en) 2017-06-23 2019-06-04 International Business Machines Corporation Read and set floating point control register instruction
CN109960533B (zh) * 2019-03-29 2023-04-25 合芯科技(苏州)有限公司 浮点运算方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor

Also Published As

Publication number Publication date
US6578059B1 (en) 2003-06-10

Similar Documents

Publication Publication Date Title
US6151669A (en) Methods and apparatus for efficient control of floating-point status register
US20120311303A1 (en) Processor for Executing Wide Operand Operations Using a Control Register and a Results Register
US6195745B1 (en) Pipeline throughput via parallel out-of-order execution of adds and moves in a supplemental integer execution unit
JP4219507B2 (ja) コンピュータ動作方法
US9733899B2 (en) Lane position information for processing of vector
WO1997014094A1 (en) Technique of incorporating floating point information into processor instructions
CN111767516A (zh) 用于利用所选择的舍入来执行浮点加法的系统和方法
EP1228427A1 (en) Exception handling for simd floating point-instructions
TW201719389A (zh) 處理用於向量算術指令的例外狀況
JPH0749770A (ja) 演算装置
US6216222B1 (en) Handling exceptions in a pipelined data processing apparatus
US20170139673A1 (en) Redundant representation of numeric value using overlap bits
JP2000122850A (ja) 浮動小数点計算実施方法
JP3578682B2 (ja) 浮動小数点数処理記憶方法
US6820190B1 (en) Method and computer system for decomposing macroinstructions into microinstructions and forcing the parallel issue of at least two microinstructions
JP7541524B2 (ja) アンカーデータ要素における特殊値の符号化
JP2000137611A (ja) 特殊ミリコ―ド命令によって条件の設定およびテストを行う方法
JP7541526B2 (ja) アンカーデータ値のオーバーフロー又はアンダーフロー処理
US7234044B1 (en) Processor registers having state information
TWI822952B (zh) 迭代運算的處理
US10963245B2 (en) Anchored data element conversion
JPH08221257A (ja) データ処理装置用除算器
JPH06202868A (ja) マルチスカラー・プロセッサ・システムにおける高速浮動小数点例外起動式操作の方法およびシステム
US7580967B2 (en) Processor with maximum and minimum instructions
US20240211209A1 (en) Floating point fused multiply accumulate

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060925

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081028

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090123

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090312