(57)【要約】【課題】電子システムの動作パラメータを適応的に設定する。【解決手段】チャージ割り当てアウェアスケジューリングに関連するシステム、方法、媒体、及び他の実施形態が開示される。１つの例示的なシステムの実施形態は、プロセッサ(130)のチャージ割り当てステータス(120)を決定し、プロセッサ上で実行されるのを待機しているエグゼキュータブルの特性（プロパティ）を検査し、及び、プロセッサ(130)のチャージ割り当てステータス(120)とエグゼキュータブルの特性に基づいてプロセッサ(130)によって実行されるエグゼキュータブルを選択するように構成されたスケジューリングロジック(110)を備える。【選択図】図１
2005141740.tif 000002
【特許請求の範囲】
【請求項１】
スケジューリングロジック（１１０）であって、
周波数増減可能プロセッサ（１３０）のチャージ割り当てステータス（１２０）を決定し、
前記プロセッサ（１３０）上での実行のためにスケジューリングされる１つ以上のエグゼキュータブルの１つ以上の選択されたプロパティを検査し、
前記プロセッサ（１３０）の前記チャージ割り当てステータス（１２０）および前記１つ以上の選択されたプロパティに少なくとも部分的に基づいて、前記プロセッサ（１３０）によって実行されるエグゼキュータブルを選択し、及び、
前記エグゼキュータブルの実行をスケジューリングさせる信号を生成するように構成されたスケジューリングロジック（１１０）、
を備える、システム。
【請求項２】
前記チャージ割り当てステータス（１２０）を、前記プロセッサの動作周波数、前記プロセッサの動作周波数の履歴、前記プロセッサの動作周波数の変化量、および周波数シフト標識のうちの１つ以上のものを評価することによって決定することができる、請求項１に記載のシステム。
【請求項３】
前記スケジューリングロジック（１１０）は、
前記プロセッサ（１３０）に関連したプロセッサデータ（２２５）を検査し、及び、
前記プロセッサデータ（２２５）と、前記プロセッサ（１３０）の前記チャージ割り当てステータス（１２０）と、１つ以上の前記選択されたプロパティとに少なくとも部分的に基づいて、前記プロセッサ（１３０）によって実行される前記エグゼキュータブルを選択するようにさらに構成される、請求項１に記載のシステム。
【請求項４】
前記１つ以上の選択されたプロパティは、
エグゼキュータブルの識別情報、
エグゼキュータブルがプロセッサ周波数の減少に関連付けられているかどうか、
エグゼキュータブルがプロセッサ周波数の増加に関連付けられているかどうか、
エグゼキュータブルが安定したプロセッサ周波数に関連付けられているかどうか、及び、
１つまたは複数の電力属性
とのうちの１つ以上を記述することからなる、請求項１に記載のシステム。
【請求項５】
１つ以上のエグゼキュータブルが前記プロセッサ（１３０）によって実行される順序に関連したスケジュールデータを記憶するように構成されたスケジュールデータストア（１５０）を備え、
前記スケジューリングロジック（１１０）は、
前記プロセッサの前記チャージ割り当てステータス（１２０）と、前記スケジュールデータと、前記１つ以上の選択されたプロパティとに少なくとも部分的に基づいて、前記１つ以上のエグゼキュータブルの実行順序を決定し、及び、
前記スケジュールデータストア（１５０）における前記スケジュールデータの選択的な配列を引き起こす１つ以上の信号を生成するようにさらに構成されることからなる、請求項１に記載のシステム。
【請求項６】
前記スケジューリングロジック（１１０）は、前記プロセッサ（１３０）の前記チャージ割り当てステータス（１２０）の変化に応答して、前記スケジュールデータストアの前記スケジュールデータの並べ替えを選択的に引き起こすようにさらに構成される、請求項５に記載のシステム。
【請求項７】
テストプロセッサ（３２５）であって、
エグゼキュータブルを実行し、
該テストプロセッサ（３２５）と実行中の前記エグゼキュータブルとのうちの１つ以上のものの１つ以上のプロパティを監視し、及び、
該テストプロセッサ（３２５）上での実行に関連した１つ以上の属性に関して前記エグゼキュータブルを特徴付ける１つ以上の特徴付けデータを作成するように構成されたテストプロセッサ（３２５）
を備える、請求項５に記載のシステム。
【請求項８】
方法（４００）であって、
周波数増減可能プロセッサの動作周波数を決定するステップ（４１０）と、
プロセスに関連した電力データを検査するステップ（４２０）と、
前記プロセッサの前記動作周波数および前記電力データに少なくとも部分的に基づいて、前記プロセスを前記プロセッサによって処理されるように選択的にスケジューリングするステップ（４３０）、
とを含む方法。
【請求項９】
前記周波数増減可能プロセッサに関連したプロセッサデータを検査するステップ（５３０）と、
前記プロセッサデータと、前記プロセッサの動作周波数と、前記電力データとに少なくとも部分的に基づいて、前記プロセスを処理するように選択的にスケジューリングするステップ（５４０）、
とを含む、請求項８に記載の方法。
【請求項１０】
システム（７００）であって、
１つ以上の周波数増減可能メインプロセッサ（７３５）と、
１つ以上の前記メインプロセッサ（７３５）に動作可能に接続されたメモリ（７１０）であって、１つ以上の前記メインプロセッサが該メモリにアクセス可能であることからなる、メモリと、
１つ以上の前記メインプロセッサに動作可能に接続されたチャージ割り当てアウェアスケジューリングロジック（７１５）
を備え、
前記チャージ割り当てアウェアスケジューリングロジックは、前記１つ以上のプロセッサのうちの１つ以上のもののチャージ割り当てステータスを決定するよう構成され、
前記チャージ割り当てアウェアスケジューリングロジックは、前記メモリ（７１０）に記憶された１つ以上のエグゼキュータブルに関連した電力属性を検査するよう構成され、ここで、前記エグゼキュータブルは、前記１つ以上のメインプロセッサのうちの１つ以上のものにおいて実行されるようスケジューリングされ、
前記チャージ割り当てアウェアスケジューリングロジックは、１つ以上の前記メインプロセッサの前記チャージ割り当てステータスおよび前記エグゼキュータブルに関連した前記電力属性に少なくとも部分的に基づいて、前記１つ以上のメインプロセッサのうちの１つ以上のものによって実行されるエグゼキュータブルを選択し、
前記チャージ割り当てアウェアスケジューリングロジックは、前記エグゼキュータブルの実行をスケジューリングさせる信号を生成するように構成されることからなる、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子システムの制御に関し、特に、電子システムの周波数や電力などの動作パラメータの制御に関する。
【背景技術】
【０００２】
コンピュータプロセッサは、変化する動作属性を報告する能力を有することができる。例えば、周波数スケーラブルプロセッサ（以下、周波数増減可能プロセッサ。周波数計測可能プロセッサの場合もある）は、その動作周波数を報告することができる。同様に、電圧増減可能プロセッサは、その動作電圧を報告することができる。従来、スケジューラは、利用可能な電力のような環境データを検査して、実行するエグゼキュータブル（エグゼキュータブルとは、例えば、実行可能なプロセスやスレッドなどの実行可能形態をいう）を選択する場合がある。エグゼキュータブルは、動作属性を再設定して、所望の結果を達成することになる。例えば、プロセスは、プロセッサの周波数を所望の周波数に再設定する命令および電圧を所望の電圧に再設定する命令を含む場合がある。これらのスケジューラは、例えば、システム電力を節約することに関係したアプリケーション（例えば、マーズローバ（Mars rover）、ハンドヘルド組み込みシステム）で使用されてきた。これらのスケジューラは、以下の方程式の特性を操作することによってシステム電力を操作することに関係している。
Ｖ＝ＩＲ（ここで、Ｖは電圧、Ｉは電流、Ｒは抵抗）
Ｐ＝ＶＩ（ここで、Ｐは電力）
Ｐ≒ｆＶ２（ここで、ｆは周波数）
Ｐｄ≒Ｃｅｆ＊Ｖｄｄ２＊ｆ（ここで、Ｐｄは動的な電力、Ｃｅｆはスイッチ静電容量、Ｖｄｄは供給電圧）
【０００３】
例えば、電力節約スケジューラは、或るプロセスがプロセッサをより低い電圧に設定できるので、その或るプロセスをスケジューリングし、次いで、周波数をより低い周波数に設定できる第２のプロセスをスケジューリングすることができる。このように、電力節約スケジューラは、電圧および周波数のようなプロセッサ属性を設定することによって、電力消費を操作する。しかし、これらのタイプのスケジューラは、電圧および周波数のようなプロセッサ属性が、スケジューラおよび／またはスケジューリングされたプロセスによってプログラム的かつ／または電子的に直接制御（例えば、設定、再設定）できることを前提としている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の１つの目的は、電圧及び周波数のような電子システムの動作属性を適応的に設定可能な手段を提供することである。
【課題を解決するための手段】
【０００５】
本発明は、その一態様においては、周波数増減可能プロセッサのチャージ割り当てステータスを決定し、そのプロセッサ上での実行のためにスケジューリングされる１つ以上のエグゼキュータブルの１つ以上の選択されたプロパティを検査し、そのプロセッサのチャージ割り当てステータスおよび１つ以上の選択されたプロパティに少なくとも部分的に基づいて、そのプロセッサによって実行されるエグゼキュータブルを選択し、及び、エグゼキュータブルの実行をスケジューリングさせる信号を生成するように構成されたスケジューリングロジックを備えるシステムである。また、他の一態様においては、周波数増減可能プロセッサの動作周波数を決定するステップと、プロセスに関連した電力データを検査するステップと、プロセッサの動作周波数および電力データに少なくとも部分的に基づいて、プロセスをプロセッサによって処理されるように選択的にスケジューリングするステップとを含む方法である。
【０００６】
本明細書に援用されて本明細書の一部を構成する添付図面は、本発明の態様のさまざまな例示の実施形態を示すさまざまな例示のシステム、方法等を示す。図に示した要素の境界（例えば、ボックス、ボックスの群、または他の形状）は、境界の一例を表すことが理解されよう。１つの要素を複数の要素として設計することもできるし、複数の要素を１つの要素として設計することもできることが当業者には理解されよう。別の要素の内部コンポーネントとして図示した要素を外部コンポーネントとして実施することもできるし、その逆も実施することができる。さらに、要素は、一律の縮尺で描かれていないことがある。
【実施例】
【０００７】
この出願は、チャージ割り当てアウェア（charge rationing aware）スケジューリングに関連した例示のシステム、方法、コンピュータ可読媒体等を記載している。これらの例示のシステムおよび方法は、プロセッサの状態（例えば、電力消費率、動作周波数）を判断し、プロセッサの状態およびプロセス（１または複数）がプロセッサの状態にどのように影響するかまたはプロセッサの状態によってどのような影響を受けるかに基づいてエグゼキュータブル（例えばプロセス、スレッド）を選択し、かつ／または、スケジューリングする。一般に、スケジューリングはフィードバックに基づいて実行でき、このフィードバックは、プロセスがスケジューリングされることになるプロセッサのその時点の動作周波数である。
【０００８】
以下は、本明細書で使用される選択された用語の定義を含む。これらの定義は、用語の範囲に含まれ、実施のために使用できるコンポーネントのさまざまな例および／または形態を含む。それらの例は、限定するためのものではない。用語の単数形および複数形の双方は、これらの定義内に含めることができる。
【０００９】
本明細書で使用される「コンピュータ可読媒体」は、信号、命令、および／またはデータを直接または間接に提供することに関与する媒体を指す。コンピュータ可読媒体は、不揮発性媒体、揮発性媒体、および伝送媒体が含まれるが、これらに限定されない形態を取ることができる。不揮発性媒体には、例えば、光ディスクまたは磁気ディスク等が含まれ得る。揮発性媒体には、例えば、光ディスクまたは磁気ディスク、ダイナミックメモリ等が含まれ得る。伝送媒体には、同軸ケーブル、銅線、光ファイバケーブル等が含まれ得る。また、伝送媒体は、電波または赤外線のデータ通信中に生成された電磁放射のような電磁放射の形態を取ることもできるし、１つまたは複数の群の信号の形態を取ることもできる。コンピュータ可読媒体の一般的な形態には、特定用途向け集積回路（ＡＳＩＣ）、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、プログラマブル読み出し専用メモリ（ＰＲＯＭ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、ディスク、搬送波、メモリスティック、フロッピィディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ＣＤ−ＲＯＭ、他の光媒体、パンチカード、紙テープ、穴のパターンを有する他の物理媒体、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、または他のメモリチップもしくはカード、およびコンピュータ、プロセッサ、もしくは他の電子デバイスが読み出すことができる他の媒体が含まれるが、これらに限定されるものではない。命令または他のソフトウェアをインターネットのようなネットワークを介して伝搬するのに使用される信号は、「コンピュータ可読媒体」とみなすことができる。
【００１０】
本明細書で使用される「データストア」は、データを記憶できる物理エンティティおよび／または論理エンティティを指す。データストアは、例えば、データベース、テーブル、ファイル、リスト、キュー、ヒープ、メモリ、レジスタ等とすることができる。データストアは、１つの論理エンティティおよび／もしくは物理エンティティ内に存在することもあるし、かつ／または、２つ以上の論理エンティティおよび／もしくは物理エンティティ間に分散されることもある。
【００１１】
本明細書で使用される「ロジック」には、機能（１つまたは複数）もしくは動作（１つまたは複数）を実行し、かつ／または、別のコンポーネントからの機能もしくは動作を引き起こすためのハードウェア、ファームウェア、ソフトウェア、および／またはそれぞれの組み合わせが含まれるが、これらに限定されるものではない。例えば、所望のアプリケーションまたはニーズに基づいて、ロジックには、ソフトウェア制御のマイクロプロセッサ、ＡＳＩＣのようなディスクリートロジック、プログラミングされたロジックデバイス、命令を収容するメモリデバイス等が含まれ得る。また、ロジックは、全体をソフトウェアとして具現化することもできる。複数の論理ロジックを記載する場合、これらの複数の論理ロジックを１つの物理ロジックに実装できる場合がある。同様に、単一の論理ロジックを記載する場合、単一の論理ロジックを複数の物理ロジックに分散できる場合がある。
【００１２】
本明細書で使用される「信号」には、１つまたは複数の電気信号もしくは光信号、アナログもしくはデジタルの１つまたは複数のコンピュータ命令もしくはプロセッサ命令、メッセージ、ビットもしくはビットストリーム、または受信、送信、および／もしくは検出が可能な他の手段が含まれるが、これらに限定されるものではない。
【００１３】
本明細書で使用される「ソフトウェア」には、読み出し、解釈、コンパイル、および／または実行が可能で、かつ、コンピュータ、プロセッサ、または他の電子デバイスに機能、動作を実行させ、かつ／または所望のように振る舞う１つまたは複数のコンピュータ命令またはプロセッサ命令が含まれるが、これらに限定されるものではない。命令は、動的にリンクされたライブラリからの個々のアプリケーションまたはコードを含むルーチン、アルゴリズム、モジュール、メソッド、スレッド、および／またはプログラムのようなさまざまな形態で具現化することができる。また、ソフトウェアは、さまざまな実行可能な形態および／またはロード可能な形態で実施することもでき、これらの形態には、スタンドアロンプログラム、関数呼び出し（ローカルおよび／またはリモート）、サーブレット（servelet）、アプレット、メモリに記憶された命令、オペレーティングシステムの一部、または他のタイプの実行可能命令が含まれるが、これらに限定されるものではない。ソフトウェアの形態は、例えば、所望のアプリケーションの要求仕様、そのソフトウェアが実行される環境、および／または設計者／プログラマの要求等に依存する場合があるということが当業者には理解されよう。また、コンピュータ可読命令および／または実行可能命令は、１つのロジックに配置することができ、かつ／または、２つ以上の通信するロジック、協働するロジック、および／もしくは並列処理ロジック間に分散させることができ、したがって、シリアル、パラレル、超並列、および他の方法でロードし、かつ／または、実行することができることも理解されよう。
【００１４】
本明細書で説明する例示のシステムおよび方法のさまざまなコンポーネントを実施するのに適したソフトウェアには、Ｊａｖａ、Ｐａｓｃａｌ、Ｃ＃、Ｃ＋＋、Ｃ、ＣＧＩ、Ｐｅｒｌ、ＳＱＬ、ＡＰＩ、ＳＤＫ、アセンブリ、マシン、ファームウェア、マイクロコードなどのプログラミング言語及びツール、および／または他の言語およびツールが含まれる。ソフトウェアは、システム全体であろうが、システムのコンポーネントであろうが、製品として具現化することができ、上記で定義したようなコンピュータ可読媒体の一部として保持することができる。ソフトウェアの別の形態には、ネットワークまたは他の通信媒体を介してソフトウェアのプログラムコードを受け手に送信する信号が含まれ得る。
【００１５】
「動作可能接続」、すなわちエンティティが「動作可能に接続される」接続は、信号、物理通信フロー、および／または論理通信フローを送信でき、かつ／または、受信できるものである。通常、動作可能接続には、物理インターフェース、電気インターフェース、および／またはデータインターフェースが含まれるが、動作可能な接続には、動作可能な制御を可能にするのに十分なこれらのタイプの接続または他のタイプの接続の異なる組み合わせが含まれ得ることに留意すべきである。
【００１６】
以下の詳細な説明のいくつかの部分は、メモリ内のデータビットに対するオペレーションのアルゴリズムおよびシンボル表現の観点から提示される。これらのアルゴリズム記述および表現は、当業者が自身の作業の内容を他者に伝達するのに使用する手段である。アルゴリズムは、本明細書においておよび一般的には、或る結果を生み出す一連のオペレーションと考えられる。オペレーションには、物理量の物理操作が含まれ得る。通例、物理量は、ロジックなどにおいて記憶、転送、結合、比較、およびそれ以外の操作が可能な電気信号または磁気信号の形態を取るが、必ずしもそうであるとは限らない。
【００１７】
これらの信号をビット、値、要素、シンボル、文字、用語、数字等と呼ぶことが、主として一般的な使用の理由から、時に便利であることが分かっている。しかしながら、これらの用語および類似の用語は、適切な物理量に関連付けられるべきものであり、これらの量に適用された単に便利なラベルに過ぎないものであることに留意すべきである。特に別段の言及がない限り、この説明全体を通して、処理、コンピューティング（演算など）、計算、決定（判断）、検査、分析、表示等のような用語は、コンピュータシステム、ロジック、プロセッサ、または物理（電子）量として表現されたデータの操作および変換を行う同様の電子デバイスの動作およびプロセスを指すことが理解される。
【００１８】
図１は、スケジューリングロジック１１０を含む例示のシステムを示している。このスケジューリングロジック１１０は、例えば、周波数増減可能プロセッサ１３０のチャージ割り当て（charge rationing）ステータス１２０を決定するように構成することができる。一般に、チャージ割り当てステータス１２０は、プロセッサ１３０の動作周波数に関係している。プロセッサ１３０のチャージ割り当てステータス１２０を決定することは、例えば、プロセッサ１３０の動作周波数を決定することを含むことができる。例示として、周波数増減可能プロセッサ１３０は、一定の電力要求または一定の電力要求の結果に応じて、その動作周波数を減少させることができる。例えば、プロセッサ１３０は、比較的高い電力消費率で動作していると、過熱することがある。過熱による損傷を防止するために、プロセッサ１３０は、冷却するためにその動作周波数を低下させることができる。一旦冷却すると、プロセッサ１３０は、次にその動作周波数を増加させることができる。このように、周波数増減可能プロセッサ１３０のチャージ割り当てステータス１２０を、例えば、プロセッサ１３０の動作周波数および動作周波数の変化を監視することによって決定することができる。
【００１９】
動作周波数について上述したが、別の例では、データを評価することによって、プロセッサ１３０のチャージ割り当てステータス１２０を決定することができる。このデータには、プロセッサ１３０の動作周波数、プロセッサ１３０の動作周波数の履歴、プロセッサ１３０の周波数の変化量、および周波数シフト標識が含まれるが、これらに限定されるものではない。チャージ割り当てステータス１２０を決定するために検査される情報は、例えば割り込みによって配信することができる。これに加えて、かつ／または、これに代えて、この情報を、プロセッサ１３０に関連付けられたチャージ割り当てデータに記憶することもできる。したがって、一例では、プロセッサ１３０は、チャージ割り当てステータス１２０に関連したデータを記憶できる１つまたは複数のレジスタを含むことができる。例えば、レジスタは、プロセッサ１３０の動作周波数を記憶することができる。したがって、一例では、割り込みがプロセッサ１３０によって生成された場合、スケジューリングロジック１１０は、このレジスタを読み出して、プロセッサ１３０の動作周波数を決定することができる。レジスタを説明したが、メモリのような他の装置も使用できることが理解されるべきである。
【００２０】
その時点の動作周波数を１つまたは複数の過去の動作周波数と比較することによって、スケジューリングロジック１１０は、プロセッサ１３０のチャージ割り当てステータス１２０を決定することができる。例示として、動作周波数が減少している場合、プロセッサ１３０が、長期にわたる比較的高い電力消費の影響（例えば、過熱）を考慮しようとしている可能性があると、スケジューリングロジック１１０は判断することができる。別の例示として、動作周波数が増加している場合、プロセッサ１３０が、前の長期にわたる比較的高い電力消費の影響から回復していると、スケジューリングロジック１１０は判断することができる。この回復は、例えば、プロセッサ１３０が、より低い周波数でプロセスを実行し、より少ない電力を消費し、したがって冷却したことによる可能性がある。
【００２１】
また、スケジューリングロジック１１０は、プロセッサ１３０上での実行をスケジューリングされることを待機しているエグゼキュータブルの選択されたプロパティを検査するように構成されることもできる。エグゼキュータブルは、例えば、プロセス、スレッド等とすることができる。例えば、１組の実行可能プロセス１４０（例えば、プロセス１４２および１４４〜１４８）は、プロセッサ１３０上での実行を待機していることがある。待機中のエグゼキュータブルに関連したプロパティには、そのエグゼキュータブルの識別情報、そのエグゼキュータブルがプロセッサ周波数の減少に関連したものかどうか、そのエグゼキュータブルがプロセッサ周波数の増加に関連したものかどうか、そのエグゼキュータブルが安定したプロセッサ周波数に関連したものかどうか、電力属性（例えば、最大電力消費）等が含まれ得るが、これらに限定されるものではない。
【００２２】
スケジューリングロジック１１０は、例えば、プロセッサ１３０のチャージ割り当てステータス１２０および選択された１つまたは複数のプロパティに少なくとも部分的に基づいて、プロセッサ１３０によって実行されるエグゼキュータブルを選択するように構成されることができる。スケジューリングロジック１１０が、プロセッサ１３０によって実行されるエグゼキュータブルを一旦選択すると、スケジューリングロジック１１０は、そのエグゼキュータブルの実行をスケジューリングさせる信号を生成することができる。例えば、スケジューリングロジック１１０は、そのエグゼキュータブルのエントリアドレスをプロセッサ１３０に渡したり、プロセス識別子をプロセッサ１３０のアドレスレジスタに入力したり等をすることができる。
【００２３】
一例では、スケジューリングロジック１１０は、エグゼキュータブルがプロセッサ１３０によって実行される順序に関連したスケジュールデータを記憶するように構成されたスケジュールデータストア１５０とやり取りすることができる。例えば、スケジュールデータストア１５０は、プロセッサ１３０によって実行されるエグゼキュータブルのプロセス識別子および／またはエントリアドレスを記憶するプロセスキューとすることができる。したがって、スケジューリングロジック１１０は、プロセッサ１３０のチャージ割り当てステータス１２０、スケジュールデータストア１５０のスケジュールデータ、および選択されたプロパティに少なくとも部分的に基づいて、エグゼキュータブルの実行順序を決定するようにさらに構成されることができる。実行順序の決定後、スケジューリングロジック１１０は、スケジュールデータストア１５０においてスケジュールデータの選択的な配列を引き起こす信号（１つまたは複数）を生成することができる。
【００２４】
例示として、１組の待機中のエグゼキュータブルには、数個のプロセス（例えば、プロセス１４２、および１４４〜１４８）が含まれることがある。これらのプロセスは、当該プロセスがプロセッサ１３０に過去にどのような影響を与えたか、当該プロセスがさまざまな状況下でプロセッサ１３０にどのような影響を与えることがあるか、当該プロセスの実行に好ましい状況等を特定するデータに関連付けることができる。チャージ割り当てステータス１２０を検査することによって、スケジューリングロジック１１０は、プロセスＡ１４８をプロセスキュー１５０の先頭にすべきであると決定することができる。例えば、チャージ割り当てステータス１２０は、プロセッサ１３０が比較的低い動作周波数で動作していることを示すことができ、プロセッサ１３０に冷却の機会を与えるために、プロセスＡ１４８のような電力の使用がより少ないプロセスを次に実行すべきことを示すことができる。プロセスＡ１４８を実行することによって、プロセッサ１３０がより高い動作周波数に戻ることが可能になると予想されるので、スケジューリングロジック１１０は、比較的高い動作周波数による利益を受けることができるプロセスＢ１４４を、プロセスＡ１４８の後にスケジューリングすべきことを決定することができる。プロセスＢ１４４を実行することによって、プロセッサ１３０は過熱されることがあり、したがって、より低い動作周波数に切り換えることが予想されるので、スケジューリングロジック１１０は、プロセスＢ１４４の後にプロセスＣ１４２をスケジューリングすることができる。ここで、プロセスＣ１４２は、より低い動作周波数で比較的低い電力消費によって実行できるものであり、したがって、プロセッサ１３０に冷却の別の機会を提供する。３つのプロセスを説明したが、これより多くの個数のプロセスおよび／またはこれより少ない個数のプロセスが、プロセッサ１３０によって実行されるようスケジューリングするのに利用可能であることが理解されるべきである。また、プロセスを説明したが、スレッドのような他のエグゼキュータブルも処理できることが理解されるべきである。同様に、プロセスキュー１５０を説明したが、実行順序によって編成できるリスト、リンクリスト、テーブル、ツリー等のような他のデータ構造体も使用できることが理解されるべきである。
【００２５】
スケジューリングロジック１１０は、データストア１５０に初期順序を作成することができる。しかしながら、スケジューリングロジック１１０は、スケジュールデータストア１５０のスケジュールデータをスケジューリングロジック１１０のために並べ替えるか、または、すでに並べ替えているようにさらに構成されることができる。この並べ替えは、例えば、プロセッサ１３０のチャージ割り当てステータス１２０の変化に応じて、選択的に行うことができる。例えば、スケジューリングロジック１１０は、プロセスＡ１４８の実行によって、プロセッサ１３０に冷却の機会が提供され、したがって、プロセッサ１３０がより高い動作周波数に戻るであろうと予想したかもしれないが、プロセスＡ１４８は、予期された電力消費よりも高い電力消費で実行されており、プロセッサ１３０をより低速で動作させる必要がある場合もある。したがって、チャージ割り当てステータス１２０の変化が検出されると、スケジューリングロジック１１０は、データストア１５０のデータを並べ替えて、プロセスＣ１４２をプロセスＢ１４４の前に移動させ、それによって、プロセッサ１３０に冷却の機会を提供することができる。
【００２６】
図２は、プロセッサ２３０のチャージ割り当てステータス２２０を決定するように構成されたスケジューリングロジック２１０を含む例示のシステムを示している。一般に、チャージ割り当てステータス２２０は、プロセッサ２３０の動作周波数に関係している。また、スケジューリングロジック２１０は、プロセッサ２３０に関連したプロセッサデータ２２５を検査するように構成されることもできる。例えば、プロセッサデータ２２５には、プロセッサ２３０の温度、プロセッサ２３０の温度の履歴、プロセッサ２３０の温度の変化、プロセッサ２３０の電力消費、プロセッサ２３０の電力消費の履歴、プロセッサ２３０の電力消費の変化、プロセッサ２３０を流れる電流、プロセッサ２３０の電流履歴、およびプロセッサ２３０を流れる電流の変化が含まれ得るが、これらに限定されるものではない。プロセッサデータ２２５は、プロセッサ２３０のチャージ割り当てステータス２２０の決定、および／または、プロセッサ２３０上のさまざまなプロセスの影響（例えば、瞬間における、履歴的な、または予測される）の決定を容易にすることができる。
【００２７】
したがって、スケジューリングロジック２１０は、プロセッサデータ２２５、チャージ割り当てステータス２２０、およびエグゼキュータブルに関連したプロパティに基づいて、プロセッサ２３０によって実行されるエグゼキュータブルを選択するようにさらに構成されることができる。例示として、スケジューリングロジック２１０は、エグゼキュータブルに関連したプロパティを検査でき、所定のエグゼキュータブルが、比較的高い電流量を引き出す可能性があると判断することができる。したがって、スケジューリングロジック２１０は、比較的一定の電流がプロセッサ２３０に流入するように、他の同様のプロセスと共にそのエグゼキュータブルをスケジューリングすることができる。これは、周波数の増減のようなプロセッサ２３０のチャージ割り当て動作に応答することを容易にすることができる。
【００２８】
一例では、スケジューリングロジック２１０は、プロセッサデータ、チャージ割り当てステータス２２０等に基づいてエグゼキュータブルの実行順序を決定するようにさらに構成される。したがって、スケジューリングロジック２１０は、スケジュールデータストア２５０のスケジュールデータを再配列でき、かつ／または、その再配列を引き起こすことができる。例えば、チャージ割り当てステータス２２０、プロセッサデータ２２５、および１組のプロセス２４０内のプロセスの１つまたは複数の選択されたプロパティの検査後に、スケジューリングロジック２１０は、スケジュールデータストア２５０のスケジュールデータを配列して、プロセッサ２３０で比較的低い周波数を維持することを容易にすることができる。
【００２９】
図３は、プロセッサ３３０のチャージ割り当てステータス３２０を決定するように構成されたスケジューリングロジック３１０を含む別の例示のシステムを示している。チャージ割り当てステータス３２０を、例えば、プロセッサ３３０の周波数に関係付けることができる。また、スケジューリングロジック３１０は、プロセッサ３３０上で実行するようにスケジューリングされることを待機しているエグゼキュータブルの選択されたプロパティを検査することもできる。したがって、このシステムは、例えば、エグゼキュータブルの電力消費属性の特徴付けを容易にするテストプロセッサ３２５を含むことができる。一例では、テストプロセッサ３２５は、エグゼキュータブルを実行し、そのエグゼキュータブルの実行中に、テストプロセッサ３２５および／またはそのエグゼキュータブルのプロパティ（例えば、熱、電流、電力）を監視するように構成される。テストプロセッサ３２５のプロパティを監視することによって、エグゼキュータブルを実行するプロセッサに対する影響を特徴付けるデータを作成することが容易になる。このデータは、エグゼキュータブルを属性について特徴付けることができる。この属性には、実行中の実際の定格電力、実行中の予想された定格電力、実際の実行時間、予想された実行時間、実行中に生成された実際の熱、実行中に生成される予想された熱、実行中の実際の電流、および実行中の予想された電流が含まれるが、これらに限定されるものではない。「実際の」データは、実行中にテストプロセッサ３２５および／またはエグゼキュータブルを監視することによって収集することができる。「予想された」データは、さまざまなエグゼキュータブルの特性を予想するように構成されたプロセスアナライザ（図示せず）によって提供することができる。
【００３０】
一例では、スケジューリングロジック３１０は、特徴付けデータとそのデータのチャージ割り当てステータス３２０に対する関係とに基づいてエグゼキュータブルの実行順序を決定するようにさらに構成される。したがって、スケジューリングロジック３１０は、スケジュールデータストア３５０のスケジュールデータを再配列でき、かつ／または、スケジュールデータの再配列を引き起こすことができる。例えば、テストプロセッサ３２５は、１組のプロセス３４０のプロセスをテスト実行した後に、スケジュールデータストア３５０のスケジュールデータを配列して、プロセッサ３３０において比較的高い周波数を維持することを容易にすることができる。
【００３１】
上述した例示のシステムは、さまざまな装置（デバイス）に組み込むことができる。このさまざまなデバイスには、画像形成装置、コンピュータ、携帯電話等が含まれるが、これらに限定されるものではない。同様に、以下で述べる例示の方法は、プリンタ、コンピュータ、携帯電話等のようなデバイスによって実行することもできる。
【００３２】
図４および図５のフロー図を参照することによって、例示の方法をより良く理解することができる。説明を簡単にするために、図示した方法論は、一連のブロックとして図示および説明されるが、いくつかのブロックは、図示および説明したものとは異なる順序で実行することができ、かつ／または、他のブロックと同時に実行することができるので、これらの方法論は、このブロックの順序によって限定されるものではないことが理解されるべきである。その上、例示の方法論を実施するのに必要なブロックは、図示したすべてのブロックよりも少なくすることもできる。さらに、追加される方法論および／または代替的な方法論は、図示しない追加のブロックを使用することもできる。一例では、方法論は、コンピュータ可読媒体上に記憶されたプロセッサ実行可能命令および／またはオペレーションとして実施される。
【００３３】
このフロー図では、ブロックは、例えばソフトウェアで実施できる「処理ブロック」を示す。これに加えて、かつ／または、これに代えて、処理ブロックは、デジタル信号プロセッサ（ＤＳＰ）、ＡＳＩＣ等のような機能的に等価な回路によって実行される機能および／または動作を表すこともできる。
【００３４】
フロー図は、どの特定のプログラミング言語のシンタックスも、どの特定の方法論のシンタックスも、どの特定のスタイル（例えば、手続型、オブジェクト指向型）のシンタックスも示すものではない。フロー図は、当業者が回路を作製したり、ソフトウェアを生成したり、ハードウェアとソフトウェアの組み合わせを使用したりして図示した処理を実行するのに使用できる機能的な情報を示している。いくつかの例では、一時変数、ルーチンループ等のようなプログラム要素は図示されていないことが理解されよう。図示したものとは異なる他のシーケンスで図示したブロックを実行でき、かつ／または、複数のブロックを結合したり複数のコンポーネントに分離したりできるような動的で柔軟なプロセスを、電子的アプリケーションおよびソフトウェアアプリケーションは含むことができることがさらに理解されよう。プロセスは、マシン語技法、手続型技法、オブジェクト指向型技法、および／または人工知能技法のようなさまざまなプログラミング手法を使用して実施できることが理解されよう。
【００３５】
図４は、例示のチャージ割り当てアウェアスケジューリング方法４００を示している。この方法４００は、４１０において、周波数増減可能プロセッサの動作周波数を決定することを含むことができる。動作周波数は、例えば、動作周波数を記憶するプロセッサのデータストア（例えばレジスタ）を検査すること、プロセッサからの割り込み（１つまたは複数）またはメッセージ（１つまたは複数）を解析すること等によって決定することができる。
【００３６】
また、方法４００は、４２０において、プロセスに関連した電力データを検査することも含むことができる。この電力データは、例えば、プロセスを実行することに関連したイベントを記述することができる。イベントには、プロセスがまだ実行されておらず、したがって、実行時の特徴付けデータがプロセスに関連付けられていないことを特定するもの、プロセスが実行された時にプロセッサ周波数が増加したことを特定するもの、プロセスが実行された時にプロセッサ周波数が減少したことを特定するもの、ならびにプロセスが実行された時にプロセッサ周波数が一定および／またはほぼ一定のままであることを特定するものが含まれ得るが、これらに限定されるものではない。これらのイベントによって、プロセッサに実行用に提示するプロセス、および／または、プロセスをスケジューリングできる順序の特定を容易にすることができる。
【００３７】
こうして、方法４００は、４３０において、プロセッサ動作周波数および電力データに基づいてプロセッサによる処理用のプロセス（１つまたは複数）を選択的にスケジューリングすることを含む。処理用のプロセスを選択的にスケジューリングすることは、例えば、プロセッサにプロセスを実行させる信号（１つまたは複数）を生成することを含むことができる。例えば、エントリアドレスをプロセッサレジスタに置くことができ、割り込みを発生させて、プロセッサにそのプロセスにタスク切替させることができる。別の例では、処理用のプロセスを選択的にスケジューリングすることは、プロセスのスケジュール順序によって順序付けられたデータ構造体の選択された場所にプロセスを論理的に配置する信号（１つまたは複数）を生成することを含むことができる。例えば、プロセス識別子（ＰＩＤ）を「インサートアット（insert at）」コマンドのプロセスキューに渡すことができる。別の例では、処理用のプロセスを選択的にスケジューリングすることは、プロセスのスケジュール順序によって順序付けられたデータ構造体に値を記憶することを含むことができる。例えば、この方法は、プロセス実行エントリアドレスをプロセス実行テーブルの適切な場所に書き込むことができる。
【００３８】
方法４００はプロセスを記述するが、スレッドのような他のエグゼキュータブルも同様にスケジューリングできることが理解されるべきである。さらに、図４は、さまざまな動作が順次行われることを示しているが、図４に示すさまざまな動作は、実質的に並行して行うこともできることが理解されるべきである。例示として、第１のプロセスが、プロセッサのチャージ割り当てステータスを監視でき、第２のプロセスが電力データを検査でき、第３のプロセスが、第１のプロセスおよび第２のプロセスからの出力に基づいて、実行するプロセスを選択的にスケジューリングすることができる。３つのプロセスを説明したが、これよりも多くの個数のプロセスおよび／またはこれよりも少ない個数のプロセスも使用でき、軽量プロセス（lightweight process）、普通のプロセス（regular process）、スレッド、および他の手法も使用できることが理解されるべきである。
【００３９】
図５は、別の例示のチャージ割り当てアウェア方法５００を示している。この方法５００は、５１０において、周波数増減可能プロセッサの動作周波数を決定することを含むことができる。また、方法５００は、５２０において、プロセスに関連した電力データを検査することも含むことができる。また、方法５００は、５３０において、周波数増減可能プロセッサに関連したプロセッサデータを検査することも含むことができる。このプロセッサデータは、属性を記述することができる。この属性には、プロセッサ温度、プロセッサ温度の履歴、プロセッサ温度の変化、プロセッサの電力消費、プロセッサの電力消費の履歴、プロセッサの電力消費の変化、プロセッサを流れる電流、プロセッサを流れる電流の履歴、およびプロセッサを流れる電流の変化が含まれるが、これらに限定されるものではない。
【００４０】
こうして、方法５００は、５４０において、プロセッサデータ、プロセッサ周波数、および電力データに少なくとも部分的に基づいて、処理用のプロセス（１つまたは複数）を選択的にスケジューリングすることを含む。これに加えて、かつ／または、これに代えて、方法５００は、５５０において、プロセッサに利用可能なプロセスキュー内のプロセス（１つまたは複数）の配列を引き起こし、かつ／または、当該プロセスを配列することも含むことができる。したがって、例えば、プロセスが実行されることになるプロセッサのチャージ割り当てステータス（例えば、周波数）と、プロセス（１つまたは複数）がプロセッサに対して有する予想された影響とに依存した順序で、プロセスキューにおいてプロセスを配列することができる。
【００４１】
方法５００はプロセスを記述するが、スレッドのような他のエグゼキュータブルも同様にスケジューリングできることが理解されるべきである。さらに、図５は、さまざまな動作が順次行われることを示しているが、図５に示すさまざまな動作は、実質的に並行して行うこともできることが理解されるべきである。例示として、第１のプロセスがチャージ割り当てステータスを決定でき、第２のプロセスが電力データを分析でき、第３のプロセスがプロセッサデータを分析でき、第４のプロセスが、実行する次のプロセスを選択でき、第５のプロセスが、選択されたプロセスをプロセスキューに挿入することができる。５つのプロセスを説明したが、これよりも多くの個数のプロセスおよび／またはこれよりも少ない個数のプロセスも使用でき、軽量プロセス、普通のプロセス、スレッド、および他の手法も使用できることが理解されるべきである。
【００４２】
一例では、コンピュータ可読媒体が、周波数増減可能プロセッサの動作周波数を決定すること、実行可能エンティティに関連した電力データを受け取ること、動作周波数および電力データに少なくとも部分的に基づいてプロセッサによる処理用の実行可能エンティティを選択的にスケジューリングすることとを含む方法を実行するように動作できるプロセッサ実行可能命令を記憶することができる。
【００４３】
図６は、コンピュータ６００を示している。このコンピュータ６００は、プロセッサ６０２、メモリ６０４、ディスク６０６、入出力ポート６１０、およびバス６０８によって動作可能に接続されたネットワークインターフェース６１２を含む。本明細書で説明するシステムの実行可能コンポーネントは、コンピュータ６００のようなコンピュータ上に配置することができる。同様に、本明細書で説明するコンピュータ実行可能方法も、コンピュータ６００のようなコンピュータ上で実行することができる。他のコンピュータも、本明細書で説明するシステムおよび方法と共に使用できることが理解されるべきである。
【００４４】
プロセッサ６０２は、デュアルマイクロプロセッサアーキテクチャおよび他のマルチプロセッサアーキテクチャを含むさまざまな種々のプロセッサとすることができる。メモリ６０４には、揮発性メモリおよび／または不揮発性メモリが含まれ得る。不揮発性メモリには、読み出し専用メモリ（ＲＯＭ）、プログラマブル読み出し専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、電気的プログラマブル読み出し専用メモリ、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）等が含まれ得るが、これらに限定されるものではない。揮発性メモリには、例えば、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、シンクロナスＲＡＭ、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、およびダイレクトＲＡＭバスＲＡＭ（ＤＲＲＡＭ）が含まれ得る。ディスク６０６には、磁気ディスクドライブ、フロッピィディスクドライブ、テープドライブ、Ｚｉｐドライブ、フラッシュメモリカード、および／またはメモリスティックのようなデバイスが含まれ得るが、これらに限定されるものではない。さらに、ディスク６０６には、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、ＣＤ記録可能ドライブ（ＣＤ−Ｒドライブ）、ＣＤ書き換え可能ドライブ（ＣＤ−ＲＷドライブ）、および／またはデジタル多用途ＲＯＭドライブ（ＤＶＤ  ＲＯＭ）のような光ドライブも含まれ得る。メモリ６０４は、例えば、プロセス６１４および／またはデータ６１６を記憶することができる。ディスク６０６および／またはメモリ６０４は、コンピュータ６００の資源の制御および割り当てを行うオペレーティングシステムを記憶することができる。
【００４５】
バス６０８は、単一の内部バス相互接続アーキテクチャおよび／または他のバスアーキテクチャとすることができる。バス６０８は、さまざまなタイプのものとすることができ、このさまざまなタイプには、メモリバスもしくはメモリコントローラ、周辺バスもしくは外部バス、および／またはローカルバスが含まれるが、これらに限定されるものではない。ローカルバスは、さまざまなものとすることができ、このさまざまなものには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、周辺機器相互接続（ＰＣＩ）バス、ユニバーサルシリアルバス（ＵＳＢ）、および小型コンピュータシステムインターフェース（ＳＣＳＩ）バスが含まれるが、これらに限定されるものではない。
【００４６】
コンピュータ６００は、入出力ポート６１０を介して入出力デバイス６１８とやり取りを行う。入出力デバイス６１８には、キーボード、マイクロフォン、ポインティング選択デバイス、カメラ、ビデオカード、ディスプレイ等が含まれ得るが、これらに限定されるものではない。入出力ポート６１０には、シリアルポート、パラレルポート、およびＵＳＢポートが含まれ得るが、これらに限定されるものではない。
【００４７】
コンピュータ６００は、ネットワーク環境で動作することができ、したがって、ネットワークインターフェース（ＮＩＣ）６１２によってネットワークデバイス６２０に接続される。ネットワークデバイス６２０を通じて、コンピュータ６００は、ネットワークとやり取りを行うことができる。ネットワークを通じて、コンピュータ６００をリモートコンピュータに論理的に接続することができる。コンピュータ６００がやり取りを行うことができるネットワークには、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、および他のネットワークが含まれるが、これらに限定されるものではない。ネットワークインターフェース６１２は、ＬＡＮ技術に接続することができる。このＬＡＮ技術には、ファイバー分散データインターフェース（ＦＤＤＩ）、銅分散データインターフェース（ＣＤＤＩ）、イーサネット／ＩＥＥＥ８０２．３、トークンリング／ＩＥＥＥ８０２．５、無線／ＩＥＥＥ８０２．１１、Ｂｌｕｅｔｏｏｔｈ（ブルートゥース）等が含まれるが、これらに限定されるものではない。同様に、ネットワークインターフェース６１２は、ＷＡＮ技術に接続することもできる。このＷＡＮ技術には、ポイントツーポイントリンク、サービス統合デジタルネットワーク（ＩＳＤＮ）のような回線交換ネットワーク、パケット交換ネットワーク、およびデジタル加入者線（ＤＳＬ）が含まれるが、これらに限定されるものではない。
【００４８】
図７は、例示のチャージ割り当てアウェアシステムおよび方法が動作できる例示の画像形成装置７００を示している。この画像形成装置７００は、例えば印刷データを記憶するように構成されたメモリ７１０、または、より一般的には画像処理に使用されるように構成されたメモリ７１０を含むことができる。また、画像形成装置７００は、周波数増減可能プロセッサ７３５も含むことができる。したがって、画像形成装置７００は、プロセッサ７３５によって提供されたデータを分析して、例えば、どのプロセス（１つまたは複数）および／または印刷ジョブ（１つまたは複数）を処理すべきか、かつ／または、処理するようにスケジューリングすべきかを決定できるチャージ割り当てアウェアスケジューリングロジック７１５を含むことができる。一例では、この分析はほぼ実時間（リアルタイム）で行われる。
【００４９】
画像形成装置７００は、レンダリング（描画）される印刷データを受信することができる。したがって、画像形成装置７００は、印刷データからプリンタ準備画像を生成するように構成されたレンダリングロジック（描画ロジック）７２５を含むことができる。レンダリングは、必要とされるデータのフォーマットおよび画像形成装置のタイプに基づいて変わる。一般に、レンダリングロジック７２５は、高水準データを、表示または印刷用のグラフィカル画像（例えば、印刷準備画像）に変換する。例えば、一形態は、３次元の物体またはシーンの数学モデルを採用し、そのモデルをビットマップ画像に変換するレイトレーシングである。別の例は、ＨＴＭＬを表示／印刷用の画像に変換するプロセスである。画像形成装置７００は、レンダリングする必要のないプリンタ準備データを受信することもでき、したがって、レンダリングロジック７２５は、いくつかの画像形成装置には存在しない場合がある。
【００５０】
また、画像形成装置７００は、印刷準備画像から印刷媒体上に画像を生成するように構成された画像形成メカニズム７３０も含むことができる。この画像形成メカニズム７３０は、画像形成装置７００のタイプに基づいて変わることがある。画像形成メカニズム７３０には、レーザ画像形成メカニズム、他のトナーベースの画像形成メカニズム、インクジェットメカニズム、デジタル画像形成メカニズム、または他の画像再現エンジンが含まれ得る。一例では、プロセッサ７３５は、Ｊａｖａ命令を実行できるロジックを含む。本明細書では、画像形成装置７００の他のコンポーネントを説明しないが、他のコンポーネントには、媒体ハンドリング及び記憶メカニズム、センサ、コントローラ、および画像形成プロセスに必要とされる他のコンポーネントが含まれ得る。
【００５１】
単一のプロセッサシステムを説明してきたが、本明細書で説明した例示のチャージ割り当てシステムおよび方法は、マルチプロセッサシステムでも動作することができることが理解される。したがって、一例では、システムは、１つまたは複数の周波数増減可能メインプロセッサと、これらのメインプロセッサがアクセスできるようにメインプロセッサに動作可能に接続されたメモリとを含むことができる。また、システムは、メインプロセッサに動作可能に接続されたチャージ割り当てアウェアスケジューリングロジックも含むことができる。このチャージ割り当てアウェアスケジューリングロジックは、プロセッサのチャージ割り当てステータスを決定するように構成されることができる。また、チャージ割り当てアウェアスケジューリングロジックは、メモリに記憶されたエグゼキュータブルが実行のためにスケジューリングされるのを待機している場合に、そのエグゼキュータブルに関連した電力属性を検査するように構成されることもできる。
【００５２】
したがって、チャージ割り当てアウェアスケジューリングロジックは、１つまたは複数のプロセッサのチャージ割り当てステータスと、エグゼキュータブルに関連した電力属性とに少なくとも部分的に基づいて、プロセッサによって実行されるエグゼキュータブルを選択するように構成されることができる。この場合、チャージ割り当てアウェアスケジューリングロジックは、エグゼキュータブルをスケジューリングする（例えば、プロセスキューに配置する）信号を生成することができる。また、マルチプロセッサシステムは、例えば、プロセスがチャージ割り当て（例えば周波数増減）プロセッサに対して有し得る影響を特徴付けることを容易にするテストプロセッサも含むことができる。
【００５３】
いくつかの例を説明することによって、システム、方法等を示し、また、これらの例をかなり詳細に説明してきたが、添付した特許請求の範囲の範囲をこのような詳細なものに制限することも、また、どんな形であれ限定することも、出願人の意図するものではない。もちろん、チャージ割り当てアウェアスケジューリングに使用されるシステム、方法等を説明するために、コンポーネントまたは方法論の考えられるあらゆる組み合わせを説明することは不可能である。他の利点および変更は当業者には明かであろう。したがって、本発明は、そのより広い局面では、図示および説明した特定の細部、代表的な装置、説明のための例に限定されるものではない。したがって、出願人の全体的な発明概念の思想または範囲から逸脱することなく、このような詳細から脱却することができる。このように、この出願は、添付した特許請求の範囲に含まれる改変、変更、および変形を包含することを意図している。さらに、上記説明は、本発明の範囲を限定することを意図しているものではない。本発明の範囲は、添付した特許請求の範囲およびそれらの均等物によって決定されるべきものである。
【００５４】
用語「備える」、または「備えている」が、実施例または特許請求の範囲で使用される限りにおいて、この用語は、用語「含む」が特許請求の範囲において接続語（transitional word）として使用される場合に解釈されるのと同様に包括的であることが意図されている。さらに、用語「または（もしくは）」が特許請求の範囲で使用される限りにおいて（例えば、ＡまたはＢ）、この用語は、「Ａまたは（もしくは）Ｂまたは（もしくは）双方」を意味することが意図されている。出願人が、「Ａまたは（もしくは）Ｂのみであって、双方ではない」ことを示すことを意図している場合には、用語「Ａまたは（もしくは）Ｂのみであって、双方ではない」が使用されることになる。このように、本明細書における用語「または（もしくは）」の使用は、包括的な使用であって、排他的な使用ではない。これについては、Bryan A. Garnerの「A Dictionary of Modern Legal Usage 624(2d. Ed. 1995)」を参照されたい。
【００５５】
本出願では、チャージ割り当てアウェアスケジューリングに関連するシステム、方法、媒体、及び他の実施形態が開示される。１つの例示的なシステムの実施形態は、プロセッサ(130)のチャージ割り当てステータス(120)を決定し、プロセッサ上で実行されるのを待機しているエグゼキュータブルの特性を検査し、及び、プロセッサ(130)のチャージ割り当てステータス(120)とエグゼキュータブルの特性に基づいてプロセッサ(130)によって実行されるエグゼキュータブルを選択するように構成されたスケジューリングロジック(110)を備える。
【図面の簡単な説明】
【００５６】
【図１】チャージ割り当てアウェアスケジューリングロジックを含む例示のシステムを示す図である。
【図２】チャージ割り当てアウェアスケジューリングロジックを含む別の例示のシステムを示す図である。
【図３】チャージ割り当てアウェアスケジューリングロジックおよびテストプロセッサを含む例示のシステムを示す図である。
【図４】例示のチャージ割り当てアウェアスケジューリング法を示す図である。
【図５】別の例示のチャージ割り当てアウェアスケジューリング法を示す図である。
【図６】チャージ割り当てアウェアスケジューリングに関係する例示のシステムおよび方法が動作できる例示のコンピューティング環境を示す図である。
【図７】例示のチャージ割り当てアウェアスケジューリングシステムおよび方法が動作できる例示の画像形成装置を示す図である。
【符号の説明】
【００５７】
１１０  スケジューリングロジック
１２０  チャージ割り当てステータス
１３０  プロセッサ
１５０  データストア（プロセスキュー）
【図１】
2005141740.tif 000003
【図２】
2005141740.tif 000004
【図３】
2005141740.tif 000005
【図４】
2005141740.tif 000006
【図５】
2005141740.tif 000007
【図６】
2005141740.tif 000008
【図７】
2005141740.tif 000009