(57)【要約】第１キャッシュ（２０５）に関連するプロセッサコア（２１５）は、パワーダウン状態への移行を開始する。これに応じて、第１キャッシュのエントリ（２２０）のセットを表す情報が、プロセッサコアがパワーダウン状態にある間に保持電圧を受信する保持領域（２３０）に記憶される。エントリのセットのうち１つ以上の無効化されたエントリを示す情報も保持領域に記憶される。プロセッサコアがパワーダウン状態の終了を開始したことに応じて、エントリを表す記憶された情報と、少なくとも１つの無効化されたエントリを示す記憶された情報と、を使用して、第１キャッシュのエントリがリストアされる。【選択図】図２
2021501423.tif 000002
【特許請求の範囲】
【請求項１】
第１キャッシュに関連するプロセッサコアがパワーダウンすることに応じて、前記第１キャッシュのエントリのセットを表す情報を、前記プロセッサコアがパワーダウン状態にある間に保持電圧を受信する処理システムの保持領域に記憶することと、
前記第１キャッシュのエントリのセットのうち少なくとも１つの無効化されたエントリを示す情報を前記保持領域に記憶することと、
前記プロセッサコアが前記パワーダウン状態の終了を開始したことに応じて、前記エントリを表す記憶された情報と、前記少なくとも１つの無効化されたエントリを示す記憶された情報と、を使用して、前記第１キャッシュのエントリをリストアすることと、含む、
方法。
【請求項２】
前記保持領域は、前記第１キャッシュを含む第２キャッシュ、前記第１キャッシュにキャッシュされる情報を記憶する外部メモリ、及び、前記プロセッサコアがパワーダウン状態にある間に前記保持電圧を受信する前記第１キャッシュの一部のうち少なくとも１つを備える、
請求項１の方法。
【請求項３】
前記第１キャッシュは、前記プロセッサコアの仮想アドレスから物理アドレスへの変換をキャッシュする変換ルックアサイドバッファ（ＴＬＢ）である、
請求項１の方法。
【請求項４】
前記ＴＬＢのエントリを表す情報を記憶することは、前記エントリを前記保持領域に記憶することを含み、前記ＴＬＢのエントリをリストアすることは、前記記憶されたエントリを前記ＴＬＢに提供することを含む、
請求項３の方法。
【請求項５】
前記ＴＬＢのエントリを表す情報を記憶することは、前記エントリの仮想アドレスを前記保持領域内の前記ＴＬＢに記憶することを含み、
前記ＴＬＢのエントリをリストアすることは、前記仮想アドレスをプリフェッチして、前記エントリを前記ＴＬＢに配置するページテーブルウォークを開始することを含む、
請求項３の方法。
【請求項６】
前記少なくとも１つの無効化されたエントリを示す情報を記憶することは、前記プロセッサコアがパワーダウン状態にある間に前記少なくとも１つの無効化されたエントリを無効にする信号を受信したことに応じて、前記情報をキューに記憶することを含む、
請求項３の方法。
【請求項７】
前記キューが無効化要求によってオーバーフローしたことに応じて、前記ＴＬＢを無効化することをさらに含む、
請求項６の方法。
【請求項８】
前記第１キャッシュは、前記第１キャッシュを含む第２キャッシュを有するキャッシュ階層内の低レベルキャッシュである、
請求項１の方法。
【請求項９】
前記第１キャッシュのエントリを表す情報を記憶することは、前記第１キャッシュをリンスして、前記エントリの変更された値を前記第２キャッシュ又は外部メモリに書き込むことと、前記第１キャッシュをフラッシュして前記エントリの全ての値を前記第２キャッシュ又は前記外部メモリに書き込むことと、のうち少なくとも１つを含む、
請求項８の方法。
【請求項１０】
前記第１キャッシュのエントリを表す情報を記憶することは、前記第２キャッシュ又は前記外部メモリ内の前記エントリに関連するシャドウタグ内の前記エントリの物理アドレスを記憶することを含み、
前記少なくとも１つの無効化されたエントリを示す情報を記憶することは、前記情報を前記シャドウタグに記憶することを含む、
請求項９の方法。
【請求項１１】
前記第１キャッシュのエントリをリストアすることは、前記エントリの物理アドレスと、前記シャドウタグ内の前記少なくとも１つの無効化されたエントリを示す情報と、に基づいて、有効なエントリを前記第１キャッシュにプリフェッチすることを含む、
請求項１０の方法。
【請求項１２】
第１キャッシュから情報にアクセスするように構成されたプロセッサコアと、
前記プロセッサコアがパワーダウン状態にある間に保持電圧を受信する保持領域であって、前記プロセッサコアが前記パワーダウン状態に移行したことに応じて、前記第１キャッシュのエントリを表す情報を記憶し、前記第１キャッシュのエントリのうち少なくとも１つの無効化されたエントリを示す情報を記憶する、保持領域と、を備え、
前記プロセッサコアがパワーダウン状態の終了を開始したことに応じて、前記エントリを表す記憶された情報と、前記少なくとも１つの無効化されたエントリを示す記憶された情報と、を使用して、前記第１キャッシュのエントリをリストアする、
装置。
【請求項１３】
前記保持領域は、前記第１キャッシュを含む第２キャッシュ、前記第１キャッシュにキャッシュされる情報を記憶する外部メモリ、及び、前記プロセッサコアがパワーダウン状態にある間に前記保持電圧を受信する前記第１キャッシュの一部のうち少なくとも１つを備える、
請求項１２の装置。
【請求項１４】
前記第１キャッシュは、前記プロセッサコアの仮想アドレスから物理アドレスへの変換をキャッシュする変換ルックアサイドバッファ（ＴＬＢ）である、
請求項１２の装置。
【請求項１５】
前記プロセッサコアがパワーダウン状態にある間に前記少なくとも１つの無効化されたエントリを無効にする信号を受信したことに応じて、前記少なくとも１つの無効化されたエントリを示す情報を記憶するように構成されたキューをさらに備える、
請求項１４の装置。
【請求項１６】
前記第１キャッシュは、前記第１キャッシュを含む第２キャッシュを有するキャッシュ階層内の低レベルキャッシュである、
請求項１２の装置。
【請求項１７】
プロセッサコアがパワーダウン状態への移行を開始したことに応じて、キャッシュのエントリを表す情報を処理システムの保持領域に記憶することであって、前記保持領域は、前記プロセッサコアがパワーダウン状態にあるのと同時に保持電圧を受信する、ことと、
前記記憶された情報に基づいて、前記プロセッサコアがパワーダウン状態にある間に無効化されなかったエントリを前記キャッシュに選択的にリストアすることと、を含む、
方法。
【請求項１８】
前記エントリを選択的にリストアすることは、前記プロセッサコアがパワーダウン状態にある間に前記エントリを無効化する信号を受信したことに応じて、無効化されたエントリを示す情報を記憶することと、有効なエントリに基づいて前記キャッシュをリストアすることと、を含む、
請求項１７の方法。
【請求項１９】
前記有効なエントリに基づいてキャッシュをリストアすることは、前記保持領域に記憶されたエントリを前記キャッシュに再配置することと、前記キャッシュ内の無効化されたエントリを無効化することと、を含む、
請求項１８の方法。
【請求項２０】
前記キャッシュを選択的にリストアすることは、無効化されたエントリの数が所定数を超えたことに応じて、前記キャッシュを無効化することを含む、
請求項１７の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
従来の処理システムは、中央処理装置（ＣＰＵ）及びグラフィックス処理ユニット（ＧＰＵ）等の処理ユニットを備え、これらの処理ユニットは、通常、命令を同時に又は並列に実行するための複数のプロセッサコアを含む。プロセッサコアの状態を表す情報は、キャッシュに記憶される。キャッシュに記憶された情報を使用して、プロセッサコアの動作を高速化する。例えば、変換ルックアサイドバッファ（ＴＬＢ）を使用して、仮想アドレスから物理アドレスへの変換をキャッシュすることにより、ＴＬＢは、時間のかかるページテーブルウォークを行うことなく、仮想アドレスから物理アドレスへの変換を実行することができる。別の例では、キャッシュ階層は、プロセッサコアによって実行される命令と、プロセッサコアによって実行されるときに命令によって使用されるデータと、を記憶するので、これらの命令又はデータは、これらが必要になる度に外部メモリからフェッチされる必要がない。キャッシュ階層は、各プロセッサコアの情報をキャッシュするためのＬ１キャッシュと、処理ユニット内のプロセッサコアのサブセットの情報をキャッシュするためのＬ２キャッシュと、処理ユニット内の全てのプロセッサコアの情報をキャッシュするためのＬ３キャッシュと、を含む。包括的なキャッシュ階層は、Ｌ１キャッシュに記憶された情報を含む、Ｌ２キャッシュに記憶された情報を含むＬ３キャッシュを実装する。
【０００２】
プロセッサコアは、プロセッサコアが命令の実行等の動作をアクティブに実行していない場合のリーク電流を低減するために、パワーダウン状態（Ｃ６又はＣＣ６状態と呼ぶことができる）に置かれる。プロセッサコアの状態情報を記憶するキャッシュは、対応するプロセッサコアをパワーダウン状態にする前にフラッシュされ、その後パワーダウンされる。例えば、プロセッサコアのＴＬＢ内のエントリは、プロセッサコアがパワーダウンすると、失われる。別の例では、プロセッサコアに関連するＬ１キャッシュ又はＬ２キャッシュ内のキャッシュエントリは、Ｌ３キャッシュ又は外部メモリ（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）若しくはディスクドライブ等）にフラッシュされる。キャッシュエントリは、プロセッサコア及びＬ１又はＬ２キャッシュから電源が遮断されると、Ｌ１又はＬ２キャッシュから失われる。キャッシュ内に最新の情報が存在しないと、パワーダウン状態を終了したときのプロセッサコアのパフォーマンスが低下する。
【０００３】
本開示は、より良く理解することができ、その多くの特徴及び利点は、添付の図面を参照することによって当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、処理システムのブロック図である。
【図２】いくつかの実施形態による、変換ルックアサイドバッファ（ＴＬＢ）及び外部メモリ階層を含む処理システムの一部のブロック図である。
【図３】いくつかの実施形態による、ＴＬＢに関連するプロセッサコアをパワーダウンする前に、ＴＬＢ内のエントリを表す情報を保持領域に記憶する方法のフロー図である。
【図４】いくつかの実施形態による、ＴＬＢに関連するプロセッサコアをパワーダウンする前に、保持領域に記憶された情報を使用してＴＬＢ内のエントリをリストアする方法のフロー図である。
【図５】いくつかの実施形態による、キャッシュ階層のブロック図である。
【図６】いくつかの実施形態による、Ｌ２キャッシュ及びＬ３キャッシュを含むキャッシュ階層の一部のブロック図である。
【図７】いくつかの実施形態による、低レベルキャッシュに関連するプロセッサコアをパワーダウンする前に、低レベルのキャッシュ内のエントリを表す情報を保持領域に記憶する方法のフロー図である。
【図８】いくつかの実施形態による、プロセッサコアがパワーダウン状態の終了を開始することに応じて、保持領域に記憶された情報を使用して、エントリを低レベルキャッシュに再配置する方法のフロー図である。
【発明を実施するための形態】
【０００５】
プロセッサコアがパワーダウン状態を終了する場合にプロセッサコアのパフォーマンスを少なくとも部分的に加速し、パワーダウン状態の間にキャッシュコヒーレンスを維持するために、パワーダウンしたプロセッサコアに関連するキャッシュのエントリが、プロセッサコアがパワーダウン状態にある間に保持電圧を受信する保持領域に記憶される。プロセッサコアは、エントリのコピーが保持領域に記憶された後に、パワーダウン状態に移行する。プロセッサコアがパワーダウン状態にある間、キャッシュ内の１つ以上のエントリの無効化を示す情報が記憶される。記憶されたエントリのコピーと、記憶された無効化情報と、に基づいて、キャッシュがリストアされる。プロセッサコアがパワーダウン状態の終了を開始したことに応じて、リストアが実行される。保持領域は、プロセッサコアがパワーダウン状態にあるのと同時にパワーアップ及び実行を維持するメモリ階層の一部に実装される。保持領域は、キャッシュ階層内の高レベルのキャッシュ、外部メモリ（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等）、又は、プロセッサコアがパワーダウンしている間にエネルギーが供給され続ける電源によって電力が供給されるプロセッサコア内のストレージ素子を使用することができる。例えば、保持領域は、キャッシュ自体のストレージ素子を使用することができ、すなわち、キャッシュ内のデータは、残りのコアがパワーダウン状態にある間にエネルギーが供給され続ける電源をキャッシュに設けている場合に、その場に保持され得る。
【０００６】
いくつかの実施形態では、キャッシュは、プロセッサコアによって使用される仮想アドレスから物理アドレスへの変換をキャッシュする変換ルックアサイドバッファ（ＴＬＢ）である。プロセッサコアがパワーダウン状態に移行することに応じて、ＴＬＢ内のエントリが保持領域に記憶される。ＴＬＢ内のエントリを無効化する要求を示す情報は、対応するプロセッサコアがパワーダウンしている間に記憶される。例えば、個々の要求がキューに記憶されるか、ビットが、ＴＬＢの１つ以上のエントリが無効化されたことを示す値に設定される。記憶されたＴＬＢエントリ及び無効化情報を使用して、プロセッサコアのパワーアップに応じてエントリを再配置することによって、ＴＬＢをリストアする。例えば、ＴＬＢエントリが保持領域から再配置された後に、ＴＬＢ無効化要求が再生され、ＴＬＢ内のエントリが無効化される。キューのオーバーフローの場合、ＴＬＢをリストアするのに必要な全ての情報がキュー内で利用できなくなるため、ＴＬＢ全体が無効になる。別の例では、プロセッサコアがパワーダウンしている間に１つ以上のＴＬＢエントリが無効化されたことを示す値をビットが含む場合に、ＴＬＢ全体が無効になる。いくつかの実施形態では、プロセッサコアのパワーダウンに応じてＴＬＢにエントリを記憶する代わりに、ＴＬＢ内の仮想アドレスのリストが保持領域に記憶される。仮想アドレスをプリフェッチして、プロセッサコアがパワーアップする場合に、ＴＬＢにエントリを配置するページテーブルウォークをプリエンプティブに開始する。
【０００７】
いくつかの実施形態では、キャッシュは、キャッシュ階層内のＬ１キャッシュ又はＬ２キャッシュ等の包括的キャッシュ階層内の低レベルキャッシュである。保持領域は、高レベルキャッシュ（例えば、Ｌ３キャッシュ等）又は外部メモリ（例えば、プロセッサコアがパワーダウンしている間に保持電圧を受信するＤＲＡＭ等）を含むことができる。また、キャッシュのストレージ素子に保持電源を設けることによって、保持領域をキャッシュ自体に実装することができる。プロセッサがパワーダウン状態に移行することに応じて、例えば、キャッシュをリンス（rinsing）してキャッシュエントリの変更された値を書き出すことによって、又は、キャッシュ内の全てのエントリをフラッシュすることによって、キャッシュ内の変更された値又はダーティ値が、高レベルキャッシュ又は外部メモリに書き込まれる。プロセッサコアがパワーダウンしている間に、キャッシュ内のキャッシュエントリの無効化を示す情報が記憶される。高レベルキャッシュのいくつかの実施形態は、パワーダウンしたプロセッサコアの低レベルキャッシュに関連するキャッシュエントリの物理アドレスを、エントリが有効且つクリーンであるかどうかを示す情報とともに記憶するシャドウタグを含む。また、シャドウタグは、プロセッサコアがパワーダウンしている間にエントリが無効化されたかどうかを示す情報を記憶することができる。保持領域がキャッシュ自体に実装されている場合には、リストアのためにキャッシュを再配置する必要がない。保持領域がキャッシュ自体に実装されていない場合には、プロセッサコアのパワーアップに応じて、シャドウタグ内の情報を使用してキャッシュが再配置される。例えば、シャドウタグに記憶された対応する物理アドレスに基づいて、低レベルキャッシュの有効なエントリがプリフェッチされる。
【０００８】
いくつかの実施形態は、プロセッサコアがパワーダウンしている間に受信されたプローブを示す情報を記憶するプローブキューを実装する。プロセッサコアがシャドウタグを含む場合に、プローブキューは、シャドウタグ内のアドレスにヒットしたプローブのみを記録する。また、プローブキューは、対応する低レベルキャッシュラインがプロセッサコアのパワーアップに応じて無効化されることを示すフィールドをシャドウタグの各エントリに追加することによって実装されてもよい。プロセッサコアのパワーアップに応じて、プローブキューに記憶されたプローブがキャッシュに送信される。プローブキューのオーバーフローが発生した場合、プロセッサコアをパワーアップしてプローブキュー内のプローブを処理するか、プロセッサコアがパワーアップするときにキャッシュ全体を無効にする。また、プロセッサコアがパワーダウンしている間にキャッシュコヒーレンスを維持するための他のアプローチを使用することができる。場合によっては、キャッシュは、プローブを受信することに応じてパワーアップし、これにより、キャッシュは、プローブによって示されたエントリを無効化した後にパワーダウンに戻ることができる。このアプローチは、かなりのオーバーヘッドを消費する。プローブにサービスするためにキャッシュがクロックアップ及びクロックダウンするのを可能にする「常にオン（always on）」クロックを、各キャッシュレベルに提供することができる。いくつかの実施形態では、ブルームフィルタ等の他のメカニズムを使用して、低レベルキャッシュにおいてヒットする可能性があり、これにより、プローブキューに記録される必要があるプローブを識別する。
【０００９】
図１は、いくつかの実施形態による、処理システム１００のブロック図である。処理システム１００は、メモリ１０５又は他のストレージコンポーネント（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等の非一時的なコンピュータ可読媒体を使用して実装される）を含むか、これらにアクセスする。しかしながら、メモリ１０５は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、不揮発性ＲＡＭ等を含む他のタイプのメモリを使用して実装されてもよい。メモリ１０５は、処理システム１００内に実装される処理ユニットの外部に実装されるので、外部メモリと呼ばれる。また、処理システム１００は、処理システム１００に実装されるエンティティ（例えば、メモリ１０５等）間の通信をサポートするバス１１０を含む。処理システム１００のいくつかの実施形態は、他のバス、ブリッジ、スイッチ、ルータ等を含み、これらは、明瞭にするために図１に示されていない。
【００１０】
処理システム１００は、ディスプレイ１２０に表示される画像をレンダリングするように構成されたグラフィックス処理ユニット（ＧＰＵ）１１５を含む。例えば、ＧＰＵ１１５は、オブジェクトをレンダリングして、ディスプレイ１２０に提供される画素値を生成し、ディスプレイは、画素値を使用して、レンダリングされたオブジェクトを表す画像を表示する。ＧＰＵ１１５のいくつかの実施形態は、汎用コンピューティングのために使用される。図示した実施形態では、ＧＰＵ１１５は、命令を同時に又は並列に実行するように構成された複数のプロセッサコア１１６，１１７，１１８（本明細書では「プロセッサコア１１６〜１１８」と総称する）を実装する。プロセッサコア１１６〜１１８は、シェーダエンジンとも呼ばれる。
【００１１】
また、ＧＰＵ１１５は、メモリ１０５との通信をサポートするために使用されるメモリ管理ユニット（ＭＭＵ）１２１を含む。図示した実施形態では、ＭＭＵ１２１は、バス１１０を介してメモリ１０５と通信する。しかしながら、ＭＭＵ１２１のいくつかの実施形態は、直接接続を介して、又は、他のバス、ブリッジ、スイッチ、ルータ等を介して、メモリ１０５と通信する。ＧＰＵ１１５は、メモリ１０５に記憶された命令を実行し、ＧＰＵ１１５は、実行された命令の結果等の情報をメモリ１０５に記憶する。例えば、メモリ１０５は、ＧＰＵ１１５によって実行されるプログラムコードからの命令のコピー１２５を記憶する。ＭＭＵ１２１は、プロセッサコア１１６〜１１８によって使用される仮想アドレスから物理アドレスへの変換を記憶するキャッシュである変換ルックアサイドバッファ（ＴＬＢ）１２３を含む。例えば、プロセッサコア１１６は、仮想アドレスを含むメモリアクセス要求を送信ＭＭＵ１２１に送信し、ＭＭＵ１２１は、ＴＬＢ１２３内の対応するエントリを使用して、仮想アドレスを物理アドレスに変換する。次に、ＭＭＵ１２１は、物理アドレスを使用して、メモリ要求を（例えば、メモリ１０５に）送信することができる。
【００１２】
ＧＰＵ１１５は、プロセッサコア１１６〜１１８による比較的低いレイテンシのアクセスのために、命令又はデータをキャッシュするのに使用される１つ以上のレベルのキャッシュを有するキャッシュ階層１３０を含む。プロセッサコア１１６〜１１８にディスパッチされる命令は、命令又はデータ等の情報をキャッシュ階層１３０にプリフェッチするために使用される１つ以上のプリフェッチ命令を含む。例えば、プロセッサコア１１６で実行されるプリフェッチ命令は、その命令がプロセッサコア１１６によって実行される前にキャッシュ階層１３０内で利用可能となるように、コピー１２５から命令をプリフェッチする。キャッシュ階層１３０は、プロセッサコア１１６〜１１８の外部として示されているが、プロセッサコア１１６〜１１８のいくつかの実施形態は、キャッシュ階層１３０に相互接続された対応するキャッシュ（Ｌ１キャッシュ等）を組み込む。
【００１３】
処理システム１００は、本明細書において「プロセッサコア１４１〜１４３」と総称される複数のプロセッサコア１４１，１４２，１４３を実装する中央処理装置（ＣＰＵ）１４０を含む。プロセッサコア１４１〜１４３は、命令を同時に又は並列に実行するように構成されている。ＣＰＵ１４０は、バス１１０に接続されており、バス１１０を介してＧＰＵ１１５及びメモリ１０５と通信する。ＣＰＵ１４０は、メモリ１０５との通信をサポートするＭＭＵ１４５を含む。ＭＭＵ１４５は、プロセッサコア１４１〜１４３によって使用される仮想アドレスから物理アドレスへの変換を記憶するＴＬＢ１５０を含む。ＣＰＵ１４０は、メモリ１０５に記憶されたプログラムコード１５５等の命令を実行し、ＣＰＵ１４０は、実行された命令の結果等の情報をメモリ１０５に記憶する。また、ＣＰＵ１４０は、ＧＰＵ１１５にドローコールを発行することによって、グラフィックス処理を開始することができる。
【００１４】
ＣＰＵ１４０のいくつかの実施形態は、プロセッサコア１４１〜１４３による比較的低いレイテンシのアクセスのために、命令又はデータをキャッシュするのに使用される１つ以上のレベルのキャッシュを有するキャッシュ階層１６０を含む。キャッシュ階層１６０は、プロセッサコア１４１〜１４３の外部として示されているが、プロセッサコア１４１〜１４３のいくつかの実施形態は、キャッシュ階層１６０に相互接続された対応するキャッシュを組み込む。いくつかの実施形態では、プロセッサコア１４１〜１４３にディスパッチされる命令は、命令又はデータ等の情報をキャッシュ階層１６０にプリフェッチするために使用される１つ以上のプリフェッチ命令を含む。例えば、プロセッサコア１４１でウェーブによって実行されるプリフェッチ命令は、その命令がプロセッサコア１４１によって実行される前にキャッシュ階層１６０内で利用可能となるように、プログラムコード１５５から命令をプリフェッチすることができる。
【００１５】
入出力（Ｉ／Ｏ）エンジン１６５は、処理システム１００の他の要素（例えば、キーボード、マウス、プリンタ、外部ディスク等）と同様に、ディスプレイ１２０に関連する入出力動作を処理する。Ｉ／Ｏエンジン１６５は、メモリ１０５、ＧＰＵ１１５又はＣＰＵ１４０と通信することができるように、バス１１０に接続されている。図示した実施形態では、Ｉ／Ｏエンジン１６５は、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）等の非一時的なコンピュータ可読媒体を使用して実装される外部ストレージコンポーネント１７０に記憶された情報を読み出すように構成されている。また、Ｉ／Ｏエンジン１６５は、ＧＰＵ１１５又はＣＰＵ１４０による処理の結果等の情報を外部ストレージコンポーネント１７０に書き込むことができる。
【００１６】
本明細書で説明するように、従来の処理システムは、パワーアップしたキャッシュと、パワーダウン状態に移行する対応するプロセッサに関連してパワーダウンしたキャッシュに記憶された情報との間のキャッシュコヒーレンスを維持するためのメカニズムを提供しない。本明細書で使用される「パワーダウン」という用語は、プロセッサコア及び関連するエンティティ（例えば、キャッシュ等）に供給される電力が、プロセッサコア又は他のエンティティの機能を維持するのに必要なレベル未満に低減した状態を指す。例えば、パワーダウンしたプロセッサコアは、命令を実行することができない。別の例では、パワーダウンしたキャッシュには、例えば、キャッシュのビットストレージ素子を構成するのに使用されるトランジスタの状態を維持することによって、記憶されたビット値を維持するのに十分な電力が供給されていない。
【００１７】
従来の処理システムは、プロセッサコアがパワーダウン状態にある間、パワーダウンしたキャッシュ内のキャッシュエントリの無効化を考慮する（account for）ことができない。処理システム１００は、従来例におけるこの欠点に少なくとも部分的に対処するために、対応する何れかのプロセッサコア１１６〜１１８，１４１〜１４３がパワーダウン状態への移行を開始することに応じて、ＴＬＢ１２３，１５０又はキャッシュ階層１３０，１６０内のエントリを表す情報を保持領域に記憶する。保持領域は、プロセッサコアがパワーダウン状態にあるのと同時に保持電圧を受信する。処理システム１００は、プロセッサコアがパワーダウン状態にある間に発行された無効化要求又はキャッシュプローブを監視し、ＴＬＢ１２３，１５０又はキャッシュ階層１３０，１６０は、プロセッサコアがパワーダウン状態にある間に無効化されなかったエントリを用いて選択的に再配置される。
【００１８】
処理システム１００のいくつかの実施形態では、ＴＬＢ１２３，１５０又はキャッシュ階層１３０，１６０内のエントリを記憶及びリストアするために、複数のオプションが利用可能である。プロセッサコア１１６〜１１８，１４１〜１４３がパワーダウン状態にある間、プローブ（又は、他の無効化要求）が記録される。プローブは、シャドウタグ、ブルームフィルタ、又は、保持電圧で維持された保持領域内のキャッシュされた情報内の潜在的なヒットを識別する他の情報に対してチェックされる。ミスしたプローブは、さらなる効果がない。キャッシュされた情報にヒットしたプローブ、ブルームフィルタによって示される潜在的なヒットであるプローブ、又は、ヒット状態を判別することができないプローブは、プローブキュー又は対応するシャドウタグに記録される。何れの場合も、プローブヒット（又は、潜在的なプローブヒット）をプローブキュー又はシャドウタグに記録することができない場合には、オーバーフロービットが設定される。低レベルキャッシュが保持電圧に維持されたかどうかに基づいて、プロセッサコア１１６〜１１８，１４１〜１４３のパワーアップに応じて選択的な再配置が実行される。その場合、低レベルキャッシュは、以前のエントリを保持する。記録されたプローブヒット（又は、潜在的なヒット）は低レベルキャッシュに対して再生され、対応するエントリを無効化し、キャッシュをリストアする。オーバーフロービットが設定されると、低レベルキャッシュ全体が無効になる。低レベルキャッシュが保持電圧に維持されていない場合に、シャドウタグ内の物理アドレスを使用して、低レベルキャッシュがプリフェッチされる（それにより、リストアされる）。パワーダウン状態の間にプローブがヒットしたシャドウタグ内の物理アドレスは、プリフェッチされない。
【００１９】
図２は、いくつかの実施形態による、変換ルックアサイドバッファ（ＴＬＢ）２０５及び外部メモリ階層２１０を含む処理システムの一部２００のブロック図である。この一部２００は、図１に示す処理システム１００のいくつかの実施形態を実施するために使用される。例えば、外部メモリ階層２１０は、図１に示すメモリ１０５と、キャッシュ階層１３０，１６０内のＬ３キャッシュと、外部ストレージコンポーネント１７０と、を含むことができる。ＴＬＢ２０５を使用して、プロセッサコア２１５によって利用される仮想アドレスから物理アドレスへの変換をキャッシュする。仮想アドレスから物理アドレスへの変換の各々は、エントリ２２０（明瞭にするために、符号によって１つのエントリのみが示されている）に記憶される。ＴＬＢ２０５及びプロセッサコア２１５は、同じ電力ドメイン２２５内にある。したがって、ＴＬＢ２０５及びプロセッサコア２１５は、同じ電源システムを使用して電力を受信する。いくつかの実施形態では、ＴＬＢ２０５及びプロセッサコア２１５は、同じクロックメッシュからクロック信号を受信する。したがって、プロセッサコア２１５がパワーダウン状態にあるときに、ＴＬＢ２０５はパワーダウンする。
【００２０】
外部メモリ階層２１０の少なくとも一部は、電力ドメイン２２５に供給される電力とは無関係に電力を受信する。したがって、外部メモリ階層２１０のうち独立して電力供給される部分は、プロセッサコア２１５がパワーダウン状態にある間に保持電圧を受信し、エントリ２２０を表す情報をＴＬＢ２０５に記憶するための保持領域を実装するために使用される。図示した実施形態では、保持領域は、エントリ２２０のコピー２３０をＴＬＢ２０５に記憶する。しかしながら、他の実施形態では、保持領域は、エントリ２２０を表す他の情報（例えば、エントリ２２０に関連する仮想アドレス等）を記憶する。プロセッサコア２１５がパワーダウン状態への移行を開始することに応じて、エントリ２２０を表す情報が外部メモリ階層２１０に記憶される。例えば、プロセッサコア２１５がパワーダウンすることを示す信号に応じて、エントリ２２０のコピー２３０が外部メモリ階層２１０に書き込まれる。
【００２１】
プロセッサコア２１５がパワーダウン状態にある間、ＴＬＢ２０５内のエントリ２２０は無効にされる。したがって、処理システムは、ＴＬＢ２０５内のエントリ２２０を無効にするＴＬＢシュートダウン等の無効化要求を監視する。外部メモリ階層２１０のいくつかの実施形態は、プロセッサコア２１５がパワーダウン状態にあるときに同時に受信される無効化要求を記憶するキュー２３５を実装する。キュー２３５は、有限の長さを有し、プロセッサコア２１５がパワーダウン状態にある間に受信された無効化要求の数がキュー２３５内の利用可能なスロット数を超えると、オーバーフローする。外部メモリ階層２１０のいくつかの実施形態は、無効化要求を表す情報を他のフォーマットに記憶する。例えば、外部メモリ階層２１０は、ＴＬＢ２０５の無効化要求を受信していないことを示す第１値（例えば、０）と、ＴＬＢ２０５の１つ以上の無効化要求を受信したことを示す第２値（例えば、１）と、に設定された単一のビットを記憶する。
【００２２】
プロセッサコア２１５がパワーダウン状態を終了し始めることに応じて、例えば、プロセッサコア２１５がパワーアップすることに応じて、外部メモリ階層２１０の保持領域に記憶されたエントリ２２０を表す情報を使用して、ＴＬＢ２０５が配置される。例えば、ＴＬＢコピー２３０内のエントリがＴＬＢ２０５に書き戻され、エントリ２２０が再配置される。次に、プロセッサコア２１５がパワーダウン状態にある間に受信された無効化要求に基づいて、ＴＬＢ２０５の状態が更新される。例えば、キュー２３５内の無効化要求が再生されて、対応するエントリ２２０を無効化し、ＴＬＢ２０５の正しい状態を生成する。別の例では、外部メモリ階層２１０がエントリ２２０に関連する仮想アドレスを記憶した場合に、仮想アドレスは、ＴＬＢ２０５内のエントリ２２０を再配置するページテーブルウォークをトリガするようにプリフェッチされる。この例では、ＴＬＢ２０５を配置するために新たなページテーブルウォークが行われ、その結果、システムの残りの部分とＴＬＢ２０５とのコヒーレントを保つために、ＴＬＢ２０５内のエントリを無効にする必要がない。さらに別の例では、外部メモリ階層２１０が、無効化要求が受信されたかどうかを示す単一のビットを記憶した場合に、このビットが１つ以上の無効化要求を受信したことを示す場合、ＴＬＢ２０５内の全てのエントリ２２０が無効化される。
【００２３】
いくつかの実施形態では、再配置した後に無効化する代わりに、ＴＬＢ２０５のエントリ２２０は、プロセッサコア２１５がパワーダウン状態にある間に受信された無効化要求によってエントリを条件付きで再配置することによって、リストアされる。例えば、（キュー２３５内の情報によって示されるように）無効化されなかったＴＬＢコピー２３０内のエントリのみが、プロセッサコア２１５のパワーアップに応じて、ＴＬＢ２０５に書き戻される。別の例では、１つ以上の無効化要求を受信したことを示す値に設定された単一のビットを外部メモリ階層２１０が記憶する場合に、ＴＬＢコピー２３０は、このビット値に基づいて無効化されるＴＬＢ２０５に書き戻されない。
【００２４】
図３は、いくつかの実施形態による、ＴＬＢに関連するプロセッサコアをパワーダウンする前に、ＴＬＢ内のエントリを表す情報を保持領域に記憶する方法３００のフロー図である。方法３００は、図１に示す処理システム１００及び図２に示す処理システムの一部２００のいくつかの実施形態で実施される。
【００２５】
ブロック３０５において、処理システムは、プロセッサコアのパワーダウンを開始する。例えば、プロセッサコアは、パワーダウンのための閾値を超える後続の時間間隔中に、実行のためにプロセッサコアにディスパッチされる命令がないことに応じて、又は、実行のためにプロセッサコアにディスパッチされる命令がないという予測に応じて、パワーダウン状態への移行を開始する。
【００２６】
ブロック３１０において、ＴＬＢ内のエントリを表す情報は、プロセッサコアがパワーダウン状態にある間、電力を保持する保持領域を実装する外部メモリに記憶される。外部メモリのいくつかの実施形態は、Ｌ３キャッシュ、ＤＲＡＭ及び外部ストレージ（例えば、ディスクドライブ等）を使用して実装される。この情報は、ＴＬＢ内のエントリのコピー、又は、ＴＬＢ内のエントリの仮想アドレスを含む。
【００２７】
ブロック３１５において、プロセッサコアがパワーダウンする。プロセッサコアのパワーダウンは、ＴＬＢが電源を失った後にＴＬＢ内のエントリを表す情報が失われるのを防ぐために、この情報が外部メモリに記憶された後に行われる。
【００２８】
ブロック３２０において、ＴＬＢに対して受信された無効化要求を表す情報が保持領域に記憶される。例えば、保持領域は、プロセッサコアがパワーダウン状態にある間に無効化要求を記憶するキューを実装することができる。別の例では、保持領域は、ＴＬＢに対する無効化要求が受信されていないことを示す第１値（例えば、０）と、ＴＬＢに対する１つ以上の無効化要求が受信されたことを示す第２値（例えば、１）と、に設定されるビットを実装することができる。
【００２９】
図４は、いくつかの実施形態による、ＴＬＢに関連するプロセッサコアをパワーダウンする前に、保持領域中に記憶された情報を使用してＴＬＢ内のエントリを再配置する方法４００のフロー図である。方法４００は、図１に示す処理システム１００及び図２に示す処理システムの一部２００のいくつかの実施形態で実施される。
【００３０】
ブロック４０５において、処理システムは、プロセッサコアのパワーアップを開始する。例えば、処理システム内のディスパッチャが、プロセッサコア上で実行される命令をディスパッチすることに応じて、パワーダウン状態の終了が開始される。
【００３１】
判別ブロック４１０において、処理システムは、キュー内で利用可能なスロット数を超える数の無効化要求を受信したことに応じて、無効化要求を記憶するキューがオーバーフローしたかどうかを判別する。そうである場合、方法４００は、ブロック４１５に進み、ＴＬＢの状態を再構成するのに必要な全ての情報をキューが保持していないので、ＴＬＢ内の全てのエントリが無効化される。キューがオーバーフローしていない場合、方法４００は、ブロック４２０に進む。
【００３２】
ブロック４２０において、ＴＬＢ内のエントリを表す情報を使用して、ＴＬＢが再配置される。例えば、エントリのコピーが、保持領域からＴＬＢに書き込まれる。別の例では、保持領域に記憶されたエントリのアドレスがプリフェッチされ、エントリをＴＬＢに配置するページテーブルウォークがトリガされる。
【００３３】
ブロック４２５において、プロセッサコアがパワーダウン状態にある間に受信された無効化要求に基づいて、ＴＬＢの状態が変更される。例えば、キューに記憶された無効化要求が再生され、ＴＬＢ内のエントリが無効化される。別の例では、プロセッサコアがパワーダウン状態にある間に無効化要求を受信したかどうかを示す単一のビットのみが保持領域に記憶されている場合に、このビットの値が１つ以上の無効化要求を受信したことを示すと、ＴＬＢ内の全てのエントリが無効化される。
【００３４】
図５は、いくつかの実施形態による、キャッシュ階層５００のブロック図である。キャッシュ階層５００は、図１に示すＧＰＵ１１５のキャッシュ階層１３０のいくつかの実施形態及びＣＰＵ１４０のキャッシュ階層１６０のいくつかの実施形態で実施するために使用される。キャッシュ階層５００は、本明細書において「プロセッサコア５０１〜５０４」と総称されるプロセッサコア５０１，５０２，５０３，５０４に対する命令又はデータ等の情報をキャッシュする。プロセッサコア５０１〜５０４は、図１に示すプロセッサコア１１６〜１１８，１４１〜１４３のいくつかの実施形態を実施するために使用される。
【００３５】
キャッシュ階層５００は、Ｌ１キャッシュ５１１，５１２，５１３，５１４（本明細書において「Ｌ１キャッシュ５１１〜５１４」と総称される）を含む第１レベルと、Ｌ２キャッシュ５１５，５１６，５１７，５１８（本明細書において「Ｌ２キャッシュ５１５〜５１８」と総称される）を含む第２レベルと、Ｌ３キャッシュ５２０を含む第３レベルと、の３つのレベルのキャッシュを含む。しかしながら、キャッシュ階層５００のいくつかの実施形態は、より多くの又はより少ないレベルのキャッシュを含む。Ｌ１キャッシュ５１１〜５４４は、対応するプロセッサコア５０１〜５０４に相互接続された個別のハードウェア構造として示されているが、Ｌ１キャッシュ５１１〜５１４のいくつかの実施形態は、プロセッサコア５０１〜５０４を実装するハードウェア構造に組み込まれている。
【００３６】
Ｌ１キャッシュ５１１〜５１４を使用して、対応するプロセッサコア５０１〜５０４によるアクセスについての情報をキャッシュする。例えば、Ｌ１キャッシュ５１１は、プロセッサコア５０１についての情報をキャッシュするように構成されている。したがって、プロセッサコア５０１は、Ｌ１キャッシュ５１１に対してメモリアクセス要求を発行する。メモリアクセス要求がＬ１キャッシュ５１１でヒットした場合に、要求された情報が返される。Ｌ１キャッシュ５１１は、メモリアクセス要求がＬ１キャッシュ５１１でミスした場合に、メモリアクセス要求を次の高レベルキャッシュ（例えば、Ｌ２キャッシュ５１５）に転送する。Ｌ１キャッシュ５１１にキャッシュされた情報は、通常、他のプロセッサコア５０２〜５０４によってアクセスできない。
【００３７】
また、Ｌ２キャッシュ５１５〜５１８は、プロセッサコア５０１〜５０４についての情報をキャッシュするように構成されている。図示した実施形態では、Ｌ２キャッシュ５１５〜５１８は、対応するＬ１キャッシュ５１１〜５１４を含む。例えば、Ｌ２キャッシュ５１５は、Ｌ１キャッシュ５１１にキャッシュされた情報を含む情報をキャッシュする。しかしながら、Ｌ２キャッシュ５１５〜５１８は、通常、Ｌ１キャッシュ５１１〜５１４よりも大きいので、対応するＬ１キャッシュ５１１〜５１４に記憶されていない他の情報も記憶する。上述したように、プロセッサコア５０１〜５０４のうち１つが、対応するＬ１キャッシュ５１１〜５１４でミスするメモリアクセス要求を発行する場合に、このメモリアクセス要求は、対応するＬ２キャッシュ５１５〜５１８に転送される。メモリアクセス要求がＬ２キャッシュ５１５〜５１８でヒットした場合に、要求された情報は、要求しているプロセッサコア５０１〜５０４に返される。メモリアクセス要求がＬ２キャッシュ５１５〜５１８でミスした場合に、Ｌ２キャッシュ５１５〜５１８は、メモリアクセス要求を、次の高レベルキャッシュ（例えば、Ｌ３キャッシュ５２０）に転送する。いくつかの実施形態では、Ｌ２キャッシュ５１５〜５１８は、複数のＬ１キャッシュ５１１〜５１４と、対応するプロセッサコア５０１〜５０４との間で共有される。
【００３８】
Ｌ３キャッシュ５２０は、プロセッサコア５０１〜５０４のグローバルキャッシュとして構成されている。プロセッサコア５０１〜５０４からのメモリアクセス要求であって、Ｌ２キャッシュ５１５，５２０でミスするメモリアクセス要求は、Ｌ３キャッシュ５２０に転送される。メモリアクセス要求がＬ３キャッシュ５２０でヒットした場合に、要求された情報は、要求しているプロセッサコア５０１〜５０４に返される。Ｌ３キャッシュ５２０は、メモリアクセス要求がＬ３キャッシュ５２０でミスした場合に、メモリアクセス要求をメモリシステム（例えば、ＤＲＡＭ５２５等）に転送する。
【００３９】
図示した実施形態では、プロセッサコア５０１〜５０４、Ｌ１キャッシュ５１１〜５１４及びＬ２キャッシュ５１５〜５１８は、本明細書で「電力ドメイン５３０〜５３３」と総称される電力ドメイン５３０，５３１，５３２，５３３に実装される。電力が電力ドメイン５３０〜５３３に独立して供給されるので、電力ドメイン５３０〜５３３内のエンティティは、独立して又は個別にパワーアップ又はパワーダウンされる。例えば、プロセッサコア５０１は、パワーアップ状態のままであるプロセッサコア５０２〜５０４と同時に、パワーダウン状態に置かれ得る。しかしながら、プロセッサコア５０１〜５０４から電源が遮断されると、対応するＬ１キャッシュ５１１〜５１４及びＬ２キャッシュ５１５〜５１８からも電源が遮断されるので、対応するプロセッサコア５０１〜５０４がパワーダウン状態に移行するときに、記憶された情報が失われる。
【００４０】
対応するプロセッサコア５０１〜５０４がパワーダウン状態への移行を開始することに応じて、Ｌ１キャッシュ５１１〜５１４又はＬ２キャッシュ５１５〜５１８内のエントリを表す情報が保持領域に記憶される。保持領域は、１つ以上のプロセッサコア５０１〜５０４のパワーダウン状態の間、保持電圧を受信し続ける。保持領域は、ＤＲＡＭ５２５又はＬ３キャッシュ５２０に実装され得る。また、プロセッサコア５０１〜５０４がパワーダウン状態にある間に保持電圧が供給される場合には、保持領域をＬ１キャッシュ５１１〜５１４又はＬ２キャッシュ５１５〜５１８に実装することができる。エントリを表す情報は、エントリのコピー、又は、エントリに記憶された情報の物理アドレスを含むことができる。例えば、変更された（又は、ダーティ）エントリを、Ｌ２キャッシュ５１５からＬ３キャッシュ５２０に実装された保持領域に書き込むことによって、Ｌ２キャッシュ５１５内のエントリを表す情報がリンスされる。別の例では、Ｌ２キャッシュ５１５内の全てのエントリを、Ｌ３キャッシュ５２０に実装された保持領域に書き込むことによって、Ｌ２キャッシュ５１５内のエントリを表す情報がフラッシュされる。
【００４１】
また、保持領域は、１つ以上のプロセッサコア５０１〜５０４がパワーダウン状態にある間に受信されるキャッシュプローブ等の無効化信号を表す情報を記憶する。いくつかの実施形態では、情報は、キャッシュ内のエントリに関連するシャドウタグに記憶される。例えば、Ｌ３キャッシュ５２０は、Ｌ２キャッシュ５１５〜５１８のエントリに関するシャドウタグを記憶する。シャドウタグは、対応するエントリがクリーンデータを含むかどうか、又は、エントリが、プロセッサコア５０１〜５０４のうち何れかがパワーダウン状態に移行することに関連してパワーダウンしたキャッシュに関するものであるかどうかを示す情報を含む。また、シャドウタグは、エントリが有効であるかどうか、例えば、対応するエントリについてのキャッシュプローブを受信したかどうかを示す１つ以上のビットを含む。別の例では、保持領域は、エントリについてのキャッシュプローブが受信されていないことを示す第１値（例えば、０）と、エントリについての１つ以上のキャッシュプローブが受信されたことを示す第２値（例えば、１）と、に設定されるビットを実装する。シャドウタグのいくつかの実施形態は、エントリに記憶された情報の物理アドレスを含む。保持領域のいくつかの実施形態は、後の再生のためにキャッシュプローブを保持するキューを実装する。シャドウタグ内のキャッシュプローブビットに加えて、又は、キャッシュプローブビットを実装する代わりに、キューが実装される。
【００４２】
保持領域の情報を使用して、対応するプロセッサコア５０１〜５０４がパワーダウン状態を終了し始めることに応じて、キャッシュをリストアする。例えば、プロセッサコア５０１がパワーダウン状態を終了し始めることに応じて、Ｌ２キャッシュ５１５内のエントリのコピーがＬ３キャッシュ５２０から書き戻される。別の例では、Ｌ２キャッシュ５１５内のエントリの値は、Ｌ３キャッシュ５２０に記憶されたシャドウタグ内の物理アドレスを使用してプリフェッチされる。無効化信号を表す情報は、キャッシュエントリを変更するために使用される。例えば、Ｌ２キャッシュ５１５内のエントリについてのシャドウタグ内のビット値を使用して、当該エントリについてのキャッシュプローブが受信されたことをこれらのビット値が示す場合に、これらのエントリを無効にする。シャドウタグ内の無効なエントリの物理アドレスは、プリフェッチされない。別の例では、キャッシュプローブは、Ｌ２キャッシュ５１５内のエントリを変更するために、キューから再生される。
【００４３】
図６は、いくつかの実施形態による、Ｌ２キャッシュ６０５及びＬ３キャッシュ６１０を含むキャッシュ階層の一部６００のブロック図である。Ｌ２キャッシュ６０５は、図５に示すプロセッサコア５０１〜５０４のうち何れかのプロセッサコアに関する情報をキャッシュする。Ｌ２キャッシュ６０５に関連するプロセッサコアがパワーダウン状態にある間、Ｌ３キャッシュ６１０が電力を受信し続けるので、Ｌ３キャッシュ６１０を使用して、Ｌ２キャッシュ６０５の保持領域を実装する。いくつかの実施形態では、Ｌ２キャッシュ６０５をリンス又はフラッシュすることによって、Ｌ２キャッシュ６０５内のエントリのコピーがＬ３キャッシュ６１０に書き戻される。
【００４４】
Ｌ３キャッシュ６１０内の保持領域は、Ｌ２キャッシュ６０５に関連するシャドウタグ６１５を記憶する。これらのシャドウタグ６１５は、Ｌ２キャッシュ６０５のエントリにキャッシュされた値の物理アドレス６２０を含む。ビット値６２５は、エントリが変更されていない（クリーン）データを含むかどうかを示し（１の値は、クリーンデータを示し）、ビット値６３０は、エントリがパワーダウン状態にあるキャッシュに関連するかどうかを示し（１の値は、パワーダウンしたキャッシュに関連することを示し）、ビット値６３５は、エントリが有効であるかどうかを示す（１の値は、無効を示す）。ビット値６３５は、対応するエントリへのプローブヒットに応じて変更され、例えば、ビット値６３５は、エントリがプローブヒットによって無効化されたことを示す値１に設定される。図６に示すシャドウタグ６１５は、全てのエントリが、パワーダウン状態にあるキャッシュに関連するクリーンデータを含むこと、及び、キャッシュプローブが、物理アドレスＰ＿ＡＤＤＲ＿２に関連するキャッシュエントリを無効化したことを示す。
【００４５】
Ｌ２キャッシュ６０５に関連するプロセッサコアがパワーダウン状態を終了し始めることに応じて、Ｌ３キャッシュ６１０に記憶された情報を使用して、Ｌ２キャッシュ６０５内のエントリが再配置される。例えば、シャドウタグ６１５に記憶された有効なエントリの物理アドレスが、Ｌ２キャッシュ６０５のエントリにプリフェッチされる。別の例では、Ｌ３キャッシュ６１０がＬ２キャッシュ６０５のエントリに記憶された値のコピーを記憶する場合に、これらの値がＬ２キャッシュ６０５に書き戻される。次に、ビット値６３５を使用して、プロセッサコアがパワーダウン状態にある間にキャッシュプローブを受信したエントリを無効化する。
【００４６】
保持領域のいくつかの実施形態は、プロセッサコアがパワーダウン状態にある間に受信されたプローブを示す情報を記憶するプローブキュー６４０を含む。Ｌ３キャッシュ６１０に記憶されたキャッシュエントリを表す情報を使用してＬ２キャッシュ６０５が再配置された後にプロセッサコアがパワーアップしたことに応じて、プローブキュー６４０に記憶されたプローブがＬ２キャッシュ６０５に送信される。プローブキュー６４０に記憶されたプローブを再生すると、これらのプローブによって示されるエントリが無効になり、Ｌ２キャッシュ６０５が適切な状態に置かれる。プローブキュー６４０がオーバーフローした場合には、プロセッサコアをパワーアップして、プローブキュー６４０内のプローブをサービスするか、プロセッサコアがパワーアップするときにＬ２キャッシュ６０５全体が無効化される。
【００４７】
図７は、いくつかの実施形態による、低レベルキャッシュに関連するプロセッサコアをパワーダウンする前に、低レベルキャッシュ内のエントリを表す情報を保持領域に記憶する方法７００のフロー図である。方法７００は、図１に示す処理システム１００、図５に示すキャッシュ階層５００、及び、図６に示す処理システムの一部６００のいくつかの実施形態で実施される。
【００４８】
ブロック７０５において、プロセッサコアは、パワーアップし、通常動作モードにある。図示した実施形態では、高レベルキャッシュ内のシャドウタグは、プロセッサコアによって使用される低レベルキャッシュ内のキャッシュラインのプローブフィルタとして使用される。プローブフィルタは、プロセッサコアに関連する低レベルキャッシュに記憶されていないキャッシュラインのプローブがプロセッサコアに送信されるのを抑制する。したがって、プロセッサコアがパワーアップモードで動作している間、シャドウタグが維持される。
【００４９】
ブロック７１０において、処理システムは、プロセッサコアのパワーダウンを開始する。例えば、プロセッサコアは、パワーダウンするための閾値を超える後続の時間間隔中に、実行のためにプロセッサコアにディスパッチされる命令がないこと、又は、実行のためにプロセッサコアにディスパッチされる命令がないという予測に応じて、パワーダウン状態への移行を開始する。
【００５０】
ブロック７１５において、低レベルキャッシュ内の変更されたエントリ又はダーティエントリが、プロセッサコアがパワーダウン状態にある間に保持電圧を受信する保持領域を実装する高レベルキャッシュに書き戻される。例えば、Ｌ２キャッシュ内のダーティエントリをＬ３キャッシュに書き戻すことができる。また、Ｌ２キャッシュ内のエントリに関連するＬ３キャッシュ内のシャドウタグが更新される。他の例では、他のキャッシュ（Ｌ１キャッシュ等）内のエントリを表す情報を保持領域に記憶することができる。さらに、保持領域は、他のエンティティ（例えば、外部メモリ（ＤＲＡＭ等）、他のキャッシュ、又は、マルチプロセッサコアがパワーダウン状態にある間、低レベルキャッシュに保持電圧が供給される場合には、低レベルキャッシュ等を含む）に実装されてもよい。
【００５１】
ブロック７２０において、プロセッサコアがパワーダウンする。低レベルキャッシュ中のエントリを表す情報が外部メモリに記憶された後にプロセッサコアのパワーダウンが行われ、低レベルキャッシュが電力を失うときにこの情報が失われるのを抑制する。
【００５２】
ブロック７２５において、プロセッサコアがパワーダウン状態にある間にキャッシュプローブが受信されたことに応じて、保持領域内のシャドウタグが変更される。例えば、エントリが有効であるかどうかを示す当該エントリのシャドウタグ内のビットは、当該エントリのキャッシュプローブを受信したことに応じて、当該エントリが無効であることを示す値に設定される。別の例では、キャッシュプローブは、保持領域に実装されたプローブキューに追加される。
【００５３】
図８は、いくつかの実施形態による、プロセッサコアがパワーダウン状態の終了を開始することに応じて、保持領域に記憶された情報を使用して、エントリを低レベルキャッシュにリストアする方法８００のフロー図である。方法８００は、図１に示す処理システム１００、図５に示すキャッシュ階層５１０、及び、図６に示す処理システムの一部６００のいくつかの実施形態で実施される。
【００５４】
ブロック８０５において、処理システムは、プロセッサコアのパワーアップを開始する。例えば、処理システム内のディスパッチャが、プロセッサコアで実行される命令をディスパッチすることに応じて、パワーダウン状態の終了が開始される。
【００５５】
ブロック８１０において、プロセッサコアに関連する低レベルキャッシュがリストアされる。いくつかの実施形態では、保持領域内のシャドウタグに記憶された物理アドレスを使用して、低レベルキャッシュが再配置される。例えば、Ｌ２キャッシュは、Ｌ３キャッシュのシャドウタグ内の有効なエントリの物理アドレスをプリフェッチすることによって、再配置される。この場合、有効なエントリのみがプリフェッチされ、Ｌ３キャッシュのシャドウタグ内の無効なエントリがＬ２キャッシュにプリフェッチされないので、Ｌ２キャッシュ内の情報を後で変更する必要がない。別の例では、Ｌ２キャッシュは、エントリのコピーをＬ３キャッシュからＬ２キャッシュに書き込むことによって、再配置される。低レベルキャッシュのいくつかの実施形態は、プロセッサコアがパワーダウンモードにある間、保持電圧が供給される。この場合、低レベルキャッシュをリストアするために、低レベルキャッシュのエントリを再配置する必要がない。例えば、コアがパワーダウンしている間にＬ２キャッシュのストレージ素子が保持電圧を受信すると、Ｌ２キャッシュエントリがＬ２キャッシュ内のその場で保持され、無効化情報に基づいてＬ２キャッシュがリストアされる。
【００５６】
プローブキューを実装する保持領域の実施形態では、プロセッサコアがパワーダウン状態の終了を開始したことに応じて低レベルキャッシュに提供される情報は、プローブキューに記憶されたキャッシュプローブに基づいて変更される（ブロック８１５）。例えば、プローブキューに記憶されたキャッシュプローブが再生され、再配置されたＬ２キャッシュ内の対応するエントリが無効化される。したがって、ブロック８１５は、（点線で示されているように）オプションであり、方法８００のいくつかの実施形態では実行されない。
【００５７】
ブロック８２０において、プロセッサコアがパワーアップし、再配置された低レベルキャッシュに基づいて命令の実行を開始する。
【００５８】
いくつかの実施形態では、上記の装置及び技術は、図１〜図８を参照して上述した処理システム等の１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムに実装される。これらのＩＣデバイスの設計及び製造には、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００５９】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００６０】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００６１】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００６２】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2021501423.tif 000003
【図２】
2021501423.tif 000004
【図３】
2021501423.tif 000005
【図４】
2021501423.tif 000006
【図５】
2021501423.tif 000007
【図６】
2021501423.tif 000008
【図７】
2021501423.tif 000009
【図８】
2021501423.tif 000010
【手続補正書】
【提出日】令和2年7月1日(2020.7.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１キャッシュに関連するプロセッサコアがパワーダウンすることに応じて、前記第１キャッシュのエントリのセットを表す情報を、前記プロセッサコアがパワーダウン状態にある間に保持電圧を受信する処理システムの保持領域に記憶することと、
前記第１キャッシュのエントリのセットのうち少なくとも１つの無効化されたエントリを示す情報を前記保持領域に記憶することと、
前記プロセッサコアが前記パワーダウン状態の終了を開始したことに応じて、前記エントリを表す記憶された情報と、前記少なくとも１つの無効化されたエントリを示す記憶された情報と、を使用して、前記第１キャッシュのエントリをリストアすることと、含む、
方法。
【請求項２】
前記保持領域は、前記第１キャッシュを含む第２キャッシュ、前記第１キャッシュにキャッシュされる情報を記憶する外部メモリ、及び、前記プロセッサコアがパワーダウン状態にある間に前記保持電圧を受信する前記第１キャッシュの一部のうち少なくとも１つを備える、
請求項１の方法。
【請求項３】
前記第１キャッシュは、前記プロセッサコアの仮想アドレスから物理アドレスへの変換をキャッシュする変換ルックアサイドバッファ（ＴＬＢ）である、
請求項１又は２の方法。
【請求項４】
前記ＴＬＢのエントリを表す情報を記憶することは、前記エントリを前記保持領域に記憶することを含み、前記ＴＬＢのエントリをリストアすることは、前記記憶されたエントリを前記ＴＬＢに提供することを含む、
請求項３の方法。
【請求項５】
前記ＴＬＢのエントリを表す情報を記憶することは、前記エントリの仮想アドレスを前記保持領域内の前記ＴＬＢに記憶することを含み、
前記ＴＬＢのエントリをリストアすることは、前記仮想アドレスをプリフェッチして、前記エントリを前記ＴＬＢに配置するページテーブルウォークを開始することを含む、
請求項３の方法。
【請求項６】
前記少なくとも１つの無効化されたエントリを示す情報を記憶することは、前記プロセッサコアがパワーダウン状態にある間に前記少なくとも１つの無効化されたエントリを無効にする信号を受信したことに応じて、前記情報をキューに記憶することを含む、
請求項３の方法。
【請求項７】
前記キューが無効化要求によってオーバーフローしたことに応じて、前記ＴＬＢを無効化することをさらに含む、
請求項６の方法。
【請求項８】
前記第１キャッシュは、前記第１キャッシュを含む第２キャッシュを有するキャッシュ階層内の低レベルキャッシュである、
請求項１の方法。
【請求項９】
前記第１キャッシュのエントリを表す情報を記憶することは、前記第１キャッシュをリンスして、前記エントリの変更された値を前記第２キャッシュ又は外部メモリに書き込むことと、前記第１キャッシュをフラッシュして前記エントリの全ての値を前記第２キャッシュ又は前記外部メモリに書き込むことと、のうち少なくとも１つを含む、
請求項８の方法。
【請求項１０】
前記第１キャッシュのエントリを表す情報を記憶することは、前記第２キャッシュ又は前記外部メモリ内の前記エントリに関連するシャドウタグ内の前記エントリの物理アドレスを記憶することを含み、
前記少なくとも１つの無効化されたエントリを示す情報を記憶することは、前記情報を前記シャドウタグに記憶することを含む、
請求項９の方法。
【請求項１１】
前記第１キャッシュのエントリをリストアすることは、前記エントリの物理アドレスと、前記シャドウタグ内の前記少なくとも１つの無効化されたエントリを示す情報と、に基づいて、有効なエントリを前記第１キャッシュにプリフェッチすることを含む、
請求項１０の方法。
【請求項１２】
第１キャッシュから情報にアクセスするように構成されたプロセッサコアと、
前記プロセッサコアがパワーダウン状態にある間に保持電圧を受信する保持領域であって、前記プロセッサコアが前記パワーダウン状態に移行したことに応じて、前記第１キャッシュのエントリを表す情報を記憶し、前記第１キャッシュのエントリのうち少なくとも１つの無効化されたエントリを示す情報を記憶する、保持領域と、を備え、
前記プロセッサコアがパワーダウン状態の終了を開始したことに応じて、前記エントリを表す記憶された情報と、前記少なくとも１つの無効化されたエントリを示す記憶された情報と、を使用して、前記第１キャッシュのエントリをリストアする、
装置。
【請求項１３】
前記保持領域は、前記第１キャッシュを含む第２キャッシュ、前記第１キャッシュにキャッシュされる情報を記憶する外部メモリ、及び、前記プロセッサコアがパワーダウン状態にある間に前記保持電圧を受信する前記第１キャッシュの一部のうち少なくとも１つを備える、
請求項１２の装置。
【請求項１４】
前記第１キャッシュは、前記プロセッサコアの仮想アドレスから物理アドレスへの変換をキャッシュする変換ルックアサイドバッファ（ＴＬＢ）であり、
前記プロセッサコアがパワーダウン状態にある間に前記少なくとも１つの無効化されたエントリを無効にする信号を受信したことに応じて、前記少なくとも１つの無効化されたエントリを示す情報を記憶するように構成されたキューをさらに備える、
請求項１２の装置。
【請求項１５】
前記第１キャッシュは、前記第１キャッシュを含む第２キャッシュを有するキャッシュ階層内の低レベルキャッシュである、
請求項１２の装置。
【国際調査報告】
2021501423.tif 000011
2021501423.tif 000012