【実施例】
【0008】
したがって、本発明の一部の実施例では、周波数、及び電圧を制御する技術は、物理CPUではなく、各々の仮想CPUに関連付けられる。例えば、各々の仮想CPUは、制御をその特定のVCPU用に修正し指示するために、それ自身のワークロード・プロファイリング・チャネル及び/又はそれ自身の制御アルゴリズムによって配給される。加えて、さまざまなVCPUで実行される多様なワークロードに対し、動的にかつ、より知的に反応するために、一部の実施例のプロファイル・ワークロードの特徴は、仮想化イベントの連続モニタリングに基づいている。このような実施例では、複数の異なる制御アルゴリズムは、現在実行しているワークロードの実際の特徴の関数として、選択的に利用できてもよい。このように、周波数、及び電圧制御は急速に変化する統合されたワークロード・パターンに反応することができ、パフォーマンスを犠牲にせずにパワーセービングが達成される。
【0009】
周波数、及び電圧制御アルゴリズムは、PCPUの要求、及び利用に関する一般的な経過情報(historical information)に基づく。例えば、一部のOSのインプリメンテーションは、定期的に、例えば、20ミリ秒の(ms)間隔で、PCPUの利用をサンプリングする。PCPUの利用のその過去のパターンに基づいて、適切なクロック周波数(又は制御ファクタ)が、次の20msの間隔のCPUに対して決定されてもよい。例えば、CPUの利用度が高い場合、高い周波数が選択される。同様に、利用度が低い場合、低い周波数が選択されてもよい。OSシステム・スケジューラが通常は短い間隔(例えば1ms)で動作するので、この技術は物理システムにおいて一般に十分である。したがって、一般に20msのウィンドウにおいて監視されるワークロード・パターンは、単一のPCPU上の平均ワークロード・パターンの正確な指示を提供するのに十分である。
【0010】
しかしながら、VMMスケジューラは、そのPCPU上で動作しているVCPUのために、PCPUを時分割する必要があり、異なる振る舞いを見せる。短い間隔で動作するよりはむしろ、VMMスケジューラは、一般には、各々の新しく導入された仮想化レイヤーによる高いコンテクストスイッチのオーバーヘッドを回避するために、タスクのスケジューリングを、より大きい間隔で緩慢にさせる。例えば、VMMは、通常は30msのオーダ以上のスケジューリング間隔を有してもよい。この時間量(例えば30ms)は、長ささとしては、PCPU制御アルゴリズムの周波数制御間隔(例えば20ms)に比較的近いので、前にスケジュールアウトされた(scheduled-out)VCPUのパターンが次にスケジュールインされた(scheduled-in)VCPUのための周波数制御を決定するために使用されるという可能性が高い。スケジュールアウトされたVCPU、及びスケジュールインされたVCPUは、非常に異なる種類のワークロードで実行されうるため、スケジュールインされたVCPUのために選択される周波数は、現在実行されている動作に十分に適しているとは限らない。この課題は、「誤った制御(false scaling)」と称する一つの課題である。この場合誤った制御の課題を回避する一つの方策は、単純に、制御間隔を拡張することである(例えば、200ms以上)。しかしながら、長い制御間隔は、逆に、動作中のワークロードの急速な変化に反応することができず、かつ、制御アルゴリズムがリソースを共有することに対する公正さに問題を生じさせることになってしまうことがある。各VCPUに対して自身のプロファイリング・チャネルを与えることによって、この誤った制御を回避する。このため、各VCPUの特長を個別的にモニタし、分析することを可能とする。したがって、制御の決定は、実際のVCPUで実行されているワークロードの特徴に基づくことができる。
【0011】
上述したように、制御の決定は、通常はCPUの利用の関数であってもよい。しかしながら、CPUの利用は必ずしも特定のワークロードに対する最適周波数のための精密なインジケータでない。そして、それはまた、誤った制御の状況に結果としてなることがある。例えば、メモリの集中的なワークロードは、CPUをサチュレートさせ得る。また、多くのストールサイクルを発生させる。したがって、CPUの利用において、高周波が選択されなければならないことを示す場合であっても、実際には、パフォーマンスの低下を伴わずに、低い周波数が選択され得る。本発明の一部の実施例は、CPUの利用に基づかないワークロード・パターンを認識し、ワークロード特徴プロファイリング・チャネルを適応させ、この種の誤った制御の課題に対処する。
【0012】
いくつかの実施例では、VCPUベースの制御は、また、各々のVCPUのための異なる制御アルゴリズムを使用することにより、更なる効果を提供してもよい。さらに他の、複数の制御アルゴリズムが、いかなるVCPU用に利用されてもよい。例えば、1つの制御アルゴリズムはCPUの利用に基づいて周波数を選択することに適していてもよい。他の制御アルゴリズムはパフォーマンスの考慮に基づいて周波数を選択するように構成されてもよい。また、他の制御アルゴリズムはパワーセービング等にその決定の基礎をおいてもよい。このような実施例では、特定の制御アルゴリズムは、プロファイリング・チャネルによって提供される現在のワークロードの特徴に基づいて、動的に選択されてもよい。現在のワークロードの特徴に変化が合った場合、現在選択された制御アルゴリズムは、他の制御アルゴリズムと交換されてもよい。以下に更に詳細に述べるが、例えば、I/Oに集中した(intensive)ワークロード、メモリに集中したワークロード、及びレイテンシに集中したワークロードは、それらのワークロードの特徴の現実を考慮に入れた異なる制御アルゴリズムの使用によって、軽減されうる。
【0013】
各々のVCPUのために用意された改善された制御能力を提供することに加えて、VCPUベースの制御は、更に正確に、コンピューティングサービスとそのカスタマーとの間のサービスレベル契約を遵守することの判断の機会を提供する。例えば、この種の契約は、物理的な処理リソースの利用、及び速度に基づく特定の条項を含みうる。したがって、各々のVCPUが動作している周波数は、サービスレベル契約要件に対して考慮に入れてもよいファクタである。PCPUベースの制御が使用される場合、正確に周波数の要件を遵守することが可能でないこともあろう。したがって、この種の要件に従うVCPUが、PCPU上で動作している限り、PCPUベースの制御アルゴリズムはディスエーブルしなければならないかもしれない。VCPUベースの制御は、各々のカスタマーのワークロードのためのシステムの処理リソースの利用を、より正確に測定及び課金することを容易にすることができる。
【0014】
図1は、本発明の一実施例に従った仮想環境のVCPUベースの制御をインプリメントするための例示的なフレームワーク100である。
図1は、仮想化フレームワーク100の実施例を示すが、実施例は、また、仮想化技術が使用される特定の用途に従って、他のフレームワーク、アーキテクチュア、システム、プラットフォーム又は環境においてインプリメントされてもよいことは言うまでもない。
図1に示すように、仮想化フレームワーク100は、OS又はVMMソフトウエアを実行することができるコンピュータシステムのいずれにも対応し得る、基本的なハードウェアプラットホーム102を備える。例えば、基本的なハードウェアプラットホームは、パソコン、メインフレームコンピュータ、ポータブルコンピュータ、ハンドヘルド・コンピュータ、セットトップボックス、サーバ又はその他のコンピューティング・システムであってもよい。
図1に示すように、基本的なハードウェアプラットホーム102は、物理プロセッサ(又はPCPU)104、メモリ106、I/Oリソース107、及びプラットフォーム102(例えばPCPU104)の各種要素用の周波数を有するクロック信号、及び電圧を生成するためのクロック生成/制御回路108を有する。
【0015】
PCPU104は、任意のタイプのプロセッサであってもよい。例えば、多目的マイクロプロセッサ(例えばマルチコアプロセッサ、マイクロコントローラ又はプログラマブル・ロジック)を含む。
図1は、1つのPCPU104だけを示すが、基本的なハードウェアプラットホーム102がマルチプロセッサを含んでもよいことは言うまでもない。そして、各々がいかなる数の実行コアをも有するいかなる数のマルチコアプロセッサ、及び、各々がいかなる数のスレッドをも有するいかなる数のマルチスレッドのプロセッサを含む。
【0016】
図1において示されるメモリ106は、ダイナミック・ランダム・アクセス・メモリ(DRAM)又は他のメモリ例えばスタティックランダムアクセスメモリを含んでもよい。基本的なプラットフォームハードウエア102は、いかなる数の補助装置又は接続を含んでもよい。例えば、データ、アプリケーション、ソフトウエアの命令等を保存する様々な記憶装置が挙げられる。
【0017】
基本的なハードウェアプラットホーム102に加えて、
図1のシステム100は、VMM110、及びVCPUs112a、112b、112n、ゲストOS122、及び124、及びゲストアプリケーション126、128、130、及び134を含むVM118、及び120を有する。図示するように、ゲストOS122、及びゲストアプリケーション126、及び128は、VCPUs112a、及び112bによって実行されるために、VM118にインストールされる。ゲストOS124、及びゲストアプリケーション130、及び132は、VCPU112nによって実行されるために、VM120にインストールされる。しかしながら、システム100は、いかなる数のVM、ゲスト、及びVCPUsを含んでもよく、また、VMは、他の仮想資源(例えば仮想メモリ、仮想I/Oリソース、その他)を含んでもよい。なお、発明の範囲は、この点に関して制限されない。
VMM110は、ゲストにVM(すなわち基本プラットフォームハードウエア102の抽象化)を提供するために、又はVMを生成し管理し仮想化ポリシーをインプリメントするために、基本プラットフォームハードウエア102にインストールされあるいはアクセスできる、いかなるソフトウエア、ファームウェア又はハードウェア・ホストであってもよい。その他の実施例では、ホストは、いかなるVMM、ハイパーバイザ、OS又は他のソフトウエア、ファームウェア又は基本的なプラットフォームでハードウエア102が制御可能なハードウエアであってもよい。ゲストはいかなるOS、いかなるVMMでもあってもよい。そして、VMM110の他のインスタンス、いかなるハイパーバイザ、いかなるアプリケーション、又は他のソフトウエアをも含む。
【0018】
図1を参照すると、VMM110は、仮想ベースの周波数、及び電圧制御(VBFVS)センタ134、及び複数のVBFVSインスタンス(instance)136a−nを含む。各々のVBFVSインスタンス136a−nは、VCPU112a−nに割り当てられる。各々のVBFVSインスタンス136a−nは、また、プロファイルの関数としてのVCPUのワークロードの特徴を規定するプロファイリング・チャネル138a−nに拘束され、かつプロファイルを作ることによって提供されたプロファイルの関数として適切に制御された周波数及び/又は電圧(又は制御ファクタ)を決定する制御アルゴリズム140a−nに拘束される。いくつかの実施例では、特定の制御アルゴリズム140に対する拘束は、動的に実行されてもよい。例えば、プロファイリングデータは、VCPUにかかるワークロードに対して、現在拘束されているアルゴリズム140aよりも、制御アルゴリズム140bが、より適していることを示してもよい。この種の場合、VBFVSインスタンス136は、アルゴリズム140aから制御アルゴリズム140bに動的に切り替えてもよい。
【0019】
図1を再度参照する。また、システム100は、各々のVCPUs112a−nをスケジュールするためのVMMスケジューラ142を含む。スケジューラ142が新規なVCPU(例えばVCPU112b)のスケジュールをするとき、スケジューラ142はコンテクストスイッチ・イベントをVBFVSセンター134に送信する。VBFVSセンター134がコンテクストスイッチ・イベントを受け入れると、スケジュールインされたVCPU112bに割り当てるために、VBFVSセンター134は、VBFVSインスタンス(例えばインスタンス136b)を選択する。VBFVSインスタンス136bに関連づけられたプロファイリング・チャネル(例えば、138bチャネル)が開始され、適切に制御された周波数及び/又は電圧を決定するために、インスタンス136bに拘束される制御アルゴリズム(例えばアルゴリズム140b)に情報を提供する。VBFVSセンター134は、PCPU104のためのクロック信号を生成するクロック生成回路108に新しい周波数の指示を通信することによって、周波数を制御する。いくつかの実施例では、制御は、VCPU112bがスケジュールインされている全ての期間の間、繰り返し実行される。実施例において、各々のVBFVSインスタンス136は、また、アカウント及びバジェットモジュール(ABM:Accounting and Budgeting Module)144に関連づけられた、あるVCPUレベルでパワー、及びエネルギーのきめ細かい計算を提供する。
図2は、システム100でインプリメントされ得る周波数及び/又は電圧制御を決定するための例示的なフローチャートである。本発明は、示されるステップの特定のステップ又は特定の順番に限られないことが、理解されなければならない。他の実施例は、より少ないステップを含んでもよく、あるいは、順番を変えてもよい。
【0020】
図2において、ブロック202で、VMMスケジューラ142は、新規なVCPU(例えばVCPU112b)をスケジュールインする。ブロック204で、VMMスケジューラ142は、コンテクストスイッチ・イベントをVBFVSセンター134に送信する。VBFVSセンター134は、スケジュールインされたVCPU112(ブロック206)のためのVBFVSインスタンス136を選択する。いくつかの実施例では、VBFVSセンター134は、また、制御統計をスケジューラ142に送信してもよい。例えば、VBFVSセンター134は、スケジュールアウトされたVCPUによってプロファイリング・チャネル及び制御アルゴリズムが最後に使用されたかを記憶してもよい。そして、ワークロード特徴、及びVCPU使用に関する統計を更新してもよい。VBFVSセンター134は、また、スケジュールアウトされたVCPU用に決定された最後の周波数を記録してもよい。VBFVSセンター134は、また、統計をスケジューラ142に送信してもよい。更に、VBFVSセンター134は、スケジュールインされたVCPU112のための前に記録された最後の周波数を回復してもよく、かつ現在のスケジュールインされたVCPU112によって最後に使用されたプロファイリングメカニズム、及び制御アルゴリズムを解凍してもよい。その他の実施例では、VBFVSセンター134は、スケジュールインされたVCPUに最初に適用するために、どの周波数、プロファイリングメカニズム、及び制御アルゴリズムを決定する他の技術を用いてもよい。例えば、デフォルトの開始パラメータ等が挙げられる。プロファイリングメカニズム、制御アルゴリズム、及び周波数/電圧が、スケジュールインされたVCPUのために最初に選択される態様にかかわらず、選択されたプロファイリング・チャネル138が、作動して、かつ、スケジュールインされたVCPU112の現在の実行のワークロードの特徴のプロファイルを作成するためにデータを収集し始める(ブロック208、及び210)。プロファイルとして収集された情報は、選択された制御アルゴリズム140に提供される。ブロック212で、アルゴリズム140は、適切な周波数/電圧(又は制御ファクタ)を決定し、かつ、VBFVSセンター134にそれを通信する。VBFVSセンター134は、クロック生成回路108のクロック周波数/電圧を制御する。プロファイリング・チャネル138はデータを収集し、かつ制御アルゴリズム140を送信し続け、かつ新規なVCPUがスケジュールインされるまで、制御アルゴリズム140はデータに応答して周波数及び/又は電圧を制御し続ける。
【0021】
上記したように、様々な形の制御アルゴリズムが使用されてもよい。そして、事実、複数の異なる種類の制御アルゴリズムが、現在のスケジュールインされたVCPUのために選択的に利用されてもよい。したがって、実施例によって、
図2において示される制御・技術は、新規な制御アルゴリズム140に変更するか、プロファイルとして収集されたワークロードに基づいて、これを選択するステップを有する(ブロック214)。例えば、本発明の1つの例示的実施態様で、選択的に利用できる1タイプの制御アルゴリズムは、CPU要求ベース(CPU demand−based)(CPU−DBS)のアルゴリズムである。通常、物理CPUの利用は、以下によって算出されてもよい:
(T
elapsed−T
idle)/T
elapsed (式1)
ここで、T
elapsedは、利用が最後にサンプリングされてからの経過時間である。そして、T
idleは経過時間の段階の間のCPUアイドルタイムである。
【0022】
VCPUに基づく制御・フレームワークに対して、この要求ベースの式は、VCPUに密接に関わるようにし、その結果、誤った制御の発生を減らすように変更することができる。例えば、いくつかの新しい要因が、仮想環境を考慮に入れたプロファイリング・チャネル138にもたらされてもよい。例えば、仮想マシンで、VMMスケジューラ142は、一般に一部のタイムクオンタム(例えば30ms)を各々のスケジュールインされたVCPU112に割り当てる。しかしながら、スケジュールインされたVCPU112が、1つのタイムスライスで、それに付与されたクオンタムの全てを消費してもよいというわけでない、幾つかの状況が存在する。VCPU112自体が動作を停止したためにアイドル状態に入ったときが、その一例である。この状態では、仮想化イベントがVCPU112をウエイクアップさせるまで、VMMスケジューラ142は、VCPU112をブロック状態(blocked state)としてもよい。VCPUの利用を特定するために、VCPU112がブロック状態のままである時間を、T
blockedと称してもよい。したがって、スケジューラ142は、ワークロードの特長をプロファイルとすることに利用するために、与えられたクオンタム及びブロックされたパラメータをプロファイリング・チャネル138に伝えてもよい。
【0023】
VCPU112が単一のタイムスライスのその全てのクオンタムを消費してはならない他の状況は、VCPU112よりも、他の上位の優先するVCPUs112が優先されるときに発生しうる。この場合に、優先されていない(preempted)VCPU112は、まだ作動できる状態(runable)であるが、動作のキュー(run queue)に止まっており、かつ、実際に継続中の意味あるジョブを持っている。また、VCPU112利用を特定するために、この優先されてしまった時間(preempted time)は、T
stolenと称してもよい。そして、スケジューラ142は、横取りされた時間パラメータ(stolen time parameter)をプロファイリング・チャネル138に転送してもよい。
【0024】
これらの新しい要素を踏まえ、プロファイリング・チャネル138は、以下の通りにVCPU112の利用を算出してもよい:
(T
quantum−T
stolen−T
blocked)/(T
quantum−T
stolen) (式2)
VCPU112の利用を決定する式(2)を用いることによって、ネイティブOS環境のための周知の要求周波数制御アルゴリズムが利用されてもよい。ここでの差異は、(PCPU104利用の代わりに)VCPU112の利用は、DBSベースのアルゴリズム140の入力として提供されることである。VCPUの利用を入力として、CPU−DBSアルゴリズムは、低い利用度に対しては低い周波数をアウトプットし、またその逆も成り立つ。
【0025】
CPU−DBSアルゴリズムは、パフォーマンス、及びパワーセービングの間の最適バランスを提供しない場合がある。いくつかの場合では、より良好なバランスを担保するためには、現在のワークロードの特徴に関して、付加的な、あるいは異なる情報(VCPU112利用以外)のプロファイルを作ることによって達成されてもよい。仮想環境においては、仮想化の間、ワークロード特徴が推論され得る多くのヒントが生成される。より詳しくは、単一の物理マシン上の複数のVMを統合するために、VMMは、各々のVMから様々な形のセンシティブなアクションをインターセプトし、所望の挙動をエミュレートし、かつ非同期仮想割り込みを導入することを必要とする。この新規な仮想化レイヤーは、基本的なハードウェアプラットホーム上の動作と比較して、オーバーヘッドを仮想マシンに加える。しかしながら、この必然的なオーバーヘッドによって提供される豊富なヒントは、ワークロード特徴の推測を補助するために使用されてもよい。
【0026】
例えば、入出力(I/O)の集中した特徴を有するワークロードは、エミュレートされた入出力デバイス上の入出力要求の頻度に基づいて、直ちに識別され得る。入出力デバイスがドライバ・レベルで、並列に仮想化(para−virtualized)されている場合、高度なドライバは、I/Oの集中したワークロードを示す統計を率先して提供することができる。別の例として、メモリ仮想化イベントは、メモリの集中したワークロードのインジケータであってもよい。例えば、VMMは、通常は、シャドウページテーブルを維持する。シャドウページテーブルは、ゲスト・ページテーブルから生成され、後者が変更されると後者と同期する。これは、ゲスト・ページテーブルがPCPUによって直接理解することができない仮想メモリアドレスを含むためである。VMMはゲスト・ページテーブルを読取り専用にマークしてもよい。ゲストがその現在のページテーブルを修正することを試みると、同期するVMMのためにページフォルトが発生する。VCPUがしばしばメモリを割り当てて、かつ開放する場合、この種のワークロードはこの種のページフォルトを示す統計に識別されてもよい。レイテンシに敏感なワークロードは、また、直ちに識別されてもよい。通常は、レイテンシに敏感なパターンは、複数の・タイマー、及び割り込みによって特徴づけられる。タイマー、及び割り込みのソースがVMMによって仮想化されるので、VMMはレイテンシに敏感なワークロードを識別するためにそれらのイベントをトラッキングすることができる。
【0027】
上で述べた仮想化イベントは、例示的なものであることが、理解されなければならない。そして、その他方式、及びイベント又はインジケータの組合せが、プロファイルの収集に使用されてもよく、そして、適切な制御アルゴリズムを選択するために、ワークロードの特徴を推論してもよい。さらに、ワークロード特徴のプロファイルを作ること、および推論することは、VMMの特定のインプリメンテーション、ハードウエア仮想化の特徴等の基本的な特長などに従い変化してもよい。ワークロード特徴を識別する特定の方法に関係なく、本発明の実施例は、
図1において示されるVCPUに基づく制御・フレームワークに、それらの特徴を導入してもよい。これらのワークロードの特徴を使用することにより、そのワークロードを持つVCPUに割り当てられるVCPUインスタンスを拘束するために、特定の制御アルゴリズムが選択されてもよい。
【0028】
以下の実施例は、ワークロード特徴に基づいて、制御アルゴリズムの複数の・タイプの選択ができることによって達成され得る利点を例示する。第1の実施例として、メモリの集中したワークロードは通常は多くのストールサイクルを有する。このように、この種のワークロードはパフォーマンスを失うことのない、より低い周波数クロックによって動作することができ、同時に、より低い周波数オペレーションはパワーセービングとなりうる。こうした状況では、CPU−DBSアルゴリズムは良好な候補ではない。なぜなら、VCPUがメモリの集中したワークロードの下で完全にサチュレートしており、そのため、CPU−DBSアルゴリズムは高い周波数を計算する。その代わりに、メモリの集中したワークロードは、より低い周波数で動作させることができるという認識に基づいて、パワーセービングベースの制御アルゴリズムが選択されうる。したがって、チャネルプロファイリルを作ることによって収集されるデータが、メモリの集中したワークロードのヒントを示す場合、より低い周波数オペレーションとなるよう、電力セーブ・アルゴリズムが選択されてもよい。
【0029】
別の例として、レイテンシに敏感なワークロードに対しては、VCPUの低い利用を行ってもよい。したがって、CPU−DBSアルゴリズムは、結果として低い周波数の選択となる。しかしながら、VCPUがレイテンシに敏感なワークロードで動作するときは、それはすばやく入力イベントに反応することが可能でなければならない。低い周波数がレイテンシ(待ち時間)を増加させるため、CPU−DBSアルゴリズムは適切でない。その代わりに、レイテンシに敏感なワークロードが、プロファイルが作られたインジケータから推論される場合、高い周波での動作を確実にするパフォーマンスベースの制御アルゴリズムが選択され得る。
【0030】
CPU−DBSアルゴリズムは、多くの適用範囲を更に有する。例えば、ほとんど仮想化イベントが検出されない場合、VCPUの利用は、周波数の制御に対する適切な指標であり得る。
【0031】
図3の例示的実施形態に示すように、各々のVBFVSインスタンス136のためのチャネルプロファイル138は、さまざまな仮想化イベントソース(例えば仮想デバイス146のモデル、仮想マシン148間の通信、仮想割込コントローラ150、メモリに関連する仮想化イベントソース152、その他)からの情報を収集することによって、仮想化イベントのプロファイルを作る。加えて、プロファイリング・チャネル138は、VCPUの割当クオンタム、失われた時間(stolen time)、ブロック化された時間、などを含むVCPUの利用に関し、スケジューラ142から情報を受信する。これらのさまざまなソースからの情報は、VCPU112がスケジュールインされたVCPUであるクオンタムの間、連続的に分析される。これによって、情報から認識されるワークロード特徴パターンに基づいて、VFBVSインスタンス136がそれ自体を特定の制御アルゴリズム140a−cに動的に拘束することができる。
図3に示すように、利用できる制御アルゴリズムは、CPU−DBSアルゴリズム140a、電力セーブ・アルゴリズム140b、及びパフォーマンスベースのアルゴリズム140c、等である。
【0032】
VCPUベースの制御は、本願明細書において記載されている具体例に限定されない。例えば、本発明の一実施例において、VCPUベースの制御は、単にプロファイリング情報としてVCPU周波数変動要求を使用し、VBFVSセンターに要求を渡すためのパススルー制御アルゴリズム、又は、要求を直接VBFVSセンターにルーティングすることを選択することによって、インプリメントされてもよい。実施例は、ソフトウェアコード(VMM110、及びそのコンポーネントのいずれかを含む)でインプリメントされてもよく、かつ、システムが命令を実行するようにプログラムするために使用できる命令を記憶する記憶媒体に記憶されてもよい。記憶媒体は、ディスクを含むフロッピー(登録商標)ディスク、光ディスク、固体ドライブ、コンパクトディスク読取り専用メモリ、コンパクトディスク書き換え可能メモリ、及び光磁気ディスク、半導体デバイス例えば、読取り専用メモリ、ランダムアクセスメモリ、例えばダイナミック・ランダム・アクセス・メモリ、スタティックランダムアクセスメモリ、消去可能なプログラマブル・リードオンリーメモリ、フラッシュメモリ、電気的に消去可能なリードオンリーメモリ、磁気あるいは光学カード、その他、電子的命令を記憶することに適するあらゆるタイプのメディアが含まれる。もちろん、これらに限定されるものではない。ソフトウエアの命令は、プロセッサ(例えば
図1のPCPU104)での実行のためにロードされてもよい。
【0033】
本発明が限定された数の実施例に関して記載されているが、当業者はそこから多数の修正変更を理解する。添付の請求項は、本発明の精神及び本発明の範囲に該当する全ての実施例およびバリエーションを含む