(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-26
(54)【発明の名称】プローブフィルタディレクトリ管理
(51)【国際特許分類】
G06F 12/0817 20160101AFI20241219BHJP
【FI】
G06F12/0817
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024534112
(86)(22)【出願日】2022-12-09
(85)【翻訳文提出日】2024-06-19
(86)【国際出願番号】 US2022052365
(87)【国際公開番号】W WO2023121886
(87)【国際公開日】2023-06-29
(32)【優先日】2021-12-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】アミット ピー. アプテ
(72)【発明者】
【氏名】ケビン マイケル リパク
(72)【発明者】
【氏名】ガネシュ バラクリシュナン
(72)【発明者】
【氏名】ヴィドヒャナサン カリヤナスンダラム
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205PP11
(57)【要約】
データ処理システムは、複数のコヒーレントマスタと、複数のコヒーレントスレーブと、コヒーレントデータファブリックと、を含む。コヒーレントデータファブリックは、複数のコヒーレントマスタに結合されたアップストリームポートと、複数のコヒーレントスレーブに結合されたダウンストリームポートと、を有し、それらの間でアクセスを選択的にルーティングする。コヒーレントデータファブリックは、プローブフィルタ及びディレクトリクリーナを含む。プローブフィルタは、ダウンストリームポートのうち少なくとも1つに関連付けられ、各エントリについての情報を記憶する複数のエントリを有する。ディレクトリクリーナは、プローブフィルタを周期的にスキャンし、第1のエントリがスキャンされた後にプローブフィルタから第1のエントリを選択的に除去する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
データ処理システムであって、
複数のコヒーレントマスタと、
複数のコヒーレントスレーブと、
前記複数のコヒーレントマスタに結合されたアップストリームポートと、前記複数のコヒーレントスレーブに結合されたダウンストリームポートと、を有し、それらの間でアクセスを選択的にルーティングするコヒーレントデータファブリックと、を備え、
前記コヒーレントデータファブリックは、
前記ダウンストリームポートのうち少なくとも1つに関連付けられ、各エントリについての情報を記憶する複数のエントリを有するプローブフィルタと、
前記プローブフィルタを周期的にスキャンし、第1のエントリがスキャンされた後に前記プローブフィルタから前記第1のエントリを選択的に除去するディレクトリクリーナと、を備える、
データ処理システム。
【請求項2】
前記ディレクトリクリーナは、前記ディレクトリクリーナが前記プローブフィルタ内の前記複数のエントリを周期的にスキャンするレートを確立するタイマを備える、
請求項1のデータ処理システム。
【請求項3】
前記ディレクトリクリーナは、
前記第1のエントリのデータのコピーを有する任意のコヒーレントマスタに無効化プローブを送信して、それらの対応するキャッシュ階層から、変更されたデータをライトバックすることと、
前記プローブフィルタから前記第1のエントリを除去することと、
によって、前記第1のエントリを選択的に除去する、
請求項1のデータ処理システム。
【請求項4】
前記プローブフィルタは、ラインプローブフィルタであり、前記ディレクトリクリーナは、前記情報が、前記第1のエントリが前記複数のコヒーレントマスタ間で共有状態にあることを示すことに応じて、前記第1のエントリを選択的に除去する、
請求項1のデータ処理システム。
【請求項5】
前記プローブフィルタは、領域プローブフィルタであり、前記ディレクトリクリーナは、前記情報が、前記第1のエントリが前記複数のコヒーレントマスタ間で共有状態にあることを示すことに応じて、前記第1のエントリを選択的に除去する、
請求項1のデータ処理システム。
【請求項6】
前記情報は、領域へのアクセスの数と前記領域からの追い出しの数との間の差を示す総参照カウントを含み、前記ディレクトリクリーナは、前記総参照カウントが飽和することに応じて、前記第1のエントリを除去する、
請求項1のデータ処理システム。
【請求項7】
前記ダウンストリームポートのうち少なくとも1つに関連付けられ、前記データ処理システムにキャッシュされた対応するメモリリソースからのデータに関する情報を記憶する複数のエントリを有する複数の追加プローブフィルタを備え、
前記ディレクトリクリーナは、前記複数の追加プローブフィルタ内のエントリを周期的にスキャンし、第2のエントリがスキャンされた後に、前記複数の追加プローブフィルタのうち対応する追加プローブフィルタから前記第2のエントリを選択的に除去する、
請求項1のデータ処理システム。
【請求項8】
前記プローブフィルタは、メモリの対応する領域が前記データ処理システム内の複数の処理ノード間で共有されていることを示す共有状態を記憶する領域プローブフィルタを備える、
請求項1のデータ処理システム。
【請求項9】
データ処理システムのためのコヒーレントデータファブリックであって、
複数のコヒーレントマスタに結合されるように構成された複数のアップストリームポートと、
メモリリソースに結合されるように構成された複数のダウンストリームポートと、
前記複数のアップストリームポートを前記複数のダウンストリームポートに選択的に結合するためのクロスバールータと、
前記複数のダウンストリームポートのうち少なくとも1つに関連付けられ、各エントリについての情報を記憶する複数のエントリを有するプローブフィルタと、
前記プローブフィルタを周期的にスキャンし、第1のエントリがスキャンされた後に前記プローブフィルタから前記第1のエントリを選択的に除去するディレクトリクリーナと、を備える、
コヒーレントデータファブリック。
【請求項10】
前記ディレクトリクリーナは、前記ディレクトリクリーナが前記プローブフィルタ内の前記複数のエントリを周期的にスキャンするレートを確立するタイマを備える、
請求項9のコヒーレントデータファブリック。
【請求項11】
前記ディレクトリクリーナは、
前記第1のエントリのデータのコピーを有するコヒーレントマスタに結合された前記複数のアップストリームポートの何れかに無効化プローブを送信して、それらの対応するキャッシュ階層から、変更されたデータをライトバックすることと、
前記プローブフィルタから前記第1のエントリを除去することと、
によって、前記第1のエントリを選択的に除去する、
請求項9のコヒーレントデータファブリック。
【請求項12】
前記プローブフィルタは、ラインプローブフィルタであり、前記ディレクトリクリーナは、前記情報が、前記第1のエントリが前記複数のコヒーレントマスタ間で共有状態にあることを示すことに応じて、前記第1のエントリを選択的に除去する、
請求項9のコヒーレントデータファブリック。
【請求項13】
前記プローブフィルタは、領域プローブフィルタであり、前記ディレクトリクリーナは、前記情報が、前記第1のエントリが前記複数のコヒーレントマスタ間で共有状態にあることを示すことに応じて、前記第1のエントリを選択的に除去する、
請求項9のコヒーレントデータファブリック。
【請求項14】
前記情報は、領域へのアクセスの数と前記領域からの追い出しの数との間の差を示す総参照カウントを含み、前記ディレクトリクリーナは、前記総参照カウントが飽和することに応じて、前記第1のエントリを除去する、
請求項9のコヒーレントデータファブリック。
【請求項15】
前記プローブフィルタは、メモリの対応する領域が前記データ処理システム内の複数の処理ノード間で共有されていることを示す共有状態を記憶する領域プローブフィルタを備える、
請求項9のコヒーレントデータファブリック。
【請求項16】
データ処理システムの少なくとも1つのプローブフィルタのエントリを周期的にクリーニングする方法であって、
ディレクトリクリーナのタイマを初期化することと、
前記タイマの値に基づいて、前記少なくとも1つのプローブフィルタ内の次のエントリを読み取ることと、
前記次のエントリが有効である場合、前記次のエントリが前記データ処理システム内の何れのキャッシュにもキャッシュされていないデータ要素を参照するという指標に応じて、前記ディレクトリクリーナを使用して、前記少なくとも1つのプローブフィルタから前記次のエントリを選択的に除去することと、を含む、
方法。
【請求項17】
前記少なくとも1つのプローブフィルタ内のエントリの総参照カウントを維持することであって、前記総参照カウントは、前記エントリの領域へのアクセスと追い出しとの間の差を示す、ことと、
前記総参照カウントが飽和したことに応じて、前記少なくとも1つのプローブフィルタから前記次のエントリを除去することと、を含む、
請求項16の方法。
【請求項18】
前記次のエントリを選択的に除去することは、前記次のエントリが複数のコヒーレントマスタ間で共有状態にあることに応じて、前記次のエントリを除去することを含む、
請求項16の方法。
【請求項19】
前記少なくとも1つのプローブフィルタは、ラインプローブフィルタ及び領域プローブフィルタのうち何れかを備える、
請求項16の方法。
【請求項20】
前記少なくとも1つのプローブフィルタからの前記次のエントリを選択的に除去することは、
前記データ処理システム内の複数の処理ノードのうち、前記次のエントリのデータのコピーを有する何れかに無効化プローブを送信して、それらの対応するキャッシュ階層から、前記データの変更されたコピーをライトバックすることと、
前記少なくとも1つのプローブフィルタ内の前記次のエントリを除去することと、を含む、
請求項16の方法。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、一般に、安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップで形成されるメインメモリを使用する。しかしながら、DRAMチップは、比較的長いアクセス時間を受ける。性能を向上させるために、データプロセッサは、通常、キャッシュとして知られる少なくとも1つのローカル高速メモリを含む。マルチコアデータプロセッサでは、各データプロセッサコアは、それ自体の専用上位レベルキャッシュを有し得るが、下位レベルキャッシュは、データプロセッサコアによって共有される。例えば、典型的な構成は、4つのデータプロセッサコアを含み、その各々は、それら自身の専用L1及びL2キャッシュを有するが、L3キャッシュを共有する。
【0002】
より高度なコンピューティングシステムでは、各マルチコアプロセッサ自体を、1つ以上の他のマルチコアプロセッサと相互接続して、データ処理ファブリックを形成することができる。データ処理ファブリックは、いくつかの個別のデータチャネルに編成された大きなメインメモリに接続することができる。
【0003】
そのようなアーキテクチャを使用するコンピュータシステムでは、異なる処理ノードによって使用され得るデータのコヒーレンシを維持するために特別な予防措置を講じなければならない。例えば、プロセッサがあるメモリアドレスのデータにアクセスしようとする場合、プロセッサは、先ず、そのメモリが別のキャッシュに記憶されており、変更されているかどうかを判定しなければならない。このキャッシュコヒーレンシプロトコルを実施するために、キャッシュは、典型的には、システム全体にわたってデータコヒーレンシを維持するためにキャッシュラインのステータスを示す複数のステータスビットを含む。1つの一般的なコヒーレンシプロトコルは、「MOESI」プロトコルとして知られている。MOESIプロトコルによれば、各キャッシュラインは、キャッシュラインが変更(modified)されたこと(M)、キャッシュラインが排他的(exclusive)(E)若しくは共有(shared)(S)であること、又は、キャッシュラインが無効(invalid)(I)であることを示すビットを含む、ラインが何れのMOESI状態にあるかを示すステータスビットを含む。オーナーシップ(owned)を有する(O)状態は、ラインが1つのキャッシュ内で変更されていること、他のキャッシュ内に共有コピーが存在し得ること、及び、メモリ内のデータが古い(stale)ことを示す。
【0004】
コヒーレンシを維持するために、これらのシステムは、「プローブ(probes)」を使用して、コンピュータシステム内の様々なキャッシュ間で通信する。プローブは、コンピュータシステム内のコヒーレンシポイントからコンピュータシステム内の1つ以上のキャッシュに渡されるメッセージであり、キャッシュがデータブロックのコピーを有するかどうかを判定し、任意選択で、キャッシュがデータブロックを配置すべき状態を示す。処理ノードは、プローブを受信した後、適切なアクションを取ることによってプローブに応答する。
【0005】
プローブの送信及びプローブへの応答に関連付けられた帯域幅は、特に多数のプロセッサを使用するシステムの場合、すぐに性能の制限要因になる可能性がある。このようなシステムでは、不要なプローブをフィルタリングすることによって帯域幅要件を低減するためにプローブフィルタを含むことが知られている。プローブフィルタは、システムトラフィック及びアクセス待ち時間を低減することができるが、システム内の全てのキャッシュラインの状態を維持するために大量の記憶空間を必要とする。更に、ルックアップされる必要があるメモリのサイズが大きすぎる場合、プローブフィルタは、アクセス要求と、プローブが発行される必要がないという決定と、の間にクロックサイクル遅延を追加し得る。
【0006】
これらの制限のために、領域サイズがキャッシュラインサイズよりも大きい「領域」プローブフィルタとしてプローブフィルタを実装することが知られている。データ処理システム内の何処かにキャッシュされたローカルメモリ内の各キャッシュラインの状態の記録を維持するのではなく、領域プローブフィルタは、データ処理システム内の何処かにキャッシュされた少なくとも1つのキャッシュラインを含む領域を識別する。キャッシュ内でミスする時折試行されるアクセスは、ラインプローブフィルタを使用することと比較して、領域プローブフィルタを使用することによる面積の低減によるコスト節約によって相殺されるよりも多い。
【0007】
しかしながら、領域プローブフィルタの使用は、時間が経つにつれて、領域プローブフィルタが、対応するキャッシュから追い出された(エビクトされた)キャッシュラインに関連付けられるが、その追い出しは、領域プローブフィルタによってカバーされるアドレスのより大きなスパンのために明白ではない領域エントリによって引き起こされる「プラーク(plaque)」又は望ましくない蓄積で乱雑になるという問題を引き起こす。
【図面の簡単な説明】
【0008】
【
図1】先行技術において既知のデータ処理システムを示すブロック図である。
【
図2】いくつかの実施形態による、データ処理システムのブロック図である。
【
図3】いくつかの実施形態による、
図2のプローブフィルタのエントリのブロック図である。
【
図4】いくつかの実施形態による、
図2のディレクトリクリーナの動作を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下の説明において、異なる図面における同一の符号の使用は、同様のアイテム又は同一のアイテムを示す。別段の言及がなければ、「結合される(coupled)」という単語及びその関連する動詞形は、当該技術分野で周知の手段による直接接続及び間接電気接続の両方を含み、また、別段の言及がなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も同様に意味する。
【0010】
データ処理システムは、複数のコヒーレントマスタと、複数のコヒーレントスレーブと、コヒーレントデータファブリックと、を含む。コヒーレントデータファブリックは、複数のコヒーレントマスタに結合されたアップストリームポートと、複数のコヒーレントスレーブに結合されたダウンストリームポートと、を有し、それらの間でアクセスを選択的にルーティングする。コヒーレントデータファブリックは、プローブフィルタ及びディレクトリクリーナを含む。プローブフィルタは、ダウンストリームポートのうち少なくとも1つに関連付けられ、各エントリについての情報を記憶する複数のエントリを有する。ディレクトリクリーナは、プローブフィルタを周期的にスキャンし、第1のエントリがスキャンされた後にプローブフィルタから第1のエントリを選択的に除去する。
【0011】
データ処理システムのためのコヒーレントデータファブリックは、複数のアップストリームポートと、複数のダウンストリームポートと、クロスバールータと、プローブフィルタと、ディレクトリクリーナと、を含む。複数のアップストリームポートは、複数のコヒーレントマスタに結合されるように構成される。複数のダウンストリームポートは、メモリリソースに結合されるように構成される。クロスバールータは、複数のアップストリームポートを複数のダウンストリームポートに選択的に結合する。プローブフィルタは、複数のダウンストリームポートのうち少なくとも1つに関連付けられ、各エントリについての情報を記憶する複数のエントリを有する。ディレクトリクリーナは、プローブフィルタを周期的にスキャンし、第1のエントリがスキャンされた後にプローブフィルタから第1のエントリを選択的に除去する。
【0012】
データ処理システムの少なくとも1つのプローブフィルタのエントリを周期的にクリーニングする方法は、ディレクトリクリーナのタイマを初期化することを含む。少なくとも1つのプローブフィルタ内の次のエントリが、タイマの値に基づいて読み取られる。次のエントリが有効である場合、次のエントリがデータ処理システム内の何れのキャッシュにもキャッシュされていないデータ要素を参照するという指標に応じて、次のエントリが、ディレクトリクリーナを使用して少なくとも1つのプローブフィルタから選択的に除去される。
【0013】
図1は、先行技術において既知のデータ処理システム100を示すブロック図である。データ処理システム100は、それぞれ「P0」、「P1」、「P2」、「P3」とラベル付けされた4つの処理ノード110、120、130、140のセットを含む。
【0014】
各処理ノードは、双方向高速データリンクによって2つの隣接する処理ノードに相互接続される。例えば、処理ノード110は、それぞれの高速データリンクによって処理ノード120及び140に接続される。処理ノード120、130、140の各々は、他のそれぞれの高速データリンクを使用して2つの隣接する処理ノードに接続される。
【0015】
図1に示すように、各処理ノードは、3つの関連する高速データリンクを有する。データ処理システム100は4つの処理ノードを含むので、各処理ノードは、利用可能なリンクのうち2つを使用して隣接する処理ノードに接続し、別の目的のために使用することができる1つの利用可能な高速データリンクを残す。
図1に示される例では、処理ノード110は、残りの高速データリンクを使用して入出力(I/O)デバイス112に接続される。次に、I/Oデバイス112は、「サウスブリッジ」114として知られる低速周辺ハブに接続される。サウスブリッジ114は、システム100のBIOSとして機能する基本入出力システム(BIOS)メモリ116に接続され、処理ノード110はBIOSを実行するので、BIOSサービスプロセッサ(BSP)として知られている。処理ノード120は、I/Oデバイス122に接続され、それはI/Oデバイス124に接続され、それは次にI/Oデバイス126に接続される。これらのI/Oデバイスは、例えば、I/Oデバイス122がPCIeルート複合体であり、I/Oデバイス124がPCIeハブであり、I/Oデバイス126がPCIeエンドポイントデバイスである、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCIe)バスであってよい。処理ノード130は、同様に、I/Oデバイス132に接続され、それはI/Oデバイス134に接続され、それは次にI/Oデバイス136に接続される。処理ノード140は、単一のI/Oデバイス142に接続される。
【0016】
また、各処理ノードは、関連するメモリを有する。したがって、処理ノード110は関連するメモリ118を有し、処理ノード120は関連するメモリ128を有し、処理ノード130は関連するメモリ138を有し、処理ノード140は関連するメモリ148を有する。各処理ノードは、統合メモリコントローラを使用してそのそれぞれのメモリに接続する。メモリ118、128、138、148は、各処理ノードにアクセス可能な統合システムメモリを形成する。メモリアクセス要求がネットワークを「ホップ(hop)」する必要があるために、処理ノードがローカルメモリにアクセスするよりもリモートメモリにアクセスするのにより長い時間がかかるので、データ処理システム100は、不均等メモリアーキテクチャ(NUMA)を実装する。隣接するプロセッサへのプロセッサ間リンクを使用するプロセッサのネットワークは、分散型マルチプロセッサデータ処理システムの1つの例示的なアーキテクチャである。別の例示的なアーキテクチャは、ポイントツーポイントリンクの代わりに大きなクロスバーネットワークを使用する。
【0017】
各処理ノードは、個別のキャッシュ階層を維持する。キャッシュ階層は、その分散型メモリシステムの最後にアクセスされたメモリ位置を含むキャッシュとして知られる1つ以上のレベルのローカル高速メモリを含む。参照の局所性の原理を使用することによって、各キャッシュ階層は、そのそれぞれのデータ処理ノードが効率的に動作して、データアクセス、特に、1つ以上のプロセッサ間リンクを「ホップ」するのに長い時間がかかる可能性があるデータアクセスの数を低減することを可能にする。
【0018】
分散型メモリは、複数の処理ノードにアクセス可能な統合システムメモリを形成し、複数の処理ノードが同じデータにアクセスする必要がある場合があるので、データ処理システム100内のデータのコヒーレンシを維持することが重要である。一般に、コヒーレンシとは、メモリシステムの状態が全ての処理ノードに対して同じに見えることを意味し、したがって、異なるプログラムスレッドが処理ノードに割り当てられた場合、それらはデータの一貫性のないコピーを処理することによってプログラム障害を引き起こさない。
【0019】
データ処理システム100は、ローカルメモリに接続された各ノードに関連付けられた「プローブフィルタ」を維持することによってコヒーレンシを維持する。プローブフィルタは、何れの処理ノードがデータ要素のコピーを有しているか、何れの処理ノードがデータ要素を「所有」しているか、及び、所有者がデータを変更したかどうかを追跡する。例えば、特定のデータ要素が処理ノード110に関連付けられているが、処理ノード110がそのキャッシュ階層にコピーを有し、それを変更したと仮定する。処理ノード110に関連付けられたプローブフィルタは、処理ノード120がそれにアクセスしようと試みる場合、キャッシュ階層内のデータの変更されたコピーがフェッチされ、メモリ118内の古い又は「ダーティ」コピーではなく、処理ノード120に転送されることを保証する。
【0020】
ここで説明する様々な実施形態によれば、データ処理システムは、古くなった可能性があるエントリを周期的にクリーニングするディレクトリクリーナを含む。言い換えれば、それは、経時的に蓄積した「プラーク」をターゲットとし、除去するために領域プローブフィルタを「フロス(floss)」する機構を提供する。
【0021】
図2は、いくつかの実施形態による、データ処理システム200のブロック図である。データ処理システム200は、コヒーレントマスタ210のセット、データファブリック220、コヒーレントスレーブ230のセット、及び、メインメモリ240を含む。
図2に示す例では、コヒーレントマスタ210は、各々211と番号付けされた中央処理装置(CPU)コア複合体のセットを含む。各CPUコア複合体211は、複数の個々のCPUコアを含む。1つの典型的な実施形態では、各CPUコアは、それ自体のレベル1(L1)及びレベル2(L2)命令及び/又はデータキャッシュを有するが、CPUコア複合体211は、共有レベル3(L3)命令及びデータキャッシュを有する。
【0022】
データファブリック220は、アップストリームポート211のセット、クロスバールータ222、ダウンストリームポート223のセット、プローブフィルタ224のセット、及び、ディレクトリクリーナ225を含む。各アップストリームポート221は、コヒーレントマスタ、この例ではCPUコア複合体211のうち何れか(したがって「CM」とラベル付けされている)への第1の双方向接続と、クロスバールータ222への双方向接続と、を有する。各ダウンストリームポート223は、クロスバールータ222への第1の双方向接続と、メモリコントローラ231のうち何れかへの第2の双方向接続と、を有し、したがって「CS」とラベル付けされる。各プローブフィルタ224は、クロスバールータ222及び2つのダウンストリームポート223に接続され、制御入力を有する。ディレクトリクリーナ225は、各プローブフィルタ224に接続された出力を有し、内部タイマ226を有する。
【0023】
コヒーレントスレーブ230は、各々が「MC」とラベル付けされたメモリコントローラ231のセットを含む。各コヒーレントスレーブ231は、データファブリック220のそれぞれのダウンストリームポート223に接続された第1の双方向ポートと、第2の双方向ポートと、を有する。
【0024】
メインメモリ240は、各々が「MEM」とラベル付けされたメモリ241のセットを含む。各メモリ241は、対応するメモリコントローラ230の第2の双方向ポートに双方向に接続される。各メモリ要素241は、ダイナミックランダムアクセスメモリ(DRAM)、永続記憶装置を有する不揮発性メモリ(NVDIMM-P)等のあるタイプの大容量記憶メモリを使用して形成することができる。各メモリコントローラ231及びその関連するメモリ241は、共にメモリチャネルを形成する。
【0025】
データ処理システム200は、大きな分散型メインメモリ240を形成する多くの処理要素及び多くのメモリチャネルを有する大きなシステムである。したがって、データ処理システム200は、サーバ及びデータセンタ用途において有用である。しかしながら、
図1に示されるような複数のポイントツーポイント相互接続を使用する代わりに、データファブリック220を使用するデータ処理システム200は、メモリコントローラ231を使用して、CPUコア複合体211からメモリ要素241にメモリアクセス要求をルーティングする。
【0026】
アクセスの適切なルーティングを決定するために、形成された各メモリチャネルは、関連するアドレス空間及び関連するプローブフィルタ224を有する。
図2の実施形態では、各プローブフィルタ224は、2つのメモリチャネルに関連付けられるが、他の実施形態では、各プローブフィルタは、1つのメモリチャネルのみ、又は、3つ以上のメモリチャネルに関連付けられ得る。
【0027】
各プローブフィルタ224は、データ処理システム200内の任意の処理ノードに記憶されている、それが接続されているメモリチャネルに関連付けられたメモリ要素のディレクトリを実装する。
図2の例では、各プローブフィルタ224は、メインメモリ240の何れの領域がデータ処理システム200内の何処かにキャッシュされたキャッシュラインを含むか、並びに、キャッシュラインの所有者及び何れの処理ノードがデータを所有しているか、何れの処理ノードがデータのコピーを維持しているか、データが変更されているかどうか等の様々な他の状態情報を示す領域プローブフィルタである。
【0028】
以下で更に説明する様々な実施形態によれば、ディレクトリクリーナ225は、データ処理システム200内の各プローブフィルタ224を周期的にスキャンし、スキャンに応じてエントリを選択的に除去する。1つの有用な基準は、キャッシュラインが「プラーク」又は古いプローブフィルタエントリの不要な蓄積を含む可能性があることを示すかどうかである。「プラーク」を引き起こす古いプローブフィルタエントリは、領域をキャッシュに割り当て、プローブフィルタに記録させたキャッシュラインが、プローブフィルタの通知なしに、対応するキャッシュから後に追い出される領域プローブフィルタエントリであり得る。この問題は、CPUキャッシュの数及びキャッシュ内のラインの数が増えるにつれてより頻繁に発生する可能性があり、オペレーティングシステムがCPUコア間でワークロードを移行させる場合により頻繁に発生する可能性がある。
【0029】
特に、ディレクトリクリーナ225は、タイマ226を使用して、その状態がプローブフィルタ224に記録されている領域のセット全体をスキャンする。例えば、ディレクトリクリーナ225は、各プローブフィルタ224、及び、プローブフィルタ内の各エントリを順にインデックス付けすることができる。ディレクトリクリーナ225がプローブフィルタからラインを除去するかどうかを決定するために使用することができる様々な規則がある。例えば、ディレクトリクリーナ225は、既に無効状態にあるラインのクリーニングを自動的にスキップする。
【0030】
除去のために選択されるラインは、異なる実施形態において変化する。いくつかの実施形態では、ディレクトリクリーナ225は、全ての有効なエントリを定期的に除去する。他の実施形態では、ディレクトリクリーナ225は、領域プローブフィルタ内の共有ライン等のように、「プラーク」が特に蓄積しやすいラインを除去することによって、よりターゲットを絞った手法を除去する。
【0031】
いくつかの実施形態では、ディレクトリクリーナ225は、共有状態にある全ての有効なエントリを除去し、単一の処理ノードにのみ記憶されているエントリをスキップする。この実施形態は、「プラーク」を形成する可能性がより高いエントリ、すなわち、キャッシュに記憶されたが、その後に所有者のキャッシュから追い出されたがプローブフィルタから除去されなかった領域に1つの関連キャッシュラインのみを有するエントリのみを具体的にターゲットとするという利点を有する。
【0032】
プローブフィルタ224から領域エントリを除去するために、ディレクトリクリーナ225は、エントリを含む特定のプローブフィルタ224に、無効化プローブを、データのコピーを含み得る全ての処理ノードに送信させる。この場合、データを変更した任意のノードは、変更されたデータをメインメモリ240にライトバックし、全てのキャッシュから対応するラインを追い出すが、データの変更されていないコピーのみを維持する処理ノードは、キャッシュラインを追い出すが、ライトバックを必要としない。全てのライトバックが完了すると、プローブフィルタ224は、例えば、エントリを単に無効にすることによってエントリを除去し、したがって、後続の使用のためにそれを利用可能にする。
【0033】
いくつかの実施形態では、追加の機構が周期的クリーニング技術と共存することができる。この実施形態では、各プローブフィルタエントリは、その領域からの追い出しの数と比較したその領域へのメモリアクセスの数との間の差に等しい「総参照カウント(aggregate reference count)」を維持する。エントリが最初にプローブフィルタに追加される場合、総参照カウントは1に増加される。その後、総参照カウントが0に達し、エントリが全てのキャッシュから追い出された可能性があり、その結果、何れのキャッシュもそのキャッシュディレクトリ内の領域へのキャッシュラインを依然として含まないことを示す場合、エントリは再利用され、コヒーレンシプローブを送信する必要なしにプローブフィルタから除去される(エントリのデータが全てのキャッシュから追い出されているので)。この機構は以前から知られていた。しかしながら、ある状況では、総参照カウントは、システムにおいて「プラーク」を引き起こす可能性がある。例えば、総参照カウントが飽和した場合、すなわち、おそらくカウンタのビット数が少なすぎるために総参照カウントがその最大値に達した場合、その後、システム内の何れのキャッシュも現在データをキャッシュしていないことを示すために、総参照カウントが0まで正確に減分することはない。この状況では、自然な再利用プロセスは機能しないが、ディレクトリクリーナ225は、検出された場合にそれを除去することができ、プローブフィルタは、関連する領域からのキャッシュラインのコピーを有するものとして示される全てのCPUコア複合体に、無効化プローブを送信することができる。
【0034】
図3は、いくつかの実施形態による、
図2のプローブフィルタ224のエントリ300の一部のブロック図である。エントリ300は、領域を識別するアドレスビットを含むアドレスタグフィールド331を有する。例えば、プローブフィルタ224が領域プローブフィルタであり、各キャッシュラインのサイズが64バイトであるが、領域のサイズが4キロバイト(4kB)である場合、アドレスタグフィールド331は、12個の最下位ビットを除く全てのアドレスビットを含む。
【0035】
エントリ300は状態フィールド320を含む。状態フィールド320は、キャッシュのキャッシュライン内の状態ビットと同様の状態ビットを含む。例えば、状態フィールド320は、上述したような「MOESI」プロトコルをサポートすることができる。しかしながら、実施形態にかかわらず、エントリ300は、共有キャッシュラインを示すためのビットを含む。
【0036】
また、エントリ300は、所有者フィールド330を含む。所有者フィールド320は、データを所有するプロセッサソケット、すなわち、データを記憶し、それを変更したCPUコア複合体の位置の指標を示す。キャッシュラインを無効にする前に、メインメモリにダーティデータをライトバックしなければならないのはこのノードである。
【0037】
最後に、エントリ300は、総参照カウントフィールド340を含む。総参照カウントフィールド340は、プローブフィルタがエントリを追加する場合に増分され、対応するエントリへのアクセスごとに増分されるが、エントリが何れかのキャッシュから追い出される場合に減分される。総参照カウントフィールド340が0に戻ると、プローブフィルタ224は、データのコピーを有する全ての処理ノードに無効化プローブを送信し、その後、プローブフィルタ224からラインを除去する。
【0038】
図4は、いくつかの実施形態による、
図2のディレクトリクリーナ225の動作を示すフローチャート400である。フローチャート400において、ディレクトリクリーナ225は、アクションボックス410においてクリーニングプロセスを開始する。アクションボックス420において、ディレクトリクリーナ225はタイマ226を初期化する。アクションボックス430において、ディレクトリクリーナ225はタイマ226を増分する。この時点で、タイマ226の出力は、データファブリック220に記憶された次のプローブフィルタエントリを直接的又は間接的に示す。アクションボックス440において、ディレクトリクリーナ225は、タイマに基づいて次のプローブフィルタインデックスを読み取る。プローブフィルタインデックスは、スキャン動作のためのプローブフィルタ224のうち何れかにおける次のエントリを指す。アクションボックス450において、ディレクトリクリーナ225は、プローブフィルタから有効なエントリを選択する。有効なエントリがあると仮定すると、アクションボックス460において、ディレクトリクリーナ225は、変更(修正)されたデータをメインメモリにコピーバックするために、無効化プローブをエントリの全てのサブスクライバに送信する(又は送信するようにそれぞれのプローブフィルタ424に命令する)。このコンテキストでは、サブスクライバは、そのキャッシュ階層内のエントリのデータの、変更された又は変更されていないコピーを有するデータ処理ノードである。無効化プローブが作用されると、サブスクライバノードは、それらのキャッシュからラインを追い出すことができる。次いで、アクションボックス470において、それぞれのプローブフィルタ224は、例えば、エントリの状態を無効としてマークすることによって、エントリを無効にする。このエントリは、プログラムフローに基づいて将来参照される場合に、別の領域への再割り当てに利用可能である。
【0039】
フローチャート400は、次のエントリがアクションボックス450において有効であると仮定する。しかしながら、次のエントリが有効でない場合、ディレクトリクリーナ225は、更なるアクションを取ることなくアクションボックス430に戻ることによって次のプローブフィルタインデックスに進む。いくつかの実施形態では、次のエントリが無効である場合、フローはアクションボックス430に戻り、フロッシングプロセスは、タイマ226が周期的に増分される場合にのみ継続する。
【0040】
ディレクトリクリーナ225が全てのプローブフィルタ424内のエントリをインデックスする速度は、少なくとも1つのCPUコアによって後にアクセスされるキャッシュラインを含むエントリの無効化が、プログラム実行時間又はユーザエクスペリエンスに著しく影響を及ぼさないように、十分に遅い。次いで、タイマ226の期間は、CPUコアの総数、CPUキャッシュの数、キャッシュ内のラインの数、CPUコア間のマルチスレッド及びワークロード移行の程度、並びに、ラインプローブフィルタの代わりに領域プローブフィルタを使用すること等のように、システムの特定の特性に基づくことができる。
【0041】
したがって、ディレクトリクリーナ225は、データ処理システム200のような大規模な分散型データ処理システムにおいてうまく機能して、データ処理システム200の複雑さのために経時的に「やっかい(sticky)」になるエントリを周期的に除去する。プローブフィルタ224からのエントリの除去(及び対応するCPUキャッシュからの追い出し)は、除去されたエントリが、システムを大幅に減速させることなく後続のプログラム参照時に復元され得るように、十分に低速である。エントリが復元される場合、状態は、あるデータ処理ノードによるその後の使用時にのみ更新され、したがって、「やっかいな」状態は、プローブフィルタから除去され、リフレッシュされる。この機構は、ランダム除去及び総参照カウントに基づく除去等の他の機構と共に機能する。したがって、より大きな分散型処理及びメモリファブリックを有するコンピュータが、サーバ及びデータセンタ等のアプリケーションのためにより低コストで構築されることを可能にする。
【0042】
プローブフィルタ用のディレクトリクリーナを実装する集積回路は、プログラムによって読み取られて使用され得るデータベース又はその他のデータ構造の形態で、コンピュータアクセス可能なデータ構造によって記述又は表されて、直接的に又は間接的に、集積回路を製造し得る。例えば、本データ構造は、ベリログ又はVHDL等の高位設計言語(HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次に、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされてもよい。次に、マスクを、様々な半導体製造工程で使用して、集積回路を製造してもよい。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望の場合、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィック・データ・システム(Graphic Data System、GDS)IIデータであってもよい。
【0043】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。例えば、開示されたフロッシング(flossing)技術は、領域プローブフィルタを使用してキャッシュラインを共有する多数のCPUコアを有するシステムにおいて特に有用であるが、個々のキャッシュラインの状態を追跡するプローブフィルタにも適用可能である。更に、フロッシング技術は、他のプローブフィルタディレクトリ管理技術、例えば、総参照カウントに基づく置換、ランダム選択に基づく置換、新しいエントリのための場所を生成するための典型的な方法置換スキームに基づく置換と併せて有用である。概して、ディレクトリクリーナ225は、エントリが「プラーク」である可能性、すなわち領域プローブフィルタとして実装されている可能性、エントリが共有状態にある可能性、又は、総参照カウンタが飽和したという指標を判定することができる。例示的な実施形態では、各プローブフィルタ224は、2つのダウンストリームポートに接続されたが、様々な実施形態では、プローブフィルタは、単一のダウンストリームポートのみに、又は、3つ以上のダウンストリームポートに接続することができる。
【0044】
したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。
【手続補正書】
【提出日】2024-08-08
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
データ処理システムであって、
複数のコヒーレントマスタと、
複数のコヒーレントスレーブと、
前記複数のコヒーレントマスタに結合されたアップストリームポートと、前記複数のコヒーレントスレーブに結合されたダウンストリームポートと、を有し、それらの間でアクセスを選択的にルーティングするコヒーレントデータファブリックと、を備え、
前記コヒーレントデータファブリックは、
前記ダウンストリームポートのうち少なくとも1つに関連付けられ、各エントリについての情報を記憶する複数のエントリを有するプローブフィルタと、
前記プローブフィルタを周期的にスキャンし、第1のエントリがスキャンされた後に前記プローブフィルタから前記第1のエントリを選択的に除去するディレクトリクリーナと、を備える、
データ処理システム。
【請求項2】
前記ディレクトリクリーナは、前記ディレクトリクリーナが前記プローブフィルタ内の前記複数のエントリを周期的にスキャンするレートを確立するタイマを備える、
請求項1のデータ処理システム。
【請求項3】
前記ディレクトリクリーナは、
前記第1のエントリのデータのコピーを有する任意のコヒーレントマスタに無効化プローブを送信して、それらの対応するキャッシュ階層から、変更されたデータをライトバックすることと、
前記プローブフィルタから前記第1のエントリを除去することと、
によって、前記第1のエントリを選択的に除去する、
請求項1のデータ処理システム。
【請求項4】
前記プローブフィルタは、領域プローブフィルタであり、前記ディレクトリクリーナは、前記情報が、前記第1のエントリが前記複数のコヒーレントマスタ間で共有状態にあることを示すことに応じて、前記第1のエントリを選択的に除去する、
請求項1のデータ処理システム。
【請求項5】
前記情報は、領域へのアクセスの数と前記領域からの追い出しの数との間の差を示す総参照カウントを含み、前記ディレクトリクリーナは、前記総参照カウントが飽和することに応じて、前記第1のエントリを除去する、
請求項1のデータ処理システム。
【請求項6】
前記ダウンストリームポートのうち少なくとも1つに関連付けられ、前記データ処理システムにキャッシュされた対応するメモリリソースからのデータに関する情報を記憶する複数のエントリを有する複数の追加プローブフィルタを備え、
前記ディレクトリクリーナは、前記複数の追加プローブフィルタ内のエントリを周期的にスキャンし、第2のエントリがスキャンされた後に、前記複数の追加プローブフィルタのうち対応する追加プローブフィルタから前記第2のエントリを選択的に除去する、
請求項1のデータ処理システム。
【請求項7】
前記プローブフィルタは、メモリの対応する領域が前記データ処理システム内の複数の処理ノード間で共有されていることを示す共有状態を記憶する領域プローブフィルタを備える、
請求項1のデータ処理システム。
【請求項8】
データ処理システムのためのコヒーレントデータファブリックであって、
複数のコヒーレントマスタに結合されるように構成された複数のアップストリームポートと、
メモリリソースに結合されるように構成された複数のダウンストリームポートと、
前記複数のアップストリームポートを前記複数のダウンストリームポートに選択的に結合するためのクロスバールータと、
前記複数のダウンストリームポートのうち少なくとも1つに関連付けられ、各エントリについての情報を記憶する複数のエントリを有するプローブフィルタと、
前記プローブフィルタを周期的にスキャンし、第1のエントリがスキャンされた後に前記プローブフィルタから前記第1のエントリを選択的に除去するディレクトリクリーナと、を備える、
コヒーレントデータファブリック。
【請求項9】
前記ディレクトリクリーナは、前記ディレクトリクリーナが前記プローブフィルタ内の前記複数のエントリを周期的にスキャンするレートを確立するタイマを備える、
請求項
8のコヒーレントデータファブリック。
【請求項10】
前記プローブフィルタは、領域プローブフィルタであり、前記ディレクトリクリーナは、前記情報が、前記第1のエントリが前記複数のコヒーレントマスタ間で共有状態にあることを示すことに応じて、前記第1のエントリを選択的に除去する、
請求項
8のコヒーレントデータファブリック。
【請求項11】
前記情報は、領域へのアクセスの数と前記領域からの追い出しの数との間の差を示す総参照カウントを含み、前記ディレクトリクリーナは、前記総参照カウントが飽和することに応じて、前記第1のエントリを除去する、
請求項
8のコヒーレントデータファブリック。
【請求項12】
前記プローブフィルタは、メモリの対応する領域が前記データ処理システム内の複数の処理ノード間で共有されていることを示す共有状態を記憶する領域プローブフィルタを備える、
請求項
8のコヒーレントデータファブリック。
【請求項13】
データ処理システムの少なくとも1つのプローブフィルタのエントリを周期的にクリーニングする方法であって、
ディレクトリクリーナのタイマを初期化することと、
前記タイマの値に基づいて、前記少なくとも1つのプローブフィルタ内の次のエントリを読み取ることと、
前記次のエントリが有効である場合、前記次のエントリが前記データ処理システム内の何れのキャッシュにもキャッシュされていないデータ要素を参照するという指標に応じて、前記ディレクトリクリーナを使用して、前記少なくとも1つのプローブフィルタから前記次のエントリを選択的に除去することと、を含む、
方法。
【請求項14】
前記少なくとも1つのプローブフィルタ内のエントリの総参照カウントを維持することであって、前記総参照カウントは、前記エントリの領域へのアクセスと追い出しとの間の差を示す、ことと、
前記総参照カウントが飽和したことに応じて、前記少なくとも1つのプローブフィルタから前記次のエントリを除去することと、を含む、
請求項
13の方法。
【請求項15】
前記次のエントリを選択的に除去することは、前記次のエントリが複数のコヒーレントマスタ間で共有状態にあることに応じて、前記次のエントリを除去することを含む、
請求項
13の方法。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0022
【補正方法】変更
【補正の内容】
【0022】
データファブリック220は、アップストリームポート221のセット、クロスバールータ222、ダウンストリームポート223のセット、プローブフィルタ224のセット、及び、ディレクトリクリーナ225を含む。各アップストリームポート221は、コヒーレントマスタ、この例ではCPUコア複合体211のうち何れか(したがって「CM」とラベル付けされている)への第1の双方向接続と、クロスバールータ222への双方向接続と、を有する。各ダウンストリームポート223は、クロスバールータ222への第1の双方向接続と、メモリコントローラ231のうち何れかへの第2の双方向接続と、を有し、したがって「CS」とラベル付けされる。各プローブフィルタ224は、クロスバールータ222及び2つのダウンストリームポート223に接続され、制御入力を有する。ディレクトリクリーナ225は、各プローブフィルタ224に接続された出力を有し、内部タイマ226を有する。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0024
【補正方法】変更
【補正の内容】
【0024】
メインメモリ240は、各々が「MEM」とラベル付けされたメモリ241のセットを含む。各メモリ241は、対応するメモリコントローラ231の第2の双方向ポートに双方向に接続される。各メモリ241は、ダイナミックランダムアクセスメモリ(DRAM)、永続記憶装置を有する不揮発性メモリ(NVDIMM-P)等のあるタイプの大容量記憶メモリを使用して形成することができる。各メモリコントローラ231及びその関連するメモリ241は、共にメモリチャネルを形成する。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0025
【補正方法】変更
【補正の内容】
【0025】
データ処理システム200は、大きな分散型メインメモリ240を形成する多くの処理要素及び多くのメモリチャネルを有する大きなシステムである。したがって、データ処理システム200は、サーバ及びデータセンタ用途において有用である。しかしながら、
図1に示されるような複数のポイントツーポイント相互接続を使用する代わりに、データファブリック220を使用するデータ処理システム200は、メモリコントローラ231を使用して、CPUコア複合体211からメモ
リ241にメモリアクセス要求をルーティングする。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0036
【補正方法】変更
【補正の内容】
【0036】
また、エントリ300は、所有者フィールド330を含む。所有者フィールド330は、データを所有するプロセッサソケット、すなわち、データを記憶し、それを変更したCPUコア複合体の位置の指標を示す。キャッシュラインを無効にする前に、メインメモリにダーティデータをライトバックしなければならないのはこのノードである。
【国際調査報告】