JPH10312282A - 命令完了を改良するための方法および装置 - Google Patents

命令完了を改良するための方法および装置

Info

Publication number
JPH10312282A
JPH10312282A JP10073720A JP7372098A JPH10312282A JP H10312282 A JPH10312282 A JP H10312282A JP 10073720 A JP10073720 A JP 10073720A JP 7372098 A JP7372098 A JP 7372098A JP H10312282 A JPH10312282 A JP H10312282A
Authority
JP
Japan
Prior art keywords
instruction
instructions
response
interruptible
completion
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
JP10073720A
Other languages
English (en)
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 JPH10312282A publication Critical patent/JPH10312282A/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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】命令取出し段階という典型的な第1の段階
では、命令がメモリから取り出される。次に、デコード
段階では、命令が各種制御ビットにデコードされ、この
制御ビットは一般にi)その命令が指定する動作を実行
するための機能ユニットのタイプと、ii)その動作のソ
ース・オペランドと、iii)動作の結果の宛先とを指定
する。次に、ディスパッチ段階では、デコードした命令
が制御ビットに応じて実行段階を有するユニットにディ
スパッチされる。この段階は、その命令が指定する通り
に動作を処理する。命令が指定した動作の実行は、1つ
または複数のオペランドを受け入れることと、1つまた
は複数の結果を生成することを含む。
【0004】命令は当初は何らかのプログラム式論理シ
ーケンスで処理するために作成することができるが、複
数命令の同時処理の場合、何らかの点で異なるシーケン
スで命令を処理できることに留意されたい。しかし、命
令は互いに完全に独立しているわけではないので、複雑
な状況が発生する。すなわち、1つの命令の処理が他の
命令からの結果に依存する場合がある。たとえば、分岐
命令に続く命令の処理は、分岐命令が選択した分岐経路
に依存することになる。他の例では、処理システム内の
一部のメモリ要素の内容を読み取る命令の処理は、その
メモリ要素に書き込む先行命令の結果に依存する場合が
ある。
【0005】このような例が示唆するように、1つの命
令が第1の命令に依存し、両方の命令を同時に処理すべ
きであるかまたは第1の命令の前に従属命令を処理すべ
きである場合、第1の命令によって生成された結果に関
する想定を行わなければならない。命令の実行のために
プロセッサが使用するレジスタの内容によって少なくと
も部分的に定義されるように、プロセッサの状態はサイ
クルごとに変化する可能性がある。命令を処理するため
に使用する想定が間違っていることが分かった場合、当
然のことながら、その命令の処理によって生成される結
果は、ほとんど確実に間違ったものになり、プロセッサ
状態は、その想定の対象となった命令までが既知の正し
い結果となる状態に回復しなければならない。(本明細
書では、想定の対象となった命令を「割込み可能命令」
といい、プロセッサ状態を前の状態に回復する必要性を
誘発するような、想定が間違っているという判定を「割
込み」または「割込み点」という。)間違った想定に加
え、プロセッサ状態の回復を必要とするこのような割込
みの原因は他にもある。このような割込みは一般に、プ
ロセッサ外部の命令実行、エラー、または信号に関連し
て発生する異常条件によって発生する。
【0006】「完了」段階は、複数の同時実行の命令が
単一レジスタに結果を預けるような、同時実行から発生
するプログラム順序問題を処理する。また、この段階
は、割込みが行われた命令に続き、その宛先レジスタに
結果を預ける複数の命令から発生する問題も処理する。
従来技術の完了段階に関して言えば、命令に関する情報
は通常、ディスパッチ順序で完了バッファ(リオーダ・
バッファともいう)に保管されるので、命令は順不同で
実行された後でディスパッチ順序でリオーダすることが
できる。また、命令実行の結果は、1つまたは複数のバ
ックアップ・バッファ(リネーム・バッファともいう)
に一時的に保持される。このような実行結果はコミット
されることが分かっているので、最終的には完了バッフ
ァ内の命令シーケンスに応じてアーキテクチャ・レジス
タに書き戻される。完了バッファ項目に対応する実行結
果がリネーム・バッファからアーキテクチャ・バッファ
に書き戻されると、完了およびリネーム・バッファ項目
が解放されるので、このような項目は後でディスパッチ
される命令用の情報で満たすことができる。
【0007】2つの命令例に関して上記のディスパッ
チ、完了、書戻しの所与のタイミング態様を図1に示
す。この例では、対応するサイクルで2つの命令が取り
出され、デコードされ、ディスパッチされる。この例で
は、第2の命令はそのソース・オペランドに関して第1
の命令に依存せず、第2の命令は第1の命令より迅速に
実行されるものと想定する。にもかかわらず、第2の命
令の完了は、第1の命令の実行と完了を必要とする。し
たがって、図1は、第1の命令が実行され完了するま
で、第2の命令の完了と書戻しを延期することを示して
いる。命令2はサイクル3で実行されるが、第1の命令
が実行される前にいくつかのサイクルが消費される。こ
れは、データ・アクセスや、分岐解決などを待つことに
よると考えられる。次に、この例のサイクル6で命令1
が完了する。これに応答して、命令2が完了する。この
例では、命令2がサイクル7で完了すると示されている
が、単一サイクルで多数の命令を完了できる能力を有す
るマシンでは、命令1が同一サイクルで完了したことに
応答して、命令2がサイクル6で完了する可能性がある
ことが分かるだろう。これらの命令は、それぞれサイク
ル7および8で実行の結果を書き戻すと示されている。
【0008】この例が示すように、命令をディスパッチ
し、完了し、書き戻すための現在の方法および装置は、
先行命令の実行および完了を待つことにより、第2の命
令用の完了およびリネーム・バッファ項目の解放が遅延
する恐れがある。このため、後続命令のディスパッチが
遅延する可能性がある。したがって、命令を処理するた
めの方法および装置の改良の必要性が存在する。
【0009】
【発明が解決しようとする課題】したがって、本発明の
一目的は、命令完了の制約を低減することにある。
【0010】本発明の他の目的は、命令完了を待つこと
に関連して拘束される資源を低減することにある。
【0011】
【課題を解決するための手段】本発明によれば、上記そ
の他の目的は、プロセッサ資源(リソース)を割り当て
るためのデータ処理システム内の方法および装置によっ
て達成される。命令は、処理のためにディスパッチさ
れ、タグが付けられる。プロセッサ資源は、タグ付き命
令に関する実行結果を得るためにスヌープする。このよ
うな命令は、論理的には、割込み(命令を完了するシー
ケンスの変更を含まない)を発生しないという判定に応
答して「終了」し、前にディスパッチされたすべての命
令の終了に応答して「完了」する。
【0012】他の態様では、スヌープ資源は、アーキテ
クチャ・レジスタと、リネーム・バッファと、予約ステ
ーションとを含むことができる。リネーム・バッファは
履歴バッファを含むことができる。
【0013】命令としては、ロード命令と、ストア命令
(割込み可能である)とを含むことができる。ロード命
令を実行すると、その命令用のオペランドがメモリから
アーキテクチャ・レジスタにロードされ、そのオペラン
ドは一時的に履歴バッファを含むリネーム・バッファに
ロードすることもでき、ストア命令を実行すると、オペ
ランドがメモリに格納される。この実施例によれば、ロ
ード命令は、レジスタまたはバッファにロードするため
にオペランドが使用可能になる前に完了することがで
き、ストア命令は、メモリに格納するためにそのオペラ
ンドが使用可能になる前に完了することができる。
【0014】他の態様では、アーキテクチャ・レジスタ
をターゲットにする命令に応答して、このような命令用
の情報がリネーム・バッファに入力され、このようなリ
ネーム・バッファ項目はその項目の命令の完了に応答し
て解放される。リネーム・バッファは履歴バッファを含
むことができる。
【0015】さらに他の態様では、その命令がディスパ
ッチされた命令のうちの指定の命令に含まれるかどうか
に応答して、その情報が履歴バッファにも入力されるの
で、それに関していかなる履歴バッファ情報も入力され
ない割込み不能命令の場合に、アーキテクチャ・レジス
タは実行ユニットがその命令を実行した後でその命令に
専念する単独資源になる可能性がある。
【0016】また、命令のディスパッチに応答して、そ
の命令に関する情報が完了待ち行列に入力され、このよ
うな命令に関する待ち行列項目はその命令の完了に応答
して解放される。完了待ち行列項目の解放は、その命令
の結果をその資源に書き込むこととは無関係である。
【0017】他の態様では、命令はグループ化され、1
つのグループは単一の割込み可能命令だけを有し、ディ
スパッチされた割込み可能命令が一切介入しない割込み
可能命令に続いてディスパッチされた割込み不能命令を
さらに含む。したがって、このようなグループには、多
数の割込み不能命令が存在する可能性がある。このよう
な割込み可能命令は、論理的には、割込みを発生しない
という判定に応答して「終了」し、前にディスパッチさ
れたすべての命令の終了に応答して「完了」する。この
ような割込み不能命令は、論理的には、それがディスパ
ッチされる前にこのような割込み不能命令が完了できる
ようにする、その関連割込み可能命令の完了に応答して
「終了」し「完了」する。
【0018】さらに他の態様では、アーキテクチャ・レ
ジスタをターゲットにする命令に応答して、命令用の情
報がリネーム・バッファに入力され、このようなグルー
プ内の命令に関するリネーム・バッファ項目はそのグル
ープの割込み可能命令の完了に応答して解放される。
【0019】追加の態様では、命令のディスパッチに応
答して、割込み可能である命令のみに関する完了待ち行
列に情報が入力される。(従来の完了待ち行列の機能の
少なくとも一部を処理するが、圧縮される、すなわち、
割込み可能命令のみに関する項目を含む待ち行列は、本
明細書ならびに関連出願では、割込み可能命令テーブル
「IIT」と呼ぶこともある。以下に示す詳細説明で
は、従来の完了待ち行列とIITとの違いが明らかにな
るだろう。ただし、本明細書で完了待ち行列という場
合、一般にIITも含むものであると理解されたい。)
このような割込み可能命令に関する完了待ち行列バッフ
ァ項目はその完了に応答して解放される。完了待ち行列
に入力される情報としては、割込み可能命令のアドレス
を含む。割込み可能命令が関連付けられるグループの命
令は、割込み可能命令の完了待ち行列内のアドレスに応
答し、さらにその命令の割込みに応答して、再取出しさ
れる。
【0020】本発明の利点の1つは、アーキテクチャ・
レジスタ、履歴バッファ、予約ステーションに関連する
待ち行列などのプロセッサ資源に実行結果を書き込むこ
ととは無関係に、その完了後に命令を実行することがで
き、命令の完了に応答してその完了待ち行列項目を割振
り解除することができることである。
【0021】他の利点は、そのディスパッチ前に割込み
不能命令を完了できることである。
【0022】さらに他の利点は、それに関して履歴バッ
ファ項目が一切割り振られない割込み不能命令の場合
に、実行ユニットがその命令を実行した後でアーキテク
チャ・レジスタがその命令に専念する単独資源になるう
ることである。
【0023】
【発明の実施の形態】本発明の新規の特徴を明確に示す
ために、以下の説明では、当業者には明らかな情報処理
システムの従来の特徴を省略するか、または簡単に説明
するだけにする。当業者はスーパスカラ・プロセッサに
精通しているものと想定する。特に、適正順序ディスパ
ッチ、順不同実行、適正順序完了という形で動作するこ
のようなプロセッサに精通しているものとする。
【0024】図2を参照すると、同図には、本発明に使
用できるデータ処理システム200の一例が示されてい
る。このシステムは、たとえば、「The PowerPC Archit
ecture: A Specification for a New Family of RISC P
rocessors」第2版(1994年、Cathy May他著)によ
るPowerPCマイクロプロセッサ(「PowerP
C」はIBMの商標である)などの中央演算処理装置
(CPU)210を有する。PowerPCマイクロプ
ロセッサのより具体的な実施態様については、「PowerP
C 604 RISC Microprocessor User's Manual」(199
4年、IBM発行)等に記載されている。本発明の履歴
バッファ(図示せず)はCPU210に含まれる。CP
U210は、システム・バス212によって他の様々な
構成要素に結合される。読取り専用メモリ(「RO
M」)216は、システム・バス212に結合され、デ
ータ処理システム200の所与の基本機能を制御する基
本入出力システム(「BIOS」)を含む。ランダム・
アクセス・メモリ(「RAM」)214と、入出力アダ
プタ218と、通信アダプタ234もシステム・バス2
12に結合される。入出力アダプタ218は、ディスク
記憶装置220と通信する小型計算機システム・インタ
フェース(「SCSI」)アダプタにすることができ
る。通信アダプタ234は、データ処理システムが他の
このようなシステムと通信できるようにする外部ネット
ワークとバス212とを相互接続する。システム・バス
212には、ユーザ・インタフェース・アダプタ222
およびディスプレイ・アダプタ236を介して入出力装
置も接続されている。キーボード224、トラック・ボ
ール232、マウス226、スピーカ228はいずれも
ユーザ・インタフェース・アダプタ222を介してバス
212に相互接続されている。ディスプレイ・モニタ2
38は、ディスプレイ・アダプタ236によってシステ
ム・バス212に接続される。このため、ユーザは、キ
ーボード224、トラックボール232、またはマウス
226によってシステムに入力し、スピーカ228およ
びディスプレイ238を介してシステムから出力を受け
取ることができる。さらに、AIX(「AIX」はIB
Mの商標である)などのオペレーティング・システムを
使用して、図2に示す様々な構成要素の機能を調整す
る。
【0025】CPU(または「プロセッサ」)210
は、集積回路によって形成された様々なレジスタ、バッ
ファ、メモリ、その他のユニットを含み、縮小命令セッ
ト・コンピュータ(「RISC」)技法に応じて動作す
る。CPU210は、一部の態様では内部クロック(図
示せず)に同期したサイクルに応じて処理する。
【0026】以下の説明では、命令の投機実行から発生
する割込みを強調する。しかし、前述のように、割込み
はプロセッサ210外部の命令実行、エラー、または信
号に関連して発生する異常条件によって発生する可能性
もある。たとえば、このような割込みは、1)違法また
は特権命令を実行しようと試みるか、2)無効形式を有
する命令、またはシステム・アーキテクチャ内でオプシ
ョンであるが特定のシステムでは実現されない命令、ま
たは「システム・コール」または「トラップ」命令を実
行するか、3)このような命令が使用可能ではないかま
たはシステム・ソフトウェアの支援を必要とするときに
浮動小数点命令を実行するか、4)無効演算、ゼロ除
算、オーバフロー、アンダフローなどにより、浮動小数
点例外を発生するような浮動小数点命令を実行するか、
5)RAM214またはディスク220を含む、使用不
能記憶位置にアクセスしようと試みるか、6)無効な有
効アドレス・アライメントによって、RAM214また
はディスク220を含む、記憶装置にアクセスしようと
試みるか、7)プロセッサ210に直接接続された装置
(図示せず)あるいはバス212を介してプロセッサ2
10に接続されたシステム200内の他の装置からのシ
ステム・リセットまたはマシン・チェック信号により、
発生する可能性がある。このような条件については、上
記の参考文献、「The PowerPC Architecture: A Specif
ication for a New Family of RISC Processors」、お
よび「PowerPC 604 RISC Microprocessor User's Manua
l」等に詳述されている。
【0027】図3を参照すると、同図には、本発明の好
ましい実施例のCPU210および割込み可能命令テー
ブル(「IIT」)302(「割込みスタック」ともい
う)の所与の態様に関するブロック図が示されている。
(ただし、本明細書では、番号付きの要素は、その要素
が導入されている図に応じて番号を付け、後続の図面で
は一貫してその番号で示すことに留意されたい。)II
Tは、先行技術の完了バッファの所与の機能を処理する
ので、IITと完了バッファには類似点があるが、両者
の間には重要な相違点もある。
【0028】取出しユニット(図示せず)は、命令の通
常シーケンスに基づくかまたは条件付き分岐命令を有す
るシーケンスの場合に予測シーケンスに基づいて、命令
キャッシュ304から命令待ち行列306に命令を取り
出す。デコーダ・ユニット(図示せず)は命令をデコー
ドし、ディスパッチ・ユニット(図示せず)は実行ユニ
ットに関連する予約ステーション324〜334を介し
て適切な実行ユニット308〜318(機能ユニットと
もいう)にそれをディスパッチする。(ただし、1つま
たは複数の関連出願では、予約ステーションにディスパ
ッチされる情報は事前実行待ち行列またはストア事前実
行待ち行列に格納されているものとして記載されている
ことに留意されたい。本明細書の予約ステーションは、
これらの待ち行列と発行論理を含む。)
【0029】図4では、ディスパッチされた命令に関連
する識別子を割り当てることと、ディスパッチされた命
令用の項目をIIT302に作成することを含む、本発
明の実施例の諸態様を示すために、Ld、Add、Ad
d、Cmpなどの命令からなるシーケンスを示す。
【0030】ディスパッチに関連して、命令には、トラ
ンザクション識別子ともいわれる命令ターゲット識別子
(「TID」)が割り当てられる。TIDは、命令がデ
ィスパッチされるシーケンスに対して数値的に単調なも
のなので、命令がディスパッチされる相対シーケンス
は、その命令に割り当てられたTIDから推理すること
ができる。TIDと命令との関係のこの態様は、割込み
が発生した場合のプロセッサ状態の復元に有用であり、
完了バッファの機能の1つ、すなわち、命令の順序を識
別するという機能に取って代わるものである。プロセッ
サ状態を復元する際にTIDを使用するための1つまた
は複数の実施例については、上記で相互参照した1つま
たは複数の関連出願に記載されている。
【0031】図4に示す例では、Ld、Add、Ad
d、Cmpなど、上から下に示すシーケンスで命令がデ
ィスパッチされる。したがって、TIDは図示の通りに
割り当てられ、第1のディスパッチされた命令(「L
d」命令)にはそのシーケンスの最低TID値、すなわ
ち、TID「1」が割り当てられ、第2のディスパッチ
された命令には相対的に次に大きいTID値、すなわ
ち、TID「2」が割り当てられる。
【0032】1つの命令が複数のアーキテクチャ・レジ
スタをターゲットにする場合、その命令には複数のTI
Dが割り当てられる。アーキテクチャ・レジスタをター
ゲットにする各命令ごとに、その命令に割り当てられた
1つまたは複数のTIDのそれぞれがターゲット化レジ
スタの1つに対応する。(ここで使用する用語によれ
ば、レジスタの内容に影響する動作を命令が実行する場
合、その動作はそのレジスタを「ターゲットにする」と
言われ、その命令は「ターゲット化命令」と呼ぶことが
でき、そのレジスタは「ターゲット・レジスタ」または
「ターゲット化レジスタ」と呼ばれる。たとえば、「ld
r3, ...」という命令はレジスタr3をターゲットに
し、r3は「ld r3, ...」という命令のターゲット・レ
ジスタである。)
【0033】TIDと命令とターゲット化レジスタとの
固有の対応関係は、その実行が前の命令の実行による結
果をソース・オペランドとして必要とする場合に、実行
のために命令を発行することに関連してスヌープできる
ようにするために有用である。また、実行結果の書戻し
を順序付けるために完了バッファおよびポインタを使用
するという先行技術の方法の態様に取って代わるために
も、このようなスヌープを可能にする。
【0034】このような情報フローおよびスヌープの様
々な詳細については、上記で相互参照した関連出願に記
載されているが、そこに記載された所与の態様のうち、
本発明に特に関連するものについては、新しい態様およ
び明白ではない態様とともに本明細書で繰返し説明す
る。
【0035】もう一度図3を参照すると、命令のディス
パッチ時に、その命令に関する情報のパッケージが作成
され、IIT302などの様々な資源と、履歴バッファ
340、アーキテクチャ・レジスタ・ファイル342、
予約ステーション324などの他の資源に送られる。情
報は、資源と命令によって様々である。しかし、この情
報の一般的な特徴はTIDであり、これは、機能ユニッ
ト・バス308バス〜318バス上での結果の同報なら
びに履歴バッファ340、レジスタ342、IIT30
2、予約ステーション324などの資源によるバス上で
のスヌープを容易にするものである。
【0036】その用語をここで使用するように、履歴バ
ッファは一種のリネーム・バッファであることを理解さ
れたい。本明細書の用語では、リネーム・バッファは、
アーキテクチャ・レジスタ向けのオペランドを格納する
ためのものである。「履歴バッファ」という用語は、ア
ーキテクチャ・レジスタがより最近にディスパッチされ
た命令の実行結果を含み、リネーム・バッファが比較的
早期にディスパッチされた命令の結果を保持することを
暗に示している。すなわち、「履歴バッファ」という用
語を使用することは、対応するアーキテクチャ・レジス
タがまだコミットされていない可能性のあるプロセッサ
の現行または将来の状態に関する情報を含み、そのバッ
ファが現行または過去の状態に関する情報を含むことを
暗に示している。これは、リネーム・バッファが将来状
態に関する情報を含み、アーキテクチャ・レジスタが現
行のコミット済み状態に関する情報を含むという代替例
とは対照的である。本明細書の実施例については履歴バ
ッファに関して説明するが、コンピュータ・アーキテク
チャの分野の当業者であれば、本明細書の開示内容の所
与の態様がリネーム・バッファの代替応用例にも適用可
能であることを理解されたい。
【0037】命令は、その命令コードに応じて、適切な
実行ユニット(図3の308〜318を参照)向けにデ
ィスパッチされる。たとえば、分岐命令は分岐ユニット
308にディスパッチされ、ストア命令はストア・ユニ
ット316にディスパッチされ、ロード命令を含む固定
小数点命令は「クラスタ」ユニット314などにディス
パッチされる。このディスパッチに関連して、その実行
ユニットに関連する予約ステーションにも情報のパッケ
ージが直ちに送られる。この情報は、命令コードと、命
令のTID番号と、適用可能であれば、その命令用のソ
ース・オペランドを生成する先にディスパッチされた命
令のTID番号とを含む。命令のTIDを含む同様の情
報は、その命令がアーキテクチャ・レジスタをターゲッ
トにする場合にはアーキテクチャ・レジスタ・ファイル
342にも直ちに送られ、その命令がアーキテクチャ・
レジスタをターゲットにする所与の場合には履歴バッフ
ァ340にも送られる。
【0038】命令が実行されると、その結果は、そのT
IDとともにその実行ユニット上で同報される。その結
果を待っている資源のいずれか(これは、少なくとも一
部はその命令のTIDを保持するこのような資源によっ
て示される)は、実行ユニット・バス318バスなどで
必要な結果をスヌープする。したがって、実行結果は単
に同報されるだけであり、その結果を生成するために実
行された命令用のTIDをアーキテクチャ・レジスタ3
42が有する場合はそのレジスタによって読み取られる
ことになる。同様に、その結果は、予約ステーション3
24がTIDを有する場合はそのステーションなどによ
ってスヌープされるが、これは、予約ステーションが実
行のために発行すべき命令を保持し、それが保持する命
令がソース・オペランドに関する結果を必要とする場合
に該当する。また、履歴バッファ340がTIDを有す
る場合には、その結果は履歴バッファによってスヌープ
され、以下同様になる。
【0039】このアーキテクチャの言外の意味は多数あ
る。1つの結果として、プロセッサのコミット済み状態
は必ずしもアーキテクチャ・レジスタ内に存在しない。
また、書戻しは完了バッファによって支配されない。本
発明のアーキテクチャによれば、IITは書戻しを支配
しないが、前述したように、先行技術の完了バッファの
機能の一部を果たす。たとえば、IITは割込みの場合
に命令アドレスを保持する。また、IITは、TID/
GIDの関連付けおよびHB項目の解放に対するそのゲ
ート効果を追跡することに関してプロセッサのコミット
済み状態を制御する。
【0040】IIT302への情報の伝送またはIIT
302での情報の作成については、図4に概念的に示す
が、同図では、第1、第2、第3の項目はディスパッチ
された第1、第5、第7の命令に関する情報を受け取る
ものとして示され、これらの命令は図4に示す割込み可
能命令である。
【0041】IITは、先入れ先出し法の順序づけを有
する待ち行列として実現されている。IITに入力され
る命令用のTIDに関連して、その命令の項目に関する
グループ識別子(「GID」)が割り当てられ、IIT
内の割込み可能命令項目の順序に対応するディスパッチ
の順序を示す。その命令の命令コードに加え、TIDお
よびGIDが図4に概念的に示されている。
【0042】ディスパッチされた割込み可能命令のGI
Dは、ポインタ「DGID」として図3に示されている
ディスパッチGIDポインタによって追跡される。すで
に説明したように、命令は順番にディスパッチされて完
了し、IIT302は先入れ先出し法の待ち行列として
実現される。したがって、IIT内のバッファ位置はシ
ーケンスとして順序付けられ、ディスパッチされた各割
込み可能命令は、直前にディスパッチされた割込み可能
命令に続くシーケンス内の次のバッファ位置に入力され
る。(当然のことながら、バッファの両側にある項目に
ついて発行が行われ、項目のシーケンスは折り返さなけ
ればならない。このような発行を反映するFIFO待ち
行列の実現は、当業者であれば分かるだろう。)同様
に、次にディスパッチされる各割込み可能命令によって
DGIDが更新されるので、それは次の後続IIT位置
を指し示し、その位置に対応する命令に割り当てられた
GID値も示す。
【0043】割込み不能命令は、IIT内の項目を持た
ないが、にもかかわらず、GIDとの関連を有すること
になる。すなわち、割込み不能命令がディスパッチされ
ると、直前にディスパッチされた割込み可能命令のGI
Dは割込み不能命令に関連するものになる。たとえば、
図4に示す割込み可能命令は、第1、第5、第7のディ
スパッチされた命令Ld、Br、Stである。したがっ
て、GID1は第1〜第4のディスパッチされた命令に
関連付けられ、GID2は第5および第6のディスパッ
チされた命令に関連付けられ、GID3は第7のディス
パッチされた命令に関連付けられる。割込み可能命令と
後続の割込み不能命令とのこの関連付けの態様は、たと
えば、上記で相互参照した関連出願の1つまたは複数に
記載されているように、履歴バッファで追跡される。
【0044】もう一度図3を参照すると、同図には、I
IT302の詳細が示されている。ディスパッチされた
命令用のIIT項目の作成は、その命令に関するTID
番号を入力することを含む。また、それは、そのバッフ
ァ位置がすでに割り振られているので現在は有効である
ことを示すために有効ビットまたは「V」ビットとして
示される1つの制御ビットと、その項目がまだ「終了」
していない命令に関連することを示すために終了ビット
または「F」ビットとして示されるもう1つの制御ビッ
トとをその位置用に設定することにより、IIT内のバ
ッファ位置の1つを割り振ることも含み、その用語につ
いては以下に詳述する。また、項目の作成の一部とし
て、図3のフィールド「I Addr」に示すように、
割り振られたバッファ位置に関してディスパッチされた
命令のアドレスが入力される。このアドレスは項目ごと
に含まれるので、割込みが発生した場合に命令はそのア
ドレスから再取出しすることができる。
【0045】命令の命令コードが指定する動作のすべて
を実行する前に、ユニット308〜318のうちの1つ
など、命令に割り当てられた実行ユニットは、その命令
に関連する割込み条件の有無をチェックし、チェックの
結果を示す「終了」報告をIIT302に送るが、その
結果、割込み条件が発生する可能性がある。たとえば、
ロードまたはストア命令の場合、クラスタ・ユニット3
14またはストア・ユニット316のチェックは、その
命令のソースまたは宛先オペランドが指定するメモリ位
置の変換を含むが、実際にデータが記憶域から返された
り記憶域に書き込まれるのを待つことは含まない。指定
のメモリ位置が未定義であるかまたはその他のエラーが
発生している場合、割込みがトリガされる。条件付き分
岐命令の場合、分岐ユニット308のチェックは、分岐
経路の解決と、間違った分岐経路予測が行われたかどう
かの判定とを含み、その場合、間違った分岐経路上にあ
って前に投機実行された命令が取り消されるように割込
みがトリガされる。
【0046】IIT302は、その命令に関する終了報
告を受け取り、その命令のIIT項目用の例外フィール
ドにそれを入力する。この実施例では、例外フィールド
は5ビット・フィールドである。チェックによって検出
されたようにいかなる割込みも要求されない場合、実行
ユニットが返す終了報告は「00000」を示す。終了
報告のその他の例としては、データ記憶割込みの「10
000」、予測外れ分岐経路の「00001」、マシン
・チェック割込みの「00010」、浮動小数点例外
(アンダフロー、オーバフローなど)の「0111
0」、特権命令実行の「00100」がある。
【0047】命令に関する終了報告がIITに送られた
ことに応答して、その命令が終了したことを示すために
その命令用のFビットが設定される。したがって、その
命令は、命令の命令コードが指定したすべての動作の実
行の前に行われるチェックに応答して終了するので、指
定のすべての動作の実行とは無関係に終了する。
【0048】ポインタ「CGID」として図3に示され
ている完了GIDポインタであるもう1つのポインタ
は、IIT内の最も最近ディスパッチされた命令のうち
「完了」した命令を指し示す。割込み可能命令のこのよ
うな完了の条件は、1)その命令用のFビットが示すよ
うに、その命令自体が終了することと、2)それぞれの
FビットまたはそれぞれのIITからの欠落(以下に示
すIITの項目の割振り解除の説明から分かるように、
終了しただけでなく完了したことも示す)が示すよう
に、ディスパッチされたすべての先行割込み可能命令が
終了することである。したがって、割込み可能命令は、
その実行とは無関係に、終了するだけでなく完了する。
すなわち、実行ユニットがその命令の命令コードが指定
する動作を実行する前に生成される終了報告に応答して
完了する。
【0049】CGIDポインタは、最も最近完了した命
令に関するIIT内の項目を指し示し、以下のように更
新される。それが有効であることを示すそのVビットが
設定されている場合、クロック・サイクルなどの間隔
で、現行命令のFビット(すなわち、CGIDポインタ
によって現在示されているものに続く次の項目に対応す
る命令)がチェックされる。現行命令が終了したことを
Fビットが示す場合、その命令は完了したものと見なさ
れる。現行命令の完了に応答して、その命令用のIIT
項目は、その位置がもはや有効な項目を持たないことを
示すためにその項目のIIT位置のVビットをリセット
することによって割振り解除される。また、現行命令の
完了の判定に応答して、直後にディスパッチされた命令
に対応するIIT内の次の有効な項目についても、おそ
らく同じ処理サイクル中に、そのFビットをチェックす
ることによって完了したかどうかがチェックされる。こ
の項目も完了している場合、ポインタはその項目に進め
られ、次の有効な項目について完了したかどうかがチェ
ックされ、ポインタがシーケンス内の完了した最後の項
目に進むまで以下同様に行われる。
【0050】この完了追跡の態様については図5に詳細
に示すが、同図はいくつかの命令の完了シーケンスを示
している。3つの命令例が示されているが、これらはい
ずれも図示の最初の3サイクルで取り出され、デコード
され、ディスパッチされている。この例では、命令1、
2、3はサイクル番号4、3、6でそれぞれ終了する。
命令2はサイクル3で終了するが、命令1が終了するま
で完了することができず、したがって、命令2は命令1
が終了するサイクル4まで完了しない。サイクル4で
は、この例で最初は命令1用のIIT項目より先を指し
示すと思われるCGIDは、命令1の完了に応答して増
分され、その結果、命令1を指し示す。命令2もサイク
ル4の時点までに終了しているので、命令2用のFビッ
トのチェックに応答して、CGIDはもう一度命令2を
指し示すように増分される。これも、おそらくサイクル
4中に行われる可能性がある。命令3はサイクル4の時
点までにまだ終了していないので、CGIDポインタ
は、命令3が終了する後続サイクルまで、命令2を越え
て前に進むことはない。この例では、これは、命令3が
終了し、完了し、実行されるサイクル6で行われる。
【0051】ただし、この例では、命令が実行される
前、すなわち、命令の発行先の実行ユニットでその指定
の動作が実行される前に、命令の完了が行われる可能性
があることも示していることに留意されたい。
【0052】すでに本明細書に記載したように、実施例
の構造およびプロセスによれば、完了したかまたは取り
消された命令の早期プロセッサ状態まで引き返すために
資源を維持することが不要であることを理解されたい。
このような資源としては、完了したかまたは取り消され
たそれぞれの関連割込み可能命令と同じGIDを付けて
ディスパッチされた命令に関する履歴バッファ項目を含
む。したがって、1つの命令の完了に応答して、その命
令と、同じGIDを持つ割込み不能命令とに関する履歴
バッファ項目がリタイヤされる(すなわち、解放され
る、すなわち、割振り解除される)。割込み可能命令が
完了ではなく取り消された場合、完了の場合と全く同様
に、その命令と、対応するGIDを有する後続命令とに
関する履歴バッファ項目が割振り解除されるが、追加の
項目、すなわち、取り消された命令に続くが取り消され
た命令と同じGIDを持たない命令に関する項目も割振
り解除しなければならない。このような履歴バッファ割
振り解除の詳細については、上記で相互参照した関連出
願の1つまたは複数に記載されている。
【0053】また、第1の割込み可能命令の後だが他の
割込み可能命令の前にディスパッチされた割込み不能命
令は第1の割込み可能命令と同じディスパッチ・グルー
プに含まれる、すなわち、第1の割込み可能命令のGI
Dに関連付けられるので、第1の割込み可能命令が完了
するとこれらの命令も完了したと見なされることにも留
意されたい。したがって、割込み不能命令もその実行と
は無関係に完了する。すなわち、その実行より前に行わ
れる可能性のあるチェックに応答して完了する。
【0054】また、その完了がそのディスパッチ・グル
ープ内にあってそれ自体のディスパッチより前にディス
パッチされた割込み可能命令の完了のみに依存するの
で、割込み不能命令は、それがディスパッチされる前で
も完了し、その履歴バッファ項目が解放されることも理
解されたい。さらに、選択した事例では、その命令が1
つまたは複数のアーキテクチャ・レジスタをターゲット
にする場合でも、割込み不能命令については履歴バッフ
ァ項目が生成されない。(これに関する詳細について
は、上記で相互参照した関連出願の1つまたは複数に記
載されている。)したがって、割込み不能命令について
はIIT項目がまったく生成されないので、選択した履
歴バッファなしの場合では、割込み不能命令はIITも
履歴バッファ資源も使用しない。また、このような選択
した割込み不能命令の場合、本発明のこの実施例によれ
ば、実行ユニットは命令に関する結果を生成し、影響を
受けるアーキテクチャ・レジスタ向けにその結果を直ち
に同報するので、このような選択した割込み不能命令に
ついて実行ユニットが解放されると、影響を受けるアー
キテクチャ・レジスタ(複数も可)のみがその命令に専
念することになる。当然のことながら、アーキテクチャ
・レジスタ(複数も可)は、次にディスパッチされた命
令であって同じレジスタ(複数も可)をターゲットにす
る命令の同報済み実行結果をそのレジスタがスヌープし
たことに応答して解放される。
【0055】命令スループットが少なくとも何らかの点
で完了バッファのサイズによって制限されることは、先
行技術では一般的である。本発明により、完了に応答し
てIIT項目を選択作成し、IITおよび履歴バッファ
項目を割振り解除する場合、使用する資源は削減され、
割振り解除が書戻し待ちを含むような先行技術で同様の
資源が解放されるより早い時期にこのような資源が解放
される。このため、本発明では、より多くの命令を所与
のサイズのIITで同時に実行することができる。
【0056】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0057】(1)データ処理システム内で命令処理に
資源を割り振るための方法において、処理のためにディ
スパッチされる命令にタグを付けるステップと、前記タ
グ付き命令に関する実行結果を得るためにプロセッサ資
源によってスヌープするステップと、割込みを発生しな
いという判定に応答してこのような命令を終了し、前に
ディスパッチされたすべての命令の終了に応答して前記
命令を完了し、このような命令がその実行前に完了でき
るようにするステップとを含む方法。 (2)前記スヌープ資源がアーキテクチャ・レジスタを
含む、上記(1)に記載の方法。 (3)前記スヌープ資源がリネーム・バッファを含む、
上記(1)に記載の方法。 (4)前記リネーム・バッファが履歴バッファである、
上記(3)に記載の方法。 (5)前記スヌープ資源が予約ステーションを含む、上
記(4)に記載の方法。 (6)前記命令がロード命令を含み、ロード命令を実行
すると前記命令用のオペランドがレジスタまたはバッフ
ァにロードされ、前記ロード命令は前記レジスタまたは
バッファにロードするために前記オペランドが使用可能
になる前に完了することができる、上記(1)に記載の
方法。 (7)前記命令がストア命令を含み、ストア命令を実行
すると前記命令用のオペランドがメモリに格納され、前
記ストア命令はメモリに格納するために前記オペランド
が使用可能になる前に完了することができる、上記
(1)に記載の方法。 (8)アーキテクチャ・レジスタをターゲットにする前
記命令に応答して、このような命令用の情報をリネーム
・バッファに入力するステップと、このようなリネーム
・バッファ項目の命令の完了に応答して、前記項目を解
放するステップとを含む、上記(1)に記載の方法。 (9)前記リネーム・バッファが履歴バッファを含み、
前記履歴バッファへの前記情報の入力は前記命令が前記
ディスパッチされた命令のうちの指定の命令に含まれる
かどうかにさらに応答するので、それに関していかなる
履歴バッファ情報も入力されない割込み不能命令の場合
に、実行ユニットが前記命令を実行した後でアーキテク
チャ・レジスタが前記命令に専念する単独資源になる可
能性がある、上記(8)に記載の方法。 (10)前記命令のディスパッチに応答して、前記命令
に関する情報を完了待ち行列に入力するステップと、そ
の完了に応答して、このような命令の完了待ち行列項目
を解放するステップとを含む、上記(1)に記載の方
法。 (11)前記完了待ち行列項目の解放が、前記命令の結
果を前記資源に書き込むこととは無関係である、上記
(10)に記載の方法。 (12)データ処理システム内で命令処理に資源を割り
振るための方法において、処理のためにディスパッチさ
れる命令にタグを付けるステップと、前記命令に関する
実行結果を得るためにプロセッサ資源によってスヌープ
するステップと、前記命令をグループ化するステップで
あって、1つのグループが単一の割込み可能命令だけを
有し、ディスパッチされた割込み可能命令が一切介入し
ない前記割込み可能命令に続いてディスパッチされた割
込み不能命令をさらに含むステップと、割込みを発生し
ないという判定に応答してこのような割込み可能命令を
終了し、前にディスパッチされたすべての命令の終了に
応答して前記割込み可能命令を完了するステップと、そ
の関連割込み可能命令の完了に応答して、このような割
込み不能命令を終了して完了し、それがディスパッチさ
れる前にこのような割込み不能命令が完了できるように
するステップとを含む方法。 (13)アーキテクチャ・レジスタをターゲットにする
前記命令に応答して、前記命令用の情報をリネーム・バ
ッファに入力するステップと、このようなグループの前
記割込み可能命令の完了に応答して、前記グループ内の
前記命令に関する前記リネーム・バッファ項目を解放す
るステップとを含む、上記(12)に記載の方法。 (14)前記命令のディスパッチに応答して、割込み可
能である前記命令のみに関する完了待ち行列に情報を入
力するステップを含む、上記(13)に記載の方法。 (15)その完了に応答して、このような割込み可能命
令に関する前記完了待ち行列バッファ項目を解放するス
テップを含む、上記(14)に記載の方法。 (16)前記完了待ち行列に入力された前記情報が前記
割込み可能命令用のアドレスを含み、前記割込み可能命
令に関する前記完了待ち行列内の前記アドレスと、前記
命令の割込みとに応答して、前記割込み可能命令が関連
付けられる前記グループの前記命令を再取出しするステ
ップを含む、上記(14)に記載の方法。 (17)データ処理システム内で命令処理に資源を割り
振るための装置において、処理のためにディスパッチさ
れる命令にタグを付ける手段と、前記タグ付き命令に関
する実行結果を得るためにプロセッサ資源によってスヌ
ープする手段と、割込みを発生しないという判定に応答
してこのような命令を終了し、前にディスパッチされた
すべての命令の終了に応答して前記命令を完了し、この
ような命令がその実行前に完了できるようにする手段と
を含む装置。 (18)前記スヌープ資源がアーキテクチャ・レジスタ
を含む、上記(17)に記載の装置。 (19)前記スヌープ資源がリネーム・バッファを含
む、上記(17)に記載の装置。 (20)前記リネーム・バッファが履歴バッファであ
る、上記(19)に記載の装置。 (21)前記スヌープ資源が予約ステーションを含む、
上記(17)に記載の装置。 (22)前記命令がロード命令を含み、前記命令用のオ
ペランドをレジスタまたはバッファにロードするロード
命令を実行する手段を含み、前記ロード命令は前記命令
のオペランドを前記レジスタまたはバッファにロードす
る前に完了することができる、上記(17)に記載の装
置。 (23)前記命令がストア命令を含み、前記命令用のオ
ペランドをメモリに格納するストア命令を実行する手段
を含み、前記ストア命令はそのオペランドをメモリに格
納する前に完了することができる、上記(17)に記載
の装置。 (24)アーキテクチャ・レジスタをターゲットにする
前記命令に応答して、このような命令用の情報をリネー
ム・バッファに入力する手段と、このようなリネーム・
バッファ項目の命令の完了に応答して、前記項目を解放
する手段とを含む、上記(17)に記載の装置。 (25)前記リネーム・バッファが履歴バッファを含
み、前記履歴バッファに前記情報を入力する前記手段は
前記命令が前記ディスパッチされた命令のうちの指定の
命令に含まれるかどうかに応答するので、それに関して
いかなる履歴バッファ情報も入力されない割込み不能命
令の場合に、実行ユニットが前記命令を実行した後でア
ーキテクチャ・レジスタが前記命令に専念する単独資源
になる可能性がある、上記(24)に記載の装置。 (26)前記命令のディスパッチに応答して、前記命令
に関する情報を完了待ち行列に入力する手段と、その完
了に応答して、このような命令の完了待ち行列項目を解
放する手段とを含む、上記(17)に記載の装置。 (27)前記命令の結果を前記資源に書き込む手段を含
み、前記完了待ち行列項目を解放する前記手段が、前記
命令の結果を前記資源に書き込む前記手段とは無関係で
ある、上記(26)に記載の装置。 (28)データ処理システム内で命令処理に資源を割り
振るための装置において、処理のためにディスパッチさ
れる命令にタグを付ける手段と、前記命令に関する実行
結果を得るためにプロセッサ資源によってスヌープする
手段と、前記命令をグループ化する手段であって、1つ
のグループが単一の割込み可能命令だけを有し、ディス
パッチされた割込み可能命令が一切介入しない前記割込
み可能命令に続いてディスパッチされた割込み不能命令
をさらに含む手段と、割込みを発生しないという判定に
応答してこのような割込み可能命令を終了し、前にディ
スパッチされたすべての命令の終了に応答して前記割込
み可能命令を完了する手段と、その関連割込み可能命令
の完了に応答して、このような割込み不能命令を終了し
て完了し、それがディスパッチされる前にこのような割
込み不能命令が完了できるようにする手段とを含む装
置。 (29)アーキテクチャ・レジスタをターゲットにする
前記命令に応答して、前記命令用の情報をリネーム・バ
ッファに入力する手段と、このようなグループの前記割
込み可能命令の完了に応答して、前記グループ内の前記
命令に関する前記リネーム・バッファ項目を解放する手
段とを含む、上記(28)に記載の装置。 (30)前記命令のディスパッチに応答して、割込み可
能である前記命令のみに関する完了待ち行列に情報を入
力する手段を含む、上記(29)に記載の装置。 (31)その完了に応答して、このような割込み可能命
令に関する前記完了待ち行列バッファ項目を解放する手
段を含む、上記(30)に記載の装置。 (32)前記完了待ち行列に入力された前記情報が前記
割込み可能命令用のアドレスを含み、前記割込み可能命
令に関する前記完了待ち行列内の前記アドレスと、前記
命令の割込みとに応答して、前記割込み可能命令が関連
付けられる前記グループの前記命令を再取出しする手段
を含む、上記(30)に記載の装置。 (33)命令をグループ化する前記手段が、いくつかの
割込み不能命令をグループ化する手段を含む、上記(2
8)に記載の装置。
【図面の簡単な説明】
【図1】先行技術の2つの命令例に関するディスパッ
チ、完了、書戻しの所与のタイミング態様を示す図であ
る。
【図2】本発明の好ましい実施例のためのデータ処理シ
ステムのブロック図である。
【図3】好ましい実施例のためのCPUの所与の要素の
ブロック図である。
【図4】本発明の割込み可能命令テーブルの作成を示す
図である。
【図5】好ましい実施例による命令例に関するディスパ
ッチ、完了、書戻しの所与のタイミング態様を示す図で
ある。
【符号の説明】
200 データ処理システム 210 中央演算処理装置(CPU) 212 システム・バス 214 ランダム・アクセス・メモリ(「RAM」) 216 読取り専用メモリ(「ROM」) 218 入出力アダプタ 220 ディスク記憶装置 222 ユーザ・インタフェース・アダプタ 224 キーボード 226 マウス 228 スピーカ 232 トラック・ボール 234 通信アダプタ 236 ディスプレイ・アダプタ 238 ディスプレイ・モニタ
フロントページの続き (72)発明者 フン・キュー・レ アメリカ合衆国78717 テキサス州オース チン ドーマン・ドライブ 16310 (72)発明者 ジョン・エス・ミュヒク アメリカ合衆国78759 テキサス州オース チン アルバーストーン・ウェイ 8606 (72)発明者 スチーブン・ダブリュー・ホワイト アメリカ合衆国78750 テキサス州オース チン ウェスターカーク 9104

Claims (33)

    【特許請求の範囲】
  1. 【請求項1】データ処理システム内で命令処理に資源を
    割り振るための方法において、 処理のためにディスパッチされる命令にタグを付けるス
    テップと、 前記タグ付き命令に関する実行結果を得るためにプロセ
    ッサ資源によってスヌープするステップと、 割込みを発生しないという判定に応答してこのような命
    令を終了し、前にディスパッチされたすべての命令の終
    了に応答して前記命令を完了し、このような命令がその
    実行前に完了できるようにするステップとを含む方法。
  2. 【請求項2】前記スヌープ資源がアーキテクチャ・レジ
    スタを含む、請求項1に記載の方法。
  3. 【請求項3】前記スヌープ資源がリネーム・バッファを
    含む、請求項1に記載の方法。
  4. 【請求項4】前記リネーム・バッファが履歴バッファで
    ある、請求項3に記載の方法。
  5. 【請求項5】前記スヌープ資源が予約ステーションを含
    む、請求項4に記載の方法。
  6. 【請求項6】前記命令がロード命令を含み、ロード命令
    を実行すると前記命令用のオペランドがレジスタまたは
    バッファにロードされ、前記ロード命令は前記レジスタ
    またはバッファにロードするために前記オペランドが使
    用可能になる前に完了することができる、請求項1に記
    載の方法。
  7. 【請求項7】前記命令がストア命令を含み、ストア命令
    を実行すると前記命令用のオペランドがメモリに格納さ
    れ、前記ストア命令はメモリに格納するために前記オペ
    ランドが使用可能になる前に完了することができる、請
    求項1に記載の方法。
  8. 【請求項8】アーキテクチャ・レジスタをターゲットに
    する前記命令に応答して、このような命令用の情報をリ
    ネーム・バッファに入力するステップと、 このようなリネーム・バッファ項目の命令の完了に応答
    して、前記項目を解放するステップとを含む、請求項1
    に記載の方法。
  9. 【請求項9】前記リネーム・バッファが履歴バッファを
    含み、前記履歴バッファへの前記情報の入力は前記命令
    が前記ディスパッチされた命令のうちの指定の命令に含
    まれるかどうかにさらに応答するので、それに関してい
    かなる履歴バッファ情報も入力されない割込み不能命令
    の場合に、実行ユニットが前記命令を実行した後でアー
    キテクチャ・レジスタが前記命令に専念する単独資源に
    なる可能性がある、請求項8に記載の方法。
  10. 【請求項10】前記命令のディスパッチに応答して、前
    記命令に関する情報を完了待ち行列に入力するステップ
    と、 その完了に応答して、このような命令の完了待ち行列項
    目を解放するステップとを含む、請求項1に記載の方
    法。
  11. 【請求項11】前記完了待ち行列項目の解放が、前記命
    令の結果を前記資源に書き込むこととは無関係である、
    請求項10に記載の方法。
  12. 【請求項12】データ処理システム内で命令処理に資源
    を割り振るための方法において、 処理のためにディスパッチされる命令にタグを付けるス
    テップと、 前記命令に関する実行結果を得るためにプロセッサ資源
    によってスヌープするステップと、 前記命令をグループ化するステップであって、1つのグ
    ループが単一の割込み可能命令だけを有し、ディスパッ
    チされた割込み可能命令が一切介入しない前記割込み可
    能命令に続いてディスパッチされた割込み不能命令をさ
    らに含むステップと、 割込みを発生しないという判定に応答してこのような割
    込み可能命令を終了し、前にディスパッチされたすべて
    の命令の終了に応答して前記割込み可能命令を完了する
    ステップと、 その関連割込み可能命令の完了に応答して、このような
    割込み不能命令を終了して完了し、それがディスパッチ
    される前にこのような割込み不能命令が完了できるよう
    にするステップとを含む方法。
  13. 【請求項13】アーキテクチャ・レジスタをターゲット
    にする前記命令に応答して、前記命令用の情報をリネー
    ム・バッファに入力するステップと、 このようなグループの前記割込み可能命令の完了に応答
    して、前記グループ内の前記命令に関する前記リネーム
    ・バッファ項目を解放するステップとを含む、請求項1
    2に記載の方法。
  14. 【請求項14】前記命令のディスパッチに応答して、割
    込み可能である前記命令のみに関する完了待ち行列に情
    報を入力するステップを含む、請求項13に記載の方
    法。
  15. 【請求項15】その完了に応答して、このような割込み
    可能命令に関する前記完了待ち行列バッファ項目を解放
    するステップを含む、請求項14に記載の方法。
  16. 【請求項16】前記完了待ち行列に入力された前記情報
    が前記割込み可能命令用のアドレスを含み、 前記割込み可能命令に関する前記完了待ち行列内の前記
    アドレスと、前記命令の割込みとに応答して、前記割込
    み可能命令が関連付けられる前記グループの前記命令を
    再取出しするステップを含む、請求項14に記載の方
    法。
  17. 【請求項17】データ処理システム内で命令処理に資源
    を割り振るための装置において、 処理のためにディスパッチされる命令にタグを付ける手
    段と、 前記タグ付き命令に関する実行結果を得るためにプロセ
    ッサ資源によってスヌープする手段と、 割込みを発生しないという判定に応答してこのような命
    令を終了し、前にディスパッチされたすべての命令の終
    了に応答して前記命令を完了し、このような命令がその
    実行前に完了できるようにする手段とを含む装置。
  18. 【請求項18】前記スヌープ資源がアーキテクチャ・レ
    ジスタを含む、請求項17に記載の装置。
  19. 【請求項19】前記スヌープ資源がリネーム・バッファ
    を含む、請求項17に記載の装置。
  20. 【請求項20】前記リネーム・バッファが履歴バッファ
    である、請求項19に記載の装置。
  21. 【請求項21】前記スヌープ資源が予約ステーションを
    含む、請求項17に記載の装置。
  22. 【請求項22】前記命令がロード命令を含み、 前記命令用のオペランドをレジスタまたはバッファにロ
    ードするロード命令を実行する手段を含み、前記ロード
    命令は前記命令のオペランドを前記レジスタまたはバッ
    ファにロードする前に完了することができる、請求項1
    7に記載の装置。
  23. 【請求項23】前記命令がストア命令を含み、 前記命令用のオペランドをメモリに格納するストア命令
    を実行する手段を含み、前記ストア命令はそのオペラン
    ドをメモリに格納する前に完了することができる、請求
    項17に記載の装置。
  24. 【請求項24】アーキテクチャ・レジスタをターゲット
    にする前記命令に応答して、このような命令用の情報を
    リネーム・バッファに入力する手段と、 このようなリネーム・バッファ項目の命令の完了に応答
    して、前記項目を解放する手段とを含む、請求項17に
    記載の装置。
  25. 【請求項25】前記リネーム・バッファが履歴バッファ
    を含み、前記履歴バッファに前記情報を入力する前記手
    段は前記命令が前記ディスパッチされた命令のうちの指
    定の命令に含まれるかどうかに応答するので、それに関
    していかなる履歴バッファ情報も入力されない割込み不
    能命令の場合に、実行ユニットが前記命令を実行した後
    でアーキテクチャ・レジスタが前記命令に専念する単独
    資源になる可能性がある、請求項24に記載の装置。
  26. 【請求項26】前記命令のディスパッチに応答して、前
    記命令に関する情報を完了待ち行列に入力する手段と、 その完了に応答して、このような命令の完了待ち行列項
    目を解放する手段とを含む、請求項17に記載の装置。
  27. 【請求項27】前記命令の結果を前記資源に書き込む手
    段を含み、前記完了待ち行列項目を解放する前記手段
    が、前記命令の結果を前記資源に書き込む前記手段とは
    無関係である、請求項26に記載の装置。
  28. 【請求項28】データ処理システム内で命令処理に資源
    を割り振るための装置において、 処理のためにディスパッチされる命令にタグを付ける手
    段と、 前記命令に関する実行結果を得るためにプロセッサ資源
    によってスヌープする手段と、 前記命令をグループ化する手段であって、1つのグルー
    プが単一の割込み可能命令だけを有し、ディスパッチさ
    れた割込み可能命令が一切介入しない前記割込み可能命
    令に続いてディスパッチされた割込み不能命令をさらに
    含む手段と、 割込みを発生しないという判定に応答してこのような割
    込み可能命令を終了し、前にディスパッチされたすべて
    の命令の終了に応答して前記割込み可能命令を完了する
    手段と、 その関連割込み可能命令の完了に応答して、このような
    割込み不能命令を終了して完了し、それがディスパッチ
    される前にこのような割込み不能命令が完了できるよう
    にする手段とを含む装置。
  29. 【請求項29】アーキテクチャ・レジスタをターゲット
    にする前記命令に応答して、前記命令用の情報をリネー
    ム・バッファに入力する手段と、 このようなグループの前記割込み可能命令の完了に応答
    して、前記グループ内の前記命令に関する前記リネーム
    ・バッファ項目を解放する手段とを含む、請求項28に
    記載の装置。
  30. 【請求項30】前記命令のディスパッチに応答して、割
    込み可能である前記命令のみに関する完了待ち行列に情
    報を入力する手段を含む、請求項29に記載の装置。
  31. 【請求項31】その完了に応答して、このような割込み
    可能命令に関する前記完了待ち行列バッファ項目を解放
    する手段を含む、請求項30に記載の装置。
  32. 【請求項32】前記完了待ち行列に入力された前記情報
    が前記割込み可能命令用のアドレスを含み、 前記割込み可能命令に関する前記完了待ち行列内の前記
    アドレスと、前記命令の割込みとに応答して、前記割込
    み可能命令が関連付けられる前記グループの前記命令を
    再取出しする手段を含む、請求項30に記載の装置。
  33. 【請求項33】命令をグループ化する前記手段が、いく
    つかの割込み不能命令をグループ化する手段を含む、請
    求項28に記載の装置。
JP10073720A 1997-03-31 1998-03-23 命令完了を改良するための方法および装置 Pending JPH10312282A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/829671 1997-03-31
US08/829,671 US5870582A (en) 1997-03-31 1997-03-31 Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched

Publications (1)

Publication Number Publication Date
JPH10312282A true JPH10312282A (ja) 1998-11-24

Family

ID=25255201

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10073720A Pending JPH10312282A (ja) 1997-03-31 1998-03-23 命令完了を改良するための方法および装置

Country Status (3)

Country Link
US (1) US5870582A (ja)
JP (1) JPH10312282A (ja)
KR (1) KR19980079691A (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098167A (en) * 1997-03-31 2000-08-01 International Business Machines Corporation Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US6408324B1 (en) * 1997-07-03 2002-06-18 Trw Inc. Operating system having a non-interrupt cooperative multi-tasking kernel and a method of controlling a plurality of processes with the system
US5974524A (en) * 1997-10-28 1999-10-26 International Business Machines Corporation Method and apparatus for reducing the number of rename registers in a processor supporting out-of-order execution
WO2000072152A1 (en) * 1999-05-19 2000-11-30 Koninklijke Philips Electronics N.V. Data processor with a debug circuit
US6704843B1 (en) * 2000-10-26 2004-03-09 International Business Machines Corporation Enhanced multiprocessor response bus protocol enabling intra-cache line reference exchange
US6772368B2 (en) 2000-12-11 2004-08-03 International Business Machines Corporation Multiprocessor with pair-wise high reliability mode, and method therefore
US6751749B2 (en) 2001-02-22 2004-06-15 International Business Machines Corporation Method and apparatus for computer system reliability
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US7313734B2 (en) * 2002-01-14 2007-12-25 International Business Machines Corporation Method and system for instruction tracing with enhanced interrupt avoidance
US7979677B2 (en) * 2007-08-03 2011-07-12 International Business Machines Corporation Adaptive allocation of reservation station entries to an instruction set with variable operands in a microprocessor
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US9875105B2 (en) * 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US20130339680A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9823931B2 (en) 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
US10255071B2 (en) * 2015-10-14 2019-04-09 International Business Machines Corporation Method and apparatus for managing a speculative transaction in a processing unit

Family Cites Families (19)

* 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 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
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
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
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
US5555432A (en) * 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution

Also Published As

Publication number Publication date
KR19980079691A (ko) 1998-11-25
US5870582A (en) 1999-02-09

Similar Documents

Publication Publication Date Title
US5870582A (en) Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
JP3424202B2 (ja) プロセッサ内で命令を発行するための方法および装置
JP3096451B2 (ja) データを転送する方法およびプロセッサ
US6728866B1 (en) Partitioned issue queue and allocation strategy
US5809268A (en) Method and system for tracking resource allocation within a processor
US5611063A (en) Method for executing speculative load instructions in high-performance processors
JP3132755B2 (ja) プロセッサのアーキテクチャ状態を維持するための方法および装置
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
US6609190B1 (en) Microprocessor with primary and secondary issue queue
US6697939B1 (en) Basic block cache microprocessor with instruction history information
JP3689369B2 (ja) 2次リオーダ・バッファ・マイクロプロセッサ
US5740393A (en) Instruction pointer limits in processor that performs speculative out-of-order instruction execution
JPH096611A (ja) データ処理システムにおけるデータをバッファリングする方法およびシステム
JPH10154073A (ja) データ依存性を管理する装置及び方法
US5727177A (en) Reorder buffer circuit accommodating special instructions operating on odd-width results
US20030126409A1 (en) Store sets poison propagation
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
JP3160259B2 (ja) 命令実行の並列性を高める方法および装置
JP3182741B2 (ja) 分散命令完了方法及びプロセッサ
KR20010070434A (ko) 기본 블럭 캐쉬를 이용하는 마이크로프로세서
US6311267B1 (en) Just-in-time register renaming technique
US6473850B1 (en) System and method for handling instructions occurring after an ISYNC instruction
US6658555B1 (en) Determining successful completion of an instruction by comparing the number of pending instruction cycles with a number based on the number of stages in the pipeline
US5765215A (en) Method and system for efficient rename buffer deallocation within a processor
JP3045964B2 (ja) スーパスカラ・プロセッサのリネーム・バッファを効率よく使用する方法及び装置