(57)【特許請求の範囲】
【請求項１】
中央処理装置(CPU)内で動的なクロックおよび電圧スケーリング(DCVS)アルゴリズムを実行する方法であって、
CPUのアクティビティを監視するステップと、
ワークロードが前記CPUのアクティビティに追加されたとき、前記ワークロードが特殊なワークロードに指定されるかどうかを決定するステップと、
前記ワークロードが特殊なワークロードに指定されるとき、前記ワークロードに関連付けられた一意の識別子を受信するステップと、
前記一意の識別子を使用してデータベースを検索するステップと、
DCVSソリューションが前記ワークロードの前記一意の識別子に関連付けられているかどうかを決定するステップと、
前記ワークロードが前記ワークロードの前記一意の識別子に関連付けられたDCVSソリューションを含まないとき、前記ワークロードの新しいDCVSソリューションを作成すべきかどうかを決定するステップと、
前記ワークロードの新しいDCVSソリューションを作成すべきであると決定したとき、1つまたは複数のワークロードの要求に基づいて、前記ワークロードの新しいDCVSソリューションを作成するステップと、
前記ワークロードに関連付けられた前記一意の識別子と併せて前記新しいDCVSソリューションを記憶するステップと、
記憶された新しいDCVSソリューションに基づいて、前記DCVSアルゴリズムを再調整するステップと、
再調整されたDCVSアルゴリズムを実行するステップと、
を含む方法。
【請求項２】
特殊なワークロードが、インパルスワークロード、登録済みワークロード、等時性ワークロード、パルスワークロード、ベストエフォートワークロード、スケジュールワークロード、またはそれらの組合せを含む請求項1に記載の方法。
【請求項３】
前記ワークロードが特殊なワークロードに指定されない場合、変更がないDCVSアルゴリズムを実行するステップ
をさらに含む請求項1に記載の方法。
【請求項４】
前記ワークロードが前記ワークロードの前記一意の識別子に関連付けられたDCVSソリューションを含むとき、前記ワークロードに関連付けられた前記DCVSソリューションに基づいて前記DCVSアルゴリズムを再調整するステップ
をさらに含む請求項１に記載の方法。
【請求項５】
再調整されたDCVSアルゴリズムを実行するステップ
をさらに含む請求項４に記載の方法。
【請求項６】
新しいDCVSソリューションを作成しないことが決定されると、変更がないDCVSアルゴリズムを実行するステップ
をさらに含む請求項１に記載の方法。
【請求項７】
CPUのアクティビティを監視するための手段と、
ワークロードが前記CPUのアクティビティに追加されたとき、前記ワークロードが特殊なワークロードに指定されるかどうかを決定するための手段と、
前記ワークロードが特殊なワークロードに指定されるとき、前記ワークロードに関連付けられた一意の識別子を受信するための手段と、
前記一意の識別子を使用してデータベースを検索するための手段と、
DCVSソリューションが前記ワークロードの前記一意の識別子に関連付けられているかどうかを決定するための手段と、
前記ワークロードが前記ワークロードの前記一意の識別子に関連付けられたDCVSソリューションを含まないとき、前記ワークロードの新しいDCVSソリューションを作成すべきかどうかを決定するための手段と、
前記ワークロードの新しいDCVSソリューションを作成すべきであると決定したとき、1つまたは複数のワークロードの要求に基づいて、前記ワークロードの新しいDCVSソリューションを作成するための手段と、
前記ワークロードに関連付けられた前記一意の識別子と併せて前記新しいDCVSソリューションを記憶するための手段と、
記憶された新しいDCVSソリューションに基づいて、前記DCVSアルゴリズムを再調整するための手段と、
再調整されたDCVSアルゴリズムを実行するための手段と
を含むワイヤレスデバイス。
【請求項８】
特殊なワークロードが、インパルスワークロード、登録済みワークロード、等時性ワークロード、パルスワークロード、ベストエフォートワークロード、スケジュールワークロード、またはそれらの組合せを含む請求項７に記載のワイヤレスデバイス。
【請求項９】
前記ワークロードが特殊なワークロードに指定されない場合、変更がないDCVSアルゴリズムを実行するための手段
をさらに含む請求項７に記載のワイヤレスデバイス。
【請求項１０】
前記ワークロードが前記ワークロードの前記一意の識別子に関連付けられたDCVSソリューションを含むとき、前記ワークロードに関連付けられた前記DCVSソリューションに基づいてDCVSアルゴリズムを再調整するための手段
をさらに含む請求項７に記載のワイヤレスデバイス。
【請求項１１】
再調整されたDCVSアルゴリズムを実行するための手段
をさらに含む請求項１０に記載のワイヤレスデバイス。
【請求項１２】
新しいDCVSソリューションを作成しないことが決定されると、変更がないDCVSアルゴリズムを実行するための手段
をさらに含む請求項７に記載のワイヤレスデバイス。
【請求項１３】
CPUのアクティビティを監視し、
ワークロードが前記CPUのアクティビティに追加されたとき、前記ワークロードが特殊なワークロードに指定されるかどうかを決定し、
前記ワークロードが特殊なワークロードに指定されるとき、前記ワークロードに関連付けられた一意の識別子を受信し、
前記一意の識別子を使用してデータベースを検索し、
DCVSソリューションが前記ワークロードの前記一意の識別子に関連付けられているかどうかを決定し、
前記ワークロードが前記ワークロードの前記一意の識別子に関連付けられたDCVSソリューションを含まないとき、前記ワークロードの新しいDCVSソリューションを作成すべきかどうかを決定し、
前記ワークロードの新しいDCVSソリューションを作成すべきであると決定したとき、1つまたは複数のワークロードの要求に基づいて、前記ワークロードの新しいDCVSソリューションを作成し、
前記ワークロードに関連付けられた前記一意の識別子と併せて前記新しいDCVSソリューションを記憶し、
記憶された新しいDCVSソリューションに基づいて、前記DCVSアルゴリズムを再調整し、
再調整されたDCVSアルゴリズムを実行する
ように動作可能なプロセッサ
を含むワイヤレスデバイス。
【請求項１４】
特殊なワークロードが、インパルスワークロード、登録済みワークロード、等時性ワークロード、パルスワークロード、ベストエフォートワークロード、スケジュールワークロード、またはそれらの組合せを含む請求項１３に記載のワイヤレスデバイス。
【請求項１５】
前記プロセッサが、
前記ワークロードが特殊なワークロードに指定されない場合、変更がないDCVSアルゴリズムを実行する
ようにさらに動作可能な請求項１３に記載のワイヤレスデバイス。
【請求項１６】
前記プロセッサが、
前記ワークロードが前記ワークロードの前記一意の識別子に関連付けられたDCVSソリューションを含むとき、前記ワークロードに関連付けられた前記DCVSソリューションに基づいてDCVSアルゴリズムを再調整する
ようにさらに動作可能な請求項１３に記載のワイヤレスデバイス。
【請求項１７】
前記プロセッサが、
再調整されたDCVSアルゴリズムを実行する
ようにさらに動作可能な請求項１６に記載のワイヤレスデバイス。
【請求項１８】
前記プロセッサが、
新しいDCVSソリューションを作成しないことが決定されると、変更がないDCVSアルゴリズムを実行する
ようにさらに動作可能な請求項１３に記載のワイヤレスデバイス。
【請求項１９】
プロセッサにより実行可能な命令を記録したプロセッサ読み取り可能な記録媒体において、
CPUのアクティビティを監視するための少なくとも1つの命令と、
ワークロードが前記CPUのアクティビティに追加されたとき、前記ワークロードが特殊なワークロードに指定されるかどうかを決定するための少なくとも1つの命令と、
前記ワークロードが特殊なワークロードに指定されるとき、前記ワークロードに関連付けられた一意の識別子を受信するための少なくとも1つの命令と、
前記一意の識別子を使用してデータベースを検索するための少なくとも1つの命令と、
DCVSソリューションが前記ワークロードの前記一意の識別子に関連付けられているかどうかを決定するための少なくとも1つの命令と、
前記ワークロードが前記ワークロードの前記一意の識別子に関連付けられたDCVSソリューションを含まないとき、前記ワークロードの新しいDCVSソリューションを作成すべきかどうかを決定するための少なくとも1つの命令と、
前記ワークロードの新しいDCVSソリューションを作成すべきであると決定したとき、1つまたは複数のワークロードの要求に基づいて、前記ワークロードの新しいDCVSソリューションを作成するための少なくとも1つの命令と、
前記ワークロードに関連付けられた前記一意の識別子と併せて前記新しいDCVSソリューションを記憶するための少なくとも1つの命令と、
記憶された新しいDCVSソリューションに基づいて、前記DCVSアルゴリズムを再調整するための少なくとも1つの命令と、
再調整されたDCVSアルゴリズムを実行するための少なくとも1つの命令と
を記録する記録媒体。
【請求項２０】
特殊なワークロードが、インパルスワークロード、登録済みワークロード、等時性ワークロード、パルスワークロード、ベストエフォートワークロード、スケジュールワークロード、またはそれらの組合せを含む請求項１９に記載の記録媒体。
【請求項２１】
前記ワークロードが特殊なワークロードに指定されない場合、変更がないDCVSアルゴリズムを実行するための少なくとも1つの命令
をさらに記録する請求項１９に記載の記録媒体。
【請求項２２】
前記ワークロードが前記ワークロードの前記一意の識別子に関連付けられたDCVSソリューションを含むとき、前記ワークロードに関連付けられた前記DCVSソリューションに基づいてDCVSアルゴリズムを再調整するための少なくとも1つの命令
をさらに記録する請求項１９に記載の記録媒体。
【請求項２３】
再調整されたDCVSアルゴリズムを実行するための少なくとも1つの命令
をさらに記録する請求項２２に記載の記録媒体。
【請求項２４】
新しいDCVSソリューションを作成しないことが決定されると、変更がないDCVSアルゴリズムを実行するための少なくとも1つの命令
をさらに記録する請求項１９に記載の記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、その内容が参照により完全に組み込まれる、2010年1月11日に出願された「SYSTEM AND METHOD OF DYNAMICALLY CONTROLLING A PROCESSOR」という名称の米国仮特許出願第61/294,019号の優先権を主張する。
【背景技術】
【０００２】
ポータブルコンピューティングデバイス(PD)は至る所にある。これらのデバイスには、携帯電話、携帯情報端末(PDA)、ポータブルゲーム機、パームトップコンピュータ、および他のポータブル電子デバイスなどがある。これらのデバイスの主要機能に加えて、多くは周辺機能を含む。たとえば、携帯電話は、携帯電話をかけるという主要機能、およびスチールカメラ、ビデオカメラ、全地球測位システム(GPS)ナビゲーション、ウェブブラウジング、電子メールの送受信、テキストメッセージの送受信、プッシュツートーク機能などの周辺機能を含み得る。そのようなデバイスの機能が増加するにつれて、そのような機能をサポートために必要な計算または処理能力も増加する。さらに、計算能力が増加するにつれて、計算能力を提供するプロセッサ(複数可)を効果的に管理する必要性がより高くなる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
したがって、中央処理装置内で動的なクロックおよび電圧スケーリングアルゴリズムを実行する改良された方法が必要である。
【課題を解決するための手段】
【０００４】
図中、別段に規定されていない限り、類似の参照番号は、様々な図の全体を通じて、類似の部分を指す。
【図面の簡単な説明】
【０００５】
【図１】閉位置のポータブルコンピューティングデバイス(PCD)の第1の態様を示す正面図である。
【図２】開位置のPCDの第1の態様を示す正面図である。
【図３】PCDの第2の態様を示すブロック図である。
【図４】処理システムを示すブロック図である。
【図５】中央処理装置内で動的なクロックおよび電圧切替えアルゴリズムを実行する方法の第1の態様を示すフローチャートである。
【図６】時間に対してプロットされた、中央処理装置のワークロードならびに動的なクロックおよび電圧スケーリングで追跡された負荷を示す第1のグラフである。
【図７】中央処理装置内で動的なクロックおよび電圧切替えアルゴリズムを実行する方法の第2の態様を示すフローチャートである。
【図８】時間に対してプロットされた、中央処理装置のワークロードならびに動的なクロックおよび電圧スケーリングで追跡された負荷を示す第2のグラフである。
【図９】時間に対してプロットされた、中央処理装置のワークロードならびに動的なクロックおよび電圧スケーリングで追跡された負荷を示す第3のグラフである。
【図１０】中央処理装置内で動的なクロックおよび電圧切替えアルゴリズムを実行する方法の第3の態様を示すフローチャートである。
【図１１】時間に対してプロットされた、中央処理装置のワークロードならびに動的なクロックおよび電圧スケーリングで追跡された負荷を示す第4のグラフである。
【図１２】時間に対してプロットされた、中央処理装置のワークロードならびに動的なクロックおよび電圧スケーリングで追跡された負荷を示す第5のグラフである。
【図１３】央処理装置内で動的なクロックおよび電圧切替えアルゴリズムを実行する方法の第4の態様を示すフローチャートである。
【図１４】時間に対してプロットされた、中央処理装置のワークロードならびに動的なクロックおよび電圧スケーリングで追跡された負荷を示す第6のグラフである。
【図１５】時間に対してプロットされた、中央処理装置のワークロードならびに動的なクロックおよび電圧スケーリングで追跡された負荷を示す第7のグラフである。
【発明を実施するための形態】
【０００６】
「例示」という語は、本明細書では、「例、実例、または例証の役割を果たす」ことを意味するために使用される。本明細書で「例示」として説明する任意の態様を、必ずしも他の態様より好ましい、または有利であると解釈すべきというわけではない。
【０００７】
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能なコンテンツを有するファイルも含み得る。さらに、本明細書で言及される「アプリケーション」は、たとえば開く必要があり得る文書またはアクセスする必要がある他のデータファイルなど、本質的に実行可能ではないファイルも含み得る。
【０００８】
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能なコンテンツを有するファイルも含み得る。さらに、本明細書で言及される「コンテンツ」は、たとえば開く必要があり得る文書またはアクセスする必要がある他のデータファイルなど、本質的に実行可能ではないファイルも含み得る。
【０００９】
この説明で使用される場合、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアなどコンピュータ関連のエンティティを指すものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で動作するプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータとすることができる。例として、コンピューティングデバイス上で動作するアプリケーションとコンピューティングデバイスの両方は構成要素とすることができる。1つまたは複数の構成要素がプロセスおよび/または実行スレッド内に存在する可能性があり、1つの構成要素が1つのコンピュータ上に局在化されてもよく、および/または2つ以上のコンピュータ間に分散されてもよい。さらに、これらの構成要素は、様々なデータ構造が記憶される様々なコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえばローカルシステム内、分散システム内、および/またはインターネットなど他のシステムを含むネットワーク上で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つまたは複数を実行するための手段として働き得る。
【００２０】
図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に接続され得る。具体的には、並行処理モニタ(parallelism monitor)440は、オペレーティングシステム420内のスケジューラ422に接続され得る。本明細書で説明するように、コントローラ440は、コア410、412、414上のワークロードを監視することができ、それぞれのコア412、414、416上のDCVSアルゴリズム416、417、418を実行する、またはその実行を引き起こすことができる。
【００２４】
特定の態様において、コントローラ440は、ソフトウェアプログラムでもよい。しかし、代替態様では、コントローラ440は、メモリ404の外部にあるハードウェアコントローラとすることができる。いずれにせよ、コントローラ440、メモリ404、コア410、412、414、またはそれらの組合せは、ワークロードのタイプに基づいて、中央処理装置内で動的なクロックおよび電圧切替えアルゴリズムを実行するために、本明細書で説明する方法ステップのうちの1つまたは複数を実行するための手段として働き得る。
【００２５】
図5を参照すると、動的なクロックおよび電圧スケーリング(DCVS)アルゴリズムを実行する方法の第1の態様が示されており、全体的に500と表される。方法500は、ブロック502でDOループで開始し、デバイスが電源投入されると、以下のステップが実行され得る。ブロック504で、コントローラは、CPUのアクティビティを監視することができる。このアクティビティは、シングルコアCPU、マルチコアCPU、複数のシングルコアCPU、複数のマルチコアCPU、またはそれらの組合せのアクティビティとすることができる。さらに、コントローラは、ソフトウェアコントローラ、ハードウェアコントローラ、またはそれらの組合せとすることができる。
【００２６】
決定506で、コントローラは、ワークロードが追加されたかどうかを決定することができる。ワークロードは、ビデオアプリケーション、音声アプリケーション、電子メールアプリケーション、ワイヤレスネットワークアプリケーション、セルラーネットワークアプリケーション、ショートメッセージサービス(SMS)アプリケーション、通信アプリケーション、セキュリティアプリケーション、カレンダアプリケーション、インスタントメッセージングアプリケーション、スチールカメラアプリケーション、全地球測位システム(GPS)アプリケーション、ブラウザアプリケーション、メモ帳アプリケーション、クロックアプリケーション、ゲームアプリケーション、計算機アプリケーション、銀行業務アプリケーション、パスワードキーパーアプリケーション、ヘルプアプリケーション、電子商取引アプリケーション、ソフトウェア配信アプリケーション、検索アプリケーション、オプションアプリケーション、確立アプリケーション、電話アプリケーション、接続管理アプリケーション、セキュリティアプリケーション、任意の他のアプリケーション、またはそれらの組合せとすることができる。
【００２７】
特定の態様において、決定506でワークロードが追加されていない場合、方法500は、ブロック504に戻ることができ、本明細書で説明するように継続することができる。そうでない場合、決定506で、ワークロードが追加されている場合、方法500は、決定508に進み、コントローラは、ワークロードが特殊なワークロード、すなわち、DCVSアルゴリズムによる異なる処理を保証することができる一種のワークロードであるかどうかを決定することができる。特殊なワークロードは、インパルスワークロード(impulse workload)、登録済みワークロード(registered workload)、等時性ワークロード(isochronous workload)、パルスワークロード(pulsed workload)、ベストエフォートワークロード(best effort workload)、スケジュールワークロード(scheduled workload)、またはそれらの組合せとすることができる。コントローラは、ワークロードから受信された入力に基づいて、ワークロードが特殊なワークロードであるかどうかを決定することができる。
【００２８】
決定508で、ワークロードが特殊ではない場合、方法500は、ブロック510に進むことができ、コントローラは、変更がないDCVSアルゴリズムを実行することができる。その後、方法500は決定512に移動することができ、コントローラは、デバイスが電源切断されたかどうかを決定することができる。デバイスが電源切断されていない場合、すなわち、デバイスがオンのままである場合、方法500は、ブロック504に戻ることができ、本明細書で説明するように継続することができる。そうでない場合、デバイスが電源切断された場合、方法500は、終了することができる。
【００２９】
決定508に戻って、ワークロードが特殊なワークロードである場合、方法500は、ブロック513に進むことができ、コントローラは、特殊なワークロードの登録を受信することができる。ブロック514で、コントローラは、一意の識別子を特殊なワークロードに割り当てることができる。次いで、決定516で、コントローラは、DCVSソリューションがワークロードに関連付けられているかどうか、すなわち、DCVSアルゴリズムへの変更または改変がワークロードに関連付けられているかどうかを決定することができる。ワークロードは、ワークロードに関連付けられたタイプ、およびワークロードに関連付けられソリューションを示すことができる。
【００３０】
DCVSソリューションが特殊なワークロードに関連付けられている場合、方法500は、ブロック518に進むことができ、コントローラは、特殊なワークロードに関連付けられたソリューションに基づいて、DCVSアルゴリズムを自動的に再調整することができる。次に、ブロック520で、コントローラは、再調整されたDCVSアルゴリズムを実行することができる。次いで、方法500は、決定512に移動することができ、本明細書で説明するように継続することができる。
【００３１】
決定516に戻ると、特殊なワークロードに関連付けられたDCVSソリューションがない場合、方法500は、決定522に進むことができ、コントローラは、新しいソリューションを作成すべきかどうかを決定することができる。たとえば、コントローラは、ワークロードが予め定められたソリューションを有するかどうかを決定するために、ワークロードに問い合わせることができる。そうであれば、コントローラは、そのソリューションを実施することができる。代わりに、コントローラは、特定のワークロードの要求についてワークロードに問い合わせることができ、ワークロードの要求に基づいて、ワークロードの新しいソリューションを作成することができる。ワークロードの要求は、たとえば、100万命令/秒(MIPS)で表され得る。別の態様では、ワークロードの要求は、たとえば、キロヘルツの値(kHz)、メガヘルツ(MHz)の値、ギガヘルツ(GHz)の値など、周波数として表され得る。さらに別の態様では、ワークロードの要求は、たとえば、キロビット/秒(KB/S)、メガビット/秒(MB/S)、ギガビット/秒(GB/S)、またはそれらの組合せなど、データ転送レートとして表され得る。ワークロードの要求は、応答度の値をさらに含み得る。応答度は、システム設定の変化率でもよい。たとえば、応答度は、CPU周波数の変化率、電圧の変化率、またはそれらの組合せでもよい。さらに、応答度は、ミリ秒で表される最大遅延、ミリ秒当たりの周波数(MHz/ms)として表されるCPUスルーレート範囲(slew rate bound)、またはそれらの組合せでもよい。また、ワークロードの要求は、上記のワークロードの要求の任意の組合せを含むことができる。
【００３２】
決定522で、コントローラが新しいソリューションを作成することを決定しない場合、方法500は、ブロック510に進むことができ、本明細書で説明するように継続することができる。そうでない場合、コントローラが新しいソリューションを作成することを決定した場合、方法500は、ブロック524に移動することができ、コントローラは、たとえば、現在のワークロードから受信された1つまたは複数のワークロードの要求に基づいて、現在のワークロードの新しいソリューションを作成することができる。次に、ブロック526で、コントローラは、関連付けられたテーブルまたはデータベースに、新しいソリューションを記憶することができる。ソリューションは、ワークロードに関連付けられた一意の識別子と併せて記憶され得る。次いで、方法500は、ブロック518に移動することができ、本明細書で説明するように継続することができる。
【００３３】
図6は、時間に対してプロットされた、中央処理装置のワークロードならびに動的なクロックおよび電圧スケーリングで追跡された負荷の第1のグラフを示し、全体的に600と表される。図示のように、グラフ600は、ワークロードインジケータ602およびDCVS追跡負荷インジケータ(DCVS tracked load indicator)604を含む。図示のように、ワークロードインジケータ602は、第1のビジーサイクル606および第2のビジーサイクル608を含み得る。第1のビジーサイクル606および第2のビジーサイクル608に含まれるワークロードのタイプが特殊であると決定され、特殊なワークロードに、DCVSアルゴリズムの実行を免除するDCVSソリューションが関連付けられている場合、DCVS追跡負荷インジケータ604は、第1のビジーサイクル606および第2のビジーサイクル608にわたって図示のように比較的平坦なままであり得る。ワークロードが特殊でない、またはワークロードにソリューションが関連付けられていない場合、DCVS追跡負荷インジケータ604は、破線で示すように第1のビジーサイクル606および第2のビジーサイクル608を追跡することができる。
【００３４】
図6に示すように、複数の動作インジケータ610は、特殊なワークロードの特殊な処理をトリガするために使用され得る。動作インジケータ610は、開始ソリューション、停止ソリューション、またはそれらの組合せを含み得る。
【００３５】
図7を参照すると、動的なクロックおよび電圧スケーリング(DCVS)アルゴリズムを実行する方法の第2の態様が示されており、全体的に700と表される。方法700は、ブロック702でDOループで開始し、デバイスが電源投入されると、以下のステップが実行され得る。ブロック704で、コントローラは、CPUのアクティビティを監視することができる。このアクティビティは、シングルコアCPU、マルチコアCPU、複数のシングルコアCPU、複数のマルチコアCPU、またはそれらの組合せのアクティビティとすることができる。さらに、コントローラは、ソフトウェアコントローラ、ハードウェアコントローラ、またはそれらの組合せとすることができる。
【００３６】
決定708で、コントローラは、ワークロードが追加されたかどうかを決定することができる。ワークロードは、ビデオアプリケーション、音声アプリケーション、電子メールアプリケーション、ワイヤレスネットワークアプリケーション、セルラーネットワークアプリケーション、ショートメッセージサービス(SMS)アプリケーション、通信アプリケーション、セキュリティアプリケーション、カレンダアプリケーション、インスタントメッセージングアプリケーション、スチールカメラアプリケーション、全地球測位システム(GPS)アプリケーション、ブラウザアプリケーション、メモ帳アプリケーション、クロックアプリケーション、ゲームアプリケーション、計算機アプリケーション、銀行業務アプリケーション、パスワードキーパーアプリケーション、ヘルプアプリケーション、電子商取引アプリケーション、ソフトウェア配信アプリケーション、検索アプリケーション、オプションアプリケーション、確立アプリケーション、電話アプリケーション、接続管理アプリケーション、セキュリティアプリケーション、任意の他のアプリケーション、またはそれらの組合せとすることができる。
【００３７】
特定の態様において、決定706でワークロードが追加されていない場合、方法700は、ブロック704に戻ることができ、本明細書で説明するように継続することができる。そうでない場合、決定706で、ワークロードが追加されている場合、方法700は、決定708に進むことができ、コントローラは、ワークロードがインパルスワークロードであるかどうかを決定することができる。インパルスワークロードは、キー押下イベント、タッチスクリーンイベント、別のインパルスタイプイベント、またはそれらの組合せとすることができる。さらに、インパルスワークロードは、周知の開始点を有するが、周知の終了および周知の負荷を有していない可能性がある。DCVSアルゴリズムの応答は、各インパルスワークロードの詳細に依存し得る。たとえば、DCVSは、フルパフォーマンスにジャンプすることによってキーパッドイベントに応答することができ、一方、タッチスクリーンイベントは、フルパフォーマンス応答を必要としない場合がある。
【００３８】
決定708で、ワークロードがインパルスワークロードではない場合、方法700は、ブロック710に移動することができ、コントローラは、標準の、すなわち変更がないDCVSアルゴリズムを実行することができる。その後、方法700は、ブロック704に戻ることができ、本明細書で説明するように継続することができる。
【００３９】
決定708に戻ると、追加されたワークロードがインパルスワークロードである場合、方法700は、ブロック712に進むことができ、コントローラは、追加されたワークロードに関連付けられた一意の識別子を割り当てることができる。次に、決定714で、コントローラは、ワークロードに関連付けられたCPU周波数があるかどうかを決定することができる。CPU周波数は、ワークロードに関連付けられた履歴値から決定され得る。履歴値は、ワークロードに関連付けられたコントローラに記憶され得る。
【００４０】
ワークロードに関連付けられたCPU周波数がある場合、方法700は、ブロック716に進むことができ、コントローラは、新しいワークロードを、たとえば、登録済みおよび非登録など、任意の並行するワークロードと統合することができる。たとえば、インパルスに関連付けられた100MIPSの負荷、および50MIPSの他の負荷がある場合、コントローラは、150MIPSにジャンプする。次いで、ブロック717で、コントローラは、統合されたCPU周波数にジャンプすることができる。その後、ブロック718で、コントローラは、現在のCPU周波数からDCVSアルゴリズムを実行することができる。決定720に移動して、コントローラは、デバイスが電源切断されたかどうかを決定することができる。デバイスが電源切断されていない場合、方法700は、ブロック704に戻ることができ、本明細書で説明するように継続することができる。そうでない場合、決定720で、デバイスが電源切断された場合、方法700は、終了することができる。
【００４１】
決定714に戻ると、コントローラがデータベース内に追加されたワークロードに関連付けられたCPU周波数を見つけられない場合、方法700は、ブロック722に移動することができる。ブロック722で、コントローラは、最大CPU周波数にジャンプすることができる。次に、ブロック724で、コントローラは、DCVSアルゴリズムを使用して、最大周波数からDCVSアルゴリズムを実行することができ、ワークロードのための正しい、または適切な周波数値が見つかるまで、CPU周波数を低下させることができる。ブロック726で、コントローラは、周波数を記憶することができる。次いで、方法700は、決定720に移動することができ、本明細書で説明するように継続することができる。
【００４２】
図8は、時間に対してプロットされた、中央処理装置のワークロードならびにDCVS応答の第2のグラフを示し、全体的に800と表される。図示のように、グラフ800は、ワークロードインジケータ802およびDCVS応答インジケータ804を含み得る。図示のように、ワークロードインジケータ802は、インパルスイベントから開始するビジーサイクル806を含み得る。DCVS応答インジケータ804は、ビジーサイクルを厳密に追跡するDCVS応答808を含み得る。DCVS応答808は、インパルスイベントまたは最大CPU周波数に関連付けられた既知の周波数にジャンプすることができる。その後、DCVS応答808は、DCVSアルゴリズムが実行されるにつれて、図8に示すように減少し得る。
【００４３】
図9は、時間に対してプロットされた、中央処理装置のワークロードならびにDCVS応答の第3のグラフを示し、全体的に900と表される。図示のように、グラフ900は、ワークロードインジケータ902およびDCVS応答インジケータ904を含み得る。図示のように、ワークロードインジケータ902は、第1のビジーサイクル906および第2のビジーサイクル908を含み得る。各ビジーサイクル906、908は、インパルスイベントから開始し得る。
【００４４】
DCVS応答インジケータ904は、第1のDCVS応答910および第2のDCVS応答912を含み得る。第1のDCVS応答910は、ワークロードに関連付けられた履歴情報を使用しない応答である。図示のように、第1のDCVS応答910は、最大CPU周波数にジャンプする。その後、第1のDCVS応答910は、DCVSアルゴリズムが実行されるにつれて減少し得る。
【００４５】
第2のDCVS応答912は、ワークロードに関連付けられた履歴情報を使用する応答である。図示のように、第2のDCVS応答912は、ワークロードに以前関連付けられた必要性を満たす、またはわずかに上回るCPU周波数にジャンプする。その後、第2のDCVS応答912は、DCVSアルゴリズムが実行されるにつれて減少し得る。図示のように、DCVSの問題空間から高い応答度のイベントを削除することによって、低い応答度の操作の間、より低い電力が可能になると同時に、高い応答度の操作により良い性能を提供し、それらの同じ操作の電力節約を可能にする。
【００４６】
特定の態様において、インパルス密度が、ワークロードインジケータとして使用され得る。たとえば、DCVSは十分に接近して出現する単一のソースからのインパルスを無視することができるので、インパルスを接近させることによって、DCVS応答を禁止することができる。代わりに、密なインパルス列を有することは、より大きいワークロードを含意し、DCVSを強化することができる。特定の態様において、近接は、ワークロード固有とし得る。
【００４７】
図10を参照すると、動的なクロックおよび電圧スケーリング(DCVS)アルゴリズムを実行する方法の第3の態様が示されており、全体的に1000と表される。方法1000は、ブロック1002でDOループで開始し、デバイスが電源投入されると、以下のステップが実行され得る。ブロック1004で、コントローラは、CPUのアクティビティを監視することができる。このアクティビティは、シングルコアCPU、マルチコアCPU、複数のシングルコアCPU、複数のマルチコアCPU、またはそれらの組合せのアクティビティとすることができる。さらに、コントローラは、ソフトウェアコントローラ、ハードウェアコントローラ、またはそれらの組合せとすることができる。
【００４８】
決定1008で、コントローラは、ワークロードが追加されたかどうかを決定することができる。ワークロードは、ビデオアプリケーション、音声アプリケーション、電子メールアプリケーション、ワイヤレスネットワークアプリケーション、セルラーネットワークアプリケーション、ショートメッセージサービス(SMS)アプリケーション、通信アプリケーション、セキュリティアプリケーション、カレンダアプリケーション、インスタントメッセージングアプリケーション、スチールカメラアプリケーション、全地球測位システム(GPS)アプリケーション、ブラウザアプリケーション、メモ帳アプリケーション、クロックアプリケーション、ゲームアプリケーション、計算機アプリケーション、銀行業務アプリケーション、パスワードキーパーアプリケーション、ヘルプアプリケーション、電子商取引アプリケーション、ソフトウェア配信アプリケーション、検索アプリケーション、オプションアプリケーション、確立アプリケーション、電話アプリケーション、接続管理アプリケーション、セキュリティアプリケーション、任意の他のアプリケーション、またはそれらの組合せとすることができる。
【００４９】
特定の態様において、決定1006でワークロードが追加されていない場合、方法1000は、ブロック1004に戻ることができ、本明細書で説明するように継続することができる。そうでない場合、決定1006で、ワークロードが追加された場合、方法1000は、決定1008に進むことができ、コントローラは、ワークロードの最小CPU要求が受信されたかどうか、すなわち、ワークロードが特定の要求を有する登録されたワークロードであるかどうかを決定することができる。最小CPU要求が受信されていない場合、方法1000は、ブロック1010に進むことができ、コントローラは、標準DCVSアルゴリズムを実行する、またはその実行を引き起こすことができる。その後、方法1000は、決定1012に移動することができる。決定1012で、コントローラは、デバイスが電源切断されたかどうかを決定することができる。デバイスが電源切断されていない場合、方法1000は、ブロック1004に戻ることができ、本明細書で説明するように継続することができる。
【００５０】
1008に戻ると、ワークロードから最小CPU要求が受信された場合、方法1000は、ブロック1014に進むことができる。ブロック1014で、コントローラは、ワークロードから受信された最小CPU要求にジャンプすることができる。次に、ブロック1016で、コントローラは、DCVSにワークロードを実行させない場合がある。言い換えれば、コントローラは、追加されたワークロードをワークロードについてのDCVSアルゴリズムの実行から免除することができる。次いで、方法1000は、決定1012に進むことができ、本明細書で説明するように継続することができる。
【００５１】
図11は、時間に対してプロットされた、中央処理装置のワークロード、DCVS応答、およびCPU応答の第4のグラフを示し、全体的に1100と表される。図示のように、グラフ1100は、ワークロードインジケータ1102、DCVS応答インジケータ1104、およびCPU応答インジケータ1106を含み得る。図示のように、ワークロードインジケータ1102は、ビジーサイクル1108を含み得る。CPU応答インジケータ1106は、CPUが最小性能の必要性の要求に応答することができることを示す。DCVS応答インジケータ1104は、DCVSアルゴリズムがワークロードを無視することができることを示す。
【００５２】
たとえば、ワークロード、タスク、またはイベントが100MIPSの処理を要求し、DCVSアルゴリズムがCPU負荷の100MIPSの増加を同時に認識する場合、DCVSアルゴリズムは、要求されていないタスクに変化がなかったと推測することができる。これによって、DCVSアルゴリズムは、CPU使用における誤ったスパイクを回避できるようになる。そのような場合、CPU応答は、DCVSがワークロードに対して応答することなく、性能クリティカルな立上り領域、および電力クリティカルな立下り領域におけるワークロードを追跡することができる。
【００５３】
図12は、時間に対してプロットされた、中央処理装置のワークロード、DCVS応答、およびCPU応答の第5のグラフを示し、全体的に1200と表される。図示のように、グラフ1200は、ワークロードインジケータ1202、DCVS応答インジケータ1204、およびCPUインジケータ1206を含み得る。図示のように、ワークロードインジケータ1202は、登録済みワークロード1208および未登録ワークロード1210を含み得る。登録済みワークロード1208が出現すると、CPUインジケータ1206は、CPUが第1のCPU応答1212を有し得ることを示し、DCVSインジケータ1204は、DCVSアルゴリズムが応答を有していないことを示す。未登録ワークロード1210が出現すると、CPUインジケータ1206は、第2のCPU応答1214を示し、DCVSインジケータ1204は、DCVS応答1216を示す。DCVSアルゴリズムが登録済みワークロード1208の要求を通知され得るため、DCVSアルゴリズムは、登録済みワークロード1208によって引き起こされる任意の変更に応答することなく、未登録ワークロード1210を追跡することができる。
【００５４】
図13を参照すると、動的なクロックおよび電圧スケーリング(DCVS)アルゴリズムを実行する方法の第1の態様が示されており、全体的に1300と表される。方法1300は、ブロック1302でDOループで開始し、デバイスが電源投入されると、以下のステップが実行され得る。ブロック1304で、コントローラは、CPUのアクティビティを監視することができる。このアクティビティは、シングルコアCPU、マルチコアCPU、複数のシングルコアCPU、複数のマルチコアCPU、またはそれらの組合せのアクティビティとすることができる。さらに、コントローラは、ソフトウェアコントローラ、ハードウェアコントローラ、またはそれらの組合せとすることができる。
【００５５】
決定1308で、コントローラは、ワークロードが追加されたかどうかを決定することができる。ワークロードは、ビデオアプリケーション、音声アプリケーション、電子メールアプリケーション、ワイヤレスネットワークアプリケーション、セルラーネットワークアプリケーション、ショートメッセージサービス(SMS)アプリケーション、通信アプリケーション、セキュリティアプリケーション、カレンダアプリケーション、インスタントメッセージングアプリケーション、スチールカメラアプリケーション、全地球測位システム(GPS)アプリケーション、ブラウザアプリケーション、メモ帳アプリケーション、クロックアプリケーション、ゲームアプリケーション、計算機アプリケーション、銀行業務アプリケーション、パスワードキーパーアプリケーション、ヘルプアプリケーション、電子商取引アプリケーション、ソフトウェア配信アプリケーション、検索アプリケーション、オプションアプリケーション、確立アプリケーション、電話アプリケーション、接続管理アプリケーション、セキュリティアプリケーション、任意の他のアプリケーション、またはそれらの組合せとすることができる。
【００５６】
特定の態様において、決定1306でワークロードが追加されていない場合、方法1300は、ブロック1304に戻ることができ、本明細書で説明するように継続することができる。そうでない場合、決定1306で、ワークロードが追加されている場合、方法1300は、決定1307に進むことができ、コントローラは、ワークロードが等時性ワークロードであるかどうかを決定することができる。等時性ワークロードは、実質的に規則的な持続時間に出現するワークロードとすることができる。あるいは、等時性ワークロードは、実質的に規則的な持続時間に実質的に規則的な間隔で出現するワークロードとすることができる。
【００５７】
ワークロードが等時性ではない場合、方法1300は、ブロック1304に戻ることができ、本明細書で説明するように継続することができる。ワークロードが等時性である場合、方法1300は、ブロック1308に進むことができる。ブロック1308で、コントローラは、ワーク間隔が開始したという表示を受信することができる。さらに、ブロック1310で、コントローラは、ワークロードから示唆されたCPU設定を受信することができる。次に、ブロック1312で、コントローラは、ワークの終了のデッドラインを受信することができる。
【００５８】
決定1314に移動すると、コントローラは、履歴設定がワークロードのために利用可能かどうかを決定することができる。そうであれば、方法1300は、ブロック1316に進むことができ、コントローラは、デッドライン、示唆されたCPU設定および履歴設定に基づいて、たとえば周波数、電圧などのCPU設定を決定することができる。次に、ブロック1318で、コントローラは、ワークが終了すると、ワークを終了するために必要な時間(length of time)および周波数を記憶する。これによって、コントローラは、ワークロードに適応し、以後のワークロード要求時に情報を使用することができる。言い換えれば、これによって、コントローラによる適応学習が可能になる。
【００５９】
次いで、方法1300は、決定1320に移動することができ、コントローラは、デバイスが電源切断されたかどうかを決定することができる。デバイスが電源切断されていない場合、方法1300は、ブロック1304に戻ることができ、本明細書で説明するように継続することができる。そうでない場合、デバイスが電源切断された場合、方法1300は、終了することができる。
【００６０】
決定1314に戻ると、コントローラがワークロードの履歴設定を有していない場合、方法1300は、ブロック1322に進むことができ、コントローラは、デッドラインおよび示唆されたCPU設定に基づいて1つまたは複数のCPU設定を決定することができる。その後、方法1300は、ブロック1318に進むことができ、本明細書で説明するように継続することができる。
【００６１】
特定の使用事例でのワークが間隔間で大部分反復可能である場合、以前のワーク間隔からのデータを使用して、次の間隔で必要なワークの量を予測することが可能である。たとえばコントローラなどの動的なリソースマネージャにその要求を通知するために、使用事例は、ワークが終了する必要があるデッドラインとともに、ワークの間隔が開始したことを示す。ワークが実際に終了したとき、使用事例は、ワークが終了したことを示す。
【００６２】
ワークが終了するまでどれだけの時間があったかに対してワークが終了するのに実際にかかった時間を知っていれば、より電力的に最適でありながら、デッドライン前に処理を終了する代替のリソースの設定を見つけることができる。以後の要求時に、リソースは、同じ情報を受信し、しかし、より電力的に最適でありながら、デッドライン前にワークを終了するリソースの設定を決定するために、過去の履歴を使用することができる。
【００６３】
リソースマネージャが使用事例ごとに保持することができる一連の統計がある。これらの統計は、間隔当たりの平均ワーク、および間隔間のワークの差異を含む。これらの統計は、要求から適応的に決定され、ベンチマークを介してシードされる、または定数として固定され得る。リソース設定当たり実行されるワークの量、および場合によってはリソース設定当たりのそのワークの可変性を含むリソースについて保持され得るいくつかの統計もある。
【００６４】
正しく機能するために、将来の要求は、以前のものに似たワークの要求を有し得る。これが偽であることがわかっている場合がある(たとえば、デコード中のビデオが480iから1080pに変わり、各フレームはここでは根本的に異なる量のワークを有する)。新しい要求が新しいアプリケーションを構成し、任意の以前学習された統計が破棄されるべきであることを使用事例が示すことができる機構を提供することができる。図14および図15に示すように、使用事例がヒントをリソースマネージャに提供することが許容される。このヒントは、ワーク処理が、その必要性を満たすのに十分であると感じるレベルである。ヒントは、動的なリソースマネージャによって無視され得る。
【００６５】
使用事例がヘッドルームの要求をリソースマネージャに提供することが許容される。このヘッドルームの仕様は、リソースの設定を調整するときにリソースが維持しなければならない処理マージンの量である。代わりに、ヘッドルームは、ワークロードの差異を介して導出され得る。
【００６６】
インジケータにより、ターゲットが使用事例とは無関係に消費電力のために最適化することが可能である、すなわち、使用事例の実装は同じままであり、電力最適化アルゴリズムとは無関係、さらには潜在的にターゲットとは無関係である。単純な最初の実装は、最大でリソースを実行し、性能を保証することを含み得る。後で、オフラインの最適化、または適応的に決定された統計を介して、リソースの設定は、使用事例の実装を変更する必要なく、より電力的に最適な設定に変更され得る。
【００６７】
本明細書で説明する方法のそれぞれにおいて、動的なリソースマネージャ、すなわちコントローラが完全に汎用となるよう試みるというよりむしろ、動的なリソースマネージャはタスクの要求について直接通知され得る。これによって、動的なリソースマネージャは、より良いリソース管理を決定することができる。動的なリソースマネージャに性能の要求を通知することから利益を得る使用事例またはワークロードを識別することができ、要求が正式化され得る。さらに、動的なリソースマネージャに対するインターフェースは、ワークロードからの情報を統合するように拡大され得る。
【００６８】
動的に管理されたリソースに対するインターフェースは、たとえば、必須、等時性、インパルスなど、一連の共通のワークモデルのサポートを含むことができる。すべての共通のワークモデルは、ライブラリに入れることができ、リソースオーサーの裁量で任意の特定のリソースによってサポートされるようにしてもよく、またはサポートされなくてもよい。さらに、これによって、リソースオーサーは、それら自体の、潜在的にカスタムのワークモデルを定義することができることができ、クライアントはこれらの要求を発行することもできる。これらのカスタムワークモデルは、リソースにアクティブなクライアントのニーズを通知し、DCVSアルゴリズムの必要な普遍性を最小化し、最適化の機会を増加させるために使用され得る。
【００６９】
特定の態様において、追加のワークモデルは、パルスワークロード、すなわち、あるレベルから開始し、所与の時間間隔で自動的に終了するワークロードを含み得る。さらに、ワークモデルは、実行できるが、性能クリティカルではないワークがあり、任意に遅らせることができるというヒントを含み得るベストエフォートワークロードを含むことができる。また、ワークモデルは、ある量のワークが将来の定義された時点で必要とされる旨の通知を含むことができるスケジュールワークロードを含むことができる。
【００７０】
本明細書で説明する方法によって、他の使用事例または他のリソースに対する影響なく、DCVSアルゴリズムの問題空間を任意に低減し、特定の使用事例を任意に最適化することができる。
【００７１】
本明細書で説明する方法は、DCVSアルゴリズムへの追加の入力をさらに含み得る。たとえば、これらの追加の入力は、アイドルの配布信号、割込みファイヤリング信号、およびタイマーファイヤリング信号を含むことができる。さらに、割込みおよびタイマーの配布が、DCVSアルゴリズムへの追加の入力として使用され得る。これらの入力を含むことによって、DCVSアルゴリズムは、より向上したシステムの知識を有することによって、より効果的かつ効率的に機能することができる。
【００７２】
これらの入力は、たとえばオーディオ再生など、モードを検出し、検出されたケースのより最適なソリューションをもたらすようにDCVSアルゴリズムを調整するために使用され得る。入力は、たとえば入ってくる電話、ユーザイベント、または、さらにはバッファオーディオコンテンツへの不揮発性(NV)メモリアクセスの検出など、モードの変更を検出するためにも使用され得る。さらに、これらの入力は、実質的に最小のクライアントの対話によるDCVSアルゴリズムの調整を可能にすることができる。
【００７３】
本明細書で説明する方法ステップは、必ずしも説明したような順序で実行される必要はないことを理解されたい。さらに、たとえば「その後」、「次いで」、「次に」などの語は、ステップの順序を限定するものではない。これらの語は、単に方法ステップの説明を介して読者を導くために使用されている。さらに、本明細書で説明する方法は、ポータブルコンピューティングデバイス(PCD)上で実行可能であるものとして説明されている。PCDは、携帯電話デバイス、携帯情報端末デバイス、スマートブックコンピューティングデバイス、ネットブックコンピューティングデバイス、ラップトップコンピューティングデバイス、デスクトップコンピューティングデバイス、またはそれらの組合せとすることができる。さらに、本明細書で説明される方法ステップは、シングルコアプロセッサ、マルチコアプロセッサ、複数のシングルコアプロセッサ、複数のマルチコアプロセッサ、またはそれらの任意の組合せ上で実行され得る。また、方法は、本明細書では、様々なタイプのプロセッサを動的に制御するために使用され得る。たとえば、方法は、本明細書では、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)などを制御するために使用され得る。
【００７４】
1つまたは複数の例示的な態様において、記載の機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装した場合、機能は、機械可読媒体、すなわちコンピュータ可読媒体などのコンピュータプログラム製品に1つまたは複数の命令またはコードとして記憶され、またはそれを介して送信され得る。コンピュータ可読媒体は、ある位置から別の位置へのコンピュータプログラムの転送を容易にする任意の媒体を含むコンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の使用可能な媒体とすることができる。限定ではなく、例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、または他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または、命令またはデータ構造の形態で所望のプログラムコードを運ぶまたは記憶するために使用され、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。また、任意の接続は、厳密には、コンピュータ可読媒体と呼ばれる。たとえば、ソフトウェアが同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、またはワイヤレス技術、たとえば赤外線、無線、およびマイクロ波を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、赤外線、無線、およびマイクロ波などの同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、またはワイヤレス技術は媒体の定義内に含まれる。本明細書で使用する場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フレキシブルディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるものとする。
【００７５】
選択された態様が例示され、詳細に説明され、記載されているが、以下の特許請求の範囲によって定義された本発明の趣旨および範囲から逸脱することなく、様々な置換および改変を加えることができることを理解されよう。
【符号の説明】
【００７６】
100  ポータブルコンピューティングデバイス
102  ハウジング
104  上側ハウジング部
106  下側ハウジング部
108  ディスプレイ
110  トラックボール入力デバイス
112  電源投入ボタン
114  電源切断ボタン
116  インジケータライト
118  スピーカ
120  マルチボタンキーボード
122  リセットボタン
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  ステレオスピーカ
356  ステレオスピーカ
358  マイクロフォン増幅器
360  マイクロフォン
362  FM無線チューナ
364  FMアンテナ
366  ステレオヘッドフォン
368  RFトランシーバ
370  RFスイッチ
372  RFアンテナ
374  キーパッド
376  マイクロフォンを備えるモノヘッドセット
378  バイブレータデバイス
380  電源装置
388  ネットワークカード
400  処理システム
402  CPU
404  メモリ
410  第0のコア
412  第1のコア
414  第Nのコア
416  第1のDCVSアルゴリズム
417  第2のDCVSアルゴリズム
418  第NのDCVSアルゴリズム
420  オペレーティングシステム
422  スケジューラ
424  第1の実行待ち行列
426  第2の実行待ち行列
428  第Nの実行待ち行列
430  第1のアプリケーション
432  第2のアプリケーション
434  第Nのアプリケーション
436  タスク
440  コントローラ
【図１】
0005601731.tif 000002
【図２】
0005601731.tif 000003
【図３】
0005601731.tif 000004
【図４】
0005601731.tif 000005
【図５】
0005601731.tif 000006
【図７】
0005601731.tif 000007
【図１０】
0005601731.tif 000008
【図１３】
0005601731.tif 000009
【図６】
0005601731.tif 000010
【図８】
0005601731.tif 000011
【図９】
0005601731.tif 000012
【図１１】
0005601731.tif 000013
【図１２】
0005601731.tif 000014
【図１４】
0005601731.tif 000015
【図１５】
0005601731.tif 000016