(57)【要約】プロセッサのキャッシュメモリサブシステム（３０）は、連想度を設定可能なキャッシュメモリ（６０）を有する。前記キャッシュメモリは、フルアソシエイティブアドレッシングモードと連想度の低い直接アドレッシングモードとで動作することができる。前記キャッシュメモリは、データのブロックを格納するための独立にアクセス可能な複数のサブブロック（０，１，２，３）を有するデータ記憶アレイを有する。例えば、前記サブブロックのそれぞれが、ｎウェイセットアソシエイティブキャッシュを実装する。また、前記キャッシュメモリサブシステムは、前記キャッシュメモリの連想度のウェイ数をプログラム可能に選択することができるキャッシュコントローラ（２１）も有する。前記フルアソシエイティブアドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの各々に対する独立のアクセスを無効にし、かつ独立にアクセス可能な全サブブロックの同時のタグ参照を有効にし、前記直接アドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの１つ以上のサブセットへの独立のアクセスを有効にしうる。
2010532517.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサのキャッシュメモリサブシステム（３０）であって、
連想度を設定可能なキャッシュメモリ（６０）を有し、前記キャッシュメモリは、
データのブロックを格納するための独立にアクセス可能な複数のサブブロック（０，１，２，３）を有するデータ記憶アレイ（２６５）と、
前記独立にアクセス可能な複数のサブブロックに記憶されている前記データのブロックに対応するアドレスタグのセットを記憶するためのタグ記憶アレイ（２６３）とを有し、
前記キャッシュメモリの連想度のウェイ数をプログラム可能に選択するように構成されたキャッシュコントローラ（２１）とを備えるメモリサブシステム。
【請求項２】
前記独立にアクセス可能なサブブロックのそれぞれが、ｎウェイセットアソシエイティブキャッシュを実装する請求項１に記載のメモリサブシステム。
【請求項３】
前記キャッシュメモリはフルアソシエイティブアドレッシングモードと直接アドレッシングモードとで動作するように構成されている請求項１に記載のメモリサブシステム。
【請求項４】
前記フルアソシエイティブアドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの各々に対する独立のアクセスを無効にし、かつ独立にアクセス可能な全サブブロックの同時のタグ参照を有効にするように構成され、前記直接アドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの１つ以上のサブセットへの独立のアクセスを有効にするように構成されている請求項３に記載のメモリサブシステム。
【請求項５】
前記キャッシュコントローラは、１つ以上の連想度ビットを含む構成レジスタ（２２３）を有し、各連想度ビットは前記独立にアクセス可能なサブブロックのサブセットに関連付けられている請求項４に記載のメモリサブシステム。
【請求項６】
前記キャッシュコントローラは、キャッシュサブシステムのパフォーマンスをモニタし、前記キャッシュサブシステムのパフォーマンスに基づいて前記構成レジスタを自動的に再プログラムさせるように構成されたキャッシュモニタ（２２４）を更に有する請求項５に記載のメモリサブシステム。
【請求項７】
プロセッサのキャッシュメモリサブシステム（３０）を構成するための方法であって、
独立にアクセス可能な複数のサブブロック（０，１，２，３）を有するキャッシュメモリのデータ記憶アレイ（２６５）にデータのブロックを記憶するステップと、
前記独立にアクセス可能な複数のサブブロックに記憶されている前記データのブロックに対応するアドレスタグのセットを、タグ記憶アレイ（２６３）に記憶するステップと、
前記キャッシュメモリの連想度のウェイ数をプログラム可能に選択するステップとを含む方法。
【請求項８】
前記独立にアクセス可能なサブブロックのそれぞれが、ｎウェイセットアソシエイティブキャッシュを実装する請求項７に記載の方法。
【請求項９】
前記キャッシュメモリを、フルアソシエイティブアドレッシングモードと直接アドレッシングモードとで動作させるステップを更に有する請求項７に記載の方法。
【請求項１０】
前記直接アドレッシングモードでの動作時に、
それぞれが、前記独立にアクセス可能なサブブロックのサブセットに関連付けられている１つ以上の連想度ビットを含む構成レジスタ（２２３）を介して、前記独立にアクセス可能なサブブロックの１つ以上のサブセットへの独立のアクセスを有効にするステップと、
前記キャッシュサブシステムのパフォーマンスを自動的にモニタし、前記キャッシュサブシステムのパフォーマンスに基づいて、構成レジスタを自動的に再プログラムさせるステップとをさらに含む請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサのキャッシュに関し、より詳細には、キャッシュのアクセス可能性および連想度（associativity）に関する。
【背景技術】
【０００２】
コンピュータシステムのメインメモリは、通常、速度よりも実装密度を重視して設計されているため、マイクロプロセッサの設計者は、マイクロプロセッサが直接メインメモリに頻繁にアクセスする必要がなくなるように、マイクロプロセッサの設計にキャッシュを追加してきた。キャッシュとは、メインメモリよりも高速なアクセスが可能な小容量のメモリである。キャッシュは、一般に、メインのシステムメモリに使用されるメモリ（通常は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）またはシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ））よりも高速なアクセス時間と帯域幅を有する、スタティックランダムアクセスメモリ（ＳＲＡＭ）などの高速のメモリセルから構成されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
最新のマイクロプロセッサは、一般に、オンチップのキャッシュメモリを有する。多くの場合、マイクロプロセッサはオンチップの階層的なキャッシュ構造を有し、これには、１次（Ｌ１）キャッシュメモリ、２次（Ｌ２）キャッシュメモリ、場合によっては３次（Ｌ３）キャッシュメモリが含まれることもある。代表的なキャッシュ階層は、最も頻繁に使用されるキャッシュラインを記憶するために使用されうる小容量で高速なＬ１キャッシュを使用しうる。Ｌ２は、アクセスされるが、Ｌ１に入りきらないキャッシュラインを記憶するための、容量が大きく、おそらく低速のキャッシュなどである。Ｌ３キャッシュは、Ｌ２キャッシュよりも更に容量が大きく、アクセスされるが、Ｌ２キャッシュに入りきらないキャッシュラインを記憶するために使用されうる。このようなキャッシュ階層を有することにより、プロセッサコアが行うメモリアクセスに関連するレーテンシを低下させることで、プロセッサのパフォーマンスを向上できる。
【０００４】
システムによっては、Ｌ３キャッシュのデータアレイが非常に大きいことがあるため、Ｌ３キャッシュが、連想度のウェイ数（number of ways of associativity）の値を大きく設定されうる。これにより、アドレスの矛盾やアクセスパターンの変動により、その他の点では有用なデータが時期尚早に待避（evict）されてしまう可能性を最小限に減らすことができる。しかし、例えば、連想度を上げた結果、アクセスごとに必要なタグ参照の実行回数が増加するため、電力消費が増大することがある。
【課題を解決するための手段】
【０００５】
連想度を構成可能なキャッシュメモリを有するプロセッサのキャッシュメモリサブシステムの各種実施形態が開示される。一実施形態では、前記プロセッサのキャッシュメモリサブシステムは、データのブロックを記憶するための独立にアクセス可能な複数のサブブロックを有するデータ記憶アレイを有するキャッシュメモリを有する。前記キャッシュメモリは、前記独立にアクセス可能な複数のサブブロックに記憶されている前記データのブロックに対応するアドレスタグのセットを記憶するためのタグ記憶アレイ（２６３）を有する。また、前記キャッシュメモリは、前記キャッシュメモリの連想度のウェイ数をプログラム可能に選択することができるキャッシュコントローラ（２１）も有する。例えば、一実装では、前記独立にアクセス可能なサブブロックのそれぞれが、ｎウェイセットアソシエイティブキャッシュを実装する。
【０００６】
特定の一実装では、前記キャッシュメモリは、フルアソシエイティブアドレッシングモードと直接アドレッシングモードとで動作することができる。前記フルアソシエイティブアドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの各々に対する独立のアクセスを無効にし、かつ独立にアクセス可能なサブブロックの全ての同時のタグ参照を有効にしうる。一方、前記直接アドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの１つ以上のサブセットへの独立のアクセスを有効にしうる。
【図面の簡単な説明】
【０００７】
【図１】マルチコア処理ノードを有するコンピュータシステムの一実施形態のブロック図。
【図２】図１のＬ３キャッシュサブシステムの実施形態のより詳細な態様を示すブロック図。
【図３】Ｌ３キャッシュサブシステムの一実施形態の動作を示すフローチャート。
【発明を実施するための形態】
【０００８】
本発明は、さまざまに変形されたり代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその詳細な説明は、開示の形態に本発明を限定することを意図するものではなく、逆に、本発明が、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれる全ての変形例、均等物および代替例を含むことを意図することが理解されるべきである。本願にわたり、「しうる」、「してもよい」との文言は、許容を示す意味（すなわち、可能性がある、可能であること）で用いられており、義務的な意味（すなわち必須）ではない点に留意されたい。
【０００９】
図１を参照すると、コンピュータシステム１０の一実施形態のブロック図が示される。図に示した実施形態では、コンピュータシステム１０は、メモリ１４と、周辺機器１３Ａ〜１３Ｂとに結合された処理ノード１２を有する。ノード１２は、ノードコントローラ２０に結合されたプロセッサコア１５Ａ〜１５Ｂを有し、ノードコントローラ２０は、メモリコントローラ２２、複数のＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）（ＨＴ）インタフェース回路２４Ａ〜２４Ｃ、および共有の３次（Ｌ３）キャッシュメモリ６０に接続されている。ＨＴ回路２４Ｃは周辺機器１６Ａに結合されており、周辺機器１６Ａはデイジーチェーン構成で（この実施形態では、ＨＴインタフェースを使用して）周辺機器１６Ｂに結合されている。ほかのＨＴ回路２４Ａ〜Ｂも、別のＨＴインタフェース（図示せず）を介して、ほかの同様の処理ノード（図示せず）に接続されてもよい。メモリコントローラ２２は、メモリ１４に結合されている。一実施形態では、ノード１２は、図１に示す回路を含む１つの集積回路チップでもよい。すなわち、ノード１２は、チップマルチプロセッサ（ＣＭＰ）でもよい。任意のレベルの集積化が使用されても、または別個のコンポーネントが使用されてもよい。処理ノード１２が、説明を簡略にするために省略された、他の各種回路を備えてもよい点に留意されたい。
【００１０】
各種実施形態では、ノードコントローラ２０は、プロセッサコア１５Ａ，１５Ｂを、相互に、ほかのノードに、およびメモリに相互接続するための各種の相互接続回路（図示せず）も備えうる。また、ノードコントローラ２０は、ノードの最大動作周波数と最小動作周波数、ノードの最大電源電圧と最小電源電圧などの、各種のノード特性を選択および制御するための機能も有しうる。ノードコントローラ２０は、一般に、通信種別、通信文（communication）内のアドレスなどに応じて、プロセッサコア１５Ａ〜１５Ｂと、メモリコントローラ２２と、ＨＴ回路２４Ａ〜２４Ｃとの間の通信をルーティングするように構成されうる。一実施形態では、ノードコントローラ２０は、ノードコントローラ２０が受信した通信文を書き込むシステム要求キュー（ＳＲＱ）（図示せず）を備えうる。ノードコントローラ２０は、プロセッサコア１５Ａ〜１５Ｂ、ＨＴ回路２４Ａ〜２４Ｃ、およびメモリコントローラ２２のうちの１つ以上の宛先にルーティングするために、ＳＲＱにある通信をスケジュールしうる。
【００１１】
一般に、プロセッサコア１５Ａ〜１５Ｂは、ノードコントローラ２０へのインタフェースを使用して、コンピュータシステム１０の他の構成要素（例えば周辺機器１６Ａ〜１６Ｂ、他のプロセッサコア（図示せず）、メモリコントローラ２２など）と通信しうる。このインタフェースは、好ましい方式であればどのような方式で設計されてもよい。一部の実施形態では、このインタフェース用にキャッシュコヒーレントな通信が規定されてもよい。一実施形態では、ノードコントローラ２０とプロセッサコア１５Ａ〜１５Ｂ間のインタフェースにおける通信は、ＨＴインタフェースで使用されるものと同様のパケット形式で行われうる。別の実施形態では、好適な通信であれば、どのようなものが使用されてもよい（例えばバスインタフェースでのトランザクション、異なる形式のパケットなど）。別の実施形態では、プロセッサコア１５Ａ〜１５Ｂは、ノードコントローラ２０とインタフェースを共有してもよい（例えば共有バスインタフェースなど）。一般に、プロセッサコア１５Ａ〜１５Ｂからの通信には、（メモリロケーションまたはプロセッサコアの外部のレジスタを読み出すための）リードオペレーション、（メモリロケーションまたは外部レジスタに書き込むための）ライトオペレーション、（キャッシュコヒーレントな実施形態のための）プローブへの応答、割り込みの肯定応答、およびシステム管理メッセージなどの要求が含まれうる。
【００１２】
上で説明したように、メモリ１４は、任意の適したメモリデバイスを有しうる。例えば、メモリ１４は、１つ以上のランダムアクセスメモリ（ＲＡＭ）を有し、これには、ダイナミックＲＡＭ（ＤＲＡＭ）に属するＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭなどがある。別の実施形態では、メモリ１４が、スタティックＲＡＭなどを使用して実装されてもよい。メモリコントローラ２２は、メモリ１４にインタフェースするための制御回路を有しうる。更に、メモリコントローラ２２は、メモリ要求をキューイングするための要求キューなどを備えていてもよい。
【００１３】
ＨＴ回路２４Ａ〜２４Ｃは、ＨＴリンクからパケットを受信し、ＨＴリンクにパケットを送信するための各種のバッファと制御回路とを備えうる。ＨＴインタフェースは、パケットを送信するための一方向リンクを有する。各ＨＴ回路２４Ａ〜２４Ｃは、２本のこのようなリンク（送信用に１本、受信用に１本）に結合されうる。あるＨＴインタフェースは、（例えば処理ノード間では）キャッシュコヒーレントな方式で動作し、（例えば周辺機器１６Ａ〜１６Ｂとの間では）非コヒーレントな方式で動作しうる。図に示した実施形態では、ＨＴ回路２４Ａ〜２４Ｂは使用されておらず、ＨＴ回路２４Ｃが非コヒーレントなリンクを介して周辺機器１６Ａ〜１６Ｂに結合されている。
【００１４】
周辺機器１６Ａ〜１６Ｂは、どのようなタイプの周辺機器でもよい。例えば、周辺機器１６Ａ〜１６Ｂは、別のコンピュータシステムと通信するためのデバイス（例えば、ネットワークインターフェイスカード、コンピュータシステムのメイン回路基板に集積された、ネットワークインターフェイスカードと同様の回路、あるいはモデム）を有し、そのデバイスがその別のコンピュータシステムに結合されうる。更に、周辺機器１６Ａ〜１６Ｂは、ビデオアクセラレータ、オーディオカード、ハードディスクドライブもしくはフロッピーディスクドライブまたはドライブコントローラ、ＳＣＳＩ（Small Computer Systems Interface）アダプタ、テレフォニーカード、サウンドカード、およびＧＰＩＢインタフェースカードまたはフィールドバスインタフェースカードなどの各種のデータ収集カードを含んでいてもよい。「周辺機器」との用語は、入出力（Ｉ／Ｏ）デバイスを含むことを意図している点に注意されたい。
【００１５】
一般に、プロセッサコア１５Ａ〜１５Ｂは、所定の命令セットアーキテクチャに規定されている命令を実行するように設計された回路を有しうる。すなわち、プロセッサコア回路は、命令セットアーキテクチャに規定されている命令のフェッチ、デコード、実行、およびその結果のストアを行うように構成されうる。例えば、一実施形態では、プロセッサコア１５Ａ〜１５Ｂは、ｘ８６アーキテクチャを実装しうる。プロセッサコア１５Ａ〜１５Ｂは、スーパーパイプライン処理、スーパースカラーまたはその組み合わせを含む任意の所望の構成を有しうる。ほかの構成としては、スカラー、パイプライン処理、非パイプライン処理などがある。実施形態によって、アウトオブオーダーの投機的な実行が使用されても、オンオーダーの実行が使用されてもよい。プロセッサコアは、上記の構造のいずれかと組み合わせて、１つ以上の命令または他の機能のためのマイクロコードを有してもよい。各種実施形態では、キャッシュ、変換ルックアサイドバッファ（ＴＬＢ）などのほかの各種の設計機能を実装してもよい。したがって、図の実施形態では、２つのプロセッサコアによって共有されるＬ３キャッシュ６０のほかに、プロセッサコア１５Ａが、Ｌ１キャッシュ１６ＡとＬ２キャッシュ１７Ａとを有する。同様に、プロセッサコア１５Ｂが、Ｌ１キャッシュ１６ＢとＬ２キャッシュ１７Ｂとを有する。個々のＬ１キャッシュとＬ２キャッシュは、マイクロプロセッサで使用されるどのようなＬ１キャッシュおよびＬ２キャッシュを表わしてもよい。
【００１６】
本実施形態は、ノード間、ならびにノードと周辺機器間の通信にＨＴインタフェースを使用するが、ほかの実施形態は、このいずれかの通信に任意の所望の１つ以上のインタフェースを使用してもよい点に留意されたい。例えば、ほかのパケットベースのインタフェースが使用されても、バスインタフェースが使用されても、各種の標準的な周辺機器インタフェース（例えば、周辺装置相互接続（ＰＣＩ）、ＰＣＩエクスプレスなど）が使用されてもよい。
【００１７】
図に示した実施形態では、Ｌ３キャッシュサブシステム３０は、キャッシュコントローラユニット２１（ノードコントローラ２０の一部として図示されている）と、Ｌ３キャッシュ６０とを有する。キャッシュコントローラ２１は、Ｌ３キャッシュ６０の動作を制御するように構成されうる。例えば、キャッシュコントローラ２１は、Ｌ３キャッシュ６０の連想度のウェイ数（the number of ways of associativity）を設定することによって、Ｌ３キャッシュ６０のアクセス可能性を設定しうる。より詳細には、後で更に詳細に説明するように、Ｌ３キャッシュ６０は、独立にアクセス可能な、所定数の別個のキャッシュブロックまたはサブキャッシュ（図２に示す）に分割されうる。各サブキャッシュは、タグと、関連するデータストレージとの組のためのタグ記憶域を有しうる。また、各サブキャッシュは、ｎウェイアソシエイティブキャッシュ（ｎは任意の数）を実装しうる。実施形態ごとに、サブキャッシュの数、つまりＬ３キャッシュ６０の連想度のウェイ数が構成可能である。
【００１８】
なお、図１に示したコンピュータシステム１０の処理ノード１２は１つであるが、別の実施形態では、実装される処理ノードの数はいくつであってもよい。同様に、実施形態ごとに、ノード１２などの処理ノードに含まれるプロセッサコアの数はいくつでもよい。コンピュータシステム１０のさまざまな実施形態では、ノード１２当たりのＨＴインタフェースの数、ノードに結合されている周辺機器１６の数などが変わってもよい。
【００１９】
図２は、図１のＬ３キャッシュサブシステムの実施形態のより詳細な態様を示すブロック図であり、図３は、Ｌ３キャッシュサブシステムの一実施形態の動作を示すフローチャートである。図１に示した構成要素に対応する構成要素は、説明をわかりやすくし、簡潔を期するために同じ符号を付している。図１〜図３をすべて参照すると、Ｌ３キャッシュサブキャッシュ３０は、キャッシュコントローラ２１を有し、キャッシュコントローラ２１はＬ３キャッシュ６０に結合されている。
【００２０】
Ｌ３キャッシュ６０は、タグロジックユニット２６２、タグ記憶アレイ２６３、およびデータ記憶アレイ２６５を有する。上で説明したように、Ｌ３キャッシュ６０は、独立にアクセス可能な所定数のサブキャッシュによって実装されうる。図に示した実施形態では、破線により、Ｌ３キャッシュ６０が、独立にアクセス可能な、２つまたは４つのセグメントまたはサブキャッシュによって実装されうることが示されている。データ記憶アレイ２６５のサブキャッシュには番号０，１，２，３が振られている。同様に、タグ記憶アレイ２６３のサブキャッシュにも番号０，１，２，３が振られている。
【００２１】
例えば、２つのサブキャッシュを有する実装では、データ記憶アレイ２６５が、（サブキャッシュ０と１を併せた）上のサブキャッシュと、（サブキャッシュ２と３を併せた）下のサブキャッシュのそれぞれが、１６ウェイアソシエイティブサブキャッシュとなるように分割されうる。あるいは、（サブキャッシュ０と２を併せた）左のサブキャッシュ、（サブキャッシュ１と３を併せた）右のサブキャッシュのそれぞれが、１６ウェイアソシエイティブサブキャッシュとなってもよい。４つのサブキャッシュを有する実装では、サブキャッシュのそれぞれが、１６ウェイアソシエイティブサブキャッシュとなってもよい。この図では、Ｌ３キャッシュ６０は、１６ウェイ、３２ウェイまたは６４ウェイの連想度を有しうる。
【００２２】
タグ記憶アレイ２６３の各部分は、複数の位置のそれぞれに、データ記憶アレイ２６５の関連するサブキャッシュに記憶されているデータのキャッシュラインに対応する所定数のアドレスビット（すなわちタグ）を記憶するように構成されうる。一実施形態では、Ｌ３キャッシュ６０の構成に応じて、タグロジック２６２が、タグ記憶アレイ２６３の１つ以上のサブキャッシュを検索して、要求されたキャッシュラインが、データ記憶アレイ２６５のサブキャッシュに存在するかどうかを判定しうる。タグロジック２６２は、要求されたアドレスがみつかった場合には、キャッシュコントローラ２１にヒットの指標を返し、タグアレイ２６３で一致するものがみつからなかった場合には、ミスの指標を返しうる。
【００２３】
特定の一実装では、各サブキャッシュは、１６ウェイアソシエイティブキャッシュを実装するタグとデータの組に対応しうる。タグロジック２６２にキャッシュアクセス要求が送られると、タグアレイ２６３内の各サブキャッシュのタグの参照が実質的に同時に行われるように、サブキャッシュが並列にアクセスされうる。このように、連想度は加算（additive）となる。このため、２つのサブキャッシュを備えて構成されたＬ３キャッシュ６０は、最大で３２ウェイの連想度を有し、４つのサブキャッシュを備えて構成されたＬ３キャッシュ６０は、最大で６４ウェイの連想度を有する。
【００２４】
図に示した実施形態では、キャッシュコントローラ２１は、ビット０とビット１の２つのビットを有する構成レジスタ２２３を有する。これらの連想度ビットは、Ｌ３キャッシュ６０の動作を定義しうる。より詳細には、構成レジスタ２２３内の連想度ビット１と連想度ビット０は、タグロジック２６２がサブキャッシュにアクセスするために使用するアドレスビットまたはハッシュされたアドレスビットの数を決めており、このため、キャッシュコントローラ２１が、Ｌ３キャッシュ６０を、連想度のウェイ数を任意の値に構成することができる。つまり、連想度ビットは、サブキャッシュを有効／無効にし、このためＬ３キャッシュ６０が直接アドレスモードで（すなわち、フルアソシエイティブモードをオフにして）アクセスされるか、フルアソシエイティブモードでアクセス（図３のブロック３０５参照）されるかどうかを設定することができる。
【００２５】
３２ウェイの連想度に対応可能な２つのサブキャッシュ（例えば、上と下のサブキャッシュがそれぞれ１６ウェイの連想度に対応可能）を有する実施形態では、１つの連想度ビットのみがオン（active）である。この連想度ビットは、「水平」または「垂直」のアドレッシングモードを有効にしうる。例えば、連想度ビット０がアサートされている場合、１つのアドレスビットにより、上と下の対、または左と右の対のいずれかが選択されうる。例えば、２つのサブキャッシュ実装の場合である。しかし、連想度ビットがデアサートされている場合、タグロジック２６２は、サブキャッシュに３２ウェイキャッシュとしてアクセスしうる。
【００２６】
最大６４ウェイの連想度に対応可能な４つのサブキャッシュ（例えば、四角のそれぞれが１６ウェイの連想度に対応可能）を有する実施形態では、連想度ビット０と連想度ビット１が両方使用されうる。これらの連想度ビットは、「水平」アドレッシングモードと「垂直」アドレッシングモードを有効にし、上部分と下部分の両方のサブキャッシュが対として有効にされるか、左部分と右部分の両方のサブキャッシュが対として有効にされる。例えば、連想度ビット０がアサートされている場合、タグロジック２６２は、１つのアドレスビットを使用して上または下の対を選択し、連想度ビット１がアサートされている場合、タグロジック２６２は、１つのアドレスビットを使用して、左または右の対を選択しうる。いずれの場合も、Ｌ３キャッシュ６０は、３２ウェイの連想度を有しうる。連想度ビット０と連想度ビット１の両方がアサートされている場合、タグロジック２６２は、２つのアドレスビットを使用して４つのサブキャッシュの１つを選択し、このためＬ３キャッシュ６０は、１６ウェイの連想度を有するようになる。しかし、２つの連想度ビットがデアサートされている場合、全てのサブキャッシュが有効にされているため、Ｌ３キャッシュ６０は、フルアソシエイティブモードであり、タグロジック２６２は全のサブキャッシュに並列にアクセスし、Ｌ３キャッシュ６０は６４ウェイの連想度を有する。
【００２７】
なお、別の実施形態では、連想度ビットの数が変わってもよい。また、ビットのアサート、デアサートに対応する機能が逆になってもよい。更に、各連想度ビットに対応する機能が変わってもよいと考えられる。例えば、ビット０が左と右の対を有効にし、ビット１が上と下の対を有効にするなどであってもよい。
【００２８】
このため、キャッシュコントローラ２１は、キャッシュ要求を受け取ると、キャッシュラインのアドレスを含む要求をタグロジック２６２に転送しうる。タグロジック２６２は、この要求を受け取り、図３のブロック３１０，３１５に示すように、Ｌ３キャッシュ６０のどのサブキャッシュが有効にされているかに応じて、１つまたは２つのアドレスビットを使用しうる。
【００２９】
多くの場合、最高のパフォーマンスが得られる連想度のレベルは、コンピューティングプラットフォーム上で動作しているアプリケーションのタイプまたはコンピューティングプラットフォームのタイプによって決まる。例えば、一部のアプリケーションでは、連想度を上げるとパフォーマンスが向上する。しかし、一部のアプリケーションでは、連想度を下げると、電力消費が削減されるだけでなく、アクセスごとの（peer
access）リソースの消費が減るため、パフォーマンスも向上し、低レーテンシで大きなスループットを得ることができる。したがって、一部の実施形態では、システムの供給業者が、システムの基本入出力システム（ＢＩＯＳ）を有するコンピューティングプラットフォームを提供し、ＢＩＯＳが、図３のブロック３００に示すように、構成レジスタ２２３を、適切なデフォルトのキャッシュ構成でプログラムしてもよい。
【００３０】
しかし、別の実施形態では、オペレーティングシステムが、デフォルトのキャッシュ構成の変更を可能にするドライバまたはユーティリティを有してもよい。例えば、電力消費の影響を受けやすいラップトップやその他のポータブルコンピューティングプラットホームでは、連想度を下げることにより、電力消費を抑えることができるため、ＢＩＯＳが、連想度の低いデフォルトのキャッシュ構成を設定してもよい。しかし、特定のアプリケーションでは、連想度を上げることでパフォーマンスが向上する場合、ユーザがユーティリティにアクセスして、構成レジスタのセットを手動で変更してもよい。
【００３１】
別の実施形態では、キャッシュコントローラ２１は、破線で示すキャッシュモニタ２２４を有する。キャッシュモニタ２２４は、動作中に、さまざまな方法でキャッシュのパフォーマンスをモニタしうる（図３のブロック３２０参照）。キャッシュモニタ２２４は、キャッシュのパフォーマンスおよび／またはパフォーマンスと電力消費との組み合せに基づいて、Ｌ３キャッシュ６０の構成を自動的に再構成するように構成されうる。例えば、一実施形態では、キャッシュモニタ２２４は、キャッシュのパフォーマンスが何らかの所定の制限から外れている場合に、連想度ビットを直接操作しうる。別の実施形態では、キャッシュモニタ２２４は、パフォーマンスの変化をＯＳに通知してもよい。ＯＳは、この通知を受けて、ドライバを実行し、連想度ビットを所望の値にプログラムしうる（図３のブロック３２５参照）。
【００３２】
一実施形態では、キャッシュコントローラ２１は、Ｌ３リソースが利用できるかどうか、Ｌ３キャッシュの帯域幅の利用率などに応じて、暗黙的要求、非暗黙的要求、または明示的要求を使用することにより、Ｌ３キャッシュ６０からデータを選択的に要求することによって、キャッシュの帯域幅を節約する一方、Ｌ３キャッシュ６０のアクセスに関連するレーテンシを低下させるように構成されうる。例えば、キャッシュコントローラ２１は、未処理のＬ３要求、利用可能なＬ３のリソース（例えばＬ３データバス）、およびＬ３記憶アレイバンクのアクセスをモニタし、トラッキングするように構成されうる。
【００３３】
このような実施形態では、各サブキャッシュ内のデータが、２つの同時データ転送をサポートしている２本の読み出しバスによってアクセスされうる。キャッシュコントローラ２１は、任意の投機的な読み出しにより、どの読み出しバスと、どのデータバンクが使用中であるか、あるいは使用中とみなされるかを、トラッキングするように構成されうる。キャッシュコントローラ２１は、新たにリード要求を受け取ったときに、対象のバンクが利用可能であり、データバスがすべてのサブキャッシュで利用可能であると判定すると、タグロジック２６２に暗黙的な有効の要求を発行する。暗黙的なリード要求は、キャッシュコントローラ２１によって発行された要求であり、この要求により、一致するタグが存在すると判定されると、タグロジック２６２は、キャッシュコントローラ２１による介入なしで、データ記憶アレイ２６５へのデータアクセスを開始するようになる。暗黙的要求が発行されると、キャッシュコントローラ２１は、すべてのサブキャッシュについて、これらのリソースを「使用中」と内部的にマークしうる。所定の期間が経過した後、リソースは、実際に使用された場合であっても（ヒットの場合）、もはや使用中ではないため、キャッシュコントローラ２１は、これらのリソースを、「使用可」とマークしうる。しかし、要求されたリソースのいずれかが使用中の場合、キャッシュコントローラ２１は、タグロジック２６２に要求を、非暗黙的要求として発行しうる。リソースが利用可能になると、キャッシュコントローラ２１は、要求されたデータを含むことがわかっているデータ記憶アレイ２６５のサブキャッシュに、ヒットを返した非暗黙的要求に対応する明示的要求を直接発行する。非暗黙的要求は、タグロジック２６２に、キャッシュコントローラ２１にタグ結果のみを返させる要求である。このため、このサブキャッシュになるバンクおよびデータバスのみが、使用不可（使用中）とされる。このため、要求が、主に明示的要求として発行される場合、すべてのサブキャッシュにわたって、より同時性の高いデータ転送をサポートすることができる。暗黙的要求と明示的要求を使用する実施形態に関する詳細な情報については、２００７年６月２８日出願の米国特許出願第１１／７６９，９７０号「プロセッサのキャッシュサブシステムのキャッシュ帯域幅を節約する一方、キャッシュレーテンシを低下させる装置（APPARATUS FOR REDUCING CACHE LATENCY WHILE PRESERVING CACHE BANDWIDTH IN A CACHE SUBSYSTEM OF A PROCESSOR）」を参照されたい。
【００３４】
１つのノードが複数のプロセッサコアを有する実施形態について上で説明したが、Ｌ３キャッシュサブシステム３０に関連する機能が、シングルコアプロセッサを含むどのようなタイプのプロセッサで使用することができることが考察される。また、上記の機能はＬ３キャッシュサブシステムに限定されず、必要に応じてほかのキャッシュレベルや階層構造で実施されてもよい。
【００３５】
上の実施形態についてかなり詳細に記載したが、上記の開示を完全に理解できれば、数多くの変形例および変更例が当業者にとって自明であろう。下記の特許請求の範囲は、このような変形例および変更例を全て包含するものと解釈されることが意図される。
【産業上の利用可能性】
【００３６】
本発明は、一般にマイクロプロセッサおよびそのキャッシュシステムに利用可能である。
【図１】
2010532517.tif 000003
【図２】
2010532517.tif 000004
【図３】
2010532517.tif 000005
【手続補正書】
【提出日】平成21年6月10日(2009.6.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサのキャッシュメモリサブシステム（３０）であって、
連想度を設定可能なキャッシュメモリ（６０）を有し、前記キャッシュメモリは、
データのブロックを格納するための独立にアクセス可能な複数のサブブロック（０，１，２，３）を有するデータ記憶アレイ（２６５）と、
それぞれが、アドレスタグのセットを記憶するための複数のサブキャッシュ（０，１，２，３）を有するタグ記憶アレイ（２６３）とを有し、各サブキャッシュは、前記独立にアクセス可能な複数のサブブロックの別個のサブブロックに対応し、アドレスタグの所定のセットは、前記データ格納アレイの前記対応する別個のサブブロックに記憶されている前記データのブロックに関連付けられており、
前記キャッシュメモリの連想度のウェイ数をプログラム可能に選択するように構成されたキャッシュコントローラ（２１）とを備えるメモリサブシステム。
【請求項２】
前記独立にアクセス可能なサブブロックのそれぞれが、ｎウェイセットアソシエイティブキャッシュを実装する請求項１に記載のメモリサブシステム。
【請求項３】
前記キャッシュメモリはフルアソシエイティブアドレッシングモードと直接アドレッシングモードとで動作するように構成されている請求項１に記載のメモリサブシステム。
【請求項４】
前記フルアソシエイティブアドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの各々に対する独立のアクセスを無効にし、かつ独立にアクセス可能な全サブブロックの同時のタグ参照を有効にするように構成され、前記直接アドレッシングモードで動作するようにプログラムされている場合、前記キャッシュコントローラは、前記独立にアクセス可能なサブブロックの１つ以上のサブセットへの独立のアクセスを有効にするように構成されている請求項３に記載のメモリサブシステム。
【請求項５】
前記キャッシュコントローラは、１つ以上の連想度ビットを含む構成レジスタ（２２３）を有し、各連想度ビットは前記独立にアクセス可能なサブブロックのサブセットに関連付けられている請求項４に記載のメモリサブシステム。
【請求項６】
前記キャッシュコントローラは、キャッシュサブシステムのパフォーマンスをモニタし、前記キャッシュサブシステムのパフォーマンスに基づいて前記構成レジスタを自動的に再プログラムさせるように構成されたキャッシュモニタ（２２４）を更に有する請求項５に記載のメモリサブシステム。
【請求項７】
プロセッサのキャッシュメモリサブシステム（３０）を構成するための方法であって、
独立にアクセス可能な複数のサブブロック（０，１，２，３）を有するキャッシュメモリのデータ記憶アレイ（２６５）にデータのブロックを記憶するステップと、
タグ記憶アレイ（２６３）の複数のサブキャッシュ（０，１，２，３）のそれぞれに、アドレスタグのセットを記憶するステップであって、各サブキャッシュは、前記独立にアクセス可能な複数のサブブロックの別個のサブブロックに対応し、アドレスタグの所定のセットは、前記データ格納アレイの前記対応する別個のサブブロックに記憶されている前記データのブロックに関連付けられているステップと、
前記キャッシュメモリの連想度のウェイ数をプログラム可能に選択するステップと、を含む方法。
【請求項８】
前記独立にアクセス可能なサブブロックのそれぞれが、ｎウェイセットアソシエイティブキャッシュを実装する請求項７に記載の方法。
【請求項９】
前記キャッシュメモリを、フルアソシエイティブアドレッシングモードと直接アドレッシングモードとで動作させるステップ、をさらに含む請求項７に記載の方法。
【請求項１０】
前記直接アドレッシングモードでの動作時に、
それぞれが、前記独立にアクセス可能なサブブロックのサブセットに関連付けられている１つ以上の連想度ビットを含む構成レジスタ（２２３）を介して、前記独立にアクセス可能なサブブロックの１つ以上のサブセットへの独立のアクセスを有効にするステップと、
前記キャッシュサブシステムのパフォーマンスを自動的にモニタし、前記キャッシュサブシステムのパフォーマンスに基づいて、構成レジスタを自動的に再プログラムさせるステップと、をさらに含む請求項９に記載の方法。
【国際調査報告】
2010532517.tif 000006
2010532517.tif 000007
2010532517.tif 000008