JP5328748B2 - キャッシュメモリにおけるキャッシュラインの置き換え - Google Patents

キャッシュメモリにおけるキャッシュラインの置き換え Download PDF

Info

Publication number
JP5328748B2
JP5328748B2 JP2010246189A JP2010246189A JP5328748B2 JP 5328748 B2 JP5328748 B2 JP 5328748B2 JP 2010246189 A JP2010246189 A JP 2010246189A JP 2010246189 A JP2010246189 A JP 2010246189A JP 5328748 B2 JP5328748 B2 JP 5328748B2
Authority
JP
Japan
Prior art keywords
cache
weight
line
data
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010246189A
Other languages
English (en)
Other versions
JP2011129101A (ja
Inventor
チェルクリ、ナヴィーン
ダブリュー. ブジェゼンスキー、デニス
ティー. ショイナス、イオアニス
シャイエステ、アナヒタ
クマー、アクヒレシュ
アジミ、マニ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2011129101A publication Critical patent/JP2011129101A/ja
Application granted granted Critical
Publication of JP5328748B2 publication Critical patent/JP5328748B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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

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

現代の典型的なコンピュータシステムは、1つ又は複数のプロセッサ又は中央演算処理装置(CPU)をシステムの中心に備える。プロセッサは、データに対して命令を実行し、要求されたオペレーションが実行される。プロセッサは、非常に高い周波数で動作する。プロセッサが直ちにアクセス可能なようにデータを保持するため、データをキャッシュメモリに記憶することができる。キャッシュメモリの様々な実装形態が存在する。小さなキャッシュメモリをプロセッサと同じ半導体ダイ上に位置させることによって、近接高速データソースを提供する構成がしばしば採用されている。あるメモリアーキテクチャは、複数階層からなるメモリ階層構造を持ち、システムメモリ及び/又は大容量記憶装置に到達するまで、より上位の層がプロセッサからより遠くなるような構成となっている。
メモリ階層構造の上位層では大容量のデータが記憶される一方、上位層へのアクセス時間は、キャッシュメモリの下位層へのアクセス時間よりも非常に遅くなっている。したがって、必要とするデータが上位層に記憶されている場合は、長いレイテンシ(latency)が生じる。このことから、最近アクセスしたデータ及び/又は頻繁にアクセスするデータは、メモリ階層構造の下位層に記憶される場合がある。
典型的なキャッシュメモリは、所与の置換スキームを使用して実装されている。多くの置換スキームは、最近最も使われていないキャッシュラインを犠牲キャッシュラインとして選択し、選択されたラインは、新しいデータと置き換えられキャッシュに挿入されるleast recently used(LRU)ポリシーに従っている。大きなプロセッサが1つのダイにより多くのコアを含み、共有キャッシュアーキテクチャを含む様々なキャッシュアーキテクチャが利用可能となるに従い、LRU置換スキームでは正確にデータの真の値を反映できなくなる場合が生じ、必要とするデータが利用不可能となる可能性が生じていた、また、データの取得に長いレイテンシが生じていた。
本発明の一実施形態に係る、キャッシュにアクセスする方法を示したフローチャートである。 本発明の一実施形態に係るスヌープ要求を扱う方法を示したフローチャートである。 本発明の一実施形態に係る置き換え技術を示したブロック図である。 本発明の一実施形態に係るチップマルチプロセッサ(CMP)のブロック図である。 本発明の一実施形態に係る適応型キャッシュ構造を備えるCMPを示したブロック図である。 本発明の一実施形態に係るプロセッサを示すブロック図である。 本発明の一実施形態に係るキャッシュメモリを示したブロック図である。 本発明の一実施形態に係るタグエントリを示したブロック図である。 本発明の一実施形態に係るウェイトテーブルを示したブロック図である。
様々な実施形態において、クリティカリティ(致命度)及び使用の最新性に基づいてキャッシュラインに記憶されたデータのエージング(aging)を行うのに、キャッシュ置換技術を使用する場合がある。この技術を実現するためには、各キャッシュラインのタグ部分は、ウェイト(重み付け)情報及び/又は属性情報を含んでもよい。ウェイト値は、タグ部分のウェイトフィールドに記憶され、属性値は、タグフィールド部分の属性フィールドに記憶されるようにしてもよい。この情報は、割り当ての時に記憶されるようにしてもよく、後にキャッシュ動作が発生する際に更新されるようにしてもよい。以下の説明では、"ウェイト"という言葉を、通常、ウェイト及び属性の両方を指すのに使用している。一実施形態において、割り当てられたウェイトは、データのクリティカリティに比例していてもよく、例えば、MESI(modified(変更)、exclusive(排他)、shared(共有)及びinvalid(無効))といったキャッシュラインのコヒーレンスステート(一貫性の状態)、又は、他のキャッシュコヒーレンシプロトコルによって決定される。他の実施形態では、様々なハードウェア又はソフトウェアメカニズムが、クリティカリティの決定を行う際に基本となる他の情報(多くの場合、属性情報)を提供してもよい。
様々な種類のキャッシュシステムにおいて、以下の実施形態を利用可能である。本発明の一実施形態が有効なキャッシュシステムの一例としては、大型チップマルチプロセッサ(CMP)又はテラスケールシステムのようなCMPの適応型キャッシュが挙げられる。また、他の実施形態を、包含(inclusive)キャッシュ階層構造におけるラストレベルキャッシュ(LLC)等の他のキャッシュアーキテクチャに関連して適用することが可能である。上記の包含キャッシュに加えて他のキャッシュアーキテクチャも、本発明の実施形態の効果を享受可能な場合がある。
多くの実施形態では、あるラインのウェイトを決定する場合には付加的な属性情報を考慮するが、説明を簡易にする目的から、キャッシュラインの重み付けは、MESIプロトコルのステートに応じて行われるとする。また、説明のため、適応型キャッシュは、プロセッサコアにそれぞれ関連付けられ、占有キャッシュ及び共有キャッシュとして動作可能な複数のバンクを含む共有キャッシュであってもよいとする。適応型キャッシュの例は、以下に詳述する。共有される又は占有される所与のラインの特定、及びキャッシュラインを含むコアの数の判断は、共有キャッシュの一部でもあるディレクトリの状態に基づいて行うことができる。
このような適応型キャッシュシステムにおいて、キャッシュラインの重み付けは、各キャッシュラインについてのキャッシュコヒーレンシステートに基づいて行われてもよい。具体的には、一実施形態において、複数のコアによって1つのデータ要素が共有されている状態(すなわち、共有(S)ステート)に対して最も高いウェイトが与えられるが、これは、このようなデータが失われてしまうと、その影響が非常に大きい(例えば、複数のプロセッサがストール状態となってしまう)からである。重要度の相対的な順序として、変更(M)ライン及び排他(E)ラインが、その次に分類される。これらのラインは、1つのコアによって使用されるデータ要素であり、これらのデータを失った場合、メインメモリ回路等にアクセスする必要がある(性能低下、メモリ帯域幅要求の増加、アナログ入出力において電力消費が生じる等が起こる)。そして、この置き換えスキームでは、複数のコアが重複して保持しているラインに対して、最も低い重要度が付けられ、これらのラインが追い出し(eviction)を受けるようにバイアスされている。このような重複ラインは、共有ステートにあるが、複数の占有キャッシュに存在している。したがって、占有キャッシュからあるラインを失ったコアは、メモリにアクセスする替わりに、別の占有キャッシュから当該ラインをフェッチすることができる。例えば、メモリへのアクセスが、別のレベル2(L2)キャッシュへのアクセスよりも5倍高価なプロセス(レイテンシ、電力又はその他の測定量に基づいた場合)である場合には、同じラインのコピーを5つキャッシュするよりも、1つの共有ライン、Mライン又はEラインのようなより重要なラインのコピーを5つ記憶しておく方が賢明である。重複しているラインは、追い出しを受け易くなっているため、最終的には1つのコピーがダイ上に残り、それに最も高い重要度が付されることとなる。同様な重み付けスキームを、包含キャッシュ階層構造のような他のキャッシュアーキテクチャに適用してもよい。しかしながら、通常他のアーキテクチャでは、重複ラインの利用が不可能な場合があり、したがって、重複ラインが重み付けスキームの一部とならない場合もある。
多くの場合、ウェイトの割り当ては、ラインの取得に掛かる相対的なコストを反映した系統立った方法で行われる。例えば、最適化のための測定量が、ミスレイテンシ(miss latency)であるとする。また、ブロックAをフェッチするのに50サイクル掛かり、ブロックBをフェッチするのに150サイクル掛かると仮定する。この場合、アクセスレイテンシの影響の観点で見れば、ブロックBについて1回のミス(失敗)が起きるのを防ぐことは、ブロックAについて1回のミスを防ぐことの3倍の価値がある。したがって、これら2つのブロックのコスト比を反映させて、ブロックBのウェイトを、ブロックAのウェイトの3倍に設定してもよい。
幾つかの実施形態では、キャッシュアクセスパターンを監視して、最適なキャッシュ割り当てとすべく適応調整を行ってもよい。単純化のため、ここに記載される例では、相対的な重要度を規定するのに、キャッシュコヒーレンシステートを使用している。本発明の実施形態に係る技術を、ソフトウェアにキャッシュサービス品質(QoS)抽出を提供するのに利用してもよく、アプリケーション毎にキャッシュ割り当てを調整する。例えば、ソフトウェアは、関連データのクリティカリティを示すヒントを、メモリアクセス要求と共に提供することができる。一例として、キャッシュへのリクエストと共に提供されるページ属性を使用して、ページレベルにおける優先順位を設定可能である。または、命令セットアーキテクチャ(ISA)のユーザーレベル命令、例えば、条件付きロードのようなロードが、データのクリティカリティについての情報を含んでいてもよい。例えば、高い優先順位を持つユーザー(例えば、システム使用により多く支払いをしているユーザー)のためにアプリケーションを実行する仮想マシンアーキテクチャのQoSシステムでは、この優先順位又はクリティカリティに関する属性情報を提供することにより、よりウェイトの大きいアプリケーションに対するキャッシュラインの重み付けを可能としてもよい。このように、(例えば、プログラム又はコンパイラによる)クリティカリティのユーザーレベルによる制御により、属性情報を提供することもできる。
キャッシュラインを設ける時に、キャッシュラインの相対的重要度に応じて、ウェイトを設定してもよい。ウェイトが高いほど、長くキャッシュに留まることを意味し、キャッシュラインの重要度に基づいて割り当てが行われる。キャッシュヒットが発生すると、アクセスされたラインのウェイトが復元され、セット内の他の全てのキャッシュラインのウェイトはデクリメントされる。この段階は、(LRUのような)最新性とキャッシュラインの重要度の組み合わせを行うので、高優先度であっても古いラインは、当然フラッシュアウトされることを暗に意味する。セット内の少なくとも1つのラインのウェイトがゼロにまで下がった場合には、この状態が解消されるまで、デクリメントが一時的に中断される。すなわち、最も有用でないと考えられるライン(将来の犠牲ライン)が特定されている場合には、エージングプロセスを継続する必要はない(しかしながら、デクリメントする可能性を排除するわけではない)。無効(invalid)キャッシュライン(例えば、スヌープによって無効とされたライン)は、最も有用性の低いラインであるので、そのウェイトは0に設定される。キャッシュミスが発生すると、最も低いウェイトを持つライン(例えば、最も有用性の低いライン)が追い出しを受けるようにしてもよい。最も低いウェイト値を0とするのは単なる決まりに過ぎず、また、最も高いウェイトを、最も長くキャッシュに滞留しているラインに対応させているのも慣例的な決まりである。例えば、最も低いウェイトがより重要度が高いといった別のルールを適用することもできる。
図1は、本発明の一実施形態に係る、キャッシュにアクセスする方法を示したフローチャートである。図1に示すように、方法10は、データを要求するためにキャッシュへのアクセスを行う際に実行される。一実施形態では、方法10は、少なくとも一部キャッシュコントローラ又はキャッシュメモリの他の論理を使用して実装されもよい。以下に詳述するように、共有キャッシュ階層構造、適応型キャッシュ階層構造、包含キャッシュ階層構造等の様々なキャッシュアーキテクチャに実装してもよい。図1に示すように、方法10は、キャッシュアクセス要求を受信することから開始する(ブロック15)。説明のため、この要求は、プロセッサコアからの読み出し要求であると仮定する。次に、キャッシュヒットが発生しているか否かを判断する(ひし形20)。キャッシュヒットが発生してない場合は、要求データがキャッシュメモリのキャッシュラインに記憶されていないことを意味するので、制御はブロック25に移り、最も低いウェイトを持つウェイ(way)が犠牲キャッシュラインとして選択される。すなわち、1セットがNウェイ(way)(例えば、Nキャッシュライン)で構成され、これらのキャッシュラインのうち、タグフィールドのウェイト部分に記載されているウェイトが最も低い1つのキャッシュラインを、犠牲ラインとして選択する。複数ウェイ、又は複数のキャッシュラインが最低ウェイトを持つ場合には、これらのラインのうちいずれか1つを犠牲ラインとして選択する。また、複数のキャッシュラインが、同じウェイトを持つことができる。
このキャッシュでアクセス要求が失敗に終わったので、要求されたラインを、メモリ階層構造の他の部分からフェッチする(ブロック30)。他の部分としては、別のキャッシュメモリ、又は、例えばシステムメモリや大容量記憶装置などの階層構造の上位層部分が考えられる。データの検索には、様々な実装形態が可能である。一実装形態では、レイテンシを削減するため、キャッシュラインを(ローカルに)ロードしステート情報を設定する前に、ブロック45において、要求を行ったコアに直接データを戻すことが可能である。他の実装形態では、まず、入力データを追い出しが行われたラインに挿入することができる。挿入するために、フェッチされたラインのステート/属性を設定してもよい(ブロック35)。このステート/属性は、MESIコヒーレンスステート及び上述したような属性情報を含んでもよい。受信したラインのステート/属性は、入力される応答の一部として示されていてもよく、又は、所与の実施形態及びコヒーレンスプロトコルに応じて、受信するキャッシュが自動的に生成してもよい。また、特定されたステート/属性に基づいて、このキャッシュラインに対するウェイトが設定される(ブロック40)。以下に詳述するように、ラインのウェイトは、ウェイトテーブル(重み付け表)の情報を参照して設定されてもよく、ウェイトテーブルは、可能性のあるステート/属性の組み合わせのそれぞれとウェイト値を関連付けるプログラム可能ウェイトテーブルであってもよい。上記の例では、キャッシュコヒーレンシステートは、キャッシュラインの属性を示していてもよい。ブロック45において、データが戻される。
また、図1に示すように、ひし形20でキャッシュヒットが発生した場合には、制御はブロック50に移り、キャッシュラインのステート/属性が更新される。アクセスの結果、ラインのステート又は属性が変わっていない場合には、更新は行われない。いずれにしても、キャッシュラインのウェイトは、復元される(ブロック55)。すなわち、このラインは、アクセスされた状態に変わったので、このラインのステート/属性に対応するウェイトにリセットされる。キャッシュに滞留する間にステート/属性の変更が生じたか否かに応じて、復元されたウェイトが、キャッシュメモリに挿入された当初の元のウェイト値と同じである場合もあれば、同じでない場合もある。
そして、図1に示すように、セットのラインの中に、ゼロ値が存在するか否かを判断する(ひし形60)。存在する場合には、ブロック45において、要求されたデータを直接戻してもよい。存在しない場合には、データを戻す前に、セットのうちアクセスされていないウェイに対するウェイトをデクリメントする(ブロック65)。図1の実施形態で、特定の実装例が示されたが、本発明の範囲はこれに限定されない。
図2は、本発明の一実施形態に係るスヌープ要求を扱う方法を示したフローチャートである。図2に示すように、方法70は、キャッシュメモリに入力されるスヌープ要求を扱うための方法であって、スヌープ要求を受信するところから開始する(ブロック75)。方法70は、上述したように、キャッシュコントローラ論理を使用して実装してもよい。入力されるスヌープ要求は、所与のキャッシュラインの識別子を含んでいてもよい。そして、キャッシュヒットが発生したかを判断する(ひし形78)。発生していない場合は、制御はブロック80に移り、キャッシュコントローラが、データが存在しないことを示すスヌープ応答を提供する。スヌープ要求の結果、キャッシュヒットが発生した場合には、制御はブロック82に移る。ブロック82において、キャッシュラインのステート/属性が更新される。この更新は、所与のキャッシュコヒーレンシプロトコルに基づいて行われてもよい。例えば、MESIプロトコルでは、スヌープ要求がラインへの排他的アクセスのために行われる場合には、キャッシュラインが無効化される。要求が単にラインを読み出すものである場合には、すでに共有ステートある場合を除いて、ステートを共有ステートへと更新してもよい。そして、制御はひし形85に移り、新たな状態が、無効ステートであるかを判断する。無効ステートであった場合、そのラインに対するウェイト値をゼロに設定し(ブロック88)、データと共に又はデータなしで、スヌープ応答を提供する(ブロック90)。更新されたステートが、無効ステートでなかった場合、ステート/属性に変化が生じれば、そのキャッシュラインのウェイトを更新する(ブロック95)。次いで、制御はブロック90に移り、スヌープ応答を提供する。図2の実施形態において、特定の実装例が示されたが、本発明の範囲はこれらに限定されない。
幾つかのコアに渡って、キャッシュラインの相対的な重要度を考慮することにより、本発明の一実施形態に係る技術は、オンダイのキャッシュリソースの最適な割り当てを実現可能である。例えば、本発明の一実施形態を適用せずに、キャッシュラインの同じグループが複数のコアによってアクティブに使用された場合、これらのキャッシュラインは、全てのキャッシュにおいて複製され、有効キャッシュ容量が減ってしまう。これに対して、本発明の一実施形態に係る重み付けでは、構造的な共有を見分け、重複するキャッシュコピーが追い出されるようにバイアスされている。そして、失われた場合にメインメモリへのアクセスが必要となるような1つのコピーしか存在しないデータは、最終的により長い時間キャッシュ内に保持されることになる。メモリへのアクセスが、オンダイの別のキャッシュへアクセスするよりも(動作及び電力において)高価なプロセスである場合には、キャッシュ割り当てポリシーがそれに対応するように実装される。しかしながら、キャッシュラインの複製を排除するのみといった静的ポリシーでは、陳腐化したデータを記憶することになってしまう。このような欠点を補うため、ある実施形態では、古くなったコピーを検出し、これらに低重要度であることを示す印を付してもよい。すなわち、ある実施形態では、データのクリティカリティ及び最新性の両方の組み合わせを使用して、キャッシュリソースを最適化する。
図1のフローチャートを参照して説明した上述のオペレーションを、仮想スキャンチェーンを使用してビジュアル化することができる。図3は、本発明の一実施形態に係る仮想スキャンチェーンを示した図である。MRUは、most recently used(最も最近使用された)を表し、LRUは、least recently used(最も最近使用されていない)を表している。新たにアクセスされるラインのための領域を作るために、LRUポジションにあるキャッシュラインを置き換える従来のLRU的スキームとは異なり、本発明の実施形態では、いわゆるマルチレベルLRUスキームを提供する。1レベルのLRUスキームでは、追い出しが行われた後、残りの全てのラインが、(論理的に)右側にシフトされ、新たにフェッチされたラインが、MRUポジションに挿入される。新たに挿入されたラインが、追い出されるまでには、LRUポジションまで全ての段階を経る。チェーンの途中のどこかで、キャッシュヒットが発生した場合には、アクセスされるラインが、MRUポジションに戻る。
本発明の一実施形態に係る置き換え技術では、複数の論理的MRUポジション(図3に示すような、MRU、MRU等)が提供されていてもよい。このスキャンチェーンにおいて、ウェイトフィールドは、ポジションについてのプロキシとして機能する。すなわち、高いウェイトのラインが、チェーンの左側の位置を占有する。最も高い優先順位のラインは、最も大きなウェイトを持ち、スキャンチェーンの頭部分(左側)(すなわち、MRU)に挿入される。中程度の優先順位のラインは、それよりも小さなウェイトを持ち、チェーンの中間部分のいずれかの位置に挿入される(例えば、MRU)。正確なポジションは、割り当てられたウェイトによって決定される。最も低い重要度を持つラインは、LRUポジション又はLRUポジション付近に挿入される。キャッシュでの滞留は、スキャンチェーンにおける位置の関数であるから、高いウェイトを持つラインほど、キャッシュに長く留まることとなる。
例えば、中程度の優先順位を持つラインがMRUの右側に移動した後にアクセスされる場合は、MRUポジションに挿入されるのではなく、MRUポジションに再度挿入される。このようにすることで、より高い優先順位を持つラインの相対的な重要度関係を保つようにできる。MRUに挿入された最も高い優先順位を持つラインが、古いラインとなった場合には、右側すなわちLRUポジションに向かって移動させてもよい。一実施形態では、アクセスされていないラインのウェイトを、キャッシュセット内においてデクリメントさせてもよい。すなわち、MRUポジションにあるラインは、徐々に格下げとなり、何回か移動された後、MRUポジションの右側に位置することとなり、中程度の優先順位を持つラインと比較して重要度が相対的に低くなる。この最新性及びキャッシュラインの相対的な重要度を組み合わせて、適応的に古いラインの格下げを行ってもよい。
無効ラインのウェイトは0に設定されるが、これは、無効ラインをLRUポジションに移動させることと等価である。本発明の一実施形態を使用して、オフダイメモリ帯域幅トラフィック(データ)を低減させることができる。複数のキャッシュで複製される共有データの割合が大きいアプリケーションの場合、一実施形態では、追い出しのために、複製を制御し、重複ラインをバイアスすることにより、より効率的なキャッシュ利用率を得るようにしてもよい。
上述したように、幾つかの実施形態を、適応型キャッシュ構造に使用してもよい。CMPは、1つのチップ上に複数のプロセッサを有し、それぞれ1つ又は複数のキャッシュを伴う。これらのキャッシュは、関連付けられたコアに対してデータを排他的に記憶する占有キャッシュであってもよいし、全てのコアに対してデータを利用可能に記憶する共有キャッシュであってもよい。図4は、本発明の一実施形態に係るCMPのブロック図である。CMP100は、複数のプロセッサコア102を1つのチップ上に含んでもよい。コア102は、プロセッサ、コプロセッサ、固定機能コントローラ、又は別の種類のプロセッシングコアであってもよい。各コア102は、キャッシュメモリの最も下位層に位置するコアキャッシュ104に接続される。
コア102は、共有キャッシュ108とさらに接続される。共有キャッシュ108は、全てのコア102からアクセス可能であってもよい。いずれのコア102も、アドレスのサブセットについて、共有キャッシュ108にラインを割り当てる。共有キャッシュ108は、各コア102に対して、別に設けられた適応型キャッシュバンク110を有してもよい。各適応型キャッシュバンク110は、ディレクトリ(DIR)112を持ち、コアキャッシュ104及び適応型キャッシュバンク110に記憶されたキャッシュデータのブロックを追跡する。加えて、共有キャッシュ108は、本発明の一実施形態に係る置換を行うためのキャッシュコントローラ論理を含む。図4には示されていないが、ある実装形態では、占有キャッシュを、各コアキャッシュ104と共有キャッシュ108との間に接続してもよい。
様々な実施形態において、共有キャッシュは108、所与の時間において、占有キャッシュ、共有キャッシュ又はこれら両方として動作する適応型キャッシュであってもよい。適応型キャッシュは、占有キャッシュ設計のレイテンシの利点及び共有キャッシュ設計の容量の利点の両方を同時に提供するように設計されていてもよい。また、アーキテクチャは、占有キャッシュバイアス又は共有キャッシュバイアスのいずれかを提供するランタイム構成を実現するものであってもよい。このように構成することにより、1つのキャッシュ設計で、占有キャッシュ、共有キャッシュ、又は占有部分と共有部分との間の動的割り当てが可能なハイブリッド型のキャッシュのいずれかを実現していてもよい。全てのコア102が、共有キャッシュ108にアクセスしてもよい。1つのローカルコア102が、アドレスに対応する適応型キャッシュバンク110のライン割り当てを行ってもよい。その他のコア102は、アドレスのサブセットについて、適応型キャッシュのラインの割り当てを行ってもよい。適応型キャッシュでは、ローカルコアの要求に基づいて、どの適応型キャッシュバンクにラインが複製されてもよい。一実施形態において、ローカルコア102は、コヒーレンシプロトコルエンジンを通過する前に、適応型キャッシュバンクにアクセスしてもよい。その他のコア102は、コヒーレンシプロトコルエンジンを通じて、適応型キャッシュバンクにアクセスしてもよい。
キャッシュ機構は、タイルアーキテクチャ、均一アーキテクチャ、不均一アーキテクチャ又はその他のCMPアーキテクチャを使用してもよい。タイルアーキテクチャのタイルを、コヒーレントスイッチ、バス、又はその他の接続手段により接続してもよい。CMPタイルは、キャッシュを共有する1つ又は複数のプロセッサコアを有してもよい。プロセッサコアは、キャッシュコントローラを通じて、占有部分と共有部分とに動的に区画された適応型キャッシュバンクにアクセスしてもよい。CMPタイルは、ダイ上の全ての占有キャッシュブロックを追跡するためのディレクトリを有していてもよい。キャッシュコントローラは、入力されるコア要求を、そのタイルに対する占有データを保有するローカル適応型キャッシュバンクに送信してもよい。キャッシュプロトコルエンジンは、ローカル適応型キャッシュバンクにおけるミス(miss)を、オンダイの相互接続を通じてホームタイルに送信してしてもよい。オンダイの相互接続を通じてアクセス可能なホームタイルにおける適応型キャッシュバンクは、データミスを満足してもよい。キャッシュプロトコルエンジンは、必要であれば、ホームタイルにおけるディレクトリバンクを参照して、別の占有適応型キャッシュバンクをスヌープする。必要なスヌープを解決した後に、ホームタイルにおいてミスが発生した場合、ホームタイルがオフソケット要求を開始してもよい。純粋に占有キャッシュとして動作するように構成されている適応型キャッシュバンクの場合、適応型キャッシュバンクホームタイル参照をスキップし、ディレクトリのフローに従ってもよい。純粋に共有キャッシュとして動作するように構成されている適応型キャッシュバンクの場合、ローカル適応型キャッシュバンク参照をスキップし、直接ホームタイルへと向かってもよい。ブロックの割り当て、移動、犠牲化、複製、置き換え及び後方無効化に関するプロトコルアクションをキャッシングすることにより、適応型キャッシュバンクの動的分割を実現することができる。
図5は、適応型キャッシュアーキテクチャ300を備えるCMPの一実施形態を示したブロック図である。データブロックに対するホームCMPタイル304をチェックした後に、先頭(initial)CMPタイル302は、このデータブロックへのアクセスを要求してもよい。先頭CMPタイル302は、先頭プロセッシングコア306、先頭コアキャッシュ308、先頭適応型キャッシュバンク310及び先頭ディレクトリ312を有してもよい。ホームCMPタイル304は、ホームプロセッシングコア314、ホームコアキャッシュ316、ホーム適応型キャッシュバンク318及びホームディレクトリ320を有してもよい。先頭CMPタイル302は、先頭データブロックコピー322を記憶する、又はブロックを先頭適応型キャッシュバンク310にキャッシュしてもよい。各適応型キャッシュバンクにおけるデータブロック322のコピーを追跡するために、ホームCMPタイル304は、ホームデータブロック登録324をホームディレクトリ320に登録してもよい。
他の実施形態では、キャッシュアーキテクチャは、包含キャッシュ階層構造であってもよい。図6は、本発明の一実施形態に係るプロセッサを示すブロック図である。図6に示すように、プロセッサ200は、複数のコア220‐220(コア220と総称する)を含むマルチコアプロセッサであってもよい。図6に示すように、コア論理222‐222(コア論理222と総称する)に加えて、各コアが、キャッシュ階層構造の複数層を含んでいてもよい。特に、各コア220は、最下位層のキャッシュ225‐225(キャッシュ225と総称する)を含んでもよい。一実施形態では、キャッシュ225は、L1キャッシュに対応していてもよく、本発明はこの点に関して限定されない。各コア220は、中間層のキャッシュ228‐228(キャッシュ228と総称する)をさらに含んでもよい。幾つかの実施形態では、中間層のキャッシュ228は、L2キャッシュに対応する。
プロセッサ200は、複数のバンク240‐240(バンク又は部分240と総称する)からなるラストレベルキャッシュ(LLC)250をさらに含んでもよい。LLC250は、相互接続235を通じてコア220と連結された上位層のキャッシュであってもよく、下位層のキャッシュに存在するデータのコピーを含んでもよい。図5に示すように、各コア220は、リンク230‐230(リンク230と総称する)を通じて相互接続235と連結されていてもよい。LLC250は、プロセッサ200内の様々なコア220の間で共有される共有メモリとして動作してもよい。対照的に、最下位層キャッシュ225及び中間層キャッシュ228を含むマルチレベルキャッシュ(MLC)階層構造は、関連付けられたコア220のためにのみデータが記憶される複数の占有キャッシュによって形成されていてもよい。
オペレーションの間、所与のコア(コア論理222の一部であってもよい)の実行ユニットからのメモリ要求は、システム内の他のキャッシュ参照する前に、まず、キャッシュ階層構造の最下位層にアクセスしてもよい。より良い性能を得るため、頻繁にアクセスされるデータを、最も下位層に位置する利用可能なキャッシュ、すなわちキャッシュ225に存在させてもよい。要求されたデータがキャッシュ225に存在しない場合は、キャッシュ228にアクセスして、データがそこに存在するか判断してもよい。図6に示す実施形態では、中間層の各キャッシュ228は、LLC250に対して要求が発行される前に、各コア220に対する最終参照地点となっている。LLC250は、それぞれがLLC250の部分240と関連付けられたディレクトリ部分245‐245(ディレクトリ部分245と総称する)をさらに含んでいてもよく、本発明の一実施形態に係る置換を扱うキャッシュコントローラ論理を含んでいてもよい。図6を参照して特定の実施形態が記載されたが、本発明の実施形態はこれに限定されず、他の実施形態においては、複数のプロセッサはそれぞれ異なる構成であってもよい。
使用されるキャッシュアーキテクチャに関わらず、キャッシュメモリは通常、タグアレイとデータアレイを含む。図7Aは、本発明の一実施形態に係るキャッシュメモリを示したブロック図である。図7Aに示すように、キャッシュメモリ110は、複数のエントリ又はキャッシュライン112‐112を含んでもよい。図に示されるように、各キャッシュライン112は、タグアレイのタグフィールド113とデータアレイのデータフィールド113を含んでもよい。データアレイ113は、キャッシュラインのデータを(エラー検出/修正のための選択可能ビットと共に)記憶し、タグフィールド113は、様々なタグ情報を記憶していてもよい。図7Bは、本発明の一実施形態に係るタグエントリを示したブロック図である。図7Bに示すように、タグエントリ113は、対応するデータアレイ113にインデックスを付すのに使用してもよいタグアドレスフィールド114、対応するラインについてのキャッシュコヒーレンシステートを記憶するステートフィールド115、本発明の一実施形態に係るウェイト値を記憶するためのウェイトカウンターであってもよいウェイトフィールド116、及び、例えばプログラマ又はコンパイラから受信したクリティカリティ情報のようなラインに関連する選択的属性情報を記憶する属性フィールド117を含んでもよい。少なくとも本発明の実施形態の一つにおいて、コヒーレンシステートは、選択的属性フィールドのプロキシとして使用可能である。
所与のラインについて適切なウェイト値を決定するために、ラインのステート(又は属性)の挿入又は更新時に、キャッシュコントローラ又はその他の論理によってウェイトテーブルを参照してもよい。図7Cは、本発明の一実施形態に係るウェイトテーブルを示したブロック図である。図7Cに示すように、ウェイトテーブル120は、複数のエントリ122‐122を含んでもよい。各エントリは、属性/ステートフィールド123及びウェイトフィールド123を含んでもよい。各ウェイト/属性の組み合わせについて、対応する初期ウェイト値が提供されてもよい。これらの初期ウェイト値は、静的又は動的に、ハードコードされている又はプログラム可能であってもよい。幾つかの実施形態において、マシーンステータスレジスタ(MSR)又はコンフィギュレーションステータスレジスタ(CSR)のようなレジスタを使用して、ウェイトテーブル120を実装してもよい。このような初期ウェイト値をプログラム可能とすることにより、実施形態では、所与の種類のアプリケーションについてウェイト値をプログラム的に設定してもよい。例えば、1つの市場区分で使用されるキャッシュメモリについては、初期ウェイト値の第1セットを決定し、異なる市場区分で使用されるキャッシュメモリについては、プログラム可能なウェイト値の異なるセットを決定してもよい。一実施形態において、このように、異なる市場区分におけるデータ使用に対する異なるテストプログラムの経験的テストに基づいて、異なるウェイト値を決定してもよい。
実施形態は、コードとして実装されてもよく、また、システムをプログラムし、命令を実行させるのに使用可能な命令を記憶する記憶媒体に記憶されていてもよい。 記憶媒体としては、これらに限定されないが、例えば、フロッピー(登録商標)ディスク、光ディスク、半導体ドライブ(SSD)、コンパクトディスク・リードオンリーメモリ(CD‐ROM)、書き換え可能コンパクトディスク(CD‐RW)及び磁気光学ディスクを含むあらゆる種類のディスク、リードオンリーメモリ(ROM)、ダイナミック・ランダムアクセスメモリ(DRAM)、スタティック・ランダムアクセスメモリ(SRAM)のようなランダムアクセスメモリ(RAM)、消去可能プログラマブル・リードオンリーメモリ(EPROM)、フラッシュメモリ、電気的消去可能ROM(EEPROM)、及び磁気又は光学カードのような半導体デバイス、若しくは、電気的命令を記憶するのに適したその他の種類の媒体を含む。
本発明が、限られた数の実施形態について説明されたが、様々な変更及び改良が可能であることは、当業者にとって明らかである。添付の特許請求の範囲は、このような変更及び改良も本発明の範囲及び精神に含まれることを意図している。

Claims (17)

  1. データを記憶するためのデータフィールド及びタグフィールドをそれぞれ有する複数のキャッシュラインを含むキャッシュメモリを備え、
    前記タグフィールドは、対応するデータのキャッシュコヒーレンシステートを記憶するステート部分と、前記対応するデータのキャッシュコヒーレンシステート、及び前記対応するデータの優先順位又はクリティカリティに関連付けられた属性情報に基づく重要度に応じたウェイトを記憶するウェイト部分とを含み、
    前記キャッシュメモリは、適応型共有キャッシュメモリを含み、
    前記適応型共有キャッシュメモリは、それぞれ対応するコアと関連付けられ占有キャッシュ記憶域及び共有キャッシュ記憶域を提供する複数のバンクを有し、
    第1キャッシュラインの1つのコピーが前記適応型共有キャッシュメモリに存在し、第2キャッシュラインの複数のコピーが前記適応型共有キャッシュメモリに存在する場合には、共有ステートにある前記第1キャッシュラインに、前記共有ステートにある前記第2キャッシュラインのウェイトよりも高いウェイトが付与され、
    変更ステートにある第3キャッシュラインに、前記第2キャッシュラインの前記ウェイトよりも高く、且つ前記第1キャッシュラインの前記ウェイトよりも低いウェイトが付与される装置。
  2. 前記ウェイトは、前記対応するデータの使用の最新性にさらに基づいている請求項1に記載の装置。
  3. 前記タグフィールドは、前記ウェイトを記憶するウェイトフィールド及び前記属性情報を記憶する属性フィールドをさらに含む請求項1または2に記載の装置。
  4. 前記キャッシュコヒーレンシステート又は前記属性情報と前記ウェイトの組み合わせを含むウェイトテーブルを含み、
    前記キャッシュラインのキャッシュコヒーレントステート又は属性情報の挿入又は更新時に、前記ウェイトテーブルを参照する請求項1から3のいずれか一項に記載の装置。
  5. 複数のキャッシュラインの対応するウェイトに基づいて置換を行うため、前記複数のキャッシュラインから1つのキャッシュラインを選択するキャッシュコントローラをさらに備える請求項1から4のいずれか一項に記載の装置。
  6. 前記キャッシュコントローラは、データがアクセスされた時に、対応するキャッシュラインのウェイトを更新し、
    前記更新は、前記ウェイトを、前記キャッシュラインの前記キャッシュコヒーレンシステートに応じた値へとインクリメントする、及び少なくとも1つの他のキャッシュラインのウェイトをデクリメントすることによって行われる請求項5に記載の装置。
  7. 前記複数のキャッシュラインのうち少なくとも1つのキャッシュラインが、最小ウェイトに対応するウェイトを持つ場合は、前記少なくとも1つの他のキャッシュラインの前記ウェイトのデクリメントを行わない請求項6に記載の装置。
  8. 前記更新されたウェイトは最大ウェイト値よりも小さく、前記複数のキャッシュラインのセットのうち、より最近アクセスされていない1つのキャッシュラインを含む少なくとも1つの他のキャッシュラインが、前記更新されたウェイトよりも大きなウェイトを持つ請求項6に記載の装置。
  9. 適応型共有キャッシュメモリを含むキャッシュメモリの複数のラインのセットから、最も低いウェイトを持つ1つのラインを犠牲ラインとして選択する段階と、
    要求に応答してデータをフェッチし、前記データを前記選択したラインに記憶する段階と、
    前記データの重要度に基づいて前記選択したラインのウェイトを決定し、前記ウェイトを前記ラインのウェイトフィールドに記憶する段階と
    を備え、
    前記複数のラインの各々は、それぞれのクリティカリティに対応するウェイトを有し、前記クリティカリティは、ラインに記憶されたデータのキャッシュコヒーレンシステート、及び前記ラインに記憶されたデータの優先順位又はクリティカリティに関連付けられた属性情報に基づく重要度と、前記ラインへのアクセスの最新性とに少なくとも一部基づき、
    前記適応型共有キャッシュメモリは、それぞれ対応するコアと関連付けられ占有キャッシュ記憶域及び共有キャッシュ記憶域を提供する複数のバンクを有し、
    第1のラインの1つのコピーが前記適応型共有キャッシュメモリに存在し、第2のラインの複数のコピーが前記適応型共有キャッシュメモリに存在する場合には、共有ステートにある前記第1のラインに、前記共有ステートにある前記第2のラインのウェイトよりも高いウェイトが付与され、
    変更ステートにある第3のラインに、前記第2のラインの前記ウェイトよりも高く、且つ前記第1のラインの前記ウェイトよりも低いウェイトが付与される
    方法。
  10. 前記ラインに対するキャッシュヒットが発生した時に、前記ラインのキャッシュコヒーレンシステートに変化がない場合は、前記ウェイトを復元する段階をさらに備える請求項に記載の方法。
  11. 前記セットのうち、ウェイトがゼロであるラインが存在するか判断する段階をさらに備える請求項10に記載の方法。
  12. 前記複数のラインのウェイトがいずれもゼロでない場合は、前記セットのうちアクセスされていないラインをデクリメントし、前記複数のラインのうち少なくとも1つのラインのウェイトがゼロである場合は、前記セットのうち前記アクセスされていないラインをデクリメントしない段階をさらに備える請求項11に記載の方法。
  13. 前記要求と共に属性情報を受信する段階をさらに備え、
    前記属性情報は、前記データの前記重要度を示す請求項から12のいずれか一項に記載の方法。
  14. 前記属性情報及び前記ラインのキャッシュコヒーレンスステートに基づくウェイトテーブルを使用して前記ウェイトを決定する段階をさらに備え、
    前記ウェイトテーブルは、それぞれウェイトを、属性及びキャッシュコヒーレンシステートの組み合わせと関連付ける複数のエントリを含む請求項13に記載の方法。
  15. 前記属性情報は、前記要求に関連付けられたユーザーレベル命令から取得される請求項13または14に記載の方法。
  16. 複数のプロセッサコア及び共有キャッシュメモリを含むマルチコアプロセッサを備え、
    前記共有キャッシュメモリは、それぞれ前記複数のプロセッサコアのうちの1つと関連付けられた複数のバンクを有し、
    前記複数のバンクは、それぞれ占有キャッシュ記憶域及び共有キャッシュ記憶域を提供し、複数のキャッシュラインを含み、
    前記複数のキャッシュラインはそれぞれ、データを記憶するデータフィールド及びタグフィールドを含み、
    前記タグフィールドは、
    対応するデータのキャッシュコヒーレンシステートを記憶するステート部分と、
    前記対応するデータのキャッシュコヒーレンシステート、及び前記対応するデータの優先順位又はクリティカリティに関連付けられた属性情報に基づく重要度と、前記キャッシュラインへのアクセスの最新性とに基づくウェイトを記憶するウェイト部分と
    を含み、
    第1キャッシュラインの1つのコピーが前記共有キャッシュメモリに存在し、第2キャッシュラインの複数のコピーが前記共有キャッシュメモリに存在する場合には、共有ステートにある前記第1キャッシュラインに、前記共有ステートにある前記第2キャッシュラインのウェイトよりも高いウェイトが付与され、
    変更ステートにある第3キャッシュラインに、前記第2キャッシュラインの前記ウェイトよりも高く、且つ前記第1キャッシュラインの前記ウェイトよりも低いウェイトが付与されるシステム。
  17. 前記タグフィールドは、前記ウェイトを記憶するウェイトフィールド及び前記データに関連付けられた属性情報を記憶する属性フィールドをさらに含む請求項16に記載のシステム。
JP2010246189A 2009-12-16 2010-11-02 キャッシュメモリにおけるキャッシュラインの置き換え Expired - Fee Related JP5328748B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/639,191 2009-12-16
US12/639,191 US8990506B2 (en) 2009-12-16 2009-12-16 Replacing cache lines in a cache memory based at least in part on cache coherency state information

Publications (2)

Publication Number Publication Date
JP2011129101A JP2011129101A (ja) 2011-06-30
JP5328748B2 true JP5328748B2 (ja) 2013-10-30

Family

ID=43853630

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010246189A Expired - Fee Related JP5328748B2 (ja) 2009-12-16 2010-11-02 キャッシュメモリにおけるキャッシュラインの置き換え

Country Status (6)

Country Link
US (1) US8990506B2 (ja)
EP (1) EP2336892A1 (ja)
JP (1) JP5328748B2 (ja)
CN (1) CN102103547B (ja)
BR (1) BRPI1005092A2 (ja)
TW (1) TWI443514B (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853752B1 (en) * 2006-09-29 2010-12-14 Tilera Corporation Caching in multicore and multiprocessor architectures
US8606999B2 (en) * 2010-08-13 2013-12-10 Advanced Micro Devices, Inc. Cache partitioning
US8775904B2 (en) * 2011-12-07 2014-07-08 International Business Machines Corporation Efficient storage of meta-bits within a system memory
US8843707B2 (en) 2011-12-09 2014-09-23 International Business Machines Corporation Dynamic inclusive policy in a hybrid cache hierarchy using bandwidth
US8688915B2 (en) 2011-12-09 2014-04-01 International Business Machines Corporation Weighted history allocation predictor algorithm in a hybrid cache
US8788757B2 (en) 2011-12-09 2014-07-22 International Business Machines Corporation Dynamic inclusive policy in a hybrid cache hierarchy using hit rate
US9928179B2 (en) 2011-12-16 2018-03-27 Intel Corporation Cache replacement policy
TWI585583B (zh) * 2011-12-19 2017-06-01 英特爾股份有限公司 快取更換策略
WO2013101068A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Short circuit of probes in a chain
US9396117B2 (en) * 2012-01-09 2016-07-19 Nvidia Corporation Instruction cache power reduction
US9201810B2 (en) * 2012-01-26 2015-12-01 Microsoft Technology Licensing, Llc Memory page eviction priority in mobile computing devices
US9552032B2 (en) 2012-04-27 2017-01-24 Nvidia Corporation Branch prediction power reduction
US9003037B2 (en) * 2012-07-25 2015-04-07 Vmware, Inc. Dynamic allocation of physical computing resources amongst virtual machines
US9489293B2 (en) * 2012-08-17 2016-11-08 Netapp, Inc. Techniques for opportunistic data storage
US20140095807A1 (en) 2012-09-28 2014-04-03 Qualcomm Technologies, Inc. Adaptive tuning of snoops
US9170955B2 (en) 2012-11-27 2015-10-27 Intel Corporation Providing extended cache replacement state information
US9183144B2 (en) * 2012-12-14 2015-11-10 Intel Corporation Power gating a portion of a cache memory
US9158702B2 (en) 2012-12-28 2015-10-13 Intel Corporation Apparatus and method for implementing a scratchpad memory using priority hint
CN105144120B (zh) * 2013-03-28 2018-10-23 慧与发展有限责任合伙企业 基于存储器地址将来自高速缓存行的数据存储到主存储器
CN104123243B (zh) * 2013-04-24 2018-08-03 鸿富锦精密电子(天津)有限公司 数据缓存系统及方法
US10761895B2 (en) 2013-09-26 2020-09-01 Vmware, Inc. Selective allocation of physical computing resources amongst virtual machines based on user attribute values contained in user profiles
CN104166631B (zh) * 2014-09-11 2017-08-01 浪潮(北京)电子信息产业有限公司 LLC中Cache行的替换方法
US10339023B2 (en) 2014-09-25 2019-07-02 Intel Corporation Cache-aware adaptive thread scheduling and migration
US10719434B2 (en) 2014-12-14 2020-07-21 Via Alliance Semiconductors Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode
US9798668B2 (en) 2014-12-14 2017-10-24 Via Alliance Semiconductor Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode
WO2016097808A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits
US9600417B2 (en) * 2015-04-29 2017-03-21 Google Inc. Data caching
US10423418B2 (en) 2015-11-30 2019-09-24 International Business Machines Corporation Method for maintaining a branch prediction history table
US20170168956A1 (en) * 2015-12-15 2017-06-15 Facebook, Inc. Block cache staging in content delivery network caching system
CN105573675B (zh) * 2015-12-16 2018-10-23 鸿秦(北京)科技有限公司 缓存管理装置中基于训练机制的用户习惯获取方法及装置
CN105512051B (zh) * 2015-12-16 2019-03-12 鸿秦(北京)科技有限公司 一种自学习型智能固态硬盘缓存管理方法和装置
US10255190B2 (en) * 2015-12-17 2019-04-09 Advanced Micro Devices, Inc. Hybrid cache
US10509732B2 (en) * 2016-04-27 2019-12-17 Advanced Micro Devices, Inc. Selecting cache aging policy for prefetches based on cache test regions
CN105975402B (zh) * 2016-04-28 2019-01-18 华中科技大学 一种混合内存环境下淘汰数据感知的缓存方法与系统
US10042774B2 (en) * 2016-09-19 2018-08-07 Advanced Micro Devices, Inc. Method and apparatus for masking and transmitting data
US10489296B2 (en) 2016-09-22 2019-11-26 International Business Machines Corporation Quality of cache management in a computer
US9940246B1 (en) 2016-10-07 2018-04-10 International Business Machines Corporation Counter-based victim selection in a cache memory
US9727488B1 (en) 2016-10-07 2017-08-08 International Business Machines Corporation Counter-based victim selection in a cache memory
US9940239B1 (en) 2016-10-07 2018-04-10 International Business Machines Corporation Counter-based victim selection in a cache memory
US9727489B1 (en) 2016-10-07 2017-08-08 International Business Machines Corporation Counter-based victim selection in a cache memory
US9753862B1 (en) 2016-10-25 2017-09-05 International Business Machines Corporation Hybrid replacement policy in a multilevel cache memory hierarchy
US10762000B2 (en) * 2017-04-10 2020-09-01 Samsung Electronics Co., Ltd. Techniques to reduce read-modify-write overhead in hybrid DRAM/NAND memory
US10482024B2 (en) * 2017-07-20 2019-11-19 Alibaba Group Holding Limited Private caching for thread local storage data access
US11436143B2 (en) * 2017-12-22 2022-09-06 Alibaba Group Holding Limited Unified memory organization for neural network processors
US10671539B2 (en) 2018-10-15 2020-06-02 International Business Machines Corporation Cache line replacement using reference states based on data reference attributes
US11275688B2 (en) * 2019-12-02 2022-03-15 Advanced Micro Devices, Inc. Transfer of cachelines in a processing system based on transfer costs
US11822480B2 (en) * 2021-08-31 2023-11-21 Apple Inc. Criticality-informed caching policies

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01255944A (ja) 1988-04-05 1989-10-12 Mitsubishi Electric Corp キャッシュメモリ
US5943687A (en) 1997-03-14 1999-08-24 Telefonakiebolaget Lm Ericsson Penalty-based cache storage and replacement techniques
JP3180724B2 (ja) 1997-07-18 2001-06-25 日本電気株式会社 キャッシュシステム
US6223256B1 (en) * 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US6098152A (en) * 1997-10-17 2000-08-01 International Business Machines Corporation Method and apparatus for miss sequence cache block replacement utilizing a most recently used state
US6009488A (en) * 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US6425057B1 (en) * 1998-08-27 2002-07-23 Hewlett-Packard Company Caching protocol method and system based on request frequency and relative storage duration
US6405290B1 (en) * 1999-06-24 2002-06-11 International Business Machines Corporation Multiprocessor system bus protocol for O state memory-consistent data
JP2002049529A (ja) 2000-08-04 2002-02-15 Sega Corp キャッシュメモリ制御装置及びそれを利用したゲーム装置
JP2002140234A (ja) * 2000-11-02 2002-05-17 Hitachi Ltd キャッシュ装置
US6829679B2 (en) * 2001-11-09 2004-12-07 International Business Machines Corporation Different caching treatment of memory contents based on memory region
US7111124B2 (en) * 2002-03-12 2006-09-19 Intel Corporation Set partitioning for cache memories
US6976131B2 (en) * 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
US7089361B2 (en) * 2003-08-07 2006-08-08 International Business Machines Corporation Dynamic allocation of shared cache directory for optimizing performance
US20050108478A1 (en) * 2003-11-13 2005-05-19 International Business Machines Corporation Dynamic frequent instruction line cache
US7920623B2 (en) * 2003-11-14 2011-04-05 General Instrument Corporation Method and apparatus for simultaneous display of multiple audio/video programs transmitted over a digital link
US7103735B2 (en) * 2003-11-26 2006-09-05 Intel Corporation Methods and apparatus to process cache allocation requests based on priority
JP2005301387A (ja) 2004-04-07 2005-10-27 Matsushita Electric Ind Co Ltd キャッシュメモリ制御装置およびキャッシュメモリ制御方法
US7434008B2 (en) * 2004-04-23 2008-10-07 Hewlett-Packard Development Company, L.P. System and method for coherency filtering
GB0428484D0 (en) * 2004-12-30 2005-02-02 Ibm Method and apparatus for managing a cache in a group resource environment
US20060282620A1 (en) * 2005-06-14 2006-12-14 Sujatha Kashyap Weighted LRU for associative caches
US8312452B2 (en) * 2005-06-30 2012-11-13 Intel Corporation Method and apparatus for a guest to access a privileged register
US7415575B1 (en) * 2005-12-08 2008-08-19 Nvidia, Corporation Shared cache with client-specific replacement policy
WO2007068122A1 (en) * 2005-12-16 2007-06-21 Univ Western Ontario System and method for cache management
US7584327B2 (en) * 2005-12-30 2009-09-01 Intel Corporation Method and system for proximity caching in a multiple-core system
US7899994B2 (en) * 2006-08-14 2011-03-01 Intel Corporation Providing quality of service (QoS) for cache architectures using priority information
US8458711B2 (en) * 2006-09-25 2013-06-04 Intel Corporation Quality of service implementation for platform resources
US7949794B2 (en) * 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
US7725657B2 (en) * 2007-03-21 2010-05-25 Intel Corporation Dynamic quality of service (QoS) for a shared cache
US7921276B2 (en) * 2007-03-21 2011-04-05 Intel Corporation Applying quality of service (QoS) to a translation lookaside buffer (TLB)
US20090006757A1 (en) 2007-06-29 2009-01-01 Abhishek Singhal Hierarchical cache tag architecture
US20090006756A1 (en) 2007-06-29 2009-01-01 Donley Greggory D Cache memory having configurable associativity
JP2009098934A (ja) 2007-10-17 2009-05-07 Hitachi Ltd プロセッサ及びキャッシュメモリ
US20090254712A1 (en) * 2008-04-02 2009-10-08 Naveen Cherukuri Adaptive cache organization for chip multiprocessors

Also Published As

Publication number Publication date
JP2011129101A (ja) 2011-06-30
TWI443514B (zh) 2014-07-01
BRPI1005092A2 (pt) 2013-04-09
CN102103547A (zh) 2011-06-22
TW201140319A (en) 2011-11-16
EP2336892A1 (en) 2011-06-22
US20110145506A1 (en) 2011-06-16
CN102103547B (zh) 2016-05-04
US8990506B2 (en) 2015-03-24

Similar Documents

Publication Publication Date Title
JP5328748B2 (ja) キャッシュメモリにおけるキャッシュラインの置き換え
US8745334B2 (en) Sectored cache replacement algorithm for reducing memory writebacks
US10725923B1 (en) Cache access detection and prediction
US7552288B2 (en) Selectively inclusive cache architecture
US7266647B2 (en) List based method and apparatus for selective and rapid cache flushes
US7698508B2 (en) System and method for reducing unnecessary cache operations
US8412907B1 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation
US8140759B2 (en) Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US20180300258A1 (en) Access rank aware cache replacement policy
US20070073974A1 (en) Eviction algorithm for inclusive lower level cache based upon state of higher level cache
US20100325374A1 (en) Dynamically configuring memory interleaving for locality and performance isolation
US20060036811A1 (en) Method for software controllable dynamically lockable cache line replacement system
US8364904B2 (en) Horizontal cache persistence in a multi-compute node, symmetric multiprocessing computer
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
US20180113815A1 (en) Cache entry replacement based on penalty of memory access
US7721047B2 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation requests
US7093075B2 (en) Location-based placement algorithms for set associative cache memory
KR20230026413A (ko) 조합된 캐시 정책 테스트에 기초한 캐시용 캐시 정책 구성
JP6249120B1 (ja) プロセッサ
US7543112B1 (en) Efficient on-chip instruction and data caching for chip multiprocessors
US7337278B2 (en) System, method and storage medium for prefetching via memory block tags
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy
JPH11143774A (ja) キャッシュ制御機構
JP7311959B2 (ja) 複数のデータ・タイプのためのデータ・ストレージ
US10853267B2 (en) Adaptive method for selecting a cache line replacement algorithm in a direct-mapped cache

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121128

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121218

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130418

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130605

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130723

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees