(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-05
(45)【発行日】2024-07-16
(54)【発明の名称】スヌープフィルタデバイス
(51)【国際特許分類】
G06F 12/0831 20160101AFI20240708BHJP
G06F 12/0817 20160101ALI20240708BHJP
【FI】
G06F12/0831
G06F12/0817
(21)【出願番号】P 2022504026
(86)(22)【出願日】2020-03-13
(86)【国際出願番号】 NO2020050070
(87)【国際公開番号】W WO2020197404
(87)【国際公開日】2020-10-01
【審査請求日】2023-03-07
(32)【優先日】2019-03-22
(33)【優先権主張国・地域又は機関】NO
(73)【特許権者】
【識別番号】521435259
【氏名又は名称】ヌマスケール アクティーゼルスカブ
(74)【代理人】
【識別番号】110001896
【氏名又は名称】弁理士法人朝日奈特許事務所
(72)【発明者】
【氏名】パルファ-ソリア、ティバウト
(72)【発明者】
【氏名】ペルスヴォルド、ステフン
(72)【発明者】
【氏名】シモンセン、ヘルゲ
(72)【発明者】
【氏名】ロッデ、マリオ
(72)【発明者】
【氏名】モウエン、トマス
(72)【発明者】
【氏名】ミジョース、カイ アルネ
(72)【発明者】
【氏名】ルスタッド、アイナル
(72)【発明者】
【氏名】デブナス、ゴウタム
【審査官】田中 啓介
(56)【参考文献】
【文献】米国特許出願公開第2006/0294314(US,A1)
【文献】特開2007-183702(JP,A)
【文献】米国特許出願公開第2016/0117249(US,A1)
【文献】特表2012-512491(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00-12/128
G06F13/16-13/18
(57)【特許請求の範囲】
【請求項1】
マルチプロセッサコンピュータシステム内のプロセッサのキャッシュメモリハードウェアユニットである1または複数のキャッシュエージェント
によってそれぞれが構成される複数のキャッシュ要素に接続可能なスヌープフィルタデバイスであって、前記スヌープフィルタデバイスが、
複数のスヌープフィルタ格納場所であって、各々がキャッシュエージェントに格納可能なキャッシュラインを識別するタグを格納するように構成されている、複数のスヌープフィルタ格納場所を含み、
各スヌープフィルタ格納場所が1つのキャッシュ要素にマッピングされ
、各スヌープフィルタ格納場所が、
そのスヌープフィルタ格納場所がマッピングされる前記キャッシュ要素の他のキャッシュ要素におけるキャッシュラインの存在に関する情報を含まず、そのスヌープフィルタ格納場所がマッピングされる前記キャッシュ要素に格納されているキャ
ッシュラインに関する情報のみを含む、スヌープフィルタデバイス。
【請求項2】
各スヌープフィルタ格納場所が、キャッシュ要素の識別子を追加で格納するように構成されている、請求項1記載のスヌープフィルタデバイス。
【請求項3】
各スヌープフィルタ格納場所が、そのスヌープフィルタ格納場所に格納された前記識別子によって識別される1つのキャッシュ要素にマッピングされる、請求項2記載のスヌープフィルタデバイス。
【請求項4】
各スヌープフィルタ格納場所が、1つのキャッシュ要素に暗示的に関連付けられている、請求項1記載のスヌープフィルタデバイス。
【請求項5】
各スヌープフィルタ格納場所が、配線を使用して1つのキャッシュ要素にマッピングされる、請求項4記載のスヌープフィルタデバイス。
【請求項6】
各スヌープフィルタ格納場所が、0またはそれ以上のプレゼンスビットを追加で格納するように構成され、
スヌープフィルタ格納場所に格納された各プレゼンスビットは、前記スヌープフィルタ格納場所に関連付けられたタグによって識別されるキャッシュラインが、前記スヌープフィルタ格納場所がマッピングされる前記1つのキャッシュ要素に存在するかどうかを示す、請求項1~5のいずれか1項に記載のスヌープフィルタデバイス。
【請求項7】
各スヌープフィルタ格納場所が、最大1つのプレゼンスビットを格納するように構成され、
スヌープフィルタ格納場所に格納された各プレゼンスビットは、前記スヌープフィルタ格納場所に格納されたタグによって識別されるキャッシュラインが、前記スヌープフィルタ格納場所がマッピングされる前記キャッシュ要素に存在するかどうかを示す、請求項6記載のスヌープフィルタデバイス。
【請求項8】
各スヌープフィルタ格納場所が複数のスヌープフィルタセクタに区分される、請求項1~6のいずれか1項に記載のスヌープフィルタデバイス。
【請求項9】
各スヌープフィルタセクタが、キャッシュエージェントに格納可能なキャッシュラインを識別するタグを格納するように構成されている、請求項8記載のスヌープフィルタデバイス。
【請求項10】
各スヌープフィルタセクタが、最大1つのプレゼンスビットを追加で格納するように構成され、スヌープフィルタ格納場所のスヌープフィルタセクタに格納されたプレゼンスビットは、前記スヌープフィルタセクタに格納されたタグによって識別されるキャッシュラインが、前記スヌープフィルタ格納場所がマッピングされる前記キャッシュ要素に存在するかどうかを示す、請求項9記載のスヌープフィルタデバイス。
【請求項11】
スヌープフィルタ格納場所の前記スヌープフィルタセクタが、
1つのタグまたは1つのタグの一部、および1つのプレゼンスビットを格納するように構成されている第1のスヌープフィルタセクタと、
1つまたは複数の連続スヌープフィルタセクタであって、各々がゼロのタグおよび1つのプレゼンスビットを格納するように構成されている、1つまたは複数の連続スヌープフィルタセクタと、を含み、
前記第1のスヌープフィルタセクタに格納されたプレゼンスビットおよび前記連続スヌープフィルタセクタの各々1つにおけるプレゼンスビットが、同じキャッシュ要素における別々のキャッシュラインの存在を示す、請求項8記載のスヌープフィルタデバイス。
【請求項12】
前記第1のスヌープフィルタセクタに格納されたプレゼンスビットは、前記第1のスヌープフィルタセクタに格納されたタグによって識別されるキャッシュラインが、前記スヌープフィルタ格納場所がマッピングされる前記キャッシュ要素に存在するかどうかを示し、
前記第1のスヌープフィルタセクタに対する各連続スヌープフィルタセクタに格納されたプレゼンスビットは、前記スヌープフィルタ格納場所の前記第1のスヌープフィルタセクタに格納された前記タグに対するそれぞれの連続タグによって識別されるキャッシュラインが、前記スヌープフィルタ格納場所がマッピングされる前記キャッシュ要素に存在するかどうかを示す、請求項11記載のスヌープフィルタデバイス。
【請求項13】
前記第1のスヌープフィルタセクタに格納されたプレゼンスビットは、復元されたタグによって識別されるキャッシュラインが、前記スヌープフィルタ格納場所がマッピングされる前記キャッシュ要素に存在するかどうかを示し、
前記第1のスヌープフィルタセクタに対する各連続スヌープフィルタセクタに格納されたプレゼンスビットは、前記復元されたタグに対するそれぞれの連続タグによって識別されるキャッシュラインが、前記スヌープフィルタ格納場所がマッピングされる前記キャッシュ要素に存在するかどうかを示し、
前記復元されたタグは、前記第1のスヌープフィルタセクタに格納されたタグの一部から、および前記スヌープフィルタ格納場所におけるセクタ数から復元される、請求項11記載のスヌープフィルタデバイス。
【請求項14】
前記復元されたタグの最上位ビットが部分タグで構成され、
前記復元されたタグの最下位ビットがlog
2(n)個のゼロで構成され、nが前記スヌープフィルタ格納場所におけるセクタ数である、請求項13記載のスヌープフィルタデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、マルチプロセッサコンピューティングシステムにおいてキャッシュコヒーレンスを維持するためのデバイスに関する。
【背景技術】
【0002】
キャッシュコヒーレンスを効率的に維持することは、高性能の共有メモリマルチプロセッサシステムを取得するための主要な要件である。
【0003】
共有メモリマルチプロセッサシステムは通常、キャッシュエージェントまたは単にキャッシュと呼ばれる一連のローカルメモリエージェントに加えて、1つまたは複数の共有メインメモリエージェントを含む。キャッシュエージェントは、ローカルプロセッサまたはプロセッサのノードにのみ属し得、メインメモリと比較して高速でサイズが小さいという特徴がある。たとえばローカルCPUのワーキングセットに属するローカルキャッシュエージェントにデータを格納することで、マルチプロセッサシステムの全体的なパフォーマンスが大幅に向上するが、これは、ワーキングセットにおいて頻繁に使用されるデータがローカルCPUによってより迅速にアクセスすることができるためである。
【0004】
各々がデータをローカルに保持する一連のローカルキャッシュエージェントを有することは、キャッシュコヒーレンスを維持する方法に関する問題を引き起こすことにつながる。CPUが、たとえば書き込み操作を介してローカルキャッシュエージェントにおいてキャッシュラインを変更する場合、同じキャッシュラインのコピーを保持する他のキャッシュエージェントが、この書き込み操作を認識せず、その結果、それぞれのキャッシュラインのコピーはアウトオブデートになる。そこで、これらのアウトオブデートのキャッシュラインは古いものとして定義され得る。キャッシュラインは概して、データのブロックとこのデータのブロックに属するアドレスとの組み合わせと見なされる。アドレスは、たとえば、キャッシュライン識別子/タグを含み得る。
【0005】
キャッシュコヒーレンスを得るために、すなわち、古いデータを排除するために、さまざまな技術および手順が実装されている。これには、MSI、MESI、MOESIプロトコルのような、さまざまなキャッシュコヒーレンスプロトコルの実装の他に、スヌーピーバスベースの方法のような、さまざまなキャッシュコヒーレンスメカニズムの実装も含まれる。
【0006】
スヌーピーバスベースの方法は通常、バスを介して通信されているトランザクションをスヌープする、およびそれに応じてローカルキャッシュを更新する、いわゆるスヌーパーを含む。スヌーパーは、キャッシュエージェントまたはキャッシュエージェントのグループに属し得、バスは、キャッシュエージェント、キャッシュ要素、キャッシュノード、CPUなどを含む、コンピュータシステム内のさまざまなエージェント間に及び得る。キャッシュラインを変更するトランザクションがバス上で通信されているときはいつでも、スヌーパーは、このトランザクションをスヌープし、そのそれぞれのキャッシュエージェントがこのキャッシュラインのコピーを保持しているかどうかをチェックし、バスを介して通信されたトランザクションに従ってキャッシュラインを変更する。
【0007】
スヌーピーバスベースのキャッシュコヒーレンスメカニズムの1つの問題は、トランザクションがバス上で発生するたびに、スヌーパーが、バスを介して通信されるキャッシュラインのコピーに対するその付随するキャッシュエージェント/要素をチェックしなければならないことである。このアクションは一般にルックアップアクションと呼ばれ、実行する必要のある一連の手順ステップを含む。
【0008】
スヌーピーベースのキャッシュコヒーレンスメカニズムの効率を向上させるために、スヌーピーフィルタの概念が発展されてきた。スヌープフィルタは、キャッシュに格納された一連のキャッシュラインに関連する情報を維持するディレクトリベースの構造である。マルチプロセッサシステムでは、スヌープフィルタは、たとえばバストラフィックをモニターし、その付随するキャッシュエージェントのいずれかに格納されているキャッシュラインに関連しないバス上のトランザクションをフィルタで除外し得る。これにより、結果として、スヌーパーは、より少ない電力と時間を消費するルックアップを実行することになり、それゆえスヌーピーベースのキャッシュコヒーレンスメカニズムの効率が向上する。
【0009】
スヌープフィルタは、一般に、一連のスヌープフィルタ格納場所に格納されたエントリとして情報を維持するために構造化されている。各スヌープフィルタ格納場所は、一般に、少なくとも、付随するキャッシュラインを識別するタグ、および随意に、状態ビットなどのさまざまな追加情報を含むエントリと、タグによって識別されるキャッシュラインのコピーを保持するシステム内のキャッシュエージェントを示す一連のプレゼンスベクトルとを格納するように構成されている。プレゼンスビットに関連付けられた各スヌープフィルタ格納場所の割合が大抵の場合大きくなり得、その結果、オーバーヘッドが大きくなる。エントリは、多くの場合、1つの特定のタグに関連する、スヌープフィルタに格納された集合情報として定義される。
【0010】
ほとんどのスヌープフィルタは、限られた量の情報、たとえば固定数のエントリを格納することができるような大きさに形成されている。したがって、スヌープフィルタエントリ内のプレゼンスベクトルの数が多いと、ストレージ容量の問題が発生し、その結果、スヌープフィルタが維持することができるスヌープフィルタエントリの数が制限される。スヌープフィルタストレージごとに可能な限り多くのキャッシュラインの存在に関する情報をカバーする、すなわち含むスヌープフィルタを有することが望ましい。
【0011】
スヌープフィルタのサイズの制限は、最終的にスヌープフィルタがいっぱいになり、追加のエントリを格納することができなくなる。新しいエントリ用のスペースを確保するために、スヌープフィルタは、いわゆるエビクションプロセスを介してそのエントリの1つを破棄しなければならない。エビクションプロセス中に、スヌープフィルタは、そのエントリの1つを追い出し、追い出されたスヌープフィルタエントリによって識別されるキャッシュラインのコピーを保持しているとして示されるシステム内のキャッシュエージェントに逆無効化信号を送信する。この逆無効化信号により、キャッシュエージェントは、古いデータに関連する将来の問題を回避するために、関連するキャッシュラインを無効としてマークする。このプロセスの問題は、無効化されたキャッシュラインが無効化されたときに使用中であり得ることで、たとえば追加のリロード操作を実行する必要性が生まれることである。
【0012】
本発明の目的は、エビクションの悪影響を低減することに加えて、スヌープフィルタの効率を高めるために、スヌープフィルタの構造を改善することである。
【発明の概要】
【0013】
本発明は、複数のキャッシュ要素と接続可能なスヌープフィルタデバイスを提供し、各キャッシュ要素は、1または複数のキャッシュエージェントを備え、スヌープフィルタデバイスは、複数のスヌープフィルタ格納場所を含み、複数のスヌープフィルタ格納場所の各々は、キャッシュエージェントに格納可能なキャッシュラインを識別するタグを格納するように構成され、1つのキャッシュ要素にマッピングされる。
【0014】
各スヌープフィルタ格納場所は、本発明の一実施形態では、キャッシュ要素の識別子を追加で格納するように構成されている。各スヌープフィルタ格納場所は、そのスヌープフィルタ格納場所に格納された識別子によって識別される1つのキャッシュ要素にマッピングされ得る。
【0015】
各スヌープフィルタ格納場所は、本発明の別の実施形態では、1つのキャッシュ要素に暗示的に関連付けられる。各スヌープフィルタ格納場所は、配線を使用して1つのキャッシュ要素にマッピングされ得る。
【0016】
各スヌープフィルタ格納場所は、本発明のさらに別の実施形態によれば、0またはそれ以上のプレゼンスビットを追加で格納するように構成され、スヌープフィルタ格納場所に格納された各プレゼンスビットは、スヌープフィルタ格納場所に関連付けられたタグによって識別されるキャッシュラインが、スヌープフィルタ格納場所がマッピングされる1つのキャッシュ要素に存在するかどうかを示す。
【0017】
各スヌープフィルタ格納場所は、本発明のさらに別の実施形態によれば、最大1つのプレゼンスビットを格納するように構成され、スヌープフィルタ格納場所に格納されたプレゼンスビットは、スヌープフィルタ格納場所に格納されたタグによって識別されるキャッシュラインが、スヌープフィルタ格納場所がマッピングされるキャッシュ要素に存在するかどうかを示す。
【0018】
各スヌープフィルタ格納場所は、本発明のさらに別の実施形態によれば、複数のスヌープフィルタセクタに区分される。各スヌープフィルタセクタは、キャッシュエージェントに格納可能なキャッシュラインを識別するタグを格納するように構成され得る。各スヌープフィルタセクタは、最大1つのプレゼンスビットを追加で格納するように構成され得、スヌープフィルタ格納場所のスヌープフィルタセクタに格納されたプレゼンスビットは、スヌープフィルタセクタに格納されたタグによって識別されるキャッシュラインが、スヌープフィルタ格納場所がマッピングされるキャッシュ要素に存在するかどうかを示す。
【0019】
スヌープフィルタ格納場所のスヌープフィルタセクタは、本発明のさらに別の実施形態によれば、1つのタグまたは1つのタグの一部、および1つのプレゼンスビットを格納するように構成されている第1のスヌープフィルタセクタと、1つまたは複数の連続スヌープフィルタセクタであって、各々がゼロのタグおよび1つのプレゼンスビットを格納するように構成されている1つまたは複数の連続スヌープフィルタセクタとを含み得、第1のスヌープフィルタセクタに格納されたプレゼンスビットおよび連続スヌープフィルタセクタの各々1つにおけるプレゼンスビットは、同じキャッシュ要素における別々のキャッシュラインの存在を示す。第1のスヌープフィルタセクタに格納されたプレゼンスビットは、第1のスヌープフィルタセクタに格納されたタグによって識別されるキャッシュラインが、スヌープフィルタ格納場所がマッピングされるキャッシュ要素に存在するかどうかを示し得、第1のスヌープフィルタセクタに対する各連続スヌープフィルタセクタに格納されたプレゼンスビットは、スヌープフィルタ格納場所の第1のスヌープフィルタセクタに格納されたタグに対するそれぞれの連続タグによって識別されるキャッシュラインが、スヌープフィルタ格納場所がマッピングされるキャッシュ要素に存在するかどうかを示し得る。
【0020】
本発明のさらに別の実施形態によれば、第1のスヌープフィルタセクタに格納されたプレゼンスビットは、復元されたタグによって識別されるキャッシュラインが、スヌープフィルタ格納場所がマッピングされるキャッシュ要素に存在するかどうかを示し、第1のスヌープフィルタセクタに対する各連続スヌープフィルタセクタに格納されたプレゼンスビットは、復元されたタグに対するそれぞれの連続タグによって識別されるキャッシュラインが、スヌープフィルタ格納場所がマッピングされるキャッシュ要素に存在するかどうかを示し、復元されたタグは、第1のスヌープフィルタセクタに格納されたタグの一部から、およびスヌープフィルタ格納場所におけるセクタ数から復元される。復元されたタグの最上位ビットは部分タグで構成され得、復元されたタグの最下位ビットはlog2(n)個のゼロで構成され得、nはスヌープフィルタ格納場所におけるセクタ数である。
【0021】
他の利点のある特徴は、添付の特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0022】
本発明はより容易に理解することができるように、後続する論考は添付図面を参照する。
【0023】
【
図1】スヌープフィルタデバイスを備えるマルチプロセッサコンピュータシステムの概略図である。
【
図2】複数のスヌープフィルタ格納場所を含むスヌープフィルタデバイスの概略図であり、各スヌープフィルタ格納場所は、キャッシュ要素内のキャッシュラインの存在を示す。
【
図3】複数のスヌープフィルタ格納場所を含むスヌープフィルタデバイスの概略図であり、各スヌープフィルタ格納場所は、1つのキャッシュ要素にマッピングされている。
【
図4】複数のスヌープフィルタ格納場所を含むスヌープフィルタデバイスの概略図であり、各スヌープフィルタ格納場所は、キャッシュ要素の識別子を格納する。
【
図5】複数のスヌープフィルタ格納場所を含むスヌープフィルタデバイスの概略図であり、各スヌープフィルタ格納場所は、キャッシュ要素の識別子を格納する。
【
図6】複数のスヌープフィルタ格納場所を含むスヌープフィルタデバイスの概略図であり、各スヌープフィルタ格納場所は、配線を使用して1つのキャッシュ要素にマッピングされている。
【
図7】複数のスヌープフィルタ格納場所を含むスヌープフィルタデバイスの概略図であり、各スヌープフィルタ格納場所は、プレゼンスビットを格納する。
【
図8】複数のスヌープフィルタ格納場所を含むスヌープフィルタデバイスの概略図であり、各スヌープフィルタ格納場所は、2つのセクタに区分される。
【
図9】複数のスヌープフィルタ格納場所を含むスヌープフィルタデバイスの概略図であり、各スヌープフィルタ格納場所は2つのセクタに区分され、各セクタはタグおよびプレゼンスビットを格納する。
【
図10】複数のスヌープフィルタ格納場所を含むスヌープフィルタデバイスの概略図であり、各スヌープフィルタ格納場所は複数のセクタに区分され、第1のセクタはタグおよびプレゼンスビットを格納し、および第1のセクタの後の各連続セクタはプレゼンスビットを格納する。
【
図11】複数のスヌープフィルタ格納場所を含むスヌープフィルタデバイスの概略図であり、各スヌープフィルタ格納場所は複数のセクタに区分され、第1のセクタはタグおよびプレゼンスビットを格納し、および第1のセクタの後の各連続セクタはプレゼンスビットを格納する。
【
図12】(a)複数のセクタに区分されたスヌープフィルタ格納場所の概略図であり、第1のセクタはタグおよびプレゼンスビットを格納し、第1のセクタの後の各連続セクタはプレゼンスビットを格納する。(b)複数のセクタに区分されたスヌープフィルタ格納場所の概略図であり、第1のセクタはタグの一部およびプレゼンスビットを格納し、第1のセクタの後の各連続セクタはプレゼンスビットを格納する。
【
図13】スヌープフィルタ格納場所の概略図であり、その各々は1つのキャッシュ要素にマッピングされており、格納場所0はキャッシュ要素Xにマッピングされ、格納場所1はキャッシュ要素Yにマッピングされている。
【
図14】スヌープフィルタ格納場所の概略図であり、その各々は1つのキャッシュ要素にマッピングされており、格納場所0はキャッシュ要素Xにマッピングされ、格納場所1および2はキャッシュ要素Yにマッピングされている。
【発明を実施するための形態】
【0024】
以下では、本発明の一般的な実施形態に加えて特定の例示的な実施形態について説明する。添付の図面に対して参照がなされ、考えられ得る番号が付与される。しかし、図面が例示的な実施形態にすぎず、他の特徴および実施形態が、記載されるように本発明の範囲内に十分に含まれ得ることに留意されたい。
【0025】
本発明は、マルチプロセッサコンピュータシステム全体でのキャッシュコヒーレンスの維持に使用するためのスヌープフィルタデバイスに関する。
図1は、スヌープフィルタデバイス100を備えるマルチプロセッサシステムの一例の概略図である。ここで、スヌープフィルタデバイス100は、マルチプロセッサシステム内の、共有メモリ、キャッシュエージェント120/キャッシュ要素110、およびプロセッサの間に配置され、1つまたは複数のバス200を介してこれらのコンポーネントに接続される。スヌープフィルタデバイス100は、概して、システム内の不要なスヌープを減らすためにバストラフィックをモニターおよびフィルタリングするディレクトリベースのデバイスと見なすことができる。スヌープフィルタデバイス100は、
図2に概略的に例示されているように、ディレクトリを構成する複数のスヌープフィルタ格納場所130を含む。各スヌープフィルタ格納場所130は、少なくとも1つのタグ140を格納するように構成され、各タグは、マルチプロセッサシステム内のキャッシュエージェント120に格納されたキャッシュラインを識別する。したがって、スヌープフィルタデバイス100は、コンピュータシステム内の場所に格納されているキャッシュラインの概要を維持しているものとして見なされ得る。
【0026】
本発明は、複数のキャッシュ要素に接続可能なスヌープフィルタデバイスに関し、各キャッシュ要素は幾つかのキャッシュエージェントを含む。キャッシュ要素は、本発明に関連して、キャッシュエージェントの任意のコレクションとして解釈され得る。キャッシュ要素は、たとえば、任意数のキャッシュエージェント、たとえば、整数のキャッシュエージェント、または分数のキャッシュエージェントを含むと解釈され得る。したがって、キャッシュ要素の例は、キャッシュエージェントの半分、1つのキャッシュエージェント、2つのキャッシュエージェント、1つのキャッシュエージェント全体と別のキャッシュエージェントの半分などであり得る。各キャッシュ要素におけるキャッシュエージェントは、直接、集合的に、または直接および集合的にスヌープフィルタデバイスに接続され得る。任意のキャッシュ要素が、任意の物理キャッシュユニット、物理キャッシュユニットの一部、または1つのキャッシュ識別子によって一意に識別されるキャッシュユニットのグループと見なされ得ることが当業者によって理解される。
【0027】
キャッシュエージェントは、本発明に関連して、任意の物理キャッシュメモリハードウェアユニットと見なされ得る。そのようなハードウェアユニットは、たとえば、スタティックランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、または組み込みダイナミックランダムアクセスメモリなどの、ランダムアクセスメモリであり得る。
【0028】
スヌープフィルタデバイスは、本発明によれば、複数のスヌープフィルタ格納場所を含み、各スヌープフィルタ格納場所は、キャッシュエージェントに格納可能なキャッシュラインを識別するタグを少なくとも格納するように構成されている。したがって、スヌープフィルタデバイスの任意の格納場所は、スヌープフィルタデバイスの動作中に、スヌープフィルタデバイスに接続された特定のキャッシュ要素に属するキャッシュエージェントに格納されたキャッシュラインを識別するタグを格納し得る。スヌープフィルタ格納場所に格納された情報は、しばしば、エントリと呼ばれ、それゆえ、スヌープフィルタ格納場所は、エントリを格納するように構成されていると解釈され得る。結果として、エントリは、本発明に関連して、概して、スヌープフィルタ格納場所に格納された情報と見なされ得る。したがって、エントリはタグを含むと見なされ得るが、一方でタグは代替的にエントリと見なされ得る。各スヌープフィルタ格納場所は、タグに加えて、状態ビット、最後に使用されたビットなどの、他のデータを格納し得る。これらの他のデータはエントリの一部と見なされ得る。
【0029】
図2は、タグ140をその格納場所130の1つに格納するスヌープフィルタデバイス100を例示し、タグ140は、キャッシュ要素110内のキャッシュエージェントに格納されたキャッシュラインを識別する。キャッシュエージェントは、ここでは、スヌープフィルタデバイスに接続されたキャッシュ要素110に含まれると見なされ得る。キャッシュ要素に格納されたキャッシュラインは、本発明によれば、その特定のキャッシュ要素内の任意のキャッシュエージェントに格納されると見なされ得る。
【0030】
スヌープフィルタデバイスは、本発明に関連して、少なくとも複数のキャッシュライン、およびスヌープフィルタデバイスに接続された複数のキャッシュ要素を追跡するように構成されると見なされ得る。ここでスヌープフィルタデバイスによってキャッシュラインを追跡することは、スヌープフィルタデバイスがキャッシュラインのコピーを保持するキャッシュ要素に関連する情報を維持することを意味する。ここでスヌープフィルタデバイスによってキャッシュ要素を追跡することは、スヌープフィルタデバイスがそのキャッシュ要素に属するキャッシュエージェントに格納されているキャッシュラインに関連する情報を維持することを意味する。
【0031】
スヌープフィルタ格納場所は、キャッシュ要素およびキャッシュラインを追跡するように構成されると見なされ得る。これは、スヌープフィルタ格納場所が、それが追跡しているキャッシュ要素が、それが追跡しているキャッシュラインのコピーを保持しているかどうかに関連する情報を維持することを意味する。スヌープフィルタ格納場所が追跡するように構成されているキャッシュライン(複数可)は、スヌープフィルタ格納場所に格納されているタグ(複数可)によって与えられ得る。
【0032】
図3は、本発明によるスヌープフィルタデバイス100を例示し、各スヌープフィルタ格納場所130は、1つのキャッシュ要素110にマッピングされる。これは、任意の1つのスヌープフィルタ格納場所130が、それがマッピングされているキャッシュ要素110のみを追跡し得ることを意味している。任意の1つのスヌープフィルタ格納場所130は、言い換えれば、そのスヌープフィルタ格納場所130がマッピングされているキャッシュ要素110に格納されているキャッシュラインに関連する情報のみを含んでよい。したがって、各スヌープフィルタ格納場所130は、1つのキャッシュ要素110に全単射的にマッピングされていると言われ得る。結果として、所与のタグ140を格納するスヌープフィルタ格納場所130は、そのスヌープフィルタ格納場所130がマッピングされているキャッシュ要素110が、そのタグ140によって識別されるキャッシュラインのコピーを保持することを示し得る。故に、同じスヌープフィルタ格納場所130は、キャッシュラインのコピーを保持するキャッシュ要素の部分、たとえばキャッシュエージェントに関する任意の情報を含まなくてもよい。同じスヌープフィルタ格納場所130は、システム内の他のキャッシュ要素におけるキャッシュラインの存在に関する情報を含まなくてもよい。スヌープフィルタデバイスの各スヌープフィルタ格納場所は、本発明の任意の実施形態によれば、1つのキャッシュ要素にマッピングされるように構成されると見なされ得る。
図3は、複数のスヌープフィルタ格納場所が同じキャッシュ要素110にマッピングされているスヌープフィルタデバイスを例示している。これは、スヌープフィルタデバイス100が、1つのキャッシュ要素110内の複数のキャッシュラインを追跡するために、複数のスヌープフィルタ格納場所130を利用し得ることを意味している。
【0033】
動作中、スヌープフィルタデバイスは、複数のキャッシュ要素に接続され、各キャッシュ要素は、前述のように多数のキャッシュエージェントを含む。キャッシュラインが、たとえばメインメモリから、キャッシュ要素の1つにロードされたとき、スヌープフィルタデバイスは、新しくロードされたキャッシュラインに関連するタグをその格納場所の1つに格納することによってそのディレクトリを更新する。キャッシュラインをロードしたキャッシュ要素にマッピングされたすべてのスヌープフィルタ格納場所がすでにエントリを格納している場合、スヌープフィルタデバイスは、新しくロードされたキャッシュラインに関連するタグを含む新しいエントリを格納することが可能になる前に、スヌープフィルタ格納場所からエントリを追い出さなければならない。どのスヌープフィルタ格納場所から追い出すかは、本発明によれば、メインメモリからキャッシュラインをロードしたキャッシュ要素に依存する。本発明によれば、スヌープフィルタデバイスは、新たにロードされたキャッシュラインのタグを、新しいキャッシュラインをロードしたキャッシュ要素にマッピングされているスヌープフィルタ格納場所に格納するだけでもよい。言い換えると、スヌープフィルタは、古いエントリを追い出して新しいエントリを優先する場合、新しいエントリにおいてタグによって識別されるキャッシュラインがロードされたキャッシュ要素にマッピングされているスヌープフィルタ格納場所に格納されたエントリを追い出す選択だけができる。
【0034】
各スヌープフィルタ格納場所130は、前述のように、1つのキャッシュ要素110にマッピングされている。スヌープフィルタ格納場所130がマッピングされるキャッシュ要素110は、本発明の一実施形態では、スヌープフィルタ格納場所130に明示的に格納された識別子150によって判定され得る。
図4および5は、スヌープフィルタデバイス100内のディレクトリの概略図であり、各スヌープフィルタ格納場所130は、タグ140に加えて、キャッシュ要素110に対する識別子150を格納する。スヌープフィルタ格納場所130に格納された識別子150は、概して、スヌープフィルタデバイス100の動作全体を通して、たとえば1つのプログラムの実行全体にわたって固定されていると見なされ得、たとえば、プログラムの再起動時または特定のリセット手順の実行によってのみ変更が許可され得る。これは、結果として、各スヌープフィルタ格納場所130内の識別子150が、たとえば特定のプログラムの実行にかかる時間によって決定された特定の期間にわたって同じままであり得ることを意味する。
【0035】
スヌープフィルタ格納場所130がマッピングされるキャッシュ要素110は、本発明の一実施形態では、スヌープフィルタ格納場所130自体によって暗示的に判定される。この暗示的な判定は、
図6に概略的に例示されている。ここで、各スヌープフィルタ格納場所130は、キャッシュ要素110についてのキャッシュ識別子150に暗示的に関連している。本実施形態では、各スヌープフィルタ格納場所130は、たとえばスヌープフィルタディレクトリ内のその場所を介して、1つのキャッシュ要素110に直接関連付けられている。スヌープフィルタデバイス110のディレクトリ内の第1のスヌープフィルタ格納場所は、たとえば、キャッシュ要素Aにマッピングされるように構成され得、一方で第2のスヌープフィルタ格納場所は、キャッシュ要素Dにマッピングされるように構成され得る。これは、第1のスヌープフィルタ格納場所が、キャッシュ要素A内のキャッシュラインの存在に関する情報のみを含み得る一方で、第2のスヌープフィルタ格納場所が、キャッシュ要素D内のキャッシュラインの存在に関する情報のみを含み得ることを意味している。
【0036】
各スヌープフィルタ格納場所130は、本発明の一実施形態によれば、配線を使用して1つのキャッシュ要素130にマッピングされる。この場合、各スヌープフィルタ格納場所130は、各スヌープフィルタ格納場所130がマッピングされるキャッシュ要素110に恒久的に関連付けられるように、1つのキャッシュ要素110に接続される。マッピングは、本実施形態では、言い換えれば、デバイス自体に恒久的に設定されており、デバイスが製造された後に変更することはできない。
【0037】
図7は、スヌープフィルタデバイス100の概略図であり、各スヌープフィルタ格納場所130は、タグ140に加えて、プレゼンスビット160を格納するように構成されている。スヌープフィルタ格納場所130にタグ140と一緒に格納されたプレゼンスビット160は、タグ140によって識別されるキャッシュラインが、スヌープフィルタ格納場所130がマッピングされるキャッシュ要素110に存在するかどうかを示し得る。ここで、プレゼンスビット160は、キャッシュラインがキャッシュ要素110に存在する場合は真として設定され得、キャッシュラインが存在されない場合は偽として設定され得る。スヌープフィルタ格納場所130に格納されるプレゼンスビットの数は、本発明の一実施形態によれば、最大1つに制限され得る。
【0038】
図8は、各スヌープフィルタ格納場所130が複数のセクタ170に区分されているスヌープフィルタデバイスの概略図である。ここで、セクタ170は、情報、たとえば所与のタグ140に関連する情報を格納し得るスヌープフィルタ格納場所130の一部と見なされ得る。セクタ170の数は、原則として任意の数であり得るが、好ましくは2の累乗である。スヌープフィルタ格納場所は1つのセクタを含み得る。
【0039】
本発明の一実施形態では、スヌープフィルタ格納場所130の各セクタ170は、キャッシュエージェントに格納可能なキャッシュラインを識別するタグ140を格納するように構成されている。これは、1つのスヌープフィルタ格納場所130が、本発明の本実施形態では、セクタ170を含むのと同じ数のタグ140を格納し得ることを意味している。1つのスヌープフィルタ格納場所130は、1つの単一のキャッシュ要素にマッピングされ、これは、スヌープフィルタ格納場所130の各セクタ170が同じキャッシュ要素にマッピングされることを意味している。各スヌープフィルタ格納場所130は、本実施形態では、結果として複数のキャッシュライン、つまりセクタ毎に1つを追跡し得る。
図9は、区分されたスヌープフィルタ格納場所130を含むスヌープフィルタデバイスの概略図であり、各セクタ170は、1つのタグ140および1つのプレゼンスビット160を格納するように構成されている。ここで、スヌープフィルタ格納のセクタ170内にタグと共に格納されたプレゼンスビット160は、タグ140によって識別されるキャッシュラインが、スヌープフィルタ格納場所130がマッピングされるキャッシュ要素に存在するかどうかを示し得る。各セクタ170に格納されたプレゼンスビット160の数は、本発明の任意の実施形態では、1つに限定され得る。
【0040】
図10、13、および14は、各スヌープフィルタ格納場所130が複数のセクタに区分されている本発明の実施形態を例示している。ここで、各スヌープフィルタ格納場所130の第1のセクタ180は、1つのタグ140および1つのプレゼンスビット160を格納するように構成され、一方で第1のセクタ180の後の各連続セクタ190は、タグのない1つのプレゼンスビット160を格納するように構成される。スヌープフィルタ格納場所130内の第1のセクタ180にタグ140と共に格納されたプレゼンスビット160は、本発明の本実施形態では、タグ140によって識別されるキャッシュラインが、スヌープフィルタ格納場所130がマッピングされるキャッシュ要素に存在するかどうかを示し得る。第1のセクタ180の後の各連続セクタ190のプレゼンスビット160は、本発明の本実施形態では、第1のセクタ180に格納されたタグ140との特定の反復関係を有するタグによって識別されるキャッシュラインの存在を示し得る。第1のセクタ180内のタグ140が0×0001である場合、スヌープフィルタ格納場所130内の第1のセクタ180内にこのタグ140と共に格納されたプレゼンスビット160は、スヌープフィルタ格納場所130がマッピングされるキャッシュ要素内のタグ0×0001によって識別されるキャッシュラインの存在を示し得る。ここで、第1のセクタ180の後の連続する第2、第3、および第4のセクタ190のプレゼンスビット160は、たとえば、スヌープフィルタ格納場所130がマッピングされるキャッシュ要素内のタグ0×0002、0×0003、および0×0004によって識別されるキャッシュラインの存在を示し得る。タグ0×0002、0×0003、および0×0004は、
図10において、第1のタグとの関連性を介して暗示的に与えられ、これは、タグ0×0002、0×0003、および0×0004のどれもが、いずれのセクタにも格納されないが、第1のセクタ180内のタグ140および連続セクタの数によって暗示的に与えられることを意味している。第1のセクタで明示的に与えられるタグと、連続セクタで暗示的に与えられるタグとの関係は、原則として任意の形態をとり得る。第1のセクタ内のタグが0×0001である例に従えば、各連続セクタの暗示的に与えられるタグは、たとえば、セクタm内のタグがmの関数によって与えられるような式に従い得る。セクタm内のタグは、第1のセクタ内のタグにmの関数、たとえば、m、2m、m
2を掛けたものに等しくなり得る。
図14は、各々が異なるキャッシュ要素にマッピングされた個別の格納場所が同じタグを格納し得る例を例示している。
【0041】
各スヌープフィルタ格納場所の第1のセクタ180は、本発明の一実施形態によれば、タグの一部および1つのプレゼンスビットを格納するように構成され得る。タグの一部/部分タグは、ここでは、完全なタグを書き出すために必要なY個のビットのサブセットとして解釈され得る。スヌープフィルタ格納場所を複数のセクタに区分することによって、第1のセクタ180内のタグを、完全なタグを書き出すのに必要なY個のビットよりもX少ないビットを使用して識別することが可能になる。ここで、X=log
2(n)であり、式中、nはスヌープフィルタ格納場所におけるセクタ数に等しい。
図12(a)は、完全な8ビットタグ、10000000が、第1のセクタ180に格納され、各連続セクタ190が、連続タグ10000001から10000111に関連付けられている、スヌープフィルタ格納場所を例示している。第1のタグと連続タグとの間の線形の連続関係によって、第1のセクタ180内のタグをその3最下位ビットだけ短縮させることが可能になる。そしてこれらのビットは、セクタ数によって暗示的に与えられる。
図12(b)は、Y=8のビットのタグ10000000がスヌープフィルタ格納場所の第1のセクタ180に10000として格納されているスヌープフィルタ格納場所を例示している。8ビットタグの、X=log
2(セクタ数)=log
2(8)=3の最下位ビットは、第1のセクタ180に明示的に格納されず、これは、これらが、スヌープフィルタ格納場所に8セクタがあるという事実から暗示的に推測することができるためである。ここで、完全なYビットタグは、第1のセクタ180に格納されたタグの一部/部分タグおよびlog
2(n)個のゼロを加えることによって復元することができる。言い換えると、完全なYビットタグは、部分タグが最上位ビットを構成し、log
2(n)個のゼロが最下位ビットを構成するように、復元され得る。結果として、スヌープフィルタ格納場所は、完全なYビットの復元されたタグを格納していると見なされ得、完全なYビットの復元タグは、明示的に格納された部分タグによって部分的に与えられ、暗示的にスヌープフィルタ格納場所におけるセクタ数によって部分的に与えられる。言い換えると、完全なYビットの復元されたタグは、スヌープフィルタ格納場所に格納されていると見なすことができる。
【0042】
結果として、スヌープフィルタ格納場所の区分は、スヌープフィルタ内の格納毎に追跡することができるキャッシュラインの数を最適化するために使用され得る。これは、
図12(a)および(b)から直接見ることができる。
図12(a)に例示される格納場所における情報を書き出すために必要な16ビットは、タグを部分タグに置き換えることによって3ビット減少され得る。ここで、完全なタグは、部分タグ10000をlog
2(セクタ数)と統合することで復元することができ、すなわち、000と統合された10000=10000000である。
【0043】
第1のセクタ180において明示的に与えられるタグ140と、連続セクタ190において暗示的に与えられたタグとの間の関係性は、プログラムされ得、代替的には配線され得る。
【符号の説明】
【0044】
100 スヌープフィルタデバイス
110 キャッシュ要素
120 キャッシュエージェント
130 スヌープフィルタ格納場所
140 タグ
150 キャッシュ要素識別子
160 プレゼンスビット
170 スヌープフィルタセクタ
180 第1のスヌープフィルタセクタ
190 連続スヌープフィルタセクタ