(57)【要約】  キャッシュサイズを動的に制御するための方法および装置を開示する。一実施形態では、方法は、プロセッサの動作点を第１の動作点から第２の動作点に変更することと、動作点の変更に応えて、キャッシュメモリの１つ以上のウェイからパワーを選択的に取り除くこととを含む。本方法は、キャッシュメモリの１つ以上のウェイからパワーを取り除いた後、プロセッサ内で１つ以上の命令を処理することをさらに含み、前記処理することは、パワーが取り除かれなかったキャッシュメモリの１つ以上のウェイにアクセスすることを含む。【選択図】図２
2013526739.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサが動作点を第１の動作点から第２の動作点に変更したのに応えて、キャッシュメモリの１つ以上のウェイのパワーを選択的に変化させることと、
前記キャッシュメモリの前記１つ以上のウェイのパワーを変化させた後、前記プロセッサ内で１つ以上の命令を処理することと、を含み、
前記処理することは、パワーが変化された前記キャッシュメモリの１つ以上のウェイにアクセスすることを含む、方法。
【請求項２】
１つ以上のキャッシュウェイのパワーを変化させることは、前記１つ以上のキャッシュウェイからパワーを取り除くことを含む、請求項１に記載の方法。
【請求項３】
前記動作点を変更することは、前記プロセッサが動作する動作電圧およびクロック周波数を変更することを含む、請求項１に記載の方法。
【請求項４】
前記動作点を変更することは、高パフォーマンス動作モードから節電モードに変更することを含む、請求項１に記載の方法。
【請求項５】
前記動作点の変更に応えて、前記キャッシュメモリの複数の現在アクティブなウェイの半分からパワーを取り除くことをさらに含む、請求項１に記載の方法。
【請求項６】
前記プロセッサの前記動作点を前記第２の動作点から第３の動作点に変更することと、
前記動作点の変更に応えて、キャッシュメモリの１つ以上の追加のウェイからパワーを選択的に取り除くことと、をさらに含む、請求項１に記載の方法。
【請求項７】
プロセッサの前記動作点を前記第３の動作点から前記第１の動作点または第２の動作点のうちの１つに変更することと、
前記動作点が前記第１の動作点から前記第２の動作点に、または前記第２の動作点から前記第３の動作点に変更された際にパワーが取り除かれた、１つ以上のウェイにパワーを選択的に印加することと、をさらに含む、請求項６に記載の方法。
【請求項８】
前記プロセッサの前記動作点を前記第２の動作点から第３の動作点に変更することと、
ＣＩＰＳ（１秒間にコミットされる命令）値を読み出すことと、
閾値およびガードバンド値の合計を計算することと、
前記ＣＩＰＳ値を前記閾値および前記合計と比較することと、
前記ＣＩＰＳ値が前記閾値未満である場合に、前記第３の動作点への変更に応えて、キャッシュメモリの１つ以上の追加のウェイからパワーを選択的に取り除くことと、
前記ＣＩＰＳ値が前記合計を超える場合に、前記キャッシュメモリのすべてのウェイにパワーを供給することと、をさらに含み、
前記ＣＩＰＳ値が、前記閾値を超え、かつ前記合計未満である場合、前記キャッシュメモリの追加のウェイは、パワーをオンまたはオフにされない、請求項５に記載の方法。
【請求項９】
１つ以上の追加のプロセッサに、前記キャッシュメモリの１つ以上のウェイがパワーを遮断されたことを示す通知を送信することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記キャッシュメモリの１つ以上のウェイからパワーが選択的に取り除かれてから経過した時間量を判定することと、
前記時間量を第１の時間閾値と比較することと、
前記時間量が前記第１の時間閾値未満である場合に、前記キャッシュメモリの追加のウェイがパワーを遮断されることを防止することと、をさらに含む、請求項１に記載の方法。
【請求項１１】
前記時間量を第２の時間閾値と比較することと、
前記第２の時間量が前記第２の時間閾値未満である場合に、前記キャッシュメモリの追加のウェイがパワーを投入されることを防止することと、をさらに含む、請求項１０に記載の方法。
【請求項１２】
少なくとも１つの実行ユニットが動作点を第１の動作点から第２の動作点に変更するのに応えて、キャッシュメモリの前記複数のウェイの第１のサブセットのパワーを選択的に変化させるように構成される、パワー管理ユニットを備える、プロセッサであって、
前記プロセッサの前記少なくとも１つの実行ユニットは、前記複数のウェイの前記第１のサブセットのパワーを選択的に変化させた後、パワーが変化された前記複数のウェイの第２のサブセットの１つ以上のウェイにアクセスするように構成される、プロセッサ。
【請求項１３】
前記第１のサブセットのウェイのパワーを変化させることは、前記第１のサブセットのウェイからパワーを取り除くことを含む、請求項１２に記載のプロセッサ。
【請求項１４】
前記パワー管理ユニットは、前記プロセッサが動作する動作電圧およびクロック周波数を変更させることによって、前記プロセッサの前記動作点を変更するようにさらに構成される、請求項１２に記載のプロセッサ。
【請求項１５】
前記プロセッサは、高パフォーマンスモードおよび節電モードで動作するように構成され、前記動作点を変更することは、高パフォーマンス動作モードから節電モードに変更することを含む、請求項１２に記載のプロセッサ。
【請求項１６】
前記パワー管理ユニットは、前記動作点の変更に応えて、前記キャッシュメモリの複数のアクティブなウェイの半分のパワーを遮断するように構成される、請求項１２に記載のプロセッサ。
【請求項１７】
前記パワー管理ユニットは、前記プロセッサが前記動作点を前記第２の動作点から第３の動作点に変更するのに応えて、キャッシュメモリの１つ以上の追加のウェイからパワーを選択的に取り除くようにさらに構成される、請求項１２に記載のプロセッサ。
【請求項１８】
前記パワー管理ユニットは、前記プロセッサの前記動作点が前記第３の動作点から前記第１の動作点または第２の動作点のうちの１つに変更するのに応えて、パワーが以前に取り除かれた１つ以上のウェイに、パワーを選択的に印加するように構成される、請求項１７に記載のプロセッサ。
【請求項１９】
前記パワー管理ユニットは、１つ以上の追加のプロセッサに、前記キャッシュメモリの１つ以上のウェイがパワーを遮断されたことを示す通知を送信するようにさらに構成される、請求項１２に記載のプロセッサ。
【請求項２０】
第１の閾値および第２の閾値の合計を計算することと、
作業負荷指標値を前記第１の閾値および前記第２の閾値と比較することと、
プロセッサの作業負荷指標値が第１の閾値未満である場合に、キャッシュメモリの複数のウェイのサブセットからパワーを選択的に取り除くことと、
前記作業負荷指標値が第２の閾値を超える場合に、前記キャッシュメモリの任意の以前にパワーが遮断されたウェイにパワーを投入することと、を含み、
前記作業負荷指標値が、前記第１の閾値を超え、かつ前記第２の閾値未満である場合、前記キャッシュメモリのウェイへのパワーが変化される、方法。
【請求項２１】
前記キャッシュメモリを含むプロセッサの前記作業負荷指標値を判定することをさらに含む、請求項２０に記載の方法。
【請求項２２】
前記第２の閾値は、前記第１の閾値およびガードバンド値の合計である、請求項２０に記載の方法。
【請求項２３】
前記作業負荷指標値は、ＣＩＰＳ（１秒間にコミットされる命令）値である、請求項２０に記載の方法。
【請求項２４】
前記キャッシュメモリの１つ以上のウェイからパワーが選択的に取り除かれてから経過した時間量を判定することと、
前記時間量を第１の時間閾値と比較することと、
前記時間量が前記第１の時間閾値未満である場合に、前記キャッシュメモリの追加のウェイがパワーを遮断されることを防止することと、をさらに含む、請求項２０に記載の方法。
【請求項２５】
前記第１のサブセットのウェイがパワーを遮断される場合に、１つ以上の追加のプロセッサに、第１の通知であって、前記第１のサブセットのウェイの前記パワーの遮断を示す、第１の通知を送信することと、
前記キャッシュメモリの任意の以前にパワーが遮断されたウェイへのパワーの投入に応えて、前記１つ以上の追加のプロセッサに、第２の通知であって、前記キャッシュメモリの前記以前にパワーが遮断されたウェイがパワーを投入されたことを示す、第２の通知を送信することと、をさらに含む、請求項２０に記載の方法。
【請求項２６】
プロセッサのパフォーマンス状態を第１のパフォーマンス状態から第２のパフォーマンス状態に変更することであって、前記プロセッサのコアを第１の電圧および第１のクロック周波数で動作させることを含む、前記第１のパフォーマンス状態から、前記コアを前記第１の電圧未満の第２の電圧および前記第１のクロック周波数未満の第２のクロック周波数で動作させることを含む、前記第２のパフォーマンス状態に変更することと、
前記パフォーマンス状態の変更に応えて、キャッシュメモリの１つ以上のウェイからパワーを選択的に取り除くことと、
前記キャッシュメモリの前記１つ以上のウェイからパワーを取り除いた後、前記プロセッサの前記コア内で１つ以上の命令を処理することと、を含み、
前記処理することは、前記コアが、パワーが取り除かれなかった前記キャッシュメモリの１つ以上のウェイにアクセスすることを含む、方法。
【請求項２７】
前記プロセッサの前記パフォーマンス状態を前記第２のパフォーマンス状態から第３のパフォーマンス状態に変更することであって、前記コアを第３の電圧および第３のクロック周波数で動作させることを含み、前記第３の電圧は、前記第２の電圧未満であり、前記第３のクロック周波数は、前記第２のクロック周波数未満である、第３のパフォーマンス状態に変更することと、
前記第２のパフォーマンス状態から前記第３のパフォーマンス状態への変更に応えて、前記キャッシュメモリの１つ以上の追加のウェイからパワーを選択的に取り除くことと、
前記１つ以上の追加のウェイからパワーを取り除いた後、前記プロセッサの前記コア内で１つ以上の命令を処理することと、をさらに含み、
前記処理することは、前記コアが、パワーが取り除かれなかった前記キャッシュメモリの１つ以上のウェイにアクセスすることを含む、請求項２６に記載の方法。
【請求項２８】
前記プロセッサの前記パフォーマンス状態を前記第３のパフォーマンス状態から前記第１のパフォーマンス状態または第２のパフォーマンス状態のうちの１つに変更することと、
以前にパワーが遮断された前記キャッシュウェイの１つ以上に選択的にパワーを投入することと、をさらに含む、請求項２７に記載の方法。
【請求項２９】
前記キャッシュウェイの前記１つ以上からパワーが選択的に取り除かれてからの時間量を、第１の滞留要件および第２の滞留要件と比較することをさらに含み、前記方法は、前記時間量が前記第１の滞留要件未満である場合に、いずれの追加のキャッシュウェイもパワーを遮断されることを防止することと、前記時間量が前記第２の滞留要件未満である場合に、いずれの追加のキャッシュウェイもパワーを投入されることを防止することと、をさらに含む、請求項２６に記載の方法。
【請求項３０】
コンピュータシステム上で実行可能なプログラムによって動作されるデータ構造を備える、コンピュータ可読媒体であって、
前記プログラムは、前記データ構造上で、前記データ構造によって記述される回路を含む集積回路を加工するプロセスの一部を実施するように動作し、
前記データ構造内に記述される前記回路は、少なくとも１つの実行ユニットが動作点を第１の動作点から第２の動作点に変更するのに応えて、キャッシュメモリの複数のウェイの第１のサブセットのパワーを選択的に変化させるように構成される、パワー管理ユニットを含み、
前記少なくとも１つの実行ユニットは、前記複数のウェイの前記第１のサブセットのパワーを選択的に変化させた後、パワーが変化された前記複数のウェイの第２のサブセットの１つ以上のウェイにアクセスするように構成される、コンピュータ可読媒体。
【請求項３１】
前記データ構造は、以下の種類のデータ、
ＨＤＬ（高級設計言語）データ、
ＲＴＬ（レジスタ転送レベル）データ、
グラフィックデータシステム（ＧＤＳ）ＩＩデータ、
のうちの１つ以上を備える、請求項２５に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに関し、より具体的には、プロセッサ内のキャッシュメモリに関する。
【関連技術】
【０００２】
キャッシュメモリは、コンピュータシステムプロセッサのパフォーマンスに深く関係する。プロセッサ技術が発達し、パフォーマンスに対する要求が高まるにつれて、キャッシュメモリの数および容量も高まっている。いくつかのプロセッサは、単一のキャッシュまたは単一レベルのキャッシュメモリを有する場合があり、一方その他は、複数レベルのキャッシュを有する場合がある。いくつかのキャッシュメモリは、データを記憶するために使用される場合があり、一方、他のキャッシュメモリは、命令を記憶するために使用される場合があり、一方、いくつかは、両方を記憶する場合がある。また、他の種類の情報（例えば、アドレス変換）を記憶するためのキャッシュメモリも、いくつかのプロセッサで使用される。
【０００３】
キャッシュメモリは、それらのプロセッサコアの実行ユニットに対する近接度に基づき、レベルで定義される場合がある。例えば、レベル１（Ｌ１）キャッシュは、実行ユニット（単数または複数）に最も近いキャッシュであってもよく、レベル２（Ｌ２）キャッシュは、実行ユニット（単数または複数）に２番目に近くてもよく、レベル３（Ｌ３）キャッシュは、実行ユニット（単数または複数）に３番目に近くてもよい。実行される命令の情報（例えば、オペランド）にアクセスする際、実行ユニットは、最初に、Ｌ１キャッシュに問い合わせてもよい。情報がＬ１キャッシュ内に記憶されていない場合（すなわち、キャッシュミス）、Ｌ２キャッシュが問い合わせられるというように続いてもよい。情報がいずれのキャッシュにも記憶されていない場合、情報は、主記憶装置等の他の記憶装置から、またはディスク記憶装置からアクセスされてもよい。メモリおよびディスク記憶装置アクセスに関連する待ち時間が、キャッシュアクセスに関連する待ち時間より大幅に長いため、キャッシュメモリは、より多くのデータおよび／または命令を収容するように、より大きくなった。しかしながら、これらのより大きいキャッシュメモリは、それらのより小さい対応物より多くのパワーを消費し得る。したがって、いくつかのプロセッサは、プロセッサが待機状態である際、キャッシュメモリの一部またはすべてへのパワーを取り除いてもよい。
【発明の概要】
【０００４】
キャッシュサイズを動的に制御するための方法および装置が開示される。一実施形態では、方法は、プロセッサの動作点を第１の動作点から第２の動作点に変更することと、動作点の変更に応えて、キャッシュメモリの１つ以上のウェイからパワーを選択的に取り除くこととを含む。本方法は、キャッシュメモリの１つ以上のウェイからパワーを取り除いた後、プロセッサ内で１つ以上の命令を処理することをさらに含み、前記処理することは、パワーが取り除かれなかったキャッシュメモリの１つ以上のウェイにアクセスすることを含む。
【０００５】
一実施形態では、プロセッサは、少なくとも１つの実行ユニットと、複数のウェイを有するキャッシュメモリと、パワー管理ユニットとを含む。パワー管理ユニットは、プロセッサが動作点を第１の動作点から第２の動作点に変更するのに応えて、複数のウェイの第１のサブセットからパワーを選択的に取り除くように構成される。少なくとも１つの実行ユニットは、複数のウェイの第１のサブセットからパワーを選択的に取り除いた後、パワーが取り除かれなかった複数のウェイの第２のサブセットの１つ以上のウェイにアクセスするように構成される。
【０００６】
別の実施形態では、方法は、命令を実行するプロセッサのＣＩＰＳ（１秒間にコミットされる命令）値を判定することと、閾値およびガードバンド値の合計を計算することと、ＣＩＰＳ値を閾値および合計と比較することとを含む。本方法は、ＣＩＰＳ値が閾値未満である場合に、キャッシュメモリの複数のウェイのサブセットからパワーを選択的に取り除くことと、ＣＩＰＳ値が合計を超える場合に、複数のウェイのそれぞれのパワーがオンにされるように、キャッシュメモリのいずれの以前にパワーが遮断されたウェイのパワーもオンにすることとをさらに含む。ＣＩＰＳ値が閾値を超える場合、または合計未満である場合、キャッシュメモリの追加のウェイは、パワーをオンまたはオフにされない。
【０００７】
キャッシュサイズを動的に制御するための方法の別の実施形態は、プロセッサのパフォーマンス状態を第１のパフォーマンス状態から第２のパフォーマンス状態に変更することを含み、第１のパフォーマンス状態は、プロセッサのコアを第１の電圧および第１のクロック周波数で動作させることを含む。第２のパフォーマンス状態は、コアを第１の電圧未満の第２の電圧および第１のクロック周波数未満の第２のクロック周波数で動作させることを含む。本方法は、パフォーマンス状態の変更に応えて、キャッシュメモリの１つ以上のウェイからパワーを選択的に取り除くことと、キャッシュメモリの１つ以上のウェイからパワーを取り除いた後、プロセッサのコア内で１つ以上の命令を処理することとをさらに含み、前記処理することは、コアが、パワーが取り除かれなかったキャッシュメモリの１つ以上のウェイにアクセスすることを含む。
【図面の簡単な説明】
【０００８】
本発明の他の態様は、以下の「発明を実施するための形態」を読み、以下の添付の図面を参照すると明らかとなる。
【０００９】
【図１】プロセッサの一実施形態のブロック図である。
【図２】プロセッサの別の実施形態のブロック図である。
【図３】キャッシュメモリの実施形態に連結されるパワー管理ユニットの一実施形態を図示する、ブロック図である。
【図４】パワー管理ユニットの一実施形態のブロック図である。
【図５】プロセッサの異なる動作点のキャッシュメモリの動的制御を図示する、一連のブロック図である。
【図６】動的キャッシュ制御の方法の一実施形態のフロー図である。
【図７】動的キャッシュ制御の方法の別の実施形態のフロー図である。
【図８】マルチコアプロセッサの一実施形態のブロック図である。
【図９】コンピュータシステムの一実施形態のブロック図である。
【図１０】キャリア媒体の一実施形態のブロック図である。
【００１０】
本発明は、様々な修正および代替形態を容易に生じることができるが、その具体的な実施形態が、一例として図面に示され、本明細書において詳細に記載される。しかしながら、図面およびその説明は、本発明を開示される特定の形態に限定することは意図されず、むしろ、本発明は、添付の「特許請求の範囲」によって定義される本発明の主旨および範囲内である、すべての修正、均等物、および変形を網羅することを理解されたい。
【発明を実施するための形態】
【００１１】
プロセッサ実施形態の概略：
図１は、プロセッサ１００の一実施形態のブロック図である。プロセッサ１００は、システムメモリ２００内に記憶されている命令を実行するように構成される。これらの命令の多くは、システムメモリ２００内に記憶されているデータに作用する。システムメモリ２００は、コンピュータシステム全体を通して物理的に分散されていてもよく、および／または１つ以上のプロセッサ１００によってアクセスされてもよいことに留意する。
【００１２】
図示される実施形態では、プロセッサ１００は、レベル１（Ｌ１）命令キャッシュ１０６と、Ｌ１データキャッシュ１２８とを含んでもよい。プロセッサ１００は、命令キャッシュ１０６に連結されるプリフェッチユニット１０８を含んでもよい。ディスパッチユニット１０４は、命令キャッシュ１０６から命令を受信し、動作をスケジューラ（単数または複数）１１８にディスパッチするように構成されてもよい。スケジューラ１１８の１つ以上は、ディスパッチユニット１０４からディスパッチされる動作を受信し、動作を１つ以上の実行ユニット（単数または複数）１２４に発行するように連結されてもよい。実行ユニット（単数または複数）１２４は、１つ以上の整数ユニットと、１つ以上の浮動小数点ユニットと、１つ以上の読み込み／記憶ユニットとを含んでもよい。実行ユニット（単数または複数）１２４によって生成される結果は、１つ以上の結果バス１３０（複数の結果バスが可能であり、予想されるが、ここでは明確化のために、単一の結果バスが示されている）に出力されてもよい。これらの結果は、続いて発行される命令のオペランド値として使用されてもよく、および／またはレジスタファイル１１６に記憶されてもよい。リタイアキュー１０２は、スケジューラ（単数または複数）１１８およびディスパッチユニット１０４に連結されてもよい。リタイアキュー１０２は、それぞれの発行された動作がいつリタイアされ得るかを判定するように構成されてもよい。
【００１３】
一実施形態では、プロセッサ１００は、ｘ８６アーキテクチャ（インテルアーキテクチャ−３２、またはＩＡ−３２としても知られる）と互換性があるように設計されてもよい。別の実施形態では、プロセッサ１００は、６４ビットアーキテクチャと互換性があってもよい。他のアーキテクチャと互換性があるプロセッサ１００の実施形態も同様に予想される。
【００１４】
また、プロセッサ１００は、多くの他の構成要素も含んでもよいことに留意する。例えば、プロセッサ１００は、命令スレッドの実行における分岐を予測するように構成される、分岐予測ユニット（図示せず）を含んでもよい。また、プロセッサ１００は、メモリ２００に対する読み出しおよび書き込みを制御するように構成される、メモリコントローラも含んでもよい。
【００１５】
命令キャッシュ１０６は、ディスパッチユニット１０４がフェッチするための命令を記憶してもよい。命令コードは、記憶するために、プリフェッチユニット１０８を通してシステムメモリ２００からコードをプリフェッチすることによって、命令キャッシュ１０６に提供されてもよい。命令キャッシュ１０６は、様々な構成（例えば、セットアソシアティブ、フルアソシアティブ、または直接マップ）で実現されてもよい。
【００１６】
また、プロセッサ１００は、レベル２（Ｌ２）キャッシュ１４０も含んでもよい。命令キャッシュ１０６が、命令を記憶するために使用されてもよく、データキャッシュ１２８が、データ（例えば、オペランド）を記憶するために使用されてもよい一方、Ｌ２キャッシュ１４０は、命令およびデータを記憶するために使用される、ユニファイドであってもよい。ここでは明確に示されていないが、また、いくつかの実施形態は、レベル３（Ｌ３）キャッシュも含んでもよい。一般的に、キャッシュレベルの数は、実施形態ごとに様々であってもよい。
【００１７】
プリフェッチユニット１０８は、命令キャッシュ１０６内に記憶するために、システムメモリ２００から命令コードをプリフェッチしてもよい。プリフェッチユニット１０８は、種々の具体的なコードプリフェッチ技法およびアルゴリズムを採用してもよい。
【００１８】
ディスパッチユニット１０４は、実行ユニット（単数または複数）１２４が実行可能な動作、ならびにオペランドアドレス情報、即値データ、および／または置換データを出力してもよい。いくつかの実施形態では、ディスパッチユニット１０４は、特定の命令を実行ユニット（単数または複数）１２４内で実行可能な動作に復号するための復号回路（図示せず）を含んでもよい。単純な命令は、単一の動作に対応してもよい。いくつかの実施形態では、より複雑な命令は、複数の動作に対応してもよい。レジスタの更新を伴う動作が復号されると、レジスタファイル１１６内のレジスタ位置は、投機的レジスタ状態を記憶するために予約されてもよい（代替の実施形態では、各レジスタの１つ以上の投機的レジスタ状態を記憶するために、リオーダバッファが使用されてもよく、レジスタファイル１１６は、各レジスタのコミットされたレジスタ状態を記憶してもよい）。レジスタマップ１３４は、レジスタリネーミングを促進するために、ソースオペランドおよびデスティネーションオペランドの論理レジスタ名を物理レジスタ番号に変換してもよい。レジスタマップ１３４は、レジスタファイル１１６内のどのレジスタが現在割り振られているか、および割り振られていないかを追跡してもよい。
【００１９】
図１のプロセッサ１００は、アウトオブオーダ実行をサポートしてもよい。リタイアキュー１０２は、レジスタ読み出しおよび書き込み動作の元のプログラムシーケンスを追跡し、投機的命令実行および分岐予測ミス回復を可能にし、厳密な例外を促進してもよい。いくつかの実施形態では、また、リタイアキュー１０２は、投機的レジスタ状態のデータ値記憶（例えば、リオーダバッファと同様の）を提供することによって、レジスタリネーミングもサポートしてもよい。他の実施形態では、リタイアキュー１０２は、リオーダバッファと同様に機能し得るが、いかなるデータ値記憶も提供しなくてもよい。動作がリタイアされる際、リタイアキュー１０２は、投機的レジスタ状態を記憶するためにもはや必要ではないレジスタファイル１１６内のレジスタの割り振りを解除し、どのレジスタが現在開放されているかを示す信号をレジスタマップ１３４に提供してもよい。これらの状態をもたらした動作が有効化されるまで、レジスタファイル１１６内（または、代替の実施形態では、リオーダバッファ内）の投機的レジスタ状態を維持することによって、分岐予測が不正確である場合に、レジスタファイル１１６内の投機的に実行された動作の結果が、予測ミスされたパスと共に無効化されてもよい。
【００２０】
一実施形態では、レジスタファイル１１６の所与のレジスタは、実行された命令のデータ結果を記憶するように構成されてもよく、また、実行される命令によって更新されてもよいし、１つ以上のフラグビットも記憶してもよい。フラグビットは、後続の命令の実行において重要であり得る様々な種類の情報（例えば、加算または乗算演算の結果として、繰り上げまたはオーバーフロー状況が存在することを示す）を伝達してもよい。アーキテクチャ上、フラグを記憶するフラグレジスタが定義されてもよい。したがって、所与のレジスタへの書き込みは、論理レジスタおよびフラグレジスタの両方を更新してもよい。すべての命令が、１つ以上のフラグを更新し得るわけではないことに留意されたい。
【００２１】
レジスタマップ１３４は、動作のデスティネーションオペランドとして指定される特定の論理レジスタ（例えば、設計されるレジスタまたはマイクロアーキテクチャ上指定されるレジスタ）に、物理レジスタを割り当ててもよい。ディスパッチユニット１０４は、レジスタファイル１１６が、所与の動作においてソースオペランドとして指定された論理レジスタに割り当てられた、以前に割り振られた物理レジスタを有すると判定してもよい。レジスタマップ１３４は、その論理レジスタに最も最近割り当てられた物理レジスタのタグを提供してもよい。このタグは、レジスタファイル１１６内のオペランドのデータ値にアクセスするため、または結果バス１３０上での結果転送を介してデータ値を受信するために使用されてもよい。オペランドがメモリ位置に対応する場合、オペランド値は、読み込み／記憶ユニット（図示せず）を通して、結果バス上で提供されてもよい（結果転送および／またはレジスタファイル１１６内への記憶のために）。オペランドデータ値は、スケジューラ（単数または複数）１１８のうちの１つによって動作が発行される際に、実行ユニット（単数または複数）１２４に提供されてもよい。代替の実施形態では、オペランド値は、動作がディスパッチされる際、対応するスケジューラ１１８に提供されてもよい（動作が発行される際に、対応する実行ユニット１２４に提供される代わりに）ことに留意する。
【００２２】
本明細書で使用される場合、スケジューラは、動作を実行する準備ができているときを検出し、準備ができている動作を１つ以上の実行ユニットに発行する、デバイスである。例えば、予約ステーションは、一種のスケジューラであってもよい。実行ユニット毎に独立した予約ステーションが提供されてもよく、または動作が発行される中央予約ステーションが提供されてもよい。他の実施形態では、リタイアメントまで動作を保有する、中央スケジューラが使用されてもよい。各スケジューラ１１８は、実行ユニット１２４への発行を待っている、いくつかの保留動作の動作情報（例えば、動作、ならびにオペランド値、オペランドタグ、および／または即値データ）を保持することが可能であってもよい。いくつかの実施形態では、各スケジューラ１１８は、オペランド値記憶を提供しなくてもよい。代わりに、各スケジューラは、実行ユニット（単数または複数）１２４がオペランド値を読み出せるようになる（レジスタファイル１１６または結果バス１３０から）ときを判定するために、発行される動作およびレジスタファイル１１６内の利用可能な結果を監視してもよい。
【００２３】
いくつかの実施形態では、その中に示されているキャッシュの１つ以上は、特定のキャッシュウェイのパワーを選択的に遮断または投入することによって、動作中に、動的にサイズ変更されてもよい。プロセッサは、所与のキャッシュのウェイのうちのいくつかがパワーを遮断された後でさえ、アクティブ状態で動作し続けてもよい。残りのキャッシュウェイ（すなわち、パワーが依然として提供されているキャッシュウェイ）は、命令の実行中に、１つ以上の実行ユニット（単数または複数）１２４によってアクセスされてもよい。したがって、プロセッサ１００が待機状態であるときのみキャッシュウェイのパワーを遮断する代わりに、プロセッサ１００が依然としてアクティブ状態のままであることを可能にする一方で、いくつかのキャッシュウェイがパワーを遮断され得る。これは、その結果、プロセッサが活動を継続することを可能にする一方で、パワー消費を低減し得る。図２から開始して、ここで、プロセッサ１００の様々な実施形態、および節電するためにキャッシュサイズを動的に制御するための方法がより詳細に記載される。
【００２４】
図２は、プロセッサの別の実施形態のブロック図である。図１にも含まれる特定のユニットは、ここで同一に指定され、図２の実施形態において、同一または同様の機能を実施してもよい。示される実施形態では、プロセッサ１００は、上述される様々なユニットに加えて、パワー管理ユニット１５０と、パフォーマンス状態／モードコントローラ１３５（以後、「状態コントローラ１３５」）と、メモリコントローラ１４５とを含む。示される実施形態では、また、クロック制御回路１３６および可変電圧調節器１３７も、これらのユニットがチップ上（すなわち、プロセッサ１００と同一のＩＣダイ上）に実装される実施形態が可能であり、予想されるが、プロセッサ１００に連結されるように示されている。例えば、クロック制御および電圧調節／制御の機能は、状態コントローラ１３５に実装されてもよい。
【００２５】
示される実施形態では、プロセッサ１００は、所与の時間にどのウェイがパワーをオンにされるかを選択的に制御することによってサイズを動的に制御可能である、Ｌ２キャッシュ１４０に連結される、パワー管理ユニットを含む。Ｌ２キャッシュ１４０の選択されるウェイは、実行ユニット（単数または複数）１２４の作業負荷が減少する際に、パワーを遮断されてもよい。同様に、多数のキャッシュウェイがパワーを遮断される際、Ｌ２キャッシュ１４０の選択されるウェイは、実行ユニット（単数または複数）１２４の作業負荷が増加する場合に、パワーを投入されてもよい。Ｌ１キャッシュが同様に制御可能である実施形態が可能であり、予想され、実施例が、以下により詳細に記載される。
【００２６】
Ｌ２キャッシュ１４０の特定のウェイがパワーを遮断されるか否かの判定において、パワー管理ユニット１５０によって、多数の様々な測定基準の１つ以上が使用されてもよい。プロセッサの動作点は、測定基準のうちの少なくとも１つによって定義されてもよく、測定基準の組み合わせによって定義されてもよい。図２の実施形態では、プロセッサ１００は、それぞれが特定の動作電圧および特定の動作周波数によって定義され得る、様々なパフォーマンス状態（「Ｐ状態」）で動作するように構成される。プロセッサ１００は、節電モード（例えば、バッテリパワーで動作する際に節電が重要視される）およびパフォーマンスモード（パフォーマンスを最大限にすることが重要視される）で動作するようにさらに構成されてもよい。以下の表１は、様々なＰ状態および動作モードの組み合わせに対して行われ得る、様々なキャッシュサイズ決定アクションを図示する。
【表１】
2013526739.tif 000003
【００２７】
表１は、上述されるプロセッサ１００の実施形態、ならびにプロセッサの他の実施形態に適用されてもよい。さらに、上記の表１に示される特定のスキームが異なる、他のプロセッサ実施形態が可能であり、予想される。この特定の実現形態では、Ｐ０およびＰ１状態（２つの最高動作電圧および２つの最高クロック周波数からなる）で動作する際、プロセッサ１００が節電モードで動作しているか、またはパフォーマンスモードで動作しているかに関わらず、Ｌ２キャッシュ１４０のすべてのウェイがオンにされてもよい。Ｐ２状態で動作している際、パフォーマンスモードで動作している場合は、すべてのキャッシュウェイがオンにされてもよく、一方、節電モードで動作している場合は、１／２の数のキャッシュウェイがオフにされてもよい。オンのままであるキャッシュウェイは、実行ユニット（単数または複数）１２４が、その中に記憶されているデータおよび／または命令を取り出すためにアクセス可能であってもよい。プロセッサ１００がＰ３状態で動作している際、節電モードである場合は、１／４のキャッシュウェイのパワーがオンのままであってもよく、一方、パフォーマンスモードである場合は、１／２のキャッシュウェイがパワーをオンにされてもよい。Ｐ４およびＰ５状態では、パフォーマンスモードで動作している場合、１／４のキャッシュウェイがパワーをオンにされてもよい。節電モードで動作している際、Ｐ４状態である場合は、１／４のキャッシュウェイがパワーをオンにされてもよく、一方、Ｐ５状態である際は、キャッシュは完全にパワーを遮断されてもよい。
【００２８】
上記の表１に示される情報は、パワー管理ユニット１５０内の記憶構造内に記憶されてもよい。状態コントローラ１３５は、Ｐ状態、パフォーマンスモード、両方に関する情報、および／または他の情報を含んでもよい、プロセッサ１００の特定の動作点を示す情報を、パワー管理ユニット１５０に提供してもよい。また、パワー管理ユニット１５０も、リタイアされる、またはリタイアされた命令に関する情報をリタイアキュー１０２から受信するように連結されてもよい。パワー管理ユニット１５０は、もしあれば、どのキャッシュサイズ決定アクションが行われるかを判定するために、状態コントローラ１３５および／またはリタイアメントキュー１０２から受信される情報を使用してもよい。他の実施形態では、パワー管理ユニット１５０は、上述される他のユニットの機能を組み込んでもよく、そのため、動作点およびリタイアされた命令に関する情報を、外部ソースから受信するというよりはむしろ生成することが可能であってもよい。
【００２９】
示される実施形態では、状態コントローラ１３５は、プロセッサ１００の動作点を制御するために、制御アクションを実施するように構成される。他の場所の中でも特に、状態コントローラ１３５によってリタイアキュー１０２および／または実行ユニット（単数または複数）１２４から受信される情報が、プロセッサ１００の作業負荷を判定するために使用されてもよい。例えば、状態コントローラ１３５は、所与の時間間隔の間にリタイアされる命令の数および／または種類を追跡してもよい。同様に、コントローラ１３５は、実行のために発行された命令の数および種類に関する情報を、実行ユニット（単数または複数）１２４から受信してもよい。ここには明確に示されていないが、また、状態コントローラ１３５は、実行されるようスケジュールされる命令についての情報を提供し得る、図１に示されるスケジューラ（単数または複数）１１８にも連結されてもよい。様々な実施形態では、状態コントローラ１３５は、他の処理ノード（例えば、マルチコアプロセッサ内の他のプロセッサコア、および／またはマルチプロセッサコンピュータ内の他のプロセッサ）から、それらの特定の動作点に関する情報を受信してもよい。
【００３０】
状態コントローラ１３５によって様々なソースから受信される情報は、作業負荷、利用可能なパワー、パワーおよび周波数制限等の要因に基づき、プロセッサの適切な動作点を判定するために使用されてもよい。プロセッサ１００（またはマルチコア実施形態の場合では、プロセッサ１００のコア１０１）の特定の動作点が判定されると、状態コントローラ１３５は、状態変更を達成する様々なアクションを実施してもよい。この特定の実施形態では、状態コントローラ１３５は、動作電圧および／またはクロック周波数を変更して、プロセッサ１００の動作点を変更するよう（上述されるように、他の実施形態では、これらの機能は、状態コントローラ１３５に組み込まれてもよいが）、クロックコントローラ１３６および可変電圧調節器１３７に信号を提供してもよい。加えて、信号は、動作点のいずれかの変更に関する情報をパワー管理ユニット１５０に提供するために、状態コントローラ１３５から提供されてもよい。さらに、パワー管理ユニット１５０は、もしあれば、Ｌ２キャッシュ１４０の動的サイズ決定に関してどのアクションが行われたかの情報を、状態コントローラ１３５に提供してもよい。
【００３１】
キャッシュのパワー管理：
ここで、図３を参照すると、キャッシュメモリの実施形態に連結される、パワー管理ユニットの一実施形態を図示するブロック図が示されている。示される実施形態では、パワー管理ユニット１５０は、キャッシュ１４０に連結される。この特定の実施例では、キャッシュ１４０は、１セット当たり（すなわち、グループ当たり）２つのウェイを有する、１６ウェイセットアソシアティブキャッシュである。しかしながら、ウェイの数、セット（グループ）の数、またはグループ当たりのウェイの数がここに示されるものとは異なる、他の実施形態が可能であり、予想される。さらに、また、直接マップキャッシュまたはフルアソシアティブキャッシュも、本明細書に記載される様々な方法および装置実施形態での使用が可能であり、予想される。
【００３２】
示される実施形態では、パワー管理ユニット１５０は、複数のＰＭＯＳ（ｐ型金属酸化物半導体）トランジスタ１５２のそれぞれに連結される。示される実施形態では、ＰＭＯＳトランジスタ１５２は、大域パワーノードＶＤＤを対応する局所電圧ノード１５４に連結するため、またはそれから切断するためのスイッチとしての機能を果たす。他の実施形態では、ここに示される単一のＰＭＯＳトランジスタ１５２の代わりに、パスゲート等のデバイス／回路が使用されてもよい。一般的に、大域電圧ノードを局所電圧ノードに連結するため、およびそれから切断するために、任意の好適なスイッチングデバイスが実装されてもよい。また、スイッチングデバイスが、局所接地ノードを大域接地ノードに連結するため、それから切断するために使用される実施形態が可能であり、予想されることにも留意する。大域電圧ノードを局所電圧ノードと連結し、それから切断する、スイッチングデバイスと併せて、またはその代替として、そのようなスイッチングデバイスが使用されてもよい。
【００３３】
ＰＭＯＳトランジスタ１５２のそれぞれは、そのそれぞれのゲート端子がローで駆動される際にオンにされてもよい。本実施形態では、パワー管理ユニット１５０は、実施形態に示される２つのウェイの各グループへのパワー遮断信号（「ＰｗｒＤｎセット０」、「ＰｗｒＤｎセット１」等）を駆動するように構成される。特定のグループのウェイがパワーを遮断される場合、パワー管理ユニット１５０によって、その対応するパワー遮断信号がハイに駆動されてもよい。対応するＰＭＯＳトランジスタ１５２は、そのゲート端子へのハイ信号に応えて、作動停止されてもよい。ＰＭＯＳトランジスタ１５２が作動停止される際、大域パワーノードＶＤＤからのパワーは、対応するグループのウェイに連結される局所パワーノードから切断される。したがって、示される実施形態では、パワー管理ユニット１５０は、他のグループから独立したグループのうちの任意の１つのパワーを選択的に遮断してもよい。動作点の変更に応えて、多数のグループ（例えば、総数の１／２）のパワーを遮断する際、パワー管理ユニット１５０は、隣接するグループのパワーを遮断してもよく、隣接しないグループのパワーを選択的に遮断してもよく、またはこれらの２つの任意選択の組み合わせを実施してもよい。
【００３４】
図４は、パワー管理ユニットの一実施形態のブロック図である。示される実施形態では、パワー管理ユニット１５０は、様々なソースから情報を受信するように連結され、もしあれば、どのキャッシュサイズ変更アクションが行われるかを判定するように構成される、決定ユニット１５６を含む。加えて、決定ユニット１５６は、様々なユニットによって内部で使用されてもよい、ステータスの変更（例えば、キャッシュサイズ変更アクション）を示す信号を提供するように構成される。本実施形態では、外部ソースから情報を受信するように構成されるパワー管理ユニット１５０のユニットには、活動モニタ１６４、ＣＩＰＳ（１秒間にコミットされる命令）ユニット１５４、状態変更検出器１５２、および決定ユニット１５６が挙げられる。通知ユニット１６０およびスイッチングユニット１５８は、パワー管理ユニット１５０の外部ユニットに情報を提供するように構成される。加えて、パワー管理ユニット１５０は、滞留タイマ１６６と、ダウン比較器１６８と、アップ比較器１７０とを含む。
【００３５】
示される実施形態では、状態変更検出器１５２は、状態コントローラ１３５から動作点の変更を示す信号を受信するように連結される。動作点情報は、Ｐ状態、モード（すなわち、節電またはパフォーマンス）、およびプロセッサ１００の動作点に関する任意の他の関連情報を含んでもよい。状態変更検出器１５２は、動作点が変更されたことを示す信号（単数または複数）（「動作点変更」）を決定ユニット１５６に提供してもよく、ならびに、新しい動作点を識別する情報を提供する。
【００３６】
決定ユニット１５６は、キャッシュサイズ変更アクションが必要であるか否かを、必要であれば、どの具体的なアクションを行うかと共に示すために、処理ノード（コア１０１またはプロセッサ１００全体であってもよい）の状態に関する情報を使用してもよい。加えて、また、決定ユニット１５６は、マルチコアプロセッサ実施形態および／またはマルチプロセッサコンピュータシステム内の他の処理ノードの状態に関する情報も使用してもよい。そのようなシステムは、１つのノードが、より少ないパワーを消費する状態に入る際、作業負荷需要を満足するために、必要に応じて、別のノードがより多くのパワーを消費し得るように、処理ノードの間でパワーを再度割り振ってもよい。
【００３７】
決定ユニット１５６が、選択されるウェイまたはセットのパワーを遮断することによって、またはパワーを投入することによって、キャッシュがサイズ変更されると判定する場合、１つ以上の信号（「キャッシュサイズ変更」）が、スイッチングユニット１５８に送信されてもよい。これらの信号の受信に応えて、スイッチングユニット１５８は、選択されるキャッシュウェイもしくはセットのパワーを投入するため、またはパワーを遮断するための１つ以上の信号（「Ｐｗｒ  Ｄｎ  ［Ｎ：０］」）を生成してもよい。対応する実施例として図３の実施形態を使用して、スイッチングユニット１５８は、ＰＭＯＳトランジスタ１５２のゲート上で受信されてもよい、１つ以上のアクティブハイ信号をアサートし、それによってキャッシュウェイの対応するセットのパワーを遮断してもよい。選択されるキャッシュウェイまたはセットがパワーを投入される場合、スイッチングユニット１５８は、アクティブロー信号をアサート解除し、対応するＰＭＯＳトランジスタ１５２のゲート端子上にローをもたらし、したがって、それらの作動およびキャッシュウェイの対応するセットのパワーの投入をもたらしてもよい。ここで、本実施例は、１つの可能な実施形態でしかなく、そのような信号は、キャッシュウェイ／セットを大域電圧供給ノードおよび／または接地ノードに連結する、それから切断するために使用されるスイッチングデバイスに従って、アクティブハイまたはアクティブローであってもよいことが留意される。
【００３８】
キャッシュがサイズ変更されると、決定ユニット１５６は、変更の通知（「キャッシュステータス変更」）を通知ユニット１６０に送信してもよい。今度は、通知ユニット１６０が、他の処理ノードに、変更の詳細（例えば、パワーが遮断もしくは投入されたキャッシュウェイまたはセットの数）、キャッシュの種類（例えば、Ｌ１、Ｌ２、Ｌ３等）等に関する情報を含む、それらに変更を知らせる情報（「ステータス変更通知」）を送信してもよい。別の実施形態では、以下により詳細に記載されるように、通知ユニット１６０は、プロセッサ１００の様々なユニットの間でパワーを割り振るために使用されてもよい、キャッシュのサイズ変更に関する情報をコントローラに送信してもよい。
【００３９】
キャッシュサイズ変更の通知を通知ユニット１６０に送信することに加えて、また、決定ユニット１５６は、同一の情報を滞留タイマ１６６にも提供してもよい。滞留タイマ１６６の場合では、情報は、信号のリセットとして使用される単一の信号に削減されてもよい。信号を受信すると、滞留信号が実行開始されてもよく、キャッシュサイズ変更からの現在の時間を提供してもよい。時間は、第１および第２の時間閾値と比較されてもよい。これらの閾値は、キャッシュサイズ変更アクションの最小滞留要件を示してもよい。一方の閾値は、サイズ拡大変更アクションの最小滞留（すなわち、より多くのキャッシュウェイ／セットがパワーを投入されるとき）を確立してもよく、一方、もう一方の閾値は、サイズ縮小変更アクションの最小滞留（すなわち、より多くのキャッシュウェイ／セットがパワーを遮断されるとき）を確立してもよい。
【００４０】
アップ比較器１７０は、追加のウェイ／セットが、再度パワーを投入される前に、時間値を現在のキャッシュサイズの最小滞留を確立する閾値と比較してもよい。ダウン比較器１６８は、追加のウェイ／セットが、再度パワーを遮断される前に、時間値を現在のキャッシュサイズの最小滞留を確立する閾値と比較してもよい。場合によっては、時間閾値は、同一であってもよく、したがって、ここに示される２つの比較器の代わりに、単一の比較器が使用されてもよい。また、閾値がプログラム可能であり得る、および／またはプロセッサまたは処理ノードの具体的な動作点に基づいて変更し得る実施形態も可能であり、予想される。例えば、バッテリ（または節電モード）で動作している際、サイズ拡大変更アクションの最小滞留は、パフォーマンスモードで動作している際より長くてもよい。同様に、キャッシュのサイズ縮小変更の最小滞留は、節電モードで、パフォーマンスモードより小さくてもよい。パフォーマンスモードで動作している際、最小滞留が、サイズ拡大変更アクションでより短く、サイズ縮小変更アクションでより長い、逆の場合が真であってもよい。
【００４１】
示される実施形態では、決定ユニット１５６は、アップ比較器１７０から第１の信号（「Ｕｐ  Ｒｅｓ」）を受信し、ダウン比較器１６８から第２の信号（「Ｄｏｗｎ  Ｒｅｓ」）を受信するように連結される。これらの信号は、それらのそれぞれの比較器が、滞留時間１６６から受信される時間値がそれらのそれぞれの閾値を超えると判定する際にアサートされてもよい。決定ユニット１５６は、これらの信号のうちの一方または両方がアサートされない場合に、さらなるキャッシュサイズ変更アクションを禁止してもよい。例えば、そうでなければ追加のキャッシュウェイ／セットのパワーを投入することによるキャッシュのサイズ変更をもたらし得る動作点変更が実施される場合、アップ比較器１７０がＵｐ  Ｒｅｓ信号をアサートするまで、サイズ変更アクションが禁止され、それによって、追加のウェイ／セットのパワーをオンにする前に、現在のキャッシュサイズの最小滞留が確立されたことを示してもよい。同様に、そうでなければ追加のウェイ／セットのパワーを遮断することによるキャッシュのサイズ変更をもたらし得る動作点変更が実施される場合、決定ユニット１５６は、ダウン比較器１６８が追加のサイズ縮小変更アクションの最小滞留が確立されたことを示すまで、キャッシュのサイズ縮小変更を禁止してもよい。アップ比較器１７０およびダウン比較器１６８によって判定される滞留要件を使用することによって、決定ユニット１５６は、キャッシュのスラッシング、すなわち、キャッシュの過度に頻繁なサイズ変更を防止してもよい。そのようなスラッシングは、過剰なパワー消費、パワー供給ノイズの増加をもたらし得、プロセッサ計算パフォーマンスを悪化させ得る。
【００４２】
示される実施形態では、パワー管理ユニット１５０は、命令実行活動を監視するように構成される、活動モニタ１６４を含む。本実施形態では、活動モニタ１６４は、実行ユニット（単数または複数）１２４（例えば、図２の）から情報を受信するように連結される。実行ユニット（単数または複数）１２４から受信される情報を使用して、活動モニタは、所定の時間間隔にわたる、対応する処理ノード（例えば、この場合ではコア１０１）の平均活動を計算してもよい。活動モニタ１６４は、実行される命令についての情報、パイプラインのストールについての情報、または実行ユニット（単数または複数）の活動を示す任意の他の種類の情報を受信してもよい。そのような情報は、キャッシュがサイズ変更され得るか否かの判定において有用であり得る。例えば、活動モニタ１６４が、各時間間隔において、パイプラインストールに著しい時間量が費やされると判定する場合、キャッシュミスに関連する追加の待ち時間が、パフォーマンス全体への大きい影響を有する可能性がより小さいため、キャッシュをサイズ縮小変更することが可能であり得る。一方、活動モニタ１６４が、大きい数の命令が各間隔中に実行される（比較的フルのパイプラインを示す）と判定する場合、キャッシュミスによる高待ち時間および見込まれるパイプラインストールがパイプライン効率に悪影響を及ぼす可能性があるため、キャッシュをサイズ拡大変更することが望まれ得る。
【００４３】
活動モニタ１６４によって生成される活動情報は、決定ユニット１５６（「平均ノード活動」）に提供されてもよく、キャッシュをサイズ変更することが必要であるか否かの判定において使用されてもよい。いくつかの実施形態では、またはいくつかの動作モードでは、この情報は、キャッシュサイズ変更動作の必要性を判定するために、決定ユニット１５６によって排他的に使用されてもよい。他の実施形態では、活動モニタ１６４から受信される情報は、決定ユニット１５６によって受信される他の情報と併せて使用されてもよい。
【００４４】
また、パワー管理ユニット１５０は、結果がレジスタにコミットされる、１秒間の間隔の間に実行される命令の数を示す情報を受信し得る、ＣＩＰＳユニット１５４も含む。上述されるように、ＣＩＰＳは、「１秒間にコミットされる命令」であり、したがって、プロセッサの作業負荷を示す。示される実施形態では、ＣＩＰＳユニット１５４は、リタイアメントキュー（例えば、図１および図２のリタイアメントキュー１０２）からリタイアされる命令に関する情報を受信するように連結される。ＣＩＰＳユニット１５４は、所定の間隔内にリタイアされる命令の数を判定してもよく、ＣＩＰＳ値を外挿するために、この値を使用してもよい。したがって、ＣＩＰＳ値は、命令が実行され、実際にリタイアされる速度を示し得る（例えば、分岐予測ミスにより、投機的に実行され、リタイアされない、いくつかの命令とは対照的に）。ＣＩＰＳ値は、決定ユニット１５６がキャッシュサイズ変更を実施するか否かを判定するために使用可能である追加の情報を生成するために、他の値と併せて使用されてもよい。この特定の実施形態では、ＣＩＰＳユニット１５４は、比較の基準として閾値および合計値の両方を使用して、閾値およびガードバンド（またはヒステリシス）値の合計を計算してもよい。ＣＩＰＳユニット１５４は、第１の信号（「ＣＩＰＳ＞閾値＋ガードバンド」）、第２の信号（「ＣＩＰＳ＜閾値」）をアサートしてもよく、または信号をアサートしなくてもよい。決定ユニット１５６は、第１および第２の信号を受信するように連結され、所与の間隔の間に、これらの信号のうちのいずれかがアサートされたか否かを判定してもよい。一実施形態では、以下の表２に基づくキャッシュサイズ変更アクションが行われてもよい。
【表２】
2013526739.tif 000004
【００４５】
上記の表２には、決定ユニット１５６の一実施形態が、キャッシュサイズ変更アクションを実施するか否かの判定、ならびにどのアクションであるかの判定において、Ｐ状態およびＣＩＰＳ値の両方を考慮し得る、実施例が示されている。この特定の実施形態では、各Ｐ状態は、そのＰ状態に特有の閾値と関連付けられる。しかしながら、すべてのＰ状態に対して単一の閾値が使用される実施形態、ならびに追加の閾値（例えば、パフォーマンスモードで動作している際の所与の状態の第１の閾値、および節電モードで動作している際の所与の状態の第２の閾値）が可能である実施形態が可能であり、予想される。
【００４６】
本実施形態では、Ｐ状態０およびＰ状態１では、キャッシュサイズは、そのフルサイズのままである。処理ノードが、Ｐ状態２で動作している場合、さらなる状態変更のない、キャッシュサイズ変更動作を判定するために、判定されるＣＩＰＳ値が使用されてもよい。ＣＩＰＳ値が合計（すなわち、閾値２＋ガードバンド）を超える場合、キャッシュは、その以前のサイズに関わらず、そのフルサイズにサイズ拡大変更されてもよい。この場合、ＣＩＰＳ値は、リタイアされる命令の高速、したがって、高作業負荷または数値計算限界作業負荷を示す。ＣＩＰＳ値が閾値（閾値２）未満である場合、キャッシュは、フルサイズキャッシュから１／２キャッシュにサイズ変更されてもよい。ＣＩＰＳ値が閾値は超えるが、合計値未満である場合、本実施例では、キャッシュはサイズ変更されない。Ｐ状態３およびＰ状態４のキャッシュサイズ変更アクションを判定するためのアルゴリズムは、本実施形態のＰ状態２と同様であり、主として、使用される閾値、および結果としてもたらされる、使用される合計値が異なる。ＣＩＰＳユニット１５４によって利用されてもよい、アルゴリズムの追加の実施形態が、以下により詳細に記載される。
【００４７】
キャッシュがサイズ変更されると、決定ユニット１５６は、変更の通知（「キャッシュステータス変更」）を通知ユニット１６０に送信してもよい。今度は、通知ユニット１６０が、他の処理ノードに、変更の詳細（例えば、パワーが遮断もしくは投入されたキャッシュウェイまたはセットの数）、キャッシュの種類（例えば、Ｌ１、Ｌ２、Ｌ３等）等に関する情報を含む、それらに変更を知らせる情報（「ステータス変更通知」）を送信してもよい。
【００４８】
また、追加の要因には、特定のプログラムまたは命令のシーケンスが、プロセッサ限界またはメモリ限界であるか否かの判定も挙げられる。数値計算限界アプリケーションは、頻繁なキャッシュアクセスを要求し得、待ち時間耐性がない場合があり、したがって、最大キャッシュサイズで、より高いパフォーマンスを達成し得る。メモリ限界アプリケーションは、より長い実行ストールを伴う、頻繁なメモリアクセス（キャッシュ内に記憶されている情報の高回転をもたらす）を実施し得、したがって、キャッシュミスによるペナルティが予期されるため、より長い待ち時間耐性であり得る。したがって、メモリ限界アプリケーションでは、キャッシュサイズは、パフォーマンスに著しい影響を及ぼすことなく縮小され得る。そのような情報は、処理ノードが実装されているコンピュータシステム上で実行されているオペレーティングシステムを介して、決定ユニット１５６に提供されてもよい。
【００４９】
したがって、パワー管理ユニット１５０の決定ユニット１５６は、多数の異なる要因に基づき、どのキャッシュサイズ変更動作が実施されるかを判定してもよい。これらの要因には、Ｐ状態、動作モード（節電またはパフォーマンス）、ＣＩＰＳ、平均活動、ならびに他の処理ノードおよびパワー割り振りに関する情報が挙げられる。決定ユニット１５６は、キャッシュサイズ変更情報を、これらの要因のうちの１つ、またはこれらの任意の組み合わせに基づくように構成可能であってもよい。
【００５０】
ここで、図５を参照すると、プロセッサの異なる動作点のキャッシュメモリの動的制御を図示する、一連のブロック図が示されている。示される実施形態では、キャッシュ１４０は、セットまたはグループ当たり４つのウェイを有する、１６ウェイセットアソシアティブキャッシュである。しかしながら、上述されるように、また、直接マップおよびフルアソシアティブキャッシュのように、異なる数のウェイ、グループ、またはグループ当たりのウェイを有する実施形態も可能であり、予想される。一般的に、本明細書の開示に係るキャッシュサイズ変更は、所与の実現形態に適した任意の特定の粒度で実施されてもよい。
【００５１】
示される実施例（ａ）では、キャッシュ１４０のすべてのウェイがオンである。このキャッシュサイズは、キャッシュ１４０が実装されるプロセッサのパフォーマンス需要が高い際に利用されてもよい。上述される様々な実施形態によると、他の実施例の中でも特に、Ｐ状態０で動作している際、パフォーマンスモードで動作している際、高ＣＩＰＳ値が検出される際、または高平均活動レベルが検出される際に、すべてのキャッシュウェイがオンであってもよい。
【００５２】
示される実施例（ｂ）では、１６のキャッシュウェイのうちの８のキャッシュウェイが、パワーを遮断されており、残りのキャッシュウェイは、依然としてパワーがオンであり、アクセス可能である。状態（ａ）から状態（ｂ）への遷移は、より低いパワーＰ状態へ（例えば、Ｐ状態１からＰ状態２へ）の遷移と併せて、特定のＰ状態である際（例えば、Ｐ状態２で動作している際）のパフォーマンスモードから節電モードへの遷移と併せて、より低いＣＩＰＳレベルが検出される際に併せて、またはより低い平均活動レベルが検出される際に併せて実施されてもよい。
【００５３】
（ｃ）では、さらに別のキャッシュサイズ変更アクションが行われており、このとき、パワーがオンのウェイは８ウェイから４ウェイに半分に減少される。このキャッシュサイズ変更をトリガする事象は、上述されるものと同様であってもよい。本実施例では、１６の総キャッシュウェイのうちの１２のキャッシュウェイがパワーを遮断されるが、４つのウェイは、処理ノードの実行ユニットがデータおよび／または命令に依然としてアクセス可能であってもよい。
【００５４】
（ｄ）では、すべてのキャッシュウェイがパワーを遮断されている。このキャッシュサイズ変更アクションは、最低次Ｐ状態（例えば、上述される実施例のＰ状態５）、スリープモード等に入るのに応えて実施されてもよい。
【００５５】
図５に示される（ａ）から（ｄ）へのシーケンスは、逆に実施されてもよい。例えば、図５に示されるキャッシュ１４０の実施形態では、すべてのキャッシュウェイがパワーをオフにされるスリープモードを出る場合、少なくとも４つ以上のキャッシュウェイがパワーをオンにされてもよい。平均活動の増加、ＣＩＰＳ値の増加、より高いＰ状態へ（例えば、Ｐ状態３からＰ状態２へ）の遷移、または節電モードからパフォーマンスモードへの遷移は、キャッシュ１４０をサイズ拡大変更するために、キャッシュウェイのパワーをオンにすることをトリガし得るアクションである。さらに、図５に示されるシーケンス内の各ステップに遷移することは、必ずしも必要ではないことが留意される。例えば、一実施形態では、パフォーマンス需要の急増（例えば、高ＣＩＰＳ値の検出による）が、（ｃ）から（ａ）への直接ジャンプをもたらしてもよい。
【００５６】
キャッシュサイズ変更アクションをトリガする、上述される事象は、例示であり、他のトリガ事象に応えてキャッシュサイズ変更アクションが実施され得る実施形態が可能であり、予想されることが留意される。さらに、キャッシュサイズ変更アクションは、特定の事象から独立して行われてもよい。図４のパワー管理ユニット１５０の実施例を使用して、決定ユニット１５６は、Ｐ状態の変更、動作モードの変更、または他の種類の動作点変更の通知を受信してもよい。いくつかの実施形態では、これらの変更は、キャッシュ１４０がサイズ変更されるか否かの決定が要因であってもよいが、それら自体は、変更をトリガしない。
【００５７】
図５の実施例では、キャッシュウェイは、すべてのウェイがパワーをオフにされる状態に入る際またはそれを出る際を除き、２の累乗でパワーを投入または遮断される。したがって、サイズ縮小アクションでは、パワーが遮断されるキャッシュウェイの数は、元の１６ウェイから８ウェイに減少し、次いで４ウェイ、そして０ウェイに進む。同様に、キャッシュをサイズ拡大する際、アクションは、４ウェイをオンにし、次いで８ウェイ、次いで１６ウェイにサイズ拡大することを含む。しかしながら、ここに記載される増分とは異なる増分でサイズ縮小およびサイズ拡大アクションが実施される実施形態が可能であり、予想されることが留意される。例えば、１６ウェイキャッシュが２ウェイの増分でサイズ縮小またはサイズ拡大され得、８つの可能なキャッシュサイズを可能にする実施形態が可能であり、予想される。また、キャッシュがキャッシュサイズ増分当たり１ウェイずつサイズ縮小またはサイズ拡大され得る実施形態も可能であり、予想される。
【００５８】
動的キャッシュ制御のための方法フロー：
図６および図７は、キャッシュのサイズを動的に制御するための方法の２つの可能な実施形態を図示する。これらの実施形態は、例示であり、他の実施形態が可能であり、予想されることに留意されたい。また、上述されるパワー管理ユニット１５０の特定の実施形態に、多数の異なる方法が利用可能であり得、これらの方法は、場合によっては組み合わせ可能であり得ることも留意される。例えば、図６および図７を参照して記載される方法実施形態は、プロセッサ動作点の変更に応えて、キャッシュサイズ変更が実施されるか否かを判定するために、部分的に、または完全に組み合わせられてもよい。
【００５９】
ここで、図６を参照すると、動的キャッシュ制御の方法の一実施形態のフロー図が図示されている。示される実施形態では、方法６００は、第１の動作点で動作しているプロセッサ（ブロック６０５）で開始する。本実施例の目的のために、動作点は、特定のスキームの最高パフォーマンス動作点（例えば、上記に提示される表１に係るＰ状態０）と見なされてもよい。示される実施形態では、動作点の変更が実施されない場合（ブロック６１０、いいえ）、キャッシュサイズ決定アクションは実施されず（ブロック６１２）、動作は、第１の動作点で継続する。しかしながら、動作点が変更する場合（ブロック６１０、はい）、キャッシュのサブセットのウェイは、パワーを遮断されてもよい（ブロック６１５）。サブセットは、単一のウェイのみ、グループのウェイ、または複数のグループのウェイを含んでもよい。
【００６０】
動作点変更の後、プロセッサ動作は、依然としてパワーが投入されている残りのウェイ内のキャッシュのアクセスを含んでもよい、命令の処理を継続してもよい（ブロック６２０）。動作点が再度変更されていない場合（ブロック６２５、いいえ）、さらなるキャッシュサイズ変更アクションは行われず（ブロック６２７）、命令の処理ならびにパワーが投入されたままである任意のキャッシュウェイからのデータおよび／または命令へのアクセスを含む動作は、最も最近の動作点で継続してもよい（ブロック６２０）。
【００６１】
別の動作点変更が実施され（ブロック６２５、はい）、かつより低いパフォーマンスまたはより低いパワー状態への下方動作点変更である場合（ブロック６３０、下方）、キャッシュの追加のウェイがパワーを遮断されてもよい（ブロック６４０）。命令の処理が継続されてもよく、これは、パワーが投入されたままである任意のキャッシュウェイのアクセスを含んでもよい（ブロック６４２）。別の動作点変更が実施され（ブロック６２５、はい）、かつより高いパフォーマンス状態またはより高いパワー消費が許可される状態への動作点変更である場合（ブロック６３０、アップ）、キャッシュは、以前にパワーが遮断されたキャッシュウェイに選択的にパワーを投入することによってサイズ拡大変更されてもよい（ブロック６３５）。新しい動作点が最高パフォーマンス動作点である場合（ブロック６４５、はい）、すべてのキャッシュウェイがパワーをオンにされてもよい（ブロック６５０）。新しい動作点が最高パフォーマンス動作点ではない場合（ブロック６４５、いいえ）、いくつかのキャッシュウェイはパワーを遮断されたままであり、一方、パワーが投入されているキャッシュウェイがデータおよび／または命令の取り出しのためにアクセスされ得る動作が実施されてもよい。
【００６２】
したがって、図６の実施形態によると、方法６００は、動作点が最大パフォーマンスのうちの１つから最小パワー消費のうちの１つに向かって進む際、キャッシュの漸進的サイズ縮小変更を実施してもよい。キャッシュサイズ変更動作の増分の数は、動作点の数（例えば、Ｐ状態の数）、キャッシュウェイまたはウェイのグループの数、キャッシュがパワーを遮断される増分のサイズおよび様式（例えば、フルから１／２、１／４等）等に依存してもよい。同様に、方法６００は、プロセッサの動作点が最小パワー消費のうちの１つから最大パフォーマンスに進む際、キャッシュの漸進的サイズ拡大変更を実施してもよい。
【００６３】
図７を参照して記載されるサイズ変更アクションのそれぞれについて、サイズ変更アクションが行われる前に、滞留要件が確立されなければならない場合があることが留意される。例えば、ブロック６４０で、前回のキャッシュサイズ変更アクションから十分な時間量が経過していない場合、追加のキャッシュウェイのパワーの遮断は、禁止または遅延されてもよい。いったん特定の時間量が経過すると、滞留要件は確立されたと見なされてもよく、その後、サイズ変更アクションが行われてもよい。キャッシュサイズ変更アクションに続いてキャッシュサイズの滞留要件を確立することは、過度に頻繁にキャッシュサイズ変更が実施されることを防止し得る。過度に頻繁なキャッシュサイズ変更は、より多くのパワーを消費し得、処理パフォーマンスを悪化させ、頻繁な間隔でキャッシュウェイのパワーをオンおよびオフすることによってもたらされる頻繁な過渡電流により、配電システムに望ましくないノイズをもたらす場合がある。したがって、これらの望ましくない影響は、滞留要件の使用によって防止され得る。滞留要件を確立し、施行するために、図４の滞留タイマ１６６等の滞留タイマが使用されてもよい。
【００６４】
図７は、動的キャッシュ制御の方法の別の実施形態のフロー図である。この特定の実施形態では、方法７００は、ＣＩＰＳ値に基づき、キャッシュサイズ変更アクションが行われるか否かを判定することを目的とする。以前に上述されたように、ＣＩＰＳ値は、リタイアされる命令に関する情報を受信し、特定の時間間隔の間にリタイアされる（すなわち、命令実行の結果がレジスタにコミットされる）命令の数を判定し、１秒間のこの値を外挿することによって判定されてもよい。
【００６５】
本実施形態では、方法７００は、新しい時間間隔の開始（ブロック７０１）で開始する。結果がレジスタにコミットされた、最も最近の前回の時間間隔内にリタイアされた命令の数を判定するために、集計が取られてもよい。この値から、ＣＩＰＳ値が判定されてもよい（ブロック７０５）。ＣＩＰＳ値を判定することに加えて、閾値およびガードバンド値の合計が計算されてもよい（ブロック７０７）。
【００６６】
また、閾値がＰ状態に依存しない（例えば、すべてのＰ状態に対して同一である）実施形態も可能であり、予想されるが、一実施形態では、閾値は、プロセッサが動作している特定のＰ状態に依存してもよい。閾値は、所与の間隔について判定されるＣＩＰＳ値の比較目的に使用される、特定のＣＩＰＳ値であってもよい。ガードバンドは、特定の要因が考慮され得ること（例えば、パイプラインのフラッシングを引き起こす分岐予測ミス）を保証するように比較のための追加の余地を提供する、ＣＩＰＳ値であってもよい。いくつかの実施形態では、ガードバンドは、ＣＩＰＳ計算／判定に含まれ、したがって、別個のガードバンドを含む必要がなくてもよい。
【００６７】
ＣＩＰＳ値および合計が判定された後、ＣＩＰＳ値は、閾値および合計の両方と比較されてもよい（ブロック７１０）。ＣＩＰＳ値が閾値およびガードバンドの合計を超える場合（ブロック７１５、はい）、キャッシュは、既にパワーがオンにされていない場合は、すべてのキャッシュウェイのパワーをオンにするようにサイズ変更されてもよい（ブロック７３０）。ＣＩＰＳ値が合計未満であり（ブロック７１５、いいえ）、かつ閾値未満である場合（ブロック７２０、はい）、キャッシュウェイの総数のサブセットのパワーを選択的に遮断することによって、キャッシュサイズ変更が実施されてもよい（ブロック７３５）。キャッシュサイズ変更アクションが行われた後、次の間隔が開始するまで、さらなるアクションが行われなくてもよい（ブロック７０１）。
【００６８】
ＣＩＰＳ値が合計値未満ではあるが（ブロック７１５、いいえ）、閾値を超える（ブロック７２０、いいえ）場合、キャッシュサイズは、変更されないままであってもよい（ブロック７２５）。次の間隔が開始するまで、さらなるキャッシュサイズ変更アクションが実施されなくてもよい（ブロック７０１）。
【００６９】
実施形態７００の多くの変形が可能であり、予想される。例えば、ＣＩＰＳ値が合計値を超えるのに応えて、すべてのキャッシュウェイのパワーをオンにする代わりに、キャッシュウェイの選択されるサブセットがパワーをオンにされてもよい。これは、前回の間隔より多くのウェイがパワーをオンにされてもよいが、すべてではないがいくつかのキャッシュウェイがパワーをオンにされる状況をもたらしてもよい。さらに、上述されるように、方法７００は、方法６００の様々な実施形態またはキャッシュサイズ変更アクションを判定するための任意の他の好適な方法論と併せて使用されてもよい。
【００７０】
ＣＩＰＳ値は、キャッシュ容量に依存し得るため、別の変形は、現在パワーが投入されているキャッシュウェイの数に基づき、異なるＣＩＰＳ閾値を使用することを可能にしてもよい。したがって、そのような実施形態では、キャッシュウェイがパワーを遮断された場合、また、ＣＩＰＳ閾値もそれに応じて減少されてもよい。一般的に、各閾値が、パワーがオンまたはオフであるウェイの数に基づく特定のキャッシュ容量に対応する、多数の異なるＣＩＰＳ閾値を使用することができる。
【００７１】
マルチコアプロセッサ実施形態：
図８は、マルチコアプロセッサの一実施形態のブロック図である。示される実施形態では、プロセッサ１００は、２つのプロセッサコア１０１を含む。しかしながら、追加のコアを有する実施形態が可能であり、予想され、これらのコアは、相互と同一であってもよく（すなわち、プロセッサ１００が対称型マルチコアプロセッサである）、またはコアのいくつかは、相互と異なってもよい（すなわち、プロセッサ１００が非対称型またはヘテロジニアスマルチコアプロセッサである）。示される実施形態では、各コア１０１は、実行ユニット（単数または複数）１２４と、Ｌ１キャッシュ１１７と、パワー管理ユニット１５０とを含む。各コア１０１は、図１および図２を参照して上述されるプロセッサ実施形態に係る、追加のユニットを含んでもよい。さらに、Ｌ１キャッシュ１１７は、これらと同一の図面に従って、別個の命令およびデータキャッシュに分割されてもよい。
【００７２】
コア１０１のそれぞれの中のパワー管理ユニット１５０は、本明細書に記載される様々な方法論を使用して、そのそれぞれのＬ１キャッシュ１１７のサイズ変更を実施するように構成されてもよい。コア１０１の各パワー管理ユニット１５０は、図４に示されるパワー管理ユニット１５０と同様に配設されてもよい。したがって、対応するＬ１キャッシュ１１７をサイズ変更するか否かの判定、ならびにサイズ変更が実施されると判定される場合に、これらのキャッシュをどのようにサイズ変更するかの判定において、多数の異なる要因が考慮されてもよい。
【００７３】
各コア１０１内のパワー管理ユニット１５０に加えて、プロセッサ１００は、Ｌ２キャッシュ１４０に対してサイズ変更アクションを実施するように構成される、別のパワー管理ユニット１５０を含む。Ｌ２キャッシュ１４０に対して実施されるサイズ変更アクションを判定するために使用される様々な方法論は、任意の上述されるものを含んでもよい。
【００７４】
明確に示されていないが、また、プロセッサ１００のいくつかの実施形態は、Ｌ３キャッシュも含んでもよい。そのような実施形態では、Ｌ３キャッシュの含有には、パワー管理ユニット１５０の別のインスタンスの含有を伴ってもよい。代替として、単一のパワー管理ユニット１５０が、Ｌ２キャッシュおよびＬ３キャッシュの両方を制御するために利用されてもよい。一般的に、特定のプロセッサ実施形態内に含まれるキャッシュの数は、制限されない。さらに、記載は、データおよび／または命令を記憶するキャッシュを対象としているが、また、本明細書に記載される動的キャッシュ制御は、アドレス変換情報を記憶するために使用されるトランスレーションルックアサイドバッファ（ＴＬＢ）等の他の種類のキャッシュメモリにも適用されてもよい。
【００７５】
また、プロセッサ１００は、パワー管理ユニット１５０のそれぞれに連結されるコントローラ１７０も含む。いくつかの実施形態では、コントローラ１７０は、そうでなければ図２に示される状態コントローラ１３５によって提供される機能を提供してもよい。ここでは明確に示されていないが、プロセッサ１００は、プロセッサ１００の他のユニットと同一のＩＣダイ上に実装される、クロック制御回路および可変電圧調節器（例えば、図２に示されるクロック制御回路１３６および可変電圧調節器１３７）を含んでもよい。一実施形態では、ＩＣダイに対して全体として設定される場合、電圧は、すべてのコア１０１のＰ状態に必要とされる最大電圧に設定されてもよい。別の実施形態は、コア１０１のいずれかに必要とされる最高パフォーマンスＰ状態に基づき、すべてのコアのＰ状態を設定する、ソフトウェアを伴ってもよい。一般的に、コントローラ１７０は、各コア１０１ならびに全体としてのプロセッサ１００の動作電圧およびクロック周波数（すなわち、Ｐ状態）を設定するように構成されてもよい。場合によっては、コア１０１のＰ状態は、全体としてのプロセッサ１００のＰ状態によって制約されてもよい。さらに、示される実施形態では、コントローラ１７０は、コア１０１のＰ状態を相互に対して個別に設定するように構成される。プロセッサコア１０１のうちの１つまたはすべての増加した作業負荷に応えて、コントローラ１７０は、需要を満足するために、それらのそれぞれのＰ状態を増加してもよく、および／または全体としてのプロセッサ１００のＰ状態を増加してもよい。
【００７６】
コントローラ１７０は、コア１０１および全体としてのプロセッサ１００のＰ状態を制御し得るため、したがって、コントローラ１７０は、制御コア１０１の間でのパワー割り振りを制御してもよい。例えば、コア１０１のうちの第１のコアＬ１キャッシュがサイズ縮小変更される場合（例えば、低ＣＩＰＳ値に応えて）、コントローラ１７０は、節約されるパワーを第２のコア１０１に割り振ってもよく、また、より大きい作業負荷需要を満足するように、そのＰ状態を調整してもよい。場合によっては、コントローラ１７０は、キャッシュサイズ縮小変更による利用可能な過剰なパワーの結果として、過剰なパワーを１つ以上の追加のコアに割り振ってもよい。そのような状況では、また、コントローラ１７０は、コアのＰ状態も調整してもよい。そのコア１０１のＰ状態は、より大きい作業負荷需要を満足することを可能にする。場合によっては、コントローラ１７０は、コア１０１の１つ以上に過剰なパワーを割り振ることを可能にするために、Ｌ２キャッシュ１４０に連結されるパワー管理ユニット１５０に、サイズを縮小変更するよう命令してもよい。
【００７７】
コントローラ１７０は、Ｌ１キャッシュおよびＬ２キャッシュのそれぞれのステータスに関する情報を、それらのそれぞれのパワー管理ユニット１５０内に実装される通知ユニット１６０から受信してもよい。また、コントローラ１７０は、１つ以上のコア１０１のＰ状態の更新等の様々なステータス変更を示す情報を、パワー管理ユニット１５０のそれぞれの決定ユニット１５６に送信してもよい。
【００７８】
一般的に、コントローラ１７０は、コア１０１、Ｌ２キャッシュ１４０によるパワー使用量を追跡してもよく、また、プロセッサ１００の他のユニット（例えば、メモリコントローラ）のパワー使用量も追跡してもよく、追跡されるパワー使用量に基づき、パワー制御および割り振りアクションを実施してもよい。コア１０１、Ｌ２キャッシュ１４０、およびプロセッサ１００の他のユニットのパワー使用量に関する情報に基づき、プロセッサ１００に消費されたパワー１ワットあたりのそのパフォーマンスを最大化させるために、コントローラ１７０は、パワー割り振りアクションを実施してもよい。
【００７９】
コンピュータシステム：
ここで、図９を参照すると、コンピュータシステム３００の実施形態が示されている。図９の実施形態では、コンピュータシステム３００は、いくつかの処理ノード１００Ａ、１００Ｂ、１００Ｃ、および１００Ｄを含む。処理ノード１００Ａ〜１００Ｄの１つ以上は、上述される図１、図２、または図８の実施形態のうちの１つ、またはこれらの実施形態のうちの１つの変形に係る、プロセッサであってもよい。したがって、処理ノード１００Ａ〜１００Ｄの１つ以上は、それぞれの処理ノード内に、上述される方法論の様々な実施形態に係る、１つ以上のキャッシュメモリの動的サイズ変更を実施するように構成される、１つ以上のパワー管理ユニット１５０を含んでもよい。
【００８０】
各処理ノード１００Ａ〜１００Ｄは、それぞれの処理ノード１００Ａ〜１００Ｄ内に含まれるメモリコントローラ３１６Ａ〜３１６Ｄを介して、それぞれのメモリ３１４Ａ〜３１４Ｄに連結される。これらのメモリコントローラ３１６Ａ〜３１６Ｄの１つ以上は、上述されるメモリコントローラ１８の実施形態に従って構成されてもよい。したがって、そのように構成される処理ユニットでは、パワー管理は、対応するメモリサブシステムによるパワー使用を最小にするように行われてもよい。
【００８１】
処理ノード１００Ａ〜１００Ｄのそれぞれは、処理ノード１００Ａ〜１００Ｄ間で通信するために使用される、インターフェース論理を含む。例えば、処理ノード１００Ａは、処理ノード１００Ｂと通信するためのインターフェース論理３１８Ａと、処理ノード１００Ｃと通信するためのインターフェース論理３１８Ｂと、さらに別の処理ノード（図示せず）と通信するための第３のインターフェース論理３１８Ｃとを含む。同様に、処理ノード１００Ｂは、インターフェース論理３１８Ｄ、３１８Ｅ、および３１８Ｆを含み、処理ノード１００Ｃは、インターフェース論理３１８Ｇ、３１８Ｈ、および３１８Ｉを含み、処理ノード１００Ｄは、インターフェース論理３１８Ｊ、３１８Ｋ、および３１８Ｌを含む。処理ノード１００Ｄは、インターフェース論理３１８Ｌを介して、複数の入力／出力デバイス（例えば、デイジーチェーン構成のデバイス３２０Ａ〜３２０Ｂ）と通信するように連結される。他の処理ノードは、他のＩ／Ｏデバイスと同様に通信してもよい。
【００８２】
処理ノード１００Ａ〜１００Ｄは、処理ノード間通信のためのパケットベースのリンクを実現する。本実施形態では、リンクは、一方向ラインのセットとして実現される（例えば、ライン３２４Ａは、処理ノード１００Ａから処理ノード１００Ｂにパケットを伝送するために使用され、ライン３２４Ｂは、処理ノード１００Ｂから処理ノード１００Ａにパケットを伝送するために使用される）。他のセットのライン３２４Ｃ〜３２４Ｈは、図４に図示されるように、他の処理ノード間でパケットを伝送するために使用される。一般的に、ライン３２４の各セットは、１つ以上のデータラインと、データラインに対応する１つ以上のクロックラインと、伝達されるパケットの種類を示す１つ以上の制御ラインとを含んでもよい。リンクは、処理ノード間の通信のためにキャッシュコヒーレント方式で動作してもよく、または処理ノードとＩ／Ｏデバイス（または周辺機器相互接続（ＰＣＩ）バスまたは業界標準アーキテクチャ（ＩＳＡ）バス等の従来の構成のＩ／Ｏバスへのバスブリッジ）との間の通信のために非コヒーレント方式で動作してもよい。また、処理ノードとＩ／Ｏデバイスとの間の通信がキャッシュコヒーレント方式で実施される実施形態も可能であり、予想される。さらに、リンクは、示されるようなＩ／Ｏデバイス間のデイジーチェーン構造を使用して、非コヒーレント方式で動作してもよい。１つの処理ノードから別の処理ノードに伝送されるパケットは、１つ以上の中間ノードを通過してもよいことが留意される。例えば、処理ノード１００Ａによって処理ノード１００Ｄに伝送されるパケットは、図９に示されるように、処理ノード１００Ｂまたは処理ノード１００Ｃのいずれかを通過してもよい。任意の好適な経路指定アルゴリズムが使用されてもよい。コンピュータシステム３００の他の実施形態は、図９に示される実施形態より多い、または少ない処理ノードを含んでもよい。
【００８３】
一般的に、パケットは、ライン３２４上で１つ以上のビット時間としてノード間を伝送されてもよい。ビット時間は、対応するクロックライン上のクロック信号の立ち上がりまたは立ち下がりであってもよい。パケットは、トランザクションを開始するためのコマンドパケットと、キャッシュコヒーレンシを維持するためのプローブパケットと、プローブおよびコマンドに対する応答からの応答パケットとを含んでもよい。
【００８４】
処理ノード１００Ａ〜１００Ｄは、メモリコントローラおよびインターフェース論理に加えて、１つ以上のプロセッサを含んでもよい。概して、処理ノードは、少なくとも１つのプロセッサを備え、任意選択で、所望によりメモリおよび他の論理と通信するためのメモリコントローラを含んでもよい。より具体的には、各処理ノード１００Ａ〜１００Ｄは、図１に示されるプロセッサ１０の１つ以上のコピー（例えば、図２〜図３に示される様々な構造的詳細および動作的詳細を含む）を備えてもよい。１つ以上のプロセッサは、処理ノード内に、もしくは処理ノードを形成する、チップ多重処理（ＣＭＰ）またはチップマルチスレッド化（ＣＭＴ）集積回路を備えてもよく、あるいは処理ノードは、任意の他の所望の内部構造を有してもよい。
【００８５】
メモリ３１４Ａ〜３１４Ｄは、任意の好適なメモリデバイスを備えてもよい。例えば、メモリ３１４Ａ〜３１４Ｄは、１つ以上のＲＡＭバスＤＲＡＭ（ＲＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ＤＤＲ  ＳＤＲＡＭ、スタティックＲＡＭ等を備えてもよい。コンピュータシステム３００のアドレス空間は、メモリ３１４Ａ〜３１４Ｄの間で分割される。各処理ノード１００Ａ〜１００Ｄは、どのアドレスがメモリ３１４Ａ〜３１４Ｄのどれにマップされているか、およびしたがって、特定のアドレスへのメモリ要求を処理ノード１００Ａ〜１００Ｄのどれに経路指定するべきかを判定するために使用される、メモリマップを含んでもよい。一実施形態では、コンピュータシステム３００内のアドレスのコヒーレント点は、アドレスに対応するバイトを記憶するメモリに連結される、メモリコントローラ３１６Ａ〜３１６Ｄである。換言すれば、メモリコントローラ３１６Ａ〜３１６Ｄは、対応するメモリ３１４Ａ〜３１４Ｄへの各メモリアクセスが、確実にキャッシュコヒーレント方式で実施されるようにすることに関与する。メモリコントローラ３１６Ａ〜３１６Ｄは、メモリ３１４Ａ〜３１４Ｄとインターフェースをとるための制御回路を備えてもよい。加えて、メモリコントローラ３１６Ａ〜３１６Ｄは、メモリ要求を待ち行列に入れるための要求キューを含んでもよい。
【００８６】
一般的に、インターフェース論理３１８Ａ〜３１８Ｌは、リンクからパケットを受信するため、およびリンク上を伝送されるパケットをバッファリングするための種々のバッファを備えてもよい。コンピュータシステム３００は、パケットを伝送するための任意の好適なフロー制御機構を採用してもよい。例えば、一実施形態では、各インターフェース論理３１８は、そのインターフェース論理が接続される、リンクの反対側の受信器内の各種類のバッファのカウント数を記憶する。インターフェース論理は、受信インターフェース論理がパケットを記憶するための空きバッファを有するまで、パケットを伝送しない。パケットを前方へ経路指定することによって受信バッファが空く際、受信インターフェース論理は、バッファが空いたことを示すメッセージを送信インターフェース論理に伝送する。そのような機構は、「クーポンベース」システムと称されてもよい。
【００８７】
Ｉ／Ｏデバイス３２０Ａ〜３２０Ｂは、任意の好適なＩ／Ｏデバイスであってもよい。例えば、Ｉ／Ｏデバイス３２０Ａ〜３２０Ｂは、デバイスが連結され得る別のコンピュータシステム（例えば、ネットワークインターフェースカードまたはモデム）と通信するためのデバイスを含んでもよい。さらに、Ｉ／Ｏデバイス３２０Ａ〜３２０Ｂは、ビデオアクセラレータ、オーディオカード、ハードもしくはフロッピー（登録商標）ディスクドライブまたはドライブコントローラ、ＳＣＳＩ（小型コンピュータシステム用周辺機器インターフェース）アダプタおよび電話カード、サウンドカード、ならびにＧＰＩＢまたはフィールドバスインターフェースカード等の種々のデータ取得カードを含んでもよい。さらに、また、カードとして実装される任意のＩ／Ｏデバイスも、システム３００の主回路基板上の回路として実装されてもよく、および／または処理ノード上で実行されるソフトウェアとして実装されてもよい。本明細書では、「Ｉ／Ｏデバイス」という用語、および「周辺デバイス」という用語は、同義語であることが意図されることが留意される。
【００８８】
また、コンピュータシステム３００は、処理ノード１００Ａ〜１００Ｄのそれぞれに連結されるコントローラ１７０も含む。コントローラ１７０は、プロセッサレベルというよりはむしろシステムレベルで、図８に示されるコントローラ１７０と同様の機能を実施してもよい。つまり、コントローラ１７０は、処理ノード１００Ａ〜１００Ｄのそれぞれによるパワー使用量を追跡してもよく、それに応じてそれらの動作点を変更してもよく、処理ノードのうちの１つからのパワーを他の処理ノードの１つ以上に再度割り振ってもよい。ここでは、処理ノード１００Ａ〜１００Ｄのそれぞれとは別個のコントローラ１７０が示されているが、処理ノードのうちの１つに実装されるコントローラ１７０が、システムレベルパワー追跡および割り振り機能を実施する実施形態が可能であることが留意される。
【００８９】
上述されるプロセッサおよびシステムの様々な実施形態は、コンピュータシステムおよびそれらの対応するプロセッサを対象としていることが留意されるが、上述される方法および装置は、他の種類にも同様に適用され得ることが留意される。一般的に、キャッシュを含む任意の種類のプロセッサが、上述される動的キャッシュサイズ変更方法の実現形態に好適であり得る。さらに、また、サーバシステム、デスクトップシステム、および携帯型コンピュータを含む、プロセッサを含む任意の種類のシステムも、上記に開示される動的キャッシュサイズ変更方法に好適であり得る。加えて、他の種類のプラットフォームおよびそれらのそれぞれのプロセッサが、動的キャッシュサイズ変更に好適であり得る。そのようなプラットフォームには、「スマート」フォン、パーソナルデジタルアシスタント、組み込みコントローラ等が挙げられる。
【００９０】
コンピュータ可読媒体：
次に図１０を参照すると、プロセッサ１００を表すデータベースを含む、コンピュータアクセス可能記憶媒体８００のブロック図が示されている。一般的に言えば、コンピュータアクセス可能記憶媒体には、命令および／またはデータをコンピュータに提供する、使用中にコンピュータがアクセス可能な任意の記憶媒体が挙げられる。例えば、コンピュータアクセス可能記憶媒体には、磁気または光学媒体、例えば、ディスク（固定された、もしくは取り外し可能な）、テープ、ＣＤ−ＲＯＭ、またはＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、あるいはブルーレイ等の記憶媒体が挙げられる。記憶媒体には、ＲＡＭ（例えば、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３等）ＳＤＲＡＭ、低パワーＤＤＲ（ＬＰＤＤＲ２等）ＳＤＲＡＭ、Ｒａｍｂｕｓ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）等）、ＲＯＭ、フラッシュメモリ、ユニバーサルシリアルバス（ＵＳＢ）インターフェース等の周辺インターフェースを介してアクセス可能である不揮発性メモリ（例えば、フラッシュメモリ）等の揮発性または不揮発性メモリ媒体がさらに挙げられる。記憶媒体には、微小電気機械システム（ＭＥＭＳ）、ならびにネットワークおよび／または無線リンク等の通信媒体を介してアクセス可能な記憶媒体が挙げられる。
【００９１】
一般的に、コンピュータアクセス可能記憶媒体８００上にあるプロセッサのデータベースは、システム１０を備えるハードウェアを加工するためにプログラムが読み出し、直接または間接的に使用することができる、データベースであってもよい。例えば、データベースは、ＶｅｒｉｌｏｇもしくはＶＨＤＬ等の高級設計言語（ＨＤＬ）でのハードウェア機能性の動作レベル記述またはレジスタ転送レベル（ＲＴＬ）記述であってもよい。記述は、ゲートのリストを含むネットリストを生成するために、記述を合成し得る合成ツールによって、合成ライブラリから読み出されてもよい。ネットリストは、また、プロセッサ１００を備えるハードウェアの機能性も表す、ゲートのセットを含む。次いで、ネットリストは、マスクに適用される幾何学的形状を記述するデータセットを生成するように、定置され、経路指定されてもよい。次いで、マスクは、プロセッサ１００に対応する半導体回路（単数または複数）を生産するために、様々な半導体加工ステップで使用されてもよい。代替として、コンピュータアクセス可能記憶媒体８００上のデータベースは、所望により、ネットリスト（合成ライブラリを伴う、または伴わない）またはデータセットであってもよい。
【００９２】
コンピュータアクセス可能記憶媒体８００は、プロセッサ１００の表現を保持するが、他の実施形態は、エージェントの任意のセット（例えば、Ｌ２キャッシュ１４０、パワー管理ユニット１５０等）、エージェントの部分、またはその部分を含む、プロセッサ１００の任意の部分の表現を保持してもよい。
【００９３】
本発明は、特定の実施形態を参照して記載されてきたが、実施形態は、例示であり、本発明の範囲は、それに限定されないことが理解される。記載される実施形態に対する任意の変形、修正、追加、および改善が可能である。これらの変形、修正、追加、および改善は、以下の「特許請求の範囲」内に詳述されるように、本発明の範囲内であり得る。
【図１】
2013526739.tif 000005
【図２】
2013526739.tif 000006
【図３】
2013526739.tif 000007
【図４】
2013526739.tif 000008
【図５】
2013526739.tif 000009
【図６】
2013526739.tif 000010
【図７】
2013526739.tif 000011
【図８】
2013526739.tif 000012
【図９】
2013526739.tif 000013
【図１０】
2013526739.tif 000014
【手続補正書】
【提出日】平成25年2月18日(2013.2.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサが動作点を第１の動作点から第２の動作点に変更したのに応えて、キャッシュメモリの１つ以上のウェイのパワーを選択的に変化させることと、
前記キャッシュメモリの前記１つ以上のウェイのパワーを変化させた後、前記プロセッサ内で１つ以上の命令を処理することと、を含み、
前記処理することは、パワーが変化された前記キャッシュメモリの１つ以上のウェイにアクセスすることを含む、方法。
【請求項２】
１つ以上のキャッシュウェイのパワーを変化させることは、前記１つ以上のキャッシュウェイからパワーを取り除くことを含む、請求項１に記載の方法。
【請求項３】
前記動作点を変更することは、前記プロセッサが動作する動作電圧およびクロック周波数を変更することを含む、請求項１に記載の方法。
【請求項４】
前記動作点の変更に応えて、前記キャッシュメモリの複数の現在アクティブなウェイの半分からパワーを取り除くことをさらに含む、請求項１に記載の方法。
【請求項５】
前記プロセッサの前記動作点を前記第２の動作点から第３の動作点に変更することと、
前記動作点の変更に応えて、キャッシュメモリの１つ以上の追加のウェイからパワーを選択的に取り除くことと、をさらに含む、請求項１に記載の方法。
【請求項６】
前記プロセッサの前記動作点を前記第２の動作点から第３の動作点に変更することと、
ＣＩＰＳ（１秒間にコミットされる命令）値を読み出すことと、
閾値およびガードバンド値の合計を計算することと、
前記ＣＩＰＳ値を前記閾値および前記合計と比較することと、
前記ＣＩＰＳ値が前記閾値未満である場合に、前記第３の動作点への変更に応えて、キャッシュメモリの１つ以上の追加のウェイからパワーを選択的に取り除くことと、
前記ＣＩＰＳ値が前記合計を超える場合に、前記キャッシュメモリのすべてのウェイにパワーを供給することと、をさらに含み、
前記ＣＩＰＳ値が、前記閾値を超え、かつ前記合計未満である場合、前記キャッシュメモリの追加のウェイは、パワーをオンまたはオフにされない、請求項４に記載の方法。
【請求項７】
前記キャッシュメモリの１つ以上のウェイからパワーが選択的に取り除かれてから経過した時間量を判定することと、
前記時間量を第１の時間閾値と比較することと、
前記時間量が前記第１の時間閾値未満である場合に、前記キャッシュメモリの追加のウェイがパワーを遮断されることを防止することと、をさらに含む、請求項１に記載の方法。
【請求項８】
前記時間量を第２の時間閾値と比較することと、
前記第２の時間量が前記第２の時間閾値未満である場合に、前記キャッシュメモリの追加のウェイがパワーを投入されることを防止することと、をさらに含む、請求項７に記載の方法。
【請求項９】
少なくとも１つの実行ユニットが動作点を第１の動作点から第２の動作点に変更するのに応えて、キャッシュメモリの前記複数のウェイの第１のサブセットのパワーを選択的に変化させるように構成される、パワー管理ユニットを備える、プロセッサであって、
前記プロセッサの前記少なくとも１つの実行ユニットは、前記複数のウェイの前記第１のサブセットのパワーを選択的に変化させた後、パワーが変化された前記複数のウェイの第２のサブセットの１つ以上のウェイにアクセスするように構成される、プロセッサ。
【請求項１０】
前記パワー管理ユニットは、１つ以上の追加のプロセッサに、前記キャッシュメモリの１つ以上のウェイがパワーを遮断されたことを示す通知を送信するようにさらに構成される、請求項９に記載のプロセッサ。
【請求項１１】
第１の閾値および第２の閾値の合計を計算することと、
作業負荷指標値を前記第１の閾値および前記第２の閾値と比較することと、
プロセッサの作業負荷指標値が第１の閾値未満である場合に、キャッシュメモリの複数のウェイのサブセットからパワーを選択的に取り除くことと、
前記作業負荷指標値が第２の閾値を超える場合に、前記キャッシュメモリの任意の以前にパワーが遮断されたウェイにパワーを投入することと、を含み、
前記作業負荷指標値が、前記第１の閾値を超え、かつ前記第２の閾値未満である場合、前記キャッシュメモリのウェイへのパワーが変化される、方法。
【請求項１２】
前記キャッシュメモリを含むプロセッサの前記作業負荷指標値を判定することをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記第２の閾値は、前記第１の閾値およびガードバンド値の合計である、請求項１１に記載の方法。
【請求項１４】
プロセッサのパフォーマンス状態を第１のパフォーマンス状態から第２のパフォーマンス状態に変更することであって、前記プロセッサのコアを第１の電圧および第１のクロック周波数で動作させることを含む、前記第１のパフォーマンス状態から、前記コアを前記第１の電圧未満の第２の電圧および前記第１のクロック周波数未満の第２のクロック周波数で動作させることを含む、前記第２のパフォーマンス状態に変更することと、
前記パフォーマンス状態の変更に応えて、キャッシュメモリの１つ以上のウェイからパワーを選択的に取り除くことと、
前記キャッシュメモリの前記１つ以上のウェイからパワーを取り除いた後、前記プロセッサの前記コア内で１つ以上の命令を処理することと、を含み、
前記処理することは、前記コアが、パワーが取り除かれなかった前記キャッシュメモリの１つ以上のウェイにアクセスすることを含む、方法。
【請求項１５】
コンピュータシステム上で実行可能なプログラムによって動作されるデータ構造を備える、コンピュータ可読媒体であって、
前記プログラムは、前記データ構造上で、前記データ構造によって記述される回路を含む集積回路を加工するプロセスの一部を実施するように動作し、
前記データ構造内に記述される前記回路は、少なくとも１つの実行ユニットが動作点を第１の動作点から第２の動作点に変更するのに応えて、キャッシュメモリの複数のウェイの第１のサブセットのパワーを選択的に変化させるように構成される、パワー管理ユニットを含み、
前記少なくとも１つの実行ユニットは、前記複数のウェイの前記第１のサブセットのパワーを選択的に変化させた後、パワーが変化された前記複数のウェイの第２のサブセットの１つ以上のウェイにアクセスするように構成される、コンピュータ可読媒体。
【国際調査報告】
2013526739.tif 000015
2013526739.tif 000016
2013526739.tif 000017