(57)【要約】  中央処理装置における電力を制御する方法が、開示される。この方法は、遷移パフォーマンス期限が切れた後、より高いCPU周波数に移ること、アイドル状態に入ること、および有効遷移割当量に基づいて、遷移パフォーマンス期限をリセットすることを含むことが可能である。
2013527507.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置における電力を制御する方法であって、
遷移パフォーマンス期限が切れた後、より高いCPU周波数に移るステップと、
アイドル状態に入るステップと、
有効遷移割当量に基づいて、前記遷移パフォーマンス期限をリセットするステップとを備える方法。
【請求項２】
前記アイドル状態を抜けるステップをさらに備える請求項1に記載の方法。
【請求項３】
CPU周波数が、遷移期限に間に合うように増加したかどうかを判定するステップをさらに備える請求項2に記載の方法。
【請求項４】
遷移期限に間に合うように、前記CPUが増加していない場合にタイマを再スケジュールするステップをさらに備える請求項3に記載の方法。
【請求項５】
次回のビジーサイクルに関する次回のCPU周波数を算出するステップをさらに備える請求項1に記載の方法。
【請求項６】
前記有効遷移割当量は、前記遷移応答期限に次に高いCPU周波数を掛け、さらに結果を、前記次に高いCPU周波数ステップと前記次回の周波数の差で割ることによって算出され、前記次に高いCPU周波数は、前記次回の周波数より1ステップ高い請求項5に記載の方法。
【請求項７】
前記有効遷移割当量にオーバーヘッドを加算するステップをさらに備える請求項6に記載の方法。
【請求項８】
前記オーバーヘッドは、クロック切換えオーバーヘッド、クロックスケジューリングオーバーヘッド、電圧変更オーバーヘッド、またはクロック切換えオーバーヘッドとクロックスケジューリングオーバーヘッドと電圧変更オーバーヘッドの組合せを備える請求項7に記載の方法。
【請求項９】
より高いCPU周波数にジャンプする期限を、アイドル終了時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するステップをさらに備える請求項8に記載の方法。
【請求項１０】
より高いCPU周波数にジャンプする期限を、現在の時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するステップをさらに備える請求項8に記載の方法。
【請求項１１】
遷移パフォーマンス期限が切れた後、より高いCPU周波数に移るための手段と、
アイドル状態に入るための手段と、
有効遷移割当量に基づいて、前記遷移パフォーマンス期限をリセットするための手段とを備えるデバイス。
【請求項１２】
前記アイドル状態を抜けるための手段をさらに備える請求項11に記載のデバイス。
【請求項１３】
CPU周波数が、遷移期限に間に合うように増加したかどうかを判定するための手段をさらに備える請求項12に記載のデバイス。
【請求項１４】
遷移期限に間に合うように、前記CPUが増加していない場合にタイマを再スケジュールするための手段をさらに備える請求項13に記載のデバイス。
【請求項１５】
次回のビジーサイクルに関する次回のCPU周波数を算出するための手段をさらに備える請求項11に記載のデバイス。
【請求項１６】
前記有効遷移割当量は、前記遷移応答期限に次に高いCPU周波数を掛け、さらに結果を、前記次に高いCPU周波数ステップと前記次回の周波数の差で割ることによって算出され、前記次に高いCPU周波数は、前記次回の周波数より1ステップ高い請求項15に記載のデバイス。
【請求項１７】
前記有効遷移割当量にオーバーヘッドを加算するための手段をさらに備える請求項16に記載のデバイス。
【請求項１８】
前記オーバーヘッドは、クロック切換えオーバーヘッド、クロックスケジューリングオーバーヘッド、電圧変更オーバーヘッド、またはクロック切換えオーバーヘッドとクロックスケジューリングオーバーヘッドと電圧変更オーバーヘッドの組合せを備える請求項17に記載のデバイス。
【請求項１９】
より高いCPU周波数にジャンプする期限を、アイドル終了時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するための手段をさらに備える請求項18に記載のデバイス。
【請求項２０】
より高いCPU周波数にジャンプする期限を、現在の時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するための手段をさらに備える請求項18に記載のデバイス。
【請求項２１】
遷移パフォーマンス期限が切れた後、より高いCPU周波数に移り、
アイドル状態に入り、さらに
有効遷移割当量に基づいて、前記遷移パフォーマンス期限をリセットするように動作可能なプロセッサを備えるデバイス。
【請求項２２】
前記プロセッサは、前記アイドル状態を抜けるようにさらに動作可能である請求項21に記載のデバイス。
【請求項２３】
前記プロセッサは、CPU周波数が、遷移期限に間に合うように増加したかどうかを判定するようにさらに動作可能である請求項22に記載のデバイス。
【請求項２４】
前記プロセッサは、遷移期限に間に合うように、前記CPUが増加していない場合にタイマを再スケジュールするようにさらに動作可能である請求項23に記載のデバイス。
【請求項２５】
前記プロセッサは、次回のビジーサイクルに関する次回のCPU周波数を算出するようにさらに動作可能である請求項21に記載のデバイス。
【請求項２６】
前記有効遷移割当量は、前記遷移応答期限に次に高いCPU周波数を掛け、さらに結果を、前記次に高いCPU周波数ステップと前記次回の周波数の差で割ることによって算出され、前記次に高いCPU周波数は、前記次回の周波数より1ステップ高い請求項25に記載のデバイス。
【請求項２７】
前記プロセッサは、前記有効遷移割当量にオーバーヘッドを加算するようにさらに動作可能である請求項26に記載のデバイス。
【請求項２８】
前記オーバーヘッドは、クロック切換えオーバーヘッド、クロックスケジューリングオーバーヘッド、電圧変更オーバーヘッド、またはクロック切換えオーバーヘッドとクロックスケジューリングオーバーヘッドと電圧変更オーバーヘッドの組合せを備える請求項27に記載のデバイス。
【請求項２９】
前記プロセッサは、より高いCPU周波数にジャンプする期限を、アイドル終了時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するようにさらに動作可能である請求項28に記載のデバイス。
【請求項３０】
前記プロセッサは、より高いCPU周波数にジャンプする期限を、現在の時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するようにさらに動作可能である請求項28に記載のデバイス。
【請求項３１】
遷移パフォーマンス期限が切れた後、より高いCPU周波数に移るための少なくとも1つの命令と、
アイドル状態に入るための少なくとも1つの命令と、
有効遷移割当量に基づいて、前記遷移パフォーマンス期限をリセットするための少なくとも1つの命令とを実行させるためのプログラムを記録したコンピュータ読み取り可能なメモリ媒体。
【請求項３２】
前記アイドル状態を抜けるための少なくとも1つの命令をさらに備える請求項31に記載のメモリ媒体。
【請求項３３】
CPU周波数が、遷移期限に間に合うように増加したかどうかを判定するための少なくとも1つの命令をさらに備える請求項32に記載のメモリ媒体。
【請求項３４】
遷移期限に間に合うように、前記CPUが増加していない場合にタイマを再スケジュールするための少なくとも1つの命令をさらに備える請求項33に記載のメモリ媒体。
【請求項３５】
次回のビジーサイクルに関する次回のCPU周波数を算出するための少なくとも1つの命令をさらに備える請求項31に記載のメモリ媒体。
【請求項３６】
前記有効遷移割当量は、前記遷移応答期限に次に高いCPU周波数を掛け、さらに結果を、前記次に高いCPU周波数ステップと前記次回の周波数の差で割ることによって算出され、前記次に高いCPU周波数は、前記次回の周波数より1ステップ高い請求項35に記載のメモリ媒体。
【請求項３７】
前記有効遷移割当量にオーバーヘッドを加算するための少なくとも1つの命令をさらに備える請求項36に記載のメモリ媒体。
【請求項３８】
前記オーバーヘッドは、クロック切換えオーバーヘッド、クロックスケジューリングオーバーヘッド、電圧変更オーバーヘッド、またはクロック切換えオーバーヘッドとクロックスケジューリングオーバーヘッドと電圧変更オーバーヘッドの組合せを備える請求項37に記載のメモリ媒体。
【請求項３９】
より高いCPU周波数にジャンプする期限を、アイドル終了時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するための少なくとも1つの命令をさらに備える請求項38に記載のメモリ媒体。
【請求項４０】
より高いCPU周波数にジャンプする期限を、現在の時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するための少なくとも1つの命令をさらに備える請求項38に記載のメモリ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、参照により内容が本明細書に完全に組み込まれている、2009年12月16日に出願した「SYSTEM AND METHOD OF DYNAMICALLY CONTROLLING POWER IN A CENTRAL PROCESSING UNIT」という名称の米国特許仮出願第61/286,991号の優先権を主張するものである。
【背景技術】
【０００２】
PCD(ポータブルコンピューティングデバイス)は、いたるところに存在する。これらのデバイスには、セルラ電話機、PDA(携帯情報端末)、ポータブルゲームコンソール、パームトップコンピュータ、およびその他のポータブル電子デバイスが含まれ得る。これらのデバイスの一次機能に加えて、多くのデバイスは、周辺機能を含む。例えば、セルラ電話機は、セルラ電話通話を行う一次機能と、スチルカメラ、ビデオカメラ、GPS(全地球測位システム)ナビゲーション、ウェブブラウジング、電子メールを送受信すること、テキストメッセージを送受信すること、プッシュツートーク能力などの周辺機能とを含み得る。そのようなデバイスの機能が増大するにつれ、そのような機能をサポートするのに要求されるコンピューティング能力または処理能力も増大する。さらに、コンピューティング能力が増大するにつれ、そのコンピューティング能力を提供するプロセッサ、または複数のプロセッサを効果的に管理する、より大きな必要性が存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
したがって、必要とされているのは、マルチコアCPU内の電力を制御する改良された方法である。
【課題を解決するための手段】
【０００４】
図において、同様の参照符号は、特に明記しない限り、様々な図面のすべてにわたって同様の部分を指す。
【図面の簡単な説明】
【０００５】
【図１】閉じられた位置におけるPCD(ポータブルコンピューティングデバイス)の第1の態様を示す前方平面図である。
【図２】開かれた位置におけるPCDの第1の態様を示す前方平面図である。
【図３】PCDの第2の態様を示すブロック図である。
【図４】処理システムを示すブロック図である。
【図５】CPU内の電力を動的に制御する方法の第1の態様を示す流れ図である。
【図６】CPU内の電力を動的に制御する方法の第2の態様の第1の部分を示す流れ図である。
【図７】マルチコアCPU内の電力を動的に制御する方法の第2の態様の第2の部分を示す流れ図である。
【図８】経時的にプロットされたDCVS(動的クロックおよび電圧スケーリング)によって制御されるCPU周波数を示す例示的なグラフである。
【図９】様々なパフォーマンスレベルに関する有効遷移応答時間を示す例示的なグラフである。
【発明を実施するための形態】
【０００６】
「例示的」という語は、本明細書では、「例、実例、または例示の役割をする」を意味するように使用される。本明細書で「例示的」として説明されるいずれの態様も、必ずしも他の態様より好ましい、または有利であると解釈されるべきではない。
【０００７】
この説明において、「アプリケーション」という用語には、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルが含まれることも可能である。さらに、本明細書で言及される「アプリケーション」には、開かれる必要がある可能性がある文書、またはアクセスされる必要がある他のデータファイルなどの、実行可能でない性質のファイルが含まれることも可能である。
【０００８】
「コンテンツ」という用語には、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの実行可能なコンテンツを有するファイルが含まれることも可能である。さらに、本明細書で言及される「コンテンツ」には、開かれる必要がある可能性がある文書、またはアクセスされる必要がある他のデータファイルなどの、実行可能でない性質のファイルが含まれることも可能である。
【０００９】
この説明において使用される「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアであるコンピュータ関連のエンティティを指すことを意図している。例えば、構成要素は、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータであることが可能であるが、以上には限定されない。例として、コンピューティングデバイス上で実行されているアプリケーションとそのコンピューティングデバイスがともに、構成要素であることが可能である。1つまたは複数の構成要素が、プロセス内、および/または実行のスレッド内に存在することが可能であり、さらに構成要素は、1つのコンピュータ上に局在化されること、および/または2つ以上のコンピュータの間に分散されることが可能である。さらに、これらの構成要素は、様々なデータ構造が格納されている様々なコンピュータ可読媒体から実行されることが可能である。これらの構成要素は、1つまたは複数のデータパケットを有する信号に従うなどして、ローカルプロセスおよび/または遠隔プロセスを介して通信することが可能である(例えば、1つの構成要素からのデータが、その信号によってローカルシステムまたは分散システムにおける別の構成要素と対話して、さらに/またはインターネットなどのネットワークを介して他のシステムと対話して)。
【００１０】
図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(発光ダイオード)であることが可能である。
【００１１】
或る特定の態様において、図2に示されるとおり、上側筐体部分104は、下側筐体部分106に対して動くことが可能である。具体的には、上側筐体部分104は、下側筐体部分106に対してスライド可能であり得る。図2に示されるとおり、下側筐体部分106は、マルチボタンキーボード120を含むことが可能である。或る特定の態様において、マルチボタンキーボード120は、標準のQWERTYキーボードであることが可能である。マルチボタンキーボード120は、上側筐体部分104が下側筐体部分106に対して動かされると、あらわになることが可能である。図2は、PCD100が、下側筐体部分106上にリセットボタン122を含む可能性があることをさらに示す。
【００１２】
図3を参照すると、PCD(ポータブルコンピューティングデバイス)の例示的な、限定的でない態様が示され、全体的に320で表されている。図示されるとおり、PCD320は、マルチコアCPU324を含むオンチップのシステム322を含む。マルチコアCPU324は、第0のコア325と、第1のコア326と、第Nのコア327とを含むことが可能である。
【００１３】
図3に示されるとおり、ディスプレイコントローラ328およびタッチスクリーンコントローラ330が、マルチコアCPU324に結合される。オンチップのシステム322の外部にあるタッチスクリーンディスプレイ332が、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合される。
【００１４】
図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(相補性金属酸化膜半導体)カメラである。
【００１５】
図3にさらに示されるとおり、ステレオオーディオCODEC350が、マルチコアCPU324に結合されることが可能である。さらに、オーディオ増幅器352が、ステレオオーディオCODEC350に結合されることが可能である。或る例示的な態様において、第1のステレオスピーカ354、および第2のステレオスピーカ356が、オーディオ増幅器352に結合される。図3は、マイクロフォン増幅器358が、ステレオオーディオCODEC350に結合されることも可能であることを示す。さらに、マイクロフォン360が、マイクロフォン増幅器358に結合されることが可能である。或る特定の態様において、FM(周波数変調)ラジオチューナ362が、ステレオオーディオCODEC350に結合されることが可能である。また、FMアンテナ364が、FMラジオチューナ362に結合される。さらに、ステレオヘッドフォン366が、ステレオオーディオCODEC350に結合されることが可能である。
【００１６】
図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電源である。
【００１７】
図3は、PCD320が、データネットワーク、例えば、ローカルエリアネットワーク、パーソナルエリアネットワーク、または他の任意のネットワークにアクセスするのに使用され得るネットワークカード388を含むことも可能であることをさらに示す。ネットワークカード388は、Bluetooth（登録商標）ネットワークカード、WiFiネットワークカード、PAN(パーソナルエリアネットワーク)カード、PeANUT(パーソナルエリアネットワーク超低電力技術)ネットワークカード、または当技術分野でよく知られている他の任意のネットワークカードであることが可能である。さらに、ネットワークカード388は、チップに組み込まれることが可能であり、すなわち、ネットワークカード388は、チップ内の完全なソリューションであってもよく、別個のネットワークカード388ではなくてもよい。
【００１８】
図3に示されるとおり、タッチスクリーンディスプレイ332、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカ354、第2のステレオスピーカ356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノラルヘッドセット376、振動器378、および電源380は、オンチップのシステム322の外部にある。
【００１９】
或る特定の態様において、本明細書で説明される方法ステップの1つまたは複数が、コンピュータプログラム命令としてメモリ344の中に格納されることが可能である。これらの命令は、本明細書で説明される方法を実行するためにマルチコアCPU324によって実行されることが可能である。さらに、マルチコアCPU324、メモリ344、またはマルチコアCPU324とメモリ344の組合せが、マルチコアCPU324内の各CPU、つまり、各コアに対する電力を動的に制御するために、本明細書で説明される方法ステップの1つまたは複数を実行するための手段の役割をすることが可能である。
【００２０】
図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上で独立に実行されることが可能である。
【００２１】
さらに、図示されるとおり、メモリ404は、メモリ404上に格納されたオペレーティングシステム420を含むことが可能である。オペレーティングシステム420は、スケジューラ422を含むことが可能であり、さらにスケジューラ422は、第1の実行キュー424と、第2の実行キュー426と、第Nの実行キュー428とを含むことが可能である。また、メモリ404は、メモリ404上に格納された第1のアプリケーション430と、第2のアプリケーション432と、第Nのアプリケーション434とを含むことも可能である。
【００２２】
或る特定の態様において、アプリケーション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からそれらのタスク、スレッド、またはタスクとスレッドの組合せを取り出すことが可能である。
【００２３】
図4は、メモリ404が並列性モニタ440を格納して含むことが可能であることも示す。並列性モニタ440は、オペレーティングシステム420およびマルチコアCPU402に接続されることが可能である。具体的には、並列性モニタ440は、オペレーティングシステム420内のスケジューラ422に接続されることが可能である。
【００２４】
図5を参照すると、中央処理装置の電力を動的に制御する方法の第1の態様が示され、全体的に500で表されている。方法500は、ブロック502で、デバイスの電源がオンにされていると、以下のステップが実行されることが可能なDo Loopを開始することが可能である。
【００２５】
ブロック504で、電力コントローラ、例えば、DCVS(動的クロックおよび電圧スケーリング)アルゴリズムが、1つまたは複数のCPUを監視することが可能である。判定506で、電力コントローラが、CPUに関する遷移パフォーマンス期限が切れているかどうかを判定することが可能である。期限が切れてはいない場合、方法500は、終了することが可能である。そうではなく、遷移パフォーマンス期限が切れている場合、方法500は、ブロック508に進むことが可能であり、電力コントローラが、CPUを、より高いパフォーマンスレベル、すなわち、次に高い動作周波数に移すことが可能である。一態様において、コントローラは、CPUを最大パフォーマンスレベル、すなわち、最大CPU周波数に移すことが可能である。しかし、別の態様において、CPUは、最大パフォーマンスレベルにジャンプすることは可能ではない。CPUは、中間レベルにジャンプし、その後、最大レベルに、またはより高い別のパフォーマンスレベルに再びジャンプすることが可能である。中間ジャンプの数、およびジャンプとジャンプの間の時間が、ジャンプの頻度値を算出するのに使用されることが可能である。
【００２６】
ブロック510で、CPUが、アイドル条件に入ることが可能である。さらに、ブロック512で、遷移パフォーマンス期限が、リセットされることが可能である。ブロック514で、CPUが、アイドル条件を抜けることが可能である。判定516に移ると、電力コントローラが、次回のCPU周波数が最大CPU周波数であるかどうかを判定することが可能である。最大CPU周波数である場合、方法500は、終了することが可能である。そうではなく、CPU周波数が、最大CPU周波数ではない場合、方法は、ブロック518に進むことが可能であり、タイマが、再スケジュールされることが可能である。その後、方法500は、終了することが可能である。
【００２７】
図6を参照すると、中央処理装置の電力を動的に制御する方法の第2の態様が示され、全体的に600で表されている。ブロック602で始まり、CPU(中央処理装置)が、アイドル状態に入ることが可能である。ブロック604で、電力コントローラ、例えば、DCVS(動的クロックおよび電圧スケーリング)アルゴリズムが、StartIdleTime(アイドル開始時刻)をCurrentTime(現在の時刻)と等しく設定することが可能である。さらに、ブロック606で、電力コントローラが、EndIdleTime(アイドル終了時刻)からStartIdleTime(アイドル開始時刻)を引くことによって、BusyTime(ビジー時間)を算出することが可能である。
【００２８】
ブロック608で、CPUが、SWFI(ソフトウェア割込み待ち)状態に入ることが可能である。ブロック610で、CPUが、SWFI状態を抜けることが可能である。ブロック612に移ると、電力コントローラが、EndIdleTime(アイドル終了時刻)をCurrentTime(現在の時刻)と等しく設定することが可能である。さらに、ブロック614で、電力コントローラが、EndIdleTime(アイドル終了時刻)からアイドルStartIdleTime(開始時刻)を引くことによって、IdleTime(アイドル時間)を算出することが可能である。ブロック616で、電力コントローラが、UpdateSteadyStateFilter(更新された定常状態フィルタ)、BusyTime(ビジー時間)、およびIdleTime(アイドル時間)からCPUFreq(次回のCPU周波数)を算出することが可能である。その後、方法600は、図7のブロック702に進むことが可能である。
【００２９】
ブロック702で、電力コントローラが、以下の式を使用してEffectiveTransientBudget(有効遷移割当量)を算出することが可能である。すなわち、
EffectiveTransientBudget=(TransientResponseDeadline*NextCPUFreq)/(NextCPUFreq-CPUFreq)
ただし、
TransientResponseDeadline=遷移応答期限、すなわち、スラック割当量であり、NextCPUFreq=次回のCPU周波数より1周波数ステップ高い次のCPU周波数であり、さらにCPUFreq=次回のCPU周波数(CPUFreq)である。
【００３０】
或る特定の態様において、ClockSchedulingOverhead(クロックスケジューリングオーバーヘッド)およびClockSwitchOverhead(クロック切換えオーバーヘッド)が、EffectiveTransientBudgetに加算されることも可能である。さらに、VoltageChangeOverhead(電圧変更オーバーヘッド)が、EffectiveTransientBudgetに加算されることも可能である。ブロック704に移ると、電力コントローラが、SetJumpToFrequency(より高い周波数にジャンプする期限)を、EndIdleTime(アイドル終了時刻)にEffectiveTransientBudget(有効遷移割当量)を足した値と等しく設定することが可能である。別の態様において、ジャンプする期限は、現在の時刻に遷移割当量を足した値であることが可能である。その後、方法600は、終了することが可能である。
【００３１】
或る特定の態様において、図6および図7に関連して説明される方法600は、遷移期限が尽きるまでにCPUがDCVSによって決定された周波数に留まることが可能な時間を計算し、さらに、その時間の経過後に、より高いCPU周波数へのジャンプをスケジュールするのに使用されることが可能である。より高い周波数へのジャンプより前にアイドルに再び入った場合、スケジュールされたジャンプは、取り消されることが可能である。方法600は、より高い周波数へのジャンプを、EffectiveTransientBudgetとして算出された時間だけ遅延させることが可能である。
【００３２】
本明細書で説明される方法ステップは、必ずしも説明される順序で実行されなくてもよいことを理解されたい。さらに、「その後」、「すると」、「次に」などの語は、ステップの順序を限定することを意図していない。これらの語は、単に、方法ステップの説明において読者を案内するために使用される。さらに、本明細書で説明される方法は、PCD(ポータブルコンピューティングデバイス)上で実行可能であるものとして説明される。PCDは、モバイル電話デバイス、携帯情報端末デバイス、スマートブックコンピューティングデバイス、ネットブックコンピューティングデバイス、ラップトップコンピューティングデバイス、デスクトップコンピューティングデバイス、または以上の組合せであることが可能である。
【００３３】
或る特定の態様において、DCVSアルゴリズムは、電力消費量を低減しながらも、満足の行くシステムパフォーマンスをもたらそうとして、CPU負荷/アイドル時間を測定するとともに、作業負荷の跡を追うようにCPUクロック周波数を動的に調整する機構である。作業負荷が変化するにつれ、CPUスループットの変化は、作業負荷の変化の跡を追うが、必然的に遅れもする。残念ながら、このことは、DCVSアルゴリズムが、十分に迅速には作業負荷の跡を追わない可能性があるので、作業負荷がQoS(サービス品質)要件を有する場合に問題を生じさせる可能性がある。さらに、タスクが失敗する可能性がある。
【００３４】
多くのDCVS技術は、CPUの定常条件パフォーマンス要件を測定するここと、ならびにCPU周波数およびCPU電圧を、定常状態CPU使用を満たすことが可能な最低レベルに設定することを含む。このことは、通常、或る期間にわたってCPU利用率(ビジーパーセンテージ)を測定すること、およびCPUパフォーマンスレベルを、平均CPU利用率が高いしきい値と低いしきい値の中間に相当するレベルに設定することによって行われる。この平均期間は、妥当な応答性を維持しながら、クロック周波数を変更する頻度を最小限に抑えるように最適化される。遷移作業負荷および/または新たな作業負荷の開始に応答するため、CPU周波数を迅速に高めるのにパニック入力が利用されている可能性がある。
【００３５】
DCVSが作業負荷に遅れて、タスクを失敗させるという問題を回避するため、本明細書で開示されるシステムおよび方法は、遷移パフォーマンス保証を提供する。遷移パフォーマンス保証は、より高いパフォーマンスレベルで実行されることと比較して、連続的なビジーパルスが遅延する可能性がある最大限の時間として定義され得る。このことは、遷移パフォーマンス期限が切れるより前に、より高いパフォーマンスレベルに達すること、およびCPUがアイドルである場合、CPUは、定義により、オーバーサブスクリプション状態にはないので、アイドルになるといつでも期限をリセットすることによって、実現されることが可能である。本明細書で開示されるとおり、タイマは、システムがアイドルを抜け、システムCPUが最大限の周波数で実行されていない場合はいつでも、QoS保証を守るように再スケジュールされることが可能である。
【００３６】
遷移パフォーマンス保証の電力影響を最小限に抑えるため、本システムおよび本方法は、入ってくるパルスが、期限に間に合うために周波数増加を要求し得る可能性を最小限に抑える。このことは、図8に示されるとおり、有効遷移割当量が尽きるまで、周波数変更、すなわち、パフォーマンスレベル変更を遅延させること、および、その後、より高いパフォーマンスレベルに直にジャンプして、そのパルスが完了するまで、そのレベルに留まることによって、実現されることが可能である。
【００３７】
或る特定の態様において、有効遷移割当量は、現在のパフォーマンスレベルにスケーリングされた遷移応答期限として計算される。例えば、CPUが、最大限のクロックレートの75%で実行されており、遷移応答期限が16ミリ秒である場合、有効遷移割当量は、64ミリ秒、すなわち、16ミリ秒/(1-0.75)である。有効遷移割当量は、CPUが、その割当量を使い果たすまでに、現在のパフォーマンスレベルでどれだけの時間、実行されることが可能であるかを表す。CPUがアイドルである場合、有効遷移割当量は、遷移応答期限と同一であることが可能である。最大限のパフォーマンスレベルにある場合、有効遷移割当量は、図9に示されるとおり無限である。
【００３８】
本明細書で説明される方法を使用して、システムは、タスクが最大限のレベル以外の何らかのレベルで実行される可能性がある最大限の時間に厳格な限界を設けることが可能であり、したがって、QoS保証を要求するタスクの完了に計算可能な限界を暗黙に設けることが、それでも動的なCPUクロックスケーリングを許しながら、可能である。この限界は、どのようなタスクが現在、実行されているか、全体的なシステム特性、DCVSアルゴリズム設計、または他の特性に基づいて、設定されることが可能であり、システムが、QoS要件を有するタスクを全く実行していない場合、またはCPUが最高クロックで実行されている場合、完全に無効にされることが可能である。
【００３９】
或る特定の態様において、本方法は、期限が切れると、最大限の周波数にジャンプする代わりに、より短い内部有効期限を設定して、最大限のQoS遅延が尽きる前にCPUが最大限の周波数にあることを確実にしながらも、1つまたは複数の中間周波数にジャンプすることによって、拡張されることが可能である。さらに、本方法は、明確に定義された遷移QoSが維持されることを実質的に確実にすることが、同時に全体的なCPU電力を低減しながらも、可能である。
【００４０】
本明細書で説明されるシステムおよび方法は、機会主義的サンプリングを利用することが可能である。つまり、本システムおよび本方法は、定期的にタイマ満了を確認することが可能である。他の態様において、本システムおよび本方法は、機会主義的サンプリングを利用しないことが可能である。
【００４１】
1つまたは複数の例示的な態様において、説明される機能は、ハードウェアで、ソフトウェアで、ファームウェアで、または以上の任意の組合せで実施されることが可能である。ソフトウェアで実施される場合、それらの機能は、マシン可読媒体、すなわち、コンピュータ可読媒体などのコンピュータプログラム製品上に格納される、またはそのようなコンピュータプログラム製品上の1つまたは複数の命令もしくはコードとして伝送されることが可能である。コンピュータ可読媒体には、1つの場所から別の場所にコンピュータプログラムを移すことを円滑にする任意の媒体を含め、コンピュータ記憶媒体と通信媒体の両方が含まれる。記憶媒体は、コンピュータによってアクセスされることが可能である任意の利用可能な媒体であることが可能である。例として、限定としてではなく、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態で所望されるプログラムコードを伝送する、または格納するのに使用されることが可能であり、さらにコンピュータによってアクセスされることが可能である他の任意の媒体を備えることが可能である。また、任意の接続が、コンピュータ可読媒体と適切に呼ばれる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、より対線、DSL(デジタル加入者線)、あるいは赤外線、電波、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他の遠隔ソースから伝送される場合、その同軸ケーブル、光ファイバケーブル、より対線、DSL、あるいは赤外線、電波、およびマイクロ波などのワイヤレス技術が、媒体の定義に含められる。本明細書で使用されるディスク(Disk)およびディスク(Disc)には、CD(コンパクトディスク)、レーザディスク、光ディスク、DVD(デジタルバーサタイルディスク)、フロッピー（登録商標）ディスク、およびブルーレイディスクが含まれ、ただし、ディスク(Disk)は、通常、データを磁気的に再現するのに対して、ディスク(Disc)は、データを、レーザを使用して光学的に再現する。また、以上の媒体の組合せも、コンピュータ可読媒体の範囲に含められなければならない。
【００４２】
選択された態様が、図示され、詳細に説明されてきたが、添付の特許請求の範囲によって規定される、本発明の趣旨および範囲を逸脱することなく、様々な代替および変更が行われ得ることが理解されよう。
【符号の説明】
【００４３】
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  並列性モニタ
【図１】
2013527507.tif 000003
【図２】
2013527507.tif 000004
【図３】
2013527507.tif 000005
【図４】
2013527507.tif 000006
【図５】
2013527507.tif 000007
【図６】
2013527507.tif 000008
【図７】
2013527507.tif 000009
【図８】
2013527507.tif 000010
【図９】
2013527507.tif 000011
【手続補正書】
【提出日】平成23年8月22日(2011.8.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
中央処理装置における電力を制御する方法であって、
CPUに関する遷移パフォーマンス期限が切れているかどうかを判定するステップと、
前記遷移パフォーマンス期限が切れたと判定することに応答して、前記CPUがアイドル状態に入るより前に、より高いCPU周波数に移るステップと、
前記アイドル状態に入るステップと、
有効遷移割当量に基づいて、前記遷移パフォーマンス期限をリセットするステップとを備える方法。
【請求項２】
前記アイドル状態を抜けるステップをさらに備える請求項1に記載の方法。
【請求項３】
CPU周波数が最大限のCPU周波数まで増加したかどうかを判定するステップをさらに備える請求項2に記載の方法。
【請求項４】
前記CPU周波数が最大限のCPU周波数まで増加していないと判定することに応答して、タイマを再スケジュールするステップをさらに備える請求項3に記載の方法。
【請求項５】
次回のビジーサイクルに関する次回のCPU周波数を算出するステップをさらに備える請求項1に記載の方法。
【請求項６】
前記有効遷移割当量は、前記遷移応答期限に次に高いCPU周波数を掛け、さらに結果を、前記次に高いCPU周波数ステップと前記次回の周波数の差で割ることによって算出され、前記次に高いCPU周波数は、前記次回の周波数より1ステップ高い請求項5に記載の方法。
【請求項７】
前記有効遷移割当量にオーバーヘッドを加算するステップをさらに備える請求項6に記載の方法。
【請求項８】
前記オーバーヘッドは、クロック切換えオーバーヘッド、クロックスケジューリングオーバーヘッド、電圧変更オーバーヘッド、またはクロック切換えオーバーヘッドとクロックスケジューリングオーバーヘッドと電圧変更オーバーヘッドの組合せを備える請求項7に記載の方法。
【請求項９】
より高いCPU周波数にジャンプする期限を、アイドル終了時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するステップをさらに備える請求項8に記載の方法。
【請求項１０】
より高いCPU周波数にジャンプする期限を、現在の時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するステップをさらに備える請求項8に記載の方法。
【請求項１１】
CPUに関する遷移パフォーマンス期限が切れているかどうかを判定するための手段と、
前記遷移パフォーマンス期限が切れたと判定することに応答して、前記CPUがアイドル状態に入るより前に、より高いCPU周波数に移るための手段と、
前記アイドル状態に入るための手段と、
有効遷移割当量に基づいて、前記遷移パフォーマンス期限をリセットするための手段とを備えるデバイス。
【請求項１２】
前記アイドル状態を抜けるための手段をさらに備える請求項11に記載のデバイス。
【請求項１３】
CPU周波数が、最大限のCPU周波数まで増加したかどうかを判定するための手段をさらに備える請求項12に記載のデバイス。
【請求項１４】
前記CPU周波数が最大限のCPU周波数まで増加していないと判定することに応答して、タイマを再スケジュールするための手段をさらに備える請求項13に記載のデバイス。
【請求項１５】
次回のビジーサイクルに関する次回のCPU周波数を算出するための手段をさらに備える請求項11に記載のデバイス。
【請求項１６】
前記有効遷移割当量は、前記遷移応答期限に次に高いCPU周波数を掛け、さらに結果を、前記次に高いCPU周波数ステップと前記次回の周波数の差で割ることによって算出され、前記次に高いCPU周波数は、前記次回の周波数より1ステップ高い請求項15に記載のデバイス。
【請求項１７】
前記有効遷移割当量にオーバーヘッドを加算するための手段をさらに備える請求項16に記載のデバイス。
【請求項１８】
前記オーバーヘッドは、クロック切換えオーバーヘッド、クロックスケジューリングオーバーヘッド、電圧変更オーバーヘッド、またはクロック切換えオーバーヘッドとクロックスケジューリングオーバーヘッドと電圧変更オーバーヘッドの組合せを備える請求項17に記載のデバイス。
【請求項１９】
より高いCPU周波数にジャンプする期限を、アイドル終了時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するための手段をさらに備える請求項18に記載のデバイス。
【請求項２０】
より高いCPU周波数にジャンプする期限を、現在の時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するための手段をさらに備える請求項18に記載のデバイス。
【請求項２１】
メモリと、
前記メモリに結合されたプロセッサとを備えるデバイスであって、
前記プロセッサは、
CPUに関する遷移パフォーマンス期限が切れているかどうかを判定し、
前記遷移パフォーマンス期限が切れたと判定することに応答して、前記CPUがアイドル状態に入るより前に、より高いCPU周波数に移り、
前記アイドル状態に入り、さらに
有効遷移割当量に基づいて、前記遷移パフォーマンス期限をリセットするように動作可能であるデバイス。
【請求項２２】
前記プロセッサは、前記アイドル状態を抜けるようにさらに動作可能である請求項21に記載のデバイス。
【請求項２３】
前記プロセッサは、CPU周波数が、最大限のCPU周波数まで増加したかどうかを判定するようにさらに動作可能である請求項22に記載のデバイス。
【請求項２４】
前記プロセッサは、前記CPU周波数が最大限のCPU周波数まで増加していないと判定することに応答して、タイマを再スケジュールするようにさらに動作可能である請求項23に記載のデバイス。
【請求項２５】
前記プロセッサは、次回のビジーサイクルに関する次回のCPU周波数を算出するようにさらに動作可能である請求項21に記載のデバイス。
【請求項２６】
前記有効遷移割当量は、前記遷移応答期限に次に高いCPU周波数を掛け、さらに結果を、前記次に高いCPU周波数ステップと前記次回の周波数の差で割ることによって算出され、前記次に高いCPU周波数は、前記次回の周波数より1ステップ高い請求項25に記載のデバイス。
【請求項２７】
前記プロセッサは、前記有効遷移割当量にオーバーヘッドを加算するようにさらに動作可能である請求項26に記載のデバイス。
【請求項２８】
前記オーバーヘッドは、クロック切換えオーバーヘッド、クロックスケジューリングオーバーヘッド、電圧変更オーバーヘッド、またはクロック切換えオーバーヘッドとクロックスケジューリングオーバーヘッドと電圧変更オーバーヘッドの組合せを備える請求項27に記載のデバイス。
【請求項２９】
前記プロセッサは、より高いCPU周波数にジャンプする期限を、アイドル終了時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するようにさらに動作可能である請求項28に記載のデバイス。
【請求項３０】
前記プロセッサは、より高いCPU周波数にジャンプする期限を、現在の時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するようにさらに動作可能である請求項28に記載のデバイス。
【請求項３１】
CPUに関する遷移パフォーマンス期限が切れているかどうかを判定するための少なくとも1つの命令と、
前記遷移パフォーマンス期限が切れたと判定することに応答して、前記CPUがアイドル状態に入るより前に、より高いCPU周波数に移るための少なくとも1つの命令と、
前記アイドル状態に入るための少なくとも1つの命令と、
有効遷移割当量に基づいて、前記遷移パフォーマンス期限をリセットするための少なくとも1つの命令とを備えるメモリ媒体。
【請求項３２】
前記アイドル状態を抜けるための少なくとも1つの命令をさらに備える請求項31に記載のメモリ媒体。
【請求項３３】
CPU周波数が、最大限のCPU周波数まで増加したかどうかを判定するための少なくとも1つの命令をさらに備える請求項32に記載のメモリ媒体。
【請求項３４】
前記CPU周波数が最大限のCPU周波数まで増加していないと判定することに応答して、タイマを再スケジュールするための少なくとも1つの命令をさらに備える請求項33に記載のメモリ媒体。
【請求項３５】
次回のビジーサイクルに関する次回のCPU周波数を算出するための少なくとも1つの命令をさらに備える請求項31に記載のメモリ媒体。
【請求項３６】
前記有効遷移割当量は、前記遷移応答期限に次に高いCPU周波数を掛け、さらに結果を、前記次に高いCPU周波数ステップと前記次回の周波数の差で割ることによって算出され、前記次に高いCPU周波数は、前記次回の周波数より1ステップ高い請求項35に記載のメモリ媒体。
【請求項３７】
前記有効遷移割当量にオーバーヘッドを加算するための少なくとも1つの命令をさらに備える請求項36に記載のメモリ媒体。
【請求項３８】
前記オーバーヘッドは、クロック切換えオーバーヘッド、クロックスケジューリングオーバーヘッド、電圧変更オーバーヘッド、またはクロック切換えオーバーヘッドとクロックスケジューリングオーバーヘッドと電圧変更オーバーヘッドの組合せを備える請求項37に記載のメモリ媒体。
【請求項３９】
より高いCPU周波数にジャンプする期限を、アイドル終了時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するための少なくとも1つの命令をさらに備える請求項38に記載のメモリ媒体。
【請求項４０】
より高いCPU周波数にジャンプする期限を、現在の時刻に前記有効遷移割当量および前記オーバーヘッドを足した値と等しく設定するための少なくとも1つの命令をさらに備える請求項38に記載のメモリ媒体。