(58)【調査した分野】(Int.Cl.,DB名)
アクティブな動作点を用いて前記プロセッサ内で1つ以上の命令を処理する間に、前記キャッシュメモリの1つ以上のウェイからパワーが選択的に取り除かれてから経過した時間量を判定することと、
前記時間量を第1の時間閾値と比較することと、
前記時間量が前記第1の時間閾値未満である場合に、前記プロセッサ内で1つ以上の命令を処理する間、前記キャッシュメモリの追加のウェイのパワーが遮断されるのを防止することと、をさらに含む、請求項1に記載の方法。
アクティブな動作点を用いて前記プロセッサ内で1つ以上の命令を処理する間に、前記キャッシュメモリの1つ以上のウェイからパワーが選択的に取り除かれてから経過した時間量を判定することと、
前記時間量を第1の時間閾値と比較することと、
前記時間量が前記第1の時間閾値未満である場合に、前記プロセッサ内で1つ以上の命令を処理する間、前記キャッシュメモリの追加のウェイのパワーが遮断されるのを防止することと、をさらに含む、請求項10に記載の方法。
アクティブな動作点を用いて前記プロセッサ内で1つ以上の命令を処理する間に、前記キャッシュウェイの前記1つ以上からパワーが選択的に取り除かれてからの時間量を、第1の滞留要件および第2の滞留要件と比較することをさらに含み、前記方法は、前記時間量が前記第1の滞留要件未満である場合に、前記プロセッサ内で1つ以上の命令を処理する間に何れかの追加のキャッシュウェイのパワーが遮断されるのを防止することと、前記時間量が前記第2の滞留要件未満である場合に、前記プロセッサ内で1つ以上の命令を処理する間に何れかの追加のキャッシュウェイのパワーが投入されるのを防止することと、をさらに含む、請求項13に記載の方法。
【発明を実施するための形態】
【0011】
プロセッサ実施形態の概略:
図1は、プロセッサ100の一実施形態のブロック図である。プロセッサ100は、システムメモリ200内に記憶されている命令を実行するように構成される。これらの命令の多くは、システムメモリ200内に記憶されているデータに作用する。システムメモリ200は、コンピュータシステム全体を通して物理的に分散されていてもよく、および/または1つ以上のプロセッサ100によってアクセスされてもよいことに留意する。
【0012】
図示される実施形態では、プロセッサ100は、レベル1(L1)命令キャッシュ106と、L1データキャッシュ128とを含んでもよい。プロセッサ100は、命令キャッシュ106に連結されるプリフェッチユニット108を含んでもよい。ディスパッチユニット104は、命令キャッシュ106から命令を受信し、動作をスケジューラ(単数または複数)118にディスパッチするように構成されてもよい。スケジューラ118の1つ以上は、ディスパッチユニット104からディスパッチされる動作を受信し、動作を1つ以上の実行ユニット(単数または複数)124に発行するように連結されてもよい。実行ユニット(単数または複数)124は、1つ以上の整数ユニットと、1つ以上の浮動小数点ユニットと、1つ以上の読み込み/記憶ユニットとを含んでもよい。実行ユニット(単数または複数)124によって生成される結果は、1つ以上の結果バス130(複数の結果バスが可能であり、予想されるが、ここでは明確化のために、単一の結果バスが示されている)に出力されてもよい。これらの結果は、続いて発行される命令のオペランド値として使用されてもよく、および/またはレジスタファイル116に記憶されてもよい。リタイアキュー102は、スケジューラ(単数または複数)118およびディスパッチユニット104に連結されてもよい。リタイアキュー102は、それぞれの発行された動作がいつリタイアされ得るかを判定するように構成されてもよい。
【0013】
一実施形態では、プロセッサ100は、x86アーキテクチャ(インテルアーキテクチャ−32、またはIA−32としても知られる)と互換性があるように設計されてもよい。別の実施形態では、プロセッサ100は、64ビットアーキテクチャと互換性があってもよい。他のアーキテクチャと互換性があるプロセッサ100の実施形態も同様に予想される。
【0014】
また、プロセッサ100は、多くの他の構成要素も含んでもよいことに留意する。例えば、プロセッサ100は、命令スレッドの実行における分岐を予測するように構成される、分岐予測ユニット(図示せず)を含んでもよい。また、プロセッサ100は、メモリ200に対する読み出しおよび書き込みを制御するように構成される、メモリコントローラも含んでもよい。
【0015】
命令キャッシュ106は、ディスパッチユニット104がフェッチするための命令を記憶してもよい。命令コードは、記憶するために、プリフェッチユニット108を通してシステムメモリ200からコードをプリフェッチすることによって、命令キャッシュ106に提供されてもよい。命令キャッシュ106は、様々な構成(例えば、セットアソシアティブ、フルアソシアティブ、または直接マップ)で実現されてもよい。
【0016】
また、プロセッサ100は、レベル2(L2)キャッシュ140も含んでもよい。命令キャッシュ106が、命令を記憶するために使用されてもよく、データキャッシュ128が、データ(例えば、オペランド)を記憶するために使用されてもよい一方、L2キャッシュ140は、命令およびデータを記憶するために使用される、ユニファイドであってもよい。ここでは明確に示されていないが、また、いくつかの実施形態は、レベル3(L3)キャッシュも含んでもよい。一般的に、キャッシュレベルの数は、実施形態ごとに様々であってもよい。
【0017】
プリフェッチユニット108は、命令キャッシュ106内に記憶するために、システムメモリ200から命令コードをプリフェッチしてもよい。プリフェッチユニット108は、種々の具体的なコードプリフェッチ技法およびアルゴリズムを採用してもよい。
【0018】
ディスパッチユニット104は、実行ユニット(単数または複数)124が実行可能な動作、ならびにオペランドアドレス情報、即値データ、および/または置換データを出力してもよい。いくつかの実施形態では、ディスパッチユニット104は、特定の命令を実行ユニット(単数または複数)124内で実行可能な動作に復号するための復号回路(図示せず)を含んでもよい。単純な命令は、単一の動作に対応してもよい。いくつかの実施形態では、より複雑な命令は、複数の動作に対応してもよい。レジスタの更新を伴う動作が復号されると、レジスタファイル116内のレジスタ位置は、投機的レジスタ状態を記憶するために予約されてもよい(代替の実施形態では、各レジスタの1つ以上の投機的レジスタ状態を記憶するために、リオーダバッファが使用されてもよく、レジスタファイル116は、各レジスタのコミットされたレジスタ状態を記憶してもよい)。レジスタマップ134は、レジスタリネーミングを促進するために、ソースオペランドおよびデスティネーションオペランドの論理レジスタ名を物理レジスタ番号に変換してもよい。レジスタマップ134は、レジスタファイル116内のどのレジスタが現在割り振られているか、および割り振られていないかを追跡してもよい。
【0019】
図1のプロセッサ100は、アウトオブオーダ実行をサポートしてもよい。リタイアキュー102は、レジスタ読み出しおよび書き込み動作の元のプログラムシーケンスを追跡し、投機的命令実行および分岐予測ミス回復を可能にし、厳密な例外を促進してもよい。いくつかの実施形態では、また、リタイアキュー102は、投機的レジスタ状態のデータ値記憶(例えば、リオーダバッファと同様の)を提供することによって、レジスタリネーミングもサポートしてもよい。他の実施形態では、リタイアキュー102は、リオーダバッファと同様に機能し得るが、いかなるデータ値記憶も提供しなくてもよい。動作がリタイアされる際、リタイアキュー102は、投機的レジスタ状態を記憶するためにもはや必要ではないレジスタファイル116内のレジスタの割り振りを解除し、どのレジスタが現在開放されているかを示す信号をレジスタマップ134に提供してもよい。これらの状態をもたらした動作が有効化されるまで、レジスタファイル116内(または、代替の実施形態では、リオーダバッファ内)の投機的レジスタ状態を維持することによって、分岐予測が不正確である場合に、レジスタファイル116内の投機的に実行された動作の結果が、予測ミスされたパスと共に無効化されてもよい。
【0020】
一実施形態では、レジスタファイル116の所与のレジスタは、実行された命令のデータ結果を記憶するように構成されてもよく、また、実行される命令によって更新されてもよいし、1つ以上のフラグビットも記憶してもよい。フラグビットは、後続の命令の実行において重要であり得る様々な種類の情報(例えば、加算または乗算演算の結果として、繰り上げまたはオーバーフロー状況が存在することを示す)を伝達してもよい。アーキテクチャ上、フラグを記憶するフラグレジスタが定義されてもよい。したがって、所与のレジスタへの書き込みは、論理レジスタおよびフラグレジスタの両方を更新してもよい。すべての命令が、1つ以上のフラグを更新し得るわけではないことに留意されたい。
【0021】
レジスタマップ134は、動作のデスティネーションオペランドとして指定される特定の論理レジスタ(例えば、設計されるレジスタまたはマイクロアーキテクチャ上指定されるレジスタ)に、物理レジスタを割り当ててもよい。ディスパッチユニット104は、レジスタファイル116が、所与の動作においてソースオペランドとして指定された論理レジスタに割り当てられた、以前に割り振られた物理レジスタを有すると判定してもよい。レジスタマップ134は、その論理レジスタに最も最近割り当てられた物理レジスタのタグを提供してもよい。このタグは、レジスタファイル116内のオペランドのデータ値にアクセスするため、または結果バス130上での結果転送を介してデータ値を受信するために使用されてもよい。オペランドがメモリ位置に対応する場合、オペランド値は、読み込み/記憶ユニット(図示せず)を通して、結果バス上で提供されてもよい(結果転送および/またはレジスタファイル116内への記憶のために)。オペランドデータ値は、スケジューラ(単数または複数)118のうちの1つによって動作が発行される際に、実行ユニット(単数または複数)124に提供されてもよい。代替の実施形態では、オペランド値は、動作がディスパッチされる際、対応するスケジューラ118に提供されてもよい(動作が発行される際に、対応する実行ユニット124に提供される代わりに)ことに留意する。
【0022】
本明細書で使用される場合、スケジューラは、動作を実行する準備ができているときを検出し、準備ができている動作を1つ以上の実行ユニットに発行する、デバイスである。例えば、予約ステーションは、一種のスケジューラであってもよい。実行ユニット毎に独立した予約ステーションが提供されてもよく、または動作が発行される中央予約ステーションが提供されてもよい。他の実施形態では、リタイアメントまで動作を保有する、中央スケジューラが使用されてもよい。各スケジューラ118は、実行ユニット124への発行を待っている、いくつかの保留動作の動作情報(例えば、動作、ならびにオペランド値、オペランドタグ、および/または即値データ)を保持することが可能であってもよい。いくつかの実施形態では、各スケジューラ118は、オペランド値記憶を提供しなくてもよい。代わりに、各スケジューラは、実行ユニット(単数または複数)124がオペランド値を読み出せるようになる(レジスタファイル116または結果バス130から)ときを判定するために、発行される動作およびレジスタファイル116内の利用可能な結果を監視してもよい。
【0023】
いくつかの実施形態では、その中に示されているキャッシュの1つ以上は、特定のキャッシュウェイのパワーを選択的に遮断または投入することによって、動作中に、動的にサイズ変更されてもよい。プロセッサは、所与のキャッシュのウェイのうちのいくつかがパワーを遮断された後でさえ、アクティブ状態で動作し続けてもよい。残りのキャッシュウェイ(すなわち、パワーが依然として提供されているキャッシュウェイ)は、命令の実行中に、1つ以上の実行ユニット(単数または複数)124によってアクセスされてもよい。したがって、プロセッサ100が待機状態であるときのみキャッシュウェイのパワーを遮断する代わりに、プロセッサ100が依然としてアクティブ状態のままであることを可能にする一方で、いくつかのキャッシュウェイがパワーを遮断され得る。これは、その結果、プロセッサが活動を継続することを可能にする一方で、パワー消費を低減し得る。
図2から開始して、ここで、プロセッサ100の様々な実施形態、および節電するためにキャッシュサイズを動的に制御するための方法がより詳細に記載される。
【0024】
図2は、プロセッサの別の実施形態のブロック図である。
図1にも含まれる特定のユニットは、ここで同一に指定され、
図2の実施形態において、同一または同様の機能を実施してもよい。示される実施形態では、プロセッサ100は、上述される様々なユニットに加えて、パワー管理ユニット150と、パフォーマンス状態/モードコントローラ135(以後、「状態コントローラ135」)と、メモリコントローラ145とを含む。示される実施形態では、また、クロック制御回路136および可変電圧調節器137も、これらのユニットがチップ上(すなわち、プロセッサ100と同一のICダイ上)に実装される実施形態が可能であり、予想されるが、プロセッサ100に連結されるように示されている。例えば、クロック制御および電圧調節/制御の機能は、状態コントローラ135に実装されてもよい。
【0025】
示される実施形態では、プロセッサ100は、所与の時間にどのウェイがパワーをオンにされるかを選択的に制御することによってサイズを動的に制御可能である、L2キャッシュ140に連結される、パワー管理ユニットを含む。L2キャッシュ140の選択されるウェイは、実行ユニット(単数または複数)124の作業負荷が減少する際に、パワーを遮断されてもよい。同様に、多数のキャッシュウェイがパワーを遮断される際、L2キャッシュ140の選択されるウェイは、実行ユニット(単数または複数)124の作業負荷が増加する場合に、パワーを投入されてもよい。L1キャッシュが同様に制御可能である実施形態が可能であり、予想され、実施例が、以下により詳細に記載される。
【0026】
L2キャッシュ140の特定のウェイがパワーを遮断されるか否かの判定において、パワー管理ユニット150によって、多数の様々な測定基準の1つ以上が使用されてもよい。プロセッサの動作点は、測定基準のうちの少なくとも1つによって定義されてもよく、測定基準の組み合わせによって定義されてもよい。
図2の実施形態では、プロセッサ100は、それぞれが特定の動作電圧および特定の動作周波数によって定義され得る、様々なパフォーマンス状態(「P状態」)で動作するように構成される。プロセッサ100は、節電モード(例えば、バッテリパワーで動作する際に節電が重要視される)およびパフォーマンスモード(パフォーマンスを最大限にすることが重要視される)で動作するようにさらに構成されてもよい。以下の表1は、様々なP状態および動作モードの組み合わせに対して行われ得る、様々なキャッシュサイズ決定アクションを図示する。
【表1】
【0027】
表1は、上述されるプロセッサ100の実施形態、ならびにプロセッサの他の実施形態に適用されてもよい。さらに、上記の表1に示される特定のスキームが異なる、他のプロセッサ実施形態が可能であり、予想される。この特定の実現形態では、P0およびP1状態(2つの最高動作電圧および2つの最高クロック周波数からなる)で動作する際、プロセッサ100が節電モードで動作しているか、またはパフォーマンスモードで動作しているかに関わらず、L2キャッシュ140のすべてのウェイがオンにされてもよい。P2状態で動作している際、パフォーマンスモードで動作している場合は、すべてのキャッシュウェイがオンにされてもよく、一方、節電モードで動作している場合は、1/2の数のキャッシュウェイがオフにされてもよい。オンのままであるキャッシュウェイは、実行ユニット(単数または複数)124が、その中に記憶されているデータおよび/または命令を取り出すためにアクセス可能であってもよい。プロセッサ100がP3状態で動作している際、節電モードである場合は、1/4のキャッシュウェイのパワーがオンのままであってもよく、一方、パフォーマンスモードである場合は、1/2のキャッシュウェイがパワーをオンにされてもよい。P4およびP5状態では、パフォーマンスモードで動作している場合、1/4のキャッシュウェイがパワーをオンにされてもよい。節電モードで動作している際、P4状態である場合は、1/4のキャッシュウェイがパワーをオンにされてもよく、一方、P5状態である際は、キャッシュは完全にパワーを遮断されてもよい。
【0028】
上記の表1に示される情報は、パワー管理ユニット150内の記憶構造内に記憶されてもよい。状態コントローラ135は、P状態、パフォーマンスモード、両方に関する情報、および/または他の情報を含んでもよい、プロセッサ100の特定の動作点を示す情報を、パワー管理ユニット150に提供してもよい。また、パワー管理ユニット150も、リタイアされる、またはリタイアされた命令に関する情報をリタイアキュー102から受信するように連結されてもよい。パワー管理ユニット150は、もしあれば、どのキャッシュサイズ決定アクションが行われるかを判定するために、状態コントローラ135および/またはリタイアメントキュー102から受信される情報を使用してもよい。他の実施形態では、パワー管理ユニット150は、上述される他のユニットの機能を組み込んでもよく、そのため、動作点およびリタイアされた命令に関する情報を、外部ソースから受信するというよりはむしろ生成することが可能であってもよい。
【0029】
示される実施形態では、状態コントローラ135は、プロセッサ100の動作点を制御するために、制御アクションを実施するように構成される。他の場所の中でも特に、状態コントローラ135によってリタイアキュー102および/または実行ユニット(単数または複数)124から受信される情報が、プロセッサ100の作業負荷を判定するために使用されてもよい。例えば、状態コントローラ135は、所与の時間間隔の間にリタイアされる命令の数および/または種類を追跡してもよい。同様に、コントローラ135は、実行のために発行された命令の数および種類に関する情報を、実行ユニット(単数または複数)124から受信してもよい。ここには明確に示されていないが、また、状態コントローラ135は、実行されるようスケジュールされる命令についての情報を提供し得る、
図1に示されるスケジューラ(単数または複数)118にも連結されてもよい。様々な実施形態では、状態コントローラ135は、他の処理ノード(例えば、マルチコアプロセッサ内の他のプロセッサコア、および/またはマルチプロセッサコンピュータ内の他のプロセッサ)から、それらの特定の動作点に関する情報を受信してもよい。
【0030】
状態コントローラ135によって様々なソースから受信される情報は、作業負荷、利用可能なパワー、パワーおよび周波数制限等の要因に基づき、プロセッサの適切な動作点を判定するために使用されてもよい。プロセッサ100(またはマルチコア実施形態の場合では、プロセッサ100のコア101)の特定の動作点が判定されると、状態コントローラ135は、状態変更を達成する様々なアクションを実施してもよい。この特定の実施形態では、状態コントローラ135は、動作電圧および/またはクロック周波数を変更して、プロセッサ100の動作点を変更するよう(上述されるように、他の実施形態では、これらの機能は、状態コントローラ135に組み込まれてもよいが)、クロックコントローラ136および可変電圧調節器137に信号を提供してもよい。加えて、信号は、動作点のいずれかの変更に関する情報をパワー管理ユニット150に提供するために、状態コントローラ135から提供されてもよい。さらに、パワー管理ユニット150は、もしあれば、L2キャッシュ140の動的サイズ決定に関してどのアクションが行われたかの情報を、状態コントローラ135に提供してもよい。
【0031】
キャッシュのパワー管理:
ここで、
図3を参照すると、キャッシュメモリの実施形態に連結される、パワー管理ユニットの一実施形態を図示するブロック図が示されている。示される実施形態では、パワー管理ユニット150は、キャッシュ140に連結される。この特定の実施例では、キャッシュ140は、1セット当たり(すなわち、グループ当たり)2つのウェイを有する、16ウェイセットアソシアティブキャッシュである。しかしながら、ウェイの数、セット(グループ)の数、またはグループ当たりのウェイの数がここに示されるものとは異なる、他の実施形態が可能であり、予想される。さらに、また、直接マップキャッシュまたはフルアソシアティブキャッシュも、本明細書に記載される様々な方法および装置実施形態での使用が可能であり、予想される。
【0032】
示される実施形態では、パワー管理ユニット150は、複数のPMOS(p型金属酸化物半導体)トランジスタ152のそれぞれに連結される。示される実施形態では、PMOSトランジスタ152は、大域パワーノードVDDを対応する局所電圧ノード154に連結するため、またはそれから切断するためのスイッチとしての機能を果たす。他の実施形態では、ここに示される単一のPMOSトランジスタ152の代わりに、パスゲート等のデバイス/回路が使用されてもよい。一般的に、大域電圧ノードを局所電圧ノードに連結するため、およびそれから切断するために、任意の好適なスイッチングデバイスが実装されてもよい。また、スイッチングデバイスが、局所接地ノードを大域接地ノードに連結するため、それから切断するために使用される実施形態が可能であり、予想されることにも留意する。大域電圧ノードを局所電圧ノードと連結し、それから切断する、スイッチングデバイスと併せて、またはその代替として、そのようなスイッチングデバイスが使用されてもよい。
【0033】
PMOSトランジスタ152のそれぞれは、そのそれぞれのゲート端子がローで駆動される際にオンにされてもよい。本実施形態では、パワー管理ユニット150は、実施形態に示される2つのウェイの各グループへのパワー遮断信号(「PwrDnセット0」、「PwrDnセット1」等)を駆動するように構成される。特定のグループのウェイがパワーを遮断される場合、パワー管理ユニット150によって、その対応するパワー遮断信号がハイに駆動されてもよい。対応するPMOSトランジスタ152は、そのゲート端子へのハイ信号に応えて、作動停止されてもよい。PMOSトランジスタ152が作動停止される際、大域パワーノードVDDからのパワーは、対応するグループのウェイに連結される局所パワーノードから切断される。したがって、示される実施形態では、パワー管理ユニット150は、他のグループから独立したグループのうちの任意の1つのパワーを選択的に遮断してもよい。動作点の変更に応えて、多数のグループ(例えば、総数の1/2)のパワーを遮断する際、パワー管理ユニット150は、隣接するグループのパワーを遮断してもよく、隣接しないグループのパワーを選択的に遮断してもよく、またはこれらの2つの任意選択の組み合わせを実施してもよい。
【0034】
図4は、パワー管理ユニットの一実施形態のブロック図である。示される実施形態では、パワー管理ユニット150は、様々なソースから情報を受信するように連結され、もしあれば、どのキャッシュサイズ変更アクションが行われるかを判定するように構成される、決定ユニット156を含む。加えて、決定ユニット156は、様々なユニットによって内部で使用されてもよい、ステータスの変更(例えば、キャッシュサイズ変更アクション)を示す信号を提供するように構成される。本実施形態では、外部ソースから情報を受信するように構成されるパワー管理ユニット150のユニットには、活動モニタ164、CIPS(1秒間にコミットされる命令)ユニット154、状態変更検出器152、および決定ユニット156が挙げられる。通知ユニット160およびスイッチングユニット158は、パワー管理ユニット150の外部ユニットに情報を提供するように構成される。加えて、パワー管理ユニット150は、滞留タイマ166と、ダウン比較器168と、アップ比較器170とを含む。
【0035】
示される実施形態では、状態変更検出器152は、状態コントローラ135から動作点の変更を示す信号を受信するように連結される。動作点情報は、P状態、モード(すなわち、節電またはパフォーマンス)、およびプロセッサ100の動作点に関する任意の他の関連情報を含んでもよい。状態変更検出器152は、動作点が変更されたことを示す信号(単数または複数)(「動作点変更」)を決定ユニット156に提供してもよく、ならびに、新しい動作点を識別する情報を提供する。
【0036】
決定ユニット156は、キャッシュサイズ変更アクションが必要であるか否かを、必要であれば、どの具体的なアクションを行うかと共に示すために、処理ノード(コア101またはプロセッサ100全体であってもよい)の状態に関する情報を使用してもよい。加えて、また、決定ユニット156は、マルチコアプロセッサ実施形態および/またはマルチプロセッサコンピュータシステム内の他の処理ノードの状態に関する情報も使用してもよい。そのようなシステムは、1つのノードが、より少ないパワーを消費する状態に入る際、作業負荷需要を満足するために、必要に応じて、別のノードがより多くのパワーを消費し得るように、処理ノードの間でパワーを再度割り振ってもよい。
【0037】
決定ユニット156が、選択されるウェイまたはセットのパワーを遮断することによって、またはパワーを投入することによって、キャッシュがサイズ変更されると判定する場合、1つ以上の信号(「キャッシュサイズ変更」)が、スイッチングユニット158に送信されてもよい。これらの信号の受信に応えて、スイッチングユニット158は、選択されるキャッシュウェイもしくはセットのパワーを投入するため、またはパワーを遮断するための1つ以上の信号(「Pwr Dn [N:0]」)を生成してもよい。対応する実施例として
図3の実施形態を使用して、スイッチングユニット158は、PMOSトランジスタ152のゲート上で受信されてもよい、1つ以上のアクティブハイ信号をアサートし、それによってキャッシュウェイの対応するセットのパワーを遮断してもよい。選択されるキャッシュウェイまたはセットがパワーを投入される場合、スイッチングユニット158は、アクティブロー信号をアサート解除し、対応するPMOSトランジスタ152のゲート端子上にローをもたらし、したがって、それらの作動およびキャッシュウェイの対応するセットのパワーの投入をもたらしてもよい。ここで、本実施例は、1つの可能な実施形態でしかなく、そのような信号は、キャッシュウェイ/セットを大域電圧供給ノードおよび/または接地ノードに連結する、それから切断するために使用されるスイッチングデバイスに従って、アクティブハイまたはアクティブローであってもよいことが留意される。
【0038】
キャッシュがサイズ変更されると、決定ユニット156は、変更の通知(「キャッシュステータス変更」)を通知ユニット160に送信してもよい。今度は、通知ユニット160が、他の処理ノードに、変更の詳細(例えば、パワーが遮断もしくは投入されたキャッシュウェイまたはセットの数)、キャッシュの種類(例えば、L1、L2、L3等)等に関する情報を含む、それらに変更を知らせる情報(「ステータス変更通知」)を送信してもよい。別の実施形態では、以下により詳細に記載されるように、通知ユニット160は、プロセッサ100の様々なユニットの間でパワーを割り振るために使用されてもよい、キャッシュのサイズ変更に関する情報をコントローラに送信してもよい。
【0039】
キャッシュサイズ変更の通知を通知ユニット160に送信することに加えて、また、決定ユニット156は、同一の情報を滞留タイマ166にも提供してもよい。滞留タイマ166の場合では、情報は、信号のリセットとして使用される単一の信号に削減されてもよい。信号を受信すると、滞留信号が実行開始されてもよく、キャッシュサイズ変更からの現在の時間を提供してもよい。時間は、第1および第2の時間閾値と比較されてもよい。これらの閾値は、キャッシュサイズ変更アクションの最小滞留要件を示してもよい。一方の閾値は、サイズ拡大変更アクションの最小滞留(すなわち、より多くのキャッシュウェイ/セットがパワーを投入されるとき)を確立してもよく、一方、もう一方の閾値は、サイズ縮小変更アクションの最小滞留(すなわち、より多くのキャッシュウェイ/セットがパワーを遮断されるとき)を確立してもよい。
【0040】
アップ比較器170は、追加のウェイ/セットが、再度パワーを投入される前に、時間値を現在のキャッシュサイズの最小滞留を確立する閾値と比較してもよい。ダウン比較器168は、追加のウェイ/セットが、再度パワーを遮断される前に、時間値を現在のキャッシュサイズの最小滞留を確立する閾値と比較してもよい。場合によっては、時間閾値は、同一であってもよく、したがって、ここに示される2つの比較器の代わりに、単一の比較器が使用されてもよい。また、閾値がプログラム可能であり得る、および/またはプロセッサまたは処理ノードの具体的な動作点に基づいて変更し得る実施形態も可能であり、予想される。例えば、バッテリ(または節電モード)で動作している際、サイズ拡大変更アクションの最小滞留は、パフォーマンスモードで動作している際より長くてもよい。同様に、キャッシュのサイズ縮小変更の最小滞留は、節電モードで、パフォーマンスモードより小さくてもよい。パフォーマンスモードで動作している際、最小滞留が、サイズ拡大変更アクションでより短く、サイズ縮小変更アクションでより長い、逆の場合が真であってもよい。
【0041】
示される実施形態では、決定ユニット156は、アップ比較器170から第1の信号(「Up Res」)を受信し、ダウン比較器168から第2の信号(「Down Res」)を受信するように連結される。これらの信号は、それらのそれぞれの比較器が、滞留時間166から受信される時間値がそれらのそれぞれの閾値を超えると判定する際にアサートされてもよい。決定ユニット156は、これらの信号のうちの一方または両方がアサートされない場合に、さらなるキャッシュサイズ変更アクションを禁止してもよい。例えば、そうでなければ追加のキャッシュウェイ/セットのパワーを投入することによるキャッシュのサイズ変更をもたらし得る動作点変更が実施される場合、アップ比較器170がUp Res信号をアサートするまで、サイズ変更アクションが禁止され、それによって、追加のウェイ/セットのパワーをオンにする前に、現在のキャッシュサイズの最小滞留が確立されたことを示してもよい。同様に、そうでなければ追加のウェイ/セットのパワーを遮断することによるキャッシュのサイズ変更をもたらし得る動作点変更が実施される場合、決定ユニット156は、ダウン比較器168が追加のサイズ縮小変更アクションの最小滞留が確立されたことを示すまで、キャッシュのサイズ縮小変更を禁止してもよい。アップ比較器170およびダウン比較器168によって判定される滞留要件を使用することによって、決定ユニット156は、キャッシュのスラッシング、すなわち、キャッシュの過度に頻繁なサイズ変更を防止してもよい。そのようなスラッシングは、過剰なパワー消費、パワー供給ノイズの増加をもたらし得、プロセッサ計算パフォーマンスを悪化させ得る。
【0042】
示される実施形態では、パワー管理ユニット150は、命令実行活動を監視するように構成される、活動モニタ164を含む。本実施形態では、活動モニタ164は、実行ユニット(単数または複数)124(例えば、
図2の)から情報を受信するように連結される。実行ユニット(単数または複数)124から受信される情報を使用して、活動モニタは、所定の時間間隔にわたる、対応する処理ノード(例えば、この場合ではコア101)の平均活動を計算してもよい。活動モニタ164は、実行される命令についての情報、パイプラインのストールについての情報、または実行ユニット(単数または複数)の活動を示す任意の他の種類の情報を受信してもよい。そのような情報は、キャッシュがサイズ変更され得るか否かの判定において有用であり得る。例えば、活動モニタ164が、各時間間隔において、パイプラインストールに著しい時間量が費やされると判定する場合、キャッシュミスに関連する追加の待ち時間が、パフォーマンス全体への大きい影響を有する可能性がより小さいため、キャッシュをサイズ縮小変更することが可能であり得る。一方、活動モニタ164が、大きい数の命令が各間隔中に実行される(比較的フルのパイプラインを示す)と判定する場合、キャッシュミスによる高待ち時間および見込まれるパイプラインストールがパイプライン効率に悪影響を及ぼす可能性があるため、キャッシュをサイズ拡大変更することが望まれ得る。
【0043】
活動モニタ164によって生成される活動情報は、決定ユニット156(「平均ノード活動」)に提供されてもよく、キャッシュをサイズ変更することが必要であるか否かの判定において使用されてもよい。いくつかの実施形態では、またはいくつかの動作モードでは、この情報は、キャッシュサイズ変更動作の必要性を判定するために、決定ユニット156によって排他的に使用されてもよい。他の実施形態では、活動モニタ164から受信される情報は、決定ユニット156によって受信される他の情報と併せて使用されてもよい。
【0044】
また、パワー管理ユニット150は、結果がレジスタにコミットされる、1秒間の間隔の間に実行される命令の数を示す情報を受信し得る、CIPSユニット154も含む。上述されるように、CIPSは、「1秒間にコミットされる命令」であり、したがって、プロセッサの作業負荷を示す。示される実施形態では、CIPSユニット154は、リタイアメントキュー(例えば、
図1および
図2のリタイアメントキュー102)からリタイアされる命令に関する情報を受信するように連結される。CIPSユニット154は、所定の間隔内にリタイアされる命令の数を判定してもよく、CIPS値を外挿するために、この値を使用してもよい。したがって、CIPS値は、命令が実行され、実際にリタイアされる速度を示し得る(例えば、分岐予測ミスにより、投機的に実行され、リタイアされない、いくつかの命令とは対照的に)。CIPS値は、決定ユニット156がキャッシュサイズ変更を実施するか否かを判定するために使用可能である追加の情報を生成するために、他の値と併せて使用されてもよい。この特定の実施形態では、CIPSユニット154は、比較の基準として閾値および合計値の両方を使用して、閾値およびガードバンド(またはヒステリシス)値の合計を計算してもよい。CIPSユニット154は、第1の信号(「CIPS>閾値+ガードバンド」)、第2の信号(「CIPS<閾値」)をアサートしてもよく、または信号をアサートしなくてもよい。決定ユニット156は、第1および第2の信号を受信するように連結され、所与の間隔の間に、これらの信号のうちのいずれかがアサートされたか否かを判定してもよい。一実施形態では、以下の表2に基づくキャッシュサイズ変更アクションが行われてもよい。
【表2】
【0045】
上記の表2には、決定ユニット156の一実施形態が、キャッシュサイズ変更アクションを実施するか否かの判定、ならびにどのアクションであるかの判定において、P状態およびCIPS値の両方を考慮し得る、実施例が示されている。この特定の実施形態では、各P状態は、そのP状態に特有の閾値と関連付けられる。しかしながら、すべてのP状態に対して単一の閾値が使用される実施形態、ならびに追加の閾値(例えば、パフォーマンスモードで動作している際の所与の状態の第1の閾値、および節電モードで動作している際の所与の状態の第2の閾値)が可能である実施形態が可能であり、予想される。
【0046】
本実施形態では、P状態0およびP状態1では、キャッシュサイズは、そのフルサイズのままである。処理ノードが、P状態2で動作している場合、さらなる状態変更のない、キャッシュサイズ変更動作を判定するために、判定されるCIPS値が使用されてもよい。CIPS値が合計(すなわち、閾値2+ガードバンド)を超える場合、キャッシュは、その以前のサイズに関わらず、そのフルサイズにサイズ拡大変更されてもよい。この場合、CIPS値は、リタイアされる命令の高速、したがって、高作業負荷または数値計算限界作業負荷を示す。CIPS値が閾値(閾値2)未満である場合、キャッシュは、フルサイズキャッシュから1/2キャッシュにサイズ変更されてもよい。CIPS値が閾値は超えるが、合計値未満である場合、本実施例では、キャッシュはサイズ変更されない。P状態3およびP状態4のキャッシュサイズ変更アクションを判定するためのアルゴリズムは、本実施形態のP状態2と同様であり、主として、使用される閾値、および結果としてもたらされる、使用される合計値が異なる。CIPSユニット154によって利用されてもよい、アルゴリズムの追加の実施形態が、以下により詳細に記載される。
【0047】
キャッシュがサイズ変更されると、決定ユニット156は、変更の通知(「キャッシュステータス変更」)を通知ユニット160に送信してもよい。今度は、通知ユニット160が、他の処理ノードに、変更の詳細(例えば、パワーが遮断もしくは投入されたキャッシュウェイまたはセットの数)、キャッシュの種類(例えば、L1、L2、L3等)等に関する情報を含む、それらに変更を知らせる情報(「ステータス変更通知」)を送信してもよい。
【0048】
また、追加の要因には、特定のプログラムまたは命令のシーケンスが、プロセッサ限界またはメモリ限界であるか否かの判定も挙げられる。数値計算限界アプリケーションは、頻繁なキャッシュアクセスを要求し得、待ち時間耐性がない場合があり、したがって、最大キャッシュサイズで、より高いパフォーマンスを達成し得る。メモリ限界アプリケーションは、より長い実行ストールを伴う、頻繁なメモリアクセス(キャッシュ内に記憶されている情報の高回転をもたらす)を実施し得、したがって、キャッシュミスによるペナルティが予期されるため、より長い待ち時間耐性であり得る。したがって、メモリ限界アプリケーションでは、キャッシュサイズは、パフォーマンスに著しい影響を及ぼすことなく縮小され得る。そのような情報は、処理ノードが実装されているコンピュータシステム上で実行されているオペレーティングシステムを介して、決定ユニット156に提供されてもよい。
【0049】
したがって、パワー管理ユニット150の決定ユニット156は、多数の異なる要因に基づき、どのキャッシュサイズ変更動作が実施されるかを判定してもよい。これらの要因には、P状態、動作モード(節電またはパフォーマンス)、CIPS、平均活動、ならびに他の処理ノードおよびパワー割り振りに関する情報が挙げられる。決定ユニット156は、キャッシュサイズ変更情報を、これらの要因のうちの1つ、またはこれらの任意の組み合わせに基づくように構成可能であってもよい。
【0050】
ここで、
図5を参照すると、プロセッサの異なる動作点のキャッシュメモリの動的制御を図示する、一連のブロック図が示されている。示される実施形態では、キャッシュ140は、セットまたはグループ当たり4つのウェイを有する、16ウェイセットアソシアティブキャッシュである。しかしながら、上述されるように、また、直接マップおよびフルアソシアティブキャッシュのように、異なる数のウェイ、グループ、またはグループ当たりのウェイを有する実施形態も可能であり、予想される。一般的に、本明細書の開示に係るキャッシュサイズ変更は、所与の実現形態に適した任意の特定の粒度で実施されてもよい。
【0051】
示される実施例(a)では、キャッシュ140のすべてのウェイがオンである。このキャッシュサイズは、キャッシュ140が実装されるプロセッサのパフォーマンス需要が高い際に利用されてもよい。上述される様々な実施形態によると、他の実施例の中でも特に、P状態0で動作している際、パフォーマンスモードで動作している際、高CIPS値が検出される際、または高平均活動レベルが検出される際に、すべてのキャッシュウェイがオンであってもよい。
【0052】
示される実施例(b)では、16のキャッシュウェイのうちの8のキャッシュウェイが、パワーを遮断されており、残りのキャッシュウェイは、依然としてパワーがオンであり、アクセス可能である。状態(a)から状態(b)への遷移は、より低いパワーP状態へ(例えば、P状態1からP状態2へ)の遷移と併せて、特定のP状態である際(例えば、P状態2で動作している際)のパフォーマンスモードから節電モードへの遷移と併せて、より低いCIPSレベルが検出される際に併せて、またはより低い平均活動レベルが検出される際に併せて実施されてもよい。
【0053】
(c)では、さらに別のキャッシュサイズ変更アクションが行われており、このとき、パワーがオンのウェイは8ウェイから4ウェイに半分に減少される。このキャッシュサイズ変更をトリガする事象は、上述されるものと同様であってもよい。本実施例では、16の総キャッシュウェイのうちの12のキャッシュウェイがパワーを遮断されるが、4つのウェイは、処理ノードの実行ユニットがデータおよび/または命令に依然としてアクセス可能であってもよい。
【0054】
(d)では、すべてのキャッシュウェイがパワーを遮断されている。このキャッシュサイズ変更アクションは、最低次P状態(例えば、上述される実施例のP状態5)、スリープモード等に入るのに応えて実施されてもよい。
【0055】
図5に示される(a)から(d)へのシーケンスは、逆に実施されてもよい。例えば、
図5に示されるキャッシュ140の実施形態では、すべてのキャッシュウェイがパワーをオフにされるスリープモードを出る場合、少なくとも4つ以上のキャッシュウェイがパワーをオンにされてもよい。平均活動の増加、CIPS値の増加、より高いP状態へ(例えば、P状態3からP状態2へ)の遷移、または節電モードからパフォーマンスモードへの遷移は、キャッシュ140をサイズ拡大変更するために、キャッシュウェイのパワーをオンにすることをトリガし得るアクションである。さらに、
図5に示されるシーケンス内の各ステップに遷移することは、必ずしも必要ではないことが留意される。例えば、一実施形態では、パフォーマンス需要の急増(例えば、高CIPS値の検出による)が、(c)から(a)への直接ジャンプをもたらしてもよい。
【0056】
キャッシュサイズ変更アクションをトリガする、上述される事象は、例示であり、他のトリガ事象に応えてキャッシュサイズ変更アクションが実施され得る実施形態が可能であり、予想されることが留意される。さらに、キャッシュサイズ変更アクションは、特定の事象から独立して行われてもよい。
図4のパワー管理ユニット150の実施例を使用して、決定ユニット156は、P状態の変更、動作モードの変更、または他の種類の動作点変更の通知を受信してもよい。いくつかの実施形態では、これらの変更は、キャッシュ140がサイズ変更されるか否かの決定が要因であってもよいが、それら自体は、変更をトリガしない。
【0057】
図5の実施例では、キャッシュウェイは、すべてのウェイがパワーをオフにされる状態に入る際またはそれを出る際を除き、2の累乗でパワーを投入または遮断される。したがって、サイズ縮小アクションでは、パワーが遮断されるキャッシュウェイの数は、元の16ウェイから8ウェイに減少し、次いで4ウェイ、そして0ウェイに進む。同様に、キャッシュをサイズ拡大する際、アクションは、4ウェイをオンにし、次いで8ウェイ、次いで16ウェイにサイズ拡大することを含む。しかしながら、ここに記載される増分とは異なる増分でサイズ縮小およびサイズ拡大アクションが実施される実施形態が可能であり、予想されることが留意される。例えば、16ウェイキャッシュが2ウェイの増分でサイズ縮小またはサイズ拡大され得、8つの可能なキャッシュサイズを可能にする実施形態が可能であり、予想される。また、キャッシュがキャッシュサイズ増分当たり1ウェイずつサイズ縮小またはサイズ拡大され得る実施形態も可能であり、予想される。
【0058】
動的キャッシュ制御のための方法フロー:
図6および
図7は、キャッシュのサイズを動的に制御するための方法の2つの可能な実施形態を図示する。これらの実施形態は、例示であり、他の実施形態が可能であり、予想されることに留意されたい。また、上述されるパワー管理ユニット150の特定の実施形態に、多数の異なる方法が利用可能であり得、これらの方法は、場合によっては組み合わせ可能であり得ることも留意される。例えば、
図6および
図7を参照して記載される方法実施形態は、プロセッサ動作点の変更に応えて、キャッシュサイズ変更が実施されるか否かを判定するために、部分的に、または完全に組み合わせられてもよい。
【0059】
ここで、
図6を参照すると、動的キャッシュ制御の方法の一実施形態のフロー図が図示されている。示される実施形態では、方法600は、第1の動作点で動作しているプロセッサ(ブロック605)で開始する。本実施例の目的のために、動作点は、特定のスキームの最高パフォーマンス動作点(例えば、上記に提示される表1に係るP状態0)と見なされてもよい。示される実施形態では、動作点の変更が実施されない場合(ブロック610、いいえ)、キャッシュサイズ決定アクションは実施されず(ブロック612)、動作は、第1の動作点で継続する。しかしながら、動作点が変更する場合(ブロック610、はい)、キャッシュのサブセットのウェイは、パワーを遮断されてもよい(ブロック615)。サブセットは、単一のウェイのみ、グループのウェイ、または複数のグループのウェイを含んでもよい。
【0060】
動作点変更の後、プロセッサ動作は、依然としてパワーが投入されている残りのウェイ内のキャッシュのアクセスを含んでもよい、命令の処理を継続してもよい(ブロック620)。動作点が再度変更されていない場合(ブロック625、いいえ)、さらなるキャッシュサイズ変更アクションは行われず(ブロック627)、命令の処理ならびにパワーが投入されたままである任意のキャッシュウェイからのデータおよび/または命令へのアクセスを含む動作は、最も最近の動作点で継続してもよい(ブロック620)。
【0061】
別の動作点変更が実施され(ブロック625、はい)、かつより低いパフォーマンスまたはより低いパワー状態への下方動作点変更である場合(ブロック630、下方)、キャッシュの追加のウェイがパワーを遮断されてもよい(ブロック640)。命令の処理が継続されてもよく、これは、パワーが投入されたままである任意のキャッシュウェイのアクセスを含んでもよい(ブロック642)。別の動作点変更が実施され(ブロック625、はい)、かつより高いパフォーマンス状態またはより高いパワー消費が許可される状態への動作点変更である場合(ブロック630、アップ)、キャッシュは、以前にパワーが遮断されたキャッシュウェイに選択的にパワーを投入することによってサイズ拡大変更されてもよい(ブロック635)。新しい動作点が最高パフォーマンス動作点である場合(ブロック645、はい)、すべてのキャッシュウェイがパワーをオンにされてもよい(ブロック650)。新しい動作点が最高パフォーマンス動作点ではない場合(ブロック645、いいえ)、いくつかのキャッシュウェイはパワーを遮断されたままであり、一方、パワーが投入されているキャッシュウェイがデータおよび/または命令の取り出しのためにアクセスされ得る動作が実施されてもよい。
【0062】
したがって、
図6の実施形態によると、方法600は、動作点が最大パフォーマンスのうちの1つから最小パワー消費のうちの1つに向かって進む際、キャッシュの漸進的サイズ縮小変更を実施してもよい。キャッシュサイズ変更動作の増分の数は、動作点の数(例えば、P状態の数)、キャッシュウェイまたはウェイのグループの数、キャッシュがパワーを遮断される増分のサイズおよび様式(例えば、フルから1/2、1/4等)等に依存してもよい。同様に、方法600は、プロセッサの動作点が最小パワー消費のうちの1つから最大パフォーマンスに進む際、キャッシュの漸進的サイズ拡大変更を実施してもよい。
【0063】
図7を参照して記載されるサイズ変更アクションのそれぞれについて、サイズ変更アクションが行われる前に、滞留要件が確立されなければならない場合があることが留意される。例えば、ブロック640で、前回のキャッシュサイズ変更アクションから十分な時間量が経過していない場合、追加のキャッシュウェイのパワーの遮断は、禁止または遅延されてもよい。いったん特定の時間量が経過すると、滞留要件は確立されたと見なされてもよく、その後、サイズ変更アクションが行われてもよい。キャッシュサイズ変更アクションに続いてキャッシュサイズの滞留要件を確立することは、過度に頻繁にキャッシュサイズ変更が実施されることを防止し得る。過度に頻繁なキャッシュサイズ変更は、より多くのパワーを消費し得、処理パフォーマンスを悪化させ、頻繁な間隔でキャッシュウェイのパワーをオンおよびオフすることによってもたらされる頻繁な過渡電流により、配電システムに望ましくないノイズをもたらす場合がある。したがって、これらの望ましくない影響は、滞留要件の使用によって防止され得る。滞留要件を確立し、施行するために、
図4の滞留タイマ166等の滞留タイマが使用されてもよい。
【0064】
図7は、動的キャッシュ制御の方法の別の実施形態のフロー図である。この特定の実施形態では、方法700は、CIPS値に基づき、キャッシュサイズ変更アクションが行われるか否かを判定することを目的とする。以前に上述されたように、CIPS値は、リタイアされる命令に関する情報を受信し、特定の時間間隔の間にリタイアされる(すなわち、命令実行の結果がレジスタにコミットされる)命令の数を判定し、1秒間のこの値を外挿することによって判定されてもよい。
【0065】
本実施形態では、方法700は、新しい時間間隔の開始(ブロック701)で開始する。結果がレジスタにコミットされた、最も最近の前回の時間間隔内にリタイアされた命令の数を判定するために、集計が取られてもよい。この値から、CIPS値が判定されてもよい(ブロック705)。CIPS値を判定することに加えて、閾値およびガードバンド値の合計が計算されてもよい(ブロック707)。
【0066】
また、閾値がP状態に依存しない(例えば、すべてのP状態に対して同一である)実施形態も可能であり、予想されるが、一実施形態では、閾値は、プロセッサが動作している特定のP状態に依存してもよい。閾値は、所与の間隔について判定されるCIPS値の比較目的に使用される、特定のCIPS値であってもよい。ガードバンドは、特定の要因が考慮され得ること(例えば、パイプラインのフラッシングを引き起こす分岐予測ミス)を保証するように比較のための追加の余地を提供する、CIPS値であってもよい。いくつかの実施形態では、ガードバンドは、CIPS計算/判定に含まれ、したがって、別個のガードバンドを含む必要がなくてもよい。
【0067】
CIPS値および合計が判定された後、CIPS値は、閾値および合計の両方と比較されてもよい(ブロック710)。CIPS値が閾値およびガードバンドの合計を超える場合(ブロック715、はい)、キャッシュは、既にパワーがオンにされていない場合は、すべてのキャッシュウェイのパワーをオンにするようにサイズ変更されてもよい(ブロック730)。CIPS値が合計未満であり(ブロック715、いいえ)、かつ閾値未満である場合(ブロック720、はい)、キャッシュウェイの総数のサブセットのパワーを選択的に遮断することによって、キャッシュサイズ変更が実施されてもよい(ブロック735)。キャッシュサイズ変更アクションが行われた後、次の間隔が開始するまで、さらなるアクションが行われなくてもよい(ブロック701)。
【0068】
CIPS値が合計値未満ではあるが(ブロック715、いいえ)、閾値を超える(ブロック720、いいえ)場合、キャッシュサイズは、変更されないままであってもよい(ブロック725)。次の間隔が開始するまで、さらなるキャッシュサイズ変更アクションが実施されなくてもよい(ブロック701)。
【0069】
実施形態700の多くの変形が可能であり、予想される。例えば、CIPS値が合計値を超えるのに応えて、すべてのキャッシュウェイのパワーをオンにする代わりに、キャッシュウェイの選択されるサブセットがパワーをオンにされてもよい。これは、前回の間隔より多くのウェイがパワーをオンにされてもよいが、すべてではないがいくつかのキャッシュウェイがパワーをオンにされる状況をもたらしてもよい。さらに、上述されるように、方法700は、方法600の様々な実施形態またはキャッシュサイズ変更アクションを判定するための任意の他の好適な方法論と併せて使用されてもよい。
【0070】
CIPS値は、キャッシュ容量に依存し得るため、別の変形は、現在パワーが投入されているキャッシュウェイの数に基づき、異なるCIPS閾値を使用することを可能にしてもよい。したがって、そのような実施形態では、キャッシュウェイがパワーを遮断された場合、また、CIPS閾値もそれに応じて減少されてもよい。一般的に、各閾値が、パワーがオンまたはオフであるウェイの数に基づく特定のキャッシュ容量に対応する、多数の異なるCIPS閾値を使用することができる。
【0071】
マルチコアプロセッサ実施形態:
図8は、マルチコアプロセッサの一実施形態のブロック図である。示される実施形態では、プロセッサ100は、2つのプロセッサコア101を含む。しかしながら、追加のコアを有する実施形態が可能であり、予想され、これらのコアは、相互と同一であってもよく(すなわち、プロセッサ100が対称型マルチコアプロセッサである)、またはコアのいくつかは、相互と異なってもよい(すなわち、プロセッサ100が非対称型またはヘテロジニアスマルチコアプロセッサである)。示される実施形態では、各コア101は、実行ユニット(単数または複数)124と、L1キャッシュ117と、パワー管理ユニット150とを含む。各コア101は、
図1および
図2を参照して上述されるプロセッサ実施形態に係る、追加のユニットを含んでもよい。さらに、L1キャッシュ117は、これらと同一の図面に従って、別個の命令およびデータキャッシュに分割されてもよい。
【0072】
コア101のそれぞれの中のパワー管理ユニット150は、本明細書に記載される様々な方法論を使用して、そのそれぞれのL1キャッシュ117のサイズ変更を実施するように構成されてもよい。コア101の各パワー管理ユニット150は、
図4に示されるパワー管理ユニット150と同様に配設されてもよい。したがって、対応するL1キャッシュ117をサイズ変更するか否かの判定、ならびにサイズ変更が実施されると判定される場合に、これらのキャッシュをどのようにサイズ変更するかの判定において、多数の異なる要因が考慮されてもよい。
【0073】
各コア101内のパワー管理ユニット150に加えて、プロセッサ100は、L2キャッシュ140に対してサイズ変更アクションを実施するように構成される、別のパワー管理ユニット150を含む。L2キャッシュ140に対して実施されるサイズ変更アクションを判定するために使用される様々な方法論は、任意の上述されるものを含んでもよい。
【0074】
明確に示されていないが、また、プロセッサ100のいくつかの実施形態は、L3キャッシュも含んでもよい。そのような実施形態では、L3キャッシュの含有には、パワー管理ユニット150の別のインスタンスの含有を伴ってもよい。代替として、単一のパワー管理ユニット150が、L2キャッシュおよびL3キャッシュの両方を制御するために利用されてもよい。一般的に、特定のプロセッサ実施形態内に含まれるキャッシュの数は、制限されない。さらに、記載は、データおよび/または命令を記憶するキャッシュを対象としているが、また、本明細書に記載される動的キャッシュ制御は、アドレス変換情報を記憶するために使用されるトランスレーションルックアサイドバッファ(TLB)等の他の種類のキャッシュメモリにも適用されてもよい。
【0075】
また、プロセッサ100は、パワー管理ユニット150のそれぞれに連結されるコントローラ170も含む。いくつかの実施形態では、コントローラ170は、そうでなければ
図2に示される状態コントローラ135によって提供される機能を提供してもよい。ここでは明確に示されていないが、プロセッサ100は、プロセッサ100の他のユニットと同一のICダイ上に実装される、クロック制御回路および可変電圧調節器(例えば、
図2に示されるクロック制御回路136および可変電圧調節器137)を含んでもよい。一実施形態では、ICダイに対して全体として設定される場合、電圧は、すべてのコア101のP状態に必要とされる最大電圧に設定されてもよい。別の実施形態は、コア101のいずれかに必要とされる最高パフォーマンスP状態に基づき、すべてのコアのP状態を設定する、ソフトウェアを伴ってもよい。一般的に、コントローラ170は、各コア101ならびに全体としてのプロセッサ100の動作電圧およびクロック周波数(すなわち、P状態)を設定するように構成されてもよい。場合によっては、コア101のP状態は、全体としてのプロセッサ100のP状態によって制約されてもよい。さらに、示される実施形態では、コントローラ170は、コア101のP状態を相互に対して個別に設定するように構成される。プロセッサコア101のうちの1つまたはすべての増加した作業負荷に応えて、コントローラ170は、需要を満足するために、それらのそれぞれのP状態を増加してもよく、および/または全体としてのプロセッサ100のP状態を増加してもよい。
【0076】
コントローラ170は、コア101および全体としてのプロセッサ100のP状態を制御し得るため、したがって、コントローラ170は、制御コア101の間でのパワー割り振りを制御してもよい。例えば、コア101のうちの第1のコアL1キャッシュがサイズ縮小変更される場合(例えば、低CIPS値に応えて)、コントローラ170は、節約されるパワーを第2のコア101に割り振ってもよく、また、より大きい作業負荷需要を満足するように、そのP状態を調整してもよい。場合によっては、コントローラ170は、キャッシュサイズ縮小変更による利用可能な過剰なパワーの結果として、過剰なパワーを1つ以上の追加のコアに割り振ってもよい。そのような状況では、また、コントローラ170は、コアのP状態も調整してもよい。そのコア101のP状態は、より大きい作業負荷需要を満足することを可能にする。場合によっては、コントローラ170は、コア101の1つ以上に過剰なパワーを割り振ることを可能にするために、L2キャッシュ140に連結されるパワー管理ユニット150に、サイズを縮小変更するよう命令してもよい。
【0077】
コントローラ170は、L1キャッシュおよびL2キャッシュのそれぞれのステータスに関する情報を、それらのそれぞれのパワー管理ユニット150内に実装される通知ユニット160から受信してもよい。また、コントローラ170は、1つ以上のコア101のP状態の更新等の様々なステータス変更を示す情報を、パワー管理ユニット150のそれぞれの決定ユニット156に送信してもよい。
【0078】
一般的に、コントローラ170は、コア101、L2キャッシュ140によるパワー使用量を追跡してもよく、また、プロセッサ100の他のユニット(例えば、メモリコントローラ)のパワー使用量も追跡してもよく、追跡されるパワー使用量に基づき、パワー制御および割り振りアクションを実施してもよい。コア101、L2キャッシュ140、およびプロセッサ100の他のユニットのパワー使用量に関する情報に基づき、プロセッサ100に消費されたパワー1ワットあたりのそのパフォーマンスを最大化させるために、コントローラ170は、パワー割り振りアクションを実施してもよい。
【0079】
コンピュータシステム:
ここで、
図9を参照すると、コンピュータシステム300の実施形態が示されている。
図9の実施形態では、コンピュータシステム300は、いくつかの処理ノード100A、100B、100C、および100Dを含む。処理ノード100A〜100Dの1つ以上は、上述される
図1、
図2、または
図8の実施形態のうちの1つ、またはこれらの実施形態のうちの1つの変形に係る、プロセッサであってもよい。したがって、処理ノード100A〜100Dの1つ以上は、それぞれの処理ノード内に、上述される方法論の様々な実施形態に係る、1つ以上のキャッシュメモリの動的サイズ変更を実施するように構成される、1つ以上のパワー管理ユニット150を含んでもよい。
【0080】
各処理ノード100A〜100Dは、それぞれの処理ノード100A〜100D内に含まれるメモリコントローラ316A〜316Dを介して、それぞれのメモリ314A〜314Dに連結される。これらのメモリコントローラ316A〜316Dの1つ以上は、上述されるメモリコントローラ18の実施形態に従って構成されてもよい。したがって、そのように構成される処理ユニットでは、パワー管理は、対応するメモリサブシステムによるパワー使用を最小にするように行われてもよい。
【0081】
処理ノード100A〜100Dのそれぞれは、処理ノード100A〜100D間で通信するために使用される、インターフェース論理を含む。例えば、処理ノード100Aは、処理ノード100Bと通信するためのインターフェース論理318Aと、処理ノード100Cと通信するためのインターフェース論理318Bと、さらに別の処理ノード(図示せず)と通信するための第3のインターフェース論理318Cとを含む。同様に、処理ノード100Bは、インターフェース論理318D、318E、および318Fを含み、処理ノード100Cは、インターフェース論理318G、318H、および318Iを含み、処理ノード100Dは、インターフェース論理318J、318K、および318Lを含む。処理ノード100Dは、インターフェース論理318Lを介して、複数の入力/出力デバイス(例えば、デイジーチェーン構成のデバイス320A〜320B)と通信するように連結される。他の処理ノードは、他のI/Oデバイスと同様に通信してもよい。
【0082】
処理ノード100A〜100Dは、処理ノード間通信のためのパケットベースのリンクを実現する。本実施形態では、リンクは、一方向ラインのセットとして実現される(例えば、ライン324Aは、処理ノード100Aから処理ノード100Bにパケットを伝送するために使用され、ライン324Bは、処理ノード100Bから処理ノード100Aにパケットを伝送するために使用される)。他のセットのライン324C〜324Hは、
図4に図示されるように、他の処理ノード間でパケットを伝送するために使用される。一般的に、ライン324の各セットは、1つ以上のデータラインと、データラインに対応する1つ以上のクロックラインと、伝達されるパケットの種類を示す1つ以上の制御ラインとを含んでもよい。リンクは、処理ノード間の通信のためにキャッシュコヒーレント方式で動作してもよく、または処理ノードとI/Oデバイス(または周辺機器相互接続(PCI)バスまたは業界標準アーキテクチャ(ISA)バス等の従来の構成のI/Oバスへのバスブリッジ)との間の通信のために非コヒーレント方式で動作してもよい。また、処理ノードとI/Oデバイスとの間の通信がキャッシュコヒーレント方式で実施される実施形態も可能であり、予想される。さらに、リンクは、示されるようなI/Oデバイス間のデイジーチェーン構造を使用して、非コヒーレント方式で動作してもよい。1つの処理ノードから別の処理ノードに伝送されるパケットは、1つ以上の中間ノードを通過してもよいことが留意される。例えば、処理ノード100Aによって処理ノード100Dに伝送されるパケットは、
図9に示されるように、処理ノード100Bまたは処理ノード100Cのいずれかを通過してもよい。任意の好適な経路指定アルゴリズムが使用されてもよい。コンピュータシステム300の他の実施形態は、
図9に示される実施形態より多い、または少ない処理ノードを含んでもよい。
【0083】
一般的に、パケットは、ライン324上で1つ以上のビット時間としてノード間を伝送されてもよい。ビット時間は、対応するクロックライン上のクロック信号の立ち上がりまたは立ち下がりであってもよい。パケットは、トランザクションを開始するためのコマンドパケットと、キャッシュコヒーレンシを維持するためのプローブパケットと、プローブおよびコマンドに対する応答からの応答パケットとを含んでもよい。
【0084】
処理ノード100A〜100Dは、メモリコントローラおよびインターフェース論理に加えて、1つ以上のプロセッサを含んでもよい。概して、処理ノードは、少なくとも1つのプロセッサを備え、任意選択で、所望によりメモリおよび他の論理と通信するためのメモリコントローラを含んでもよい。より具体的には、各処理ノード100A〜100Dは、
図1に示されるプロセッサ10の1つ以上のコピー(例えば、
図2〜
図3に示される様々な構造的詳細および動作的詳細を含む)を備えてもよい。1つ以上のプロセッサは、処理ノード内に、もしくは処理ノードを形成する、チップ多重処理(CMP)またはチップマルチスレッド化(CMT)集積回路を備えてもよく、あるいは処理ノードは、任意の他の所望の内部構造を有してもよい。
【0085】
メモリ314A〜314Dは、任意の好適なメモリデバイスを備えてもよい。例えば、メモリ314A〜314Dは、1つ以上のRAMバスDRAM(RDRAM)、シンクロナスDRAM(SDRAM)、DDR SDRAM、スタティックRAM等を備えてもよい。コンピュータシステム300のアドレス空間は、メモリ314A〜314Dの間で分割される。各処理ノード100A〜100Dは、どのアドレスがメモリ314A〜314Dのどれにマップされているか、およびしたがって、特定のアドレスへのメモリ要求を処理ノード100A〜100Dのどれに経路指定するべきかを判定するために使用される、メモリマップを含んでもよい。一実施形態では、コンピュータシステム300内のアドレスのコヒーレント点は、アドレスに対応するバイトを記憶するメモリに連結される、メモリコントローラ316A〜316Dである。換言すれば、メモリコントローラ316A〜316Dは、対応するメモリ314A〜314Dへの各メモリアクセスが、確実にキャッシュコヒーレント方式で実施されるようにすることに関与する。メモリコントローラ316A〜316Dは、メモリ314A〜314Dとインターフェースをとるための制御回路を備えてもよい。加えて、メモリコントローラ316A〜316Dは、メモリ要求を待ち行列に入れるための要求キューを含んでもよい。
【0086】
一般的に、インターフェース論理318A〜318Lは、リンクからパケットを受信するため、およびリンク上を伝送されるパケットをバッファリングするための種々のバッファを備えてもよい。コンピュータシステム300は、パケットを伝送するための任意の好適なフロー制御機構を採用してもよい。例えば、一実施形態では、各インターフェース論理318は、そのインターフェース論理が接続される、リンクの反対側の受信器内の各種類のバッファのカウント数を記憶する。インターフェース論理は、受信インターフェース論理がパケットを記憶するための空きバッファを有するまで、パケットを伝送しない。パケットを前方へ経路指定することによって受信バッファが空く際、受信インターフェース論理は、バッファが空いたことを示すメッセージを送信インターフェース論理に伝送する。そのような機構は、「クーポンベース」システムと称されてもよい。
【0087】
I/Oデバイス320A〜320Bは、任意の好適なI/Oデバイスであってもよい。例えば、I/Oデバイス320A〜320Bは、デバイスが連結され得る別のコンピュータシステム(例えば、ネットワークインターフェースカードまたはモデム)と通信するためのデバイスを含んでもよい。さらに、I/Oデバイス320A〜320Bは、ビデオアクセラレータ、オーディオカード、ハードもしくはフロッピー(登録商標)ディスクドライブまたはドライブコントローラ、SCSI(小型コンピュータシステム用周辺機器インターフェース)アダプタおよび電話カード、サウンドカード、ならびにGPIBまたはフィールドバスインターフェースカード等の種々のデータ取得カードを含んでもよい。さらに、また、カードとして実装される任意のI/Oデバイスも、システム300の主回路基板上の回路として実装されてもよく、および/または処理ノード上で実行されるソフトウェアとして実装されてもよい。本明細書では、「I/Oデバイス」という用語、および「周辺デバイス」という用語は、同義語であることが意図されることが留意される。
【0088】
また、コンピュータシステム300は、処理ノード100A〜100Dのそれぞれに連結されるコントローラ170も含む。コントローラ170は、プロセッサレベルというよりはむしろシステムレベルで、
図8に示されるコントローラ170と同様の機能を実施してもよい。つまり、コントローラ170は、処理ノード100A〜100Dのそれぞれによるパワー使用量を追跡してもよく、それに応じてそれらの動作点を変更してもよく、処理ノードのうちの1つからのパワーを他の処理ノードの1つ以上に再度割り振ってもよい。ここでは、処理ノード100A〜100Dのそれぞれとは別個のコントローラ170が示されているが、処理ノードのうちの1つに実装されるコントローラ170が、システムレベルパワー追跡および割り振り機能を実施する実施形態が可能であることが留意される。
【0089】
上述されるプロセッサおよびシステムの様々な実施形態は、コンピュータシステムおよびそれらの対応するプロセッサを対象としていることが留意されるが、上述される方法および装置は、他の種類にも同様に適用され得ることが留意される。一般的に、キャッシュを含む任意の種類のプロセッサが、上述される動的キャッシュサイズ変更方法の実現形態に好適であり得る。さらに、また、サーバシステム、デスクトップシステム、および携帯型コンピュータを含む、プロセッサを含む任意の種類のシステムも、上記に開示される動的キャッシュサイズ変更方法に好適であり得る。加えて、他の種類のプラットフォームおよびそれらのそれぞれのプロセッサが、動的キャッシュサイズ変更に好適であり得る。そのようなプラットフォームには、「スマート」フォン、パーソナルデジタルアシスタント、組み込みコントローラ等が挙げられる。
【0090】
コンピュータ可読媒体:
次に
図10を参照すると、プロセッサ100を表すデータベースを含む、コンピュータアクセス可能記憶媒体800のブロック図が示されている。一般的に言えば、コンピュータアクセス可能記憶媒体には、命令および/またはデータをコンピュータに提供する、使用中にコンピュータがアクセス可能な任意の記憶媒体が挙げられる。例えば、コンピュータアクセス可能記憶媒体には、磁気または光学媒体、例えば、ディスク(固定された、もしくは取り外し可能な)、テープ、CD−ROM、またはDVD−ROM、CD−R、CD−RW、DVD−R、DVD−RW、あるいはブルーレイ等の記憶媒体が挙げられる。記憶媒体には、RAM(例えば、シンクロナスダイナミックRAM(SDRAM)、ダブルデータレート(DDR、DDR2、DDR3等)SDRAM、低パワーDDR(LPDDR2等)SDRAM、Rambus DRAM(RDRAM)、スタティックRAM(SRAM)等)、ROM、フラッシュメモリ、ユニバーサルシリアルバス(USB)インターフェース等の周辺インターフェースを介してアクセス可能である不揮発性メモリ(例えば、フラッシュメモリ)等の揮発性または不揮発性メモリ媒体がさらに挙げられる。記憶媒体には、微小電気機械システム(MEMS)、ならびにネットワークおよび/または無線リンク等の通信媒体を介してアクセス可能な記憶媒体が挙げられる。
【0091】
一般的に、コンピュータアクセス可能記憶媒体800上にあるプロセッサのデータベースは、システム10を備えるハードウェアを加工するためにプログラムが読み出し、直接または間接的に使用することができる、データベースであってもよい。例えば、データベースは、VerilogもしくはVHDL等の高級設計言語(HDL)でのハードウェア機能性の動作レベル記述またはレジスタ転送レベル(RTL)記述であってもよい。記述は、ゲートのリストを含むネットリストを生成するために、記述を合成し得る合成ツールによって、合成ライブラリから読み出されてもよい。ネットリストは、また、プロセッサ100を備えるハードウェアの機能性も表す、ゲートのセットを含む。次いで、ネットリストは、マスクに適用される幾何学的形状を記述するデータセットを生成するように、定置され、経路指定されてもよい。次いで、マスクは、プロセッサ100に対応する半導体回路(単数または複数)を生産するために、様々な半導体加工ステップで使用されてもよい。代替として、コンピュータアクセス可能記憶媒体800上のデータベースは、所望により、ネットリスト(合成ライブラリを伴う、または伴わない)またはデータセットであってもよい。
【0092】
コンピュータアクセス可能記憶媒体800は、プロセッサ100の表現を保持するが、他の実施形態は、エージェントの任意のセット(例えば、L2キャッシュ140、パワー管理ユニット150等)、エージェントの部分、またはその部分を含む、プロセッサ100の任意の部分の表現を保持してもよい。
【0093】
本発明は、特定の実施形態を参照して記載されてきたが、実施形態は、例示であり、本発明の範囲は、それに限定されないことが理解される。記載される実施形態に対する任意の変形、修正、追加、および改善が可能である。これらの変形、修正、追加、および改善は、以下の「特許請求の範囲」内に詳述されるように、本発明の範囲内であり得る。