JP2019519028A - 異なるキャッシュレベルのキャッシュラインの状態をモニタリングするシャドウタグメモリ - Google Patents

異なるキャッシュレベルのキャッシュラインの状態をモニタリングするシャドウタグメモリ Download PDF

Info

Publication number
JP2019519028A
JP2019519028A JP2018555925A JP2018555925A JP2019519028A JP 2019519028 A JP2019519028 A JP 2019519028A JP 2018555925 A JP2018555925 A JP 2018555925A JP 2018555925 A JP2018555925 A JP 2018555925A JP 2019519028 A JP2019519028 A JP 2019519028A
Authority
JP
Japan
Prior art keywords
cache
cache line
tag memory
shadow tag
coherency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018555925A
Other languages
English (en)
Other versions
JP6653768B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2019519028A publication Critical patent/JP2019519028A/ja
Application granted granted Critical
Publication of JP6653768B2 publication Critical patent/JP6653768B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

Abstract

処理システム(100)は、複数のプロセッサコア(111,112,113,114)と、複数の専用キャッシュ(131,132,133,134)と、を備える。各専用キャッシュは、複数のプロセッサコアの対応するプロセッサコアに関連付けられており、対応するキャッシュラインの第1セットを含む。処理システムは、複数のプロセッサコアによって共有される共有キャッシュ(140)をさらに備える。共有キャッシュは、キャッシュラインの第2セットを含み、シャドウタグメモリ(142)は、複数のエントリ(216)を含み、各エントリは、専用キャッシュのうち1つの専用キャッシュのキャッシュラインの第1セットの対応するキャッシュラインについての状態情報(215)を記憶する。【選択図】図1

Description

(関連技術の説明)
処理システムは、通常、データキャッシングを利用して、システムメモリに記憶されたデータへのアクセスを高速化する。データキャッシングは、システムメモリからアクセスされたデータを複数のレベルのキャッシュが一時的に記憶するために使用されるキャッシュ階層の形態で実装される。コヒーレンシプロトコルは、このような複数のレベルのキャッシュに実装されることが多く、古くなった又は他の点で無効なキャッシュされたデータに対してプロセッサコアが動作しないことを確実にする。しかしながら、排他的なキャッシング実装(すなわち、有効なキャッシュラインが1つのレベルのキャッシュラインのみにキャッシュされることを許されている場合)では、従来のキャッシング技術は、コヒーレンシプロトコルを実装するために過剰なプローブトラフィックを引き起こすことが多く、これにより、キャッシング性能に影響を与える場合がある。
本開示は添付の図面を参照することによって、より良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同じ参照記号の使用は、類似又は同一のアイテムを示す。
いくつかの実施形態による、シャドウタグメモリを利用する処理システムのブロック図である。 いくつかの実施形態による、レベル2(L2)キャッシュの状態情報を記憶するためのシャドウタグメモリを有するレベル3(L3)キャッシュのブロック図である。 いくつかの実施形態による、シャドウタグメモリを実装してキャッシング性能を向上させるためのプロセスを示すフローチャートである。 いくつかの実施形態による、シャドウタグメモリを用いてキャッシュプローブをフィルタリングするためのプロセスを示すフローチャートである。 少なくともいくつかの実施形態による、シャドウタグメモリを用いて、接続されたフィル/ビクティム要求のためのプロセスを示す図である。 いくつかの実施形態による、シャドウタグメモリを用いたFe(Forward with Exclusive)コヒーレンシ状態の使用例を示す図である。 いくつかの実施形態による、シャドウタグメモリを用いたOd(Owned Dirty)コヒーレンシ状態の使用例を示す図である。 いくつかの実施形態による、シャドウタグメモリを用いて、キャッシュラインをキャッシュ階層からメモリにエビクトするためのプロセスを示すフローチャートである。
図1〜図8は、シャドウタグメモリを利用して、効率的なキャッシュオペレーションを提供する処理システムを示す図である。処理システムは、複数のプロセッサコアと、2つ以上のレベルのキャッシュとを有する1つ以上の計算複合体を実装する。各プロセッサコアは、対応するコア専用の1つ以上のレベルのキャッシュ(以下、「専用キャッシュ」)に関連付けられている。処理システムは、別のレベルのキャッシュをさらに実装しており、このキャッシュ(以下、「共有キャッシュ」)が計算複合体のプロセッサコア間で共有される。共有キャッシュのコントローラは、シャドウタグメモリ内の専用キャッシュのキャッシュラインのアドレス及び状態情報を維持する。この状態情報は、例えば、各専用キャッシュのキャッシュラインのコヒーレンシ情報と、専用キャッシュのキャッシュラインの以前の履歴に関する情報と、を含む。かかるコヒーレンシ情報は、例えば、専用キャッシュによって実装されるコヒーレンシ状態のセットのスーパーセットであるコヒーレンシ状態のセットからのコヒーレンシ状態のインジケータを含む。このシャドウタグメモリによって、共有キャッシュは、シャドウタグメモリに存在するラインに基づいて、専用キャッシュに送られたプローブをフィルタリングすることができる。プロービングされたラインがシャドウタグメモリに存在しない場合、プローブは、専用キャッシュに送られる必要がないので、共有キャッシュによってフィルタリングされる。このプローブフィルタリングは、計算複合体から、又は、計算複合体とシステムとの間から生じるプローブのための、計算コンプレックス内の専用キャッシュへのプローブトラフィックを低減する。いくつかの実施形態では、シャドウタグメモリは、専用キャッシュのキャッシュラインの状態をより高い粒度で追跡するだけではなく、専用キャッシュレベルからのキャッシュラインフィル要求及びこれに関連するキャッシュラインビクティム要求をより効率的に処理する。
図1は、少なくともいくつかの実施形態による、シャドウタグメモリを利用する処理システム100を示す図である。図示した例では、処理システム100は、計算複合体102と、キャッシュ階層104と、メモリコントローラ106と、サウスブリッジ108と、を含む。計算複合体102は、この例で示す4つのプロセッサコア111,112,113,114等の複数のプロセッサコアを含む。プロセッサコアは、例えば、中央演算処理装置(CPU)コア、グラフィック処理装置(GPU)コア、デジタルシグナルプロセッサ(DSP)コア、又は、これらの組み合わせを含む。計算複合体102のプロセッサコアの数は、4より少なくてもよいし、4より多くてもよいことが理解されるであろう。
メモリコントローラ106は、キャッシュ階層104とシステムメモリ116との間のインタフェースとして動作する。したがって、キャッシュ階層104にキャッシュされるデータは、通常、「キャッシュライン」と呼ばれるデータブロックとして操作され、システムメモリ116の物理アドレスを使用してメモリ階層でアドレスされるか、そうでなければ配置される。キャッシュラインは、キャッシュ階層104からのメモリ要求に応じて、メモリコントローラ106によってシステムメモリ116からアクセスされる。同様に、変更されたデータを含むキャッシュラインがキャッシュ階層104からエビクトされ、システムメモリ116において更新される必要がある場合、メモリコントローラ106は、このライトバックプロセスを管理する。サウスブリッジ108は、キャッシュ階層104と、メモリコントローラ106と、処理システム100の1つ以上の周辺機器118(例えば、ネットワークインタフェース、キーボード、マウス、ディスプレイ及び他の入出力装置)との間のインタフェースとして動作する。
キャッシュ階層104は、2つ以上のレベルのキャッシュを含む。図示した例では、キャッシュ階層104は、3つのキャッシュレベル(レベル1(L1)、レベル2(L2)、レベル3(L3))を含む。L1の場合、コア複合体102は、図1に示すように、プロセッサコア111〜114の各々に対応するL1キャッシュ121,122,123,124として示されるプロセッサコア毎の小さい専用キャッシュを実装する。
L2の場合、コアコンプレックス102は、図1にも示すように、プロセッサコア111〜114の各々に対応するL2キャッシュ131,132,133,134として示されるプロセッサコア毎の大きい専用キャッシュを実装する。L2キャッシュ131〜134の各々は、対応するプロセッサコア専用であるが、キャッシュ階層104は、L2キャッシュ131〜134間のコヒーレンシを維持するように動作する。いくつかの実施形態では、L2キャッシュ131〜134は、直接マッピングされたキャッシュであってもよいし、nウェイのセットアソシエイティブキャッシュであってもよい。
L3キャッシュレベルの場合、キャッシュ階層104は、計算複合体102のプロセッサコアによって共有され、これにより、少なくともL2キャッシュ131〜134によって共有されるL3キャッシュ140を実装する。L3キャッシュ140は、L3コントローラ142と、複数のインデックス及び複数の対応するウェイを含むL3データアレイであって、各ウェイが、対応するキャッシュラインを対応するインデックスに記憶するL3データアレイと、各インデックス/ウェイに関連するタグ情報を記憶するL3タグアレイと、を実装する。L3データアレイ及びL3タグアレイは、まとめて図示されており、本明細書ではL3データ/タグアレイ144と呼ばれる。
L3キャッシュ140は、L2キャッシュ131〜134のキャッシュラインのアドレス及び状態情報を記憶するための(すなわち、L2キャッシュ131〜134のタグ情報を表す「シャドウタグ」を記憶するための)シャドウタグメモリ146を含む。この目的のために、シャドウタグメモリ146は、複数の「バンク」、複数のインデックス、複数のウェイとして階層的に構成されたシャドウタグエントリを含むように、キャッシュ、アレイ、テーブル、ラッチ、フリップフロップ又は他のストレージ構成として実装される。すなわち、シャドウタグメモリ146の各エントリは、特定のバンク、インデックス及びウェイの組み合せに対応する。シャドウタグメモリ146の各シャドウタグエントリは、L2キャッシュ131〜134のうち1つのキャッシュに存在する、対応するキャッシュラインに関する情報を追跡する。対応するキャッシュラインのシャドウタグエントリに記憶される情報は、例えば、キャッシュラインの物理アドレス(又は、その一部)と、L2キャッシュのキャッシュラインの状態と、を含む。各バンクは、複数のインデックス及びウェイを含み、L2キャッシュの何れか1つに存在するキャッシュラインを追跡するのに使用されるシャドウタグエントリを表す。したがって、図1の例では、シャドウタグメモリ146は、4つのL2キャッシュ131〜134の各々に1つずつ、すなわち4つの「バンク」を含む。
説明するために、図2は、いくつかの実施形態による、L3キャッシュ140の例示的な実装を示している。L3キャッシュ140は、図示した例では4つのスライス201,202,203,204(スライス1〜4とも示されている)を有する複数の「スライス」に分割されており、各通信に関連するアドレスがスライス1〜4内でどのように配置されているかに基づいて、各スライスとの間で通信をルーティングするルーティングロジック206を含む。各スライスは、L2キャッシュ131〜134によって使用されるアドレスの分布の対応する「スライス」を表す。また、各スライスは、シャドウタグメモリ146の対応する「スライス」も表す。したがって、この例では4つのスライスがあるので、各スライス201〜204は、L2キャッシュ131〜134のアドレス空間のうち対応する25%、及び、シャドウタグメモリ146のエントリのうち対応する25%を記憶する。このために、スライス201の詳細図で示すように、各スライスは、L3データ/タグスライス208と、シャドウタグスライス210と、スライスコントローラ212と、を含む。スライス201の場合、L3データ/タグスライス208は、L2キャッシュアドレス範囲の1番目の25%に対するデータ及びタグアレイエントリを有し、スライス202については、L2キャッシュアドレス範囲の2番目の25%に対するものであり、以下同様である。同様に、スライス201については、シャドウタグスライス210は、シャドウタグメモリ146のインデックスの1番目の25%を含み、スライス202については、シャドウタグスライス210は、シャドウタグメモリ146のインデックスの2番目の25%を含み、以下同様である。
図2は、シャドウタグメモリ146の例示的な構成をより詳細に示す図である。上述したように、シャドウタグメモリ146は、シャドウタグメモリ146に関連するアドレス範囲全体の対応する部分をそれぞれ有するシャドウタグスライス210のセットとして記憶される。したがって、各シャドウタグスライス210は、複数のバンク、インデックス及びウェイを含む。各シャドウタグスライス210内のバンクの数は、L2キャッシュの数に対応する。図1の例では、4つのL2キャッシュ131〜134が存在するので、この例では、各シャドウタグスライス210は、L2キャッシュ131,132,133,134に関連する4つのバンク221,222,223,224を含む。バンクのアソシエイティビティ(すなわち、ウェイの数)は、そのバンクに関連するL2キャッシュのアソシエイティビティと同じである。例えば、L2キャッシュが8ウェイアソシエイティブである場合、シャドウタグメモリ146の各バンクも8ウェイアソシエイティブであり、すなわち、8つのウェイを有する。逆に、L2キャッシュが直接マッピングされている場合、シャドウタグメモリ146の各バンクも直接マッピングであり、すなわち、各バンクは、事実上1ウェイセットアソシエイティブキャッシュである。所定のバンクのインデックス及びウェイの特定の組み合わせは、L2キャッシュに存在する対応するキャッシュラインを追跡するシャドウタグエントリ216を表す。シャドウタグメモリ146の各エントリは、エントリ216に関連するキャッシュラインのアドレスの少なくとも一部(通常、物理アドレスの上位ビット)を記憶するアドレスフィールド214と、キャッシュラインに対する状態情報を格記憶する状態フィールド215と、を有する。L2キャッシュのキャッシュラインのシャドウタグメモリ146の対応するエントリ216に記憶された状態及びアドレス情報は、通常、そのキャッシュラインのL2キャッシュのタグアレイに記憶されたタグ情報の少なくともサブセットを反映し、このキャッシュラインのL2キャッシュのタグを「シャドウ」する。したがって、L3キャッシュ140のシャドウタグメモリ146の状態情報は、L2キャッシュ131〜134の対応するキャッシュラインタグの「シャドウタグ」として見ることができる。
以下の表1は、対応するL2キャッシュラインに対する状態情報を表すように、シャドウタグメモリロケーション216の例示的なフォーマット及び利用を示している。
Figure 2019519028
したがって、表1に示すように、特定のコア/L2キャッシュの特定のキャッシュラインに関連するシャドウタグエントリ216に記憶された状態情報は、このL2キャッシュのキャッシュラインの物理アドレスのタグ部分のコピーだけでなく、キャッシュラインのコヒーレンシ状態情報と、L2キャッシュからのキャッシュラインのエビクションの処理を容易にする割り当て情報と、を含む。
図3は、いくつかの実施形態による、L3キャッシュ140のシャドウタグメモリ146の一般的なオペレーション及び使用を示す図である。ブロック302で示すように、L3コントローラ142は、L2キャッシュ131〜134のキャッシュラインの状態の変化を識別するために、(例えば、コヒーレンシバス又は他のスヌープメカニズムを介して)L2キャッシュ131〜134の動作をモニタし、それに応じてシャドウタグメモリ146を更新する。例示のために、新たなキャッシュラインがL2キャッシュ131〜134に持ち込まれると、L3コントローラ142は、スライス201〜204の何れがキャッシュラインの物理アドレスに関連するかを識別し、識別されたスライスのシャドウタグスライス210のインデックス及びウェイを識別して、L2キャッシュに対応するバンクのシャドウタグエントリ216を更新してこのキャッシュラインのL2キャッシュへの追加を反映する。同様に、L2キャッシュ131〜134でキャッシュラインの状態が変化すると、L3コントローラ142は、スライス201〜204の何れがキャッシュラインに関連しているかを識別し、この識別されたスライスのシャドウタグスライス210でL2キャッシュに対応するバンクの1つのシャドウタグエントリ216を更新して、キャッシュラインの更新された状態を反映する。同様に、L2キャッシュ131〜134からのキャッシュラインのエビクションは、L3コントローラ142をトリガして、キャッシュラインをシャドウタグメモリ146からエビクトする。
いくつかの実施形態では、キャッシュ階層104は、L2及びL3キャッシングレベルを排他キャッシュとして維持する。すなわち、L2キャッシュ131〜134のうち1つのキャッシュに存在するキャッシュラインは、L3キャッシュ140に存在せず、逆も同様である。しかしながら、事実上、L2キャッシュ131〜134に常駐するキャッシュラインに対するL3キャッシュ140のシャドウタグメモリ146のタグ又は他の状態情報を維持するが、L3キャッシュ140に何れのL2キャッシュラインも維持しないことによって、結果として、L2及びL3キャッシュレベルがデータ排他的であるが、タグが「包括的」であるハイブリッドなアプローチとなる。すなわち、シャドウタグメモリ146のL2キャッシュラインの状態情報を維持することによって、L3キャッシュ140は、L2キャッシュ131〜134のキャッシュラインに関連する実際のデータの何れも記憶する必要なく、L2キャッシュ131〜134の状態及びそこに記憶されたデータのコヒーレンシ状態についての可視性を有する。L2キャッシュのキャッシュライン状態に対するこのL3レベルの洞察は、多くの有利なオペレーションを可能にする。
例示すると、ブロック304によって表されるように、L3キャッシュ140は、どのキャッシュラインがL2キャッシュ131〜134に記憶されているか(及び、これらのキャッシュラインの状態)に関する情報を有するので、メモリコントローラ106、サウスブリッジ108、又は、計算複合体102の外部の処理システム100の他のコンポーネントによって送られたキャッシュラインに対するキャッシュプローブ用のプローブフィルタとして機能するのに適している。このプローブフィルタリングプロセスは、図4を参照して後述する。別の例として、ブロック306によって表されるように、L3キャッシュ140のシャドウタグ情報によって、L3キャッシュ140が、関連するL2キャッシュラインエビクション要求(以下、「L2ビクティム要求」と称する)も有するL2フィル要求を、従来のキャッシュシステムにおいてかかる要求の両方を処理するという落とし穴の多くを回避する結合要求として実施することが可能になる。この一例は、図5を参照して後述する。さらに別の例として、ブロック308は、L3キャッシュ140のシャドウタグメモリ146を使用して、L2キャッシュ131〜134で適用されるよりも細かい粒度でL2キャッシュラインのコヒーレンシを追跡するプロセスを表し、これにより、システムレベルのキャッシュプローブの数を減らして、システム全体の性能を向上させる。この細かい粒度のコヒーレンシ状態の追跡の例は、図6及び7を参照して後述する。さらに、ブロック310は、図8を参照して後述するように、シャドウタグメモリ146がL3ビクティム処理を容易にするプロセスを表す。
図4は、少なくとも1つの実施形態による、シャドウタグメモリ146を用いてL3キャッシュ140によって実施されるプローブフィルタ方法400を示すフローチャートである。キャッシュ階層(例えば、処理システム100のキャッシュ階層104等)では、キャッシュプローブを用いて、キャッシュされたデータを取得するか、キャッシュされたデータの状態を問い合わせるか、キャッシュされたデータの状態を変更するか、又は、キャッシュからキャッシュラインを潜在的に無効にすることによって、キャッシュされたデータを操作する。計算複合体102(すなわち、プロセッサコア111〜114、L1キャッシュ121〜124及びL2キャッシュ131〜134)又はL3キャッシュ140の外部で生じるキャッシュプローブは、本明細書では、「システムキャッシュプローブ」と称する。これらのシステムキャッシュプローブは、例えば、メモリコントローラ106を介して処理システム100の異なる計算複合体から到着してもよいし、サウスブリッジ108を介して周辺デバイス120等から到着してもよい。通常、このようなシステムキャッシュプローブは、キャッシュ階層内の最低レベル(この例では、L3キャッシュレベル)から伝播する。したがって、プローブフィルタ方法400は、このようなシステムキャッシュプローブのためのプローブフィルタ処理を示す。
方法400は、ブロック402において、L3コントローラ142によってシステムキャッシュプローブの受信を開始する。ブロック404において、キャッシュプローブに応じて、L3コントローラ142は、L3データ/タグアレイ144のタグをチェックしてキャッシュプローブによって要求されたキャッシュラインの有効なコピーがL3キャッシュ140に存在するかどうか(すなわち、キャッシュプローブがL3キャッシュ140上でヒットするかどうか)を判別する。要求されたキャッシュラインの有効なコピーがL3キャッシュ140に存在する場合、ブロック406において、L3コントローラ142は、キャッシュヒットを通知し、L3キャッシュ140からキャッシュプローブをサービスする。
一方、要求されたキャッシュラインの有効なコピーがL3キャッシュ140に存在しない場合、ブロック408において、L3コントローラ142は、シャドウタグメモリ146の状態情報を検索して、L2キャッシュの少なくとも1つが、要求されたキャッシュラインの有効なコピーを記憶しているかどうかを判別する。ブロック410において、L3コントローラ142は、検索の結果を分析する。シャドウタグメモリ146の検索によって、L2キャッシュ131〜136の何れもが、要求されたキャッシュラインの有効なコピーを含んでいないことが明らかな場合には、ブロック412において、L3コントローラ142は、キャッシュプローブに応じてキャッシュミスを通知する。このキャッシュミスによって、メモリコントローラ106は、メモリアクセスを開始して、要求されたキャッシュラインをシステムメモリ116から取得する。一方、シャドウタグメモリ146の検索によって、少なくとも1つのL2キャッシュが、要求されたキャッシュラインの有効なコピーを有することが明らかな場合には、ブロック414において、(有効なコピーを有する2つ以上のL2が存在する場合には)有効なコピーを有するL2キャッシュが選択され、L3コントローラ142は、キャッシュプローブを、選択されたL2キャッシュに転送する。要求されたキャッシュラインの有効なコピーを有する2つ以上のL2キャッシュが存在する場合、L3コントローラは、シャドウタグメモリ146において示される2つ以上のL2キャッシュのコヒーレンシ状態の比較に基づいてキャッシュプローブをサービスするために、L2キャッシュ131〜134のうち1つのキャッシュを選択する。例示すると、要求されたキャッシュラインのシャドウタグメモリ146に示されたForward(F)又はOwned(O)コヒーレンシ状態を有するL2キャッシュが、要求されたキャッシュラインの有効なコピーを有する他のL2キャッシュよりも優先的に選択される。
したがって、方法400が示すように、シャドウタグメモリ146は、何れのキャッシュラインがL2キャッシュ131〜134に存在し且つ有効であるかをL3コントローラ142が知るのを可能にするので、いくつかの実施形態では、L3コントローラ142は、L2キャッシュ131〜134に存在しない(すなわち、有効でない)キャッシュラインについて、システムキャッシュプローブに対するキャッシュミスを先制的に通知し、これにより、そうでない場合にL2キャッシュにブロードキャストされ、L2キャッシュにキャッシュラインが存在しないことを示すL2「キャッシュミス」で返されるキャッシュプローブをフィルタリングして除去する。
図5は、いくつかの実施形態による、シャドウタグメモリ146を用いて、L3キャッシュ140にて、接続されたフィル/ビクティムトランザクションを処理するプロセスを示す図である。上述したように、L2キャッシュに常駐するキャッシュラインのL2タグ及び状態ビットは、キャッシュラインに関連するインデックス、及び、L2キャッシュに関連するウェイに位置する対応するシャドウタグエントリ216に維持される。L2キャッシュがフィル要求を特定のL2インデックス及びウェイに送信すると、フィル要求は、状況に応じて、同じL2インデックス及びウェイで容量ビクティム要求をトリガする。この一対の要求(すなわち、容量ビクティム要求と対になるフィル要求)に対するシャドウタグメモリ146の状態更新は、フィル要求及びビクティム要求が別々の要求としてL2キャッシュからL3キャッシュに送信される場合に意図しないオペレーションをもたらす可能性がある。この理由は、このような要求をバッファリングするためにL3キャッシュによって実装されたキューが、フィル要求を受け入れ、L2キャッシュからの容量ビクティム要求を受け入れるための空きエントリを持たない可能性があるからである。フィル要求及びビクティム要求の独立した(両方とも要求キューに常駐していない)処理は、L2インデックス及びウェイでシャドウタグメモリ146を更新する際に問題を引き起こす可能性がある。一例として、容量ビクティム要求が未処理のままでフィル要求が完了した場合、ビクティムキャッシュラインのアドレスへのプローブがシャドウタグメモリ146においてミスし、したがって、L3コントローラは、L2キャッシュがビクティムキャッシュラインのコピーを有していないと考えることになる。別の例として、容量ビクティム要求が未処理のままでフィル要求が処理され、フィル要求の対象であるキャッシュラインのタグがシャドウタグメモリ146に未だ記憶されていない場合、フィルキャッシュラインのアドレスへのプローブがシャドウタグメモリ146においてミスし、L3コントローラは、L2キャッシュがフィルキャッシュラインのコピーを有していないと考えることになる。
このような問題を回避するために、少なくとも1つの実施形態では、キャッシュ階層104を、L2キャッシュ131〜134が、L3コントローラ142に提供される単一の要求パケットとしてフィル要求502及び対応するビクティム要求504の両方を含む結合したフィル/ビクティム要求500としての、結果となる容量ビクティム要求を有するフィル要求を発行するように構成することができる。L3コントローラ142のキューコントローラ506は、結合したフィル/ビクティム要求500を識別し、これにより、結合したフィル/ビクティム要求500を2つの別個のエントリとしてエンキューする。フィル要求502は、フィル要求キュー508にエンキューされ、ビクティム要求は、書込み要求キュー510にエンキューされる。エンキューを成功させるために、キューコントローラ506は、両方のキュー508,510が少なくとも1つの空きエントリを有することが確認されるまで、何れの要求もエンキューしない。単一の要求パケットで両方の要求502,504を受信し、各キューに空きがある場合にのみ両方の要求がエンキューされることを確実にすることによって、ビクティム要求504がドロップされている間にフィル要求502がキューされるという事例が回避される。このように、フィル要求502及びビクティム要求504の各々は、シャドウタグメモリ146を独立して更新することができる。
例示のために、フィル要求502がキュー508からアクセスされ、ビクティム要求504の前に(フィル処理512によって表されるように)実行される場合(例えば、L3ヒットの場合)、フィル要求502を処理する際に、L3コントローラ142は、ビクティムタグを、シャドウタグメモリ146のL2インデックス及びウェイによってインデックスされたシャドウタグエントリ216にて上書きすることができる。これは、この期間におけるビクティムアドレスに対する如何なるプローブも、キュー510内の未処理のビクティム要求504と連動するので、許容される。逆に、ビクティム要求504がキュー510からアクセスされ、フィル要求502の前に(ビクティム処理514によって表されるように)実行される場合、フィルキャッシュラインのタグ情報がシャドウタグメモリ146の同じ位置に未だ書き込まれていない場合であっても、シャドウタグメモリ146の対応するインデックス及びウェイにてビクティムキャッシュラインのタグ情報をクリアすることが許容されるであろう。
いくつかの実施形態では、効果的なプローブフィルタリング及び正確な結合したフィル/ビクティム要求処理を容易にすることに加えて、シャドウタグメモリ146は、L3キャッシュ140が、L2キャッシュ131〜134に記憶されたキャッシュラインに対して拡張したコヒーレンシオペレーションを提供するのを可能にする。このために、いくつかの実施形態では、L3キャッシュ140は、L2キャッシュ131〜134によって実装されるキャッシュコヒーレンシプロトコルのスーパーセットであるキャッシュコヒーレンシプロトコルを実装する。例えば、L2キャッシュ131〜134は、MOESI(Modified-Owned-Exclusive-Shared-Invalid)コヒーレンシプロトコルを実装し、L2キャッシュ131〜134のシャドウタグメモリ146のL3コントローラによって維持されるコヒーレンシ状態が、例えば、L3コントローラが例えば内部及びシステムキャッシュプローブをより効率的に処理する一方で、L2キャッシュ131〜134がより複雑でないコヒーレンシプロトコルを使用するのを可能にし、これにより、L2キャッシュ131〜134のより複雑でない実装と、同じ計算複合体102のL2キャッシュ131〜134間のより複雑でない通信としか必要としない追加のコヒーレンシ状態と、MOESIプロトコルと、を含む。
図6及び図7は、シャドウタグメモリ146用のスーパーセットコヒーレンシプロトコル実装の2つの例を示している。特に、図6及び図7は、L3コントローラ142が、特定のキャッシュラインがコヒーレンシの観点から又はメモリコントローラ106の観点から本質的に排他的であるが、1つのコアがキャッシュラインに排他的アクセスを要求する場合により大きいシステムへの特定のプローブを回避するように、キャッシュラインが計算複合体102内で内部的に共有されるのを許容することをリコールするのを可能にする追加のコヒーレンシ状態の使用を示している。
図6は、L3キャッシュ140がシャドウタグメモリ146にて「Forward with exclusive」又は「Fe」と示される追加のコヒーレンシ状態を実装する例示的な実装を示す図である。Fe状態は、シャドウタグメモリ146で使用され、プロセッサコアが、対応するキャッシュラインが同じ計算複合体102の別のコアと共有される前に当該キャッシュラインへの排他的アクセスをしたことを記録するか覚えている。これにより、L3コントローラ142が、内部的に、すなわちシステム全体へのプローブを必要とせずに、他のコアによるそのキャッシュラインへの排他的アクセスのための如何なる要求(本明細書では、Change to Exclusive又はChgToX要求と呼ばれる要求)を処理することを可能にする。
一例として説明するために、図6は、特定のキャッシュライン(「キャッシュラインX」と示されている)を含むキャッシュアクセスオペレーションのシーケンス600を示す図である。シーケンス600が進むにつれてL2キャッシュ131〜134の各々でキャッシュラインXに対して維持されるコヒーレンシ状態は、左側のレーンチャート602によって表される。シーケンス600が進むにつれてシャドウタグメモリ146でL2キャッシュ131〜134の各々の対応するシャドウタグエントリ216のキャッシュラインXに対して維持されるコヒーレンシ状態は、右側のレーンチャート604によって表される。この例では、L2キャッシュ131〜134は、MOESIコヒーレンシプロトコルを利用し、シャドウタグメモリ146は、MOESIコヒーレンシプロトコルのM、O、E、S及びIコヒーレンシ状態に加えてFeコヒーレンシ状態を利用する(すなわち、「MOESI+」)。
時間0において、キャッシュラインXはL2キャッシュ131〜134の何れにも有効に存在せず、したがって、キャッシュラインXのコヒーレンシ状態は、L2キャッシュ131〜134の対応するタグと、シャドウタグメモリ146の(すなわち、シャドウタグエントリ216の)対応するシャドウタグとの両方において、I(invalid)とマークされる。時間1において、プロセッサコア111に関連するL2キャッシュ131は、キャッシュラインXに対するフィル要求606を発行し、フィル要求の処理が完了した後に、キャッシュラインXのコヒーレンシ状態を「I」(invalid)から「E」(Exclusive)に変更して、新たなキャッシュラインがL2キャッシュ131にインストールされたことを記録する。さらに、L3コントローラ142は、要求606に送られたこの応答を記録し、キャッシュラインX及びL2キャッシュ131に対するシャドウタグメモリ146のシャドウタグエントリ216を更新して、Eコヒーレンシ状態も反映する。
時間2において、プロセッサコア112は、キャッシュラインXに対する読み出し要求を発行し、次に、キャッシュラインXに対するフィル要求608を発行するように、プロセッサコア112に関連するL2キャッシュ132をトリガする。これに応じて、L3コントローラ142は、シャドウタグメモリ146を検索することによってフィル要求を処理し、L2キャッシュ131がこのキャッシュラインのコピーを有することを示すシャドウタグメモリ146の「ヒット」を識別する。これに応じて、L3コントローラ142は、L2キャッシュ131にプローブ要求を送信し、キャッシュラインデータでL2キャッシュ132に応答することによって、フィル要求608を満たす。この結果、L2キャッシュ131はキャッシュラインXのコピーを共有し、L2キャッシュレベルのコヒーレンシコントローラは、L2キャッシュ131,132のキャッシュラインXのコヒーレンシ状態を両方とも「S」(shared)コヒーレンシ状態に変更する。L3コントローラ142は、2つのシャドウタグメモリロケーションを更新しなければならず、1つのシャドウタグメモリロケーションはL2キャッシュ131に存在するキャッシュラインXに対応するもので、もう1つのシャドウタグメモリロケーションはL2キャッシュ132に丁度送信されたキャッシュラインXに対応するものである。しかしながら、L3コントローラ142は、両方の位置のシャドウタグメモリ146の対応するコヒーレンシ状態を「S」状態に変更するのではなく、この時点でキャッシュラインXのコア111のコヒーレンシ状態がこのオペレーション時に「E」であったと認識し、これにより、L2キャッシュ131の「E」コヒーレンシ状態を「Fe」コヒーレンシ状態に変更する。プロセッサコア112は、この変更時に「E」コヒーレンシ状態でなかったので、L3コントローラ142は、キャッシュラインXを共有していることを示すために、シャドウタグメモリ146のL2キャッシュ132のキャッシュラインXのコヒーレンシ状態を「S」に変更する。
その後、時間3において、プロセッサコア112は、キャッシュラインXへの排他的アクセスを取得する要求を発行し、次に、ChgToX要求610を発行するようにL2キャッシュ132をトリガする。この時点でレーンチャート602のコヒーレンシ状態で示すように、L2キャッシュ131,132は、キャッシュラインXの「S」状態を有し、キャッシュ133,134は、キャッシュラインXの「I」状態を有する。このように、L2コヒーレンシ状態からは、L2キャッシュの何れも、ChgToX要求610が発行された時点では、キャッシュラインXへの排他的アクセスをするように見えない。このように、従来のシステムでは、ChgToX要求610がメモリコントローラ106に伝播されなければならず、処理システム100内の他の計算複合体にプローブをブロードキャストして、キャッシュラインXの有効なコピーが他に存在するかどうかを判別し、存在する場合には、プロセッサ1がキャッシュラインXへの排他的アクセスを取得することができるようにかかるコピーを無効化する。したがって、このプロセスは、システム100全体に亘ってかなりのプローブトラフィックをもたらす。しかしながら、L3キャッシュ140のシャドウタグメモリ146によって提供される拡張されたL2コヒーレンシ状態トラッキングは、このようなプローブトラフィックを低減又は除去することができる。
例示すると、L3コントローラ142は、L2キャッシュ131のキャッシュラインXのコヒーレンシ状態をシャドウタグメモリ146においてFeとしてマークしたので、プロセッサコア111/L2キャッシュ131が、計算複合体102内で共有される(すなわち、プロセッサコア112/L2キャッシュ132と共有される)前にキャッシュラインXに対して排他的アクセスをしたと認識することができる。この情報から、キャッシュラインXが計算複合体102の外部で共有されないので、キャッシュラインXの有効なコピーは、計算コンプレックス102の外部に存在しないことになる。このように、シャドウタグメモリ146のキャッシュラインXのFeコヒーレンシ状態を検出することに応じて、L3コントローラ142は、L2キャッシュ132がメモリコントローラ106にChgToX要求610を転送する必要なくキャッシュラインXに排他的アクセスをすることが可能であることをL2キャッシュ132に通知し、これにより、計算複合体102の外部でキャッシュラインXのコピーを見つけて無効にするために1つ以上の外部プローブをトリガするのを回避することができる。この通知に応じて、L2キャッシュ131,132は、各々のタグを更新して、キャッシュラインXのコヒーレンシ状態の変更をそれぞれ状態「I」及び「E」に反映する。同様に、L3コントローラ142は、シャドウタグメモリ146のL2キャッシュ131,132のコヒーレンシ状態に対して同じ変更を行う。このように、上述したように、シャドウタグメモリ146のFeコヒーレンシ状態を用いて、計算複合体102内で共有される前にキャッシュラインへの排他的アクセスを行ったコア/L2キャッシュを識別することによって、同じ計算複合体102の別のコアがその後排他的アクセスを要求する場合に、外部プロービングを低減又は除去することができる。
図7は、L3キャッシュ140が、シャドウタグメモリ146で「Owned−dirty」又は「Od」と示される追加のコヒーレンシ状態を利用する例示的な実装を示す図である。いくつかの実施形態では、Fe状態と同様に、Od状態は、シャドウタグメモリ146で使用され、プロセッサコアが同じ計算複合体102の別のコアと共有されたキャッシュラインの変更又は「ダーティ」コピーに排他的アクセスしたことを記録又は記憶して、L3コントローラ142が、内部的に、すなわちシステム全体にプローブを必要とせずに、別のコアによるそのキャッシュラインへの排他的アクセスの要求(本明細書では、Change to Exclusive又はChgToX要求と呼ばれる要求)を処理するのを可能にする。
一例として示すために、図7は、特定のキャッシュライン(「キャッシュラインX」と示されている)を含むキャッシュアクセスオペレーションのシーケンス700を示す図である。シーケンス700が進むにつれてL2キャッシュ131〜134の各々でキャッシュラインXに対して維持されるコヒーレンシ状態は、左側のレーンチャート702によって表される。シーケンス700が進むにつれてシャドウタグメモリ146でL2キャッシュ131〜134の各々の対応するシャドウタグエントリ216のキャッシュラインXに対して維持されるコヒーレンシ状態は、右側のレーンチャート704によって表される。この例では、L2キャッシュ131〜134は、MOESDIコヒーレンシプロトコルを利用し、シャドウタグメモリ146は、MOESIコヒーレンシプロトコルのM、O、E、S及びIコヒーレンシ状態に加えてOdコヒーレンシ状態を利用する(すなわち、「MOESI+」)。
時間0において、キャッシュラインXはL2キャッシュ131〜134の何れにも有効に存在せず、したがって、キャッシュラインXのコヒーレンシ状態は、L2キャッシュ131〜134の対応するタグと、シャドウタグメモリ146の(すなわち、シャドウタグエントリ216の)対応するシャドウタグとの両方において、I(invalid)とマークされる。時間1において、プロセッサコア111に関連するL2キャッシュ131は、キャッシュラインXに対するフィル要求706を発行し、フィル要求の処理が完了した後に、キャッシュラインXのコヒーレンシ状態を「E」(Exclusive)に変更する。さらに、L3コントローラ142は、要求606に送られたこの応答に気づき、キャッシュラインX及びL2キャッシュ131に対するシャドウタグメモリ146のシャドウタグメモリロケーション216を更新して、Eコヒーレンシ状態も反映する。
時間2において、プロセッサコア111は、L2キャッシュ131に常駐するキャッシュラインXのコピーを変更する書き込み要求708を発行する。これに応じて、処理システム100は、L2キャッシュ131のキャッシュラインXのコヒーレンシ状態を「M」(Modified)コヒーレンシ状態に変更する。同様に、L2キャッシュ131のキャッシュラインXに対する変更を検出することに応じて、L3コントローラ142は、シャドウタグメモリ146を更新して、L2キャッシュ131のキャッシュラインXの「M」コヒーレンシ状態を反映する。
時間3において、プロセッサコア112は、キャッシュラインXに対する読み出し要求を発行し、次に、キャッシュラインXに対するフィル要求710を発行するように、プロセッサコア112に関連するL2キャッシュ132をトリガする。これに応じて、L3コントローラ142は、シャドウタグメモリ146を検索することによってフィル要求を処理し、L2キャッシュ131がこのキャッシュラインのコピーを有することを示すシャドウタグメモリ146の「ヒット」を識別する。これに応じて、L3コントローラ142は、L2キャッシュ131にプローブ要求を送信し、キャッシュラインデータでL2キャッシュ132に応答することによって、フィル要求608を満たす。この結果、L2キャッシュ131は、キャッシュラインXのダーティコピーをL2キャッシュ132と共有し、L2キャッシュレベルのコヒーレントコントローラは、キャッシュラインXのコヒーレンシ状態を、L2キャッシュ131の「S」(Shared)コヒーレンシ状態、及び、L2キャッシュ132の「O」(Owned)コヒーレンシ状態に変更する。しかしながら、L3コントローラ142は、同じ方法でシャドウタグメモリ146の対応するコヒーレンシ状態を同様に変更するのではなく、このオペレーション時にキャッシュラインXのコア111用のコヒーレンシ状態が「M」であったと認識し、これにより、キャッシュラインXをL2キャッシュ132の「Od」コヒーレンシ状態を有するものとしてマークする。このように、シャドウタグメモリ146は、L2キャッシュ132が同じ計算複合体102の別のコアからキャッシュラインXのダーティコピーへのアクセスを取得したことを通知する。
その後、時間4において、プロセッサコア111は、キャッシュラインXへの排他的アクセスを取得するための要求を発行し、ChgToX要求712を発行するようにL2キャッシュ131をトリガする。この時点でのL2コヒーレンシ状態からは、キャッシュラインXの排他的コピーがL2キャッシュ131〜134の何れかに存在するかどうかが明らかでない。このように、従来のシステムでは、ChgToX要求712は、メモリコントローラ106に伝播されなければならず、処理システム100内の他の計算複合体にプローブをブロードキャストして、キャッシュラインXのコピーが他に存在するかどうかを判別し、存在する場合には、計算複合体102のコア111がキャッシュラインXへの排他的アクセスを取得することができるように、コピーを無効化する。このプロセスは、システム100全体に亘ってかなりのプローブトラフィックをもたらすことになる。しかしながら、L3コントローラ142が、L2キャッシュ132のキャッシュラインXのコヒーレンシ状態をシャドウタグメモリ146においてOdとしてマークしているので、L3コントローラ142は、キャッシュラインXを計算複合体102内の別のコア/L2キャッシュと共有する前に、プロセッサコア112/L2キャッシュ132が当該キャッシュラインXに排他的アクセスをしたと認識することができる。この情報から、キャッシュラインXが計算複合体102の外部では共有されないので、キャッシュラインXの有効なコピーは、計算複合体102の外部に存在しないことになる。この情報によって、L3コントローラ142は、L2キャッシュ131がメモリコントローラ106にChgToX要求710を転送する必要なくキャッシュラインXに排他的アクセスをすることが可能であることをL2キャッシュ131に通知し、これにより、計算複合体102の外部でキャッシュラインXのコピーを見つけて無効にするために1つ以上の外部プローブをトリガするのを回避することができる。この通知に応じて、L2キャッシュ131,132は、各々のタグを更新して、キャッシュラインXのコヒーレンシ状態の変更をそれぞれ状態「D」及び「I」に反映する。同様に、L3コントローラ142は、シャドウタグメモリ146のL2キャッシュ131,132のコヒーレンシ状態に対して同じ変更を行う。このように、上述したように、シャドウタグメモリ146のOdコヒーレンシ状態を用いて、計算複合体102内で共有される前にキャッシュラインへの排他的アクセスを行ったコア/L2キャッシュを識別することによって、同じ計算複合体102の別のコアがその後排他的アクセスを要求する場合に、外部のプロービングを除去することができる。
図8は、少なくとも1つの実施形態による、シャドウタグメモリ146を用いて、メモリコントローラ106に報告されたキャッシュ階層104からのキャッシュラインエビクションを効率的に処理する方法800を示すフローチャートである。ブロック802において、新たなキャッシュラインが、L3キャッシュ140に記憶されるために受信される。L3キャッシュ140に新たなキャッシュラインをインストールすると、L3キャッシュ140から同じ位置にある別の既存のキャッシュラインがエビクトされることがある。このエビクトは、以下の説明のために「L3ビクティム」と呼ばれる。したがって、ブロック804において、L3コントローラ142は、新たなキャッシュラインがL3ビクティムになるかどうかを判別する。L3ビクティムにならない場合には、L3ビクティム処理が必要とされず、方法800は終了する。しかしながら、L3ビクティムになる場合、L3ビクティム処理が開始される。いくつかの実施形態では、L2キャッシュ131〜134は、包括的キャッシュとして実装され、したがって、対応するL1キャッシュ121〜124に存在する全てのキャッシュラインを含む。したがって、ブロック808において、L3コントローラ142は、シャドウタグメモリ146を検索して、同じキャッシュラインがシャドウタグメモリ146内に存在するかどうかを判別する。L3ビクティムがシャドウタグメモリ146内に存在する場合、L3コントローラ142は、検索プロセスから「ヒット」を取得し、これにより、キャッシュラインがL2キャッシュ131〜134のうち何れか1つに存在すると判別する。したがって、ヒットに応じて、ブロック810において、L3コントローラ142は、L3ビクティムをメモリコントローラ106に報告するのを控えることを含む、L3ビクティムのさらなる処理を控える。しかしながら、シャドウタグメモリ検索から「ミス」が生じた場合、L3コントローラ142は、キャッシュラインがL2キャッシュ131〜134の何れにも存在しないと判別する。したがって、ブロック812でのミスに応じて、L3コントローラは、L3ビクティムを、キャッシュ階層104からメモリコントローラ106へのエビクションとして報告することを含む、L3ビクティムの処理を完了する。このように、シャドウタグメモリ146の実装により、L3キャッシュが、L3ビクティムキャッシュラインがL2キャッシュ131〜134に存在する場合に、エビクションビクティムとしてメモリコントローラ106に報告されるL3ビクティムに対する要求を排除することができ、これにより、設計における電力及びメモリ帯域幅を節約する。
いくつかの実施形態では、上述した装置及び技術は、図1〜8を参照して上述した処理システム等のような1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムにおいて実施される。これらのICデバイスの設計及び製造には、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールを使用することができる。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表わされる。1つ以上のソフトウェアプログラムは、回路を製造するように製造システムを設計又は適合させるためのプロセスの少なくとも一部を実行するように、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するコンピュータシステムによって実行可能なコードを備える。このコードには、命令、データ、又は、命令及びデータの組み合わせが含まれる。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じ又は異なるコンピュータ可読記憶媒体に記憶され、当該コンピュータ可読記憶媒体からアクセスされてもよい。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な、任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含むことができる。このような記憶媒体は、限定しないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、マイクロ電気機械システム(MEMS)ベースの記憶媒体を含むことができる。コンピュータ可読記憶媒体は、コンピューティングシステムに埋め込まれてもよく(例えば、システムRAM又はROM)、コンピューティングシステムに固定的に取り付けられてもよく(例えば、磁気ハードドライブ)、コンピューティングシステムに着脱可能に取り付けられてもよく(例えば、光ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)、有線若しくは無線ネットワークを介してコンピュータシステムに接続されてもよい(例えば、ネットワークアクセス可能ストレージ(NAS))。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体上に記憶されるか、他の方法で有形に具現化された、1つ以上の実行可能な命令のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されたときに、1つ以上のプロセッサを操作して、上述した技術の1つ以上の態様を実行する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、ソリッドステート記憶デバイス(例えば、フラッシュメモリ等)、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能な命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは他の方法で実行可能な他の命令フォーマットであってもよい。
概説において上述したアクティビティ又は要素の全てが必要であるとは限らず、特定のアクティビティ又はデバイスの一部が必要でなくともよく、説明したアクティビティに加えて1つ以上の更なるアクティビティが実行されてもよいし、1つ以上の更なる要素が含まれてもよいことに留意されたい。さらに、アクティビティが列挙される順序は、必ずしもそれらが実行される順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変更を行うことができることを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、そのような変更の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段が特定の実施形態に関して上述されている。しかしながら、利益、利点、問題に対する解決手段、及び、何等かの利益、利点、解決手段が発生するか、顕著になる可能性のある機能は、何れか又は全ての特許請求の範囲の重要な特徴、必須の特徴、本質的な特徴として解釈されるべきでない。更に、開示された発明は、本明細書における教示の利益を有する当業者には明らかであるが、異なるが同等の方法で変更され、実施され得るので、上記の開示された特定の実施形態は、例示に過ぎない。以下の特許請求の範囲に記載されているもの以外に、本明細書に示された構成又は設計の詳細に制限はない。したがって、上記の開示された特定の実施形態は、変更又は修正されてもよく、全てのそのような変形は、開示された発明の範囲内にあると考えられることが明らかである。したがって、本願で求められる保護は、以下の特許請求の範囲に記載されている。

Claims (17)

  1. 複数のプロセッサコア(111,112,113,114)と、
    複数の専用キャッシュ(131,132,133,134)であって、各専用キャッシュは、前記複数のプロセッサコアの対応するプロセッサコアに関連付けられており、対応するキャッシュラインのセットを含む、複数の専用キャッシュと、
    前記複数のプロセッサコアによって共有される共有キャッシュ(140)と、を備え、
    前記共有キャッシュは、
    キャッシュラインの第2セットと、
    複数のエントリ(216)を含むシャドウタグメモリ(146)であって、各エントリは、前記複数の専用キャッシュのうち1つ専用キャッシュのキャッシュラインのセットのうち対応するキャッシュラインの状態(215)及びアドレス情報(214)を記憶する、シャドウタグメモリと、を備える、
    処理システム(100)。
  2. 前記専用キャッシュは、コヒーレンシ状態の第1セットに従って、キャッシュラインの前記対応するキャッシュラインのセットのキャッシュラインのコヒーレンシ状態を記憶するように構成されており、
    前記シャドウタグメモリは、コヒーレンシ状態の前記第1セットのスーパーセットを含むコヒーレンシ状態の第2セットに従って、前記複数の専用キャッシュのキャッシュラインのセットのキャッシュラインのコヒーレンシ状態を記憶する、
    請求項1の処理システム。
  3. 前記コヒーレンシ状態の第2セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち1つの専用キャッシュから取得されたことを通知するコヒーレンシ状態を含む、
    請求項2の処理システム。
  4. 前記コヒーレンシ状態の第2セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち1つの専用キャッシュから変更された形態で取得されたことを通知するコヒーレンシ状態を含む、
    請求項2の処理システム。
  5. 前記共有キャッシュは、前記シャドウタグメモリに基づいてキャッシュプローブをフィルタリングするコントローラ(142)を備える、
    請求項1の処理システム。
  6. 前記コントローラは、
    前記シャドウタグメモリを検索して、前記シャドウタグメモリがキャッシュプローブに関連するキャッシュラインに対する有効なエントリを有するかどうかを判別することと、
    前記シャドウタグメモリが前記キャッシュラインに対して有効なエントリを有していないと判別したことに応じて、前記キャッシュプローブに応じてキャッシュミスを通知することと、
    によって、キャッシュプローブをフィルタリングする、
    請求項5の処理システム。
  7. 前記コントローラは、
    前記シャドウタグメモリが前記キャッシュラインに対する有効なエントリを有すると判別したことに応じて、前記有効なエントリに関連する前記専用キャッシュを識別し、前記キャッシュプローブを前記識別された専用キャッシュに転送すること
    によって、キャッシュプローブをフィルタリングする、
    請求項5の処理システム。
  8. 複数のプロセッサコア(111,112,113,114)に関連する複数の専用キャッシュ(131,132,133,134)と、前記複数のプロセッサコアによって共有される共有キャッシュ(140)と、を備える処理システム(100)における方法であって、
    前記複数の専用キャッシュにて、前記複数の専用キャッシュに記憶されるキャッシュラインのコヒーレンシ情報を維持することと、
    前記共有キャッシュのシャドウタグメモリ(142)にて、前記複数の専用キャッシュに記憶されるキャッシュラインのコヒーレンシ情報を維持することと、を含む、
    方法。
  9. 前記複数の専用キャッシュにて前記コヒーレンシ情報を維持することは、コヒーレンシ状態の第1セットに従って、前記複数の専用キャッシュにて前記コヒーレンシ情報を維持することを含み、
    前記共有キャッシュの前記シャドウタグメモリにて前記コヒーレンシ情報を維持することは、コヒーレンシ状態の第2セットに従って前記コヒーレンシ情報を維持することであって、前記コヒーレンシ状態の第2セットが前記コヒーレンシ状態の第1のセットのスーパーセットを含む、ことを含む、
    請求項8の方法。
  10. 前記コヒーレンシ状態の第2セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち1つの専用キャッシュから取得されたことを通知するコヒーレンシ状態を含む、
    請求項9の方法。
  11. 前記コヒーレンシ状態の第2セットは、関連するキャッシュラインが、前記関連するキャッシュラインに排他的アクセスした前記複数の専用キャッシュのうち1つの専用キャッシュから変更された形態で取得されたことを通知するコヒーレンシ状態を含む、
    請求項9の方法。
  12. 前記共有キャッシュにて、前記シャドウタグメモリに基づいてキャッシュプローブをフィルタリングすることを含む、
    請求項8の方法。
  13. 前記キャッシュプローブをフィルタリングすることは、
    前記シャドウタグメモリを検索して、前記シャドウタグメモリがキャッシュプローブに関連するキャッシュラインに対する有効なエントリ(216)を有するかどうかを判別することと、
    前記シャドウタグメモリが前記キャッシュラインに対する有効なエントリを有していないと判別したことに応じて、前記キャッシュプローブに応じてキャッシュミスを通知することと、を含む、
    請求項12の方法。
  14. 前記シャドウタグメモリを検索して、前記シャドウタグメモリが前記共有キャッシュからエビクトされているキャッシュラインに対する有効なエントリ(216)を有するかどうかを判別することと、
    前記キャッシュラインに対する有効なエントリが存在しないと判別したことに応じて、前記キャッシュラインを、メモリコントローラ(106)にエビクトされているものとして報告することと、
    前記キャッシュラインに対する有効なエントリが存在すると判別したことに応じて、前記キャッシュラインを、前記メモリコントローラにエビクトされているものとして報告するのを控えることと、を含む、
    請求項8の方法。
  15. 複数の専用キャッシュ(131,132,133,134)であって、各専用キャッシュは、プロセッサコア(111,112,113,114)のセットのうち対応するプロセッサコア専用である、複数の専用キャッシュと、
    前記プロセッサコアのセットによって共有される共有キャッシュ(140)であって、前記共有キャッシュは、前記複数の専用キャッシュに対して排他的なデータ及び前記複数の専用キャッシュに対して包括的なタグとして維持される、共有キャッシュと、を備える、
    処理システム(100)。
  16. 前記共有キャッシュは、
    前記専用キャッシュに記憶されたキャッシュライン用の前記複数の専用キャッシュによって記憶されたタグ情報を表す状態情報を記憶するシャドウタグメモリ(142)を備える、
    請求項15の処理システム。
  17. 前記専用キャッシュの各々は、コヒーレンシ状態の第1セットに従って前記専用キャッシュのキャッシュラインのコヒーレンシ状態を記憶するように構成されており、
    前記シャドウタグメモリによって記憶される前記状態情報は、コヒーレンシ状態の第2セットに従って前記複数の専用キャッシュの前記キャッシュラインの少なくともサブセットのコヒーレンシ状態を含み、前記コヒーレンシ状態の第2セットは、前記コヒーレンシ状態の第1セットのスーパーセットを含む、
    請求項16の処理システム。
JP2018555925A 2016-06-23 2016-09-20 異なるキャッシュレベルのキャッシュラインの状態をモニタリングするシャドウタグメモリ Active JP6653768B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/190,607 US10073776B2 (en) 2016-06-23 2016-06-23 Shadow tag memory to monitor state of cachelines at different cache level
US15/190,607 2016-06-23
PCT/US2016/052607 WO2017222577A1 (en) 2016-06-23 2016-09-20 Shadow tag memory to monitor state of cachelines at different cache level

Publications (2)

Publication Number Publication Date
JP2019519028A true JP2019519028A (ja) 2019-07-04
JP6653768B2 JP6653768B2 (ja) 2020-02-26

Family

ID=60677550

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018555925A Active JP6653768B2 (ja) 2016-06-23 2016-09-20 異なるキャッシュレベルのキャッシュラインの状態をモニタリングするシャドウタグメモリ

Country Status (5)

Country Link
US (1) US10073776B2 (ja)
JP (1) JP6653768B2 (ja)
KR (1) KR102429404B1 (ja)
CN (1) CN109154911B (ja)
WO (1) WO2017222577A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10373285B2 (en) * 2017-04-09 2019-08-06 Intel Corporation Coarse grain coherency
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
US10528519B2 (en) * 2017-05-02 2020-01-07 Mellanox Technologies Ltd. Computing in parallel processing environments
US11017102B2 (en) * 2017-09-12 2021-05-25 Sophos Limited Communicating application information to a firewall
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
US11275688B2 (en) 2019-12-02 2022-03-15 Advanced Micro Devices, Inc. Transfer of cachelines in a processing system based on transfer costs
CN112612726B (zh) * 2020-12-08 2022-09-27 海光信息技术股份有限公司 基于缓存一致性的数据存储方法、装置、处理芯片及服务器
CN112612727B (zh) * 2020-12-08 2023-07-07 成都海光微电子技术有限公司 一种高速缓存行替换方法、装置及电子设备
US20230099256A1 (en) * 2021-09-29 2023-03-30 Advanced Micro Devices, Inc. Storing an indication of a specific data pattern in spare directory entries
US11797451B1 (en) * 2021-10-15 2023-10-24 Meta Platforms Technologies, Llc Dynamic memory management in mixed mode cache and shared memory systems
CN114217861A (zh) * 2021-12-06 2022-03-22 海光信息技术股份有限公司 数据处理方法及装置、电子装置和存储介质
US11960399B2 (en) 2021-12-21 2024-04-16 Advanced Micro Devices, Inc. Relaxed invalidation for cache coherence
KR20230115931A (ko) * 2022-01-27 2023-08-03 한국과학기술원 로그 기반 파일 시스템에서 쓰레기 수집과 트랜잭션의 병행 처리를 위한 쓰레기 수집 방법 및 장치
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
US11907124B2 (en) 2022-03-31 2024-02-20 International Business Machines Corporation Using a shadow copy of a cache in a cache hierarchy

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297269A (en) 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
US5897656A (en) 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US6018763A (en) 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency
US7146468B2 (en) 2002-04-24 2006-12-05 Ip-First, Llc. Cache memory and method for handling effects of external snoops colliding with in-flight operations internally to the cache
CN1320464C (zh) * 2003-10-23 2007-06-06 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US8301844B2 (en) * 2004-01-13 2012-10-30 Hewlett-Packard Development Company, L.P. Consistency evaluation of program execution across at least one memory barrier
US7353341B2 (en) * 2004-06-03 2008-04-01 International Business Machines Corporation System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches
US7213106B1 (en) 2004-08-09 2007-05-01 Sun Microsystems, Inc. Conservative shadow cache support in a point-to-point connected multiprocessing node
US20060053258A1 (en) * 2004-09-08 2006-03-09 Yen-Cheng Liu Cache filtering using core indicators
US8332592B2 (en) 2004-10-08 2012-12-11 International Business Machines Corporation Graphics processor with snoop filter
US7337280B2 (en) 2005-02-10 2008-02-26 International Business Machines Corporation Data processing system and method for efficient L3 cache directory management
US7386683B2 (en) 2005-03-29 2008-06-10 International Business Machines Corporation Method and apparatus for filtering snoop requests in a point-to-point interconnect architecture
US7836262B2 (en) * 2007-06-05 2010-11-16 Apple Inc. Converting victim writeback to a fill
US8429349B2 (en) 2008-09-18 2013-04-23 International Business Machines Corporation Techniques for cache injection in a processor system with replacement policy position modification
US20100146209A1 (en) 2008-12-05 2010-06-10 Intellectual Ventures Management, Llc Method and apparatus for combining independent data caches
US8904115B2 (en) 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8935485B2 (en) * 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US9268697B2 (en) 2012-12-29 2016-02-23 Intel Corporation Snoop filter having centralized translation circuitry and shadow tag array
US9727466B2 (en) * 2014-08-26 2017-08-08 Arm Limited Interconnect and method of managing a snoop filter for an interconnect
US9542316B1 (en) * 2015-07-23 2017-01-10 Arteris, Inc. System and method for adaptation of coherence models between agents

Also Published As

Publication number Publication date
JP6653768B2 (ja) 2020-02-26
US20170371786A1 (en) 2017-12-28
US10073776B2 (en) 2018-09-11
WO2017222577A1 (en) 2017-12-28
KR20190011257A (ko) 2019-02-01
KR102429404B1 (ko) 2022-08-05
CN109154911B (zh) 2021-03-05
CN109154911A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
JP6653768B2 (ja) 異なるキャッシュレベルのキャッシュラインの状態をモニタリングするシャドウタグメモリ
EP3427154B1 (en) Self-healing coarse-grained snoop filter
US9792210B2 (en) Region probe filter for distributed memory system
KR100978156B1 (ko) 스누프 필터에서의 실효를 감소시키기 위한 라인 스와핑 스킴을 위한 방법, 장치, 시스템 및 컴퓨터 판독 가능 기록 매체
US8812786B2 (en) Dual-granularity state tracking for directory-based cache coherence
JP7337173B2 (ja) トランスレーションルックアサイドバッファエビクションに基づくキャッシュ置換
CN111263934B (zh) 至少具有三个缓存级别的缓存层级的混合低级缓存包含策略
US10282295B1 (en) Reducing cache footprint in cache coherence directory
US20140297966A1 (en) Operation processing apparatus, information processing apparatus and method of controlling information processing apparatus
EP3688597B1 (en) Preemptive cache writeback with transaction support
EP3260986B1 (en) Shadow tag memory to monitor state of cachelines at different cache level
US9081685B2 (en) Data processing apparatus and method for handling performance of a cache maintenance operation
WO2019118042A1 (en) Rinsing cache lines from a common memory page to memory
US11960399B2 (en) Relaxed invalidation for cache coherence
US11847062B2 (en) Re-fetching data for L3 cache data evictions into a last-level cache
KR102665339B1 (ko) 변환 색인 버퍼 축출 기반 캐시 교체

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190528

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190528

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190528

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191009

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200128

R150 Certificate of patent or registration of utility model

Ref document number: 6653768

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