JPH096611A - データ処理システムにおけるデータをバッファリングする方法およびシステム - Google Patents

データ処理システムにおけるデータをバッファリングする方法およびシステム

Info

Publication number
JPH096611A
JPH096611A JP8134857A JP13485796A JPH096611A JP H096611 A JPH096611 A JP H096611A JP 8134857 A JP8134857 A JP 8134857A JP 13485796 A JP13485796 A JP 13485796A JP H096611 A JPH096611 A JP H096611A
Authority
JP
Japan
Prior art keywords
condition register
data
instruction
condition
rename
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
JP8134857A
Other languages
English (en)
Other versions
JP3154660B2 (ja
Inventor
Shin Chan Kin
キン・シン・チャン
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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)

Abstract

(57)【要約】 (修正有) 【課題】 データ処理システム内の非プログラム順序お
よび投機命令実行を容易にする。 【解決手段】 実行ユニットへの条件レジスタ変更命令
のディスパッチに応答して、前記条件レジスタ変更命令
に条件レジスタ・リネーム・バッファが関連づけられ
る。次に、その命令が実行ユニットで実行される。条件
レジスタ変更命令の実行に続いて、前記命令実行の結果
を反映するように条件レジスタ・リネーム・バッファに
条件レジスタ・データが設定される。さらに、その条件
レジスタ・データが有効であることを示すように標識が
設定される。条件レジスタ変更命令の完了時点で、条件
レジスタ・リネーム・バッファからその条件レジスタ・
データがアーキテクチャ条件レジスタに転送され、それ
によって、各条件レジスタ変更命令を完了させるために
条件レジスタが使用可能になる前に条件レジスタ条件レ
ジスタ変更命令のディスパッチ、実行、および終了を行
うことが可能になる。

Description

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

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】条件レジスタ・データを格納する条件レジ
    スタと、複数の実行ユニットと、前記条件レジスタ変更
    命令を前記複数の実行ユニットにディスパッチする命令
    ディスパッチャとを備えるデータ処理システムにおい
    て、前記条件レジスタ変更命令の実行に応答して前記デ
    ータ処理システム内の条件レジスタ・データに条件レジ
    スタ・データを一時的にバッファリングする方法であっ
    て、 前記複数の実行ユニットのうちの選択された1つに対す
    る前記条件レジスタ変更命令のディスパッチに応答し
    て、前記条件レジスタ変更命令に条件レジスタ・リネー
    ム・バッファを関連づけるステップと、 前記複数の実行ユニットのうちの選択された1つ内で前
    記条件レジスタ変更命令を実行するステップと、 前記条件レジスタ変更命令の実行に応答して、前記条件
    レジスタ変更命令の結果を反映するように前記条件レジ
    スタ・リネーム・バッファ内に条件レジスタ・データを
    設定し、前記条件レジスタ・データが有効であることを
    示すステップと、 前記条件レジスタ変更命令の完了に応答して、前記条件
    レジスタ・リネーム・バッファから前記条件レジスタ・
    データを前記条件レジスタに転送するステップとを含
    み、前記条件レジスタ変更命令を完了するために前記条
    件レジスタが使用可能になる前に前記条件レジスタ変更
    命令のディスパッチ、実行、および終了を行うことがで
    きることを特徴とする方法。
  2. 【請求項2】前記命令ディスパッチャが前記ディスパッ
    チされる各命令に命令IDを関連づけ、前記データ処理
    システムが複数の前記条件レジスタ・リネーム・バッフ
    ァを有する条件レジスタ・リネーム・テーブルを備え、
    前記条件レジスタ・リネーム・バッファがそれぞれ命令
    IDフィールドと条件レジスタ・データ・フィールドを
    含み、前記条件レジスタ変更命令に条件レジスタ・リネ
    ーム・バッファを関連づける前記ステップが、前記条件
    レジスタ変更命令に関連づけられた前記命令IDを、前
    記条件レジスタ・リネーム・テーブル内の前記条件レジ
    スタ・リネーム・バッファのうちの1つの条件レジスタ
    ・リネーム・バッファの前記命令IDフィールドに格納
    するステップを含むことを特徴とする、請求項1に記載
    の、データ処理システムにおいて条件レジスタ・データ
    を一時的にバッファリングする方法。
  3. 【請求項3】前記データ処理システムにおける前記条件
    レジスタが条件レジスタ・データを格納する複数の条件
    レジスタ・フィールドを含み、前記条件レジスタ・リネ
    ーム・テーブル内の前記条件レジスタ・リネーム・バッ
    ファがそれぞれ、前記複数の条件レジスタ・フィールド
    のうちの1つの条件レジスタ・フィールドを指定する宛
    先データを格納する宛先フィールドを含み、前記条件レ
    ジスタ変更命令に条件レジスタ・リネーム・バッファを
    関連づける前記ステップが、前記命令IDを前記条件レ
    ジスタ・リネーム・バッファの前記命令IDフィールド
    に格納するステップと、前記宛先データを前記条件レジ
    スタ・リネーム・バッファの前記宛先フィールドに格納
    するステップとを含むことを特徴とする、請求項2に記
    載の、データ処理システムにおいて条件レジスタ・デー
    タを一時的にバッファリングする方法。
  4. 【請求項4】前記条件レジスタ・リネーム・バッファか
    ら前記条件レジスタ・データを前記条件レジスタに転送
    する前記ステップが、前記条件レジスタ・リネーム・バ
    ッファから前記条件レジスタ・データを、前記宛先フィ
    ールド内の前記宛先データによって指定された前記条件
    レジスタ内の前記複数のフィールドのうちの1つのフィ
    ールドに転送するステップ含むことを特徴とする、請求
    項3に記載の、データ処理システムにおいて条件レジス
    タ・データを一時的にバッファリングする方法。
  5. 【請求項5】前記条件レジスタ・リネーム・テーブルが
    終了ビットを含み、前記条件レジスタ・データが有効で
    あることを示す前記ステップが、前記条件レジスタ・デ
    ータが前記条件レジスタ変更命令の前記結果を反映して
    いることを示すように前記終了ビットを設定するステッ
    プを含むことを特徴とする、請求項2に記載のデータ処
    理システムにおいて条件レジスタ・データを一時的にバ
    ッファリングする方法。
  6. 【請求項6】前記複数の実行ユニットのうちの前記選択
    された1つの実行ユニットで前記条件レジスタ変更命令
    を実行する前記ステップが、浮動小数点実行ユニット内
    で浮動小数点加算命令を実行するステップを含むことを
    特徴とする、請求項1に記載のデータ処理システムにお
    いて条件レジスタ・データを一時的にバッファリングす
    る方法。
  7. 【請求項7】前記複数の実行ユニットのうちの前記選択
    された1つの実行ユニットで前記条件レジスタ変更命令
    を実行する前記ステップが、固定小数点実行ユニット内
    で整数乗算命令を実行するステップを含むことを特徴と
    する、請求項1に記載のデータ処理システムにおいて条
    件レジスタ・データを一時的にバッファリングする方
    法。
  8. 【請求項8】前記条件レジスタ変更命令の実行の結果を
    反映する前記条件レジスタ・リネーム・バッファ内の前
    記条件レジスタ・データへの依存関係を有する条件レジ
    スタ・データ依存命令の実行に応答して、前記条件レジ
    スタ・リネーム・テーブルで前記条件レジスタ変更命令
    の実行の結果を反映する条件レジスタ・データを探索す
    るステップと、 前記条件レジスタ・リネーム・バッファ内に前記条件レ
    ジスタ・データがある場合には、前記条件レジスタ・リ
    ネーム・バッファに格納されている前記条件レジスタ・
    データを使用して前記依存関係を解決し、前記条件レジ
    スタ・データ依存命令の前記実行を終了するステップと
    をさらに含み、前記条件レジスタ内の前記条件レジスタ
    ・データが前記条件レジスタ変更命令の前記結果を反映
    する前に前記条件レジスタ・データ依存命令を終了させ
    ることを特徴とする、請求項2に記載のデータ処理シス
    テムにおいて条件レジスタ・データを一時的にバッファ
    リングする方法。
  9. 【請求項9】前記データ処理システムにおける前記条件
    レジスタが条件レジスタ・データを格納する複数の条件
    レジスタ・フィールドを含み、前記条件レジスタ・リネ
    ーム・テーブル内の前記複数の条件レジスタ・リネーム
    ・バッファがそれぞれ、前記複数の条件レジスタ・リネ
    ーム・バッファのうちの1つが、前記複数の条件レジス
    タ・フィールドのうちの選択された1つを変更する最も
    最近にディスパッチされた条件レジスタ変更命令に関連
    づけられていることを示す現行ビットを含み、前記条件
    レジスタ・リネーム・テーブルで前記条件レジスタ変更
    命令の実行結果を反映する条件レジスタ・データを探索
    する前記ステップが、前記条件レジスタ・リネーム・テ
    ーブルで、前記条件レジスタ・データが前記複数の条件
    レジスタ・フィールドのうちの前記選択された1つを修
    正する前記最も最近にディスパッチされた条件レジスタ
    変更命令の実行の結果を反映していることを示すために
    設定された前記現行ビットが入っている条件レジスタ・
    リネーム・バッファ内の条件レジスタ・データを探索す
    るステップを含むことを特徴とする、請求項8に記載の
    データ処理システムにおいて条件レジスタ・データを一
    時的にバッファリングする方法。
  10. 【請求項10】前記条件レジスタ・リネーム・バッファ
    がそれぞれ、前記関連する条件レジスタ変更命令が投機
    実行中であることを示す投機実行ビットを含むことを特
    徴とし、前記条件レジスタ・データが予測誤り命令経路
    にある投機実行命令の結果を反映していることを示す前
    記投機実行ビットを有する前記条件レジスタ・リネーム
    ・バッファ内の前記条件レジスタ・データを無効化する
    ステップをさらに含む、請求項2に記載のデータ処理シ
    ステムにおいて条件レジスタ・データを一時的にバッフ
    ァリングする方法。
  11. 【請求項11】前記条件レジスタ・リネーム・バッファ
    のそれぞれが、前記条件レジスタ・リネーム・バッファ
    が有効バッファであることを示す使用ビットを含み、前
    記条件レジスタ・データが予測誤り命令経路にある投機
    実行命令の結果を反映していることを示す前記投機実行
    ビットを有する前記条件レジスタ・リネーム・バッファ
    内の前記条件レジスタ・データを無効化する前記ステッ
    プが、前記条件レジスタ・リネーム・バッファに前記使
    用ビットを設定して前記条件レジスタ・データが予測誤
    り命令経路にある投機実行命令の結果を反映しているこ
    とを示すステップ含む、請求項10に記載のデータ処理
    システムにおいて条件レジスタ・データを一時的にバッ
    ファリングする方法。
  12. 【請求項12】条件レジスタ・データを格納する条件レ
    ジスタと、複数の実行ユニットと、条件レジスタ変更命
    令を前記複数の実行ユニットにディスパッチする命令デ
    ィスパッチャとを備えるデータ処理システム内の条件レ
    ジスタ・データに、前記条件レジスタ変更命令の実行に
    応答してレジスタ・データを一時的にバッファリングす
    るシステムであって、 前記複数の実行ユニットのうちの選択された1つへの前
    記条件レジスタ変更命令のディスパッチに応答して、前
    記条件レジスタ変更命令に条件レジスタ・リネーム・バ
    ッファを関連づける手段と、 前記複数の実行ユニットのうちの前記選択された1つの
    実行ユニット内で前記条件レジスタ変更命令を実行する
    手段と、 前記条件レジスタ変更命令の結果を反映するように前記
    条件レジスタ・リネーム・バッファ内に条件レジスタ・
    データを設定する手段と、 前記条件レジスタ変更命令の実行に応答して、前記条件
    レジスタ・データが有効であることを示す手段と、 前記条件レジスタ変更命令の完了に応答して、前記条件
    レジスタ・リネーム・バッファから前記条件レジスタ・
    データを前記条件レジスタに転送する手段とを含み、前
    記条件レジスタ変更命令を完了するために前記条件レジ
    スタが使用可能になる前に前記条件レジスタ変更命令の
    ディスパッチ、実行、および終了を行うことができるこ
    とを特徴とするシステム。
  13. 【請求項13】前記命令ディスパッチャが前記ディスパ
    ッチされる各命令に命令IDを関連づけ、前記データ処
    理システムが複数の前記条件レジスタ・リネーム・バッ
    ファを有する条件レジスタ・リネーム・テーブルを備
    え、前記条件レジスタ・リネーム・バッファがそれぞれ
    命令IDフィールドと条件レジスタ・データ・フィール
    ドを含み、前記条件レジスタ変更命令に条件レジスタ・
    リネーム・バッファを関連づける前記手段が、前記条件
    レジスタ変更命令に関連づけられた前記命令IDを、前
    記条件レジスタ・リネーム・テーブル内の前記条件レジ
    スタ・リネーム・バッファのうちの1つの条件レジスタ
    ・リネーム・バッファの前記命令IDフィールドに格納
    する手段を含むことを特徴とする、請求項12に記載の
    条件レジスタ・データを一時的にバッファリングするシ
    ステム。
  14. 【請求項14】前記データ処理システムにおける前記条
    件レジスタが条件レジスタ・データを格納する複数の条
    件レジスタ・フィールドを含み、前記条件レジスタ・リ
    ネーム・テーブル内の前記条件レジスタ・リネーム・バ
    ッファがそれぞれ、前記複数の条件レジスタ・フィール
    ドのうちの1つの条件レジスタ・フィールドを指定する
    宛先データを格納する宛先フィールドを含み、前記条件
    レジスタ変更命令に条件レジスタ・リネーム・バッファ
    を関連づける前記手段が、前記命令IDを前記条件レジ
    スタ・リネーム・バッファの前記命令IDフィールドに
    格納する手段と、前記宛先データを前記条件レジスタ・
    リネーム・バッファの前記宛先フィールドに格納する手
    段とを含むことを特徴とする、請求項13に記載の条件
    レジスタ・データを一時的にバッファリングするシステ
    ム。
  15. 【請求項15】前記条件レジスタ・リネーム・バッファ
    から前記条件レジスタ・データを前記条件レジスタに転
    送する前記手段が、前記条件レジスタ・リネーム・バッ
    ファから前記条件レジスタ・データを、前記条件レジス
    タ・リネーム・バッファ内の前記宛先フィールド内の前
    記宛先データによって指定された前記条件レジスタ内の
    前記複数のフィールドのうちの1つのフィールドに転送
    する手段を特徴とする、請求項14に記載の条件レジス
    タ・データを一時的にバッファリングするシステム。
  16. 【請求項16】前記条件レジスタ・リネーム・テーブル
    が終了ビットを含み、前記条件レジスタ・データが有効
    であることを示す前記手段が、前記条件レジスタ・デー
    タが前記条件レジスタ変更命令の前記結果を反映してい
    ることを示すように前記終了ビットを設定する手段を含
    むことを特徴とする、請求項13に記載の条件レジスタ
    ・データを一時的にバッファリングするシステム。
  17. 【請求項17】前記複数の実行ユニットのうちの前記選
    択された1つの実行ユニットで前記条件レジスタ変更命
    令を実行する前記手段が、浮動小数点実行ユニット内で
    浮動小数点加算命令を実行する手段を含むことを特徴と
    する、請求項12に記載の条件レジスタ・データを一時
    的にバッファリングするシステム。
  18. 【請求項18】前記複数の実行ユニットのうちの前記選
    択された1つの実行ユニットで前記条件レジスタ変更命
    令を実行する前記手段が、固定小数点実行ユニット内で
    整数乗算命令を実行する手段を含むことを特徴とする、
    請求項12に記載の条件レジスタ・データを一時的にバ
    ッファリングするシステム。
  19. 【請求項19】前記条件レジスタ変更命令の実行の結果
    を反映する前記条件レジスタ・リネーム・バッファ内の
    前記条件レジスタ・データへの依存関係を有する条件レ
    ジスタ・データ依存命令の実行に応答して、前記条件レ
    ジスタ・リネーム・テーブルで前記条件レジスタ変更命
    令の実行の結果を反映する条件レジスタ・データを探索
    する手段と、 前記条件レジスタ・リネーム・バッファ内に前記条件レ
    ジスタ・データがある場合には、前記条件レジスタ・リ
    ネーム・バッファに格納されている前記条件レジスタ・
    データを使用して前記依存関係を解決し、前記条件レジ
    スタ・データ依存命令の前記実行を終了する手段とをさ
    らに含み、前記条件レジスタ・データ依存命令の実行
    を、前記条件レジスタ内の前記条件レジスタ・データが
    前記条件レジスタ変更命令の前記結果を反映していない
    ために、遅延させないことを特徴とする、請求項13に
    記載の条件レジスタ・データを一時的にバッファリング
    するシステム。
  20. 【請求項20】前記データ処理システムにおける前記条
    件レジスタが条件レジスタ・データを格納する複数の条
    件レジスタ・フィールドを含み、前記条件レジスタ・リ
    ネーム・テーブル内の前記複数の条件レジスタ・リネー
    ム・バッファがそれぞれ、前記複数の条件レジスタ・リ
    ネーム・バッファのうちの1つが、前記複数の条件レジ
    スタ・フィールドのうちの選択された1つを変更する最
    も最近にディスパッチされた条件レジスタ変更命令に関
    連づけられていることを示す現行ビットを含み、前記条
    件レジスタ・リネーム・テーブルで前記条件レジスタ変
    更命令の実行結果を反映する条件レジスタ・データを探
    索する前記手段が、前記条件レジスタ・リネーム・テー
    ブルで、前記条件レジスタ・データが前記複数の条件レ
    ジスタ・フィールドのうちの前記選択された1つを修正
    する前記最も最近にディスパッチされた条件レジスタ変
    更命令の実行の結果を反映していることを示すために設
    定された前記現行ビットが入っている条件レジスタ・リ
    ネーム・バッファ内の条件レジスタ・データを探索する
    手段を含むことを特徴とする、請求項19に記載の条件
    レジスタ・データを一時的にバッファリングするシステ
    ム。
  21. 【請求項21】前記条件レジスタ・リネーム・バッファ
    がそれぞれ、前記関連する条件レジスタ変更命令が投機
    実行中であることを示す投機実行ビットを含むことを特
    徴とし、前記条件レジスタ・データが予測誤り命令経路
    にある投機実行命令の結果を反映していることを示す前
    記投機実行ビットを有する前記条件レジスタ・リネーム
    ・バッファ内の前記条件レジスタ・データを無効化する
    手段をさらに含む、請求項13に記載の条件レジスタ・
    データを一時的にバッファリングするシステム。
  22. 【請求項22】前記条件レジスタ・リネーム・バッファ
    のそれぞれが、前記条件レジスタ・リネーム・バッファ
    が有効バッファであることを示す使用ビットを含み、前
    記条件レジスタ・データが予測誤り命令経路にある投機
    実行命令の結果を反映していることを示す前記投機実行
    ビットを有する前記条件レジスタ・リネーム・バッファ
    内の前記条件レジスタ・データを無効化する前記手段
    が、前記条件レジスタ・リネーム・バッファに前記使用
    ビットを設定して前記条件レジスタ・データが予測誤り
    命令経路にある投機実行命令の結果を反映していること
    を示す手段含む、請求項21に記載の条件レジスタ・デ
    ータを一時的にバッファリングするシステム。
JP13485796A 1995-06-07 1996-05-29 条件レジスタ・データを一時的にバッファリングする方法およびシステム Expired - Fee Related JP3154660B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US480999 1995-06-07
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

Publications (2)

Publication Number Publication Date
JPH096611A true JPH096611A (ja) 1997-01-10
JP3154660B2 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100343601B1 (ko) * 1998-02-17 2002-07-11 포만 제프리 엘 무순서 레지스터 동작용 장치를 구비하는 데이터 처리 시스템 및그 방법
EP1016961A3 (en) * 1998-12-28 2003-05-14 Fujitsu Limited Information processor
US7269716B2 (en) 2002-07-05 2007-09-11 Fujitsu Limited Processor to efficiently rename decoded condition codes and instruction control method thereof
US7590827B2 (en) 2002-07-05 2009-09-15 Fujitsu Limited Processor and instruction control method having a storage of latest register for updating data of source operands, and instruction control

Families Citing this family (17)

* 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
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
GB2352536A (en) * 1999-07-21 2001-01-31 Element 14 Ltd Conditional instruction execution
GB2352308B (en) * 1999-07-21 2004-06-30 Element 14 Ltd Accessing a test condition
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
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
FR2867873A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
FR2867872A1 (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., Schaumburg, Ill. 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

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100343601B1 (ko) * 1998-02-17 2002-07-11 포만 제프리 엘 무순서 레지스터 동작용 장치를 구비하는 데이터 처리 시스템 및그 방법
EP1016961A3 (en) * 1998-12-28 2003-05-14 Fujitsu Limited Information processor
KR100589102B1 (ko) * 1998-12-28 2006-06-14 후지쯔 가부시끼가이샤 Vliw 프로세서
US7269716B2 (en) 2002-07-05 2007-09-11 Fujitsu Limited Processor to efficiently rename decoded condition codes and instruction control method thereof
US7590827B2 (en) 2002-07-05 2009-09-15 Fujitsu Limited Processor and instruction control method having a storage of latest register for updating data of source operands, and instruction control

Also Published As

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

Similar Documents

Publication Publication Date Title
EP0751458B1 (en) Method and system for tracking resource allocation within a processor
US6356918B1 (en) Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US7711929B2 (en) Method and system for tracking instruction dependency in an out-of-order processor
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US5832293A (en) Processor architecture providing speculative, out of order execution of instructions and trap handling
JP3154660B2 (ja) 条件レジスタ・データを一時的にバッファリングする方法およびシステム
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
JP2597811B2 (ja) データ処理システム
US5870582A (en) Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
EP1145110B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
US5535346A (en) Data processor with future file with parallel update and method of operation
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
US7660971B2 (en) Method and system for dependency tracking and flush recovery for an out-of-order microprocessor
JPH09258980A (ja) 並列マルチタスキングの方法及びシステム
JPH03116235A (ja) 分岐処理方法及び分岐処理装置
JP3689369B2 (ja) 2次リオーダ・バッファ・マイクロプロセッサ
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
JPH10154073A (ja) データ依存性を管理する装置及び方法
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
US6134645A (en) Instruction completion logic distributed among execution units for improving completion efficiency
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions

Legal Events

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