(57)【特許請求の範囲】
【請求項１】
マルチサブシステムモバイルデバイス上で実行される第1のサブシステムの信頼性を向上させるための方法であって、
前記第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップであって、前記最小の時間が、前記第1のサブシステムの実行時間の長さに対応する、ステップと、
前記第1のサブシステムに従属する他のサブシステムを特定するステップと、
前記最小の時間が経過した後、かつ前記最大の時間が経過する前に、要求メッセージを各々の従属サブシステムに送信するステップであって、前記要求メッセージが、前記第1のサブシステムと関連付けられる前記ソフトウェアの再起動が発生してもよいかどうかについて投票するように各々の従属サブシステムに促す、ステップと、
前記再起動が発生してもよいと各々の従属サブシステムが投票するときに、前記第1のサブシステムと関連付けられる前記ソフトウェアを再起動するステップと、
前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき前記最大の時間が経過したときに、前記第1のサブシステムと関連付けられる前記ソフトウェアを再起動するステップとを含む、方法。
【請求項２】
前記第1のサブシステムと関連付けられる前記ソフトウェアの前記再起動の時間および期間を各々の従属サブシステムに知らせるステップと、
前記第1のサブシステムと関連付けられる前記ソフトウェアの再起動が完了したときに各々の従属サブシステムに知らせるステップとをさらに含む、請求項1に記載の方法。
【請求項３】
前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップが、以前のサブシステムのソフトウェアの故障、サブシステムのソフトウェアの年齢情報、従属リストのサブシステムの識別情報、欠陥率、および前記第1のサブシステムの利用されているリソースのうちの少なくとも1つを表す、記憶されているデータに基づいて、前記最小の時間および前記最大の時間を計算するステップを含む、請求項1に記載の方法。
【請求項４】
前記計算された最小の時間および前記計算された最大の時間を前記モバイルデバイス内に記憶するステップをさらに含み、
前記計算された最小の時間および前記計算された最大の時間が履歴データに基づいて事前に決定されている、請求項1に記載の方法。
【請求項５】
前記最小の時間が経過した後、前記再起動が発生すべきではないとある従属サブシステムが投票する限り、前記最大の時間が経過するまで、要求メッセージを各々の従属サブシステムへ再送信するステップをさらに含む、請求項1に記載の方法。
【請求項６】
要求メッセージを各々の従属サブシステムへ再送信するための間隔を計算するステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき前記最大の時間までの残りの時間に基づいて、要求メッセージを再送信するための前記間隔を短くするステップをさらに含む、請求項6に記載の方法。
【請求項８】
要求メッセージを再送信するための前記計算された間隔を前記モバイルデバイス内に記憶するステップをさらに含み、
要求メッセージを再送信するための前記間隔が履歴データに基づいて事前に決定されている、請求項6に記載の方法。
【請求項９】
第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するための手段であって、前記最小の時間が、前記第1のサブシステムの実行時間の長さに対応する、手段と、
前記第1のサブシステムに従属する他のサブシステムを特定するための手段と、
前記最小の時間が経過した後、かつ前記最大の時間が経過する前に、要求メッセージを各々の従属サブシステムに送信するための手段であって、前記要求メッセージが、前記第1のサブシステムと関連付けられる前記ソフトウェアの再起動が発生してもよいかどうかについて投票するように各々の従属サブシステムに促す、手段と、
前記再起動が発生してもよいと各々の従属サブシステムが投票するときに、前記第1のサブシステムと関連付けられる前記ソフトウェアを再起動するための手段と、
前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき前記最大の時間が経過したときに、前記第1のサブシステムと関連付けられる前記ソフトウェアを再起動するための手段とを含む、モバイルデバイス。
【請求項１０】
前記第1のサブシステムと関連付けられる前記ソフトウェアの前記再起動の時間および期間を各々の従属サブシステムに知らせるための手段と、
前記第1のサブシステムと関連付けられる前記ソフトウェアの再起動が完了したときに各々の従属サブシステムに知らせるための手段とをさらに含む、請求項9に記載のモバイルデバイス。
【請求項１１】
前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき最小の時間および最大の時間を計算するための手段が、以前のサブシステムのソフトウェアの故障、サブシステムのソフトウェアの年齢情報、従属リストのサブシステムの識別情報、欠陥率、および前記第1のサブシステムの利用されているリソースのうちの少なくとも1つを表す、記憶されているデータに基づいて、前記最小の時間および前記最大の時間を計算するための手段を含む、請求項9に記載のモバイルデバイス。
【請求項１２】
前記計算された最小の時間および前記計算された最大の時間を前記モバイルデバイス内に記憶するための手段をさらに含み、
前記計算された最小の時間および前記計算された最大の時間が履歴データに基づいて事前に決定されている、請求項9に記載のモバイルデバイス。
【請求項１３】
前記最小の時間が経過した後、前記再起動が発生すべきではないとある従属サブシステムが投票する限り、前記最大の時間が経過するまで、要求メッセージを各々の従属サブシステムへ再送信するための手段をさらに含む、請求項9に記載のモバイルデバイス。
【請求項１４】
要求メッセージを各々の従属サブシステムへ再送信するための間隔を計算するための手段をさらに含む、請求項13に記載のモバイルデバイス。
【請求項１５】
前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき前記最大の時間までの残りの時間に基づいて、要求メッセージを再送信するための前記間隔を短くするための手段をさらに含む、請求項14に記載のモバイルデバイス。
【請求項１６】
要求メッセージを再送信するための前記計算された間隔を前記モバイルデバイス内に記憶するための手段をさらに含み、
要求メッセージを再送信するための前記間隔が履歴データに基づいて事前に決定されている、請求項14に記載のモバイルデバイス。
【請求項１７】
メモリと、
前記メモリに結合されたプロセッサとを含み、前記プロセッサが、
第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップであって、前記最小の時間が、前記第1のサブシステムの実行時間の長さに対応する、ステップと、
前記第1のサブシステムに従属する他のサブシステムを特定するステップと、
前記最小の時間が経過した後、かつ前記最大の時間が経過する前に、要求メッセージを各々の従属サブシステムに送信するステップであって、前記要求メッセージが、前記第1のサブシステムと関連付けられる前記ソフトウェアの再起動が発生してもよいかどうかについて投票するように各々の従属サブシステムに促す、ステップと、
前記再起動が発生してもよいと各々の従属サブシステムが投票するときに、前記第1のサブシステムと関連付けられる前記ソフトウェアを再起動するステップと、
前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき前記最大の時間が経過したときに前記第1のサブシステムと関連付けられる前記ソフトウェアを再起動するステップと
を含む動作を実行するように、プロセッサ実行可能命令によって構成される、マルチサブシステムモバイルデバイス。
【請求項１８】
前記プロセッサが、
前記第1のサブシステムと関連付けられる前記ソフトウェアの前記再起動の時間および期間を各々の従属サブシステムに知らせるステップと、
前記第1のサブシステムと関連付けられる前記ソフトウェアの再起動が完了したときに各々の従属サブシステムに知らせるステップとをさらに含む動作を実行するように、プロセッサ実行可能命令によって構成される、請求項17に記載のモバイルデバイス。
【請求項１９】
前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップが、以前のサブシステムのソフトウェアの故障、サブシステムのソフトウェアの年齢情報、従属リストのサブシステムの識別情報、欠陥率、および前記第1のサブシステムの利用されているリソースのうちの少なくとも1つを表す、記憶されているデータに基づいて、前記最小の時間および前記最大の時間を計算するステップを含むように、動作を実行するように、前記プロセッサがプロセッサ実行可能命令によって構成される、請求項17に記載のモバイルデバイス。
【請求項２０】
前記プロセッサが、前記計算された最小の時間および前記計算された最大の時間を前記モバイルデバイス内に記憶するステップをさらに含む動作を実行するように、プロセッサ実行可能命令によって構成され、
前記計算された最小の時間および前記計算された最大の時間が履歴データに基づいて事前に決定されている、請求項17に記載のモバイルデバイス。
【請求項２１】
前記プロセッサが、
前記最小の時間が経過した後、前記再起動が発生すべきではないとある従属サブシステムが投票する限り、前記最大の時間が経過するまで、要求メッセージを各々の従属サブシステムへ再送信するステップをさらに含む動作を実行するように、プロセッサ実行可能命令によって構成される、請求項17に記載のモバイルデバイス。
【請求項２２】
前記プロセッサが、要求メッセージを各々の従属サブシステムへ再送信するための間隔を計算するステップをさらに含む動作を実行するように、プロセッサ実行可能命令によって構成される、請求項21に記載のモバイルデバイス。
【請求項２３】
前記プロセッサが、前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき前記最大の時間までの残りの時間に基づいて、要求メッセージを再送信するための前記間隔を短くするステップをさらに含む動作を実行するように、プロセッサ実行可能命令によって構成される、請求項22に記載のモバイルデバイス。
【請求項２４】
前記プロセッサが、要求メッセージを再送信するための前記計算された間隔を前記モバイルデバイス内に記憶するステップをさらに含む動作を実行するように、プロセッサ実行可能命令によって構成され、
要求メッセージを再送信するための前記間隔が履歴データに基づいて事前に決定されている、請求項22に記載のモバイルデバイス。
【請求項２５】
マルチサブシステムモバイルデバイス上で実行される第1のサブシステムの信頼性を向上させるための動作をプロセッサに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記動作が、
前記第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップであって、前記最小の時間が、前記第1のサブシステムの実行時間の長さに対応する、ステップと、
前記第1のサブシステムに従属する他のサブシステムを特定するステップと、
前記最小の時間が経過した後、かつ前記最大の時間が経過する前に、要求メッセージを各々の従属サブシステムに送信するステップであって、前記要求メッセージが、前記第1のサブシステムと関連付けられる前記ソフトウェアの再起動が発生してもよいかどうかについて投票するように各々の従属サブシステムに促す、ステップと、
前記再起動が発生してもよいと各々の従属サブシステムが投票するときに、前記第1のサブシステムと関連付けられる前記ソフトウェアを再起動するステップと、
前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき前記最大の時間が経過したときに、前記第1のサブシステムと関連付けられる前記ソフトウェアを再起動するステップとを含む、コンピュータ読み取り可能な記録媒体。
【請求項２６】
前記記録されたプログラムが、
前記第1のサブシステムと関連付けられる前記ソフトウェアの前記再起動の時間および期間を各々の従属サブシステムに知らせるステップと、
前記第1のサブシステムと関連付けられる前記ソフトウェアの再起動が完了したときに各々の従属サブシステムに知らせるステップとをさらに含む動作を前記プロセッサに実行させるように構成される、請求項25に記載のコンピュータ読み取り可能な記録媒体。
【請求項２７】
前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップが、以前のサブシステムのソフトウェアの故障、サブシステムのソフトウェアの年齢情報、従属リストのサブシステムの識別情報、欠陥率、および前記第1のサブシステムの利用されているリソースのうちの少なくとも1つを表す、記憶されているデータに基づいて、前記最小の時間および前記最大の時間を計算するステップを含むように、前記プロセッサに動作を実行させるように、前記記録されたプログラムが構成される、請求項25に記載のコンピュータ読み取り可能な記録媒体。
【請求項２８】
前記記録されたプログラムが、前記計算された最小の時間および前記計算された最大の時間を前記モバイルデバイス内に記憶するステップをさらに含む動作を前記プロセッサに実行させるように構成され、
前記計算された最小の時間および前記計算された最大の時間が履歴データに基づいて事前に決定されている、請求項25に記載のコンピュータ読み取り可能な記録媒体。
【請求項２９】
前記記録されたプログラムが、
前記最小の時間が経過した後、前記再起動が発生すべきではないとある従属サブシステムが投票する限り、前記最大の時間が経過するまで、要求メッセージを各々の従属サブシステムへ再送信するステップをさらに含む動作を前記プロセッサに実行させるように構成される、請求項25に記載のコンピュータ読み取り可能な記録媒体。
【請求項３０】
前記記録されたプログラムが、要求メッセージを各々の従属サブシステムへ再送信するための間隔を計算するステップをさらに含む動作を前記プロセッサに実行させるように構成される、請求項29に記載のコンピュータ読み取り可能な記録媒体。
【請求項３１】
前記記録されたプログラムが、前記第1のサブシステムと関連付けられる前記ソフトウェアが再起動されるべき前記最大の時間までの残りの時間に基づいて、要求メッセージを再送信するための前記間隔を短くするステップをさらに含む動作を前記プロセッサに実行させるように構成される、請求項30に記載のコンピュータ読み取り可能な記録媒体。
【請求項３２】
前記記録されたプログラムが、要求メッセージを再送信するための前記計算された間隔を前記モバイルデバイス内に記憶するステップをさらに含む動作を前記プロセッサに実行させるように構成され、
要求メッセージを再送信するための前記間隔が履歴データに基づいて事前に決定されている、請求項30に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
モバイル通信に関する。
【背景技術】
【０００２】
現在のモバイル通信デバイスは、マルチサブシステムのシステムオンチップ(または「SOC」)を中心に構築されていることが多く、各サブシステムが、オーディオ、ビデオ、周辺インターフェース、モデム、通信、全地球測位システム(または「GPS」)などのような特定のタスクを実行する。サブシステムの各々は、処理の加速のために特別なハードウェア要素を使用可能にするように設計されていることがあり、高性能のプロセッサ間通信バスを通じて通信して、様々なタスクを実行することができる。たとえば、サブシステムは、音声呼、ビデオストリーミング、オーディオ再生などのようなタスクを行うために通信することができる。そのようなタスクを実行する間、システムオンチップ中の1つまたは複数のサブシステムが所与の時間にアクティブになることがある。
【０００３】
マルチサブシステムのシステムオンチップ中のサブシステムの信頼性は、平均故障間隔(または「MTBF」)の尺度に基づいて評価されることがあり、これは、複数のシステム故障の間の算術的な平均時間として定義される。たとえば、ある期間にわたって、計算される平均故障間隔の尺度は、特定のサブシステムの複数のクラッシュの間の平均時間を表すことができる。一般に、サブシステムは、複数のシステム故障の間の時間が長いほど、動作の信頼性がより高くなり得る。言い換えると、平均故障間隔が長いほど、サブシステムの動作は良くなる。サブシステムが故障を経験し始めると、サブシステムの動作が悪くなることがあり、続いて、サブシステムが再起動するまでサービスが失われる。そのような故障は、ユーザの観点からは非常に望ましくないものである。
【０００４】
アクティブなソフトウェアの年齢(すなわちアクティブ化から経過した時間)がサブシステムの信頼性に影響を与えることがあり、平均故障間隔は、サブシステム上で実行される(またはサブシステムと関連付けられる)ソフトウェアの年齢に反比例し得る。ソフトウェアの信頼性および/または性能の経時的な劣化、すなわち「ソフトウェアエージング」が、多くの一般的なサブシステム故障の原因であり得る。そのようなソフトウェアエージングは、メモリの断片化、メモリリーク、カウンタのオーバーフローまたはアンダーフロー、データ破損、および低調なガーベージコレクションを含む、不利なソフトウェア動作条件の結果であり得る。たとえば、最適化されていないサブシステムのソフトウェアでは、メモリが割り振られるが使用後に解放されないことがあり、様々なサブシステム動作に利用可能なメモリの累積的な不足を引き起こす。さらに、安定した使用の期間の後にサブシステムのソフトウェアが再起動されない場合、多くのサブシステム故障が発生することがある。モバイルデバイス(たとえば、スマートフォン、タブレット、ラップトップなど)は通常再起動されることが稀であるので、モバイルデバイスではこれは特に問題である。たとえば、多くのモバイルデバイスは、ユーザが民間航空機で移動するとき、および/またはファームウェア更新の間にのみ、リブートされ得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
様々な態様は、マルチサブシステムモバイルデバイス上で実行される第1のサブシステムの信頼性を向上させる(すなわち、平均故障間隔を長くする)ための方法およびデバイスを開示することができる。ある態様の方法は、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップと、第1のサブシステムに従属する他のサブシステムを特定するステップと、最小の時間が経過した後かつ最大の時間が経過する前に、要求メッセージを各々の従属サブシステムに送信するステップであって、要求メッセージが、第1のサブシステムと関連付けられるソフトウェアの再起動が発生してもよいかどうかについて投票するように各々の従属サブシステムに促す、ステップと、再起動が発生してもよいと各々の従属サブシステムが投票するときに、第1のサブシステムと関連付けられるソフトウェアを再起動するステップと、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最大の時間が経過したときに、第1のサブシステムと関連付けられるソフトウェアを再起動するステップとを含み得る。ある態様では、方法はさらに、第1のサブシステムと関連付けられるソフトウェアの再起動の時間および期間を各々の従属サブシステムに知らせるステップと、第1のサブシステムと関連付けられるソフトウェアの再起動が完了したときに各々の従属サブシステムに知らせるステップとを含み得る。ある態様では、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップは、以前のサブシステムのソフトウェアの故障、サブシステムのソフトウェアの年齢情報、従属リストのサブシステムの識別情報、欠陥率、および第1のサブシステムの利用されているリソースのうちの少なくとも1つを表す、記憶されているデータに基づいて、最小の時間および最大の時間を計算するステップを含み得る。ある態様では、方法はさらに、計算された最小の時間および計算された最大の時間をモバイルデバイス内に記憶するステップを含んでよく、計算された最小の時間および計算された最大の時間は、履歴データに基づいて事前に決定されていてよい。ある態様では、方法はさらに、最小の時間が経過した後、再起動が発生すべきではないとある従属サブシステムが投票する限り、最大の時間が経過するまで、要求メッセージを各々の従属サブシステムへ定期的に再送信するステップを含み得る。ある態様では、方法はさらに、要求メッセージを各々の従属サブシステムへ定期的に再送信するための間隔を計算するステップを含み得る。ある態様では、方法はさらに、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最大の時間までの残りの時間に基づいて、要求メッセージを定期的に再送信するための間隔を短くするステップを含み得る。ある態様では、方法はさらに、要求メッセージを定期的に再送信するための計算された間隔をモバイルデバイス内に記憶するステップを含んでよく、要求メッセージを定期的に再送信するための間隔は、履歴データに基づいて事前に決定されていてよい。
【０００６】
別の態様は、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するための手段と、第1のサブシステムに従属する他のサブシステムを特定するための手段と、最小の時間が経過した後かつ最大の時間が経過する前に、要求メッセージを各々の従属サブシステムに送信するための手段であって、要求メッセージが、第1のサブシステムと関連付けられるソフトウェアの再起動が発生してもよいかどうかについて投票するように各々の従属サブシステムに促す、手段と、再起動が発生してもよいと各々の従属サブシステムが投票するときに、第1のサブシステムと関連付けられるソフトウェアを再起動するための手段と、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最大の時間が経過したときに、第1のサブシステムと関連付けられるソフトウェアを再起動するための手段とを含み得る、マルチサブシステムモバイルデバイスを含み得る。ある態様では、モバイルデバイスはさらに、第1のサブシステムと関連付けられるソフトウェアの再起動の時間および期間を各々の従属サブシステムに知らせるための手段と、第1のサブシステムと関連付けられるソフトウェアの再起動が完了したときに各々の従属サブシステムに知らせるための手段とを含み得る。ある態様では、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するための手段は、以前のサブシステムのソフトウェアの故障、サブシステムのソフトウェアの年齢情報、従属リストのサブシステムの識別情報、欠陥率、および第1のサブシステムの利用されているリソースのうちの少なくとも1つを表す、記憶されているデータに基づいて、最小の時間および最大の時間を計算するための手段を含み得る。ある態様では、モバイルデバイスはさらに、計算された最小の時間および計算された最大の時間をモバイルデバイス内に記憶するための手段を含んでよく、計算された最小の時間および計算された最大の時間は、履歴データに基づいて事前に決定されていてよい。ある態様では、モバイルデバイスはさらに、最小の時間が経過した後、再起動が発生すべきではないとある従属サブシステムが投票する限り、最大の時間が経過するまで、要求メッセージを各々の従属サブシステムへ定期的に再送信するための手段を含み得る。ある態様では、モバイルデバイスはさらに、要求メッセージを各々の従属サブシステムへ定期的に再送信するための間隔を計算するための手段を含み得る。ある態様では、モバイルデバイスはさらに、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最大の時間までの残りの時間に基づいて、要求メッセージを定期的に再送信するための間隔を短くするための手段を含み得る。ある態様では、モバイルデバイスはさらに、要求メッセージを定期的に再送信するための計算された間隔をモバイルデバイス内に記憶するための手段を含んでよく、要求メッセージを定期的に再送信するための間隔は、履歴データに基づいて事前に決定されていてよい。
【０００７】
別の態様では、マルチサブシステムモバイルデバイスは、メモリと、メモリに結合されたプロセッサとを含んでよく、プロセッサは、動作を実行するようにプロセッサ実行可能命令によって構成されてよく、この動作は、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップと、第1のサブシステムに従属する他のサブシステムを特定するステップと、最小の時間が経過した後かつ最大の時間が経過する前に、要求メッセージを各々の従属サブシステムに送信するステップであって、要求メッセージが、第1のサブシステムと関連付けられるソフトウェアの再起動が発生してもよいかどうかについて投票するように各々の従属サブシステムに促す、ステップと、再起動が発生してもよいと各々の従属サブシステムが投票するときに、第1のサブシステムと関連付けられるソフトウェアを再起動するステップと、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最大の時間が経過したときに、第1のサブシステムと関連付けられるソフトウェアを再起動するステップとを含み得る。ある態様では、プロセッサは、第1のサブシステムと関連付けられるソフトウェアの再起動の時間および期間を各々の従属サブシステムに知らせるステップと、第1のサブシステムと関連付けられるソフトウェアの再起動が完了したときに各々の従属サブシステムに知らせるステップとをさらに含み得る動作を実行するように、プロセッサ実行可能命令によって構成され得る。ある態様では、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップが、以前のサブシステムのソフトウェアの故障、サブシステムのソフトウェアの年齢情報、従属リストのサブシステムの識別情報、欠陥率、および第1のサブシステムの利用されているリソースのうちの少なくとも1つを表す、記憶されているデータに基づいて、最小の時間および最大の時間を計算するステップを含み得るように、動作を実行するように、プロセッサがプロセッサ実行可能命令によって構成され得る。ある態様では、プロセッサは、計算された最小の時間および計算された最大の時間をモバイルデバイス内に記憶するステップをさらに含み得る動作を実行するように、プロセッサ実行可能命令によって構成されてよく、計算された最小の時間および計算された最大の時間は、履歴データに基づいて事前に決定されていてよい。ある態様では、プロセッサは、最小の時間が経過した後、再起動が発生すべきではないとある従属サブシステムが投票する限り、最大の時間が経過するまで、要求メッセージを各々の従属サブシステムへ定期的に再送信するステップを含み得る動作を実行するように、プロセッサ実行可能命令によって構成され得る。ある態様では、プロセッサは、要求メッセージを各々の従属サブシステムへ定期的に再送信するための間隔を計算するステップをさらに含み得る動作を実行するように、プロセッサ実行可能命令によって構成され得る。ある態様では、プロセッサは、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最大の時間までの残りの時間に基づいて、要求メッセージを定期的に再送信するための間隔を短くするステップをさらに含み得る動作を実行するように、プロセッサ実行可能命令によって構成され得る。ある態様では、プロセッサは、要求メッセージを定期的に再送信するための計算された間隔をモバイルデバイス内に記憶するステップをさらに含み得る動作を実行するように、プロセッサ実行可能命令によって構成されてよく、要求メッセージを定期的に再送信するための間隔は、履歴データに基づいて事前に決定されていてよい。
【０００８】
別の態様は、マルチサブシステムモバイルデバイス上で実行される第1のサブシステムの信頼性を向上させるための動作をプロセッサに実行させるように構成される、プロセッサ実行可能ソフトウェア命令を記憶した、非一時的プロセッサ可読記憶媒体を含んでよく、この動作は、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップと、第1のサブシステムに従属する他のサブシステムを特定するステップと、最小の時間が経過した後かつ最大の時間が経過する前に、要求メッセージを各々の従属サブシステムに送信するステップであって、要求メッセージが、第1のサブシステムと関連付けられるソフトウェアの再起動が発生してもよいかどうかについて投票するように各々の従属サブシステムに促す、ステップと、再起動が発生してもよいと各々の従属サブシステムが投票するときに、第1のサブシステムと関連付けられるソフトウェアを再起動するステップと、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最大の時間が経過したときに、第1のサブシステムと関連付けられるソフトウェアを再起動するステップとを含み得る。ある態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、第1のサブシステムと関連付けられるソフトウェアの再起動の時間および期間を各々の従属サブシステムに知らせるステップと、第1のサブシステムと関連付けられるソフトウェアの再起動が完了したときに各々の従属サブシステムに知らせるステップとをさらに含み得る動作をプロセッサに実行させるように構成され得る。ある態様では、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最小の時間および最大の時間を計算するステップが、以前のサブシステムのソフトウェアの故障、サブシステムのソフトウェアの年齢情報、従属リストのサブシステムの識別情報、欠陥率、および第1のサブシステムの利用されているリソースのうちの少なくとも1つを表す、記憶されているデータに基づいて、最小の時間および最大の時間を計算するステップを含み得るように、プロセッサに動作を実行させるように、記憶されたプロセッサ実行可能ソフトウェア命令が構成され得る。ある態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、計算された最小の時間および計算された最大の時間をモバイルデバイス内に記憶するステップをさらに含み得る動作をプロセッサに実行させるように構成されてよく、計算された最小の時間および計算された最大の時間は、履歴データに基づいて事前に決定されていてよい。ある態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、最小の時間が経過した後、再起動が発生すべきではないとある従属サブシステムが投票する限り、最大の時間が経過するまで、要求メッセージを各々の従属サブシステムへ定期的に再送信するステップを含み得る動作をプロセッサに実行させるように構成され得る。ある態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、要求メッセージを各々の従属サブシステムへ定期的に再送信するための間隔を計算するステップをさらに含み得る動作をプロセッサに実行させるように構成され得る。ある態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、第1のサブシステムと関連付けられるソフトウェアが再起動されるべき最大の時間までの残りの時間に基づいて、要求メッセージを定期的に再送信するための間隔を短くするステップをさらに含み得る動作をプロセッサに実行させるように構成され得る。ある態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、要求メッセージを定期的に再送信するための計算された間隔をモバイルデバイス内に記憶するステップをさらに含み得る動作をプロセッサに実行させるように構成されてよく、要求メッセージを定期的に再送信するための間隔は、履歴データに基づいて事前に決定されていてよい。
【０００９】
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本発明の例示的な態様を示し、上記の全般的な説明および下記の発明を実施するための形態とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１０】
【図１】多数のサブシステムを実行するシステムオンチップ(SOC)のコンポーネントブロック図である。
【図２】計算された時間間隔および従属リストの投票ルーチンに基づいて故障の前にサブシステムをリセットするモバイルデバイスのためのある態様の方法200を示すプロセスフロー図である。
【図３Ａ】従属リストの投票に基づいてサブシステムをリセットすべきかどうかを判定するモバイルデバイスのためのある態様の方法300を示すプロセスフロー図である。
【図３Ｂ】上昇した再起動要求レートを含む従属リストの投票に基づいてサブシステムをリセットすべきかどうかを判定するモバイルデバイスのための別の態様の方法350を示すプロセスフロー図である。
【図４】サブシステムをリセットするモバイルデバイスのためのある態様の方法400を示すプロセスフロー図である。
【図５】様々な態様とともに使用するのに適した例示的なワイヤレスモバイルデバイスのコンポーネントブロック図である。
【発明を実施するための形態】
【００１１】
様々な態様が添付の図面を参照して詳細に説明される。可能な場合は常に、同じ参照番号は、図面全体を通して同じまたは同様の部分を指すために使用される。特定の例および実装形態に行われる参照は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
【００１２】
「例示的な」という言葉は、「例、事例、または例示として機能すること」を意味するように本明細書で使用される。本明細書で「例示的」として説明されるいかなる実装形態も、必ずしも他の実装形態よりも好ましいか、または有利であると解釈されるべきではない。
【００１３】
「サブシステム」という用語は、モバイルデバイスのシステムオンチップ内に含まれる様々なコンポーネントによって実行される、ソフトウェアモジュール、動作、命令、および/またはルーチンを指すために本明細書では使用される。たとえば、特定のシステムオンチップは、ビデオコーデック動作を行うためのサブシステムを実行するマイクロプロセッサを含み得る。別の例として、システムオンチップのマルチコアプロセッサは、セルラーネットワークチップと関連付けられる入力データおよび出力データを管理するためのサブシステムを実行することができる。
【００１４】
様々な態様は、他のサブシステムに対する妨害を最小にするような方式で、故障の前にサブシステムと関連付けられるソフトウェアを再起動することによって、モバイルデバイス内で実行されるサブシステムの信頼性を向上させるための方法およびデバイスを含む。具体的には、モバイルデバイスは、平均故障間隔を長くすることによって信頼性を向上させることができる。一般に、サブシステムの動作がモバイルデバイスによって実行されるにつれて、サブシステムはソフトウェアエージングを経験し得る。たとえば、サブシステムのソフトウェアルーチン内で実施される低調なガーベージコレクションの方針が原因で、サブシステムが利用可能なメモリが時間とともに少なくなり得る。サブシステムが動作し続けるにつれて、サブシステムの故障またはクラッシュの発生の確率がますます高くなり得る。たとえば、時間とともに、サブシステムのソフトウェアが使用済みのメモリを適切に再割り振りをしないにつれて、メモリが利用不可能であることが原因でサブシステムが最終的には故障し得る。ソフトウェアエージングの問題を回避するために、モバイルデバイス内の1つまたは複数のプロセッサ(またはプロセッサコア)は、ソフトウェア若化を積極的に利用することがあり、ソフトウェア若化は、ソフトウェアモジュールを定期的に再起動してソフトウェアの「年齢」を下げる(またはリセットする)ことで、ソフトウェアエージングによる不利な動作条件を最小限にすることによって、ソフトウェア関連の故障に対処するための一般に知られている機構である。モバイルデバイス全体、モバイルデバイス内のプロセッサ、またはソフトウェアシステム全体を単純に再起動する代わりに、このシステムが年齢に関連するソフトウェアの故障を経験するであろう確率を下げるように選択された年齢に基づいて、個々のサブシステムが再起動され得る。ソフトウェアサブシステムまたはハードウェア/ソフトウェアサブシステムを再起動することは、実質的に、ソフトウェアエージングおよびサブシステムの全般的な動作に関するあらゆる進行中の問題をリセットし、これによって、ソフトウェアエージングによるサブシステム故障の確率を下げる。モバイルデバイス上で実行される他の機能に影響を与えるのを避けるために、そのようなサブシステムのソフトウェアの再起動は、そのような再起動が受け入れられること(すなわち、従属サブシステムがないこと、または、再起動を行うのに十分長い期間、いずれの従属サブシステムも再起動するサブシステムからの支援なしで動作できること)を従属サブシステムの投票結果が示すときに行われる。サブシステムと関連付けられるソフトウェアの再起動を、その再起動が従属サブシステムの動作に影響を与えないであろうときに開始することによって、ユーザ体験に対する影響を最小限にしながら、モバイルデバイスの信頼性が改善され得る。
【００１５】
「従属サブシステム」という用語は、機能のために選択されたサブシステムと対話する、またはそれに別様に従属するサブシステムを指すために、本明細書では使用される。一般に、サブシステムは、他のサブシステムとデータを交換し、かつ/または、他のサブシステムによって要求される動作を実行することができる。具体的には、第1のサブシステムは第2のサブシステムのデータおよび/または動作に依存し得るので、第1のサブシステムが第2のサブシステムの実行および/またはデータがないと適切に動作できない。たとえば、第1のサブシステムは、第2のサブシステムによって生成される入力変数を利用する関数を実行し得る。第1のサブシステムが別のサブシステムからのデータおよび/または動作を必要とするとき、第1のサブシステムは、第2のサブシステムに従属していると呼ばれる。「従属リスト」という用語は、特定のサブシステムに従属するサブシステムのリストを指すために本明細書では使用される。たとえば、第1のサブシステムの従属リストは、モバイルデバイスのプロセッサシステム(これはシステムオンチップであり得る)内で実行されるサブシステムのすべて、さらには、第1のサブシステムにより生成されるデータおよび/またはサービスを利用する他のプロセッサを含み得る。
【００１６】
様々な態様において、モバイルデバイスは、オペレーティングシステム機構および/または個々のサブシステムを介して、ソフトウェアエージングによるソフトウェアの故障を避けるために選択されたサブシステムのソフトウェアが再起動され、リブートされ、かつ/またはリビルドされ得る、時間間隔(「再起動時間間隔」と呼ばれる)を特定することができる。たとえば、モバイルデバイスのオペレーティングシステムまたは選択されたサブシステムと関連付けられるハイパーバイザーソフトウェアモジュールが、再起動時間間隔を決定することができる。再起動時間間隔は、選択されたサブシステムの性能および/または信頼性がソフトウェア若化を通じて改善または維持され得る期間であり得る。再起動時間間隔は、最小の再起動時間(すなわち、ソフトウェアの再起動が有利である最早の時間)および最大の再起動時間(すなわち、ソフトウェアエージングの問題を避けるためにそれを過ぎると選択されたサブシステムが直ちに再起動されるべきである時間)によって定義され得る。ある態様では、選択されたサブシステムの再起動時間間隔の決定は、選択されたサブシステムの定期的な動作としてスケジューリングされ得る。たとえば、選択されたサブシステムは、ソフトウェアモジュールが起動されるときに最小および最大の再起動時間を特定することができ、それらの値は、実行されている具体的なソフトウェアに基づく。別の例では、選択されたサブシステムは、事前に定義された間隔(たとえば、秒、分など)で再起動時間間隔を計算することができる。別の態様では、再起動時間間隔(すなわち、最小および最大の再起動時間)は、以前の年齢に関連するソフトウェアの故障、ソフトウェアの年齢情報(たとえば、ソフトウェアモジュールが最後に再起動された日付/時間)、従属リストのサブシステムの識別情報、欠陥率、および選択されたサブシステムの利用されているリソースを表す、記憶されているデータに基づいて決定され得る。
【００１７】
選択されたサブシステムは、ソフトウェアモジュールの連続実行時間の大きさを追跡するために、再起動タイマーまたは変数を保持し得る。再起動タイマーは、選択されたサブシステムが最初にアクティブ化されてから、または最後に再起動されてからの時間の長さを示し得る。実行の間、選択されたサブシステムは、再起動タイマーを再起動時間間隔と比較することができる。モバイルデバイスが最初にアクティブ化されるときは選択されたサブシステムの故障の危険性は非常に低いことがあるので、再起動時間間隔の最小の再起動時間の閾値よりも小さい値を再起動タイマーが表している間は、選択されたサブシステムは再起動する必要がないことがある。言い換えると、ソフトウェアエージングは、再起動タイマーが最小の再起動時間未満であるときは問題とはならないことがある。
【００１８】
再起動タイマーが最小の再起動時間の閾値を超えると、選択されたサブシステムは、選択されたサブシステムを利用する、または選択されたサブシステムと対話する、したがって従属サブシステムである他のサブシステムに対して定期的に調査を行い、いずれかの従属サブシステムが選択されたサブシステムのソフトウェアの再起動に反対するかどうかを判定することができる。選択されたサブシステムは、再起動要求メッセージを従属サブシステム(すなわち、選択されたサブシステムの従属リストにあるサブシステム)に送信することができ、選択されたサブシステムの再起動の受け入れを要求する。従属リストに含まれるサブシステムは、従属リストのサブシステムが選択されたサブシステムからのリソースを使用しているときおよび/または予期しているときに選択されたサブシステムが再起動すると、悪影響を受け得るサブシステムである。従属リストのサブシステムは、現在の動作またはデータの要件が再起動によって妨害されるであろう場合は、要求された再起動に対して反対の応答を行い得る(すなわち、「no」の投票)。たとえば、従属リストのサブシステムは、近い将来に選択された(すなわち、要求している)サブシステムからのデータが必要とされ得ると判定すると、再起動に反対する投票を行い得る。従属リストのサブシステムは、そのような再起動が、再起動を完了するのに十分長い期間にわたって、その動作に悪影響を与えないであろうと判定すると、再起動に賛成する応答を行い得る(すなわち、「yes」の投票)。たとえば、スタンバイモードまたはアイドルモードにある従属リストのサブシステム(たとえば、ユーザにより現在使用されていないサブシステム)は、再起動に賛成する投票を行い得る。別の例として、従属リストのサブシステムが選択されたサブシステムからのデータを必要とし得る場合でも、従属リストのサブシステムが、待機動作を実行し、選択されたサブシステムが再起動を完了するとデータを要求するように構成される場合、従属リストのサブシステムは再起動に賛成する投票を行い得る。
【００１９】
選択されたサブシステムは次いで、従属サブシステムのすべてに対する調査(すなわち、従属リスト上のサブシステムに対する調査)の結果に基づいて、ソフトウェアの再起動を実行し、または遅らせることができる。したがって、選択されたサブシステムは、すべての調査されたサブシステムが、再起動に賛成する投票、または反対しない投票を行うと、ソフトウェアの再起動を開始することができる。しかしながら、調査されたサブシステムによる、再起動に対する反対、または反対の投票がある(たとえば、従属リストのサブシステムの少なくとも1つが再起動に反対の投票を行う)場合、選択されたサブシステムは再起動を遅らせて、従属リストのサブシステムに対する定期的な調査を続けることができる。ある態様では、従属リストのサブシステムに対するそのような定期的な調査のレートは、具体的なソフトウェアモジュールに依存することがあり、最大の再起動時間までの時間が減るにつれて上がり得る(すなわち、調査がより頻繁に行われ得る)。ある態様では、選択されたサブシステムは、再起動要求メッセージが従属リストのサブシステムに送信され得る頻度を決定する、再起動要求レートを計算することができる。
【００２０】
再起動タイマーが最大の再起動時間の閾値を超えた(すなわち、ソフトウェアの年齢が最大の事前に定義された期間になった)場合、選択されたサブシステムは、従属リストのサブシステムに対する調査を止めることができ、選択されたサブシステムのソフトウェアの再起動を予防的に開始することができる。たとえば、選択されたサブシステムは、再起動タイマーが再起動時間間隔を超える時間を表している場合、従属リストのサブシステムがサービスを必要としていても再起動し得る。選択されたサブシステムの予防的な再起動は従属リストのサブシステムに影響を与え、したがって、モバイルデバイスの挙動または性能に影響を与えるが、そのような妨害は一時的であり(すなわち、再起動の期間に限られる)、ソフトウェアエージングによるソフトウェアの故障よりも破壊的ではないことがある。
【００２１】
ある態様では、モバイルデバイスは、選択されたサブシステムが従属リストのサブシステムに調査を行うレートを付加的に修正することができる。たとえば、再起動タイマーの値が最大の再起動時間に近づくにつれて、選択されたサブシステムは、すべての従属サブシステムがそのような再起動に対応できる状態にあることを見出す確率を上げるために、再起動要求レートを上げることができる。別の例として、選択されたサブシステムは、従属リストの多数のサブシステムが再起動に反対する投票を行う場合、再起動要求レートを下げることができ、それは、そのような動作条件のもとでは、全員一致のyesの投票の確率が下がるからである。別の態様では、再起動要求レートは、時間帯、曜日、ユーザインターフェースとのユーザの対話などのような他のパラメータに基づいて、モバイルデバイスのオペレーティングシステム(たとえば、ハイパーバイザールーチン)によって修正され得る。
【００２２】
ある態様では、モバイルデバイスは、再起動要求メッセージおよび応答のようなメッセージをサブシステムが交換することを可能にするプロトコルを利用することができる。そのようなプロトコルはまた、バッテリー寿命管理ルーチンと組み合わせて使用され得る。たとえば、モバイルデバイスは、サブシステムが無活動を報告するとシャットダウンし得る(またはスリープ状態に入り得る)。しかしながら、この態様の方法は、そのような通信プロトコルを使用して、選択されたサブシステムをいつ再起動するかを判断する目的で、従属リストのサブシステムによる投票を可能にする。
【００２３】
ソフトウェアの再起動は、ある時間にはスケジューリングされず、ユーザの入力に基づかず、または、サブシステムの以前の初期化の後に発生した故障に応答して実行されないので、この態様の方法は従来のソフトウェア若化方法とは異なる。加えて、この態様の方法は、二次的なシステム(たとえば、プロセッサ)にサブシステムの作業負荷を移さなくてよいので、ハードウェアを再起動しなくてよい。代わりに、様々な態様の方法は、定められた再起動時間間隔に基づくソフトウェアの再起動および従属サブシステムによる投票によって、サブシステムの故障を予防する。
【００２４】
図1は、システムオンチップ100を含む例示的なモバイルデバイスのコンポーネントブロック図を示す。システムオンチップ100は、インターフェースおよび様々な回路などの多数のコンポーネント、マルチプロセッサまたはマルチコアプロセッサ、デジタルシグナルプロセッサ(DSP)などのプロセッサ101、およびメモリ102を含み得る。ある態様では、システムオンチップ100は、互いに組み合わせて、または特定の目的で個別に動作し得る、多数の処理ユニットおよびメモリを含み得る。たとえば、システムオンチップ100は、インターネットブラウザアプリケーションなどのアプリケーションを処理するためのプロセッサ101と、アンテナ(図示せず)に結合されたセルラーネットワーク送受信機などの送信機/受信機(TX/RX)回路またはモデム109から受信されそれらに与えられる高周波信号を処理するためのデジタルシグナルプロセッサ104とを含み得る。
【００２５】
プロセッサ101内でのソフトウェア、ルーチン、および/または命令の実行の間にメモリ102とプロセッサ101との間のバスを通じてデータが転送され得るように、プロセッサ101およびメモリ102が接続され得る。システムオンチップ100はまた、通信TX/RX回路/モデム109(たとえば、携帯電話、Bluetooth(登録商標)、Zigbee(登録商標)、Peanut(登録商標)、またはWiFi送受信機)、ユーザインターフェース110、およびディスプレイ106(たとえば、液晶ディスプレイまたはスクリーン)のような、モバイルデバイス内の外部コンポーネントとデータを交換するための様々なインターフェースを含み得る。プロセッサ101は、メモリ102および/または外部コンポーネント109、110、106から受け取られたデータを利用して、ソフトウェア命令を実行することができる。
【００２６】
外部コンポーネント109、110、106の各々は、ソフトウェアモジュールを実行し他のサブシステムに従属するサブシステムであり得る。たとえば、通信TX/RX回路/モデム109は、無線動作を制御し、通信プロトコルを実行し、無線によって受信される送信のためのデータを処理するための、ソフトウェアを実行するモデムプロセッサを含み得る。したがって、外部コンポーネントのサブシステムは、様々な態様の方法を実施して、それぞれのソフトウェアモジュールを定期的に再起動し、調査されると自らが従属する他のサブシステムの再起動について投票することができる。
【００２７】
プロセッサ101は、単一のプロセッサ、またはマルチコアプロセッサ内の2つ以上のコア上で実行され得るソフトウェアモジュールとして、多数のサブシステム150〜160を同時に実行することができる。たとえば、サブシステム「A」150は、プロセッサ101上で実行される、ソフトウェアアプリケーション、命令のセット、またはそうでなければソフトウェアモジュールであってよく、同時に、サブシステム「B」152もプロセッサ101で実行されている。別の例として、サブシステム「C」154は、モバイルデバイス上でビデオコーデックサービスを制御するソフトウェアであってよく、サブシステム「D」156は、モバイルデバイス内のセンサ活動を監視する(たとえば、リアルタイムの加速度計センサデータを検出し評価する)ソフトウェアであってよい。様々な態様では、サブシステム150〜160は、プロセッサ101上で実行される、オペレーティングシステムのスレッドまたはルーチンであり得る。
【００２８】
上で説明されたように、様々なサブシステムは、他の従属サブシステムのためのデータを交換し動作を実行することができる。各サブシステム、または、すべてのまたは大半のサブシステムを監督するハイパーバイザーは、各々の従属サブシステムを特定する従属リストを保持し得る。
【００２９】
例示として、図1では、サブシステム「A」150は、サブシステム「C」154、サブシステム「B」152、およびサブシステム「D」156のためのデータを提供し、かつ/または動作を実行することができる。この例では、サブシステム「A」150の従属リストは、サブシステム「B」152、サブシステム「C」154、およびサブシステム「D」156を含み得る。サブシステム「B」152は、サブシステム「A」150およびサブシステム「D」156のためのデータを提供し、かつ/または動作を実行することができる。言い換えると、サブシステム「B」152の従属リストは、サブシステム「A」150およびサブシステム「D」156を含み得る。サブシステム「C」154は、サブシステム「A」150のためのデータを提供し、かつ/または動作を実行することができる。言い換えると、サブシステム「C」154の従属リストは、サブシステム「A」150のみを含み得る。サブシステム「D」156は、任意の他のサブシステムのためのデータを提供できず、かつ/または動作を実行できないので、空の従属リストを有し得る。サブシステム「E」158およびサブシステム「F」は、互いのためのデータを提供し、かつ/または動作を実行することができ、接続されていなくてよく、プロセッサ101上で実行される他のサブシステム150〜156と独立であり得る。ある態様では、様々なサブシステム150〜160の従属リストは動的であってよく、様々なサブシステム150〜160がプロセッサ101により実行されるにつれて変化してよく、または代替的には不変のままであってよい。
【００３０】
図2は、ソフトウェアエージングによる故障を避けるために、マルチサブシステムモバイルデバイス上で実行される特定のサブシステムを再起動するためのある態様の方法200を示す。ブロック202では、モバイルデバイスは、サブシステムの再起動が実行されるべき最小の時間(図2では「最小(min)」と呼ばれる)および最大の時間(図2では「最大(max)」と呼ばれる)を計算することができる。たとえば、サブシステムの最小の再起動時間は4時間として計算されてよく、サブシステムの最大の再起動時間は20時間であってよい。上で説明されたように、最小の再起動時間および最大の再起動時間は、その間に対応するサブシステムがソフトウェアの故障を予防するために再起動され得る、再起動時間間隔を定義する。モバイルデバイスは、ある期間にわたるサブシステムの効率(または劣化)および故障を記述する、履歴性能データおよび/または現在の性能データに基づいて、最小および最大の再起動時間を決定することができる。具体的には、モバイルデバイスは、以前のサブシステムのソフトウェアの故障、サブシステムのソフトウェアの年齢情報、サブシステムに関連する従属リスト上のサブシステムの識別情報、欠陥率、およびサブシステムの利用されているリソースを記述するデータに基づいて、サブシステムの最小および最大の再起動時間を計算することができる。たとえば、サブシステムは、ある事前に定義された期間にわたってサブシステムの性能を表すデータを記憶することができ、記憶されているデータに基づいて、最小および最大の再起動時間を定期的に計算することができる。別の例として、モバイルデバイスは、ある期間にわたるサブシステムの欠陥(または故障)率に基づいて、最小の再起動時間を計算することができる。
【００３１】
ある態様では、最小および最大の再起動時間は、リアルタイムの時計の値および/またはカレンダーの日付を表し得る。たとえば、再起動時間間隔は、朝の特定の時間および昼の別の時間によって表されてよく、モバイルデバイスのシステムの時計機構をタイマーとして参照することができる。別の態様では、再起動時間間隔(および最小と最大の再起動時間)は、経過時間またはプロセッサのクロック周期として表され得る。たとえば、最小および最大の再起動時間は、モバイルデバイスのプロセッサのクロック周期の数であり得る。言い換えると、サブシステムがある数のプロセッサ周期の期間、モバイルデバイスによって実行されると、サブシステムは再起動され得る。
【００３２】
ある態様では、最小および最大の再起動時間は、モバイルデバイスのオペレーティングシステム(たとえば、オペレーティングシステムのルーチン、スレッド、管理ソフトウェアなど)によって計算されてよく、または代替的には、各サブシステムが、自身の最小および最大の再起動時間を計算するように構成されてよい。たとえば、各サブシステムまたはローダのオペレーティングシステムルーチンは、ソフトウェアモジュールまたはサブシステムの初期化のときに、対応する最小および最大の再起動時間を計算することができる。別の態様では、最小および最大の再起動時間は、既知の問題、履歴データ(たとえば、テストデータまたはサンプルデータ)、および/またはモバイルデバイスの仕様に基づいて、サブシステムのソフトウェアの開発者によって事前に計算されてよい。たとえば、モバイルデバイスは、特定のサブシステムの開発者により報告されたある実行期間にわたる故障率に基づく、最小および最大の再起動時間を利用することができる。
【００３３】
ある態様では、最小の再起動時間および最大の再起動時間は、履歴データに基づいて事前に決定されていてよく、データベースに、またはモバイルデバイスのオペレーティングシステム内のデータストアに記憶されてよい。たとえば、各サブシステムおよび/または関連するソフトウェアモジュール(たとえば、モバイルデバイスのオペレーティングシステムのスレッド)は、以下で説明されるように、比較動作のために、記憶されたデータベースから最小および最大の再起動時間データを読み取ることができる。
【００３４】
図2に戻ると、ブロック204において、モバイルデバイスは、各サブシステムのための再起動タイマーを確立することができる。上で説明されたように、再起動タイマーは、カウンタ機構として機能する変数であり得る。たとえば、モバイルデバイスは、時間の経過に基づいて定期的にインクリメントされ得る、サブシステムと関連付けられる整数の変数を記憶することができる。ある態様では、最小および最大の再起動時間は、サブシステムが再起動タイマーと組み合わせて利用し得る、相対的な時間の値であり得る。たとえば、サブシステムは、再起動タイマーを初期化し(たとえば、再起動タイマーを0の値に設定し)、タイマー変数を最小および最大の再起動時間と継続的に比較して、再起動が必要とされるかどうかを判定することができる。ある態様では、再起動タイマーは、モバイルデバイスのシステム時計の変化とともにインクリメントし得る。たとえば、再起動タイマーは、システム時計が更新されるたびに一度インクリメントし得る。
【００３５】
ブロック206において、モバイルデバイス上のプロセッサは、オペレーティングシステムのルーチンなどを介して、評価対象のサブシステムを選択することができる。たとえば、モバイルデバイスは、すべての現在実行されているサブシステム、さらには、可能性のある再起動について評価されるべき次のサブシステムへのポインタのリストを、保持することができる。ブロック206は任意選択であり、それは、個々のサブシステムが自身の再起動ルーチンに関して方法200を実行し得る態様では、ブロック206の動作は不要であり得るからである。判定ブロック208において、モバイルデバイスは、選択されたサブシステムのための再起動タイマーの現在の値が最小の再起動時間より小さいかどうかを判定することができる。言い換えると、モバイルデバイス上のプロセッサは、再起動タイマーが再起動時間間隔内の時間の値を表すかどうかを判定することができる。再起動タイマーが最小の再起動時間より小さい場合(すなわち、判定ブロック208=「Yes」)、モバイルデバイスのプロセッサは、ブロック206の動作を続けることができる。
【００３６】
しかしながら、選択されたサブシステムの再起動タイマーが最小の再起動時間より小さくない場合(すなわち、判定ブロック208=「No」)、ブロック210において、モバイルデバイスのプロセッサは、選択されたサブシステムに現在従属しているサブシステムのすべて(すなわち、従属リストのサブシステム)を特定することができる。たとえば、モバイルデバイスは、選択されたサブシステムと通信し得る、選択されたサブシステムとリソースを共有し得る、または選択されたサブシステムを別様に利用し得る、モバイルデバイス上で実行されているすべてのサブシステムを特定することができる。ある態様では、モバイルデバイスは、モバイルデバイスの様々なサブシステムによって実行されているソフトウェア命令を評価して、どのサブシステムが選択されたサブシステムのリソースを利用するかを判定することができる。たとえば、モバイルデバイスは、選択されたサブシステムが本来有する機能および/または選択されたサブシステムが独占する機能が、呼び出されるときまたは様々な他のサブシステムのソフトウェア命令の中にあるときを、検出することができる。別の例として、モバイルデバイスは、他のサブシステムが選択されたサブシステムに割り振られたメモリ位置にアクセスできるときを検出することができる。ある態様では、モバイルデバイスは、現在機能している複数のサブシステムの間のすべての従属関係を示すデータテーブルを保持し得る。別の態様では、各サブシステムは、従属関係を示すデータを個々に保持することができ、選択されたサブシステム、モバイルデバイスのオペレーティングシステム、および/またはモバイルデバイス内で実行されている任意の他のソフトウェアによって問い合わされてよい。たとえば、選択されたサブシステムは、問合せを送信し、モバイルデバイス内で実行されているサブシステムのすべてから確認(または拒絶)応答を受け取ることによって、従属リストのサブシステムを決定することができる。
【００３７】
再起動時間が最大の再起動時間より小さい場合(すなわち、判定ブロック212=「Yes」)、ブロック214において、モバイルデバイスは、再起動要求メッセージを選択されたサブシステムの従属リストのサブシステムに送信することができ、選択されたサブシステムが再起動できるかどうかについての投票を要求する。たとえば、再起動要求メッセージは、選択されたサブシステムが特定の時間において再起動できるかどうかを問い合わせることができる。従属リストのサブシステムは、サブシステムが選択されたサブシステムのリソース、動作、またはデータを現在使用しているかどうか、それらと通信しているかどうか、かつ/またはそれらの今後の使用をスケジューリングしているかどうかに基づいて、「yes」(すなわち、再起動を受け入れる)または「no」(すなわち、再起動を拒絶する)で応答することができる。たとえば、従属リストのサブシステムは、現在実行されているソフトウェア命令を評価して、その命令が選択されたサブシステムからの入力または動作に依存するかどうかを判定することができる。ある態様では、再起動要求メッセージは、選択されたサブシステムの識別情報、再起動タイマーの値、以前の故障の情報、および最小と最大の時間を含み得る。たとえば、受信された再起動要求メッセージ内で表される最大の時間の値に基づいて、従属リストのサブシステムは、選択されたサブシステムの再起動を可能にするために自身の処理が再スケジューリングされることが可能かどうかを判定することができる。
【００３８】
判定ブロック216において、モバイルデバイスは、従属リストのサブシステムの各々から応答(または投票)が受信されたかどうかを判定することができる。すべての従属リストのサブシステムが応答してはいない場合(すなわち、判定ブロック216=「No」)、モバイルデバイスは、判定ブロック216の動作により応答の受け入れを続けることができる。
【００３９】
すべての従属リストのサブシステムが応答した場合(すなわち、判定ブロック216=「Yes」)、モバイルデバイスは、従属リストのサブシステムが選択されたサブシステムの再起動に賛成するように全員一致で投票したかどうかを判定することができる。投票が全員一致で再起動に賛成するものではない場合(すなわち、判定ブロック218=「No」)、モバイルデバイスは、ブロック206の動作を続けることができる。たとえば、従属リストのサブシステムが選択されたサブシステムからのデータを現在待機している場合、選択されたサブシステムは再起動されなくてよい。
【００４０】
しかしながら、投票が全員一致で再起動に賛成するものである場合(すなわち、判定ブロック218=「Yes」)、または再起動時間が最大の再起動時間以上である場合(すなわち、判定ブロック212=「No」)、ブロック220において、モバイルデバイスは、選択されたサブシステムのための再起動ルーチンを直ちに実行することができる。たとえば、モバイルデバイスは、選択されたサブシステムのソフトウェアイメージを再起動すること、リブートすること、リビルドすること、または別様に刷新することに進み得る。再起動動作は、図4を参照して以下でさらに説明される。ブロック222において、モバイルデバイスは、再起動タイマーをリセットし、ブロック206の動作を続けることができる。
【００４１】
図3Aは、再起動要求レートを使用してサブシステムを再起動するモバイルデバイスのための別の態様の方法300を示す。方法300は、再起動されるべきサブシステムの従属リストのサブシステムに対してモバイルデバイスが調査できる期間を定義するタイミング機構(または「再起動要求レート」)も利用できることを除き、上で説明されたような方法200と同様であり得る。言い換えると、選択されたサブシステムは、特定の時間間隔で再起動について投票するように従属リストのサブシステムに要求することができる。たとえば、選択されたサブシステムは、選択されたサブシステムの最大の再起動時間に基づいて、数ミリ秒ごとに再起動要求メッセージを従属リストのサブシステムに送信することができる。
【００４２】
上で説明されたように、ブロック202において、モバイルデバイスは、様々なサブシステムのための再起動時間間隔を定義する、最小および最大の時間を計算する(または記憶されているデータベースからアクセスする)ことができる。ブロック302において、モバイルデバイスは、各サブシステムのための再起動要求レートを計算することができる。ある態様では、モバイルデバイスは、ブロック202およびブロック204の動作で利用されたものと同じ情報(すなわち、以前の性能データ)に基づいて、再起動要求レートを計算することができる。たとえば、サブシステムの再起動要求レートは、以前のサブシステム間通信からの平均応答時間、サブシステムの以前の記録されている故障の特性、および同時に存在する従属リストのサブシステムの以前の数に基づいて計算され得る。別の態様では、再起動要求レートは、履歴データに基づいて事前に決定されていてよく、データベースに、またはモバイルデバイスのオペレーティングシステム内のデータストアに記憶されてよい。たとえば、モバイルデバイスのオペレーティングシステムのスレッドが、以下で説明されるように、比較動作のために、記憶されているデータベースから再起動要求レートデータを読み取ることができる。
【００４３】
ブロック204において、モバイルデバイスは、各サブシステムのための再起動タイマーを確立することができる。ブロック206において、モバイルデバイスは、評価対象のサブシステムを選択することができる。判定ブロック208において、モバイルデバイスは、選択されたサブシステムのための再起動タイマーの現在の値が最小の再起動時間より小さいかどうかを判定することができる。再起動タイマーが最小の再起動時間より小さい場合(すなわち、判定ブロック208=「Yes」)、モバイルデバイスは、ブロック206に戻り次のサブシステムを選択することができる。しかしながら、選択されたサブシステムの再起動タイマーが最小の再起動時間より小さくない場合(すなわち、判定ブロック208=「No」)、ブロック210において、モバイルデバイスは、選択されたサブシステムの従属リストのサブシステムを特定することができる。
【００４４】
再起動時間が最大の再起動時間より小さい場合(すなわち、判定ブロック212=「Yes」)、判定ブロック304において、モバイルデバイスは、選択されたサブシステムの再起動要求レートに基づいて、要求メッセージを従属リストのサブシステムに送信するかどうかを判定することができる。ある態様では、モバイルデバイスは、選択されたサブシステムが最後に要求メッセージを従属リストのサブシステムに送信した時間を示す変数を、記憶し更新することができる。判定ブロック304の動作の実行の間、モバイルデバイスは、再起動要求レートに対応する時間(たとえば、ある数のミリ秒、秒など)を記憶されている変数に加算することによって、選択されたサブシステムが要求メッセージを送信できる次の時を計算し、合計された値をモバイルデバイスのシステム時計と比較することができる。合計された値がシステム時計以上である場合、モバイルデバイスは、再起動要求レートに対応する時間が経過したと判定することができる。再起動要求レートに対応する時間が経過していない場合(すなわち、判定ブロック304=「No」)、モバイルデバイスは、ブロック206の動作を続けることができる。
【００４５】
再起動要求レートに対応する時間が経過した場合(すなわち、判定ブロック304=「Yes」)、ブロック214において、モバイルデバイスは、再起動要求メッセージを選択されたサブシステムの従属リストのサブシステムに送信することができ、選択されたサブシステムが再起動され得るかどうかについての応答(すなわち、投票)を要求する。判定ブロック216において、モバイルデバイスは、従属リストのサブシステムの各々から応答(または投票)が受信されたかどうかを判定することができる。すべての従属リストのサブシステムが応答してはいない場合(すなわち、判定ブロック216=「No」)、モバイルデバイスは、判定ブロック216の動作により応答の受け入れを続けることができる。
【００４６】
すべての従属リストのサブシステムが応答した場合(すなわち、判定ブロック216=「Yes」)、モバイルデバイスは、従属リストのサブシステムがすべて、選択されたサブシステムの再起動に賛成するように投票したかどうかを判定することができる。投票が全員一致で再起動に賛成するものではない場合(すなわち、判定ブロック218=「No」)、モバイルデバイスは、ブロック206の動作を続けることができる。しかしながら、投票が全員一致で再起動に賛成するものである場合(すなわち、判定ブロック218=「Yes」)、または再起動時間が最大の再起動時間以上である場合(すなわち、判定ブロック212=「No」)、ブロック220において、モバイルデバイスは、選択されたサブシステムのための再起動ルーチンを直ちに実行することができる。ブロック222において、モバイルデバイスは、選択されたサブシステムのための再起動タイマーをリセットし、ブロック206の動作を続けることができる。
【００４７】
図3Bは、再起動要求レートを使用してサブシステムを再起動するモバイルデバイスのための別の態様の方法350を示す。方法350は方法300と同様であるが、方法350は追加で、再起動されるべきサブシステムが従属リスト内の他のサブシステムに対して調査を行う再起動要求レートを調整する。たとえば、方法300の変化しない再起動要求レートとは異なり、方法350は、時間とともに上昇する再起動要求レートを利用することができる。したがって、サブシステムが再起動時間間隔の終わりに近づくにつれて、再起動要求メッセージの送信の頻度が上がり得る。
【００４８】
上で説明されたように、ブロック202において、モバイルデバイスは、各サブシステムの再起動が実行されるべき最小および最大の時間を計算することができる。ブロック302において、モバイルデバイスは、各サブシステムのための再起動要求レートを計算することができる。ブロック204において、モバイルデバイスは、各サブシステムのための再起動タイマーを確立することができる。ブロック206において、モバイルデバイスは、評価対象のサブシステムを選択することができる。判定ブロック208において、モバイルデバイスは、選択されたサブシステムのための再起動タイマーの現在の値が選択されたサブシステムの最小の再起動時間より小さいかどうかを判定することができる。
【００４９】
再起動タイマーが最小の再起動時間より小さい場合(すなわち、判定ブロック208=「Yes」)、モバイルデバイスは、ブロック206に戻り次のサブシステムを選択することができる。しかしながら、選択されたサブシステムの再起動タイマーが最小の再起動時間より小さくない場合(すなわち、判定ブロック208=「No」)、ブロック210において、モバイルデバイスは、選択されたサブシステムに従属しているサブシステム(すなわち、従属リストのサブシステム)を特定することができる。再起動時間が最大の再起動時間より小さい場合(すなわち、判定ブロック212=「Yes」)、判定ブロック304において、モバイルデバイスは、選択されたサブシステムの再起動要求レートに基づいて、要求メッセージを従属リストのサブシステムに送信するかどうかを判定することができる。再起動要求レートに対応する時間が経過していない場合(すなわち、判定ブロック304=「No」)、モバイルデバイスは、ブロック206の動作を続けることができる。再起動要求レートに対応する時間が経過した場合(すなわち、判定ブロック304=「Yes」)、ブロック214において、モバイルデバイスは、要求メッセージを選択されたサブシステムの従属リストのサブシステムに送信することができ、選択されたサブシステムが再起動され得るかどうかについて応答するように従属リストのサブシステムに要求する。判定ブロック216において、モバイルデバイスは、選択されたサブシステムの従属リストのサブシステムの各々から応答(または投票)が受信されたかどうかを判定することができる。すべての従属リストのサブシステムが応答してはいない場合(すなわち、判定ブロック216=「No」)、モバイルデバイスは、判定ブロック216の動作により応答の受け入れを続けることができる。
【００５０】
すべての従属リストのサブシステムが応答した場合(すなわち、判定ブロック216=「Yes」)、モバイルデバイスは、従属リストのサブシステムがすべて、選択されたサブシステムの再起動に賛成するように投票したかどうかを判定することができる。投票が全員一致で再起動に賛成するものではない場合(すなわち、判定ブロック218=「No」)、ブロック352において、選択されたサブシステムの再起動タイマーが再起動時間間隔の終わりに近づく(すなわち、再起動タイマーが最大の再起動時間により近くなる)につれて、モバイルデバイスがより高いレートで再起動要求メッセージを送信できるように、モバイルデバイスは再起動要求レートを上げることができる。言い換えると、再起動時間間隔が満了し、選択されたサブシステムが強制的に再起動される前に、モバイルデバイスは、選択されたサブシステムの再起動を受け入れることに投票するように、従属リストのサブシステムに対してより頻繁に求めることができる。
【００５１】
投票が全員一致で再起動に賛成するものである場合(すなわち、判定ブロック218=「Yes」)、または再起動時間が最大の再起動時間以上である場合(すなわち、判定ブロック212=「No」)、ブロック220において、モバイルデバイスは、選択されたサブシステムのための再起動ルーチンを直ちに実行することができる。ブロック222において、モバイルデバイスは、選択されたサブシステムのための再起動タイマーをリセットし、ブロック206の動作を続けることができる。
【００５２】
図4は、従属リストのサブシステムによる全員一致の投票または再起動時間間隔の経過に基づいて、選択されたサブシステムを再起動するモバイルデバイスのためのある態様の方法400を示す。上で説明されたように、モバイルデバイスは、ソフトウェアエージングという不利な条件を避けるために、選択されたサブシステムのための再起動、リブート、および/またはリビルドの動作を実行することができる。しかしながら、受け入れ可能なユーザ体験とともに様々な従属リストのサブシステムの動作の一貫性を保つために、モバイルデバイスは、従属リストのサブシステムと通信し、再起動するサブシステムのデータを保持することができる。たとえば、選択されたサブシステムは、再起動の間に選択されたサブシステムが利用できないことに対して備えるように従属リストのサブシステムに助言する警告メッセージを、これらのサブシステムに送信することができる。別の例として、モバイルデバイスは、再起動される選択されたサブシステムが再起動の前に利用していた状態、構成、および/またはモードで動作するように、選択されたサブシステムを構成することができる。上で述べられたように、方法400の動作は、オペレーティングシステムのルーチンおよび/またはサブシステム(たとえば、再起動されている選択されたサブシステム)を介して、モバイルデバイスによって実行され得る。加えて、方法400は、図2を参照して上で説明されたブロック220の動作の代わりに実行され得る。
【００５３】
ブロック414において、モバイルデバイスは、選択されたサブシステムの再起動が発生するであろうことを選択されたサブシステムの従属リストのサブシステムに知らせて、間もなく起きるソフトウェアの再起動の時間および期間を示すことができる。たとえば、サブシステムは、選択されたサブシステムが再起動するまでの期間を示すカウンタを含む信号(たとえば、割り込み)を、従属リストのサブシステムの各々に送信することができる。ある態様では、モバイルデバイスは、様々なサブシステムのためのスケジューリングされた再起動情報を含み従属リストのサブシステムにより問い合わされ得る、データテーブルを保持し得る。たとえば、モバイルデバイスの様々なサブシステムは、データテーブルを定期的に確認して、サブシステムの動作に影響を与え得るスケジューリングされた再起動があるかどうかを特定することができる。
【００５４】
様々な態様では、スケジューリングされている再起動に関する受信されたメッセージ、割り込み、または他の通信に基づいて、従属リストのサブシステムは、保留中の動作、スケジューリングされている手順、および、選択されたサブシステムの再起動の期間内に実行するように従属リストのサブシステムがスケジューリングした任意の他のルーチンを評価することができる。たとえば、従属リストのサブシステムは、選択されたサブシステムの報告された再起動期間をスケジューリングされている動作と比較して、選択されたサブシステムに従属する任意の動作を特定することができる。言い換えると、従属リストのサブシステムは、報告された再起動期間に基づいて競合を特定することができる。競合が特定される場合、従属リストのサブシステムは、ある期間待機し、競合する動作を取り消し、かつ/または競合する動作を再スケジューリングすることができる。
【００５５】
ブロック415において、モバイルデバイスは、選択されたサブシステムの状態情報を記憶して、効率的な(またはより高速な)再起動処理を可能にし、あらゆる重要な構成データまたは使用データの喪失を避けることができる。たとえば、モバイルデバイスは、選択されたサブシステムの現在の状態を定義するデータを非揮発性メモリに記憶することができる。ブロック416において、モバイルデバイスは、選択されたサブシステムのソフトウェアイメージを再起動することができる。たとえば、選択されたサブシステムは、あらゆるアクティブな動作を中止し、デフォルト値を表すようにすべての変数をリセットし、あらゆるキャッシュされた入力/出力データを廃棄することができる。ある態様では、選択されたサブシステムは、選択されたサブシステムの変数およびインターフェースを初期化する再起動ルーチンまたは動作を実行することができる。
【００５６】
ブロック417において、モバイルデバイスは、ブロック415の動作で記憶されたデータを適用し、ロードし、または別様に利用することができ、選択されたサブシステムを、再起動の前に可能にされていた動作状態および/または構成に戻すことができる。たとえば、選択されたサブシステムは、ユーザ選好ファイルをリロードして、データセットを処理するときにある重み付けを利用するように選択されたサブシステムを構成することができる。任意選択のブロック418において、モバイルデバイスは、ソフトウェア再起動が完了したことと、選択されたサブシステムが使用および/または通信のために利用可能であることとを、従属リストのサブシステムに知らせることができる。モバイルデバイスは次いで、図2を参照して上で説明されたブロック206の動作を続けることができ、次のサブシステムが選択され得る。
【００５７】
様々な態様において、モバイルデバイス上で実行されるサブシステムのいずれもが、図2、図3A、図3B、および図4を参照してそれぞれ上で説明された態様の方法200、300、350、および400を実行することができる。たとえば、方法200を実行するサブシステムは、固有の関連データ(たとえば、最小および最大の再起動時間、従属リストなど)を計算して評価することができる。言い換えると、様々な方法200、300、350、および400は、サブシステムごとに、非集中的に実行され得る。したがって、ブロック206を参照して上で説明されたような選択動作、さらには、複数のサブシステムのためのデータの計算を参照する動作は、例示を目的とするものにすぎないことがあり、かつ/または、モバイルデバイスがすべてのサブシステムのためのいくつかの動作を実行できる態様にすぎないことがある。たとえば、モバイルデバイス上で実行されるオペレーティングシステムのルーチンは、図2を参照して上で説明されたブロック202〜204の計算動作を実行することができ、個々のサブシステムは、ブロック208〜222の動作を実行するように構成され得る。ある態様では、態様の方法200、300、350、および400の動作は、個々のサブシステムによって、モバイルデバイスで実行される他のソフトウェアとは独立に、またはそれと組み合わせて実行され得る。
【００５８】
様々な態様は、種々のモバイルデバイス(たとえば、スマートフォン、フィーチャーフォンなど)のいずれにも実装されてよく、その一例が図5に示される。たとえば、モバイルデバイス500は、内部メモリ102に結合されたプロセッサ101を含み得る。内部メモリ102は、揮発性メモリまたは不揮発性メモリであってよく、また、セキュアメモリおよび/もしくは暗号化メモリ、または非セキュアメモリおよび/もしくは非暗号化メモリ、またはそれらの任意の組合せであってよい。様々な態様において、モバイルデバイス500は、上で説明されたようなシステムオンチップの設計レイアウトで、様々な部品(たとえば、プロセッサ101、メモリ102など)を配置することができる。また、プロセッサ101は、抵抗性感知タッチスクリーン、静電容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンディスプレイ106に結合され得る。加えて、モバイルデバイス500のディスプレイ106は、タッチスクリーン機能を有する必要はない。モバイルデバイス500は、1つまたは複数の短距離無線信号送受信機516(たとえば、Peanut、Bluetooth(登録商標)、Zigbee(登録商標)、RF無線)と、本明細書で説明されるワイヤレス信号を送信および受信するためのアンテナ109とを有し得る。送受信機516およびアンテナ109は、様々なワイヤレス送信プロトコルスタック/インターフェースを実装するために、上述の回路とともに使用され得る。モバイルデバイス500は、セルラーネットワークを介する通信を可能にするセルラーネットワークワイヤレスモデムチップ120を含み得る。モバイルデバイス500はまた、ユーザ入力を受け取るための物理ボタン110および111を含み得る。
【００５９】
プロセッサ101は、上で説明された様々な態様の機能を含む、種々の機能を実行するようにソフトウェア命令(すなわち、アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数の多重プロセッサチップであり得る。いくつかのデバイスでは、1つのプロセッサをワイヤレス通信機能専用とし、1つのプロセッサを他のアプリケーションの実行専用とするなど、複数のプロセッサが設けられてもよい。通常、ソフトウェアアプリケーションは、アクセスされプロセッサ101にロードされる前に、内部メモリ102に記憶され得る。プロセッサ101は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。多くのデバイスでは、内部メモリは、揮発性メモリ、もしくはフラッシュメモリなどの不揮発性メモリ、または両方の混合であり得る。本明細書では、メモリへの一般的な言及は、内部メモリまたはデバイスに差し込まれるリムーバブルメモリと、プロセッサ101内のメモリとを含む、プロセッサ101によってアクセス可能なメモリを指す。
【００６０】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供されたものであり、様々な態様のステップが提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上述の態様におけるステップの順序は、いかなる順序でも実行され得る。「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は、単に、方法の説明を通じて読者を案内するために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する単数形での請求要素への任意の言及は、その要素を単数に限定するものとして解釈されるべきではない。
【００６１】
本明細書で開示された態様に関して説明された、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、上では概してそれらの機能に関して説明されてきた。そのような機能がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、具体的な適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明された機能を具体的な適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
【００６２】
本明細書で開示された態様に関して説明された様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(digital signal processor)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別のハードウェアコンポーネント、または、本明細書で説明された機能を実行するように設計されたそれらの任意の組合せで、実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、デジタルシグナルプロセッサとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、デジタルシグナルプロセッサコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。代替として、いくつかのステップまたは方法は、所与の機能に固有の回路によって実行され得る。
【００６３】
1つまたは複数の例示的な態様では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読記録媒体上に記憶されてよく、または、コンピュータ可読記録媒体を介して送信されてよい。本明細書で開示された方法またはアルゴリズムのステップは、有形の非一時的コンピュータ可読記憶媒体上に存在し得る、プロセッサ実行可能ソフトウェアモジュール内で具現化され得る。有形の非一時的コンピュータ可読記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であってよい。限定ではなく例として、そのような非一時的コンピュータ可読記録媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形式で所望のプログラムコードを記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク(DVD)、フロッピー（登録商標）ディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せも非一時的コンピュータ可読記録媒体の範囲内に含まれるべきである。さらに、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、有形の非一時的機械可読記録媒体および/またはコンピュータ可読記録媒体上のコードおよび/または命令の1つまたは任意の組合せ、もしくはそのセットとして存在し得る。
【００６４】
開示された態様の上記の説明は、任意の当業者が本発明を製作または使用できるようになされている。これらの態様への様々な修正が当業者には容易に明らかであり、本明細書で定義された一般的な原理は、本発明の趣旨または範囲を逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書で示された態様に限定されるものではなく、以下の特許請求の範囲ならびに本明細書で開示された原理および新規の特徴に合致する、最も広い範囲を与えられるべきである。
【符号の説明】
【００６５】
100  システムオンチップ
101  プロセッサ
102  メモリ
106  ディスプレイ
109  送信/受信回路/モデム
110  ユーザインターフェース
111  物理ボタン
150  サブシステムA
152  サブシステムB
154  サブシステムC
156  サブシステムD
158  サブシステムE
160  サブシステムF
200  方法
300  方法
350  方法
400  方法
500  モバイルデバイス
516  送受信機
【図１】
0005898383.tif 000002
【図２】
0005898383.tif 000003
【図３Ａ】
0005898383.tif 000004
【図３Ｂ】
0005898383.tif 000005
【図４】
0005898383.tif 000006
【図５】
0005898383.tif 000007