(57)【特許請求の範囲】
【請求項１】
少なくとも1つのプロセッサおよび複数のプロセッサリソースを有するポータブルコンピューティングデバイスのアプリケーション状態を管理するための方法であって、
メモリで第1のリソース状態セットおよび第2のリソース状態セットを維持するステップと、
前記第1のリソース状態セットに対応する第1のアプリケーション状態で動作するプロセッサに対し、前記第1のアプリケーション状態から前記第2のリソース状態セットに対応する第2のアプリケーション状態に移行することを求める要求を出すステップと、
コントローラにより、前記第2のリソース状態セットで示される状態へのリソース移行を始める開始時間を、前記第2のリソース状態セットで示される状態へのリソース移行を完了させるまでの推定処理時間量に基づいてスケジュールするステップと、
スケジュールされた開始時間に、前記コントローラにより、1つまたは複数のリソースの状態を、前記第1のリソース状態セットによって示される状態から前記第2のリソース状態セットによって示される状態に切り替えるプロセスを始めるステップと
を含み、
開始時間をスケジュールするステップは、
第1のプロセッサに対して出される第1の要求に関連する状態を切り替える第1のプロセスと第2のプロセッサに対して出される第2の要求に関連する状態を切り替える第2のプロセスとの間に競合状態が存在するか否かを判断するステップと、
競合状態が存在すると判断された場合に、開始時間を修正することによって前記競合状態を緩和するステップと
を含む、方法。
【請求項２】
前記第1のリソース状態セットは、前記プロセッサのスリープアプリケーション状態に対応するスリープリソース状態セットであり、
前記第2のリソース状態セットは、前記プロセッサのアクティブアプリケーション状態に対応するアクティブリソース状態セットである、請求項1に記載の方法。
【請求項３】
前記開始時間を修正するステップは、前記第1のプロセスおよび前記第2のプロセスのうちの1つの開始時間を修正して、前記第1のプロセスに関連する処理時間が、前記第2のプロセスに関連する処理時間と重複しないようにするステップを含む、請求項１に記載の方法。
【請求項４】
前記開始時間を修正するステップは、前記第1のプロセスおよび前記第2のプロセスのうちの1つの開始時間を修正して、前記第2のプロセスのうちのいずれかが実行される前に前記第1のプロセスの第1の部分が実行され、前記第2のプロセスの少なくとも一部分が実行された後に前記第1のプロセスの第2の部分が実行されるようにするステップを含む、請求項１に記載の方法。
【請求項５】
前記ポータブルコンピューティングデバイスは、
セルラー電話、衛星電話、ページャ、携帯情報端末(PDA)、スマートフォン、ナビゲーションデバイス、スマートブックまたはリーダー、メディアプレーヤ、およびワイヤレス接続を有するラップトップコンピュータのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項６】
少なくとも1つのプロセッサおよび複数のプロセッサリソースを有するポータブルコンピューティングデバイスのアプリケーション状態を管理するためのコンピュータシステムであって、
処理エンティティを含み、前記処理エンティティは、
メモリで第1のリソース状態セットおよび第2のリソース状態セットを維持するステップと、
前記第1のリソース状態セットに対応する第1のアプリケーション状態で動作するプロセッサに対し、前記第1のアプリケーション状態から前記第2のリソース状態セットに対応する第2のアプリケーション状態に移行することを求める要求を出すステップと、
コントローラにより、前記第2のリソース状態セットで示される状態へのリソース移行を始める開始時間を、前記第2のリソース状態セットで示される状態へのリソース移行を完了させるまでの推定処理時間量に基づいてスケジュールするステップと、
スケジュールされた開始時間に、前記コントローラにより、1つまたは複数のリソースの状態を、前記第1のリソース状態セットによって示される状態から前記第2のリソース状態セットによって示される状態に切り替えるプロセスを始めるステップと
を行うように動作可能であり、
開始時間をスケジュールするステップは、
第1のプロセッサに対して出される第1の要求に関連する状態を切り替える第1のプロセスと第2のプロセッサに対して出される第2の要求に関連する状態を切り替える第2のプロセスとの間に競合状態が存在するか否かを判断するステップと、
競合状態が存在すると判断された場合に、開始時間を修正することによって前記競合状態を緩和するステップと
を含む、コンピュータシステム。
【請求項７】
前記第1のリソース状態セットは、前記プロセッサのスリープアプリケーション状態に対応するスリープリソース状態セットであり、
前記第2のリソース状態セットは、前記プロセッサのアクティブアプリケーション状態に対応するアクティブリソース状態セットである、請求項６に記載のコンピュータシステム。
【請求項８】
前記開始時間を修正するステップは、前記第1のプロセスおよび前記第2のプロセスのうちの1つの開始時間を修正して、前記第1のプロセスに関連する処理時間が、前記第2のプロセスに関連する処理時間と重複しないようにするステップを含む、請求項６に記載のコンピュータシステム。
【請求項９】
前記開始時間を修正するステップは、前記第1のプロセスおよび前記第2のプロセスのうちの1つの開始時間を修正して、前記第2のプロセスのうちのいずれかが実行される前に前記第1のプロセスの第1の部分が実行され、前記第2のプロセスの少なくとも一部分が実行された後に前記第1のプロセスの第2の部分が実行されるようにするステップを含む、請求項６に記載のコンピュータシステム。
【請求項１０】
前記ポータブルコンピューティングデバイスは、
セルラー電話、衛星電話、ページャ、携帯情報端末(PDA)、スマートフォン、ナビゲーションデバイス、スマートブックまたはリーダー、メディアプレーヤ、およびワイヤレス接続を有するラップトップコンピュータのうちの少なくとも1つを含む、請求項６に記載のコンピュータシステム。
【請求項１１】
少なくとも1つのプロセッサおよび複数のプロセッサリソースを有するポータブルコンピューティングデバイスのアプリケーション状態を管理するためのコンピュータシステムであって、
少なくとも1つのプロセッサおよび複数のプロセッサリソースを有するポータブルコンピューティングデバイスのアプリケーション状態を管理するための手段を含み、前記手段は、
メモリで第1のリソース状態セットおよび第2のリソース状態セットを維持するための手段と、
前記第1のリソース状態セットに対応する第1のアプリケーション状態で動作するプロセッサに対し、前記第1のアプリケーション状態から前記第2のリソース状態セットに対応する第2のアプリケーション状態に移行することを求める要求を出すための手段と、
コントローラにより、前記第2のリソース状態セットで示される状態へのリソース移行を始める開始時間を、前記第2のリソース状態セットで示される状態へのリソース移行を完了させるまでの推定処理時間量に基づいてスケジュールするための手段と、
前記コントローラにより、スケジュールされた開始時間に、1つまたは複数のリソースの状態を、前記第1のリソース状態セットによって示される状態から前記第2のリソース状態セットによって示される状態に切り替えるプロセスを始めるための手段と
を含み、
開始時間をスケジュールするための前記手段は、
第1のプロセッサに対して出される第1の要求に関連する状態を切り替える第1のプロセスと第2のプロセッサに対して出される第2の要求に関連する状態を切り替える第2のプロセスとの間に競合状態が存在するか否かを判断するための手段と、
競合状態が存在すると判断された場合に、開始時間を修正することによって前記競合状態を緩和するための手段と
を含む、コンピュータシステム。
【請求項１２】
前記第1のリソース状態セットは、前記プロセッサのスリープアプリケーション状態に対応するスリープリソース状態セットであり、
前記第2のリソース状態セットは、前記プロセッサのアクティブアプリケーション状態に対応するアクティブリソース状態セットである、請求項１１に記載のコンピュータシステム。
【請求項１３】
前記開始時間を修正するための前記手段は、前記第1のプロセスおよび前記第2のプロセスのうちの1つの開始時間を修正して、前記第1のプロセスに関連する処理時間が、前記第2のプロセスに関連する処理時間と重複しないようにするための手段を含む、請求項１１に記載のコンピュータシステム。
【請求項１４】
前記開始時間を修正するための前記手段は、前記第1のプロセスおよび前記第2のプロセスのうちの1つの開始時間を修正して、前記第2のプロセスのうちのいずれかが実行される前に前記第1のプロセスの第1の部分が実行され、前記第2のプロセスの少なくとも一部分が実行された後に前記第1のプロセスの第2の部分が実行されるようにするための手段を含む、請求項１１に記載のコンピュータシステム。
【請求項１５】
前記ポータブルコンピューティングデバイスは、
セルラー電話、衛星電話、ページャ、携帯情報端末(PDA)、スマートフォン、ナビゲーションデバイス、スマートブックまたはリーダー、メディアプレーヤ、およびワイヤレス接続を有するラップトップコンピュータのうちの少なくとも1つを含む、請求項１１に記載のコンピュータシステム。
【請求項１６】
少なくとも1つのプロセッサおよび複数のプロセッサリソースを有するポータブルコンピューティングデバイスのアプリケーション状態を管理するためのプロセッサ実行可能命令が記録されているコンピュータ可読記録媒体であって、前記プロセッサ実行可能命令は、処理エンティティに、
メモリで第1のリソース状態セットおよび第2のリソース状態セットを維持するステップと、
前記第1のリソース状態セットに対応する第1のアプリケーション状態で動作するプロセッサに対し、前記第1のアプリケーション状態から前記第2のリソース状態セットに対応する第2のアプリケーション状態に移行することを求める要求を出すステップと、
コントローラにより、前記第2のリソース状態セットで示される状態へのリソース移行を始める開始時間を、前記第2のリソース状態セットで示される状態へのリソース移行を完了させるまでの推定処理時間量に基づいてスケジュールするステップと、
スケジュールされた開始時間に、前記コントローラにより、1つまたは複数のリソースの状態を、前記第1のリソース状態セットによって示される状態から前記第2のリソース状態セットによって示される状態に切り替えるプロセスを始めるステップと
を含む動作を実行させるように構成され、
前記プロセッサ実行可能命令は、前記処理エンティティに、
第1のプロセッサに対して出される第1の要求に関連する状態を切り替える第1のプロセスと第2のプロセッサに対して出される第2の要求に関連する状態を切り替える第2のプロセスとの間に競合状態が存在するか否かを判断するステップと、
競合状態が存在すると判断された場合に、前記開始時間を修正することによって前記競合状態を緩和するステップと
によって、前記開始時間をスケジュールさせるように構成される、コンピュータ可読記録媒体。
【請求項１７】
前記第1のリソース状態セットは、前記プロセッサのスリープアプリケーション状態に対応するスリープリソース状態セットであり、
前記第2のリソース状態セットは、前記プロセッサのアクティブアプリケーション状態に対応するアクティブリソース状態セットである、請求項１６に記載のコンピュータ可読記録媒体。
【請求項１８】
前記プロセッサ実行可能命令は、前記処理エンティティに、前記第1のプロセスおよび前記第2のプロセスのうちの1つの開始時間を修正して、前記第1のプロセスに関連する処理時間が、前記第2のプロセスに関連する処理時間と重複しないようにするステップによって、前記開始時間を修正させるように構成される、請求項１６に記載のコンピュータ可読記録媒体。
【請求項１９】
前記プロセッサ実行可能命令は、前記処理エンティティに、前記第1のプロセスおよび前記第2のプロセスのうちの1つの開始時間を修正して、前記第2のプロセスのうちのいずれかが実行される前に前記第1のプロセスの第1の部分が実行され、前記第2のプロセスの少なくとも一部分が実行された後に前記第1のプロセスの第2の部分が実行されるようにするステップによって、前記開始時間を修正させるように構成される、請求項１６に記載のコンピュータ可読記録媒体。
【請求項２０】
前記ポータブルコンピューティングデバイスは、
セルラー電話、衛星電話、ページャ、携帯情報端末(PDA)、スマートフォン、ナビゲーションデバイス、スマートブックまたはリーダー、メディアプレーヤ、およびワイヤレス接続を有するラップトップコンピュータのうちの少なくとも1つを含む、請求項１６に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権および関連出願に関する陳述
「METHOD AND SYSTEM FOR RAPID ENTRY INTO AND FOR RAPID EXITING FROM SLEEP STATES FOR PROCESSORS OF A PORTABLE COMPUTING DEVICE」と題する2010年12月21日に出願された米国仮特許出願第61/425,677号の出願日の利益、および「MINIMIZING RESOURCE LATENCY BETWEEN PROCESSOR APPLICATION STATES BY SCHEDULING RESOURCE SET TRANSITIONS」と題する2011年10月7日に出願された米国仮特許出願第61/544,927号の出願日の利益が本明細書によって主張され、それらの明細書は、本参照により全文が本明細書に組み込まれる。本出願は、「MINIMIZING RESOURCE LATENCY BETWEEN PROCESSOR APPLICATION STATES IN A PORTABLE COMPUTING DEVICE BY USING A NEXT-ACTIVE STATE SET」と題する______________に出願された同時係属の米国特許出願第_________号に関係し、本出願は、「METHOD AND SYSTEM FOR RAPID ENTRY INTO AND FOR RAPID EXITING FROM SLEEP STATES FOR PROCESSORS OF A PORTABLE COMPUTING DEVICE」と題する2011年3月22日に出願された同時係属の米国特許出願第13/069,071号に関係しており、両出願が本出願の譲受人に譲渡される。
【背景技術】
【０００２】
ポータブルコンピューティングデバイス(「PCD」)は、個人レベルおよび専門レベルにおいて人々に必要なものになりつつある。これらのデバイスは、セルラー電話、携帯情報端末(「PDA」)、ポータブルゲームコンソール、パームトップコンピュータ、および他のポータブル電子デバイスを含み得る。
【０００３】
PCDは通常、中央処理装置、デジタル信号プロセッサなどを含む複数の処理ユニットから一般的に作られる複雑でコンパクトな電子パッケージングを有する。このハードウェアの大部分は、当業者によって理解されるようにSystem-on-a-chip(「SOC」)設計の一部であり得る。
【０００４】
従来型のPCDはたいてい、様々なSOCのそれぞれのプロセッサが低電力状態に入ろうとするときに、かなりの遅延時間に遭遇する。低電力状態では、プロセッサまたは同様のサブシステムはアプリケーションプログラムを実行していないか、さもなければ事実上アイドル状態にあり、こうした低電力状態は当業者によって理解されるようにスリープ状態とも呼ばれる。
【０００５】
従来型のプロセッサが直面する1つの問題は、プロセッサがスリープ状態に入るために、たいてい、ソフトウェアにおいていくつかの通信が生じることである。この問題は、いくつかのリソースが、複数のSOCサブシステム間で状態を調整する必要がある共用リソースであることによって、さらに複雑になっている。
【０００６】
SOCの所与のサブシステム内において、ローカルリソースの管理は、たいてい容易であり、それぞれのオペレーティングシステムのアイドル状況から行われ得る。しかしながら、共用リソースのシャットダウンを管理するために、状態はたいてい、当該リソースのコントローラにより調整されなければならない。従来型の解決策は、サブシステムがスリープ状態に入るのを許容される前にソフトウェア内の同期ハンドシェイクを使用することによって、このシャットダウンの複雑性に対処してきた。この手法は次のようないくつかの理由で不利である。ソフトウェアハンドシェイクは遅い。ソフトウェアハンドシェイクはあらゆる種類の遅延、特に割込みサービスおよびコンテキスト切替えの問題を起こしやすい。
【０００７】
ソフトウェアハンドシェイクは電力節約を遅らせる。ハンドシェイクはソフトウェア内であるので、命令処理コアはすべてのハンドシェイクが完了するまで維持される必要がある。プロセッサコアは大きく複雑であるため、これは電力節約上、非常に不利である。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
したがって、当技術分野で必要なものは、PCDのプロセッサがソフトウェアハンドシェイクなしでスリープ状態に入れるようにするための方法およびシステムである。
【課題を解決するための手段】
【０００９】
ポータブルコンピューティングデバイスのスリープ状態およびアクティブ状態などのアプリケーション状態を管理するための方法およびシステムについて説明する。アプリケーション状態に対応するリソース状態セットがメモリで維持される。第1のリソース状態セットに対応する第1のアプリケーション状態で動作するプロセッサに対し、第1のアプリケーション状態から第2のリソース状態セットに対応する第2のアプリケーション状態に移行することを求める要求が出され得る。第2のリソース状態セットで示される状態へのリソース移行を始める開始時間が、リソース移行を完了させるまでの推定処理時間量に基づいてスケジュールされる。スケジュールされた開始時間に、1つまたは複数のリソースの状態が、第1のリソース状態セットによって示される状態から第2のリソース状態セットによって示される状態に切り替えられるプロセスが始まる。リソース状態を移行させるプロセスを、プロセッサが第2のアプリケーション状態に入り次第リソース状態を利用できるようにジャストインタイムでプロセスを完了させることができる時間に始めるようにスケジュールすることは、リソース待ち時間の悪影響を最小化するのに寄与する。
【００１０】
図中、別段に規定されていない限り、同様の参照番号は、様々な図の全体を通じて、同様の部分を指す。「102A」または「102B」のような文字指定を伴う参照番号について、文字指定は、同じ図に存在する2つの同様の部分または要素を区別し得る。参照番号の文字指定は、参照番号が、すべての図において同じ参照番号を有するすべての部分を包含することが意図される場合には、省略されることがある。
【図面の簡単な説明】
【００１１】
【図１】ポータブルコンピューティングデバイス(PCD)の一実施形態を示す機能ブロック図である。
【図２】コントローラ、システムパワーマネージャ、マスタプロセッサ、低レベルドライバ、共用リソース、およびローカルリソースの間の関係を示す機能ブロック図である。
【図３】コントローラおよびトリガセットに関する詳細を示す機能ブロック図である。
【図４】プロセッサの例示的なアクティブ/スリープトリガセットを示す図である。
【図５】トリガセットを管理し、別途プロセッサをアウェイク状態のような第1のアプリケーション状態からスリープ状態のような第2のアプリケーション状態に移行させるための方法を示す論理フローチャートである。
【図６】トリガセットを管理し、別途プロセッサをスリープ状態のような第2のアプリケーション状態からアウェイク状態のような第3のアプリケーション状態に移行させるための方法を示す論理フローチャートである。
【図７】コントローラバッファメモリの機能ブロック図である。
【図８】プロセッサをアウェイク状態のような第1のアプリケーション状態からスリープ状態のような第2のアプリケーション状態に移行させるための代替方法を示す論理フローチャートである。
【図９】代替のコントローラバッファメモリの機能ブロック図である。
【図１０】プロセッサをアウェイク状態のような第1のアプリケーション状態からスリープ状態のような第2のアプリケーション状態に移行させるための別の代替方法を示す論理フローチャートである。
【図１１】2つの要求に関連する処理間の競合状態を示すタイムラインである。
【図１２】図11の競合状態を緩和するための例示的な方法の結果を示すタイムラインである。
【図１３】リソース状態を変更するプロセスをスケジュールすることを含む、プロセッサをスリープアプリケーション状態からアウェイクアプリケーション状態に移行させるための方法を示す図6に類似した論理フローチャートである。
【図１４】リソース状態を変更するプロセスをスケジュールする際の競合状態を緩和するための方法を示す論理フローチャートである。
【図１５】スケジュールされた要求およびスケジュールされていない要求に関連する処理間の競合状態を示すタイムラインである。
【図１６】図15の競合状態を緩和するための例示的な方法の結果を示すタイムラインである。
【図１７】図15の競合状態を緩和するための第2の例示的な方法の結果を示すタイムラインである。
【図１８】図16の競合状態を緩和するための別の例示的な方法の結果を示すタイムラインである。
【図１９】あるリソース状態セットへの移行に関連する処理または作業の部分を示すタイムラインである。
【図２０】実際の作業が予定よりも早く完了したときの浪費された電力状態を示すタイムラインである。
【図２１】図20の浪費された電力状態を緩和するための例示的な方法の結果を示すタイムラインである。
【図２２】作業の部分を示す図17に類似したタイムラインである。
【図２３】複数のリソース状態セット移行要求に対処することに関連するプロセスをスケジュールするための方法を示す論理フローチャートである。
【発明を実施するための形態】
【００１２】
「例示的な」という語は、「例、実例、または具体例としての役割を果たすこと」を意味するように本明細書において用いられている。「例示的な」ものとして本明細書で説明する何らかの態様は、必ずしも他の態様よりも好ましい、または有利であると解釈されるわけではない。
【００１３】
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能なコンテンツを有するファイルを含むこともある。加えて、本明細書で言及する「アプリケーション」は、開封される必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能ではないファイルを含むこともある。
【００１４】
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能なコンテンツを有するファイルを含むこともある。加えて、本明細書で言及する「コンテンツ」は、開封される必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能ではないファイルを含むこともある。
【００１５】
本明細書で使用される場合、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、実行中のソフトウェアを問わず、コンピュータ関連のエンティティを指すことが意図されている。たとえば構成要素は、プロセッサ上で作動しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラムおよび/またはコンピュータであってよいが、これらであることに限定されない。例を挙げると、コンピューティングデバイス上で作動しているアプリケーションとコンピューティングデバイスの両方が構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行スレッドの中に存在してよく、1つの構成要素を1つのコンピュータに局在化すること、および/または2つ以上のコンピュータ間に分散することが可能である。加えて、これらの構成要素は、様々なデータ構造を記憶している様々なコンピュータ可読媒体から実行することができる。各構成要素は、1つまたは複数のデータパケット(たとえば、信号を介してローカルシステム、分散システムにおける別の構成要素と相互作用するある構成要素からのデータ、および/または信号を介してインターネットなどのネットワーク上で他のシステムと相互作用するある構成要素からのデータ)を有する信号に従うなどしてローカルプロセスおよび/またはリモートプロセスを介して通信することができる。
【００１６】
本明細書では、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス電話」、「ワイヤレス通信デバイス」、および「ワイヤレスハンドセット」という用語は交換可能に用いられる。第3世代(「3G」)および第4世代(「4G」)のワイヤレス技術が出現したことによって、利用可能な帯域が拡大されたので、より多くのワイヤレス機能を備えたより携帯が容易なコンピューティングデバイスが利用可能になっている。
【００１７】
本明細書では、「ポータブルコンピューティングデバイス」(「PCD」)という用語は、バッテリーなど限られた容量の電源で動作する任意のデバイスを説明するために使用される。何十年もの間バッテリー式PCDが使用されてきたが、第3世代(「3G」)および第4世代(「4G」)ワイヤレス技術の出現とともにもたらされた充電式バッテリーの技術的進歩は、複数の機能を有する多数のPCDを可能にした。したがって、PCDは、中でも、セルラー電話、衛星電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、スマートブックまたはリーダー、メディアプレーヤ、上述したデバイスの組合せ、およびワイヤレス接続を有するラップトップコンピュータであってよい。
【００１８】
図1:プロセッサアプリケーション状態間のリソース待ち時間を最小化するためのPCD100の要素
図1を参照すると、この図は、PCD100内のプロセッサ110、126の迅速なスリープ状態を管理するための方法およびシステムを実現するためのワイヤレス電話の形態によるPCD100の例示的で非限定的な態様の機能ブロック図である。図示のように、PCD100は、マルチコアである第1の中央処理装置(「CPU」)110A、シングルコアタイプである第2のCPU110B、およびアナログ信号プロセッサ126を含むオンチップシステム102を含む。
【００１９】
これらの3つのプロセッサ110A、110B、および126は連結され得る。第1のCPU110Aは、当業者によって理解されるように第0のコア222、第1のコア224、および第Nのコア230を含むことができる。代替実施形態では、2つのCPU110を使用する代わりに、当業者によって理解されるように2つのデジタル信号プロセッサ(「DSP」)を用いることもできる。さらなる例示的な実施形態では、当業者によって理解されるように前述のいずれかを組み合わせて使用することができる。
【００２０】
図1は、1つまたは複数のコントローラモジュール101を含む。この説明の残り部分では、コントローラモジュール101を複数形ではなく単数形でコントローラ101と呼ぶ。当業者は、本発明から逸脱することなく、コントローラ101を様々な部分に分割し、異なるプロセッサ110、126によって実行することができることを認識されよう。代替的に、コントローラ101を、単一の要素として編成し、単一のプロセッサ110または126によって実行することができる。
【００２１】
図1はまた、システムパワーマネージャ157を示している。システムパワーマネージャ(「SPM」)157は、CPU110Aおよびコントローラ101に結合される。SPM157は一般に、プロセッサのようなハードウェアを含む。ただし、当業者によって理解されるように、SPM157にソフトウェアおよび/またはファームウェアを用いてもよい。SPM157は、プロセッサ110、126、および母線の状態を監視する役目を果たすことができる。SPM157は、プロセッサ110、126がスリープ状態に入ろうとしているとき、またはスリープ状態から出ようとしているときを検出することができる。SPM157はコントローラ101に対し、プロセッサ110、126のこれらの状態を通信することができる。より一般的には、SPM157は、プロセッサ110、126が1つのアプリケーション状態から別のアプリケーション状態に移行しようとしているときを検出することができる。プロセッサ110、126のアプリケーション状態は、プロセッサ110、126が事実上アイドル状態であるか、アプリケーションプログラムを実行していないスリープ状態、および1つまたは複数のアプリケーションプログラムを実行しているアウェイク状態またはアクティブ状態だけでなく、または代替的に、以下の状態のいずれかを含むことができる。プロセッサ110、126が動作している状態であって、別の状態で動作する場合よりも速いスピードまたは遅いスピードで動作している状態。アプリケーションプログラムを実行しているプロセッサ110、126によって定義される状態であって、別のアプリケーションプログラムを実行しているプロセッサ110、126によって定義される別の状態とは異なる状態。ある数のアプリケーションプログラムを同時に実行しているプロセッサ110、126によって定義される状態であって、異なる数のアプリケーションプログラムを同時に実行しているプロセッサ110、126によって定義される別の状態とは異なる状態。
【００２２】
コントローラ101は、CPU110によって実行されるソフトウェアを含むことができる。ただし、コントローラ101は、当業者によって理解されるように、ハードウェアおよび/またはファームウェアから形成されてもよい。
【００２３】
一般に、コントローラ101は、プロセッサ110、126がスリープ状態に迅速に入ること、およびスリープ状態から迅速に出ることを促進する役目を果たすことができる。コントローラ101は、図3に関して以下でさらに詳細に説明するように、リソースセットおよびトリガセットを備える1つまたは複数のテーブルを含むことができる。コントローラ101は、PCD100におけるすべての他のハードウェア要素が低電力状態に置かれ、機能していないときのために、それ自体の割込みコントローラ(不図示)を有してもよい。
【００２４】
コントローラ101はまた、1つまたは複数のマスタプロセッサ110、126の間のリソース要求を管理する。リソース要求は、リソース105(図2参照)によるアクションまたは機能を要求するマスタプロセッサ110によって出され得る。
【００２５】
リソース105は、以下でより一般的に説明するが、たとえば、1つまたは複数のマスタプロセッサ110、126によって実行されるソフトウェアアプリケーションのタスク、コマンド、および特徴をサポートするクロックおよび他の低レベルプロセッサを含むことができる。コントローラ101は、複数のマスタプロセッサ110、126の間のリソース要求競合を防ぐように設計され得る。
【００２６】
図1は、PCD100がメモリ112を含み得ることを示している。CPU110上で作動しているコントローラ101は、以下でさらに詳細に説明するように、迅速なスリープ状態を促進するために、またスリープ状態から迅速に出ることを促進するためにメモリ112にアクセスすることができる。
【００２７】
特定の態様において、本明細書で説明する方法ステップのうちの1つまたは複数は、コントローラ101を形成するメモリ112に記憶された実行可能命令およびパラメータによって実施され得る。コントローラ101を形成するこれらの命令は、CPU110、アナログ信号プロセッサ126、または別のプロセッサによって実行され得る。さらに、プロセッサ110、126、メモリ112、メモリ112に記憶された命令、またはそれらの組合せは、本明細書で説明する方法ステップのうちの1つまたは複数を実行するための手段として動作し得る。
【００２８】
図1:PCD100の他の要素
図1に示されるように、ディスプレイコントローラ128およびタッチスクリーンコントローラ130が、デジタル信号プロセッサ110に結合される。オンチップシステム102の外部にあるタッチスクリーンディスプレイ132が、ディスプレイコントローラ128およびタッチスクリーンコントローラ130に結合される。
【００２９】
図1は、ビデオコーダ/デコーダ(「コーデック」)134、たとえば、位相反転線(「PAL」)エンコーダ、順次式カラーメモリ(「SECAM」)エンコーダ、全国テレビジョン方式委員会(「NTSC」)エンコーダ、または任意の他のタイプのビデオエンコーダ134を含むポータブルコンピューティングデバイス(PCD)の一実施形態を示す概略図である。ビデオコーデック134は、マルチコア中央処理装置(「CPU」)110に結合される。ビデオ増幅器136が、ビデオエンコーダ134およびタッチスクリーンディスプレイ132に結合される。ビデオポート138がビデオ増幅器136に結合される。図1に示すように、ユニバーサルシリアルバス(「USB」)コントローラ140がCPU110に結合される。また、USBポート142がUSBコントローラ140に結合される。加入者識別モジュール(SIM)カード146も、CPU110に結合され得る。さらに、図1に示すように、デジタルカメラ148がCPU110に結合され得る。例示的な態様では、デジタルカメラ148は、電荷結合デバイス(「CCD」)カメラまたは相補型金属酸化膜半導体(「CMOS」)カメラである。
【００３０】
図1にさらに示すように、ステレオオーディオコーデック150がアナログ信号プロセッサ126に結合され得る。さらに、オーディオ増幅器152がステレオオーディオコーデック150に結合され得る。例示的な態様では、第1のステレオスピーカー154および第2のステレオスピーカー156がオーディオ増幅器152に結合される。図1は、マイクロフォン増幅器158もステレオオーディオコーデック150に結合され得ることを示している。加えて、マイクロフォン160がマイクロフォン増幅器158に結合され得る。特定の態様では、周波数変調(「FM」)ラジオチューナー162がステレオオーディオコーデック150に結合され得る。また、FMアンテナ164がFMラジオチューナー162に結合される。さらに、ステレオヘッドフォン166がステレオオーディオコーデック150に結合され得る。
【００３１】
図1は、高周波(「RF」)トランシーバ168がアナログ信号プロセッサ126に結合され得ることをさらに示している。RFスイッチ170がRFトランシーバ168およびRFアンテナ172に結合され得る。図1に示されるように、キーパッド174がアナログ信号プロセッサ126に結合され得る。また、マイクロフォンを備えたモノヘッドセット176がアナログ信号プロセッサ126に結合され得る。さらに、バイブレータデバイス178がアナログ信号プロセッサ126に結合され得る。図1は、たとえばバッテリーなどの電源180がオンチップシステム102に結合されることも示している。特定の態様では、電源180は、充電式DCバッテリー、または交流(「AC」)電源に接続されたAC-DC変換器から導かれるDC電源を含む。
【００３２】
図1に示されるように、タッチスクリーンディスプレイ132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカー154、第2のステレオスピーカー156、マイクロフォン160、FMアンテナ164、ステレオヘッドフォン166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178、熱センサ157B、および電源180は、オンチップシステム102の外部にある。
【００３３】
PCD100の上記の要素の中には、ハードウェアを含み得るものがある一方、ソフトウェアを含み得るものもあり、さらに、ハードウェアとソフトウェアの組合せを含み得るものもある。「リソース」という用語は、本明細書において、ハードウェアであるか、ソフトウェアであるか、それらの組合せであるかを問わず、プロセッサによって制御可能な任意のそのような要素を指すために使用される。リソースは、一態様において、そのような要素の機能のカプセル化として定義され得る。別途示される場合を除いて、「プロセッサ」または「マスタプロセッサ」という用語は、本明細書において、第1のCPU 110A、第2のCPU 110B、アナログ信号プロセッサ126のようなプロセッサを指すために、またはソフトウェア、ファームウェアもしくは同様の制御論理の支配下で動作する任意の他のプロセッサ、コントローラもしくは同様の要素を指すために使用される。以下でさらに詳細に説明するように、リソースの一例は、プロセッサに対し実行するソフトウェア要素である。たとえば、実行アプリケーションプログラムに関係するスレッドなどのプロセッサに対する実行のスレッドが、リソースに対する「要求」を出させることによって、リソースにアクセスすることができる。
【００３４】
異なるアプリケーション状態では、リソースの様々な構成または状態を要求することがプロセッサにとって必要であること、または望ましいことがある。たとえば、バスリソースは、バスクロックの速度を制御することができる。1つのアプリケーション状態では、プロセッサは、たとえば100MIPS(MIPS:100万命令毎秒)のペースでプロセッサが動作することを許容するバスクロックを要求することができる一方、別のアプリケーション状態では、プロセッサは、たとえば150MIPSのペースでプロセッサが動作することを許容するバスクロックを要求することができる。スリープ状態であるアプリケーション状態に入る準備をしているプロセッサの場合、プロセッサはゼロMIPSのバスクロックを要求することができる。同様に、第1のアプリケーションプログラムを実行するプロセッサによって定義される1つのアプリケーション状態では、プロセッサは100MIPSを要求することができる一方、第2のアプリケーションプログラムを実行するプロセッサによって定義される別のアプリケーション状態では、プロセッサは150MIPSを要求することができる。同様に、一定数のアプリケーションプログラムを同時に実行するプロセッサによって定義される1つのアプリケーション状態では、プロセッサは100MIPSを要求することができる一方、異なる数のアプリケーションプログラムを同時に実行するプロセッサによって定義される第2のアプリケーション状態では、プロセッサは150MIPSを要求することができる。上記のバスクロックは、リソース要求を出すプロセッサによって構成され得るリソースの一例としてのみ意図されていること、また、数字「100」および「150」は、処理速度の任意の例として意図されていることを理解されたい。
【００３５】
リソース構成または状態は、リソース状態セットにグループ化され得る。リソース状態セットは、あるプロセッサアプリケーション状態においてプロセッサによって一緒に使用される1つまたは複数のリソースの構成または状態を定義する。たとえば、あるリソース状態セットは、一定数のMIPSの処理速度をプロセッサにもたらすバスクロックリソースに関する構成または状態情報、およびプロセッサに復号機能を提供するデコーダ(すなわち、リソースの別の例)に関する構成または状態情報を含むことができる。
【００３６】
図2は、システム103を形成するコントローラ101、システムパワーマネージャ157、マスタプロセッサ110、126、低レベルドライバ103、共用リソース105A〜C、およびローカルリソース105D〜Hの間の関係を示す機能ブロック図である。図2はまた、どのようにタッチスクリーン132がタッチスクリーンドライバ/コントローラ130に結合され得るかを示している。タッチスクリーンドライバ/コントローラ130は、第1のマスタプロセッサ110Aのクロックコード113Aに結合され得る。
【００３７】
システム103は、リソース待ち時間を最小化するように、プロセッサ110によって望まれるリソース状態セット間で切り替えることができる。「リソース待ち時間」という用語は、マスタプロセッサ110、126が別のリソース状態セットに移行させるためにコントローラ101およびシステムパワーマネージャ157を準備し始めた時間から、当該セットのリソースが指定の状態に構成されるようになり、プロセッサが使用できるように準備できるまでの時間に生じる遅延または待ち時間を指す。後述のように、リソース状態セットは、以下に大別され得る。プロセッサがアプリケーションプログラムを実行し、別の方法で処理能力を提供するのを支援するように構成されたリソースをプロセッサが提供されるアクティブリソース状態セット。およびプロセッサがスリープ状態、すなわちプロセッサがアプリケーションプログラムを実行していないか、別の方法で処理能力を提供していない状態を維持するのを支援するリソースのみをプロセッサが提供されるスリープリソース状態。スリープ状態にあるプロセッサは、低レベル機能を維持するが、プロセッサは、当業者によってアプリケーションプログラムであると理解されるソフトウェアを実行することはない。後述する「次のアクティブ状態」の特徴は、アクティブセットであるか、スリープセットであるかにかかわらず、任意のリソース状態セット間の移行に当てはまり得ることを理解されたい。
【００３８】
図2に示す例示的な実施形態では、第1のマスタプロセッサ110Aは、システムパワーマネージャ157およびコントローラ101に結合され得る。コントローラ101は、第1のマスタプロセッサ110Aのクロックコード113Aに結合され得る。コントローラ101は、1つまたは複数の低レベルドライバ103を含むことができる。1つまたは複数の低レベルドライバ103は、1つまたは複数の共用リソース105A〜Cと通信する役目を果たすことができる。共用リソース105A〜Cは、マスタプロセッサ110のタスクまたは機能をサポートする任意のタイプのデバイスを含むことができる。共用リソース105A〜Cは、グラフィカルプロセッサ、デコーダなどの単一の機能要素および他のプロセッサのクロックのようなデバイスを含むことができる。
【００３９】
共用リソース105A〜Cは、1つまたは複数のローカルリソース105D〜Hに結合され得る。1つまたは複数のローカルリソース105D〜Hは、マスタプロセッサ110のタスクまたは機能をサポートまたは支援する任意のタイプのデバイスを含み得るという点で、共用リソース105A〜Cに類似していてよい。ローカルリソース105D〜Hは、グラフィカルプロセッサ、デコーダなどの単一の機能要素および他のプロセッサのクロックのようなデバイスを含むことができる。ローカルリソース105D〜Hは、リーフノードを含むことができる。リーフノードは、他の従属リソース105を通常は参照せず、または含まないローカルリソース105D〜Hとして、当業者には理解されよう。
【００４０】
コントローラ101は、1つまたは複数のマスタプロセッサ110、126から出される要求を管理する役目を果たすことができる。たとえば、コントローラ101は、第1のマスタプロセッサ110Aから生じる要求を管理することができる。第1のマスタプロセッサ110Aは、オペレータがタッチスクリーン132を操作したことに応答して、この要求を出すことができる。タッチスクリーン132は、タッチスクリーンドライバ/コントローラ130に信号を出すことができる。そして、タッチスクリーンドライバ/コントローラ130は、第1のマスタプロセッサ110Aのクロックコード113Aに信号を出すことができる。
【００４１】
コントローラ101はまた、特定のプロセッサ110のスリープ状態を管理する役目を果たすことができる。スリープ状態に入る前に、プロセッサ110は、スリープ状態を管理するための情報を提供する。スリープ状態を管理するための情報は、スリープ状態に入ること、およびスリープ状態から出ることを含む。スリープ状態を管理するためのこの情報を、以下ではトリガおよびリソース状態と呼ぶ。リソース状態セットは、プロセッサのスリープ状態をサポートするように1つまたは複数のリソースを構成するためのリソース情報を含むことができる。
【００４２】
トリガは、スリープ状態に入ること、またはスリープ状態から出ることのいずれかをプロセッサ110に行わせるイベントを定義することができる。トリガは一般に、コントローラ101内に含まれているか、コントローラ101によってアクセス可能なリソース状態を参照する。リソース状態は、特定のプロセッサ110が必要とするリソース105の所望の状態を定義する。例示的な実施形態では、各プロセッサ110はコントローラ101に対し、少なくとも2つのリソース状態セット、すなわち、リソース状態のアクティブセットおよびリソース状態のスリープセットを提供することができる。ただし、他の実施形態では、プロセッサは、単一のアクティブセットおよび単一のスリープセットに加えてリソース状態セットを、または単一のアクティブセットおよび単一のスリープセットとは異なるリソース状態セットを提供することができる。そのような他のリソース状態セットは、上記のプロセッサアプリケーション状態うちの1つまたは複数に対応することができる。すなわち、任意のアプリケーション状態について、プロセッサは対応するリソース状態セットを提供することができる。
【００４３】
例示的な実施形態では、リソース状態のアクティブセットは、プロセッサ110がアクティブに処理機能を実行し、リソース105からのアクション/機能を要求しているときに関するリソース105の状態を定義することができる。リソース状態のスリープセットは、プロセッサ110がスリープ状態またはアイドル状態にあるときのリソース105の状態を定義することができる。トリガおよびリソース状態については、図3に関連して以下でさらに詳しく説明する。
【００４４】
図3は、コントローラ101、リソースセット304、およびトリガセット314に関する詳細を示す機能ブロック図である。前述のように、コントローラ101は、PCD100のプロセッサ110、126のうちの1つまたは複数によって実行されるソフトウェアを含むことができる。コントローラ101は、メモリ112に、または当業者によって理解されるようにローカルストレージのようなコントローラ101内のエリアに、情報を記憶することができる。この情報は、コントローラ101によってサービスされる各マスタプロセッサ110に割り当てられるリソースセット304を含むリソーステーブル302を含むことができる。この情報はまた、同じく各マスタプロセッサ110に割り当てられる、各マスタプロセッサ110に固有であり得るトリガセット314を含むことができる。
【００４５】
各リソースセット304は一般に、特定のマスタプロセッサ110によって望まれるリソース105の状態に関係する情報を含む。特定のマスタプロセッサ110に割り当てられる各リソースセット304は、アクティブリソースセット306およびスリープリソースセット308を含むことができる。アクティブリソースセット306は、特定のマスタプロセッサ110がアクティブであるか、正常に機能しているときのリソース105の状態を定義または記述することができる。スリープリソースセット308は、特定のマスタプロセッサが当業者によって理解されるようにスリープ状態または休止状態にあるときのリソース105の状態を定義または記述することができる。各リソースセット304はまた、図3に示す例示的な実施形態において、第1のマスタプロセッサ110に割り当てられる「セット1」および「セット2」のような追加セットを含むことができる。
【００４６】
一例として、図3に示す第1のマスタプロセッサ(A)110Aのアクティブリソースセット306は、リソース105の各々に以下の値を割り当てている。第1の共用リソース(SR#1)105Aの場合には値は1であり、第2の共用リソース(SR#2)105Bの値は1であり、第Nの共用リソース(SR#N)105Cの値は1である一方、第1のローカルリソース(LR#1)105Dの4つの値は1、0、1、および1である。
【００４７】
前述のように、リソース105の状態は単一の値に限定されず、複数の値を含むことができる。さらに、リソースの状態は、いくつかの異なるタイプのパラメータのいずれかを含むことができる。たとえば、状態は、リソース105として機能することができる特定のクロックのクロック速度の量について数百メガヘルツを指定することができる。
【００４８】
別の例として、図3に示す第1のマスタプロセッサ(A)110Aのスリープリソースセット308Aは、リソース105の各々に以下の値を割り当てている。第1の共用リソース(SR#1)105Aの場合、このリソースは0の値を割り当てられており、第2の共用リソース(SR#2)105Bは0の割当て値を有する一方、第Nの共用リソース(SR#N)105Cは0の割当て値を有する。第1のローカルリソース(LR#1)105Dは、0、1、0および0の割当て値を有し得る。
【００４９】
特定のマスタプロセッサ110に割り当てられる各トリガセット314は、少なくとも3つのフィールド、すなわち、割込みフィールド316、「セットから」318、および「セットへ」320を含むことができる。トリガセット314のこれら3つのフィールドの各々はまた、3つの列、すなわち、トリガ開始列322、クリア列324、およびタイマー列326からなる対応する1セットを含むことができる。
【００５０】
割込みフィールド316は、システムパワーマネージャ157によって生成および/または検出され得るアクションまたは活動を記述する。割込みフィールド316は一般に、「トリガイベント」と特徴付けることができ、これによりコントローラ101は、SPM157によって検出されるトリガイベントに基づいて特定のプロセッサ110によって望まれる指定のリソースセット304を選択することができる。コントローラ101によるリソースセット304の選択は、背景技術セクションで上述した時間のかかるソフトウェアハンドシェイクを回避することができる。
【００５１】
第1のマスタプロセッサ(A)110Aについて図3の第1のトリガセット(トリガセット#1)を調べるにあたり、セットのフィールドについて列ごとに順に論じる。トリガセット314Aの第1の列から始めると、トリガ開始列322は割込みフィールド316に対応する第1の行に「復号割込み」と記載されたアクションを有する。
【００５２】
前述のように、割込みフィールド316は、トリガ開始フィールド322の検出に応答してリソースセット304の状態をアクティブ化することをコントローラ101に行わせるパラメータを定義することができる。図3に示す例示的な実施形態では、割込みフィールド316Aは、「復号割込み」と定義または記述されており、これは、システムパワーマネージャ110が「復号割込み」を検出したとき、たとえば、PCD100がビデオを復号しているとき、このイベントがコントローラ101に対し、「トリガ開始」列にある第1の列322A1における「セットから」フィールド318を調べるように警告し得ることを意味する。
【００５３】
「セットから」フィールド318は、コントローラ101によって調べられている特定のマスタプロセッサ110に当てはまる現在のリソースセット304を示す値を含むことができる。このフィールド318は、リソースセット304をその識別子、たとえば「アクティブセット」、「スリープセット」、または「セット1」もしくは「セット2」のようなセット番号によって記載することができる。フィールド320は、アスタリスクのような「ワイルドカード」を含むこともある。
【００５４】
「セットから」フィールド318におけるワイルドカード指定により、コントローラ101は、特定のマスタプロセッサ101によって使用されていた最後の既知のアクティブリソースセット304を取り出すことができる。図3に示す例示的な実施形態では、「セットから」行318Aのトリガ開始列322A1は、アスタリスクまたはワイルドカードの値を有する。
【００５５】
「セットへ」320は、「セットから」318と同様に、識別子、たとえば「アクティブセット」、「スリープセット」、または「セット1」もしくは「セット2」のようなセット番号によるリソースセット304の記載を含むことができる。フィールド320はまた、プロセッサ110によって利用されている最後のリソースセット304を意味するアスタリスクのような「ワイルドカード」を含むことができる。図3に示す例示的な実施形態では、「セットへ」フィールド320Aのトリガ開始列322A1は、第1のリソースセット304Aの列310Aに記載されているリソースセット1である「セット1」の値を有する。
【００５６】
図3に示す例では、復号割込みイベントは、SPM157によって検出されたとき、コントローラ101に警告する。コントローラ101は、第1のマスタプロセッサ110の第1のトリガセットを調べる。トリガ開始列322A1は、マッチング値(復号割込み)を記載しているので、コントローラ101は、「セットから」フィールド318Aを調べて、値がワイルドカード値またはアスタリスクであると判断する。次いでコントローラ101は、特定のリソースセット304Aを指定する「セット1」の値を有する「セットへ」フィールド320Aを調べる。コントローラ101によって調べられたこの情報に基づき、コントローラ101は、第1のマスタプロセッサ110Aの現在のリソースセット304Aを、現在のセットからリソースセット「セット1」に切り替える。リソースセット1は、第1のマスタプロセッサ110Aに割り当てられているリソースセット304Aの列310Aに記載されている。
【００５７】
さらに、SPM157またはコントローラ101が、第1のトリガセットのクリア列324A1に示すような「非復号」イベントを検出したとき、コントローラ101は「セットから」フィールド318Aを調べ、この値が「セット1」を含むと判断する。次いで、コントローラ101は、この例ではワイルドカードまたはアスタリスクの値を有する「セットへ」フィールド320を調べる。これは、コントローラ101が、第1のマスタプロセッサ110Aのリソースセット304Aを、「セット1」のリソースセットから、プロセッサ110Aによって使用された最後のアクティブリソースセットに切り替えることを意味する。
【００５８】
トリガセットのタイマーフィールド326は、特定のリソースセット304がコントローラ101によって使用され得る時間量を示すことができる。そのため、図3に示す例示的な実施形態では、第1のトリガセットのタイマーフィールド326A1の場合、このフィールドは3ミリ秒の値を有する。これは、復号割込みイベントが第1のトリガセットのトリガ開始フィールド322A1とマッチしたときに、コントローラ101が、「セットへ」フィールド320Aに指定されたリソースセット304を3ミリ秒だけ利用することを意味する。他の例示的な実施形態では、タイマーフィールド326に情報がない状況、またはこの移行のタイマートリガ326がないこと、および移行が非復号フィールドにのみ適用されることを示す値に対応するように値が定義される状況が発生または存在し得る。図3に示すようなタイマーフィールド、すなわちタイマーフィールド326A1および326A2が定義される状況では、タイマーフィールド326とクリアフィールド324との間でどちらのイベントが最初に生じても、たいてい移行が始まる。
【００５９】
図4は、プロセッサ110の例示的なアクティブ/スリープトリガセット314を示している。この例示的な実施形態では、第1の列322における割込みフィールド316は、「シャットダウン」イベントを、特定のプロセッサ110のスリープセット308(図3)を開始するアクションと定義する。「シャットダウン」イベントは、オペレータがPCD100をシャットダウンするためにオン/オフボタンを選択するようなアクションを含むことができる。
【００６０】
図4の例示的な実施形態では、「シャットダウン」イベントが検出されたとき、コントローラ101は、現在のアクティブリソースセット306をスリープセット308に移行させる。スリープセット308は、図3のテーブル302のマスタリソースセット304に記載されている。
【００６１】
コントローラ101が、PCD100のオペレータによって開始されるパワーオンイベントのような「立ち上げ」イベントが生じていることを示すメッセージをSPM157から受信したとき、コントローラは、トリガセット314の「セットへ」フィールド320に記載されているワイルドカードまたはアスタリスク値に基づいて、プロセッサ110をスリープセット308から最後のアクティブリソースセット304に移行させる。
【００６２】
上記のように、システム103は、アクティブセット306およびスリープセット308に限定されない。システム103は、図3に示すように、スリープ状態に入ること、またはスリープ状態から出ること以外のイベントにおけるリソースセット304間の切替えに使用され得る。
【００６３】
図5は、プロセッサ110をスリープ状態に置くためのトリガセット314を管理するための方法500を示す論理フローチャートである。ブロック505が、方法500の最初のステップである。ブロック505において、各プロセッサ110は、PCD100の先行使用事例からのデータに基づいて必要に応じて、コントローラ101(図1〜図2)内のトリガセット314およびリソースセット304を更新することができる。
【００６４】
ブロック510において、プロセッサ110はSPM157(図2)に対し、コントローラ101へのシャットダウン信号を生成するように要求することができる。ブロック515において、SPM157はシャットダウン信号をコントローラ101に送ることができる。
【００６５】
コントローラ101は、ブロック520においてシャットダウン信号を受信することができ、図4に示すようにシャットダウンイベントに割り当てられ得るトリガセット314をアクティブ化することができる。図4に示す例示的な実施形態では、シャットダウン信号は、トリガセット314の割込みフィールド316と突き合わせられる。トリガセット314はコントローラ101に対し、「セットへ」フィールド320に示されているようにスリープセット308にアクセスするように指示する。ブロック525において、コントローラ101は早急に、確認応答信号をSPM157に送ることができ、コントローラ101は引き続き、シャットダウン信号イベントとマッチするトリガセット314によって参照されるリソースセット304をアクティブ化することができる。
【００６６】
ブロック530において、図4に示す対応する割込みフィールド316に「シャットダウン」イベントを記載しているマッチングトリガセット314のような各マッチングトリガセット314について、コントローラ101は、現在のリソースセット304を、図3のマスタプロセッサ110Aの第1のリソースセット304Aのスリープセット308Aのようなスリープセット308に切り替えることができる。
【００６７】
次に、ブロック535において、コントローラ101は、図2に示すような低レベルドライバ103にスリープ要求状態を伝えることができる。低レベルドライバ103は、要求された状態を、対応するリソース105に伝達することができる。
【００６８】
ブロック540において、各リソース105はシャットダウン信号確認応答をコントローラ101およびSPM157に出すことができる。そして、方法500は終了することができる。
【００６９】
図6は、プロセッサ110をスリープ状態からアクティブ状態に置くためのトリガセット314を管理するための方法600を示す論理フローチャートである。ブロック605が、方法600の最初のステップである。ブロック605において、ウェイクアップ状態またはウェイクアップイベントが、SPM157により検出されるか、ウェイクアップイベントが、それ自体の割込みコントローラ(不図示)を有し得るコントローラ101によって直接検出される。例示的な実施形態は、ウェイクアップ割込みがSPM157によって検出可能ではないように設計され得る。そのような例示的な実施形態では、コントローラ101はその割込みコントローラを使用して、それらを検出し、これらをマスタプロセッサ110のスリープセット要件に「マッピング」させることができる。
【００７０】
次に、ブロック610において、SPM157はウェイクアップ信号をコントローラ101に送ることができる。ブロック615において、コントローラ101は、SPM157からウェイクアップ信号を受信し、ウェイクアップ信号とマッチした1つまたは複数のトリガセット314をアクティブ化することができる。たとえば、コントローラ101はウェイクアップ信号を、図4のトリガセット314の「アクティブ」列内の割込みフィールド316に記載されている「立ち上げ」イベントと突き合わせることができる。図4の例示的な実施形態では、アクティブ列324内の「セットへ」フィールド320はコントローラを、現在のプロセッサ110によって使用された最後のリソースセット304に案内する。
【００７１】
そのため、ブロック620において、コントローラ101は、このマッチングトリガセット314に基づいて、プロセッサ110の現在のリソースセット304を変更する。当業者は、コントローラ101が図3に示すように維持するそのトリガセットのすべてを巡回することを認識する。
【００７２】
次に、ブロック625において、コントローラ101はSPM157に対し、どのマスタプロセッサ110がスリープ状態からアウェイクしたかを識別するウェイクアップ確認応答を送ることができる。次に、ブロック630において、マッチングウェイクアップトリガセット314を有する各プロセッサ110は、スリープ状態から解放され、SPM157によって電力を供給されてアクティブ状態に戻される。そして、方法600は終了する。
【００７３】
図7〜10は、本明細書では「次のアクティブリソース状態セット」または「次のアクティブセット」と呼ばれる別の特徴を示している。次のアクティブセットの一例は、次のアウェイクセットである。次のアウェイクセットまたは他の次のアクティブセットは、図6およびウェイクアップイベントに伴うコントローラ101による切替え後のリソースセット304に関して上記で説明したのと同じ方法で使用され得る。
【００７４】
図7は、コントローラ101に記憶された情報を表すという点で、図3と同様である。例示的な実施形態では、コントローラ101は、本明細書では便宜上「A」メモリバッファ702、「B」メモリバッファ704および「C」メモリバッファ706と呼ばれる3つのメモリバッファを含むことができる。
【００７５】
図8は、プロセッサをスリープ状態に置くための方法800を示しているという点で、図5と同様の論理フローチャートである。ブロック805が、方法800の最初のステップであり、図5に関して上述したブロック505に類似している。ブロック805は、プロセッサ110がアクティブまたはアウェイクリソース状態セットおよびスリープリソース状態セットだけでなく、次のアウェイクリソース状態セットも更新し得ることを示している。図8に示すように、プロセッサは、アクティブセットをコントローラ101の「A」バッファ702(図7)に記憶させ、スリープセットをコントローラ101の「B」バッファ704(図7)に記憶させ、次のアウェイクセットをコントローラ101の「C」バッファ706(図7)に記憶させることができる。ブロック805の他の態様は、ブロック505(図5)に関して上述したのと同じであるので、ここでは説明しない。
【００７６】
ブロック810、815、820、825、830、835および840は、それぞれ図5のブロック510、515、520、525、530、535および540と同じであるので、ここでは説明しない。プロセッサは、シャットダウンを始めるとき、「A」バッファ702(図7)に記憶されているアウェイクセットに対応するアウェイクアプリケーション状態にあることに留意されたい。次いでプロセッサは、図5に関して上述したのと同様に、「B」バッファ704(図7)に記憶されているスリープセットに対応するスリープアプリケーション状態に入る。プロセッサは、「C」バッファ706(図7)に記憶されている次のアウェイクセットに対応する次のアウェイクアプリケーション状態においてスリープアプリケーション状態からアウェイクする(図6)。「C」バッファ706(図7)に次のアウェイクセット更新を事前記憶し、それらをできるだけ早く適用することによって、コントローラ101はウェイクアップイベントに伴い、かかる次のアウェイクセットによって指定されたリソースを直ちに構成し始めることができ、それによってリソース待ち時間を最小化することができる。
【００７７】
図9は、別の例示的な実施形態に関係し、ここでは、コントローラ101は上述のリソース状態セットの3つすべてを同時に記憶するのに十分なメモリを有していない。この実施形態では、コントローラ101'は「A」バッファ902および「B」バッファ904のみを有し、「C」バッファのために利用可能なメモリ空間がない。そのような場合、「A」バッファ902は、異なる時間に(その時点で最新の)アウェイクセットおよび次のアウェイクセットを記憶するように再利用される。
【００７８】
図10は、プロセッサをスリープ状態に置くための方法1000を示しているという点で、図5および図9と同様の論理フローチャートである。ブロック1005が、方法800の最初のステップであり、図8に関して上述したブロック805に類似しているが、「C」バッファに次のアウェイクセットを記憶するステップを含まない。実際にはプロセッサは、アクティブセットをコントローラ101'の「A」バッファ902(図9)に記憶させ、スリープセットをコントローラ101'の「B」バッファ904(図9)に記憶させることができるが、プロセッサは、次のアウェイクセットを記憶するために「A」バッファを再利用する前に、スリープアプリケーション状態に移行するステップで「復帰不能点」(この用語は当業者によって理解される)に達するまで待つ。ブロック1005の他の態様は、ブロック505(図5)に関して上述したのと同じであるので、ここでは説明しない。
【００７９】
ブロック1008において、プロセッサは、次のアウェイクセットの擬更新または仮想更新と呼ばれ得るステップを実行する。上述のブロック1005において、プロセッサは、コントローラ101'の「A」バッファ902および「B」バッファ904にリソース状態セットを書き込むことによって、リソース状態セットの実際の更新を実行し得ることに留意されたい。コントローラ101'は、バッファコンテンツが更新されていることを通知する割込みをプロセッサから受信するので、更新は実際のものであり、コントローラ101'は、更新に伴うアクションまたは更新の適用を行うことになる。コントローラ101'は、使用できるように更新リソース状態セット情報を準備するのに必要であり得る様々なタスクを実行することによって、更新を適用する。バッファ「B」におけるスリープセットが更新された場合、コントローラ101'は、リソース状態セットの切替えを必要とするシャットダウンイベントまたは同様のイベントが後に生じた場合に使用できるように更新スリープセット情報を準備することができる。「A」バッファ902におけるアクティブセットが更新された場合、コントローラ101'はリソースを相応に調整させることができる。プロセッサがブロック1008で実行する擬更新は、コントローラ101'に割込みを送ることなしに、「A」バッファ902(図9)に次のアウェイクセットのための更新を記憶するステップを含む。コントローラ101'は割込みを受信していないので、「A」バッファ902(図9)で生じた更新をまだ適用しない。この擬更新は、プロセッサ110がSPM157(図2)に対し、コントローラ101'にシャットダウンを知らせるように要求する復帰不能点の後に生じ、「A」バッファ902におけるその時点のアクティブリソースセット状態情報に対するさらなる更新を行わないことが保証される。
【００８０】
ブロック1010、1015、1020、および1025は、それぞれ図5のブロック510、515、520、および525に関して上述したのと同じであるので、ここでは説明しない。
【００８１】
次いで、ブロック1027において、コントローラ101'は、更新に関して「A」バッファ902(図9)をチェックすることによって、コントローラ101'とプロセッサとの間で生じるハンドシェイク(ブロック1020、1025)に応答し、図6のウェイクアップ方法で使用される更新を記憶する。(プロセッサがバッファに書き込んだ「メッセージ」を受信コントローラ101'に通知するために割込みが使用される方法から、メモリバッファは「メッセージRAM」とも呼ばれることが留意され得る。)したがって、「A」バッファ902(図9)に次のアウェイクセットを事前記憶することによって、コントローラ101'はウェイクアップイベントに伴い、かかる次のアウェイクセットによって指定されたリソースを直ちに構成し始めることができ、それによってリソース待ち時間を最小化することができる。
【００８２】
ブロック1030、1035、および1040は、それぞれ図5のブロック530、535、および540と同じであるので、ここでは説明しない。次いでプロセッサは相応に、図5に関して上述したのと同様に、「B」バッファ904(図9)に記憶されているスリープセットに対応するスリープアプリケーション状態に入る。プロセッサは、「B」バッファ904(図9)に記憶されている次のアウェイクセットに対応する次のアウェイクアプリケーション状態においてスリープアプリケーション状態からアウェイクする(図6)。次のアウェイクセットを事前記憶し、それをできるだけ早く適用することによって、コントローラ101'はウェイクアップイベントに伴い、かかる次のアウェイクセットによって指定されたリソースを直ちに構成し始めることができ、それによってリソース待ち時間を最小化することができる。
【００８３】
図11〜図23は、上記のリソースセット移行をスケジュールすることに関係する別の特徴を示している。当業者は、多くの場合にプロセッサアプリケーションプログラム状態の上記変更が比較的予測可能な周期で生じ得ることを理解している。たとえば、PCD100(図1)において、ビデオプレーヤアプリケーションプログラムを実行しているプロセッサが、プロセッサが周期的に(たとえば、Xミリ秒ごとに)ビデオデータのフレームを復号し得る状態において、あるいはかかる状態に移行中にウェイクアップすることが必要であり得る。同様に、PCD100のセルラー電話機能を制御しているプロセッサが、たとえば、プロセッサが周期的に(たとえば、Xミリ秒ごとに)RF通信信号を検査し得る状態において、あるいはかかる状態に移行中にウェイクアップすることが必要であり得る。アプリケーションプログラム状態の周期的変更が生じる時間は予測され得るので、またリソースが次のアプリケーションプログラム状態に対応する状態への移行を完了させるのに必要な時間量は実質的に固定されているか、一定であるので、リソース状態セットを切り替えるプロセスを始めるのに必要な時間は予測され得る。たとえば、プロセッサは時間tdeadlineに例示的なリソース状態セット(「R」)によって示される状態におけるリソースのセットを有する必要があると予測され得る。この例示的なリソース状態セット「R」は、バスクロックリソースをたとえば100MHzに変更し、電源リソースをたとえば3Vに変更することを指定することがある。バスクロックリソースおよび電源リソースがこれらの移行を完了させたことをコントローラ101が確認するのに要する時間量(「作業_時間」)が判断され得る。(「作業」という用語は、コントローラ101がリソース状態移行を実現するために実行しなければならない処理、構成およびハードウェア制御を指す。)したがって、リソースが時間tdeadlineまでにリソース状態セット「R」によって示される状態にあるようにするために、この例ではコントローラ101は、tdeadlineの前の時間量が少なくとも作業_時間に等しくなる時間までに、バスクロックおよび電源リソースを移行させるプロセス(たとえば、図5のステップ530および535、図8のステップ830および835など)を開始する必要がある。
【００８４】
PCD100において、2つ以上のプロセッサ(たとえば、図2のマスタプロセッサ110A、110B、110Cなど)は互いにかなり接近した時間にリソース状態セット移行を要求することがあり、それによりコントローラ101は1つのプロセッサのリソースを移行させる作業を行う一方で、別のプロセッサのリソースを移行させる作業を同時に行う必要がある。同様に、コントローラ101がリソースを移行させる作業を行っているか、リソースを移行させる作業を行う予定である間に、SPM157のような別の要素は、リソース状態セット移行を要求し得る。例示的な実施形態では、コントローラ101はこれらのタスクを同時に実行することができないので、そのような「競合」状態は望ましくない。
【００８５】
図11は、上記の競合状態の一例を示すタイムラインである。コントローラ101が下記のスケジューリング方法を始め、競合状態を検出するおおよその時間は「tnow」と標示される。図11に示す例では、コントローラ101は、リソースが時間tdeadline_0に、第1のプロセッサによって要求される状態にあるために、コントローラ101が時間tstart_0に、要求された状態にこれらのリソースを移行させるプロセスまたは作業(「作業_0」)を開始する必要があると判断する。同様に、コントローラ101は、リソースが時間tdeadline_1に、第2のプロセッサによって要求される状態にあるために、コントローラ101が時間tstart_1に、要求された状態にこれらのリソースを移行させるプロセスまたは作業(「作業_1」)を開始する必要があると判断する。作業_0と作業_1との間の重複が競合状態を表すことが留意され得る。
【００８６】
図12は、図11に示す競合状態を緩和するための方法をタイムライン形式で示している。競合を緩和するために、コントローラは作業_0を、作業_1を始める前に完了させるようにスケジュールし得る。したがってコントローラ101は、tstart_1(すなわち、修正最終期限tdeadline_0')の前に作業_0を完了させるために、これらのリソースを要求された状態に移行させるステップを開始する修正時間tstart_0'を、以下の式で計算する。
tstart_0'=tdeadline_0-(tdeadline_1-作業_1)
上記の計算のtstart_0'はtnowと対比されていることが留意され得る。
【００８７】
図13は、プロセッサ110をスリープリソース状態セットに対応するスリープアプリケーション状態からアクティブリソース状態セットに対応するアクティブアプリケーション状態に移行させるための方法1300を示す論理フローチャートである。方法1300が、コントローラ101がリソース状態の変更または移行のために実行する処理または作業をスケジュールするステップを含むことを除いて、方法1300は、図6の上記の方法600と同様である。ブロック1305、1310、および1315は、それぞれ図6のブロック605、610、および615と同じであるので、ここでは説明しない。ブロック1318において、コントローラ101は、コントローラ101の判断により周期的にアプリケーション状態を変更する1つまたは複数のプロセッサのリソース状態セット移行をスケジュールする。上述のように、アプリケーション状態の予測される変更は、次のアプリケーション状態に対応するリソースセットのリソースが完全に移行する関連最終期限を有する。このスケジュールするステップは、リソース状態セット移行が完了するのに要する時間量(「作業」)、ひいてはコントローラ101が最終期限までに移行を完了させるために移行プロセスまたは「作業」を開始する必要がある時間を計算するステップを含むことができる。このスケジュールするステップはまた、上記で説明した方法で、または代替方法を使用してスケジューリング競合を緩和するステップを含むことができる。ブロック1320、1325および1330は、それぞれブロック620、625および630と同じであるので、ここでは説明しない。
【００８８】
図14は、リソース状態セット移行をスケジュールする図13のブロック1318に含まれ得る方法1400を示す論理フローチャートである。ブロック1405は、コントローラ101が次の式を評価し得ることを示している。
tdeadline_x-作業_x<tdeadline_y
ここでxおよびyは、(たとえば第1のプロセッサxおよび第2のプロセッサyからの)2つのリソース状態移行要求を表すインデックスであり、x>yである。
式が偽であると評価した場合、2つの要求間に競合状態がなく、本方法は終了する。式が真であると評価した場合、図11に関して上述したタイプの競合状態がある。競合状態が存在すると判断された場合、コントローラ101は競合を緩和するために修正開始時間を次の式で計算することができる。
tstart_x'=tdeadline_x-(tdeadline_y-作業_y)
コントローラ101は、当初スケジュールされたリソース状態セット移行開始時間の代わりに、修正開始時間を使用することができる。
【００８９】
スケジューリング競合を緩和するための方法はまた、スケジュールされていないリソース状態セット移行要求を考慮することができる。上記のように、スケジュールされたリソース状態セット移行要求は、周期的に生じるか、あるいは予測可能な要求を含む。スケジュールされていないリソース状態セット移行要求は、ユーザがタッチスクリーン132(図2)を使用して、PCD100に1つまたは複数のプロセッサをウェイクアップさせるアクションを実行するなど、予測不可能なイベントの結果として生じ得る。スケジュールされていない要求は、リソース状態セット移行が完了しなければならない関連最終期限(「tdeadline」)を有さない。実際にはそれは、リソース状態セット移行が特定の時間に開始された場合に完了する時間(「tdone」)を指すことに関係するだけである。
【００９０】
図15は、コントローラ101がスケジュールされていないリソース状態セット移行要求に対する処理、すなわち作業を、要求がtnon-scheduled_1で生じるとすぐに始め、リソース状態セット移行がtdone_1に完了するまで要求に対する作業を続けた場合に、競合状態が生じ得ることを示すタイムラインである。tstart_0に始まりtdeadline_0に終わるスケジュールされた要求の処理(「作業_0」)が、スケジュールされていない要求の処理(「作業_1」)と重複することに留意されたい。
【００９１】
図16は、図15の競合状態を緩和するための簡単な例示的な方法を示すタイムラインである。競合状態を緩和するために、コントローラ101は、最初に、スケジュールされた要求に関連するリソースを移行させ、次いで、スケジュールされていない要求に関連するリソースを移行させることができる。
【００９２】
図17は、図15の競合状態を緩和するための第2の簡単な例示的な方法を示すタイムラインである。競合状態を緩和するために、コントローラ101は、最初に、スケジュールされた要求に関連するリソースを移行させ、次いで、スケジュールされていない要求に関連するリソースを移行させることができる。ただし、図16に示す方法とは異なり、作業_0の開始tstart_0をtstart_0'へと早めて、作業_1が早期に完了できるようにすることで、スケジュールされていない作業の遅延を回避する。
【００９３】
図18は、図15の競合状態を緩和するための別の例示的な方法を示すタイムラインである。競合状態を緩和するために、コントローラ101は最初に、修正開始時間を次の式で計算することができる。
tstart_1=(tdeadline_0-作業_0)-tnow
【００９４】
コントローラ101は修正開始時間tstart_1に、スケジュールされていない要求に関連するリソースを移行させる作業のサブセットまたは部分を始めることができる。次いでtstart_0において、コントローラ101は、スケジュールされていない要求に関連するリソースを移行させる作業を停止し、代わりに、スケジュールされた要求に関連するリソースの移行に切り替える。コントローラ101がtdeadline_0に、スケジュールされた要求に関連するリソースの移行を完了させた後、コントローラ101は、スケジュールされていない要求に関連するリソースを移行させる作業に戻ることができる。
【００９５】
図19は、リソース状態セット変更要求に関連するリソースの移行に関わる作業または処理が、多くの場合、サブセットまたは部分「作業0」〜「作業N」に分割され得ることを示している。リソース状態セット変更に関連するリソースの移行に関わる作業または処理は、多くの個別のタスクを伴い得る。したがって、コントローラ101は容易に、そのような個別のタスク間で別のリソース状態セットに移行するプロセスを一時的に停止させることができる。たとえば、図18のtstart_1とtstart_0との間で生じる処理または作業の部分は、1つまたは複数のそのような個別のタスクを含むことができる。
【００９６】
図20は、作業のサブセットまたは部分が予定よりも早く完了することがあり、結果的に、作業が最終期限tdeadlineよりも早くtdoneに終了することがあることを示すタイムラインである。そのため、(当業者によって理解されるように)最終期限を守るために必要な時間よりも早く電力を消費する作業にリソースが関わった結果、電力が浪費され得る。
【００９７】
図21は、図20の浪費された電力状態を緩和するための例示的な方法を示している。状態を緩和するために、早く完了した作業のサブセットまたは部分の後に続く作業のサブセットまたは部分を延期または「先延ばし」することができる。「作業N+1」は、「作業N」の後の作業でリソースを変更することによる電力の影響を回避するために、「作業N」の完了予定時間まで延期され得る。
【００９８】
図22は、個別のタスクのコンセプトをより十分に示しており、たとえば、部分である作業2_1がtstart_1とtstart_0との間に実行され得ることを示している。リソース状態セットのリソースの移行に関わる個別のタスクのいくつかが他のタスクに依存しないので、そのようなタスクが任意の適切な順序で実行され得ることに留意されたい。したがって、たとえば、作業は図19において連続的なタスクに関わるとして示され得るが、作業0_1の前に作業2_1を実行するように、タスクを非連続的に実行しても悪影響がない場合もある。個別のタスクまたは部分の長さが互いに等しくないことがあることにも留意されたい。したがって、作業2_1のような個別のタスクまたは部分のうちの1つが、図22に示す例のtstart_1とtstart_0との間の時間間隔に、当該リソース状態セット移行の他の部分よりも上手く適合する場合、コントローラ101は、そのような順序で部分を実行することによって、方法を最適化することができる。一般に、できるだけ早くリソース状態セット移行に対する可能な最も多くの作業を実行するのが望ましいことがある。したがって、図22に示す例のtstart_1とtstart_0との間の時間間隔にちょうど適合するより長い部分を実行する方が、当該間隔でより短い部分を実行し、その結果、tstart_0の直前に作業が実行されずに隙間が残るよりも望ましいことがある。
【００９９】
図23は、リソース状態移行の処理をスケジュールするための方法2300を示す論理フローチャートである。方法2300は、スケジュールされたかスケジュールされていない3つ以上の要求が同時に処理される必要があり得るというコンセプトをより一般的に伝える。(明快にするために、図11〜図22に関して上述した方法は、たった1つまたは2つの要求の処理およびそれらの間の競合状態の可能性に関係する。)
【０１００】
方法2300は状態2305に始まり、この状態は、以下の状態のいずれかが生じた結果として到達し得る。コントローラ101が、要求に応答してリソース状態を移行させることに関わる処理または作業を終えている。コントローラ101が、スケジュールされていないリソース状態セット移行要求を受信する。またはコントローラ101が、リソース状態移行を処理するスケジュールされた開始時間(「tstart」)が迫っていると判断する。方法2300の始まりを表すブロック2310において、コントローラ101は、何らかの処理または作業がスケジュールされているか否かを判断する。上記のように、そのような処理または作業を周期的間隔で開始するようにスケジュールできるが、競合状態を緩和するためにスケジュールされた開始時間を修正することができる。
【０１０１】
コントローラ101が、そのようなスケジュールされた処理または作業を実行する時間(「tnow」)であると判断した場合、コントローラ101は、ブロック2315によって示されるように処理または作業を実行する。コントローラ101が、何らかのスケジュールされた処理または作業を実行する時間ではないと判断した場合、コントローラ101は、ブロック2320によって示されるように保留中のスケジュールされていない要求を処理することができる。保留中のスケジュールされていない要求が2つ以上存在することがある。また、スケジュールされていない要求は、それらに関連する優先順位を有し得る。2つ以上のスケジュールされていない要求が保留中である場合、コントローラ101は、そのときから次のスケジュールされた作業開始時間(tstart)まで、最優先の保留中のスケジュールされていない要求の部分に対する作業を行う。次の開始時間tstart_nextは以下の通りである。
tstart_next=(tdeadline_next-作業_next)-tnow
上記の計算のtstart_nextはtnowと対比されていることに留意されたい。
【０１０２】
コントローラ101がスケジュールされていない要求に関連する作業の一部分(図19参照)に対する処理または作業を完了させると、コントローラ101は、ブロック2325によって示されるように、処理または作業がさらなる部分を含むか否かを判断する。さらなる部分が存在する場合、コントローラ101は、ブロック2320に関して上述したのと同様に次の部分に対する作業を行う。上記の「最優先」という用語は、一部の実施形態に含まれ得る優先順位付け方式を指す。たとえば、ユーザがPCD100を「オフにすること」、すなわち、タッチスクリーン132(図1)を通じて低電力状態を開始することから生じるスケジュールされていない要求には、他のスケジュールされていない要求よりも低い優先順位が割り当てられ得る。
【０１０３】
本発明が説明通りに機能するように、本明細書で説明したプロセスまたはプロセスの流れの特定のステップが他のステップよりも前に行われるのは当然である。しかしながら、そのようなステップの順序または順番によって本発明の機能が変わることがない場合、本発明は説明したステップの順序に限定されない。つまり、開示されたシステムおよび方法から逸脱することなく、一部のステップを他のステップの前に実行しても、後に実行してもよく、あるいは各ステップを並行して(実質的に同時に)実行してもよいことを認識されたい。場合によっては、当業者によって理解されるように方法から逸脱することなく、特定のステップを省略してよく、実行しなくてもよい。さらに、「その後」、「次いで」、「次に」などの語は、ステップの順序を限定することを意図していない。これらの語は、単に例示的な方法の説明を通じて読者を導くために使用されている。
【０１０４】
上記の開示に鑑みて、プログラミングの当業者は、たとえば本明細書のフローチャートおよび関連する説明に基づいて、コンピュータコードを書くか、または適切なハードウェアおよび/もしくは回路を特定し、開示された発明を容易に実施することができる。したがって、特定の1組のプログラムコード命令または詳細なハードウェアデバイスの開示が、本発明をどのように製作し使用すべきかについて適切に理解するうえで必要であるとはみなされない。コンピュータによって実施される特許請求されるプロセスの発明性のある機能が、上の説明において、かつ、様々なプロセスの流れを示し得る各図面に関連して、より詳細に説明される。
【０１０５】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装することができる。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶され得る。コンピュータ可読媒体は、コンピュータによってアクセスされ得る任意の利用可能な非一時的媒体を含み得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形式で所望のプログラムコードを搬送もしくは記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。
【０１０６】
本明細書で使用する場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(「CD」)、レーザディスク、光ディスク、デジタル多用途ディスク(「DVD」)、フレキシブルディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【０１０７】
選択された態様について詳細に図示し説明したが、以下の特許請求の範囲によって定義されるような本発明の趣旨および範囲から逸脱することなく、各態様において様々な置換および改変を実施できることが理解されよう。
【符号の説明】
【０１０８】
100  PCD
101  コントローラモジュール、コントローラ
102  オンチップシステム
103  低レベルドライバ、システム
105  リソース
105A〜C  共用リソース
105A  第1の共用リソース(SR#1)
105B  第2の共用リソース(SR#2)
105C  第Nの共用リソース(SR#N)
105D〜H  ローカルリソース
105D  第1のローカルリソース(LR#1)
110  プロセッサ、CPU、マスタプロセッサ、デジタル信号プロセッサ、マルチコア中央処理装置(「CPU」)
110A  第1の中央処理装置(「CPU」)、プロセッサ、第1のマスタプロセッサ(A)
110B  第2のCPU、プロセッサ、マスタプロセッサ
110C  マスタプロセッサ
112  メモリ
113A  クロックコード
126  プロセッサ、アナログ信号プロセッサ、マスタプロセッサ
128  ディスプレイコントローラ
130  タッチスクリーンドライバ/コントローラ
132  タッチスクリーンディスプレイ、タッチスクリーン
134  ビデオコーダ/デコーダ(「コーデック」)、ビデオエンコーダ
136  ビデオ増幅器
138  ビデオポート
140  ユニバーサルシリアルバス(「USB」)コントローラ
142  USBポート
146  加入者識別モジュール(SIM)カード
148  デジタルカメラ、カメラ
150  ステレオオーディオコーデック
152  オーディオ増幅器
154  第1のステレオスピーカー
156  第2のステレオスピーカー
157  システムパワーマネージャ(「SPM」)
157B  熱センサ
158  マイクロフォン増幅器
160  マイクロフォン
162  周波数変調(「FM」)ラジオチューナー
164  FMアンテナ
166  ステレオヘッドフォン
168  高周波(「RF」)トランシーバ
170  RFスイッチ
172  RFアンテナ
174  キーパッド
176  マイクロフォンを備えたモノヘッドセット
178  バイブレータデバイス、バイブレータ
180  電源
222  第0のコア
224  第1のコア
230  第Nのコア
302  リソーステーブル
304  リソースセット、マスタリソースセット
306  アクティブリソースセット、アクティブセット
308  スリープリソースセット、スリープセット
314  トリガセット
316  割込みフィールド
318  「セットから」フィールド、
320  「セットへ」フィールド
322  トリガ開始列、トリガ開始フィールド
324  クリア列、クリアフィールド、アクティブ列
326  タイマー列、タイマーフィールド、タイマートリガ
702  「A」メモリバッファ、「A」バッファ
704  「B」メモリバッファ、「B」バッファ
706  「C」メモリバッファ、「C」バッファ
902  「A」バッファ
904  「B」バッファ
【図１】
0005605970.tif 000002
【図２】
0005605970.tif 000003
【図３】
0005605970.tif 000004
【図４】
0005605970.tif 000005
【図５】
0005605970.tif 000006
【図６】
0005605970.tif 000007
【図７】
0005605970.tif 000008
【図８】
0005605970.tif 000009
【図９】
0005605970.tif 000010
【図１０】
0005605970.tif 000011
【図１１】
0005605970.tif 000012
【図１２】
0005605970.tif 000013
【図１３】
0005605970.tif 000014
【図１４】
0005605970.tif 000015
【図１５】
0005605970.tif 000016
【図１６】
0005605970.tif 000017
【図１７】
0005605970.tif 000018
【図１８】
0005605970.tif 000019
【図１９】
0005605970.tif 000020
【図２０】
0005605970.tif 000021
【図２１】
0005605970.tif 000022
【図２２】
0005605970.tif 000023
【図２３】
0005605970.tif 000024