(57)【要約】システム（１００）は、１つ以上のプロセッサコア（１１１〜１１４）と、キャッシュ階層（１０４）と、を含む。キャッシュ階層は、第１レベルキャッシュ（１２１〜１２４）と、第２レベルキャッシュ（１３１〜１３４）と、第３レベルキャッシュ（１４０）と、を含む。キャッシュ階層は、キャッシングポリシー（１４４）を実施するように構成されたキャッシュ階層制御ロジック（１４２）を含む。キャッシングポリシー（１４４）では、第１レベルキャッシュにキャッシュされたキャッシュラインの各々が、第２レベルキャッシュ及び第３レベルキャッシュのうち少なくとも一方にキャッシュされたキャッシュラインのコピーを有する。キャッシングポリシーは、第２レベルキャッシュからのキャッシュラインのエビクションが、第１レベルキャッシュからの当該キャッシュラインのコピーのエビクションをトリガしないことと、第３レベルキャッシュからのキャッシュラインのエビクションが、キャッシュラインが第２レベルキャッシュ内に存在しない場合に、当該キャッシュラインのコピーを第１レベルキャッシュからエビクトするようにキャッシュ階層制御ロジックをトリガすることと、を提供する。【選択図】図１
2021500655.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムであって、
１つ以上のプロセッサコアと、
キャッシュ階層と、を備え、
前記キャッシュ階層は、
第１レベルキャッシュと、
第２レベルキャッシュと、
第３レベルキャッシュと、
キャッシュ階層制御ロジックと、を備え、
前記キャッシュ階層制御ロジックは、
前記第１レベルキャッシュにキャッシュされたキャッシュラインの各々が、前記第２レベルキャッシュ及び前記第３レベルキャッシュのうち少なくとも一方にキャッシュされた前記キャッシュラインのコピーを有するキャッシュポリシーを実施するように構成されている、
データ処理システム。
【請求項２】
前記キャッシングポリシーは、前記第２レベルキャッシュからのキャッシュラインのエビクションが、前記第１レベルキャッシュからの前記キャッシュラインのコピーのエビクションをトリガしないことをさらに提供する、
請求項１のデータ処理システム。
【請求項３】
前記キャッシングポリシーは、前記第３レベルキャッシュからのキャッシュラインのエビクションが、前記キャッシュラインが前記第２レベルキャッシュに存在しない場合に、前記キャッシュラインのコピーを前記第１レベルキャッシュからエビクトするように前記キャッシュ階層制御ロジックをトリガすることをさらに提供する、
請求項１又は２のデータ処理システム。
【請求項４】
前記キャッシングポリシーは、
前記第３レベルキャッシュからのキャッシュラインのエビクションが、
前記キャッシュラインのコピーが前記第２レベルキャッシュに存在しない場合に、前記キャッシュラインのコピーを前記第１レベルキャッシュからエビクトし、
前記キャッシュラインのコピーが前記第２レベルキャッシュに存在する場合に、前記キャッシュラインのコピーを前記第１レベルキャッシュ内に維持する、ように前記キャッシュ階層ロジックをトリガすることをさらに提供する、
請求項１のデータ処理システム。
【請求項５】
前記第３レベルキャッシュは、プレゼンスフィールドの第１セットにアクセスして、前記第３レベルキャッシュの何れのキャッシュラインが前記第１レベルキャッシュ又は前記第２レベルキャッシュにも記憶されているのかを識別する第１プレゼンス情報を記憶する、
請求項４のデータ処理システム。
【請求項６】
前記第１プレゼンス情報は、対応するキャッシュラインが前記第１レベルキャッシュ又は前記第２レベルキャッシュの何れに存在するかどうかのみを識別する、
請求項５のデータ処理システム。
【請求項７】
前記第１プレゼンス情報は、対応するキャッシュラインが前記第１レベルキャッシュに存在するかどうかと、前記対応するキャッシュラインが前記第２レベルキャッシュに存在するかどうかと、を識別する、
請求項５のデータ処理システム。
【請求項８】
前記キャッシュ階層は、複数の第１レベルキャッシュと、複数の第２レベルキャッシュと、を含み、
前記第１プレゼンス情報は、対応するキャッシュラインが前記複数の第１レベルキャッシュのうち何れの第１レベルキャッシュに記憶されているか、又は、対応するキャッシュラインが前記複数の第２レベルキャッシュのうち何れの第２レベルキャッシュに記憶されているかを識別する、
請求項５のデータ処理システム。
【請求項９】
前記プレゼンスフィールドの第１セットは、前記第３レベルキャッシュのタグアレイの一部である、
請求項５のデータ処理システム。
【請求項１０】
前記第１レベルキャッシュは、プレゼンスフィールドの第２セットにアクセスして、前記第１レベルキャッシュ内の何れのキャッシュラインが前記第２レベルキャッシュ又は前記第３レベルキャッシュにも記憶されているかを識別する第２プレゼンス情報を記憶する、
請求項５のデータ処理システム。
【請求項１１】
前記第２プレゼンス情報は、対応するキャッシュラインが前記第２レベルキャッシュ又は前記第３レベルキャッシュの何れに存在するかどうかのみを識別する、
請求項１０のデータ処理システム。
【請求項１２】
前記第２プレゼンス情報は、対応するキャッシュラインが前記第２レベルキャッシュに存在するかどうかと、前記対応するキャッシュラインが前記第３レベルキャッシュに存在するかどうかと、を識別する、
請求項１０のデータ処理システム。
【請求項１３】
前記キャッシュ階層は、複数の第２レベルキャッシュを含み、
前記第２プレゼンス情報は、対応するキャッシュラインが前記複数の第２レベルキャッシュのうち何れの第２レベルキャッシュに記憶されているかを識別する、
請求項１０のデータ処理システム。
【請求項１４】
前記プレゼンスフィールドの第２セットは、前記第１レベルキャッシュのタグアレイの一部である、
請求項１０のデータ処理システム。
【請求項１５】
キャッシュラインをメモリからフェッチすることと、
キャッシュ階層のキャッシュ階層制御ロジックによって、前記キャッシュラインを前記キャッシュ階層の第１レベルキャッシュに記憶することと、
前記キャッシュ階層制御ロジックによって、前記第１レベルキャッシュ内のキャッシュラインの各々が前記キャッシュ階層の第２レベルキャッシュ又は第３レベルキャッシュのうち少なくとも一方にも記憶されるキャッシングポリシーに応じて、前記キャッシュラインを前記第２レベルキャッシュに記憶することと、
前記キャッシュ階層制御ロジックによって、前記キャッシュラインを前記第１レベルキャッシュ内に維持しながら、前記キャッシュラインを前記第２レベルキャッシュからエビクトすることと、を含む、
方法。
【請求項１６】
前記キャッシュ階層制御ロジックによって、前記キャッシュラインを前記第２レベルキャッシュに記憶することは、
前記キャッシュ階層制御ロジックによって、前記第１レベルキャッシュに記憶されたプレゼンス情報に基づいて、前記第１レベルキャッシュ及び前記第２レベルキャッシュの何れも前記キャッシュラインを現在記憶していないことを判別することであって、前記プレゼンス情報は、前記第１レベルキャッシュに記憶されたキャッシュライン毎に、前記キャッシュラインが前記第２レベルキャッシュ又は前記第３レベルキャッシュのうち少なくとも一方にも記憶されているかどうかを識別する、ことを含む、
請求項１５の方法。
【請求項１７】
前記プレゼンス情報は、前記キャッシュラインが前記第２レベルキャッシュに記憶されるか、又は、前記第３レベルキャッシュに記憶されているかどうかを識別する、
請求項１６の方法。
【請求項１８】
前記キャッシュ階層は、複数の第２レベルキャッシュを含み、
前記プレゼンス情報は、前記複数の第２レベルキャッシュのうち、前記キャッシュラインを記憶する特定の第２レベルキャッシュを識別する、
請求項１７の方法。
【請求項１９】
前記キャッシュラインを前記第２レベルキャッシュからエビクトすることは、
前記キャッシュラインを前記第３レベルキャッシュに記憶すること、又は、前記キャッシュラインの変更された値で前記メモリを更新すること、の何れかを含む、
請求項１５の方法。
【請求項２０】
前記キャッシュ階層制御ロジックによって、前記キャッシュラインを前記第３レベルキャッシュからエビクトすることと、
前記キャッシュ階層制御ロジックによって、前記キャッシュラインが前記第２レベルキャッシュ内に存在するかどうかを判別することと、
前記キャッシングポリシーに従う前記キャッシュ階層制御ロジックによって、前記第３レベルキャッシュからの前記キャッシュラインのエビクションに応じて、及び、前記キャッシュラインが前記第２レベルキャッシュ内に存在しないことを判別したことに応じて、前記キャッシュラインを前記第１レベルキャッシュからエビクトすることと、をさらに含む、
請求項１９の方法。
【請求項２１】
前記キャッシュラインが前記第２レベルキャッシュ内に存在するかどうかを判別することは、前記第３レベルキャッシュに記憶されたプレゼンス情報に基づいて行われ、前記プレゼンス情報は、前記第３レベルキャッシュに記憶されたキャッシュライン毎に、前記キャッシュラインが前記第２レベルキャッシュ内にも存在するかどうかを示している、
請求項２０の方法。
【請求項２２】
前記キャッシュ階層は、複数の第２レベルキャッシュを含み、
前記プレゼンス情報は、前記複数の第２レベルキャッシュのうち、前記キャッシュラインを記憶する特定の第２レベルキャッシュを識別する、
請求項２１の方法。
【請求項２３】
キャッシュラインをメモリからフェッチすることと、
キャッシングポリシーに従って、前記キャッシュラインをキャッシュ階層にキャッシュすることであって、前記キャッシュ階層は、第１レベルキャッシュと、第２レベルキャッシュと、第３レベルキャッシュと、を有する、ことと、を含み、
前記キャッシングポリシーは、前記第１レベルキャッシュにキャッシュされたキャッシュラインが、前記第２レベルキャッシュ又は前記第３レベルキャッシュのうち少なくとも一方にも記憶されていることと、前記第２レベルキャッシュからのキャッシュラインのエビクションが、前記第１レベルキャッシュからの前記キャッシュラインのエビクションを必要としないことと、前記キャッシュラインが前記第２レベルキャッシュにもキャッシュされない場合、前記第３レベルキャッシュからのキャッシュラインのエビクションが、前記キャッシュラインを前記第１レベルキャッシュからもエビクトすることと、を提供する、
方法。
【請求項２４】
キャッシュ階層制御ロジックは、前記第１レベルキャッシュ、前記第２レベルキャッシュ又は前記第３レベルキャッシュのうち１つ以上に記憶されたプレゼンス情報を使用して、前記キャッシングポリシーを実施し、所定のキャッシュレベルのキャッシュの前記プレゼンス情報は、前記所定のキャッシュレベルのキャッシュに記憶されたキャッシュラインが他の１つ以上のキャッシュレベルのキャッシュに記憶されているかどうかを示している、
請求項２３の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
処理システムは、多くの場合、１つ以上のプロセッサコアによるアクセスに利用可能な複数のレベルのキャッシュを有するキャッシュ階層を利用する。３つの以上のキャッシュレベルを有するキャッシュ階層に関して、従来の処理システムでは、最高レベルのキャッシュ（例えば、Ｌ１キャッシュ）でキャッシュされたアドレスのデータに対して、３つのキャッシュポリシー（（１）データは、他のキャッシュにコピー又は含まれることが必要とされない、（２）データのコピーは、常に、２番目に高いレベルのキャッシュ（例えば、Ｌ２キャッシュ）に含まれることが必要とされ、２番目に高いレベルのキャッシュからキャッシュされたデータのコピーをエビクトすると、同様に、キャッシュされたデータを最高レベルのキャッシュからエビクトするために無効メッセージが送信される、又は、（３）データのコピーは、常に、３番目に高いレベルのキャッシュ（例えば、Ｌ３キャッシュ）に含まれることが必要とされ、３番目に高いレベルのキャッシュからエビクトすると、同様に、キャッシュされたデータを最高レベルのキャッシュからエビクトするために無効メッセージが送信される）のうち１つが必要とされる。第１ポリシーは、他のキャッシュレベルでキャッシュされたデータのコピーを必要としないことによって、キャッシュされたデータは、当該最高レベルのキャッシュにアクセスしないコンポーネントにアクセスできない可能性があり、又は、低レベルキャッシュからキャッシュされたデータが存在しないことによって、キャッシュされたデータが見つけられ及びアクセスされる前に過剰なキャッシュミスが発生し、これにより、システムパフォーマンスに影響を及ぼす可能性があるという点で問題になる。後の２つのポリシーは、過剰な無効メッセージング及びキャッシュラインのエビクトにつながり、システムパフォーマンスに悪影響を及ぼすという点で問題になる。
【０００２】
本開示は、より良好に理解することができ、その多くの特徴及び利点は、添付の図面を参照することによって当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、ハイブリッド低レベルキャッシュインクルージョンポリシーを有するキャッシュ階層を使用するデータ処理システムのブロック図である。
【図２】いくつかの実施形態による、図１のデータ処理システムのキャッシュ階層を示すブロック図である。
【図３】いくつかの実施形態による、データ処理システムのキャッシュ階層の第１レベルキャッシュ内にキャッシュラインをインストールするためのハイブリッド低レベルキャッシュインクルージョンポリシーの態様を示すフロー図である。
【図４】いくつかの実施形態による、データ処理システムのキャッシュ階層の第２レベルキャッシュからキャッシュラインをエビクトするためのハイブリッド低レベルキャッシュインクルージョンポリシーの態様を示すフロー図である。
【図５】いくつかの実施形態による、データ処理システムのキャッシュ階層の第３レベルキャッシュからキャッシュラインをエビクトするためのハイブリッド低レベルキャッシュインクルージョンポリシーの態様を示すフロー図である。
【発明を実施するための形態】
【０００４】
図１〜図５は、３つの以上のキャッシュレベルを有するキャッシュ階層における効率的なデータキャッシングのシステム及び方法を示す図である。いくつかの実施形態では、キャッシュ階層の様々なキャッシュの制御ロジックは、最高レベルのキャッシュでキャッシュされたキャッシュラインが、従来のキャッシングポリシーよりも少ないキャッシュ間メッセージング及びエビクションを提供しながら、キャッシュ階層の他の場所に少なくとも１つのコピーを有することを確実にする、ハイブリッド低位レベルキャッシュインクルージョンポリシーを実施するために一緒に動作する。本明細書でより詳細に説明するように、本明細書で「ハイブリッド低位レベルキャッシュインクルージョンポリシー」と呼ばれるこのキャッシングポリシーは、以下の少なくとも３つのガイドラインを実施する。第１に、第１レベルキャッシュ（例えば、レベル１（Ｌ１）キャッシュ）に存在するキャッシュラインは、第２レベルキャッシュ（例えば、レベル２（Ｌ２）キャッシュ）、又は、第３レベルキャッシュ（例えば、レベル３（Ｌ３）のキャッシュ）のうち少なくとも一方に存在する必要がある。第２に、第２レベルキャッシュからエビクトされたキャッシュラインは、第１レベルキャッシュから同じキャッシュラインのエビクションを必要としない。第３に、第３レベルキャッシュからのキャッシュラインのエビクションは、当該キャッシュラインが第２レベルキャッシュ内にも存在しない場合に、第１レベルキャッシュからの当該キャッシュラインのエビクションを必要とする。これは、システムが、キャッシュラインにアクセスするために、第２レベルキャッシュ及び第３レベルキャッシュにおいて既に検索を行っている場合に、上記のキャッシングポリシーによって、システムが、求められるキャッシュラインが第１レベルキャッシュ内にあるかどうかを知ることが保証されるという点で有利になり得る。本明細書に見られるように、キャッシュ内に「存在する」キャッシュラインは、キャッシュに記憶されることと、当該キャッシュ内で有効な状態を有することとの両方が行われるコピーを指すことに留意されたい。したがって、キャッシュで「無効」又は同様の状態がマークされているキャッシュラインのコピーは、当該キャッシュに「存在する」とはみなされない。
【０００５】
図１は、少なくともいくつかの実施形態による、ハイブリッド低レベルキャッシュインクルージョンポリシーを使用する処理システム１００を示す図である。処理システム１００は、計算複合体（compute complex）１０２と、キャッシュ階層１０４と、メモリコントローラ（ＭＣ）１０６と、サウスブリッジ１０８と、を含む。計算複合体１０２は、４つのプロセッサコア１１１，１１２，１１３，１１４等の１つ以上のプロセッサコアを含む。プロセッサコアは、例えば、中央処理装置（ＣＰＵ）コア、グラフィックス処理ユニット（ＧＰＵ）コア、デジタル信号プロセッサ（ＤＳＰ）コア、又は、これらの組み合わせを含む。計算複合体１０２のプロセッサコアの数は、４つより少なくてもよいし、４つより多くてもよいことを理解されたい。
【０００６】
メモリコントローラ１０６は、キャッシュ階層１０４とシステムメモリ１１６との間のインタフェースとして動作する。したがって、キャッシュ階層１０４にキャッシュされたデータは、通常、「キャッシュライン」と呼ばれるデータのブロックとして扱われ、システムメモリ１１６の物理アドレスを使用してメモリ階層にアドレス指定されるか、メモリ階層に配置される。キャッシュラインは、キャッシュ階層１０４からのメモリ要求に応じて、メモリコントローラ１０６によってシステムメモリ１１６からアクセスされ、キャッシュ階層１０４の１つ以上のキャッシュにインストール又はキャッシュされる。同様に、変更データを含むキャッシュラインがキャッシュ階層１０４からエビクトされ、システムメモリ１１６内で更新される必要がある場合、メモリコントローラ１０６は、このライトバック処理を管理する。サウスブリッジ１０８は、キャッシュ階層１０４と、メモリコントローラ１０６と、処理システム１００の１つ以上の周辺機器１１８（例えば、ネットワークインタフェース、キーボード、マウス、ディスプレイ及び他の入出力デバイス）と、の間のインタフェースとして動作する。
【０００７】
キャッシュ階層１０４は、第１レベル（Ｌ１）、第２レベル（Ｌ２）及び第３レベル（Ｌ３）のキャッシュを含む、３つ以上のレベルのキャッシュを含む。図１の例示的な実施形態では３つのレベルのみを含むが、他の実施形態では、キャッシュ階層１０４は、４つ以上のキャッシングレベルを含む。各キャッシングレベルは、当該レベルにおいて１つ以上のキャッシュを含む。システム１００では、計算複合体１０２は、プロセッサコア１１１〜１１４の対応する１つにそれぞれ関連付けられ、Ｌ１キャッシュ１２１，１２２，１２３，１２４として実装される、Ｌ１のプロセッサコア毎の小型のプライベートキャッシュを実装する。さらに、Ｌ２について、計算複合体１０２は、プロセッサコア１１１〜１１４にそれぞれ対応するＬ２キャッシュ１３１，１３２，１３３，１３４として実装される、プロセッサコア毎の大型のプライベートキャッシュを実装する。Ｌ２キャッシュ１３１〜１３４の各々は、対応するプロセッサコア専用であるが、キャッシュ階層１０４は、Ｌ２キャッシュ１３１〜１３４間のコヒーレンシを維持するように動作する。Ｌ２キャッシュ１３１〜１３４は、いくつかの実施形態では、ダイレクトマッピングされてもよいし、Ｎウェイセットアソシアティブキャッシュであってもよい。他の実施形態では、２つ以上のＬ１キャッシュが、単一のＬ２キャッシュを共有してもよい。Ｌ３キャッシングレベルについて、キャッシュ階層１０４は、計算複合体１０２のプロセッサコアによって共有され、ひいては、少なくともＬ２キャッシュ１３１〜１３４によって共有される、Ｌ３キャッシュ１４０を実装する。他の実施形態では、Ｌ３キャッシングレベルは、様々な組み合わせでＬ２キャッシュ１３１〜１３４によって共有される２つ以上のＬ３キャッシュを含むことができる。
【０００８】
キャッシュ階層１０４のキャッシュは、プロセッサコア１１１〜１１４によるアクセス及び操作のためのデータをキャッシュするのに使用される。通常に、低レベル（例えば、Ｌ１）キャッシュは、小さい記憶容量及び短いアクセスレイテンシを有する傾向がある一方で、高レベル（例えば、Ｌ３）キャッシュは、大きい記憶容量及び長いアクセスレイテンシを有する傾向がある。したがって、キャッシュ階層１０４のキャッシュ階層制御ロジック１４２によって管理されるキャッシュラインエビクションプロセス及びキャッシュラインインストールプロセスによって、キャッシュの記憶容量及びアクセスレイテンシを考慮して、キャッシュデータの利用を良好に最適化するように、キャッシュレベルの異なるキャッシュ間でデータのキャッシュラインが転送される。図１では、説明し易くするために、キャッシュ階層１０４の様々なキャッシュの外部の単一のブロックを使用して示されているが、典型的な実装では、キャッシュ階層制御ロジック１４２の個々のコンポーネントは、当該キャッシュのキャッシュ制御ロジックとして各キャッシュに実装され、ひいては、キャッシュ階層制御ロジック１４２は、キャッシュ階層１０４の各キャッシュに実装された個々のキャッシュ制御ロジックコンポーネントの集合を表すことを理解されたい。いくつかの実施形態では、キャッシュ階層制御ロジック１４２のロジックコンポーネントは、処理システム１００を実装する１つ以上の集積回路（ＩＣ）チップ上にハードコードされたロジックとして実装される。他の実施形態では、キャッシュ階層制御ロジック１４２のロジックコンポーネントの一部又は全ては、プログラマブルロジックとして、構成可能ロジック（例えば、ヒューズ構成可能ロジック）として、命令のプログラムを実行する１つ以上のプロセッサとして、又は、これらの組み合わせとして実装される。
【０００９】
動作において、キャッシュ階層制御ロジック１４２は、ハードコードされたロジック、プログラマブル要素（例えば、ヒューズ）、レジスタセット、又は、これらの組み合わせを介してキャッシュ階層制御ロジック１４２に対して定義された１つ以上のキャッシングポリシーに従って、システムメモリ１１６からフェッチされたデータのキャッシュラインをインストール及びエビクト（すなわち、除去）する。これらのキャッシングポリシーの１つは、他のキャッシングレベルにおけるキャッシュラインの存在状態に応じてキャッシュラインを選択的にエビクションするためのキャッシングポリシー１４４（本明細書では「ハイブリッド低レベルキャッシュインクルージョンポリシー１４４」と呼ばれる）を含む。ハイブリッド低レベルキャッシュインクルージョンポリシー１４４のガイドラインは、以下のように簡潔に要約される。（１）第１レベルキャッシュ（例えば、Ｌ１キャッシュ１２１〜１２４の何れか）に存在するキャッシュラインは、第２レベルキャッシュ（例えば、Ｌ２キャッシュ１３１〜１３４の何れか）又は第３レベルキャッシュ（例えば、Ｌ３キャッシュ１４０）のうち少なくとも１つにも存在する必要がある。（２）キャッシュラインが第２レベルキャッシュからエビクトされる場合、第１レベルキャッシュからのキャッシュラインのエビクションは必要ない（すなわち、キャッシュラインがＬ１キャッシュに存在する場合、キャッシュラインは、Ｌ２キャッシュからキャッシュラインがエビクトされた後でも、Ｌ１キャッシュ内に維持される）。（３）キャッシュラインが第３レベルキャッシュからエビクトされ、当該キャッシュラインがエビクトされた時点で第２レベルキャッシュ内に存在しない場合、キャッシュラインは、第１レベルキャッシュからもエビクトされる。この特定のキャッシングポリシーは、第２レベルキャッシュが第１レベルのキャッシュラインをエビクトする場合に、当該キャッシュラインをエビクトする必要がないので、パフォーマンスが向上する。包括的な第３レベル（Ｌ３）ポリシーでもこれを達成し得るが、キャッシュラインが重複するため、第３レベルキャッシュの容量が減少するであろう。
【００１０】
図２は、いくつかの実施形態による、キャッシュ階層制御ロジック１４２と、キャッシュ階層１０４からのキャッシュと、の実施例より詳細に示す図である。上述したように、各キャッシュレベルは、そのレベル内に１つ以上のキャッシュを有する。しかしながら、説明を容易にするために、各キャッシュレベルからの単一のキャッシュ（すなわち、Ｌ１キャッシュ１２１、Ｌ２キャッシュ１３１及びＬ３キャッシュ１４０）のみが図２に示されている。キャッシュ階層１０４の他のキャッシュも、以下に説明する方法で同様に構成されることが理解されるであろう。
【００１１】
Ｌ１キャッシュ１２１は、タグアレイ２０２と、データアレイ２０４と、Ｌ１制御ロジック２０６と、を含む。データアレイ２０４は、複数のデータエントリ２０８又はラインを含み、これらの各々は、システムメモリ１１６からの対応するデータセット（すなわち、「キャッシュライン」）を記憶するように構成されている。タグアレイ２０２は、同様に、複数のタグエントリ２０９を含み、複数のタグエントリ２０９の各々は、データアレイ２０４の対応するデータエントリ２０８に関連付けられており、対応するエントリ２０８に記憶されたキャッシュラインに関する様々な情報（例えば、アドレスフィールド２１０内のキャッシュラインに関連するアドレス（又はその一部）及びステータスフィールド２１１内に記憶された１つ以上のステータスビット等）を記憶するように構成されている。Ｌ２キャッシュ１３１及びＬ３キャッシュ１４０は、同様に構成される。このように、Ｌ２キャッシュ１３１は、タグアレイ２３２と、データアレイ２３４と、Ｌ２制御ロジック２３６と、を含み、Ｌ３キャッシュ１４０は、タグアレイ２４２と、データアレイ２４４と、Ｌ３制御ロジック２４６と、を含む。データアレイ２３４，２４４の各々は、データのキャッシュラインを記憶するために、複数のデータエントリ２３８，２４８を含み、タグアレイ２３２，２４２の各々は、データエントリ２３８，２４８に対応する複数のタグエントリ２３９，２４９を含む。タグエントリ２３９は、タグエントリ２０９と同様に、対応するキャッシュラインのアドレスを記憶するためのアドレスフィールド２４０と、対応するキャッシュラインのステータスビットを記憶するためのステータスフィールド２４１等を有する。同様に、タグエントリ２４９は、データエントリ２４８内に記憶された対応するキャッシュラインに関するアドレスフィールド２５０及びステータスフィールド２５１を有する。
【００１２】
Ｌ１制御ロジック２０６、Ｌ２制御ロジック２３６及びＬ３制御ロジック２４６は、キャッシュ階層制御ロジック１４２の少なくとも一部を共に構成する。上述したように、キャッシュ階層制御ロジック１４２は、キャッシングポリシー１４４（図１）を含むキャッシュ階層の１つ以上のキャッシングポリシーを実施するように動作する。そのため、制御ロジック２０６，２３６，２４６の各々は、図３〜図５を参照して以下により詳細に説明するように、ハイブリッド低レベルキャッシュインクルージョンポリシー１４４の対応する態様を実施するコヒーレンシロジック２５４，２５６，２５８を含む。この動作を容易にするために、いくつかの実施形態では、キャッシュ１２１，１３１，１４０のうち１つ以上は、キャッシュに記憶された各キャッシュラインがキャッシュ階層１０４の他の１つ以上のキャッシュにも記憶されているかどうかを識別するプレゼンス情報を記憶する。一実施形態では、このプレゼンス情報は、キャッシュのタグアレイ内に、又は、これに関連して記憶される。例示すると、Ｌ１キャッシュ１２１のタグアレイ２０２のタグエントリ２０９の各々は、他のキャッシュ内のキャッシュラインのストレージに関するキャッシュラインの共存（co-presence）情報を記憶するプレゼンス（又は、位置「ＬＯＣ」）フィールド２６２を含む。
【００１３】
例示すると、一実施形態では、プレゼンスフィールド２６２は、対応するキャッシュラインがＬ２キャッシュ又はＬ３キャッシュの何れかで見つかるかどうかを示す単一ビットフィールド２６３として構成される。したがって、単一ビットフィールド２６３が０に設定されている場合、Ｌ１キャッシュ１２１の対応するデータエントリ２０８内のキャッシュラインがＬ２キャッシュに存在することを示し、一方、単一ビットフィールド２６３が１に設定されている場合、キャッシュラインがＬ３キャッシュに存在することを示す。他の実施形態では、プレゼンスフィールド２６２は、対応するキャッシュラインがＬ２キャッシュ又はＬ３キャッシュのうち何れで見つかるかどうかを示し、及び、キャッシュラインのコピーを記憶する特定のキャッシュレベルを識別する、２ビットフィールド２６５として構成されている。例示すると、値１０は、キャッシュラインのコピーがＬ２キャッシュに存在するが、Ｌ３キャッシュに存在しないことを示し、値０１は、キャッシュラインのコピーがＬ２キャッシュに存在しないが、Ｌ３キャッシュに存在することを示し、値１１は、Ｌ２キャッシュ及びＬ３キャッシュの両方がキャッシュラインのコピーを記憶することを示している。さらに他の実施形態では、プレゼンスフィールド２６２は、キャッシュラインのコピーが見つかる可能性のある下位キャッシュレベルと、キャッシュラインを記憶する下位キャッシュレベルの各々における特定のキャッシュウェイとの両方を識別する、複数のビットフィールド２６７として実装される。
【００１４】
いくつかの実施形態では、Ｌ３キャッシュ１４０は、対応するタグエントリ２３９のキャッシュラインが高キャッシュレベルに存在するかどうかを示すのに使用されるプレゼンスフィールド２６４を有するタグアレイ２４２のタグエントリ２４９で同様に構成される。いくつかの実施形態では、プレゼンスフィールド２６４は、プレゼンスフィールド２６２と同様に、単一ビットフィールド２７３として構成されている。単一ビットフィールド２７３は、キャッシュラインのコピーがＬ１キャッシュ又はＬ２キャッシュの何れに存在するかを単純に識別するが、２つのより高いキャッシュレベルの何れか又はキャッシュラインを記憶する特定のキャッシュを識別しない。他の実施形態では、プレゼンスフィールド２６４は、２ビットフィールド２７５として構成されている。２ビットフィールド２７５は、キャッシュラインのコピーが高キャッシュレベルに存在するかどうかを識別するとともに、キャッシュラインのコピーを含む高キャッシュレベルを識別する。さらに他の実施形態では、プレゼンスフィールド２６４は、何れの高キャッシュレベルがキャッシュラインのコピーを記憶しているかを識別するだけでなく、特定のキャッシュも同様に識別するマルチビットフィールド２７７として実装される。同様に、Ｌ２キャッシュ１３１は、Ｌ１キャッシュレベル及びＬ３キャッシュレベルの一方又は両方の対応するキャッシュラインの存在を識別するために、タグエントリ２３９内のプレゼンスフィールド２６６、又は、単一ビットフィールド２８３、２ビットフィールド２８５若しくはマルチビットフィールド２８７のうちの１つとして構成されたＬ２キャッシュ１３１内の他の場所で構成されてもよい。
【００１５】
プレゼンスフィールド２６２，２６４，２６６によって表されるプレゼンス情報は、特定のキャッシュへのキャッシュラインのインストールに応じて、又は、キャッシュからのキャッシュラインのエビクトに応じて、ハイブリッド低レベルキャッシュインクルージョンポリシー１４４をまとめて実施する、各々のコヒーレンシロジック２５４，２５６，２５８によって使用される。このため、コヒーレンシロジック２５４，２５６，２５８は、キャッシングポリシー１４４によって指定されたキャッシングガイドラインに従ってキャッシュラインのコピーをターゲットキャッシュにインストールするように又はキャッシュラインのコピーをターゲットキャッシュからエビクトするように、様々なキャッシュ間でインストールメッセージ及びエビクションメッセージを通信するために、メッセージングインターコネクト２９０を利用する。図３〜図５の各々は、コヒーレンシロジック２５４，２５６，２５８の動作の例示的な方法を示している。
【００１６】
図３は、いくつかの実施形態による、Ｌ１キャッシュ１２１等のＬ１キャッシュにおけるキャッシングポリシー１４４の対応する態様を実施する方法３００を示す図である。方法３００は、ブロック３０２において開始し、システムメモリ１１６からデータのキャッシュラインをフェッチし、キャッシュラインをキャッシュ階層１０４にインストールする。キャッシュラインは、キャッシュラインに含まれるデータを参照する命令の最初の実行に応じたデマンドフェッチとしてフェッチされるか、投機的プリフェッチ（speculative prefetch）動作の一部としてシステムメモリ１１６からフェッチされる。通常、システムメモリ１１６からフェッチされたキャッシュラインは、先ず、Ｌ２キャッシュ１３１又はＬ３キャッシュ１４０等の低レベルキャッシュにインストールされる。ある時点で、システムメモリ１１６からのキャッシュラインの最初のフェッチとして、又は、その後、プロセッサコアによってキャッシュラインに記憶されたデータに関する要求の一部として、キャッシュラインのコピーが、ブロック３０４においてＬ１キャッシュ（例えば、Ｌ１キャッシュ１２１）にインストールされる。
【００１７】
ブロック３０５において、最初のキャッシュラインのインストールの一部として、及び、Ｌ１キャッシュへのキャッシュラインのインストールの一部として、キャッシュ階層１０４のキャッシュは、キャッシュ階層１０４の１つ以上のキャッシュ内のキャッシュラインの存在を反映するように、各々のプレゼンス情報フィールドを更新する。一実施形態では、位置ステータスの更新は、メッセージングインターコネクト２９０を介して様々なキャッシュのコヒーレンシロジック間で送信されるコヒーレンシメッセージに応じて行われる。例えば、キャッシュラインをＬ１キャッシュ１２１にインストールすると、Ｌ１制御ロジック２０６のコヒーレンシロジック２５４をトリガし、Ｌ１キャッシュ１２１におけるキャッシュラインのインストールをキャッシュ階層１０４に通知するように、当該キャッシュラインのコヒーレンシメッセージをキャッシュ階層１０４の他のキャッシュにブロードキャストする。このコヒーレンシメッセージを受信したことに応じて、Ｌ２制御ロジック２３６のコヒーレンシロジック２５６は、（Ｌ２キャッシュ１３１に記憶される場合に）当該キャッシュラインのタグエントリ２３９にアクセスし、キャッシュラインのコピーがＬ１キャッシュレベルに記憶されたことを反映するようにプレゼンスフィールド２６６を更新し、このように構成されている場合、特定のＬ１キャッシュが現在キャッシュラインを記憶している。コヒーレンシロジック２５８は、Ｌ３キャッシュ１４０においてコヒーレンシメッセージを受信すると、同様の方法で、対応するプレゼンスフィールド２６４を更新する。
【００１８】
ハイブリッド低レベルキャッシュインクルージョンポリシー１４４の態様又はガイドラインの１つは、キャッシュラインがＬ１キャッシュに記憶される場合、当該キャッシュラインのコピーもＬ２キャッシュ又はＬ３キャッシュのうち少なくとも１つに記憶される必要があることを想起されたい。したがって、ブロック３０６において、キャッシュラインを記憶するＬ１キャッシュのコヒーレンシロジック（例えば、コヒーレンシロジック２５４）は、当該キャッシュラインのプレゼンスフィールド２６２をチェックして、キャッシュラインがＬ２又はＬ３キャッシングレベルでキャッシュに存在するかどうかを判別する。存在する場合、方法３００は、次のキャッシュラインがキャッシュ階層１０４にインストールされるまで、ブロック３０８において終了する。そうでなく、キャッシュラインがＬ２キャッシュ又はＬ３キャッシュに存在しない場合、ブロック３１０において、Ｌ１キャッシュのコヒーレンシロジックは、Ｌ１キャッシュによってアクセス可能な低レベルキャッシュにインストールメッセージを送信して、キャッシュラインのコピーをインストールするように当該低レベルキャッシュに指示することによって、低レベルキャッシュにおけるキャッシュラインのコピーのインストールをトリガする。概して、次の低レベルが使用され、したがって、例えば、Ｌ１キャッシュ１２１は、ブロック３１０において、キャッシュラインのコピーをインストールするようにＬ２キャッシュ１３１に指示する。キャッシュラインのコピーをインストールした結果、ブロック３１２において、キャッシュラインのコピーを受信して記憶する低レベルキャッシュは、コヒーレンシメッセージを他のキャッシュにブロードキャストし、これにより、他のキャッシュは、ローカルプレゼンス情報ストアを適宜更新する。
【００１９】
図４は、いくつかの実施形態による、Ｌ２キャッシュ１３１等のＬ２キャッシュにおいてハイブリッド低レベルキャッシュインクルージョンポリシー１４４の対応する態様を実施する方法４００を示す図である。方法４００は、ブロック４０２において開始し、Ｌ２キャッシュからのキャッシュラインのエビクションを行う。キャッシュラインのエビクションは、通常、Ｌ２キャッシュのデータアレイ２３４がオーバーサブスクライブしたことに応じてトリガされる。従来のキャッシングポリシーでは、Ｌ２キャッシュからのキャッシュラインのエビクションは、Ｌ２キャッシュに関連する全てのＬ１キャッシュからの同じキャッシュラインのエビクションを必要とする。しかしながら、上述したように、ハイブリッド低レベルキャッシュインクルージョンポリシー１４４の１つのガイドラインは、Ｌ２キャッシングレベルからのキャッシュラインエビクションが、結果として、Ｌ１キャッシングレベルからの同じキャッシュラインのエビクションを必要としないことである。したがって、ブロック４０４で表されるように、ブロック４０２においてＬ２キャッシュからエビクトされたキャッシュラインは、ハイブリッド低レベルキャッシュインクルージョンポリシー１４４に従って、Ｌ１キャッシュ内に維持される。さらに、Ｌ２キャッシュにおけるキャッシュラインエビクションの結果として、Ｌ２キャッシュは、ブロック４０６において、コヒーレンシメッセージを他のキャッシュにブロードキャストして、キャッシュラインのエビクションを反映し、他のキャッシュがローカルプレゼンス情報ストアを適宜更新するようにする。
【００２０】
図５は、いくつかの実施形態による、Ｌ３キャッシュ１４０等のＬ３キャッシュにおいてハイブリッド低レベルキャッシュインクルージョンポリシー１４４の対応する態様を実施する方法５００を示す図である。方法５００は、ブロック５０２において開始し、キャッシュラインがエビクトされることをＬ３キャッシュが判別する。したがって、Ｌ３制御ロジック（例えば、Ｌ３制御ロジック２４６）は、キャッシュラインを、キャッシュラインに対応するタグエントリのステータスフィールドにおいて無効としてマークし、Ｌ３キャッシュがキャッシュラインをエビクトしたことを示すコヒーレンシメッセージを、キャッシュ階層１０４の他のキャッシュに送信する。いくつかの実施態様では、Ｌ３キャッシュからのキャッシュラインのエビクションは、キャッシュラインが変更されると、当該キャッシュラインが元のデータを上書きするようにシステムメモリ１１６に提供されることをもたらす。さらに、ブロック５０３において、キャッシュ階層１０４の他のキャッシュは、Ｌ３キャッシュによって送信されるコヒーレンシメッセージに応じて、そのローカル位置ストアを更新する。
【００２１】
上述したように、ハイブリッド低レベルキャッシュインクルージョンポリシー１４４の一態様又はガイドラインは、Ｌ３キャッシュレベルからのキャッシュラインのエビクションは、当該キャッシュラインがＬ２キャッシュにも存在しない場合、結果として、Ｌ１キャッシュレベルからのキャッシュラインのエビクションを必要とする。このガイドラインは、キャッシュ階層１０４が、Ｌ２キャッシュ及びＬ３キャッシュを検索することによって、Ｌ１キャッシュの検索を必要とすることなく、キャッシュラインがＬ１キャッシュに厳密に存在しないことを当該キャッシュラインへ後続のアクセスで判別することを可能にし、これにより、電力を節約し、パフォーマンスを向上させる。したがって、ブロック５０４において、キャッシュ階層１０４は、Ｌ３キャッシュからエビクトされたキャッシュラインがＬ２キャッシュに存在するかどうかを判別する。いくつかの実施態様では、これは、Ｌ３キャッシュ内の対応するタグエントリ２４９のプレゼンスフィールド２６４を使用して、キャッシュラインをエビクトしたＬ３キャッシュのＬ３制御ロジック２４６のコヒーレンシロジック２５８によって判別される。他の実施形態では、Ｌ２キャッシュ内のエビクトされたキャッシュラインの存在は、Ｌ２キャッシュの対応するタグエントリ２３９のプレゼンスフィールド２６６を使用して、キャッシュ階層の１つ以上のＬ２キャッシュのＬ２制御ロジック２３６のコヒーレンシロジック２５６によってまとめて判別される。さらに他の実施形態では、Ｌ２キャッシュ内のエビクトされたキャッシュラインの存在は、キャッシュ階層１０４の１つ以上のＬ１キャッシュのＬ１制御ロジック２０６のコヒーレンシロジック２５４によってまとめて判別される。
【００２２】
キャッシュラインがＬ２キャッシュ内に存在すると識別された場合、ブロック５０６において、キャッシュラインがＬ２キャッシュ内に維持され、方法５００の進行中の反復が終了する。そうではなく、エビクトされたキャッシュラインのコピーがＬ２キャッシュレベルで見つからない場合、ブロック５０８において、キャッシュ階層１０４は、同様に、キャッシュラインをＬ１キャッシュレベルからエビクトする。Ｌ２キャッシュレベルでのエビクトされたキャッシュラインの存在が、ブロック５０４においてＬ１キャッシュによって行われたものである場合、ブロック５０８において、Ｌ１キャッシュのコヒーレンシロジック２５４は、各々のデータアレイ２０４からのキャッシュラインのエビクションをトリガする。そうではなく、Ｌ２キャッシュレベルでのエビクトされたキャッシュラインの存在が、Ｌ２キャッシュレベル又はＬ３キャッシュレベルで行われたものである場合、当該低キャッシュレベルのキャッシュは、メッセージングインターコネクト２９０を介して、エビクションメッセージをキャッシュ階層１０４の１つ以上のＬ１キャッシュに送信し、これに応じて、Ｌ１キャッシュは、識別されたキャッシュラインをエビクトする。さらに、ブロック５１０において、キャッシュ階層１０４のキャッシュは、キャッシュラインが既にＬ１キャッシュレベルに存在しないことを反映するように、１つ以上のＬ１キャッシュからのキャッシュラインのコピーのエビクションに応じて送信されたエビクションメッセージに応じて、ローカルプレゼンス情報ストアを更新する。
【００２３】
一態様によれば、データ処理システムは、１つ以上のプロセッサコアと、キャッシュ階層と、を含む。キャッシュ階層は、第１レベルキャッシュと、第２レベルキャッシュと、第３レベルキャッシュと、キャッシュ階層制御ロジックと、を有する。キャッシュ階層制御ロジックは、第１レベルキャッシュにキャッシュされたキャッシュラインの各々が、第２レベルキャッシュ及び第３レベルキャッシュのうち少なくとも一方にキャッシュされたキャッシュラインのコピーを有するキャッシングポリシーを実施するように構成されている。いくつかの実施形態では、キャッシングポリシーは、第２レベルキャッシュからのキャッシュラインのエビクションが、第１レベルキャッシュからのキャッシュラインのコピーのエビクションをトリガしないことをさらに提供する。いくつかの実施形態では、キャッシングポリシーは、第３レベルキャッシュからのキャッシュラインのエビクションが、当該キャッシュラインが第２レベルキャッシュに存在しない場合に、当該キャッシュシュラインのコピーを第１レベルキャッシュからエビクトするようにキャッシュ階層制御ロジックをトリガすることをさらに提供する。キャッシングポリシーは、第３レベルキャッシュからのキャッシュラインのエビクションが、当該キャッシュラインのコピーが第２レベルキャッシュに存在しない場合に、当該キャッシュラインのコピーを第１レベルキャッシュからエビクトし、当該キャッシュラインのコピーが第２レベルキャッシュに存在する場合に、当該キャッシュラインのコピーを第１レベルキャッシュ内に維持するようにキャッシュ階層ロジックをトリガすることをさらに提供する。
【００２４】
いくつかの実施形態では、第３レベルキャッシュは、プレゼンスフィールドの第１セットにアクセスして、第３レベルキャッシュの何れのキャッシュラインが第１レベルキャッシュ又は第２レベルキャッシュにも記憶されているのかを識別する第１プレゼンス情報を記憶する。いくつかの実施形態では、第１プレゼンス情報は、対応するキャッシュラインが第１レベルキャッシュ又は第２レベルキャッシュの何れに存在するかどうかのみを識別する。他の実施形態では、第１プレゼンス情報は、対応するキャッシュラインが第１レベルキャッシュに存在するかどうかと、対応するキャッシュラインが第２レベルキャッシュに存在するかどうかと、を識別する。いくつかの実施形態では、キャッシュ階層は、複数の第１レベルキャッシュと、複数の第２レベルキャッシュと、を含み、第１プレゼンス情報は、対応するキャッシュラインが複数の第１レベルキャッシュのうち何れの第１レベルキャッシュに記憶されているか、又は、対応するキャッシュラインが複数の第２レベルキャッシュのうち何れの第２レベルキャッシュに記憶されているかを識別する。プレゼンスフィールドの第１セットは、第３レベルキャッシュのタグアレイの一部とすることができる。いくつかの実施形態では、第１レベルキャッシュは、プレゼンスフィールドの第２セットにアクセスして、第１レベルキャッシュ内の何れのキャッシュラインが第２レベルキャッシュ又は第３レベルキャッシュにも記憶されているかを識別する第２プレゼンス情報を記憶する。いくつかの実施形態では、第２プレゼンス情報は、対応するキャッシュラインが第２レベルキャッシュ又は第３レベルキャッシュの何れに存在するかどうかのみを識別する。他の実施形態では、第２プレゼンス情報は、対応するキャッシュラインが第２レベルキャッシュにあるかどうかと、対応するキャッシュラインが第３レベルキャッシュにあるかどうかと、を識別する。キャッシュ階層は、複数の第２レベルキャッシュを含むことができ、第２プレゼンス情報は、対応するキャッシュラインが複数の第２レベルキャッシュのうち何れの第２レベルキャッシュに記憶されているかを識別することができる。
【００２５】
別の態様によれば、方法は、キャッシュラインをメモリからフェッチすることと、キャッシュ階層のキャッシュ階層制御ロジックによって、キャッシュラインをキャッシュ階層の第１レベルキャッシュに記憶することと、キャッシュ階層制御ロジックによって、第１レベルキャッシュ内のキャッシュラインの各々がキャッシュ階層の第２レベルキャッシュ又は第３レベルキャッシュのうち少なくとも一方にも記憶されるキャッシングポリシーに応じて、キャッシュラインを第２レベルキャッシュに記憶することと、キャッシュ階層制御ロジックによって、キャッシュラインを第１レベルキャッシュ内に維持しながら、キャッシュラインを第２レベルキャッシュからエビクトすることと、を含む。いくつかの実施形態では、キャッシュ階層制御ロジックによって、キャッシュラインを第２レベルキャッシュに記憶することは、キャッシュ階層制御ロジックによって、第１レベルキャッシュに記憶されたプレゼンス情報に基づいて、第１レベルキャッシュ及び第２レベルキャッシュの何れもキャッシュラインを現在記憶していないことを判別することを含み、プレゼンス情報は、第１レベルキャッシュに記憶されたキャッシュライン毎に、キャッシュラインが第２レベルキャッシュ又は第３レベルキャッシュのうち少なくとも一方にも記憶されているかどうかを識別する。いくつかの実施形態では、プレゼンス情報は、キャッシュラインが第２レベルキャッシュに記憶されているか、又は、第３レベルキャッシュに記憶されているかどうかを識別する。他の実施形態では、キャッシュ階層は、複数の第２レベルキャッシュを含み、プレゼンス情報は、複数の第２レベルキャッシュのうち、キャッシュラインを記憶する特定の第２レベルキャッシュを識別する。
【００２６】
いくつかの実施形態では、キャッシュラインを第２レベルキャッシュからエビクトすることは、キャッシュラインを第３レベルキャッシュに記憶すること、又は、キャッシュラインの変更された値でメモリを更新すること、の何れかを含む。したがって、方法は、キャッシュ階層制御ロジックによって、キャッシュラインを第３レベルキャッシュからエビクトすることと、キャッシュ階層制御ロジックによって、キャッシュラインが第２レベルキャッシュ内に存在するかどうかを判別することと、キャッシングポリシーに従うキャッシュ階層制御ロジックによって、第３レベルキャッシュからのキャッシュラインのエビクションに応じて、及び、キャッシュラインが第２レベルキャッシュ内に存在しないことを判別したことに応答して、キャッシュラインを第１レベルキャッシュからエビクトすることと、を含むことができる。いくつかの実施形態では、キャッシュラインが第２レベルキャッシュ内に存在するかどうかを判別することは、第３レベルキャッシュに記憶されたプレゼンス情報に基づいて行われ、プレゼンス情報は、第３レベルキャッシュに記憶されたキャッシュライン毎に、キャッシュラインが第２レベルキャッシュ内にも存在するかどうかを示している。他の実施形態では、キャッシュ階層は、複数の第２レベルキャッシュを含み、プレゼンス情報は、複数の第２レベルキャッシュのうち、キャッシュラインを記憶する特定の第２レベルキャッシュを識別する。
【００２７】
別の態様によれば、方法は、キャッシュラインをメモリからフェッチすることと、キャッシングポリシーに従って、キャッシュラインをキャッシュ階層にキャッシュすることであって、キャッシュ階層は、第１レベルキャッシュと、第２レベルキャッシュと、第３レベルキャッシュと、を有する、ことと、を含む。キャッシングポリシーは、第１レベルキャッシュにキャッシュされたキャッシュラインが、第２レベルキャッシュ又は第３レベルキャッシュのうち少なくとも一方にも記憶されていることと、第２レベルキャッシュからのキャッシュラインのエビクションが、第１レベルキャッシュからの当該キャッシュラインのエビクションを必要としないことと、キャッシュラインが第２レベルキャッシュにもキャッシュされない場合、第３レベルキャッシュからのキャッシュラインのエビクションが、当該キャッシュラインを第１レベルキャッシュからもエビクトすることと、を提供する。いくつかの実施形態では、キャッシュ階層制御ロジックは、第１レベルキャッシュ、第２レベルキャッシュ又は第３レベルキャッシュのうち１つ以上に記憶されたプレゼンス情報を使用してキャッシングポリシーを実施し、所定のキャッシュレベルのキャッシュのプレゼンス情報は、所定のキャッシュレベルのキャッシュに記憶されたキャッシュラインが他の１つ以上のキャッシュレベルのキャッシュに記憶されているかどうかを示している。
【００２８】
いくつかの実施形態では、上述した装置及び技術は、図１〜図５を参照して上述したシステム１００等のように、１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムにおいて実装される。これらのＩＣデバイスの設計及び製造には、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００２９】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００３０】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００３１】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００３２】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2021500655.tif 000003
【図２】
2021500655.tif 000004
【図３】
2021500655.tif 000005
【図４】
2021500655.tif 000006
【図５】
2021500655.tif 000007
【手続補正書】
【提出日】令和2年6月16日(2020.6.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理システムであって、
１つ以上のプロセッサコアと、
キャッシュ階層と、を備え、
前記キャッシュ階層は、
第１レベルキャッシュと、
第２レベルキャッシュと、
第３レベルキャッシュと、
キャッシュ階層制御ロジックと、を備え、
前記キャッシュ階層制御ロジックは、
前記第１レベルキャッシュにキャッシュされたキャッシュラインの各々が、前記第２レベルキャッシュ及び前記第３レベルキャッシュのうち少なくとも一方にキャッシュされた前記キャッシュラインのコピーを有するキャッシングポリシーであって、前記第３レベルキャッシュからのキャッシュラインのエビクションが、前記キャッシュラインが前記第２レベルキャッシュに存在しない場合に、前記キャッシュラインのコピーを前記第１レベルキャッシュからエビクトするように前記キャッシュ階層制御ロジックをトリガするキャッシングポリシーを実施するように構成されている、
データ処理システム。
【請求項２】
前記キャッシングポリシーは、前記第２レベルキャッシュからのキャッシュラインのエビクションが、前記第１レベルキャッシュからの前記キャッシュラインのコピーのエビクションをトリガしないことをさらに提供する、
請求項１のデータ処理システム。
【請求項３】
前記キャッシングポリシーは、
前記第３レベルキャッシュからのキャッシュラインのエビクションが、
前記キャッシュラインのコピーが前記第２レベルキャッシュに存在する場合に、前記キャッシュラインのコピーを前記第１レベルキャッシュ内に維持する、ように前記キャッシュ階層ロジックをトリガすることをさらに提供する、
請求項１のデータ処理システム。
【請求項４】
前記第３レベルキャッシュは、プレゼンスフィールドの第１セットにアクセスして、前記第３レベルキャッシュの何れのキャッシュラインが前記第１レベルキャッシュ又は前記第２レベルキャッシュにも記憶されているのかを識別する第１プレゼンス情報を記憶する、
請求項３のデータ処理システム。
【請求項５】
前記第１プレゼンス情報は、対応するキャッシュラインが前記第１レベルキャッシュ又は前記第２レベルキャッシュの何れに存在するかどうかのみを識別する、
請求項４のデータ処理システム。
【請求項６】
前記第１プレゼンス情報は、対応するキャッシュラインが前記第１レベルキャッシュに存在するかどうかと、前記対応するキャッシュラインが前記第２レベルキャッシュに存在するかどうかと、を識別する、
請求項４のデータ処理システム。
【請求項７】
前記キャッシュ階層は、複数の第１レベルキャッシュと、複数の第２レベルキャッシュと、を含み、
前記第１プレゼンス情報は、対応するキャッシュラインが前記複数の第１レベルキャッシュのうち何れの第１レベルキャッシュに記憶されているか、又は、対応するキャッシュラインが前記複数の第２レベルキャッシュのうち何れの第２レベルキャッシュに記憶されているかを識別する、
請求項４のデータ処理システム。
【請求項８】
前記プレゼンスフィールドの第１セットは、前記第３レベルキャッシュのタグアレイの一部である、
請求項４のデータ処理システム。
【請求項９】
前記第１レベルキャッシュは、プレゼンスフィールドの第２セットにアクセスして、前記第１レベルキャッシュ内の何れのキャッシュラインが前記第２レベルキャッシュ又は前記第３レベルキャッシュにも記憶されているかを識別する第２プレゼンス情報を記憶する、
請求項４のデータ処理システム。
【請求項１０】
前記第２プレゼンス情報は、対応するキャッシュラインが前記第２レベルキャッシュ又は前記第３レベルキャッシュの何れに存在するかどうかのみを識別する、
請求項９のデータ処理システム。
【請求項１１】
前記第２プレゼンス情報は、対応するキャッシュラインが前記第２レベルキャッシュに存在するかどうかと、前記対応するキャッシュラインが前記第３レベルキャッシュに存在するかどうかと、を識別する、
請求項９のデータ処理システム。
【請求項１２】
前記キャッシュ階層は、複数の第２レベルキャッシュを含み、
前記第２プレゼンス情報は、対応するキャッシュラインが前記複数の第２レベルキャッシュのうち何れの第２レベルキャッシュに記憶されているかを識別する、
請求項９のデータ処理システム。
【請求項１３】
前記プレゼンスフィールドの第２セットは、前記第１レベルキャッシュのタグアレイの一部である、
請求項９のデータ処理システム。
【請求項１４】
キャッシュラインをメモリからフェッチすることと、
キャッシュ階層のキャッシュ階層制御ロジックによって、前記キャッシュラインを前記キャッシュ階層の第１レベルキャッシュに記憶することと、
前記キャッシュ階層制御ロジックによって、前記第１レベルキャッシュ内のキャッシュラインの各々が前記キャッシュ階層の第２レベルキャッシュ又は第３レベルキャッシュのうち少なくとも一方にも記憶されるキャッシングポリシーに応じて、前記キャッシュラインを前記第２レベルキャッシュに記憶することと、
前記キャッシュ階層制御ロジックによって、前記キャッシュラインを前記第１レベルキャッシュ内に維持しながら、前記キャッシュラインを前記第２レベルキャッシュからエビクトすることと、
前記キャッシュ階層制御ロジックによって、前記キャッシュラインを前記第３レベルキャッシュからエビクトすることと、
前記キャッシュ階層制御ロジックによって、前記キャッシュラインが前記第２レベルキャッシュ内に存在するかどうかを判別することと、
前記キャッシングポリシーに従う前記キャッシュ階層制御ロジックによって、前記第３レベルキャッシュからの前記キャッシュラインのエビクションに応じて、及び、前記キャッシュラインが前記第２レベルキャッシュ内に存在しないことを判別したことに応じて、前記キャッシュラインを前記第１レベルキャッシュからエビクトすることと、を含み、
前記キャッシュラインを前記第２レベルキャッシュからエビクトすることは、
前記キャッシュラインを前記第３レベルキャッシュに記憶すること、又は、前記キャッシュラインの変更された値で前記メモリを更新すること、の何れかを含む、
方法。
【請求項１５】
前記キャッシュ階層制御ロジックによって、前記キャッシュラインを前記第２レベルキャッシュに記憶することは、
前記キャッシュ階層制御ロジックによって、前記第１レベルキャッシュに記憶されたプレゼンス情報に基づいて、前記第１レベルキャッシュ及び前記第２レベルキャッシュの何れも前記キャッシュラインを現在記憶していないことを判別することであって、前記プレゼンス情報は、前記第１レベルキャッシュに記憶されたキャッシュライン毎に、前記キャッシュラインが前記第２レベルキャッシュ又は前記第３レベルキャッシュのうち少なくとも一方にも記憶されているかどうかを識別する、ことを含む、
請求項１４の方法。
【請求項１６】
前記プレゼンス情報は、前記キャッシュラインが前記第２レベルキャッシュに記憶されるか、又は、前記第３レベルキャッシュに記憶されているかどうかを識別する、
請求項１５の方法。
【請求項１７】
前記キャッシュ階層は、複数の第２レベルキャッシュを含み、
前記プレゼンス情報は、前記複数の第２レベルキャッシュのうち、前記キャッシュラインを記憶する特定の第２レベルキャッシュを識別する、
請求項１６の方法。
【請求項１８】
前記キャッシュラインが前記第２レベルキャッシュ内に存在するかどうかを判別することは、前記第３レベルキャッシュに記憶されたプレゼンス情報に基づいて行われ、前記プレゼンス情報は、前記第３レベルキャッシュに記憶されたキャッシュライン毎に、前記キャッシュラインが前記第２レベルキャッシュ内にも存在するかどうかを示している、
請求項１４の方法。
【請求項１９】
前記キャッシュ階層は、複数の第２レベルキャッシュを含み、
前記プレゼンス情報は、前記複数の第２レベルキャッシュのうち、前記キャッシュラインを記憶する特定の第２レベルキャッシュを識別する、
請求項１８の方法。
【国際調査報告】
2021500655.tif 000008
2021500655.tif 000009