(57)【要約】一実施形態において、処理ノードが、キャッシュモニタユニット及びコンフィギュレーションユニットに結合されたキャッシュメモリを各々が含む複数のプロセッサコアを含む。各キャッシュモニタユニットは、結合されたキャッシュメモリの現在の利用率を独立してモニタし、現在の利用率が所定の利用値より低いかどうかを決定するように構成されてもよい。コンフィギュレーションユニットは、現在の利用率が所定の利用値より低いことを決定するキャッシュモニタユニットに応答して、キャッシュメモリの１以上の部分を選択的に無効にしてもよい。
2008515095.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ（４１５）のキャッシュメモリ（４１７、４６０）を設定する方法であって、
前記キャッシュメモリの現在の利用率をモニタするステップと、
前記現在の利用率が、所定の利用値より低いかを決定するステップと、
前記現在の利用率が前記所定の利用値より低いという決定に応じて、前記キャッシュメモリの１以上の部分を選択的に無効にするステップと、を含むことを特徴とする、
方法。
【請求項２】
前記所定の利用値を設定可能なストレージ（４４２）内に格納するステップを更に含む、
請求項１記載の方法。
【請求項３】
前記利用率が、所定の利用値より低いかを決定するステップが、前記所定の利用値と前記現在の利用率とを比較するステップを含む、
請求項１記載の方法。
【請求項４】
前記キャッシュメモリにおいて使用されているエントリ数を決定するとともに、前記キャッシュメモリへのアクセス頻度を決定することにより、前記現在の利用値を決定するステップを更に含む、
請求項１記載の方法。
【請求項５】
前記キャッシュメモリにおいて使用されているエントリ数の決定が、犠牲を発生させる前記キャッシュメモリへの書き込み数をモニタするステップを含む、
請求項４記載の方法。
【請求項６】
前記キャッシュメモリへのアクセス頻度の決定が、カウンタを使用して、前記キャッシュメモリへのアクセス数をカウントするステップを含む、
請求項４記載の方法。
【請求項７】
キャッシュメモリ（４１７）（４６０）と、
前記キャッシュメモリに結合され、前記キャッシュメモリの現在の利用率をモニタするとともに、前記現在の利用率が、所定の利用値より低いかを決定するように構成されたキャッシュモニタユニット（４１８）と、
前記キャッシュモニタユニット及び前記キャッシュメモリに結合されたコンフィギュレーションユニット（４１９）と、を備え、
前記キャッシュコンフィギュレーションユニットは、前記現在の利用率が、前記所定の利用値より低いことを決定する前記キャッシュモニタユニットに応じて、前記キャッシュメモリの１以上の部分を選択的に無効にするように構成される、
プロセッサ（４１５）。
【請求項８】
各々がキャッシュメモリを含む複数のプロセッサコア（１５Ａ、１５Ｂ）を含む処理ノード（１２、２２）を、動的に構成するための方法であって、
前記キャッシュメモリの各々に対応する現在の利用率を独立にモニタするステップと、
各々の前記現在の利用率が、所定の利用値より低いかを決定するステップと、
各々の前記現在の利用率が、前記所定の利用値より低いという決定に応じて、対応する前記キャッシュメモリの１以上の部分を選択的に無効にするステップとを含む、
方法。
【請求項９】
前記キャッシュメモリにおいて使用されているエントリ数を決定するとともに、前記キャッシュメモリへのアクセス頻度を決定することにより、前記現在の利用値を決定するステップを更に含む、
請求項１記載の方法。
【請求項１０】
複数のプロセッサコア（１５Ａ、１５Ｂ）を備える処理ノード（１２、２２）であって、各プロセッサコアが、
キャッシュメモリ（１７Ａ、１７Ｂ、６０）と、
前記キャッシュメモリに結合されて、自身に結合された前記キャッシュメモリの現在の利用率を独立してモニタし、前記現在の利用率が、所定の利用値より低いかを決定するように各々が構成されたキャッシュモニタユニット（１８Ａ、１８Ｂ、８５、９５）と、
前記キャッシュモニタユニット及び前記キャッシュメモリに結合されたコンフィギュレーションユニット（１９Ａ、１９Ｂ、５０、６５）と、を備え、
前記キャッシュコンフィギュレーションユニットは、前記現在の利用率が、前記所定の利用値より低いことを決定する前記キャッシュモニタユニットに応答して、前記コンフィギュレーションユニットが結合された、対応する前記キャッシュメモリの１以上の部分を選択的に無効にするように構成される、
処理ノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサ及びチップマルチプロセッサ（ＣＭＰ：Chip MultiProcessor）の分野に関し、特に、プロセッサのキャッシュメモリの再設定（reconfiguration）に関する。
【背景技術】
【０００２】
最新のマイクロプロセッサは、典型的に、オンチップキャッシュメモリを含む。多くの場合、マイクロプロセッサは、レベル１（Ｌ１）、レベル２（Ｌ２）、場合によってはレベル３（Ｌ３）のキャッシュメモリを含むこともある、オンチップの階層キャッシュ構造を含む。典型的なキャッシュ階層は、小容量で高速のＬ１、すなわち、最も頻繁に使用されるキャッシュラインを格納するために使用されるキャッシュを採用するものであってもよい。Ｌ２は、アクセスされたがＬ１に適合しないキャッシュラインを格納するための、より大容量で、場合によってはより低速のキャッシュであってもよい。Ｌ３キャッシュは、アクセスされたがＬ２キャッシュに適合しないキャッシュラインを格納するために使用するものであってもよい。上述したようなキャッシュ階層があると、プロセッサコアによるメモリアクセスに関連した待ち時間を短縮することで、プロセッサの性能が向上する場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、場合によっては、このような性能の向上により損失を被ることもある。最新のマイクロプロセッサは、非常に多くの電力を消費し、高いサーマルバジェット（thermal budgets）を有する可能性があることがよく知られている。キャッシュメモリは、使用されていないときでも、静電気漏洩を介して電力を消費することもある。このように、キャッシュの容量が大きいほど、消費電力も大きくなる。
【０００４】
効率を高めプロセッサを向上させようとすることを目的として、チップマルチプロセッサ（ＣＭＰ）が、注目を集める新興技術になってきている。ＣＭＰには、同一の集積回路（ＩＣ）デバイス上に実装された２以上のプロセッサコアがある。注目を集める理由として、少なくとも部分的に、例えば、より複雑な単一のプロセッサより、ＣＭＰの方が、集積回路上に含まれてもよい数百万個のトランジスタをより効率的に使用することもあるという考えがある。例えば、プロセッサコア間で処理負荷を共有することにより、ＣＭＰが、いくつかの単一コアプロセッサによって要求されるよりも低い周波数で、いくつかのタスクを実行することができる。周波数が低くなると、場合によっては、省電力化及びサーマルバジェットの低減につながる。
【０００５】
ＣＭＰは、複数のプロセッサコアを含むため、各コアに関連付けられた回路を含むことがある。例えば、ＣＭＰが、各プロセッサコアに対して、Ｌ１及びＬ２キャッシュメモリを含むことがある。したがって、上述した理由から、単一コアマイクロプロセッサに対して、ＣＭＰの電力消費量及びサーマルバジェットが高いままのこともある。そこで、プロセッサの性能を維持しながら、電力消費量を低減する方法を見い出すことが望まれる。
【課題を解決するための手段】
【０００６】
キャッシュメモリの動的再設定（dynamic reconfiguration）の様々な実施形態が開示される。一実施形態において、プロセッサが、例えば、キャッシュモニタユニット及びコンフィギュレーションユニットに結合されたＬ２キャッシュ等のキャッシュメモリを含む。キャッシュモニタユニットは、キャッシュメモリの現在の利用率をモニタし、現在の利用率が所定の利用値より低いかどうかを決定するように構成されてもよい。コンフィギュレーションユニットは、現在の利用率が所定の利用値より低いことを決定するキャッシュモニタユニットに応じて、キャッシュメモリの１以上の部分（portion）を選択的に無効にしてもよい。
【０００７】
別の実施形態において、処理ノードは、キャッシュモニタユニット及びコンフィギュレーションユニットに結合されたキャッシュメモリを各々が含む複数のプロセッサコアを含む。各キャッシュモニタユニットは、結合されたキャッシュメモリの現在の利用率を独立してモニタし、現在の利用率が所定の利用値より低いかどうかを決定するように構成されてもよい。コンフィギュレーションユニットは、所与の現在の利用率が所定の利用値より低いことを決定するキャッシュモニタユニットに応じて、キャッシュメモリの１以上の部分を選択的に無効にしてもよい。
【０００８】
本発明にはさまざまな修正及び別の形態の余地があるが、本発明の特定の実施形態が図面を用いて例示的に示されており、本願明細書において詳細に記載される。しかしながら、図面及び詳細な記載は、開示された特定の形態に本発明を制限するように意図されたものではなく、添付の特許請求の範囲によって規定されたような本発明の趣旨及び範囲内のすべての修正物、等価物、及び代替物に範囲が及ぶことが意図されていることを理解されたい。見出しは、体系的な目的でしかなく、本願明細書または特許請求の範囲を制限または解釈するために用いることを意図したものではないことを留意されたい。更に、「〜してもよい、〜の場合もある（may）」という用語は、義務の意味（すなわち、〜しなければならない（must））ではなく、許容の意味（すなわち、〜する可能性がある（having the potential to）、〜することが可能である（being able to））で本願を通して使用されることに留意されたい。「〜を含む（includ）」という用語及びその派生語は、「〜を含むが、それに限定されるものではない（including、but not limited to）」を意味する。「接続される（connected）」という用語は、「直接的または間接的に接続される（directly or indirectly connected）」を意味し、「結合される（coupled）」という用語は、「直接的または間接的に結合される（directly or indirectly coupled）」を意味する。
【発明を実施するための最良の形態】
【０００９】
動的設定（dynamic configuration）可能なキャッシュを有するチップマルチプロセッサ
以下、図１に示されたコンピュータシステム１０の一実施形態のブロック図を参照して説明する。図示した実施形態において、コンピュータシステム１０は、メモリ１４及び周辺デバイス１３Ａ〜１３Ｂに結合された処理ノード１２を含む。ノード１２は、ノードコントローラ２０に結合されたプロセッサコア１５Ａ〜１５Ｂを含む。ノードコントローラ２０は、メモリコントローラ２２及び複数のハイパートランスポート（登録商標）（ＨＴ：HyperTransport）インタフェース回路２４Ａ〜２４Ｃに更に結合される。プロセッサコア１５Ａ〜１５Ｂは、また、Ｌ３キャッシュモニタ８５及びコンフィギュレーションユニット５０に結合される共有のレベル３（Ｌ３）キャッシュメモリ６０にも結合される。ＨＴ回路２４Ｃは、周辺デバイス１６Ａに結合され、この周辺デバイス１６Ａは、デイジーチェーン構成（この実施形態では、ＨＴインタフェースを使用して）周辺デバイス１６Ｂに結合される。残りのＨＴ回路２４Ａ〜２４Ｂは、他のＨＴインタフェース（図示せず）を介して他の同様の処理ノード（図示せず）に接続されてもよい。メモリコントローラ２２はメモリ１４に結合される。一実施形態において、ノード１２は、図１に示す回路を備える単一の集積回路チップであってもよい。すなわち、ノード１２は、チップマルチプロセッサ（ＣＭＰ）であってもよい。任意のレベルの組み込みや、個別部品（discrete components）が使用されてもよい。処理ノード１２は、簡潔に示すために省略した様々な他の回路を含んでもよい。
【００１０】
一実施形態において、ノードコントローラ２０は、プロセッサコア１５Ａ及び１５Ｂを、他のノード及びメモリに相互接続するための様々な相互接続回路（図示せず）を含んでもよい。ノードコントローラ２０は、また、複数の値を表すように製造プロセス中に選択的に飛ばされてもよいヒューズセット（図示せず）を含んでもよい。いくつかの実施形態において、様々なノードの性質が、ヒューズによって選択されてもよい。これらの性質は、ノードの最大及び最小の動作周波数と、ノードの最大及び最小の電源電圧とを含む。更に、ヒューズは、プロセッサコア固有の性質を選択してもよい。
【００１１】
ノードコントローラ２０は、一般に、通信タイプ、通信のアドレス等に応じて、プロセッサコア１５Ａ〜１５Ｂ、メモリコントローラ２２、及びＨＴ回路２４Ａ〜２４Ｃの間で通信をルーティングするように構成することができる。一実施形態において、ノードコントローラ２０は、受信した通信がノードコントローラ２０によって書き込まれるシステムリクエストキュー（ＳＲＱ：System Request Queue）を含む。ノードコントローラ２０は、プロセッサコア１５Ａ〜１５Ｂ、ＨＴ回路２４Ａ〜２４Ｃ、及びメモリコントローラ２２の中の１以上の宛先にルーティングするためのＳＲＱから通信をスケジューリングしてもよい。ノード１２及びそのコンポーネントの動作については、以下に更に詳細に記述する。
【００１２】
一般にプロセッサコア１５Ａ〜１５Ｂは、コンピュータシステム１０の他のコンポーネント（例えば、周辺デバイス１６Ａ〜１６Ｂ、他のプロセッサコア（図示せず）、メモリコントローラ２２等）と通信するために、ノードコントローラ２０とのインタフェースを使用することができる。インタフェースは、任意の所望の方式でデザインされてもよい。キャッシュコヒーレント通信は、いくつかの実施形態において、インタフェース毎に規定されてもよい。一実施形態において、ノードコントローラ２０とプロセッサコア１５Ａ〜１５Ｂとの間のインタフェースでの通信は、ＨＴインタフェースで使用されているものに類似したパケットの形態であってもよい。他の実施形態において、任意の所望の通信が使用されてもよい（例えば、バスインタフェースのトランザクション、異なる形式のパケット等）。他の実施形態において、プロセッサコア１５Ａ〜１５Ｂは、ノードコントローラ２０とのインタフェースを共有してもよい（例えば、共有バスインタフェース）。一般に、プロセッサコア１５Ａ〜１５Ｂからの通信は、読み取り動作（メモリ位置やプロセッサコア外部のレジスタを読み取る動作）及び書き込み動作（メモリ位置や外部レジスタに書き込む動作）、プローブ（probe）への応答（キャッシュコヒーレントの実施形態の場合）、割り込み通知、及びシステム管理メッセージ等のリクエストを含んでもよい。
【００１３】
メモリ１４は、任意の適切なメモリデバイスを含んでもよい。例えば、メモリ１４は、１以上のＲＡＭＢＵＳ  ＤＲＡＭ（ＲＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ、スタティックＲＡＭなどを備えてもよい。メモリコントローラ２２は、メモリ１４とのインタフェースになるための制御回路を備えてもよい。更にメモリコントローラ２２は、メモリリクエスト等をキューに入れるためのリクエストキューを含んでもよい。
【００１４】
ＨＴ回路２４Ａ〜２４Ｃは、ＨＴリンクからパケットを受信し、ＨＴリンクにパケットを送信するための種々のバッファ及び制御回路を備えてもよい。ＨＴインタフェースは、パケットを送信するための単方向リンクを備える。各ＨＴ回路２４Ａ〜２４Ｃは、２つのこのようなリンク（１つは送信用、もう１つは受信用）に結合されてもよい。所与のＨＴインタフェースが、キャッシュコヒーレント方式（例えば、処理ノード間）又は非コヒーレント方式（例えば、周辺デバイス１６Ａ〜１６Ｂへ／から）で動作されてもよい。図示した実施形態において、ＨＴ回路２４Ａ〜２４Ｂは、使用していない状態であり、ＨＴ回路２４Ｃは、周辺デバイス１６Ａ〜１６Ｂへの非コヒーレントリンクを介して結合されている。
【００１５】
周辺デバイス１６Ａ〜１６Ｂは、任意のタイプの周辺デバイスであってもよい。例えば、周辺デバイス１６Ａ〜１６Ｂは、デバイスが結合されてもよい別のコンピュータシステムと通信するためのデバイスを含んでもよい（例えば、ネットワークインタフェースカード、コンピュータシステムのメイン回路基板に組み込まれたネットワークインタフェースに類似した回路又はモデム）。更に、周辺デバイス１６Ａ〜１６Ｂは、ビデオアクセラレータ、オーディオカード、ハード又はフロッピーディスクドライブコントローラ、ＳＣＳＩ（Small Computer Systems Interface）アダプタ及びテレフォニーカード、サウンドカード、及びＧＰＩＢやフィールドバスインタフェースカードなどの種々のデータ収集カードを含んでもよい。「周辺デバイス」という用語は、入出力（Ｉ／Ｏ）デバイスを包含するように意図されていることに留意されたい。
【００１６】
一般に、プロセッサコア１５Ａ〜１５Ｂが、所与の命令セットアーキテクチャに規定された命令を実行するようにデザインされた回路を含んでもよい。すなわちプロセッサコア回路は、命令セットアーキテクチャに規定された命令の結果をフェッチし、デコードし、実行し、格納するように構成されてもよい。例えば、一実施形態において、プロセッサコア１５Ａ〜１５Ｂは、ｘ８６アーキテクチャを実装してもよい。プロセッサコア１５Ａ〜１５Ｂは、スーパーパイプライン、スーパースカラ、又はこれらの組み合わせを含む所望の設定を備えてもよい。他の設定は、スカラ、パイプライン、非パイプライン等を含んでもよい。さまざまな実施形態は、アウトオブオーダ投機的実行又はインオーダ実行を採用してもよい。プロセッサコアは、上記の構成の任意のものと組み合わせて、１以上の命令又は他の機能をマイクロコーディング（microcoding）することを含んでもよい。さまざまな実施形態が、キャッシュ、変換索引バッファ（ＴＬＢ）などの種々の他のデザイン特徴を組み込んでもよい。
【００１７】
この実施形態では、ノード間及びノードと周辺デバイスとの間の通信用にＨＴインタフェースを使用しているが、他の実施形態で、いずれかの通信用に１以上の任意の所望のインタフェースを使用してもよいことに留意されたい。例えば、他のパケットベースのインタフェースが使用されてもよく、バスインタフェースが使用されてもよく、様々な標準周辺インタフェースが使用されてもよい（例えば、周辺機器相互接続（ＰＣＩ）、ＰＣＩエクスプレス等）。
【００１８】
設定可能なキャッシュ制御
図示した実施形態において、プロセッサコア１５Ａは、Ｌ２キャッシュ１７Ａを含む。同様に、プロセッサコア１５Ｂは、Ｌ２キャッシュ１７Ｂを含む。各Ｌ２キャッシュは、マイクロプロセッサに見られる任意のＬ２キャッシュを表すものであってもよい。しかしながら、一実施形態において、Ｌ２キャッシュ１７Ａ〜１７Ｂは、破線で示すように、多数の個別に制御可能なメモリブロックを使用して実装されてもよい。一実施例では、ブロックの各々が、個別に制御可能な電力網を含んでもよい。このように、メモリブロックの各々に供給された電力（ＶＤＤ）は、個別に除去されてもよく、また、場合によっては、個々の電力網によってブロックに供給された電圧が独立に低下されてもよい。
【００１９】
上述したＬ２キャッシュのように、図示した実施形態において、Ｌ３キャッシュ６０もまた、破線で示すように、多数の独立して制御可能なメモリブロックを使用して実装されてもよく、これらのブロックの各々は、独立して制御可能な電力網を含んでもよい。このように、メモリブロックの各々に供給された電力（ＶＤＤ）は、独立して除去されてもよく、また、場合によっては、個々の電力網によってブロックに供給されたＶＤＤが独立して低下されてもよい。
【００２０】
図示した実施形態において、Ｌ３キャッシュと同様に、Ｌ２キャッシュメモリ１７Ａ〜１７Ｂの各々は、Ｌ２キャッシュモニタユニット１８Ａ〜１８Ｂに結合され、且つコンフィギュレーションユニット１９Ａ〜１９Ｂに結合される。一実施形態において、各キャッシュモニタユニット（例えば、１８Ａ、１９Ａ、８５）は、このユニットに接続されたキャッシュメモリの各々の利用率をモニタするように構成されてもよい。例えば、Ｌ２キャッシュモニタユニット１８Ａは、Ｌ２キャッシュ１７Ａの利用率をモニタしてもよい。図示した実施形態において、各キャッシュモニタユニットは、現在のキャッシュ利用率を決定し、現在の利用率が所与の利用率の制限値内にあるかどうかを決定する回路（例えば、４０Ａ、４０Ｂ、８６）を含む。更に詳しく言えば、一例として、キャッシュモニタユニット１８Ａは、Ｌ２キャッシュ１７Ａの現在の利用率が、所定のしきい値より低いかを決定してもよい。低ければ、キャッシュモニタユニット１８Ａは、コンフィギュレーションユニット１９Ａに通知してもよい。
【００２１】
一実施形態において、コンフィギュレーションユニット１９Ａは、プログラム可能なレジスタ等の参照番号４２Ａで示す１以上のストレージを含み、このストレージは、例えば、Ｌ２キャッシュ１７Ａの様々なコンフィギュレーションプリファレンス（configuration preferences）及び状態（state）に対応する値を格納してもよい。ストレージ４２Ａ内に格納された値に応じて、コンフィギュレーションユニット１９Ａは、Ｌ２キャッシュモニタ１８Ａからの通知に応答して、Ｌ２キャッシュ１７Ａの独立して制御可能なメモリブロックの１以上を選択的に有効又は無効にするようにプログラムされてもよい。更に、ストレージ４２Ａ内に格納された値は、所与のブロックに対する電力網が、オフにされてもよいか又は電圧が低下されてもよいかを決定してもよい。例えば、プロセッサコアがコンテクストスイッチを実行する場合等に、Ｌ２キャッシュは、新しいスレッド又はコンテクストに対して使用されなくてもよい。しかしながら、Ｌ２キャッシュ１７Ａ内に格納されたデータが、コンテクストがスイッチバックされるときに準備が整うことが望ましい場合がある。このような場合、１以上のブロックの電圧を低下するだけで、格納されたデータを保持することはできるが、ブロックが再度有効にされ、電圧が通常に戻るまで、更なるアクセスが禁止又は無効にされてもよい。
【００２２】
コンフィギュレーションユニット５０は、キャッシュ内に格納されたコンフィギュレーション値に応じて、プロセッサコア１５Ａがプロセッサコア１５ＢのＬ２キャッシュ１７Ｂを共有できるように、及びその逆も可能になるように更に構成されてもよい。例えば、Ｌ２キャッシュ１７Ａの現在の利用率が上限のしきい値を超えていることを決定するキャッシュモニタ４０Ａに応じて、コンフィギュレーションユニット４２Ａは、Ｌ２キャッシュ１７Ｂへのアクセスをリクエストしてもよい。そのような場合、Ｌ２キャッシュ１７Ｂが無効になり、したがって共有可能なブロックがあれば、コンフィグレーションユニット４２Ｂは、共有アクセスを許容してもよい。
【００２３】
一実施形態において、コンフィギュレーションユニット１９Ａ、１９Ｂ、及び５０の各々のストレージ４２Ａ、４２Ｂ、及び５１は、デフォルトプリファレンス値を含んでもよい。他の形態として、プリファレンス値がストレージ内にプログラムされてもよい。これらのプリファレンス値は、対応するキャッシュモニタユニットからの通知の受信に応じてとりうるアクションを決定するために使用されてもよい。例えば、上述したように、コンフィギュレーションユニットは、電力を除去又は電圧を低下させることによって、対応するプロセッサコア内のＬ２キャッシュの部分及びＬ３キャッシュの部分を無効にするかを決定するために、これらの値を使用してもよい。更に、一実施形態において、コンフィギュレーションユニットは、Ｌ２又はＬ３キャッシュメモリの部分があれば、電源投入時にそれらを無効にすべきかを決定するために、これらの値を使用してもよい。
【００２４】
一実施形態において、ストレージ４２Ａ、４２Ｂ、及び５１は、ソフトウェアを使用してプログラムされてもよい。例えば、ストレージ４２Ａ、４２Ｂ、及び５１にアクセスするために、特別な命令が使用されてもよい。別の実施形態において、ストレージ４２Ａ、４２Ｂ、及び５１は、上述したように、ハードヒューズを使用してより恒久的にプログラムされてもよい。このような実施形態において、これらの値は、飛ばされたヒューズから読み取られてストレージ内に格納される。一実施形態において、ハードヒューズより、外部プログラミングが優先されてもよい。このような実施形態において、ストレージ４２Ａ、４２Ｂ、及び５１は、コンフィギュレーションポート４４Ａ、４４Ｂ、及び５４を各々介して、例えば、ジョイントテストアクショングループ（ＪＴＡＧ：Joint Test Action Group）ポートなどの外部ポートを介してプログラミングされてもよい。このようにしてハードヒューズコンフィギュレーションを優先させることを、ソフトヒューズを介したプログラミングとよぶこともある。
【００２５】
一実施形態において、キャッシュモニタ１８Ａ、１８Ｂ、及び８５は、各々のキャッシュで使用されているエントリ数及び各々のキャッシュへのアクセス頻度等のパラメータを用いて、現在の利用率を決定してもよい。一実施例において、使用されている所与のキャッシュのエントリ数は、キャッシュへの書き込みをカウントするためのカウンタ（明確に図示していないが、４０Ａ、４０Ｂ、及び８６の一部）を用いたプローブを使用することなく、書き込みが犠牲を発生したか否かをモニタすることによって決定されてもよい。犠牲が発生していなければ、書き込みは、新しいエントリをもたらしたことになる。犠牲が発生していれば、エントリ数は同じままである。このようにして、犠牲が発生していれば、書き込みはカウントされなくてもよい。更に、一実施例において、キャッシュがアクセスされる頻度は、例えば、飽和カウンタ（明確に図示していないが、回路４０Ａの一部）を使用して測定されてもよい。一実施形態において、飽和カウンタは、キャッシュがアクセスされるたびにインクリメントされてもよい。カウンタは、所定のクロック間隔でデクリメントされてもよいが、ゼロを下回ることはない。カウント値がある所定の値を超えたままであれば、キャッシュアクセス頻度が高く、すなわち、高利用率を示しているとされてもよい。これらの２つのパラメータから、より低い所定の利用値及びより高い所定の利用値が算出されてもよい。他の実施形態において、必要に応じて、キャッシュ利用率を決定するために他の機構が採用されてもよいことに留意されたい。
【００２６】
図１に示すコンピュータシステム１０は、処理ノード１２を１つ含んでいるが、他の実施形態が任意の数の処理ノードを実装してもよいことに留意されたい。同様に、様々な実施形態において、ノード１２等の処理ノードが、任意の数のプロセッサコアを含んでもよい。コンピュータシステム１０の様々な実施形態は、ノード１２当たり異なる数のＨＴインタフェース及びノードに結合された異なる数の周辺デバイス１６等を含んでもよい。
【００２７】
コンピュータシステム２０の別の実施形態のブロック図が図２に示されている。明確かつ簡潔に示すために、図１に示すものに対応するコンポーネントには同一の番号を付与している。図１のコンピュータシステム１０と同様に、図２のコンピュータシステム２０は、メモリ１４及び周辺デバイス１３Ａ〜１３Ｂに結合された処理ノード２２を含む。処理ノード２２は、図１のノード１２と同様の機能を含む。したがって、ここでは簡略するために、ノード１２に共通する機能については省略し、異なる機能について説明する。図２の処理ノード１２は、簡潔に示すために省略した様々な他の回路を含んでもよいことに留意されたい。
【００２８】
図２に示す実施形態において、処理ノード１２のように、処理ノード２２も、ノードコントローラ２０に結合されたプロセッサコア１５Ａ〜１５Ｂを含む。このノードコントローラ２０は、メモリコントローラ２２及び複数のハイパートランスポート（登録商標）（ＨＴ：HyperTransport）インタフェース回路２４Ａ〜２４Ｃに更に結合される。更に、プロセッサコア１５Ａ〜１５Ｂは、共有レベル３（Ｌ３）キャッシュメモリ６０にも結合される。しかしながら、Ｌ３キャッシュ６０は、キャッシュモニタ９５及びコンフィギュレーションユニット６５に結合される。一実施形態において、ノード２２は、図２に示す回路を備える単一の集積回路チップであってもよい。すなわち、ノード２２は、チップマルチプロセッサ（ＣＭＰ）であってもよい。
【００２９】
図示した実施形態において、図１の実施形態とは対照的に、Ｌ２キャッシュメモリ１７Ａ〜１７Ｂの各々は、キャッシュモニタユニット９５及びコンフィギュレーションユニット６５にも結合される。一実施形態において、キャッシュモニタユニット９５は、図１の記載とともに上述したような機能を利用しており、キャッシュモニタユニット９５に接続されたすべてのキャッシュメモリ（例えば、Ｌ２キャッシュ１７Ａ〜１７Ｂ及びＬ３キャッシュ６０）の利用率をモニタするように構成されてもよい。
【００３０】
一実施形態において、上記と同様に、コンフィギュレーションユニット６５は、参照番号６１で示したプログラム可能なレジスタ等の１以上のストレージを含み、これらのストレージは、例えば、Ｌ２キャッシュ１７Ａ〜１７Ｂ及びＬ３キャッシュ６０の様々なコンフィギュレーションプリファレンス及び状態に対応する値を格納してもよい。ストレージ６１内に格納された値に応じて、コンフィギュレーションユニット６５は、キャッシュモニタユニット９５からの通知に応答して、Ｌ２キャッシュ１７Ａ〜１７Ｂ及びＬ３キャッシュ６０の独立して制御可能なメモリブロックの１以上を選択的に有効又は無効にするようにプログラミングされてもよい。同様に、ストレージ６１内に格納された値は、所与のブロックに対する電力網がオフにされてもよいか又は電圧が低下されてもよいかを決定してもよい。ストレージ６１が、上述したストレージ４２Ａ、４２Ｂ、及び５１と同様にプログラミングされてもよいことに留意されたい。
【００３１】
更に、コンフィギュレーションユニット６０は、キャッシュ内に格納されたコンフィギュレーション値に応じて、プロセッサコア１５Ａがプロセッサコア１５ＢのＬ２キャッシュ１７Ｂを共有できるように、及びその逆も可能になるように更に構成されてもよい。例えば、Ｌ２キャッシュ１７Ａの現在の利用率が上限のしきい値を超えていることを決定するキャッシュモニタ９５に応答して、コンフィギュレーションユニット６５は、プロセッサコア１５ＡによるＬ２キャッシュ１７Ｂへのアクセスを有効にしてもよい。このような場合、コンフィギュレーションユニット６５は、Ｌ２キャッシュ１７Ｂが無効にされてそのために共有可能にされたブロックを有すれば、共有アクセスを許容してもよい。
【００３２】
図３は、処理ノード１２の一実施形態の動作を表すフローチャートを示す。図１及び図３を併せて参照すると、一実施形態において、ノード１２が最初に電源投入又はリセットから起動されると、コンフィギュレーションユニット４２Ａ内に格納されたコンフィギュレーション値は、Ｌ２キャッシュ１７Ａを設定するために読み取られて用いられてもよい。同様に、コンフィギュレーションユニット４２Ｂ内に格納されたコンフィギュレーション値は、Ｌ２キャッシュ１７Ｂを設定するために読み取られて用いられ、コンフィギュレーションユニット５０内に格納されたコンフィギュレーション値は、Ｌ３キャッシュ６０を設定するために読み取られて用いられてもよい。ノード１２の動作中、キャッシュモニタユニット１８Ａ、１８Ｂ、及び８５は、各自のキャッシュメモリの現在の利用率をモニタするように構成される（ブロック３００）。例えば、上述したように、キャッシュモニタユニット１８Ａ、１８Ｂ、及び８５は、各自のキャッシュの現在の利用率を決定するために、キャッシュアクセス頻度及びキャッシュエントリ使用をトラッキングしてもよい。
【００３３】
ブロック３０５において、現在の利用率に基づき、キャッシュモニタユニット８５は、各々の現在の利用率が所定の限度内にあるかを決定してもよい。一実施形態において、キャッシュモニタユニット８５は、Ｌ３キャッシュ６０の現在の利用率と、上限しきい値及び下限しきい値とを比較してもよい。
【００３４】
現在の利用率が所定のしきい値内であれば、キャッシュモニタユニット８５は、ブロック３００において上述したように、Ｌ３キャッシュ６０の利用率のモニタを継続する。しかしながら、現在の利用率が所定のしきい値内になく、下限しきい値より低い場合に（ブロック３０５）、キャッシュモニタユニット８５は、コンフィギュレーションユニット５０に通知を与えてもよい（ブロック３１０）。コンフィギュレーションユニット５０は、Ｌ３キャッシュ６０の１以上のブロックを選択的に無効にしてもよい（ブロック３１５）。一実施形態において、コンフィギュレーションユニット５０は、ストレージ５１内に格納されたコンフィギュレーションプリファレンスに従って、通知に応じてブロックを無効にしてもよい。例えば、上述したように、選択されたブロックから電力が除去又はより低い電圧まで電力が低減されてもよい。更に、一実施形態において、最初に選択されたブロックは、これらのブロックが最長経路の遅延を表しうるため、プロセッサコア１５Ａ〜１５Ｂから最も離れた位置のブロックであってもよい。選択されたブロックが無効にされると、キャッシュモニタ８５は、ブロック３００において上述したように、利用率のモニタを継続する。
【００３５】
ブロック３０５を再度参照すると、現在の利用率が所定のしきい値内になく、上限しきい値を超える場合に、キャッシュモニタユニット８５は、コンフィギュレーションユニット５０に通知を与えてもよい（ブロック３２０）。コンフィギュレーションユニット５０は、無効にされたブロックがあれば、Ｌ３キャッシュ６０の１以上の無効ブロックを選択的に有効にしてもよい（ブロック３１５）。一実施形態において、コンフィギュレーションユニット５０は、ストレージ５１に格納されたコンフィギュレーションプリファレンスに従ってブロックを有効にしてもよい。選択されたブロックが再度有効にされると、キャッシュモニタ８５は、ブロック３００において上述したように、利用率のモニタを継続する。
【００３６】
ブロック３３０において、現在の利用率に基づいて、キャッシュモニタユニット１８Ａ及び１８Ｂは、各々の現在の利用率が所定の限度内にあるかを決定してもよい。更に詳しく言えば、一実施形態において、キャッシュモニタユニット１８Ａ、１８Ｂは、Ｌ２キャッシュ１７Ａ〜１７Ｂの現在の利用率と、上限しきい値及び下限しきい値とを比較してもよい。
【００３７】
現在の利用率が所定のしきい値内にあれば、キャッシュモニタユニット１８Ａ、１８Ｂは、ブロック３００において上述したように、Ｌ２キャッシュ１７Ａ〜１７Ｂの利用率のモニタを継続する。しかしながら、いずれかのキャッシュの現在の利用率が所定のしきい値内になく、下限しきい値より低ければ（ブロック３３０）、適切なキャッシュモニタユニット１８Ａ〜１８Ｂが、コンフィギュレーションユニット１９Ａ〜１９Ｂへ通知を与えてもよい（ブロック３３５）。コンフィギュレーションユニット１９Ａ〜１９Ｂは、対応するＬ２キャッシュ１７Ａ〜１７Ｂの１以上のブロックを選択的に無効にしてもよい（ブロック３４０）。一実施形態において、コンフィギュレーションユニット１９Ａ〜１９Ｂは、ストレージ４２Ａ〜４２ｂ内に各々格納されたコンフィギュレーションプリファレンスに従って、通知に応答してブロックを無効にしてもよい。例えば、上述したように、選択されたブロックから、電力が除去又はより低い電圧まで電力が低減されてもよい。更に、一実施形態において、最初に選択されたブロックは、これらのブロックが最長経路の遅延を表しうるため、プロセッサコア１５Ａ〜１５ＢのＣＰＵ論理から最も離れた位置のブロックであってもよい。選択されたブロックが無効にされると、キャッシュモニタユニット１８Ａ〜１８Ｂは、ブロック３００において上述したように、利用率のモニタを継続する。
【００３８】
ブロック３３０を再度参照すると、現在の利用率が所定のしきい値内になく、上限しきい値を超えていれば、キャッシュモニタユニット１８Ａ〜１８Ｂは、コンフィギュレーションユニット１９Ａ〜１９Ｂへ通知を与えてもよい（ブロック３４５）。影響を受けたＬ２キャッシュにおいて任意のＬ２ブロックが無効にされる場合（ブロック３５０）、コンフィギュレーションユニット１９Ａ〜１９Ｂは、Ｌ２キャッシュ１７Ａ〜１７Ｂの１以上のブロックを選択的に有効にしてもよい（ブロック３５５）。一実施形態において、コンフィギュレーションユニット１９Ａ〜１９Ｂは、ストレージ４２Ａ〜４２Ｂ内の各々に格納されたコンフィギュレーションプリファレンスに従って、通知に応答してブロックを無効にしてもよい。例えば、上述したように、選択されたブロックから電力が除去又はより低い電圧まで電力が低減されてもよい。更に、一実施形態において、最初に選択されたブロックは、これらのブロックが最長経路の遅延を表しうるため、プロセッサコア１５Ａ〜１５Ｂから最も離れた位置のブロックであってもよい。選択されたブロックが無効にされると、キャッシュモニタユニット１８Ａ〜１８Ｂは、ブロック３００において上述したように、利用率のモニタを継続する。
【００３９】
しかしながら、影響を受けたＬ２キャッシュにおいて無効にされたブロックがなければ（ブロック３５０）、影響を受けたＬ２キャッシュ（すなわち、過度に利用されたＬ２キャッシュ）のコンフィギュレーションユニットは、他のプロセッサコアのコンフィギュレーションユニットから、他のコアのＬ２キャッシュを共有するためのアクセス許可をリクエストしてもよい。例えば、キャッシュモニタユニット１８Ｂが、Ｌ２キャッシュ１７Ｂの現在の利用率が上限しきい値を超えていることを決定すると、コンフィギュレーションユニット１９Ｂは、コンフィギュレーションユニット１９ＡからＬ２キャッシュ１７Ａへのアクセスをリクエストしてもよい。リクエストに応答して、コンフィギュレーションユニット１９Ａは、Ｌ２キャッシュ１７Ａが共有するブロックを無効にしたかを決定してもよい（ブロック３６０）。無効であれば、コンフィギュレーションユニット１９Ａは、Ｌ２キャッシュ１７Ａの無効にされたブロックを共有するために、プロセッサコア１５Ｂへのアクセスを与えてもよい（ブロック３６５）。無効にされたブロックは、再度有効にされてもよい。ブロック３００において上述したような動作が進行する。
【００４０】
以下、図４及び図５の記載により、単一プロセッサコアを含むマイクロプロセッサの状況下にある設定可能なキャッシュメモリの更なる実施形態が提供される。
【００４１】
動的に設定可能なキャッシュを有する単一マイクロプロセッサ
図４を参照すると、単一プロセッサコア及び設定可能なキャッシュメモリを含むマイクロプロセッサの一実施形態のブロック図が示されている。マイクロプロセッサ４１５は、Ｌ１キャッシュ４７５、Ｌ２キャッシュ４１７、及びＬ３キャッシュ４６０に結合されたプロセッサコア論理４５０を含む。マイクロプロセッサ４１５は、また、Ｌ２キャッシュ４１７及びＬ３キャッシュ４６０に結合されたキャッシュモニタユニット４１８を含む。更に、マイクロプロセッサ４１５は、キャッシュモニタ４１８及びＬ１キャッシュ４７５、Ｌ２キャッシュ４１７、及びＬ３キャッシュ４６０の各々に結合されたコンフィギュレーションユニット４１９を含む。マイクロプロセッサ４１５は、簡潔に示すために省略したさまざまな他の回路を含んでもよい。
【００４２】
図示した実施形態において、キャッシュモニタ４１８及びコンフィギュレーションユニット４１９の機能は、図２及び図３に関連して上述したＬ２キャッシュモニタ９５及びコンフィギュレーションユニット６５の機能と同様である。したがって、簡略するためにここではこれらの記載を省略する。
【００４３】
図５を参照すると、図４のマイクロプロセッサの一実施形態の動作について記載したフローチャートが図示されている。図４及び図５を併せて参照すると、一実施形態において、マイクロプロセッサ４１５が最初に電源投入或いはリセットから起動されると、コンフィギュレーションユニット４１９のストレージ４４２内に格納されたコンフィギュレーション値は、Ｌ２キャッシュ４１７を設定するために読み取られて用いられてもよい。同様に、コンフィギュレーションユニット４１９内に格納されたコンフィギュレーション値は、Ｌ３キャッシュ４６０を設定するために読み取られて用いられてもよい。マイクロプロセッサ４１５の動作中、キャッシュモニタユニット４１８は、各キャッシュメモリの現在の利用率をモニタするように構成される（ブロック５００）。例えば、上述したように、キャッシュモニタユニット４１８は、各キャッシュの現在の利用率を決定するために、キャッシュアクセス頻度及びキャッシュエントリ使用をトラッキングしてもよい。
【００４４】
ブロック５０５において、現在の利用率に基づいて、キャッシュモニタユニット４１８は、各キャッシュの現在の利用率が所定の限度内にあるかを決定してもよい。一実施形態において、キャッシュモニタユニット４１８は、Ｌ２キャッシュ４１７の現在の利用率及びＬ３キャッシュ４６０の現在の利用率と、上限しきい値及び下限しきい値とを比較してもよい。
【００４５】
現在の利用率が所定のしきい値内であれば、キャッシュモニタユニット４１８は、ブロック５００において上述したように、Ｌ２キャッシュ４１７及びＬ３キャッシュ４６０の利用率のモニタを継続する。しかしながら、現在の利用率が所定のしきい値内になく、下限しきい値より低ければ（ブロック５０５）、キャッシュモニタユニット４１８は、コンフィギュレーションユニット４１９に通知を与えてもよい（ブロック５１０）。コンフィギュレーションユニット４１９は、Ｌ２キャッシュ４１７及びＬ３キャッシュ４６０のいずれかの１以上のブロックを選択的に無効にしてもよい（ブロック５１５）。一実施形態において、コンフィギュレーションユニット４１９は、通知に応答して、ストレージ４４２内に格納されたコンフィギュレーションプリファレンスに従い、ブロックを無効にしてもよい。例えば、上述したように、選択されたブロックから電力が除去又はより低い電圧まで電力が低減されてもよい。更に、一実施形態において、最初に選択されたブロックは、これらのブロックが最長経路の遅延を表しうるため、プロセッサコア論理４５０から最も離れた位置のブロックであってもよい。選択されたブロックが無効にされると、キャッシュモニタ４１８は、ブロック５００において上述したように、利用率のモニタを継続する。
【００４６】
ブロック５０５を再度参照して、現在の利用率が所定のしきい値内になく、上限しきい値を超えれば、キャッシュモニタユニット４１８は、コンフィギュレーションユニット４１９に通知を与えてもよい（ブロック３２０）。コンフィギュレーションユニット４１９は、無効にされたブロックがあれば、Ｌ２キャッシュ４１７及びＬ３キャッシュ４６０のいずれかの１以上の無効ブロックを選択的に有効にしてもよい（ブロック５２５）。一実施形態において、コンフィギュレーションユニット４１９は、ストレージ４４２に格納されたコンフィギュレーションプリファレンスに従ってブロックを有効にしてもよい。選択されたブロックが再度有効にされると、キャッシュモニタ４１８は、ブロック５００において上述したように、利用率のモニタを継続する。
【００４７】
上記と同様に、一実施形態において、ストレージ４４０及び４４２は、ソフトウェアを用いてプログラムされてもよい。例えば、ストレージ４４０及び４４２にアクセスするために、特別な命令が用いられてもよい。別の実施形態において、ストレージ４４０及び４４２は、上述したように、ハードヒューズを用いてより恒久的にプログラムされてもよい。このような実施形態において、これらの値は、飛ばされたヒューズから読み取られて、ストレージ内に格納される。一実施形態において、ハードヒューズより、外部プログラミングが優先されてもよい。このような実施形態において、ストレージ４４０及び４４２は、コンフィギュレーションポート４４Ａを介して、例えば、ジョイントテストアクショングループ（ＪＴＡＧ：Joint Test Action Group）ポート等の外部ポートを介してプログラミングされてもよい。このようにしてハードヒューズコンフィギュレーションより優先させることを、ソフトヒューズを介したプログラミングとよぶこともある。
【００４８】
上述した実施形態において、Ｌ３キャッシュメモリが示されていることに留意されたい。しかしながら、他の実施形態が、Ｌ３キャッシュを含まないことも意図されている。Ｌ３キャッシュがない場合でも、Ｌ２キャッシュのコンフィギュレーション可能性は低下しない。
【００４９】
いくつかの実施形態を詳細に上述してきたが、上記開示を完全に認識することで、当業者であれば多数の変形例及び修正例が明らかになるであろう。特許請求の範囲は、このようなすべての変形例及び修正例を含むように解釈されるべきであることが意図されている。
【産業上の利用可能性】
【００５０】
本発明は、一般に、マイクロプロセッサ及びチップマルチプロセッサに用いられるキャッシュメモリの再設定に応用可能でありうる。
【図面の簡単な説明】
【００５１】
【図１】マルチコア処理ノード及び設定可能なキャッシュメモリを含むコンピュータシステムの一実施形態のブロック図である。
【図２】マルチコア処理ノード及び設定可能なキャッシュメモリを含むコンピュータシステムの別の実施形態のブロック図である。
【図３】処理ノードの一実施形態の動作を記載したフローチャートである。
【図４】単一プロセッサコア及び設定可能なキャッシュメモリを含むマイクロプロセッサの一実施形態のブロック図である。
【図５】図４のマイクロプロセッサの一実施形態の動作を記載したフローチャートである。
【図１】
2008515095.tif 000003
【図２】
2008515095.tif 000004
【図３】
2008515095.tif 000005
【図４】
2008515095.tif 000006
【図５】
2008515095.tif 000007
【手続補正書】
【提出日】平成18年7月28日(2006.7.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサ（４１５）のキャッシュメモリ（４１７、４６０）を設定する方法であって、
前記キャッシュメモリの現在の利用率をモニタするステップと、
前記現在の利用率が、所定の利用値より低いかを決定するステップと、
前記現在の利用率が前記所定の利用値より低いという決定に応じて、前記キャッシュメモリの１以上の部分への供給電圧レベルを制御して、前記キャッシュメモリの１以上の部分を選択的に無効にするステップと、を含む、
方法。
【請求項２】
前記所定の利用値を設定可能なストレージ（４４２）内に格納するステップを更に含む、
請求項１記載の方法。
【請求項３】
前記利用率が、所定の利用値より低いかを決定するステップが、前記所定の利用値と前記現在の利用率とを比較するステップを含む、
請求項１記載の方法。
【請求項４】
前記キャッシュメモリにおいて使用されているエントリ数を決定するとともに、前記キャッシュメモリへのアクセス頻度を決定することにより、前記現在の利用値を決定するステップを更に含む、
請求項１記載の方法。
【請求項５】
前記キャッシュメモリにおいて使用されているエントリ数の決定が、犠牲を発生させる前記キャッシュメモリへの書き込み数をモニタするステップを含む、
請求項４記載の方法。
【請求項６】
前記キャッシュメモリへのアクセス頻度の決定が、カウンタを使用して、前記キャッシュメモリへのアクセス数をカウントするステップを含む、
請求項４記載の方法。
【請求項７】
キャッシュメモリ（４１７）（４６０）と、
前記キャッシュメモリに結合され、前記キャッシュメモリの現在の利用率をモニタするとともに、前記現在の利用率が、所定の利用値より低いかを決定するように構成されたキャッシュモニタユニット（４１８）と、
前記キャッシュモニタユニット及び前記キャッシュメモリに結合されたコンフィギュレーションユニット（４１９）と、を備え、
前記キャッシュコンフィギュレーションユニットは、前記現在の利用率が、前記所定の利用値より低いことを決定する前記キャッシュモニタユニットに応じて、前記キャッシュメモリの１以上の部分への供給電圧レベルを制御して、前記キャッシュメモリの１以上の部分を選択的に無効にするように構成される、
プロセッサ（４１５）。
【請求項８】
前記キャッシュメモリの１以上の部分への前記供給電圧の制御が、通常の動作電圧レベルより低い電圧へ前記供給電圧を低減するステップを含む、
請求項１記載の方法。
【請求項９】
前記キャッシュメモリの１以上の部分への前記供給電圧の制御が、前記電圧を除去するステップを含む、
請求項１記載の方法。
【請求項１０】
前記所定の利用値を格納するための設定可能なストレージを更に備える、
請求項７記載のプロセッサ。
【国際調査報告】
2008515095.tif 000008
2008515095.tif 000009
2008515095.tif 000010