(57)【要約】コンピュータ・システムが、あまり頻繁にアクセスされないオブジェクトを低電力状態で動作できるメモリ領域に集約するようにメモリ内のオブジェクトを管理する。当該メモリ領域では、メモリ・オブジェクトのアクセス時間が増大する。少なくとも当該メモリ領域の一部を低電力状態で動作させることにより、大幅な省電力を実現する。コンピュータ・システムは、独立に制御できる幾つかのメモリ領域を有し、メモリ・オブジェクトを様々なメモリ領域に移して電力消費を最適化する。幾つかの実施形態では、オペレーティング・システム・レベルの機能が、利用履歴、メモリのトポロジと性能、およびアプリケーションからの入力から収集したパラメータに基づいてメモリ・オブジェクトを管理する。
2013508813.tif 000002
【特許請求の範囲】
【請求項１】
各々が少なくとも低電力状態と高電力状態を有する、複数のメモリ領域と、
前記メモリ領域の電力状態を別個かつ独立に管理するように構成したコントローラと、
複数のメモリ・オブジェクトの各々を監視して、前記メモリ・オブジェクトの各々に対するアクセス頻度を決定するステップと、
第１のメモリ領域を低電力動作の候補として識別するステップと、
第１のメモリ・オブジェクトを低頻度にアクセスされるオブジェクトとして識別するステップと、
前記第１のメモリ・オブジェクトを前記第１のメモリ領域に移すステップと、
前記第１のメモリ領域を前記低電力状態で動作させるステップと
を含む方法によってメモリ内容を管理するように構成したプロセッサと
を備えることを特徴とするシステム。
【請求項２】
前記方法がさらに、
第２のメモリ領域を高電力動作の候補として識別するステップと、
前記第１のメモリ領域内の第２のメモリ・オブジェクトを高頻度にアクセスされるオブジェクトとして識別するステップと、
前記第２のメモリ・オブジェクトを前記第１のメモリ領域から前記第２のメモリ領域に移すステップと、
前記第２のメモリ領域を前記高電力状態で動作させるステップと
を含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記第１のメモリ領域を監視して、前記第１のメモリ領域が前記低電力状態で動作する時間の長さを決定することによって省電力量を計算し、前記省電力量を前記時間の長さの関数として決定するステップをさらに備えることを特徴とする請求項２に記載のシステム。
【請求項４】
前記複数のメモリ領域が同一のメモリ領域であることを特徴とする請求項２に記載のシステム。
【請求項５】
前記複数のメモリ領域のうち少なくとも２つが異種であることを特徴とする請求項２に記載のシステム。
【請求項６】
前記メモリ領域のうち１つが取外し可能なメモリ領域であることを特徴とする請求項５に記載のシステム。
【請求項７】
前記第２のメモリ領域が、インタリーブ式アドレス指定を伴う少なくとも２つのメモリ装置を備えるインタリーブ式メモリ領域であることを特徴とする請求項２に記載のシステム。
【請求項８】
前記メモリ領域の少なくとも１つをテストして、前記メモリ領域が前記低電力状態にあるときの読取り問合せに対する待ち時間を決定するように構成したマッピング・エンジンをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項９】
前記マッピング・エンジンがさらに、起動動作の一部として動作するように構成されたことを特徴とする請求項８に記載のシステム。
【請求項１０】
前記マッピング・エンジンがさらに、前記低電力状態での前記メモリ領域に対する第１の電力消費と、前記高電力状態での前記メモリ領域に対する第２の電力消費を決定するように構成されたことを特徴とする請求項８に記載のシステム。
【請求項１１】
前記メモリ領域ごとに電力消費を測定するように構成した電力監視システムをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１２】
コンピュータ・プロセッサで実行される方法であって、
各々が高電力状態および低電力状態に対して別々に制御可能な複数のメモリ領域ごとにメモリ・アドレス領域を備えるメモリ・トポロジを受け取るステップと、
前記メモリ領域内の複数のメモリ・オブジェクトを監視して、前記複数のメモリ・オブジェクトごとにアクセス頻度を決定するステップと、
第１のメモリ領域を低電力動作の候補として識別するステップと、
第１のメモリ・オブジェクトを高頻度にアクセスされるオブジェクトとして、および前記第１のメモリ領域内に配置されているとして識別するステップと、
前記第１のメモリ・オブジェクトを第２のメモリ領域に移すステップと、
前記第１のメモリ領域を前記低電力状態で動作させるステップと
を含むことを特徴とする方法。
【請求項１３】
第２のメモリ領域を高電力動作の候補として識別するステップと、
前記第２のメモリ領域内の第２のメモリ・オブジェクトを低頻度にアクセスされるオブジェクトとして識別するステップと、
前記第２のメモリ・オブジェクトを前記第２のメモリ領域から前記第１のメモリ領域に移すステップと、
前記第２のメモリ領域を前記高電力状態で動作させるステップと
をさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記第１のメモリ領域が前記低電力状態にあるときに、前記第２のメモリ・オブジェクトとの第１の相互作用を検出するステップと、
前記第１の相互作用に対する第１の待ち時間を測定するステップと、
前記第１の待ち時間を記憶するステップと
をさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第１のメモリ領域が前記高電力状態にあるときに、前記第２のメモリ・オブジェクトとの第２の相互作用を検出するステップと、
前記第２の相互作用に対する第２の待ち時間を測定するステップと、
前記第２の待ち時間を記憶するステップと
をさらに含むことを特徴とする請求項１４に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータの電力消費は、データセンタや、多くのコンピュータ・システムの他の運用者にとっては多額の出費となりうる。大量の電力を必要とするコンピュータにはしばしば高い冷却コストがかかるので、電力消費はしばしば、データセンタ内の冷却や他のコストと結びつく。
【発明の概要】
【課題を解決するための手段】
【０００２】
コンピュータ・システムが、あまり頻繁にアクセスされないオブジェクトを低電力状態で動作できるメモリ領域に集約するようにメモリ内のオブジェクトを管理する。当該メモリ領域では、メモリ・オブジェクトのアクセス時間が増大しうる。少なくとも当該メモリ領域の一部を低電力状態で動作させることにより、大幅な省電力を実現することができる。コンピュータ・システムは、独立に電力制御できる幾つかのメモリ領域を有し、メモリ・オブジェクトを様々なメモリ領域に移して電力消費を最適化する。幾つかの実施形態では、オペレーティング・システム・レベルの機能が、利用履歴、メモリのトポロジと性能、およびアプリケーションからの入力から収集したパラメータに基づいてメモリ・オブジェクトを管理する。
【０００３】
本要約は、複数の概念の中から選択したものを簡潔な形で紹介するために提供される。それらの概念は、後の発明を実施するための形態においてさらに説明される。本要約により、特許請求の範囲の記載の主要な特徴または本質的な特徴を特定しようとするものではなく、特許請求の範囲を限定するために本要約を使用しようとするものでもない。
【図面の簡単な説明】
【０００４】
【図１】メモリ管理を伴うシステムを示す実施形態の図である。
【図２】メモリ装置の時間対電力の曲線を示す実施形態の図である。
【図３】メモリ領域内のメモリ・オブジェクトを最適化するための方法を示す実施形態の流れ図である。
【発明を実施するための形態】
【０００５】
メモリ管理システムが、高頻度に使用されるメモリ・オブジェクトと低頻度に使用されるメモリ・オブジェクトを、別々に制御可能なメモリ領域に集約する。低頻度に使用されるメモリ・オブジェクトを有するメモリ領域を低電力モードで動作させることができ、一方で、高頻度に使用されるメモリ・オブジェクトを高電力モードで動作させることができる。
【０００６】
メモリ管理システムが、オペレーティング・システムの機能として動作してもよく、ハードウェアのトポロジ、個々のメモリ・オブジェクトの利用状況、アプリケーションからの入力、および他のパラメータに関する情報を使用して、様々なメモリ・オブジェクトの最適な場所を決定してもよい。最適化を実施して、省電力量、全体の性能、特定のアプリケーションの性能、特定の仮想マシンのインスタンスの性能、または他のパラメータのような様々なパラメータを最大化することができる。
【０００７】
多くのメモリ装置が様々な動作特性を有する。典型的な揮発性のメモリ装置では、低電力状態を使用してメモリ内のデータを保持するが、高電力状態を使用して、読書きコマンドを用いてデータにアクセスする。一般に、低電力状態にあるかかる装置に、アクセスすることは、電力状態を上げて当該アクセスを行うことによって、なされる。かかるアクセスは一般に、動作性能に影響を及ぼす待ち時間特性が持つことになる。
【０００８】
メモリ管理システムがメモリ・オブジェクトに関する履歴情報を収集して、当該オブジェクトをどこに配置すべきかを判定する。当該履歴情報には、アクセス頻度、アクセス・タイプ、アクセス性能の監視結果を含めることができる。当該履歴情報を少なくとも部分的に使用して、低電力メモリ領域の候補を識別してもよい。
【０００９】
メモリ管理システムはまた、メモリ・オブジェクトに加えられた変更を評価して、当該変更が電力消費と性能を改善させるかそれとも悪化させるかを判定する。幾つかの状況では、全体として否定的な影響を及ぼす変更を取り消す。
【００１０】
本明細書全体にわたって、同じ参照番号は図の説明全体を通して同じ要素を示す。
【００１１】
要素が「接続」または「結合」されてことを示しているときは、当該要素を直接的に互いと接続または結合することができ、または、１つもしくは複数の中間的要素が存在してもよい。対照的に、要素が「直接に接続」または「直接に結合」されているというときは、中間的要素は存在しない。
【００１２】
本発明を、装置、システム、方法、および／またはコンピュータ・プログラム製品として具体化することができる。したがって、本発明の一部または全部をハードウェアおよび／またはソフトウェア（ファームウェア、常駐ソフトウェア、マイクロ・コード、状態機械、ゲート・アレイ、等を含む）で具体化することができる。さらに、本発明を、コンピュータ・プログラム製品、すなわち、コンピュータ利用可能記憶媒体またはコンピュータ読み取り可能記憶媒体上のコンピュータ・プログラム製品の形態とすることができる。このコンピュータ・プログラム製品はコンピュータ利用可能なまたはコンピュータ読取可能なプログラム・コードを有する。本明細書の文脈では、コンピュータ使用可能またはコンピュータ読取可能な媒体は、命令実行システム、機器、または装置によりまたはこれらと関連して使用するためのプログラムを含み、格納し、通信し、伝播し、または送信することができる任意の媒体とすることができる。
【００１３】
コンピュータ使用可能またはコンピュータ読取可能な媒体は、例えば、電気、磁気、光学、電磁気、赤外線、または半導体のシステム、機器、装置、または伝播媒体であってもよいがこれらに限らない。限定ではなく例として、コンピュータ読取可能媒体がコンピュータ記憶媒体および通信媒体を備えてもよい。
【００１４】
コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラム・モジュールまたは他のデータのような情報を記憶するための任意の方法または技術で実装した、揮発性および不揮発性、取外し可能および取外し不能な媒体が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）もしくは他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または、所望の情報の記憶に使用でき命令実行システムによりアクセスできる他の任意の媒体が含まれるがこれらに限らない。コンピュータ使用可能またはコンピュータ読取可能な媒体は、プログラムを印字した紙媒体または別の適切な媒体であってもよいことに留意されたい。なぜならば、プログラムを、例えば、紙媒体または他の媒体を光学的にスキャンして電子的に取得して、その後必要ならばコンパイルし、解釈し、または適切に処理してコンピュータのメモリに格納できるからである。
【００１５】
通信媒体は一般に、コンピュータ読取可能命令、データ構造、プログラム・モジュールまたは他のデータを、搬送波または他の伝送機構のような変調データ信号で具体化し、任意の情報配信媒体を含む。「変調データ信号」という用語は、１つまたは複数のその特性集合を有するかまたは信号中の情報をエンコードするように変化した信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続のような有線媒体、ならびに音響、ＲＦ、赤外線および他の無線媒体のような無線媒体が含まれる。上記の任意のものの組合せもコンピュータ読取可能媒体の範囲に含まれるべきである。
【００１６】
本発明をコンピュータ実行可能命令の一般的な文脈で具体化する場合、その実施形態は、１つまたは複数のシステム、コンピュータ、または他の装置によって実行されるプログラム・モジュールを備えてもよい。一般に、プログラム・モジュールは、特定のタスクを実施するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。一般に、プログラム・モジュールの機能を、様々な実施形態において必要に応じて組み合わせるかまたは分散させてもよい。
【００１７】
図１は、メモリ管理システムを伴うシステムを示す実施形態１００の図である。実施形態１００は、低頻度に使用されるメモリ・オブジェクトを、低電力状態で動作できるメモリ領域に集約することによって電力消費を管理できるコンピュータ・システムの簡単な例である。
【００１８】
図１は、システムの機能的なコンポーネントを示す。幾つかの場合では、当該コンポーネントはハードウェア・コンポーネント、ソフトウェア・コンポーネント、またはハードウェアとソフトウェアの組合せであってもよい。当該コンポーネントの一部がアプリケーション・レベルのソフトウェアであってもよく、他のコンポーネントがオペレーティング・システム・レベルのコンポーネントであってもよい。幾つかの場合では、あるコンポーネントの別のコンポーネントへの接続が、複数のコンポーネントが単一のハードウェア・プラットフォーム上で動作している近接接続であってもよい。他の場合では、接続を、長距離にわたるネットワーク接続を介して行ってもよい。各実施形態において、様々なハードウェア、ソフトウェア、相互接続アーキテクチャを使用して、説明した機能を実現してもよい。
【００１９】
実施形態１００は、メモリ・オブジェクトを管理して電力を節約し性能を最適化できるコンピュータ・システムを示す。実施形態１００は、プロセッサおよびメモリを有しうる任意の種類のコンピューティング装置を表すことができる。例えば、デスクトップ・コンピュータ、サーバ・コンピュータ、ハンドヘルド・コンピューティング装置、携帯電話、携帯情報端末、またはプロセッサおよびメモリを有する他の任意の装置が挙げられる。
【００２０】
実施形態１００は、低頻度に使用されるメモリ・オブジェクトを、低電力状態で動作できるメモリ領域に移すことにより、電力と性能を最適化する。頻繁に使用されるメモリ・オブジェクトを、高電力で動作できるメモリ領域に集約することもできる。
【００２１】
基本最適化ルーチンが、オブジェクトが低頻度にアクセスされる場合は、当該オブジェクトを低電力メモリ領域に配置する。より複雑なアルゴリズムが、様々なレベルの履歴データ、メモリ・オブジェクトを作成して使用するアプリケーションからの入力、性能および電力消費の監視を使用して最適な配置を見つけてもよい。
【００２２】
多種多様なメモリ技術があり、各技術が様々な特性を有するかもしれない。一般に、多種の揮発性メモリでは、当該メモリをリフレッシュするために少量の電力を消費し、読書き動作を行うときに大量の電力を消費しうる。多くのメモリ技術では、低電力状態から高電力状態への推移が、要求に応答するのに幾分遅延する原因となりうる。したがって、低電力状態で動作するメモリ装置は、電力をあまり消費しないが、性能がよくないかもしれない。かかる動作のより詳細な説明は、後に本明細書で提示する実施形態２００で行う。
【００２３】
一般に、メモリ装置を低電力レベルで動作させると、それに関連して性能コストが発生しうる。性能コストを最小化するためには、低頻度でアクセスされるメモリ・オブジェクトまたは遅い応答時間に耐えうるメモリ・オブジェクトを、低電力レベルで動作するメモリ装置に集約する。
【００２４】
メモリ管理システムが、メモリを幾つかの異なる方法で管理し、様々な最適化機構を使用してもよい。これらは、関連するアプリケーション、使用履歴、メモリ装置の種類、または他の因子に基づいて変化してもよい。
【００２５】
単純なバージョンのメモリ管理システムは、メモリ・ブロックを監視して、頻繁にアクセスされるメモリ・ブロックとあまり頻繁にアクセスされないメモリ・ブロックを識別する。かかるバージョンは、メモリのページのような各メモリ・ユニットの履歴を追跡して、当該メモリ・ブロックがどのくらい頻繁に使用されているかを記述する統計値を決定してもよい。最適化ルーチンが、可能な限り多くのメモリ領域を低電力モードで動作するように、メモリ・オブジェクトの利用頻度に基づいて当該メモリ・オブジェクトを纏めて配置するように試みてもよい。
【００２６】
各メモリ・ユニットの履歴を追跡するバージョンでは、ある変更がメモリ装置に加えられた可能性があるときに、当該履歴を除去または削除してもよい。例えば、メモリ領域を高使用メモリ領域から低使用メモリ領域に再配置する場合、その領域に対する履歴を削除して、当該メモリがメモリ管理アルゴリズムに逆効果を及ぼさないようにすることができる。
【００２７】
実施形態１００のシステムは、プロセッサ１０６と様々なメモリ領域を備え、この場合、各メモリ領域は様々な電力状態で動作するように独立に制御可能である。
【００２８】
本明細書および特許請求の範囲の目的のため、メモリ領域は、様々な電力状態で動作するように独立に制御可能であるメモリの一部である。
【００２９】
多くのメモリ技術が、低電力状態と高電力状態で動作可能である。この場合、低電力状態はメモリを保持またはリフレッシュするために使用され、高電力状態は読書き動作を実施するために使用される。かかるメモリ技術では、メモリが高電力状態で高性能を示すことができ、低電力状態で低性能を示すことができる。他のメモリ技術では、様々な電力消費と様々な性能特性を有する追加の電力状態を有してもよい。
【００３０】
メモリ状態を支配する性能特性は、読書き要求を受け取ってから完了応答を送信するまでの待ち時間であろう。幾つかの実施形態では、最適化の間に他の性能特性を考慮してもよい。かかる特性には、帯域幅、アクセス時間、ランダム読書きサイクル時間、ページ・モードの読書きサイクル時間、低電力モードに入るかまたは低電力モードから出るのに必要な時間、および他の性能特性が含まれる。
【００３１】
幾つかの実施形態では、最適化ルーチンが、最適な配置を計算するためのメモリ装置の所定の性能特性を使用することができる。他の実施形態では、性能モニタが定期的に性能をテストまたは監視して、実際の性能値を使用できるようにしてもよい。
【００３２】
実施形態１００は、メモリ領域の幾つかの異なる構成を示す。幾つかの場合では、メモリ領域を幾つかのメモリ装置で構成する。他の場合では、単一の装置が複数のメモリ領域を有してもよく、さらに他の場合では、単一のメモリ装置を単一のメモリ領域として扱ってもよい。
【００３３】
メモリ装置は、ＤＩＰ、ＳＩＰＰ、ＳＩＭＭ、ＤＩＭＭ、および他のメモリ・パッケージのようなメモリ・パッケージとすることができる。かかるパッケージは、プリント基板および１つまたは複数の集積回路を備えている。他の実施形態では、メモリ装置は単一の集積回路または集積回路の一部であってもよい。ユニバーサル・シリアル・バスのメモリ装置のように、幾つかのメモリ装置がユーザによって容易に取外し可能であってもよい。
【００３４】
メモリ装置は、揮発性および不揮発性のメモリ装置を含めて、任意の種類のメモリ装置とすることができる。揮発性メモリ装置は、電力がメモリ装置に印加されている限り、メモリ内容を保持する。不揮発性メモリは、電力が装置から除去されたときでもメモリ内容を保持する。揮発性メモリの例としては、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ならびに他種の揮発性メモリが挙げられる。不揮発性メモリの例としては、フラッシュ・メモリ、ＥＥＰＲＯＭ（Ｅｌｅｃｔｏｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、および他の様々な種類の不揮発性メモリが挙げられる。
【００３５】
メモリ領域１０８は複数のメモリ装置１１０および１１２を備えることができる。メモリ装置１１０および１１２は例えば、個別のメモリ・パッケージであってもよい。メモリ装置１１４は、２つのメモリ領域１１６と１１８を備える単一の装置であってもよい。別の構成では、メモリ領域１２０が単一のメモリ装置１２２を備えてもよい。
【００３６】
多くのコンピューティング装置では、メモリを一般的な均一なやり方で構成してもよく、これは、性能の観点から同一であるかまたは同一と扱われる複数のメモリ領域があってもよいことを意味する。多くの場合、かかるメモリ領域を大きさが同一であるように構成してもよい。
【００３７】
幾つかのコンピューティング装置では、メモリが異種のメモリ装置または構成を備えてもよい。例えば、コンピューティング装置が、幾つかのＤＲＡＭメモリ装置をフラッシュ・メモリ装置とともに備えてもよい。
【００３８】
幾つかのコンピューティング装置では、複数のメモリ部分をストライプ構成またはインタリーブ構成で組み合わせてもよい。インタリーブまたはストライピングは、連続していないメモリ位置を用いてデータをメモリに格納することによって、メモリ性能を改善できる機構である。典型的なインタリーブ式のメモリ・アプリケーションでは、奇数のアドレスを第１のメモリ装置に配置し偶数のアドレスを第２のメモリ装置に配置することによって、２つのメモリ装置にアクセスする。多くの場合、特に大量のデータが関与する動作に対して、インタリーブ・メモリは非インタリーブ・メモリよりも高速な応答時間または広い帯域幅を有する。実際、２つのメモリ装置を用いたインタリーブ機構は、メモリ・システムにより処理できるデータの帯域幅を増大させることにより、スループットを増大させることができる。
【００３９】
典型的なメモリ・アクセスが複数の装置または領域にアクセスするように複数のメモリ装置またはメモリ領域を細かい粒度でインタリーブする場合、インタリーブした装置または領域のグループを、高電力状態または低電力状態を制御するための単一のメモリ領域として扱ってもよい。
【００４０】
幾つかの実施形態では、複数の装置をインタリーブ式メモリ動作向けに構成し、他のメモリ装置を非インタリーブ式として構成してもよい。典型的なデスクトップ、ラップトップ、またはサーバ・コンピュータでは、コンピュータのメモリ構成を当該コンピュータの起動前に設定してもよい。幾つかの装置では、かかる構成をＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）レベルの構成として設定してもよい。
【００４１】
各メモリ領域が様々な電力状態で動作可能であってもよい。典型的なＤＲＡＭメモリ装置では、読書き動作を高電力状態で行うことはできるが、同じ動作を、メモリ装置が低電力状態の場合は実施できないかもしれない。他の装置では、様々な電力状態で様々な性能および様々な機能を有するかもしれない。例えば、幾つかの装置では、低電力状態では読取り動作が可能だが、書込み動作は可能ではないかもしれない。別の例では、幾つかのメモリ装置で、読書き動作を低電力レベルで行うことはできるが、それは高電力状態の時よりも応答時間が遅く、性能特性も異なるかもしれない。
【００４２】
幾つかのメモリ技術では、メモリ装置が複数の電力状態を有してもよく、それらの各々により、それぞれの性能特性を有する様々な動作が可能であってもよい。
【００４３】
様々な技法およびアーキテクチャを使用して、メモリ領域が低電力状態に出入りする時を制御してもよい。幾つかの実施形態では、メモリ領域が、当該メモリ領域へのアクセスを監視し一定期間何らアクセスがなかった場合に電力状態を下げるコントローラを有してもよい。読書き動作要求を受け取ると、当該コントローラは電力レベルを上げて当該要求に応答する。メモリ装置に関する動作がない時間の後、当該コントローラが当該メモリ装置を低電力状態に入らせてもよい。多くの実施形態では、かかるコントローラは、外部入力がなくとも動作できるハードウェア・コンポーネントであってもよい。
【００４４】
例として、メモリ領域１０８の電力状態を管理できるメモリ・コントローラ１２４が挙げられる。別の例では、メモリ・コントローラ１２６は、メモリ装置１１４のコンポーネントまたは組込み機能であってもよい。さらに別の例として、プロセッサ１０６の一部でありうるメモリ・コントローラが挙げられる。
【００４５】
幾つかの実施形態では、メモリ・コントローラが外部入力を受け取ってもよい。例えば、メモリ・マネージャがメッセージまたは信号をメモリ・コントローラに送信して低電力状態に入ってもよい。かかる通信を読書き動作の一部として送信するか、または、かかる通信が別個の通信であってもよい。
【００４６】
幾つかの実施形態では、様々な電力監視機構がハードウェア内に存在してもよい。電力監視機構が、特定の装置または装置群の電力消費を即時に、定期的に、または他の方法で測定可能であってもよい。電力監視機構を用いて、様々な動作を監視するときに電力消費または省電力を決定してもよく、当該電力監視機構をメモリ・オブジェクトの配置に関する最適化アルゴリズムの一部として使用してもよい。
【００４７】
例えば、電力モニタ１２８が、メモリ装置１１０および１１２の電力消費を監視または測定可能であってもよい。幾つかの場合、電力モニタ１２８が、各メモリ装置１１０および１１２の電力消費を独立に、または、集合的としてのみ、測定可能であってもよい。かかる電力監視装置はメモリ装置１１０および１１２に対する電力供給または電力配分システムのコンポーネントであってもよい。別の例では、メモリ装置１１４が、メモリ装置１１４の電力消費を測定できる電力モニタ１３０を備えてもよい。
【００４８】
さらに別の例では、電力モニタ１３２が、システムにわたって電力消費を測定できるシステム規模の電力監視システムであってもよい。構成に応じて、電力モニタ１３２が、個々のコンピュータ・コンポーネント、コンポーネント群、メモリ装置、メモリ装置群、または他のコンピュータ・システムの部分の電力消費を区別し、測定できてもよい。
【００４９】
プロセッサ１０６が、ソフトウェア１０４の様々なコンポーネントを実行してもよい。実施形態１００で説明したソフトウェア・コンポーネントは、メモリ内のオブジェクトを管理するために使用できるコンポーネントの例である。例えば、他の実施形態が、様々なソフトウェア構成を有してもよく、または、機能の一部をハードウェアで実現してもよい。
【００５０】
典型的なコンピューティング・システムでは、オペレーティング・システム１３６が低レベルの機能を実行し、様々なアプリケーション１３８が高レベルの機能を実行する。一般に、オペレーティング・システムがアプリケーションに対するハードウェア・インタフェースとして動作する。アプリケーションはユーザに対して特定の機能を実行するコンピュータ・プログラムである。オペレーティング・システムはしばしば、メモリ管理、ネットワーキング、セキュリティ、ファイル・システム、およびアプリケーションが用いる他の機能のような機能を提供する。
【００５１】
アプリケーション１３８が、ハードウェア１０２内部の様々なメモリ装置に格納できる多種多様なメモリ・オブジェクト１４０を作成してもよい。メモリ・オブジェクト１４０は、１ビットと同じくらい小さくともよく、多ギガバイトのデータを含む大規模データベースであってもよい。幾つかの場合、メモリ・オブジェクトに対する読書き動作が、メモリ・オブジェクト全体を読書きすることであってもよい。他の場合では、読書き動作が、メモリ・オブジェクトの一部のみを読書きすることであってもよい。
【００５２】
メモリ・マネージャ１３４がメモリ位置を管理するためのオペレーティング・システム１３６の一部として動作して、電力消費と性能を最適化する。他の実施形態では、メモリ・マネージャ１３４の機能の一部または全部がアプリケーション１３８であってもよく、さらに他の実施形態では、メモリ・マネージャ１３４の機能の一部または全部をハードウェア・コンポーネントとして有してもよい。
【００５３】
多くの場合、メモリ・マネージャ１３４が、メモリ装置に関する特徴の決定を支援するマッピング・エンジンを含む。例えば、マッピング・エンジンが、読出し問合せ中の待ち時間をテストする。次いでメモリ装置が低電力状態になり、その後メモリ装置が高電力状態になる。マッピング・エンジンがかかるテストをアクティブなテストとして実施し、この場合、マッピング・エンジンがメモリ装置を特定の状態にして、次いで読書き動作を実施して、測定を行う。幾つかの実施形態では、マッピング・エンジンが受動的に動作して、他のアプリケーションの読書き問合せを監視して待ち時間や他のパラメータを測定してもよい。
【００５４】
メモリ・マネージャ１３４は、仮想メモリ・アドレスと物理メモリ・アドレスの間のマッピングを保持する。当該マッピングにより、アプリケーションが仮想アドレスを用いてメモリ・オブジェクトを参照できるようにしてもよい。メモリ・オブジェクトをあるメモリ領域から別のメモリ領域に移す場合、仮想アドレスに影響を及ぼすことなくマッピング内の物理アドレスが変化する。
【００５５】
メモリ・マネージャ１３４は、メモリ領域内に格納したメモリ・オブジェクトを監視し、メモリ・オブジェクトを別のメモリ領域に移して電力利用量を最適化する。
【００５６】
メモリ・マネージャ１３４は幾つかの異なるアーキテクチャで動作する。ここでは２つの異なるアーキテクチャを論ずるが、他のアーキテクチャを使用することもできる。第１のアーキテクチャでは、メモリ・マネージャ１３４がメモリに含まれる全てのメモリ・オブジェクトを監視する。かかるメモリ・マネージャは、低頻度にアクセスされるメモリ・オブジェクトのためのメモリ領域と、高頻度にアクセスされるメモリ・オブジェクトのための他のメモリ領域とを識別することによって配置を最適化し、ついで低頻度に使用されるメモリ・オブジェクトを集約して、これらのメモリ領域を低電力状態で動作させて電力を節約する。
【００５７】
かかるアーキテクチャでは、全てのメモリ領域を評価して低電力状態および高電力状態の候補を選択し、少なくとも１つのメモリ領域が低電力状態で動作するようにメモリ・オブジェクトを移す。かかるアーキテクチャでは、広範囲の最適化を行って、性能および／または省電力の両方のためにメモリ・オブジェクトの位置をカスタマイズする。
【００５８】
別のアーキテクチャでは、メモリ・マネージャ１３４がメモリ領域のサブセット内のメモリ・オブジェクトを監視し管理する。かかるメモリ・マネージャはメモリ領域を監視して高頻度にアクセスされるメモリ・オブジェクトを識別し、次いでこれらのメモリ・オブジェクトを他のメモリ領域に移す。このアーキテクチャでは、メモリ・マネージャは、メモリ領域を高電力状態で動作させている可能性があるメモリ・オブジェクトを除去するように動作する。
【００５９】
第２のアーキテクチャでは、より小規模の１組のオブジェクトを監視して、第１のアーキテクチャより少ないオーバヘッドと複雑度で何らかの最適化を行うことができる。１実施形態では、メモリ領域をＢＩＯＳまたは別のセットアップ機構で低電力メモリ領域として識別してもよい。この選択結果をコンピュータ・システムが動作中に一定に保ってもよいし、変更してもしなくてもよい。
【００６０】
第２のアーキテクチャでは、高頻度のメモリ・オブジェクトのみを識別し、これらのオブジェクトを他のメモリ領域に移す。幾つかの実施形態ではさらに、低頻度のメモリ領域に移すべき他のメモリ領域内の低頻度のメモリ・オブジェクトを識別する。
【００６１】
メモリ・マネージャ１３４は、オブジェクトのアクセスならびに様々なメモリ領域の性能を監視できる性能モニタ１４４を有する。性能メトリクスを履歴データベース１４８に格納してもよい。
【００６２】
メモリ・オブジェクトのアクセスを監視し特徴付けて、適切なメモリ領域に配置するメモリ・オブジェクトを識別する。いくつかの実施形態では、性能モニタ１４４がメモリ領域ごとの統計値を追跡してもよい。かかる実施形態では、各メモリ・オブジェクトの各メモリ・ページが、当該メモリ・オブジェクトへのアクセスを示す１組の統計値を有してもよい。他の実施形態では、性能モニタ１４４が読書き動作を監視して、頻繁にアクセスされるメモリ・オブジェクトを識別してもよい。かかる実施形態では、別々の統計値をメモリ・オブジェクトごとまたはメモリ内のメモリ・ページごとに保持してもしなくともよい。
【００６３】
１実施形態で高アクセス頻度のオブジェクトを識別した場合、残りのオブジェクトが低頻度にアクセスされるオブジェクトであると仮定してもよい。かかる実施形態では、メモリ内のオブジェクトに関してより少ない統計値と情報を保持してもよい。
【００６４】
性能モニタ１４４はまた、待ち時間、応答時間、スループット、またはメモリ領域の他の性能パラメータを測定してもよい。かかる実施形態では、性能モニタ１４４が、メモリ領域の実際の性能特性を最適化して使用するために記憶してもよい。いくつかのかかる実施形態では、様々なメモリ・オブジェクトの最適化位置を実装する前後にシステムの性能特性を測定してもよい。かかる測定値を使用して、最適化した位置が期待通りに動作していることを検証することができ、新たな位置が以前の設定と同様に動作しない場合には、以前の位置に戻ってもよい。
【００６５】
メモリ・マネージャ１３４が最適化器１４２を備えてもよい。最適化器１４２は、メモリ・オブジェクトの配置を識別して最適化し、これらのメモリ・オブジェクトを最適化された配置に従って移すことができる。最適化器１４２が、様々な入力情報を使用して最適化を実施してもよい。幾つかの実施形態では、履歴データベース１４８に問い合わせて高頻度にアクセスされるメモリ・オブジェクトまたは低頻度にアクセスされるメモリ・オブジェクトを識別してもよい。
【００６６】
幾つかの実施形態では、より高いアクセスまたはより低いアクセスを有する特定のメモリ・オブジェクトを識別できる、様々なアプリケーション１３８のインジケータを含んでもよい。例えば、アプリケーションが、アクティブ・モードからスリープ・モードまたは休眠モードへ動作状態を変更していてもよい。かかる変化が生ずると、アプリケーション１３８はメモリ・マネージャ１３４および最適化器１４２と直接または間接に通信して、アプリケーションに関連付けられたメモリ・オブジェクトを適切なメモリ領域に移すことができる。
【００６７】
幾つかのメモリ・マネージャ１３４が電力モニタ１４６を備えてもよい。電力モニタ１４６を使用して、メモリ領域が高電力状態または低電力状態にある間に、実際の電力消費データを収集する。電力モニタ１４６が、様々なハードウェア電力モニタ１２８、１３０、および１３２とインタフェースし通信してもよい。
【００６８】
幾つかの実施形態では、メモリ・マネージャ１３４が電力モニタ１４６を使用して省電力量を計算してもよい。１つのかかる実施形態では、メモリ・マネージャ１３４が、低電力状態にある間、およびメモリ装置が高電力状態にあるときに再度、メモリ装置の電力消費を測定してもよい。電力消費の差分に装置が低電力状態にあった時間を乗じたものを計算して適切な省電力を計算してもよい。
【００６９】
幾つかの実施形態では、変更を実施した後に性能と省電力量を検証してもよい。かかる実施形態では、性能と省電力量を、メモリ・オブジェクトを異なるメモリ領域に移す前および後の両方で測定し、適切な性能または省電力量が達成されない場合には、以前の構成に戻ってもよい。
【００７０】
幾つかの実施形態では、ＢＩＯＳを使用して、オペレーティング・システム１３２を起動する前にハードウェア１０２を構成してもよい。ＢＩＯＳを使用して様々なメモリ領域を構成してもよい。幾つかの実施形態では、ＢＩＯＳ設定を使用して、幾つかのメモリ領域をインタリーブされているとして識別してもよく、特定のメモリ領域を低電力状態動作の候補として識別してもよい。
【００７１】
ＢＩＯＳ１５０はまた、起動テスト手続き１５２を有してもよい。起動テスト手続き１５２が様々なメモリ領域の性能測定を行ってもよい。起動テスト手続き１５２が各メモリ領域を循環して、メモリ領域が高電力状態にある間、および再度メモリ領域が低電力状態にある間に読書き動作を行ってもよい。各メモリ領域をこのようにテストして、最適化アルゴリズムまたはルーチンによる使用のためにメモリ領域の性能を記憶してもよい。
【００７２】
図２は、メモリ装置またはメモリ領域に関する、時間対電力のグラフを示す実施形態２００の図である。実施形態２００は、正しい縮尺で描かれていないが、多種多様なメモリ技術の実際の動作を反映できる一般的な電力消費と性能の概念を示すために用いられる。
【００７３】
実施形態２００の図は典型的なＤＲＡＭメモリ装置の１例である。他の装置が別の電力消費特性を有してもよい。
【００７４】
実施形態２００は、時間２０２に関する消費電力２０４を示す。電力消費２０６を表す曲線が示されている。
【００７５】
曲線の初めには、高電力状態２０８が示されている。時刻２１０で読書き動作を開始でき、当該動作は時刻２１４で終了する。動作中は、メモリ装置は領域２１２で示す高レベルの電力を消費する。当該動作の後、装置は高電力状態２０８に留まることができる。
【００７６】
時刻２１４までの動作は、メモリ装置が高電力状態２０８にある間の典型的な読書き動作を示す。かかる動作の間、待ち時間２１６が、時刻２１０および２１４が示すようにコマンドを受信しそれに応答するまでの時間を反映する。
【００７７】
多くの実施形態では、メモリ・コントローラが、高電力状態２０８にあるメモリ装置を監視し、当該装置に時刻２１８で低電力状態２２４に入らせてもよい。多くのかかる実施形態では、時刻２２０で示すように、低電力状態２２４に入る前に、動作がない所定の時間待機してもよい。
【００７８】
典型的なメモリ装置が低電力状態２２４にあるときは、当該装置が読書き要求に応答できない可能性がある。幾つかのメモリ装置が低電力状態２２４にある幾つかの動作を実施可能な場合があるが、他の動作を高電力状態２０８にあるときにのみ実施してもよい。
【００７９】
時刻２２６で、読書き動作を受け取ることができる。装置が低電力状態２２４にあるので、装置は作動期間２２７の間に高電力レベル２２８を消費する。作動期間２２７の後、装置は期間２２９の間に当該読書き動作を処理し、時刻２３０で高電力状態２０８に戻ることができる。
【００８０】
読書き動作を時刻２２６で受け取ったとき装置は低電力状態２２４にあるので、当該要求に応答するための待ち時間２３２は、装置が高電力状態２０８にあったときの待ち時間２１６よりも非常に長くなるかもしれない。増大した応答時間２３２は、装置が低電力状態で動作するときに直面する性能因子でありうる。
【００８１】
図３は、メモリ・オブジェクトを管理するための方法を示す実施形態３００の流れ図である。実施形態３００は、実施形態１００のメモリ・マネージャ１３４のようなメモリ・マネージャによって実施できる方法の簡単な例である。
【００８２】
他の実施形態では別の並び、追加のまたは少ないステップ、および別の命名または用語を用いて同様な機能を実現してもよい。幾つかの実施形態では、様々な動作または様々な組の動作を他の動作と、同期にまたは非同期に並列に実施してもよい。ここで選択したステップは、幾つかの動作原理を簡潔に示すために選んだものである。
【００８３】
実施形態３００は、メモリ・マネージャによって実施できる最適化法を示す。実施形態３００の方法は、幾つかのメモリ領域を低電力モードで性能劣化を最小限に抑えて動作させるために使用できる方法の１例にすぎない。
【００８４】
実施形態３００の最適化により、様々なメモリ・オブジェクトを再配置して、省電力と性能が最適化できるようにする。低頻度に使用されるメモリ・オブジェクトを共通のメモリ領域に纏めて配置することによって、当該メモリ領域を低電力状態で動作させることができる。幾つかの実施形態では、最適化アルゴリズムが省電力と性能特性の間のトレードオフを実現してもよく、最適化アルゴリズムが、ユーザが省電力量または性能に対する重み因子を選択できるように変化する。
【００８５】
最適化アルゴリズムは、メモリ・オブジェクトの配置を決定するために使用される任意の種類のヒューリスティクス、プロセス、または機構とすることができる。幾つかの実施形態では、単純なヒューリスティクスを使用してもよく、他の実施形態では、多種多様な配置シナリオを評価して当該シナリオの１つを選択することによって、複雑な最適化を実施する。多くのかかる最適化では、性能コストおよび／または電力コストを、もしあれば省電力または性能の利益の観点から推定した利益とともに、シナリオごとに計算してしてもよい。さらに他の実施形態では、他の最適化機構を使用してもよい。
【００８６】
ブロック３０２で、メモリ・トポロジを決定する。メモリ・トポロジは、各メモリ領域と当該メモリ領域の様々な特性を識別することを含む。当該特性は、様々な実施形態で異なってもよく、メモリ領域の大きさと性能特性、各メモリ領域が占めるアドレス空間、メモリ領域の制御に用いられる機構、および他の因子を含む。
【００８７】
メモリ・トポロジはメモリ・バンク、メモリ・ランク、特定のＤＩＭＭ、メモリ・チャネル、メモリ回路、集積回路装置、メモリ領域に対する母線または制御、およびメモリ構成を定義する他の要素の定義と構成を含む。メモリ・トポロジの定義が様々な実施形態に対して異なってもよく、当該定義を、メモリ・マネージャが装置内に有する最適化の種類と制御のレベルに対してカスタマイズしてもよい。幾つかの場合、メモリ・マネージャがメモリ・オブジェクトを正確な制御レベルで管理する。例えば、メモリ・オブジェクトが格納可能な特定のメモリ回路を識別する。他の場合では、メモリ・マネージャがより粗いレベルの制御レベルを行う。
【００８８】
幾つかの実施形態では、異なるメモリ領域が異なる性能特性を有してもよく、これらの性能特性を用いてメモリ・オブジェクトの配置を最適化する。例えば、メモリ領域が２つのインターレース式ＤＩＭＭメモリ装置からなる場合、そのメモリ領域が、非インターレース式ＤＩＭＭメモリを有する他のメモリ領域よりも高速な応答時間と良好なスループットを有してもよい。したがって、インターレース式ＤＩＭＭメモリ装置を含むメモリ領域を、高頻度にアクセスされるメモリ・オブジェクトの候補とみなし、他のメモリ領域が、低電力状態動作かつ低頻度にアクセスされるメモリ・オブジェクトの候補であってもよい。
【００８９】
メモリ・トポロジは、メモリ・マネージャがメモリ領域を制御するための機構を備えてもよい。かかる機構がメッセージング機構または通信機構を備えてもよい。当該メッセージング機構または通信機構により、メモリ・マネージャがメモリ領域に高電力状態または低電力状態で動作するよう要求する。
【００９０】
幾つかの実施形態では、ブロック３０２で決定したトポロジを、オペレーティング・システムをロードし実行し始める前またはその時に行いうるＢＩＯＳ動作または起動動作中に決定する。当該トポロジを、各メモリ領域を検出し、問合せを実行し、トポロジ情報を収集できるＢＩＯＳレベルまたはオペレーティング・システム・レベルのルーチンにより決定する。
【００９１】
幾つかのかかる実施形態では、性能テストをメモリ領域の各々に行って、当該メモリ領域の性能メトリックを決定する。かかるテストでは、メモリ領域を低電力状態に設定し、当該メモリ領域に対する読書き要求の待ち時間を測定して、当該メモリ領域が高電力状態に設定されたときに同様のテストを行う。
【００９２】
ブロック３０４で、メモリ・オブジェクトを監視して、アクセス頻度、性能、および電力消費を求める。ブロック３０４が、最適化ルーチンによって使用できる多種多様な監視される因子を含む。
【００９３】
ブロック３０６で最適化を行わない場合、プロセスはブロック３０４に戻ってアクセス頻度と他の因子の履歴を生成する。幾つかの実施形態では、性能および電力消費が装置の作業負荷とメモリに格納されたデータとともに変化する。かかる実施形態では、個々のメモリ・オブジェクトまたはメモリ・オブジェクト群に対して性能および電力消費のデータを収集して格納する。
【００９４】
別の実施形態では、ブロック３０６での最適化を別の機構で引き起こしてもよい。
【００９５】
幾つかの実施形態では、最適化を定期的に、例えば、数分おき、毎時間、毎日、または他の何らかの所定の基準で、実施してもよい。かかる実施形態では、ブロック３０６でタイマまたは他の機構により最適化を起動してもよい。
【００９６】
幾つかの実施形態では、何日も、何週間も、何月も継続的に動作できるサーバまたは他のコンピュータのように、装置が長期間動作する。かかる装置にはしばしば、装置への負荷が変動する定期的な期間がある。しばしば、これらの期間は予測可能である。例えば、ビジネスで使用するサーバは通常の営業時間中はビジーであるかもしれないが、夜間や非営業時間中は軽度に使用されるかもしれない。かかるサーバは何らかの動作、例えばバックアップ動作を夜に行うことができる。かかるサーバには、装置の利用が変化しうる予測可能な時間があり、利用が変化する前または利用が変化した直後に最適化を行う。
【００９７】
かかる実施形態では、性能モニタが装置の定期的な利用を監視して、装置の過去の履歴に基づいて最適化の実行が可能な時を予測する。
【００９８】
幾つかの実施形態では、アプリケーションにおける変化が、最適化を実施しうることを示唆してもよい。性能モニタが、モニタの特定のアプリケーションまたは装置の一般的な計算動作を監視して、１つまたは複数のアプリケーションの動作が増えたかまたは減ったことを判定する。動作の変化に基づいて、最適化を行う。
【００９９】
幾つかの実施形態では、アプリケーションからの直接的な通知に基づいて最適化を引き起こしてもよい。例えば、スリープ・モードから出て広範囲の計算を実行するようにトリガされたアプリケーションが、警告、トリガ、または他のインジケータをメモリ・マネージャに送信して、アプリケーションの状態変化に基づいてメモリ位置を最適化する。
【０１００】
ブロック３０８で、最適化の範囲を決定する。幾つかの実施形態では、最適化を特定のメモリ領域、特定の特性を有するメモリ・オブジェクト、または他の範囲に対して実施してもよい。
【０１０１】
幾つかの場合、最適化を全てのメモリ領域に対して行って、全てのメモリ・オブジェクトを考慮してもよい。かかる実施形態では、ブロック３１０での最適化により、全てのメモリ・オブジェクトの利用履歴を分析して、高頻度に使用されるメモリ・オブジェクトと低頻度に使用されるメモリ・オブジェクトを識別し、これらのメモリ・オブジェクトに対するメモリ領域を識別し、当該メモリ・オブジェクトを各メモリ領域に移す。多くの場合、かかる最適化では、多種多様な配置シナリオを評価して、性能および電力の因子に基づいて最適化された配置シナリオを選択する。
【０１０２】
幾つかのかかる実施形態では、同様な利用頻度を有するメモリ・オブジェクトに対して幾つかのメモリ領域グループを識別してもよい。幾つかの場合では、メモリ・オブジェクトを、他のメモリ・オブジェクトとは独立に利用頻度メトリクスに基づいてメモリ領域に集約してもよい。幾つかの場合、メモリ・オブジェクトを、利用頻度が他のメモリ・オブジェクトと相関するメモリ領域に集約してもよい。例えば、幾つかのメモリ・オブジェクトが、オブジェクトが同時に頻繁に利用されるが同時に休眠状態であるかもしれないという類似の利用パターンを有してもよい。かかるオブジェクトを同じメモリ領域に集約して省電力量を最大化する。幾つかの実施形態では、かかるメモリ・オブジェクトを単一のアプリケーションに関連付け、そのアプリケーションに対する関係によって識別してもよい。他の実施形態では、メモリ・オブジェクトの利用履歴を、同時に高頻度および低頻度に利用されるメモリ・オブジェクトのグループと比較してもよい。
【０１０３】
幾つかの実施形態では、特定の種類のデータに対して、または特定のアプリケーションと関連付けられたデータに対して、最適化を行ってもよい。かかる場合、ブロック３１０の最適化では、指定の種類のデータを有するか、または指定のアプリケーションと関連付けられたメモリ・オブジェクトの移動のみを考慮する。かかる最適化ルーチンでは、高電力状態および低電力状態のメモリ領域を識別し、それに従ってメモリ・オブジェクトを移す。
【０１０４】
幾つかの実施形態では、高頻度にアクセスされるメモリ・オブジェクトを識別しこれらのメモリ・オブジェクトを指定のメモリ領域にグループ化することによって最適化ルーチンを動作させてもよい。反対に、幾つかの実施形態は、低頻度にアクセスされるメモリ・オブジェクトを識別しこれらのオブジェクトをしばしば低電力状態にあるメモリ領域に移すように動作する。かかる実施形態では、他のメモリ領域のメモリ・オブジェクトを識別して、識別したメモリ領域に移す。
【０１０５】
他の実施形態では、メモリ領域を検証して当該メモリ領域から移すべきメモリ・オブジェクトを識別する最適化ルーチンを使用してもよい。例えば、指定された高頻度にアクセスされるメモリ領域を分析して、高頻度にアクセスされないメモリ・オブジェクトを識別し、これらのメモリ・オブジェクトを他のメモリ領域に移すことを試みる。別の例では、低電力状態のメモリ領域として指定されたメモリ領域を分析して、当該メモリ領域内の高頻度にアクセスされるメモリ・オブジェクトを識別する。最適化ルーチンがこれらのメモリ・オブジェクトを他のメモリ領域に移すことを試みる。
【０１０６】
特定のアプリケーションまたは特定の種類のデータに対して最適化が実施される実施形態では、これらのメモリ・オブジェクトを分析して、メモリ・オブジェクトが格納されるメモリ領域がこれらのオブジェクトに対して適当であるかどうかを判定してもよい。例えば、かかる最適化により、様々なメモリ領域を高頻度にアクセスされるかまたは低頻度にアクセスされるとして識別し、次いで識別したメモリ・オブジェクトを比較してメモリ・オブジェクトの利用履歴がメモリ領域と互換性があるかどうかを判定する。非互換のメモリ・オブジェクトを別のメモリ領域に移すことによって、任意の非互換性を是正することができる。
【０１０７】
本明細書全体にわたって、メモリ領域またはメモリ・オブジェクトを２つのクラス、すなわち、高頻度にアクセスされるものと低頻度にアクセスされるものとして指定することによって、最適化ルーチンを例示した。かかる指定を、最適化を説明するための簡単な方法として用いたが、これは限定を意図したものではない。幾つかの実施形態では、メモリ・オブジェクトおよびメモリ領域のアクセス頻度を２つ、３つ、４つ、またはそれより多数のレベルまたはカテゴリにグループ化してもよい。例えば、メモリ・オブジェクトおよびメモリ領域を高頻度、中頻度、低頻度のカテゴリにグループ化することができる。
【０１０８】
幾つかの実施形態では、メモリ・オブジェクトに対するアクセスの種類が性能および省電力に影響を及ぼすかもしれない。かかる実施形態では、同様のアクセスの種類を有するメモリ・オブジェクトをメモリ領域に集約してもよい。例えば、幾つかの実施形態では、書込みコマンドを用いて頻繁にアクセスされるメモリ・オブジェクトとは別に、読取りコマンドを用いて頻繁にアクセスされるメモリ・オブジェクトを纏めてグループ化してもよい。幾つかの実施形態では、別の例として、読取り専用データを別個にグループ化してもよい。幾つかの実施形態では、メモリ・オブジェクトを、論理データ型、文字列データ型、数値データ型、または他の複雑なデータ型のようなデータ型によって、かかるデータ型をメモリ・マネージャに公開できる場合にはグループ化してもよい。別の例では、特定のアプリケーションによって作成されたメモリ・オブジェクトをグループ化してもよい。
【０１０９】
ブロック３１０での最適化の結果、ブロック３１２で移すべきオブジェクトが識別され、高頻度アクセスおよび低頻度アクセス向けの候補メモリ領域が識別される。低頻度にアクセスされるメモリ領域は、可能な限り頻繁に低電力モードで動作しうるメモリ領域である。移すべきメモリ・オブジェクトを識別した後、ブロック３１４で低頻度にアクセスされるオブジェクトを低電力領域に移し、ブロック３１６で高頻度にアクセスされるオブジェクトを高頻度にアクセスされるメモリ領域に移す。
【０１１０】
ブロック３１４と３１６で変更を実施した後、ブロック３１８でシステムを動作させる。ブロック３１８の動作中に、低頻度にアクセスされるメモリ・オブジェクトを有するメモリ領域を、ブロック３１４と３１６での変更の前よりも頻繁に低電力状態で動作させてもよい。ブロック３２２でかかる改善が見出された場合、変更をブロック３２６で保持し、プロセスはブロック３０４に戻る。かかる改善がブロック３２２で検出されなかった場合は、ブロック３２４で当該変更を以前の構成に戻し、プロセスはブロック３０４に戻る。
【０１１１】
ブロック３２２で、ブロック３１０の最適化の性能と省電力量を検証して、最適化の目標が達成されているかどうかを判定する。幾つかの実施形態では、最適化の目標が純粋に省電力量であるか、または、省電力量と性能の組合せである。これらの目標が達成されていない場合には、システムはブロック３２４で変更をキャンセルする。
【０１１２】
本発明の以上の説明は、例示および説明の目的で提示したものである。それは、包括的であることを意図するものではなく、本発明を開示した形に厳密に限定しようとするものでもなく、以上の教示事項に照らして他の修正および変形が可能でありうる。実施形態は、本発明の原理とその実用的な応用例を最も良く説明し、それにより当業者が、考えうる特定の利用に最も適するように本発明を様々な実施形態および様々な修正で最もよく利用できるようにするために選択し説明したものである。添付の特許請求の範囲は、先行技術で限定される場合は除いて、他の代替的な実施形態を含むように解釈されることを意図している。
【図１】
2013508813.tif 000003
【図２】
2013508813.tif 000004
【図３】
2013508813.tif 000005
【国際調査報告】
2013508813.tif 000006
2013508813.tif 000007
2013508813.tif 000008