(57)【要約】  結合スリープデバイスを有するメモリに関して電力を削減する動的メモリのシステム及び方法を記載する。一実施形態では、動作要件は、相応の動作を実行するのに必要なメモリ量を反映しうる。メモリ電力管理論理を使用して、必要メモリを動作要件に対して調整する。スリープデバイスは、電力消費量を削減するよう要件に基づいてメモリを有効化又は無効化することができる。【選択図】  なし
2009505306.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ少なくとも１つのメモリセルを含む複数のウエイを含む一のメモリと、
前記複数のウエイのうちの１以上のウエイに結合され、当該１以上のウエイを無効にする一のスリープデバイスと、
前記スリープデバイスに結合され、１以上の要件に基づいて当該スリープデバイスを制御する一のメモリ電力管理論理と、
を含む、動的メモリの電力を削減する装置。
【請求項２】
前記メモリ電力管理論理は、ｉ）１以上のプロセッサ、ｉｉ）前記１以上のプロセッサのそれぞれにおける１以上のコア、ｉｉｉ）オペレーティングシステムの１以上のパラメータ、及び、ｉｖ）前記メモリの１以上のパラメータからなる群から選択される少なくとも１つの演算をモニタリングする、請求項１に記載の装置。
【請求項３】
前記１以上の要件のうちの１つは、前記複数のウエイからのウエイの必要数に基づく、請求項１に記載の装置。
【請求項４】
ハードウェア調整モニタは、前記ウエイの必要数がウエイの有効数より少ない場合を繰り返し決定し、前記ウエイの有効数が前記ウエイの必要数に実質的に等しくなるよう１以上のウエイを無効にするよう前記スリープデバイスを非アクティブにする、請求項３に記載の装置。
【請求項５】
前記ハードウェア調整モニタは、一のメモリに少なくとも書込みされるべきデータを見つけるよう前記１以上のウエイを走査する、請求項４に記載の装置。
【請求項６】
前記ハードウェア調整モニタは、前記ウエイの必要数がウエイの有効数より多い場合を繰り返し決定し、前記ウエイの有効数が前記ウエイの必要数に実質的に等しくなるよう１以上のウエイを有効にするよう前記スリープデバイスをアクティブにする、請求項３に記載の装置。
【請求項７】
前記スリープデバイスは、１を超えるスリープトランジスタを含む、請求項１に記載の装置。
【請求項８】
前記スリープデバイスは、前記複数のウエイのうちの１以上のウエイの状態を少なくともモニタリングする論理を含む、請求項１に記載の装置。
【請求項９】
前記メモリは、一の静的ランダムアクセスメモリ（ＳＲＡＭ）アレイを含む、請求項１に記載の装置。
【請求項１０】
それぞれ少なくとも１つのメモリセルを含む複数のウエイを含む一のメモリと、
前記複数のウエイのうちの１以上のウエイに結合され、当該１以上のウエイを無効にする一のスリープデバイスと、
前記スリープデバイスに結合され、１以上の要件に基づいて当該スリープデバイスを制御する一のメモリ電力管理論理と、
を含む、動的メモリの電力を削減するメモリデバイス。
【請求項１１】
前記メモリは、一の静的ランダムアクセスメモリ（ＳＲＡＭ）アレイを含む、請求項１０に記載のメモリデバイス。
【請求項１２】
動的メモリの電力を削減する方法であって、
１以上のプロセッサの少なくとも１つのコアをモニタリングすることと、
１を超えるウエイを含む一のメモリをモニタリングすることと、
ウエイの必要数を決定することと、
前記ウエイの必要数がウエイの有効数より少ない場合に、前記ウエイの有効数が前記ウエイの必要数に実質的に等しくなるよう１以上のウエイを繰り返し有効にすることと、
を含む方法。
【請求項１３】
前記１以上のウエイを無効にする前に、一のメモリに少なくとも書込みされるべきデータを見つけるよう当該１以上のウエイを走査することをさらに含む、請求項１２に記載の方法。
【請求項１４】
前記ウエイの必要数がウエイの有効数より多い場合に、前記ウエイの有効数が前記ウエイの必要数に実質的に等しくなるよう１以上のウエイを繰り返し無効にすることをさらに含む、請求項１２に記載の方法。
【請求項１５】
単一の集積回路チップ上に実装され、それぞれ少なくとも１つのメモリセルを含む複数のサブセクションを含む一のメモリと、
前記メモリに結合され、前記複数のサブセクションの少なくとも一部の有効化及び無効化を選択的且つ個別に制御するよう少なくとも１つの電力状態に応答するメモリ電力管理論理と、
を含む動的メモリの電力を削減する装置。
【請求項１６】
前記メモリは、一のキャッシュメモリを含み、
前記複数のサブセクションは、複数のウエイを含む、請求項１５に記載の装置。
【請求項１７】
複数のスリープデバイスをさらに含み、
少なくとも１つのスリープデバイスは、前記複数のサブセクションのそれぞれに結合され、
前記複数のスリープデバイスのそれぞれは、各サブセクションの有効化及び無効化を制御するよう前記メモリ電力管理論理に応答する、請求項１５に記載の装置。
【請求項１８】
前記複数のスリープデバイスのそれぞれは、一の電源と、前記各サブセクションとの間に結合される少なくとも１つの第１のトランジスタを含む、請求項１７に記載の装置。
【請求項１９】
前記電力状態は、少なくとも１つの第１のマイクロプロセッサコアの電力状態を含む、請求項１５に記載の装置。
【請求項２０】
前記メモリ電力管理論理は、前記メモリの実効サイズを縮小する一のリクエストの受信に呼応して、一の最小実効メモリサイズに到達する又は一の縮小停止条件が検出されるまで、一度に１つのサブセクションを無効にする、請求項１５に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の１つ以上の実施形態は、一般的に、集積回路及び／又はコンピューティングシステムに関する。特に、特定の実施形態は、メモリ回路の電力管理に関する。
【背景技術】
【０００２】
より多くのトランジスタを有し且つ高周波数で動作する高度プロセッサの傾向が高まるにつれ、コンピュータ設計者及び製造業者は、しばしば、対応して増加する電力消費量の問題に対処することになる。また、高速及び小型のコンポーネントを供給する製造技術は、同時に、漏れ電力を増加する。特に、モバイルコンピューティング環境において、このような増加は過熱の原因となり、これは、性能に悪影響を及ぼし、電池の寿命を相当短くしてしまいうる。
【０００３】
例えば、マイクロプロセッサにおいて、性能及び小フォームファクタに重点的に取り組むことによって、キャッシュメモリサイズは、所与のシリコン領域に対して最良の性能を実現するよう増加されている。より一層大きいメモリサイズに向かう最近のこの傾向は、メモリに関連付けられる電力消費量を増加している。その結果、メモリにより放散される漏れ電力は、中央演算処理ユニット（ＣＰＵ）の総電力に比べるとかなり相当である。
【図面の簡単な説明】
【０００４】
本発明の実施形態の様々な利点は、当業者には、以下の詳細な説明及び請求項を読むことにより、また、以下の図面を参照することにより明らかとなろう。
【０００５】
【図１】本発明の一実施形態による、動的サイジングを実施するためのメモリアーキテクチャの一例を示すブロック図である。
【０００６】
【図２】本発明の一実施形態による、動的サイジングを実施するためのメモリアーキテクチャの別の例を示す図である。
【０００７】
【図３】本発明の一実施形態による、動的サイジングを実施するためのメモリアーキテクチャのセルレベルの例を示す図である。
【０００８】
【図４】本発明の一実施形態による、動的サイジングを実施するためのメモリアーキテクチャのセルレベルの例を示す図である。
【０００９】
【図５】本発明の一実施形態による、動的サイジングを実施するためのメモリアーキテクチャのセルレベルの例を示す図である。
【００１０】
【図６−８】本発明の実施形態によるスリープデバイスの様々な例を示す図である。
【００１１】
【図９】本発明の実施形態による例示的なコンピュータシステムを示すシステムレベルブロック図である。
【００１２】
【図１０】本発明の一実施形態による動的メモリサイジングを管理する方法の一例を示すフローチャートである。
【００１３】
【図１１】本発明の一実施形態による動的メモリサイジングを管理する方法の別の例を示すフローチャートである。
【００１４】
【図１２】本発明の一実施形態による動的メモリ管理マシンの一例を示す状態図である。
【発明を実施するための最良の形態】
【００１５】
コンピュータシステム及び／又は関連付けられるソフトウェアにより実際に必要とされうるメモリ量は、多くの場合、時間の経過と共に変化する。例えば、一般的なアプリケーションでは、所与の時間にメモリの小さな一部しか必要でない場合がある。１つ以上の実施形態では、図１のメモリといったメモリは、メモリ回路と、それを使用するシステムの所要電力を低減するよう動的にサイズ変更されうる。具体的には、本願に説明するように、本発明の実施形態は、メモリの１つ以上のサブセクションを、それらが必要ではない及び／又は選択されない場合に、無効にすることにより、性能に実質的に影響を与えることなく電力消費量を減少しうる。
【００１６】
図１は、一実施形態による動的にサイズ変更可能なメモリ１００を示す。図１のこの例示的な実施形態の動的にサイズ変更可能なメモリは、例えば、静的ランダムアクセスメモリ（ＳＲＡＭ）を使用して実施されうるｎウエイ連想キャッシュメモリである。動的にサイズ変更可能なメモリ１００は、複数のサブセクション１０２ａ、１０２ｂ、…、１０２ｎ（各サブセクションは、この特定の例では、ウエイ（way）である）を含み、それぞれ、別個に、図示するように、各サブセクション又はウエイ１０２が選択的に有効／無効にされるよう複数のスリープデバイス１０４ａ、１０４ｂ、…、１０４ｎに結合される。本発明の１つ以上の実施形態では、スリープデバイス１０４は、メモリの関連付けられるサブセクションを電源に選択的に結合／減結合するよう使用されるスリープトランジスタを含みうる。
【００１７】
図３は、トランジスタレベルにおけるそのような実施の例示的なサブセクション又はウエイ３００を示す。ウエイ３００は、スリープデバイス３０４に結合されるセル３０２ａ、３０２ｂ、…、３０２ｍを含む。ウエイ３００の電源は、ここではスリープデバイス又はスリープトランジスタと称しうる直列トランジスタ３０４を介してホスト集積回路のグローバル電源線に結合されうる。図４は、図３の複数のセル３０２のうちの１つに対応しうる単一セル４０２を示す。より具体的には、図３及び４に示すように、スリープデバイス３０４及び４０４の入力ポートは、電源（この例ではＶｓｓ）に結合され、出力ポートは、アレイ供給に結合される。このアレイ供給は、アレイの仮想電源、すなわち、ＶＶｓｓと称されうる。
【００１８】
図３及び４の例示的な実施形態は、メモリのサブセクションとＶｓｓとの間に結合されるスリープデバイスを示すが、別の実施形態では、スリープデバイスは、図５のセル５０２に示すようにメモリのサブセクションとＶｃｃとの間に結合されてもよく、又は、１つのスリープ回路が、Ｖｃｃ及びＶｓｓのそれぞれと関連付けられるサブセクションとの間に結合されてもよい。
【００１９】
１つ以上の実施形態では、スリープデバイスは、関連付けられるウエイがアクティブである限りオンであり、また、関連付けられるウエイが非アクティブにされるべきであると決定される場合はオフにされうる。スリープデバイスをオフにし、メモリの関連付けられるサブセクションを無効にする結果、仮想電源のレールツーレール（Rail-to-Rail）電圧は減少する。従って、関連付けられるメモリアレイの漏れ電力が減少する。これは、漏れは、電圧に依存することによる（以下の式１を参照されたい）。
【００２０】
Ｉｌｋｇ＝ｋ・Ｖｎ      （式１）
【００２１】
このとき、Ｉｌｋｇは、漏れ電流であり、Ｖは、レールツーレール電圧であり、ｋは、定数でありえ、また、ｎは、必須ではないが、３より大きい。
【００２２】
図６及び図７は、本発明の実施形態によるスリープデバイスの代替の実施形態を示す。図６は、２つのスリープトランジスタ６０６ａ及び６０６ｂを有するスリープデバイス６０４を示す。この構成の利点には、以下に限定されないが、スリープトランジスタ６０６ａが、６０６ｂとは異なる抵抗値を有する場合が含まれる。実施形態では、スリープレジスタ６０６ａのサイズを減少することにより、スリープレジスタ６０６ａのゲートにおける電圧は、接地より高くなり、従って、ウエイ又はセル６０２を無効にするのにそれほど電圧を必要としなくなる。
【００２３】
同様に別の利点が、図７に示すスリープデバイス７０４及び図８に示すスリープデバイス８０４により与えられる。スリープデバイス７０４は、ウエイ又はセル７０２に供給される電力を漸進的に減少しうる。スリープデバイス８０４は、ウエイ又はセル８０２に供給される電力を限定的に減少しうる。図６乃至８の代替のスリープデバイスは、本発明の実施形態に従って、少なくとも本願に与えられる教示内容に基づいて当業者が使用しうるスリープデバイスのタイプを例示する代替の実施形態を与えるが、本発明の範囲を限定することを意図しない。さらに、当業者には明らかなように、これらのスリープデバイスの様々な実施形態は、他のスリープデバイスより特殊であり、従って、特定の動的にサイズ変更可能なメモリにはより有利でありうる応用を有しうる。
【００２４】
他の実施形態では、様々な回路及び／又は他の技術を使用して、代替のスリープ論理を実施しうる、及び／又は、異なるアプローチを使用してスリープデバイスと同様の機能性を供給しうる。本発明の一実施形態では、例えば、メモリの様々なサブセクションを、そのメモリのサブセクションが電力面制御を介して有効／無効にされうるよう様々な電力面上で実装されうる。他のアプローチも様々な実施形態の範囲内である。
【００２５】
ここでは、ウエイと関連付けられるスリープデバイスの複数の個々のペアを示すが、本発明の実施形態は、本発明の実施形態の精神及び範囲から逸脱することなく様々な配置で容易に実施されうる。例えば、図２は、単一のスリープデバイス２０４に結合される複数のウエイ２０２ａ、２０２ｂ、…、２０２ｎを含む、本発明の代替の実施形態による動的メモリ２００を示す。ここでは、ｎは、１より大きい数でありうる。ウエイ及びスリープデバイスは、機能及び設計に関して、図１に示すものと同様でありうる。ただし、この代替の実施形態では、スリープデバイス２０４は、それに関連付けられるすべてのウエイを無効にするよう非アクティブにされうる。
【００２６】
さらに、ここでは、説明目的でマイクロプロセッサ上に実装されるｎウエイ連想キャッシュメモリを記載するが、本発明の実施形態は、異なるアーキテクチャを有するキャッシュメモリ及び／又は別のタイプの集積回路デバイス上に実装されるメモリを含む他のタイプのメモリにも適用されうることは理解されよう。
【００２７】
他の実施形態では、例えば、様々なレベルのキャッシュメモリを含むメモリの他のパーティション、サブセクション、又はポーションは、本願に記載する１つ以上のアプローチを使用して選択的に有効及び／又は無効にされうる。従って、説明するウエイは、アレイといったセルの便利なグループ分けを提供しうるが、「ウエイ」という用語の使用は、本発明の精神又は範囲を限定することを意図しない。
【００２８】
図１を再び参照する。上述したように、スリープデバイス１０４ａは、漏れ電力を削減するようウエイ１０２ａが必要ではない場合にウエイ１０２ａを無効にするよう非アクティブにされ、又は、ウエイ１０２ａを有効にするようアクティブにされうる。なお、メモリに関して「有効にする」との用語の使用は、メモリの任意のアクティブレベルでの電力投入を意味し、また、「無効にする」との用語の使用は、メモリへの電力の除去又は遮断を意味する。論理的な観点から、本願に記載する本発明の実施形態では、有効化されたメモリは、読出し／書込み演算のためにアクセスされ、一方、無効にされたメモリは、アクセスされない。
【００２９】
１つ以上の実施形態では、動的にサイズ変更可能なメモリ１００の関連付けられるサブセクションを有効及び／又は無効にする目的で、スリープデバイス１０４ａ−１０４ｎは、ホスト集積回路、コンピュータシステム、又はソフトウェア内に実装されうるメモリ電力管理論理又は他の論理（図示せず）により制御されうる。このような実施の例を、図９を参照しながら以下に説明する。
【００３０】
図９は、本発明の例示的な実施形態による動的にサイズ変更可能なメモリ９０５を有するコンピュータシステム９００を示すブロック図である。コンピュータシステム９００は、例えば、ラップトップ、ノートブック又はデスクトップコンピュータシステムといったパーソナルコンピュータシステムでありうる。コンピュータシステム９００は、以下に限定されないが、コア９０２及びコア９０４により示す１つ以上のコアといったサブブロックを含みうる１つ以上のプロセッサ９０１と、例えば、Ｌ２キャッシュメモリでありうる動的にサイズ変更可能なキャッシュメモリ９０５と、メモリ電力管理論理９０７を含みうる電力管理論理９０６とを含みうる。１つ以上のプロセッサは、インテル（登録商標）アーキテクチャマイクロプロセッサでありうる。他の実施形態では、プロセッサは、例えば、グラフィクスプロセッサ、デジタル信号プロセッサ、混載プロセッサ等といった異なるタイプのプロセッサであり、及び／又は、異なるアーキテクチャを実装しうる。
【００３１】
１つ以上のプロセッサ９０１は、１つ以上のクロック源９０８と共に動作し、また、１つ以上の電圧源９１０から電力が供給されうる。１つ以上のプロセッサ９０１はさらに、メモリ９１２といった異なるレベルのメモリとも通信しうる。システム内に含まれても、システムによってアクセス可能にされてもよいシステムメモリ（ＲＡＭ）９１８ａ、及び、大容量記憶装置といった記憶装置９１８ｂといった上位メモリヒエラルキーレベルが、ホストバス９１４及びチップセット９１６を介してアクセスされうる。
【００３２】
さらに、例えば、グラフィクスインターフェース９２０及びネットワークインターフェース９２２等といった他の機能ユニットが、適切なバス又はポートを介して１つ以上のプロセッサ９０１と通信しうる。例えば、メモリ９１２、ＲＡＭ９１８ａ、及び／又は、記憶装置９１８ｂは、本発明の実施形態によるメモリの動的サイジングを提供するサブセクションを含みうる。さらに、当業者は、図示するコンポーネントの一部又はすべては、説明する実施形態の精神又は範囲から逸脱することなく、図９に示すものの変形において、異なる領域確保及び／又は集積アプローチを使用して実施しうることを認識するであろう。
【００３３】
一実施形態では、記憶装置９１８ｂは、例えば、オペレーティングシステム９２４といったソフトウェアを格納しうる。一実施形態では、オペレーティングシステムは、ワシントン州レッドモンドにあるマイクロソフト社から入手可能なウィンドウズ（登録商標）のオペレーティングシステムである。これは、ＡＣＰＩ（Advanced Configuration and Power Interface：高度設定及び電力インターフェース）規格（例えば、ＡＣＰＩ仕様の２００４年９月２日の３．０版、２００３年８月２５日の２．０ｃ版、２０００年７月２７日の２．０版など）に従った特徴及び機能を含み、及び／又は、ＯＳＰＭ（Operating System-directed Power Management：オペレーティングシステム指向電力管理）を提供する。他の実施形態では、オペレーティングシステムは、例えば、リナックスオペレーティングシステムといった異なるタイプのオペレーティングシステムでありうる。
【００３４】
システム９００は、モバイルパーソナルコンピュータシステムであるが、例えば、他のタイプのコンピュータ（例えば、手持ち式、サーバ、タブレット、ウェブアプライアンス、ルータなど）、ワイヤレス通信装置（例えば、セルラ電話機、コードレス電話機、ページャ、携帯情報端末など）、コンピュータ関連周辺機器（例えば、プリンタ、スキャナ、モニタなど）、娯楽装置（例えば、テレビ受像機、ラジオ、ステレオ、テープ及びコンパクトディスクプレイヤ、ビデオカセットレコーダ、ビデオレコーダ、デジタルカメラ、ＭＰ３（モーション・ピクチャ・エキスパーツ・グループ、オーディオレイヤ３）プレイヤ、ビデオゲーム、時計など）などといった他のタイプのシステムも様々な実施形態の範囲内である。上述の様々な図面により示すメモリ回路も任意のタイプであってよく、任意の上述したシステムに実装されてもよい。
【００３５】
一実施形態のメモリ電力管理モジュール９０７は、有限状態マシン（ＦＳＭ）として実装されうる。１つの例示的な実施形態のメモリ電力管理モジュール９０７の動作に対応する状態図を図１２に示す。
【００３６】
メモリ電力管理モジュール９０７は、電力管理モジュール９０６といったプロセッサ９０１の他の特徴及び機能と協働して動作しうる。特に、一実施形態の電力管理モジュールは、様々な電力状態間の移動を含む、プロセッサ９０１及び／又は個々のコア９０２及び９０４の電力管理を制御しうる。例えば、オペレーティングシステム９２４がＡＣＰＩをサポートする場合、電力管理モジュール９０７は、様々なコアのｃ状態及び／又はｐ状態を制御及び追跡しうる。電力管理モジュールはさらに、例えば、プロセッサ及び／又は１つ以上のコアの動作電圧／周波数、最小キャッシュメモリサイズ、タイマ情報、及び／又は、レジスタ又は他のデータストアに格納される他の情報といった、１つ以上の実施形態の動的メモリサイジングアプローチを管理するのに使用する他の情報を格納する、又は、そうでなければ、これらの情報へのアクセスを有しうる。
【００３７】
図９及び図１２を続けて参照する。メモリ電力管理モジュールは、３つの高レベル状態（様々な実施形態では中間状態が含まれてもよい）間を移動する。すなわち、「フルキャッシュサイズ」状態１２０５、「最小キャッシュサイズ」状態１２１０、及び「縮小停止」状態１２１５間を移動する。これらの状態間の移動は、メモリ９０５に結合されるマイクロコード（μコード）又は他のモジュール９２６と協働して管理されうる。「フルキャッシュサイズ」状態１２０５では、キャッシュをそのフルサイズに戻すマイクロコード９２６がリクエストされる。これはデフォルト（リセット）状態である。「最小キャッシュサイズ」状態１２１０では、キャッシュメモリをその最小サイズに縮小するマイクロコード９２６がリクエストされる。一部の実施形態では、最小サイズは（例えば、マイクロコードを介して）プログラム可能であり、また、以下に限定されないが、一般的なソフトウェアプロファイル、キャッシュサイズを縮小する際の許容可能な遅延、メモリがそれより下では動作不可となる最小サイズ、及び／又は他のファクタといった様々な設計検討事項により決定されうる。なお、メモリのいずれの最小サイズも、システムの状態に依存し、従って、当業者は理解するように、時間の経過と共に一定ではない。「縮小停止」状態１２１５では、キャッシュ縮小シーケンスを停止するマイクロコードがリクエストされる。無効又はシャットダウンされたウエイ又は他のサブセクションは無効のままであるが、実効キャッシュサイズは、それ以上は縮小されない。
【００３８】
これらの状態間の移動は、例えば、レジスタ又は他のデータストア（図示せず）内に格納されうる特定の変数に従って管理されうる。一実施形態では、例えば、これらの変数には、以下に限定されないが、１）１つだけ除いてすべてのコアが低電力状態にある、２）比率＜＝縮小閾値、３）ｃ状態タイマ出力、４）少なくとも１つのコアが低電力状態にある、５）比率＞縮小閾値、６）拡張、及び／又は、７）縮小が含まれうる。
【００３９】
２つのコアを含み、ＡＣＰＩ仕様に従って動作する図９のプロセッサ９０１では、一実施形態では、変数「１つだけ除いてすべてのコアが低電力状態にある」は、１つのコアはすでにＣ４状態にあり、動的メモリサイジング動作時に実行し続けうるもう１つのコアは依然としてアクティブ状態（Ｃ０）にあるという決定に応答して設定されうる。一実施形態では、この変数は、いずれかのコアがペンディング中のブレイクイベントを有する場合には設定されるべきではない。２つ（以上）のコアがプロセッサ９０１上に存在するが、１つ（以上）のコアが無効に又は除去される場合、そのコアは、意思決定プロセス時には無視されうる。
【００４０】
変数「比率＜＝縮小閾値」は、一実施形態では、プロセッサ９０１又はそのコアのうちの１つが、縮小閾値として設定される所定の周波数より低い／等しい周波数で動作するようプログラムされることに応答して設定されうる。一部の実施形態では、縮小閾値はプログラムされ、また、ゼロであってよい。
【００４１】
１つ以上のタイマ出力も、状態間で移動すべきか否かを決定する際に考慮されうる。一実施形態では、例えば、８ビットダウンカウンタといったタイマを使用して、プロセッサ（又はコア）がアクティブ又はＣ０状態であり続ける連続時間を計時し、その時間が予めプログラムされた閾値を超えると知らせうる。この例では、変数「閾値超過Ｃ０タイマ」を使用しうる。
【００４２】
図９に示す例示的なプロセッサ及びシステムでは、変数「少なくとも１つのコアが低電力状態にある」は、コアのうちの１つが、Ｃ４又はＷＦＳ状態ではなく、安定したＣ１、Ｃ２、又はＣ３状態に入ると設定されうる。
【００４３】
変数「比率＞縮小閾値」は、プロセッサ又はそのコアのうちの１つが、縮小閾値より高い周波数で動作するようプログラムされる場合に設定されうる。一部の実施形態では、縮小閾値が０である場合、この比率は、メモリを拡張するか否かを決定する際に考慮に入れる必要がない。
【００４４】
一実施形態では、「比率＞縮小閾値」である、「少なくとも１つのコアが低電力状態にある」、及び／又は、「Ｃ０タイマ＞閾値」である場合に、「拡張」変数が設定されるか、又は、そうでなければ、動的メモリ拡張が有効にされうる。他の実施形態及び／又は実施では、拡張変数は、様々な条件下で、又は、様々な入力に応答して設定されうる。
【００４５】
一実施形態では、「比率＜＝縮小閾値」が設定され、また、「１つだけ除いてすべてのコアが低電力状態である」が設定される場合に、「縮小」変数が設定されるか、又は、そうでなければ、動的メモリサイズ縮小が有効にされうる。
【００４６】
図９及び図１２を続けて参照する。マルチコアプロセッサを使用する一実施形態では、「フルキャッシュサイズ」状態１２０５から「最小キャッシュサイズ」状態１２１０への移動は、１つのコアがすでにＣ４（又は他の低電力）状態にあるという決定に応答して、また、プロセッサ９０１が、縮小閾値ｐ状態より下で動作している場合に行われうる。その場合、実効キャッシュ縮小は、実質的に性能に影響を与えないとみなされうるので、開始できる。同時に、実効メモリ拡張は必要ではないこと、例えば、Ｃ０タイマがタイムアウトしていないことによりアクティビティファクタの増加の可能性を示すことが確認されうる。
【００４７】
マイクロコードは、Ｃ４状態にあるコアでＣ４フローに入ると、メモリの実効サイズを「最小キャッシュサイズ」に縮小するリクエストを検出し、メモリのウエイ又は他のサブセクションを無効にし始めうる。一実施形態では、「最小キャッシュサイズ」状態１２１０において、ウエイ又は他のサブセクションは、１回につき１つが無効にされうる。他の実施形態では、他のアプローチを使用してもよい。
【００４８】
動的メモリサイズ縮小処理時、マイクロコードは、縮小変数が依然としてアサートされているか否かを決定するよう、プログラム可能なチャンク又は他のインターバル後に、縮小処理を停止しうる。縮小変数がアサートされていない場合、縮小処理は凍結される。さらに、ペンディング割り込みが発生する場合、縮小処理は中断される。
【００４９】
所定数のウエイ又は他のサブセクションがシャットダウンされると、残りのコアは、Ｃ４状態を示し、それにより、プロセッサ９０１全体がＣ４状態に入る。一部の実施形態では、このシーケンスは、キャッシュメモリが所定の最小サイズに到達するまで、最後のコアのＣ４エントリの度に繰り返されうる。最小サイズに到達すると、縮小リクエストは無視されうる。
【００５０】
「最小キャッシュサイズ」状態１２１０にある間で、１つのコアが、Ｃ４状態を終了し、拡張動作の条件（又は拡張変数の設定）がまだ満たされてない、又は、ペンディング中のブレイクリクエストが任意のコアに存在する場合、縮小変数は無効にされ、縮小処理は、停止される（すなわち、「縮小停止」状態１２１５に入る）。これは、メモリ９０５を、縮小を続けるための条件又は拡張動作のための条件が発生するまで、中間実効サイズにする。実効メモリ９０５サイズが、メモリ９０５が適切に動作できなくなる最小数のウエイといった所与数のウエイ又は他のサブセクションより下であり、また、「０」に到達していない又は最小サイズが、例えば「２に再び開く（re-open to 2）」といった所与のレベルにおいてプログラムされる場合、マイクロコードは、メモリを再度開き、それにより、少なくとも所与数のウエイ又は他のサブセクションが動作可能であるようにする必要がある。
【００５１】
「最小キャッシュサイズ」状態１２１０又は「縮小停止」状態１２１５のどちらかから、メモリ９０５を効率的に拡張する指示が発生しうる。メモリ９０５の拡張は、アクティビティファクタが増加したという１つ以上の指示子に基づきうる。一実施形態では、指示子には、縮小閾値より高いｐ状態への移動、例えば、Ｃ４ではなくＣ１／２／３といった異なる電力状態に移動するコアのうちの１つ、及び／又は、その閾値を超過するＣ０タイマを含みうる。このようなことが発生すると、プログラムは、その長いアクティビティストレッチ（activity stretches）の１つにあることを示しうる。上述したうちのいずれかが発生する場合、拡張変数がアサートされるか、又は、そうでなければ、メモリ９０５の実効拡張が開始されうる。
【００５２】
一実施形態では、実効メモリ拡張は、実質的に瞬時に行われる。すなわち、電流スパイクを阻止するための一部の遅延以外は、複数のサイクルに亘って行われるのではない。拡張後、マイクロコードは、拡張リクエストを無視する。上述に加えて、一部の実施形態では、コアがＣ４を終了するたびに、マイクロコードは、縮小変数（又は縮小制御フィールド）を確認し、高い電力状態へのブレイクに進む前に最小数のウエイにメモリを拡張して戻しうる。
【００５３】
縮小処理では、一部の追加の検討事項が、１つ以上の実施形態に適用されうる。例えば、一部の実施形態では、マイクロコードは、一度に単一のコアだけがメモリインターフェースにアクセスするようセマフォを用いてメモリ縮小セグメントエントリを制御する必要がありうる（上述した例示的な実施形態について、他のコアは、コアＣ４状態にあるとみなされるが、これは、拡張セグメント又は処理時には保証されない場合がある。いずれの場合においても、イベントタイミングが、縮小フローの原子セグメント（atomic segment）が完了する前にブレイクを引き起こしうる。セマフォは、第２のコアが、縮小／拡張処理が完了するまで、メモリインターフェースにアクセスしないことを保証しうる）。
【００５４】
さらに、メモリ９０５問題を阻止する目的で、マイクロコードは、第２の（又は他の）コアは、縮小／拡張処理時には、コアＣ４状態に固定されることを保証する必要がありうる。一部の実施形態では、これは、同じセマフォに基づいたハードウェアにおいて発生しうるが、マイクロコードは、実際の原子縮小フローを開始する前に縮小指示を再確認することによって遅延ファクタを考慮に入れる必要がありうる。
【００５５】
潜在的に長い縮小フローによって、マイクロコードは、ブレイクがペンディングしておらず、また、縮小フローを停止するリクエストが発生していないことを定期的に検出及び保証する必要がありうる。これは、縮小変数が依然としてアサートされているか否かをテストすることによって各「チャンク」後に定期的に行われうる。マイクロコードは、縮小条件が終了したことを検出すると、他のコアがブレイクイベントに応答し、他のフローを進めることができることを確実にするようセマフォを解放すべきである。縮小リクエスト／変数は、任意のペンディングのブレイクイベントが検出されると無効にされうるので、フローの途中で割り込みウィンドウが開かれる必要がない。
【００５６】
一部の実施形態では、上述したように、それより下ではメモリ９０５が動作しない最小実効メモリサイズがありうる。例えば、メモリ９０５の最小サイズが、２ウエイである（すなわち、メモリ９０５は、１ウエイだけが有効であると正常に機能しない）場合、縮小処理は、一度に１つのウエイ又は他のサブセクションを縮小するようプログラムされている場合でも、直接２ウエイから０ウエイが有効となるようにされうる。
【００５７】
一実施形態での「標準の」拡張フローでは、マイクロコードは、拡張が要求されているか否かに関わらず、各コアＣ４終了後にセマフォを獲得することを試みる（アンワインド（unwind））。従って、（マルチコアプロセッサの）スリープした又は低電力のコアは、縮小フロー時に実行を開始することができず、それにより、縮小処理とのコンテンションの可能性が起こらないようにする。メモリ拡張は、割り込みマイクロコード処理ルーチン時に実行されうる。上述したように、メモリがある最小動作可能サイズより下では動作不可となる一部の実施形態では、メモリは、特定の条件下で最小動作可能サイズに直接拡張されうる。例えば、プロセッサがＭＷＡＩＴ状態を実装しうる本発明の一実施形態では、自動拡張が、各ＭＷＡＩＴ終了後に実施され、メモリは、最小動作可能有効サイズに直接されうる。
【００５８】
コアのクロックが再開する及び／又はコアがコアＣ４終了を開始した場合、マシンチェックアーキテクチャ（ＭＣＡ）の例外（例えば、メモリ９０５のパリティエラー）が、縮小フローを終了するコア又は他のコアのいずれか一方で発生しうる。いずれの場合においても、メモリ９０５は、最小動作可能サイズより下に縮小されるが、ゼロの実効サイズに到達していない場合がある。これは、正当な動作可能なサイズではなく、また、すぐにはＣ４には入らないことが想定されうるので、ＭＣＡ例外ハンドラにおいてメモリ９０５を完全に拡張するマイクロコードが要求されうる。従って、マイクロコードは、セマフォを獲得すること、メモリ９０５をその最大実効サイズに拡張すること（メモリ９０５が既に最大実効サイズとなっていない場合）、セマフォを解放すること、及び、コアをアクティブ状態に移すことを含むＭＣＡ例外時にＭＷＡＩＴのアンワインドフローと同様のアンワインドフローを実行する必要がありうる。
【００５９】
キャッシュメモリを縮小するコマンドの受信に応答して、１つ以上の以下の演算のセットが実行されうる。
【００６０】
１．無効にされるべきウエイが、新しいリクエストに対して割り当てられないよう新しいラインの割り当てを偏らせる。
【００６１】
２．無効にされるべきウエイにおけるすべてのロケーションを走査する。有効データが発見された場合、そのデータは、クリーンデータである場合は無効にされ、変更されている場合は、ライトバックされるべきである。なお、当業者は認識するように、ＭＥＳＩ（４状態：変更、排他、共有、無効）以外の別のコヒーレンシ又は書込み−無効プロトコルを、本発明に実装及び使用してもよい。例えば、当業者には、ＭＯＥＳＩ（５状態：変更、所有、排他、共有、無効）又はＤＲＡＧＯＮ（４状態：有効−排他、共有−クリーン、共有−変更、ダーティ）を実装しうることは容易に明らかであろう。
【００６２】
３．無効にされるべきウエイを「無効」とマーク付けし、メモリに状態変更を信号で伝える。
【００６３】
本発明の実施形態では、これらの演算時、無効にされるべきウエイにあるすべての有効データは、読出しアクセス及び書込みアクセスの両方に利用可能である。実施形態において、キャッシュが拡張されるべき場合、メモリ電力管理論理が、有効にされるべきウエイをマーク付けしうる。本発明の実施形態では、現在無効状態にあるウエイのいずれかが、その状態が確実でなくなるような電力を受け取ると、これらのウエイは、システム又はプロセッサに利用可能となる前に無効にされうる。
【００６４】
１つ以上の実施形態の多くの詳細を上述したが、他の実施形態にはメモリサイズを動的に縮小する他のアプローチを実施してもよいことは理解されよう。例えば、特定の電力状態を上述したが、他の実施形態では、実効メモリサイズを拡張又は縮小することを決定する際に、他の電力状態及び／又は他のファクタを考慮しうる。さらに、パーソナルコンピュータにおけるデュアルコアプロセッサのキャッシュメモリを例示的に上述したが、１つ以上の実施形態による動的メモリサイジングアプローチは、異なるタイプのメモリ及び／又はホスト集積回路チップ及び／又はシステムに適用しうることは理解されよう。
【００６５】
例えば、本発明の様々な実施形態では、メモリ電力管理論理又は他のソフトウェア又はハードウェアは、一般的にはホストプロセッサ及び／又は具体的にはメモリの作業負荷をモニタリングしうる。メモリ電力管理論理は、例えば、プロセッサが長時間、非アクティブである場合、及び／又は、１つのアプリケーションが利用可能なキャッシュメモリ全体の小部分しか使用しない場合、プロセッサ又はコンピューティングシステムのすべての又は一部の電力状態に依存してメモリを効果的に縮小するコマンドを発行しうる。縮小は、図１の例示的な実施形態に示すように、１つ以上のウエイといったアクティブメモリの部分を無効にすることにより行われる。メモリ電力管理論理は、プロセッサが長時間アクティブである、プロセッサ又はホストコンピューティングシステムのすべて又は一部が所与の電力状態にある、及び／又は、キャッシュサイズが、プロセッサ又はコンピュータシステムに必要な演算のために十分に大きくないことを検出すると、コマンドを発行するか、又は、そうでなければ、より多くのメモリを有効にすることによりキャッシュを拡張するよう論理を制御しうる。
【００６６】
従って、本発明の一実施形態では、ハードウェア調整モニタが、ウエイの必要数がウエイの有効数より少ない場合を繰り返し決定し、ウエイの有効数がウエイの必要数と実質的に等しくなるよう１つ以上のウエイを無効にするようスリープデバイスを非アクティブにしうる。
【００６７】
さらに、本発明の一実施形態では、１つ以上のコヒーレンシプロトコルを使用して、ハードウェア調整モニタは、メモリに少なくとも書込みされるべきデータを見つけるよう１つ以上のウエイを走査しうる。
【００６８】
本発明の別の実施形態では、ハードウェア調整モニタはさらに、ウエイの必要数がウエイの有効数より多い場合を繰り返し決定し、ウエイの有効数がウエイの必要数と実質的に等しくなるよう１つ以上のウエイを有効にするようスリープデバイスをアクティブにしうる。
【００６９】
本発明の実施形態は、上述した機能を実行する方法を含みうる。例えば、本発明の一実施形態は、プロセッサ及びメモリをモニタリングし、メモリを調節する方法を含みうる。この方法は、追加の演算を含んでもよく、その実施形態を、図１０及び１１を参照して以下に説明する。
【００７０】
図１０は、本発明の一実施形態の演算のフローチャートを示す。これらの演算は、工程１０００においてインスタンス化され、すぐに工程１００２に進みうる。工程１００２では、プロセッサ及びメモリをモニタリングする演算が開始しうる。本発明の実施形態では、１を超えるプロセッサがあり、各プロセッサは１つ以上のコアを有し、いずれのコアもモニタリングされうる。処理は次に工程１００４に進む。
【００７１】
工程１００４では、プロセッサの要件及びメモリの要件を決定する処理が開始しうる。本発明の実施形態では、以下に限定されないが、ＯＳＰＭ及びＡＣＰＩといった様々な管理規格が、以下に限定されないが、様々なｃ状態又はｐ状態、又はそれらの組み合わせ、並びに様々なキャッシュヒット又はキャッシュミスレベルといった閾値又は要件を与え、これらの閾値又は要件により、ハードウェア調整モニタは、システムの必要メモリを決定しうる。処理は次に工程１００６に進む。
【００７２】
工程１００６では、プロセッサの要件及びメモリの要件から複数の要件を決定する処理が開始しうる。本発明の実施形態では、この複数の要件には優先順位が付けられるか、又は、本発明の１つ以上の実施形態により有効にされるシステムに、メモリの有効化又は無効化を実行させる他の順序付けられたリストが与えられる。処理は次に工程１００８に進む。
【００７３】
工程１００８では、複数の要件のうちの１つ以上の要件が満足される場合を決定する処理が開始しうる。本発明の実施形態では、メモリ電力管理論理がこの決定を行いうる。上述したように、以下に限定されないが、メモリ電力管理論理９０６といったメモリ電力管理論理は、工程１００６にて決定された複数の要件へのアクセスを有しうる。処理は次に工程１０１０に進む。
【００７４】
工程１０１０では、複数の要件のうちの少なくとも１つの満足された要件に基づいてメモリを調節する演算が開始しうる。上述したように、本発明の実施形態は、システムが利用可能となるべきメモリの少なくとも要件に基づいてそのメモリを有効化する。本発明の他の実施形態では、メモリは、必要でないため無効にされるべきウエイを有しうる。次に処理は終了し、工程１０１２に進む。工程１０１２では、工程１０００の演算を再開しうる。本発明の代替実施形態では、少なくとも本願に提供する教示内容に基づいて当業者が認識するように、演算は、図１０のどの工程から開始してもよい。
【００７５】
図１１は、本発明の別の実施形態の演算のフローチャートを示す。これらの演算は、工程１１００においてインスタンス化され、すぐに工程１１０２に進みうる。工程１１０２では、１つ以上のプロセッサのうちの少なくとも１つのコアと、１を超えるウエイを有する少なくとも１つのメモリをモニタリングする演算が開始しうる。処理は次に工程１１０４に進む。
【００７６】
工程１１０４では、ウエイの必要数を決定する処理が開始しうる。本発明の実施形態では、以下に限定されないが、ＯＳＰＭ及びＡＣＰＩといった様々な管理規格が、以下に限定されないが、様々なｃ状態又はｐ状態、又はそれらの組み合わせ、並びに様々なキャッシュヒット又はキャッシュミスレベルといった閾値又は要件を与え、これらの閾値又は要件により、ハードウェア調整モニタは、システムの必要メモリを決定しうる。処理は次に工程１１０６に進む。
【００７７】
工程１１０６では、ウエイの必要数がウエイの有効数より少ない場合、ウエイの有効数がウエイの必要数と実質的に等しくなるよう１つ以上のウエイの無効にする処理を開始しうる。本発明の実施形態では、１を超える段階数で、又は、反復法で、又は、すべて一度に、不必要なウエイを無効にしうる。これは、メモリの無効化を実行するようスリープデバイスの１つ以上の実施形態により可能にされる。処理は次に工程１１０８に進む。
【００７８】
工程１１０８では、ウエイの必要数がウエイの有効数より多い場合、ウエイの有効数がウエイの必要数と実質的に等しくなるよう１つ以上のウエイを有効にする処理を開始しうる。本発明の実施形態では、メモリ電力管理論理が、工程１１０６及び１１０８の少なくとも１つにおける決定をしうる。上述したように、以下に限定されないが、メモリ電力管理論理９０６といったメモリ電力管理論理は、工程１００６にて決定された複数の要件へのアクセスを有しうる。処理は次に工程１１１０に進む。
【００７９】
工程１１１０において、メモリに少なくとも書込みされるべきデータを見つけるよう、工程１００６にて無効にされる前に、１つ以上のウエイを走査するオプションの演算が開始しうる。本発明の他の実施形態では、メモリは、必要でないため無効にされるべきウエイを有しうる。次に処理は終了し、工程１１１２に進む。工程１１１２では、工程１１００の演算を再開しうる。本発明の代替の実施形態では、少なくとも本願に提供する教示内容に基づいて当業者が認識するように、演算は、図１１のどの工程から開始してもよい。
【００８０】
上述の工程及びその演算の一部を鑑みて、本発明の実施形態は、機器であろうとメモリ装置であろうと、１つ以上のプロセッサの少なくとも１つのコアをモニタリングし、１を超えるウエイを含むメモリをモニタリングし、また、ウエイの必要数がウエイの有効数より少ない場合に、ウエイの有効数がウエイの必要数に実質的に等しくなるよう１つ以上のウエイを繰り返し有効にすることによって動作しうる。
【００８１】
さらに、１つ以上のウエイを無効にする前に、機器又はメモリ装置は、メモリに少なくとも書込みされるべきデータを見つけるよう１つ以上のウエイを走査しうる。
【００８２】
さらに、本発明の別の実施形態では、ウエイの必要数がウエイの有効数より多い場合に、機器又はメモリ装置は、ウエイの有効数がウエイの必要数に実質的に等しくなるよう１つ以上のウエイを繰り返し無効にしうる。
【００８３】
本明細書における「一実施形態」、「例示的な実施形態」等への参照は、実施形態に関連して説明される特定の機能、構造、又は特徴が、本発明の少なくとも１つの実施形態に含まれることを意味する。本明細書の様々な場所におけるそのような語句の出現は、必ずしも同一の実施形態について言及しているわけではない。さらに、特定の機能、構造、又は特徴が、任意の実施形態に関連して説明される場合、そのような機能、構造、又は特徴を、実施形態の他の機能、構造、又は特徴に関連して変更することは当業者の想定内であるものとする。さらに、理解を容易にするために、特定の方法手順は、別個の手順として描画したが、これらの別個に描画された手順は、その動作に依存する必須の順番であると解釈すべきではない。つまり、一部の手順は、少なくとも本願に提供する教示内容に基づいて当業者が理解するように、別の順序又は同時に実行されることが可能である。
【００８４】
本発明の実施形態は、当業者が、本発明を実施可能であるよう十分な詳細で説明する。他の実施形態を用いてもよく、また、構造上、論理上、及び知識上の変更を、本発明の範囲から逸脱することなく行いうる。さらに、本発明の様々な実施形態は、異なるが、必ずしも相互に排他的である必要なないことを理解するものとする。例えば、一実施形態において説明する特定の機能、構造、又は特徴は、他の実施形態に包含されてもよい。従って、詳細な説明は、限定的な意味合いで解釈すべきではない。
【００８５】
上述の実施形態及び利点は、例示的に過ぎず、本発明を限定すると解釈すべきではない。例えば、本教示内容は、他のタイプのメモリにも容易に適用することができる。当業者は、上述の説明から、本発明の実施形態の技術は、様々な形式で実施可能であることを理解できよう。従って、本発明の実施形態は、その特定の例に関連して説明したが、本発明の実施形態の真の範囲は、それらに限定されるべきではない。というのは、他の変形も、図面、明細書、および請求項を検討することにより当業者には明らかとなるからである。
【図１】
2009505306.tif 000003
【図２】
2009505306.tif 000004
【図３】
2009505306.tif 000005
【図４】
2009505306.tif 000006
【図５】
2009505306.tif 000007
【図６】
2009505306.tif 000008
【図７】
2009505306.tif 000009
【図８】
2009505306.tif 000010
【図９】
2009505306.tif 000011
【図１０】
2009505306.tif 000012
【図１１】
2009505306.tif 000013
【図１２】
2009505306.tif 000014
【国際調査報告】
2009505306.tif 000015
2009505306.tif 000016