(57)【要約】  装置、システム、および方法が開示される。一実施形態では、装置は、プロセッサに連結されたキャッシュメモリを備える。さらに装置は、キャッシュメモリに連結されたタグ記憶構造を備える。タグ記憶構造は、キャッシュメモリ内の位置に関連付けられているタグを記憶することができる。さらに装置は、プロセッサに連結されたキャッシュタグのキャッシュを備える。キャッシュタグのキャッシュは、タグ記憶構造に記憶されるタグのより小さなサブセットを記憶することができる。【選択図】  図１
2010532537.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサに連結されたキャッシュメモリと、
前記キャッシュメモリに連結され、複数のタグを記憶するタグ記憶構造と、
前記プロセッサに連結され、前記タグ記憶構造に記憶されている前記複数のタグのうち１以上のタグのサブセットを記憶するキャッシュタグのキャッシュと
を備え、
前記複数のタグの各々は、前記キャッシュメモリ内に記憶されているデータ位置に関連付けられている
装置。
【請求項２】
前記キャッシュタグのキャッシュは、前記タグ記憶構造に記憶されている一番最近に利用されたタグのうち１以上を含む
請求項１に記載の装置。
【請求項３】
前記プロセッサに連結された部分的なタグキャッシュをさらに備え、
前記部分的なタグキャッシュは、メモリ要求のキャッシュミスを判断し、
前記キャッシュタグのキャッシュは、前記メモリ要求のキャッシュヒットを判断する
請求項１に記載の装置。
【請求項４】
前記プロセッサに連結され、タグマッチの発生を判断するコントローラをさらに備え、
前記タグマッチは、メモリ要求に関連付けられた元のタグが前記タグマッチをチェックされる位置に記憶されているタグに等しい場合に発生する
請求項１に記載の装置。
【請求項５】
前記コントローラは、さらに、前記メモリ要求のアドレスから元のインデックスを判断し、
前記元のインデックスがまだ前記キャッシュタグのキャッシュにない場合、前記キャッシュタグのキャッシュに現在あるインデックスを上書きすることで、前記キャッシュタグのキャッシュに前記元のインデックスを挿入する
請求項４に記載の装置。
【請求項６】
前記コントローラは、さらに、前記メモリ要求からの前記元のインデックスが前記キャッシュタグのキャッシュにある場合、前記キャッシュタグのキャッシュの前記タグマッチをチェックし、
前記メモリ要求からの前記元のインデックスが前記キャッシュタグのキャッシュにない場合、前記タグ記憶構造の前記タグマッチをチェックし、
前記キャッシュタグのキャッシュにも、前記タグ記憶構造にもタグマッチがない場合、システムメモリから前記元のタグを取得する
請求項５に記載の装置。
【請求項７】
前記コントローラは、さらに、前記キャッシュタグのキャッシュにタグマッチがない場合、前記元のタグを前記キャッシュタグのキャッシュに挿入し、
前記タグ記憶構造にタグマッチがない場合、前記元のタグを前記タグ記憶構造に挿入する
請求項６に記載の装置。
【請求項８】
前記コントローラに連結された、分割された状態情報記憶ユニットをさらに備え、
前記分割された状態情報記憶ユニットは、複数の共通の状態情報パターンを記憶する
請求項４に記載の装置。
【請求項９】
前記コントローラは、さらに、前記キャッシュタグのキャッシュのタグと関連付けられた状態情報ビットのセットの代わりに、前記分割された状態情報記憶ユニットに記憶されている共通の状態情報パターンへのポインタを記憶する
請求項８に記載の装置。
【請求項１０】
インターコネクトと、
第１のシリコンダイの上に配設され、前記インターコネクトに連結されたプロセッサと、
第２のシリコンダイの上に配設され、前記インターコネクトに連結されたキャッシュメモリと、
前記第２のシリコンダイの上に配設され、前記インターコネクトに連結され、複数のタグを記憶するタグ記憶構造と、
前記第１のシリコンダイの上に配設され、前記インターコネクトに連結され、前記タグ記憶構造に記憶された前記複数のタグのうち１以上のサブセットを記憶するキャッシュタグのキャッシュと
を備え、
前記複数のタグの各々は、前記キャッシュメモリ内に記憶されているデータ位置に関連付けられている
システム。
【請求項１１】
前記プロセッサに連結された部分的なタグキャッシュをさらに備え、
前記部分的なタグキャッシュは、メモリ要求のキャッシュミスを判断し、
前記キャッシュタグのキャッシュは、前記メモリ要求のキャッシュヒットを判断する
請求項１０に記載のシステム。
【請求項１２】
前記プロセッサに連結され、タグマッチの発生を判断するコントローラをさらに備え、
前記タグマッチは、メモリ要求に関連付けられた元のタグが前記タグマッチをチェックされる位置に記憶されているタグに等しい場合に発生する
請求項１０に記載のシステム。
【請求項１３】
前記コントローラは、さらに、前記メモリ要求のアドレスからの元のインデックスを判断し、
前記元のインデックスがまだ前記キャッシュタグのキャッシュにない場合、前記キャッシュタグのキャッシュに現在あるインデックスを上書きすることで、前記キャッシュタグのキャッシュに前記元のインデックスを挿入する
請求項１２に記載のシステム。
【請求項１４】
前記コントローラは、さらに、前記メモリ要求からの前記元のインデックスが前記キャッシュタグのキャッシュにある場合、前記キャッシュタグのキャッシュの前記タグマッチをチェックし、
前記メモリ要求からの前記元のインデックスが前記キャッシュタグのキャッシュにない場合、前記タグ記憶構造の前記タグマッチをチェックし、
前記キャッシュタグのキャッシュにタグマッチがない場合、または、前記タグ記憶構造にタグマッチがない場合、システムメモリから前記元のタグを取得する
請求項１３に記載のシステム。
【請求項１５】
前記コントローラは、さらに、前記キャッシュタグのキャッシュにタグマッチがない場合、前記元のタグを前記キャッシュタグのキャッシュに挿入し、
前記タグ記憶構造にタグマッチがない場合、前記元のタグを前記タグ記憶構造に挿入する
請求項１４に記載のシステム。
【請求項１６】
複数のタグをタグ記憶構造に記憶させる段階と、
キャッシュタグのキャッシュに、前記タグ記憶構造に記憶されている前記複数のタグのうち１以上および全て未満の数のタグのサブセットを記憶する段階と
を備え、
前記複数のタグの各々は、プロセッサに連結されたキャッシュメモリ内に記憶されているデータ位置に関連付けられている
方法。
【請求項１７】
タグマッチの発生を判断する段階をさらに備え、
前記タグマッチは、メモリ要求に関連付けられた元のタグが前記タグマッチをチェックされる位置に記憶されているタグに等しい場合に発生する
請求項１６に記載の方法。
【請求項１８】
前記メモリ要求のアドレスから元のインデックスを判断する段階と、
前記元のインデックスがまだ前記キャッシュタグのキャッシュにない場合、前記キャッシュタグのキャッシュに現在あるインデックスを上書きすることで、前記キャッシュタグのキャッシュに前記元のインデックスを挿入する段階と
をさらに備える
請求項１７に記載の方法。
【請求項１９】
前記メモリ要求からの前記元のインデックスが前記キャッシュタグのキャッシュにある場合、前記キャッシュタグのキャッシュの前記タグマッチをチェックする段階と、
前記メモリ要求からの前記元のインデックスが前記キャッシュタグのキャッシュにない場合、前記タグ記憶構造の前記タグマッチをチェックする段階と、
前記キャッシュタグのキャッシュにタグマッチがない場合、または、前記タグ記憶構造にタグマッチがない場合、システムメモリから前記元のタグを取得する段階と
をさらに備える
請求項１８に記載の方法。
【請求項２０】
前記キャッシュタグのキャッシュにタグマッチがない場合、前記元のタグを前記キャッシュタグのキャッシュに挿入する段階と、
前記タグ記憶構造にタグマッチがない場合、前記元のタグを前記タグ記憶構造に挿入する段階と
をさらに備える
請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュタグ記憶装置に関する。より具体的には、本発明は、多数のキャッシュタグ記憶装置用のタグ記憶の階層型アーキテクチャの作成に関する。
【０００２】
以下は、ここで利用する用語の簡単なグロッサリである。提供される定義は、明らかにその他の意味で利用されていない限りにおいて、本明細書および請求項にわたり有効である。
【０００３】
＜タグ記憶構造＞
キャッシュメモリの全てのエントリ用のタグおよびその他の関連情報（例えば状態情報、ＬＲＵ情報、ＥＣＣ情報）を記憶する記憶構造のこと。
【０００４】
＜キャッシュタグのキャッシュ＞
タグ記憶構造に記憶されるタグのサブセットを記憶するキャッシュのこと。
【０００５】
＜インデックス＞
タグ記憶構造の特定のタグセットを指し示す、メモリ要求のアドレスの部分のこと。
【０００６】
＜タグ＞
特定のインデックス部分に固有の特定のメモリアドレス位置を指し示す、メモリ要求のアドレスの部分のこと。
【背景技術】
【０００７】
全ての種類のプロセッサは、プロセッサコアのスピードに比較して比較的遅いメモリ速度により、キャッシュへの依存度が高くなっている。数十年もの間、幾らものキャッシュアーキテクチャが利用されてきた。公知のキャッシュアーキテクチャの一つに、セットアソシアティブキャッシュ（set associative cache）がある。キャッシュアーキテクチャは、システムメモリ位置からのデータを記憶するメモリ記憶装置およびタグセットを記憶するタグ記憶構造を有する。
【０００８】
標準的なキャッシュ階層型アーキテクチャでは、プロセッサコアのキャッシュに対して近接するにつれて、一般的にキャッシュが小型となり、速度が速くなる。一般的に最小および最速のキャッシュは、プロセッサコアシリコンダイの上に常駐する。他方、最大キャッシュ（ＬＬＣまたはlast level cache）（１または複数）は、プロセッサコアからオフダイに常駐する場合がある。オンダイのキャッシュに対してオフダイのキャッシュに常駐するデータへのアクセスにより一般的にはさらなる待ち時間が生じることになる、というのもプロセッサコアへのデータ送信に長時間かかるからである。
【０００９】
各キャッシュは、タグ記憶構造を有する。プロセッサがあるメモリ位置からのデータを要する場合、データがあるキャッシュに記憶されているか否かの判断は、そのキャッシュについてタグ記憶構造とメモリ位置アドレスとを比較することで行うことができる。タグ記憶構造がオフダイである場合、タグのルックアップを行う際の待ち時間は、タグ記憶構造がオンダイである場合より長くかかる。故に、オンダイのタグ記憶構造は、高価な空間を占有するのでプロセッサダイのコストを上昇させるが、オフダイのキャッシュと比してタグルックアップの待ち時間が低下することにより、実行速度を速める助けとなる。
【００１０】
多くの実施形態では、あるキャッシュは、キャッシュラインによりデータを記憶する（例えば６４バイト）。他の実施形態では、キャッシュは、他の計測単位によりデータを記憶する。キャッシュがキャッシュラインによりデータを記憶する例示的な実施形態では、タグ記憶構造は、キャッシュに記憶されているキャッシュラインにより表される特定のメモリ位置を表す。加えて、タグ記憶構造は、記憶されているキャッシュラインが修正されたものであるか、無効であるか、等を特定する状態情報を記憶する。状態情報の一例は、多くのキャッシュにより利用されているＭＥＳＩ（modified, exclusive, shared, or invalid）情報である。タグ記憶構造は、さらに、既存のキャッシュラインの置き換えが必要な場合に退去させる（evict）キャッシュラインを決定する際に助けとなるキャッシュ置き換えポリシー情報を記憶する。ＬＲＵ（最長時間未使用法）ビットは一般的に利用され、キャッシュラインの相対的な古さ（他の記憶キャッシュラインに対して）についての情報の保持を必要とする技術であるが、他の置き換えポリシー技術も存在し、利用可能である。タグ記憶構造はさらに、ＥＣＣ情報は必要ではない場合にも各タグセットについて誤り訂正情報（ＥＣＣ）を記憶することができる。ＬＲＵ情報およびＥＣＣ情報は、セット毎の記憶でよいが、タグ情報および状態情報は、タグ毎の記憶が必要となる（ウェイ毎（per way））。
【００１１】
例えば、４０ビットのアドレス空間に６４バイトのキャッシュラインを有する２５６メガバイト（ＭＢ）の４ウェイセットアソシアティブキャッシュは、９．５ＭＢのタグ記憶空間を必要としうる。
(14b tag + 2b state) X 4M tags + (8b ECC + 4b LRU) /set X 1M ways = 9.5 MB
【００１２】
このタグ記憶構造がプロセッサダイの上にある場合、９．５Ｍという量の記憶空間は、プロセッサ製造コストにおいて多大な負担となりうる。９．５Ｍの情報がゲートに記憶されることで、プロセッサのシリコンダイの上の空間の大部分が占有されてしまう。プロセッサダイへのコスト負担を低減して、なおかつ、キャッシュおよびミス（miss）の判断を可能とさせるべく、部分的なタグ記憶構造が考案され時折利用されている。部分的なタグは、タブ情報の一部分（例えばタグの１４ビット全ての代わりに、８ビット）のみを記憶して、ダイ空間を節約する。このようなアーキテクチャは、キャッシュミスの迅速な判断という観点から最適である。しかしながら、キャッシュヒット（cache hit）を判断するという観点からは、メインメモリからのフルタグへのアクセスが依然として必要となる。故に、部分的なタグルックアップでキャッシュミスが存在する場合、システムメモリからデータを取得すべきであることが知られているが、キャッシュヒットの場合には、依然として、全てのタグについての情報を記憶しているタグ記憶構造から実際のタグにアクセスする必要がある。
【図面の簡単な説明】
【００１３】
本発明は、例示を目的として記載され、添付図面には制限されない。添付図面においては、同様の参照番号により類似した部材を示す。
【００１４】
【図１】キャッシュタグのキャッシュを実装する装置の一実施形態を示す。
【００１５】
【図２】Ｎ個のウェイセットアソシアティブ構成のタグアドレス構造、並びに、キャッシュタグセット構造のキャッシュおよびキャッシュタグのキャッシュの個々のタグアドレスエントリの一実施形態を示す。
【００１６】
【図３】キャッシュメモリに関連付けられたタグセットのサブセットを記憶すべく、キャッシュタグのキャッシュを利用する処理の一実施形態のフロー図である。
【００１７】
【図４】キャッシュタグのキャッシュを利用する処理の一実施形態のフロー図である。
【発明を実施するための形態】
【００１８】
キャッシュタグのキャッシュを実装する装置、システム、および方法の実施形態を示す。以下の記載においては多くの詳細を述べる。しかし、実施形態はこれら特定の詳細なしに実施可能であることを理解されたい。また、公知の部材、仕様、およびプロトコルに関しては詳述を避けて、本発明を曖昧にしないようにしている箇所もある。
【００１９】
図１は、キャッシュタグのキャッシュを実装する装置およびシステムの一実施形態を示す。多くの実施形態においては、１以上のプロセッサコア１０４がマイクロプロセッサシリコンダイ１０２（ダイ１）に常駐する。他のマルチプロセッサの実施形態においては、互いに連結された多数のプロセッサダイが存在してよく、その各々がダイ毎に１以上のコアを含んでよい（図１には、多数のダイの上のプロセッサコアのアーキテクチャは示していない）。図１に戻ると、プロセッサコア（１または複数）がインターコネクト１００に連結される。異なる実施形態においては、プロセッサコア（１または複数）１０４は、今日利用可能である任意のパソコン、ハンドヘルドデバイス、サーバ、ワークステーション、または他のコンピューティングデバイス等での利用のために設計される任意の種類の中央処理ユニット（ＣＰＵ）であってよい。ここでは本発明を曖昧にしないように、単一のインターコネクト１００を示して、説明し易くしている。実際には、この単一のインターコネクトは、異なる個々のデバイス同士を連結する多数のインターコネクトから形成されてよい。加えて、多くの実施形態では、このインターコネクトに対して、不図示のより多くのデバイス（チップセット等）を連結することができる。
【００２０】
プロセッサコア１０４は、インターコネクト１００を介して、プロセッサコア１０４の同じダイの上に物理的に位置する１以上のオンダイのキャッシュ１０６に連結される。
【００２１】
多くの実施形態では、キャッシュには、全てのキャッシュメモリ位置についてタグを記憶するタグ記憶構造１１４が関連付けられている。多くの実施形態では、タグ記憶構造１１４は、プロセッサコア１０４から別個のシリコンダイ（ダイ２）１１２上に常駐する。多くの実施形態では、タグ記憶構造１１４は、インターコネクト１００を介して１以上のオフダイ（非プロセッサダイ）キャッシュ１１６に連結され、オフダイのキャッシュ１１６と同じダイの上に配設される。
【００２２】
キャッシュタグのキャッシュ１０８は、プロセッサダイ１０２上のオフダイのキャッシュタグのサブセットを記憶する。特に、タグ記憶構造１１４は、全てのインデックス値と、インデックス値毎に関連付けられたタグセットとを記憶するが、キャッシュタグのキャッシュ１０８のほうは、全ての可能性あるインデックス値は記憶しない。記憶空間を節約するべく、キャッシュタグのキャッシュ１０８は、タグ記憶構造１１４に記憶されているタグのサブセットを記憶する。殆どの実施形態では、キャッシュタグのキャッシュ１０８では、任意の時間においては全てのインデックス位置を表さない。
【００２３】
幾らかの実施形態では、キャッシュタグのキャッシュ１０８に記憶されているタグとタグ記憶構造１１４との間でマッチするタグ各々について、１セットの全てのウェイからの情報が必要である。他の実施形態では、キャッシュタグのキャッシュ１０８は、全てのウェイ未満のタグを記憶する。一実施形態では、１セットの記憶要件は９．５バイトであり、タグ情報、状態情報、退去／キャッシュ置き換えポリシー情報（ＬＲＵ）、およびＥＣＣ情報（もしＥＣＣを利用している場合）が含まれる。タグ、状態、ＬＲＵ情報、およびＥＣＣコンポーネントに関する特定の詳細は、背景技術のセクションでより詳細に記載している。幾らかの実施形態では、キャッシュタグのキャッシュは、ＬＲＵポリシーとは異なる置き換えポリシーを利用する。特に、以下の情報がキャッシュタグセットのキャッシュに記憶されうる。
(14-bit tag + 2-bit state) X 4 ways + 4-bit LRU + 8-bit ECC = 9.5 Bytes
キャッシュタグのキャッシュに２Ｋ（２＾１１）を記憶させるべく、記憶要件を１９Ｋ（２Ｋ＊９．５Ｂ）とする。キャッシュタグのキャッシュのエントリの詳細は、以下に図２を参照しながら説明する。故に、キャッシュタグのキャッシュの一実施形態は、プロセッサダイの上に常駐して、一番最近に利用されたタグのルックアップを行ってよく、ダイへの負担は１９Ｋである。１９Ｋの記憶サイズのオンダイのコストは、９．５Ｍサイズのフルタグ記憶構造の記憶負担より非常に小さい。
【００２４】
多くの実施形態では、キャッシュタグのキャッシュ１０８はそれ自身が、Ｎウェイのセットアソシアティブキャッシュである。加えて、多くの実施形態では、キャッシュタグのキャッシュ１０８は、一番最近にアクセスされたタグを記憶する。キャッシュタグのキャッシュ１０８は、インターコネクト１００に連結される。幾らかの実施形態では、キャッシュタグのキャッシュ１０８へのアクセスを制御するコントローラ１１０は、メモリ要求の、キャッシュタグのキャッシュ１０８内に現在配置されているタグとの整合を判断して、その旨をプロセッサに報告する。異なる実施形態では、メモリ要求は、プロセッサコアのうちの１つまたは他の可能性のあるメモリ要求発生源のうちのバスマスタＩ／Ｏデバイス等の、システム内の多くのデバイスのうち１つから発せられてもよい。
【００２５】
各メモリ要求（つまりメモリアクセス）は、システムメモリ内の特定の位置へのアドレスを含む。タグ記憶構造１１４は、オフダイキャッシュメモリ１１６の特定の位置に関連付けられた全てのタグセットを含む。
【００２６】
故に、コントローラ１１０がメモリ要求を受信する際には、コントローラ１１０は、メモリ要求アドレス内のインデックスおよびタグフィールドを解析（parse out）して、特定のメモリ位置に関連付けられたタグのインデックスがキャッシュタグのキャッシュ１０８内に記憶されているか否かをチェックする。元のインデックスが記憶されている場合、コントローラ１１０は次に、メモリ位置に関連付けられている元のタグが、元のインデックス位置のウェイのうちの１つのキャッシュタグのキャッシュ１０８内に記憶されているか否かをチェックする。
【００２７】
元のタグが１０８に関連付けられたエントリに配置されている場合（元のインデックス位置）、その結果は、メモリ要求のキャッシュタグのキャッシュ１０８のタグヒットとなる（つまり、キャッシュヒット）。元のタグが、タグ記憶構造１１４のインデックス位置に記憶されていない場合、その結果は、メモリ要求のキャッシュタグのキャッシュ１０８のタグミスとなる。またこれは、一セットの全てのウェイからのタグがキャッシュされた場合にキャッシュミスである。
【００２８】
他方で、コントローラ１１０が当初のルックアップ上のキャッシュタグのキャッシュ１０８に格納されている元のインデックスを見つけることができない場合、その結果は、メモリ要求のキャッシュタグのキャッシュ１０８のインデックスミスとなる。この場合、コントローラ１１０は、メモリ要求からの元のインデックス値をフェッチして、その後、キャッシュタグのキャッシュ１０８に現在記憶されているインデックスを置き換えることで、キャッシュタグのキャッシュ１０８に挿入する必要がある。幾らかの実施形態では、ＣｏＣＴ自身がアソシアティブキャッシュである場合、置き換えポリシーは、最長時間未使用であるインデックス値を置き換える最長時間未使用ポリシー（least recently used policy）である。他の実施形態では、他の標準的な置き換えポリシースキームを利用して、キャッシュタグのキャッシュ１０８のインデックス値を置き換えることもできる。
【００２９】
新たなインデックス値がキャッシュタグのキャッシュ１０８に挿入されると、コントローラ１１０は、メモリ要求に関連付けられた特定のタグが、現在、インデックス位置のタグ記憶構造１１４に記憶されているか否かを判断する必要がある。判断が肯定的な場合、その結果は、タグ記憶構造１１４のタグヒットであり、コントローラ１１０は、そのインデックス位置のタグ記憶構造１１４に記憶されている全てのウェイの新たなインデックス位置のキャッシュタグのキャッシュ１０８にタグ情報を入力する必要がある。
【００３０】
判断が肯定的ではない場合、その結果は、タグ記憶構造１１４のタグミスとなり、コントローラ１１０は、最長時間未使用であるタグ（タグ記憶構造１１４のインデックス位置のウェイのうちの１つ）を、メモリ要求に関連付けられているタグで置き換える処理を開始する必要がある。この置き換えは、システムメモリからのメモリ要求のアドレスに位置するデータをキャッシュメモリに入力して、メモリ要求からの元のタグをタグ記憶構造１１４に入力する。ひとたびタグがシステムメモリからタグ記憶構造に入力されると、幾らかの実施形態では、コントローラ１１０は、キャッシュタグのキャッシュ１０８の全てのウェイ（インデックス値にある）を、タグ記憶構造１１４に現在記憶されているインデックス値にある各ウェイからのタグで置き換える処理を開始することができる。他の実施形態では、置き換えにより、キャッシュタグのキャッシュ１０８の全てのウェイ未満のウェイが置き換えられる。
【００３１】
幾らかの実施形態では、オフダイのメモリアクセスサイズは、キャッシュタグエントリサイズのキャッシュと同じではない。オフダイのメモリアクセスサイズが、キャッシュタグエントリサイズのキャッシュより小さい場合、コントローラは、データをフェッチするべく多数の要求を送信してよい。他方で、オフダイのメモリアクセスサイズが、キャッシュタグエントリサイズのキャッシュより大きい場合、コントローラ110は、不要な追加的データを有してよい。この場合に幾らかの実施形態では、コントローラ１１０は、過剰なデータを破棄することもできる。
【００３２】
他の実施形態では、コントローラ１１０は、コントローラ１１０にインテリジェントに過剰なデータの部分を先取りさせて、将来の利用に備えて関連メモリに記憶させることを可能とする小さな関連メモリ（不図示）を有してよい。例えば、元のキャッシュタグサイズが４バイトであり、元のキャッシュタグの結合性が８ウェイである場合、キャッシュタグのキャッシュ１０８のエントリは、全ての関連ウェイ（４バイトＸ８ウェイ＝３２バイトタグセットエントリ）を記憶する目的から、サイズが３２バイトである必要がある。タグ記憶構造１１４からの情報を入手するフェッチコマンドが６４バイトを一度に受信すると仮定する。この例においては、コントローラ１１０は、キャッシュタグセットエントリの全キャッシュ、および、さらに３２バイトの隣接データを記憶するべく、３２バイトをフェッチする必要がある。小さな関連メモリを利用する実施形態では、フェッチされた３２バイトの隣接データは、コントローラ１１０上またはその付近の小さな関連メモリに記憶されて、小さな先取りバッファとして機能することができる。幾らかの場合においては、多くの後続のアクセスは、隣接するメモリ位置へのものなので、隣接する３２バイトは、次の処理または近い将来に要求される可能性が高い。故に、小さな隣接するメモリにより、将来のキャッシュタグのキャッシュ１０８の処理用に、タグセットをインテリジェントに先取りすることができる。
【００３３】
さらに、小さな関連メモリは、犠牲キャッシュ（victim cache）としての利用も可能である。犠牲キャッシュの実施形態では、小さな関連メモリは、キャッシュタグのキャッシュ１０８内で一番最近退去させられたタグを記憶して、後にこれらタグの１以上が再度アクセスされるときに備えることができる。
【００３４】
加えて、コントローラ１１０は、キャッシュタグのキャッシュ１０８のエントリデータについての多数のフェッチ要求を１つの要求に組み合わせてよい。例えば、キャッシュタグの多数のキャッシュ１０８のインデックスフェッチを１つのフェッチに組み合わせることができる。
【００３５】
幾らかの代替的な実施形態では、部分的なタグキャッシュ１１８が、キャッシュタグのキャッシュ１０８に加えて利用される。部分的なタグキャッシュ１１８は、背景技術のセクションで上述したように、全てのタグビットを記憶しないので、キャッシュミスのみを確実に判断することができるが、キャッシュヒットについては確実に判断することができない。他方、キャッシュタグのキャッシュは、キャッシュヒットのみを確実に判断することができるが、キャッシュミスについては確実に判断することができない。部分的なタグキャッシュ１１８およびキャッシュタグのキャッシュ１０８を利用する上述の代替的な実施形態では、部分的なタグキャッシュ１１８を利用することでキャッシュミスを迅速に判断して、キャッシュタグのキャッシュ１０８を利用することでページヒットを迅速に判断することができる。これら実施形態では、コントローラ１１０は、部分的なタグキャッシュ１１８およびキャッシュタグのキャッシュ１０８で、同時にルックアップを開始することができる。部分的なタグキャッシュ１１８がページミスを判断した際には、キャッシュタグのキャッシュからの情報を破棄する。しかし、ページヒットの場合には、要求されるタグは潜在的にキャッシュタグのキャッシュ１０８にオンダイで発見されることもあり、これによりオフダイのアクセス待ち時間の不利益を防ぐことができる。
【００３６】
幾らかの実施形態では、キャッシュメモリは分割されたキャッシュである。分割されたキャッシュの実施形態では、タグ記憶構造１１４の全体的なタグ記憶要件は低減される、というのも各タグが多数のキャッシュエントリ（例えば、キャッシュサブブロック）により共有されるからである。
【００３７】
これら分割されたキャッシュの実施形態では、状態情報の記憶要件は増加させられる、というのも、各タグについて、そのタグに関連付けられた各潜在的なエントリ用の状態情報が必要となるからである（状態情報は、図２に関する説明とともに背景技術のセクションでも説明されている）。例えば、タグが１４ビットである場合（非分割キャッシュにおいて）、２ビットの状態情報がセクタ毎に含まれている。８ウェイの分割キャッシュでは、各タグには８個のキャッシュエントリが関連付けられているので、２ビットＸ８、つまり、１６ビットの状態情報がタグ毎に含まれている。この例では、状態情報は、タグ情報よりも多くの空間を占有することになる。
【００３８】
分割されたキャッシュに対して状態情報記憶が持つ影響を低減すべく、共通の状態情報パターンセットを、分割された状態情報記憶装置１２０に記憶させる。多くの実施形態において、分割された状態情報記憶装置１２０はコントローラ１１０に連結されていてよい。この例では、分割された状態情報記憶装置１２０は、１６ビットの多数のパターンを記憶する。幾らかの実施形態では、多数のパターンは、殆どの共通パターンを含み、分割された状態情報記憶装置１２０内で所定（predetermined）であり、固定的（permanent）であってよい。他の実施形態では、コントローラ１１０内のロジックが、利用される殆どの共通のパターンの状態情報を動的に決定して、記憶されているパターンを修正することもできる。
【００３９】
状態情報パターンの共通性は状態情報パターンによって異なっていてよい。メモリアクセスの共通の線形性を例にとる。多数のメモリ要求がコントローラ１１０で受信され、それらが全て線形のアドレスパターンであった場合、状態情報ビットは、全てが「１」である、という非常に信頼性の高い修正パターンを示すであろう。
【００４０】
故に、各タグについて１６ビットの状態情報を記憶する代わりに、コントローラは、例えば、分割された状態情報記憶装置１２０の状態情報パターンについて６ビットのポインタを記憶することができる。６ビットのポインタにより、分割された状態情報記憶装置１２０に、６４個の状態情報パターン（２＾６）を記憶することができるようになる。故に、もしもこのパターンが共通であった場合、本例では、コントローラは、１６ビットの状態情報パターンの代わりにタグ付きの６ビットのポインタを記憶することができるようになる。
【００４１】
加えて、上述のように、多くの実施形態では、システムメモリ１２２が、オフダイのキャッシュ１１６上のインターコネクト１００に連結される。これにより、オンダイおよびオフダイのキャッシュのいずれもが対象となるデータ（対象タグ）を記憶していない場合、メモリ位置からのデータにアクセスすることができるようになる。
【００４２】
図２は、Ｎ個のウェイセットアソシアティブ構成のタグアドレス構造、並びに、キャッシュタグセット構造のキャッシュおよびキャッシュタグのキャッシュの個々のタグアドレスエントリの一実施形態を示す。
【００４３】
多くの実施形態では、４０ビットのアドレス空間へのメモリアクセス要求は、以下の４０ビットのアドレスフィールドの情報を含む（すなわち、元のタグフィールド、元のインデックスフィールド、およびオフセットフィールド）。通常、元のタグフィールドは、タグ記憶構造に記憶されるタグエントリ２００内に記憶される。２５６Ｍの直接マッピング（１ウェイアソシアティブ）キャッシュの６４バイトキャッシュラインサイズを有する４０ビットのアドレッシングの例を利用すると、アドレス内の各フィールドのサイズの一例は、１２ビットの元のタグ、２２ビットのインデックス、および６ビットのオフセットを含みうる。２２ビットのインデックスフィールドは、タグ記憶構造の特定のインデックス位置へのポインタである。１２ビットの元のタグは、実際のメモリアドレスで最高の１２ビットでありうる。タグのサイズも、その結合性およびキャッシュラインサイズにより決定される。背景技術セクションで記載した例では、６４バイトのキャッシュラインを有する２５６ＭＢの４ウェイセットアソシアティブキャッシュは、２０ビットのインデックスフィールドおよび４Ｍのタグ（２＾２０ｘ４）を有して、ここで各タグは１４ビットのサイズを有する。
【００４４】
図２はさらに、タグセット２０２の一実施形態も示している。４ウェイセットアソシアティブキャッシュ用のタグセット２０２は、４つのタグを記憶する。各ウェイ（ウェイ０−３）は、特定のタグと、各タグに関連付けられたキャッシュエントリに関する特定の量の状態情報とを記憶する。状態情報はタグ毎に固有であり、各タグに関連付けられている状態情報が必要である。加えて、タグセットはさらに、ＬＲＵビットまたは他のＬＲＵの類の情報といった、キャッシュ置き換えポリシー情報を含むことにより、新たなタグの記憶が必要な場合に、コントローラに対して、４つのタグのうちいずれが退去が必要であるかを通知する必要がある。最後に、誤り訂正符号（ＥＣＣ）ビットはさらに、セット毎に利用されて、タグセットの記憶誤りを最小限にすることができる。例えば、上述のように、あるセットの記憶要件は９．５バイトであってよく、これには以下の情報が含まれる。
(14 bit tag + 2 bit state) X 4 ways + 4 bit LRU + 8 bit ECC = 9.5 Bytes
【００４５】
図２はさらに、キャッシュタグのキャッシュ内のタグセットエントリ（ＣｏＣＴタグセットエントリ２０４）の実施形態を示す。セットアソシアティブキャッシュは、概して、多くの種類のキャッシュ構成においてよく利用される。故に、多くの実施形態では、キャッシュはマルチウェイセットアソシアティブキャッシュである。故に、キャッシュタグのキャッシュのエントリは、特定のインデックス位置においてキャッシュの全てのウェイについてのタグ情報を記憶する必要がある（タグセットのコンテンツ／データ２０６）。これら実施形態では、元のアドレス（例えば、上述した４０ビットのアドレス構成）からのインデックスフィールド（タグセットのアドレッシング２０８）が、キャッシュタグのキャッシュ内に記憶されているあるタグセットの位置を指し示す。幾らかの実施形態では、キャッシュタグのキャッシュ構造自身が、セットアソシアティブに記憶されている。故に、元のインデックスフィールドは、キャッシュタグタグフィールドのキャッシュおよびキャッシュタグインデックスフィールドのキャッシュに分割されて、キャッシュタグのキャッシュ内から、あるセットのフェッチを可能とする。例えば、４０ビットのアドレスから２０ビットの元のインデックスフィールドを利用する場合、元のインデックスフィールドの上位１２ビットは、キャッシュタグのセットアソシアティブキャッシュのタグフィールドとして利用することができる。この例においては、元のインデックスフィールドの下位８ビットは、キャッシュタグのキャッシュのインデックスフィールドとして利用することができる。
【００４６】
図３は、キャッシュメモリに関連付けられたタグセットのサブセットを記憶すべく、キャッシュタグのキャッシュを利用する処理の一実施形態のフロー図である。本処理は、ハードウェア（回路、専用ロジック等）、ソフトウェア（汎用コンピュータシステムまたは専用マシン上で実行されるようなもの）、またはこれらの組み合わせを含みうる処理ロジックにより実行される。図３を参照すると、処理は、複数のタグをタグ記憶構造に記憶するロジック処理により開始される（処理ブロック３００）。多くの実施形態では、各タグは、キャッシュメモリ内に記憶されているデータ位置と関連付けられている。記憶構造内に記憶されているタグのフルセットは、キャッシュメモリの全てのデータ位置を表す（account for）。キャッシュメモリは、コンピュータシステムまたは他のコンピュータ関連デバイス上の任意の汎用または専用キャッシュであってよい。多くの実施形態では、キャッシュメモリは、１以上のプロセッサコアを有するコンピュータシステムに配設される。多くの実施形態では、キャッシュメモリは、プロセッサコアとは別個のシリコンダイの上に配設される。さらに、多くの実施形態では、タグ記憶構造は、キャッシュメモリと同じシリコンダイの上に配設される。
【００４７】
図３に戻ると、処理ロジックは、次に、キャッシュタグのキャッシュのタグ記憶構造に記憶されるタグのサブセットを記憶する（処理ブロック３０２）。多くの実施形態では、キャッシュタグのキャッシュは、タグ記憶構造に記憶されているフルセットのタグの小さな部分のみを記憶する。例えば、背景技術および図１を参照して上述した例示的な実施形態では、６４バイトキャッシュラインを有する４ウェイセットアソシアティブ２５６ＭＢキャッシュメモリについて、タグ記憶構造に記憶されている４Ｍ（２＾２２）タグがある。一方で、キャッシュタグのキャッシュは、この一部を記憶してよい（例えば、８Ｋ（２＾１３）タグ）。多くの実施形態では、キャッシュタグのキャッシュは、一番最近要求されたメモリ位置が、タグがキャッシュタグのキャッシュ内に記憶される位置であるような、一番最近に利用された様式でタグ記憶構造からのタグを記憶してよい。
【００４８】
図３は、タグ記憶構造との関連でキャッシュタグのキャッシュが記憶するものについての汎用処理を示すが、図４は、キャッシュタグのキャッシュを利用する処理のフロー図を示す。本処理は、ハードウェア（回路、専用ロジック等）、ソフトウェア（汎用コンピュータシステムまたは専用マシン上で実行されるようなもの）、またはこれらの組み合わせを含みうる処理ロジックにより実行される。図４を参照すると、処理は、処理ロジックがメモリ要求を受信することによって開始される（処理ブロック４００）。メモリ要求は、メモリ位置のアドレスを含む。多くの実施形態では、アドレスの上位ビットがメモリ位置のタグに対応しており、アドレスの中間ビットが、キャッシュメモリに関連付けられたタグ記憶構造へのインデックスに対応する。タグフィールドおよびインデックスフィールドの特定の詳細は、図２に関して上述した。
【００４９】
異なる実施形態では、メモリ要求は、プロセッサコアのうちの１つまたは他の可能性のあるメモリ要求発生源のうちのバスマスタＩ／Ｏデバイス等の、システム内の多くのデバイスのうち１つから発せられてもよい。メモリ要求は最終的には、フィルタリングされて、キャッシュタグのキャッシュを制御するコントローラへ送られる（図４のＣｏＣＴ）。そして、コントローラ内の処理ロジックは、メモリ要求のアドレスからの元のインデックス値および元のタグ値を解析する（処理ブロック４０２）。
【００５０】
メモリ要求内の元のインデックスおよび元のタグが既知になると、処理ロジックは、元のインデックスが現在キャッシュタグのキャッシュに記憶されているか否かを判断する（処理ブロック４０４）。元のインデックスがキャッシュタグのキャッシュに記憶されていない場合には、キャッシュタグのキャッシュにインデックスミスがあることになり、処理ロジックは、元のインデックスをキャッシュタグのキャッシュに挿入してよい（処理ブロック４０６）。多くの実施形態では、元のインデックスは、最長時間未使用な記憶されているインデックス値を置き換える（退去させる）ことで解放されたキャッシュタグのキャッシュの位置へ挿入される。幾らかの実施形態では、処理ロジックはインデックスをフェッチして、その後、インデックスを割り当て、および、挿入することができる。他の実施形態では、処理ロジックは、先ず空間を割り当てて、その後、インデックスをフェッチして挿入を行うこともできる。
【００５１】
退去させられるインデックスが、キャッシュタグのキャッシュに入力されたという理由で更新された場合、このインデックスを元の記憶位置に上書きして書き戻す必要がある。
【００５２】
元のインデックスがキャッシュタグのキャッシュに挿入された場合、処理ロジックは、元のインデックスが既にキャッシュタグのキャッシュに記憶されていたというのが唯一の可能性のあることと考えられるので、キャッシュタグのキャッシュに元のタグがないと認識する。故に、処理ロジックは、元のタグがタグ記憶構造（図４ではＴＳＳ）に存在するか否かを判断せねばならない（処理ブロック４０８）。元のタグは、メモリ要求が指し示すメモリ位置からのデータが、タグ記憶構造が参照しているキャッシュに現在記憶されている場合のみに、タグ記憶構造に存在することになる。元のタグがタグ記憶構造にある場合、処理ロジックは、元のタグをフェッチして、キャッシュタグのキャッシュに挿入する（処理ブロック４１０）。元のタグがキャッシュタグのキャッシュに挿入される際、処理ロジックは、元のタグ自身を記憶するウェイのみならず、タグ記憶構造（タグセット）のインデックス値の全てのウェイからのタグをコピーしてよい（処理ブロック４２０）。他の実施形態では、処理ロジックは、タグ記憶構造のインデックス値の全てのウェイからのタグ未満のタグをコピーしてよい。最後に、処理ロジックは、タグに関連付けられたキャッシュメモリのデータを読み出し、メモリ要求を完了させる（処理ブロック４２２）。
【００５３】
一方、元のタグがタグ記憶構造にない場合、処理ロジックは、メモリ要求のアドレスが指し示すデータがキャッシュ内にはなく、データはメインシステムメモリ内にあることを認識することになる。この場合、処理ロジックは、元のタグをタグ記憶構造に挿入する必要があり（通常のキャッシュ動作中にタグ記憶構造にタグを普通に挿入するのと同様な方法で）、処理ロジックはさらに、元のタグを含むタグセットを、キャッシュタグのキャッシュに挿入してよい（処理ブロック４１２）。本例では、処理ロジックは、追加的な処理ステップを行い、タグを挿入する必要がある。幾らかの実施形態ではこの結果によって、処理ロジックは、退去させる古いタグを決定する現在の退去ポリシーを利用して、ＴＳＳから古いタグを退去させて、挿入すべき元のタグでこの古いタグを置き換える（処理ブロック４１８）。上述した次の処理ロジックは、キャッシュタグ構造のキャッシュにタグを沿うニュする際に、元のインデックスに関連付けられたウェイのセット全体を挿入してもよい（処理ブロック４２０）。他の実施形態では、元のインデックスのウェイのセット全体未満のウェイと関連付けられたタグが、キャッシュタグ構造のキャッシュに挿入される。最後に、処理ロジックは、タグに関連付けられたキャッシュメモリ内のデータを読み出し、メモリ要求を完了させる（処理ブロック４２２）。
【００５４】
処理ブロック４０４に戻ると、元のインデックスがキャッシュタグのキャッシュにある場合、処理ロジックは、元のタグがキャッシュタグのキャッシュにあるか否かを判断する必要がある（処理ブロック４１４）。元のタグがキャッシュタグのキャッシュに記憶されていない場合には、処理ロジックは、処理ブロック４０８へと進む（上述した通りである）。または、元のタグがキャッシュタグのキャッシュに記憶されている場合には、処理ロジックは、キャッシュタグのキャッシュの元のタグヒットがあることを確認する（処理ブロック４１６）。この実施形態では、処理ロジックは、タグに関連付けられたキャッシュメモリのデータを読み出して、メモリ要求を完了させて（処理ブロック４２２）、処理を進めることができる。元のインデックスをキャッシュタグのキャッシュに挿入する際、既存のインデックス（古いインデックス）エントリを置き換える必要がある場合もある。このエントリに関連付けられたデータが修正された状態にある場合には、処理ロジックは、キャッシュタグのキャッシュ内の修正された置き換えインデックスと関連付けられたタグを記憶している位置のタグ記憶構造を更新する。
【００５５】
キャッシュタグのキャッシュを実装する装置、システム、および方法を上述した。これら実施形態は、その特定の例示的な実施形態を参照しながら説明された。当業者にとっては、本開示に基づいて、ここに記載した実施形態の広義の精神および範囲を逸脱せずにこれら実施形態に行われうる様々な変形例および変更例が明らかである。故に、明細書および図面は、例示的であり、限定的な意味で捉えられるべきものではない。
【図１】
2010532537.tif 000003
【図２】
2010532537.tif 000004
【図３】
2010532537.tif 000005
【図４】
2010532537.tif 000006
【国際調査報告】
2010532537.tif 000007
2010532537.tif 000008