(57)【要約】デバイスは、メモリバンクに電力を供給するという指示を受け取り、そして、指示を受け取ることに基づいて、電力を遮断したメモリバンクに対応する電力スコアを決定する。各電力スコアは、電力を遮断したメモリバンクに電力を供給することと関連付けられる電力メトリックに対応する。デバイスは、複数の電力スコアに基づいて、選択されたメモリバンクに電力を供給する。【選択図】図１
2016500186.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサが、メモリバンクに電力を供給するという指示を受け取ることと、
前記プロセッサが、前記指示を受け取ることに基づいて、複数の電力を遮断したメモリバンクに対応する複数の電力スコアを決定することであって、前記複数の電力スコアの各々は、前記複数の電力を遮断したメモリバンクのうち電力を遮断した１つのメモリバンクに電力を供給することと関連付けられる電力メトリックに対応する、ことと、
前記プロセッサが、前記複数の電力スコアに基づいて、前記複数の電力を遮断したメモリバンクのうち選択されたメモリバンクに電力を供給することと、を含む、方法。
【請求項２】
前記電力メトリックは、
前記電力を遮断したメモリバンクに電力を供給することと関連付けられる電力消費、
前記電力を遮断したメモリバンクに電力を供給するために必要とされる時間量、
前記電力を遮断したメモリバンクによって報告されたエラー数、
前記電力を遮断したメモリバンクによって消費される電力量、
前記電力を遮断したメモリバンクと、前記電力を遮断したメモリバンクと関連付けられる構成要素との間の距離、
前記電力を遮断したメモリバンクへのアクセス数、
前記電力を遮断したメモリバンクに転送されるメモリブロック数、
前記電力を遮断したメモリバンクに対してネイティブである、電力を供給したメモリバンクに記憶されるメモリブロック数、または、
第１の電力を供給したメモリバンクに記憶された第１の非ネイティブのメモリブロック数と、第２の電力を供給したメモリバンクに記憶された第２の非ネイティブのメモリブロック数との予測差であって、前記選択されたメモリバンクに電力を供給することに起因する予測差、のうち少なくとも１つに基づく、請求項１に記載の方法。
【請求項３】
前記電力メトリックは、前記選択されたメモリバンクに電力を供給する前に測定された性能メトリックの値と、前記選択されたメモリバンクに電力を供給した後の前記性能メトリックの推定値との差に基づく、請求項１に記載の方法。
【請求項４】
各電力スコアは、前記複数の電力を遮断したメモリバンクと関連付けられる１組の電力メトリックに基づく、請求項１に記載の方法。
【請求項５】
前記指示を受け取ることは、
アプリケーションまたはプロセスを、前記複数の電力を遮断したメモリバンクと関連付けられるシステムによって開始するという指示を受け取ること、
アプリケーションまたはプロセスが前記システムによって開始されたという指示を受け取る指示を受け取ること、
前記選択されたメモリバンクに電力を供給することが、前記システムの電力消費を低減させるという指示を受け取ること、または、
前記選択されたメモリバンクに電力を供給することが、前記システムの性能を高めるという指示を受け取ること、のうち少なくとも１つに基づく、請求項１に記載の方法。
【請求項６】
前記指示を受け取ることは、電力を供給したメモリバンクと関連付けられる性能メトリックが閾値を満たすと判断することに基づき、
前記性能メトリックは、
メモリが前記電力を供給したメモリバンクから追い出された回数、
前記電力を供給したメモリバンクへのアクセス数、
前記電力を供給したメモリバンクと関連付けられるメモリミス数、
ダーティ情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、
非ネイティブ情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、
共有情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、または、
命令を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、のうち少なくとも１つに基づく、請求項１に記載の方法。
【請求項７】
前記性能メトリックは、複数の電力を供給したメモリバンクと関連付けられる１組の性能メトリックに基づく集計性能メトリックを備える、請求項６に記載の方法。
【請求項８】
メモリバンクに電力を供給するという指示を受け取り、
前記指示を受け取ることに基づいて、複数の電力を遮断したメモリバンクに対応する複数の電力スコアを決定し、前記複数の電力スコアの各々は、前記複数の電力を遮断したメモリバンクのうち電力を遮断した１つのメモリバンクに電力を供給することと関連付けられる電力メトリックに対応し、
前記複数の電力スコアに基づいて、前記複数の電力を遮断したメモリバンクのうち選択されたメモリバンクに電力を供給するための、１つ以上のプロセッサを備える、システム。
【請求項９】
前記電力メトリックは、
前記電力を遮断したメモリバンクに電力を供給するために必要とされる時間量、
前記電力を遮断したメモリバンクによって報告されたエラー数、
前記電力を遮断したメモリバンクによって消費される電力量、
前記電力を遮断したメモリバンクと、前記電力を遮断したメモリバンクと関連付けられる構成要素との間の距離、
前記電力を遮断したメモリバンクへのアクセス数、
前記電力を遮断したメモリバンクに転送されるべきメモリブロック数、
前記電力を遮断したメモリバンクに対してネイティブである、電力を供給したメモリバンクに記憶されるメモリブロック数、または、
第１の電力を供給したメモリバンクに記憶された第１の非ネイティブのメモリブロック数と、第２の電力を供給したメモリバンクに記憶された第２の非ネイティブのメモリブロック数との予測差であって、前記選択されたメモリバンクに電力を供給することに起因する予測差、のうち少なくとも１つに基づく、請求項８に記載のシステム。
【請求項１０】
前記電力メトリックは、前記選択されたメモリバンクに電力を供給する前に測定された性能メトリックの値と、前記選択されたメモリバンクに電力を供給した後の前記性能メトリックの推定値との差に基づく、請求項８に記載のシステム。
【請求項１１】
各電力スコアは、前記複数の電力を遮断したメモリバンクと関連付けられる１組の電力メトリックに基づく、請求項８に記載のシステム。
【請求項１２】
前記１つ以上のプロセッサは、前記指示を受け取ったときに、
アプリケーションまたはプロセスを、前記複数の電力を遮断したメモリバンクと関連付けられる構成要素によって開始するという指示を受け取ること、
アプリケーションまたはプロセスが前記構成要素によって開始されたという指示を受け取る指示を受け取ること、
前記選択されたメモリバンクに電力を供給することが、前記構成要素の電力消費を低減させるという指示を受け取ること、または、
前記選択されたメモリバンクに電力を供給することが、前記構成要素の性能を高めるという指示を受け取ること、のうち少なくとも１つを行う、請求項８に記載のシステム。
【請求項１３】
前記１つ以上のプロセッサは、前記指示を受け取ったときに、
電力を供給したメモリバンクと関連付けられる性能メトリックが閾値を満たすと判断することに基づいて、前記指示を受け取り、
前記性能メトリックは、
メモリが前記電力を供給したメモリバンクから追い出された回数、
前記電力を供給したメモリバンクへのアクセス数、
前記電力を供給したメモリバンクと関連付けられるメモリミス数、
ダーティ情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、
非ネイティブ情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、
共有情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、または、
命令を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、のうち少なくとも１つに基づく、請求項８に記載のシステム。
【請求項１４】
前記性能メトリックは、複数の電力を供給したメモリバンクと関連付けられる１組の性能メトリックに基づく集計性能メトリックを備える、請求項１３に記載のシステム。
【請求項１５】
命令を記憶するコンピュータ可読媒体であって、前記命令は、プロセッサによって実行されると、
メモリバンクに電力を供給するという指示を受け取ることと、
前記指示を受け取ることに基づいて、複数の電力を遮断したメモリバンクに対応する複数の電力スコアを決定することであって、前記複数の電力スコアの各々は、前記複数の電力を遮断したメモリバンクのうち電力を遮断した１つのメモリバンクに電力を供給することと関連付けられる電力メトリックに対応する、ことと、
前記複数の電力スコアに基づいて、前記複数の電力を遮断したメモリバンクのうち選択されたメモリバンクに電力を供給することと、
を前記プロセッサに行わせる１つ以上の命令を含む、コンピュータ可読媒体。
【請求項１６】
前記電力メトリックは、
前記電力を遮断したメモリバンクに電力を供給するために必要とされる時間量、
前記電力を遮断したメモリバンクによって報告されたエラー数、
前記電力を遮断したメモリバンクによって消費される電力量、
前記電力を遮断したメモリバンクと、前記電力を遮断したメモリバンクと関連付けられる構成要素との間の距離、
前記電力を遮断したメモリバンクへのアクセス数、
前記電力を遮断したメモリバンクに転送されるべきメモリブロック数、
前記電力を遮断したメモリバンクに対してネイティブである、電力を供給したメモリバンクに記憶されるメモリブロック数、または、
第１の電力を供給したメモリバンクに記憶された第１の非ネイティブのメモリブロック数と、第２の電力を供給したメモリバンクに記憶された第２の非ネイティブのメモリブロック数との予測差であって、前記選択されたメモリバンクに電力を供給することに起因する予測差、のうち少なくとも１つに基づく、請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
前記電力メトリックは、前記選択されたメモリバンクに電力を供給する前に測定された性能メトリックの値と、前記選択されたメモリバンクに電力を供給した後の前記性能メトリックの推定値との差に基づく、請求項１５に記載のコンピュータ可読媒体。
【請求項１８】
各電力スコアは、前記複数の電力を遮断したメモリバンクと関連付けられる１組の電力メトリックに基づく、請求項１５に記載のシステム。
【請求項１９】
前記１つ以上の命令は、前記指示を受け取ることを前記プロセッサに行わせるときに、前記プロセッサに、
アプリケーションまたはプロセスを、前記複数の電力を遮断したメモリバンクと関連付けられる構成要素によって開始するという指示を受け取ること、
アプリケーションまたはプロセスが前記構成要素によって開始されたという指示を受け取る指示を受け取ること、
前記選択されたメモリバンクに電力を供給することが、前記構成要素の電力消費を低減させるという指示を受け取ること、または、
前記選択されたメモリバンクに電力を供給することが、前記構成要素の性能を高めるという指示を受け取ること、のうち少なくとも１つを行わせる、請求項１５に記載のコンピュータ可読媒体。
【請求項２０】
前記１つ以上の命令は、前記指示を受け取ることを前記プロセッサに行わせるときに、前記プロセッサに、
電力を供給したメモリバンクと関連付けられる性能メトリックが閾値を満たすと判断することに基づいて、前記指示を受け取ることを行わせ、
前記性能メトリックは、
メモリが前記電力を供給したメモリバンクから追い出された回数、
前記電力を供給したメモリバンクへのアクセス数、
前記電力を供給したメモリバンクと関連付けられるメモリミス数、
ダーティ情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、
非ネイティブ情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、
共有情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、または、
命令を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、のうち少なくとも１つに基づく、請求項１５に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
中央処理ユニットは、情報にアクセスする平均時間を短縮するために、情報をキャッシュに記憶する。キャッシュは、一般的に、ランダムアクセスメモリ等のメインメモリよりも小さく、高速なメモリである。キャッシュは、多くの場合、最も頻繁に使用されるメインメモリの場所に記憶された情報のコピーを記憶する。キャッシュは、メインメモリよりも中央処理ユニットの近くに位置してもよく、このため、キャッシュに記憶された情報にアクセスするのに必要な時間および／またはエネルギーの量が減少する。
【発明の概要】
【課題を解決するための手段】
【０００２】
本発明のある態様の実施形態によれば、デバイスは、メモリバンクに電力を供給するという指示を受け取り、そして、指示を受け取ることに基づいて、電力を遮断したメモリバンクに対応する電力スコアを決定する。各電力スコアは、電力を遮断したメモリバンクに電力を供給することと関連付けられる電力メトリックに対応する。デバイスは、複数の電力スコアに基づいて、選択されたメモリバンクに電力を供給する。
【図面の簡単な説明】
【０００３】
【図１】本明細書で説明される例示的な実施形態の概要の図である。
【図２】いくつかの実施形態による、本明細書で説明される実施形態が実現され得るデバイスの例示的な構成要素の図である。
【図３】いくつかの実施形態による、図２で例示された１つ以上の構成要素に対応し得る例示的な構成要素の図である。
【図４】いくつかの実施形態による、メモリバンクに電力を供給するための例示的なプロセスの図である。
【図５】いくつかの実施形態による、メモリバンクと関連付けられる性能メトリックを記憶する例示的なデータ構造の図である。
【図６】いくつかの実施形態による、メモリバンクに電力を供給することをトリガーし得る条件を記憶する例示的なデータ構造例の図である。
【図７】いくつかの実施形態による、メモリバンクと関連付けられる電力メトリックを記憶する例示的なデータ構造の図である。
【図８】いくつかの実施形態による、メモリバンクに記憶される情報の特性を記憶する例示的なデータ構造の図である。
【図９】いくつかの実施形態による、図４で例示された例示的なプロセスに関連する例示的な実施形態の図である。
【図１０】いくつかの実施形態による、図４で例示された例示的なプロセスに関連する別の例示的な実施形態の図である。
【発明を実施するための形態】
【０００４】
例示的な実施形態の以下の詳細な説明は、添付の図面を参照する。異なる図面の同じ符号は、同じまたは類似の要素を特定し得る。
【０００５】
中央処理ユニット（「ＣＰＵ」）等のプロセッサは、ＣＰＵキャッシュに含まれるメモリバンク等のメモリバンクに情報を記憶し得る。節電するために、ＣＰＵは、メモリバンクのいくつかの電力を遮断し得る。しかしながら、メモリバンクの電力を遮断することは、ＣＰＵおよびメモリバンクを組み込んだシステムの性能を低下させ得る。したがって、ＣＰＵは、システムの性能を向上させるために、１つ以上のメモリバンクに電力を供給し得る。本明細書で説明される実施形態では、システムの性能および電力消費を最適化するために、いつメモリバンクに電力を供給するべきか、いくつのメモリバンクに電力を供給するべきか、および／または、どのメモリバンクに電力を供給するべきかを決定する場合に、ＣＰＵをサポートする。
【０００６】
本明細書で使用される場合、メモリバンクに「電力を供給すること」という用語（および「電力供給」、「電力を供給した」等の他の類似する用語）は、メモリバンクが情報を記憶するのに利用され得るように、メモリバンクの電力特性を調整することを指す。例えば、メモリバンクに電力を供給することは、電力（例えば、電流、電圧等）をメモリバンクに供給すること、および／または、メモリバンクをオンにすることを指し得る。別の例として、メモリバンクに電力を供給することは、第１の電力消費状態（例えば、オフ、スリープ、スタンバイ、ハイバネーション等）から、第２の電力消費状態（例えば、オン、アウェイク、レディ等）へのメモリバンクの移行を指してもよく、第２の電力消費状態でメモリバンクによって消費される電力量は、第１の電力消費状態でメモリバンクによって消費される電力量よりも多い。
【０００７】
本明細書で使用される場合、メモリバンクの「電力を遮断すること」という用語（および「電力遮断」、「電力を遮断した」等の他の類似する用語）は、メモリバンクが情報を記憶するのに利用されないように、メモリバンクの電力特性を調整することを指す。例えば、メモリバンクの電力を遮断することは、メモリバンクへの電力（例えば、電流、電圧等）の供給を終了すること、および／または、メモリバンクをオフにすることを指し得る。別の例として、メモリバンクの電力を遮断することは、第２の電力消費状態（例えば、オン、アウェイク、レディ等）から、第１の電力消費状態（例えば、オフ、スリープ、スタンバイ、ハイバネーション等）へのメモリバンクの移行を指してもよく、第１の電力消費状態でメモリバンクによって消費される電力量は、第２の電力消費状態でメモリバンクによって消費される電力量未満である。
【０００８】
図１は、本明細書で説明される例示的な実施形態１００の概要の図である。図１で例示されるように、実施形態１００は、１つ以上のプロセッサを含み、該プロセッサは、説明される実施形態において、Ｎ個のメモリバンク（Ｎ＞１）を含むＣＰＵキャッシュに接続されたＣＰＵ（例えば、Ｍ個のＣＰＵ、Ｍ≧１）を備える。いくつかの実施形態において、ＣＰＵキャッシュは、ＣＰＵ（およびその一部）に統合される。他の実施形態において、ＣＰＵキャッシュは、複数のＣＰＵによって共有される。ＣＰＵ以外のプロセッサも、本明細書で説明される実施形態を行うことができる。そのようなプロセッサとしては、例えば、グラフィックス処理ユニット（ＧＰＵ）、加速処理ユニット（ＡＰＵ）、アプリケーションプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）または同類のものが挙げられる。
【０００９】
実施形態１００で示されるように、ＣＰＵは、メモリバンクに電力を供給すると決定し、そして、電力を遮断している各メモリバンクの電力スコアを算出する。例示的な実施形態１００において、メモリバンク１，３は、電力を遮断しており、メモリバンク２，Ｎは、電力を供給している。例示的な実施形態において、メモリバンク１は、５という電力スコアを有し、メモリバンク３は、２という電力スコアを有する。電力スコアは、メモリバンクに電力を供給することに起因する性能の向上および／または電力コストを示す。例えば、メモリバンク１は、メモリバンク３よりも大きい性能の向上および／または少ない電力コストを提供することができ、そのことは、メモリバンク１，３と関連付けられる電力スコアに反映される。実施形態１００で示されるように、ＣＰＵは、メモリバンク１が、メモリバンク３よりも良い電力スコアを有すると判断し、そして、メモリバンク１に電力を供給する。このようにして、ＣＰＵは、異なるメモリバンクに電力を供給することと比較した場合に、より良好な性能の向上および／またはより少ない電力コストを提供するメモリバンクに電力を供給することができる。
【００１０】
図２は、本明細書で説明される実施形態が実現され得るデバイス２００の例示的な構成要素の図である。図２で例示されるように、デバイス２００は、バス２１０と、プロセッサ２２０と、メモリ２３０と、入力構成要素２４０と、出力構成要素２５０と、通信インターフェース２６０と、を含む。
【００１１】
バス２１０は、デバイス２００の構成要素間での通信を可能にするパスを含む。プロセッサ２２０は、命令を解釈および／または実行する処理デバイス（例えば、ＣＰＵ、ＧＰＵ、ＡＰＵ、ＡＳＩＣ、ＤＳＰ等）を含む。いくつかの実施形態において、プロセッサ２２０は、１つ以上のプロセッサコアを含む。加えて、または代替として、プロセッサ２２０は、処理ユニットの組み合わせを含む。
【００１２】
メモリ２３０としては、ＣＰＵキャッシュ、スクラッチパッドメモリ、および／または、プロセッサ２２０が使用する情報および／または命令を記憶する任意のタイプのマルチバンクメモリが挙げられる。加えて、または代替として、メモリ２３０としては、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、および／または、プロセッサ２２０が使用する情報および／または命令を記憶する任意のタイプの動的または静的記憶デバイス（例えば、フラッシュ、磁気または光メモリ）が挙げられる。
【００１３】
入力構成要素２４０としては、ユーザが情報をデバイス２００に入力することを可能にする構成要素（例えば、キーボード、キーパッド、マウス、ボタン、スイッチ等）が挙げられる。出力構成要素２５０としては、デバイス２００から情報を出力する構成要素（例えば、ディスプレイ、スピーカー、１つ以上の発光ダイオード（ＬＥＤ）等）が挙げられる。
【００１４】
通信インターフェース２６０としては、送受信機、および／または、個別の受信機および発信機等のように、送受信機のような構成要素が挙げられ、該構成要素は、デバイス２００が、有線接続、無線接続、または、有線接続および無線接続の組み合わせ等を介して、他のデバイスおよび／またはシステムと通信することを可能にする。例えば、通信インターフェース２６０としては、イーサネット（登録商標）インターフェース、光インターフェース、同軸インターフェース、赤外線インターフェース、無線周波数（ＲＦ）インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェース、または同類のものが挙げられる。
【００１５】
いくつかの実施形態において、デバイス２００は、本明細書で説明される種々の動作を行う。デバイス２００は、メモリ２３０等のコンピュータ可読媒体に含まれるソフトウェア命令を実行するプロセッサ２２０に応じて、かかる動作を行い得る。コンピュータ可読媒体は、非一時的なメモリデバイスとして定義され得る。メモリデバイスは、単一の記憶デバイス内の空間、または、複数の記憶デバイスにわたって広がる空間を含む。
【００１６】
いくつかの実施形態において、ソフトウェア命令は、別のコンピュータ可読媒体から、または、通信インターフェース２６０を介して別のデバイスからメモリ２３０に読み出される。メモリ２３０に記憶されたソフトウェア命令は、実行されると、プロセッサ２２０に、本明細書で説明される１つ以上のプロセスを行わせる。加えて、または代替として、本明細書で説明される１つ以上のプロセスを行うために、ソフトウェア命令の代わりに、または、ソフトウェア命令と組み合わせて、ハードワイヤード回路が使用される。したがって、本明細書で説明される実施形態は、ハードウェア回路およびソフトウェアの任意の特定の組み合わせに限定されない。
【００１７】
図２で例示される構成要素の符号は、説明の目的で提供される。実際に、デバイス２００は、図２で例示されるものと比べて、追加的な構成要素、より少ない構成要素、異なる構成要素、または、異なるように配設された構成要素を含み得る。
【００１８】
図３は、いくつかの実施形態において、図２のプロセッサ２２０またはメモリ２３０に対応する例示的な構成要素３００の図である。図３で例示されるように、構成要素３００は、メモリバンク３１０−１〜３１０−Ｎ（Ｎ＞１）（以下、総称してメモリバンク３１０、および、個々にメモリバンク３１０と称する）と、ＣＰＵ３２０と、メモリマネージャ３３０と、を含む。
【００１９】
メモリバンク３１０は、情報が記憶され得る記憶ユニットおよび／または記憶ブロックを含む。いくつかの実施形態において、メモリバンク３１０は、メモリ２３０に対応し、および／または、該メモリに組み込まれる。いくつかの実施形態において、メモリバンク３１０は、キャッシュおよび／またはスクラッチパッドメモリの論理記憶ユニットである。
【００２０】
本明細書で使用される場合、「ブロック」または「メモリブロック」という用語は、個々に読み出すこと、および／または、書き込むことができるセクション等のように、メモリバンク３１０のサブ区画、セクションまたは一部分を指す。例えば、メモリブロックは、キャッシュ、スクラッチパッドの固定サイズのブロックまたは他のマルチバンクメモリ等のキャッシュラインを指し得る。
【００２１】
ＣＰＵ３２０は、プロセッサ、マイクロプロセッサ、ならびに／または、命令を翻訳し、実行する任意の処理デバイスおよび／もしくは処理論理を含む。いくつかの実施形態において、ＣＰＵ３２０は、プロセッサ２２０に対応する。いくつかの実施形態において、ＣＰＵ３２０および／または別の構成要素（例えば、メモリマネージャ３３０）は、メモリ（例えば、メモリ２３０、ＣＰＵキャッシュ、スクラッチパッドメモリ等）を１組のメモリバンク３１０に分割する。いくつかの実施形態において、ＣＰＵ３２０は、複数のＣＰＵ、プロセッサ、および／または、メモリバンク３１０を共有するプロセッサコアを含む。
【００２２】
メモリマネージャ３３０は、メモリバンク３１０に電力を供給することと関連付けられる動作を行う。いくつかの実施形態において、メモリマネージャ３３０は、メモリバンク３１０に電力を提供すると決定し、そして、メモリバンク３１０と関連付けられる性能メトリックおよび／または電力メトリックに基づいて、電力を供給する１つ以上のメモリバンク３１０を選択する。加えて、または代替として、メモリマネージャ３３０は、選択されたメモリバンク３１０に電力を供給し、そして、記憶のために、別のメモリバンク３１０に記憶された情報を、選択されたメモリバンク３１０に転送する。ＣＰＵ３２０（およびその一部）に統合されているように例示されているが、いくつかの実施形態において、メモリマネージャ３３０は、ＣＰＵ３２０から分離されている。
【００２３】
図３で例示される構成要素３００の符号は、説明の目的で提供される。実際に、構成要素３００は、図３で例示されるものと比べて、追加的な構成要素、より少ない構成要素、異なる構成要素、または、異なるように配設された構成要素を含み得る。
【００２４】
図４は、いくつかの実施形態による、メモリバンクに電力を供給するための例示的なプロセス４００の図である。いくつかの実施形態において、図４の１つ以上のプロセスブロックは、ＣＰＵ３２０の１つ以上の構成要素および／またはメモリマネージャ３３０によって行われる。加えて、または代替として、図４の１つ以上のプロセスブロックは、別のデバイスの１つ以上の構成要素、または、ＣＰＵ３２０および／もしくはメモリマネージャ３３０を含むもしくは除く一群のデバイスによって行われる。
【００２５】
図４で例示されるように、プロセス４００は、電力を遮断したメモリバンクに電力を供給すると決定することを含む（ブロック４１０）。いくつかの実施形態において、メモリマネージャ３３０は、メモリバンクに電力を供給するという指示を受け取る。例えば、メモリマネージャ３３０は、オペレーティングシステムがアプリケーションおよび／またはプロセスを開始したときに指示を受け取り得る。加えて、または代替として、メモリマネージャ３３０は、アプリケーションおよび／またはプロセスが段階を変更したときに指示を受け取ってもよく、ＣＰＵ３２０および／またはメモリバンク３１０の性能の変更を必要とする。
【００２６】
いくつかの実施形態において、メモリマネージャ３３０は、システムの性能（例えば、メモリバンク３１０、ＣＰＵ３２０の性能等）を決定し、そして、システムの性能に基づいて、電力を遮断したメモリバンク３１０に電力を供給すると決定する。いくつかの実施形態において、メモリマネージャ３３０は、システムの性能を決定するために、１つ以上の性能メトリックを監視する。加えて、メモリマネージャ３３０は、メモリバンク３１０または１組のメモリバンク３１０（例えば、全てのメモリバンク３１０、電力を供給する１組のメモリバンク３１０、電力を遮断している１組のメモリバンク３１０等）の性能メトリックを監視し得る。
【００２７】
性能メトリックは、いくつかの実施形態において、メモリの追い出し数を示し、該追い出し数は、他の情報のための記憶空間を作成するために、ＣＰＵ３２０がメモリバンク３１０から情報を除去する回数を指す。例えば、ＣＰＵ３２０は、メインメモリ（例えば、ランダムアクセスメモリ）から情報を受け取ってもよく、受け取った情報をメモリバンク３１０に記憶し得る。メモリバンク３１０に情報を記憶することは、メモリバンク３１０に既に記憶されている他の情報を、メモリバンク３１０から除去させ（または追い出し）得る。これは、例えば、メインメモリからの情報を空きメモリブロックまたは利用可能なメモリブロックに記憶するためのメモリブロック３１０の容量が不足している場合に起こり得る。いくつかの実施形態において、性能メトリックは、メモリの追い出しによりメモリバンク３１０から除去される情報量を（例えば、バイト、キロバイトメガバイト等で）示す。
【００２８】
いくつかの実施形態において、性能メトリックは、メモリバンク３１０へのアクセス数を示し、該アクセス数は、ＣＰＵ３２０がメモリバンク３１０にアクセスした回数、および／または、アクセスを試行した回数を指す。アクセス数は、ＣＰＵ３２０がメモリバンク３１０から情報を読み出した回数および／もしくは読み出しを試行した回数を示してもよく、ならびに／または、ＣＰＵ３２０がメモリバンク３１０に情報を書き込んだ回数および／もしくは書き込みを試行した回数を示してもよい。
【００２９】
他の実施形態において、性能メトリックは、メモリミス数を示し、該メモリミス数は、ＣＰＵ３２０がメモリバンク３１０からの情報の読み出しの試行に失敗した回数、および／または、該メモリバンクへの書き込みの試行に失敗した回数を指す。いくつかの実施形態において、メモリミスは、コンフリクトミスを含み、該コンフリクトミスは、ＣＰＵ３２０がアクセスを試行している情報をメモリバンク３１０が追い出していなかった場合に回避されるはずであったメモリミスを指す。加えて、または代替として、メモリミスは、容量ミスを含み、該容量ミスは、メモリバンク３１０の容量制限により起こるメモリミスを指す。加えて、または代替として、メモリミスは、コンパルソリーミス、コールドミス、マッピングミス、置換ミス、および／または、任意の他のタイプのメモリミスを含む。
【００３０】
さらに他の実施形態において、性能メトリックは、ダーティ情報を含むメモリバンク３１０内のメモリブロックの数を示す。ダーティ情報は、メモリバンク３１０に記憶された情報を指し、メインメモリに書き込まれる。例えば、ダーティ情報は、メモリバンク３１０には書き込まれたが、まだメインメモリに書き込まれていない情報を含み得る。ダーティ情報は、情報の最新のコピーを表す。ダーティ情報をメモリバンク３１０から追い出す場合には、情報の最新のコピーが記憶されることを確実にするために、ダーティ情報が最初にメインメモリに書き込まれなければならない。
【００３１】
性能メトリックは、いくつかの実施形態において、非ネイティブ情報を含む、メモリバンク３１０内のメモリブロック数を示す。非ネイティブ情報は、ＣＰＵ３２０以外の別のＣＰＵによって読み出されおよび／または書き込まれる、ＣＰＵ３２０のメモリバンク３１０に記憶された情報を指す。加えて、または代替として、非ネイティブ情報は、特定のプロセッサコアのメモリバンク３１０に記憶される情報を指し、該情報は、特定のプロセッサコア以外の別のプロセッサコアによって読み出されおよび／または書き込まれる。例えば、プロセッサは、メモリバンク３１０から読み出し、および／または、メモリバンク３１０に書き込み得るが、メモリバンク３１０が電力を遮断されている場合には、プロセッサは、異なるメモリバンク３１０（または複数の異なるメモリバンク３１０）から読み出し、および／または、異なるメモリバンク３１０に書き込み得る。異なるメモリバンク３１０から読み出されおよび／または異なるメモリバンク３１０に書き込まれる情報は、非ネイティブ情報と称される。加えて、または代替として、性能メトリックは、（例えば、情報を記憶するメモリバンク３１０に対してネイティブである）ネイティブ情報を含むメモリバンク３１０内のメモリブロック数を示す。
【００３２】
いくつかの実施形態において、性能メトリックは、共有情報を含む、メモリバンク３１０内のメモリブロック数を示す。共有情報は、１つを超えるＣＰＵ３２０および／または１つを超えるプロセッサコアによって、読み出されおよび／または書き込まれる情報を指す。いくつかの実施形態において、性能メトリックは、非共有情報を含む、メモリバンク３１０内のメモリブロック数を示す。非共有情報は、１つだけのＣＰＵ３２０および／または１つだけのプロセッサコアによって、読み出されおよび／または書き込まれる情報を指す。
【００３３】
他の実施形態において、性能メトリックは、命令および／または読み出し専用情報を含む、メモリバンク３１０内のメモリブロック数を示す。加えて、または代替として、性能メトリックは、非命令および／または非読み出し専用情報（例えば、読み出し／書き込み情報）を含む、メモリバンク３１０内のメモリブロック数を示す。
【００３４】
また、代替物は、メモリバンク３１０に電力を供給し、または、電力を遮断することによってもたらされる、システム全体の性能および電力変更も考慮する。例えば、メモリバンク３１０の電力を遮断することは、他のメモリ（例えば、ハードドライブまたはソリッドステートドライブ）と、残りの電力を供給したメモリバンク３１０との間でデータを移動させる大きな必要性をもたらし得る。これは、性能の低下または電力消費の増加をもたらし得る。同様に、メモリバンク３１０に電力を供給することは、他のメモリ（例えば、ハードドライブまたはソリッドステートドライブ）を使用する必要性を低減させることができ、したがって、システム全体の電力消費を低減させ、全体的なシステムの性能を向上させ得る。したがって、本明細書で説明される実施形態は、本明細書で説明されるメトリックおよびスコアにおける性能および／または消費に対するかかる二次的またはシステム全体の影響を考慮し得る。
【００３５】
いくつかの実施形態において、メモリマネージャ３３０は、（例えば、ダーティ情報、非ネイティブ情報、命令等を含むブロック数を決定する場合に）性能メトリックの実際の数ではなく近似数を決定する。これを達成するために、メモリマネージャ３３０は、１組の隣接するブロックを低から高まで番号付けおよび／または特定し得る。メモリマネージャ３３０は、１対のブロックフラグを使用して近似数を決定する。いくつかの実施形態において、メモリマネージャ３３０は、ダーティ情報を含む低ブロック（例えば、最も低い番号の付いたブロック）にフラグを立て、また、ダーティ情報を含む高ブロック（例えば、最も高い番号の付いたブロック）にフラグを立てる。メモリマネージャ３３０は、ダーティ情報を含む近似ブロック数を決定するために、（例えば、低ブロックおよび高ブロックを含む）低ブロックと高ブロックとの間のブロック数を計数する。
【００３６】
例えば、１０個のメモリブロックがあり、ブロック２，４，７，９がダーティ情報を含むことを想定する。いくつかの実施形態において、メモリマネージャ３３０は、ダーティ情報を有する正確なブロック数（この場合、４つのブロック）を決定する。しかしながら、メモリマネージャ３３０は、ダーティ情報を含む最低ブロック（ブロック２）およびダーティ情報を含む最高ブロック（ブロック９）にフラグを配置し、そして、ダーティ情報を含む近似ブロック数（この場合、ブロック２〜９、または８つのブロック）を決定し得る。メモリマネージャ３３０は、性能メトリックとしてこの近似数を使用し得る。
【００３７】
いくつかの実施形態において、メモリマネージャ３３０は、近似数を決定するために、高フラグおよび低フラグの複数の対を使用する。上の例において、メモリマネージャ３３０は、第１の低フラグを有するブロック２にフラグを立て、また、第１の高フラグを有するブロック４にフラグを立て得る。同様に、メモリマネージャは、第２の低フラグを有するブロック７にフラグを立て、また、第２の高フラグを有するブロック９にフラグを立て得る。メモリマネージャ３３０は、６つのブロックの近似数を決定するために、ブロック２とブロック４との間（例えば、両端を含む）、および、ブロック７とブロック９との間（例えば、両端を含む）のブロックを合計することに基づいて、近似数を決定し得る。
【００３８】
いくつかの実施形態において、性能メトリックは、ある期間（例えば、クロックサイクル、バスサイクル、マイクロ秒、秒等）にわたって測定される。加えて、または代替として、性能メトリックは、複数の期間にわたって算出される平均性能メトリックである。加えて、または代替として、性能メトリックは、比率（例えば、率、パーセンテージ等）で測定される。
【００３９】
いくつかの実施形態において、メモリマネージャ３３０は、閾値を満たす性能メトリックに基づいて、電力を遮断したメモリバンク３１０に電力を供給すると決定する。加えて、または代替として、メモリマネージャ３３０は、それぞれが閾値を満たす複数の性能メトリックに基づいて、電力を遮断したメモリバンク３１０に電力を供給すると決定する。
【００４０】
メモリマネージャ３３０は、いくつかの実施形態において、複数の性能メトリックに基づいて性能スコアを算出する。加えて、メモリマネージャ３３０は、性能スコアを決定するときに、性能メトリックに重みを付ける。メモリマネージャ３３０は、閾値を満たす性能スコアに基づいて、電力を遮断したメモリバンク３１０に電力を供給すると決定し得る。いくつかの実施形態において、メモリマネージャ３３０は、複数のメモリバンク３１０間の性能スコアの差（例えば、第１のメモリバンク３１０と第２のメモリバンク３１０との性能スコアの差、一群のメモリバンク３１０の間の性能スコアの平均差、最も高い性能スコアを有するメモリバンク３１０と最も低い性能スコアを有するメモリバンク３１０との性能スコアの差等）に基づいて、電力を遮断したメモリバンク３１０に電力を供給すると決定する。
【００４１】
図４でさらに示されるように、プロセス４００は、複数の電力を遮断したメモリバンクに対応する複数の電力スコアを決定することを含む（ブロック４２０）。いくつかの実施形態において、メモリマネージャ３３０は、１つ以上の電力メトリックに基づいて電力スコアを決定する。加えて、メモリマネージャ３３０は、メモリバンク３１０または１組のメモリバンク３１０（例えば、全てのメモリバンク３１０、電力を供給する１組のメモリバンク３１０、電力を遮断している１組のメモリバンク３１０等）の電力メトリックを監視する。電力メトリックは、メモリバンク３１０に電力を供給した後に、メモリバンク３１０および／もしくはＣＰＵ３２０（ならびに／またはメモリバンク３１０および／もしくはＣＰＵ３２０を含むシステム）によって消費される電力量を示す。いくつかの実施形態において、メモリマネージャ３３０は、電力を供給した後に最も低い電力の消費をもたらすメモリバンク３１０に電力を供給する。
【００４２】
さらに図４で示されるように、プロセス４００は、複数の電力スコアを比較すること（ブロック４３０）と、その比較に基づいて、電力を供給すべき、電力を遮断したメモリバンクを選択すること（ブロック４４０）とを含む。いくつかの実施形態において、メモリマネージャ３３０は、１組の電力を遮断したメモリバンク３１０内の各メモリバンク３１０の電力スコアを比較し、そして、最良（例えば、最も高い、最も低い、目標値に最も近い等）の電力スコアを有するメモリバンク３１０に電力を供給する。いくつかの実施形態において、メモリマネージャ３３０は、電力を供給すべき、最良の電力スコアを有する複数の電力を遮断したメモリバンク３１０を選択する。
【００４３】
いくつかの実施形態において、メモリマネージャ３３０は、性能メトリックに基づいて、複数のメモリバンク３１０に電力を供給すると決定する。例えば、メモリバンク３１０に電力を供給することが性能メトリックと関連付けられる閾値を満たさないときに、メモリマネージャ３３０は、複数のメモリバンク３１０に電力を供給すると決定する。
【００４４】
図４でさらに示されるように、プロセス４００は、選択されたメモリバンクに電力を供給し、当該メモリバンクに情報を転送すること（ブロック４５０）を含む。いくつかの実施形態において、メモリマネージャ３３０は、選択されたメモリバンク３１０に電力を供給し、他のメモリバンク３１０から選択されたメモリバンク３１０へ情報を転送する。
【００４５】
認識されるように、図４で例示される動作を実現する様々な可能な実施形態がある。そのような限定的でない実施形態のいくつかは、以下に説明される。
【００４６】
例えば、いくつかの実施形態において、電力メトリックは、メモリバンク３１０に電力を供給するために必要とされる時間量を示す。加えて、または代替として、電力メトリックは、以前に電力を供給した１つ以上のメモリバンク３１０から、メモリマネージャ３３０によって新たに電力を供給したメモリバンク３１０に情報を転送するために必要とされる時間量を示す。
【００４７】
他の実施形態は、メモリバンク３１０と関連付けられるエラー数および／またはエラー率を示す電力メトリックを有し得る。例えば、電力メトリックは、メモリバンク３１０によって報告されるエラー訂正数を示し得る。
【００４８】
代替の実施形態において、電力メトリックは、メモリバンク３１０によって消費されるエネルギー量および／または電力量を示す。消費されるエネルギー量または電力量としては、漏出エネルギー量および／または動的エネルギー量が挙げられる。漏出エネルギーは、メモリバンク３１０の機能に関与しない、メモリバンク３１０によって消費されるエネルギーおよび／または電力を指す。動的エネルギーは、メモリバンク３１０が特定の機能を行っているときにメモリバンク３１０によって消費されるエネルギーおよび／または電力を指す。いくつかの実施形態において、動的エネルギーは、アクセス単位で決定される。例えば、動的エネルギーは、メモリバンク３１０がアクセスされる（例えば、メモリバンク３１０から読み出され、または、メモリバンク３１０に書き込まれる）度に、メモリバンク３１０によって消費されるエネルギー量として計算され得る。
【００４９】
電力メトリックは、いくつかの実施形態において、電力を遮断したメモリバンク３１０と、電力を供給した後に、電力を遮断したメモリバンク３１０によって記憶される情報と関連付けられる構成要素と、の距離を示し得る。いくつかの実施形態において、距離は、電力を遮断したメモリバンク３１０を構成要素に接続するワイヤおよび／または回路の長さを指す。距離は、電力を遮断した１つ以上のメモリバンク３１０と、１つ以上の構成要素との平均距離を指し得る。いくつかの実施形態において、構成要素は、電力を供給した後に、電力を遮断したメモリバンク３１０に情報を転送する、電力を供給したメモリバンク３１０を含む。加えて、または代替として、構成要素は、電力を供給した後に、電力を遮断したメモリバンク３１０によって記憶された情報にアクセスするプロセッサを含む。
【００５０】
いくつかの実施形態において、電力メトリックは、電力を遮断したメモリバンク３１０がアクセスされた回数を示す。例えば、電力メトリックは、電力を遮断したメモリバンク３１０に含まれる命令が（例えば、プロセッサによって）読み出され、または、書き込まれた回数を含み得る。
【００５１】
電力メトリックは、電力を供給した後に電力を遮断したメモリバンク３１０に転送される情報のタイプおよび／または情報量に基づき得る。例えば、電力メトリックは、電力を供給した後に、電力を遮断したメモリバンク３１０に情報を転送するために消費される電力量に基づき得る。加えて、または代替として、電力メトリックは、電力を供給した後に、電力を遮断したメモリバンク３１０に情報を転送することによって節約される電力量に基づき得る。
【００５２】
いくつかの実施形態において、電力メトリックは、電力を供給した後に、電力を遮断したメモリバンク３１０に転送されるネイティブおよび／または非ネイティブな情報（例えば、転送するメモリバンク３１０に対してネイティブおよび／もしくは非ネイティブである情報、ならびに／または、電力を遮断したメモリバンク３１０に対してネイティブおよび／もしくは非ネイティブである情報）を含むメモリブロック数を示す。いくつかの実施形態において、電力メトリックは、電力を供給した後に、電力を遮断したメモリバンク３１０に転送される共有および／または非共有情報を含むメモリブロック数を示す。いくつかの実施形態において、性能メトリックは、命令（または非命令）および／または読み出し専用情報（または読み出し／書き込み情報）を含む、メモリバンク３１０内のメモリブロック数を示す。加えて、または代替として、性能メトリックは、電力を供給した後に転送される特定のタイプのメモリブロック（例えば、命令ブロック、非命令ブロック、読み出し専用ブロック、読み出し／書き込みブロック等）の数を示す。
【００５３】
別の実施形態において、電力メトリックは、ある期間（例えば、クロックサイクル、バスサイクル、マイクロ秒、秒等）にわたって測定される。加えて、または代替として、電力メトリックは、複数の期間にわたって算出される平均電力メトリックであってよい。加えて、または代替として、電力メトリックは、比率（例えば、率、パーセンテージ等）で測定され得る。
【００５４】
さらに別の実施形態において、メモリマネージャ３３０は、複数の電力メトリックに基づいて電力スコアを算出する。加えて、または代替として、メモリマネージャ３３０は、メモリバンク３１０に電力を供給することによる性能メトリックの向上に基づいて、電力スコアを算出する。例えば、メモリマネージャ３３０は、メモリバンク３１０に電力を供給する前に性能メトリックを算出してもよく、また、メモリバンク３１０に電力を供給することにより性能メトリック対して予測される向上を決定し得る。電力スコアは、性能メトリックに対して予測される向上に基づき得る。加えて、メモリマネージャ３３０は、電力スコアを決定するときに、電力メトリックおよび／または予測される性能メトリックの向上に重みを付け得る。
【００５５】
図４に関して一連のブロックが説明されているが、ブロックの順序は、いくつかの実施形態において変更され得る。加えて、または代替として、非依存的なブロックが並列に行われ得る。
【００５６】
図５は、メモリバンクと関連付けられる性能メトリックを記憶する例示的なデータ構造５００の図である。いくつかの実施形態において、データ構造５００は、図２および図３で示される１つ以上のデバイスおよび／または構成要素と関連付けられるメモリデバイス（例えば、ＲＡＭ、ハードディスク等）に記憶される。例えば、データ構造５００は、メモリ２３０によって、および／または、メモリバンク３１０と関連付けられるメモリレジスタに記憶され得る。
【００５７】
データ構造５００は、メモリバンク識別子フィールド５１０と、電力ステータスフィールド５２０と、メモリミスフィールド５３０と、ダーティ情報ブロックフィールド５４０と、非ネイティブ情報ブロックフィールド５５０と、メモリバンク集計フィールド５６０と等の、一群のフィールドを含む。
【００５８】
メモリバンク識別子フィールド５１０は、メモリバンク３１０を識別する情報を記憶する。例えば、メモリバンク３１０は、メモリバンク３１０と関連付けられる番号、名称、アドレス、場所、ＣＰＵ等によって識別され得る。
【００５９】
電力ステータスフィールド５２０は、メモリバンク識別子フィールド５１０によって識別される、メモリバンク３１０の電力ステータスを識別する情報を記憶する。例えば、電力ステータスは、電力を遮断している状態（例えば、オフ）、電力を供給している状態（例えば、オン）、低性能／電力状態（例えば、スリープまたはスタンバイ）等であってよい。いくつかの実施形態において、メモリマネージャ３３０は、電力を供給したメモリバンク３１０に対してのみ性能メトリックを決定する。
【００６０】
メモリミスフィールド５３０は、メモリバンク識別子フィールド５１０によって識別されるメモリバンク３１０のメモリミス数および／またはメモリミス率を識別する情報を記憶する。例えば、メモリミスフィールド５１０は、メモリミス数、ある期間あたりのメモリミス数（例えば、メモリミス率）、および／または、メモリミス数とメモリアクセス要求総数との比率（例えば、メモリミス比率またはパーセンテージ）を記憶し得る。
【００６１】
ダーティ情報ブロックフィールド５４０は、ダーティ情報を含む、メモリバンク識別子フィールド５１０によって識別されるメモリバンク３１０のメモリブロック数を識別する情報を記憶する。いくつかの実施形態において、メモリブロック数は、（例えば、ダーティ情報を含むメモリブロック数と、メモリバンク３１０に含まれるメモリブロック総数との）比率で表される。
【００６２】
非ネイティブ情報ブロックフィールド５５０は、非ネイティブ情報を含む、メモリバンク識別子フィールド５１０によって識別されるメモリバンク３１０のメモリブロック数を識別する情報を記憶する。いくつかの実施形態において、メモリブロック数は、（例えば、非ネイティブ情報を含むメモリブロック数と、メモリバンク３１０に含まれるメモリブロック総数との）比率で表される。
【００６３】
メモリバンク集計フィールド５６０は、メモリバンク識別子フィールド５１０によって識別される複数のメモリバンク３１０の（例えば、フィールド５２０〜５５０の）集計性能メトリックを識別する情報を記憶する。例えば、メモリバンク集計フィールド５６０は、複数の性能メトリックの平均、複数の性能メトリックの和、複数の性能メトリックの積、複数の性能メトリックの標準偏差等を記憶し得る。いくつかの実施形態において、メモリバンク集計フィールド５６０は、メモリバンク３１０のステータスに基づいて、メモリバンク３１０の集計情報を記憶する。例えば、メモリバンク集計フィールド５６０は、電力を供給したメモリバンク３１０の集計情報を記憶し得る。
【００６４】
いくつかの実施形態において、単一のメモリバンク３１０と関連付けられる情報は、データ構造５００の行で概念的に表される。例えば、データ構造５００の第２の行は、メモリバンク２として識別されるメモリバンク３１０に対応する。メモリバンク２は、オン（例えば、電力を供給した）のステータスを有し、１パーセント（１％）のメモリミス率を有し、ダーティ情報を有する３つのメモリブロックを含み、また、非ネイティブ情報を有する１０個のメモリブロックを含む。
【００６５】
いくつかの実施形態において、複数のメモリバンク３１０と関連付けられる情報は、データ構造５００の行で概念的に表される。例えば、データ構造５００の第５の行は、メモリバンク２およびメモリバンク４として識別されるメモリバンク３１０の集計に対応する。集計したメモリバンク３１０は、３パーセント（３％）の平均メモリミス率を有し、ダーティ情報を有する１５個のメモリブロックの総計を含み、また、非ネイティブ情報を有する２５個のメモリブロックの総計を含む。
【００６６】
データ構造５００は、説明の目的でフィールド５１０〜５６０を含む。実際に、データ構造５００は、図５で例示されるものと比べて、追加的なフィールド、より少ないフィールド、異なるフィールド、または、異なるように配設されたフィールドを含み得る。いくつかの実施形態において、データ構造５００は、図５と関連して論じられるものと比べて、追加的な性能メトリック、より少ない性能メトリック、または、異なる性能メトリックに関する情報を記憶する。加えて、データ構造５００で例示される番号および／または値は、説明の目的で提供される。さらに、データ構造５００は、行および列を有するテーブルで表されているが、実際には、データ構造５００は、リンクリスト、ツリー、ハッシュテーブル、データベース等の任意のタイプのデータ構造または任意の他のタイプのデータ構造を含み得る。いくつかの実施形態において、データ構造５００は、デバイスおよび／または構成要素によって生成される情報を含む。加えて、または代替として、データ構造５００は、ユーザによって提供される情報および／またはデバイスによって自動的に提供される情報等のように、別のソースから提供される情報を含み得る。
【００６７】
図６は、メモリバンクに電力を供給することをトリガーし得る条件を記憶する例示的なデータ構造の図である。いくつかの実施形態において、データ構造６００は、図２および図３で示される１つ以上のデバイスおよび／または構成要素と関連付けられるメモリデバイス（例えば、ＲＡＭ、ハードディスク等）に記憶される。例えば、データ構造６００は、メモリ２３０によって、および／または、メモリバンク３１０と関連付けられるメモリレジスタによって記憶され得る。
【００６８】
データ構造６００は、イベント識別子フィールド６１０と、メモリミスフィールド６２０と、ダーティ情報ブロックフィールド６３０と、非ネイティブ情報ブロックフィールド６４０と等の、一群のフィールドを含む。
【００６９】
イベント識別子フィールド６１０は、フィールド６２０〜６４０で識別される条件に基づいてトリガーされ得るイベントを識別する情報を記憶する。例えば、イベント識別子フィールド６１０は、メモリバンクに電力を供給するイベント、または、メモリバンクの電力を遮断するイベントを識別し得る。
【００７０】
メモリミスフィールド６２０は、イベント識別子フィールド６１０によって識別されるイベントをトリガーする条件を識別する情報を記憶する。例えば、メモリバンクに電力を供給することは、メモリミスのパーセンテージ（例えば、単一のメモリバンク３１０のパーセンテージ、複数のメモリバンク３１０の集計パーセンテージ、等）が、５パーセント（５％）の閾値を超えたときにトリガーされ得る。
【００７１】
ダーティ情報ブロックフィールド６３０は、イベント識別子フィールド６１０によって識別されるイベントをトリガーする条件を識別する情報を記憶する。例えば、メモリバンクに電力を供給することは、ダーティ情報を含むメモリブロック数（例えば、単一のメモリバンク３１０に対する数、複数のメモリバンク３１０に対する集計数、等）が、１０ブロックの閾値を超えたときにトリガーされ得る。
【００７２】
非ネイティブ情報ブロックフィールド６４０は、イベント識別子フィールド６１０によって識別されるイベントをトリガーする条件を識別する情報を記憶する。例えば、メモリバンクに電力を供給することは、非ネイティブ情報を含むメモリブロック数（例えば、単一のメモリバンク３１０に対する数、複数のメモリバンク３１０に対する集計数、等）が、２０ブロックの閾値を超えたときにトリガーされ得る。
【００７３】
いくつかの実施形態において、フィールド６２０〜６４０によって識別される条件は、単一のメモリバンク３１０の条件を識別する。あるいは、フィールド６２０〜６４０によって識別される条件は、（例えば、メモリバンク集計フィールド５６０によって記憶された情報に基づいて）複数のメモリバンク３１０の条件を識別する。いくつかの実施形態において、イベント識別子フィールド６１０によって識別されるイベントは、フィールド６２０〜６４０によって識別される単一の条件が満たされたときにトリガーされる。または、イベント識別子フィールド６１０によって識別されるイベントは、フィールド６２０〜６４０によって識別される複数の条件が満たされたときにトリガーされる。
【００７４】
データ構造６００は、説明の目的でフィールド６１０〜６４０を含む。実際には、データ構造６００は、図６で例示されるものと比べて、追加的なフィールド、より少ないフィールド、異なるフィールド、または、異なるように配設されたフィールドを含み得る。いくつかの実施形態において、データ構造６００は、図６と関連して論じられるものと比べて、追加的な条件、より少ない条件、または、異なる条件に関する情報を記憶する。加えて、データ構造６００で例示される番号および／または値は、説明の目的で提供される。さらに、データ構造６００は、行および列を有するテーブルで表されているが、実際には、データ構造６００は、リンクリスト、ツリー、ハッシュテーブル、データベース等の任意のタイプのデータ構造または任意の他のタイプのデータ構造を含み得る。いくつかの実施形態において、データ構造６００は、デバイスおよび／または構成要素によって生成される情報を含む。加えて、または代替として、データ構造６００は、ユーザによって提供される情報および／またはデバイスによって自動的に提供される情報等のように、別のソースから提供される情報を含み得る。
【００７５】
図７は、メモリバンクと関連付けられる電力メトリックを記憶する例示的なデータ構造７００の図である。いくつかの実施形態において、データ構造７００は、図２および図３で示される１つ以上のデバイスおよび／または構成要素と関連付けられるメモリデバイス（例えば、ＲＡＭ、ハードディスク等）に記憶される。例えば、データ構造７００は、メモリ２３０によって、および／または、メモリバンク３１０と関連付けられるメモリレジスタによって記憶され得る。
【００７６】
データ構造７００は、メモリバンク識別子フィールド７１０と、電力ステータスフィールド７２０と、電力供給までの時間フィールド７３０と、報告されたエラー数フィールド７４０と、アクセス数フィールド７５０と、電力スコアフィールド７６０等との、一群のフィールドを含む。
【００７７】
メモリバンク識別子フィールド７１０は、メモリバンク３１０を識別する情報を記憶する。例えば、メモリバンク３１０は、メモリバンク３１０と関連付けられる番号、名称、アドレス、場所、ＣＰＵ等によって識別され得る。
【００７８】
電力ステータスフィールド７２０は、メモリバンク識別子フィールド７１０によって識別される、メモリバンク３１０の電力ステータスを識別する情報を記憶する。例えば、電力ステータスは、電力を遮断している状態（例えば、オフ）、または電力を供給している状態（例えば、オン）であってよい。いくつかの実施形態において、メモリマネージャ３３０は、電力を遮断したメモリバンク３１０に対してのみ電力メトリックを決定する。
【００７９】
電力供給までの時間フィールド７３０は、メモリマネージャ３３０および／またはＣＰＵ３２０が、メモリバンク識別子フィールド７１０によって識別されるメモリバンク３１０に電力を供給するまでにかかる時間量を識別する情報を記憶する。例えば、電力供給までの時間フィールド７３０は、マイクロ秒、クロックサイクル、バスサイクル、または別の単位時間で、メモリバンク３１０に電力を供給するまでの時間量を記憶し得る。
【００８０】
報告されたエラー数フィールド７４０は、メモリバンク識別子フィールド７１０によって識別されるメモリバンク３１０によって報告されたエラー数を識別する情報を記憶する。いくつかの実施形態において、報告されたエラー数は、ある期間に基づく（例えば、１クロックサイクルあたりの報告されたエラー数）。
【００８１】
アクセス数フィールド７５０は、メモリバンク識別子フィールド７１０によって識別されるメモリバンク３１０へのアクセス数を識別する情報を記憶する。例えば、アクセス数フィールド７５０は、プロセッサがメモリバンク３１０にアクセスした（例えば、メモリバンク３１０から読み出した、または、メモリバンク３１０に書き込んだ）回数を識別する情報を記憶し得る。
【００８２】
電力スコアフィールド７６０は、メモリバンク識別子フィールド７１０によって識別されるメモリバンク３１０に対して算出される電力スコアを識別する情報を記憶する。いくつかの実施形態において、電力スコアは、フィールド７３０〜７５０によって識別される電力メトリック等のような、１つ以上の電力メトリックに基づく。加えて、または代替として、メモリマネージャ３３０は、電力スコアを算出するときに、電力メトリックに重みを付ける。例えば、電力スコアは、以下の式を使用して算出され得る。
【００８３】
電力スコア＝（１×電力を供給するまでの時間）＋（３×報告されたエラー数）＋（０．００５×アクセス数）。
【００８４】
単一のメモリバンク３１０と関連付けられる情報は、データ構造７００の行で概念的に表される。例えば、データ構造７００の第１の行は、メモリバンク１として識別されるメモリバンク３１０に対応する。メモリバンク１は、オフ（例えば、電力を遮断した）のステータスを有し、５マイクロ秒の電源投入までの時間を有し、１クロックサイクル当たり５つの報告されたエラー数を有し、５，０００のアクセス数を有し、また、上記の電力スコアの式を使用して算出される、４５の電力スコアを有する。いくつかの実施形態では、電力スコアを算出するために他の式が使用される。
【００８５】
データ構造７００は、説明の目的でフィールド７１０〜７６０を含む。実際には、データ構造７００は、図７で例示されるものと比べて、追加的なフィールド、より少ないフィールド、異なるフィールド、または、異なるように配設されたフィールドを含み得る。いくつかの実施形態において、データ構造７００は、図７と関連して論じられるものと比べて、追加的な電力メトリックおよび／もしくは予測性能メトリックの向上、より少ない電力メトリックおよび／もしくは予測性能メトリックの向上、または、異なる電力メトリックおよび／もしくは予測性能メトリックの向上に関する情報を記憶する。加えて、データ構造７００で例示される番号および／または値は、説明の目的で提供される。さらに、データ構造７００は、行および列を有するテーブルで表されているが、実際には、データ構造７００は、リンクリスト、ツリー、ハッシュテーブル、データベース等の任意のタイプのデータ構造、または任意の他のタイプのデータ構造を含み得る。いくつかの実施形態において、データ構造７００は、デバイスおよび／または構成要素によって生成される情報を含む。加えて、または代替として、データ構造７００は、ユーザによって提供される情報および／またはデバイスによって自動的に提供される情報等のように、別のソースから提供される情報を含み得る。
【００８６】
図８は、メモリバンクに記憶される情報の特性を記憶する例示的なデータ構造８００の図である。いくつかの実施形態において、データ構造８００は、図２および図３で示される１つ以上のデバイスおよび／または構成要素と関連付けられるメモリデバイス（例えば、ＲＡＭ、ハードディスク等）に記憶される。例えば、データ構造８００は、メモリ２３０によって、および／または、メモリバンク３１０と関連付けられるメモリレジスタによって記憶され得る。
【００８７】
いくつかの実施形態において、メモリマネージャ３３０は、電力を遮断したメモリバンク３１０に電力を供給すると決定するために、電力を遮断したメモリバンク３１０のうちいくつのメモリバンクに電力を供給するかを決定するために、および／または、どの電源を遮断したメモリバンク３１０のうちどのメモリバンクに電力を供給するかを決定するために、メモリバンク３１０に記憶された情報の特性を使用する。いくつかの実施形態において、電力メトリックおよび／または性能メトリックは、メモリバンク３１０に記憶された情報の特性に基づく。
【００８８】
データ構造８００は、メモリバンク識別子フィールド８１０と、電力ステータスフィールド８２０と、ネイティブブロック数フィールド８３０と、バンク２に対してネイティブなブロック数フィールド８４０と、バンク５に対してネイティブなブロック数フィールド８５０と、ダーティ情報を有するブロック数フィールド８６０と、メモリバンク集計フィールド８７０と等の、一群のフィールドを含む。
【００８９】
バンク２に対してネイティブなブロック数フィールド８４０と、バンク５に対してネイティブなブロック数フィールド８５０とは、メモリバンク２およびメモリバンク５の電力を遮断しているときに、データ構造８００に記憶される。いくつかの実施形態において、１つ以上の他のメモリバンク３１０は、電力を遮断しており、また、データ構造８００は、電源を遮断したメモリバンク３１０に対してネイティブなブロック数に関する情報を記憶する１つ以上のフィールドを含む。
【００９０】
メモリバンク識別子フィールド８１０は、メモリバンク３１０を識別する情報を記憶する。例えば、メモリバンク３１０は、メモリバンク３１０と関連付けられる番号、名称、アドレス、場所、ＣＰＵ等によって識別され得る。
【００９１】
電力ステータスフィールド８２０は、メモリバンク識別子フィールド８１０によって識別される、メモリバンク３１０の電力ステータスを識別する情報を記憶する。例えば、電力ステータスは、電力を遮断している状態（例えば、オフ）、電力を供給している状態（例えば、オン）であり得る。
【００９２】
ネイティブブロック数フィールド８３０は、メモリバンク識別子フィールド８１０によって識別されるメモリバンク３１０に対してネイティブであるブロック数を識別する情報を記憶する。例えば、特定のメモリバンク３１０に対してネイティブなブロックは、全てのメモリバンク３１０に電力を供給しているときに特定のメモリバンク３１０によって記憶されるブロックを指し得る。
【００９３】
バンク２に対してネイティブなブロック数フィールド８４０は、メモリバンク２に対してネイティブである、メモリバンク識別子フィールド８１０によって識別されるメモリバンク３１０によって記憶されるブロック数（例えば、メモリバンク２に電力を供給しているときに、および／または、全てのメモリバンク３１０に電力を供給しているときに、メモリバンク２によって記憶されるブロック数、メモリバンク２に電力を供給しているときに、および／または、全てのメモリバンク３１０に電力を供給しているときに、メモリバンク２にアクセスするプロセッサによってアクセスされるブロック数等）を識別する情報を記憶する。バンク５に対してネイティブなブロック数フィールド８５０は、メモリバンク５に対してネイティブである、メモリバンク識別子フィールド８１０によって識別されるメモリバンク３１０によって記憶されるブロック数を識別する情報を記憶する。電力を供給したメモリバンク３１０は、電力を遮断したメモリバンク３１０に対してネイティブである情報を（例えば、メモリブロックに）記憶する。図８で例示される実施例において、メモリバンク２およびメモリバンク５は、電力を遮断しており、メモリバンク１，３，４は、メモリバンク２，５に対してネイティブである情報を記憶する。
【００９４】
ダーティ情報を有するブロック数フィールド８５０は、ダーティ情報（例えば、別のメモリバンク３１０に転送される前にメインメモリに書き込まなければならない情報）を含む、メモリバンク識別子フィールド８１０によって識別されるメモリバンク３１０によって記憶される、ブロック数を識別する情報を記憶する。
【００９５】
メモリバンク集計フィールド８７０は、メモリバンク識別子フィールド８１０によって識別される複数のメモリバンク３１０の（例えば、フィールド８２０〜８６０の）集計特性を識別する情報を記憶する。例えば、メモリバンク集計フィールド８７０は、複数の特性の平均、複数の特性の和、複数の特性の積、複数の特性の標準偏差等を記憶し得る。いくつかの実施形態において、メモリバンク集計フィールド８７０は、メモリバンク３１０のステータスに基づいて、メモリバンク３１０の集計情報を記憶する。例えば、メモリバンク集計フィールド８７０は、電力を供給したメモリバンク３１０の集計情報を記憶し得る。
【００９６】
いくつかの実施形態において、単一のメモリバンク３１０と関連付けられる情報は、データ構造８００の行で概念的に表される。例えば、データ構造８００の第１の行は、メモリバンク１として識別されるメモリバンクに対応する。メモリバンク１は、オン（例えば、電力を供給した）のステータスを有し、９０個のネイティブメモリブロックを含み、メモリバンク２に対してネイティブである１８個メモリブロックを含み、メモリバンク５に対してネイティブである２０個のメモリブロックを含み、また、ダーティ情報を有する１０個のメモリブロックを含む。
【００９７】
加えて、または代替として、複数のメモリバンク３１０と関連付けられる情報は、データ構造８００の行で概念的に表される。例えば、データ構造８００の第６の行は、メモリバンク識別子フィールド８１０によって識別されるメモリバンク３１０の集計に対応する。データ構造８００の第６の行は、３つのメモリバンク３１０に電力を供給しており（オンであり）、２つのメモリバンクの電力を遮断しており（オフであり）、ネイティブブロックの和が２８５であり、メモリバンク２に対してネイティブなブロックの和が４２であり、メモリバンク５に対してネイティブなブロックの和が５７であり、また、ダーティ情報を含むブロックの和が４５であることを示す。
【００９８】
いくつかの実施形態において、メモリマネージャ３３０は、メモリバンク３１０に記憶された情報の特性が閾値を満たすときに、メモリバンク３１０に電力を供給するべきであると決定する。例えば、メモリマネージャ３３０は、単一のメモリバンク３１０がダーティ情報を有する２５個を超えるブロックを含むときに、および／または、１組のメモリバンク３１０がダーティ情報を含む４０個を超えるブロックの集計（例えば、和、積、平均等）を含むときに、メモリバンク３１０に電力を供給すると決定し得る。
【００９９】
別の実施形態において、メモリマネージャ３３０は、電力を供給するときに転送するブロック数、非ネイティブのブロック数（例えば、総数または特定のメモリバンク３１０に記憶された数）、ダーティブロック数等の特性に基づいて、電力を供給するメモリバンク３１０の数を決定する。いくつかの実施形態において、メモリマネージャ３３０は、いくつのメモリバンク３１０および／またはどのメモリバンク３１０に電力を供給するかを決定するために、特性と閾値とを比較する。例えば、メモリマネージャ３３０は、電力を供給するときに転送するメモリブロック数と、閾値とを比較し得る。例えば、５０個という許容される転送ブロックの閾値は、メモリマネージャ３３０が、メモリバンク２に電力を供給することを可能にする（４２個の転送ブロックを受け取る）。６０個という許容される転送ブロックの閾値は、メモリマネージャ３３０が、両方ともではないが、メモリバンク２（４２個の伝送ブロックを受け取る）またはメモリバンク５（５７個の転送ブロックを受け取る）に電力を供給することを可能にする。１００個という許容可能な転送ブロックの閾値は、メモリマネージャ３３０が、メモリバンク２、メモリバンク５、または、メモリバンク２，５の両方に電力を供給することを可能にする（その結果、合計９９個の転送ブロックとなる）。
【０１００】
さらに別の実施形態において、メモリマネージャ３３０は、複数のメモリバンク３１０にわたって特性を平衡させることに基づいて、いくつのメモリバンク３１０および／またはどのメモリバンク３１０に電力を供給するかを決定する。例えば、メモリバンク３３０は、結果として１組のメモリバンク３１０に記憶された非ネイティブのブロック数（または、ダーティブロック、命令ブロック等）の差（例えば、予測差）を最小にするメモリバンク３１０に電力を供給することに基づいて、いくつのおよび／またはどのメモリバンク３１０かを決定し得る。
【０１０１】
メモリマネージャ３３０は、特性の比較に基づいて、どのメモリバンク３１０に電力を供給するのかを決定し得る。例えば、メモリマネージャ３３０は、メモリバンク５に電力を供給することが、メモリバンク２に電力を供給すること（４２ブロック）よりも、他のメモリバンク３１０からより多くのブロック（５７ブロック）を解放するので、メモリバンク２ではなくメモリバンク５に電力を供給し得る。別の例として、メモリマネージャ３３０は、メモリバンク５に電力を供給することによって５７個のブロックを転送するよりも、メモリバンク２に電力を供給することによって４２個のブロックを転送する方が必要とする電力が少ないことから、メモリバンク５ではなくメモリバンク２に電力を供給し得る。
【０１０２】
いくつかの実施形態において、メモリマネージャ３３０は、ユーザによって指定される最適化基準に基づいて、どのメモリバンク３１０に電力を供給するのかを決定する。本明細書で使用される場合、「最適化する」とは、最小にすること、最大にすること、または、目標値に最も近くすることを指す。例えば、最適化基準は、（例えば、メモリバンク３１０、ＣＰＵ３２０、ならびに／または、メモリバンク３１０および／もしくはＣＰＵ３２０を含むシステムの）電力消費を最適化すること、性能を最適化すること、転送ブロック数を最適化すること、１組のメモリバンク３１０によって記憶される非ネイティブブロック数を最適化すること、特定のタイプのブロック（例えば、命令ブロック、ネイティブブロック、非ネイティブブロック、共有ブロック、非共有ブロック、ダーティブロック、非ダーティブロック、等）の転送を最適化すること、特定の電力メトリックを最適化すること、１組の電力メトリックを最適化すること、電力スコアを最適化すること、特定の性能メトリックを最適化すること、１組の性能メトリックを最適化すること、性能スコアを最適化すること、特定のメモリバンク３１０への転送数を最適化すること、１組のメモリバンク３１０への転送数を最適化すること、解放されるブロック数（例えば、転送後に別の情報を記憶するために解放された、転送前にメモリバンク３１０に情報を含むメモリブロック数）を最適化すること、および／または、これらのまたは他の最適化基準の任意の組み合わせを含み得る。
【０１０３】
図８と関連して本明細書で論じられる特定の特性、閾値、メモリバンク、メモリブロックタイプおよび最適化基準は、一例として提供される。いくつかの実施形態において、メモリマネージャ３３０は、メモリバンク３１０に電力を供給するか、いくつのメモリバンク３１０に電力を供給するか、および／または、どのメモリバンク３１０に電力を供給するかを決定するときに、図８と関連して本明細書で論じられるものと異なる特性、閾値、メモリバンク、メモリブロックタイプおよび最適化基準を使用する。いくつかの実施形態において、メモリマネージャ３３０は、特性、閾値、メモリバンク、メモリブロックのタイプ、および、最適化基準を決定するために、ユーザから入力を受け取る。
【０１０４】
データ構造８００は、説明の目的でフィールド８１０〜８７０を含む。実際には、データ構造８００は、図８で例示されるものと比べて、追加的なフィールド、より少ないフィールド、異なるフィールド、または、異なるように配設されたフィールドを含み得る。加えて、データ構造８００で例示される番号および／または値は、説明の目的で提供される。さらに、データ構造８００は、行および列を有するテーブルで表されているが、実際には、データ構造８００は、リンクリスト、ツリー、ハッシュテーブル、データベース等の任意のタイプのデータ構造、または、任意の他のタイプのデータ構造を含み得る。いくつかの実施形態において、データ構造８００は、デバイスおよび／または構成要素によって生成される情報を含む。加えて、または代替として、データ構造８００は、ユーザによって提供される情報および／またはデバイスによって自動的に提供される情報等のように、別のソースから提供される情報を含み得る。
【０１０５】
図９は、図４で例示される例示的なプロセス４００に関連する、例示的な実施形態９００の図である。図９は、メモリマネージャ３３０が、最良の電力スコアを有するメモリバンク３１０に電力を供給する実施形態９００を例示する。
【０１０６】
実施形態９００で示されるように、メモリマネージャ３３０は、複数の電力を遮断したメモリバンク３１０の電力スコアを算出する。例えば、メモリバンク１およびメモリバンク３は、電力を遮断しており、メモリマネージャ３３０は、メモリバンク１およびメモリバンク３の電力スコアを算出する。実施形態９００において、メモリマネージャ３３０は、メモリバンク１について４５の電力スコア、および、メモリバンク３について７１の電力スコアを算出する（どのようにメモリマネージャ３３０が電力スコアを計算し得るのかという実施例については、図７の電力スコアフィールド７６０を参照されたい）。実施形態９００では、より高い電力スコアよりもより低い電力スコアが望まれる。したがって、メモリバンク１（４５）は、メモリバンク３（７１）よりも良好な電力スコアを有する。メモリマネージャ３３０は、メモリバンク１，３の電力スコアを比較することに基づいて、電力を供給するためのメモリバンク１を選択する。
【０１０７】
メモリバンク３１０の数、各メモリバンク３１０のステータス、および、電力スコア等の図９で示される情報は、一例として提供される。いくつかの実施形態は、図９で示されるものと比べて、追加的な情報、より少ない情報、または、異なる情報を含む。いくつかの実施形態において、メモリマネージャ３３０は、電力スコアの式を決定するために、ユーザから入力を受け取る。
【０１０８】
図１０は、図４で例示されるプロセス４００に関連する、別の例示的な実施形態１０００の図である。図１０は、メモリマネージャ３３０が、メモリバンク３１０に電力を供給し、そして、他のメモリバンク３１０から電力を供給したメモリバンク３１０に情報を転送する実施形態１０００を例示する。
【０１０９】
実施形態１０００で示されるように、メモリマネージャ３３０は、最良の電力スコア（例えば、電力を遮断した、またはオフと示される、メモリバンク３よりも良好な電力スコア）を有するメモリバンク１に基づいて、メモリバンク１に電力を供給する。実施形態１０００において、メモリバンク２，４，５は、メモリバンク１に転送する情報を含む。メモリマネージャ３３０はこの情報の転送を行い、これにより、メモリバンク２，４，５上のメモリを解放する。
【０１１０】
メモリバンク３１０の数および各メモリバンク３１０のステータス等の図１０で例示される情報は、一例として提供される。実際に、実施形態１０００は、図１０で例示されるものと比べて、追加的な情報、より少ない情報、または、異なる情報を含み得る。
【０１１１】
本明細書で説明された実施形態は、システムの性能および電力消費を最適化するために、いつメモリバンクに電力を供給するか、いくつのメモリバンクに電力を供給するか、および／または、どのメモリバンクに電力を供給するかを決定する際に、ＣＰＵをサポートし得る。
【０１１２】
前述の開示は、具体例および説明を提供するが、網羅的であること、または、実施形態が開示された正確な形態に限定されることを意図しない。修正および変更は、上記の開示を考慮して可能であり、または、実施形態の実施から獲得され得る。
【０１１３】
本明細書で使用される場合、「構成要素」という用語は、ハードウェア、ファームウェア、または、ハードウェアおよびソフトウェアの組み合わせとして広義に解釈されることが意図される。
【０１１４】
いくつかの実施形態は、閾値と併せて本明細書で説明される。閾値に対する値の関係を説明するために本明細書で使用される場合、「〜を超える」という用語（または類似する用語）は、「〜以上」という用語（または類似する用語）と同じ意味で使用され得る。同様に、閾値に対する値の関係を説明するために本明細書で使用される場合、「〜未満」という用語（または類似する用語）は、「〜以下」という用語（または類似する用語）と同じ意味で使用され得る。本明細書で使用される場合、閾値を「満たす」（または類似する用語）は、「閾値を超える」、「閾値以上である」、「閾値未満である」、「閾値以下である」、または、類似する用語と同じ意味で使用され得る。
【０１１５】
本明細書で説明されたシステムおよび／または方法は、図で例示される実施形態において、数多くの異なる形態のソフトウェア、ファームウェアおよびハードウェアで実現され得ることが明らかになるであろう。そのようなシステムおよび／または方法を実現するために使用される実際のソフトウェアコードまたは特殊な制御ハードウェアは、実施形態を限定するものではない。したがって、システムおよび／または方法の動作および挙動は、特定のソフトウェアコードに関係なく説明されており、ソフトウェアおよび制御ハードウェアは、本明細書の説明に基づいてシステムおよび／または方法を実現するために設計できることが理解される。
【０１１６】
特徴の特定の組み合わせが特許請求の範囲に記載され、および／または、明細書で説明されるが、そのような組み合わせは、可能な実施形態の開示を限定することを意図しない。実際に、そのような特徴の多くは、特許請求の範囲に具体的に記載されていない、および／または、明細書で説明されていない方法で組み合わせられ得る。以下に列記される各従属請求項は、１つの請求項だけに直接依存し得るが、可能な実施形態の開示は、特許請求の範囲の組の中の他のあらゆる請求項と組み合わせた各従属請求項を含む。
【０１１７】
本明細書で使用されるいかなる要素、行為または指示も、別途明確にそのように説明されない限り、決定的または不可欠なものとして解釈するべきではない。また、本明細書で使用される場合、冠詞「ａ」および「ａｎ」は、１つ以上の品目を含むことが意図され、また、「１つ以上」と同じ意味で使用され得る。１つだけの品目を意図する場合には、「１つ」という用語または類似する言語が使用される。さらに、「〜に基づいて」という慣用句は、別途明確に指示されない限り、「〜に少なくとも部分的に基づく」ことを意味することが意図される。
【図１】
2016500186.tif 000003
【図２】
2016500186.tif 000004
【図３】
2016500186.tif 000005
【図４】
2016500186.tif 000006
【図５】
2016500186.tif 000007
【図６】
2016500186.tif 000008
【図７】
2016500186.tif 000009
【図８】
2016500186.tif 000010
【図９】
2016500186.tif 000011
【図１０】
2016500186.tif 000012
【手続補正書】
【提出日】平成27年7月13日(2015.7.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【背景技術】
【０００１】
中央処理ユニットは、情報にアクセスする平均時間を短縮するために、情報をキャッシュに記憶する。キャッシュは、一般的に、ランダムアクセスメモリ等のメインメモリよりも小さく、高速なメモリである。キャッシュは、多くの場合、最も頻繁に使用されるメインメモリの場所に記憶された情報のコピーを記憶する。キャッシュは、メインメモリよりも中央処理ユニットの近くに位置してもよく、このため、キャッシュに記憶された情報にアクセスするのに必要な時間および／またはエネルギーの量が減少する。
【発明の概要】
【課題を解決するための手段】
【０００２】
本発明のある態様の実施形態によれば、デバイスは、メモリバンクに電力を供給するという指示を受け取り、そして、指示を受け取ることに基づいて、電力を遮断したメモリバンクに対応する電力スコアを決定する。各電力スコアは、電力を遮断したメモリバンクに電力を供給することと関連付けられる電力メトリックに対応する。デバイスは、複数の電力スコアに基づいて、選択されたメモリバンクに電力を供給する。
【０００３】
いくつかの実現形態によれば、方法は、プロセッサによって行われ、メモリバンクに電力を供給するという指示を受け取ることと、指示を受け取ることに基づいて、複数の電力を遮断したメモリバンクに対応する複数の電力スコアを決定することと、複数の電力スコアに基づいて、複数の電力を遮断したメモリバンクのうち選択されたメモリバンクに電力を供給することと、を含み得る。複数の電力スコアの各々は、複数の電力を遮断したメモリバンクのうち電力を遮断した１つのメモリバンクに電力を供給することと関連付けられる電力メトリックに対応し得る。
【０００４】
いくつかの実現形態によれば、電力メトリックは、電力を遮断したメモリバンクに電力を供給することと関連付けられる電力消費、電力を遮断したメモリバンクに電力を供給するために必要とされる時間量、電力を遮断したメモリバンクによって報告されたエラー数、電力を遮断したメモリバンクによって消費される電力量、電力を遮断したメモリバンクと、電力を遮断したメモリバンクと関連付けられる構成要素との間の距離、電力を遮断したメモリバンクへのアクセス数、電力を遮断したメモリバンクに転送されるメモリブロック数、電力を遮断したメモリバンクに対してネイティブである、電力を供給したメモリバンクに記憶されるメモリブロック数、または、第１の電力を供給したメモリバンクに記憶された第１の非ネイティブのメモリブロック数と、第２の電力を供給したメモリバンクに記憶された第２の非ネイティブのメモリブロック数との予測差であって、選択されたメモリバンクに電力を供給することに起因する予測差、のうち少なくとも１つに基づき得る。
【０００５】
いくつかの実現形態によれば、電力メトリックは、選択されたメモリバンクに電力を供給する前に測定された性能メトリックの値と、選択されたメモリバンクに電力を供給した後の性能メトリックの推定値との差に基づく。
【０００６】
いくつかの実現形態によれば、各電力スコアは、複数の電力を遮断したメモリバンクと関連付けられる１組の電力メトリックに基づき得る。
【０００７】
いくつかの実現形態によれば、指示を受け取ることは、アプリケーションまたはプロセスを、複数の電力を遮断したメモリバンクと関連付けられるシステムによって開始するという指示を受け取ること、アプリケーションまたはプロセスがシステムによって開始されたという指示を受け取る指示を受け取ること、選択されたメモリバンクに電力を供給することが、システムの電力消費を低減させるという指示を受け取ること、または、選択されたメモリバンクに電力を供給することが、システムの性能を高めるという指示を受け取ること、のうち少なくとも１つに基づき得る。
【０００８】
いくつかの実現形態によれば、指示を受け取ることは、電力を供給したメモリバンクと関連付けられる性能メトリックが閾値を満たすことに基づいてもよく、性能メトリックは、メモリが電力を供給したメモリバンクから追い出された回数、電力を供給したメモリバンクへのアクセス数、電力を供給したメモリバンクと関連付けられるメモリミス数、ダーティ情報を含む、電力を供給したメモリバンクに含まれるメモリブロック数、非ネイティブ情報を含む、電力を供給したメモリバンクに含まれるメモリブロック数、共有情報を含む、電力を供給したメモリバンクに含まれるメモリブロック数、または、命令を含む、電力を供給したメモリバンクに含まれるメモリブロック数、のうち少なくとも１つに基づき得る。
【０００９】
いくつかの実現形態によれば、性能メトリックは、複数の電力を供給したメモリバンクと関連付けられる１組の性能メトリックに基づく集計性能メトリックを備え得る。
【００１０】
いくつかの実現形態によれば、システムは、１つ以上のプロセッサを含み得る。１つ以上のプロセッサは、メモリバンクに電力を供給するという指示を受け取り、指示を受け取ることに基づいて、複数の電力を遮断したメモリバンクに対応する複数の電力スコアを決定し、複数の電力スコアに基づいて、複数の電力を遮断したメモリバンクのうち選択されたメモリバンクに電力を供給し得る。複数の電力スコアの各々は、複数の電力を遮断したメモリバンクのうち電力を遮断した１つのメモリバンクに電力を供給することと関連付けられる電力メトリックに対応し得る。
【００１１】
いくつかの実現形態によれば、電力メトリックは、電力を遮断したメモリバンクに電力を供給するために必要とされる時間量、電力を遮断したメモリバンクによって報告されたエラー数、電力を遮断したメモリバンクによって消費される電力量、電力を遮断したメモリバンクと、電力を遮断したメモリバンクと関連付けられる構成要素との間の距離、電力を遮断したメモリバンクへのアクセス数、電力を遮断したメモリバンクに転送されるメモリブロック数、電力を遮断したメモリバンクに対してネイティブである、電力を供給したメモリバンクに記憶されるメモリブロック数、または、第１の電力を供給したメモリバンクに記憶された第１の非ネイティブのメモリブロック数と、第２の電力を供給したメモリバンクに記憶された第２の非ネイティブのメモリブロック数との予測差であって、選択されたメモリバンクに電力を供給することに起因する予測差、のうち少なくとも１つに基づき得る。
【００１２】
いくつかの実現形態によれば、電力メトリックは、選択されたメモリバンクに電力を供給する前に測定された性能メトリックの値と、選択されたメモリバンクに電力を供給した後の性能メトリックの推定値との差に基づき得る。
【００１３】
いくつかの実現形態によれば、各電力スコアは、複数の電力を遮断したメモリバンクと関連付けられる１組の電力メトリックに基づき得る。
【００１４】
いくつかの実現形態によれば、１つ以上のプロセッサは、指示を受け取ったときに、アプリケーションまたはプロセスを、複数の電力を遮断したメモリバンクと関連付けられる構成要素によって開始するという指示を受け取ること、アプリケーションまたはプロセスが構成要素によって開始されたという指示を受け取る指示を受け取ること、選択されたメモリバンクに電力を供給することが、構成要素の電力消費を低減させるという指示を受け取ること、または、選択されたメモリバンクに電力を供給することが、構成要素の性能を高めるという指示を受け取ること、のうち少なくとも１つをさらに行い得る。
【００１５】
いくつかの実現形態によれば、１つ以上のプロセッサは、さらに、指示を受け取ったときに、電力を供給したメモリバンクと関連付けられる性能メトリックが閾値を満たすと判断することに基づいて、指示を受け取り得る。性能メトリックは、メモリが電力を供給したメモリバンクから追い出された回数、電力を供給したメモリバンクへのアクセス数、電力を供給したメモリバンクと関連付けられるメモリミス数、ダーティ情報を含む、電力を供給したメモリバンクに含まれるメモリブロック数、非ネイティブ情報を含む、電力を供給したメモリバンクに含まれるメモリブロック数、共有情報を含む、電力を供給したメモリバンクに含まれるメモリブロック数、または、命令を含む、電力を供給したメモリバンクに含まれるメモリブロック数、のうち少なくとも１つに基づき得る。
【００１６】
いくつかの実現形態によれば、性能メトリックは、複数の電力を供給したメモリバンクと関連付けられる１組の性能メトリックに基づく集計性能メトリックを備え得る。
【００１７】
いくつかの実現形態によれば、コンピュータ可読媒体は、命令を記憶し得る。命令は、プロセッサによって実行されたときに、メモリバンクに電力を供給するという指示を受け取ること、指示を受け取ることに基づいて、複数の電力を遮断したメモリバンクに対応する複数の電力スコアを決定すること、複数の電力スコアに基づいて、複数の電力を遮断したメモリバンクのうち選択されたメモリバンクに電力を供給すること、をプロセッサに行わせる１つ以上の命令を含み得る。複数の電力スコアの各々は、複数の電力を遮断したメモリバンクのうち電力を遮断した１つのメモリバンクに電力を供給することと関連付けられる電力メトリックに対応し得る。
【００１８】
いくつかの実現形態によれば、電力メトリックは、電力を遮断したメモリバンクに電力を供給するために必要とされる時間量、電力を遮断したメモリバンクによって報告されたエラー数、電力を遮断したメモリバンクによって消費される電力量、電力を遮断したメモリバンクと、電力を遮断したメモリバンクと関連付けられる構成要素との間の距離、電力を遮断したメモリバンクへのアクセス数、電力を遮断したメモリバンクに転送されるメモリブロック数、電力を遮断したメモリバンクに対してネイティブである、電力を供給したメモリバンクに記憶されるメモリブロック数、または、第１の電力を供給したメモリバンクに記憶された第１の非ネイティブのメモリブロック数と、第２の電力を供給したメモリバンクに記憶された第２の非ネイティブのメモリブロック数との予測差であって、選択されたメモリバンクに電力を供給することに起因する予測差、のうち少なくとも１つに基づき得る。
【００１９】
いくつかの実現形態によれば、電力メトリックは、選択されたメモリバンクに電力を供給する前に測定された性能メトリックの値と、選択されたメモリバンクに電力を供給した後の性能メトリックの推定値との差に基づき得る。
【００２０】
いくつかの実現形態によれば、各電力スコアは、複数の電力を遮断したメモリバンクと関連付けられる１組の電力メトリックに基づき得る。
【００２１】
いくつかの実現形態によれば、１つ以上の命令は、指示を受け取ることをプロセッサに行わせるときに、プロセッサに、アプリケーションまたはプロセスを、複数の電力を遮断したメモリバンクと関連付けられる構成要素によって開始するという指示を受け取ること、アプリケーションまたはプロセスが構成要素によって開始されたという指示を受け取る指示を受け取ること、選択されたメモリバンクに電力を供給することが、構成要素の電力消費を低減させるという指示を受け取ること、または、選択されたメモリバンクに電力を供給することが、構成要素の性能を高めるという指示を受け取ること、のうち少なくとも１つを行わせ得る。
【００２２】
いくつかの実現形態によれば、１つ以上の命令は、指示を受け取ることをプロセッサに行わせるときに、プロセッサに、電力を供給したメモリバンクと関連付けられる性能メトリックが閾値を満たすと判断することに基づいて、指示を受け取ることを行わせ得る。性能メトリックは、メモリが電力を供給したメモリバンクから追い出された回数、電力を供給したメモリバンクへのアクセス数、電力を供給したメモリバンクと関連付けられるメモリミス数、ダーティ情報を含む、電力を供給したメモリバンクに含まれるメモリブロック数、非ネイティブ情報を含む、電力を供給したメモリバンクに含まれるメモリブロック数、共有情報を含む、電力を供給したメモリバンクに含まれるメモリブロック数、または、命令を含む、電力を供給したメモリバンクに含まれるメモリブロック数、のうち少なくとも１つに基づき得る。
【図面の簡単な説明】
【００２３】
【図１】本明細書で説明される例示的な実施形態の概要の図である。
【図２】いくつかの実施形態による、本明細書で説明される実施形態が実現され得るデバイスの例示的な構成要素の図である。
【図３】いくつかの実施形態による、図２で例示された１つ以上の構成要素に対応し得る例示的な構成要素の図である。
【図４】いくつかの実施形態による、メモリバンクに電力を供給するための例示的なプロセスの図である。
【図５】いくつかの実施形態による、メモリバンクと関連付けられる性能メトリックを記憶する例示的なデータ構造の図である。
【図６】いくつかの実施形態による、メモリバンクに電力を供給することをトリガーし得る条件を記憶する例示的なデータ構造例の図である。
【図７】いくつかの実施形態による、メモリバンクと関連付けられる電力メトリックを記憶する例示的なデータ構造の図である。
【図８】いくつかの実施形態による、メモリバンクに記憶される情報の特性を記憶する例示的なデータ構造の図である。
【図９】いくつかの実施形態による、図４で例示された例示的なプロセスに関連する例示的な実施形態の図である。
【図１０】いくつかの実施形態による、図４で例示された例示的なプロセスに関連する別の例示的な実施形態の図である。
【発明を実施するための形態】
【００２４】
例示的な実施形態の以下の詳細な説明は、添付の図面を参照する。異なる図面の同じ符号は、同じまたは類似の要素を特定し得る。
【００２５】
中央処理ユニット（「ＣＰＵ」）等のプロセッサは、ＣＰＵキャッシュに含まれるメモリバンク等のメモリバンクに情報を記憶し得る。節電するために、ＣＰＵは、メモリバンクのいくつかの電力を遮断し得る。しかしながら、メモリバンクの電力を遮断することは、ＣＰＵおよびメモリバンクを組み込んだシステムの性能を低下させ得る。したがって、ＣＰＵは、システムの性能を向上させるために、１つ以上のメモリバンクに電力を供給し得る。本明細書で説明される実施形態では、システムの性能および電力消費を最適化するために、いつメモリバンクに電力を供給するべきか、いくつのメモリバンクに電力を供給するべきか、および／または、どのメモリバンクに電力を供給するべきかを決定する場合に、ＣＰＵをサポートする。
【００２６】
本明細書で使用される場合、メモリバンクに「電力を供給すること」という用語（および「電力供給」、「電力を供給した」等の他の類似する用語）は、メモリバンクが情報を記憶するのに利用され得るように、メモリバンクの電力特性を調整することを指す。例えば、メモリバンクに電力を供給することは、電力（例えば、電流、電圧等）をメモリバンクに供給すること、および／または、メモリバンクをオンにすることを指し得る。別の例として、メモリバンクに電力を供給することは、第１の電力消費状態（例えば、オフ、スリープ、スタンバイ、ハイバネーション等）から、第２の電力消費状態（例えば、オン、アウェイク、レディ等）へのメモリバンクの移行を指してもよく、第２の電力消費状態でメモリバンクによって消費される電力量は、第１の電力消費状態でメモリバンクによって消費される電力量よりも多い。
【００２７】
本明細書で使用される場合、メモリバンクの「電力を遮断すること」という用語（および「電力遮断」、「電力を遮断した」等の他の類似する用語）は、メモリバンクが情報を記憶するのに利用されないように、メモリバンクの電力特性を調整することを指す。例えば、メモリバンクの電力を遮断することは、メモリバンクへの電力（例えば、電流、電圧等）の供給を終了すること、および／または、メモリバンクをオフにすることを指し得る。別の例として、メモリバンクの電力を遮断することは、第２の電力消費状態（例えば、オン、アウェイク、レディ等）から、第１の電力消費状態（例えば、オフ、スリープ、スタンバイ、ハイバネーション等）へのメモリバンクの移行を指してもよく、第１の電力消費状態でメモリバンクによって消費される電力量は、第２の電力消費状態でメモリバンクによって消費される電力量未満である。
【００２８】
図１は、本明細書で説明される例示的な実施形態１００の概要の図である。図１で例示されるように、実施形態１００は、１つ以上のプロセッサを含み、該プロセッサは、説明される実施形態において、Ｎ個のメモリバンク（Ｎ＞１）を含むＣＰＵキャッシュに接続されたＣＰＵ（例えば、Ｍ個のＣＰＵ、Ｍ≧１）を備える。いくつかの実施形態において、ＣＰＵキャッシュは、ＣＰＵ（およびその一部）に統合される。他の実施形態において、ＣＰＵキャッシュは、複数のＣＰＵによって共有される。ＣＰＵ以外のプロセッサも、本明細書で説明される実施形態を行うことができる。そのようなプロセッサとしては、例えば、グラフィックス処理ユニット（ＧＰＵ）、加速処理ユニット（ＡＰＵ）、アプリケーションプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）または同類のものが挙げられる。
【００２９】
実施形態１００で示されるように、ＣＰＵは、メモリバンクに電力を供給すると決定し、そして、電力を遮断している各メモリバンクの電力スコアを算出する。例示的な実施形態１００において、メモリバンク１，３は、電力を遮断しており、メモリバンク２，Ｎは、電力を供給している。例示的な実施形態において、メモリバンク１は、５という電力スコアを有し、メモリバンク３は、２という電力スコアを有する。電力スコアは、メモリバンクに電力を供給することに起因する性能の向上および／または電力コストを示す。例えば、メモリバンク１は、メモリバンク３よりも大きい性能の向上および／または少ない電力コストを提供することができ、そのことは、メモリバンク１，３と関連付けられる電力スコアに反映される。実施形態１００で示されるように、ＣＰＵは、メモリバンク１が、メモリバンク３よりも良い電力スコアを有すると判断し、そして、メモリバンク１に電力を供給する。このようにして、ＣＰＵは、異なるメモリバンクに電力を供給することと比較した場合に、より良好な性能の向上および／またはより少ない電力コストを提供するメモリバンクに電力を供給することができる。
【００３０】
図２は、本明細書で説明される実施形態が実現され得るデバイス２００の例示的な構成要素の図である。図２で例示されるように、デバイス２００は、バス２１０と、プロセッサ２２０と、メモリ２３０と、入力構成要素２４０と、出力構成要素２５０と、通信インターフェース２６０と、を含む。
【００３１】
バス２１０は、デバイス２００の構成要素間での通信を可能にするパスを含む。プロセッサ２２０は、命令を解釈および／または実行する処理デバイス（例えば、ＣＰＵ、ＧＰＵ、ＡＰＵ、ＡＳＩＣ、ＤＳＰ等）を含む。いくつかの実施形態において、プロセッサ２２０は、１つ以上のプロセッサコアを含む。加えて、または代替として、プロセッサ２２０は、処理ユニットの組み合わせを含む。
【００３２】
メモリ２３０としては、ＣＰＵキャッシュ、スクラッチパッドメモリ、および／または、プロセッサ２２０が使用する情報および／または命令を記憶する任意のタイプのマルチバンクメモリが挙げられる。加えて、または代替として、メモリ２３０としては、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、および／または、プロセッサ２２０が使用する情報および／または命令を記憶する任意のタイプの動的または静的記憶デバイス（例えば、フラッシュ、磁気または光メモリ）が挙げられる。
【００３３】
入力構成要素２４０としては、ユーザが情報をデバイス２００に入力することを可能にする構成要素（例えば、キーボード、キーパッド、マウス、ボタン、スイッチ等）が挙げられる。出力構成要素２５０としては、デバイス２００から情報を出力する構成要素（例えば、ディスプレイ、スピーカー、１つ以上の発光ダイオード（ＬＥＤ）等）が挙げられる。
【００３４】
通信インターフェース２６０としては、送受信機、および／または、個別の受信機および発信機等のように、送受信機のような構成要素が挙げられ、該構成要素は、デバイス２００が、有線接続、無線接続、または、有線接続および無線接続の組み合わせ等を介して、他のデバイスおよび／またはシステムと通信することを可能にする。例えば、通信インターフェース２６０としては、イーサネット（登録商標）インターフェース、光インターフェース、同軸インターフェース、赤外線インターフェース、無線周波数（ＲＦ）インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェース、または同類のものが挙げられる。
【００３５】
いくつかの実施形態において、デバイス２００は、本明細書で説明される種々の動作を行う。デバイス２００は、メモリ２３０等のコンピュータ可読媒体に含まれるソフトウェア命令を実行するプロセッサ２２０に応じて、かかる動作を行い得る。コンピュータ可読媒体は、非一時的なメモリデバイスとして定義され得る。メモリデバイスは、単一の記憶デバイス内の空間、または、複数の記憶デバイスにわたって広がる空間を含む。
【００３６】
いくつかの実施形態において、ソフトウェア命令は、別のコンピュータ可読媒体から、または、通信インターフェース２６０を介して別のデバイスからメモリ２３０に読み出される。メモリ２３０に記憶されたソフトウェア命令は、実行されると、プロセッサ２２０に、本明細書で説明される１つ以上のプロセスを行わせる。加えて、または代替として、本明細書で説明される１つ以上のプロセスを行うために、ソフトウェア命令の代わりに、または、ソフトウェア命令と組み合わせて、ハードワイヤード回路が使用される。したがって、本明細書で説明される実施形態は、ハードウェア回路およびソフトウェアの任意の特定の組み合わせに限定されない。
【００３７】
図２で例示される構成要素の符号は、説明の目的で提供される。実際に、デバイス２００は、図２で例示されるものと比べて、追加的な構成要素、より少ない構成要素、異なる構成要素、または、異なるように配設された構成要素を含み得る。
【００３８】
図３は、いくつかの実施形態において、図２のプロセッサ２２０またはメモリ２３０に対応する例示的な構成要素３００の図である。図３で例示されるように、構成要素３００は、メモリバンク３１０−１〜３１０−Ｎ（Ｎ＞１）（以下、総称してメモリバンク３１０、および、個々にメモリバンク３１０と称する）と、ＣＰＵ３２０と、メモリマネージャ３３０と、を含む。
【００３９】
メモリバンク３１０は、情報が記憶され得る記憶ユニットおよび／または記憶ブロックを含む。いくつかの実施形態において、メモリバンク３１０は、メモリ２３０に対応し、および／または、該メモリに組み込まれる。いくつかの実施形態において、メモリバンク３１０は、キャッシュおよび／またはスクラッチパッドメモリの論理記憶ユニットである。
【００４０】
本明細書で使用される場合、「ブロック」または「メモリブロック」という用語は、個々に読み出すこと、および／または、書き込むことができるセクション等のように、メモリバンク３１０のサブ区画、セクションまたは一部分を指す。例えば、メモリブロックは、キャッシュ、スクラッチパッドの固定サイズのブロックまたは他のマルチバンクメモリ等のキャッシュラインを指し得る。
【００４１】
ＣＰＵ３２０は、プロセッサ、マイクロプロセッサ、ならびに／または、命令を翻訳し、実行する任意の処理デバイスおよび／もしくは処理論理を含む。いくつかの実施形態において、ＣＰＵ３２０は、プロセッサ２２０に対応する。いくつかの実施形態において、ＣＰＵ３２０および／または別の構成要素（例えば、メモリマネージャ３３０）は、メモリ（例えば、メモリ２３０、ＣＰＵキャッシュ、スクラッチパッドメモリ等）を１組のメモリバンク３１０に分割する。いくつかの実施形態において、ＣＰＵ３２０は、複数のＣＰＵ、プロセッサ、および／または、メモリバンク３１０を共有するプロセッサコアを含む。
【００４２】
メモリマネージャ３３０は、メモリバンク３１０に電力を供給することと関連付けられる動作を行う。いくつかの実施形態において、メモリマネージャ３３０は、メモリバンク３１０に電力を提供すると決定し、そして、メモリバンク３１０と関連付けられる性能メトリックおよび／または電力メトリックに基づいて、電力を供給する１つ以上のメモリバンク３１０を選択する。加えて、または代替として、メモリマネージャ３３０は、選択されたメモリバンク３１０に電力を供給し、そして、記憶のために、別のメモリバンク３１０に記憶された情報を、選択されたメモリバンク３１０に転送する。ＣＰＵ３２０（およびその一部）に統合されているように例示されているが、いくつかの実施形態において、メモリマネージャ３３０は、ＣＰＵ３２０から分離されている。
【００４３】
図３で例示される構成要素３００の符号は、説明の目的で提供される。実際に、構成要素３００は、図３で例示されるものと比べて、追加的な構成要素、より少ない構成要素、異なる構成要素、または、異なるように配設された構成要素を含み得る。
【００４４】
図４は、いくつかの実施形態による、メモリバンクに電力を供給するための例示的なプロセス４００の図である。いくつかの実施形態において、図４の１つ以上のプロセスブロックは、ＣＰＵ３２０の１つ以上の構成要素および／またはメモリマネージャ３３０によって行われる。加えて、または代替として、図４の１つ以上のプロセスブロックは、別のデバイスの１つ以上の構成要素、または、ＣＰＵ３２０および／もしくはメモリマネージャ３３０を含むもしくは除く一群のデバイスによって行われる。
【００４５】
図４で例示されるように、プロセス４００は、電力を遮断したメモリバンクに電力を供給すると決定することを含む（ブロック４１０）。いくつかの実施形態において、メモリマネージャ３３０は、メモリバンクに電力を供給するという指示を受け取る。例えば、メモリマネージャ３３０は、オペレーティングシステムがアプリケーションおよび／またはプロセスを開始したときに指示を受け取り得る。加えて、または代替として、メモリマネージャ３３０は、アプリケーションおよび／またはプロセスが段階を変更したときに指示を受け取ってもよく、ＣＰＵ３２０および／またはメモリバンク３１０の性能の変更を必要とする。
【００４６】
いくつかの実施形態において、メモリマネージャ３３０は、システムの性能（例えば、メモリバンク３１０、ＣＰＵ３２０の性能等）を決定し、そして、システムの性能に基づいて、電力を遮断したメモリバンク３１０に電力を供給すると決定する。いくつかの実施形態において、メモリマネージャ３３０は、システムの性能を決定するために、１つ以上の性能メトリックを監視する。加えて、メモリマネージャ３３０は、メモリバンク３１０または１組のメモリバンク３１０（例えば、全てのメモリバンク３１０、電力を供給する１組のメモリバンク３１０、電力を遮断している１組のメモリバンク３１０等）の性能メトリックを監視し得る。
【００４７】
性能メトリックは、いくつかの実施形態において、メモリの追い出し数を示し、該追い出し数は、他の情報のための記憶空間を作成するために、ＣＰＵ３２０がメモリバンク３１０から情報を除去する回数を指す。例えば、ＣＰＵ３２０は、メインメモリ（例えば、ランダムアクセスメモリ）から情報を受け取ってもよく、受け取った情報をメモリバンク３１０に記憶し得る。メモリバンク３１０に情報を記憶することは、メモリバンク３１０に既に記憶されている他の情報を、メモリバンク３１０から除去させ（または追い出し）得る。これは、例えば、メインメモリからの情報を空きメモリブロックまたは利用可能なメモリブロックに記憶するためのメモリブロック３１０の容量が不足している場合に起こり得る。いくつかの実施形態において、性能メトリックは、メモリの追い出しによりメモリバンク３１０から除去される情報量を（例えば、バイト、キロバイトメガバイト等で）示す。
【００４８】
いくつかの実施形態において、性能メトリックは、メモリバンク３１０へのアクセス数を示し、該アクセス数は、ＣＰＵ３２０がメモリバンク３１０にアクセスした回数、および／または、アクセスを試行した回数を指す。アクセス数は、ＣＰＵ３２０がメモリバンク３１０から情報を読み出した回数および／もしくは読み出しを試行した回数を示してもよく、ならびに／または、ＣＰＵ３２０がメモリバンク３１０に情報を書き込んだ回数および／もしくは書き込みを試行した回数を示してもよい。
【００４９】
他の実施形態において、性能メトリックは、メモリミス数を示し、該メモリミス数は、ＣＰＵ３２０がメモリバンク３１０からの情報の読み出しの試行に失敗した回数、および／または、該メモリバンクへの書き込みの試行に失敗した回数を指す。いくつかの実施形態において、メモリミスは、コンフリクトミスを含み、該コンフリクトミスは、ＣＰＵ３２０がアクセスを試行している情報をメモリバンク３１０が追い出していなかった場合に回避されるはずであったメモリミスを指す。加えて、または代替として、メモリミスは、容量ミスを含み、該容量ミスは、メモリバンク３１０の容量制限により起こるメモリミスを指す。加えて、または代替として、メモリミスは、コンパルソリーミス、コールドミス、マッピングミス、置換ミス、および／または、任意の他のタイプのメモリミスを含む。
【００５０】
さらに他の実施形態において、性能メトリックは、ダーティ情報を含むメモリバンク３１０内のメモリブロックの数を示す。ダーティ情報は、メモリバンク３１０に記憶された情報を指し、メインメモリに書き込まれる。例えば、ダーティ情報は、メモリバンク３１０には書き込まれたが、まだメインメモリに書き込まれていない情報を含み得る。ダーティ情報は、情報の最新のコピーを表す。ダーティ情報をメモリバンク３１０から追い出す場合には、情報の最新のコピーが記憶されることを確実にするために、ダーティ情報が最初にメインメモリに書き込まれなければならない。
【００５１】
性能メトリックは、いくつかの実施形態において、非ネイティブ情報を含む、メモリバンク３１０内のメモリブロック数を示す。非ネイティブ情報は、ＣＰＵ３２０以外の別のＣＰＵによって読み出されおよび／または書き込まれる、ＣＰＵ３２０のメモリバンク３１０に記憶された情報を指す。加えて、または代替として、非ネイティブ情報は、特定のプロセッサコアのメモリバンク３１０に記憶される情報を指し、該情報は、特定のプロセッサコア以外の別のプロセッサコアによって読み出されおよび／または書き込まれる。例えば、プロセッサは、メモリバンク３１０から読み出し、および／または、メモリバンク３１０に書き込み得るが、メモリバンク３１０が電力を遮断されている場合には、プロセッサは、異なるメモリバンク３１０（または複数の異なるメモリバンク３１０）から読み出し、および／または、異なるメモリバンク３１０に書き込み得る。異なるメモリバンク３１０から読み出されおよび／または異なるメモリバンク３１０に書き込まれる情報は、非ネイティブ情報と称される。加えて、または代替として、性能メトリックは、（例えば、情報を記憶するメモリバンク３１０に対してネイティブである）ネイティブ情報を含むメモリバンク３１０内のメモリブロック数を示す。
【００５２】
いくつかの実施形態において、性能メトリックは、共有情報を含む、メモリバンク３１０内のメモリブロック数を示す。共有情報は、１つを超えるＣＰＵ３２０および／または１つを超えるプロセッサコアによって、読み出されおよび／または書き込まれる情報を指す。いくつかの実施形態において、性能メトリックは、非共有情報を含む、メモリバンク３１０内のメモリブロック数を示す。非共有情報は、１つだけのＣＰＵ３２０および／または１つだけのプロセッサコアによって、読み出されおよび／または書き込まれる情報を指す。
【００５３】
他の実施形態において、性能メトリックは、命令および／または読み出し専用情報を含む、メモリバンク３１０内のメモリブロック数を示す。加えて、または代替として、性能メトリックは、非命令および／または非読み出し専用情報（例えば、読み出し／書き込み情報）を含む、メモリバンク３１０内のメモリブロック数を示す。
【００５４】
また、代替物は、メモリバンク３１０に電力を供給し、または、電力を遮断することによってもたらされる、システム全体の性能および電力変更も考慮する。例えば、メモリバンク３１０の電力を遮断することは、他のメモリ（例えば、ハードドライブまたはソリッドステートドライブ）と、残りの電力を供給したメモリバンク３１０との間でデータを移動させる大きな必要性をもたらし得る。これは、性能の低下または電力消費の増加をもたらし得る。同様に、メモリバンク３１０に電力を供給することは、他のメモリ（例えば、ハードドライブまたはソリッドステートドライブ）を使用する必要性を低減させることができ、したがって、システム全体の電力消費を低減させ、全体的なシステムの性能を向上させ得る。したがって、本明細書で説明される実施形態は、本明細書で説明されるメトリックおよびスコアにおける性能および／または消費に対するかかる二次的またはシステム全体の影響を考慮し得る。
【００５５】
いくつかの実施形態において、メモリマネージャ３３０は、（例えば、ダーティ情報、非ネイティブ情報、命令等を含むブロック数を決定する場合に）性能メトリックの実際の数ではなく近似数を決定する。これを達成するために、メモリマネージャ３３０は、１組の隣接するブロックを低から高まで番号付けおよび／または特定し得る。メモリマネージャ３３０は、１対のブロックフラグを使用して近似数を決定する。いくつかの実施形態において、メモリマネージャ３３０は、ダーティ情報を含む低ブロック（例えば、最も低い番号の付いたブロック）にフラグを立て、また、ダーティ情報を含む高ブロック（例えば、最も高い番号の付いたブロック）にフラグを立てる。メモリマネージャ３３０は、ダーティ情報を含む近似ブロック数を決定するために、（例えば、低ブロックおよび高ブロックを含む）低ブロックと高ブロックとの間のブロック数を計数する。
【００５６】
例えば、１０個のメモリブロックがあり、ブロック２，４，７，９がダーティ情報を含むことを想定する。いくつかの実施形態において、メモリマネージャ３３０は、ダーティ情報を有する正確なブロック数（この場合、４つのブロック）を決定する。しかしながら、メモリマネージャ３３０は、ダーティ情報を含む最低ブロック（ブロック２）およびダーティ情報を含む最高ブロック（ブロック９）にフラグを配置し、そして、ダーティ情報を含む近似ブロック数（この場合、ブロック２〜９、または８つのブロック）を決定し得る。メモリマネージャ３３０は、性能メトリックとしてこの近似数を使用し得る。
【００５７】
いくつかの実施形態において、メモリマネージャ３３０は、近似数を決定するために、高フラグおよび低フラグの複数の対を使用する。上の例において、メモリマネージャ３３０は、第１の低フラグを有するブロック２にフラグを立て、また、第１の高フラグを有するブロック４にフラグを立て得る。同様に、メモリマネージャは、第２の低フラグを有するブロック７にフラグを立て、また、第２の高フラグを有するブロック９にフラグを立て得る。メモリマネージャ３３０は、６つのブロックの近似数を決定するために、ブロック２とブロック４との間（例えば、両端を含む）、および、ブロック７とブロック９との間（例えば、両端を含む）のブロックを合計することに基づいて、近似数を決定し得る。
【００５８】
いくつかの実施形態において、性能メトリックは、ある期間（例えば、クロックサイクル、バスサイクル、マイクロ秒、秒等）にわたって測定される。加えて、または代替として、性能メトリックは、複数の期間にわたって算出される平均性能メトリックである。加えて、または代替として、性能メトリックは、比率（例えば、率、パーセンテージ等）で測定される。
【００５９】
いくつかの実施形態において、メモリマネージャ３３０は、閾値を満たす性能メトリックに基づいて、電力を遮断したメモリバンク３１０に電力を供給すると決定する。加えて、または代替として、メモリマネージャ３３０は、それぞれが閾値を満たす複数の性能メトリックに基づいて、電力を遮断したメモリバンク３１０に電力を供給すると決定する。
【００６０】
メモリマネージャ３３０は、いくつかの実施形態において、複数の性能メトリックに基づいて性能スコアを算出する。加えて、メモリマネージャ３３０は、性能スコアを決定するときに、性能メトリックに重みを付ける。メモリマネージャ３３０は、閾値を満たす性能スコアに基づいて、電力を遮断したメモリバンク３１０に電力を供給すると決定し得る。いくつかの実施形態において、メモリマネージャ３３０は、複数のメモリバンク３１０間の性能スコアの差（例えば、第１のメモリバンク３１０と第２のメモリバンク３１０との性能スコアの差、一群のメモリバンク３１０の間の性能スコアの平均差、最も高い性能スコアを有するメモリバンク３１０と最も低い性能スコアを有するメモリバンク３１０との性能スコアの差等）に基づいて、電力を遮断したメモリバンク３１０に電力を供給すると決定する。
【００６１】
図４でさらに示されるように、プロセス４００は、複数の電力を遮断したメモリバンクに対応する複数の電力スコアを決定することを含む（ブロック４２０）。いくつかの実施形態において、メモリマネージャ３３０は、１つ以上の電力メトリックに基づいて電力スコアを決定する。加えて、メモリマネージャ３３０は、メモリバンク３１０または１組のメモリバンク３１０（例えば、全てのメモリバンク３１０、電力を供給する１組のメモリバンク３１０、電力を遮断している１組のメモリバンク３１０等）の電力メトリックを監視する。電力メトリックは、メモリバンク３１０に電力を供給した後に、メモリバンク３１０および／もしくはＣＰＵ３２０（ならびに／またはメモリバンク３１０および／もしくはＣＰＵ３２０を含むシステム）によって消費される電力量を示す。いくつかの実施形態において、メモリマネージャ３３０は、電力を供給した後に最も低い電力の消費をもたらすメモリバンク３１０に電力を供給する。
【００６２】
さらに図４で示されるように、プロセス４００は、複数の電力スコアを比較すること（ブロック４３０）と、その比較に基づいて、電力を供給すべき、電力を遮断したメモリバンクを選択すること（ブロック４４０）とを含む。いくつかの実施形態において、メモリマネージャ３３０は、１組の電力を遮断したメモリバンク３１０内の各メモリバンク３１０の電力スコアを比較し、そして、最良（例えば、最も高い、最も低い、目標値に最も近い等）の電力スコアを有するメモリバンク３１０に電力を供給する。いくつかの実施形態において、メモリマネージャ３３０は、電力を供給すべき、最良の電力スコアを有する複数の電力を遮断したメモリバンク３１０を選択する。
【００６３】
いくつかの実施形態において、メモリマネージャ３３０は、性能メトリックに基づいて、複数のメモリバンク３１０に電力を供給すると決定する。例えば、メモリバンク３１０に電力を供給することが性能メトリックと関連付けられる閾値を満たさないときに、メモリマネージャ３３０は、複数のメモリバンク３１０に電力を供給すると決定する。
【００６４】
図４でさらに示されるように、プロセス４００は、選択されたメモリバンクに電力を供給し、当該メモリバンクに情報を転送すること（ブロック４５０）を含む。いくつかの実施形態において、メモリマネージャ３３０は、選択されたメモリバンク３１０に電力を供給し、他のメモリバンク３１０から選択されたメモリバンク３１０へ情報を転送する。
【００６５】
認識されるように、図４で例示される動作を実現する様々な可能な実施形態がある。そのような限定的でない実施形態のいくつかは、以下に説明される。
【００６６】
例えば、いくつかの実施形態において、電力メトリックは、メモリバンク３１０に電力を供給するために必要とされる時間量を示す。加えて、または代替として、電力メトリックは、以前に電力を供給した１つ以上のメモリバンク３１０から、メモリマネージャ３３０によって新たに電力を供給したメモリバンク３１０に情報を転送するために必要とされる時間量を示す。
【００６７】
他の実施形態は、メモリバンク３１０と関連付けられるエラー数および／またはエラー率を示す電力メトリックを有し得る。例えば、電力メトリックは、メモリバンク３１０によって報告されるエラー訂正数を示し得る。
【００６８】
代替の実施形態において、電力メトリックは、メモリバンク３１０によって消費されるエネルギー量および／または電力量を示す。消費されるエネルギー量または電力量としては、漏出エネルギー量および／または動的エネルギー量が挙げられる。漏出エネルギーは、メモリバンク３１０の機能に関与しない、メモリバンク３１０によって消費されるエネルギーおよび／または電力を指す。動的エネルギーは、メモリバンク３１０が特定の機能を行っているときにメモリバンク３１０によって消費されるエネルギーおよび／または電力を指す。いくつかの実施形態において、動的エネルギーは、アクセス単位で決定される。例えば、動的エネルギーは、メモリバンク３１０がアクセスされる（例えば、メモリバンク３１０から読み出され、または、メモリバンク３１０に書き込まれる）度に、メモリバンク３１０によって消費されるエネルギー量として計算され得る。
【００６９】
電力メトリックは、いくつかの実施形態において、電力を遮断したメモリバンク３１０と、電力を供給した後に、電力を遮断したメモリバンク３１０によって記憶される情報と関連付けられる構成要素と、の距離を示し得る。いくつかの実施形態において、距離は、電力を遮断したメモリバンク３１０を構成要素に接続するワイヤおよび／または回路の長さを指す。距離は、電力を遮断した１つ以上のメモリバンク３１０と、１つ以上の構成要素との平均距離を指し得る。いくつかの実施形態において、構成要素は、電力を供給した後に、電力を遮断したメモリバンク３１０に情報を転送する、電力を供給したメモリバンク３１０を含む。加えて、または代替として、構成要素は、電力を供給した後に、電力を遮断したメモリバンク３１０によって記憶された情報にアクセスするプロセッサを含む。
【００７０】
いくつかの実施形態において、電力メトリックは、電力を遮断したメモリバンク３１０がアクセスされた回数を示す。例えば、電力メトリックは、電力を遮断したメモリバンク３１０に含まれる命令が（例えば、プロセッサによって）読み出され、または、書き込まれた回数を含み得る。
【００７１】
電力メトリックは、電力を供給した後に電力を遮断したメモリバンク３１０に転送される情報のタイプおよび／または情報量に基づき得る。例えば、電力メトリックは、電力を供給した後に、電力を遮断したメモリバンク３１０に情報を転送するために消費される電力量に基づき得る。加えて、または代替として、電力メトリックは、電力を供給した後に、電力を遮断したメモリバンク３１０に情報を転送することによって節約される電力量に基づき得る。
【００７２】
いくつかの実施形態において、電力メトリックは、電力を供給した後に、電力を遮断したメモリバンク３１０に転送されるネイティブおよび／または非ネイティブな情報（例えば、転送するメモリバンク３１０に対してネイティブおよび／もしくは非ネイティブである情報、ならびに／または、電力を遮断したメモリバンク３１０に対してネイティブおよび／もしくは非ネイティブである情報）を含むメモリブロック数を示す。いくつかの実施形態において、電力メトリックは、電力を供給した後に、電力を遮断したメモリバンク３１０に転送される共有および／または非共有情報を含むメモリブロック数を示す。いくつかの実施形態において、性能メトリックは、命令（または非命令）および／または読み出し専用情報（または読み出し／書き込み情報）を含む、メモリバンク３１０内のメモリブロック数を示す。加えて、または代替として、性能メトリックは、電力を供給した後に転送される特定のタイプのメモリブロック（例えば、命令ブロック、非命令ブロック、読み出し専用ブロック、読み出し／書き込みブロック等）の数を示す。
【００７３】
別の実施形態において、電力メトリックは、ある期間（例えば、クロックサイクル、バスサイクル、マイクロ秒、秒等）にわたって測定される。加えて、または代替として、電力メトリックは、複数の期間にわたって算出される平均電力メトリックであってよい。加えて、または代替として、電力メトリックは、比率（例えば、率、パーセンテージ等）で測定され得る。
【００７４】
さらに別の実施形態において、メモリマネージャ３３０は、複数の電力メトリックに基づいて電力スコアを算出する。加えて、または代替として、メモリマネージャ３３０は、メモリバンク３１０に電力を供給することによる性能メトリックの向上に基づいて、電力スコアを算出する。例えば、メモリマネージャ３３０は、メモリバンク３１０に電力を供給する前に性能メトリックを算出してもよく、また、メモリバンク３１０に電力を供給することにより性能メトリック対して予測される向上を決定し得る。電力スコアは、性能メトリックに対して予測される向上に基づき得る。加えて、メモリマネージャ３３０は、電力スコアを決定するときに、電力メトリックおよび／または予測される性能メトリックの向上に重みを付け得る。
【００７５】
図４に関して一連のブロックが説明されているが、ブロックの順序は、いくつかの実施形態において変更され得る。加えて、または代替として、非依存的なブロックが並列に行われ得る。
【００７６】
図５は、メモリバンクと関連付けられる性能メトリックを記憶する例示的なデータ構造５００の図である。いくつかの実施形態において、データ構造５００は、図２および図３で示される１つ以上のデバイスおよび／または構成要素と関連付けられるメモリデバイス（例えば、ＲＡＭ、ハードディスク等）に記憶される。例えば、データ構造５００は、メモリ２３０によって、および／または、メモリバンク３１０と関連付けられるメモリレジスタに記憶され得る。
【００７７】
データ構造５００は、メモリバンク識別子フィールド５１０と、電力ステータスフィールド５２０と、メモリミスフィールド５３０と、ダーティ情報ブロックフィールド５４０と、非ネイティブ情報ブロックフィールド５５０と、メモリバンク集計フィールド５６０と等の、一群のフィールドを含む。
【００７８】
メモリバンク識別子フィールド５１０は、メモリバンク３１０を識別する情報を記憶する。例えば、メモリバンク３１０は、メモリバンク３１０と関連付けられる番号、名称、アドレス、場所、ＣＰＵ等によって識別され得る。
【００７９】
電力ステータスフィールド５２０は、メモリバンク識別子フィールド５１０によって識別される、メモリバンク３１０の電力ステータスを識別する情報を記憶する。例えば、電力ステータスは、電力を遮断している状態（例えば、オフ）、電力を供給している状態（例えば、オン）、低性能／電力状態（例えば、スリープまたはスタンバイ）等であってよい。いくつかの実施形態において、メモリマネージャ３３０は、電力を供給したメモリバンク３１０に対してのみ性能メトリックを決定する。
【００８０】
メモリミスフィールド５３０は、メモリバンク識別子フィールド５１０によって識別されるメモリバンク３１０のメモリミス数および／またはメモリミス率を識別する情報を記憶する。例えば、メモリミスフィールド５１０は、メモリミス数、ある期間あたりのメモリミス数（例えば、メモリミス率）、および／または、メモリミス数とメモリアクセス要求総数との比率（例えば、メモリミス比率またはパーセンテージ）を記憶し得る。
【００８１】
ダーティ情報ブロックフィールド５４０は、ダーティ情報を含む、メモリバンク識別子フィールド５１０によって識別されるメモリバンク３１０のメモリブロック数を識別する情報を記憶する。いくつかの実施形態において、メモリブロック数は、（例えば、ダーティ情報を含むメモリブロック数と、メモリバンク３１０に含まれるメモリブロック総数との）比率で表される。
【００８２】
非ネイティブ情報ブロックフィールド５５０は、非ネイティブ情報を含む、メモリバンク識別子フィールド５１０によって識別されるメモリバンク３１０のメモリブロック数を識別する情報を記憶する。いくつかの実施形態において、メモリブロック数は、（例えば、非ネイティブ情報を含むメモリブロック数と、メモリバンク３１０に含まれるメモリブロック総数との）比率で表される。
【００８３】
メモリバンク集計フィールド５６０は、メモリバンク識別子フィールド５１０によって識別される複数のメモリバンク３１０の（例えば、フィールド５２０〜５５０の）集計性能メトリックを識別する情報を記憶する。例えば、メモリバンク集計フィールド５６０は、複数の性能メトリックの平均、複数の性能メトリックの和、複数の性能メトリックの積、複数の性能メトリックの標準偏差等を記憶し得る。いくつかの実施形態において、メモリバンク集計フィールド５６０は、メモリバンク３１０のステータスに基づいて、メモリバンク３１０の集計情報を記憶する。例えば、メモリバンク集計フィールド５６０は、電力を供給したメモリバンク３１０の集計情報を記憶し得る。
【００８４】
いくつかの実施形態において、単一のメモリバンク３１０と関連付けられる情報は、データ構造５００の行で概念的に表される。例えば、データ構造５００の第２の行は、メモリバンク２として識別されるメモリバンク３１０に対応する。メモリバンク２は、オン（例えば、電力を供給した）のステータスを有し、１パーセント（１％）のメモリミス率を有し、ダーティ情報を有する３つのメモリブロックを含み、また、非ネイティブ情報を有する１０個のメモリブロックを含む。
【００８５】
いくつかの実施形態において、複数のメモリバンク３１０と関連付けられる情報は、データ構造５００の行で概念的に表される。例えば、データ構造５００の第５の行は、メモリバンク２およびメモリバンク４として識別されるメモリバンク３１０の集計に対応する。集計したメモリバンク３１０は、３パーセント（３％）の平均メモリミス率を有し、ダーティ情報を有する１５個のメモリブロックの総計を含み、また、非ネイティブ情報を有する２５個のメモリブロックの総計を含む。
【００８６】
データ構造５００は、説明の目的でフィールド５１０〜５６０を含む。実際に、データ構造５００は、図５で例示されるものと比べて、追加的なフィールド、より少ないフィールド、異なるフィールド、または、異なるように配設されたフィールドを含み得る。いくつかの実施形態において、データ構造５００は、図５と関連して論じられるものと比べて、追加的な性能メトリック、より少ない性能メトリック、または、異なる性能メトリックに関する情報を記憶する。加えて、データ構造５００で例示される番号および／または値は、説明の目的で提供される。さらに、データ構造５００は、行および列を有するテーブルで表されているが、実際には、データ構造５００は、リンクリスト、ツリー、ハッシュテーブル、データベース等の任意のタイプのデータ構造または任意の他のタイプのデータ構造を含み得る。いくつかの実施形態において、データ構造５００は、デバイスおよび／または構成要素によって生成される情報を含む。加えて、または代替として、データ構造５００は、ユーザによって提供される情報および／またはデバイスによって自動的に提供される情報等のように、別のソースから提供される情報を含み得る。
【００８７】
図６は、メモリバンクに電力を供給することをトリガーし得る条件を記憶する例示的なデータ構造の図である。いくつかの実施形態において、データ構造６００は、図２および図３で示される１つ以上のデバイスおよび／または構成要素と関連付けられるメモリデバイス（例えば、ＲＡＭ、ハードディスク等）に記憶される。例えば、データ構造６００は、メモリ２３０によって、および／または、メモリバンク３１０と関連付けられるメモリレジスタによって記憶され得る。
【００８８】
データ構造６００は、イベント識別子フィールド６１０と、メモリミスフィールド６２０と、ダーティ情報ブロックフィールド６３０と、非ネイティブ情報ブロックフィールド６４０と等の、一群のフィールドを含む。
【００８９】
イベント識別子フィールド６１０は、フィールド６２０〜６４０で識別される条件に基づいてトリガーされ得るイベントを識別する情報を記憶する。例えば、イベント識別子フィールド６１０は、メモリバンクに電力を供給するイベント、または、メモリバンクの電力を遮断するイベントを識別し得る。
【００９０】
メモリミスフィールド６２０は、イベント識別子フィールド６１０によって識別されるイベントをトリガーする条件を識別する情報を記憶する。例えば、メモリバンクに電力を供給することは、メモリミスのパーセンテージ（例えば、単一のメモリバンク３１０のパーセンテージ、複数のメモリバンク３１０の集計パーセンテージ、等）が、５パーセント（５％）の閾値を超えたときにトリガーされ得る。
【００９１】
ダーティ情報ブロックフィールド６３０は、イベント識別子フィールド６１０によって識別されるイベントをトリガーする条件を識別する情報を記憶する。例えば、メモリバンクに電力を供給することは、ダーティ情報を含むメモリブロック数（例えば、単一のメモリバンク３１０に対する数、複数のメモリバンク３１０に対する集計数、等）が、１０ブロックの閾値を超えたときにトリガーされ得る。
【００９２】
非ネイティブ情報ブロックフィールド６４０は、イベント識別子フィールド６１０によって識別されるイベントをトリガーする条件を識別する情報を記憶する。例えば、メモリバンクに電力を供給することは、非ネイティブ情報を含むメモリブロック数（例えば、単一のメモリバンク３１０に対する数、複数のメモリバンク３１０に対する集計数、等）が、２０ブロックの閾値を超えたときにトリガーされ得る。
【００９３】
いくつかの実施形態において、フィールド６２０〜６４０によって識別される条件は、単一のメモリバンク３１０の条件を識別する。あるいは、フィールド６２０〜６４０によって識別される条件は、（例えば、メモリバンク集計フィールド５６０によって記憶された情報に基づいて）複数のメモリバンク３１０の条件を識別する。いくつかの実施形態において、イベント識別子フィールド６１０によって識別されるイベントは、フィールド６２０〜６４０によって識別される単一の条件が満たされたときにトリガーされる。または、イベント識別子フィールド６１０によって識別されるイベントは、フィールド６２０〜６４０によって識別される複数の条件が満たされたときにトリガーされる。
【００９４】
データ構造６００は、説明の目的でフィールド６１０〜６４０を含む。実際には、データ構造６００は、図６で例示されるものと比べて、追加的なフィールド、より少ないフィールド、異なるフィールド、または、異なるように配設されたフィールドを含み得る。いくつかの実施形態において、データ構造６００は、図６と関連して論じられるものと比べて、追加的な条件、より少ない条件、または、異なる条件に関する情報を記憶する。加えて、データ構造６００で例示される番号および／または値は、説明の目的で提供される。さらに、データ構造６００は、行および列を有するテーブルで表されているが、実際には、データ構造６００は、リンクリスト、ツリー、ハッシュテーブル、データベース等の任意のタイプのデータ構造または任意の他のタイプのデータ構造を含み得る。いくつかの実施形態において、データ構造６００は、デバイスおよび／または構成要素によって生成される情報を含む。加えて、または代替として、データ構造６００は、ユーザによって提供される情報および／またはデバイスによって自動的に提供される情報等のように、別のソースから提供される情報を含み得る。
【００９５】
図７は、メモリバンクと関連付けられる電力メトリックを記憶する例示的なデータ構造７００の図である。いくつかの実施形態において、データ構造７００は、図２および図３で示される１つ以上のデバイスおよび／または構成要素と関連付けられるメモリデバイス（例えば、ＲＡＭ、ハードディスク等）に記憶される。例えば、データ構造７００は、メモリ２３０によって、および／または、メモリバンク３１０と関連付けられるメモリレジスタによって記憶され得る。
【００９６】
データ構造７００は、メモリバンク識別子フィールド７１０と、電力ステータスフィールド７２０と、電力供給までの時間フィールド７３０と、報告されたエラー数フィールド７４０と、アクセス数フィールド７５０と、電力スコアフィールド７６０等との、一群のフィールドを含む。
【００９７】
メモリバンク識別子フィールド７１０は、メモリバンク３１０を識別する情報を記憶する。例えば、メモリバンク３１０は、メモリバンク３１０と関連付けられる番号、名称、アドレス、場所、ＣＰＵ等によって識別され得る。
【００９８】
電力ステータスフィールド７２０は、メモリバンク識別子フィールド７１０によって識別される、メモリバンク３１０の電力ステータスを識別する情報を記憶する。例えば、電力ステータスは、電力を遮断している状態（例えば、オフ）、または電力を供給している状態（例えば、オン）であってよい。いくつかの実施形態において、メモリマネージャ３３０は、電力を遮断したメモリバンク３１０に対してのみ電力メトリックを決定する。
【００９９】
電力供給までの時間フィールド７３０は、メモリマネージャ３３０および／またはＣＰＵ３２０が、メモリバンク識別子フィールド７１０によって識別されるメモリバンク３１０に電力を供給するまでにかかる時間量を識別する情報を記憶する。例えば、電力供給までの時間フィールド７３０は、マイクロ秒、クロックサイクル、バスサイクル、または別の単位時間で、メモリバンク３１０に電力を供給するまでの時間量を記憶し得る。
【０１００】
報告されたエラー数フィールド７４０は、メモリバンク識別子フィールド７１０によって識別されるメモリバンク３１０によって報告されたエラー数を識別する情報を記憶する。いくつかの実施形態において、報告されたエラー数は、ある期間に基づく（例えば、１クロックサイクルあたりの報告されたエラー数）。
【０１０１】
アクセス数フィールド７５０は、メモリバンク識別子フィールド７１０によって識別されるメモリバンク３１０へのアクセス数を識別する情報を記憶する。例えば、アクセス数フィールド７５０は、プロセッサがメモリバンク３１０にアクセスした（例えば、メモリバンク３１０から読み出した、または、メモリバンク３１０に書き込んだ）回数を識別する情報を記憶し得る。
【０１０２】
電力スコアフィールド７６０は、メモリバンク識別子フィールド７１０によって識別されるメモリバンク３１０に対して算出される電力スコアを識別する情報を記憶する。いくつかの実施形態において、電力スコアは、フィールド７３０〜７５０によって識別される電力メトリック等のような、１つ以上の電力メトリックに基づく。加えて、または代替として、メモリマネージャ３３０は、電力スコアを算出するときに、電力メトリックに重みを付ける。例えば、電力スコアは、以下の式を使用して算出され得る。
【０１０３】
電力スコア＝（１×電力を供給するまでの時間）＋（３×報告されたエラー数）＋（０．００５×アクセス数）。
【０１０４】
単一のメモリバンク３１０と関連付けられる情報は、データ構造７００の行で概念的に表される。例えば、データ構造７００の第１の行は、メモリバンク１として識別されるメモリバンク３１０に対応する。メモリバンク１は、オフ（例えば、電力を遮断した）のステータスを有し、５マイクロ秒の電源投入までの時間を有し、１クロックサイクル当たり５つの報告されたエラー数を有し、５，０００のアクセス数を有し、また、上記の電力スコアの式を使用して算出される、４５の電力スコアを有する。いくつかの実施形態では、電力スコアを算出するために他の式が使用される。
【０１０５】
データ構造７００は、説明の目的でフィールド７１０〜７６０を含む。実際には、データ構造７００は、図７で例示されるものと比べて、追加的なフィールド、より少ないフィールド、異なるフィールド、または、異なるように配設されたフィールドを含み得る。いくつかの実施形態において、データ構造７００は、図７と関連して論じられるものと比べて、追加的な電力メトリックおよび／もしくは予測性能メトリックの向上、より少ない電力メトリックおよび／もしくは予測性能メトリックの向上、または、異なる電力メトリックおよび／もしくは予測性能メトリックの向上に関する情報を記憶する。加えて、データ構造７００で例示される番号および／または値は、説明の目的で提供される。さらに、データ構造７００は、行および列を有するテーブルで表されているが、実際には、データ構造７００は、リンクリスト、ツリー、ハッシュテーブル、データベース等の任意のタイプのデータ構造、または任意の他のタイプのデータ構造を含み得る。いくつかの実施形態において、データ構造７００は、デバイスおよび／または構成要素によって生成される情報を含む。加えて、または代替として、データ構造７００は、ユーザによって提供される情報および／またはデバイスによって自動的に提供される情報等のように、別のソースから提供される情報を含み得る。
【０１０６】
図８は、メモリバンクに記憶される情報の特性を記憶する例示的なデータ構造８００の図である。いくつかの実施形態において、データ構造８００は、図２および図３で示される１つ以上のデバイスおよび／または構成要素と関連付けられるメモリデバイス（例えば、ＲＡＭ、ハードディスク等）に記憶される。例えば、データ構造８００は、メモリ２３０によって、および／または、メモリバンク３１０と関連付けられるメモリレジスタによって記憶され得る。
【０１０７】
いくつかの実施形態において、メモリマネージャ３３０は、電力を遮断したメモリバンク３１０に電力を供給すると決定するために、電力を遮断したメモリバンク３１０のうちいくつのメモリバンクに電力を供給するかを決定するために、および／または、どの電源を遮断したメモリバンク３１０のうちどのメモリバンクに電力を供給するかを決定するために、メモリバンク３１０に記憶された情報の特性を使用する。いくつかの実施形態において、電力メトリックおよび／または性能メトリックは、メモリバンク３１０に記憶された情報の特性に基づく。
【０１０８】
データ構造８００は、メモリバンク識別子フィールド８１０と、電力ステータスフィールド８２０と、ネイティブブロック数フィールド８３０と、バンク２に対してネイティブなブロック数フィールド８４０と、バンク５に対してネイティブなブロック数フィールド８５０と、ダーティ情報を有するブロック数フィールド８６０と、メモリバンク集計フィールド８７０と等の、一群のフィールドを含む。
【０１０９】
バンク２に対してネイティブなブロック数フィールド８４０と、バンク５に対してネイティブなブロック数フィールド８５０とは、メモリバンク２およびメモリバンク５の電力を遮断しているときに、データ構造８００に記憶される。いくつかの実施形態において、１つ以上の他のメモリバンク３１０は、電力を遮断しており、また、データ構造８００は、電源を遮断したメモリバンク３１０に対してネイティブなブロック数に関する情報を記憶する１つ以上のフィールドを含む。
【０１１０】
メモリバンク識別子フィールド８１０は、メモリバンク３１０を識別する情報を記憶する。例えば、メモリバンク３１０は、メモリバンク３１０と関連付けられる番号、名称、アドレス、場所、ＣＰＵ等によって識別され得る。
【０１１１】
電力ステータスフィールド８２０は、メモリバンク識別子フィールド８１０によって識別される、メモリバンク３１０の電力ステータスを識別する情報を記憶する。例えば、電力ステータスは、電力を遮断している状態（例えば、オフ）、電力を供給している状態（例えば、オン）であり得る。
【０１１２】
ネイティブブロック数フィールド８３０は、メモリバンク識別子フィールド８１０によって識別されるメモリバンク３１０に対してネイティブであるブロック数を識別する情報を記憶する。例えば、特定のメモリバンク３１０に対してネイティブなブロックは、全てのメモリバンク３１０に電力を供給しているときに特定のメモリバンク３１０によって記憶されるブロックを指し得る。
【０１１３】
バンク２に対してネイティブなブロック数フィールド８４０は、メモリバンク２に対してネイティブである、メモリバンク識別子フィールド８１０によって識別されるメモリバンク３１０によって記憶されるブロック数（例えば、メモリバンク２に電力を供給しているときに、および／または、全てのメモリバンク３１０に電力を供給しているときに、メモリバンク２によって記憶されるブロック数、メモリバンク２に電力を供給しているときに、および／または、全てのメモリバンク３１０に電力を供給しているときに、メモリバンク２にアクセスするプロセッサによってアクセスされるブロック数等）を識別する情報を記憶する。バンク５に対してネイティブなブロック数フィールド８５０は、メモリバンク５に対してネイティブである、メモリバンク識別子フィールド８１０によって識別されるメモリバンク３１０によって記憶されるブロック数を識別する情報を記憶する。電力を供給したメモリバンク３１０は、電力を遮断したメモリバンク３１０に対してネイティブである情報を（例えば、メモリブロックに）記憶する。図８で例示される実施例において、メモリバンク２およびメモリバンク５は、電力を遮断しており、メモリバンク１，３，４は、メモリバンク２，５に対してネイティブである情報を記憶する。
【０１１４】
ダーティ情報を有するブロック数フィールド８５０は、ダーティ情報（例えば、別のメモリバンク３１０に転送される前にメインメモリに書き込まなければならない情報）を含む、メモリバンク識別子フィールド８１０によって識別されるメモリバンク３１０によって記憶される、ブロック数を識別する情報を記憶する。
【０１１５】
メモリバンク集計フィールド８７０は、メモリバンク識別子フィールド８１０によって識別される複数のメモリバンク３１０の（例えば、フィールド８２０〜８６０の）集計特性を識別する情報を記憶する。例えば、メモリバンク集計フィールド８７０は、複数の特性の平均、複数の特性の和、複数の特性の積、複数の特性の標準偏差等を記憶し得る。いくつかの実施形態において、メモリバンク集計フィールド８７０は、メモリバンク３１０のステータスに基づいて、メモリバンク３１０の集計情報を記憶する。例えば、メモリバンク集計フィールド８７０は、電力を供給したメモリバンク３１０の集計情報を記憶し得る。
【０１１６】
いくつかの実施形態において、単一のメモリバンク３１０と関連付けられる情報は、データ構造８００の行で概念的に表される。例えば、データ構造８００の第１の行は、メモリバンク１として識別されるメモリバンクに対応する。メモリバンク１は、オン（例えば、電力を供給した）のステータスを有し、９０個のネイティブメモリブロックを含み、メモリバンク２に対してネイティブである１８個メモリブロックを含み、メモリバンク５に対してネイティブである２０個のメモリブロックを含み、また、ダーティ情報を有する１０個のメモリブロックを含む。
【０１１７】
加えて、または代替として、複数のメモリバンク３１０と関連付けられる情報は、データ構造８００の行で概念的に表される。例えば、データ構造８００の第６の行は、メモリバンク識別子フィールド８１０によって識別されるメモリバンク３１０の集計に対応する。データ構造８００の第６の行は、３つのメモリバンク３１０に電力を供給しており（オンであり）、２つのメモリバンクの電力を遮断しており（オフであり）、ネイティブブロックの和が２８５であり、メモリバンク２に対してネイティブなブロックの和が４２であり、メモリバンク５に対してネイティブなブロックの和が５７であり、また、ダーティ情報を含むブロックの和が４５であることを示す。
【０１１８】
いくつかの実施形態において、メモリマネージャ３３０は、メモリバンク３１０に記憶された情報の特性が閾値を満たすときに、メモリバンク３１０に電力を供給するべきであると決定する。例えば、メモリマネージャ３３０は、単一のメモリバンク３１０がダーティ情報を有する２５個を超えるブロックを含むときに、および／または、１組のメモリバンク３１０がダーティ情報を含む４０個を超えるブロックの集計（例えば、和、積、平均等）を含むときに、メモリバンク３１０に電力を供給すると決定し得る。
【０１１９】
別の実施形態において、メモリマネージャ３３０は、電力を供給するときに転送するブロック数、非ネイティブのブロック数（例えば、総数または特定のメモリバンク３１０に記憶された数）、ダーティブロック数等の特性に基づいて、電力を供給するメモリバンク３１０の数を決定する。いくつかの実施形態において、メモリマネージャ３３０は、いくつのメモリバンク３１０および／またはどのメモリバンク３１０に電力を供給するかを決定するために、特性と閾値とを比較する。例えば、メモリマネージャ３３０は、電力を供給するときに転送するメモリブロック数と、閾値とを比較し得る。例えば、５０個という許容される転送ブロックの閾値は、メモリマネージャ３３０が、メモリバンク２に電力を供給することを可能にする（４２個の転送ブロックを受け取る）。６０個という許容される転送ブロックの閾値は、メモリマネージャ３３０が、両方ともではないが、メモリバンク２（４２個の伝送ブロックを受け取る）またはメモリバンク５（５７個の転送ブロックを受け取る）に電力を供給することを可能にする。１００個という許容可能な転送ブロックの閾値は、メモリマネージャ３３０が、メモリバンク２、メモリバンク５、または、メモリバンク２，５の両方に電力を供給することを可能にする（その結果、合計９９個の転送ブロックとなる）。
【０１２０】
さらに別の実施形態において、メモリマネージャ３３０は、複数のメモリバンク３１０にわたって特性を平衡させることに基づいて、いくつのメモリバンク３１０および／またはどのメモリバンク３１０に電力を供給するかを決定する。例えば、メモリバンク３３０は、結果として１組のメモリバンク３１０に記憶された非ネイティブのブロック数（または、ダーティブロック、命令ブロック等）の差（例えば、予測差）を最小にするメモリバンク３１０に電力を供給することに基づいて、いくつのおよび／またはどのメモリバンク３１０かを決定し得る。
【０１２１】
メモリマネージャ３３０は、特性の比較に基づいて、どのメモリバンク３１０に電力を供給するのかを決定し得る。例えば、メモリマネージャ３３０は、メモリバンク５に電力を供給することが、メモリバンク２に電力を供給すること（４２ブロック）よりも、他のメモリバンク３１０からより多くのブロック（５７ブロック）を解放するので、メモリバンク２ではなくメモリバンク５に電力を供給し得る。別の例として、メモリマネージャ３３０は、メモリバンク５に電力を供給することによって５７個のブロックを転送するよりも、メモリバンク２に電力を供給することによって４２個のブロックを転送する方が必要とする電力が少ないことから、メモリバンク５ではなくメモリバンク２に電力を供給し得る。
【０１２２】
いくつかの実施形態において、メモリマネージャ３３０は、ユーザによって指定される最適化基準に基づいて、どのメモリバンク３１０に電力を供給するのかを決定する。本明細書で使用される場合、「最適化する」とは、最小にすること、最大にすること、または、目標値に最も近くすることを指す。例えば、最適化基準は、（例えば、メモリバンク３１０、ＣＰＵ３２０、ならびに／または、メモリバンク３１０および／もしくはＣＰＵ３２０を含むシステムの）電力消費を最適化すること、性能を最適化すること、転送ブロック数を最適化すること、１組のメモリバンク３１０によって記憶される非ネイティブブロック数を最適化すること、特定のタイプのブロック（例えば、命令ブロック、ネイティブブロック、非ネイティブブロック、共有ブロック、非共有ブロック、ダーティブロック、非ダーティブロック、等）の転送を最適化すること、特定の電力メトリックを最適化すること、１組の電力メトリックを最適化すること、電力スコアを最適化すること、特定の性能メトリックを最適化すること、１組の性能メトリックを最適化すること、性能スコアを最適化すること、特定のメモリバンク３１０への転送数を最適化すること、１組のメモリバンク３１０への転送数を最適化すること、解放されるブロック数（例えば、転送後に別の情報を記憶するために解放された、転送前にメモリバンク３１０に情報を含むメモリブロック数）を最適化すること、および／または、これらのまたは他の最適化基準の任意の組み合わせを含み得る。
【０１２３】
図８と関連して本明細書で論じられる特定の特性、閾値、メモリバンク、メモリブロックタイプおよび最適化基準は、一例として提供される。いくつかの実施形態において、メモリマネージャ３３０は、メモリバンク３１０に電力を供給するか、いくつのメモリバンク３１０に電力を供給するか、および／または、どのメモリバンク３１０に電力を供給するかを決定するときに、図８と関連して本明細書で論じられるものと異なる特性、閾値、メモリバンク、メモリブロックタイプおよび最適化基準を使用する。いくつかの実施形態において、メモリマネージャ３３０は、特性、閾値、メモリバンク、メモリブロックのタイプ、および、最適化基準を決定するために、ユーザから入力を受け取る。
【０１２４】
データ構造８００は、説明の目的でフィールド８１０〜８７０を含む。実際には、データ構造８００は、図８で例示されるものと比べて、追加的なフィールド、より少ないフィールド、異なるフィールド、または、異なるように配設されたフィールドを含み得る。加えて、データ構造８００で例示される番号および／または値は、説明の目的で提供される。さらに、データ構造８００は、行および列を有するテーブルで表されているが、実際には、データ構造８００は、リンクリスト、ツリー、ハッシュテーブル、データベース等の任意のタイプのデータ構造、または、任意の他のタイプのデータ構造を含み得る。いくつかの実施形態において、データ構造８００は、デバイスおよび／または構成要素によって生成される情報を含む。加えて、または代替として、データ構造８００は、ユーザによって提供される情報および／またはデバイスによって自動的に提供される情報等のように、別のソースから提供される情報を含み得る。
【０１２５】
図９は、図４で例示される例示的なプロセス４００に関連する、例示的な実施形態９００の図である。図９は、メモリマネージャ３３０が、最良の電力スコアを有するメモリバンク３１０に電力を供給する実施形態９００を例示する。
【０１２６】
実施形態９００で示されるように、メモリマネージャ３３０は、複数の電力を遮断したメモリバンク３１０の電力スコアを算出する。例えば、メモリバンク１およびメモリバンク３は、電力を遮断しており、メモリマネージャ３３０は、メモリバンク１およびメモリバンク３の電力スコアを算出する。実施形態９００において、メモリマネージャ３３０は、メモリバンク１について４５の電力スコア、および、メモリバンク３について７１の電力スコアを算出する（どのようにメモリマネージャ３３０が電力スコアを計算し得るのかという実施例については、図７の電力スコアフィールド７６０を参照されたい）。実施形態９００では、より高い電力スコアよりもより低い電力スコアが望まれる。したがって、メモリバンク１（４５）は、メモリバンク３（７１）よりも良好な電力スコアを有する。メモリマネージャ３３０は、メモリバンク１，３の電力スコアを比較することに基づいて、電力を供給するためのメモリバンク１を選択する。
【０１２７】
メモリバンク３１０の数、各メモリバンク３１０のステータス、および、電力スコア等の図９で示される情報は、一例として提供される。いくつかの実施形態は、図９で示されるものと比べて、追加的な情報、より少ない情報、または、異なる情報を含む。いくつかの実施形態において、メモリマネージャ３３０は、電力スコアの式を決定するために、ユーザから入力を受け取る。
【０１２８】
図１０は、図４で例示されるプロセス４００に関連する、別の例示的な実施形態１０００の図である。図１０は、メモリマネージャ３３０が、メモリバンク３１０に電力を供給し、そして、他のメモリバンク３１０から電力を供給したメモリバンク３１０に情報を転送する実施形態１０００を例示する。
【０１２９】
実施形態１０００で示されるように、メモリマネージャ３３０は、最良の電力スコア（例えば、電力を遮断した、またはオフと示される、メモリバンク３よりも良好な電力スコア）を有するメモリバンク１に基づいて、メモリバンク１に電力を供給する。実施形態１０００において、メモリバンク２，４，５は、メモリバンク１に転送する情報を含む。メモリマネージャ３３０はこの情報の転送を行い、これにより、メモリバンク２，４，５上のメモリを解放する。
【０１３０】
メモリバンク３１０の数および各メモリバンク３１０のステータス等の図１０で例示される情報は、一例として提供される。実際に、実施形態１０００は、図１０で例示されるものと比べて、追加的な情報、より少ない情報、または、異なる情報を含み得る。
【０１３１】
本明細書で説明された実施形態は、システムの性能および電力消費を最適化するために、いつメモリバンクに電力を供給するか、いくつのメモリバンクに電力を供給するか、および／または、どのメモリバンクに電力を供給するかを決定する際に、ＣＰＵをサポートし得る。
【０１３２】
前述の開示は、具体例および説明を提供するが、網羅的であること、または、実施形態が開示された正確な形態に限定されることを意図しない。修正および変更は、上記の開示を考慮して可能であり、または、実施形態の実施から獲得され得る。
【０１３３】
本明細書で使用される場合、「構成要素」という用語は、ハードウェア、ファームウェア、または、ハードウェアおよびソフトウェアの組み合わせとして広義に解釈されることが意図される。
【０１３４】
いくつかの実施形態は、閾値と併せて本明細書で説明される。閾値に対する値の関係を説明するために本明細書で使用される場合、「〜を超える」という用語（または類似する用語）は、「〜以上」という用語（または類似する用語）と同じ意味で使用され得る。同様に、閾値に対する値の関係を説明するために本明細書で使用される場合、「〜未満」という用語（または類似する用語）は、「〜以下」という用語（または類似する用語）と同じ意味で使用され得る。本明細書で使用される場合、閾値を「満たす」（または類似する用語）は、「閾値を超える」、「閾値以上である」、「閾値未満である」、「閾値以下である」、または、類似する用語と同じ意味で使用され得る。
【０１３５】
本明細書で説明されたシステムおよび／または方法は、図で例示される実施形態において、数多くの異なる形態のソフトウェア、ファームウェアおよびハードウェアで実現され得ることが明らかになるであろう。そのようなシステムおよび／または方法を実現するために使用される実際のソフトウェアコードまたは特殊な制御ハードウェアは、実施形態を限定するものではない。したがって、システムおよび／または方法の動作および挙動は、特定のソフトウェアコードに関係なく説明されており、ソフトウェアおよび制御ハードウェアは、本明細書の説明に基づいてシステムおよび／または方法を実現するために設計できることが理解される。
【０１３６】
特徴の特定の組み合わせが特許請求の範囲に記載され、および／または、明細書で説明されるが、そのような組み合わせは、可能な実施形態の開示を限定することを意図しない。実際に、そのような特徴の多くは、特許請求の範囲に具体的に記載されていない、および／または、明細書で説明されていない方法で組み合わせられ得る。以下に列記される各従属請求項は、１つの請求項だけに直接依存し得るが、可能な実施形態の開示は、特許請求の範囲の組の中の他のあらゆる請求項と組み合わせた各従属請求項を含む。
【０１３７】
本明細書で使用されるいかなる要素、行為または指示も、別途明確にそのように説明されない限り、決定的または不可欠なものとして解釈するべきではない。また、本明細書で使用される場合、冠詞「ａ」および「ａｎ」は、１つ以上の品目を含むことが意図され、また、「１つ以上」と同じ意味で使用され得る。１つだけの品目を意図する場合には、「１つ」という用語または類似する言語が使用される。さらに、「〜に基づいて」という慣用句は、別途明確に指示されない限り、「〜に少なくとも部分的に基づく」ことを意味することが意図される。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサが、メモリバンクに電力を供給するという指示を受け取ることと、
前記プロセッサが、前記指示を受け取ることに基づいて、複数の電力を遮断したメモリバンクに対応する複数の電力スコアを決定することであって、前記複数の電力スコアの各々は、前記複数の電力を遮断したメモリバンクのうち電力を遮断した１つのメモリバンクに電力を供給することと関連付けられる電力メトリックに対応する、ことと、
前記プロセッサが、前記複数の電力スコアに基づいて、前記複数の電力を遮断したメモリバンクのうち選択されたメモリバンクに電力を供給することと、を含む、方法。
【請求項２】
前記電力メトリックは、
前記電力を遮断したメモリバンクに電力を供給することと関連付けられる電力消費、
前記電力を遮断したメモリバンクに電力を供給するために必要とされる時間量、
前記電力を遮断したメモリバンクによって報告されたエラー数、
前記電力を遮断したメモリバンクによって消費される電力量、
前記電力を遮断したメモリバンクと、前記電力を遮断したメモリバンクと関連付けられる構成要素との間の距離、
前記電力を遮断したメモリバンクへのアクセス数、
前記電力を遮断したメモリバンクに転送されるメモリブロック数、
前記電力を遮断したメモリバンクに対してネイティブである、電力を供給したメモリバンクに記憶されるメモリブロック数、または、
第１の電力を供給したメモリバンクに記憶された第１の非ネイティブのメモリブロック数と、第２の電力を供給したメモリバンクに記憶された第２の非ネイティブのメモリブロック数との予測差であって、前記選択されたメモリバンクに電力を供給することに起因する予測差、のうち少なくとも１つに基づく、請求項１に記載の方法。
【請求項３】
前記電力メトリックは、前記選択されたメモリバンクに電力を供給する前に測定された性能メトリックの値と、前記選択されたメモリバンクに電力を供給した後の前記性能メトリックの推定値との差に基づく、請求項１に記載の方法。
【請求項４】
各電力スコアは、前記複数の電力を遮断したメモリバンクと関連付けられる１組の電力メトリックに基づく、請求項１に記載の方法。
【請求項５】
前記指示を受け取ることは、
アプリケーションまたはプロセスを、前記複数の電力を遮断したメモリバンクと関連付けられるシステムによって開始するという指示を受け取ること、
アプリケーションまたはプロセスが前記システムによって開始されたという指示を受け取る指示を受け取ること、
前記選択されたメモリバンクに電力を供給することが、前記システムの電力消費を低減させるという指示を受け取ること、または、
前記選択されたメモリバンクに電力を供給することが、前記システムの性能を高めるという指示を受け取ること、のうち少なくとも１つに基づく、請求項１に記載の方法。
【請求項６】
前記指示を受け取ることは、電力を供給したメモリバンクと関連付けられる性能メトリックが閾値を満たすと判断することに基づき、
前記性能メトリックは、
メモリが前記電力を供給したメモリバンクから追い出された回数、
前記電力を供給したメモリバンクへのアクセス数、
前記電力を供給したメモリバンクと関連付けられるメモリミス数、
ダーティ情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、
非ネイティブ情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、
共有情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、または、
命令を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、のうち少なくとも１つに基づく、請求項１に記載の方法。
【請求項７】
前記性能メトリックは、複数の電力を供給したメモリバンクと関連付けられる１組の性能メトリックに基づく集計性能メトリックを備える、請求項６に記載の方法。
【請求項８】
メモリバンクに電力を供給するという指示を受け取り、
前記指示を受け取ることに基づいて、複数の電力を遮断したメモリバンクに対応する複数の電力スコアを決定し、前記複数の電力スコアの各々は、前記複数の電力を遮断したメモリバンクのうち電力を遮断した１つのメモリバンクに電力を供給することと関連付けられる電力メトリックに対応し、
前記複数の電力スコアに基づいて、前記複数の電力を遮断したメモリバンクのうち選択されたメモリバンクに電力を供給するための、１つ以上のプロセッサを備える、システム。
【請求項９】
前記電力メトリックは、
前記電力を遮断したメモリバンクに電力を供給するために必要とされる時間量、
前記電力を遮断したメモリバンクによって報告されたエラー数、
前記電力を遮断したメモリバンクによって消費される電力量、
前記電力を遮断したメモリバンクと、前記電力を遮断したメモリバンクと関連付けられる構成要素との間の距離、
前記電力を遮断したメモリバンクへのアクセス数、
前記電力を遮断したメモリバンクに転送されるメモリブロック数、
前記電力を遮断したメモリバンクに対してネイティブである、電力を供給したメモリバンクに記憶されるメモリブロック数、または、
第１の電力を供給したメモリバンクに記憶された第１の非ネイティブのメモリブロック数と、第２の電力を供給したメモリバンクに記憶された第２の非ネイティブのメモリブロック数との予測差であって、前記選択されたメモリバンクに電力を供給することに起因する予測差、のうち少なくとも１つに基づく、請求項８に記載のシステム。
【請求項１０】
前記電力メトリックは、前記選択されたメモリバンクに電力を供給する前に測定された性能メトリックの値と、前記選択されたメモリバンクに電力を供給した後の前記性能メトリックの推定値との差に基づく、請求項８に記載のシステム。
【請求項１１】
各電力スコアは、前記複数の電力を遮断したメモリバンクと関連付けられる１組の電力メトリックに基づく、請求項８に記載のシステム。
【請求項１２】
前記１つ以上のプロセッサは、前記指示を受け取ったときに、
アプリケーションまたはプロセスを、前記複数の電力を遮断したメモリバンクと関連付けられる構成要素によって開始するという指示を受け取ること、
アプリケーションまたはプロセスが前記構成要素によって開始されたという指示を受け取る指示を受け取ること、
前記選択されたメモリバンクに電力を供給することが、前記構成要素の電力消費を低減させるという指示を受け取ること、または、
前記選択されたメモリバンクに電力を供給することが、前記構成要素の性能を高めるという指示を受け取ること、のうち少なくとも１つを行う、請求項８に記載のシステム。
【請求項１３】
前記１つ以上のプロセッサは、前記指示を受け取ったときに、
電力を供給したメモリバンクと関連付けられる性能メトリックが閾値を満たすと判断することに基づいて、前記指示を受け取り、
前記性能メトリックは、
メモリが前記電力を供給したメモリバンクから追い出された回数、
前記電力を供給したメモリバンクへのアクセス数、
前記電力を供給したメモリバンクと関連付けられるメモリミス数、
ダーティ情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、
非ネイティブ情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、
共有情報を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、または、
命令を含む、前記電力を供給したメモリバンクに含まれるメモリブロック数、のうち少なくとも１つに基づく、請求項８に記載のシステム。
【請求項１４】
前記性能メトリックは、複数の電力を供給したメモリバンクと関連付けられる１組の性能メトリックに基づく集計性能メトリックを備える、請求項１３に記載のシステム。
【国際調査報告】
2016500186.tif 000013
2016500186.tif 000014