(58)【調査した分野】(Int.Cl.,DB名)
スケジュールされた命令を実行するために、他のシステムコンポーネントの動作に関する他の利用率を予測することであって、前記予測することが前記他のシステムコンポーネントに関する他のエネルギー使用ベンチマーク内の履歴データまたは前記スケジュールされた命令の解析に基づいている、予測することと、
前記他のシステムコンポーネントに関する、前記予測された他の利用率および前記他のエネルギー使用ベンチマークに基づいて、前記他のシステムコンポーネントの前記動作に関する他のエネルギー設定を他の複数のエネルギー設定から選択することと
をさらに含む、請求項1に記載の方法。
前記システムコンポーネントを前記割り当てることが、各中央処理装置に関して、前記中央処理装置に物理的に近接する前記システムコンポーネントのグループを割り当てることを含む、請求項6に記載の方法。
前記第2の複数の命令の前記実行の間に前記システムコンポーネントの前記動作を、前記システムコンポーネントの前記選択されたエネルギー設定および前記決定された利用率の下で前記システムコンポーネントの前記性能レベルおよび前記エネルギー使用の追加の値を測定することによって評価することと、
前記性能レベルおよび前記エネルギー使用の前記追加の値、前記選択されたエネルギー設定、および前記システムコンポーネントの前記決定された利用率に基づいて、前記エネルギー使用ベンチマークを更新することと、
前記コンピュータシステム上の前記第2の複数の命令の前記実行に基づいて、前記システムコンポーネントの他の利用率を決定することと、
前記システムコンポーネントの前記動作に関する他のエネルギー設定を前記複数のエネルギー設定から選択することによって、前記コンピュータシステム上の前記第2の複数の命令の前記実行の後で第3の複数の命令を実行するように前記システムコンポーネントを構成することであって、前記他のエネルギー設定が前記エネルギー使用ベンチマークおよび前記他の利用率に基づいて選択され、前記システムコンポーネントが前記選択された他のエネルギー設定の下で前記第3の複数の命令の前記実行のための前記しきい性能レベルを満たすように決定される、構成することと
をさらに含む、請求項1に記載の方法。
前記システムコンポーネントを前記割り当てることが、各中央処理装置に関して、前記中央処理装置に物理的に近接する前記システムコンポーネントのグループを割り当てることを含む、請求項13に記載のシステム。
【発明を実施するための形態】
【0010】
以下の発明を実施するための形態では、本明細書の一部を成す添付の図面が参照される。それらの図面では、文脈に別段の規定がない限り、類似の記号は、典型的には、類似のコンポーネントを特定する。発明を実施するための形態、図面、および特許請求の範囲に記載される例示的な実施形態は、限定的であることを意味しない。その他の実施形態を利用することが可能であり、この場合、提示される主題の趣旨および範囲から逸脱せずに、その他の変更を行うことが可能である。概して、本明細書に記載され、図面で例示される本開示の態様を、それらのすべてが本明細書で明示的に企図される幅広い異なる構成で配列、置換、組合せ、および設計することが可能である点を容易に理解されるであろう。
【0011】
概して、本開示は、中でも、マルチコアコンピュータシステム内のエネルギー消費を最適化することに関する方法、装置、コンピュータプログラム、およびシステムに関する。
【0012】
概して、本開示のいくつかの実施形態は、マルチコアコンピュータシステム用の階層型オペレーティングシステム(OS)アーキテクチャに関する。仮想マシンモニタ(VMM)は、コンピュータシステム上の複数のOSをサポートすることができる。本開示の1つまたは複数の実施形態では、VMMは、OSにとって利用可能な物理リソースを制限することができる。例えば、VMMは、その独自のローカルメインメモリを用いて1つの中央処理装置(CPU)上でそれぞれのOSを実行するように構成可能であり、VMMは、CPUに物理的に近接する他のシステムコンポーネントをOSに割り当てることができる。本開示の1つまたは複数の実施形態では、VMMは、CPU、ならびにOSに提供されるコンピュータシステム内の他のシステムコンポーネントに関するエネルギー消費の統合モデルを実施するように適合可能である。統合モデルは、VMMがそれぞれのシステムコンポーネントに関するエネルギー使用ベンチマークを構築し、次いで、動作条件とエネルギー使用ベンチマークとに従って、システムコンポーネントを調整することを伴う場合がある。
【0013】
本開示を通して、「エネルギー使用ベンチマーク」という用語は、そのエネルギー設定および/または利用率に関連するシステムコンポーネントのエネルギー使用および/または性能レベルによって表されるベンチマークを広く指す場合がある。例えば、システムコンポーネントに関するエネルギー使用ベンチマークは、様々なエネルギー設定および利用率の下でシステムコンポーネントを動作させて、これらの動作の間にシステムコンポーネントのエネルギー使用および/または性能レベルを収集することによって取得可能である。その後、エネルギー使用ベンチマークは、容認できる性能を維持しながら、最適なエネルギー消費を達成するようにシステムコンポーネントのエネルギー設定を調整するために使用され得る。
【0014】
本開示を通して、システムコンポーネントの「エネルギー設定」という用語は、システムコンポーネントの性能および/またはエネルギー消費に影響し得るシステムコンポーネントの構成を広く指す場合がある。システムコンポーネントのエネルギー設定は、リアルタイムの動作の間にハードウェア手段またはソフトウェア手段によって調整可能である。例えば、CPUのクロック速度は、実行時間の間に、より速くまたはより遅く調整され得るエネルギー設定を有し得る。より速いクロック速度で実行するように構成されたCPUは、より遅いクロック速度で実行するように構成された同じCPUよりもより良好に作動し、より多くのエネルギーを消費する可能性がある。
【0015】
本開示の1つまたは複数の実施形態では、VMMは、OSによって当初割り当てられたシステムコンポーネントに対して別のシステムコンポーネントを選択して、エネルギーを節約するための1つまたは複数のスケジュールされた命令を実行するように構成可能である。いくつかの例では、他のシステムコンポーネントは、当初割り当てられたシステムコンポーネントよりも、OSを実行しているCPUに物理的により近接する場合がある。いくつかの他の例では、他のシステムコンポーネントは、CPUから物理的にさらに離れている場合があるが、現在、アイドルであるのに対して、当初割り当てられたシステムコンポーネントは、ビジーであり、それが利用可能になるのを待つことは、より多くのエネルギーを消費する可能性がある。
【0016】
本開示の1つまたは複数の実施形態では、VMMは、エネルギーを節約するために、その命令負荷とキャッシュミス率とに従って、CPUのクロック速度を調整するように構成され得る。例えば、命令負荷とキャッシュミス率とが両方とも何らかのしきいレベルを超えるとき、VMMは、CPUのクロック速度を低下させるように適合され得る。
【0017】
図1は、本開示の1つまたは複数の実施形態に従って構成されたある例示的なマルチコアコンピュータシステム100のブロック図を示す。コンピュータシステム100は、CPU101、102、103、メインメモリ104、105、106、および入出力(I/O)デバイス107などのシステムコンポーネントを含むことが可能である。CPU101、102、および103のうちの1つまたは複数は、マルチコアプロセッサであってもよい。コンピュータシステム100は、メインメモリ104、105、および106が、それぞれ、CPU101、102、ならびに103に対してローカルであるように、不均一メモリアーキテクチャを有し得る。I/Oデバイス107は、1つもしくは複数のグラフィックカード108、1つもしくは複数のハードドライブ109、および/または1つもしくは複数のネットワークカード110を含むことが可能である。コンピュータシステム100は、システムバス、CD ROMもしくはDVDなどの光ディスクプレイヤ、またはいくつかのその他の様々なシステムコンポーネントなど、
図1に示されていない、追加のシステムコンポーネントを含むことが可能である。1つまたは複数の実施形態では、異なるエネルギー設定に基づいて構成され得るシステムコンポーネントは、エネルギー消費を最適化するための統合モデルの対象であり得る。
【0018】
VMM130は、それぞれ、それらの独自のOS134、135、136、ならびにアプリケーション137、138、および139を実行することが可能な仮想マシン131、132、および133間でシステムコンポーネントを共有するのを可能にするように構成され得る。VMM130は、コンピュータシステム100のトポロジに従って、OS134、135、および136に利用可能な物理リソースを制限するように適合され得る。本開示の1つまたは複数の実施形態では、VMM130は、その独自のメインメモリを用いて、1つのCPU上でそれぞれのOSを実行するように構成可能である。例えば、VMM130は、メインメモリ104を用いてCPU101上でOS134を実行し、メインメモリ105を使用してCPU102によってOS135を実行し、メインメモリ106を使用してCPU103によってOS136を実行するように構成可能である。その独自のメインメモリを使用してそれぞれのOSを1つのCPUに制限することによって、VMM130は、そうでなければ、別のCPUに対してローカルなメインメモリまたはCPU間で共有されるメインメモリにアクセスするために費やされるエネルギーを節約することができる。本開示の1つまたは複数の実施形態では、VMM130は、それぞれのOSに割り当てられたCPUに物理的に近接する他のシステムコンポーネントを、該OSに利用可能にすることができる。例えば、VMM130は、コンピュータシステム100内に複数のハードドライブ109が存在するとしても、OSのCPUに物理的に近接する1つのハードドライブ109を提示することができる。それぞれのOSに利用可能なシステムコンポーネントを選択的に制限することによって、VMM130は、そうでなければ、OSを実行しているCPUから物理的に離れたシステムコンポーネントにアクセスするために費やされるエネルギーを節約するように適合され得る。
【0019】
VMM130は、物理マシンのシミュレーションを管理およびサポートし、さらに、コンピュータシステム100のエネルギー消費を最適化するように構成された複数のモジュールを含むことが可能である。VMM130は、通信管理モジュール140、メモリ管理モジュール150、および/もしくはエネルギー管理モジュール160のうちの1つまたは複数を含むことが可能である。エネルギー管理モジュール160は、エネルギーコントローラ161、デバイス状態コレクタ162、および/もしくはOS状態コレクタ163のうちの1つまたは複数を含むことが可能である。
【0020】
通信管理モジュール140は、VMM130の様々なモジュールに対するアクセス、ならびにVMM130によって制御および管理される物理的なシステムコンポーネントに対するアクセスを提供するように適合され得る。通信管理モジュール140は、CPU101、102、103、メインメモリ104、105、106、および/もしくはハードドライブ109のうちの1つまたは複数の間でデータを複製および同期化するように適合され得る。
【0021】
メモリ管理モジュール150は、コンピュータシステム100のメインメモリ104、105、および106にアクセスするための統一的インターフェースとして構成され得る。メモリ管理モジュール150は、VMM130に関するメモリマッピング、アクセス制御、および/またはバッファリングのための機能を含むことが可能である。
【0022】
本開示の1つまたは複数の実施形態では、エネルギー管理モジュール160は、性能低下を最低限に抑えながら、コンピュータシステム100のエネルギー効率を高めるために、様々なエネルギー消費最適化を円滑にするように適合され得る。これを達成するために、エネルギー管理モジュール160は、まず、それぞれのシステムコンポーネントに関するエネルギー使用ベンチマークを確立することができる。実行時間の間、エネルギー管理モジュール160は、それぞれのシステムコンポーネントの利用率を監視して、エネルギー使用ベンチマークと利用率とに基づいて、システムコンポーネントのエネルギー設定を調整するように構成され得る。
【0023】
本開示の1つまたは複数の実施形態では、システムコンポーネントに関するエネルギー使用ベンチマークは、1つまたは複数のベンチマークプログラムを実行する間にシステムコンポーネントの性能レベルとエネルギー使用とを評価することによって確立され得る。特定のシステムコンポーネントのエネルギー使用は、デバイス状態コレクタ162によって監視および収集することができる。詳細には、システムコンポーネントは、システムコンポーネントのエネルギー使用データを監視および収集するためのソフトウェアまたはハードウェアを含むことが可能である。デバイス状態コレクタ162は、ベンチマークプログラムを実行する間にこれらの手段を周期的にまたは連続的に起動させることができる。収集されたエネルギー使用データは、ワットなどの測定単位で表すことができる。
【0024】
ベンチマークプログラムを実行するシステムコンポーネントの性能レベルは、様々な要因に基づいて決定することができる。本開示の1つまたは複数の実施形態では、性能レベルは、システムコンポーネントがベンチマークプログラムの命令を実行するのにかかる時間を評価することによって決定することができる。この実行時間は、システムコンポーネントのエネルギー使用ベンチマークに関連する履歴データとして保存可能である。その後、実行時間の点で、システムコンポーネントが良好な性能を有するか、普通の性能を有するか、または不良な性能を有するかを決定するためのしきい値を設定することができる。例えば、50MHzクロック速度で動作しているCPUの25〜50%の利用率を結果としてもたらし得る命令の場合、命令の完全実行時間が第1のしきい期間未満であるとき、CPUの性能は「良好」と見なすことができる。50MHzのクロック速度で動作しているCPUの50〜75%の利用率を結果としてもたらし得る命令の場合、命令の完全実行時間が第1のしきい期間を超えるが、第2のしきい期間未満であるとき、性能は「普通」と見なすことができる。50MHzで動作しているCPUの75%を超える利用率を結果としてもたらし得る命令の場合、命令の完全実行時間が第2のしきい期間を超えるとき、性能は「不良」と見なすことができる。
【0025】
本開示の1つまたは複数の実施形態では、OS状態コレクタ163は、動作の間、特定のシステムコンポーネントの利用率を決定するように構成され得る。VMM130は、アプリケーションプロセスおよび/またはオペレーティングシステムコマンドから生じる命令を実行するように適合され得る。これらの命令はそれぞれ、アクションと宛先アドレスとを有することが可能である。オプションで、これらの命令のうちのいくつかは、対応する送信元アドレスを有することも可能である。命令のアクションとアドレスとを評価することによって、OS状態コレクタ163は、その命令の主な目的と、主に関連し得る特定のシステムコンポーネントとを推定することができる。例えば、CPUが命令の実行に関連するとしても、アクションとアドレスとを評価することによって、OS状態コレクタ163は、その命令の主な目的はメインメモリにアクセスすること、ハードドライブにアクセスすること、ネットワーク通信を実行すること、またはグラフィカルイメージをレンダリングすることであると決定することが可能であり得る。結果として、OS状態コレクタ163は、システムコンポーネントを主に利用する命令を識別して、コンピュータシステム100上で実行されている全命令の割合として、システムコンポーネントの利用率を決定することが可能であり得る。
【0026】
いくつかの実施形態では、命令がOSによってビデオカードにマッピングされたアドレスを読み取るかまたはそのアドレスに書き込むとき、OS状態コレクタ163は、その命令の目的がビデオ/グラフィックの処理に関係すると決定することができる。命令の目的が明瞭でないとき、OS状態コレクタ163は、それでもなお、その命令に関して推定される目的を割り当てることができる。例えば、その命令が2つの数を一緒に掛け合わせるとき、これらの2つの数がメモリからロードされる場合、この命令は、メモリアクセスの目的を有する可能性がある。これらの2つの数がレジスタからロードされる場合、その命令は、CPUに関連する単なる計算命令の可能性がある。
【0027】
本開示の1つまたは複数の実施形態では、エネルギーコントローラ161は、それぞれのシステムコンポーネントのエネルギー設定を調整するように適合され得る。システムコンポーネントは、関連するエネルギー設定を調整して、システムコンポーネントの性能レベルとエネルギー使用とを効果的に管理するハードウェアまたはソフトウェアを含むことが可能である。例えば、CPUおよび/もしくはシステムバスに関連するクロック速度を効果的に上昇または低下させることができ、メインメモリを選択的にアクティブ化または非アクティブ化することができ、ハードドライブの回転速度を効果的に上昇または低下させることができ、ネットワークカードのデータ転送速度を効果的に上昇または低下させることができる。
【0028】
本開示の1つまたは複数の実施形態では、エネルギーコントローラ161は、通信管理モジュール140を経由して、それぞれのシステムコンポーネントのエネルギー設定を効果的に調整するように構成され得る。例えば、エネルギーコントローラ161は、通信管理モジュール140と相互作用して、システムコンポーネントに関するエネルギー設定を取り出すように適合され得る。通信管理モジュール140は、エネルギーコントローラ161が、そのエネルギー設定を調整することを含めて、システムコンポーネントを構成することを可能にするように適合され得る。本開示の1つまたは複数の実施形態では、デバイス状態コレクタ162は、通信管理モジュール140を経由して、それぞれのシステムコンポーネントのエネルギー使用を収集するように構成され得る。
【0029】
本開示の1つまたは複数の実施形態では、エネルギー管理モジュール160は、システムコンポーネントのエネルギー設定を調整した後で、それぞれのシステムコンポーネントの性能レベルとエネルギー使用とを効果的に収集するように構成され得る。エネルギー管理モジュールは、需要ベースで、周期ベースで、または連続的にもしくは実質的に連続ベースで、それぞれのシステムコンポーネントの性能レベルとエネルギー使用とを収集することができる。収集された性能レベルおよびエネルギー使用は、エネルギー使用ベンチマークをさらに精緻化するためのフィードバックとして使用され得る。上記の実施形態の詳細はさらに下に記載される。
【0030】
図2Aは、本開示の1つまたは複数の実施形態による、コンピュータシステム100内の様々なシステムコンポーネントのエネルギー使用を監視するためのある例示的なチャート210を示す。チャート210内に捕捉された情報は、デバイス状態コレクタ162によって生成可能である。チャート210は、ある期間にわたる様々なシステムコンポーネントおよびシステム全体のエネルギー使用を示す複数のグラフ211、212、213、および21
4を含むことが可能である。例えば、グラフ211はコンピュータシステム100のエネルギー使用全体を示すことができ、グラフ212はハードドライブ109のエネルギー使用を示すことができ、グラフ213はメインメモリ104、105、106のエネルギー使用を示すことができ、グラフ214はコンピュータシステム100内のPCI/Eバスのエネルギー使用を示すことができる。本開示の1つまたは複数の実施形態では、特定のシステムコンポーネントがそのエネルギー使用情報を収集するための直接手段を提供しない場合、そのシステムコンポーネントに関するエネルギー使用は、システム全体、およびエネルギー使用情報を検出するための直接手段を提供する他のシステムコンポーネントのエネルギー使用に基づいて導出され得る。
【0031】
本開示の1つまたは複数の実施形態では、VMM130のエネルギー管理モジュール160は1つまたは複数のベンチマークプログラムを実行する間のシステムコンポーネントの観測されたエネルギー使用に基づいて、システムコンポーネントに関するエネルギー使用ベンチマークを決定するように適合され得る。決定されたエネルギー使用ベンチマークは、様々なエネルギー設定と利用率とに基づいて、システムコンポーネントの性能レベルを示すことができる。エネルギー使用ベンチマークは、実行時間の間に観測されたシステムコンポーネントの性能レベルとエネルギー使用とに基づいて精緻化され得る。
【0032】
図2Bは、本開示の1つまたは複数の実施形態による、ある例示的なコンピュータシステムに関するある例示的なエネルギー使用ベンチマーク220を示す。エネルギー使用ベンチマーク220は、コンピュータシステム100を用いて、1つまたは複数のベンチマークプログラムを実行することによって確立可能である。ベンチマークプログラムは、異なる利用率の下でシステムコンポーネントを利用するように設計され得る。さらに、ベンチマークプログラムは、システムコンポーネントから様々な性能レベルとエネルギー使用とを収集するように構成され得る。例えば、あるベンチマークプログラムは、特定のCPUに関して特定の利用率(例えば、<25%、25〜50%、50〜75%、または>75%)を生じさせることができる。実行の間、ベンチマークプログラムは、CPUを特定のエネルギー設定(例えば、CPUクロック速度)に設定して、その特定のエネルギー設定と選択された利用率とに基づいて、CPUのエネルギー使用および/または性能レベルを収集することができる。異なるエネルギー設定および/または利用率を用いて上記のベンチマーキング動作を繰り返すことができる。収集されたエネルギー使用および/または性能値は、次いで、エネルギー使用ベンチマーク220内の対応するエネルギー設定および利用率と共に記憶可能である。
【0033】
エネルギー使用ベンチマーク220の場合、CPUは、異なるエネルギー設定(例えば、クロック速度33MHz、50MHz、および66MHz)ならびに異なる利用率(例えば、<25%、25〜50%、50〜75%、または>75%)で動作するように構成され得る。これら2つの要因に基づいて、ベンチマークプログラムは、エネルギー使用および/または性能値をCPUから収集することができる。収集されたエネルギー使用および/または性能レベルは、次いで、例示されるように、クロック速度および利用率と関連付けられる。
【0034】
本開示の1つまたは複数の実施形態では、動作の間、エネルギー管理モジュール160は、CPUのエネルギー使用ベンチマーク220と利用率とに基づいて、CPUに関するエネルギー設定を選択するように構成され得る。利用率は、第1の命令セットの過去の実行を含む、1つまたは複数の予測要因に基づいて決定することができる。第1の命令セットが十分大きい(例えば、数百万個程度の)とき、エネルギー管理モジュール160は、第1の命令セットを実行するためのシステムコンポーネントの利用率を決定して、その決定された利用率を、第1の命令セットの後で第2の命令セットを実行するためのシステムコンポーネントの利用率に関する予測要因として使用することができる。
【0035】
CPU利用率を決定するために使用できるいくつかの他の予測要因は、第1の命令セットの過去の実行の間に収集された実行時間とCPU温度とを含む。状況によって、実行時間は、特に、CPUが高い性能レベルで動作しているとき、利用率を決定するための主な要因になるはずである。例えば、エネルギー管理モジュール160は、第1の命令セットが第1の量の時間内に完了するとき、利用率は90%になると決定することができる。第1の命令セットが第2の量の時間を超えて完了するとき、利用率は70%未満になる。いくつかの実施形態では、CPUが「普通」の性能レベルで動作しているとき、利用率を決定するためにCPUの温度を使用することができる。例えば、エネルギー管理モジュール160は、CPUの温度が約摂氏60度であるとき、CPU利用率は60%である可能性があり、CPUの温度が摂氏45度未満であるとき、CPU利用率は50%である可能性があると決定できる。CPUが摂氏45〜60度の間の温度で動作しているとき、CPU利用率は補間され得る。
【0036】
例えば、第1の命令セットを実行するための第1の利用率が70%と決定されると仮定すると、第1の利用率は50〜75%の範囲に該当し得る。CPUの現在のクロック速度が66MHzに設定されている場合、CPUのエネルギー使用は66MHzにおいて70Wであるのに対して、CPUのエネルギー使用は50MHzにおいて65Wであるため、エネルギー管理モジュール160は、新しいクロック速度として50MHzを選択することができる。さらに、エネルギー使用ベンチマーク220に従って、50MHzで実行しているCPUは、CPUの50〜75%の利用率を有する命令を実行するために「普通」の性能を依然として提供することができる。したがって、新しいクロック速度として、より低い50MHzを選択することによって、CPUは、第2の命令セットを実行するために十分な性能を依然として提供しながら、より少ないエネルギーを消費することが可能である。
【0037】
別の例では、CPUの現在のクロック速度が33MHzに設定されている場合、現在のクロック速度では、CPUは第2の命令セットを実行する際に十分に行うことができないため、エネルギー管理モジュール160は、新しいクロック速度として50MHz以上を選択することができる。第2の命令セットを実行した後で、エネルギー管理モジュール160は、第2の命令セットを実行するために、システムコンポーネントの第2の利用率を決定して、第2の命令セットの後で第3の命令セットを実行するためのシステムコンポーネントの第3の利用率の予測としてその利用率を使用することができる。エネルギー管理モジュール160は、次いで、エネルギー使用ベンチマーク220と第2の利用率とに基づいて、新しいクロック速度を選択することができる。
【0038】
本開示の1つまたは複数の実施形態では、エネルギー管理モジュール160は、CPU命令負荷がしきい値を超えると決定されたとき、命令セットを実行するために、CPUのキャッシュミス率をさらに評価するように適合され得る。この評価に基づいて、エネルギー管理モジュール160が、CPUはキャッシュがロードされるのを待つためにアイドル状態であり得ると決定する場合、エネルギー管理モジュール160は、より低いクロック速度を選択することができる。CPU命令負荷とキャッシュミス率とに基づいてクロック速度を選択する詳細はさらに下に記載される。
【0039】
図3は、本開示の1つまたは複数の実施形態に従って構成されたコンピュータシステム100内のシステムコンポーネントのエネルギー消費を最適化するためのある例示的な方法301のフローチャートを示す。コンピュータシステム100内のエネルギー消費を最適化するための統合モデルの一部であるそれぞれのシステムコンポーネントに関して方法301を繰り返すことができる。方法301は、ブロック310、320、330、340、350、360、370、および/もしくは380のうちの1つまたは複数によって例示される1つまたは複数の動作、機能、もしくはアクションを含むことが可能である。これらのブロックは連続的な順序で例示されているが、これらのブロックは、並行して、かつ/または本明細書に記載される順序とは異なる順序で実行されることも可能である。また、様々なブロックを、組み合わせてより少ないブロックにすること、分割して追加のブロックにすること、および/または、所望の実装形態に基づいて除去することが可能である。方法301は、ブロック310から開始することができる。
【0040】
ブロック310で、コンピュータシステム100内で実行しているVMM130のエネルギー管理モジュール160は、コンピュータシステムのシステムコンポーネントに関するエネルギー使用ベンチマークを確立するように適合され得る。エネルギー管理モジュール160は、システムコンポーネントのエネルギー設定のセットおよび利用率のセットの下でシステムコンポーネントの性能レベルとエネルギー使用とを測定することによって、エネルギー使用ベンチマークを確立するように構成され得る。上に記載されたように、エネルギー管理モジュール160は、1つまたは複数のベンチマークプログラムを実行して、システムコンポーネントを異なるエネルギー設定および利用率に設定し、収集された性能レベルとエネルギー使用とをエネルギー使用ベンチマーク内に記憶するように構成され得る。ブロック310の後にブロック320を続けることができる。
【0041】
ブロック320で、エネルギー管理モジュール160は、第1の命令セットの実行に基づいて、システムコンポーネントの利用率を決定するように構成され得る。いくつかの実施形態では、エネルギー管理モジュール160は、コンピュータシステム100上で実行された所定の数の命令(例えば、100万個の命令)を監視して、これらの命令のうちのいくつがシステムコンポーネントを主に利用するかを計算するように適合され得る。次いで、その利用率は、第1の命令セットの後で第2の命令セットによってシステムコンポーネントの利用率の予測要因として利用され得る。その他の予測要因は、上に記載されたように、実行時間とCPU温度とを含むことが可能である。
【0042】
いくつかの実施形態では、エネルギー管理モジュール160は、スケジュールされているが、コンピュータシステム100上でまだ実行されていない命令に基づいて、システムコンポーネントの利用率を予測するように構成され得る。VMM130は、特定の動作またはアプリケーションを実行するための要求を受信することができる。特定の動作またはアプリケーションに関する命令は事前に知られている場合があるため、エネルギー管理モジュール160は、履歴データに依存すること、または実行の前にメモリ内にロードされた命令を解析することのいずれかによって、利用率を予測することが可能であり得る。
【0043】
いくつかの例では、仮想マシンは、ワード処理アプリケーションを実行するための要求を受信することができる。このアプリケーションは既に複数回実行されている可能性があるため、エネルギー管理モジュール160は、アプリケーションの実行を監視することによって取得された履歴データに基づいて、ハードドライブ109の利用率を予測することが可能であり得る。いくつかの例では、履歴データは、ハードドライブ109に関するエネルギー使用ベンチマーク内に記憶可能である。いくつかの他の例では、VMM130は、ネットワーク通信ソケットを解放するためのコマンドを受信することも可能である。そのコマンドに関して必要な命令がメモリ内にロードされた後で、エネルギー管理モジュール160は、これらの命令が実行される前に、ロードされた命令を解析して、ネットワークカードの利用率を予測するように適合され得る。いくつかの実施形態では、エネルギー管理モジュール160は、エネルギー消費最適化に関与しているシステムコンポーネントのそれぞれに関する利用率を決定または予測することができる。
【0044】
ブロック320の後にブロック330を続けることができる。
【0045】
ブロック330で、エネルギー管理モジュール160は、ブロック310で確立されたエネルギー使用ベンチマークとブロック320で決定された利用率とに基づいて、システムコンポーネントを動作させるためのエネルギー設定を選択するように適合され得る。いくつかの実施形態では、システムコンポーネントが、選択されたエネルギー設定の下で、第1の命令セットの後で第2の命令セットを実行するためのしきい性能レベルを満たすことを仮定することが可能である。例えば、どのエネルギー設定が、決定された利用率に関するしきい性能レベル以上で依然として実行しながら、最小量のエネルギーを消費するように構成されているかを評価することによって、エネルギー設定をエネルギー使用ベンチマークから選択することができる。ブロック330の後にブロック340を続けることができる。
【0046】
ブロック340で、エネルギー管理モジュール160は、ブロック330で選択されたエネルギー設定を使用して、第1の命令セットの実行の後で第2の命令セットを実行するようにシステムコンポーネントを構成することができる。システムコンポーネントの現在のエネルギー設定が新しく選択されたエネルギー設定とは異なると決定された場合、エネルギー管理モジュール160は、VMM130の通信管理モジュール140を経由して、システムコンポーネントを選択されたエネルギー設定に調整することができる。本開示の1つまたは複数の実施形態では、システムコンポーネントは、新しく選択されたエネルギー設定よりも、その現在のエネルギー設定の下でより少ないエネルギーを消費すると決定される場合がある。しかし、エネルギー管理モジュール160が、現在のエネルギー設定の下でシステム構成は第2の命令セットを実行するために十分な性能を提供できないと決定するとき、エネルギー管理モジュール160は、それでもなお、システムコンポーネントを新しく選択されたエネルギー設定に設定することができる。コンピュータシステム100がコンピュータシステム100全体の性能を損なわずに、最適化されたエネルギー消費を近似的に達成することを確実にするためにそのような手法を利用することができる。ブロック340の後にブロック350を続けることができる。
【0047】
ブロック350で、エネルギー管理モジュール160は、システムコンポーネントの性能レベルおよびエネルギー使用の追加の値を測定することによって、第2の命令セットを実行する間にコンピュータシステム100の動作を評価するように構成され得る。本開示の1つまたは複数の実施形態では、エネルギー管理モジュール160は、第2の命令セットの実行を完了するためにコンピュータシステム100によって利用された経過時間を監視し、その時間をエネルギー使用ベンチマーク用のしきい期間と比較し、その比較に基づいて、推定される性能レベル(例えば、良好、普通、不良)を決定することができる。ベンチマークプログラムは、第2の命令セットを実行する際のシステムコンポーネントの性能レベルを決定することができる。いくつかの実施形態では、エネルギー管理モジュール160は、第2の命令セットの実行の間にシステムコンポーネントのリアルタイムのエネルギー使用を収集するように適合されることも可能である。ブロック350の後にブロック360を続けることができる。
【0048】
ブロック360で、エネルギー管理モジュール160は、性能レベルおよびエネルギー使用の追加の値、選択されたエネルギー設定、ならびに/または決定された利用率のうちの1つもしくは複数に基づいて、エネルギー使用ベンチマークを更新するように適合され得る。エネルギー管理モジュール160は、その後で、更新されたエネルギー使用ベンチマークを使用して、システムコンポーネントのエネルギー消費に関して近似的に最適化することができる。例えば、エネルギー管理モジュール160は、第2の命令セットの実行に基づいて、システムコンポーネントの別の利用率を決定することができる。その後、エネルギー管理モジュール160は、更新されたエネルギー使用ベンチマークとその他の利用率とに基づいて、システムコンポーネントの動作に関して別のエネルギー設定を選択するように適合され得る。エネルギー管理モジュール160は、次いで、第2の命令セットの後で第3の命令セットを実行するための他のエネルギー設定を用いてシステムコンポーネントを構成することができる。ブロック350に類似して、エネルギー管理モジュール160は、第3の命令セットを実行する間にコンピュータシステム100の動作をさらに評価して、エネルギー使用ベンチマークをさらに更新するように構成され得る。本明細書に記載されるように、コンピュータシステム100上のリアルタイムの命令の実行から取得されたフィードバックに基づいて、エネルギー使用ベンチマークを継続的に更新することが可能である。ブロック360の後にブロック370を続けることができる。
【0049】
本開示の1つまたは複数の実施形態では、ブロック370で、エネルギー管理モジュール160は、1つまたは複数のスケジュールされた命令を実行する際により少ないエネルギーを消費するためのエネルギー効率の高いシステムコンポーネントを、システムコンポーネントおよび別のシステムコンポーネントから選択するように構成され得る。エネルギー管理モジュール160は、コンピュータシステム100上で実行されるべき、スケジュールされた命令を評価して、OSによって当初割り当てられたシステムコンポーネントがそれらのスケジュールされた命令を実行するよう決定することができる。例えば、OSは、コンピュータシステム100のトポロジについて詳しく知ることなく、スケジュールされた命令をそのCPUおよびあるキャッシュに対して発行することができる。
【0050】
本開示の1つまたは複数の実施形態では、エネルギー管理モジュール160はコンピュータシステム100内のシステムコンポーネントのトポロジを認識しているため、エネルギー管理モジュール160は、エネルギー節約の観点から、当初割り当てられたシステムコンポーネントまたは代替システムコンポーネントが近似的に最適であるかどうかを評価するように構成され得る。本開示の1つまたは複数の実施形態では、エネルギー管理モジュール160は、当初割り当てられたシステムコンポーネントの代わりに、スケジュールされた命令を実行する際にしきい性能レベルを満たしながら、より少ないエネルギーを消費する代替コンポーネントを選択するように構成され得る。
【0051】
本開示の1つまたは複数の実施形態では、エネルギー管理モジュール160は、OSを実行しているCPUと、当初割り当てられたシステムコンポーネントおよび代替システムコンポーネントとの間の物理的距離を評価するように適合され得る。例えば、スケジュールされた命令内の当初割り当てられたキャッシュが代替キャッシュよりもCPUからさらに離れて配置されていることを決定するとすぐに、エネルギー管理モジュール160は、エネルギー効率の高いシステムコンポーネントとして、その代替キャッシュを選択することができる。
【0052】
本開示の1つまたは複数の実施形態では、エネルギー管理モジュール160は、当初割り当てられたシステムコンポーネントの有用性に基づいて、エネルギー効率の高いシステムコンポーネントを選択するように構成され得る。例えば、当初割り当てられたキャッシュが一時的に利用可能でないことを決定するとすぐに、エネルギー管理モジュール160がCPUからさらに離れているアイドルキャッシュを使用することを選択できるのは、アイドルキャッシュを使用すると、ビジーキャッシュを待つよりもエネルギーを節約することができるためである。この例では、エネルギー管理モジュール160は、代替キャッシュが、スケジュールされた命令の実行の際に利用されるべきエネルギー効率の高いシステムコンポーネントであることを決定できる。ブロック370の後にブロック380を続けることができる。
【0053】
ブロック380で、エネルギー管理モジュール160は、実行のためにエネルギー効率の高いシステムコンポーネントを利用するように、スケジュールされた命令を構成することができる。さらに、エネルギー管理モジュール160は、その他のスケジュールされた命令に関して上の動作(例えば、ブロック310〜380)のうちの1つまたは複数を繰り返すように構成され得る。
【0054】
図4は、本開示の1つまたは複数の実施形態による、CPU命令負荷とキャッシュミス率とに基づいて、コンピュータシステム100内のCPUのエネルギー消費を最適化するためのある例示的な方法401のフローチャートを示す。方法401は、方法301(
図3)と並行して実行可能である。方法401は、ブロック410、420、425、430、440、451、453、および/または455のうちの1つもしくは複数によって例示される1つもしくは複数の動作、機能、またはアクションを含むことが可能である。これらのブロックは連続的な順序で例示されているが、これらのブロックは、並行して、かつ/または本明細書に記載される順序とは異なる順序で実行されることも可能である。また、様々なブロックを、組み合わせてより少ないブロックにすること、分割して追加のブロックにすること、および/または、所望の実装形態に基づいて除去することが可能である。方法401は、ブロック410から開始することができる。
【0055】
ブロック410で、コンピュータシステム100上で実行しているVMM130のエネルギー管理モジュール160は、コンピュータシステム100上の命令の実行に基づいて、CPU上の命令負荷を決定するように構成され得る。いくつかの実施形態では、エネルギー管理モジュール160は、マルチコアCPU内のコアのうちの1つを評価して、そのコアに関連する命令負荷を決定するように適合され得る。動作の間、エネルギー管理モジュール160は、コンピュータシステム100上で実行している所定の数の命令(実行命令)を評価して、特定のCPUまたはマルチコアCPUの特定のコアを利用する命令(利用命令)の数を計数するように構成され得る。実行命令および利用命令は、CPUに関する命令負荷を計算するために使用され得る。例えば、命令負荷は、利用命令の数を実行命令の数で除算することによって決定することができる。ブロック410の後にブロック420を続けることができる。
【0056】
ブロック420で、エネルギー管理モジュール160は、CPU上の命令負荷が所定のCPU負荷しきい値を上回るかどうかを評価するように構成可能である。いくつかの実施形態では、所定のCPU負荷しきい値は、値(例えば、約75%)であってもよく、または範囲(例えば、約50%から約70%)であってもよい。所定のCPU負荷しきい値は、命令負荷が所定のCPU負荷しきい値もしくはしきい範囲を超えるとき、CPUが重い負荷を受けていることを示すこと、または命令負荷がしきい値もしくはしきい範囲未満であるとき、軽い負荷を受けていることを示すことができる。
【0057】
本開示の1つまたは複数の実施形態では、ブロック420での決定が、命令負荷が所定のCPU負荷しきい値未満であることを示す場合、ブロック420の後にブロック425を続けることができる。そうでなければ、ブロック420での決定が、命令負荷が所定のCPU負荷しきい値を上回らないことを示すとき、ブロック420の後にブロック430を続けることができる。
【0058】
ブロック425で、エネルギー管理モジュール160は、CPUの既存のクロック速度と決定された命令負荷とに基づいて、CPUのクロック速度を調整するように構成され得る。命令負荷が、CPUが軽い負荷を受けていることを示し、CPUの既存のクロック速度が高く設定されている場合、エネルギー管理モジュール160は、CPUをより低いクロック速度に調整することができる。ブロック425の後にブロック410を続けることができる。
【0059】
ブロック430で、エネルギー管理モジュール160は、命令の実行の間にCPUによって利用されるキャッシュのキャッシュミス率を決定するように構成され得る。すなわち、エネルギー管理モジュール160は、CPUが重い負荷を受けているとき、キャッシュの性能を評価するように適合され得る。高いキャッシュミス率は、実行されるべき命令に関して必要とされるデータが直接アクセス可能でなく、メインメモリまたはハードドライブからアップロードされる必要があることを示す場合がある。必要なデータをアップロードすることは、ある程度時間がかかる場合がある。実行されるべき命令が存在するとしても、CPUは、データがアップロードされて、利用可能になるまで待機しなければならない場合がある。したがって、CPUが重い負荷を受けている可能性があるとしても、キャッシュミス率は、CPUがアイドルであり、エネルギーを浪費していることを示す場合がある。ブロック430の後にブロック440を続けることができる。
【0060】
いくつかの実施形態では、ブロック440で、エネルギー管理モジュール160は、所定のキャッシュミスしきい値を用いてキャッシュミス率を評価するように適合され得る。キャッシュミスしきい値は、所定の値範囲(例えば、100〜1000)であってもよい。キャッシュミス率がキャッシュミスしきい値を超えることを決定するとすぐに、ブロック440の後にブロック451を続けることができる。キャッシュミス率がキャッシュミスしきい値の範囲内であることが決定された場合、ブロック440の後にブロック453を続けることができる。キャッシュミス率がキャッシュミスしきい値未満であることが決定された場合、ブロック440の後にブロック455を続けることができる。
【0061】
ブロック451で、CPUが重い負荷を受けていると見なされるにもかかわらず、キャッシュミス率はキャッシュミスしきい値よりも高いため、エネルギー管理モジュール160は、CPUのクロック速度を低下させるように構成され得る。調整の量は、CPU上の命令負荷および/またはキャッシュミス率に基づいて決定することができる。本開示の1つまたは複数の実施形態では、エネルギー管理モジュール160は、エネルギー使用ベンチマークを利用して、CPUが十分な性能を提供することを依然として可能にしながら、CPUのエネルギー消費をどのように低下させるかを評価するように適合され得る。CPUの現在のクロック速度が低いか、またはより低く調整することができない場合、エネルギー管理モジュール160は、CPUのクロック速度を維持することができる。ブロック453で、キャッシュミス率はキャッシュミスしきい値範囲内であるため、エネルギー管理モジュール160はCPUのクロック速度を維持することができる。
【0062】
ブロック455で、エネルギー管理モジュール160は、CPUのクロック速度を上昇させるように構成され得る。CPUの現在のクロック速度をより高く調整することができない場合、エネルギー管理モジュール160は、CPUのクロック速度を維持することを決定できる。
【0063】
図5は、本開示の1つまたは複数の実施形態に従って、エネルギー消費を最適化するための方法を実施するためのコンピュータプログラム製品500のある例示的な実施形態のブロック図である。コンピュータプログラム製品500は、信号伝達媒体502を含むことが可能である。信号伝達媒体502は、例えば、プロセッサによって実行されるとき、上に記載された機能性を提供するように適合され得る実行可能命令504の1つまたは複数のセットを含むことが可能である。したがって、例えば、
図1のコンピュータシステム100を参照すると、エネルギー管理モジュール160は、信号伝達媒体502によって伝達された命令504に応答して、少なくとも
図3もしくは
図4に示された動作のうちの1つまたは複数を始めることができる。
【0064】
いくつかの実装形態では、信号伝達媒体502は、ハードディスクドライブ、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、デジタルテープ、メモリなどに限定されないが、これらなど、非一時的コンピュータ可読媒体506を包含することが可能である。いくつかの実装形態では、信号伝達媒体502は、メモリ、読取り/書込み(R/W)CD、R/W DVDなどに限定されないが、これらなど、記録可能媒体508を包含することが可能である。いくつかの実装形態では、信号伝達媒体502は、デジタル通信媒体および/またはアナログ通信媒体(例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど)に限定されないが、これらなど、通信媒体510を包含することが可能である。したがって、例えば、コンピュータプログラム製品500は、信号伝達媒体502によってワイヤレスで伝達可能であり、この場合、信号伝達媒体502は、無線通信媒体510(例えば、IEEE802.11標準に適合する無線通信媒体)によって伝達される。コンピュータプログラム製品500は、非一時的コンピュータ可読媒体506上または別の類似の記録可能媒体508上に記録可能である。
【0065】
図6は、本開示の1つまたは複数の実施形態で使用するためのコンピュータシステムとして構成された、ある例示的なコンピューティングデバイス600のある例示的な実施形態のブロック図を示す。非常に基本的な構成601では、コンピューティングデバイス600は、1つまたは複数のプロセッサ610とメインメモリ620とを含むことが可能である。メモリバス630は、プロセッサ610とメインメモリ620との間で通信するために使用され得る。
【0066】
所望の構成に応じて、プロセッサ610は、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタルシグナルプロセッサ(DSP)、またはそれらの任意の組合せを含むが、これらに限定されない任意のタイプのものであってもよい。プロセッサ610は、レベル1キャッシュ611およびレベル2キャッシュ612など、1つまたは複数のレベルのキャッシュと、1つまたは複数のプロセッサコア613と、レジスタ614とを含むことが可能である。プロセッサコア613は、算術論理演算装置(ALU)、浮動小数点演算装置(FPU)、デジタルシグナルプロセッシングコア(DSPコア)、またはそれらの任意の組合せを含むことが可能である。メモリコントローラ615はプロセッサ610と共に使用されることも可能であり、またはいくつかの実装形態では、メモリコントローラ615はプロセッサ610の内部部品であってもよい。
【0067】
所望の構成に応じて、メインメモリ620は、(RAMなど)揮発性メモリ、(ROM、フラッシュメモリなど)不揮発性メモリ、またはそれらの任意の組合せを含むが、これらに限定されない任意のタイプのものであってもよい。メインメモリ620は、オペレーティングシステム621と、1つまたは複数のアプリケーション622と、プログラムデータ624とを含むことが可能である。アプリケーション622は、
図3の方法301および
図4の方法401に関して記載された様々な機能ブロックならびに/または動作を含めて、本明細書に記載された機能および/または動作を実行するように構成されたVMM623を含むことが可能である。プログラムデータ624は、VMM623によって生成されたエネルギー使用ベンチマーク625を含むことが可能である。いくつかの例示的な実施形態では、アプリケーション622は、本明細書に記載された、エネルギー消費の最適化の実施を実現できるようにオペレーティングシステム621上でプログラムデータ624を用いて動作するように構成され得る。この記載された基本構成は、
図6において、破線601内のコンポーネントによって例示される。
【0068】
コンピューティングデバイス600は、基本構成601と任意の必要とされるデバイスおよびインターフェースとの間の通信を円滑にするために、追加の特徴または機能性、ならびに追加のインターフェースを有することができる。例えば、バス/インターフェースコントローラ640は、ストレージインターフェースバス641を経由して基本構成601と1つまたは複数のデータストレージデバイス650との間の通信を円滑にするために使用され得る。データストレージデバイス650は、取外し式ストレージデバイス651、非取外し式ストレージデバイス652、またはそれらの組合せであってもよい。取外し式ストレージデバイスおよび非取外し式ストレージデバイスの例は、いくつかを挙げると、フレキシブルディスクドライブおよびハードディスクドライブ(HDD)などの磁気ディスクデバイスと、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブなどの光ディスクドライブと、ソリッドステートドライブ(SSD)と、テープドライブとを含む。例示的なコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなど、情報を記憶するための任意の方法または技術で実装される、揮発性媒体および不揮発性媒体、取外し式媒体および非取外し式媒体を含むことが可能である。
【0069】
メインメモリ620、取外し式ストレージ651、および非取外し式ストレージ652は、すべて、コンピュータストレージ媒体の例である。コンピュータストレージ媒体は、所望の情報を記憶するために使用可能であり、かつコンピューティングデバイス600によってアクセスされ得るRAM、ROM、EEPROM、フラッシュメモリもしくはその他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくはその他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくはその他の磁気ストレージデバイス、または任意のその他の媒体を含むが、これらに限定されない。任意のそのようなコンピュータストレージ媒体は、デバイス600の一部であってもよい
【0070】
コンピューティングデバイス600は、バス/インターフェースコントローラ640を経由して様々なインターフェースデバイス(例えば、出力インターフェース660、周辺インターフェース674、および通信インターフェース680)から基本構成601への通信を円滑にするためのインターフェースバス642を含むことも可能である。例示的な出力インターフェース660は、1つもしくは複数のA/Vポート663を経由して、ディスプレイまたはスピーカなど、様々な外部デバイスと通信するように構成され得るグラフィック処理ユニット661およびオーディオ処理ユニット662を含むことが可能である。例示的な周辺インターフェース660は、1つもしくは複数のI/Oポート673を経由して、入力デバイス(例えば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス)またはその他の周辺デバイス(例えば、プリンタ、スキャナ)などの外部デバイスと通信するように構成され得るシリアルインターフェースコントローラ671またはパラレルインターフェースコントローラ672を含むことが可能である。例示的な通信インターフェース680は、1つまたは複数の通信ポート682を経由して、ネットワーク通信リンクを介して、1つまたは複数のその他のコンピューティングデバイス690との通信を円滑にするように構成され得るネットワークコントローラ681を含むことが可能である。
【0071】
ネットワーク通信リンクは、通信媒体の一例であり得る。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のトランスポート機構によって実施可能であり、任意の情報送達媒体を含むことが可能である。限定ではなく、例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体と、音響媒体、無線周波数(RF)媒体、赤外線(IR)媒体、およびその他の無線媒体などの無線媒体とを含むことが可能である。コンピュータ可読媒体という用語は、本明細書で使用される場合、ストレージ媒体と通信媒体の両方を含むことが可能である。
【0072】
コンピューティングデバイス600は、携帯電話、携帯情報端末(PDA)、パーソナルメディアプレイヤデバイス、ワイヤレスウェブウォッチデバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、または上記の機能のうちのいずれかを含むハイブリッドデバイスなど、スモールフォームファクタ携帯用(すなわち、モバイル)電子デバイスの一部として実装することができる。コンピューティングデバイス600は、ラップトップコンピュータ構成と非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実装することも可能である。加えて、コンピューティングデバイス600を無線基地局またはその他の無線システムもしくは無線デバイスの一部として実装することも可能である。
【0073】
システムの側面でのハードウェアの実装形態とソフトウェアの実装形態との間には、ほとんど相違が残されていない。ハードウェアまたはソフトウェアの使用は、一般に(いつもそうではないが、ある状況ではハードウェアとソフトウェアの間の選択が重要になり得るという点で)コスト対効果のトレードオフを表す設計上の選択である。本明細書に記載された、プロセスおよび/またはシステムおよび/または他の技術をもたらすことができる様々な達成手段があり(例えば、ハードウェア、ソフトウェア、および/またはファームウェア)、好ましい達成手段は、プロセスおよび/またはシステムおよび/または他の技術が導入される状況によって異なる。例えば、実装者が速度と正確性が最も重要であると決定すると、実装者は主にハードウェアおよび/またはファームウェアの達成手段を選択することができる。フレキシビリティが最も重要なら、実装者は主にソフトウェアの実装形態を選択することができる。または、さらに別の代替案として、実装者は、ハードウェア、ソフトウェア、および/またはファームウェアの何らかの組合せを選択することができる。
【0074】
前述の詳細な説明では、ブロック図、フローチャート、および/または例の使用によって、装置および/またはプロセスの様々な実施形態を説明してきた。そのようなブロック図、フローチャート、および/または例が1つまたは複数の機能および/または動作を含む限りにおいて、そのようなブロック図、フローチャート、または例の中のそれぞれの機能および/または動作は、広範囲のハードウェア、ソフトウェア、ファームウェア、または実質上それらのすべての組合せにより、個別におよび/または集合的に実装可能であることが、当業者には理解されるであろう。いくつかの実施形態では、本明細書に記載された主題のいくつかの部分は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、または他の集積化方式によって実装することができる。しかし、本明細書で開示された実施形態のいくつかの態様が、全体においてまたは一部において、1つまたは複数のコンピュータ上で動作する1つまたは複数のコンピュータプログラムとして(例えば、1つまたは複数のコンピュータシステム上で動作する1つまたは複数のプログラムとして)、1つまたは複数のプロセッサ上で動作する1つまたは複数のプログラムとして(例えば、1つまたは複数のマイクロプロセッサ上で動作する1つまたは複数のプログラムとして)、ファームウェアとして、あるいは実質上それらの任意の組合せとして、等価に集積回路に実装することができることを、当業者は認識するであろうし、電気回路の設計ならびに/またはソフトウェアおよび/もしくはファームウェアのコーディングが、本開示に照らして十分当業者の技能の範囲内であることを、当業者は認識するであろう。さらに、本明細書に記載された主題のメカニズムを様々な形式のプログラム製品として配布することができることを、当業者は理解するであろうし、本明細書に記載された主題の例示的な実施形態が、実際に配布を実行するために使用される信号伝達媒体の特定のタイプにかかわらず適用されることを、当業者は理解するであろう。信号伝達媒体の例には、フロッピー(登録商標)ディスク、ハードディスクドライブ、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、デジタルテープ、コンピュータメモリ、などの記録可能なタイプの媒体、ならびに、デジタル通信媒体および/またはアナログ通信媒体(例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンク)の通信タイプの媒体が含まれるが、それらには限定されない。
【0075】
本明細書で説明したやり方で装置および/またはプロセスを記載し、その後そのように記載された装置および/またはプロセスを、データ処理システムに統合するためにエンジニアリング方式を使用することは、当技術分野で一般的であることを当業者は認識するであろう。すなわち、本明細書に記載された装置および/またはプロセスの少なくとも一部を、妥当な数の実験によってデータ処理システムに統合することができる。通常のデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイ装置、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステムなどの計算実体、ドライバ、グラフィカルユーザインターフェース、およびアプリケーションプログラムのうちの1つもしくは複数、タッチパッドもしくはスクリーンなどの1つもしくは複数の相互作用装置、ならびに/またはフィードバックループおよびコントロールモータを含むコントロールシステム(例えば、位置検知用および/もしくは速度検知用フィードバック、コンポーネントの移動用および/もしくは数量の調整用コントロールモータ)を含むことを、当業者は理解するであろう。通常のデータ処理システムは、データコンピューティング/通信システムおよび/またはネットワークコンピューティング/通信システムの中に通常見られるコンポーネントなどの、市販の適切なコンポーネントを利用して実装することができる。
【0076】
本明細書に記載された主題は、様々なコンポーネントをしばしば例示しており、これらのコンポーネントは、他の様々なコンポーネントに包含されるか、または他の様々なコンポーネントに接続される。そのように図示されたアーキテクチャは、単に例示にすぎず、実際には、同じ機能を実現する多くの他のアーキテクチャが実装可能であることが理解されよう。概念的な意味で、同じ機能を実現するコンポーネントの任意の構成は、所望の機能が実現されるように効果的に「関連付け」される。したがって、特定の機能を実現するために組み合わされた、本明細書における任意の2つのコンポーネントは、アーキテクチャまたは中間のコンポーネントにかかわらず、所望の機能が実現されるように、お互いに「関連付け」されていると見ることができる。同様に、そのように関連付けされた任意の2つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に接続」または「動作可能に結合」されていると見なすこともでき、そのように関連付け可能な任意の2つのコンポーネントは、所望の機能を実現するために、互いに「動作可能に結合できる」と見なすこともできる。動作可能に結合できる場合の具体例には、物理的にかみ合せ可能な、および/もしくは物理的に相互作用するコンポーネント、ならびに/またはワイヤレスに相互作用可能な、および/もしくはワイヤレスに相互作用するコンポーネント、ならびに/または論理的に相互作用する、および/もしくは論理的に相互作用可能なコンポーネントが含まれるが、それらに限定されない。
【0077】
本明細書における実質的にすべての複数形および/または単数形の用語の使用に対して、当業者は、状況および/または用途に適切なように、複数形から単数形に、および/または単数形から複数形に変換することができる。様々な単数形/複数形の置換えは、理解しやすいように、本明細書で明確に説明することができる。
【0078】
通常、本明細書において、特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本体部)において使用される用語は、全体を通じて「オープンな(open)」用語として意図されていることが、当業者には理解されよう(例えば、用語「含む(including)」は、「含むがそれに限定されない(including but not limited to)」と解釈されるべきであり、用語「有する(having)」は、「少なくとも有する(having at least)」と解釈されるべきであり、用語「含む(includes)」は、「含むがそれに限定されない(includes but is not limited to)」と解釈されるべきである)。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。例えば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも1つの(at least one)」および「1つまたは複数の(one or more)」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「1つまたは複数の」または「少なくとも1つの」および「a」または「an」などの不定冠詞を含む場合であっても、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に1つのそのような記載を含む発明に限定する、ということを示唆していると解釈されるべきではない(例えば、「a」および/または「an」は、通常、「少なくとも1つの」または「1つまたは複数の」を意味すると解釈されるべきである)。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、通常、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう(例えば、他の修飾語なしでの「2つの記載(two recitations)」の単なる記載は、通常、少なくとも2つの記載、または2つ以上の記載を意味する)。さらに、「A、BおよびC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(例えば、「A、B、およびCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。「A、B、またはC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(例えば、「A、B、またはCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。2つ以上の代替用語を提示する事実上いかなる離接する語および/または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方(one of the terms)、当該用語のいずれか(either of the terms)、または両方の用語(both terms)を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。例えば、句「AまたはB」は、「A」または「B」あるいは「AおよびB」の可能性を含むことが理解されよう。
【0079】
前述の説明から、本開示の様々な実施形態は、本明細書において例示のために記載されており、本開示の範囲および趣旨から逸脱せずに、様々な修正を行うことが可能である点を理解されるであろう。したがって、本明細書で開示される様々な実施形態は、限定的であることを意図せず、真の範囲および趣旨は添付の特許請求の範囲によって示される。