JPH09120359A - プロセッサ内の資源割当て追跡方法及びそのシステム - Google Patents

プロセッサ内の資源割当て追跡方法及びそのシステム

Info

Publication number
JPH09120359A
JPH09120359A JP8162568A JP16256896A JPH09120359A JP H09120359 A JPH09120359 A JP H09120359A JP 8162568 A JP8162568 A JP 8162568A JP 16256896 A JP16256896 A JP 16256896A JP H09120359 A JPH09120359 A JP H09120359A
Authority
JP
Japan
Prior art keywords
instruction
counter
instructions
processor
execution
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
JP8162568A
Other languages
English (en)
Other versions
JP3093639B2 (ja
Inventor
Kin Chan
キン・チャン
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 JPH09120359A publication Critical patent/JPH09120359A/ja
Application granted granted Critical
Publication of JP3093639B2 publication Critical patent/JP3093639B2/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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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, 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, 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, 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, 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

Abstract

(57)【要約】 【課題】 投機的実行をサポートし複数の実行ユニット
を有するプロセッサ内の資源割当てを追跡する方法及び
システムを提供する。 【解決手段】 プロセッサが第1及び第2のカウンタを
含む資源カウンタ並びに多数の資源を具備し、ディスパ
ッチされる複数の命令の各々に資源を割当てる。ディス
パッチの際、割当てられた各資源につき第1のカウンタ
が1だけ増分されかつ命令が投機的実行パス内の第1の
命令であれば以前の第1のカウンタの値を第2のカウン
タへロードする。命令の完了の際各資源につき双方のカ
ウンタが1だけ減分される。投機的実行パスの誤りが判
明した場合、第2のカウンタの値を第1のカウンタへ転
送することにより複数の命令への資源の割当数を追跡す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、概してデータ処理
システムに関し、特に命令の投機的実行をサポートする
プロセッサにおける資源割当てを追跡する方法及びシス
テムに関する。さらに本発明は、投機的に実行している
プロセッサ内の資源割当てを追跡することにより、誤っ
て予測された分岐の後にそのプロセッサの資源割当て状
態を回復させることが可能な方法及びシステムに関す
る。
【0002】
【従来の技術】現在のプロセッサの設計者らは、常にこ
れらのプロセッサの性能を向上させようと努めている。
近年、プロセッサ設計者らは、多くのアーキテクチャ上
の拡張を行うことにより汎用的アーキテクチャを用いる
プロセッサの性能を格段に向上させてきた。例えば、短
縮命令セット・コンピュータ(RISC)のプロセッサは
短縮命令セットを利用することにより、低いCPI比
(1命令あたりのサイクル数)を実現できる。スループッ
トをさらに向上させるため、プロセッサは、多数の命令
を発生しかつ多数の実行ユニットによりこれらを同時に
実行できるスーパスカラ(superscaler)・アーキテクチ
ャを利用することもできる。更なる拡張として、スーパ
スカラ・プロセッサ内の実行ユニットを、パイプライン
形態で実行するように設計することができ、各実行ユニ
ットが各実行段階において1又は複数の命令を用いて同
時に多数の命令を処理する。最後に、現在のプロセッサ
は、シーケンシャルにプログラミングされた順序ではな
く、実行ユニットの使用可能性に基づいて決定された順
序で命令を実行するよう構成されている。このいわゆる
「順序外(out of order)」実行によってプロセッサは、
各サイクル中の使用可能な実行ユニット資源を最大限に
利用することができる。
【0003】順序外処理をサポートする通常のパイプラ
イン・スーパスカラ・プロセッサでは、各サイクルにつ
いて1又は複数の命令が多数の実行ユニットへディスパ
ッチされる。プロセッサが命令間のデータ従属性に対し
て付加しなければならない情報に基づいて、実行ユニッ
ト資源が使用可能となり次第適宜命令が実行される。す
なわち、第1の命令の実行が第2の命令の実行により生
じるデータに従属する場合には、第2の命令は第1の命
令に先立って実行されなければならない。実行ユニット
が命令の処理を完了した後、その命令はスーパスカラ・
プロセッサ内の多数の完了バッファの1つへ送られる。
完了(リネーム)バッファは一時的バッファであり、命
令に関するデータを一時レジスタからプロセッサ内のア
ーキテクチャ・レジスタへ転送することによりその命令
が完了するまで、その命令を保持する。
【0004】データ従属性が監視される限りにおいて任
意の順序で命令を実行することができるが、多くのプロ
セッサは、命令がプログラムの順序通りに完了される
(すなわちデータがアーキテクチャ・レジスタにコミッ
トされる)ことを要求する。順序通りの完了が要求され
る理由の1つは、プロセッサが正確な割込み及び例外処
理をサポートできるようにするためである。例えば、0
で割る演算エラー等の例外が発生したとき、例外処理ソ
フトウェア・ルーチンがこの割込みすなわち例外を管理
するために呼び出される。しかしながら、例外処理ルー
チンが呼び出される前に、例外を発生した命令に先行す
る命令がプログラム順序通りに完了されなければならな
い。これは、命令がプログラム順序通りに実行されたと
仮定した場合に存在する環境をエミュレートした環境に
おいて例外処理ルーチンを実行するためである。プログ
ラム順序通りの完了が必要とされる別の理由としては、
分岐が誤って予測された場合に以前のコンテキスト(con
text)を適切に回復させるためである。当業者には自明
であるが、通常スーパスカラ・プロセッサは分岐ユニッ
トを含み、これは分岐命令の結果を予測する。分岐命令
の結果が予測されてその分岐命令のリエントリ(reentr
y)・ポイントに続く命令が投機的に実行されるので、そ
の分岐が誤って予測されたものだと後に判明した場合に
は、プロセッサが以前のプロセッサ・コンテキストを回
復させるための機構を備えていなければならない。この
結果、プログラム順序通りに投機的に実行された命令に
先行する分岐命令が完了されるまでは、これらの投機的
に実行された命令を完了することができない。
【0005】プログラム順序以外の順序で実行された命
令を完了するためにプロセッサは、順序外実行中の命令
のプログラム順序を追跡する機構を備えていなければな
らない。順序外実行をサポートする汎用的スーパスカラ
・プロセッサにおいては、命令のプログラム順序が各実
行ユニットにより追跡される。しかしながら、実行ユニ
ットの数及び順序外で実行される命令の数が増加するに
つれ、命令のプログラム順序を追跡することが、実行ユ
ニットの性能に対して負担となる。この結果、スーパス
カラ・プロセッサ内で命令のフローを管理する有効な方
法及びシステムが要望されている。この方法及びシステ
ムは、命令が順序通りにディスパッチされ、その順序以
外の順序で実行され、そしてその順序通りに完了される
ことを可能とするものであって、かつ実行ユニットが命
令のプログラム順序を追跡する必要のないものである。
【0006】命令の投機的実行をサポートするプロセッ
サ内での性能上の問題の第2の原因は、誤って予測され
た分岐に続くプロセッサ資源状態の回復である。通常、
命令の投機的実行をサポートするプロセッサは、分岐履
歴テーブル(branch historytable:BHT)を含むことに
より、以前の分岐結果に基づいて分岐命令の結果を予測
することができる。従って、BHT内のデータを用いて
プロセッサは、分岐命令のリエントリ・ポイントに続く
1又は複数のシーケンシャルな投機的実行パスを開始す
る。投機的実行をサポートする汎用的プロセッサにおい
ては、分岐が誤って予測されていると判断されたなら
ば、その誤って予測された分岐に先行する全てのシーケ
ンシャル命令が完了されるまでプロセッサは実行パイプ
ラインを停止させる。全ての有効データがリネーム・バ
ッファからアーキテクチャ・バッファへ渡されると、全
てのリネーム・バッファは消去されかつリセットされ
る。その後、プロセッサは、別の実行パスに従うシーケ
ンシャル命令から始まる実行及びリネーム・バッファの
割当てを続ける。この回復機構は、誤ってディスパッチ
された分岐に続く全てのプロセッサ資源が利用可能とな
ることを保証するが、この汎用的な回復機構はプロセッ
サ性能を低下させてしまう。なぜならプロセッサは、誤
ってディスパッチされた分岐に先行する全ての命令が完
了されるまで、更なる命令のディスパッチ及びリネーム
・バッファ資源の割当てを遅らせなければならないから
である。
【0007】以上により、投機的実行パスが誤ってディ
スパッチされたと判断されたとき、プロセッサがプロセ
ッサ資源の正しい状態を回復させることができる有効な
方法及び装置をプロセッサ内に設けることが求められて
いる。
【0008】
【発明が解決しようとする課題】本発明の目的は、デー
タ処理のための有効な方法及びシステムを提供すること
である。
【0009】本発明の更なる目的は、命令の投機的実行
をサポートするプロセッサ内の資源の割当てを追跡する
ための有効な方法及びシステムを提供することである。
【0010】本発明の更なる目的は、投機的実行を行う
プロセッサ内の資源の割当てを追跡しかつ誤って予測さ
れた分岐に続く資源割当ての状態をプロセッサが回復さ
せることができる有効な方法及びシステムを提供するこ
とである。
【0011】
【課題を解決するための手段】上記の目的は、以下の通
りに達成される。命令の投機的実行をサポートする複数
の実行ユニットを有するプロセッサ内の資源割当てを追
跡する方法及びシステムを開示する。プロセッサが、第
1のカウンタ及び第2のカウンタを含む資源カウンタと
多数の資源とを有し、実行されるべく実行ユニットへデ
ィスパッチされた多数の命令の各々に対して1又は複数
の資源が割当てられる。複数の命令の中の1の命令を実
行するために1の実行ユニットへディスパッチすること
に応答して、その命令に割当てられた各資源につき第1
のカウンタが1回増分される。そしてその命令が投機的
実行パス内の第1の命令であれば、第1のカウンタを増
分する前の第1のカウンタの値を第2のカウンタにロー
ドする。多数の実行ユニットの1つに対してディスパッ
チされた多数の命令のうち特定の命令の完了に応答し
て、その特定の命令に割当てられた各資源につき第1の
カウンタ及び第2のカウンタが1回減分される。投機的
実行パスが誤りと導出されることに応答して、第2のカ
ウンタの値が第1のカウンタへ転送されることにより、
資源カウンタは、複数の命令に割当てられた複数の資源
の数を追跡することができる。本発明の更なる対象、特
徴、及び利点は以下の詳細な説明で明らかとなるであろ
う。
【0012】
【発明の実施の形態】図1は、本発明の方法及びシステ
ムを用いるデータ処理システムのブロック図である。図
示の通り、データ処理システム10はシステム装置12
及び1又は複数のローカル・ノード14を含み、ローカ
ル・ノード14は、パーソナル・コンピュータ16、表
示装置18、キーボード20、及びマウス22を具備す
る。当業者には周知であるが、ユーザはキーボード2
0、マウス22、又は他の適宜の入力装置を用いてパー
ソナル・コンピュータ16へデータを入力する。その
後、ユーザは、パーソナル・コンピュータ16を用いて
ローカルにデータを処理したり、周知のネットワーク技
術を利用してパーソナル・コンピュータ16からシステ
ム装置12又は他のローカル・ノード14へデータを伝
送したりする。システム装置12はローカル・ノード1
4に比べ短時間でタスクを実行できるので、ユーザがシ
ステム装置12へ実行するタスクを送ることは有益であ
る。システム装置12及びパーソナル・コンピュータ1
6は、表示装置18を介してユーザに対してデータを出
力する。
【0013】図2は、システム装置12を示すブロック
図である。本発明の好適例では、例えば、IBM RISC Sys
tem/6000等の対称的マルチプロセッサ・コンピュータを
備える。システム装置12は1又は複数のCPU30を
具備し、その各々がオンボードのレベル1(L1)キャッ
シュ32を含む。さらに各CPU30は、レベル2(L
2)キャッシュ34にも関連付けられる。当業者には自
明であろうが、L1キャッシュ32及びL2キャッシュ
34はそれぞれ小容量の高速メモリを備えており、頻繁
にアクセスされるデータや命令のセグメントを記憶す
る。CPU30により要求されるデータがCPU30に
関連するL1キャッシュ32又はL2キャッシュ34内
に存在しない場合、その要求されたデータがシステム・
バス38を介して主メモリ36から取り出される。
【0014】さらにシステム装置12は、SCSI制御
装置40及びバス・インタフェース46を具備する。S
CSI制御装置40によって周辺バス44を介して付加
的なSCSI装置42をシステム装置12へ接続するこ
とが可能となる。バス・インタフェース46は、多数の
ローカル・ノード14がシステム装置12内の使用可能
なシステム資源へアクセス可能をする機構である。当業
者には自明であるように、システム12はシステム・バ
ス46へ接続される更なるハードウェアを含むが、これ
らは本発明の理解のために必要ではないので、説明を簡
単とするために省略する。
【0015】図3は、本発明の方法及びシステムによる
CPU30の好適例を示す図である。図3の好適例で
は、CPU30が、サイクル毎に多数の命令を多数の実
行パイプラインへ出すスーパスカラ・プロセッサを具備
し、これにより多数の命令を同時に実行することができ
る。CPU30は、固定小数点ユニット60及び62、
ロード/記憶ユニット64、浮動小数点ユニット66、
及び論理条件レジスタ・ユニット68を含む5個の実行
ユニット60〜68を有する。
【0016】本発明においては、CPU30がさらに命
令シーケンス・テーブル(IST)80を含み、これによ
り、実行ユニット60〜68による命令の実行を追跡す
ることができ、そしてプログラム順序通りに命令を完了
することができる。図4は、IST80の好適例のブロ
ック図である。図示の通り、IST80は多数のエント
リ110を含み、各エントリが、終了ビット112、例
外コード・フィールド114、汎用レジスタ(GPR)フ
ィールド116、浮動小数点(FPR)フィールド11
8、及び分岐ビット120を格納する。これらのエント
リ110は16個の命令IDのうちの1つによりアドレ
ス指定され、各々が、未完了の命令に関連付けられる。
未完了の命令とは、ディスパッチされたが完了されてい
ない命令である。
【0017】図8は、ディスパッチ・サイクル中のIS
T80のオペレーションを示す流れ図である。このオペ
レーションのプロセスはブロック200で開始され、命
令フェッチ・アドレス・レジスタ(IFAR)52が、プ
ログラム・カウンタ104から受信した情報に基づいて
命令キャッシュ54からフェッチされるべき次の命令の
アドレスを計算する。IFAR52により発生されたア
ドレスにより指定された命令のグループが、命令キャッ
シュ54から命令バッファ56及びディスパッチ・ユニ
ット58へ並列にロードされる。その後ブロック202
においてIST80内の使用可能なエントリ110の数
を判断する。本発明の好適例では、IST80内の使用
可能なエントリ110の数は、資源カウンタ98内のI
STエントリ・カウンタ130(図5参照)から容易に
判断される。このカウンタ130は、割当てられたIS
Tエントリ110の数を計数する。図4の好適例では、
IST80内の十分なエントリ110が使用可能である
場合、各サイクルの間に3個までの命令をディスパッチ
することができる。
【0018】次に、ブロック204において命令バッフ
ァ56が、ISTエントリ110が使用可能である1組
の命令をプログラム順序通りに読み出す。完了ユニット
88及び資源カウンタ98から受信した資源の使用可否
情報を用いて、ディスパッチ・ユニット58は、実行ユ
ニット60〜68の中の選択されたものに命令の実行を
始めさせる。これらの命令についてはリネーム・バッフ
ァ90及び92等の資源が使用可能である。命令バッフ
ァ56からディスパッチされた各命令は、ディスパッチ
・ポインタ82により指定される命令IDの1つを割り
付けられる。命令はプログラム順序通りにディスパッチ
されるので、IST80内のエントリはプログラム順序
通りに割当てられる。従って、図4に示したIST80
の状態については、ディスパッチ・サイクルの間に単一
命令のみがディスパッチされたとすると、その命令は、
命令ID「1101」に関連するエントリ110に割当
てられ、ディスパッチ・ポインタ82によりディスパッ
チ命令ID1として指定されることになるであろう。
【0019】その後ブロック206へ進み、ディスパッ
チされた各命令についての完了情報をIST80へ書込
む。ディスパッチ・バッファ56から出された各命令
は、命令デコード・ユニット(IDU)70により処理さ
れる。IDU70は、その命令を完了するために必要な
レジスタ資源を決定するために各命令をデコードする。
従って、各命令の種類を判断することによりIDU70
は、その命令に関連するデータを記憶するために必要な
汎用レジスタ(GPR)及び浮動小数点レジスタ(FPR)
の数を決定することができる。IDU70が命令を実行
するために必要なレジスタ資源を決定したならば、ID
U70はその情報をIST80内の適切なエントリ11
0へ書込む。次にブロック208において、ディスパッ
チされた命令の中に投機的命令がある場合いずれの命令
が投機的命令であるかを判断する。ディスパッチされた
命令が投機的実行パス内の最初の命令であれば、ブロッ
ク208において、その投機的命令へ割当てられたエン
トリを指示するディスパッチ・ポインタ82(すなわ
ち、命令ID)をバックアップ・ポインタ84として記
憶する。各投機的実行パス内の最初の命令の命令IDを
記憶することにより、CPU30は、後に分岐が誤って
予測されたものだと判明した場合に正しい実行コンテキ
ストを回復させることができる。
【0020】プロセスは、ブロック208又はブロック
210のいずれかからブロック212へ進み、ISTエ
ントリ・カウンタ130及びディスパッチ・ポインタ8
2を更新する。ISTエントリ・カウンタ130はIS
T制御論理100により更新される。IST制御論理1
00は、ディスパッチされた命令と完了された命令の双
方を考慮した後にサイクル中に割当てられた正味のエン
トリの数によりISTエントリ・カウンタ130を増分
したり減分したりする。ディスパッチ・ポインタ82
は、そのサイクル中にディスパッチされた命令の数によ
りディスパッチ・ポインタ82が指示する命令IDを増
分することにより更新される。シフト式キューではなく
循環式ポインタを利用することでIST80の性能を強
化する。なぜなら、エントリ110毎ではなく各サイク
ル毎にディスパッチ・ポインタのみが更新されるからで
ある。その後、ブロック214においてプロセスは終了
する。
【0021】図9は、終了サイクル中のIST80のオ
ペレーションの流れ図である。当業者には周知である
が、実行ユニット60〜68は、フェッチ、デコード、
実行、及び終了等の複数の段階を有する実行パイプライ
ンであり、各段階において1又は複数の命令を処理する
ことができる。実行ユニット60〜68は独立して動作
すると共に命令を実行するために必要なサイクル数がデ
ータ従属性、分岐導出、及び他の要因によって変動し得
るので、実行ユニット60〜68はプログラム順序以外
の順序で命令を実行する。図示の通りブロック230で
プロセスが開始され、ブロック232においてIST8
0は、そのサイクル中に終了した各命令についての命令
ID及び終了報告を実行ユニット60〜68から受信す
る。終了報告には、命令の実行により発生した例外があ
る場合これを識別する例外コードが含まれる。ブロック
234においてIST80は、ブロック232で受信し
た例外コードを、終了した命令のIDにより識別される
エントリ110の例外コード・フィールド114へ書込
む。さらにブロック234において、命令が実行を終了
したことを示すようにエントリ110内の終了ビット1
12がセットされる。本発明の好適例では、終了サイク
ルの間に6個までの終了報告をIST80へ書込むこと
ができる。その後ブロック236でこのプロセスは終わ
る。
【0022】図10は、完了サイクル中のIST80の
オペレーションを示す流れ図である。プロセスはブロッ
ク240で開始されてブロック242へ進み、完了ユニ
ット88が、完了ポインタ86により指示される命令を
IST80から読出す。図4に示すように本発明の好適
例では3個の完了ポインタ86を保持しており、これら
により所与のプロセッサ・サイクル内に完了される可能
性のある命令を指定する。その後ブロック244におい
て完了ユニット88は、ブロック242で読出された命
令のうち、まだ処理されていない例外を発生した命令を
判断する。完了ユニット88は、各命令に関連する例外
コード・フィールド114を検査することにより命令が
例外を発生したか否かを判断する。次にブロック246
において第1の命令(すなわち、その関連するエントリ
110が完了ポインタ86の1つにより完了命令ID1
として指定された命令)が例外を発生したのであれば、
プロセスはブロック248へ進む。ブロック248にお
いてその第1の命令を割込処理ユニット102へ送る。
当業者には自明であるように、割込処理ユニット102
は、例外コード・フィールド114に書込まれた例外コ
ードにより指定された例外の種類に関連する例外処理ベ
クトルを呼出す。その後、ブロック254においてプロ
セスは終わる。
【0023】ブロック244において、IST80から
読出された第1の命令が例外を発生しなかった場合、ブ
ロック244からブロック246を経てブロック249
へ進む。ブロック249において、ブロック242で読
出された命令のうち現在のサイクル中に完了できるもの
を判断する。正確な割込みをサポートするために、命令
の完了に対して幾つかの制約が設けられる。第1に、終
了ビット112によりIST80内で終了したものとし
てマークされた命令のみを完了させることができる。第
2に、まだ処理されていない例外を発生した命令は、現
在の完了サイクルでは完了させることができない。第3
に、プログラム順序においてその命令に先行する全ての
命令が既に完了しているか又は現在の完了サイクル中に
完了される場合にのみ、その命令を完了させることがで
きる。最後に、命令を完了させるためには、汎用レジス
タ(GPR)ファイル94及び浮動小数点レジスタ(FP
R)ファイル96内の、必要な数の汎用レジスタ及び浮
動小数点レジスタが使用可能でなければならない。次の
ブロック250において完了ユニット88は上記の制約
を満たす命令を完了させる。この完了は、その命令に関
連するデータをGPRリネーム・バッファ90及びFP
Rリネーム・バッファ92からGPRファイル94及び
FPRファイル96へ書込むことにより行われる。
【0024】その後ブロック252においてIST制御
論理100は、ブロック250で完了された命令に関連
するISTエントリ110を解放する。IST制御論理
100は、完了された各命令について各完了ポインタ8
6を1だけ増分することによりISTエントリ110を
解放する。その後ブロック254へ進み、プロセスを終
わる。
【0025】図5乃至図7は、ISTエントリ・カウン
タ130、FPRリネーム・バッファ・カウンタ15
0、及びGPRリネーム・バッファ・カウンタ170を
示すブロック図であり、これらが共に資源カウンタ90
を構成する。図5を参照すると、ISTエントリ・カウ
ンタ130が、マルチプレクサ132〜137及びカウ
ンタ138〜142を含む。本発明の好適例において
は、カウンタ138が17ビット・シフト・カウンタを
有し、これは、16個のISTエントリ110のうち未
完了の命令に現在割当てられている数をデコードされた
形態で示す。カウンタ138が「デコードされた形態」
と称される理由は、そのカウンタ内のセット・ビット
(バイナリ「1」)の位置により、割当てられたエント
リ110の数を示すからである。例えば、IST80が
空のときは最下位(最も左)のビットのみがセットさ
れ、0個のエントリ110が割当てられていることを示
す。IST80が満杯であるときは最上位のビットのみ
がセットされている。加算器により増分及び減分される
レジスタを用いないでデコードされた形態でカウンタを
記憶することにより、本発明は、カウンタ138を更新
するために用いられるサイクル時間を最小限とするのみ
でなく、CPU30の複雑さ及び費やされるチップ基板
面積を最小限とする。
【0026】各サイクル中にIST制御論理100は、
そのサイクル中にディスパッチされた命令の数及び完了
された命令の数から、割当てられたエントリ110の数
の正味の変化を計算する。本発明の好適例においては、
割当てられたエントリ110の数の正味の変化は、サイ
クルによって「+3」〜「−3」の間で変化する。「+
3」の場合は3個の命令がディスパッチされかつ0個の
命令が完了された場合である。「−3」の場合は3個の
命令が完了されかつ0個の命令がディスパッチされた場
合である。IST制御論理100は、割当てられたエン
トリ110の現在数を反映するために、マルチプレクサ
132に対する適切な更新入力を選択することによりカ
ウンタ138を更新する。このとき、カウンタ138内
のセット・ビットは対応する数のビット位置へシフトす
る。エントリ110はディスパッチされた各命令に対し
て必要とされるので、カウンタ138は、ディスパッチ
・ユニット58がIST80のエントリ110内で処理
可能な命令よりも多い命令をディスパッチすることを防
ぐためにインタロック(連動装置)を設けている。
【0027】さらにISTエントリ・カウンタ130
は、バックアップ・バッファ・カウンタA140及びバ
ックアップ・バッファ・カウンタB142を含み、これ
らはカウンタ138と同様のシフト・カウンタを有す
る。バックアップ・バッファ・カウンタA140は、第
1の投機的実行パス内の命令以外の、割当てられたIS
Tエントリ110の数を示す。同様に、バックアップ・
バッファ・カウンタB142は、第2の投機的実行パス
内の命令以外の、割当てられたISTエントリ110の
数を示す。当業者には自明であるように、2つ以上の投
機的実行パスをサポートする本発明の例では、許容され
る更なる投機的実行パスの各々について1つの更なるバ
ックアップ・バッファ・カウンタを含む。
【0028】投機的実行パス内の第1の命令がディスパ
ッチされるとき、IST制御論理100は、カウンタ1
38の値をバックアップ・バッファ・カウンタAへロー
ドするためにマルチプレクサ133への選択入力をイネ
ーブルとする。このときのカウンタ138の値は、現在
のサイクル中の命令をディスパッチする以前に割当てら
れたISTエントリ110の数を示す。さらにIST制
御論理100は、バックアップ・バッファ・カウンタA
140を更新するためにマルチプレクサ134への適切
な更新入力を選択する。例えば、現在のサイクル中にデ
ィスパッチされる第2の命令及び第3の命令が投機的命
令であってかつ3個の未完了命令が完了されたならば、
IST制御論理100は更新入力「−2」を選択する。
図示の通り、カウンタA140は、最大2個のエントリ
により増分することができる。なぜなら現在のサイクル
中にディスパッチすることができる3個の命令のうち少
なくとも1つは投機的命令だからである。投機的実行パ
スAが未導出のままであるサイクルの間、IST制御論
理100は、未完了の非投機的命令の完了による割当て
エントリ110の減少を反映するようにバックアップ・
バッファ・カウンタA140を更新するべく、マルチプ
レクサ134の適切なパスA入力を選択する。投機的実
行パスAが正しく予測されたものとして導出されたなら
ば、バックアップ・バッファ・エントリA140の内容
は単に無視される。一方、投機的実行パスAが誤って予
測されたものとして導出されたならば、IST制御論理
100は、バックアップ・バッファ・エントリA140
の値をカウンタ138へロードするためにマルチプレク
サ137への選択入力をイネーブルとする。さらに、I
ST制御論理100は、現在のサイクル中に完了された
命令を算入するためにマルチプレクサ132への適切な
パスAを選択する。このようにして、ISTエントリ・
カウンタ138は、分岐が誤って予測された場合であっ
ても割当てられたエントリ100の正確な計数を保持す
る。
【0029】当業者には自明であろうが、マルチプレク
サ136及びバックアップ・バッファ・カウンタB14
2は、マルチプレクサ134及びバックアップ・バッフ
ァ・カウンタA140と同様に動作することにより、投
機的実行パスAの導出より前に行われる第2の投機的実
行パスからの回復を可能とする。投機的実行パスAが正
しく予測されたと導出されかつ投機的実行パスB(第2
の投機的実行パス)が誤って予測されたと導出されたな
らば、IST制御論理100は、バックアップ・バッフ
ァ・カウンタB142の値をカウンタ138へロードす
るためにマルチプレクサ137への適切な入力を選択す
る。さらにIST制御論理100は、現在のサイクル中
に完了された命令を算入するためにマルチプレクサ13
2への適切なパスB入力を選択することによりカウンタ
138を更新する。
【0030】図6は、FPRリネーム・バッファ・カウ
ンタ150のブロック図である。このカウンタ150
は、割当てられたFPRリネーム・バッファ92の数を
示す。図6から明らかなように、FPRリネーム・バッ
ファ・カウンタ150は、ISTエントリ・カウント1
30とほぼ同様に機能する。バックアップ・バッファ・
カウンタA160及びバックアップ・バッファ・カウン
タB162は、2つの分岐命令のいずれかが誤って予測
された場合に、割当てられたFPRリネーム・バッファ
92の数の正確な計数を保持する。これにより、FPR
リネーム・バッファ・カウンタ150は、カウンタ15
8への正確なFPRバッファ計数を単一サイクルで回復
することができる。図示の例では、各サイクル毎に、3
個までのFPRリネーム・バッファ92を命令に割当て
ることができ、3個までのFPRリネーム・バッファ9
2をFPRファイル96を書込むことができる。
【0031】図7は、GPRリネーム・バッファ・カウ
ンタ170のブロック図である。このカウンタ170
は、未完了の命令へ割当てられたGPRリネーム・バッ
ファ90の数を計数する。当業者には自明であろうが、
GPRリネーム・バッファ・カウンタ170は、FPR
リネーム・バッファ・カウンタ150と同様に動作する
が、サイクル中に割当てられまた回収されるGPRリネ
ーム・バッファ90の数は異なる。図示の例では、各命
令のディスパッチに対して2個までのGPRリネーム・
バッファ90を割当てることができる。なぜなら、命令
の「ロード及び更新」を実行するために2個のGPRリ
ネーム・バッファ90が必要だからである。一方、所与
の完了サイクルの間に2個のGPRリネーム・バッファ
90のみをGPRファイル94に書込むことができる。
【0032】FPR及びGPRリネーム・バッファ・カ
ウンタ150及び170の構成により誤って予測された
分岐へ割当てられた資源をより速やかに再割当てするこ
とができるので、従来のシステムと比較して本発明の性
能が拡張される。命令の投機的実行をサポートする従来
のプロセッサは、通常、誤って予測された分岐に続くプ
ロセッサ資源の正しい状態を回復させることができるバ
ックアップ・バッファ・カウンタA及びB等の機構を備
えていない。投機的実行をサポートする汎用的プロセッ
サにおいては、分岐が誤って予測されたと判断されたと
き、その誤って予測された分岐に先行する全てのシーケ
ンシャル命令が完了されるまで実行パイプラインを停止
させる。全ての有効データがリネーム・バッファから構
成レジスタへ送られると、全てのリネーム・バッファが
消去されかつリセットされる。その後プロセッサは、別
の実行パスに従うシーケンシャル命令から開始されるリ
ネーム・バッファの実行及び割当てを続ける。この機構
は、誤って予測された分岐からの回復に必要な回路の点
では比較的効率的であるが、このような回復機構はプロ
セッサ性能を低下させる。なぜならプロセッサは、誤っ
て予測された分岐に先行する全ての命令が完了されるま
で、更なる命令のディスパッチ及びリネーム・バッファ
資源の割当てを遅らせなければならないからである。
【0033】以上述べたように、本発明はプログラム順
序外での実行をサポートするプロセッサにおける命令の
フローを管理する方法及びシステムを提供する。命令シ
ーケンステーブル(IST)内の各未完了命令に対応する
エントリを保持することにより、本発明は、多数の実行
ユニットによりプログラム順序を外れて実行される命令
がプログラム順序通りに完了されることを可能とする。
このようにして正確な割込みをサポートすることができ
る。さらに本発明は、誤って予測された分岐から回復さ
せる効率的な機構を提供する。この機構は、誤って予測
された分岐より前のプログラム状態及びプロセッサ資源
状態の双方の回復を可能とする。以上の説明において
は、本発明を用いるプロセッサを、所与のプロセッサ・
サイクル中にディスパッチされ、終了され、そして完了
される多数の命令に関する様々な制約と共に説明した
が、当業者であればこれらの制約が単なる設計事項であ
って本発明に対する制約ではないことは明らかであろ
う。
【0034】以上、本発明を特に好適例に関して説明し
たが、当業者であれば、本発明の趣旨及び範囲から逸脱
することなく形態及び詳細において様々な変更が可能で
あることは自明であろう。
【0035】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0036】(1)複数の実行ユニットと第1のカウン
タ及び第2のカウンタを含む資源カウンタと複数の資源
とを具備し、該複数の実行ユニットへ実行のためにディ
スパッチされた複数の命令の各々に対して1又は複数の
該資源を割当て、かつ該複数の命令の投機的実行をサポ
ートするプロセッサ内における該資源の割当てを追跡す
る方法であって、前記複数の命令の中の1の命令を実行
のために前記複数の実行ユニットの1つへディスパッチ
することに応答して、該1の命令に対して割当てられた
前記資源の各々について前記第1のカウンタを1だけ増
分するステップと、前記1の命令が投機的実行パス内の
第1の命令であるならば、前記第1のカウンタを増分す
る前の該第1のカウンタの値を前記第2のカウンタへロ
ードするステップと、前記複数の実行ユニットの1つへ
ディスパッチされた前記複数の命令の中の特定の命令の
完了に応答して、該特定の命令に対して割当てられた前
記資源の各々について前記第1のカウンタ及び前記第2
のカウンタを1だけ減分するステップと、前記資源カウ
ンタが前記複数の命令に対して割当てられた前記複数の
資源の数を追跡しており、前記投機的実行パスが誤りと
導出されることに応答して、前記第2のカウンタの値を
前記第1のカウンタへ転送するステップとを含むプロセ
ッサ内における資源割当ての追跡方法。 (2)前記プロセッサが、各サイクル毎に複数の命令を
ディスパッチしかつ完了させることができるスーパスカ
ラ・プロセッサを有し、前記第1のカウンタの値を前記
第2のカウンタへロードするステップが、投機的実行パ
ス内の第1の命令である命令と同時にディスパッチされ
た前記複数の命令の中の非投機的命令に対して割当てら
れた前記複数の資源の各々について前記第2のカウンタ
を1だけ増分するステップを含む上記(1)に記載のプ
ロセッサ内における資源割当ての追跡方法。 (3)前記プロセッサが第2の投機的実行パスをサポー
トしかつ前記資源カウンタが第3のカウンタを含み、前
記方法が、前記複数の命令の中の選択された命令を実行
のために前記複数の実行ユニットの1つへディスパッチ
することに応答して、該選択された命令が前記第2の投
機的実行パス内の第1の命令であるならば、前記第1の
カウンタを増分する前の該第1のカウンタの値を前記第
3のカウンタへロードするステップと、前記複数の実行
ユニットの1つへディスパッチされた前記複数の命令の
中の特定の命令の完了に応答して、該特定の命令に対し
て割当てられた前記資源の各々について前記第3のカウ
ンタを減分するステップと、前記資源カウンタが前記複
数の命令に対して割当てられた前記複数の資源の数を追
跡しており、前記第1の投機的実行パスが正しいと導出
されかつ前記第2の投機的実行パスが誤りと導出される
ことに応答して、前記第3のカウンタの値を前記第1の
カウンタへ転送するステップとを含む上記(1)に記載
のプロセッサ内における資源割当ての追跡方法。 (4)前記第1及び前記第2のカウンタがそれぞれ第1
及び第2のシフト・レジスタを有し、該第1及び該第2
のシフト・レジスタの各々がそのシフト・レジスタ内の
セット・ビットのビット位置により前記複数の資源の中
の割当てられた資源の数を示し、前記第1のカウンタを
増分するステップが、前記命令に対して割当てられた前
記資源の各々について前記第1のシフト・レジスタ内の
前記セット・ビットを1ビット位置だけ第1の方向へシ
フトさせるステップを含み、前記第1及び第2のカウン
タを減分するステップが、前記特定の命令に対して割当
てられた前記資源の各々について前記第1及び前記第2
のシフト・レジスタ内の双方の前記セット・ビットを1
ビット位置だけ第2の方向へシフトさせるステップを含
む上記(1)に記載のプロセッサ内における資源割当て
の追跡方法。 (5)複数の実行ユニットと複数の資源とを具備し、該
複数の実行ユニットへ実行のためにディスパッチされた
複数の命令の各々に対して1又は複数の該資源を割当
て、かつ該複数の命令の投機的実行をサポートするプロ
セッサ内における該資源の割当てを追跡する装置であっ
て、第1のカウンタ及び第2のカウンタとをもつ資源カ
ウンタと、前記複数の命令の中の1の命令を実行のため
に前記複数の実行ユニットの1つへディスパッチするこ
とに応答して、該1の命令に対して割当てられた前記資
源の各々について前記第1のカウンタを1だけ増分する
手段と、前記複数の命令の中の特定の命令を実行のため
に前記複数の実行ユニットの1つへディスパッチするこ
とに応答して、該特定の命令が投機的実行パス内の第1
の命令であるならば、前記第1のカウンタを増分する前
の該第1のカウンタの値を前記第2のカウンタへロード
する手段と、前記複数の実行ユニットへディスパッチさ
れた前記複数の命令の中の1の命令の完了に応答して、
該1の命令に対して割当てられた前記資源の各々につい
て前記第1のカウンタ及び前記第2のカウンタを1だけ
減分する手段と、前記資源カウンタが前記複数の命令に
対して割当てられた前記複数の資源の数を追跡してお
り、前記投機的実行パスが誤りと導出されることに応答
して、前記第2のカウンタの値を前記第1のカウンタへ
転送する手段とを有するプロセッサ内における資源割当
ての追跡装置。 (6)前記プロセッサが、各サイクル毎に複数の命令を
ディスパッチしかつ完了させることができるスーパスカ
ラ・プロセッサを有し、前記第1のカウンタの値を前記
第2のカウンタへロードする手段が、投機的実行パス内
の第1の命令である命令と同時にディスパッチされた前
記複数の命令の中の非投機的命令に対して割当てられた
前記複数の資源の各々について前記第2のカウンタを1
だけ増分する手段を有する上記(5)に記載のプロセッ
サ内における資源割当ての追跡装置。 (7)前記プロセッサが第2の投機的実行パスをサポー
トしかつ前記資源カウンタが第3のカウンタを含み、前
記装置が前記複数の命令の中の選択された命令を実行の
ために前記複数の実行ユニットの1つへディスパッチす
ることに応答して、該選択された命令が前記第2の投機
的実行パス内の第1の命令であるならば、前記第1のカ
ウンタを増分する前の該第1のカウンタの値を前記第3
のカウンタへロードする手段と、前記複数の実行ユニッ
トの1つへディスパッチされた前記複数の命令の中の特
定の命令の完了に応答して、該特定の命令に対して割当
てられた前記資源の各々について前記第3のカウンタを
減分する手段と、前記資源カウンタが前記複数の命令に
対して割当てられた前記複数の資源の数を追跡してお
り、前記第1の投機的実行パスが正しいと導出されかつ
前記第2の投機的実行パスが誤りと導出されることに応
答して、前記第3のカウンタの値を前記第1のカウンタ
へ転送する手段とを有する上記(5)に記載のプロセッ
サ内における資源割当ての追跡装置。 (8)前記第1及び前記第2のカウンタがそれぞれ第1
及び第2のシフト・レジスタを有し、該第1及び該第2
のシフト・レジスタの各々がそのシフト・レジスタ内の
セット・ビットのビット位置により前記複数の資源の中
の割当てられた資源の数を示し、前記第1のカウンタを
増分する手段が、前記命令に対して割当てられた前記資
源の各々について前記第1のシフト・レジスタ内の前記
セット・ビットを1ビット位置だけ第1の方向へシフト
させる手段を有し、前記第1及び第2のカウンタを減分
する手段が、前記特定の命令に対して割当てられた前記
資源の各々について前記第1及び前記第2のシフト・レ
ジスタ内の双方の前記セット・ビットを1ビット位置だ
け第2の方向へシフトさせる手段を有する上記(5)に
記載のプロセッサ内における資源割当ての追跡装置。 (9)前記複数の資源が、完了する前に前記複数の命令
に関連するデータを記憶するために用いられる複数のリ
ネーム・バッファを有する上記(5)に記載のプロセッ
サ内における資源割当ての追跡装置。 (10)前記プロセッサが前記複数の命令の順序外実行
をサポートしかつ複数のエントリをもつ命令シーケンス
・テーブルを有し、前記複数の命令の各々に対して該複
数の命令のプログラム順序に従って前記複数のエントリ
の1つを順次割付けることにより該複数の命令を該プロ
グラム順序に従って完了させることができ、そして前記
複数の資源が該命令シーケンス・テーブル内の該複数の
エントリを構成する上記(5)に記載のプロセッサ内に
おける資源割当ての追跡装置。 (11)ディスパッチされる命令を非プログラム順序で
実行可能な複数の実行ユニットと、ユーザアクセス可能
な複数のデータ・レジスタと、複数のリネーム・バッフ
ァと、前記実行ユニットへ命令をディスパッチする手段
と、実行のために前記実行ユニットへディスパッチされ
た複数の命令の各々に対して該複数の命令のプログラム
順序に従って命令識別子を割振る手段と、複数のエント
リの各エントリが命令識別子と関連付けられ、かつ該各
エントリがこれに関連付けられた命令識別子を割振られ
た命令の実行が終了したことを示す終了標識を含むよう
な該複数のエントリを有するテーブルと、前記テーブル
内の前記複数のエントリ中の特定のエントリに関連付け
られた命令識別子を割振られた命令の実行の終了に応答
して、該特定のエントリ内の終了標識をセットする手段
と、特定のプロセッサ・サイクル中に完了可能な前記複
数の命令のサブセット内の選択された命令に関連するデ
ータを、関連する前記リネーム・バッファから関連する
前記データ・レジスタへと転送することにより該選択さ
れた命令が完了される場合に、該サブセットに対して割
振られた命令識別子に関連付けられた前記テーブル内の
エントリを指示する1又は複数のポインタと、前記複数
の命令の前記サブセット内の選択された命令により発生
された例外が処理されており、該選択された命令に先行
して命令識別子を割振られた前記複数の命令の中の命令
が前のプロセッサ・サイクル中に完了されているか又は
同じプロセッサ・サイクル中に完了し、そして該選択さ
れた命令に割振られた命令識別子が終了標識をセットさ
れているエントリに関連付けられている場合に、前記複
数の命令を前記プログラム順序に従って完了するべく該
選択された命令を完了する手段とを有するスーパスカラ
・プロセッサ。 (12)前記テーブル内の各エントリが、前記各エント
リに関連付けられた命令識別子を割振られた命令を完了
するために必要な前記データ・レジスタの数を指定する
フィールドと、前記各エントリに関連付けられた命令識
別子を割振られた命令の実行中に生じた例外条件を示す
フィールドとを有する上記(11)に記載のスーパスカ
ラ・プロセッサ。 (13)前記テーブルがM個のエントリを有しかつ前記
スーパスカラ・プロセッサがエントリ・カウンタを有
し、該エントリ・カウンタが、M+1ビットを有し、か
つ前記テーブル内の前記複数のエントリの中の割当てら
れたエントリの第1の数を該M+1ビットの中のセット
・ビットの位置により示す基本シフト・レジスタと、M
+1ビットを有し、投機的実行パスに関連付けられ、か
つ該投機的実行パス内にない命令に対して割当てられた
前記複数のエントリの中のエントリの第2の数を示すバ
ックアップ・シフト・レジスタと、前記投機的実行パス
が誤って予測されたと判断されることに応答して前記バ
ックアップ・シフト・レジスタから前記基本シフト・レ
ジスタへ前記第2の数を転送する手段とを有する上記
(11)に記載のスーパスカラ・プロセッサ。 (14)前記スーパスカラ・プロセッサがN個の投機的
実行パスをサポートし、前記エントリ・カウンタがN個
のバックアップ・シフト・レジスタを有する上記(1
3)に記載のスーパスカラ・プロセッサ。 (15)前記スーパスカラ・プロセッサがM個のリネー
ム・バッファとリネーム・バッファ・カウンタとを有
し、該リネーム・バッファ・カウンタが、M+1ビット
を有し、かつディスパッチされ未完了である命令に対し
て割当てられた前記リネーム・バッファの第1の数を該
M+1ビットの中のセット・ビットの位置により示す基
本シフト・レジスタと、M+1ビットを有し、投機的実
行パスに関連付けられ、かつディスパッチされ未完了で
ある該投機的実行パス内にない命令に対して割当てられ
た前記リネーム・バッファの第2の数を該M+1ビット
の中のセット・ビットの位置により示すバックアップ・
シフト・レジスタと、前記投機的実行パスが誤って予測
されたと判断されることに応答して前記バックアップ・
シフト・レジスタから前記基本シフト・レジスタへ前記
第2の数を転送する手段とを有する上記(11)に記載
のスーパスカラ・プロセッサ。 (16)前記スーパスカラ・プロセッサがN個の投機的
実行パスをサポートし、前記リネーム・バッファ・カウ
ンタがN個のバックアップ・シフト・レジスタを有する
上記(15)に記載のスーパスカラ・プロセッサ。 (17)命令の順序外実行をサポートするデータ処理シ
ステムであって、前記複数の命令を記憶するメモリと、
複数の実行ユニットを有し、該複数の実行ユニットへデ
ィスパッチされた複数の命令を非プログラム順序で実行
可能なスーパスカラ・プロセッサと、前記メモリから前
記複数の実行ユニットへ前記複数の命令をディスパッチ
する手段と、ユーザアクセス可能な複数のデータ・レジ
スタと、複数のリネーム・バッファと、実行のために前
記実行ユニットへディスパッチされた複数の命令の各々
に対して該複数の命令のプログラム順序に従って命令識
別子を順次割振る手段と、複数のエントリの各エントリ
が命令識別子と関連付けられ、かつ該各エントリがこれ
に関連付けられた命令識別子を割振られた命令の実行が
終了したことを示す終了標識を含むような該複数のエン
トリを有するテーブルと、前記テーブル内の前記複数の
エントリ中の特定のエントリに関連付けられた命令識別
子を割振られた命令の実行の終了に応答して、該特定の
エントリ内の終了標識をセットする手段と、特定のプロ
セッサ・サイクル中に完了可能な前記複数の命令のサブ
セット内の選択された命令に関連するデータを、関連す
る前記リネーム・バッファから関連する前記データ・レ
ジスタへと転送することにより該選択された命令が完了
される場合に、該サブセットに対して割振られた命令識
別子に関連付けられた前記テーブル内のエントリを指示
する1又は複数の完了ポインタと、前記複数の命令の前
記サブセット内の選択された命令により発生された例外
が処理されており、該選択された命令に先行して命令識
別子を割振られた前記複数の命令の中の命令が前のプロ
セッサ・サイクル中に完了されているか又は同じプロセ
ッサ・サイクル中に完了し、そして該選択された命令に
割振られた命令識別子が終了標識をセットされているエ
ントリに関連付けられている場合に、前記複数の命令を
前記プログラム順序に従って完了するべく該選択された
命令を完了する手段とを有するデータ処理システム。 (18)前記テーブル内の各エントリが、前記各エント
リに関連付けられた命令識別子を割振られた命令を完了
するために必要な前記データ・レジスタの数を指定する
フィールドと、前記各エントリに関連付けられた命令識
別子を割振られた命令の実行中に生じた例外条件を示す
フィールドとを有する上記(17)に記載のデータ処理
システム。 (19)前記テーブルがM個のエントリを有しかつ前記
データ処理システムがエントリ・カウンタを有し、該エ
ントリ・カウンタが、M+1ビットを有し、かつ前記テ
ーブル内の前記複数のエントリの中の割当てられたエン
トリの第1の数を該M+1ビットの中のセット・ビット
の位置により示す基本シフト・レジスタと、M+1ビッ
トを有し、投機的実行パスに関連付けられ、かつ該投機
的実行パス内にない命令に対して割当てられた前記複数
のエントリの中のエントリの第2の数を示すバックアッ
プ・シフト・レジスタと、前記投機的実行パスが誤って
予測されたと判断されることに応答して前記バックアッ
プ・シフト・レジスタから前記基本シフト・レジスタへ
前記第2の数を転送する手段とを有する上記(17)に
記載のデータ処理システム。 (20)前記データ処理システムがN個の投機的実行パ
スをサポートし、前記エントリ・カウンタがN個のバッ
クアップ・シフト・レジスタを有する上記(19)に記
載のデータ処理システム。 (21)前記プロセッサがM個のリネーム・バッファを
有しかつ前記データ処理システムがリネーム・バッファ
・カウンタを有し、該リネーム・バッファ・カウンタ
が、M+1ビットを有し、かつディスパッチされ未完了
である命令に対して割当てられた前記リネーム・バッフ
ァの第1の数を該M+1ビットの中のセット・ビットの
位置により示す基本シフト・レジスタと、M+1ビット
を有し、投機的実行パスに関連付けられ、かつディスパ
ッチされ未完了である該投機的実行パス内にない命令に
対して割当てられた前記リネーム・バッファの第2の数
を該M+1ビットの中のセット・ビットの位置により示
すバックアップ・シフト・レジスタと、前記投機的実行
パスが誤って予測されたと判断されることに応答して前
記バックアップ・シフト・レジスタから前記基本シフト
・レジスタへ前記第2の数を転送する手段とを有する上
記(17)に記載のデータ処理システム。 (22)前記データ処理システムがN個の投機的実行パ
スをサポートし、前記リネーム・バッファ・カウンタが
N個のバックアップ・シフト・レジスタを有する上記
(21)に記載のデータ処理システム。
【図面の簡単な説明】
【図1】本発明の方法及びシステムを用いるデータ処理
システムの好適例を示す図である。
【図2】図1に示したデータ処理システムのシステム・
ユニットのブロック図である。
【図3】本発明の方法及びシステムを用いるプロセッサ
の好適例のブロック図である。
【図4】図3に示した命令シーケンス・テーブル(IS
T)のさらに詳細なブロック図である。
【図5】図4に示した命令シーケンス・テーブル内の割
当てられたエントリの数を示すカウンタの好適例を示す
図である。
【図6】割当てられた浮動小数点リネーム・バッファの
数を示すカウンタの好適例を示す図である。
【図7】割当てられたGPRリネーム・バッファの数を
示すカウンタの好適例を示す図である。
【図8】ディスパッチ・サイクル中の命令シーケンス・
テーブルのオペレーションの流れ図である。
【図9】終了サイクル中の命令シーケンス・テーブルの
オペレーションの流れ図である。
【図10】完了サイクル中の命令シーケンス・テーブル
のオペレーションの流れ図である。
【符号の説明】
10 データ処理システム 12 システム・ユニット 30 CPU 32、34 キャッシュ・メモリ 36 主メモリ 38 システム・バス 52 命令フェッチ・アドレス・レジスタ 54 命令キャッシュ 56 命令バッファ 58 ディスパッチ・ユニット 80 命令シーケンス・テーブル(IST) 82 ディスパッチ・ポインタ 84 バックアップ・ポインタ 86 完了ポインタ 88 完了ユニット 90 GPRリネーム・バッファ 92 FPRリネーム・バッファ 94 汎用レジスタ・ファイル 96 浮動小数点レジスタ・ファイル 98 カウンタ 100 IST制御論理 102 割込処理ユニット 104 プログラム・カウンタ

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】複数の実行ユニットと第1のカウンタ及び
    第2のカウンタを含む資源カウンタと複数の資源とを具
    備し、該複数の実行ユニットへ実行のためにディスパッ
    チされた複数の命令の各々に対して1又は複数の該資源
    を割当て、かつ該複数の命令の投機的実行をサポートす
    るプロセッサ内における該資源の割当てを追跡する方法
    であって、 前記複数の命令の中の1の命令を実行のために前記複数
    の実行ユニットの1つへディスパッチすることに応答し
    て、該1の命令に対して割当てられた前記資源の各々に
    ついて前記第1のカウンタを1だけ増分するステップ
    と、 前記1の命令が投機的実行パス内の第1の命令であるな
    らば、前記第1のカウンタを増分する前の該第1のカウ
    ンタの値を前記第2のカウンタへロードするステップ
    と、 前記複数の実行ユニットの1つへディスパッチされた前
    記複数の命令の中の特定の命令の完了に応答して、該特
    定の命令に対して割当てられた前記資源の各々について
    前記第1のカウンタ及び前記第2のカウンタを1だけ減
    分するステップと、 前記資源カウンタが前記複数の命令に対して割当てられ
    た前記複数の資源の数を追跡しており、前記投機的実行
    パスが誤りと導出されることに応答して、前記第2のカ
    ウンタの値を前記第1のカウンタへ転送するステップと
    を含むプロセッサ内における資源割当ての追跡方法。
  2. 【請求項2】前記プロセッサが、各サイクル毎に複数の
    命令をディスパッチしかつ完了させることができるスー
    パスカラ・プロセッサを有し、前記第1のカウンタの値
    を前記第2のカウンタへロードするステップが、 投機的実行パス内の第1の命令である命令と同時にディ
    スパッチされた前記複数の命令の中の非投機的命令に対
    して割当てられた前記複数の資源の各々について前記第
    2のカウンタを1だけ増分するステップを含む請求項1
    に記載のプロセッサ内における資源割当ての追跡方法。
  3. 【請求項3】前記プロセッサが第2の投機的実行パスを
    サポートしかつ前記資源カウンタが第3のカウンタを含
    み、前記方法が、 前記複数の命令の中の選択された命令を実行のために前
    記複数の実行ユニットの1つへディスパッチすることに
    応答して、該選択された命令が前記第2の投機的実行パ
    ス内の第1の命令であるならば、前記第1のカウンタを
    増分する前の該第1のカウンタの値を前記第3のカウン
    タへロードするステップと、 前記複数の実行ユニットの1つへディスパッチされた前
    記複数の命令の中の特定の命令の完了に応答して、該特
    定の命令に対して割当てられた前記資源の各々について
    前記第3のカウンタを減分するステップと、 前記資源カウンタが前記複数の命令に対して割当てられ
    た前記複数の資源の数を追跡しており、前記第1の投機
    的実行パスが正しいと導出されかつ前記第2の投機的実
    行パスが誤りと導出されることに応答して、前記第3の
    カウンタの値を前記第1のカウンタへ転送するステップ
    とを含む請求項1に記載のプロセッサ内における資源割
    当ての追跡方法。
  4. 【請求項4】前記第1及び前記第2のカウンタがそれぞ
    れ第1及び第2のシフト・レジスタを有し、該第1及び
    該第2のシフト・レジスタの各々がそのシフト・レジス
    タ内のセット・ビットのビット位置により前記複数の資
    源の中の割当てられた資源の数を示し、 前記第1のカウンタを増分するステップが、前記命令に
    対して割当てられた前記資源の各々について前記第1の
    シフト・レジスタ内の前記セット・ビットを1ビット位
    置だけ第1の方向へシフトさせるステップを含み、 前記第1及び第2のカウンタを減分するステップが、前
    記特定の命令に対して割当てられた前記資源の各々につ
    いて前記第1及び前記第2のシフト・レジスタ内の双方
    の前記セット・ビットを1ビット位置だけ第2の方向へ
    シフトさせるステップを含む請求項1に記載のプロセッ
    サ内における資源割当ての追跡方法。
  5. 【請求項5】複数の実行ユニットと複数の資源とを具備
    し、該複数の実行ユニットへ実行のためにディスパッチ
    された複数の命令の各々に対して1又は複数の該資源を
    割当て、かつ該複数の命令の投機的実行をサポートする
    プロセッサ内における該資源の割当てを追跡する装置で
    あって、 第1のカウンタ及び第2のカウンタとをもつ資源カウン
    タと、 前記複数の命令の中の1の命令を実行のために前記複数
    の実行ユニットの1つへディスパッチすることに応答し
    て、該1の命令に対して割当てられた前記資源の各々に
    ついて前記第1のカウンタを1だけ増分する手段と、 前記複数の命令の中の特定の命令を実行のために前記複
    数の実行ユニットの1つへディスパッチすることに応答
    して、該特定の命令が投機的実行パス内の第1の命令で
    あるならば、前記第1のカウンタを増分する前の該第1
    のカウンタの値を前記第2のカウンタへロードする手段
    と、 前記複数の実行ユニットへディスパッチされた前記複数
    の命令の中の1の命令の完了に応答して、該1の命令に
    対して割当てられた前記資源の各々について前記第1の
    カウンタ及び前記第2のカウンタを1だけ減分する手段
    と、 前記資源カウンタが前記複数の命令に対して割当てられ
    た前記複数の資源の数を追跡しており、前記投機的実行
    パスが誤りと導出されることに応答して、前記第2のカ
    ウンタの値を前記第1のカウンタへ転送する手段とを有
    するプロセッサ内における資源割当ての追跡装置。
  6. 【請求項6】前記プロセッサが、各サイクル毎に複数の
    命令をディスパッチしかつ完了させることができるスー
    パスカラ・プロセッサを有し、前記第1のカウンタの値
    を前記第2のカウンタへロードする手段が、 投機的実行パス内の第1の命令である命令と同時にディ
    スパッチされた前記複数の命令の中の非投機的命令に対
    して割当てられた前記複数の資源の各々について前記第
    2のカウンタを1だけ増分する手段を有する請求項5に
    記載のプロセッサ内における資源割当ての追跡装置。
  7. 【請求項7】前記プロセッサが第2の投機的実行パスを
    サポートしかつ前記資源カウンタが第3のカウンタを含
    み、前記装置が、 前記複数の命令の中の選択された命令を実行のために前
    記複数の実行ユニットの1つへディスパッチすることに
    応答して、該選択された命令が前記第2の投機的実行パ
    ス内の第1の命令であるならば、前記第1のカウンタを
    増分する前の該第1のカウンタの値を前記第3のカウン
    タへロードする手段と、 前記複数の実行ユニットの1つへディスパッチされた前
    記複数の命令の中の特定の命令の完了に応答して、該特
    定の命令に対して割当てられた前記資源の各々について
    前記第3のカウンタを減分する手段と、 前記資源カウンタが前記複数の命令に対して割当てられ
    た前記複数の資源の数を追跡しており、前記第1の投機
    的実行パスが正しいと導出されかつ前記第2の投機的実
    行パスが誤りと導出されることに応答して、前記第3の
    カウンタの値を前記第1のカウンタへ転送する手段とを
    有する請求項5に記載のプロセッサ内における資源割当
    ての追跡装置。
  8. 【請求項8】前記第1及び前記第2のカウンタがそれぞ
    れ第1及び第2のシフト・レジスタを有し、該第1及び
    該第2のシフト・レジスタの各々がそのシフト・レジス
    タ内のセット・ビットのビット位置により前記複数の資
    源の中の割当てられた資源の数を示し、 前記第1のカウンタを増分する手段が、前記命令に対し
    て割当てられた前記資源の各々について前記第1のシフ
    ト・レジスタ内の前記セット・ビットを1ビット位置だ
    け第1の方向へシフトさせる手段を有し、 前記第1及び第2のカウンタを減分する手段が、前記特
    定の命令に対して割当てられた前記資源の各々について
    前記第1及び前記第2のシフト・レジスタ内の双方の前
    記セット・ビットを1ビット位置だけ第2の方向へシフ
    トさせる手段を有する請求項5に記載のプロセッサ内に
    おける資源割当ての追跡装置。
  9. 【請求項9】前記複数の資源が、完了する前に前記複数
    の命令に関連するデータを記憶するために用いられる複
    数のリネーム・バッファを有する請求項5に記載のプロ
    セッサ内における資源割当ての追跡装置。
  10. 【請求項10】前記プロセッサが前記複数の命令の順序
    外実行をサポートしかつ複数のエントリをもつ命令シー
    ケンス・テーブルを有し、前記複数の命令の各々に対し
    て該複数の命令のプログラム順序に従って前記複数のエ
    ントリの1つを順次割付けることにより該複数の命令を
    該プログラム順序に従って完了させることができ、そし
    て前記複数の資源が該命令シーケンス・テーブル内の該
    複数のエントリを構成する請求項5に記載のプロセッサ
    内における資源割当ての追跡装置。
  11. 【請求項11】ディスパッチされる命令を非プログラム
    順序で実行可能な複数の実行ユニットと、 ユーザアクセス可能な複数のデータ・レジスタと、 複数のリネーム・バッファと、 前記実行ユニットへ命令をディスパッチする手段と、 実行のために前記実行ユニットへディスパッチされた複
    数の命令の各々に対して該複数の命令のプログラム順序
    に従って命令識別子を割振る手段と、 複数のエントリの各エントリが命令識別子と関連付けら
    れ、かつ該各エントリがこれに関連付けられた命令識別
    子を割振られた命令の実行が終了したことを示す終了標
    識を含むような該複数のエントリを有するテーブルと、 前記テーブル内の前記複数のエントリ中の特定のエント
    リに関連付けられた命令識別子を割振られた命令の実行
    の終了に応答して、該特定のエントリ内の終了標識をセ
    ットする手段と、 特定のプロセッサ・サイクル中に完了可能な前記複数の
    命令のサブセット内の選択された命令に関連するデータ
    を、関連する前記リネーム・バッファから関連する前記
    データ・レジスタへと転送することにより該選択された
    命令が完了される場合に、該サブセットに対して割振ら
    れた命令識別子に関連付けられた前記テーブル内のエン
    トリを指示する1又は複数のポインタと、 前記複数の命令の前記サブセット内の選択された命令に
    より発生された例外が処理されており、該選択された命
    令に先行して命令識別子を割振られた前記複数の命令の
    中の命令が前のプロセッサ・サイクル中に完了されてい
    るか又は同じプロセッサ・サイクル中に完了し、そして
    該選択された命令に割振られた命令識別子が終了標識を
    セットされているエントリに関連付けられている場合
    に、前記複数の命令を前記プログラム順序に従って完了
    するべく該選択された命令を完了する手段とを有するス
    ーパスカラ・プロセッサ。
  12. 【請求項12】前記テーブル内の各エントリが、 前記各エントリに関連付けられた命令識別子を割振られ
    た命令を完了するために必要な前記データ・レジスタの
    数を指定するフィールドと、 前記各エントリに関連付けられた命令識別子を割振られ
    た命令の実行中に生じた例外条件を示すフィールドとを
    有する請求項11に記載のスーパスカラ・プロセッサ。
  13. 【請求項13】前記テーブルがM個のエントリを有しか
    つ前記スーパスカラ・プロセッサがエントリ・カウンタ
    を有し、該エントリ・カウンタが、 M+1ビットを有し、かつ前記テーブル内の前記複数の
    エントリの中の割当てられたエントリの第1の数を該M
    +1ビットの中のセット・ビットの位置により示す基本
    シフト・レジスタと、 M+1ビットを有し、投機的実行パスに関連付けられ、
    かつ該投機的実行パス内にない命令に対して割当てられ
    た前記複数のエントリの中のエントリの第2の数を示す
    バックアップ・シフト・レジスタと、 前記投機的実行パスが誤って予測されたと判断されるこ
    とに応答して前記バックアップ・シフト・レジスタから
    前記基本シフト・レジスタへ前記第2の数を転送する手
    段とを有する請求項11に記載のスーパスカラ・プロセ
    ッサ。
  14. 【請求項14】前記スーパスカラ・プロセッサがN個の
    投機的実行パスをサポートし、前記エントリ・カウンタ
    がN個のバックアップ・シフト・レジスタを有する請求
    項13に記載のスーパスカラ・プロセッサ。
  15. 【請求項15】前記スーパスカラ・プロセッサがM個の
    リネーム・バッファとリネーム・バッファ・カウンタと
    を有し、該リネーム・バッファ・カウンタが、 M+1ビットを有し、かつディスパッチされ未完了であ
    る命令に対して割当てられた前記リネーム・バッファの
    第1の数を該M+1ビットの中のセット・ビットの位置
    により示す基本シフト・レジスタと、 M+1ビットを有し、投機的実行パスに関連付けられ、
    かつディスパッチされ未完了である該投機的実行パス内
    にない命令に対して割当てられた前記リネーム・バッフ
    ァの第2の数を該M+1ビットの中のセット・ビットの
    位置により示すバックアップ・シフト・レジスタと、 前記投機的実行パスが誤って予測されたと判断されるこ
    とに応答して前記バックアップ・シフト・レジスタから
    前記基本シフト・レジスタへ前記第2の数を転送する手
    段とを有する請求項11に記載のスーパスカラ・プロセ
    ッサ。
  16. 【請求項16】前記スーパスカラ・プロセッサがN個の
    投機的実行パスをサポートし、前記リネーム・バッファ
    ・カウンタがN個のバックアップ・シフト・レジスタを
    有する請求項15に記載のスーパスカラ・プロセッサ。
  17. 【請求項17】命令の順序外実行をサポートするデータ
    処理システムであって、 前記複数の命令を記憶するメモリと、 複数の実行ユニットを有し、該複数の実行ユニットへデ
    ィスパッチされた複数の命令を非プログラム順序で実行
    可能なスーパスカラ・プロセッサと、 前記メモリから前記複数の実行ユニットへ前記複数の命
    令をディスパッチする手段と、 ユーザアクセス可能な複数のデータ・レジスタと、 複数のリネーム・バッファと、 実行のために前記実行ユニットへディスパッチされた複
    数の命令の各々に対して該複数の命令のプログラム順序
    に従って命令識別子を順次割振る手段と、 複数のエントリの各エントリが命令識別子と関連付けら
    れ、かつ該各エントリがこれに関連付けられた命令識別
    子を割振られた命令の実行が終了したことを示す終了標
    識を含むような該複数のエントリを有するテーブルと、 前記テーブル内の前記複数のエントリ中の特定のエント
    リに関連付けられた命令識別子を割振られた命令の実行
    の終了に応答して、該特定のエントリ内の終了標識をセ
    ットする手段と、 特定のプロセッサ・サイクル中に完了可能な前記複数の
    命令のサブセット内の選択された命令に関連するデータ
    を、関連する前記リネーム・バッファから関連する前記
    データ・レジスタへと転送することにより該選択された
    命令が完了される場合に、該サブセットに対して割振ら
    れた命令識別子に関連付けられた前記テーブル内のエン
    トリを指示する1又は複数の完了ポインタと、 前記複数の命令の前記サブセット内の選択された命令に
    より発生された例外が処理されており、該選択された命
    令に先行して命令識別子を割振られた前記複数の命令の
    中の命令が前のプロセッサ・サイクル中に完了されてい
    るか又は同じプロセッサ・サイクル中に完了し、そして
    該選択された命令に割振られた命令識別子が終了標識を
    セットされているエントリに関連付けられている場合
    に、前記複数の命令を前記プログラム順序に従って完了
    するべく該選択された命令を完了する手段とを有するデ
    ータ処理システム。
  18. 【請求項18】前記テーブル内の各エントリが、 前記各エントリに関連付けられた命令識別子を割振られ
    た命令を完了するために必要な前記データ・レジスタの
    数を指定するフィールドと、 前記各エントリに関連付けられた命令識別子を割振られ
    た命令の実行中に生じた例外条件を示すフィールドとを
    有する請求項17に記載のデータ処理システム。
  19. 【請求項19】前記テーブルがM個のエントリを有しか
    つ前記データ処理システムがエントリ・カウンタを有
    し、該エントリ・カウンタが、 M+1ビットを有し、かつ前記テーブル内の前記複数の
    エントリの中の割当てられたエントリの第1の数を該M
    +1ビットの中のセット・ビットの位置により示す基本
    シフト・レジスタと、 M+1ビットを有し、投機的実行パスに関連付けられ、
    かつ該投機的実行パス内にない命令に対して割当てられ
    た前記複数のエントリの中のエントリの第2の数を示す
    バックアップ・シフト・レジスタと、 前記投機的実行パスが誤って予測されたと判断されるこ
    とに応答して前記バックアップ・シフト・レジスタから
    前記基本シフト・レジスタへ前記第2の数を転送する手
    段とを有する請求項17に記載のデータ処理システム。
  20. 【請求項20】前記データ処理システムがN個の投機的
    実行パスをサポートし、前記エントリ・カウンタがN個
    のバックアップ・シフト・レジスタを有する請求項19
    に記載のデータ処理システム。
  21. 【請求項21】前記プロセッサがM個のリネーム・バッ
    ファを有しかつ前記データ処理システムがリネーム・バ
    ッファ・カウンタを有し、該リネーム・バッファ・カウ
    ンタが、 M+1ビットを有し、かつディスパッチされ未完了であ
    る命令に対して割当てられた前記リネーム・バッファの
    第1の数を該M+1ビットの中のセット・ビットの位置
    により示す基本シフト・レジスタと、 M+1ビットを有し、投機的実行パスに関連付けられ、
    かつディスパッチされ未完了である該投機的実行パス内
    にない命令に対して割当てられた前記リネーム・バッフ
    ァの第2の数を該M+1ビットの中のセット・ビットの
    位置により示すバックアップ・シフト・レジスタと、 前記投機的実行パスが誤って予測されたと判断されるこ
    とに応答して前記バックアップ・シフト・レジスタから
    前記基本シフト・レジスタへ前記第2の数を転送する手
    段とを有する請求項17に記載のデータ処理システム。
  22. 【請求項22】前記データ処理システムがN個の投機的
    実行パスをサポートし、前記リネーム・バッファ・カウ
    ンタがN個のバックアップ・シフト・レジスタを有する
    請求項21に記載のデータ処理システム。
JP08162568A 1995-06-29 1996-06-24 プロセッサ内の資源割当て追跡方法及びそのシステム Expired - Fee Related JP3093639B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US496833 1995-06-29
US08/496,833 US5809268A (en) 1995-06-29 1995-06-29 Method and system for tracking resource allocation within a processor

Publications (2)

Publication Number Publication Date
JPH09120359A true JPH09120359A (ja) 1997-05-06
JP3093639B2 JP3093639B2 (ja) 2000-10-03

Family

ID=23974348

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08162568A Expired - Fee Related JP3093639B2 (ja) 1995-06-29 1996-06-24 プロセッサ内の資源割当て追跡方法及びそのシステム

Country Status (5)

Country Link
US (1) US5809268A (ja)
EP (1) EP0751458B1 (ja)
JP (1) JP3093639B2 (ja)
KR (1) KR100225244B1 (ja)
DE (1) DE69615616D1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008505396A (ja) * 2004-07-02 2008-02-21 インテル・コーポレーション リソースの割り当ておよび制限を介するヘテロジニアスチップマルチプロセッサのための装置および方法
JP2014179098A (ja) * 2013-03-14 2014-09-25 Samsung Electronics Co Ltd マイクロプロセッサ及びこれを使用した電子機器

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860018A (en) * 1997-06-25 1999-01-12 Sun Microsystems, Inc. Method for tracking pipeline resources in a superscalar processor
US6324640B1 (en) * 1998-06-30 2001-11-27 International Business Machines Corporation System and method for dispatching groups of instructions using pipelined register renaming
US6338133B1 (en) 1999-03-12 2002-01-08 International Business Machines Corporation Measured, allocation of speculative branch instructions to processor execution units
US6810422B1 (en) 2000-01-14 2004-10-26 Lockheed Martin Tactical Defense Systems System and method for probabilistic quality of communication service determination
US6622236B1 (en) * 2000-02-17 2003-09-16 International Business Machines Corporation Microprocessor instruction fetch unit for processing instruction groups having multiple branch instructions
US7188232B1 (en) * 2000-05-03 2007-03-06 Choquette Jack H Pipelined processing with commit speculation staging buffer and load/store centric exception handling
US6675372B1 (en) * 2000-10-31 2004-01-06 Sun Microsystems, Inc. Counting speculative and non-speculative events
US20040186982A9 (en) * 2002-02-06 2004-09-23 Matthew Becker Stalling Instructions in a pipelined microprocessor
US6996802B2 (en) 2002-03-18 2006-02-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using initialization order and calling order constraints
US6912633B2 (en) 2002-03-18 2005-06-28 Sun Microsystems, Inc. Enhanced memory management for portable devices
US7181737B2 (en) 2002-03-18 2007-02-20 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using static procedure return addresses
US7010783B2 (en) 2002-03-18 2006-03-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation
US7281237B2 (en) 2003-01-16 2007-10-09 Sun Microsystems, Inc. Run-time verification of annotated software code
US7657893B2 (en) 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US7353499B2 (en) 2003-09-25 2008-04-01 Sun Microsystems, Inc. Multiple instruction dispatch tables for application program obfuscation
US7415618B2 (en) 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation
US7363620B2 (en) 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
US8220058B2 (en) 2003-09-25 2012-07-10 Oracle America, Inc. Rendering and encryption engine for application program obfuscation
US7424620B2 (en) 2003-09-25 2008-09-09 Sun Microsystems, Inc. Interleaved data and instruction streams for application program obfuscation
US20060026388A1 (en) * 2004-07-30 2006-02-02 Karp Alan H Computer executing instructions having embedded synchronization points
JP4276201B2 (ja) * 2005-03-31 2009-06-10 富士通株式会社 Smtプロセッサ用課金処理装置,課金処理方法,および課金処理プログラム
US8161493B2 (en) 2008-07-15 2012-04-17 International Business Machines Corporation Weighted-region cycle accounting for multi-threaded processor cores
US9690625B2 (en) * 2009-06-16 2017-06-27 Oracle America, Inc. System and method for out-of-order resource allocation and deallocation in a threaded machine
US8776061B2 (en) * 2010-12-16 2014-07-08 International Business Machines Corporation Real-time distributed monitoring of local and global processor resource allocations and deallocations
US9229791B1 (en) * 2012-08-24 2016-01-05 Qlogic, Corporation System and method for high speed multiple buffer allocation
US11263047B2 (en) * 2018-02-15 2022-03-01 Sap Se Metadata management for multi-core resource manager
US10929139B2 (en) 2018-09-27 2021-02-23 Qualcomm Incorporated Providing predictive instruction dispatch throttling to prevent resource overflows in out-of-order processor (OOP)-based devices
US11086630B1 (en) 2020-02-27 2021-08-10 International Business Machines Corporation Finish exception handling of an instruction completion table
US11829767B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
US11829762B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Time-resource matrix for a microprocessor with time counter for statically dispatching instructions
US11829187B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions
US11954491B2 (en) 2022-01-30 2024-04-09 Simplex Micro, Inc. Multi-threading microprocessor with a time counter for statically dispatching instructions
US20230315474A1 (en) * 2022-04-05 2023-10-05 Simplex Micro, Inc. Microprocessor with apparatus and method for replaying instructions

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1304188A (ja) * 1969-12-09 1973-01-24
US4145742A (en) * 1974-09-30 1979-03-20 Hewlett-Packard Company Programmable calculator including user-definable keys
US4056711A (en) * 1975-10-24 1977-11-01 William Paul Lamar Method and apparatus for programming microprocessors
US4241416A (en) * 1977-07-01 1980-12-23 Systron-Donner Corporation Monitoring apparatus for processor controlled equipment
US4270184A (en) * 1978-03-16 1981-05-26 Tokyo Shibaura Denki Kabushiki Kaisha Microprocessor-based programmable logic controller
US4371931A (en) * 1979-06-27 1983-02-01 Burroughs Corporation Linear micro-sequencer for micro-processor system utilizing specialized instruction format
US4575816A (en) * 1980-12-19 1986-03-11 International Business Machines Corporation Interactive transactions processor using sequence table pointers to access function table statements controlling execution of specific interactive functions
DE3239199C2 (de) * 1982-10-22 1986-03-20 Georg Neumann Gmbh, 1000 Berlin Verfahren zum Schneiden einer mit Seiten- und Tiefenschrift modulierten, spiralförmigen Rille in einen ebenen, scheibenförmigen Aufzeichnungsträger, sowie Schaltungsanordnung zur Durchführung dieses Verfahrens
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution
CA1286421C (en) * 1987-10-14 1991-07-16 Martin Claude Lefebvre Message fifo buffer controller
US5307464A (en) * 1989-12-07 1994-04-26 Hitachi, Ltd. Microprocessor and method for setting up its peripheral functions
US5289585A (en) * 1990-03-26 1994-02-22 Siemens Nixdorf Informationssysteme Ag Multiprocessor system having a system bus for the coupling of several processing units with appertaining private cache memories and a common main memory
US5581719A (en) * 1992-11-12 1996-12-03 Digital Equipment Corporation Multiple block line prediction
US5586278A (en) * 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
US5584037A (en) * 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
US5590352A (en) * 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008505396A (ja) * 2004-07-02 2008-02-21 インテル・コーポレーション リソースの割り当ておよび制限を介するヘテロジニアスチップマルチプロセッサのための装置および方法
JP2014179098A (ja) * 2013-03-14 2014-09-25 Samsung Electronics Co Ltd マイクロプロセッサ及びこれを使用した電子機器

Also Published As

Publication number Publication date
EP0751458A1 (en) 1997-01-02
KR100225244B1 (ko) 1999-10-15
EP0751458B1 (en) 2001-10-04
JP3093639B2 (ja) 2000-10-03
US5809268A (en) 1998-09-15
DE69615616D1 (de) 2001-11-08

Similar Documents

Publication Publication Date Title
JP3093639B2 (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
US5870582A (en) Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
CN106990941B (zh) 使用寄存器重命名处理移动指令
US5584037A (en) Entry allocation in a circular buffer
US5889982A (en) Method and apparatus for generating event handler vectors based on both operating mode and event type
US5611063A (en) Method for executing speculative load instructions in high-performance processors
JP3014773B2 (ja) プロセサアーキテクチャ
US6079014A (en) Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US5421020A (en) Counter register implementation for speculative execution of branch on count instructions
EP1145110B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
EP0730225A2 (en) Reclamation of processor resources in a data processor
JP3132755B2 (ja) プロセッサのアーキテクチャ状態を維持するための方法および装置
KR100242403B1 (ko) 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템
US6973563B1 (en) Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
JP2002522841A (ja) 異なる待ち時間を伴う命令のスケジューリング
JP2002508567A (ja) 誤推論後の命令再実施のためのアウトオブパイプライン・トレース・バッファ
US5872949A (en) Apparatus and method for managing data flow dependencies arising from out-of-order execution, by an execution unit, of an instruction series input from an instruction source
JP3142813B2 (ja) レジスタの名前変更を管理するための情報処理システムおよび方法
US5524224A (en) System for speculatively executing instructions wherein mispredicted instruction is executed prior to completion of branch processing
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
JP3093673B2 (ja) リネーム・レジスタを割り付ける方法及びプロセッサ
KR0122527B1 (ko) 슈퍼스칼라 프로세서 시스템에서 비순차적 명령어의 디스패치 및 실행을 위한 방법 및 시스템
US6134645A (en) Instruction completion logic distributed among execution units for improving completion efficiency
US20100100709A1 (en) Instruction control apparatus and instruction control method

Legal Events

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