JPH11327903A - Ieee準拠浮動小数点ユニット - Google Patents
Ieee準拠浮動小数点ユニットInfo
- Publication number
- JPH11327903A JPH11327903A JP11032530A JP3253099A JPH11327903A JP H11327903 A JPH11327903 A JP H11327903A JP 11032530 A JP11032530 A JP 11032530A JP 3253099 A JP3253099 A JP 3253099A JP H11327903 A JPH11327903 A JP H11327903A
- Authority
- JP
- Japan
- Prior art keywords
- floating point
- unit
- register
- exception
- floating
- 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.)
- Granted
Links
- 230000007246 mechanism Effects 0.000 claims abstract description 25
- 238000001514 detection method Methods 0.000 claims abstract description 14
- 230000009471 action Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 230000001629 suppression Effects 0.000 claims description 5
- 238000000034 method Methods 0.000 claims description 3
- 230000001276 controlling effect Effects 0.000 claims 3
- 238000011161 development Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
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)
- Advance Control (AREA)
Abstract
算を実行する際の変動を可能にするための3通りの別個
のメカニズムを提供する。 【解決手段】 FPUは、IEEE準拠の2進小数点命
令をハードウェアで実行した場合にミリコード・エミュ
レーションが必要になるような事象を動的に検出する特
殊条件検出器を有する。例外処理ユニットは、トラップ
・ハンドラを呼び出さずに例外条件の結果をトラップす
ることにより、ミリコード・エミュレーションを支援す
る。実行中に例外条件が検出された場合、マスク・ビッ
トがオンである場合、その結果はFPRに書き込まれ、
トラップ・ハンドラが呼び出される。そうではない場
合、デフォルト値が書き込まれ、フラグが設定され、プ
ログラムは実行を続ける。
Description
びコンピュータ・システムならびにその浮動小数点ユニ
ットに関し、特にIEEE754規格による浮動小数点
操作の実行に関し、その規格の変動がハードウェアまた
はハードウェアとミリコードとの組合せと共存できるよ
うにするものである。
るIEEE規格」(IEEE754規格)は、特に例外
条件でのトラップ結果の定義が非常に複雑なものになっ
ている。IEEE754規格は、単一の実施態様を示し
ているわけではない。たとえば、アンダーフローは、小
ささに関する2通りの定義と、不正確さに関する2通り
の定義に応じて、4通りに定義されている。マイクロプ
ロセッサの開発は、IEEE754規格をサポートする
アーキテクチャをまず完成させてから、そのアーキテク
チャをサポートするマイクロプロセッサに取りかからな
ければならないという必要性によって妨げられていた。
54規格準拠の2進浮動小数点計算を実行する際の変動
を可能にするための3通りの別個のメカニズムを提供す
る。最初の2通りのメカニズムは、IEEE準拠の2進
浮動小数点命令の実行が動的に変動できるようにするも
のである。第3のメカニズムは、特定の命令の実行を静
的に変動させるものである。
する能力により、多様なやり方でマイクロプロセッサの
開発時間を削減することができた。ハードウェアでの実
装エラーは検証プロセスの後期になるまで分からない可
能性があるので、このような実装エラーを検出し、ミリ
コード・エミュレーションを呼び出すためのメカニズム
は、適当な最終修正になり得る。この修正(フィック
ス)は、ハードウェアの作り直しを必要としない。ハー
ドウェアの不正確な実装という希な事象の際にハードウ
ェアがエミュレーションを呼び出すだけであれば、パフ
ォーマンスはそれほど低下しない。
アーキテクチャとマイクロプロセッサの並行開発を可能
にすることによって削減される。マイクロプロセッサが
ハードウェアを変更せずに機能を変更する能力を有して
いる場合、アーキテクチャの開発を、もはやマイクロプ
ロセッサの開発の前に行う必要はない。
と、図1からわかるように、好ましい実施例で提供する
浮動小数点ユニットFPUは、制御入力およびデータ入
力レジスタと、命令実行の結果をデータ出力を介して浮
動小数点ユニットから記憶ユニットに転送する制御およ
びデータ書込みステージ・レジスタとを有する。浮動小
数点ユニットは、通常、算術計算用の複数のパイプライ
ン・ステージと、1つの正規化ステージと、1つの丸め
ステージとを有し、そのパイプライン・ステージのそれ
ぞれは命令ストリームの処理中に個別の命令を含むこと
ができる。これらのステージは、データおよび制御入力
を受け取って浮動小数点計算を実行するデータフロー・
パイプライン10内で命令の処理が行われるように規則
正しく接続されている。結果のデータは制御とともにパ
イプラインから出力される。制御出力は、浮動小数点ア
レイ書込みイネーブルおよびアドレス、条件コード、プ
ログラム・ポインタを前進させる完了信号などのアーキ
テクチャ情報を更新するために使用される。
するために、IEEE準拠の2進浮動小数点命令をハー
ドウェアで実行した場合にミリコード・エミュレーショ
ンが必要になるような事象を動的に検出する第1のメカ
ニズムを提供した。このような事象は、浮動小数点ユニ
ットでの命令の実行中に発生する。ミリコードがエミュ
レートできる事象の完全なセットは、ハードウェアの設
計プロセスの初期にあらかじめ決定される。当業者にと
って既知のミリコードは、IBMのS/390CMOS
プロセッサ用のCISCプロセッサに実装されており、
ミリモード中にマシンが実行するS/390に適したコ
ード内の高特権サブルーチンである。本発明の場合、浮
動小数点メカニズムは、ミリコードまたは初期プログラ
ム・ロードで設定可能なシステム・レジスタによって制
御される。事象の1つが検出されると、対応するシステ
ム・レジスタ・マスクをチェックして、操作を完了すべ
きかまたは抑止すべきかを判定する。抑止の場合、浮動
小数点は、任意の設計済み機構(ユーザがアクセスでき
る機構)に対するすべての更新を抑止し、擬似例外コー
ドを生成する。次に、この擬似例外コードは、ハードウ
ェア浮動小数点制御ワード(FPC)というハードウェ
ア・レジスタにそれを書き込むことにより、トラップ・
ハンドラに渡される。IEEE規格はアーキテクチャに
よっては例外ハンドラと呼ばれるトラップ・ハンドラを
定義しているが、これらの用語は本明細書では同等であ
ることに留意されたい。トラップ・ハンドラは、トラッ
プ・ハンドラまたは例外ハンドラと呼ばれるミリコード
・ルーチンを含むシステム・メモリ領域への分岐を引き
起こす割込み実行信号によって呼び出される。トラップ
・ハンドラは、ハードウェアFPCを読み取り、擬似例
外コードを解釈し、複数の個別命令を使用して浮動小数
点命令をエミュレートするミリコード・ルーチンを呼び
出す。
6は、抑止信号の制御下でFPUデータフロー・パイプ
ライン10の制御出力をゲートするために使用する。抑
止信号は、例外ハンドラ・ユニット20から供給され
る。抑止信号がアクティブである場合、FPUデータフ
ロー・パイプライン10は、設計済み機構を更新するこ
とができない。
14で実行される。このユニットは、無効操作、ゼロに
よる除算、指数オーバフロー、指数アンダーフロー、不
正確な結果など、アーキテクチャによって識別される5
つの例外条件の検出を担当する。また、このユニット
は、他の特殊事前定義事象も検出する。第1の事象は、
1つまたは複数のNaN(非数値)オペランドを有する
3オペランド命令が実行される場合である。第2の事象
は、非正規化入力オペランドを備えた2進拡張乗算、除
算、または平方根命令が実行される場合である。第3の
事象は、結果的に指数オーバフローが発生する2進浮動
小数点命令が実行される場合である。第4の事象は、結
果的に指数アンダーフローが発生する2進浮動小数点命
令が実行される場合である。これらの事象は、ハードウ
ェアで実現するには複雑であるか、エラーが発生しやす
いか、またはアーキテクチャ内で不安定な領域になるも
のであるとあらかじめ決定されている。例外条件および
特殊事象の発生は、例外ハンドラ・ユニット20に通知
される。
は、特殊条件検出ユニット14によって特殊事象が検出
されたときに行われるアクションを制御するディスエー
ブル・ビットを含む。ディスエーブル・マスク・レジス
タ18は、上記の4つの特殊事象に対して1対1で対応
する4つのビットを含む。このレジスタは、システム・
ミリコードによるかまたはレジスタ走査初期設定により
更新することができる。
第2のメカニズムは、トラップ・ハンドラを呼び出さず
に例外条件の結果をトラップすることにより、ミリコー
ド・エミュレーションを支援するために使用する。実行
中に例外条件が検出された場合、IEEE754規格で
はマスク・ビットの制御下で2通りのアクションを行う
必要がある。マスク・ビットがオンである場合、その結
果はFPRに書き込まれ、トラップ・ハンドラが呼び出
される。そうではない場合、デフォルト値が書き込ま
れ、フラグが設定され、プログラムは実行を続ける。こ
のメカニズムにより、IEEE754規格の変形が可能
になる。例外条件が発生した場合、トラップ結果は浮動
小数点レジスタ・アレイに書き込まれ、データ例外コー
ドは設計済みではない、すなわちユーザがアクセスでき
ないデータ例外コード・レジスタに書き込まれ、プログ
ラムは次の逐次命令に前進する。また、このメカニズム
は、ミリコードで設定可能な制御レジスタによって制御
される。
数点制御ワード)22は、設計済みFPC24のハード
ウェア・バージョンであるレジスタである。これは、例
外条件の場合に行われるアクションを制御するマスク・
ビットを含む。無効操作、ゼロによる除算、指数オーバ
フロー、指数アンダーフロー、不正確な結果という5つ
の例外条件をそれぞれ制御する5つのマスク・ビットF
PC(8〜12)が存在する。また、アクティブである
場合、トラップ・ハンドラを呼び出さずに例外条件がト
ラップされるような追加のマスク・ビットFPC(7)
が存在する。最終的な結果はトラップ結果を浮動小数点
レジスタ・アレイに書き込むことであり、データ例外コ
ード(DXC)はハードウェアFPC22内に置かれ、
プログラム・ポインタは前進する。ハードウェアFPC
22は設計済みFPC24とは異なることに留意された
い。ハードウェアFPC22は、追加の設計済みではな
い例外条件が処理される方法を制御する追加ビットを含
む。ハードウェアFPC22は、アーキテクチャで識別
されないビットの組合せを有する。ハードウェアFPC
22は、ハードウェアおよびシステム・ミリコードから
のみアクセス可能であり、ユーザからはアクセスできな
い。
点制御ワードである。これは、ユーザからアクセス可能
であり、システム・ミリコードの制御下で更新される。
ェアFPC22およびディスエーブル・マスク・レジス
タ18に含まれるマスク・ビットの制御下で例外条件お
よび特殊事象を操作する。特殊事象が発生し、対応する
ディスエーブル・マスク・レジスタ・ビットがアクティ
ブである場合、例外ハンドラ・ユニット20はデータ例
外コード(DXC)を生成し、トラップ・ハンドラが呼
び出される。ディスエーブル・マスク・レジスタ18に
対応する事象の例外コードは、設計済みではなく、実デ
ータ例外を引き起こさないので、擬似例外であると見な
される。トラップ・ハンドラは、擬似例外コードを認識
し、ミリコード・エミュレーション・ルーチンに制御を
移す。5つの例外条件は、ハードウェアFPC22のレ
ジスタ・マスク・ビットFPC(8:12)によってそ
れぞれマスクされる。マスクされた例外条件が発生する
と、ハードウェアFPC22内のDXCコードが設定さ
れる。FPC(7)がアクティブである場合、抑止信号
が活動化され、割込み実行信号は活動化されない。ハー
ドウェアFPC(7)がアクティブではない場合、抑止
信号はアクティブではなく、割込み実行信号はアクティ
ブになる。
の操作に関する乗算/減算イネーブル30の制御を有す
る。アクティブである場合、乗算後減算命令はOp3<
=Op3−Op1・Op2を実行する。アクティブでは
ない場合、乗算後減算命令はOp3<=Op1・Op2
−Op3を実行する。これにより、最後のメカニズムの
実現が可能になる。このメカニズムは、走査シーケンス
中にのみ設定可能な制御レジスタの制御下で乗算後減算
命令のハードウェア実行を静的に変更する。乗算後減算
命令の機能はOp3<=Op3−Op1・Op2または
Op3<=Op1・Op2−Op3のいずれかにするこ
とができ、Op1はオペランド1を表し、Op2はオペ
ランド2を表し、Op3はオペランド3を表す。この機
能の第1の形式は、IBMのS/390ベクトル・アー
キテクチャに実装されており、第2の形式はPower
PCアーキテクチャに実装される。(IBM、S/39
0、PowerPCアーキテクチャはすべて本出願人の
商標である。)IEEE754規格は乗算/減算を定義
していないが、これはその規格の単純な拡張である。本
発明のメカニズムは、静的再構成により両方の定義を満
足する。
数値)入力を有する3オペランド命令を処理するケース
である。乗算後減算命令のハードウェア実施態様では、
複数の入力オペランドがNaNである場合、データ出力
は入力オペランドの1つに等しくなり、優先順位は通知
NaNである方に与えられ、次にオペランド1、さらに
オペランド2に与えられると想定している。ハードウェ
アが作成された後でアーキテクチャが変更された場合、
ディスエーブル・マスク・レジスタ18の最上位ビット
をセットすることにより、ハードウェアを指定変更する
ことは容易なことである。特殊条件検出ユニット14
は、NaN入力および乗算後加算という3オペランド命
令を検出すると、この特定の事象が発生したことを例外
ハンドラ・ユニット20に通知する。次に例外ハンドラ
・ユニット20は、システム・ミリコードまたは初期プ
ログラム・ロードによって1という値に設定されたディ
スエーブル・マスク・ビット・レジスタ18のビット0
を調査する。このビットが0という値を有する場合、ハ
ードウェアで通常実行が行われるはずであるが、このビ
ットは1になっているので、抑止信号が抑止ユニット1
6に送られ、16進の83というデータ例外コードがハ
ードウェアFPC22に書き込まれ、割込み実行信号が
命令ユニットに送られて、例外ハンドラ・ルーチンに分
岐する。このルーチンは、データ例外コードを調査し、
ミリコード・ルーチンが一連の単純な命令によって乗算
後加算命令をエミュレートするルーチンに分岐しなけれ
ばならないことをこの固有のDXCコードが示している
と判定する。ルーチンの終わりに、乗算後加算命令を含
む元の命令ストリームに制御が戻される。このようにし
て、一般的な入力の場合にハードウェア・パフォーマン
スが維持されるが、NaN入力の場合、アーキテクチャ
定義が変更されるかまたはハードウェアにバグが存在す
る場合、ミリコード・ルーチンを呼び出すことができ
る。
の除算という複雑命令の実現にある。この命令は、2つ
の浮動小数点数を除算し、整数の商とその剰余を報告す
る。命令全体はハードウェアで実現するには複雑すぎる
ので、より単純な命令を使用するミリコード・ルーチン
が作成された。商が決定されると、剰余操作は乗算後減
算命令にすぎない。しかし、ルーチンからのトラップを
引き起こさないように、制御されたやり方で乗算後減算
命令を実行する必要がある。剰余がアンダーフローを起
こす可能性があっても、剰余がアンダーフローを起こし
たときにトラップしないよう、整数への除算の操作全体
を定義することができる。メカニズム2は、任意の浮動
小数点命令を実行し、トラップを取らずにトラップ結果
を生成するが、トラップが取られなかったことをハード
ウェアFPC22に注記するための手段を提供する。ミ
リコードはこのルーチンに入る際に、トラップを呼び出
さないように、ハードウェアFPC22のマスク・ビッ
ト7を1に設定する。アンダーフロー条件を有する乗算
後減算操作が実行された場合、これは、特殊条件検出ユ
ニット14によって検出され、例外ハンドラ・ユニット
20に通知される。次にハードウェアFPC22のマス
ク・ビット7を調査して、必要なアクションを決定する
ことになる。このビットが0であったなら、割込み実行
信号がアクティブになって例外ハンドラを呼び出し、ア
ンダーフローに対応するデータ例外コード(16進の1
0)がハードウェアFPC22に書き込まれ、例外ハン
ドラ中にデータ例外コードが設計済みFPC24に書き
込まれる。しかし、マスク・ビット7は1なので、デー
タ例外コードはハードウェアFPC22には書き込まれ
るが、設計済みFPC24には決して書き込まれず、割
込み実行信号は非アクティブになる。このため、例外ハ
ンドラ・ルーチンではなく、ミリコード・ルーチン内の
次の命令を実行することができる。
の事項を開示する。
する浮動小数点ユニット・データフロー・パイプライン
を含み、それぞれのパイプライン・ステージが前記デー
タフロー・パイプライン内の命令ストリームの処理中に
個々の命令を含むことができ、前記データフロー・パイ
プラインが浮動小数点計算を実行するためのデータおよ
び命令を受け取るためのデータ入力および制御入力なら
びに出力を有する、コンピュータ・システム用の浮動小
数点ユニット(FPU)であって、結果のデータは、浮
動小数点アレイ書込みイネーブルおよびアドレス、条件
コード、ならびに前記浮動小数点ユニット用のプログラ
ム・ポインタを前進させる完了信号を含むアーキテクチ
ャ情報を更新するために使用される制御出力とともに前
記パイプラインから出力され、前記浮動小数点ユニット
内での前記命令の実行中に発生する事象のうち、IEE
E準拠の2進浮動小数点命令のハードウェア実行がミリ
コード・エミュレーションを必要とするような事象を動
的に検出するための特殊条件検出ユニットをさらに含
み、前記特殊条件検出ユニットはミリコードで設定可能
かまたは初期プログラム・ロードで設定可能なシステム
・レジスタによって制御され、事象の1つが検出される
と、対応するシステム・レジスタ・マスクが例外ハンド
ラ・ユニットによってチェックされ、操作を完了すべき
かまたは抑止すべきかを判定する、浮動小数点ユニッ
ト。 (2)操作を抑止すべき場合、前記例外ハンドラ・ユニ
ットによって供給される抑止信号の制御下で、前記デー
タフロー・パイプラインの前記制御出力をゲートする一
方、設計済み機構に対するすべての更新を抑止し、擬似
例外コードを生成する抑止ユニットをさらに含む、上記
(1)に記載の浮動小数点ユニット。 (3)前記擬似例外コードが浮動小数点トラップ・ハン
ドラに渡され、該ハンドラが前記擬似例外コードを解釈
し、複数の個別命令を使用して前記命令をエミュレート
するミリコード・ルーチンを呼び出す、上記(2)に記
載の浮動小数点ユニット。 (4)前記抑止信号がアクティブである場合、前記デー
タフロー・パイプラインはいかなる設計済み機構も更新
することができない、上記(3)に記載の浮動小数点ユ
ニット。 (5)前記特殊条件検出ユニットは、アーキテクチャに
よって識別される例外条件の他に、1つまたは複数のN
aN(非数値)オペランドを有する3オペランド命令が
実行される第1の特殊事象と、非正規化入力オペランド
を備えた2進拡張乗算、除算、または平方根命令が実行
される第2の特殊事象と、結果的に指数オーバフローが
発生する2進浮動小数点命令が実行される第3の特殊事
象と、結果的に指数アンダーフローが発生する2進浮動
小数点命令が実行される第4の特殊事象とを含む他の特
殊事前定義事象も検出する、上記(3)に記載の浮動小
数点ユニット。 (6)前記特殊事象の発生が前記例外ハンドラ・ユニッ
トに通知される、上記(5)に記載の浮動小数点ユニッ
ト(FPU)。 (7)ディスエーブル・マスク・レジスタが、前記特殊
条件検出ユニットによって特殊事象が検出されたときに
行われるアクションを制御するディスエーブル・ビット
を含み、前記ディスエーブル・マスク・レジスタが、前
記事前定義事象に対して1対1で対応する4つのビット
を含み、前記ディスエーブル・マスク・レジスタが、シ
ステム・ミリコードによるかまたはレジスタ走査初期設
定により更新される、上記(5)に記載の浮動小数点ユ
ニット。 (8)例外条件の場合に行われるアクションを制御する
制御マスク・ビットを含むハードウェア浮動小数点制御
ワード・レジスタをさらに含む、上記(5)に記載の浮
動小数点ユニット。 (9)無効操作、ゼロによる除算、指数オーバフロー、
指数アンダーフロー、不正確な結果という5つの例外条
件をそれぞれ制御する5つの制御マスク・ビットが存在
する、上記(8)に記載の浮動小数点ユニット。 (10)アクティブである場合、浮動小数点トラップ・
ハンドラを呼び出さずに例外条件がトラップされるよう
な追加の制御マスク・ビットが存在する、上記(9)に
記載の浮動小数点ユニット。 (11)トラップ結果を浮動小数点レジスタ・アレイに
書き込むために、データ例外コードが前記ハードウェア
浮動小数点制御ワード・レジスタ内に置かれ、前記浮動
小数点プログラム・ポインタが前進する、上記(10)
に記載の浮動小数点ユニット。 (12)前記ハードウェア浮動小数点制御ワード・レジ
スタは、設計済みではない追加の例外条件が処理される
方法を制御する追加ビットを含み、前記浮動小数点アー
キテクチャで識別されないビットの組合せを有する点で
設計済み浮動小数点制御ワードとは異なり、前記ハード
ウェア浮動小数点制御ワード・レジスタは、ハードウェ
アおよびシステム・ミリコードからのみアクセス可能で
あって、ユーザからはアクセスできない、上記(5)に
記載の浮動小数点ユニット。 (13)前記設計済み浮動小数点制御ワードはユーザか
らアクセス可能であり、前記システム・ミリコードの制
御下で更新される、上記(12)に記載の浮動小数点ユ
ニット。 (14)前記例外ハンドラ・ユニットは、前記ハードウ
ェア浮動小数点制御ワード・レジスタおよび前記ディス
エーブル・マスク・レジスタに含まれる前記マスク・ビ
ットの制御下で前記例外条件および特殊事象を操作し、
もし特殊事象が発生して、対応するディスエーブル・マ
スク・レジスタ・ビットがアクティブである場合、前記
例外ハンドラ・ユニットはデータ例外コードを生成し、
前記トラップ・ハンドラが呼び出される、上記(13)
に記載の浮動小数点ユニット。 (15)前記ディスエーブル・マスク・レジスタに対応
する事象の例外コードが、擬似例外であると見なされ、
設計済みではなく、実データ例外を引き起こさない、上
記(14)に記載の浮動小数点ユニット。 (16)前記トラップ・ハンドラは擬似例外コードを認
識したとき、ミリコード・エミュレーション・ルーチン
に制御を移す、上記(14)に記載の浮動小数点ユニッ
ト。 (17)例外条件が前記ハードウェア浮動小数点制御ワ
ード・レジスタのレジスタ・マスク・ビットによってマ
スクされ、マスクされた例外条件が発生すると、前記ハ
ードウェア浮動小数点制御ワード・レジスタ内のデータ
例外コードが設定され、特定の抑止マスク・ビットがア
クティブである場合、前記抑止信号が活動化され、割込
み実行信号は活動化されないが、前記特定の抑止ビット
がアクティブではない場合、前記抑止信号はアクティブ
ではなく、前記割込み実行信号はアクティブになる、上
記(14)に記載の浮動小数点ユニット。 (18)乗算後減算命令の操作のために前記データフロ
ー・パイプラインに走査データを入力するように結合さ
れた乗算/減算イネーブル制御レジスタが設けられ、ア
クティブである場合、前記乗算後減算命令がOp3<=
Op3−Op1・Op2を実行するが(Op1はオペラ
ンド1を表し、Op2はオペランド2を表し、Op3は
オペランド3を表す)、アクティブではない場合、前記
乗算後減算命令がOp3<=Op1・Op2−Op3を
実行する、上記(5)に記載の浮動小数点ユニット。 (19)走査シーケンス中にのみ設定可能な前記乗算/
減算イネーブル制御レジスタの制御下で前記乗算後減算
命令の実行が静的に変更される、上記(18)に記載の
浮動小数点ユニット。
に浮動小数点ユニット・データフロー・パイプラインと
例外ハンドラ・ユニットとの対話を示す図である。
Claims (19)
- 【請求項1】複数のパイプライン・ステージを有する浮
動小数点ユニット・データフロー・パイプラインを含
み、それぞれのパイプライン・ステージが前記データフ
ロー・パイプライン内の命令ストリームの処理中に個々
の命令を含むことができ、前記データフロー・パイプラ
インが浮動小数点計算を実行するためのデータおよび命
令を受け取るためのデータ入力および制御入力ならびに
出力を有する、コンピュータ・システム用の浮動小数点
ユニット(FPU)であって、結果のデータは、浮動小
数点アレイ書込みイネーブルおよびアドレス、条件コー
ド、ならびに前記浮動小数点ユニット用のプログラム・
ポインタを前進させる完了信号を含むアーキテクチャ情
報を更新するために使用される制御出力とともに前記パ
イプラインから出力され、前記浮動小数点ユニット内で
の前記命令の実行中に発生する事象のうち、IEEE準
拠の2進浮動小数点命令のハードウェア実行がミリコー
ド・エミュレーションを必要とするような事象を動的に
検出するための特殊条件検出ユニットをさらに含み、前
記特殊条件検出ユニットはミリコードで設定可能かまた
は初期プログラム・ロードで設定可能なシステム・レジ
スタによって制御され、事象の1つが検出されると、対
応するシステム・レジスタ・マスクが例外ハンドラ・ユ
ニットによってチェックされ、操作を完了すべきかまた
は抑止すべきかを判定する、浮動小数点ユニット。 - 【請求項2】操作を抑止すべき場合、前記例外ハンドラ
・ユニットによって供給される抑止信号の制御下で、前
記データフロー・パイプラインの前記制御出力をゲート
する一方、設計済み機構に対するすべての更新を抑止
し、擬似例外コードを生成する抑止ユニットをさらに含
む、請求項1に記載の浮動小数点ユニット。 - 【請求項3】前記擬似例外コードが浮動小数点トラップ
・ハンドラに渡され、該ハンドラが前記擬似例外コード
を解釈し、複数の個別命令を使用して前記命令をエミュ
レートするミリコード・ルーチンを呼び出す、請求項2
に記載の浮動小数点ユニット。 - 【請求項4】前記抑止信号がアクティブである場合、前
記データフロー・パイプラインはいかなる設計済み機構
も更新することができない、請求項3に記載の浮動小数
点ユニット。 - 【請求項5】前記特殊条件検出ユニットは、アーキテク
チャによって識別される例外条件の他に、1つまたは複
数のNaN(非数値)オペランドを有する3オペランド
命令が実行される第1の特殊事象と、非正規化入力オペ
ランドを備えた2進拡張乗算、除算、または平方根命令
が実行される第2の特殊事象と、結果的に指数オーバフ
ローが発生する2進浮動小数点命令が実行される第3の
特殊事象と、結果的に指数アンダーフローが発生する2
進浮動小数点命令が実行される第4の特殊事象とを含む
他の特殊事前定義事象も検出する、請求項3に記載の浮
動小数点ユニット。 - 【請求項6】前記特殊事象の発生が前記例外ハンドラ・
ユニットに通知される、請求項5に記載の浮動小数点ユ
ニット(FPU)。 - 【請求項7】ディスエーブル・マスク・レジスタが、前
記特殊条件検出ユニットによって特殊事象が検出された
ときに行われるアクションを制御するディスエーブル・
ビットを含み、前記ディスエーブル・マスク・レジスタ
が、前記事前定義事象に対して1対1で対応する4つの
ビットを含み、前記ディスエーブル・マスク・レジスタ
が、システム・ミリコードによるかまたはレジスタ走査
初期設定により更新される、請求項5に記載の浮動小数
点ユニット。 - 【請求項8】例外条件の場合に行われるアクションを制
御する制御マスク・ビットを含むハードウェア浮動小数
点制御ワード・レジスタをさらに含む、請求項5に記載
の浮動小数点ユニット。 - 【請求項9】無効操作、ゼロによる除算、指数オーバフ
ロー、指数アンダーフロー、不正確な結果という5つの
例外条件をそれぞれ制御する5つの制御マスク・ビット
が存在する、請求項8に記載の浮動小数点ユニット。 - 【請求項10】アクティブである場合、浮動小数点トラ
ップ・ハンドラを呼び出さずに例外条件がトラップされ
るような追加の制御マスク・ビットが存在する、請求項
9に記載の浮動小数点ユニット。 - 【請求項11】トラップ結果を浮動小数点レジスタ・ア
レイに書き込むために、データ例外コードが前記ハード
ウェア浮動小数点制御ワード・レジスタ内に置かれ、前
記浮動小数点プログラム・ポインタが前進する、請求項
10に記載の浮動小数点ユニット。 - 【請求項12】前記ハードウェア浮動小数点制御ワード
・レジスタは、設計済みではない追加の例外条件が処理
される方法を制御する追加ビットを含み、前記浮動小数
点アーキテクチャで識別されないビットの組合せを有す
る点で設計済み浮動小数点制御ワードとは異なり、前記
ハードウェア浮動小数点制御ワード・レジスタは、ハー
ドウェアおよびシステム・ミリコードからのみアクセス
可能であって、ユーザからはアクセスできない、請求項
5に記載の浮動小数点ユニット。 - 【請求項13】前記設計済み浮動小数点制御ワードはユ
ーザからアクセス可能であり、前記システム・ミリコー
ドの制御下で更新される、請求項12に記載の浮動小数
点ユニット。 - 【請求項14】前記例外ハンドラ・ユニットは、前記ハ
ードウェア浮動小数点制御ワード・レジスタおよび前記
ディスエーブル・マスク・レジスタに含まれる前記マス
ク・ビットの制御下で前記例外条件および特殊事象を操
作し、もし特殊事象が発生して、対応するディスエーブ
ル・マスク・レジスタ・ビットがアクティブである場
合、前記例外ハンドラ・ユニットはデータ例外コードを
生成し、前記トラップ・ハンドラが呼び出される、請求
項13に記載の浮動小数点ユニット。 - 【請求項15】前記ディスエーブル・マスク・レジスタ
に対応する事象の例外コードが、擬似例外であると見な
され、設計済みではなく、実データ例外を引き起こさな
い、請求項14に記載の浮動小数点ユニット。 - 【請求項16】前記トラップ・ハンドラは擬似例外コー
ドを認識したとき、ミリコード・エミュレーション・ル
ーチンに制御を移す、請求項14に記載の浮動小数点ユ
ニット。 - 【請求項17】例外条件が前記ハードウェア浮動小数点
制御ワード・レジスタのレジスタ・マスク・ビットによ
ってマスクされ、マスクされた例外条件が発生すると、
前記ハードウェア浮動小数点制御ワード・レジスタ内の
データ例外コードが設定され、特定の抑止マスク・ビッ
トがアクティブである場合、前記抑止信号が活動化さ
れ、割込み実行信号は活動化されないが、前記特定の抑
止ビットがアクティブではない場合、前記抑止信号はア
クティブではなく、前記割込み実行信号はアクティブに
なる、請求項14に記載の浮動小数点ユニット。 - 【請求項18】乗算後減算命令の操作のために前記デー
タフロー・パイプラインに走査データを入力するように
結合された乗算/減算イネーブル制御レジスタが設けら
れ、アクティブである場合、前記乗算後減算命令がOp
3<=Op3−Op1・Op2を実行するが(Op1は
オペランド1を表し、Op2はオペランド2を表し、O
p3はオペランド3を表す)、アクティブではない場
合、前記乗算後減算命令がOp3<=Op1・Op2−
Op3を実行する、請求項5に記載の浮動小数点ユニッ
ト。 - 【請求項19】走査シーケンス中にのみ設定可能な前記
乗算/減算イネーブル制御レジスタの制御下で前記乗算
後減算命令の実行が静的に変更される、請求項18に記
載の浮動小数点ユニット。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/026,328 US6044454A (en) | 1998-02-19 | 1998-02-19 | IEEE compliant floating point unit |
US09/026328 | 1998-02-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11327903A true JPH11327903A (ja) | 1999-11-30 |
JP3014381B2 JP3014381B2 (ja) | 2000-02-28 |
Family
ID=21831203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11032530A Expired - Fee Related JP3014381B2 (ja) | 1998-02-19 | 1999-02-10 | Ieee準拠浮動小数点ユニット |
Country Status (3)
Country | Link |
---|---|
US (1) | US6044454A (ja) |
JP (1) | JP3014381B2 (ja) |
KR (1) | KR100317768B1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009032263A (ja) * | 2003-07-07 | 2009-02-12 | Renesas Technology Corp | 情報処理装置 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6247117B1 (en) * | 1999-03-08 | 2001-06-12 | Advanced Micro Devices, Inc. | Apparatus and method for using checking instructions in a floating-point execution unit |
US6408379B1 (en) * | 1999-06-10 | 2002-06-18 | Advanced Micro Devices, Inc. | Apparatus and method for executing floating-point store instructions in a microprocessor |
US6374345B1 (en) * | 1999-07-22 | 2002-04-16 | Advanced Micro Devices, Inc. | Apparatus and method for handling tiny numbers using a super sticky bit in a microprocessor |
US6571265B1 (en) * | 1999-10-29 | 2003-05-27 | Intel Corporation | Mechanism to detect IEEE underflow exceptions on speculative floating-point operations |
US6658443B1 (en) | 1999-11-03 | 2003-12-02 | Sun Microsystems, Inc. | Method and apparatus for representing arithmetic intervals within a computer system |
US7353368B2 (en) * | 2000-02-15 | 2008-04-01 | Intel Corporation | Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support |
US6658444B1 (en) * | 2000-11-09 | 2003-12-02 | Sun Microsystems, Inc. | Method and apparatus for performing a mask-driven interval division operation |
US6829627B2 (en) | 2001-01-18 | 2004-12-07 | International Business Machines Corporation | Floating point unit for multiple data architectures |
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 |
US9223751B2 (en) * | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
US7765389B2 (en) * | 2007-04-25 | 2010-07-27 | International Business Machines Corporation | Management of exceptions and hardware interruptions by an exception simulator |
US10387151B2 (en) | 2007-12-31 | 2019-08-20 | Intel Corporation | Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks |
US7984273B2 (en) | 2007-12-31 | 2011-07-19 | Intel Corporation | System and method for using a mask register to track progress of gathering elements from memory |
US8447962B2 (en) * | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
US8443227B2 (en) * | 2008-02-15 | 2013-05-14 | International Business Machines Corporation | Processor and method for workaround trigger activated exceptions |
US8352241B2 (en) * | 2009-02-26 | 2013-01-08 | Microsoft Corporation | Emulating legacy hardware using IEEE 754 compliant hardware |
US10175990B2 (en) | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
US20120059866A1 (en) * | 2010-09-03 | 2012-03-08 | Advanced Micro Devices, Inc. | Method and apparatus for performing floating-point division |
US8505089B2 (en) * | 2010-12-27 | 2013-08-06 | Kyocera Mita Corporation | Image forming apparatus and control method for image forming apparatus |
US20120173923A1 (en) * | 2010-12-31 | 2012-07-05 | International Business Machines Corporation | Accelerating the performance of mathematical functions in high performance computer systems |
US8972697B2 (en) | 2012-06-02 | 2015-03-03 | Intel Corporation | Gather using index array and finite state machine |
WO2013180738A1 (en) | 2012-06-02 | 2013-12-05 | Intel Corporation | Scatter using index array and finite state machine |
US11182127B2 (en) | 2019-03-25 | 2021-11-23 | International Business Machines Corporation | Binary floating-point multiply and scale operation for compute-intensive numerical applications and apparatuses |
CN111290790B (zh) * | 2020-01-22 | 2023-03-24 | 安徽大学 | 一种定点转浮点的转换装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2200483B (en) * | 1987-01-22 | 1991-10-16 | Nat Semiconductor Corp | Memory referencing in a high performance microprocessor |
US4879676A (en) * | 1988-02-29 | 1989-11-07 | Mips Computer Systems, Inc. | Method and apparatus for precise floating point exceptions |
JPH0683636A (ja) * | 1992-09-02 | 1994-03-25 | Fujitsu Ltd | 浮動小数点演算装置 |
JPH0793153A (ja) * | 1993-09-27 | 1995-04-07 | Toshiba Corp | 情報処理装置 |
JPH07210384A (ja) * | 1994-01-24 | 1995-08-11 | Fuji Xerox Co Ltd | 浮動小数点演算装置 |
US5799179A (en) * | 1995-01-24 | 1998-08-25 | International Business Machines Corporation | Handling of exceptions in speculative instructions |
JP3495173B2 (ja) * | 1996-02-14 | 2004-02-09 | 富士通株式会社 | 演算処理方法および演算処理装置 |
-
1998
- 1998-02-19 US US09/026,328 patent/US6044454A/en not_active Expired - Lifetime
-
1999
- 1999-01-30 KR KR1019990003166A patent/KR100317768B1/ko not_active IP Right Cessation
- 1999-02-10 JP JP11032530A patent/JP3014381B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009032263A (ja) * | 2003-07-07 | 2009-02-12 | Renesas Technology Corp | 情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
KR100317768B1 (ko) | 2001-12-22 |
US6044454A (en) | 2000-03-28 |
KR19990072338A (ko) | 1999-09-27 |
JP3014381B2 (ja) | 2000-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3014381B2 (ja) | Ieee準拠浮動小数点ユニット | |
US5675777A (en) | Architecture for minimal instruction set computing system | |
EP0331372B1 (en) | Method of and apparatus using floating point execption signals for controlling several processors | |
US5596733A (en) | System for exception recovery using a conditional substitution instruction which inserts a replacement result in the destination of the excepting instruction | |
US6151669A (en) | Methods and apparatus for efficient control of floating-point status register | |
US5500943A (en) | Data processor with rename buffer and FIFO buffer for in-order instruction completion | |
US4713750A (en) | Microprocessor with compact mapped programmable logic array | |
WO2010004243A2 (en) | Interrupt processing | |
JPH0769783B2 (ja) | 例外処理方式 | |
JP3369204B2 (ja) | プログラマブルコントローラ | |
US5410660A (en) | System and method for executing branch on bit set/clear instructions using microprogramming flow | |
US6212539B1 (en) | Methods and apparatus for handling and storing bi-endian words in a floating-point processor | |
JP4465081B2 (ja) | Vliwプロセッサにおける効率的なサブ命令エミュレーション | |
GB2461851A (en) | Processor, which stores interrupt enable flags in a location used for other functions | |
US5446909A (en) | Binary multiplication implemented by existing hardware with minor modifications to sequentially designate bits of the operand | |
JPH06202868A (ja) | マルチスカラー・プロセッサ・システムにおける高速浮動小数点例外起動式操作の方法およびシステム | |
JP2557629B2 (ja) | 割込方式 | |
US20230297824A1 (en) | Programmable non-linear activation engine for neural network acceleration | |
KR100240108B1 (ko) | 디지탈신호처리기의 조건부 분기 명령 수행방법 | |
JPH0378832A (ja) | デ―タ処理装置 | |
JPS63247834A (ja) | 浮動小数点関数擬似命令処理方法 | |
JPH0651955A (ja) | 浮動小数点演算機能を持つ情報処理装置 | |
JPH03226830A (ja) | 情報処理装置 | |
Heudin et al. | KIM200: a tagged-RISC architecture for gallium arsenide implementation | |
JPH03116324A (ja) | 浮動小数点演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071217 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081217 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091217 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091217 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101217 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101217 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111217 Year of fee payment: 12 |
|
LAPS | Cancellation because of no payment of annual fees |