JPH1069386A - 推測的な実行を支援する論理装置 - Google Patents

推測的な実行を支援する論理装置

Info

Publication number
JPH1069386A
JPH1069386A JP9115474A JP11547497A JPH1069386A JP H1069386 A JPH1069386 A JP H1069386A JP 9115474 A JP9115474 A JP 9115474A JP 11547497 A JP11547497 A JP 11547497A JP H1069386 A JPH1069386 A JP H1069386A
Authority
JP
Japan
Prior art keywords
predicate
speculative
label
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.)
Pending
Application number
JP9115474A
Other languages
English (en)
Inventor
Alan H Karp
アラン・エイチ・カープ
Rajendra Kumar
ラジェンドラ・クマー
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH1069386A publication Critical patent/JPH1069386A/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3842Speculative instruction execution

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】
【発明の属する技術分野】本発明は、プロセッサの命令
レベル並列性に関連し、特に、推測的な実行(speculat
ive execution)のために改善された技術に関連する。
【0002】
【従来の技術】コンピュータ・プロセッサ設計の分野に
おいて、開発者は、常に、プロセッサが命令を実行する
率を増加させる方法を推測している。この目標を達成す
るために、プロセッサは、一度に複数のオペレーション
を実行するように、あるいは、プロセッサのサイクル・
タイムが、減少するように設計される。プロセッサの1
つのタイプ(スーパースカラ・プロセッサ)は、同時に
実行される得る命令ストリーム中でオペレーションを識
別する特別なハードウェアを有する。残念なことに、こ
のハードウェアが複雑であるために、サイクル・タイム
を減少することが難しくなっている。
【0003】他のタイプのプロセッサ(スーパーパラレ
ルまたは超ロング命令ワード(VeryLong Instruction W
ord(VLIW))・プロセッサ)は、並列に実行されるバ
ンドル中でオペレーションをスケジュールするコンパイ
ラに依存する。スーパースカラ・プロセッサよりハード
ウェアが単純なので、サイクル・タイムは、更に減少す
る。
【0004】しかしながら、VLIWプロセッサの問題
の1つとして、しばしば、ハードウェア資源をビジーに
保持するのに十分な独立型オペレーションがないという
問題がある。一般に、「命令レベル並列性」は、オペレ
ーションが並列に実行され得る限度について言及すると
きに使用される言葉である。VLIWプロセッサ上で実
行されるプログラムは、命令レベル並列性を改善するた
めに、定型的に最適化される。この最適化は、コンパイ
ラ、ハードウェア、人手、または、これらの技術のいく
つかの組合せを使用することによって、実行することが
できる。
【0005】推測的なコード移動は、命令レベル並列性
を改善することができる最適化の形式である。一般に、
それは、その実行を制御する条件付き分岐によってオペ
レーションを移動することを必要とする。推測的なコー
ド移動において、1つ又は複数のオペレーションは、プ
ログラム内で、それらのホーム基本ブロックから直前の
基本ブロックまで移動される。「基本ブロック」は、分
岐によって次に続く直線的な順次オペレーションであ
る。ホーム・ブロックは、元々プログラムにある推測的
なオペレーション内の基本ブロックである。与えられた
基本ブロックに対する直前の基本ブロックは、与えられ
た基本ブロックに分岐することができ、あるいは、基本
ブロックに順番に先行する全ての基本ブロックを含むこ
とができる。
【0006】このように移動されるオペレーションは、
オペレーションがプログラム中で使用されるかどうかが
判る前に、実行されるので、「推測的である(speculat
ive)」または「予測的である(anticipatory)」など
と言われている。オペレーションのホーム・ブロックに
導く条件付き分岐が、異なる経路を取ることがあるの
で、推測的なオペレーションの結果が、使用されない場
合がある。
【0007】推測的なコード移動がVLIWプロセッサ
のパフォーマンスを改善することができるが、それと同
時に、推測的なオペレーションが障害を起こしたとき、
問題が発生する。例えば、以下に示されたソース・コー
ドを考慮する。
【0008】
【表1】if (A != 0) B = *A このコードの非推測的なバージョンは、
【0009】
【表2】...(ここに、いつかのコード) branch to instruction X if register A holds a 0 load register B from the address in register A X:... となる。
【0010】このコードの推測的なバージョンは、
【0011】
【表3】 load register C speculatively from the address in register A ...(ここに、いくつかのコード) branch to instruction X if register A holds a 0 copy the contents of register C to register B X:... となる。
【0012】この例において、推測的なコード移動は、
命令レベル並列性を改善し、ロード・オペレーション中
に起こる待ち時間の影響を減少する。しかしながら、た
とえオペレーションの結果がプログラム中で使用されな
いとしても、推測的なオペレーションは、障害を起こす
場合がある。たとえばこの例では、レジスタがゼロを保
持するとき、推測的なロード・オペレーションは、障害
を起こす場合がある。推測的なオペレーションが障害を
起こした場合、それはレポートされないか、または、直
ちに処理されない。その代わりに、オペレーションの結
果がプログラムで実際に使用されることが判明するま
で、障害の処理は延期される。このポイントは、時々コ
ミット・ポイントとして参照され、このポイントでのオ
ペレーションの使用が、コンピュータの状態の変更を引
き起こすことができる。
【0013】推測的な実行の間に発生した例外を処理す
ることができる方法が、多数存在する。一つの典型的な
方法として、「安全な推測処理」がある。この方法にお
いて、例外処理を発生させないオペレーションだけが、
推測的に移動される。この方法は、多くのオペレーショ
ンの推測的な移動を排除するため、命令レベルの並列性
の改善が、充分なものとならない。さらに、それはロー
ド・オペレーションが推測的に実行されることを許さ
ず、したがって、メモリ待ち時間を隠すという利益がな
い。
【0014】他の方法として、格上げ処理(boosting)
がある。この方法において、推測的なオペレーション
は、そのホーム基本ブロックの後ろに、パスが付加され
る。例外処理を延期するために、プロセッサが異なる実
行パスをとるまで、又は、それが非推測的なオペレーシ
ョンでオペレーションの結果を使用するまで、この状態
情報は、保存されなければならない。
【0015】この状態情報を保存する要求が、格上げ処
理の欠点となる。この状態情報を記憶するために、メモ
リの追加が必要となる。このことは、格上げ処理が達成
し得る限度と、分岐先を記憶するために要求される追加
の操作コード・ビットとの間のトレードオフを増加させ
る。オペレーションを移動させることができる分岐の数
は、状態情報を記憶するのに使用可能なメモリによって
制限される。
【0016】他の方法は、例外処理を延期するために、
ポイズン・ビット(poison bit)の使用を必要とする。
この方法において、例外処理が発生したとき、プロセッ
サは、推測的なオペレーションの結果レジスタに、ポイ
ズン・ビットを付ける。他の推測的なオペレーションが
このオペレーションの結果を使用するとき、プロセッサ
は、オペレーションの結果レジスタにポイズン・ビット
をセットすることによって、例外処理を伝播することが
できる。非推測的なオペレーションが、ポイズン・ビッ
トを消滅させるまで、例外処理は、延期される。その時
点で、プロセッサは、例外処理をレポートするか、処理
することができる。
【0017】ポイズン・ビット方法は、推測的なオペレ
ーションと非推測的なオペレーションとを区別する命令
セット・アーキテクチャで、一般的に、推測的なオペレ
ーションの操作コードに、余分なビットが追加されるこ
とを、必要とする。このことは、それが命令セットの複
雑性を増加させ、レジスタ・ファイルにメモリの追加を
必要とするために、欠点となる。それに加えて、レジス
タが機能呼出または状況切換でこぼれる(spilled)と
き、ポイズン・ビットは、保存されなければならない。
例えば、64ビットのデータを保持するレジスタは、メ
モリの65ビットにこぼされる必要があるので、ポイズ
ン・ビットを保存することは難しい。
【0018】さらに、タグ付処理として、他の方法があ
る。この方法において、各々のオペレーションは、それ
に関係するタグを有する。一般的に、ゼロのタグは、オ
ペレーションが非推測的なことを示す。推測的なオペレ
ーションのために、タグは、延期された例外処理につい
ての情報を記憶するタグ・テーブルのような、プロセッ
サのメモリを参照する。この方式において、コミット・
オペレーションは、延期された例外処理をチェックする
ために、オペレーションのホーム・ブロックで、挿入さ
れる。
【0019】タグ付処理方法の問題の1つは、一般に、
推測処理の量が、タグのために使用可能になる操作コー
ドの数によって、限定されるということである。より多
くのビットがタグを符号化するために必要とされると
き、命令セット・アーキテクチャでオペレーションの能
力の範囲を増すために利用可能となるビットは、より少
ないものとなる。他の問題として、分岐先がコミット・
オペレーションをスキップするとき、タグに記憶された
情報を明示的にクリアする必要がある。推測的な実行に
対する上記の方法の欠点を考慮して、推測的な実行のた
めの改善された方法とハードウェア・サポートの必要が
ある。
【0020】上記で特に明確にされた欠点において、共
通の欠点の1つに、推測的な実行を支援するために余分
な操作コード・ビットを必要とする。一般に知られてい
る方法のどれも、推測的な実行を支援するために述部
(predicate)ファイルを使用していない。述部の使用
は、条件付き分岐をプログラムから移す技術としてよく
知られている。述部は、一般的に、プロセッサがそれに
関連するオペレーションを実行するかどうかを制御する
単一ビットに、含まれる。
【0021】述部を使用するプログラムにおいて、条件
付き分岐は、オペレーションにガードとして作用する述
部によって置換される。条件付き分岐の代わりに、述部
ビットの値が、オペレーションを実行するかどうか制御
する。要するに、述部は条件付き分岐を「置換する」。
表現式または条件付き分岐を含む表現式は、述部ビット
の値を制御する。
【0022】
【発明が解決しようとする課題】本発明の目的は、推測
的なルック・アサイド・テーブルを使用する推測的な実
行を支援するための方法とハードウェア論理を提供する
ことである。
【0023】
【課題を解決するための手段】一実施例において、索引
として推測的なルック・アサイド・テーブルに作用する
ラベルは、述部ファイルの中の述部部分に付けられる。
推測的なルック・アサイド・テーブルの中の対応するエ
ントリは、延期された例外処理についての情報を記憶す
る。たとえば、例外処理が推測的なオペレーションのた
めに発生するとき、推測的なルック・アサイド・テーブ
ルの中の対応するエントリは、延期された例外処理につ
いての情報で更新される。この情報は、例外処理が、例
外処理についての追加のデータと同様に発生したことを
示す、単一ポイズン・ビットを含む。
【0024】推測的なオペレーションのホーム基本ブロ
ックまたはオペレーションの推測的な連鎖の中のオペレ
ーションは、延期された例外処理をチェックするために
使用される。このオペレーションは、非推測的なオペレ
ーションの一部として実行された明示されたチェック・
オペレーションまたは内在するチェック・オペレーショ
ンである。このチェック・オペレーションの間、推測的
なオペレーションまたはオペレーションの連鎖に対する
ラベルは、復号され、推測的なルック・アサイドの中の
対応しているエントリは、例外処理が延期されたかどう
かを決定するためにチェックされる。もし1つが延期さ
れた場合、例外処理は、回復可能な例外処理のためにレ
ポートされるか、回復処理が起動されるかのいずれかで
ある。
【0025】ある特定の実行において、述部が、オペレ
ーションの実行を制御する1ビット値と、推測的なルッ
ク・アサイド・テーブルに索引として作用するnビット
・ラベルを含む。ラベルの値も、オペレーションが推測
的かどうかを示す。推測的な実行を支援するために、ラ
ベルを述部に付けるラベル述部オペレーションと、例外
処理が延期されたかどうかをチェックするチェック・オ
ペレーションという2つ追加のオペレーションが、推測
的なオペレーションの連鎖に予定され得る。述部がオペ
レーションの目標であるとき、目標述部の値が、オペレ
ーションの結果によって定義され、目標述部が、制限し
ている述部のラベルを受信する。
【0026】例外処理が、この実行中に、推測的なオペ
レーションによって発生するとき、推測的なルック・ア
サイド・テーブルの対応するエントリの中のポイズン・
ビットが、セットされる。コードの実行によって、例外
処理を発生させた推測的なオペレーションのホーム・ブ
ロックになるならば、チェック・オペレーションが実行
されて、推測的なルック・アサイド・テーブルの対応す
るエントリを読む。ポイズン・ビットがセットされる
と、例外処理はその時に処理される。この実行におい
て、関連する述部にラベルを付け、推測的なルック・ア
サイド・テーブルの中の対応するエントリの延期された
例外処理についての情報を記憶することによって、例外
処理は、延期される。
【0027】ここに記述された方法は、複数の長所を有
する。この方法による長所の1つは、汎用レジスタまた
は浮動小数点レジスタの操作コード・ビットまたは追加
のビットが、推測的な実行を支援するために必要ないと
いうことである。他の長所は、1又は複数の推測的なオ
ペレーションの連鎖を、一度に支援することができると
いうことである。この方法を使用することによって、よ
り多くのオペレーションを、推測的に実行することがで
きる。更に、それは、コード・サイズを拡大せずに、延
期された例外処理からの回復を支援することができる。
【0028】
【発明の実施の形態】概要として、図1は、本発明が実
行されるコンピュータ・システム20の一般的なブロック
図を示す。コンピュータ・システム20は、システムバス
28を介してメモリ24と1つ又は複数の周辺装置26とに接
続されたCPU22を含む。システムバス28は、CPU2
2、メモリ24、および周辺装置26へデータと制御信号を
運ぶ。メモリ24は、ランダム・アクセス・メモリ(RA
M)を含むが、リード・オンリ・メモリ(ROM)やR
AMとROMの組合せの場合がある。コンピュータ・シ
ステム20の中で実行される1つ又は複数のプログラムの
ために、メモリ24がデータを記憶する。
【0029】図2は、本発明で実施される一般的なプロ
セッサ22のブロック図である。プロセッサ22は、複数の
機能ユニット30、1つ又は複数のレジスタ・ファイル3
2、および命令ユニット34を含む。レジスタ・ファイル3
2は、一般的に、値、アドレス、および他のデータを記
憶するいくつかの汎用レジスタ36を含む。「汎用レジス
タ」という用語は、浮動小数点、固定小数点、および述
部レジスタを含む短い言い方である。
【0030】プロセッサ22のアーキテクチャは、変更す
ることができる。ここで特定したアーキテクチャは、一
実施例として、プロセッサ22の高水準ハードウェア設計
を単に示したものである。本発明に従って実行された推
測的な実行は、いろいろなCPU、特に、複数の機能ユ
ニットを含むCPUや複数のパイプライン機能ユニット
を含むCPUの設計で、パフォーマンスの改善を提供す
ることができる。推測的な実行が、特に、超ロング命令
ワード(VLIW)コンピュータのパフォーマンスを向
上するのに有効である。
【0031】プログラムを実行する処理で、CPU22
が、メモリ24に記憶されている一連の命令を実行する。
命令ユニット34は、システムバス28を介してメモリから
命令を読出し、その命令を復号する。使用されるCPU
のタイプやスケジューリング方法に基づいて、命令が、
複数のオペレーションを含むことがある。命令ユニット
34が、機能ユニット30または複数の機能ユニット(図
2)にオペレーションを発生する。命令ユニット34が、
オペレーションまたは命令中のオペレーションを実行す
るために、機能ユニット30へ制御信号を送り出す。これ
らの制御信号に応じて、機能ユニット30が、レジスタ・
ファイル32のうちの最適なレジスタから、アドレスや値
のようなデータを読み出し、オペレーションを実行す
る。いくつかのオペレーションに応じて、機能ユニット
30は、レジスタ・ファイル32に結果を戻して書き込む。
メモリ記憶オペレーションに対して、機能ユニット30
は、レジスタ・ファイル32に記憶されているメモリ・ア
ドレスおよび値を読み出し、直接、メモリ24にその値を
転送する。
【0032】プロセッサの特定の構造が変更できると同
時に、本発明によって、オペレーションの実行を制御す
るために述部を使用するプロセッサで、推測的な実行が
支援される。
【0033】本発明の一例において、推測的なルック・
アサイド・テーブル(SLAT)が、推測的な実行を支
援するために使用される。述部レジスタ・ファイルのエ
ントリに追加されたラベルが、SLATの索引として作
用する。推測的なオペレーションによって発生する例外
処理を延期するのに使用される状態情報を、SLATが
記憶する。ある特定の実行において、ゼロの値が非推測
的なオペレーションを示すのに使用されるため、SLA
Tは、ラベルが示すことができる値の数より少ない数の
エントリを有する。したがって、このラベルは、オペレ
ーションが索引としてSLATに作用することに加えて
推測的か否かを示す。オペレーションが推測的であるこ
とを識別するために、操作コード・ビットを追加するこ
とは、必要とされない。
【0034】図に示したように、以下の5つの処理段を
持つプロセッサで、本発明が実行される。次のオペレー
ションを取出す(F)、オペレーションを復号する
(D)、全てのレジスタを読む(R)、オペレーション
を実行する(E)、および目標(targets)を書込む
(W)。
【0035】図3は、推測的な実行を支援するために使
用されるプロセッサの論理を示すブロック図である。こ
の実行において、プロセッサの中で述部を記憶するメモ
リは、述部ファイルとして認識される。述部ファイル50
は、述部の値58とラベル60を記憶するために一連のエン
トリ52、54、56を含む。述部の値58(真または偽)は、
それに関連するオペレーションが実行されるかどうかを
示す。ラベル60は、推測的なルック・アサイド・テーブ
ルに索引として作用して、それに関連するオペレーショ
ンが推測的であるかどうかを示す。この実行の中で、非
ゼロ・ラベルが索引としてSLATに作用すると同時
に、ゼロのラベルは、オペレーションが非推測的である
ことを示す。
【0036】プロセッサの機能ユニットが、読取ポート
62、64および書込ポート62、66を通じて、述部ファイル
50に述部の値を読み書きする。述部がオペレーションを
制限するか制御する述部であるとき、機能ユニットは、
読取ポート62を通じて述部の値を、読取りポート64を通
じてラベルを読み取る。逆に言えば、述部がオペレーシ
ョンの対象である時、機能ユニットは、述部ファイル50
の書込ポート66を通じて、述部ファイルのエントリにラ
ベルを書込む。この図は、述部ファイルの1つの実行例
を示すだけでり、特定の構造と読取および書込ポートの
数は、変更することができる。
【0037】SLAT80は、例外処理データを記憶する
複数のエントリ82、84、86を含む。この特別な実行にお
いて、各々のエントリが、ポイズン・ビットを記憶する
少くとも1つのビットを含む。ポイズン・ビットがセッ
トされると、それは、例外処理がSLATエントリに対
応する少くとも1つのオペレーションで延期されたこと
を示す。図3で示されたSLAT80が、追加のフラグを
記憶する1または複数のフィールド90を含む。これらの
フラグを、例外処理を処理するデータを記憶するために
使用することができる。例えば、例外処理をIEEE浮
動小数点オペレーションで処理するために使用される状
態ビットを記憶するフィールドを、SLATエントリ
が、含むことができる。また、SLATエントリは、あ
る種のタイプの例外処理に対する回復処理で使用される
回復コードの記憶場所を記憶することができる。
【0038】図3の中で示されたプロセッサの論理は、
述部ファイル50へのアクセスを制御するのに使用される
述部デコーダ100、102を含む。この特別な実行におい
て、この論理は、オペレーションの制御述部を復号する
少くとも1つの第1の述部デコーダ100を含む。また、こ
の論理は、述部の値とラベルが述部ファイルに書込まれ
るとき、目標述部を復号する少くとも第2の述部デコー
ダ102を含む。第1の述部デコーダ100は、図の括弧中の
「R」で識別され、述部ファイルのエントリの読取りに
使用される。第2の述部デコーダ102は、括弧中の
「W」で識別され、述部ファイルの1つ又は複数のエン
トリにデータを書込むのに使用される。
【0039】上述したように、図3において、プロセッ
サの機能ユニットが、読取ポート64を通じて述部ファイ
ル50からラベルを読み取ることができる。この特別な実
行において、機能ユニットが、プロセッサの実行段の一
部分を形成する複数の制御装置110、112を含む。これら
の制御装置が、述部ファイルの中のエントリからラベル
を読取って、SLATエントリを読むために使用される
一連のラベル・デコーダ120、122の1つにそのラベルを
送出する制御論理を含む。図3の中で示されるように、
プロセッサでオペレーションを実行するために使用され
る制御装置が、SLATに対応するラベル・デコーダ
に、ラベルを送り出すことができる。
【0040】一実施例として、機能ユニットは、ポイズ
ン・ビットがセットされるかどうかを決定するために、
SLATエントリを読取る。SLATエントリを読取る
1つの理由は、オペレーションの実行を停止するかどう
かを決定するためである。例えば、例外処理が、オペレ
ーションの推測的な連鎖のためにすでに延期されている
ならば、同じSLATエントリに対応する追加のオペレ
ーションを、実行する必要がない。別の理由としては、
明示または暗示のチェック・オペレーションの間、例外
処理が、延期されたか否かをチェックするためである。
SLATエントリを読取るための論理が、停止およびチ
ェック論理116として、図3の中で示される。図3で1
つのブロックとして示されているが、オペレーションの
実行を停止させる論理と、例外処理が延期されるか否か
を決定するSLATをチェックする論理は、別々に実行
することができる。この論理のオペレーションを以下に
詳述する。
【0041】機能ユニットはまた、SLATのエントリ
にデータを書込む制御論理を含む。図3の中で示される
ように、機能ユニットは、プロセッサの書込み段の間、
オペレーションの結果を書込む少くとも1つの制御装置
114を含む。例外処理が、推測的なオペレーションによ
って発生するならば、制御装置はSLATの対応するエ
ントリを更新する。ある実行において、例外処理が、推
測的なオペレーションによって発生するとき、例外処理
装置118は、ポイズン・ビットを対応するSLATエン
トリにセットする。更に、以下に詳述するように、機能
ユニットも、述部にラベルを付加するオペレーション
で、それを初期化するためにSLATエントリに書込
む。
【0042】図3で示された論理が、SLATへのアク
セスを制御する一連のラベル・デコーダ120、122、130
を含む。SLATエントリからデータを読取るために、
機能ユニットの制御論理110、112が、ラベル・デコーダ
に制御信号を出す。特にこの実施例の中で、制御論理
は、順番にラベルを復号し、機能ユニットが対応するS
LATエントリの内容を読取ることを許可するラベル・
デコーダ120または122にラベルを出す。SLATエント
リに書込むために、機能ユニット114が、SLATエン
トリの中に1又は複数のビットをセットしまたはクリア
するために使用されるラベル・デコーダ130に、SLA
Tラベルを送り出す。そして、例外処理装置118は、ポ
イズン・ビットを更新するためにSLATにデータを書
込む。
【0043】SLATは、機能ユニットがSLATエン
トリにデータを読み書きすることを許可する、読取ポー
ト150、152と書込ポート154、156を含む。ポートの数
は、実行に応じて変更することができる。図3の中で示
されたSLATは、SLATエントリにポイズン・ビッ
トをセットしクリアする読取ポート150と書込ポート154
を有する。推測的なオペレーションが例外処理を発生さ
せるとき、SLATエントリにポイズン・ビットをセッ
トし、SLATエントリが初期化されるとき、ポイズン
・ビットをクリアするために、書込ポート154が使用さ
れる。読取りポート150は、例外処理が延期されるかど
うかを決定するために使用される。例えば、1つの実行
で、プロセッサは、実行段階の間、現在のオペレーショ
ンの実行を続けるかどうかを決めるために、ポイズン・
ビットをチェックする。別の例として、プロセッサは、
例外処理が延期されるかどうかを決めるために、明示さ
れたチェック・オペレーションに応じて、ポイズン・ビ
ットをチェックする。
【0044】SLATエントリのサイズが、1ビットよ
りも大きい場合の実行において、SLATは、追加のデ
ータを読み書するための追加の読取および書込ポート15
2、156を含むことができる。上述のように、SLATエ
ントリは、オペレーションの再実行を制御するために使
用される状態ビットのようなポイズン・ビットに追加し
て、データを記憶することができる。
【0045】プロセッサ中で推測的な実行に対して支援
を利用するために、プロセッサの中で実行されたコード
は、第1の最適化された使用の推測的なコード移動であ
る。コンパイラによって、アセンブリ言語プログラマに
よって手動で、プロセッサ・ハードウェアによって、あ
るいは、これらの方法のいくつかの組合せによって、推
測的なコード移動を、実行することができる。
【0046】SLATを使用する推測的な実行を支援す
るために、2つのオペレーション、即ち、ラベル述部オ
ペレーション(lblpred)及びラベルチェック・オペレ
ーション(chklbl)は、トレース上で追加される。ラベ
ル・オペレーションは、推測的なオペレーションの連鎖
の最初のターゲット基本ブロックの中に挿入される。ラ
ベル・オペレーションの目的は、ラベルを述部に付加す
ることである。チェック・ラベル・オペレーションが、
ホーム基本ブロックに挿入され、そして、その目的は、
例外処理が、連鎖の中の推測的なオペレーションのいず
れかによって延期されたかどうかをチェックすることで
ある。
【0047】これらのオペレーションがスケジュールさ
れる方法を例示する。以下にソース・コードを示す。
【0048】
【表4】 a = *x; if ( a == 0 ) { b = *y; c = *z; if ( b == 0 ) d = *v; else e = *w; } アセンブリ・コードのバージョンの一例は、以下の通り
である。
【0049】
【表5】 1. p1?ld r7=r9 2. p1?cmpeq.u p4,p0=r7,0 3. P4?ld r2=(r10) 4. p4?ld r3=(r11) 5. p4?cmpeq.u p2,p3=r2,0 6. P2?ld r4=(r12) 7. P3?ld r5=(r13)
【0050】この例において、「p_?」が、オペレーシ
ョンを制限する述部を示す。この述部の値が、オペレー
ションが実行されるかどうかを決定する。「r_」表記
が、レジスタ・ファイルの中のレジスタを示す。「cmpe
q.u」表記が、比較オペレーションを示し、「ld」表記
が、ロード・オペレーションを示す。「p4?cmpeq.u p2,
p3=r2,0」のような比較オペレーションにおいて、オペ
レーションの目標は、述部(この例ではp2とp3)であ
る。
【0051】SLATを有するプロセッサのこのコード
の推測的なバージョンを、以下に示す。
【0052】
【表6】 1. p1?ld r7=r9 2. p1?lblpred,11 p4 3. P4?ld r2=(r10) 4. P4?ld r3=(r11) 5. p4?cmpeq.u p2,p3=r2,0 6. P2?ld r4=(r12) 7. P3?ld r5=(r13) 8. p1?cmpeq p5,p0=r7,0 9. p5?chklbl,11,immed p4
【0053】この例で示されるように、2つの追加のオ
ペレーションだけが、オペレーションの連鎖を推測する
ために必要とされる。この例はまた、この方法によって
追加された利益を示すものである。述部に付加されたラ
ベルが、オペレーションが推測的であるかどうかを示す
ので、オペレーションの推測的なバージョンは、必要と
されない。
【0054】ラベル述部オペレーションは、この場合、
以下の形式を有する。
【0055】
【表7】pb?lblpred,L pn
【0056】ここで、pbは、この例ではp1である目標ブ
ロックを制限する述部である。Lは、SLATエントリ
をもつ連鎖中のオペレーションに関連して使用されるn
ビットのラベルである。pnは、目標述部である。目標述
部(この例ではp4)が、制限する述部の値にセットされ
て、ラベル「L」を得る。
【0057】ラベル述部オペレーションが挿入されると
き、その制限する述部は、目標ブロックを制限する述部
となる。オペレーションまたはオペレーションの連鎖が
推測的なコード移動を使用して移される基本ブロック
を、目標ブロックが、参照する。ラベル述部オペレーシ
ョンのオペランドは、Nビット・ラベル(L)と目標述
部(pn)である。
【0058】図4は、ラベル述部オペレーションを実行
するためのプロセッサによって実行されたステップを示
しているフローチャートである。明確にするために、以
下の記述では、フローチャートのステップは、括弧内の
数字で表す。
【0059】第1に、述部デコーダは、デコード・段で
制限する述部を復号する(180)。次に、読取り段の
間、機能ユニットは述部ファイルから述部の値とラベル
を読込む(182)。説明のために、ラベル述部オペレー
ションを制限する述部が、この例では真であると仮定す
る。そうでなければ、ラベル処理が停止し、プロセッサ
が次のオペレーションに移る。実行段の間、新しいラベ
ルは、推測的なオペレーションの連鎖のために初期化さ
れる(184)。この場合、対応するエントリを、SLA
Tの中でゼロにセットすることを必然的に伴う。次に、
目標述部が復号され、制限する述部の値が目標述部にコ
ピーされる(186)。ラベルは、目標述部のラベル欄に
書込まれる。
【0060】この方法で、述部にラベルを付けることに
よって、オペレーション自身にタグを付ける必要がなく
なる。この結果、操作コード・ビットは、ラベルのため
に必要とされない。むしろ、述部のためにすでに使用可
能にされてる操作コード・ビットが、SLATに索引を
記憶するために使用される。
【0061】この例において、チェック・オペレーショ
ンは、以下のフォーマットを有する。
【0062】
【表8】pq?chklbl,L,d pn
【0063】ここで、pqは、推測されたコードのホーム
・ブロックを制限する述部である。この例では、p5が、
制限する述部である。Lは、チェックされたラベルであ
り、この例では11である。dは、フィックス・アップ
(fix-up)・コードに対するプログラム・カウンタ(P
C)変位である。pnは、ラベル述部オペレーションで指
定された述部であり、この例ではp4である。
【0064】チェック・オペレーションは、例外処理が
延期されたかどうかをチェックするために、推測的なオ
ペレーションまたは一連のオペレーションのホーム・ブ
ロックに挿入される。チェック・オペレーションの間、
プロセッサが、ラベルに対応するSLATエントリを読
取る。ポイズン・ビットがセットされると、プロセッサ
は例外処理をレポートするか、または例外処理を回復す
るステップを実行する。例外処理から回復するために、
プロセッサは最適なフィックス・アップ・コードにジャ
ンプするためにPC変位値を使用する。
【0065】SLATの1つの代換実行において、明示
されたチェック・オペレーションに対する要求を、無効
にすることができる。この実行において、ラベル・オペ
レーションが、対応するSLATエントリの回復コード
の起点の領域を符号化する。そして、例えばメモリ記憶
のような、セットされた命令の中のある種の非推測的な
オペレーションが、延期された例外処理をチェックする
ために使用される。たとえば、上述した明示されたチェ
ックよりはむしろ、ホーム基本ブロックに置かれた非推
測的なオペレーションが、延期された例外処理に対して
内在的なチェックをすることができる。そのような非推
測的なオペレーションが、非ゼロ・ラベルを有する述部
の制御の下に実行されるとき、ポイズン・ビットがゼロ
でないならば、例外処理が発生する。そして、例外処理
ハンドラが、回復コードを置くために、対応するSLA
Tエントリのアドレス・フィールドを使用する。
【0066】チェック・オペレーションを更に詳述する
前に、最初に、推測的なオペレーションの例外処理を延
期するために、どのようにSLATを使用することがで
きるかを記述する。
【0067】図5は、SLATを使用している例外処理
を延期する処理を示すフローチャートである。上記のパ
イプライン・プロセッサが5つの段を有するものとし
て、そのプロセッサは、次のオペレーションの読出から
開始する。復号段の間、プロセッサが、オペレーション
の複数の制御述部を、述部デコーダ100に挿入し、述部
デコーダが、対応しているエントリを述部ファイル中に
置く(200)。
【0068】読取段の間、機能ユニット110が、述部フ
ァイルから1ビット述部の値とnビット・ラベルを読取
る(202)。述部の値がゼロであるならば、オペレーシ
ョンは実行されない。この例において、述部は、真であ
るとする。書込段、即ち、オペレーションがプロセッサ
の状態を変更することができる段の前であれば、オペレ
ーションの実行を、任意のポイントで停止することがで
きる。ある場合には、例えば、現在のオペレーションが
パイプライン処理を通じて実行されるように処理される
ので、述部の値が、遅くまで知られないことがある。こ
れらの状況において、述部に誤りがあると、プロセッサ
の実行を、後の段で停止させることがある。
【0069】述部の値を読取ることに加え、プロセッサ
は、ラベルも読取る。ゼロのラベルによって非推測的な
オペレーションを識別するので、オペレーションが推測
的であるかどうかを、プロセッサは現段階で知ってい
る。説明のために、図5でにおいて、オペレーション
は、推測的なものとする。そうでなければ、これは、単
に、例外処理が発生していれば、延期されずに直ちに処
理されることを意味する。
【0070】実行段の間、機能ユニットの制御論理110
は、ラベルを復号するラベル・デコーダ120に、ラベル
を与える(204)。オペレーションが実行されるよう
に、プロセッサはSLATエントリを読取る(206)。
ポイズン・ビットがセットされると、プロセッサは、マ
ルチ・サイクル・オペレーションをやめて、次のオペレ
ーション(208、210)にスキップすることができる。
【0071】例外処理が、推測的なオペレーション(21
2)に対して発生するならば、プロセッサは、例外処理
が延期されていることを示すために、SLATのエント
リにデータを書込む。この実行において、例外処理ユニ
ット118は、ポイズン・ビットをセットする(214)。も
し、SLATエントリが1ビットより大きいならば、状
態ビットのような追加のデータまたはフィックス・アッ
プ・コードのアドレスを、SLATエントリに書込むこ
とはできない。
【0072】例えば、浮動小数点例外処理で、プロセッ
サは、IEEE命令されたスティッキ(sticky)・ビッ
トを、示されたSLATエントリに書込むことができ
る。この機構を支援するために、追加のポートが、SL
ATに追加され、他のオペレーションが、これらのビッ
トを最適なSLATエントリにセットするために使用さ
れる。延期された例外処理の検出において、チェック述
部オペレーションが、それらを浮動小数点状態レジスタ
に転送する。特に、チェック・オペレーションが、浮動
小数点状態レジスタに、これらのビットをORする。そ
れがSLATエントリを初期化するとき、ラベル述部オ
ペレーションは、これらのビットをクリアする。
【0073】図3の実行において、例外処理が発見され
たとき、書込段の間、プロセッサは、ポイズン・ビット
をセットする。書込段114の制御論理は、順番に有効な
SLATエントリを配置するラベル・デコーダ130に、
ラベルを供給する。例外処理が発生しないならば(21
2)、プロセッサは、最適な結果レジスタにオペレーシ
ョンの結果を書込み(216)、次のオペレーションに進
む。
【0074】図5は、特に、例外処理が発生したときの
SLATが更新される方法を示す。推測的な実行をSL
ATで支援するために、プロセッサも、例外処理が起こ
ったということを知っていなければならない。ポイズン
・ビットを保持しているSLATエントリのラベルが、
他の述部にコピーされるとき、例外処理が伝播される。
たとえば、述部が、比較オペレーションのようなオペレ
ーションの目標であった場合、例外処理が伝播される。
目標述部の値は、オペレーションの結果によって定義さ
れる。更に、制限する述部のラベルは、目標述部のラベ
ルにコピーされる。
【0075】一実施例において、プログラムが始まる前
に、全ての述部が、真にセットされ、全てのラベルが、
ゼロにセットされる。この方法を実行するために、1つ
の述部、例えばpoは、0のラベルをもつ永久的な真であ
る。
【0076】図6は、例外処理を知ることができる方法
を示すフローチャートである。この処理は、図5と同様
にして始まる。述部デコーダ100(図3)が、デコード
段階の間、制御述部を復号し(220)、オペレーション
に関連する制御論理が、読取段の間、述部の値とラベル
を読取る(222)。実行段の間、プロセッサが、オペレ
ーションの結果を算出する(224)。そして、プロセッ
サは、書込段の間、オペレーションの結果を述部目標ま
たは目標に書込む(226)。この実行において、述部デ
コーダ102が目標述部または述部の数を復号し、プロセ
ッサが述部の値とラベルを最適なエントリに書込む。
【0077】更に、例外処理データを発生させ、伝播す
るのに加えて、プロセッサは、延期された例外処理を発
見する手段を有する。上述のように、延期された例外処
理を発見する1つの方法は、明示されたチェック・オペ
レーションをホーム基本ブロックの中に挿入することで
ある。他の方法は、上述の非推測的なオペレーション
(メモリ記憶)のような、ホーム基本ブロックの暗示的
なチェック・オペレーションを使用する。
【0078】SLATを使用する推測的な実行を支援す
る他の構成は、プロセッサが回復処理を実行する方法で
ある。回復可能な例外処理が明示的または暗示的なチェ
ック・オペレーションに応じて発見されるとき、回復処
理は、再実行オペレーションのための処理である。プロ
セッサは、回復処理でオペレーションの再実行を完了す
ると、通常の実行を再開する。以下に回復処理と再実行
について詳述する。
【0079】図7は、延期された例外処理をチェックし
それを回復するステップを示すフローチャートである。
この例では、明示的チェック・オペレーションが延期さ
れた例外処理をチェックするために使用される。復号段
で、述部デコーダが、チェック・オペレーションの制御
述部(制限する述部、pq)のラベルを復号する(24
0)。読取段の間、プロセッサが、制御述部の値とラベ
ルを読取る(242)。制御述部の値が真でないならば(2
44)、他のチェック・オペレーションがスキップされ、
プロセッサは、次のオペレーションに進む。
【0080】制御述部の値が真であり、制御述部のラベ
ルが非ゼロならば(248)、プロセッサは回復不可能な
チェック例外処理をレポートする(250)。制御述部の
値が真であり、制御述部のラベルが0ならば(248)、
プロセッサは、チェック・オペレーションで指定される
ラベル(L)をデコードし(252)、対応するSLATエ
ントリを読取る(254)。
【0081】ポイズン・ビットがセットされないならば
(256)、プロセッサは次のオペレーションに進む(25
8)。ポイズン・ビットがセットされていないとき、S
LATエントリに関連する推測的なオペレーションに対
して延期された例外処理がない。そのようなとき、処理
すべき例外処理がなく、処理行程は、次のオペレーショ
ンに進む。
【0082】ポイズン・ビットがセットされているなら
ば、プロセッサは、例外処理を処理する。これは、例外
処理が回復不可能であるならば、例外処理をレポート
し、例外処理が回復可能であるならば、オペレーション
を再実行することを必要とする。図7は、例外処理が回
復可能な特定の場合を示す。
【0083】回復処理の実行において、プロセッサは明
示的チェック・オペレーションの中で指定された変位値
(d)に基づいて、フィックス・アップ・コードにジャ
ンプする(260)。プロセッサは、回復処理の障害を以
下の一般的なコードに割り当てる。 1)全ての述部(おそらく、分岐目標)を保存する(26
2)。 2)チェック・オペレーション(一般にpn、上記の例で
はp4)およびソース述部(上記の例ではpi)の中で指定
された目標述部を除く、全ての述部を偽にセットする
(264)。 3)ソース述部のラベルを0にセットする(266)。
【0084】回復処理が、ステップを追加して、SLA
Tのポイズン・ビットをクリアすることを含むことがで
きる。しかしながら、それがSLATエントリを初期化
するとき、ラベル述部オペレーションによってこれを実
行することができる。
【0085】回復処理の終わりで、プロセッサは、正常
動作を再開するために一連のステップを実行する。再開
処理において、プロセッサの状態が、リセットされ、次
のオペレーションが通常に実行される。一実施例におい
て、再開処理は、チェック・オペレーションに対応して
開始される。特に、以下の場合に、再開処理がチェック
・オペレーションに対応して起こる。 1)制限する述部の値が真である。 2)制限する述部のラベルがゼロである。 3)ソース述部のラベルがゼロである。
【0086】これらの条件が回復処理中に合致した時
は、プロセッサは、述部(分岐目標)を再記憶し、中断
しているチェック・オペレーションで再処理する一般的
なコードへ分岐する。
【0087】上述された方法において、明示的オペレー
ションは、ラベルの状態をクリアするのに必要とされな
い。述部がオペレーションの目標であるとき、目標述部
のラベル・フィールドが自動的にリセットされる。上述
において、ラベル述部オペレーションが、対応するSL
ATエントリをゼロにリセットするのに役立つ。
【0088】上述において、本発明の実施例を記述した
が、本発明は、これらの実施例に限定されない。SLA
Tとそれに伴う論理は、いろいろな方法で実行される。
例えば、述部ファイルから述部データを読取り書込むた
めに使用した制御論理の特定の設計は、変更することが
できる。また、更に、SLATエントリに読み書きする
制御論理も、変更することができる。また、SLATテ
ーブルのサイズとその中に記憶されたデータのフォーマ
ットも、変更することができる。
【0089】本発明は例として次の実施態様を含む。 (1)プロセッサにおける、推測的な実行を支援する論
理装置であって、複数のエントリを含み、例外処理が延
期されているかどうかを示すデータを記憶する推測的な
ルック・アサイド・テーブルと、述部を記憶するために
使用できる複数のエントリを含み、1又は複数のオペレ
ーションの実行と、前記推測的なルック・アサイド・テ
ーブルの索引を示すラベルとを制御する述部レジスタ・
ファイルと、述部を読取るために使用でき、前記述部レ
ジスタ・ファイルの中の対応するエントリの位置を示す
述語デコーダと、前記述部レジスタ・ファイルの前記対
応するエントリから述部の値とラベルを読込むために使
用できる制御論理手段と、前記制御論理手段に接続さ
れ、前記制御論理手段から前記ラベルを受取るために使
用され、前記推測的なルック・アサイド・テーブルの中
の対応するエントリの位置を示すために使用されるラベ
ル・デコーダと、を備える前記論理装置。
【0090】(2)前記述部レジスタ・ファイルの前記
複数のエントリは、1ビットの述部を記憶する第1のビ
ット・フィールドと、推測的なルック・アサイド・テー
ブルに前記索引を記憶するnビットのラベルと、を有
し、nは、2以上の整数であることを特徴とする(1)
記載の前記論理装置。 (3)前記プロセッサは、オペレーションを復号する復
号手段と、前記オペレーションの1又は複数のオペラン
ドを読込む読込手段と、前記オペレーションを実行する
実行手段と、前記オペレーションの結果を目標レジスタ
に書込む書込手段と、を有し、前記制御論理手段は、前
記実行手段の実行の間、前記述部レジスタ・ファイルの
対応するエントリから前記ラベル・デコーダに前記ラベ
ルを発信するために使用され、前記論理装置は、前記実
行手段の実行の間、前記推測的なルック・アサイド・テ
ーブルの対応するエントリを読込むために使用され、前
記推測的なルック・アサイド・テーブルの対応するエン
トリにポイズン・ビットがセットされているとき、前記
オペレーションの実行を停止することに使用される停止
論理手段を有することを特徴とする(1)記載の論理装
置。
【0091】(4)更に、前記推測的なルック・アサイ
ド・テーブルに接続され、前記推測的なルック・アサイ
ド・テーブルの対応するエントリを読込むために使用さ
れ、ポイズン・ビットがセットされているとき、例外処
理からの回復を開始するために使用されるチェック論理
手段を有する(1)記載の論理装置。 (5)更に、前記推測的なルック・アサイド・テーブル
の対応するエントリにポイズン・ビットを書込む制御を
行うために使用される第2のラベル・デコーダを有する
(1)記載の論理装置。 (6)前記プロセッサは、オペレーションを復号する復
号手段と、前記オペレーションの1又は複数のオペラン
ドを読込む読込手段と、前記オペレーションを実行する
実行手段と、前記オペレーションの結果を目標レジスタ
に書込む書込手段と、を有し、前記第2のラベル・デコ
ーダは、前記書込手段の書込みの間、前記推測的なルッ
ク・アサイド・テーブルの対応するエントリにポイズン
・ビットを書込む制御を行うために使用される、(5)
記載の論理装置。
【0092】(7)推測的なルック・アサイド・テーブ
ルを使用する推測的な実行を支援する方法であって、オ
ペレーションの述部を復号し、前記述部及び関連するラ
ベルを読込み、前記述部の値を基に、前記オペレーショ
ンの実行を制御し、前記ラベルを復号し、例外処理が延
期されているか否かを決定するために、前記ラベルに応
じて前記推測的なルック・アサイド・テーブルのエント
リを読込み、前記推測的なルック・アサイド・テーブル
の前記エントリを基に、更に、前記オペレーションの実
行を制御する、前記方法。 (8)更に、前記オペレーションが、推測的なオペレー
ションであるか否かを決定するために前記ラベルを読込
み、前記オペレーションが推測的で、例外処理を発生さ
せたとき、前記ラベルに応じて前記推測的なルック・ア
サイド・テーブルの前記エントリにポイズン・ビットを
セットする、(7)記載の方法。 (9)更に、明示的チェック・オペレーションにおい
て、前記明示的チェック・オペレーションの中で指定さ
れるラベルに対応しているエントリが、例外処理が延期
されたことを示しているフラグを記憶しているかどうか
を決定し、前記フラグが発見されるとき、チェック・オ
ペレーションで指定されたラベルを有する述部で制限さ
れるオペレーションを含む再実行コードに分岐する、
(7)記載の方法。
【0093】(10)オペレーションを復号する復号手
段と、前記オペレーションの1又は複数のオペランドを
読込む読込手段と、前記オペレーションを実行する実行
手段と、前記オペレーションの結果を目標レジスタに書
込む書込手段と、を有するプロセッサにおいて、推測的
な実行を支援する論理装置であって、複数のエントリを
含み、例外処理が延期されているかどうかを示すポイズ
ン・ビットを記憶する推測的なルック・アサイド・テー
ブルと、述部の値を記憶するために使用できる複数のエ
ントリを含み、1又は複数のオペレーションの実行と、
前記推測的なルック・アサイド・テーブルの索引を示す
ラベルとを制御する述部レジスタ・ファイルと、述部を
読取るために使用でき、前記プロセッサの読込の間、前
記述部レジスタ・ファイルの中の対応するエントリの位
置を示す第1の述語デコーダと、ラベルを含む述部上の
オペレーションの結果を、前記述部レジスタ・ファイル
の1又は複数のエントリに書込むことを制御するために
使用される第2の述部デコーダと、前記述部レジスタ・
ファイルの前記対応するエントリから述部の値とラベル
を読込むために使用でき、前記ラベルを第1のラベル・
デコーダに発信するために使用できる制御論理手段と、
前記制御論理手段から前記ラベルを受取るために前記制
御論理手段に接続され、前記推測的なルック・アサイド
・テーブルの中の対応するエントリを読込むために使用
できる第1のラベル・デコーダと、前記推測的なルック
・アサイド・テーブルに接続され、前記推測的なルック
・アサイド・テーブルの対応するエントリにポイズン・
ビットを書込む制御を行うために使用できる第2のラベ
ル・デコーダと、を備える前記論理装置。
【0094】
【発明の効果】本発明によると、推測的なルック・アサ
イド・テーブルを使用する推測的な実行を支援するため
の方法とハードウェア論理を提供することができる。即
ち、本発明によると、汎用レジスタまたは浮動小数点レ
ジスタの操作コード・ビットまたは追加のビットが、推
測的な実行を支援するために必要ない。また、1又は複
数の推測的なオペレーションの連鎖を、一度に支援する
ことができる。また、より多くのオペレーションを、推
測的に実行することができ、更に、コード・サイズの拡
大をせずに、延期された例外処理からの回復を支援する
ことができる。
【図面の簡単な説明】
【図1】本発明が実行されるコンピュータ・システムの
概要図である。
【図2】本発明が実行されるプロセッサの一例を示すブ
ロック図である。
【図3】推測的な実行をプロセッサの中で支援するため
の推測的なルック・アサイド・テーブルと伴奏論理を示
すブロック図である。
【図4】は、本発明のラベル述部オペレーションを実行
するプロセッサによって実行されるステップを示すフロ
ーチャートである。
【図5】本発明の推測的なルック・アサイド・テーブル
を使用している例外処理を延期する処理を示すフローチ
ャートである。
【図6】本発明で伝播され得る延期された例外処理の方
法を示すフローチャートである。
【図7】本発明の延期された例外処理をチェックし、そ
れから回復する処理を示すフローチャートである。
【符号の説明】
20 コンピュータ・システム 22 プロセッサ 28 システムバス 36 汎用レジスタ 50 述部ファイル 80 SLAT

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】プロセッサにおいて推測的な実行を支援す
    る論理装置であって、 複数のエントリを含み、例外処理が延期されているかど
    うかを示すデータを記憶する推測的なルック・アサイド
    ・テーブルと、 述部を記憶するために使用できる複数のエントリを含
    み、1又は複数のオペレーションの実行と、前記推測的
    なルック・アサイド・テーブルの索引を示すラベルとを
    制御する述部レジスタ・ファイルと、 述部を読取るために使用でき、前記述部レジスタ・ファ
    イルの中の対応するエントリの位置を示す述語デコーダ
    と、 前記述部レジスタ・ファイルの前記対応するエントリか
    ら述部の値とラベルを読込むために使用できる制御論理
    手段と、 前記制御論理手段に接続され、前記制御論理手段から前
    記ラベルを受取るために使用され、前記推測的なルック
    ・アサイド・テーブルの中の対応するエントリの位置を
    示すために使用されるラベル・デコーダと、 を備える前記論理装置。
JP9115474A 1996-05-30 1997-05-06 推測的な実行を支援する論理装置 Pending JPH1069386A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/655,655 US5748936A (en) 1996-05-30 1996-05-30 Method and system for supporting speculative execution using a speculative look-aside table
US655,655 1996-05-30

Publications (1)

Publication Number Publication Date
JPH1069386A true JPH1069386A (ja) 1998-03-10

Family

ID=24629810

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9115474A Pending JPH1069386A (ja) 1996-05-30 1997-05-06 推測的な実行を支援する論理装置

Country Status (3)

Country Link
US (1) US5748936A (ja)
EP (1) EP0810519A3 (ja)
JP (1) JPH1069386A (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69430018T2 (de) * 1993-11-05 2002-11-21 Intergraph Corp Befehlscachespeicher mit assoziativem Kreuzschienenschalter
US5854928A (en) * 1996-10-10 1998-12-29 Hewlett-Packard Company Use of run-time code generation to create speculation recovery code in a computer system
US5920716A (en) * 1996-11-26 1999-07-06 Hewlett-Packard Company Compiling a predicated code with direct analysis of the predicated code
US5999738A (en) * 1996-11-27 1999-12-07 Hewlett-Packard Company Flexible scheduling of non-speculative instructions
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US5881280A (en) * 1997-07-25 1999-03-09 Hewlett-Packard Company Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor
US6263401B1 (en) * 1997-09-30 2001-07-17 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for transferring data between a register stack and a memory resource
US6216222B1 (en) * 1998-05-14 2001-04-10 Arm Limited Handling exceptions in a pipelined data processing apparatus
US6101599A (en) * 1998-06-29 2000-08-08 Cisco Technology, Inc. System for context switching between processing elements in a pipeline of processing elements
US6513108B1 (en) 1998-06-29 2003-01-28 Cisco Technology, Inc. Programmable processing engine for efficiently processing transient data
US6430682B1 (en) 1998-09-11 2002-08-06 Agere Systems Guardian Corp. Reliable branch predictions for real-time applications
US6163839A (en) * 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6301705B1 (en) * 1998-10-01 2001-10-09 Institute For The Development Of Emerging Architectures, L.L.C. System and method for deferring exceptions generated during speculative execution
US6173386B1 (en) 1998-12-14 2001-01-09 Cisco Technology, Inc. Parallel processor with debug capability
US6920562B1 (en) 1998-12-18 2005-07-19 Cisco Technology, Inc. Tightly coupled software protocol decode with hardware data encryption
US6282636B1 (en) * 1998-12-23 2001-08-28 Intel Corporation Decentralized exception processing system
US6519694B2 (en) * 1999-02-04 2003-02-11 Sun Microsystems, Inc. System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity
US20040158695A1 (en) * 1999-05-03 2004-08-12 Laurent Ugen Method and apparatus for handling transfer of guarded instructions in a computer system
EP1050811A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Branching in a computer system
US7761857B1 (en) * 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6529983B1 (en) 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6658555B1 (en) * 1999-11-04 2003-12-02 International Business Machines Corporation 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
GB2362729B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Memory access debug facility
GB2362968B (en) 1999-12-23 2003-12-10 St Microelectronics Sa Computer system with debug facility
GB2362730B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Computer register watch
GB2366006B (en) 1999-12-23 2004-06-30 St Microelectronics Sa A computer system with debug facility
GB2365546B (en) 1999-12-23 2004-02-18 St Microelectronics Sa A computer system with two debug watch modes
EP1117032B1 (en) * 2000-01-13 2008-04-30 Texas Instruments Incorporated Processor with improved branch efficiency
US6671664B1 (en) * 2000-02-22 2003-12-30 Hewlett-Packard Development Copany, L.P. Management of uncommitted register values during random program generation
US6892237B1 (en) * 2000-03-28 2005-05-10 Cisco Technology, Inc. Method and apparatus for high-speed parsing of network messages
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6505269B1 (en) 2000-05-16 2003-01-07 Cisco Technology, Inc. Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system
GB2363480B (en) * 2000-06-13 2002-05-08 Siroyan Ltd Predicated execution of instructions in processors
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6912647B1 (en) 2000-09-28 2005-06-28 International Business Machines Corportion Apparatus and method for creating instruction bundles in an explicitly parallel architecture
US6886094B1 (en) * 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US6799262B1 (en) 2000-09-28 2004-09-28 International Business Machines Corporation Apparatus and method for creating instruction groups for explicity parallel architectures
US6883165B1 (en) 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US6895527B1 (en) * 2000-09-30 2005-05-17 Intel Corporation Error recovery for speculative memory accesses
WO2002038521A2 (en) 2000-11-08 2002-05-16 Kerry Green Fertilizer
US7114059B2 (en) 2001-11-05 2006-09-26 Intel Corporation System and method to bypass execution of instructions involving unreliable data during speculative execution
GB0215029D0 (en) 2002-06-28 2002-08-07 Critical Blue Ltd Strand based execution
US7051238B2 (en) * 2002-07-30 2006-05-23 Hewlett-Packard Development Company, L.P. Method and system for using machine-architecture support to distinguish function and routine return values
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
KR101154077B1 (ko) * 2003-04-16 2012-06-11 실리콘 하이브 비.브이. 시간 고정형 프로세서 및 그의 제어 방법
US20050066151A1 (en) * 2003-09-19 2005-03-24 Sailesh Kottapalli Method and apparatus for handling predicated instructions in an out-of-order processor
US7610407B2 (en) * 2003-12-11 2009-10-27 Hewlett-Packard Development Company, L.P. Method for exchanging information between at least two participants via at least one intermediary to limit disclosure between the participants
US7216219B2 (en) * 2004-05-03 2007-05-08 Sun Microsystems Inc. Method and apparatus for avoiding write-after-read hazards in an execute-ahead processor
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US8458684B2 (en) * 2009-08-19 2013-06-04 International Business Machines Corporation Insertion of operation-and-indicate instructions for optimized SIMD code
US20110047358A1 (en) * 2009-08-19 2011-02-24 International Business Machines Corporation In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication
US8423516B2 (en) 2010-09-15 2013-04-16 International Business Machines Corporation Speculative execution in a real-time data environment
US9026857B2 (en) * 2012-10-19 2015-05-05 Sap Se Method and system for postponed error code checks
US20160179538A1 (en) * 2014-12-19 2016-06-23 Intel Corporation Method and apparatus for implementing and maintaining a stack of predicate values with stack synchronization instructions in an out of order hardware software co-designed processor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276819A (en) * 1987-05-01 1994-01-04 Hewlett-Packard Company Horizontal computer having register multiconnect for operand address generation during execution of iterations of a loop of program code
US5692169A (en) * 1990-12-14 1997-11-25 Hewlett Packard Company Method and system for deferring exceptions generated during speculative execution
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US5634023A (en) * 1994-07-01 1997-05-27 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by speculatively scheduled instructions

Also Published As

Publication number Publication date
EP0810519A3 (en) 1999-04-14
US5748936A (en) 1998-05-05
EP0810519A2 (en) 1997-12-03

Similar Documents

Publication Publication Date Title
US5748936A (en) Method and system for supporting speculative execution using a speculative look-aside table
US5778219A (en) Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations
US5881280A (en) Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor
US5692169A (en) Method and system for deferring exceptions generated during speculative execution
US6301705B1 (en) System and method for deferring exceptions generated during speculative execution
US6079014A (en) Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
JP2518616B2 (ja) 分岐方法
US7496733B2 (en) System and method of execution of register pointer instructions ahead of instruction issues
US6247121B1 (en) Multithreading processor with thread predictor
Mahlke et al. Sentinel scheduling: A model for compiler-controlled speculative execution
US6505296B2 (en) Emulated branch effected by trampoline mechanism
US7818547B2 (en) Method and apparatus for efficient resource utilization for prescient instruction prefetch
US5625835A (en) Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US8301870B2 (en) Method and apparatus for fast synchronization and out-of-order execution of instructions in a meta-program based computing system
US6185668B1 (en) Method and apparatus for speculative execution of instructions
US6631460B1 (en) Advanced load address table entry invalidation based on register address wraparound
JP3093624B2 (ja) 投機例外を処理する方法及び装置
US5694577A (en) Memory conflict buffer for achieving memory disambiguation in compile-time code schedule
US6032244A (en) Multiple issue static speculative instruction scheduling with path tag and precise interrupt handling
US6950926B1 (en) Use of a neutral instruction as a dependency indicator for a set of instructions
KR102484125B1 (ko) 벡터 처리회로를 사용한 에러 검출
US6640315B1 (en) Method and apparatus for enhancing instruction level parallelism
US6629238B1 (en) Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration
JP2001216160A (ja) 長レイテンシ命令に対する命令属性およびステータス情報を示す処理システムおよび方法
WO1999019795A1 (en) Method and apparatus for optimizing execution of load and store instructions