JP2008525919A - プログラマ制御のキャッシュ・ライン追出しポリシーのための方法 - Google Patents

プログラマ制御のキャッシュ・ライン追出しポリシーのための方法 Download PDF

Info

Publication number
JP2008525919A
JP2008525919A JP2007549512A JP2007549512A JP2008525919A JP 2008525919 A JP2008525919 A JP 2008525919A JP 2007549512 A JP2007549512 A JP 2007549512A JP 2007549512 A JP2007549512 A JP 2007549512A JP 2008525919 A JP2008525919 A JP 2008525919A
Authority
JP
Japan
Prior art keywords
cache
pool
priority
code
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007549512A
Other languages
English (en)
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 JP2008525919A publication Critical patent/JP2008525919A/ja
Pending legal-status Critical Current

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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

キャッシュ・ライン追出しポリシーのプログラム制御を可能にするための方法および装置。それぞれ異なるキャッシュ優先度レベルを有するコードの一部を、それらのコードの一部について予期されまたは測定されたアクセス・パターンに基づいてプログラマがマーク付けすることを可能にする機構が提供される。所定の優先度レベルに関連するキャッシュ追出しポリシーを達成する際に支援となる対応するキューが、ソースおよび/またはアセンブリ・レベルのコードから生成された機械コード内に埋め込まれる。異なる優先度がそれぞれに割り当てられた複数のプールにキャッシュ空間を分割するキャッシュ・アーキテクチャが提供される。メモリ・アクセス命令の実行に応答して、適切なキャッシュ・プールが選択され、命令のキュー内に含まれる情報に基づいて探索される。キャッシュ・ミスが生じると、プールに関連したキャッシュ追出しポリシーを使用して、追出されるキャッシュ・ラインがそのプールから選択される。nウェイ群連想キャッシュと完全連想キャッシュの両方について、本機構の実装が述べられる。

Description

本発明の分野は、一般には、コンピュータ・システムに関し、限定的にではないが、より詳細には、プログラマ制御のキャッシュ・ライン追出しポリシーをサポートするための技術に関する。
汎用プロセッサは一般に、それがインストールされたシステムのメモリ階層の一部として、コヒーレント・キャッシュを組み込む。キャッシュは、プロセッサ・コアの近くにある小さい高速のメモリであり、複数のレベルで構成され得る。たとえば、現代のマイクロプロセッサは一般に、1次(L1)と2次(L2)の両方のオンダイ・キャッシュを使用し、L1キャッシュはより小さく高速であり(コアにより近く)いがL2キャッシュはより大きいが遅い。キャッシングは、空間的局所性の特性(アクセスされた位置に隣接したアドレスのメモリ位置が同様にアクセスされる可能性が高い)、および時間的局所性(アクセスされたメモリ位置が再びアクセスされる可能性が高い)を使用して、必要なデータおよび命令をプロセッサ・コアの近くに保ち、したがってメモリ・アクセス待ち時間を減少させることによって、プロセッサ上のアプリケーション性能にとって利益をもたらす。
一般に、3つのタイプの全体的キャッシュ手法(各手法を実施するための様々な技術を伴う)がある。これらは、直接マップ型キャッシュ、完全連想キャッシュ、およびNウェイ群連想キャッシュ(N−way set−associative cache)を含む。直接マップ型キャッシュの下では、それぞれのメモリ位置が、それが他の多くのメモリ位置と共有する単一のキャッシュ・ラインにマップされ、このラインを共有する多くのアドレスのうちの1つだけが、所与のときにそれを使用することができる。これは、概念と実装の両方において、最も単純な技術である。このキャッシュ手法の下では、キャッシュ・ヒットをチェックする回路は高速であり、設計が容易であるが、ヒット率は、柔軟性が低いため、他の設計に比べて比較的に劣る。
完全連想キャッシュの下では、いずれのメモリ位置も、いずれかのキャッシュ・ラインにキャッシュできる。これは、最も複雑な技術であり、ヒットをチェックするとき、洗練された探索アルゴリズムを必要とする。それは、このため、キャッシュ全体の減速につながることがあるが、任意のメモリ・アドレスをキャッシュする非常に多くの選択肢があるので、最良の論理的ヒット率を提供する。
nウェイ群連想キャッシュは、直接マップ型と完全連想キャッシュの側面を組み合わせる。この手法の下では、キャッシュは、それぞれn個のライン(たとえば、n=2,4,8など)のセットに分割され、いずれかのメモリ・アドレスが、これらのn個のラインのいずれかにキャッシュできる。キャッシュ・ラインのセットは事実上、n個のグループに論理的に分割される。これは、直接マップ型キャッシュに比べて、ヒット率を向上させるが、しかし、(nが小さいまま保たれるので)探索面の重大な不利益(penalty)は生じない。
全体として、キャッシュは、時間と共にメモリ・アクセス操作を加速するように設計されている。汎用プロセッサでは、これに従って、様々なタイプのアプリケーションにとってこのキャッシュ手法はかなりうまく働くが、いずれかの単一のアプリケーションにとって例外的にうまくは働き得ない。キャッシュ手法の性能に影響を及ぼす複数の考慮事項がある。サイズおよびアクセス待ち時間など、一部の側面は、コストおよびプロセスの制限によって制限される。たとえば、より大きいキャッシュは、非常に多くの数のトランジスタを使用するので高価であり、したがって半導体サイズと歩留り低下の両方の面で、生産するのにより高価である。アクセス待ち時間は一般に、製造技術、ならびにプロセッサ・コアおよび/またキャッシュのクロック・レート(それぞれについて異なるクロック・レートが使用される場合)によって決まる。
別の重要な考慮事項は、キャッシュ追出しである。キャッシュに新しいデータおよび/または命令を加えるために、1つまたはそれ以上のキャッシュ・ラインが割り当てられる。キャッシュが一杯である場合(通常、起動操作後の場合)、同じ数の既存キャッシュ・ラインを追出されなければならない。一般に追出しポリシーは、ランダム、LRU(least recently used:最長未使用)および擬似LRUを含む。現在の慣行では、割当ておよび追出しのポリシーは、キャッシュ・コントローラ・ハードウェアによって実装される対応するアルゴリズムによって実施される。これは、一部のタイプのアプリケーションにはよく適し得るが、他のタイプのアプリケーションには性能不良をもたらし、キャッシュ性能レベルがアプリケーション・コードの構造に依存する、柔軟性のない追出しポリシーにつながる。
上記態様、および付随する本発明の利点の多くは、以下の詳細な説明を参照することによってよりよく理解されるようになるように、添付の図面を併せて考慮される場合、より容易に理解されるようになる。図面では、同じ参照符号は、特段の定めがない限り、様々な図のすべてを通して、同様の部分に言及する。
プログラマ制御されたキャッシュ・ライン追出しポリシーを可能にするための方法および装置の実施形態が、本明細書で説明される。以下の説明では、本発明の実施形態についての完全な理解を提供するため、複数の具体的な詳細について述べる。しかし、本発明は、特定の詳細のうちの1つまたはそれ以上を伴わず、または他の方法、構成要素、材料などを伴って実施され得ることが当業者には認識されよう。他の例では、よく知られている構造、材料または操作は、本発明の態様を不明瞭にすることを避けるため、詳細には示されまたは述べられていない。
本明細書全体を通して「一実施形態(one embodiment、an embodiment)」への言及は、実施形態に関連して述べられる特定の特徴、構造または特性が、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体を通して様々な場所に現れる語句「一実施形態」は、すべて同じ実施形態に言及しているとは限らない。さらに、特定の特徴、構造または特性は、1つまたはそれ以上の実施形態において任意の適切なやり方で組み合わせることができる。
一般的なメモリ階層モデルが、図1に示される。階層の最上部には、プロセッサ101内のプロセッサ・レジスタ100があり、このレジスタは、オペランド、命令オペ・コード、処理結果他など、処理コアによって使用される一時データを格納するために使用される。次のレベルには、一般に少なくともL1キャッシュ102を含み、また一般にL2キャッシュ104をさらに含むハードウェア・キャッシュがある。一部のプロセッサは、統合型レベル3(L3)キャッシュ105をも提供する。これらのキャッシュは、何らかの形のDRAM(dynamic random access memory:ダイナミック・ランダム・アクセス・メモリ)ベースのメモリを一般に含むシステム・メモリ106に(キャッシュ・コントローラを介して)結合される。システム・メモリは、ディスク・ドライブなどの1つまたはそれ以上のローカル大容量記憶装置108から一般に取り出されるデータ、および/またはテープ/ネットワーク110によって示されるバックアップ・ストア(たとえばテープ・ドライブ)内にまたはネットワークを介して格納されたデータなどを格納するために使用される。
より新しい多くのプロセッサは、L1キャッシュから最近追出されたデータを格納するために使用されるビクティム・キャッシュ(またはビクティム・バッファ)112をさらに使用する。このアーキテクチャの下では、追出されたデータ(ビクティム)は、まずビクティム・バッファに、次いでL2キャッシュに移動される。ビクティム・キャッシュは、特定のキャッシュ・ラインの1つのコピーだけが様々なプロセッサ・キャッシュ・レベルによって維持される、排他的キャッシュ・アーキテクチャにおいて使用される。
階層の各レベルについての例示的な容量およびアクセス時間情報によって示されるように、階層の最上位近くのメモリは、より速いアクセスおよびより小さいサイズを有し、階層の下部に向かってメモリは、遥かに大きいサイズおよびより遅いアクセスを有する。さらに、メモリ・タイプの記憶単位(バイト)当たりのコストは、アクセス時間のほぼ逆であり、レジスタ・ストレージが最も高価であり、テープ/ネットワーク・ストレージが最も安価である。これらの属性および関連する性能基準を考慮して、コンピュータ・システムは一般に、コスト対性能の均衡を保つように設計される。たとえば、一般にデスクトップのコンピュータは、16キロバイトのL1キャッシュ、256キロバイトのL2キャッシュを備えたプロセッサを使用し、512メガバイトのシステム・メモリを有し得る。対照的に、より高性能のサーバは、Intel(登録商標)Xeon(商標)MPプロセッサによって提供されるものなど、遥かに大きいキャッシュを備えたプロセッサを使用し、このプロセッサは、20キロバイト(データおよび実行トレース)キャッシュ、512キロバイトのL2キャッシュ、および4メガバイトのL3キャッシュを複数ギガバイトのシステム・メモリと共に含み得る。
図1に示されるようなメモリ階層を使用する1つの動機は、コスト/性能の考慮事項に基づいて、異なるメモリ・タイプを分離することである。抽象レベルでは、所与の各レベルは事実上、それより下のレベルのためのキャッシュとして機能する。したがって、システム・メモリ106は事実上、大容量記憶装置108用のあるタイプのキャッシュであり、大容量記憶装置はさらに、テープ/ネットワーク110用のあるタイプのキャッシュとしても機能し得る。
これらの考慮事項に留意して、一般化された従来のキャッシュ使用モデルが、図2に示される。キャッシュ使用は、ブロック200で開始され、メモリ・アクセス要求が、データ位置識別子を参照する所与のレベルで受信され、このデータ位置識別子は、階層の次のレベルにおいてデータがどこに置かれているかを指定する。たとえば、プロセッサからの一般的なメモリ・アクセスは、対応するプログラム命令を実行することにより取得される、要求されたデータのアドレスを指定する。他のタイプのメモリ・アクセス要求は、より下のレベルで行われ得る。たとえば、オペレーティング・システムは、仮想メモリとして機能するためディスク・ドライブの一部を使用し、それによって、システム・メモリの機能サイズが増加し得る。そうする際に、オペレーティング・システムは、システム・メモリとディスク・ドライブとの間でメモリ・ページを「スワップし」、ページが一時スワップ・ファイル内に格納される。
アクセス要求に応答して、要求されたデータが適応可能なキャッシュ、すなわち階層の次のレベルの(有効な)キャッシュ内にあるかどうかの判断が、判断ブロック202で行われる。一般的な言葉で言うと、要求されたデータの存在は「キャッシュ・ヒット」であり、データの不在は「キャッシュ・ミス」となる。プロセッサ要求では、この判断によって、要求されたデータがL1キャッシュ102内にあるかどうか識別される。L2キャッシュ要求(対応するキャッシュ・コントローラによって出される)では、判断ブロック202によって、データがL2キャッシュ内で使用可能であるかどうか判断される。
データが適用可能キャッシュ内で使用可能である場合、判断ブロック202への応答はHITであり、論理はブロック210に進み、このブロックで、データがそのキャッシュから、このキャッシュのすぐ上のレベルの要求元に返される。たとえば、要求がプロセッサからL1キャッシュ102に対して行われ、データがL1キャッシュ内にある場合は、それは、プロセッサ(要求元)に返される。しかし、データがL1キャッシュ内にない場合は、キャッシュ・コントローラは、第2のデータ・アクセス要求を、このときはL1キャッシュからL2キャッシュに出す。データがL2キャッシュ内にある場合は、それは、L1キャッシュ、すなわち現在の要求元に返される。当業者に認識されるように、包含的なキャッシュ設計の下では、その後このデータは、L1キャッシュに書き込まれ、L1キャッシュからプロセッサに返される。本明細書で示された構成に加えて、一部のアーキテクチャは、並列パスを使用し、L2キャッシュが、L1キャッシュとプロセッサに同時にデータを返す。
要求されたデータが適用可能キャッシュ内に存在せず、MISSがもたらされると仮定する。この場合、論理はブロック204に進み、(要求されたデータによって)置き換えられるデータの単位が、適用可能なキャッシュ追出しポリシーを使用して決定される。たとえば、LI、L2およびL3キャッシュでは、記憶単位は「キャッシュ・ライン」である(プロセッサ・キャッシュの記憶単位はブロックとも称され、システム・メモリの置換単位は一般に、メモリ・ページである)。置き換えられる単位は、それがキャッシュから追出されるので、追出される単位を含む。従来のキャッシュ追出しに使用される最も一般的なアルゴリズムは、LRU、擬LRUおよびランダムである。
ブロック204の操作と共に、ブロック206で、要求されたデータ単位が、次のメモリ・レベルから取り出され、ブロック208で、追出された単位を置き換えるために使用される。たとえば、最初の要求がプロセッサによって行われ、要求されたデータが、L1キャッシュではないが、L2キャッシュ内で使用可能であると仮定する。Llキャッシュ・ミスに応答して、ブロック204で、L1キャッシュから追出されるキャッシュ・ラインが、キャッシュ・コントローラによって決定される。並行して、L2内の要求されたデータを含むキャッシュ・ラインが、追出しに選択されたキャッシュ・ラインの位置でL1キャッシュにコピーされ、したがって、追出されたキャッシュ・ラインに取って換わる。キャッシュ・データ単位が置き換えられた後、ブロック210で、その単位内に含まれる適用可能データが、要求元に返される。
従来の手法の下では、キャッシュ追出しポリシーは静的である。すなわち、それらは一般に、変更できないキャッシュ・コントローラ・ハードウェア内のプログラムされた論理によって実施される。たとえば、特定のプロセッサ・モデルは、そのキャッシュ・コントローラ論理内に埋め込まれた特定のキャッシュ追出しポリシーを有しており、その追出しポリシーが、プロセッサを使用するシステム内で実行されるすべてのアプリケーションのために使用されることを必要とする。
本発明の実施形態によれば、プログラム制御要素を介してキャッシュ追出しポリシーを制御するための機構が提供される。これによって、プログラマまたはコンパイラは、(ソース・コードから導出される)対応する機械コードの選択された部分、および/またはデータが、プログラム制御追出しポリシーを使用することによってどのようにキャッシュされるかキャッシュ・コントローラに指示するための制御キューをそのソース・コード内に埋め込むことができる。
概要として、プログラム・キャッシュ・ポリシー制御機構の一般的な態様を示すため、本発明の基本的な実施形態についてまず論じる。さらに、この機構によって使用される一般原理を示すため、ハイ・レベル・キャッシュ(たとえばL1、L2またはL3キャッシュ)を使用するこの実施形態の実装について述べる。これらの一般原理は、システム・メモリ・レベルなど、他のキャッシュ・レベルで同じように実施され得ることが理解されよう。
図3aを参照すると、基本的なの実施形態の一実装の下で実施される操作および論理を示すフローチャートが示される。この実装形態の下では、所与のキャッシュ・レベルのストレージ・リソースが、2つのプール、すなわち高優先度プールおよび低優先度プールに分割される。高優先度プールは、プロセッサによって近い将来再びアクセスされる可能性がより高いデータおよび/またはコードを含むキャッシュ・ラインの格納のために使用され、低優先度プールは、この時間フレーム中に再びアクセスされる可能性がより低いデータおよび/またはコードを含むキャッシュ・ラインの格納のために使用される。さらに、高優先度プールは、従来のキャッシュ追出し手法の下では通常追出されるキャッシュ・ラインを格納するために選択される。この実装の追加の態様によれば、要求されたデータを含むブロックがどのプールにキャッシュされるかキャッシュ・コントローラに指示するためのキューが、機械コードに埋め込まれる。
ブロック300で開始し、メモリ・アクセス・サイクルは、従来の手法と同じように進み、要求元(この実施例ではプロセッサ)が、取り出されるデータおよび/または命令のアドレスを参照するメモリ・アクセス要求を出す。しかし、この要求はさらに、キャッシュ・プール識別子(ID)を含んでおり、このキャッシュ・プール識別子は、取り出されたデータがキャッシュされるキャッシュ・プールを指定するために使用される。本機構のこの態様を実施するためのさらなる詳細について、以下に述べる。
上記と同様に、メモリ・アクセス要求に応答して、適用可能キャッシュ・レベルは、判断ブロック302によって示されるように、データが存在しているかどうかチェックする。一部の実施形態では、以下で述べるように、キャッシュ・プールIDは、対応するキャッシュ探索を支援するために使用される。キャッシュHITが生じる場合は、ブロック314で、データが要求元に戻され、サイクルを完了する。しかし、キャッシュMISSが生じる場合は、論理は判断ブロック304に進み、キャッシュ・プールIDが高優先度プールを指定しているか、それとも低優先度プールを指定しているか判断される。
キャッシュ・プールIDが高優先度プールを指定する場合は、要求に対応するデータおよび/または命令は、プログラマによって、(従来の追出しポリシーの下では、キャッシュ内にとどまるのに十分なほど頻繁にはアクセスされないが、)アプリケーションの他の部分より頻繁にアクセスされる可能性が高いアプリケーション・プログラムの部分に含まれるものと識別される。したがって、要求されたデータが格納される対応するキャッシュ・ラインを、それらのキャッシュ・ラインが低優先度キャッシュ・ラインに比べて低頻度に追出されるようにマーク付けすることが望まれる。キャッシュ・プールIDが低優先度プールを指定する場合は、これは、アプリケーションの関連する部分が、プログラマによって、より低頻度にアクセスされるとみなされていることを示す。一実施形態では、高優先度プールIDは、アサートされたビットを含み、低優先度IDは、アサートされていないビットを含む。以下でより詳細に述べるように、一実施形態では、高優先度データおよびコードを含むアプリケーションの部分は、高優先度プール内にキャッシュされるものとマークされ、他のすべてのデータおよびコードは単純に、低優先度プール内に、または初期設定により「デフォルト」プール内にキャッシュされる。
判断ブロック304の結果によれば、高優先度プールIDを伴う要求が最初に、ブロック306によって処理される。このブロックでは、プールのための適用可能キャッシュ追出しポリシー(また関連するアルゴリズム)を使用して、どのデータ・ブロック(キャッシュ・ライン)が置き換えられるかの決定が行われる。一実施形態では、キャッシュ・記憶空間の各部分が、固定サイズの、高および低優先度プールに分割される。この場合、置き換えられるキャッシュ・ラインは、適用可能キャッシュ追出しアルゴリズムを使用して、高最優度プール内のキャッシュ・ラインの中から選択される。たとえば、一実施形態では、LRUアルゴリズムが、最長未使用のキャッシュ・ラインを高優先度プールから追出すために使用され、他の実施形態は、それだけに限らないが、擬似LRUやランダム追出しアルゴリズムを含めて、任意選択のアルゴリズムを使用し得る。
別の実施形態では、高および低優先度プールのサイズは可変である。この場合、キャッシュ・コントローラ内の論理は、プログラム指示(たとえばキュー)、および/または、監視されたアクセス・パターンを考慮して、プールの相対サイズが動的に調整され得るように適応される。一実施形態では、キャッシュ・コントローラ論理は、高および低優先度プール要求の観察された比に基づいて、プールの相対サイズを動的に調整するキャッシュ追出しポリシーを使用する。一実施形態では、両方のキャッシュ・プールについて、単一のキャッシュ追出しポリシーが実施される。別の実施形態では、それぞれの2次キャッシュ追出しポリシーが、動的に調整された高および低優先度サブ・プールに適用される。
低優先度プールのエントリは、ブロック308で、高優先度プール・エントリと同様に処理される。上記で論じたように、一実施形態では、キャッシュの固定部分は、低優先度プールに割り当てられる。したがって、別個の低優先度プール・キャッシュ追出しポリシーが、キャッシュのこの部分に適用される。やはり上記で論じたように、高および低優先度プールのサイズが動的に調整され得る実施形態では、単一のキャッシュ追出しポリシーがキャッシュ全体に適用されてもよく、あるいは、それぞれの2次キャッシュ追出しポリシーが、動的に調整される高および低優先度サブ・プールに適用されてもよい。
ブロック306および308(該当する場合)の操作と共に、要求されたデータ・ブロックが、ブロック310で、次のメモリ・レベルから取り出され、ブロック312で、追出しに選択されたブロックを置き換えるために使用される。L2からL1へのキャッシュ置換またはL3からL2へのキャッシュ置換の一実施形態では、下位レベル・キャッシュのキャッシュ・ラインが、上位レベル・キャッシュの追出されたキャッシュ・ラインによって以前に占有されていた位置に単にコピーされ、新しい値が、対応するキャッシュ・ライン・タグに挿入される。要求されたデータは、高レベル・キャッシュに書き込まれた後、プロセッサに返される。
高および低優先度プール実施形態について上記で提示された一般原理は、任意の数のキャッシュ優先度レベルをサポートするように拡張され得る。たとえば、図3bの実施形態は、1からn個のキャッシュ・プール優先度レベルをサポートする。一実施形態では、nは、nウェイ連想キャッシュのウェイの数である。別の実施形態では、n個のキャッシュ優先度プールが、完全連想キャッシュを使用して実装される。別の実施形態では、n≠mとして、n個のキャッシュ優先度プールが、mウェイ群連想キャッシュで実装される。
図3bの実施形態に戻ると、メモリ・アクセス・サイクルは、図3aのブロック300について上記で論じたのと同じように、ブロック300Aで開始しているが、キャッシュ・プールを識別するのではなく、キャッシュ優先度レベルを指定するデータが、メモリ・アドレスと共に提供される。判断ブロック302によって行われたキャッシュHITまたはMISSの判断に従って、論理は、ブロック314または判断ブロック305に進む。一実施形態では、キャッシュ・プール優先度レベルは、キャッシュ探索を支援するために使用され、他の実施形態では、キャッシュ・プール優先度レベルは、キャッシュ探索の間、使用されない。
判断ブロック305は、対応する優先度レベルについてそれぞれのキャッシュ追出しポリシーを実装するために使用されるn個のブロックのうちの1つに論理を分岐させるために使用される。たとえば、キャッシュ・プール優先度レベルが1である場合は、論理はブロック306に進み(route)、それが2である場合は、論理はブロック306に進むなどである。一実施形態では、上述したのと同じように、キャッシュは、プール・サイズが互いに等しいことも等しくないこともある、固定のサイズのn個のプールに分割される。別の実施形態では、プール・サイズは、現行のアクセス・パターンの考慮事項に鑑みて、動的に調整される。ブロック3061〜nのそれぞれにおいて、各キャッシュ追出しポリシーが、対応するキャッシュ・プール優先度レベルを考慮して適用される。一般に、それぞれの優先度レベルについて同じタイプのキャッシュ追出しポリシーが適用されてもよく、または異なるレベルについて、それぞれ異なるタイプの追出しポリシー(および対応するアルゴリズム)が実装されてもよい。置き換えられるキャッシュ・ラインがブロック3061〜nのうちの1つの中の追出しポリシーによって決定された後、ブロック310で、要求されたデータが次のメモリ・レベルから取り出され、ブロック312で、追出されたキャッシュ・ラインが、図3aの同じ番号が付けられたブロックについて上記で論じたやり方と同じように置き換えられる。次いで、ブロック314で、新しくキャッシュされたデータが、要求元のプロセッサに返される。
一般に、複数の技術のうちの1つが、アプリケーション・コードの各部分のキャッシュ・プール優先度レベルをマーク付けするために使用され得る。しかし、最終的には、キャッシュ優先度レベルの表示は、プロセッサがソース・レベルのコードを実行しないので、ターゲット・プロセッサ上で実行されるのに適した機械レベルのコードに符号化される。以下でより詳細に述べるように、一実施形態では、対応するデータおよび命令がどのプールにキャッシュされるかプロセッサに指示するために、特別のオペ・コードがプロセッサの命令セットに追加される。
一実施形態では、ソース・コードのレベルでマーカが埋め込まれ、機械コード内で、対応するキャッシュ優先度キューの生成がもたらされる。図4を参照すると、このプロセスは、ブロック400で開始しており、それぞれ異なるコードの一部のためのキャッシュ追出しポリシーを示すため、マーカが、高水準ソース・コード内に挿入される。一実施形態では、高水準コードは、CまたはC++言語で書かれたプログラミング・コードを含み、マーカは、対応するプラグマ・ステートメントを介して実装される。2優先度レベルのキャッシュ追出しポリシーを達成するための1組の例示的なプラグマ・ステートメントを示す擬似コードが、図5aに示される。この実施形態では、2つの優先度レベル、すなわち高優先度を示すON、および低優先度またはデフォルト優先度レベルを示すOFFがある。プラグマ・ステートメント「CACHE EVICT POLICY ON」は、高優先度プールに割り当てられるコードの一部の開始をマーク付けするために使用され、「CACHE EVICT POLICY OFF」プラグマ・ステートメントは、そのコードの一部の終了をマーク付けするために使用される。
別の実施形態では、プラグマ・ステートメントは、nキャッシュ優先度レベルを示すために使用される。たとえば、4つの異なるキャッシュ優先度レベルを達成するためのプラグマ・ステートメントを示す擬似コードが、図5bに示される。この場合、プラグマ「EVICT_LEVEL 1」は、レベル1キャッシュ優先度が適用されるコードの一部の開始を示すために使用され、「EVICT_LEVEL 2」は、レベル2キャッシュ優先度が適用されるコードの一部の開始を示すために使用されるなどである。
図5aおよび図5bに示されるこれらのプラグマ・ステートメントは、コンパイラに機械コードを生成するように指示し、この機械コードは、対応するコードおよび/またはデータがどのプールにキャッシュされるか、したがって(間接的には)どのキャッシュ追出しポリシーが使用されるかをプロセッサおよび/またはキャッシュ・コントローラに指示する、埋め込まれたキューを含む。一実施形態では、これは、ブロック402に示されるように、従来のメモリ・アクセス・オペ・コードを新しいオペ・コードに置き換えることによって遂行され、この新しいオペ・コードは、プロセッサおよび/またはキャッシュ・コントローラに、対応するコードの一部をキャッシュするためにどのキャッシュ・プール優先度レベルが使用されるべきか伝える手段を提供する。
一実施形態では、それぞれの各キャッシュ優先度レベルについて、明示的なオペ・コードが提供される。たとえば、ある一般的な命令セットの下では、MOV命令が、メモリとレジスタとの間でデータを移動させるために使用される。2つのキャッシュ優先度レベルでは、対応するアセンブリ命令は、MOV(デフォルトである低優先度キャッシュ・プールを指定、または特別な処理が要求されない)、MOVL(低優先度プールの使用を明示的に指定)およびMOVH(高優先度プールの使用を明示的に指定)であり得る。別の実施形態では、それぞれのオペ・コードは、MOV1、MOV2、MOV3他など、それぞれの優先度レベルについて提供される。n優先度レベル実装の一実施形態では、命令は、命令と、MOVCなどの優先度レベルを定義する属性とを含む。
別の実施形態では、命令は、フラグまたはマルチ・ビット・プールIDレジスタを明示的にセットし、クリアするために使用される。この手法の下では、選択されたメモリ・アクセス命令の復号と共に、フラグまたはマルチ・ビット・プールIDレジスタがチェックされ、フラグまたはプールID値は、メモリ・アクセスに対応する適用可能データおよび/または命令をキャッシュするためにどのプールが使用されるべきか識別する。このように、レジスタ値が、特定のプールを識別するために使用でき、現在のアクセスおよび後続のアクセスに関連するデータのキャッシングがそのプールに割り当てられる。プールを変更するために、フラグまたはプールID値は、それに応じて変更される。1組の例示的な命令形式の下では、SETHFが高優度プール・フラグをセットするために使用され、CLRHFがフラグ(低優先度またはデフォルト・プールが使用されるべきことを示す)をクリアするために使用される。n優先度レベル実装の一実施形態では、命令は、命令と、SETP nなどの優先度レベルを定義する属性とを含む。
ブロック404に示されるように、ランタイム(実行)時、キャッシュ使用は、実行された機械コード内に含まれる指示キュー(特定のオペ・コードおよび任意選択のオペランド)によって管理される。キャッシュ追出しポリシーを実施するためのハードウェア実装を示す技術について、以下で論じる。
高水準ソース・コード内でプラグマを使用することに加えて、機械レベルのコードの一部が、コード・チューニング・ツールなどを使用して、それぞれ異なる優先度レベルでマーク付けが行なわれる。たとえば、Intel(登録商標)のVtuneなど、コード・チューニング・ツールが、アプリケーション・プログラムのランタイム使用の間、コード・アクセスを監視するために使用され得る。これらのツールによって、プログラマは、他の部分より頻繁に使用されるコードの一部を識別することができる。さらに、使用サイクルが識別されることもできる。これは、本明細書で述べる諸実施形態によって容易にされ得る、特定のキャッシュ追出しポリシーの実装に特に有益である。たとえば、従来のLRU追出しアルゴリズムの下では、非常に高アクセスを有するコードの一部がキャッシュにロードされ、最長未使用のキャッシュ・ラインとなるまで、キャッシュ内にとどまる。これは事実上、あるタイプの高優先度キャッシングである。
対照的に、本発明の実施形態によって、プログラマは、既存のキャッシュ全体にわたる追出しアルゴリズムでは効率的に処理されない他のタイプの状態のためのキャッシュ追出しポリシーを達成することができる。たとえば、比較的長い期間にわたってかなり頻繁に使用されるコードの特定の部分(長期の時間局所性)があるが、従来の追出しアルゴリズムの下では、使用間で追出しが行われ続けていると仮定する。一方、他のコードの一部はあまり使用されておらず、最高レベル・キャッシュの使用は実際に逆効果である。これは、様々なプロセッサ・キャッシュ内で1つのデータ・コピーだけが維持される(たとえば、1つのデータ・コピーだけが、一度にL1キャッシュとL2キャッシュの両方にではないが、そのいずれかに存在する)排他的なキャッシュ設計の下では特に当てはまる。
図6は、実際のアプリケーション使用を観察することから導出されたキャッシュ優先度レベルを有するコードの一部を生成するために実施される操作を図示するフローチャートを示している。このプロセスは、ブロック600で開始し、ソース・コードが、マーカなしに、従来のやり方でコンパイルされる。ブロック602で、コンパイルされたコードについてのメモリ・アクセス・パターンが、適切なコード・チューニング・ツールなどを使用して観察される。次いで、ブロック604で、特定のアクセス・パターンを有するコードの一部が、チューニング・ツールを使用して、ユーザの指示の下、またはチューニング・ツールに組み込まれた論理を介して自動的にマーク付けされる。次いで、チューニング・ツールは、(たとえば、本明細書で述べたものに類似の明示的なオペ・コードを介した)埋め込まれたキャッシュ管理指示を伴う命令を含む新しいコードを生成するため、コードを再コンパイルする。
キャッシュ追出しポリシーのプログラム制御をサポートするハードウェア・アーキテクチャの例示的な実施形態が、図7a〜bおよび図8a〜cに示される。一般に、これらの実施形態で開示される諸原理は、nウェイ群連想キャッシュ・アーキテクチャおよび完全連想キャッシュ・アーキテクチャを含めて、様々なタイプのよく知られているキャッシュ・アーキテクチャで実装され得る。さらに、諸原理は、ユニファイド・キャッシュ(キャッシュおよび同じキャッシュ内のデータ)、およびハーバード・アーキテクチャ・キャッシュ(データ・キャッシュ(Dcache)および命令キャッシュ(Icache)に分割されたキャッシュ)の両方で実装され得る。マルチプレクサ、復号論理、データ・ポートなど、他のキャッシュ構成要素の詳細は、明瞭にするため、図7a〜bおよび図8a〜cに示されていないことに留意されたい。これらの構成要素は、アーキテクチャの実際の実装において存在することが、当業者には理解されよう。
図7aのキャッシュ・アーキテクチャ700Aの実施形態は、4ウェイ群連想キャッシュに対応する。一般に、このアーキテクチャは、明瞭にするため、本明細書で詳細に述べられる4ウェイ実装を伴う、nウェイ群連想キャッシュを表すものである。このアーキテクチャの主要な構成要素は、プロセッサ702と、ひとまとめにしてキャッシュ・コントローラと称される様々なキャッシュ制御要素(その具体的な詳細については以下で述べる)と、一般にブロックとも称される、タグ・アレイおよびキャッシュ・ラインを格納するために使用されるメモリからなる実際のキャッシュ記憶空間自体とを含む。
キャッシュ・アーキテクチャ700Aの一般的な操作は、従来の4ウェイ群連想キャッシュによって使用されるものに類似する。メモリ・アクセス要求(対応する命令または命令シーケンスの実行を介して行われる)に応答して、要求によって参照されるアドレスが、キャッシュ・コントローラに転送される。アドレスのフィールドは、TAG704、INDEX706およびブロックOFFSET708に分割される。TAG704とINDEX706との組合せは、ブロック(またはキャッシュ・ライン)アドレスと一般に称される。またブロックOFFSET708は、バイト選択またはワード選択フィールドと一般に称される。バイト/ワード選択またはブロック・オフセットの目的は、キャッシュ・ライン内の複数のワードまたはバイトの中から、要求されたワード(一般的)またはバイトを選択することである。たとえば、一般的なキャッシュ・ラインのサイズは8〜128バイトである。キャッシュ・ラインが、キャッシュ内でアクセスされ得る最小単位なので、キャッシュ・ラインのさらなる解析によって、要求されたデータが返されることを可能にするための情報を提供することが必要である。所望のワードまたはバイトの位置は、キャッシュ・ラインのベースからオフセットされ、したがって、名前ブロック「オフセット」がある。
一般に、l個の最下位ビットがブロック・オフセット用に使用され、キャッシュ・ラインまたはブロックの幅は、2バイト幅である。次の1組のmビットは、INDEX706を含む。このインデックスは、アクセスされるキャッシュ・セットを指定する、オフセットに隣接するアドレス・ビットの部分を含む。それは、図示された実施形態ではmビット幅であり、したがって、各アレイは、2個のエントリを保持する。それは、各タグ・アレイ内のタグを検索するために使用され、またオフセットと共に、各キャッシュ・ライン・アレイ内のデータを検索するために使用される。TAG704のビットは、アドレスの最上位nビットを含む。それは、各TAGアレイ内の対応するTAGを検索するために使用される。
上述のキャッシュ要素はすべて、従来の要素である。これらの要素に加えて、キャッシュ・アーキテクチャ700Aは、プール優先度ビット710を使用する。プール優先度ビットは、キャッシュ・ラインが探索され、かつ/または追出され/置換される(必要な場合)セットを選択するために使用される。キャッシュ・アーキテクチャ700Aの下では、メモリ・アレイの要素は、4つのグループに分割される。それぞれのグループは、TAGアレイ712と、キャッシュ・ライン・アレイ714とを含み、ただしjはグループを識別する(たとえば、グループ1は、TAGアレイ712と、キャッシュ・ライン・アレイ714とを含む)。
メモリ・アクセス要求に応答して、キャッシュ・アーキテクチャ700Aの操作は、以下のように進む。図示された実施形態では、プロセッサ702は、メモリ・アドレスを参照するMOVH命令716を受信する。上記で論じたように、一実施形態では、MOVH命令は、プロセッサ/キャッシュ・コントローラに、対応するキャッシュ・ラインを高優先度プールに格納するように指示する。図示された実施形態では、グループ1、2、3および4は、グループ1〜3が低優先度プール用に使用され、グループ4が高優先度プール用に使用されるように分割される。グループを等しく分割することや、単一のプールを低優先度プール用に使用し、他の3つのプールを高優先度プール用に使用するなど、他の分割手法が、類似のやり方で実装されることもできる。
MOVH命令の実行に応答して、高論理レベル(1)を有する優先度ビットが、プレフィックスとしてアドレスに付加され、キャッシュ・コントローラ論理に提供される。一実施形態では、高優先度ビットは、1つの1ビット・レジスタに格納され、アドレスは、別のwビット・レジスタに格納され、ただしwはアドレスの幅である。別の実施形態では、優先度ビットとアドレスとの組合せが、w+1の幅であるレジスタに格納される。
図7aに示されるものなど、分離型プール手法の一実施形態では、現在の要求の優先度ビット値に関連するプールを有するグループだけが、キャッシュ・ヒットまたはミスを確認するために探索される必要がある。したがって、TAGアレイ712だけが、探索される必要がある。図示された実施形態では、TAGアレイ内の各要素は、有効ビットを含む。このビットは、対応するキャッシュ・ラインが有効かどうか示すために使用され、突合わせのためセットされなければならない。この実施例では、キャッシュ・ミスが発生すると仮定する。
キャッシュ・ミスに応答して、キャッシュ・コントローラは、置き換えられるグループ4からキャッシュ・ラインを選択する。図示された実施形態では、高優先度追出しポリシー718および低優先度追出しポリシー720として示された高および低優先度プールのそれぞれについて、別個のキャッシュ追出しポリシーが実装される。別の実施形態では、(追出されるキャッシュ・ラインは、優先度レベルによって依然として分離されるが、)共通の追出しポリシーが、両方のプールのために使用され得る。
追出されたキャッシュ・ライン内の修正済みのデータが、追出しの前に、システム・メモリに書き戻されることが重要である。一般的な手法の下では、「ダーティ」ビットが、更新されたキャッシュ・ラインをマーク付けするために使用される。実装に応じて、ダーティ・ビットを伴うキャッシュ・ラインは、システム・メモリに周期的に書き戻すことができ(対応するダーティ・ビットのクリアがその後に続く)、かつ/またはそれは、追出しに応答して書き戻され得る。ダーティ・ビットがクリアされる場合、キャッシュ・ライン追出しに関連する書戻しは必要ない。
追出すキャッシュ・ラインの選択と共に実施される別の操作は、要求されるデータを、下位レベル・メモリ722から取り出ことである。この下位レベル・メモリは、現在のキャッシュ・レベルに比べて、図1のメモリ階層内の次に低いレベルを表している。たとえば、キャッシュ・アーキテクチャ700Aは、L1キャッシュに対応することができ、下位レベル・メモリ722はL2キャッシュを表し、またキャッシュ・アーキテクチャ700AはL2キャッシュに対応し、下位レベル・メモリ722はシステム・メモリを表すなどである。簡単にするため、要求されたデータが、下位レベル・メモリ722に格納されると仮定する。追出すキャッシュ・ラインの選択とさらに関連して、図7aに示すように、ビクティム・バッファ724を使用する排他的キャッシュ・アーキテクチャを有するキャッシュ・アーキテクチャ700の任意選択の実装の下では、キャッシュ・ラインは、ビクティム・バッファにコピーされる。
要求されたデータがキャッシュ・コントローラに戻されると、データは、追出されたキャッシュ・ラインにコピーされ、対応するTAGおよび有効ビットが、適切なTAGアレイ(現在の実施例ではTAGアレイ712)内で更新される。要求されたデータを単に返すのではなく、要求されたデータに近い、またそれを含むデータの複数の連続したデータ・バイトが返され、そのバイト数はキャッシュ・ライン幅に等しい。たとえば、32バイトのキャッシュ・ライン幅では、32個のデータ・バイトが返される。次いで、新しいキャッシュ・ラインに含まれる(元の要求に対応する)ワードが、4:1ブロック選択マルチプレクサ728の支援により、キャッシュからプロセッサ702用の入力レジスタ726に読み込まれる。
キャッシュされていないアドレスに対応する値を書込み、キャッシュ・アーキテクチャ700A用のキャッシュ・ラインに格納された値を更新することもまた、プール優先度ビットのさらなる使用を除いては、従来の手法と同じように実施される。これは、出力レジスタ730に格納されたデータが(最終的に)システム・メモリに書き込まれる、キャッシュの書戻しを伴う。(現在存在するならば)適切なキャッシュ・ラインが、プール優先度ビットによって定義されたプールに関連するグループを使用してまず探索される。検出される場合は、キャッシュ・ラインは、出力レジスタ730内のデータで更新され、対応するダーティ・ビット(図示せず)にフラグが立てられる。システム・メモリは引き続き、よく知られている書戻し操作を介して新しい値で更新される。更新されるデータがキャッシュ内に検出されない場合は、一実施形態では、キャッシュ・ラインが、読出し要求について上述したやり方と同じように追出され、更新されるデータを含むブロックが、システム・メモリ(または適宜、次のレベルのキャッシュ)から取り出される。次いで、このブロックは、追出されたキャッシュ・ラインにコピーされ、対応するTAGおよび有効ビット値が、適切なTAGアレイ内で更新される。一部の場合では、システム・メモリの更新時、キャッシング操作をバイパスすることが望まれる。この場合、メモリ・アドレス上のデータは、対応するブロックにキャッシュされずに更新される。
図7bのキャッシュ・アーキテクチャ700Bは、図7aのキャッシュ・アーキテクチャ700Aに構成が類似しており、同様の番号が付けられた構成要素は、類似の機能を実施する。このアーキテクチャの下では、4レベル・キャッシュ追出し優先度手法が実装され、この手法は、nレベル追出し優先度手法を一般に表している。この手法の下では、各グループが、それぞれのプールに関連付けられ、各プールに、それぞれの優先度レベルが割り当てられる。前の単一の優先度ビットはマルチビット・フィールドで置き換えられ、ビット幅は、2のべき乗に基づいて実装される優先度レベルの数に依存する。たとえば、図7bに示された4優先度レベルの場合には、2ビットが使用される。さらに、それぞれの各プールは、プール00追出しポリシー732、プール01追出しポリシー734、プール10追出しポリシー736およびプール10追出しポリシー738によって示されるように、関連するプール追出しポリシーを有する。
キャッシュ・アーキテクチャ700Bは、キャッシュ・アーキテクチャ700Aについて上述したやり方と同じように働く。しかし、この場合、要求の優先度を識別するプールID値が、適切なキャッシュ・プール、およびしたがって適切なキャッシュ・セットを識別するために使用される。
キャッシュ・アーキテクチャ700A,700Bによって提供される特徴の組合せが、同じキャッシュ内で実装され得ることに留意されたい。たとえば、nウェイ群連想キャッシュは、n≠mとして、m個の優先度レベルを使用し得る。
図8a〜cは、キャッシュ・ポリシーのプログラム制御をサポートするように拡張された完全連想キャッシュ・アーキテクチャを示している。完全連想キャッシュは、単一群連想キャッシュのように機能する。したがって、(それぞれ図8a,8b,8cの)キャッシュ・アーキテクチャ800A、800B,800Cはそれぞれ、単一のTAGアレイ712と、単一のキャッシュ・ライン・アレイ714とを含む。単一の1組のTAGおよびキャッシュ・ラインしかないので、INDEXは必要なく、したがって、キャッシュ・コントローラに提供される情報はここでは、ブロック・アドレスを表すTAG804と、ブロック・オフセット808とを含む。キャッシュ・アーキテクチャ700Aに類似のやり方で、図8aのキャッシュ・アーキテクチャ800Aは、プール優先度ビット810を使用し、このプール優先度ビットは、上記で論じたプール優先度ビット710に類似の機能を実施する。
キャッシュ・アーキテクチャ700A,700Bとは異なり、キャッシュ・アーキテクチャ800A,800B,800Cはそれぞれ、動的なプール割当てをサポートする。これは、1つまたはそれ以上の優先度IDビットの使用を介して処理され、ビットの数は、実装される所望の優先度粒度よって決まる。たとえば、キャッシュを高および低優先度プールに分割するには単一の優先度ビットが必要であり、キャッシュをm個のプールに分割するには、log(m)個の優先度IDビットが必要である(たとえば4優先度レベルでは2ビット、8優先度レベルでは3ビットなど)。キャッシュ・グループのサイズが一定なので、1つの優先度レベルのプール割当てを増加すると、別のプールへの類似の減少がもたらされる。
図8aのキャッシュ・アーキテクチャ800Aの下では、単一の優先度ビット・フィールドが各TAGアレイ・エントリに追加され、優先度ビット列812がもたらされる。アクセス要求に応答して、優先度ビット810が、アドレスと共にキャッシュ・コントローラに提供される。次いで、TAGアレイ712が、マスクとして優先度ビット列812内の値を使用して探索され、したがって検索を向上させ得る。キャッシュ・ミスに応答して、(キャッシュ・アーキテクチャ800A内の優先度ビット、およびキャッシュ・アーキテクチャ800B,800C内の優先度IDビットによって定義される)適用可能キャッシュ・プールからのキャッシュ・ラインが、プール追出しポリシーを使用して追出される。追出しポリシーは、キャッシュ・アーキテクチャ800Aのための低優先度追出しポリシー820および高優先順位追出しポリシー818、ならびにキャッシュ・アーキテクチャ800B,800Cのためのm個の追出しポリシー8201−mを含む。オプションとして、共通のキャッシュ・ポリシー824によって示されるように、(各プールについて別個に実装された)単一のキャッシュ・ポリシーが、これらのキャッシュ・アーキテクチャのそれぞれのために使用され得る。
キャッシュ・ライン追出しの選択と共に、要求されたデータが、キャッシュ・アーキテクチャ700A,700Bについて上述されたやり方と同じように下位レベル722から取り出される。次いで、適用可能ブロックが、キャッシュ・ライン・アレイ714の中からの適切なキャッシュ・ラインにコピーされ、次いで適切なワード(要求アドレスに対応する)が、訳語選択マルチプレクサ814を介して選択され、入力レジスタ726に返される。
実施形態800A,800B,800Cのそれぞれにおいて、各プールのサイズは、プール・サイズ・セレクタ830によって管理される。プール・サイズ・セレクタは、キャッシュ活動を考慮してプールのサイズを動的に変更するための論理(たとえばプログラムされた論理を介して実装されたアルゴリズム)を使用する。たとえば、この論理は、プールのうちの1つまたはそれ以上が過度にしばしば追出されているかどうか確かめるために、それぞれのプール内のキャッシュ追出し活動を監視し得る。この場合、そのプールのサイズを増加させ、別のまたは他のプールのサイズを減少させることが有利であり得る。
プールのサイズの変更を達成するための機構は、かなり単純であり、アップグレードしまたはダウングレードするキャッシュ・ラインの選択のために使用されたプロセスは一般に、より複雑である。たとえば、所与のキャッシュ・ラインの優先度レベルを変更するため、TAGアレイ内のライン内の対応する優先度ビット(または複数の優先度IDビット)は単に、新しい優先度レベルを反映するように変更される。一方、一実施形態では、LRUや擬似LRUアルゴリズムによって維持された情報など、キャッシュ・アクティビティ情報を考慮して、選択されたキャッシュ・ラインが、優先度アップグレードまたはダウングレードのために選ばれる。別の実施形態では、キャッシュ・ラインの連続したグループが置き換えられ得る。
キャッシュ・アーキテクチャ800B,800Cは、1つのフィールドを除いて同一である。有効ビットを使用するのではなく、キャッシュ・アーキテクチャ800Cは、MESI(Modified Exclusive Shared Invalid:変更済み、排他的、共有、無効)プロトコルをサポートする2ビットのMESIフィールドを使用する。MESIプロトコルは、スヌープを介してキャッシュ・コヒーレンスを使用するための形式的な機構であり、マルチプロセッサ・アーキテクチャにおいて特に有用である。MESIプロトコルの下では、それぞれのキャッシュ・ラインに、4つのMESI状態のうちの1つが割り当てられる。
変更済み((M)odified)状態のラインは、1つのキャッシュ内だけで使用可能であり、また修正済みのデータを含み、すなわち、そのデータは、システム・メモリ内の同じアドレスのデータと異なる。M状態ラインは、バス上でサイクルを送出せずにアクセスできる。
また排他的((E)xclusive)状態のライン、システム内の1つのキャッシュだけに使用可能であるが、ラインは更新されない。E状態ラインは、バス・サイクルを生成せずにアクセスできる。E状態ラインへの書込みによって、ラインが更新された状態になる。
共有((S)hared)状態のラインは、ラインが潜在的に他のキャッシュと共有される(すなわち同じラインが、2つ以上のキャッシュ内に存在し得る)ことを示す。S状態ラインへの読出しは、バス活動を生成しないが、共有のラインへの書込みは、バス上のライトスルー・サイクルを生成する。これによって、他のキャッシュ内でこのラインが無効にされ得る。S状態ラインへの書込みによって、キャッシュが更新される。S状態ラインへ書込みは、バスに、所有権のための読出し(RFO:Read For Ownership、ゼロ・バイト読出し)を発行させ、このRFOは、他のキャッシュに、ライン、およびこのラインの排他的状態への遷移を無効にさせる。次いで、書込みは、上述したように、E状態ラインへと進み得る。
無効((I)nvalid)状態は、ラインがキャッシュ内で使用可能でないことを示す。このラインへの読出しは、MISSをもたらし、プロセッサにライン・フィル(システム・メモリからのラインのフェッチ)を実行させ得る。一実施形態では、無効ラインへの書込みは、プロセッサに、バスへのライトスルー・サイクルを実行させる。一実施形態では、ライトバック・メモリ内の「I」状態ラインへの書込みがあると、バス上のメモリ読出しによって、キャッシュ内のラインが割り当てられるようになる。これは、「書込み後の割当て」ポリシーである。
命令キャッシュについては、MESIプロトコルの2つの可能な状態(SI)のために1ビットだけが必要とされることに留意されたい。これは、命令キャッシュが本質的に書込み保護されているからである。キャッシュ・アーキテクチャ800C内で使用されるやり方と同様に、MESIフィールドが、キャッシュ・アーキテクチャ700A,700B,700C,800Aのそれぞれの有効ビット・フィールドの代わりに使用され得る。
図9を参照すると、一般に従来型のコンピュータ900が示されており、このコンピュータは、デスクトップ・コンピュータ、ワークステーションおよびラップトップ・コンピュータなど、本明細書で述べるキャッシュ・アーキテクチャを有するプロセッサを使用し得る様々なコンピュータ・システムを表している。またコンピュータ700は、様々なサーバ・アーキテクチャ、ならびに複数のプロセッサを有するコンピュータを包含するものである。
当業者に一般によく知られているように、コンピュータ900はシャーシ902を含んでおり、このシャーシ内に、フロッピー(登録商標)・ディスク・ドライブ904(任意選択)、ハード・ディスク・ドライブ906と、システム・メモリ910、および1つまたはそれ以上のプロセッサ(CPU)912を含めて適切な集積回路が並べられたマザーボード908とがマウントされる。モニタ914が、計算機によって実行されるソフトウエア・プログラムおよびプログラム・モジュールによって生成されたグラフィックスおよびテキストを表示するために含まれる。マウス916(または他のポインティング装置)が、シャーシ902の後部でシリアル・ポート(またはバス・ポートまたはUSBポート)に接続でき、マウス916からの信号が、ディスプレイ上のカーソルを制御し、コンピュータ上で実行されるソフトウエア・プログラムおよびモジュールによってモニタ914に表示されたテキスト、メニュー・オプション、およびグラフィック要素を選択するためにマザーボードに伝えられる。さらに、コンピュータ上で実行されるソフトウエア・プログラムの実行に影響を及ぼすテキストおよびコマンドのユーザ入力のため、キーボード918がマザーボードに結合される。
コンピュータ900は、ディスク上の実行可能ファイルおよびデータがコンピュータ900のメモリおよび/またはハード・ドライブ906内の記憶域への転送のため読み出され得るように、CD−ROMディスクが挿入され得るコンパクト・ディスク読出し専用メモリ(CD−ROM:compact disk−read only memory)ドライブ922を任意選択で含むこともできる。光記録媒体やDVDドライブなど、他の大容量記憶装置が含まれ得る。
プロセッサ912のアーキテクチャの詳細が、図9の上部分に示される。プロセッサ・アーキテクチャは、キャッシュ・コントローラ932およびL1キャッシュ934に結合されたプロセッサ・コア930を含む。L1キャッシュ934は、L2キャッシュ936にも結合される。一実施形態では、任意選択のビクティム・キャッシュ938が、LIキャッシュとL2キャッシュとの間で結合される。一実施形態では、プロセッサ・アーキテクチャはさらに、L2キャッシュ936に結合された任意選択のL3キャッシュ940を含む。Ll、L2、L3およびビクティム・キャッシュはそれぞれ、キャッシュ・コントローラ932によって制御される。図示された実施形態では、L1キャッシュは、Icache942およびDcache944を含めて、ハーバード・アーキテクチャを使用する。プロセッサ912はさらに、システム・メモリ910へのアクセスを制御するためのメモリ・コントローラ946を含む。
キャッシュ・コントローラ932は一般に、本明細書で述べたキャッシュ・アーキテクチャのキャッシュ制御要素を実装するキャッシュ・コントローラを表している。キャッシュ追出しポリシーのプログラム制御をサポートするための本明細書で述べたキャッシュ・アーキテクチャ実施形態によって提供される操作に加えて、キャッシュ・コントローラが、プロセッサの分野の当業者には知られている周知の従来のキャッシュ操作を実施する。
要約において述べられたことを含めて、示された本発明の実施形態についての上記説明は、網羅的なものではなく、または本発明を開示された厳密な形に限定するものではない。本発明の特定の実施形態およびその実施例が、例示のために本明細書で述べられているが、当業者には認識されているように、本発明の範囲内で様々な等価の修正が可能である。
上記の詳細な説明に鑑みて、これらの修正が、本発明に加えられ得る。特許請求の範囲中で使用される用語は、明細書および図面に開示された特定の諸実施形態に本発明を限定するものと解釈すべきでない。そうではなく、本発明の範囲は、請求項解釈の確立された原理に従って解釈すべきである特許請求の範囲によって完全に決定されるものである。
現代のコンピュータ・システム内で使用される一般的なメモリ階層を示す概略図である。 従来のキャッシング・プロセス中に実施される操作を示すフローチャートである。 本発明の一実施形態による、キャッシュが高および低優先度プールに分割される、キャッシュ追出しポリシーのプログラム制御をサポートするキャッシング・プロセスの下で実施される操作および論理を示すフローチャートである。 本発明の一実施形態による、それぞれの優先度レベルを有する複数の優先度プールにキャッシュが分割される、キャッシュ追出しポリシーのプログラム制御をサポートするキャッシング・プロセスの下で実施される操作および論理を示すフローチャートである。 本発明の一実施形態による、プログラム設計、コード生成およびランタイム・フェーズの間に実施される操作であって、優先キャッシングを有するべきアプリケーション・プログラムの部分をプログラマが識別できるようにされ、生成されたプログラム機械コードのランタイムにこうした識別された部分の優先キャッシングが実施される操作を示すフローチャートである。 本発明の一実施形態による、高いキャッシュ優先度レベルが割り当てられたコードの一部を示すために使用される例示的なプラグマ・ステートメントを示す擬似コード・リスティングの図である。 本発明の一実施形態による、複数のキャッシュ優先度レベルに割り当てられたコードの一部を示すために使用される例示的なプラグマ・ステートメントを示す擬似コード・リスティングの図である。 本発明の一実施形態による、プログラム設計、コード生成およびランタイム・フェーズの間に実施される操作であって、優先キャッシングに適したコードの一部を決定するため元のプログラム・コードのメモリ・アクセス・パターンが監視され、こうした部分が手動でまたは自動的にマーク付けされ、元のコードが、優先キャッシング操作を達成するために使用される置換オペ・コードを含むように再コンパイルされる操作のフローチャートである。 キャッシュ・ラインのグループのうちの1つが高優先度プールに割り当てられ、残りのキャッシュ・ライン・グループが低優先度プールに割り当てられる、4ウェイ群連想キャッシュ・アーキテクチャの概要図である。 各キャッシュ・ライン・グループが、それぞれ異なる優先度レベルを有する各プールに割り当てられる、図7aの様々なキャッシュ・アーキテクチャを示す概要図である。 プール優先度ビットを介してキャッシュ・ラインが高または低優先度プールのうちの1つに割り当てられる、完全連想キャッシュ・アーキテクチャの概要図である。 マルチ・ビット・プール識別子を使用してキャッシュ・ラインがm個の優先度レベルのうちの1つに割り当てられる、完全連想キャッシュ・アーキテクチャの概要図である。 MESI(変更済み、排他的、共有、無効)プロトコルが使用される、図8bのキャッシュ・アーキテクチャの任意選択の構成を示す概略図である。 本明細書に示されるキャッシュ・アーキテクチャ実施形態が実施され得る、例示的なコンピュータ・システムおよびプロセッサを示す概略図である。

Claims (30)

  1. プログラマまたはコンパイラのうちの1つは、キャッシュのための対応するキャッシュ追出しポリシーが使用されるコードの一部を示すことを可能にする段階と、
    前記キャッシュからキャッシュ・ラインを追出すため、前記コードのランタイム実行時、前記プログラマまたはコンパイラによって示された前記キャッシュ追出しポリシーを使用する段階と、
    を含むことを特徴とする方法。
  2. 指定されたキャッシュ追出しポリシーが適用されるソース・レベルのコードの一部をプログラマが定義することを可能にする段階と、
    前記ソース・レベルのコードを機械コードにコンパイルする段階であって、前記機械コードは、前記指定されたキャッシュ追出しポリシーが適用されるソース・レベルの前記コードの一部から導出された機械コードの対応する部分に前記指定されたキャッシュ追出しポリシーを適用する際に支援するための命令を含む、段階と、
    をさらに含むことを特徴とする請求項1記載の方法。
  3. 前記プログララマは、前記指定されたキャッシュ追出しポリシーが適用されるソース・レベルの前記コードの一部を、前記ソース・レベルのコード内にこれらの部分を示すためのステートメントを挿入することによって定義することが可能にされることを特徴とする請求項2記載の方法。
  4. 前記プログラマが前記ソース・レベルのコードの選択された部分に第1の優先度レベルを割り当てることを可能にする段階であって、ソース・レベルのコードの他の部分は、初期設定により第2のデフォルト優先度レベルに割り当てられる、段階と、
    前記機械コードに含まれるキューに応答して、
    前記第1の優先度が割り当てられたソース・レベルのコードの前記選択された部分から導出された機械コードに関係するデータおよび/または命令に対して第1のキャッシュ追出しポリシーを適用し、前記デフォルト優先度レベルが割り当てられた前記ソース・レベルの他の部分から導出された機械コードに関係するデータおよび/または命令に対して第2のキャッシュ追出しポリシーを適用する段階と、
    をさらに含むことを特徴とする請求項2記載の方法。
  5. 前記ソース・レベルのコードの前記選択された部分にそれぞれの優先度レベルを前記プログラマが割り当てることを可能にする段階であって、前記それぞれの優先度レベルは、少なくとも3つの異なる優先度レベルを含む、段階と、
    前記機械コードに含まれるキューに応答して、
    各優先度レベルに割り当てられたソース・レベルのコードの一部に対して、ソース・レベルのコードのそれらの部分から導出された機械コードに関係するデータおよび/または命令のためのそれぞれのキャッシュ追出しポリシーを適用する段階と、
    をさらに含むことを特徴とする請求項2記載の方法。
  6. 異なる優先度レベルを有する複数の優先度プールにキャッシュを分割する段階と、
    キャッシュ・ラインに含まれるデータおよび/または命令を参照するコードの一部に含まれる少なくとも1つのキューによって指定された特定の優先度プール内のキャッシュ・ラインを選択的にキャッシュする段階と、
    をさらに含むことを特徴とする請求項1記載の方法。
  7. 各優先度プールに対してそれぞれのキャッシュ・ライン追出しポリシーを適用する段階、
    をさらに含むことを特徴とする請求項6記載の方法。
  8. 前記キャッシュは、n群を有するnウェイ群連想キャッシュを含み、前記方法は、
    前記n群のそれぞれに各優先度プールを割り当てることによって、前記キャッシュを複数の優先度プールに分割する段階、
    をさらに含むことを特徴とする請求項6記載の方法。
  9. キャッシュ・ラインに割り当てられた優先度プールを識別する各キャッシュ・ラインを示す表示を維持する段階、
    をさらに含むことを特徴とする請求項6記載の方法。
  10. プログラム・コード実行時、選択された優先度プールのサイズが動的に変更されることを可能にする段階、
    をさらに含むことを特徴とする請求項6記載の方法。
  11. 選択されたキャッシュ・プールにキャッシュ・ラインを割り当てるための命令を含む命令セットを提供する段階、
    をさらに含むことを特徴とする請求項6記載の方法。
  12. 前記命令セットは、特定の優先度レベルを有するキャッシュ・プールにキャッシュ・ラインを割り当てるための命令を含むことを特徴とする請求項11記載の方法。
  13. 前記命令セットは、特定の優先度レベルを有するキャッシュ・プールにキャッシュ・ラインを割り当てるために使用されるフラグまたはマルチビット・レジスタのうちの1つをセットするための命令を含むことを特徴とする請求項11記載の方法。
  14. 前記プログラマまたはコンパイラのうちの前記1つは、前記機械コード対応するアセンブリ言語命令を使用することによって、前記機械コードの選択された部分について特定のキャッシュ追出しポリシーの使用を指定することを可能にする段階、
    をさらに含むことを特徴とする請求項1記載の方法。
  15. アプリケーション・プログラムの部分に対してメモリ・アクセス・パターンを観察する段階と、
    特定のキャッシュ追出しポリシーが適用される前記アプリケーション・プログラムの部分を決定する段階と、
    前記アプリケーション・プログラムのこれらの部分をマーク付けする段階と、
    マーク付けされた前記アプリケーション・プログラムの部分に対して前記特定のキャッシュ追出しポリシーを適用する際に支援するために使用されるオペ・コードを含む機械コードを生成するために前記アプリケーション・プログラムを再コンパイルする段階と、
    をさらに含むことを特徴とする請求項1記載の方法。
  16. 特定のキャッシュ追出しポリシーが適用される前記アプリケーション・プログラムの前記部分を決定する段階、および、これらの部分をマーク付けする段階は、コード・チューニング・ツールによって自動的に実施されることを特徴とする請求項15記載の方法。
  17. 前記キャッシュは、1次(L1)キャッシュを含むことを特徴とする請求項1記載の方法。
  18. 前記キャッシュは、2次(L2)キャッシュを含むことを特徴とする請求項1記載の方法。
  19. 前記キャッシュは、3次(L3)キャッシュを含むことを特徴とする請求項1記載の方法。
  20. プロセッサ・コアと、
    前記プロセッサ・コアに結合されたキャッシュ・コントローラと、
    前記キャッシュ・コントローラによって制御され、前記プロセッサ・コアからのデータを受信し、そこにデータを提供するために動作可能に結合され、少なくとも1つのTAGアレイ、および、少なくとも1つのキャッシュ・ライン・アレイを含む第1のキャッシュと、
    を含むプロセッサであって、
    前記キャッシュ・コントローラは、前記第1のキャッシュを複数のプールに分割し、それぞれのプールに対してそれぞれのキャッシュ追出しポリシーを適用するためにプログラムされることを特徴とするプロセッサ。
  21. 前記第1のキャッシュは、前記プロセッサに結合された1次(L1)キャッシュを含むことを特徴とする請求項20記載のプロセッサ。
  22. 前記第1のキャッシュは、2次(L2)キャッシュを含み、前記プロセッサがさらに、
    前記プロセッサと前記L2キャッシュとの間で結合され、前記キャッシュ・コントローラによって制御された1次(LI)のキャッシュを、
    さらに含むことを特徴とする請求項20記載のプロセッサ。
  23. 前記キャッシュは、各キャッシュ・ラインに関連する少なくとも1つのプール識別子(ID)ビットを含み、前記少なくとも1つのプールIDビットは、前記キャッシュ・ラインが割り当てられた前記プールを指定するために使用されることを特徴とする請求項20記載のプロセッサ。
  24. 前記キャッシュ・コントローラは、少なくとも1つのプールのサイズを動的に変更するため、前記プロセッサ・コアから受信された入力に応答して、キャッシュ・ラインに対する前記少なくとも1つのプールIDビットが変更されることを可能にするようにプログラムされることを特徴とする請求項23記載のプロセッサ。
  25. 前記キャッシュは、nウェイ群連想キャッシュを含むことを特徴とする請求項20記載のプロセッサ。
  26. 前記nウェイ群連想キャッシュはn個のキャッシュ・ラインのグループを含み、キャッシュ・ラインの各グループは、異なるプールに関連し、前記キャッシュ・コントローラは、各プールに対するそれぞれのキャッシュ追出しポリシーを提供することを特徴とする請求項25記載のプロセッサ。
  27. 前記プロセッサ・コアは、プールを指定するためのキューを含む少なくとも1つのメモリ・アクセス命令を含む命令セットの実行をサポートし、そのプールに対し前記メモリ・アクセス命令によって参照されるメモリ・アドレスに位置するデータおよび/または命令を含むキャッシュ・ラインが割り当てられ、前記プロセッサ・コアによるこのようなメモリ・アクセス命令の実行は、
    キャッシュ・ミスに応答して、前記メモリ・アクセス命令内の前記キューに基づいて新しいキャッシュ・ラインが割り当てられるプールを決定する段階と、
    前記プールに割り当てられたキャッシュ追出しポリシーを使用して決定される前記プールから追出す既存のキャッシュ・ラインを選択する段階と、
    キャッシュ・ライン内に挿入されるデータ・ブロックを取り出す段階であって、前記データ・ブロックは、前記メモリ・アクセス命令によって参照されたシステム・メモリ内のアドレスに格納されたデータおよび/または命令を含む、段階と、
    追出しに選ばれた前記キャッシュ・ラインに前記データ・ブロックをコピーする段階と、
    を含む動作を実施することを特徴とする請求項20記載のプロセッサ。
  28. プログラム命令およびデータを格納するために、SDRAM(同期動的ランダム・アクセス・メモリ)を含むメモリと、
    前記メモリへのアクセスを制御するためのメモリ・コントローラと、
    前記メモリ・コントローラに結合されたプロセッサであって、
    プロセッサ・コア、
    前記プロセッサ・コアに結合されたキャッシュ・コントローラ、
    前記キャッシュ・コントローラによって制御され、前記プロセッサ・コアからデータを受信し、そこにデータを提供するため動作可能に結合された1次(L1)キャッシュ、および
    前記キャッシュ・コントローラによって制御され、前記プロセッサ・コアからデータを受信し、そこにデータを提供するため動作可能に結合された2次(L2)キャッシュ、
    を含むプロセッサと、
    を含むコンピュータ・システムにおいて、
    前記キャッシュ・コントローラは、前記L1およびL2のキャッシュの少なくとも1つを複数のプールに分割し、各プールに対してそれぞれのキャッシュ追出しポリシーを適用するためにプログラムされる、
    ことを特徴とする、コンピュータ・システム。
  29. 前記L2キャッシュは、
    n個のキャッシュ・ライン・グループを含むnウェイ群連想キャッシュを含み、キャッシュ・ラインの各グループは異なるプールと関連し、ここで前記キャッシュ・コントローラは、各プールに対してそれぞれのキャッシュ追出しポリシーを提供することを特徴とする請求項28記載のコンピュータ・システム。
  30. 前記L1キャッシュは、命令キャッシュおよびデータ・キャッシュを含むハーバード・アーキテクチャを含み、ここで前記命令キャッシュ・コントローラは、前記命令キャッシュのためのキャッシュ・ラインを複数のプールに分割するためにプログラムされ、前記キャッシュ・コントローラは、各プールに対してそれぞれのキャッシュ・ライン追出しポリシーを使用することを特徴とする請求項28記載のコンピュータ、システム。
JP2007549512A 2004-12-29 2005-12-20 プログラマ制御のキャッシュ・ライン追出しポリシーのための方法 Pending JP2008525919A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/027,444 US20060143396A1 (en) 2004-12-29 2004-12-29 Method for programmer-controlled cache line eviction policy
PCT/US2005/046846 WO2006071792A2 (en) 2004-12-29 2005-12-20 Method for programmer-controlled cache line eviction policy

Publications (1)

Publication Number Publication Date
JP2008525919A true JP2008525919A (ja) 2008-07-17

Family

ID=36454331

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007549512A Pending JP2008525919A (ja) 2004-12-29 2005-12-20 プログラマ制御のキャッシュ・ライン追出しポリシーのための方法

Country Status (5)

Country Link
US (1) US20060143396A1 (ja)
EP (1) EP1831791A2 (ja)
JP (1) JP2008525919A (ja)
CN (1) CN100437523C (ja)
WO (1) WO2006071792A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010244205A (ja) * 2009-04-02 2010-10-28 Fujitsu Ltd コンパイラプログラムおよびコンパイラ装置
JP2011204060A (ja) * 2010-03-26 2011-10-13 Nec Corp ディスク装置
JP2014503103A (ja) * 2011-12-23 2014-02-06 インテル・コーポレーション 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置
JP2017519286A (ja) * 2014-05-21 2017-07-13 クアルコム,インコーポレイテッド 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods

Families Citing this family (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006065805A (ja) * 2004-08-30 2006-03-09 Canon Inc 画像処理装置及び制御方法
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
JP2008512786A (ja) 2004-09-10 2008-04-24 カビウム・ネットワークス データ構造の選択的複製方法および装置
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7281092B2 (en) * 2005-06-02 2007-10-09 International Business Machines Corporation System and method of managing cache hierarchies with adaptive mechanisms
US7895398B2 (en) * 2005-07-19 2011-02-22 Dell Products L.P. System and method for dynamically adjusting the caching characteristics for each logical unit of a storage array
US7958312B2 (en) * 2005-11-15 2011-06-07 Oracle America, Inc. Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state
US7934054B1 (en) 2005-11-15 2011-04-26 Oracle America, Inc. Re-fetching cache memory enabling alternative operational modes
US7647452B1 (en) 2005-11-15 2010-01-12 Sun Microsystems, Inc. Re-fetching cache memory enabling low-power modes
US7899990B2 (en) * 2005-11-15 2011-03-01 Oracle America, Inc. Power conservation via DRAM access
US7516274B2 (en) * 2005-11-15 2009-04-07 Sun Microsystems, Inc. Power conservation via DRAM access reduction
US7873788B1 (en) 2005-11-15 2011-01-18 Oracle America, Inc. Re-fetching cache memory having coherent re-fetching
US7415575B1 (en) * 2005-12-08 2008-08-19 Nvidia, Corporation Shared cache with client-specific replacement policy
US7747627B1 (en) * 2005-12-09 2010-06-29 Cisco Technology, Inc. Method and system for file retrieval using image virtual file system
US7725922B2 (en) * 2006-03-21 2010-05-25 Novell, Inc. System and method for using sandboxes in a managed shell
US7743414B2 (en) 2006-05-26 2010-06-22 Novell, Inc. System and method for executing a permissions recorder analyzer
US7908236B2 (en) * 2006-07-20 2011-03-15 International Business Machines Corporation Using multiple data structures to manage data in cache
US7805707B2 (en) * 2006-07-21 2010-09-28 Novell, Inc. System and method for preparing runtime checks
US7739735B2 (en) * 2006-07-26 2010-06-15 Novell, Inc. System and method for dynamic optimizations using security assertions
EP2050002A2 (en) * 2006-08-01 2009-04-22 Massachusetts Institute of Technology Extreme virtual memory
US7856654B2 (en) * 2006-08-11 2010-12-21 Novell, Inc. System and method for network permissions evaluation
US7823186B2 (en) * 2006-08-24 2010-10-26 Novell, Inc. System and method for applying security policies on multiple assembly caches
US7555605B2 (en) * 2006-09-28 2009-06-30 Freescale Semiconductor, Inc. Data processing system having cache memory debugging support and method therefor
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
WO2008070813A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a front-end, distributed raid
US7752395B1 (en) * 2007-02-28 2010-07-06 Network Appliance, Inc. Intelligent caching of data in a storage server victim cache
US9329800B2 (en) 2007-06-29 2016-05-03 Seagate Technology Llc Preferred zone scheduling
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
CN101652760B (zh) * 2007-12-10 2012-12-26 松下电器产业株式会社 共享缓存控制装置、共享缓存控制方法及集成电路
US8549222B1 (en) * 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
JP5348146B2 (ja) * 2009-01-28 2013-11-20 日本電気株式会社 キャッシュメモリおよびその制御方法
EP2441005A2 (en) 2009-06-09 2012-04-18 Martin Vorbach System and method for a cache in a multi-core processor
WO2011031796A2 (en) 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
EP2476079A4 (en) 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
AU2010201718B2 (en) * 2010-04-29 2012-08-23 Canon Kabushiki Kaisha Method, system and apparatus for identifying a cache line
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
CN102387425B (zh) * 2010-08-30 2015-05-20 中兴通讯股份有限公司 缓存装置及方法
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US9189424B2 (en) * 2011-05-31 2015-11-17 Hewlett-Packard Development Company, L.P. External cache operation based on clean castout messages
GB2513492B (en) * 2011-12-16 2018-07-11 Ibm Tape drive system server
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) * 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US20130290636A1 (en) * 2012-04-30 2013-10-31 Qiming Chen Managing memory
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US9552293B1 (en) 2012-08-06 2017-01-24 Google Inc. Emulating eviction data paths for invalidated instruction cache
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US8873747B2 (en) 2012-09-25 2014-10-28 Apple Inc. Key management using security enclave processor
US9047471B2 (en) * 2012-09-25 2015-06-02 Apple Inc. Security enclave processor boot control
US9600418B2 (en) * 2012-11-19 2017-03-21 Florida State University Research Foundation, Inc. Systems and methods for improving processor efficiency through caching
US9612960B2 (en) 2012-11-19 2017-04-04 Florida State University Research Foundation, Inc. Data filter cache designs for enhancing energy efficiency and performance in computing systems
CN103019962B (zh) * 2012-12-21 2016-03-30 华为技术有限公司 数据缓存处理方法、装置以及***
US9158497B2 (en) * 2013-01-02 2015-10-13 International Business Machines Corporation Optimization of native buffer accesses in Java applications on hybrid systems
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
WO2014142969A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Object liveness tracking for use in processing device cache
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9747341B2 (en) 2013-06-06 2017-08-29 Oracle International Corporation System and method for providing a shareable global cache for use with a database environment
US9600546B2 (en) 2013-06-06 2017-03-21 Oracle International Corporation System and method for marshaling massive database data from native layer to java using linear array
US9569472B2 (en) 2013-06-06 2017-02-14 Oracle International Corporation System and method for providing a second level connection cache for use with a database environment
US9720970B2 (en) 2013-06-06 2017-08-01 Oracle International Corporation Efficient storage and retrieval of fragmented data using pseudo linear dynamic byte array
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9378153B2 (en) * 2013-08-27 2016-06-28 Advanced Micro Devices, Inc. Early write-back of modified data in a cache memory
US10049048B1 (en) * 2013-10-01 2018-08-14 Facebook, Inc. Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9471524B2 (en) * 2013-12-09 2016-10-18 Atmel Corporation System bus transaction queue reallocation
CN105359116B (zh) * 2014-03-07 2018-10-19 华为技术有限公司 缓存器、共享缓存管理方法及控制器
JP2015176245A (ja) 2014-03-13 2015-10-05 株式会社東芝 情報処理装置及びデータ構造
US10942866B1 (en) * 2014-03-21 2021-03-09 EMC IP Holding Company LLC Priority-based cache
KR102248915B1 (ko) * 2014-03-26 2021-05-07 삼성전자주식회사 하이브리드 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 데이터 처리 방법
US20160055100A1 (en) * 2014-08-19 2016-02-25 Advanced Micro Devices, Inc. System and method for reverse inclusion in multilevel cache hierarchy
JP2016057763A (ja) 2014-09-08 2016-04-21 株式会社東芝 キャッシュ装置、及びプロセッサ
US9547778B1 (en) 2014-09-26 2017-01-17 Apple Inc. Secure public key acceleration
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US9684602B2 (en) 2015-03-11 2017-06-20 Kabushiki Kaisha Toshiba Memory access control device, cache memory and semiconductor device
US9740635B2 (en) 2015-03-12 2017-08-22 Intel Corporation Computing method and apparatus associated with context-aware management of a file cache
US9886194B2 (en) * 2015-07-13 2018-02-06 Samsung Electronics Co., Ltd. NVDIMM adaptive access mode and smart partition mechanism
US10404603B2 (en) * 2016-01-22 2019-09-03 Citrix Systems, Inc. System and method of providing increased data optimization based on traffic priority on connection
GB2547191B (en) * 2016-02-05 2020-01-08 Advanced Risc Mach Ltd An apparatus and method for supporting multiple cache features
US11249914B2 (en) * 2016-04-12 2022-02-15 Vmware, Inc. System and methods of an efficient cache algorithm in a hierarchical storage system
US10282302B2 (en) * 2016-06-30 2019-05-07 Hewlett Packard Enterprise Development Lp Programmable memory-side cache management for different applications
US10599585B2 (en) * 2017-03-23 2020-03-24 Intel Corporation Least recently used-based hotness tracking mechanism enhancements for high performance caching
WO2018179044A1 (ja) * 2017-03-27 2018-10-04 三菱電機株式会社 キャッシュメモリおよびその制御方法
CN107171918B (zh) * 2017-04-26 2020-06-16 成都成电光信科技股份有限公司 支持优先级的gjb289a总线模块中的消息收发方法
US11294572B2 (en) * 2017-07-06 2022-04-05 Seagate Technology, Llc Data storage system with late read buffer assignment after arrival of data in cache
CN108304044A (zh) * 2018-02-28 2018-07-20 郑州云海信息技术有限公司 一种nvme硬盘热插拔的设置方法及***
US10983922B2 (en) 2018-05-18 2021-04-20 International Business Machines Corporation Selecting one of multiple cache eviction algorithms to use to evict a track from the cache using a machine learning module
US11010306B2 (en) * 2018-10-22 2021-05-18 Arm Limited Apparatus and method for managing a cache hierarchy
US10915461B2 (en) 2019-03-05 2021-02-09 International Business Machines Corporation Multilevel cache eviction management
CN113424148A (zh) 2019-03-15 2021-09-21 英特尔公司 用于检测跨分片访问、提供多分片推理缩放和提供最佳页迁移的多分片存储器管理
US11620230B2 (en) * 2019-05-24 2023-04-04 Texas Instruments Incorporated Methods and apparatus to facilitate read-modify-write support in a coherent victim cache with parallel data paths
CN111290759B (zh) * 2020-01-19 2023-09-19 龙芯中科技术股份有限公司 指令生成方法、装置及设备
CN113392042B (zh) * 2020-03-12 2024-04-09 伊姆西Ip控股有限责任公司 用于管理缓存的方法、电子设备和计算机程序产品
US11436158B2 (en) 2020-05-29 2022-09-06 International Business Machines Corporation Fine-grained forced cache eviction
CN112130988B (zh) * 2020-08-12 2022-07-26 国电南瑞科技股份有限公司 一种基于优先级分区的任务加速优化方法及装置
EP4006734B1 (en) * 2020-11-25 2024-05-08 ARM Limited Methods and apparatus for transferring data within hierarchical cache circuitry
US11693778B2 (en) * 2020-12-11 2023-07-04 Advanced Micro Devices, Inc. Cache grouping for increasing performance and fairness in shared caches
CN112612728B (zh) * 2020-12-17 2022-11-11 海光信息技术股份有限公司 缓存管理方法及装置、设备
US20220365882A1 (en) * 2021-05-13 2022-11-17 Nvidia Corporation System and method of controlling cache memory residency
US12026129B2 (en) * 2022-03-30 2024-07-02 Snowflake Inc. Atomic cache management of file collections
CN117093160B (zh) * 2023-10-18 2024-02-02 苏州元脑智能科技有限公司 Cache的数据处理方法、装置、计算机设备和介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04100158A (ja) * 1990-08-18 1992-04-02 Pfu Ltd キャッシュ制御方式
JPH05143451A (ja) * 1991-11-20 1993-06-11 Kisaburo Nakazawa データ処理装置
JPH0659977A (ja) * 1992-08-05 1994-03-04 Sony Corp 明示的なライン置換え操作が可能なキャッシュメモリとその制御方法
JPH08335188A (ja) * 1995-06-08 1996-12-17 Hitachi Ltd ソフトウェア制御可能なキャッシュメモリ装置
JPH09282226A (ja) * 1996-04-12 1997-10-31 Nec Corp 登録資格フラグ付きキャッシュメモリ
JPH1196074A (ja) * 1997-07-22 1999-04-09 Hewlett Packard Co <Hp> 交換アルゴリズム動的選択コンピュータシステム
JP2002007213A (ja) * 2000-06-26 2002-01-11 Matsushita Electric Ind Co Ltd キャッシュメモリ制御方法及びプログラム処理方法
JP2002116956A (ja) * 2000-10-06 2002-04-19 Nec Corp キャッシュ制御方法及びキャッシュ制御システム
US20020087809A1 (en) * 2000-12-28 2002-07-04 Arimilli Ravi Kumar Multiprocessor computer system with sectored cache line mechanism for cache intervention
US6434668B1 (en) * 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to store information in particular regions of the cache according to information-type
JP2002342163A (ja) * 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6321296B1 (en) * 1998-08-04 2001-11-20 International Business Machines Corporation SDRAM L3 cache using speculative loads with command aborts to lower latency
US7035979B2 (en) * 2002-05-22 2006-04-25 International Business Machines Corporation Method and apparatus for optimizing cache hit ratio in non L1 caches
US20040199727A1 (en) * 2003-04-02 2004-10-07 Narad Charles E. Cache allocation

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04100158A (ja) * 1990-08-18 1992-04-02 Pfu Ltd キャッシュ制御方式
JPH05143451A (ja) * 1991-11-20 1993-06-11 Kisaburo Nakazawa データ処理装置
JPH0659977A (ja) * 1992-08-05 1994-03-04 Sony Corp 明示的なライン置換え操作が可能なキャッシュメモリとその制御方法
JPH08335188A (ja) * 1995-06-08 1996-12-17 Hitachi Ltd ソフトウェア制御可能なキャッシュメモリ装置
JPH09282226A (ja) * 1996-04-12 1997-10-31 Nec Corp 登録資格フラグ付きキャッシュメモリ
JPH1196074A (ja) * 1997-07-22 1999-04-09 Hewlett Packard Co <Hp> 交換アルゴリズム動的選択コンピュータシステム
US6434668B1 (en) * 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to store information in particular regions of the cache according to information-type
JP2002007213A (ja) * 2000-06-26 2002-01-11 Matsushita Electric Ind Co Ltd キャッシュメモリ制御方法及びプログラム処理方法
JP2002116956A (ja) * 2000-10-06 2002-04-19 Nec Corp キャッシュ制御方法及びキャッシュ制御システム
US20020087809A1 (en) * 2000-12-28 2002-07-04 Arimilli Ravi Kumar Multiprocessor computer system with sectored cache line mechanism for cache intervention
JP2002342163A (ja) * 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010244205A (ja) * 2009-04-02 2010-10-28 Fujitsu Ltd コンパイラプログラムおよびコンパイラ装置
JP2011204060A (ja) * 2010-03-26 2011-10-13 Nec Corp ディスク装置
JP2014503103A (ja) * 2011-12-23 2014-02-06 インテル・コーポレーション 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置
US9411728B2 (en) 2011-12-23 2016-08-09 Intel Corporation Methods and apparatus for efficient communication between caches in hierarchical caching design
JP2017519286A (ja) * 2014-05-21 2017-07-13 クアルコム,インコーポレイテッド 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供
US10503661B2 (en) 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods

Also Published As

Publication number Publication date
EP1831791A2 (en) 2007-09-12
CN1804816A (zh) 2006-07-19
WO2006071792A3 (en) 2007-01-04
WO2006071792A2 (en) 2006-07-06
CN100437523C (zh) 2008-11-26
US20060143396A1 (en) 2006-06-29

Similar Documents

Publication Publication Date Title
JP2008525919A (ja) プログラマ制御のキャッシュ・ライン追出しポリシーのための方法
US7395407B2 (en) Mechanisms and methods for using data access patterns
US7975107B2 (en) Processor cache management with software input via an intermediary
US20060212654A1 (en) Method and apparatus for intelligent instruction caching using application characteristics
US9251095B2 (en) Providing metadata in a translation lookaside buffer (TLB)
JP5528554B2 (ja) ブロックベースの非透過的キャッシュ
US8490065B2 (en) Method and apparatus for software-assisted data cache and prefetch control
US9286221B1 (en) Heterogeneous memory system
US20180300258A1 (en) Access rank aware cache replacement policy
Peir et al. Capturing dynamic memory reference behavior with adaptive cache topology
US7526609B2 (en) Runtime register allocator
Kloosterman et al. Regless: Just-in-time operand staging for GPUs
US20200104259A1 (en) System, method, and apparatus for snapshot prefetching to improve performance of snapshot operations
US6434668B1 (en) Method of cache management to store information in particular regions of the cache according to information-type
US8874853B2 (en) Local and global memory request predictor
EP1869557B1 (en) Global modified indicator to reduce power consumption on cache miss
Bock et al. Concurrent page migration for mobile systems with OS-managed hybrid memory
US20220066940A1 (en) Limited propagation of unnecessary memory updates
Yu et al. A quantitative evaluation of unified memory in GPUs
KR101689094B1 (ko) 스티키 제거 엔진을 구비한 시스템 캐시
Li et al. An efficient GPU cache architecture for applications with irregular memory access patterns
Lira et al. The migration prefetcher: Anticipating data promotion in dynamic nuca caches
Titos-Gil et al. Way-combining directory: an adaptive and scalable low-cost coherence directory
JPH11143774A (ja) キャッシュ制御機構
Jain Memory Models for Embedded Multicore Architecture

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101129

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110228

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110307

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110729

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110729