キャッシュの内容の少なくとも部分を、キャッシュから分離した場所に格納するステップと、前記キャッシュから電源を切るステップと、前記キャッシュへ電源を回復するステップと、前記キャッシュから分離して格納された前記キャッシュの内容の部分で、前記キャッシュを再配置するステップと、を含む、キャッシュを再配置する方法。前記格納のステップが、回復タグを作成し、それぞれの前記回復タグは前記キャッシュからのいくらかの内容を含むステップと、前記回復タグを前記キャッシュから分離した場所に格納するステップと、を含む、請求項1に記載の方法。前記再配置のステップが、前記回復タグを読み出すステップと、前記回復タグを使用してデータを前記キャッシュ内へロードするステップと、を含む、請求項2に記載の方法。前記作成のステップが、以前のキャッシュアクセスのヒストリリストを用いて前記回復タグを作成するステップを含む、請求項2に記載の方法。前記作成のステップが、以前のキャッシュアクセスの前記ヒストリリストの重複、類似または部分的に一致するエントリの除去を含む、請求項4に記載の方法。前記キャッシュが、1つまたは複数のタグメモリおよび1つまたは複数のデータメモリを有し、前記切断のステップが、前記タグメモリのうち少なくとも1つを電源オンで残すこと、および残りの前記タグメモリおよび全ての前記データメモリの電源オフを含み、前記再配置のステップが、前記少なくとも1つの電源オンのタグメモリからタグを読み出すステップと、前記読み出されたタグを使用してデータを前記キャッシュ内へロードするステップと、を含む、請求項1に記載の方法。前記読み出しのステップが、前記少なくとも1つの電源オンのタグメモリからアドレスを読み出すステップを含み、前記使用のステップが、前記アドレスからデータを取り出すステップと、前記取り出されたデータを前記キャッシュへ書き込むステップと、を含む、請求項6に記載の方法。前記格納のステップが、前記キャッシュからタグを読み出し、回復タグを生成するステップと、前記回復タグを前記キャッシュから分離した場所に格納するステップと、を含み、前記再配置のステップが、前記回復タグを読み出すステップと、前記回復タグを使用してデータを前記キャッシュ内へロードするステップと、を含む、請求項1に記載の方法。前記格納のステップが、前記回復タグを前記キャッシュから分離した場所に格納する前に、前記回復タグを圧縮するステップをさらに含む、請求項8に記載の方法。前記キャッシュが、高位レベルキャッシュおよび複数の低位レベルキャッシュを有するマルチレベルキャッシュであり、前記切断のステップが、前記高位レベルキャッシュの電源オフおよび前記低位レベルキャッシュのうち少なくとも1つの電源維持を含む、請求項1に記載の方法。前記再配置のステップが、電源を維持する少なくとも1つの前記低位レベルキャッシュ内でタグおよびデータ情報を生成するステップと、前記タグおよびデータ情報を前記高位レベルキャッシュへ送信するステップと、前記タグおよびデータ情報を前記高位レベルキャッシュへ書き込むステップと、を含む、請求項10に記載の方法。前記再配置のステップが、前記電源を維持する少なくとも1つの低位レベルキャッシュ内で回復タグを生成し、それぞれの前記回復タグは前記低位レベルキャッシュからのいくつかの内容を含むステップと、前記回復タグによりリロードコマンドを前記高位レベルキャッシュへ発行するステップと、前記リロードコマンドを使用して、前記高位レベルキャッシュによりデータを要求するステップと、前記要求されたデータを前記高位レベルキャッシュへ書き込むステップと、を含む、請求項10に記載の方法。前記書き込みのステップが、前記高位レベルキャッシュへの階層ディレクトリ情報の書き込みを含む、請求項11に記載の方法。キャッシュから電源を切るステップと、前記キャッシュへ電源を回復するステップと、キャッシュクライアントに、電源が前記キャッシュに回復され、前記キャッシュは状態を失ったことを信号で伝えるステップと、プリフェッチコマンドを前記キャッシュクライアントから前記キャッシュへ発行するステップと、前記キャッシュにより前記プリフェッチコマンドを使用してデータを前記キャッシュ内へロードするステップと、を含む、キャッシュを再配置する方法。前記発行のステップが、前記キャッシュから電源が切られたとき保留中だった前記プリフェッチコマンドを発行するステップを含む、請求項14に記載の方法。データおよび前記データに関するタグを格納するよう構成されるキャッシュと、前記キャッシュから分離して置かれ、前記キャッシュから電源が切られたとき前記キャッシュからタグを格納するよう構成されたメモリと、前記キャッシュに電源が回復されたとき、前記タグを前記キャッシュから前記メモリへ書き込むよう構成されたメモリコントローラと、を備える、キャッシュを再配置する機器。前記メモリから前記タグを読み出し、前記タグに基き前記回復タグを作成し、前記回復タグを使用してデータを前記キャッシュ内へロードするよう構成された電源オンリロードエンジンをさらに備える、請求項16に記載の機器。前記キャッシュが1つまたは複数のタグメモリ、および1つまたは複数のデータメモリを有し、少なくとも1つの前記タグメモリが電源を保持し、一方で残りの前記タグメモリおよび前記データメモリが電源オフされ、前記電源オンリロードエンジンが、前記電源を保持する少なくとも1つのタグメモリから前記タグを読み出すようさらに構成される、請求項17に記載の機器。前記タグに基き回復タグを生成し、前記回復タグを前記メモリに書き込むよう構成されたタグ転送エンジンと、前記回復タグを前記メモリから読み出し、前記回復タグを使用してデータを前記キャッシュ内へロードするよう構成された電源オンリロードエンジンと、をさらに備える、請求項16に記載の機器。前記タグ転送エンジンが、前記回復タグを圧縮するようさらに構成される、請求項19に記載の機器。前記キャッシュが、高位レベルキャッシュおよび複数の低位レベルキャッシュを有し、前記低位レベルキャッシュのうち少なくとも1つが電源を維持し、前記高位レベルキャッシュおよび残りの前記低位レベルキャッシュは電源オフされ、前記電源を維持する少なくとも1つの前記低位レベルキャッシュが、前記データおよび前記タグを前記高位レベルキャッシュへ送信するよう構成された、請求項16に記載の機器。前記電源を維持する少なくとも1つの低位レベルキャッシュが、そのタグ情報に基き回復タグを生成し、前記回復タグに基きリロードコマンドを前記高位レベルキャッシュへ発行するようさらに構成された、請求項21に記載の機器。要求されたデータに前記リロードコマンドを使用するよう構成された電源オンリロードエンジンをさらに備える、請求項22に記載の機器。前記メモリが回復タグリストを有し、前記機器が、前記メモリから前記回復タグを読み出し、前記回復タグを使用してデータを前記キャッシュ内へロードするよう構成された電源オンリロードエンジンをさらに備える、請求項16に記載の機器。プリフェッチコマンドを生成し、前記プリフェッチコマンドはデータをロードする命令を含み、前記プリフェッチコマンドを前記キャッシュに送信するよう構成されたキャッシュクライアントをさらに備える、請求項16に記載の機器。キャッシュを再配置するための汎用コンピュータによる実行の命令のセットを格納するコンピュータ可読な記憶媒体であって、前記命令のセットは、前記キャッシュから分離した場所にキャッシュの内容の少なくとも部分を格納するための格納コードセグメントと、前記キャッシュから電源を切るための切断コードセグメントと、前記キャッシュへ電源を回復するための回復コードセグメントと、前記キャッシュから分離して格納されたキャッシュの内容の部分で、前記キャッシュを再配置するための再配置コードセグメントと、を含む、コンピュータ可読な記憶媒体。前記命令のセットが、装置の製造に使用されるハードウェア記述言語HDL命令である、請求項26に記載のコンピュータ可読な記憶媒体。既存の技術は、電力消費量を減少させるために電源回復後の性能を犠牲にするか、電源回復後の性能低下を避けるためにデータ格納部のサブセットに電力を保持して最適な電力消費を犠牲にするかを選択する結果となる。よって、キャッシュが電源オンされた後の性能を犠牲にすることなく、多くまたは全てのキャッシュを電源オフするニーズが存在する。キャッシュを再配置する方法は、キャッシュの内容の少なくとも部分を、キャッシュから分離した場所に格納することで始まる。電源がキャッシュから切られ、いくぶんかの時間の後に回復される。電源がキャッシュに回復された後、それは、キャッシュから分離して格納されたキャッシュの内容の部分で再配置される。キャッシュを再配置する方法は、キャッシュの電源を切り、いくぶんかの時間の後に回復することで始まる。キャッシュクライアントは、電源がキャッシュに回復され、キャッシュは状態を失ったことを信号で伝えられる。クライアントは、プリフェッチコマンドをキャッシュへ発行し、キャッシュはプリフェッチコマンドを使用してデータをキャッシュ内へロードする。キャッシュを再配置する機器は、キャッシュ、メモリ、およびメモリコントローラを有する。キャッシュは、データおよびデータに関するタグを格納するよう構成される。メモリは、キャッシュから分離して置かれ、キャッシュから電源が切られたとき、キャッシュからタグを格納するよう構成される。メモリコントローラは、キャッシュに電源が回復されたとき、タグをキャッシュからメモリへ書き込むよう構成される。キャッシュを再配置するための汎用コンピュータによる実行の命令のセットを格納するコンピュータ可読な記憶媒体、命令のセットは、格納コードセグメント、切断コードセグメント、回復コードセグメント、再配置コードセグメントを含む。格納コードセグメントは、キャッシュから分離した場所にキャッシュの内容の少なくとも部分を格納するためである。切断コードセグメントは、キャッシュから電源を切るためである。回復コードセグメントは、キャッシュへ電源を回復するためである。再配置コードセグメントは、キャッシュから分離して格納されたキャッシュの内容の部分で、キャッシュを再配置するためである。例示の方法による後述の記載により、本発明はより詳細に理解され、以下の添付の図と併せて理解されるだろう。通常のキャッシュの強化を、以下に記載する。通常、キャッシュが電源オフのとき、キャッシュをデータで再び満たすのにいくぶんかの時間がかかり、従って、最初のキャッシュアクセスはキャッシュが電源オフされた前より低速である。電源が回復された後、入ってくる要求がキャッシュに失敗し、それが新しいデータがキャッシュを満たす状態を導くにつれ、空のキャッシュは徐々に再び満たされるかもしれない。この再び満たすプロセスは入ってくる要求の割合により制限されるかもしれず、より古い要求がキャッシュミスにより低速で提供されているので、低速かもしれない。電源が回復された後、ユーザがキャッシュから再度データを要求する前に、同一のデータをキャッシュへ回復してもよいように、データを、電源オフされるキャッシュの外側に格納してもよい。よって、ユーザがキャッシュへそのデータ片を要求する前にデータをキャッシュへ回復してもよいので、キャッシュに電源オン後の性能の劣化は軽減される。再充填のプロセスは、通常のプロセッサの要求と重複してもよく、再充填のプロセスが完了するまで通常のプロセッサの要求を必ずしもブロックする必要はない。電力消費量を減少させるのにパワーゲートを使用してもよく、電源が回復された後すぐに内容をキャッシュ内にロードすることにより、低性能の期間を最小化してもよい。キャッシュをまた、完全にパワーゲートを行い、全ての動的電力をなくし、パワーゲートを通して漏出する静的電力を減少させてもよい。他の実施形態では、全てのデータ格納部を電源オフし、さらに電力消費を最小化してもよい。回復タグを生成し、それから保存、維持または格納するよう、メカニズムをキャッシュに追加してもよい。回復タグは、電源回復イベントの後、データを置きキャッシュの補助記録メモリからロードするのに十分な情報を有する。それは、近い将来に1つまたは複数の要求にサービスするのにキャッシュがそれを必要とするという予測のもとにデータが取り出されるプリフェッチ要求に、性質が似ている。回復タグは、電源を節約するためのいくつかまたは全てのキャッシュの電源オフの前に、持続性記憶場所に置かれる。電源が回復されたとき、データをキャッシュの補助記憶装置からキャッシュ内へロードするために、回復タグが使用される。このデータのロードは、通常のキャッシュ要求が起こすあらゆるロードと分離し、通常、時間的に前である。いくつかまたは全てのキャッシュエントリを、この方法でロードしてもよい。ロードされるデータは、電源オフされる前に以前キャッシュ内にあったものでもよいし、電源が回復された後で有用と予測されるあらゆるデータでもよい。回復タグは、キャッシュが電源オフされる前にキャッシュに格納された情報を用いて構成してもよい。これは、電源ダウン期間の後、既存のキャッシュデータが必要とされるという仮定に基く。回復タグを、キャッシュ内に以前格納された的確なデータをリロードするのに使用して、キャッシュ内に以前格納されたデータの取得に関連する有用な中間情報をロードし、または電源回復後に有用と予想される他のデータをロードしてもよい。そのようなケースでは、キャッシュエントリの回復タグを、エントリのタグの内容通常はアドレスの部分だが、おそらく付加的な属性とともにに基き構成してもよい。キャッシュ内のキャッシュエントリの論理的アドレスのような、付加的な情報も、回復タグの構成に必要とされるかもしれない。回復タグは、キャッシュが電源オンに戻った後すぐに起こるアクセスのタイプの知識または予想のソフトウェアで構成してもよい。キャッシュが、キャッシュのデータ内容の重複コピーを保持する補助記憶メモリを有すると仮定する。キャッシュが、補助記憶装置内のデータより新しいダーティ書き込みデータを格納する場合、キャッシュから電源が切られる前に補助記憶メモリへダーティデータが書き出される。本明細書に記載された実施形態は、インストラクションキャッシュ、データキャッシュ、変換索引バッファTLB、I/OTLB、テクスチャおよび頂点のグラフィックスデータキャッシュなどを含むがそれらに限定されない、多くのタイプのハードウェアキャッシュに適用可能である。キャッシュのタグを、さまざまなメカニズムを用いて、生成、保存、または維持、およびそれからロードしてもよい。いくつかの実施形態は、電源オフイベントの前、または電源が回復された後のどちらかに回復タグを生成するメカニズムを有する。また、いくつかの実施形態は、電源回復後に回復タグを取り込み、回復タグを使用してキャッシュの補助記憶装置からキャッシュ内へデータをロードする、電源オンリロードエンジンを有する。電源オンリロードエンジンを、プリフェッチまたはロードエンジンのような既存のロジックと組み合わせ、または共用してもよい。設計のバリエーション以下の例の実施形態は、案内および説明の目的である。当業者は、これらの実施形態の変形が可能であることを認識する。それぞれの実施形態は、自身の利点および異なる能力、性能、および複雑性のトレードオフを有する。第1の実施形態第1の実施形態では、図1および2に示されたように、キャッシュは分離したメモリ内にタグ情報およびデータ情報を格納してもよい。キャッシュはタグメモリのサブセットのために電源を維持してもよいが、データメモリおよび残りのタグメモリが電源オフされるのを可能にする。この実施形態では、維持されたキャッシュタグを用いることにより、電源が回復された後で回復タグが生成される。回復タグは、キャッシュの補助記憶装置からキャッシュ内へデータ内容をロードするために使用される。図1は、キャッシュ102、キャッシュコントローラ104、メモリ106、およびメモリコントローラ108を含むメモリシステム100の部分を示す。キャッシュ102は、第1のタグストレージプールタグストレージプール1110、第2のタグストレージプールタグストレージプール2112、第1のデータストレージプールデータストレージプール1114、および第2のデータストレージプールデータストレージプール2116を有する。キャッシュコントローラ104は、電源オンリロードエンジン118を有する。キャッシュの電源オフ前に、特別な準備は必要がない。タグストレージプール1110はその状態を保持し、電源オンの状態を保ってもよい。タグストレージプール2112、データストレージプール1114、およびデータストレージプール2116は、電源オフされる図1で影で示される。電源が回復された後、キャッシュコントローラ104内の電源オンリロードエンジン118は、タグストレージプール1110からタグを読み出し、それらのタグを回復タグとして使用する。回復タグは、メモリ106からデータを取り出すのに使用され、取り出されたデータは、データストレージプール1114に書き込まれる。図2は、タグメモリのサブセットの電源を保持し、一方でデータメモリおよび他のタグメモリを電源オフするのを可能にする、方法200のフローチャートを示す。方法200は、回復タグの電源オンのままのキャッシュの部分での作成および格納を含み、タグ記憶部のサブセット内で状態を保持することにより遂行されるステップ202。残りのタグ記憶部は、全てのデータ記憶部とともに電源オフしてもよいステップ204。タグ記憶部およびデータ記憶部は、電源オンイベントが受信されるまで、電源オフの状態を保つ。電源オンイベントを受信すると、電源オフされていたあらゆるキャッシュを電源オンしてもよいステップ206。電源オンに続き、回復タグが読み出されるステップ208。回復タグを用いてメモリからデータを取り出しステップ210、取り出されたデータをデータ記憶部に書き戻してもよいステップ212。回復タグは、キャッシュ内へデータをロードし戻すための電源オンの後、ユーザがキャッシュから同様のデータを要求する前に使用される。第1の実施形態は、電源、性能、および複雑性の間のトレードオフを含む。キャッシュ記憶に関連する多くの電源は節約されるが、少量の電源が、1つまたは複数のタグ記憶部の状態を保持するためなお必要である。結果としての性能は、電源オンの状態を保つ記憶部の有用性による。最近に使用されたタグならびにより以前に使用されたタグを収集したものが格納されれば、性能はより低いかもしれない。最近使用されたタグが電源オンの状態を保つタグ記憶部への優先的な割り当てをする1つの実施では、性能はより高いかもしれない。他の実施では、最近に使用されたタグが電源オンの状態を保つタグ記憶部へ転送されるよう、キャッシュラインスワップを電源を切る前に実行してもよい。この実施形態の複雑性のレベルは、相対的に低い。前述のようなキャッシュラインスワップロジックが実施される場合を除いて、電源を切る前に別の場所にデータを保存する必要はない。第2の実施形態第2の実施形態では、図3および図4に示されたように、キャッシュが、キャッシュのタグに基き回復タグ情報を生成してもよい。キャッシュは、電源が切られる前に、回復タグを持続性メモリオンチップまたはオフチップのプール内に書き込んでもよい。この持続性メモリは、完全な運用状態または自己リフレッシュのような低電力状態の保持にあってもよく、一方でキャッシュは電源オフされる。一般的なパーソナルコンピュータPCでは、これはシステムメモリまたは持続性メモリの分離した専用プールであってもよい。回復タグまたは回復タグのグループを、それらの通常のエンコーディング内に格納してもよく、またはメモリサイズおよび電力要求を減少させるために持続性メモリに書き込まれる前に圧縮してもよい。電源がキャッシュに回復されたとき、回復タグはキャッシュ内へ読み戻され、キャッシュの補助記憶装置からキャッシュ内へデータ内容をロードするのに使用される。図3は、キャッシュ302、システムメモリ304、メモリコントローラ306、内部の持続性記憶メモリ308、および処理エンジン310を含むメモリシステム300の部分を示す。キャッシュ302は、タグ転送エンジン312、キャッシュ記憶アレイ314、および電源オンリロードエンジン316を有する。システムメモリ304は、キャッシュタグ格納部318を有する。電源オフの準備で、回復タグを生成するため、タグ転送エンジン312によりキャッシュ記憶アレイ314からタグが読み出される。タグ転送エンジン312は、回復タグを、メモリコントローラ306を通してキャッシュタグ格納部318または内部の持続性記憶メモリ308のどちらかへ書き込む。タグ転送エンジン312は、任意選択的に、回復タグを圧縮してもよい。前のステップは任意選択的に重複してもよく、キャッシュタグを読み出してもよく、一方で以前に生成された回復タグはなお書き出されている。電源が回復された後、電源オンリロードエンジン316は、キャッシュタグ格納部318または内部の持続性記憶メモリ308から回復タグを読み出す。電源オンリロードエンジン316は、回復タグ通常はアドレスを使用して、キャッシュにシステムメモリ304からデータを取り出すよう要求する。キャッシュ302は、要求されたデータを取り出し、それをキャッシュ記憶アレイ314に格納する。前の3つのステップは重複してもよく、これは回復タグが読み出されると、他の回復タグが読み出される前または間に、その回復タグに関連するデータをシステムメモリ304から要求し、キャッシュ記憶アレイ314内に格納してもよいことを意味する。図4は、キャッシュの電源オフの前に、持続性メモリのプールに回復タグを書き込む方法400のフローチャートを示す。キャッシュの電源オフの準備で、回復タグを生成するためキャッシュからタグが読み出されるステップ402。回復タグは、それから、持続性メモリに書き込んでもよいステップ404。ステップ402およびステップ404は、キャッシュタグが読み出されステップ402、一方で以前に生成された回復タグが持続性メモリに書き込まれるステップ404よう、重複してもよい。任意選択的に、回復タグが持続性メモリに書き込まれるステップ404前に、回復タグを圧縮してもよいステップ406。それから、キャッシュを電源オフしてもよいステップ408。キャッシュは、電源オンイベントが受信されるまで、電源オフの状態を保つ。電源オンイベントを受信すると、キャッシュは電源オンされステップ410、回復タグを持続性メモリから読み出してもよいステップ412。回復タグを用いて補助記憶装置からデータを要求してもよくステップ414、要求されたデータを取り出してキャッシュ内に格納してもよいステップ416。ステップ412、414、および416は、回復タグが読み出されると、他の回復タグが読み出される前または間に、その回復タグに関連するデータが補助記憶装置から要求され、キャッシュ内に格納されてもよいように、重複してもよい。第2の実施形態も、電源、性能、および複雑性のトレードオフを示す。回復タグがシステムメモリに格納される場合、システムメモリはすでにその状態を保持するために電力を必要とするので、最大の電力が節約される。回復タグが分離したオンチップメモリに格納される場合、比較的少量の追加電力が消費される。実施が、タグの全てか、おそらく最近に使用されたタグを含むタグのサブセットのどちらかへ格納することを優先的に選択してもよいので、第2の実施形態の性能は高い。回復タグをシステム内で生成し移動するので、複雑性のレベルは中程度である。第3の実施形態第3の実施形態では、図5および図6に示されたように、キャッシュは回復タグを生成してもよい。キャッシュが電源オフされる前に、システム内のどこかの不揮発性メモリへ回復タグを書き込んでもよい。キャッシュが電源オフされるとき、不揮発性メモリは電源オンの状態を保つ、または電源オフしてもよい。回復タグまたは回復タグのグループは、それらの通常のエンコーディング内に格納してもよく、または不揮発性メモリに書き込まれる前に圧縮してもよい。回復タグの圧縮は、メモリおよび電源要求を減少させるかもしれない。キャッシュが電源オンのとき、回復タグを有する不揮発性記憶装置は電源オンされる。不揮発性記憶装置の内容はキャッシュ内へ読み戻され、データ内容をキャッシュの補助記憶装置からキャッシュ内へロードするのに使用される。図5は、キャッシュ502、不揮発性メモリ504、システムメモリ506、メモリコントローラ508、および処理エンジン510を含む、メモリシステム500の部分を示す。キャッシュ502は、タグ転送エンジン512、キャッシュ記憶アレイ514、および電源オンリロードエンジン516を有する。電源オフの準備で、タグ転送エンジン512は、キャッシュ記憶アレイ514からタグを読み出す。タグ転送エンジン512は、回復タグを生成し、それらを不揮発性メモリ504に書き込む。タグ転送エンジン512は、任意選択的に、回復タグを圧縮してもよい。前のステップは、キャッシュタグが読み出され、一方で以前に生成された回復タグがなお書き出されるように、任意選択的に重複してもよい。所望のタグが格納された後、キャッシュ502を電源オフしてもよい。任意選択的に、付加的な電力を節約するため、不揮発性メモリ504を電源オフしてもよい。電源が回復された後、必要であれば、キャッシュ502および不揮発性メモリ504を電源オンしてもよい。電源オンリロードエンジン516は、不揮発性メモリ504から回復タグを読み出す。電源オンリロードエンジン516は、回復タグ通常はアドレスを使用して、システムメモリ506からキャッシュデータを要求する。キャッシュ502は、要求されたデータを取り出し、それをキャッシュ記憶アレイ514に格納する。回復タグが読み出されると、他の回復タグが読み出される前または間に、その回復タグに関連するデータがシステムメモリ506から要求され、キャッシュ記憶アレイ514内に格納してもよいように、前の3つのステップは、重複してもよい。図6は、キャッシュの電源オフ前に、回復タグを不揮発性メモリに書き込む方法600のフローチャートを示す。電源オフの準備で、回復タグを生成するため、タグをキャッシュから読み出してもよいステップ602。回復タグを、それから、不揮発性メモリに書き込んでもよいステップ604。ステップ602およびステップ604は、キャッシュタグが読み出されステップ602、一方で以前に生成された回復タグが不揮発性メモリに書き込まれるステップ604ように、重複してもよい。任意選択的に、回復タグが不揮発性メモリに書き込まれるステップ604前に、回復タグを圧縮してもよいステップ606。キャッシュおよび不揮発性メモリを、電源オフしてもよいステップ608。キャッシュは、電源オンイベントが受信されるまで、電源オフの状態を保つ。電源オンイベントを受信すると、キャッシュおよび不揮発性メモリ電源オフされていればを電源オンしてもよいステップ610。電源オンに続き、回復タグを不揮発性メモリから読み出してもよいステップ612。取り出された回復タグを用いて補助記憶装置からデータを要求してもよくステップ614、要求されたデータを取り出してキャッシュ記憶アレイ内に格納してもよいステップ616。ステップ612、614、および616は、回復タグが不揮発性メモリから読み出されると、他の回復タグが読み出される前または間に、その回復タグに関連するデータが補助記憶装置から要求され、キャッシュ内に格納されてもよいように、重複してもよい。第3の実施形態は、電源、性能、および複雑性のトレードオフを示す。第3の実施形態の不揮発性メモリは、第2の実施形態のシステムメモリの実施よりわずかに少ない電力を節約する。しかし、第2の実施形態が回復タグに分離した常にオンのメモリを使用するとき、第2の実施形態より多くの電力が節約される。これは、キャッシュが比較的長い時間電源オフされる場合に、特にあてはまる。実施が、タグの全てか、おそらく最近に使用されたタグを含むサブセットのどちらかへ格納することを優先的に選択してもよいので、第3の実施形態の性能は高い。最後に、第3の実施形態は不揮発性メモリの組み込みを必要とするので、複雑性のレベルは高い。第4の実施形態第4の実施形態では、図7および図8に示されたように、マルチレベルキャッシュ設計が使用される。マルチレベルキャッシュは、キャッシュ待ち時間およびヒット率の間のトレードオフをなくすために使用される。小さいキャッシュは待ち時間がより短いが、ヒット率がより低い傾向があり、一方で、大きいキャッシュはヒット率がより高いが、待ち時間がより長い傾向がある。マルチレベルキャッシュは、通常はまず、より小さいキャッシュをチェックし、それから、データがより小さいキャッシュ内に配置されていない場合のみ、より大きいキャッシュのチェックに進む。全てのキャッシュがチェックされるまで高位レベルのキャッシュが徐々にチェックされ、それから外部のメモリがチェックされる。厳密なインクルーシブ設計では、より小さいキャッシュ内の全てのデータは、より大きいキャッシュ内にもある。エクスクルーシブ設計では、全てのデータは最大でキャッシュのうちの1つにある。セミインクルーシブ設計では、より小さい、低位レベルキャッシュからのデータの一部は、より大きい、高位レベルキャッシュにもあってもよい。第4の実施形態では、低位キャッシュレベルは例えばインクルーシブまたはセミインクルーシブ設計を用いて、高位のキャッシュレベルの内容を重複してもよい。この実施形態は、高位のレベルキャッシュを電源オフし、一方で低位のレベルキャッシュは電源オンの状態を保つことを可能にしてもよい。高位レベルキャッシュの電源がオンに戻ったとき、低位レベルキャッシュからの内容を、直接高位のレベルキャッシュ内に転送して戻してもよい。高位レベルキャッシュが、通常はより大きく、容量の問題によりそれらのエントリをより除去しそうにないので、これは性能上利点を有する。図7は、パワーゲートの高位レベルキャッシュレベルNキャッシュ702、複数の低位レベルキャッシュレベルN-Mキャッシュ7040~704n、メモリ706、およびメモリコントローラ708を含む、メモリシステム700の部分を示す。レベルNキャッシュ702の電源オフ前に、特別な準備は必要がない。レベルNキャッシュ702が電源オフされ、一方でレベルN-Mキャッシュ7040~704nの全てまたはサブセットは、電源オンの状態を保つ。電源が回復された後、それぞれのレベルN-Mキャッシュ7040~704nはタグおよびデータ情報を生成し、レベルNキャッシュ702に送信して戻す。レベルNキャッシュ702は、タグおよびデータ情報を、そのローカル記憶メモリ内に書き込む。図8は、データを低位レベルキャッシュから高位レベルキャッシュへ回復する、マルチレベルキャッシュ設計を用いた方法800のフローチャートを示す。高位レベルキャッシュを、電源オフしてもよいステップ802。低位レベルキャッシュのサブセットは、電源オンの状態を保ってもよいステップ804。高位レベルキャッシュは、電源オンイベントが受信されるまで、電源オフの状態を保つ。電源オンイベントを受信すると、高位レベルキャッシュが電源オンされるステップ806。低位レベルキャッシュがタグおよびデータ情報を生成し、高位レベルキャッシュに送信して戻すステップ808。高位レベルキャッシュは、タグおよびデータ情報を、そのローカル記憶メモリ内に書き込むステップ810。第4の実施形態は、電源、性能、および複雑性のトレードオフを示す。第4の実施形態は、高位レベルキャッシュ全体を電源オフしてもよいので、電力の高度の節約を提供する。しかし、低位レベルキャッシュに含まれるデータのみが高位レベルキャッシュに転送され、そのデータは低位レベルキャッシュではすでに可能であるため、相対的に低い性能が予想される。低位レベルキャッシュからのキャッシュラインが容量の問題により除去され、以前高位レベルキャッシュへ転送されたより古いラインが再び必要とされるとき、性能の利点が予想される。中程度の複雑性が予想される。インクルーシブまたはセミインクルーシブキャッシュ設計では、キャッシュラインはエクスクルーシブキャッシュ設計なので、通常は低位レベルキャッシュから高位レベルキャッシュまで転送されない。よって、インクルーシブまたはセミインクルーシブ設計を含むこの実施形態は、キャッシュラインを低位レベルキャッシュから高位レベルキャッシュに移動するのに、新しいデータパスの追加を必要とするかもしれない。第5の実施形態第5の実施形態では、図9および図10に示されたように、マルチレベルキャッシュ設計が使用される。低位キャッシュレベルは、高位レベルキャッシュの内容を重複してもよいすなわちインクルーシブまたはセミインクルーシブ設計を用いて。この実施形態は、高位のレベルキャッシュを電源オフし、一方で低位のレベルキャッシュは電源オンの状態を保つことを可能にしてもよい。高位レベルキャッシュが電源オンされるとき、低位レベルキャッシュの内容に基き回復タグを生成してもよい。データを補助記憶装置から高位レベルキャッシュ内にロードするため、回復タグを使用してもよい。これは、特に、アドレス変換のキャッシュである変換索引バッファTLB設計で好都合である。そのような設計では、低位レベルキャッシュ内の変換エントリからの回復タグは、高位レベルキャッシュが実際の変換エントリに加え階層ディレクトリ情報のロードを可能にしてもよい。図9は、パワーゲートの高位レベルキャッシュレベルNキャッシュ902、複数の低位レベルキャッシュレベルN-Mキャッシュ9040~904n、メモリ906、およびメモリコントローラ908を含む、メモリシステム900の部分を示す。レベルNキャッシュ902は、電源オンリロードエンジン910を有する。レベルNキャッシュ902の電源オフ前に、特別な準備は必要がない。レベルNキャッシュ902が電源オフされ、一方でレベルN-Mキャッシュ9040~904nの全てまたはサブセットは、電源オンの状態を保つ。電源回復の後、それぞれのレベルN-Mキャッシュ9040~904nは、そのローカルキャッシュタグ情報に基き回復タグを生成する。レベルN-Mキャッシュ9040~904nは、それから、生成された回復タグに基きリロードコマンドをレベルNキャッシュ902へ発行する。レベルNキャッシュ902内の電源オンリロードエンジン910は、レベルN-Mキャッシュ9040~904nからのリロードコマンドを使用して、メモリ906からデータを要求する。レベルNキャッシュ902は、リロードされたデータを、そのキャッシュ記憶メモリ内に格納する。これらの最後の2つのステップで、レベルNキャッシュ902は、階層データの複数のレベルを行き来しなければならない場合、それぞれのリロード要求に対しメモリ906からデータの複数片を要求、取り出し、および格納してもよい。この1つの例は、キャッシュがTLBで、最終変換エントリに到達する前に複数のディレクトリレベルを行き来しなければならない場合である。この方法で取り出された全ての階層情報およびディレクトリエントリも、最終変換とともにレベルNキャッシュ902内に格納してもよい。これは、結果に到達するためにとられるステップの保持と同等物であってもよい。図10は、マルチレベルキャッシュ設計を用いて、低位レベルキャッシュの内容に基き回復タグを生成する方法1000のフローチャートを示す。高位レベルキャッシュを、電源オフしてもよいステップ1002。低位レベルキャッシュのサブセットは、電源オンの状態を保ってもよいステップ1004。高位レベルキャッシュは、電源オンイベントが受信されるまで、電源オフの状態を保つ。電源オンイベントを受信すると、高位レベルキャッシュが電源オンされステップ1006、低位レベルキャッシュが、ローカルキャッシュタグ情報に基き回復タグを生成するステップ1008。低位レベルキャッシュは、回復タグに基きリロードコマンドを高位レベルキャッシュへ発行するステップ1010。高位レベルキャッシュは、リロードコマンドを使用して、その補助記憶装置からデータを要求しステップ1012、リロードされたデータをその記憶メモリ内に格納するステップ1014。高位レベルキャッシュは、任意選択的に、階層ディレクトリ情報を保持しステップ1016、その情報をその記憶メモリへ書き込んでもよい。第5の実施形態は、電源、性能、および複雑性のトレードオフを示す。それは、高位レベルキャッシュ全体を電源オフしてもよいので、電力の高度の節約を提供する。第4の実施形態によるよりも多くの情報が高位レベルキャッシュ内へロードされるので、中程度の性能が予想される。しかし、より小さい、低位レベルキャッシュからの情報のみが保持されるので、性能は、最初の3つの実施形態より低くなりそうである。低い複雑性が予想される。この実施形態では、低位レベルキャッシュのうちの1つから高位レベルキャッシュへの要求は、高位レベルキャッシュからのサービスを要求する低位レベルキャッシュ内のキャッシュミスと同様であってもよい。第6の実施形態第6の実施形態では、図11および図12に示されたように、回復タグのリストを、システムメモリまたは内部のメモリのような持続性記憶の場所内へソフトウェアによりプログラムしてもよい。キャッシュは持続してプログラムされてもよく、または回復タグが置かれた場所の暗黙の知識を有してもよい。キャッシュが電源オンされるときは常に、回復タグのリストを、アクセスし、データ内容をキャッシュの補助記憶装置からキャッシュ内へロードするのに使用してもよい。図11は、キャッシュ1102、内部の持続性記憶メモリ1104、システムメモリ1106、メモリコントローラ1108、および処理エンジン1110を含む、メモリシステム1100の部分を示す。キャッシュ1102は、電源オンリロードエンジン1112およびキャッシュ記憶アレイ1114を有する。処理エンジン1110は、ソフトウェア1116を有する。キャッシュが電源オフされる前またはその間、ソフトウェア1116は回復タグ情報を、持続性記憶に書き込む。この持続性記憶は、例えば、内部の持続性記憶メモリ1104またはシステムメモリ1106であってもよい。キャッシュ1102を、それから電源オフしてもよい。キャッシュ1102は、電源オンイベントが受信されるまで、電源オフの状態を保つ。電源オンイベントを受信すると、キャッシュ1102が電源オンされ、電源オンリロードエンジン1112が、システムメモリ1106または内部の持続性記憶メモリ1104から回復タグを読み出す。電源オンリロードエンジン1112は、回復タグ通常はアドレスを使用して、キャッシュにシステムメモリ1106からデータを取り出すよう要求する。キャッシュは、要求されたデータを取り出し、それをキャッシュ記憶アレイ1114内に格納する。前の3つのステップは、回復タグが読み出されると、他の回復タグが読み出される前または間に、その回復タグに関連するデータがシステムメモリ1106から要求され、キャッシュ記憶アレイ1114内に格納されてもよいように、重複してもよい。図12は、ソフトウェアにプログラムされた回復タグのリストを作成し、回復タグを持続性記憶の場所内に格納する方法1200のフローチャートを示す。ソフトウェアは、回復タグ情報を持続性記憶に書き込むステップ1202。キャッシュを、いつでも電源オフしてよいステップ1204。キャッシュは、電源オンイベントが受信されるまで、電源オフの状態を保つ。電源オンイベントを受信すると、キャッシュが電源オンされステップ1206、回復タグが持続性メモリから読み出されるステップ1208。回復タグは、補助記憶装置からデータを要求するのに使用されステップ1210、要求されたデータが取り出され、キャッシュ内に格納されるステップ1212。ステップ1208、1210、および1212は、回復タグが読み出されると、他の回復タグが読み出されて処理される前または間に、その回復タグに関連するデータが補助記憶装置から要求され、キャッシュ内に格納されてもよいように、重複してもよい。第6の実施形態は、回復タグがシステムメモリに格納される場合、システムメモリはすでにその状態を保持するために電力を必要とするので、最大の電力を節約する。回復タグが分離したオンチップメモリに格納される場合、少量の追加の電力が消費される。ソフトウェアが回復タグのリストをハードウェアと同一のアップデート頻度で保持可能でないかもしれないので、最初の3つの実施形態と比較して、この実施形態はより低い性能が予想される。回復タグを保存する必要があるハードウェアがないので、ハードウェアの複雑性は、他の実施形態より低い。しかし、ソフトウェアが回復タグのアクティブリストを保持する必要があるので、中程度のソフトウェアの複雑性が予想される。第7の実施形態第7の実施形態では、図13および図14に示されたように、回復タグのリストが生成され、通常のキャッシュアクセスに基きアップデートされる。例えば、多数のソースのそれぞれからの全体のN件の要求の最後、または最後のN件の要求のリストを保存し、継続的にアップデートしてもよい。このリストを、重複、類似または部分的に一致するエントリを取り除くため、フィルタにかけてもよい。回復タグのリストを、キャッシュが電源オフされる間状態を保持する、持続性記憶の場所に格納してもよい。それをまた、非持続性の場所に格納してもよい。非持続性の場所に格納された場合、回復タグのリストを、キャッシュおよび非持続性記憶の電源オフの準備で、持続性記憶の場所に転送してもよい。キャッシュが電源オンされた後、回復タグがデータ内容をキャッシュの補助記憶装置からキャッシュ内へロードするのに使用される。図13は、キャッシュ1302、処理エンジン1304、内部の持続性記憶メモリ1306、システムメモリ1308、およびメモリコントローラ1310を含む、メモリシステム1300の部分を示す。処理エンジン1304は、ソフトウェア1312を有する。キャッシュ1302は、回復タグリスト1314、電源オンリロードエンジン1316、およびキャッシュ記憶アレイ1318を有する。通常の作動の間、クライアントこのケースでは処理エンジン1304からキャッシュ1302へのアクセスが使用され、持続性記憶場所または非持続性の場所のどちらかに格納される回復タグを生成する。ソフトウェア1312は、回復タグ情報を、例えば持続性記憶-内部の持続性記憶メモリ1306またはシステムメモリ1308に書き込む。キャッシュ1302が電源オフされたときに回復タグリスト1314が状態を失う場合、キャッシュ1302の電源オフ前に、回復タグリスト1314を持続性記憶場所に転送しなければならない。キャッシュ1302は、それから電源オフされ、電源オンイベントが受信されるまで、電源オフの状態を保つ。電源オンイベントを受信すると、キャッシュが電源オンされ、電源オンリロードエンジン1316が、回復タグを読み出す。電源オンリロードエンジン1316は、回復タグ通常はアドレスを使用して、システムメモリ1308からキャッシュデータを要求する。キャッシュ1302は、要求されたデータを取り出し、それをキャッシュ記憶アレイ1318内に格納する。前の3つのステップは、回復タグが読み出されると、他の回復タグが読み出される前または間に、その回復タグに関連するデータがシステムメモリ1308から要求され、キャッシュ記憶アレイ1318内に格納されてもよいように、重複してもよい。図14は、通常のキャッシュアクセスに基き、回復タグのリストを生成およびアップデートする方法1400のフローチャートを示す。キャッシュへのクライアントアクセスが、回復タグを生成するため使用されるステップ1402。任意選択的に、回復タグを、重複、類似または部分的に一致するエントリを取り除くため、フィルタにかけてもよいステップ1404。回復タグは、持続性記憶場所または非持続性記憶場所に格納されるステップ1406。回復タグリストは、非持続性の場所に格納された場合、持続性記憶場所に転送してもよいステップ1408。キャッシュを、それから電源オフしてもよいステップ1410。キャッシュは、電源オンイベントが受信されるまで、電源オフの状態を保つ。電源オンイベントを受信すると、キャッシュが電源オンされステップ1412、回復タグが読み出されるステップ1414。補助記憶装置からデータを要求するために回復タグが使用されステップ1416、要求されたデータが取り出され、キャッシュ内に格納されるステップ1418。ステップ1414、1416、および1418は、回復タグが読み出されると、他の回復タグが読み出されおよび処理される前または間に、その回復タグに関連するデータが補助記憶装置から要求され、キャッシュ内に格納されてもよいように、重複してもよい。第7の実施形態は、回復タグがシステムメモリに格納される場合、システムメモリはすでにその状態を保持するために電力を必要とするので、最大の電力を節約する。回復タグが分離したオンチップメモリに格納される場合、少量の追加の電力が消費される。実施が、タグの全てか、おそらく最近に使用されたタグを含むタグのサブセットのどちらかへ格納することを優先的に選択してもよいので、性能は高いと予想される。回復タグを生成しシステム内で移動する必要があるので、複雑性のレベルは中程度である。この実施で、分離した回復タグのリストを保つためにより多くのロジックおよび記憶装置が必要とされる。しかし、どのキャッシュタグを回復タグとして保存するか判断するために、キャッシュタグをスキャンするロジックは必要がない。第8の実施形態第8の実施形態では、図15および図16に示されたように、キャッシュに要求するキャッシュクライアントを、キャッシュの電源の状態を認識するようにしてもよい。クライアントが、キャッシュの電源投入を誘発するかキャッシュ電源投入イベントを検出する場合、それは、キャッシュへのプリフェッチコマンドの特殊なストリームを生成して送信してもよい。これらのプリフェッチコマンドは回復タグと同様にはたらき、キャッシュのその補助記憶装置からの情報のロードを誘発する。クライアントは、クライアントが近い将来に必要と考えるデータのロードを起こすため、プリフェッチコマンドを生成してもよい。これは、キャッシュ電源投入イベントに関連するので、通常のキャッシュへのプリフェッチコマンドの生成と異なる。またクライアントは、電源切断される前にキャッシュに予め発行されたプリフェッチコマンドを発行してもよい。図15は、キャッシュ1502、システムメモリ1504、およびメモリコントローラ1506を含む、メモリシステム1500の部分を示す。キャッシュ1502は、キャッシュ記憶アレイ1508を有する。クライアント1510は、キャッシュ1502およびシステムメモリ1504にアクセスしてもよい。1つのクライアントが図15に示されるが、いずれの数のクライアントがキャッシュ1502およびシステムメモリ1504と通信してもよい。キャッシュ1502は、電源オフされる。電源が回復された後、キャッシュ1502は、クライアント1510に今電源オンし、その状態がなくなったことを信号で伝える。クライアント1510は、一連のプリフェッチコマンドをキャッシュ1502へ発行する。これらのプリフェッチコマンドを、電源オフイベントの前に、キャッシュ1502に予め発行してもよい。キャッシュ1502は、クライアント1510からの実際のアクセスおよび要求より前に、プリフェッチコマンドを使用して、データをシステムメモリ1506からキャッシュ1502内へロードする。図16は、電源オン後プリフェッチコマンドを使用して、キャッシュのその補助記憶装置からの情報のロードを誘発する方法1600のフローチャートを示す。キャッシュを、いつでも電源オフしてもよいステップ1602。キャッシュが電源オンされたステップ1604後、キャッシュ1502はクライアントに、電源オンが起こり、その状態がなくなったことを信号で伝えるステップ1606。クライアントは、プリフェッチコマンドをキャッシュへ発行するステップ1608。クライアントは、電源オフの前に予め発行されたプリフェッチコマンドを発行してもよいステップ1610。キャッシュは、プリフェッチコマンドを使用して、データをキャッシュ内へロードするステップ1612。第8の実施形態は、プリフェッチコマンドから集められた情報がすでにその状態を必ず保持するシステムメモリ内に置かれるので、最大の電力を節約する。この実施形態の性能は、プリフェッチングの正確性による。予測が大きく、より早くプリフェッチングが起こる可能性があるほど、性能はよい。いくつかの適用はこの実施形態でよくなるかもしれず、一方で他の適用は、クライアントのキャッシュアクセスパターンによって、他の実施形態からより多く利点を得るかもしれない。この実施形態のキャッシュ部分の複雑性のレベルは低い。プロセッサがキャッシュ電源状態に応じて起こるプリフェッチングのレベルを動的に制御する必要があるので、プロセッサに複雑性が加わることが予想される。機能および構成要素を特定の組み合わせで前述したが、それぞれの機能または構成要素を、単独で他の機能および構成要素なしに、または種々の組み合わせで他の機能および構成要素と組み合わせてまたはなしで、使用することが可能である。本明細書で提供される方法またはフローチャートを、コンピュータプログラム、ソフトウェア、または汎用コンピュータまたはプロセッサによる実行のためコンピュータ可読な記憶媒体に包含されるファームウェア内で実行してもよい。コンピュータ可読な記憶媒体の例は、読み出し専用メモリROM、ランダムアクセスメモリRAM、レジスタ、キャッシュメモリ、半導体メモリ装置、内部のハードディスクおよびリムーバブルディスクのような磁気媒体、光磁気媒体、および、CD-ROMディスクおよびデジタル多用途ディスクDVDのような光学媒体を含む。適切なプロセッサは、例示の目的で、汎用プロセッサ、特殊用途プロセッサ、従来型プロセッサ、デジタル信号プロセッサDSP、複数のマイクロプロセッサ、DSPコアを伴った1つまたは複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途内蔵回路ASIC、フィールドプログラム可能なゲートアレイFPGA回路、あらゆる他のタイプの内蔵回路IC、および/またはステートマシンを含む。そのようなプロセッサを、処理されたハードウェア記述言語HDL命令コンピュータ可読な媒体に格納可能なそのような命令の結果を使用した製造プロセスを構成することにより製造してもよい。そのような処理の結果は、本発明の態様を実行するプロセッサを製造する半導体製造プロセスにおいて使用されるマスクワークであってもよい。