JP3154660B2 - 条件レジスタ・データを一時的にバッファリングする方法およびシステム - Google Patents

条件レジスタ・データを一時的にバッファリングする方法およびシステム

Info

Publication number
JP3154660B2
JP3154660B2 JP13485796A JP13485796A JP3154660B2 JP 3154660 B2 JP3154660 B2 JP 3154660B2 JP 13485796 A JP13485796 A JP 13485796A JP 13485796 A JP13485796 A JP 13485796A JP 3154660 B2 JP3154660 B2 JP 3154660B2
Authority
JP
Japan
Prior art keywords
condition register
instruction
data
condition
field
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
JP13485796A
Other languages
English (en)
Other versions
JPH096611A (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 JPH096611A publication Critical patent/JPH096611A/ja
Application granted granted Critical
Publication of JP3154660B2 publication Critical patent/JP3154660B2/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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データ処理システ
ムに係り、特に、データ処理システム内で条件レジスタ
・データを一時的にバッファリングする方法およびシス
テムに係る。さらに具体的には、本発明は、データ処理
システム内の非プログラム順序および投機命令実行を容
易にするために複数の条件レジスタ・リネーム・バッフ
ァを有する条件レジスタ・リネーム・テーブル内に条件
レジスタ・データを一時的にバッファリングする方法お
よびシステムに係る。
【0002】
【従来の技術】データ処理システムのパフォーマンス向
上を追求し続けるにつれて、中央処理装置(CPU)の
設計者は、複数の独立命令を複数の実行パイプラインに
投入することができ、複数の命令が並列実行されるスー
パースケーラ・データ処理システムを実現している。こ
のようなスーパースケーラ・データ処理システムの一例
は、IBMマイクロエレクトロニクスおよびモトローラ
・セミコンダクタによって「PowerPC」という商
標で市販されているスーパースケーラ・マイクロプロセ
ッサである。「PowerPC」アーキテクチャについ
ては、「PowerPC603 - RISC MICROPROCESSOR USER'S MA
NUAL」、1994年、IBM資料番号MPR603UMU-01を含む様
々なユーザーズ・マニュアルで詳述されている。
【0003】スーパースケーラ・マイクロプロセッサ内
では、命令が命令キャッシュからフェッチされ、複数の
実行ユニットの1つにプログラム順序でディスパッチさ
れ、命令はその特定のタイプの命令に適した実行ユニッ
トによって実行される。たとえば、浮動小数点命令は1
つまたは複数の浮動小数点実行ユニットにディスパッチ
され、固定小数点命令は1つまたは複数の整数ユニット
にディスパッチされる。命令はプログラム順序でディス
パッチされるが、命令の実行は実行ユニットおよびその
他のデータ処理システム資源の使用可能性に応じて非プ
ログラム順序で行われる。
【0004】スーパースケーラ・プロセッサでは、前に
ディスパッチされた命令の前に、他の命令をディスパッ
チ、実行、および「終了」することができる。非プログ
ラム順序命令実行によって不適切な時点でアーキテクチ
ャ・レジスタにデータが格納されるのを防ぐために、命
令実行は完了ユニットによってプログラム順序で「完
了」される。したがって、後でディスパッチされた命令
は前にディスパッチされた命令が終了する前に「終了」
することができるが、後でディスパッチされた命令が前
にディスパッチされた命令が完了する前に「完了」する
ことはできない。
【0005】当技術分野では周知の通り、「Power
PC」は、移動、整数、および浮動小数点比較、算術、
および論理演算などの特定の演算の結果を反映するよう
に設定またはリセットされるビット・フィールドを含む
条件レジスタ(CR)を備えており、テストと分岐の機
構を備えている。しかし、条件レジスタ・データ依存命
令(すなわち条件レジスタ内にある現行データに依存す
る命令)が、条件レジスタ内のデータを変更する先行の
非プログラム順序命令の後に実行される場合、問題が生
ずる。
【0006】従来の技術では、一の条件レジスタ変更命
令のディスパッチが遅れることがある。なぜなら、この
同じ条件レジスタを変更する多数の命令を同じサイクル
でディスパッチすることができないからである。
【0007】1サイクルでディスパッチする条件レジス
タ変更命令が多すぎるという問題に加えて、条件レジス
タ内のデータに依存する分岐命令(すなわち条件分岐命
令)が、条件レジスタ変更命令のディスパッチの遅延の
ために遅延することがある。そのような条件分岐命令の
解決が遅延した場合、条件分岐命令が解決した後で、命
令メモリから新しい経路の命令をフェッチするのに要す
る時間のために、処理がさらに遅延することがある。
【0008】非プログラム順序実行に加えて、スーパー
スケーラ・データ処理システムは、条件分岐が解決され
なかった場合に条件分岐に続く命令を投機実行すること
ができる。条件分岐が複数の命令を実行するために投機
的に解決され、それが後で誤った命令経路であると決定
される場合、かかる投機実行は問題を引き起こす。その
ような条件分岐の予測誤りが起こると、諸レジスタを分
岐条件の予測誤りの前に存在していた状態に復元しなけ
ればならない。たとえば、条件コード・データを保持す
る条件レジスタを、誤って予測された分岐内の条件レジ
スタ変更命令を実行する前に存在していた状態に復元し
なければならない。
【0009】前記に鑑みて、当業者には、同一サイクル
における複数の条件レジスタ変更命令のディスパッチ
と、条件レジスタ・データ依存命令の早期解決、および
条件レジスタ変更命令の誤って予測された実行(不正な
投機実行)の結果による条件レジスタ・データの効率的
な取消しを行うことができる方法とシステムが要請され
ていることが明らかであろう。
【0010】
【発明が解決しようとする課題】したがって、本発明の
1つの目的は、改良されたデータ処理システムを提供す
ることである。
【0011】本発明の他の目的は、データ処理システム
内で条件レジスタ・データを一時的にバッファリングす
る方法とシステムを提供することである。
【0012】本発明の他の目的は、複数の条件レジスタ
・リネーム・バッファを有する条件レジスタ・リネーム
・テーブル内にレジスタ・データを一時的にバッファリ
ングし、データ処理システム内の非プログラム順序およ
び投機命令実行を容易にする方法とシステムを提供する
ことである。
【0013】
【課題を解決するための手段】前記の目的は以下に述べ
るようにして達成される。条件レジスタ変更命令の実行
ユニットへのディスパッチに応答して、その条件レジス
タ変更命令に条件レジスタ・リネーム・バッファが割り
当てられる。次に、その命令が実行ユニットで実行され
る。条件レジスタ変更命令が実行された後、かかる命令
実行の結果を反映するように、条件レジスタ・リネーム
・バッファ内に条件レジスタ・データが設定される。さ
らに、その条件レジスタ・データが有効であることを示
す標識が設定される。条件レジスタ変更命令の完了時点
で、条件レジスタ・リネーム・バッファからの条件レジ
スタ・データが設計済み条件レジスタに転送され、それ
によって、各条件レジスタ変更命令を完了するために条
件レジスタが使用可能になる前に、複数の条件レジスタ
変更命令のディスパッチ、実行、および終了が可能にな
る。
【0014】
【発明の実施の形態】図1には、本発明の方法およびシ
ステムに従ったスーパースケーラ・データ処理システム
が示されている。スーパースケーラ・プロセッサとは、
複数の命令パイプラインに複数の独立命令を投入して並
列実行するプロセッサである。図示のように、スーパー
スケーラ・データ処理システム100は、少なくとも5
つの独立した実行ユニットと、2つのレジスタ・ファイ
ルを備える。これらの実行ユニットには、分岐処理ユニ
ット(BPU)102、ロード/ストア・ユニット10
4、整数ユニット106、および浮動小数点ユニット1
08が含まれる。スーパースケーラ・データ処理システ
ム100内のレジスタ・ファイルには、整数オペランド
用の汎用レジスタ・ファイル(GPR)107、単精度
または倍精度浮動小数点オペランド用の浮動小数点レジ
スタ・ファイル(FPR)109が含まれる。さらに、
GPR107とFPR109の両方が、それぞれ1組の
リネーム・レジスタを含むことができる。かかるリネー
ム・レジスタは、命令の結果が完了ユニット132によ
ってアーキテクチャ・レジスタ(アーキテクチャ上のレ
ジスタ)にコミットされる前に、命令の結果を格納する
ために使用される。
【0015】命令ユニット110には、順次フェッチャ
112、命令待ち行列114、ディスパッチ・ユニット
116、条件レジスタ処理ユニット117、および分岐
処理ユニット102が含まれている。命令ユニット11
0は、順次フェッチャ112および分岐処理ユニット1
02から受け取った情報に基づいて、命令キャッシュ1
18から次にフェッチすべき命令のアドレスを決定す
る。
【0016】順次フェッチャ112は、命令キャッシュ
118から命令をフェッチし、その命令を命令待ち行列
114にロードする。順次フェッチャ112によって分
岐命令が識別され、命令待ち行列114をバイパスして
直接、分岐処理ユニット102に送られる。かかる分岐
命令は、分岐が無条件である場合、または必要な条件が
揃っている場合には、実行されて解決され、それ以外の
場合には分岐が予測される。分岐が予測される場合、予
測に続く命令を投機実行命令と呼ぶ。
【0017】非分岐命令は、実行ユニットのビジー状
況、リネームおよび完了バッファの使用可能性、および
一部の命令の逐次化動作に応じたディスパッチ・レート
で、命令待ち行列114から発行される。命令のディス
パッチはプログラムの順に行われる。BPU102は、
未解決の条件分岐に対して静的分岐予測を使用すること
により、条件分岐が評価されている間に、命令ユニット
110が予測されたターゲット命令ストリームから命令
をフェッチできるようにする。分岐処理ユニット102
は、実行パイプライン内で進行中の命令によって影響を
受けない無条件分岐または条件分岐に対して分岐命令を
展開する。
【0018】命令待ち行列114は順次フェッチャ11
2によってロードされた幾つかの命令を保持する。順次
フェッチャ112は命令待ち行列114内の使用可能ス
ペースが常に満たされているように命令を絶えずロード
する。命令は、ディスパッチ・ユニット116からそれ
ぞれの実行ユニットにディスパッチされる。ディスパッ
チ・ユニット116は、条件が許せば1サイクルに複数
の命令がディスパッチされるように設計される。動作時
には、命令キャッシュ118から命令がフェッチされ、
命令待ち行列114または分岐処理ユニット102に入
れられる。命令待ち行列114に入れられた命令は、命
令待ち行列114から様々な実行ユニットに発行され
る。命令待ち行列114は、スーパースケーラ・データ
処理システム100にとってマスタ・パイプラインのバ
ックボーンであり、たとえば6エントリの待ち行列を含
むことができる。命令待ち行列114を満たしていると
きに、順次フェッチャ112からの要求が命令キャッシ
ュ118で「ミスヒット」であった場合、メモリ・アク
セスのアービトレーションが開始される。
【0019】データ・キャッシュ126は、ロード/ス
トア・ユニット104用のキャッシュ・メモリを提供す
る。命令メモリ管理ユニット128とデータ・メモリ管
理ユニット130は、命令とデータの両方についてそれ
ぞれ仮想メモリと物理メモリへのアクセスをサポートす
る。これらのメモリ管理ユニットは、アドレス変換を実
行し、キャッシュ「ヒット」またはキャッシュ「ミス」
のどちらが生じたかを決定する。バス・インタフェース
・ユニット120は、バス・アービトレーションに関与
することによって、外部アドレス・バス122と外部デ
ータ・バス124へのアクセスを制御する。
【0020】完了ユニット132は、命令をディスパッ
チから実行まで追跡してから、命令をプログラム順序で
退去または「完了」させる。命令を完了させるとは、命
令実行の結果をアーキテクチャ・レジスタにコミットす
ることを意味する。プログラム順序完了は、スーパー
スケーラ・データ・プロセッサが予測誤り分岐またはそ
の他の例外もしくは割込みから回復しなければならない
場合に、正しいアーキテクチャ状態を保証する。
【0021】図2には、本発明の方法およびシステムに
従った条件レジスタ処理ユニット117の構成が示され
ている。図示のように、条件レジスタ処理ユニット11
7は、複数の条件レジスタ・フィールド(以下「CRフ
ィールド」と略記)152を含む条件レジスタ150を
備える。この例では、条件レジスタ150は8個のCR
フィールド152を含む(詳細については図3を参
照)。本発明の1つの実施例によると、各CRフィール
ド152は、以下の4ビットを含む(図3を参照)。す
なわち、演算結果が負の場合に設定される負ビット15
4、演算結果が正であってゼロでない場合に設定される
正ビット156、演算結果がゼロの場合に設定されるゼ
ロ・ビット158、およびXER特殊目的レジスタ内の
合計オーバーフロー・ビットに応じて設定される合計オ
ーバーフロー・ビット160である。
【0022】再び図2を参照すると、条件レジスタ処理
ユニット117は、条件レジスタ・リネーム・テーブル
(以下「CRリネーム・テーブル」と略記)170も備
えている。CRリネーム・テーブル170は、マルチプ
レクサ172を介して条件レジスタ150に結合されて
いる。マルチプレクサ172は、マルチプレクサ制御回
路174によって制御される。マルチプレクサ制御回路
174も、CRリネーム・テーブル170に結合されて
いる。
【0023】CRリネーム・テーブル170への情報の
格納は、部分的に条件コード割当て論理回路176およ
び条件コード状況制御回路178によって制御される。
条件レジスタ処理ユニット117の外部では、CRリネ
ーム・テーブル170内の情報はディスパッチ・ユニッ
ト116および実行ユニット182によって制御され、
使用される。実行ユニット182は、図1に示すよう
な、分岐処理ユニット102、整数ユニット106、お
よび浮動小数点実行ユニット108などの実行ユニット
を表す。
【0024】CRリネーム・テーブル170は、条件レ
ジスタ・リネーム・バッファ(以下「CRリネーム・バ
ッファ」と略記)184から成る。図2では、CRリネ
ーム・テーブル170内に4個のCRリネーム・バッフ
ァ184が示されている。各CRリネーム・バッファ1
84は、命令IDフィールド186、宛先フィールド1
88、条件レジスタ・データ(後述の条件コード・デー
タまたは条件コード・ビットと同義。以下「CRデー
タ」と略記。)フィールド190、現行ビット192、
使用ビット194、終了ビット196、Caビット19
8、Cbビット200、Uaビット202、およびUb
ビット204など、幾つかのフィールドを含む。
【0025】図2に示す実施例では、命令IDフィール
ド186は、4ビット・フィールドであって、関連する
命令をデータ処理システム内で実行される他の命令に対
して固有に識別する命令識別子を格納する。かかる命令
IDは、命令がディスパッチ・ユニット116によって
ディスパッチされるとき、これらの命令に割り当てられ
る。かかる命令IDを使用して、これらの命令をディス
パッチから実行まで追跡することができ、これらの命令
をプログラム順序で完了させることができる。
【0026】宛先フィールド188は、3ビットのデー
タ・ワードを格納するために使用される。このデータワ
ードは、命令IDフィールド186内の命令IDによっ
て識別される条件レジスタ変更命令(以下「CR変更命
令」と略記)によって影響を受けるCRフィールド15
2のうちの1つを識別する。
【0027】CRデータ・フィールド190は、4ビッ
トのデータ・ワードとして図示されている。このデータ
・ワードは、命令IDフィールド186内の命令IDに
よって識別されるCR変更命令の結果を反映するCRデ
ータを格納する。本実施例では、CRデータには、図3
に示す負ビット154、正ビット156、ゼロ・ビット
158、および合計オーバーフロー・ビット160の4
ビットのデータが含まれている。
【0028】現行ビット(Cビット)192は、1ビッ
トのデータであって、命令IDフィールド186内の命
令IDによって識別される命令が、宛先フィールド18
8内の宛先データによって識別されるCRフィールド1
52内の条件コードを変更する最新のディスパッチ済み
命令であることを示すために使用される。たとえば、同
じCRフィールド152を変更する2つのCR変更命令
が、CRリネーム・テーブル170内の2つのCRリネ
ーム・バッファ184に割り当てられた場合、最新のデ
ィスパッチ済みCR変更命令に関連するCRリネーム・
バッファ184のみに現行ビット192が設定されるこ
とになる。
【0029】使用ビット194は、CRリネーム・バッ
ファ184が、まだ「完了」していないディスパッチ済
みのCR変更命令に割り当てられたことを示すために設
定される。すなわち、当該CRリネーム・バッファ18
4は、現在、何らかの実行ステージにある命令に使用さ
れている。
【0030】終了ビット196は、結果のCRデータが
CRデータ・フィールド190にロードされたことを示
すために使用される。一旦、終了ビット196が設定さ
れると、CRデータ・フィールド190内のCRデータ
は、CRデータ依存命令を実行する実行ユニットが使用
してデータ依存関係を解決することができる。CRデー
タ依存命令とは、その命令を実行するために、前の命令
からの有効なCRデータに依存する命令である。
【0031】CRリネーム・バッファ184内のCaビ
ット198とCbビット200は、Cビット192と同
様にして使用される。Cビット192と同様に、Caビ
ット198とCbビット200は、関連するCR変更命
令が、宛先フィールド188内のデータによって指定さ
れたCRフィールド152を変更する最も最近にディス
パッチされた命令であったことを示すために設定され
る。ただし、Caビット198は、関連する命令が投機
分岐命令の後にディスパッチされる命令である場合に設
定され、Cbビット200は、第1の分岐の後の命令が
まだ完了していない場合に他の投機分岐の後にディスパ
ッチされた命令について設定される。
【0032】たとえば、図4を参照すると、命令経路2
10が投機分岐a212に入ろうとしている。データ処
理システムが投機的に命令経路214を取ることに決定
した場合、分岐a内の命令が実行される。分岐a214
で命令を投機実行するという決定が行われるとただち
に、命令経路210内の命令のCビット192が、それ
ぞれのCRリネーム・バッファ184内のCaビット1
98にコピーされる。このステップによって、分岐a2
14内の投機命令が実行される前にCビット192のコ
ピーまたはレコードが保存される。第1の投機分岐a2
14で、分岐a214内の命令が完了する前に第2の投
機分岐b222内の命令を投機実行する決定が行われた
場合、分岐a214内の命令のCビット192がそれぞ
れのCRリネーム・バッファ184内のCbビット20
0にコピーされる。これによって、投機分岐b222内
の命令が実行される前にCビット192のコピーまたは
レコードが保存される。
【0033】投機分岐a212が解決され、分岐a21
4命令が誤って実行されたと決定された場合、Caビッ
ト198が設定されているCRリネーム・バッファ18
4は、それらのCaビット198をCビット192にコ
ピーし戻して、CRリネーム・テーブル170が分岐a
212の直前の状態に復元されるようにする。この時点
で、分岐b(第2の分岐)も取られている場合、分岐b
222内の命令に使用されたCRリネーム・バッファ1
84は無効にされる。命令経路210内のすべての命令
に関連するCRリネーム・バッファ184が完了した場
合、分岐b222の投機分岐に応答して、分岐b222
内の命令に関連するCRリネーム・バッファ184内の
Cビット192を記録するためにCaビット198を自
由に使用できることに留意されたい。
【0034】同様にして、Uaビット202とUbビッ
ト204を使用して、a分岐214またはb分岐222
の投機命令経路内で投機実行が開始されるサイクル中
に、すべての現行Uビット194を格納することができ
る。事後的に分岐aまたは分岐bが誤って実行されたと
決定された場合には、Uaビット202またはUbビッ
ト204からUビット194にビットがコピーし戻され
る。これによって、CRリネーム・テーブル170は命
令が投機実行される前の状態に戻される。さらに、非投
機経路内で命令が完了した場合、かかる命令に関連する
CRリネーム・バッファ184は復元されない。なぜな
ら、完了の時点でUaビット202またはUbビット2
04でリセットされたゼロがUビット194にコピーし
戻され、そしてUビット194内のゼロによってCRリ
ネーム・バッファ184が使用可能であることが示され
るからである。
【0035】図5には、本発明の方法およびシステムに
従って、CRリネーム・テーブル170内のCRリネー
ム・バッファ184にデータを入力するプロセスの高水
準フローチャートが示されている。図示のように、この
プロセスは、ブロック300で開始した後、ブロック3
02に進む。スーパースケーラ・データ処理システム1
00(図1)内で命令がディスパッチされると、ブロッ
ク302で、ディスパッチャ116がディスパッチされ
る各命令に命令ID(IID)を割り当てる。その後、
ブロック304で、ディスパッチされた命令がCR変更
命令であるか否かを決定する。ディスパッチされた命令
がCR変更命令でない場合、ブロック306で、ディス
パッチされた命令を投機実行するか否かを決定する。命
令を投機実行しない場合、ブロック306からのNO分
岐によって、ブロック302に戻る。命令を投機実行す
る場合は、ブロック308で、すべての現行Uビット1
94(すなわち、まだ完了していない命令に現在関連し
ているCRリネーム・バッファ184内のすべてのUビ
ット)をUaビット202(図2)に保存する。その
後、ブロック302で、他の命令をディスパッチする。
【0036】再びブロック304を参照すると、ディス
パッチされた命令がCR変更命令である場合、ブロック
310で、現行バッファ・ポインタを使用して、そのデ
ィスパッチされた命令に選択されたCRリネーム・バッ
ファ184を割り当てる。かかる現行バッファ・ポイン
タは、条件コード割当て論理回路176(図2)で維持
することができる。本実施例では、現行バッファ・ポイ
ンタは、次に使用可能なCRリネーム・バッファ184
を指す。条件コード割当て論理回路176は、ディスパ
ッチ・ユニット116に対して、特定の1サイクルで使
用可能なCRリネーム・バッファ184の数に関する情
報も提供し、1サイクルでディスパッチすることができ
るCR変更命令の数をディスパッチ・ユニット116が
決定できるようにする。
【0037】次に、ブロック312で、ディスパッチさ
れた命令の命令IDおよび条件レジスタ(CR)宛先デ
ータを、命令IDフィールド186および宛先フィール
ド188(図2)にそれぞれ格納する。また、Uビット
194と現行ビット(Cビット)192も設定する。U
ビット194は、その関連するCRリネーム・バッファ
184が現在、まだ「完了」していないCR変更命令に
割り当てられていることを示す。Cビット192は、関
連するCR変更命令が、特定のCRフィールド152を
変更する最後のCR変更命令であったことを示す。最後
に、終了ビット(Fビット)196をリセットして、C
Rデータ・フィールド190内のデータがまだ有効では
なく、関連するCR変更命令の「終了」結果を反映して
いないことを示す。
【0038】次に、ブロック314で、ディスパッチさ
れた命令を投機実行するか否かを決定する。命令を投機
実行しない場合には、ブロック316で、同じCRフィ
ールド152を変更する複数のCR変更命令がCRリネ
ーム・テーブル170内の2つの異なるCRリネーム・
バッファ184に割り当てられているか否かを決定す
る。同じCRフィールド152を変更する複数のCR変
更命令が、異なるCRリネーム・バッファ184に割り
当てられている場合、ブロック318で、より古い命令
IDを有するCRリネーム・バッファ184内のCビッ
ト192(図2)をクリアする。その後のブロック32
0で、より新しい命令IDを有する新たにディスパッチ
された命令に関連するCRリネーム・バッファ184内
にCビット192を設定する。これによって、1つの非
投機命令をディスパッチした結果としてのCRリネーム
・テーブル170へのデータ入力プロセスが終了する。
1サイクルに(すなわち一度に)複数の命令をディスパ
ッチする場合、あたかもそれらの命令が一度に1つずつ
ディスパッチされて、図5のプロセスが行われたかのよ
うに、データがCRリネーム・テーブル170に入力さ
れる。一旦、CRリネーム・テーブル170にデータが
入力されると、プロセスはブロック302に戻り、次の
命令をディスパッチする。
【0039】再びブロック316を参照すると、CRリ
ネーム・テーブル170内の同じCRフィールド152
を変更する複数のCR変更命令がない場合は、ブロック
316からのNO分岐によって、ブロック302に戻
り、次の命令をディスパッチする。
【0040】再びブロック314を参照すると、命令が
投機実行される場合は、より古いCR変更命令に関連す
るCRリネーム・バッファ184内のすべてのUビット
をそれぞれのUaビットの記憶場所202に保存し、新
たにディスパッチされた命令に関連するCRリネーム・
バッファ184にUビット194を設定する。したがっ
て、CRリネーム・テーブル170にデータを入力する
ときに、図4の分岐a214のような投機的に予測され
た分岐が正しい命令分岐となるものとみなす。正しい命
令分岐ではないと決定された場合、図4の投機分岐a2
12のような投機分岐の解決と同時に、前にUaビット
202にコピーされたUビットが復元される。
【0041】その後のブロック324で、同じCRフィ
ールド152を変更する複数のCR変更命令がCRリネ
ーム・テーブル170内の2つの異なるCRリネーム・
バッファ184に割り当てられているか否かを決定す
る。特定のCRフィールドを変更するCR変更命令が、
CRリネーム・テーブル170内のCRリネーム・バッ
ファ184に1つしか割り当てられていない場合、ブロ
ック324からNO分岐を介してブロック302に戻
り、他の命令がディスパッチされる。しかし、複数のC
R変更命令が同じCRフィールド152を変更する場合
は、ブロック326で、より古い命令IDが入っている
CRリネーム・バッファ184に関連するCビット19
2をクリアする。その後のブロック328で、より古い
命令に関連するCaビット198を設定する。次のブロ
ック320で、より新しい命令IDが入っているCRリ
ネーム・バッファ184にCビット192を設定する。
これで、投機実行命令をディスパッチするときのCRリ
ネーム・テーブル170の入力手続きが完了する。
【0042】図6には、本発明の方法およびシステムに
従ってCRリネーム・バッファ170内に条件コード・
データ(前述のCRデータと同義。以下「条件コード・
ビット」とも称す。)を入力する高水準フローチャート
が示されている。図示のように、このプロセスはブロッ
ク340で開始した後、ブロック342で、CR変更命
令を実行する実行ユニットのうちの1つでCR変更命令
が「終了」したか否かを決定する。CR変更命令が終了
していない場合、ブロック342からのNO分岐によっ
て示されているように、新しい条件コード・データを待
ち続ける。CR変更命令の実行が終了した場合、そのC
R変更命令を終了した実行ユニットから受け取った条件
コード・ビットを保管する。図2に示されているよう
に、これらの条件コード・ビットはCRデータ・フィー
ルド190内に保管することができる。かかる条件コー
ド・ビット、すなわちCRデータは、図3を参照しなが
ら前述したように、CR変更命令の実行の結果を反映す
る。
【0043】次のブロック346で、終了ビット(Fビ
ット)196(図2)を設定して、CRデータ・フィー
ルド190内のCRデータが有効であって、投機分岐の
解決または他の実行ユニット内のその他のCRデータ依
存命令の解決のために使用可能であることを示す。これ
でCRリネーム・テーブル170内にCRデータを格納
するプロセスが完了する。
【0044】図7には、本発明の方法およびシステムに
従ってCR変更命令を「完了」するプロセスを示す高水
準フローチャートが示されている。図示のように、この
プロセスはブロック350で開始した後、ブロック35
2で、CR変更命令の実行が完了するようにスケジュー
ルされているか否かを決定する。CR変更命令を完了す
るようにスケジュールされていない場合、ブロック35
2からのNO分岐によって示されているようにCR変更
命令の完了のスケジュールを待機する。CR変更命令の
完了がスケジュールされている場合、ブロック354
で、同じサイクルに同じCRフィールドを変更する複数
のCR変更命令の完了がスケジュールされているか否か
を決定する。
【0045】CRフィールドを変更する複数の命令の完
了がスケジュールされている場合、ブロック356で、
Cビット192が設定されているCRリネーム・バッフ
ァ184から条件コード・データを選択する。このステ
ップで、CRリネーム・テーブル170で示されている
特定のCRフィールド152のために最新のCRデータ
を選択する。次のブロック358で、この選択した条件
コード・データを、宛先フィールド188内のデータに
よって指定されているCRフィールド152に保管す
る。このステップで、CRデータが、CRリネーム・バ
ッファ184から指定されたCRフィールド152に転
送される。
【0046】再びブロック354を参照すると、同じサ
イクルに同じCRフィールド152を変更する複数の命
令の完了がスケジュールされていない場合、ブロック3
60で、CRデータ・フィールド190から宛先フィー
ルド188内のデータによって指定されているCRフィ
ールド152に条件コード・データを保管または転送す
る。このCRデータの転送は、マルチプレクサ172を
制御してCRデータを指定されたCRフィールド152
に送る信号を生成するマルチプレクサ制御回路174
(図2)を使用して行われる。
【0047】最後に、ブロック362で、CRデータを
CRフィールド152に転送した各CRリネーム・バッ
ファ184のUビット194、Cビット192、および
Fビット196をリセットする。その後、ブロック35
2に戻って他のCR変更命令の完了のスケジュールを待
つ。
【0048】図8には、本発明の方法およびシステムに
従った、予測誤り命令経路で投機実行された命令に関連
するCRリネーム・バッファ184をパージまたは無効
化するプロセスの高水準フローチャートが示されてい
る。図示のように、このプロセスはブロック370で開
始した後、ブロック372で、投機実行経路が解決され
たか否かを決定する。投機実行経路が解決されていない
場合、ブロック372からのNO分岐によって示されて
いるようにその解決を待機する。投機実行経路が解決さ
れた場合、ブロック374で、実行された経路が正しい
経路であるか否かが決定される。正しい命令経路が実行
された場合、ブロック374からのYES分岐によって
示されているように、ブロック372に戻って次の投機
実行経路が解決されるのを待つ。
【0049】投機実行経路が誤って実行された場合、ブ
ロック376で、予測誤り投機実行経路中に関連するC
R変更命令がディスパッチされたことを示すUビット1
94すなわちUaビットまたはUbビット202〜20
4を有するすべてのCRリネーム・バッファ184を見
つけてパージまたは無効化する。本実施例では、図4に
示すように、Caビット198およびCbビット20
0、並びにUaビット202およびUbビット204は
2つの予測誤り命令分岐の回復をサポートする。たとえ
ば、分岐aが予測誤りであった場合、プロセスはUaビ
ット202が設定されていないすべてのCRリネーム・
バッファ184をクリアする。なぜなら、他のすべての
CRリネーム・バッファ184が予測誤り命令分岐a中
にディスパッチされた命令に関連しているからである。
同様に、分岐bが予測誤りであった場合、予測誤り分岐
b中にディスパッチされたCR変更命令に関連するCR
リネーム・バッファ184がクリアされる。a分岐とb
分岐が両方とも予測誤りであった場合、CRリネーム・
テーブル170が、分岐aと分岐bの両方の命令がディ
スパッチされる前の条件に復元される。
【0050】最後の図9には、本発明の方法およびシス
テムに従った、CRリネーム・テーブル170に格納さ
れたCRデータを使用するプロセスの高水準フローチャ
ートが示されている。図示のように、プロセスは390
で開始した後、392で、CRリネーム・バッファ18
4に格納されているCRデータに依存する命令を実行中
であるか否かを決定する。かかる命令を「CRデータ依
存命令」と呼ぶことがある。実行中のCRデータ依存命
令がない場合、ブロック392からのNO分岐が示すよ
うに、かかるCRデータ依存命令を待機する。
【0051】CRデータ依存命令が実行中の場合、ブロ
ック394で、CR処理ユニット117(図1)はCR
リネーム・テーブル170内の宛先データと特定の実行
ユニットからの所望のCRデータの要求に対する応答と
の間で一致するものがあるか否かを探索する。次のブロ
ック396で、CRリネーム・テーブル170の宛先フ
ィールド188に所望の宛先データがあるか否かを決定
する。CRリネーム・テーブル170に所望の宛先デー
タが見つからない場合、ブロック396からのNO分岐
が示すように、CRリネーム・テーブル170の探索を
続ける。該当する宛先データが一致する場合、ブロック
398で、CRデータが指定されたCRフィールド15
2の最新のデータであることを示すCビット192がC
Rリネーム・バッファ184に設定されているか否かを
決定する。Cビット192が設定されておらず、その特
定の宛先のCRデータが最新でないことを示している場
合、ブロック398からのNO分岐が示すように、CR
リネーム・テーブル170の探索を続ける。
【0052】Cビットが、CRデータが指定宛先の最新
データであることを示している場合、ブロック400
で、CRデータ・フィールド190内のデータが「終了
済み」のCR変更命令の結果を反映しているという点で
有効であることを示す、Fビット196が設定されてい
るか否かを決定する。Fビット196が、CRデータが
有効ではないことを示している場合、ブロック402
で、CRリネーム・テーブル170は要求側実行ユニッ
トに有効な条件コード・ビットを渡すことができない。
しかし、条件コード・データが有効であるとFビット1
96が示す場合には、ブロック404で、CRリネーム
・テーブル170は要求側実行ユニットに有効な条件デ
ータを提供する。このような条件コード・データは、分
岐処理ユニット102(図1)などの実行ユニットに送
って条件分岐命令を解決するか、または他の何らかの実
行ユニットに送ってCRデータ依存命令を終了させるか
することができる。
【図面の簡単な説明】
【図1】本発明の好ましい実施例に従った、スーパース
ケーラ・データ処理システムを示す図である。
【図2】本発明の方法およびシステムに従った、条件レ
ジスタ処理ユニットの高水準ブロック図である。
【図3】条件レジスタ・データを格納するための条件レ
ジスタ・フィールドを有する、公知の条件レジスタを示
す図である。
【図4】本発明の方法およびシステムに従って実行する
ことができる投機命令経路のレベルを示すフローチャー
トである。
【図5】本発明の方法およびシステムに従った、条件レ
ジスタ・リネーム・テーブル内の条件レジスタ・リネー
ム・バッファにデータを入力するプロセスを示す高水準
フローチャートである。
【図6】本発明の方法およびシステムに従った、条件レ
ジスタ・リネーム・バッファに条件コード・データを入
力するプロセスを示す高水準フローチャートである。
【図7】本発明の方法およびシステムによる、条件レジ
スタ変更命令を完了するプロセスを示す高水準フローチ
ャートである。
【図8】本発明の方法およびシステムに従った、予測誤
り命令経路で投機実行された命令に関連する条件レジス
タ・リネーム・バッファをパージまたは無効化するプロ
セスを示す高水準フローチャートである。
【図9】本発明の方法およびシステムに従った、条件レ
ジスタ・リネーム・テーブルに格納された条件レジスタ
・データを使用するプロセスを示す高水準フローチャー
トである。
【符号の説明】
116 ディスパッチ・ユニット 117 条件レジスタ処理ユニット 132 完了ユニット 150 条件レジスタ 152 条件レジスタ・フィールド 170 条件レジスタ・リネーム・テーブル 172 マルチプレクサ 174 マルチプレクサ制御回路 176 条件コード割当て論理回路 178 条件コード状況制御回路 186 命令IDフィールド 188 宛先フィールド 190 条件レジスタ・データ・フィールド
フロントページの続き (56)参考文献 特開 平6−309165(JP,A) 特開 平4−195429(JP,A) 特開 昭58−96345(JP,A) Mayan Moudfill、外2 名、”Register renami ng and Dynamic Spe culation:an Altern ative Approach”、IE EE、1072−4451/93、1993年、p. 202−213 (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】条件レジスタ・データを格納するための条
    件レジスタを有する条件レジスタ処理ユニットと、複数
    の条件レジスタ・リネーム・バッファを有する条件レジ
    スタ・リネーム・テーブルとを備え、前記条件レジスタ
    ・リネーム・バッファの各々が、命令IDフィールド、
    条件レジスタ・データ・フィールド、現行ビット・フィ
    ールドおよび終了ビット・フィールドを含み、さらに前
    記条件レジスタ処理ユニットに結合された複数の実行ユ
    ニットと、前記条件レジスタ処理ユニットに結合された
    分岐処理ユニットと、前記条件レジスタ処理ユニットに
    結合された命令ディスパッチャとを備え、前記命令ディ
    スパッチャが、命令IDを条件レジスタ変更命令の各々
    に割り当てるとともに、複数の条件レジスタ変更命令を
    前記複数の実行ユニットに同時にディスパッチするよう
    に構成されているスーパースケーラ・データ処理システ
    ムにおいて、前記条件レジスタ変更命令の実行に応答し
    て条件レジスタ・データを一時的にバッファリングする
    方法であって、 (a)前記複数の実行ユニットに対する前記複数の条件
    レジスタ変更命令のディスパッチに応答して、前記複数
    の条件レジスタ変更命令の各々に対し一の条件レジスタ
    ・リネーム・バッファをそれぞれ割り当て、当該条件レ
    ジスタ変更命令に割り当てられた前記命令IDを、当該
    条件レジスタ変更命令に対し割り当てられた条件レジス
    タ・リネーム・バッファの前記命令IDフィールド内
    にそれぞれ格納するとともに、当該割り当てられた条件
    レジスタ・リネーム・バッファ内の前記現行ビット・フ
    ィールド内に一の現行ビットを設定するステップと、 (b)前記複数の実行ユニット内で前記複数の条件レジ
    スタ変更命令を実行するステップと、 (c)前記複数の条件レジスタ変更命令の各々の実行に
    応答して、当該条件レジスタ変更命令の実行結果を反映
    するように、当該条件レジスタ変更命令に対し割り当て
    られた前記条件レジスタ・リネーム・バッファ内の前記
    条件レジスタ・デ ータ・フィールド内に条件レジスタ・
    データを設定するステップと、 (d)前記割り当て られた条件レジスタ・リネーム・バ
    ッファ内の前記終了ビット・フィールド内に一の終了
    ットを設定して、当該割り当てられた条件レジスタ・リ
    ネーム・バッファ内の前記条件レジスタ・データが有効
    であることを示すステップと、 ()前記条件レジスタ変更命令の完了に応答して、前
    記複数の条件レジスタ・リネーム・バッファのうちの選
    択された1つから前記条件レジスタ・データを前記条件
    レジスタに転送するステップとを含むことを特徴とす
    る、前記方法。
  2. 【請求項2】前記条件レジスタが条件レジスタ・データ
    を格納するための複数の条件レジスタ・フィールドを含
    み、前記条件レジスタ・リネーム・バッファの各々が前
    記複数の条件レジスタ・フィールドのうちの1つを指定
    する宛先データを格納するための宛先フィールドを含
    み、前記ステップ(a)が、前記宛先データを前記割り
    当てられた条件レジスタ・リネーム・バッファ内の前記
    宛先フィールド内に格納するステップを含むことを特徴
    とする、請求項1記載の方法。
  3. 【請求項3】前記ステップ()が、前記選択された1
    つの条件レジスタ・リネーム・バッファからの前記条件
    レジスタ・データを、当該選択された1つの条件レジス
    タ・リネーム・バッファ内の前記宛先フィールド内にあ
    る前記宛先データによって指定された前記複数の条件レ
    ジスタ・フィールドのうちの1つに転送するステップを
    含むことを特徴とする、請求項2記載の方法。
  4. 【請求項4】一の条件レジスタ変更命令の実行結果を反
    映する選択された1つの条件レジスタ・リネーム・バッ
    ファ内の所望の条件レジスタ・データへの依存性を有す
    る一の条件レジスタ・データ依存命令の実行に応答し
    て、当該所望の条件レジスタ・データに関連する宛先デ
    ータと前記複数の条件レジスタ・リネーム・バッファ内
    の前記宛先フィールド内に格納されている前記宛先デー
    タとの突き合わせを行うことにより、前記条件レジスタ
    ・リネーム・テーブル内で当該条件レジスタ変更命令の
    行結果を反映する当該所望の条件レジスタ・データを
    探索するステップと、 前記所望の条件レジスタ・データが特定の条件レジスタ
    ・リネーム・バッファ内にある場合には、当該特定の条
    件レジスタ・リネーム・バッファ内に格納されている前
    記条件レジスタ・データを使用して前記条件レジスタ・
    データ依存命令の実行を終了するステップとをさらに含
    むことを特徴とする、請求項2又は3記載の方法。
  5. 【請求項5】前記条件レジスタ・リネーム・バッファの
    各々が、当該条件レジスタ・リネーム・バッファに割り
    当てられた条件レジスタ変更命令が投機的に実行中であ
    ることを示す投機実行ビットを含み、前記条件レジスタ
    ・データが予測誤り命令経路内の投機的に実行された命
    令の結果を反映していることを示す前記投機実行ビット
    を有する前記条件レジスタ・リネーム・バッファ内の前
    記条件レジスタ・データを無効化するステップをさらに
    含む、請求項1記載の方法。
  6. 【請求項6】条件レジスタ・データを格納するための条
    件レジスタを有する条件レジスタ処理ユニットと、複数
    の条件レジスタ・リネーム・バッファを有する条件レジ
    スタ・リネーム・テーブルとを備え、前記条件レジスタ
    ・リネーム・バッファの各々が、命令IDフィールド、
    条件レジスタ・データ・フィールド、現行ビット・フィ
    ールドおよび終了ビット・フィールドを含み、さらに前
    記条件レジスタ処理ユニットに結合された複数の実行ユ
    ニットと、前記条件レジスタ処理ユニットに結合された
    分岐処理ユニットと、前記条件レジスタ処理ユニットに
    結合された命令ディスパッチャとを備え、前記命令ディ
    スパッチャが、命令IDを条件レジスタ変更命令の各々
    に割り当てるとともに、複数の条件レジスタ変更命令を
    前記複数の実行ユニットに同時にディスパッチするよう
    に構成されているスーパースケーラ・データ処理システ
    ムにおいて、前記条件レジスタ変更命令の実行に応答し
    て条件レジスタ・データを一時的にバッファリングする
    システムであって、 (a)前記複数の実行ユニットに対する前記複数の条件
    レジスタ変更命令のディスパッチに応答して、前記複数
    の条件レジスタ変更命令の各々に対し一の条件レジスタ
    ・リネーム・バッファをそれぞれ割り当て、当該条件レ
    ジスタ変更命令 割り当てられた前記命令IDを、当該
    条件レジスタ変更命令に対し割り当てられた条件レジス
    タ・リネーム・バッファの前記命令IDフィールド内に
    それぞれ格納するとともに、当該割り当てられた条件レ
    ジスタ・リネーム・バッファ内の前記現行ビット・フィ
    ールド内に一の現行ビットを設定するための手段と、 (b)前記複数の実行ユニット内で前記複数の条件レジ
    スタ変更命令を実行するための手段と、 (c)前記複数の条件レジスタ変更命令の各々の実行に
    応答して、当該条件レジスタ変更命令の実行結果を反映
    するように、当該条件レジスタ変更命令に対し割り当て
    られた前記条件レジスタ・リネーム・バッファ内の前記
    条件レジスタ・データ・フィールド内に条件レジスタ・
    データを設定する手段と、 (d)前記割り当てられた条件レジスタ・リネーム・バ
    ッファ内の前記終了ビット・フィールド内に一の終了
    ットを設定して、当該割り当てられた条件レジスタ・リ
    ネーム・バッファ内の前記条件レジスタ・データが有効
    であることを示すための手段と、 ()前記条件レジスタ変更命令の完了に応答して、前
    記複数の条件レジスタ・リネーム・バッファのうちの選
    択された1つから前記条件レジスタ・データを前記条件
    レジスタに転送するための手段とを備えることを特徴と
    する、前記システム。
JP13485796A 1995-06-07 1996-05-29 条件レジスタ・データを一時的にバッファリングする方法およびシステム Expired - Fee Related JP3154660B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/480,999 US5974240A (en) 1995-06-07 1995-06-07 Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US480999 1995-06-07

Publications (2)

Publication Number Publication Date
JPH096611A JPH096611A (ja) 1997-01-10
JP3154660B2 true JP3154660B2 (ja) 2001-04-09

Family

ID=23910180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13485796A Expired - Fee Related JP3154660B2 (ja) 1995-06-07 1996-05-29 条件レジスタ・データを一時的にバッファリングする方法およびシステム

Country Status (3)

Country Link
US (1) US5974240A (ja)
JP (1) JP3154660B2 (ja)
KR (1) KR100242403B1 (ja)

Families Citing this family (21)

* 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
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
US6085337A (en) * 1998-09-21 2000-07-04 Infineon Technologies North America Corp. Method and system for reliably indicating test results during a self-check operation
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
JP3830683B2 (ja) * 1998-12-28 2006-10-04 富士通株式会社 Vliwプロセッサ
GB2352308B (en) * 1999-07-21 2004-06-30 Element 14 Ltd Accessing a test condition
GB2352536A (en) * 1999-07-21 2001-01-31 Element 14 Ltd Conditional instruction execution
KR100319517B1 (ko) * 1999-07-22 2002-01-05 이승남 원심분리기
JP2001092657A (ja) * 1999-09-22 2001-04-06 Toshiba Corp 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
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
US6959377B2 (en) * 2002-03-20 2005-10-25 Sun Microsystems, Inc. Method and system for managing registers
JP3816845B2 (ja) * 2002-07-05 2006-08-30 富士通株式会社 プロセッサ及び命令制御方法
JP3854200B2 (ja) 2002-07-05 2006-12-06 富士通株式会社 プロセッサ及び命令制御方法
US7406587B1 (en) * 2002-07-31 2008-07-29 Silicon Graphics, Inc. Method and system for renaming registers in a microprocessor
US7299343B2 (en) * 2002-09-27 2007-11-20 Verisilicon Holdings (Cayman Islands) Co. Ltd. System and method for cooperative execution of multiple branching instructions in a processor
US7698539B1 (en) * 2003-07-16 2010-04-13 Banning John P System and method of instruction modification
FR2867872A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
FR2867873A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
US20080077777A1 (en) * 2006-09-25 2008-03-27 Arm Limited Register renaming for instructions having unresolved condition codes
CN101794214B (zh) 2009-02-04 2013-11-20 世意法(北京)半导体研发有限责任公司 使用多块物理寄存器映射表的寄存器重命名系统及其方法
US9329870B2 (en) * 2013-02-13 2016-05-03 International Business Machines Corporation Extensible execution unit interface architecture with multiple decode logic and multiple execution units

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US5371862A (en) * 1991-02-27 1994-12-06 Kabushiki Kaisha Toshiba Program execution control system
US5261071A (en) * 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
KR0122528B1 (ko) * 1993-01-08 1997-11-20 윌리엄 티.엘리스 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템
TW242673B (ja) * 1993-08-18 1995-03-11 Ibm
US5500943A (en) * 1993-11-02 1996-03-19 Motorola, Inc. Data processor with rename buffer and FIFO buffer for in-order instruction completion
US5463745A (en) * 1993-12-22 1995-10-31 Intel Corporation Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
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
US5524263A (en) * 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US5517657A (en) * 1994-03-30 1996-05-14 Intel Corporation Segment register file read and write pipeline
DE69506623T2 (de) * 1994-06-03 1999-07-22 Motorola Inc Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb
US5535346A (en) * 1994-07-05 1996-07-09 Motorola, Inc. Data processor with future file with parallel update and method of operation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Mayan Moudfill、外2名、"Register renaming and Dynamic Speculation:an Alternative Approach"、IEEE、1072−4451/93、1993年、p.202−213

Also Published As

Publication number Publication date
JPH096611A (ja) 1997-01-10
US5974240A (en) 1999-10-26
KR100242403B1 (ko) 2000-08-01
KR970002599A (ko) 1997-01-28

Similar Documents

Publication Publication Date Title
JP3154660B2 (ja) 条件レジスタ・データを一時的にバッファリングする方法およびシステム
US6356918B1 (en) Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
JP3014773B2 (ja) プロセサアーキテクチャ
JP2937485B2 (ja) スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
JP3093639B2 (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
US7711929B2 (en) Method and system for tracking instruction dependency in an out-of-order processor
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US10198267B2 (en) Register renaming using snapshot buffers
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US8209517B1 (en) Method and apparatus for enhancing scheduling in an advanced microprocessor
EP1145110B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
US20160350115A1 (en) Register renaming
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
JPH0668726B2 (ja) レジスタ管理システム
EP0495165A2 (en) Overlapped serialization
US6338134B1 (en) Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data
US6003126A (en) Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
JPH10154073A (ja) データ依存性を管理する装置及び方法
US5764970A (en) Method and apparatus for supporting speculative branch and link/branch on count instructions
JP3093673B2 (ja) リネーム・レジスタを割り付ける方法及びプロセッサ
KR0122527B1 (ko) 슈퍼스칼라 프로세서 시스템에서 비순차적 명령어의 디스패치 및 실행을 위한 방법 및 시스템
US5943494A (en) Method and system for processing multiple branch instructions that write to count and link registers
US5841999A (en) Information handling system having a register remap structure using a content addressable table

Legal Events

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