(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイス内の複数のシステムオンチップ(SOC)の動作状態を協調させる方法であって、
第1のSOCによって、前記第1のSOCの動作状態が前記第1のSOCと第2のSOCとの間における潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を示すかどうかを決定するステップと、
前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を前記第1のSOCの前記動作状態が示すと決定したことに応答して、前記第1のSOCによって、前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの事前通知を表す情報を通信するステップと、
前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を前記第1のSOCの前記動作状態が示さないと決定したことに応答して、前記第1のSOCによって、前記第2のSOCがスリープ状態に入ることを許可する情報を通信するステップと、
前記第2のSOCによって、前記潜在的な切迫したインタラクションの事前通知と前記第2のSOCがスリープ状態に入ることを許可する前記情報のうちの1つを前記第1のSOCから受信するステップと、
前記第2のSOCによって、受信された情報に基づいて前記第2のSOCの動作状態を実行するステップと、
前記第2のSOCによって、前記第2のSOCにおいて受信されたデータが前記第1のSOCによるさらなる処理を必要とすると決定することに応答して、前記第1のSOCが低電力状態に遷移することを防止する要求を通信するステップと、を含む方法。
【請求項２】
前記受信された情報に基づいて前記第2のSOCの動作状態を実行するステップは、前記第2のSOC上で実行している電力マネージャによって、前記受信された情報に基づいて前記第2のSOCの電力状態を実行するステップを含む、請求項1に記載の方法。
【請求項３】
前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの前記事前通知を表す前記情報を通信するステップは、前記第1のSOCによって、前記第1のSOCの動作状態を表す値を前記第2のSOCのメモリレジスタに設定するステップを含み、
前記受信された情報に基づいて前記第2のSOCの前記電力状態を実行するステップは、前記第2のSOC上で実行している前記電力マネージャによって、前記第2のSOCの前記メモリレジスタ内の前記値に基づいて前記第2のSOCの前記電力状態を決定するステップを含む、請求項2に記載の方法。
【請求項４】
前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの前記事前通知を表す前記情報を通信するステップは、前記第1のSOCによって、前記第2のSOCの前記電力マネージャにメッセージを送るステップを含み、前記メッセージは、複数の電力状態のうちの1つの実行に関するコマンドを含み、
前記受信された情報に基づいて前記第2のSOCの前記電力状態を実行するステップは、前記第2のSOCの前記電力マネージャによって、前記電力マネージャへの前記メッセージで送られた前記コマンドに基づいて、前記第2のSOCの前記電力状態を決定するステップを含む、請求項2に記載の方法。
【請求項５】
第1のシステムオンチップ(「第1のSOC」)と第2のシステムオンチップ(「第2のSOC」)とを備え、前記第1のSOCおよび前記第2のSOCの各々は、コンピューティングデバイス内の複数のSOCの動作状態を協調させるための動作を実施するプロセッサ実行可能命令を用いて構成されたプロセッサをさらに備え、前記動作は、
前記第1のSOCの前記プロセッサによって、前記第1のSOCの動作状態が前記第1のSOCと前記第2のSOCとの間における潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を示すかどうかを決定するステップと、
前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を前記第1のSOCの前記動作状態が示すと決定したことに応答して、前記第1のSOCの前記プロセッサによって、前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの事前通知を表す情報を通信するステップと、
前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を前記第1のSOCの前記動作状態が示さないと決定したことに応答して、前記第1のSOCのプロセッサによって、前記第2のSOCがスリープ状態に入ることを許可する情報を通信するステップと、
前記第2のSOCのプロセッサによって、前記潜在的な切迫したインタラクションの事前通知と前記第2のSOCがスリープ状態に入ることを許可する前記情報のうちの1つを前記第1のSOCから受信するステップと、
前記第2のSOCのプロセッサによって、受信された情報に基づいて前記第2のSOCの動作状態を実行するステップと、
前記第2のSOCのプロセッサによって、前記第2のSOCにおいて受信されたデータが前記第1のSOCによるさらなる処理を必要とすると決定することに応答して、前記第1のSOCが低電力状態に遷移することを防止する要求を通信するステップと、
を含むコンピューティングデバイス。
【請求項６】
前記第2のSOCの前記プロセッサは、前記受信された情報に基づいて前記第2のSOCの動作状態を実行するステップが前記受信された情報に基づいて前記第2のSOCの電力状態を実行するステップを含むような動作を実施するプロセッサ実行可能命令を用いて構成される、請求項5に記載のコンピューティングデバイス。
【請求項７】
前記第1のSOCの前記プロセッサは、前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの前記事前通知を表す前記情報を通信するステップが、前記第1のSOCの動作状態を表す値を前記第2のSOCのメモリレジスタに設定するステップを含むような動作を実施するプロセッサ実行可能命令を用いて構成され、
前記第2のSOCの前記プロセッサは、前記受信された情報に基づいて前記第2のSOCの前記電力状態を実行するステップが前記第2のSOCの前記メモリレジスタ内の前記値に基づいて前記第2のSOCの前記電力状態を決定するステップを含むような動作を実施するプロセッサ実行可能命令を用いて構成される、請求項6に記載のコンピューティングデバイス。
【請求項８】
前記第1のSOCの前記プロセッサは、前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの前記事前通知を表す前記情報を通信するステップが、前記第2のSOCの前記プロセッサにメッセージを送るステップを含むような動作を実施するプロセッサ実行可能命令を用いて構成され、前記メッセージは、複数の電力状態のうちの1つの実行に関するコマンドを含み、
前記第2のSOCの前記プロセッサは、前記受信された情報に基づいて前記第2のSOCの前記電力状態を実行するステップが前記第2のSOCの前記プロセッサへの前記メッセージで送られた前記コマンドに基づいて、前記第2のSOCの前記電力状態を決定するステップを含むような動作を実施するプロセッサ実行可能命令を用いて構成される、請求項6に記載のコンピューティングデバイス。
【請求項９】
第1のシステムオンチップ(「第1のSOC」)のプロセッサおよび第2のシステムオンチップ(「第2のSOC」)のプロセッサに、コンピューティングデバイス内の複数のSOCの動作状態を協調させるための動作を実施させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記動作は、
前記第1のSOCの前記プロセッサによって、前記第1のSOCの動作状態が前記第1のSOCと前記第2のSOCとの間における潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を示すかどうかを決定するステップと、
前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を前記第1のSOCの前記動作状態が示すと決定したことに応答して、前記第1のSOCの前記プロセッサによって、前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの事前通知を表す情報を通信するステップと、
前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を前記第1のSOCの前記動作状態が示さないと決定したことに応答して、前記第1のSOCのプロセッサによって、前記第2のSOCがスリープ状態に入ることを許可する情報を通信するステップと、
前記第2のSOCのプロセッサによって、前記潜在的な切迫したインタラクションの事前通知と前記第2のSOCがスリープ状態に入ることを許可する前記情報のうちの1つを前記第1のSOCから受信するステップと、
前記第2のSOCのプロセッサによって、受信された情報に基づいて前記第2のSOCの動作状態を実行するステップと、
前記第2のSOCのプロセッサによって、前記第2のSOCにおいて受信されたデータが前記第1のSOCによるさらなる処理を必要とすると決定することに応答して、前記第1のSOCが低電力状態に遷移することを防止する要求を通信するステップと、を含む非一時的プロセッサ可読記憶媒体。
【請求項１０】
前記記憶されたプロセッサ実行可能命令は、前記コンピューティングデバイスの前記第2のSOCの前記プロセッサに、前記受信された情報に基づいて前記第2のSOCの動作状態を実行するステップが前記受信された情報に基づいて前記第2のSOCの電力状態を実行するステップを含むような動作を実施させるように構成される、請求項9に記載の非一時的プロセッサ可読記憶媒体。
【請求項１１】
前記記憶されたプロセッサ実行可能命令は、前記第1のSOCの前記プロセッサに、前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの前記事前通知を表す前記情報を通信するステップが、前記第1のSOCの動作状態を表す値を前記第2のSOCのメモリレジスタに設定するステップを含むような動作を実施させるように構成され、
前記記憶されたプロセッサ実行可能命令は、前記第1のSOCの前記プロセッサに、前記受信された情報に基づいて前記第2のSOCの前記電力状態を実行するステップが前記第2のSOCの前記メモリレジスタ内の前記値に基づいて前記第2のSOCの前記電力状態を決定するステップを含むような動作を実施させるように構成される、請求項10に記載の非一時的プロセッサ可読記憶媒体。
【請求項１２】
前記記憶されたプロセッサ実行可能命令は、前記第1のSOCの前記プロセッサに、前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの前記事前通知を表す前記情報を通信するステップが、前記第2のSOCの前記プロセッサにメッセージを送るステップを含むような動作を実施させるように構成され、前記メッセージは、複数の電力状態のうちの1つの実行に関するコマンドを含み、
前記記憶されたプロセッサ実行可能命令は、前記第2のSOCの前記プロセッサに、前記受信された情報に基づいて前記第2のSOCの前記電力状態を実行するステップが前記第2のSOCの前記プロセッサへの前記メッセージで送られた前記コマンドに基づいて前記第2のSOCの前記電力状態を決定するステップを含むような動作を実施させるように構成される、請求項10に記載の非一時的プロセッサ可読記憶媒体。
【請求項１３】
コンピューティングデバイス内の複数のシステムオンチップ(SOC)の動作状態を協調させるように構成されたコンピューティングデバイスであって、
第1のSOCにおいて、前記第1のSOCの動作状態が前記第1のSOCと第2のSOCとの間における潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を示すかどうかを決定するための手段と、
前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を前記第1のSOCの前記動作状態が示すと決定したことに応答して、前記第1のSOCにおいて、前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの事前通知を表す情報を通信するための手段と、
前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションを生じさせることが可能であるデータ処理を前記第1のSOCの前記動作状態が示さないと決定したことに応答して、前記第1のSOCにおいて、前記第2のSOCがスリープ状態に入ることを許可する情報を通信するための手段と、
前記第2のSOCにおいて、前記潜在的な切迫したインタラクションの事前通知と前記第2のSOCがスリープ状態に入ることを許可する前記情報のうちの1つを前記第1のSOCから受信するための手段と、
前記第2のSOCにおいて、受信された情報に基づいて前記第2のSOCの動作状態を実行するための手段と、
前記第2のSOCにおいて、前記第2のSOCにおいて受信されたデータが前記第1のSOCによるさらなる処理を必要とすると決定することに応答して、前記第1のSOCが低電力状態に遷移することを防止する要求を通信するための手段と、
備えるコンピューティングデバイス。
【請求項１４】
第2のSOCにおいて、前記受信された情報に基づいて前記第2のSOCの動作状態を実行するための手段は、前記受信された情報に基づいて前記第2のSOCの電力状態を実行するための手段を含む、請求項13に記載のコンピューティングデバイス。
【請求項１５】
前記第1のSOCにおいて、前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの前記事前通知を表す前記情報を通信するための手段は、前記第1のSOCの動作状態を表す値を前記第2のSOCのメモリレジスタに設定するための手段を含み、
前記第2のSOCにおいて、前記受信された情報に基づいて前記第2のSOCの前記電力状態を実行する手段は、前記第2のSOCの前記メモリレジスタ内の前記値に基づいて前記第2のSOCの前記電力状態を決定するための手段を含む、請求項14に記載のコンピューティングデバイス。
【請求項１６】
前記第1のSOCにおいて、前記第1のSOCと前記第2のSOCとの間における前記潜在的な切迫したインタラクションの前記事前通知を表す前記情報を通信するための手段は、前記第2のSOCにメッセージを送るための手段を含み、前記メッセージは、複数の電力状態のうちの1つの実行に関するコマンドを含み、
前記第2のSOCにおいて、前記受信された情報に基づいて前記第2のSOCの前記電力状態を実行するための手段は、前記第2のSOCのプロセッサへの前記メッセージで送られた前記コマンドに基づいて前記第2のSOCの前記電力状態を決定するための手段を含む、請求項14に記載のコンピューティングデバイス。
【請求項１７】
前記受信された情報に基づいて前記第2のSOCの動作状態を実行するステップは、
前記第1のSOCから受信された情報が、前記第2のSOCがスリープ状態に入ることを許可する前記情報であるかどうかを決定するステップと、
前記第2のSOCがスリープ状態に入ることを許可する前記情報を前記第1のSOCから受信することに応答して、前記第2のSOCのスリープ状態を実行するステップとを含む、請求項1に記載の方法。
【請求項１８】
前記第2のSOCの前記プロセッサは、前記受信された情報に基づいて前記第2のSOCの動作状態を実行するステップが、
前記第2のSOCの前記プロセッサよって、前記第1のSOCから受信された情報が、前記第2のSOCがスリープ状態に入ることを許可する前記情報であるかどうかを決定するステップと、
前記第2のSOCの前記プロセッサによって、前記第2のSOCがスリープ状態に入ることを許可する前記情報を前記第1のSOCから受信することに応答して、前記第2のSOCのスリープ状態を実行するステップとを含むような動作を実施するプロセッサ実行可能命令を用いて構成される、請求項5に記載のコンピューティングデバイス。
【請求項１９】
前記記憶されたプロセッサ実行可能命令は、前記コンピューティングデバイスの前記第2のSOCの前記プロセッサに、前記受信された情報に基づいて前記第2のSOCの動作状態を実行するステップが、
前記第1のSOCから受信された情報が、前記第2のSOCがスリープ状態に入ることを許可する前記情報であるかどうかを決定するステップと、
前記第2のSOCがスリープ状態に入ることを許可する前記情報を前記第1のSOCから受信することに応答して、前記第2のSOCのスリープ状態を実行するステップとを含むような動作を実施させるように構成される、請求項9に記載の非一時的プロセッサ可読記憶媒体。
【請求項２０】
前記第2のSOCにおいて、前記受信された情報に基づいて前記第2のSOCの動作状態を実行するための手段は、
前記第1のSOCから受信された情報が、前記第2のSOCがスリープ状態に入ることを許可する前記情報であるかどうかを決定するための手段と、
前記第2のSOCがスリープ状態に入ることを許可する前記情報を前記第1のSOCから受信することに応答して、前記第2のSOCのスリープ状態を実行するための手段とを含む、請求項13に記載のコンピューティングデバイス。
【請求項２１】
前記第2のSOCがスリープ状態に入ることを許可する前記情報は、前記第1のSOCと前記第2のSOCの間の前記潜在的な切迫したインタラクションが存在しないことを示す情報を含む、請求項1に記載の方法。
【請求項２２】
前記第2のSOCがスリープ状態に入ることを許可する前記情報は、前記第1のSOCと前記第2のSOCの間の前記潜在的な切迫したインタラクションが存在しないことを示す情報を含む、請求項5に記載のコンピューティングデバイス。
【請求項２３】
前記第2のSOCがスリープ状態に入ることを許可する前記情報は、前記第1のSOCと前記第2のSOCの間の前記潜在的な切迫したインタラクションが存在しないことを示す情報を含む、請求項9に記載の非一時的プロセッサ可読記憶媒体。
【請求項２４】
前記第2のSOCがスリープ状態に入ることを許可する前記情報は、前記第1のSOCと前記第2のSOCの間の前記潜在的な切迫したインタラクションが存在しないことを示す情報を含む、請求項13に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングデバイス内の複数のＳＯＣの間における動作状態の協調のための方法およびシステムに関する。
【背景技術】
【０００２】
ワイヤレス通信技術およびモバイル電子デバイス(たとえば、セルラーフォン、タブレット、ラップトップなど)は人気および使用率が上昇している。増大する消費者の要求についていくために、モバイルデバイスは、より機能が豊富になり、今や一般的に、複数のシステムオンチップ(SOC)、およびモバイルデバイスのユーザがモバイルデバイスにおいて複雑で処理負荷の大きいソフトウェアアプリケーション(たとえば、ビデオおよびオーディオストリーミングおよび/または処理アプリケーション、ネットワークゲーミングアプリケーションなど)を実行することを可能にする他のリソースを含む。これらの改善および他の改善により、スマートフォンおよびタブレットコンピュータは人気が高まり、多くのユーザが選択するプラットフォームとして、ラップトップおよびデスクトップマシンに取って代わっている。しかしながら、モバイルデバイスは、比較的限られた電源を含むことが多い。
【発明の概要】
【課題を解決するための手段】
【０００３】
様々な実施形態は、コンピューティングデバイス内の複数のシステムオンチップ(SOC)の動作状態を協調させるための方法、デバイス、および非一時的プロセッサ可読記憶媒体を提供する。ある実施形態の方法は、第1のSOCによって、第1のSOCと第2のSOCとの間における潜在的な切迫したインタラクションの事前通知を表す情報を通信するステップと、第2のSOCによって、潜在的な切迫したインタラクションの事前通知を表す情報を受信するステップと、第2のSOCによって、受信された情報に基づいて第2のSOCの動作状態を実行するステップと、を含み得る。
【０００４】
いくつかの実施形態では、受信された情報に基づいて第2のSOCの動作状態を実行するステップは、第2のSOC上で実行している電力マネージャによって、受信された情報に基づいて第2のSOCの電力状態を実行するステップを含み得る。いくつかの実施形態では、第1のSOCと第2のSOCとの間における潜在的な切迫したインタラクションの事前通知を表す情報を通信するステップは、第1のSOCによって、第1のSOCの動作状態を表す値を第2のSOCのメモリレジスタに設定するステップを含み得、受信された情報に基づいて第2のSOCの電力状態を実行するステップは、第2のSOC上で実行している電力マネージャによって、第2のSOCのメモリレジスタ内の値に基づいて第2のSOCの電力状態を決定するステップを含み得る。いくつかの実施形態では、第1のSOCと第2のSOCとの間における潜在的な切迫したインタラクションの事前通知を表す情報を通信するステップは、第1のSOCによって、第2のSOCの電力マネージャにメッセージを送るステップであって、メッセージは複数の電力状態のうちの1つの実行に関するコマンドを含む、ステップを含み得、受信された情報に基づいて第2のSOCの電力状態を実行するステップは、第2のSOCの電力マネージャによって、電力マネージャへのメッセージで送られたコマンドに基づいて第2のSOCの電力状態を決定するステップを含み得る。
【０００５】
さらなる実施形態は、上記で説明した方法の動作を実施するためのプロセッサ実行可能命令を用いて構成されたコンピューティングデバイス(またはモバイルコンピューティングデバイス)を含む。さらなる実施形態は、コンピューティングデバイスに上記で説明した方法の動作を実施させるように構成されたプロセッサ実行可能命令が記憶されている非一時的プロセッサ可読媒体を含む。
【０００６】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本発明の例示的な態様を示すものである。上記の概略的な説明および下記の発明を実施するための形態とともに、図面は、開示する態様を限定するのではなく、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【０００７】
【図１Ａ】様々な態様による、動作状態を協調させるコンピューティングデバイスのSOCを示す概念的なシステムブロック図である。
【図１Ｂ】様々な実施形態による、図1Aのコンピューティングデバイス内のSOCの動作状態を協調させる方法のプロセスフロー図である。
【図２】様々な実施形態による、コンピューティングデバイスにおいて使用され得るシステムオンチップ(SOC)アーキテクチャのブロック図である。
【図３】様々な実施形態による、SOC内で実行する電力管理状態マシンによって実装され得る例示的な状態図である。
【図４】一実施形態による、アプリケーションプロセッサSOCおよびWIFIトランシーバSOCの個々の電力管理状態マシンによって実装されたモノリシックの電力管理状態マシンに実装される方法のプロセスフロー図である。
【図５】様々な実施形態を実施するのに適したコンピューティングデバイスの構成要素ブロック図である。
【発明を実施するための形態】
【０００８】
添付の図面を参照して、様々な態様について詳細に説明する。可能な限り、同じまたは同様の部分を指すために図面全体を通じて同じ参照番号が使用される。特定の例および実装形態になされる参照は、例示の目的のためであり、特許請求の範囲を限定することを意図していない。
【０００９】
「例示的な」という語は、本明細書において、「例、実例、または例証としての役割を果たすこと」を意味するために使用される。本明細書で「例示的」として説明するいかなる実装形態も、必ずしも他の実装形態よりも好ましいか、または有利であると解釈されるべきではない。
【００１０】
「モバイルデバイス」および「コンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤー、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、ならびに、プログラム可能プロセッサおよびメモリを含む同様の電子デバイスのうちの、任意の1つまたはすべてを指すように、本明細書では交換可能に使用される。様々な態様は、比較的限られた処理電力および/または電力蓄積容量を有する場合があるセルラー電話および他の携帯コンピューティングプラットフォームなどのモバイルデバイスにおいて特に有用であるが、これらの態様は、概して、スレッド、プロセス、または命令の他のシーケンスを処理デバイスまたは処理コアに割り振る任意のコンピューティングデバイスにおいても有用である。
【００１１】
「システムオンチップ」(SOC)という用語は、本明細書では、単一の基板上に統合された複数のリソースおよび/またはプロセッサを含む単一の集積回路(IC)チップを指すために使用される。単一のSOCは、デジタル、アナログ、混合信号、および無線周波数機能のための回路を含んでもよい。単一のSOCは、任意の数の汎用および/または専用のプロセッサ(デジタル信号プロセッサ、モデムプロセッサ、ビデオプロセッサなど)、メモリブロック(たとえば、ROM、RAM、Flashなど)、およびリソース(たとえば、タイマー、電圧調整器、発振器など)も含んでもよい。SOCはまた、統合されたリソースおよびプロセッサを制御するための、また周辺デバイスを制御するためのソフトウェアを含んでもよい。
【００１２】
本出願で使用する「構成要素」、「モジュール」、「システム」などの用語は、限定はされないが、特定の動作もしくは機能を実行するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなどの、コンピュータ関連のエンティティを含むものとする。たとえば、構成要素は、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであってもよいが、それらに限定されない。例として、コンピューティングデバイス上で動作しているアプリケーションとコンピューティングデバイスの両方は、構成要素と呼ばれる場合がある。1つまたは複数の構成要素が、プロセスおよび/または実行スレッド内に存在することがあり、1つの構成要素が、1つのプロセッサまたはコア上に局在することがあり、かつ/あるいは2つ以上のプロセッサまたはコアの間で分散されることがある。加えて、これらの構成要素は、様々な命令および/またはデータ構造が上に記憶された様々な非一時的プロセッサ可読媒体から実行され得る。構成要素は、ローカルおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の知られているコンピュータ、プロセッサ、および/または通信方法に関するプロセスによって通信できる。
【００１３】
今日のモバイルデバイスにおける電力消費量はスケーラブルではない。そのような電力の非効率性の理由の1つは、現代のモバイルデバイス(たとえば、WIFI、GPS、Bluetooth(登録商標)、モバイルワイヤレス、マルチメディアなど)で採用されている分離されたSOC内の電力管理の現行の実装形態に起因している。具体的に言えば、各SOCは、他のSOCから独立して動作し、したがって他のSOCの電力および動作状態に気づいていない。そのように分離しているため、各SOCは、リソースの状態のみに基づいてSOC内で低電力モード(たとえば、スリープ、ドーズなど)へのエントリに関する決定を行う。したがって、SOCベースのコンピューティングデバイス(たとえば、現代のスマートフォン)上における電力消費量は、デバイス内のそれぞれのSOCに対するアルゴリズムまたは状態機械を実装した複数の自律的な電力管理プロセスによって管理されている。
【００１４】
電力管理に関するこの現在の方法体系は非効率的であるが、それは、それぞれの電力管理プロセスの各々が、その電力管理決定において入力として使用するための、他のSOCの動作状態に関する有用な情報にアクセスする方法を持たないからである。別のSOCから発生する切迫したイベントまたはインタラクションに先立ってそのリソースが必要とされるかどうかをSOCが通知されるための方法は存在しない。したがって、SOC上で実行する電力管理プロセスは、別のSOCが処理のためにそのSOCにデータを送ろうとしているにもかかわらず、そのSOC自体の状態情報に基づいてスリープ状態に入ることを決定し得る。その結果、SOCは非常に短い期間の後にスリープ状態を抜け出なければならなくなる。このことは、低電力状態から復帰するために時間(レイテンシ)と電力を要するため非効率的となり得る。
【００１５】
そのような問題を回避するため、SOC内に実装される従来型の電力管理プロセスは一般に、スリープ状態に遷移する前にSOC自体のリソースの非アクティビティの長期にわたる持続時間を必要とする、保守的な電力管理アルゴリズムまたは状態機械を使用して設計される。間欠的なワークロードを伴って、スリープ状態に先立つそのような遅延は、SOCのリソースが近い将来におけるタスクされたまたは提供されたデータであり得る可能性があるときにスリープの決定が通知され得る場合に達成され得るのと比較して、スタンバイおよびアイドル状態における相当な電力非効率性を生じることになる。
【００１６】
様々な態様は、SOC自体のリソースが別のSOCによって必要とされ得るときをSOCが前もって通知され得るように、コンピューティングデバイス内の複数のSOCの動作状態を協調させるための方法、システム、およびデバイスを提供するものである。そのような協調は、互いの間における切迫したインタラクションの事前通知を表す情報をSOCによって通信することを通じて実装され得る。通信された情報は、別のSOCとの潜在的な切迫したインタラクションに先立って動作状態を設定するために受信側SOCによって使用され得る。この技術的な改善は、個々のSOCが他のSOCの動作状態に先制して影響を及ぼすことを可能にする。たとえば、電力管理の情況では、様々な態様が複数のSOCの電力状態を協調させ、それによって、コンピューティングデバイスの全体的な電力消費量を改善するモノリシックの電力管理状態機械が効果的に実装され得る。
【００１７】
図1Aは、様々な態様による、動作状態を協調させるコンピューティングデバイスのSOCを示す概念的なシステムブロック図である。図示のように、コンピューティングデバイス10は、外部バスまたは他の相互接続(図示せず)を介して互いに結合された少なくとも2つのSOC 20、30を含み得る。図1Bは、様々な実施形態による、図1Aのコンピューティングデバイス内のSOCの動作状態を協調させる方法のプロセスフロー図100である。たとえば、ブロック110では、第1のSOCが、受信側SOCに情報を通信し得、その情報は、それらSOCに関わる切迫したインタラクションの事前通知を表すものである。ブロック120では、受信側SOCは、潜在的な切迫したインタラクションを表す通信された情報を受信する。図1Aに示すように、各SOC 20、30は、情報の通信側または受信側として働き得る。ブロック130では、受信側SOCは、潜在的な切迫したインタラクションが実際に生じるのに先立って、受信された情報に基づいて動作状態を実行し得る。SOCによるそのような情報の通信は、切迫したインタラクションが現在の動作状態の結果として生じ得ることをSOCが決定したときはいつでも生じ得る。代替的に、そのような情報の通信は、SOCが別の動作状態に遷移したときはいつでも生じ得る。
【００１８】
いくつかの実施形態では、通信される情報は、SOCの動作状態24を表すフラグまたは値であり得る。たとえば、動作状態24は、受信側SOCのリソースへのアクセスを必要とし得る、切迫したインタラクションを示し得る。通信される情報はまた、切迫したインタラクションに先立って受信側SOCによる特定の動作状態の実行(または非実行)を要求する、SOCからのコマンド34であり得る。たとえば、図1Aに示すように、SOC 20、30の状態機械22、32は、それらの間における切迫したインタラクションに先立って互いのそれぞれの動作状態に効果的に影響を及ぼすために、動作状態および/またはコマンドを交換し得る。その後のインタラクションが実際に生じ、したがって潜在的な切迫したインタラクションと呼ばれることは必要ではない。たとえば、モデムSOCは、着信信号がアプリケーションプロセッサSOCに引き渡されるべきデータであるかどうかを決定する前に、着信信号を受信しているアプリケーションプロセッサSOCのメモリにメッセージを送り得るか、またはそのメモリに状態値を設定し得る。この例では、着信信号は、アプリケーションプロセッサSOCに引き渡される必要のないステータスメッセージであることが明らかとなり得、したがって、アプリケーションプロセッサSOCに設定されたメッセージまたは状態値に従い得るインタラクションはない。したがって、潜在的な切迫したインタラクションを表す情報は、そのようなインタラクションが生じた場合に受信側SOCがレディとなり得るように受信側SOCに通信され得る。
【００１９】
SOC動作状態またはコマンドを表す情報の通信は、あるSOC上で実行しているプロセスが、フラグまたは他の値などのデータを、別のSOCの制御レジスタまたは他のメモリ要素に直接、書き込むことを伴い得る。電力管理プロセスなど、他のSOC上で実行しているプロセスは、周期的にまたはSOCの動作状態を他のSOCの動作状態と協調させるためのアルゴリズムもしくは状態機械の一部として、データに関して制御レジスタまたは他のメモリ要素をチェックし得る。そのような情報の通信はまた、あるSOCがアプリケーションプログラミングインターフェース(API)を通じて他のSOC内のAPIを実装するプロセッサにメッセージを送ることを伴い得る。そのメッセージは、メッセージのペイロード内の定様式データとしてSOCの動作状態またはコマンドを表す情報を含み得る。
【００２０】
図2は、様々な実施形態による、コンピューティングデバイスにおいて使用され得るシステムオンチップ(SOC)アーキテクチャのブロック図である。この例では、アプリケーションプロセッサSOC 200およびWIFIトランシーバSOC 300は、それらの間における切迫したインタラクションに先立って互いのそれぞれの電力状態に効果的に影響を及ぼすために、動作状態および/またはコマンドを交換し得る。
【００２１】
アプリケーションプロセッサSOC 200は、デジタル信号プロセッサ(DSP)202、モデムプロセッサ204、グラフィックスプロセッサ206、アプリケーションプロセッサ208、および電力管理プロセッサ210などのいくつかの異種プロセッサを含み得る。アプリケーションプロセッサSOC 200はまた、アナログ回路およびカスタム回路214と、コンピューティングデバイス上で動作しているプロセッサおよびソフトウェアプログラムをサポートするために使用される他のシステム構成要素およびリソース216とを含み得る。プロセッサ202、204、206、208、210は、相互接続/バスモジュール218を介して、互いに通信するとともに、1つまたは複数のメモリ要素212、システム構成要素およびリソース216、および回路214と通信してもよく、相互接続/バスモジュール218は、再構成可能な論理ゲートのアレイを含み、ならびに/あるいはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装してもよい。
【００２２】
WIFIトランシーバSOC 300はまた、WIFIステーション(STA)管理プログラム302、802.11メディアアクセス制御/物理レイヤ(MAC/PHY)パケットプロセッサ304、中間周波数(IF)/ベースバンドプロセッサ306、802.11タイミング同期フレームワーク(TSF)プロセッサ308、および電力マネージャプロセッサ310など、いくつかの異種のプロセッサを含み得る。WIFIトランシーバSOC 300はまた、WIFIデータの送信および受信をサポートするために使用される他のWIFI構成要素およびリソース314を含み得る。WIFIプロセッサ302、304、306、308、310は、相互接続/バスモジュール318を介して、互いに通信するとともに、1つまたは複数のメモリ要素312、ならびに他のWIFI構成要素およびリソース314と通信してもよく、相互接続/バスモジュール318は、再構成可能な論理ゲートのアレイを含むこと、および/またはバスアーキテクチャを実装することが可能である。
【００２３】
電力管理の情況では、アプリケーションプロセッサSOC 200およびWIFIトランシーバSOC 300は、従来は情報を共有しない状態機械210a、310aなどの個々の電力管理プロセスの間で、動作状態情報または電力コマンドを同期的に通信することを通じて、モノリシックの電力管理状態機械を効果的に実装するように構成され得る。通信された状態情報または電力コマンドは、スリープ状態または他の低減された電力状態(たとえば、DOZE、SLEEP、DEEP_SLEEPなど)に遷移するべきかどうかまたはいつ遷移するべきかを決定するために、受信側SOCの電力管理プロセスによって使用され得る。このようにして、個々のSOCの各々は、プラットフォームベースの電力管理方式を作り出すために、他のSOCの電力管理に先制して影響を及ぼし得る。
【００２４】
この例では、そのようなモノリシックの電力管理は、WIFIトランシーバSOC 300がアプリケーションプロセッサSOC 200に動作状態フラグまたは識別子を設定することによって実装され得るが、その動作状態フラグは、アプリケーションプロセッサSOC 200の1つまたは複数のプロセッサおよび/またはリソースへのアクセスを必要とし得る切迫したイベントまたはインタラクションを示す値である。図2に示すように、アプリケーションプロセッサSOC 200は、レジスタ212aを有するメモリ要素212を含み得、そのレジスタ212aにWIFIトランシーバSOC 300はその動作状態フラグを書き込み得る。アプリケーションプロセッサSOC 200は次いで、スリープ状態に遷移すべきかどうかを決定するために電力管理プロセッサ210によって実行される電力管理状態機械210aの一部として、この情報を使用し得る。WIFIトランシーバSOC 300によるそのような通信は、結果としてデータがアプリケーションプロセッサSOC 200に送られることになり得る(ならない場合もある)、構成要素であるWIFIプロセッサのうちの1つまたは複数によって実施される特定のデータ処理の開始時に生じ得る(たとえば、状態フラグが設定される)。言い換えれば、アプリケーションプロセッサSOC 200は、データがWIFIトランシーバSOC 300から到着し得ることを事前に通知され、それによってプロセッサおよびアプリケーションプロセッサSOC 200のリソースは、もしそのようなデータが実際に到着したときに着信データを扱う準備をすることが可能となる。
【００２５】
たとえば、WIFIトランシーバSOC 300の構成要素であるプロセッサのうちの1つが、(たとえば、WIFI送信のプリアンブルデータの受信時に)着信データ送信が受信されようとしていることを決定または検出したことに応答して、電力管理プロセッサ310内で実行している電力管理状態機械310aは、データが後に受信されると着信データ送信を処理するアプリケーションプロセッサSOC 200に、「NO_SLEEP」コマンドを含んだメッセージを送信し得るか、またはこのアプリケーションプロセッサSOC 200のSOCレジスタ212aにフラグを設定し得る。同様に、アプリケーションプロセッサSOC 200の構成要素であるプロセッサのうちの1つが、WIFIリンクを介して送られることが必要となり得るデータが処理されていることを決定または検出したことに応答して、アプリケーションプロセッサSOC 200の電力管理プロセッサ210上で実行している電力管理状態機械210aは、WIFIデータ送信を扱うWIFIトランシーバSOC 300にメッセージを発行し得るか、またはそのWIFIトランシーバSOC 300のSOCレジスタ312aにフラグを設定し得る。そのような通信は、WIFIトランシーバSOC 300の電力管理状態機械310aが、スリープ状態に遷移するべきかどうかを決定するときに、そのような有用な情報を考慮し、したがってスリープ状態への遷移を遅延(または迅速化)することを可能にする。
【００２６】
様々な実施形態に従ってSOCに送られるメッセージまたは設定されるフラグは、SOCが互いに通信する通常のデータ送信および中断とは異なるものである。たとえば、メッセージ/フラグの設定は、別のSOCを必要とする可能性があり、したがってデータが実際に送信されるまで数マイクロ秒を有する動作状態にSOCが入ると直ちに発生する。このタイミングは、受信側SOCがデータを処理することを必要とする直前に、受信側SOCがスリープ状態に入ることを警告するために重要となり得る。通常、SOCは、割込みを介して外部インターフェースバス上にデータが実際に置かれるときに着信データを通知され、結果として、受信側SOCがスリープ状態にある場合に「ウェイクアップ」レイテンシが生じる。また、そのようなメッセージ/フラグは、データが処理のために利用可能であることは示さず、また、データ送信は、受信されたWIFIパケットのペイロードがアプリケーションプロセッサSOCに提供される必要がないときなどには発生しないことがある。
【００２７】
効率的な電力管理を可能にするために、いくつかの実施形態はまた、動作状態が存在しなくなったときに(たとえば、ワイヤレスモデムプロセッサ204が着信パケットを処理していないときに)、1つのSOCが、他の受信側SOCにおいて設定された状態フラグをクリアするか、他の受信側SOCにおいて異なるフラグを設定することを含み得る。フラグが受信側SOCにおいてクリアされているとき、受信側SOCにおいて実行している電力管理プロセスは、そのSOC内の状態のみに基づいてスリープ状態に入るべきかどうかを決定し得る。受信側SOCの電力管理プロセスは、さらなる処理のために別のSOCから送られたデータの潜在的な受信を補う、付加された保守的な遅延を伴うことなく、この決定を行い得る。したがって、コンピューティングデバイス内のSOCの間における切迫したインタラクションまたはイベントに先立って、動作状態または特定のコマンドの発行に関する情報を交換することにより、およびそのような状態が存在しなくなったときにそのような情報をクリアすることにより、デバイス内のSOC上で集合的に実行している電力管理プロセスは、スリープ状態に入るためにより保守的でない基準を使用し、それによって起動レイテンシが原因でパフォーマンスに影響を及ぼすことなしに、より良好な節電を可能にし得る。
【００２８】
いくつかの実施形態では、あるSOCによる別のSOCへの、切迫したインタラクションを示す動作状態またはコマンドの通信は、その電力状態または他の動作状態を決定および実行するために他のSOCからの動作状態またはコマンドを使用する状態機械とは別であるプロセスによって実施され得る。たとえば、アプリケーションプロセッサSOC 200は、アプリケーションプロセッサ208上で実行している状態モニタ208aを含み得る。状態モニタ208aは、SOCプロセッサ202、204、206、208、210の様々な動作状態に関する情報を維持するかまたはその情報にアクセスするように構成され得る。状態モニタ208aは、状態変化が検出されたときはいつでも、または別のSOCとの切迫したインタラクションを結果として生じ得る状態変化が検出されたときにのみ、そのような動作状態を表す情報を他の外部SOCの一部または全部に通信するようにさらに構成され得る。同様に、WIFIトランシーバSOC 300は、WIFIプロセッサ302、304、306、308、および310の様々な動作状態に関する情報を維持するかまたはその情報にアクセスするように構成されたWIFIステーションマネージャ302上で実行する状態モニタ302aを含み得る。状態モニタ208a、302aの各々は、アプリケーションレイヤ、カーネルレイヤ、またはプロセッサによってそれぞれのSOC内に実装された他のオペレーティングシステムレイヤに実装されたプロセスとして実装され得る。
【００２９】
図3は、様々な実施形態による、SOCの電力管理状態機械によって実装され得る例示的な状態図350である。この例では、SOC内で実行する電力管理状態機械は、動作状態または切迫したインタラクションを表すコマンドを他のSOCに通信し、SOC自体の電力状態を決定するために他のSOCからの同様の情報を使用する。
【００３０】
ブロック355では、電力管理状態機械は、SOC内の制御レジスタ内に他のSOCによって設定された、または他のSOCからメッセージで受信された動作状態もしくはコマンド情報をチェックし得る。ブロック360では、電力管理状態機械は、別のSOCとの切迫したインタラクションを表す動作状態またはコマンド情報に部分的に基づいて、SOCに対する次の電力状態を決定し得る。たとえば、別のSOCから受信された情報がそのSOCとの切迫したインタラクションの事前通知を表すと電力管理状態機械が決定したことに応答して、電力管理状態機械は、SOCが次の電力状態365としてスリープ状態に入ることを遅延させるように決定し得る。
【００３１】
別のSOCとの切迫したインタラクションを示す情報が受信されていないと電力管理状態機械が決定したことに応答して、SOCの電力管理状態機械は、SOC内のコンディションのみに基づいてスリープ状態に入るべきかどうかを決定し得る。たとえば、SOCがアクティブな動作状態で実行している、たとえばデータを処理していると決定したことに応答して、SOCの電力管理状態機械は、SOCが次の電力状態370としてスリープ状態に入ることを遅延することを決定し得る。逆に、SOCがアクティブな動作状態で実行していない、たとえばデータを処理していないと決定したことに応答して、SOCの電力管理状態機械は、次の電力状態375としてスリープ状態にSOCを遷移させることを決定し得る。SOCの電力管理状態機械はまた、SOCがスリープ状態に入ることを明確に許可するコマンドをSOCが別のSOCから受信した場合に、次の電力状態375としてスリープ状態にSOCを遷移させることを決定し得る。
【００３２】
ブロック380および385では、SOCの電力管理状態機械は、コンピューティングデバイス内の1つまたは複数の他のSOCに、動作状態情報またはコマンドを通信し得る。このようにして、SOCの電力管理状態機械は、SOCの電力状態が他のSOCから受信された動作状態またはコマンド情報によって影響を及ぼされるのと同様の様式で、他のSOCの電力状態に先制して影響を及ぼし得る。たとえば、SOCが、状態370においてデータが処理されるアクティブな動作状態にあるか、あるいは、その時間にSOCが状態365においてアクティブな動作状態にあると予想される、別のSOCとの切迫したインタラクションをSOCが待機していると電力管理状態機械が決定したとき、電力管理状態機械は、ブロック380において他のSOCにアクティブな動作状態またはコマンドを通信し得る。他のSOCに通信される情報は、そのような他のSOCとの切迫したもしくは潜在的なインタラクションを示すことができ、かつ/または、SOCがスリープ状態に入るべきでないという指示であってもよい。反対に、SOCがスリープ状態にあるかまたはスリープ状態に入ろうとしていると、SOCの電力管理状態機械が決定したとき、SOCの電力管理状態機械は、ブロック385においてSOCのスリープ状態またはコマンドを他のSOCに通信し得、その通信は、切迫したインタラクションがないことを示すもの、および/またはそのような他のSOCがスリープ状態に入ることを認めるものである。
【００３３】
図4は、一実施形態による、アプリケーションプロセッサSOCおよびWIFIトランシーバSOCの個々の電力管理状態機械によって実装されたモノリシック電力管理状態機械に実装される方法のプロセスフロー図である。このプロセスフロー図は、図2に示されたような、アプリケーションプロセッサSOC 200およびWIFIトランシーバSOC 300のそれぞれの電力管理状態機械210a、310aが互いの電力管理方式に先制して影響を及ぼし得る様式を示している。
【００３４】
図示のように、アプリケーションプロセッサSOC 200内で実行する電力管理状態機械210a(「アプリケーション状態機械210a」)は、ブロック404において電力管理状態機械310a(「WIFI状態機械310a」)に「NO DOZE」要求コマンドを通信することによって、WIFIトランシーバSOC 300が低減された電力状態、たとえば「DOZE」に遷移することを防止し得る。
【００３５】
たとえば、決定ブロック402では、アプリケーション状態機械210aは、アクティブな「常時オン」の動作状態を必要とするアプリケーションプロセッサSOC 200上で実行している1つまたは複数のアプリケーションが存在するかどうかを決定する。この情報は、たとえば、電力管理プロセッサ210とアプリケーションプロセッサ208との間におけるSOC 200内のプロセス間通信を通じて取得され得る。少なくとも1つの「常時オン」のアプリケーションが存在すると決定したこと(すなわち、決定ブロック402=「YES」)に応答して、アプリケーション状態機械210aは、ブロック404においてWIFIトランシーバSOC 300に「NO DOZE」要求コマンドを通信し、ブロック406においてアプリケーションプロセッサSOC 200に非スリープ状態に入らせる。上記で説明したように、コマンドは、WIFIトランシーバSOC 300のメモリの制御レジスタ内にフラグもしくは他の値として設定され得るか、またはWIFIトランシーバSOC 300内のプロセッサ(たとえば、電力管理プロセッサ310)によって実装されたアプリケーションプログラミングインターフェースを通じてメッセージで送られ得る。
【００３６】
WIFI状態機械310aのプロセスフローを参照すると、「NO DOZE」電力要求コマンドの通信は、WIFIチャネルを介した着信/発信データが存在しないときでもWIFIトランシーバSOC 300が「DOZE」電力状態に遷移するのを防止し得る。たとえば、決定ブロック420では、WIFI状態機械310aは、WIFIチャネル上のキャリア検知をチェックして、着信データが存在するかどうかを決定し得る。この情報は、たとえば、電力マネージャ310とWIFIステーションマネージャ302との間におけるSOC 300内のプロセス間通信を通じて取得され得る。WIFIチャネルがクリアされた(決定ブロック420=「YES」)と決定したことに応答して、WIFI状態機械310aは、決定ブロック422および424を通じて「DOZE」状態へと遷移することを試行し得る。たとえば、決定ブロック422では、WIFI状態機械310aは、制御レジスタをチェックして、たとえば、「NO DOZE」要求コマンドがアプリケーション状態機械210aから受信されているかどうかを決定する。「NO DOZE」電力要求コマンドが受信されていると決定した(すなわち、決定ブロック422=「YES」)ことに応答して、WIFI状態機械310aは、WIFIトランシーバSOC 300のDOZE状態への遷移を防止する。その結果、アプリケーション状態機械210aは、WIFIトランシーバSOC 300がいかなる「ウェイクアップ」遅延またはレイテンシもなしに「常時オン」のアプリケーションから生起したいかなるWIFI送信をも扱う準備ができていることを確実にする。
【００３７】
逆に、アプリケーション状態機械電力は、ブロック412においてWIFI状態機械310aに「SLEEP_OK」要求コマンドを通信することによって、WIFIトランシーバSOC 300が低減された電力状態により迅速に入ることを促進し得る。
【００３８】
たとえば、再び決定ブロック402を参照すると、アプリケーションプロセッサSOC 200上で実行している「常時オン」のアプリケーションが存在しないとアプリケーション状態機械210aが決定したことに応答して、「NO DOZE」電力要求コマンドは送られない(すなわち、決定ブロック402=「NO」)。代わりに、アプリケーション状態機械210aは、決定ブロック410においてアプリケーションプロセッサSOC 200をスリープ状態に遷移させることを決定し得る。この決定は、アプリケーションプロセッサSOC 200の様々な内部プロセッサおよび構成要素の動作状態に関する要因によって実現され得る。アプリケーションプロセッサSOC 200をスリープ状態に遷移させることを決定した(すなわち、決定ブロック410=「YES」)ことに応答して、アプリケーション状態機械210aはまた、スリープ状態に入る前にブロック412においてWIFIトランシーバSOC 300に「SLEEP_OK」要求コマンドを通信し得る。ブロック414は、アプリケーションプロセッサSOC 200がデータ処理要求をリッスンするためにスリープ状態(「ウェイクアップ」)の内外に遷移する標準的な処理を表している。
【００３９】
WIFI状態機械310aのプロセスフローを参照すると、「SLEEP_OK」電力要求コマンドの通信は、WIFIトランシーバSOC 300がスリープ状態により迅速に遷移することを可能にし得る。たとえば、決定ブロック420においてWIFIチャネル上にキャリア検知が存在しないと決定した(すなわち、決定ブロック420=「NO」)ことに応答して、WIFI状態機械310aは、「DOZE」などのスリープ状態に遷移することを試行し得る。具体的には、「NO DOZE」要求コマンドが送られていないと決定した(すなわち、決定ブロック422=「NO」)ことに応答して、WIFI状態機械310aは決定ブロック424に進んで、「SLEEP_OK」要求コマンドがアプリケーション状態機械210aから受信されているかどうかを決定する。この例では、「SLEEP_OK」コマンドが受信される(すなわち、決定ブロック424=「YES」)場合、WIFI状態機械310aは、一般的なスリープ状態が遷移するよりも早く、「DOZE」状態に入ることを決定し得る。ブロック426は、送信されようとしているデータの存在を示す、他のWIFIデバイス(たとえば、アクセスポイント)からの配信トラフィック指示マップ(DTIM)メッセージをリッスンするために、WIFIトランシーバSOC 300が周期的に「ウェイクアップ」する標準的なWIFI処理を表している。
【００４０】
上記で説明したプロセスフローは、どのようにしてアプリケーションプロセッサSOC 200がWIFIトランシーバSOC 300の電力状態に影響を及ぼし得るかを示している。以下で説明するプロセスフローは、次にどのようにしてWIFIトランシーバSOCがアプリケーションプロセッサSOCの電力状態に影響を及ぼし得るかを示している。
【００４１】
図示のように、WIFI状態機械310aは、ブロック430においてアプリケーション状態機械210aに「NO SLEEP」要求コマンドを通信することによって、アプリケーションプロセッサSOC 200が低減された電力状態、たとえば「SLEEP」に遷移することを防止し得る。たとえば、ブロック420では、WIFI状態機械310aは、WIFIチャネル上のキャリア検知をチェックして、着信データが存在するかどうかを決定し得る。WIFIチャネルがクリアでないと決定したこと、たとえば、着信データがすぐに後続し得るという指示(すなわち、決定ブロック420=「NO」)に応答して、WIFI状態機械は決定ブロック428に進む。決定ブロック428では、WIFI状態機械は、WIFIトランシーバSOC 300のステーション(STA)アドレスを含んだ着信データが受信されているかどうかを決定する。ステーションアドレスに関する情報は、たとえば、電力マネージャ310とWIFIステーション(STA)マネージャプロセッサ302との間におけるプロセス間通信を通じて獲得され得る。ステーション(STA)アドレスの受信は、アプリケーションプロセッサSOC 200の1つまたは複数のプロセッサ/構成要素によるさらなる処理を必要とするデータを着信WIFI送信が含み得るというさらなる指示となり得る。ステーション(STA)アドレスが受信されていると決定した(すなわち、決定ブロック420=「YES」)ことに応答して、WIFI状態機械310aは、ブロック430においてアプリケーションプロセッサSOC 200に「NO_SLEEP」要求コマンドを通信し得、その結果、そのプロセッサおよび構成要素は、事前に着信WIFIデータ送信を扱う準備をする。たとえば、ブロック408においてNO_SLEEPコマンド要求が受信されたことをアプリケーション電力状態機械210aが検出したことに応答して、アプリケーションプロセッサSOC 200は、たとえば、SLEEP_OK電力コマンド要求が後にWIFIトランシーバSOCから受信されるまで、いかなるスリープ状態にも入ることを許可されない。
【００４２】
様々な実施形態(限定はしないが、図1〜図4を参照しながら上記で説明した実施形態を含む)は、様々なコンピューティングデバイスのうちのいずれかにおいて実装される場合があり、その一例(たとえば、モバイル通信デバイス600)が図5に示される。コンピューティングデバイス500は、タッチスクリーンコントローラ504および内部メモリ506に結合されたプロセッサ502を含む場合がある。プロセッサ502は、汎用または特定の処理タスクに指定された1つもしくは複数のマルチコア集積回路であってもよい。内部メモリ506は揮発性もしくは不揮発性メモリであってもよく、また、安全保護および/もしくは暗号化メモリであっても、または非安全保護および/もしくは非暗号化メモリであっても、あるいはそれらの任意の組合せであってもよい。タッチスクリーンコントローラ504およびプロセッサ502は、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどの、タッチスクリーンパネル512に結合される場合もある。加えて、モバイルコンピューティングデバイス500のディスプレイは、タッチスクリーン機能を有する必要はない。
【００４３】
コンピューティングデバイス500は、プロセッサ502とアンテナ510とに結合され、セルラー通信を送り、受信するように構成されたセルラーネットワークトランシーバ508を有することができる。トランシーバ508およびアンテナ510は、様々な実施方法を実施するために、上で述べた回路網と共に使用され得る。コンピューティングデバイス500は、トランシーバ508および/またはプロセッサ502に結合され、上で説明されたように構成されたSIMカード513を含むことができる。コンピューティングデバイス500は、セルラーネットワークを介する通信を可能にし、プロセッサ502に結合される、セルラーネットワークワイヤレスモデムチップ517を含むことができる。
【００４４】
コンピューティングデバイス500は、オーディオ出力を提供するためのスピーカ514をも含んでもよい。コンピューティングデバイス500は、本明細書で論じた構成要素のすべてまたは一部を含むための、プラスチック、金属、または材料の組合せで構成されたハウジング520を含むこともできる。コンピューティングデバイス500は、使い捨てまたは充電式のバッテリなどの、プロセッサ502に結合された電源522を含むことができる。充電式バッテリは、また、コンピューティングデバイス500の外部のソースから充電電流を受け取るために、周辺デバイス接続ポートに結合され得る。コンピューティングデバイス500はまた、ユーザ入力を受け取るための物理ボタン524を含み得る。コンピューティングデバイス500は、コンピューティングデバイス500をオンオフするための電源ボタン526を含む場合もある。
【００４５】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供され、様々な実施形態のステップが提示された順序で実行されなければならないことを必要とするまたは暗示するものではない。当業者によって諒解されるように、上記の実施形態におけるステップの順序は、任意の順序で実行され得る。「その後」、「次いで」、「次に」などの語は、ステップの順序を限定するものではなく、これらの語は単に、方法の説明を通じて読者を導くために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する、単数形での請求項の要素へのいかなる言及も、要素を単数形に限定するものとして解釈されるべきではない。
【００４６】
本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装される場合がある。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、一般にそれらの機能性に関して上述した。そのような機能性がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約によって決まる。当業者は、説明した機能性を特定のアプリケーションごとに様々な方法で実装し得るが、そのような実装決定は本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００４７】
本明細書において開示される諸態様に関連して説明された様々な例示的な論理、論理ブロック、モジュール、および回路を実施するのに使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、ディスクリートゲートもしくはトランジスタ論理、ディスクリートハードウェアコンポーネント、または本明細書において説明される機能を実行するように設計されたその任意の組合せを用いて実施されまたは実行され得る。汎用プロセッサは、マイクロプロセッサとされ得るが、代替案においては、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とされ得る。プロセッサは、コンピューティングデバイスの組合せ、たとえばDSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアに関連する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成としても実施され得る。代替案では、一部のステップまたは方法が、所与の機能に固有の回路網によって実行され得る。
【００４８】
1つまたは複数の例示的な態様では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せとして実装されてもよい。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に1つまたは複数の命令またはコードとして記憶されてもよい。本明細書で開示する方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて具現化され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされる場合がある任意の記憶媒体であってよい。例として、限定はしないが、そのような非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形態において所望のプログラムコードを記憶するために使用される場合があり、またコンピュータによってアクセスされる場合がある任意の他の媒体を含んでもよい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびblu-rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、非一時的コンピュータ可読およびプロセッサ可読記憶媒体の範囲内に含まれる。さらに、方法またはアルゴリズムの動作は、コンピュータプログラム製品内に組み込まれ得る、非一時的プロセッサ可読記憶媒体および/または非一時的コンピュータ可読記憶媒体上のコードおよび/または命令の1つまたは任意の組合せもしくはセットとして存在することができる。
【００４９】
開示した実施形態の前述の説明は、いかなる当業者も本発明を作成または使用することができるように記載されている。これらの実施形態に対する様々な修正が当業者には容易に明らかであり、本明細書において定義された一般的原理は、本発明の趣旨または範囲から逸脱することなく、いくつかの実施形態に適用される場合がある。したがって、本発明は、本明細書に示す実施形態に限定されるものではなく、以下の特許請求の範囲、ならびに本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００５０】
10  コンピューティングデバイス
20、30  SOC
22、32  状態機械
24  動作状態
34  コマンド
100  プロセスフロー図
200  アプリケーションプロセッサSOC
202  デジタル信号プロセッサ(DSP)、SOCプロセッサ
204  モデムプロセッサ、SOCプロセッサ
206  グラフィックスプロセッサ、SOCプロセッサ
208  アプリケーションプロセッサ、SOCプロセッサ
208a  状態モニタ
210  電力管理プロセッサ、SOCプロセッサ
210a  状態機械
212  メモリ
212a  レジスタ
214  アナログ回路およびカスタム回路、回路
216  他のシステム構成要素およびリソース
218  相互接続/バスモジュール
300  WIFIトランシーバSOC
302  WIFIステーション(STA)管理プログラム、WIFIプロセッサ
302a  状態モニタ
304  802.11メディアアクセス制御/物理レイヤ(MAC/PHY)パケットプロセッサ、WIFIプロセッサ
306  中間周波数(IF)/ベースバンドプロセッサ、WIFIプロセッサ
308  802.11タイミング同期フレームワーク(TSF)プロセッサ、WIFIプロセッサ
310  電力マネージャプロセッサ、WIFIプロセッサ
310a  状態機械
312  メモリ要素
312a  SOCレジスタ
314  他のWIFI構成要素およびリソース
318  相互接続/バスモジュール
350  状態図
500  コンピューティングデバイス
502  プロセッサ
504  タッチスクリーンコントローラ
506  内部メモリ
508  トランシーバ
510  アンテナ
512  タッチスクリーンパネル
514  スピーカ
520  ハウジング
522  電源
524  物理ボタン
526  電源ボタン
【図１Ａ】
0006370498.tif 000002
【図１Ｂ】
0006370498.tif 000003
【図２】
0006370498.tif 000004
【図３】
0006370498.tif 000005
【図４】
0006370498.tif 000006
【図５】
0006370498.tif 000007