JPH10283187A - プロセッサのアーキテクチャ状態を維持するための方法および装置 - Google Patents

プロセッサのアーキテクチャ状態を維持するための方法および装置

Info

Publication number
JPH10283187A
JPH10283187A JP10100512A JP10051298A JPH10283187A JP H10283187 A JPH10283187 A JP H10283187A JP 10100512 A JP10100512 A JP 10100512A JP 10051298 A JP10051298 A JP 10051298A JP H10283187 A JPH10283187 A JP H10283187A
Authority
JP
Japan
Prior art keywords
instruction
dispatched
tag
entry
instructions
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
JP10100512A
Other languages
English (en)
Other versions
JP3132755B2 (ja
Inventor
Chon Hoichii
ホイチー・チョン
Hung Qui Le
フン・キュー・レ
S Myuhiku John
ジョン・エス・ミュヒク
Steven W White
スチーブン・ダブリュー・ホワイト
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 JPH10283187A publication Critical patent/JPH10283187A/ja
Application granted granted Critical
Publication of JP3132755B2 publication Critical patent/JP3132755B2/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/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】
【従来の技術】
関連特許出願の相互参照 本特許は、本出願より先に出願され、本出願人に譲渡さ
れ、参照により本明細書に組み込まれる以下の特許出願
に関連する。 METHOD AND APPARATUS FOR IMPROVED RECOVERY OF PROC
ESSOR STATE USING HISTORY BUFFER、米国特許出願第0
8/729307号、1996年10月15日出願 METHOD AND APPRATUS FOR WRITING INFORMATION TO REG
ISTERS IN A DATA PROCESSING SYSTEM USING A NUMBER
OF REGISTERS FOR PROCESSING INSTRUCTIONS、米国特許
出願第08/729308号、1996年10月15日
出願 METHOD AND APPRATUS FOR CONDENSED HISTORY BUFFER、
米国特許出願第08/729309号、1996年10
月15日出願
【0003】本特許は、本出願と同日に出願され、本出
願人に譲渡され、参照により本明細書に組み込まれる以
下の特許出願に関連する。 ISSUING INSTRUCTIONS IN A PROCESSOR SUPPORTING OUT
-OF-ORDER EXECUTION、米国特許出願第08/8296
62号(代理人整理番号AA9−96−048) DISPATCHING INSTRUCTIONS IN A PROCESSOR SUPPORTING
OUT-OF-ORDER EXECUTION、米国特許出願第08/82
9663号(代理人整理番号AT9−97−001) METHOD AND APPRATUS FOR IMPROVED INSTRUCTION COMPL
ETION、第08/829671号(代理人整理番号AA
9−96−061) DATA PROCESSING SYSTEM AND METHOD FOR DETERMINING
AN INSTRUCTION ORDERUSING AN INSTRUCTION IDENTIFIE
R、米国特許出願第08/829592号(代理人整理
番号AT9−97−022)
【0004】発明の背景 データ処理システムで現在使用されている高性能プロセ
ッサは、「スーパスカラ」動作が可能であり、「パイプ
ライン式」要素を有する可能性がある。スーパスカラ・
プロセッサは、単一処理サイクル内に複数の命令を処理
するためにパラレルに動作する複数の要素を有する。パ
イプライン処理は複数の段階で命令を処理することを含
むので、パイプライン式段階は複数の命令を同時に処理
することができる。
【0005】「命令取出し」段階という典型的な第1の
段階では、命令がメモリから取り出される。次に、「デ
コード」段階では、命令が各種制御ビットにデコードさ
れ、この制御ビットは一般にi)その命令が指定する動
作を実行するための機能ユニットのタイプと、ii)その
動作のソース・オペランドと、iii)動作の結果の宛先
とを指定する。次に、「ディスパッチ」段階では、デコ
ードした命令が制御ビットに応じて「実行」段階を有す
るユニットにディスパッチされる。この段階は、その命
令が指定する通りに動作を処理する。命令が指定した動
作の実行は、1つまたは複数のオペランドを受け入れる
ことと、1つまたは複数の結果を生成することを含む。
【0006】「完了」段階は、複数の同時実行の命令が
単一レジスタに結果を寄託するような、同時実行から発
生するプログラム順序問題を処理する。また、この段階
は、割込みが行われた命令に続き、その宛先レジスタに
結果を預ける複数の命令から発生する問題も処理する。
完了段階では、命令は、その結果を預けることがプログ
ラム順序に違反しないように、もはや割込みの可能性が
なくなる時点まで待ち、その時点で命令はここで使用す
るように「完了」したと見なされる。完了段階に関連し
て、宛先レジスタに結果が預けられる前に実行結果を保
持するためのバッファ、または割込みがレジスタ内容を
その事前チェックポイント値に戻す必要がある場合に指
定のチェックポイントでレジスタの内容をバックアップ
するためのバッファ、あるいはその両方のバッファが存
在する可能性がある。特定の実施態様では、いずれか一
方のタイプまたは両方のタイプのバッファを使用するこ
とができる。完了時には、保持バッファ内の実行結果が
宛先レジスタ内に預けられ、バックアップ・バッファが
解放される。
【0007】上記のプロセッサ用の命令は当初は何らか
のプログラム式論理シーケンスで処理するために作成す
ることができるが、何らかの点で異なるシーケンスで処
理できることに留意されたい。しかし、命令は互いに完
全に独立しているわけではないので、複雑な状況が発生
する。すなわち、1つの命令の処理が他の命令からの結
果に依存する場合がある。たとえば、分岐命令に続く命
令の処理は、分岐命令が選択した分岐経路に依存するこ
とになる。他の例では、処理システム内の一部のメモリ
要素の内容を読み取る命令の処理は、そのメモリ要素に
書き込む先行命令の結果に依存する場合がある。
【0008】このような例が示唆するように、1つの命
令が第1の命令に依存し、両方の命令を同時に処理すべ
きであるかまたは第1の命令の前に従属命令を処理すべ
きである場合、第1の命令によって生成された結果に関
する想定を行わなければならない。命令の実行のために
プロセッサが使用するレジスタの内容によって少なくと
も部分的に定義されるように、プロセッサの「状態」は
サイクルごとに変化する可能性がある。命令を処理する
ために使用する想定が間違っていることが分かった場
合、当然のことながら、その命令の処理によって生成さ
れる結果は、ほとんど確実に間違ったものになり、プロ
セッサ状態は、その想定の対象となった命令までが既知
の正しい結果となる状態に回復しなければならない。
(本明細書では、想定の対象となった命令を「割込み可
能命令」といい、プロセッサ状態を前の状態に回復する
必要性を誘発するような、想定が間違っているという判
定を「割込み」という。また、命令ストリーム内で割込
み可能命令が発生する点を「割込み点」という。)間違
った想定に加え、プロセッサ状態の回復を必要とするこ
のような割込みの原因は他にもある。このような割込み
は一般に、プロセッサ外部の命令実行、エラー、または
信号に関連して発生する異常条件によって発生する。
【0009】割込み可能命令の前にプロセッサ状態を保
管するための履歴バッファ(「HB」)の使い方は既知
のものなので、割込みが発生した場合、HB制御論理回
路はレジスタの内容を復元することによってプロセッサ
状態を割込み点に回復することができる。
【0010】履歴バッファ方式では、例外回復のために
必要な投機更新をバックアウトするために効率のよいメ
カニズムを提供する際の問題が認識されている。その結
果、現行プロセッサで使用される主要メカニズムは、様
々なリネーム・レジスタ方式を含む。しかし、レジスタ
・リネーム技法もハイエンド・プロセッサ設計者に対し
て相当な難題をもたらす。
【0011】たとえば、リネームによって命令をディス
パッチすると、プロセッサはリネーム・レジスタ・テー
ブルの参照を行い、どのリネーム・レジスタが指定のア
ーキテクチャ・レジスタの現行バージョンを保持するか
を判定しなければならない。このような2レベル・レジ
スタ・アクセス(一方はリネーム・テーブル向けで、も
う一方はリネーム・インデックスを使用する物理レジス
タ・ファイル向け)はサイクル時間限定経路になること
が多い。しかし、順不同で発行される命令の数は、使用
可能なリネーム・レジスタの数によって決まる。リネー
ム・レジスタが一切使用可能ではない場合、現在パイプ
内にある命令の完了によってリネーム・レジスタがもう
一度使用可能になるまで、ディスパッチを停止しなけれ
ばならない。
【0012】さらに、ほとんどの既存のリネーム・レジ
スタ・ベースの方式は、命令の適正順序完了を可能にす
るために完了テーブルを取り入れている。命令完了は、
リネーム・レジスタ内に維持されるレジスタの「将来フ
ァイル」コピーによってアーキテクチャ・レジスタ・セ
ットを更新することを含む。完了テーブルのサイズは、
活動可能な(たとえば、まだ完了していないがディスパ
ッチされた)命令の数に対する厳格な制限になる場合が
多い。さらに、リネーム・レジスタの寿命は基本的に、
ディスパッチから適正順序完了までの間隔からなる。し
たがって、リネーム・レジスタの数は、所与のコード・
ブロック用の活動命令の数に対するもう1つの厳格な制
限になる場合が多い。
【0013】しかも、リネーム・レジスタは投機実行命
令に関する将来状態結果を維持するために有用である
が、例外の検出および例外からの回復を可能にするため
に追加のメカニズムが必要になる場合が多い。たとえ
ば、予測される条件付き分岐を超える投機命令の回復を
可能にするため、所与の命令を含む基本ブロックを識別
する2ビット・タグで命令にタグを付けることが1つの
解決策になる。分岐が予測外れであると判明した場合、
そのタグはブロードキャストされ、後続ブロック用のタ
グが付いた命令はマシンから除去される。
【0014】固有のタグで基本ブロック(分岐によって
線引きされるコード・ブロック)にタグを付けると、こ
のような分岐点でのみ命令ストリームを消去し、再取出
しすることができる。ロードおよびストアについて発生
するページ・フォルトは、あまり頻繁に発生しないと見
なされることが多いので、「より安価」で感度の低い解
決策を使用することが多い。完了テーブルを取り入れた
方式で一般的な解決策の1つは、違反命令が完了命令に
なる次のステップになるまで待ち、すべての命令をマシ
ンから消去し、障害命令の位置で割込みを行うだけであ
る。
【0015】特にロードおよびストアの場合に順不同実
行の程度を制限するシステムでは、他のメカニズムを使
用して記憶域の一貫性を維持する。たとえば、多くのシ
ステムでは、ロードおよびストアが厳密に適正順序で実
行される。その結果、ロードが前のストアによって格納
された位置からデータを要求する場合、そのストアはす
でに実行されたものになるので、単純な追跡メカニズム
でも、続行することがそのロードにとって安全であるか
どうか、またはストアがキャッシュにデータを書き込む
のを待ってそれを実行状態に保持すべきかどうかを示す
ことができる。この単純なメカニズムは、ロードおよび
ストアの順不同実行を可能にするより積極的な設計を処
理するように容易に適合させることはできない。
【0016】また、投機実行は、オーバフロー(このた
め、サマリー・オーバフロー)設定命令に関して順不同
にサマリー・オーバフロー・フラグを読み取る命令の実
行という形を取ることもできる。ほとんどの場合、オー
バフロー・フラグを設定できる命令は、滅多にオーバフ
ロー・フラグを設定しない。その結果、PowerPC
604などの設計では、まれなケースを処理するために
特殊な検査ハードウェアを取り入れないことにしてお
り、命令を順次方式で実行するだけである。オーバフロ
ー設定(たとえば、OE=1)命令がディスパッチ時に
検出されると、先行命令がすべて完了するまでディスパ
ッチが停止される。このため、すべての先行命令は、潜
在的な更新の前の値である「古い」オーバフロー・フラ
グ値を確実に獲得することができる。次に、オーバフロ
ー設定命令は完了まで実行される。次に、後続命令がデ
ィスパッチできるようになる。オーバフロー設定命令が
完了するまでディスパッチを保留すると、後続命令がオ
ーバフローおよびサマリー・オーバフロー・フラグの
「新しい」値を獲得することが保証される。この単純な
メカニズムは部分的に選択されることが多い。というの
は、設計者はオーバフローなどのフラグについてレジス
タ・リネーム技法をサポートしようと思わないからであ
る。これはオーバフロー設定命令を処理するための単純
なメカニズムであるが、このような命令を適度な量だけ
有するコードでもパフォーマンスに及ぼす順次化の影響
はかなり激しいものになる。オーバフローは滅多に発生
しないので、オーバフローは設定されず、後続命令が投
機実行されるという結果になると「推測」することによ
り、パフォーマンス上の利点が得られるだろう。
【0017】GPRおよびリネーム・レジスタに加え、
ほとんどのリネーム・レジスタ方式では、どのリネーム
・レジスタがGPRの「最新」コピーを保持しているか
を追跡するためにマッピング・テーブルを必要とする。
このマッピング・テーブルは、命令のソース・レジスタ
用のソース位置を決定するためにディスパッチによって
使用される。
【0018】上記のように、リネーム技法は、様々な形
式の投機実行のそれぞれについて回復を行うためのグロ
ーバルな解決策を独力で提供することはできない。した
がって、予測外れ分岐、ページ・フォルト例外、ロード
ヒットストアの衝突、オーバフロー条件などを処理する
ために数通りのメカニズムを取り入れることが多い。
【0019】
【発明が解決しようとする課題】したがって、本発明の
目的は、発生した割込みのタイプとは無関係な割込みお
よび分岐回復を処理するための方法を提供することにあ
る。本発明の他の目的および利点は、以下の開示内容を
考慮すると明らかになるだろう。
【0020】
【課題を解決するための手段】本発明の一態様は、プロ
セッサのアーキテクチャ状態を維持するための方法に関
する。一実施例では、この方法は、識別タグと、アーキ
テクチャ・レジスタ・テーブル内の関連項目とを有する
命令をディスパッチすることと、ディスパッチされた命
令の識別タグがその項目に格納された先行命令の識別タ
グより最新のものである場合にディスパッチされた命令
の識別タグをアーキテクチャ・レジスタ・テーブル内の
項目に書き込むこととを含む。
【0021】本発明の他の態様は、プロセッサ状態を回
復するための方法に関する。一実施例では、この方法
は、アーキテクチャ・レジスタをターゲットにする複数
の命令をディスパッチすることであって、アーキテクチ
ャ・レジスタの状態がそのアーキテクチャ・レジスタに
対応する複数の項目を有するアーキテクチャ・レジスタ
・テーブルで維持されることと、ディスパッチ時に識別
タグ(「TID」)を命令に割り当てることと、最も最
近ディスパッチされた命令のTIDによってアーキテク
チャ・レジスタ・テーブル項目を更新することであっ
て、その項目が最も最近ディスパッチされた命令のター
ゲット・アーキテクチャ・レジスタに関連付けられるこ
とと、履歴バッファ・テーブル内の項目にデータを格納
することにより最も最近ディスパッチされた命令のTI
Dによる更新の直前にアーキテクチャ・レジスタ・テー
ブル項目に格納されたデータを保管することと、例外事
象に関連するTIDより古いTIDを有する命令に関連
する履歴バッファ項目からデータを取り出し、取り出し
たデータをアーキテクチャ・レジスタ内の対応する項目
に格納し、例外事象に関連する命令のTIDより最近の
TIDを有する命令に関連する履歴バッファ内のデータ
を消去することによって例外事象に関連する命令のTI
Dを判定することにより例外事象に応答してプロセッサ
の状態を回復することとを含む。
【0022】本発明のさらに他の態様は、プロセッサの
アーキテクチャ状態を維持するための装置に関する。一
実施例では、この装置は、識別タグと、アーキテクチャ
・レジスタ・テーブル内の関連項目とを有する命令をデ
ィスパッチする手段と、ディスパッチされた命令の識別
タグがその項目に格納された先行命令の識別タグより最
新のものである場合にディスパッチされた命令の識別タ
グをアーキテクチャ・レジスタ・テーブル内の項目に書
き込む手段とを含む。
【0023】本発明のさらに他の態様は、プロセッサ状
態を回復するための装置に関する。一実施例では、この
装置は、アーキテクチャ・レジスタをターゲットにする
複数の命令をディスパッチする手段であって、アーキテ
クチャ・レジスタの状態がそのアーキテクチャ・レジス
タに対応する複数の項目を有するアーキテクチャ・レジ
スタ・テーブルで維持される手段と、ディスパッチ時に
識別タグ(「TID」)を命令に割り当てる手段と、最
も最近ディスパッチされた命令のTIDによってアーキ
テクチャ・レジスタ・テーブル項目を更新する手段であ
って、その項目が最も最近ディスパッチされた命令のタ
ーゲット・アーキテクチャ・レジスタに関連付けられる
手段と、履歴バッファ・テーブル内の項目にデータを格
納することにより最も最近ディスパッチされた命令のT
IDによる更新の直前にアーキテクチャ・レジスタ・テ
ーブル項目に格納されたデータを保管する手段と、例外
事象に関連するTIDより古いTIDを有する命令に関
連する履歴バッファ項目からデータを取り出し、取り出
したデータをアーキテクチャ・レジスタ内の対応する項
目に格納し、例外事象に関連する命令のTIDより最近
のTIDを有する命令に関連する履歴バッファ項目内の
データを消去することによって例外事象に関連する命令
のTIDを判定することにより例外事象に応答してプロ
セッサの状態を回復する手段とを含む。
【0024】上記のタグ方式は、完全順不同実行をサポ
ートするための統一メカニズムを提供し、上記のすべて
のケースについて投機実行を可能にしながら同じ回復メ
カニズムを使用できるようにする。分岐結果、ロード・
ストアの競合、レジスタおよびフラグの結果に関する予
測を行うことができる。予測外れ経路のすべてのケース
において、回復プロセスはディスパッチ生成タグを使用
して、投機命令と結果をマシンから選択的に除去する。
また、このタグにより、任意の機能ユニットまたは待ち
行列はいずれかのセットの命令間の経過時間関係を動的
に再構成することができる。したがって、完了テーブル
は一切不要であり、経過時間関係を維持するために命令
/結果待ち行列のFIFO管理も不要である。GPRテ
ーブルは、追加のアーキテクチャ/リネーム・レジスタ
・マッピング・テーブルの必要性を解消するように、G
PR将来ファイル情報を取り入れる。さらに、実行に必
要なリネーム・レジスタを指すポインタだけを含むリネ
ーム方式とは対照的に、この方式では、ディスパッチさ
れた命令は、ディスパッチされた命令が必要とする結果
を生成するような先行命令を指すポインタを含む。最後
に、リネーム方式とは異なり、完了点より前に命令およ
び結果を廃棄することができる。
【0025】他の態様では、命令には、その命令をディ
スパッチする相対順序を示すタグを使ってタグが付けら
れる。このような命令のディスパッチに応答して、命令
のタグを含む情報がアーキテクチャ・レジスタに書き込
まれ、この書込みは、前にディスパッチされたディスパ
ッチ済み命令の1つに応答して書き込まれた情報を置き
換えることができる。このようなタグ付きでディスパッ
チされた命令の処理に応答して、その命令のタグを使っ
て項目にタグを付けることを含め、プロセッサ資源内の
項目に情報が書き込まれ、各タグは、それに関してプロ
セッサ資源項目が解放されていないディスパッチされた
命令に対してグローバルに固有の値を有するので、タグ
付き項目および命令を具体的に識別することができる。
【0026】また、アーキテクチャ・レジスタ内で置き
換えられる情報は履歴バッファにも保管される。履歴バ
ッファ内のタグと割込みが発生した命令のタグとの比較
に応答して履歴バッファから選択した情報は、アーキテ
クチャ・レジスタに復元される。プロセッサ資源項目
は、その項目の情報タグと割込みが発生した命令のタグ
との比較に応答して解放されるので、割込みが発生した
命令の後でディスパッチされた命令に関する項目を解放
することができる。
【0027】追加の態様では、復元および解放は、シス
テム・リセット割込み、マシン・チェック割込み、デー
タ・アクセス割込み、命令アクセス割込み、外部割込
み、アライメント割込み、プログラム実行割込み、浮動
小数点使用不能割込み、減分器割込み、システム・コー
ル、追跡例外、浮動小数点支援などの事象によって割込
みが行われた命令に応答する。
【0028】本発明の利点の1つは、同じ復元および解
放が上記の割込み事象の1つまたは複数に応答すること
である。
【0029】
【発明の実施の形態】まず図95を参照すると、同図に
は、本発明に使用できるデータ処理システム1000の
一例が示されている。このシステムは、参照により本明
細書に組み込まれる「The PowerPC Architecture: A Sp
ecification for a New Family of RISC Processors」
第2版(1994年、Cathy May他著)によるPowe
rPCマイクロプロセッサ(「PowerPC」はIB
Mの商標である)などの中央演算処理装置(CPU)1
010を有する。PowerPCマイクロプロセッサの
より具体的な実施態様については、参照により本明細書
に組み込まれる「PowerPC604 RISC Microprocessor Use
r's Manual」(1994年、IBM発行)に記載されて
いる。本発明の履歴バッファ(図示せず)はCPU10
10に含まれる。CPU1010は、システム・バス1
012によって他の様々な構成要素に結合される。読取
り専用メモリ(「ROM」)1016は、システム・バ
ス1012に結合され、データ処理システム1000の
所与の基本機能を制御する基本入出力システム(「BI
OS」)を含む。ランダム・アクセス・メモリ(「RA
M」)1014と、入出力アダプタ1018と、通信ア
ダプタ1034もシステム・バス1012に結合され
る。入出力アダプタ1018は、ディスク記憶装置10
20と通信する小型計算機システム・インタフェース
(「SCSI」)アダプタにすることができる。通信ア
ダプタ1034は、データ処理システムが他のこのよう
なシステムと通信できるようにする外部ネットワークと
バス1012とを相互接続する。システム・バス101
2には、ユーザ・インタフェース・アダプタ1022お
よびディスプレイ・アダプタ1036を介して入出力装
置も接続されている。キーボード1024、トラック・
ボール1032、マウス1026、スピーカ1028は
いずれもユーザ・インタフェース・アダプタ1022を
介してバス1012に相互接続されている。ディスプレ
イ・モニタ1038は、ディスプレイ・アダプタ103
6によってシステム・バス1012に接続される。この
ため、ユーザは、キーボード1024、トラックボール
1032、またはマウス1026によってシステムに入
力し、スピーカ1028およびディスプレイ1038を
介してシステムから出力を受け取ることができる。さら
に、AIX(「AIX」はIBMの商標である)などの
オペレーティング・システムを使用して、図95に示す
様々な構成要素の機能を調整する。
【0030】次に、添付図面、特に図97を参照する
と、同図には、請求の範囲に記載された本発明により情
報を処理するためのデータ処理システムの実施例のブロ
ック図が示されている。図示の実施例では、プロセッサ
1210は、単一集積回路スーパスカラ・マイクロプロ
セッサを含む。したがって、以下に詳述するように、プ
ロセッサ1210は、様々な実行ユニット、レジスタ、
バッファ、メモリ、その他の機能ユニットを含み、いず
れも集積回路によって形成されている。プロセッサ10
は、IBMマイクロエレクトロニクスから入手可能で、
縮小命令セット・コンピュータ(RISC)技法により
動作するPowerPC(商標)系列のマイクロプロセ
ッサの1つを含むことが好ましい。しかし、当業者であ
れば、他の適当なプロセッサを使用できることが以下の
説明から分かるだろう。図97に示すように、プロセッ
サ1210はバス・インタフェース・ユニット(BI
U)1212およびプロセッサ・バス1213を介して
システム・バス1211に結合され、プロセッサ・バス
1213はシステム・バス1211と同様にアドレス・
バスと、データ・バスと、制御バスとを含む。BIU1
212は、バス・アービトレーションに関与することに
より、プロセッサ1210と、メイン・メモリ1250
や不揮発性大容量記憶装置1252などのシステム・バ
ス1211に結合された他の装置との間の情報の転送を
制御する。図97に示すデータ処理システムは、システ
ム・バス1211に結合された他の図示の装置を含むこ
とが好ましいが、このような装置は以下の説明を理解す
るために必要なものではなく、したがって、簡略化のた
め、省略されている。
【0031】BIU1212は、プロセッサ1210内
の命令キャッシュおよびMMU(メモリ管理ユニット)
1214とデータ・キャッシュおよびMMU1216と
に接続されている。命令キャッシュおよびMMU121
4とデータ・キャッシュおよびMMU1216内のもの
などの高速キャッシュにより、プロセッサ1210は、
メイン・メモリ1250からこれらのキャッシュに事前
転送されたデータまたは命令のサブセットへの比較的高
速のアクセス時間を達成することができ、したがって、
データ処理システムの動作速度が改善される。データ・
キャッシュおよび命令キャッシュ内に格納されたデータ
および命令は、それぞれアドレス・タグによって識別さ
れてアクセスされ、それぞれのタグは、メイン・メモリ
1250内のデータまたは命令の物理アドレスのうちの
指定数の上位ビットを含む。命令キャッシュおよびMM
U1214は順次取出し器1217にさらに結合され、
この順次取出し器は各サイクル中に命令キャッシュおよ
びMMU1214から実行用の命令を取り出す。順次取
出し器1217は、命令キャッシュおよびMMU121
4から取り出した分岐命令を実行のために分岐処理ユニ
ット(BPU)1218に伝送するが、プロセッサ12
10内の他の実行回路による実行のために命令待ち行列
1219内に順次命令を一時的に格納する。
【0032】図示の実施例では、BPU1218に加
え、プロセッサ1210の実行回路は、固定小数点ユニ
ット(FXU)1222と、ロードストア・ユニット
(LSU)1228と、浮動小数点ユニット(FPU)
1230とを含む、順次命令を実行するための複数の実
行ユニットを含む。それぞれの実行ユニット1222、
1228、1230は通常、各プロセッサ・サイクル中
に特定タイプの順次命令のうちの1つまたは複数の命令
を実行する。たとえば、FXU1222は、指定の汎用
レジスタ(GPR)1232から受け取ったソース・オ
ペランドを使用して、加算、減算、AND、OR、XO
Rなどの浮動小数点数理論理演算を実行する。固定小数
点命令の実行に続いて、FXU1222は命令のデータ
結果をGPRバッファ1232に出力し、このバッファ
は結果バス1262上で受け取った結果の格納を行う。
これに対して、FPU1230は通常、浮動小数点レジ
スタ(FPR)1236から受け取ったソース・オペラ
ンドに対して、浮動小数点乗算および除算などの単精度
および倍精度浮動小数点算術論理演算を実行する。FP
U1230は浮動小数点命令の実行から得られるデータ
を指定のFPRバッファ1236に出力し、このバッフ
ァは結果データを格納する。その名前が暗示するよう
に、LSU1228は通常、メモリ(すなわち、データ
・キャッシュおよびMMU1216内のデータ・キャッ
シュまたはメイン・メモリ1250のいずれか)から指
定のGPR1232またはFPR1236にデータをロ
ードするかまたは指定のGPR1232またはFPR1
236からメモリにデータを格納する、浮動小数点およ
び固定小数点命令を実行する。
【0033】プロセッサ1210は、そのスーパスカラ
・アーキテクチャのパフォーマンスをさらに改善するた
めに命令のパイプライン処理と順不同実行の両方を使用
する。したがって、データ依存関係を監視している限
り、FXU1222、LSU1228、FPU1230
によって任意の順序で命令を実行することができる。さ
らに、一連のパイプライン段階でFXU1222、LS
U1228、FPU1230のそれぞれによって命令を
処理する。高性能プロセッサにはよくあるように、各順
次命令は5通りのパイプライン段階、すなわち、取出
し、デコード/ディスパッチ、実行、終了、完了の各段
階で処理される。
【0034】取出し段階では、順次取出し器1217
は、命令キャッシュおよびMMU1214から1つまた
は複数のメモリ・アドレスに関連する1つまたは複数の
命令を取り出す。命令キャッシュおよびMMU1214
から取り出した順次命令は、順次取出し器1217によ
って命令待ち行列1219内に格納される。対照的に、
順次取出し器1217は、分岐命令を命令ストリームか
ら除去(フォールドアウト)し、それを実行のためにB
PU1218に転送する。BPU1218は分岐予測メ
カニズムを含み、このメカニズムは一実施例では、分岐
が行われるかどうかを予測することによりBPU121
8が未解決の条件付き分岐を投機実行できるようにする
分岐履歴テーブルなどの動的予測メカニズムを含む。
【0035】デコード/ディスパッチ段階では、ディス
パッチ・ユニット1220は、命令待ち行列1219か
らの1つまたは複数の命令をデコードし、通常、プログ
ラム順序で実行ユニット1222、1228、1230
にディスパッチする。より従来のプロセッサでは、ディ
スパッチ・ユニット1220は、ディスパッチした各命
令の結果データ用としてGPRリネーム・バッファ12
33またはFPRリネーム・バッファ1237内のリネ
ーム・バッファを割り振り、ディスパッチ時に命令は完
了ユニット1240の複数スロット完了バッファ内にも
格納されて、完了を待つ。しかし、本明細書に記載する
ように、本発明は、リネーム・レジスタまたは完了ユニ
ットのいずれかを必要とする実施例に適合させることが
できる。図示の実施例によれば、プロセッサ1210
は、固有の命令識別子を使用して、順不同実行中にディ
スパッチした命令のプログラム順序を追跡する。
【0036】実行段階では、実行ユニット1222、1
228、1230は、示された動作用のオペランドと実
行資源が使用可能になると便宜的にディスパッチ・ユニ
ット1220から受け取った命令を実行する。一実施例
では、各実行ユニット1222、1228、1230
は、オペランドまたは実行資源が使用可能になるまでそ
の実行にディスパッチされた命令を格納する予約ステー
ションを装備している。命令の実行が完了した後、実行
ユニット1222、1228、1230は、データ結果
があればそれを、命令タイプに応じてGPRまたはFP
Rのいずれかに格納する。より従来のプロセッサでは、
実行ユニット1222、1228、1230は、どの命
令が実行を終了したかを完了ユニット1240に通知す
る。最後に、完了ユニット1240の完了バッファか
ら、プログラム順序で命令が完了する。FXU1222
およびFPU1230によって実行された命令は、命令
のデータ結果をGPRリネーム・バッファ1233およ
びFPRリネーム・バッファ1237からGPR123
2およびFPR1236にそれぞれ転送することによっ
て完了する。LSU1228によって実行されたロード
およびストア命令は、終了した命令を完了ストア待ち行
列または完了ロード待ち行列に転送することによって完
了し、その待ち行列から命令によって示されたロードお
よびストア動作が実行される。
【0037】しかし、様々な実施例で本発明は、プロセ
ッサのディスパッチ論理回路を使用して、伝統的なフォ
ン・ノイマン命令ストリームをデータ・フロースタイル
のフォーマットに「トークン化」する。したがって、デ
ータ依存関係は、レジスタ・リネームのように、各命令
が必要とするソース・データの記憶位置を追跡すること
によって処理されるわけではなく、むしろ、ソース・デ
ータを提供するというもう1つの命令を参照することに
よってソース・データの追跡を可能にするような所与の
情報を命令に関連付けることによって処理される。した
がって、このプロセッサには、トークンまたはタグを生
成するターゲット識別(「TID」)生成器が設けら
れ、トークンまたはタグのそれぞれはディスパッチ時に
命令に明確に関連付けられる。TIDは、プログラム順
序情報を保持し、データ依存関係を追跡するために使用
する。
【0038】ここで使用する用語によれば、レジスタの
内容に影響する動作を命令が実行する場合、その動作は
そのレジスタを「ターゲットにする」と言われ、その命
令は「ターゲット化命令」と呼ぶことができ、そのレジ
スタは「ターゲット・レジスタ」または「ターゲット化
レジスタ」と呼ばれる。たとえば、「ld r3, ...」とい
う命令はレジスタr3をターゲットにし、r3は「ld r
3, ...」という命令のターゲット・レジスタである。
【0039】同じターゲット・レジスタを有する複数の
命令がディスパッチされた場合、最後にディスパッチさ
れたものがアーキテクチャ・レジスタに書き込む。この
ような各命令には、ディスパッチ時にターゲット・レジ
スタに関連する固有の結果タグが割り当てられる。この
実施例の結果タグは、命令の経過時間を示すためには不
要であるが、特定のレジスタに関連する命令を区別する
ためにのみ必要である。ターゲット・レジスタを有する
命令がディスパッチされると、結果タグはそのターゲッ
ト・レジスタに関連するタグ・フィールドに書き込ま
れ、先行ターゲット・レジスタ内容または先行結果タグ
がそのレジスタから取り出され、そのために割り振られ
た履歴バッファ項目(HBE)に格納される。投機実行
命令が打ち切られないことが既知のものになると、その
項目はリタイヤ(割振り解除)される。しかし、投機実
行命令を打ち切る必要がある場合、HBEに保管された
レジスタ内容または結果タグはそのレジスタにコピーし
て戻され、項目はリタイヤされる。詳細については関連
出願を参照されたい。
【0040】また、本発明では、プロセッサ状態を回復
するために、レジスタ・リネームではなく、履歴バッフ
ァを使用する。本発明によれば、アーキテクチャ・レジ
スタ、すなわち、GPRは、プロセッサの「将来状態」
を維持し、履歴バッファ項目は、割込みの場合のように
現行のアーキテクチャ・コミット状態まで完全に投機G
PR更新を「バックアウトする」ために必要な情報を含
む。対照的に、レジスタ・リネーム方式では通常、アー
キテクチャ・コミット状態をGPRで維持し、投機更新
はリネーム・レジスタ内に保持される。リネーム方式は
通常、ディスパッチされたがまだコミットされていない
すべての命令のプログラム順序リストである完了テーブ
ルを取り入れている。
【0041】一実施例では、TIDは、ディスパッチさ
れた命令の相対経過時間を決定するためにプロセッサが
使用する、単調に増加するタグである。より具体的な実
施例では、TIDは、グローバル「折返し」ビットとと
もに各命令に付加される6ビット・フィールドを含む。
折返しビットと各割当てTIDの上位ビットとの排他O
R(「XOR」)を取ることにより、許容TIDの範囲
は2つの半体、または使用可能TIDのプールとして管
理することができる。1つのプール内のすべてのTI
D、たとえば、上位ビットが1であるTIDの共用範囲
のハーフが割り当てられるまでに、もう一方のプール内
のTID、すなわち、上位ビットが0であるTIDを有
するすべての命令が完了され、その結果が記録されてい
る可能性がある。第1のハーフからのすべてのTIDが
もはや使用されない場合、折返しビットはトグルされ
る。したがって、未解決の命令は、範囲の第1のハーフ
からのTIDプールに効果的に移動し、範囲の第2のハ
ーフが使用可能になる。このメカニズムは、TIDタグ
に使用可能なビットが6ビットのみである場合でも、T
IDが必ず単調に増加するように見えることを保証する
ものである。
【0042】本発明のディスパッチ・ユニットは、TI
Dを割り当てて命令をディスパッチするだけでなく、デ
ィスパッチされた命令の状況を追跡するために使用する
様々なテーブルの更新も行う。本発明の一実施例では、
4通りのテーブルまたは待ち行列を使用して、ディスパ
ッチされた命令を追跡し、アーキテクチャ・レジスタを
更新し、例外が発生した場合にプログラム順序を復元す
る。図1〜4はこれらのテーブルの実施例を示してい
る。
【0043】次に図1を参照すると、同図には、GPR
テーブルと呼ばれる第1の待ち行列が示されている。図
示の通り、このGPRテーブル例は、複数の項目を含
み、各項目は特定のアーキテクチャ・レジスタに関連付
けられている。この具体的な実施例には32個の項目が
あり、PowerPCアーキテクチャ例で使用可能な各
汎用レジスタ(「GPR」)ごとに1つずつになってい
る。当業者であれば、本発明により動作する予定の浮動
小数点レジスタ(「FPR」)または他のレジスタのた
めに本発明の他の実施例において同様のテーブルを容易
に提供できることが理解されるだろう。
【0044】GPRテーブルの各項目は4つのフィール
ドを含む。第1のフィールドは有効/タグ付きフィール
ド100である。このフィールドは、有効とタグ付きと
いう2通りの許容値を有する。本発明の具体的な一実施
例では、このフィールドは、第2および第3のフィール
ド、すなわち、値フィールド102とTIDフィールド
104に格納されたデータの状況に応じてハイまたはロ
ーになる単一ビットを含む。具体的には、レジスタをタ
ーゲットにする命令のディスパッチ時に、ディスパッチ
・ユニットは、「タグ付き」を示すようにフィールド1
00を設定する。具体的には、有効/タグ付きフィール
ド100のデータが「有効」を示す場合、第2のフィー
ルドは関連GPRの「現行」値を含む。現行値とは、現
在実行されている命令より前に発行されたすべての命令
が完了し、その結果がGPRを更新した場合に関連GP
Rに含まれるはずの値である。この場合、値フィールド
102のデータはプロセッサ上の他の資源に渡すことが
でき、TIDフィールド104のデータは無意味なもの
と見なされる。
【0045】あるいは、有効/タグ付きフィールド10
0の値が「タグ付き」を示す場合、値フィールド102
のデータは無意味なものになり、TIDフィールド10
4は最も最近ディスパッチされたがまだ実行されておら
ず、関連GPRをターゲットにする命令のTIDを含
む。
【0046】第4のフィールド106は、履歴バッファ
項目の圧縮を行うために使用する。具体的には、(最後
の割込みスタック項目以降の)関連レジスタのコピーが
履歴バッファ・テーブルにまだ存在していない場合にの
み、履歴バッファ項目が消費される。これについては、
以下に詳述する。当然のことながら、当業者には、本発
明の特定の実施態様に応じて履歴バッファ項目の数を圧
縮するために数多くの方法が思い浮かぶだろう。
【0047】図2は、本発明の一実施例による履歴バッ
ファ・テーブルを示している。この履歴バッファ・テー
ブルは、発生順に履歴バッファ・テーブルに書き込まれ
る複数の項目を含む。各項目は、5つのフィールド、す
なわち、命令TIDフィールド108と、アーキテクチ
ャ・レジスタ・フィールド110と、有効/タグ付きフ
ィールド112と、値フィールド114と、TIDフィ
ールド116とを含む。GPRをターゲットにする命令
がディスパッチされるたびに、最新割込みスタック項目
以降にターゲット化レジスタに書き込まれていないこと
をGPRテーブルの第4のテーブル106が示す場合
に、履歴バッファ・テーブル項目が作成される(割込み
スタック項目の作成およびGPRフィールド106の項
目については以下に詳述する)。当然のことながら、こ
れは単に履歴バッファ・テーブル項目を保存するために
すぎず、必要であれば、GPRテーブルのフィールド1
06にかかわらず、各GPR設定命令ごとに履歴バッフ
ァ項目を作成できることが分かるだろう。
【0048】命令TIDフィールド108は、ディスパ
ッチ中の命令のTIDを含む。このTID値は、履歴バ
ッファ・テーブルに格納されたデータについて様々な動
作を実行できる時期を判定するために使用する。たとえ
ば、命令TIDフィールド108は、項目を廃棄できる
時期、項目を消去できる時期、たとえば、予測外れ分岐
時に命令について項目を作成した場合、ならびに回復状
況中にGPRを更新するために必要な値をその項目が含
むかどうかを判定するために使用する。アーキテクチャ
・レジスタ・フィールド110は、ディスパッチされた
命令によって更新中のGPR、すなわち、ターゲット・
レジスタを識別する。回復中にこのフィールドは、GP
Rファイルにインデックスを付けるために使用する。
【0049】有効/タグ付きフィールド112と、値フ
ィールド114と、TIDフィールド116はいずれ
も、ディスパッチされた命令によってターゲットにされ
るアーキテクチャ・レジスタに関するデータを含む。一
実施例のこのようなフィールドは、履歴バッファ・テー
ブル項目が作成されたときにアーキテクチャ・レジスタ
・フィールド110で識別されるアーキテクチャ・レジ
スタに関連するGPRテーブル項目からの有効/タグ付
きフィールド100、値フィールド102、TIDフィ
ールド104から直接コピーされる。
【0050】図3は、ディスパッチされた命令が必要と
するソース・データを追跡するためのテーブルを示して
いる。このテーブルは、ソース・データが使用可能であ
るかどうかを追跡し、命令が発行されるまでそのデータ
を保持する。また、PEQテーブルは、予約ステーショ
ンともいう。一実施例のこのテーブルは、2つの同一テ
ーブルとして実現され、それぞれ事前実行待ち行列
(「PEQ」)およびストア事前実行待ち行列(「SP
Q」)という。SPQは、すべてのストア命令、同期お
よびキャッシュ動作などの「複雑な」命令、すべての固
定小数点乗算/除算命令を受け取る。PEQは、残りの
固定小数点命令のすべてを受け取る。しかし、ここで
は、総称的にPEQテーブルと呼ばれるこのようなテー
ブルの1つについてのみ、本発明の動作を説明すれば十
分である。当業者であれば、命令のタイプおよび関連の
特定のアーキテクチャに応じて他の同様な実行待ち行列
がどのように構築されるかが分かるだろう。
【0051】図3に示すように、PEQテーブルは複数
の項目を含む。各項目は9つのフィールド、すなわち、
TIDフィールド118と、命令コード・フィールド1
20と、宛先フィールド122と、2つのソース・ブロ
ックとを含み、各ソース・ブロックは有効/タグ付きフ
ィールド124a〜bと、値フィールド126a〜b
と、TIDフィールド128a〜bとを含む。
【0052】ディスパッチ時に、ディスパッチ・ユニッ
トは、命令データをPEQの項目に渡す。TIDフィー
ルド118は、ディスパッチされた命令に割り当てられ
たTIDを含む。命令コード・フィールド120はディ
スパッチされた命令の操作コードを含み、宛先フィール
ド122は宛先レジスタ指定子を含む。ソース・ブロッ
ク1および2は、命令(複数も可)の有効/タグ付き、
値、TID情報を含み、これらはPEQ項目に関連する
命令が必要とするソース・データを生成することにな
る。1つまたは複数のソース・レジスタが命令コードに
よって指定された場合、ソース・レジスタ(複数も可)
に対応するGPRテーブル項目の有効/タグ付きフィー
ルド100、値フィールド102、TIDフィールドか
らの値はディスパッチされた命令用のPEQ項目の同様
の名前のフィールドにコピーされる。1つのソース・レ
ジスタだけが命令コードによって指定された場合、GP
Rテーブルからのデータはフィールド124a〜128
aにコピーされる。第2のソース・レジスタが指定され
た場合、データはフィールド124b〜128bにコピ
ーされる。
【0053】ソース・レジスタの数は命令に依存するの
で、好ましい一実施例では「ソース要求」ビットを各ソ
ース・ブロックに関連付ける。PEQに入力された命令
がその1組のソース・フィールドからのデータを必要と
する場合、ソース要求ビットが設定される。
【0054】PEQの動作を示すため、PEQ項目に関
連する命令が必要とするソース・レジスタは1つだけで
あると想定する。したがって、ソース・ブロック1用の
ソース要求ビットが設定され、ソース・ブロック2用の
ソース要求ビットがローになる。値フィールド126a
のデータが有効であると有効/タグ付きフィールド12
4aが示す場合、PEQ項目に格納された命令は実行の
ために発行できる状態になっている。しかし、その値が
タグ付きであると有効/タグ付きフィールド124aが
示す場合、PEQ構造は、そのPEQ構造に関連する制
御論理回路を介して、プロセッサの様々な機能ユニット
からの結果バスを「スヌープ」する。本発明の実施例で
は、実行ユニットは、それを生成した命令のTIDとと
もにその結果を同報する。同報中のTIDがソースTI
Dフィールド128aのTID値と一致すると、同報中
のGPR値は値フィールド126aにコピーされ、有効
/タグ付きフィールド124aは有効を示すように設定
される。次にその項目に関連する命令は、適切な機能ユ
ニットに発行することができる。
【0055】次に図4を参照すると、本発明のこの実施
例で使用するもう1つのテーブルは割込みスタック(関
連出願では割込み可能命令テーブル「IIT」ともい
う)である。命令がディスパッチされると、各命令に関
する情報が割込みスタックに記録される。しかし、本発
明のより具体的な実施例では、割込み可能命令、たとえ
ば、ロード、ストア、トラップなどに関する情報のみ格
納することにより、割込みスタックのサイズを低減する
ことができる。より具体的な一実施例では、対象命令以
上の投機実行を可能にするために予測が行われる命令も
割込みスタックに格納される。以下の説明では、命令の
投機実行を発生する割込みを強調する。しかし、前述の
ように、割込みはプロセッサ210外部の命令実行、エ
ラー、または信号に関連して発生する異常条件によって
発生する可能性もある。たとえば、このような割込み
は、1)違法または特権命令を実行しようと試みるか、
2)無効形式を有する命令、またはシステム・アーキテ
クチャ内でオプションであるが特定のシステムでは実現
されない命令、または「システム・コール」または「ト
ラップ」命令を実行するか、3)このような命令が使用
可能ではないかまたはシステム・ソフトウェアの支援を
必要とするときに浮動小数点命令を実行するか、4)無
効演算、ゼロ除算、オーバフロー、アンダフローなどに
より、浮動小数点例外を発生するような浮動小数点命令
を実行するか、5)RAM214またはディスク220
を含む、使用不能記憶位置にアクセスしようと試みる
か、6)無効な有効アドレス・アライメントによって、
RAM214またはディスク220を含む、記憶装置に
アクセスしようと試みるか、7)プロセッサ210に直
接接続された装置(図示せず)あるいはバス212を介
してプロセッサ210に接続されたシステム200内の
他の装置からのシステム・リセットまたはマシン・チェ
ック信号により、発生する可能性がある。このような条
件については、上記の参考文献、「The PowerPC Archit
ecture: A Specification for a New Family ofRISC Pr
ocessors」、および「PowerPC 604 RISC Microprocesso
r User's Manual」に詳述されている。このような命令
は、分岐に関する予測結果などの制御フロー予測または
ビット・フラグのような予測結果などのデータ・フロー
予測を含むことができる。割込みスタックは複数の項目
を含み、各項目はTIDフィールド129と、アドレス
・フィールド130と、完了フィールド132とを有す
る。TIDフィールドはディスパッチ中の命令のTID
を含む。アドレス・フィールドは記憶域内の命令のアド
レスを含むので、その命令は再始動が必要な場合に再取
出しすることができる。完了フィールド132は、命令
が完了したかどうか、さらに、完了した場合に例外が発
生したどうかを示す。好ましい実施例では、実行サイク
ル中に完了フィールド結果をポストするが、サイクル時
間の圧力(ロードヒットストアおよびストアヒットロー
ド条件のチェックを含む)を緩和するために、ポスティ
ングを遅延することができる。1つまたは複数の関連出
願では、完了フィールドは、終了ビットと例外フィール
ドなど、いくつかの構成要素に低減されている。
【0056】この明細書では、一度に単一命令がディス
パッチされるというコンテキストで本発明についてより
詳しく説明する。しかし、本発明はサイクル当たり1つ
の命令をディスパッチすることに限定されないことが分
かるだろう。他の実施例では、複数の命令について同じ
サイクルで動作が順次に実行される。このような実施例
では、その動作は、それを実行するために必要なハード
ウェアという観点から独立しているように見えるだろ
う。しかし、さらに他の実施例では、サイクル時間を低
減するために複数の動作をパラレルに実行できるよう
に、追加のハードウェアが設けられている。その結果得
られる累積セットの更新によって、順次更新実施態様と
同じ結果が得られるだろう。
【0057】一般にパラレル・ディスパッチをサポート
するために必要な追加のハードウェアは、図1〜4に示
すテーブル上に追加の読取り/書込みポートを設け、同
じ「ディスパッチ・ウィンドウ」内の論理的に先行する
命令、すなわち、同じサイクルでのディスパッチ用に検
討されている命令のグループを反映するためにテーブル
/待ち行列内に十分な余裕があるかどうかをチェックす
る論理回路を修正し、各ソースも同じディスパッチ・ウ
ィンドウ内の先行命令によって生成することができ、そ
の場合にこのような命令のうちの最新命令用のTIDは
ソース・フィールドに入り、有効/タグ付きフィールド
はタグ付きに設定されるはずであるということを考慮で
きるようにPEQテーブルでソース・フィールドをどの
ように設定すべきかを判定するためにTIDテーブルを
検査する論理回路を修正することを含むだろう。
【0058】命令がディスパッチされると、本発明はま
ず、十分な資源が動作に使用可能であるかどうかを判定
し、使用可能である場合、本発明は、適切なテーブル項
目をロードし、主命令待ち行列からその命令を除去す
る。このようなステップについては、図5〜94を参照
して以下に詳述する。
【0059】十分な資源が使用可能であるかどうかを判
定することは、まず、ディスパッチすべき命令のタイプ
を決定し、次に適切なテーブルをチェックして使用可能
な十分な項目があるかどうかを確認することを含む。具
体的には、GPRを設定する命令(「GPR設定」また
は「ターゲット化」命令という)は、PEQテーブルの
項目を必要とする。さらに、GPR設定命令は、通常、
設定中の各GPRごとに履歴バッファ・テーブルの項目
も必要とする。しかし、前述のように、GPRテーブル
の第4のフィールドを使用する履歴バッファ圧縮によ
り、すべてのGPR設定命令が履歴バッファ・テーブル
の項目を必要とするわけではないことが分かるだろう。
本発明の各種実施例では様々な圧縮技法を使用すること
ができるが、明確にするため、すべてのGPR設定命令
が履歴バッファ・テーブル項目を必要とするものとして
本発明を説明する。たとえば、ロード、ストア、トラッ
プなどの割込み可能命令、未解決または予測分岐命令、
潜在的サマリー・オーバフロー・フラグ設定命令は、割
込みスタックの項目を必要とする。
【0060】ディスパッチすべき命令のタイプに適切な
テーブル内で十分な項目が使用可能である場合、プロセ
ッサは、ディスパッチ用に検討中の命令のためにTID
が使用可能であるかどうかを判定する。更新付きロード
など、一部の命令には2つのTIDが必要であり、複数
ロードおよびストリング・ロードなどの命令には複数の
TIDが必要になる場合もあることが分かるだろう。
【0061】一実施例では、複数ロードおよびストリン
グ・ロードを除けば、命令に必要な資源のすべてが使用
可能でなければならず、そうでなければ、その命令はデ
ィスパッチ用として不適格になる。複数ロードおよびス
トリング・ロードは、個々のロード動作に論理的にセグ
メント化され、断片的にディスパッチすることができ
る。具体的な一実施例では、すべての論理セグメント用
のすべての資源が割り振られるまで、複数ロードおよび
ストリング・ロード命令は主命令待ち行列内に残され
る。
【0062】ストア命令もストア・データ待ち行列内の
1つまたは複数の項目を必要とする。ストア・データ待
ち行列については、上記のPowerPC Manualに記載されて
いるが、本発明を理解する上で必要なものではない。さ
らに他の実施例では、複数ストアおよびストリング・ス
トア命令も、複数ロードおよびストリング・ロード命令
と同様に、ストア・データ待ち行列項目の可用性に基づ
いて断片的にディスパッチすることができる。
【0063】命令をディスパッチするために十分な資源
が存在すると判定されると、テーブルが更新される。こ
れについては、図5〜22に示す命令シーケンス例に関
して以下に詳述する。図5は、本発明の一実施例の動作
を例示するために使用する、6つの命令からなるシーケ
ンス例を示している。図示の通り、各命令には、番号順
に1〜6のうちのTIDタグが割り当てられる。ディス
パッチャのディスパッチ点は、TID列の左に示す矢印
によって示されている。命令のニーモニックは、TID
列の右の列に示す。これらのニーモニックは、参照によ
り本明細書に組み込まれ、IBM Microelectronics, MPRP
PCFPE-01より入手可能な「PowerPC Microprocessor Fam
ily: The Programming Environment」に詳しく記載され
ているPowerPCアーキテクチャの命令セットから
取られたものである。図5の右端の列は、その命令の影
響を受けるレジスタまたはその他のオペランドを識別す
る。
【0064】図5では、1というTIDを有する第1の
命令がディスパッチされ、ディスパッチ点は命令2に移
動している。命令1は即時加算記録(「ai」)であ
り、1というスカラー値を汎用レジスタ4内のデータに
加算し、その結果を元のレジスタ4に格納するものであ
る。命令1はGPR設定命令であって、割込み可能命令
ではないので、図23、図41、図59に示すように、
命令1がディスパッチされると、履歴バッファ・テーブ
ル、GPRテーブル、PEQテーブルはすべて更新され
る。命令1は、PowerPCレコード・タイプ動作で
あり、条件コード・レジスタフィールド0も設定する。
これは、命令2というラベルが付いた分岐によってテス
トされたフィールドである。ただし、命令1に対する命
令4の依存関係を示すために使用するのと同じTID値
を使用して、命令1に対する命令2の依存関係を示すこ
とができることに留意されたい。解決のためのBRQで
の分岐待ちは、機能ユニットの同報TID値を検査する
ことによりスヌープし、TIDの一致が検出されると結
果の条件レジスタ・バス上のビットを捕捉する。PEQ
は、同じ機能ユニットの同報TID値を検査することに
よりスヌープするが、TIDの一致が検出されると結果
のGPRバス上の値を捕捉する。
【0065】図23は、命令1のディスパッチ後の履歴
バッファを示している。この場合、命令1はレジスタ4
をターゲットにするので、ディスパッチ前のレジスタ4
内のデータは履歴バッファの値フィールドに格納され
る。同図では、これは単に「旧値」として識別される。
履歴バッファの有効/タグ付きフィールドは、「V」で
同図に示されるように有効に設定され、レジスタ4を設
定した先行命令がすでに完了したことを示し、データは
命令1より前に発行されたどの命令でも使用可能であ
る。同図に「reg」として示されているアーキテクチ
ャ・レジスタ・フィールドには、有効/タグ付きおよび
値データを提供したアーキテクチャ・レジスタの番号が
書き込まれる。履歴バッファの命令TIDフィールド
は、ディスパッチされた命令のTID、この場合は1で
更新される。値フィールドのデータは有効なので、TI
Dフィールドは無意味なものになる。
【0066】図41は、命令1のディスパッチ後のGP
Rテーブルを示している。命令1はレジスタ4を設定す
るので、GPRレジスタ4に関連するGPRテーブル項
目708が更新される。この時点で命令1は完了してい
ないので、その結果は使用不能である。したがって、G
PRテーブル項目708の有効/タグ付きフィールド
は、有効/タグ付きフィールドの「T」が示すようにタ
グ付きとして設定される。この項目はタグ付きとしてリ
ストされるので、GPRテーブルの値フィールドのデー
タは無意味なものになる。GPRテーブル項目708の
TIDフィールドは、命令1のTIDによって更新され
る。履歴バッファ項目を圧縮するために使用するGPR
テーブルの第3のフィールドは、明確にするため省略さ
れている。
【0067】図59は、命令1のディスパッチ後のPE
Qテーブルを示している。PEQ項目800は、以下の
ように命令1のソースおよび宛先情報によって更新され
る。PEQテーブルの項目800のTIDフィールド
は、ディスパッチされた命令のTID、すなわち、1に
よって更新される。命令コード・フィールドは、命令の
命令コードによって更新される。実際には、実際の命令
コードがPEQテーブルに書き込まれるが、例示のた
め、命令コードはそのニーモニック文字、ここでは「a
i」で表されることが分かるだろう。PEQテーブル内
の項目の宛先フィールドは、その命令がターゲットにす
るGPRレジスタ、この場合はレジスタ4によって更新
される。PEQ項目は、ソース1とソース2という2つ
のソース・ブロックを含み、各ソース・ブロックは、有
効/タグ付き、値、TIDの各フィールドを含む。この
場合、命令1に必要なソース・データはGPRレジスタ
4に格納されたデータである。この例示では、命令1よ
り前のすべての命令が完了していると見なされるので、
レジスタ4のデータは有効であり、これは項目800の
ソース・ブロック1の有効/タグ付きフィールドに示さ
れる。レジスタ4の現行データ、すなわち、命令1のデ
ィスパッチ前のデータはソース・ブロック1の値フィー
ルドにロードされ、ソース・ブロック1のTIDフィー
ルドのデータは無意味なものになる。ソース・ブロック
2は即時値1を含む。他の実施例では、ソース要求ビッ
トがソース・ブロック1に設定され、命令1が必要とす
るデータは有効になり、値フィールドに格納される。同
様に、命令1が即時値を使用するので、ソース・ブロッ
ク2のソース要求ビットが設定される。命令1は割込み
不能命令である。したがって、図77に示す割込みスタ
ックには、いかなる項目も作成されない。
【0068】次に図6を参照すると、TID2を有する
命令2がディスパッチされ、ディスパッチ・ポインタは
命令3に移動している。命令2は、条件レジスタ0の状
況に応じて、ラベル1に格納されたアドレスへの分岐条
件付き命令である。命令2はGPR設定命令ではなく、
したがって、履歴バッファ・テーブル、GPRテーブ
ル、PEQテーブルに対していかなる変更も行われな
い。しかし、命令2は割込み可能命令であるので、図7
8に示すように割込みスタックに項目900が作成され
る。項目900のTIDフィールドは命令2のTID、
すなわち、2によって更新され、アドレス・フィールド
はメモリ内の命令2のアドレスによって更新される。こ
れは、同図のように「addr(bc)」として示され
る。同時に、分岐条件付き命令は、分岐要求待ち行列
(「BRQ」)に送られ、命令1に依存するものとして
マークが付けられる。図96は、本発明の一実施例によ
る分岐待ち行列を示している。この分岐待ち行列は予約
ステーションとも呼ばれる。分岐待ち行列の操作論理は
PEQスヌープ論理と同様であり、「使用/未使用」ビ
ットが「未使用」に設定された場合、このフィールドは
無視される。それ以外の場合、有効/タグ付き値は、
「値」フィールドが有効であるかどうかまたは「TI
D」フィールドが有効であるかどうかを示す。TIDフ
ィールドが有効であり、TIDの一致が結果バス上で同
報されることが分かった場合、適切なデータ・バス値が
「値」フィールドに入り、「有効/タグ付き」ビットが
「有効」を示すように設定される。BRQにおける命令
の実行は、その「使用」ソース・フィールドに有効のマ
ークが付けられたときに開始することができる。実行
は、予測結果が実際の結果と一致するかどうかの判定か
らなる。すべての予測が正しかった場合、その分岐命令
には割込みスタックに「完了」のマークが付けられ、プ
ロセッサから廃棄される。いずれかの予測が間違ってい
た場合、その分岐命令のために消去コマンドが生成され
る。
【0069】次に、図7、図25、図43、図61、図
79を参照すると、命令3がディスパッチされ、図7、
図25、図43、図61、図79に示すようにテーブル
が更新される。命令3は、レジスタ3の下位32ビット
の内容をレジスタ2に格納された有効アドレスがアドレ
ス指定するメモり位置に格納するストア命令である。命
令3はGPRへの書込みを行わないが、ソース・データ
についてはGPR値に依存している。したがって、これ
らの資源が使用可能になるまで、その命令を発行するこ
とはできない。その結果、PEQに項目802が作成さ
れる。その命令のTID、すなわち、3は項目802の
TIDフィールドに入力される。命令3の命令コードは
命令コード・フィールドに入力され、GPR宛先はまっ
たくないので、PEQ項目802の宛先フィールドは無
意味なものになる。命令3を実行するために必要なソー
ス・データはレジスタ2および3に格納される。これら
のレジスタ内のデータは有効なので、項目802の両方
のソース・ブロック用の有効/タグ付きフィールドは有
効に設定され、各ソース・ブロックの値フィールドには
レジスタ2および3からのデータが書き込まれる。スト
アは割込み可能命令であるので、図79に示すように割
込みスタックに項目902が作成される。この項目は、
命令3のTID3と、そのストア命令のメモリ内のアド
レスとを含む。
【0070】次に図8は、命令4のディスパッチ後の命
令シーケンスを示している。命令4は、レジスタ4が決
定するアドレスに位置するメモリ内のワードをメモリか
ら取り出して、レジスタ4に書き戻すロード命令であ
る。この命令は明らかにレジスタ4に影響するので、図
26に示すように履歴バッファに項目602が作成され
る。従来のように、履歴バッファの命令TIDおよびア
ーキテクチャ・レジスタ・フィールドには、命令4のT
IDとターゲット・レジスタが書き込まれる。有効/タ
グ付きフィールド、値フィールド、TIDフィールド
は、項目708が命令4によって修正される前に、図4
4に示すGPRテーブルに格納されたデータから取り出
される。より具体的には、命令4のディスパッチ前に、
GPRテーブル項目708内のデータは命令1の完了を
待っていた。したがって、そのデータには、TID1と
ともに、タグ付きというマークが付けられた。このデー
タは、履歴バッファ項目602の有効/タグ付きおよび
TIDフィールドにそれぞれ書き込まれる。項目602
の値フィールドは無意味なものになる。
【0071】GPR項目708からのデータが履歴バッ
ファ項目602に格納されると、最新のレジスタ4設定
命令、すなわち、命令4に対応するデータで項目708
が上書きされる。命令4は最近ディスパッチされ、完了
していないので、データにはタグ付きのマークが付けら
れ、TIDフィールドはTID4によって更新される。
【0072】命令4は、PEQに関連する実行ユニット
のためにバインドされ、割込み可能命令であるので、P
EQと割込みスタックに項目804と904がそれぞれ
作成される。図62に示すように、PEQ項目804に
は、命令4のTID、命令コード、宛先レジスタ情報が
書き込まれる。命令1はまだ完了していないので、命令
4の実行のために必要なソース・データはまだ使用可能
ではない。したがって、項目804のソース・ブロック
1については、有効/タグ付きフィールドにタグ付きの
マークが付けられ、TIDフィールドには番号1が書き
込まれる。命令4が必要とするレジスタ・ソースは1つ
だけであり、ソース2フィールドには8という即時値、
すなわち、変位値が供給される。ただし、命令4をディ
スパッチする前に命令1が実行された場合、レジスタ4
用のGPRテーブル項目が更新され、履歴バッファおよ
びPEQテーブルにはタグ付き値ではなく有効がロード
されるはずであることに留意されたい。命令4のTID
およびアドレスを格納するために項目904が作成され
る。
【0073】次に図9を参照すると、同図には、命令5
のディスパッチ後の命令シーケンスが示されている。命
令5は、レジスタ1および2の内容を合計し、その結果
をレジスタ2に格納する加算命令である。命令5はレジ
スタ2を設定するので、その命令のディスパッチ前にレ
ジスタ2に格納されるデータは、図27に示すように履
歴バッファにコピーされる。この場合、データは有効で
あり、旧値、すなわち、命令5のディスパッチ前にGP
Rテーブル項目704に格納されているデータは、命令
1のディスパッチ前と同じ値であり、履歴バッファ項目
604の値フィールドに書き込まれる。そのデータには
有効/タグ付きフィールドに有効のマークが付けられる
ので、履歴バッファ項目604のTIDフィールドに格
納されたデータは無意味なものになる。命令TIDフィ
ールドとアーキテクチャ・レジスタ・フィールドは、命
令5のTIDおよび宛先レジスタによって更新される。
【0074】アーキテクチャ・レジスタ2に対応するG
PRテーブル項目704は、命令5からのデータによっ
て更新される。命令5はまだ実行されていないので、有
効/タグ付きフィールドにはタグ付きのマークが付けら
れ、TIDフィールドにはTID5が書き込まれる。値
フィールドは無意味なものになる。
【0075】次に図63および図81を参照すると、命
令5のためにPEQ項目806が作成されることが分か
る。項目806のTID命令コードおよび宛先フィール
ドは、命令5からのデータによって更新される。ソース
1およびソース2フィールドからのデータは、命令5の
実行のために必要なものである。この場合、データはG
PRレジスタ1および2から得られるが、どちらのレジ
スタも命令5のディスパッチ前の有効情報を含む。した
がって、項目806のソース・ブロック1および2用の
有効/タグ付きフィールドおよび値フィールドは適切に
更新される。TIDフィールドは無意味のものになる。
加算命令は割込み不能命令であるので、命令5用の割込
みスタックにはいかなる項目も作成されない。
【0076】図10は、命令6のディスパッチ後の命令
シーケンス例を示している。命令6は、オーバフロー例
外イネーブル(「OE」)ビットを設定する加算拡張命
令である。この命令は、それ自体とレジスタ4内のデー
タとを合計し、その結果をレジスタ3に格納する。命令
6はGPRレジスタ3を設定するので、命令6のディス
パッチ前にレジスタ3にデータを格納するために履歴バ
ッファに項目606が作成される。このデータは以前は
有効だったので、有効/タグ付きフィールドは有効に設
定され、値フィールドはレジスタ3からのデータによっ
て更新される。項目606の命令TIDおよびアーキテ
クチャ・レジスタ・フィールドは、先行命令に関して前
述したように更新される。次に図46を参照すると、レ
ジスタ3に対応するGPR項目706は命令6からのデ
ータによって更新される。この場合も、命令6はまだ実
行されていないので、データにはタグ付きのマークが付
けられ、命令6のTIDが項目706のTIDフィール
ドに格納される。
【0077】図64は、命令6のディスパッチ後のPE
Qフィールドを示している。項目808は作成され、命
令6のTID、命令コード、宛先によって更新されてい
る。命令6の実行に必要なソース1およびソース2ブロ
ックは、GPRテーブル項目708から取り出される。
命令4はまだ完了していないので、データはタグ付きで
あり、命令4のTIDは項目808のソース・ブロック
に書き込まれる。図82に示すように、命令6は割込み
不能命令であるので、割込みスタックにはいかなる項目
も作成されない。
【0078】各種回復条件に関して、本発明の動作を以
下に詳述する。あるタイプの回復条件は、予測外れ分岐
の場合に発生する。分岐命令の結果が予測され、取出し
経路が変更されるので、分岐の予想結果、テスト中の条
件ビット、使用する場合の予想リンクまたはカウント
値、TIDタグが分岐命令待ち行列(「BRQ」)によ
って保管される。必須条件コード・ビットとリンク/カ
ウント・レジスタ値が使用可能になると、BRQ内の命
令が実行され、各分岐の結果が解決される。BRQ内の
分岐命令が予測外れであると判定された場合、関連TI
D値を使用して割込みスタックにインデックスを付け、
再始動アドレスを含む適切な項目を選択することがで
き、予測外れ経路に沿って論理的に後続の命令を除去す
るためにすべてのユニットおよび待ち行列に対して命令
消去コマンドを発行することができる。論理的に分岐よ
り前の命令は影響を受けない。消去中の命令に対応する
履歴バッファ項目は、分岐命令の時点の状態にTIDテ
ーブルを復元するために使用する。
【0079】一般に、割込み例外が発生した場合、割込
み点を超える命令は、すでにディスパッチされており、
様々な実行および完了フェーズに入っている。したがっ
て、2通りの場合を考慮しなければならない。第1に、
命令の実行に関連する割込みであり、第2に、外部割込
みである。割込みが命令に関連する場合、本発明の一実
施例では、割込みを発生した命令が割込みスタックで最
古の命令になるまで命令処理を継続する。次に、論理的
にその命令に続く命令のために、すべてのユニットおよ
び待ち行列に対して命令消去コマンドが発行される。履
歴バッファ情報は、順次実行が実施された場合にそれが
違反命令より前に有していたはずの状態にTIDテーブ
ルを復元するために使用する。
【0080】外部割込みの場合、好ましい一実施例で
は、ディスパッチ・ユニットが割込みスタック項目を必
要とする命令を選択し、その外部割込みに関連するもの
として割込みスタック項目にマークを付けることができ
る。次に、マークを付けた命令が例外を取った場合と同
様に、上記の回復メカニズムが呼び出される。
【0081】他の実施例によれば、本発明は、順不同実
行の利得を高めるためにロードおよびストアの順序づけ
に対する制約を取り除く。特に、本発明では、そのソー
スがキャッシュ・ミスの対象になる命令以上の命令の実
行が可能である。したがって、論理的にロードより前に
あって、ロードの後で実行され、ロードによって取り出
されるデータに影響するはずのストアを検出するための
ハードウェアが必要になる。このようなハードウェア
は、当然のことながら、プロセッサの具体的な実施態様
に依存することになるが、本発明の開示を考慮すると当
業者の設計能力の範囲内である。たとえば、このような
メカニズムの1つは、最古の未実行ストアより前に実行
されるすべてのロードからなる待ち行列を維持するはず
である。この「事前ロード」待ち行列は、ロードのTI
D、開始アドレス、バイト・カウントを含むだろう。ス
トアの実行中にこのメカニズムは、ストアのTIDを事
前ロード待ち行列上のそれぞれのロードと比較するだろ
う。ストアより新しいと判定されたロードごとに、スト
アとこのようなロードとの間に共通にアドレス指定され
たバイトが存在する場合、ストアヒットロード条件が発
生しており、このロードは、ストアによる更新を含むデ
ータを獲得しなければならない。
【0082】ストアヒットロードの発生が検出される
と、例外を発生したロード命令のTIDを使用して、ロ
ード命令のアドレスを取り出すために割込みスタックに
インデックスを付ける。次に、ロードおよび後続命令の
ために命令消去コマンドが発行され、TIDテーブルが
履歴バッファからの情報によって更新される。命令取出
しはロード命令のアドレスから再開され、論理的にロー
ドより前にある命令は影響を受けない。
【0083】他の実施例では、論理的にロードより前に
あるストアであって、そのストアが実行されてからスト
ア・データがキャッシュに書き込まれるまでにロードが
実行される場合に、ロードが受け取るデータに影響する
ストアを検出するためにハードウェアが必要になる。使
用する具体的なハードウェアは、主に設計上の好みの問
題であり、本発明の開示を考慮すると当業者の能力の範
囲内である。たとえば、アドレス生成および変換部分が
完了した後でストアによるキャッシュの更新を行えるよ
うにする一実施例では、まだ書き込まれていないストア
用の変換済みアドレスの待ち行列を含む。上記のストア
ヒットロード条件と同様に、ロードヒットストア条件
は、実行時のロードの経過時間(TID)をこの変換済
みストア待ち行列上の各ストアのTIDと比較すること
によって検出することができる。論理的にロードより前
にあると判定された各ストア待ち行列項目ごとに、ロー
ドとストア項目との間で共通にアドレス指定されたバイ
トがある場合、ロードヒットストア条件が発生している
ので、そのロードはストアによる更新を含むデータを獲
得しなければならない。このチェックを実行するために
必要な回路は、ストアヒットロード・チェックの回路と
ほぼ同一であるが、その場合はストアがロードの待ち行
列と比較されるのに対し、この場合はロードがストアの
待ち行列と比較される。ただし、必要であれば、実行時
のロードが消去されるので、消去コマンド用のTIDを
生成するための優先順位エンコーダまたはマルチプレク
サは一切不要である。
【0084】ロードヒットストアの発生が検出された場
合、本発明のこのバージョンは、ロード中のデータの可
用性に応じて、2通りの経路のうちの1つをたどる。デ
ータがストア・データ待ち行列で使用可能になっている
場合、ハードウェアは、ロード・アクセスがキャッシュ
・ヒットであった場合と同様に、その待ち行列からのデ
ータにアクセスし、そのデータを転送することができ
る。データが使用不能である場合、ストアヒットロード
の場合のように、違反ロード命令と後続命令が消去さ
れ、履歴バッファを使用してTIDテーブルを更新す
る。命令取出しは、ロード命令のアドレスから再開す
る。論理的にロードより前にある命令は、いずれの場合
も影響を受けない。
【0085】サマリー・オーバフロー設定命令に関連す
る順次化を回避するため、本発明の一実施例では、割込
みスタック項目に割り振られた命令のリストにOV設定
命令を追加する。加算拡張など、OE=1を設定する命
令が実行されると、そのOVビット結果はOV設定命令
に関連する割込みスタック項目に保管される。割込みス
タックからの除去についてその項目を考慮する場合、O
V結果を使用して、アーキテクチャSOビットを更新す
る。SOビットが変化する場合、すでに実行された比較
などの論理的に後続の命令が間違ったSO値を有する可
能性がある。したがって、命令消去およびTIDテーブ
ル更新が開始され、後続命令の影響が解消される。OV
設定命令の割込みスタック項目は、新しい取出しアドレ
ス、すなわち、OV設定命令のアドレスに1命令長を加
えたアドレスを生成するために使用する。当然のことな
がら、OV設定命令自体を含む、OV設定命令を含み、
論理的にOV設定命令より前にある命令は影響を受けな
い。
【0086】本発明のさらに他の実施例では、STCX
W命令の実行は成功であると推測される。STCWXの
後続命令は、STCXWが条件コードを「正常実行」と
して設定する場合のように実行することができる。ST
CWXに関する推測が間違っている場合、STWCX後
にディスパッチされる命令の命令消去が開始され、後続
命令の影響が解消される。
【0087】本発明のさらに他の実施例では、実行中に
デッドロックが発生する場合、デッドロック・サイクル
・カウンタを加算することによって、機能的に正しいプ
ログラム結果を達成することができる。デッドロックが
検出された場合、割込みスタック項目を有する命令を選
択することができ、命令消去およびTIDテーブル更新
が行われ、選択した命令によって取出しが再開される。
回復動作の様々な例については、図5〜94に関連して
詳述する。
【0088】第1の例では、命令完了順序が1、3、
4、5であると想定する。また、命令5の完了後に、命
令2が予測外れ分岐であると判明するものと想定する。
この場合、回復については、図29〜85に関連して示
す。次に図11、図29、図47、図65、図83を参
照すると、命令1と3はその順序で発行され、完了す
る。命令の経過時間はそのTID値から判定できること
が想起されるだろう。この場合、命令1が完了すると、
それは割込みスタック上で最古の項目900、すなわ
ち、TID2より古いことをプロセッサが判定する。し
たがって、履歴バッファ項目600は履歴バッファから
除去される。図47を参照すると、項目708では命令
1がGPR4の最新セッタではないことが分かる。した
がって、命令1の結果はGPR4に書き込まれない。し
かし、命令1の結果は命令4が必要とし、命令4はPE
Qの項目804に格納されているので、PEQは結果バ
スをスヌープし、結果バスの1つで命令1の結果を検出
したときに項目804のソース・ブロックを更新するこ
とになる。これについては以下に詳述する。命令1が完
了しているので、項目800はPEQから除去される。
命令1は割込み可能命令ではなかったので、図83に示
す割込みスタックはいかなる変更も行われない。
【0089】次に命令3が終了する。命令3はストア命
令であり、GPRレジスタへの書込みを行わなかったの
で、履歴バッファまたはGPRテーブルにはいかなる変
更も行われない。しかし、命令3に対応するPEQ項目
802は、図65に示すようにPEQテーブルから除去
される。次に命令3に対応するスタック項目902は、
プロセッサによって完了のマークが付けられる。
【0090】次に図30、図48、図66、図84を参
照すると、命令4が発行され、実行される。命令4は命
令2より新しいので、図30に示すように履歴バッファ
から除去されない。しかし、それはGPR4の最新セッ
タなので、その結果はGPRテーブル項目708の値フ
ィールドに書き込まれ、有効/タグ付きフィールドは有
効に設定される。図66を参照すると、命令4に対応す
るPEQ項目804はPEQバッファから除去され、命
令4である割込みスタックの項目904には完了のマー
クが付けられる。
【0091】次に命令4が実行され、その値がGPRテ
ーブルに書き込まれるので、PEQ項目808は命令4
のデータ用のバスをスヌープし、データが検出される
と、命令4からの値を2つのソース・フィールドの値フ
ィールドにロードし、有効/タグ付きフィールドを有効
に更新する。
【0092】命令4が完了すると、この例に応じて、命
令5が発行され、実行される。命令5も命令2より古い
ので、項目604は履歴バッファから除去されない。し
かし、命令5はGPR2の最新セッタなので、命令5か
らの結果がGPR項目704の値フィールドに書き込ま
れ、有効/タグ付きフィールドが有効に更新される。完
了すると、項目806はPEQテーブルから除去され、
割込みスタックにはいかなる変更も行われない。
【0093】上記の完了例では、命令2はまだ完了して
いない。当然のことながら、命令2が命令6の後で完了
し、命令2が適切に予測されたと判明した場合、いかな
る回復も不要であり、プロセッサは後続命令の実行を継
続することができる。
【0094】しかし、図31、図49、図67、図85
は、命令2が予測外れ分岐であると判明した場合を示し
ている。この場合、図30に示すように履歴バッファの
項目602、604、606を使用して、GPRレジス
タを命令2のディスパッチ前の状態に復元する。その
後、割込みスタックの項目900を使用して、命令2を
再取出しし、その時点から実行を再始動する。最後に、
履歴バッファ、PEQテーブル、割込みスタックが消去
され、プログラム実行が命令2から再始動される。この
場合、すべてのGPR項目は命令2より前のデータを有
し、有効のマークが付けられることになる。
【0095】図32、図50、図68、図86は、命令
2が正しく予測され、ストアがキャッシュに到達する前
にロードが行われ、分岐が解決される前にロードヒット
ストア条件が検出されると想定する、もう1つの例を示
している。この場合、回復シーケンスは、図31、図4
9、図67、図85に関連して前述したものと同様であ
るが、そのアドレスが割込みスタックの項目904(図
84を参照)に格納されている命令4から再取出しが始
まり、GPR項目4、2、3は履歴バッファの項目60
2、604、606を使用して復元される。次にこれら
のバッファ(GPRテーブルを除く)は命令4以降が消
去される。したがって、各バッファの状態は図32、図
50、図68、図86に示すように消去される。
【0096】次に図33〜90を参照し、本発明の動作
のもう1つの例について説明するが、その例では、命令
が1、5、4、3、6という順序で実行され、その時点
でロードがストア・データを待っていたはずであること
をストアが検出したことを示す例外が発生するものと想
定する。図33、図51、図69、図87は、命令1と
5が発行されて終了した後のテーブルの状態を示してい
る。命令1は割込みスタック上の最古の命令より古いの
で、履歴バッファの項目600から除去される。命令4
はレジスタ4の最新セッタなので、GPR項目708は
更新されない。項目800はPEQテーブルから除去さ
れるが、命令1は割込み不能命令なので、割込みスタッ
クにはいかなる変更も行われない。次に、命令5が実行
される。命令5は命令2より新しいので、項目604は
そのまま履歴バッファに存続する。命令5からの結果は
GPRレジスタ2に書き込まれ、これらの結果を反映
し、有効/タグ付きフィールドを有効に変更するように
GPRテーブルが更新される。最後に、PEQテーブル
の項目806が除去される。もう一度図64を参照する
と、命令1と5が必要とするすべてのソース・データが
すでに有効であり、したがって、いかなるバス・スヌー
プも不要なので、命令1と5は即時発行および実行がで
きる状態になっていることに留意されたい。また、命令
5がプロセッサから完全に除去されることにも留意され
たい。これは、完了バッファおよび完了プロセスを必要
とするリネーム方式よりこの実施例の方が優れている利
点の1つを示すものである。命令は(割込み可能な命令
でも)、実行後にこのプロセッサから完全に消滅するこ
とができる。さらに、それに対応する命令が完了するま
で「中間」結果を「活動」リネーム・レジスタに保持す
るリネーム方式とは異なり、このプロセッサ内の命令が
GPR将来ファイルを更新し(TIDが最も最近ディス
パッチされたセッタと一致する場合)、命令待ち行列が
結果バスをスヌープすると、命令結果は直ちに廃棄さ
れ、いかなる活動リネーム・レジスタも不要である。次
に、命令4が発行されて実行され、その結果をGPRレ
ジスタ4に書き込む。これは図52に示すが、同図で
は、有効/タグ付きフィールドが有効に更新され、値フ
ィールドには項目708の命令4からの結果が書き込ま
れる。命令4は命令2より新しいので、項目602はそ
のまま履歴バッファに存続する。項目804はPEQバ
ッファから除去され、割込みスタックの904には完了
のマークが付けられる。
【0097】次に、図17、図35、図53、図71、
図89に示すように、命令3と6が発行され、実行され
る。命令3が実行されると、命令3はGPR設定命令で
はなかったので、履歴バッファにはいかなる変更も行わ
れない。命令6はそのレジスタの最新セッタなので、G
PRテーブル項目706は命令3からの結果によって更
新されない。項目802はPEQバッファから除去され
る。
【0098】命令6が実行されると、これらの結果を反
映するようにGPRテーブルの項目706が更新され
る。項目808はPEQバッファから除去され、項目9
06には割込みスタックで「完了」のマークが付けられ
る。
【0099】この時点では、ロードがストア・データを
待っていたはずであることをストア命令3が検出するも
のと想定する。この場合、次にプロセスは履歴バッファ
を使用してGPRレジスタ4、2、3を復元し、次に割
込みスタック項目904を使用して命令4の再取出しを
実行する。その後、4より大きいかまたはそれに等しい
TIDを有する命令のために、履歴バッファ、PEQ、
割込みスタックはいずれも消去される。テーブルの状況
は図36、図54、図72、図90に示す。
【0100】図37、図55、図73、図91に示すよ
うに、わずかに異なる例では、命令が1、5、4、3、
6という順序で実行され、テーブルは始めに図33、図
51、図69、図87に示すように見える。この場合、
命令4は適切に発行されるが、加算拡張命令6はオーバ
フロー・エラーを検出すると想定する。この場合、バッ
ファ内には命令6より新しい項目がまったくないので、
GPRを復元するために履歴バッファ項目は一切使用し
ない。したがって、プロセッサは、単に6より大きいか
またはそれに等しいTIDを有するすべての命令を消去
し、オーバフロー・ビットを設定し、加算拡張命令6以
上の命令を再取出しする。より具体的には、「ADDE
O」命令のディスパッチャ中に行われる予測は、その命
令の実行中にオーバフローは一切発生しないというもの
だったので、実際の結果がこの予測結果と比較される。
予測結果が間違っていた場合、消去が行われる。この場
合、オーバフロー・フラグ(ならびにその結果のサマリ
ー・オーバフロー・フラグ)が設定され、(ADDEO
命令の)TID+1を使用してマシンを消去し、ADD
EO命令のTIDを使用して割込みスタックにインデッ
クスを付け、ADDEO命令のアドレスより4バイト
(1命令長)上から再取出しが始まる。
【0101】図20〜94を参照すると、命令1、2、
4、3、5、6がその順序で実行される完了シーケンス
例による本発明の動作が示されている。命令1が発行さ
れて完了すると、その命令は履歴バッファから除去され
る。この場合も、命令4の方が新しいので、GPRテー
ブルにはいかなる更新も行われない。項目800はPE
Qテーブルから除去され、割込みスタックにはいかなる
変更も行われない。命令2が完了すると、割込みスタッ
ク上の項目900には完了のマークが付けられる。他の
バッファには、それ以外にいかなる変更も行われない。
【0102】命令4が実行されると、GPRテーブル項
目708は有効のマークが付けられ、命令4の結果によ
って更新される。図39、図57、図75、図93に示
すように、項目804はPEQテーブルから除去され、
割込みスタックの項目904は完了のマークが付けられ
る。次に、命令3が完了する。履歴バッファまたはGP
Rテーブルについては、いかなる変更も不要である。P
EQテーブルでは項目802が除去され、図93に示す
ように項目902は割込みスタックで完了のマークが付
けられる。命令3と4はともに割込みスタックで完了の
マークが付けられるので、命令4は最古の命令、すなわ
ち、スタック上の命令6より古くなる。したがって、項
目602に格納されている命令4は履歴バッファから除
去される。次に命令5が実行されると、GPRテーブル
項目704は図57に示すように更新され、項目806
はPEQバッファから除去される。次に命令5が履歴バ
ッファから除去される。最後に、命令6が完了する。こ
の場合、オーバフロー例外は一切発生しないと想定す
る。項目706は有効のマークが付けられ、命令6の結
果によって更新される。割込みスタック項目906は完
了のマークが付けられ、履歴バッファ項目606は履歴
バッファ・テーブルから除去される。項目808はPE
Qテーブルから除去され、この時点のプロセッサの状態
については図40、図58、図76、図94に示す。
【0103】他の実施例では、本発明によりアーキテク
チャ・レジスタの順不同更新が可能になる。これについ
ては、図98〜106に関連して詳述する。具体的に
は、完了(またはリオーダ)バッファを実現するプロセ
ッサにおいて、各命令がディスパッチされるときに各命
令ごとに完了テーブル内の項目が作成されるはずであ
る。通常、各結果生成命令ごとに、その命令の投機実行
をサポートするために、リネーム・レジスタも割り当て
られるはずである。命令が実行されると、その結果は関
連のリネーム・レジスタに入る。完了ユニットは完了テ
ーブル内の最古命令の状況をチェックするはずである。
その命令がすでに実行され、例外を発生しないことが分
かっており、その結果が使用可能である場合、命令は
「完了」している。これにより、その結果はリネーム・
レジスタから、各汎用レジスタ(GPR)のアーキテク
チャ・バージョンを含むGPRにコピーされる。(場合
によっては、GPRとリネームが同じ構造内に存在する
こともある。その場合、GPRへのリネーム・レジスタ
の明示コピーは一切行われないが、ポインタの更新によ
って論理コピーが行われる。)次に完了プロセスは、完
了した命令を除去し、残りの完了テーブル項目を論理的
に進めるはずである。たとえば、完了テーブル内に十分
な余裕があり、十分な数のリネーム・レジスタが使用可
能であると想定すると、図98に示す6つの命令からな
るシーケンスをディスパッチ可能である。例示のため、
ロードである命令番号1についてキャッシュ・ミスが発
生したと想定する。その結果、データ依存関係のため、
命令2と3は進むことができない。より具体的には、キ
ャッシュ・ミスを満足するためにデータが返されるま
で、命令2の割込み可能性を判定することはできない。
しかし、命令4、5、6は実行することができ、それぞ
れの結果は関連またはターゲットのリネーム・レジスタ
に入る。命令2と、多くの実施態様の命令1は完了テー
ブルから除去するための条件を満足しないので、キャッ
シュ・ミス要求によってもたらされるデータを使用して
命令2を実行できるまで、その命令とすべての後続命令
はそのまま完了テーブル内に存続する。さらに、命令
4、5、6用のデータはリネーム・レジスタ内に存続
し、これらの命令が最終的にプロセッサ内の最古の命令
になったときにGPRにコピーされるのを待っている。
完了テーブル空間またはリネーム・レジスタの一方(ま
たは両方)が使い尽くされると、キャッシュ・ミス処理
時間に応じて、ディスパッチ停止が持ち込まれる可能性
がある。さらに、キャッシュ・ミスが解決され、完了プ
ロセスが再開されると、リネームからGPRへのコピー
・プロセスに対する制約によって、結果的に追加のディ
スパッチ停止を引き起こすような他の問題がもたらされ
る。
【0104】対照的に、本発明では完了テーブルがない
ので、関連のディスパッチ制約が除去される。図99〜
102は、図98に示す命令1〜6がディスパッチされ
た後のGPRテーブル、履歴バッファ・テーブル、PE
Qテーブル、割込みスタックの状態をそれぞれ示してい
る。これらのテーブルの操作についてはすでに詳述した
ので、この実施例に関連する点についてのみ以下にさら
に説明する。図99を参照すると、レジスタ4に関する
項目1408には命令6のTIDによってタグが付けら
れていることが分かるだろう。命令2、4、5、6はい
ずれもアーキテクチャ・レジスタとしてレジスタ4を指
定するが、それはGPR4の最新セッタなので、項目1
408には命令6によってタグが付けられる。
【0105】図100は、履歴バッファ・テーブルを示
している。命令1、2、3はいずれもディスパッチ時に
GPRテーブルから有効データを受け取っており、それ
ぞれの値フィールドは、ディスパッチ時に存在したよう
に、レジスタ2、4、3の内容をそれぞれ含んでいる。
TIDフィールドは無意味なものになる。命令4、5、
6はいずれもGPRテーブルからタグを受け取ってい
る。
【0106】次に図101を参照すると、図示のように
命令1〜6のディスパッチ後にフィールド1600〜1
610が更新される。フィールド1606には、命令4
に関するソース・フィールドがレジスタ1およびレジス
タ0の内容からの有効データを含むことが示されてい
る。したがって、命令4は実行のためにその適切な機能
ユニットに発行できる状態になっている。図102は、
例外が発生した場合にプロセッサの再始動のために命令
1および2のアドレスを格納する割込みスタックを示し
ている。
【0107】命令4に関するソース・レジスタは有効な
ので、その命令が発行され、実行される。命令4の実行
によって例外を発生することはないので、命令4の結果
は他のテーブルによって結果バスからスヌープされる。
次に図101を参照すると、命令4の結果が使用可能に
なると、フィールド1608内の命令5が発行し実行で
きる状態になっていることが分かる。命令5は例外を発
生しないので、その結果が使用可能になると、フィール
ド1610内の命令6は発行し実行できる状態になる。
【0108】命令6の実行によって例外を発生すること
はないので、テーブルの状態は図103〜106に示す
通りになる。図103のフィールド1400および14
02には、レジスタ0および1がまだ有効であり、その
シーケンス前に格納された値を含むことが示されてい
る。フィールド1404および1406には、レジスタ
2および3がまだTID1および3によってそれぞれタ
グが付けられていることが示されている。項目1408
には、レジスタ4が有効になり、命令6の実行による結
果を含むことが示されている。命令4および5の結果
は、宛先としてGPR4を有するにもかかわらず、これ
までGPRテーブルには格納されていないが、他のテー
ブルが要求するようにバスからスヌープされている。図
104には、履歴バッファが依然として未実行命令1〜
3に関する項目1500、1502、1504のみを含
むことが示されている。GPR4には命令6からの結果
のみ保持される。
【0109】同様に、実行された命令は、図105に示
すようにPEQテーブルから除去され、次の命令シーケ
ンスのために追加の空間が解放される。項目1602お
よび1604内の未実行命令2および3のみがそのまま
存続する。
【0110】したがって、図98に示す命令シーケンス
と実行条件の場合、命令2および3がまだ実行されてい
なくても、命令6が実行を開始すると、命令4および5
とそれぞれの結果はもはやプロセッサ内には存在せず、
したがって、資源を一切必要としなくなる。履歴バッフ
ァ項目は、それぞれのターゲット・レジスタを設定する
ための割込みウィンドウ内の第1の命令ではないので不
要になる。これらの命令はすでに実行され、本発明は完
了テーブルに依存しないので、命令待ち行列項目を一切
必要としない。GPR4を使用する後続命令が命令6
(または後続命令)の結果を獲得するので、それぞれの
結果は履歴バッファまたは命令待ち行列項目に存在しな
い。
【0111】完了テーブルを必要とするプロセッサで
は、完了テーブル内の命令の「存続時間」はディスパッ
チの時点から完了の時点までであり、この場合の完了と
はすべての先行命令も完了していることを暗に意味す
る。本発明では、ほとんどの命令の場合、存続時間はデ
ィスパッチから実行までであり、通常、間隔がかなり短
い。割込み可能命令の場合、存続時間はディスパッチの
時点から「割込み点」を越える時点までであり、その割
込み点は「完了」点と同じであるが、多くの場合、「完
了」点より早くなる。
【0112】さらに、完了テーブルにより、投機結果は
ディスパッチから完了までリネーム・レジスタを拘束す
る。本発明では、結果は、ディスパッチから実行までの
間、論理的に命令待ち行列内に存在し、実行後に消滅
し、コピーを必要とする場合は「割込み点」まで履歴バ
ッファ内に存在するか、あるいは実行されるまで従属命
令の命令待ち行列ソース・フィールド内に存在する。存
続時間が短くなると、資源要件が低減されるか、または
より積極的な投機が可能になる。
【0113】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0114】(1)プロセッサのアーキテクチャ状態を
維持するための方法であって、識別タグと、アーキテク
チャ・レジスタ・テーブル内の関連項目とを有する命令
をディスパッチするステップと、ディスパッチされた前
記命令の前記識別タグが前記項目に格納された先行命令
の識別タグより最新のものである場合に、前記ディスパ
ッチされた命令の前記識別タグを前記アーキテクチャ・
レジスタ・テーブル内の前記項目に書き込むステップと
を含む方法。 (2)前記先行命令の識別タグを履歴バッファ・テーブ
ル内の項目に書き込むステップをさらに含む、上記
(1)に記載の方法。 (3)ディスパッチされた前記命令の前記識別タグが、
前記ディスパッチされた命令の結果が使用可能になった
ときに前記項目に格納される前記識別タグと一致する場
合に、前記結果を前記アーキテクチャ・レジスタ・テー
ブル内の前記項目に書き込むステップをさらに含む、上
記(2)に記載の方法。 (4)ディスパッチされた前記命令に関連する前記識別
タグが、ディスパッチされた前記命令の結果が使用可能
になったときに前記アーキテクチャ・レジスタ・テーブ
ルの前記関連項目に格納される前記命令の識別タグと一
致する場合に、前記結果を前記履歴バッファ・テーブル
内の項目に書き込むステップをさらに含む、上記(2)
に記載の方法。 (5)ディスパッチされた前記命令の前記識別タグを前
記アーキテクチャ・レジスタ・テーブル内の項目に書き
込むステップが、前記識別タグを前記項目内の命令識別
フィールドに書き込むステップを含む、上記(1)に記
載の方法。 (6)ディスパッチされた前記命令の前記識別タグを前
記アーキテクチャ・レジスタ・テーブル内の項目に書き
込むステップが、タグ付きを示すように前記アーキテク
チャ・レジスタ・テーブルの前記関連項目内の有効タグ
付きフィールドを設定するステップを含む、上記(1)
に記載の方法。 (7)ディスパッチされた前記命令の前記結果を前記ア
ーキテクチャ・レジスタ・テーブル内の前記関連項目に
書き込むステップが、前記結果を前記アーキテクチャ・
レジスタ・テーブル項目内の値フィールドに書き込むス
テップを含む、上記(3)に記載の方法。 (8)前記ディスパッチされた命令の前記結果を前記ア
ーキテクチャ・レジスタ・テーブル内の前記関連項目に
書き込むステップが、有効を示すように前記項目内の有
効タグ付きフィールドを設定するステップを含む、上記
(7)に記載の方法。 (9)プロセッサ状態を回復するための方法であって、
命令をディスパッチする相対順序を示すタグを使って前
記命令にタグを付けるステップと、前記命令のディスパ
ッチに応答して、前記命令のタグを含む情報をアーキテ
クチャ・レジスタに書き込むステップであって、前記書
込みが、前にディスパッチされたディスパッチ済み命令
の1つに応答して書き込まれた情報を置き換えることが
できるステップと、タグ付きでディスパッチされた前記
命令の処理に応答して、前記命令のタグを使ってプロセ
ッサ資源内の項目にタグを付けることを含め、前記項目
に情報を書き込むステップであって、各タグが、それに
関して前記プロセッサ資源項目が解放されていないディ
スパッチされた命令に対してグローバルに固有の値を有
するので、前記タグ付き項目および命令を具体的に識別
することができるステップとを含む方法。 (10)前記アーキテクチャ・レジスタ内で置き換えら
れる前記情報を履歴バッファに保管するステップと、前
記履歴バッファ内のタグと割込みが発生した命令のタグ
との比較に応答して前記履歴バッファから選択した情報
を前記アーキテクチャ・レジスタに復元するステップ
と、前記項目の前記情報タグと前記割込みが発生した命
令の前記タグとの比較に応答して前記プロセッサ資源項
目を解放するので、前記割込みが発生した命令の後でデ
ィスパッチされた命令に関する項目を解放することがで
きるステップとを含む、上記(9)に記載の方法。 (11)前記復元および解放が、システム・リセット割
込み、マシン・チェック割込み、データ・アクセス割込
み、命令アクセス割込み、外部割込み、アライメント割
込み、プログラム実行割込み、浮動小数点使用不能割込
み、減分器割込み、システム・コール、追跡例外、浮動
小数点支援などの事象によって割込みが行われた前記命
令に応答する、上記(10)に記載の方法。 (12)プロセッサのアーキテクチャ状態を維持するた
めの装置であって、識別タグと、アーキテクチャ・レジ
スタ・テーブル内の関連項目とを有する命令をディスパ
ッチする手段と、ディスパッチされた前記命令の前記識
別タグが前記項目に格納された先行命令の識別タグより
最新のものである場合にディスパッチされた前記命令の
前記識別タグを前記アーキテクチャ・レジスタ・テーブ
ル内の前記項目に書き込む手段とを含む装置。 (13)前記先行命令の識別タグを履歴バッファ・テー
ブル内の項目に書き込む手段をさらに含む、上記(1
2)に記載の装置。 (14)ディスパッチされた前記命令の前記識別タグ
が、ディスパッチされた前記命令の結果が使用可能にな
ったときに前記項目に格納される前記識別タグと一致す
る場合に、前記結果を前記アーキテクチャ・レジスタ・
テーブル内の前記項目に書き込む手段をさらに含む、上
記(13)に記載の装置。 (15)ディスパッチされた前記命令に関連する前記識
別タグが、ディスパッチされた前記命令の結果が使用可
能になったときに前記アーキテクチャ・レジスタ・テー
ブルの前記関連項目に格納される前記命令の識別タグと
一致する場合に、前記結果を前記履歴バッファ・テーブ
ル内の項目に書き込む手段をさらに含む、上記(14)
に記載の装置。 (16)ディスパッチされた前記命令の前記識別タグを
前記アーキテクチャ・レジスタ・テーブル内の項目に書
き込む前記手段が、前記識別タグを前記項目内の命令識
別フィールドに書き込む、上記(12)に記載の装置。 (17)ディスパッチされた前記命令の前記識別タグを
前記アーキテクチャ・レジスタ・テーブル内の項目に書
き込む前記手段が、タグ付きを示すように前記アーキテ
クチャ・レジスタ・テーブルの前記関連項目内の有効タ
グ付きフィールドを設定する、上記(12)に記載の装
置。 (18)ディスパッチされた前記命令の前記結果を前記
アーキテクチャ・レジスタ・テーブル内の前記関連項目
に書き込む前記手段が、前記結果を前記アーキテクチャ
・レジスタ・テーブル項目内の値フィールドに書き込
む、上記(14)に記載の装置。 (19)ディスパッチされた前記命令の前記結果を前記
アーキテクチャ・レジスタ・テーブル内の前記関連項目
に書き込む前記手段が、有効を示すように前記項目内の
有効タグ付きフィールドを設定する、上記(18)に記
載の装置。 (20)プロセッサ状態を回復するための装置であっ
て、命令をディスパッチする相対順序を示すタグを使っ
て前記命令にタグを付ける手段と、前記命令のディスパ
ッチに応答して、前記命令のタグを含む情報をアーキテ
クチャ・レジスタに書き込む手段であって、前記書込み
が、前にディスパッチされたディスパッチ済み命令の1
つに応答して書き込まれた情報を置き換えることができ
る手段と、タグ付きでディスパッチされた前記命令の処
理に応答して、前記命令のタグを使ってプロセッサ資源
内の項目にタグを付けることを含め、前記項目に情報を
書き込む手段であって、各タグが、それに関して前記プ
ロセッサ資源項目が解放されていないディスパッチされ
た命令に対してグローバルに固有の値を有するので、前
記タグ付き項目および命令を具体的に識別することがで
きる手段とを含む装置。 (21)前記アーキテクチャ・レジスタ内で置き換えら
れる前記情報を履歴バッファに保管する手段と、前記履
歴バッファ内のタグと割込みが発生した命令のタグとの
比較に応答して前記履歴バッファから選択した情報を前
記アーキテクチャ・レジスタに復元する手段と、前記項
目の前記情報タグと前記割込みが発生した命令の前記タ
グとの比較に応答して前記プロセッサ資源項目を解放す
るので、前記割込みが発生した命令の後でディスパッチ
された命令に関する項目を解放することができる手段と
を含む、上記(20)に記載の装置。 (22)前記復元手段および前記解放手段が、システム
・リセット割込み、マシン・チェック割込み、データ・
アクセス割込み、命令アクセス割込み、外部割込み、ア
ライメント割込み、プログラム実行割込み、浮動小数点
使用不能割込み、減分器割込み、システム・コール、追
跡例外、浮動小数点支援などの事象によって割込みが行
われた前記命令に応答する、上記(21)に記載の装
置。
【図面の簡単な説明】
【図1】本発明の実施例による汎用レジスタ(「GP
R」)テーブルを示す図である。
【図2】本発明の実施例による履歴バッファ・テーブル
を示す図である。
【図3】本発明の実施例による実行前待ち行列データ構
造を示す図である。
【図4】本発明による命令スタックを示す図である。
【図5】本発明の実施例の動作を示すために使用する命
令シーケンス例を示す図である。
【図6】本発明の実施例の動作を示すために使用する命
令シーケンス例を示す図である。
【図7】本発明の実施例の動作を示すために使用する命
令シーケンス例を示す図である。
【図8】本発明の実施例の動作を示すために使用する命
令シーケンス例を示す図である。
【図9】本発明の実施例の動作を示すために使用する命
令シーケンス例を示す図である。
【図10】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図11】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図12】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図13】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図14】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図15】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図16】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図17】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図18】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図19】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図20】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図21】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図22】本発明の実施例の動作を示すために使用する
命令シーケンス例を示す図である。
【図23】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図24】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図25】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図26】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図27】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図28】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図29】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図30】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図31】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図32】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図33】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図34】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図35】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図36】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図37】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図38】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図39】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図40】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる履歴バッファの動作を示す図である。
【図41】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図42】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図43】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図44】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図45】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図46】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図47】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図48】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図49】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図50】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図51】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図52】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図53】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図54】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図55】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図56】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図57】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図58】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるGPRテーブルの動作を示す図である。
【図59】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図60】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図61】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図62】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図63】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図64】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図65】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図66】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図67】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図68】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図69】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図70】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図71】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図72】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図73】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図74】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図75】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図76】図5に示す命令シーケンス例の様々な完了シ
ーケンスによるPEQテーブルの動作を示す図である。
【図77】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図78】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図79】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図80】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図81】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図82】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図83】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図84】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図85】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図86】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図87】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図88】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図89】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図90】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図91】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図92】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図93】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図94】図5に示す命令シーケンス例の様々な完了シ
ーケンスによる命令スタックの動作を示す図である。
【図95】本発明に使用できるデータ処理システム例の
ブロック図である。
【図96】本発明の実施例による分岐待ち行列(「BR
Q」)を示す図である。
【図97】本発明の実施例で有用なプロセッサ・システ
ムのブロック図である。
【図98】本発明の実施例の動作を示すための命令シー
ケンス例を示す図である。
【図99】本発明の実施例によるGPRテーブルを示す
図である。
【図100】本発明の実施例による履歴バッファ・テー
ブルを示す図である。
【図101】本発明の実施例によるPEQバッファを示
す図である。
【図102】本発明の実施例による割込みスタックを示
す図である。
【図103】本発明の実施例により図99に示すテーブ
ルから更新されたGPRテーブルを示す図である。
【図104】本発明の実施例により図100に示す履歴
バッファ・テーブルから更新された履歴バッファ・テー
ブルを示す図である。
【図105】本発明の実施例により図101に示すPE
Q構造から更新されたPEQ構造を示す図である。
【図106】本発明の他の実施例により図102に示す
割込みスタックから更新された割込みスタックを示す図
である。
【符号の説明】
1000 データ処理システム 1010 中央演算処理装置(CPU) 1012 システム・バス 1014 ランダム・アクセス・メモリ(「RAM」) 1016 読取り専用メモリ(「ROM」) 1018 入出力アダプタ 1020 ディスク記憶装置 1022 ユーザ・インタフェース・アダプタ 1024 キーボード 1026 マウス 1028 スピーカ 1032 トラック・ボール 1034 通信アダプタ 1036 ディスプレイ・アダプタ 1038 ディスプレイ・モニタ
フロントページの続き (72)発明者 フン・キュー・レ アメリカ合衆国78717 テキサス州オース チン ドーマン・ドライブ 16310 (72)発明者 ジョン・エス・ミュヒク アメリカ合衆国78759 テキサス州オース チン アルバーストーン・ウェイ 8606 (72)発明者 スチーブン・ダブリュー・ホワイト アメリカ合衆国78750 テキサス州オース チン ウェスターカーク 9104

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】プロセッサのアーキテクチャ状態を維持す
    るための方法であって、 識別タグと、アーキテクチャ・レジスタ・テーブル内の
    関連項目とを有する命令をディスパッチするステップ
    と、 ディスパッチされた前記命令の前記識別タグが前記項目
    に格納された先行命令の識別タグより最新のものである
    場合に、前記ディスパッチされた命令の前記識別タグを
    前記アーキテクチャ・レジスタ・テーブル内の前記項目
    に書き込むステップとを含む方法。
  2. 【請求項2】前記先行命令の識別タグを履歴バッファ・
    テーブル内の項目に書き込むステップをさらに含む、請
    求項1に記載の方法。
  3. 【請求項3】ディスパッチされた前記命令の前記識別タ
    グが、前記ディスパッチされた命令の結果が使用可能に
    なったときに前記項目に格納される前記識別タグと一致
    する場合に、前記結果を前記アーキテクチャ・レジスタ
    ・テーブル内の前記項目に書き込むステップをさらに含
    む、請求項2に記載の方法。
  4. 【請求項4】ディスパッチされた前記命令に関連する前
    記識別タグが、ディスパッチされた前記命令の結果が使
    用可能になったときに前記アーキテクチャ・レジスタ・
    テーブルの前記関連項目に格納される前記命令の識別タ
    グと一致する場合に、前記結果を前記履歴バッファ・テ
    ーブル内の項目に書き込むステップをさらに含む、請求
    項2に記載の方法。
  5. 【請求項5】ディスパッチされた前記命令の前記識別タ
    グを前記アーキテクチャ・レジスタ・テーブル内の項目
    に書き込むステップが、前記識別タグを前記項目内の命
    令識別フィールドに書き込むステップを含む、請求項1
    に記載の方法。
  6. 【請求項6】ディスパッチされた前記命令の前記識別タ
    グを前記アーキテクチャ・レジスタ・テーブル内の項目
    に書き込むステップが、タグ付きを示すように前記アー
    キテクチャ・レジスタ・テーブルの前記関連項目内の有
    効タグ付きフィールドを設定するステップを含む、請求
    項1に記載の方法。
  7. 【請求項7】ディスパッチされた前記命令の前記結果を
    前記アーキテクチャ・レジスタ・テーブル内の前記関連
    項目に書き込むステップが、前記結果を前記アーキテク
    チャ・レジスタ・テーブル項目内の値フィールドに書き
    込むステップを含む、請求項3に記載の方法。
  8. 【請求項8】前記ディスパッチされた命令の前記結果を
    前記アーキテクチャ・レジスタ・テーブル内の前記関連
    項目に書き込むステップが、有効を示すように前記項目
    内の有効タグ付きフィールドを設定するステップを含
    む、請求項7に記載の方法。
  9. 【請求項9】プロセッサ状態を回復するための方法であ
    って、 命令をディスパッチする相対順序を示すタグを使って前
    記命令にタグを付けるステップと、 前記命令のディスパッチに応答して、前記命令のタグを
    含む情報をアーキテクチャ・レジスタに書き込むステッ
    プであって、前記書込みが、前にディスパッチされたデ
    ィスパッチ済み命令の1つに応答して書き込まれた情報
    を置き換えることができるステップと、 タグ付きでディスパッチされた前記命令の処理に応答し
    て、前記命令のタグを使ってプロセッサ資源内の項目に
    タグを付けることを含め、前記項目に情報を書き込むス
    テップであって、各タグが、それに関して前記プロセッ
    サ資源項目が解放されていないディスパッチされた命令
    に対してグローバルに固有の値を有するので、前記タグ
    付き項目および命令を具体的に識別することができるス
    テップとを含む方法。
  10. 【請求項10】前記アーキテクチャ・レジスタ内で置き
    換えられる前記情報を履歴バッファに保管するステップ
    と、 前記履歴バッファ内のタグと割込みが発生した命令のタ
    グとの比較に応答して前記履歴バッファから選択した情
    報を前記アーキテクチャ・レジスタに復元するステップ
    と、 前記項目の前記情報タグと前記割込みが発生した命令の
    前記タグとの比較に応答して前記プロセッサ資源項目を
    解放するので、前記割込みが発生した命令の後でディス
    パッチされた命令に関する項目を解放することができる
    ステップとを含む、請求項9に記載の方法。
  11. 【請求項11】前記復元および解放が、システム・リセ
    ット割込み、マシン・チェック割込み、データ・アクセ
    ス割込み、命令アクセス割込み、外部割込み、アライメ
    ント割込み、プログラム実行割込み、浮動小数点使用不
    能割込み、減分器割込み、システム・コール、追跡例
    外、浮動小数点支援などの事象によって割込みが行われ
    た前記命令に応答する、請求項10に記載の方法。
  12. 【請求項12】プロセッサのアーキテクチャ状態を維持
    するための装置であって、 識別タグと、アーキテクチャ・レジスタ・テーブル内の
    関連項目とを有する命令をディスパッチする手段と、 ディスパッチされた前記命令の前記識別タグが前記項目
    に格納された先行命令の識別タグより最新のものである
    場合にディスパッチされた前記命令の前記識別タグを前
    記アーキテクチャ・レジスタ・テーブル内の前記項目に
    書き込む手段とを含む装置。
  13. 【請求項13】前記先行命令の識別タグを履歴バッファ
    ・テーブル内の項目に書き込む手段をさらに含む、請求
    項12に記載の装置。
  14. 【請求項14】ディスパッチされた前記命令の前記識別
    タグが、ディスパッチされた前記命令の結果が使用可能
    になったときに前記項目に格納される前記識別タグと一
    致する場合に、前記結果を前記アーキテクチャ・レジス
    タ・テーブル内の前記項目に書き込む手段をさらに含
    む、請求項13に記載の装置。
  15. 【請求項15】ディスパッチされた前記命令に関連する
    前記識別タグが、ディスパッチされた前記命令の結果が
    使用可能になったときに前記アーキテクチャ・レジスタ
    ・テーブルの前記関連項目に格納される前記命令の識別
    タグと一致する場合に、前記結果を前記履歴バッファ・
    テーブル内の項目に書き込む手段をさらに含む、請求項
    14に記載の装置。
  16. 【請求項16】ディスパッチされた前記命令の前記識別
    タグを前記アーキテクチャ・レジスタ・テーブル内の項
    目に書き込む前記手段が、前記識別タグを前記項目内の
    命令識別フィールドに書き込む、請求項12に記載の装
    置。
  17. 【請求項17】ディスパッチされた前記命令の前記識別
    タグを前記アーキテクチャ・レジスタ・テーブル内の項
    目に書き込む前記手段が、タグ付きを示すように前記ア
    ーキテクチャ・レジスタ・テーブルの前記関連項目内の
    有効タグ付きフィールドを設定する、請求項12に記載
    の装置。
  18. 【請求項18】ディスパッチされた前記命令の前記結果
    を前記アーキテクチャ・レジスタ・テーブル内の前記関
    連項目に書き込む前記手段が、前記結果を前記アーキテ
    クチャ・レジスタ・テーブル項目内の値フィールドに書
    き込む、請求項14に記載の装置。
  19. 【請求項19】ディスパッチされた前記命令の前記結果
    を前記アーキテクチャ・レジスタ・テーブル内の前記関
    連項目に書き込む前記手段が、有効を示すように前記項
    目内の有効タグ付きフィールドを設定する、請求項18
    に記載の装置。
  20. 【請求項20】プロセッサ状態を回復するための装置で
    あって、 命令をディスパッチする相対順序を示すタグを使って前
    記命令にタグを付ける手段と、 前記命令のディスパッチに応答して、前記命令のタグを
    含む情報をアーキテクチャ・レジスタに書き込む手段で
    あって、前記書込みが、前にディスパッチされたディス
    パッチ済み命令の1つに応答して書き込まれた情報を置
    き換えることができる手段と、 タグ付きでディスパッチされた前記命令の処理に応答し
    て、前記命令のタグを使ってプロセッサ資源内の項目に
    タグを付けることを含め、前記項目に情報を書き込む手
    段であって、各タグが、それに関して前記プロセッサ資
    源項目が解放されていないディスパッチされた命令に対
    してグローバルに固有の値を有するので、前記タグ付き
    項目および命令を具体的に識別することができる手段と
    を含む装置。
  21. 【請求項21】前記アーキテクチャ・レジスタ内で置き
    換えられる前記情報を履歴バッファに保管する手段と、 前記履歴バッファ内のタグと割込みが発生した命令のタ
    グとの比較に応答して前記履歴バッファから選択した情
    報を前記アーキテクチャ・レジスタに復元する手段と、 前記項目の前記情報タグと前記割込みが発生した命令の
    前記タグとの比較に応答して前記プロセッサ資源項目を
    解放するので、前記割込みが発生した命令の後でディス
    パッチされた命令に関する項目を解放することができる
    手段とを含む、請求項20に記載の装置。
  22. 【請求項22】前記復元手段および前記解放手段が、シ
    ステム・リセット割込み、マシン・チェック割込み、デ
    ータ・アクセス割込み、命令アクセス割込み、外部割込
    み、アライメント割込み、プログラム実行割込み、浮動
    小数点使用不能割込み、減分器割込み、システム・コー
    ル、追跡例外、浮動小数点支援などの事象によって割込
    みが行われた前記命令に応答する、請求項21に記載の
    装置。
JP10100512A 1997-03-31 1998-03-27 プロセッサのアーキテクチャ状態を維持するための方法および装置 Expired - Fee Related JP3132755B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/829,667 US6098167A (en) 1997-03-31 1997-03-31 Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US08/829667 1997-03-31

Publications (2)

Publication Number Publication Date
JPH10283187A true JPH10283187A (ja) 1998-10-23
JP3132755B2 JP3132755B2 (ja) 2001-02-05

Family

ID=25255187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10100512A Expired - Fee Related JP3132755B2 (ja) 1997-03-31 1998-03-27 プロセッサのアーキテクチャ状態を維持するための方法および装置

Country Status (3)

Country Link
US (1) US6098167A (ja)
JP (1) JP3132755B2 (ja)
TW (1) TW346606B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008544353A (ja) * 2005-06-10 2008-12-04 クゥアルコム・インコーポレイテッド マイクロプロセッサの命令パイプライン内の命令フラッシングを管理する方法及び装置

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP2002189603A (ja) * 2000-12-19 2002-07-05 Fujitsu Ltd 計算機とその制御方法
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
US20070186081A1 (en) * 2006-02-06 2007-08-09 Shailender Chaudhry Supporting out-of-order issue in an execute-ahead processor
US7660971B2 (en) * 2007-02-01 2010-02-09 International Business Machines Corporation Method and system for dependency tracking and flush recovery for an out-of-order microprocessor
US8015380B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Launching multiple concurrent memory moves via a fully asynchronoous memory mover
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US8095758B2 (en) * 2008-02-01 2012-01-10 International Business Machines Corporation Fully asynchronous memory mover
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US9626313B2 (en) 2014-12-18 2017-04-18 Qualcomm Incorporated Trace buffer based replay for context switching
US10067766B2 (en) 2015-02-26 2018-09-04 International Business Machines Corporation History buffer with hybrid entry support for multiple-field registers
US9971604B2 (en) * 2015-02-26 2018-05-15 International Business Machines Corporation History buffer for multiple-field registers
US9996353B2 (en) * 2015-02-26 2018-06-12 International Business Machines Corporation Universal history buffer to support multiple register types
US10108423B2 (en) 2015-03-25 2018-10-23 International Business Machines Corporation History buffer with single snoop tag for multiple-field registers
US10248426B2 (en) * 2016-05-24 2019-04-02 International Business Machines Corporation Direct register restore mechanism for distributed history buffers
US10782976B2 (en) * 2018-05-07 2020-09-22 Dejan Spasov Issuing and flushing instructions from reservation stations using wrap bits and indexes
US11106466B2 (en) * 2018-06-18 2021-08-31 International Business Machines Corporation Decoupling of conditional branches
US10970132B2 (en) * 2019-03-19 2021-04-06 International Business Machines Corporation Deadlock resolution between distributed processes
US11907369B2 (en) 2020-08-27 2024-02-20 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception
US11868469B2 (en) * 2020-08-27 2024-01-09 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by preventing all dependent instructions from consuming architectural register result produced by instruction that causes a need for an architectural exception
US11797673B2 (en) 2020-08-27 2023-10-24 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by expeditiously initiating flushing of instructions dependent upon a load instruction that causes a need for an architectural exception
US11733972B2 (en) 2020-10-06 2023-08-22 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by providing random load data as a result of execution of a load operation that does not have permission to access a load address
US11734426B2 (en) 2020-10-06 2023-08-22 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by prevents cache line data implicated by a missing load address from being filled into a data cache memory when the load address specifies a location with no valid address translation or no permission to read from the location
US11853424B2 (en) 2020-10-06 2023-12-26 Ventana Micro Systems Inc. Processor that mitigates side channel attacks by refraining from allocating an entry in a data TLB for a missing load address when the load address misses both in a data cache memory and in the data TLB and the load address specifies a location without a valid address translation or without permission to read from the location

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4870614A (en) * 1984-08-02 1989-09-26 Quatse Jesse T Programmable controller ("PC") with co-processing architecture
US4965721A (en) * 1987-03-31 1990-10-23 Bull Hn Information Systems Inc. Firmware state apparatus for controlling sequencing of processing including test operation in multiple data lines of communication
JP2594979B2 (ja) * 1987-10-23 1997-03-26 株式会社日立製作所 マルチプロセツサシステム
JP3063006B2 (ja) * 1989-02-08 2000-07-12 インテル・コーポレーション マイクロプログラムされるコンピュータ装置及びマイクロコードシーケンスメモリをアドレツシングする方法
US5057997A (en) * 1989-02-13 1991-10-15 International Business Machines Corp. Interruption systems for externally changing a context of program execution of a programmed processor
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
JPH0476626A (ja) * 1990-07-13 1992-03-11 Toshiba Corp マイクロコンピュータ
US5301312A (en) * 1991-08-21 1994-04-05 International Business Machines Corporation Method and system for utilizing benign fault occurrence to measure interrupt-blocking times
US5404558A (en) * 1992-02-17 1995-04-04 Sharp Kabushiki Kaisha Data driven type information processor having a plurality of memory banks
US5361356A (en) * 1992-03-06 1994-11-01 International Business Machines Corporation Storage isolation with subspace-group facility
US5469553A (en) * 1992-04-16 1995-11-21 Quantum Corporation Event driven power reducing software state machine
KR100309566B1 (ko) * 1992-04-29 2001-12-15 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
US5542058A (en) * 1992-07-06 1996-07-30 Digital Equipment Corporation Pipelined computer with operand context queue to simplify context-dependent execution flow
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
US5440703A (en) * 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
US5497317A (en) * 1993-12-28 1996-03-05 Thomson Trading Services, Inc. Device and method for improving the speed and reliability of security trade settlements
TW260765B (ja) * 1994-03-31 1995-10-21 Ibm
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
US5546599A (en) * 1994-03-31 1996-08-13 International Business Machines Corporation Processing system and method of operation for processing dispatched instructions with detected exceptions
US5535346A (en) * 1994-07-05 1996-07-09 Motorola, Inc. Data processor with future file with parallel update and method of operation
US5649136A (en) * 1995-02-14 1997-07-15 Hal Computer Systems, Inc. Processor structure and method for maintaining and restoring precise state at any instruction boundary
US5870612A (en) * 1996-10-15 1999-02-09 International Business Machines Corporation Method and apparatus for condensed history buffer
US5805849A (en) * 1997-03-31 1998-09-08 International Business Machines Corporation Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
US5870582A (en) * 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008544353A (ja) * 2005-06-10 2008-12-04 クゥアルコム・インコーポレイテッド マイクロプロセッサの命令パイプライン内の命令フラッシングを管理する方法及び装置

Also Published As

Publication number Publication date
JP3132755B2 (ja) 2001-02-05
TW346606B (en) 1998-12-01
US6098167A (en) 2000-08-01

Similar Documents

Publication Publication Date Title
JP3424202B2 (ja) プロセッサ内で命令を発行するための方法および装置
JP3132755B2 (ja) プロセッサのアーキテクチャ状態を維持するための方法および装置
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
JP3588755B2 (ja) コンピュータシステム
US5870582A (en) Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
JP3675466B2 (ja) スーパースケーラマイクロプロセサ
JP3096451B2 (ja) データを転送する方法およびプロセッサ
US7571304B2 (en) Generation of multiple checkpoints in a processor that supports speculative execution
US9311084B2 (en) RDA checkpoint optimization
US5931957A (en) Support for out-of-order execution of loads and stores in a processor
US5987600A (en) Exception handling in a processor that performs speculative out-of-order instruction execution
JP2014211881A (ja) 誤予測された分岐のためにフラッシュするセグメント化パイプライン
WO2005098615A2 (en) Using results of speculative branches to predict branches during non-speculative execution
JP3689369B2 (ja) 2次リオーダ・バッファ・マイクロプロセッサ
US5740393A (en) Instruction pointer limits in processor that performs speculative out-of-order instruction execution
US20050223201A1 (en) Facilitating rapid progress while speculatively executing code in scout mode
WO2001025903A1 (en) A method for precise trap handling in case of speculative and out-of-order loads
US7716457B2 (en) Method and apparatus for counting instructions during speculative execution
US5841999A (en) Information handling system having a register remap structure using a content addressable table
US8181002B1 (en) Merging checkpoints in an execute-ahead processor
EP1190313B1 (en) Result field queue

Legal Events

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