(57)【特許請求の範囲】
【請求項１】
第１のプロセッサと、
前記第１のプロセッサよりも低い電圧で動作し得る第２のプロセッサと、
スピンロックに作用している間にスピンしたか或いはスリーパ・ボーナスを含んでいたかに関する履歴記録に基づいて、プロセスがスピンロック・プロセス、又はスリープ・ボーナスを伴うプロセスであると判断される場合、前記プロセスを前記第２のプロセッサに割り当てるように構成されたスケジューラと
を含む、コンピューティング装置。
【請求項２】
前記第１のプロセッサは汎用命令のセットを含み、前記第２のプロセッサは汎用命令のサブセットを含む、請求項１に記載のコンピューティング装置。
【請求項３】
前記第２のプロセッサは、アトミック・テスト・アンド・セット命令のような、前記第２のプロセッサにおいて実行されるプロセスのタイプを最小限サポートするに適した汎用命令のサブセットを含む、請求項１乃至請求項２のいずれかに記載のコンピューティング装置。
【請求項４】
前記プロセスのうちの１つ又は複数個は、当該プロセスが前記第２のプロセッサに割り当てられるべきであるという表示を含み、前記スケジューラはそのようなプロセスを前記第２のプロセッサに割り当てる、請求項１乃至請求項３のいずれかに記載のコンピューティング装置。
【請求項５】
マルチプロセッサにおける第１のプロセッサまたは第２のプロセッサにプロセスを割り当てる方法であって、前記第２のプロセッサは、前記第１のプロセッサよりも低い電圧で動作し得、前記方法は、
プロセスがスピンロック・プロセス、スリープ・ボーナスを伴うプロセス、または他のタイプのプロセスのいずれかとして現在動作することになっているかまたは動作し続けているかを、スピンロックに作用している間にスピンしたか或いはスリーパ・ボーナスを含んでいたかに関する履歴記録に基づいて決定するステップと、
前記プロセスがスピンロック・プロセス又はスリーパ・ボーナスを伴うプロセスである場合、前記プロセスを前記第２のプロセッサに割り当て、そうでない場合には前記プロセスを第１のプロセッサに割り当てるステップと、
を含む、方法。
【請求項６】
前記決定するステップは、作動中の前記プロセスの監視結果に基づいて、又は前記プロセスの作動中の電力消費量に基づいて決定するステップとを含む、請求項５に記載の方法。
【請求項７】
前記決定するステップは、コンパイラ・プログラムから入力を受け取るステップを含む、請求項５または請求項６に記載の方法。
【請求項８】
前記第１のプロセッサは汎用命令セットを含み、前記第２のプロセッサは前記汎用命令セットのサブセットを含む、請求項５乃至請求項７のいずれかに記載の方法。
【請求項９】
前記第２のプロセッサは、レジスタと、アトミック・テスト・アンド・セット命令とを含む、請求項５乃至請求項８のいずれかに記載の方法。
【請求項１０】
コンピュータ・プログラムであって、請求項５乃至請求項９のいずれかに記載のステップを前記第１のプロセッサ及び前記第２のプロセッサに接続されたスケジューラに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティング装置に関し、更に詳しくいえば、コンピューティング装置の動作時における電力消費量の削減に関する。
【背景技術】
【０００２】
電力消費量を削減するために、コンピューティング装置における現在のプロセッサは、一般に、アイドリング中に深いＣ状態のスリープに入り、割り込みが生じたときに目覚めるように設計されている。例えば、「Ｃ３状態」（多くの場合、「スリープ」として知られている）は、プロセッサがそれのキャッシュをコヒーレントに保つ必要はないが、他の状態情報を維持する必要がある。或るプロセッサは、そのプロセッサを目覚めさせるために必要な時間の長さが異なる程度がＣ３状態（深いスリープ、比較的深いスリープ等）によって変化する。しかし、一般的にスピンロック獲得行為を明示するプロセスは、スリープ状態期間の減少のために又はスリープ状態に入るのを防ぐために、および状態の遷移に関連したエネルギ・コストの増加のために、この節電機構に悪影響を及ぼし得るであろう。
【０００３】
スピンロック・プロセスは、プロセッサが深いＣ状態スリープに入るのを防ぐプロセスの例である。スピンロックは、ロックが利用可能になるまで要求元スレッドが繰り返しチェックするループ（スピン）において単に待機するというロックである。スレッドが活発なままであるが、有用なタスクを遂行していないとき、そのようなロックの使用は一種の「ビジー待ち」である。スピンロックは、一旦それが得られると、通常は、それらが明示的にリリースされるまで保持されるであろうが、或る実施方法では、それらは、スレッドがブロックするまたは「スリープに入る」場合、自動的にリリースされ得る。スピンロックは、スレッドが短期間の間単にブロックされるかもしれない場合、それらがオペレーティング・システムのプロセス再スケジューリングまたはコンテキスト切り換えによるオーバヘッドを回避するので、効率的である。このような理由で、スピンロックは、多くの場合、オペレーティング・システム・カーネル内で使用される。しかし、スピンロックは、それらが他のスレッドの作動を妨げ且つ再スケジューリングを必要とすることがあるので、長期間保持される場合、不経済なことになる。ロックがスレッドによって長く保持されるほど、そのロックを保持している間、オペレーティング・システム（Ｏ／Ｓ）スケジューラによってそれが中断される危険は大きくなる。これが生じると、他のスレッドは「スピン」したままにされる（反復的にロックを得ようとする）であろうが、ロックを保持するスレッドは、それをリリースに向かって進行させない。その結果は、ロックを保持するスレッドがそれを終了およびリリースすることができるまで、半デッドロックになる。特に、これは、ロックを保持するスレッドが最終的に終了するまで、同じ優先順位の各待機スレッドがスピンしてそれの分量（スレッドが作動し得る、割り当てられた時間であって、本明細書ではタイムスライスとも呼ばれる）を浪費し易いシングル・プロセッサ・システムに関しては真実である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、コンピューティング装置の動作時における電力消費量の削減を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の１つの実施例によれば、コンピューティング装置は、第１の速度で動作し且つ第１の電力量を消費するように構成された第１のプロセッサと、第２の速度で動作し且つ第２の電力量を消費するように構成された第２のプロセッサとを含む。この場合、第１の速度は第２の速度よりも大きく、第１の電力量は第２の電力量より大きい。更に、そのコンピューティング装置は、プロセスが自身のタイムスライス全体を利用する場合のみ、そのプロセスを第１のプロセッサに割り当てるように構成されたスケジューラを含む。
【０００６】
本発明の別の実施例は、マルチプロセッサ・コンピューティング装置における第１のプロセッサまたは第２のプロセッサにプロセスを割り当てる方法に関する。この実施例の方法は、第１のプロセッサが第２のプロセッサよりも速く動作し且つ第２のプロセッサよりも多くの電力を消費するということを確かめるステップと、プロセスがスピンロック・プロセス、スリーパ・ボーナスを伴うプロセス、または他のタイプのプロセスのいずれかとして現在動作することになっているまたは動作し続けているかを判断するステップと、プロセスがスピンロック・プロセスまたはスリーパ・ボーナスを伴うプロセスである場合、そのプロセスを第２のプロセッサに割り当て、そうでない場合、そのプロセスを第１のプロセッサに割り当てるステップを含む。
【０００７】
別の側面から見ると、本発明は別の目的は、システム・プログラムであって、それがコンピューティング装置にロードされて実行されるとき、本発明のすべてのステップをそのコンピューティング装置に遂行させるためのコンピュータ・コードを含む前記システム・プログラムを提供することにある。
【０００８】
更なる特徴および利点も本発明の技法によって実現される。本発明の他の実施例および実施態様は本明細書に詳細に記述され、「特許請求の範囲」の部分で考察される。それらの利点および特徴を備えた本発明のより良い理解のためには、詳細な説明及び図面を参照されたい。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施例を具現化し得るコンピューティング装置の一例を示す概略的なブロック図である。
【図２】本発明の1つの実施例に従って２つのプロセッサを含むコンピューティング装置の概略的なブロック図である。
【図３】本発明の1つの実施例に従って特定のプロセッサにプロセスを割り当てる方法を示すフローチャートである。
【発明を実施するための形態】
【００１０】
本発明の実施例は、メイン・プロセッサと共に、スリーパおよび／またはスピンロック・プロセスのための低速の低電圧専用プロセッサを実装することによって、縮小された電力削減を達成し得る。これに関連して、「プロセッサ」という用語が、非対称関数または電力消費特性を具現化するマルチコア・プロセッサ・アーキテクチャの特定コアを意味するために使用され得る、ということは当業者には明らかであろう。メイン・プロセッサは、中央処理装置（ＣＰＵ）制約のものであり且つそれらのタイムスライス全体を使用するプロセスのためだけに確保され得る。このように、メイン・プロセッサは、１つの状態のままである可能性が高く、従って、メイン・プロセッサがディープＣのスリープ状態に入ることを可能にするという節電の十分な恩恵を最大にする。この目的のために、１つの実施例では、第２のプロセッサがメイン・プロセッサよりも低い電圧で動作し得るということは明らかであろう。その結果、第２のプロセッサは低い速度で動作し得る。
【００１１】
図１を参照すると、本明細書における教示事項を具現化するための処理システム１００の実施例が示される。この実施例では、システム１００は、１つ又は複数の中央処理装置（プロセッサ）１０１ａ、１０１ｂ、１０１ｃ等（集合的にまたは総体的にプロセッサ１０１と呼ばれる）を有する。１つの実施例では、各プロセッサ１０１は、縮小命令セット・コンピュータ（ＲＩＳＣ）マイクロプロセッサを含み得る。プロセッサ１０１は、システム・バス１１３を介してシステム・メモリ（ＲＡＭ）１１４および種々の他のコンポーネントに接続される。読取り専用メモリ（ＲＯＭ）１０２が、システムバス１１３に接続され、システム１００の所定の基本機能を制御する基本入出力システム（ＢＩＯＳ）を含み得る。
【００１２】
図１は、更に、システム・バス１１３に接続された入出力（Ｉ／Ｏ）アダプタ１０７およびネットワーク（通信）アダプタ１０６を示す。Ｉ／Ｏアダプタ１０７は、ハード・ディスク１０３および／またはテープ記憶装置１０５、或いは任意の他の同様のコンポーネントと通信する小型コンピュータ・システム・インターフェース（ＳＣＳＩ）アダプタであってもよい。Ｉ／Ｏアダプタ１０７、ハード・ディスク１０３、およびテープ記憶装置１０５は、本明細書では総体的に大容量記憶装置１０４と呼ばれる。ネットワーク・アダプタ１０６は、データ処理システム１００が他のそのようなシステムと通信することを可能にする外部ネットワーク１１６とバス１１３を相互接続する。スクリーンまたはディスプレイ（例えば、表示モニタ）１１５が、ディスプレイ・アダプタ１１２によってシステム・バス１１３に接続される。ディスプレイ・アダプタ１１２は、グラフィックス・インテンシブ・アプリケーションおよびビデオ・コントローラの性能を改善するためにグラフィックス・アダプタを含み得る。１つの実施例では、アダプタ１０７、１０６、および１１２は、中間バス・ブリッジ（図示されてない）を介してシステム・バス１１３に接続される１つ又は複数のＩ／Ｏバスに接続されてもよい。ハード・ディスク・コントローラ、ネットワーク・アダプタ、およびグラフィックス・アダプタのような周辺機器を接続するために適したＩ／Ｏバスは、一般的には周辺コンポーネント・インターフェース（ＰＣＩ）のような共通プロトコルを含む。ユーザ・インターフェース・アダプタ１０８およびディスプレイ・アダプタ１１２を介してシステム・バス１１３に接続されるものとして更なる入出力装置が示される。キーボード１０９、マウス１１０、およびスピーカ１１１がすべてユーザ・インターフェース・アダプタ１０８を介してバス１１３に相互接続される。ユーザ・インターフェース・アダプタ１０８は、例えば、多数のデバイス・アダプタを単一の集積回路に統合するスーパＩ／Ｏチップを含み得る。
【００１３】
従って、図１において形成されるように、システム１００は、プロセッサ１０１の形式の処理手段と、システム・メモリ１１４および大容量記憶装置１０４を含む記憶手段と、キーボード１０９およびマウス１１０のような入力手段と、スピーカ１１１およびディスプレイ１１５を含む出力手段とを含む。１つの実施例では、システム・メモリ１１４および大容量記憶装置１０４の一部分は、図１に示される種々のコンポーネントの機能を調整するための、ＩＢＭ社から入手可能なＡＩＸオペレーティング・システムのようなオペレーティング・システムを一体的に格納する。なお、ＩＢＭおよびＡＩＸは、米国のインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ社）の商標である。
【００１４】
システム１００が、任意の適切なコンピュータまたはコンピューティング・プラットフォームであってもよく、端末装置、ワイヤレス装置、情報家電装置、ワークステーション、ミニ・コンピュータ、メインフレーム・コンピュータ、携帯情報端末（ＰＤＡ）、或いは他のコンピューティング装置を含み得るということは明らかであろう。システム１００が通信ネットワークによってリンクされた複数のコンピューティング装置を含み得るということも明らかであろう。例えば、２つのシステム間でクライアント・サーバ関係が存在してもよく、その２つのシステム間で処理が分離していてもよい。
【００１５】
システム１００がサポートし得るオペレーティング・システムの例は、MicrosoftWindows Vista、Mac OS、Java、ＡIX、LINUXおよびUNIX、或いは他の適切なオペレーティング・システムを含む。なお、Microsoft、WindowsVista、およびWindowsのロゴは、米国のマイクロソフト・コーポレーションの商標である。また、Mac OSは、米国のApple Inc.の商標である。JavaおよびすべてのJava ベースの商標およびロゴは、米国のSunMicrosystem Inc.の商標である。Linuxは、米国のLinus Torvaldsの商標である。UNIXは、米国のThe Open Groupの商標である。システム１００は、ネットワーク１１６を介して通信するためのネットワーク・アダプタ１０６を含む。ネットワーク１１６は、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロ・エリア・ネットワーク（ＭＡＮ）、或いはインターネットまたはワールド・ワイド・ウェブのような広域ネットワーク（ＷＡＮ）であってもよい。
【００１６】
システム１００のユーザは、標準の電話回線、デジタル加入者回線、ＬＡＮまたはＷＡＮリンク（例えば、Ｔ１、Ｔ３）、ブロードバンド接続（フレーム・リレー、非同期転送モード（ＡＴＭ））、および無線接続（例えば、８０２.１１(ａ)、８０２.１１(ｂ)、８０２.１１(g)）のような任意の適切なネットワーク・インターフェイス１１６の接続を通してネットワークに接続し得る。
【００１７】
本明細書に開示されるように、システム１００は、ユーザのディスプレイ・スクリーン１１５上に示された情報の捕捉および対話的表示のためにマシン可読媒体（例えば、ハード・ディスク１０４）に格納されたマシン可読命令を含む。本明細書において論じられるように、命令は、「ソフトウェア」１２０とも呼ばれる。そのソフトウェア１２０は、その分野で知られているように、ソフトウェア開発支援ツールを使用して生産され得る。ソフトウェア１２０は、その分野で知られているように、ユーザ対話機能を提供するための様々なツールおよび機能を含み得る。
【００１８】
或る実施例では、ソフトウェア１２０は別のプログラムに対するオーバーレイとして提供される。例えば、ソフトウェア１２０は、アプリケーション（またはオペレーティング・システム）に対する「アドイン」として提供され得る。その分野では知られているように、用語「アドイン」は一般に補助プログラム・コードを指すことに留意されたい。そのような実施例では、ソフトウェア１２０は、それが協同するアプリケーションまたはオペレーティング・システムの構造或いはオブジェクトを置換し得る。
【００１９】
図２は、コンピューティング装置２００の更に特殊な例を示す。コンピューティング装置２００は、２つ以上のプロセッサを含み得る任意のタイプのコンピューティング装置であってもよい。図示のように、コンピューティング装置２００は、第１のプロセッサ２０２および第２のプロセッサ２０４を含む。１つの実施例では、第１のプロセッサ２０２はメイン・プロセッサである。この目的のために、１つの実施例では、それは、第１のプロセッサ２０２において自身のほとんどまたはすべてのタイムスライスを利用するプロセスを実行することが望ましい。これは、第１のプロセッサ２０２が、特定のプロセスを能動的に処理するとき全能力をあげて実行し続けるのを支援し得る。１つの実施例では、第１のプロセッサ２０２は、第２のプロセッサ２０２より高い電圧で動作する。
【００２０】
第２のプロセッサ２０４は、第１のプロセッサ２０２より少ない電力を消費するプロセッサであってもよい。１つの実施例では、この低電力の第２のプロセッサ２０４は、第１のプロセッサ２０４より低い速度で動作し得る。
【００２１】
コンピューティング装置２００は、更にスケジューラ２０６も含み得る。スケジューラ２０６は、リクエスト・キュー２０８からのプロセスを第１のプロセッサ２０２または第２のプロセッサ２０４のいずれかに割り当てるように構成される。
【００２２】
１つの実施例によれば、スケジューラ２０６は、他のプロセスより少ない電力を利用するプロセスを第２のプロセッサ２０４に割り当てるように構成され得る。スピンロック・プロセスまたは所謂スリーパ・プロセスは、１つの実施例では、常にまたはほとんど常に第２のプロセッサ２０６に割り当てられ得る。これは、少なくとも部分的には、これらのタイプのプロセスの両方とも、高速プロセッサの処理能力またはそれらに割り振られた全タイムスライスを十分に利用してないという事実のためである。例えば、スリーパ・プロセスは、それのタイムスライスの一部を利用するだけであり、その分野で言われているように、将来のスリーパ・ボーナスと交換にそれの残りの割り振られたタイムスライスを放棄し得る。これらのプロセスは第１のプロセッサ２０２を十分には利用してないので、それらは第２のプロセッサ２０４に割り当てもよい。特定のプロセスが低速のプロセッサに割り当てられるべきであるかどうかをプログラマがコードで表わし得るということは明らかであろう。スケジューラ２０６がプロセスを割り当て得るもう１つの方法は、特定のプロセスが、スピンロックに作用している間に頻繁にスピンしたか或いはスリーパ・ボーナスを含んでいたかに関する履歴記録に基づく。それが肯定される場合、スケジューラはそのようなプロセスを第２のプロセッサ２０４に割り当て得る。
【００２３】
１つの実施例では、第２のプロセッサ２０４が、システムにおける他の高速のプロセッサ（例えば、第１のプロセッサ２０２）に格納された汎用命令のサブセットを含み得る。１つの実施例では、このサブセットは、アトミック・テスト・アンド・セット命令または主プロセッサに保持されてない付加的命令のような汎用命令を含み得る。更に、第２のプロセッサ２０４は、データを格納するためのレジスタを含み得る。
【００２４】
１つの実施例では、第１のプロセッサ２０２および第２のプロセッサ２０４は、プロセッサの電力使用量を決定するように構成されたプログラムまたはハードウェアを含み得る。このデータは、例えば、プロセッサ（２０２および２０４）内に保存され得るし、或いはスケジューラ２０６にとって、または、必要な場合には任意のユーザ・スペース・プロセスにとって、利用可能にされ得る。
【００２５】
図３は、スケジューラ２０６（図２）が、特定のプロセスをどちらのプロセッサ（高速または低速）に割り当てるべきかを決定する方法を示すフローチャートである。プロセスはブロック３０２で始まり、リクエスト・キューにおける次のプロセスが、特殊プロセッサにおいてより最適に実行され得るプロセスであるかどうかを決定するためにそのリクエスト・キューにおける次のプロセスが調べられる。この決定は、そのプロセスが高電力消費者であるかまたは低電力消費者あるかに関する表示を含むテーブルまたは他のタイプのレコードを調べることを（その分野では知られているように、バス待ちではないプログラム命令の実行を達成するためにプロセッサ時間を利用することから推察されるように）含み得る。そのテーブルまたは他のレコードの内容は、そのプロセスに対してコンパイル時に作成された表示を、そのようなものが表示された場合に含み得るし、スケジューラによってサポートされ得る。即ち、プログラマは、ソフトウェアでその選択を表示することによって設計時に１つのまたは他のプロセッサにそのプロセスを強制し得るであろう。これは、セクションもしくは領域またはコードが第１のプロセッサまたは第２のプロセッサのいずれかにおいて最適に実行されるということをコンパイラに知らせることができる特別の命令をそのソフトウェアに含むことによって行われ得る。勿論、テーブルは、履歴データに基づいてスケジューラ自体により作成および設置され得る。例えば、プロセスが規則的にスリーパ・ボーナスを提供しているかまたはスピンロック・プロセスとして作用している場合、そのプロセスは、低速のプロセッサに割り当てられるものとしてタグ付けされ得る。
【００２６】
プロセスが特殊プロセッサ上で実行されるべきプロセスではない場合（即ち、コーディングまたは履歴が、それが最も速いプロセッサにおいて作動すべきであるということを示す場合）、それは、ブロック３０４でプロセッサ１に割り当てられる。即ち、プロセスが頻繁にはスピンロックを得ないと判断された場合、または頻繁なスリーパとして識別されてない場合、或いは電力節約に関連して低電力のプロセッサにおいてより最適に実行される他の候補プロセスであると識別されてない場合、それは、ステップ３０４で高速の第１のプロセッサに割り当てられる。しかる後、第１のプロセッサにおけるオペレーションが正規の方法で実行される。即ち、プロセスの割り当ては、或る実施例では、プロセスが割り当てられるプロセッサがそのプロセスを操作する方法に影響を与えない。そうでない場合、処理はブロック３０６に進む。
【００２７】
プロセスが、特殊なプロセッサにおいて実行されるべきものとして既にマークされていなかった場合、ブロック３０６において、そのプロセスがスピンロックを頻繁に得るかどうかが決定される。この決定はいくつかの方法で行われ得る。例えば、コンパイラは、プロセスが資産として要求し、次に、プログラマによって使用される言語構造またはアプリケーション・プログラミング・インターフェイス（ＡＰＩ）を調べることによって所定の応答が受け取られるまでその資産をリリースしないということを決めることができ得る。それとは別に、スケジューラが履歴データに基づいて、プロセスが拡張期間の間特定の資産と提携し、その期間中如何なる他の処理も行わないということを決定し得る。更に、プロセスの実行中、そのプロセスがスピンロックしていること／直ちには利用可能でないスピンロックを待っている（そのプロセスがスピンロック・プロセスになり得る）ことが決定され得る。そのために、ブロック３０６は、プロセスが特殊なプロセスになったかどうか判断するために絶えず各実行プロセスを監視し得る。そのような場合、事前に開始したプロセスは、第１のプロセッサから第２のプロセッサに、またはその逆に移り得る。勿論、当業者は、プロセスが状態を変更するたびにプロセッサ間で１つのプロセスを何回もバウンドさせることを回避するために注意しなければならないということが明らかであろう。
【００２８】
とにかく、プロセスがスピンロック・プロセスである場合、それは、ブロック３０８において第２のプロセッサに割り当てられる。プロセスがスピンロック・プロセスではない場合、ブロック３１０において、そのプロセスがスリーパ・ボーナスを有するかどうかが決定される。これは、上述のように、プログラマ表示または履歴の調査によって、或いは、プロセスの実行をリアル・タイムで監視することによって、決定され得る。それとは関係なく、プロセスが関連のスリーパ・ボーナスを有する場合、それは、ブロック３０８において第２のプロセッサに割り当てられる。そうでない場合、プロセスは、ブロック３０４において第１のプロセッサに割り当てられる。特定のプロセスが第２のプロセッサに割り当てられるべきであるということが決定される前に、スケジューラがその特定のプロセスからの一貫したスリーパ・ボーナスを要求し得るということは明らかであろう。更に、プロセスは、一旦割り当てられると、それがスリーパ・ボーナスを提供しないという履歴を表示するまで、常にそのように割り当てられ得る。
【００２９】
本明細書において使用される用語は、特定の実施例のみを説明することを目的にしたものであり、本発明を限定することを意図しない。更に、用語「含む」または、「含み」は、それが本明細書で使用される時、記述された特徴、整数、ステップ、オペレーション、要素、および／またはコンポーネントの存在を指すが、１つ又は複数の他の特徴、整数、ステップ、オペレーション、要素、コンポーネント、および／またはそれらのグループの存在又は追加を排除しないということも明らかであろう。
【００３０】
「特許請求の範囲」に記載のすべての手段およびステップと機能要素に対応する構造体、材料、行為、およびそれの均等物は、「特許請求の範囲」に詳しく記載された他の要素と結合してその機能を遂行するための任意の構造体、材料、または行為を含むことを意図される。本発明の説明は、図解及び記述を目的に示されたが、余すところのないこと或いは開示された形式の発明に限定されることを意図するものではない。本発明の技術的範囲および趣旨から逸脱することのない多くの修正および変更が当業者には明らかであろう。本発明の実施例は、本発明の原理および実用的な応用例を最もよく説明するために、および、意図された特定の用途に適するように様々な修正を伴う様々な実施例に関して当業者が本発明を理解することを可能にするために、選択され、記述された。
【００３１】
本明細書に添付された図面のフローチャートは単なる１つ例である。このフローチャートおよびそこに記載されたステップ（またはオペレーション）に対して多くの変更が存在し得る。例えば、それらのステップは異なる順で行なわれてもよく、或いは、ステップが追加、削除、または修正されてもよい。これらの変更はすべて「特許請求の範囲」に記載された発明の一部と考えられる。
【図１】
0005752111.tif 000002
【図２】
0005752111.tif 000003
【図３】
0005752111.tif 000004