JPH10154073A - データ依存性を管理する装置及び方法 - Google Patents

データ依存性を管理する装置及び方法

Info

Publication number
JPH10154073A
JPH10154073A JP9294604A JP29460497A JPH10154073A JP H10154073 A JPH10154073 A JP H10154073A JP 9294604 A JP9294604 A JP 9294604A JP 29460497 A JP29460497 A JP 29460497A JP H10154073 A JPH10154073 A JP H10154073A
Authority
JP
Japan
Prior art keywords
instruction
register
registers
physical rename
state
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.)
Pending
Application number
JP9294604A
Other languages
English (en)
Inventor
M Potter Terence
テレンス・エム・ポッター
Y Kikuta Betty
ベティ・ワイ・キクタ
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
Motorola Solutions Inc
Original Assignee
International Business Machines Corp
Motorola Inc
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, Motorola Inc filed Critical International Business Machines Corp
Publication of JPH10154073A publication Critical patent/JPH10154073A/ja
Pending 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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)

Abstract

(57)【要約】 【課題】 プロセッサが非プログラム順序に命令を完了
し、関連データをアーキテクチャ論理レジスタに書込め
るように、データ・フロー依存性を管理する装置及び方
法を提供する。 【解決手段】 本発明はプロセッサのコミッション帯域
幅を増加し、命令がデータを生成する以前に、完了ステ
ージを通過することを可能にすることにより、より大き
なプロセッサ・スループットを可能にする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンピュータ・シス
テム及び方法に関し、特に、スーパスカラ・マイクロプ
ロセッサにおけるデータ依存性処理の改善に関する。
【0002】
【従来の技術】単位時間当たり、できるだけ多くの命令
を実行することが、マイクロプロセッサの設計の目標で
ある。この目標は、命令シーケンスから複数の命令を並
列に、非プログラム順序に処理することにより推進さ
れ、スピード効率が獲得される。この能力を有するプロ
セッサは、スーパスカラ・マイクロプロセッサとして知
られる。
【0003】命令シーケンスは通常、プログラマにより
生成される命令を含み、これらはオペランドに対して実
行される操作を指定し、また結果を記憶するアーキテク
チャ論理レジスタを指定する。オペランド自体は、特定
のアーキテクチャ論理レジスタの内容または定数として
指定され得る。命令シーケンスにとってデータ及び制御
依存性は固有である。例えば、後の命令が前の命令によ
り生成されたデータに依存し得る。従って、命令シーケ
ンスを非プログラム順序に実行するために、データ及び
制御依存性が管理されなければならない。さもないと、
不正な結果が生成され得る。
【0004】命令シーケンス内の分岐命令、または例外
または割込みを発生する他の命令の場合、プロセッサは
命令シーケンス内の所与の場所において、スーパスカラ
・プロセッサの正しい"マシン状態"を判断できなければ
ならない。マシン状態は、アーキテクチャ論理レジスタ
を含むソフトウェア・プログラマに対して定義される全
てのレジスタの状態である。次にプログラム・シーケン
ス内の例外を表す例を示すことにする。ここでプログラ
ム・シーケンス内において、例外を発生する命令よりも
後に位置する命令が最初に実行され、データをレジスタ
に書込んだものと仮定する。書込まれたデータは有効で
はない。なぜなら、プロセッサのマシン状態が、プログ
ラム・シーケンス内の例外より以前の命令にもとづき、
決定されなければならないからである。従って、例外の
後の全ての命令により生成されたデータが無視されなけ
ればならず、全てのアーキテクチャ論理レジスタの状態
が決定されなければならない。
【0005】従来のマイクロプロセッサでは、データ及
び命令シーケンスの制御フローの保全性は、命令をプロ
グラム順序に完了することにより、命令の非プログラム
順序の実行の間に維持された。命令からの結果がリネー
ム・レジスタに一時的に記憶され、続いて結果が固定の
アーキテクチャ論理レジスタにプログラム順序に書戻さ
れた。従って、固定のアーキテクチャ論理レジスタが常
にプロセッサの正しいマシン状態を含んだ。
【0006】命令をプログラム順序に完了しなければな
らない結果、その実行に複数のサイクルを要する命令
が、命令完了ステージにおいてボトルネックを生じるこ
とになる。複数サイクル命令が完了するまで、続く命令
が完了またはデータを書込むことができない。複数サイ
クル命令が実行されるのに要するサイクル数に依存し
て、このボトルネックはプロセッサが新たな命令をフェ
ッチし、処理することを阻み、従ってプロセッサのスル
ープットを低下し得る。
【0007】命令がプログラム順序に完了することに関
わるボトルネック問題を回避するために、制御フロー依
存性を処理する分散機構が、係属中の米国特許出願第3
77813号(1995年1月25日出願)で開示され
ている。データの依存性がこの開示において明かされて
おり、これは命令結果が非プログラム順序に書込まれる
ことを可能にするために、またプロセッサの正しいマシ
ン状態を維持するためにも、管理されなければならな
い。
【0008】
【発明が解決しようとする課題】本発明は、プロセッサ
が非プログラム順序に命令を完了し、関連データをアー
キテクチャ論理レジスタに書込むことができるように、
データ・フロー依存性を管理する装置及び方法を紹介す
る。これは命令がデータを生成する以前に、完了ステー
ジを通過することを可能にすることにより、プロセッサ
のコミッション帯域幅を増加し、より大きなプロセッサ
・スループットを可能にする。
【0009】
【課題を解決するための手段】本発明は、命令列の非プ
ログラム順序の実行に起因するデータ・フロー依存性を
管理する装置及び方法を含む。これは、命令列の実行の
間に生成される結果を記憶する複数の物理リネーム・レ
ジスタを含む。
【0010】ルックアヘッド状態バッファが、物理リネ
ーム・レジスタのアドレスを記憶するために使用され、
従って、命令列内で指定されるアーキテクチャ論理レジ
スタへの現割当てを示す。
【0011】状態履歴バッファがルックアヘッド状態バ
ッファに結合され、ルックアヘッド状態バッファ内で、
アーキテクチャ論理レジスタの各々に成功裡に割当てら
れる物理リネーム・レジスタのアドレスの複数のリンク
・リストを記憶する。状態履歴バッファは更に、各物理
リネーム・レジスタ内のデータの状態を示す変更可能な
ステータス・ビットを有する。
【0012】
【発明の実施の形態】図1は、従来の複数実行ユニット
・プロセッサの全体機能ブロック図を示す。こうしたア
ーキテクチャを有するコンピュータの例は、"パワーP
C(商標)603"であり、これについてはIBM Microel
ectronics社及びMotorola社から発行される"PowerPC 60
3 RISC Microprocessor User's Manual"(発行番号MP
C603UM/AD、著作権1994)で述べられてい
る。スーパスカラ・プロセッサ10は命令ユニット部分
を含み、これには順次フェッチャ17、分岐処理ユニッ
ト18、命令キュー19、ディスパッチ・ユニット2
0、及び命令キャッシュ及びメモリ管理ユニット(MM
U)14が含まれる。命令キャッシュ及びMMU14は
バス・インタフェース・ユニット12に結合され、これ
は外部バス11に結合される。命令ユニット部分は、命
令フローの集中化制御を実行ユニットに提供する。
【0013】実行ユニットは複数の固定小数点演算ユニ
ット22、汎用レジスタ・ファイル32、ロード/スト
ア・ユニット28、浮動小数点レジスタ・ファイル3
6、及び浮動小数点演算ユニット30を含む。
【0014】データ・キャッシュ及びメモリ管理ユニッ
ト(MMU)16がロード/ストア・ユニット28に結
合され、またバス・インタフェース・ユニット12にも
結合される。
【0015】固定小数点演算ユニット22は整数命令を
並列に実行する。一部の整数命令は1サイクルで実行さ
れるが、他の整数命令はその完了に複数のプロセッサ・
クロック・サイクルを要求する。
【0016】GPRリネーム・バッファ33はGPRフ
ァイル32に関連して、またFPRリネーム・レジスタ
37は浮動小数点レジスタ・ファイル36に関連して、
図1に示される。
【0017】順次フェッチャ17は命令キャッシュ14
から命令をフェッチし、それらを命令キュー19に配置
する。分岐処理ユニット18は順次フェッチャ17から
分岐命令を抽出し、未解決の条件付き分岐命令に対する
静的分岐予測により、予測ターゲット命令ストリームか
ら命令のフェッチを可能にする。その間、条件付き分岐
が評価される。浮動小数点演算ユニット30、固定小数
点演算ユニット22、及びロード/ストア・ユニット2
8により実行される命令は、ディスパッチ・ユニット2
0によりディスパッチされる。
【0018】命令キュー19は命令を後のディスパッチ
のために保持する。順次フェッチャ17は、命令キュー
19内で空間が許容する限り多くの命令を、連続的にロ
ードする。命令はディスパッチ・ユニット20から、そ
れらのそれぞれの実行ユニットにディスパッチされる。
通常のディスパッチ・レートは、1サイクル当たり2ま
たは4命令である。ディスパッチ・ユニット20は出所
及び宛先レジスタ依存性チェックを実行し、ディスパッ
チ直列化を決定し、要求時に命令のディスパッチを禁止
する。ほとんどの整数命令は単一サイクル命令である。
GPRレジスタ32に対する競合による機能停止が、リ
ネーム・レジスタ33の自動割当てにより最小化され
る。システムは整数命令が完了ユニット40により退去
されるとき、リネーム・レジスタ33の内容を適切なG
PRレジスタ32に書込む。
【0019】ロード/ストア・ユニット(LSU)28
は、全てのロード/ストア命令を実行し、GPR32、
FPR36、及びキャッシュ/メモリ・サブシステム1
4及び16の間のデータ転送インタフェースを提供す
る。ロード/ストア・ユニット28は有効アドレスを計
算し、データ・アライメントを実行し、ロード/ストア
・ストリング及び複数の命令の順序付けを提供する。
【0020】完了ユニット40は、ディスパッチ・ユニ
ット20による命令のディスパッチから、固定小数点演
算ユニット22などのそれぞれの実行ユニットによる実
行を通じて、命令を追跡する。完了ユニットは次に命令
をプログラム順序に退去するか、それらを完了する。
【0021】図1に示される複数実行ユニット並列処理
システムは、パイプライン式スーパスカラ・プロセッサ
であり、そこでは命令の処理が別個のステージに低減さ
れる。命令の処理が一連のステージに分解されるので、
命令は浮動小数点演算ユニット22などの実行ユニット
の資源全体を要求しない。例えば、命令が復号ステージ
を完了後、次のステージに渡され、その間に続く命令が
復号ステージに進行し得る。このことは命令フローのス
ループットを改善する。
【0022】命令パイプラインは4つの主要なパイプラ
イン・ステージを有する。フェッチ・パイプラインは主
に命令をメモリ・システムから取り出し、次の命令フェ
ッチの位置を決定する。更に、分岐処理ユニットはフェ
ッチ・ステージの間に、分岐を復号する。ディスパッチ
・パイプライン・ステージは、命令フェッチ・ステージ
により供給された命令を復号し、現サイクルにおいてデ
ィスパッチされる資格のある命令を決定する。更に、命
令のソース・オペランドが適切なレジスタ・ファイルか
ら読出され、命令と一緒に実行パイプライン・ステージ
にディスパッチされる。ディスパッチ・パイプライン・
ステージの最後に、ディスパッチ命令及びオペランドが
適切な実行ユニットによりラッチされる。
【0023】実行パイプライン・ステージの間、実行可
能な命令を有する各実行ユニットは、選択された命令を
実行し、命令の結果を適切なリネーム・レジスタに書込
み、完了ステージ40に、命令が実行を終了したことを
知らせる。完了/書戻しパイプライン・ステージは、命
令がプログラム順序に退去されるように、リネーム・レ
ジスタの内容をGPR及びFPRに書戻すことにより、
正しいアーキテクチャ・マシン状態を保持する。
【0024】図2は、本発明に従うスーパスカラ・マイ
クロプロセッサの機能ブロック図を示す。ディスパッチ
・ユニット20がルックアヘッド状態バッファ21に結
合され、後者は状態履歴バッファ23に結合される。状
態履歴バッファ23はルックアヘッド状態バッファ2
1、結果バス66及び完了ユニット40に結合される。
【0025】ルックアヘッド状態バッファ21はルック
アヘッド・レジスタのセットを含み、各レジスタは、コ
ンピュータ・プログラマに定義されるアーキテクチャ論
理レジスタに対応する。ルックアヘッド・レジスタの各
々は、物理リネーム・レジスタ39のアドレスを記憶
し、これはアーキテクチャ論理レジスタの値の最も現在
の位置を示す。
【0026】状態履歴バッファ23は、スーパスカラ・
プロセッサ10のマシン状態を追跡する。これは状態履
歴レジスタのセットを含み、各状態履歴レジスタは、汎
用レジスタ32及び浮動小数点レジスタ36内の物理リ
ネーム・レジスタの1つに対応する。状態履歴バッファ
23はそのレジスタ・セットを用いて、命令処理の間
に、各アーキテクチャ論理レジスタにされる物理リネー
ム・レジスタの割当てのリンク・リストのセットを記憶
する。更に、状態履歴バッファ23は、レジスタ・セッ
ト内の各物理リネーム・レジスタのステータスを示すス
テータス・ビットまたはフラグ52を含む。これらのス
テータス・ビット52はマイクロプロセッサ10の他の
ユニットに、物理リネーム・レジスタ39が"コミット"
値を含むことを示す。コミットは、係属中の米国特許出
願第377813号(1995年1月25日出願)にお
いて定義され、ここでは命令が実行されることが保証さ
れる前のポイントを意味するように定義される。ステー
タス・ビット52は更に、物理リネーム・レジスタ39
がフリー(解放)状態であり、従ってアーキテクチャ論
理レジスタを表すために割当てられ得る時を示す。ステ
ータス・ビット52はまた、物理リネーム・レジスタ3
9が書込まれ、従って有効な結果を含む時を示す。
【0027】図1の従来のマイクロプロセッサ10の場
合同様、ディスパッチ・ユニット20は命令を使用可能
な実行ユニットにディスパッチする。しかしながら、命
令が結果が記憶されるアーキテクチャ論理レジスタを指
定するとき、ディスパッチ・ユニット20は状態履歴バ
ッファ23のステータス・ビット52をチェックし、ど
の物理リネーム・バッファ39が割当てのために使用可
能かを判断する。ディスパッチ・ユニット20は、状態
履歴バッファのステータス・ビット52を更新すること
により、物理リネーム・バッファ39を割当て、物理リ
ネーム・レジスタ39のアドレスをルックアヘッド状態
バッファ21に記憶することにより、現アーキテクチャ
・レジスタと物理リネーム・レジスタとの対応を示し、
命令を実行のために実行ユニットにディスパッチし、現
物理リネーム・レジスタ39のアドレスを、同じアーキ
テクチャ論理レジスタの以前の値に対応する以前の物理
リネーム・レジスタ39の位置に記憶する。この後者の
ステップは、アーキテクチャ論理レジスタの各々に対応
して、状態履歴バッファ内に物理リネーム・レジスタ3
9のリンク・リストのセットを生成する。
【0028】実行ユニットは、図1の従来のマイクロプ
ロセッサ10の場合同様、ディスパッチ・ユニット20
から受信される命令を実行する。しかしながら、実行ユ
ニットが結果を生成する命令の実行を終了するとき、そ
の結果が、ディスパッチ・ユニット20により命令に割
当てられる物理リネーム・レジスタ39に書戻される。
更に、実行ユニットは、状態履歴バッファ23のステー
タス・ビット52を更新することにより、結果が対応す
る物理リネーム・レジスタ39に丁度書込まれたことを
示す。
【0029】図2の完了ユニット40は、図1に示され
る従来の完了ユニット40とは大いに異なって振る舞
う。命令をプログラム順序に完了するのではなく、図2
の完了ユニット40は、前記米国特許出願第37781
3号で詳述されるように、各命令がディスパッチされた
後に、その命令の制御フロー依存性を追跡する。命令が
実行されるように保証され、その全ての制御依存性を認
めると、命令はマシン状態を"コミット"されると言われ
る。命令がコミットされると、完了ユニット40は状態
履歴バッファ23のステータス・ビット52を更新す
る。特に、コミットされた命令からの結果を記憶するた
めに割当てられる物理リネーム・バッファ39が、デー
タが既に命令から生成されたか否かに関わらず、コミッ
ト済みとマークされる。従って、命令が非プログラム順
序に完了ユニット40によりコミットされ、実際、一部
のケースでは、データが物理リネーム・レジスタ39に
書込まれる以前にコミットされる。
【0030】物理リネーム・レジスタ39が状態履歴バ
ッファ23内でコミット済みとマークされると、同一の
アーキテクチャ論理レジスタに対応し、コミット済みの
エントリに先行する全ての物理リネーム・レジスタ39
が、プロセッサのマシン状態として不要となる。従っ
て、これらの物理リネーム・レジスタ39は体系的に上
書きされた。
【0031】物理リネーム・レジスタ39が陳腐化し、
もはや任意の命令により参照されなくなると、これは割
当て解除され、別の命令にとって使用可能になる。これ
は単純な(高頻度の)制御論理により計算され得る。す
なわち、3ビット状態マシンが、状態履歴バッファ内の
各レジスタのステータス・ビット52に関連づけられ
る。各状態履歴レジスタは、割当て、陳腐化及び書戻し
ステータス・ビット52を割当てられる。3つの全ての
ビットがセットされる場合、対応する物理リネーム・レ
ジスタ39が書込みのために解放されたことを示すよう
に、全3ビットがリセットされるべきである。割当てビ
ットがセットされる場合、対応する物理リネーム・レジ
スタ39が書込みのために使用可能である。書戻しビッ
トがセットされる場合、対応する物理リネーム・レジス
タ39が、実行ユニットにより生成された有効データを
含む。状態履歴バッファ23内のリンク・リストを追跡
することにより決定される、命令の後の例がコミットさ
れた時、及び対応する物理レジスタ39が任意の他の命
令によりオペランドとして要求されない場合、陳腐化ビ
ットがセットされる。
【0032】図3乃至図8は、マイクロプロセッサの部
分拡大図であり、ディスパッチ・ユニット20、汎用レ
ジスタ32、完了ユニット40、複数の固定小数点演算
ユニット22、ルックアヘッド状態バッファ21、及び
関連制御論理50の間の対話の例を示す。実施例の目的
上、プロセッサはプログラマにより、整数データを記憶
するために、4つのアーキテクチャ論理レジスタを有す
るように定義されている。これらのアーキテクチャ論理
レジスタはプログラマに、R0乃至R3として知られ
る。汎用レジスタ32はこの機能をP0乃至P7と指定
される8つの物理リネーム・レジスタ39により実現す
る。物理リネーム・レジスタ39の4つは、任意の時刻
に、プロセッサのマシン状態、すなわちアーキテクチャ
論理レジスタのコミット値を含む。各タイプのレジスタ
の数の選択は任意である。しかしながら、物理リネーム
・レジスタ39はアーキテクチャ論理レジスタの数を上
回らなければならない。ルックアヘッド状態バッファ2
1は4つのレジスタのセットを含み、各々は1つのアー
キテクチャ論理レジスタに対応し、物理リネーム・レジ
スタ39の1つを示すアドレスを記憶する。状態履歴バ
ッファ23は8つの状態履歴レジスタ、及び対応するス
テータス・ビット52を含む。8つの状態履歴レジスタ
は、物理リネーム・レジスタ39のアドレスのリンク・
リストを含み、これは各アーキテクチャ論理レジスタの
リネーム履歴に対応する。
【0033】図示のように、命令キュー19内のディス
パッチ・ユニット20は、マイクロプロセッサにより実
行される6ラインのプログラムである。このプログラム
は命令がディスパッチされ、連続サイクルにおいて実行
される時の、図示の要素間の対話を表すために使用され
る。この例は、浮動小数点演算ユニット30を含む図示
されない他の実行ユニットにも同様に当てはまる。
【0034】サイクル0:プロセッサの初期状態 図3はこの例におけるサイクル0を示す。プログラム・
シーケンス内の命令は、まだディスパッチされていな
い。プロセッサの初期状態がルックアヘッド状態バッフ
ァ21により示され、これはアーキテクチャ論理レジス
タR0乃至R3が、それぞれ物理リネーム・レジスタP
0乃至P3のアドレスに記憶される値を有することを示
している。状態履歴バッファはステータス・ビット52
を介して、物理リネーム・レジスタP0乃至P3が書込
み済みのエントリ、従って有効データを含むことを示
す。
【0035】サイクル1:addi命令がディスパッチ
される 図4はサイクル1を示す。加算命令がディスパッチ・ユ
ニット20から実行ユニットにディスパッチされ、R3
がアーキテクチャ論理レジスタにリネームされる。なぜ
なら、これはこの命令からの結果のターゲットであるか
らである。第1の使用可能な物理リネーム・レジスタP
4が、リネーム操作のために使用される。しかしなが
ら、P4の選択は任意であることに注意されたい。任意
のレジスタP4乃至P7が使用され得る。P4は状態履
歴バッファ内のP4に対応する"フリー"・レジスタを示
すステータス・ビットにもとづき、ディスパッチ・ユニ
ット20により選択される。ディスパッチ・ユニットは
P4に対応するステータス・ビット52を割当て状態に
セットし、以前の有効アドレスP3(ルックアヘッド状
態バッファ21から読出される)を、状態履歴バッファ
23内の位置P4のアドレス・フィールドに記憶する。
【0036】この時、実行ユニットにディスパッチされ
る加算命令のこの例は、元のaddi R3<=P1+
0x0000にもとづき、addi P4<=P1+0
x0000となる。
【0037】サイクル2:cmp及びaddi命令がデ
ィスパッチされる 図5はプロセッサのサイクル2を示す。2つの命令cm
p及びaddi命令が、多様な実行ユニットに実行のた
めにディスパッチされる。cmp命令をディスパッチす
るとき、ディスパッチ・ユニットはアーキテクチャ論理
レジスタR3及びR1にそれぞれ割当てられる現物理リ
ネーム・レジスタ39を割当てる。ディスパッチされる
比較命令は、もとのcmp CR[2]<=R3、R1
にもとづき、cmp CR[2]<=P4、P1とな
る。
【0038】addi命令は、命令の結果を記憶するた
めに、再度ターゲットアーキテクチャ論理レジスタR3
を指定する。従って、ディスパッチ・ユニット20は、
アーキテクチャ論理レジスタR3に割当てられた現物理
リネーム・レジスタP4をリネームする。状態履歴バッ
ファ23のステータス・ビット52が、第1のフリーの
物理リネーム・レジスタ39としてチェックされ、P5
がこれに相当する。従って、P5がディスパッチ・ユニ
ット20により、アーキテクチャ論理レジスタR3をリ
ネームするために使用される。P5がルックアヘッド状
態バッファ21の位置R3に記憶され、P4が状態履歴
バッファ23の位置P5に記憶され、アーキテクチャ論
理レジスタR3に以前に割当てられた物理リネーム・レ
ジスタ39のリンク・リストを生成する。更に、ディス
パッチ・ユニット20はP5に対応する状態履歴バッフ
ァ23内のステータス・ビット52を更新し、物理リネ
ーム・レジスタP5が割当てられたことを示す。この
時、ディスパッチされるaddi命令は、もとのadd
i R3<=R2+0x0000にもとづき、addi
P5<=P2+0x0000となる。
【0039】このサイクルではまた、完了ユニット40
が、addiが完了し、マシン状態をコミットされ得る
ことを信号で知らせる。ここでaddiがまだ結果を生
成していない点に注意されたい。
【0040】サイクル3:bne及びblt命令がディ
スパッチされる サイクル3が図6に示される。bne及びblt命令
は、ルックアヘッド状態バッファまたは状態履歴バッフ
ァには、直接的な影響を及ぼさない。この例では、分岐
処理ユニット18がblt分岐が位置"START"に戻るよ
うに発生することを予測している。従って、位置START
におけるaddi命令及び続く命令が、命令キューに入
力していることが明らかである。単純化のため、ここで
は分岐が正しく予測され、命令キュー19内の命令シー
ケンスが実行され続けるものと仮定する。しかしなが
ら、位置EXITにおけるlw命令はディスパッチされな
い。なぜなら、プログラム分岐がそれ以前に発生したか
らである。
【0041】このサイクルの間、状態履歴バッファ23
に関連付けられる制御論理が、P4がこのサイクルでコ
ミットされ、従ってアーキテクチャ論理レジスタR3の
以前の例が陳腐化したことを検出する。従って、P4の
ステータス・ビット52はフリー状態にセットされ、P
4はもはや有効な前任者を有さない。addi命令はま
た、その結果をこのサイクルの間に物理リネーム・レジ
スタP4に書込む。従って、利用される実行ユニット
が、状態履歴バッファ内のP4のステータス・ビット5
2を、書込み済みにセットする。
【0042】サイクル4:addi、cmp及びadd
i命令がディスパッチされる サイクル4が図7に示される。このサイクルの間、2つ
のaddi命令及び1つのcmp命令が、同時実行のた
めに多様な実行ユニットに並列にディスパッチされる。
addi命令の各々は、アーキテクチャ論理レジスタR
3の結果を生成し、cmp命令はアーキテクチャ論理レ
ジスタR3の内容をオペランドとして使用する。ディス
パッチ・ユニット20は、並列にディスパッチされる命
令間の依存性を説明しなければならない。これに関する
周知の方法が存在する。
【0043】プルグラム・シーケンス内の第1のadd
i命令は、ターゲットアーキテクチャ論理レジスタを現
物理リネーム・レジスタP5から、フリー状態の第1の
使用可能なリネーム・レジスタP3にリネームする。デ
ィスパッチ・ユニットが旧物理リネーム・レジスタ・ア
ドレスP5を、状態履歴バッファ内の新たな物理リネー
ム・レジスタP3の位置に記憶する。更に、ディスパッ
チ・ユニットは、状態履歴バッファ内の新たな物理リネ
ーム・レジスタ位置のステータス・ビット52を割当て
状態に更新する。第1のaddi命令が実行ユニットに
ディスパッチされ、これはもとのaddi R3<=R
1+0x0000にもとづき、addiP3<=P1+
0x0000となる。
【0044】命令シーケンス内の次の命令cmpは、結
果を記憶するために、アーキテクチャ論理レジスタR0
乃至R3の1つを要求しない。しかしながら、cmpは
オペランドのためにアーキテクチャ論理レジスタを要求
する。従って、命令内のオペランドが、現在ルックアヘ
ッド状態バッファ21内に示され必要とされるアーキテ
クチャ論理レジスタを表す、物理リネーム・レジスタに
リネームされる。それ故、cmp命令が実行ユニットに
ディスパッチされるとき、これはもとのcmpCR
[2]<=R3、R1にもとづき、cmp CR[2]
<=P3、P1となる。
【0045】多様な実行ユニットに同時にディスパッチ
される3つの命令のシーケンス内の最後の命令は、ad
di命令である。この命令はアーキテクチャ論理レジス
タR3が命令結果を記憶することを要求する。ディスパ
ッチ・ユニット20はアーキテクチャ論理レジスタR3
を、第1の使用可能な物理リネーム・レジスタ39によ
りリネームする。これは状態履歴バッファ23内のステ
ータス・ビットにもとづきP6に決定される。P6のア
ドレスがルックアヘッド状態バッファ21に記憶され
る。更に、アーキテクチャ論理レジスタR3に割当てら
れた以前の物理リネーム・レジスタのアドレス、すなわ
ちP3が状態履歴バッファ23の位置P6に記憶され
る。従って、アーキテクチャ論理レジスタR3に対応す
る物理リネーム・レジスタ39のリンク・リストが、状
態履歴バッファ23に記憶される。ディスパッチ・ユニ
ット20はまた、状態履歴バッファ23内のP6に対応
するステータス・ビット52を更新し、物理リネーム・
レジスタP6が割当てられたことを示す。
【0046】addi命令が実行ユニットにディスパッ
チされるとき、これはもとのaddi R3<=R2+
0x0000にもとづき、addi P6<=P2+0
x0000となる。
【0047】addi命令は完了ユニットによりこのサ
イクルをコミットされ、状態履歴バッファ23内のステ
ータス・ビットがこのことを反映する。
【0048】サイクル5:割込みが信号で伝えられ、正
しいマシン状態を生成するために、ルックアヘッド状態
が回復されなければならない サイクル5が図8に示される。状態履歴バッファ23に
結合される制御論理50が、物理リネーム・レジスタP
5がこのサイクルをコミットされることを、そのステー
タス・ビット52にもとづき判断する。前任者のP4は
陳腐化する。従って、P4のステータス・ビット52が
フリー状態にセットされる。P5はもはや有効な前任者
を有さない。
【0049】割込みが信号で伝えられるとき、ルックア
ヘッド状態バッファ21がコミット済みマシン状態にリ
セットされなければならない。これを実行するために、
状態履歴バッファ23が使用される。R3は現在、ルッ
クアヘッド状態バッファ21内でP6にセットされてい
る。しかしながら、アーキテクチャ論理レジスタR3の
マシン状態を決定するためにR3に関連付けられる状態
履歴バッファ23内のリンク・リストを追跡し、最も早
くコミットされた物理リネーム・レジスタ39を見い出
さねばならない。R3に対応する状態履歴バッファ内の
リンク・リストは、R3=>P6=>P3=>P5であ
る。この進行は、状態履歴バッファ23の内容から、明
らかである。P5が状態履歴バッファ内の最早コミット
済みエントリである。従って、R3は物理リネーム・レ
ジスタP5が、アーキテクチャ論理レジスタR3のマシ
ン状態のコミット値を含むことを示すように、ルックア
ヘッド状態バッファ21内でP5にセットされるべきで
ある。
【0050】以上、本発明の特定の実施例について開示
したが、当業者には本発明の趣旨及び範囲から逸脱する
こと無しに、これらの特定の実施例に対する変更が可能
であることが理解されよう。
【0051】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0052】(1)命令ソースから入力される命令列
の、実行ユニットによる非プログラム順序の実行に起因
するデータ・フロー依存性を管理する装置であって、前
記実行ユニットに結合され、アドレスを有し、前記命令
列の実行の間に生成される結果を記憶する複数の物理リ
ネーム・レジスタと、前記物理リネーム・レジスタに結
合され、前記命令列内で指定されるアーキテクチャ論理
レジスタへの現割当てを示す、前記物理リネーム・レジ
スタの前記アドレスを記憶する、ルックアヘッド状態バ
ッファと、前記ルックアヘッド状態バッファに結合さ
れ、該ルックアヘッド状態バッファ内で前記アーキテク
チャ論理レジスタの各々に連続的に割当てられる、前記
物理リネーム・レジスタの前記アドレスの複数のリンク
・リストを記憶する状態履歴バッファであって、前記状
態履歴バッファが、前記複数の物理リネーム・レジスタ
の各々内のデータの状態を示す変更可能なステータス・
ビットを有する、状態履歴バッファと、を含む、装置。 (2)前記命令ソース、前記状態履歴バッファ、及び前
記ルックアヘッド状態バッファに結合されるディスパッ
チ・ユニットであって、前記ディスパッチ・ユニットが
前記ステータス・ビットにもとづき、フリーの前記物理
リネーム・レジスタを判断し、前記フリーの物理リネー
ム・レジスタを結果の記憶のためにアーキテクチャ論理
レジスタを指定する命令に割当て、前記フリーの物理リ
ネーム・レジスタのアドレスを前記ルックアヘッド状態
バッファに記憶し、命令をディスパッチする、ディスパ
ッチ・ユニットを含む、前記(1)記載の装置。 (3)前記実行ユニットが前記ディスパッチ・ユニッ
ト、前記リネーム・レジスタ、及び前記状態履歴バッフ
ァに結合され、前記実行ユニットが前記ディスパッチ・
ユニットから前記命令を受信し、実行し、前記命令から
の結果を前記複数の物理リネーム・レジスタに書込み、
前記ステータス・ビットを更新することにより、前記複
数の物理リネーム・レジスタの各々が書込まれたことを
示す、前記(2)記載の装置。 (4)前記状態履歴バッファ及び前記実行ユニットに結
合され、命令により生成された結果が前記複数のアーキ
テクチャ論理レジスタの1つにコミットされ得るときを
判断し、前記データがコミットされるとき、前記ステー
タス・ビットを更新する完了ユニットを含む、前記
(3)記載の装置。 (5)前記状態履歴バッファに結合され、前記複数の物
理リネーム・レジスタの1つ内のコミット・データが陳
腐化するとき、前記ステータス・ビットをリセットする
制御論理を含む、前記(4)記載の装置。 (6)前記状態履歴バッファに結合され、前記複数の物
理リネーム・レジスタの1つ内のコミット・データが陳
腐化するとき、前記ステータス・ビットをリセットする
制御論理を含む、前記(1)記載の装置。 (7)前記ステータス・ビットが、前記複数の物理リネ
ーム・レジスタの各々がフリー、割当て済み、書込み済
み及びコミット済みであることを示す、ステータス・ビ
ットと、前記状態履歴バッファに結合され、コミット済
みを示す前記ステータス・ビットを有する、前記状態履
歴バッファ内の前記複数のリンク・リストの1つへの後
任エントリに応答して、前記物理リネーム・レジスタに
対応する前記ステータス・ビットを前記フリー状態にリ
セットする制御論理と、を含む、前記(1)記載の装
置。 (8)前記実行ユニットが前記ディスパッチ・ユニッ
ト、前記物理リネーム・レジスタ、及び前記状態履歴バ
ッファに結合され、前記実行ユニットが前記命令列から
前記命令を受信し、実行し、前記命令からの結果を前記
複数の物理リネーム・レジスタに書込み、前記ステータ
ス・ビットを更新することにより、前記複数の物理リネ
ーム・レジスタの各々が書込まれたことを示す、前記
(1)記載の装置。 (9)前記実行ユニットに結合され、前記命令列内の命
令により生成される結果が、前記複数のアーキテクチャ
論理レジスタの1つにコミットされ得るときを判断し、
前記データがコミットされるときに、前記ステータス・
ビットを更新する完了ユニットを含む、前記(1)記載
の装置。 (10)前記フリーの物理リネーム・レジスタの割当て
に応答して、前記ディスパッチ・ユニットが前記ステー
タス・ビットを更新する、前記(2)記載の装置。 (11)命令列の非プログラム順序の実行に起因するデ
ータ・フロー依存性を管理する方法であって、物理リネ
ーム・レジスタを前記命令列内で指定されるアーキテク
チャ論理レジスタに割当てるステップと、前記命令列の
実行の間に生成される結果を前記物理リネーム・レジス
タに記憶するステップと、前記アーキテクチャ論理レジ
スタの各々への前記物理リネーム・レジスタの割当ての
履歴を追跡するステップと、前記複数の物理リネーム・
レジスタの各々内のデータのステータスを示すステップ
と、を含む、方法。 (12)前記ステータス・ビットにもとづき、フリーの
前記物理リネーム・レジスタを判断するステップと、前
記フリーの物理リネーム・レジスタを、結果の記憶のた
めに前記アーキテクチャ論理レジスタの1つを指定する
命令に割当てるステップと、前記フリーの物理リネーム
・レジスタの前記アドレスを、ルックアヘッド状態バッ
ファに記憶するステップと、命令を実行のためにディス
パッチするステップと、を含む、前記(11)記載の方
法。 (13)命令により生成される結果が、前記複数のアー
キテクチャ論理レジスタの1つにコミットされ得るとき
を判断するステップを含む、前記(11)記載の方法。 (14)前記複数の物理リネーム・レジスタの各々内の
データの前記ステータスを示すステップが、前記複数の
物理リネーム・レジスタの各々がフリー、割当て済み、
書込み済み及びコミット済みであるときを示すステップ
を含む、前記(13)記載の方法。 (15)前記結果を記憶するステップが、少なくとも1
つの実行ユニットが命令を実行し、前記命令列から結果
を生成することに応答して発生する、前記(13)記載
の方法。
【図面の簡単な説明】
【図1】従来の複数実行ユニット・スーパスカラ・プロ
セッサの機能ブロック図である。
【図2】本発明を組み込む複数実行ユニット並列プロセ
ッサの機能ブロック図である。
【図3】単純なプログラム例を実行するマイクロプロセ
ッサのサイクル0における部分拡大図であり、ディスパ
ッチ・ユニット、汎用レジスタ、完了ユニット、複数の
実行ユニット、ルックアヘッド状態バッファ、状態履歴
バッファ、及び関連制御論理の間の対話を示す図であ
る。
【図4】単純なプログラム例を実行するマイクロプロセ
ッサのサイクル1における部分拡大図であり、ディスパ
ッチ・ユニット、汎用レジスタ、完了ユニット、複数の
実行ユニット、ルックアヘッド状態バッファ、状態履歴
バッファ、及び関連制御論理の間の対話を示す図であ
る。
【図5】単純なプログラム例を実行するマイクロプロセ
ッサのサイクル2における部分拡大図であり、ディスパ
ッチ・ユニット、汎用レジスタ、完了ユニット、複数の
実行ユニット、ルックアヘッド状態バッファ、状態履歴
バッファ、及び関連制御論理の間の対話を示す図であ
る。
【図6】単純なプログラム例を実行するマイクロプロセ
ッサのサイクル3における部分拡大図であり、ディスパ
ッチ・ユニット、汎用レジスタ、完了ユニット、複数の
実行ユニット、ルックアヘッド状態バッファ、状態履歴
バッファ、及び関連制御論理の間の対話を示す図であ
る。
【図7】単純なプログラム例を実行するマイクロプロセ
ッサのサイクル4における部分拡大図であり、ディスパ
ッチ・ユニット、汎用レジスタ、完了ユニット、複数の
実行ユニット、ルックアヘッド状態バッファ、状態履歴
バッファ、及び関連制御論理の間の対話を示す図であ
る。
【図8】単純なプログラム例を実行するマイクロプロセ
ッサのサイクル5における部分拡大図であり、ディスパ
ッチ・ユニット、汎用レジスタ、完了ユニット、複数の
実行ユニット、ルックアヘッド状態バッファ、状態履歴
バッファ、及び関連制御論理の間の対話を示す図であ
る。
【符号の説明】
10 スーパスカラ・プロセッサ 11 外部バス 12 バス・インタフェース・ユニット 14 命令キャッシュ及びメモリ管理ユニット(MM
U) 16 メモリ管理ユニット 17 順次フェッチャ 18 分岐処理ユニット 19 命令キュー 20 ディスパッチ・ユニット 21 ルックアヘッド状態バッファ 22 固定小数点演算ユニット 23 状態履歴バッファ 26 FPR 28 ロード/ストア・ユニット 30 浮動小数点演算ユニット 32 汎用レジスタ・ファイル 33 GPRリネーム・バッファ 36 浮動小数点レジスタ・ファイル 37 FPRリネーム・レジスタ 39 物理リネーム・レジスタ 40 完了ユニット 50 関連制御論理 52 フラグ 66 結果バス
───────────────────────────────────────────────────── フロントページの続き (71)出願人 594083818 モトローラ・インコーポレイテッド アメリカ合衆国60196、イリノイ州シャー ムバーク、イースト・アルゴンクイン・ロ ード1303、サ−ド・フロワー (72)発明者 テレンス・エム・ポッター アメリカ合衆国78731、テキサス州オース ティン、ツイン・レッジ・コーブ 6107 (72)発明者 ベティ・ワイ・キクタ アメリカ合衆国94040、カリフォルニア州 マウンテン・ビュー、ブッシュ・ストリー ト 546

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】命令ソースから入力される命令列の、実行
    ユニットによる非プログラム順序の実行に起因するデー
    タ・フロー依存性を管理する装置であって、 前記実行ユニットに結合され、アドレスを有し、前記命
    令列の実行の間に生成される結果を記憶する複数の物理
    リネーム・レジスタと、 前記物理リネーム・レジスタに結合され、前記命令列内
    で指定されるアーキテクチャ論理レジスタへの現割当て
    を示す、前記物理リネーム・レジスタの前記アドレスを
    記憶する、ルックアヘッド状態バッファと、 前記ルックアヘッド状態バッファに結合され、該ルック
    アヘッド状態バッファ内で前記アーキテクチャ論理レジ
    スタの各々に連続的に割当てられる、前記物理リネーム
    ・レジスタの前記アドレスの複数のリンク・リストを記
    憶する状態履歴バッファであって、前記状態履歴バッフ
    ァが、前記複数の物理リネーム・レジスタの各々内のデ
    ータの状態を示す変更可能なステータス・ビットを有す
    る、状態履歴バッファと、 を含む、装置。
  2. 【請求項2】前記命令ソース、前記状態履歴バッファ、
    及び前記ルックアヘッド状態バッファに結合されるディ
    スパッチ・ユニットであって、前記ディスパッチ・ユニ
    ットが前記ステータス・ビットにもとづき、フリーの前
    記物理リネーム・レジスタを判断し、前記フリーの物理
    リネーム・レジスタを結果の記憶のためにアーキテクチ
    ャ論理レジスタを指定する命令に割当て、前記フリーの
    物理リネーム・レジスタのアドレスを前記ルックアヘッ
    ド状態バッファに記憶し、命令をディスパッチする、デ
    ィスパッチ・ユニットを含む、請求項1記載の装置。
  3. 【請求項3】前記実行ユニットが前記ディスパッチ・ユ
    ニット、前記リネーム・レジスタ、及び前記状態履歴バ
    ッファに結合され、前記実行ユニットが前記ディスパッ
    チ・ユニットから前記命令を受信し、実行し、前記命令
    からの結果を前記複数の物理リネーム・レジスタに書込
    み、前記ステータス・ビットを更新することにより、前
    記複数の物理リネーム・レジスタの各々が書込まれたこ
    とを示す、請求項2記載の装置。
  4. 【請求項4】前記状態履歴バッファ及び前記実行ユニッ
    トに結合され、命令により生成された結果が前記複数の
    アーキテクチャ論理レジスタの1つにコミットされ得る
    ときを判断し、前記データがコミットされるとき、前記
    ステータス・ビットを更新する完了ユニットを含む、請
    求項3記載の装置。
  5. 【請求項5】前記状態履歴バッファに結合され、前記複
    数の物理リネーム・レジスタの1つ内のコミット・デー
    タが陳腐化するとき、前記ステータス・ビットをリセッ
    トする制御論理を含む、請求項4記載の装置。
  6. 【請求項6】前記状態履歴バッファに結合され、前記複
    数の物理リネーム・レジスタの1つ内のコミット・デー
    タが陳腐化するとき、前記ステータス・ビットをリセッ
    トする制御論理を含む、請求項1記載の装置。
  7. 【請求項7】前記ステータス・ビットが、前記複数の物
    理リネーム・レジスタの各々がフリー、割当て済み、書
    込み済み及びコミット済みであることを示す、ステータ
    ス・ビットと、 前記状態履歴バッファに結合され、コミット済みを示す
    前記ステータス・ビットを有する、前記状態履歴バッフ
    ァ内の前記複数のリンク・リストの1つへの後任エント
    リに応答して、前記物理リネーム・レジスタに対応する
    前記ステータス・ビットを前記フリー状態にリセットす
    る制御論理と、 を含む、請求項1記載の装置。
  8. 【請求項8】前記実行ユニットが前記ディスパッチ・ユ
    ニット、前記物理リネーム・レジスタ、及び前記状態履
    歴バッファに結合され、前記実行ユニットが前記命令列
    から前記命令を受信し、実行し、前記命令からの結果を
    前記複数の物理リネーム・レジスタに書込み、前記ステ
    ータス・ビットを更新することにより、前記複数の物理
    リネーム・レジスタの各々が書込まれたことを示す、請
    求項1記載の装置。
  9. 【請求項9】前記実行ユニットに結合され、前記命令列
    内の命令により生成される結果が、前記複数のアーキテ
    クチャ論理レジスタの1つにコミットされ得るときを判
    断し、前記データがコミットされるときに、前記ステー
    タス・ビットを更新する完了ユニットを含む、請求項1
    記載の装置。
  10. 【請求項10】前記フリーの物理リネーム・レジスタの
    割当てに応答して、前記ディスパッチ・ユニットが前記
    ステータス・ビットを更新する、請求項2記載の装置。
  11. 【請求項11】命令列の非プログラム順序の実行に起因
    するデータ・フロー依存性を管理する方法であって、 物理リネーム・レジスタを前記命令列内で指定されるア
    ーキテクチャ論理レジスタに割当てるステップと、 前記命令列の実行の間に生成される結果を前記物理リネ
    ーム・レジスタに記憶するステップと、 前記アーキテクチャ論理レジスタの各々への前記物理リ
    ネーム・レジスタの割当ての履歴を追跡するステップ
    と、 前記複数の物理リネーム・レジスタの各々内のデータの
    ステータスを示すステップと、 を含む、方法。
  12. 【請求項12】前記ステータス・ビットにもとづき、フ
    リーの前記物理リネーム・レジスタを判断するステップ
    と、 前記フリーの物理リネーム・レジスタを、結果の記憶の
    ために前記アーキテクチャ論理レジスタの1つを指定す
    る命令に割当てるステップと、 前記フリーの物理リネーム・レジスタの前記アドレス
    を、ルックアヘッド状態バッファに記憶するステップ
    と、 命令を実行のためにディスパッチするステップと、 を含む、請求項11記載の方法。
  13. 【請求項13】命令により生成される結果が、前記複数
    のアーキテクチャ論理レジスタの1つにコミットされ得
    るときを判断するステップを含む、請求項11記載の方
    法。
  14. 【請求項14】前記複数の物理リネーム・レジスタの各
    々内のデータの前記ステータスを示すステップが、前記
    複数の物理リネーム・レジスタの各々がフリー、割当て
    済み、書込み済み及びコミット済みであるときを示すス
    テップを含む、請求項13記載の方法。
  15. 【請求項15】前記結果を記憶するステップが、少なく
    とも1つの実行ユニットが命令を実行し、前記命令列か
    ら結果を生成することに応答して発生する、請求項13
    記載の方法。
JP9294604A 1996-11-13 1997-10-27 データ依存性を管理する装置及び方法 Pending JPH10154073A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/748459 1996-11-13
US08/748,459 US5872949A (en) 1996-11-13 1996-11-13 Apparatus and method for managing data flow dependencies arising from out-of-order execution, by an execution unit, of an instruction series input from an instruction source

Publications (1)

Publication Number Publication Date
JPH10154073A true JPH10154073A (ja) 1998-06-09

Family

ID=25009537

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9294604A Pending JPH10154073A (ja) 1996-11-13 1997-10-27 データ依存性を管理する装置及び方法

Country Status (3)

Country Link
US (1) US5872949A (ja)
JP (1) JPH10154073A (ja)
GB (1) GB2320776B (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314511B2 (en) * 1997-04-03 2001-11-06 University Of Washington Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers
US6070235A (en) * 1997-07-14 2000-05-30 International Business Machines Corporation Data processing system and method for capturing history buffer data
US6061777A (en) * 1997-10-28 2000-05-09 International Business Machines Corporation Apparatus and method for reducing the number of rename registers required in the operation of a processor
US6108771A (en) * 1997-12-19 2000-08-22 International Business Machines Corporation Register renaming with a pool of physical registers
US6425072B1 (en) * 1999-08-31 2002-07-23 Advanced Micro Devices, Inc. System for implementing a register free-list by using swap bit to select first or second register tag in retire queue
US7689560B2 (en) * 2000-10-13 2010-03-30 Miosoft Corporation Persistent data storage techniques
GB2408819B (en) * 2000-11-29 2005-08-03 Nec Corp Data processor with an improved data dependence detector
JP3729064B2 (ja) * 2000-11-29 2005-12-21 日本電気株式会社 データ依存関係検出装置
US7043626B1 (en) 2003-10-01 2006-05-09 Advanced Micro Devices, Inc. Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming
US20080162889A1 (en) * 2007-01-03 2008-07-03 International Business Machines Corporation Method and apparatus for implementing efficient data dependence tracking for multiprocessor architectures
US7860904B2 (en) * 2007-04-24 2010-12-28 Microsoft Corporation Standalone execution of incomplete data flows
US7860905B2 (en) * 2007-04-24 2010-12-28 Microsoft Corporation Systems and methods for modularizing data flows
JP2009169767A (ja) * 2008-01-17 2009-07-30 Toshiba Corp パイプライン型プロセッサ
US8037366B2 (en) * 2009-03-24 2011-10-11 International Business Machines Corporation Issuing instructions in-order in an out-of-order processor using false dependencies
US9672044B2 (en) * 2012-08-01 2017-06-06 Nxp Usa, Inc. Space efficient checkpoint facility and technique for processor with integrally indexed register mapping and free-list arrays
US10599852B2 (en) 2014-08-15 2020-03-24 Securisea, Inc. High performance software vulnerabilities detection system and methods
US9824214B2 (en) 2014-08-15 2017-11-21 Securisea, Inc. High performance software vulnerabilities detection system and methods
US9454659B1 (en) 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
US11188334B2 (en) 2019-12-02 2021-11-30 Microsoft Technology Licensing, Llc Obsoleting values stored in registers in a processor based on processing obsolescent register-encoded instructions

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
EP0779577B1 (en) * 1993-10-18 2002-05-22 VIA-Cyrix, Inc. Micoprocessor pipe control and register translation
US5694553A (en) * 1994-01-04 1997-12-02 Intel Corporation Method and apparatus for determining the dispatch readiness of buffered load operations in a processor
US5559976A (en) * 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
US5535346A (en) * 1994-07-05 1996-07-09 Motorola, Inc. Data processor with future file with parallel update and method of operation
US5625789A (en) * 1994-10-24 1997-04-29 International Business Machines Corporation Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle

Also Published As

Publication number Publication date
GB2320776A (en) 1998-07-01
GB9721646D0 (en) 1997-12-10
US5872949A (en) 1999-02-16
GB2320776B (en) 2001-09-26

Similar Documents

Publication Publication Date Title
JP3093639B2 (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
KR100592122B1 (ko) 가상 레지스터 번호들을 이용하여 논리적 레지스터 번호들을 물리적 레지스터 번호들로 맵핑시키도록 구성된 프로세서
US5655096A (en) Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US6131157A (en) System and method for retiring approximately simultaneously a group of instructions in a superscalar microprocessor
JP3014773B2 (ja) プロセサアーキテクチャ
US7055021B2 (en) Out-of-order processor that reduces mis-speculation using a replay scoreboard
JP3547482B2 (ja) 情報処理装置
US5826055A (en) System and method for retiring instructions in a superscalar microprocessor
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
EP1145110B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
US6119223A (en) Map unit having rapid misprediction recovery
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
US5872949A (en) Apparatus and method for managing data flow dependencies arising from out-of-order execution, by an execution unit, of an instruction series input from an instruction source
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
JP3347052B2 (ja) 命令識別子を使用して命令順序を判定するためのデータ処理システムおよび方法
JPH096611A (ja) データ処理システムにおけるデータをバッファリングする方法およびシステム
US6393546B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US5727177A (en) Reorder buffer circuit accommodating special instructions operating on odd-width results
KR100572040B1 (ko) 명령들의 퇴거시 물리적인 레지스터들을 선택적으로 자유화하도록 구성된 프로세서