JP3142813B2 - レジスタの名前変更を管理するための情報処理システムおよび方法 - Google Patents

レジスタの名前変更を管理するための情報処理システムおよび方法

Info

Publication number
JP3142813B2
JP3142813B2 JP10070011A JP7001198A JP3142813B2 JP 3142813 B2 JP3142813 B2 JP 3142813B2 JP 10070011 A JP10070011 A JP 10070011A JP 7001198 A JP7001198 A JP 7001198A JP 3142813 B2 JP3142813 B2 JP 3142813B2
Authority
JP
Japan
Prior art keywords
register
rename
instruction
elapsed time
entry
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
JP10070011A
Other languages
English (en)
Other versions
JPH10301778A (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 JPH10301778A publication Critical patent/JPH10301778A/ja
Application granted granted Critical
Publication of JP3142813B2 publication Critical patent/JP3142813B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、順序外れ(out-of
-order)かつ推論的(speculative)な命令実行をサポ
ートし、命令のディスパッチに応答して、または割込み
条件や誤って予測された分岐命令などのキャンセル事象
の発生時に、レジスタの名前変更を管理するための情報
処理システムおよび法に関する。
【0002】
【従来の技術】通常のコンピュータまたは情報処理シス
テムの設計では、プログラマが情報処理システム用のプ
ログラムを設計する際に使用するための、汎用レジスタ
(GPR)、条件レジスタ(CR)や浮動小数点レジス
タ(FPR)など、一定数のアドレス可能レジスタ、す
なわち、アーキテクチャ式レジスタを確立する必要があ
る。
【0003】コンピュータおよびコンピュータ・プログ
ラムの設計は、コンピュータまたは情報処理システムの
プログラム命令が、それらがプログラムに書かれて情報
処理システムにロードされる順序で情報処理システムに
よって実行されるという想定に基づいている。命令は論
理的には情報処理システムから見て、プログラムの順序
で実行されたものと見えなければならないが、コンピュ
ータの性能を改善しようとする努力の中で、一部の命令
は、他の命令との間に一定の依存関係が存在しない場合
には、プログラム順序で物理的に実行される必要がない
ことが分かってきた。さらに、一部の命令が順序外れで
実行され、このような命令の1つが分岐命令であり、後
続の命令シーケンスを選択するために分岐予測がなされ
る場合、その分岐が誤って予測されたものなら、この予
測分岐中の命令の影響を受けたレジスタをそれらの元の
値に復元する必要が生じる可能性がある。このような場
合には、情報処理システムは分岐がなされる前の状態に
復元される。命令を順序外れで効率よく実行する処理で
は、分岐の後に続く命令の影響を受けるレジスタについ
て予測分岐以前のレジスタの値を維持しながら、予測分
岐の後に続く命令の影響を受けたレジスタの新規値を暫
定的に記憶するための措置をじる必要がある。分岐命
令が解決されたとき、新規レジスタ値の暫定性は取り除
かれ、これらの新規値がレジスタの確立値となる。上記
のレジスタ管理技術は、レジスタの名前変更(リネー
ム)と呼ばれる。レジスタの名前変更技術を利用するレ
ジスタ管理システムの1例としては、米国特許第513
4561号を参照されたい。
【0004】レジスタの名前変更は、オーバフロー条件
やページ不在などの割込み条件の発生時にも必要となる
可能性がある。
【0005】レジスタの名前変更には2つの基本的な手
法がある。第1の手法は将来ファイル手法と呼ばれるも
のである。この手法では、データが利用可能になり、こ
の更新を引き起こす命令がコミットされるかまたは非推
論的になるまで、アーキテクチャ式レジスタに記憶され
た値の全ての更新が記憶され、あるいは名前変更待ち行
列またはレジスタ中の将来ファイル・エントリに割り当
てられる。命令がコミットされるとき、アーキテクチャ
式レジスタに割り当てられた最も古い将来ファイル・エ
ントリ中の更新がアーキテクチャ式レジスタに書き込ま
れる。
【0006】このようにして、名前変更待ち行列または
レジスタは、アーキテクチャ式レジスタの推論的更新値
を含み、アーキテクチャ式レジスタはアーキテクチャ式
レジスタの非推論的な値を含む。アーキテクチャ式レジ
スタの値を読み取る命令は、まず、そのアーキテクチャ
式レジスタに対し名前変更レジスタ中のいずれかの将来
ファイル・エントリが割り当てられているかどうか判定
する。将来ファイル・エントリが割り当てられていない
場合には、命令はアーキテクチャ式レジスタ中の値を読
み取る。1つまたは複数の将来ファイル・エントリが割
り当てられている場合には、命令は名前変更レジスタの
1つから値を読み取る。
【0007】レジスタの名前変更の第2の手法は、ヒス
トリ・ファイル手法と呼ばれるものである。この手法で
は、アーキテクチャ式レジスタはアーキテクチャ式レジ
スタの推論的更新値を含み、名前変更レジスタは推論的
に更新される前のアーキテクチャ式レジスタの値を含
む。したがって、アーキテクチャ式レジスタの値を読み
取る命令は、単にアーキテクチャ式レジスタ中の推論的
な値を読み取る。
【0008】割込みまたは誤って予測された分岐命令の
発生時には、アーキテクチャ式レジスタの非推論的な値
を決定しなければならない。将来ファイル手法では、ア
ーキテクチャ式レジスタの非推論的な値はアーキテクチ
ャ式レジスタ自体に記憶されるが、ヒストリ・ファイル
手法では、アーキテクチャ式レジスタの非推論的な値は
名前変更レジスタに記憶されることになる。
【0009】したがって、ヒストリ・ファイル手法で
は、割込みまたは誤って予測された分岐命令の発生時に
おける名前変更レジスタに記憶された値の経過時間順序
(ageorder)、アーキテクチャ式レジスタの非推論的
な値を決定するために不可欠である。ヒストリ・ファイ
ル手法による従来技術の名前変更レジスタでは、シフト
・レジスタを利用して、廃棄されるかまたアーキテク
チャ式レジスタに書き込まれた結果としてあるヒストリ
・ファイル・エントリが名前変更レジスタから除去され
るとき、各ヒストリ・ファイル・エントリをシフト・ダ
ウンさせることにより、割込みまたは誤って予測された
分岐命令より以前に存在する非推論的な値でアーキテク
チャ式レジスタを復元するようにしていた。名前変更レ
ジスタとしてシフト・レジスタ配列を使用することによ
って、ヒストリ・ファイル・エントリは経過時間順序の
ままとなる。この経過時間順序シフト・レジスタ手法に
伴う問題は、シフトさせるために過度の電力が必要とな
ることである。
【0010】
【発明が解決しようとする課題】名前変更レジスタに記
憶された値の経過時間順序を追跡(track)するために
必要な複雑さを最小限に抑えながら、電力を節約する
めに名前変更シフト・レジスタの必要をなくするレジ
スタ名前変更手法が必要とされている。
【0011】
【課題を解決するための手段】したがって、本発明は、
命令を実行するための少なくとも1つの実行装置を有す
る少なくとも1つのプロセッサと、レジスタ・エントリ
を記憶するための複数のアーキテクチャ式レジスタと、
名前変更エントリを記憶するための名前変更レジスタ配
列とを備える、レジスタを管理するための情報処理シス
テムを提供する。このシステムはさらに、名前変更エン
トリの相対的な経過時間に応答して名前変更レジスタ配
列とアーキテクチャ式レジスタの間でレジスタまたは名
前変更エントリを転送する転送機構を備える。名前変更
レジスタ配列は、ラップアラウンド配列である。このシ
ステムはさらに、ラップアラウンド配列に記憶された名
前変更エントリの相対的な経過時間を決定する手段を含
む。
【0012】本発明はまた、命令を実行するための少な
くとも1つの実行装置を有する少なくとも1つのプロセ
ッサを含む情報処理システムにおけるレジスタを管理す
る方法も提供する。この方法は、複数のアーキテクチャ
式レジスタにレジスタ・エントリを記憶する段階と、ラ
ップアラウンド配列である名前変更レジスタ配列に名前
変更エントリを記憶する段階と、名前変更エントリの相
対的経過時間に応答して名前変更レジスタ配列とアーキ
テクチャ式レジスタの間でレジスタまたは名前変更エン
トリを転送する段階と、ラップアラウンド配列に記憶さ
れた名前変更エントリの相対的経過時間を決定する段階
とを含む。
【0013】本発明は、レジスタを管理するための改良
型の情報処理システムおよび方法という利点を提供す
る。
【0014】本発明はまた、名前変更シフト・レジスタ
を利用して名前変更エントリを経過時間順序で保持する
従来技術の名前変更システムで使用される電力を節約す
るという利点も提供する。
【0015】本発明はまた、全ての名前変更レジスタ・
エントリの経過時間を制御して追跡する際の複雑さを回
避するという利点を提供する。
【0016】
【発明の実施の形態】図1を参照すると、本発明を実施
するための代表的なハードウェア環境が示されている。
情報処理システムは、それにディスパッチされた命令を
実行するための1つまたは複数の統合実行装置11と、
1つまたは複数のレベルのキャッシュ・メモリ(図示せ
ず)と、メモリ管理装置(図示せず)など、その他いく
つかの装置とを有する少なくとも1つのプロセッサまた
は中央演算処理装置(CPU)10を含む。CPU10
はシステム・バス12を介して、ランダム・アクセス・
メモリ(RAM)14と、読取り専用メモリ(ROM)
16と、ディスク装置20やテープ・ドライブ40など
の周辺装置をバス12に接続する入出力(I/O)アダ
プタ18と、キーボード24、またはボタン17を有す
るマウス26、またはスピーカ28、またはマイクロフ
ォン32、またはタッチ・スクリーン装置(図示せず)
などその他のユーザ・インタフェース装置あるいはそれ
らの組合せをバス12に接続するためのユーザ・インタ
フェース・アダプタ22と、情報処理システムをデータ
処理ネットワークに接続するための通信アダプタ34
と、バス12を表示装置38に接続するためのディスプ
レイ・アダプタ36とに相互接続される。
【0017】本発明は、CPU10中で、またその一部
として実施することが好ましい。CPUの内部構成部品
および動作は当業者には周知であり、したがって、それ
らの詳細については本発明の基礎となる概念の理解およ
び認識に必要な程度を越えて説明することはしない。
【0018】一般に本発明は、順序外れかつ推論的な命
令実行をサポートする、情報処理システムにおけるレジ
スタの名前変更を管理する方法および装置を提供するも
のである。レジスタの名前変更は、アーキテクチャ式レ
ジスタと名前変更レジスタの間でエントリを転送するこ
とによって情報処理システム中のアーキテクチャ式レジ
スタの見かけのサイズまたは仮想サイズを拡張するため
に使用される。本発明のレジスタの名前変更を管理する
方法および装置は、ラップアラウンド配列または循環待
ち行列方式で配列された名前変更レジスタ、および新規
の名前変更エントリをラウンドロビン方式で名前変更レ
ジスタに割り当てる割振りポインタを利用する。
【0019】本発明の方法および装置は、ある名前変更
エントリが名前変更レジスタから除去される度に名前変
更エントリを次の名前変更レジスタにシフトさせる方法
によって、名前変更エントリを経過時間順序で保持する
ことなく、名前変更エントリの経過時間順序を追跡
る。このような方法および装置により、本発明では、名
前変更エントリの経過時間順序を追跡するために必要な
全体的な複雑さを最小限に抑えながら、レジスタの名前
変更を管理するために使用される電力を従来技術の方法
および装置と比較して大幅に低下させる。
【0020】図2に関して、本発明をさらに詳しく説明
することができる。本発明のレジスタの名前変更を管理
する方法および装置は、名前変更のための将来ファイル
手法およびヒストリ・ファイル手法を含むがそれだけに
は限定されない、全てのレジスタ名前変更技術に等しく
適用可能であることを理解されたい。したがって、以下
の好ましい実施形態の説明ではヒストリ・ファイルの名
前変更手法を利用するレジスタの名前変更管理について
説明するが、本発明はヒストリ・ファイル・タイプの名
前変更の範囲に限定されるものではない。また、本発明
によるレジスタの名前変更を管理する方法および装置
は、この包括的なコンピュータまたは情報処理システム
の全体的アーキテクチャに依存するものではなく、様々
な環境で実施することができることも理解されたい。
【0021】図2は、汎用レジスタ、浮動小数点レジス
タや条件レジスタなど指定された複数のアドレス可能な
(論理的)アーキテクチャ式レジスタのアーキテクチャ
設計要件を有するコンピュータまたは情報処理システム
のための、レジスタ名前変更管理システムを示す。図2
は、条件レジスタ(CR)の8個のフィールドを有する
アーキテクチャ式条件レジスタ100を示す。ただし、
本発明の範囲内で任意の数のCRフィールドを使用でき
ることを理解されたい。
【0022】本発明が任意のタイプおよび数のアーキテ
クチャ式レジスタに適用されることを理解されたい。本
発明はさらに、第1名前変更レジスタ112、第2名前
変更レジスタ114、第3名前変更レジスタ116、お
よび最終名前変更レジスタ118を有し、条件レジスタ
・ヒストリ・バッファ(CRHB)とも呼ばれることも
ある名前変更レジスタ配列110をも含む。本発明では
任意の数の名前変更レジスタを利用できることを理解さ
れたい。
【0023】アーキテクチャ式条件レジスタ配列100
はレジスタ・エントリを記憶するのに対して、名前変更
レジスタ配列112中の名前変更レジスタは名前変更エ
ントリを記憶する。名前変更レジスタ配列110は、名
前変更レジスタ配列110とアーキテクチャ式レジスタ
配列100の間でレジスタまたは名前変更エントリを転
送することによってレジスタ配列100中のアーキテク
チャ式レジスタの機能を実行するために設けられる。名
前変更レジスタ配列110の名前変更レジスタ112、
114、116、および118は、名前変更エントリが
ラウンド・ロビン方式で名前変更レジスタ112、11
4、116、118に記憶されるように、ラップアラウ
ンド配列または循環待ち行列方式で構成される。具体的
に言うと、名前変更エントリは、第1名前変更レジスタ
112から最終名前変更レジスタ118まで行って第1
名前変更レジスタ112に戻るという順次順序(sequen
tial order)で名前変更レジスタ配列110に記憶され
る。CRHBポインタ120は、第1の利用可能な、す
なわち空または充填されていない名前変更レジスタ11
2、114、116、118に、上記の順序で名前変更
エントリを割り当てる。
【0024】命令ディスパッチ・バッファ(図示せず)
から情報処理システム中の実行装置の1つに命令が実行
のためディスパッチされるとき、その命令が条件レジス
タ配列100のフィールドの1つを更新する場合には、
このディスパッチされた命令に関連する経過時間タグ1
22が、対応するCRデータ124および有効ビット1
26とともに、次の利用可能なCRHB112、11
4、116、または118に名前変更エントリとして記
憶される。有効ビット126は、名前変更エントリが有
効であるかどうか、すなわち有効なCRデータ124を
含むかどうかを示す。各名前変更エントリはまた、条件
レジスタ配列100のどのフィールドまたは条件レジス
タに名前変更エントリが割り当てられるかを示す、3ビ
ットのCRフィールド128も含む。
【0025】各名前変更エントリはまた、保留中または
更新を待機中の条件レジスタ配列100にCRデータ1
24が指定されるかどうかを示す充填済みフラグまたは
ビットを有する、充填済みフィールド130も含む。こ
の充填フラグがオフである場合には、名前変更エントリ
のデータ・タグ132は保留中のCRを設定することに
なる命令の命令タグ(ITAG)を含むことになる。し
たがって、経過時間タグ122はヒストリ・バッファの
名前変更エントリを生成した命令の命令タグ(ITA
G)であるが、データ・タグ132は保留中のCRを設
定することになる命令の命令タグ(ITAG)である。
したがって、経過時間タグ122を使用して、ある名前
変更エントリの他の名前変更エントリに対する相対的経
過時間を決定することができる。
【0026】配列100のフィールドを修正する命令が
ディスパッチされたとき、その命令はディスパッチされ
た命令の命令タグで配列100のレジスタまたはフィー
ルドを設定する、すなわちそのフィールドのデータ・タ
グ134は保留中フィールドを設定することになる命令
の命令タグを含むことになる。データ・タグ134に加
えて、アーキテクチャ式条件レジスタ配列100の各フ
ィールドまたはレジスタはまた、充填済みフラグまたは
ビットを含む充填済みフィールド136と、CRHB名
前変更レジスタ112、114、116、118の各名
前変更エントリのそれと同様のCRデータ・フィールド
138も含む。充填済みフラグがオンであることが充填
済みフィールド136で示される場合、条件レジスタ配
列100のフィールドまたはレジスタは充填され、どの
ようなCRデータも受け入れない。充填済みフラグがオ
フであることが充填済みフィールド136によって示さ
れる場合、アーキテクチャ式条件レジスタ配列100の
そのフィールドまたはレジスタは、データ・タグ134
に記憶されたものと同一の命令タグを有する命令を実行
した実行装置から、CRデータを受け入れることにな
る。
【0027】CRデータ・フィールド138からのCR
データ、およびそのサイクルで発生する任意の追加更新
は、新しく生成されたCRHB名前変更エントリに供給
され、その時点でCRHB名前変更エントリの経過時間
タグ122が、ディスパッチされたCR修正命令の命令
タグで充填される。その後CRHBポインタ120は増
分され、これによりヒストリ・バッファの名前変更エン
トリが順序通り割り当てられる。名前変更レジスタ配列
110が満杯である場合には、CRを修正する新規の命
令はディスパッチされないことになる。名前変更エント
リが最終名前変更レジスタ118に書き込まれており、
第1名前変更レジスタ112が再使用できる場合、CR
HBポインタ120によって制御される書込み動作は折
り返して第1名前変更レジスタ112に戻る。
【0028】この時点で、ヒストリ・ファイル・タイプ
の名前変更の背後にある概念は、レジスタを修正する命
令がディスパッチされた場合に、そのレジスタについて
のデータがヒストリ・ファイル中に複写される、すなわ
ち名前変更レジスタの1つが名前変更エントリとして複
製されるというものであることを想起されたい。割込み
条件または誤って予測された分岐命令の発生時などに、
そのレジスタを修正する命令がキャンセルされた場合に
は、ヒストリ・ファイルの名前変更エントリまたは名前
変更レジスタからのデータが、複写されてアーキテクチ
ャ式レジスタに戻される。同一のレジスタに対して複数
の更新が許される場合には、名前変更レジスタ配列は、
そのレジスタを設定することになる命令からのデータを
受け入れる必要がある、すなわち充填済みフィールド1
30のフラグはオフになる。同一のレジスタに対して複
数の更新を行うには、そのレジスタを設定することにな
る命令を追跡する必要がある。
【0029】保留中のレジスタの更新を更新する1つの
方法は、そのレジスタを設定することになる命令の命令
タグを追跡することである。情報処理システムの実行装
置は、アーキテクチャ式レジスタ中に設定するデータを
有するとき、そのデータおよびレジスタの更新を引き起
こす命令の命令タグをスヌープ・データ・バス140で
報告する。図2で、スヌープ・データ・バス140は合
計6本のスヌープ線を含む。スヌープ・バス140はC
Rの結果を計算する実行装置に結合される。アーキテク
チャ式レジスタおよび名前変更レジスタを含めて、デー
タ待機中の全てのレジスタは、そのレジスタを設定する
ことになる命令の命令タグをデータ・タグ132または
データ・タグ134中に有する。実行装置がスヌープ・
データ・バス140上で設定する命令タグが、あるレジ
スタが待機しているものと同一の命令タグである場合に
は、そのデータはその特定のレジスタに取り込まれるこ
とになる。経過時間タグ122は名前変更レジスタ配列
110の各名前変更エントリの相対的経過時間を識別す
ることに留意されたい。
【0030】同一の物理またはアーキテクチャ式レジス
タに対して複数の名前変更エントリが保留中であり、2
つ以上のヒストリ名前変更エントリよりも古い、割込み
条件や誤って予測された分岐条件などのキャンセル事象
が発生した場合、論理ブロック142で、どのヒストリ
名前変更エントリを復元する必要があるかを決定する。
一般的には、キャンセル事象よりも古いものの中で最も
新しいヒストリ・ファイルの名前変更エントリをアーキ
テクチャ式レジスタに復元しなければならない。ヒスト
リ・ファイル・タイプの名前変更では、割込み命令また
は誤って予測された命令の命令タグが論理ブロック14
2に入力として供給され、どのヒストリ・ファイルの名
前変更エントリを復元に使用するかを決定するために使
用される。
【0031】将来ファイル・タイプの名前変更では、命
令タグおよび将来ファイルの名前変更エントリにアクセ
スしようとする命令が供給され、将来ファイルの名前変
更バッファまたはレジスタのどのエントリにアクセスす
べきかを決定するために使用される。
【0032】割込みまたは誤った分岐点を示す命令の命
令タグ、すなわちキャンセル・タグが、比較器144、
146、148、150を使用してヒストリ・ファイル
配列110の経過時間タグ・フィールド122の全ての
ITAGと比較され、どのヒストリ・ファイルの名前変
更エントリがキャンセル事象より前の命令に関するもの
であり、したがって復元機能の候補であるかを決定す
る。比較器144、146、148、150の出力は、
図示のようにANDゲート152、154、156、1
58に入力される。名前変更レジスタ112、114、
116、118の有効ビット126は、図示のようにそ
れぞれANDゲート152、154、156、158に
入力される。一のレジスタについて復元の候補として
複数のヒストリ・ファイルの名前変更エントリが存在す
る場合には、かかる候補のセットの中で最も新しいすな
わち最も若いディスパッチ済み命令に対応する名前変更
エントリが復元のために選択される。ヒストリ・ファイ
ルは折り返すことができるので、どれが最も新しいもの
であるかをヒストリ・ファイル内の位置によって決定す
ることはできない。本発明によれば、制御情報の一部、
すなわちANDゲート152、154、156、158
の出力および名前変更レジスタ配列110中の名前変更
エントリ候補のCRフィールド・ビット128が、順次
順序すなわち名前変更レジスタ配列110中の制御情報
の物理順序から制御情報の経過時間順序に回転される。
第1回転装置160は制御情報の回転を実行するために
設けられる。ANDゲート152、154、156、1
58の出力およびCRフィールド・ビット128が回転
装置160に入力される。したがって、対応する名前変
更エントリの経過時間タグ122がキャンセル事象の前
に発生して比較器144、146、148、または15
0の出力が論理1になり、対応する名前変更エントリの
有効ビットが論理1になる場合に、論理1がCRフィー
ルド・ビット128とともに回転装置160に入力され
る。ANDゲート152、154、156、または15
8の1ビット出力と3ビットのCRフィールド128を
含む4ビットのセットが、回転装置160に入力され
る。回転装置160は、名前変更エントリに対応する4
ビットの各セットに必要な回転の量を決定するための、
CRHBポインタ120用の入力も含む。したがって、
回転装置160の出力163、165、167、169
は、経過時間順に配列された名前変更エントリのそれぞ
れに対応する4組の4ビットである。すなわち出力16
3は、名前変更レジスタ配列110の最も古いディスパ
ッチ済み命令に対応し、出力165は、名前変更レジス
タ配列110の2番目に古いディスパッチ済み命令に対
応し、以下同様となる。したがって、出力169は、名
前変更レジスタ配列110の最も若いディスパッチ済み
命令に対応する。回転装置160の出力163、16
5、167、169は、デコーダ162、164、16
6、168に入力される。デコーダ162、164、1
66、168は4ビット対8ビット・デコーダである。
【0033】デコーダ162は出力163を入力する
が、ANDゲート152から出力されたビットがオフで
ある場合にはそのデコーダの出力をどれもオンにしな
い。これは、出力163に対応する特定のHBエントリ
が有効エントリではない(すなわち割振り解除されてい
る)か、またはそれがキャンセル命令よりも古くなく、
したがってレジスタの復元に必要とされないことを示
す。ANDゲート152から出力されたビットがオンで
ある場合には、デコーダ162の8個の出力ビットの1
つが、出力163から出力されてデコーダ162に入力
されたCRフィールド128の3ビットによって決定さ
れるように、オンになる。デコーダ164、166、1
68もデコーダ162と同様に動作する。したがって、
例えばデコーダ162の出力のビット0がオンである場
合、これはCR0が最も古いエントリとして名前変更配
列110に記憶された命令の宛先オペランドであるこ
と、その命令がキャンセル命令より前にディスパッチさ
れたこと、およびそのエントリが有効であることを示
す。また、例えば、デコーダ164のビット2がオンで
ある場合、これはCR2が2番目に古いエントリとして
配列110に記憶された命令の宛先オペランドであるこ
と、およびその命令がキャンセル命令より前にディスパ
ッチされたことなどを示す。
【0034】ここまでに説明したことを要約すると、分
岐の誤った予測または割込みの発生時に、図示のように
論理ブロック142に、キャンセルITAGが供給され
る。論理ブロック142では、どの命令がキャンセル事
象の前に発生し、したがってどの命令がレジスタ配列1
00のレジスタへの復元の候補になるかを決定すること
ができる。キャンセル事象の前にディスパッチされた命
令によって名前変更エントリが生成されたかどうかを識
別する制御情報は、第1回転装置160により、出力1
63に対応する最も古い名前変更エントリから出力16
9に対応する最も新しい名前変更エントリにシフトまた
は回転される。デコーダ162、164、166、16
8の対応する出力は、名前変更エントリからの復元の候
補であるCRを示す。すなわち、デコーダの8ビットの
うちの1つがオンである場合には、8個のCRのうちの
それに対応する1つが、そのデコーダに対応する名前変
更レジスタから復元される候補である。
【0035】復元する候補として複数のデコーダの出力
が同一のCRを示す場合には、このような全ての出力が
同一の優先エンコーダに通信される。このような優先エ
ンコーダ170からの出力171、173、175、1
77は、どのCRHB名前変更エントリ(存在する場
合)をレジスタ配列100に復元すべきかを示す。図2
にはレジスタ配列100のCRフィールドまたはレジス
タ0(すなわちレジスタ0)のみを示す。レジスタ配列
100の他7つのCRフィールドまたはレジスタは全
く同じであるが、4:8デコーダのその他の7つの出力
を使用する。したがって、図では各デコーダ162、1
64、166、168について、ただ1つのデコーダ出
力しか優先エンコーダ170に結合されていない。図示
はしていないが、各デコーダ出力は異なる優先エンコー
ダに結合されることになる。
【0036】次に図2に示すCR0についての優先エン
コーダ170を参照すると、出力171、173、17
5、177はCRHBまたは名前変更レジスタ配列10
0の名前変更エントリの物理順序とは反対の経過時間順
序で配列されるので、これらの出力を回転させなければ
ならない。出力171、173、175、177を指示
する経過時間順序から指示する物理順序に戻すために
は、第2回転装置172により、回転装置160を通過
したCRHBポインタ120の情報に基づいて出力17
1、173、175、177を回転させる必要がある。
【0037】優先エンコーダ170への全ての入力がオ
フになる(すなわち「0」論理状態)のに応答して、優
先エンコーダ170からの別個の出力182は、復元ま
たは名前変更が不要であったこと、およびCRデータ1
38がスヌープ・データ・バス140から直接来ること
になることを示す。出力182は第2回転装置172を
迂回する。
【0038】回転装置172の出力174、176、1
78、180、182は、選択入力として選択マルチプ
レクサ184に入力される。配列100の各フィールド
またはレジスタに対応する、1つの第2回転装置172
および1つのマルチプレクサが存在することに留意され
たい。
【0039】ヒストリ・バッファ・マルチプレクサ18
6、188、190、192およびフィールド0マルチ
プレクサ194は、選択マルチプレクサ184への入力
を提供する。名前変更レジスタ112、114、11
6、118のCRデータ・フィールド124は、それぞ
れヒストリ・バッファ・マルチプレクサ186、18
8、190、192に入力される。スヌープ・データ・
バス140の6本の線もまた、ヒストリ・バッファ・マ
ルチプレクサ186、188、190、192、および
フィールド0マルチプレクサ194に入力される。CR
データ・フィールド138はフィールド0マルチプレク
サ194に入力される。各フィールドについてフィール
ド0マルチプレクサ194と同様のマルチプレクサが存
在し、各フィールドごとにCRデータ・フィールドがそ
れに入力されることに留意されたい。ヒストリ・バッフ
ァ・マルチプレクサ186、188、190、192の
出力は、それぞれ割当てマルチプレクサ196、19
8、200、202に結合される。割当てマルチプレク
サ196、198、200、202、およびCRHBポ
インタ120を使用して、CRデータ・フィールド12
4へのCRデータが、名前変更レジスタ配列110中の
次の利用可能な(すなわち空の)名前変更エントリに割
り当てられる。
【図面の簡単な説明】
【図1】本発明を実施した情報処理システムを示す図で
ある。
【図2】本発明を示すブロック・ダイアグラムである。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・スチーブン・ミューイク アメリカ合衆国78759 テキサス州オー スチン アルヴァーストーン・ウェイ 8606 (56)参考文献 特開 平6−149569(JP,A) 特開 平7−334364(JP,A) 特開 平5−173781(JP,A) 特表 平8−505725(JP,A) 米国特許5699537(US,A) 米国特許5872950(US,A) 米国特許5802556(US,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】(a)命令を実行する少なくとも1つの実
    行装置を有する少なくとも1つのプロセッサと、 (b)前記実行装置によって使用されるデータを記憶す
    る複数のアーキテクチャ式レジスタと、 (c)1つのアーキテクチャ式レジスタのデータを更新
    する1つの命令が実行のために前記実行装置にディスパ
    ッチされるとき、当該命令に関連する経過時間タグ、当
    該アーキテクチャ式レジスタのデータ及び当該アーキテ
    クチャ式レジスタの識別子を含む、名前変更エントリを
    記憶する循環待ち行列方式の名前変更レジスタ配列と、 (d)前記名前変更エントリに含まれる前記アーキテク
    チャ式レジスタのデータを前記名前変更レジスタ配列か
    ら前記アーキテクチャ式レジスタに転送する選択マルチ
    プレクサ手段と、 (e)前記転送を制御する制御手段とを備え、 前記制御手段が )前記名前変更エントリに含まれている前記経過
    時間タグ、割込みまたは誤った分岐点を示すキャンセ
    命令に関連する経過時間タグと比較して、当該キャン
    セル命令に関連する経過時間タグより経過時間タグ
    を含んでいる名前変更エントリを決定する比較器手段
    と、 (e前記比較器手段によって決定された名前変更エ
    ントリが2つ以上存在する場合、当該2つ以上の名前変
    更エントリに含まれている前記アーキテクチャ式レジス
    の識別子を当該2つ以上の名前変更エントリに含まれ
    ている前記経過時間タグの順序に並べ替えるように、前
    記名前変更レジスタ配列と動作可能に連動する第1回転
    手段と、 (e)前記経過時間タグの順序に並べ替えられた前記
    アーキテクチャ式レジスタの識別子をデコードして、前
    2つ以上の名前変更エントリがどの前記アーキテクチ
    ャ式レジスタにそれぞれ対応するかを決定するように、
    前記第1回転手段と動作可能に連動するデコーダ手段
    と、 (e)前記2つ以上の名前変更エントリのうち、前記
    キャンセル命令に応答して特定の前記アーキテクチャ式
    レジスタに転送されるべき特定の名前変更エントリを選
    択するための選択信号ビットを前記経過時間タグの順序
    で出力するように、前記デコーダ手段および前記アーキ
    テクチャ式レジスタの各々と動作可能に連動する優先エ
    ンコーダ手段と、(e5)前記選択信号ビットを前記経過時間タグの順序
    から前記名前変更レジスタ配列における前記2つ以上の
    名前変更エントリの順次順序に並べ替えるとともに、当
    該順次順序に並べ替えられた選択信号ビットを前記マル
    チプレクサ手段の選択入力に供給するように、前記優先
    エンコーダ手段および前記マルチプレクサ手段の各々と
    動作可能に連動する第2回転手段と 含む、レジスタの名
    前変更を管理するための情報処理システム。
  2. 【請求項2】命令を実行する少なくとも1つの実行装置
    を有する少なくとも1つのプロセッサを含む情報処理シ
    ステム中のレジスタの名前変更を管理するための方法で
    あって、 (a)前記実行装置によって使用されるデータをアーキ
    テクチャ式レジスタに記憶する段階と、 (b)1つのアーキテクチャ式レジスタのデータを更新
    する1つの命令が実行のために前記実行装置にディスパ
    ッチされるとき、当該命令に関連する経過時間タグ、当
    該アーキテクチャ式レジスタのデータ及び当該アーキテ
    クチャ式レジスタの識別子を含む名前変更エントリを
    循環待ち行列方式の名前変更レジスタ配列に記憶する段
    階と、 (c)前記名前変更エントリに含まれる前記アーキテク
    チャ式レジスタのデータを前記名前変更レジスタ配列か
    選択マルチプレクサ手段を介して前記アーキテクチャ
    式レジスタに転送する段階とを含み、 前記段階(c)が )前記名前変更エントリに含まれている前記経過
    時間タグ、割込みまたは誤った分岐点を示すキャンセ
    命令に関連する経過時間タグと比較して、当該キャン
    セル命令に関連する経過時間タグより経過時間タグ
    を含んでいる名前変更エントリを決定する段階と、 (c)前記決定された名前変更エントリが2つ以上存
    在する場合、当該2つ以上の名前変更エントリに含まれ
    ている前記アーキテクチャ式レジスタの識別子を当該2
    つ以上の名前変更エントリに含まれている前記経過時間
    タグの順序に並べ替える段階と、 (c)前記経過時間タグの順序に並べ替えられた前記
    アーキテクチャ式レジスタの識別子をデコードして、前
    2つ以上の名前変更エントリがどの前記アーキテクチ
    ャ式レジスタにそれぞれ対応するかを決定する段階と、 (c)前記2つ以上の名前変更エントリのうち、前記
    キャンセル命令に応答して特定の前記アーキテクチャ式
    レジスタに転送されるべき特定の名前変更エントリを選
    択するための選択信号ビットを前記経過時間タグの順序
    でエンコードする段階と (c5)前記選択信号ビットを前記経過時間タグの順序
    から前記名前変更レジスタ配列における前記2つ以上の
    名前変更エントリの順次順序に並べ替えるとともに、当
    該順次順序に並べ替えられた選択信号ビットを前記選択
    マルチプレクサ手段の選択入力に供給する段階と を含
    む、前記方法。
JP10070011A 1997-03-31 1998-03-19 レジスタの名前変更を管理するための情報処理システムおよび方法 Expired - Fee Related JP3142813B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/829670 1997-03-31
US08/829,670 US5872950A (en) 1997-03-31 1997-03-31 Method and apparatus for managing register renaming including a wraparound array and an indication of rename entry ages

Publications (2)

Publication Number Publication Date
JPH10301778A JPH10301778A (ja) 1998-11-13
JP3142813B2 true JP3142813B2 (ja) 2001-03-07

Family

ID=25255199

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10070011A Expired - Fee Related JP3142813B2 (ja) 1997-03-31 1998-03-19 レジスタの名前変更を管理するための情報処理システムおよび方法

Country Status (2)

Country Link
US (1) US5872950A (ja)
JP (1) JP3142813B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3452771B2 (ja) * 1997-10-02 2003-09-29 富士通株式会社 命令制御システム及びその方法
EP1380946B1 (en) * 1998-10-10 2010-02-10 International Business Machines Corporation Program code conversion with reduced translation
US6311267B1 (en) * 1998-11-20 2001-10-30 International Business Machines Corporation Just-in-time register renaming technique
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
US7353163B2 (en) * 1999-04-27 2008-04-01 Transitive Limited Exception handling method and apparatus for use in program code conversion
AU4580300A (en) * 1999-04-27 2000-11-10 Transitive Technologies Limited Exception handling method and apparatus for use in program code conversion
US6546481B1 (en) 1999-11-05 2003-04-08 Ip - First Llc Split history tables for branch prediction
JP3813930B2 (ja) 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US6549442B1 (en) 2002-07-25 2003-04-15 Neomagic Corp. Hardware-assisted fast bank-swap in a content-addressable-memory (CAM) processor
JP4750350B2 (ja) 2003-03-13 2011-08-17 パナソニック株式会社 タスク切換装置、方法及びプログラム
US7508396B2 (en) 2005-09-28 2009-03-24 Silicon Integrated Systems Corp. Register-collecting mechanism, method for performing the same and pixel processing system employing the same
US7565512B2 (en) * 2007-02-02 2009-07-21 Kabushiki Kaisha Toshiba Method, system and apparatus for generation of global branch history
CN102566976B (zh) * 2010-12-27 2014-10-15 北京国睿中数科技股份有限公司 管理重命名寄存器的寄存器重命名系统和方法
US10007521B1 (en) 2012-12-20 2018-06-26 Marvell International Ltd. Banked physical register data flow architecture in out-of-order processors
US9652246B1 (en) * 2012-12-20 2017-05-16 Marvell International Ltd. Banked physical register data flow architecture in out-of-order processors
GB2538766B (en) * 2015-05-28 2018-02-14 Advanced Risc Mach Ltd Register renaming

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588126A (en) * 1993-12-30 1996-12-24 Intel Corporation Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system
US5584037A (en) * 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
US5490280A (en) * 1994-03-31 1996-02-06 Intel Corporation Apparatus and method for entry allocation for a resource buffer
US5590352A (en) * 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions

Also Published As

Publication number Publication date
JPH10301778A (ja) 1998-11-13
US5872950A (en) 1999-02-16

Similar Documents

Publication Publication Date Title
CN106990941B (zh) 使用寄存器重命名处理移动指令
US5809268A (en) Method and system for tracking resource allocation within a processor
US5961636A (en) Checkpoint table for selective instruction flushing in a speculative execution unit
US6131157A (en) System and method for retiring approximately simultaneously a group of instructions in a superscalar microprocessor
US6073159A (en) Thread properties attribute vector based thread selection in multithreading processor
US5826055A (en) System and method for retiring instructions in a superscalar microprocessor
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
JP3209205B2 (ja) プロセッサにおけるレジスタ内容の継承装置
US7526583B2 (en) Method and apparatus to launch write queue read data in a microprocessor recovery unit
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
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
JPH0668726B2 (ja) レジスタ管理システム
JP3154660B2 (ja) 条件レジスタ・データを一時的にバッファリングする方法およびシステム
US5440703A (en) System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
US5860014A (en) Method and apparatus for improved recovery of processor state using history buffer
EP1099158B1 (en) Processor configured to selectively free physical registers upon retirement of instructions
US5870612A (en) Method and apparatus for condensed history buffer
US5943494A (en) Method and system for processing multiple branch instructions that write to count and link registers

Legal Events

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