(57)【特許請求の範囲】
【請求項１】
ドメインベースのキャッシュ・コヒーレンス・プロトコルを用いてキャッシュ内のデータブロックにアクセスするための方法であって、
第１のドメインの第１のタイルの第１のプロセッサが前記データブロックにアクセスするよう求める要求を評価するステップであって、前記第１のタイルは第１のタイルのキャッシュのデータを使用して命令を実行する第１のプロセッサを含み、前記第１のドメインは第１のタイルと少なくとも、第２のプロセッサを含む第２のタイルを含むものである、ステップと、
前記データブロックが前記第１のドメインにキャッシュされているかどうか判定するステップと、
前記データブロックが前記第１のドメインの第２のタイルにキャッシュされていると判定されると、前記第２のタイルのキャッシュから前記第１のタイルに前記データブロックを送るステップと、
前記データブロックが前記第１のドメインの外部にキャッシュされていると判定されると、
第３のプロセッサおよびディレクトリを含む第２のドメインの第３のタイルに前記要求を送るステップであって、前記ディレクトリはデータブロックの表示及び第１のドメイン並びに第２のドメインとは異なるデータドメインの表示を含み、前記データドメインは、データブロックがキャッシュされた位置にあり、それぞれプロセッサとキャッシュを含む少なくとも２つのタイルを含むものである、ステップと、
前記第３のプロセッサで前記ディレクトリを評価して、前記データブロックがキャッシュされたデータドメインを判定するステップと、
前記第３のプロセッサで前記データドメインに前記要求を送るステップと、
前記データドメインの第４のタイルの第４のプロセッサで前記第３のプロセッサからの前記要求を受け取るステップと、
前記第４のプロセッサによって受け取られた前記要求に応答して、前記第４のタイルのキャッシュから前記第１のタイルのキャッシュに前記データブロックを送るステップと
を含む方法。
【請求項２】
前記第３のプロセッサで前記ディレクトリを評価してデータドメインを判定する前記ステップが前記データドメインの代表タイルを識別するステップを含み、前記第３のプロセッサで前記データドメインに前記要求を送る前記ステップが前記代表タイルに前記要求を送るステップを含む、請求項１に記載の方法。
【請求項３】
前記データドメインに前記要求を送る前記ステップが、前記代表タイルで前記要求を受け取るステップと、前記第４のプロセッサに前記受け取られた要求を送るステップとを含む、請求項２に記載の方法。
【請求項４】
前記第３のプロセッサで前記ディレクトリを評価する前記ステップが、前記データドメインを表示する表を探索するステップを含む、請求項３に記載の方法。
【請求項５】
前記表が前記データドメインの前記代表タイルをさらに識別する、請求項４に記載の方法。
【請求項６】
前記表が前記データドメインを識別するビットベクトルを含む、請求項５に記載の方法。
【請求項７】
前記第１、第２、および第３の各ドメインが個々の仮想マシンと関連付けられている、請求項１に記載の方法。
【請求項８】
前記第１のプロセッサから前記第２のタイルに前記データブロックにアクセスするよう求める前記要求を送るステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記第１のプロセッサが前記第１のドメインの各タイルに前記データブロックにアクセスするよう求める前記要求を送るステップをさらに含む、請求項１に記載の方法。
【請求項１０】
前記第１のプロセッサで前記データブロックに書き込みを行うステップと、
前記データを記憶している各キャッシュの状況を更新するステップと、
前記データブロックに書き込みを行ったことに応答して、前記第３のプロセッサで前記ディレクトリを更新するステップと
をさらに含む、請求項１に記載の方法。
【請求項１１】
前記第１のドメインが第１のダイと関連付けられており、
前記データドメインが第２のダイと関連付けられており、
前記第１のダイと前記第２のダイとが互いに異なる、
請求項１に記載の方法。
【請求項１２】
前記データブロックが、単一データ、データのブロック、単一の実行可能コード、実行可能コードのブロック、またはこれらの何らかの組み合わせに該当する、請求項１に記載の方法。
【請求項１３】
前記データブロックが前記第１のドメインにキャッシュされているかどうか判定する前記ステップが、タイルへの位置／アドレスの静的マッピングを使用するステップを含む、請求項１に記載の方法。
【請求項１４】
前記データブロックが前記第１のドメインにキャッシュされているかどうか判定する前記ステップが、前記第１のドメインに記憶されているディレクトリを評価するステップを含む、請求項１に記載の方法。
【請求項１５】
前記データブロックが前記第１のドメインにキャッシュされているかどうか判定する前記ステップが、前記データブロックが前記第１のドメインにキャッシュされているかどうか予測するステップを含む、請求項１に記載の方法。
【請求項１６】
ドメインベースのキャッシュ・コヒーレンス・プロトコルを用いてキャッシュ内のデータブロックにアクセスするための装置であって、
前記データブロックにアクセスするよう求める要求を評価するように構成される第１のドメインの第１のタイルの第１のプロセッサであって、前記第１のタイルは第１のタイルのキャッシュのデータを使用して命令を実行する第１のプロセッサを含み、前記第１のドメインは第１のタイルと少なくとも、第２のプロセッサを含む第２のタイルを含むものである、ステップと、
前記データブロックが前記第１のドメインの第２のタイルにキャッシュされていると判定されるときに、前記要求に応答して、前記第１のタイルのキャッシュに前記データブロックを送るように構成される前記第１のドメインの前記第２のタイルのキャッシュと、
第２のドメインのディレクトリを含む第３のタイルの第３のプロセッサと
を備え、
前記第１のプロセッサが、前記データブロックが前記第１のドメインの外部にキャッシュされていると前記第１のプロセッサによって判定されるときに、前記第２のドメインの前記第３のタイルに前記要求を送るようにさらに構成され、前記ディレクトリはデータブロックの表示及び第１のドメイン並びに第２のドメインとは異なるデータドメインの表示を含み、前記データドメインは、データブロックがキャッシュされた位置にあり、それぞれプロセッサとキャッシュを含む少なくとも２つのタイルを含むものであり、
前記第３のプロセッサが、前記データブロックがキャッシュされたデータドメインを判定するように構成され、また、前記データドメインに前記要求を送るようにも構成され、
前記第３のプロセッサから前記要求を受け取るように構成される前記データドメインの第４のタイルの第４のプロセッサと、
前記第４のプロセッサによって受け取られた前記要求に応答して、前記第１のタイルの前記キャッシュに前記データブロックを送るように構成される前記第４のタイルのキャッシュと
をさらに備える装置。
【請求項１７】
前記第３のプロセッサが、前記データドメインの代表タイルを識別し、前記代表タイルに前記要求を送るようにさらに構成される、請求項１６に記載の装置。
【請求項１８】
前記第３のプロセッサが、前記データドメインと前記データドメインの前記代表タイルとを識別する表を探索して前記データドメインを判定するように構成される、請求項１７に記載の装置。
【請求項１９】
前記第１のプロセッサが前記データブロックに書き込みを行うように構成され、
前記第３のプロセッサが、前記第１のプロセッサが前記データブロックに書き込みを行ったことに応答して前記ディレクトリを更新するように構成される、
請求項１６に記載の装置。
【請求項２０】
コンピューティング機器によって実行されると、前記コンピューティング機器を、ドメインベースのキャッシュ・コヒーレンス・プロトコルを用いてキャッシュ内のデータブロックにアクセスするための方法を実施するように適合させるコンピュータ実行可能命令が記憶されているコンピュータ記憶媒体であって、前記方法が、
第１のドメインの第１のタイルの第１のプロセッサが前記データブロックにアクセスするよう求める要求を評価するステップであって、前記第１のタイルは第１のタイルのキャッシュのデータを使用して命令を実行する第１のプロセッサを含み、前記第１のドメインは第１のタイルと少なくとも、第２のプロセッサを含む第２のタイルを含むものである、ステップと、
前記データブロックが前記第１のドメインにキャッシュされているかどうか判定するステップと、
前記データブロックが前記第１のドメインの第２のタイルにキャッシュされていると判定されると、前記第２のタイルのキャッシュから前記第１のタイルに前記データブロックを送るステップと、
前記データブロックが前記第１のドメインの外部にキャッシュされていると判定されると、
第３のプロセッサおよびディレクトリを含む第２のドメインの第３のタイルに前記要求を送るステップであって、前記ディレクトリはデータブロックの表示及び第１のドメイン並びに第２のドメインとは異なるデータドメインの表示を含み、前記データドメインは、データブロックがキャッシュされた位置にあり、それぞれプロセッサとキャッシュを含む少なくとも２つのタイルを含むものである、ステップと、
前記第３のプロセッサで前記ディレクトリを評価して、前記データブロックがキャッシュされたデータドメインを判定するステップと、
前記第３のプロセッサで前記データドメインに前記要求を送るステップと、
前記データドメインの第４のタイルの第４のプロセッサで前記第３のプロセッサからの前記要求を受け取るステップと、
前記第４のプロセッサによって受け取られた前記要求に応答して、前記第４のタイルのキャッシュから前記第１のタイルのキャッシュに前記データブロックを送るステップと
を含むコンピュータ記憶媒体。
【請求項２１】
前記第３のプロセッサで前記ディレクトリを評価してデータドメインを判定する前記ステップが前記データドメインの代表タイルを識別するステップを含み、前記第３のプロセッサで前記データドメインに前記要求を送る前記ステップが前記代表タイルに前記要求を送るステップを含む、請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
第１のタイルがドメインベースのキャッシュ・コヒーレンス・プロトコルを用いてキャッシュ内のデータブロックにアクセスするための方法であって、
第１のドメインの第１のタイルにおけるプロセッサが前記データブロックにアクセスするよう求める要求を評価するステップであって、前記第１のタイルは第１のタイルのキャッシュのデータを使用して命令を実行する第１のプロセッサを含み、前記第１のドメインは第１のタイルと少なくとも第２のタイルを含むものである、ステップと、
前記データブロックが前記第１のドメインにキャッシュされているかどうか判定するステップと、
前記データブロックが前記第１のドメインの第２のタイルにキャッシュされていると判定されると、前記第１のドメインの前記第２のタイルに前記要求を送り、前記第２のタイルに送られた前記要求に応答して前記第２のタイルから前記データブロックを受け取るステップと、
前記データブロックが前記第１のドメインの外部にキャッシュされていると判定されると、
前記プロセッサが、前記データブロックのキャッシュされた記憶位置を識別するディレクトリを含む第２のドメインの第３のタイルに前記要求を送るステップであって、前記データドメインは第１のドメイン並びに第２のドメインとは異なり、データドメインはプロセッサとキャッシュを含む少なくとも２つのタイルを含むものである、ステップと、
前記第１のタイルのキャッシュが、前記第３のタイルに送られた前記要求に応答して前記データブロックの前記キャッシュされた記憶位置を含む第２のドメインのデータタイルから前記データブロックを受け取るステップと
を含む方法。
【請求項２３】
前記第１のタイルのプロセッサから前記第３のタイルに、前記データブロックが前記第１のドメインに記憶されていることを表示する更新を送るステップをさらに含む、請求項２２に記載の方法。
【請求項２４】
前記第１のタイルのプロセッサが前記第１のドメインの各タイルに前記データブロックを求める前記要求を送るステップをさらに含む、請求項２２に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
特に指示しない限り、本項に記載する資料は本出願における特許請求の範囲の先行技術ではなく、本項に含めることによって先行技術であると認められるものではない。
【０００２】
マルチコア・プロセッサ・アーキテクチャにおいては、複数のプロセッサコアが単一の集積回路ダイに、または単一のパッケージに配置された複数の集積回路ダイ上に含まれ得る。プロセッサコアのうちの１つまたは複数がアクセスするためのデータをローカルで記憶するのにキャッシュが使用され得る。データは、典型的にはダイの外部に位置するより大容量のメモリに記憶されるデータの部分とすることができる。
【０００３】
単一のデータが複数のキャッシュに記憶されてもよく、複数のキャッシュに記憶されたデータを常に把握するのにキャッシュ・コヒーレンス・プロトコルが使用されてもよい。キャッシュ・コヒーレンス・プロトコルは、データを求める複数の要求が一貫して同じデータが返される結果になることを保証するように構成されている。キャッシュ・コヒーレンス・プロトコルはディレクトリベースとすることができ、その場合、キャッシュに記憶されるデータはディレクトリにおいて索引付けされる。ディレクトリはフィルタとして使用され、複数のキャッシュに記憶されたデータを取り出すよう求める要求を処理し得る。ディレクトリ内のエントリが変更され、キャッシュに記憶された対応するデータの変更を表示するときに、ディレクトリは、当該エントリで索引付けされた他のキャッシュの状況を更新し、または無効にする。このようにして、データの古いバージョンを有するキャッシュが、ディレクトリ内のデータの有効なソースとして索引付けされなくなる。
【発明の概要】
【課題を解決するための手段】
【０００４】
いくつかの例では、ドメインベースのキャッシュ・コヒーレンス・プロトコルを用いてキャッシュ内のデータブロックにアクセスするための方法を概説する。いくつかの例では、前記方法は、第１のドメインの第１のタイルの第１のプロセッサがデータブロックにアクセスするよう求める要求を評価するステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインにキャッシュされているかどうか判定するステップを含む。いくつかの例では、データブロックが第１のドメインの第２のタイルにキャッシュされていると判定されるときに、前記方法は、第２のタイルのキャッシュから第１のタイルにデータブロックを送るステップをさらに含む。いくつかの例では、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、前記方法は、第３のプロセッサおよびディレクトリを含む第２のドメインの第３のタイルに要求を送るステップをさらに含む。いくつかの例では、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、前記方法は、第３のプロセッサでディレクトリを評価して、データブロックのキャッシュされた位置と関連付けられたデータドメインを判定するステップをさらに含む。いくつかの例では、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、前記方法は、第３のプロセッサでデータドメインに要求を送るステップをさらに含む。いくつかの例では、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、前記方法は、データドメインの第４のタイルの第４のプロセッサで第３のプロセッサからの要求を受け取るステップをさらに含む。いくつかの例では、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、前記方法は、第４のプロセッサによって受け取られた要求に応答して、第４のタイルのキャッシュから第１のタイルのキャッシュにデータブロックを送るステップをさらに含む。
【０００５】
いくつかの例では、ドメインベースのキャッシュ・コヒーレンス・プロトコルを用いてキャッシュ内のデータブロックにアクセスするための装置を概説する。いくつかの例では、前記装置は、第１のドメインの第１のタイルの第１のプロセッサと、第１のドメインの第２のタイルのキャッシュと、第２のドメインの第３のタイルの第３のプロセッサと、データドメインの第４のタイルの第４のプロセッサと、第４のタイルのキャッシュとを含む。いくつかの例では、第１のプロセッサは、データブロックにアクセスするよう求める要求を評価するように構成される。いくつかの例では、第２のタイルのキャッシュは、データブロックが第２のタイルにキャッシュされていると判定されるときに、要求に応答して第１のタイルのキャッシュにデータブロックを送るように構成される。いくつかの例では、第３のタイルはディレクトリを含む。いくつかの例では、第１のプロセッサは、データブロックが第１のドメインの外部にキャッシュされていると第１のプロセッサによって判定されるときに、第２のドメインの第３のタイルに要求を送るようにさらに構成される。いくつかの例では、第３のプロセッサは、データブロックのキャッシュされた位置と関連付けられたデータドメインを判定するように構成され、また、要求をデータドメインに送るようにも構成される。いくつかの例では、データドメインの第４のタイルの第４のプロセッサは、第３のプロセッサから要求を受け取るように構成される。いくつかの例では、第４のタイルのキャッシュは、第４のプロセッサによって受け取られた要求に応答して第１のタイルのキャッシュにデータブロックを送るように構成される。
【０００６】
いくつかの例では、コンピューティング機器によって実行されると、コンピューティング機器を、ドメインベースのキャッシュ・コヒーレンス・プロトコルを用いてキャッシュ内のデータブロックにアクセスするための方法を実施するように適合させるコンピュータ実行可能命令が記憶されているコンピュータ記憶媒体を概説する。いくつかの例では、前記方法は、第１のドメインの第１のタイルの第１のプロセッサがデータブロックにアクセスするよう求める要求を評価するステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインにキャッシュされているかどうか判定するステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインの第２のタイルにキャッシュされていると判定されるときに、第２のタイルのキャッシュから第１のタイルにデータブロックを送るステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、第３のプロセッサおよびディレクトリを含む第２のドメインの第３のタイルに要求を送るステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、第３のプロセッサでディレクトリを評価して、データブロックのキャッシュされた位置と関連付けられたデータドメインを判定するステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、第３のプロセッサでデータドメインに要求を送るステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、データドメインの第４のタイルの第４のプロセッサで第３のプロセッサからの要求を受け取るステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、第４のプロセッサによって受け取られた要求に応答して、第４のタイルのキャッシュから第１のタイルのキャッシュにデータブロックを送るステップを含む。
【０００７】
いくつかの例では、タイルがドメインベースのキャッシュ・コヒーレンス・プロトコルを用いてキャッシュ内のデータブロックにアクセスするための方法を概説する。いくつかの例では、前記方法は、第１のドメインのタイルのプロセッサがデータブロックにアクセスするよう求める要求を評価するステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインにキャッシュされているかどうか判定するステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインの第２のタイルにキャッシュされていると判定されるときに、第１のドメインの第２のタイルに要求を送るステップと、第２のタイルに送られた要求に応答して第２のタイルからデータブロックを受け取るステップとを含む。いくつかの例では、前記方法は、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、プロセッサが、データブロックのキャッシュされた記憶位置を識別するディレクトリを含む第２のドメインの第３のタイルに要求を送るステップを含む。いくつかの例では、前記方法は、データブロックが第１のドメインの外部にキャッシュされていると判定されるときに、タイルのキャッシュが、第３のタイルに送られた要求に応答して、データブロックのキャッシュされた記憶位置を含む第２のドメインのデータタイルからデータブロックを受け取るステップを含む。
【０００８】
いくつかの例では、プロセッサがドメインベースのキャッシュ・コヒーレンス・プロトコルを用いてキャッシュ内のデータブロックにアクセスするための方法を概説する。いくつかの例では、前記方法は、プロセッサでキャッシュ内のデータブロックにアクセスするよう求める要求を受け取るステップを含む。いくつかの例では、プロセッサは、ドメインの第１のタイルに位置する。いくつかの例では、ドメインは、第１のタイルと第２のタイルとを含む。いくつかの例では、要求は、別のドメインの第３のタイルからの要求に該当する。いくつかの例では、前記方法は、受け取られた要求に応答して、データブロックがドメインの第２のタイルにキャッシュされていると判定するステップをさらに含む。いくつかの例では、前記方法は、受け取られた要求に応答して、第２のタイルのキャッシュされた位置から受け取りのために別のドメインにデータブロックを送るステップをさらに含む。
【０００９】
以上の概要は例示にすぎず、いかなる点においても限定を意図するものではない。図面および以下の詳細な説明を参照すれば、前述の例示的態様、実施形態、および特徴に加えてさらに別の態様、実施形態、および特徴も明らかになるであろう。
【００１０】
本開示の上記その他の特徴は、以下の説明および添付の特許請求の範囲を、添付の図面と併せて読めばより十分に明らかになるであろう。これらの図面は本開示によるいくつかの実施形態を描いたものにすぎず、したがって、本開示の範囲を限定するものとみなすべきではないことを踏まえ、添付の図面を使用して、本開示をさらに具体的に詳細に説明する。図面はすべて、本明細書で提示する少なくともいくつかの実施形態に従って構成されたものである。
【図面の簡単な説明】
【００１１】
【図１】ドメインベースのキャッシュ・コヒーレンス・プロトコルを実施するのに利用することのできるシステム例を示す図である。
【図２】ドメインベースのキャッシュ・コヒーレンス・プロトコルを実施するのに利用することのできるシステム例を示す図である。
【図３】図２のシステムによって使用され得る表の例を示す図である。
【図４】ドメインベースのキャッシュ・コヒーレンス・プロトコルを実施するのに使用することのできるシステム例を示す図である。
【図５】ドメインベースのキャッシュ・コヒーレンス・プロトコルを実施するのに使用することのできるシステムを示す図である。
【図６】ドメインベースのキャッシュ・コヒーレンス・プロトコルを実施するのに使用することのできるシステム例を示す図である。
【図７】ドメインベースのキャッシュ・コヒーレンス・プロトコルを示す状態図である。
【図８】ドメインベースのキャッシュ・コヒーレンス・プロトコルのためのプロセス例を示す流れ図である。
【図９】ドメインベースのキャッシュ・コヒーレンス・プロトコルのためのプロセス例を示す信号フロー図である。
【図１０】ドメインベースのキャッシュ・コヒーレンス・プロトコルのためのコンピュータプログラム製品を示す図である。
【図１１】ドメインベースのキャッシュ・コヒーレンス・プロトコルのためにコンピューティング機器上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラム製品例を示す概略図である。
【発明を実施するための形態】
【００１２】
以下の詳細な説明では、本出願の一部を構成する添付の図面を参照する。図面では、文脈から別の意味に解されるのでない限り、類似の記号は通常、類似の構成要素を識別する。詳細な説明、図面、および特許請求の範囲に記載される例示的実施形態は限定のためのものではない。本明細書で提示する主題の趣旨または範囲を逸脱することなく、他の実施形態が利用されてもよく、他の変更が加えられてもよい。本明細書において概説され、図において例示される本開示の態様は、多種多様な構成として配置し、置換し、組み合わせ、分離し、設計することができ、それらすべてが本明細書において明示的に企図されるものであることが容易に理解されるであろう。
【００１３】
本開示は全体として、とりわけ、ドメインベースのキャッシュ・コヒーレンス・プロトコルを提供することに関連した方法、装置、システム、およびコンピュータプログラム製品を対象とするものである。
【００１４】
簡単にいうと、ドメインベースのキャッシュ・コヒーレンス・プロトコルを用いてキャッシュ内のデータブロックにアクセスするための技術が概説される。第１のタイル、第１のドメインの第１のプロセッサは、データブロックにアクセスするよう求める要求を評価するように構成することができる。第１のドメインの第２のタイルのキャッシュは、データブロックが第２のタイルにキャッシュされているときに、第１のタイルにデータブロックを送るように構成することができる。第１のプロセッサは、キャッシュされた位置が第１のプロセッサのドメインの外部にあるときに、別のドメインの第３のタイルに要求を送るように構成することができる。第３のプロセッサは、データブロックのキャッシュされた位置と関連付けられたデータドメインを判定し、そこに要求を送るように構成することができる。第４のタイルは、要求を受け取り、第１のタイルにデータブロックを送るように構成することができる。
【００１５】
以下の考察では、データブロックがキャッシュに記憶され得る（例えばデータブロックはキャッシュに入れられる）。キャッシュ内の記憶の位置は、本開示の趣旨を逸脱することなく、記憶位置、キャッシュ位置、キャッシュされた位置、キャッシュされた記憶位置、または他の任意の妥当な相当語句で呼ぶことができる。さらに、データブロックは、それだけに限らないが、単一データ（プロセッサが使用するためにキャッシュに記憶され得るデータ値など）、データのブロック、単一の実行可能コード（プロセッサが実行するためにキャッシュに記憶され得るコードなど）、実行可能コードのブロック、またはそれらの何らかの組み合わせを含む、キャッシュに記憶され得る任意の適切なデータを指し得る。
【００１６】
図１に、本明細書において提示する少なくともいくつかの実施形態による、ドメインベースのキャッシュ・コヒーレンス・プロトコルを実施するのに利用され得るシステム例を示す。システム１００は、複数のドメイン１２０、１２２、１２４に分割されたダイ１０２を含み得る。各ドメイン１２０、１２２、１２４は、１つまたは複数のタイル１１８を含み得る。タイル１１８のうちの１つまたは複数にディレクトリ１１４を含むことができるが、簡単にするために、１つのタイル１１８に１つのディレクトリ１１４だけを示す。ダイ１０２はドメイン１２０、１２２、１２４に分割されていてもよく、各ドメインは、ダイの論理区画に対応していてもよく、ダイの物理区画に対応していてもよく、ダイの地理的に決定された区画に対応していてもよく、他の任意の方法によるものでもよい。いくつかの例では、各ドメイン１２０、１２２、１２４は、アプリケーションや仮想マシンといった隔離された環境をホストするのに使用され得る。ドメイン１２０、１２２、１２４は、アプリケーションに応じて動的に再割り振りされ得る。ディレクトリ１１４は、ダイ１０２のキャッシュに記憶された各データブロック、およびデータブロックが記憶されているドメイン１２０、１２２、１２４の表現（例えば、キャッシュ位置、記憶位置、キャッシュされた記憶位置など）を識別する表を備えることができる。以下でより詳細に説明するように、要求側ドメインのプロセッサがダイ１０２のキャッシュに記憶されたデータブロックＸを取り出すことが求められるときに、プロセッサは、まず、データブロックＸを求めて要求側ドメインで探索を行うことができる。例えば、プロセッサは、要求側ドメインのディレクトリを探索し、または評価して、データブロックＸが要求側ドメインの１つまたは複数のタイルにキャッシュされているかどうか判定し得る。この動作を以下でより詳細に説明する。データブロックＸが要求側ドメインに記憶されていない場合、要求側プロセッサは、要求側ドメインの外部のタイルに記憶されている可能性があるディレクトリ１１４に要求を送ることができる。次いで、ディレクトリと同じタイルのプロセッサがデータブロックＸを記憶しているドメインに要求を送ることができる。
【００１７】
図２は、本明細書において説明する少なくともいくつかの実施形態による、ドメインベースのキャッシュ・コヒーレンス・プロトコルを実施するのに利用され得るシステムの図である。図２のシステムは、図１のシステム１００とほとんど同様であり、さらに詳細を含む。図１の構成要素と同一の名称が付いている図２の構成要素については、明確にするために説明を繰り返さない。
【００１８】
図２に示すように、各ドメイン１２０、１２２、１２４は、個々のドメインの動作をサポートするための複数のタイルを含み得る。例えば、ドメイン１２０は、タイル１１８、１３０、１３３、１３４を個々のキャッシュ１１０、１５０、１５３、１５４と共に含むことができる。ドメイン１２２は、タイル１３１、１３２、１３５、１３６、１３８、１３９、１４０を個々のキャッシュ１５１、１５２、１５５、１５６、１５８、１５９、１６０と共に含むことができる。ドメイン１２４は、タイル１３７、１４１、１４２、１４３、１４４を個々のキャッシュ１５７、１６１、１６２、１６３、１６４と共に含むことができる。個々のドメインにおける各タイルの数および位置は任意のものであり、望みどおりに変更され得る。必ずしもすべてのタイルがキャッシュを含むとは限らない。タイルは、同種（ｈｏｍｏｇｅｎｅｏｕｓ）構成の場合のようにほぼ同じものとすることもでき、異種（ｈｅｔｅｒｏｇｅｎｅｏｕｓ）構成の場合のように異なっていてもよい。またドメインは別のダイ１０３まで延在していてもよい。以下の考察では簡潔にするためにダイ１０２のみに注目するが、ダイ１０３がダイ１０２と併用されてもよいことを理解すべきである。
【００１９】
１つのタイルの例としてタイル１１８に注目する。これは様々なタイルの代表例とすることができる。タイル１１８は、キャッシュ１１０、プロセッサまたはプロセッサコア（以下、簡潔にするために「プロセッサ」と呼ぶ）１１２、ディレクトリ１１４、およびルータ１１６を含み得る。ディレクトリ１１４は表１１３を含み得る。プロセッサ１１２は、コードを含むデータを処理するように構成され得る。キャッシュ１１０は、プロセッサ１１２にとってローカルでデータを記憶するように構成されていてもよく、その場合、ローカルで記憶されるデータは、おそらくはダイ１０２の外部にあるより大容量のメモリにおいて利用可能なデータ（またはコード）の部分とすることができる。ルータ１１６は、タイル１１８とドメイン１２０の他のタイルの間で、ドメイン１２２、１２４に対して、またはダイ１０２の外部へデータを経路指定するように構成され得る。
【００２０】
表１１３は、ドメインおよび各ドメインの代表タイルを識別する表とすることができる。完全なディレクトリは、複数のドメイン１２０、１２２、１２４の間で、または１つのドメイン１２０、１２２、１２４において分散され得る１つまたは複数のディレクトリ１１４から構成され得る。表１１３は、各ドメインにおける特定のデータおよび／またはコード（場合によってはデータブロックともいう）の有無を表示し得る。例えば、表１１３は、特定のデータブロックＸがドメイン１２０およびドメイン１２２の特定のキャッシュに記憶されていることを表示し得る。
【００２１】
表１１３は、データおよび／またはコードの位置の表示を多くの異なるやり方で記憶するように適合され得る。例えば、表１１３は、各ドメインを表す共有ビットベクトルを含んでいてもよい。「１」の値でデータブロックＸがキャッシュに記憶されていることを表示することができ、「０」の値でデータブロックＸがキャッシュに記憶されていないことを表示することができる。合計３つのドメインを含む一例では、共有ビットベクトルがＸ：｛１，１，０｝として表されてもよく、これは、データブロックＸが第１のドメインおよび第２のドメインのキャッシュに記憶されており、第３のドメインのキャッシュに記憶されていない（不在である）ことを表示している。
【００２２】
また表１１３は、ドメインごとの代表タイルの集合を識別するように適合されていてもよい。例えば、代表タイルがドメイン１２０、１２２、１２４ごとに指定されていてもよい。代表タイルは、ドメインが他のドメインのタイルとやりとりしているときに、タイルの全ドメインを表すことができる。例えば、図２において、タイル１３４はグレーで網掛けされており、タイル１３４をドメイン１２０の代表タイルとし得ることを示している。同様に、タイル１３８をドメイン１２２の代表タイルとすることができ、タイル１３７はドメイン１２４の代表タイルである。代表タイル１３４、１３７および１３８は、個々のドメインのゲートキーパとして働くように構成されてもよく、ディレクトリ１１４がドメイン間コヒーレンスを行っているときに問い合わせされる。例えば、ドメイン１２４のタイル１４２がドメイン１２０のキャッシュのデータブロックＹにアクセスしようとする（例えば読み出しや書き込みを行う）ときに、タイル１４２は、データブロックＹのディレクトリを有するタイルに要求を送るように構成され得る（図３および関連の議論を参照）。ディレクトリタイルは、ドメイン１２０の代表タイル１３４に要求を送るように構成され得る。
【００２３】
図３に、本明細書で説明する少なくともいくつかの実施形態に従って構成された、図２のシステムによって使用され得る表の例を示す。図３には、データブロック１８０の表現、共有ビットベクトル１８２、およびドメイン１８４ごとの代表タイル１８６の一覧が含まれている。
【００２４】
表１１３は、タイルの様々なキャッシュ（キャッシュ１１０、１５０〜１６４など）に記憶されたデータおよび／またはコードを常に把握するために利用され得る。ディレクトリ１１４と同様に、表１１３は、１つのタイルに記憶されていてもよく、多くのタイルの間で分散されていてもよい。加えて、各タイルは、タイルの個々のドメイン内のすべてのキャッシュに記憶されたデータを常に把握することもできる。表１１３は、ディレクトリ１１４の一部とすることもでき、ディレクトリ１１４とは別個のものとすることもできる。次に図４を参照することができる。
【００２５】
図４に、本明細書で説明する少なくともいくつかの実施形態による、ドメインベースのキャッシュ・コヒーレンス・プロトコルを実施するのに使用され得るシステム例を示す。図１および図２の構成要素と同一の名称が付いている図４の構成要素については、明確にするために説明を繰り返さない。
【００２６】
図４に示す例において、タイル１３０のプロセッサ１１２は、プロセッサ１１２が同じドメイン１２０内のタイル１３４のキャッシュ１５４に記憶されているデータブロックＸにアクセスする（例えば読み出しや書き込みを行う）必要があるときに、タイル１３４に直接要求１７０を送るように構成され得る。タイル１１８のプロセッサ１１２は、データが異なるやり方でタイル１３４に記憶されていると判定するように構成することができる。一例において、システム１００は、読み出し／書き込みアクセスを生じさせるロード／ストア命令のオペランドに含まれるアドレスを使用して、タイルへの位置／アドレスの静的マッピングを使用する。この例では、任意のアドレスについて、１つのタイルがデータのコピーを記憶し得る。別の例では、データがタイルにまたがって複写されてもよく、タイル１１８のプロセッサ１１２は、同じドメインの他のタイルに要求をブロードキャストするように構成され得る。別の例では、ドメインにミニディレクトリが使用され得る。タイル１１８のプロセッサ１１２は、ミニディレクトリを探索して、どのキャッシュが特定のアドレスについてのデータを記憶しているか判定するように構成され得る。別の例では、タイル１１８のプロセッサ１１２は、どのタイルがデータを記憶しているかを、例えば、データブロックについて以前に知られていた位置を探索することによって予測するように構成され得る。予測が誤りである場合には、プロセッサ１１２は、次いでドメイン内で要求をブロードキャストするように構成され得る。
【００２７】
図５に、本明細書で説明する少なくともいくつかの実施形態による、ドメインベースのキャッシュ・コヒーレンス・プロトコルを実施するのに使用され得る別のシステム例を示す。図１、図２および図４の構成要素と同一の名称が付いている図５の構成要素については、明確にするために説明を繰り返さない。
【００２８】
図５に示すように、タイル１３０のプロセッサ１１２は、ドメイン１２０のすべてのタイル１１８、１３３、１３４にブロードキャスト要求１７４を送出するように構成されてもよく、また、タイル１３４からデータブロックＸ（１つまたは複数のデータおよび／またはコードなど）を含む応答１７６を受け取るように構成されてもよい。
【００２９】
図４および図５に示す実施形態では、データブロックＸがドメイン１２０内に記憶されているときには、任意のドメインの任意のタイルに置かれている可能性のあるデータブロックＸの個々のディレクトリ１１４を照会せずに、データブロックＸを要求側タイル１３０に送ることができる。データブロックＸがドメイン１２０内に記憶されておらず、またはドメイン１２０に一部しか記憶されていないときには、データブロックＸに関するキャッシュ情報を記憶しているディレクトリに要求が出され得る。いくつかの例では、ドメイン１２０のタイル１３０のプロセッサコア１１２がデータブロックＸにアクセスすることが求められる場合があり、その場合、データブロックＸは、同じドメイン１２０のタイル１３４のキャッシュ１５４に記憶されている可能性がある。これらの例では、タイル１３０のプロセッサコア１１２は、要求１７０をタイル１３４に直接送るように構成され得る。タイル１３４は、要求１７０に応答して、タイル１３０にデータブロックＸを送るように構成される。タイル１３０へのデータブロックＸの伝送（すなわち送ること）は、例えば、データブロックＸの少なくとも一部をコピーすること、データブロックＸの少なくとも一部を移動すること、ある期間に及ぶコピーまたは移動の何らかの組み合わせなどといったいくつかの動作を含み得る。
【００３０】
図６に、本明細書で説明する少なくともいくつかの実施形態による、ドメインベースのキャッシュ・コヒーレンス・プロトコルを実施するのに使用され得るシステム例を示す。図１、図２、図４および図５の構成要素と同一の名称が付いている図６の構成要素については、明確にするために説明を繰り返さない。
【００３１】
図６において、タイル１３７は、タイル１３７がそのドメイン１２４に記憶されていないデータブロックＸにアクセスする（例えば読み出しや書き込みを行う）ことが求められるときに、ディレクトリ１１４に要求１８２を送るように構成され得る。ディレクトリ１１４は別のタイルに位置していてもよい。例えば、データブロックＸのディレクトリ１１４はタイル１４４に記憶されていてもよく、その場合、タイル１４４は、ディレクトリ１１４および表１１３（図３参照）を探索（または評価）して適用可能なドメイン（ドメイン１２０）およびデータブロックＸが現在利用可能な代表タイル（１３４など）を識別するように構成され得る。よってタイル１４４はタイル１３４に要求１８２を送るように適合させることができ、タイル１３４は、ドメイン１２０内のどのタイルにデータブロックＸが記憶されているか判定するように構成され得る。あるいは、データブロックＸがどのタイルにも存在しない場合には、タイル４４は、低レベルのキャッシュやメインメモリといった別のメモリにデータを要求するように適合させることもできる。いくつかの例では、タイル１３４自体にデータＸを記憶しておくことができ、よって、タイル１３４は、タイル１３７にデータブロックＸ１８６を送るように構成され得る。タイル１４４のディレクトリは、後で、データがドメイン１２０および１２２にキャッシュされていることを表示するように更新されるように構成されてもよい。
【００３２】
いくつかの例では、要求１８２は、ドメイン１２０内の多くのタイル１１８に送られるブロードキャスト要求とすることができる。他のいくつかの例では、要求１８２は、ディレクトリ１１４を含む特定のタイルに送られる宛先指定要求とすることもできる。
【００３３】
図７に、本開示の少なくともいくつかの実施形態に従って整理されているドメインベースのキャッシュ・コヒーレンス・プロトコルについての状態図を示す。図７には、項目２００、初期状態２０２、および３つの状態変化２０４、２０６、２０８が示されている。項目２００は、「イベント」、「メッセージ」、「タイル１３０のキャッシュ１５０」、「タイル１３４のキャッシュ１５４」、「タイル１３７のキャッシュ１５７」、および「タイル１４４のキャッシュ１６４に記憶されたＸのディレクトリ；共有ベクトル｛ドメイン１２０，ドメイン１２２，ドメイン１２４｝、状態」を含む。
【００３４】
図７に示すように、初期状態２０２において、データブロックＸはタイル１３４のキャッシュ１５４に記憶されており、キャッシュ１５４は、データブロックＸが「共有」の状況で記憶されていることを表示している。データブロックＸのディレクトリは、タイル１４４に記憶することができ、データブロックＸがドメイン１２０だけに記憶されていると表示し得る。いくつかの例では、ビットベクトルを使用して特定のドメインがデータブロックＸを有するキャッシュを含むかどうか表示することができる。ドメイン１２０、１２２、１２４を順に見ると、ビットベクトル｛１，０，０｝は、データブロックＸの状況を、ドメイン１２０のキャッシュに記憶されているが、ドメイン１２２および１２４には記憶されていない（例えば不在である）ものとして表示している。
【００３５】
状態２０４は、図４および図５を参照して前述した状況を表しており、この状況においてタイル１３０は、タイル１３４のデータブロックＸにアクセスするためにデータブロックＸのタイル１３４に要求を送る。キャッシュ１５０は、データブロックＸが現在共有状態でキャッシュ１５０に記憶されていることを表示するように更新される。タイル１３４のキャッシュ１５４内のデータブロックＸの状況も同様に、データブロックＸが「共有」状態でキャッシュ１５４に記憶されていることを表示している。データブロックＸのディレクトリはこのデータの送信に関与する必要がなく、現在ドメイン１２０だけがデータブロックＸを含むため、キャッシュ１６４のデータブロックＸのディレクトリは同じ状態のままである。
【００３６】
状態２０６は、タイル１３０がデータブロックＸに書き込みを行うことが求められる状況を表し、タイル１３０はデータブロックＸのディレクトリにキャッシュ状態を「変更」に変更するよう求める要求を送る。前述の書き込み動作の結果として、タイル１３０のキャッシュ１５０内のデータブロックＸの状況は「変更」に変更される。タイル１３４のキャッシュ１５４は「無効」に変更され、キャッシュ１６４内のデータブロックＸのディレクトリは変更に変更される。
【００３７】
状態２０８は、ドメイン１２４のタイル１３７がデータブロックＸにアクセスする必要がある状況を表す。この状況において、タイル１３７は、タイル１４４に記憶されたデータブロックＸのディレクトリに要求を送るように構成される。要求に応答して、タイル１４４は、ディレクトリ１１４および表１１３（図３参照）を探索（または評価）し、適用可能なドメイン（ドメイン１２０）および当該のデータブロックＸのドメインの代表タイルを識別するように構成される。またタイル１４４は、タイル１３４に要求１８２を送るようにも構成され、その場合タイル１３４は、ドメイン１２０内のどのタイルがデータブロックＸを記憶しているか判定するように構成される。タイル１３０にはデータブロックＸが記憶されているため、タイル１３４はタイル１３７に要求データブロックＸ１８６を送るように構成される。次いでキャッシュ１６４内のディレクトリ１１４は、データブロックＸが現在ドメイン１２４に記憶されていることを表示するように更新される。キャッシュ１５０内のデータブロックＸの状況は「共有」に変更され、キャッシュ１５４内のデータブロックＸの状況は「無効」に変更され、キャッシュ１５７の状況は「共有」に変更される。よって、データブロックＸのディレクトリビットベクトルは｛１，０，１｝に変更され得る。共有、無効、および変更の各状態に加えて、データがドメイン内で、またはドメインにまたがって共有されている状況を反映するのに別の特殊な状況が使用されてもよい。例えば、ドメイン内の共有、ドメインにまたがる共有などといった特殊な状態である。このようにして、書き込み動作が行われるときに、ドメイン内で無効化を行うことができ、必ずしもディレクトリの関与を伴わなくてもよい。
【００３８】
ディレクトリ１１４はキャッシュディレクトリをドメインレベルで維持するように構成されているため、ディレクトリ１１４はデータのブロックがドメイン内のどこにあるかを常に把握していなくてもよい。言い換えると、データのブロックは、ドメイン内であるキャッシュから別のキャッシュへ移動することもでき、ディレクトリ１１４とのやりとりを伴わずにドメイン内の複数のキャッシュタイルにおいて複写されてもよい。各ドメインは、ディレクトリとやりとりせずに、ドメイン内のすべてのキャッシュスライスのキャッシュポリシーを柔軟に管理することができる。例えば、ドメイン内の複数のタイルのキャッシュが、大きな共有キャッシュを形成するようにまとめて集約されてもよい。各プロセッサ１１２は、共有キャッシュ内のデータにアクセスするように適合させることができる。各ドメインは、ドメインがディレクトリとやりとりする回数を最小限に抑えるようにキャッシュポリシーを編成するように構成されていてもよく、そのようなキャッシュポリシーは、局所性の改善をもたらしたり、オンチップ・ネットワーク・トラフィックを最小限に抑えたりすることができる。ディレクトリは、ブロックが複数のドメインによって共有されているとき、またはブロックの状態が（例えば書き込み動作のためなどの）特定のキャッシュ動作を許容しないときに関与することができる。
【００３９】
可能な利益の中でも特に、ドメイン間における性能分離が改善され得る。というのは、ドメイン内で満たされ得るキャッシュ活動がもはやディレクトリとのやりとりを必要としなくなるからである。キャッシュミスはより迅速に満たすことができる。というのは、ディレクトリよりも要求側プロセッサに近いキャッシュが、関連のあるデータのブロックがキャッシュに記憶されているか否かを表示し得るからである。さらに、要求されるデータのブロックがドメイン内でより頻繁に見つかる可能性があり、結果としてキャッシュミス遅延が省かれ、ネットワークトラフィックがより少なくなる。
【００４０】
システム１００は、タイルベースのディレクトリコヒーレンスの手法に優る利益を提供し得る。例えば、タイル数より少数のドメインが実施され得るため、ディレクトリ空間オーバーヘッドがより小さくなる可能性がある。特に、データが同じドメインにおいて要求され、記憶されているときに、各ドメインがディレクトリにアクセスしようと試みる際に相互に競合する可能性がより少なくなる。
【００４１】
図８に、本開示の少なくともいくつかの実施形態による、ドメインベースのキャッシュ・コヒーレンス・プロトコルのためのプロセス例の流れ図を示す。図８のプロセスは、例えば、前述のシステム１００などを使用して実施することができるはずである。プロセス例は、ブロックＳ１、Ｓ２、Ｓ４、Ｓ６、Ｓ７、Ｓ８、Ｓ１０、Ｓ１２、Ｓ１４、Ｓ１６、Ｓ１８、Ｓ２０、Ｓ２２、および／またはＳ２４のうちの１つまたは複数によって示される１つまたは複数の動作、措置、または機能を含み得る。別個のブロックとして示されているが、様々なブロックは、所望の実施態様に応じて、さらに別のブロックへと分割されてもよく、より少数のブロックへと組み合わされてもよく、除外されてもよい。処理はブロックＳ１から開始し得る。
【００４２】
ブロックＳ１では、第１の要求側ドメインのプロセッサがデータブロックＸにアクセスするよう求める要求を生成するように適合され得る。ブロックＳ１に続いてブロックＳ２を行うことができ、そこでは、要求側ドメインのプロセッサが、Ｘが要求側ドメインに記憶されているかどうか判定するように構成され得る。処理はブロックＳ２からブロックＳ４に進むことができ、そこでは、データブロックＸが要求側ドメインに位置する（例えば記憶されている）かどうかの問い合わせが行われ得る。データブロックＸが要求側ドメインに位置する（例えばキャッシュされている）と判定されるとき（「Ｙｅｓ」）には、処理はブロックＳ４からブロックＳ６に進むことができ、そこでは、データブロックＸが要求側プロセッサに送られ得る。そうではなく、データブロックＸが要求側ドメインにおいて不在であり、または見つからないと判定されるとき（「Ｎｏ」）には、処理はブロックＳ４からブロックＳ７に進むことができる。
【００４３】
ブロックＳ７では、要求がＸのディレクトリを含むディレクトリドメインに送られ得る。処理はブロックＳ７からブロックＳ８に進むことができ、そこでは、ディレクトリドメインのプロセッサが要求を受け取るように構成され得る。ブロックＳ８からブロックＳ１０に進み、ディレクトリドメインのプロセッサは、ディレクトリを探索して（例えば評価して）、データブロックＸが記憶されているデータドメインを判定するように構成され得る。データがどのドメインにもキャッシュされていない場合、データは、ディレクトリを記憶しているタイルにより、低レベルのキャッシュまたはメインメモリから取り出され得る。ブロックＳ１０からブロックＳ１２に進み、ディレクトリドメインのプロセッサは、ディレクトリをさらに探索してデータドメインの代表タイルを判定するように構成され得る。ブロックＳ１２に続いてブロックＳ１４を行うことができ、そこでは、要求がデータドメインの代表タイルに送られ得る。データドメインは、例えば、ディレクトリドメインと同じドメインとすることも、異なるドメインとすることもできるはずである。また要求は、要求がデータへの書き込みを求める要求であるときには、無効化信号も含み得る。
【００４４】
ブロックＳ１４に続いてブロックＳ１６を行うことができ、そこでは、要求がデータドメインの代表タイルのプロセッサによって受け取られ得る。ブロックＳ１６からブロックＳ１８に進み、代表タイルはデータブロックＸを記憶しているタイルに要求を送るように構成され得る。ブロックＳ１８からブロックＳ２０に進み、データブロックＸを記憶しているタイルのプロセッサは、要求側ドメインの要求側プロセッサにデータブロックＸを送るように構成され得る。またブロックＳ２０は、要求がデータへの書き込みを求める要求であるときに、データブロックを記憶しているプロセッサが、そのキャッシュを無効にし、要求側プロセッサに無効化の確認を送るように適合されることも含み得る。ブロックＳ２０からブロックＳ２２に進み、要求側ドメインの要求側プロセッサは、データブロックＸを受け取るように構成される。ブロックＳ２０に続いてブロックＳ２４を行うことができ、そこでは、ディレクトリドメインのプロセッサは、データブロックＸの状態を更新するように、例えばデータブロックＸが今度は要求側ドメインにも記憶されていることを表示するように構成される。またブロックＳ２４に続いて、例えばブロックＳ１０を行うこともできるはずである。
【００４５】
データブロックＸが書き込みを許可する状態（「変更」状態など）にある要求側プロセッサにおいてキャッシュされているだけである場合には、ブロックＳ１からブロックＳ２０を伴わずに、データブロックＸが要求側プロセッサによって直接書き込まれ得る。データブロックＸが要求側プロセッサにおいてキャッシュされておらず、または複数の位置においてキャッシュされている場合には、ブロックＳ１４は、Ｘのコピーを含むすべてのタイルに無効化信号を送ることを伴い得る。ブロックＳ２０は、ブロックＸのローカルコピーを無効にするように適合されたプロセッサと、要求側プロセッサに確認信号を送ることとを含み得る。
【００４６】
図９に、本開示の少なくともいくつかの実施形態による、ドメインベースのキャッシュ・コヒーレンス・プロトコルのためのプロセス例の信号フロー図を示す。図９のプロセスは、例えば、前述のシステム１００を使用して実施することもできるはずである。プロセス例は、動作５０１、５０２、５０６、５０７、５０８、５１０、５１２、５１４、５１６、５１８、５２０、５２２および／または５２４のうちの１つまたは複数で示される１つまたは複数の動作、措置、または機能を含み得る。別個の動作として示されているが、様々な動作は、所望の実施態様に応じて、さらに別の動作へと分割されてもよく、より少数の動作へと組み合わされてもよく、除外されてもよい。処理は動作５０１から開始し得る。
【００４７】
動作５０１では、第１の要求側ドメインのタイル（タイル１など）が、データブロックＸにアクセスするよう求める要求を生成し、第１の要求側ドメインの別のタイル（タイル２など）に送るように適合され得る。動作５０１に続いて動作５０２を行うことができ、そこでは、要求側ドメインの１つまたは複数のプロセッサコアが、データブロックＸが要求側ドメインに記憶されているかどうか判定するように構成され得る。データブロックＸが要求側ドメインに位置すると判定されるとき（「Ｙｅｓ」）には、処理は動作５０２から動作５０６に進み、そこでは、データブロックＸが要求側プロセッサコアに送られ得る。そうではなく、データブロックＸが要求側ドメインにおいて不在であり、または見つからないと判定されるとき（「Ｎｏ」）には、処理は動作５０２から動作５０７に進み得る。
【００４８】
動作５０７では、要求をディレクトリドメインのタイル（ディレクトリタイルなど）に送る（例えば伝達する、送信する）ことができ、その場合、タイルはデータブロックＸのディレクトリを含む。処理は動作５０７から動作５０８に進むことができ、そこでは、ディレクトリドメインの受け取り側タイルのプロセッサコアは、要求を受け取るように構成される。動作５０８から動作５１０に進み、ディレクトリドメインの受け取り側タイルのプロセッサコアは、ディレクトリを探索して（例えば評価して）データブロックＸが記憶されているデータドメインを判定するように構成され得る。動作５１０から動作５１２に進み、ディレクトリドメインの受け取り側タイルのプロセッサコアは、ディレクトリをさらに探索してデータドメインの代表タイルを判定する（または識別する）ように構成され得る。動作５１２に続いて動作５１４を行うことができ、そこでは、要求がデータドメインの代表タイルに送られ（例えば送信され、伝達され）得る。データドメインは、例えば、ディレクトリドメインと同じドメインとすることも、異なるドメインとすることもできるはずである。また要求は、要求がデータへの書き込みを求める要求であるときには、無効化信号も含み得る。
【００４９】
動作５１４に続いて動作５１６を行うことができ、そこでは、要求がデータドメインの代表タイルのプロセッサコアによって受け取られ得る。動作５１６から動作５１８に進み、代表タイルはデータブロックＸを記憶しているタイル（データタイルなど）に要求を送るように構成され得る。動作５１８から動作５２０に進み、データブロックＸを記憶しているタイルのプロセッサコアは、要求側ドメインの要求側プロセッサコアにデータブロックＸを送るように構成され得る。また動作５２０は、要求がデータへの書き込みを求める要求であるときに、データブロックを記憶しているプロセッサがそのキャッシュを無効にし、要求側プロセッサに無効化の確認を送るように適合されることも含み得る。動作５２０から動作５２２に進み、要求側ドメインの要求側プロセッサコアは、データブロックＸを受け取るように構成される。動作５２２に続いて動作５２４を行うことができ、そこでは、ディレクトリドメインのプロセッサコアは、データブロックＸの状態を表示するように、例えば、データブロックＸが今度は要求側ドメインにも記憶されていることを表示するようにディレクトリを更新するように構成される。また動作５２４は、例えば動作５１０に続いて行うこともできるはずである。
【００５０】
データブロックＸが書き込みを許可する状態（「変更」状態など）にある要求側プロセッサにおいてキャッシュされているだけである場合には、動作５０１から動作５２０を伴わずに、データブロックＸが要求側プロセッサによって直接書き込まれ得る。データブロックＸが要求側プロセッサにおいてキャッシュされておらず、または複数の位置においてキャッシュされている場合には、動作５１４は、Ｘのコピーを含むすべてのタイルに無効化信号を送ることを伴い得る。動作５２０は、ブロックＸのローカルコピーを無効にするように適合されたプロセッサと、要求側プロセッサに確認信号を送ることとを含み得る。
【００５１】
図１０に、本開示の少なくともいくつかの例に従って構成されたコンピュータプログラム製品の例３００を示す。プログラム製品３００は、信号保持媒体３０２を含み得る。信号保持媒体３０２は、例えばプロセッサなどによって実行されると、図１〜図９に関連して前述した機能を提供し得る１つまたは複数の命令３０４を含み得る。よって、例えばシステム１００を参照すると、タイル１１８、１３０〜１４４のプロセッサ１１２のうちの１つまたは複数が、媒体３０２によってシステム１００に搬送される命令３０４に応答して図１０に示すブロックのうちの１つまたは複数を引き受けてもよい。
【００５２】
実施態様によっては、信号保持媒体３０２は、それだけに限らないが、ハード・ディスク・ドライブ、コンパクトディスク（ＣＤ）、ディジタル多用途ディスク（ＤＶＤ）、ディジタルテープ、メモリなどといったコンピュータ可読媒体３０６を包含し得る。実施態様によっては、信号保持媒体３０２は、それだけに限らないが、メモリ、読み出し／書き込み（Ｒ／Ｗ）ＣＤ、Ｒ／Ｗ  ＤＶＤなどといった書き込み可能な媒体３０８を包含し得る。実施態様によっては、信号保持媒体３０２は、それだけに限らないが、ディジタルおよび／またはアナログ通信媒体（例えば光ファイバケーブル、導波路、有線通信リンク、無線通信リンクなど）といった通信媒体３１０を包含し得る。よって、例えばプログラム製品３００は、ＲＦ信号保持媒体３０２によってシステム１００の１つまたは複数のモジュールに伝えられてもよく、その場合、信号保持媒体３０２は、無線通信媒体３１０（ＩＥＥＥ８０２．１１規格に準拠した無線通信媒体など）によって伝えられる。
【００５３】
図１１は、本開示による、ドメインベースのキャッシュ・コヒーレンス・プロトコルを実行するように構成されるコンピューティング機器の例４００を示すブロック図である。非常に基本的な構成４０２において、コンピューティング機器４００は、典型的には、１つまたは複数のプロセッサ４０４とシステムメモリ４０６とを含む。プロセッサ４０４とシステムメモリ４０６との間の通信にはメモリバス４０８が使用され得る。
【００５４】
所望の構成に応じて、プロセッサ４０４は、それだけに限らないが、マイクロプロセッサ（μΡ）、マイクロコントローラ（μＣ）、ディジタル信号プロセッサ（ＤＳＰ）、またはこれらの任意の組み合わせを含む任意の種類のものとすることができる。プロセッサ４０４は、レベル１キャッシュ４１０やレベル２キャッシュ４１２といった１つまたは複数のレベルのキャッシング、プロセッサコア４１４、およびレジスタ４１６を含み得る。プロセッサコアの例４１４は、算術論理演算装置（ＡＬＵ）、浮動小数点演算装置（ＦＰＵ）、ディジタル信号プロセッサコア（ＤＳＰコア）、またはこれらの任意の組み合わせを含み得る。また例示的メモリコントローラ４１８がプロセッサ４０４と共に使用されてもよく、実施態様によっては、メモリコントローラ４１８はプロセッサ４０４の内部部品とすることもできる。
【００５５】
所望の構成に応じて、システムメモリ４０６は、それだけに限らないが、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）、またはそれらの任意の組み合わせを含む任意の種類のものとすることができる。システムメモリ４０６は、オペレーティングシステム４２０、１つまたは複数のアプリケーション４２２、およびプログラムデータ４２４を含み得る。アプリケーション４２２は、図２のシステム１００に関して説明した機能を含む本明細書で説明した機能を果たすように構成されているドメインベースのキャッシュ・コヒーレンス・プロトコル４２６を含み得る。プログラムデータ４２４は、本明細書で説明するドメインベースのキャッシュ・コヒーレンス・プロトコルに役立ち得るキャッシュ・ディレクトリ・データ４２８を含み得る。実施形態によっては、アプリケーション４２２は、オペレーティングシステム４２０上でプログラムデータ４２４を用いてドメインベースのキャッシュ・コヒーレンス・プロトコルが提供され得るように動作するように構成され得る。説明するこの基本構成４０２は、図１１において、内側の破線内の構成要素で示されている。
【００５６】
コンピューティング機器４００は、さらに別の機構または機能、および基本構成４０２と任意の必要とされる機器およびインターフェースとの間のやりとりを円滑化するためのさらに別のインターフェースを有していてもよい。例えば、記憶インターフェースバス４３４を介した基本構成４０２と１つまたは複数のデータ記憶装置４３２との間のやりとりを円滑化するのにバス／インターフェースコントローラ４３０が使用されてもよい。データ記憶装置４３２は、取り外し可能記憶装置４３６とすることも、取り外し不能記憶装置４３８とすることも、これらの組み合わせとすることもできる。取り外し可能記憶装置および取り外し不能記憶装置の例には、いくつか例を挙げると、フレキシブル・ディスク・ドライブやハード・ディスク・ドライブ（ＨＤＤ）といった磁気ディスク装置、コンパクトディスク（ＣＤ）ドライブやディジタル多用途ディスク（ＤＶＤ）ドライブといった光ディスクドライブ、ソリッド・ステート・ドライブ（ＳＤＤ）、およびテープドライブなどが含まれる。コンピュータ記憶媒体の例には、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータといった情報の記憶のための任意の方法または技術において実施される揮発性および不揮発性、取り外し可能および取り外し不能の媒体が含まれ得る。
【００５７】
システムメモリ４０６、取り外し可能記憶装置４３６および取り外し不能記憶装置４３８がコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）その他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶その他の磁気記憶装置、または所望の情報を記憶するのに使用され、コンピューティング機器４００によってアクセスされ得る他の任意の媒体が含まれる。そのような任意のコンピュータ記憶媒体をコンピューティング機器４００の一部とすることができる。
【００５８】
またコンピューティング機器４００は、様々なインターフェース機器（出力機器４４２、周辺インターフェース４４４、通信機器４４６など）からのバス／インターフェースコントローラ４３０を介した基本構成４０２への通信を円滑化するためのインターフェースバス４４０も含み得る。出力機器の例４４２には、グラフィックス・プロセッシング・ユニット４４８およびオーディオ・プロセッシング・ユニット４５０が含まれ、これらは、１つまたは複数のＡ／Ｖポート４５２を介して、ディスプレイやスピーカといった様々な外部機器と通信するように構成され得る。周辺インターフェースの例４４４には、シリアル・インターフェース・コントローラ４５４やパラレル・インターフェース・コントローラ４５６が含まれ、これらは、１つまたは複数の入出力ポート４５８を介して、入力機器（例えばキーボード、マウス、ペン、音声入力機器など）や他の周辺機器（例えばプリンタ、スキャナなど）といった外部機器を通信するように構成され得る。通信機器の一例４４６はネットワークコントローラ４６０を含み、ネットワークコントローラ４６０は、１つまたは複数の通信ポート４６４を介したネットワーク通信リンク上での１つまたは複数の他のコンピューティング装置４６２との通信を円滑化するように構成され得る。
【００５９】
ネットワーク通信リンクは、通信媒体の一例とすることができる。通信媒体は、典型的には、搬送波や他の移送機構といった変調データ信号におけるコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータによって実施することができ、任意の情報配信媒体を含み得る。「変調データ信号」とは、その特性のうちの１つまたは複数が信号において情報を符号化するように設定され、または変更されている信号とすることができる。例えば、それだけに限らないが、通信媒体には、有線ネットワークや直接配線接続といった有線媒体、および音響、無線周波数（ＲＦ）、マイクロ波、赤外線（ＩＲ）、その他の無線媒体といった無線媒体が含まれ得る。コンピュータ可読媒体という用語は本明細書で使用する場合、記憶媒体と通信媒体の両方を含み得る。
【００６０】
コンピューティング機器４００は、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルメディア再生機器、無線ウェブウォッチ機器、パーソナルハンドセット機器、アプリケーション特有の機器、上記機能のいずれかを含むハイブリッド機器といったスモールフォームファクタ携帯用（またはモバイル）電子機器の一部として実施され得る。またコンピューティング機器４００は、ラップトップコンピュータ構成と非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとしても実施され得る。
【００６１】
本開示は、本出願に記載されている特定の実施形態について限定されるべきではなく、これらの実施形態は様々な態様の例示として意図されるものである。当業者には明らかなように、本開示の趣旨および範囲を逸脱することなく多くの改変および変形を加えることができる。以上の説明を読めば当業者には、本明細書に列挙した方法および装置以外の本開示の範囲内に含まれる機能的に等価な方法および装置も明らかになるであろう。そのような改変および変形は、添付の特許請求の範囲内に含まれることが意図されている。本開示は、添付の特許請求の範囲と、かかる特許請求の範囲が権限を付与される対象となる均等物の全範囲とによってのみ限定されるべきものである。本開示は、特定の方法、試薬、化合物、組成物、または生体系だけに限定されず、当然ながら多様であり得ることを理解すべきである。また、本明細書において使用される用語は特定の実施形態を説明するためのものにすぎず、限定的であることが意図されていないことも理解すべきである。
【００６２】
本明細書における実質的にいかなる複数形および／または単形数の用語の使用についても、当業者は、状況および／または用途に適するように、複数形から単数形に、かつ／または単数形から複数形に変換することができる。本明細書においては明確にするために様々な単数形／複数形の置換形が明示され得る。
【００６３】
一般に、本明細書において、特に添付の特許請求の範囲（例えば添付の特許請求の範囲の本文など）において使用される語は、一般には、「非限定的な（ｏｐｅｎ）」語として意図されている（例えば、「ｉｎｃｌｕｄｉｎｇ（〜を含み）」という語は「それだけに限らないが〜を含み」と解釈すべきであり、「ｈａｖｉｎｇ（〜を有し）」という語は「少なくとも〜を有し」と解釈すべきであり、「ｉｎｃｌｕｄｅｓ（〜を含む）」という語は、「それだけに限らないが、〜を含む」と解釈すべきであるなど）ことが当業者には理解されるであろう。さらに、特定の数の導入請求項記載が意図される場合、そのような意図は当該請求項において明示的に記載され、そのような記載がない場合にはそのような意図が存在しないことも当業者には理解されるであろう。例えば、理解の一助として、添付の特許請求の範囲は、請求項記載を導入するために、「少なくとも１つの」および「１つまたは複数の」という導入句の使用を含み得る。しかし、そのような句の使用は、同じ請求項が「１つまたは複数の」あるいは「少なくとも１つの」という導入句および「ａ」や「ａｎ」といった不定冠詞を含むときでさえも、不定冠詞「ａ」または「ａｎ」による請求項記載の導入が、そのような導入請求項記載を含む任意の特定の請求項を、ただ１つのそのような記載を含む実施形態だけに限定することを意味するものと解釈されるべきではない（例えば、「ａ」および／または「ａｎ」は「少なくとも１つの」または「１つまたは複数の」を意味するものと解釈されるべきであるなど）。同じことが、請求項記載を導入するのに使用される定冠詞の使用についても当てはまる。加えて、特定の数の導入請求項記載が明示的に記載されている場合でさえも、そのような記載が、少なくとも記載される数を意味するものと解釈されるべきであることを当業者は理解するであろう（例えば、他の修飾語句を伴わない「２つの記載」という記載だけで、少なくとも２つの記載、または２つ以上の記載を意味するなど）。さらに、「Ａ、Ｂ、およびＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、およびＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。「Ａ、Ｂ、またはＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。さらに、２つ以上の択一的項目を提示する事実上あらゆる選言的な語および／または句は、本明細書においてであれ、特許請求の範囲においてであれ、図面においてであれ、それらの項目のうちの１つ、それらの項目のうちのどちらか、またはそれらの項目の両方を含む可能性を企図するものと理解すべきであることも当業者には理解されるであろう。例えば、「ＡまたはＢ」という句は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むものと理解されるであろう。
【００６４】
加えて、本開示の特徴または態様がマーカッシュグループとして記載される場合、本開示が、それによって、マーカッシュグループの任意の個々のメンバまたはメンバの下位グループとしても記載されるものであることを当業者は理解するであろう。
【００６５】
当業者には理解されるように、ありとあらゆる目的で、例えば明細書を提供することに関して、本明細書において開示されるあらゆる範囲は、そのありとあらゆる可能な下位範囲および下位範囲の組み合わせも包含するものである。あらゆる記載範囲は、その同じ範囲が、少なくとも２等分、３等分、４等分、５等分、１０等分などに分割されることを十分に説明し、可能にするものとして容易に理解され得るものである。非限定的例を挙げると、本明細書で論じる各範囲は、下３分の１、中３分の１および上３分の１に容易に分割することができる。またやはり当業者には理解されるように、「最大〜まで（ｕｐ  ｔｏ）」、「少なくとも（ａｔ  ｌｅａｓｔ）」「〜より大（ｇｒｅａｔｅｒ  ｔｈａｎ）」「〜より小（ｌｅｓｓ  ｔｈａｎ）」などといったすべての表現は、記載される数を含み、後で前述の下位範囲に分割され得る範囲を指し示すものである。最後に、当業者には理解されるように、範囲は個々の各メンバを含む。よって例えば、１〜３個のセルを有するグループは、１個、２個、または３個のセルを有するグループを指す。同様に、１〜５個のセルを有するグループは、１個、２個、３個、４個または５個のセルを有するグループを指し、以下同様である。
【００６６】
本明細書では様々な態様および実施形態が開示されているが、当業者には他の態様および実施形態も明らかであろう。本明細書で開示される様々な態様および実施形態は例示のためのものであり、限定を意図するものではなく、その真の範囲および趣旨は添付の特許請求の範囲によって指示される。
【図１】
0005550742.tif 000002
【図２】
0005550742.tif 000003
【図３】
0005550742.tif 000004
【図４】
0005550742.tif 000005
【図５】
0005550742.tif 000006
【図６】
0005550742.tif 000007
【図７】
0005550742.tif 000008
【図８】
0005550742.tif 000009
【図９】
0005550742.tif 000010
【図１０】
0005550742.tif 000011
【図１１】
0005550742.tif 000012