(57)【要約】  本発明のいくつかの実施形態は、ダイナミックメモリサイジングのレイテンシを最適化するシステムおよび方法を含む。いくつかの実施形態では、動作必要条件は、相応の動作を実行するために必要なメモリ量を反映し得る。メモリ条件を動作必要条件に合わせるためにメモリパワーマネジメントロジックが用いられる。動作必要条件に基づくメモリに対する変化のレイテンシは、本方法およびシステムにより最適化される。他の実施形態も記載される。【選択図】なし
2009514114.tif 000002
【特許請求の範囲】
【請求項１】
ダイナミックメモリサイジングのレイテンシを最適化するシステムであって、
それぞれが少なくとも１つのウェイを有する複数のブロックを含むメモリと、
ウォームビットまたはダーディビットのいずれかを生成するロジックであって、前記ウォームビットは、前記複数のブロックの少なくとも１つのブロックがアクセスされたことを示し、前記ダーティビットは、前記複数のブロックの少なくとも１つのブロックが変更されたことを示すロジックと、
電力供給状態における変化を要求する制御ロジックと、
前記複数のブロックの他のブロックをアクティブにするよう前記メモリに要求するプロセッサと、を含み、
前記ウォームビットは、状態ビットを無効にする必要性を示す、システム。
【請求項２】
前記ロジックは、各ダーティビットに対し少なくとも１つのウォームビットを生成する、請求項１に記載のシステム。
【請求項３】
前記プロセッサは、前記複数のブロックのアクティブなブロックを非アクティブにすることを前記メモリに要求し、前記ダーティビットは、前記アクティブなブロックからのエントリを無効にする必要性を示す、請求項１に記載のシステム。
【請求項４】
前記少なくとも１つのウェイは、２つ以上のメモリブロックを含む、請求項１に記載のシステム。
【請求項５】
前記ロジックは、パワーマネジメントロジック、前記制御ロジック、または、オペレーティングシステムの少なくとも１つに作用する、請求項１に記載のシステム。
【請求項６】
前記メモリは、前記プロセッサを含むパッケージに内蔵された同期式ランダムアクセスメモリである、請求項１に記載のシステム。
【請求項７】
前記プロセッサは、第１のコアおよび第２のコアを少なくとも含む、請求項１に記載のシステム。
【請求項８】
前記第１のコアは、第１の一意の識別子を有し、前記第２のコアは、第２の一意の識別子を有し、前記メモリは、特定のコアの前記一意の識別子に基づき、前記特定のコアの状態変数をリストアする、請求項７に記載のシステム。
【請求項９】
前記システムから情報を受信し、かつ、前記システムに情報を送信する無線ＬＡＮ（ＷＬＡＮ）モジュールをさらに含む、請求項１に記載のシステム。
【請求項１０】
ダイナミックメモリサイジングのレイテンシを最適化するメモリデバイスであって、
それぞれが少なくとも１つのウェイを有する複数のブロックを含むメモリと、
ウォームビットまたはダーディビットのいずれかを生成するロジックであって、前記ウォームビットは、前記複数のブロックの少なくとも１つのブロックがアクセスされたことを示し、前記ダーティビットは、前記複数のブロックの少なくとも１つのブロックが変更されたことを示すロジックと、
を含むメモリデバイス。
【請求項１１】
前記ロジックは、各ダーティビットに対し少なくとも１つのウォームビットを生成する、請求項１０に記載のメモリデバイス。
【請求項１２】
前記ロジックは、プロセッサ、および／または、制御ロジックから複数の命令を受信する、請求項１０に記載のメモリデバイス。
【請求項１３】
前記メモリは、同期式ランダムアクセスメモリである、請求項１０に記載のメモリデバイス。
【請求項１４】
ダイナミックメモリサイジングのレイテンシを最適化する方法であって、
ウォームビット、または、ダーティビットのいずれかを生成することであって、前記ウォームビットおよびダーティビットは、一のメモリブロックに関連し、前記ウォームビットは、前記メモリブロックがアクセスされていること示し、前記ダーティビットは、前記メモリブロックが変更されていることを示す、生成することと、
メモリの状態を変更する要求を受信することと、
前記ウォームビットによりマークされる前記メモリブロックからの状態ビットを無効にすることと、
を含む方法。
【請求項１５】
前記メモリの状態を変更する前記要求を受信した後、前記ダーティビットによりマークされる前記メモリブロックからのエントリを無効にすることをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記ウォームビットは、メモリトランザクションアドレス、ウェイ選択、ライトイネーブル、または、トランザクションタイプ情報の少なくとも１つから導かれる、請求項１４に記載の方法。
【請求項１７】
前記ウォームビットは、メモリトランザクションアドレス、ウェイ選択、ライトイネーブル、または、トランザクションタイプ情報の少なくとも１つから導かれる、請求項１５に記載の方法。
【請求項１８】
前記要求は、１つの電力供給状態から他の電力供給状態への移行の一環として生じる、請求項１４に記載の方法。
【請求項１９】
前記状態ビットを無効にすることは、
前記状態ビットが保持されていたかどうかをチェックし、前記状態ビットが保持されていなかった場合、すべての状態ビットを無効にすることと、
無効にする前記メモリブロックを選択することと、
前記メモリブロックがウォームビットによりマークされるかどうかを決定することと、
前記メモリブロックからの前記状態ビットを無効にすることと、
を含む、請求項１４に記載の方法。
【請求項２０】
前記エントリを無効にすることは、
無効にする前記メモリブロックを選択することと、
前記メモリブロックがダーティビットによりマークされるどうかを決定することと、
前記メモリブロックからの前記エントリを無効にすることと、
を含む、請求項１５に記載の方法。
【請求項２１】
前記ウォームビット、および／または、前記ダーティビットをクリアすることをさらに含む、請求項１４に記載の方法。
【請求項２２】
複数の命令を格納する機械可読媒体であって、前記複数の命令は、機械により実行されると、ダイナミックメモリサイジングのレイテンシを最適化する複数の動作を前記機械に実行させ、前記複数の動作は、
ウォームビット、または、ダーティビットのいずれかを生成することであって、前記ウォームビットおよびダーティビットは、一のメモリブロックに関連し、前記ウォームビットは、前記メモリブロックがアクセスされていること示し、前記ダーティビットは、前記メモリブロックが変更されていることを示す、生成することと、
メモリの状態を変更する要求を受信することと、
前記ウォームビットによりマークされる前記メモリブロックからの状態ビットを無効にすることと、
を含む、機械可読媒体。
【請求項２３】
前記メモリの状態を変更する前記要求を受信した後、前記ダーティビットによりマークされる前記メモリブロックからのエントリを無効にすることをさらに含む、請求項２２に記載の機械可読媒体。
【請求項２４】
前記ウォームビットは、メモリトランザクションアドレス、ウェイ選択、ライトイネーブル、または、トランザクションタイプ情報の少なくとも１つから導かれる、請求項２２に記載の機械可読媒体。
【請求項２５】
前記ウォームビットは、メモリトランザクションアドレス、ウェイ選択、ライトイネーブル、または、トランザクションタイプ情報の少なくとも１つから導かれる、請求項２３に記載の機械可読媒体。
【請求項２６】
前記要求は、１つの電力供給状態から他の電力供給状態への移行の一環として生じる、請求項２２に記載の機械可読媒体。
【請求項２７】
前記状態ビットを無効にすることは、
前記状態ビットが保持されていたかどうかをチェックし、前記状態ビットが保持されていなかった場合、すべての状態ビットを無効にすることと、
無効にする前記メモリブロックを選択することと、
前記メモリブロックがウォームビットによりマークされるかどうかを決定することと、
前記メモリブロックからの前記状態ビットを無効にすることと、
を含む、請求項２２に記載の機械可読媒体。
【請求項２８】
前記エントリを無効にすることは、
無効にする前記メモリブロックを選択することと、
前記メモリブロックがダーティビットによりマークされるかどうかを決定することと、
前記メモリブロックからの前記エントリを無効にすることと、
を含む、請求項２３に記載の機械可読媒体。
【請求項２９】
前記ウォームビット、および／または、前記ダーティビットをクリアすることをさらに含む、請求項２２に記載の機械可読媒体。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、２００４年８月３１日に出願され、インテル社に譲渡された米国特許出願第１０／９３１，５６５号（発明者：Ｋｕｒｔｓ他）、２００４年９月３日に出願され、インテル社に譲渡された米国特許出願第１０／９３４，０３４号（発明者Ｎａｖｅｈ他）、２００４年１２月２８日に出願され、インテル社に譲渡された米国特許出願第１１／０２４，５３８号（発明者Ｎａｖｅｈ他）、２００４年７月２７日に出願され、インテル社に譲渡された米国特許出願第１０／８９９，６７４号（発明者Ｎａｖｅｈ他）、および、本件と同日に出願され、インテル社に譲渡された「ゼロ電圧スリープ状態」と題された（発明者Ｊａｈａｇｉｒｄａｒ）整理番号０４２３９０．Ｐ２２４３５に関する。
【技術分野】
【０００２】
本発明のいくつかの実施形態は、概ね集積回路および／またはコンピュータ・システムに関する。より詳しくは、本発明のいくつかの実施形態は、ダイナミックメモリのサイジングに関する。
【背景技術】
【０００３】
より多くのトランジスタを備え、より高周波数である例えば中央処理装置（ＣＰＵ）など、より高性能なマイクロプロセッサへのトレンドの勢いが増すにつれ、コンピュータ設計者および製造者は、それに伴う電力・エネルギー消費増加の問題にぶつかることが多くなってきている。特にモバイル機器では、電力消費が高まると、性能にマイナスの影響を及ぼすオーバーヒートを招き、バッテリ寿命を著しく低下させてしまう。バッテリの容量は、一般的に限られているので、必要以上にモバイル機器のプロセッサを駆動すると、容量は、意図するより早く消耗してしまう。
【０００４】
したがって、消費電力の問題は、デスクトップコンピュータ、ラップトップコンピュータ、ワイヤレスハンドセット、パーソナル携帯情報機器などを含むコンピュータシステムにとって依然として重要であり続ける。今日では、コンピュータシステムは、例えば、電力消費問題に取り組むべく、低下した動作状態または需要に基づき、特定の構成要素を低消費電力状態にさせることができる。
【０００５】
マイクロプロセッサの設計と開発において、所定のシリコン領域の下でパフォーマンスをより良くするためにメモリサイズは拡張し続けている。トレンドがより大きなメモリサイズへと向かうことにより、メモリに関連する消費電力も増大している。その結果、低消費電力状態の適用、および、より大きなメモリがこれらの状態に出入りする動作に伴うレイテンシは、消費電力を管理する上でますます重要な領域となって来ている。
【図面の簡単な説明】
【０００６】
本発明の実施形態のさまざまな効果は、以下の明細書および添付の請求の範囲を読むことによって、また、以下の図面を参照することによって当業者に明らかになるであろう。
【０００７】
【図１】本発明のいくつかの実施形態における、ウェイによって構成されるメモリアーキテクチャの一例を示すブロック図である。
【０００８】
【図２】本発明のいくつかの実施形態におけるウェイによって構成されたのではないメモリアーキテクチャの他の例を示すブロック図である。
【０００９】
【図３−４】本発明のいくつかの実施形態におけるウォームビットおよびダーティビットの１つのビットレベル例を示す図である。
【００１０】
【図５】本発明のいくつかの実施形態におけるウォームビットおよびダーティビットを生成するロジックの一例を示す図である。
【００１１】
【図６】本発明の実施形態におけるダイナミックメモリのサイジングに関するメモリレイテンシの最適化を実装するために利用され得るコンピュータシステムの一例を示すブロック図である。
【００１２】
【図７】本発明のいくつかの実施形態における、メモリレイテンシを最適化するプロセスの一例を示すフローチャートである。
【００１３】
【図８】本発明のいくつかの実施形態における、ダイナミックメモリの減少または低電力消費状態に入るフローを含み得る、メモリが状態を出るプロセスの一例を示すフローチャートである。
【００１４】
【図９】本発明のいくつかの実施形態における、ダイナミックメモリの拡張、または、低電力状態脱出フローを含み得る、メモリが状態に入るプロセスの一例を示すフローチャートである。
【発明を実施するための最良の形態】
【００１５】
コンピュータシステムおよび／またはその関連ソフトウェアにより実際に必要とされる記憶量は、時間に応じてしばしば変化する。一般的なアプリケーションでは、例えば、任意の所定の時間に必要とされるのはメモリのほんの小さい部分かもしれない。本発明のいくつかの実施形態によれば、図１および図２のメモリ配列のようなメモリ配列は、それが用いられるメモリ回路およびシステムの必要電源を減少させるべくダイナミックにサイジングされ得る。
【００１６】
具体的には、本発明のいくつかの実施形態は、本願明細書中に記載されているように、図１および２で示されるメモリトポロジにより実装される、図３乃至９に関して説明されるような、メモリのサブセクションが必要とされていない、および／または、選択されない場合に１つ以上のサブセクションを使用可／使用不可にする間の最適化されたレイテンシを提供する。本発明のいくつかの実施形態では、メモリは、コンピュータシステムの特定の状態で使用可／使用不可にされ得る。この状態を電力供給状態とも呼び、Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ（ＡＣＰＩ）仕様（例えば、ＡＣＰＩ仕様、改訂版３．０、２００４年９月２日、改訂版２．０ｃ、２００３年８月２５日、および、改訂版２．０、２０００年７月２７日など）に記載される状態に関し、以下にさらに詳しく述べる。
【００１７】
図１は、本発明のいくつかの実施形態における、ウェイによって構成されるメモリアーキテクチャの一例を示すブロック図である。ダイナミックにサイジング可能なメモリによるいくつかの実施形態では、図１のｎ本のウェイの連想記憶が、例えば、スタティックＲＡＭ（ＳＲＡＭ）を用いて実装され得る。複数のサブセクション１０１ａ、１０１ｂ−１０１ｎ（それぞれこの特定の例におけるウェイ）は、サブセクションまたはウェイ１０１のそれぞれが選択的に使用可／使用不可にされるよう、複数のスリープデバイス（図示せず）と個別にまたは一緒に結合されるか、あるいは、電源に／から同等にかつ選択的に結合／分離されてよい。
【００１８】
代わりのスリープデバイスが用いられてもよく、ここで論じられるそれら代わりのデバイスは、本発明のいくつかの実施形態に従い、本願明細書中における教示に少なくとも基づき当業者により用いられ得るタイプのスリープデバイスを示す。「パワーゲーティングトランジスタ」、「スリープトランジスタ」、および、「スリープデバイス」の用語を用いているが、本発明の範囲をいかなる特定のデバイスに限定しようというのではなく、単に、メモリサブセクションへの電力をオフにするかまたはゲートで制限するスリープデバイスの能力を説明しようとしている。さらに、当業者には明らかなように、これらスリープデバイスのさまざまな実施形態は、他のものより特殊化された用途を有してよく、したがって、特定のタイプのダイナミックにサイジング可能なメモリにとってより好都合であり得る。
【００１９】
メモリトポロジは、メモリのセクションまたはサブセクションへの電力を制御するために特定のスリープデバイスが用いられ得るかどうかを決定してよい。図１に関し、メモリがウェイによって構成されるいくつかの実施形態では、スリープデバイスは、メモリの各ウェイを制御すべく用いられ得る。メモリトポロジがいくつかの他のやり方で構成されている場合、特に、所定のウェイが分離されていない場合、スリープデバイスは、メモリの特定のセクションを制御することができない可能性もある。代わりの手段は、図２を参照して述べる。
【００２０】
図２は、本発明のいくつかの実施形態におけるウェイによって構成されたのではないメモリアーキテクチャの他の例を示すブロック図である。ウェイ２０２ａ、２０２ｂ−２０２ｎは、メモリ内に任意のサイズで任意の位置に配される。本発明のいくつかの実施形態では、ウェイはメモリの異なるブロックに物理的に分布しており、メモリはウェイ毎に漸進的にフラッシュされることができるが、スリープデバイスを用いてウェイをオフにすることはできない。このように、メモリは、所定のブロックのウェイのすべてがフラッシュされた後にのみスリープトランジスタを用いてオフにされ得る。
【００２１】
本発明のいくつかの実施形態によれば、例えば、これらに限定されないが、図１および２に示すような１つ以上のウェイは、ウェイに基づくダイナミックサイジングプロセスを用いて減らすことが出来る。本発明のいくつかの実施形態では、さまざまなダイナミックサイジングプロセスは、コンピュータシステムの構成要素によりさまざまな電力供給状態に入る、および／または、電力供給状態から出ると即座に実装され得る。
【００２２】
プロセッサ（例えば、マルチコアプロセッサ、または、中央処理装置（ＣＰＵ）など）によりアクセスされるメモリに関し、プロセッサのマイクロコード（以下の図５参照）は、本発明のいくつかの実施形態に従い、非アクティブになったかまたは縮小したウェイにおける任意の変更されたデータをフラッシュすべく、各ウェイにおけるラインを順にたどってよい。本発明のいくつかの実施形態では、すべての変更されたデータがメモリにフラッシュされた後、１つまたは複数のウェイへの電力は、例えば、スリープデバイスを用いてオフにされ得る。
【００２３】
本発明のいくつかの実施形態に従い、プロセッサのパワーマネジメントロジック（ＰＭＬ）、または、バックサイドバスロジック（ＢＢＬ）の制御ロジック（以下の図５参照）は、最近使用（ＬＲＵ）されたことにより非アクティブになったウェイへの割り当てをやめさせることができる。本発明のさらなる実施形態では、ウェイが再び使用可能になり、再びアクティブになった場合（言い換えれば、メモリが上記「縮小」とは反対に大きくなった場合）、パワーゲーティングトランジスタは、オンにされ、ウェイの状態ビットはクリアされ（例えばＭＥＳＩプロトコルの状態Ｉ）、ＰＭＬまたは制御ロジックは、このウェイに割り当て始めることができる。ＭＥＳＩ（変更、排他的、共有、無効の４つの状態）に代わるコヒーレンシーまたは書き込み無効プロトコルが本発明で実装されて用いられてよいことが当業者であれば理解できるであろうことに留意されたい。例えば、当業者であれば、ＭＯＥＳＩ（変更、専有、排他的、共有、無効の５つの状態）、または、ＤＲＡＧＯＮ（有効−排他的、共有−クリーン、共有―変更、ダーティの４つの状態）のいずれかが実装され得ることが直ちにわかるであろう。本発明のいくつかの実施形態、例えば、これらに限定されないが、ゼロ電圧を伴う状態を用いた実施形態では、状態ビットが保持され得る。本発明のいくつかの実施形態では、状態ビットが保持される場合、ＰＭＬ１５０またはパワーマネジメント状態制御ロジック６４２は、電力供給状態から出るときに、状態ビットをクリアできない。
【００２４】
本発明のいくつかの実施形態では、代わりのスリープロジックを実装すべく、および／または、異なるアプローチをさらに用いてスリープデバイスに似た機能を提供すべく、さまざまな回路技術が用いられ得る。本発明のいくつかの実施形態では、例えば、メモリの異なるサブセクションは、電源プレーンの制御によって使用可／使用不可にされることができるよう、異なる電源プレーンに実装され得る。他のアプローチもさまざまな実施形態の範囲内に納まる。
【００２５】
さらに、マイクロプロセッサに実装されるｎ本のウェイの連想記憶が本願明細書中に例示の目的で記載されるが、本発明の実施形態は、異なるアーキテクチャを有する他のタイプのメモリ、および／または、他のタイプの集積回路デバイスに実装されるメモリを有するメモリにも適用されてよい。また、さらに、本発明のいくつかの実施形態では、「メモリ」、「キャッシュ」、および、「キャッシュメモリ」という用語が用いられ、特に、いくつかの実施形態ではキャッシュメモリが用いられているが、それがすべての形式またはタイプのメモリに当てはまるというような、本発明の実施形態の動作を限定する意味はない。
【００２６】
本発明のいくつかの実施形態では、例えば、さまざまなレベルのキャッシュメモリを含む、メモリの他のパーティション、サブセクション、または、部分も本願明細書中に記載される１つ以上のアプローチを用いて選択的に使用可および／または使用不可にされてよい。したがって、図示されたウェイは、アレイなど、セルの便利なグループ分けを提供できるが、「ウェイ」という用語の使用は、本発明の趣旨および範囲を制限することを意図しない。
【００２７】
本発明のいくつかの実施形態では、アクティブなウェイは、漸進的にフラッシュされることができる。当業者の一人であれば、本願明細書中の教示に少なくとも基づき、キャッシュのウェイをフラッシングする他の方法も理解できるであろう。キャッシュをフラッシュするのに必要な時間は、例えば、これに限定されないが、スリープ状態など、電力供給状態へ入るレイテンシを決定する１つの要因となる。電力供給状態から出る、例えばこれに限定されないが、スリープ状態では、とりわけ、キャッシュの状態ビットは無効にされる。状態ビットを無効にするのに必要な時間は、電力供給状態から出るレイテンシを決定する１つの要因となる。
【００２８】
本発明のいくつかの実施形態における、電力供給状態に出入りするために必要な時間を減らすことなどによる最適化または改良は、製造者、ユーザ、および、プログラマにとり非常に有益であろう。本発明のいくつかの実施形態は、これに限定されないが、キャッシュを実装するために複数回インスタンス化されたブロックを含むキャッシュトポロジなどの他のトポロジのみならず、上記図１および図２で説明されたキャッシュトポロジにも適用され得る。さらに、本発明のいくつかの実施形態では、当業者の一人であれば、本願明細書中の教示に少なくとも基づき理解できるように、キャッシュのウェイは、各ウェイ均一であるか、または、複数のウェイごとに不均一であってよく、さまざまな方法でマッピングされてよい。
【００２９】
本発明のいくつかの実施形態では、電力供給状態は、ラインごとのキャッシュフラッシュ・マイクロアーキチャを用いてよく、その場合、プロセッサは、ラインがメインメモリに書き込まれるべき変更されたデータを含むかどうかを見るために、キャッシュ内の各ラインをチェックしてよい。このようにして、本発明のいくつかの実施形態に従い、例えば、変更されたデータなどのキャッシュデータをトラッキングするプロセスが出入りのレイテンシを短縮できる。レイテンシの短縮は、少なくとも２通りに役立つ。１つには、出入りのパフォーマンスが向上され得ることである。２つには、キャッシュラインのいくつかのフラッシング／無効化は起きない可能性もあるので、キャッシュを動作させるのに必要なエネルギーを節約できることである。
【００３０】
本発明のいくつかの実施形態に従い、キャッシュ状態のトラッキングは、ウォームビットおよび／またはダーティビットを用いることによりサポートされ得る。本発明のいくつかの実施形態では、ウォームビットは、電力供給状態から最後に出て以来、特定のキャッシュブロックがアクセスされているかどうかを記録するために用いられ得る。本発明のいくつかの実施形態では、アクセスすることは、そのキャッシュブロックの任意のラインへの読み取りおよび／または書き込み動作を含み得る。本発明のいくつかの実施形態では、ダーティビットは、特定のキャッシュブロックが変更されたデータを含むかどうかを記録するために用いられ得る。本発明のいくつかの実施形態では、変更されたデータは、キャッシュブロック内のラインに対して生じる書き込み動作の状態情報を観察することにより検出され得る。
【００３１】
図３および４は、ウォームビットおよびダーティビットそれぞれのいくつかの実施形態を示し、１ブロックにつき、１ビットを示してよい。他の実施形態も本願明細書中に記載の教示を逸脱せずに用いられ得る。図３において、ウォームビット３０２は、行３０２ａ、３０２ｂ乃至３０２ｎで示される。図４において、ダーティビット４０２は、行４０２ａ、４０２ｂ乃至４０２ｎで示される。本発明のいくつかの実施形態では、ダーティビットは、ウォームビットのサブセットでよい。例えば、いくつかの実施形態では、特定のキャッシュブロックは、それがウォームビットでもある場合のみ、ダーティビットとなり得る。すなわち、アクセスまたは使用は、本発明のいくつかの実施形態における変更の必要条件になり得る。
【００３２】
１つ以上の実施形態に従い、ダイナミックにサイジングされるメモリ１０１および／または２０２の関連するサブセクションを使用可および／または使用不可にすべく、最適化プロセスを制御するために必要なロジックがホスト集積回路、コンピュータシステム、または、ソフトウェアに実装され得る。このような実装の例は、本発明のいくつかの実施形態に関連して本願明細書中で説明される。
【００３３】
図５は、本発明のいくつかの実施形態における、ウォームビットおよび／またはダーティビットを生成するロジックの一例を示す図である。ロジックは、本発明のいくつかの実施形態に従い、ハードウェア、ソフトウェア、または、ファームウェアに実装されてもよいし、以下に述べる図６にすべて示されている、ＰＭＬ１５０、パワーマネジメント状態制御ロジック６４２、または、オペレーティングシステム（ＯＳ）６４５から格納および／または操作されてもよい。
【００３４】
本発明のいくつかの実施形態に従い、このロジックは、１．キャッシュへの１つ以上のトランザクションのアドレス；２．１つ以上のリード／ライトイネーブル；３．状態／ウェイ情報の１つ以上に基づき、ウォームおよび／またはダーティビットを生成する。本発明のいくつかの実施形態では、ロジック５００は、ウェイ選択５０６、および、ウェイイネーブル５０８情報のみならずメモリトランザクション情報５０２を受信するデコードロジック５１２を含む。本発明のいくつかの実施形態では、メモリトランザクションアドレス５０２は、セットビット５０４の１つ以上のサブセットを含み得る。
【００３５】
本発明のいくつかの実施形態に従い、デコードロジック５１２は、トランザクションタイプ情報５１０も受信してよい。いくつかの実施形態では、トランザクションタイプの例は、メモリ読み込み、メモリ書き込み、メモリプローブ、メモリライトバック（フラッシュ）、または、メモリ無効化を含み得る。メモリ属性（例えばＭＥＳＩの使用）も５１０により読み込まれることができる。この情報は、ウォームビットおよび／またはダーティビットの生成に用いられ得る。なぜなら、本発明のいくつかの実施形態によれば、ビットは、メモリトランザクションのタイプに対してのみ１に設定されるからである。例えば、いくつかの実施形態では、ウォームビットは、そのセットおよびウェイへのいかなるトランザクションに対し設定されてよい。さらに、いくつかの実施形態では、変更されたデータがそのセットおよびウェイに書き込まれた場合、ダーティビットが設定され得る。本発明のいくつかの実施形態では、デコードロジック５１２は、その後、１つ以上のウォームビット５１４および／または１つ以上のダーティビット５１６を生成し得る。いくつかの実施形態では、デコードロジックは、メモリトポロジおよびブロック境界を認識し得る。
【００３６】
さらに、本発明のいくつかの実施形態では、デコードロジックは、ウォームビット５１４およびダーティビット５１６をクリアしてよい。別の実施形態では、ＰＭＬ１５０、パワーマネジメント状態制御ロジック６４２、または、ＯＳ６４５は、ビット５１４および／または５１６をクリアしてよい。いくつかの実施形態では、ダーティビット５１６は、メモリブロックがフラッシュされるときクリアされてよい。いくつかの実施形態では、ウォームビット５１４は、電力供給状態を出るときクリアにされてよい。
【００３７】
本発明のいくつかの実施形態では、電力供給状態から出るたびに、ウォームおよびダーティビット情報収集プロセスが再開されてよい。いくつかの実施形態では、ウォームおよびダーティビットは、事実上飽和していてよく、すなわち、ウォームビットは、メモリの同じブロックへの複数回の書き込みに対し１（１または０のいずれかのうちの）であってよい。本発明のいくつかの実施形態では、ビット５１４および５１６は、コンピュータシステムの明確なリセットに対してのみクリアされてよい。いくつかの実施形態では、複数のメモリブロックは、ウォームビットおよび／またはダーティビットを共有してよい。
【００３８】
本願明細書中の他の箇所に記載されるように、本発明のいくつかの実施形態は、ハードウェア、ファームウェア、および、ソフトウェアのうちの１つ、または、それらの組み合わせに実装されてよい。本発明のいくつかの実施形態は、本願明細書中に記載される動作を実行する少なくとも１つのプロセッサにより読み取られて実行され得る機械可読媒体に格納される命令として全体的にあるいは部分的に実装されてもよい。機械可読媒体は、機械（例えばコンピュータ）によって読み取られることができる形式で情報を格納するかまたは伝送するためのいずれかの機構を含み得る。例えば、機械可読媒体は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、電気、光、音響、または、他の形式で伝搬される信号（例えば、搬送波、赤外線信号、デジタル信号など）、その他を含み得る。
【００３９】
図６は、本発明の実施形態におけるダイナミックメモリのサイジングに関するメモリレイテンシの最適化を実装するために利用され得るコンピュータシステムの一例を示すブロック図である。システム６００は、ノートブックまたはラップトップ・コンピュータシステム、あるいは、モバイルデバイス、パーソナル携帯情報機器、無線電話／ハンドセットなどの任意の異なるタイプのモバイル電子システムであってよく、あるいは、デスクトップ、または、企業向けのコンピュータシステムなどのような非モバイルシステムでもかまわない。他のタイプの電子システムもさまざまな実施形態の範囲内に納まる。
【００４０】
システム６００は、例えば、マルチコアプロセッサなどのプロセッサ６０５、プラットフォームレベルのクロックジェネレータ６１１、プロセッサ６０５に結合された電圧レギュレータ６１２、バス６１７を介しプロセッサ６０５に結合されたメモリ制御ハブ６１５、１つ以上のランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、および／または、他のタイプのメモリを含み得るメモリ６２０、バス６２７を介しメモリ制御ハブ６１５に結合された入出力（Ｉ／Ｏ）制御ハブ６２５、および、バス６３２を介しＩ／Ｏ制御ハブ６２５に結合された大容量記憶装置６３０を含む。いくつかの実施形態において、システム６００は、記載されたサブシステムを備えるモバイルデバイスであり得るが、システム６００は、記載されたサブシステムを多かれ少なかれ備える異なるタイプのモバイルデバイス、または、非モバイルデバイスであってもよいことを理解されたい。
【００４１】
本発明のいくつかの実施形態では、プロセッサ６０５は、例えば、命令を処理するための１つ以上の処理コア（１２０および１２２など）、および、少なくとも１つの実行ユニット１１０を含むインテルペンティウム（登録商標）Ｍプロセッサの後続のプロセッサである、インテル（登録商標）アーキテクチャのマイクロプロセッサであってよい。本発明のいくつかの実施形態では、プロセッサ６０５は、インテルＳｐｅｅｄＳｔｅｐ（登録商標）テクノロジー、または、２つ以上の電圧／周波数動作点を提供する他のパワーマネジメント関連のテクノロジーを含み得る。関連するクロック／パワーマネジメントユニット１５０は、２つ以上の電圧／周波数の対の間の移行を制御すべくプロセッサ６０５内に含まれてよい。
【００４２】
本発明のいくつかの実施形態では、プロセッサ６０５は、デジタルシグナルプロセッサ、組み込みプロセッサなどの異なるタイプのプロセッサ、または、異なるソースからのマイクロプロセッサであってよい。
【００４３】
他にも、プロセッサ６０５は、プロセッサの状態変数、および、ウォーム／ダーティビット情報を格納するために用いられ得る専用キャッシュメモリ１４０（例えば同期式ランダムアクセスメモリ（ＳＲＡＭ））を含んでよい。本発明のいくつかの実施形態では、メモリ１４０は、プロセッサが、例えばこれに限定されないが、ゼロ電圧スリープ状態など、非常に低い電圧状態に入るときに上記情報のいくらかあるいはすべてを格納してよい。本発明のいくつかの実施形態では、メモリは、プロセッサのチップに組み込まれるか、または、プロセッサチップと同じハウジング内に実装されてよい。
【００４４】
インテルＳｐｅｅｄＳｔｅｐ（登録商標）テクノロジー、または、他のタイプのパワーマネジメントテクノロジーがプロセッサ６０５に組み込まれる場合、テクノロジーに付随する利用可能な電圧／周波数の対は、完全な機能動作モードの間のプロセッサ６０５に付随する最小アクティブモード動作電圧、および、最小動作周波数に対応する最小電圧／周波数対を含む。これらは、本願明細書中では、最小動作電圧および最小動作周波数、または、最小アクティブモード動作電圧、および、最小アクティブモード動作周波数とそれぞれ呼ばれてよい。同様に、最大動作電圧および周波数も定義され得る。他の利用可能な電圧／周波数対は、動作電圧／周波数対、あるいは、単に他の電圧／周波数、または、周波数／電圧対と呼ばれてもよい。
【００４５】
任意で、ゼロ電圧入／出ロジック１５４がプロセッサ６０５内のパワーマネジメントロジック（ＰＭＬ）１５０の中または外に含まれ、本願明細書中ではＣ６状態と呼ばれるゼロ電圧スリープ状態から／への出／入りを制御してもよい。本願明細書中の他の箇所に記載するように、ＰＭＬ１５０は、ロジック５００を含み得る。
【００４６】
ゼロ電圧入／出ロジック１５４によりアクセス可能な、電圧識別コード・ルックアップテーブルを格納する電圧識別（ＶＩＤ）メモリ１５２が含まれてよい。ＶＩＤメモリは、オンチップまたはオフチップレジスタ、あるいは、他のタイプのメモリであってよく、ＶＩＤデータは、例えば、ソフトウェア、基本入出力システム（ＢＩＯＳ）コード６７８（ファームウェアハブ６７９、または、他のメモリに格納されてもよい）、オペレーティングシステム、他のファームウェアを介しメモリにロードされてよく、および／または、ハードコードされてもよい。あるいは、ＶＩＤおよび関連データを含むソフトウェアのルックアップテーブルは、ロジック１５０によりアクセス可能であってもよい。ＶＩＤ情報は、ＣＰＵにヒューズ（例えばプログラマブルＲＯＭ）として格納されてもよい。
【００４７】
本発明のいくつかの実施形態では、ロジック５００の動作に必要な情報、および／または、ウォーム／ダーティビットの状態がＶＩＤデータと共に同じように格納され得る。
【００４８】
アナログ・デジタル変換器（ＡＤＣ）１５６もゼロ電圧入／出ロジック１５０の一部として設けられ、電圧供給レベルを監視して以下にさらに詳細に述べるような関連するデジタル出力を供給し得る。
【００４９】
電圧レギュレータ６１２は、プロセッサ６０５に供給動作電圧を供給し、例えば、ＩＭＶＰ−６仕様などのインテルモバイル電圧ポジショニング（ＩＭＶＰ）仕様のバージョンに従ってよい。このような実施形態では、電圧レギュレータ６１２は、プロセッサ６０５からのＶＩＤ信号をハブ６３５を介し受信するよう結合され、ＶＩＤ信号に応答して、信号ライン６４０を介し関連する動作電圧をプロセッサ６０５に供給する。電圧レギュレータ６１２は、１つ以上の信号に応答し、プロセッサ６０５への電圧６４０をゼロ状態に引き下げ、ゼロ電圧スリープ状態から抜け出た後、プロセッサへの電圧を再び上昇させるゼロ電圧スリープロジック１０２を含み得る。
【００５０】
本発明の他の実施形態では、異なる仕様に従う電圧レギュレータを含む、異なるタイプの電圧レギュレータを用いてよい。さらに、いくつかの実施形態では、電圧レギュレータは、プロセッサ６０５を含むシステム６００の他の構成要素と集積されてよい。電圧レギュレータは、設計の配慮次第でＣＰＵと集積されてもされなくてもよい。
【００５１】
メモリ制御ハブ６１５は、グラフィックスおよびメモリ制御能力の両方を備えることもあり、本願明細書中では、グラフィクス・メモリ制御ハブ（Ｇ／ＭＣＨ）またはノースブリッジと呼ばれることもある。グラフィックス・メモリ制御ハブ６１５、および、Ｉ／Ｏ制御ハブ６２５（サウスブリッジとも呼ばれる）は、まとめてチップセットとも呼ばれることがある。他の実施形態では、チップセットの要素は、異なったやり方で区画されてよく、および／または、異なる数の集積回路チップを用いて実装されてよい。例えば、いくつかの実施形態では、グラフィックスおよびメモリ制御能力は、別々の集積回路デバイスを用いて実現され得る。
【００５２】
いくつかの実施形態のＩ／Ｏ制御ハブ６２５は、本願明細書中ではＣ状態制御ロジックとも呼ばれるパワーマネジメント状態制御ロジック６４２を含む。パワーマネジメント状態制御ロジック６４２は、プロセッサ６０５に関連するいくつかのパワーマネジメントおよび／または通常の動作状態との間の、自発的な、または、オペレーティングシステムあるいは他のソフトウェアまたはハードウェアイベントに応じての移行の態様を制御してよい。例えば、Ｃ０、Ｃ１、Ｃ２、および、Ｃ４、Ｃ５、Ｃ６と呼ばれる少なくともアクティブモードのパワーマネジメント状態がサポートされているインテル（登録商標）アーキテクチャのプロセッサでは、パワーマネジメント状態制御ロジック６４２は、ストップクロック（ＳＴＰＣＬＫ＃）、プロセッサスリープ（ＳＬＰ＃）、ディープスリープ（ＤＰＳＬＰ＃）、ディーパーストップ（ＤＰＲＳＴＰ＃）、および／または、ストッププロセッサ（ＳＴＰＣＰＵ＃）信号のうちの１つ以上を用いて上記状態の少なくともサブセットの間の移行を少なくとも部分的に制御することができる。
【００５３】
また、本発明のいくつかの実施形態では、動作電圧６４０がゼロ状態に低下することによりプロセッサ６０５の残りがパワーダウンする一方で、専用キャッシュメモリ１４０がプロセッサ６０５に関連する状態変数を格納できるよう、専用キャッシュメモリ１４０に十分な電力を供給すべく、プロセッサ６０５にＩ／Ｏ制御ハブ６２５（ＶＩ／Ｏ  １４９）からの電圧が供給される。本発明のいくつかの実施形態では、状態変数は、ウォームビットおよび／またはダーティビット情報を含む。
【００５４】
他のタイプのアーキテクチャ、および／または、異なるパワーマネジメントおよび／または通常の動作状態をサポートするプロセッサでは、パワーマネジメント状態制御ロジック６４２は、本願明細書中に記載される信号と同様かまたは異なるかもしれない１つ以上の信号を用いて２つ以上の異なるパワーマネジメント、および／または、通常の動作状態の間の移行を制御し得る。
【００５５】
大容量記憶装置６３０は、ネットワークを介してコンピュータシステム６００によりアクセス可能な１つ以上の読み取り専用コンパクトディスク（ＣＤ−ＲＯＭ）ドライブと付随するディスク、１つ以上のハードドライブと付随するディスク、および／または、１つ以上の大容量記憶装置を含み得る。例えば、光ドライブと付随する媒体などの他のタイプの大容量記憶装置もさまざまな実施形態の範囲内に含まれる。
【００５６】
いくつかの実施形態では、大容量記憶装置６３０は、本願明細書中の他の箇所で説明するＡＣＰＩ仕様の現在のおよび／または後続バージョンをサポートすべく、コード６５０を含むオペレーティングシステム６４５を格納する。ＡＣＰＩは、以下にさらに詳細に説明するようなパワーマネジメントのいくつかの態様を制御すべく用いられてよい。オペレーティングシステム６４５は、ワシントン州レドモンドのマイクロソフト（登録商標）社製のウィンドウズ（登録商標）、または、他のタイプのオペレーティングシステムであってよい。あるいは、例えば、リナックス（登録商標）オペレーティングシステムなどの他のタイプのオペレーティングシステム、および／または、他のタイプのオペレーティングシステムに基づくパワーマネジメントも他の実施形態で用いられ得る。さらに、ＡＣＰＩに関連して本願明細書中に記載されたパワーマネジメント機能および能力は、異なるソフトウェアまたはハードウェアによっても実現できる。
【００５７】
また、システム６００は、ユーザに情報を表示するためのブラウン管（ＣＲＴ）、または、液晶ディスプレイ（ＬＣＤ）などのディスプレイ装置を含み得る。さらに、システム６００は、プロセッサ６０５と情報およびコマンド選択をやりとりするための英数字または他のキーを含む英数字入力装置（例えばキーボード）を含んでよい。追加のユーザ入力デバイスは、プロセッサ６０５と方向情報およびコマンド選択をやりとりし、ディスプレイ装置上のカーソルの動きを制御するための、マウス、トラックボール、トラックパッド、スタイラス、または、カーソル指示キーなどのカーソル制御装置であってよい。
【００５８】
システムに含まれ得る他の装置は、命令、データ、または、他の情報を紙、フィルム、または類似したタイプの媒体に印刷するために用いられるハードコピーデバイスである。さらに、スピーカおよび／またはマイクロフォン（図示せず）などの録音・再生デバイスが音声インターフェースとしてシステム６００に任意で含まれてよい。
【００５９】
システム６００がモバイルまたはポータブルシステムである場合、バッテリまたはバッテリコネクタ６５５が含まれることにより、単独で、または、他のタイプの電源がない状態でのいずれかにおいてシステム６００を駆動する電力を提供する。また、いくつかの実施形態では、アンテナ６６０は、システム６００に含まれ、例えば、システム６００の無線接続性を提供する無線ＬＡＮ（ＷＬＡＮ）デバイス６６１を介しシステム６００に結合されてよい。
【００６０】
無線ＬＡＮデバイス６６１は、無線通信チャネルを設定するワイヤレスアプリケーションプロトコル（ＷＡＰ）を採用し得る無線通信モジュールを含んでよい。無線通信モジュールは、１９９９年に発行された米国電気電子技術者協会（ＩＥＥＥ）８０２．１１規格などの無線ネットワーク規格を実装し得る。
【００６１】
本発明のいくつかの実施形態では、図６のプロセッサ６０５は、さまざまな既知のＣ状態の間を移行し得ると理解されたい。プロセッサ６０５の通常動作状態またはアクティブモードは、プロセッサが命令をアクティブに処理するＣ０状態である。Ｃ０状態のプロセッサ６０５は、最大電圧／周波数の対によって電圧／周波数が設定され得る高周波モード（ＨＦＭ）にある。
【００６２】
電力を節約し、および／または、熱負荷を減らすべく、例えば、プロセッサ６０５は、可能であればいつでも低消費電力状態に移行され得る。Ｃ０状態から、マイクロコードなどのファームウェア、オペレーティングシステム６４５などのソフトウェア、あるいは、いくつかのケースでは、ＡＣＰＩソフトウェアなどに応答してＨＡＬＴまたはＭＷＡＩＴ命令（図示せず）を実行すると、プロセッサ６０５は、Ｃ１または自動ＨＡＬＴ状態へと移行し得る。Ｃ１状態では、プロセッサ６０５の回路のそれぞれの部分はパワーダウンし、ローカルクロックは、ゲートで制限され得る。
【００６３】
例えば、Ｉ／Ｏコントローラ６２５によるＳＴＰＣＬＫ＃または同様の信号のアサーションに応じて、プロセッサは、ストップグラントまたはＳＬＥＥＰ状態とも呼ばれるＣ２状態へと移行してよい。Ｉ／Ｏコントローラ６２５は、低消費電力モードに入っている可能性があるかまたは入っているに違いないかを決定し、そのことをＡＣＰＩソフトウェア６５０を介して示すオペレーティングシステム６４５に応答し、ＳＴＰＣＬＫ＃信号をアサートしてよい。特に、Ｉ／Ｏコントローラ６２５には１つ以上のＡＣＰＩレジスタ（図示せず）が含まれてよく、ＡＣＰＩソフトウェア６５０は、これらのレジスタに書き込みをすることにより、状態間の少なくともいくつかの移行を制御してよい。Ｃ２状態における動作の間、プロセッサ６０５の回路におけるそれぞれの部分はパワーダウンし、内部および外部コアクロックは、ゲートで制限され得る。いくつかの実施形態では、プロセッサは、Ｃ０状態からＣ２状態へと直接移行し得る。
【００６４】
同様に、ＣＰＵＳＬＰ＃信号、次にＤＰＳＬＰ＃信号、または、他の同様の信号をアサートするＩ／Ｏコントローラ６２５および他のチップセット機能に応答し、プロセッサ６０５は、Ｄｅｅｐ  Ｓｌｅｅｐ状態とも呼ばれるＣ３状態へと移行してよい。Ｄｅｅｐ  Ｓｌｅｅｐ状態では、内部プロセッサ回路をパワーダウンさせることに加え、プロセッサ６０５内のすべての位相ロックループを使用不可にしてよい。さらに、いくつかの実施形態では、入出力コントローラ６２５によりＳＴＯＰ＿ＣＰＵ信号がアサートされ、それをクロックジェネレータ６１１が受信することにより、クロックジェネレータは、クロック信号ＣＬＫがＣＰＵ６０５に送られるのを止めることができる。
【００６５】
システム６００では、例えば、保留中のプロセッサ割込みがないことを検出するＡＣＰＩソフトウェア６５０に応答し、Ｃ４状態、または、ゼロ電圧スリープ状態へと移行し得る。このことは、ＡＣＰＩソフトウェアが、ＩＣＨ６２５に、例えば、典型的なＤｅｅｐｅｒ  Ｓｔｏｐ（ＤＰＲＳＴＰ＃）信号、および、典型的なＤＰＳＬＰ＃信号などの１つ以上のパワーマネジメント関連の信号をアサートさせることによりなされ得る。Ｄｅｅｐｅｒ  Ｓｔｏｐ（ＤＰＲＳＴＰ＃）信号は、チップセットからプロセッサへと直接供給され、プロセッサのクロック／パワーマネジメントロジック６５０に低周波モード（ＬＦＭ）を開始させる。低周波モードでは、プロセッサは、例えば、最小または他の低動作周波数へと移行してよい。
【００６６】
本発明のいくつかの実施形態では、ＤＰＲＳＴＰ＃信号のアサーションにより、さらに、内部ＶＩＤターゲットがゼロ電圧レベルに設定され、その結果、プロセッサが非常に低い電力消費特性を有するきわめて深いスリープ状態へと移行するよう、ゼロ動作電圧が電圧レギュレータ６１２によりプロセッサ６０５に印加される。
【００６７】
本発明のいくつかの実施形態に従い、例えば、プロセッサ６０５などの集積回路は、ゼロ電圧パワーマネジメント状態へと移行し始めてよい。一例では、プロセッサ６０５は、中央処理装置（ＣＰＵ）６０５であってよい。さらに、例えば、ゼロ電圧マネジメント状態は、ＡＣＰＩ規格に従うより深いスリープ状態であってもよい。この移行の間、ＣＰＵ６０５の状態は、セーブされ得る。例えば、ＣＰＵ６０５に関連する状態変数は、専用キャッシュメモリ（例えばＳＲＡＭ）１４０にセーブされ得る。
【００６８】
ＣＰＵ６０５の動作電圧は、その後、ＣＰＵ６０５が非常に低い消費電力特性を有する非常に深いスリープ状態になるよう、ゼロへと低下し得る。特に、オプションのゼロ電圧スリープ状態ロジック１０２を利用する電圧レギュレータ６１２は、動作電圧６４０をゼロまで下げてよい。これは、上述の如く、ＣＰＵ６０５のクロック／パワーマネジメントロジック１５０のゼロ電圧入／出ロジック１５４に関連してなされ得る。いくつかの実施形態では、このゼロ電圧パワーマネジメント状態は、ＡＣＰＩ規格と併せて実装される場合、Ｃ６状態と呼ばれることもある。
【００６９】
その後、ゼロ電圧パワーマネジメント状態から出る要求を受信したことに応答し、ＣＰＵ６０５は、より高い基準動作電圧でのゼロ電圧パワーマネジメント状態を出る。特に、上述のような、ＣＰＵ６０５のゼロ電圧入／出ロジック１５４と、電圧レギュレータ６１２のゼロ電圧スリープロジック１０２との制御下では、電圧レギュレータ６１２は、ＣＰＵ６０５が正確に動作するよう、基準動作電圧６４０を適切なレベルまで引き上げてよい。その後、ＣＰＵ６０５の重要な状態変数が専用キャッシュメモリ１４０からリストアされる。
【００７０】
したがって、本発明のいくつかの実施形態によれば、パワーマネジメントスキームは、ＣＰＵ６０５がウォームビットおよびダーティビット情報を含むその状態情報をセーブして電源をオフにし、その後必要に応じて起動し、状態をリストアし、ＣＰＵが停止した時点から以降の処理を続けられるようにする。このことは、いくつかの実施形態においては、オペレーティングシステム６４５からの明確なサポートがなくてもなし得、ウォームビットおよび／またはダーティビットの使用も手伝ってより短いレイテンシで達成できる。
【００７１】
さらに詳しくは、本発明のいくつかの実施形態では、ＡＣＰＩ規格に従うＣ６状態と呼ばれることもあるゼロ電圧プロセッサのスリープ状態では、ＣＰＵ６０５の状態は、Ｉ／Ｏ電源（ＶＩ／Ｏ）１４９をオフにし得る専用スリープ状態ＳＲＡＭキャッシュ１４０にセーブされてよく、その間、ＣＰＵ６０５のコア動作電圧６４０は、ほぼ０ボルトまで引き下げられる。この時点で、ＣＰＵ６０５は、ほぼ完全にオフになり消費する電力は非常に小さい。
【００７２】
ＣＰＵ６０５は、低電力状態を出ると即座に、電圧レギュレータ６１２に動作電圧６４０を再び上昇させることを指示し（例えばＶＩＤコード６３５により）、位相ロックループ（ＰＬＬ）を再びロックし、クロック／パワーマネジメントロジック１５０、および、ゼロ電圧入／出ロジック１５４を介しクロックを再びオンにする。さらに、ＣＰＵ６０５は、状態をクリアすべく内部ＲＥＳＥＴを実行し、その後専用スリープ状態ＳＲＡＭキャッシュ１４０からＣＰＵ６０５の状態をリストアしてよい。そしてＣＰＵ６０５は、実行ストリームおいて、停止した時点以降の処理を続けることができる。これらの動作は、オペレーティングシステム６４５および既存のパワーマネジメントソフトウェアインフラに対し透明であるよう、ＣＰＵ６０５ハードウェアにおいて、非常に短い期間でなされ得る（例えば、ほぼ１００マイクロ秒）。
【００７３】
いくつかの実施形態では、この方法論は、複数のプロセッサコアを有するＣＰＵ６０５に特に適している。ここでは、コア１２０（例えばＣｏｒｅ＃０）およびコア１２２（例えばＣｏｒｅ＃１）、すなわち、デュアルコアＣＰＵを一例として挙げる。しかしながら、任意の適当な数のＣＰＵコアでもかまわないことを理解されたい。デュアルコア構造では、ＣＰＵコア１２０および１２２は、共有キャッシュ１３０を利用する。例えば、この共有キャッシュ１３０は、コア１２０および１２２により共有されるレベル２（Ｌ２）キャッシュ１２０であってよい。
【００７４】
さらに、各コア１２０および１２２は、コアＩＤ１２１、マイクロコード１２３、共有状態１２４、および、専用状態１２５を含む。コア１２０および１２２のマイクロコード１２３は、ＣＰＵ状態のセーブ／リストア機能の実行時に、また、ＣＰＵ６０５のクロック／パワーマネジメントロジック１５０のゼロ電圧入／出ロジック１５４に関連するゼロ電圧プロセッサスリープ状態のパフォーマンスにおけるさまざまなデータフローのために利用される。さらに、専用スリープ状態ＳＲＡＭキャッシュ１４０は、あらゆるウォーム／ダーティビットに関連する情報のみならず、コアの状態をセーブするためにも利用され得る。
【００７５】
当業者の一人であれば、本願明細書中で得られる教示に少なくとも基づき、システム６００、および／または、さまざまな実施形態の他のシステムは、図６に示されていない他の構成要素または要素を含むことがあり、および／または、図６に示すすべての要素がすべての実施形態のシステム内に存在するわけではないことが理解できるであろう。
【００７６】
さらに、いくつかの実施形態のロジック５００は、図６の構成要素の１つ以上の中の有限状態機械（ＦＳＭ）として実装され得る。当業者の一人であれば、本願明細書中における少なくとも教示に基づき、このようなＦＳＭは、以下に述べるフローチャートに従い動作することが理解できるであろう。
【００７７】
これまで１つ以上の実施形態の多くの詳細が記載されてきたが、他の実施形態では、ダイナミックメモリサイジングのレイテンシを最適化するための他のアプローチも実装され得ると理解されたい。例えば、特定の電力供給状態が記載されているが、他の実施形態では、メモリブロックが変更されたまたはアクセスされたデータを含むという決定において他の電力供給状態および／または他のパワーファクタも考えられる。さらに、例としてパーソナルコンピュータにおけるデュアルコアプロセッサ内のメモリを説明したが、本発明の１つ以上の実施形態によれば、ダイナミックメモリサイジングの最適化レイテンシへのアプローチは、異なるタイプのメモリおよび／またはホスト集積回路チップおよび／またはシステムにも適用され得ることがわかるだろう。
【００７８】
例えば、本発明のさまざまな実施形態によれば、メモリパワーマネジメントロジック（図示しないが、少なくとも実行ユニット１１０により実装されてよい）、あるいは、他のソフトウェアまたはハードウェアにより、通常はホストプロセッサの、および／または、特にメモリのワークロードを監視することができる。メモリパワーマネジメントロジックは、例えば、プロセッサが長時間アクティブでない場合、および／または、例えば、アプリケーションが総空メモリのほんのわずかな部分しか消費しない場合、プロセッサまたはコンピュータシステムのすべてまたは一部の電力供給状態に基づき、メモリを効果的に縮小させるコマンドを発行することができ、以下に詳しく述べる図７乃至９のプロセスの１つ以上を実行する。このことは、例えば、図１および／または２に示す例示の実施形態のような１つ以上のウェイなどのアクティブメモリの一部を使用不可にすることにより成し得る。メモリパワーマネジメントロジックが、プロセッサは長時間アクティブであることを検出する場合、プロセッサ、または、ホストコンピュータシステムのすべてまたは一部は、所定の電力供給状態にあり、および／または、メモリサイズがプロセッサまたはコンピュータシステムの要求される動作に対して十分な大きさでない場合、図７乃至９を参照して以下に詳細に述べる１つ以上のプロセスを実行する一方で、もっと多くのメモリを使用可能にすることによりメモリを拡張するコマンドあるいは制御ロジックを発行してよい。
【００７９】
したがって、本発明のいくつかの実施形態によれば、ハードウェア調整モニタまたは制御ロジックまたはＰＭＬは、必要とされるウェイの数が使用可能なウェイの数より少ない場合、使用可能なウェイの数が必要とされるウェイの数と実質的に等しくなるよう、１つ以上のウェイを使用不可にすべく、スリープデバイスを非アクティブにするか（またはスリープデバイスがどのように構成されているかに基づきアクティブにする）ことを反復的に決定してよい。
【００８０】
さらに、本発明のいくつかの実施形態における１つ以上のコヒーレンシープロトコルを用い、ハードウェア調整モニタは、メモリに少なくとも書き込まれるデータのための１つ以上のウェイをスキャンしてよい。
【００８１】
本発明の他の実施形態では、ハードウェア調整モニタは、必要とされるウェイの数が使用可能なウェイの数より多い場合、使用可能なウェイの数が必要とされるウェイの数と実質的に等しくなるよう、１つ以上のウェイを使用可能にすべく、スリープデバイスをアクティブにするか、（または、スリープデバイスがどのように構成されているかに基づき非アクティブにする）ことを反復的に決定してよい。
【００８２】
本発明のいくつかの実施形態は、上記説明した機能を実行する方法を含み得る。例えば、本発明の一実施形態は、プロセッサおよびメモリを監視し、そのメモリを調整する方法を含み得る。プロセスは、図７乃至９を参照して以下に説明する実施形態の追加の動作を含んでよい。
【００８３】
これらの図は、ウォームおよびダーティビットを用いた電力供給状態への出入りの流れについてのいくつかの実施形態を表すフローチャートである。いくつかの実施形態では、ダーティビットは、電力供給状態へ入る間に用いられ得る。本発明のいくつかの実施形態によれば、ダーティビットは、変更されたデータを含まないメモリブロックをプロセッサにスキップさせることが少なくともできる。いくつかの実施形態では、ウォームビットは、例えば、これに限定されないが、特定のスリープ状態などの電力供給状態から出る間に用いられることができる。本発明のいくつかの実施形態では、ウォームビットは、いかなるデータも含まない、すなわち、アクセスされなかったメモリブロックの状態ビットの無効をプロセッサにスキップさせることが少なくともできる。ウォームビットの使用は、メモリブロックに状態ビットを保持する電力供給状態に依存するのではなく、図６に少なくとも関連して本願明細書中の他の箇所に記載されるゼロ電圧ロジックのような、本質的にスリープ状態あるいは電源オフ状態にあったとしてもプロセッサが状態情報を維持することができる、メモリに対する特定の電力レベルに依存する。換言すれば、本発明のいくつかの実施形態によれば、すべての状態ビットは、電力供給状態から出るときに無効にされ得るが、（ゼロ電圧ロジックの随意的な有無によっては）必ずしも無効にされる必要はない。
【００８４】
図７は、本発明のいくつかの実施形態におけるメモリレイテンシを最適化するプロセスの一例を示すフローチャートである。本願明細書中の他の箇所に記載されるように、プロセスは、パワーマネジメントロジック１５０または制御ロジック１５４だけでなくデコードロジック５１２も含むロジック５００により全体的にあるいは部分的に実行され得る。プロセスは、７００から開始し、７０２へと進む。７０２では、メモリブロックがプロセッサにアクセスされた場合、メモリブロックに関連するウォームビットが生成される。本発明のいくつかの実施形態では、プロセスは、任意で７０４に進む。７０４では、メモリブロックが変更された場合、メモリブロックに関連するダーティビットが生成される。
【００８５】
次に、プロセスは、７０６へと進む。７０６では、ロジック５００、１５０、または、１５４は、メモリ状態を変更する要求を受信する。本発明のいくつかの実施形態では、要求は、プロセッサのコアの１つ以上、または、プロセッサ自体の電力供給状態の変化を示し得る。本発明のいくつかの実施形態では、要求は、例えば、これに限定されないが、無線ＬＡＮ６６１などのプロセッサ６０５の外部にある他のデバイスを示してよい。本発明のいくつかの実施形態では、要求は、本願明細書中の他の箇所に記載されているように、メモリが全体的にまたは一部シャットダウンになることを示してよい。そして、プロセスは、７０８へと進む。７０８では、どのメモリブロックがアクセスされているかがウォームビットにより決定されることができる。メモリブロックが起動する間、プロセスは、ウォームビットによりマークされるブロックからの状態ビットを無効にしてよい。
【００８６】
本発明のいくつかの実施形態では、プロセスは、任意で７１０に進む。７１０では、どのメモリブロックが変更されているかがダーティビットにより決定されることができる。メモリブロックが非アクティブである間、プロセスは、ダーティビットによりマークされるブロックを無効にしてよい。そして、プロセスは、７１２へと進む。７１２で終了し、当業者の一人であれば本願明細書中に記載される教示に少なくとも基づき理解できるように、全体的にあるいは部分的に再インスタンス化されてよい。
【００８７】
図８は、図７の７０８における一実施形態に関連して述べられるような、本発明のいくつかの実施形態におけるメモリを出るフローについてのプロセスの一例を示すフローチャートである。プロセスは、本願明細書中の他の箇所に記載されるような、ロジック５００、１５０、または、１５４により実行され得る。プロセスは、８００から開始し、８０２に進んで保持されている状態ビットがあるかどうかチェックする。もしなければ、プロセスは８０４へと進み、すべての状態ビットを無効にしてよい。もしあれば、プロセスは、８０６に進む。
【００８８】
８０６では、プロセスは、無効にする次のブロックを選択してよい。選ぶいかなるブロックもない場合、プロセスは８１２に進み、終了する。この場合、当業者の一人であれば、本願明細書中に記載される教示に少なくとも基づき理解できるように、全体的にあるいは部分的に再インスタンス化され得る。選ぶブロックがある場合、プロセスは、８０８へと進んでよい。
【００８９】
８０８では、プロセスは、ブロックがウォームビットによりマークされるかどうかをチェックしてよい。マークされれば、８１０において、プロセスは、このブロックの状態ビットを無効にしてよい。もしされなければ、プロセスは、８０６に戻ってよい。いくつかの実施形態では、８１０の後、プロセスは、８０６に戻る。
【００９０】
図９は、図７の７１０における一実施形態に関連して述べられるような、本発明のいくつかの実施形態における、メモリに入るフローについてのプロセスの一例を示すフローチャートである。プロセスは、本願明細書中の他の箇所に記載されるような、ロジック５００、１５０、または、１５４により実行され得る。プロセスは、９００から開始し、９０２に進んで無効にされる次のブロックを選択する。無効にするいかなるブロックもない場合、プロセスは、９０８で終了する。この場合、当業者の一人であれば本願明細書中に記載される教示に少なくとも基づき理解できるように、全体的にあるいは部分的に再インスタンス化され得る。もしブロックがある場合、プロセスは、９０４へと進む。
【００９１】
９０４では、プロセスは、ブロックがダーティビットによりマークされるかどうかをチェックする。マークされれば、プロセスは、９０６に進み、このブロックのすべてのエントリを無効にしてよい。もしマークされなければ、プロセスは、９０２に戻ってよい。いくつかの実施形態では、プロセスは、９０６の後、９０２に戻る。
【００９２】
本明細書中における「１つの実施形態」「一実施形態」、「いくつかの実施形態」などへのいかなる言及も、実施形態に関連して記載される特定の特徴、構造、または、特性が本発明の少なくとも１つの実施形態に含まれることを意味する。明細書の随所に見られるこのような言い回しは、必ずしも同じ実施形態にすべて言及しているわけではない。更に、特定の特徴、構造、または、特性がいずれかの実施形態と関連して記載される場合、実施形態の他のものと関連してこのような特徴、構造、または、特性に影響を及ぼすことは当業者の知る範囲であると思われる。さらに、理解を容易にすべく、特定の方法の手順は、別々の手順として詳細に説明されているが、これらの別々の詳細な手順が必ずしもそれらを実行する順序どおりに記載されていると解釈されるべきでない。すなわち、当業者であれば、本願明細書中の教示に少なくとも基づき理解できるように、いくつかの手順は、他の順序でもあるいは同時に実行されてもよい。
【００９３】
本発明の実施形態は、当業者が本発明を実行できるよう十分詳細に記載され得る。他の実施形態も利用でき、本発明の範囲を逸脱せずに、構造的、論理的、知的変更もなされ得る。さらに、本発明のさまざまな実施形態は、異なるとしても必ずしも排他的であるというわけではない。例えば、一実施形態に記載される特定の特徴、構造、または、特性は、他の実施形態にも含まれ得る。したがって、詳細な説明は、限定を意図するものではない。
【００９４】
上記実施形態および利点は、例示にすぎず、本発明を限定するものとして解釈されるべきでない。例えば、本発明の教示は、他のタイプのメモリにも直ちに適用できる。当業者であれば、本発明の実施形態の教示は、さまざまな形式で実装できることが上記説明から理解できるであろう。したがって、これまで本発明の実施形態をその特定の例と関連付けて説明してきたが、本発明の実施形態の真の範囲は、それに限定されるべきでなく、当業者であれば、図面、明細書、添付の請求項の範囲に基づき、他の変形例もあり得ることは明らかであろう。
【図１】
2009514114.tif 000003
【図２】
2009514114.tif 000004
【図３】
2009514114.tif 000005
【図４】
2009514114.tif 000006
【図５】
2009514114.tif 000007
【図６】
2009514114.tif 000008
【図７】
2009514114.tif 000009
【図８】
2009514114.tif 000010
【図９】
2009514114.tif 000011
【国際調査報告】
2009514114.tif 000012
2009514114.tif 000013
2009514114.tif 000014