JP5570621B2 - 電源回復後のリロード機能付きキャッシュ - Google Patents

電源回復後のリロード機能付きキャッシュ Download PDF

Info

Publication number
JP5570621B2
JP5570621B2 JP2012555511A JP2012555511A JP5570621B2 JP 5570621 B2 JP5570621 B2 JP 5570621B2 JP 2012555511 A JP2012555511 A JP 2012555511A JP 2012555511 A JP2012555511 A JP 2012555511A JP 5570621 B2 JP5570621 B2 JP 5570621B2
Authority
JP
Japan
Prior art keywords
cache
tag
recovery
power
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012555511A
Other languages
English (en)
Other versions
JP2013521559A (ja
JP2013521559A5 (ja
Inventor
エヌジー フィリップ
ビー.ミルザ ジムシェド
アサロ アンソニー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of JP2013521559A publication Critical patent/JP2013521559A/ja
Publication of JP2013521559A5 publication Critical patent/JP2013521559A5/ja
Application granted granted Critical
Publication of JP5570621B2 publication Critical patent/JP5570621B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本出願は、2010年3月3日出願の米国特許出願第12/716,391号の権利を主張し、その内容は、参照により本明細書に完全に説明されたように、本明細書に組み込まれる。
本発明は、コンピュータのキャッシュメモリに関し、とりわけ、電源が切られ、それからキャッシュメモリへ回復された後にキャッシュメモリをリロードする方法および機器に関する。
コンピュータでは、キャッシュは、最近アクセスされたデータを保持する、プロセッサのメインメモリから分離した、小さく、迅速なメモリである。キャッシュを用いることで、同一のデータのその後の要求にかかるアクセス時間が短くなる。要求されたデータまたはメモリの箇所がサーチされるキャッシュ内に見出されるとき、「キャッシュヒット」が起こる。要求されたデータまたはメモリの箇所が見出されないとき、それは「キャッシュミス」とみなされ、そのデータは、おそらくキャッシュ内に新しいエントリを割り当てられる。キャッシュがすでに一杯である場合、既存のエントリの除去に、多くの方策のうちの1つが採用される。
キャッシュは、1つまたは複数のタグ格納部および1つまたは複数のデータ格納部を有してもよい。タグ格納部は、タグを有する。一般的に、タグを使用して、キャッシュされたデータ片を一意的に識別し、キャッシュされたデータが入ってくる要求を満たすために使用できるかどうかを判断してもよい。1つの実施では、タグは、キャッシュされたデータのメインメモリの位置のインデックスを有してもよい。他の実施では、変換索引バッファ(TLB)タイプのキャッシュ内で、タグはメインメモリの位置を直接インデックス化しないかもしれないが、仮想アドレス、および特定のメインメモリアドレスに直接関連しない他の要求ベースの情報で構成されてもよい。データ格納部は、メインメモリからのデータのコピーを有する。データ格納部はまた、プロセッサが生成した、メインメモリにまだ書き出されていないデータを(例えば、ライトバックキャッシュで)有してもよい。そのようなデータは、電源がキャッシュから切られる前に、メモリに書き出されなければならない。
コンピュータの電力消費を減少させるため、構成部品(内部に内蔵された構成部品を含む)を、空き時間の間、低電力状態または完全に電源オフの状態においてもよい。揮発性記憶構成要素で構築されたキャッシュメモリの電源オフは、状態を失う結果となる。電源が回復されると、通常のキャッシュアクセスは、キャッシュが空なので失敗し、より長い待ち時間(およびたぶんより低い帯域幅)の持続性補助記憶装置からの取り出しを必要とし、より低い性能をもたらす。これらのアクセスは徐々にキャッシュを再び満たし、その後のアクセスがこれらの再び満たされたエントリにヒットし始めると仮定すると、性能は徐々にその名目上のレベルへ回復する。
いくつかの既存の技術は、キャッシュが、その内容のフラクションと同時に、例えばタグ格納部およびデータ格納部の両方を電源オフすることを可能にする。ある技術では、キャッシュの部分のみに電力を供給することで状態を保持する一方で、電力消費量を減らしてもよい。この特別な解決策は、いくつかのタグメモリおよび対応するデータメモリの状態の保持に電力を消費する。
他の技術は、キャッシュのクロック周波数を減少させて、動的電力消費量を低下させる。静的電力消費を、キャッシュのトランジスタの動作パラメータ(電圧低下、バイアス変化など)への対応する調整により、減少させてもよい。
既存の技術は、電力消費量を減少させるために電源回復後の性能を犠牲にするか、電源回復後の性能低下を避けるためにデータ格納部のサブセットに電力を保持して最適な電力消費を犠牲にするかを選択する結果となる。よって、キャッシュが電源オンされた後の性能を犠牲にすることなく、多くまたは全てのキャッシュを電源オフするニーズが存在する。
キャッシュを再配置する方法は、キャッシュの内容の少なくとも部分を、キャッシュから分離した場所に格納することで始まる。電源がキャッシュから切られ、いくぶんかの時間の後に回復される。電源がキャッシュに回復された後、それは、キャッシュから分離して格納されたキャッシュの内容の部分で再配置される。
キャッシュを再配置する方法は、キャッシュの電源を切り、いくぶんかの時間の後に回復することで始まる。キャッシュクライアントは、電源がキャッシュに回復され、キャッシュは状態を失ったことを信号で伝えられる。クライアントは、プリフェッチコマンドをキャッシュへ発行し、キャッシュはプリフェッチコマンドを使用してデータをキャッシュ内へロードする。
キャッシュを再配置する機器は、キャッシュ、メモリ、およびメモリコントローラを有する。キャッシュは、データおよびデータに関するタグを格納するよう構成される。メモリは、キャッシュから分離して置かれ、キャッシュから電源が切られたとき、キャッシュからタグを格納するよう構成される。メモリコントローラは、キャッシュに電源が回復されたとき、タグをキャッシュからメモリへ書き込むよう構成される。
キャッシュを再配置するための汎用コンピュータによる実行の命令のセットを格納するコンピュータ可読な記憶媒体、命令のセットは、格納コードセグメント、切断コードセグメント、回復コードセグメント、再配置コードセグメントを含む。格納コードセグメントは、キャッシュから分離した場所にキャッシュの内容の少なくとも部分を格納するためである。切断コードセグメントは、キャッシュから電源を切るためである。回復コードセグメントは、キャッシュへ電源を回復するためである。再配置コードセグメントは、キャッシュから分離して格納されたキャッシュの内容の部分で、キャッシュを再配置するためである。
例示の方法による後述の記載により、本発明はより詳細に理解され、以下の添付の図と併せて理解されるだろう。
電源回復後、キャッシュをリロードするメモリシステムの第1の実施形態のブロック図である。 電源回復後、キャッシュをリロードする第1の方法のフローチャートである。 電源回復後、キャッシュをリロードするメモリシステムの第2の実施形態のブロック図である。 電源回復後、キャッシュをリロードする第2の方法のフローチャートである。 電源回復後、キャッシュをリロードするメモリシステムの第3の実施形態のブロック図である。 電源回復後、キャッシュをリロードする第3の方法のフローチャートである。 電源回復後、キャッシュをリロードするメモリシステムの第4の実施形態のブロック図である。 電源回復後、キャッシュをリロードする第4の方法のフローチャートである。 電源回復後、キャッシュをリロードするメモリシステムの第5の実施形態のブロック図である。 電源回復後、キャッシュをリロードする第5の方法のフローチャートである。 電源回復後、キャッシュをリロードするメモリシステムの第6の実施形態のブロック図である。 電源回復後、キャッシュをリロードする第6の方法のフローチャートである。 電源回復後、キャッシュをリロードするメモリシステムの第7の実施形態のブロック図である。 電源回復後、キャッシュをリロードする第7の方法のフローチャートである。 電源回復後、キャッシュをリロードするメモリシステムの第8の実施形態のブロック図である。 電源回復後、キャッシュをリロードする第8の方法のフローチャートである。
通常のキャッシュの強化を、以下に記載する。通常、キャッシュが電源オフのとき、キャッシュをデータで再び満たすのにいくぶんかの時間がかかり、従って、最初のキャッシュアクセスはキャッシュが電源オフされた前より低速である。電源が回復された後、入ってくる要求がキャッシュに失敗し、それが新しいデータがキャッシュを満たす状態を導くにつれ、空のキャッシュは徐々に再び満たされるかもしれない。この再び満たすプロセスは入ってくる要求の割合により制限されるかもしれず、より古い要求がキャッシュミスにより低速で提供されているので、低速かもしれない。
電源が回復された後、ユーザがキャッシュから再度データを要求する前に、同一のデータをキャッシュへ回復してもよいように、データを、電源オフされるキャッシュの外側に格納してもよい。よって、ユーザがキャッシュへそのデータ片を要求する前にデータをキャッシュへ回復してもよいので、キャッシュに電源オン後の性能の劣化は軽減される。再充填のプロセスは、通常のプロセッサの要求と重複してもよく、再充填のプロセスが完了するまで通常のプロセッサの要求を必ずしもブロックする必要はない。
電力消費量を減少させるのにパワーゲートを使用してもよく、電源が回復された後すぐに内容をキャッシュ内にロードすることにより、低性能の期間を最小化してもよい。キャッシュをまた、完全にパワーゲートを行い、全ての動的電力をなくし、パワーゲートを通して漏出する静的電力を減少させてもよい。他の実施形態では、全てのデータ格納部を電源オフし、さらに電力消費を最小化してもよい。
「回復タグ」を生成し、それから保存、維持または格納するよう、メカニズムをキャッシュに追加してもよい。回復タグは、電源回復イベントの後、データを置きキャッシュの補助記録メモリからロードするのに十分な情報を有する。それは、近い将来に1つまたは複数の要求にサービスするのにキャッシュがそれを必要とするという予測のもとにデータが取り出されるプリフェッチ要求に、性質が似ている。
回復タグは、電源を節約するためのいくつかまたは全てのキャッシュの電源オフの前に、持続性記憶場所に置かれる。電源が回復されたとき、データをキャッシュの補助記憶装置からキャッシュ内へロードするために、回復タグが使用される。このデータのロードは、通常のキャッシュ要求が起こすあらゆるロードと分離し、通常、時間的に前である。いくつかまたは全てのキャッシュエントリを、この方法でロードしてもよい。ロードされるデータは、電源オフされる前に以前キャッシュ内にあったものでもよいし、電源が回復された後で有用と予測されるあらゆるデータでもよい。
回復タグは、キャッシュが電源オフされる前にキャッシュに格納された情報を用いて構成してもよい。これは、電源ダウン期間の後、既存のキャッシュデータが必要とされるという仮定に基く。回復タグを、キャッシュ内に以前格納された的確なデータをリロードするのに使用して、キャッシュ内に以前格納されたデータの取得に関連する有用な中間情報をロードし、または電源回復後に有用と予想される他のデータをロードしてもよい。そのようなケースでは、キャッシュエントリの回復タグを、エントリのタグの内容(通常はアドレスの部分だが、おそらく付加的な属性とともに)に基き構成してもよい。キャッシュ内のキャッシュエントリの論理的アドレスのような、付加的な情報も、回復タグの構成に必要とされるかもしれない。回復タグは、キャッシュが電源オンに戻った後すぐに起こるアクセスのタイプの知識または予想のソフトウェアで構成してもよい。
キャッシュが、キャッシュのデータ内容の重複コピーを保持する補助記憶メモリを有すると仮定する。キャッシュが、補助記憶装置内のデータより新しい「ダーティ」書き込みデータを格納する場合、キャッシュから電源が切られる前に補助記憶メモリへダーティデータが書き出される。
本明細書に記載された実施形態は、インストラクションキャッシュ、データキャッシュ、変換索引バッファ(TLB)、I/O TLB、テクスチャおよび頂点のグラフィックスデータキャッシュなどを含むがそれらに限定されない、多くのタイプのハードウェアキャッシュに適用可能である。
キャッシュのタグを、さまざまなメカニズムを用いて、生成、保存、または維持、およびそれからロードしてもよい。いくつかの実施形態は、電源オフイベントの前、または電源が回復された後のどちらかに回復タグを生成するメカニズムを有する。また、いくつかの実施形態は、電源回復後に回復タグを取り込み、回復タグを使用してキャッシュの補助記憶装置からキャッシュ内へデータをロードする、電源オンリロードエンジンを有する。電源オンリロードエンジンを、プリフェッチまたはロードエンジンのような既存のロジックと組み合わせ、または共用してもよい。
設計のバリエーション
以下の例の実施形態は、案内および説明の目的である。当業者は、これらの実施形態の変形が可能であることを認識する。それぞれの実施形態は、自身の利点および異なる能力、性能、および複雑性のトレードオフを有する。
第1の実施形態
第1の実施形態では、図1および2に示されたように、キャッシュは分離したメモリ内にタグ情報およびデータ情報を格納してもよい。キャッシュはタグメモリのサブセットのために電源を維持してもよいが、データメモリおよび残りのタグメモリが電源オフされるのを可能にする。この実施形態では、維持されたキャッシュタグを用いることにより、電源が回復された後で回復タグが生成される。回復タグは、キャッシュの補助記憶装置からキャッシュ内へデータ内容をロードするために使用される。
図1は、キャッシュ102、キャッシュコントローラ104、メモリ106、およびメモリコントローラ108を含むメモリシステム100の部分を示す。キャッシュ102は、第1のタグストレージプール(タグストレージプール1)110、第2のタグストレージプール(タグストレージプール2)112、第1のデータストレージプール(データストレージプール1)114、および第2のデータストレージプール(データストレージプール2)116を有する。キャッシュコントローラ104は、電源オンリロードエンジン118を有する。
キャッシュの電源オフ前に、特別な準備は必要がない。タグストレージプール1 110はその状態を保持し、電源オンの状態を保ってもよい。タグストレージプール2 112、データストレージプール1 114、およびデータストレージプール2 116は、電源オフされる(図1で影で示される)。電源が回復された後、キャッシュコントローラ104内の電源オンリロードエンジン118は、タグストレージプール1 110からタグを読み出し、それらのタグを回復タグとして使用する。回復タグは、メモリ106からデータを取り出すのに使用され、取り出されたデータは、データストレージプール1 114に書き込まれる。
図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キャッシュ)704〜704、メモリ706、およびメモリコントローラ708を含む、メモリシステム700の部分を示す。
レベルNキャッシュ702の電源オフ前に、特別な準備は必要がない。レベルNキャッシュ702が電源オフされ、一方でレベルN−Mキャッシュ704〜704の全てまたはサブセットは、電源オンの状態を保つ。電源が回復された後、それぞれのレベルN−Mキャッシュ704〜704はタグおよびデータ情報を生成し、レベルNキャッシュ702に送信して戻す。レベルNキャッシュ702は、タグおよびデータ情報を、そのローカル記憶メモリ内に書き込む。
図8は、データを低位レベルキャッシュから高位レベルキャッシュへ回復する、マルチレベルキャッシュ設計を用いた方法800のフローチャートを示す。高位レベルキャッシュを、電源オフしてもよい(ステップ802)。低位レベルキャッシュのサブセットは、電源オンの状態を保ってもよい(ステップ804)。高位レベルキャッシュは、電源オンイベントが受信されるまで、電源オフの状態を保つ。
電源オンイベントを受信すると、高位レベルキャッシュが電源オンされる(ステップ806)。低位レベルキャッシュがタグおよびデータ情報を生成し、高位レベルキャッシュに送信して戻す(ステップ808)。高位レベルキャッシュは、タグおよびデータ情報を、そのローカル記憶メモリ内に書き込む(ステップ810)。
第4の実施形態は、電源、性能、および複雑性のトレードオフを示す。第4の実施形態は、高位レベルキャッシュ全体を電源オフしてもよいので、電力の高度の節約を提供する。しかし、低位レベルキャッシュに含まれるデータのみが高位レベルキャッシュに転送され、そのデータは低位レベルキャッシュではすでに可能であるため、相対的に低い性能が予想される。低位レベルキャッシュからのキャッシュラインが容量の問題により除去され、以前高位レベルキャッシュへ転送されたより古いラインが再び必要とされるとき、性能の利点が予想される。中程度の複雑性が予想される。インクルーシブまたはセミインクルーシブキャッシュ設計では、キャッシュラインはエクスクルーシブキャッシュ設計なので、通常は低位レベルキャッシュから高位レベルキャッシュまで転送されない。よって、インクルーシブまたはセミインクルーシブ設計を含むこの実施形態は、キャッシュラインを低位レベルキャッシュから高位レベルキャッシュに移動するのに、新しいデータパスの追加を必要とするかもしれない。
第5の実施形態
第5の実施形態では、図9および図10に示されたように、マルチレベルキャッシュ設計が使用される。低位キャッシュレベルは、高位レベルキャッシュの内容を重複してもよい(すなわちインクルーシブまたはセミインクルーシブ設計を用いて)。この実施形態は、高位のレベルキャッシュを電源オフし、一方で低位のレベルキャッシュは電源オンの状態を保つことを可能にしてもよい。高位レベルキャッシュが電源オンされるとき、低位レベルキャッシュの内容に基き回復タグを生成してもよい。データを補助記憶装置から高位レベルキャッシュ内にロードするため、回復タグを使用してもよい。これは、特に、アドレス変換のキャッシュである変換索引バッファ(TLB)設計で好都合である。そのような設計では、低位レベルキャッシュ内の変換エントリからの回復タグは、高位レベルキャッシュが実際の変換エントリに加え階層ディレクトリ情報のロードを可能にしてもよい。
図9は、パワーゲートの高位レベルキャッシュ(レベルNキャッシュ)902、複数の低位レベルキャッシュ(レベルN−Mキャッシュ)904〜904、メモリ906、およびメモリコントローラ908を含む、メモリシステム900の部分を示す。レベルNキャッシュ902は、電源オンリロードエンジン910を有する。
レベルNキャッシュ902の電源オフ前に、特別な準備は必要がない。レベルNキャッシュ902が電源オフされ、一方でレベルN−Mキャッシュ904〜904の全てまたはサブセットは、電源オンの状態を保つ。電源回復の後、それぞれのレベルN−Mキャッシュ904〜904は、そのローカルキャッシュタグ情報に基き回復タグを生成する。レベルN−Mキャッシュ904〜904は、それから、生成された回復タグに基きリロードコマンドをレベルNキャッシュ902へ発行する。レベルNキャッシュ902内の電源オンリロードエンジン910は、レベルN−Mキャッシュ904〜904からのリロードコマンドを使用して、メモリ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)命令(コンピュータ可読な媒体に格納可能なそのような命令)の結果を使用した製造プロセスを構成することにより製造してもよい。そのような処理の結果は、本発明の態様を実行するプロセッサを製造する半導体製造プロセスにおいて使用されるマスクワークであってもよい。

Claims (19)

  1. キャッシュの内容の少なくとも部分を、キャッシュから分離した場所に格納するステップと、
    前記キャッシュから電源を切るステップと、
    前記キャッシュへ電源を回復するステップと、
    前記キャッシュから分離して格納された前記キャッシュの内容の部分で、前記キャッシュを再配置するステップと、を含み、
    前記格納するステップが、
    回復タグを作成し、それぞれの前記回復タグは前記キャッシュからのいくらかの内容を含むステップと、
    前記回復タグを前記キャッシュから分離した場所に格納するステップと、を含み、
    前記作成するステップが、
    以前のキャッシュアクセスのヒストリリストを用いて前記回復タグを作成するステップと、
    以前のキャッシュアクセスの前記ヒストリリストの重複、類似または部分的に一致するエントリ除去するステップと、を含む、キャッシュを再配置する方法。
  2. 前記再配置のステップが、
    前記回復タグを読み出すステップと、
    前記回復タグを使用してデータを前記キャッシュ内へロードするステップと、を含む、請求項1に記載の方法。
  3. 前記キャッシュが、1つまたは複数のタグメモリおよび1つまたは複数のデータメモリを有し、
    前記切断のステップが、前記タグメモリのうち少なくとも1つを電源オンで残すこと、および残りの前記タグメモリおよび全ての前記データメモリの電源オフを含み、
    前記再配置のステップが、
    前記少なくとも1つの電源オンのタグメモリからタグを読み出すステップと、
    前記読み出されたタグを使用してデータを前記キャッシュ内へロードするステップと、を含む、請求項1に記載の方法。
  4. 前記読み出しのステップが、前記少なくとも1つの電源オンのタグメモリからアドレスを読み出すステップを含み、
    前記使用のステップが、
    前記アドレスからデータを取り出すステップと、
    前記取り出されたデータを前記キャッシュへ書き込むステップと、を含む、請求項3に記載の方法。
  5. 前記格納のステップが、
    前記キャッシュからタグを読み出し、回復タグを生成するステップと、
    前記回復タグを前記キャッシュから分離した場所に格納するステップと、を含み、
    前記再配置のステップが、
    前記回復タグを読み出すステップと、
    前記回復タグを使用してデータを前記キャッシュ内へロードするステップと、を含む、請求項1に記載の方法。
  6. 前記格納のステップが、
    前記回復タグを前記キャッシュから分離した場所に格納する前に、前記回復タグを圧縮するステップをさらに含む、請求項5に記載の方法。
  7. 前記キャッシュが、高位レベルキャッシュおよび複数の低位レベルキャッシュを有するマルチレベルキャッシュであり、
    前記切断のステップが、前記高位レベルキャッシュの電源オフおよび前記低位レベルキャッシュのうち少なくとも1つの電源維持を含む、請求項1に記載の方法。
  8. 前記再配置のステップが、
    電源を維持する少なくとも1つの前記低位レベルキャッシュ内でタグおよびデータ情報を生成するステップと、
    前記タグおよびデータ情報を前記高位レベルキャッシュへ送信するステップと、
    前記タグおよびデータ情報を前記高位レベルキャッシュへ書き込むステップと、を含む、請求項7に記載の方法。
  9. 前記再配置のステップが、
    前記電源を維持する少なくとも1つの低位レベルキャッシュ内で回復タグを生成し、それぞれの前記回復タグは前記低位レベルキャッシュからのいくつかの内容を含むステップと、
    前記回復タグによりリロードコマンドを前記高位レベルキャッシュへ発行するステップと、
    前記リロードコマンドを使用して、前記高位レベルキャッシュによりデータを要求するステップと、
    前記要求されたデータを前記高位レベルキャッシュへ書き込むステップと、を含む、請求項7に記載の方法。
  10. 前記書き込みのステップが、前記高位レベルキャッシュへの階層ディレクトリ情報の書き込みを含む、請求項8に記載の方法。
  11. データおよび前記データに関するタグを格納するよう構成されるキャッシュと、
    前記キャッシュから分離して置かれ、前記キャッシュから電源が切られたとき前記キャッシュからタグを格納するよう構成されたメモリと、
    前記キャッシュに電源が回復されたとき、前記タグを前記キャッシュから前記メモリへ書き込むよう構成されたメモリコントローラと、
    以前のキャッシュアクセスのヒストリリストを用いて前記タグに基き回復タグを作成し、以前のキャッシュアクセスの前記ヒストリリストの重複、類似または部分的に一致するエントリを除去し、前記回復タグを前記メモリに書き込むよう構成されたタグ転送エンジンと、
    前記回復タグを前記メモリから読み出し、前記回復タグを使用してデータを前記キャッシュ内へロードするよう構成された電源オンリロードエンジンと、を備える、キャッシュを再配置する機器。
  12. 前記キャッシュが1つまたは複数のタグメモリ、および1つまたは複数のデータメモリを有し、少なくとも1つの前記タグメモリが電源を保持し、一方で残りの前記タグメモリおよび前記データメモリが電源オフされ、
    前記電源オンリロードエンジンが、前記電源を保持する少なくとも1つのタグメモリから前記タグを読み出すようさらに構成される、請求項11に記載の機器。
  13. 前記タグ転送エンジンが、前記回復タグを圧縮するようさらに構成される、請求項11に記載の機器。
  14. 前記キャッシュが、高位レベルキャッシュおよび複数の低位レベルキャッシュを有し、
    前記低位レベルキャッシュのうち少なくとも1つが電源を維持し、前記高位レベルキャッシュおよび残りの前記低位レベルキャッシュは電源オフされ、
    前記電源を維持する少なくとも1つの前記低位レベルキャッシュが、前記データおよび前記タグを前記高位レベルキャッシュへ送信するよう構成された、請求項11に記載の機器。
  15. 前記電源を維持する少なくとも1つの低位レベルキャッシュが、
    そのタグ情報に基き回復タグを生成し、
    前記回復タグに基きリロードコマンドを前記高位レベルキャッシュへ発行するようさらに構成された、請求項14に記載の機器。
  16. 前記電源オンリロードエンジンが、要求されたデータに前記リロードコマンドを使用するようさらに構成された、請求項15に記載の機器。
  17. プリフェッチコマンドを生成し、前記プリフェッチコマンドはデータをロードする命令を含み、
    前記プリフェッチコマンドを前記キャッシュに送信するよう構成されたキャッシュクライアントをさらに備える、請求項11に記載の機器。
  18. キャッシュを再配置するための汎用コンピュータによる実行の命令のセットを格納する一時的でないコンピュータ可読な記憶媒体であって、前記命令のセットは、
    前記キャッシュから分離した場所にキャッシュの内容の少なくとも部分を格納するためのコードセグメントの格納と、
    回復タグの作成のためのコードセグメント作成であって、それぞれの前記回復タグが前記キャッシュからのいくらかの内容を含み、以前のキャッシュアクセスのヒストリリストを用いるためのコードセグメントの使用と、以前のキャッシュアクセスの前記ヒストリリストの重複、類似または部分的に一致するエントリの除去のための第一のコードセグメントの切断を含むところのコードセグメントの作成と、
    前記キャッシュから電源を切るための第二のコードセグメントの切断と、
    前記キャッシュへ電源を回復するためのコードセグメントの回復と、
    前記キャッシュから分離して格納されたキャッシュの内容の部分で、前記キャッシュを再配置するためのコードセグメントの再配置と、を含み、
    前記コードセグメントの格納が、前記キャッシュから前記分離した場所に前記回復タグを格納する、一時的でないコンピュータ可読な記憶媒体。
  19. 前記命令のセットが、装置の製造に使用されるハードウェア記述言語(HDL)命令である、請求項18に記載の一時的でないコンピュータ可読な記憶媒体。
JP2012555511A 2010-03-03 2011-02-28 電源回復後のリロード機能付きキャッシュ Active JP5570621B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/716,391 2010-03-03
US12/716,391 US8495300B2 (en) 2010-03-03 2010-03-03 Cache with reload capability after power restoration
PCT/IB2011/000597 WO2011107882A2 (en) 2010-03-03 2011-02-28 Cache with reload capability after power restoration

Publications (3)

Publication Number Publication Date
JP2013521559A JP2013521559A (ja) 2013-06-10
JP2013521559A5 JP2013521559A5 (ja) 2013-08-29
JP5570621B2 true JP5570621B2 (ja) 2014-08-13

Family

ID=44532289

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012555511A Active JP5570621B2 (ja) 2010-03-03 2011-02-28 電源回復後のリロード機能付きキャッシュ

Country Status (6)

Country Link
US (1) US8495300B2 (ja)
EP (1) EP2542975B1 (ja)
JP (1) JP5570621B2 (ja)
KR (1) KR101369443B1 (ja)
CN (1) CN102971716B (ja)
WO (1) WO2011107882A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10031854B2 (en) 2015-03-20 2018-07-24 Kabushiki Kaisha Toshiba Memory system

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8332488B1 (en) * 2011-03-04 2012-12-11 Zynga Inc. Multi-level cache with synch
US9311462B1 (en) 2011-03-04 2016-04-12 Zynga Inc. Cross platform social networking authentication system
US8347322B1 (en) 2011-03-31 2013-01-01 Zynga Inc. Social network application programming interface
US10135776B1 (en) 2011-03-31 2018-11-20 Zynga Inc. Cross platform social networking messaging system
US8522137B1 (en) 2011-06-30 2013-08-27 Zynga Inc. Systems, methods, and machine readable media for social network application development using a custom markup language
JP5803614B2 (ja) 2011-11-29 2015-11-04 ソニー株式会社 不揮発性キャッシュメモリ、不揮発性キャッシュメモリの処理方法、コンピュータシステム
WO2013101201A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Home agent multi-level nvm memory architecture
US8972665B2 (en) * 2012-06-15 2015-03-03 International Business Machines Corporation Cache set selective power up
US9026741B1 (en) * 2012-06-30 2015-05-05 Emc Corporation System and method for warming cache
WO2014030249A1 (ja) * 2012-08-24 2014-02-27 株式会社日立製作所 ボリュームのi/o性能の検証システム及び検証方法
US9183144B2 (en) * 2012-12-14 2015-11-10 Intel Corporation Power gating a portion of a cache memory
JP6092019B2 (ja) * 2013-06-25 2017-03-08 株式会社東芝 プロセッサ
KR101864831B1 (ko) * 2013-06-28 2018-06-05 세종대학교산학협력단 가상 캐시를 포함하는 메모리 및 그 관리 방법
US9772782B2 (en) 2014-05-21 2017-09-26 Seagate Technology Llc Non-volatile complement data cache
US20150363319A1 (en) * 2014-06-12 2015-12-17 Netapp, Inc. Fast warm-up of host flash cache after node failover
US10339023B2 (en) 2014-09-25 2019-07-02 Intel Corporation Cache-aware adaptive thread scheduling and migration
US10139891B2 (en) * 2015-06-23 2018-11-27 Honeywell International Inc. Systems and methods of power-safe control panel installation
US10423418B2 (en) 2015-11-30 2019-09-24 International Business Machines Corporation Method for maintaining a branch prediction history table
US10318428B2 (en) 2016-09-12 2019-06-11 Microsoft Technology Licensing, Llc Power aware hash function for cache memory mapping
US10489296B2 (en) 2016-09-22 2019-11-26 International Business Machines Corporation Quality of cache management in a computer
US10338855B2 (en) * 2016-12-08 2019-07-02 International Business Machines Corporation Optimized reading of multiple objects from tape
US10591978B2 (en) 2017-05-30 2020-03-17 Microsoft Technology Licensing, Llc Cache memory with reduced power consumption mode
US10241561B2 (en) 2017-06-13 2019-03-26 Microsoft Technology Licensing, Llc Adaptive power down of intra-chip interconnect
US10229061B2 (en) 2017-07-14 2019-03-12 International Business Machines Corporation Method and arrangement for saving cache power
JP7142289B2 (ja) * 2018-08-23 2022-09-27 日本電信電話株式会社 プロセッサ、多階層キャッシュメモリの制御方法、及び多階層キャッシュメモリの制御プログラム
US11507174B2 (en) * 2020-02-25 2022-11-22 Qualcomm Incorporated System physical address size aware cache memory
US11307634B1 (en) 2021-01-28 2022-04-19 Red Hat, Inc. Maintaining historical power level metadata for dynamic voltage and frequency scaling of processor instructions
US20230169008A1 (en) * 2021-11-30 2023-06-01 Red Hat, Inc. Managing prefetching operations for drives in distributed storage systems
US12013784B2 (en) * 2022-01-07 2024-06-18 Centaur Technology, Inc. Prefetch state cache (PSC)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0747335B2 (ja) * 1988-08-05 1995-05-24 株式会社日立製作所 文字発生装置および文字発生方法
US5632038A (en) * 1994-02-22 1997-05-20 Dell Usa, L.P. Secondary cache system for portable computer
US6795896B1 (en) * 2000-09-29 2004-09-21 Intel Corporation Methods and apparatuses for reducing leakage power consumption in a processor
US20030145241A1 (en) * 2002-01-30 2003-07-31 Zhigang Hu Method and apparatus for reducing leakage power in a cache memory using adaptive time-based decay
US6983388B2 (en) * 2000-10-25 2006-01-03 Agere Systems Inc. Method and apparatus for reducing leakage power in a cache memory by using a timer control signal that removes power to associated cache lines
US7934054B1 (en) * 2005-11-15 2011-04-26 Oracle America, Inc. Re-fetching cache memory enabling alternative operational modes
US7647452B1 (en) * 2005-11-15 2010-01-12 Sun Microsystems, Inc. Re-fetching cache memory enabling low-power modes
CN100435118C (zh) * 2005-12-05 2008-11-19 英业达股份有限公司 高速缓存数据回存方法
CN100456253C (zh) * 2005-12-28 2009-01-28 英业达股份有限公司 存储系统的高速缓存数据的保护方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10031854B2 (en) 2015-03-20 2018-07-24 Kabushiki Kaisha Toshiba Memory system

Also Published As

Publication number Publication date
EP2542975B1 (en) 2018-02-21
WO2011107882A3 (en) 2011-11-17
US8495300B2 (en) 2013-07-23
CN102971716A (zh) 2013-03-13
US20110219190A1 (en) 2011-09-08
KR101369443B1 (ko) 2014-03-04
EP2542975A2 (en) 2013-01-09
EP2542975A4 (en) 2013-12-11
KR20130036221A (ko) 2013-04-11
JP2013521559A (ja) 2013-06-10
WO2011107882A2 (en) 2011-09-09
CN102971716B (zh) 2015-06-17

Similar Documents

Publication Publication Date Title
JP5570621B2 (ja) 電源回復後のリロード機能付きキャッシュ
US10379746B2 (en) Information processing apparatus, storage device, and computer program product
US7962715B2 (en) Memory controller for non-homogeneous memory system
TWI525431B (zh) 資料儲存系統、資料結構及資料儲存方法
US7500064B2 (en) Data coherence system
US11544093B2 (en) Virtual machine replication and migration
US20140115244A1 (en) Apparatus, system and method for providing a persistent level-two cache
WO2011033600A1 (ja) 仮想記憶管理装置
US7080207B2 (en) Data storage apparatus, system and method including a cache descriptor having a field defining data in a cache block
KR20190002473A (ko) 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
US10769062B2 (en) Fine granularity translation layer for data storage devices
JP2012190359A (ja) キャッシュシステムおよび処理装置
US20210056030A1 (en) Multi-level system memory with near memory capable of storing compressed cache lines
KR101023877B1 (ko) 캐시 및 디스크 관리 방법 및 상기 방법을 이용한 컨트롤러
US20210157729A1 (en) Method and apparatus for performing pipeline-based accessing management in storage server with aid of caching metadata with hardware pipeline module during processing object write command
JP2006099802A (ja) 記憶制御装置およびキャッシュメモリの制御方法
JP7470112B2 (ja) 持続性メモリクリーニング
JP6093322B2 (ja) キャッシュメモリおよびプロセッサシステム
KR20120120651A (ko) 저전력 하이브리드 스토리지 시스템 및 이를 이용한 데이터 처리방법
KR101744401B1 (ko) 컴퓨팅 장치의 시스템 상태 저장, 복원방법 및 이를 위한 컴퓨팅 장치
CN118535089A (zh) 一种基于弹性内存的混合存储读缓存设计方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130710

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130710

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20130710

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20130805

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131009

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140109

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140117

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140206

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140310

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140408

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140604

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140624

R150 Certificate of patent or registration of utility model

Ref document number: 5570621

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250