JP4220473B2 - 制御スペキュレーションの性能を向上するメカニズム - Google Patents

制御スペキュレーションの性能を向上するメカニズム Download PDF

Info

Publication number
JP4220473B2
JP4220473B2 JP2004563645A JP2004563645A JP4220473B2 JP 4220473 B2 JP4220473 B2 JP 4220473B2 JP 2004563645 A JP2004563645 A JP 2004563645A JP 2004563645 A JP2004563645 A JP 2004563645A JP 4220473 B2 JP4220473 B2 JP 4220473B2
Authority
JP
Japan
Prior art keywords
cache
speculative
speculative load
delay
register
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.)
Expired - Fee Related
Application number
JP2004563645A
Other languages
English (en)
Other versions
JP2006511867A (ja
JP2006511867A5 (ja
Inventor
カインズ,アラン
ラッド,ケヴィン
ザヒル,アクメッド,ルミ
モーリス,デール
ロス,ジョナサン
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2006511867A publication Critical patent/JP2006511867A/ja
Publication of JP2006511867A5 publication Critical patent/JP2006511867A5/ja
Application granted granted Critical
Publication of JP4220473B2 publication Critical patent/JP4220473B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/3842Speculative 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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

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)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明はコンピューティングシステムに関し、特にコンピューティングシステムにおけるスペキュレーティブ実行をサポートするメカニズムに関する。
制御スペキュレーションは、一部の先進的コンパイラにより使用された、命令の実行をより効率的にスケジュールするための最適化方法である。この方法により、プログラムの動的制御フローが、命令が必要とされるプログラム中のポイントに来る前に、コンパイラはその命令の実行をスケジュールすることができる。命令コードシーケンス中に条件付きブランチがあると、その扱いはランタイムにならないとはっきりとは決められない。
ブランチ命令は、関連するブランチ条件の正否に応じて、2以上の実行パスの内の1つにプログラムの制御フローを移す。ランタイムにブランチ条件の正否が決まるまで、プログラムが進む実行パスは確実には決まらない。これらのパスの1つの命令は、ブランチ命令により「ガードされている(guarded)」という。制御スペキュレーションをサポートするコンパイラは、これらのパスの命令をガードしているブランチ命令に先立ち、その命令をスケジュールすることができる。
制御スペキュレーションは、一般的に、長い実行レイテンシを有する命令に使用される。制御フローよりも早く、すなわち、これらの命令を実行する必要があるかどうかを知る前に、これらの命令の実行をスケジュールすれば、その実行を他の命令の実行とオーバーラップさせることにより、そのレイテンシを緩和することができる。制御スペキュレーションがなされた命令によりトリガされた例外条件は、制御フローが実際にその命令に到達したと分かるまで、遅延される。制御スペキュレーションにより、コンパイラはより多くの命令を並行して実行することができる。制御スペキュレーションにより、コンパイラは、高度の命令レベルパラレリズム(ILP)のためにプロセッサにより提供される大きな実行リソースをよりうまく使用することができる。
この有利な点にもかかわらず、制御スペキュレーションによりマイクロアーキテクチャは複雑になり、不要かつ予期せぬ性能ロスを引き起こすことがある。例えば、一定の条件下、キャッシュでスペキュレーションロード動作がはずれたとき、スペキュレーティブロードが必要ないと決定されても、プロセッサは数十から数百のクロックサイクルを無駄にしてしまう。
制御スペキュレーションをしたコードについてのこの種のマイクロアーキテクチャイベントの頻度とインパクトは、キャッシュポリシー、ブランチ予測精度、キャッシュミスレイテンシ等の要因に依存する。これらの要因は、システムにより異なり、実行される具体的なプログラム、そのプログラムを実行するプロセッサ、プログラム命令にデータを届けるメモリヒエラルキーに依存する。この可変性により、大規模なテストと分析をしなければ制御スペキュレーションの利益を享受することは、不可能ではなくても困難になる。性能低下の可能性が大きく、その性能低下が起こる条件を予見することが難しいので、制御スペキュレーションはそれほど使用されていない。
本発明は制御スペキュレーションに関連する上記その他の問題を解決するものである。
[発明の詳細な説明]
本発明を十分に理解してもらうために多数の具体的な詳細についても説明する。しかし、当業者には、この開示の利益により、本発明はこれらの具体的な詳細がなくとも実施できることが明らかであろう。また、本発明の特徴(features)に注意を集中するため、様々な周知の方法、手続、コンポーネント、回路については説明していない。
米国特許第5,915,117号 米国特許第6,314,513号
図1は、本発明を実施するために好適なコンピューティングシステムの一実施形態を示すブロック図である。システム100は、1以上のプロセッサ110、メインメモリ180、システムロジック170、および周辺デバイス190とを含む。プロセッサ110、メインメモリ180、ペリフェラルデバイス190は、通信リンクを介してシステムロジック170と結合している。この通信リンクは、例えば、シェアードバスやポイント・ツー・ポイントリンク等である。システムロジック170は、システム100の様々なコンポーネント間のデータの転送を管理する。システムロジック170は図示したように分離したコンポーネントであってもよいし、その一部はプロセッサ110やシステムのその他のコンポーネントに組み込まれていてもよい。
開示したプロセッサ110の実施形態は、実行リソース120、1以上のレジスタファイル130、第1と第2のキャッシュ140、150、キャッシュコントローラ160を含む。キャッシュ140、150とメインメモリ180は、システム100のメモリヒエラルキーを形成する。以下の説明では、メモリヒエラルキーのコンポーネントはその応答レイテンシに従って高いまたは低いものと考える。例えば、キャッシュ140は、(高レベル)キャッシュ150よりも速くデータを返すので、低レベルキャッシュであると考える。本発明の実施形態はシステム100のコンポーネントの具体的な構成やメモリヒエラルキーの具体的な構成には限定されない。他のコンピューティングシステムは、例えば、異なるオンチップおよびオフチップ構成で、異なるコンポーネントや異なるキャッシュ数を利用してもよい。
動作中に、実行リソース120は実行しているプログラムから命令を実施する。命令はレジスタファイル130から提供されたデータ(オペランド)、またはメモリヒエラルキーの様々なコンポーネントからバイパスされたデータ(オペランド)に作用する。オペランドデータは、ロード命令およびストア命令により、それぞれレジスタファイル130に、またはレジスタファイル130から転送される。一般的なプロセッサの構成では、ロード命令はデータがキャッシュ140にあれば1または2クロックサイクルで実行することができる。ロードがキャッシュ140でミスしたとき、要求がヒエラルキー中の次のキャッシュ(例えば、図1のキャッシュ150)に送られる。一般に、要求は、データが見つかるまで、メモリヒエラルキーの次のキャッシュに転送される。要求されたデータがどのキャッシュにも格納されていなければ、メインメモリ180から提供される。
上で説明したようなメモリヒエラルキーは、使用されるであろうデータを実行リソース(例えば、キャッシュ140)により近い場所に格納するキャッシングプロトコルを利用する。例えば、ロードと、そのロードにより返されたデータを使用するアド(add)は、ロードがキャッシュ140でヒットすれば3クロックサイクルで完了する。例えば、ロードに2サイクル、アドに1サイクルである。一定の条件の下、制御スペキュレーションにより、その3クロックサイクルのレイテンシは他の命令の実行のかげに隠れてしまう。
命令シーケンス(I)と(II)は、それぞれ、スペキュレーション実行のために修正される前と後のコードサンプルを示す。どちらのコードシーケンスにも明示的には示さなかったが、ロードとアドはキャッシュからデータをロードするために必要なクロックサイクル数を反映する期間だけ離れていると仮定した。例えば、ロードがキャッシュ140からデータを返すために2クロックサイクル要するとき、コンパイラは、不必要な停止(stall)を避けるために、アドを2または3クロックサイクル後に実行するようにスケジュールする。
Figure 0004220473
シーケンス(I)について、比較命令(cmp.eq)は述語値(p1)の真偽を決定する。(p1)が真の時、ブランチ(br.cond)がされ(「TK」(taken))、制御フローはBR-TARGETにより表されるアドレスの命令に転送される。この場合、ロード(ld)は、br.condに続くアド(add)とストア(st)により、実行されない。(p1)が偽の時、ブランチはされず(「NT」(not taken))、制御フローは「失敗に終わり」ブランチに続く命令に進む。この場合、br.condに順に続くld、add、stが実行される。
命令シーケンス(II)は、制御スペキュレーションをサポートしたコンパイラにより修正されたコードサンプルである。
Figure 0004220473
コードシーケンス(II)について、ロード動作(ld.sで表す)はスペキュレーティブであり、その理由はコンパイラがそのロード動作をその実行(br.cond)をガード(guard)するブランチ命令の前に実行するとスケジュールしているからである。従属するアド命令はブランチの前にスケジュールされており、チェック動作chk.sがbr.condの次に挿入されている。下で説明するように、chk.sはプロセッサにスペキュレーションで実行されたロードによりトリガされた例外条件をチェックする。
コードシーケンス(II)のスペキュレーティブロードとそれに従属するアドは、シーケンス(I)のスペキュレーティブでないものより早く実行することができる。スペキュレーティブロードとそれに従属するアドをブランチの前の命令と並行して実行するようにスケジューリングすることにより、並行して実行される命令のレイテンシの陰にそれらのレイテンシを隠すことができる。例えば、ロード命令とアド命令の結果は、メモリ位置[r2]のデータがキャッシュ140にあれば、3クロックサイクルで準備完了となる。制御スペキュレーションにより、この実行レイテンシはブランチに先行する他の命令のレイテンシとオーバーラップする。このため、コードシーケンス(II)の実行に必要な時間は3クロックサイクルだけ減少する。チェック動作はコードシーケンス(II)に追加的クロックサイクルを付加せずにスケジュールできる(例えば、stと並行して)と仮定すると、制御スペキュレーションからの静的ゲインは、この場合3クロックサイクルである。
コードシーケンス(II)により例示された静的ゲインは、様々なマイクロアーキテクチャイベントにより、ランタイムに実現するかも知れない。上で注意したように、ロードレイテンシは、要求されたデータが見つかるメモリヒエラルキーのレベルに敏感である。図1のシステムについて、ロードは要求されたデータが見つかるメモリヒエラルキーの最低レベルから満たされる。データがより高いレベルのキャッシュやメインメモリにしかなければ、そのデータが必要なくても、制御スペキュレーションにより性能を悪化させる停止(stalls)がトリガされる。
テーブル1は、ブランチおよびキャッシュの異なるシナリオの下で、コードシーケンス(II)の性能をコードシーケンス(I)の性能と比較してまとめたものである。制御スペキュレーションにより3クロックサイクルのゲインと、キャッシュ140におけるミス(キャッシュ150により満たされる)による12クロックサイクルのペナルティを仮定して、制御スペキュレーションにより提供される相対的ゲイン/ロスが示されている。
Figure 0004220473
最初の2つのエントリは、ブランチがNTの時、すなわちスペキュレーションされた命令が実行パスにあるときの相対的ゲイン/ロスを示している。スペキュレーションされたロード動作がキャッシュでヒット(hit)またはミス(miss)したとき(エントリ1と2)、制御スペキュレーションはスペキュレーションされていないコードシーケンスより3クロックサイクルの静的ゲインを提供する(例えば、ロードにより2サイクル、アドにより1サイクル)。両方のコードシーケンスでロードとアドが2クロックサイクル離れていると仮定して、ロードがキャッシュでミスした後、アドは2クロックサイクルの停止をトリガする。10クロックサイクル(12-2)の正味停止(net stall)が両方のコードシーケンスで、スペキュレーションを有するNTブランチの前と、スペキュレーションを有しないNTブランチの後に生じる。
テーブル1の次の2つのエントリは、ブランチがTKの場合のゲイン/ロスの結果を示す。これらのエントリについて、プログラムはスペキュレーションされた命令により提供される結果を必要とない。ロード動作がキャッシュ(エントリ3)でヒットしたとき、スペキュレーションされていない場合と比べて制御スペキュレーションは提供するゲインはない。なぜなら、スペキュレーションで実行された命令により返される結果は必要ないからである。不必要な結果を3クロックサイクル早く返しても利益はない。
ロード動作がキャッシュでミスしたとき、制御スペキュレーションシーケンス(エントリ4)は、スペキュレーション無しのシーケンスと比較して10クロックサイクルのペナルティ(ロス)を被る。制御スペキュレーションをしたシーケンスがペナルティを被るのは、ブランチ命令(TK)を評価する前にロードとアドを実行するからである。スペキュレーション無しのシーケンスはキャッシュミスとその後の停止(stall)を避ける。ロードとアドをTKブランチで実行しないからである。スペキュレーションされた命令(ld.s、add)により返された結果は必要ないが、TKブランチの前のキャッシュミスの制御スペキュレーションにより生じる相対的ロスは、10クロックサイクルのペナルティである。スペキュレーションによるロードが高レベルキャッシュでミスし、データがメモリから返されたとき、ペナルティは数百クロックサイクルになることもある。
制御スペキュレーションにより得られる利益は、ブランチ方向(TK/NT)、キャッシュミス頻度、キャッシュミスペナルティの大きさに依存する。キャッシュヒットレートが特定構成閾値(例えば、約80%)より大きくない限り、不要な停止(stalls)に関連したペナルティが、例示したコードシーケンスの潜在的利益(NTブランチ時のキャッシュヒットに対して3クロックサイクルの静的ゲイン)を上回ってしまう。キャッシュミスペナルティが大きいと、キャッシュヒットレートは長い停止(stall)をオフセットするため相応に大きくなければならない。ブランチが高い確率でNTであると予測できるときには、キャッシュヒットレートはそれほど重要ではなくなる。この場合、いずれのコードシーケンスにおいても停止(stall)が発生するからである。一般に、ブランチ方向(TK/NT)とキャッシュヒットレートに関する不確定性により、制御スペキュレーションの利益評価は困難になり、不要な命令に対してキャッシュミスをすることに関連する大きなペナルティ(上の例では9クロックサイクルより大きい)により、プログラマーは制御スペキュレーションの利用に慎重になったり、制御スペキュレーションを全く利用しなかったりする。
本発明の実施形態は、制御スペキュレーションの使用による性能ロスを限定するメカニズムを提供するものである。一実施形態について、スペキュレーティブロードのキャッシュミスは、遅延メカニズムを通じて処理される。キャッシュミス時、トークンをスペキュレーティブロードによりターゲットにされたレジスタと関連づける。スペキュレーションされた命令が実際に必要なとき、キャッシュミスはリカバリールーチンを通じて処理される。リカバリールーチンの実行を速めるために、必要であれば、キャッシュミスに応じてプリフェッチ要求が発行されてもよい。いかなるキャッシュミスや特定のキャッシュレベルのミスに対して、遅延メカニズムを使用してもよい。
図2は、スペキュレーティブロードによりキャッシュミスを処理する、本発明による方法200の一実施形態を示すフローチャートである。方法200は、ステップ210でスペキュレーティブロードを実行するところから始まる。ステップ220でスペキュレーティブロードがキャッシュでヒットすると、ステップ260で方法200は終了する。ステップ220でスペキュレーティブロードがキャッシュでミスすると、ステップ230で遅延処理のためのフラグを立てる。遅延処理とは、その後ステップ240で、スペキュレーティブロードの結果が必要であると判断されたときのみ、キャッシュミスを処理するのに必要なオーバーヘッドが生じることを意味する。必要な場合、ステップ250でリカバリーコードが実行される。必要なければ、ステップ260で方法200は終了する。
一実施形態において、ノンスペキュレーティブ命令がタグされたレジスタを参照したとき、遅延されたキャッシュミスがリカバリをトリガする。これはスペキュレーティブロードの結果が実際に必要なときにのみ発生するからである。ノンスペキュレーティブ命令は、遅延トークンがあるかどうかレジスタをテストするチェック動作であってもよい。以下でもっと詳しく説明するように、そのトークンはスペキュレーティブ命令の遅延例外を知らせるものであってもよい。その場合、例外遅延メカニズムは、上で説明したキャッシュミスの例等のマイクロアーキテクチャイベントを処理するために修正される。
コードシーケンス(II)を参照して遅延例外メカニズムを説明する。上で注意したように、ブランチに続くチェック動作(chk.s)は、スペキュレーティブロードが例外条件をトリガしたかどうかを決定するために使用される。一般に、例外は比較的複雑なイベントであり、プロセッサに実行中のコードシーケンスを中断させ、一部の状態変数を保存し、オペレーティングシステムや様々な例外処理ルーチン等の低レベルソフトウェアに制御を渡す。例えば、変換ルックアサイドバッファ(TLB)は、ロード動作によりターゲットにされた論理アドレスの物理アドレス変換を有していなかったり、ロード動作が非特権コードシーケンスから特権コードをターゲットにすることがある。これらの例外は、一般に、問題を解決するためにはオペレーティングシステムやその他のシステムレベルリソースによる介入を要する。
スペキュレーティブ命令により生じた例外は、その例外条件をトリガした命令の実行が必要か、例えば制御フローパスにあるかどうかが決定されるまで、一般には遅延される。遅延例外は、スペキュレーティブ命令によりターゲットにされたレジスタと関連づけられたトークンにより示される。スペキュレーティブ命令が例外をトリガしたとき、レジスタはトークンでタグされ、例外を生じた命令に依存するいかなる命令もそのデスティネーションレジスタを介してこのトークンを伝搬する。チェック動作に到達すると、chk.sはレジスタがトークンでタグされているかどうかを決定する。トークンを見つけると、スペキュレーティブ命令が正しく実行されず、例外処理がなされたことを示す。トークンが見つからなければ、処理を続ける。このように、遅延例外により、スペキュレーションにより実行された命令によりトリガされた例外のコストが、その命令が実行される必要があるときにのみ発生するようになる。
インテル(登録商標)のItanium(登録商標)プロセッサファミリーは、Not A Thing(NaT)と呼ぶトークンを用いて、遅延例外処理メカニズムを実施する。NaTはターゲットレジスタと関連する、例えばビット(NaTビット)である。そのターゲットレジスタは、スペキュレーティブ命令が例外条件をトリガしたとき特定の状態に設定され、例外条件をトリガしたスペキュレーティブ命令に依存する。NaTは、スペキュレーティブ命令が例外条件をトリガしたときにターゲットレジスタに書き込まれる、または例外条件をトリガしたスペキュレーティブ命令に依存する特定の値である。Itanium(登録商標)の整数および浮動小数点レジスタは遅延例外を示すためのNaTビットとNaT値をそれぞれ使用する。
本発明の一実施形態において、スペキュレーティブロード命令によるキャッシュミスを遅延処理するために例外遅延メカニズムを修正する。キャッシュミスは例外ではなく、プロセッサハードウェアが割り込みやオペレーティングシステムへの通知無しに処理するマイクロアーキテクチャイベントである。以下の説明においては、マイクロアーキテクチャイベントを示すために使用されるNaTは自発NaTと呼び、例外を示すNaTとは区別する。
テーブル2は、キャッシュミス遅延メカニズムを有しない制御スペキュレーションと比較した、キャッシュミス遅延メカニズムを有する制御スペキュレーションの性能ゲイン/ロスを示す図である。テーブル1と同様に、3クロックサイクルの静的ゲインと12クロックサイクルのキャッシュミスペナルティを示し、アドは、2クロックサイクルのキャッシュレイテンシを説明するため、スペキュレーションによるロードの2クロックサイクル後に実行するとスケジュールされていると仮定する。
遅延メカニズムの相対的ゲインに影響する2つの要因は、ターゲットされたデータがキャッシュにあるかどうかを決定するクロックサイクル数(遅延ロス)と、NTブランチのキャッシュミスのイベントにおいてリカバリールーチンを実行するために必要なクロックサイクル数(リカバリーロス)である。テーブル2について、キャッシュ内にデータがあるかどうかはスペキュレーティブロードの2クロックサイクル以内に決定することができると仮定した。アドはロードの2クロックサイクル後に実行するとスケジュールされているから、この場合には追加的停止(stall)は生じなく、遅延ロスはゼロである。この判断に2クロックサイクル以上かかると、アドにより停止(stall)が生じ、これは遅延ペナルティとして現れる。リカバリーロスは15クロックサイクルであると仮定する。
テーブル2は、開示されたキャッシュミス遅延メカニズムにより得られる相対的ゲイン(ロス)を示す。テーブル2で使われるペナルティ値はすべて例示のためだけに与えられたものである。下で説明するように、コスト/利益分析の結果は変わらなければ、異なる値であってもよい。
Figure 0004220473
遅延メカニズムはキャッシュミスの時にのみ起動されるので、キャッシュでヒットするスペキュレーティブロードには性能インパクトはない。遅延を有さない制御スペキュレーションと比較して、遅延を有する制御スペキュレーションのゲインは、キャッシュヒット時にはゼロであり、ブランチのTK/NT状態には依存しない(エントリ1と3)。
遅延がある場合とない場合の制御スペキュレーションの相対的ゲインは、スペキュレーティブロードがキャッシュでミスした場合には明らかである。スペキュレーティブロードのキャッシュミスを遅延無しで処理すると、ブランチがNTかTKかに係わらず、10クロックサイクルペナルティを生じる。上で注意したように、キャッシュミスは完全にはなくせないが、制御フローパスにないと後で分かるスペキュレーティブ命令によるキャッシュミスで、10サイクルのペナルティが生じるのは特に無駄である。
スペキュレーティブロードのキャッシュミスを遅延処理する利益は、(もしあれば)遅延ペナルティーとリカバリーペナルティに依存する。テーブル2について、遅延処理については遅延ペナルティを評価していない。その理由は、キャッシュミスを検出するために必要なクロックサイクルの数は、スペキュレーティブロードと使用の間の遅れ、例えば、本実施例では2クロックサイクルよりも大きくないと仮定したからである。
ブランチがTKのとき、キャッシュミスの遅延処理は遅延ペナルティのみを生じ、上記の実施例ではゼロである。このように、TKブランチのキャッシュミスの遅延処理により、遅延なしのキャッシュミス処理と比較して10クロックサイクルのゲインがある(エントリ4)。ブランチがNTのとき、スペキュレーションされた命令はプログラムフローに必要であり、遅延処理により15クロックサイクルのリカバリーペナルティが生じる。例えば、キャッシュミスはリカバリーコードに制御を移すことにより処理される。そのリカバリーコードは、スペキュレーティブロードとこれに依存するいかなるスペキュレーティブ命令をも再実行する。このように、NTブランチのキャッシュミスの遅延処理は、遅延しない処理(エントリ4)と比較して18クロックサイクルのロスを与える。この18クロックサイクルには、chk.sによりトリガされたミスハンドラの15サイクル、プラススペキュレーティブコードを繰り返すための3サイクルを含む。12サイクルのキャッシュミスは相殺される。
一実施形態において、遅延メカニズムは、リカバリールーチンが起動されると(キャッシュミスとそれに続くNTブランチ)、ロードレイテンシを減らすためにプリフェッチ要求が発行される。プリフェッチ要求により、キャッシュミスが検知されるとすぐに、リカバリーコードが起動されるのを待つのではなく、メモリヒエラルキーからターゲットにされたデータが返される。これにより、プリフェッチのレイテンシはスペキュレーティブロードに続く動作のレイテンシとオーバーラップする。その後リカバリーコードが起動されると、データ要求を早く出しておいたので実行が速くなる。プリフェッチによりトリガされる例外を処理するコストを避けるため、ノンフォルト(non-faulting)プリフェッチを使用する。
例示したペナルティとゲインの値に対して、開示した遅延メカニズムを有する制御スペキュレーションと遅延メカニズム無しの制御スペキュレーションに関するプリフェッチの正味コスト/利益は以下の通りである。
NTブランチについて、(-15)-(3)+12=6サイクルロス/キャッシュミス
TKブランチについて、(0)-(-10)=10サイクルゲイン/キャッシュミス
このように、プリフェッチメカニズムを入れることにより、テーブル2のエントリ2が18サイクルから6サイクルになる。開示した遅延を有する制御スペキュレーションと組み合わせることによる正味利益はこのようにブランチの振る舞い、キャッシュミスの頻度、様々なペナルティ(リカバリ、停止(stall)、遅延)に依存する。例えば、遅延メカニズムにより得られる利益は、キャッシュミスペナルティが大きくて、キャッシュミス頻度が低いときに生じる。同様に、スペキュレーションされた命令をタグするペナルティ(遅延ペナルティ)とリカバリコードを実行するペナルティ(リカバリペナルティ)の合計が停止ペナルティより大きくないとき、キャッシュミス頻度等に係わらず、遅延メカニズムを使用した制御スペキュレーションは遅延メカニズムを使用しない制御スペキュレーションより性能がよくなる。
遅延ペナルティとリカバリペナルティの合計が停止ペナルティよりも大きいとき、トレードオフは、遅延ペナルティとそれが発生する頻度(キャッシュミスとそれに続くTKブランチ)に対するリカバリペナルティとそれが発生する頻度(キャッシュミスとそれに続くNTブランチ)に依存する。以下で説明するように、プロセッサデザイナーは、NTの場合にキャッシュミス遅延の負のポテンシャルがほぼゼロになることを保証するために、与えられたリカバリペナルティと遅延ペナルティについて、キャッシュミス遅延を実施する条件を選択することができる。キャッシュミスをいつ遅延するかという決定は、すべてのld.sに対して単一の発見的方法(heuristic)で、またはヒントを用いてロードベースで決定することができる。一般に、キャッシュミスレイテンシが長ければ長いほど、遅延メカニズムのマイナスのポテンシャルは小さくなる。キャッシュミス遅延を実施する適当なキャッシュレベルを選択することにより、このマイナス面はほぼ無くすことができる。
開示された遅延メカニズムにより提供されるコスト/利益の様々なパラメータ(例えば、キャッシュのミスレート等)への依存性や、ミスに関連した停止ペナルティのデータの後使用への依存性を与えられると、遅延メカニズムを起動するかどうかを柔軟に決めると便利である。一実施形態において、スペキュレーティブロードが特定されたキャッシュレベルでミスすると、遅延メカニズムが起動される。図1のようなコンピューティングシステムにおいて、キャッシュには2つのレベルがあり、スペキュレーティブロードはこれらのキャッシュの一方(例えば、キャッシュ140)でミスすると自発NaTを生成する。
特定キャッシュレベル遅延(cache level specific deferral)はプログラマブルにしてもよい。例えば、Itanium(登録商標)命令セットアーキテクチャ(ISA)は、データが見つかると期待できるキャッシュヒエラルキーのレベルを示すために使用されるヒントフィールドを含む。本発明の他の実施形態において、キャッシュミスが遅延メカニズムをトリガするキャッシュレベルを示すためにこのヒント情報を使用してもよい。ヒントにより示されたキャッシュレベルにおけるミスは自発NaTをトリガする。
図3は、本発明による方法300の他の実施形態を示すフローチャートである。方法300は、ステップ310におけるスペキュレーティブロードの実行で始まる。ステップ320で、スペキュレーティブロードが指定キャッシュでヒットすると、ステップ330でブランチ命令の解決(resolution)を待つ。スペキュレーティブロードがステップ320で指定キャッシュレベルでミスすると、ステップ324においてそのターゲットレジスタは遅延トークン(例えば、自発NaT)でタグされ、ステップ328でプリフェッチ要求が発行される。そのトークンは、スペキュレーティブロードに依存するスペキュレーティブ命令の目的レジスタを通して広がる。
ステップ330でブランチする(taken)と(TK)、ステップ340でブランチのターゲットアドレスの命令に続く。この場合、スペキュレーティブロードの結果は必要なく、追加のペナルティは生じない。ブランチしない(not taken)と、ステップ350でスペキュレーティブロードをチェックする。例えば、スペキュレーティブロードによりターゲットされたレジスタ値がNaTに対して指定された値と比較されるか、またはNaTビットの状態が読み込まれる。ステップ360で遅延トークンが検出されると、スペキュレーションで実行された命令により返された結果は正しく、ステップ370においてロードチェックに続く命令が実行される。
ステップ360で遅延トークンが検出されると、ステップ380でキャッシュミスハンドラが実行される。このハンドラは、スペキュレーションによる実行がスケジュールされていたロードとそれに依存する命令を含む。ステップ328で、非スペキュレーティブロードのレイテンシはプリフェッチにより短くなる。このプリフェッチにより、キャッシュミスに応じて、メモリヒエラルキーの高いレベルからターゲットデータが返される。
スペキュレーティブロードミスが遅延されるキャッシュレベルの選択に加えて、スペキュレーティブロードを用いる一部のコードセグメントのキャッシュミス遅延メカニズムをディスエーブルすることが望ましい。例えば、オペレーティングシステムやその他の低レベルシステムソフトウェア等のクリティカルコードセグメントは、一般的に、決定論的振る舞いを要する。制御スペキュレーションにより不確定性が入り込む。スペキュレーションにより実行された命令によりトリガされた例外条件は、対応する例外ハンドラを実行することもあれば、しないこともあり、プログラムの制御フローに依存するからである。
ガードしているブランチ命令がどのように解決されるかによらず、スペキュレーティブロードの例外に応じて、例外ハンドラが決して(または常に)実行されないことを保証する条件で、このようなクリティカルコードセグメントは、性能上の理由から、スペキュレーティブロードをまだ使用することもある。例えば、例外を決してトリガしない条件でクリティカルコードセグメントがスペキュレーティブロードを実行してもよいし、プログラムフローを制御するためにトークン自体を使用してもよい。適切なケースは、Itaniumプロセッサファミリーの例外ハンドラであり、ネストしたフォルトに関連するオーバーヘッドを避けるためにスペキュレーティブロードを使用する。
Itaniumプロセッサファミリーについて、TLBミス例外に対応するハンドラは、仮想ハードウェアページテーブル(VHPT)からアドレス変換をロードしなければならない。ハンドラがVHPTへの非スペキュレーティブロードを実行するとき、このロードは失敗し、ネストしたフォルトに関連するオーバーヘッドをシステムが管理しなければならないかも知れない。TLBフォルトの性能の高いハンドラはVHPTへのスペキュレーティブロードを実行し、Test NaT命令(TNaT)を実行することにより、NaTのターゲットレジスタをテストする。スペキュレーティブロードがNaTを返すとき、ハンドラはページテーブルフォルトを解決するために別のコードセグメントにブランチしてもよい。このように、TLBミス例外ハンドラは、スペキュレーティブロードによるVHPTミスのVHPTミス例外ハンドラを決して実行しない。
開示されたキャッシュミス遅延メカニズムの実施形態は、遅延例外類似の振る舞いをトリガするので、クリティカルコードセグメントの決定論的実行を不要にする(undermine)こともある。この遅延メカニズムはマイクロアーキテクチャイベントにより駆動されるので、非決定論的振る舞いの機会はむしろ大きい。
本発明の他の実施形態は、クリティカルコードセグメント中のスペキュレーティブロードや非決定論的振る舞いを防止するためのセーフガードの使用と干渉せずに、ソフトウェア制御下におけるキャッシュミス遅延のディスエーブルをサポートする。この実施形態はItaniumアーキテクチャを用いて説明する。このアーキテクチャは様々なシステムレジスタ中のフィールドを介して例外遅延の態様を制御する。例えば、プロセッサステータスレジスタ(PSR)は、現在実行中のプロセスについて実行環境、例えば制御情報を維持する。制御レジスタは、割り込みによるプロセッサの状態を捕捉する。TLBは最近使用された仮想対物理アドレス変換を格納する。この開示の利益を有する当業者には、このメカニズムを他のプロセッサアーキテクチャに適用するために必要な修正が明らかであろう。
Itaniumプロセッサで遅延実行処理がイネーブルされる条件は次の論理式により表される:
!PSR.ic||(PSR.it&&ITLB.ed&&DCR.xx)
例外が遅延される最初の条件は、プロセッサステータスレジスタ(PSR.ic)中の割り込みコレクション(ic)ビットの状態により制御される。PSR.ic=1のとき、割り込みが発生すると、プロセッサステートを反映するために様々なレジスタが更新され、割り込みハンドラへの制御の移し(すなわち、割り込み)は遅延されない。PSR.ic=0のとき、プロセッサステートは保存されない。プロセッサステートを保存しないで割り込みが発生すると、ほとんどの場合システムはクラッシュする。それゆえ、PSR.ic=0のときは例外がトリガされないようにオペレーティングシステムが設計されている。
割り込みが起きないことを保証する別のメカニズムを備えているのであれば、クリティカルコードは、PSR.ic=0であるスペキュレーティブロード(割り込みステートコレクションディスエーブル)を含んでもよい。この保証は、前の例では、NaTが検出されたとき、異なるコードセグメントにブランチするNaTビットをテストすることにより行われた。
例外が遅延される第2の条件は、(1)アドレス変換がイネーブルされ(PSR.it=1)、リカバリコードが利用可能であることをITLBが示している(ITLB.ed=1)、その例外は遅延がイネーブルされる例外に対応することを制御レジスタが示す(DCR.xx=1)ことである。第2の条件は、制御スペキュレーションを含むアプリケーションレベルコードに適用する条件である。
選択されたアプリケーションレベルプログラムについてキャッシュミス遅延をイネーブルしている間に、クリティカルコードセグメントによるスペキュレーティブロードの使用を保護するため、キャッシュミス遅延は次の論理式によりイネーブルされる:
(PSR.ic&&PSR.it&&ITLB.ed)
この条件は、例外遅延が無条件でイネーブルされている条件下(例えば、PSR.ic=0)では、キャッシュミス遅延がイネーブルされないことを保証する。アプリケーションコードについて、例外遅延はPSR.it、ITLB.ed、DCR中の対応する例外ビットに従ってイネーブルされるが、キャッシュミス遅延はPSR.it、ITLB.ed、PSR.icの状態に従ってイネーブルされる。
制御スペキュレーションのもっと広い範囲で使用をサポートするために、制御スペキュレーションのキャッシュミスの潜在的性能ペナルティを限定するためのメカニズムを提供した。本メカニズムはスペキュレーティブロードによるキャッシュミスを検出し、そのスペキュレーティブロードによりターゲットとされていたレジスタを遅延トークンでタグする。キャッシュミスに応じて、ターゲットにされたデータに対して、ノンフォルトプリフェッチを発行する。遅延トークンをチェックする動作は、スペキュレーティブロードの結果が必要なときにのみ実行される。チェック動作を実行し、遅延トークンを検出したとき、リカバリーコードがそのキャッシュミスを処理する。チェック動作を実行しないか、または実行しても遅延トークンが検出されないとき、リカバリーコードは実行されない。遅延メカニズムは指定されたキャッシュレベルのミスでトリガされ、選択されたコードシーケンスに対してはディスエーブルされる。
遅延メカニズムがキャッシュのスペキュレーティブロードミス時に起動される場合について本発明を説明したが、性能に大きく影響するスペキュレーティブ命令によりトリガされた他のマイクロアーキテクチャイベントにも本発明を利用することができる。本発明は、添付したクレームの精神と範囲のみによって限定される。
本発明は、以下の図面を参照することにより理解できるであろう。類似したエレメントには類似した数字を付した。これらの図面は本発明の実施形態を示すために提供されたものであり、添付された実施形態の範囲を限定するものではない。
本発明を実施するのに好適なコンピュータシステムを示すブロック図である。 本発明を実施する方法の一実施形態を示すフローチャートである。 本発明を実施する方法の他の実施形態を示すフローチャートである。

Claims (19)

  1. スペキュレーティブロード命令を処理する方法であって、
    前記スペキュレーティブロード命令を発行するステップと、
    前記スペキュレーティブロード命令がキャッシュでヒットしたとき、前記スペキュレーティブロード命令によりターゲットにされたレジスタにデータ値を返すステップと、
    前記スペキュレーティブロード命令が前記キャッシュでミスしたとき、前記ターゲットにされたレジスタを遅延トークンでタグするステップと、
    前記スペキュレーティブロード命令が前記キャッシュでミスしたとき、プリフェッチ要求を発行するステップと
    を有する方法。
  2. 請求項1に記載の方法であって、
    前記プリフェッチ要求を発行するステップは前記スペキュレーティブロード命令をプリフェッチ要求に変換するステップを有することを特徴とする方法。
  3. 請求項1に記載の方法であって、
    前記ターゲットにされたレジスタにタグするステップは、
    前記スペキュレーティブロード命令のヒントフィールドに示された前記スペキュレーティブロード命令のキャッシュレベルを前記キャッシュのレベルと比較するステップと、
    前記レベルがマッチしたとき、前記ターゲットにされたレジスタをタグするステップとをさらに有することを特徴とする方法。
  4. 請求項1に記載の方法であって、
    前記遅延トークンは所定のビット値であり、
    前記ターゲットにされたレジスタをタグするステップは、前記ターゲットにされたレジスタに関連するビットフィールドを前記ビット値に設定するステップを有する方法。
  5. 請求項1に記載の方法であって、
    前記遅延トークンは所定の値であり、
    前記ターゲットにされたレジスタをタグするステップは、前記所定の値を前記ターゲットにされたレジスタに書き込むステップを有することを特徴とする方法。
  6. 請求項1に記載の方法であって、
    前記ターゲットにされたレジスタをタグするステップは、キャッシュミス遅延が起こる可能性があり、前記スペキュレーティブロード命令が前記キャッシュでミスしたとき、前記ターゲットにされたレジスタを遅延トークンでタグするステップを有することを特徴とする方法。
  7. 請求項1に記載の方法であって、
    前記スペキュレーティブロード命令が必要なとき、前記遅延トークンをチェックするステップと、
    前記遅延トークンを検出したとき、制御をリカバリルーチンに移すステップとをさらに有することを特徴とする方法。
  8. キャッシュと、
    レジスタファイルと、
    実行コアと、
    前記実行コアにより処理される命令を格納するメモリとを有するシステムであって、
    前記命令は、
    前記キャッシュへのスペキュレーティブロード命令を発行し、
    前記スペキュレーティブロード命令が前記キャッシュでミスしたとき、前記スペキュレーティブロード命令によりターゲットにされた前記レジスタファイル内のレジスタをタグし、
    前記スペキュレーティブロード命令が前記キャッシュでミスしたとき、プリフェッチ要求を発行することを特徴とするシステム。
  9. 請求項8に記載のシステムであって、前記レジスタは、前記スペキュレーティブロード命令が前記キャッシュでミスしたことに応じて、第1の値を関連ビットに書き込むことによりタグされることを特徴とするシステム。
  10. 請求項8に記載のシステムであって、前記レジスタは、前記スペキュレーティブロード命令が前記キャッシュでミスしたことに応じて、第2の値を前記レジスタに書き込むことによりタグされることを特徴とするシステム。
  11. 請求項8に記載のシステムであって、
    前記スペキュレーティブロード命令が前記キャッシュでミスしたとき、前記スペキュレーティブロード命令によりターゲットにされたアドレスへのプリフェッチを発行するために、前記格納された命令は前記実行コアにより処理されることを特徴とするシステム。
  12. 請求項8に記載のシステムであって、
    前記キャッシュは少なくとも第1のレベルのキャッシュと第2のレベルのキャッシュとを含み、
    前記スペキュレーティブロード命令が前記第1のレベルのキャッシュと前記第2のレベルのキャッシュの特定された1つでミスしたとき、前記ターゲットにされたレジスタがタグされることを特徴とするシステム。
  13. 請求項8に記載のシステムであって、
    キャッシュミス遅延メカニズムが起動され、前記スペキュレーティブロード命令が前記キャッシュでミスしたときに、前記スペキュレーティブロード命令によりターゲットとされた前記レジスタファイルがタグされることを特徴とするシステム。
  14. プロセッサにより実行可能な命令を格納した機械読み取り可能媒体であって、
    前記命令は、
    第1のスペキュレーティブ動作を実行するステップと、
    前記第1のスペキュレーティブ動作がマイクロアーキテクチャイベントをトリガするとき、遅延トークンを前記第1のスペキュレーティブ動作のターゲットに関連づけるステップと、
    前記第1のスペキュレーティブ動作がキャッシュでミスすると、すぐに前記第1のスペキュレーティブ動作によりターゲットにされたアドレスのデータを読み出すノンフォルトプリフェッチ要求を発行するステップと
    を有する方法を実施するものであることを特徴とする機械読み取り可能媒体。
  15. 請求項14に記載の機械読み取り可能媒体であって、
    前記第1のスペキュレーティブ動作はスペキュレーティブロード動作であり、
    前記マイクロアーキテクチャイベントは前記キャッシュでの前記ミスであることを特徴とする機械読み取り可能媒体。
  16. 請求項15に記載の機械読み取り可能媒体であって、
    前記遅延トークンを関連づけるステップは、前記スペキュレーティブロード動作が前記キャッシュでミスし、キャッシュミス遅延がイネーブルされたとき、前記遅延トークンを前記スペキュレーティブロード動作のターゲットに関連づけるステップを有することを特徴とする機械読み取り可能媒体。
  17. 請求項15に記載の機械読み取り可能媒体であって、
    前記方法は、前記遅延トークンを前記スペキュレーティブロード動作のターゲットに関連づける前に、遅延メカニズムがイネーブルされているかどうかを決定するために制御レジスタを読み出すステップをさらに有することを特徴とする機械読み取り可能媒体。
  18. 請求項17に記載の機械読み取り可能媒体であって、
    前記方法は、
    前記第1のスペキュレーティブ動作に応じて第2のスペキュレーティブロード動作を実行するステップと、
    遅延トークンが前記第1のスペキュレーティブロード動作のターゲットに関連づけられている時、遅延トークンを前記第2のスペキュレーティブ動作と関連づけるステップとを有することを特徴とする機械読み取り可能媒体。
  19. 請求項15に記載の機械読み取り可能媒体であって、
    前記スペキュレーティブロード動作が前記キャッシュでミスしたとき、前記スペキュレーティブロード動作によりターゲットにされたアドレスのデータを読み出すプリフェッチ要求を発行するステップをさらに有することを特徴とする機械読み取り可能媒体。
JP2004563645A 2002-12-20 2003-12-04 制御スペキュレーションの性能を向上するメカニズム Expired - Fee Related JP4220473B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/327,556 US20040123081A1 (en) 2002-12-20 2002-12-20 Mechanism to increase performance of control speculation
PCT/US2003/040141 WO2004059470A1 (en) 2002-12-20 2003-12-04 Mechanism to increase performance of control speculation

Publications (3)

Publication Number Publication Date
JP2006511867A JP2006511867A (ja) 2006-04-06
JP2006511867A5 JP2006511867A5 (ja) 2006-10-19
JP4220473B2 true JP4220473B2 (ja) 2009-02-04

Family

ID=32594285

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004563645A Expired - Fee Related JP4220473B2 (ja) 2002-12-20 2003-12-04 制御スペキュレーションの性能を向上するメカニズム

Country Status (5)

Country Link
US (1) US20040123081A1 (ja)
JP (1) JP4220473B2 (ja)
CN (1) CN100480995C (ja)
AU (1) AU2003300979A1 (ja)
WO (1) WO2004059470A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040154010A1 (en) * 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
US7168070B2 (en) * 2004-05-25 2007-01-23 International Business Machines Corporation Aggregate bandwidth through management using insertion of reset instructions for cache-to-cache data transfer
US8443171B2 (en) * 2004-07-30 2013-05-14 Hewlett-Packard Development Company, L.P. Run-time updating of prediction hint instructions
WO2007138124A1 (es) * 2006-05-30 2007-12-06 Intel Corporation Método aparato y sistema aplicado en un protocolo de coherencia de una memoria cache
US7590826B2 (en) * 2006-11-06 2009-09-15 Arm Limited Speculative data value usage
US8065505B2 (en) * 2007-08-16 2011-11-22 Texas Instruments Incorporated Stall-free pipelined cache for statically scheduled and dispatched execution
US20100077145A1 (en) * 2008-09-25 2010-03-25 Winkel Sebastian C Method and system for parallel execution of memory instructions in an in-order processor
US8683129B2 (en) * 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
WO2013095392A1 (en) * 2011-12-20 2013-06-27 Intel Corporation Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch
US8832505B2 (en) 2012-06-29 2014-09-09 Intel Corporation Methods and apparatus to provide failure detection
GB2509830B (en) * 2013-02-11 2014-12-24 Imagination Tech Ltd Speculative load issue
GB2519108A (en) * 2013-10-09 2015-04-15 Advanced Risc Mach Ltd A data processing apparatus and method for controlling performance of speculative vector operations
US20160011874A1 (en) * 2014-07-09 2016-01-14 Doron Orenstein Silent memory instructions and miss-rate tracking to optimize switching policy on threads in a processing device
US20200372129A1 (en) * 2018-01-12 2020-11-26 Virsec Systems, Inc. Defending Against Speculative Execution Exploits
JP7041353B2 (ja) * 2018-06-06 2022-03-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10860301B2 (en) 2019-06-28 2020-12-08 Intel Corporation Control speculation in dataflow graphs
US11176055B1 (en) 2019-08-06 2021-11-16 Marvell Asia Pte, Ltd. Managing potential faults for speculative page table access
US11403394B2 (en) * 2019-09-17 2022-08-02 International Business Machines Corporation Preventing selective events of a computing environment

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314513B1 (en) * 1997-09-30 2001-11-06 Intel Corporation Method and apparatus for transferring data between a register stack and a memory resource
US5915117A (en) * 1997-10-13 1999-06-22 Institute For The Development Of Emerging Architectures, L.L.C. Computer architecture for the deferral of exceptions on speculative instructions
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
US6988183B1 (en) * 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US6253306B1 (en) * 1998-07-29 2001-06-26 Advanced Micro Devices, Inc. Prefetch instruction mechanism for processor
US6463579B1 (en) * 1999-02-17 2002-10-08 Intel Corporation System and method for generating recovery code
US6871273B1 (en) * 2000-06-22 2005-03-22 International Business Machines Corporation Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations
US6829700B2 (en) * 2000-12-29 2004-12-07 Stmicroelectronics, Inc. Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
JP3969009B2 (ja) * 2001-03-29 2007-08-29 株式会社日立製作所 ハードウェアプリフェッチシステム
US7028166B2 (en) * 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values

Also Published As

Publication number Publication date
WO2004059470A1 (en) 2004-07-15
JP2006511867A (ja) 2006-04-06
AU2003300979A1 (en) 2004-07-22
CN1726460A (zh) 2006-01-25
CN100480995C (zh) 2009-04-22
US20040123081A1 (en) 2004-06-24

Similar Documents

Publication Publication Date Title
US11461243B2 (en) Speculative cache storage region
JP4220473B2 (ja) 制御スペキュレーションの性能を向上するメカニズム
US6907520B2 (en) Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US7506132B2 (en) Validity of address ranges used in semi-synchronous memory copy operations
EP0933698B1 (en) Probing computer memory latency
US7454585B2 (en) Efficient and flexible memory copy operation
US6484254B1 (en) Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
US5511175A (en) Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US7484062B2 (en) Cache injection semi-synchronous memory copy operation
US9740553B2 (en) Managing potentially invalid results during runahead
US20030135719A1 (en) Method and system using hardware assistance for tracing instruction disposition information
JP2001507151A (ja) 先進のマイクロプロセッサのためのゲート格納バッファ
JP2001504957A (ja) 先進のプロセッサにおけるメモリ・データ・エリアシング方法および装置
US11907369B2 (en) Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception
KR100421749B1 (ko) 비폴팅로드명령실행방법및그장치
JP7377211B2 (ja) 投機的サイド・チャネル・ヒント命令
WO2005041024A2 (en) System and method for handling exceptional instructions in a trace cache based processor
JP2005243050A (ja) コンピュータシステム
Ainsworth Ghostminion: A strictness-ordered cache system for spectre mitigation
US6735687B1 (en) Multithreaded microprocessor with asymmetrical central processing units
JP2001519955A (ja) 先進のプロセッサのための変換メモリ保護装置
JP2019200523A (ja) 演算処理装置及び演算処理装置の制御方法
Chen et al. Memory Disambiguation using Load Forwarding

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061003

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070112

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070403

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080212

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080512

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080617

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080916

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: 20081021

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111121

Year of fee payment: 3

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: 20111121

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121121

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121121

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131121

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees