JP4219507B2 - コンピュータ動作方法 - Google Patents
コンピュータ動作方法 Download PDFInfo
- Publication number
- JP4219507B2 JP4219507B2 JP27847299A JP27847299A JP4219507B2 JP 4219507 B2 JP4219507 B2 JP 4219507B2 JP 27847299 A JP27847299 A JP 27847299A JP 27847299 A JP27847299 A JP 27847299A JP 4219507 B2 JP4219507 B2 JP 4219507B2
- Authority
- JP
- Japan
- Prior art keywords
- floating point
- status field
- status
- register
- flag information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 20
- 238000011084 recovery Methods 0.000 claims description 38
- 238000011017 operating method Methods 0.000 claims description 18
- 238000010586 diagram Methods 0.000 description 8
- 230000003111 delayed effect Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (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)
- Advance Control (AREA)
Description
【発明の属する技術分野】
この発明は、コンピュータ内の浮動小数点ユニットのアーキテクチャに関し、特に、性能の向上のため、2つまたはそれ以上のステータスフィールドを利用する浮動小数点ユニットに関する。
【0002】
【従来の技術】
一般に、コンピュータ内で浮動算術演算を実施するための浮動小数点ユニットは、浮動小数点計算ユニットと、オペランド、中間結果および同類のものを保持するための1組の浮動小数点レジスタと、浮動小数点ステータスレジスタを含む。浮動小数点計算ユニットは、一般にパイプライン化されており、異なる浮動小数点計算の異なる演算を同時に実施することができる。浮動小数点ステータスレジスタは、精度制御および丸め制御のような浮動小数点計算を制御する制御情報を含む。さらに、浮動小数点ステータスレジスタは、浮動小数点計算の間に発生した例外を記録するオーバフローおよびゼロ除算フラグのようなフラグ情報を含む。
【0003】
浮動小数点ユニットは、典型的に、ANSI/IEEE浮動小数点標準第754-1985号に準拠するよう構成される。この標準は、浮動小数点データタイプ、多様な算術演算およびその他の演算、並びに例外の処理を指定している。すべての点でIEEE浮動小数点標準を満たし、かつ、先行技術の欠点を克服し性能を向上させる追加の機能をもつ浮動小数点ユニットを提供することが望ましい。
【0004】
従来の浮動小数点ステータスレジスタは、上述したように制御情報およびフラグ情報を含むハードウェア・レジスタである。制御情報は、ソフトウェアによって設定され、フラグ情報は、浮動小数点計算の実行に応じて設定される。従来、制御情報は、浮動小数点ステータスレジスタの内容を汎用レジスタにコピーし、汎用レジスタの内容を変更し、汎用レジスタの内容を浮動小数点ステータスレジスタに戻すことによって変更される。浮動小数点ステータスレジスタ内のフラグ情報も、同様の方法でクリアすることができる。従って、制御情報を更新しフラグ情報をクリアする演算は、比較的時間がかかる。その上、浮動小数点ステータスレジスタ内の制御情報が更新されるとき、パイプライン化された浮動小数点計算ユニットをフラッシュする必要があり、これにより部分的に完了された計算をアボートし性能を低下させことになる。これらの欠点のため、浮動小数点ステータスレジスタの頻繁な更新は一般に回避される。
【0005】
投機的(推測的)な演算の実行は、プロセッサ性能を向上させるための既知の技法である。プロセッサを最大限に利用するため、実行に必要なオペランドが利用可能であれば、プログラムの中の後に現れる命令を前の命令と並行に実行するようにスケジュールすることができる。通常、プログラム内には分岐命令があるので、命令が実行を要求するかどうかを前もって判断できないことがある。しかし、プロセッサの資源が使用されていない状態であれば、たとえそれらの命令の実行が後で不要であると判断されるとしても、命令を投機的に実行することによってプロセッサの性能を改善することができる。投機的に実行された命令の実行をプログラムが最終的に必要とする場合、性能の改善が得られる。投機的な命令の実行が必要とされない場合、結果は捨てられる。
【0006】
浮動小数点ステータスレジスタは、フラグビット形式のフラグ情報、つまり「フラグ」を含む。フラグは、浮動小数点計算の実行の間に生じる例外を記録する。さらに例外は、割込みを生成することがある。投機的な実行の場合、投機的な実行の結果は後で捨てられることがあるので、例外を直ちに報告することは望ましくない。それにもかわらず、一般に、浮動小数点ユニットは、投機的な演算に関するフラグを投機的でない演算と同様に処理する。
【0007】
フラグ情報内に記録される例外の1つとして、計算結果の中の指数(exponent)が指定されたレンジを越えるオーバフロー例外がある。レンジは、浮動小数点数を記憶するために使用されるメモリ形式によって、または結果のユーザによって設定することができる。しかし、浮動小数点ユニットは、オーバフロー例外の報告を生じさせるような、レンジを越える浮動小数点数を処理することができる。これは、オーバフロー例外の不必要な報告という問題を生じる。例えば、浮動小数点計算は典型的にいくつかの演算を伴う。ある計算の中で、計算が続行することが許される場合、最終の結果がオーバフロー例外を生じさせなくても、中間演算の結果がオーバフロー例外を生じさせることがある。実行を遅らせたり終わらせることがあるので、例外の不必要な報告は避けることが望ましい。
【0008】
浮動小数点計算中に浮動数を処理する別の側面は、「ビッグ・エンディアン(big endian)」および「リトル・エンディアン(little endian)」形式に関連する。ビッグ・エンディアン形式で、データワードは、その最上位バイトがメモリワードの最上位バイトに対応するようにメモリに記憶される。リトル・エンディアン形式では、データワードは、その最下位バイトがメモリワードの最上位バイトに対応するようにメモリに記憶される。プロセッサが両方の形式を効率的に処理することが要求されうる。
【0009】
【発明が解決しようとする課題】
上記の欠点の1つまたは複数を軽減し、または排除する浮動小数点アーキテクチャを提供することが望ましい。
【0010】
【課題を解決するための手段】
この発明の第1の側面によれば、浮動小数点計算ユニット、浮動小数点レジスタ、および浮動小数点ステータスレジスタを有するコンピュータを動作させる方法が提供される。浮動小数点ステータスレジスタは、メイン・ステータスフィールドおよび少なくとも1つの代替ステータスフィールドを含む。それぞれのステータスフィールドは、フラグ情報および制御情報を含む。第1の演算が、浮動小数点計算ユニット内で実施され、該第1の演算は、浮動小数点ステータスレジスタ内のメイン・ステータスフィールドに関連する。第2の演算が、浮動小数点計算ユニット内で実施され、該第2の演算は、浮動小数点ステータスレジスタ内の代替ステータスフィールドと関連する。従って、第1および第2の演算は、メインおよび代替ステータスフィールド内にそれぞれ別個のフラグおよび制御情報をもつ。第1および第2の演算は、第1および第2の演算を指定する浮動小数点命令の中の制御ビットに応じて、それぞれメインおよび代替ステータスフィールドと関連することができる。
【0011】
第1の演算は、投機的でない演算を含むことができ、第2の演算は、投機的な演算を含むことができる。投機的な演算が確約されるとき、投機的な演算に関連する代替ステータスフィールド内のフラグ情報が検査される。代替ステータスフィールド内のフラグ情報が例外を示さない場合、第3の演算の実行に進むことができる。
【0012】
フラグ情報は、代替ステータスフィールド内のフラグ情報を、メイン・ステータスフィールド内のフラグ情報および浮動小数点ステータスレジスタ内のトラップ許可(イネーブル)ビットと比較することによって検査することができる。回復演算への分岐は、代替ステータスフィールド内のフラグ情報がメイン・ステータスフィールド内のフラグ情報と異なるとき、または代替ステータスフィールド内のフラグ情報が浮動小数点ステータスレジスタ内の許可されるトラップに対応するときに行われる。回復演算は、投機的な演算を再実行し、投機的な演算の再実行を浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させることを含む。
【0013】
2つ以上の投機的な演算を、浮動小数点ステータスレジスタ内の1つの代替ステータスフィールドと関連させることができる。投機的な演算の1つが確約されるとき、代替ステータスフィールド内のフラグ情報が検査される。代替ステータスフィールド内のフラグ情報が例外を示さなければ、第3の演算の実行に進むことができる。
【0014】
代替ステータスフィールド内のフラグ情報は、代替ステータスフィールド内のフラグ情報をメイン・ステータスフィールド内のフラグ情報および浮動小数点ステータスレジスタ内のトラップ許可ビットと比較することによって検査することができる。回復演算への分岐は、代替ステータスフィールド内のフラグ情報がメイン・ステータスフィールド内のフラグ情報と異なるとき、または代替ステータスフィールド内のフラグ情報が浮動小数点ステータスレジスタ内の許可されるトラップに対応するときに生じる。
【0015】
回復演算は、確約される投機的な演算を再実行するステップと、確約される投機的な演算の再実行を浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させるステップと、代替ステータスフィールド内のフラグ情報をクリアするステップと、確約されていない投機的な演算を再実行するステップと、確約されていない投機的な演算の再実行を浮動小数点ステータスレジスタ内の代替ステータスフィールドと関連させるステップを含む。
【0016】
浮動小数点ステータスレジスタは、複数の代替ステータスフィールドを含むことができる。代替ステータスフィールドの少なくとも1つは回転することができ、従って回転する代替ステータスフィールドは、異なる演算サイクルに異なる演算と関連する。
【0017】
それぞれの代替ステータスフィールドは、投機的な演算の実行中の例外に起因する割込みを防ぐためのトラップ禁止(ディスエーブル)ビットを含むことができる。代替ステータスフィールドに対応する演算が投機的な演算であるとき、トラップ禁止ビットが設定されうる。トラップ禁止ビットが設定されているとき、例外は代替ステータスフィールドのフラグには記録されるが、割込みを生じない。
【0018】
この発明の別の側面によると、浮動小数点計算を実施する装置が提供される。この装置は、浮動小数点計算ユニット、浮動小数点レジスタ、および浮動小数点ステータスレジスタをもつコンピュータを備える。浮動小数点ステータスレジスタは、メイン・ステータスフィールドおよび少なくとも1つの代替ステータスフィールドを含む。メイン・ステータスフィールドおよび代替ステータスフィールドはそれぞれ、浮動小数点演算を制御するための制御情報、および、浮動小数点演算の間に生じた1つまたは複数の例外を記録するためのフラグ情報を含む。さらにこの装置は、浮動小数点計算ユニット内で第1の演算を実施し、該第1の演算を浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させる手段と、浮動小数点計算ユニット内で第2の演算を実施し、該第2の演算を浮動小数点ステータスレジスタ内の代替ステータスフィールドと関連させる手段を備える。第1および第2の演算は、メインおよび代替ステータスフィールド内にそれぞれ別個の制御およびフラグ情報を有する。
【0019】
【発明の実施の形態】
この発明をより良く理解するため、添付の図面が参照されこの中で取り入れられる。
【0020】
図1に、浮動小数点ユニットおよび関連するプロセッサ要素の簡略ブロック図を示す。図1に示される要素は、中央処理装置(CPU)の一部を構成する。命令シーケンサ10は、実行されているプログラムの命令を処理し復号化する。命令は、メモリ12内のオペランドのアドレスを含む。実行されている命令のタイプに依存して、メモリ12からのオペランドは、汎用レジスタ(GR)14または浮動小数点レジスタ(FR)16に供給される。プロセッサは、典型的に、多くの浮動小数点レジスタを含む。浮動小数点オペランドは、浮動小数点計算を実施するため、浮動小数点レジスタ16から浮動小数点計算ユニット20および22に供給される。浮動小数点計算の結果は、浮動小数点レジスタ16に返される。プロセッサは、1つまたは複数の浮動小数点計算ユニットを含むことができる。浮動小数点ステータスレジスタ24は、浮動小数点計算を制御する制御情報、および浮動小数点計算の間に生じた例外を記録するフラグ情報を含む。浮動小数点レジスタ16、浮動小数点計算ユニット20、22、および浮動小数点ステータスレジスタ24は、プロセッサの浮動小数点ユニットを構成する。
【0021】
図2に、浮動小数点ステータスレジスタ24の適当な形式の一例を示す。64ビット・アーキテクチャを示している。浮動小数点ステータスレジスタ24は、トラップ・フィールド40、メイン・ステータスフィールド42(sf0)、および少なくとも1つの代替ステータスフィールドを含む。図2の例で、浮動小数点ステータスレジスタ24は、トラップ・フィールド40、メイン・ステータスフィールド42(sf0)、代替ステータスフィールド44(sf1)、46(sf2)および48(sf3)、および予約ビット50を含む。以下に述べるように、メイン・ステータスフィールド42および代替ステータスフィールド44、46および48は、異なる命令または命令グループに関連することができ、浮動小数点演算の制御および監視を向上させる。
【0022】
一例として、トラップ・フィールド40は、ビット位置0に無効な演算の浮動小数点例外フォールトを、ビット位置1にデノーマル(denormal)/非正規(unnormal)オペランドの浮動小数点例外フォールトを、ビット位置2にゼロ除算浮動小数点例外フォールトを、ビット位置3にオーバフロー浮動小数点例外トラップを、ビット位置4にアンダーフロー浮動小数点例外トラップを、ビット位置5に不正確な浮動小数点例外トラップを含むことができる。それぞれのケースで、それぞれのビットが設定されているとき、フォールトまたはトラップは禁止(ディスエーブル)される。
【0023】
図3に、それぞれのステータスフィールドsf0、sf1、sf2およびsf3の適当な形式の一例を示す。それぞれのステータスフィールドは、浮動小数点計算を制御するための制御情報、および浮動小数点計算の間に生じた状況を示すためのフラグ情報を含む。
【0024】
図4に、適当なビット割当ての例を示す。制御ビットは、ゼロにフラッシュ・モード(ビット0)、最も広いレンジ指数(ビット1)、精度制御(ビット3:2)、丸め制御(ビット5:4)、およびトラップ禁止(ビット6)を含む。フラグビットは、無効な演算(ビット7)、デノーマル/非正規オペランド(ビット8)、ゼロ除算(ビット9)、オーバフロー(ビット10)、アンダーフロー(ビット11)および不正確(ビット12)を含む。
【0025】
代替ステータスフィールドの数、メインおよび代替ステータスフィールド内のビット数、ならびにステータスフィールド内のビット割当ては、この発明の範囲内で変更することができることが分かるであろう。さらに、ステータスレジスタは、より多くのまたはより少ない予約ビットを含むことができ、予約ビットは、任意の所望の方法で分布させることができる。
【0026】
この発明の機能に従って、浮動小数点命令セットは、浮動小数点ステータスレジスタの指定されたフィールドを更新するための命令を含む。それぞれのステータスフィールド内の制御情報に関して、fsetc.sfxで示される浮動小数点制御設定命令を使用して、ステータスフィールドx(sfx)内の制御ビットを更新する。ここで、xはステータスフィールドの番号を表す。より具体的に述べると、指定されたステータスフィールドの制御ビットは、メイン・ステータスフィールドsf0の制御ビットを命令内のマスクフィールドと論理積演算し、メイン・ステータスフィールドsf0の制御ビットを命令内の第2マスクフィールドと論理和演算することによって、初期化することができる。こうして、制御フィールド内の指定されたビットが設定され、またはクリアされ、メイン・ステータスフィールドsf0からコピーを作ることができる。
【0027】
さらに、浮動小数点命令セットは、fclrf.sfxで示される浮動小数点フラグクリア命令を含む。フラグクリア命令は、ステータスフィールドx内のフラグをクリアする。上述したように、ステータスフィールド内のフラグビットは、浮動小数点計算の間に生じる例外の結果として設定することができる。フラグビットは、それらがクリアされるまで設定されたままであることを意味する「スティッキービット」とみなされる。浮動小数点制御設定命令および浮動小数点フラグクリア命令は、浮動小数点ステータスレジスタの指定されたステータスフィールド内のビットが、他のステータスフィールドまたは同じステータスフィールドの他のサブセットに影響を及ぼすことなく設定されまたはクリアされることを可能にする。こうして、読み取り-変更-書き込み演算を必要とすることなく、また、浮動小数点パイプラインを中止したりフラッシュすることなく、浮動小数点ステータスレジスタを更新することができる。
【0028】
浮動小数点制御設定命令および浮動小数点フラグクリア命令は、浮動小数点ステータスレジスタの指定されたサブフィールドが設定され、またはクリアされることを可能にする命令として記述されうる。上で述べたように、指定されたステータスフィールドの制御ビットを設定し、またはクリアすることができ、指定されたステータスフィールドのフラグビットをクリアすることができる。より一般的には、指定されたステータスフィールドの1つもしくは複数のビット、または指定されたステータスフィールドのサブフィールドを設定し、またはクリアすることができる。以下に述べるように、このように浮動小数点ステータスレジスタを更新する能力は、性能の向上をもたらす。
【0029】
図5および図6に関して、複数の浮動小数点ステータスフィールドの動作および利用を示す例を述べる。図5は、投機的な実行を利用しないプログラムセグメントの例を示す。図6および図7は、性能を向上させるため投機的な実行を利用する図5のプログラムセグメントの異なるバージョンを示す。図5ないし図7は、プログラムセグメントの簡略図であり、実際のプログラムセグメントは、コンピュータ制御のための追加の命令を含むことができることが分かるであろう。
【0030】
図5で、分岐命令102が浮動小数点命令100の後に続く。分岐命令102の結果に依存して、プログラムセグメントは命令106および108に進むことができ、または命令104に分岐することができる。
【0031】
図5のプログラムセグメントを実行する際、プロセッサの性能を向上させるため投機的な実行を利用することが望ましい。命令が投機的に実行されるとき、命令は、それらがプログラム・シーケンス内に現れるよりも早く実行されるので、結果は、プログラム・シーケンス内の適切な箇所で利用できる。投機的な実行は、プロセッサ資源が利用可能であって他で使用されていない期間に有利である。また投機的な実行は、命令が実行に複数サイクルを必要とし、通常に実行される場合にプログラム実行の遅延をもたらすところでも有利である。1つの例はメモリアクセス命令である。投機的に実行される命令は、一般に分岐命令の後に続くので、それらは、プログラムの実行を完了するために最終的に要求されないことがある。例えば、命令106が投機的に実行され、分岐命令102が命令104に分岐することになる場合、命令106は要求されない。しかし、分岐命令102が、命令106を実行することになる場合、命令106の投機的な実行によって性能が高められる。図5で、命令100、104、106および108はそれぞれ、浮動小数点ステータスレジスタ内のメイン・ステータスフィールドsf0を利用する。
【0032】
ここで図6を参照して、投機的な実行を利用するため、図5のプログラムセグメントが変更されている。図5および図6の中の同じ命令は同じ参照数字をもつ。図6に示すように、図5の命令104および106にそれぞれ対応する命令104Aおよび106Aは、分岐命令102の前に実行される。命令104Aおよび106Aは、分岐命令102の直前に実行されるように示されている。しかし、命令104Aおよび106Aは、これらの命令の実行に必要なデータが利用可能である分岐命令102の前のどの時間に実行されてもよいことが分かるであろう。なお、1つの命令または命令シーケンスを投機的に実行してもよい。
【0033】
投機的でない命令である命令100は、メイン・ステータスフィールドsf0に割り当てられる。投機的な命令104Aおよび106Aは、浮動小数点ステータスレジスタ内の代替ステータスフィールドsf2およびsf3にそれぞれ割り当てられる。代替ステータスフィールドsf2およびsf3内のフラグビットが命令104Aおよび106Aの実行の前にクリアされることを保証するため、fclrf.sf2およびfclrf.sf3で示されるフラグクリア命令110を使用して、代替ステータスフィールドsf2およびsf3内のフラグビットをクリアする。
【0034】
それぞれの浮動小数点命令は、その命令によって使用されおよびそれに関連するステータスフィールドを指定するフィールドを含むことが好ましい。浮動小数点ステータスレジスタが、メイン・ステータスフィールドおよび3つの代替ステータスフィールドを含む場合、浮動小数点ポイント命令内の2ビット・フィールドが、ステータスフィールドを指定する。
【0035】
図5および図6を参照して、図5の命令104が、図6のフラグ検査命令120と置き換えられていることが分かるであろう。さらに、図5の命令106は、図6のフラグ検査命令122と置き換えられている。fchkf.sf2で示されるフラグ検査命令120は、代替ステータスフィールドsf2内のフラグビットを検査する。同様に、fchkf.sf3で示されるフラグ検査命令122は、代替ステータスフィールドsf3内のフラグビットを検査する。
【0036】
ステータスフィールド内に設定されるフラグビットはどれも、関連する命令または命令シーケンスの実行中に生じた例外を示す。例外は、フラグビット内に記録され、プログラム割込みを生じさせる潜在性をもっている。しかし、投機的な実行の場合、投機的な命令が実際に必要であると判断されるまで、メイン・ステータスフィールド内のフラグビットの設定またはプログラム割込みは行われるべきではない。投機的に実行された命令が捨てられる場合、割込みは、プロセッサ演算に不必要な遅延を与え、不適当にプログラムに割り込むことになる。以下に述べるように、代替ステータスフィールドは、投機的な実行の間の例外を記録し、投機的に実行された命令が確約される時間になるまで従来の例外の報告を遅らせる機構を提供する。
【0037】
図2ないし図4に図示し上述した浮動小数点ステータスレジスタの構成は、投機的な実行の間に生じる割込みが遅延され、または完全に回避されることを可能にする。再び図3および図4を参照して、制御ビットは、トラップ禁止(trap disable:TD)ビットを含む。TDビットが、1つまたは複数の代替ステータスフィールド内に設定されているとき、そのステータスフィールドに関連する命令の実行の間の例外は、割込みを生じさせない。投機的に実行された命令が必要とされ、または確約されるとき、fchkf.sfxで示される浮動小数点フラグ検査命令が、代替ステータスフィールドx内のフラグビットを検査する。より具体的には、浮動小数点フラグ検査命令は、代替ステータスフィールドx内のフラグビットを、メイン・ステータスフィールドsf0内のフラグビットおよび浮動小数点ステータスレジスタ内のトラップ許可(イネーブル)ビットと比較する。回復演算への分岐は、1)代替ステータスフィールドsfxに設定されているフラグビットが、浮動小数点ステータスレジスタ内の許可されるトラップに対応する場合、または、2)代替ステータスフィールドsfxに設定されているフラグビットが、メイン・ステータスフィールドsf0内に設定されていない場合に生じる。
【0038】
再び図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は不要であり、プログラムは直接命令108へ進む。
【0039】
回復演算126は、投機的に実行された1つまたは複数の命令、この例では命令106Aの再実行を伴う。再実行の間、再実行される命令は、メイン・ステータスフィールドsf0に関連する。1つまたは複数のフラグビットが、メイン・ステータスフィールドsf0に設定されうる。対応するトラップが許可される場合、割込みを行うことができる。こうして、投機的に実行された命令106Aが確約されるまで、例外の報告は遅らされる。分岐命令102が命令120の実行を必要とする場合に、命令106Aに関連する例外の報告が回避される。
【0040】
分岐命令102が、投機的に実行された命令106Aではなく命令104Aが確約されることを要求する場合、プログラムは、上述したのと同様にフラグ検査命令120に進む。命令120は、代替ステータスフィールドsf2内のフラグビットを、メイン・ステータスフィールドsf0内のフラグビットおよび浮動小数点ステータスレジスタ内のトラップ許可ビットと比較する。回復演算124への分岐は、1)代替ステータスフィールドsf2に設定されているフラグビットが、浮動小数点ステータスレジスタ内の許可されるトラップに対応する場合、または、2)代替ステータスフィールドsf2に設定されているフラグビットが、メイン・ステータスフィールドsf0に設定されていない場合、に生じる。これらの条件のいずれも満たされない場合、回復演算124は不要であり、プログラムは命令108へジャンプする。
【0041】
回復演算124は、投機的に実行された1つまたは複数の命令、この例では命令104Aの再実行を含む。再実行の間、再実行される命令は、メイン・ステータスフィールドsf0に関連する。1つまたは複数のフラグビットが、メイン・ステータスフィールドsf0に設定されうる。対応するトラップが許可される場合、割込みを行うことができる。
【0042】
TDビットは、メイン・ステータスフィールドsf0内では使用されず、投機的でない命令は、典型的にメイン・ステータスフィールドsf0に割り当てられる。メイン・ステータスフィールドsf0に割り当てられた命令が実行されるとき、例外は直ちに報告される。
【0043】
いくつかの例で、実行されている投機的な命令または命令シーケンスの数が、浮動小数点ステータスレジスタ内で利用可能な代替ステータスフィールドの数を越えることがある。その場合、2以上の投機的に実行される命令または命令シーケンスは、浮動小数点ステータスレジスタ内の1つの代替ステータスフィールドによって共有することができる。この状況で、1つまたは複数のフラグビットが、共有される代替ステータスフィールド内に設定されるとき、代替ステータスフィールドを共有する命令のうちのどれが1つまたは複数のフラグビットを設定させたかに関して曖昧さがある。この困難を克服するための技法を図7を参照して説明する。
【0044】
図7で、投機的な実行を利用するため、図5のプログラムセグメントが再び変更されている。図5および図7の中の同じ命令は、同じ参照数字をもつ。図7に示すように、図5の命令104および106にそれぞれ対応する命令104Bおよび106Bは、分岐命令102の前に実行される。
【0045】
投機的でない命令である命令100は、メイン・ステータスフィールドsf0に割り当てられる。投機的な命令104Bおよび106Bは、浮動小数点ステータスレジスタ内の代替ステータスフィールドsf2に割り当てられ、それを共有する。命令104Bおよび106Bの実行前に代替ステータスフィールドsf2内のフラグビットがクリアされることを保証するため、fclrf.sf2で示されるフラグクリア命令130を使用して、代替ステータスフィールドsf2内のフラグビットをクリアする。
【0046】
さらに図5および図7を参照して、図5の命令104は、図7のfchkf.sf2で示されるフラグ検査命令132と置き換えられる。さらに、図5の命令106は、図7のfchkf.sf2で示されるフラグ検査命令134と置き換えられる。フラグ検査命令132および134はそれぞれ、代替ステータスフィールドsf2内のフラグビットを検査する。
【0047】
図7のプログラムセグメントの中で、命令104Bおよび106Bのどちらかまたは両方の実行の間の例外は、代替ステータスフィールドsf2内のフラグビットを設定することができる。トラップ禁止ビットが代替ステータスフィールドsf2に設定されるので、命令104Bおよび106Bが投機的に実行されるとき、例外は報告されない。
【0048】
分岐命令102に続き、フラグ検査命令132またはフラグ検査命令134が実行される。フラグ検査命令132または134は、代替ステータスフィールドsf2内のフラグビットを、メイン・ステータスフィールドsf0内のフラグビットおよび浮動小数点ステータスレジスタ内のトラップ許可ビットと比較する。回復演算への分岐は、1)代替ステータスフィールドsf2に設定されているフラグビットが、浮動小数点ステータスレジスタ内の許可されるトラップに対応する場合、または、2)代替ステータスフィールドsf2に設定されているフラグビットが、メイン・ステータスフィールドsf0に設定されていない場合に、生じる。詳しく述べると、フラグ検査命令132は回復演算140に分岐し、フラグ検査命令134は回復演算142に分岐する。上記の条件のどちらも満たされない場合、それぞれの回復演算は不要であり、プログラムは直接命令108に進む。
【0049】
代替ステータスフィールドsf2は、この例で命令104Bおよび106Bによって共有されるので、命令104Bおよび106Bのどちらが1つまたは複数のフラグビットを設定させたかを代替ステータスフィールドsf2のみから判断することはできない。この情報を判断するため、回復演算140および142は次のように動作する。初めに、確約される投機的な命令または命令シーケンスが再実行され、メイン・ステータスフィールドsf0が、再実行された命令に関連する。命令の再実行が確約されている間、1つまたは複数のフラグビットが、メイン・ステータスフィールドsf0に設定されうる。さらに、対応するトラップが浮動小数点ステータスレジスタ内で許可されている場合、割込みが生じる。次に、共有された代替ステータスフィールドがクリアされる。それから、代替ステータスフィールドを共有するが、このとき確約されていない命令または命令シーケンスが再実行される。代替ステータスフィールドが、確約されていない命令の再実行に関連する。確約されていない命令の再実行の間に生じる例外は、代替ステータスフィールド内のフラグビットを設定させる。回復演算のこのシーケンスは、代替ステータスフィールドから確約された命令または命令シーケンスに対するフラグ情報を効果的に除去し、それをメイン・ステータスフィールドに移す。代替ステータスフィールドは、代替ステータスフィールドを共有するが確約されなかった残りの命令に対するフラグ情報を保持する。
【0050】
再び図7の例を参照して、投機的に実行された命令106Bが確約されることを分岐命令102が要求すると仮定する。プログラムは、フラグ検査命令134に進む。フラグ検査命令134は、代替ステータスフィールドsf2内のフラグビットを、メイン・ステータスフィールドsf0内のフラグビットおよび浮動小数点ステータスレジスタ内のトラップ許可ビットと比較する。回復演算142への分岐は、1)代替ステータスフィールドsf2に設定されているフラグビットが、浮動小数点ステータスレジスタ内の許可されるトラップに対応する場合、または、2)代替ステータスフィールドsf2に設定されているフラグビットが、メイン・ステータスフィールドsf0に設定されていない場合、に生じる。これらの条件のどちらも満たされない場合、回復演算142は不要であり、プログラムは直接命令108に進む。
【0051】
回復演算142は、投機的に実行された命令106Bの再実行を伴う。再実行の間、1つまたは複数のフラグビットが、メイン・ステータスフィールドsf0に設定されうる。対応するトラップが許可される場合、割込みを生じさせることができる。代替ステータスフィールドsf2内のフラグビットがクリアされ、投機的に実行された命令104Bが再実行される。命令104Bの再実行の間、1つまたは複数のフラグビットが、代替ステータスフィールドsf2に設定されうるが、代替ステータスフィールドsf2内のトラップ禁止ビットが割込みを防ぐ。ここで、代替ステータスフィールドsf2は、プログラム実行の間の後の時間に確約されうる投機的に実行される命令104Bに対するフラグ情報のみを含む。
【0052】
図6および図7のプログラムセグメントは、命令の再実行を生じさせ、それによって短期的に性能を低下させることに気付くであろう。しかし、プログラムの実行のインスタンスの大部分で、例外は生じない。それらのケースで、命令の再実行は必要とされず、全体の性能は投機的な実行によって高められる。
【0053】
投機的な実行の場合、代替ステータスフィールドは、投機的な実行の間に生じる例外が、メイン・ステータスフィールドsf0に影響を及ぼすことなく記録されることを可能にする。それぞれの代替ステータスフィールド内のトラップ禁止ビットは、不適当な割込みの発生を防ぐ。それぞれの命令が確約されるとき、投機的に実行された命令に関連するフラグ情報が利用される。
【0054】
浮動小数点ステータスレジスタ内の複数のステータスフィールドの利用を投機的な実行に関連して上述した。しかし、浮動小数点ステータスレジスタの複数のステータスフィールド構成は、通常の投機的でない実行の間に有用である。例えば、浮動小数点ステータスレジスタの従来の読み取り-変更-書き込み更新によって必要とされる遅延をまねくことなく、プログラム・シーケンス内の異なる命令に対して異なる制御ビットを利用することが望ましい。したがって、異なる浮動小数点命令について異なる丸めおよび/または切捨てモードを利用することが望ましい。これは、異なる命令を浮動小数点ステータスレジスタ内の異なるステータスフィールドと関連させることによって達成することができる。こうして、異なるステータスフィールドに関連する命令は、異なる制御ビットをもつことができる。投機的でない実行の場合、トラップ禁止ビットはリセットされたままである。したがって、例外は直ちに報告される。
【0055】
回転レジスタ(rotating registers)は、実行に複数サイクルを必要とする命令をもつプログラム・ループの実行を速めるために利用されている。回転レジスタは、プログラム・ループの複数の繰り返しが並行に実行されることを可能にする。命令がレジスタを参照するとき、レジスタは、論理的レジスタとみなされ、対応する物理的レジスタは、ループのそれぞれの繰り返しごとにインクリメントされる。したがって、いくつかの繰り返しが、異なるレジスタの中で進行中になりうる。
【0056】
浮動小数点ステータスレジスタ内の1つまたは複数の代替ステータスフィールドは、回転レジスタと関連することができる。回転ステータスフィールドは、異なる時間にプログラム・ループの異なる繰り返しと関連する。概して、浮動小数点ステータスレジスタは、固定される1つまたは複数のステータスフィールド、および回転する1つまたは複数のステータスフィールドを含むことができる。
【0057】
図8を参照して、浮動小数点ステータスレジスタ24を更新する技法の一例を述べる。浮動小数点計算ユニット20は、ステージ200、202、204、206および208を含むパイプライン・アーキテクチャをもつ。従来技術で知られているように、パイプライン化された計算ユニットの異なるステージは、同時に異なる演算を実施して動作速度を増加させる。1つの命令はいくつかの演算を必要とすることがあるので、計算ユニットの複数ステージによって同時に実施される演算は、1つの命令または2以上の命令に関連することができる。簡潔にするため、図8は、浮動小数点計算ユニットの各ステージにつき1つの命令を示す。さらに、図8に、メイン・ステータスフィールドsf0および代替ステータスフィールドsf1、sf2およびsf3を含む浮動小数点ステータスレジスタ24が示されている。先に述べたように、それぞれのステータスフィールドは、制御ビットCおよびフラグビットFを含む。
【0058】
浮動小数点計算ユニット20は、異なる浮動小数点命令がパイプライン化された計算ユニットの異なるステージで実行されているときの一時点で示されている。それぞれの浮動小数点命令は、ステータスフィールドsf0、sf1、sf2およびsf3の1つと関連し、またはそれを参照する。従って、例えばステージ204は、fmpyで示される浮動小数点乗算命令を含み、この命令は、代替ステータスフィールドsf3を参照する。浮動小数点計算ユニット20のそれぞれのステージ200、202、204、206および208は、参照されるステータスフィールドからの制御ビットのコピーを含む。制御ビットは、命令と共にパイプライン化された計算ユニットの中を伝搬し、その命令を制御するために使用される。これは、ステータスフィールドが動的に更新されることを可能にし、従ってプログラム・シーケンス内の異なる命令は、異なる制御情報を利用することができる。
【0059】
ステータス情報に関する図8の装置の動作を以下に述べる。浮動小数点ステータスレジスタ24は、浮動小数点制御設定fsetc.sfx(ここで、xは参照されるステータスフィールドを示す)および浮動小数点フラグクリア(fclrf.sfx)を含む浮動小数点命令によって更新される。浮動小数点制御設定およびフラグクリア命令は、浮動小数点プログラム・シーケンス内に組み込まれ、他の浮動小数点命令と共にパイプライン化された浮動小数点計算ユニットの中を伝搬する。上述したように、浮動小数点制御設定およびフラグクリア命令は、他のステータスフィールドに影響を及ぼすことなく、また、同じステータスフィールド内の他のサブフィールドに影響を及ぼすことなく、浮動小数点ステータスレジスタの指定されたサブフィールドが迅速に更新されることを可能にする。
【0060】
図8の例で、フラグクリア命令220は、浮動小数点計算ユニット20から出てきた。命令220は、メイン・ステータスフィールドsf0内のフラグビットをリセットさせる。この演算は、図示されるようにパイプライン化された計算ユニットの出力で実施することができる。命令220の後に続き、例えばステージ200および208内の命令のようなメイン・ステータスフィールドsf0を示すパイプライン内の命令は、それぞれの演算の間に生じる例外の結果として、メイン・ステータスフィールドsf0に1つまたは複数のフラグビットを設定することができる。
【0061】
ステージ208は、ステータスフィールドsf0が制御ビット01010を含むことを示す。ステージ202の制御設定命令は、ステータスフィールドsf0の制御ビットを11111に更新している。それゆえ、パイプライン内のステージ202から上流にあり、ステータスフィールドsf0を参照するそれらの命令は、制御ビット11111を利用する。対照的に、ステージ202の下流にあり、ステータスフィールドsf0を参照するそれらの命令は、制御ビット01010を使用する。このように、異なる命令は、同じステータスフィールドから異なる制御情報を利用することができることが分かるだろう。制御情報は、演算を遅延させることなく動的に更新することができる。
【0062】
fsetc.sf2で示される制御設定命令224は、パイプライン化された計算ユニット20の第1ステージ200に入るところである。命令224は、ステータスフィールドsf2内の制御ビットを、例えば01001に設定することができる。こうして、命令224の上流にあって、ステータスフィールドsf2を参照するそれらの命令は、新しい制御ビットを利用する。
【0063】
制御情報を必要とするそれぞれの浮動小数点命令は、それがパイプライン化された浮動小数点計算ユニットに入るとき、参照されるステータスフィールドから制御情報を読み取ることができる。参照されるステータスフィールドが、命令の完了前に更新されるとしても、その制御情報は、命令と共にパイプラインを通して運ばれ、その命令の実行を制御する。従って、例えば、ステータスフィールドsf0を参照するステージ208の命令は、それがパイプライン化された計算ユニットに入るときに、ステータスフィールドsf0から制御ビット01010を取得した。ステージ208の命令がパイプラインから出る前にステータスフィールドsf0内の制御ビットがステージ202の制御設定命令によって変更されるとしても、それらの制御ビットが命令の実行を制御する。この構成は、高い柔軟性を与え、ステータス情報を変更するための従来の技法に関連する遅延を避ける。
【0064】
図8の構成は、制御設定命令がパイプライン化された計算ユニットの入力に達するとき、それが参照されるステータスフィールド内の制御ビットを更新し、フラグクリア命令がパイプライン化された計算ユニットから出るとき、それが参照されるステータスフィールド内のフラグビットをクリアするプロトコルを利用する。さらに、制御情報を必要とするそれぞれの浮動小数点命令は、それがパイプライン化された計算ユニットに入るとき、参照されるステータスフィールドを読み取る。この発明の範囲内で、異なるプロトコルを利用することができることが理解されるであろう。例えば、制御設定命令およびフラグクリア命令は、パイプライン化された計算ユニットに対して早いまたは遅い時間に浮動小数点ステータスレジスタを更新することができる。さらに、浮動小数点命令は、パイプライン化された計算ユニットに対して早いまたは遅い時間に、参照されるステータス情報を読み取ることができる。
【0065】
IEEE標準に従うメモリ内の浮動小数点数の記憶装置に適した形式を図9に示す。単精度表現250は、8ビット指数252、および23ビット仮数(mantissaまたはsignificand)254を含む。2倍精度表現260は、11ビット指数262および52ビット仮数264を含む。拡張2倍表現270は、15ビット指数272および63ビット仮数274を含む。4倍精度表現280は、15ビット指数282および112ビット仮数284を含む。それぞれの表現は、符号ビットを含む。これらの表現の中で最も大きい指数は、15ビットである。
【0066】
浮動小数点レジスタ16(図1)の中で使用されるレジスタ形式の一例を図10に示す。レジスタ形式は、符号ビット288、17ビットを有する指数フィールド290、64ビットを有する仮数フィールド292を含む。このように、レジスタ形式の指数フィールド290は、メモリ表現のどの指数フィールドよりも大きい。レジスタ形式の指数フィールドは、メモリ形式で支援される最も広い指数フィールドより少なくとも2ビット広いことが好ましい。
【0067】
一般に、従来技術の浮動小数点ユニットは、結果の指数が所与のレンジを越えるとき、オーバフロー例外を示すフラグビットがステータスレジスタに設定されるように構成される。レンジは、メモリ形式に基づいて選択される。従って、指数がメモリに記憶することができるレンジを越える場合、オーバフロー例外が発生する。同じレンジが、計算の任意の中間ステップおよび最終ステップに適用される。
【0068】
多くの計算の中で、中間ステップは、メモリ形式の指数レンジを越える結果を生じるが、最終結果は、メモリ形式の指数レンジの範囲内にある。従って、浮動小数点レジスタを含む浮動小数点計算ユニットが、メモリ形式の指数レンジより広い指数レンジを処理する能力をもつところで、最終結果がメモリ形式の指数レンジの範囲内にある限り、中間ステップの間のオーバフロー例外の発生は不要である。
【0069】
上記のタイプの浮動小数点計算の例を図11に図示する。直角三角形の斜辺計算がブロック300に示されている。斜辺Cは、辺AおよびBの2乗の和の平方根として計算される。図示される例で、メモリ形式は、指数が9以下であり、AおよびBの値が109に等しいことを要求する。AおよびBの値は、中間ステップ302の斜辺の公式に代入される。追加の中間ステップ304、306および308は、ステップ310で最終結果を導く。指数は、ステップ304および306でメモリ形式のレンジを越えることに注意しなければならない。しかし、ステップ310の最終結果の指数は、メモリ形式のレンジの範囲内(9以下)である。浮動小数点計算ユニットは、中間ステップ302-308で生成されるレンジで指数を処理することができることを前提とすると、ステップ310の最終結果は、メモリ形式の指数レンジの範囲内にあるので、これらの中間ステップのオーバフロー例外の発生は不要である。詳しく述べると、最終結果のみがメモリ形式で記憶されればよい。
【0070】
この発明の機能に従って、浮動小数点ステータスレジスタ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ビットを使用して、他のタイプの例外の報告を制御することができる。
【0071】
WREビットは、上述したように2以上の浮動小数点ステータスフィールドをもつアーキテクチャ、および1つの浮動小数点ステータスフィールドをもつアーキテクチャの中で使用することができる。浮動小数点ステータスレジスタが2またはそれ以上のステータスフィールドをもつとき、計算の中間ステップは、セットされたWREビットをもつ代替ステータスフィールドを参照し、計算の最終ステップは、リセットされたWREビットをもつメイン・ステータスフィールドsf0を参照することができる。浮動小数点ステータスレジスタが1つのステータスフィールドをもつとき、WREビットは、中間ステップの間は設定されており、計算の最終ステップの前にリセットされる。
【0072】
WREビットは、メモリ形式を使用してメモリに計算の最終結果を書き込むことに関連して記述された。より一般的に、WREビットは、中間結果の指数が最終結果の指数より大きい必要がある応用に使用することができる。従って、例えば最終結果は、指定された形式で外部装置に伝送することができる。WREビットのセットおよびリセット状態に関連する第1および第2指数レンジのサイズは、特定のアーキテクチャに依存する。上で述べたように、第1指数レンジは、第2指数レンジより少なくとも2ビット広いことが好ましい。
【0073】
WREビットは、オーバフロー例外を防ぐことに限定されない。WREビットを使用して、例えばアンダーフロー例外、不正確例外、または、計算の中間ステップでは記録される必要がないが最終ステップで記録される必要がある任意の他の例外を防ぐことができる。WREビットは、不要な例外の発生を防ぎ、それによって性能を向上させる。
【0074】
浮動小数点ステータスレジスタ内の制御ビットとしてWREビットを説明した。別の実施例で、WREビットは、命令形式で指定することができる。この方法の不利な点は、命令が特別なビットまたは特別な状態をもつ必要があることである。この方法の利点は、浮動小数点ステータスレジスタの更新が必要でないことである。どちらの場合も、WREビットは、プログラマによって制御される。
【0075】
この発明の更なる機能は、「ビッグ・エンディアン」(big endian:BE)および「リトル・エンディアン」(little endian:LE)形式を用いた演算に関連する。ビッグ・エンディアン形式では、データワードは、その最上位バイトがメモリワードの最上位バイトに対応するようメモリに記憶される。リトル・エンディアン形式で、データワードは、その最下位バイトがメモリワードの最上位バイトに対応するようメモリに記憶される。データは、両方の形式でメモリに記憶することができるが、それらの形式の1つだけがプロセッサのレジスタ内で許される。ビッグ・エンディアンまたはリトル・エンディアン形式は、制御レジスタ内のエンディアン制御ビットによって制御することができる。ビッグ・エンディアン/リトル・エンディアン制御ビットの状態は、ソフトウェアによって制御される。
【0076】
上述したように、浮動小数点データは、図9に示すIEEE形式のメモリに記憶することができ、IEEE形式とは異なるレジスタ形式で浮動小数点レジスタ内で処理することができる。いくつかのプロセッサ演算において、浮動小数点データは、レジスタ形式からIEEE形式に変換され、メモリに記憶される。逆の場合も同様である。スピル(spill)/フィル(fill)演算として知られる他のプロセッサ演算では、浮動小数点データは、最初に浮動小数点数をIEEE形式に変換することなく、レジスタ形式でメモリに書き込まれる。同様に、浮動小数点データがメモリから読み取られるとき、それはすでにレジスタ形式であり、形式変換は必要とされない。スピル/フィル演算は、例えばプログラムが割り込まれるときに実施することができる。
【0077】
スピル/フィル演算を図12および図13に関して説明する。浮動小数点レジスタ形式を図12にバイト表現で示す。詳しく述べると、レジスタ形式400は、8バイトs0-s7をもつ仮数(significand:有効数字)、2バイトe0およびe1を有する指数404、1符号バイトのse2を含む。浮動小数点レジスタ形式400は、合計82ビットをもつ。
【0078】
浮動小数点レジスタ形式の82ビットは、図13に示すように、ビッグ・エンディアンまたはリトル・エンディアン形式で128ビット・メモリフィールドに記憶することができる。図13で、形式420は、リトル・エンディアン形式でレジスタ形式のスピル/フィル演算の結果を示す。形式424は、ビッグ・エンディアン形式のスピル/フィル演算の結果を示す。それぞれの形式の左側の数字は、増大するメモリアドレスを示す。リトル・エンディアン形式420では、仮数の最下位バイトs0が、128ビット・メモリフィールドの最も低いメモリアドレスに記憶される。ビッグ・エンディアン形式424では、仮数の最下位バイトs0が、128ビット・メモリフィールドの最も高いメモリアドレスに記憶される。それぞれのケースで、128ビットフィールドの中のゼロは、それぞれの浮動小数点数の最上位ビットである。図13で、破線430、432および434は、8バイトワードの境界を示しており、第1および第2の連続するメモリワードを規定する。このように、リトル・エンディアン形式では、仮数は、ワード境界430と432の間の第1メモリワードに記憶され、指数および符号は、ワード境界432と434の間の第2メモリワードに記憶される。ビッグ・エンディアン形式では、指数および符号は、ワード境界430と432の間の第1メモリワードに記憶され、仮数は、ワード境界432と434の間の第2メモリワードに記憶される。
【0079】
リトル・エンディアン形式420およびビッグ・エンディアン形式424は共に、仮数が8バイトアクセスでアクセスされることを可能にし、指数および符号が8バイトアクセスでアクセスされることを可能にする。すなわち、BEおよびLE形式のどちらの形式でも、指数および符号は一方の8バイトワードに閉じ込められ、仮数は他方の8バイトワードに閉じ込められるので、浮動小数点数のどちらかまたは両方の成分に別個にアクセスすることができる。さらに、図13に図示し上述した形式420および424は、既存のデータに影響を及ぼすことなく、ゼロによって占有される位置の浮動小数点フィールドに制御ビットを加えることを許す。詳しく述べると、制御ビットおよび他の情報をLE形式420のバイト11-15に加えることができ、そのような情報は、BE形式424のバイト0-4に加えることもできる。
【0080】
この発明の好ましい実施例として現在考えられるものを図示し説明したが、当業者であればこの発明の範囲から逸脱することなく多様な変更および修正を行うことができることが分かるであろう。
【0081】
本発明は例として次の実施態様を含む。
【0082】
(1)浮動小数点計算ユニット、浮動小数点レジスタ、および浮動小数点ステータスレジスタを有するコンピュータを動作させる方法であって、
上記浮動小数点ステータスレジスタ内に、それぞれがフラグ情報および制御情報を含むメイン・ステータスフィールドおよび少なくとも1つの代替ステータスフィールドを設けるステップと、
浮動小数点計算ユニット内で第1の演算を実施し、該第1の演算を上記浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させるステップと、
浮動小数点計算ユニット内で第2の演算を実施し、該第2の演算を上記浮動小数点ステータスレジスタ内の代替ステータスフィールドと関連させるステップと、
を含み、上記第1および第2の演算は、上記メイン・ステータスフィールドおよび代替ステータスフィールド内に別個のフラグおよび制御情報をもつ、コンピュータ動作方法。
【0083】
(2)上記第1の演算は、投機的でない演算を含み、上記第2の演算は、投機的な演算を含み、さらに、上記投機的な演算が確約されるとき、上記代替ステータスフィールド内のフラグ情報を検査するステップを含む、上記(1)に記載のコンピュータ動作方法。
【0084】
(3)さらに、上記代替ステータスフィールド内のフラグ情報を検査するステップが例外を示さない場合、第3の演算の実行に進むステップを含む、上記(2)に記載のコンピュータ動作方法。
【0085】
(4)上記フラグ情報を検査するステップは、上記代替ステータスフィールド内のフラグ情報を上記メイン・ステータスフィールド内のフラグ情報と比較するステップと、上記代替ステータスフィールド内のフラグ情報が、上記メイン・ステータスフィールド内のフラグ情報と異なるとき、回復演算に分岐するステップを含む、上記(2)に記載のコンピュータ動作方法。
【0086】
(5)上記フラグ情報を検査するステップは、上記代替ステータスフィールド内のフラグ情報を、浮動小数点ステータスレジスタ内のトラップ許可ビットと比較するステップと、上記代替ステータスフィールド内のフラグ情報が上記浮動小数点ステータスレジスタ内の許可されるトラップに対応する場合、回復演算に分岐するステップを含む、上記(2)に記載のコンピュータ動作方法。
【0087】
(6)上記回復演算は、投機的な演算を再実行するステップと、投機的な演算の再実行を上記浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させるステップを含む、上記(4)または(5)に記載のコンピュータ動作方法。
【0088】
(7)上記投機的な演算を実施するステップは、第1および第2の投機的な演算を実施し、該第1および第2の投機的な演算を上記浮動小数点ステータスレジスタ内の単一の代替ステータスフィールドと関連させることを含む、上記(2)に記載のコンピュータ動作方法。
【0089】
(8)さらに、上記第1および第2の投機的な演算の1つが確約されるとき、上記代替ステータスフィールド内のフラグ情報を検査するステップを含む、上記(7)に記載のコンピュータ動作方法。
【0090】
(9)上記フラグ情報を検査するステップは、上記代替ステータスフィールド内のフラグ情報を上記メイン・ステータスフィールド内のフラグ情報と比較するステップと、上記代替ステータスフィールド内のフラグ情報が上記メイン・ステータスフィールド内のフラグ情報と異なるとき、回復演算に分岐するステップを含む、上記(8)に記載のコンピュータ動作方法。
【0091】
(10)上記フラグ情報を検査するステップは、上記代替ステータスフィールド内のフラグ情報を、上記浮動小数点ステータスレジスタ内のトラップ許可ビットと比較するステップと、代替ステータスフィールド内のフラグ情報が上記浮動小数点ステータスレジスタ内の許可されるトラップに対応するとき、回復演算に分岐するステップを含む、上記(8)に記載のコンピュータ動作方法。
【0092】
(11)上記回復演算は、確約される投機的な演算を再実行するステップと、確約される投機的な演算の再実行を上記浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させるステップと、上記代替ステータスフィールド内のフラグ情報をクリアするステップと、確約されていない投機的な演算を再実行するステップと、確約されていない投機的な演算の再実行を上記浮動小数点ステータスレジスタ内の代替ステータスフィールドと関連させるステップを含む、上記(9)または(10)に記載のコンピュータ動作方法。
【0093】
(12)上記フラグ情報を検査するステップは、上記代替ステータスフィールド内のフラグ情報を検査するステップが例外を示さない場合、第3の演算の実行に進むことを含む、上記(8)に記載のコンピュータ動作方法。
【0094】
(13)上記浮動小数点ステータスレジスタ内に少なくとも1つの代替ステータスフィールドを設けるステップは、上記浮動小数点ステータスレジスタ内に複数の代替ステータスフィールドを設けることを含む、上記(1)に記載のコンピュータ動作方法。
【0095】
(14)上記代替ステータスフィールドの少なくとも1つは回転し、回転するステータスフィールドは、異なる演算サイクルに異なる演算と関連する、上記(13)に記載のコンピュータ動作方法。
【0096】
(15)上記第2の演算を実施するステップは、第1および第2の投機的な演算を実施し、上記第1および第2の投機的な演算を上記代替ステータスフィールドの異なるものと関連させることを含む、上記(13)に記載のコンピュータ動作方法。
【0097】
(16)上記少なくとも1つの代替ステータスフィールドを設けるステップは、上記第2の演算の実行中の例外に起因する割込みを防ぐため、上記代替ステータスフィールド内にトラップ禁止ビットを設けることを含む、上記(1)に記載のコンピュータ動作方法。
【0098】
(17)さらに、上記第2の演算が投機的な演算であるとき、上記トラップ禁止ビットを設定するステップを含み、上記割込みは、投機的な演算が確約されるまで遅延される、上記(16)に記載のコンピュータ動作方法。
【0099】
(18)上記第1および第2の演算をそれぞれメインおよび代替ステータスフィールドと関連させるステップは、第1および第2の演算を指定する浮動小数点命令の中の1つまたは複数の制御ビットに応じて実施される、上記(1)に記載のコンピュータ動作方法。
【0100】
(19)浮動小数点計算を実施する装置であって、
浮動小数点計算ユニット、浮動小数点レジスタ、および浮動小数点ステータスレジスタを有するコンピュータであって、上記浮動小数点ステータスレジスタはメイン・ステータスフィールドおよび少なくとも1つの代替ステータスフィールドを含み、上記メイン・ステータスフィールドおよび上記代替ステータスフィールドはそれぞれ浮動小数点演算を制御するための制御情報および浮動小数点演算の間に生じた1つまたは複数の例外を記録するためのフラグ情報を含む、コンピュータと、
浮動小数点計算ユニット内で第1の演算を実施し、該第1の演算を上記浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させる手段と、
浮動小数点計算ユニット内で第2の演算を実施し、該第2の演算を上記浮動小数点ステータスレジスタ内の代替ステータスフィールドと関連させる手段と、
を備え、上記第1および第2の演算は、上記メインおよび代替ステータスフィールド内にそれぞれ別個の制御およびフラグ情報をもつ、浮動小数点演算を実施する装置。
【0101】
(20)上記第1の演算を実施する手段は、投機的でない演算を実施する手段を含み、上記第2の演算を実施する手段は、投機的な演算を実施する手段を含み、さらに、上記投機的な演算が確約されるとき、上記代替ステータスフィールド内のフラグ情報を検査する手段を備える、上記(19)に記載の装置。
【0102】
(21)さらに、上記代替ステータスフィールド内のフラグ情報を検査する手段が例外を示さない場合、第3の演算の実行に進む手段を含む、上記(20)に記載の装置。
【0103】
(22)上記フラグ情報を検査する手段は、上記代替ステータスフィールド内のフラグ情報を、上記メイン・ステータスフィールド内のフラグ情報と比較する手段と、上記代替ステータスフィールド内のフラグ情報が上記メイン・ステータスフィールド内のフラグ情報と異なるとき、回復演算に分岐する手段を含む、上記(20)に記載の装置。
【0104】
(23)上記フラグ情報を検査する上記手段は、上記代替ステータスフィールド内のフラグ情報を浮動小数点ステータスレジスタ内のトラップ許可ビットと比較する手段と、上記代替ステータスフィールド内のフラグ情報が、上記浮動小数点ステータスレジスタ内で許可されるトラップに対応するとき、回復演算に分岐する手段を含む、上記(20)に記載の装置。
【0105】
(24)さらに、投機的な演算を再実行する手段および投機的な演算の再実行を上記浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させる手段を有する上記回復演算を実行する手段を備える、上記(22)または(23)に記載の装置。
【0106】
(25)上記投機的な演算を実施する手段は、第1および第2の投機的な演算を実施し、該第1および第2の投機的な演算を上記浮動小数点ステータスレジスタ内の単一の代替ステータスフィールドと関連させる手段を含む、上記(20)に記載の装置。
【0107】
(26)さらに、上記第1および第2の投機的な演算の1つが確約されるとき、上記代替ステータスフィールド内のフラグ情報を検査する手段を含む、上記(25)に記載の装置。
【0108】
(27)上記フラグ情報を検査する手段は、上記代替ステータスフィールド内のフラグ情報を上記メイン・ステータスフィールド内のフラグ情報と比較する手段と、上記代替ステータスフィールド内のフラグ情報が上記メイン・ステータスフィールド内のフラグ情報と異なるとき、回復演算に分岐する手段を含む、上記(26)に記載の装置。
【0109】
(28)上記フラグ情報を検査する手段は、上記代替ステータスフィールド内のフラグ情報を上記浮動小数点ステータスレジスタ内のトラップ許可ビットと比較する手段と、代替ステータスフィールド内のフラグ情報が上記浮動小数点ステータスレジスタ内で許可されるトラップに対応するとき、回復演算に分岐する手段を含む、上記(26)に記載の装置。
【0110】
(29)さらに、確約される投機的な演算を再実行する手段、確約される投機的な演算の再実行を上記浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させる手段、上記代替ステータスフィールド内のフラグ情報をクリアする手段、確約されていない投機的な演算を再実行する手段、および確約されていない投機的な演算の再実行を上記浮動小数点レジスタ内の代替ステータスフィールドと関連させる手段を含む上記回復演算を実行する手段を備える、上記(27)または(28)に記載の装置。
【0111】
(30)上記フラグ情報を検査する手段は、上記代替ステータスフィールド内のフラグ情報を検査する手段が例外を示さない場合、第3の演算の実行に進む手段を含む、上記(26)に記載の装置。
【0112】
(31)上記浮動小数点ステータスレジスタは、複数の代替ステータスフィールドを含む、上記(19)に記載の装置。
【0113】
(32)上記第2の演算を実施する手段は、第1および第2の投機的な演算を実施する手段、および該第1および第2の投機的な演算を上記代替ステータスフィールドの異なるものと関連させる手段を含む、上記(31)に記載の装置。
【0114】
(33)上記代替ステータスフィールドの少なくとも1つは、異なる演算サイクルに異なる演算と関連する回転する代替ステータスフィールドを含む、上記(31)に記載の装置。
【0115】
(34)上記浮動小数点ステータスレジスタの代替ステータスフィールドは、上記第2の演算の実行中の例外に起因する割込みを防ぐためのトラップ禁止ビットを含む、上記(19)に記載の装置。
【0116】
(35)さらに、上記第2の演算が投機的な演算であるとき、上記トラップ禁止ビットを設定する手段を含み、上記割込みは、投機的な演算が確約されるまで遅延される、上記(34)に記載の装置。
【0117】
(36)上記第1および第2の演算をメインおよび代替ステータス・フィールドと関連させる手段は、第1および第2の演算を指定する浮動小数点命令の中の1つまたは複数の制御ビットに応じる、上記(19)に記載の装置。
【0118】
【発明の効果】
本発明によれば、パイプライン浮動小数点ユニットの中で、投機的な演算の間に生じた例外をすぐに報告せずにステータスレジスタ内に記録することにより、不必要なプログラム割込みを防ぐことができる。
【図面の簡単な説明】
【図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 ビッグエンディアン形式
Claims (10)
- 浮動小数点計算ユニット、浮動小数点レジスタ、および浮動小数点ステータスレジスタを有するコンピュータを動作させる方法であって、
前記浮動小数点ステータスレジスタ内に、それぞれがフラグ情報および制御情報を含むメイン・ステータスフィールドおよび少なくとも1つの代替ステータスフィールドを設けるステップと、
浮動小数点計算ユニット内で第1の演算を実施し、該第1の演算を前記浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させるステップと、
浮動小数点計算ユニット内で、前記第1の演算と共に第2の演算を実施し、該第2の演算を前記浮動小数点ステータスレジスタ内の代替ステータスフィールドと関連させるステップと、を含み、前記第1および第2の演算は、前記メイン・ステータスフィールドおよび代替ステータスフィールド内に別個のフラグおよび制御情報を含み、前記第1の演算は、投機的でない演算を含み、前記第2の演算は、投機的な演算を含み、
前記投機的な演算が確約されるとき、前記代替ステータスフィールド内のフラグ情報を検査するステップを含む、コンピュータ動作方法。 - 前記代替ステータスフィールド内のフラグ情報を検査するステップが例外を示さない場合、第3の演算の実行に進むステップをさらに含む、請求項1に記載のコンピュータ動作方法。
- 前記フラグ情報を検査するステップは、前記代替ステータスフィールド内のフラグ情報を前記メイン・ステータスフィールド内のフラグ情報と比較するステップと、前記代替ステータスフィールド内のフラグ情報が、前記メイン・ステータスフィールド内のフラグ情報と異なるとき、回復演算に分岐するステップを含む、請求項1に記載のコンピュータ動作方法。
- 前記フラグ情報を検査するステップは、前記代替ステータスフィールド内のフラグ情報を、浮動小数点ステータスレジスタ内のトラップ許可ビットと比較するステップと、前記代替ステータスフィールド内のフラグ情報が前記浮動小数点ステータスレジスタ内の許可されるトラップに対応する場合、回復演算に分岐するステップを含む、請求項1に記載のコンピュータ動作方法。
- 前記回復演算は、投機的な演算を再実行するステップと、投機的な演算の再実行を前記浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させるステップを含む、請求項3に記載のコンピュータ動作方法。
- 前記投機的な演算を実施するステップは、第1および第2の投機的な演算を実施し、該第1および第2の投機的な演算を前記浮動小数点ステータスレジスタ内の単一の代替ステータスフィールドと関連させることを含む、請求項1に記載のコンピュータ動作方法。
- さらに、前記第1および第2の投機的な演算の1つが確約されるとき、前記代替ステータスフィールド内のフラグ情報を検査するステップを含む、請求項6に記載のコンピュータ動作方法。
- 前記フラグ情報を検査するステップは、前記代替ステータスフィールド内のフラグ情報を前記メイン・ステータスフィールド内のフラグ情報と比較するステップと、前記代替ステータスフィールド内のフラグ情報が前記メイン・ステータスフィールド内のフラグ情報と異なるとき、回復演算に分岐するステップを含む、請求項7に記載のコンピュータ動作方法。
- 前記フラグ情報を検査するステップは、前記代替ステータスフィールド内のフラグ情報を、前記浮動小数点ステータスレジスタ内のトラップ許可ビットと比較するステップと、代替ステータスフィールド内のフラグ情報が前記浮動小数点ステータスレジスタ内の許可されるトラップに対応するとき、回復演算に分岐するステップを含む、請求項7に記載のコンピュータ動作方法。
- 前記回復演算は、確約される投機的な演算を再実行するステップと、確約される投機的な演算の再実行を前記浮動小数点ステータスレジスタ内のメイン・ステータスフィールドと関連させるステップと、前記代替ステータスフィールド内のフラグ情報をクリアするステップと、前記浮動小数点ステータスレジスタ内の代替ステータスフィールドで確約されていない投機的な演算を再実行するステップを含む、請求項8に記載のコンピュータ動作方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US169482 | 1998-10-10 | ||
US09/169,482 US6370639B1 (en) | 1998-10-10 | 1998-10-10 | Processor architecture having two or more floating-point status fields |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000122848A JP2000122848A (ja) | 2000-04-28 |
JP2000122848A5 JP2000122848A5 (ja) | 2006-11-09 |
JP4219507B2 true JP4219507B2 (ja) | 2009-02-04 |
Family
ID=22615891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27847299A Expired - Fee Related JP4219507B2 (ja) | 1998-10-10 | 1999-09-30 | コンピュータ動作方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6370639B1 (ja) |
JP (1) | JP4219507B2 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728865B1 (en) | 1999-10-20 | 2004-04-27 | Transmeta Corporation | Pipeline replay support for unaligned memory operations |
US6604188B1 (en) | 1999-10-20 | 2003-08-05 | Transmeta Corporation | Pipeline replay support for multi-cycle operations wherein all VLIW instructions are flushed upon detection of a multi-cycle atom operation in a VLIW instruction |
US6804769B1 (en) * | 2000-02-18 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Unified buffer for tracking disparate long-latency operations in a microprocessor |
US6826682B1 (en) * | 2000-06-26 | 2004-11-30 | Transmeta Corporation | Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state |
US6941449B2 (en) * | 2002-03-04 | 2005-09-06 | Hewlett-Packard Development Company, L.P. | Method and apparatus for performing critical tasks using speculative operations |
US20040143821A1 (en) * | 2003-01-21 | 2004-07-22 | Sun Microsystems, Inc. | Method and structure for converting data speculation to control speculation |
US20040221274A1 (en) * | 2003-05-02 | 2004-11-04 | Bross Kevin W. | Source-transparent endian translation |
US7711928B2 (en) * | 2004-03-31 | 2010-05-04 | Oracle America, Inc. | Method and structure for explicit software control using scoreboard status information |
US20070006195A1 (en) * | 2004-03-31 | 2007-01-04 | Christof Braun | Method and structure for explicit software control of data speculation |
US20170212763A1 (en) * | 2014-07-25 | 2017-07-27 | Hewlettt Packard Enterprise Development Lp | Exception handling predicate register |
US9996353B2 (en) | 2015-02-26 | 2018-06-12 | International Business Machines Corporation | Universal history buffer to support multiple register types |
US9971604B2 (en) * | 2015-02-26 | 2018-05-15 | International Business Machines Corporation | History buffer for multiple-field registers |
US10067766B2 (en) | 2015-02-26 | 2018-09-04 | International Business Machines Corporation | History buffer with hybrid entry support for multiple-field registers |
US10108423B2 (en) * | 2015-03-25 | 2018-10-23 | International Business Machines Corporation | History buffer with single snoop tag for multiple-field registers |
IL296860A (en) | 2020-03-27 | 2022-11-01 | Sysdig Inc | Dynamic scheduling using a user rating based mechanism |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5125092A (en) * | 1989-01-09 | 1992-06-23 | International Business Machines Corporation | Method and apparatus for providing multiple condition code fields to to allow pipelined instructions contention free access to separate condition codes |
US5574872A (en) * | 1991-12-10 | 1996-11-12 | Intel Corporation | Method and apparatus for controlling the saving of pipelines in pipelined processors during trap handling |
US5826069A (en) * | 1993-09-27 | 1998-10-20 | Intel Corporation | Having write merge and data override capability for a superscalar processing device |
US5574942A (en) * | 1994-02-28 | 1996-11-12 | Intel Corporation | Hybrid execution unit for complex microprocessor |
US5701508A (en) * | 1995-12-19 | 1997-12-23 | Intel Corporation | Executing different instructions that cause different data type operations to be performed on single logical register file |
US5835748A (en) * | 1995-12-19 | 1998-11-10 | Intel Corporation | Method for executing different sets of instructions that cause a processor to perform different data type operations on different physical registers files that logically appear to software as a single aliased register file |
US6151669A (en) * | 1998-10-10 | 2000-11-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Methods and apparatus for efficient control of floating-point status register |
-
1998
- 1998-10-10 US US09/169,482 patent/US6370639B1/en not_active Expired - Lifetime
-
1999
- 1999-09-30 JP JP27847299A patent/JP4219507B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6370639B1 (en) | 2002-04-09 |
JP2000122848A (ja) | 2000-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6151669A (en) | Methods and apparatus for efficient control of floating-point status register | |
JP4219507B2 (ja) | コンピュータ動作方法 | |
US6857061B1 (en) | Method and apparatus for obtaining a scalar value directly from a vector register | |
US9104474B2 (en) | Variable precision floating point multiply-add circuit | |
US8812821B2 (en) | Processor for performing operations with two wide operands | |
US5109495A (en) | Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor | |
US5812439A (en) | Technique of incorporating floating point information into processor instructions | |
US8407271B2 (en) | Method for floating point round to integer operation | |
US5619664A (en) | Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms | |
JPH0123806B2 (ja) | ||
JPH0749770A (ja) | 演算装置 | |
US6216222B1 (en) | Handling exceptions in a pipelined data processing apparatus | |
US6578059B1 (en) | Methods and apparatus for controlling exponent range in floating-point calculations | |
JP3578682B2 (ja) | 浮動小数点数処理記憶方法 | |
US20030033506A1 (en) | Locking source registers in a data processing apparatus | |
US10459688B1 (en) | Encoding special value in anchored-data element | |
JP2001243063A (ja) | Simd命令をエミュレートする方法及び装置 | |
JP2000137611A (ja) | 特殊ミリコ―ド命令によって条件の設定およびテストを行う方法 | |
US6681322B1 (en) | Method and apparatus for emulating an instruction set extension in a digital computer system | |
EP0840207A1 (en) | A microprocessor and method of operation thereof | |
US8005884B2 (en) | Relaxed remainder constraints with comparison rounding | |
US10963245B2 (en) | Anchored data element conversion | |
EP1089166A2 (en) | An integer instruction set architecture and implementation | |
US10936285B2 (en) | Overflow or underflow handling for anchored-data value | |
JPH08221257A (ja) | データ処理装置用除算器 |
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 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20081028 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081112 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111121 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |