(57)【特許請求の範囲】
【請求項１】
ポータブルコンピューティングデバイス上の動的なクロックおよび電圧切替え(DCVS)アルゴリズムを実行する方法であって、
前記ポータブルコンピューティングデバイスのプロセッサの現在の応答度をデフォルトの応答度の値に等しく設定するステップを含み、前記応答度は前記プロセッサの周波数または電圧の変化率であり、
前記プロセッサにおいて登録されていないワークロードを実行するステップと、
プロセッサのアクティビティを監視して、前記プロセッサに新たなワークロードがいつ追加されたかを決定するステップと、
前記追加されたワークロードが登録されているかどうかを決定するステップと、
前記追加されたワークロードが登録されていると決定した場合、一意の識別子を前記追加されたワークロードに割り当てるステップと、
前記追加されたワークロードから必要な応答度の値を受信するステップと、
前記必要な応答度の値が前記プロセッサの現在の応答度よりも大きいかどうかを決定するステップと、
前記必要な応答度の値が前記プロセッサの現在の応答度よりも大きいと決定したことに応答して、前記プロセッサの現在の応答度を前記追加されたワークロードから受信された必要な応答度の値に等しく設定するステップと、
前記プロセッサの現在の応答度に基づいて前記プロセッサの周波数および電圧のうちの少なくとも1つを調整するステップと、
前記追加されたワークロードが登録されていると決定した場合、前記調整された周波数または電圧で前記登録されていないワークロードおよび前記登録されているワークロードを実行するステップと
をさらに含む方法。
【請求項２】
前記プロセッサの現在の応答度をデフォルトの応答度の値に等しく設定するステップは、前記プロセッサの周波数および電圧のうちの少なくとも1つを調整するための変化率をデフォルトの応答度の値に等しく設定するステップを含む請求項1に記載の方法。
【請求項３】
前記必要な応答度が前記プロセッサの現在の応答度よりも大きくないと決定したことに応答して、前記ポータブルコンピューティングデバイスの複数のワークロードについての現在の応答度に基づいて、前記プロセッサの周波数および電圧のうちの少なくとも1つを調整するステップをさらに含む請求項1に記載の方法。
【請求項４】
前記ポータブルコンピューティングデバイスの複数のプロセッサの各々の現在の応答度を前記ポータブルコンピューティングデバイスの複数のワークロードについての必要な応答度の値に等しく設定するステップをさらに含む請求項1に記載の方法。
【請求項５】
ポータブルコンピューティングデバイスであって、
前記ポータブルコンピューティングデバイスのプロセッサの現在の応答度をデフォルトの応答度の値に等しく設定する手段を含み、前記応答度は前記プロセッサの周波数または電圧の変化率であり、
前記プロセッサにおいて登録されていないワークロードを実行する手段と、
プロセッサのアクティビティを監視して、前記プロセッサに新たなワークロードがいつ追加されたかを決定する手段と、
前記追加されたワークロードが登録されているかどうかを決定する手段と、
前記追加されたワークロードが登録されていると決定した場合、一意の識別子を前記追加されたワークロードに割り当てる手段と、
前記追加されたワークロードから必要な応答度の値を受信する手段と、
前記必要な応答度の値が前記プロセッサの現在の応答度よりも大きいかどうかを決定する手段と、
前記必要な応答度の値が前記プロセッサの現在の応答度よりも大きいと決定したことに応答して、前記プロセッサの現在の応答度を前記追加されたワークロードから受信された必要な応答度の値に等しく設定する手段と、
前記プロセッサの現在の応答度に基づいて前記プロセッサの周波数および電圧のうちの少なくとも1つを調整する手段と、
前記追加されたワークロードが登録されていると決定した場合、前記調整された周波数または電圧で前記登録されていないワークロードおよび前記登録されているワークロードを実行する手段と
をさらに含むポータブルコンピューティングデバイス。
【請求項６】
前記プロセッサの現在の応答度をデフォルトの応答度の値に等しく設定する手段は、前記プロセッサの周波数または電圧のうちの少なくとも1つを調整するための変化率をデフォルトの応答度の値に等しく設定する手段を含む請求項5に記載のポータブルコンピューティングデバイス。
【請求項７】
前記必要な応答度が前記現在の応答度よりも大きくない場合、現在の応答度を全てのワークロードに与える手段をさらに含む請求項5に記載のポータブルコンピューティングデバイス。
【請求項８】
前記ポータブルコンピューティングデバイスの複数のプロセッサの各々の現在の応答度を前記ポータブルコンピューティングデバイスの複数のワークロードについての必要な応答度の値に等しく設定する手段をさらに含む請求項5に記載のポータブルコンピューティングデバイス。
【請求項９】
ポータブルコンピューティングデバイスであって、
プロセッサ実行可能命令を用いて動作を実行するように構成されたプロセッサを含み、
前記動作は、前記ポータブルコンピューティングデバイスのプロセッサの現在の応答度をデフォルトの応答度の値に等しく設定することを含み、前記応答度は前記プロセッサの周波数または電圧の変化率であり、
前記動作は、
前記プロセッサにおいて登録されていないワークロードを実行し、
プロセッサのアクティビティを監視して、前記プロセッサに新たなワークロードがいつ追加されたかを決定し、
前記追加されたワークロードが登録されているかどうかを決定し、
前記追加されたワークロードが登録されていると決定した場合、一意の識別子を前記追加されたワークロードに割り当て、
前記追加されたワークロードから必要な応答度の値を受信し、
前記必要な応答度の値が前記プロセッサの現在の応答度よりも大きいかどうかを決定し、
前記必要な応答度の値が前記プロセッサの現在の応答度よりも大きいと決定したことに応答して、前記プロセッサの現在の応答度を前記追加されたワークロードから受信された必要な応答度の値に等しく設定し、
前記プロセッサの現在の応答度に基づいて前記プロセッサの周波数および電圧のうちの少なくとも1つを調整し、
前記追加されたワークロードが登録されていると決定した場合、前記調整された周波数または電圧で前記登録されていないワークロードおよび前記登録されているワークロードを実行する
ことをさらに含むポータブルコンピューティングデバイス。
【請求項１０】
前記プロセッサの現在の応答度をデフォルトの応答度の値に等しく設定することが、前記プロセッサの周波数および電圧のうちの少なくとも1つを調整するための変化率をデフォルトの応答度の値に等しく設定することを含むようにプロセッサ実行可能命令を用いて構成された請求項9に記載のポータブルコンピューティングデバイス。
【請求項１１】
前記必要な応答度が前記現在の応答度よりも大きくないと決定したことに応答して、前記ポータブルコンピューティングデバイスの複数のワークロードについての現在の応答度に基づいて、前記プロセッサの周波数および電圧のうちの少なくとも1つを調整することをさらに含む動作を実行するようにプロセッサ実行可能命令を用いて構成された請求項9に記載のポータブルコンピューティングデバイス。
【請求項１２】
前記ポータブルコンピューティングデバイスの複数のプロセッサの各々の現在の応答度を前記ポータブルコンピューティングデバイスの複数のワークロードについての必要な応答度の値に等しく設定することをさらに含む動作を実行するようにプロセッサ実行可能命令を用いて構成された請求項9に記載のポータブルコンピューティングデバイス。
【請求項１３】
ポータブルデバイスのプロセッサに動作を実行させるように構成されたプロセッサ実行可能命令が記憶された非一時的なコンピュータ可読記憶媒体であって、
前記動作は、プロセッサの現在の応答度をデフォルトの応答度の値に等しく設定することを含み、前記応答度は前記プロセッサの周波数または電圧の変化率であり、
前記動作は、
前記プロセッサにおいて登録されていないワークロードを実行し、
プロセッサのアクティビティを監視して、前記プロセッサに新たなワークロードがいつ追加されたかを決定し、
前記追加されたワークロードが登録されているかどうかを決定し、
前記追加されたワークロードが登録されていると決定した場合、一意の識別子を前記追加されたワークロードに割り当て、
前記追加されたワークロードから必要な応答度の値を受信し、
前記必要な応答度の値が前記プロセッサの現在の応答度よりも大きいかどうかを決定し、
前記必要な応答度の値が前記現在の応答度よりも大きいと決定したことに応答して、前記プロセッサの現在の応答度を前記追加されたワークロードから受信された必要な応答度の値に等しく設定し、
前記現在の応答度に基づいて前記プロセッサの周波数および電圧のうちの少なくとも1つを調整し、
前記追加されたワークロードが登録されていると決定した場合、前記調整された周波数または電圧で前記登録されていないワークロードおよび前記登録されているワークロードを実行する
ことをさらに含む非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記記憶されたプロセッサ実行可能命令は、前記プロセッサの現在の応答度をデフォルトの応答度の値に等しく設定することが、前記プロセッサの周波数または電圧を調整するための変化率をデフォルトの応答度の値に等しく設定することを含む動作を前記ポータブルデバイスのプロセッサに実行させるように構成された請求項13に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１５】
前記記憶されたプロセッサ実行可能命令は、前記必要な応答度が前記現在の応答度よりも大きくないと決定したことに応答して、複数のワークロードについての現在の応答度に基づいて、前記プロセッサの周波数および電圧のうちの少なくとも1つを調整することをさらに含む動作を前記ポータブルデバイスのプロセッサに実行させるように構成された請求項13に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記記憶されたプロセッサ実行可能命令は、複数のプロセッサの各々の現在の応答度を複数のワークロードについての必要な応答度の値に等しく設定することをさらに含む動作を前記ポータブルデバイスのプロセッサに実行させるように構成された請求項13に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークロードの要求に基づいて動的なクロックおよび電圧切替えアルゴリズムを調整するシステムおよび方法に関する。
関連出願
本出願は、その内容が参照により完全に組み込まれる、2010年1月11日に出願された「SYSTEM AND METHOD OF TUNING A DYNAMIC CLOCK AND VOLTAGE SWITCHING ALGORITHM BASED ON WORKLOAD REQUESTS」という名称の米国仮特許出願第61/294,026号の優先権を主張する。
【背景技術】
【０００２】
ポータブルコンピューティングデバイス(PD)は至る所にある。これらのデバイスには、携帯電話、携帯情報端末(PDA)、ポータブルゲーム機、パームトップコンピュータ、および他のポータブル電子デバイスなどがある。これらのデバイスの主要機能に加えて、多くは周辺機能を含む。例えば、携帯電話は、携帯電話をかけるという主要機能、およびスチールカメラ、ビデオカメラ、全地球測位システム(GPS)ナビゲーション、ウェブブラウジング、電子メールの送受信、テキストメッセージの送受信、プッシュツートーク機能などの周辺機能を含み得る。こうしたデバイスの機能が増加するにつれて、こうした機能をサポートために必要な計算または処理能力も増加する。さらに、計算能力が増加するにつれて、計算能力を提供する1つまたは複数のプロセッサを効果的に管理する必要性がより高くなる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
したがって、動的なクロックおよび電圧切替えアルゴリズムを調整する改良された方法が必要である。
【課題を解決するための手段】
【０００４】
特許請求の範囲に記載の手段によって上記課題を解決する。
図中、別段に規定されていない限り、類似の参照番号は、様々な図の全体を通じて、類似の部分を指す。
【図面の簡単な説明】
【０００５】
【図１】閉位置のポータブルコンピューティングデバイス(PCD)の第1の態様を示す正面図である。
【図２】開位置のPCDの第1の態様を示す正面図である。
【図３】PCDの第2の態様を示すブロック図である。
【図４】処理システムを示すブロック図である。
【図５】ワークロードを登録する方法を示すフローチャートである。
【図６】ワークロードの要求に基づいて動的なクロックおよび電圧切替えアルゴリズムを調整する方法の第1の部分を示すフローチャートである。
【図７】ワークロードの要求に基づいて動的なクロックおよび電圧切替えアルゴリズムを調整する方法の第2の部分を示すフローチャートである。
【図８】時間に対してプロットされた中央処理装置のワークロードならびに動的なクロックおよび電圧スケーリングアルゴリズムの応答度(responsivity)を示すグラフである。
【発明を実施するための形態】
【０００６】
「例示」という語は、本明細書では、「例、実例、または例証の役割を果たす」ことを意味するために使用される。本明細書で「例示」として説明する任意の態様を、必ずしも他の態様より好ましい、または有利であると解釈すべきというわけではない。
【０００７】
この説明では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能なコンテンツを有するファイルも含み得る。さらに、本明細書で言及される「アプリケーション」は、例えば開く必要があり得る文書またはアクセスする必要がある他のデータファイルなど、本質的に実行可能ではないファイルも含み得る。
【０００８】
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能なコンテンツを有するファイルも含み得る。さらに、本明細書で言及される「コンテンツ」は、例えば開く必要があり得る文書またはアクセスする必要がある他のデータファイルなど、本質的に実行可能ではないファイルも含み得る。
【０００９】
この説明で使用される場合、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアなどコンピュータ関連のエンティティを指すものとする。例えば、構成要素は、限定はしないが、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータとすることができる。例として、コンピューティングデバイス上で動作するアプリケーションおよびコンピューティングデバイスはいずれも構成要素とすることができる。1つまたは複数の構成要素がプロセスおよび/または実行スレッド内に存在する可能性があり、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キーボードでもよい。上側ハウジング部104を下側ハウジング部106に対して移動させると、マルチボタンキーボード120が現れ得る。図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は、例えば位相反転線(PAL)エンコーダ、sequential couleur a memoire (SECAM)エンコーダ、または全国テレビジョン方式委員会(NTSC)エンコーダなどのビデオエンコーダ334がマルチコアCPU324に結合されることをさらに示す。さらに、ビデオ増幅器336は、ビデオエンコーダ334およびタッチスクリーンディスプレイ332に結合される。また、ビデオポート338は、ビデオ増幅器336に結合される。図3に示されるように、ユニバーサルシリアルバス(USB)コントローラ340がマルチコアCPU324に結合される。また、USBポート342は、USBコントローラ340に結合される。メモリ344および加入者識別モジュール(SIM)カード346もマルチコアCPU324に結合され得る。さらに、図3に示されるように、デジタルカメラ348は、マルチコアCPU324に結合され得る。例示的な態様では、デジタルカメラ348は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化膜半導体(CMOS)カメラである。
【００１５】
図3にさらに示されるように、ステレオオーディオコーデック350は、マルチコアCPU324に結合され得る。さらに、オーディオ増幅器352は、ステレオオーディオコーデック350に結合され得る。例示的な態様では、第1のステレオスピーカ354および第2のステレオスピーカ356は、オーディオ増幅器352に結合される。図3は、マイクロフォン増幅器358もステレオオーディオコーデック350に結合され得ることを示す。さらに、マイクロフォン360は、マイクロフォン増幅器358に結合され得る。特定の態様において、周波数変調(FM)無線チューナ362は、ステレオオーディオコーデック350に結合され得る。また、FMアンテナ364は、FM無線チューナ362に結合される。さらに、ステレオヘッドフォン366は、ステレオオーディオコーデック350に結合され得る。
【００１６】
図3は、無線周波数(RF)トランシーバ368がマルチコアCPU324に結合され得ることをさらに示す。RFスイッチ370は、RFトランシーバ368およびRFアンテナ372に結合され得る。図3に示されるように、キーパッド374は、マルチコアCPU324に結合され得る。また、マイクロフォンを備えるモノヘッドセット376は、マルチコアCPU324に結合され得る。さらに、バイブレータデバイス378は、マルチコアCPU324に結合され得る。図3は、電源装置380がオンチップシステム322に結合され得ることも示す。特定の態様において、電源装置380は、電力を必要とするPCD320の様々な構成要素に電力を供給する直流電流(DC)の電源装置である。さらに、特定の態様において、電源装置は、AC電源に接続された交流(AC)-DC変換器から導出された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、またはそれらの組合せは、1つまたは複数のワークロードの要求に基づいて、動的なクロックおよび電圧切替え(DCVS)アルゴリズムを調整するために、本明細書で説明する方法ステップのうちの1つまたは複数を実行するための手段として働き得る。
【００２０】
図4を参照すると、処理システムが示されており、全体的に400と表される。特定の態様において、処理システム400は、図3に関して上記で説明されたPCD320に組み込まれ得る。図示のように、処理システム400は、マルチコア中央処理装置(CPU)402、およびマルチコアCPU402に接続されたメモリ404を含むことができる。マルチコアCPU402は、第0のコア410、第1のコア412、および第Nのコア414を含み得る。第0のコア410では、第0の動的なクロックおよび電圧スケーリング(DCVS)アルゴリズム416が実行され得る。第1のコア412では、第1のDCVSアルゴリズム417が実行され得る。さらに、第Nのコア414では、第NのDCVSアルゴリズム418が実行され得る。特定の態様において、各DCVSアルゴリズム416、417、418は、それぞれのコア412、414、416上で独立して実行され得る。
【００２１】
さらに、図示のように、メモリ404には、オペレーティングシステム420が記憶されていてもよい。オペレーティングシステム420は、スケジューラ422を含むことができ、スケジューラ422は、第1の実行待ち行列(run queue)424、第2の実行待ち行列426、および第Nの実行待ち行列428を含むことができる。また、メモリ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に接続され得る。本明細書で説明するように、例えば、スケジューラ420および実行待ち行列424、426、428を監視することによって、コントローラ440は、コア410、412、414上のワークロードを監視することができる。コントローラ440は、以下で詳細に説明するように、各アプリケーション430、432、434からのワークロードに基づいて、各コア410、412、414上で動作するDCVSアルゴリズム416、417、418を調整することができる。
【００２４】
特定の態様において、コントローラ440は、ソフトウェアプログラムでもよい。しかし、代替態様では、コントローラ440は、メモリ404の外部にあるハードウェアコントローラとすることができる。いずれにせよ、コントローラ440、メモリ404、コア410、412、414、またはそれらの任意の組合せは、1つまたは複数のワークロードの要求に基づいて、動的なクロックおよび電圧切替え(DCVS)アルゴリズムを調整するために、本明細書で説明する方法ステップのうちの1つまたは複数を実行するための手段として働き得る。
【００２５】
図5を参照すると、ワークロードを登録する方法が示されており、全体的に500と表される。方法500は、ブロック502でDOループで開始し、デバイスが電源投入されると、以下のステップが実行され得る。ブロック504で、コントローラによって、遅延が実施され得る。遅延は、固定された所定の期間、例えば60秒とすることができる。代わりに、遅延は、例えばブートの終了など、明示的なイベントの後に終了するようにしてもよい。ブロック506に移動して、コントローラは、CPUのアクティビティを監視することができる。このアクティビティは、シングルコアCPU、マルチコアCPU、複数のシングルコアCPU、複数のマルチコアCPU、またはそれらの組合せのアクティビティとすることができる。さらに、コントローラは、ソフトウェアコントローラ、ハードウェアコントローラ、またはそれらの組合せとすることができる。
【００２６】
決定508で、コントローラは、ワークロードが追加されたかどうかを決定することができる。ワークロードは、ビデオアプリケーション、音声アプリケーション、電子メールアプリケーション、ワイヤレスネットワークアプリケーション、セルラーネットワークアプリケーション、ショートメッセージサービス(SMS)アプリケーション、通信アプリケーション、セキュリティアプリケーション、カレンダアプリケーション、インスタントメッセージングアプリケーション、スチールカメラアプリケーション、全地球測位システム(GPS)アプリケーション、ブラウザアプリケーション、メモ帳アプリケーション、クロックアプリケーション、ゲームアプリケーション、計算機アプリケーション、銀行業務アプリケーション、パスワードキーパーアプリケーション、ヘルプアプリケーション、電子商取引アプリケーション、ソフトウェア配信アプリケーション、検索アプリケーション、オプションアプリケーション、確立アプリケーション、電話アプリケーション、接続管理アプリケーション、セキュリティアプリケーション、任意の他のアプリケーション、またはそれらの組合せとすることができる。
【００２７】
特定の態様において、決定508でワークロードが追加されていない場合、方法500は、ブロック506に戻ることができ、本明細書で説明するように継続することができる。そうでない場合、決定508で、ワークロードが追加されている場合、方法500は、決定510に進むことができ、コントローラは、ワークロードがコントローラに登録しているかどうかを決定することができる。ワークロードが登録していない場合、方法500は、決定511に進むことができる。決定511で、コントローラは、デバイスが電源切断されたかどうかを決定することができる。そうであれば、方法500は、終了することができる。そうでない場合、デバイスが電源投入されたままである場合、方法500はブロック506に戻ることができ、コントローラは、決定508で別のワークロードが追加されたことを決定するまで、CPUのアクティビティを監視し続けることができる。
【００２８】
決定510に戻って、ワークロードがコントローラに登録している場合、方法500は、ブロック512に進むことができ、コントローラは、ワークロードの登録を受信することができる。ブロック514で、コントローラは、ワークロードの一意の識別子を決定することができる。次に、ブロック516で、コントローラは、一意の識別子をワークロードに割り当てることができる。
【００２９】
ブロック518に進むと、コントローラは、ワークロードの要求を受信することができる。ワークロードの要求は、例えば、必要な応答度を含むことができる。応答度は、システム設定の変化率でもよい。例えば、応答度は、CPU周波数の変化率、電圧の変化率、またはそれらの組合せでもよい。さらに、応答度は、ミリ秒で表される最大遅延、ミリ秒当たりの周波数(MHz/ms)として表されるCPUスルーレート範囲(slew rate bound)、またはそれらの組合せでもよい。
【００３０】
ブロック520に移動して、ワークロードの1つまたは複数の要求がコントローラによって提供され得る、すなわち、コントローラは、動的なクロックおよび電圧スケーリング(DCVS)アルゴリズムに、ワークロードで示される応答度を提供するように指示することができる。その後、方法500は、決定522に進むことができる。決定522で、コントローラは、ワークロードが終了しているかどうか、すなわち、もはや稼働していないかどうかを決定することができる。ワークロードが終了していない、すなわち、まだ稼働している場合、方法500は、決定524に進むことができ、コントローラは、新しいワークロードの要求が受信されたかどうかを決定することができる。そうであれば、方法500は、ブロック526に移動することができ、コントローラは、前のワークロードの要求をキャンセルすることができる。次に、方法500は、ブロック520に戻ることができ、説明したように継続することができる。
【００３１】
決定524に戻ると、新しいワークロードの要求が受信されていない場合、方法500は、ブロック520に戻り、説明したように継続することができる。決定522に戻ると、ワークロードが終了している場合、方法500は、決定511に移動することができ、本明細書で説明するように継続することができる。
【００３２】
図6を参照すると、ワークロードの要求に基づいて動的なクロックおよび電圧切替えアルゴリズムを調整する方法が示されており、全体的に600と表される。方法600は、ブロック602でDOループで開始し、デバイスが電源投入されると、以下のステップが実行され得る。ブロック603で、コントローラによって、遅延が実施され得る。遅延は、固定された所定の期間、例えば60秒とすることができる。代わりに、遅延は、例えばブートの終了など、明示的なイベントの後に終了するようにしてもよい。
【００３３】
ブロック604で、コントローラは、デフォルトの応答度、例えば、デフォルトの周波数、デフォルトの電圧、またはそれらの組合せを設定することができる。ブロック606に移動して、コントローラは、CPUのアクティビティを監視することができる。このアクティビティは、シングルコアCPU、マルチコアCPU、複数のシングルコアCPU、複数のマルチコアCPU、またはそれらの組合せのアクティビティとすることができる。さらに、コントローラは、ソフトウェアコントローラ、ハードウェアコントローラ、またはそれらの組合せとすることができる。
【００３４】
決定608で、コントローラは、ワークロードが追加されたかどうかを決定することができる。ワークロードは、ビデオアプリケーション、音声アプリケーション、電子メールアプリケーション、ワイヤレスネットワークアプリケーション、セルラーネットワークアプリケーション、ショートメッセージサービス(SMS)アプリケーション、通信アプリケーション、セキュリティアプリケーション、カレンダアプリケーション、インスタントメッセージングアプリケーション、スチールカメラアプリケーション、全地球測位システム(GPS)アプリケーション、ブラウザアプリケーション、メモ帳アプリケーション、クロックアプリケーション、ゲームアプリケーション、計算機アプリケーション、銀行業務アプリケーション、パスワードキーパーアプリケーション、ヘルプアプリケーション、電子商取引アプリケーション、ソフトウェア配信アプリケーション、検索アプリケーション、オプションアプリケーション、確立アプリケーション、電話アプリケーション、接続管理アプリケーション、セキュリティアプリケーション、任意の他のアプリケーション、またはそれらの組合せとすることができる。
【００３５】
決定608で、ワークロードが追加されていない場合、方法600は、ブロック606に戻ることができ、本明細書で説明するように継続することができる。反対に、決定608で、ワークロードが追加されている場合、方法600は、決定610に進むことができ、コントローラは、ワークロードが登録しているかどうかを決定することができる。決定610で、ワークロードが登録されていない場合、方法600は、ブロック612に進むことができ、コントローラは、現在の応答度をワークロードに提供することができる。方法600の最初の繰返しでは、現在の応答度は、デフォルトの応答度とすることができる。その後の繰返しでは、その必要な応答度がデフォルトの応答度よりも大きい場合、現在の応答度は、別の登録されたワークロードに関連付けられた必要な応答度であり得る。
【００３６】
決定610に戻ると、ワークロードがコントローラに登録している場合、方法600は、ブロック614に進むことができ、コントローラは、一意の識別子をワークロードに割り当てることができる。次いで、ブロック616で、コントローラは、ワークロードから直接、ワークロードの応答度の要求を受信することができる。
【００３７】
代わりに、ワークロードがコントローラに連絡するとき、ワークロードは、一意の識別子をコントローラにサブミットすることができる。次いで、コントローラは、一意の識別子を使用して、ワークロードがコントローラまたはいくつかの関連する制御システムに登録されているかどうかを決定することができる。例えば、コントローラは、一意の識別子でテーブルまたはデータベースを検索することができ、コントローラがテーブルまたはデータベース内に一致する一意の識別子を探し出した場合、ワークロードは登録されているとみなされ得る。ワークロードが登録されている場合、コントローラは、テーブルまたはデータベースから応答度の要求を決定することができ、すなわち、応答度の要求は、一意の識別子に関連してテーブルまたはデータベースに格納され得る。
【００３８】
決定618に進むと、コントローラは、必要な応答度が現在の応答度よりも大きいかどうかを決定することができる。必要な応答度が現在の応答度以下である場合、方法600は、ブロック614に戻ることができ、コントローラは、現在の応答度を登録されたワークロードに提供することができる。そうでない場合、必要な応答度が現在の応答度よりも大きい場合、方法600は、ブロック620に進み、コントローラは、動的なクロックおよび電圧スケーリング(DCVS)アルゴリズムを、必要な、すなわちより高い応答度に調整することができる。その後、ブロック622で、コントローラは、より高い応答度をワークロードに提供することができる。方法600は、ブロック622から、図7の決定702に進むことができる。
【００３９】
決定702で、コントローラは、ワークロードが削除されたかどうか、すなわち、ワークロードが終了または終止しているかどうかを決定することができる。ワークロードが削除された場合、方法600は、ブロック704に進むことができ、コントローラは、最も高い残りの必要な応答度を決定することができる。任意のワークロードからの必要な応答度がもはやない場合、最も高い残りの応答度がデフォルトの応答度である。
【００４０】
ブロック706で、コントローラは、デフォルトの応答度を下回ることなく、最も高い残りの必要な応答度にDCVSを調整することができる。次いで、ブロック708で、コントローラは、最も高い残りの応答度を1つまたは複数のワークロードに提供することができる。
【００４１】
決定710に移動して、コントローラは、デバイスが電源切断されたかどうかを決定することができる。デバイスが電源切断されていない場合、方法600は、図6のブロック606に戻ることができ、本明細書で説明するように継続することができる。代わりに、決定710で、デバイスが電源切断された場合、方法600は、終了することができる。
【００４２】
決定702に戻ると、ワークロードが削除されていない場合、方法600は、決定712に進むことができ、コントローラは、応答度低減要求が現在の応答度に関連付けられたワークロードから受信されたかどうかを決定することができる。そうであれば、方法600は、ブロック704に移動することができ、説明したように継続することができる。そうでない場合、方法はブロック714に移動することができ、コントローラは、現在の応答度を維持することができる。次いで、方法600は、図6のブロック606に戻ることができ、説明したように継続することができる。
【００４３】
図8を参照すると、ワークロード/DCVS応答グラフが示されており、全体的に800と表される。図示のように、ワークロード/DCVS応答グラフ800は、ワークロードインジケータ802およびDCVS応答インジケータ804を含む。ワークロードインジケータ802は、第1のビジーサイクル810、第2のビジーサイクル812、第3のビジーサイクル814、第4のビジーサイクル816、および第5のビジーサイクル818を含み得る。さらに、DCV応答インジケータ804は、第1のDCVS応答820、第2のDCVS応答822、第3のDCVS応答824、第4のDCVS応答826、および第5のDCVS応答828を含み得る。
【００４４】
特定の態様において、第1のDCVS応答820は第1のビジーサイクル810に対応し、第2のDCVS応答822は第2のビジーサイクル812に対応し、第3のDCVS応答824は第3のビジーサイクル814に対応し、第4のDCVS応答826は第4のビジーサイクル816に対応し、第5のDCVS応答828は第5のビジーサイクル818に対応する。
【００４５】
第1のビジーサイクル810および第2のビジーサイクル812の間、1つまたは複数のワークロードは、未登録であり得る。したがって、第1のDCVS応答820および第2のDCVS応答822は、デフォルトの応答、例えば、デフォルトのCPU周波数の変化率、デフォルトの電圧の変化率、またはそれらの組合せとすることができる。第3のビジーサイクル814の間、未登録のワークロードおよび第1の登録されたワークロードが実行され得る。第1の登録されたワークロードの要求は、デフォルトのレートよりも大きくてもよい。したがって、第3のビジーサイクル814の開始時に、第1の登録されたワークロードの要求が適用され、第3のDCVS応答824は、第1の登録されたワークロードの要求を提供することができる。したがって、第3のDCVS応答824は、未登録のワークロードの要求および第1の登録されたワークロードを提供する。
【００４６】
第4のビジーサイクル816の間、未登録のワークロード、第1の登録されたワークロード、および第2の登録されたワークロードが実行され得る。第2の登録されたワークロードの要求は、デフォルトのレートおよび第1の登録されたワークロードの要求よりも大きくてもよい。したがって、第4のビジーサイクル816の開始時に、第2の登録されたワークロードの要求が適用され、第4のDCVS応答826は、第2の登録されたワークロードの要求を提供することができる。したがって、第4のDCVS応答826は、未登録のワークロードおよび第1の登録されたワークロードの要求も提供する。
【００４７】
第5のビジーサイクル818の間、第2の登録されたワークロードは第5のビジーサイクル818から削除され、未登録のワークロードおよび第1の登録されたワークロードは存在し得る。したがって、第5のビジーサイクル818の開始時に、第2の登録されたワークロードの要求は、第5のDCVS応答828から削除され、第5のDCVS応答は、第5のビジーサイクル818から削除されなかった第1の登録されたワークロードの要求を提供することができる。したがって、第5のビジーサイクル818の開始時に、第1の登録されたワークロードの要求が適用され、第5のDCVS応答818は、第1の登録されたワークロードの要求を提供することができる。したがって、第5のDCVS応答828は、未登録のワークロードおよび第1の登録されたワークロードの要求を提供することができる。
【００４８】
応答度の任意の変化も、例えば、ワークロードが終わるときなど、ワークロードの立下りエッジ時に、DCVS応答に影響を及ぼし得ることが了承されよう。
【００４９】
本明細書で説明する方法ステップは、必ずしも説明したような順序で実行される必要はないことを理解されたい。さらに、例えば「その後」、「次いで」、「次に」などの語は、ステップの順序を限定するものではない。これらの語は、単に方法ステップの説明を介して読者を導くために使用されている。さらに、本明細書で説明する方法は、ポータブルコンピューティングデバイス(PCD)上で実行可能であるものとして説明されている。PCDは、携帯電話デバイス、携帯情報端末デバイス、スマートブックコンピューティングデバイス、ネットブックコンピューティングデバイス、ラップトップコンピューティングデバイス、デスクトップコンピューティングデバイス、またはそれらの組合せとすることができる。さらに、本明細書で説明される方法ステップは、シングルコアプロセッサ、マルチコアプロセッサ、複数のシングルコアプロセッサ、複数のマルチコアプロセッサ、またはそれらの任意の組合せ上で実行され得る。
【００５０】
1つまたは複数の例示的な態様において、記載の機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装した場合、機能は、機械可読媒体、すなわちコンピュータ可読媒体などのコンピュータプログラム製品に1つまたは複数の命令またはコードとして記憶され、またはそれを介して送信され得る。コンピュータ可読媒体は、ある位置から別の位置へのコンピュータプログラムの転送を容易にする任意の媒体を含むコンピュータ記憶媒体および通信媒体を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の使用可能な媒体とすることができる。限定ではなく、例として、こうしたコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、または他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、または、命令またはデータ構造の形態で所望のプログラムコードを運ぶまたは記憶するために使用され、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。また、任意の接続は、厳密には、コンピュータ可読媒体と呼ばれる。例えば、ソフトウェアが同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、またはワイヤレス技術、例えば赤外線、無線、およびマイクロ波を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、赤外線、無線、およびマイクロ波などの同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、またはワイヤレス技術は媒体の定義内に含まれる。本明細書で使用する場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク(DVD)、フロッピー（登録商標）ディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるものとする。
【００５１】
選択された態様が例示され、詳細に説明され、記載されているが、以下の特許請求の範囲によって定義された本発明の趣旨および範囲から逸脱することなく、様々な置換および改変を加えることができることを理解されよう。
【符号の説明】
【００５２】
320  ポータブルコンピューティングデバイス
322  オンチップシステム
324  CPU
325  第0のコア
326  第1のコア
327  第Nのコア
328  ディスプレイコントローラ
330  タッチスクリーンコントローラ
332  タッチスクリーンディスプレイ
334  ビデオエンコーダ
336  ビデオ増幅器
338  ビデオポート
340  USBコントローラ
342  USBポート
344  メモリ
346  SIMカード
348  デジタルカメラ
350  ステレオオーディオコーデック
352  オーディオ増幅器
354  第1のステレオスピーカ
356  第2のステレオスピーカ
358  マイクロフォン増幅器
360  マイクロフォン
362  FM無線チューナ
364  FMアンテナ
366  ステレオヘッドフォン
368  RFトランシーバ
370  RFスイッチ
372  RFアンテナ
374  キーパッド
376  マイクロフォンを備えるモノヘッドセット
378  バイブレータデバイス
380  電源装置
388  ネットワークカード
【図１】
0005460883.tif 000002
【図２】
0005460883.tif 000003
【図３】
0005460883.tif 000004
【図４】
0005460883.tif 000005
【図５】
0005460883.tif 000006
【図６】
0005460883.tif 000007
【図７】
0005460883.tif 000008
【図８】
0005460883.tif 000009