JPH09152973A - カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 - Google Patents

カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置

Info

Publication number
JPH09152973A
JPH09152973A JP8229014A JP22901496A JPH09152973A JP H09152973 A JPH09152973 A JP H09152973A JP 8229014 A JP8229014 A JP 8229014A JP 22901496 A JP22901496 A JP 22901496A JP H09152973 A JPH09152973 A JP H09152973A
Authority
JP
Japan
Prior art keywords
instruction
speculative
bit
entry
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.)
Granted
Application number
JP8229014A
Other languages
English (en)
Other versions
JP3207124B2 (ja
Inventor
Rana Deepak
ディーパク・ラナ
A Schroter David
デビッド・エイ・スクローター
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 JPH09152973A publication Critical patent/JPH09152973A/ja
Application granted granted Critical
Publication of JP3207124B2 publication Critical patent/JP3207124B2/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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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

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)

Abstract

(57)【要約】 【課題】 マイクロプロセッサにおいて、カウント・レ
ジスタ及びリンク・レジスタを変更する命令の投機実行
をサポートする。 【解決手段】 本装置は、カウント/リンク・レジスタ
を変更する投機的に実行される命令から生じるカウント
/リンク・レジスタ・オペランド・データを記憶するリ
ネーム・バッファのキューを含む。キューは制御バッフ
ァを含み、各制御バッファはリネーム・バッファに関連
付けられる制御ビットを含む。制御ビットは、投機的に
実行される命令を識別する命令識別子タグ、関連付けら
れるリネーム・バッファに記憶される投機的に実行され
る命令のオペランド・データ、及びオペランド・データ
がもはや関連リネーム・バッファに記憶される必要がな
いことを示す使用可能ビットを含む。本装置の制御論理
が、各制御バッファに対応する制御ビットをセットし、
投機的に実行される命令の解析にもとづき、使用可能ビ
ットを選択的にセットまたはリセットする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般に、スーパスカ
ラ・マイクロプロセッサにおいて命令の投機実行をサポ
ートする方法及び装置に関し、特に、スーパスカラ・マ
イクロプロセッサにおいて、分岐及びリンク(BAL:
branch and link)命令及びカウント条件付き分岐(B
CT:branch on count)命令の投機実行をサポートす
る方法及び装置に関する。
【0002】
【従来の技術】最新のマイクロプロセッサでは、分岐予
測機構、非プログラム順序の実行、及び複数のパイプラ
インにより、命令の投機実行をサポートすることが有利
である。命令の先回り実行は実質的な性能の向上を提供
するが、分岐予測により取られる命令の投機パスが実際
のプログラム・シーケンスと誤って予測される場合、ま
たは投機的に実行される命令より先に、厳格な割込みが
発生する場合などにおいて、コンピュータ・プログラム
により参照されるマシンの体系化状態を回復する方法が
必要とされる。こうした投機実行機構において、複数の
分岐及びリンク命令並びにカウント条件付き分岐命令の
投機パスの実行を可能にすることは、投機パスが誤って
予測された分岐に起因すると判明したとき、復元の性能
障害を最小化しつつ、リンク・レジスタ及び(または)
カウント・レジスタの体系化状態を、いかに復元するか
に関する問題を提示する。複数の分岐及びリンク命令ま
たはカウント条件付き分岐命令が、誤って予測される1
つ以上の投機パス内に存在するか、割込みがあった場合
に、システムを体系化状態に復元するための複雑性のた
めに、従来のマイクロプロセッサでは、複数の分岐及び
リンク命令またはカウント条件付き分岐命令の投機的な
実行が可能でなかった。
【0003】
【発明が解決しようとする課題】従って、マイクロプロ
セッサにおいて、BAL及びBCTなどの複数のレジス
タ変更命令の投機実行をサポートする機構が必要とされ
る。
【0004】
【課題を解決するための手段】マイクロプロセッサにお
いて、カウント・レジスタ及びリンク・レジスタを変更
する命令の投機実行をサポートする方法及び装置が提供
される。本装置は、カウント/リンク・レジスタを変更
する投機的に実行される命令から生じるカウント/リン
ク・レジスタ・オペランド・データを記憶するリネーム
・バッファのキューを含む。キューは制御バッファのセ
ットを含み、各制御バッファはリネーム・バッファに関
連付けられる制御ビットを含む。制御ビットは、投機的
に実行される命令を識別する命令識別子タグ、関連付け
られるリネーム・バッファに記憶される投機的に実行さ
れる命令のオペランド・データ、及びオペランド・デー
タがもはや関連付けられるリネーム・バッファに記憶さ
れる必要がないことを示す使用可能ビットを含む。本装
置の制御論理は、各制御バッファに対応する制御ビット
をセットし(例えば命令識別子タグをディスパッチ・ユ
ニットにより指示される値にセットする)、投機的に実
行される命令の解析にもとづき、使用可能ビットを選択
的にセットまたはリセットする。本発明は更に、複数の
エントリを含むカウント/リンク・レジスタ・テーブル
を生成するステップと(各エントリはリネーム・バッフ
ァに関連付けられ、使用可能ビット及びロード・ビット
を含む)、命令識別子をカウント/リンク・レジスタを
変更し、実行のために実行ユニットにディスパッチされ
た投機命令に関連付けるステップと、カウント/リンク
・レジスタ・テーブル内の複数のエントリのエントリを
セットするステップと(エントリは投機命令に関連付け
られる命令識別子を含むためにセットされ、エントリが
命令識別子に関連付けられる投機命令に割当てられるこ
とを示すために、使用可能ビットがリセットされる)、
投機命令が実行を終えるとき、投機命令からの結果のデ
ータを、セットされたエントリに関連付けられるリネー
ム・バッファに記憶するステップと、命令識別子により
識別された投機命令の結果がセットされたエントリに関
連付けられるリネーム・バッファに記憶されることを示
すために、セットされたエントリ内のロード・ビットを
セットするステップとを含む方法により開示される。
【0005】前記内容、並びに本発明の追加の目的、特
長、及び利点が、後述の説明から明らかとなろう。
【0006】
【発明の実施の形態】図1を参照すると、本発明の好適
な実施例に従い情報を処理するプロセッサ10のブロッ
ク図が示される。図示の実施例では、プロセッサ10
は、1プロセッサ・サイクルにつき複数の命令を実行可
能な単一の集積回路スーパスカラ・マイクロプロセッサ
を含む。従って、後述されるように、プロセッサ10は
様々な実行ユニット、レジスタ、バッファ、メモリ、及
び他の機能ユニットを含み、これらは全て集積回路によ
り形成される。本発明の好適な実施例では、プロセッサ
10はIBMにより生産されるPowerPC(商標)ライン
のマイクロプロセッサの1つを含み、縮小命令セット・
コンピュータ(RISC)技術に従い動作する。
【0007】図1に示されるように、プロセッサ10は
その内部のバス・インタフェース・ユニット(BIU)
12を介してシステム・バス11に接続される。BIU
12は、プロセッサ10とシステム・バス11に接続さ
れる主メモリ(図示せず)などの他の装置との間の情報
の転送を制御する。プロセッサ10、システム・バス1
1、及びシステム・バス11に接続される他の装置は、
一緒にホスト・データ処理システムを形成する。BIU
12は、プロセッサ10内の命令キャッシュ14及びデ
ータ・キャッシュ16に接続される。命令キャッシュ1
4及びデータ・キャッシュ16などの高速キャッシュ
は、プロセッサ10が、以前に主メモリから高速キャッ
シュに転送されたデータまたは命令のサブセットへの、
比較的高速なアクセス時間を達成することを可能にし、
それによりホスト・データ処理システムの動作速度を改
良する。命令キャッシュ14は更に順次フェッチャ17
に接続され、これは命令を実行のために命令キャッシュ
14からフェッチする。
【0008】順次フェッチャ17は分岐命令を分岐処理
ユニット(BPU)18に実行のために転送し、順次命
令を、これらがプロセッサ10内の他の実行回路により
実行される以前に、命令キュー19に一時記憶のために
転送する。BPU18は、コンピュータ・プログラム内
の命令が実行される順序を変更する分岐命令を実行し、
未解析の条件分岐に関する静的及び動的な分岐予測を実
行することにより、投機命令のフェッチ及び実行を可能
にする。予測された分岐を越えて発行される命令は、分
岐が解析されるまで実行を完了せずに、順次実行のプロ
グラミング・モデルを保存する。順次命令は命令キュー
19からディスパッチ・ユニット20に転送され、それ
ぞれの実行ユニットにディスパッチされる。ディスパッ
チ・レートは実行ユニットのビジー状態、リネーム・バ
ッファ及び完了バッファの可用性、及び幾つかの命令の
直列的振る舞いに依存する。ディスパッチ・ユニット2
0は、ソース・レジスタ及び宛先レジスタの依存性のチ
ェック、並びに並列または非プログラム順序にディスパ
ッチされる命令のリネームを実行する。
【0009】図示の実施例では、BPU18に加えてプ
ロセッサ10の実行回路が複数の実行ユニットを含み、
これらには固定小数点ユニット(FXU)22、ロード
/ストア・ユニット(LSU)28、及び浮動小数点ユ
ニット(FPU)30が含まれる。当業者には既知のよ
うに、各々の実行ユニット18、22、28及び30
は、特定クラスの順次命令の内の1つ以上の命令を、各
プロセッサ・サイクルの間に実行することができる。例
えば、FXU22は、加算、減算、論理積、論理和及び
排他的論理和などの固定小数点演算を、指定される汎用
レジスタ(GPR)32またはGPRリネーム・バッフ
ァ33から受信されるソース・オペランドを用いて実行
する。固定小数点命令の実行に続き、FXU22は命令
のデータ結果をGPRリネーム・バッファ33に出力
し、後者は、結果データをGPRリネーム・バッファ3
3から1つ以上のGPR32に転送することにより命令
が完了されるまで、結果データの一時記憶を提供する。
逆に、FPU30は、浮動小数点レジスタ(FPR)3
6またはFPRリネーム・バッファ37から受信される
ソース・オペランドに対して、浮動小数点乗算及び除算
などの浮動小数点演算を実行する。FPU30は、浮動
小数点命令の実行の結果のデータを、選択されたFPR
リネーム・バッファ37に出力し、後者は、結果データ
をFPRリネーム・バッファ37から選択FPR36に
転送することにより命令が完了されるまで、結果データ
を一時的に記憶する。LSU28は、データをメモリ
(すなわちデータ・キャッシュ16または主メモリ)か
ら選択GPR32またはFPR36にロードするか、デ
ータをGPR32、GPRリネーム・バッファ33、F
PR36、またはFPRリネーム・バッファ37の選択
されるものからメモリに記憶する、浮動小数点命令及び
固定小数点命令を実行する。
【0010】プロセッサ10は命令のパイプライン式及
び非プログラム順序の実行を採用し、更にそのスーパス
カラ・アーキテクチャの性能を改良する。従って、命令
はデータ依存性が観察される限り、FXU22、LSU
28、及びFPU30により、任意の順序で実行され得
る。更に、命令はFXU22、LSU28、及びFPU
30の各々により、パイプライン・ステージの順に処理
される。高性能プロセッサにおいて典型的なように、各
命令は5つの別個のパイプライン・ステージ、すなわち
フェッチ、解読/ディスパッチ、実行、終了、及び完了
のステージにおいて処理される。
【0011】フェッチ・ステージの間、順次フェッチャ
17が、1つ以上のメモリ・アドレスに関連付けられる
1つ以上の命令を、命令キャッシュ14から取り出す。
命令キャッシュ14からフェッチされた順次命令は、順
次フェッチャ17により命令キュー19に記憶される。
フェッチされた分岐命令は命令ストリームから除去さ
れ、BPU18に実行のために転送される。BPU18
は、分岐履歴テーブルなどの分岐予測機構を含み、これ
は分岐が発生するか否かを予測することにより、BPU
18が未解析の条件付き分岐命令を投機的に実行するこ
とを可能にする。
【0012】解読/ディスパッチ・ステージの間、ディ
スパッチ・ユニット20は1つ以上の命令を解読し、命
令キュー19から適切な実行ユニット22、28または
30にディスパッチする。更に解読/ディスパッチ・ス
テージの間、ディスパッチ・ユニット20は、ディスパ
ッチされる各々の命令の結果データに対して、GPRリ
ネーム・バッファ33またはFPRリネーム・バッファ
37内のリネーム・バッファを割当てる。本発明の好適
な実施例によれば、プロセッサ10は命令をプログラム
順序でディスパッチし、非プログラム順序の実行の間
に、固有の命令識別子を利用してディスパッチされた命
令のプログラム順序を追跡する。命令識別子に加えて、
プロセッサ10の実行パイプライン内の各命令は、命令
のA及びBオペランドのソースを示すrAタグ及びrB
タグ、並びに命令の結果データのためのGPRリネーム
・バッファ33またはFPRリネーム・バッファ37内
の宛先リネーム・バッファを示すrDタグを有する。
【0013】実行ステージの間、実行ユニット22、2
8及び30は、ディスパッチ・ユニット20から受信さ
れる命令を、指示される演算のオペランド及び実行資源
が使用可能なときに好機を見計らって実行する。実行の
終了後、実行ユニット22、28及び30は、結果デー
タを命令タイプに依存して、GPRリネーム・バッファ
33またはFPRリネーム・バッファ37に記憶する。
次に、実行ユニット22、28及び30は完了ユニット
40に、実行を終了した命令を通知する。最後に、結果
データをGPRリネーム・バッファ33及びFPRリネ
ーム・バッファ37から、GPR32及びFPR36に
それぞれ転送することにより、命令が完了ユニット40
によりプログラム順に完了される。
【0014】BPU18は分岐ターゲット・アドレスを
計算する加算器、並びに3つの体系化レジスタ、すなわ
ちリンク・レジスタ(LR)、カウント・レジスタ(C
TR)、条件レジスタ(CR)を含む。リンク・レジス
タまたはカウント・レジスタを変更する多数の分岐命令
が存在し、最も一般的なのが分岐及びリンク命令、並び
にカウント条件付き分岐命令である。カウント条件付き
分岐命令は条件付き分岐命令である。カウント・レジス
タが分岐ターゲット・アドレス及びカウントの両方を保
持する。カウント条件付き分岐命令は、カウントにおけ
るアクションを指定し(それを減分するか、そのままに
維持する)、結果のカウントをテストする(それが0
か、0でないか)。適切な条件に合致すると、分岐ター
ゲット・アドレスへの分岐が発生する。更に、BPU1
8はサブルーチン呼出しのための復帰ポインタを計算
し、それを分岐及びリンク命令などの特定のタイプの分
岐命令に対応して、リンク・レジスタに保管する。例え
ば、分岐及びリンク命令は、リンク・レジスタで指定さ
れるアドレスに条件付きで分岐し、次に分岐命令に続く
命令アドレスがリンク・レジスタに配置される。カウン
ト・レジスタ条件付き分岐及びリンク命令は、カウント
・レジスタで指定されるアドレスに条件付きで分岐し、
次に分岐命令に続く命令アドレスがリンク・レジスタに
配置される。無条件分岐命令または条件付き分岐命令も
また、分岐命令に続く命令アドレスがリンク・レジスタ
に配置されることを示す。更に、データをリンク・レジ
スタ及びカウント・レジスタに転送する、またはそこか
ら転送するための、特殊レジスタへの転送命令、または
そこからの転送命令が存在する。特に、リンク・レジス
タ及びカウント・レジスタの内容は、リンク・レジスタ
への転送(MTLR:move-to-link-register)命令及
びカウント・レジスタへの転送(MTCR:move-to-co
unt-register)命令を用いて、汎用レジスタにコピー、
またはそこからコピーされ得る。これらの命令は、デー
タをそれぞれリンク・レジスタ及びカウント・レジスタ
に直接ロードする。
【0015】図2を参照すると、本発明のマイクロプロ
セッサの投機命令パスの例が示される。ディスパッチ・
ユニットからのディスパッチにおいて、命令は命令識別
子(IID:instruction identifier)を割当てられ、
これは発行された命令に関連して、それが完了されるま
で維持される。図2に示されるように、IID1乃至I
ID8を有する8つの投機命令が発行されている。命令
3及び命令6は、リンク・レジスタまたはカウント・レ
ジスタを変更する分岐命令である。各命令1乃至8は、
マイクロプロセッサにより実行される命令ストリーム内
の投機命令パスに属する。命令1乃至命令3は投機命令
パスA内にある。命令3はカウント条件付き分岐命令な
どの分岐命令であり、命令ストリームを投機パスBに分
岐させる。例えばカウント条件に達せずに、分岐が発生
しなかった場合、命令シーケンスは命令パスAに沿っ
て、パスAのレグA'内の続く命令へと継続する。命令
4乃至命令6は、投機命令パスBを含む。命令6は、例
えば分岐及びリンク命令などの分岐命令であり、命令シ
ーケンスを投機命令パスCに分岐させる。投機命令パス
Cは、命令7及び命令8を含む。命令6において分岐が
発生しなかった場合、命令シーケンスは投機命令パスB
に沿って、投機パスBのレグB'内の続く命令を実行し
続ける。
【0016】図3を参照すると、本発明の好適な実施例
に従い、リンク・レジスタ・キュー及びカウント・レジ
スタ・キューを有する分岐/リンク・レジスタ処理ユニ
ットが示される。リンク/カウント・レジスタ処理ユニ
ット110は、リンク・キュー112及びカウント・キ
ュー114を含む。リンク・レジスタ・キュー及びカウ
ント・レジスタ・キューは、5つのバッファ、すなわち
4つのリネーム・バッファ及び1つの体系化バッファを
含む先入れ先出し(FIFO)キューである。リンク・
キュー112は4つのリンク・リネーム・バッファ11
6乃至122と、体系化リンク・レジスタ124を含
む。カウント・キュー114は4つのカウント・リネー
ム・バッファ126乃至134と、体系化カウント・レ
ジスタ136を含む。各命令がディスパッチ・ユニット
20に入力されるとき、1つの完了バッファが各命令に
対して割当てられる。使用可能な完了バッファは命令デ
ィスパッチにおける要求資源であり、従って、1度に最
大5つの命令がディスパッチされ得る。結果的に、4つ
のリネーム・バッファだけが、各々のリンク・レジスタ
及びカウント・レジスタに対して要求される。リンク・
キュー112及びカウント・キュー114の両方は同様
に動作するので、リンク・キューの動作についてだけ詳
述するが、カウント・キュー114も同様に動作するこ
とが理解されよう。
【0017】本発明によれば、ディスパッチされる投機
命令がリンク・レジスタ(またはカウント・キューの場
合にはカウント・レジスタ)を変更する場合、リンク・
キュー112内のエントリが、ディスパッチされる命令
に割当てられる。換言すると、リンク・レジスタを変更
する命令(以下リンク・レジスタ変更命令)を投機的に
実行するとき、そのディスパッチにおいて、リンク・リ
ネーム・バッファが命令に関連付けられる。リンク・キ
ュー112は4つのエントリまたはリネーム・バッファ
116乃至122を含む。各エントリは5つのフィール
ド、すなわちパス、命令識別子、ロード・ビット、使用
可能ビット、及びデータ・フィールドを有する。ディス
パッチにおいて、命令は投機命令パス内に含まれると識
別される。更に、命令識別子がディスパッチされる命令
に関連付けられる。リンク・レジスタ変更命令のパス及
び命令識別子は、両方共に、リンク・キュー112のそ
れらに割当てられたフィールド、すなわちパス・フィー
ルド138及び命令識別子(IID)フィールド140
にそれぞれロードされる。また、エントリの使用可能ビ
ット(A)146(または無効ビット)は、リネーム・
バッファが実行命令に割当てられたことを示すためにリ
セットされる。リンク・レジスタ変更命令が実行を終了
するとき、結果のデータがデータ・フィールド148内
の関連付けられるリネーム・バッファ、例えばリンク・
レジスタ・リネーム・バッファ116にロードされる。
結果データをデータ・フィールド148にロードする
際、ロード・ビット(L)144がセットされ、IID
140により識別されるリンク・レジスタ変更命令から
生じるデータが、リネーム・バッファに記憶されること
を示す。リンク・リネーム・バッファ116乃至122
の1つに関連付けられる命令が完了するとき、そのデー
タがデータ・フィールド148から体系化リンク・レジ
スタ124に転送され、それによりデータをシステムの
体系化状態にコミットする。
【0018】本発明の好適な実施例によれば、リンク/
カウント・レジスタ変更命令は、分岐及びリンク命令、
並びにカウント条件付き分岐命令の実行により表すこと
ができる。例えば、分岐及びリンク命令は、図2の分岐
パスAの命令3に相当し、カウント条件付き分岐命令
は、図2の命令パスBの命令6に相当する。分岐及びリ
ンク命令3は分岐処理ユニット18により実行される。
分岐処理ユニット18の分岐予測機構が、パスBを予測
する。ハードウェアが分岐ターゲット命令、すなわち命
令4、5、6をプリフェッチし、それらが命令キュー1
9にロードされ、後にディスパッチされる。また、分岐
命令の実行時、分岐命令に続く命令の有効アドレスがリ
ンク・レジスタに配置され、分岐がその実行後に元の命
令シーケンスに復帰することを可能にする。また、分岐
処理ユニット18は、リンク・キュー112内のリネー
ム・バッファ116乃至122を、この分岐及びリンク
命令に割当てる。各エントリにおける使用可能ビット
(A)146は、新たな結果データをロードするために
使用可能なバッファを決定するために問い合わされる。
選択されたリネーム・バッファ、例えばリンク・リネー
ム・バッファ116がその使用可能ビット146をリセ
ットされ、パス識別子138がパスAにセットされ(分
岐命令がパスA内に存在する)、命令ID140が命令
3にセットされる。分岐命令に続く命令の有効アドレス
がデータ・フィールド148にロードされ、ロード・ビ
ット144がセットされる。分岐及びリンク命令が完了
するとき、データ・フィールド148内のリンク・レジ
スタ・データが体系化リンク・レジスタ124に転送さ
れ、リネーム・バッファ116の使用可能ビットがセッ
トされ、このリネーム・バッファが再度、リンク・レジ
スタ変更命令をリネームするために使用可能であること
を示す。リネーム・バッファに1度ロードされると、リ
ネーム・バッファ・フィールド148、158内のリン
ク/カウント・レジスタ・データは、リンク/カウント
・レジスタ依存命令を実行する実行ユニットにより、デ
ータ依存性を解析するために使用され得る。レジスタ・
データ依存命令は、その実行のために、以前の命令から
の有効レジスタ・データを頼る命令である。
【0019】投機パスB内のカウント条件付き分岐命令
6のディスパッチにおいて、カウント・レジスタ・リネ
ーム・バッファ126乃至134の1つが分岐命令に割
当てられる。セットされた使用可能ビット156を有す
るカウント・リネーム・バッファだけが、カウント条件
付き分岐命令に割当てられる。バッファが命令に関連付
けられると、選択されたカウント・レジスタ・リネーム
・バッファ、例えばカウント・リネーム・バッファ12
6の使用可能ビット156がリセットされ、パス識別子
150が投機命令パスBにセットされ、命令ID152
が命令6にセットされる。命令のディスパッチに際し
て、カウント・レジスタ・データがデータ・フィールド
158にロードされ、ロード・ビット154がセットさ
れる。当業者には理解されるように、マルチプレクサ1
60は、減分器162によりカウント・データ158を
減分するための、適切なカウント・リネーム・バッファ
126乃至134の選択を可能にする。
【0020】カウント条件付き分岐命令の完了に際し
て、完了ユニット40が信号164を介してカウント条
件付き分岐命令の命令ID、この場合は命令6を転送
し、"有効"ビットをセットし、この命令が完了したこと
を示す。例えば、図3において、IID1が命令6を示
し、IID1有効信号がセットされ、この命令が完了し
たことを示す。これらの信号は、関連付けられるエント
リ126のカウント・レジスタ・データ158が体系化
レジスタ136に転送されるように、またリネーム・バ
ッファ126の使用可能ビット156がセットされ、こ
のバッファが新たにリネームされる命令のために使用可
能であることを示すように指示する。
【0021】図3には更に、当業者には理解されるよう
にアドレス生成のためにカウント・レジスタ及びリンク
・レジスタをアクセスするための信号170が示され
る。信号168は、カウント/リンク・レジスタ変更命
令の命令識別子をセットするためにディスパッチ・ユニ
ット20から受信され、投機結果データ148、158
がリンク及びカウント・リネーム・テーブルから、GP
Rリネーム・バッファ33などの別々のリネーム・バッ
ファに保持される実施例では、ディスパッチ・ユニット
20が信号168により、エントリに関連付けられるリ
ネーム・バッファがロードされたときに、そのロード・
ビットをセットする。
【0022】更に別の例として、命令7がカウント・レ
ジスタ・データをFXU22から取り出すMTCR命令
であったりする。図3に示されるように、FXU22か
らデータを読み書きするために、信号166が使用され
ることが理解される。図示の例では、カウント・レジス
タ・リネーム・バッファ128がカウントへの転送命令
に割当てられる。カウント・レジスタ・リネーム・バッ
ファ128において、使用可能ビット156がリセット
され、パス識別子150がパスCにセットされ、命令I
D152が命令7にセットされる。ロード・ビット15
4はセットされない。なぜなら、続く命令までデータ1
58がFXU22からロードされないからである。FX
U22によるデータ158のローディングに際してロー
ド・ビット154がセットされる。
【0023】本発明の重要な面は、投機分岐が誤って予
測された場合、リネーム・キュー・エントリが容易に取
り消されることである。例えば、図2の分岐パスBが誤
って予測されたことが解析され得る。従って、分岐パス
BまたはCにセットされたパス識別子138、150を
有するリネーム・キューの各エントリに対して、使用可
能ビット146、156をマークすることにより、分岐
パスB及びCに関連付けられたエントリが、キュー内で
割当て解除される。分岐の解析の結果、パスが分岐A
(IDD=3)に復元され、パスに続くIID(IID
=4乃至7)が使用可能とマークされ、それにより分岐
パスB及びC内の命令の投機結果を抑制する。分岐A'
内の命令が現行パスとして選択され、IID=4で開始
するIIDが現行パスに割当てられる。この分岐が解析
される時点で、パスA内の全ての命令が完了されていな
いかも知れない。従って、それらの投機エントリは、そ
れらが完了し、体系化レジスタに配置されるまで、キュ
ー内で有効に維持される。
【0024】投機分岐パスをマークするパス識別子を有
する技術は、エントリ・グループの命令が誤って予測さ
れたと判断されたときに、直ちにそれらの命令を取り消
す容易な方法を可能にすることが理解されよう。当業者
には理解されるように、エントリ・グループを取り消す
別の方法も、本発明と共に使用され得る。例えば、パス
識別子が、所与のパス内にある有効なIIDの範囲を指
し示す1対のベクトルであってもよい。そのパスが取り
消されるとき、取り消されるベクトル内にある命令識別
子を有する全てのエントリが、キューから取り消され
る。
【0025】図4を参照すると、本発明の別の好適な実
施例に従い、リンク・レジスタ・キュー及びカウント・
レジスタ・キューを有する分岐/リンク・レジスタ処理
ユニットが示される。この実施例では、カウント/リン
ク・キューが更に体系化レジスタ・ビット172及び1
74を含み、これはマークされたリネーム・バッファ
を、システムのための体系化レジスタとしてセットす
る。図4に示されるように、カウント・キュー及びリン
ク・キューは上述のように動作するが、リネーム・キュ
ー内の各エントリは、体系化レジスタ・ビット(AR)
172及び174を含む。セットされた体系化レジスタ
・ビットは、関連付けられるリネーム・バッファが現
在、システムにより体系化レジスタとして使用されるこ
とを示す。キュー内の1つのエントリだけが、所与の時
点において体系化ビットをセットされ得る。それぞれの
キュー内の全ての他のエントリは投機命令である。エン
トリに関連付けられる命令がその実行を完了するとき、
その体系化レジスタ・ビット172がセットされ、全て
の他のエントリに対応する体系化レジスタ・ビットがリ
セットされる。
【0026】当業者には理解されるように、好適な実施
例は、リネーム・キュー112及び114内にデータ・
フィールド148及び158を含むように述べられてき
たが、キュー・エントリを記憶するために使用されるの
とは別のリネーム・バッファが、投機レジスタ変更命令
の結果オペランド・データを記憶するために使用され得
る。この実施例では、リネーム・テーブルの各エントリ
が、パス識別子138及び150、命令識別子140及
び152、ロード・ビット144及び154、及び使用
可能ビット146及び156を含む。各キュー・エント
リは、それを命令の結果オペランド・データを含む特定
のリネーム・レジスタ148及び158に関連付けるポ
インタを有する。
【0027】本発明は特に好適な実施例に関連して述べ
られてきたが、当業者には、本発明の趣旨及び範囲から
逸脱すること無しに、その形態及び詳細における様々な
変更が可能であることが理解されよう。
【0028】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0029】(1)マイクロプロセッサにおいて、カウ
ント・レジスタを変更する命令の投機実行をサポートす
る装置であって、カウント・レジスタを変更またはそこ
から読出す、投機的に実行される命令から生じるカウン
ト・レジスタ・オペランド・データを記憶するリネーム
・バッファのセットと、制御バッファのセットであっ
て、前記各制御バッファがリネーム・バッファに関連付
けられる制御ビットを含み、前記制御ビットが、投機的
に実行される命令の体系化プログラム・シーケンスによ
り、オペランド・データを前記関連付けられるリネーム
・バッファに記憶する前記投機的に実行される命令を識
別する命令識別子タグと、前記オペランド・データがも
はや前記関連付けられるリネーム・バッファに記憶され
る必要がないことを示す使用可能ビットとを含む、前記
制御バッファのセットと、前記各制御バッファに対応す
る前記制御ビットをセットする制御論理であって、前記
命令識別子タグをディスパッチ・ユニットにより指示さ
れる値にセットし、前記投機的に実行される命令の解析
にもとづき、前記使用可能ビットを選択的にセットまた
はリセットする、前記制御論理と、を含む、装置。 (2)前記制御ビットが、前記関連付けられるリネーム
・バッファが体系化カウント・レジスタとして使用され
ることを示す体系化ビットを含む、前記(1)記載の装
置。 (3)体系化カウント・レジスタを含み、完了した投機
的に実行される命令の前記命令識別子により識別される
リネーム・バッファに記憶されるオペランド・データ
が、前記リネーム・バッファから前記体系化レジスタに
転送される、前記(1)記載の装置。 (4)前記使用可能ビットが、前記関連付けられるリネ
ーム・バッファが新たなオペランド・データをロードす
るために使用可能であることを示し、前記制御ビットが
新たな投機命令を識別するためにリセットされ得る、前
記(1)記載の装置。 (5)前記制御ビットが、前記命令識別子に関連付けら
れる前記投機的に実行される命令が含まれる投機パスを
示すパス識別子を含み、前記投機パスが、分岐命令と、
次の分岐命令までのプログラム・シーケンス内の続く命
令とを含む複数の投機命令により定義される、前記
(1)記載の装置。 (6)マイクロプロセッサにおいて、カウント・レジス
タを変更する命令の投機実行をサポートする方法であっ
て、複数のエントリを含むカウント・レジスタ・テーブ
ルを生成するステップであって、前記各エントリがリネ
ーム・バッファに関連付けられ、使用可能ビット及びロ
ード・ビットを含む、前記生成するステップと、命令識
別子を、前記カウント・レジスタを変更し、実行のため
に実行ユニットにディスパッチされた投機命令に関連付
けるステップと、前記カウント・レジスタ・テーブル内
の前記複数のエントリのあるエントリをセットするステ
ップであって、前記エントリが前記投機命令に関連付け
られる前記命令識別子を含むためにセットされ、前記使
用可能ビットが、前記命令識別子に関連付けられる前記
投機命令に前記エントリが割当てられることを示すため
にリセットされる、前記セットするステップと、前記投
機命令が実行を終了するとき、前記投機命令の結果デー
タを、前記セットされたエントリに関連付けられる前記
リネーム・バッファに記憶するステップと、前記セット
されたエントリ内の前記ロード・ビットをセットして、
前記命令識別子により識別される前記投機命令の前記結
果が、前記セットされたエントリに関連付けられる前記
リネーム・バッファに記憶されることを示すステップ
と、を含む、方法。 (7)前記セットされたエントリの前記使用可能ビット
が、前記投機命令を含む予測された投機パスが正しくな
かったというように、前記投機命令が否定的に解析され
た場合にセットされる、前記(6)記載の方法。 (8)前記複数のエントリの各エントリが、前記投機命
令が含まれる分岐命令に続く投機パスを示すパス識別子
を含み、予測された投機パスが正しくなかったというよ
うに、前記投機パスが否定的に解析された場合、当該投
機パスの前記パス識別子を有するあらゆる前記エントリ
の前記使用可能ビットがセットされる、前記(6)記載
の方法。 (9)前記カウント・レジスタ・テーブル内のエントリ
が、セットされた前記使用可能ビットを有するエントリ
を上書きすることにより生成される、前記(6)記載の
方法。 (10)前記各エントリが、前記関連付けられるリネー
ム・バッファが体系化カウント・レジスタとして使用さ
れることを示す体系化ビットを含み、完了した投機命令
の前記命令識別子を有するエントリの前記体系化ビット
をセットするステップを含む、前記(6)記載の方法。 (11)完了した投機命令の前記命令識別子を有するエ
ントリの前記関連付けられるリネーム・バッファに記憶
されるオペランド・データを、体系化レジスタに転送す
るステップを含む、前記(6)記載の方法。 (12)マイクロプロセッサにおいて、リンク・レジス
タを変更する命令の投機実行をサポートする装置であっ
て、リンク・レジスタを変更する投機的に実行される命
令から生じるリンク・レジスタ・オペランド・データを
記憶するリネーム・バッファのセットと、制御バッファ
のセットであって、前記各制御バッファがリネーム・バ
ッファに関連付けられる制御ビットを含み、前記制御ビ
ットが、投機的に実行される命令の体系化プログラム・
シーケンスにより、オペランド・データを前記関連付け
られるリネーム・バッファに記憶する前記投機的に実行
される命令を識別する命令識別子タグと、前記オペラン
ド・データがもはや前記関連付けられるリネーム・バッ
ファに記憶される必要がないことを示す使用可能ビット
とを含む、前記制御バッファのセットと、前記各制御バ
ッファに対応する前記制御ビットをセットする制御論理
であって、前記命令識別子タグをディスパッチ・ユニッ
トにより指示される値にセットし、前記投機的に実行さ
れる命令の解析にもとづき、前記使用可能ビットを選択
的にセットまたはリセットする、前記制御論理と、を含
む、装置。 (13)前記制御ビットが、前記関連付けられるリネー
ム・バッファが体系化リンク・レジスタとして使用され
ることを示す体系化ビットを含む、前記(12)記載の
装置。 (14)体系化リンク・レジスタを含み、完了した投機
的に実行される命令の前記命令識別子により識別される
リネーム・バッファに記憶されるオペランド・データ
が、前記リネーム・バッファから前記体系化レジスタに
転送される、前記(12)記載の装置。 (15)前記使用可能ビットが、前記関連付けられるリ
ネーム・バッファが新たなオペランド・データをロード
するために使用可能であることを示し、前記制御ビット
が新たな投機命令を識別するためにリセットされ得る、
前記(12)記載の装置。 (16)前記制御ビットが、前記命令識別子に関連付け
られる前記投機的に実行される命令が含まれる投機パス
を示すパス識別子を含み、前記投機パスが、分岐命令と
次の分岐命令までのプログラム・シーケンス内の続く命
令とを含む複数の投機命令により定義される、前記(1
2)記載の装置。 (17)マイクロプロセッサにおいて、リンク・レジス
タを変更する命令の投機実行をサポートする方法であっ
て、複数のエントリを含むリンク・レジスタ・テーブル
を生成するステップであって、前記各エントリがリネー
ム・バッファに関連付けられ、使用可能ビット及びロー
ド・ビットを含む、前記生成するステップと、命令識別
子を、前記リンク・レジスタを変更し、実行のために実
行ユニットにディスパッチされた投機命令に関連付ける
ステップと、前記リンク・レジスタ・テーブル内の前記
複数のエントリのあるエントリをセットするステップで
あって、前記エントリが前記投機命令に関連付けられる
前記命令識別子を含むためにセットされ、前記使用可能
ビットが、前記命令識別子に関連付けられる前記投機命
令に前記エントリが割当てられることを示すためにリセ
ットされる、前記セットするステップと、前記投機命令
が実行を終了するとき、前記投機命令の結果データを、
前記セットされたエントリに関連付けられる前記リネー
ム・バッファに記憶するステップと、前記セットされた
エントリ内の前記ロード・ビットをセットして、前記命
令識別子により識別される前記投機命令の前記結果が、
前記セットされたエントリに関連付けられる前記リネー
ム・バッファに記憶されることを示すステップと、を含
む、方法。 (18)前記セットされたエントリの前記使用可能ビッ
トが、前記投機命令を含む予測された投機パスが正しく
なかったというように、前記投機命令が否定的に解析さ
れた場合にセットされる、前記(17)記載の方法。 (19)前記複数のエントリの各エントリが、前記投機
命令が含まれる分岐命令に続く投機パスを示すパス識別
子を含み、予測された投機パスが正しくなかったという
ように、前記投機パスが否定的に解析された場合、当該
投機パスの前記パス識別子を有するあらゆる前記エント
リの前記使用可能ビットがセットされる、前記(17)
記載の方法。 (20)前記リンク・レジスタ・テーブル内のエントリ
が、セットされた前記使用可能ビットを有するエントリ
を上書きすることにより生成される、前記(17)記載
の方法。 (21)前記各エントリが、前記関連付けられるリネー
ム・バッファが体系化リンク・レジスタとして使用され
ることを示す体系化ビットを含み、完了した投機命令の
前記命令識別子を有するエントリの前記体系化ビットを
セットするステップを含む、前記(17)記載の方法。 (22)完了した投機命令の前記命令識別子を有するエ
ントリの前記関連付けられるリネーム・バッファに記憶
されるオペランド・データを、体系化レジスタに転送す
るステップを含む、前記(17)記載の方法。
【図面の簡単な説明】
【図1】本発明の好適な実施例に従い情報を処理するプ
ロセッサのブロック図である。
【図2】本発明のマイクロプロセッサにおける投機命令
パスの例を示す図である。
【図3】本発明の好適な実施例に従い、リンク・レジス
タ・キュー及びカウント・レジスタ・キューを有する分
岐/リンク・レジスタ処理ユニットを示す図である。
【図4】本発明の別の好適な実施例に従い、リンク・レ
ジスタ・キュー及びカウント・レジスタ・キューを有す
る分岐/リンク・レジスタ処理ユニットを示す図であ
る。
【符号の説明】
10 プロセッサ 11 システム・バス 110 リンク/カウント・レジスタ処理ユニット 164、166、168、170 信号
───────────────────────────────────────────────────── フロントページの続き (72)発明者 デビッド・エイ・スクローター アメリカ合衆国78664、テキサス州ラウン ド・ロック、スティルメドウ 8

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】マイクロプロセッサにおいて、カウント・
    レジスタを変更する命令の投機実行をサポートする装置
    であって、 カウント・レジスタを変更またはそこから読出す、投機
    的に実行される命令から生じるカウント・レジスタ・オ
    ペランド・データを記憶するリネーム・バッファのセッ
    トと、 制御バッファのセットであって、前記各制御バッファが
    リネーム・バッファに関連付けられる制御ビットを含
    み、前記制御ビットが、投機的に実行される命令の体系
    化プログラム・シーケンスにより、オペランド・データ
    を前記関連付けられるリネーム・バッファに記憶する前
    記投機的に実行される命令を識別する命令識別子タグ
    と、前記オペランド・データがもはや前記関連付けられ
    るリネーム・バッファに記憶される必要がないことを示
    す使用可能ビットとを含む、前記制御バッファのセット
    と、 前記各制御バッファに対応する前記制御ビットをセット
    する制御論理であって、前記命令識別子タグをディスパ
    ッチ・ユニットにより指示される値にセットし、前記投
    機的に実行される命令の解析にもとづき、前記使用可能
    ビットを選択的にセットまたはリセットする、前記制御
    論理と、 を含む、装置。
  2. 【請求項2】前記制御ビットが、前記関連付けられるリ
    ネーム・バッファが体系化カウント・レジスタとして使
    用されることを示す体系化ビットを含む、請求項1記載
    の装置。
  3. 【請求項3】体系化カウント・レジスタを含み、完了し
    た投機的に実行される命令の前記命令識別子により識別
    されるリネーム・バッファに記憶されるオペランド・デ
    ータが、前記リネーム・バッファから前記体系化レジス
    タに転送される、請求項1記載の装置。
  4. 【請求項4】前記使用可能ビットが、前記関連付けられ
    るリネーム・バッファが新たなオペランド・データをロ
    ードするために使用可能であることを示し、前記制御ビ
    ットが新たな投機命令を識別するためにリセットされ得
    る、請求項1記載の装置。
  5. 【請求項5】前記制御ビットが、前記命令識別子に関連
    付けられる前記投機的に実行される命令が含まれる投機
    パスを示すパス識別子を含み、前記投機パスが、分岐命
    令と、次の分岐命令までのプログラム・シーケンス内の
    続く命令とを含む複数の投機命令により定義される、請
    求項1記載の装置。
  6. 【請求項6】マイクロプロセッサにおいて、カウント・
    レジスタを変更する命令の投機実行をサポートする方法
    であって、 複数のエントリを含むカウント・レジスタ・テーブルを
    生成するステップであって、前記各エントリがリネーム
    ・バッファに関連付けられ、使用可能ビット及びロード
    ・ビットを含む、前記生成するステップと、 命令識別子を、前記カウント・レジスタを変更し、実行
    のために実行ユニットにディスパッチされた投機命令に
    関連付けるステップと、 前記カウント・レジスタ・テーブル内の前記複数のエン
    トリのあるエントリをセットするステップであって、前
    記エントリが前記投機命令に関連付けられる前記命令識
    別子を含むためにセットされ、前記使用可能ビットが、
    前記命令識別子に関連付けられる前記投機命令に前記エ
    ントリが割当てられることを示すためにリセットされ
    る、前記セットするステップと、 前記投機命令が実行を終了するとき、前記投機命令の結
    果データを、前記セットされたエントリに関連付けられ
    る前記リネーム・バッファに記憶するステップと、 前記セットされたエントリ内の前記ロード・ビットをセ
    ットして、前記命令識別子により識別される前記投機命
    令の前記結果が、前記セットされたエントリに関連付け
    られる前記リネーム・バッファに記憶されることを示す
    ステップと、を含む、方法。
  7. 【請求項7】前記セットされたエントリの前記使用可能
    ビットが、前記投機命令を含む予測された投機パスが正
    しくなかったというように、前記投機命令が否定的に解
    析された場合にセットされる、請求項6記載の方法。
  8. 【請求項8】前記複数のエントリの各エントリが、前記
    投機命令が含まれる分岐命令に続く投機パスを示すパス
    識別子を含み、予測された投機パスが正しくなかったと
    いうように、前記投機パスが否定的に解析された場合、
    当該投機パスの前記パス識別子を有するあらゆる前記エ
    ントリの前記使用可能ビットがセットされる、請求項6
    記載の方法。
  9. 【請求項9】前記カウント・レジスタ・テーブル内のエ
    ントリが、セットされた前記使用可能ビットを有するエ
    ントリを上書きすることにより生成される、請求項6記
    載の方法。
  10. 【請求項10】前記各エントリが、前記関連付けられる
    リネーム・バッファが体系化カウント・レジスタとして
    使用されることを示す体系化ビットを含み、完了した投
    機命令の前記命令識別子を有するエントリの前記体系化
    ビットをセットするステップを含む、請求項6記載の方
    法。
  11. 【請求項11】完了した投機命令の前記命令識別子を有
    するエントリの前記関連付けられるリネーム・バッファ
    に記憶されるオペランド・データを、体系化レジスタに
    転送するステップを含む、請求項6記載の方法。
  12. 【請求項12】マイクロプロセッサにおいて、リンク・
    レジスタを変更する命令の投機実行をサポートする装置
    であって、 リンク・レジスタを変更する投機的に実行される命令か
    ら生じるリンク・レジスタ・オペランド・データを記憶
    するリネーム・バッファのセットと、 制御バッファのセットであって、前記各制御バッファが
    リネーム・バッファに関連付けられる制御ビットを含
    み、前記制御ビットが、投機的に実行される命令の体系
    化プログラム・シーケンスにより、オペランド・データ
    を前記関連付けられるリネーム・バッファに記憶する前
    記投機的に実行される命令を識別する命令識別子タグ
    と、前記オペランド・データがもはや前記関連付けられ
    るリネーム・バッファに記憶される必要がないことを示
    す使用可能ビットとを含む、前記制御バッファのセット
    と、 前記各制御バッファに対応する前記制御ビットをセット
    する制御論理であって、前記命令識別子タグをディスパ
    ッチ・ユニットにより指示される値にセットし、前記投
    機的に実行される命令の解析にもとづき、前記使用可能
    ビットを選択的にセットまたはリセットする、前記制御
    論理と、 を含む、装置。
  13. 【請求項13】前記制御ビットが、前記関連付けられる
    リネーム・バッファが体系化リンク・レジスタとして使
    用されることを示す体系化ビットを含む、請求項12記
    載の装置。
  14. 【請求項14】体系化リンク・レジスタを含み、完了し
    た投機的に実行される命令の前記命令識別子により識別
    されるリネーム・バッファに記憶されるオペランド・デ
    ータが、前記リネーム・バッファから前記体系化レジス
    タに転送される、請求項12記載の装置。
  15. 【請求項15】前記使用可能ビットが、前記関連付けら
    れるリネーム・バッファが新たなオペランド・データを
    ロードするために使用可能であることを示し、前記制御
    ビットが新たな投機命令を識別するためにリセットされ
    得る、請求項12記載の装置。
  16. 【請求項16】前記制御ビットが、前記命令識別子に関
    連付けられる前記投機的に実行される命令が含まれる投
    機パスを示すパス識別子を含み、前記投機パスが、分岐
    命令と次の分岐命令までのプログラム・シーケンス内の
    続く命令とを含む複数の投機命令により定義される、請
    求項12記載の装置。
  17. 【請求項17】マイクロプロセッサにおいて、リンク・
    レジスタを変更する命令の投機実行をサポートする方法
    であって、 複数のエントリを含むリンク・レジスタ・テーブルを生
    成するステップであって、前記各エントリがリネーム・
    バッファに関連付けられ、使用可能ビット及びロード・
    ビットを含む、前記生成するステップと、 命令識別子を、前記リンク・レジスタを変更し、実行の
    ために実行ユニットにディスパッチされた投機命令に関
    連付けるステップと、 前記リンク・レジスタ・テーブル内の前記複数のエント
    リのあるエントリをセットするステップであって、前記
    エントリが前記投機命令に関連付けられる前記命令識別
    子を含むためにセットされ、前記使用可能ビットが、前
    記命令識別子に関連付けられる前記投機命令に前記エン
    トリが割当てられることを示すためにリセットされる、
    前記セットするステップと、 前記投機命令が実行を終了するとき、前記投機命令の結
    果データを、前記セットされたエントリに関連付けられ
    る前記リネーム・バッファに記憶するステップと、 前記セットされたエントリ内の前記ロード・ビットをセ
    ットして、前記命令識別子により識別される前記投機命
    令の前記結果が、前記セットされたエントリに関連付け
    られる前記リネーム・バッファに記憶されることを示す
    ステップと、 を含む、方法。
  18. 【請求項18】前記セットされたエントリの前記使用可
    能ビットが、前記投機命令を含む予測された投機パスが
    正しくなかったというように、前記投機命令が否定的に
    解析された場合にセットされる、請求項17記載の方
    法。
  19. 【請求項19】前記複数のエントリの各エントリが、前
    記投機命令が含まれる分岐命令に続く投機パスを示すパ
    ス識別子を含み、予測された投機パスが正しくなかった
    というように、前記投機パスが否定的に解析された場
    合、当該投機パスの前記パス識別子を有するあらゆる前
    記エントリの前記使用可能ビットがセットされる、請求
    項17記載の方法。
  20. 【請求項20】前記リンク・レジスタ・テーブル内のエ
    ントリが、セットされた前記使用可能ビットを有するエ
    ントリを上書きすることにより生成される、請求項17
    記載の方法。
  21. 【請求項21】前記各エントリが、前記関連付けられる
    リネーム・バッファが体系化リンク・レジスタとして使
    用されることを示す体系化ビットを含み、完了した投機
    命令の前記命令識別子を有するエントリの前記体系化ビ
    ットをセットするステップを含む、請求項17記載の方
    法。
  22. 【請求項22】完了した投機命令の前記命令識別子を有
    するエントリの前記関連付けられるリネーム・バッファ
    に記憶されるオペランド・データを、体系化レジスタに
    転送するステップを含む、請求項17記載の方法。
JP22901496A 1995-11-20 1996-08-29 カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 Expired - Fee Related JP3207124B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/560614 1995-11-20
US08/560,614 US5764970A (en) 1995-11-20 1995-11-20 Method and apparatus for supporting speculative branch and link/branch on count instructions

Publications (2)

Publication Number Publication Date
JPH09152973A true JPH09152973A (ja) 1997-06-10
JP3207124B2 JP3207124B2 (ja) 2001-09-10

Family

ID=24238561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22901496A Expired - Fee Related JP3207124B2 (ja) 1995-11-20 1996-08-29 カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置

Country Status (2)

Country Link
US (1) US5764970A (ja)
JP (1) JP3207124B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356918B1 (en) * 1995-07-26 2002-03-12 International Business Machines Corporation Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
US6131156A (en) * 1996-05-31 2000-10-10 Hewlett-Packard Company Optimized storage system and method for a processor that executes instructions out of order
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US6070009A (en) * 1997-11-26 2000-05-30 Digital Equipment Corporation Method for estimating execution rates of program execution paths
US6098166A (en) * 1998-04-10 2000-08-01 Compaq Computer Corporation Speculative issue of instructions under a load miss shadow
US6266761B1 (en) * 1998-06-12 2001-07-24 International Business Machines Corporation Method and system in an information processing system for efficient maintenance of copies of values stored within registers
US6189091B1 (en) 1998-12-02 2001-02-13 Ip First, L.L.C. Apparatus and method for speculatively updating global history and restoring same on branch misprediction detection
US6499101B1 (en) 1999-03-18 2002-12-24 I.P. First L.L.C. Static branch prediction mechanism for conditional branch instructions
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
US6546481B1 (en) 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
US6438673B1 (en) * 1999-12-30 2002-08-20 Intel Corporation Correlated address prediction
US7949861B2 (en) * 2005-06-10 2011-05-24 Qualcomm Incorporated Method and apparatus for managing instruction flushing in a microprocessor's instruction pipeline
US9471325B2 (en) * 2013-07-12 2016-10-18 Qualcomm Incorporated Method and apparatus for selective renaming in a microprocessor
US20180203703A1 (en) 2017-01-13 2018-07-19 Optimum Semiconductor Technologies, Inc. Implementation of register renaming, call-return prediction and prefetch

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4413317A (en) * 1980-11-14 1983-11-01 Sperry Corporation Multiprocessor system with cache/disk subsystem with status routing for plural disk drives
US4425615A (en) * 1980-11-14 1984-01-10 Sperry Corporation Hierarchical memory system having cache/disk subsystem with command queues for plural disks
US4394733A (en) * 1980-11-14 1983-07-19 Sperry Corporation Cache/disk subsystem
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
US4937783A (en) * 1987-08-17 1990-06-26 Advanced Micro Devices, Inc. Peripheral controller for executing multiple event-count instructions and nonevent-count instructions in a prescribed parallel sequence
JPH01180638A (ja) * 1988-01-12 1989-07-18 Fujitsu Ltd マルチウェイ分岐方式
US5448746A (en) * 1990-05-04 1995-09-05 International Business Machines Corporation System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
US5303356A (en) * 1990-05-04 1994-04-12 International Business Machines Corporation System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table
US5285376A (en) * 1991-10-24 1994-02-08 Allen-Bradley Company, Inc. Fuzzy logic ladder diagram program for a machine or process controller
US5421020A (en) * 1993-01-08 1995-05-30 International Business Machines Corporation Counter register implementation for speculative execution of branch on count instructions
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
KR0122528B1 (ko) * 1993-01-08 1997-11-20 윌리엄 티.엘리스 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템
TW242673B (ja) * 1993-08-18 1995-03-11 Ibm
US5499204A (en) * 1994-07-05 1996-03-12 Motorola, Inc. Memory cache with interlaced data and method of operation

Also Published As

Publication number Publication date
US5764970A (en) 1998-06-09
JP3207124B2 (ja) 2001-09-10

Similar Documents

Publication Publication Date Title
US5611063A (en) Method for executing speculative load instructions in high-performance processors
JP3580657B2 (ja) 並列マルチタスキングの方法及びシステム
US6356918B1 (en) Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
US5889982A (en) Method and apparatus for generating event handler vectors based on both operating mode and event type
US5809268A (en) Method and system for tracking resource allocation within a processor
JP2597811B2 (ja) データ処理システム
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US5752014A (en) Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US9262161B2 (en) Tracking multiple conditions in a general purpose register and instruction therefor
US5987600A (en) Exception handling in a processor that performs speculative out-of-order instruction execution
US5974240A (en) Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
WO2014090085A1 (en) Branch-free condition evaluation
US5764970A (en) Method and apparatus for supporting speculative branch and link/branch on count instructions
US5996059A (en) System for monitoring an execution pipeline utilizing an address pipeline in parallel with the execution pipeline
JP2004529405A (ja) 依存性を決定するためのコンテンツ・アドレス指定可能メモリを実装したスーパースケーラ・プロセッサ
US5841999A (en) Information handling system having a register remap structure using a content addressable table
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US5664120A (en) Method for executing instructions and execution unit instruction reservation table within an in-order completion processor
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
EP1050805B1 (en) Transfer of guard values in a computer system
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers
US20030191929A1 (en) Microinstruction pointer stack in a processor
US8285765B2 (en) System and method for implementing simplified arithmetic logic unit processing of value-based control dependence sequences

Legal Events

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