JP6325243B2 - 保持優先度に基づくキャッシュ置換ポリシー - Google Patents

保持優先度に基づくキャッシュ置換ポリシー Download PDF

Info

Publication number
JP6325243B2
JP6325243B2 JP2013256657A JP2013256657A JP6325243B2 JP 6325243 B2 JP6325243 B2 JP 6325243B2 JP 2013256657 A JP2013256657 A JP 2013256657A JP 2013256657 A JP2013256657 A JP 2013256657A JP 6325243 B2 JP6325243 B2 JP 6325243B2
Authority
JP
Japan
Prior art keywords
cache
retention priority
cache line
memory
priority value
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.)
Active
Application number
JP2013256657A
Other languages
English (en)
Other versions
JP2014123357A (ja
Inventor
シュヤムラル ラムラキーヤニ プラカシュ
シュヤムラル ラムラキーヤニ プラカシュ
ガーサン サイディ アリ
ガーサン サイディ アリ
Original Assignee
エイアールエム リミテッド
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイアールエム リミテッド, エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2014123357A publication Critical patent/JP2014123357A/ja
Application granted granted Critical
Publication of JP6325243B2 publication Critical patent/JP6325243B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means

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)

Description

本発明は、データ処理システムの分野に関する。より具体的には、本発明は、データ処理システム内で使用するためのキャッシュ置換ポリシー(policies)に関する。
データ処理システムにキャッシュメモリを提供することが知られている。キャッシュメモリは、頻繁に使用されるデータまたは命令へのより高速でより効果的なアクセスを提供する。キャッシュメモリは、一般的に、メインメモリと比較して、限られたサイズを有し、故に、キャッシュメモリ内には、任意の所与の時点で、メインメモリ内に保持される命令/データのサブセットだけしか保持することができない。キャッシュメモリには、置換ポリシーが備えられており、この置換ポリシーは、メインメモリからフェッチしてキャッシュメモリ内に記憶すべき新しいキャッシュラインのための空間を作るために、キャッシュから除去すべきキャッシュライン(データおよび/または命令を含み得る)を決定する。LRU(Least Recently Used),ラウンドロビン(round robin),ランダム(random)等の、キャッシュ置換ポリシーの数多くの既知の例がある。
一態様から概観すると、本発明は、データを処理するための装置を提供し、該装置は、
メモリアクセス要求の複数のソース(source)と、
該複数のソースに結合されるキャッシュメモリと、
該キャッシュメモリに結合され、該キャッシュメモリへのキャッシュラインの挿入、および該キャッシュメモリからのキャッシュラインの追い出しを制御するように構成された、キャッシュ制御回路と、を含み、
該キャッシュ制御回路は、該キャッシュメモリに挿入される各キャッシュラインと関連付けられたそれぞれの保持優先度値を記憶するように構成され、
該キャッシュ制御回路は、該保持優先度値に依存して該キャッシュメモリから追い出すキャッシュラインを選択するように構成され、
該キャッシュ制御回路は、
(i)該複数のソースのうちのどれが、該キャッシュメモリへの該キャッシュラインの挿入をもたらすメモリアクセス要求を発行したのか、および
(ii)該メモリアクセス要求の特権レベル、のうちの少なくとも1つに依存して該キャッシュメモリに挿入されるキャッシュラインと関連付けられる、保持優先度値を設定するように構成されている。
本手法は、各キャッシュラインを、メモリアクセス要求のソースおよび/またはメモリアクセス要求の特権レベルに依存する保持優先度値と関連付けることによって、改善された置換ポリシーが達成され得ることを認識する。次いで、これらの割り当てられた保持優先度値(キャッシュラインがキャッシュメモリ内に存在する間に修正され得る)に依存して、キャッシュメモリから追い出されるキャッシュラインが選択される。
キャッシュ制御回路は、高い保持優先度に対応する保持優先度値を有するキャッシュラインに優先して、低い保持優先度に対応する保持優先度値を有するキャッシュラインを追い出すように構成され得る。故に、保持優先度値は、キャッシュメモリ内に所与のキャッシュラインを保持することの予測される望ましさを表すために使用されることができる。キャッシュメモリ内に所与のキャッシュラインを保持することの望ましさは、それが頻繁にアクセスされるという事実、またはキャッシュラインがキャッシュメモリ内に存在しないことによってアクセスが遅延する場合に顕著なペナルティがあるという事実の結果であり得る。フェッチをトリガーしたオリジナルメモリアクセス要求のソース、および/またはフェッチをトリガーしたメモリアクセ要求の特権レベルに依存して設定される保持優先度値は、キャッシュメモリ内に保持されるキャッシュラインによって達成される利点を増やすことができる(または、別の観点から見れば、キャッシュメモリ内に保持されないキャッシュラインによって被るペナルティを低減させる)。
いくつかの例示的な実施形態において、複数のソースは、実行のためのプログラム命令をフェッチするように構成された命令フェッチ回路と、処理操作を受けるデータ値にアクセスするように構成されたデータアクセス回路とを備える。例として、命令フェッチ回路およびデータアクセス回路はどちらも、汎用プロセッサ、グラフィックス処理ユニット、またはDSPの一部であり得る。命令フェッチ回路またはデータアクセス回路によるメモリアクセスの結果としてキャッシュラインがキャッシュメモリ内に挿入されたかどうかに応じて、命令保持優先度値またはデータ保持優先度値のどちらかが、そのキャッシュラインと関連付けられ得る。命令保持優先度値およびデータ保持優先度値は、その後、キャッシュラインがキャッシュメモリから追い出される異なる可能性を与えるために、異なっている。
状況に応じて、命令保持優先度値が、データ保持優先度値よりも高い保持優先度に対応することが望ましくなり得る。他の状況では、逆の保持優先度関係を保持すべきであることが望ましくなり得る。故に、いくつかの実施形態において、キャッシュ制御回路は、上の関係のうちの1つを設定するために、フラグに応答する。
このフラグは、物理的なハードウェア信号によって制御されることができる可能性があるが、いくつかの実施形態において、フラグ値は、ソフトウェアプログラマブルなフラグプログラム値であり、この値は、命令またはデータが、キャッシュメモリ内に挿入されたときに、異なる保持優先度値をそれらに割り当てさせることによって、キャッシュメモリ内に優先的に保持されるかどうかを制御する。
いくつかの実施形態において、命令フェッチ回路およびデータアクセス回路はインオーダープロセッサ(in-order processor)の一部であり、この状況において、命令保持優先度値は、データ保持優先度値よりも低い保持優先度を有するべきであることが望ましい。すなわち、(少なくとも、命令が保持されないようにするのではなく、命令よりもデータを保持することを優先させるようにバイアスを印加するという範囲で)メモリ内に命令よりもデータを優先的に保持することが望ましい。
保持優先度値は、システム内(例えば、キャッシュ制御回路内)のどこかに記憶することができるが、これは、いくつかの実施形態において、保持優先度値が、それらの関連するキャッシュラインとともに(最も高い可能性としては、キャッシュメモリが別々のTAGメモリおよびデータメモリを含む場合に、TAG値とともに)キャッシュメモリ内に記憶されるという点で好都合である。キャッシュラインは、それらに関連付けられる保持優先度値を容易に収容するために、1またはそれ以上のビット分拡張されてもよい。
追い出すキャッシュラインを選択するときに、キャッシュ制御回路は、キャッシュラインと関連付けられる保持優先度値に応答する。いくつかの実施形態において、キャッシュ制御回路は、表され得る最低保持優先度値に対応する関連する保持優先度値を有するキャッシュラインの中から追い出すキャッシュラインを選択するように構成され得る。最低保持優先度に対応するキャッシュラインのこのプール内で、キャッシュ制御回路は、ラウンドロビンまたはleast recently used等の別のポリシーに従って選択することができるが、最低保持優先度に対応する関連する保持優先度値を有するキャッシュラインの中からランダムな選択を行うのであれば簡単である。
最低保持優先度値に対応し、故に、追い出しに適格である関連する保持優先度値を伴う、いかなるキャッシュラインもない場合、いくつかの実施形態において、キャッシュコントローラは、少なくとも1つのキャッシュラインが、最低保持優先度に対応する保持優先度値を有し、故に、追い出しに適格になるまで、キャッシュメモリ内の全てのキャッシュラインの保持優先度を降格させるように構成される。そのような降格は、記憶された保持優先度値を変更することによって、または記憶された保持優先度値とそれらが表す優先度との間のマッピングを変更することによって達成され得る。
上で論じたように、キャッシュラインが挿入されるときにそれと関連付けられる保持優先度値は、対応するメモリアクセス要求のソースまたは特権レベルに依存して変動する。その後で、保持優先度値は、そのキャッシュラインと関連付けられるアクティビティに個々に依存して、またはキャッシュメモリのアクティビティに全体的に依存して変更され得る。いくつかの実施形態において、キャッシュ制御回路は、キャッシュメモリの中に既に存在するキャッシュラインへのアクセス(ヒット)を検出し、そのようなヒットに応じて、キャッシュラインの保持優先度を昇格させるためにその保持優先度を変更するように構成される。したがって、定期的にアクセスされるキャッシュラインは、それらがキャッシュメモリ内に優先的に保持されるように、それらの保持優先度を昇格させる。
キャッシュヒットに応じたキャッシュラインの保持優先度値の昇格は、種々の異なる方法で行うことができる。いくつかの実施形態において、ヒットしたキャッシュラインは、各アクセスに応じて、最高の最大保持優先度値(これに到達すると、ヒットに応じたさらなる昇格をされない)に向かってその保持優先度値を漸増的に昇格させるか、または代替として、ヒットが起こったときに、最高保持優先度に直接移行するように変更されても良い。
上で論じたように、異なる保持優先度値が関連する複数のソースは、命令フェッチ回路対データアクセス回路の形態を取ることができる。他の実施形態において、複数のソースは、汎用プロセッサと、グラフィックス処理ユニットとを含むことができ、これらは、キャッシュラインが、汎用プロセッサとグラフィックス処理ユニットとの間で共有されるキャッシュメモリ内に挿入されるようにトリガーするキャッシュラインと関連付けられる、異なる保持優先度値を有する。一例として、グラフィックス処理ユニットは、キャッシュメモリ内でミスするメモリアクセスに関連したより長い待ち時間を許容することができる。故に、汎用プロセッサのために、キャッシュメモリに挿入されるキャッシュラインに、より高い保持優先度に対応する保持優先度値を割り当てることによって、汎用プロセッサにキャッシュリソースを偏らせることが望ましい。
複数のソースの別の例は、潜在的に同一である複数の汎用プロセッサであり得る。しかしながら、これらのプロセッサのいくつかには、よりスピードが重視されるタスクが割り当てられ得、故に、その複数の汎用プロセッサによって共有されるキャッシュメモリ内のキャッシュラインの保持を、命令またはデータへの迅速なアクセスを最も必要とするプロセッサに偏らせることが適切である(例えば、プロセッサのいくつかは、パフォーマンスが重視されるリアルタイムタスクを実行する一方で、他のプロセッサは、より長い待ち時間を容易に許容することができるバックグラウンドメンテナンスタスクをする)。
本手法が適用されるキャッシュメモリは、メモリシステム内の位置において種々の異なる形態を取ることができる。いくつかの実施形態において、キャッシュメモリは、2次キャッシュメモリであるが、他の実施形態において、キャッシュメモリは、3次キャッシュメモリであり得る。
保持優先度値は、指定することが所望される細かさに依存して、種々の異なるビットサイズを有することができることが認識されるであろう。支持される細かさの程度と、保持優先度値を記憶するために必要な記憶リソースとの間にはバランスがある。いくつかの実施形態では、保持優先度値を2ビットの保持優先度値とすることによって、妥協が達成される。
上で述ベたように、キャッシュメモリへ挿入するとキャッシュラインに割り当てられる保持優先度は、キャッシュメモリにキャッシュラインをフェッチするメモリアクセス要求と関連付けられる特権レベルに依存して変動し得る。このように、キャッシュラインの保持は、より高い特権レベルを伴うメモリアクセス要求によってフェッチされるキャッシュラインを優先するように偏向され得る。一例として、本装置は、カーネルプログラムおよび1つ以上のユーザプログラムの双方を実行し得、カーネルプログラムの特権レベルは、1つ以上のユーザプログラムの特権レベルよりも高い。この場合、例えば、カーネルプログラムのためにキャッシュメモリに挿入されるキャッシュラインには、1つ以上のユーザプログラムのために挿入されるキャッシュラインよりも高い、保持のためのより高い保持優先度が与えられ得る。他の実施形態では、この逆も当てはまり得る。すなわち、ユーザプログラムのために挿入されるキャッシュラインには、カーネルプログラムのために挿入されるキャッシュラインよりも高い優先度が与えられても良い。
本発明の別の態様から概観すると、本発明は、データを処理するための装置を提供し、該装置は、
メモリアクセス要求を生成するための複数のソース手段と、
データを記憶するためのキャッシュメモリ手段と、
該キャッシュメモリ手段へのキャッシュラインの制御挿入、および該キャッシュメモリ手段からのキャッシュラインの追い出しを制御するためのキャッシュ制御手段と、を備え、
該キャッシュ制御手段は、該キャッシュメモリ手段に挿入される各キャッシュラインと関連付けられるそれぞれの保持優先度値を記憶するように構成され、
該キャッシュ制御手段は、該保持優先度値に依存して該キャッシュメモリ手段から追い出すキャッシュラインを選択するように構成され、
該キャッシュ制御手段は、
(i)該複数のソースのうちのどれが、該キャッシュメモリ手段への該キャッシュラインの挿入をもたらす、メモリアクセス要求を発行したのか、および
(ii)該メモリアクセス要求の特権レベル、のうちの少なくとも1つに依存して該キャッシュメモリ手段に挿入されるキャッシュラインと関連付けられる、保持優先度値を設定するように構成される。
さらなる態様から概観すると、本発明は、データを処理する方法を提供し、該方法は、
複数のソースでメモリアクセス要求を生成するステップと、
キャッシュメモリ内にデータを記憶するステップと、
該キャッシュメモリ手段へのキャッシュラインの制御挿入、および該キャッシュメモリ手段からのキャッシュラインの追い出しを制御するステップと、を含み、該方法はさらに、
該キャッシュメモリに挿入される各キャッシュラインと関連付けられるそれぞれの保持優先度値を記憶するステップと、
該保持優先度値に依存して該キャッシュメモリ手段から追い出すキャッシュラインを選択するステップと、
保持優先度値を設定するステップであって、
(i)該複数のソースのうちのどれが、該キャッシュメモリへの該キャッシュラインの挿入をもたらす、メモリアクセス要求を発行したのか、および
(ii)該メモリアクセス要求の特権レベル、のうちの少なくとも1つに依存して該キャッシュメモリに挿入されるキャッシュラインと関連付けられる、保持優先度値を設定するステップと、を含む。
本発明の上述の、および他の目的、特徴、および利点は、添付図面にとともに読まれるべき、実例となる実施形態の以下の詳細な説明から明らかになるであろう。
以下、添付図面を参照しながら、本発明の実施形態を単なる例として説明する。
複数のアクセス要求ソース、キャッシュ階層、およびメインメモリを含む、データ処理システムを概略的に図示する図である。 命令フェッチ回路およびデータアクセス回路を含む、汎用プロセッサを概略的に図示する図である。 異なる付随の保持優先度値を伴うキャッシュラインを挿入し、次いで、それらの保持優先度値に依存してキャッシュラインの追い出しを行うための、キャッシュ制御回路を概略的に図示する図である。 1つのキャッシュラインの内容を概略的に図示する図である。 受け取ったメモリアクセス要求に応じたキャッシュ制御回路の動作を概略的に図示するフロー図である。 保持優先度値がメモリアクセス要求のソースに従って設定されるときに、キャッシュミスに関連して行われる処理操作を概略的に図示するフロー図である。 ミスをもたらしたメモリアクセスが、カーネルプログラムと関連付けられるカーネル特権レベルを有するかどうかに依存して、保持優先度値が設定されることを除いて、図6のフローと類似するフロー図である。
図1は、メインメモリ4と、1つの3次キャッシュ6、2つの2次キャッシュ8、10、4つの1次キャッシュ12、14、16、18を含むキャッシュ階層と、2つの汎用プロセッサ20、22、1つのグラフィックス処理ユニット24、およびDSPユニット26を含むメモリアクセス要求の複数のソースとを備える、データ処理装置2を概略的に図示する。
種々のキャッシュメモリ6〜18は、階層構造で配列される。アクセス要求ソース20、22、24、26の全ては、単一の3次キャッシュ6を共有する。2つの汎用プロセッサ20、22は、2次キャッシュ8を共有する。グラフィックス処理ユニット24およびDSP26は、2次キャッシュ10を共有する。アクセス要求ソース20、22、24、26のそれぞれは、それ自体の1次キャッシュ12、14、16、18を有する。本手法は、キャッシュ6〜18のいずれかに適用することができるが、2次キャッシュ8、10および3次キャッシュ6で特に有用であることが見出される。
また、同図にはメインメモリ4も図示される。このメインメモリ4は、メモリアドレス空間をサポートし、この空間内では、主に、メモリアドレスの異なる範囲が、種々のアクセス要求ソースに20、22、24、26上で実行する異なるプログラムまたはタスクによって使用され得る。キャッシュメモリ6〜18のいずれかにフェッチされるキャッシュラインは、メインメモリ4内の対応するアドレス(実際には、小範囲のアドレス)を有する。図1で図示されるように、異なる範囲のメモリアドレスが、複数のユーザプログラム28、30、32、および34のうちの異なるものによって使用され、異なる範囲のメモリアドレス36が、カーネルプログラム(特定の動作モードで頻繁に実行され得るコードで構成されるオペレーティングシステムの一部)に使用される。メモリ管理ユニット(図示せず)は、メモリアクセスアクセス要求の現在の特権レベルのソースに依存して、メインメモリ4の異なる領域へのアクセスを制限するために提供され得る。特権レベルはまた、保持優先度を制御するためにも使用することができる。後で論じるように、キャッシュラインと関連付けられるメモリアドレス(複数可)は、キャッシュメモリ6〜18のうちの1つに挿入されたときに、そのキャッシュラインに割り当てられる保持優先度値を決定するために使用され得る。メモリアドレス空間は、異なる保持優先度値を異なる範囲のメモリアドレスと関連付けることができるように、複数の範囲のメモリアドレスに分割される。
図2は、命令フェッチ回路40と、データアクセス回路42とを含む、汎用プロセッサ38を概略的に図示する。命令フェッチ回路40は、インオーダー命令パイプライン44に渡される一連のプログラム命令をフェッチし、該プログラム命令は、それらが種々の処理段階を受けるにつれて、該パイプラインに沿って進行する。これらの処理段階の少なくとも1つは、命令復号器46で命令を復号化し、レジスタバンク48、乗算器50、シフター52、および加算器54等の処理回路を制御する制御信号を生成して、復号化したプログラム命令によって指定される処理操作を行う。データアクセス回路42は、ロードストアユニット(LSU)の形態であり、データ値の読み出しおよび書き込みを行うために、データアクセスを行い、このデータ値は、処理回路48、50、52、54によって実行されるプログラム命令の制御下で処理操作の対象となる。汎用プロセッサ38は、メモリアクセス要求が命令またはデータ、および関連する特権レベルに関連するかどうかを識別する信号を出力する。
図2は、汎用プロセッサ38の様式化した代表例を示すこと、および実際に、汎用プロセッサ38は、一般的に、数多くのさらなる回路要素を含むことが認識されるであろう。これらの回路要素は、明確にするために、図2から省略されている。
命令フェッチ回路40およびデータアクセス回路42を介してアクセスされるデータおよび命令は、キャッシュ階層6〜18のレベルのいずれかに記憶され得、また、メインメモリ4にも記憶される。メモリアクセス要求は、ヒットするまでキャッシュ階層を通して渡されるか、またはいかなるヒットも起こらなければ、メインメモリ4に渡される。いかなるヒットも起こらなかったときに、これはミスとなり、アクセスしようとするデータ(または命令)を含むキャッシュラインが、メインメモリ4からキャッシュ階層6〜18へフェッチされる。より高次のキャッシュの1つでミスが起こった場合(例えば、1次キャッシュ12〜18でミスが起こったが、2次キャッシュまたは3次キャッシュ6等の、より低次のキャッシュ内ではヒットが起こった場合)、キャッシュラインが、そのより低次のキャッシュから、より高次のメモリアクセス要求のソースにより近いキャッシュに取り出される。本手法は、キャッシュラインがキャッシュ階層の中のあるレベルから別のレベルにコピーされるときに、挿入時に、保持優先度値を割り当てるために使用され得る。
メモリアクセス要求がアクセス要求ソース20、22、24、26のうちの1つによって行われると、メモリアクセス要求のソースを識別する信号、ならびに現在設定されているプログラム実行の特権レベルを識別する信号が付随する。一例として、付随の信号は、メモリアクセス要求が、命令フェッチ回路40から生じているのか、またはデータアクセス回路42から生じているのかを区別することができる。メモリアクセス要求の結果がミスとなった場合、メモリアクセス要求のソースを示すこの信号は、そのキャッシュラインがミスの起こったキャッシュメモリに挿入されるときに、ミスに対応するキャッシュラインと関連付けられる保持優先度値を設定するために使用され得る。次いで、命令フェッチまたはデータアクセスの結果として挿入されるキャッシュラインと関連付けられる、これらの異なる保持優先度値は、後に、キャッシュメモリから追い出すキャッシュラインの選択を制御するために使用され得る。
上記は、ソースが命令フェッチ回路40であるか、またはデータアクセス回路42であるかに基づいた、保持優先度値の異なる設定を説明している。異なる保持優先度値はまた、例えば、ソースが汎用プロセッサ20、22のうちの1つであったか、またはグラフィックス処理ユニット24であったか等の他の要因に応じて設定することもできる。他の実施形態において、2つの汎用プロセッサ20、22は、異なるタイプのタスクを行うことができ、また、該タスクのための共有キャッシュメモリに充填されるキャッシュラインのために使用される、関連する異なる保持優先度値を有することができる(例えば、一方のプロセッサ20は、高いキャッシュ保持優先度が割り当てられる、リアルタイムタスクを行うことができ、もう一方のプロセッサ22は、より低い保持優先度のバックグラウンドタスクを行うことができる)。
キャッシュメモリ(ソース識別子と別々に、またはソース識別子と組み合わせて使用され得る)に挿入されるキャッシュラインと関連付けられる保持優先度値を制御する別の方法は、そのキャッシュラインと関連付けられる特権レベルに基づく。カーネルプログラムは、一般的に、ユーザプログラムよりも高い特権レベルで実行され、キャッシュラインの保持は、1つ以上のユーザプログラムによってフェッチされるキャッシュラインよりも、カーネルプログラムによってフェッチされるキャッシュラインを優先するように(挿入時に保持優先度値を使用して)偏向され得る。
図3は、キャッシュメモリ58に連結されるキャッシュ制御回路56を概略的に図示する。キャッシュ制御回路56は、メモリアドレスを指定するメモリアクセス要求、メモリアクセス要求のソースの1つからの命令フェッチであるか、データアクセスであるかを識別する信号、および特権レベル信号を受け取る。キャッシュ制御回路56は、ソフトウェアプログラマブルなフラグ値60に応答し、このフラグ値は、命令にデータよりも高い保持優先度が与えられたのか、またはデータに命令よりも高い保持優先度が与えられたのかを示す。図2で図示されるようなインオーダー汎用プロセッサでは、データキャッシュラインに命令キャッシュラインよりも高い保持優先度を与えることが、改善された性能をもたらすことが分かっている。ソフトウェアプログラマブルなフラグ値60は、この優先度が、個々の状況に適合するようにソフトウェア制御下で選択されることを可能にする。
カーネル特権レベルを伴うメモリアクセス要求と関連付けられるキャッシュラインは、ユーザ特権レベルと関連付けられるキャッシュラインよりも高い保持優先度が与えられ、故に、キャッシュメモリ58内で優先的に保持される。キャッシュ制御回路56は、キャッシュメモリ58内に記憶されるキャッシュライン66によってメモリアクセス要求を提供することができる(ヒットに対応する)かどうか、またはキャッシュメモリ58が、対応するキャッシュラインを含まず、故に、キャッシュメモリ階層内のより高い階層を参照しなければならない(ミスに対応する)かどうかを判定することを制御する。ミスが起こると、データは、その後で、メモリ階層内のより高い階層から戻され、キャッシュメモリ58に記憶される(メモリアクセスがキャッシュ不可としてマークされている場合を除く)。
キャッシュメモリ58が既に満杯である場合は、新しくフェッチされるキャッシュラインのための空間を作るために、既存のキャッシュラインをキャッシュメモリ58から除去しなければならない。後に下で説明されるように、置換ポリシーは、各キャッシュラインが挿入されたときに、キャッシュ制御回路56によってキャッシュメモリ58内に記憶される保持優先度値PVに依存し得る。保持優先度値PVは、キャッシュラインが挿入されたときに初期値に設定されるが、キャッシュラインがキャッシュメモリ58内に存在する間のキャッシュラインの使用に応じて、ならびに、起こり得るキャッシュメモリ58の操作の他の態様(例えば、潜在的なビクティム(victim:犠牲者)キャッシュラインのプールを与えるための、全体的な降格)に応じて、変更することができる。
図4は、キャッシュライン66を概略的に図示する。この実施例において、キャッシュラインは、メモリアドレスに対応するTAG値68を含み、そこから、キャッシュラインを構成する命令またはデータのN個のワードが、メインメモリ4のメモリアドレス空間から取られている。また、2ビット保持優先度値70も、キャッシュライン内に含まれる。この保持優先度値は、最高保持優先度に対応する「00」の保持優先度値、および最低保持優先度に対応する「11」の保持優先度値で示されるように符合化される。下でさらに論じられる実施例において、キャッシュラインは、キャッシュコントローラ56によってキャッシュメモリ58に挿入されるときに、初期保持優先度値(PV)70とともに挿入され、該保持優先度値は、最低保持優先度に対応する「11」、または最低保持優先度よりも1つ高いレベルに対応する「10」という保持優先度値のいずれかである。他の初期値、例えば、より高い保持優先度について「01」を、およびより低い保持優先度について「10」を使用することができる。キャッシュメモリ内に既に記憶されているキャッシュラインにヒットが起こると、次いで、いくつかの実施形態において、最高保持優先度に対応する制限値「00」に到達するならば、その保持優先度値が1つ減少され得る。他の実施形態において、キャッシュメモリ58内に既に記憶されているキャッシュラインについてヒットが起こると、次いで、その保持優先度値は、最高保持優先度に対応する「00」に直ちに変更され得る。
図4は、ともに記憶されたTAGおよびデータを伴うキャッシュラインを図示することが理解されるであろう。実際には、TAGは、データとは別に記憶され得る。この場合、保持優先度値は、有効ビットおよびダーティ(dirty)ビット等の他のビットとともに、TAGを伴って記憶されることができる。
保持優先度値は、より一般には、nビットの保持優先度値である。これは、2個の可能な保持優先度値K=0,1,...2−1を与える。キャッシュライン挿入の異なるクラス(例えばデータ対命令またはカーネル対ユーザ)に割り当てられる保持優先度値は、合計が2−1となるように選択される。これは、利用できるビット空間に保持優先度値を均一に分布させる。異なる開始挿入値は、例えば、強優先データ(データ=00、命令=11)、弱優先データ(データ=01、命令=10)、弱優先命令(データ=10、命令=01)、または強優先命令(データ=11、命令=00)になるように選択することができる。ハードウェア構成またはソフトウェア構成の間で選択され得る異なるポリシーに対応して、これらの異なる開始値が利用されても良い。
図5は、メモリアクセス要求を提供する際に、キャッシュ階層6〜18内の所与のレベルにおける、キャッシュ制御回路56およびキャッシュメモリ58の動作を概略的に図示するフロー図である。ステップ72で、処理は、アクセス要求を受け取るまで待機する。ステップ74で、アクセス要求が、キャッシュメモリ58内のキャッシュラインの1つに既に存在するデータまたは命令に対応しているかどうかに関する判定が行われる。メモリアクセス要求が、既に存在するキャッシュラインに対応する場合、これはヒットであり、処理は、ステップ76に進む。ステップ76で、保持優先度値が最も小さい可能な値「00」に到達するならば、ヒットしたキャッシュラインの保持優先度値が1つ減少される(保持優先度レベルを1つ昇格させることに対応する)。ステップ76の後に、ステップ78は、キャッシュメモリ58からのメモリアクセス要求を提供する役割を果たし、処理は、ステップ72に戻る。
ステップ74で、いかなるヒットも検出されない場合、処理は、ステップ80へ進み、そこでは、下でさらに説明するように、キャッシュミス操作がトリガーされる。処理は、次いで、ステップ82で、データまたは命令のキャッシュラインがキャッシュメモリ58に戻されるのを、待機する。データ/命令が戻され、キャッシュメモリ58に(またはそのような挿入と並列して)挿入されると、処理は、ステップ78に進み、そこでは、メモリアクセス要求が提供される。
図6は、図5のステップ80でトリガーされるように、ミスに応じてキャッシュ制御回路56およびキャッシュメモリ58によって行われる、ミス操作を概略的に図示するフロー図である。ステップ84で、処理は、キャッシュミスが検出されるまで待機する。ステップ86で、キャッシュメモリが現在満杯であるかどうかを判定する。キャッシュメモリが現在満杯でない場合、処理は、ステップ88に進み、そこでは、現在空のキャッシュラインのうちの1つが「ビクティム」としてランダムに選択され、新しくフェッチされたキャッシュラインがその中に充填される。
ステップ86で、キャッシュが既に満杯であると判定された場合、現在占有しているキャッシュラインの中からビクティムを選択しなければならない。ステップ90では、最低保持優先度を有する、何らかの現在占有しているキャッシュラインがあるかどうかを判定する。上で論じた例において、これは、「11」の保持優先度値を有するキャッシュラインに対応する。最低保持優先度を伴ういかなるそのようなキャッシュラインもない場合、処理は、ステップ92に進み、そこでは、キャッシュメモリ58内で現在保持されている全てのキャッシュラインの保持優先度のレベルを1つ降格させる。これは、全ての記憶された保持優先度値PVを変更することによって達成することができる。しかしながら、より効率的な実施形態は、同じ結果を達成するために、記憶された保持優先度値と保持優先度レベルとの間のマッピングを変更し得る。全てのキャッシュラインの保持優先度レベルが1つ降格された後に、処理は、ステップ90に戻り、そこでは、最低保持優先度レベルに関する任意のキャッシュラインの検査を繰り返す。ステップ90で最低保持優先度レベルを伴う少なくとも1つのキャッシュラインが検出されるまで、処理は、ステップ90〜92を循環する。
ステップ90に従って、最低保持優先度レベルを伴う少なくとも1つのキャッシュラインが検出されたときに、ステップ94は、最低保持優先度を伴うキャッシュラインからビクティムをランダムに選択する役割を果たす(単一のキャッシュラインがこの最低保持優先度を有する場合、選択は、この単一のラインとなる)。最低保持優先度のキャッシュラインの中からのビクティムのランダムな選択は、実現することが比較的容易である。最低保持優先度のキャッシュラインをこのプールの中から選択する際に、最長未使用時間(least recently used)ポリシーまたはラウンドロビンポリシー等の他の選択ポリシーが採用されても良い。このような異なるポリシーは、一般的に、それらの操作と関連付けられる状態を記憶するために、追加的なリソースを必要とする。
ステップ94で、ビクティムキャッシュラインが選択されると、ステップ96では、そのキャッシュラインがダーティである(メインメモリ4で現在保持されているキャッシュラインと異なる、更新された値を含む)かどうかを判定する。キャッシュラインがダーティである場合、ステップ98は、そのキャッシュラインが、新しく挿入されるキャッシュラインで上書きされる前に、キャッシュラインをメインメモリ4に書き戻す役割を果たす。
ステップ100では、この実施例において、ミスをトリガーしたメモリアクセスが命令フェッチユニット40から生じたかどうかを判定する。メモリアクセスがフェッチユニットから生じた場合、キャッシュラインは、少なくとも、フェッチされるべきであった命令を含み、ステップ102で、保持優先度値「10」でマークされる。ステップ100で、メモリアクセスが命令フェッチユニットからではないと判定された場合、それは、ロードストアユニット42(データアクセス回路)からのものとなり、ステップ104で、保持優先度値PV「01」が設定される。次いで、ステップ106で、メモリ階層内(例えば、下位レベルのキャッシュメモリまたはメインメモリのうちの1つ)の下位から新しいキャッシュラインを受け取るまで待機する。ステップ106で、キャッシュラインを受け取ると、次いでステップ108は、ステップ94において選択されたビクティムを記憶していたキャッシュラインに、初期保持優先度値PVとともに新しいキャッシュラインを書き込む役割を果たす。
図7は、図6のフロー図と類似するフロー図である。図7における違いは、キャッシュミスが起こったキャッシュラインと関連付けられる特権レベルが、オペレーティングシステムのカーネルプログラムに対応するカーネル特権レベルであるかどうかに基づいて、保持優先度値が決定されることである。ビクティムキャッシュラインが選択されると、次いで、ステップ110で、キャッシュラインミスが起こったメモリアクセスが、カーネルプログラムに対応する特権レベルを有するかどうかを判定する。ステップ110で、メモリアクセスがカーネルプログラムに対応するカーネル特権レベルを有すると判定された場合、ステップ112は、保持優先度値PVを「01」に設定する役割を果たす。逆に、メモリアクセスがユーザ特権レベルを有し、カーネルプログラムに対応しない場合、ステップ114は、初期保持優先度値PVを「10」に設定する役割を果たす。このように、カーネルプログラムと関連付けられるキャッシュラインには、より高い初期保持優先度および他のプログラム(例えば、ユーザプログラム)と関連付けられるキャッシュラインが与えられる。
本発明の実例となる実施形態を、添付図面を参照しながら本明細書に詳細に説明したが、本発明は、それらの厳密な実施形態に限定されるものではなく、また、種々の変更および修正は、添付の特許請求の範囲に記載の本発明の範囲および趣旨から逸脱することなく、当業者によってその中で行うことができることを理解されたい。
2 データ処理装置
4 メインメモリ
6 3次キャッシュメモリ
8,10 2次キャッシュメモリ
12,14,16,18 一次キャッシュメモリ
20,22,24,26 アクセス要求ソース
38 汎用プロセッサ
40 命令フェッチ回路
42 データアクセス回路
44 インオーダー命令パイプライン
46 命令復号器
48 レジスタバンク
50 乗算器
52 シフター
54 加算器

Claims (18)

  1. データを処理するための装置であって、
    メモリアクセス要求の複数のソースであって、実行のためのプログラム命令をフェッチするように構成された、命令フェッチ回路と、前記プログラム命令の制御下で処理操作の対象となるデータ値にアクセスするように構成された、データアクセス回路とを含む、複数のソースと、
    前記複数のソースに連結されるキャッシュメモリと、
    前記キャッシュメモリに連結され、前記キャッシュメモリへのキャッシュラインの挿入、および前記キャッシュメモリからのキャッシュラインの追い出しを制御するように構成された、キャッシュ制御回路と、を備え、
    前記キャッシュ制御回路は、前記キャッシュメモリに挿入される各キャッシュラインと関連付けられるそれぞれの保持優先度値を記憶するように構成され、
    前記キャッシュ制御回路は、前記保持優先度値に依存して前記キャッシュメモリから追い出すキャッシュラインを選択するように構成され、また、
    前記キャッシュ制御回路は、
    (i)前記命令フェッチ回路と前記データアクセス回路のいずれか1つが、前記キャッシュメモリへの前記キャッシュラインの挿入をもたらす、メモリアクセス要求を発行したのか、および
    (ii)前記メモリアクセス要求の特権レベル、のうちの少なくとも1つに依存して前記キャッシュメモリに挿入されるキャッシュラインと関連付けられる、保持優先度値を設定するように構成され、
    前記キャッシュ制御回路は、
    高い保持優先度に対応する保持優先度値を有するキャッシュラインに優先して、低い保持優先度に対応する保持優先度値を有するキャッシュラインを追い出し、
    最低保持優先度に対応する関連する保持優先度値を有するキャッシュラインの中から追い出すためのキャッシュラインを選択し、
    前記最低保持優先度に対応する関連する保持優先度値を伴う、いかなるキャッシュラインもない場合、少なくとも1つのキャッシュラインが、前記最低保持優先度に対応する保持優先度値を有するまで、前記キャッシュメモリ内の全ての前記キャッシュラインの保持優先度を降格させる
    ように構成された、
    装置。
  2. 記命令フェッチ回路によって発行されるメモリアクセス要求の結果として前記キャッシュメモリに挿入されるキャッシュラインは、命令保持優先度値と関連付けられ、また、前記データアクセス回路によって発行されるメモリアクセス要求の結果として前記キャッシュメモリに挿入されるキャッシュラインは、前記命令保持優先度値と異なるデータ保持優先度値と関連付けられる、請求項1に記載の装置。
  3. 前記キャッシュ制御回路は、
    (i)前記命令保持優先度値が、前記データ保持優先度値よりも高い保持優先度に対応すること、および
    (ii)前記命令保持優先度値が、前記データ保持優先度値よりも低い保持優先度に対応すること、のうちの1つを設定するように、フラグ値に応答する、請求項に記載の装置。
  4. 前記フラグ値は、ソフトウェアプログラマブルなフラグ値である、請求項に記載の装置。
  5. 前記命令フェッチ回路および前記データアクセス回路は、インオーダープロセッサの一部であり、前記命令保持優先度値は、前記データ保持優先度値よりも低い保持優先度に対応する、請求項に記載の装置。
  6. 前記保持優先度値は、それらの関連するキャッシュラインのTAG値とともに前記キャッシュメモリ内に記憶される、請求項1に記載の装置。
  7. 前記キャッシュ制御回路は、最低保持優先度に対応する関連する保持優先度値を有するキャッシュラインの中から追い出すための前記キャッシュラインをランダムに選択するように構成された、請求項に記載の装置。
  8. 前記キャッシュ制御回路は、前記キャッシュメモリの中に既に存在するキャッシュラインへのアクセスを検出し、前記キャッシュラインの保持優先度を昇格させるために前記キャッシュラインの保持優先度値を変更するように構成された、請求項に記載の装置。
  9. 前記保持優先度値は、
    (i)各アクセスに応じた、最高保持優先度へ向けての前記キャッシュラインの保持優先度の漸増的な昇格、
    (ii)最高保持優先度への前記キャッシュラインの直接的な昇格、のうちの1つを行うように変更される、請求項に記載の装置。
  10. 前記複数のソースは、汎用プロセッサと、グラフィックス処理ユニットとを含む、請求項1に記載の装置。
  11. 前記複数のソースは、複数の汎用プロセッサを含む、請求項1に記載の装置。
  12. 前記キャッシュメモリは、少なくとも1つの1次キャッシュメモリおよび2次キャッシュメモリを含むキャッシュメモリの階層内の、前記2次キャッシュメモリである、請求項1に記載の装置。
  13. 前記キャッシュメモリは、少なくとも1つの1次キャッシュメモリ、少なくとも1つの2次キャッシュメモリ、および3次キャッシュメモリを含むキャッシュメモリの階層内の、前記3次キャッシュメモリである、請求項1に記載の装置。
  14. 前記保持優先度値は、nビットの保持優先度値であり、キャッシュラインの挿入に応じて前記キャッシュ制御回路によって設定することができる、異なる保持優先度値の合計が、2−1である、請求項1に記載の装置。
  15. カーネルプログラム特権レベルを伴うメモリアクセス要求の結果として前記キャッシュメモリに挿入されるキャッシュラインは、カーネル保持優先度値と関連付けられ、前記キャッシュレベルに挿入されるキャッシュラインは、ユーザ保持優先度値と関連付けられる、請求項1に記載の装置。
  16. 前記カーネル保持優先度値が、前記ユーザ保持優先度値よりも高い保持優先度に対応する、
    前記ユーザ保持優先度値が、前記カーネル保持優先度値よりも高い保持優先度に対応する、のうちの1つである、請求項15に記載の装置。
  17. データを処理するための装置であって、
    メモリアクセス要求を生成するための複数のソース手段であって、実行のためのプログラム命令をフェッチするように構成された、命令フェッチ手段と、前記プログラム命令の制御下で処理操作の対象となるデータ値にアクセスするように構成された、データアクセス手段とを含む、複数のソース手段と、
    データを記憶するためのキャッシュメモリ手段と、
    前記キャッシュメモリ手段へのキャッシュラインの制御挿入、および前記キャッシュメモリ手段からのキャッシュラインの追い出しを制御するためのキャッシュ制御手段と、を備え、
    前記キャッシュ制御手段は、前記キャッシュメモリ手段に挿入される各キャッシュラインと関連付けられるそれぞれの保持優先度値を記憶するように構成され、
    前記キャッシュ制御手段は、前記保持優先度値に依存して前記キャッシュメモリ手段から追い出すキャッシュラインを選択するように構成され、
    前記キャッシュ制御手段は、
    (i)前記命令フェッチ手段と前記データアクセス手段のいずれか1つが、前記キャッシュメモリ手段への前記キャッシュラインの挿入をもたらす、メモリアクセス要求を発行したのか、および
    (ii)前記メモリアクセス要求の特権レベル、のうちの少なくとも1つに依存して前記キャッシュメモリ手段に挿入されるキャッシュラインと関連付けられる、保持優先度値を設定するように構成され、
    前記キャッシュ制御手段は、
    高い保持優先度に対応する保持優先度値を有するキャッシュラインに優先して、低い保持優先度に対応する保持優先度値を有するキャッシュラインを追い出し、
    最低保持優先度に対応する関連する保持優先度値を有するキャッシュラインの中から追い出すためのキャッシュラインを選択し、
    前記最低保持優先度に対応する関連する保持優先度値を伴う、いかなるキャッシュラインもない場合、少なくとも1つのキャッシュラインが、前記最低保持優先度に対応する保持優先度値を有するまで、前記キャッシュメモリ内の全ての前記キャッシュラインの保持優先度を降格させる
    ように構成された、
    装置。
  18. データを処理する方法であって、
    実行のためのプログラム命令をフェッチするように構成された命令フェッチ回路と、前記プログラム命令の制御下で処理操作の対象となるデータ値にアクセスするように構成されたデータアクセス回路とを含む、複数のソースでメモリアクセス要求を生成するステップと、
    キャッシュメモリ内にデータを記憶するステップと、
    前記キャッシュメモリ手段へのキャッシュラインの制御挿入、および前記キャッシュメモリ手段からのキャッシュラインの追い出しを制御するステップと、を含み、前記方法はさらに、
    前記キャッシュメモリに挿入される各キャッシュラインと関連付けられるそれぞれの保持優先度値を記憶するステップと、
    前記保持優先度値に依存して前記キャッシュメモリ手段から追い出すキャッシュラインを選択するステップと、
    保持優先度値を設定するステップであって、
    (i)前記命令フェッチ回路と前記データアクセス回路のいずれか1つが、前記キャッシュメモリへの前記キャッシュラインの挿入をもたらす、メモリアクセス要求を発行したのか、および
    (ii)前記メモリアクセス要求の特権レベル、のうちの少なくとも1つに依存して前記キャッシュメモリに挿入されるキャッシュラインと関連付けて、設定するステップと、
    高い保持優先度に対応する保持優先度値を有するキャッシュラインに優先して、低い保持優先度に対応する保持優先度値を有するキャッシュラインを追い出すステップと、
    最低保持優先度に対応する関連する保持優先度値を有するキャッシュラインの中から追い出すためのキャッシュラインを選択するステップと、
    前記最低保持優先度に対応する関連する保持優先度値を伴う、いかなるキャッシュラインもない場合、少なくとも1つのキャッシュラインが、前記最低保持優先度に対応する保持優先度値を有するまで、前記キャッシュメモリ内の全ての前記キャッシュラインの保持優先度を降格させるステップ、
    を含む、方法。
JP2013256657A 2012-12-13 2013-12-12 保持優先度に基づくキャッシュ置換ポリシー Active JP6325243B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/713,999 2012-12-13
US13/713,999 US9372811B2 (en) 2012-12-13 2012-12-13 Retention priority based cache replacement policy

Publications (2)

Publication Number Publication Date
JP2014123357A JP2014123357A (ja) 2014-07-03
JP6325243B2 true JP6325243B2 (ja) 2018-05-16

Family

ID=49679961

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013256657A Active JP6325243B2 (ja) 2012-12-13 2013-12-12 保持優先度に基づくキャッシュ置換ポリシー

Country Status (4)

Country Link
US (1) US9372811B2 (ja)
JP (1) JP6325243B2 (ja)
CN (1) CN103870394B (ja)
GB (1) GB2508962B (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9448816B2 (en) * 2013-04-29 2016-09-20 Vmware, Inc. Virtual desktop infrastructure (VDI) caching using context
US9418019B2 (en) * 2013-12-31 2016-08-16 Samsung Electronics Co., Ltd. Cache replacement policy methods and systems
CN105302741B (zh) * 2014-07-04 2019-02-26 华为技术有限公司 一种高速缓存控制方法及装置
US10817425B2 (en) 2014-12-26 2020-10-27 Intel Corporation Hardware/software co-optimization to improve performance and energy for inter-VM communication for NFVs and other producer-consumer workloads
US9740635B2 (en) * 2015-03-12 2017-08-22 Intel Corporation Computing method and apparatus associated with context-aware management of a file cache
WO2016169518A1 (zh) * 2015-04-23 2016-10-27 上海芯豪微电子有限公司 一种基于指令和数据推送的处理器系统和方法
GB2540761B (en) * 2015-07-23 2017-12-06 Advanced Risc Mach Ltd Cache usage estimation
US10366013B2 (en) * 2016-01-15 2019-07-30 Futurewei Technologies, Inc. Caching structure for nested preemption
EP3258382B1 (en) * 2016-06-14 2021-08-11 Arm Ltd A storage controller
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10789175B2 (en) * 2017-06-01 2020-09-29 Mellanox Technologies Ltd. Caching policy in a multicore system on a chip (SOC)
US10528483B2 (en) * 2017-10-23 2020-01-07 Advanced Micro Devices, Inc. Hybrid lower-level cache inclusion policy for cache hierarchy having at least three caching levels
US11907091B2 (en) * 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10846241B2 (en) * 2018-08-29 2020-11-24 Vmware, Inc. Score-based cache admission and eviction
US10909038B2 (en) * 2018-12-30 2021-02-02 Chengdu Haiguang Integrated Circuit Design Co. Ltd. Cache management method, cache and storage medium
US11099999B2 (en) * 2019-04-19 2021-08-24 Chengdu Haiguang Integrated Circuit Design Co., Ltd. Cache management method, cache controller, processor and storage medium
CN110704439B (zh) * 2019-09-27 2022-07-29 北京智道合创科技有限公司 数据存储方法及装置
US11768777B2 (en) * 2020-01-22 2023-09-26 EMC IP Holding Company LLC Application aware cache management
US11379380B2 (en) 2020-05-07 2022-07-05 Nxp Usa, Inc. Systems and methods for managing cache replacement
CN112527697A (zh) * 2020-05-11 2021-03-19 大唐半导体科技有限公司 Cache RAM与Retention RAM数据交换控制器及实现方法
CN112612728B (zh) * 2020-12-17 2022-11-11 海光信息技术股份有限公司 缓存管理方法及装置、设备
US11954034B2 (en) * 2022-03-28 2024-04-09 Woven By Toyota, Inc. Cache coherency protocol for encoding a cache line with a domain shared state
CN116342371B (zh) * 2023-03-24 2024-05-24 摩尔线程智能科技(北京)有限责任公司 用于gpu、二级缓存的方法和gpu、二级缓存

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3964054A (en) 1975-06-23 1976-06-15 International Business Machines Corporation Hierarchy response priority adjustment mechanism
JPH05314120A (ja) * 1992-05-11 1993-11-26 Fuji Xerox Co Ltd キャッシュメモリ
US5956744A (en) 1995-09-08 1999-09-21 Texas Instruments Incorporated Memory configuration cache with multilevel hierarchy least recently used cache entry replacement
JP3707854B2 (ja) 1996-03-01 2005-10-19 株式会社東芝 キャッシュ機能を有するコンピュータ及びキャッシュメモリ制御方法
US5963978A (en) 1996-10-07 1999-10-05 International Business Machines Corporation High level (L2) cache and method for efficiently updating directory entries utilizing an n-position priority queue and priority indicators
GB9701960D0 (en) * 1997-01-30 1997-03-19 Sgs Thomson Microelectronics A cache system
US5943687A (en) * 1997-03-14 1999-08-24 Telefonakiebolaget Lm Ericsson Penalty-based cache storage and replacement techniques
US5974507A (en) * 1997-04-14 1999-10-26 International Business Machines Corporation Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm
US6532520B1 (en) * 1999-09-10 2003-03-11 International Business Machines Corporation Method and apparatus for allocating data and instructions within a shared cache
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
US6349365B1 (en) 1999-10-08 2002-02-19 Advanced Micro Devices, Inc. User-prioritized cache replacement
US6721852B2 (en) * 2001-10-17 2004-04-13 Sun Microsystems, Inc. Computer system employing multiple board sets and coherence schemes
US20050144409A1 (en) * 2002-09-11 2005-06-30 Fujitsu Limited Data processing device and method utilizing latency difference between memory blocks
JP2004110240A (ja) * 2002-09-17 2004-04-08 Mitsubishi Electric Corp キャッシュメモリ装置
US6976128B1 (en) * 2002-09-26 2005-12-13 Unisys Corporation Cache flush system and method
US6973541B1 (en) * 2002-09-26 2005-12-06 Unisys Corporation System and method for initializing memory within a data processing system
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
US7383387B2 (en) * 2002-12-13 2008-06-03 Sap Ag Document transformation tool
US20050188158A1 (en) 2004-02-25 2005-08-25 Schubert Richard P. Cache memory with improved replacement policy
JP4618785B2 (ja) * 2004-12-24 2011-01-26 株式会社日立製作所 データ処理システム及び方法
GB0603552D0 (en) * 2006-02-22 2006-04-05 Advanced Risc Mach Ltd Cache management within a data processing apparatus
US7502890B2 (en) * 2006-07-07 2009-03-10 International Business Machines Corporation Method and apparatus for dynamic priority-based cache replacement
US7899994B2 (en) * 2006-08-14 2011-03-01 Intel Corporation Providing quality of service (QoS) for cache architectures using priority information
WO2008043670A1 (en) * 2006-10-10 2008-04-17 International Business Machines Corporation Managing cache data
US20080133844A1 (en) * 2006-12-01 2008-06-05 Srinivasan Ramani Method and apparatus for extending local caches in a multiprocessor system
US8195886B2 (en) * 2007-03-16 2012-06-05 Arm Limited Data processing apparatus and method for implementing a replacement scheme for entries of a storage unit
US7644328B2 (en) * 2007-03-22 2010-01-05 Intel Corporation Sharing routing of a test signal with an alternative power supply to combinatorial logic for low power design
US9203911B2 (en) * 2007-11-14 2015-12-01 Qualcomm Incorporated Method and system for using a cache miss state match indicator to determine user suitability of targeted content messages in a mobile environment
GB0722707D0 (en) * 2007-11-19 2007-12-27 St Microelectronics Res & Dev Cache memory
JP4939387B2 (ja) * 2007-12-06 2012-05-23 ルネサスエレクトロニクス株式会社 データ処理装置及びアドレス空間保護方法
CN101470893B (zh) * 2007-12-26 2011-01-19 中国科学院声学研究所 一种基于位图缓存的矢量图形显示的加速方法
US7802057B2 (en) 2007-12-27 2010-09-21 Intel Corporation Priority aware selective cache allocation
US8001331B2 (en) * 2008-04-17 2011-08-16 Arm Limited Efficiency of cache memory operations
US7774522B2 (en) * 2008-11-17 2010-08-10 Applied Micro Circuits Corporation Cache stashing processor control messages
US8868838B1 (en) * 2008-11-21 2014-10-21 Nvidia Corporation Multi-class data cache policies
US8966181B2 (en) * 2008-12-11 2015-02-24 Seagate Technology Llc Memory hierarchy with non-volatile filter and victim caches
US8250040B2 (en) 2009-06-15 2012-08-21 Microsoft Corporation Storage or removal actions based on priority
US8510511B2 (en) * 2009-12-14 2013-08-13 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
US8930635B2 (en) * 2009-12-14 2015-01-06 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US8918601B2 (en) * 2009-12-14 2014-12-23 International Business Machines Corporation Deferred page clearing in a multiprocessor computer system
US8473725B2 (en) * 2009-12-21 2013-06-25 Ceva D.S.P., Ltd. System and method for processing interrupts in a computing system
US8595451B2 (en) 2010-11-04 2013-11-26 Lsi Corporation Managing a storage cache utilizing externally assigned cache priority tags
US8510510B1 (en) * 2011-01-31 2013-08-13 Symantec Corporation File cache optimization using element prioritization
US9104327B2 (en) * 2011-05-17 2015-08-11 Sandisk Technologies Inc. Fast translation indicator to reduce secondary address table checks in a memory device
US20120311269A1 (en) * 2011-06-03 2012-12-06 Loh Gabriel H Non-uniform memory-aware cache management
US20130024647A1 (en) * 2011-07-20 2013-01-24 Gove Darryl J Cache backed vector registers
US9262327B2 (en) * 2012-06-29 2016-02-16 Intel Corporation Signature based hit-predicting cache

Also Published As

Publication number Publication date
GB201318092D0 (en) 2013-11-27
US20140173214A1 (en) 2014-06-19
US9372811B2 (en) 2016-06-21
GB2508962A (en) 2014-06-18
CN103870394A (zh) 2014-06-18
GB2508962B (en) 2020-12-02
CN103870394B (zh) 2018-12-14
JP2014123357A (ja) 2014-07-03

Similar Documents

Publication Publication Date Title
JP6325243B2 (ja) 保持優先度に基づくキャッシュ置換ポリシー
US20100318742A1 (en) Partitioned Replacement For Cache Memory
US10430349B2 (en) Scaled set dueling for cache replacement policies
US6219760B1 (en) Cache including a prefetch way for storing cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US9098417B2 (en) Partitioning caches for sub-entities in computing devices
US5752261A (en) Method and apparatus for detecting thrashing in a cache memory
US10725923B1 (en) Cache access detection and prediction
US20140201452A1 (en) Fill partitioning of a shared cache
US20180300258A1 (en) Access rank aware cache replacement policy
US20070094664A1 (en) Programmable priority for concurrent multi-threaded processors
JP2005528694A (ja) スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置
US20080256303A1 (en) Cache memory
JP5059609B2 (ja) メモリへの様々なタイプのアクセスを予測するため、およびキャッシュメモリに関連付けられた予測を管理するための、システム、装置、および方法
US20150205724A1 (en) System and method of cache partitioning for processors with limited cached memory pools
US20170168957A1 (en) Aware Cache Replacement Policy
US8856453B2 (en) Persistent prefetch data stream settings
JP2008523490A (ja) キャッシュ置換用データ処理システムおよび方法
US20170357596A1 (en) Dynamically adjustable inclusion bias for inclusive caches
JP2009528612A (ja) データ処理システム並びにデータ及び/又は命令のプリフェッチ方法
KR102540752B1 (ko) 비할당 캐시 정책
US20050188158A1 (en) Cache memory with improved replacement policy
US10705958B2 (en) Coherency directory entry allocation based on eviction costs
US20140297961A1 (en) Selective cache fills in response to write misses
US10083135B2 (en) Cooperative overlay
JP2019521410A (ja) 別のキャッシュレベルからのヒントに基づくキャッシュエントリエイジの設定

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180228

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180412

R150 Certificate of patent or registration of utility model

Ref document number: 6325243

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250