IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-500824キャッシュディレクトリを管理するための方法及び装置
<>
  • 特表-キャッシュディレクトリを管理するための方法及び装置 図1
  • 特表-キャッシュディレクトリを管理するための方法及び装置 図2
  • 特表-キャッシュディレクトリを管理するための方法及び装置 図3
  • 特表-キャッシュディレクトリを管理するための方法及び装置 図4
  • 特表-キャッシュディレクトリを管理するための方法及び装置 図5
  • 特表-キャッシュディレクトリを管理するための方法及び装置 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-10
(54)【発明の名称】キャッシュディレクトリを管理するための方法及び装置
(51)【国際特許分類】
   G06F 12/0817 20160101AFI20231227BHJP
   G06F 12/0897 20160101ALI20231227BHJP
【FI】
G06F12/0817
G06F12/0897 110
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023537493
(86)(22)【出願日】2021-12-20
(85)【翻訳文提出日】2023-08-01
(86)【国際出願番号】 US2021064323
(87)【国際公開番号】W WO2022146738
(87)【国際公開日】2022-07-07
(31)【優先権主張番号】17/135,657
(32)【優先日】2020-12-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ブランドン ケー. ポッター
(72)【発明者】
【氏名】マルコ スクルバック
(72)【発明者】
【氏名】セルゲイ ブラゴドゥロフ
(72)【発明者】
【氏名】キショール パニヤムルティー
(72)【発明者】
【氏名】ナサニエル モリス
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK13
5B205NN75
(57)【要約】
方法及び装置は、キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合を監視し、メモリマネージャのためのキャッシュディレクトリ犠牲エントリ情報を生成する。いくつかの例では、メモリマネージャは、生成されたキャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、将来のキャッシュディレクトリ競合を低減する。いくつかの例では、スケーラブルデータファブリックは、キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合の監視を遂行し、キャッシュディレクトリ犠牲エントリ情報を生成するハードウェア制御論理を含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
キャッシュディレクトリを管理するための方法であって、
ハードウェア制御論理が、前記キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合を監視することと、
前記ハードウェア制御論理が、メモリマネージャのためのキャッシュディレクトリ犠牲エントリ情報を生成することと、を含む、
方法。
【請求項2】
生成された前記キャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更することを含む、
請求項1の方法。
【請求項3】
前記キャッシュディレクトリは、ページレベルセットアソシアティブキャッシュディレクトリであり、各エントリは、メモリのページに対応しており、キャッシュディレクトリ犠牲エントリ情報を生成することは、前記退避競合のうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報をメモリにログ記録することを含む、
請求項1の方法。
【請求項4】
前記キャッシュディレクトリ内の退避競合を監視することは、前記キャッシュディレクトリから最も直近に退避したエントリを記憶する競合犠牲バッファを読み出すことを含む、
請求項3の方法。
【請求項5】
ログ記録することは、前記退避したエントリのうち少なくとも1つに関する前記キャッシュディレクトリ犠牲エントリ情報を、仮想メモリマネージャによって読み出し可能なカーネルメモリに記憶することを含む、
請求項3の方法。
【請求項6】
ログ記録することは、前記退避したエントリのうち少なくとも1つに関する前記キャッシュディレクトリ犠牲エントリ情報を、前記制御論理によって読み出し可能なログバッファに記憶することを含む、
請求項3の方法。
【請求項7】
生成された前記キャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページの物理アドレスを異なるメモリチャネルに割り当てることによって、前記退避したエントリのうち少なくとも1つに関する生成された前記キャッシュディレクトリ犠牲エントリ情報に基づいて、メモリチャネルの輻輳を低減することを含む、
請求項1の方法。
【請求項8】
前記メモリマネージャが、前記ページレベルセットアソシアティブキャッシュディレクトリ内の異なるセットへの移動をもたらすように、メモリのページに対するページレベル物理アドレス割り当てを変更することよって、キャッシュディレクトリ競合を低減することを含む、
請求項3の方法。
【請求項9】
退避競合の連続ログ記録を提供する第1のモードと、条件データが満たされたことに基づいて退避のログ記録を提供する第2のモードと、を含むキャッシュ退避監視のマルチモード動作と、
ログ記録される競合退避の数のサンプリングレートと、
記憶される退避競合の数を設定するカウント設定と、
のうち少なくとも1つを表すデータを用いて、1つ以上の構成レジスタを設定することを含む、
請求項1の方法。
【請求項10】
生成することは、前記ハードウェア制御論理が、前記キャッシュディレクトリ内で検出された複数の退避競合に関するキャッシュディレクトリ犠牲エントリ情報を生成することを含む、
請求項1の方法。
【請求項11】
装置であって、
キャッシュ階層にアクセスする1つ以上のプロセッサと、
キャッシュディレクトリを記憶するように動作するメモリと、
ハードウェア制御論理と、を備え、
前記ハードウェア制御論理は、
前記キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合を監視することと、
メモリマネージャのためのキャッシュディレクトリ犠牲エントリ情報を生成することと、
を行うように動作する、
装置。
【請求項12】
前記キャッシュディレクトリは、ページレベルセットアソシアティブキャッシュディレクトリであり、各エントリは、メモリのページに対応しており、
前記ハードウェア制御論理は、
前記キャッシュディレクトリから最も直近に退避したエントリを記憶するように構成された競合犠牲バッファと、
退避競合のうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報を、メモリマネージャによって読み出し可能なメモリにログ記録することによって、前記犠牲バッファからキャッシュディレクトリ犠牲エントリ情報を生成するように動作するコントローラと、を備える、
請求項11の装置。
【請求項13】
前記ハードウェア制御論理は、前記コントローラによって読み出し可能及び書き込み可能なログバッファを含み、前記コントローラは、前記退避したエントリのうち少なくとも1つに関する前記キャッシュディレクトリ犠牲エントリ情報を前記ログバッファに記憶するように動作する、
請求項12の装置。
【請求項14】
生成された前記キャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、将来のキャッシュディレクトリ競合を低減するように動作するメモリマネージャを備える、
請求項11の装置。
【請求項15】
退避競合の連続ログ記録を提供する第1のモードと、条件データが満たされたことに基づいて退避のログ記録を提供する第2のモードと、を含むキャッシュ退避監視のマルチモード動作と、
ログ記録される競合退避の数のサンプリングレートと、
記憶される退避競合の数を設定するカウント設定と、
のうち少なくとも1つを表すデータを用いて、前記コントローラの制御を提供するように構成された構成レジスタを備える、
請求項12の装置。
【請求項16】
前記ハードウェア制御論理を備えるスケーラブルデータファブリックを備える、
請求項11の装置。
【請求項17】
データ処理システムであって、
ホストプロセッサと、
前記ホストプロセッサに結合されたメモリと、
複数のリモートメモリデバイスと、
前記ホストプロセッサ及び前記複数のリモートメモリデバイスに結合されたスケーラブルデータファブリックと、を備え、
前記スケーラブルデータファブリックは、
ハードウェア制御論理を備え、
前記ハードウェア制御論理は、
前記キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合を監視することと、
メモリマネージャのためのキャッシュディレクトリ犠牲エントリ情報を生成することと、
を行うように動作する、
データ処理システム。
【請求項18】
前記ホストプロセッサは、生成された前記キャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更するように動作する、
請求項17のデータ処理システム。
【請求項19】
前記キャッシュディレクトリは、ページレベルセットアソシアティブキャッシュディレクトリであり、各エントリは、メモリのページに対応しており、
前記ハードウェア制御論理は、
前記キャッシュディレクトリから最も直近に退避したエントリを記憶するように構成された競合犠牲バッファと、
少なくとも1つの退避競合に関するキャッシュディレクトリ犠牲エントリ情報を、メモリマネージャによって読み出し可能なメモリにログ記録することによって、前記犠牲バッファからキャッシュディレクトリ犠牲エントリ情報を生成するように動作するコントローラと、を備える、
請求項17のデータ処理システム。
【請求項20】
前記ハードウェア制御論理は、前記コントローラによって読み出し可能及び書き込み可能なログバッファを含み、前記コントローラは、前記退避したエントリのうち少なくとも1つに関する前記キャッシュディレクトリ犠牲エントリ情報を前記ログバッファに記憶するように動作する、
請求項19のデータ処理システム。
【請求項21】
退避競合の連続ログ記録を提供する第1のモードと、条件データが満たされたことに基づいて退避のログ記録を提供する第2のモードと、を含むキャッシュ退避監視のマルチモード動作と、
ログ記録される競合退避の数のサンプリングレートと、
記憶される退避競合の数を設定するカウント設定と、
のうち少なくとも1つを表すデータを用いて、前記コントローラの制御を提供するように構成された構成レジスタを備える、
請求項19のデータ処理システム。
【請求項22】
前記コントローラは、前記退避エントリのうち少なくとも1つに関する前記キャッシュディレクトリ犠牲エントリ情報を、メモリマネージャによって読み出し可能なカーネルメモリに記憶するように動作する、
請求項20のデータ処理システム。
【請求項23】
生成された前記キャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページの物理アドレスを異なるメモリチャネルに割り当てるように動作するメモリマネージャを備える、
請求項17のデータ処理システム。
【請求項24】
前記ページレベルセットアソシアティブキャッシュディレクトリ内の異なるセットへの移動をもたらすように、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、キャッシュディレクトリ競合を低減するように動作するメモリマネージャを備える、
請求項17のデータ処理システム。
【発明の詳細な説明】
【背景技術】
【0001】
集積回路における処理コアカウントの増加及びそれらのキャッシュサイズの増加は、キャッシュディレクトリに割り振ることができるシリコンの量を圧迫している。チップは、(古いチップと比較して)数十のコア及び非常に大きなキャッシュを有する。キャッシュを追跡するためのキャッシュディレクトリは、より貴重なシリコン面積を占有している。プローブフィルタ(probe filter、PF)とも称されるキャッシュディレクトリは、システム内にキャッシュされたキャッシュラインの全てを追跡するために使用される。ディレクトリキャッシュが過度に多くのシリコン面積を占めることを回避しようとするための1つの技術は、それらの粒度を増加させて、ページプローブフィルタ(page probe filter、PPF)とも称される、性能トレードオフを引き起こす可能性がある、ラインからページへの到達範囲を増加させることであった。しかしながら、キャッシュディレクトリにおける退避競合は、望ましくないレイテンシを引き起こす可能性があり、システム性能を低下させる可能性がある。作業負荷性能におけるレイテンシの何れの問題も、データ処理システム及び他の環境において問題となる。
【0002】
例えば、いくつかのシステムは、物理アドレス(Physical Address、PA)からのビットを使用してインデックス付けされる、ページレベルのセットアソシアティブキャッシュであるキャッシュディレクトリを用いる。ある特定の条件下では、PPFは、頻繁にアクセスされる(ホット)セット上で多くの競合を経験する可能性があり、PPF退避(ダウングレードと呼ばれる)をもたらす。ダウングレードは、性能の点で高価である。各ダウングレードについて、PPFは、退避したPPFエントリによって追跡されているページのラインをキャッシュするコア複合体に無効化プローブを発行する必要がある。これは、全てのダーティキャッシュラインに対するメモリへの潜在的なライトバックが無効化されることをもたらすであろう。
【0003】
例えば、今日のCPUシステムオンチップ(system on chip、SoC)は、数百メガバイトのラストレベルキャッシュ(last level cache、LLC)を有しており、この傾向は継続している。この理由のため、コヒーレンスのために使用される従来のラインベースのキャッシュディレクトリは、より大きなページレベル粒度(例えば、2KB/4KB)で動作する粗粒度のキャッシュディレクトリによって置き換えられている。これらのディレクトリは、システム内にキャッシュされた全てのキャッシュラインを追跡する。大きいとはいえ、それらは依然として、それらが追跡しているキャッシュと同じ制限を受ける。これらのキャッシュは、容量が制限されたセットアソシアティブ構造であり、大メモリ集約型アプリケーションに対してセットの競合を経験するであろう。
【0004】
実施形態は、同様の符号が同様の要素を表す以下の図を伴う場合に、以下の説明を考慮してより容易に理解されるであろう。
【図面の簡単な説明】
【0005】
図1】いくつかの実施形態による、データ処理システムの例示的なブロック図である。
図2】本開示に記載される例による、データ処理システムにおいて使用するための拡張スケーラブルファブリックシステムの一例を示すブロック図である。
図3】本開示に記載される例による、キャッシュディレクトリを管理するための方法を示すフロー図である。
図4】本開示に記載される例による、データ処理システムの一例を示すブロック図である。
図5】本開示に記載される例による、ハードウェア制御論理の一例を示すブロック図である。
図6】本開示に記載される例による、キャッシュディレクトリを管理するための方法を示すフロー図である。
【発明を実施するための形態】
【0006】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0007】
方法及び装置は、いくつかの実施形態では、メモリのページへのキャッシュラインアクセスを含む、キャッシュメモリ(例えば、レベルL3)に現在常駐している全てのページを追跡する。いくつかの実施形態では、セットアソシアティブキャッシュディレクトリ内のセット競合等のキャッシュディレクトリエントリは、退避競合について監視され、情報は、メモリシステムをリバランスするために公開される。ある特定の実施形態では、退避競合情報は、オペレーティングシステム(operating system、OS)、ハイパーバイザ(hypervisor、HV)、メモリコントローラ、又は、他のページメモリマネージャのうち1つ以上に公開される。いくつかの実施形態では、メモリマネージャによる将来の物理ページ(例えば、フレーム)メモリ割り振りは、キャッシュディレクトリ内の退避を回避して、キャッシュディレクトリの性能、したがって全体的なシステム性能を改善するように変更される。
【0008】
いくつかの実施形態では、キャッシュディレクトリを管理するための方法は、キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合を監視することと、メモリマネージャのためのキャッシュディレクトリ犠牲エントリ情報を生成することと、を含む。いくつかの例では、メモリマネージャは、生成されたキャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、将来のキャッシュディレクトリ競合を低減する。
【0009】
ある特定の例では、キャッシュディレクトリはページレベルセットアソシアティブキャッシュディレクトリであり、各エントリはメモリのページに対応し、キャッシュディレクトリ犠牲エントリ情報を生成することは、退避競合のうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報をメモリにログ記録することを含む。いくつかの例では、キャッシュディレクトリ内の退避競合を監視することは、キャッシュディレクトリから最も直近に退避したエントリを記憶する競合犠牲バッファを読み出すことを含む。
【0010】
ある特定の例では、ログ記録することは、仮想メモリマネージャによって読み出し可能なカーネルメモリに、退避したエントリのうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報を記憶することを含む。いくつかの例では、ログ記録することは、制御論理によって読み出し可能なハードウェアログバッファに、退避したエントリのうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報を記憶することを含む。
【0011】
ある特定の例では、方法は、生成されたキャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページの物理アドレスを異なるメモリチャネルに割り当てることによって、退避したエントリのうち少なくとも1つに関する生成されたキャッシュディレクトリ犠牲エントリ情報に基づいてメモリチャネルの輻輳を低減することを含む。
【0012】
いくつかの例では、方法は、メモリマネージャによって、ページレベルセットアソシアティブキャッシュディレクトリ内の異なるセットへの移動をもたらすように、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、キャッシュディレクトリ競合を低減することを含む。
【0013】
ある特定の例では、動作設定を制御するために構成レジスタが使用され、方法は、退避競合の連続ログ記録を提供する第1のモードと、条件データが満たされることに基づいて退避のログ記録を提供する第2のモードと、を含むキャッシュ退避監視のマルチモード動作、ログ記録される競合退避の数のサンプリングレート、及び、記憶される退避競合の数を設定するカウント設定、のうち1つ以上を表すデータを用いて1つ以上の構成レジスタを設定することを含む。
【0014】
いくつかの例では、方法は、メモリマネージャによって処理されるキャッシュディレクトリに、複数の犠牲エントリに関する情報をログ記録して、キャッシュディレクトリ内の退避競合を低減するために将来の物理メモリページアドレス割り振りをどのように変更するのが最良かを判定すること等によって、キャッシュディレクトリ内で検出された複数の退避競合に関するキャッシュディレクトリ犠牲エントリ情報を生成することを含む。
【0015】
ある特定の実施形態では、装置は、キャッシュ階層にアクセスする1つ以上のプロセッサと、キャッシュディレクトリを記憶するメモリと、キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合を監視するハードウェア制御論理と、を含む。ハードウェア制御論理は、メモリマネージャのためのキャッシュディレクトリ犠牲エントリ情報を生成する。いくつかの例では、スケーラブルデータファブリックは、ハードウェア制御論理を含む。
【0016】
いくつかの例では、キャッシュディレクトリは、ページレベルセットアソシアティブキャッシュディレクトリであり、各エントリは、メモリのページに対応し、ハードウェア制御論理は、キャッシュディレクトリから退避した最も直近のエントリを記憶する競合犠牲バッファを含む。コントローラは、メモリマネージャによって読み出し可能なメモリに、退避競合のうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報をログ記録することによって、犠牲バッファからキャッシュディレクトリ犠牲エントリ情報を生成する。
【0017】
ある特定の例では、ハードウェア制御論理は、コントローラによって読み出し可能及び書き込み可能であるハードウェアログバッファを含み、コントローラは、退避したエントリのうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報をハードウェアログバッファに記憶する。いくつかの例では、メモリマネージャは、生成されたキャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、将来のキャッシュディレクトリ競合を低減する。
【0018】
ある特定の例では、構成レジスタは、退避競合の連続ログ記録を提供する第1のモードと、条件データが満たされていることに基づいて、退避のログ記録を提供する第2のモードと、を含むキャッシュ退避監視のマルチモード動作、ログ記録される競合退避の数のサンプリングレート、及び、記憶される退避競合の数を設定するカウント設定、のうち少なくとも1つを表すデータを用いて、コントローラの制御を提供するように構成される。
【0019】
ある特定の実施形態では、データ処理システムは、ホストプロセッサと、ホストプロセッサに結合されたメモリと、複数のリモートメモリデバイスと、スケーラブルデータファブリックと、を含み、スケーラブルデータファブリックは、キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合を監視し、メモリマネージャのためのキャッシュディレクトリ犠牲エントリ情報を生成するハードウェア制御論理を含む。
【0020】
いくつかの例では、オペレーティングシステム又はハイパーバイザを提供するホストプロセッサは、生成されたキャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、将来のキャッシュディレクトリ競合を低減する。
【0021】
ある特定の例では、キャッシュディレクトリは、ページレベルセットアソシアティブキャッシュディレクトリであり、各エントリは、メモリのページに対応し、ハードウェア制御論理は、キャッシュディレクトリから退避した最も直近のエントリを記憶するように構成された競合犠牲バッファを含み、コントローラは、メモリマネージャによって読み出し可能なメモリに、少なくとも1つの退避競合に関するキャッシュディレクトリ犠牲エントリ情報をログ記録することによって、犠牲バッファからキャッシュディレクトリ犠牲エントリ情報を生成する。
【0022】
いくつかの例では、ハードウェア制御論理は、コントローラによって読み出し可能及び書き込み可能なログバッファを含み、コントローラは、退避したエントリのうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報をログバッファに記憶する。
【0023】
ある特定の例では、構成レジスタは、退避競合の連続ログ記録を提供する第1のモードと、条件データが満たされていることに基づいて、退避のログ記録を提供する第2のモードと、を含むキャッシュ退避監視のマルチモード動作、ログ記録される競合退避の数のサンプリングレート、及び、記憶される退避競合の数を設定するカウント設定、のうち少なくとも1つを表すデータを用いて、コントローラの制御を提供するように構成される。いくつかの例では、コントローラは、メモリマネージャによって読み出し可能なカーネルメモリに、退避したエントリのうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報を記憶する。
【0024】
ある特定の例では、メモリマネージャは、生成されたキャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページの物理アドレスを異なるメモリチャネルに割り当てることによって、退避したエントリのうち少なくとも1つに関する生成されたキャッシュディレクトリ犠牲エントリ情報に基づいて、メモリチャネルの輻輳を低減する。
【0025】
いくつかの例では、メモリマネージャは、ページレベルセットアソシアティブキャッシュディレクトリ内の異なるセットへの移動をもたらすために、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、キャッシュディレクトリ競合を低減する。
【0026】
図1は、いくつかの実施形態による、データ処理システム100のブロック図を示す。データ処理システム100は、ホスト106と、スケーラブルデータファブリック150によって互いに接続されたメモリデバイス102、104、108、110と、を含む。ホスト106は、それぞれ関連付けられたキャッシュ126及び128を有する2つの中央処理装置(central processing unit、CPU)122及び124を有するホストプロセッサ120と、入力/出力(input/output、I/O)コントローラ130と、ドライバ131と、メモリコントローラ132と、ネットワークインターフェース133と、ファブリックインターフェース135と、メディアコントローラ136と、を含む。I/Oコントローラ130は、関連するI/Oデバイス144をホストプロセッサ120に接続する。図示した例では、I/Oコントローラ130は、データ処理システム100にキャッシュされていないデータを受信して記憶するために、非コヒーレント形式のHyperTransportプロトコルを実装する。ネットワークインターフェース133は、システム相互接続部115に接続され、HyperTransportプロトコルのコヒーレント形式を実装する。メモリコントローラ132は、ローカルメモリ146に接続される。図示した実施形態では、ローカルメモリ146はDRAMで実装される。
【0027】
システム相互接続部115は、CPU122及び124、I/Oコントローラ130、メモリコントローラ132、ネットワークインターフェース133、ファブリックインターフェース135、並びに、メディアコントローラ136を接続する。この例では、ホストプロセッサ120は、2つのCPU122及び124を含むが、他の実施形態では、ホストプロセッサ120は、任意の数のCPUコアを含むことができる。キャッシュ126及び128の各々は、システム相互接続部115に双方向に接続され、キャッシュラインフィル、ライトバック、並びに、プローブ要求及び応答等のメモリアクセス要求を、メモリコントローラ132及びファブリックインターフェース135を介してスケーラブルデータファブリック150に提供することができる。CPU122及び124の各々は、単一コアであってもよく、又は、更に、キャッシュ126及び128等のある特定のリソースを共有する2つ以上の単一コアを伴うコア複合体であってもよい。システム相互接続部115は、任意のメモリアクセスエージェントとメモリコントローラ132との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、システム相互接続部115は、システム構成及び様々なトランザクションバッファに基づいてメモリアクセスの宛先を判定するためのシステムメモリマップを維持する。
【0028】
メモリデバイス102、104、108、110は、CPU122及び124等の複数の計算エージェント間で共有されるスケーラブルデータファブリック150を介して、外部メモリプール内のデータへのアクセスを提供するリモートデータ記憶エージェントである。
【0029】
ドライバ131は、例えば、メモリアクセスパターンに関する情報に基づいてページ配置決定を行うメモリマネージャを供給するオペレーティングシステム(OS)カーネルのモジュールである。例えば、ドライバ131は、ホストプロセッサ120によって最も頻繁にアクセスされるページを、スケーラブルデータファブリック150内の他のプールからローカルメモリ146に再位置付けする。
【0030】
メモリコントローラ132は、ホストプロセッサ120と、ローカルメモリ146並びにメモリデバイス102、104、108、110を含むシステム内の全てのメモリとの間のデータ転送のための機構である。メモリコントローラ132は、システム相互接続部115を介してメモリアクセスエージェントに接続され、メモリアクセスエージェントからメモリアクセス要求を受信する。メモリコントローラ132は、CPU122及び124からのメモリアクセスを開始及び終了するタスクをオフロードする。また、メモリコントローラ132は、ローカルメモリ146への外部バスの効率的な使用を可能にするために内部キューを有するローカルメモリ146のためのメディアコントローラを含む。図示した実施形態では、ローカルメモリ146は、DRAMを使用して実装されるが、スタティックRAM、不揮発性メモリ又は任意の好適なタイプのメモリ等のように、DRAM以外の他のタイプのメモリによって実装されてもよい。
【0031】
I/Oデバイス144は、キャッシュ不可能なデータの生成部として機能する入力/出力デバイスである。図1に示す例では、I/Oデバイス144は、2001 HyperTransport Technology Consortium(著作権)のHyperTransport(商標)I/O Link Specification、Revision 1.03の非コヒーレント形式に準拠する。
【0032】
ローカルメモリ146は、メモリコントローラ132を通じてホストプロセッサ120に接続される。他の実施形態では、ローカルメモリ146は、高帯域幅メモリ(high band width memory、HBM)、相変化メモリ(phase-change memory、PCM)、及び、他の同様のタイプのページ指向メモリ等の他の形式のメモリで実装され得る。ローカルメモリ146は、ドライバ131がページ移動決定を行うのを助けるためにホストプロセッサ120にローカルに情報を記憶するアクティブページテーブル148を含む。
【0033】
スケーラブルデータファブリック150は、メモリデバイス102、104、108、110等の低レイテンシメモリプールとホストプロセッサ120との間のデータ転送を提供する階層的相互接続である。スケーラブルデータファブリック150は、コヒーレントHyperTransport(coherent HyperTransport、cHT)プロトコル等のパケットベースのプロトコルを利用して、処理要素とメモリモジュールとの間にレイテンシの影響を受けないロードストアインターフェースを提供する。スケーラブルデータファブリック150は、コンポーネントごとにスケーラブルであり、コンポーネントは、ホストプロセッサ120に直接接続される必要はない。代わりに、コンポーネントは、他のネットワーク(例えば、イーサネット(登録商標)及びInfiniBandネットワーク)へのゲートウェイを有する交換された又はスケーラブルデータファブリックトポロジを介して接続され得る。また、スケーラブルデータファブリック150は、より高いレイテンシの不揮発性ランダムアクセスメモリ(non-volatile random-access memory、NVRAM)及び他のメモリタイプの使用を容易にする。これらのメモリでは、書き込みレイテンシが読み出しレイテンシよりも大きくなる傾向がある。一実施形態では、スケーラブルデータファブリック150は、GenZ Consortiumによって開発されたプロトコルを実装する。しかしながら、スケーラブルデータファブリック150は、任意の他の同様のプロトコルを実装することができる。
【0034】
スケーラブルデータファブリック150は、1つ以上のページプローブフィルタ152のセットを含む。以下で更に説明する例示的な実施形態では、ページプローブフィルタ152は、システム内の何処にキャッシュされたデータ要素の位置を示す情報、及び、キャッシュ不可能なメモリアクセスを追跡する他のフィルタを記憶する。以下で記載されるように、いくつかの実施形態におけるキャッシュディレクトリ退避競合監視を伴うハードウェア制御論理153は、ページプローブフィルタの一部として含まれる。
【0035】
図示した実施形態では、ドライバ131は、CPU122上で動作し、アクティブページテーブル148及びログファイル(例えば、キャッシュディレクトリ退避競合データを含む)を周期的にスキャンして、CPU122及び124によってアクセスされている何れのページが、より低速又はよりリモートのメモリ、例えば、メモリデバイス102、104、108、110のうち何れか、又は、ローカルメモリ内のより低速のメモリに現在記憶されているかを判定し、「movepage」として知られるシステムコールを利用して、選択されたページをローカルメモリ146に移行する。いくつかの実施形態では、ドライバ131及びメモリコントローラは、メモリデバイス102、104、108、110の間でページを移動させる。ローカルメモリが異なるタイプのメモリデバイス(いくつかはより低速であり、他はより高速である)から作られるある特定の実施形態では、ページはローカルメモリ内で移動させられる。したがって、ドライバ131は、メモリコントローラ132と共に、データを日和見的に移動して、複雑でスケーラブルなデータファブリックを有するシステムにおけるデータ配置の局所性を改善する。
【0036】
図2は、いくつかの実施形態による、図1のデータ処理システム100において使用するための拡張スケーラブルファブリックシステム200のブロック図を示す。拡張スケーラブルファブリックシステム200は、概して、スケーラブルデータファブリック150と、応答部ネットワーク260と、ホストプロセッサ120(図2には具体的に示されていない)を含む要求部ネットワーク270と、を含む。
【0037】
スケーラブルデータファブリック150は、概して、コヒーレントスレーブ(coherent slave、CS)212と、入力/出力マスタ/スレーブ(input/output master/slave、IOMS)216と、入出力ホストコントローラ(nput/output host controller、IOHC)230と、グローバルファブリックホストコントローラ240と、ペリフェラルコンポーネントインターコネクトエクスプレス(Peripheral Component Interconnect express、PCIe)/Sリンクコントローラ250と、入力/出力インターフェース252と、を含む。CS212は、スケーラブルデータファブリック150に関連付けられた全ての物理メモリのコヒーレンスを管理する。CS212は、メモリアクセスのためのスケーラブル順序付けポイントとして働き、拡張スケーラブルファブリックシステム200に関連付けられたメモリアクセスエージェントのためのスケーラブル可視性を保証する。更に、CS212は、アドレス直列化を有効化し、コヒーレンス目的のためにプローブを起動する。CS212は、受信されたメモリアクセス要求の順序付け及びコヒーレンシを維持する役割を果たす。CS212は、コヒーレントHyperTransport(cHT)等のキャッシュコヒーレンシプロトコルを実装する。CS212は、ソケットダイレクトプロトコル(socket direct protocol、SDP)ポートを介してメモリコントローラ132とインターフェース接続する。CS212は、この例では、全ての直近にアクセスされたページのグローバルビューを有効化するハードウェアフィルタ回路であるキャッシュエントリ退避競合監視を有するページプローブフィルタ(PPF)214の形式のハードウェア制御論理を含む。いくつかの実施形態では、PPF214は、データ処理システム100内の何処にアクティブにキャッシュされた全てのページのリストを含む。PPF214は、CS212に関連付けられたメモリチャネルによって所有されるDRAMアドレスに対応するメモリを追跡する。ページ移動決定を容易にするために、PPF214は、そのタグ及びデータアレイからの選択された情報を、オペレーティングシステムのドライバ131に直接又は間接的に公開する。
【0038】
IOMS216は、スケーラブルデータファブリック150に関連付けられたメモリへのアクセスを供給するモジュールであり、スケーラブルデータファブリック150からホストプロセッサ120への全てのダイレクトメモリアクセス(direct memory access、DMA)(キャッシュ不可能)メモリ要求のエントリポイントでもある。IOMS216は、PPF214と同様にハードウェアフィルタ回路であるDMAフィルタ(DMA filter、DMAF)218を含む。IOMS216は、マスタ及びスレーブ機能の両方を含み、したがって、2つのSDPポート、すなわち、(i)I/OデバイスからのDMAアクセスのためのマスタSDPと、(ii)ホストプロセッサ120からメディアメモリデバイスへのダウンストリームアクセスのためのスレーブSDPと、を有する。DMAF218は、2つのSDPポートを介してIOMS216を通過するメモリアクセスを追跡する。データ移動の決定を容易にするために、DMAF218は、この情報をオペレーティングシステムのドライバ131に直接又は間接的に公開する。
【0039】
ドライバ131は、周期的にアクティブページテーブル148をスキャンし、キャッシュディレクトリ退避競合データ及び後述する他のデータを含むログファイルからのデータを使用して、ページディレクトリ競合を引き起こすページが異なる物理メモリ割り振りを有するページに変更されてキャッシュディレクトリにおける将来の退避競合を低減するように、再割り振りポリシー変更に基づいて、何れの物理メモリページ割り当てが変更されるべきかを判定する。
【0040】
いくつかの実施形態では、システムは、ページをメモリの異なる階層に移動させることを可能にする。例えば、データ移動候補は、拡張スケーラブルファブリックシステム200内の低速不揮発性RAM(non-volatile RAM、NVRAM)又はメモリ内に現在キャッシュされているデータであり得る。いくつかの実施形態では、メモリコントローラ132がページを移動させる代わりに、スケーラブルファブリック150は、所定のシステムコール、例えば、「movepage」システムコールを利用してページをローカルメモリ146に移行するDMAエンジンを含む。他の実施形態では、オペレーティングシステムは、遅い現在のメモリからより速いメモリへのページの移動を制御する。
【0041】
IOHC230は、ローカルメモリアドレスを対応するシステムアドレスに変換するための入力/出力メモリ管理ユニット(input/output memory management unit、IOMMU)232を含む。グローバルファブリックホストコントローラ240は、(IOHC230を通じて)CS212及びIOMS216の両方に接続され、ファブリック接続要求部から要求を受信し、ファブリック接続要求部に応答を提供するためのポートを有する。グローバルファブリックホストコントローラ240は、個別のアドレス変換機構を含み、GenZプロトコル等のリンク定義プロトコルを使用してリンク制御を遂行する。
【0042】
PCIe/Sリンクコントローラ250は、PCI Special Interest Groupによって定義された「PCI Express」(PCIe)プロトコルとして知られるパケットベースのプロトコルを使用して、拡張スケーラブルファブリックシステム200内のコンポーネント間の下位レベルの通信を遂行する。代替の実施形態では、PCIe/Sリンクコントローラ250は、階層内で接続されたコンポーネント間で動作することができる任意の他の同様のリンクプロトコルを実装することができる。
【0043】
入力/出力インターフェース252は、スケーラブルデータファブリック150内のコンポーネントと、それに接続された要求部及び応答部との間のバッファ及び物理インターフェースを提供する。
【0044】
一実施形態では、スケーラブルデータファブリック150のコンポーネントは、1つの集積回路(integrated circuit、IC)内で組み合わされ、ホストプロセッサ120のコンポーネントは、別のIC内で組み合わされる。代替実施形態では、これらの回路の全てが単一のIC内で組み合わされる。
【0045】
応答部ネットワーク260は、概して、スケーラブルファブリック応答部インターフェース262と、メディアコントローラ263と、メディアグループ264と、を含む。スケーラブルファブリック応答部インターフェース262は、スケーラブルデータファブリック150に通信可能に接続し、メディアグループ264等のリモートメモリプールへのアクセスを有効化する。メディアコントローラ263は、DRAM、NVRAM、フラッシュメモリ等の特定のタイプのメディアへのインターフェースを提供する。メディアグループ264は、リモートメモリデバイスのセットを含む。リモートメモリデバイスの各々は、例えば、ホストプロセッサ120に対してリモートの位置にコンピューティングデバイスを含むことができる。応答部ネットワーク260は、スケーラブルデータファブリック150を介してリモートメモリデバイスにデータを提供し、リモートメモリデバイスからデータを受信する。
【0046】
要求部ネットワーク270は、スケーラブルファブリック要求部インターフェース272と、図1のホストプロセッサ120等の1つ以上の計算デバイス274と、を含む。各計算デバイス274は、スケーラブルデータファブリック150に要求を提供するメモリアクセスエージェントである。
【0047】
拡張スケーラブルデータファブリックシステム200は、PPF214及びDMAF218に記憶された情報をオペレーティングシステムに視認可能にすることによって、データ処理システム100内のデータ配置の効率を改善する。したがって、オペレーティングシステムは、日和見的なページ移行決定を行うことができ、それによって、データアクセスの局所性を動的に改善することができる。ハードウェア制御論理は、以下に説明するように、日和見的なページ移行決定を行うためにオペレーティングシステムによってのみアクセス可能なログファイルにデータを記憶する。
【0048】
データフローの一例では、メディアメモリへのアクセスは、スケーラブルデータファブリック150において受信される。ライン284は、CS212からメディアメモリへのアクセスの経路を示す。PPF214は、データ処理システムによってキャッシュされるデータの位置を示す情報を記憶する。データに関連付けられた情報は、データアレイの形態で記憶され得る。あるいは、ライン285は、キャッシュ不可能なデータをメディアメモリに移行する要求を示す。DMAF218は、データ処理システムによってキャッシュされていないデータの位置を示す情報を記憶する。別の実施形態では、ライン286は、スケーラブルデータファブリック150が計算デバイス274からメモリアクセス要求を受信する経路を表す。移行経路は、データに関連付けられた情報を、IOMMU332を介してIOMS216に提供する。PPF214及びDMAF218は各々、組み合わされたデータアレイ又は個別のデータアレイ内のデータを特徴付ける情報を記憶することができる。
【0049】
ハードウェア制御論理153は、キャッシュディレクトリ犠牲エントリ情報をPPF214の一部としてログ記録して、ドライバ131を実装するプロセッサ、オペレーティングシステム、又は、ハイパーバイザ等のメモリマネージャが、実行中のアプリケーション又は他の動作のために将来の物理ページメモリ割り振りを行うことを容易にする。いくつかの実施形態では、メモリチャネルトラフィックは、オペレーティングシステム又はハイパーバイザが、公開されたキャッシュディレクトリ犠牲エントリ情報に基づいて代替物理ページメモリ割り振りを選択することによって低減される。
【0050】
図3は、一例においてハードウェア制御論理153によって実行されるキャッシュディレクトリを管理するための方法の一例を示すフロー図である。しかしながら、任意の好適な制御論理が用いられてもよい。また、動作は任意の好適な順序で遂行されてもよく、以下の動作は例として与えられることが認識されるであろう。ブロック300に示すように、方法は、キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合(eviction conflicts)を監視することを含む。一例では、以下で更に説明するように、ハードウェア制御論理153は、キャッシュディレクトリから退避した競合犠牲エントリ(conflict victim entries)を記憶する一時ハードウェアバッファを監視する。ブロック304に示すように、方法は、オペレーティングシステム、ハイパーバイザ又は他の好適な物理アドレスメモリマネージャ等のような、メモリのページに物理アドレス空間を割り振るメモリマネージャ等に対して、メモリマネージャのためのキャッシュディレクトリ犠牲エントリ情報を生成することを含む。メモリマネージャは、将来のメモリ割り当てに対してより最適な物理ページを選択することによって、将来のキャッシュディレクトリ競合を低減する。使用されるメモリマネージャポリシーのいくつかの例は、同じセット内で多くのキャッシュエントリ退避が発生している場合等のように、チャネル内の単一のセット上でホットスポットが検出された場合に、チャネル内の異なるセットにページを再割り当てすることを含む。チャネル内の多くのセット上に多くのホットスポットが検出された場合、メモリマネージャは、ページを完全に異なるチャネルに移動させる。また、いくつかの実施形態では、競合がないことは、ホットスポットされていないページとみなされる。
【0051】
いくつかの実施形態では、ハードウェア制御論理153は、スケーラブルデータファブリック150の一部である。メモリマネージャは、例えば、オペレーティングシステム(オペレーティングシステムコードを実行するCPU)及び/又はメモリコントローラ等の固定機能ハードウェアとすることができ、キャッシュディレクトリセットの競合を監視し、その情報を使用してメモリシステムをリバランスする。例えば、生成されたキャッシュディレクトリ犠牲エントリ情報は、一実施形態では、オペレーティングシステム仮想メモリマネージャ(virtual memory manager、VMM)にフィードバックを提供し、VMMはページフレームをよりインテリジェントに割り振る。これにより、キャッシュディレクトリの性能が向上し、システム全体の性能が向上する。いくつかの実施形態では、生成されたキャッシュディレクトリ犠牲エントリ情報は、以下で更に説明するように、オペレーティングシステム又はハイパーバイザ並びにメモリコントローラ等の固定機能ハードウェアの両方に公開される。
【0052】
いくつかの実施形態では、仮想メモリマネージャは、キャッシュディレクトリセット内の潜在的な競合を認識するように、仮想アドレスから物理アドレスへのマッピングを選択する。仮想メモリマネージャは、各キャッシュディレクトリセットに対してマッピングされたページを追跡し、一例では、カーネルメモリに記憶されたカーネルページデータ構造に追加フィールドとして情報が追加される。
【0053】
図4図7を参照すると、ハードウェア制御論理153の例示的な構造及び動作が説明され、この例では、ハードウェア制御論理153は、競合退避監視を有するページプローブフィルタ214として実装される。いくつかの実施形態では、ページプローブフィルタ214は、システム内の何処かにアクティブにキャッシュされた全てのページのリストを形成するエントリを含むデータファブリックキャッシュディレクトリ400を利用する。ページプローブフィルタ214は、論理的にコヒーレントスレーブ(CS)モジュールの一部である。PPF214は、チャネル及びメモリコントローラに論理的に関連付けられる。PPF214は、関連付けられたCSメモリチャネルによって所有されるメモリアドレスに対応するメモリを追跡する。コヒーレントマスタ(coherent master、CM)404は、複数のCPU122、124からなるCPU複合体(CPU complex、CCX)とデータファブリック150との間のインターフェースである。CPU複合体はキャッシュ階層にアクセスする。コヒーレントマスタ(CM)404は、CPU122、124から要求を受信し、それらをデータファブリック150に転送する。コヒーレントマスタ(CM)404は、データファブリック150からコヒーレンシプローブ及びプローブ応答を受信し、それらをCPU複合体(CCX)に送信する。
【0054】
図5に示すように、一例として、各セット500~506は、ページレベルセット関連キャッシュディレクトリ内のセットであり、各エントリ508はメモリのページに対応する。この例では、セット504のエントリ508は、退避競合を有し、競合犠牲である。新しいPPFエントリ510がセット504内に配置される。新しいPPFエントリ510は、例えば、CPU複合体内で実行中のアプリケーションによって使用されているページ内の新しいキャッシュラインを表す。
【0055】
この例では、ハードウェア制御論理153は、競合犠牲バッファ512と、コントローラ514と、ログバッファ516と、1つ以上の制御レジスタ518と、を含む。いくつかの実施形態では、ログバッファ516は、ダブルバッファ520を用いて構成される。ハードウェア制御論理153は、一例では、1つ以上のステートマシンとして構成され、他の実施形態では、フィールドプログラマブルゲートアレイとして実装され、他の実施形態では、ファームウェアを実行するマイクロコントローラとして実装されるが、命令を実行するプロセッサを含むハードウェア論理の任意の好適な組み合わせを含む任意の好適な構造が使用されてもよい。
【0056】
コントローラ514は、メモリマネージャ524のためのキャッシュディレクトリ犠牲エントリ情報522を生成する。この実施形態では、メモリマネージャ524は、オペレーティングシステム及び/又はハイパーバイザ(例えば、オペレーティングシステムコード及び/又はハイパーバイザコードを実行する1つ以上のプロセッサ)によって実装される。いくつかの実施形態では、ハードウェア制御論理153は、カーネルメモリ530(例えば、バッファ)を通じてキャッシュディレクトリ犠牲エントリ情報522をメモリマネージャ524に公開する。いくつかの実施形態では、カーネルメモリはダブルバッファ532を含み得る。カーネルメモリ530は、キャッシュディレクトリ犠牲エントリ情報522を含むキャッシュディレクトリ競合ログを記憶する。
【0057】
競合犠牲バッファ512は、この例ではエントリ508として示される、キャッシュディレクトリ400から退避した最も直近のエントリを記憶する。コントローラ514は、競合犠牲バッファ512に記憶されるキャッシュディレクトリ犠牲情報542をログ記録することによって、キャッシュディレクトリ犠牲エントリ情報522を生成する。コントローラは、メモリマネージャ524によって読み出し可能なカーネルメモリ530等のメモリ内に、キャッシュディレクトリ犠牲エントリ情報522を生成する。また、コントローラ514は、キャッシュディレクトリ犠牲エントリ情報522を、コントローラ514によって読み出し可能及び書き込み可能なログバッファ516に記憶する。いくつかの実施形態では、コントローラ514は、キャッシュディレクトリ犠牲エントリ情報522をカーネルメモリ530に記憶する。いくつかの例では、情報542は、犠牲エントリ情報522と同じ情報である。メモリマネージャ524は、この例では、カーネルメモリ530からの犠牲エントリ情報522を処理することによって、生成されたキャッシュディレクトリ犠牲エントリ情報522に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、将来のキャッシュディレクトリ競合を低減する。いくつかの例では、カーネルメモリは、データが追加されたときにメモリマネージャに通知するディレクトリを含む。
【0058】
構成レジスタ518は、コントローラ514の制御を提供し、いくつかの実施形態では、退避競合の連続ログ記録を提供する第1のモードと、1つ以上の閾値が満たされる等のように、条件データが満たされることに基づいて退避のログ記録を提供する第2のモードとを含む、キャッシュ退避監視のマルチモード動作を表すデータを含むモードレジスタ534を含む。サンプリングレートレジスタ536は、コントローラ514によってログ記録されるべき競合退避の数のサンプリングレートを表すデータを含む。カウントレジスタ538は、コントローラ514によって記憶されるべき退避競合の数を設定するカウント設定を表すデータを含む。ログ開始レジスタ540は、カーネルメモリ530に記憶された競合ログ内のログの開始アドレスを表すデータを含む。有効化レジスタ541は、退避監視動作を所望に応じて有効化又は無効化することを可能にする。制御レジスタは、ドライバ制御を通じて又は任意の他の好適な動作を通じて設定される。
【0059】
エントリ560は、ログバッファ516内のログのエントリの一例である。エントリ562は、カーネルメモリ530に記憶された競合ログ内のエントリの一例である。いくつかの実施形態では、各エントリは、物理アドレス(physical address、PA)、チャネル番号(channel number、CN)及びセット番号(set number、SN)を表すデータを含む。例えば、エントリは、|4c54bbf000|3|148|のフォーマットに対して、PA(物理アドレス)0x4C54BBF000(PAに対して40ビットアドレス指定をとる)、チャネル番号3(16チャネルをとる)及びセット番号148(256セットをとる)であり得る。
【0060】
図6は、図5に示すブロック図の動作の一例に基づいてキャッシュディレクトリを管理するための方法の一例を示す。動作は、任意の他の好適な論理によって遂行されてもよく、任意の好適な順序で遂行されてもよいことが認識されるであろう。ブロック600に示すように、方法は、犠牲キャッシュディレクトリエントリの退避競合が発生したと判定することを含む。例えば、新しいPPFエントリがPPFセットに割り振られる必要があり、空きエントリ又は無効エントリがなく、競合ミスをもたらす場合、ハードウェア制御論理は、最長時間未使用(least recently used、LRU)ポリシー等の置換ポリシーに基づいて犠牲エントリ508を選択する。一例では、そのエントリに属するL3キャッシュラインが無効化される。ブロック602に示すように、方法は、矢印570で示すように、犠牲キャッシュエントリの内容を一時競合犠牲バッファ512に記憶することを含む。コントローラ514は、ブロック604に示すように、競合犠牲バッファ512の内容を読み出し、構成レジスタ設定に基づいて、何れの情報をログ記録するか、何処にログ記録するか、及び、どのようにログ記録するかを決定する。例えば、一構成では、コントローラ514は、例えば、サンプリングレートレジスタ536中の値によって設定されたように、PPFダウングレードをサンプリングし、n番目の犠牲ごとにのみログ記録する。
【0061】
ブロック606に示すように、方法は、キャッシュディレクトリ犠牲エントリ情報522をカーネルメモリ530にログ記録することを含む。いくつかの例では、ログは、メモリマネージャ524がログを処理する間にコントローラ514が情報をログ記録し続けることを確実にするために、ダブルバッファ532を通じてダブルバッファされる。ブロック608に示すように、方法は、ログ内のキャッシュディレクトリ犠牲エントリ情報522を処理し、将来の競合を低減するために(例えば、ページプローブフィルタキャッシュを最大限に利用するために)ページカラーリングに基づいて物理フレーム割り当てを調整することを含む。一例では、メモリマネージャ524は、キャッシュディレクトリ犠牲エントリ情報522に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、将来のキャッシュディレクトリ競合を低減する。いくつかの実施形態では、ページ再割り当ては、輻輳していないチャネルにページを移動させることである。他の実施形態では、ページ再割り当ては、同じチャネル内のPPF内の単一セット上の競合を低減するためにページを移動させることである。
【0062】
ブロック610に示すように、ある特定の実施形態では、コントローラ514は、先ず、キャッシュディレクトリ犠牲エントリ情報522をログバッファ516にログ記録する。いくつかの実施形態では、これは、監視/ログ記録に対するより多くの制御を可能にする。いくつかの実施形態におけるバッファ常駐ログは、キャッシュディレクトリ犠牲エントリ情報のより連続した記憶を可能にするために、バッファ520によって示すようにバッファされる。
【0063】
モードレジスタ534は、複数のモードを設定できるように構成されている。一例では、監視モードと称されるモードは、セットに対する競合の数が閾値に達する等のように、問題が検出された場合のみ競合がログ記録されるモードである。いくつかの実施形態では、レジスタは、競合が各々1秒の過去100エポック内に95番目のパーセンタイルを超えたときに、競合をログ記録するメモリマネージャ又はオペレーティングシステム又はハイパーバイザによって設定される。アクティブログモードと称される別のモードは、競合を一貫してカーネルメモリ530ログ記録する。アクティブログモードは、ログバッファ516を必要とせず、競合をカーネルメモリ530に直接ログ記録することができる。
【0064】
いくつかの実施形態では、ハードウェア制御論理153は、サンプリングレートレジスタ536を通じたサンプリングレートで構成されて、n番目の競合ごとにのみログ記録する。いくつかの例では、これは、メモリマネージャ524のためにハードウェア制御論理153によって提供される全体的な情報提供性を保ちながら、ログのために必要とされる空間の量及びメモリ書き込みの量を低減する。メモリマネージャ524は、ログを処理し、ページカラーリングに基づいてページフレーム割り当てポリシーを実装して、キャッシュディレクトリ400内の追加の競合を軽減する。オペレーティングシステム、いくつかの例ではハイパーバイザは、ハードウェア制御論理153を有効化し、ログ開始レジスタ540、サンプリングレートレジスタ536、カウントレジスタ538、及び、モードレジスタ534等の制御レジスタを設定/リセットすることを担う。いくつかの実施形態では、競合情報は、ヒューリスティックを導出し、それらのヒューリスティックを使用して、競合が発生し始める前に後続の実行を改善しようと試みるために使用される。いくつかの実施形態では、複数のモードが実行され、結果が、実装のためのそれらの有効性及び性能コストを見るために比較され、最小の性能コストを有するモードが選択される。
【0065】
いくつかの例では、メモリシステムのリバランスは、本質的に遡及的又は先行的であり得る。一例における遡及的リバランスは、既にマッピングされたページを、異なるメモリチャネルにマッピングするフレームのセットに再マッピングするメモリマネージャによって遂行される。したがって、メモリチャネルに対する輻輳の低減は、生成されたキャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページに対するページレベル物理アドレス割り当てを、異なるメモリチャネルに変更することによって行われる。他の実施形態では、メモリマネージャは、ページレベルセットアソシアティブキャッシュディレクトリ内の異なるセットへの移動をもたらすために、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、キャッシュディレクトリ競合を低減する。
【0066】
メモリマネージャ524によって(例えば、OSを介して)別の物理位置にページを移動させることは、そのコスト(トランスレーションルックアサイドバッファ(translation lookaside buffer、TLB)シュートダウン)に、新しい位置が別のメモリコントローラ内にある場合にバイトを移動させる追加コストを加えたものを有する。そのため、いくつかの実施形態では、メモリマネージャは、問題が検出された場合にのみリバランスをトリガする。更に、ある特定の実施形態では、ページを異なる物理位置に移行する場合、メモリマネージャは、最初に、同じメモリチャネル内の新しい位置(例えば、移行オーバーヘッドを最小限に抑えるために同じメモリコントローラのためのPPF内の異なるセット)を選択するが、現在のメモリノードが満杯であるか又はプローブフィルタ内で増大した数の競合を経験する場合、異なるメモリチャネルに移動させるためには異なるコントローラにも移行しなければならない場合がある。
【0067】
事前対応リバランスのために、いくつかの実施形態では、メモリマネージャ(例えば、OS)は、割り振られたページフレームアドレスがPPFセット又はメモリチャネルにおいて競合を引き起こさないことを確認する。これは、一例では、監視動作モードで達成される。例えば、所定のアプリケーションメモリ使用量がPPF競合プロファイルをどのように生成するかを監視することによって、OS/HVは、次にアプリケーションが実行される場合にアプリケーションをどのように処理するかの決定をオフラインで行う。例えば、PPF競合の傾向があることが知られている仮想メモリ領域は、メモリマネージャ(例えば、VMM)によって異なるPPFセットに再マッピングされる。
【0068】
別の事前対応手法では、ハードウェア制御論理153は、競合情報522をOS/HVに公開して、データが、PPF競合がないか又は少ない物理メモリ領域に割り振られるようにする。過度にホットであると考えられるPPFセットにマッピングされたメモリアドレスは、メモリ領域をマスクアウトする(PPF競合に関連付けられているセットビットを一時的に無効にする)ことによって回避することができる。メモリマネージャ(VMM)は、マスクアウトされたページフレームをフリーではないものとして扱い、利用可能なページフレームに新しいデータを割り振るであろう。
【0069】
他の実施形態では、PPF競合監視情報は、メモリチャネル上の輻輳を緩和するために使用される。例えば、各メモリコントローラは、それに関連付けられたPPFを有する。このようにして、メモリマネージャ(OS/HV/VMM)は、メモリチャネル上の任意の不均衡/輻輳を認識し、チャネルのホット度合いに基づいて物理フレームを割り振る/再マッピングする。これは、チャネルインターリービングのために下位ビットが使用され、OSがチャネルのホット度合いに気付かないままであり、したがってメモリマッピングを調整する(フレームを割り振る)ことができない現在のシステムとは対照的である。チャネルのホット度合いは、チャネルに属する全てのPPFセットについての競合の和として近似することができる。メモリマネージャ(例えば、OS/HV)によるリバランスは、次いで、最もホットなチャネルからページフレームを周期的に選び、その瞬間に最も低いホット度合いを有するチャネルを検索する。
【0070】
上記で説明したように、いくつかの実施形態では、セットアソシアティブキャッシュディレクトリ内のセット競合等のキャッシュディレクトリエントリは、退避競合について監視され、情報は、メモリシステムをリバランスするために公開される。ある特定の実施形態では、退避競合情報は、オペレーティングシステム(OS)、ハイパーバイザ(HV)、メモリコントローラ、又は、他のページメモリマネージャのうち1つ以上に公開される。いくつかの実施形態では、メモリマネージャによる将来の物理ページ(例えば、フレーム)メモリ割り振りは、キャッシュディレクトリ内の退避を回避してキャッシュディレクトリ動作を加速し、キャッシュディレクトリの性能、したがって全体的なシステム性能を改善するように変更される。
【0071】
特徴及び要素が特定の組み合わせで上に説明されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。いくつかの実施形態において本明細書に記載される装置は、汎用コンピュータ又はプロセッサによる実施のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施され得る。コンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、磁気媒体(例えば、内蔵ハードディスク及びリムーバブルディスク)、磁気光学媒体、並びに、光学媒体(例えば、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD))が挙げられる。
【0072】
様々な実施形態の前述の詳細な説明では、その一部を形成し、本発明を実施することができる特定の好ましい実施形態を例として示す添付図面を参照した。これらの実施形態は、当業者が本発明を実施することを可能にするために十分詳細に説明されており、他の実施形態が利用されてもよく、本発明の範囲から逸脱することなく論理的、機械的及び電気的変更が行われてもよいことを理解されたい。当業者が本発明を実施することを可能にするために必要でない詳細を避けるために、説明は、当業者に知られている特定の情報を省略する場合がある。更に、本開示の教示を組み込む多くの他の様々な実施形態が、当業者によって容易に構築され得る。したがって、本発明は、本明細書に記載の特定の形態に限定されることを意図するものではなく、逆に、本発明の範囲内に合理的に含まれ得るそのような代替形態、修正形態及び均等物を包含することを意図するものである。したがって、前述の詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ定義される。本明細書に記載される実施形態及び実施例の上記の詳細な説明は、限定ではなく、例示及び説明のためにのみ提示されている。例えば、説明された動作は、任意の適切な順序又は方法で行われる。したがって、本発明は、上記で開示され、本明細書で特許請求される基本的な基礎原理の範囲内に入るあらゆる修正、変形又は等価物を包含することが企図される。
【0073】
上記の詳細な説明及びそこに記載される実施例は、限定のためではなく、例示及び説明のためにのみ提示されている。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2023-08-21
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
キャッシュディレクトリを管理するための方法であって、
ハードウェア制御論理が、前記キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合を監視することと、
前記ハードウェア制御論理が、メモリマネージャのためのキャッシュディレクトリ犠牲エントリ情報を生成することと、を含む、
方法。
【請求項2】
生成された前記キャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更することを含む、
請求項1の方法。
【請求項3】
前記キャッシュディレクトリは、ページレベルセットアソシアティブキャッシュディレクトリであり、各エントリは、メモリのページに対応しており、キャッシュディレクトリ犠牲エントリ情報を生成することは、前記退避競合のうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報をメモリにログ記録することを含む、
請求項1の方法。
【請求項4】
前記キャッシュディレクトリ内の退避競合を監視することは、前記キャッシュディレクトリから最も直近に退避したエントリを記憶する競合犠牲バッファを読み出すことを含む、
請求項3の方法。
【請求項5】
ログ記録することは、前記退避したエントリのうち少なくとも1つに関する前記キャッシュディレクトリ犠牲エントリ情報を、仮想メモリマネージャによって読み出し可能なカーネルメモリに記憶することを含む、
請求項3の方法。
【請求項6】
ログ記録することは、前記退避したエントリのうち少なくとも1つに関する前記キャッシュディレクトリ犠牲エントリ情報を、前記制御論理によって読み出し可能なログバッファに記憶することを含む、
請求項3の方法。
【請求項7】
生成された前記キャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページの物理アドレスを異なるメモリチャネルに割り当てることによって、前記退避したエントリのうち少なくとも1つに関する生成された前記キャッシュディレクトリ犠牲エントリ情報に基づいて、メモリチャネルの輻輳を低減することを含む、
請求項1の方法。
【請求項8】
前記メモリマネージャが、前記ページレベルセットアソシアティブキャッシュディレクトリ内の異なるセットへの移動をもたらすように、メモリのページに対するページレベル物理アドレス割り当てを変更することよって、キャッシュディレクトリ競合を低減することを含む、
請求項3の方法。
【請求項9】
退避競合の連続ログ記録を提供する第1のモードと、条件データが満たされたことに基づいて退避のログ記録を提供する第2のモードと、を含むキャッシュ退避監視のマルチモード動作と、
ログ記録される競合退避の数のサンプリングレートと、
記憶される退避競合の数を設定するカウント設定と、
のうち少なくとも1つを表すデータを用いて、1つ以上の構成レジスタを設定することを含む、
請求項1の方法。
【請求項10】
生成することは、前記ハードウェア制御論理が、前記キャッシュディレクトリ内で検出された複数の退避競合に関するキャッシュディレクトリ犠牲エントリ情報を生成することを含む、
請求項1の方法。
【請求項11】
装置であって、
キャッシュ階層にアクセスする1つ以上のプロセッサと、
キャッシュディレクトリを記憶するように動作するメモリと、
ハードウェア制御論理と、を備え、
前記ハードウェア制御論理は、
前記キャッシュディレクトリ内のキャッシュディレクトリエントリ間の退避競合を監視することと、
メモリマネージャのためのキャッシュディレクトリ犠牲エントリ情報を生成することと、
を行うように動作する、
装置。
【請求項12】
前記キャッシュディレクトリは、ページレベルセットアソシアティブキャッシュディレクトリであり、各エントリは、メモリのページに対応しており、
前記ハードウェア制御論理は、
前記キャッシュディレクトリから最も直近に退避したエントリを記憶するように構成された競合犠牲バッファと、
退避競合のうち少なくとも1つに関するキャッシュディレクトリ犠牲エントリ情報を、メモリマネージャによって読み出し可能なメモリにログ記録することによって、前記犠牲バッファからキャッシュディレクトリ犠牲エントリ情報を生成するように動作するコントローラと、を備える、
請求項11の装置。
【請求項13】
前記ハードウェア制御論理は、前記コントローラによって読み出し可能及び書き込み可能なログバッファを含み、前記コントローラは、前記退避したエントリのうち少なくとも1つに関する前記キャッシュディレクトリ犠牲エントリ情報を前記ログバッファに記憶するように動作する、
請求項12の装置。
【請求項14】
生成された前記キャッシュディレクトリ犠牲エントリ情報に基づいて、メモリのページに対するページレベル物理アドレス割り当てを変更することによって、将来のキャッシュディレクトリ競合を低減するように動作するメモリマネージャを備える、
請求項11の装置。
【請求項15】
退避競合の連続ログ記録を提供する第1のモードと、条件データが満たされたことに基づいて退避のログ記録を提供する第2のモードと、を含むキャッシュ退避監視のマルチモード動作と、
ログ記録される競合退避の数のサンプリングレートと、
記憶される退避競合の数を設定するカウント設定と、
のうち少なくとも1つを表すデータを用いて、前記コントローラの制御を提供するように構成された構成レジスタを備える、
請求項12の装置。
【請求項16】
請求項11~15の何れかの装置を備えるシステムであって、
前記1つ以上のプロセッサは、ホストプロセッサを備え、
前記メモリは、前記ホストプロセッサに結合されており、複数のリモートメモリデバイスを備え、
スケーラブルデータファブリックは、前記ホストプロセッサ及び前記複数のリモートメモリデバイスに結合されており、前記ハードウェア制御論理を備える、
システム
【国際調査報告】