説明

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

【課題】キャッシュメモリにおけるキャッシュラインの置き換えを改善し、必要とするデータが利用不可能となる可能性が生じ、データの取得に長いレイテンシが生じるのを防ぐ。
【解決手段】タグフィールドをそれぞれ持つ複数のキャッシュラインを含むキャッシュメモリを備え、タグフィールドは、ラインに記憶されたデータのキャッシュコヒーレンシステートを記憶するステート部分と、前記データの相対的重要度に応じたウェイトを記憶するウェイト部分とを含み、ウェイトは、キャッシュコヒーレンシステート及びデータ使用の最新性に基づく。

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

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

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図7C】
image rotate