JP2016534476A - キャッシュ占有決定および命令スケジューリングのための方法および装置 - Google Patents

キャッシュ占有決定および命令スケジューリングのための方法および装置 Download PDF

Info

Publication number
JP2016534476A
JP2016534476A JP2016542028A JP2016542028A JP2016534476A JP 2016534476 A JP2016534476 A JP 2016534476A JP 2016542028 A JP2016542028 A JP 2016542028A JP 2016542028 A JP2016542028 A JP 2016542028A JP 2016534476 A JP2016534476 A JP 2016534476A
Authority
JP
Japan
Prior art keywords
cache
data
processor
stored
level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016542028A
Other languages
English (en)
Other versions
JP6375379B2 (ja
Inventor
ザックス、アヤル
ヴァレンタイン、ロバート
ナルキス、アリエ
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2016534476A publication Critical patent/JP2016534476A/ja
Application granted granted Critical
Publication of JP6375379B2 publication Critical patent/JP6375379B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

1または複数のオペレーションに必要とされるデータがキャッシュ内に格納されているか否かを判断し、判断に基づいて実行する複数のオペレーションをスケジューリングする装置および方法。例えば、プロセッサの一実施形態は、少なくとも1つのレベル1(L1)キャッシュを含むデータをキャッシュするための複数のキャッシュレベルの階層と、1または複数の後続のオペレーションに関連するデータが複数のキャッシュレベルのうち1つに格納されているか否かを判断するキャッシュ占有決定ロジックと、複数の後続のオペレーションに関連するデータが複数のキャッシュレベルに格納されているか否かの判断に基づいて、複数の後続のオペレーションの実行をスケジューリングするスケジューリングロジックとを備える。

Description

本発明は、概ね、コンピュータプロセッサの分野に関する。より具体的には、本発明は、キャッシュ占有決定および命令スケジューリングのための装置および方法に関する。
動作を実行することを必要とするデータがキャッシュに格納されていないと、メモリからデータを取得するべく相当な量の時間(例えば、マイクロプロセッサのサイクル)を費やさなければならないので、データキャッシュミスは、プログラムコードの非効率的な実行をもたらすことになる。この問題に対する以前の1つの解決法は、明示的なアーキテクチャサポートが提供され、必要とされることになるデータを予期して当該データをキャッシュにプリフェッチする、データプリフェッチである。別の解決法は、いずれの特別なアーキテクチャサポートまたはインタラクションも用いることなく、メモリ内のデータ構造のレイアウトをどのように最適化するかを決定するキャッシュを意識しないアルゴリズムおよびキャッシュを認識するアルゴリズムを用いることである。
本発明のより良い理解は、以下の図面と併せて以下の詳細な説明から得られることができる。
本発明の複数の実施形態による、例示的なインオーダパイプライン、および例示的なレジスタリネーム、アウトオブオーダ発行/実行パイプラインの双方を図示するブロック図である。
本発明の複数の実施形態による、プロセッサに含まれるインオーダアーキテクチャコアの例示的な実施形態、および例示的なレジスタリネーム、アウトオブオーダ発行/実行アーキテクチャコアの双方を図示するブロック図である。 本発明の複数の実施形態による統合メモリコントローラおよびグラフィックを有するシングルコアプロセッサおよびマルチコアプロセッサのブロック図である。 本発明の一実施形態によるシステムのブロック図を図示する。 本発明の一実施形態による第2のシステムのブロック図を図示する。 本発明の一実施形態による第3のシステムのブロック図を図示する。 本発明の一実施形態による、システムオンチップ(SoC)のブロック図を図示する。 本発明の複数の実施形態による、ソース命令セットのバイナリ命令を変換するソフトウェア命令変換器の使用と、ターゲット命令セットのバイナリ命令とを対比するブロック図を図示する。 キャッシュ占有を決定するためのロジックを有するアーキテクチャの一実施形態を図示する。 キャッシュ占有を決定し、決定に基づいて後の動作を実行する方法の一実施形態を図示する。
キャッシュ占有を決定し、決定に基づいて作業待ち行列から作業項目を実行する方法の一実施形態を図示する。
以下の説明において、説明の目的のために、後述される本発明の複数の実施形態の完全な理解を提供するべく、様々な具体的詳細が記載される。しかし、当業者には、本発明の複数の実施形態がこれらの具体的な詳細のいくつかを用いることなく実施され得ることが明らかであろう。本発明の複数の実施形態の基礎となる原理を不明瞭にするのを避けるべく、複数の他の例において、周知の複数の構造およびデバイスがブロック図の形態で示される。
例示的なプロセッサアーキテクチャおよびデータタイプ
図1Aは、本発明の複数の実施形態による、例示的なインオーダパイプライン、および例示的なレジスタリネーム、アウトオブオーダ発行/実行パイプラインの双方を図示するブロック図である。図1Bは、本発明の複数の実施形態による、プロセッサに含まれるインオーダアーキテクチャコアの例示的な実施形態、および例示的なレジスタリネーム、アウトオブオーダ発行/実行アーキテクチャコアの双方を図示するブロック図である。図1A〜図1Bにおける実線で囲まれた複数のボックスは、インオーダパイプラインおよびインオーダコアを図示するが、複数の破線ボックスの任意選択の追加により、レジスタリネーム、アウトオブオーダ発行/実行パイプライン、およびコアを図示する。インオーダ態様がアウトオブオーダ態様のサブセットであると仮定して、アウトオブオーダ態様が説明される。図1Aにおいて、プロセッサパイプライン100は、フェッチステージ102、長さデコードステージ104、デコードステージ106、割り当てステージ108、リネームステージ110、スケジューリングステージ112(ディスパッチもしくは発行ステージとしても既知)、レジスタ読み取り/メモリ読み取りステージ114、実行ステージ116、ライトバック/メモリライトステージ118、例外処理ステージ122、およびコミットステージを含む。
図1Bは、実行エンジンユニット150に結合されたフロントエンドユニット130を含む。双方は、メモリユニット170に結合されたプロセッサコア190を示す。コア190は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、またはハイブリッドもしくは代替的なコアタイプであってもよい。なおも別の選択肢において、コア190は、例えば、ネットワークもしくは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューテインググラフィクス処理ユニット(GPGPU)コア、グラフィックコア等の専用コアであってもよい。
フロントエンドユニット130は、命令キャッシュユニット134に結合される分岐予測ユニット132を含む。命令キャッシュユニット134は、命令変換索引バッファ(TLB)136に結合される。TLB136は、命令フェッチユニット138に結合される。命令フェッチユニット138は、デコードユニット140に結合される。デコードユニット140(またはデコーダ)は、複数の命令をデコードし、出力として1もしくは複数のマイクロオペレーション、マイクロコードエントリーポイント、マイクロ命令、他の命令、または他の制御信号を生成することができ、これらは、複数の元の命令からデコードされ、またはこれらを反映し、あるいはこれらから派生する。デコードユニット140は、様々な異なるメカニズムを用いて実装され得る。好適なメカニズムの例としては、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコードリードオンリメモリ(ROM)等が挙げられるが、これらに限定されない。一実施形態において、コア190は、複数の一定のマクロ命令に対するマイクロコードを(例えば、デコードユニット140またはフロントエンドユニット130内に)格納する、マイクロコードROMまたは他の媒体を含む。デコードユニット140は、実行エンジンユニット150内のリネーム/アロケータユニット152に結合される。
実行エンジンユニット150は、リタイアメントユニット154および1もしくは複数のスケジューラユニット156のセットに結合されたリネーム/アロケータユニット152を含む。スケジューラユニット156は、複数のリザベーションステーション、中央命令ウィンドウ等を含む、任意の数の異なるスケジューラを表す。スケジューラユニット156は、物理レジスタファイルユニット158に結合される。物理レジスタファイルユニット158の各々は、1または複数の物理レジスタファイルを表し、それらのうちの異なるものが、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、状態(例えば、実行される次の命令のアドレスである命令ポインタ)等、1または複数の異なるデータタイプを格納する。一実施形態において、物理レジスタファイルユニット158は、複数のベクトルレジスタユニット、ライトマスクレジスタユニット、およびスカラレジスタユニットを備える。これらのレジスタユニットは、複数のアーキテクチャベクトルレジスタ、ベクトルマスクレジスタ、および汎用レジスタを提供し得る。物理レジスタファイルユニット158は、リタイアメントユニット154と重なり、レジスタリネームおよびアウトオブオーダ実行が(例えば、リオーダバッファおよびリタイアメントレジスタファイルを用いることにより、フューチャファイル、履歴バッファ、およびリタイアメントレジスタファイルを用いることにより、複数のレジスタのレジスタマップおよびプール等を用いることにより)実装され得る様々な様式を図示する。リタイアメントユニット154および物理レジスタファイルユニット158は、実行クラスタ160に結合される。実行クラスタ160は、1もしくは複数の実行ユニット162のセット、および1もしくは複数のメモリアクセスユニット164のセットを含む。複数の実行ユニット162は、様々なオペレーション(例えば、シフト、加算、減算、乗算)を、様々なタイプのデータ(例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して実行し得る。いくつかの実施形態は、複数の特定の関数または複数のセットの関数に専用のいくつかの実行ユニットを含み得るが、他の実施形態は、1つのみ実行ユニットまたは複数の実行ユニットを含み、それらの全てがあらゆる関数を実行し得る。スケジューラユニット156、物理レジスタファイルユニット158、および実行クラスタ160は、場合によっては複数であるものとして示される。これは、複数の一定の実施形態が特定の複数のタイプのデータ/オペレーションのための複数の別個のパイプラインを作成するからである(例えば、各々が、自身のスケジューラユニット、物理レジスタファイルユニット、および/または実行クラスタを有する、スカラ整数パイプライン、スカラ浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、および/またはメモリアクセスパイプライン。別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスタのみがメモリアクセスユニット164を有する複数の一定の実施形態が実装される)。別個の複数のパイプラインが使用される場合、これらのパイプラインのうち1または複数は、アウトオブオーダ発行/実行であり、残余はインオーダであり得ることを理解されたい。
複数のメモリアクセスユニット164のセットは、メモリユニット170に結合される。メモリユニット170は、データTLBユニット172を含む。データTLBユニット172は、データキャッシュユニット174に結合される。データキャッシュユニット174は、レベル2(L2)キャッシュユニット176に結合される。例示的な一実施形態において、複数のメモリアクセスユニット164は、ロードユニット、ストアアドレスユニット、およびストアデータユニットを含み得、その各々がメモリユニット170内のデータTLBユニット172に結合される。命令キャッシュユニット134は、メモリユニット170におけるレベル2(L2)キャッシュユニット176に更に結合される。L2キャッシュユニット176は、1または複数の他のレベルのキャッシュに、そして最終的にはメインメモリに結合される。
例として、例示的なレジスタリネーム、アウトオブオーダ発行/実行コアアーキテクチャは、パイプライン100を以下のように実装し得る。1)命令フェッチ138は、フェッチおよび長さデコードステージ102および104を実行する。2)デコードユニット140はデコードステージ106を実行する。3)リネーム/アロケータユニット152は、割り当てステージ108およびリネームステージ110を実行する。4)スケジューラユニット156は、スケジューリングステージ112を実行する。5)物理レジスタファイルユニット158およびメモリユニット170は、レジスタ読み取り/メモリ読み取りステージ114を実行し、実行クラスタ160は、実行ステージ116を実行する。6)メモリユニット170および物理レジスタファイルユニット158は、ライトバック/メモリライトステージ118を実行する。7)様々なユニットは、例外処理ステージ122に関与してもよく、8)リタイアメントユニット154および物理レジスタファイルユニット158は、コミットステージ124を実行する。
コア190は、本明細書において説明される命令を含む、1または複数の命令セット(例えば、x86命令セット(複数のより新しいバージョンを追加された、いくつかの拡張を伴う)、カリフォルニア州サニーベールのMIPS TechnologyのMIPS命令セット、カリフォルニア州サニーベールのARM HoldingのARM命令セット(NEON等の複数の任意選択の追加拡張を伴う)をサポートし得る。一実施形態において、コア190は、パックドデータ命令セット拡張(例えば、AVX1、AVX2、および/または後述されるいくつかの形態の一般的ベクトルフレンドリ命令フォーマット(U=0および/またはU=1))をサポートし、それによりパックドデータを用いて実行される多くのマルチメディアアプリケーションにより用いられる複数の動作を可能にする、ロジックを含む。
コアは、マルチスレッド化(2もしくはそれより多い並列セットのオペレーションもしくはスレッドを実行する)をサポートし、タイムスライスマルチスレッド化、同時マルチスレッド化(1つの物理コアが、物理コアが同時に、マルチスレッド化する複数のスレッドの各々に対する論理コアを提供する)、またはそれらの組み合わせ(例えば、タイムスライスフェッチおよびデコード、ならびにインテル(登録商標)ハイパースレッディング技術等における以後の同時マルチスレッド化)を含む様々な様式でサポートし得ることを理解されたい。
レジスタリネームは、アウトオブオーダ実行の文脈において説明されるが、レジスタリネームは、インオーダアーキテクチャにおいて用いられ得ることを理解されたい。プロセッサの図示される実施形態は、別個の命令および複数のデータキャッシュユニット134/174、ならびに共有L2キャッシュユニット176も含むが、複数の代替的な実施形態は、例えば、レベル1(L1)内部キャッシュまたは内部キャッシュの複数のレベル等、複数の命令およびデータの双方に対する1つの内部キャッシュを有し得る。いつかの実施形態において、システムは、内部キャッシュおよびコアおよび/またはプロセッサの外部にある外部キャッシュの組み合わせを含みえる。あるいは、キャッシュの全てがコアおよび/またはプロセッサの外部にあってもよい。
図2は、本発明の複数の実施形態による、2以上のコアを有し、統合メモリコントローラを有し、また統合グラフィックスを有し得るプロセッサ200のブロック図である。図2において実線で囲まれた複数のボックスは、シングルコア202Aと、システムエージェント210と、1もしくは複数のバスコントローラユニット216のセットとを有するプロセッサ200を図示するが、破線で囲まれた複数のボックスの任意選択の追加は、複数のコア202A〜Nと、システムエージェントユニット210内の1または複数の統合メモリコントローラユニット214のセットと、特定用途用ロジック208とを有する代替的プロセッサ200を図示する。
従って、プロセッサ200の複数の異なる実装は、1)統合グラフィックスおよび/または科学的(スループット)ロジック(1または複数のコアを含み得る)である特定用途用ロジック208、および1または複数の汎用コア(例えば、汎用インオーダコア、汎用アウトオブオーダコア、2つの組み合わせ)である複数のコア202A〜Nを用いるCPU、2)主にグラフィックスおよび/または科学的(スループット)用の多数の特定用途用コアである複数のコア202A〜Nを用いるコプロセッサ、および3)多数の汎用インオーダコアである複数のコア202A〜Nを用いるコプロセッサを含み得る。従って、プロセッサ200は、例えば、ネットワークもしくは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU(汎用グラフィクス処理ユニット)、ハイスループットの多集積コア(MIC)コプロセッサ(30もしくはそれよりも多いコアを含む)、エンベデッドプロセッサ等の汎用プロセッサ、コプロセッサまたは特定用途用プロセッサであってもよい。プロセッサは1または複数のチップ上に実装され得る。プロセッサ200は、1または複数の基板の一部であってもよく、および/または、例えばBiCMOS、CMOS、またはNMOS等、いくつかの処理技術のうちのいずれかを用いてそれらの上に実装されてもよい。
メモリ階層は、複数の統合メモリコントローラユニット214のセットに結合される複数のコア、セットまたは1もしくは複数の共有キャッシュユニット206、および外部メモリ(図示せず)内に1もしくは複数のレベルのキャッシュを含む。複数の共有キャッシュユニット206のセットは、レベル2(L2)、レベル3(L3)、レベル4(L4)等の1または複数の中間レベルのキャッシュ、他の複数のレベルのキャッシュ、最後のレベルのキャッシュ(LLC)、および/またはこれらの組み合わせを含み得る。一実施形態において、リングベースの相互接続ユニット212は、統合グラフィックスロジック208、複数の共有キャッシュユニット206のセット、およびシステムエージェントユニット210/統合メモリコントローラユニット214を相互接続し、複数の代替的な実施形態は、そのような複数のユニットを相互接続する、任意の数の周知技術を使用し得る。一実施形態において、コヒーレンシは、1もしくは複数のキャッシュユニット206と複数のコア202A〜Nとの間で維持される。いくつかの実施形態において、コア202A〜Nのうちの1または複数は、マルチスレッディングが可能である。
システムエージェント210は、コア202を調整して動作させる複数のコンポーネントを含む。システムエージェントユニット210は、例えば、電力制御ユニット(PCU)およびディスプレイユニットを含み得る。PCUは、複数のコア202A〜Nおよび統合グラフィックスロジック208の電力状態を調整するのに必要とされるロジックおよび複数のコンポーネントであってもよく、またはこれらを含んでもよい。ディスプレイユニットは、1または複数の外部接続されたディスプレイを駆動するためのものである。
複数のコア202A〜Nは、アーキテクチャ命令セットの面で同種または異種であってよい。すなわち、コア202A〜Nのうちの2またはそれよりも多いコアは、同一の命令セットを実行し得るが、他のものは、その命令セットまたは異なる命令セットのサブセットのみを実行し得る。一実施形態において、複数のコア202A〜Nは、異種であり、後述される複数の「小さい」コアおよび複数の「大きい」コアの双方を含む。
図3〜図6は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルド型PC、携帯情報端末、工学ワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子デバイスの技術分野において既知の他の複数のシステム設計および構成も好適である。一般に、本明細書において開示されるプロセッサおよび/または他の実行ロジックを組み込むことができる多種多様なシステムまたは電子デバイスに対して、概ね適用可能である。
ここで図3を参照すると、本発明の一実施形態によるシステム300のブロック図が示される。システム300は、1または複数のプロセッサ310、315を含み、1または複数のプロセッサ310、315は、コントローラハブ320に結合され得る。一実施形態において、コントローラハブ320は、グラフィックスメモリコントローラハブ(GMCH)390および入力/出力ハブ(IOH)350(複数の別個のチップ上にあり得る)を含む。GMCH390は、メモリコントローラおよびグラフィックスコントローラを含み、これらにメモリ340およびコプロセッサ345が結合される。IOH350は、入力/出力(I/O)デバイス360をGMCH390に結合する。あるいは、メモリおよび複数のグラフィックスコントローラの一方または双方は、(本明細書において説明されるように)プロセッサ内に統合され、メモリ340およびコプロセッサ345は、プロセッサ310に直接に結合され、シングルチップ内のコントローラハブ320は、IOH350と結合される。
複数の追加のプロセッサ315の任意選択の性質は、図3内の複数の破線で示される。各プロセッサ310、315は、本明細書において説明される複数の処理コアのうち1または複数を含み、いくつかのバージョンのプロセッサ200であり得る。
メモリ340は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、または2つの組み合わせであってよい。少なくとも1つの実施形態については、コントローラハブ320は、フロントサイドバス(FSB)等のマルチドロップバス、QuickPath相互接続(QPI)等のポイントツーポイントインターフェース、または類似の接続395を介してプロセッサ310、315と通信する。
一実施形態において、コプロセッサ345は、例えば、ハイスループットMICプロセッサ、ネットワークもしくは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、エンベデッドプロセッサ等の特定用途用プロセッサである。一実施形態において、コントローラハブ320は、統合グラフィックスアクセラレータを含み得る。
アーキテクチャ、マイクロアーキテクチャ、熱、電力消費の複数の特性等を含む、様々な性能の測定基準の観点において、物理リソース310、315の間には様々な差異が存在し得る。
一実施形態において、プロセッサ310は、通常のタイプの複数のデータ処理オペレーションを制御する複数の命令を実行する。複数のコプロセッサ命令が、複数の命令に埋め込まれ得る。プロセッサ310は、取り付けられたコプロセッサ345により実行されるべきタイプであるものとして、これらのコプロセッサ命令を認識する。従って、プロセッサ310は、コプロセッサバスまたは他の相互接続上で、これらのコプロセッサ命令(または複数のコプロセッサ命令を表す複数の制御信号)をコプロセッサ345に発行する。コプロセッサ345は、複数の受信済みコプロセッサ命令を受け取り、実行する。
ここで図4を参照すると、本発明の一実施形態による、第1のより具体的な例示的なシステム400のブロック図が示される。図4に示されるように、マルチプロセッサシステム400は、ポイントツーポイント相互接続システムであり、第1のプロセッサ470、およびポイントツーポイント相互接続450を介して結合される第2のプロセッサ480を含む。プロセッサ470および480の各々は、いくつかのバージョンのプロセッサ200であり得る。本発明の一実施形態において、プロセッサ470および480は各々、プロセッサ310および315であるが、コプロセッサ438は、コプロセッサ345である。別の実施形態において、プロセッサ470および480は各々、プロセッサ310およびコプロセッサ345である。
統合メモリコントローラ(IMC)ユニット472および482を各々含む、プロセッサ470および480が示される。また、プロセッサ470は、その複数のバスコントローラユニットの一部として、ポイントツーポイント(P―P)インターフェース476および478を含む。同様に、第2のプロセッサ480は、P―Pインターフェース486および488を含む。プロセッサ470、480は、複数のP―Pインターフェース回路478、488を用いて、ポイントツーポイント(P―P)インターフェース450を介して情報を交換し得る。図4に示されるように、IMC472および482は、複数のプロセッサを各メモリ、すなわち、メモリ432およびメモリ434に結合させるが、メモリ432およびメモリ434は、各プロセッサにローカルに取り付けられたメインメモリの一部であり得る。
プロセッサ470、480は各々、ポイントツーポイントインターフェース回路476、494、486、498を用いて、個々のP―Pインターフェース452、454を介してチップセット490と情報を交換し得る。チップセット490は、任意選択で、高性能インターフェース439を介してコプロセッサ438と情報を交換してもよい。一実施形態において、コプロセッサ438は、例えば、ハイスループットMICプロセッサ、ネットワークもしくは通信プロセッサ、圧縮エンジン、グラフィクスプロセッサ、GPGPU、エンベデッドプロセッサ等の特定用途用プロセッサである。
共有キャッシュ(図示せず)は、どちらかのプロセッサ内または双方のプロセッサの外側に含まれるが、P―P相互接続を介して複数のプロセッサとなおも接続され得、従って、プロセッサが低電力モードに置かれると、どちらかまたは双方のプロセッサのローカルキャッシュ情報は、共有キャッシュ内に格納され得る。
チップセット490は、インターフェース496を介して第1のバス416に結合され得る。一実施形態において、第1のバス416は、周辺構成要素相互接続(PCI)バス、またはPCI Expressバスまたは別の第3世代I/O相互接続バス等のバスであり得るが、本発明の範囲は、そのようには限定されない。
図4に示されるように、様々なI/Oデバイス414は、第1のバス416を第2のバス420に結合するバスブリッジ418と共に第1のバス416に結合され得る。一実施形態において、コプロセッサ、ハイスループットMICプロセッサ、GPGPU、アクセラレータ(例えば、グラフィックスアクセラレータまたはデジタル信号処理(DSP)ユニット等)、フィールドプログラマブルゲートアレイ、またはその他のプロセッサ等、1または複数の追加のプロセッサ415は、第1のバス416に結合される。一実施形態において、第2のバス420は、低ピンカウント(LPC)バスであり得る。様々なデバイスは、一実施形態において、例えば、キーボードおよび/またはマウス422、通信デバイス427、ならびに複数の命令/コードおよびデータ430を含み得るディスクドライブもしくは他の大容量ストレージデバイス等のストレージユニット428を含む第2のバス420に結合され得る。更に、オーディオI/O424は、第2のバス420に結合されてもよい。他の複数のアーキテクチャが可能であることに留意されたい。例えば、図4のポイントツーポイントアーキテクチャに代えて、システムは、マルチドロップバスまたは他のそのようなアーキテクチャを実装してもよい。
ここで図5を参照すると、本発明の一実施形態による、第2のより具体的な例示的なシステム500のブロック図が示される。図4および図5における複数の同一の要素は、複数の同一の参照番号を有し、図4の複数の一定の態様は、図5の他の複数の態様を不明瞭にするのを避けるべく、図5から省略されている。
図5は、プロセッサ470、480が統合メモリおよびI/O制御ロジック(「CL」)472および482を各々含み得ることを図示する。従って、CL472、482は、統合メモリコントローラユニットを含み、I/O制御ロジックを含む。図5は、メモリ432、434のみが制御ロジック472、482に結合されるのみならず、複数のI/Oデバイス514もCL472、482に結合されることを図示する。複数のレガシI/Oデバイス515は、チップセット490に結合される。
ここで図6を参照すると、本発明の実施形態による、SoC600のブロック図が示される。図2における複数の類似の要素は、同一の参照番号を有する。また、複数の破線ボックスは、より高度なSoCにおける複数の任意選択の特徴である。図6において、相互接続ユニット602は、1もしくは複数のコア202A〜Nおよび共有キャッシュユニット206のセットを含むアプリケーションプロセッサ610、システムエージェントユニット210、バスコントローラユニット216、統合メモリコントローラユニット214、統合グラフィックスロジック、画像プロセッサ、オーディオプロセッサ、およびビデオプロセッサを含み得るコプロセッサ620のセットまたは1もしくは複数、スタティックランダムアクセスメモリ(SRAM)ユニット630、ダイレクトメモリアクセス(DMA)ユニット632、および1または複数の外部ディスプレイを結合するディスプレイユニット640に結合される。一実施形態において、コプロセッサ620は、例えば、ネットワークもしくは通信プロセッサ、圧縮エンジン、GPGPU、ハイスループットMICプロセッサ、エンベデッドプロセッサ等の特定用途用プロセッサを含む。
本明細書において開示されるメカニズムの複数の実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような複数の実装アプローチの組み合わせで実装され得る。本発明の複数の実施形態は、少なくとも1つのプロセッサ、ストレージシステム(揮発性および不揮発性メモリ、ならびに/または複数のストレージ要素を含む)、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスを有する複数のプログラマブルシステム上で実行する複数のコンピュータプログラムまたはプログラムコードとして実装され得る。
図4で図示されるコード430等のプログラムコードは、複数の命令を入力し、本明細書において説明される複数の関数を実行し、出力情報を生成するべく適用され得る。出力情報は、既知の様式で、1または複数の出力デバイスに適用され得る。本願において、処理システムは、例えば、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、またはマイクロプロセッサ等のプロセッサを有するいずれのシステムも含む。
プログラムコードは、処理システムと通信するべく、ハイレベルプロシージャ型またはオブジェクト指向プログラミング言語で実装されてもよい。また、プログラムコードは、所望であれば、アセンブリ言語または機械言語で実装されてもよい。実際には、本明細書において説明される複数のメカニズムは、範囲において、いずれの特定のプログラミング言語にも限定されない。いずれの場合にも、言語は、コンパイル型言語またはインタープリタ型言語であってもよい。
少なくとも1つの実施形態の1または複数の態様は、プロセッサ内の様々なロジックを表す機械可読媒体上に格納された複数の代表的命令により実装され得、複数の代表的命令は、機械により読み取られると、機械に、本明細書において説明される複数の技術を実行するロジックを作成させる。「IPコア」として既知のそのような複数の表現は、有形機械可読媒体上に格納され、様々な顧客、または実際にロジックまたはプロセッサを作製する複数の製造機械にロードする複数の製造設備に提供され得る。
そのような機械可読記憶媒体としては、ハードディスク、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD―ROM)、書き換え可能コンパクトディスク(CD―RW)、および光磁気ディスク等、その他のタイプのディスクを含む記憶媒体、リードオンリメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)等のランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、および相変化メモリ(PCM)等の半導体デバイス、磁気もしくは光カード、または複数の電子命令を格納するのに好適なその他のタイプの媒体を含む、機械またはデバイスにより製造または形成される、非一時的で有形な複数の構成の物品が挙げられ得るが、これらに限定されない。
従って、本発明の複数の実施形態は、本明細書において説明される複数の構造、回路、装置、プロセッサ、および/またはシステムの特徴を定義する、ハードウェア記述言語(HDL)等の複数の命令または設計データを格納する、非一時的で有形の機械可読媒体も含む。そのような複数の実施形態は、プログラム製品とも呼ばれ得る。
いくつかの場合に、命令変換器は、ソース命令セットからターゲット命令セットに、命令を変換するべく使用され得る。例えば、命令変換器は、命令を、コアにより処理される1または複数の他の命令にトランスレート(例えば、静的バイナリトランスレーション、動的コンパイルを含む動的バイナリトランスレーションを用いる)、モーフィング、エミュレート、または変換し得る。命令変換器は、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせで実装され得る。命令変換器は、プロセッサ上にあってもよく、プロセッサから離れてもよく、または一部がプロセッサ上にあり、一部がプロセッサから離れてもよい。
図7は、本発明の複数の実施形態による、ソース命令セットのバイナリ命令を変換するソフトウェア命令変換器の使用と、ターゲット命令セットのバイナリ命令とを対比するブロック図を図示する。図示される実施形態において、命令変換器は、ソフトウェア命令変換器であるが、別法では、命令変換器は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの様々な組み合わせで実装され得る。図7は、x86コンパイラ704を用いてコンパイルされ、少なくとも1つのx86命令セットコアを用いるプロセッサ716によりネイティブに実行され得るx86バイナリコード706を生成し得る、ハイレベル言語702のプログラムを示す。少なくとも1つのx86命令セットコアを用いるプロセッサ716は、少なくとも1つのx86命令セットコアを用いるインテル(登録商標)プロセッサと実質的に同一の結果を実現するべく、(1)インテル(登録商標)x86命令セットコアの命令セットの実質的部分、または(2)少なくとも1つのx86命令セットコアを用いるインテル(登録商標)プロセッサ上で起動することを目的とする、複数のオブジェクトコードバージョンの複数のアプリケーションまたは他のソフトウェアを互換的に実行または処理することにより、少なくとも1つのx86命令セットコアを用いるインテル(登録商標)プロセッサと実質的に同一の複数の機能を実行し得るいずれのプロセッサも表す。x86コンパイラ704は、追加のリンケージ処理を用い、もしくは用いずに、少なくとも1つのx86命令セットコア716を用いるプロセッサ上で実行され得る、x86バイナリコード706(例えば、オブジェクトコード)を生成するように動作可能なコンパイラを表す。
同様に、図7は、代替的な命令セットのコンパイラ708を用いてコンパイルされ、少なくとも1つのx86命令セットコアを用いないプロセッサ714(例えば、カルフォルニア州サニーベールのMIPS TechnologyのMIPS命令セットを実行し、および/またはカリフォルニア州サニーベールのARM HoldingのARM命令セットを実行する複数のコアを用いるプロセッサ)によりネイティブに実行され得る、代替的な命令セットバイナリコード710を生成し得る、ハイレベル言語702のプログラムを示す。命令変換器712は、x86バイナリコード706を、x86命令セットコア714を用いないプロセッサによりネイティブに実行され得るコードに変換するべく、使用される。この変換済みコードは、代替的な命令セットバイナリコード710と同一である可能性が高くない。これを行うことができる命令変換器は、作製するのが困難なためである。しかし、変換済みコードは、汎用オペレーションを遂行し、代替的な命令セットの複数の命令からなるであろう。従って、命令変換器712は、エミュレーション、シミュレーション、またはその他の処理により、x86命令セットプロセッサまたはコアを有しないプロセッサまたは他の電子デバイスがx86バイナリコード706を実行することを可能にする、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組み合わせを表す。
キャッシュ占有決定および命令スケジューリングのための装置および方法
本発明の一実施形態は、データに関連するアドレスを用いて、データの項目が現在、キャッシュに格納されているか否かを判断し、この判断に基づいて1または複数の後続のオペレーション(例えば、マクロ命令、マイクロオペレーション等)をスケジューリングする。「スケジューリング」という用語は、本明細書において広範に用いられ、作業の特定部分があるスレッドから別のスレッド(例えば、スレッドが以下の例に説明される複数の他のスレッドの作業待ち行列から作業をスティールするように見える場合の)に再割り当てすることができるか否かに関する決定を含めて、特定の命令、マイクロオペレーションが実行されるべきか否か、および/またはいつ実行されるべきかに関する任意の決定を指す。
データがキャッシュであるか否かを判断することに加えて、一実施形態は、データが格納される特定のキャッシュレベル(例えば、レベル1(L1)、レベル2(L3)、より低次レベルのキャッシュ(LLC)等)の表示、(例えば、プロセッササイクルにおける)データにアクセスするのに必要とされる予期される量の「時間」の表示、および/または(例えば、プロセッササイクルの閾値番号を用いる)指定レベルの探索によると、アドレスが「遠すぎる」か否かについての表示も提供し得る。
本発明の一実施形態は、入力をアドレスとして受け取り、アドレスにより識別されたデータ項目が現在キャッシュされているか否かについての表示を提供する命令として実装され得る。以下に詳細に検討されるように、この命令の複数の結果は、実行の後続の複数の命令(例えば、複数のアドレスがキャッシュされる複数の命令を選択する)をスケジューリングする場合に用いられ得る。例として、この「キャッシュ占有決定」命令は、以下の形式を取り得る。
INC ACHE SRC1. DST1
データのアドレスは、ソースレジスタSRC1内に格納され、判断の複数の結果(すなわち、データがキャッシュされているか否か、どのレベルで、予期されるアクセス「時間」、アドレスが「遠すぎる」ことの表示等)がデスティネーションレジスタDST1に書き込まれる。
一実施形態において、キャッシュ占有決定命令は、(例えば、単一のベクトルレジスタが複数のアドレスオペランドを格納し得る)1もしくは複数のベクトルソースレジスタから複数のアドレスを読み取り、複数の結果を1もしくは複数のベクトルデスティネーションレジスタを書き込む(例えば、単一のベクトルデスティネーションレジスタは、複数の結果を格納する)アドバンストベクトルエクステンション(advanced vector extension、AVX)またはAVX2命令等のベクトル命令である。しかし、本発明の基礎となる原理は、ベクトル実装に限定されないことに留意されたい。
図8に図示されるように、一実施形態において、プロセッサにおける実行ロジック830は、本明細書において説明される複数のキャッシュ占有決定オペレーションを実行する、キャッシュ占有決定ロジック800を含む。例えば、INCACHE命令の実行に応答してキャッシュ占有決定ロジック800は、1または複数のアドレス801が複数のキャッシュレベル810―812のうち1つに現在格納されているデータに関連するか否かを判断し得る。上述のように、複数の結果802は、この情報、ならびに特定のキャッシュレベルの表示、(例えば、プロセッササイクルにおける)アクセスするのに予期される時間、および/または(例えば、複数のプロセッササイクルの指定閾値に基づいた)アドレスが遠すぎることの表示を含み得る。一実施形態において、判断は、アドレスを用いて(例えば、アドレスもしくはアドレスの一部を既存の複数のキャッシュタグと比較する)キャッシュ検索オペレーションを実行することにより行われる。
一実施形態において、複数の結果802が判断されると、後続の複数のオペレーションの実行をスケジューリングするスケジューリングロジック820により用いられ得る。例えば、LIキャッシュに格納されたデータを用いる複数のオペレーションがまず実行されてもよく、この後にL2キャッシュに格納されたデータを伴う複数のオペレーションが続き、この後にキャッシュ階層の更に下(例えば、低次レベルのキャッシュ(LLC)または他のより低いキャッシュレベルのストア)の複数のオペレーションが続く。図8に具体的には示されないが、スケジューリングロジック820は、プロセッサもしくはコアの命令デコードステージ(例えば、リザベーションステーションもしくは他のスケジューリングユニット)内に実装され得る。
一実施形態において、命令は、後続のオペレーションの示唆として機能する。アドレスに関連するキャッシュラインは、命令が戻された後(例えば、後続のオペレーションがデータを必要とするまでに)キャッシュから追い出され、その結果を古いとみなし得る。そのような場合には、性能のみが影響され、既知の技術を用いてアドレスは、キャッシュに単に戻される。
一実施形態において、命令は、キャッシュラインをキャッシュ810〜812に保持することを試みることができる。例えば、占有決定ロジック800により実行される検索は、キャッシュライン(例えば、少なくとも最近用いられた(LRU)ポリシ、または他の追い出しポリシに対するものであり、またはラインがどのくらい長くキャッシュ内に留まり/どのくらい最近用されたかの表示を提供する)を用いるものとして扱われ、後続の命令により用いられるのに十分長く、ラインがキャッシュ内に維持される確率を高め得る。
上述のように、次いで、後続の複数の命令および/またはスレッドの実行をスケジューリングするべく、キャッシュ占有命令により提供された情報(例えば、キャッシュにあるか否か、キャッシュレベル等)が用いられ得る。例えば、キャッシュ占有命令は、作業待ち行列の周囲でサイクルさせる作業待ち行列アルゴリズムを含み(しかしこれに限定されない)、イタレーション毎に作業の項目を抽出して処理し、場合によっては追加の複数の項目を用いて作業待ち行列を拡張する、様々なタイプの処理がより効率的なキャッシュ認識の態様で実行されることを可能にし得る。同時実行される場合、任意の項目が作業待ち行列から取り出され、実行され得る。並列処理があってもよく、またはなくてもよい。いくつかの場合、複数の項目を1つずつ処理する必要があり得る(シングルスレッドを付けられる)。他のシナリオにおいて、いくつかのワーカ(worker)が別個の項目を並列に処理し得る(以下の「作業スティール」の検討を参照されたい)。
本発明の一実施形態は、処理する作業待ち行列から次の項目を選択するべく用いられる。全ての物は等しく(公平性の問題は無視する)、データがすでに複数のキャッシュのうち1つに存在する(具体的には、LIキャッシュ810等、キャッシュ階層の更に上にあるもの)項目を選択することは、性能に有益であろう。これは、実行される処理がメモリバインドされ、次にどのアドレスが必要とされるかを予測することが困難である場合に、特に有益であり得る。
本発明の一実施形態において、本発明の複数の実施形態を利用する処理は、(例えば、本明細書において説明されるキャッシュ占有命令を利用して)「キャッシュされた」項目を探索して作業待ち行列をスキャンし、発見された第1のものを処理する。代替的に、または更に、処理は、キャッシュされ、キャッシュ階層において比較的高次の(例えば、LIキャッシュの)1または複数の作業項目を選択する複数の項目を識別し得る。キャッシュ内に項目が見つからない場合、(例えば、標準的技術を用いて)作業待ち行列上の第1の項目が取り出され、処理される。
本発明の複数の実施形態は、複数のノードがメモリ内に分散されているツリーをスキャンする場合に、特に適用可能であり得る。この実装において、作業待ち行列上の各項目は、ノードに対するポインタを指定する。そのようないくつかのノードが、同一のキャッシュラインに存在し得るが、任意の順序または位置にある。空間的位置関係を最適化することを希望するときに、多くの場合、予期されるキャッシュ動作に基づいて、例えば、ツリーに横断的な幅優先探索(BFS)または深さ優先探索(DFS)を選択し得る。
本発明の複数の実施形態を用いて、キャッシュにスキャンを導かせることにより、より大きな精度が得られ得る(上述の通り)。そのようなスキャンの例として、例えば任意の順序でリーフを処理するカッド/オクトツリーおよび複数のマーク・アンド・スイープ・ガーベッジ型コイレクタ(すなわち、プログラムにより最早用いられないメモリ部分を回収する処理)のスキャンが挙げられる。
別の例は、スレッドビルディングブロック(TBB)、本願の譲受人により開発された、マルチコアプロセッサを利用する複数のソフトウェアプログラムを書くためのC++テンプレートライブラリ等の並列実行フレームワークにおける作業スティールを含む。スレッドが複数の他のスレッドの作業待ち行列の作業をスティールするように見える場合、スティールするスレッドのキャッシュ内にすでに存在する作業をスティールするのが好ましい。作業がすでにキャッシュ内に存在するか否かの判断は、本明細書に説明される複数の技術を用いて実現され得る。
具体的な例として、本発明の一実施形態は、BFSスキャンの以下のテキストブック実装の文脈において説明される(ウィキペディアより)。
Figure 2016534476
一実施形態は、キャッシュ内に存在するエントリを探索してQまたはQの限定部分をスキャンする(例えば、上記のキャッシュ占有命令を実行する)ループにより、ライン6"t <- Q.dequeue()")を実装する。1つが見つかると、(場合によってはQの中央から)「デキュー」され、戻される。そのようなエントリが見つからない場合、Qの第1の要素がデキューされる。探索は、最早幅優先でないことに留意されたい。
別の用途は、ライン13をチェックし、uがキャッシュ内に存在するか否かを判断する。存在する場合、継続してマークをチェックし、「キャッシュされたキュー」の状態でエンキューする。uがキャッシュ内に存在しない場合、「キャッシュされないキュー」の状態でエンキューする。一実施形態において、複数の作業項目は、まず「キャッシュされたキュー」から実行される。キャッシュされた行列が空である場合、複数の作業項目は、「キャッシュされないキュー」から実行される。
データがキャッシュ内に格納されているか否かを判断するための方法の一実施形態は、図9に図示されている。901において、(例えば、実行を待機する1または複数の命令から判断された)処理されるデータに関連する1または複数のアドレスが識別される。すでに言及されたように、一実施形態において、複数のアドレスは、同時に読み取られて処理され得る(例えば、ベクトル命令によりベクトルレジスタから読み取られる)。902において、各アドレスに関連するデータが複数のキャッシュレベルのうち1つに格納されているか否かについて判断される。格納されていない場合、904において、データがキャッシュ内(例えば、デスティネーション/結果レジスタに)に存在しないことを示す結果が格納される。格納されている場合、903において、データが複数のキャッシュレベルのうち1つに、潜在的にはキャッシュレベルの識別および/または他の関連する情報(例えば、アクセスするのに予期される「時間」、アドレスが「遠すぎる」ことの表示等)と共に格納されていることを示す結果が、格納される。
905において、1または複数の後続のオペレーションは、複数の結果に基づいてスケジューリングされる。例えば、データのいずれもキャッシュレベルに格納されていない場合、後続の複数のオペレーションは、既存の複数のスケジューリング技術を用いてスケジューリングされ得る。しかし、保留中の複数のオペレーションのうち1または複数のデータがキャッシュに格納されている場合、これらの動作は、キャッシュ内に格納されたデータを有しないオペレーションの前に実行するべくスケジューリングされ得る。一実施形態において、データが格納されるキャッシュレベルの識別は、スケジューリングに用いられ得る。例えば、LIキャッシュに格納されたデータを用いる複数のオペレーションがまず実行されてもよく、この後にL2キャッシュに格納されたデータを伴う複数のオペレーション、次いでキャッシュ階層の更に下(例えば、低次レベルのキャッシュ(LLC)または他のより低いキャッシュレベルのストア)の複数のオペレーションが続く。
本明細書に説明される複数の技術を用いてスケジューリングされる複数の「オペレーション」は、例えばマクロ命令またはマイクロオペレーションを含む任意の形式のオペレーションを含み得ることに留意されたい。更に、本発明の基礎となる複数の原理は、複合命令セットコンピュータ(CISC)アーキテクチャおよび縮小命令セットコンピュータ(RISC)アーキテクチャを含む、任意のタイプの命令セットアーキテクチャ上に実装され得る。
各作業項目のデータがキャッシュ内に格納されているか否かに基づいて作業待ち行列から複数の作業項目をスケジューリングするための方法の一実施形態は、図10に図示されている。1001において、1または複数の作業項目が評価のために選択される。上述のように、各作業項目は、実行を保留している作業待ち行列を格納し得、複数の作業項目は、並列に評価され得る。1002において、(例えば、上述のデータのアドレスを用いて)1または複数の作業項目を実行するのに必要とされるデータがキャッシュ内に格納されたか否かについて判断される。格納されていない場合、1004において、データがキャッシュされていないことを示す結果が格納され、複数の作業項目は、1005において既存の複数の技術を用いて(例えば、BFSスキャンを用いて)スケジューリングされる。
しかし、1002において、1または複数の作業項目のデータがキャッシュされたと判断される場合、1003において、データが複数のキャッシュレベルのうち1つに、潜在的にはキャッシュレベルの識別および/または他の関連する情報(例えば、アクセスするのに予期される「時間」、アドレスが「遠すぎる」ことの表示等)と共に格納されていることを示す結果が、格納される。1005において、データがキャッシュされる複数の作業項目は、キャッシュ内に格納されたデータを有しない複数の作業項目の前に実行するべくスケジューリングされ得る。一実施形態において、データが格納されるキャッシュレベルの識別は、スケジューリングに用いられ得る。例えば、図9に示される実施形態におけるように、LIキャッシュに格納されたデータを有する複数の作業項目がまず実行され、その後にL2キャッシュに格納されたデータを有する複数の作業項目、次にキャッシュ階層の更に下の複数の作業項目(例えば、低次レベルのキャッシュ(LLC)または他のより低いキャッシュレベルに格納された)が続いてもよい。
本発明の複数の実施形態は、上記の様々な段階を含み得る。複数の段階は、汎用または特定用途用プロセッサに複数の段階を実行させるべく用いられ得る複数の機械実行可能命令に実施され得る。あるいは、これらの段階は、複数の段階を実行するためのハードワイヤードロジックを含む特定の複数のハードウェアコンポーネントにより、またはプログラミングされたコンピュータコンポーネントおよびカスタムハードウェアコンポーネントの任意の組み合わせにより、実行され得る。
本明細書において説明されるように、複数の命令は、特定の複数のオペレーションを実行するよう構成され、または予め定められた機能または非一時的コンピュータ可読媒体に実施されるメモリに格納された複数のソフトウェア命令を有する特定用途向け集積回路(ASIC)等のハードウェアの特定の構成を指し得る。従って、図に示される複数の技術は、1または複数の電子デバイス(例えば、終端局およびネットワーク要素等)上に格納され、実行されるコードおよびデータを用いて実装され得る。そのような電子デバイスは、非一時的コンピュータ機械可読記憶媒体(例えば、磁気ディスク、光ディスク、ランダムアクセスメモリ、リードオンリメモリ、フラッシュメモリデバイス、相変化メモリ)および一時的コンピュータ機械可読通信媒体(例えば、搬送波、赤外線信号、デジタル信号等の伝搬信号の電気、光、音響、又は他の形体)等、コンピュータ機械可読媒体を用いてコードおよびデータを(内部で、および/またはネットワークを介して他の電子デバイスを用いて)格納および通信する。更に、そのような電子デバイスは通常、1もしくは複数のストレージデバイス(非一時的機械可読記憶媒体)、ユーザ入力/出力デバイス(例えば、キーボード、タッチスクリーン、および/またはディスプレイ)、ならびにネットワーク接続等、1または複数の他のコンポーネントに結合された1もしくは複数のプロセッサのセットを含む。複数のプロセッサのセットおよび他の複数のコンポーネントの結合は通常、1または複数のバスおよびブリッジ(バスコントローラとも呼ばれる)を介して行われる。ストレージデバイスおよびネットワークトラフィックを搬送する複数の信号は、各々、1または複数の機械可読記憶媒体および機械可読通信媒体を表す。従って、所与の電子デバイスのストレージデバイスは通常、当該電子デバイスの1または複数のプロセッサのセット上で実行するためのコードおよび/またはデータを格納する。勿論、本発明の実施形態の1または複数の部分は、ソフトウェア、ファームウェア、および/またはハードウェアの異なる組み合わせを用いて実装され得る。詳細な説明を通じて、説明の目的のために、様々な特定の詳細が、本発明の完全な理解を提供するために記載された。しかし、当業者には本発明がこれら具体的な詳細のいくつかがなくても実施され得ることが明らかであろう。特定の例において、周知の構造および機能は、本発明の主題を不明瞭にするのを避けるべく、精巧詳細に説明されていない。従って、発明の範囲および趣旨は、以下の特許請求の範囲の観点から判断されるべきである。

Claims (21)

  1. 少なくとも1つのレベル1(L1)キャッシュを含むデータをキャッシュするための複数のキャッシュレベルの階層と、
    1または複数の後続のオペレーションに関連するデータが前記複数のキャッシュレベルのうち1つに格納されているか否かを判断するキャッシュ占有決定ロジックと、
    前記1または複数の後続のオペレーションに関連するデータが前記複数のキャッシュレベルに格納されているか否かの前記判断に基づいて、前記1または複数の後続のオペレーションの実行をスケジューリングするスケジューリングロジックとを備える、プロセッサ。
  2. 前記キャッシュ占有決定ロジックは、前記1または複数の後続の命令に関連するデータが前記複数のキャッシュレベルのうち1つに格納されているか否かを判断する、キャッシュ占有命令を実行する実行ロジックを含む、請求項1に記載のプロセッサ。
  3. 前記キャッシュ占有命令は、前記1または複数の後続の命令の前記データに関連する1または複数のアドレスを読み取り、前記データが前記複数のキャッシュレベルのうち1つに格納されているか否かを判断するべく、前記1または複数のアドレスを用いる、請求項2に記載のプロセッサ。
  4. 前記1または複数のアドレスを用いることは、前記1または複数のアドレスを用いたキャッシュ検索オペレーションを実行することを含む、請求項3に記載のプロセッサ。
  5. 前記キャッシュ占有決定ロジックは、前記1または複数の後続のオペレーションに関連する前記データが格納される特定の前記複数のキャッシュレベルを更に決定する、請求項1に記載のプロセッサ。
  6. 前記スケジューリングロジックは、前記1または複数の後続のオペレーションの前記データが格納される特定の前記複数のキャッシュレベルの前記決定に基づいて、前記1または複数の後続のオペレーションの実行をスケジューリングする、請求項5に記載のプロセッサ。
  7. 前記スケジューリングロジックは、キャッシュ階層において比較的低次のデータおよび/またはキャッシュレベルにないデータを用いた複数のオペレーションの前に、前記キャッシュ階層において比較的高次のデータを用いた複数のオペレーションをスケジューリングする、請求項6に記載のプロセッサ。
  8. 前記キャッシュ占有決定ロジックは、前記データにアクセスするのに予期される時間、および指定閾値に基づいた前記データが遠すぎるか否かの表示のうち少なくとも1つを更に決定する、請求項1に記載のプロセッサ。
  9. 前記スケジューリングロジックは、前記決定された、前記データにアクセスするのに予期される時間、および指定閾値に基づいた、前記データが遠すぎるか否かの表示のうち少なくとも1つに基づいて、前記1または複数の後続のオペレーションをスケジューリングする、請求項8に記載のプロセッサ。
  10. 前記複数のキャッシュレベルは、レベル2(L2)キャッシュおよび低次のレベルのキャッシュ(LLC)を更に含む、請求項1に記載のプロセッサ。
  11. 少なくとも1つのレベル1(L1)キャッシュを含む複数のキャッシュレベルの階層内のデータをキャッシュする段階と、
    1または複数の後続のオペレーションに関連するデータが前記複数のキャッシュレベルのうち1つに格納されているか否かを判断する段階と、
    前記1または複数の後続のオペレーションに関連するデータが前記複数のキャッシュレベルに格納されているか否かの前記判断に基づいて、前記1または複数の後続のオペレーションの実行をスケジューリングする段階とを備える、方法。
  12. 前記1または複数の後続の命令に関連するデータが前記複数のキャッシュレベルのうち1つに格納されているか否かを判断する、キャッシュ占有命令を実行する段階を更に備える、請求項11に記載の方法。
  13. 前記キャッシュ占有命令は、前記1または複数の後続の命令の前記データに関連する1または複数のアドレスを読み取り、前記データが前記複数のキャッシュレベルのうち1つに格納されているか否かを判断するべく、前記1または複数のアドレスを用いる、請求項12に記載の方法。
  14. 1または複数のアドレスを用いる段階は、前記1または複数のアドレス用いたキャッシュ検索オペレーションを実行する段階を備える、請求項13に記載の方法。
  15. 前記1または複数の後続のオペレーションに関連する前記データが格納される特定の前記複数のキャッシュレベルを決定する段階を更に備える、請求項11に記載の方法。
  16. 前記1または複数の後続のオペレーションの前記データが格納される特定の前記複数のキャッシュレベルの前記決定に基づいて、前記1または複数の後続のオペレーションの実行をスケジューリングする段階を更に備える、請求項15に記載の方法。
  17. キャッシュ階層において比較的低次のデータおよび/またはキャッシュレベルにないデータを用いた複数のオペレーションの前に、キャッシュ階層において比較的高次のデータを用いた複数のオペレーションをスケジューリングする段階を更に備える、請求項16に記載の方法。
  18. 前記データにアクセスするのに予期される時間、および指定閾値に基づいた前記データが遠すぎるか否かの表示のうち少なくとも1つを決定する段階を更に備える、請求項11に記載の方法。
  19. 前記決定された、前記データにアクセスするのに予期される時間、および指定閾値に基づいた、前記データが遠すぎるか否かの表示のうち少なくとも1つに基づいて、前記1または複数の後続のオペレーションをスケジューリングする段階を更に備える、請求項18に記載の方法。
  20. 前記複数のキャッシュレベルは、レベル2(L2)キャッシュおよび低次のレベルのキャッシュ(LLC)を更に含む、請求項11に記載の方法。
  21. システムであって、
    プログラムコードおよびデータを格納するためのメモリと、
    1または複数の周辺機器デバイスと通信するための入力/出力(IO)通信インターフェースと、
    前記システムをネットワークに通信可能に結合するためのネットワーク通信インターフェースと、
    プロセッサとを備え、
    前記プロセッサは、
    少なくとも1つのレベル1(L1)キャッシュを含む、データをキャッシュするための複数のキャッシュレベルの階層と、
    1または複数の後続のオペレーションに関連するデータが前記複数のキャッシュレベルのうち1つに格納されているか否かを判断する、キャッシュ占有決定ロジックと、
    前記1または複数の後続のオペレーションに関連するデータが前記複数のキャッシュレベルに格納されているか否かの前記判断に基づいて、前記1または複数の後続のオペレーションの実行をスケジューリングするスケジューリングロジックとを有する、システム。
JP2016542028A 2013-09-24 2014-09-08 キャッシュ占有決定および命令スケジューリングのための方法および装置 Expired - Fee Related JP6375379B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/035,231 US10140210B2 (en) 2013-09-24 2013-09-24 Method and apparatus for cache occupancy determination and instruction scheduling
US14/035,231 2013-09-24
PCT/US2014/054491 WO2015047700A1 (en) 2013-09-24 2014-09-08 Method and apparatus for cache occupancy determination and instruction scheduling

Publications (2)

Publication Number Publication Date
JP2016534476A true JP2016534476A (ja) 2016-11-04
JP6375379B2 JP6375379B2 (ja) 2018-08-15

Family

ID=52692054

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016542028A Expired - Fee Related JP6375379B2 (ja) 2013-09-24 2014-09-08 キャッシュ占有決定および命令スケジューリングのための方法および装置

Country Status (7)

Country Link
US (1) US10140210B2 (ja)
EP (1) EP3049924B1 (ja)
JP (1) JP6375379B2 (ja)
KR (1) KR101804908B1 (ja)
CN (1) CN105453041B (ja)
TW (1) TWI536165B (ja)
WO (1) WO2015047700A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI621015B (zh) * 2015-09-01 2018-04-11 慧榮科技股份有限公司 讀取及寫入命令排程方法以及使用該方法的裝置
TWI588652B (zh) * 2015-09-01 2017-06-21 慧榮科技股份有限公司 讀取及寫入命令排程方法以及使用該方法的裝置
US10452395B2 (en) 2016-07-20 2019-10-22 International Business Machines Corporation Instruction to query cache residency
US10621095B2 (en) 2016-07-20 2020-04-14 International Business Machines Corporation Processing data based on cache residency
US10521350B2 (en) 2016-07-20 2019-12-31 International Business Machines Corporation Determining the effectiveness of prefetch instructions
US10169239B2 (en) 2016-07-20 2019-01-01 International Business Machines Corporation Managing a prefetch queue based on priority indications of prefetch requests
US9946646B2 (en) * 2016-09-06 2018-04-17 Advanced Micro Devices, Inc. Systems and method for delayed cache utilization
US10095493B2 (en) 2016-12-14 2018-10-09 International Business Machines Corporation Call sequence generation based on type of routine
US10241769B2 (en) 2016-12-14 2019-03-26 International Business Machines Corporation Marking sibling caller routines
US20180165073A1 (en) 2016-12-14 2018-06-14 International Business Machines Corporation Context information based on type of routine being called
US10180827B2 (en) 2016-12-14 2019-01-15 International Business Machines Corporation Suppressing storing of context information
US10235190B2 (en) 2016-12-14 2019-03-19 International Business Machines Corporation Executing instructions to store context information based on routine to be executed
US10152338B2 (en) 2016-12-14 2018-12-11 International Business Machines Corporation Marking external sibling caller routines
US10372452B2 (en) * 2017-03-14 2019-08-06 Samsung Electronics Co., Ltd. Memory load to load fusing
CN108279928B (zh) * 2018-01-30 2021-03-19 上海兆芯集成电路有限公司 微指令调度方法及使用此方法的装置
CN111752868B (zh) * 2019-03-27 2024-06-18 北京沃东天骏信息技术有限公司 Lru缓存的实现方法、装置、计算机可读存储介质及设备
CN113138798A (zh) * 2020-01-18 2021-07-20 佛山市云米电器科技有限公司 多场景下的指令执行方法、装置、设备及存储介质
CN116755782B (zh) * 2023-08-18 2023-10-20 腾讯科技(深圳)有限公司 一种指令调度的方法、装置、设备、存储介质及程序产品

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1091455A (ja) * 1996-03-14 1998-04-10 Internatl Business Mach Corp <Ibm> キャッシュ・ヒット/ミスにおける分岐
JPH11288373A (ja) * 1998-01-30 1999-10-19 Hewlett Packard Co <Hp> コンピュ―タ・システム
WO2002069150A1 (fr) * 2001-02-27 2002-09-06 International Business Machines Corporation Microprocesseur et procede de distribution d'ordres d'execution d'instructions
JP2010026583A (ja) * 2008-07-15 2010-02-04 Hiroshima Ichi プロセッサ
US20100095300A1 (en) * 2008-10-14 2010-04-15 Vmware, Inc. Online Computation of Cache Occupancy and Performance
JP2011150691A (ja) * 2009-12-25 2011-08-04 Fujitsu Ltd 演算処理装置、情報処理装置及び制御方法
US20110231857A1 (en) * 2010-03-19 2011-09-22 Vmware, Inc. Cache performance prediction and scheduling on commodity processors with shared caches

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5943691A (en) * 1995-12-27 1999-08-24 Sun Microsystems, Inc. Determination of array padding using collision vectors
US5724586A (en) * 1996-09-30 1998-03-03 Nec Research Institute, Inc. Method for improving cache locality of a computer program
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US6237059B1 (en) 1997-11-26 2001-05-22 Compaq Computer Corporation Method for estimating statistics of properties of memory system interactions among contexts in a computer system
GB2348306B (en) 1999-03-25 2003-07-30 Ibm Data processing systems and method for processing tasks in such systems
EP1586039A2 (en) 2002-11-22 2005-10-19 Koninklijke Philips Electronics N.V. Using a cache miss pattern to address a stride prediction table
US8069336B2 (en) * 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
JP4520788B2 (ja) 2004-07-29 2010-08-11 富士通株式会社 マルチスレッドプロセッサ
US7392340B1 (en) * 2005-03-21 2008-06-24 Western Digital Technologies, Inc. Disk drive employing stream detection engine to enhance cache management policy
US7430642B2 (en) * 2005-06-10 2008-09-30 Freescale Semiconductor, Inc. System and method for unified cache access using sequential instruction information
JP4651671B2 (ja) 2005-08-09 2011-03-16 富士通株式会社 スケジュール制御プログラム及びスケジュール制御方法
US20070180158A1 (en) 2006-02-01 2007-08-02 International Business Machines Corporation Method for command list ordering after multiple cache misses
US20070186049A1 (en) 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for instruction lines
US7447879B2 (en) 2006-02-09 2008-11-04 International Business Machines Corporation Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss
US7689773B2 (en) * 2006-11-30 2010-03-30 Sun Microsystems, Inc. Methods and apparatus for estimating fair cache miss rates on a chip multiprocessor
WO2009029549A2 (en) * 2007-08-24 2009-03-05 Virtualmetrix, Inc. Method and apparatus for fine grain performance management of computer systems
US7890702B2 (en) * 2007-11-26 2011-02-15 Advanced Micro Devices, Inc. Prefetch instruction extensions
US8392651B2 (en) * 2008-08-20 2013-03-05 Mips Technologies, Inc. Data cache way prediction
US9244732B2 (en) * 2009-08-28 2016-01-26 Vmware, Inc. Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution
US9639479B2 (en) 2009-09-23 2017-05-02 Nvidia Corporation Instructions for managing a parallel cache hierarchy
US20110072218A1 (en) * 2009-09-24 2011-03-24 Srilatha Manne Prefetch promotion mechanism to reduce cache pollution
US8677071B2 (en) * 2010-03-26 2014-03-18 Virtualmetrix, Inc. Control of processor cache memory occupancy
US9110810B2 (en) 2011-12-06 2015-08-18 Nvidia Corporation Multi-level instruction cache prefetching
US9311098B2 (en) * 2013-05-07 2016-04-12 Apple Inc. Mechanism for reducing cache power consumption using cache way prediction

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1091455A (ja) * 1996-03-14 1998-04-10 Internatl Business Mach Corp <Ibm> キャッシュ・ヒット/ミスにおける分岐
JPH11288373A (ja) * 1998-01-30 1999-10-19 Hewlett Packard Co <Hp> コンピュ―タ・システム
WO2002069150A1 (fr) * 2001-02-27 2002-09-06 International Business Machines Corporation Microprocesseur et procede de distribution d'ordres d'execution d'instructions
JP2010026583A (ja) * 2008-07-15 2010-02-04 Hiroshima Ichi プロセッサ
US20100095300A1 (en) * 2008-10-14 2010-04-15 Vmware, Inc. Online Computation of Cache Occupancy and Performance
JP2011150691A (ja) * 2009-12-25 2011-08-04 Fujitsu Ltd 演算処理装置、情報処理装置及び制御方法
US20110231857A1 (en) * 2010-03-19 2011-09-22 Vmware, Inc. Cache performance prediction and scheduling on commodity processors with shared caches

Also Published As

Publication number Publication date
CN105453041A (zh) 2016-03-30
TWI536165B (zh) 2016-06-01
TW201516681A (zh) 2015-05-01
US10140210B2 (en) 2018-11-27
JP6375379B2 (ja) 2018-08-15
CN105453041B (zh) 2019-10-01
KR20160033768A (ko) 2016-03-28
WO2015047700A1 (en) 2015-04-02
EP3049924A4 (en) 2017-06-28
KR101804908B1 (ko) 2017-12-07
US20150089139A1 (en) 2015-03-26
EP3049924B1 (en) 2020-12-23
EP3049924A1 (en) 2016-08-03

Similar Documents

Publication Publication Date Title
JP6375379B2 (ja) キャッシュ占有決定および命令スケジューリングのための方法および装置
JP6143872B2 (ja) 装置、方法、およびシステム
US9619750B2 (en) Method and apparatus for store dependence prediction
US9361233B2 (en) Method and apparatus for shared line unified cache
CN108885586B (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
US9904553B2 (en) Method and apparatus for implementing dynamic portbinding within a reservation station
US9158702B2 (en) Apparatus and method for implementing a scratchpad memory using priority hint
JP5985526B2 (ja) システムコールのためのロバスト且つ高性能な命令
US9183161B2 (en) Apparatus and method for page walk extension for enhanced security checks
US11531562B2 (en) Systems, methods, and apparatuses for resource monitoring
US11182298B2 (en) System, apparatus and method for dynamic profiling in a processor
US10761979B2 (en) Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value
CN108027726B (zh) 用于在远程处理器上实施原子动作的硬件机制
US20180165200A1 (en) System, apparatus and method for dynamic profiling in a processor
EP3716057A1 (en) Method and apparatus for a multi-level reservation station with instruction recirculation
US9710389B2 (en) Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform
CN112148106A (zh) 用于处理器的混合预留站的系统、装置和方法
US20210200538A1 (en) Dual write micro-op queue
US20160378497A1 (en) Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170314

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170614

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180507

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180723

R150 Certificate of patent or registration of utility model

Ref document number: 6375379

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees