説明

保証された定常状態期限で中央処理装置電力を制御するためのシステムおよび方法

中央処理装置を動的に制御する方法が、開示される。この方法は、CPUがいつ定常状態に入るかを判定すること、CPUが定常状態に入ると、CPUに関する最適な周波数を計算すること、定常状態CPU利用率を保証すること、および定常状態CPU利用期限を保証することを含むことが可能である。

【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、参照により内容が本明細書に完全に組み込まれている、2009年12月16日に出願した「SYSTEM AND METHOD OF DYNAMICALLY CONTROLLING A CENTRAL PROCESSING UNIT」という名称の米国特許仮出願第61/286,999号の優先権を主張するものである。
【背景技術】
【0002】
PCD(ポータブルコンピューティングデバイス)は、いたるところに存在する。これらのデバイスには、セルラ電話機、PDA(携帯情報端末)、ポータブルゲームコンソール、パームトップコンピュータ、およびその他のポータブル電子デバイスが含まれ得る。これらのデバイスの一次機能に加えて、多くのデバイスは、周辺機能を含む。例えば、セルラ電話機は、セルラ電話通話を行う一次機能と、スチルカメラ、ビデオカメラ、GPS(全地球測位システム)ナビゲーション、ウェブブラウジング、電子メールを送受信すること、テキストメッセージを送受信すること、プッシュツートーク能力などの周辺機能とを含み得る。そのようなデバイスの機能が増大するにつれ、そのような機能をサポートするのに要求されるコンピューティング能力または処理能力も増大する。さらに、コンピューティング能力が増大するにつれ、そのコンピューティング能力を提供するプロセッサ、または複数のプロセッサを効果的に管理する、より大きな必要性が存在する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
したがって、必要とされているのは、マルチコアCPU内の電力を制御する改良された方法である。
【課題を解決するための手段】
【0004】
図において、同様の参照符号は、特に明記しない限り、様々な図面のすべてにわたって同様の部分を指す。
【図面の簡単な説明】
【0005】
【図1】閉じられた位置におけるPCD(ポータブルコンピューティングデバイス)の第1の態様を示す前方平面図である。
【図2】開かれた位置におけるPCDの第1の態様を示す前方平面図である。
【図3】PCDの第2の態様を示すブロック図である。
【図4】処理システムを示すブロック図である。
【図5】CPUを動的に制御する方法の第1の態様を示す流れ図である。
【図6】CPUを動的に制御する方法の第2の態様を示す流れ図である。
【図7】CPUを動的に制御する方法の第3の態様を示す流れ図である。
【図8】CPUを動的に制御する方法の第4の態様を示す流れ図である。
【図9】有効CPU利用率を計算する方法を示す流れ図である。
【図10】フィルタが十分に迅速に応答しているかどうかを判定する方法を示す流れ図である。
【図11】アイドル期間中にフィルタを更新する方法を示す流れ図である。
【図12】ビジー期間中にフィルタを更新する方法を示す流れ図である。
【図13】CPU利用率対時間をプロットするグラフである。
【発明を実施するための形態】
【0006】
「例示的」という語は、本明細書では、「例、実例、または例示の役割をする」を意味するように使用される。本明細書で「例示的」として説明されるいずれの態様も、必ずしも他の態様より好ましい、または有利であると解釈されるべきではない。
【0007】
この説明において、「アプリケーション」という用語には、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルが含まれることも可能である。さらに、本明細書で言及される「アプリケーション」には、開かれる必要がある可能性がある文書、またはアクセスされる必要がある他のデータファイルなどの、実行可能でない性質のファイルが含まれることも可能である。
【0008】
「コンテンツ」という用語には、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルが含まれることも可能である。さらに、本明細書で言及される「コンテンツ」には、開かれる必要がある可能性がある文書、またはアクセスされる必要がある他のデータファイルなどの、実行可能でない性質のファイルが含まれることも可能である。
【0009】
この説明において使用される「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアであるコンピュータ関連のエンティティを指すことを意図している。例えば、構成要素は、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータであることが可能であるが、以上には限定されない。例として、コンピューティングデバイス上で実行されているアプリケーションとそのコンピューティングデバイスがともに、構成要素であることが可能である。1つまたは複数の構成要素が、プロセス内、および/または実行のスレッド内に存在することが可能であり、さらに構成要素は、1つのコンピュータ上に局在化されること、および/または2つ以上のコンピュータの間に分散されることが可能である。さらに、これらの構成要素は、様々なデータ構造が格納されている様々なコンピュータ可読媒体から実行されることが可能である。これらの構成要素は、1つまたは複数のデータパケットを有する信号に従うなどして、ローカルプロセスおよび/または遠隔プロセスを介して通信することが可能である(例えば、1つの構成要素からのデータが、その信号によってローカルシステムまたは分散システムにおける別の構成要素と対話して、さらに/またはインターネットなどのネットワークを介して他のシステムと対話して)。
【0010】
図1および図2を最初に参照すると、例示的なPCD(ポータブルコンピューティングデバイス)が示され、全体的に100で表されている。図示されるとおり、PCD100は、筐体102を含むことが可能である。筐体102は、上側筐体部分104と、下側筐体部分106とを含むことが可能である。図1は、上側筐体部分104がディスプレイ108を含む可能性があることを示す。或る特定の態様において、ディスプレイ108は、タッチスクリーンディスプレイであることが可能である。また、上側筐体部分104は、トラックボール入力デバイス110を含むことも可能である。さらに、図1に示されるとおり、上側筐体部分104は、電源オンボタン112と、電源オフボタン114とを含むことが可能である。図1に示されるとおり、PCD100の上側筐体部分104は、複数のインジケータライト116と、スピーカ118とを含むことが可能である。各インジケータライト116は、LED(発光ダイオード)であることが可能である。
【0011】
或る特定の態様において、図2に示されるとおり、上側筐体部分104は、下側筐体部分106に対して動くことが可能である。具体的には、上側筐体部分104は、下側筐体部分106に対してスライド可能であり得る。図2に示されるとおり、下側筐体部分106は、マルチボタンキーボード120を含むことが可能である。或る特定の態様において、マルチボタンキーボード120は、標準のQWERTYキーボードであることが可能である。マルチボタンキーボード120は、上側筐体部分104が下側筐体部分106に対して動かされると、あらわになることが可能である。図2は、PCD100が、下側筐体部分106上にリセットボタン122を含む可能性があることをさらに示す。
【0012】
図3を参照すると、PCD(ポータブルコンピューティングデバイス)の例示的な、限定的でない態様が示され、全体的に320で表されている。図示されるとおり、PCD320は、マルチコアCPU324を含むオンチップのシステム322を含む。マルチコアCPU324は、第0のコア325と、第1のコア326と、第Nのコア327とを含むことが可能である。
【0013】
図3に示されるとおり、ディスプレイコントローラ328およびタッチスクリーンコントローラ330が、マルチコアCPU324に結合される。オンチップのシステム322の外部にあるタッチスクリーンディスプレイ332が、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合される。
【0014】
図3は、ビデオエンコーダ334、例えば、PAL(位相反転線)エンコーダ、SECAM(順次カラーメモリ)エンコーダ、またはNTSC(全米テレビジョン放送方式標準化委員会)エンコーダが、マルチコアCPU324に結合されることをさらに示す。さらに、ビデオ増幅器336が、ビデオエンコーダ334およびタッチスクリーンディスプレイ332に結合される。また、ビデオポート338が、ビデオ増幅器336に結合される。図3に示されるとおり、USB(ユニバーサルシリアルバス)コントローラ340が、マルチコアCPU324に結合される。また、USBポート342が、USBコントローラ340に結合される。また、メモリ344およびSIM(加入者IDモジュール)カード346が、マルチコアCPU324に結合されることも可能である。さらに、図3に示されるとおり、デジタルカメラ348が、マルチコアCPU324に結合されることが可能である。或る例示的な態様において、デジタルカメラ348は、CCD(電荷結合素子)カメラまたはCMOS(相補性金属酸化膜半導体)カメラである。
【0015】
図3にさらに示されるとおり、ステレオオーディオCODEC350が、マルチコアCPU324に結合されることが可能である。さらに、オーディオ増幅器352が、ステレオオーディオCODEC350に結合されることが可能である。或る例示的な態様において、第1のステレオスピーカ354、および第2のステレオスピーカ356が、オーディオ増幅器352に結合される。図3は、マイクロフォン増幅器358が、ステレオオーディオCODEC350に結合されることも可能であることを示す。さらに、マイクロフォン360が、マイクロフォン増幅器358に結合されることが可能である。或る特定の態様において、FM(周波数変調)ラジオチューナ362が、ステレオオーディオCODEC350に結合されることが可能である。また、FMアンテナ364が、FMラジオチューナ362に結合される。さらに、ステレオヘッドフォン366が、ステレオオーディオCODEC350に結合されることが可能である。
【0016】
図3は、RF(無線周波数)トランシーバ368がマルチコアCPU324に結合されることが可能であることをさらに示す。RFスイッチ370が、RFトランシーバ368およびRFアンテナ372に結合されることが可能である。図3に示されるとおり、キーパッド374が、マルチコアCPU324に結合されることが可能である。また、マイクロフォンを有するモノラルヘッドセット376が、マルチコアCPU324に結合されることも可能である。さらに、振動デバイス378が、マルチコアCPU324に結合されることが可能である。また、図3は、電源380が、オンチップのシステム322に結合される可能性があることも示す。或る特定の態様において、電源380は、電力を要求するPCD320の様々な構成要素に電力を供給するDC(直流)電源である。さらに、或る特定の態様において、この電源は、充電可能なDCバッテリ、あるいはAC(交流)電源に接続されたAC/DC変圧器から導かれるDC電源である。
【0017】
図3は、PCD320が、データネットワーク、例えば、ローカルエリアネットワーク、パーソナルエリアネットワーク、または他の任意のネットワークにアクセスするのに使用され得るネットワークカード388を含むことも可能であることをさらに示す。ネットワークカード388は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、PAN(パーソナルエリアネットワーク)カード、PeANUT(パーソナルエリアネットワーク超低電力技術)ネットワークカード、または当技術分野でよく知られている他の任意のネットワークカードであることが可能である。さらに、ネットワークカード388は、チップに組み込まれることが可能であり、すなわち、ネットワークカード388は、チップ内の完全なソリューションであってもよく、別個のネットワークカード388ではなくてもよい。
【0018】
図3に示されるとおり、タッチスクリーンディスプレイ332、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカ354、第2のステレオスピーカ356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノラルヘッドセット376、振動器378、および電源380は、オンチップのシステム322の外部にある。
【0019】
或る特定の態様において、本明細書で説明される方法ステップの1つまたは複数が、コンピュータプログラム命令としてメモリ344の中に格納されることが可能である。これらの命令は、本明細書で説明される方法を実行するためにマルチコアCPU324によって実行されることが可能である。さらに、マルチコアCPU324、メモリ344、またはマルチコアCPU324とメモリ344の組合せが、マルチコアCPU324内の各CPU、つまり、各コアに対する電力を動的に制御するために、本明細書で説明される方法ステップの1つまたは複数を実行するための手段の役割をすることが可能である。
【0020】
図4を参照すると、処理システムが示され、全体的に400で表されている。或る特定の態様において、処理システム400は、図3に関連して前述したPCD320に組み込まれることが可能である。図示されるとおり、処理システム400は、マルチコアCPU(中央処理装置)402と、そのマルチコアCPU402に接続されたメモリ404とを含むことが可能である。マルチコアCPU402は、第0のコア410と、第1のコア412と、第Nのコア414とを含むことが可能である。第0のコア410は、第0の動的クロックと、第0の動的クロックの上で実行されるDCVS(電圧スケーリング)アルゴリズム416とを含むことが可能である。第1のコア412は、第1のコア412上で実行される第1のDCVSアルゴリズム417を含むことが可能である。さらに、第Nのコア414は、第Nのコア414上で実行される第NのDCVSアルゴリズム418を含むことが可能である。或る特定の態様において、各DCVSアルゴリズム416、417、418は、それぞれのコア410、412、414上で独立に実行されることが可能である。
【0021】
さらに、図示されるとおり、メモリ404は、メモリ404上に格納されたオペレーティングシステム420を含むことが可能である。オペレーティングシステム420は、スケジューラ422を含むことが可能であり、さらにスケジューラ422は、第1の実行キュー424と、第2の実行キュー426と、第Nの実行キュー428とを含むことが可能である。また、メモリ404は、メモリ404上に格納された第1のアプリケーション430と、第2のアプリケーション432と、第Nのアプリケーション434とを含むことも可能である。
【0022】
或る特定の態様において、アプリケーション430、432、434が、マルチコアCPU402内のコア410、412、414において処理されるべき1つまたは複数のタスク436をオペレーティングシステム420に送ることが可能である。タスク436は、単独のタスクとして、単独のスレッドとして、またはそのようなタスクとスレッドの組合せとして処理される、または実行されることが可能である。さらに、スケジューラ422が、マルチコアCPU402内で実行されるように、それらのタスク、スレッド、またはタスクとスレッドの組合せをスケジュールすることが可能である。加えて、スケジューラ422は、それらのタスク、スレッド、またはタスクとスレッドの組合せを実行キュー424、426、428の中に入れることが可能である。コア410、412、414が、コア410、412、414においてそれらのタスクおよびスレッドを処理するため、または実行するために、例えば、オペレーティングシステム420によって、命令されるとおりに、実行キュー424、426、428からそれらのタスク、スレッド、またはタスクとスレッドの組合せを取り出すことが可能である。
【0023】
図4は、メモリ404が並列性モニタ440を格納して含むことが可能であることも示す。並列性モニタ440は、オペレーティングシステム420およびマルチコアCPU402に接続されることが可能である。具体的には、並列性モニタ440は、オペレーティングシステム420内のスケジューラ422に接続されることが可能である。
【0024】
図5を参照すると、中央処理装置の電力を動的に制御する方法の第1の態様が示され、全体的に500で表されている。ブロック502で始まり、動作中、以下のステップが実行されることが可能である。判定504で、コントローラ、例えば、DCVS(動的クロックおよび電圧スケーリング)アルゴリズムが、CPUが定常状態にあるかどうかを判定することが可能である。定常状態にない場合、方法500は、終了することが可能である。
【0025】
定常状態にある場合、方法500は、ブロック506に進むことが可能であり、コントローラが、CPUに関する最適な周波数を計算することが可能である。ブロック508で、DCVSが、定常状態CPU利用率を保証することが可能である。さらに、ブロック510で、DCVSが、定常状態CPU利用期限を保証することが可能である。その後、方法500は、終了することが可能である。
【0026】
図6を参照すると、中央処理装置の電力を動的に制御する方法の第2の態様が示され、全体的に600で表されている。方法600は、ブロック602で、デバイスの電源がオンにされていると、または応答性保証が変更されるといつでも、以下のステップが実行されることが可能なDo Loopを開始することが可能である。
【0027】
ブロック604で、電力コントローラ、例えば、DCVS(動的クロックおよび電圧スケーリング)アルゴリズムが、応答性を可能な最小の応答性値に設定することが可能である。判定606で、電力コントローラが、応答性が、可能な最速の応答性値未満であるかどうかを判定することが可能である。可能な最速の応答性値未満ではない場合、方法600は、終了することが可能である。逆に、応答性が、可能な最速の応答性値未満である場合、方法600は、ブロック608に移ることが可能である。ブロック608で、電力コントローラが、時間変数を1に設定することが可能である。その後、判定610で、電力コントローラが、時刻がCPU利用期限以内であるかどうかを判定することが可能である。時刻がCPU利用期限以内ではない場合、方法は、ブロック612に移ることが可能であり、電力コントローラが、応答性を増加させることが可能である。次に、方法600は、判定606に戻ることが可能であり、方法600は、本明細書で説明されるとおり進むことが可能である。
【0028】
判定610に戻ると、時刻がCPU利用期限以内である場合、方法は、ブロック614に進むことが可能であり、電力コントローラが、応答性値、IIR(フィルタ)、およびCPUBusy(CPUビジー時間)に基づいて、SteadyStateCPUFreq(定常状態CPU周波数)を算出することが可能である。
【0029】
次に、判定616で、電力コントローラが、SteadyStateCPUFreqがMaxCPUFreq(最大限のCPU周波数)以上であるかどうかを判定することが可能である。SteadyStateCPUFreqがMaxCPUFreq以上ではない場合、方法は、ブロック618に移ることが可能であり、電力コントローラが、整数1だけ時間変数を増加させること(時間=時間+1)が可能である。その後、方法600は、判定610に戻ることが可能であり、方法600は、本明細書で説明されるとおり続くことが可能である。
【0030】
判定616に戻ると、SteadyStateCPUFreqがMaxCPUFreq以上である場合、方法600は、ブロック620に進むことが可能であり、電力コントローラが、SteadyStateResp(定常状態応答性変数)を応答性値と等しく設定することが可能である。その後、方法600は、終了することが可能である。
【0031】
図7を参照すると、中央処理装置の電力を動的に制御する方法の第3の態様が示され、全体的に700で表されている。方法700は、ブロック702で始まることが可能である。ブロック702で、電力コントローラ、例えば、DCVS(動的クロックおよび電圧スケーリング)アルゴリズムが、SteadyStateAlpha(定常状態アルファ変数)を0に設定することが可能である。ブロック704で、電力コントローラが、SteadyStateCPUFreq(定常状態CPU周波数)を0に設定することが可能である。さらに、ブロック706で、電力コントローラが、IIR(無限インパルス応答)フィルタ値を0に設定することが可能である。ブロック708で、電力コントローラが、Alpha(変数)をMaxAlpha(最大限のAlpha変数)と等しく設定することが可能である。
【0032】
判定710に移ると、電力コントローラが、Alphaが0を超えているかどうかを判定することが可能である。0を超えていない場合、方法700は、終了することが可能である。逆に、Alphaが0を超えている場合、方法700は、ブロック712に移ることが可能である。ブロック712で、電力コントローラが、時間変数を1に設定することが可能である。その後、判定714で、電力コントローラが、時刻がCPU利用期限以内であるかどうかを判定することが可能である。時刻がCPU利用期限以内ではない場合、方法は、ブロック716に移ることが可能であり、電力コントローラが、整数1だけAlphaを減少させること(Alpha=Alpha-1)が可能である。次に、方法700は、判定710に戻ることが可能であり、方法700は、本明細書で説明されるとおり進むことが可能である。
【0033】
判定714に戻ると、時刻がCPU利用期限以内である場合、方法は、ブロック718に進むことが可能であり、電力コントローラが、Alpha(変数)、IIR(フィルタ)、およびCPUBusy(CPUビジー時間)に基づいて、SteadyStateCPUFreq(定常状態CPU周波数)を算出することが可能である。次に、判定720で、電力コントローラが、SteadyStateCPUFreqがMaxCPUFreq(最大限のCPU周波数)以上であるかどうかを判定することが可能である。SteadyStateCPUFreqがMaxCPUFreq以上ではない場合、方法は、ブロック722に移ることが可能であり、電力コントローラが、整数1だけ時間変数を増加させること(時間=時間+1)が可能である。その後、方法700は、判定714に戻ることが可能であり、方法700は、本明細書で説明されるとおり続くことが可能である。
【0034】
判定720に戻ると、SteadyStateCPUFreqがMaxCPUFreq以上ではない場合、方法700は、ブロック724に進むことが可能であり、電力コントローラが、SteadyStateAlpha(定常状態アルファ変数)をAlphaと等しく設定することが可能である。その後、方法700は、終了することが可能である。
【0035】
図8を参照すると、中央処理装置の電力を動的に制御する方法の第4の態様が示され、全体的に800で表されている。方法800は、ブロック802で始まることが可能である。ブロック802で、電力コントローラ、例えば、DCVS(動的クロックおよび電圧スケーリング)アルゴリズムが、SteadyStateAlpha(定常状態アルファ変数)を0に設定することが可能である。ブロック804で、電力コントローラが、SteadyStateCPUFreq(定常状態CPU周波数)を0に設定することが可能である。さらに、ブロック806で、電力コントローラが、IIR(無限インパルス応答)フィルタ値を0に設定することが可能である。ブロック808で、電力コントローラが、変数、Alphaを最大限のAlpha値、MaxAlphaと等しく設定することが可能である。ブロック808で、別の変数、BestAlphaがやはり、MaxAlphaに設定されることも可能である。また、ブロック808で、別の変数、BestHeadroomPctが、0に設定されることが可能であり、さらに変数、BestEffectiveCPUUtilizationが、0に設定されることが可能である。
【0036】
判定810に移ると、電力コントローラが、Alphaが0を超えているかどうかを判定することが可能である。0を超えていない場合、方法800は、ブロック826に進むことが可能であり、コントローラが、SteadyStateAlpha(定常状態アルファ変数)を最良のAlpha値と等しく設定することが可能である。また、コントローラは、定常状態ヘッドルーム変数を最良のヘッドルーム値に設定することが可能である。その後、方法800は、終了することが可能である。
【0037】
判定810に戻ると、Alphaが0を超えている場合、方法800は、ブロック812に移ることが可能である。ブロック812で、電力コントローラが、HeadroomPCT(ヘッドルームパーセンテージ)変数を1に設定することが可能である。その後、判定814で、電力コントローラが、ヘッドルームパーセンテージがCPU利用率未満であるかどうかどうかを判定することが可能である。CPU利用率未満ではない場合、方法は、ブロック816に移ることが可能であり、電力コントローラが、整数1だけAlphaを減少させること(Alpha=Alpha-1)が可能である。次に、方法800は、判定810に戻ることが可能であり、方法800は、本明細書で説明されるとおり進むことが可能である。
【0038】
判定814に戻ると、ヘッドルームパーセンテージがCPU利用率未満である場合、方法は、ブロック818に進むことが可能であり、電力コントローラが、有効CPU利用率が最良の有効CPU利用率を超えているかどうかを判定することが可能である。最良の有効CPU利用率を超えていない場合、方法800は、ブロック820に移ることが可能であり、電力コントローラが、整数1だけヘッドルームパーセンテージ変数を増加させること(HeadroomPCT=HeadroomPCT+1)が可能である。その後、方法800は、判定814に戻ることが可能であり、方法800は、本明細書で説明されるとおり続くことが可能である。
【0039】
判定818に戻ると、有効CPU利用率が、最良の有効CPU利用率を超えている場合、方法800は、判定822に進むことが可能であり、コントローラが、例えば、後段で説明する図10に示される方法ステップを使用して、フィルタが十分に迅速に応答しているかどうかを判定することが可能である。十分に迅速に応答してはいない場合、方法800は、ブロック820に戻ることが可能であり、本明細書で説明されるとおり続くことが可能である。十分に迅速に応答している場合、方法800は、ブロック824に進むことが可能であり、コントローラが、BestEffectiveCPUUtilizationをEffectiveCPUUtilizationと等しく設定することが可能である。或る態様において、EffectiveCPUUtilizationは、後段で説明する図9に示されるとおり算出されることが可能である。ブロック824で、BestAlphaが、Alphaの値に設定されることが可能であり、BestHeadRoomPctが、HeadroomPCTの値に設定されることが可能である。ブロック824から、方法800は、ブロック820に戻ることが可能であり、方法800は、その後、本明細書で説明されるとおり進むことが可能である。
【0040】
次に図9を参照すると、EffectiveCPUUtilizationを計算する方法が示されており、ブロック902で開始する。ブロック902で、EffectiveCPUUtilizationが、0に設定される。次に、判定904で、現在のCPUUtilizationが、HeadroomPCT(ヘッドルームパーセンテージ)を超えているかどうかが判定されることが可能である。HeadroomPCTを超えていない場合、方法900は、終了することが可能である。HeadroomPCTを超えている場合、方法900は、ブロック906に進むことが可能であり、例えば、以下の式を使用して、EffectiveCPUUtilizationが算出されることが可能である。すなわち、
EffectiveCPUUtilization=((maxFreq*CPUUtilizationPct)/EffectiveFrequency
ただし、
maxFreq=最大限の周波数、
CPUUtilizationPct=現在のCPU利用パーセンテージ、および
EffectiveFrequency=以下の式、すなわち、
EffectiveFrequency=(((maxFreq+minFreq>>アルファ))/CPUUtilizationPct-HeadroomPCT))*100)
から算出される有効周波数であり、
ただし、
maxFreq=最大限の周波数、
minFreq=最小限の周波数、
アルファ=フィルタ変数、
CPUUtilizationPct=現在のCPU利用パーセンテージ、および
HeadroomPCT=現在のヘッドルームパーセンテージ、
>>=右シフトである。
【0041】
ブロック906でEffectiveCPUUtilizationが算出された後、方法900は、終了することが可能である。
【0042】
図10を参照すると、フィルタが十分に迅速に応答しているかどうかを判定する方法が示され、全体的に1000で表されている。ブロック1002で始まり、ビジー時間変数、BusyMSが、(CPUUtilizationDeadline*CPUUtilizationPct)/100に設定される。ブロック1004で、アイドル時間変数、IdleMSが、(CPUUtilization-BusyMS)に設定されることが可能である。1006で、パフォーマンスレベル変数、pLevelが、0に設定されることが可能である。
【0043】
ブロック1008に移ると、定常状態フィルタ、IIRが、((2^(IIR_Size-アルファ))-1)に設定されることが可能である。ブロック1010で、IIR2Freqが、最大限の周波数、maxFreqを超えているかどうかが判定されることが可能である。IIR2FreqがmaxFreqを超えていない場合、方法1000は、ブロック1012に移ることが可能であり、フィルタが所定の時間内に応答していること、例えば、フィルタが十分に迅速に応答していることが示されることが可能である。その後、方法1000は、終了することが可能である。
【0044】
判定1010に戻ると、IIR2Freqが最大限の周波数未満である場合、方法1000は、ブロック1014に進むことが可能であり、定常状態IIR値が、0に設定されることが可能である。その後、BusyMSが0を超えており、かつIIR2FreqがmaxFreq未満であるかどうかが判定されることが可能である。BusyMSが0を超えていない、またはIIR2FreqがmaxFreq未満ではない場合、方法1000は、ブロック1012に進むことが可能であり、方法1000は、本明細書で説明されるとおり続くことが可能である。BusyMSが0を超えており、かつIIR2FreqがmaxFreq未満である場合、方法1000は、判定1018に進むことが可能であり、IdleMSが0を超えているかどうかが判定されることが可能である。IdleMSが0を超えている場合、方法1000は、ブロック1020に移ることが可能であり、busyPulse値が、ceiling(busyMS/idleMS)と等しく設定され、ただし、ceilingは、(busyMS/idleMS)が0でない小数部分を含む場合、次に高い整数値まで切り上げることを意味する。また、idlePulse値が、ceiling(idleMS/busyMS)と等しく設定される。その後、ブロック1022で、UpdateIIRBusy方法が、それまでに計算された整数のビジーサイクルに関して定常状態IIRを更新するために、実行されることが可能である。例えば、UpdateIIRBusy方法は、図12に示されるUpdateIIRBusy方法であることが可能である。さらに、UpdateIIRIdle方法が、それまでに計算された整数のアイドルサイクルに関して定常状態IIRを更新するために、実行されることが可能である。例えば、UpdateIIRIdle方法は、図11に示されるUpdateIIRIdle方法であることが可能である。ブロック1022で、BusyMS値が、BusyPulse値だけ減らされることが可能であり、さらにIdleMS値が、IdlePulse値だけ減らされることが可能である。その後、方法1000は、判定1016に戻ることが可能であり、方法1000は、本明細書で説明されるとおり続くことが可能である。
【0045】
図11は、全体的に1100で表されるUpdateIIRIdle方法を示す。方法1100は、ブロック1102で、UpdateIIRIdle方法が実行されると、以下のステップが実行されることが可能なDo Loopを開始することが可能である。判定1104で、持続時間変数が0を超えているかどうかが判定されることが可能である。0を超えていない場合、方法1100は、終了することが可能である。そうではなく、持続時間が0を超えている場合、方法1100は、ブロック1106に進むことが可能であり、フィルタ値IIRが、IIR>>アルファだけ減らされること(IIR=IIR-(IIR>>アルファ))が可能である(例えば、整数IIR値をアルファビットだけ右シフトする)。その後、方法1100は、ブロック1108に移ることが可能であり、持続時間が、整数1だけ減らされること(持続時間=持続時間-1)が可能である。次に、方法1100は、判定1104に戻ることが可能であり、本明細書で説明されるとおり続くことが可能である。
【0046】
図12は、全体的に1200で表されるUpdateIIRBusy方法を示す。方法1200は、ブロック1202で、UpdateIIRBusy方法が実行されると、以下のステップが実行されることが可能なDo Loopを開始することが可能である。判定1204で、持続時間変数が0を超えているかどうかが判定されることが可能である。0を超えていない場合、方法1200は、終了することが可能である。そうではなく、持続時間が0を超えている場合、方法1200は、ブロック1206に進むことが可能であり、フィルタ値IIRが、以下の式を使用して算出されることが可能である。すなわち、
IIR=(IIR-(IIR>>アルファ))+((1<<(IIR_Size-アルファ))-1
ただし、
IIR=フィルタ値、
アルファ=変数、および
IIR_Size=IIRのサイズ、
X>>Y=整数値XをYビットだけ右シフトする(すなわち、X/(2^Y))、
X<<Y=整数値XをYビットだけ左シフトする(すなわち、X*(2^Y))である。
【0047】
ブロック1206でIIRが算出された後、方法1200は、ブロック1208に移ることが可能であり、持続時間が、整数1だけ減らされること(持続時間=持続時間-1)が可能である。次に、方法1200は、判定1204に戻ることが可能であり、本明細書で説明されるとおり続くことが可能である。
【0048】
本明細書で説明される方法ステップは、必ずしも説明されるとおりの順序で実行されなくてもよいことを理解されたい。さらに、「その後」、「すると」、「次に」などの語は、ステップの順序を限定することを意図していない。これらの語は、単に、方法ステップの説明において読者を案内するために使用される。さらに、本明細書で説明される方法は、PCD(ポータブルコンピューティングデバイス)上で実行可能であるものとして説明される。PCDは、モバイル電話デバイス、携帯情報端末デバイス、スマートブックコンピューティングデバイス、ネットブックコンピューティングデバイス、ラップトップコンピューティングデバイス、デスクトップコンピューティングデバイス、または以上の組合せであることが可能である。
【0049】
本明細書で説明されるシステムおよび方法は、DCVSが作業負荷に大きく遅れ過ぎて、タスクを失敗させることを防止する方途をもたらす。本システムおよび本方法は、定常状態パフォーマンス保証を利用する。定常状態パフォーマンス保証は、CPUが指定されたCPU利用率、すなわち、ビジーパーセンテージを超えることが可能である最大限の時間(期限とも呼ばれる)であることが可能である。定常状態パフォーマンス保証を使用して、QoS要件を満たすためのDCVSアルゴリズムの場当たり的な分析、および関連するパフォーマンス特性が、解消されることが可能である。
【0050】
定常状態パフォーマンス構成要素は、フィルタとしてモデル化されることが可能であり、さらにフィルタパラメータは、フィルタの応答性が定常状態CPU利用限度および定常状態CPU利用限度期限を守ることが保証されるように計算されることが可能である。例えば、或る特定の態様において、1000ミリ秒期限内で最大90%(90パーセント)のCPU利用率の要件を守るのに、1ミリ秒粒度のビジー/アイドル入力を有する単純なIIRフィルタを26というアルファで構成することが可能であり得る(パフォーマンスレベルに依存して)。或る特定の態様において、アルファの正しい値を算出するのに、フィルタが、最低の値に設定されることが可能であり、次に、CPU利用限度に合うようにビジー/アイドル連鎖が実行されてフィルタに入れられることが可能である。次に、可能な各アルファに関して、CPU利用期限を守る最大のアルファが選択されることが可能である。
【0051】
1つまたは複数の例示的な態様において、説明される機能は、ハードウェアで、ソフトウェアで、ファームウェアで、または以上の任意の組合せで実施されることが可能である。ソフトウェアで実施される場合、それらの機能は、マシン可読媒体、すなわち、コンピュータ可読媒体などのコンピュータプログラム製品上に格納される、またはそのようなコンピュータプログラム製品上の1つまたは複数の命令もしくはコードとして伝送されることが可能である。コンピュータ可読媒体には、1つの場所から別の場所にコンピュータプログラムを移すことを円滑にする任意の媒体を含め、コンピュータ記憶媒体と通信媒体の両方が含まれる。記憶媒体は、コンピュータによってアクセスされることが可能である任意の利用可能な媒体であることが可能である。例として、限定としてではなく、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態で所望されるプログラムコードを伝送する、または格納するのに使用されることが可能であり、さらにコンピュータによってアクセスされることが可能である他の任意の媒体を備えることが可能である。また、任意の接続が、コンピュータ可読媒体と適切に呼ばれる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、より対線、DSL(デジタル加入者線)、あるいは赤外線、電波、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他の遠隔ソースから伝送される場合、その同軸ケーブル、光ファイバケーブル、より対線、DSL、あるいは赤外線、電波、およびマイクロ波などのワイヤレス技術が、媒体の定義に含められる。本明細書で使用されるディスク(Disk)およびディスク(Disc)には、CD(コンパクトディスク)、レーザディスク、光ディスク、DVD(デジタルバーサタイルディスク)、フロッピー(登録商標)ディスク、およびブルーレイディスクが含まれ、ただし、ディスク(Disk)は、通常、データを磁気的に再現するのに対して、ディスク(Disc)は、データを、レーザを使用して光学的に再現する。また、以上の媒体の組合せも、コンピュータ可読媒体の範囲に含められなければならない。
【0052】
選択された態様が、図示され、詳細に説明されてきたが、添付の特許請求の範囲によって規定される、本発明の趣旨および範囲を逸脱することなく、様々な代替および変更が行われ得ることが理解されよう。
【符号の説明】
【0053】
100、320 ポータブルコンピューティングデバイス
102 筐体
104 上側筐体部分
106 下側筐体部分
108 ディスプレイ
110 トラックボール入力デバイス
112 電源オンボタン
114 電源オフボタン
116 インジケータライト
118 スピーカ
120 マルチボタンキーボード
122 リセットボタン
322 オンチップのシステム
324、402 マルチコアCPU
325、326、327、410、412、414 CPUコア
328 ディスプレイコントローラ
330 タッチスクリーンコントローラ
334 ビデオエンコーダ
336 ビデオ増幅器
338 ビデオポート
340 USBコントローラ
342 USBポート
344、404 メモリ
346 SIMカード
348 デジタルカメラ
350 ステレオオーディオCODEC
352 オーディオ増幅器
354、356 ステレオスピーカ
358 マイクロフォン増幅器
360 マイクロフォン
362 ラジオチューナ
364 アンテナ
366 ステレオヘッドフォン
368 トランシーバ
370 スイッチ
372 アンテナ
374 キーパッド
376 モノラルヘッドセット
378 振動デバイス
380 電源
388 ネットワークカード
400 システム
416、417、418 アルゴリズム
420 オペレーティングシステム
422 スケジューラ
424、426、428 実行キュー
430、432、434 アプリケーション
436 タスク
440 並列性モニタ

【特許請求の範囲】
【請求項1】
中央処理装置を動的に制御する方法であって、
CPUがいつ定常状態に入るかを判定するステップと、
前記CPUが定常状態に入ると、前記CPUに関する最適な周波数を計算するステップと、
定常状態CPU利用率を保証するステップと、
定常状態CPU利用期限を保証するステップとを備える方法。
【請求項2】
応答性値を可能な最小の応答性値に設定するステップをさらに備える請求項1に記載の方法。
【請求項3】
前記応答性値が可能な最速の応答性値より高いかどうかを判定するステップをさらに備える請求項2に記載の方法。
【請求項4】
前記応答性が前記可能な最速の応答性値より高い場合、時間変数を1に設定するステップをさらに備える請求項3に記載の方法。
【請求項5】
前記時間変数がCPU利用期限以内であるかどうかを判定するステップをさらに備える請求項4に記載の方法。
【請求項6】
前記時間変数が前記CPU利用期限以内である場合、前記応答性値を増加させるステップをさらに備える請求項5に記載の方法。
【請求項7】
前記時間変数が前記CPU利用期限以内である場合、定常状態CPU周波数を算出するステップをさらに備える請求項5に記載の方法。
【請求項8】
前記定常状態CPU周波数が最大限のCPU周波数を超えているかどうかを判定するステップをさらに備える請求項7に記載の方法。
【請求項9】
前記定常状態CPU周波数が前記最大限のCPU周波数を超えてはいない場合、前記時間変数を整数1だけ増加させるステップをさらに備える請求項8に記載の方法。
【請求項10】
前記定常状態CPU周波数が前記最大限のCPU周波数を超えている場合、定常状態応答性変数を前記応答性値と等しく設定するステップをさらに備える請求項8に記載の方法。
【請求項11】
CPUがいつ定常状態に入るかを判定するための手段と、
前記CPUが定常状態に入ると、前記CPUに関する最適な周波数を計算するための手段と、
定常状態CPU利用率を保証するための手段と、
定常状態CPU利用期限を保証するための手段とを備えるワイヤレスデバイス。
【請求項12】
応答性値を可能な最小の応答性値に設定するための手段をさらに備える請求項11に記載のワイヤレスデバイス。
【請求項13】
前記応答性値が可能な最速の応答性値より高いかどうかを判定するための手段をさらに備える請求項12に記載のワイヤレスデバイス。
【請求項14】
前記応答性が前記可能な最速の応答性値より高い場合、時間変数を1に設定するための手段をさらに備える請求項13に記載のワイヤレスデバイス。
【請求項15】
前記時間変数がCPU利用期限以内であるかどうかを判定するための手段をさらに備える請求項14に記載のワイヤレスデバイス。
【請求項16】
前記時間変数が前記CPU利用期限以内である場合、前記応答性値を増加させるための手段をさらに備える請求項15に記載のワイヤレスデバイス。
【請求項17】
前記時間変数が前記CPU利用期限以内である場合、定常状態CPU周波数を算出するための手段をさらに備える請求項15に記載のワイヤレスデバイス。
【請求項18】
前記定常状態CPU周波数が最大限のCPU周波数を超えているかどうかを判定するための手段をさらに備える請求項17に記載のワイヤレスデバイス。
【請求項19】
前記定常状態CPU周波数が前記最大限のCPU周波数を超えてはいない場合、前記時間変数を整数1だけ増加させるための手段をさらに備える請求項18に記載のワイヤレスデバイス。
【請求項20】
前記定常状態CPU周波数が前記最大限のCPU周波数を超えている場合、定常状態応答性変数を前記応答性値と等しく設定するための手段をさらに備える請求項18に記載のワイヤレスデバイス。
【請求項21】
CPUがいつ定常状態に入るかを判定し、
前記CPUが定常状態に入ると、前記CPUに関する最適な周波数を計算し、
定常状態CPU利用率を保証し、さらに
定常状態CPU利用期限を保証するように動作可能なプロセッサを備えるワイヤレスデバイス。
【請求項22】
前記プロセッサは、応答性値を可能な最小の応答性値に設定するようにさらに動作可能である請求項21に記載のワイヤレスデバイス。
【請求項23】
前記プロセッサは、前記応答性値が可能な最速の応答性値より高いかどうかを判定するようにさらに動作可能である請求項22に記載のワイヤレスデバイス。
【請求項24】
前記プロセッサは、前記応答性が前記可能な最速の応答性値より高い場合、時間変数を1に設定するようにさらに動作可能である請求項23に記載のワイヤレスデバイス。
【請求項25】
前記プロセッサは、前記時間変数がCPU利用期限以内であるかどうかを判定するようにさらに動作可能である請求項24に記載のワイヤレスデバイス。
【請求項26】
前記プロセッサは、前記時間変数が前記CPU利用期限以内である場合、前記応答性値を増加させるようにさらに動作可能である請求項25に記載のワイヤレスデバイス。
【請求項27】
前記プロセッサは、前記時間変数が前記CPU利用期限以内である場合、定常状態CPU周波数を算出するようにさらに動作可能である請求項25に記載のワイヤレスデバイス。
【請求項28】
前記プロセッサは、前記定常状態CPU周波数が最大限のCPU周波数を超えているかどうかを判定するようにさらに動作可能である請求項27に記載のワイヤレスデバイス。
【請求項29】
前記プロセッサは、前記定常状態CPU周波数が前記最大限のCPU周波数を超えてはいない場合、前記時間変数を整数1だけ増加させるようにさらに動作可能である請求項28に記載のワイヤレスデバイス。
【請求項30】
前記プロセッサは、前記定常状態CPU周波数が前記最大限のCPU周波数を超えている場合、定常状態応答性変数を前記応答性値と等しく設定するようにさらに動作可能である請求項28に記載のワイヤレスデバイス。
【請求項31】
CPUがいつ定常状態に入るかを判定するための少なくとも1つの命令と、
前記CPUが定常状態に入ると、前記CPUに関する最適な周波数を計算するための少なくとも1つの命令と、
定常状態CPU利用率を保証するための少なくとも1つの命令と、
定常状態CPU利用期限を保証するための少なくとも1つの命令とを備えるメモリ媒体。
【請求項32】
応答性値を可能な最小の応答性値に設定するための少なくとも1つの命令をさらに備える請求項31に記載のメモリ媒体。
【請求項33】
前記応答性値が可能な最速の応答性値より高いかどうかを判定するための少なくとも1つの命令をさらに備える請求項32に記載のメモリ媒体。
【請求項34】
前記応答性が前記可能な最速の応答性値より高い場合、時間変数を1に設定するための少なくとも1つの命令をさらに備える請求項33に記載のメモリ媒体。
【請求項35】
前記時間変数がCPU利用期限以内であるかどうかを判定するための少なくとも1つの命令をさらに備える請求項34に記載のメモリ媒体。
【請求項36】
前記時間変数が前記CPU利用期限以内である場合、前記応答性値を増加させるための少なくとも1つの命令をさらに備える請求項35に記載のメモリ媒体。
【請求項37】
前記時間変数が前記CPU利用期限以内である場合、定常状態CPU周波数を算出するための少なくとも1つの命令をさらに備える請求項35に記載のメモリ媒体。
【請求項38】
前記定常状態CPU周波数が最大限のCPU周波数を超えているかどうかを判定するための少なくとも1つの命令をさらに備える請求項37に記載のメモリ媒体。
【請求項39】
前記定常状態CPU周波数が前記最大限のCPU周波数を超えてはいない場合、前記時間変数を整数1だけ増加させるための少なくとも1つの命令をさらに備える請求項38に記載のメモリ媒体。
【請求項40】
前記定常状態CPU周波数が前記最大限のCPU周波数を超えている場合、定常状態応答性変数を前記応答性値と等しく設定するための少なくとも1つの命令をさらに備える請求項38に記載のメモリ媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公表番号】特表2013−513897(P2013−513897A)
【公表日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2012−544630(P2012−544630)
【出願日】平成22年12月8日(2010.12.8)
【国際出願番号】PCT/US2010/059550
【国際公開番号】WO2011/084332
【国際公開日】平成23年7月14日(2011.7.14)
【出願人】(507364838)クアルコム,インコーポレイテッド (446)
【Fターム(参考)】