(57)【要約】キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサのキャッシュコヒーレンスプロトコルと、プロセッサインメモリのキャッシュコヒーレンスプロトコルとの間のインタフェースを提供し、これにより、ホストプロセッサ及びプロセッサインメモリのコヒーレンスメカニズムを分離する。キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサと、異なるベンダによって設計されたプロセッサインメモリデバイスとの間の相互運用性を容易にするために使用され、ホストプロセッサ及びプロセッサインメモリデバイスの両方は、各プロセッサ内のコンピューティングユニット間のコヒーレンス技術を実施してもよい。キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサ及び／又はプロセッサインメモリのキャッシュコヒーレンスプロトコルによって使用される粒度とは異なるキャッシュコヒーレンス許可の粒度をサポートしてもよい。【選択図】図３
2019517687.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサインメモリを含むシステムであって、
前記プロセッサインメモリは、
前記プロセッサインメモリのメモリに存在するデータブロックのブリッジコヒーレンス状態を記憶するように構成されたシャドウディレクトリストレージであって、前記ブリッジコヒーレンス状態は、前記プロセッサインメモリの外部に記憶された前記データブロックの任意のコピーの状態を示す、シャドウディレクトリストレージと、
前記プロセッサインメモリの第１キャッシュコヒーレンスプロトコルと、ホストプロセッサの第２キャッシュコヒーレンスプロトコルと、の間のコヒーレンスメッセージを変換するように構成されたブリッジプロトコル変換ロジックであって、前記第２キャッシュコヒーレンスプロトコルは、前記第１キャッシュコヒーレンスプロトコルと異なっている、ブリッジプロトコル変換ロジックと、
前記コヒーレンスメッセージと、前記シャドウディレクトリストレージの内容とを用いて、前記プロセッサインメモリの前記メモリのデータコヒーレンスを維持するように構成されたブリッジプロトコル制御ロジックと、を備える、
システム。
【請求項２】
前記第２キャッシュコヒーレンスプロトコルは、前記第１キャッシュコヒーレンスプロトコルのブロックサイズと異なるブロックサイズを使用する、
請求項１のシステム。
【請求項３】
前記プロセッサインメモリは、
集積回路ダイのスタックであって、前記プロセッサインメモリの前記メモリが前記集積回路ダイのスタックの複数のメモリ集積回路ダイに含まれ、前記ブリッジプロトコル制御ロジック及び前記ブリッジプロトコル変換ロジックが前記集積回路ダイのスタックの論理集積回路ダイに含まれている、集積回路ダイのスタックと、
対応するプロセッサの少なくとも１つのキャッシュであって、前記プロセッサインメモリのコヒーレンスドメイン内に存在する、少なくとも１つのキャッシュと、をさらに備える、
請求項１のシステム。
【請求項４】
前記少なくとも１つのキャッシュは、ライトスルーキャッシュであり、前記データブロックの前記ブリッジコヒーレンス状態は、ｎｏ−ｈｏｓｔ−ｃｏｐｙ状態、ｈｏｓｔ−ｒｅａｄ状態、及び、ｈｏｓｔ−ｗｒｉｔｔｅｎ状態のうち何れか１つである、
請求項１、２又は３のシステム。
【請求項５】
前記少なくとも１つのキャッシュは、ライトバックキャッシュであり、前記データブロックの前記ブリッジコヒーレンス状態は、ｎｏ−ｈｏｓｔ−ｃｏｐｙ状態、ｈｏｓｔ−ｒｅａｄ状態、ｈｏｓｔ−ｗｒｉｔｔｅｎ状態、及び、ｐｒｏｃｅｓｓｏｒ−ｉｎ−ｍｅｍｏｒｙ−ｍｏｄｉｆｉｅｄ状態のうち何れか１つである、
請求項１、２又は３のシステム。
【請求項６】
前記プロセッサインメモリは、
前記プロセッサインメモリのコヒーレンスドメインの外部にあるメモリサイドキャッシュであって、前記ブリッジプロトコル制御ロジックは、前記データブロックへのメモリアクセスに応じて、前記メモリサイドキャッシュに記憶された前記データブロックの任意のコピーの状態をチェックするように構成されている、メモリサイドキャッシュと、
前記対応するプロセッサの少なくとも１つのキャッシュ内に記憶された前記データブロックのプロセッサインメモリコヒーレンス状態を記憶するように構成されたプロセッサインメモリディレクトリと、
前記プロセッサインメモリディレクトリの内容を用いて、前記少なくとも１つのキャッシュに記憶された前記データブロックのデータコヒーレンスを維持するように構成されたプロセッサインメモリ内コヒーレンスコントローラと、をさらに備える、
請求項１、２又は３のシステム。
【請求項７】
前記プロセッサインメモリに接続されたホストプロセッサであって、前記プロセッサインメモリの前記第１キャッシュコヒーレンスプロトコルと、前記ホストプロセッサの前記第２キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するように構成されたホストブリッジ変換ロジックを含む、ホストプロセッサと、
前記ホストプロセッサのコヒーレンスドメインの外側、且つ、前記プロセッサインメモリのコヒーレンスドメインの外側のメモリサイドキャッシュであって、前記シャドウディレクトリストレージは、前記メモリサイドキャッシュに記憶された前記データブロックの任意のコピーの状態を保存する、メモリサイドキャッシュと、
前記ホストプロセッサ内に記憶され、ホストコピーデータブロックのホストコヒーレンス状態を記憶するように構成されたホストディレクトリと、
前記ホストディレクトリを用いて、前記ホストプロセッサに存在する前記ホストコピーデータブロックのデータコヒーレンスを維持するように構成されたホスト内コヒーレンス制御ロジックと、をさらに備える、
請求項１、２又は３のシステム。
【請求項８】
プロセッサインメモリのメモリに存在するデータブロックのブリッジコヒーレンス状態であって、前記プロセッサインメモリの外部に記憶された前記データブロックの任意のコピーの状態を示すブリッジコヒーレンス状態を、シャドウディレクトリに記憶するステップと、
前記プロセッサインメモリの第１キャッシュコヒーレンスプロトコルと、ホストプロセッサの第２キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するステップであって、前記第２キャッシュコヒーレンスプロトコルは、前記第１キャッシュコヒーレンスプロトコルと異なっている、ステップと、
前記コヒーレンスメッセージと、前記シャドウディレクトリの内容とを用いて、前記プロセッサインメモリの前記メモリのデータコヒーレンスを維持するステップと、を含む、
方法。
【請求項９】
前記第２キャッシュコヒーレンスプロトコルは、前記第１キャッシュコヒーレンスプロトコルのブロックサイズと異なるブロックサイズを使用する、
請求項８の方法。
【請求項１０】
前記プロセッサインメモリの前記メモリのデータコヒーレンスを維持するステップは、前記データブロックのアクセスに応じて、前記データブロックのブリッジコヒーレンス状態を更新するステップを含む、
請求項８又は９の方法。
【請求項１１】
前記プロセッサインメモリの前記メモリのデータコヒーレンスを維持するステップは、
前記プロセッサインメモリのプロセッサの少なくとも１つのキャッシュと、前記プロセッサインメモリの前記メモリとのコヒーレンスを維持するステップであって、前記少なくとも１つのキャッシュは、前記プロセッサインメモリのコヒーレンスドメイン内に存在する、ステップと、を含む、
請求項８又は９の方法。
【請求項１２】
前記プロセッサインメモリの前記メモリのアクセスに応じて、前記プロセッサインメモリのメモリサイドキャッシュをチェックするステップと、
前記プロセッサインメモリのコヒーレンスドメインのキャッシュから前記プロセッサインメモリの前記メモリサイドキャッシュにライトスルーキャッシュポリシーを実施するステップであって、前記シャドウディレクトリの前記データブロックの前記ブリッジコヒーレンス状態は、ｎｏ−ｈｏｓｔ−ｃｏｐｙ状態、ｈｏｓｔ−ｒｅａｄ状態、及び、ｈｏｓｔ−ｗｒｉｔｔｅｎ状態のうち何れか１つである、ステップと、をさらに含む、
請求項８又は９の方法。
【請求項１３】
前記プロセッサインメモリのコヒーレンスドメインのキャッシュから前記プロセッサインメモリのメモリサイドキャッシュにライトバックキャッシュポリシーを実施するステップであって、前記シャドウディレクトリの前記データブロックの前記ブリッジコヒーレンス状態は、ｎｏ−ｈｏｓｔ−ｃｏｐｙ状態、ｈｏｓｔ−ｒｅａｄ状態、ｈｏｓｔ−ｗｒｉｔｔｅｎ状態、及び、ｐｒｏｃｅｓｓｏｒ−ｉｎ−ｍｅｍｏｒｙ−ｍｏｄｉｆｉｅｄ状態のうち何れか１つである、ステップをさらに含む、
請求項８又は９の方法。
【請求項１４】
前記プロセッサインメモリの前記メモリのデータコヒーレンスを維持するステップは、前記データブロックへのメモリアクセスに応じてコヒーレンスメッセージを生成するステップを含む、
請求項８又は９の方法。
【請求項１５】
対応するプロセッサの少なくとも１つのキャッシュ内に記憶された前記データブロックのプロセッサインメモリコヒーレンス状態を記憶するステップと、
プロセッサインメモリディレクトリの内容を用いて、前記少なくとも１つのキャッシュに存在する前記データブロックのデータコヒーレンスを維持するステップと、
前記ホストプロセッサ内に記憶されたホストコヒーレンス状態であって、ホストコピーデータブロックのホストコヒーレンス状態を記憶するステップと、
ホストディレクトリを用いて、前記ホストプロセッサに存在する前記ホストコピーデータブロックのデータコヒーレンスを維持するステップと、をさらに含む、
請求項８又は９の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理システムに関し、より詳細には、処理システムにおけるキャッシュコヒーレンスに関する。
【背景技術】
【０００２】
一般に、プロセッサインメモリ（すなわち、プロセッシングインメモリ又はニアメモリ処理）技術は、処理要素をメモリ（例えば、ランダムアクセスメモリ）に組み込むことによって、データ集約型アプリケーションのエネルギー効率及び性能を向上させる。異種システムアーキテクチャフレームワーク内にプロセッシングインメモリを組み込み、従来のプログラミングモデルをこれらのシステムプロセッサに拡張するには、キャッシュコヒーレンスが必要となる。高度なプロセッサインメモリ設計では、独自のキャッシュ階層を有する複雑な処理エンジンが組み込まれている。しかしながら、システムは、適切な動作のために、これらのキャッシュとホストプロセッサ（すなわち、メインプロセッサ）のキャッシュとの間のコヒーレンスを維持すべきである。シンプルでキャッシュレスなプロセッサインメモリの設計であっても、ホストキャッシュと、プロセッサインメモリで処理されるデータとの間のコヒーレンスを確保する必要がある。
【０００３】
プロセッサインメモリを含むシステムにおいてデータコヒーレンスを提供するための従来技術では、ハードウェアサポートを含まない場合があり、ホストとプロセッサインメモリとの間のキャッシュコヒーレンスを調整するソフトウェアを必要とすることがある。このようなソリューションは、複雑なプログラミングが必要になる。他の技術では、既存のキャッシュコヒーレンスソリューションを拡張して、任意のプロセッサインメモリ設計を含む。システム内の全てのプロセッサ間の統合を必要とする従来のキャッシュコヒーレンスソリューションをプロセッサインメモリに拡張することは、実用的でない場合がある。これは、このソリューションが、システムがどのくらい多くのメモリデバイス（すなわち、プロセッサインメモリデバイス）を含むかを知るためのホスト上のキャッシュコヒーレンス実装を必要とし、システム設計を、設計の相互運用性及びスケーラビリティを制限する特定のバージョン又はタイプのホストプロセッサに制限するためである。また、キャッシュコヒーレンスプロトコル設計は複雑であるため、かかる設計は、確認及び実証が難しく、結果として、既存の実績のあるホストキャッシュコヒーレンスプロトコルに対する望ましくない変更が生じる。既存のコヒーレンスプロトコルの変更を必要としない他の提案されたプロセッサインメモリキャッシュコヒーレンススキームでは、例えばリード共有（すなわち、ホスト及びプロセッサインメモリの両方におけるリードオンリーデータのキャッシュ）等の一般的に使用されるシナリオが許可されていない。
【０００４】
プロセッサインメモリアーキテクチャに対する他のキャッシュコヒーレンス策は、プロセッサインメモリデバイスのキャッシュを考慮せず、プロセッサインメモリデバイスがデータを変更する際にホストキャッシュがコヒーレントであることを確保するように、ホスト側のキャッシュコヒーレンス技術を拡張することに依存する。このような技術では、プロセッサインメモリデバイスが、ホストと一致するキャッシュラインサイズ及びプロトコルを使用することを必要とする。さらに、これらの策は、メモリ（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ））内の各キャッシュラインと共に、１つ以上の専用のキャッシュコヒーレンス状態ビットの記憶を必要とし得るが、専門のメモリモジュールを必要とし、容易に利用可能なメモリコンポーネントが使用できなくなる場合がある。したがって、プロセッサインメモリデバイスを組み込んだシステムのキャッシュコヒーレンスを実現するための改良された技術が望まれている。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の少なくとも１つの実施形態では、システムは、プロセッサインメモリを含む。プロセッサインメモリは、プロセッサインメモリのメモリに存在するデータブロックのブリッジコヒーレンス状態を記憶するように構成されたシャドウディレクトリストレージを含む。ブリッジコヒーレンス状態は、プロセッサインメモリの外部に記憶されたデータブロックの任意のコピーの状態を示している。プロセッサインメモリは、プロセッサインメモリの第１キャッシュコヒーレンスプロトコルと、ホストプロセッサの第２キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するように構成されたブリッジプロトコル変換ロジックを含む。第２キャッシュコヒーレンスプロトコルは、第１キャッシュコヒーレンスプロトコルと異なっている。プロセッサインメモリは、コヒーレンスメッセージ及びシャドウディレクトリストレージの内容を用いて、プロセッサインメモリのメモリのデータコヒーレンスを維持するように構成されたブリッジプロトコル制御ロジックを含む。プロセッサインメモリは、集積回路ダイのスタックを含んでもよい。プロセッサインメモリのメモリは、集積回路ダイのスタックのうち複数のメモリ集積回路ダイに含まれてもよい。ブリッジプロトコル制御ロジック及びブリッジプロトコル変換ロジックは、集積回路ダイのスタックのうちロジック集積回路ダイに含まれてもよい。第２キャッシュコヒーレンスプロトコルは、第１キャッシュコヒーレンスプロトコルのブロックサイズとは異なるブロックサイズを使用してもよい。プロセッサインメモリは、対応するプロセッサの少なくとも１つのキャッシュを含んでもよい。少なくとも１つのキャッシュは、プロセッサインメモリのコヒーレンスドメイン内にあってもよい。少なくとも１つのキャッシュは、ライトスルーキャッシュであってもよく、データブロックのブリッジコヒーレンス状態は、ｎｏ−ｈｏｓｔ−ｃｏｐｙ状態、ｈｏｓｔ−ｒｅａｄ状態及びｈｏｓｔ−ｗｒｉｔｔｅｎ状態のうち何れか１つであってもよい。少なくとも１つのキャッシュは、ライトバックキャッシュであってもよく、データブロックのブリッジコヒーレンス状態は、ｎｏ−ｈｏｓｔ−ｃｏｐｙ状態、ｈｏｓｔ−ｒｅａｄ状態、ｈｏｓｔ−ｗｒｉｔｔｅｎ状態及びｐｒｏｃｅｓｓｏｒ−ｉｎ−ｍｅｍｏｒｙ−ｍｏｄｉｆｉｅｄ状態のうち何れか１つであってもよい。プロセッサインメモリは、プロセッサインメモリのコヒーレンスドメインの外部にあるメモリサイドキャッシュを含んでもよい。ブリッジプロトコル制御ロジックは、データブロックへのメモリアクセスに応じて、メモリサイドキャッシュに記憶されたデータブロックの任意のコピーの状態をチェックするように構成されてもよい。プロセッサインメモリは、対応するプロセッサの少なくとも１つのキャッシュ内に記憶されたデータブロックのプロセッサインメモリコヒーレンス状態を記憶するように構成されたプロセッサインメモリディレクトリを含んでもよい。プロセッサインメモリは、プロセッサインメモリディレクトリの内容を用いて、少なくとも１つのキャッシュに記憶されたデータブロックのデータコヒーレンスを維持するように構成されたプロセッサインメモリ内コヒーレンスコントローラを含んでもよい。システムは、プロセッサインメモリに接続されたホストプロセッサを含んでもよい。ホストプロセッサは、プロセッサインメモリの第１キャッシュコヒーレンスプロトコルと、ホストプロセッサの第２キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するように構成されたホストブリッジ変換ロジックを含んでもよい。ホストプロセッサは、ホストのコヒーレンスドメインの外側であって、プロセッサインメモリのコヒーレンスドメインの外側にあるメモリサイドキャッシュをさらに含んでもよい。シャドウディレクトリストレージは、メモリサイドキャッシュに記憶されたデータブロックの任意のコピーの状態を保存してもよい。ホストプロセッサは、ホストコピーデータブロックのホストコヒーレンス状態を記憶するように構成されたホストディレクトリであって、ホストプロセッサ内に記憶されたホストディレクトリと、ホストディレクトリを用いて、ホストプロセッサに存在するホストコピーデータブロックのデータコヒーレンスを維持するように構成されたホスト内コヒーレンス制御ロジックと、をさらに含んでもよい。
【０００６】
本発明の少なくとも１つの実施形態では、方法は、プロセッサインメモリのメモリに存在するデータブロックのブリッジコヒーレンス状態をシャドウディレクトリに記憶するステップを含む。ブリッジコヒーレンス状態は、プロセッサインメモリの外部に記憶されたデータブロックの任意のコピーの状態を示している。方法は、プロセッサインメモリの第１キャッシュコヒーレンスプロトコルと、ホストプロセッサの第２キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するステップを含む。第２キャッシュコヒーレンスプロトコルは、第１キャッシュコヒーレンスプロトコルと異なっている。方法は、コヒーレンスメッセージ及びシャドウディレクトリストレージの内容を用いて、プロセッサインメモリのメモリのデータコヒーレンスを維持するステップを含む。第２キャッシュコヒーレンスプロトコルは、第１キャッシュコヒーレンスプロトコルのブロックサイズとは異なるブロックサイズを使用してもよい。プロセッサインメモリのメモリのデータコヒーレンスを維持するステップは、データブロックへのアクセスに応じて、データブロックのブリッジコヒーレンス状態を更新するステップを含んでもよい。プロセッサインメモリのメモリのデータコヒーレンスを維持するステップは、プロセッサインメモリのプロセッサの少なくとも１つのキャッシュと、プロセッサインメモリのメモリとのコヒーレンスを維持するステップを含んでもよい。少なくとも１つのキャッシュは、プロセッサインメモリのコヒーレンスドメイン内に存在してもよい。方法は、プロセッサインメモリのメモリのアクセスに応じて、プロセッサインメモリのメモリサイドキャッシュをチェックするステップを含んでもよい。方法は、プロセッサインメモリのコヒーレンスドメインのキャッシュからプロセッサインメモリのメモリサイドキャッシュにライトスルーキャッシュポリシーを実施するステップを含んでもよい。シャドウディレクトリのデータブロックのブリッジコヒーレンス状態は、ｎｏ−ｈｏｓｔ−ｃｏｐｙ状態、ｈｏｓｔ−ｒｅａｄ状態及びｈｏｓｔ−ｗｒｉｔｔｅｎ状態のうち何れか１つであってもよい。方法は、プロセッサインメモリのコヒーレンスドメインのキャッシュからプロセッサインメモリのメモリサイドキャッシュにライトバックキャッシュポリシーを実施するステップを含んでもよい。シャドウディレクトリのデータブロックのブリッジコヒーレンス状態は、ｎｏ−ｈｏｓｔ−ｃｏｐｙ状態、ｈｏｓｔ−ｒｅａｄ状態、ｈｏｓｔ−ｗｒｉｔｔｅｎ状態及びｐｒｏｃｅｓｓｏｒ−ｉｎ−ｍｅｍｏｒｙ−ｍｏｄｉｆｉｅｄ状態のうち何れか１つであってもよい。プロセッサインメモリのメモリのデータコヒーレンスを維持するステップは、データブロックへのメモリアクセスに応じてコヒーレンスメッセージを生成するステップを含んでもよい。方法は、対応するプロセッサの少なくとも１つのキャッシュ内に記憶されたデータブロックのプロセッサインメモリコヒーレンス状態を記憶するステップを含んでもよい。方法は、プロセッサインメモリディレクトリの内容を用いて、少なくとも１つのキャッシュに存在するデータブロックのデータコヒーレンスを維持するステップを含んでもよい。方法は、ホストプロセッサ内に記憶されたホストコヒーレンス状態であって、ホストコピーデータブロックのホストコヒーレンス状態を記憶するステップを含んでもよい。方法は、ホストディレクトリを用いて、ホストプロセッサに存在するホストコピーデータブロックのデータコヒーレンスを維持するステップを含んでもよい。
【０００７】
本発明の少なくとも１つの実施形態では、装置はホストプロセッサを含む。ホストプロセッサは、プロセッサインメモリの第１キャッシュコヒーレンスプロトコルと、ホストプロセッサの第２キャッシュコヒーレンスプロトコルとの間でコヒーレンスメッセージを変換するように構成されたホストブリッジ変換ロジックを含む。第２キャッシュコヒーレンスプロトコルは、第１キャッシュコヒーレンスプロトコルと異なっている。ホストプロセッサは、プロセッサインメモリに存在するデータブロックのホストコヒーレンス状態であって、ホストプロセッサ内に記憶されたホストコヒーレンス状態であって、ホストコピーに対応するホストコヒーレンス状態を記憶するように構成されたホストディレクトリを含んでもよい。ホストプロセッサは、ホストディレクトリを用いて、ホストプロセッサに存在するデータブロックのデータコヒーレンスを維持するように構成されたホスト内コヒーレンス制御ロジックを含んでもよい。第２キャッシュコヒーレンスプロトコルは、第１キャッシュコヒーレンスプロトコルのブロックサイズとは異なるブロックサイズを使用してもよい。
【０００８】
本発明は、添付の図面を参照することによってより良く理解され、その多くの目的、特徴及び利点が当業者には明らかであろう。
【図面の簡単な説明】
【０００９】
【図１】プロセッサインメモリデバイスを含む例示的な処理システムの機能ブロック図である。
【図２】例示的なプロセッサインメモリの機能ブロック図である。
【図３】本発明の少なくとも１つの実施形態と一致する、ホストプロセッサとプロセッサインメモリとの間の例示的なキャッシュコヒーレントリンクの機能ブロック図である。
【図４】本発明の少なくとも１つの実施形態と一致する、複数のホストと様々なプロセッサインメモリデバイスとの間の例示的なキャッシュコヒーレントリンクの機能ブロック図である。
【図５】例示的なプロセッサインメモリキャッシュ構成を含む例示的なプロセッサインメモリの機能ブロック図である。
【図６】本発明の少なくとも１つの実施形態と一致する、ホストプロセッサと、第１キャッシュプロトコルを有するプロセッサインメモリとの間の例示的なキャッシュコヒーレンスブリッジプロトコルの状態図である。
【図７】本発明の少なくとも１つの実施形態と一致する、ホストプロセッサと、第２キャッシュプロトコルを有するプロセッサインメモリとの間の例示的なキャッシュコヒーレンスブリッジプロトコルの状態図である。
【発明を実施するための形態】
【００１０】
異なる図面における同じ参照記号の使用は、類似又は同一の項目を示している。
【００１１】
キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサのキャッシュコヒーレンスプロトコルと、プロセッサインメモリのキャッシュコヒーレンスプロトコルとの間のインタフェースを提供することによって、ホストプロセッサ及びプロセッサインメモリのコヒーレンスメカニズムを分離する。キャッシュコヒーレンスブリッジプロトコルでは、既存のホストプロセッサキャッシュコヒーレンスプロトコルに対する変更を制限する必要がある。キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサと、異なるベンダによって設計されたプロセッサインメモリデバイスとの間の相互運用性を容易にするために使用され、ホストプロセッサ及びプロセッサインメモリデバイスの両方は、各プロセッサ内のコンピューティングユニット間のコヒーレンス技術を実施してもよい。キャッシュコヒーレンスブリッジプロトコルは、ホストプロセッサ及び／又はプロセッサインメモリのキャッシュコヒーレンスプロトコルによって使用される粒度とは異なるキャッシュコヒーレンス許可の粒度をサポートしてもよい。キャッシュコヒーレンスブリッジプロトコルは、データを含むプロセッサインメモリの外部のシステムにキャッシュされた当該データのコピーの集約ビューを示す状態情報を維持するシャドウディレクトリを使用している。対照的に、従来のコヒーレンスプロトコルは、プロセッサ内のデータのローカルコピーの状態を追跡する。
【００１２】
プロセッサインメモリは、１つ以上のメモリダイ内の処理ロジックとして、又は、１つ以上のメモリダイと共にスタックされた別個のロジックダイとして実装されてもよい。図１を参照すると、システム１００は、ホスト１１０と、インターポーザ１１２上の４つのプロセッサインメモリデバイスと、を含む。プロセッサインメモリ１０２は、処理ロジック１０４を含み、処理ロジック１０４は、複数のメモリダイ１０６と共にスタックされた別個のダイに含まれてもよい。処理ロジック１０４は、少なくとも１つの加速処理ユニット（すなわち、中央処理ユニット及びグラフィックス処理ユニットを含む高度処理ユニット）、中央処理ユニット、グラフィックス処理ユニット、又は、他のプロセッサを含むことができ、コプロセッサ又は固定機能処理（fixed-function processing）ハードウェアを含んでもよい。
【００１３】
図２は、例示的な処理ロジック１０４を示す図である。処理ロジック１０４は、グラフィックス処理ユニット（例えば、コンピューティングユニットクラスタ２０６）を含む高度処理ユニットを含み、グラフィックス処理ユニットは、複数のグラフィックス処理ユニットコンピューティングユニット２１４を含む。高度処理ユニットは、複数の中央処理ユニットコア２１６を含む中央処理ユニットクラスタ２０８を含んでもよい。高度処理ユニットは、複数のハードウェアアクセラレータ２１８を含む固定機能ハードウェア２１０を含んでもよい。各プロセッサインメモリ１０２内のコンポーネント（例えば、処理ロジック１０４の各グラフィックス処理ユニットコンピューティングユニット２１４及び各中央処理ユニットコア２１６）は、コンポーネント間のハードウェアキャッシュコヒーレンスを実施してもよい。
【００１４】
図１に戻ると、ホスト１１０は、複数の処理コアを含むことができ、これらの処理コア間でハードウェアキャッシュコヒーレンスを実施してもよい。ホスト１１０は、マルチソケット実装インタフェース（例えば、コヒーレントＨｙｐｅｒＴｒａｎｓｐｏｒｔ）を介して、複数のホストデバイス間のキャッシュコヒーレンスをサポートしてもよい。従来のキャッシュコヒーレンスポリシーの何れかを拡張してプロセッサインメモリを含むことは、ホスト及びプロセッサインメモリが同じキャッシュコヒーレンスプロトコルを実装することを必要とする。この要件は、異なるベンダが異なる既存のコヒーレンスプロトコルを有しているため、ホストと、異なるベンダからのプロセッサインメモリ設計との間の相互運用性を妨げることにより、プロセッサインメモリ設計のビジネスチャンスを制限する。さらに、それぞれプロセッサインメモリを含み得る多数のメモリを有する高性能システムをサポートするためには、ホスト及びプロセッサインメモリのキャッシュコヒーレンスプロトコルを、コヒーレントノードの可変数（すなわち、プロセッサインメモリデバイスの無いシステムより大きい数であって、従来のシステムより大きい数）にスケーラブルであるように、従来技術のコヒーレンス状態を追跡するオーバーヘッドを大きく増加させる。
【００１５】
キャッシュコヒーレンスブリッジプロトコルは、既存のキャッシュコヒーレンスプロトコル（例えば、ホストキャッシュコヒーレンスプロトコル及びプロセッサインメモリキャッシュコヒーレンスプロトコル）間のインタフェースを提供する。キャッシュコヒーレンスブリッジプロトコルは、任意の数のプロセッサインメモリデバイスのシステム内の任意の特定のキャッシュラインに対して単一の潜在的な共有デバイスを追加することを含むホスト側サポートを使用しており、結果として、オーバーヘッドがごく僅かしか増加せず、システム内のプロセッサインメモリデバイスの数に関係なく、必要とされる追加状態が制限される。キャッシュコヒーレンスブリッジプロトコルは、単一の追加の潜在的な共有部（sharer）によって、ホスト側の全てのコンポーネントのプロセッサインメモリ側表現を含み、結果として、プロセッサインメモリのオーバーヘッドがごく僅かしか増加しないだけでなく、システム内のホストの性質及び数に関係なく、必要とされる追加状態の数を制限する。
【００１６】
キャッシュコヒーレンスブリッジプロトコルは、ブリッジ変換ユニットと、プロセッサインメモリに実装されたブリッジプロトコルコントローラと、を含む。キャッシュコヒーレンスブリッジプロトコルは、プロセッサインメモリに記憶されたシャドウディレクトリを含む。シャドウディレクトリは、キャッシュコヒーレンスを追跡する状態情報を外部の視点（すなわち、プロセッサインメモリ上のキャッシュされたコピーの状態を追跡する代わりに）で記憶する。シャドウディレクトリは、データ要素が存在するプロセッサインメモリの外部にキャッシュされた当該データ要素の全てのコピーの集約ビューを追跡するブリッジコヒーレンス状態を記憶する。シャドウディレクトリは、ホストディレクトリに含まれ得る情報のサブセットを、プロセッサインメモリの視点から記憶する。少なくとも１つの実施形態では、キャッシュコヒーレンスブリッジプロトコルは、従来のキャッシュコヒーレンスプロトコルによって既に生成されたキャッシュコヒーレンスメッセージのサブセットを使用することによって、ホスト上及びプロセッサインメモリ内に実装される可能性のある、以前に開発され検証されたキャッシュコヒーレンスプロトコルに適合するための変更を制限する。
【００１７】
図３を参照すると、キャッシュコヒーレンスブリッジプロトコルの少なくとも１つの実施形態では、ホスト内コヒーレンスコントローラ３０２は、プロセッサインメモリ１０２がホストコヒーレンスプロトコルにおける単なる別のノードであるかのように、プロセッサインメモリ１０２に対するキャッシュコヒーレンスメッセージを生成する。ブリッジ変換ユニット３０４は、これらのキャッシュコヒーレンスメッセージを、ブリッジプロトコルコヒーレンスメッセージに変換してもよい。プロセッサインメモリ１０２において、ブリッジ変換ユニット３１６は、受信したキャッシュコヒーレンスメッセージを、ホストコヒーレンスプロトコル又は中間ブリッジコヒーレンスプロトコルから、ブリッジプロトコル制御ロジック３２２が使用可能な形式に変換してもよい。反対方向では、ブリッジプロトコル制御ロジック３２２は、シャドウディレクトリ３２４の内容に基づいて、ホストのホストコヒーレンスプロトコル又は中間ブリッジコヒーレンスプロトコルに一致したキャッシュコヒーレンスメッセージを生成し、プロセッサインメモリ内コヒーレンスコントローラ３２０からのメッセージは、ディレクトリ３２６の内容、及び／又は、プロセッサインメモリ１０２によって受信若しくは生成されたメモリ要求に基づいてもよい。
【００１８】
ブリッジ変換ユニット３１６は、ブリッジプロトコル制御ロジック３２２から受信したキャッシュコヒーレンスメッセージを、ブリッジプロトコルメッセージ又はホストコヒーレンスコントローラプロトコルメッセージに変換する。ホスト１１０のブリッジ変換ユニット３０４は、キャッシュコヒーレンスメッセージを、ブリッジプロトコルからホストプロトコルに変換してもよい。個別のロジックとして示されているが、ブリッジ変換ユニット３０４は、メモリインタフェースコントローラ３０８と一体となっている部分として実装されてもよく、ブリッジ変換ユニット３１６は、メモリインタフェースコントローラ３１４と一体となっている部分として実装されてもよい。キャッシュコヒーレンスブリッジプロトコルの少なくとも１つの実施形態では、中間キャッシュコヒーレンスメッセージが使用されず、ブリッジ変換ユニット３０４，３１６は、システムのリセット時又は他のユーザの構成に応じて構成され得る所定のプロトコルフォーマットに基づいて、キャッシュコヒーレンスメッセージを、プロセッサインメモリキャッシュコヒーレンスプロトコルメッセージ又はホストキャッシュコヒーレンスプロトコルメッセージに直接変換する。
【００１９】
ブリッジプロトコル制御ロジック３２２は、プロセッサインメモリ内コヒーレンスメッセージを監視し、場合によっては、プロセッサインメモリ１０２の１つ以上のメモリチャネルの、ホスト１１０によるメモリアクセス（例えば、キャッシュミス）に介入する。ブリッジプロトコル制御ロジック３２２は、プロセッサインメモリ１０２上に実装されるので、ブリッジプロトコル制御ロジック３２２は、追加のオフデバイストラフィックを生成することなく、プロセッサインメモリ１０２のメモリチャネル内で発生する全てのアクセス（プロセッサインメモリ１０２内で生成されるアクセス、及び、ホスト１１０又は他のデバイスによって外部で生成されるアクセス）を可視化する。ブリッジプロトコル制御ロジック３２２の機能を以下にさらに説明する。
【００２０】
図４を参照すると、キャッシュコヒーレンスブリッジプロトコルを含む例示的なシステムは、複数のプロセッサインメモリデバイスと、ホスト間コヒーレントリンク４１１によって接続されたホスト４１０，４１２と、を含む。プロセッサインメモリ４０２，４０６の各々は、キャッシュコヒーレントブリッジプロトコルリンク４０３及びキャッシュコヒーレントブリッジプロトコルリンク４０５によって、ホスト４１０に接続されている。プロセッサインメモリ４０４，４０８の各々は、キャッシュコヒーレントブリッジプロトコルリンク４０７及びキャッシュコヒーレントブリッジプロトコルリンク４０９によって、ホスト４１２に接続されている。本明細書で言及するように、特定のメモリアドレスに関して、ホームプロセッサインメモリは、特定のアドレスのデータを記憶するプロセッサインメモリである。本明細書で言及するように、ホームノードは、特定のアドレスについてメモリ内のホームプロセッサインメモリに接続されたホストである。ホストコヒーレンスプロトコルディレクトリは、コヒーレンスディレクトリ目的のホームノードが、データのインメモリコピーを保持するプロセッサインメモリに接続されたノードであるように分散されてもよい。本明細書で言及するように、データブロックは、ホストとプロセッサインメモリとの間のコヒーレンス追跡の粒度である。データブロックは、ホスト内及びホスト間のコヒーレンス追跡の粒度の整数倍である。キャッシュコヒーレンスブリッジプロトコル、ホスト４１０、ホスト４１２、プロセッサインメモリ４０２、プロセッサインメモリ４０４、プロセッサインメモリ４０６及びプロセッサインメモリ４０８を含むシステムの少なくとも１つの実施形態では、ライトアロケートキャッシュコヒーレンスポリシーを実施する（すなわち、ホスト又はプロセッサインメモリは、キャッシュラインの任意の部分を書き込む前に、キャッシュラインをメモリから対応するキャッシュに読み出す)。
【００２１】
図３を参照して上述したように、キャッシュコヒーレンスブリッジプロトコルは、ホスト側サポートを使用し、これは、単一の共有デバイスをホストディレクトリ３２８に追加することを含んでもよい。ホストディレクトリ３２８内の単一の共有デバイスを使用して、ホストコヒーレンスプロトコルの観点から、ホームプロセッサインメモリのキャッシュコヒーレンス状態を追跡してもよい。図４を参照すると、例えば、プロセッサインメモリ４０２がホームプロセッサインメモリであり、ホームノードホスト４１０のホストコヒーレンスディレクトリで追跡されるキャッシュラインの場合、ホスト４１０のホストコヒーレンスディレクトリは、プロセッサインメモリ４０２内のキャッシュラインのキャッシュコヒーレンス状態を追跡する。各プロセッサインメモリのシャドウディレクトリは、システムの他の場所に存在し得る任意のデータブロックのコピーの集約ビューを維持する。少なくとも１つの実施形態では、ホームプロセッサインメモリがプロセッサインメモリ４０２であるキャッシュブロックの場合、プロセッサインメモリ４０２のシャドウディレクトリは、ホスト４１０又はホスト４１２のキャッシュに存在し得るキャッシュラインの任意のコピーの集約ビューを維持する。
【００２２】
一般に、プロセッサインメモリキャッシュは、ライトスルーキャッシュ又はライトバックキャッシュである。プロセッサインメモリキャッシュがライトスルーキャッシュである場合、ホストによるメモリアクセスに応じてプロセッサインメモリキャッシュをチェックする必要はない。プロセッサインメモリキャッシュがライトバックキャッシュである場合、ホストメモリアクセスを処理する（servicing）ことは、最新のデータについてプロセッサインメモリキャッシュをチェックすることを含む。例えば、図５を参照すると、レベル１のキャッシュは、メモリ相互接続部２０４のプロセッサ側のコヒーレンスドメインのライトスルーキャッシュであり、レベル２のキャッシュは、メモリ相互接続部２０４のプロセッサ側のコヒーレンスドメインの外部のメモリへの経路のメモリサイドキャッシュである。ホストによる全てのメモリアクセスは、プロセッサインメモリキャッシュコヒーレンスドメインの外部のメモリサイドキャッシュ（例えば、レベル２のキャッシュ）をチェックする。他の実施形態では、処理ロジック１０４がキャッシュを含まないので、プロセッサインメモリ内コヒーレンスを実施しない。
【００２３】
図３を参照すると、各プロセッサインメモリ１０２は、プロセッサインメモリ１０２のメモリに記憶された各データブロックのブリッジコヒーレンス状態を追跡するブリッジプロトコル制御ロジック３２２を含む。そのブリッジコヒーレンス状態は、シャドウディレクトリ３２４に記憶される。ブリッジプロトコル制御ロジック３２２は、シャドウディレクトリ３２４の状態遷移を制御し、対応するインジケータを記憶する。図３及び図６を参照すると、少なくとも１つの実施形態では、プロセッサインメモリの各データブロックについて、シャドウディレクトリ３２４は、ｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２、ｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４、及び、ｈｏｓｔ−ｗｒｉｔｔｅｎ（Ｍ）状態６０６のブリッジコヒーレンス状態のインジケータを記憶する。状態図は、ライトスルーレベル１のキャッシュと、プロセッサインメモリキャッシュコヒーレンスドメインの外側のメモリサイド（例えば、レベル２）キャッシュと、を有するプロセッサインメモリ１０２に対応する。ブリッジプロトコル制御ロジック３２２は、（例えば、プロセッサインメモリ１０２又はホスト１１０からの）メモリへの各アクセスに応じて、メモリサイドキャッシュをチェックする。ｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２は、ブリッジキャッシュコヒーレンスドメインの何れのホストも、データブロックの任意の部分をキャッシュメモリに記憶していないことを示している。このブリッジコヒーレンス状態は、従来のＭＳＩ、ＭＥＳＩ、ＭＯＥＳＩキャッシュコヒーレンスプロトコルのＩｎｖａｌｉｄ状態に類似しており、Ｍは変更（modified）を表し、Ｏは所有（owned）を表し、Ｅは排他（exclusive）を表し、Ｓは共有（shared）を表し、Ｉは無効（invalid）を表す。ｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４は、ブリッジコヒーレンスドメインの１つ以上のホストがデータブロックの一部を読み出し、それらのキャッシュに未修正のコピーを有し得るが、それを書き込んでいないことを示している。このブリッジコヒーレンス状態は、ＭＳＩ、ＭＥＳＩ、ＭＯＥＳＩキャッシュコヒーレンスプロトコルにおける共有状態に類似している。ｈｏｓｔ−ｗｒｉｔｔｅｎ（Ｍ）状態６０６は、ブリッジコヒーレンスドメインの１つ以上のホストがデータブロックの排他的所有権を有し、その一部を書き込んでいる可能性があることを示している（例えば、ホスト側のコアは、ＭＳＩキャッシュコヒーレンスプロトコルの変更状態のラインのコピー、ＭＥＳＩキャッシュコヒーレンスプロトコルの変更状態若しくは排他状態のラインのコピー、又は、ＭＯＥＳＩキャッシュコヒーレンスプロトコルの変更状態、所有状態若しくは排他状態のラインのコピーを有する）。
【００２４】
プロセッサインメモリ１０２によるローカルデータ（すなわち、プロセッサインメモリ１０２がホームプロセッサインメモリであるメモリアドレスに関連付けられたデータ）の読み出し、及び、プロセッサインメモリ１０２によるローカルデータの書き込みの各々は、Ｐ.ｒ及びＰ.ｗで示され、ブリッジプロトコル制御ロジック３２２は、シャドウディレクトリ３２４の対応するエントリの関連する状態遷移に応答する。ホスト１１０によるプロセッサインメモリのローカルデータの読み出し、及び、ホスト１１０によるプロセッサインメモリのローカルデータの書き込みの各々は、Ｈ.ｒ及びＨ.ｗで示され、ブリッジプロトコル制御ロジック３２２は、シャドウディレクトリ３２４の対応するエントリの関連する状態遷移で応答する。遷移の中間状態及びアクションは、明瞭にするために、状態図に示されていない。
【００２５】
ローカルデータブロックへのプロセッサインメモリの読み出し（Ｐ.ｒ）アクセスに応じて、データブロックがシャドウディレクトリ３２４にｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２又はｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４を有する場合、ブリッジプロトコル制御ロジック３２２は、プロセッサインメモリの外部でコヒーレンスメッセージを生成せず、現在の状態であるｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２又はｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４に留まる。データブロックがシャドウディレクトリにｈｏｓｔ−ｗｒｉｔｔｅｎ（Ｍ）状態６０６を有する場合、ブリッジプロトコル制御ロジック３２２は、プロセッサインメモリに取り付けられたホームノードへの読み出しコヒーレンス要求を生成し、コヒーレンス状態をｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４に遷移させる（７０４）。そのホストはホームノードでもあるので、その要求が他の読み出し要求であるかのように、ホストのコヒーレンスプロトコルと統合される。プロセッサインメモリは、読み出しを進める前に、コヒーレンス要求が完了し、コヒーレンスの確認応答を受信し、更新データが使用可能になるまで待機する必要がある。
【００２６】
ローカルデータへのプロセッサインメモリの書き込み（Ｐ.ｗ）アクセスに応じて、データブロックがシャドウディレクトリ３２４にｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２を有する場合、ブリッジプロトコル制御ロジック３２２は、プロセッサインメモリの外側でコヒーレンスメッセージを生成せず、現在の状態であるｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２に留まる。データブロックがシャドウディレクトリ３２４にｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４を有する場合、ブリッジプロトコル制御ロジック３２２は、ホストに対する無効化要求を生成し、完了信号を待った後に、書き込み及びｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２への遷移（７０２）を進める。データブロックがシャドウディレクトリ３２４にｈｏｓｔ−ｗｒｉｔｔｅｎ（Ｍ）状態６０６を有する場合、ブリッジプロトコル制御ロジック３２２は、無効化要求を生成し、変更されたデータを待ってから、ｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２への状態遷移（７０７）を開始する。
【００２７】
ホスト又はホストを介してメモリにアクセスする他のコンポーネントで発生し得るホスト側からの読み出し（Ｈ.ｒ）アクセスに応じて、データブロックがシャドウディレクトリ３２４にｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２又はｈｏｓｔ−ｗｒｉｔｔｅｎ（Ｍ）状態６０６を有する場合、ブリッジプロトコル制御ロジック３２２は、状態をｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４に遷移させる（７０２又は７０４）。ｈｏｓｔ−ｗｒｉｔｔｅｎ（Ｍ）状態６０６にある間のホスト側からの追加の読み出し要求は、（ｈｏｓｔ−ｗｒｉｔｔｅｎ（Ｍ）状態６０６に導かれた）ホストキャッシュの変更されたコピーがホスト側キャッシュコヒーレンスプロトコルによって既に降格されているのを示唆していることに留意されたい。データブロックがシャドウディレクトリ３２４にｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４を有する場合、ブリッジプロトコル制御ロジック３２２は、状態を変化させない。
【００２８】
ホスト側からの所有権読み出し（Ｈ.ｗ）アクセスに応じて、データブロックがシャドウディレクトリにｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２又はｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４を有する場合、ブリッジプロトコル制御ロジック３２２は、状態をｈｏｓｔ−ｗｒｉｔｔｅｎ（Ｍ）状態６０６に遷移させる（７０６又は７１１）。また、ブリッジプロトコル制御ロジック３２２は、プロセッサインメモリキャッシュコヒーレンスドメインの何れかのキャッシュ（例えば、レベル１キャッシュ）のデータブロックの何れかのコピーを無効にし、要求されたデータで所有権読み出しアクセスに応答する。データブロックがシャドウディレクトリ３２４にｈｏｓｔ−ｗｒｉｔｔｅｎ（Ｍ）状態６０６を有する場合、ブリッジプロトコル制御ロジック３２２は、状態を変化させず、要求されたデータで読み出し要求に応答する。
【００２９】
ホームノードは、追加のホストコヒーレンス動作を実行することができる。例えば、ＭＳＩ、ＭＥＳＩ及びＭＯＥＳＩキャッシュコヒーレンスプロトコルにおけるＩ又はＳからＥ、Ｍ又はＯへの全ての状態遷移（または、他のプロトコルにおける同等の遷移）に対して、ホームノードは、ホームプロセッサインメモリ（例えば、プロセッサインメモリ１０２）へのｔｒａｎｓｉｔｉｏｎ−ｔｏ−Ｍ要求を生成しなければならない。これは、割り当てられていないラインの全てがデフォルトでプロセッサインメモリ上のｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４であると仮定するようにホストプロトコルを変更することによって、トリガされてもよい。ｔｒａｎｓｉｔｉｏｎ−ｔｏ−Ｍ要求は、メモリインタフェースプロトコルがそうすることをサポートする場合、書き込みに先行する読み出し要求（割り当てのための）と関連していてもよい。少なくとも１つの実施形態では、ホームノードは、最後にキャッシュされたコピーがホスト側のキャッシュコヒーレンスドメイン全体から追い出されたことに応じて、プロセッサインメモリへのｔｒａｎｓｉｔｉｏｎ−ｔｏ−Ｉ要求を生成する。この要求は、ホスト側からの最後の追い出し時にダーティデータからフラッシュすることと併せて生成することができる。この要求の生成は、後述するように、メモリ側ラストレベルキャッシュを有するホストに影響を与える可能性がある。他の実施形態においては、ホストは、このような要求を生成しない。
【００３０】
図５に戻ると、少なくとも１つの実施形態では、プロセッサロジック１０４は、プロセッサ側（例えば、ＧＰＵ  ＣＵ２１４、ＣＰＵコア２１６及びハードウェアアクセラレータ２１８のレベル１キャッシュ）のライトバックキャッシュを含む。結果として、各データブロックのブリッジコヒーレンス状態は、追加の状態であるｐｒｏｃｅｓｓｏｒ−ｉｎ−ｍｅｍｏｒｙ−ｍｏｄｉｆｉｅｄ（Ｐ）状態を用いて、データブロックの何れかの部分がプロセッサ側キャッシュ内のプロセッサインメモリ１０２によって変更されたか否かも示す。図７は、シャドウディレクトリ３２４内のブリッジコヒーレンス状態情報への更新に関するブリッジプロトコル制御ロジック３２２の変更された状態図である。データブロックがシャドウディレクトリ３２４にｐｒｏｃｅｓｓｏｒ−ｉｎ−ｍｅｍｏｒｙ−ｍｏｄｉｆｉｅｄ（Ｐ）状態６０８を有する場合、ブリッジプロトコル制御ロジック３２２は、プロセッサインメモリの外部からの読み出し又は書き込みアクセスに応じて、更新されたデータをプロセッサインメモリキャッシュから提供し、（外部要求が排他又は書き込み許可用である場合に）必要に応じて、ローカルコピーを無効化し、データブロックのブリッジコヒーレンス状態を、遷移７１０又は遷移７１７を介して適切に変更する。少なくとも１つの実施形態では、プロセッサインメモリのプロセッササイドキャッシュ内の特定のデータブロックの変更されたコピーがキャッシュから追い出されると（Ｐ．ｅ）、特定のデータブロックの状態は、シャドウディレクトリ３２４のｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２（７１５）に遷移する。
【００３１】
少なくとも１つの実施形態では、ホームノードは、特定のデータブロックの最後にキャッシュされたコピーがホストサイドキャッシュコヒーレンスドメイン全体から追い出されたことに応じて、ｔｒａｎｓｉｔｉｏｎ−ｔｏ−Ｉ要求をホームプロセッサインメモリに生成する。特定のデータブロックがシャドウディレクトリ３２４にｈｏｓｔ−ｒｅａｄ（Ｓ）状態６０４又はｈｏｓｔ−ｗｒｉｔｔｅｎ（Ｍ）状態６０６を有する場合、状態が、シャドウディレクトリ３２４のｎｏ−ｈｏｓｔ−ｃｏｐｙ（Ｉ）状態６０２に遷移する。この要求は、最後の追い出しの際にダーティデータをフラッシュすることと併せて生成することができる。この要求生成は、メモリ側ラストレベルキャッシュを有するホストに影響を与え得る。このような要求は、キャッシュコヒーレンスブリッジプロトコルではオプションであり（図７には示されていない）、他の実施形態では、ホームノードは、かかる要求を生成しない。
【００３２】
上述したキャッシュコヒーレンスブリッジプロトコルは、コヒーレンス追跡の粒度とは無関係である。キャッシュコヒーレンスブリッジプロトコルは、キャッシュライン粒度を有してもよいし、より粗い粒度（例えば、複数のキャッシュラインを含む領域のコヒーレンス）を有してもよい。したがって、より粗い粒度を有するキャッシュコヒーレンスブリッジプロトコルの実装は、より少ない状態記憶、及び、より小さいシャドウディレクトリしか必要としない。本明細書に記載されたキャッシュコヒーレンスブリッジプロトコルは、可変粒度でも実施可能である。例えば、シャドウディレクトリの一部を使用して、より粗い粒度を有するデータブロックを追跡してもよく、シャドウディレクトリの他の部分を使用して、より細かい粒度を有するデータブロックを追跡してもよい。
【００３３】
キャッシュコヒーレンスブリッジプロトコルの少なくとも１つの実施形態では、ホストコヒーレンスプロトコルのコヒーレンス粒度は、キャッシュコヒーレンスブリッジプロトコルのコヒーレンス粒度及びプロセッサインメモリのコヒーレンス粒度と異なっている。例えば、個々のキャッシュラインよりも粗い粒度（例えば、４ＫＢ）でコヒーレンス許可を追跡する領域コヒーレンスは、コヒーレンストラフィック（例えば、ホストとプロセッサインメモリとの間のコヒーレンストラフィック）を大幅に低減する可能性がある。したがって、ブリッジコヒーレンスプロトコルは、既存のホスト側コヒーレンスプロトコルが従来のキャッシュライン粒度（例えば、６４Ｂ）で動作し続ける間に、粗い粒度（例えば、４ＫＢ）で動作することができる。さらに、ホストコヒーレンスプロトコル及びプロセッサインメモリキャッシュコヒーレンスプロトコルの異なるコヒーレンス粒度のキャッシュコヒーレンスブリッジプロトコルのサポートは、異なるベンダからのコンポーネント（例えば、異なるキャッシュラインサイズを有する製品）間の相互運用を容易にする。効率を向上させるために、システム内のより粗いコヒーレンス粒度は、そのシステム内のより細かいコヒーレンス粒度の倍数であり、このことは、従来のシステムが２の累乗数のバイトのコヒーレンス粒度を使用することから、典型的である。
【００３４】
少なくとも１つの実施形態では、ブリッジ変換ユニットは、キャッシュコヒーレンス要求を、粗い粒度のコヒーレンス許可要求（例えば、プロセッサインメモリから４ＫＢの領域要求）からより細かい粒度のコヒーレンス許可要求（例えば、ホストへの６４Ｂのキャッシュライン）に変換する。この変換は、粗い要求のアドレス範囲の全体に及び（例えば、プロセッサインメモリからの単一の４ＫＢの要求に応じて、ホストへの６４個の６４Ｂの要求）、受信側の対応するコヒーレンスコントローラに要求を発行する。次に、受信ブリッジ変換ユニットは、要求するブリッジ変換ユニットに完了を通知する前に、そのセット内の全ての要求に対する応答を収集する。
【００３５】
少なくとも１つの実施形態では、送信ブリッジ変換ユニット又は受信ブリッジ変換ユニットは、細かい粒度の許可要求（例えば、ホストからの６４Ｂの要求）から、粗い許可（例えば、プロセッサインメモリの４ＫＢの領域）を追跡するレスポンダ（responder）に変換する。送信ブリッジ変換ユニット又は受信ブリッジ変換ユニットは、その要求を、元の要求のアドレス範囲を含む粗い粒度の領域に変換する。リクエスタ（例えば、ホスト）は、要求した領域よりも大きい領域のコヒーレンス許可を受信したことに気付かず、同じ領域内で追加の要求を引き続き発行する場合があることに留意されたい。非効率を低減するために、送信ブリッジ変換ユニットは、最近受信した領域許可のキャッシュを維持することができる。同じリクエスタからの後続の細かい粒度の要求がこの領域許可キャッシュのエントリと一致する場合、送信ブリッジ変換ユニットは、他のエンティティへの要求を開始することなく完了を通知することができる。
【００３６】
上述したように、細かい粒度でコヒーレンス降格に関するメッセージを生成するシステムでは、性能を強化するためにのみ降格メッセージが用いられることから、送信ブリッジ変換ユニットは、降格メッセージを破棄する場合がある。他の実施形態では、細かい粒度で、送信ブリッジ変換ユニットは、粗い粒度でコヒーレンスを追跡する受信者に降格を伝える前に、連続する粗い粒度の領域が降格されるまで降格メッセージを収集する。送信ブリッジ変換ユニットは、細かい粒度の降格を伝えてもよく、受信ブリッジ変換ユニットが、それらを粗い粒度の領域に集約するのを予期してもよい。粗い粒度の領域の他の部分への降格要求を生成する送信ブリッジ変換ユニットは、粗い粒度の領域全体の降格を強制し、その領域の降格を伝えてもよい。少なくとも１つの実施形態では、送信ブリッジ変換ユニットは、先行するメモリ要求に基づくヒューリスティックスに従って上記の１つ以上のオプションを実行してもよい。
【００３７】
図３に戻ると、シャドウディレクトリ３２４は、各データブロックのブリッジコヒーレンス状態をプロセッサインメモリ内に記憶するために、個別の記憶構造（例えば、個別のダイのプロセッサインメモリ１０２におけるＳＲＡＭ、又は、プロセッサインメモリ１０２と共にスタックされた分散されたＳＲＡＭ）を用いて実装されてもよい。この記憶構造は、複数のメモリチャネルに亘って物理的に分散されてもよいし、プロセッサインメモリの各メモリチャネルは、この構造に対する帯域幅制限を緩和し得る個別のテーブルを維持してもよい。
【００３８】
少なくとも１つの実施形態では、シャドウディレクトリ３２４は、例えばＤＲＡＭが十分な追加のビットを含むようにカスタマイズされ、非標準的なアドレッシングのサポートを必要としないような設計において、メモリと統合され、データブロック毎のブリッジコヒーレンス状態を、データブロックを記憶するメモリの同じ行のビットのサブセットに記憶する。少なくとも１つの実施形態では、シャドウディレクトリ３２４は、データブロックとは別に、ブリッジコヒーレンス状態の記憶専用の各メモリチャネルのメモリ空間のサブセット（例えば、メモリ空間の最上位のアドレス範囲）に配置される。アドレスマッピングは、特定のメモリアドレスのキャッシュコヒーレンス状態が、ＤＲＡＭページの競合を低減するために、特定のメモリアドレスのデータを含むチャネル以外のチャネルに常駐するように設計されてもよい。アドレス空間が、プロセッサインメモリデバイス間、及び、比較的細かい粒度（すなわち、単一のメモリチャネルの容量よりはるかに小さい粒度）でプロセッサインメモリ内のチャネル間で分散される場合には、そのマッピング技術は、特別なアドレッシングのサポートが殆どなくてもよい。ＤＲＡＭ及び記載されたメモリ空間の代替のセブセットを用いて実装されたシャドウディレクトリは、最近アクセスされたシャドウディレクトリエントリを記憶するためのＳＲＡＭキャッシュによって拡張され、シャドウディレクトリ状態にアクセスして変更するために必要なＤＲＡＭアクセスを低減することができる。
【００３９】
プロセッサインメモリの観点からは、ホスト側コヒーレンスドメインに含まれていないホストのメモリサイドラストレベルキャッシュが、ホストの一部として見られる。キャッシュコヒーレンスブリッジプロトコルは、上述したシャドウディレクトリ追跡スキームにおいて、デフォルトでホストにキャッシュされたデータブロックの状態を保存する。メモリサイドキャッシュが変更されたデータを含む唯一のものである場合（すなわち、ホストディレクトリによって追跡された他のキャッシュに当該データのコピーが存在しない場合）、ホストキャッシュからの変更されたデータに対する要求を含むプロセッサインメモリからのキャッシュコヒーレンス要求に応じて、キャッシュコヒーレンスブリッジプロトコルは、メモリサイドラストレベルキャッシュを、他のホストキャッシュであるかのように変更してもよい。ホストの観点からは、メモリサイドキャッシュは、キャッシュコヒーレンスブリッジプロトコルからの特別な処理を必要としない。しかしながら、上述したように、ディレクトリ追跡されたホストキャッシュからの追い出しがプロセッサインメモリに通知される場合、これらのメッセージは、ホストメモリサイドキャッシュのデータを適切に考慮する必要がある。メモリサイドキャッシュの状態がこれらのメッセージと一致しない場合、これらのメッセージは、降格をプロセッサインメモリに伝えない。オプションとして、キャッシュコヒーレンスブリッジプロトコルは、メモリサイドラストレベルキャッシュからのデータブロック追い出しに応じて、このようなメッセージを生成する。
【００４０】
このように、キャッシュコヒーレンスブリッジプロトコルについて説明した。本明細書で説明した構造は、プロセッサ上で実行されるソフトウェア（ファームウェアを含む）を用いて、又は、ソフトウェアとハードウェアとの組み合わせによって実装されてもよい。ソフトウェアは、本明細書で説明したように、少なくとも１つの有形の（すなわち、非一時的な）コンピュータ可読媒体内でコード化されてもよい。本明細書で言及されるように、有形のコンピュータ可読媒体は、ディスク、テープ若しくは他の時期記憶媒体、光学記憶媒体、又は、電子記憶媒体を含む。本明細書に記載された発明の説明は例示的なものであり、以下の特許請求の範囲に記載された本発明の範囲を限定するものではない。例えば、本発明は、プロセッサインメモリデバイスがキャッシュを含む実施形態で説明されているが、当業者であれば、本明細書の教示が、キャッシュを含まない単純なプロセッサインメモリデバイスを利用し得るが、ホストキャッシュがプロセッサインメモリアクセスとコヒーレントであることを必要としているのを理解するであろう。本明細書に開示された実施形態の変形及び変更は、添付の特許請求の範囲に記載された本発明の範囲から逸脱することなく、本明細書に記載された発明に基づいてなされてもよい。
【図１】
2019517687.tif 000003
【図２】
2019517687.tif 000004
【図３】
2019517687.tif 000005
【図４】
2019517687.tif 000006
【図５】
2019517687.tif 000007
【図６】
2019517687.tif 000008
【図７】
2019517687.tif 000009
【国際調査報告】
2019517687.tif 000010
2019517687.tif 000011