JP2005508546A - 推測式プロセッサにおいて信頼性のないデータを含む命令の実行を削減するシステム及び方法 - Google Patents
推測式プロセッサにおいて信頼性のないデータを含む命令の実行を削減するシステム及び方法 Download PDFInfo
- Publication number
- JP2005508546A JP2005508546A JP2003542475A JP2003542475A JP2005508546A JP 2005508546 A JP2005508546 A JP 2005508546A JP 2003542475 A JP2003542475 A JP 2003542475A JP 2003542475 A JP2003542475 A JP 2003542475A JP 2005508546 A JP2005508546 A JP 2005508546A
- Authority
- JP
- Japan
- Prior art keywords
- processor
- instruction
- tag
- register
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 239000000872 buffer Substances 0.000 claims description 18
- 230000009471 action Effects 0.000 claims description 10
- 238000013519 translation Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101100296652 Caenorhabditis elegans pcp-5 gene Proteins 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
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)
- Communication Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
[発明の分野]
本発明は、プロセッサのアーキテクチャに関するものであり、特に使用可能なデータと使用できないデータとの間を識別するために、推測的実行の間にレジスタにマークを付けるためのシステムと方法に関するものである。
[背景]
従来は、コンピュータプロセッサは、プロセッサに提示された順に1つずつ命令を実行していた。プロセッサが進化するにつれて、パイプライン、先取り、順番通りでない処理、及び推測的実行の概念が、パーソナルコンピュータで使用されるプロセッサを含む多数のより普及しているコンピュータプロセッサに組み込まれてきた。この技術は、他の長い待ち時間の命令がその結果を形成することを待つ間に、コンピュータプロセッサが独立の命令を実行することを可能にする。長い待ち時間の命令を待つ間に命令を実行し、実行リソースを使用し続ける機能は、今日のプロセッサにおける高性能を達成する際に重要である。プロセッサの設計における進歩は、一般的なプロセッサの命令の待ち時間を急激に改善したが、メモリにアクセスしなければならない命令の待ち時間は少ししか改善されていない。例えば、いくつかの今日のプロセッサにおいて、処理して“加える”ために必要な時間に比べて、プロセッサがキャッシュミスを含む“ロード”を実行するためには1000倍長い時間を要する場合がある。これは、プロセッサがロード命令の実行を完了するためにメモリから必要なデータを検索することを、キャッシュミスが必要とするからである。
【0002】
従って、前述の性能向上技術を実装している場合、キャッシュミスが発生すると、プロセッサは作動しなければならない多くの時間を有する。プロセッサにより実行された推測的実行のいくつかは、正確でなく、役に立たないものとして消去されなければならないデータを作る。このように、プロセッサは、多くの命令を不必要に推測的に実行する場合がある。例えばスクラッチモード(scratch mode)の実行は、プロセッサがキャッシュミスに続く命令を推測的に実行することを可能にすることにより、分岐予測に基づいて実行を可能にすることができる。しかし、多くの場合、キャッシュをミスしたロードの宛先レジスタに含まれる無効なデータに基づいて、実行が継続する。
【0003】
キャッシュミスによって作られた無効なデータは、最終的に無効なデータに依存する他段階の命令を通じて伝達され得る。従って、無効なデータは、一般的に無用なその命令の結果、又は命令の連続を与える。従って、キャッシュミスから生じる値を消費する命令の実行は、推測的実行を通じて達成される命令に否定的な影響を与えることがある。無効なデータに依存するロードは、先取りの利益を全く提供せず、変換索引バッファ及び/又はキャッシュの汚染を引き起こすことがある。更に、無効なデータに依存する分岐は、しばしば不正確に解決され、分岐予測によって示された分岐経路の外にスクラッチモード(scratch mode)の実行を導き、及び/又は無用な結果を与える。
【0004】
本発明の更なる利点が、以下の詳細な説明を読むことにより、及び添付の図面を参照して明らかになる。
[詳細な説明]
コンピュータのプロセッサの推測的実行の間に作られた使用可能な信頼性のある値と使用できない値との間を識別するシステムと方法が提供される。そのような推測的実行には、例えばパイプライン、先取り、順番通りでない処理、及びスクラッチモード(scratch mode)の実行が含まれる。1つの実施例において、プロセッサは、キャッシュミスから生じたデータを含む命令と分岐を選択的に取り消すことができる。その結果、プロセッサの電力消費が削減され、プロセッサの実行リソースが節約され、プロセッサのスループットが増加する。1つの実施例において、単一のビットの形式のタグが、レジスタやプレディケイト(predicate)やフラグ等を含むプロセッサの各データストレージ領域に加えられ、性能を向上させ、電力消費を削減するコスト効率の良い方法を提供する。
【0005】
いくつかのプロセッサにおいて、順番通りでない(OOO)実行は、命令が推測的でなくなるまで、再順序バッファ(ROB)に推測的命令をバッファリングすることにより達成される。すなわち、命令に含まれるデータが、供給元であれ宛先であれ、利用可能になり又はアクセス可能になるまでである。命令が推測的でなくなると、それは実行されて退く。命令は推測的でなくなったときにのみ退くことができるため、それが最終的に実行されて退く前に、それは数百ものクロックサイクルの間にROBにバッファリングされることがある。それぞれの新しい命令が、実行され得る前にROBのエントリーに割り当てられなければならないため、長い待ち時間の命令が完了するのを待つ間にプロセッサが進行を続けることを可能にするために、数百から数千ものROBのエントリーが必要になることがある。
【0006】
スクラッチモード(scratch mode)の実行(SME)は、進行を進めるための数百ものROBエントリーを必要とすることなく、プロセッサが長い待ち時間の命令の待ち時間を許容することを可能にする1つの形式の推測的実行である。今日の順番通りでない(OOO)実行のプロセッサと同様に、SMEは、長い待ち時間の命令の正確な結果を待つことなく、独立した命令の実行を継続することによって、長い待ち時間に対応する。OOO実行と異なり、SMEは推測的命令をバッファリングしない。その代わり、SMEは推測的命令を実行し、レジスタが他の命令によって上書きされるまでその結果を保存することだけを行う。SMEは、推測的に実行された命令が退くことができることを保証する記帳をしないため、全ての推測的に実行された命令は、廃棄され、プロセッサにより再実行されなければならない。しかし、多くの長い待ち時間の命令(例えばロード及び分岐)が、キャッシュ割当てと分岐予測の更新のような副次的な影響を有するため、多くの場合にその命令の待ち時間が再実行により有意に削減される。
【0007】
ここの説明を通じて、キャッシュミスにより生じる無効なデータと、命令により生じた全てのデータ値と、無効なデータに依存するデータは、スクラッチ値(SVal)と称される。SValから生じない他のデータ値は、信頼性のある値(RVal)と称される。ある研究によると、スクラッチモード(scratch mode)の間に実行された全ての命令のうちの40パーセントは、SValに依存し、完全に無視されることができる。ここで説明される方法は、SValに依存する命令とRValに依存する命令とを異なって処理することを含む。1つの実施例において、SValのロードがキャッシュにアクセスすることを防ぎ、分岐予測がSValに基づく分岐の解決を無効にすることを可能にすることによって、有意な性能の利益が提供される。
【0008】
図1Aは、ここで説明されるシステムと方法が実施され得るハードウェア環境を示したものである。1つの実施例において、ここで説明される方法は、コンピュータ装置100で実施され得る。コンピュータ装置100は、パーソナルコンピュータ、サーバ、個人情報端末(PDA)、コンピュータタブレット、セットトップボックス、ゲームのコンソール、携帯電話、ワークステーション、又は他のコンピュータ装置である場合がある。コンピュータ装置100は、プロセッサ110と、メモリ112と、ストレージ装置114と、他の装置を有し、その全てがバス118に結合される。簡潔にするため、ここで説明されるときに1つのみのバスが描かれているが、例えばデータバスや、命令バスや、周辺構成要素相互接続(PCI)及びグラフィック専用高速ポート(AGP)のような周辺装置バス等を含む複数のバスがコンピュータ装置100に含まれることもある。
【0009】
一般的に、プロセッサがソフトウェアプログラムを実行する場合、それはストレージ装置114から検索され得る。プロセッサ110が特定のソフトウェアプログラムを実行し、データ及び/又は命令がプロセッサ内のキャッシュメモリにおいてプロセッサに容易に利用可能でない場合、プロセッサは、例えばストレージ装置とメインメモリのような外部チップの供給元から命令及び/又はデータがロードされることを遮って待つことがある。現在のプロセッサの速度の観点から、命令及び/又はデータがストレージ装置又はメモリから検索されることを待たなければならない場合に、プロセッサはかなりの浪費時間を有する。この浪費時間は、バスの待ち時間と、相対的に遅い装置から情報を読み取ることに備わっている待ち時間のためである。(バスの速度とメモリの速度とストレージ装置の速度は、それぞれプロセッサの速度より相当遅い。)そのような待ち時間は、数千ものクロック周期になることがある。
【0010】
先取り、パイプライン、順番通りでない処理、スクラッチモード(scratch mode)の実行、及び推測的実行を含む多様な技術は、データがメモリ又はストレージ装置から回復されるのを待つ間にプロセッサが進行することを可能にすることは、周知である。前記技術の全ては、ここでは一般的に推測的処理と称される。データがロードされ、又はそうでない場合はメモリ112とストレージ装置144から検索されることを待つ間に、プロセッサ110が推測的に命令を実行する場合、信頼性のないSValに基づいて、多様なデータ値が処理され、分岐が行われ、他の実行が行われる。SValに基づく、又はそうでない場合はSValを含む命令の浪費される実行を軽減するために、ここで説明される方法によると、SValタグが、レジスタ、フラグ、プレディケイト(predicate)、及びプロセッサ110のようなプロセッサ内の他のデータの位置に加えられる。
【0011】
1つの実施例において、プロセッサの各データの保存位置が単一のビットの形式のSValタグで増加され得る。この実施例において、それぞれのレジスタやプレディケイト(predicate)やフラグ等は、SValタグビットと呼ばれる付加された追加ビットを有することがある。ビットがゼロ(0)に設定されている場合、マークを付けられた/関連付けられたデータは信頼性のある値又はRValである。他の実施例において、1のビット値が信頼性の有る値を示し、ゼロ(0)のビット値がスクラッチ値を示すように、SValタグビットの値がその代わりに常に反対の値に設定され得ることがわかる。1つの実施例において、プレディケイト(predicate)とフラグはまた、同様の関連付けられたSValタグを有することがある。1つの実施例において、スクラッチ値のオペランドを有する命令がプレディケイト(predicate)又はフラグのいずれかに書き込むと、フラグ又はプレディケイト(predicate)に関連付けられたSValタグは1に設定される。SValタグを備えたフラグ又はプレディケイト(predicate)を使用して分岐が解決されると、分岐の計算結果が無視され、分岐予測ユニットにより分岐の方向が判断される。更に、命令は、SValタグビットと称される単一のビットの形式のSValタグで増加され得る。この実施例において、SValビットが1に設定されている場合、関連付けられた命令がスクラッチ値を作り、SValビットがゼロ(0)に設定されている場合、関連付けられた命令が信頼性のある値を作る。他の実施例において、それぞれのレジスタやプレディケイト(predicate)やフラグや命令等に関連付けられたSValタグは2以上のビットの大きさを有することがある。
【0012】
図1Bは、ここで説明されるシステムと方法によるSValタグを有するプロセッサの実施例のいくつかの内部構成を示したものである。1つの実施例において、プロセッサ110は、多様なレジスタ130を有することがあり、そのそれぞれがレジスタデータ132とレジスタSValタグ134とを有する。SValに基づく命令がレジスタに書き込まれるデータを作る毎に、レジスタのSValタグが例えば1に設定される。多様な実施例において、SValタグは、単一のビット、2ビット、又はそれより大きいエンティティであることがある。少ない数のビットがSValに割り当てられるほど、プロセッサのダイがSValタグに対応するために必要な空間がより少なくなり、結果として生じるプロセッサがより効率的になることがわかる。プロセッサ110はまた、複数のフラグデータ141がフラグデータ141のそれぞれのフラグに対応する複数のフラグSValタグ142によって増加されるフラグを含むことがある。同様に、プレディケイト(predicate)144は、プレディケイト(predicate)データ145及び対応するSValタグ146を有する。更に、プロセッサ110は、プレディケイト(predicate)予測ユニット148や、分岐予測ユニット(BPU)150や、変換索引バッファ(TLB)152や、実行ユニット154や、オンチップキャッシュ156や、再順序バッファ158のような周知の構成要素を有する。実行ユニット152は、単独又は複数で現れる加算器、浮動小数点乗加算器、及び他の実行ユニットであることがある。プロセッサ110は、他の周知の構成要素と複数の図示された構成要素を有することがあり、それはここで説明される本発明の詳細をあいまいにすることを回避するために示されていない。例えば、プロセッサは2つ以上のオンチップのメモリキャッシュを有することがある。
【0013】
プロセッサ内のSValタグの追加を利用するために、プロセッサの内部実行エンジン160は、ここで説明される方法を実施するように書き込まれることがある。実行エンジンは、配線によるロジックを有するハードウェアの構成要素として、又はプログラムされたコンピュータの構成要素とカスタムのハードウェアの構成要素の何らかの組み合わせにより、プロセッサ内に具体化され得る。他の実施例において、実行エンジンは、機械読取可能媒体上の機械読取形式の命令又はマイクロコードとして保存され、プロセッサ110に転送されることがある。機械読取可能媒体には、読取専用メモリ(ROM)装置、ランダムアクセスメモリ(RAM)装置、消去可能プログラム可能読取専用メモリ(EPROM)装置、電気的消去可能読取専用メモリ(EEPROM)装置、ハードディスクドライブのような磁気ディスクストレージ媒体、読取専用コンパクトディスクメモリ(CD−ROM)のような光学ストレージ媒体、フラッシュメモリ装置等が含まれ、それはローカルで結合され、又は遠隔からアクセス可能であり、電子的、光学的、音響的、又は他の形式の伝達信号(例えば搬送波、赤外線信号、デジタル信号等)を介して利用可能であることがあり、命令やマイクロコード等を保存するのに適した何らかの他の形式の機械読取可能媒体であることがある。
【0014】
図2Aは、ここで説明されるシステムと方法によるSValタグを有し、IntelのIA−32アーキテクチャに準拠するプロセッサの実施例を示したものである。1つの実施例において、SValタグは、IA−32として知られる32ビットのIntelのアーキテクチャに準拠するプロセッサ内のレジスタ、フラグ、及び他の適切なデータストレージ領域を増加することがある。IA−32に関する更なる情報については、IA−32 Intelアーキテクチャ・ソフトウェア開発者用マニュアル、改訂2(I−32 Intel Architecture Software Developer’s Manual, Rev.2)(2001年2月)を参照のこと。1つの実施例において、プロセッサ200は、対応する多目的レジスタのSVal212により増加した多目的レジスタ210を有することがある。更に、セグメントレジスタ214は、セグメントレジスタのSValタグ216により増加されることがある。更に、Eフラグ220がEフラグのSValタグ222により増加されることがある。プロセッサ200に示されている通り、それぞれのレジスタとそれぞれのフラグに対応するそれぞれのSValタグは、単一のビットであることがある。他の実施例において、SValタグは2ビット又はそれより大きいことがある。
【0015】
図2Bは、ここで説明されるシステムと方法によるSValタグを有し、IntelのIA−64アーキテクチャに準拠するプロセッサの実施例を示したものである。1つの実施例において、SValタグは、IA−64として知られるIntelの64ビットアーキテクチャに準拠するプロセッサ内の浮動小数点レジスタ、分岐レジスタ、データ並びに多目的レジスタ、プレディケイト(predicate)、フラグ、及び他の内部データレポジトリを含むそれぞれの適切なレジストリに追加されることがある。IA−64アーキテクチャに関する更なる情報については、カリフォルニア州サンタクララのインテル社から利用可能なIA−64 Intelアーキテクチャ・ソフトウェア開発者用マニュアル、改訂1.1(I−64 Intel Architecture Software Developer’s Manual, Rev.1.1)(2000年7月)を参照のこと。この実施例において、汎用レジスタ262は、汎用レジスタのSValタグ264により増加されることがあり、浮動小数点レジスタ266は、浮動小数点のSValタグ268により増加されることがあり、プレディケイト(predicate)270は、プレディケイト(predicate)のSValタグ272により増加されることがあり、分岐レジスタ274は、分岐レジスタのSValタグ276により増加されることがあり、アプリケーションレジスタ280は、アプリケーションレジスタのSValタグ282により増加されることがある。プロセッサ260に示されている通り、それぞれのSValタグは1ビットであることがある。他の実施例において、SValタグは、2ビット又は2ビットより大きいサイズであることがある。
【0016】
図3は、ここで説明される方法の実施例による命令とそのオペランドを処理する際に行われる動作の一般的なフローを示したものである。この動作フローは、プロセッサにより、特にプロセッサ内の実行エンジンにより達成され得る。ブロック310に示される通り、現在の命令が取得される。1つの実施例において、新しい命令がパイプラインに呼び出されると、命令のSValタグが最初にゼロ(0)に設定される。ブロック320に示される通り、SValの存在について命令のオペランドが検査される。命令のオペランドが認識されると、命令のSValタグは、そのオペランドのSValタグの値に従って設定される。命令のオペランドのSValタグの全てが1に設定されていない場合、その命令のSValタグは初期値のゼロ(0)を保持する。現在の命令の少なくとも1つのオペランドがSValである場合、ブロック324に示される通り、そのSValタグが宛先に伝達され、それ故に宛先のSValタグが1に設定される。少なくとも1つの命令のオペランドのSValタグがSValである場合、すなわちそれが1に設定されている場合、ブロック330に示される通り、その命令に関連付けられたSValタグが1に設定される。ブロック340に示される通り、少なくとも1つの命令のオペランドが1に設定されたSValを有する場合、命令の検査が迂回される。ブロック350に示される通り、命令が迂回されたかどうかを判断する検査が行われることがある。命令が迂回されていない場合、ブロック360に示される通り、命令が実行される。命令の実行が迂回されている場合、ブロック370に示される通り、次の命令が取得され、ブロック320において動作フローが継続する。同様に、ブロック360に示される通り、現在の命令が実行された後に、ブロック370に示される通り、次の命令が取得され、ブロック320において動作フローが継続する。命令を実行する際に、命令のSValタグの値が、宛先のレジスタ(群)にコピーされる。
【0017】
命令がロードであり、それがキャッシュをミスした場合、その宛先のSValタグが1に設定される。命令がロードであり、それがキャッシュをヒットしたが、その供給元のオペランドの1つのSValタグが1に設定されている場合、その宛先のレジスタのSValタグが1に設定される。即座に利用可能なオペランドを備えた命令のSValタグは、ゼロ(0)に設定される。1つの実施例において、推測的実行の間に保存バッファが使用される場合、SValタグが保存バッファを通じて伝達されることがある。この実施例において、保存バッファは、1ビットの形式のSValタグで増加されることがある。保存命令が保存バッファに書き込むと、その命令のSValタグが保存バッファに伝達される。ロード命令が保存バッファから読み取ると、保存バッファのエントリーにあるSValタグが、保存バッファから検索されたデータと共にコピーされる。1つの実施例において、保存バッファへの書き込みを許可する前に、保存命令が2つの分類に区別される。保存命令の第1の分類には、アドレス生成レジスタのオペランドがスクラッチ値である保存命令が含まれる。保存命令の第2の分類には、アドレス生成レジスタのオペランドがスクラッチ値でないスクラッチ値としてマークを付けられた保存命令が含まれる。第1の分類については、宛先のアドレスが認識されていないため、SValタグが伝達されない。第2の分類については、宛先のアドレスが認識されているため、SValタグが保存バッファに伝達される。ロードは通常通り処理される。
【0018】
図4は、ここで説明される方法の実施例による推測式プロセッサにおける命令を処理する際に行われる動作フローを示したものである。命令のSValタグは、その命令がパイプラインで処理され、推測式プロセッサのスケジューラにより処理される方法に影響を与える。SValタグがゼロ(0)に設定されているか、又はその他の値に設定されているかに応じて、命令は異なって処理される。1つの実施例において、配線の設計者はSValタグを伝達するかどうかを選択することがある。他の実施例において、伝達された値が信頼性のないものであることが高度に見込まれるまで、SValタグが伝達されない。1つの実施例において、ブロック410に示される通り、命令が取得された後に、ブロック412に示される通り、その命令のSValタグが1に設定されているかどうかを判断するために検査が行われる。命令のSValタグが1に設定されていない場合、すなわちゼロ(0)に設定されている場合、ブロック414に示される通り、命令が通常通り処理される。そうでない場合、ブロック420に示される通り、動作フローが命令の種類に基づいて進行する。ブロック430に示される通り、命令がロード命令である場合、ブロック432に示される通り、命令が取り消され、SValタグが宛先に伝達される。
【0019】
ブロック440に示される通り、命令が保存である場合、ブロック442に示される通り、それがSValであるかどうかを判断するために宛先アドレスが検査される。宛先アドレスがSValである場合、命令(すなわち保存)が取り消される。保存値(すなわちデータ)がSValから引き出されると、ブロック446に示される通り、SValタグが宛先に伝達される。アドレスと前記値の双方がSValでない場合、保存が通常通り実行される。1つの実施例において、ブロック480に示される通り、命令が算術演算である場合、ブロック482に示される通り、それが取り消され、SValタグが宛先に伝達されない。
【0020】
ブロック460に示される通り、命令が直接分岐である場合、直接分岐が依存するフラグ又はレジスタがSValであるときに、ブロック462に示される通り、分岐の目的物が使用されず、分岐の指示が分岐予測器から導き出される。すなわち、分岐が依存するフラグ又はプレディケイト(predicate)が、分岐予測器から導き出された値で書き込まれる。同様に、分岐が依存するフラグ又はプレディケイト(predicate)の補足を表すフラグとプレディケイト(predicate)が、分岐予測器から導き出された値で書き込まれる。例えば、得られた“等しくない場合の分岐”(BNE)のプレディケイト(predicate)は、等しくないフラグ、又は真に設定される状態を結果として生じ、等しいフラグ又はプレディケイト(predicate)に偽が書き込まれることがある。フラグ又はプレディケイト(predicate)の値が分岐予測器から導き出されると、フラグ又はプレディケイト(predicate)のSValタグがクリアされ、以後の分岐が分岐予測器に従う。ブロック450に示される通り、命令が間接分岐である場合、ブロック452に示される通り、分岐の目的物が分岐予測ユニットから取得される。
【0021】
ブロック470に示される通り、命令が条件付である場合、その命令に関連付けられたプレディケイト(predicate)とフラグは、分岐予測ユニットに従うことで解決される。しかし、プレディケイト(predicate)又はフラグが認識されていない場合、条件付の動作の宛先とプレディケイト(predicate)の命令がSValとしてマークを付けられる。すなわち、ブロック472に示される通り、適切なプレディケイト(predicate)とフラグが認識されているかどうかを判断するために検査が行われる。それが認識されていない場合、ブロック476に示される通り、それにもかかわらず値がプレディケイト(predicate)の予測器及び/又は分岐予測器に従う。このように、信頼性の疑わしいプレディケイト(predicate)に基づく経路が除外され、プレディケイト(predicate)の予測器及び/又は分岐予測器に基づく更に信頼性のある経路選択が用いられる。1つの実施例において、プレディケイト(predicate)又は条件付が1に設定されているSValタグを有する場合に、SValタグが宛先に伝達されるように、プレディケイト(predicate)と条件付が供給元のオペランドと同様の方法で処理されることがある。
【0022】
1つの実施例において、単にSValとRValとしてデータと命令にマークを付けることを用いるのではなく、追加のマークが用いられることがある。1つの実施例において、ゼロ(0)の値を有するSValタグがRValであり、1の値を有するSValタグがSValであり、2の値を有するSValタグがPValであるように、プレディケイト(predicate)の値又はPValが追加されることがある。このように、値の予測、又は概算の正確な値に対する正確な値の損失表示が、スクラッチ値の代わりに利用されることがある。この実施例において、PValタグのある命令の実行は、予測値で完了されることがある。このように、プロセッサは、周知及び/又は独自の内部アルゴリズム、ロジック、機構、及び他の技術に基づいてどのように進行するかについて、インテリジェントな選択を行うことがある。
【0023】
図5は、ここで説明されるシステムと方法の実施例による状態機械を示したものである。1つの実施例において、プロセッサは、状態機械に従って前述の命令のタグを実施し得る。どの命令511が次に実行されるかを分岐予測器510が選択した後に、ブロック512に示される通り、命令がデコードされる。ブロック514に示される通り、次に命令と関連付けられたSValタグ518により必要なデータを含むレジスタ516が読み取られる。レジスタが、関連付けられたレジスタのデータがスクラッチ値又は信頼性のない値であることを示すSValタグを有する場合、経路522を介して示される通り、SValタグが、現在の命令の何らかの宛先のSValタグに伝達される。前述の通り、SValタグはまた、プレディケイト(predicate)やフラグ等を通じて伝達されることがある。更に、SValタグは、命令自体に伝達される。
【0024】
経路524を介して示される通り、現在の命令に対する少なくとも1つのオペランドがSValタグによって示されるSValである場合、ブロック530に示される通り、現在の命令は、特別にSValの実行方法に従って実行される。すなわち、命令の実行はほとんどの場合に取り消される。オペランドのレジスタが、SValタグによりオペランドがRValであることを示すと、ブロック532に示される通り、命令の実行が進行する。ブロック532の命令の実行の間に分岐が行われなければならず、その分岐がSValから生じている場合、分岐予測誤り信号534が分岐予測器に伝えられる。命令の実行により、ブロック540に示される通り、レジスタのライトバック(writeback)ユニットを介して命令の結果がレジスタ516に書き戻されることがある。
【0025】
前述の明細書において、本発明が、その特定の実施例を参照して説明された。特許請求の範囲に示される本発明のより広い要旨と範囲を逸脱することなく、多様な改良と変更が行われ得ることは明らかである。従って、明細書と図面は、限定的な意味ではなく、説明的な意味と考えられる。
【図面の簡単な説明】
【0026】
【図1A】ここで説明されるシステムと方法が実施され得るハードウェア環境を示したものである。
【図1B】ここで説明されるシステムと方法によるSValタグを有するプロセッサの実施例のいくつかの内部構成要素を示したものである。
【図2A】ここで説明されるシステムと方法によるSValタグを有し、IntelのIA−32アーキテクチャに準拠するプロセッサの実施例を示したものである。
【図2B−1】ここで説明されるシステムと方法によるSValタグを有し、IntelのIA−32アーキテクチャに準拠するプロセッサの実施例を示したものである。
【図2B−2】ここで説明されるシステムと方法によるSValタグを有し、IntelのIA−32アーキテクチャに準拠するプロセッサの実施例を示したものである。
【図2B−3】ここで説明されるシステムと方法によるSValタグを有し、IntelのIA−32アーキテクチャに準拠するプロセッサの実施例を示したものである。
【図3】ここで説明される方法の実施例による命令とそのオペランドを処理する際に行われる動作の一般的なフローを示したものである。
【図4】ここで説明される方法の実施例による推測式プロセッサにおける命令を処理する際に行われる動作フローを示したものである。
【図5】ここで説明されるシステムと方法の1つの実施例による状態機械を示したものである。
Claims (30)
- プロセッサの推測的実行の間に生成されたスクラッチ値を識別し、
データ領域がスクラッチ値を保持していることを示すために、前記プロセッサの少なくとも1つのデータ領域に関連付けられた少なくとも1つのタグを設定することを有する方法。 - 請求項1に記載の方法であって、
設定することが、宛先としてレジスタを有する命令がキャッシュミスを生じる場合に、レジスタのタグを設定することからなる方法。 - 請求項1に記載の方法であって、
複数の命令のうち、オペランドがスクラッチ値であることを示す関連付けられたタグを備えた少なくとも1つのオペランドを有する命令の実行を迂回することを更に有する方法。 - 請求項1に記載の方法であって、
レジスタがスクラッチ値であるデータを含むことを示す関連付けられたタグを備えたレジスタを少なくとも1つのオペランドとして有する算術命令の実行を迂回し、
レジスタがスクラッチ値であるデータを含むことを示す関連付けられたタグを有するレジスタから導き出された値を有する保存命令の実行を迂回することを更に有する方法。 - 請求項1に記載の方法であって、
分岐予測器を利用し、データがスクラッチ値であることを示すタグを有するデータに基づいて分岐命令により作られた計算済みの分岐結果を無効にすることを更に有する方法。 - 請求項1に記載の方法であって、
命令がスクラッチ値を有するかどうかを示すタグで、パイプラインのそれぞれの命令にマークを付けることを更に有する方法。 - 請求項1に記載の方法であって、
アドレス生成レジスタがスクラッチ値を保持していることをアドレス生成レジスタが示さない場合に、保存バッファを通じて前記タグを伝達することを更に有する方法。 - レジスタに保存されたデータがスクラッチ値を保持しているかどうかを示す対応する複数のレジスタのタグを有する複数のレジスタと、
フラグにより反映されたデータがスクラッチ値に基づくものであるかどうかを示す対応する複数のフラグのタグを有する複数のフラグと、
プレディケイト(predicate)により反映されたデータがスクラッチ値に基づくものであるかどうかを示す対応する複数のプレディケイト(predicate)のタグを有する複数のプレディケイト(predicate)と
を有するプロセッサ。 - 請求項8に記載のプロセッサであって、
複数の命令を有する命令のセットを有し、
それぞれの命令が、命令がスクラッチ値を有するかどうかを示す命令のタグにより増加されたプロセッサ。 - 請求項9に記載のプロセッサであって、
前記レジスタのタグと、フラグのタグと、プレディケイト(predicate)のタグと、命令のタグが、1ビットのサイズを有するプロセッサ。 - 請求項9に記載のプロセッサであって、
前記レジスタのタグと、フラグのタグと、プレディケイト(predicate)のタグと、命令のタグが、少なくとも2ビットのサイズを有するプロセッサ。 - 少なくとも2つの算術ユニットと、
変換索引バッファと、
分岐予測ユニットと
実行されると、次の:
プロセッサの推測的実行の間に生成されたスクラッチ値を識別することと、
データ領域がスクラッチ値を保持していることを示すために、前記プロセッサの少なくとも1つのデータ領域に関連付けられた少なくとも1つのタグを設定することと
を有する動作を前記プロセッサに実行させる複数の命令を有する実行エンジンと
を有するプロセッサ。 - 請求項12に記載のプロセッサであって、
設定することが、宛先としてレジスタを有する命令がキャッシュミスを生じる場合に、レジスタのタグを設定することからなるプロセッサ。 - 請求項12に記載のプロセッサであって、
前記実行エンジンが、実行されると、
複数の命令のうち、オペランドがスクラッチ値であることを示す関連付けられたタグを備えた少なくとも1つのオペランドを有する命令の実行を迂回すること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有するプロセッサ。 - 請求項12に記載のプロセッサであって、
前記実行エンジンが、実行されると、
レジスタがスクラッチ値であるデータを含むことを示す関連付けられたタグを備えたレジスタを少なくとも1つのオペランドとして有する算術命令の実行を迂回し、
レジスタがスクラッチ値であるデータを含むことを示す関連付けられたタグを有するレジスタから導き出された値を有する保存命令の実行を迂回すること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有するプロセッサ。 - 請求項12に記載のプロセッサであって、
前記実行エンジンが、実行されると、
分岐予測器を利用し、データがスクラッチ値であることを示すタグを有するデータに基づいて分岐命令により作られた計算済みの分岐結果を無効にすること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有するプロセッサ。 - 請求項12に記載のプロセッサであって、
前記実行エンジンが、実行されると、
命令がスクラッチ値を有するかどうかを示すタグで、パイプラインのそれぞれの命令にマークを付けること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有するプロセッサ。 - 請求項12に記載のプロセッサであって、
前記実行エンジンが、実行されると、
アドレス生成レジスタがスクラッチ値を保持していることをアドレス生成レジスタが示さない場合に、保存バッファを通じて前記タグを伝達すること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有するプロセッサ。 - メモリとストレージ装置とプロセッサとを有し、それぞれバスに結合されたシステムであって、
前記プロセッサが、前記プロセッサにより実行されると、次の:
プロセッサの推測的実行の間に生成されたスクラッチ値を識別することと、
データ領域がスクラッチ値を保持していることを示すために、前記プロセッサの少なくとも1つのデータ領域に関連付けられた少なくとも1つのタグを設定することと
を有する動作を前記プロセッサに実行させる命令を有する実行エンジンを有するシステム。 - 請求項19に記載のシステムであって、
設定することが、宛先としてレジスタを有する命令がキャッシュミスを生じる場合に、レジスタのタグを設定することからなるシステム。 - 請求項19に記載のシステムであって、
前記実行エンジンが、実行されると、
複数の命令のうち、オペランドがスクラッチ値であることを示す関連付けられたタグを備えた少なくとも1つのオペランドを有する命令の実行を迂回すること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有するシステム。 - 請求項19に記載のシステムであって、
前記実行エンジンが、実行されると、
レジスタがスクラッチ値であるデータを含むことを示す関連付けられたタグを備えたレジスタを少なくとも1つのオペランドとして有する算術命令の実行を迂回し、
レジスタがスクラッチ値であるデータを含むことを示す関連付けられたタグを有するレジスタから導き出された値を有する保存命令の実行を迂回すること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有するシステム。 - 請求項19に記載のシステムであって、
前記実行エンジンが、実行されると、
分岐予測器を利用し、データがスクラッチ値であることを示すタグを有するデータに基づいて分岐命令により作られた計算済みの分岐結果を無効にすること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有するシステム。 - 請求項19に記載のシステムであって、
前記実行エンジンが、実行されると、
命令がスクラッチ値を有するかどうかを示すタグで、パイプラインのそれぞれの命令にマークを付けること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有するシステム。 - 請求項19に記載のシステムであって、
前記実行エンジンが、実行されると、
アドレス生成レジスタがスクラッチ値を保持していることをアドレス生成レジスタが示さない場合に、保存バッファを通じて前記タグを伝達すること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有するシステム。 - プロセッサにより実行されると、次の:
プロセッサの推測的実行の間に生成されたスクラッチ値を識別することと、
データ領域がスクラッチ値を保持していることを示すために、前記プロセッサの少なくとも1つのデータ領域に関連付けられた少なくとも1つのタグを設定することと
を有する動作を前記プロセッサに実行させる保存された命令を有する機械読取可能媒体。 - 請求項26に記載の機械読取可能媒体であって、
設定することが、宛先としてレジスタを有する命令がキャッシュミスを生じる場合に、レジスタのタグを設定することからなる機械読取可能媒体。 - 請求項26に記載の機械読取可能媒体であって、
実行されると、
複数の命令のうち、オペランドがスクラッチ値であることを示す関連付けられたタグを備えた少なくとも1つのオペランドを有する命令の実行を迂回すること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有する機械読取可能媒体。 - 請求項26に記載の機械読取可能媒体であって、
実行されると、
レジスタがスクラッチ値であるデータを含むことを示す関連付けられたタグを備えたレジスタを少なくとも1つのオペランドとして有する算術命令の実行を迂回し、
レジスタがスクラッチ値であるデータを含むことを示す関連付けられたタグを有するレジスタから導き出された値を有する保存命令の実行を迂回すること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有する機械読取可能媒体。 - 請求項26に記載の機械読取可能媒体であって、
実行されると、
分岐予測器を利用し、データがスクラッチ値であることを示すタグを有するデータに基づいて分岐命令により作られた計算済みの分岐結果を無効にすること
を有する更なる動作を前記プロセッサに実行させる更なる命令を有する機械読取可能媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/992,881 US7114059B2 (en) | 2001-11-05 | 2001-11-05 | System and method to bypass execution of instructions involving unreliable data during speculative execution |
PCT/US2002/034290 WO2003040916A1 (en) | 2001-11-05 | 2002-10-25 | System and method to reduce execution of instructions involving unreliable data in a speculative processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005508546A true JP2005508546A (ja) | 2005-03-31 |
JP3810407B2 JP3810407B2 (ja) | 2006-08-16 |
Family
ID=25538847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003542475A Expired - Fee Related JP3810407B2 (ja) | 2001-11-05 | 2002-10-25 | 推測式プロセッサにおいて信頼性のないデータを含む命令の実行を削減するシステム及び方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7114059B2 (ja) |
EP (1) | EP1442364B1 (ja) |
JP (1) | JP3810407B2 (ja) |
CN (1) | CN100541423C (ja) |
AT (1) | ATE396450T1 (ja) |
DE (1) | DE60226763D1 (ja) |
TW (1) | TW589576B (ja) |
WO (1) | WO2003040916A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013500539A (ja) * | 2009-09-09 | 2013-01-07 | ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム | 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 |
JP2013502657A (ja) * | 2009-08-19 | 2013-01-24 | クアルコム,インコーポレイテッド | 条件付き非ブランチング命令の非実行を予測するための方法および機器 |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0215029D0 (en) * | 2002-06-28 | 2002-08-07 | Critical Blue Ltd | Strand based execution |
US7269719B2 (en) * | 2002-10-30 | 2007-09-11 | Stmicroelectronics, Inc. | Predicated execution using operand predicates |
EP1576466A2 (en) * | 2002-12-24 | 2005-09-21 | Sun Microsystems, Inc. | Generating prefetches by speculatively executing code through hardware scout threading |
US7496732B2 (en) * | 2003-12-17 | 2009-02-24 | Intel Corporation | Method and apparatus for results speculation under run-ahead execution |
US7490229B2 (en) * | 2004-03-30 | 2009-02-10 | Sun Microsystems, Inc. | Storing results of resolvable branches during speculative execution to predict branches during non-speculative execution |
US20050223201A1 (en) * | 2004-03-30 | 2005-10-06 | Marc Tremblay | Facilitating rapid progress while speculatively executing code in scout mode |
US7257700B2 (en) * | 2004-06-03 | 2007-08-14 | Sun Microsystems, Inc. | Avoiding register RAW hazards when returning from speculative execution |
US20060090061A1 (en) * | 2004-09-30 | 2006-04-27 | Haitham Akkary | Continual flow processor pipeline |
US7644258B2 (en) * | 2005-08-29 | 2010-01-05 | Searete, Llc | Hybrid branch predictor using component predictors each having confidence and override signals |
JP2009230610A (ja) * | 2008-03-25 | 2009-10-08 | Kawai Musical Instr Mfg Co Ltd | 命令処理装置及び命令処理方法。 |
US7664942B1 (en) * | 2008-08-25 | 2010-02-16 | Sun Microsystems, Inc. | Recovering a subordinate strand from a branch misprediction using state information from a primary strand |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
WO2011159309A1 (en) * | 2010-06-18 | 2011-12-22 | The Board Of Regents Of The University Of Texas System | Combined branch target and predicate prediction |
US9798873B2 (en) * | 2011-08-04 | 2017-10-24 | Elwha Llc | Processor operable to ensure code integrity |
US9471373B2 (en) | 2011-09-24 | 2016-10-18 | Elwha Llc | Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority |
US9558034B2 (en) | 2011-07-19 | 2017-01-31 | Elwha Llc | Entitlement vector for managing resource allocation |
US9298918B2 (en) | 2011-11-30 | 2016-03-29 | Elwha Llc | Taint injection and tracking |
US9465657B2 (en) | 2011-07-19 | 2016-10-11 | Elwha Llc | Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority |
US9460290B2 (en) | 2011-07-19 | 2016-10-04 | Elwha Llc | Conditional security response using taint vector monitoring |
US9575903B2 (en) | 2011-08-04 | 2017-02-21 | Elwha Llc | Security perimeter |
US9170843B2 (en) | 2011-09-24 | 2015-10-27 | Elwha Llc | Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement |
US9443085B2 (en) | 2011-07-19 | 2016-09-13 | Elwha Llc | Intrusion detection using taint accumulation |
US9223710B2 (en) | 2013-03-16 | 2015-12-29 | Intel Corporation | Read-write partitioning of cache memory |
US10061583B2 (en) * | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US9916164B2 (en) * | 2015-06-11 | 2018-03-13 | Intel Corporation | Methods and apparatus to optimize instructions for execution by a processor |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US10108549B2 (en) | 2015-09-23 | 2018-10-23 | Intel Corporation | Method and apparatus for pre-fetching data in a system having a multi-level system memory |
US10261901B2 (en) | 2015-09-25 | 2019-04-16 | Intel Corporation | Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory |
US10095637B2 (en) * | 2016-09-15 | 2018-10-09 | Advanced Micro Devices, Inc. | Speculative retirement of post-lock instructions |
US10628157B2 (en) * | 2017-04-21 | 2020-04-21 | Arm Limited | Early predicate look-up |
US10956157B1 (en) * | 2018-03-06 | 2021-03-23 | Advanced Micro Devices, Inc. | Taint protection during speculative execution |
US11741196B2 (en) | 2018-11-15 | 2023-08-29 | The Research Foundation For The State University Of New York | Detecting and preventing exploits of software vulnerability using instruction tags |
GB2580426B (en) * | 2019-01-11 | 2021-06-30 | Advanced Risc Mach Ltd | Controlling use of data determined by a resolve-pending speculative operation |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02306341A (ja) | 1989-02-03 | 1990-12-19 | Nec Corp | マイクロプロセッサ |
US5487156A (en) | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5465342A (en) | 1992-12-22 | 1995-11-07 | International Business Machines Corporation | Dynamically adaptive set associativity for cache memories |
US5428807A (en) | 1993-06-17 | 1995-06-27 | Digital Equipment Corporation | Method and apparatus for propagating exception conditions of a computer system |
EP0651321B1 (en) * | 1993-10-29 | 2001-11-14 | Advanced Micro Devices, Inc. | Superscalar microprocessors |
US5799179A (en) * | 1995-01-24 | 1998-08-25 | International Business Machines Corporation | Handling of exceptions in speculative instructions |
US5748936A (en) | 1996-05-30 | 1998-05-05 | Hewlett-Packard Company | Method and system for supporting speculative execution using a speculative look-aside table |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US5966544A (en) | 1996-11-13 | 1999-10-12 | Intel Corporation | Data speculatable processor having reply architecture |
US5987595A (en) * | 1997-11-25 | 1999-11-16 | Intel Corporation | Method and apparatus for predicting when load instructions can be executed out-of order |
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 |
US6490653B1 (en) | 1999-06-03 | 2002-12-03 | International Business Machines Corporation | Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system |
-
2001
- 2001-11-05 US US09/992,881 patent/US7114059B2/en not_active Expired - Fee Related
-
2002
- 2002-10-25 AT AT02776309T patent/ATE396450T1/de not_active IP Right Cessation
- 2002-10-25 EP EP02776309A patent/EP1442364B1/en not_active Expired - Lifetime
- 2002-10-25 JP JP2003542475A patent/JP3810407B2/ja not_active Expired - Fee Related
- 2002-10-25 DE DE60226763T patent/DE60226763D1/de not_active Expired - Lifetime
- 2002-10-25 CN CNB028218752A patent/CN100541423C/zh not_active Expired - Fee Related
- 2002-10-25 WO PCT/US2002/034290 patent/WO2003040916A1/en active Application Filing
- 2002-10-25 TW TW091125042A patent/TW589576B/zh not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013502657A (ja) * | 2009-08-19 | 2013-01-24 | クアルコム,インコーポレイテッド | 条件付き非ブランチング命令の非実行を予測するための方法および機器 |
JP2015130206A (ja) * | 2009-08-19 | 2015-07-16 | クアルコム,インコーポレイテッド | 条件付き非ブランチング命令の非実行を予測するための方法および機器 |
JP2013500539A (ja) * | 2009-09-09 | 2013-01-07 | ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム | 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 |
Also Published As
Publication number | Publication date |
---|---|
US7114059B2 (en) | 2006-09-26 |
ATE396450T1 (de) | 2008-06-15 |
US20030088759A1 (en) | 2003-05-08 |
JP3810407B2 (ja) | 2006-08-16 |
CN100541423C (zh) | 2009-09-16 |
EP1442364B1 (en) | 2008-05-21 |
EP1442364A1 (en) | 2004-08-04 |
CN1582429A (zh) | 2005-02-16 |
TW589576B (en) | 2004-06-01 |
WO2003040916A1 (en) | 2003-05-15 |
DE60226763D1 (de) | 2008-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3810407B2 (ja) | 推測式プロセッサにおいて信頼性のないデータを含む命令の実行を削減するシステム及び方法 | |
US5860107A (en) | Processor and method for store gathering through merged store operations | |
US6052769A (en) | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction | |
US6173393B1 (en) | System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data | |
US6065103A (en) | Speculative store buffer | |
US6857061B1 (en) | Method and apparatus for obtaining a scalar value directly from a vector register | |
US7577825B2 (en) | Method for data validity tracking to determine fast or slow mode processing at a reservation station | |
US7437543B2 (en) | Reducing the fetch time of target instructions of a predicted taken branch instruction | |
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
US5694565A (en) | Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions | |
KR100900364B1 (ko) | 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체 | |
US7769986B2 (en) | Method and apparatus for register renaming | |
US20080091928A1 (en) | Branch lookahead prefetch for microprocessors | |
US20040215936A1 (en) | Method and circuit for using a single rename array in a simultaneous multithread system | |
KR19990072271A (ko) | 고성능의추론적인오정렬로드연산 | |
US6192461B1 (en) | Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle | |
JP2002527798A (ja) | ストアアドレス生成およびユニバーサルな依存性ベクトルに基づくロードブロックのためのメカニズム | |
JP3751402B2 (ja) | データ精度モード表示器を備えたマルチパイプライン・マイクロプロセッサ | |
US6134645A (en) | Instruction completion logic distributed among execution units for improving completion efficiency | |
US7302553B2 (en) | Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue | |
US6266767B1 (en) | Apparatus and method for facilitating out-of-order execution of load instructions | |
US5678016A (en) | Processor and method for managing execution of an instruction which determine subsequent to dispatch if an instruction is subject to serialization | |
US6442675B1 (en) | Compressed string and multiple generation engine | |
US5732005A (en) | Single-precision, floating-point register array for floating-point units performing double-precision operations by emulation | |
US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060110 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060410 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060516 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060523 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100602 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |