JP3121565B2 - 浮動小数点実行ユニットにおける状態フラグ及び条件コードの保持装置及び方法 - Google Patents

浮動小数点実行ユニットにおける状態フラグ及び条件コードの保持装置及び方法

Info

Publication number
JP3121565B2
JP3121565B2 JP09224550A JP22455097A JP3121565B2 JP 3121565 B2 JP3121565 B2 JP 3121565B2 JP 09224550 A JP09224550 A JP 09224550A JP 22455097 A JP22455097 A JP 22455097A JP 3121565 B2 JP3121565 B2 JP 3121565B2
Authority
JP
Japan
Prior art keywords
fpscr
instruction
rename
gid
register
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
Application number
JP09224550A
Other languages
English (en)
Other versions
JPH10105400A (ja
Inventor
クリストファー・エイチ・オルソン
ジェフリー・エス・ブルークス
マーチン・エス・シュムークラー
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10105400A publication Critical patent/JPH10105400A/ja
Application granted granted Critical
Publication of JP3121565B2 publication Critical patent/JP3121565B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、スーパースカラ・
マイクロプロセッサのアーキテクチャに関する。特に、
本発明は、リネーム技術を用いた状態フラグ及び条件コ
ードの保持に関し、それにより、推論及び順序外実行を
可能とする浮動小数点ユニットのチップ領域及び必要電
力を低減するものである。
【0002】
【従来の技術】ANSI/IEEE標準754-1985「IEEE Standard
for binary floating point arithmetic」(IEEE標準)
に規定された浮動小数点システムを実施するには、例外
の各タイプについて状態フラグを設ける必要がある。状
態フラグがセットされている場合、特定の例外(オーバ
フロー等)が発生したことを示す。さらにこのIEEE標準
は、2つの浮動小数点数の間の比較結果が、その関係を
識別する条件コードとして配信されるか、又は、所望の
特定の比較をネーム付けする述語論理に対する真偽応答
として配信されることを規定する。浮動小数点ユニット
が、順序通りの非推論的命令実行を行う場合、状態フラ
グ及び比較結果(以下、「状態ビット」と称する)の処
理は簡単である。実行する最後の命令が、適宜の状態ビ
ットをセットするだけである。しかしながら、性能的理
由により浮動小数点ユニットが順序外及び/又は推論的
命令実行を行う場合は、問題がある。ユーザに対して、
あたかも全ての命令が直列的に実行されていると見える
ように、ユーザに見える状態ビットがプログラム順に維
持されなければならない。
【0003】現在、この問題を解決するための2つの方
式がある。 1.浮動小数点汎用リネーム・レジスタにオペレーティ
ング結果と共に状態ビットを記憶する。 2.状態ビット・リネーム・レジスタの複数のエントリ
を含む別個のレジスタ・ファイルに状態ビットを記憶す
る。制御論理を単純にする理由から、レジスタ・ファイ
ルが、浮動小数点リネーム・レジスタと同じ数のエント
リを含むことが多い。
【0004】現在の2つの方式の1つを用いると、浮動
小数点オペレーティング結果が発生して浮動小数点リネ
ーム・レジスタに記憶されるとき、対応する状態ビット
は、その浮動小数点リネーム・レジスタにオペレーショ
ン結果と共に記憶されるか、又は、別個のレジスタ・フ
ァイルに記憶される。オペレーションの結果が構造化(a
rchtected)浮動小数点レジスタ(FPR)へ託されると
き、対応する状態ビットもまた、その構造化状態レジス
タへ託される。
【0005】現在の2つの方式の問題点は、構造化レジ
スタセットに託されていなかった各浮動小数点オペレー
ション結果の状態ビットについての個々の記憶場所を割
り当てることに起因する領域と電力消費の増大である。
スーパースカラーにおいて実施される傾向から、浮動小
数点実行ユニットをさらに追加することとなり、更なる
浮動小数点リネーム・レジスタが必要となる。そして、
しばしば状態ビットのためにそれと同等数のリネーム・
レジスタが必要となる。スーパースカラー設計は、更な
る実行ユニット及びリネーム・レジスタを追加しつつ拡
張し続けるので、状態ビットのために必要なリネーム・
レジスタの数を大きく低減する技術が要求される。
【0006】上記の問題に関連する従来技術としては、
次のようなものがある。米国特許第4992938号
は、算術命令によりロードと記憶を並行に処理するため
に、レジスタのリネーミング(renaming)を利用する浮動
小数点プロセッサのための命令制御機構を開示してい
る。構造化レジスタは、その構造化レジスタのための新
たな値の作成により物理レジスタへマッピングされる。
これは、ロード命令についても算術命令についても発生
する。
【0007】米国特許第5497499号は、スーパー
スカラーRISCコンピュータの対して出される順序外
命令において、レジスタのリネーミングを含む命令スケ
ジューリングを開示している。
【0008】米国特許第5499352号は、論理レジ
スタ及び整数レジスタをリネーミングするためにレジス
タ・エイリアス・テーブルを利用する装置及び方法を開
示している。整数レジスタ及び浮動小数点レジスタのエ
イリアス・テーブルを利用することにより、比較的制約
された構造化レジスタセットの中のレジスタを、物理レ
ジスタの拡張セットへとリネーミングすることができ、
それにより、順序外若しくは推論的方法で実行可能なス
ーパースカラー・マイクロプロセッサの命令及びオペレ
ーションの処理を増やすことができる。
【0009】米国特許第5497493号は、レジスタ
・リネーミング機能を設け、そしてオペレーションを実
行する前に非右調整レジスタ及び特に高バイト・レジス
タからのデータを選択的に右シフトさせることにより、
レジスタ数の限定されたマイクロプロセッサ内の処理効
率を向上させるマイクロプロセッサ・アーキテクチャを
開示している。
【0010】米国特許第5452426号は、推論的実
行及び/又は順序外実行を行うプロセッサにおいて推論
的かつ委託された状態資源からの命令ソース・データを
手配する方法を開示する。この場合、少なくとも1つの
論理レジスタ・ソースを有する命令が、論理レジスタ・
ソースをリネーミングすることにより物理レジスタ・ソ
ースを発生する。これにより、物理レジスタ・ソース
が、委託された状態レジスタの物理レジスタを特定す
る。
【0011】米国特許第5471633号は、現在の論
理レジスタのセットを、拡張レジスタセットの現在の物
理レジスタのセットへリネーミングする装置を開示す
る。そのリネーミング装置の部分的停止を選択的に無視
することにより、マイクロプロセッサの処理効率を向上
させる。
【0012】上記のいずれの従来技術も、順序外/推論
的浮動小数点実行ユニットにおける状態フラグ及び条件
コードを維持するためのリネーム・レジスタの数を低減
することにより、このようなプロセッサのチップ領域及
び必要電力を軽減するという問題について記載されてお
らず解決もされていない。
【0013】
【発明が解決しようとする課題】本発明の目的は、状態
ビット・リネーム・レジスタのためのチップ領域及び必
要電力を低減したスーパースカラー・マイクロプロセッ
サを提供することである。
【0014】本発明の更なる目的は、順序外/推論的命
令を実行しかつ状態ビット・リネーム・レジスタの数を
低減した浮動小数点実行ユニットを提供することであ
る。
【0015】本発明の更なる目的は、順序外/推論的命
令を用いる浮動小数点実行ユニットにおいて状態ビット
・リネーム・レジスタの数を低減する装置及び方法を提
供することである。
【0016】本発明の更なる目的は、順序外/推論的浮
動小数点実行ユニットにおいて状態ビット・リネーム・
レジスタをマージする装置及び方法を提供することであ
る。
【0017】本発明の更なる目的は、状態ビット・リネ
ーム・レジスタの数を低減した順序外/推論的浮動小数
点実行ユニットにおいて、IEEE標準754を実施す
る装置及び方法を提供することである。
【0018】
【課題を解決するための手段】順序外/推論的実行が可
能な浮動小数点プロセッサにおいて、上記及び他の目
的、特徴及び利点が実現される。当該プロセッサは、浮
動小数点レジスタ(FPR)アレイと、浮動小数点状態
・制御レジスタ(FPSCR)リネーミング機構と、F
PRリネーミング機構と、グループ識別タグ(GID)
及び目標識別タグ(TID)を含む命令を受信するため
の浮動小数点命令キュー(FPQ)とを有する。GID
は、割込み命令又は分岐命令により制約される命令のセ
ットを規定する。GID中の各命令はTIDを含み、T
IDは、命令の目標設計手段であり、プログラム順を維
持するために用いられる。浮動小数点命令キューは、6
個の要素をもつ命令/制御キューである。このキュー
は、命令フェッチ・ユニット(IFU)内の命令キュー
から浮動小数点ユニットへディスパッチされた記憶命令
及び算術命令を保持する。各FPQ要素は、完全デコー
ド命令フィールド、目標物理レジスタ数及びソース物理
レジスタ数、並びに記憶制御データを格納する。浮動小
数点ユニットへディスパッチされた新しい命令は、各
々、FPRリネーミング機構により固有の物理FPR場
所へ割り当てられた目標レジスタを有する。FPRリネ
ーム論理は、テーブルに基づくポインタ機構である。こ
れは、32個の構造化FPRレジスタを64個の物理レ
ジスタへと拡張することにより、レジスタ・リネーミン
グを実施する。任意の時点において、64個の浮動小数
点レジスタのうち32個は、構造化レジスタセットへ直
接対応する。構造化レジスタセットへ対応するこれらの
32個の物理レジスタは、時間と共に変化する。浮動小
数点レジスタ(FPR)アレイは、2個の浮動小数点実
行ユニット(FPU0/FPU1)のための一組の汎用
レジスタである。各実行ユニットは、発生される各命令
について3個までのソース・オペランド(A、B、C)
を必要とするので、6個の読取りポートが設けられる。
各実行ユニットの目標レジスタ用の書込みポートに加え
て、ロード用の書込みポートが設けられる。浮動小数点
状態・制御レジスタ(FPSCR)は、浮動小数点ユニ
ットのための状態ビット及び制御ビットを格納する。F
PSCRは、IEEE標準状態フラグ及び条件コードを
具現化する。FPSCRは、真偽応答としてではなく条
件コードの形式で比較結果を配信するので(IEEE標
準は2つの手法のうち1つを選ぶ具現化を認めてい
る)、本発明は条件コードに注目する。しかしながら、
IEEE標準に規定された真偽応答の場合についても、
また任意の具現化における特有の状態ビットについて
も、本技術を適用できる。リネーミング機構は、所与の
FPSCRビットについてもFPRについても必要であ
る。なぜなら、FPUは順序外実行及び推論的実行を用
いるからである。FPSCRリネーミングは、浮動小数
点レジスタのリネーミングよりも複雑でない。これは、
FPSCRが構造的に単一レジスタであるのに対し、3
2個の構造化浮動小数点レジスタがあるからである。G
ID毎にただ1つのFPSCRリネーム・レジスタが必
要である。GID内の全ての命令は、それらのFPSC
R更新を1つのFPSCRリネームへとマージすること
になる。各GIDにつき1つのリネーム・レジスタであ
るので、FPSCRリネーム・レジスタの数が、従来技
術のシステムにおいて必要とされる数よりもはるかに少
ない。GID毎に1つのFPSCRリネーム・レジスタ
を設けることにより、FPSCRリネーム・レジスタを
GIDと同じ割合で回収することができる。従って、連
結が不要となり、利用できないFPSCRリネーム・レ
ジスタのためにFPUが停止することがなくなる。
【0019】
【発明の実施の形態】図1は、本発明の背景となる従来
のスーパースカラー・マイクロプロセッサを示す図であ
る。命令ユニット10は命令キュー12を含み、独立し
た浮動小数点実行ユニット14、整数実行ユニット16
及び分岐処理実行ユニット18への命令の流れを集中的
に制御することができる。分岐処理実行ユニット18
は、条件分岐に関する条件レジスタ(CR)予測オペレー
ションを実行する。分岐処理実行ユニット18は、条件
分岐命令においてその命令の下半分を調べ、早期にそれ
を解明しようと試みる。それにより多くの場合、ゼロ・
サイクル分岐という効果が得られる。浮動小数点実行ユ
ニット14は、条件分岐の方向を予測するために命令エ
ンコードの際にビットを使用する。従って、未解明条件
分岐命令に遭遇したとき、その条件分岐が解明されるま
でプロセッサは予測された目標ストリームから命令をフ
ェッチする。分岐処理実行ユニット18は、分岐目標ア
ドレスを計算するための加算器19と、特殊用途のため
の3つのユーザ制御レジスタとを含む。それらのユーザ
制御レジスタは、リンク・レジスタ(LR)、カウント
・レジスタ(CTR)、及び条件レジスタ(CR)であ
る。分岐処理実行ユニット18は、所与の形式の分岐命
令に対してサブルーチン呼出のための復帰ポインタを計
算し、それをLRへ保存する。さらにLRは、リンク・
レジスタ命令への分岐条件の分岐目標アドレスを含む。
カウント・レジスタは、カウント・レジスタ命令への分
岐条件の分岐目標アドレスを含む。LR及びCTRの内
容は、任意の汎用レジスタ(GPR)へ又は任意のGP
Rから複写することができる。分岐処理実行ユニット1
8は、汎用レジスタや浮動小数点レジスタではなく専用
のレジスタを使用するので、分岐命令の実行が、整数命
令及び浮動小数点命令の実行とはほとんど独立に行われ
る。
【0020】整数実行ユニット16は、全ての整数命令
を実行し、浮動小数点実行ユニット14に関係する浮動
小数点メモリ・アクセスを実行する。整数実行ユニット
16は、その算術論理ユニット17、整数例外レジスタ
(XER)、及び汎用レジスタ(GPR)ファイルと共に演
算を実行しつつ同時に1つの整数命令実行する。ほとん
どの整数命令は、単一サイクル命令である。整数実行ユ
ニット16は、メモリへアクセスする全ての命令につい
てキャッシュ20及びメモリ管理ユニット(MMU)22
とインタフェースを行う。アドレスは、命令により指定
されたソース1レジスタ・オペランドを、ソース2レジ
スタ・オペランド若しくはその命令に含まれる16ビッ
トの即値のいずれかへ加算することにより形成される。
ロード命令及び記憶命令は、プログラム順に発生されて
変換されるが、アクセスは、順序を外れて発生させるこ
とができる。同期命令は、厳格な順序を強化するために
設けられる。
【0021】浮動小数点実行ユニット14は、単精度乗
算加算アレイ15、浮動小数点状態・制御レジスタ(F
PSCR)21、及び32個の64ビット浮動小数点レ
ジスタ23を含む。乗算加算アレイによりマイクロプロ
セッサは、乗算、加算、除算及び乗加算等の浮動小数点
オペレーションを効率的に行うことができる。浮動小数
点実行ユニットは、ほとんどの単精度命令及び多くの倍
精度命令が背中合わせ(back-to-back)に発生されるよう
にパイプライン化されている。浮動小数点実行ユニット
は、さらに2つの命令キューを含む。これらのキューに
より浮動小数点実行ユニットは、浮動小数点実行ユニッ
トがビジーの時でも命令キューから命令を発生すること
ができ、他の実行ユニットに対して出す命令を使用可能
とする。分岐処理実行ユニット18と同様に浮動小数点
実行ユニットは、命令キューの下半分からの命令へアク
セスすることができ、浮動小数点実行ユニットに対して
早く出されるはずの未実行命令に依存しない浮動小数点
命令を認める。
【0022】MMU22は、仮想メモリ及び物理メモリ
に対するアクセス特権を制御する。MMUは、最新使用
ページ・テーブル・エントリのキャッシュ(UTL
B)、メモリのブロックの変換を維持する4エントリ・
アレイ(BAT)、及びUTLB若しくはBATアレイ
を必要としない最新使用命令のレジスタ(ITLB)の
複写によりサポートされる。命令ユニット10は、全て
の命令アドレスを作成し、これらのアドレスには、順次
命令バッチのためのものと、プログラム・フローの変化
に対応するものとがある。整数実行ユニット16は、
(図示しないが、メモリ及びI/O制御装置インタフェ
ースの双方のための)データ・アクセスのためのアドレ
スを作成する。
【0023】アドレスが発生された後、論理アドレスの
上位ビットが、MMU22により物理アドレス・ビット
へ変換される。同時に、下位アドレス・ビットがオンチ
ップ・キャッシュ20へ送られ、そこで8ウェイ連想タ
グ・アレイへの索引を形成する。アドレスを変換した
後、MMUが上位ビットを渡すことにより、キャッシュ
への物理アドレス及びキャッシュ・ルックアップが完了
する。キャッシュ禁止アクセス又はキャッシュ・ミスで
あったアクセスについては、未変換の下位アドレス・ビ
ットが、変換された上位アドレス・ビットと連結され
る。得られた32ビット物理アドレスは、メモリ・ユニ
ット24及びその外部メモリ24へアクセスするシステ
ム・インタフェース26により用いられる。MMUはさ
らに、アドレス変換も指示しかつ保護階層を強化する。
これは、アクセスがロードであるか記憶であるかに関係
するそのアクセスのスーパバイザ/ユーザ特権レベルに
関するオペレーション・システムにより行われる。
【0024】キャッシュ20は、命令フェッチャー及び
ロード・記憶ユニットに対する8ワード・インタフェー
スを設けている。周囲論理は、要求された情報を選択
し、組織化し、そしてその要求を行っているユニットへ
送る。キャッシュへの書込みオペレーションは、バイト
単位で行うことができる。キャッシュに対する読取り・
修正・書込み完了オペレーションは、各サイクルで発生
させることができる。命令ユニット10は、フェッチさ
れる次の命令のアドレスをキャッシュに与える。キャッ
シュ・ヒットの場合は、キャッシュがその命令を戻し、
その命令に続く所定数の命令を8ワード命令キュー内に
キャッシュ・セクタ境界まで置くことができる。キュー
が空であれば、8ワードと同じだけの命令を並行にキュ
ーへロードすることができる。
【0025】メモリ・ユニット24は、外部インタフェ
ースとキャッシュとの間のオペレーションをバッファす
る読取りキュー及び書込みキューを含む。これらのオペ
レーションは、キャッシュ・ミスしたロード命令及び記
憶命令の結果生じるオペレーション、並びに、キャッシ
ュ・コヒーレンシー、テーブル探索及び他のオペレーシ
ョンを維持するために必要な読取り及び書込みオペレー
ションからなる。メモリ・ユニットはさらに、アドレス
・オンリ・オペレーション並びにキャッシュ禁止ロード
及び記憶を処理する。
【0026】システム・インタフェース26は、バース
ト読取りメモリ・オペレーション、それに続くバースト
書込みメモリ・オペレーション、I/O制御装置インタ
フェース・オペレーション、並びにシングル・ビート・
メモリ読取り書込みオペレーションを行う。さらに、ア
ドレス・オンリ・オペレーション、バースト及びシング
ル・ビート・オペレーション、並びにアドレス・リトラ
イ活動も可能である。
【0027】図2では、浮動小数点実行ユニット14に
含まれる浮動小数点状態・制御レジスタ21が、さらに
詳細に示されている。レジスタ21は、次のことを行う
ビットを含む。 a.浮動小数点オペレーションにより発生した例外を記
録する。 b.浮動小数点オペレーションにより作成された結果の
タイプを記録する。 c.浮動小数点オペレーションにより用いられる丸めモ
ードを制御する。 d.例外(例外及び例外ハンドラの呼び出し)の報告を
イネーブルとし又はディスエーブルとする。
【0028】ビット0〜23は、状態ビットである。ビ
ット24〜31は、制御ビットである。FPSCR内の
ビットは、命令の実行の完了の際に更新される。
【0029】FPSCR(ビット0:12、21:2
3)内における例外ビットは、浮動小数点イネーブル例
外概要(FEX)及び浮動小数点無効オペレーション例
外概要(VX)のビットを除いて、変化し難い。すなわ
ち、不変ビットは、一旦セットされたならば、FPSC
Rへの移動命令(mtfpscr)によりクリアされる
まではセットされたままとなる。
【0030】FPSCRビット設定のリストは、表1及
び表2(表1の続き)に示されている。
【0031】
【表1】
【0032】
【表2】
【0033】図3は、デュアル同一実行ユニット32、
34を示す浮動小数点ユニット40のハイレベルのブロ
ック図である。これらの実行ユニットは、順序外実行及
び推論的命令実行をサポートする。浮動小数点ユニット
は、ANSI/IEEE標準754−1985「バイナ
リ浮動小数点演算に関するIEEE標準」に合致する。
全ての浮動小数点オペレーションは、ソフトウェアが、
FPSCR21内の浮動小数点非IEEEモード(N
I)ビット29をセットしない限りこの標準に合致す
る。
【0034】命令は、命令フェッチ/ディスパッチ・ユ
ニット36から浮動小数点ユニットへ送られる。命令
は、浮動小数点キュー38に記憶され浮動小数点実行ユ
ニット32、34へ出される。これらの命令についての
64ビット倍精度データは、浮動小数点レジスタ(FP
R)アレイ23に記憶される。浮動小数点ユニット40
は、6個の主な構成要素を有する。これらの構成要素
は、浮動小数点レジスタ23のためのFPRリネーミン
グ機構42、浮動小数点レジスタ・アレイ23自体、浮
動小数点命令キュー38、構造化FPSCR21を含む
浮動小数点状態・制御リネーミング機構44、並びに、
実行ユニット32及び34を含む。
【0035】浮動小数点ユニット40を通してディスパ
ッチされる新たな命令の各々は、固有の物理浮動小数点
レジスタ場所へ割り当てられたその目標レジスタを有す
る。リネーム論理は、テーブル駆動ポインタ機構であ
る。これは、32個の構造化浮動小数点レジスタを64
個の物理レジスタへ拡張することによりレジスタ・リネ
ーミングを実施する。任意の時点において、64個の浮
動小数点レジスタのうち32個が、直接的に構造化レジ
スタ・セットに対応する。構造化レジスタ・セットに対
応するこれら32個の物理レジスタは、時間と共に変化
する。
【0036】浮動小数点命令キュー38は、6要素をも
つ命令/制御キューである。このキューは、IFU36
内の命令キューから浮動小数点ユニット40へディスパ
ッチされた記憶命令及び算術命令を保持する。各FPQ
要素は、完全デコード命令フィールド、目標及びソース
の物理レジスタ番号、並びに記憶制御データを含む。
【0037】浮動小数点レジスタ・アレイ23は、2個
の浮動小数点実行ユニット32及び34のための汎用レ
ジスタのセットである。各実行ユニットは、出された各
命令について3個までのソース・オペランド(A、B、
C)を必要とする。従って、6個の読取りポートが設け
られる。各実行ユニットの目標レジスタのための書込み
ポートの他に、ロードのための書込みポートが設けられ
る。
【0038】FPSCR21は、FPU40のための状
態及び制御を含む。リネーミング機構は、FPRを必要
とするのと同様に、FPSCRビットの幾つかを必要と
する。なぜなら、浮動小数点ユニットは、命令の順序外
実行及び推論的実行を利用するからである。浮動小数点
状態・制御レジスタのリネーミングは、浮動小数点レジ
スタのリネーミングより複雑でない。なぜなら、FPS
CRがアーキテクチャ的に単一レジスタであるのに対
し、32個の構造化FPRがあるからである。唯1つの
FPSCRリネーム・レジスタは、グループ識別子(G
ID)毎に必要である。グループ識別子に含まれる全て
の命令は、それらのFPSCR更新を1つのFPSCR
リネーム・レジスタへとマージする。本発明の実施例に
おいて12個の未定のGIDが可能であるとすると、1
2個のFPSCRリネームが理想的である。
【0039】2個の実行ユニット32及び34は、同一
である。各ユニットは、除算及び平方根を含めて全ての
算術命令を実行する。各ユニットにおけるデータ・フロ
ーは、乗算加算命令を高速にかつ効率的に実行するよう
に最適化される。これらのユニットは、ほとんどの命令
を2サイクルで完了する。ユニット32及び34は、デ
ータをロード/記憶ユニット49に記憶するための出力
を設けている。ロード/記憶ユニット49はまた、FP
Rに対してロード・データを戻す。
【0040】FPSCRリネーミング機構44は、浮動
小数点ユニット40が命令の順序外実行及び推論的実行
を利用するので、FPSCRビットの幾つかを必要とす
る。FPSCRリネーミングにより、FPSCRの更新
をプログラム順に行わうことができ、そして、推論的に
実行された命令の結果であってマシンにより取り消され
たものを破棄する手段を実現する。
【0041】命令の推論的及び順序外実行を取り扱うた
めに、グループ識別子(GID)及び目標識別子(TI
D)と呼ばれる命令タグが、IFU/IDU36により
ディスパッチされた各命令と共に含まれる。固有のグル
ープ識別子(GID)タグは、割込み命令又は分岐命令
により束縛された命令のセットへ適用される。TIDタ
グは、その命令の目標設計機能及びプログラム順を識別
する。FPSCRリネーム・レジスタは、各々コミット
されていないGIDを必要とする。GID内の全ての命
令は、それらのFPSCR更新とTIDを1つのFPS
CRリネーム・レジスタへとマージする。従来技術で
は、浮動小数点状態ビット・リネーム・レジスタは、各
浮動小数点レジスタ・リネームについて必要であった。
よって、32個の浮動小数点レジスタ・リネームを含む
FPUは、順序外及び推論的実行を扱うために32個の
浮動小数点状態ビット・リネーム・レジスタを必要とし
た。本発明においては、浮動小数点状態ビット・リネー
ム・レジスタの数は、マイクロプロセッサにより許容さ
れたコミットされていないグループ識別子タグの数へと
低減された。従って、浮動小数点状態ビット・リネーム
・レジスタの数を低減できると同時に、マイクロプロセ
ッサに必要な面積及び電力も省くことができる。
【0042】FPSCRリネームは、次の条件タイプに
おける命令ディスパッチの間に割り当てられる。 1A.算術命令がディスパッチされかつ未だコミットさ
れていないGIDを有する。 2A.GIDが割り当てられたFPSCRを未だ有して
いない。
【0043】浮動小数点実行ユニット32及び34に対
して命令を出す浮動小数点命令キュー38は、GIDが
コミットされたか否か、及び、GIDが既に割り当てら
れたFPSCRリネームを有しているか否かを判断す
る。
【0044】FPSCRリネームは、次の条件タイプの
いずれかによりクリアされる。 1B.リネームへ割り当てられたGIDがコミットされ
ている。命令ディスパッチ・ユニット36が、最も古い
GIDの0〜5を1サイクルでコミットする。FPSC
Rリネームがコミットされるとき、そのリネーム内容
は、既存の構造化FPSCR状態とマージされる。 2B.割込み又は分岐が、マイクロプロセッサをリダイ
レクトする。リダイレクション・ポイントより新しいか
又は等しい全ての新しいリネームがクリアされる。
【0045】新しい算術命令が、実行ユニット32及び
34の書き戻し段階へ入ると、得られるFPSCRデー
タと共に3個の条件タイプのいずれかが発生する。 1C.命令が、構造化FPSCRへ直接書き込む。これ
は、そのGIDが以前に若しくは同時にコミットされた
場合に発生する。実行ユニット32及び34のいずれか
又は双方からのFPSCRデータ、及び、5個までのコ
ミットされたリネームからのFPSCRデータを、構造
化FPSCRへ同時にマージすることができる。 2C.命令が、新しいFPSCRリネームを更新する。
実行ユニット32及び34のいずれか又は双方からのF
PSCRデータを、新しいFPSCRリネームへマージ
することができる。 3C.命令が、既存のFPSCRへマージされる結果と
なる。FPUの32及び34の双方を、同じ既存のリネ
ームへマージすることができる。
【0046】上記の条件タイプは、図4及び図5に示す
リネーミング機構のオペレーションを説明する際に触れ
られる。
【0047】表1及び表2を参照すると、19個のFP
SCRビットの全部がリネーミングを必要とする。19
個のリネーム・ビットは、全ての例外ビット(3:1
2、22:23)、丸めビット及び不正確ビット(1
3:14)、並びに、結果フラグ(15:19)を含
む。リネームのために、FPSCRは5個のタイプへ分
割することができる。
【0048】1.例外及びイネーブル制御ビット(2
0:21、24:31)。これらのビットは、FPSC
Rへの移動命令によってのみ更新される。リネーミング
は、これらのビットについては不要である。FPQ38
直列化は、これらのビットの順序通りの更新を保証す
る。 2.例外概要ビット(0:2)。これらのビットは、構
造化FPSCR及びFPSCRリネーム内の情報により
作成することができる。リネーミングは、これらのビッ
トについては不要である。 3.丸めビット(13)、不正確ビット(14)及び結
果フラグビット(15)。これらのビットは、GID内
の最新の算術命令の結果を表す。これらのビットは、リ
ネーミングが必要であり、最新の算術結果を保証するた
めにGID内で行われるTID比較は、これらのビット
を更新する。これらのビットについての最新の算術結果
のTIDは、TIDaとして記憶される。 4.結果ビット(16:19)。タイプ3と同様にし
て、異なるTIDを伴う。これらのビットについての最
新の算術結果のTIDは、TIDbに記憶される。 5.例外ビット(3:12、22:23)。これらのビ
ットは、リネーミングが必要であるが、これらは不変ビ
ットであるので、一旦セットされたならば、移動命令に
よりクリアされるまではセットされたままとなる。従っ
て、最新値を決定するためのTID比較は不要である。
所与のGIDについてのリネーミングされたFPSCR
は、これらの例外ビットについてのORを表すこととな
る。
【0049】図4及び図5は、FPSCRリネーミング
機構44をより詳細に示す図である。リネーム比較マト
リクス50は、リネーム・アレイ52と相互動作する。
マトリクス50は。複数の入力列50−1、...、50−
nを含み、本例におけるnは8であり、また、複数の行
56−1、...、56−mを含み、本例におけるmは12
である。これらは、マイクロプロセッサ内で扱われるG
IDの数に対応する。選択された行及び列が、マトリク
ス50へ与えられた(前述の)条件タイプ入力1
B、...、3Cに従って論理素子53により相互接続され
る。論理素子のタイプは、所与の比較マトリクス列への
入力がGID(4ビット同一比較)であるか又はTID
(6ビット大小比較)であるかに依存する。
【0050】リネーム・アレイ52は、複数のリネーム
・レジスタ52−1、...、52−mを含み、本例におけ
るmは12である。これは、マイクロプロセッサ内で扱
われるGIDの数に対応する。各リネーム・レジスタ
は、39ビット・アレイによる12ディープ(deep)の一
連のフィールドを含む。各リネーム・レジスタに含まれ
るフィールドは、左から次の通りである。 a.有効データ(1ビット) b.グループ識別子(4ビット) c.目標識別子a(6ビット) d.目標識別子b(6ビット) e.結合状態ビット(フィールドは、状態(19ビッ
ト)、可変有効(2ビット)及びマスター有効(1ビッ
ト)である。)
【0051】有効ビット、GID及びTIDaフィール
ドは、算術命令がディスパッチされてGIDが未だコミ
ットされておらずかつGIDが割り当てられたFPSC
Rリネームを既に有していないとき、浮動小数点キュー
38(図3参照)によりアクティブとされる。結合フィ
ールドは、優先マージ論理ユニット58がリネーム・ア
レイに対してマージFPSCRデータ・バスを与えたと
きに完了する。
【0052】列50−1及び50−2の論理素子は、前
述のリネーム条件1C、2C及び3Cに従って(もしあ
れば)適合するFPSCRリネーム・エントリを選択す
るための4ビット同一比較回路53−1である。
【0053】マトリクス列50−3乃至50−7は、比
較回路53−1により5個の最古のリネーム・レジスタ
52−1乃至52−5へ結合され、もし比較条件が真で
あれば、FPSCRリネーム・レジスタをコミットす
る。
【0054】マトリクス列50−8の論理素子は、6ビ
ット大小比較回路53−2であり、命令フェッチ又はデ
ィスパッチ・ユニットが割込み又は分岐によりTIDを
取り消したとき、新しいリネームのエントリをそのレジ
スタ内に認めるためにVビットをクリアするべく働く。
【0055】リネーム・レジスタの出力は、12本のバ
スに現れる。これらのバスは、FPU32、34につい
て、マルチプレクサ59、61を介して優先マージ論理
回路58への第1の入力として設けられ、条件タイプ1
C、2C、及び3Cへ応答する。さらに、5個の最古の
リネームが、条件タイプ1Bについての論理素子58へ
の第2の入力として設けられる。浮動小数点ユニット3
2及び34は、論理素子58に対し第3及び第4の入力
としてコミット・ヒット書き戻し入力を設けることによ
り、その命令が、実行を完了したばかりであってコミッ
トするGID又は以前にコミットされたGIDと比較さ
れた(ヒットした)書き戻しに入ろうとしていることを
示す。浮動小数点ユニット32及び34はさらに、論理
素子58の第5及び第6の入力として、条件リネーム・
タイプ1C、2C及び3CにおけるFPU32、24の
FPSCRデータ・バス状態を設ける。FPSCRへの
移動命令及び対応するFPSCRデータは、論理素子5
8の第7の入力として設けられる。5個のコミットGI
Dヒット・リネーム比較が、論理素子58の第8乃至第
12の入力として設けられることにより、適切な5個の
最古のリネームを選択する。FPU0及びFPU1での
実行を終了したばかりの命令のGIDは、論理素子58
の第13及び第14の入力として設けられる。最後に、
対応するTIDa及びTIDbをもつ現在の構造化FP
SCRは、論理素子58への第15の入力として設けら
れる。
【0056】マージされたFPSCR値を作成するため
に優先マージ論理58が用いられる3つの場合は、次の
通りである。 a)FPSCRリネーム更新 b)コミット・ヒット書き戻し(構造化FPSCR更新
となる) c)コミットGIDヒット・リネーム(構造化FPSC
R更新となる) 上記3つの場合の任意の組合せが同時に発生する可能性
があることを注記する。
【0057】上記条件a)において、第1のマージFP
U0/FPU1・FPSCRデータ・バスは、次のもの
を伴う。 i)適合するGIDを含むFPSCRリネーム・エント
リ。 ii)他の実行ユニットFPSCRデータ(それが適合す
るGIDをもつ場合)。 その後、新たにマージされたデータをFPSCRリネー
ム・アレイへ与える。
【0058】上記条件b)において、第1のマージFP
U0/FPU1・FPSCRデータ・バスは、次のもの
を伴う。 i)適合GIDを含むFPSCRリネーム・エントリ
(存在する場合)。 ii)コミットFPSCRリネーム・エントリ(存在する
場合)。 iii)他の実行ユニットFPSCRデータ(それもまた
アクティブなコミット・ヒット書き戻しを有する場
合)。 iv)現在の構造化FPSCR。 その後、構造化FPSCRを更新する。
【0059】上記条件c)において、1又は複数(5個
まで)の第1のマージ・コミットFPSCRリネーム・
エントリは、次のものを伴う。 i)他のコミットFPSCRリネーム・エントリ(存在
する場合)。 ii)1又は双方の実行ユニットFPSCRデータ(それ
らがアクティブなコミット・ヒット書き戻しを有する場
合)。 iii)現在の構造化FPSCR。 その後、構造化FPSCRを更新する。
【0060】マージ機能は、次のことが行える。 i)FPSCRリネーム・エントリ及びFPU0/FP
U1・FPSCRデータ・バスを、現在の構造化FPS
CR値とマージすることにより、新しい構造化FPSC
R値を作成する。 ii)FPSCRリネーム・アレイに対して新たにマージ
されたデータを与えるために、FPSCRリネーム・エ
ントリとFPU0/FPU1・FPSCRデータ・バス
をマージする。
【0061】マージ機能は、3つのサブセットへ分ける
ことができる。マージA、マージB、及びマージCであ
る。マージAは、新たにマージされたデータをFPSC
Rリネーム・アレイへ与える。それは、構造化FPSC
Rを更新しない(この機能は、マージB/マージC論理
により与えられる)。算術命令が実行を終了し、コミッ
ト・ヒット書き戻しが発生しないとき、得られるFPS
CRデータ(状態ビット、可変有効、マスター有効、T
IDa及びTIDbを含む)は、a)適合GIDを含む
FPSCRリネーム・エントリ、及び、b)他の実行ユ
ニットFPSCRデータ(適合GIDを有する場合)と
マージされる。ここで、TIDa及びTIDbは、前述
のように3及び4のFPSCRリネームのタイプに関連
して定義されている。
【0062】マージAプロセスは、次の通りである。 a)不変ビット、すなわち、FPSCR(図2参照)に
現れるビットであって一旦セットされると移動命令によ
りクリアされるまではセットされたままとなるビット
は、マスター有効ビットにより有効化される。全ての有
効不変ビットは、互いにOR論理処理される。 b)可変ビットは、マスター有効ビットにより有効化さ
れ、適切な可変有効ビットとなる。(TIDa/TID
bにより決定される)最新の有効可変ビットは、各可変
ビットに対して優先権を有する。
【0063】マージB論理は、全てのコミットFPSC
Rデータを互いにマージする。これは、a)コミット・
ヒット書き戻しがアクティブである場合の1又は双方の
実行ユニットFPSCRデータ、及び、b)全てのコミ
ット・リネーム・エントリ(それらのうちの0乃至5)
の任意の組合せを含む。
【0064】マージBプロセスは、次の通りである。 a)不変ビットがマスター有効ビットにより有効化され
る。全ての有効不変ビットが互いにOR論理処理され
る。 b)可変ビットがマスター有効ビットにより有効化さ
れ、適切な可変有効ビットとなる。(TIDa/TID
bにより決定される)最新の有効可変ビットは、マージ
B論理から出力された各可変ビットに対して優先権を有
する。
【0065】マージC論理は、マージB出力を現在の構
造化FPSCR値とマージした後、その構造化FPSC
Rを更新する。
【0066】マージCプロセスは、次の通りである。 a)可変ビットは、現在の構造化FPSCR値とマルチ
プレクサ処理される。マージB論理から出力された不変
ビットが有効でない場合、又は、現在の構造化FPSC
Rが(TIDa/TIDbにより決定された)より新し
い可変ビットを有する場合、現在の構造化FPSCR値
が選択される。対応するGIDが以前にコミットされて
いるコミット・ヒット書き戻しの場合は、構造化FPS
CRが、より新しい可変ビットをもつことがある。 b)マージBからの不変ビットと現在の構造化FPSC
R値とをOR論理処理する。 c)3つの概要ビット(FPSCR[FX、FEX、V
X])を生成する。
【0067】論理装置58は、構造化FPSCRに対し
て更新目標識別子TIDa及びTIDbを含む出力を与
える。これは、前述のように論理装置58へ戻すためで
ある。そして、論理装置58は、実行ユニット32及び
34のためのマージFPSCRデータ・バスを与え、こ
れらはアレイ52の入力として戻される。
【0068】図6は、浮動小数点算術命令のディスパッ
チからコミット若しくは取消までの処理ステップを説明
した流れ図である。図5のプロセスは、図3と関連して
説明される。
【0069】ステップaにおいて、浮動小数点算術命令
は、浮動小数点キュー38へディスパッチされる。命令
は、命令フェッチ・ディスパッチ・ユニット(IFU/
IDU)36からのTID/GID命令タグを含む。
【0070】ステップbにおいて、GIDがコミットさ
れているか否かを判断する検査が行われる。「真」条件
であればステップcを開始する。「偽」条件であれば、
ステップeへ跳ぶ。
【0071】ステップcにおいて、FPSCRリネーム
が割り当てられているか否かが判断される。「真」条件
であればステップdを開始する。「偽」条件であれば、
ステップeへ跳ぶ。
【0072】ステップdにおいて、FPQ38が、FP
SCRリネーム・レジスタをその命令へ割り当てる。
【0073】ステップeにおいて、その命令がすぐに発
せられるかあるいはFPU38に保持されるべきかを判
断する検査が行われる。「真」条件であれば、その算術
命令を実行ユニット32又は34のいずれかへ出す。
「偽」条件であれば、マシンはステップtへ跳び、そこ
で、分岐/割込み条件がプロセッサをリダイレクトした
か否かが判断される。
【0074】ステップtにおいて、「真」条件であれば
ステップwを開始し、リダイレクション・ポイントより
新しいか若しくは等しい全てのFPSCRリネーム・エ
ントリをクリアする。このポイントからステップaへ戻
る。ステップtで「偽」条件であれば、更なる処理のた
めにその命令をステップeへ戻す。
【0075】ステップfにおいて、その算術命令が実行
を終了したか否か、及び、実行ユニット32若しくは3
4の書き戻し段階に入っているか否かを判断する検査が
行われる。「真」条件であればステップgを開始する。
「偽」条件であればマシンはステップuへ跳び、分岐/
割込み条件がプロセッサをリダイレクトしたか否かを判
断する。ステップuにおいて、「真」条件であればステ
ップwを開始し、リダイレクション・ポイントより新し
いか若しくは等しい全てのFPSCRリネーム・エント
リをクリアし、このポイントからステップaへ戻る。ス
テップuにおいて、「偽」条件であれば、更なる処理の
ためにその命令をステップfへ戻す。
【0076】ステップgにおいて、命令のコミット書き
戻しが起きたか否かを判断する検査が行われる。ステッ
プgにおいて、書き戻し中の命令が、IDUからのコミ
ットGID及び以前にコミットされたGIDに対して比
較される。「偽」条件であればステップhが開始され
る。「真」条件であればステップvを開始し、その命令
は、次のオペレーションのうち1又は複数を適用され
る。 (i)適合GID(存在する場合)を含むFPSCRリネ
ーム・エントリとのマージ。 (ii)他のコミットFPSCRリネーム・エントリ(存在
する場合)とのマージ。 (iii)他の実行ユニットFPSCRデータ(それもまた
コミット書き戻しを有する場合)とのマージ。 (iv)現在の構造化FPSCRとのマージ。 (v)構造化FPSCRの更新。 (vi)適合GID(存在する場合)を含むFPSCRリネ
ーム・エントリのクリア。オペレーションが完了する
と、プロセスはステップaへ戻る。
【0077】ステップhにおいては、命令が次のオペレ
ーションのうち1又は複数を適用される。 (i)適合GIDを含むFPSCRリネーム・エントリと
のマージ。 (ii)他の実行ユニットFPSCRデータ(それが適合G
IDをもつ場合)とのマージ。 (iii)FPSCRリネーム・エントリの更新。
【0078】ステップiが、ステップhの完了と共に開
始される。ステップiにおいて、分岐/割込み条件がプ
ロセッサをリダイレクトするために発生したか否かを決
定するために検査が行われる。「真」条件であれば、リ
ダイレクション・ポイントより新しいか若しくは等しい
全てのFPSCRリネーム・エントリをクリアする。
「偽」条件であればステップjを開始し、命令ディスパ
ッチ・ユニットにより命令GIDがコミットされたか否
かを判断する。「偽」条件の場合、プロセスはステップ
iへ戻る。「真」条件はステップxを開始し、命令は、
次のオペレーションのうち1又は複数を適用される。 (i)他のコミットFPSCRリネーム・エントリとのマ
ージ(存在する場合)。 (ii)1又は双方の実行ユニットFPSCRデータ(それ
がコミット書き戻しを有する場合) (iii)現在の構造化FPSCR。 (iv)構造化FPSCRの更新。 (v)適合GIDを含むFPSCRリネーム・エントリの
クリア。 ステップxにおけるオペレーションの1又は複数が完了
した後、プロセスはステップaへ戻る。本発明は好適例
に関連して説明されたが、本発明の要旨及び範囲におい
て様々な変形が可能であることは自明である。
【0079】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0080】(1)順序外実行及び推論的実行を可能と
する浮動小数点ユニット(FPU)の状態フラグ及び条
件コードを保持し、かつ、命令ディスパッチ・ユニット
(IDU)及び命令フェッチ・ユニット(IFU)を有
する装置であって、a)推論的順序命令を受け取り、グ
ループ識別子タグGID及び目標識別子タグTIDを含
む順序外及び/又は推論的命令を発生し、前記GIDタ
グは割込み命令又は分岐命令による各末端に関係付けら
れる命令の組を示し、かつ、前記TIDタグは目標とさ
れた構造化機能の同一性及び前記命令のプログラム順序
を示す浮動小数点キュー(FPQ)と、b)各命令につ
いての状態・制御ビットを含み、命令が実行されかつコ
ミットされたとき更新される浮動小数点状態・制御レジ
スタ(FPSCR)と、c)IDUによりコミットされ
ておらずかつ未だ割り当てられたFPSCRリネームを
有していないGIDをもつ算術命令がディスパッチされ
たとき、そのことがFPQにより判断され、IFUから
FPQまでの命令ディスパッチの間にFPSCRの選択
されたビットに対してFPSCRリネームを割り当てる
ために前記FPSCRの選択されたビットの存在に関す
るTIDタグを利用するFPSCRリネーミング機構
と、d)新しい算術命令がFPUの書き戻し段階に入る
と、前記FPSCRのビットを更新する手段と、e)所
与のGIDの全ての命令により得られたFPSCR更新
をマージして1つのFPSCRリネーム・レジスタとす
る手段と、f)i)リネームへ割り当てられたGIDがI
DUによりコミットされるとき、及び、ii)割込み又は
分岐リダイレクション・ポイントよりも新しいか若しく
は等しい全てのリネームがクリアされたときにFPSC
Rリネームをクリアする手段とを有する装置。 (2)複数のFPUオペレーション状態ビットを共通の
リネーム・レジスタ・エントリへとマージする手段を有
する上記(1)に記載の装置。 (3)入力命令並びに各命令についてのGIDタグ及び
TIDタグを受け取り、構造化浮動小数点レジスタの数
を拡大することによりレジスタ・リネーミングを実行す
るために浮動小数点キューへ入力を与える、命令バスへ
結合されたFPRリネーミング機構を含む上記(1)に
記載の装置。 (4)前記FPSCRリネームミング機構が、並設され
かつマージ・レジスタ・リネーミング・アレイへ接続さ
れるマトリクスを有する上記(1)に記載の装置。 (5)前記マトリクス・アレイが複数の列及び行を含
み、選択された列及び行が、(i)適合するGID又はT
IDを含むレジスタ・リネーム・アレイのエントリ、(i
i)優先されたマージ論理ユニットでマージされている適
合GIDを含むエントリ、及び、(iii)クリアされた適
合TIDを含むエントリを識別するために論理素子によ
り互いに接続されている上記(4)に記載の装置。 (6)前記レジスタ・アレイが、プロセッサによりサポ
ートされる未定のGIDタグのかずに等しい数のレジス
タを含み、各レジスタが複数のフィールドを規定し、そ
の中のビットが、命令についての有効ビット、リネーム
割当て及びマージ状態を示すべく記憶される上記(5)
に記載の装置。 (7)前記レジスタ・アレイへの入力としてのマージF
PSCRデータ・バス及び構造化FPSCRの更新状態
を与えるために前記マトリクス及びアレイ列の出力をマ
ージさせる論理手段を有する上記(6)に記載の装置。 (8)順序外及び/又は推論的命令実行が可能であり、
かつ、浮動小数点状態・制御レジスタ(FPSCR)、
浮動小数点キュー(FPQ)及びFPSCRリネーミン
グ機構を有する浮動小数点ユニット(FPU)におい
て、順序外浮動小数点実行ユニットにおける状態フラグ
及び条件コードを保持する方法であって、a)推論的順
序命令を浮動小数点キューにおいて受け取り、グループ
識別子タグGID及び目標識別子タグTIDを含む順序
外及び推論的命令を発生するステップであって、前記G
IDタグは割込み命令又は分岐命令による各末端に関係
付けられる命令の組を示し、かつ、前記TIDタグは目
標とされた構造化機能の同一性及び前記命令のプログラ
ム順序を示す浮動小数点キュー(FPQ)であるステッ
プと、b)各命令についての状態・制御ビットを浮動小
数点状態・制御レジスタ(FPSCR)にロードするス
テップであって、命令が実行されるかつコミットされた
ときFPSCRが更新されるステップと、c)IDUに
よりコミットされておらずかつ未だ割り当てられたFP
SCRリネームを有していないGIDをもつ算術命令が
ディスパッチされたとき、そのことがFPQにより判断
され、IFUからFPQまでの命令ディスパッチの間に
FPSCRの選択されたビットに対してFPSCRリネ
ームを割り当てるために前記FPSCRの選択されたビ
ットの存在に関するTIDタグを利用してFPSCRリ
ネーミング機構において割り当てるステップと、d)新
しい算術命令がFPUにおいて書き戻し段階にはいる
と、FPSCRリネームにおけるFPSCRビットを更
新するステップと、e)所与のGIDの全ての命令によ
り得られたFPSCR更新を1つのFPSCRリネーム
へマージするステップと、f)i)リネームへ割り当てら
れたGIDがIDUによりコミットされるとき、及び、
ii)割込み又は分岐リダイレクション・ポイントよりも
新しいか若しくは等しい全てのリネームがクリアされた
ときにFPSCRリネームをクリアするステップとを有
する方法。 (9)グループ識別子タグ及び目標識別子タグを含む順
序外/推論的命令を実行可能であり、かつ、浮動小数点
状態・制御レジスタを含むFPU、浮動小数点キュー及
びFPSCRリネーミング機構を含む浮動小数点ユニッ
ト(FPU)において、FPSCRレジスタにおける状
態フラグ及び条件コードを保持する方法であって、a)
浮動小数点キューにてTID/GIDタグを含む命令を
受け取るステップと、b)GIDがコミットされていな
いか否か及びGIDが既に割り当てられたFPSCRリ
ネームを有していないか否かを判断するために前記命令
を検査するステップと、c)前記ステップb)にて検査
された条件が真である場合、そのイベントにFPSCR
リネームを割り当てるステップと、d)浮動小数点実行
ユニットに対して命令を出すべきか否かを判断するため
に浮動小数点キューを検査するステップと、e)真条件
である場合に、算術命令が実行されたか否か及び書き戻
し段階であるか否かを判断するために検査を開始するス
テップと、f)命令ディスパッチ・ユニットからのコミ
ットGID又は以前にコミットされたGIDに対して、
書き戻し中の命令を比較するステップと、g)前記命令
FPSCRデータを、適合GIDを含むFPSCRリネ
ーム・エントリとマージさせ、他の実行ユニットFPS
CRデータが適合GIDを有する場合そのFPSCRデ
ータとマージさせ、かつ前記FPSCRリネーム・エン
トリを更新するステップと、h)前記プロセスをリダイ
レクトする分岐条件又は割込み条件が存在するか否かを
検査するステップと、i)偽条件である場合に、FPS
CRリネームのGIDが命令ディスパッチ・ユニットに
よりコミットされたか否かを決定するために検査を開始
するステップと、j)真条件である場合に、FPSCR
リネームを、他のコミットFPSCRリネーム・エント
リとマージさせ、1又は双方の実行ユニットFPSCR
データがコミット・ヒット書き戻しを有する場合その実
行ユニットFPSCRデータとマージさせ、構造化FP
SCRを更新し、適合するGIDを含む前記FPSCR
リネーム・エントリをクリアするステップを含む方法。 (10)浮動小数点状態・制御レジスタ、浮動小数点キ
ュー、及び浮動小数点状態・制御レジスタ・リネーミン
グ機構をもつ順序外浮動小数点ユニットにおけるコンピ
ュータの読取り可能なプログラム・コード手段を具備す
るコンピュータの使用可能な媒体を有する製品におい
て、推論的順序命令を浮動小数点キューにおいて受け取
り、グループ識別子タグ及び目標識別子タグを含む順序
外及び推論的命令を発生するものであって、前記グルー
プ識別子タグは割込み命令又は分岐命令による各末端に
関係付けられる命令の組を示し、かつ、前記目標識別子
タグは目標とされた構造化機能の同一性及び前記命令の
プログラム順序を示す浮動小数点キューであるようなコ
ンピュータ読取り可能なプログラム・コード手段と、各
命令についての状態・制御ビットを浮動小数点状態・制
御レジスタにロードするものであって、命令が実行され
るかつコミットされたとき浮動小数点状態・制御レジス
タが更新されるコンピュータ読取り可能なプログラム・
コード手段と、命令ディスパッチ・ユニット(IDU)
によりコミットされておらずかつ未だ割り当てられたF
PSCRリネームを有していないグループ識別子をもつ
算術命令がディスパッチされたとき、そのことが浮動小
数点キューにより判断され、命令フェッチ・ユニット
(IFU)から浮動小数点キューまでの命令ディスパッ
チの間に、浮動小数点状態・制御レジスタ・リネーミン
グ機構において選択された浮動小数点状態・制御ビット
の存在に関する目標識別子タグを利用することにより前
記選択された浮動小数点状態・制御ビットに対して浮動
小数点状態・制御リネームを割り当てるコンピュータ読
取り可能なプログラム・コード手段と、a)新しい算術
命令が浮動小数点ユニットにおいて書き戻し段階にはい
ると、浮動小数点状態・制御レジスタ・リネームにおけ
る前記ビットを更新するコンピュータ読取り可能なプロ
グラム・コード手段と、b)所与のグループ識別子の全
ての命令により得られた浮動小数点状態・制御レジスタ
更新を1つの浮動小数点状態・制御レジスタ・リネーム
へマージするコンピュータ読取り可能なプログラム・コ
ード手段と、c)i)リネームへ割り当てられたグループ
識別子がIDUによりコミットされるとき、及び、ii)
割込み又は分岐リダイレクション・ポイントよりも新し
いか若しくは等しい全てのリネームがクリアされたとき
に浮動小数点状態・制御レジスタ・リネームをクリアす
るコンピュータ読取り可能なプログラム・コード手段と
を有する製品。
【図面の簡単な説明】
【図1】従来のスーパースカラー・マイクロプロセッサ
における基本ハードウェア要素の構成図である。
【図2】図3の浮動小数点の浮動小数点状態・制御レジ
スタ(FPSCR)を表した図である。
【図3】本発明の原理を実施した浮動小数点ユニットの
ハイレベルの構成図である。
【図4】図3に含まれるFPSCRリネーム機構の構成
図である。(図5と一組で一図面となす。)
【図5】図3に含まれるFPSCRリネーム機構の構成
図である。
【図6】本発明の原理によるリネーム技術を用いた図3
の浮動小数点ユニットにおける状態フラグ及び条件コー
ドを保持する方法の流れ図である。
【符号の説明】
10 命令ユニット 14 浮動小数点実行ユニット 16 整数実行ユニット 17 算術論理ユニット 18 分岐処理実行ユニット 20 キャッシュ 21 浮動小数点状態・制御レジスタ(FPSCR) 22 メモリ管理ユニット(MMU) 23 浮動小数点レジスタ・アレイ 24 メモリ・ユニット 26 システム・インタフェース 32、34 実行ユニット 36 命令フェッチ/ディスパッチ・ユニット 38 浮動小数点命令キュー 40 浮動小数点ユニット 42 浮動小数点レジスタ・リネーミング機構 44 浮動小数点状態・制御リネーミング機構
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェフリー・エス・ブルークス アメリカ合衆国78681、テキサス州、ラ ウンド・ロック、スパロウ・ドライブ 2403 (72)発明者 マーチン・エス・シュムークラー アメリカ合衆国78731、テキサス州、オ ースチン、ロックポイント・ドライブ 7504 (56)参考文献 特開 平7−64790(JP,A) 特開 平6−318155(JP,A) 特表 平8−505725(JP,A) 特表 平8−505724(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (9)

    (57)【特許請求の範囲】
  1. 【請求項1】順序外実行及び推論的実行を可能とする浮
    動小数点ユニット(FPU)の状態フラグ及び条件コー
    ドを保持し、かつ、命令ディスパッチ・ユニット(ID
    U)及び命令フェッチ・ユニット(IFU)を有する装
    置であって、 a)推論的順序命令を受け取り、グループ識別子タグG
    ID及び目標識別子タグTIDを含む順序外及び/又は
    推論的命令を発生し、前記GIDタグは割込み命令又は
    分岐命令による各末端に関係付けられる命令の組を示
    し、かつ、前記TIDタグは目標とされた構造化機能の
    同一性及び前記命令のプログラム順序を示す浮動小数点
    キュー(FPQ)と、 b)各命令についての状態・制御ビットを含み、命令が
    実行されかつコミットされたとき更新される浮動小数点
    状態・制御レジスタ(FPSCR)と、 c)IDUによりコミットされておらずかつ未だ割り当
    てられたFPSCRリネームを有していないGIDをも
    つ算術命令がディスパッチされたとき、そのことがFP
    Qにより判断され、IFUからFPQまでの命令ディス
    パッチの間にFPSCRの選択されたビットに対してF
    PSCRリネームを割り当てるために前記FPSCRの
    選択されたビットの存在に関するTIDタグを利用する
    FPSCRリネーミング機構と、 d)新しい算術命令がFPUの書き戻し段階に入ると、
    前記FPSCRのビットを更新する手段と、 e)所与のGIDの全ての命令により得られたFPSC
    R更新をマージして1つのFPSCRリネーム・レジス
    タとする手段と、 f)i)リネームへ割り当てられたGIDがIDUにより
    コミットされるとき、及び、ii)割込み又は分岐リダイ
    レクション・ポイントよりも新しいか若しくは等しい全
    てのリネームがクリアされたときにFPSCRリネーム
    をクリアする手段とを有する装置。
  2. 【請求項2】複数のFPUオペレーション状態ビットを
    共通のリネーム・レジスタ・エントリへとマージする手
    段を有する請求項1に記載の装置。
  3. 【請求項3】入力命令並びに各命令についてのGIDタ
    グ及びTIDタグを受け取り、構造化浮動小数点レジス
    タの数を拡大することによりレジスタ・リネーミングを
    実行するために浮動小数点キューへ入力を与える、命令
    バスへ結合されたFPRリネーミング機構を含む請求項
    1に記載の装置。
  4. 【請求項4】前記FPSCRリネームミング機構が、並
    設されかつマージ・レジスタ・リネーミング・アレイへ
    接続されるマトリクスを有する請求項1に記載の装置。
  5. 【請求項5】前記マトリクス・アレイが複数の列及び行
    を含み、選択された列及び行が、(i)適合するGID又
    はTIDを含むレジスタ・リネーム・アレイのエント
    リ、(ii)優先されたマージ論理ユニットでマージされて
    いる適合GIDを含むエントリ、及び、(iii)クリアさ
    れた適合TIDを含むエントリを識別するために論理素
    子により互いに接続されている請求項4に記載の装置。
  6. 【請求項6】前記レジスタ・アレイが、プロセッサによ
    りサポートされる未定のGIDタグのかずに等しい数の
    レジスタを含み、各レジスタが複数のフィールドを規定
    し、その中のビットが、命令についての有効ビット、リ
    ネーム割当て及びマージ状態を示すべく記憶される請求
    項5に記載の装置。
  7. 【請求項7】前記レジスタ・アレイへの入力としてのマ
    ージFPSCRデータ・バス及び構造化FPSCRの更
    新状態を与えるために前記マトリクス及びアレイ列の出
    力をマージさせる論理手段を有する請求項6に記載の装
    置。
  8. 【請求項8】順序外及び/又は推論的命令実行が可能で
    あり、かつ、浮動小数点状態・制御レジスタ(FPSC
    R)、浮動小数点キュー(FPQ)及びFPSCRリネ
    ーミング機構を有する浮動小数点ユニット(FPU)に
    おいて、順序外浮動小数点実行ユニットにおける状態フ
    ラグ及び条件コードを保持する方法であって、 a)推論的順序命令を浮動小数点キューにおいて受け取
    り、グループ識別子タグGID及び目標識別子タグTI
    Dを含む順序外及び推論的命令を発生するステップであ
    って、前記GIDタグは割込み命令又は分岐命令による
    各末端に関係付けられる命令の組を示し、かつ、前記T
    IDタグは目標とされた構造化機能の同一性及び前記命
    令のプログラム順序を示す浮動小数点キュー(FPQ)
    であるステップと、 b)各命令についての状態・制御ビットを浮動小数点状
    態・制御レジスタ(FPSCR)にロードするステップ
    であって、命令が実行されるかつコミットされたときF
    PSCRが更新されるステップと、 c)IDUによりコミットされておらずかつ未だ割り当
    てられたFPSCRリネームを有していないGIDをも
    つ算術命令がディスパッチされたとき、そのことがFP
    Qにより判断され、IFUからFPQまでの命令ディス
    パッチの間にFPSCRの選択されたビットに対してF
    PSCRリネームを割り当てるために前記FPSCRの
    選択されたビットの存在に関するTIDタグを利用して
    FPSCRリネーミング機構において割り当てるステッ
    プと、 d)新しい算術命令がFPUにおいて書き戻し段階には
    いると、FPSCRリネームにおけるFPSCRビット
    を更新するステップと、 e)所与のGIDの全ての命令により得られたFPSC
    R更新を1つのFPSCRリネームへマージするステッ
    プと、 f)i)リネームへ割り当てられたGIDがIDUにより
    コミットされるとき、及び、ii)割込み又は分岐リダイ
    レクション・ポイントよりも新しいか若しくは等しい全
    てのリネームがクリアされたときにFPSCRリネーム
    をクリアするステップとを有する方法。
  9. 【請求項9】グループ識別子タグ及び目標識別子タグを
    含む順序外/推論的命令を実行可能であり、かつ、浮動
    小数点状態・制御レジスタを含むFPU、浮動小数点キ
    ュー及びFPSCRリネーミング機構を含む浮動小数点
    ユニット(FPU)において、FPSCRレジスタにお
    ける状態フラグ及び条件コードを保持する方法であっ
    て、 a)浮動小数点キューにてTID/GIDタグを含む命
    令を受け取るステップと、 b)GIDがコミットされていないか否か及びGIDが
    既に割り当てられたFPSCRリネームを有していない
    か否かを判断するために前記命令を検査するステップ
    と、 c)前記ステップb)にて検査された条件が真である場
    合、そのイベントにFPSCRリネームを割り当てるス
    テップと、 d)浮動小数点実行ユニットに対して命令を出すべきか
    否かを判断するために浮動小数点キューを検査するステ
    ップと、 e)真条件である場合に、算術命令が実行されたか否か
    及び書き戻し段階であるか否かを判断するために検査を
    開始するステップと、 f)命令ディスパッチ・ユニットからのコミットGID
    又は以前にコミットされたGIDに対して、書き戻し中
    の命令を比較するステップと、 g)前記命令FPSCRデータを、適合GIDを含むF
    PSCRリネーム・エントリとマージさせ、他の実行ユ
    ニットFPSCRデータが適合GIDを有する場合その
    FPSCRデータとマージさせ、かつ前記FPSCRリ
    ネーム・エントリを更新するステップと、 h)前記プロセスをリダイレクトする分岐条件又は割込
    み条件が存在するか否かを検査するステップと、 i)偽条件である場合に、FPSCRリネームのGID
    が命令ディスパッチ・ユニットによりコミットされたか
    否かを決定するために検査を開始するステップと、 j)真条件である場合に、FPSCRリネームを、他の
    コミットFPSCRリネーム・エントリとマージさせ、
    1又は双方の実行ユニットFPSCRデータがコミット
    ・ヒット書き戻しを有する場合その実行ユニットFPS
    CRデータとマージさせ、構造化FPSCRを更新し、
    適合するGIDを含む前記FPSCRリネーム・エント
    リをクリアするステップを含む方法。
JP09224550A 1996-08-30 1997-08-21 浮動小数点実行ユニットにおける状態フラグ及び条件コードの保持装置及び方法 Expired - Fee Related JP3121565B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/708,006 US5826070A (en) 1996-08-30 1996-08-30 Apparatus and method for maintaining status flags and condition codes using a renaming technique in an out of order floating point execution unit
US08/708006 1996-08-30

Publications (2)

Publication Number Publication Date
JPH10105400A JPH10105400A (ja) 1998-04-24
JP3121565B2 true JP3121565B2 (ja) 2001-01-09

Family

ID=24844021

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09224550A Expired - Fee Related JP3121565B2 (ja) 1996-08-30 1997-08-21 浮動小数点実行ユニットにおける状態フラグ及び条件コードの保持装置及び方法

Country Status (2)

Country Link
US (1) US5826070A (ja)
JP (1) JP3121565B2 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6289437B1 (en) * 1997-08-27 2001-09-11 International Business Machines Corporation Data processing system and method for implementing an efficient out-of-order issue mechanism
US5961636A (en) * 1997-09-22 1999-10-05 International Business Machines Corporation Checkpoint table for selective instruction flushing in a speculative execution unit
US6021488A (en) * 1997-09-23 2000-02-01 International Business Machines Corp. Data processing system having an apparatus for tracking a status of an out-of-order operation and method thereof
US6237077B1 (en) * 1997-10-13 2001-05-22 Idea Corporation Instruction template for efficient processing clustered branch instructions
US5931943A (en) * 1997-10-21 1999-08-03 Advanced Micro Devices, Inc. Floating point NaN comparison
US6061777A (en) * 1997-10-28 2000-05-09 International Business Machines Corporation Apparatus and method for reducing the number of rename registers required in the operation of a processor
US6032249A (en) * 1998-02-02 2000-02-29 International Business Machines Corporation Method and system for executing a serializing instruction while bypassing a floating point unit pipeline
US6061785A (en) * 1998-02-17 2000-05-09 International Business Machines Corporation Data processing system having an apparatus for out-of-order register operations and method therefor
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6216222B1 (en) * 1998-05-14 2001-04-10 Arm Limited Handling exceptions in a pipelined data processing apparatus
US6336160B1 (en) * 1998-06-19 2002-01-01 International Business Machines Corporation Method and system for dividing a computer processor register into sectors and storing frequently used values therein
US6324640B1 (en) * 1998-06-30 2001-11-27 International Business Machines Corporation System and method for dispatching groups of instructions using pipelined register renaming
US6304960B1 (en) 1998-08-06 2001-10-16 Intel Corporation Validating prediction for branches in a cluster via comparison of predicted and condition selected tentative target addresses and validation of branch conditions
US6240510B1 (en) 1998-08-06 2001-05-29 Intel Corporation System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions
US6223278B1 (en) * 1998-11-05 2001-04-24 Intel Corporation Method and apparatus for floating point (FP) status word handling in an out-of-order (000) Processor Pipeline
US6581155B1 (en) * 1999-08-25 2003-06-17 National Semiconductor Corporation Pipelined, superscalar floating point unit having out-of-order execution capability and processor employing the same
US6484251B1 (en) * 1999-10-14 2002-11-19 International Business Machines Corporation Updating condition status register based on instruction specific modification information in set/clear pair upon instruction commit in out-of-order processor
US6571265B1 (en) * 1999-10-29 2003-05-27 Intel Corporation Mechanism to detect IEEE underflow exceptions on speculative floating-point operations
GB2363480B (en) * 2000-06-13 2002-05-08 Siroyan Ltd Predicated execution of instructions in processors
US6779103B1 (en) * 2000-09-29 2004-08-17 Intel Corporation Control word register renaming
US7114063B1 (en) * 2000-12-01 2006-09-26 Unisys Corporation Condition indicator for use by a conditional branch instruction
US7406587B1 (en) * 2002-07-31 2008-07-29 Silicon Graphics, Inc. Method and system for renaming registers in a microprocessor
US7243216B1 (en) * 2003-04-25 2007-07-10 Advanced Micro Devices, Inc. Apparatus and method for updating a status register in an out of order execution pipeline based on most recently issued instruction information
US20050071518A1 (en) * 2003-09-30 2005-03-31 Intel Corporation Flag value renaming
US7478276B2 (en) * 2005-02-10 2009-01-13 International Business Machines Corporation Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US7467325B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US7409589B2 (en) * 2005-05-27 2008-08-05 International Business Machines Corporation Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor
US7765384B2 (en) * 2007-04-18 2010-07-27 International Business Machines Corporation Universal register rename mechanism for targets of different instruction types in a microprocessor
US7809929B2 (en) * 2007-04-18 2010-10-05 International Business Machines Corporation Universal register rename mechanism for instructions with multiple targets in a microprocessor
US7913067B2 (en) * 2008-02-20 2011-03-22 International Business Machines Corporation Method and system for overlapping execution of instructions through non-uniform execution pipelines in an in-order processor
US8219784B2 (en) * 2008-12-09 2012-07-10 International Business Machines Corporation Assigning and pre-decoding group ID and tag ID prior to dispatching instructions in out-of-order processor
US8250346B2 (en) * 2009-06-04 2012-08-21 Arm Limited Register renaming of a partially updated data granule
US9052890B2 (en) * 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10740067B2 (en) * 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10310814B2 (en) 2017-06-23 2019-06-04 International Business Machines Corporation Read and set floating point control register instruction
US11194578B2 (en) * 2018-05-23 2021-12-07 International Business Machines Corporation Fused overloaded register file read to enable 2-cycle move from condition register instruction in a microprocessor
JP7043985B2 (ja) * 2018-06-13 2022-03-30 富士通株式会社 演算処理装置および演算処理装置の制御方法
US11188337B2 (en) * 2018-09-28 2021-11-30 The Florida State University Research Foundation, Inc. Micro-architecture designs and methods for eager execution and fetching of instructions
US10521383B1 (en) * 2018-12-17 2019-12-31 Micron Technology, Inc. Handling operation collisions in a non-volatile memory
CN113590197B (zh) * 2021-07-30 2023-09-26 中国人民解放军国防科技大学 一种支持可变长向量处理的可配置处理器及其实现方法
CN117008977B (zh) * 2023-08-08 2024-03-19 上海合芯数字科技有限公司 一种可变执行周期的指令执行方法、系统和计算机设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4992938A (en) * 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
JP3730252B2 (ja) * 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
DE69330889T2 (de) * 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
US5613132A (en) * 1993-09-30 1997-03-18 Intel Corporation Integer and floating point register alias table within processor device
US5499352A (en) * 1993-09-30 1996-03-12 Intel Corporation Floating point register alias table FXCH and retirement floating point register array
US5497493A (en) * 1993-09-30 1996-03-05 Intel Corporation High byte right-shift apparatus with a register alias table
US5471633A (en) * 1993-09-30 1995-11-28 Intel Corporation Idiom recognizer within a register alias table
US5500943A (en) * 1993-11-02 1996-03-19 Motorola, Inc. Data processor with rename buffer and FIFO buffer for in-order instruction completion
US5640578A (en) * 1993-11-30 1997-06-17 Texas Instruments Incorporated Arithmetic logic unit having plural independent sections and register storing resultant indicator bit from every section
US5452426A (en) * 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US5546554A (en) * 1994-02-02 1996-08-13 Sun Microsystems, Inc. Apparatus for dynamic register management in a floating point unit
US5632023A (en) * 1994-06-01 1997-05-20 Advanced Micro Devices, Inc. Superscalar microprocessor including flag operand renaming and forwarding apparatus
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US5649136A (en) * 1995-02-14 1997-07-15 Hal Computer Systems, Inc. Processor structure and method for maintaining and restoring precise state at any instruction boundary

Also Published As

Publication number Publication date
US5826070A (en) 1998-10-20
JPH10105400A (ja) 1998-04-24

Similar Documents

Publication Publication Date Title
JP3121565B2 (ja) 浮動小数点実行ユニットにおける状態フラグ及び条件コードの保持装置及び方法
EP0886209B1 (en) Extensible risc microprocessor architecture
US8892849B2 (en) Multithreaded processor with multiple concurrent pipelines per thread
US5764969A (en) Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization
US5918005A (en) Apparatus region-based detection of interference among reordered memory operations in a processor
US7739480B2 (en) Method and apparatus for obtaining a scalar value directly from a vector register
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
US7949859B2 (en) Mechanism for avoiding check stops in speculative accesses while operating in real mode
US5867724A (en) Integrated routing and shifting circuit and method of operation
JP2777535B2 (ja) スーパースカラ・プロセッサ・システムにおける中間記憶バッファの割当てをインデックスする方法およびシステム
EP2368181B1 (en) Operation data structure
US5805849A (en) Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
JP3689369B2 (ja) 2次リオーダ・バッファ・マイクロプロセッサ
US8458439B2 (en) Block driven computation using a caching policy specified in an operand data structure
US5872948A (en) Processor and method for out-of-order execution of instructions based upon an instruction parameter
US8285971B2 (en) Block driven computation with an address generation accelerator
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US20040215892A1 (en) Partitioning prefetch registers to prevent at least in part inconsistent prefetch information from being stored in a prefetch register
JP2843750B2 (ja) スーパースカラ・プロセッサ・システムにおける非逐次命令ディスパッチおよび実行のための方法およびシステム
EP0459233A2 (en) Selectively locking memory locations within a microprocessor's on-chip cache
US20100153931A1 (en) Operand Data Structure For Block Computation
WO2010069638A1 (en) Operand address generation
US6237085B1 (en) Processor and method for generating less than (LT), Greater than (GT), and equal to (EQ) condition code bits concurrent with a logical or complex operation
US6240507B1 (en) Mechanism for multiple register renaming and method therefor
JP2742375B2 (ja) スーパースカラ・プロセッサにおける命令処理の選択的逐次化の方法およびシステム

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees