(57)【特許請求の範囲】
【請求項１】
ポータブルコンピューティングデバイスにおいて、処理負荷の並列処理度を動的に判断し、処理負荷をサポートするコアの数を自動的に調整するための方法であって、
マルチコアプロセッサの1つまたは複数の処理待ち行列を監視するステップであって、前記マルチコアプロセッサに割り当てられている現在のタスク数をサンプリングするステップを含む、ステップと、
前記マルチコアプロセッサの現在の動作モードおよび前記1つまたは複数の処理待ち行列の前記監視に基づいて、並列処理の割合を計算するステップであって、前記並列処理の割合(P)が、式P=あるサンプル期間における並列処理のインスタンスに関連するサンプル数/前記サンプル期間におけるサンプル総数、を用いて計算され、前記並列処理のインスタンスは、前記マルチコアプロセッサに割り当てられている前記現在のタスク数が前記マルチコアプロセッサの2つ以上のコアを使用することを許容するときに、生じるものである、ステップと、
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するステップと、
前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるとの判断に応じて、前記マルチコアプロセッサの1つまたは複数のコアに対し、ダイナミック電圧および周波数スケーリングアルゴリズムをスイッチングするよう命令するステップと
を含む方法。
【請求項２】
互いに連続する複数の連続する前記サンプル期間の各々について、並列処理の前記計算された割合が所定の条件を満たしているかどうかを判断するステップをさらに含む、請求項1に記載の方法。
【請求項３】
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するステップは、並列処理の前記割合が、マルチコア状態に入るために確立されたしきい値を上回っているかどうかを判断するステップをさらに含む、請求項1に記載の方法。
【請求項４】
前記しきい値は第1のしきい値であり、並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するステップは、並列処理の前記割合が、シングルプロセッサ状態に入るために確立された第2のしきい値を下回っているかどうかを判断するステップをさらに含む、請求項3に記載の方法。
【請求項５】
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるとの判断に応じて、中央処理装置電力コントローラに対し1つまたは複数のコマンドを出すステップをさらに含む、請求項1に記載の方法。
【請求項６】
前記1つまたは複数のコマンドは、1つまたは複数のコアをスリープ状態に置くよう求める命令を含む、請求項5に記載の方法。
【請求項７】
前記1つまたは複数のコマンドは、1つまたは複数のコアをアクティブ状態に置くよう求める命令を含む、請求項5に記載の方法。
【請求項８】
前記ポータブルコンピューティングデバイスは、モバイル電話、ページャ、携帯情報端末(「PDA」)、スマートフォン、ナビゲーションデバイス、スマートブック、およびメディアプレーヤのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項９】
ポータブルコンピューティングデバイスにおいて、処理負荷の並列処理度を動的に判断し、処理負荷をサポートするコアの数を自動的に調整するためのコンピュータシステムであって、
プロセッサを含み、前記プロセッサは、
マルチコアプロセッサの1つまたは複数の処理待ち行列を監視するステップであって、前記マルチコアプロセッサに割り当てられている現在のタスク数をサンプリングするステップを含む、ステップと、
前記マルチコアプロセッサの現在の動作モードおよび前記1つまたは複数の処理待ち行列の前記監視に基づいて、並列処理の割合を計算するステップであって、前記並列処理の割合(P)が、式P=あるサンプル期間における並列処理のインスタンスに関連するサンプル数/前記サンプル期間におけるサンプル総数、を用いて計算され、前記並列処理のインスタンスは、前記マルチコアプロセッサに割り当てられている前記現在のタスク数が前記マルチコアプロセッサの2つ以上のコアを使用することを許容するときに、生じるものである、ステップと、
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するステップと、
前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるとの判断に応じて、前記マルチコアプロセッサの1つまたは複数のコアに対し、ダイナミック電圧および周波数スケーリングアルゴリズムをスイッチングするよう命令するステップと
を含む演算を行うように構成される、システム。
【請求項１０】
互いに連続する複数の連続する前記サンプル期間の各々について、並列処理の前記計算された割合が所定の条件を満たしているかどうかを判断するステップをさらに含む演算を行うように、前記プロセッサが構成される、請求項9に記載のシステム。
【請求項１１】
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するステップは、並列処理の前記割合が、マルチコア状態に入るために確立されたしきい値を上回っているかどうかを判断するステップをさらに含む演算を行うように、前記プロセッサが構成される、請求項9に記載のシステム。
【請求項１２】
前記しきい値は第1のしきい値であり、並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するステップは、並列処理の前記割合が、シングルプロセッサ状態に入るために確立された第2のしきい値を下回っているかどうかを判断するステップをさらに含む演算を行うように、前記プロセッサが構成される、請求項11に記載のシステム。
【請求項１３】
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるとの判断に応じて、中央処理装置電力コントローラに対し1つまたは複数のコマンドを出すステップをさらに含む演算を行うように、前記プロセッサが構成される、請求項9に記載のシステム。
【請求項１４】
前記1つまたは複数のコマンドは、1つまたは複数のコアをスリープ状態に置くよう求める命令を含む、請求項13に記載のシステム。
【請求項１５】
前記1つまたは複数のコマンドは、1つまたは複数のコアをアクティブ状態に置くよう求める命令を含む、請求項13に記載のシステム。
【請求項１６】
前記ポータブルコンピューティングデバイスは、モバイル電話、携帯情報端末、ページャ、スマートフォン、ナビゲーションデバイス、およびワイヤレス接続またはワイヤレスリンクを有するハンドヘルドコンピュータのうちの少なくとも1つを含む、請求項9に記載のシステム。
【請求項１７】
ポータブルコンピューティングデバイスにおいて、処理負荷の並列処理度を動的に判断し、処理負荷をサポートするコアの数を自動的に調整するためのコンピュータシステムであって、
マルチコアプロセッサの1つまたは複数の処理待ち行列を監視するための手段であって、前記マルチコアプロセッサに割り当てられている現在のタスク数をサンプリングする手段を含む、手段と、
前記マルチコアプロセッサの現在の動作モードおよび前記1つまたは複数の処理待ち行列の前記監視に基づいて、並列処理の割合を計算するための手段であって、前記並列処理の割合(P)が、式P=あるサンプル期間における並列処理のインスタンスに関連するサンプル数/前記サンプル期間におけるサンプル総数、を用いて計算され、前記並列処理のインスタンスは、前記マルチコアプロセッサに割り当てられている前記現在のタスク数が前記マルチコアプロセッサの2つ以上のコアを使用することを許容するときに、生じるものである、手段と、
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するための手段と、
前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるとの判断に応じて、前記マルチコアプロセッサの1つまたは複数のコアに対し、ダイナミック電圧および周波数スケーリングアルゴリズムをスイッチングするよう命令するための手段と
を含むシステム。
【請求項１８】
互いに連続する複数の連続する前記サンプル期間の各々について、並列処理の前記計算された割合が所定の条件を満たしているかどうかを判断するための手段をさらに含む、請求項17に記載のシステム。
【請求項１９】
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するための前記手段は、並列処理の前記割合が、マルチコア状態に入るために確立されたしきい値を上回っているかどうかを判断するための手段をさらに含む、請求項17に記載のシステム。
【請求項２０】
前記しきい値は第1のしきい値であり、並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するための前記手段は、並列処理の前記割合が、シングルプロセッサ状態に入るために確立された第2のしきい値を下回っているかどうかを判断するための手段をさらに含む、請求項19に記載のシステム。
【請求項２１】
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるとの判断に応じて、中央処理装置電力コントローラに対し1つまたは複数のコマンドを出すための手段をさらに含む、請求項17に記載のシステム。
【請求項２２】
前記1つまたは複数のコマンドは、1つまたは複数のコアをスリープ状態に置くよう求める命令を含む、請求項21に記載のシステム。
【請求項２３】
前記1つまたは複数のコマンドは、1つまたは複数のコアをアクティブ状態に置くよう求める命令を含む、請求項21に記載のシステム。
【請求項２４】
ポータブルコンピューティングデバイスは、モバイル電話、携帯情報端末、ページャ、スマートフォン、ナビゲーションデバイス、およびワイヤレス接続またはワイヤレスリンクを有するハンドヘルドコンピュータのうちの少なくとも1つを含む、請求項17に記載のシステム。
【請求項２５】
ポータブルコンピューティングデバイスにおいて、処理負荷の並列処理度を動的に判断し、処理負荷をサポートするコアの数を自動的に調整するための方法を実施させるためのコンピュータ可読プログラムコードを含むコンピュータプログラムであって、前記方法が、
マルチコアプロセッサの1つまたは複数の処理待ち行列を監視するステップであって、前記マルチコアプロセッサに割り当てられている現在のタスク数をサンプリングするステップを含む、ステップと、
前記マルチコアプロセッサの現在の動作モードおよび前記1つまたは複数の処理待ち行列の前記監視に基づいて、並列処理の割合を計算するステップであって、前記並列処理の割合(P)が、式P=あるサンプル期間における並列処理のインスタンスに関連するサンプル数/前記サンプル期間におけるサンプル総数、を用いて計算され、前記並列処理のインスタンスは、前記マルチコアプロセッサに割り当てられている前記現在のタスク数が前記マルチコアプロセッサの2つ以上のコアを使用することを許容するときに、生じるものである、ステップと、
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するステップと、
前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるとの判断に応じて、前記マルチコアプロセッサの1つまたは複数のコアに対し、ダイナミック電圧および周波数スケーリングアルゴリズムをスイッチングするよう命令するステップと
を含む、コンピュータプログラム。
【請求項２６】
前記方法が、
互いに連続する複数の連続する前記サンプル期間の各々について、並列処理の前記計算された割合が所定の条件を満たしているかどうかを判断するステップ
をさらに含む、請求項25に記載のコンピュータプログラム。
【請求項２７】
並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するステップは、並列処理の前記割合が、マルチコア状態に入るために確立されたしきい値を上回っているかどうかを判断するステップをさらに含む、請求項25に記載のコンピュータプログラム。
【請求項２８】
前記しきい値は第1のしきい値であり、並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるかどうかを判断するステップは、並列処理の前記割合が、シングルプロセッサ状態に入るために確立された第2のしきい値を下回っているかどうかを判断するステップをさらに含む、請求項27に記載のコンピュータプログラム。
【請求項２９】
前記方法が、並列処理の前記計算された割合に基づいて、前記マルチコアプロセッサの前記現在の動作モードを変更すべきであるとの判断に応じて、中央処理装置電力コントローラに対し1つまたは複数のコマンドを出すステップをさらに含む、請求項25に記載のコンピュータプログラム。
【請求項３０】
前記1つまたは複数のコマンドは、1つまたは複数のコアをスリープ状態に置くよう求める命令を含む、請求項29に記載のコンピュータプログラム。
【請求項３１】
前記1つまたは複数のコマンドは、1つまたは複数のコアをアクティブ状態に置くよう求める命令を含む、請求項29に記載のコンピュータプログラム。
【請求項３２】
前記ポータブルコンピューティングデバイスは、モバイル電話、携帯情報端末、ページャ、スマートフォン、ナビゲーションデバイス、およびワイヤレス接続またはワイヤレスリンクを有するハンドヘルドコンピュータのうちの少なくとも1つを含む、請求項25に記載のコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
ポータブルコンピューティングデバイス(「PCD」)は、個人レベルおよび専門家レベルで人々にとって必需品になりつつある。これらのデバイスには、セルラー電話、携帯情報端末(「PDA」)、ポータブルゲームコンソール、ポータブルナビゲーションユニット、パームトップコンピュータ、および他のポータブル電子デバイスが含まれ得る。
【０００２】
これらのPCDは、様々なソフトウェアアプリケーションモジュールを実行するための複数の中央処理装置(「CPU」)およびマルチコアCPUを有し得る。たいていのPCDは、それらのCPUに対称的に電力供給する。各PCDはまた、シングルスレッドの処理負荷を複数のCPUまたはマルチコアCPUに分散することに関する考慮なしに、シングルスレッドのソフトウェアアプリケーションモジュール用に通常設計される。PCDにおけるCPUのこの対称的な電力供給およびシングルスレッドの処理負荷に対する個別のサポートに伴い、クロック制御されていないので作動していないアイドル状態のCPUまたはコアからの漏洩により、PCDで無駄な電力消費が通常生じる。
【０００３】
シングルスレッドの処理負荷の対極にあるのがマルチスレッドの処理負荷であり、これは複数のCPUまたはマルチコアCPUによる並行処理を必要とし得る。現実的には、いくつかのマルチスレッドの処理負荷がオペレーティングシステムに対し、特定のソフトウェアアプリケーションモジュールをサポートするのに必要な理想的な数の複数のCPUを伝えることが可能であり得るが、PCDが複数のソフトウェアアプリケーションモジュールを実行することを要求されていて、各モジュールがそれ自体のマルチスレッドの処理負荷を有するときには、この情報は価値がほとんど、またはまったくないことがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、当技術分野で必要なものは、PCDのマルチコアプロセッサにおける複数のコアへの電力を制御するための方法およびシステムである。特に、当技術分野では、1つまたは複数のソフトウェアアプリケーションモジュールの処理負荷の並行処理度を動的に判断し、1つまたは複数のソフトウェアアプリケーションモジュールの処理負荷をサポートするコアの数を自動的に調整することができる方法およびシステムが必要である。
【課題を解決するための手段】
【０００５】
ポータブルコンピューティングデバイスにおいて、処理負荷の並行処理度を動的に判断し、処理負荷をサポートするコア(および/またはプロセッサ)の数を自動的に調整するための方法およびシステムについて説明する。この方法およびシステムは、オペレーティングシステムスケジューラならびにマルチコアプロセッサおよび/または複数の中央処理装置(「CPU」)の1つまたは複数の処理待ち行列から活動データを受信する並行処理度モニタモジュールを含む。並行処理度モニタは、マルチコアプロセッサまたは複数のプロセッサの現在の動作モードに基づいて、並行処理の割合を計算することができる。次いで、並行処理のこの割合は、マルチプロセッサ決定アルゴリズムモジュールに伝えられる。マルチプロセッサ決定アルゴリズムモジュールは、並行処理の計算された割合に基づいて、マルチコアプロセッサ(または複数のプロセッサ)の現在の動作モードを変更すべきかどうかを判断する。
【０００６】
図中、別段に規定されていない限り、同様の参照番号は、様々な図の全体を通じて、同様の部分を指す。「102A」または「102B」のような文字指定を伴う参照番号について、文字指定は、同じ図に存在する2つの同様の部分または要素を区別し得る。参照番号の文字指定は、参照番号が、すべての図において同じ参照番号を有するすべての部分を包含することが意図される場合には、省略されることがある。
【図面の簡単な説明】
【０００７】
【図１】マルチプロセッサ決定アルゴリズムモジュールとの組合せで作動する並行処理度モニタを有するポータブルコンピューティングデバイス(PCD)の一実施形態を示す機能ブロック図である。
【図２】複数のCPUおよび/またはマルチコアCPUを動的に制御するためのシステムの要素間の通信フローを示す機能ブロック図である。
【図３Ａ】第1の処理負荷シナリオにおける経時的にプロットされたCPUおよび/またはマルチコアCPUのコアに割り当てられた処理タスクのグラフである。
【図３Ｂ】第2の処理負荷シナリオにおける経時的にプロットされたCPUおよび/またはマルチコアCPUのコアに割り当てられた処理タスクのグラフである。
【図４】経時的にプロットされた例示的な処理負荷に関する並行処理の割合のグラフである。
【図５】複数のCPUおよび/またはマルチコアCPUを動的に制御するための例示的な方法を示す論理フローチャートである。
【図６】複数のCPUおよび/またはマルチコアCPUのコアの間の並行処理の割合を計算するための例示的な副方法またはルーチンを示す論理フローチャートである。
【図７】図1のポータブルコンピューティングデバイスの特徴を示す概略図である。
【図８Ａ】使用事例の実施形態を示す概略図である。
【図８Ｂ】使用事例の実施形態を示す概略図である。
【発明を実施するための形態】
【０００８】
「例示的」という語は、「例、実例、または具体例としての役割を果たすこと」を意味するように本明細書において用いられている。「例示的な」ものとして本明細書で説明する何らかの態様は、必ずしも他の態様よりも好ましい、または有利であると解釈されるわけではない。
【０００９】
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイルおよびパッチなど、実行可能コンテンツを有するファイルを含むこともある。加えて、本明細書で言及する「アプリケーション」は、開封される必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能ではないファイルを含むこともある。
【００１０】
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイルおよびパッチなど、実行可能コンテンツを有するファイルを含むこともある。加えて、本明細書で言及する「コンテンツ」は、開封される必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能ではないファイルを含むこともある。
【００１１】
本明細書で使用される場合、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、実行中のソフトウェアを問わず、コンピュータ関連のエンティティを指すことが意図されている。たとえば構成要素は、プロセッサ上で作動しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラムおよび/またはコンピュータであってよいが、これらであることに限定されない。例を挙げると、コンピューティングデバイス上で作動しているアプリケーションとコンピューティングデバイスの両方が構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在してよく、1つの構成要素を1つのコンピュータに局在化すること、および/または2つ以上のコンピュータ間に分散することが可能である。加えて、これらの構成要素は、様々なデータ構造を記憶している様々なコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、信号によりローカルシステム、分散システムにおいて別の構成要素と対話し、かつ/または他のシステムとインターネットなどのネットワークにわたって対話する、1つの構成要素からのデータ)を有する信号に従うなどしてローカルプロセスおよび/またはリモートプロセスにより通信することができる。
【００１２】
本明細書では、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス電話」、「ワイヤレス通信デバイス」、および「ワイヤレスハンドセット」という用語は交換可能に用いられる。第3世代(「3G」)および第4世代(「4G」)のワイヤレス技術が出現したことによって、利用可能な帯域が拡大されたので、より多様なワイヤレス機能を備えたより携帯が容易なコンピューティングデバイスが利用可能になっている。
【００１３】
本明細書では、「ポータブルコンピューティングデバイス」(「PCD」)という用語は、バッテリーなど限られた容量の電源で動作する任意のデバイスを説明するために使用される。何十年もの間バッテリー式PCDが使用されてきたが、第3世代(「3G」)および第4世代(「4G」)ワイヤレス技術の出現とともにもたらされた充電式バッテリーの技術的進歩は、複数の機能を有する多数のPCDを可能にした。したがって、PCDは、とりわけ、セルラー電話、衛星電話、ページャ、携帯情報端末(「PDA」)、スマートフォン、ナビゲーションデバイス、スマートブックまたはリーダー、メディアプレーヤ、上述のデバイスの組合せ、およびワイヤレス接続を有するラップトップコンピュータであり得る。
【００１４】
複数のCPU110および/またはマルチコアCPU110のコアを動的に制御するためのPCD100の要素
図1を参照すると、この図は、複数の中央処理装置(「CPU」)110および/またはマルチコアCPU110を動的に制御するための方法およびシステムを実現するためのワイヤレス電話の形態によるPCD100の例示的で非限定的な態様の機能ブロック図である。図1に示すように、PCD100はマルチコアCPU110およびアナログ信号プロセッサ126を含み得る。これらのプロセッサ110および126は互いに結合され得る。
【００１５】
当業者によって理解されるように、CPU110は、第0のコア222、第1のコア224、および第Nのコア226を含み得る。代替実施形態では、当業者によって理解されるように、CPU110を使用する代わりに、1つまたは複数のデジタル信号プロセッサ(「DSP」)を利用することもできる。CPU110は、性能モニタモジュール114に結合され得る。性能モニタモジュール114は、図7に関連して以下でさらに詳細に説明するように、ダイナミック電圧および周波数スケーリング(「DVFS:dynamic voltage and frequency scaling」)アルゴリズムに従って、それぞれのプロセッサコア222、224、226の性能をスケーリングすることができる。
【００１６】
PCD100は、並行処理度モニタモジュール120およびマルチプロセッサ決定アルゴリズムモジュール125を含み得る。当業者は、本開示から逸脱することなく、各モジュール120または125が、様々な部分に分割され、異なるプロセッサ110、126によって実行され得る1つまたは複数のソフトウェアモジュールを備え得ることを認識されよう。代替的に、図1に示すように、各モジュール120または125は単一の要素として編成され、単一のプロセッサ110または126によって実行され得る。
【００１７】
各モジュール120または125は、複数のCPU110および/またはマルチコアCPU110のコア222、224、226に関するワークフローを監視し制御するためのCPU110によって実行されるソフトウェアを含み得る。しかしながら、当業者によって理解されるように、各モジュール120または125はハードウェアおよび/またはファームウェアからも形成され得る。
【００１８】
マルチプロセッサ決定アルゴリズムモジュール125との組合せで作動する並行処理度モニタモジュール120は、特定のコア222、224、226またはプロセッサ126の電源をオンにするために、CPU電力コントローラ130にいつメッセージを送るべきかを判断することができる。並行処理度モニタモジュール120は、並行処理に関して実行待ち行列115を監視し、並行処理に関する観察結果をマルチプロセッサ決定アルゴリズムモジュール125に伝える。マルチプロセッサ決定アルゴリズムモジュール125は、並行処理がある場合に1つもしくは複数のコア222、224、226またはプロセッサ126の電源をいつオンにすべきか、また並行処理がない場合に1つもしくは複数のコア222、224、226またはプロセッサ126の電源をいつオフにすべきかを判断する。
【００１９】
マルチコアCPU110は、O/Sスケジューラモジュール105、1つまたは複数の実行待ち行列115、並行処理度モニタモジュール120、およびマルチプロセッサ決定アルゴリズムモジュール125と通信しており、かつ/またはこれらを実行することができる。マルチコアCPU110はまた、マルチコアCPU電力コントローラ130およびメモリ112に結合される。マルチコアCPU電力コントローラ130は、マルチコアCPU110のコア222、224、および226への電力を制御する役目を果たし得る。メモリ112は、揮発性記憶装置および/または不揮発性記憶装置を含み得る。メモリ112は、限定はしないが、ランダムアクセスメモリ(「RAM」)、ダイナミックランダムアクセスメモリ(「DRAM」)、電気消去可能プログラマブル読取り専用メモリ(「EEPROM」)など、任意のタイプのコンピュータ可読媒体を含み得る。当業者によって理解されるように、メモリ112は、1つまたは複数のアプリケーションプログラムモジュール119、O/Sスケジューラモジュール105、並行処理度モニタモジュール120、およびマルチプロセッサ決定アルゴリズムモジュール125などのプログラムモジュールを、実行前に、これらのモジュールがソフトウェアとして具現化されるときに記憶することができる。
【００２０】
図1:PCD100の他の要素
図1に示すように、ディスプレイコントローラ128およびタッチスクリーンコントローラ130が、CPU110に結合される。オンチップシステム102の外部にあるタッチスクリーンディスプレイ132が、ディスプレイコントローラ128およびタッチスクリーンコントローラ130に結合される。
【００２１】
図1は、マルチコア中央処理装置(「CPU」)110に結合された、ビデオコーダ/エンコーダ(「コーデック」)134、たとえば位相反転線(「PAL」)エンコーダ、順次式カラーメモリ(「SECAM」)エンコーダ、全米テレビジョン方式委員会(「NTSC」)エンコーダ、または任意の他のタイプのビデオエンコーダ134を示す概略図である。ビデオ増幅器136が、ビデオエンコーダ134およびタッチスクリーンディスプレイ132に結合される。ビデオポート138がビデオ増幅器136に結合される。図1に示すように、ユニバーサルシリアルバス(「USB」)コントローラ140がCPU110に結合される。また、USBポート142がUSBコントローラ140に結合される。加入者識別モジュール(SIM)カード146も、CPU110に結合され得る。さらに、図1に示すように、デジタルカメラ148がCPU110に結合され得る。例示的な態様では、デジタルカメラ148は、電荷結合デバイス(「CCD」)カメラまたは相補型金属酸化膜半導体(「CMOS」)カメラである。
【００２２】
図1にさらに示すように、ステレオオーディオコーデック150がアナログ信号プロセッサ126に結合され得る。さらに、オーディオ増幅器152がステレオオーディオコーデック150に結合され得る。例示的な態様では、第1のステレオスピーカー154および第2のステレオスピーカー156が、オーディオ増幅器152に結合される。図1は、マイクロフォン増幅器158もステレオオーディオコーデック150に結合され得ることを示している。加えて、マイクロフォン160がマイクロフォン増幅器158に結合され得る。特定の態様では、周波数変調(「FM」)ラジオチューナー162がステレオオーディオコーデック150に結合され得る。また、FMアンテナ164がFMラジオチューナー162に結合される。さらに、ステレオヘッドフォン166がステレオオーディオコーデック150に結合され得る。
【００２３】
図1は、高周波(「RF」)トランシーバ168がアナログ信号プロセッサ126に結合され得ることをさらに示している。RFスイッチ170が、RFトランシーバ168およびRFアンテナ172に結合され得る。図1に示すように、キーパッド174がアナログ信号プロセッサ126に結合され得る。また、マイクロフォンを備えたモノヘッドセット176が、アナログ信号プロセッサ126に結合され得る。さらに、バイブレータデバイス178がアナログ信号プロセッサ126に結合され得る。図1は、たとえばバッテリーなどの電源180がオンチップシステム102に結合されることも示している。特定の態様では、電源180は、充電式DCバッテリー、または交流(「AC」)電源に接続されたAC-DC変換器から導かれるDC電源を含む。
【００２４】
図1に示すように、タッチスクリーンディスプレイ132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカー154、第2のステレオスピーカー156、マイクロフォン160、FMアンテナ164、ステレオヘッドフォン166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178、熱センサ157B、および電源180は、オンチップシステム102の外部にある。
【００２５】
図2は、複数のCPU110および/またはマルチコアCPU110を動的に制御するためのシステム101の要素間の通信フローを示す機能ブロック図である。システム101において、O/Sスケジューラモジュール105は、1つまたは複数の実行待ち行列115および並行処理度モニタモジュール120に結合される。1つまたは複数の実行待ち行列115について単一の機能ブロックが図示されているが、マルチコアCPU110の各コア222、224、226に対し、またはシステム101によって管理されている複数のCPU110の各CPU110に対し、別個の実行待ち行列115を提供できることを当業者は認識する。
【００２６】
図2に示すように、1つまたは複数の実行待ち行列115は、マルチコアCPU110の各コア222、224、226に処理タスクを供給する。代替的に、実行待ち行列115は、複数のCPU110の各CPU110に処理タスクを供給し得る。
【００２７】
並行処理度モニタモジュール120は、実行待ち行列115、O/Sスケジューラ105、およびマルチプロセッサ決定アルゴリズムモジュール125に結合される。並行処理度モニタモジュール120はマルチプロセッサ決定アルゴリズムモジュール125に対して別個のモジュールとして図示されているが、当業者によって理解されるように、これら2つのモジュール120、125は1つの単体モジュールに形成されてもよい。
【００２８】
マルチプロセッサ決定アルゴリズムモジュール125は並行処理度モニタモジュール120およびCPU電力コントローラ130に結合される。マルチプロセッサ決定アルゴリズムモジュール125は、並行処理度モニタモジュール120からデータを受信し、このデータに基づいて決定を下す。以下でさらに詳細に説明するように、マルチプロセッサ決定アルゴリズムモジュール125によって下された決定の結果は、メッセージとしてCPU電力コントローラ130に送信される。
【００２９】
O/Sスケジューラモジュール105は、ソフトウェアとして具現化され得る。O/Sスケジューラモジュール105は、マルチコアCPU110またはプロセッサ126によって実行される1つまたは複数のアプリケーションプログラム119から受信した処理タスクをスケジュールする役目を果たし得る。アプリケーションプログラム119は、限定はしないが、ワイヤレス電話呼アプリケーション、全地球測位衛星(「GPS」)アプリケーション、電子メールアプリケーション、カレンダーアプリケーション、ワードプロセッシングアプリケーション、表計算アプリケーション、オーディオおよび/またはビデオをサポートするエンターテインメントアプリケーションなどを含み得る。
【００３０】
処理タスクは、アプリケーションプログラム119からの要求を含み得る。たとえば、エンターテインメント用のアプリケーションプログラム119は、O/Sスケジューラモジュール105に対し、PCD100のディスプレイ132にビデオ用の複数のフレームを表示するよう要求することがある。O/Sスケジューラモジュール105は、マルチコアCPU110のコア222、224、226にこれらのビデオ処理タスクを割り当て、分散することができる。O/Sスケジューラモジュール105は、各処理タスクを割り当て、それぞれのコア割当てを有する処理タスクを実行待ち行列115に配置することができる。当業者によって理解されるように、実行待ち行列115はソフトウェアおよび/またはハードウェアとして具現化され得る。実行待ち行列115は、割り当てられた処理タスクおよび/またはスレッドを、特定のCPUおよび/またはマルチコアCPU110のコアが処理タスクを処理する準備ができるまで保持することができる。
【００３１】
並行処理度モニタ120は、O/Sスケジューラモジュール105によって管理されている処理タスクを追跡する役目を果たす。並行処理度モニタ120は、実行待ち行列115と通信している。並行処理度モニタモジュール120は、ソフトウェアとして具現化され得る。代替的に、当業者によって理解されるように、並行処理度モニタモジュール120はハードウェアとして具現化され得る。
【００３２】
並行処理度モニタモジュール120は、複数のCPU110および/またはマルチコアCPU110のコア222、224、226に割り当てられ、分散されている並行処理の量を判断する。並行処理度モニタモジュール120は通常、実行待ち行列115から取得されたデータをサンプリングすることによって、並行処理の量を判断する。並行処理度モニタモジュール120が実行待ち行列115からデータをサンプリングする頻度は、必要に応じて変更または修正され得る。サンプリング頻度は処理量に基づいて調整され得る。
【００３３】
たとえば、複数のアプリケーションプログラム119がCPU110によって実行されているときは、ますます多くの処理タスクが生成され、実行待ち行列115に配置される可能性が高いので、サンプリング頻度は増加し得る。逆に、アプリケーションプログラムの数が比較的少ない場合、たとえば、プログラム2個程度またはそれよりも少ないときは、並行処理度モニタモジュール120のサンプリング頻度は下降または減少する形で調整され得る。
【００３４】
並行処理度モニタモジュール120は、O/Sスケジューラモジュール105からコールバックを受信し得る。これらのコールバックは、コア222、224および226のために実行待ち行列115のいずれかに新しいタスクが追加されたり、実行待ち行列115のいずれかからタスクが除去されたりするときはいつでも生じ得る。各コールバックにおいて、並行処理度モニタモジュール120は実行待ち行列115内のタスクのローカルカウントを更新し得る。周期的に、たとえば約20ミリ秒ごとに、並行処理度モニタモジュール120は、サンプリング期間中にコア222、224、226で並行して実行される処理の実行割合に、瞬時読取りデータを累積することができる。
【００３５】
並行処理度モニタモジュール120によってサンプリングされる実行待ち行列115に存在するデータは、O/Sスケジューラ105によって所与の瞬間に割り当てられているタスクの総数を含み得る。並行処理度モニタモジュール120はサンプルデータを使用して、並行処理の割合を計算する。並行処理の割合については、図3A〜図3Bに関連して以下でさらに詳しく説明する。並行処理の割合のパラメータは、並行処理度モニタモジュール120からマルチプロセッサ決定アルゴリズムモジュール125に伝えられる。
【００３６】
マルチプロセッサ決定アルゴリズムモジュール125は、ソフトウェアまたはハードウェアあるいは両方を含むことができる。例示的な一実施形態によれば、マルチプロセッサ決定アルゴリズムモジュール125はソフトウェアを含むことができる。マルチプロセッサ決定アルゴリズムモジュール125は、いくつのコア222、224、226が電力供給されるべきか、または「アクティブ」であるべきかを、並行処理度モニタモジュール120から受信した処理の実行割合に基づいて判断する。
【００３７】
マルチプロセッサ決定アルゴリズムモジュール125は、しきい値を含む様々なパラメータを使用することによって、どのコア222、224、226が電力供給されるべきであるかについて決定を下すことができる。これらのパラメータは、コア222、224、226の電源オン/オフに関わるオーバーヘッドにおける特定のポータブルコンピューティングデバイス100に関する電力消費特性に基づいて導出され得る。例示的なパラメータは以下を含むが、これらに限定されない。並行処理の起動割合(「Pw」):1つまたは複数のコア222、224、226をアクティブ化するための、並行して実行される処理の割合に関するしきい値である。起動持続時間(「Tw」):時間の量に関するしきい値であって、1つまたは複数の追加のコア222、224、226の電源がオンにされる前に持続時間Tw中に取得された一定数のサンプルについてPwしきい値に達しているか、またはPwしきい値を上回っているかが判断される。スリープ割合(「Ps」):1つまたは複数のコア222、224、226を非アクティブ化するための、並行して実行される処理の割合に関するしきい値であって、このしきい値に達しているか、またはこのしきい値を下回って存在しているかが判断される。スリープ持続時間(「Ts」):時間の量に関するしきい値であって、1つまたは複数のコア222、224、226の電源がオフにされる前に持続時間Ts中に取得された一定数のサンプルについてPsしきい値が維持されているか、またはこのしきい値を下回っているかが判断される。
【００３８】
マルチプロセッサ決定アルゴリズムモジュール125によって下される決定を形成するパラメータ間の例示的な関係は、以下を含む。並行処理度モニタモジュール120によって検出された並行処理の現在の実行割合がPwしきい値よりも大きい場合に、この実行割合がTwしきい値よりも長い持続時間にわたって検出されている場合、マルチプロセッサ決定アルゴリズムモジュール125は電力コントローラ130に対し、1つまたは複数の追加のコア222、224、226の電源をオンにして、現在の並行処理負荷を管理するよう求めるコマンドを出すことができる。並行コア222、224、226が同時に処理タスクを処理している状況において、並行処理度モニタモジュール120によって検出された並行処理の現在の実行割合がPsパラメータ以下である場合に、この実行割合がTsしきい値以上の持続時間にわたって検出されている場合、マルチプロセッサ決定アルゴリズムモジュール125は電力コントローラ130に対し、1つまたは複数のコア222、224、226の電源をオフにするよう求めるコマンドを出すことができる。
【００３９】
上述のように、CPU電力コントローラ130はマルチプロセッサ決定アルゴリズムモジュール125から、1つもしくは複数のコア222、224、226または他のCPU110の電源オンまたはオフに関するメッセージを受信する。CPU電力コントローラ130は通常、1つもしくは複数のコア222、224、226または他のCPU110への電力を制御するためのハードウェアで具現化される。CPU電力コントローラ130がコア222、224もしくは226または別のCPU110の電源を「オフ」にしたとき、この「オフ」状態は、当業者によって理解されるように、低電力状態を含み得る。他の場合には、「オフ」状態は電力の完全な欠如を含むこともある。
【００４０】
図3Aは、第1の処理負荷シナリオにおける経時的にプロットされたCPU110および/またはマルチコアCPU110のコア222、224もしくは226に割り当てられた処理タスクのグラフ300Aである。データプロットグラフ300Aは、O/Sスケジューラ105によって管理され、実行待ち行列115に割り当てられたアプリケーションモジュール119からの処理タスクを含む。処理タスクの数がY軸上にプロットされ、ミリ秒で示される時間がX軸に沿ってプロットされる。図3Aにおけるこのデータは、3つの割合サンプル期間311A、311B、311Cを含み、各々は、60ミリ秒の長さを有する起動持続時間「Tw」の間に取られた20ミリ秒の長さを有する。特定の割合サンプル期間311における処理タスクの総数が監視される頻度は、所与の割合サンプル期間311である約20ミリ秒に10個の処理読取りデータが取得され得るような約2ミリ秒を含み得る。
【００４１】
当業者によって理解されるように、Tw起動持続時間の長さ、各割合サンプル期間311のサイズ、割合サンプル期間311中にサンプルが取得される頻度は様々であってよく、本開示の範囲内にある。
【００４２】
所与の割合サンプル期間における並行処理の割合(PwまたはPs)は、以下の式によって決まる。
【００４３】
式1:P%=並行処理のインスタンス/所与のサンプル期間におけるサンプルの数
【００４４】
並行処理は、処理タスクの数が2つ以上のコア222、224、226または2つ以上のCPU110の使用を許容するしきい値として定義される。これは、通常、処理タスクの数が1よりも大きいときはいつでも、並行処理が存在し、マルチコアCPU110の2つ以上のコア222、224、226または2つ以上のCPU110をアクティブ化して、現在の数の並行処理タスクをサポートすることができることを意味する。
【００４５】
たとえば、図3Aに示す例示的な処理シナリオでは、第1の割合サンプル期間311Aにおける第1のデータポイントは、ゼロの並行処理にも等しいゼロの処理タスクを反映している。第1の表305A、第1の列を参照されたい。第1の割合サンプル期間311における第2のデータポイントは、並行処理の存在を示すためのしきい値である2個の処理タスクを下回る値である1個の処理タスクを反映している。したがって、第1の表305Aの第2の列では、第1の割合サンプル期間311Aの第2のデータポイントに関して、並行処理のゼロ値すなわち欠如が存在する。同じことが、第1の割合サンプル期間311Aの第3のデータポイントにも当てはまり、第1の表305Aの第3の列によって反映されているように、1個の処理タスクおよび対応する値であるゼロの並行処理がある。
【００４６】
しかしながら、第1の割合サンプル期間311における第4および第5のデータポイントは、データポイントごとに少なくとも2個の処理タスクを反映しており、並行処理の存在が表されている。第1の表305A、第4および第5の列を参照されたい。
【００４７】
(コア222、224、226または追加のCPU110を起動するための)第1の割合サンプル期間311Aにおける並行処理の割合は60%であり、これは、第1の割合サンプル期間311A中に取得された計10個のサンプルにおいて並行処理を6個カウントしたことに基づく。同様に、それぞれ第2および第3の表305B、305Cによって反映されているように、第2の割合サンプル期間311Bにおける並行処理の割合は30%であり、第3の割合サンプル期間311Cにおける並行処理の割合は80%である。
【００４８】
起動持続時間Tw内に各割合サンプリング期間311が生じる頻度に関する適切な大きさを選択することの重要性、特定の割合サンプリング期間311中に取得されるデータポイントの頻度および数、ならびにサンプリング持続時間Twの長さは、第1のグラフ300Aに反映されているいくつかのデータポイントに基づき、当業者には明らかである。
【００４９】
たとえば、第1のグラフ300Aの第1の領域303Aは、第1の割合サンプル期間311Aの第5のデータポイントと第6のデータポイントとの間における処理タスクの落ち込みを反映している。第1の割合サンプリング期間311中に取得されたデータポイントの頻度は、この例では約2ミリ秒に設定されているので、第5のデータポイントと第6のデータポイントとの間にある第1の領域303Aにおける処理タスクのこの落ち込みは検出されていない。割合サンプル期間311Aは、システム101によって管理されている処理活動の大部分を捕捉するのに適切なサイズに設定されているので、検出されていない処理タスクのこの落ち込みはそれほど重大ではない。第1の割合サンプル期間311Aの長さは、第1の割合サンプル期間311Aに処理されている処理の大部分を捕捉しているので、第1のグラフ300Aの領域303Aで生じている処理のこの落ち込みが第1の割合サンプル期間311中に検出されていても、計算される並行処理の割合に対するその影響は軽微であったはずである。
【００５０】
前述のように、並行処理の割合のパラメータ(PwおよびPs)は、並行処理度モニタモジュール120によって計算され、マルチプロセッサ決定アルゴリズムモジュール125に送信される。マルチプロセッサ決定アルゴリズム125は、マルチコアCPU110の1つもしくは複数の追加のコア222、224および226、または追加のCPU110の電源を「オフ」にするための並行処理の割合のパラメータ(Ps)および「オン」にするための並行処理の割合のパラメータ(Pw)に関して設定され得るしきい値を有し得る。並行処理の割合のパラメータ(PwおよびPs)に関するしきい値は、当業者によって理解されるように、マルチコアおよび/または追加のCPU110が並行処理のためにアクティブ化されたときに性能差異およそ5%以下が実現されるように、経験的に決定され、更新され得る。
【００５１】
たとえば、起動並行処理割合パラメータPwに関するしきい値は、この標準的な5%の性能尺度を使用することによって決定され得る。たとえば、設定された数の処理タスクが通常、単一のプロセッサ110によって完了させるのに約100ミリ秒要すると仮定する。その場合、1つもしくは複数の追加のコア222、224および226、または追加のCPU110の電源を「オン」にするためのPwパラメータは、マルチコアCPU110の2つ以上のコア222、224、226の間または2つ以上のCPU110の間で処理が分割されたときに最大105ミリ秒を上回らないように計算されるべきである。当業者であれば、5ミリ秒が100ミリ秒の約5%であることを認識する。
【００５２】
別の例として、前述のように、起動並行処理割合パラメータPwに関するしきい値は通常、PCD100の動作の前にオフラインで設定または確立される。起動並行処理割合パラメータPwに関するしきい値が約55%に等しく設定された場合、これは、起動Tw持続時間中に取得された一定の連続する数の割合サンプルについて、並行処理度モニタモジュール120がこの量以上の並行処理を検出する必要があることを意味する。
【００５３】
図3Aに示す例示的なシナリオでは、起動持続時間Twは60ミリ秒に設定され、割合サンプルの数は20ミリ秒ごとに生じるように設定される。これは、Pwに関する55%という値が、60ミリ秒の起動持続時間ごとに少なくとも3つの連続するサンプルによって満たされなければならないことを意味する。
【００５４】
図3Aの例示的な実施形態では、第1の割合サンプル311Aおよび第3の割合サンプル311Cのみが、55%の起動並行処理割合Pw値を上回る。第2の割合サンプルは、55%のしきい値Pwよりも低い30%である。311A、311Bおよび311Cの3つの連続した割合サンプルにおいてPwに達してはいないので、マルチプロセッサ決定アルゴリズムモジュール125は、CPU電力コントローラ130にコマンドを一切出さない。
【００５５】
一方、Pwしきい値が55%に設定され、割合サンプルの長さが起動持続時間Twに等しく設定され、その結果、60ミリ秒ごとにのみ並行処理の割合が取得された(持続時間Twごとにたった1つのサンプルが取得されることを意味する)場合、Pwしきい値は満たされる。60ミリ秒の時間枠における並行処理値の単一の割合が約56.6%(17個の分割された並行処理インスタンス/30個の読取りデータ)に等しくなるので、そのようなシナリオではPwしきい値は満たされる。このシナリオにおけるマルチプロセッサ決定アルゴリズムモジュール125は、マルチコアCPU110の1つもしくは複数の追加のコア222、224もしくは226または追加のCPU110(図示せず)の電源を「オン」にするようCPU電力コントローラ130に求めるコマンドを含むメッセージを出す。
【００５６】
図3Bは、第2の処理負荷シナリオにおける経時的にプロットされたCPU110および/またはマルチコアCPU110のコア222、224もしくは226に割り当てられた処理タスクのグラフ300Bである。図3Bは図3Aに非常に似ているので、以下では、これら2つの図の差異のみについて説明する。
【００５７】
グラフ300Bによって示される例示的な第2の処理負荷シナリオによれば、割合サンプル期間311は約30ミリ秒の長さに設定され、処理量の読取りデータは約2ミリ秒ごとに取得される。1つもしくは複数のCPU110および/またはコア222、224もしくは226の電源を「オフ」にするためのスリープ持続時間Tsの長さは、120ミリ秒に設定され得る。これは、少なくとも4つの連続する割合サンプル期間311においてスリープ処理割合Psに達した場合に、マルチコアCPU110の1つもしくは複数のコア222、224もしくは226または追加のCPU110(図示せず)の電源を「オフ」にするようCPU電力コントローラ130に求めるコマンドを含むメッセージを、このシナリオにおけるマルチプロセッサ決定アルゴリズムモジュール125が出すことを意味する。
【００５８】
第1のグラフ300Aのプロセッサ「起動」割合サンプル期間311A〜Cと比較して、第2のグラフ300Bのプロセッサ「スリープ」割合サンプル期間311D〜Eは、約10ミリ秒長い。1つもしくは複数のコア222、224、226または追加のCPU110の電源をオフにするための保守的なアプローチが取られる場合に、プロセッサ「スリープ」割合サンプル期間311D〜Eは一般に、「起動」割合サンプル期間311A〜Cよりも長くなる。当業者は、通常、より長い時間にわたって追加のコア222、224、226または追加のCPU110の電源を「オン」に維持することが、より短い時間にわたってコア222、224、226または追加のCPU110の電源を「オフ」にし、次いで同じコア222、224、226またはCPU110を再起動して、処理される処理タスクに関する目下の需要を満たす場合と比較して、より良いことを認識する。当業者は、より頻繁に複数のデバイスの電源をオンにしたりオフにしたりする場合には、より長い持続時間にわたって複数のデバイスの電源をオンにしておき、次いでより長い持続時間にわたってシャットダウンする場合と比較して、より多くの電力が消費され得ることを認識する。
【００５９】
別の例として、前述のように、スリープ並行処理割合パラメータPsに関するしきい値は通常、PCD100の動作の前にオフラインで設定または確立される。スリープ並行処理割合パラメータPsに関するしきい値が約35%に等しく設定された場合、これは、所与のサンプル持続時間Tsにおいて、一定数の割合サンプル期間に、並行処理度モニタモジュール120がこの量以下の並行処理を検出する必要があることを意味する。割合サンプル期間の数は、それらのサイズに基づく。
【００６０】
したがって、1つもしくは複数のCPU110および/またはコア222、224もしくは226の電源を「オフ」にするためのスリープ持続時間Tsの長さが120ミリ秒に設定され、サンプル割合のサイズが30ミリ秒である場合、Psのしきい値は、少なくとも4つの連続するサンプルについて満たされる必要がある(4×30=120)。サンプル割合のサイズが20ミリ秒に設定された場合、Psのしきい値は、少なくとも6つの連続するサンプルについて満たされる必要がある(6×20=120)。
【００６１】
図3Bに示す例示的なシナリオでは、Psパラメータに関する35%のしきい値が、第1および第4の割合サンプル期間311D、311Eによって満たされている。第2および第3の割合サンプル期間は図3Bに示されていない。第1の割合サンプル期間311Dにおいて、並行処理割合(Ps)は約33%の値を有する。第4の割合サンプル期間311Eにおいて、並行処理割合(Ps)は約20%の値を有する。
【００６２】
第2および第3の割合期間311(図3Bに示されていない)の並行処理割合値(Ps)が35%のしきい値(Ps)以下である場合、第4の割合期間311Eの後、マルチプロセッサ決定アルゴリズムモジュール125は、マルチコアCPU110の1つもしくは複数の追加のコア222、224もしくは226または追加のCPU110(図示せず)を電源「オフ」にする(またはスリープモードにする)ようCPU電力コントローラ130に求めるコマンドを含むメッセージを出す。
【００６３】
下記のフローチャートで概説するように、マルチプロセッサ決定アルゴリズムモジュール125は、スリープ並行処理割合パラメータPsまたは起動並行処理割合パラメータPwのいずれかを、その現在の動作モードに応じて使用する。マルチプロセッサ決定アルゴリズムモジュール125は、少なくとも2つの異なる動作モード、すなわち、マルチコア/CPUモードまたはシングルコア/CPUモードを有し得る。起動並行処理割合パラメータPwはマルチプロセッサ決定アルゴリズムモジュール125によって、それがシングルコア/CPUモードにあるときに使用される。スリープ並行処理割合パラメータPsはマルチプロセッサ決定アルゴリズムモジュール125によって、それがマルチコア/CPUモードにあるときに使用される。
【００６４】
図4は、経時的にプロットされた例示的な処理負荷に関する並行処理の割合のグラフ400である。例示的な一実施形態によれば、処理負荷は、PCD100のマルチコアCPU110の少なくとも2つのコア222、224を含むシステム101による映画の再生中に表示されるビデオのフレームを含む。
【００６５】
第1のライン402は、シングルコアからの監視される並行処理の割合を表す。第2のライン404は、マルチコアシステム101の2つのコアにわたって監視される並行処理の割合を表す。
【００６６】
この例示的な実施形態によれば、起動並行処理割合パラメータPwは、約50%に等しく設定される。したがって、グラフ400上のポイント405まで、ビデオ再生処理負荷をサポートするデュアルコアシステム101は、シングルコアモードで動作する。約50%の処理割合パラメータを表すポイント405において、デュアルコアシステム101は、その従前のシングルコアモードと比較して並行処理モード(「デュアルコアモード」)に入る。
【００６７】
この例示的な環境によれば、マルチプロセッサ決定アルゴリズムモジュール125は、この例では約50%に等しく設定されている起動並行処理割合パラメータPwを使用して、ポイント405まで第1のライン402を監視する。ポイント405以後では、マルチプロセッサ決定アルゴリズムモジュール125は、スリープ並行処理割合パラメータPsを使用して、第2のライン404を監視する。当業者によって理解されるように、スリープ並行処理割合パラメータPsは任意の値に設定され得る。
【００６８】
図5は、ポータブルコンピューティングデバイス100の複数のCPUおよび/またはマルチコアCPU110を動的に制御するための例示的な方法500を示す論理フローチャートである。ブロック505が、方法500の最初のステップである。ブロック505において、O/Sスケジューラモジュール105からのデータが並行処理度モニタモジュール120によって受信され得る。上述したように、処理タスクがシステム101に追加されているか、またはシステム101から除去されているときに、並行処理度モニタモジュール120はO/Sスケジューラモジュール105からコールバックを受信し得る。
【００６９】
次にブロック510において、システム101の処理待ち行列115が並行処理度モニタモジュール120により監視され得る。並行処理度モニタモジュール120は、いくつかの所定の時間に、たとえば図3Aに示すように約2ミリ秒ごとに、実行待ち行列115をポーリングすることができる。ブロック505で検出されたように、並行処理度モニタモジュール120がコールバックを受信した場合、この活動を受けて並行処理度モニタモジュール120はただちに、現在の処理負荷について実行待ち行列115をポーリングし得る。代替的に、タスクが追加されたとき、またはタスクが実行待ち行列115から除去された場合など、アクションごとに異なるコールが受信されることがある。並行処理度モニタモジュール120は、実行待ち行列115に存在するタスクのローカルカウントを管理することができる。
【００７０】
次に、ルーチンまたは副方法515において、並行処理度モニタモジュール120は並行処理の割合を計算することができる。前述のように、この段階すなわちブロック515において計算される並行処理の割合(PsまたはPw)は、(持続時間Tsを使用するか、持続時間Twを使用するかを問わず)システム101の現在の動作モードに依存する。マルチコア/CPU動作モードにおいて、並行処理度モニタモジュール120は、シングルコア/CPUモードにあるときに、対応する持続時間Twを有する起動並行処理割合パラメータPwを利用する。上述のように、対応する持続時間Tsを有するスリープ並行処理割合パラメータPsは並行処理度モニタモジュール120によって、システム101がマルチコア/CPUモードにあるときに使用される。
【００７１】
たとえば、システム101がシングルコア動作モードにある(マルチコア動作モードにはなく、マイクロプロセッサ動作モードにない)場合、マルチプロセッサ決定アルゴリズムモジュール125は、対応する持続時間Twを使用する起動並行処理割合Pwに関連するパラメータを監視する。図3Aおよび表305A〜Cは、例示的な一実施形態により起動並行処理割合Pwがどのように計算されるかを示している。一方、システム101がマルチコア/マイクロプロセッサ動作モードにある場合、マルチプロセッサ決定アルゴリズムモジュール125は、図3Bに示し、表305D〜Eで計算するように、持続時間Tsを使用するスリープ並行処理割合Psに関連するパラメータを監視する。いくつかの例示的な実施形態では、持続時間TwおよびTsは等しく、それらのそれぞれの割合サンプル311の数も等しいことがある。
【００７２】
次に、決定ブロック520において、マルチプロセッサ決定アルゴリズムモジュール125は、システム101がマルチコア/CPUモードで動作しているかどうかを判断する。決定ブロック520への照会が否定であれば、決定ブロック525への「NO」分岐に進む。決定ブロック520への照会が肯定であれば、ブロック540への「YES」分岐に進む。
【００７３】
決定ブロック525において、マルチプロセッサ決定アルゴリズムモジュール125は、対応する持続時間Twおよび設定された割合サンプル期間のサイズを有する起動並行処理割合パラメータPwに関するしきい値セットと並行処理の割合の現在値とを比較することによって、現在のシングルコア/シングルプロセッサモードをマルチコア/マルチプロセッサモードに変更すべきかどうかを判断する。決定ブロック525への照会が否定である(持続時間Twにおける連続する数の割合サンプル期間によってPwしきい値が満たされなかったことを意味する)場合、ルーチンまたは副方法515へ戻る「NO」分岐に進む。決定ブロック520への照会が肯定である(持続時間Twにおける連続する数の割合サンプル期間によってPwしきい値が満たされたか、またはPwしきい値に達したことを意味する)場合、ブロック530への「YES」分岐に進む。
【００７４】
ブロック530において、マルチプロセッサ決定アルゴリズムモジュール125はCPU電力コントローラ130に対し、システム101がマルチコア/プロセッサ状態になるように1つもしくは複数のコア222、224、226またはプロセッサ110の電源を「オン」にするよう求めるコマンドを出す。たとえば、図3Aの並行処理期間311A〜311Cの第1から第3の起動割合によって示されるような並行処理状態が検出された(Twが60ミリ秒に等しく設定され、各割合期間311A〜Cが20ミリ秒に等しく設定されていると仮定する)場合で、Pwしきい値が30%以上に設定されている場合に、ブロック530は実行される。
【００７５】
次に、ブロック535において、マルチプロセッサ決定アルゴリズムモジュール125はまた、CPU電力コントローラ130を通じて、または直接的に、各コア222、224、226/プロセッサ110に対し、特定のマルチコア/マルチプロセッサモードであるそれぞれのダイナミック電圧および周波数スケーリング(「DVFS」)アルゴリズムを初期化するよう求めるコマンドを出すことができる。DVFSアルゴリズムについてのさらなる詳細は、図7に関連して後述する。次いでプロセスまたは方法500は、ルーチンまたは副方法515に戻って続く。
【００７６】
決定ブロック540において、マルチプロセッサ決定アルゴリズムモジュール125は、対応するサンプリング持続時間Tsを有するスリープ並行処理割合パラメータPsに関するしきい値セットと並行処理の割合の現在値とを比較することによって、現在のマルチコアモードをシングルコア/低減コアモードに変更すべきかどうかを判断する。決定ブロック540への照会が否定であれば、ルーチンまたは副方法515へ戻る「NO」分岐に進む。決定ブロック540への照会が肯定であれば、ブロック545への「YES」分岐に進む。
【００７７】
ブロック545において、マルチプロセッサ決定アルゴリズムモジュール125は、CPU電力コントローラ130に対し、システム101をマルチコア/マルチプロセッサ状態からシングルコア/低減コアプロセッサ状態に移行させるよう求めるコマンドを出す。マルチプロセッサ決定アルゴリズムモジュール125は、CPU電力コントローラ130に対し、1つもしくは複数のコア222、224、226またはCPU110を電源「オフ」にする、または電源切断するよう求めるコマンドを出すことができる。前述のように、この「オフ」状態は電力の完全な欠如ではない「スリープ」状態または「低電力状態」を含み得る。たとえば、図3Bの並行処理期間311D、311Eの第1から第4のスリープ割合によって示されるような並行処理状態が検出された(Tsが120ミリ秒の持続時間に等しく設定され、各割合期間311D、Eが30ミリ秒に等しく設定されていると仮定する)場合で、Psしきい値が33%以下に設定されている場合に、ブロック545は実行される。
【００７８】
次にブロック550において、マルチプロセッサ決定アルゴリズムモジュール125は、残りのアクティブなシングルコア222、224もしくは226またはCPU110に対し、DVFSアルゴリズムをシングルコア/低減プロセッサ動作に向けて調整するよう求めるコマンドを出すことができる。DVFSアルゴリズムについてのさらなる詳細は、図7に関連して後述する。次いで方法500は、ルーチンまたは副方法515に戻る。
【００７９】
図6は、複数のコア222、224、226および/または複数のCPU110の間の並行処理の割合を計算するための例示的な副方法またはルーチン515を示す論理フローチャートである。ブロック605が、副方法またはルーチン515の最初のステップである。ブロック605において、選択された時間間隔におけるタスクおよび/またはスレッドの総数が並行処理度モニタモジュール120によって計算される。この総数は、システム101の現在の動作モードに基づく。
【００８０】
このブロック605では、システム101のマルチコア/マルチプロセッサ動作モードにおいて、並行処理度モニタモジュール120は、図3Bおよび表305D〜305Eに示すように、スリープ並行処理割合パラメータPsに関連する持続時間Tsを使用する。また、システム101のシングルコア/シングルプロセッサ動作モードにおいて、並行処理度モニタモジュール120は、図3Aおよび表305A〜305Cに示すように、起動処理割合パラメータPwに関連する持続時間Twを使用する。各持続時間TsおよびTwは、持続時間の大きさに基づいてカスタマイズされた割合サンプリング期間を有し得る。たとえば、持続時間Tsは、50ミリ秒の大きさを有し得る。これは、1つの例示的な割合サンプリング期間が、持続時間Tsにおける5個の読取りデータに等しい、10ミリ秒ごとに取得された割合読取りデータを含み得ることを意味する。1つの例示的な割合サンプリング期間は、持続時間Tsにおける10個の読取りデータに等しい、5ミリ秒ごとに取得された割合読取りデータを含んでもよい。以下同様である。
【００８１】
次にブロック610において、並行処理の割合が並行処理度モニタモジュール120によって、システム101の現在の動作モードに基づいて計算され得る。ブロック605に関連して上述したように、並行処理度モニタモジュール120は、このブロックにおいて、図3A〜図3Bに示すように、システム101の現在の動作モードに応じて、起動割合パラメータPwまたはスリープ割合パラメータPsのいずれかを計算することができる。次にブロック615において、並行処理度モニタモジュール120は、PwパラメータまたはPsパラメータを表に記憶し、このパラメータをマルチプロセッサ決定アルゴリズムモジュール125に伝えることができる。そして、副方法またはルーチン515は、図5の決定ブロック520に戻る。
【００８２】
図7は、図1のPCD100の特徴、また特に、プロセッサ設計におけるダイナミック電圧および周波数スケーリング(「DVFS」)をサポートするPCD100の要素を示す概略図である。DVFSは、電力消費と性能との間のトレードオフを可能にする。DVFSを利用するように設計されているプロセッサ110によって、プロセッサのクロック周波数を、電圧の対応する調整によって調整することができる。何らかの電力節減は実行時間の増加によって相殺され、結果的に総エネルギー消費量を全体としては減少させないので、クロック周波数のみの低減は役立たない。しかしながら、動作電圧を低減すると、それに比例して消費電力が節減される。
【００８３】
図7に示すように、中央処理装置110は、バス211を介してメモリ112に結合される。中央処理装置110は、N個のコアプロセッサを有するマルチコアプロセッサである。すなわち、中央処理装置110は、第1のコア222、第2のコア224、および第Nのコア226を含む。知られているように、第1のコア222、第2のコア224、および第Nのコア226の各々は、専用のアプリケーションまたはプログラム119をサポートするために利用可能である。あるいは、利用可能なコアの2つ以上にわたる処理のために、1つまたは複数のアプリケーションまたはプログラム119は分散していてよい。
【００８４】
第1のコア222、第2のコア224〜第Nのコア226は、単一の集積回路ダイに集積することができ、または、多重回路パッケージにおける個別のダイに集積または結合され得る。設計者は、第1のコア222、第2のコア224〜第Nのコア226を、1つまたは複数の共有キャッシュを介して結合することができ、たとえばバス、リング、メッシュ、およびクロスバートポロジなどのネットワークトポロジを介してメッセージまたは命令パッシングを実施することができる。
【００８５】
図示の実施形態では、RFトランシーバ168は、デジタル回路素子を介して実装され、たとえばコアプロセッサ210(「コア」と標示される)のような、少なくとも1つのプロセッサを含む。このデジタル実装では、RFトランシーバ168は、バス213を介してメモリ112に結合される。
【００８６】
当技術分野で知られているように、バス211およびバス213の各々は、1つまたは複数の有線接続またはワイヤレス接続を介した複数の通信経路を含み得る。バス211およびバス213は、通信を可能にするために、たとえばコントローラ、バッファ(キャッシュ)、ドライバ、リピータ、および受信機など、追加の要素を有していてもよいが、これらについては簡単のために省略する。さらに、バス211およびバス213は、上記の構成要素の間の適切な通信を可能にするために、アドレス、制御、および/またはデータ接続を含み得る。
【００８７】
図7に示すように、PCD100によって使用される論理がソフトウェアで実装されるとき、開始論理250、管理論理260、DVFSインターフェース論理270、アプリケーションストア280内のアプリケーション、およびファイルシステム290の部分のうちの1つまたは複数を、何らかのコンピュータ関連のシステムまたは方法によって、またはそれと関連して使用するための、何らかのコンピュータ可読媒体に記憶できることに留意されたい。
【００８８】
代替実施形態では、開始論理250、管理論理260、および場合によってはDVFSインターフェース論理270のうちの1つまたは複数がハードウェアで実装される場合、様々な論理は、各々当技術分野でよく知られている以下の技術、すなわち、データ信号に論理関数を実装するための論理ゲートを有する個別の論理回路、適切な組合せの論理ゲートを有する特定用途向け集積回路(ASIC)、プログラマブルゲートアレイ(PGA)、フィールドプログラマブルゲートアレイ(FPGA)などのうちの任意のもの、またはその組合せによって実装することができる。
【００８９】
上述のように、メモリ112は、たとえばフラッシュメモリまたはソリッドステートメモリデバイスのような、不揮発性データ記憶デバイスを含み得る。メモリ112は、単一のデバイスとして示されているが、中央処理装置および/またはRFトランシーバ168のコア210(または追加のプロセッサコア)に結合された別個のデータストアを有する分散型メモリデバイスでもよい。
【００９０】
開始論理250は、第1のコア222、第2のコア224〜第Nのコア226のような、利用可能なコアのうちの1つまたは複数の性能を管理または制御するために、選択プログラムを選択的に特定し、ロードし、実行するための1つまたは複数の実行可能命令を含む。選択プログラムは、組込みファイルシステム290のプログラムストア296で見つけることができ、性能スケーリングアルゴリズム297とパラメータのセット298との特定の組合せによって定義される。選択プログラムは、中央処理装置110のコアプロセッサ222、224および226のうちの1つまたは複数、ならびにRFトランシーバ168のコア210によって実行されると、それぞれのプロセッサコアの性能をスケーリングするために、性能モニタモジュール114によって提供される1つまたは複数の信号に従って動作し得る。この点について、モニタモジュール114は、イベント、プロセス、アプリケーション、リソース状態の条件、経過時間、温度などの1つまたは複数のインジケータを提供することができる。
【００９１】
たとえば、モニタモジュール114は、CPU110がマルチコア/マルチプロセッサモードで現在動作すべきであることを示す信号を、マルチプロセッサ決定アルゴリズムモジュール125から受信し得る。代替的に、モニタモジュール114は、CPU110がシングルコア/低減コアモードで現在動作すべきであることを示す信号を、マルチプロセッサ決定アルゴリズムモジュール125から受信し得る。
【００９２】
管理論理260は、それぞれのプロセッサコア222、224、226のうちの1つまたは複数において動作可能な性能スケーリングプログラムを終了させ、さらに、利用可能なコア222、224、226のうちの1つまたは複数の性能を管理または制御するためのより適切な交換プログラムを選択的に特定し、ロードし、実行するための、1つまたは複数の実行可能命令を含む。管理論理260は、ランタイム時に、またはPCD100が電力供給されデバイスの操作者によって使用されている間に、これらの機能を実行するように構成される。交換プログラムは、組込みファイルシステム290のプログラムストア296で見つけることができ、性能スケーリングアルゴリズム297とパラメータのセット298との特定の組合せによって定義される。図8に示すように、プログラムストア296を、コアストア294およびDVFSストア292内に階層的に配置することができる。交換プログラムは、中央処理装置110のコアプロセッサ222、224、226のうちの1つもしくは複数、またはRFトランシーバ168のコア210によって実行されると、それぞれのプロセッサコアの性能をスケーリングするために、モニタモジュール114によって提供される1つもしくは複数の信号、または様々なプロセッサコア222、224、226のそれぞれの制御入力で提供される1つもしくは複数の信号に従って動作し得る。
【００９３】
DVFSインターフェース論理またはインターフェース論理270は、組込みファイルシステム290に記憶された情報を観察し、構成し、または場合によっては更新するために、外部入力を提示し、管理し、それと対話するための1つまたは複数の実行可能命令を含む。一実施形態では、インターフェース論理270は、USBポート142を介して受信された製造業者の入力とともに動作することができる。これらの入力は、プログラムストア296から削除されるべき、またはプログラムストア296に追加されるべき、1つまたは複数のプログラムを含み得る。あるいは、入力は、プログラムストア296のプログラムのうちの1つまたは複数に対する編集または変更を含み得る。その上、入力は、開始論理250と管理論理260の一方または両方に対する1つまたは複数の変更、または全交換を特定することができる。例として、入力は、受信信号電力が特定のしきい値を下回ると、RFトランシーバ168におけるすべての性能スケーリングを中断するようPCD100に命令する、管理論理260に対する変更を含み得る。さらなる例として、入力は、図5に関連して上述した方法500によって決まるように、CPU110がマルチコア/マルチプロセッサモードにあるとき、またはCPU110がシングルコア/低減プロセッサモードにあるときに、所望のプログラムを適用するようPCD100に命令する、管理論理260に対する変更を含み得る。
【００９４】
別の例として、当業者によって理解されるように、DVFSアルゴリズム297は、複数のコア222、224、226および/または追加のCPU110が特定の並行処理についてアクティブ化されるときに、性能差異およそ5%以下が実現されるように調整され得る。アルゴリズム297は、性能差異およそ約5%以下という目標を達成するために、並行処理割合パラメータ(PwおよびPs)に関するしきい値と合わせて調整され得る。
【００９５】
インターフェース論理270によって、製造業者は、PCD100の定義された動作状態の下で、エンドユーザの体験を制御可能に設定し、調整することができる。メモリ112がフラッシュメモリであるとき、開始論理250、管理論理260、インターフェース論理270、アプリケーションストア280におけるアプリケーションプログラム、または組込みファイルシステム290における情報のうちの1つまたは複数を、編集し、置き換え、または場合によっては修正することができる。いくつかの実施形態では、インターフェース論理270によって、PCD100のエンドユーザまたは操作者は、開始論理250、管理論理260、アプリケーションストア280中のアプリケーション、および組込みファイルシステム290中の情報を検索し、位置を特定し、修正し、または置き換えることができる。操作者は、結果として生じるインターフェースを使用して、PCD100の次の開始時に実装される変更を加えることができる。あるいは、操作者は、結果として生じるインターフェースを使用して、ランタイム中に実装される変更を加えることができる。
【００９６】
図8Aおよび図8Bは、並行処理が図2のシステム101によって生成され、サポートされ得る使用事例の実施形態を示す概略図である。図8Aの表800に、第1の例示的な使用事例が示される。使用事例は、PCD100において実行することができるタスクのセットを含む。タスクは、ウェブブラウジング(すなわち、PCD100が、インターネットに結合される送信機の通信範囲内にある間、ブラウザアプリケーションを実行する)、オーディオ/ビデオ再生、オーディオ再生、電子メールアプリケーションの実行、および1つまたは複数の他のアプリケーションの実行を含む。表810に、DVFSアルゴリズム297に関連付けられるパラメータ298(P)が記載されている。表810の列Aは、第1の使用事例「A」の第1および第2のコア222、224に関連する動作パラメータP1およびP2を記載し得る。この第1の使用事例「A」は、下記の第2の使用事例「B」と比較して、シングルコア/低減プロセッサ動作モードに対応し得る。表810の行は全般的に、表800の行に対応する。
【００９７】
表810の列Bは、第2の使用事例「B」の(222、224、および図示されていない第5のコアなど)第1、第2、および第5のコアの動作パラメータP1、P2、およびP5を記載し得る。この第2の使用事例「B」は、表810の第1の使用事例「A」に対して上述したようにマルチコア/マルチプロセッサ動作に対応し得る。
【００９８】
図8Bの表850に、第2の例示的な使用事例が示される。この第2の使用事例は、第1の使用事例の電子メールアプリケーションの代わりにショートメッセージングサービス(SMS)アプリケーションを含む。表860に、DVFSアルゴリズムに関連付けられるパラメータ298(同じくPとして示される)が記載されている。表860の行は全般的に、表850の行に対応する。
【００９９】
表860の列Aは、第1の使用事例「A」の(222および図示されていない第4のコアなど)第1および第4のコアに関連する動作パラメータP1およびP4を記載し得る。この第1の使用事例「A」は、下記の表860の第2の使用事例「B」と比較して、シングルコア/低減プロセッサ動作モードに対応し得る。
【０１００】
表860の列Bは、第2の使用事例「B」の(222、図示されていない第3および第4のコアなど)第1、第3、および第4のコアの動作パラメータP1、P3、およびP4を記載し得る。この第2の使用事例「B」は、表860の第1の使用事例「A」に対して上述したようにマルチコア/マルチプロセッサ動作に対応し得る。
【０１０１】
1つまたは複数の使用事例がPCD100の処理リソースにおける識別可能な並行処理負荷を示し得ることが可能である。PCD100における並行処理負荷が並行処理度モニタモジュール120によって識別できる場合、マルチプロセッサ決定アルゴリズムモジュール125は、性能を保証し、バッテリー電力を節約し、または性能と電力消費との間の所望のトレードオフを実現するように設計された特定の性能スケーリングアルゴリズム297および対応するパラメータ298を適用するために望まれ得るように、PCD100における動作状態を調整するよう求めるコマンドを、モニタモジュール114およびCPU電力コントローラ130に対し出すことができる。
【０１０２】
図5に関連してブロック525および540で上述したように、マルチプロセッサ決定アルゴリズムモジュール125は、リアルタイムで動作して、PCD100における現在の並行処理負荷を識別し、PwまたはPsのしきい値に達するなどいくつかの状況では、識別された並行処理負荷に対し、PCD100における1つまたは複数の動作パラメータを調整すること、たとえば、追加コア222、224、226の電源を「オン」にすること、またはかかるコアの電源を「オフ」にすることのいずれかによって反応する。操作者の体験と電力消費との間の所望のバランスを実現することが知られている複数の性能スケーリングアルゴリズム297を含むPCD100では、図5に示す方法500のブロック535および550の場合のように、識別された並行処理負荷の識別情報をマルチプロセッサ決定アルゴリズムモジュール125が使用して、PCD100における選択された性能スケーリングアルゴリズム297と1つまたは複数のパラメータ298との適切な組合せを選択し、適用することができる。
【０１０３】
上記の開示に鑑みて、プログラミングの当業者は、たとえば本明細書のフローチャートおよび関連する説明に基づいて、コンピュータコードを書くか、または適切なハードウェアおよび/もしくは回路を特定し、開示された発明を容易に実施することができる。したがって、特定の1組のプログラムコード命令または詳細なハードウェアデバイスの開示が、本発明をどのように製作し使用すべきかについて適切に理解するうえで必要であるとは見なされない。特許請求されるコンピュータで実施される処理の発明性のある機能は、上の説明において、かつ、様々な処理の流れを示し得る図面とともに、より詳細に説明される。
【０１０４】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装することができる。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体上で送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であってよい。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形式で所望のプログラムコードを搬送もしくは記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を備えることができる。
【０１０５】
また、任意の接続をコンピュータ可読媒体と呼ぶのが妥当である。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(「DSL」)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
【０１０６】
本明細書で使用する場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(「CD」)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(「DVD」)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１０７】
選択された態様について詳細に説明し、詳述してきたが、以下の請求項によって定義されるような本発明の趣旨および範囲から逸脱することなく、本明細書において様々な置換および改変を実施できることが理解されよう。
【符号の説明】
【０１０８】
100  PCD、ポータブルコンピューティングデバイス
105  O/Sスケジューラ
115  実行待ち行列
120  並行処理度モニタモジュール(各サンプル期間中の並行処理の実行%)
125  マルチプロセッサ(MP)決定アルゴリズムモジュール
130  CPU電力コントローラ
222  コア0
224  コア1
226  コアN
【図１】
0005734505.tif 000002
【図２】
0005734505.tif 000003
【図３Ａ】
0005734505.tif 000004
【図３Ｂ】
0005734505.tif 000005
【図４】
0005734505.tif 000006
【図５】
0005734505.tif 000007
【図６】
0005734505.tif 000008
【図７】
0005734505.tif 000009
【図８Ａ】
0005734505.tif 000010
【図８Ｂ】
0005734505.tif 000011