(57)【特許請求の範囲】
【請求項１】
オペレーティング・システムを実行するコンピュータにおける複数のプロセッサ・コアの動的割当を行うための方法であって、
プログラムを用意する工程（３００）であって、前記プログラムはコアに各レディ・キューからの命令の処理を停止させるように動作可能である、プログラム用意工程と、
該プログラムの実行を可能とするために利用可能なトークンの最大カウントを確立する工程（３０２）であって、前記最大カウントは前記コアの総数未満である、最大カウント確立工程と、
前記複数のコアによってトークンを取得する工程（３０４）であって、１つ以上のコアはトークンを取得することが不可能である、トークン取得工程と、を備え、
トークンが１つのコアによって取得されている場合（３０６）、該コアの各レディ・キューの処理を停止するプログラムを該コアによって実行し（３０８）、
トークンが１つのコアによって取得されていない場合（３０６）、該コアによってプログラムを実行することなく、アクティブとしたまま該コアの各レディ・キューからの命令を処理する、方法。
【請求項２】
所定の長さの時間、待機する工程（３１２）と、
前記トークン取得工程（３０４）に戻る工程とをさらに備える、請求項１に記載の方法。
【請求項３】
前記所定の長さの時間は、前記複数のコアを備えるコンピュータの量子クロック・サイクルである、請求項２に記載の方法。
【請求項４】
前記トークンは、入出力インターフェースに接続された周辺デバイスによって供給されるグローバル・セマフォにより与えられ、前記最大カウント確立工程（３０２）では、アドレス・バスを介して前記トークンにアクセスすることが含まれる、請求項１に記載の方法。
【請求項５】
前記プログラム用意工程（３００）では、各コアに対しプログラムが用意される、請求項１に記載の方法。
【請求項６】
前記プログラム用意工程（３００）では、前記オペレーティング・システムにおいて利用可能な最高の優先度を有するように前記プログラムを設定する請求項１に記載の方法。
【請求項７】
前記コンピュータのユーザ・インターフェースを介してユーザが前記方法を操作する工程（３１４）をさらに備える、請求項１に記載の方法。
【請求項８】
前記オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）７オペレーティング・システムである、請求項１に記載の方法。
【請求項９】
オペレーティング・システムを実行する複数のプロセッサ・コアの動的割当を行うように動作可能であるコンピュータであって、
コア（２１２、２１４、２１６）に各レディ・キュー（１０４、１０６、１０８）からの命令の処理を停止させるように動作可能なプログラムと、
該プログラムの実行を可能とするために利用可能なトークンを提供するように動作可能な周辺デバイス（２００）であって、前記トークンは前記コアの総数未満である最大カウントを有する、周辺デバイスと、を備え、
前記複数のコアは、トークンの取得を試みるよう動作可能であり、１つ以上のコア（１１０）はトークンを取得することが不可能であり、
トークンが１つのコア（２１２、２１４、２１６）によって取得されている場合、該コアの各レディ・キュー（１０４、１０６、１０８）の処理を停止するプログラムを該コア（２１２、２１４、２１６）によって実行し、
トークンが１つのコア（１１０）によって取得されていない場合、該コアによってプログラムを実行することなく、アクティブとしたまま該コアの各レディ・キュー（１０２）からの命令を処理する、コンピュータ。
【請求項１０】
前記コア（１１０、２１２、２１４、２１６）は、所定の長さの時間、待機し、再びトークンの取得を試みるよう動作可能である、請求項９に記載のコンピュータ。
【請求項１１】
前記所定の長さの時間は、前記複数のコアを備えるコンピュータの量子クロック・サイクルである、請求項１０に記載のコンピュータ。
【請求項１２】
前記トークンは、前記コンピュータの入出力インターフェースに接続された周辺デバイス（２００）によって供給されるグローバル・セマフォにより与えられる、請求項９に記載のコンピュータ。
【請求項１３】
各コアに対しプログラムが用意される、請求項９に記載のコンピュータ。
【請求項１４】
前記プログラムは、前記オペレーティング・システムにおいて利用可能な最高の優先度を有するように設定される、請求項９に記載のコンピュータ。
【請求項１５】
ユーザ・インターフェース（２０２）をさらに備え、前記ユーザ・インターフェースを介してユーザが前記プログラムおよびトークンの機能を操作可能である、請求項９に記載のコンピュータ。
【請求項１６】
前記オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）７オペレーティング・システムである請求項９に記載のコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、マルチコア・コンピュータ・プロセッサに関し、より詳細には、オペレーティング・システムを実行するプロセッサ・コアの動的割当に関するものである。
【背景技術】
【０００２】
現在、例えばＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）７オペレーティング・システムなどオペレーティング・システム（ＯＳ）を扱う複数のコアを有するマルチコア・プロセッサ・マシンが存在している。このようなマシンでは、実行中の各プロセッサ・コアに大きな電力を使用し、この点が、モバイル・デバイスなどの、バッテリの電力で動作するマシンにとっては不利である。特定の電力管理条件が存在する場合、おそらく、ストレスの加わる期間に一時的に、可能な限り多くのコアをアイドル状態にすると電力に関して都合がよいであろう。
【０００３】
しかし、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）７などのオペレーティング・システム（ＯＳ）では、動作中のプロセッサ内のアクティブ・コアの数の増減をサポートしていない。Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）７ＯＳがこのような「ホット・コア」の再割当をサポートしていない理由は、ＯＳが起動時に存在したコアに基づいてリソースを割当、重要な仮定を行うからである。Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）７ＯＳでは、未使用のコアを保留（パーキング）させるか、または不使用にする（ｄｉｓｕｓｅｄ）ことができ、事実上停止させるが、これは、ＯＳの負荷の認識の結果としてのみ実行され、軽い負荷条件ではＯＳは負荷分散を行い、コアのパーキングを行うことができる。
【０００４】
この問題に対する解決手段の１つは、ＯＳとプロセッサのハードウェアとの間で実行されるハイパーバイザ・ソフトウェアを使用して、ＯＳに仮想コア・セットを提供することである。実際、ハイパーバイザ・ソフトウェアは、ＯＳに対して複数のコアの偽のイメージを形成し、ハードウェアが実際にはすべてではなく一部しかコアをアクティブにしていないのに、それが複数のアクティブ・コアを有しているとＯＳに思わせる。残念なことに、ハイパーバイザ・ソフトウェアは大きく、ハイパーバイザ・コードのフットプリントが大きくならざるを得ず、また妥当なパフォーマンスを結果として得るためにプロセッサ内に仮想化機能がサポートされている必要がある。さらに、ハイパーバイザ・ソフトウェアによって、パフォーマンス・ペナルティが生じる。
【０００５】
別の解決手段として、プロセッサ・アフィニティを使用して実現される「コア・パーキング」があり、この場合、ＯＳプロセスは１つのコアに物理的に割り当てられ、使用されていないコアのパーキングが効果的に実行される。しかし、これは、ＯＳによって制御されているため、保証された技術ではなく、やはりＯＳによって認識されるワークロードに応じた機能である。
【０００６】
したがって、電力に関する理由からオペレーティング・システムを扱うアクティブ・コアの増減を素早く行う必要があり、またプロセス負荷を考慮することなく、ほぼリアルタイムで、これを行う必要がある。さらに、ＯＳを再起動せずにアクティブ・コアを動的に割り当てることも有利であろう。
【図面の簡単な説明】
【０００７】
【図１】従来技術のマルチコア・プロセッサの簡略化されたブロック図。
【図２】本発明による、アクティブ・コアの動的割当の簡略化されたブロック図。
【図３】本発明のさらなる実施形態による、方法の簡略化されたブロック図。
【発明を実施するための形態】
【０００８】
類似の参照番号が個別の図面全体を通して同一の、または機能面で類似している要素を指す、添付図面は、以下の詳細な説明とともに、本明細書に組み込まれ、本明細書の一部をなし、特許請求されている発明を含む概念の実施形態をさらに例示し、それらの実施形態のさまざまな原理および利点を説明するために使用される。
【０００９】
当業者であれば、図中の要素は簡単に、また分かりやすいように図示されており、必ずしも原寸に比例して示されていないことを理解するであろう。例えば、図中のそれらの要素のうちのいくつかの寸法は、本発明の実施形態の理解を高めるため他の要素に比べて誇張されている場合がある。
【００１０】
装置および方法の構成要素は、適宜、図面内で慣例記号により表されており、本明細書の説明を利用する当技術者にとって容易に理解できる詳細を述べることで本開示を分かりにくくしないため本発明の実施形態を理解するうえで関連性のある特定の詳細のみを示す。
【００１１】
本発明は、電力に関する理由からオペレーティング・システムを扱うアクティブ・コアを単純に増減するための新規な技術を提供する。これは、オペレーティング・システム（ＯＳ）の修正、またはサポートなしでも行われる。これは、オペレーティング・システムへの変更を伴わないハードウェアの構成を用いて達成され、これは、ドライバ・コールを使用するアプリケーションとして実装されうる。有利には、本発明は、ＯＳを再起動することなく、またプロセス負荷を考慮することなく、アクティブ・コアを動的に割り当てることによって電力流出を素早く低減することができる。
【００１２】
図１は、例えばＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）７ＯＳによって使用されうるような、従来技術のマルチコア・プロセッサのブロック図である。４コア・プロセッサの例が、図示されており、コアはＣＰＵ０（１１０）、ＣＰＵ１（１１２）、ＣＰＵ２（１１４）、およびＣＰＵ３（１１６）である。ディスパッチャ・データベース１００は、ＯＳによって制御されるワークロード・リポジトリである。データベース１００は、コアによって実行されるプロセスおよびスレッドを保持する。ＯＳは、プロセスおよびスレッドを各コアに対するレディ・キューに分配するようデータベース１００に指令する。例えば、コアＣＰＵ０（１１０）は、ＣＰＵ０（１１０）によって実行されるべきデータベース１００によって分配されたプロセスおよびスレッドを保持するＣＰＵ０レディ・キューを有する。同様に、コアＣＰＵ１（１１２）は、ＣＰＵ１（１１２）によって実行されるべきデータベース１００によって分配されたプロセスおよびスレッドを保持するＣＰＵ１レディ・キューを有し、コアＣＰＵ２（１１４）は、ＣＰＵ２（１１４）によって実行されるべきデータベース１００によって分配されたプロセスおよびスレッドを保持するＣＰＵ２レディ・キューを有し、コアＣＰＵ３（１１６）は、ＣＰＵ３（１１６）によって実行されるべきデータベース１００によって分配されたプロセスおよびスレッドを保持するＣＰＵ３レディ・キューを有する。データベース１００による分配は、各コアが時間の経過とともに処理負荷をほぼ均等に共有するように公平ルールに従って実行され、負荷分散コア・パーキング・ルールなどの他の考慮事項は関わっていないと仮定している。
【００１３】
図２は、本発明による、コンピュータのマルチコア・プロセッサのブロック図である。図２に示されているようなプロセッサおよびコアは、限定はしないが、マイクロプロセッサ、デジタル・シグナル・プロセッサ（ＤＳＰ）、マイクロコントローラ、メモリ・デバイス、特定用途向け集積回路、および／または論理回路などの、基本コンポーネントを備えることができる。コンピュータは、電力制限のあるモバイル・コンピューティング・デバイスとすることができる。このようなデバイスは、典型的には、高水準設計言語もしくは記述を使用して表現されている、コンピュータ命令を使用して表現されている、メッセージング／シグナリング・フロー図を使用して表現されている、および／または論理フロー図を使用して表現されているアルゴリズムおよび／またはプロトコルを実装するように適合される。したがって、アルゴリズム、論理フロー、メッセージング／シグナリング・フロー、コール・フロー、および／またはプロトコル仕様が与えられた場合、当業者であれば、与えられた論理を実行するユーザ機器を実装するのに利用可能な多くの設計および開発技術を承知している。
【００１４】
したがって、図２のプロセッサは、本発明のさまざまな実施形態を実装するように、本明細書の説明に従って適合されている既知の装置を表す。さらに、当業者であれば、本発明の態様は、さまざまな物理的コンポーネントにおいて、またさまざまな物理的コンポーネントを通じて実装することができ、いずれも単一のプラットフォームの実装に必ずしも限定されないことを理解するであろう。例えば、本発明のこれらの態様は、上に列挙された、またはこのようなコンポーネントの間に分散されるデバイスのうちのどれかで実装されうる。本発明の目的に関して、プロセッサ・コア、コア、および中央演算処理装置（ＣＰＵ）という用語は同等である。
【００１５】
図２を再び参照すると、本発明では、コンピュータのプロセッサのコアのうちの１つ以外のすべての使用を停止し、１つのコアを唯一のアクティブ・コアとして残す動的技術を導入することがわかる。他の実施形態では、複数のコアをアクティブのままにできる。コアの停止は、オペレーティング・システム（ＯＳ）の修正、またはサポートがない場合にも、電力に関する理由から実行される。これは、オペレーティング・システムへの変更を伴わないハードウェアの構成を用いて達成され、これは、ドライバ・コールを使用するアプリケーションとして実装されうる。ＯＳの再起動を必要とせず、ＯＳ側のワークロードの認識を考慮せずにコアの停止が実行される。本発明は、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）７ＯＳへの特定の応用とともに本明細書で説明されているが、本発明は、他の種類のマルチコア・プロセッサ・システムにも応用可能であることは理解されるであろう。
【００１６】
本発明では、図１と同じディスパッチャ・データベース１００のＣＰＵレディ・キュー１０２、１０４、１０６、１０８、およびコアを利用する。しかし、本発明では、例えば、ＧＰＩＯ（汎用入出力）などの、コンピュータのＩ／Ｏインターフェースのうちの１つに接続するハードウェア構成２００を導入する。このハードウェア構成は、コンピュータＩ／Ｏインターフェースと外部的に、または内部的にも、接続された周辺デバイスとして実施されうる。このハードウェア構成は、インターフェースのアドレス・バスに接続し、各コアによってアドレス・バスを介してアクセス可能なグローバル・セマフォを導入することができる。グローバル・セマフォは、本発明による、コアがＣｏｒｅＨａｌｔプログラムを実行するためのトークンを与える。当技術分野で知られているように、コアの動作には、量子クロック・サイクル（つまり、１００ミリ秒）毎に割込が生じる。この割込において、各コアは、ＣｏｒｅＨａｌｔプログラムの実行時に、グローバル・セマフォからトークンを取得しようとする。これらのコアに利用可能なトークンの最大カウント（例えば、コアの総数−１）がある。１実施形態では、例えば、コアのうちの１つを除く全部がトークンを取得することができる。トークンを取得したコアは、ＣｏｒｅＨａｌｔプログラムのアセンブラ停止ステートメントを実行する。
【００１７】
ＣｏｒｅＨａｌｔプログラムは、そのコアのレディ・キューから命令のコア処理を停止するセンブリ命令を含む。物理コア毎に１つのそのようなＣｏｒｅＨａｌｔプログラムがある。ＣｏｒｅＨａｌｔプログラムは、典型的には、デバイスが必要な特権レベルを保有するようにデバイス・ドライバ内に実装される。本明細書の例では、グローバル・セマフォにより、３つのＣｏｒｅＨａｌｔプログラムがそれぞれのコア（図２の２１２、２１４、２１６）のそれぞれで実行されうる。トークンを取得していない第４のコア１１０は、グローバル・セマフォがトークンを与えてくれるのを待機し、こうして待機することで、コアはレディ・キューにおいてワークロードを実行する。それぞれのコア２１２、２１４、２１６上で実行されるＣｏｒｅＨａｌｔプログラムは、これらのコアがそれぞれのレディ・キュー１０４、１０６、１０８を処理するのを停止させる。実際、ＣｏｒｅＨａｌｔプログラムは、次の量子クロック・サイクルの割込が発生するまでアセンブラ停止コマンドをコアに実行させ、静止電力のみを使用するようにこれらのコアを事実上アイドル状態にする。それぞれのコア１１０によって実行されることをブロックされたＣｏｒｅＨａｌｔプログラムは、そのコアをアクティブ状態のままにし、レディ・キュー１０２内のワークロードを処理させる。セマフォによって実行を許可された残り３つのＣｏｒｅＨａｌｔプログラムは、その後ワークロードの実行に加わらないそれぞれのコア２１２、２１４、２１６に対して停止命令を実行する。
【００１８】
実際、本発明では、コンピュータの電源２０４（例えば、バッテリ）からの消費電力を、データベースまたはレディ・キュー内のプロセス負荷に関係なく、ＯＳの修正、またはサポートがない場合にも、通常約２５％まで下げる。この電力低減は、停止されたコアが静止電力を消費する結果として、またシステムが時間あたり実行する命令の割合が少なく、メモリおよび周辺コンポーネントのような他のコンポーネントに対する負荷を低下させるため、生じる。もちろん、トークンの最大カウントは、各サイクルにおいて約５０％、７５％、さらには１００％アクティブのコアを許容するように変化することは理解されるであろう。２５％の実施形態では、量子クロック・サイクルで割込が生じる毎に、各コアは、再び、セマフォ・トークンを取得しようと試み、１つのコアはトークンの最大カウントに達した後には取得を試みることはできない。各コアはどの１サイクルにおいてもトークンを取得する等しい確率を有しているので、コアはすべて、ある時間を通じて等しくレディ・キューを処理する機会を有する。
【００１９】
各コア停止（ＣｏｒｅＨａｌｔ）プログラムは、アフィニティを使用して特定のコアに割り当てることができ、ＯＳプロセスは特定のコアに物理的に割り当てられる。次いで、ＣｏｒｅＨａｌｔプログラムは、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）７ＯＳにおいて、他のプログラムおよびドライバ上でオペレーティング・システムにおける利用可能な最高優先度まで引き上げられるように設定されうる。その結果、ＣｏｒｅＨａｌｔプログラムの実行は、ほぼリアルタイムで動作し、他のプログラムおよびドライバとのコンフリクトが緩和される。
【００２０】
本発明の動作および監視は、コア割当、コンピュータのユーザ・インターフェース２０２上のアイコン、ボタン、または他の機能のアクティベーションを通じてユーザがトグル式に切り替えることができるコンピュータ上の本発明の節電機能を実行することで、コンピュータ上でユーザ・アクティベーションまたはハードウェア・アクティベーションが可能であることが企図される。また、コンピュータはユーザへのユーザ・インターフェース２０２上に、コア割当、節電機能が動作しているか、または動作していないこと、または達成されている節電を示す表示を行うことができることも企図される。また、ユーザは、コンピュータのユーザ・インターフェース２０２上のアイコン、ボタン、または他の機能のアクティベーションを通じて利用可能なトークンの最大カウントを制御し、それにより、本発明を使用して利用可能な量の節電を行うことが可能であることも企図される。
【００２１】
ユーザ・アクティベーション／デアクティベーションは、ＣｏｒｅＨａｌｔプログラムにグローバル・セマフォおよびその後の停止命令の連動／非連動を命令するソフトウェア・コールの結果として発生しうる。ハードウェア・アクティベーション／デアクティベーションも、グローバル・セマフォ・ハードウェアへのハードウェア信号の結果として生じ、その結果、セマフォ動作がアクティベートもしくはデアクティベートされるか、またはトークンの挙動を変えてアクティベートされる、例えば、コア４つのうち２つを停止させる、コア４つのうち３つを停止させる、などが可能である。また、本発明を使用することで、一時的電力ストレス状況が緩和されうることも企図される。例えば、システムが壁の電力供給からバッテリ電力供給に移行するドッキングからアンドッキング（ｄｏｃｋ−ｔｏ−ｕｎｄｏｃｋ）のシナリオでは、本発明は、電力引込を低減し、システムの通常シャットダウン（１つのコア上で）を行えるようにできることが企図される。さらに、本発明は、コアのスロットリングの既存の利用可能な方法と連携して動作しうる。
【００２２】
図３は、本発明による、オペレーティング・システムを実行する複数のプロセッサ・コアの動的割当のための方法のフローチャートを示している。
この方法は、プロセッサのコアがそれぞれのレディ・キューからの命令を処理することを停止させるように動作可能なプログラムを用意する（３００）ことから始まる。
【００２３】
次の工程は、プログラムの実行を可能とするために利用可能なトークンの最大カウントを確立すること（３０２）を含み、最大カウントはプロセッサ内のコアの総数より小さい。
【００２４】
次の工程は、コアによるトークンの取得（３０４）を含み、少なくとも１つのコアはトークンを取得することができない。
トークンが、コア３０６によって取得されている場合、次の工程は、そのコアのそれぞれのレディ・キューの処理を停止するプログラムをそのコアによって実行すること（３０８）を含む。トークンが、コア３０６によって取得されていない場合、トークンなしのそのコアはプログラムを実行することができず、そのため、それぞれのレディ・キューからの命令を処理するようにアクティブのままとなる（３１０）。
【００２５】
いずれの場合も、次の工程は、所定の長さの時間、つまり、次の量子クロック・サイクルを待機すること（３１２）を含む。
タイムアウトした後、つまり、割込が発生すると、プロセスはコアによるトークンの取得（３０４）に戻り、次のサイクルにどのコアがアクティブのままであるかを調べる。
【００２６】
好ましくは、上記の方法は、コンピュータのユーザ・インターフェースを介してコンピュータにユーザによって操作され（３１４）、監視されることが企図される。
有利には、本発明を使用すると、今日のデスクトップ・ウィンドウズ（登録商標）・オペレーティング・システムについて当てはまるが、強制コア・パーキングをサポートしていないＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）７ＯＳにおいて強制コア・パーキングが可能になる。本発明は、比較的単純に実装することができ、オペレーティング・システムへの変更を伴わず、またドライバ・コールを使用するアプリケーションとして実装されうる。
【００２７】
前記の仕様で、特定の実施形態が説明された。しかし、以下の請求項で定められているような本発明の範囲から逸脱することなくさまざまな修正および変更を加えられることは、当業者には明白であろう。そこで、本明細書および図は、制限的な意味ではなく例示する意味で考慮され、このような修正形態はすべて、本発明の教示の範囲内に含まれることが意図される。
【００２８】
利益、利点、問題の解決手段、および利益、利点、もしくは解決手段をもたらしうるか、または顕著なものとしうる要素（複数可）は、任意の、またはすべての請求項の重大な、必要な、または不可欠な特徴もしくは要素として解釈すべきでない。本発明は、本出願の係属期間中になされた修正を含む付属の請求項、および発行されたとおりの請求項のすべての等価物によってのみ定められる。
【００２９】
さらに、本明細書では、第１の、第２の、上、および下などの関係語、ならびに同様の語は、一方のエンティティまたはアクションを別のエンティティまたはアクションから、そのようなエンティティまたはアクションの間の実際のそのような関係もしくは順序を必ずしも必要とするか、または暗示することなく、区別するためにのみ使用されうる。「ｃｏｍｐｒｉｓｅｓ（備える、含む）」、「ｃｏｍｐｒｉｓｉｎｇ（備える、含む）」、「ｈａｓ（有する）」、「ｈａｖｉｎｇ（有する）」、「ｉｎｃｌｕｄｅｓ（含む）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、「ｃｏｎｔａｉｎｓ（含む）」、「ｃｏｎｔａｉｎｉｎｇ（含む）」、および他の変形の用語は、非排他的な包含を対象とすることを意図しており、一連の要素を備える、有する、含む、包含するプロセス、方法、物品、または装置は、それらの要素のみを含むわけではなく、明示的に列挙されない、またはそのようなプロセス、方法、物品、または装置に固有のものでない他の要素を含むことができる。「ｃｏｍｐｒｉｓｅｓ  ．．．ａ」、「ｈａｓ  ．．．ａ」、「ｉｎｃｌｕｄｅｓ  ．．．ａ」、「ｃｏｎｔａｉｎｓ  ．．．ａ」が続く要素は、さらに制約を付けることなく、要素を備える、有する、含む、包含するプロセス、方法、物品、または装置内の追加の同一の要素の存在を除外しない。「ａ」および「ａｎ」という用語は、本明細書で別段明示的に述べられていない限り１つまたは複数として定義される。「実質的に」、「本質的に」、「約」、「ほぼ」、または他の用語は、当業者が理解する用語に近いものとして定義され、非限定的な１実施形態では、用語は、１０％以内であると定義され、別の実施形態では、５％以内であると定義され、別の実施形態では、１％以内であると定義され、別の実施形態では、０．５％以内であると定義される。本明細書で使用されているような「結合」という用語は、接続として定義されるが、必ずしも直接的ではなく、また必ずしも機械的なものではない。特定の方法で「構成」されたデバイスまたは構造は、少なくともその方法で構成されるが、列挙されていない方法でも構成されうる。
【００３０】
いくつかの実施形態は、マイクロプロセッサ、デジタル・シグナル・プロセッサ、カスタマイズされたプロセッサおよびフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、および１つまたは複数のプロセッサを制御していくつかの非プロセッサ回路と併せて、本明細書で説明されている方法および／または装置の機能のうちの一部、大半、または全部を実行する固有のストアド・プログラム命令（ソフトウェアとファームウェアの両方を含む）などの１つまたは複数の汎用もしくは専用プロセッサ（または「処理デバイス」）からなるものとしてよいのは明白であろう。あるいは、いくつかの、またはすべての機能は、ストアド・プログラム命令を有しない状態機械によって、または１つもしくは複数の特定用途向け集積回路（ＡＳＩＣ）で実装することも可能であり、各機能またはそれらの機能のうちのいくつかの何らかの組み合わせはカスタム・ロジックとして実装される。もちろん、２つのアプローチの組み合わせも使用することが可能である。
【００３１】
さらに、１実施形態は、説明されている、また本明細書で特許請求されているように方法を実行するようにコンピュータ（例えば、プロセッサを備える）をプログラムするためコンピュータ可読コードが格納されているコンピュータ可読記憶媒体として実装することができる。このようなコンピュータ可読記憶媒体の例として、限定はしないが、ハードディスク、ＣＤ−ＲＯＭ、光記憶デバイス、磁気記憶デバイス、ＲＯＭ（リード・オンリー・メモリ）、ＰＲＯＭ（プログラマブル・リード・オンリー・メモリ）、ＥＰＲＯＭ（消去可能プログラマブル・リード・オンリー・メモリ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブル・リード・オンリー・メモリ）、およびフラッシュ・メモリが挙げられる。さらに、当業者であれば、例えば、使用可能時間、現行技術、および経済上の考慮事項に起因する多大な労力と多くの設計選択の可能性があるにもかかわらず、本明細書で開示されている概念および原理に導かれたときに、実験を最小限度に抑えつつ、ＩＣに対するそのようなソフトウェアの命令およびプログラムを容易に生成することができることは予測される。
【００３２】
読者が技術的開示の性質を素早く確認できるように開示の要約をまとめてある。これは請求項の範囲または意味を解釈または制限するために使用されないことを了解したうえで提出される。それに加えて、前記の「発明を実施するための形態」では、本開示を合理化するためにさまざまな特徴をさまざまな実施形態においてグループにまとめられていることがわかる。この開示方法は、特許請求されている実施形態が各請求項において明示的に述べられている以上の特徴を必要とする意図を反映するものとして解釈すべきでない。むしろ、以下の請求項が反映するように、発明対象は、単一の開示されている実施形態のすべてに満たない数の特徴にある。したがって、以下の請求項は、これにより「発明を実施するための形態」に組み込まれ、各請求項は別々に特許請求される発明対象として自立している。
【図１】
0005866430.tif 000002
【図２】
0005866430.tif 000003
【図３】
0005866430.tif 000004