(57)【特許請求の範囲】
【請求項１】
コンピュータシステム内のエネルギー消費を改善する方法であって、
前記コンピュータシステムのシステムコンポーネントに関するエネルギー使用ベンチマークを、前記システムコンポーネントの複数のエネルギー設定および複数の利用率の下で前記システムコンポーネントの性能レベルおよびエネルギー使用を測定することによって確立することと、
前記コンピュータシステム上の少なくとも第１の複数の命令の実行に基づいて、前記システムコンポーネントの利用率を決定することと、
前記システムコンポーネントの動作に関するエネルギー設定を前記複数のエネルギー設定から選択することによって、前記第１の複数の命令の前記実行の後で、前記コンピュータシステム上の第２の複数の命令を実行するように前記システムコンポーネントを構成することとを含み、
前記エネルギー設定が前記エネルギー使用ベンチマークおよび前記決定された利用率に基づいて選択され、
前記システムコンポーネントが前記選択されたエネルギー設定の下で前記第２の複数の命令の前記実行のためのしきい性能レベルを満たすように決定される、
方法。
【請求項２】
前記コンピュータシステムの前記システムコンポーネントに関する前記エネルギー使用ベンチマークを前記確立することが、
前記複数のエネルギー設定から選択された特定のエネルギー設定で動作するように前記システムコンポーネントを設定することと、
前記複数の利用率から選択された、前記システムコンポーネントの特定の利用率を用いてベンチマークプログラムを選択することと、
前記ベンチマークプログラムの実行の間に前記システムコンポーネントから特定の性能レベルおよび特定のエネルギー使用値を収集することと、
前記特定のエネルギー設定、前記特定の利用率、前記特定の性能レベル、および前記特定のエネルギー使用値を前記エネルギー使用ベンチマーク内に記憶することと
を含む、請求項１に記載の方法。
【請求項３】
前記決定された利用率が前記第１の複数の命令の前記実行の間に前記システムコンポーネントを主に利用する命令の割合に基づく、請求項１に記載の方法。
【請求項４】
スケジュールされた命令の実行の間に使用されるべき前記システムコンポーネントを識別することと、
前記スケジュールされた命令の前記実行の際に前記しきい性能レベルを満たしながら、より少ないエネルギーを消費するためのエネルギー効率の高いシステムコンポーネントを前記システムコンポーネントおよび他のシステムコンポーネントから選択することと、
前記スケジュールされた命令の前記実行の間に前記動作に関して前記エネルギー効率の高いシステムコンポーネントを利用することと
をさらに含む、請求項１に記載の方法。
【請求項５】
スケジュールされた命令を実行するために、他のシステムコンポーネントの動作に関する他の利用率を予測することであって、前記予測することが前記他のシステムコンポーネントに関する他のエネルギー使用ベンチマーク内の履歴データまたは前記スケジュールされた命令の解析に基づいている、予測することと、
前記他のシステムコンポーネントに関する、前記予測された他の利用率および前記他のエネルギー使用ベンチマークに基づいて、前記他のシステムコンポーネントの前記動作に関する他のエネルギー設定を他の複数のエネルギー設定から選択することと
をさらに含む、請求項１に記載の方法。
【請求項６】
別個のオペレーティングシステムを実行するための別個の仮想マシンを提示することであって、
それぞれ、その独自のメインメモリを用いて、別個の中央処理装置上で前記オペレーティングシステムを実行すること、および
前記システムコンポーネントを含めて、前記コンピュータシステム内のシステムコンポーネントを前記オペレーティングシステムに割り当てること
を含む、提示することと、
前記エネルギー使用ベンチマークを前記確立すること、前記利用率を前記決定すること、および前記コンピュータシステム内の各割り振られたシステムコンポーネントに関して前記システムコンポーネントを前記構成すること、を繰り返すことと
をさらに含む、請求項１に記載の方法。
【請求項７】
前記システムコンポーネントを前記割り当てることが、各中央処理装置に関して、前記中央処理装置に物理的に近接する前記システムコンポーネントのグループを割り当てることを含む、請求項６に記載の方法。
【請求項８】
前記第２の複数の命令の前記実行の間に前記システムコンポーネントの前記動作を、前記システムコンポーネントの前記選択されたエネルギー設定および前記決定された利用率の下で前記システムコンポーネントの前記性能レベルおよび前記エネルギー使用の追加の値を測定することによって評価することと、
前記性能レベルおよび前記エネルギー使用の前記追加の値、前記選択されたエネルギー設定、および前記システムコンポーネントの前記決定された利用率に基づいて、前記エネルギー使用ベンチマークを更新することと、
前記コンピュータシステム上の前記第２の複数の命令の前記実行に基づいて、前記システムコンポーネントの他の利用率を決定することと、
前記システムコンポーネントの前記動作に関する他のエネルギー設定を前記複数のエネルギー設定から選択することによって、前記コンピュータシステム上の前記第２の複数の命令の前記実行の後で第３の複数の命令を実行するように前記システムコンポーネントを構成することであって、前記他のエネルギー設定が前記エネルギー使用ベンチマークおよび前記他の利用率に基づいて選択され、前記システムコンポーネントが前記選択された他のエネルギー設定の下で前記第３の複数の命令の前記実行のための前記しきい性能レベルを満たすように決定される、構成することと
をさらに含む、請求項１に記載の方法。
【請求項９】
前記システムコンポーネントが、ＣＰＵ、キャッシュ、メモリ、ハードドライブ、グラフィックカード、またはネットワークカードを含む、請求項１に記載の方法。
【請求項１０】
コンピュータシステム内のエネルギー消費を改善するように構成されたシステムであって、
仮想マシンモニタを備え、前記仮想マシンモニタが、
システムコンポーネントに関するエネルギー使用ベンチマークを、前記システムコンポーネントの複数のエネルギー設定および複数の利用率の下で前記システムコンポーネントの性能レベルおよびエネルギー使用の測定によって確立することと、
前記コンピュータシステム上の少なくとも第１の複数の命令の実行に基づいて、前記システムコンポーネントの利用率を決定することと、
前記第１の複数の命令の前記実行の後で、前記コンピュータシステム上の第２の複数の命令を実行するために、前記システムコンポーネントの動作に関するエネルギー設定を前記複数のエネルギー設定から選択することと
を行うように構成され、
前記エネルギー設定が前記エネルギー使用ベンチマークおよび前記決定された利用率に基づいて選択され、
前記システムコンポーネントが前記選択されたエネルギー設定の下で前記第２の複数の命令の前記実行のためのしきい性能レベルを満たすように決定される、
システム。
【請求項１１】
前記仮想マシンモニタが、
スケジュールされた命令を実行する際に使用されるべき前記システムコンポーネントを識別することと、
前記スケジュールされた命令の前記実行の際に前記しきい性能レベルを満たしながら、より少ないエネルギーを消費するためのエネルギー効率の高いシステムコンポーネントを前記システムコンポーネントまたは他のシステムコンポーネントのいずれかから選択することと、
前記スケジュールされた命令の前記実行の間に動作に関して前記エネルギー効率の高いシステムコンポーネントを利用することと
を行うようにさらに構成される、請求項１０に記載のシステム。
【請求項１２】
前記仮想マシンモニタが、
スケジュールされた命令を実行するために、他のシステムコンポーネントの動作に関する他の利用率を予測することであって、前記予測することが前記他のシステムコンポーネントに関する他のエネルギー使用ベンチマーク内の履歴データまたは前記スケジュールされた命令の解析に基づいている、予測することと、
前記他のシステムコンポーネントに関する、前記予測された他の利用率および前記他のエネルギー使用ベンチマークに基づいて、前記他のシステムコンポーネントの前記動作に関する他のエネルギー設定を他の複数のエネルギー設定から選択することと
を行うようにさらに構成される、請求項１０に記載のシステム。
【請求項１３】
前記仮想マシンモニタが、
別個のオペレーティングシステムを実行するための別個の仮想マシンを提示することであって、
それぞれ、その独自のメインメモリを用いて、別個の中央処理装置上で前記オペレーティングシステムを実行すること、および
前記システムコンポーネントを含めて、前記コンピュータシステム内のシステムコンポーネントを前記オペレーティングシステムに割り当てること
を含む提示することと、
前記エネルギー使用ベンチマークを前記確立すること、前記利用率を前記決定すること、および前記コンピュータシステム内の各割り振られたシステムコンポーネントに関して前記システムコンポーネントを前記構成すること、を繰り返すことと
を行うように構成される、請求項１０に記載のシステム。
【請求項１４】
前記システムコンポーネントを前記割り当てることが、各中央処理装置に関して、前記中央処理装置に物理的に近接する前記システムコンポーネントのグループを割り当てることを含む、請求項１３に記載のシステム。
【請求項１５】
前記仮想マシンモニタが、
前記第２の複数の命令の前記実行の間に前記システムコンポーネントの前記選択されたエネルギー設定および前記決定された利用率の下で前記システムコンポーネントの前記性能レベルおよび前記エネルギー使用の追加の値を測定することと、
前記性能レベルおよび前記エネルギー使用の前記追加の値、前記システムコンポーネントの前記選択されたエネルギー設定および前記決定された利用率に基づいて、前記エネルギー使用ベンチマークを更新することと
を行うようにさらに構成される、請求項１０に記載のシステム。
【請求項１６】
前記仮想マシンモニタが、
命令の実行に基づいて、前記コンピュータシステムのＣＰＵ上の命令負荷を決定すること、ならびに
前記ＣＰＵ上の前記命令負荷がＣＰＵ負荷しきい値を上回るとき、
前記命令の前記実行の間に前記ＣＰＵによって利用されるキャッシュのキャッシュミス率を決定すること、および
前記キャッシュミス率がキャッシュミス率しきい値より大きいとき、前記ＣＰＵのクロック速度を低下させること
を行うようにさらに構成される、請求項１０に記載のシステム。
【請求項１７】
前記仮想マシンモニタが、
前記ＣＰＵ上の前記命令負荷が前記ＣＰＵ負荷しきい値を上回り、前記キャッシュミス率が他のキャッシュミス率しきい値未満であるとき、前記ＣＰＵのクロック速度を上昇させることと、
前記ＣＰＵ上の前記命令負荷が前記ＣＰＵ負荷しきい値を上回り、前記キャッシュミス率がキャッシュミス率しきい値範囲内であるとき、前記ＣＰＵのクロック速度を維持することと
を行うようにさらに構成される、請求項１６に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
本明細書に別段の指示がない限り、本項に記載される手法は、本出願の特許請求の範囲に対する先行技術ではなく、本項に包含することにより、先行技術と認識されない。
【０００２】
マルチコアマイクロプロセッサコンピュータシステムは、多くの場合、シングルコアマイクロプロセッサコンピュータシステムよりもより良好な性能を提供する。しかし、マルチコアマイクロプロセッサコンピュータシステムは、シングルコアマイクロプロセッサコンピュータシステムよりも、より多くのエネルギーを使用し、より多くの熱を生み出す。グラフィックカードおよびハードドライブなど、他のシステムコンポーネントもまた、性能を改善するため、より多くのエネルギーを使用し、より多くの熱を生み出す。
【発明の概要】
【０００３】
したがって、マルチコアマイクロプロセッサコンピュータシステム内の性能を維持しながら、エネルギー消費を削減するための装置および方法が必要とされる。
【０００４】
本明細書に記載される技術は、一般に、コンピュータシステム内のエネルギー消費を最適化することに関する。いくつかの例では、コンピュータシステムのシステムコンポーネントに関するエネルギー使用ベンチマークは、システムコンポーネントのエネルギー設定の範囲および利用率の下でシステムコンポーネントの性能レベルとエネルギー使用とを測定することによって決定することができる。システムコンポーネントの利用率は、コンピュータシステム上の第１の命令セットの実行を含む予測要因に基づいて決定することができる。システムコンポーネントは、システムコンポーネントを動作させるためのエネルギー設定をエネルギー設定の範囲から選択することによって、第１の命令セットの後で第２の命令セットを実行するように構成可能である。エネルギー設定は、エネルギー使用ベンチマークと決定された利用率とに基づいて選択され得る。
【０００５】
本開示の１つまたは複数の実施形態では、コンピュータシステムのシステムコンポーネントに関するエネルギー使用ベンチマークを、システムコンポーネントのエネルギー設定の範囲および利用率の下でシステムコンポーネントの性能レベルおよびエネルギー使用を測定することによって確立することを含むことが可能な、コンピュータシステム内のエネルギー消費を最適化するための方法が記載される。この方法は、コンピュータシステム上の第１の命令セットの実行に基づいて、システムコンポーネントの利用率を決定することと、システムコンポーネントを動作させるためのエネルギー設定をエネルギー設定の範囲から選択することによって、第１の命令セットの後で第２の命令セットを実行するようにシステムコンポーネントを構成することとをさらに含むことが可能である。エネルギー設定は、エネルギー使用ベンチマーク、および決定された利用率に基づいて選択され得る。本開示の１つまたは複数の実施形態では、この方法は、コンピュータシステム上で異なるオペレーティングシステムをホストするように構成された仮想マシンモニタを使用して実施することができる。
【０００６】
本開示の１つまたは複数の実施形態では、命令の実行に基づいて、コンピュータシステムのＣＰＵ上の命令負荷を決定することと、ＣＰＵ上の命令負荷がＣＰＵ負荷しきい値を上回るとき、それらの命令の実行の間にＣＰＵによって利用されるキャッシュのキャッシュミス率を決定することとを含むことが可能な、コンピュータシステム内のエネルギー消費を最適化するための方法が記載される。この方法は、キャッシュミス率がキャッシュミス率しきい値を超えると決定されたとき、ＣＰＵのクロック速度を低下させることをさらに含むことが可能である。
【０００７】
前述の概要は、例示にすぎず、限定的であることを決して意図しない。図面と以下の詳細な説明とを参照することによって、上に記載された例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴が明らかになるであろう。
【０００８】
本開示の前述の特徴およびその他の特徴は、添付の図面と共に、以下の記載および添付の特許請求の範囲から、より十分に明らかになるであろう。これらの図面は本開示によるいくつかの実施形態だけを示し、したがって、その範囲の限定と見なされないことを理解して、本開示は、添付の図面を使用することにより、追加の具体性および詳細を用いて説明される。
【図面の簡単な説明】
【０００９】
【図１】本開示の少なくともいくつかの実施形態に従って構成された、ある例示的なマルチコアコンピュータシステムのブロック図である。
【図２Ａ】本開示の少なくともいくつかの実施形態に従って構成された、様々なシステムコンポーネントのエネルギー使用を監視するためのある例示的なチャートである。
【図２Ｂ】本開示の少なくともいくつかの実施形態に従って構成された、ある例示的なエネルギー使用ベンチマークを示す図である。
【図３】本開示の少なくともいくつかの実施形態に従って構成された、コンピュータシステム内のシステムコンポーネントのエネルギー消費を最適化するためのある例示的な方法のフローチャートである。
【図４】本開示の少なくともいくつかの実施形態に従って構成された、ＣＰＵ命令負荷とキャッシュミスとに基づいて、コンピュータシステム内のＣＰＵのエネルギー消費を最適化するためのある例示的な方法のフローチャートである。
【図５】本開示の少なくともいくつかの実施形態に従って構成された、エネルギー消費を最適化するための方法を実施するためのある例示的なコンピュータプログラム製品を示す図である。
【図６】本開示の少なくともいくつかの実施形態に従って構成された、ある例示的なコンピュータデバイスのブロック図である。
【発明を実施するための形態】
【００１０】
以下の発明を実施するための形態では、本明細書の一部を成す添付の図面が参照される。それらの図面では、文脈に別段の規定がない限り、類似の記号は、典型的には、類似のコンポーネントを特定する。発明を実施するための形態、図面、および特許請求の範囲に記載される例示的な実施形態は、限定的であることを意味しない。その他の実施形態を利用することが可能であり、この場合、提示される主題の趣旨および範囲から逸脱せずに、その他の変更を行うことが可能である。概して、本明細書に記載され、図面で例示される本開示の態様を、それらのすべてが本明細書で明示的に企図される幅広い異なる構成で配列、置換、組合せ、および設計することが可能である点を容易に理解されるであろう。
【００１１】
概して、本開示は、中でも、マルチコアコンピュータシステム内のエネルギー消費を最適化することに関する方法、装置、コンピュータプログラム、およびシステムに関する。
【００１２】
概して、本開示のいくつかの実施形態は、マルチコアコンピュータシステム用の階層型オペレーティングシステム（ＯＳ）アーキテクチャに関する。仮想マシンモニタ（ＶＭＭ）は、コンピュータシステム上の複数のＯＳをサポートすることができる。本開示の１つまたは複数の実施形態では、ＶＭＭは、ＯＳにとって利用可能な物理リソースを制限することができる。例えば、ＶＭＭは、その独自のローカルメインメモリを用いて１つの中央処理装置（ＣＰＵ）上でそれぞれのＯＳを実行するように構成可能であり、ＶＭＭは、ＣＰＵに物理的に近接する他のシステムコンポーネントをＯＳに割り当てることができる。本開示の１つまたは複数の実施形態では、ＶＭＭは、ＣＰＵ、ならびにＯＳに提供されるコンピュータシステム内の他のシステムコンポーネントに関するエネルギー消費の統合モデルを実施するように適合可能である。統合モデルは、ＶＭＭがそれぞれのシステムコンポーネントに関するエネルギー使用ベンチマークを構築し、次いで、動作条件とエネルギー使用ベンチマークとに従って、システムコンポーネントを調整することを伴う場合がある。
【００１３】
本開示を通して、「エネルギー使用ベンチマーク」という用語は、そのエネルギー設定および／または利用率に関連するシステムコンポーネントのエネルギー使用および／または性能レベルによって表されるベンチマークを広く指す場合がある。例えば、システムコンポーネントに関するエネルギー使用ベンチマークは、様々なエネルギー設定および利用率の下でシステムコンポーネントを動作させて、これらの動作の間にシステムコンポーネントのエネルギー使用および／または性能レベルを収集することによって取得可能である。その後、エネルギー使用ベンチマークは、容認できる性能を維持しながら、最適なエネルギー消費を達成するようにシステムコンポーネントのエネルギー設定を調整するために使用され得る。
【００１４】
本開示を通して、システムコンポーネントの「エネルギー設定」という用語は、システムコンポーネントの性能および／またはエネルギー消費に影響し得るシステムコンポーネントの構成を広く指す場合がある。システムコンポーネントのエネルギー設定は、リアルタイムの動作の間にハードウェア手段またはソフトウェア手段によって調整可能である。例えば、ＣＰＵのクロック速度は、実行時間の間に、より速くまたはより遅く調整され得るエネルギー設定を有し得る。より速いクロック速度で実行するように構成されたＣＰＵは、より遅いクロック速度で実行するように構成された同じＣＰＵよりもより良好に作動し、より多くのエネルギーを消費する可能性がある。
【００１５】
本開示の１つまたは複数の実施形態では、ＶＭＭは、ＯＳによって当初割り当てられたシステムコンポーネントに対して別のシステムコンポーネントを選択して、エネルギーを節約するための１つまたは複数のスケジュールされた命令を実行するように構成可能である。いくつかの例では、他のシステムコンポーネントは、当初割り当てられたシステムコンポーネントよりも、ＯＳを実行しているＣＰＵに物理的により近接する場合がある。いくつかの他の例では、他のシステムコンポーネントは、ＣＰＵから物理的にさらに離れている場合があるが、現在、アイドルであるのに対して、当初割り当てられたシステムコンポーネントは、ビジーであり、それが利用可能になるのを待つことは、より多くのエネルギーを消費する可能性がある。
【００１６】
本開示の１つまたは複数の実施形態では、ＶＭＭは、エネルギーを節約するために、その命令負荷とキャッシュミス率とに従って、ＣＰＵのクロック速度を調整するように構成され得る。例えば、命令負荷とキャッシュミス率とが両方とも何らかのしきいレベルを超えるとき、ＶＭＭは、ＣＰＵのクロック速度を低下させるように適合され得る。
【００１７】
図１は、本開示の１つまたは複数の実施形態に従って構成されたある例示的なマルチコアコンピュータシステム１００のブロック図を示す。コンピュータシステム１００は、ＣＰＵ１０１、１０２、１０３、メインメモリ１０４、１０５、１０６、および入出力（Ｉ／Ｏ）デバイス１０７などのシステムコンポーネントを含むことが可能である。ＣＰＵ１０１、１０２、および１０３のうちの１つまたは複数は、マルチコアプロセッサであってもよい。コンピュータシステム１００は、メインメモリ１０４、１０５、および１０６が、それぞれ、ＣＰＵ１０１、１０２、ならびに１０３に対してローカルであるように、不均一メモリアーキテクチャを有し得る。Ｉ／Ｏデバイス１０７は、１つもしくは複数のグラフィックカード１０８、１つもしくは複数のハードドライブ１０９、および／または１つもしくは複数のネットワークカード１１０を含むことが可能である。コンピュータシステム１００は、システムバス、ＣＤ  ＲＯＭもしくはＤＶＤなどの光ディスクプレイヤ、またはいくつかのその他の様々なシステムコンポーネントなど、図１に示されていない、追加のシステムコンポーネントを含むことが可能である。１つまたは複数の実施形態では、異なるエネルギー設定に基づいて構成され得るシステムコンポーネントは、エネルギー消費を最適化するための統合モデルの対象であり得る。
【００１８】
ＶＭＭ１３０は、それぞれ、それらの独自のＯＳ１３４、１３５、１３６、ならびにアプリケーション１３７、１３８、および１３９を実行することが可能な仮想マシン１３１、１３２、および１３３間でシステムコンポーネントを共有するのを可能にするように構成され得る。ＶＭＭ１３０は、コンピュータシステム１００のトポロジに従って、ＯＳ１３４、１３５、および１３６に利用可能な物理リソースを制限するように適合され得る。本開示の１つまたは複数の実施形態では、ＶＭＭ１３０は、その独自のメインメモリを用いて、１つのＣＰＵ上でそれぞれのＯＳを実行するように構成可能である。例えば、ＶＭＭ１３０は、メインメモリ１０４を用いてＣＰＵ１０１上でＯＳ１３４を実行し、メインメモリ１０５を使用してＣＰＵ１０２によってＯＳ１３５を実行し、メインメモリ１０６を使用してＣＰＵ１０３によってＯＳ１３６を実行するように構成可能である。その独自のメインメモリを使用してそれぞれのＯＳを１つのＣＰＵに制限することによって、ＶＭＭ１３０は、そうでなければ、別のＣＰＵに対してローカルなメインメモリまたはＣＰＵ間で共有されるメインメモリにアクセスするために費やされるエネルギーを節約することができる。本開示の１つまたは複数の実施形態では、ＶＭＭ１３０は、それぞれのＯＳに割り当てられたＣＰＵに物理的に近接する他のシステムコンポーネントを、該ＯＳに利用可能にすることができる。例えば、ＶＭＭ１３０は、コンピュータシステム１００内に複数のハードドライブ１０９が存在するとしても、ＯＳのＣＰＵに物理的に近接する１つのハードドライブ１０９を提示することができる。それぞれのＯＳに利用可能なシステムコンポーネントを選択的に制限することによって、ＶＭＭ１３０は、そうでなければ、ＯＳを実行しているＣＰＵから物理的に離れたシステムコンポーネントにアクセスするために費やされるエネルギーを節約するように適合され得る。
【００１９】
ＶＭＭ１３０は、物理マシンのシミュレーションを管理およびサポートし、さらに、コンピュータシステム１００のエネルギー消費を最適化するように構成された複数のモジュールを含むことが可能である。ＶＭＭ１３０は、通信管理モジュール１４０、メモリ管理モジュール１５０、および／もしくはエネルギー管理モジュール１６０のうちの１つまたは複数を含むことが可能である。エネルギー管理モジュール１６０は、エネルギーコントローラ１６１、デバイス状態コレクタ１６２、および／もしくはＯＳ状態コレクタ１６３のうちの１つまたは複数を含むことが可能である。
【００２０】
通信管理モジュール１４０は、ＶＭＭ１３０の様々なモジュールに対するアクセス、ならびにＶＭＭ１３０によって制御および管理される物理的なシステムコンポーネントに対するアクセスを提供するように適合され得る。通信管理モジュール１４０は、ＣＰＵ１０１、１０２、１０３、メインメモリ１０４、１０５、１０６、および／もしくはハードドライブ１０９のうちの１つまたは複数の間でデータを複製および同期化するように適合され得る。
【００２１】
メモリ管理モジュール１５０は、コンピュータシステム１００のメインメモリ１０４、１０５、および１０６にアクセスするための統一的インターフェースとして構成され得る。メモリ管理モジュール１５０は、ＶＭＭ１３０に関するメモリマッピング、アクセス制御、および／またはバッファリングのための機能を含むことが可能である。
【００２２】
本開示の１つまたは複数の実施形態では、エネルギー管理モジュール１６０は、性能低下を最低限に抑えながら、コンピュータシステム１００のエネルギー効率を高めるために、様々なエネルギー消費最適化を円滑にするように適合され得る。これを達成するために、エネルギー管理モジュール１６０は、まず、それぞれのシステムコンポーネントに関するエネルギー使用ベンチマークを確立することができる。実行時間の間、エネルギー管理モジュール１６０は、それぞれのシステムコンポーネントの利用率を監視して、エネルギー使用ベンチマークと利用率とに基づいて、システムコンポーネントのエネルギー設定を調整するように構成され得る。
【００２３】
本開示の１つまたは複数の実施形態では、システムコンポーネントに関するエネルギー使用ベンチマークは、１つまたは複数のベンチマークプログラムを実行する間にシステムコンポーネントの性能レベルとエネルギー使用とを評価することによって確立され得る。特定のシステムコンポーネントのエネルギー使用は、デバイス状態コレクタ１６２によって監視および収集することができる。詳細には、システムコンポーネントは、システムコンポーネントのエネルギー使用データを監視および収集するためのソフトウェアまたはハードウェアを含むことが可能である。デバイス状態コレクタ１６２は、ベンチマークプログラムを実行する間にこれらの手段を周期的にまたは連続的に起動させることができる。収集されたエネルギー使用データは、ワットなどの測定単位で表すことができる。
【００２４】
ベンチマークプログラムを実行するシステムコンポーネントの性能レベルは、様々な要因に基づいて決定することができる。本開示の１つまたは複数の実施形態では、性能レベルは、システムコンポーネントがベンチマークプログラムの命令を実行するのにかかる時間を評価することによって決定することができる。この実行時間は、システムコンポーネントのエネルギー使用ベンチマークに関連する履歴データとして保存可能である。その後、実行時間の点で、システムコンポーネントが良好な性能を有するか、普通の性能を有するか、または不良な性能を有するかを決定するためのしきい値を設定することができる。例えば、５０ＭＨｚクロック速度で動作しているＣＰＵの２５〜５０％の利用率を結果としてもたらし得る命令の場合、命令の完全実行時間が第１のしきい期間未満であるとき、ＣＰＵの性能は「良好」と見なすことができる。５０ＭＨｚのクロック速度で動作しているＣＰＵの５０〜７５％の利用率を結果としてもたらし得る命令の場合、命令の完全実行時間が第１のしきい期間を超えるが、第２のしきい期間未満であるとき、性能は「普通」と見なすことができる。５０ＭＨｚで動作しているＣＰＵの７５％を超える利用率を結果としてもたらし得る命令の場合、命令の完全実行時間が第２のしきい期間を超えるとき、性能は「不良」と見なすことができる。
【００２５】
本開示の１つまたは複数の実施形態では、ＯＳ状態コレクタ１６３は、動作の間、特定のシステムコンポーネントの利用率を決定するように構成され得る。ＶＭＭ１３０は、アプリケーションプロセスおよび／またはオペレーティングシステムコマンドから生じる命令を実行するように適合され得る。これらの命令はそれぞれ、アクションと宛先アドレスとを有することが可能である。オプションで、これらの命令のうちのいくつかは、対応する送信元アドレスを有することも可能である。命令のアクションとアドレスとを評価することによって、ＯＳ状態コレクタ１６３は、その命令の主な目的と、主に関連し得る特定のシステムコンポーネントとを推定することができる。例えば、ＣＰＵが命令の実行に関連するとしても、アクションとアドレスとを評価することによって、ＯＳ状態コレクタ１６３は、その命令の主な目的はメインメモリにアクセスすること、ハードドライブにアクセスすること、ネットワーク通信を実行すること、またはグラフィカルイメージをレンダリングすることであると決定することが可能であり得る。結果として、ＯＳ状態コレクタ１６３は、システムコンポーネントを主に利用する命令を識別して、コンピュータシステム１００上で実行されている全命令の割合として、システムコンポーネントの利用率を決定することが可能であり得る。
【００２６】
いくつかの実施形態では、命令がＯＳによってビデオカードにマッピングされたアドレスを読み取るかまたはそのアドレスに書き込むとき、ＯＳ状態コレクタ１６３は、その命令の目的がビデオ／グラフィックの処理に関係すると決定することができる。命令の目的が明瞭でないとき、ＯＳ状態コレクタ１６３は、それでもなお、その命令に関して推定される目的を割り当てることができる。例えば、その命令が２つの数を一緒に掛け合わせるとき、これらの２つの数がメモリからロードされる場合、この命令は、メモリアクセスの目的を有する可能性がある。これらの２つの数がレジスタからロードされる場合、その命令は、ＣＰＵに関連する単なる計算命令の可能性がある。
【００２７】
本開示の１つまたは複数の実施形態では、エネルギーコントローラ１６１は、それぞれのシステムコンポーネントのエネルギー設定を調整するように適合され得る。システムコンポーネントは、関連するエネルギー設定を調整して、システムコンポーネントの性能レベルとエネルギー使用とを効果的に管理するハードウェアまたはソフトウェアを含むことが可能である。例えば、ＣＰＵおよび／もしくはシステムバスに関連するクロック速度を効果的に上昇または低下させることができ、メインメモリを選択的にアクティブ化または非アクティブ化することができ、ハードドライブの回転速度を効果的に上昇または低下させることができ、ネットワークカードのデータ転送速度を効果的に上昇または低下させることができる。
【００２８】
本開示の１つまたは複数の実施形態では、エネルギーコントローラ１６１は、通信管理モジュール１４０を経由して、それぞれのシステムコンポーネントのエネルギー設定を効果的に調整するように構成され得る。例えば、エネルギーコントローラ１６１は、通信管理モジュール１４０と相互作用して、システムコンポーネントに関するエネルギー設定を取り出すように適合され得る。通信管理モジュール１４０は、エネルギーコントローラ１６１が、そのエネルギー設定を調整することを含めて、システムコンポーネントを構成することを可能にするように適合され得る。本開示の１つまたは複数の実施形態では、デバイス状態コレクタ１６２は、通信管理モジュール１４０を経由して、それぞれのシステムコンポーネントのエネルギー使用を収集するように構成され得る。
【００２９】
本開示の１つまたは複数の実施形態では、エネルギー管理モジュール１６０は、システムコンポーネントのエネルギー設定を調整した後で、それぞれのシステムコンポーネントの性能レベルとエネルギー使用とを効果的に収集するように構成され得る。エネルギー管理モジュールは、需要ベースで、周期ベースで、または連続的にもしくは実質的に連続ベースで、それぞれのシステムコンポーネントの性能レベルとエネルギー使用とを収集することができる。収集された性能レベルおよびエネルギー使用は、エネルギー使用ベンチマークをさらに精緻化するためのフィードバックとして使用され得る。上記の実施形態の詳細はさらに下に記載される。
【００３０】
図２Ａは、本開示の１つまたは複数の実施形態による、コンピュータシステム１００内の様々なシステムコンポーネントのエネルギー使用を監視するためのある例示的なチャート２１０を示す。チャート２１０内に捕捉された情報は、デバイス状態コレクタ１６２によって生成可能である。チャート２１０は、ある期間にわたる様々なシステムコンポーネントおよびシステム全体のエネルギー使用を示す複数のグラフ２１１、２１２、２１３、および２１４を含むことが可能である。例えば、グラフ２１１はコンピュータシステム１００のエネルギー使用全体を示すことができ、グラフ２１２はハードドライブ１０９のエネルギー使用を示すことができ、グラフ２１３はメインメモリ１０４、１０５、１０６のエネルギー使用を示すことができ、グラフ２１４はコンピュータシステム１００内のＰＣＩ／Ｅバスのエネルギー使用を示すことができる。本開示の１つまたは複数の実施形態では、特定のシステムコンポーネントがそのエネルギー使用情報を収集するための直接手段を提供しない場合、そのシステムコンポーネントに関するエネルギー使用は、システム全体、およびエネルギー使用情報を検出するための直接手段を提供する他のシステムコンポーネントのエネルギー使用に基づいて導出され得る。
【００３１】
本開示の１つまたは複数の実施形態では、ＶＭＭ１３０のエネルギー管理モジュール１６０は１つまたは複数のベンチマークプログラムを実行する間のシステムコンポーネントの観測されたエネルギー使用に基づいて、システムコンポーネントに関するエネルギー使用ベンチマークを決定するように適合され得る。決定されたエネルギー使用ベンチマークは、様々なエネルギー設定と利用率とに基づいて、システムコンポーネントの性能レベルを示すことができる。エネルギー使用ベンチマークは、実行時間の間に観測されたシステムコンポーネントの性能レベルとエネルギー使用とに基づいて精緻化され得る。
【００３２】
図２Ｂは、本開示の１つまたは複数の実施形態による、ある例示的なコンピュータシステムに関するある例示的なエネルギー使用ベンチマーク２２０を示す。エネルギー使用ベンチマーク２２０は、コンピュータシステム１００を用いて、１つまたは複数のベンチマークプログラムを実行することによって確立可能である。ベンチマークプログラムは、異なる利用率の下でシステムコンポーネントを利用するように設計され得る。さらに、ベンチマークプログラムは、システムコンポーネントから様々な性能レベルとエネルギー使用とを収集するように構成され得る。例えば、あるベンチマークプログラムは、特定のＣＰＵに関して特定の利用率（例えば、＜２５％、２５〜５０％、５０〜７５％、または＞７５％）を生じさせることができる。実行の間、ベンチマークプログラムは、ＣＰＵを特定のエネルギー設定（例えば、ＣＰＵクロック速度）に設定して、その特定のエネルギー設定と選択された利用率とに基づいて、ＣＰＵのエネルギー使用および／または性能レベルを収集することができる。異なるエネルギー設定および／または利用率を用いて上記のベンチマーキング動作を繰り返すことができる。収集されたエネルギー使用および／または性能値は、次いで、エネルギー使用ベンチマーク２２０内の対応するエネルギー設定および利用率と共に記憶可能である。
【００３３】
エネルギー使用ベンチマーク２２０の場合、ＣＰＵは、異なるエネルギー設定（例えば、クロック速度３３ＭＨｚ、５０ＭＨｚ、および６６ＭＨｚ）ならびに異なる利用率（例えば、＜２５％、２５〜５０％、５０〜７５％、または＞７５％）で動作するように構成され得る。これら２つの要因に基づいて、ベンチマークプログラムは、エネルギー使用および／または性能値をＣＰＵから収集することができる。収集されたエネルギー使用および／または性能レベルは、次いで、例示されるように、クロック速度および利用率と関連付けられる。
【００３４】
本開示の１つまたは複数の実施形態では、動作の間、エネルギー管理モジュール１６０は、ＣＰＵのエネルギー使用ベンチマーク２２０と利用率とに基づいて、ＣＰＵに関するエネルギー設定を選択するように構成され得る。利用率は、第１の命令セットの過去の実行を含む、１つまたは複数の予測要因に基づいて決定することができる。第１の命令セットが十分大きい（例えば、数百万個程度の）とき、エネルギー管理モジュール１６０は、第１の命令セットを実行するためのシステムコンポーネントの利用率を決定して、その決定された利用率を、第１の命令セットの後で第２の命令セットを実行するためのシステムコンポーネントの利用率に関する予測要因として使用することができる。
【００３５】
ＣＰＵ利用率を決定するために使用できるいくつかの他の予測要因は、第１の命令セットの過去の実行の間に収集された実行時間とＣＰＵ温度とを含む。状況によって、実行時間は、特に、ＣＰＵが高い性能レベルで動作しているとき、利用率を決定するための主な要因になるはずである。例えば、エネルギー管理モジュール１６０は、第１の命令セットが第１の量の時間内に完了するとき、利用率は９０％になると決定することができる。第１の命令セットが第２の量の時間を超えて完了するとき、利用率は７０％未満になる。いくつかの実施形態では、ＣＰＵが「普通」の性能レベルで動作しているとき、利用率を決定するためにＣＰＵの温度を使用することができる。例えば、エネルギー管理モジュール１６０は、ＣＰＵの温度が約摂氏６０度であるとき、ＣＰＵ利用率は６０％である可能性があり、ＣＰＵの温度が摂氏４５度未満であるとき、ＣＰＵ利用率は５０％である可能性があると決定できる。ＣＰＵが摂氏４５〜６０度の間の温度で動作しているとき、ＣＰＵ利用率は補間され得る。
【００３６】
例えば、第１の命令セットを実行するための第１の利用率が７０％と決定されると仮定すると、第１の利用率は５０〜７５％の範囲に該当し得る。ＣＰＵの現在のクロック速度が６６ＭＨｚに設定されている場合、ＣＰＵのエネルギー使用は６６ＭＨｚにおいて７０Ｗであるのに対して、ＣＰＵのエネルギー使用は５０ＭＨｚにおいて６５Ｗであるため、エネルギー管理モジュール１６０は、新しいクロック速度として５０ＭＨｚを選択することができる。さらに、エネルギー使用ベンチマーク２２０に従って、５０ＭＨｚで実行しているＣＰＵは、ＣＰＵの５０〜７５％の利用率を有する命令を実行するために「普通」の性能を依然として提供することができる。したがって、新しいクロック速度として、より低い５０ＭＨｚを選択することによって、ＣＰＵは、第２の命令セットを実行するために十分な性能を依然として提供しながら、より少ないエネルギーを消費することが可能である。
【００３７】
別の例では、ＣＰＵの現在のクロック速度が３３ＭＨｚに設定されている場合、現在のクロック速度では、ＣＰＵは第２の命令セットを実行する際に十分に行うことができないため、エネルギー管理モジュール１６０は、新しいクロック速度として５０ＭＨｚ以上を選択することができる。第２の命令セットを実行した後で、エネルギー管理モジュール１６０は、第２の命令セットを実行するために、システムコンポーネントの第２の利用率を決定して、第２の命令セットの後で第３の命令セットを実行するためのシステムコンポーネントの第３の利用率の予測としてその利用率を使用することができる。エネルギー管理モジュール１６０は、次いで、エネルギー使用ベンチマーク２２０と第２の利用率とに基づいて、新しいクロック速度を選択することができる。
【００３８】
本開示の１つまたは複数の実施形態では、エネルギー管理モジュール１６０は、ＣＰＵ命令負荷がしきい値を超えると決定されたとき、命令セットを実行するために、ＣＰＵのキャッシュミス率をさらに評価するように適合され得る。この評価に基づいて、エネルギー管理モジュール１６０が、ＣＰＵはキャッシュがロードされるのを待つためにアイドル状態であり得ると決定する場合、エネルギー管理モジュール１６０は、より低いクロック速度を選択することができる。ＣＰＵ命令負荷とキャッシュミス率とに基づいてクロック速度を選択する詳細はさらに下に記載される。
【００３９】
図３は、本開示の１つまたは複数の実施形態に従って構成されたコンピュータシステム１００内のシステムコンポーネントのエネルギー消費を最適化するためのある例示的な方法３０１のフローチャートを示す。コンピュータシステム１００内のエネルギー消費を最適化するための統合モデルの一部であるそれぞれのシステムコンポーネントに関して方法３０１を繰り返すことができる。方法３０１は、ブロック３１０、３２０、３３０、３４０、３５０、３６０、３７０、および／もしくは３８０のうちの１つまたは複数によって例示される１つまたは複数の動作、機能、もしくはアクションを含むことが可能である。これらのブロックは連続的な順序で例示されているが、これらのブロックは、並行して、かつ／または本明細書に記載される順序とは異なる順序で実行されることも可能である。また、様々なブロックを、組み合わせてより少ないブロックにすること、分割して追加のブロックにすること、および／または、所望の実装形態に基づいて除去することが可能である。方法３０１は、ブロック３１０から開始することができる。
【００４０】
ブロック３１０で、コンピュータシステム１００内で実行しているＶＭＭ１３０のエネルギー管理モジュール１６０は、コンピュータシステムのシステムコンポーネントに関するエネルギー使用ベンチマークを確立するように適合され得る。エネルギー管理モジュール１６０は、システムコンポーネントのエネルギー設定のセットおよび利用率のセットの下でシステムコンポーネントの性能レベルとエネルギー使用とを測定することによって、エネルギー使用ベンチマークを確立するように構成され得る。上に記載されたように、エネルギー管理モジュール１６０は、１つまたは複数のベンチマークプログラムを実行して、システムコンポーネントを異なるエネルギー設定および利用率に設定し、収集された性能レベルとエネルギー使用とをエネルギー使用ベンチマーク内に記憶するように構成され得る。ブロック３１０の後にブロック３２０を続けることができる。
【００４１】
ブロック３２０で、エネルギー管理モジュール１６０は、第１の命令セットの実行に基づいて、システムコンポーネントの利用率を決定するように構成され得る。いくつかの実施形態では、エネルギー管理モジュール１６０は、コンピュータシステム１００上で実行された所定の数の命令（例えば、１００万個の命令）を監視して、これらの命令のうちのいくつがシステムコンポーネントを主に利用するかを計算するように適合され得る。次いで、その利用率は、第１の命令セットの後で第２の命令セットによってシステムコンポーネントの利用率の予測要因として利用され得る。その他の予測要因は、上に記載されたように、実行時間とＣＰＵ温度とを含むことが可能である。
【００４２】
いくつかの実施形態では、エネルギー管理モジュール１６０は、スケジュールされているが、コンピュータシステム１００上でまだ実行されていない命令に基づいて、システムコンポーネントの利用率を予測するように構成され得る。ＶＭＭ１３０は、特定の動作またはアプリケーションを実行するための要求を受信することができる。特定の動作またはアプリケーションに関する命令は事前に知られている場合があるため、エネルギー管理モジュール１６０は、履歴データに依存すること、または実行の前にメモリ内にロードされた命令を解析することのいずれかによって、利用率を予測することが可能であり得る。
【００４３】
いくつかの例では、仮想マシンは、ワード処理アプリケーションを実行するための要求を受信することができる。このアプリケーションは既に複数回実行されている可能性があるため、エネルギー管理モジュール１６０は、アプリケーションの実行を監視することによって取得された履歴データに基づいて、ハードドライブ１０９の利用率を予測することが可能であり得る。いくつかの例では、履歴データは、ハードドライブ１０９に関するエネルギー使用ベンチマーク内に記憶可能である。いくつかの他の例では、ＶＭＭ１３０は、ネットワーク通信ソケットを解放するためのコマンドを受信することも可能である。そのコマンドに関して必要な命令がメモリ内にロードされた後で、エネルギー管理モジュール１６０は、これらの命令が実行される前に、ロードされた命令を解析して、ネットワークカードの利用率を予測するように適合され得る。いくつかの実施形態では、エネルギー管理モジュール１６０は、エネルギー消費最適化に関与しているシステムコンポーネントのそれぞれに関する利用率を決定または予測することができる。
【００４４】
ブロック３２０の後にブロック３３０を続けることができる。
【００４５】
ブロック３３０で、エネルギー管理モジュール１６０は、ブロック３１０で確立されたエネルギー使用ベンチマークとブロック３２０で決定された利用率とに基づいて、システムコンポーネントを動作させるためのエネルギー設定を選択するように適合され得る。いくつかの実施形態では、システムコンポーネントが、選択されたエネルギー設定の下で、第１の命令セットの後で第２の命令セットを実行するためのしきい性能レベルを満たすことを仮定することが可能である。例えば、どのエネルギー設定が、決定された利用率に関するしきい性能レベル以上で依然として実行しながら、最小量のエネルギーを消費するように構成されているかを評価することによって、エネルギー設定をエネルギー使用ベンチマークから選択することができる。ブロック３３０の後にブロック３４０を続けることができる。
【００４６】
ブロック３４０で、エネルギー管理モジュール１６０は、ブロック３３０で選択されたエネルギー設定を使用して、第１の命令セットの実行の後で第２の命令セットを実行するようにシステムコンポーネントを構成することができる。システムコンポーネントの現在のエネルギー設定が新しく選択されたエネルギー設定とは異なると決定された場合、エネルギー管理モジュール１６０は、ＶＭＭ１３０の通信管理モジュール１４０を経由して、システムコンポーネントを選択されたエネルギー設定に調整することができる。本開示の１つまたは複数の実施形態では、システムコンポーネントは、新しく選択されたエネルギー設定よりも、その現在のエネルギー設定の下でより少ないエネルギーを消費すると決定される場合がある。しかし、エネルギー管理モジュール１６０が、現在のエネルギー設定の下でシステム構成は第２の命令セットを実行するために十分な性能を提供できないと決定するとき、エネルギー管理モジュール１６０は、それでもなお、システムコンポーネントを新しく選択されたエネルギー設定に設定することができる。コンピュータシステム１００がコンピュータシステム１００全体の性能を損なわずに、最適化されたエネルギー消費を近似的に達成することを確実にするためにそのような手法を利用することができる。ブロック３４０の後にブロック３５０を続けることができる。
【００４７】
ブロック３５０で、エネルギー管理モジュール１６０は、システムコンポーネントの性能レベルおよびエネルギー使用の追加の値を測定することによって、第２の命令セットを実行する間にコンピュータシステム１００の動作を評価するように構成され得る。本開示の１つまたは複数の実施形態では、エネルギー管理モジュール１６０は、第２の命令セットの実行を完了するためにコンピュータシステム１００によって利用された経過時間を監視し、その時間をエネルギー使用ベンチマーク用のしきい期間と比較し、その比較に基づいて、推定される性能レベル（例えば、良好、普通、不良）を決定することができる。ベンチマークプログラムは、第２の命令セットを実行する際のシステムコンポーネントの性能レベルを決定することができる。いくつかの実施形態では、エネルギー管理モジュール１６０は、第２の命令セットの実行の間にシステムコンポーネントのリアルタイムのエネルギー使用を収集するように適合されることも可能である。ブロック３５０の後にブロック３６０を続けることができる。
【００４８】
ブロック３６０で、エネルギー管理モジュール１６０は、性能レベルおよびエネルギー使用の追加の値、選択されたエネルギー設定、ならびに／または決定された利用率のうちの１つもしくは複数に基づいて、エネルギー使用ベンチマークを更新するように適合され得る。エネルギー管理モジュール１６０は、その後で、更新されたエネルギー使用ベンチマークを使用して、システムコンポーネントのエネルギー消費に関して近似的に最適化することができる。例えば、エネルギー管理モジュール１６０は、第２の命令セットの実行に基づいて、システムコンポーネントの別の利用率を決定することができる。その後、エネルギー管理モジュール１６０は、更新されたエネルギー使用ベンチマークとその他の利用率とに基づいて、システムコンポーネントの動作に関して別のエネルギー設定を選択するように適合され得る。エネルギー管理モジュール１６０は、次いで、第２の命令セットの後で第３の命令セットを実行するための他のエネルギー設定を用いてシステムコンポーネントを構成することができる。ブロック３５０に類似して、エネルギー管理モジュール１６０は、第３の命令セットを実行する間にコンピュータシステム１００の動作をさらに評価して、エネルギー使用ベンチマークをさらに更新するように構成され得る。本明細書に記載されるように、コンピュータシステム１００上のリアルタイムの命令の実行から取得されたフィードバックに基づいて、エネルギー使用ベンチマークを継続的に更新することが可能である。ブロック３６０の後にブロック３７０を続けることができる。
【００４９】
本開示の１つまたは複数の実施形態では、ブロック３７０で、エネルギー管理モジュール１６０は、１つまたは複数のスケジュールされた命令を実行する際により少ないエネルギーを消費するためのエネルギー効率の高いシステムコンポーネントを、システムコンポーネントおよび別のシステムコンポーネントから選択するように構成され得る。エネルギー管理モジュール１６０は、コンピュータシステム１００上で実行されるべき、スケジュールされた命令を評価して、ＯＳによって当初割り当てられたシステムコンポーネントがそれらのスケジュールされた命令を実行するよう決定することができる。例えば、ＯＳは、コンピュータシステム１００のトポロジについて詳しく知ることなく、スケジュールされた命令をそのＣＰＵおよびあるキャッシュに対して発行することができる。
【００５０】
本開示の１つまたは複数の実施形態では、エネルギー管理モジュール１６０はコンピュータシステム１００内のシステムコンポーネントのトポロジを認識しているため、エネルギー管理モジュール１６０は、エネルギー節約の観点から、当初割り当てられたシステムコンポーネントまたは代替システムコンポーネントが近似的に最適であるかどうかを評価するように構成され得る。本開示の１つまたは複数の実施形態では、エネルギー管理モジュール１６０は、当初割り当てられたシステムコンポーネントの代わりに、スケジュールされた命令を実行する際にしきい性能レベルを満たしながら、より少ないエネルギーを消費する代替コンポーネントを選択するように構成され得る。
【００５１】
本開示の１つまたは複数の実施形態では、エネルギー管理モジュール１６０は、ＯＳを実行しているＣＰＵと、当初割り当てられたシステムコンポーネントおよび代替システムコンポーネントとの間の物理的距離を評価するように適合され得る。例えば、スケジュールされた命令内の当初割り当てられたキャッシュが代替キャッシュよりもＣＰＵからさらに離れて配置されていることを決定するとすぐに、エネルギー管理モジュール１６０は、エネルギー効率の高いシステムコンポーネントとして、その代替キャッシュを選択することができる。
【００５２】
本開示の１つまたは複数の実施形態では、エネルギー管理モジュール１６０は、当初割り当てられたシステムコンポーネントの有用性に基づいて、エネルギー効率の高いシステムコンポーネントを選択するように構成され得る。例えば、当初割り当てられたキャッシュが一時的に利用可能でないことを決定するとすぐに、エネルギー管理モジュール１６０がＣＰＵからさらに離れているアイドルキャッシュを使用することを選択できるのは、アイドルキャッシュを使用すると、ビジーキャッシュを待つよりもエネルギーを節約することができるためである。この例では、エネルギー管理モジュール１６０は、代替キャッシュが、スケジュールされた命令の実行の際に利用されるべきエネルギー効率の高いシステムコンポーネントであることを決定できる。ブロック３７０の後にブロック３８０を続けることができる。
【００５３】
ブロック３８０で、エネルギー管理モジュール１６０は、実行のためにエネルギー効率の高いシステムコンポーネントを利用するように、スケジュールされた命令を構成することができる。さらに、エネルギー管理モジュール１６０は、その他のスケジュールされた命令に関して上の動作（例えば、ブロック３１０〜３８０）のうちの１つまたは複数を繰り返すように構成され得る。
【００５４】
図４は、本開示の１つまたは複数の実施形態による、ＣＰＵ命令負荷とキャッシュミス率とに基づいて、コンピュータシステム１００内のＣＰＵのエネルギー消費を最適化するためのある例示的な方法４０１のフローチャートを示す。方法４０１は、方法３０１（図３）と並行して実行可能である。方法４０１は、ブロック４１０、４２０、４２５、４３０、４４０、４５１、４５３、および／または４５５のうちの１つもしくは複数によって例示される１つもしくは複数の動作、機能、またはアクションを含むことが可能である。これらのブロックは連続的な順序で例示されているが、これらのブロックは、並行して、かつ／または本明細書に記載される順序とは異なる順序で実行されることも可能である。また、様々なブロックを、組み合わせてより少ないブロックにすること、分割して追加のブロックにすること、および／または、所望の実装形態に基づいて除去することが可能である。方法４０１は、ブロック４１０から開始することができる。
【００５５】
ブロック４１０で、コンピュータシステム１００上で実行しているＶＭＭ１３０のエネルギー管理モジュール１６０は、コンピュータシステム１００上の命令の実行に基づいて、ＣＰＵ上の命令負荷を決定するように構成され得る。いくつかの実施形態では、エネルギー管理モジュール１６０は、マルチコアＣＰＵ内のコアのうちの１つを評価して、そのコアに関連する命令負荷を決定するように適合され得る。動作の間、エネルギー管理モジュール１６０は、コンピュータシステム１００上で実行している所定の数の命令（実行命令）を評価して、特定のＣＰＵまたはマルチコアＣＰＵの特定のコアを利用する命令（利用命令）の数を計数するように構成され得る。実行命令および利用命令は、ＣＰＵに関する命令負荷を計算するために使用され得る。例えば、命令負荷は、利用命令の数を実行命令の数で除算することによって決定することができる。ブロック４１０の後にブロック４２０を続けることができる。
【００５６】
ブロック４２０で、エネルギー管理モジュール１６０は、ＣＰＵ上の命令負荷が所定のＣＰＵ負荷しきい値を上回るかどうかを評価するように構成可能である。いくつかの実施形態では、所定のＣＰＵ負荷しきい値は、値（例えば、約７５％）であってもよく、または範囲（例えば、約５０％から約７０％）であってもよい。所定のＣＰＵ負荷しきい値は、命令負荷が所定のＣＰＵ負荷しきい値もしくはしきい範囲を超えるとき、ＣＰＵが重い負荷を受けていることを示すこと、または命令負荷がしきい値もしくはしきい範囲未満であるとき、軽い負荷を受けていることを示すことができる。
【００５７】
本開示の１つまたは複数の実施形態では、ブロック４２０での決定が、命令負荷が所定のＣＰＵ負荷しきい値未満であることを示す場合、ブロック４２０の後にブロック４２５を続けることができる。そうでなければ、ブロック４２０での決定が、命令負荷が所定のＣＰＵ負荷しきい値を上回らないことを示すとき、ブロック４２０の後にブロック４３０を続けることができる。
【００５８】
ブロック４２５で、エネルギー管理モジュール１６０は、ＣＰＵの既存のクロック速度と決定された命令負荷とに基づいて、ＣＰＵのクロック速度を調整するように構成され得る。命令負荷が、ＣＰＵが軽い負荷を受けていることを示し、ＣＰＵの既存のクロック速度が高く設定されている場合、エネルギー管理モジュール１６０は、ＣＰＵをより低いクロック速度に調整することができる。ブロック４２５の後にブロック４１０を続けることができる。
【００５９】
ブロック４３０で、エネルギー管理モジュール１６０は、命令の実行の間にＣＰＵによって利用されるキャッシュのキャッシュミス率を決定するように構成され得る。すなわち、エネルギー管理モジュール１６０は、ＣＰＵが重い負荷を受けているとき、キャッシュの性能を評価するように適合され得る。高いキャッシュミス率は、実行されるべき命令に関して必要とされるデータが直接アクセス可能でなく、メインメモリまたはハードドライブからアップロードされる必要があることを示す場合がある。必要なデータをアップロードすることは、ある程度時間がかかる場合がある。実行されるべき命令が存在するとしても、ＣＰＵは、データがアップロードされて、利用可能になるまで待機しなければならない場合がある。したがって、ＣＰＵが重い負荷を受けている可能性があるとしても、キャッシュミス率は、ＣＰＵがアイドルであり、エネルギーを浪費していることを示す場合がある。ブロック４３０の後にブロック４４０を続けることができる。
【００６０】
いくつかの実施形態では、ブロック４４０で、エネルギー管理モジュール１６０は、所定のキャッシュミスしきい値を用いてキャッシュミス率を評価するように適合され得る。キャッシュミスしきい値は、所定の値範囲（例えば、１００〜１０００）であってもよい。キャッシュミス率がキャッシュミスしきい値を超えることを決定するとすぐに、ブロック４４０の後にブロック４５１を続けることができる。キャッシュミス率がキャッシュミスしきい値の範囲内であることが決定された場合、ブロック４４０の後にブロック４５３を続けることができる。キャッシュミス率がキャッシュミスしきい値未満であることが決定された場合、ブロック４４０の後にブロック４５５を続けることができる。
【００６１】
ブロック４５１で、ＣＰＵが重い負荷を受けていると見なされるにもかかわらず、キャッシュミス率はキャッシュミスしきい値よりも高いため、エネルギー管理モジュール１６０は、ＣＰＵのクロック速度を低下させるように構成され得る。調整の量は、ＣＰＵ上の命令負荷および／またはキャッシュミス率に基づいて決定することができる。本開示の１つまたは複数の実施形態では、エネルギー管理モジュール１６０は、エネルギー使用ベンチマークを利用して、ＣＰＵが十分な性能を提供することを依然として可能にしながら、ＣＰＵのエネルギー消費をどのように低下させるかを評価するように適合され得る。ＣＰＵの現在のクロック速度が低いか、またはより低く調整することができない場合、エネルギー管理モジュール１６０は、ＣＰＵのクロック速度を維持することができる。ブロック４５３で、キャッシュミス率はキャッシュミスしきい値範囲内であるため、エネルギー管理モジュール１６０はＣＰＵのクロック速度を維持することができる。
【００６２】
ブロック４５５で、エネルギー管理モジュール１６０は、ＣＰＵのクロック速度を上昇させるように構成され得る。ＣＰＵの現在のクロック速度をより高く調整することができない場合、エネルギー管理モジュール１６０は、ＣＰＵのクロック速度を維持することを決定できる。
【００６３】
図５は、本開示の１つまたは複数の実施形態に従って、エネルギー消費を最適化するための方法を実施するためのコンピュータプログラム製品５００のある例示的な実施形態のブロック図である。コンピュータプログラム製品５００は、信号伝達媒体５０２を含むことが可能である。信号伝達媒体５０２は、例えば、プロセッサによって実行されるとき、上に記載された機能性を提供するように適合され得る実行可能命令５０４の１つまたは複数のセットを含むことが可能である。したがって、例えば、図１のコンピュータシステム１００を参照すると、エネルギー管理モジュール１６０は、信号伝達媒体５０２によって伝達された命令５０４に応答して、少なくとも図３もしくは図４に示された動作のうちの１つまたは複数を始めることができる。
【００６４】
いくつかの実装形態では、信号伝達媒体５０２は、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、デジタルテープ、メモリなどに限定されないが、これらなど、非一時的コンピュータ可読媒体５０６を包含することが可能である。いくつかの実装形態では、信号伝達媒体５０２は、メモリ、読取り／書込み（Ｒ／Ｗ）ＣＤ、Ｒ／Ｗ  ＤＶＤなどに限定されないが、これらなど、記録可能媒体５０８を包含することが可能である。いくつかの実装形態では、信号伝達媒体５０２は、デジタル通信媒体および／またはアナログ通信媒体（例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）に限定されないが、これらなど、通信媒体５１０を包含することが可能である。したがって、例えば、コンピュータプログラム製品５００は、信号伝達媒体５０２によってワイヤレスで伝達可能であり、この場合、信号伝達媒体５０２は、無線通信媒体５１０（例えば、ＩＥＥＥ８０２．１１標準に適合する無線通信媒体）によって伝達される。コンピュータプログラム製品５００は、非一時的コンピュータ可読媒体５０６上または別の類似の記録可能媒体５０８上に記録可能である。
【００６５】
図６は、本開示の１つまたは複数の実施形態で使用するためのコンピュータシステムとして構成された、ある例示的なコンピューティングデバイス６００のある例示的な実施形態のブロック図を示す。非常に基本的な構成６０１では、コンピューティングデバイス６００は、１つまたは複数のプロセッサ６１０とメインメモリ６２０とを含むことが可能である。メモリバス６３０は、プロセッサ６１０とメインメモリ６２０との間で通信するために使用され得る。
【００６６】
所望の構成に応じて、プロセッサ６１０は、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタルシグナルプロセッサ（ＤＳＰ）、またはそれらの任意の組合せを含むが、これらに限定されない任意のタイプのものであってもよい。プロセッサ６１０は、レベル１キャッシュ６１１およびレベル２キャッシュ６１２など、１つまたは複数のレベルのキャッシュと、１つまたは複数のプロセッサコア６１３と、レジスタ６１４とを含むことが可能である。プロセッサコア６１３は、算術論理演算装置（ＡＬＵ）、浮動小数点演算装置（ＦＰＵ）、デジタルシグナルプロセッシングコア（ＤＳＰコア）、またはそれらの任意の組合せを含むことが可能である。メモリコントローラ６１５はプロセッサ６１０と共に使用されることも可能であり、またはいくつかの実装形態では、メモリコントローラ６１５はプロセッサ６１０の内部部品であってもよい。
【００６７】
所望の構成に応じて、メインメモリ６２０は、（ＲＡＭなど）揮発性メモリ、（ＲＯＭ、フラッシュメモリなど）不揮発性メモリ、またはそれらの任意の組合せを含むが、これらに限定されない任意のタイプのものであってもよい。メインメモリ６２０は、オペレーティングシステム６２１と、１つまたは複数のアプリケーション６２２と、プログラムデータ６２４とを含むことが可能である。アプリケーション６２２は、図３の方法３０１および図４の方法４０１に関して記載された様々な機能ブロックならびに／または動作を含めて、本明細書に記載された機能および／または動作を実行するように構成されたＶＭＭ６２３を含むことが可能である。プログラムデータ６２４は、ＶＭＭ６２３によって生成されたエネルギー使用ベンチマーク６２５を含むことが可能である。いくつかの例示的な実施形態では、アプリケーション６２２は、本明細書に記載された、エネルギー消費の最適化の実施を実現できるようにオペレーティングシステム６２１上でプログラムデータ６２４を用いて動作するように構成され得る。この記載された基本構成は、図６において、破線６０１内のコンポーネントによって例示される。
【００６８】
コンピューティングデバイス６００は、基本構成６０１と任意の必要とされるデバイスおよびインターフェースとの間の通信を円滑にするために、追加の特徴または機能性、ならびに追加のインターフェースを有することができる。例えば、バス／インターフェースコントローラ６４０は、ストレージインターフェースバス６４１を経由して基本構成６０１と１つまたは複数のデータストレージデバイス６５０との間の通信を円滑にするために使用され得る。データストレージデバイス６５０は、取外し式ストレージデバイス６５１、非取外し式ストレージデバイス６５２、またはそれらの組合せであってもよい。取外し式ストレージデバイスおよび非取外し式ストレージデバイスの例は、いくつかを挙げると、フレキシブルディスクドライブおよびハードディスクドライブ（ＨＤＤ）などの磁気ディスクデバイスと、コンパクトディスク（ＣＤ）ドライブまたはデジタル多用途ディスク（ＤＶＤ）ドライブなどの光ディスクドライブと、ソリッドステートドライブ（ＳＳＤ）と、テープドライブとを含む。例示的なコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなど、情報を記憶するための任意の方法または技術で実装される、揮発性媒体および不揮発性媒体、取外し式媒体および非取外し式媒体を含むことが可能である。
【００６９】
メインメモリ６２０、取外し式ストレージ６５１、および非取外し式ストレージ６５２は、すべて、コンピュータストレージ媒体の例である。コンピュータストレージ媒体は、所望の情報を記憶するために使用可能であり、かつコンピューティングデバイス６００によってアクセスされ得るＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくはその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくはその他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくはその他の磁気ストレージデバイス、または任意のその他の媒体を含むが、これらに限定されない。任意のそのようなコンピュータストレージ媒体は、デバイス６００の一部であってもよい
【００７０】
コンピューティングデバイス６００は、バス／インターフェースコントローラ６４０を経由して様々なインターフェースデバイス（例えば、出力インターフェース６６０、周辺インターフェース６７４、および通信インターフェース６８０）から基本構成６０１への通信を円滑にするためのインターフェースバス６４２を含むことも可能である。例示的な出力インターフェース６６０は、１つもしくは複数のＡ／Ｖポート６６３を経由して、ディスプレイまたはスピーカなど、様々な外部デバイスと通信するように構成され得るグラフィック処理ユニット６６１およびオーディオ処理ユニット６６２を含むことが可能である。例示的な周辺インターフェース６６０は、１つもしくは複数のＩ／Ｏポート６７３を経由して、入力デバイス（例えば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス）またはその他の周辺デバイス（例えば、プリンタ、スキャナ）などの外部デバイスと通信するように構成され得るシリアルインターフェースコントローラ６７１またはパラレルインターフェースコントローラ６７２を含むことが可能である。例示的な通信インターフェース６８０は、１つまたは複数の通信ポート６８２を経由して、ネットワーク通信リンクを介して、１つまたは複数のその他のコンピューティングデバイス６９０との通信を円滑にするように構成され得るネットワークコントローラ６８１を含むことが可能である。
【００７１】
ネットワーク通信リンクは、通信媒体の一例であり得る。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のトランスポート機構によって実施可能であり、任意の情報送達媒体を含むことが可能である。限定ではなく、例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体と、音響媒体、無線周波数（ＲＦ）媒体、赤外線（ＩＲ）媒体、およびその他の無線媒体などの無線媒体とを含むことが可能である。コンピュータ可読媒体という用語は、本明細書で使用される場合、ストレージ媒体と通信媒体の両方を含むことが可能である。
【００７２】
コンピューティングデバイス６００は、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルメディアプレイヤデバイス、ワイヤレスウェブウォッチデバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、または上記の機能のうちのいずれかを含むハイブリッドデバイスなど、スモールフォームファクタ携帯用（すなわち、モバイル）電子デバイスの一部として実装することができる。コンピューティングデバイス６００は、ラップトップコンピュータ構成と非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実装することも可能である。加えて、コンピューティングデバイス６００を無線基地局またはその他の無線システムもしくは無線デバイスの一部として実装することも可能である。
【００７３】
システムの側面でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に（いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になり得るという点で）コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび／またはシステムおよび／または他の技術をもたらすことができる様々な達成手段があり（例えば、ハードウェア、ソフトウェア、および／またはファームウェア）、好ましい達成手段は、プロセスおよび／またはシステムおよび／または他の技術が導入される状況によって異なる。例えば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび／またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および／またはファームウェアの何らかの組合せを選択することができる。
【００７４】
前述の詳細な説明では、ブロック図、フローチャート、および／または例の使用によって、装置および／またはプロセスの様々な実施形態を説明してきた。そのようなブロック図、フローチャート、および／または例が１つまたは複数の機能および／または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および／または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組合せにより、個別におよび／または集合的に実装可能であることが、当業者には理解されるであろう。いくつかの実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータプログラムとして（例えば、１つまたは複数のコンピュータシステム上で動作する１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして（例えば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして）、ファームウェアとして、あるいは実質上それらの任意の組合せとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに／またはソフトウェアおよび／もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。さらに、本明細書に記載された主題のメカニズムを様々な形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピー（登録商標）ディスク、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および／またはアナログ通信媒体（例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンク）の通信タイプの媒体が含まれるが、それらには限定されない。
【００７５】
本明細書で説明したやり方で装置および／またはプロセスを記載し、その後そのように記載された装置および／またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および／またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインターフェース、およびアプリケーションプログラムのうちの１つもしくは複数、タッチパッドもしくはスクリーンなどの１つもしくは複数の相互作用装置、ならびに／またはフィードバックループおよびコントロールモータを含むコントロールシステム（例えば、位置検知用および／もしくは速度検知用フィードバック、コンポーネントの移動用および／もしくは数量の調整用コントロールモータ）を含むことを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング／通信システムおよび／またはネットワークコンピューティング／通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
【００７６】
本明細書に記載された主題は、様々なコンポーネントをしばしば例示しており、これらのコンポーネントは、他の様々なコンポーネントに包含されるか、または他の様々なコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例示にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の２つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の２つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合せ可能な、および／もしくは物理的に相互作用するコンポーネント、ならびに／またはワイヤレスに相互作用可能な、および／もしくはワイヤレスに相互作用するコンポーネント、ならびに／または論理的に相互作用する、および／もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【００７７】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。様々な単数形／複数形の置換えは、理解しやすいように、本明細書で明確に説明することができる。
【００７８】
通常、本明細書において、特に添付の特許請求の範囲（例えば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（例えば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。例えば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む発明に限定する、ということを示唆していると解釈されるべきではない（例えば、「ａ」および／または「ａｎ」は、通常、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、通常、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（例えば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、通常、少なくとも２つの記載、または２つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含���が、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。例えば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００７９】
前述の説明から、本開示の様々な実施形態は、本明細書において例示のために記載されており、本開示の範囲および趣旨から逸脱せずに、様々な修正を行うことが可能である点を理解されるであろう。したがって、本明細書で開示される様々な実施形態は、限定的であることを意図せず、真の範囲および趣旨は添付の特許請求の範囲によって示される。
【図１】
0005695766.tif 000002
【図２Ａ】
0005695766.tif 000003
【図２Ｂ】
0005695766.tif 000004
【図３】
0005695766.tif 000005
【図４】
0005695766.tif 000006
【図５】
0005695766.tif 000007
【図６】
0005695766.tif 000008