(57)【要約】  モバイルコンピューティングデバイスの挙動を監視するための方法、デバイス、およびシステムは、非マスター処理コアに関連するモバイルデバイス挙動の一部分を非マスター処理コア内で観測することと、モバイルデバイス挙動の観測された部分を記述する挙動シグネチャを生成することと、生成された挙動シグネチャをマスター処理コアに送信することとを含む。マスター処理コアは、非マスター処理コアから受信した2つ以上の挙動シグネチャを組み合わせてグローバル挙動ベクトルを生成する。グローバル挙動ベクトルは、分配されたソフトウェアアプリケーションが良性であるか否かを決定するためにアナライザモジュールによって使用され得る。
2015520452.tif 000002
【特許請求の範囲】
【請求項１】
モバイルコンピューティングデバイスの挙動を監視する方法であって、
前記モバイルコンピューティングデバイスの非マスター処理コアに関連するモバイルデバイス挙動の一部分を前記非マスター処理コア内で観測するステップと、
前記モバイルデバイス挙動の観測された前記部分を記述する挙動シグネチャを前記非マスター処理コア内で生成するステップと、
生成された前記挙動シグネチャを前記モバイルコンピューティングデバイスのマスター処理コアに送信するステップと、
非マスター処理コアから受信した２つ以上の挙動シグネチャを前記マスター処理コア内で組み合わせてグローバル挙動ベクトルを生成するステップと、
前記グローバル挙動ベクトルを処理のためにアナライザモジュールに提供するステップと
を有することを特徴とする方法。
【請求項２】
前記グローバル挙動ベクトルに基づいてソフトウェアアプリケーションが良性であるか否かを決定するために、前記グローバル挙動ベクトルを前記アナライザモジュールによって処理するステップをさらに有することを特徴とする請求項１に記載の方法。
【請求項３】
タスクグラフを前記マスター処理コア内で生成するステップをさらに有し、
２つ以上の挙動シグネチャを前記マスター処理コア内で組み合わせてグローバル挙動ベクトルを生成するステップが、生成された前記タスクグラフに基づいて前記２つ以上の挙動シグネチャを組み合わせるステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記モバイルコンピューティングデバイスの複数の非マスター処理コアへの単一のアプリケーションのサブタスクの分配を、前記マスター処理コア内で監視するステップをさらに有することを特徴とする請求項１に記載の方法。
【請求項５】
サブタスクの分配を監視するステップが、前記モバイルデバイスのトランスポートレイヤへの呼出しを監視するステップを含むことを特徴とする請求項４に記載の方法。
【請求項６】
メモリと、
マスタープロセッサと、
前記メモリおよび前記マスタープロセッサに接続された１つまたは複数の非マスタープロセッサと
を具備し、
前記１つまたは複数の非マスタープロセッサの各々は、
前記非マスタープロセッサに関連するモバイルデバイス挙動の一部分を観測する手順と、
前記モバイルデバイス挙動の観測された前記部分を記述する挙動シグネチャを生成する手順と、
生成された前記挙動シグネチャを前記マスタープロセッサに送信する手順と
を含む動作を実行するようにプロセッサ実行可能命令を用いて構成され、
前記マスタープロセッサは、
前記１つまたは複数の非マスタープロセッサから受信した２つ以上の挙動シグネチャを組み合わせてグローバル挙動ベクトルを生成する手順と、
前記グローバル挙動ベクトルを処理のためにアナライザモジュールに提供する手順と
を含む動作を実行するようにプロセッサ実行可能命令を用いて構成されることを特徴とするモバイルコンピューティングデバイス。
【請求項７】
前記マスタープロセッサが、
前記アナライザモジュール内の前記グローバル挙動ベクトルに基づいてソフトウェアアプリケーションが良性であるか否かを決定するために、前記グローバル挙動ベクトルを前記アナライザモジュールによって処理する手順をさらに含む動作を実行するようにプロセッサ実行可能命令を用いて構成されることを特徴とする請求項６に記載のモバイルコンピューティングデバイス。
【請求項８】
前記マスタープロセッサが、
タスクグラフを生成する手順をさらに含む動作を実行するようにプロセッサ実行可能命令を用いて構成され、
２つ以上の挙動シグネチャを組み合わせてグローバル挙動ベクトルを生成する手順が、生成された前記タスクグラフに基づいて前記２つ以上の挙動シグネチャを組み合わせる手順を含むことを特徴とする請求項６に記載のモバイルコンピューティングデバイス。
【請求項９】
前記マスタープロセッサが、
前記１つまたは複数の非マスタープロセッサへの単一のアプリケーションのサブタスクの分配を監視する手順をさらに含む動作を実行するようにプロセッサ実行可能命令を用いて構成されることを特徴とする請求項６に記載のモバイルコンピューティングデバイス。
【請求項１０】
サブタスクの分配を監視する手順が、前記モバイルコンピューティングデバイスのトランスポートレイヤへの呼出しを監視する手順を含むことを特徴とする請求項９に記載のモバイルコンピューティングデバイス。
【請求項１１】
複数の異質のコアを有するモバイルコンピューティングデバイスであって、
非マスター処理コアに関連するモバイルデバイス挙動の一部分を前記非マスター処理コア内で観測するための手段と、
前記モバイルデバイス挙動の観測された前記部分を記述する挙動シグネチャを前記非マスター処理コア内で生成するための手段と、
生成された前記挙動シグネチャをマスター処理コアに送信するための手段と、
非マスター処理コアから受信した２つ以上の挙動シグネチャを前記マスター処理コア内で組み合わせてグローバル挙動ベクトルを生成するための手段と、
前記グローバル挙動ベクトルを処理のためにアナライザモジュールに提供するための手段と
を具備することを特徴とするモバイルコンピューティングデバイス。
【請求項１２】
前記グローバル挙動ベクトルに基づいてソフトウェアアプリケーションが良性であるか否かを決定するために、前記グローバル挙動ベクトルを前記アナライザモジュールによって処理するための手段をさらに具備することを特徴とする請求項１１に記載のモバイルコンピューティングデバイス。
【請求項１３】
前記マスター処理コア内でタスクグラフを生成するための手段をさらに具備し、
２つ以上の挙動シグネチャを前記マスター処理コア内で組み合わせてグローバル挙動ベクトルを生成するための手段が、生成された前記タスクグラフに基づいて前記２つ以上の挙動シグネチャを組み合わせるための手段を含むことを特徴とする請求項１１に記載のモバイルコンピューティングデバイス。
【請求項１４】
１つまたは複数の非マスター処理コアへの単一のアプリケーションのサブタスクの分配を前記マスター処理コア内で監視するための手段をさらに具備することを特徴とする請求項１１に記載のモバイルコンピューティングデバイス。
【請求項１５】
サブタスクの分配を監視するための手段が、前記モバイルコンピューティングデバイスのトランスポートレイヤへの呼出しを監視するための手段を含むことを特徴とする請求項１４に記載のモバイルコンピューティングデバイス。
【請求項１６】
プロセッサ実行可能ソフトウェア命令を格納した非一時的コンピュータ可読記憶媒体であって、
前記プロセッサ実行可能ソフトウェア命令は、マルチプロセッサコンピューティングシステムに、
非マスタープロセッサに関連するモバイルデバイス挙動の一部分を前記非マスタープロセッサ内で観測する手順と、
前記モバイルデバイス挙動の観測された前記部分を記述する挙動シグネチャを前記非マスタープロセッサ内で生成する手順と、
生成された前記挙動シグネチャをマスタープロセッサに送信する手順と、
２つ以上の非マスタープロセッサから受信した２つ以上の挙動シグネチャを前記マスタープロセッサ内で組み合わせてグローバル挙動ベクトルを生成する手順と、
前記グローバル挙動ベクトルを処理のためにアナライザモジュールに提供する手順と
を含む動作を実行させるように構成されることを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項１７】
前記プロセッサ実行可能ソフトウェア命令が、前記マルチプロセッサコンピューティングシステムに、
前記グローバル挙動ベクトルに基づいてソフトウェアアプリケーションが良性であるか否かを決定するために、前記アナライザモジュールによって前記グローバル挙動ベクトルを処理する手順をさらに含む動作を実行させるように構成されることを特徴とする請求項１６に記載の非一時的コンピュータ可読記憶媒体。
【請求項１８】
前記プロセッサ実行可能ソフトウェア命令が、前記マルチプロセッサコンピューティングシステムに、
タスクグラフを前記マスタープロセッサ内で生成する手順をさらに含む動作を実行させるように構成され、
２つ以上の挙動シグネチャを前記マスタープロセッサ内で組み合わせてグローバル挙動ベクトルを生成する手順が、生成された前記タスクグラフに基づいて前記２つ以上の挙動シグネチャを組み合わせる手順を含むことを特徴とする請求項１６に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
前記プロセッサ実行可能ソフトウェア命令が、前記マルチプロセッサコンピューティングシステムに、
１つまたは複数の非マスター処理コアへの単一のアプリケーションのサブタスクの分配を前記マスタープロセッサ内で監視する手順をさらに含む動作を実行させるように構成されることを特徴とする請求項１６に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
サブタスクの分配を監視する手順が、モバイルデバイスのトランスポートレイヤへの呼出しを監視する手順を含むことを特徴とする請求項１９に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、2012年5月14日に出願された「System, Apparatus and Method for Adaptive Observation of Mobile Device Behavior」と題する米国仮特許出願第61/646,590号、および2012年8月15日に出願された「System, Apparatus and Method for Adaptive Observation of Mobile Device Behavior」と題する米国仮出願第61/683,274号の優先権を主張するものである。引用により、両出願の全内容があらゆる目的のために本明細書に援用される。
【背景技術】
【０００２】
セルラー通信技術およびワイヤレス通信技術は、過去数年の間に爆発的な発展をとげてきた。この発展は、より優れた通信、ハードウェア、より大きいネットワーク、およびより信頼できるプロトコルによって促進されている。ワイヤレスサービスプロバイダは、現在、向上し続ける多数の機能およびサービスを顧客に提供し、かつユーザがかつてない程に情報、リソース、および通信を利用することを可能にすることができる。これらのサービス強化と歩調を合わせるために、モバイル電子デバイス(たとえば、携帯電話、タブレット、ラップトップなど)は、今までよりも高性能かつ複雑になり、今や一般的に、マルチプロセッサ、システムオンチップ(SoC)、およびモバイルデバイスユーザが自身のモバイルデバイス上で複雑で電力負荷の大きいソフトウェアアプリケーション(たとえば、ビデオストリーミング、ビデオ処理など)を実行することを可能にする他のリソースを含む。この複雑さは、悪意のあるソフトウェア、ソフトウェアの衝突、ハードウェアの欠陥、および他の同様のエラーまたは現象が、モバイルデバイスの長期の継続的な性能および電力利用レベルに悪影響を与える新たな機会を生み出した。したがって、モバイルデバイスの長期の継続的な性能および電力利用のレベルに悪影響を与える可能性がある条件および/またはモバイルデバイス挙動を特定して修正するための新しい改良された解法は、消費者に対する便益となろう。
【発明の概要】
【課題を解決するための手段】
【０００３】
様々な態様は、非マスター処理コアに関連するモバイルデバイス挙動の一部分を、非マスター処理コア内で観測することによってモバイルコンピューティングデバイスの挙動を監視するステップと、モバイルデバイス挙動の観測された部分を記述する挙動シグネチャを非マスター処理コア内に生成するステップと、生成された挙動シグネチャをマスター処理コアに送信するステップと、マスター処理コア内で非マスター処理コアから受信した2つ以上の挙動シグネチャを組み合わせてグローバル挙動ベクトルを生成するステップと、グローバル挙動ベクトルを処理のためにアナライザモジュールに提供するステップとを有する方法を含む。
【０００４】
一態様では、アナライザモジュールによって処理するステップは、生成された挙動ベクトルに基づいてソフトウェアアプリケーションが良性であるか否かを決定するステップを含み得る。さらなる態様では、方法は、マスターコア内にタスクグラフを生成するステップを有し得、2つ以上の挙動シグネチャをマスター処理コア内で組み合わせてグローバル挙動ベクトルを生成するステップは、生成されたタスクグラフに基づいて2つ以上の挙動シグネチャを組み合わせるステップを含み得る。さらなる態様では、方法は、1つまたは複数の非マスターコアへの単一のアプリケーションのサブタスクの分配をマスター処理コア内で監視するステップを有し得る。さらなる態様では、サブタスクの分配を監視するステップは、モバイルデバイスのトランスポートレイヤへの呼出しを監視するステップを含み得る。
【０００５】
さらなる態様は、メモリと、マスタープロセッサと、メモリに接続された1つまたは複数の非マスタープロセッサとを具備するコンピューティングデバイスを含み得る。1つまたは複数の非マスタープロセッサの各々は、非マスター処理コアに関連するモバイルデバイス挙動の一部分を非マスター処理コア内で観測する手順と、モバイルデバイス挙動の観測された部分を記述する挙動シグネチャを非マスター処理コア内で生成する手順と、生成された挙動シグネチャをマスタープロセッサに送信する手順とを含み得る動作を実行するようにプロセッサ実行可能命令を用いて構成され得る。マスタープロセッサは、非マスター処理コアから受信した2つ以上の挙動シグネチャをマスター処理コア内で組み合わせてグローバル挙動ベクトルを生成する手順と、グローバル挙動ベクトルを処理のためにアナライザモジュールに提供する手順とを含み得る動作を実行するようにプロセッサ実行可能命令を用いて構成され得る。
【０００６】
一態様では、マスタープロセッサは、アナライザモジュール内の生成された挙動ベクトルに基づいてソフトウェアアプリケーションが良性であるか否かを決定する手順をさらに含む動作を実行するようにプロセッサ実行可能命令用いて構成され得る。さらなる態様では、マスタープロセッサは、タスクグラフを生成する手順をさらに含む動作を実行するようにプロセッサ実行可能命令を用いて構成され得、2つ以上の挙動シグネチャを組み合わせてグローバル挙動ベクトルを生成する手順は、生成されたタスクグラフに基づいて2つ以上の挙動シグネチャを組み合わせる手順を含み得る。
【０００７】
さらなる態様では、マスタープロセッサは、非マスタープロセッサへの単一のアプリケーションのサブタスクの分配を監視する手順をさらに含む動作を実行するようにプロセッサ実行可能命令を用いて構成され得る。さらなる態様では、サブタスクの分配を監視する手順は、モバイルデバイスのトランスポートレイヤへの呼出しを監視する手順を含み得る。
【０００８】
さらなる態様は、複数の異質のコアを有するコンピューティングデバイスであって、非マスター処理コアに関連するモバイルデバイス挙動の一部分を非マスター処理コア内で観測するための手段と、モバイルデバイス挙動の観測された部分を記述する挙動シグネチャを非マスター処理コア内に生成するための手段と、生成された挙動シグネチャをマスター処理コアに送信するための手段と、マスター処理コア内で非マスター処理コアから受信した2つ以上の挙動シグネチャを組み合わせてグローバル挙動ベクトルを生成するための手段と、グローバル挙動ベクトルを処理のためにアナライザモジュールに提供するための手段とを具備するコンピューティングデバイスを含み得る。一態様では、ソフトウェアアプリケーションが良性であるか否かをアナライザモジュール内で決定するための手段は、生成された挙動ベクトルに基づく。
【０００９】
さらなる態様では、コンピューティングデバイスは、マスターコア内にタスクグラフを生成するための手段を含み得、2つ以上の挙動シグネチャをマスター処理コア内で組み合わせてグローバル挙動ベクトルを生成するための手段は、生成されたタスクグラフに基づいて2つ以上の挙動シグネチャを組み合わせるための手段を含み得る。さらなる態様では、コンピューティングデバイスは、1つまたは複数の非マスターコアへの単一のアプリケーションのサブタスクの分配をマスター処理コア内で監視するための手段を含み得る。さらなる態様では、サブタスクの分配を監視するための手段は、モバイルデバイスのトランスポートレイヤへの呼出しを監視するための手段を含み得る。
【００１０】
さらなる態様は、非マスター処理コアに関連するモバイルデバイス挙動の一部分を非マスター処理コア内で観測する手順と、モバイルデバイス挙動の観測された部分を記述する挙動シグネチャを非マスター処理コア内に生成する手順と、生成された挙動シグネチャをマスター処理コアに送信する手順と、マスター処理コア内で非マスター処理コアから受信した2つ以上の挙動シグネチャを組み合わせてグローバル挙動ベクトルを生成する手順と、グローバル挙動ベクトルを処理のためにアナライザモジュールに提供する手順とを含む様々な動作を、(たとえば、モバイルコンピューティングデバイスの)異質のマルチプロセッサシステムに実行させるように構成されたプロセッサ実行可能命令を格納した非一時的サーバ可読記憶媒体を含む。一態様では、格納されたプロセッサ実行可能ソフトウェア命令は、生成された挙動ベクトルに基づいてソフトウェアアプリケーションが良性であるか否かを決定するために、アナライザモジュールによってグローバル挙動ベクトルを処理する手順をさらに含む動作をプロセッサに実行させるように構成され得る。
【００１１】
さらなる態様では、格納されたプロセッサ実行可能ソフトウェア命令は、マスターコア内でタスクグラフを生成する手順を含む動作をプロセッサに実行させるように構成され得、マスター処理コア内で2つ以上の挙動シグネチャを組み合わせてグローバル挙動ベクトルを生成する手順は、生成されたタスクグラフに基づいて2つ以上の挙動シグネチャを組み合わせる手順を含み得る。さらなる態様では、格納されたプロセッサ実行可能ソフトウェア命令は、1つまたは複数の非マスターコアへの単一のアプリケーションのサブタスクの分配をマスター処理コア内で監視する手順を含む動作をプロセッサに実行させるように構成され得る。さらなる態様では、サブタスクの分配を監視する手順は、モバイルデバイスのトランスポートレイヤへの呼出しを監視する手順を含み得る。
【００１２】
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本発明の例示的な態様を示し、上記の全般的な説明および下記の発明を実施するための形態とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１３】
【図１】様々な態様を実施するのに好適な、例示的なシステムオンチップのアーキテクチャ図である。
【図２】様々な態様を実施するのに好適な、例示的なマルチコアプロセッサのアーキテクチャ図である。
【図３】様々な態様による、動的および適応的観測を異質のプラットフォーム内で実行するように構成されたコンピューティングシステム内の例示的な論理構成要素および情報フローを示すブロック図である。
【図４】様々な態様による、複数の異質の処理コアにわたって分配されたソフトウェアアプリケーションの挙動を特徴付け、部分的挙動シグネチャの組合せに使用するのに好適なアプリケーションタスクグラフの図である。
【図５】様々な態様による、複数の異質の処理コアにわたって分配されたソフトウェアアプリケーションの完全な挙動を特徴付け、部分的挙動シグネチャの組合せに使用するのに好適なアプリケーションタスクグラフの別の図である。
【図６】1つのマスターコアと2つの二次コアとを有する一態様の異質のマルチプロセッサシステムにおける例示的な論理構成要素および情報フローを示すブロック図である。
【図７】一態様による、動的および適応的観測を実行するように構成されたコンピューティングシステムのオブザーバモジュール内の例示的な論理構成要素および情報フローを示すブロック図である。
【図８】一態様のオブザーバデーモンを実装するコンピューティングシステム内の論理構成要素および情報フローを示すブロック図である。
【図９】モバイルデバイス上で適応的観測を実行するための一態様の方法を示すプロセスフロー図である。
【図１０】複数の異質の処理コアを有するモバイルデバイス上で適応的観測を実行するための一態様の方法を示すプロセスフロー図である。
【図１１】モバイルデバイス上で適応的観測を実行するための別の態様の方法を示すプロセスフロー図である。
【図１２】様々な態様とともに使用するのに好適なモバイルデバイスの構成要素ブロック図である。
【図１３】様々な態様とともに使用するのに好適な例示的なモバイルデバイスを示す図である。
【図１４】様々な態様とともに使用するのに好適な例示的なサーバコンピュータを示す図である。
【発明を実施するための形態】
【００１４】
様々な態様について添付の図面を参照して詳細に説明する。可能な場合はどこでも、同一の参照番号は、図面全体を通して同一のまたは同様の部分を指すために使用される。特定の例および実装形態に対して行われる参照は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
【００１５】
「例示的な」という言葉は、例、事例、または例示として機能することを意味するように本明細書で使用される。本明細書に「例示的な」と記載されるいかなる実装形態も、必ずしも他の実装形態よりも好ましいか、または有利であると解釈されるべきではない。
【００１６】
「モバイルコンピューティングデバイス」および「モバイルデバイス」という用語は、携帯電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤー、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応携帯電話、ワイヤレスゲームコントローラ、ならびに、性能が重要であるメモリとプログラム可能プロセッサを含み、節電方法が有益であるようなバッテリー電源で動作する同様の個人用電子デバイスのうちの、任意の1つまたはすべてを指すように、本明細書では交換可能に使用される。様々な態様は、限られた処理電力とバッテリー寿命とを有するスマートフォンなどのモバイルコンピューティングデバイスに対して特に有用であるが、これらの態様は、概して、アプリケーションプログラムを実行するのに好適な複数の異質のプロセッサ/コアを含む任意のコンピューティングデバイスにおいて有用である。
【００１７】
概要では、様々な態様は、モバイルデバイスの性能および電力利用のレベルにおける経時的劣化の起因となる高い可能性を有する条件およびモバイルデバイス挙動を効率的に特定、予防、および/または修正するために、複数の分配されたまたは異質の演算ユニット(たとえば、プロセッサ、コアなど)を有するモバイルデバイス内で挙動の検出および分析動作を実行するための方法、ならびに方法を実行するように構成されたマルチプロセッサコンピューティングシステムを含む。挙動分析動作は、単一のソフトウェアアプリケーションの動作が複数の異質のコアにわたって分配されたソフトウェアアプリケーションの総合的挙動を特定するステップを含み得る。これは、複数の異質のコアの各々の中で部分的モバイルデバイス挙動を観測または監視することによって、およびタスクグラフを使用して主プロセッサ/コア(たとえば、CPU、アプリケーションプロセッサなど)の中で観測された部分的モバイルデバイス挙動を再結合し、ソフトウェアアプリケーションまたはモバイルデバイスの総合的挙動がそのモバイルデバイスの通常の動作パターンと一致するか否かの判断に使用するのに好適な挙動ベクトルを生成することによって達成され得る。部分的モバイルデバイス挙動は、処理コア、処理コアによって実行される部分、処理コア上で関数/動作を呼び出す部分と同じメモリおよび処理リソースへのアクセスを有する部分など、モニタリングコアに関連するモバイルデバイス挙動の一部分であり得る。
【００１８】
「システムオンチップ」(SOC)という用語は、単一の基板に統合された複数のリソース、演算ユニット、プロセッサ、および/またはコアを含む単一の集積回路(IC)チップを指すように本明細書で使用される。単一のSOCは、デジタル、アナログ、混合信号、および無線周波数機能に対する回路、ならびに任意の数の汎用および/または専用のプロセッサ(デジタル信号プロセッサ、モデムプロセッサ、ビデオプロセッサなど)、メモリブロック(たとえば、ROM、RAM、Flashなど)、およびリソース(たとえば、タイマー、電圧調整器、発振器など)を含み得る。SOCは、統合されたリソースおよびプロセッサを制御するための、また周辺デバイスを制御するためのソフトウェアも含み得る。
【００１９】
「システムインパッケージ」(SIP)という用語は、本明細書では、2つ以上のICチップまたは基板上に複数のリソース、演算ユニット、コア、および/またはプロセッサを含む単一のモジュールまたはパッケージを指すために使用される。たとえば、SIPは単一の基板を含み、その上に、複数のICチップまたは半導体ダイが垂直構成で積み重ねられる。同様に、SIPは1つまたは複数のマルチチップモジュール(MCM)を含み、その上に、複数のICまたは半導体ダイが単一化基板(unifying substrate)にパッケージ化される。また、SIPは、単一のマザーボード上または単一のモバイルコンピューティングデバイス内などで、高速通信回路を介してともに接続され、極めて近接してパッケージ化された複数の独立したSOCを含み得る。SOCの近接性は、高速通信、メモリおよびリソースの共有、ならびにSOC内の構成要素間のより協調的な連携および同期を可能にする。
【００２０】
「マルチプロセッサ」および「マルチプロセッサコンピューティングシステム」という用語は、本明細書では、プログラム命令を読み出して実行するように構成された2つ以上の演算ユニットまたは処理ユニットを含むシステムまたはデバイスを指すために使用される。「マルチコアプロセッサ」という用語は、プログラム命令を読み出して実行するように構成された2つ以上の独立した演算ユニットまたは処理ユニット(たとえば、CPUコア、IPコアなど)を含む単一の集積回路(IC)チップまたはチップパッケージを指すように本明細書で使用される。SOCは、複数のマルチコアプロセッサを含むことができ、SOCにおける各プロセッサは、コアと称され得る。
【００２１】
「コンテキスト情報」という用語は、本明細書では、ホストオペレーティングシステム(たとえば、Android(登録商標)、Windows(登録商標) 8、LINUX(登録商標)など)の中で動作するスレッドまたはプロセスに対して利用可能な任意の情報を指すために使用され、オペレーティングシステムサービス、ライブラリ、ファイルシステム、およびスレッド/プロセスがアクセス可能な他のリソースを識別する、動作状態データならびに認可および/またはアクセス制限を含み得る。そのような動作状態データは、プロセスのアドレス空間、スタック空間、バーチャルアドレス空間、レジスタセットイメージ(たとえば、プログラムカウンタ、スタックポインタ、命令レジスタ、プログラムステータス語など)、アカウンティング情報、認可、アクセス制限、および状態情報を含み得る。
【００２２】
概して、モバイルデバイスの性能および電力効率は、時間がたつにつれて劣化する。近年、アンチウイルス会社(たとえば、McAfee、Symantecなど)は、この劣化を遅くすることを狙いとするモバイル用アンチウイルス、ファイアウォール、および暗号化製品のマーケティングを開始した。しかしながら、これらの解法の多くは、モバイルデバイス上で計算負荷の大きいスキャニングエンジンを周期的に実行することに依存しており、そのことが、モバイルデバイスの処理およびバッテリーリソースの多くを消費し、モバイルデバイスを遅くさせるかまたはより長い時間期間の間使えなくさせ、および/または場合によってはユーザエクスペリエンスを劣化させる。加えて、これらの解法は、一般に、既知のウイルスおよびマルウェアの検出に限定され、複数の複雑なファクタおよび/または(たとえば、性能劣化がウイルスまたはマルウェアによって引き起こされない場合に)経時的なモバイルデバイスの劣化の起因となるようにしばしば結びつく相互作用に対処しない。これらおよび他の理由で、既存のアンチウイルス、ファイアウォール、および暗号化製品は、モバイルデバイスの経時的性能劣化の起因となる可能性のあるモバイルデバイス挙動を特定するのに十分な解法を提供していない。
【００２３】
コンピューティングデバイス上で実行されるプロセスまたはアプリケーションプログラムの挙動をモデル化するために、様々な他の解法が存在し、そのような挙動モデルは、コンピューティングデバイス上で悪意のあるプロセス/プログラムと良性のプロセス/プログラムとを区別するために使用され得る。しかしながら、これらの既存のモデリング解法は概して、処理、メモリ、およびエネルギーのリソースのかなりの量を消費する計算負荷の大きいプロセスの実行を必要とし、これらの量はすべて、モバイルデバイス上に十分にはないので、そのような解法は、モバイルデバイス上での使用に適さない。加えて、これらの解法は、概して、個別のアプリケーションプログラムもしくはプロセスの挙動、および/または単一のプロセッサもしくはコア(本明細書では総称して処理コア)に対する挙動を評価することに限定され、複数の異質の処理コアにわたって分配され得る複雑なモバイルデバイス挙動の正確なまたは完全なモデルを提供していない。これらおよび他の理由で、既存のモデリング解法は、複数の異質の処理コアを含むモバイルデバイスにおける使用に適していない。
【００２４】
モバイルデバイスは、比較的限定された処理、メモリ、およびエネルギーのリソースを有する、リソースを制限されたシステムである。近代的なモバイルデバイスもまた、複雑なシステムであり、不十分に設計されたソフトウェアアプリケーション、マルウェア、ウイルス、断片的メモリ、背景処理などを含め、モバイルデバイスの性能および電力利用のレベルの経時的な劣化の起因となる可能性がある多種多様なファクタが存在する。これらのファクタの数、多様性、および複雑さゆえに、近代的なモバイルデバイスの複雑ではあるがリソースを制約されたシステムの性能および/または電力利用のレベルの劣化の起因となる可能性のあるすべてのファクタを評価することは、しばしば実現不可能である。
【００２５】
様々な態様は、挙動観測値の限られた(粗い)セットから、しばしば、モバイルデバイスの性能および/または電力利用のレベルを経時的に劣化させる条件および/またはモバイルデバイス挙動を効率的に特定、分析、分類、モデリング、予防、および/または修正するためのマルチプロセッサのモバイルデバイス、システム、および方法を含む。各処理コア内で観測または監視されるファクタの数を減少させることによって、および異質の処理コア間で通信される情報の量を減少させることによって、様々な態様は、モバイルデバイスの効率ならびに性能および電力消費の特性を改良する。
【００２６】
異質のプラットフォーム(たとえば、SIP、SOC、マルチプロセッサデバイスなど)上で、単一のソフトウェアアプリケーションはいくつかのサブタスクに分解され、それらの各々は、異なる処理コアにスケジュールされる(またはその中で実行される)。すなわち、ソフトウェアアプリケーションの異なる部分が、異なる個別の処理コア上で動作(たとえば、API呼出し)を実行でき、アプリケーションの挙動は、異なる異質の処理コアにわたって分散(または分配)され得る。この理由で、処理コア間の煩雑または網羅的な通信または協調がないと、複数の異質の処理コアにわたってアプリケーションの挙動の完全なピクチャを得ることは、しばしば困難/挑戦的である。個別の処理コアの各々の観点から(またはコンテキストの中から)アプリケーションの一部分を記述するために各処理コア内に部分的、不完全な、軽量の、または簡潔な挙動シグネチャを生成することによって、および生成された挙動シグネチャを介して複数の異質の処理コアにわたって/の中で/の間で挙動情報を効率的に通信することによって、様々な態様は、モバイルデバイスのバッテリーまたは処理のリソースの量を過剰に消費することなく、モバイルデバイスに悪影響を与える高い可能性を有するモバイルデバイス挙動および条件を特定、分析し、および/またはそれに応答することができる。
【００２７】
シングルおよびマルチの両方のプロセッサシステムにおいて、同じコンテキストを共有する、それへのアクセスを有する、および/またはそれの中で動作するプロセスまたはスレッド(本明細書では総称してプロセス)は、比較的速いメモリ読出し/書込み動作を介して通信できる。一方で、コンテキストを共有しない独立したプロセス間の通信は、しばしば、(たとえば、性能コスト、エネルギー消費、メモリアクセス時間などに関して)比較的遅くて高価な関数呼出し、メソッド呼出し、プロシージャ呼出し、メッセージ交換、ドメインソケット、およびプロセス間通信(IPC)の他の形態を介して達成される。リモートプロシージャ呼出し(RPC)およびリモートメソッド呼出し(RMI)は、呼出しプロセスがサブルーチン、プロシージャ、プロセス、またはサービスを、通常は、別のプロセッサ、チップ、またはコンピューティングデバイス上の別のアドレス空間内で実行させることを可能にするプロセス間通信(IPC)である。
【００２８】
異質のプラットフォーム上で、異なる処理コアに対して利用可能なメモリおよびリソースは、しばしば、個別のドメイン(たとえば、保護ドメイン、物理ドメインなど)の中にある。加えて、処理コアの各々は、異なるオペレーティングシステムで構成され得る、および/または異なるハードウェア記述言語(HDL)もしくは命令セットアーキテクチャ(ISA)を実施できる。そのようなシステムでは、RPC/RMI機構は、第1の処理コア上の呼出しプロセスが動作、サービス、またはプロセスを第2の処理コア内で実行させることを可能にし、第2の処理コアが実行の結果を第1の処理コアに返すことを可能にするインターフェースを提供できる。しばしば、結果を解釈するために、第1の処理コアは、第2の処理コア上で実行される動作、サービス、またはプロセスと同じコンテキストを共有しないプロセスに対してすぐには利用可能でない情報へのアクセスを必要とする。そのような状況では、既存のRPC/RMI解法は、第2の処理コアが、呼び出されたサービスによって使用されるべきであるすべてのコンテキスト情報(すなわち、状態情報、認可など)をその結果の中に含むことを必要とする。
【００２９】
既存のRPC/RMI機構を介して第1および第2の処理コアの間でそのような大量の情報(たとえば、プログラム、プロシージャ、またはサービスの実行の結果など)を通信することは、一般に、電力、メモリ、および処理のリソースの量を過剰に消費する。加えて、処理コアは、異なるオペレーティングシステムを有し、および/または異なるハードウェア記述言語を実施することがあり、その場合、第1の処理コアは、第2の処理コアから受信した実行結果を解釈できる前に、第2の処理コアのコンテキストを再作成するために複雑で電力負荷の大きい動作を実行することを必要とされることがある。また、コンテキストを再作成することは、第1の処理コアのカーネルまたはホストオペレーティングシステムに対する修正を必要とすることがあり、そのことが、追加の複雑で電力負荷の大きい動作の実行を必要とし、および/またはモバイルデバイスアーキテクチャに対して大幅な修正を必要とすることがある。これらおよび他の理由で、標準のRMI/RPC解法を使用して異質のコア間で挙動情報を通信することは、モバイルデバイスの性能および電力消費の特性を劣化または低減させ、ユーザエクスペリエンスを劣化させることがある。
【００３０】
異質のプラットフォーム上で挙動観測および分析動作を実行するとき、各処理コアは、大量の挙動情報を収集すること、ならびに収集された挙動情報およびコンテキスト情報のすべてを、分析のために別の処理コアに送信することを必要とされることがある。しかしながら、処理コア間でそのような大量の情報を通信することは、モバイルデバイスのリソースを非効率的に使用することであり、モバイルデバイスの性能および電力消費の特性を劣化または低減させることがある。
【００３１】
モバイルデバイスは、比較的限定された処理、メモリ、およびエネルギーのリソースを有する、リソースを制限されたシステムである。それゆえ、ソフトウェアアプリケーションまたは挙動を観測または監視するために複数の処理コアの動作を協調させるための煩雑または網羅的な手法(または方法)は、モバイルデバイスにおける使用に十分に適したものではない。たとえば、(たとえば、メモリ読出し/書込み動作を介する)APIログ情報、およびコンテキスト情報をスレーブまたは二次の処理コアからマスターまたは一次の処理コア(すなわち、主アプリケーションプロセッサコアまたはCPU)に転送することは、とりわけバッテリー駆動のモバイルデバイスに対して法外なオーバーヘッドをもたらす結果になることがある。
【００３２】
上述のすべての理由で、既存の解法は、複数の異質の処理コアを含むモバイルデバイスにおける使用に適していない。
【００３３】
様々な態様は、モバイルデバイス挙動の一部分を観測するように構成された1つまたは複数の二次処理コアを有するモバイルデバイスを提供することによって、既存の解法の限界を克服し、二次処理コアを監視する観点から、観測されるモバイルデバイス挙動の最も適切な特徴を特定する挙動シグネチャを生成する。二次処理コアの各々は、生成された挙動シグネチャをモバイルデバイスの一次処理コアに送信し、モバイルデバイスは、二次処理コアから受信した挙動シグネチャを(たとえば、タスクグラフを介して)知的に組み合わせ、分配されたソフトウェアアプリケーションの完全な挙動または完全なモバイルデバイス挙動を特定するグローバル挙動ベクトルを生成することができる。次いで、モバイルデバイスは、生成された挙動ベクトルを使用して、モバイルデバイスに悪影響を与える高い可能性を有する条件および挙動を特定、分類、モデル化、予防、および/または修正することができる。
【００３４】
一態様では、モバイルデバイスの一次処理コアのマスターオブザーバプロセス、デーモン、モジュール、またはサブシステム(本明細書では総称的に「モジュール」と称する)が、モバイルデバイスシステムの様々なレベルにおける様々なアプリケーションプログラミングインターフェース(API)を取り付けるかまたは協調させ、取り付けられたAPIから挙動情報を収集することができる。一態様では、マスターオブザーバモジュールは、二次処理コアのスレーブオブザーバモジュール内で生成された部分的/不完全な挙動シグネチャを受信できる。部分的/不完全な各挙動シグネチャは、値またはベクトルのデータ構造で(たとえば、一連の数、状態機械などの形態で)、二次処理コア内で(たとえば、取り付けられたAPIを介して)観測されるモバイルデバイスまたはソフトウェアアプリケーションの総合的挙動の一部分を簡潔に記述できる。また、部分的/不完全な各挙動シグネチャは、二次処理コアの観点から、または二次処理コアのコンテキストの中からモバイルデバイスまたはソフトウェアアプリケーションの総合的挙動を記述できる。たとえば、部分的/不完全な挙動シグネチャは、二次処理コアによって実行された、または二次処理コアに対して利用可能なメモリまたは処理のリソースにアクセスした、ソフトウェアアプリケーションの部分を記述できる。
【００３５】
一次処理コア内のマスターオブザーバモジュールは、タスクグラフを使用して二次処理コアから受信した部分的/不完全な挙動シグネチャを再結合し、ソフトウェアアプリケーションまたはモバイルデバイスの総合的挙動がそのモバイルデバイスの通常の動作パターンと一致するか否かの判断に使用するのに好適な挙動ベクトルを生成することができる。各挙動ベクトルは、モバイルデバイスまたは特定のソフトウェアアプリケーションの総合的挙動を、値またはベクトルのデータ構造で(たとえば、一連の数、状態機械などの形態で)簡潔に記述できる。
【００３６】
マスターオブザーバモジュールは、生成された挙動ベクトルをモバイルデバイスのアナライザモジュールに(たとえば、メモリ書込み動作などを介して)送信し得、アナライザモジュールは、挙動ベクトルに含まれる情報および/または様々な他のモバイルデバイスのサブシステムから収集された情報に基づいて空間相関および/または時間相関を生成できる。生成された空間相関および/または時間相関は、モバイルデバイスの性能またはバッテリー消費のレベルに悪影響を与える高い確率を有するものと判断される挙動を特定するおよび/またはそれに応答するために、モバイルデバイスの様々なモジュールによって(たとえば、駆動モジュールなどによって)使用され得る。
【００３７】
一態様では、モバイルデバイスの一次処理コアは、二次処理コアと同じチップまたは基板上にあってよい。一態様では、二次処理コアの1つまたは複数は、一次処理コアと異なるチップまたは基板上にあってよい。一態様では、マスターおよび二次の処理コアは、それぞれ、異なるオペレーティングシステムで構成され得、および/または異なるハードウェア記述言語もしくは命令セットアーキテクチャを実施できる。様々な態様では、一次および二次の処理コアは、同じSIP、SOC、チップ、基板、回路、またはマイクロプロセッサ内にあってよい。
【００３８】
様々な態様は、シングルプロセッサおよびマルチプロセッサのシステム、ならびにシステムオンチップ(SOC)を含む、いくつかの異なるモバイルデバイス内で実装され得る。図1は、様々な態様を実施するコンピューティングデバイス内で使用され得る例示的なシステムオンチップ(SOC)100アーキテクチャを示すアーキテクチャ図である。SOC 100は、デジタル信号プロセッサ(DSP)101、モデムプロセッサ104、グラフィックスプロセッサ106、およびアプリケーションプロセッサ108など、いくつかの異質のプロセッサを含み得る。また、SOC 100は、異質のプロセッサ101，104，106，108のうちの1つまたは複数に接続された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサ)を含み得る。
【００３９】
各プロセッサ101，104，106，108，110は、1つまたは複数のコアを含み得、各プロセッサ/コアは、他のプロセッサ/コアとは無関係に動作を実行できる。たとえば、SOC 100は、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX、OS Xなど)を実行するプロセッサ、および第2のタイプのオペレーティングシステム(たとえば、Microsoft Windows 8)を実行するプロセッサを含み得る。様々な態様では、プロセッサ101，104，106，108，110の各々はマスターまたは一次の処理コアであってよく、他のプロセッサ101，104，106，108，110の各々は非マスターまたは二次の処理コアであってよい。
【００４０】
また、SOC 100は、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ゲームおよび映画用の符号化オーディオ信号の処理など他の特殊な動作を実行するためのアナログ回路およびカスタム回路114を含み得る。SOC 100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、ならびにコンピューティングデバイス上で実行されているプロセッサおよびクライアントをサポートするために使用される他の同様の構成要素など、システム構成要素およびリソース116をさらに含むことができる。
【００４１】
リソース/システム構成要素116およびカスタム回路114は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスとインターフェースする回路を含み得る。プロセッサ101，104，106，108は、一連の再構成可能な論理ゲートを含み、かつ/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装することができる相互接続/バスモジュール124を介して、1つまたは複数のメモリ要素112、システム構成要素およびリソース116、およびカスタム回路114に相互接続され得る。通信は、高性能ネットワークオンチップ(NoC)など、高度相互接続によって提供され得る。
【００４２】
SOC 100は、クロック118および電圧調整器120など、SOCの外部のリソースと通信するための入力/出力モジュール(図示せず)をさらに含み得る。SOCの外部のリソース(たとえば、クロック118、電圧調整器120)は、内部SOCプロセッサ/コア(たとえば、DSP 101、モデムプロセッサ104、グラフィックプロセッサ106、アプリケーションプロセッサ108など)のうちの2つ以上によって共有され得る。
【００４３】
また、SOC 100は、スピーカ、ユーザインターフェース要素(たとえば、入力ボタン、タッチスクリーンディスプレイなど)、マイクロフォンアレイ、物理条件(たとえば、ロケーション、方向、動き、方位、振動、圧力など)を監視するためのセンサー、カメラ、コンパス、全地球測位システム(GPS)受信機、通信回路(たとえば、Bluetooth(登録商標)、WLAN、Wi-Fiなど)、および近代的な電子デバイスの他の既知の構成要素(たとえば、加速度計など)を含む、センサーからセンサーデータを収集するのに好適なハードウェアおよび/またはソフトウェアの構成要素を含み得る。
【００４４】
一態様では、アプリケーションプロセッサ108はマスター処理コアであってよく、他のプロセッサ101，104，106，110は非マスター処理コアであってよい。一態様では、アプリケーションプロセッサ108はマスタープロセッサであってよく、他のプロセッサ101，104，106，110は、モバイルデバイスの複数の非マスター処理コアまたは複数の非マスタープロセッサであってよい。一態様では、マスタープロセッサは、単一のアプリケーションのサブタスクの、複数の非マスタープロセッサへの分配を監視するように構成され得る。一態様では、各非マスタープロセッサは、その非マスタープロセッサに関連するモバイルデバイス挙動の一部分を観測し、観測値に基づいて挙動シグネチャを生成するように構成され得る。一態様では、マスタープロセッサは、2つ以上の非マスタープロセッサから受信した2つ以上の挙動シグネチャをマスタープロセッサ内で組み合わせ、全体的または完全なモバイルデバイス挙動またはアプリケーションを記述するグローバル挙動ベクトルであって、処理のためにアナライザモジュールに提供され得るグローバル挙動ベクトルを生成するように構成され得る。一態様では、マスタープロセッサは、ソフトウェアアプリケーションが良性であるかまたは良性でないかを判断するためにアナライザモジュール内でグローバル挙動ベクトルを処理するための手段を含み得る。
【００４５】
上記で説明したSOC 100に加えて、様々な態様は、多種多様なマルチプロセッサおよびマルチコアプロセッサシステム内で実装され得る。図2は、様々な態様を実施するために使用され得る例示的なマルチコアプロセッサアーキテクチャを示す。マルチコアプロセッサ202は、(たとえば、単一の基板、ダイ、集積チップ上などで)極めて近接した2つ以上の独立した処理コア204，206，230，232を含み得る。処理コア204，206，230，232が近接していることから、メモリは、信号がオフチップを進行しなければならない場合に可能な周波数/クロック速度よりもはるかに高い周波数/クロック速度で動作することができる。その上、処理コア204，206，230，232が近接していることから、オンチップメモリとリソース(たとえば、電圧レール)との共有、ならびにコア間のより協調的な連携および同期が可能になる。
【００４６】
様々な態様では、処理コア204，206，230，232は、互いに同等であっても、異質であってもよく、かつ/または様々な専用の機能を実施することができる。したがって、処理コア204，206，230，232は、オペレーティングシステムの観点から対称的である必要はなく(たとえば、異なるオペレーティングシステムを実行できる)、またはハードウェアの観点から対称的である必要もない(たとえば、異なる命令セット/アーキテクチャを実装できる)。加えて、各処理コア204，206，230，232は、いくつかのリソースに対して排他的制御を有し、他のリソースを他のコアと共有することができる。
【００４７】
処理コア204，206，230，232は、バス/相互接続インターフェース218、共有メモリに対する直接的メモリ読出し/書込み動作、関数呼出し、メソッド呼出し、プロシージャ呼出し、メッセージ交換、ドメインソケット(たとえば、Unix(登録商標)ドメインソケット)、およびプロセス間通信(IPC)の他の形態を介して互いに通信できる。
【００４８】
様々な態様では、マルチコアプロセッサ202は、マスター処理コア(たとえば、アプリケーションプロセッサ108、CPUなど)または非マスター処理コアであってよい。一態様では、1つの処理コア204はマスター処理コアであってよく、他の処理コア206，230，232は非マスター処理コアであってよい。
【００４９】
図2に示す例では、マルチコアプロセッサ202は、複数のレベル1(L1)キャッシュ212，214，238，240とレベル2(L2)キャッシュ216，226，242とを含むマルチレベルキャッシュを含む。また、マルチコアプロセッサ202は、バス/相互接続インターフェース218、主メモリ220、および入力/出力モジュール222を含む。L2キャッシュ216，226，242は、L1キャッシュ212，214，238，240よりも大きい(かつ遅い)が、主メモリ220ユニットよりも小さい(かつはるかに速い)ことがある。各処理コア204，206，230，232は、L1キャッシュ212，214，238，240へのプライベートアクセスを有する処理ユニット208，210，234，236を含み得る。処理コア204，206，230，232は、L2キャッシュ(たとえば、L2キャッシュ242)へのアクセスを共有できるかまたは独立したL2キャッシュ(たとえば、L2キャッシュ216，226)へのアクセスを有することができる。
【００５０】
L1およびL2キャッシュは、処理ユニットによって頻繁にアクセスされるデータを格納するために使用され得る一方で、主メモリ220は、処理コア204，206，230，232によってアクセスされる、より大きいファイルおよびデータユニットを格納するために使用され得る。マルチコアプロセッサ202は、処理コア204，206，230，232がメモリに対し順番にデータを求め、最初にL1キャッシュに、次いでL2キャッシュに、そして次いで情報がキャッシュに格納されていない場合に主メモリに照会するように構成され得る。情報がキャッシュにも主メモリ220にも格納されていない場合、マルチコアプロセッサ202は、外部メモリおよび/またはハードディスクメモリ224に対し情報を求めることができる。
【００５１】
図1および図2を参照して説明されるようなマルチプロセッサハードウェア設計は、同じパッケージの内側の、しばしば同じシリコン片上に、異なる機能の複数の処理コアを含み得る。対称な多重処理ハードウェアは、単一のオペレーティングシステムによって制御される単一の共有された主メモリに接続された2つ以上の同等のプロセッサを含む。非対称または「緩く結合された」多重処理ハードウェアは、それぞれ、独立したオペレーティングシステムによって制御され、1つまたは複数の共有されたメモリ/リソースに接続され得る2つ以上の異質のプロセッサ/コアを含み得る。様々な態様は、対称および非対称の多重処理ハードウェアシステムの任意の組合せを含むまたは利用することができる。
【００５２】
図3は、モバイルデバイスの性能および電力利用のレベルの経時的な劣化の起因となる高い可能性を有する条件およびモバイルデバイス挙動を特定、予防および/または修正するように構成された異質のマルチプロセッサシステム300の一態様の処理コア301における例示的な論理構成要素および情報フローを示す。一態様では、処理コア301は、一次またはマスターの処理コアであってよい。
【００５３】
図3に示す例では、処理コア301は、挙動オブザーバモジュール302と、挙動アナライザモジュール306と、外部コンテキスト情報モジュール304と、アクチュエータモジュール308とを含む。処理コア301は、1つまたは複数のスレーブ挙動オブザーバモジュール303から挙動シグネチャと他の通信とを受信するように構成され得る。
【００５４】
モジュール302〜308の各々は、ソフトウェア、ハードウェアまたはそれらの任意の組合せで実装され得る。様々な態様では、モジュール302〜308は、オペレーティングシステムの一部分の中(たとえば、カーネル内、カーネル空間内、ユーザ空間内など)、個別のプログラムもしくはアプリケーション内、専用のハードウェアバッファもしくはプロセッサ内、またはそれらの任意の組合せに実装され得る。一態様では、モジュール302〜308のうちの1つまたは複数は、モバイルデバイスの1つまたは複数の処理コア上で実行されるソフトウェア命令として実装され得る。
【００５５】
挙動オブザーバモジュール302，303のいずれかは、アプリケーションプログラミングインターフェース(API)をモバイルデバイスの様々なレベル/モジュールにおいて取り付けるかまたは協調させ、取り付けられたAPIを介して様々なレベル/モジュールにおいてモバイルデバイスの動作および事象(たとえば、システム事象、状態変化など)を監視/観測し、観測された動作/事象に関する情報を収集し、収集された情報を知的にフィルタ処理し、フィルタ処理された情報に基づいて1つまたは複数の観測値を生成し、挙動シグネチャを生成し、生成された観測値および/または挙動シグネチャをメモリ内(たとえば、ログファイル、キャッシュメモリなどの中)に格納し、ならびに/あるいは生成されたシグネチャまたは観測値をマスター/一次処理コアまたは挙動アナライザモジュール306に(たとえば、メモリ書込み、関数呼出しなどを介して)送信するように構成され得る。
【００５６】
個別の処理コアの各々の観点から(またはそれらのコンテキストの中から)アプリケーションの一部分を記述するために各処理コア内に部分的、不完全な、軽量の、または簡潔な挙動シグネチャを生成することによって、挙動オブザーバモジュール302，303は、モバイルデバイスに悪影響を与える高い可能性を有する完全なモバイルデバイスの挙動または条件を特定、分析し、および/またはそれに応答するために、他の処理コアから収集された他の観測値/挙動情報とより容易に組み合わされ得る、観測値(および、したがって動作)の低減されたセットから挙動情報を生成できる。加えて、挙動シグネチャは、複数の異質の処理コアにわたって/の中で/の間で、効率的にかつモバイルデバイスに悪影響を与えることなく挙動情報が通信されることを可能にする。
【００５７】
挙動オブザーバモジュール302，303のいずれかは、アプリケーションフレームワークまたはランタイムライブラリ、システム呼出しAPI、ファイルシステムおよびネットワーキングサブシステム動作、デバイス(センサーデバイスを含む)状態変化、ならびに他の同様の事象におけるライブラリアプリケーションプログラミングインターフェース(API)呼出しに関する情報を収集することによって、モバイルデバイスの動作および事象を監視/観測することができる。また、挙動オブザーバモジュール302，303は、ファイルシステム活動を監視でき、ファイルシステム活動には、ファイル名、ファイルアクセスのカテゴリ(パーソナル情報またはノーマルデータファイル)を探索すること、ファイル(たとえば、exe、zipなどのタイプ)を生成または削除すること、ファイル読出し/書込み/シーク動作、ファイルパーミッションを変更することなどが含まれる。
【００５８】
また、挙動オブザーバモジュール302，303は、データネットワーク活動を監視/観測でき、データネットワーク活動には、接続のタイプ、プロトコル、ポート数、デバイスが接続されるサーバ/クライアント、接続数、通信の容量または周波数などが含まれる。挙動オブザーバモジュール302，303は、電話ネットワーク活動を監視でき、電話ネットワーク活動には、送信された、受信した、またはインターセプトされた呼出しまたはメッセージ(たとえば、SMSなど)のタイプおよび数(たとえば、かけられたプレミアム呼出しの数)を監視することを含み得る。
【００５９】
また、挙動オブザーバモジュール302，303は、フォークの数、メモリアクセス動作、開いたファイルの数などを監視することを含み得る、システムリソース使用を監視/観測できる。挙動オブザーバモジュール302，303は、ディスプレイはオンかまたはオフか、デバイスはロックされているかまたはロックされていないか、バッテリーの残量、カメラの状態など、様々なファクタを監視することを含み得る、モバイルデバイスの状態を監視できる。また、挙動オブザーバモジュール302，303は、たとえば、重要なサービス(ブラウザ、コントラクトプロバイダなど)への意図、プロセス間通信(IPC)の程度、ポップアップウィンドウなどを監視することによってプロセス間通信を監視できる。
【００６０】
また、挙動オブザーバモジュール302，303は、カメラ、センサー、電子ディスプレイ、Wi-Fi通信構成要素、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信構成要素、外部メモリチップ、電圧調整器、発振器、フェーズロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様の構成要素を含み得る、1つまたは複数のハードウェア構成要素のドライバ統計および/またはステータスを監視/観測できる。
【００６１】
また、挙動オブザーバモジュール302，303は、モバイルコンピューティングデバイスおよび/またはモバイルデバイスサブシステムの状態またはステータスを示す1つまたは複数のハードウェアカウンタを監視/観測できる。ハードウェアカウンタは、モバイルコンピューティングデバイス内で発生するハードウェアに関連した活動または事象のカウントまたは状態を格納するように構成されたプロセッサ/コアの専用レジスタを含み得る。
【００６２】
また、挙動オブザーバモジュール302，303は、ソフトウェアアプリケーションの処置(action)または動作、アプリケーションダウンロードサーバ(たとえば、Apple(登録商標)App Store server)からのソフトウェアダウンロード、ソフトウェアアプリケーションによって使用されるモバイルデバイス情報、呼出し情報、テキストメッセージ情報(たとえば、SendSMS、BlockSMS、ReadSMSなど)、メディアメッセージ情報(たとえば、ReceiveMMS)、ユーザアカウント情報、ロケーション情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベース通信のコンテンツ、音声ベース通信のコンテンツ、短距離無線通信(たとえば、Bluetooth、Wi-Fiなど)、テキストベース通信のコンテンツ、記録されたオーディオファイルのコンテンツ、電話帳または連絡先情報、連絡先リストなどを監視/観測できる。
【００６３】
挙動オブザーバモジュール302，303は、ボイスメールを含む通信(VoiceMailComm)を含むモバイルデバイスの送信または通信、デバイス識別子(DeviceIDComm)、ユーザアカウント情報(UserAccountComm)、カレンダー情報(CalendarComm)、ロケーション情報(LocationComm)、記録されたオーディオ情報(RecordAudioComm)、加速度計情報(AccelerometerComm)などを監視/観測できる。
【００６４】
挙動オブザーバモジュール302，303は、コンパス情報、モバイルデバイス設定、バッテリー寿命、ジャイロスコープ情報、圧力センサー、磁気センサー、スクリーン活動などの使用を監視/観測し、それらを更新/変更することができる。挙動オブザーバモジュール302，303は、ソフトウェアアプリケーション(AppNotifications)、アプリケーション更新などを往復して通信される通知を監視/観測できる。挙動オブザーバモジュール302，303は、第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求している第1のソフトウェアアプリケーションに関する条件または事象を監視/観測できる。挙動オブザーバモジュール302，303は、パスワードのエントリなど、ユーザ照合に関する条件または事象を監視/観測できる。
【００６５】
挙動オブザーバモジュール302，303は、アプリケーションレベル、無線レベルおよびセンサーレベルを含む、モバイルデバイスの複数のレベルにおける条件または事象を監視/観測できる。
【００６６】
アプリケーションレベルの観測は、顔認識ソフトウェアを介してユーザを観測すること、ソーシャルストリームを観測すること、ユーザによって入力された注釈を観測すること、PassBook/Google Wallet/Paypalの使用に関する事象を観測することなどを含み得る。また、アプリケーションレベルの観測は、バーチャルプライベートネットワーク(VPN)の使用に関する事象、および同期、音声探索、音声制御(たとえば、1語を発することによる電話のロック/アンロック)、言語翻訳機、計算に対するデータのオフロード、ビデオストリーミング、ユーザ活動のないカメラの使用、ユーザ活動のないマイクロフォンの使用などに関する事象を観測することを含み得る。
【００６７】
無線レベルの観測は、無線通信リンクを設立するかまたは情報を送信する前のモバイルデバイスとのユーザの対話、二重/多重SIMカード、インターネット無線、携帯電話テザリング、計算に対するデータのオフロード、デバイス状態通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイス同期などのうちのいずれかまたは複数の存在、実在、または量を判断するステップを含み得る。また、無線レベルの観測は、位置決め、ピアツーピア(p2p)通信、同期、車両対車両通信、および/または機械対機械(m2m)通信のための無線(Wi-Fi、WiMax、Bluetoothなど)の使用を監視するステップを含み得る。無線レベルの観測は、ネットワークトラフィックの使用、統計、またはプロファイルを監視するステップをさらに含み得る。
【００６８】
センサーレベルの観測は、モバイルデバイスの使用環境および/または外部環境を判断するために磁気センサーまたは他のセンサーを監視するステップを含み得る。たとえば、モバイルデバイスプロセッサは、電話が(たとえば、ホルスター内の磁石を検知するように構成された磁気センサーを介して)ホルスター内にあるかまたは(たとえば、カメラまたは光センサーによって検出される光の量を介して)ユーザのポケット内にあるかを判断するように構成され得る。たとえば、モバイルデバイスがホルスターに入れられている間に発生する、ユーザによるアクティブな使用(たとえば、写真またはビデオを取ること、メッセージを送信すること、音声呼出しを行うこと、音を録音することなど)に関する活動および機能は、(たとえば、ユーザを追跡またはスパイするために)デバイス上で遂行している不正なプロセスのサインであり得るので、モバイルデバイスがホルスター内にあることを検出することは、疑わしい挙動を認識することに関連し得る。使用環境または外部環境に関するセンサーレベルの観測の別の例には、近距離場通信(NFC)を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダから情報を収集すること、USB電力充電源の存在を検出すること、キーボードまたは補助デバイスがモバイルデバイスに接続されていることを検出すること、モバイルデバイスが(たとえば、USBなどを介して)コンピューティングデバイスに接続されていることを検出すること、LED、フラッシュ、フラッシュライト、または光源が修正または(たとえば、緊急シグナリングアップを悪意を持ってディセーブルする、など)ディセーブルされていることを検出すること、スピーカまたはマイクロフォンがスイッチオンまたは電源オンにされていることを検出すること、充電事象または電力事象を検出すること、モバイルデバイスがゲームコントローラとして使用されていることを検出することなどを含む。また、センサーレベルの観測は、医療もしくはヘルスケアのセンサーからまたはユーザの体をスキャンすることから情報を収集すること、USB/オーディオジャックに差し込まれた外部センサーから情報を収集すること、(たとえば、振動インターフェースなどを介して)触知センサーまたは触覚センサーから情報を収集すること、モバイルデバイスの熱状態に関する情報を収集することなどを含み得る。
【００６９】
一態様では、監視されるファクタの数を管理可能レベルまで減少させるために、挙動オブザーバモジュール302，303は、モバイルデバイスの劣化の起因となる可能性があるすべてのファクタの小さいサブセットである初期の挙動またはファクタのセットを監視/観測することによって粗い観測を実行できる。一態様では、挙動の初期のセットおよび/またはファクタのサブセットは、モバイルデバイス上の良性のアプリケーションと問題のあるアプリケーションとを分析することによって選択され得る。様々な態様では、挙動オブザーバモジュール302，303は、別の処理コア(たとえば、マスター処理コアなど)、ネットワークサーバ、またはクラウドサービスプロバイダネットワーク内の構成要素から挙動および/またはファクタの初期のセットを受信できる。
【００７０】
挙動アナライザモジュール306は、挙動オブザーバモジュール302から挙動ベクトルを受信し、それらを1つまたは複数の挙動モジュールと比較して、特定のモバイルデバイス挙動、ソフトウェアアプリケーション、またはプロセスが性能劣化させる/悪意があるか、良性であるか、または疑わしいかを判断する。また、挙動アナライザモジュール306は、受信した情報(すなわち、観測値)と外部コンテキスト情報モジュール304から受信したコンテキスト情報とを比較し、デバイスの劣化に経時的に起因となる(または起因となりそうである)かまたは場合によってはモバイルデバイスに問題を引き起こす可能性がある、サブシステム、プロセス、および/またはアプリケーションを特定することができる。
【００７１】
一態様では、挙動アナライザモジュール306は、デバイスの劣化に経時的に起因となる-もしくは起因となりそうである-かまたは場合によってはデバイスに問題を引き起こす可能性がある、挙動、プロセス、またはプログラムを特定するために、情報の限定されたセット(すなわち、粗い観測値)を利用するための知性を含み得る。たとえば、挙動アナライザモジュール306は、様々な処理コアおよび処理モジュール(たとえば、挙動オブザーバモジュール302、外部コンテキスト情報モジュール304など)から収集された(たとえば、観測値の形の)情報を分析し、モバイルデバイスの正常な動作挙動を学習し、比較結果に基づいて1つまたは複数の挙動ベクトルを生成または更新するように構成され得る。一態様では、挙動アナライザモジュール306は、生成された挙動ベクトルをアクチュエータモジュール308に送信し、アクチュエータモジュール308は、悪意があるまたは性能劣化させると判断されるモバイルデバイス挙動を修正するため、および/または特定された問題を直す、矯正する、隔離する、または場合によっては解決するための動作を実行するために、様々な処置または動作を実行できる。
【００７２】
一態様では、挙動アナライザモジュール306が、挙動、ソフトウェアアプリケーション、またはプロセスが疑わしいと判断する場合、挙動アナライザモジュール306は挙動オブザーバモジュール302に通知し、挙動オブザーバモジュール302は、それの観測の細分性(すなわち、モバイルデバイス挙動が観測される詳細さのレベル)の調節および/または挙動アナライザモジュール306から受信した情報(たとえば、実時間分析動作の結果)に基づいて観測される挙動の変更を行い、新しいまたは追加の挙動情報を生成または収集し、かつさらなる分析/分類のために新しい/追加の情報を挙動アナライザモジュール306に送信することができる。挙動オブザーバモジュール302と挙動アナライザモジュール306との間のそのようなフィードバック通信は、疑わしいまたは性能劣化させるモバイルデバイス挙動の原因が特定されるまで、処理またはバッテリーの消費の閾値に到達するまで、または観測細分性をさらに増加させても疑わしいまたは性能劣化させるモバイルデバイス挙動の原因が特定され得ないとモバイルデバイスプロセッサが判断するまで、モバイルデバイスが繰り返し、観測の細分性を増加させる(すなわち、より微細にまたはより詳細に観測する)ことまたは観測される特徴/挙動を変更することを可能にする。
【００７３】
図4は、様々な態様による、複数の異質の処理コアにわたって分配されたソフトウェアアプリケーションの完全な挙動を特徴付け、部分的挙動シグネチャの組合せに使用するのに好適なアプリケーションタスクグラフの図である。概して、タスクは、アプリケーションタスクグラフ402で表され得、ソフトウェアアプリケーションの完全なまたは単一化された挙動を特定する任意のモジュール、実行ブロック、論理、またはコード単位であってよい。タスクは、複数のサブタスク404を含み、サブタスク404の各々は、異なる処理コア上にマッピングされ得るかまたはそこに移され得る他のサブタスク/実行ブロックに十分に独立したタスク内の最小の実行ブロック、モジュール、論理、またはコード単位であってよい。たとえば、サブタスク404は、任意の数の(たとえば、数千の)動作またはコード行数を含み、別のコアにシフトされ得るように十分に独立しかつ自己完結したモジュールであってよい。一態様では、サブタスク404は、明確に定義された入力および出力を有し、別の処理コアに移され、マッピングされ、またはシフトされ得るコードの任意のモジュール、論理、またはコード単位であってよい。
【００７４】
異質のプラットフォーム上で、ソフトウェアアプリケーションは、いくつかのサブタスクに分解され、それらの各々は、異なるコアにスケジュールされ得る。すなわち、ソフトウェアアプリケーションの異なる部分が、異なる個別のコア上で動作(たとえば、API呼出し)を実行でき、アプリケーションの挙動は、異なるコアにわたって分散され得る。このために、アプリケーションの挙動の完全なピクチャを複数の異質のコア/処理ユニットにわたって得ることは、しばしば、困難/挑戦的である。
【００７５】
一態様では、モバイルデバイスは、複数の異質の処理コアにわたって分配されたソフトウェアアプリケーションの完全な挙動をパラメータの関数、API呼出し、パラメータ値、およびタイムスタンプとして特徴付けるタスクグラフを生成するように構成され得る。一態様では、タスクグラフは、アプリケーションの挙動の完全なピクチャを複数の異質の処理コアにわたって得るために使用され得る。
【００７６】
図5は、様々な態様による、複数の異質の処理コアにわたって分配されたソフトウェアアプリケーションの完全な挙動を特徴付け、部分的挙動シグネチャの組合せに使用するのに好適なアプリケーションタスクグラフの別の図である。具体的には、図5は、アプリケーションタスクグラフ402、したがってソフトウェアアプリケーションの総合的または完全な挙動が、複数の異質の処理コア(コア1〜3)の各々に含まれるサブタスクの合計に等しいことを示す。
【００７７】
異質のコア(コア1〜3)間のハードウェア、ソフトウェアおよび/またはアーキテクチャの差によって、コア間で情報を通信することは法外に高価となることがある、またはモバイルデバイスの性能および電力消費を弱めることがある。すなわち、モバイルデバイスは、比較的限定された処理、メモリ、およびエネルギーのリソースを有する、リソースを制限されたシステムである。それゆえ、ソフトウェアアプリケーションまたは挙動を観測または監視するために複数のコアの動作を協調させるための煩雑または網羅的な手法は、モバイルデバイスにおける使用に十分に適したものではない。たとえば、APIログを様々なスレーブコアからマスターコアに転送することは、とりわけバッテリー駆動のモバイルデバイスに対して法外なオーバーヘッドをもたらす結果となることがある。すなわち、二次処理コア内で生成されたAPIログを、分析のためにマスターコアに転送するまたは送信することは、法外に高価となり得る。
【００７８】
様々な態様は、複数のコアの動作を協調させるための煩雑な通信または網羅的な手法を、二次コア内に挙動シグネチャを生成し、コアにわたって(APIログの代わりに)挙動シグネチャを通信することによって低減または回避できる。マスター処理コアは、ソフトウェアアプリケーションの総合的挙動を得るために、部分的シグネチャを有意義な方式で(すなわち、タスクグラフを介して、時間に基づいて、処置シーケンス番号を使用してなどで)受信して組み合わせることができる。
【００７９】
図6は、1つのマスターコア602と2つの二次コア604，606とを含む一態様の異質のマルチプロセッサシステム600における例示的な論理構成要素および情報フローを示す。様々な態様では、二次コア604，606は、マスター処理コア602と同じまたは異なるチップ上にあってよい。処理コア間で通信することは、異質のトランスポートプロトコル620モジュール(たとえば、バス、IPC、ネットワークオンチップ、ファブリックなど)によって可能にされ得る。
【００８０】
図6に示す例では、マスターコア602は、グローバル挙動検出ユニット610モジュール、ローカル挙動検出ユニット612モジュール、タスクグラフ614モジュール、ワーク分配モニタ616モジュール、およびローカル観測値618モジュールを含むマスター挙動オブザーバモジュール302を含む。二次コア604，606の各々は、ローカル挙動検出ユニット612モジュールおよびローカル観測値618モジュールを含むスレーブ挙動オブザーバモジュール303を含み得る。ローカル挙動検出ユニット612モジュールは、監視されている各ソフトウェアアプリケーションに対して、それらのそれぞれのコア内のローカル観測値を解釈し、挙動シグネチャをグローバル挙動検出ユニット610モジュールに提供するように構成され得る。
【００８１】
各スレーブ挙動オブザーバモジュール303は、それのそれぞれの二次コア604，606内の1つまたは複数の活動(たとえば、重要なAPI)を監視し、特定のコア604，606に関するソフトウェアアプリケーションの挙動を記述する(および、したがってアプリケーションの部分的挙動のシグネチャである)、監視された活動のシグネチャを生成する。挙動シグネチャは、スレーブ挙動オブザーバモジュール303によって収集された挙動情報から生成され、値またはベクトルのデータ構造で(たとえば、一連の数などの形態で)モバイルデバイス挙動の部分を簡潔に記述することができる。一態様では、挙動シグネチャは、マスター処理コアが、追加の、煩雑なまたは電力負荷の大きい分析または照合の動作を実行することなく、アプリケーションタスクグラフ402内でサブタスクおよびそれのポジションを速やかに認識および特定することを可能にする識別子および/または証明として機能できる。
【００８２】
スレーブ挙動オブザーバモジュール303は、生成されたシグネチャをマスター挙動オブザーバモジュール302に送信し、マスター挙動オブザーバモジュール302は、アプリケーションタスクグラフ402を使用して部分的/不完全な挙動シグネチャを組み合わせ、ソフトウェアアプリケーションの完全な挙動を取得/特定することができる。
【００８３】
ワーク分配モニタ616は、単一のアプリケーション内の動作/ワーク(すなわち、サブタスク)が、いかにして様々な二次コア604，606に分配されているかを管理するように構成され得、そのことは、トランスポートレイヤ、異質のトランスポートプロトコル620モジュール、またはグローバル挙動検出ユニット610モジュールへの呼出しを監視することによって達成され得る。また、ワーク分配モニタ616は、グローバル挙動検出ユニットによる使用のためにアプリケーションタスクグラフ402(すなわち、同時実行パターン)を生成および維持することができ、グローバル挙動検出ユニットは、タスクグラフ402と連動して二次コア604，606から受信したローカル挙動シグネチャを使用して、ソフトウェアアプリケーションの総合的挙動を記述する挙動ベクトルを生成することができる。次いで、この挙動ベクトルは、挙動アナライザモジュール306に送信され、モバイルデバイスの性能またはバッテリー消費のレベルに悪影響を与える高い確率を有する挙動を特定するために使用され得る。
【００８４】
図7は、一態様による、動的および適応的観測を実行するように構成されたコンピューティングシステムの挙動オブザーバモジュール302における例示的な論理構成要素および情報フローを示す。挙動オブザーバモジュール302は、適応フィルタモジュール702と、スロットルモジュール704と、オブザーバモードモジュール706と、高レベル挙動検出モジュール708と、挙動ベクトル発生器710と、セキュアバッファ712とを含み得る。高レベル挙動検出モジュール708は、空間相関モジュール714と時間相関モジュール716とを含み得る。
【００８５】
オブザーバモードモジュール706は、アナライザユニット(たとえば、図3を参照して上記で説明した挙動アナライザモジュール306)および/またはアプリケーションAPIを含み得る様々なソースから制御情報を受信できる。オブザーバモードモジュール706は、様々なオブザーバモードに関する制御情報を適応フィルタモジュール702および高レベル挙動検出モジュール708に送信することができる。
【００８６】
適応フィルタモジュール702は、複数のソースからデータ/情報を受信し、受信した情報を知的にフィルタ処理し、受信した情報から選択された情報のより小さいサブセットを生成することができる。このフィルタは、アナライザモジュールから、またはAPIを介して通信するより高いレベルのプロセスから受信した情報または制御に基づいて適合され得る。フィルタ処理された情報は、スロットルモジュール704に送信され得、スロットルモジュール704は、高レベル挙動検出モジュール708が要求または情報であふれるかまたは過負荷になることがないことを確実にするために、フィルタから流れる情報の量を制御する役割を果たすことができる。
【００８７】
高レベル挙動検出モジュール708は、スロットルモジュール704からのデータ/情報と、オブザーバモードモジュール706からの制御情報と、モバイルデバイスの他の構成要素からのコンテキスト情報とを受信できる。高レベル挙動検出モジュール708は、受信した情報を使用して空間相関および時間相関を実行し、準最適レベルで実行することをデバイスに行わせ得る高レベル挙動を検出または特定することができる。空間相関および時間相関の結果は、挙動ベクトル発生器710に送信され得、挙動ベクトル発生器710は、相関情報を受信し、特定のプロセス、アプリケーション、またはサブシステムの挙動を記述する挙動ベクトルを生成することができる。一態様では、挙動ベクトル発生器710は、特定のプロセス、アプリケーション、またはサブシステムの各高レベル挙動が挙動ベクトルの要素であるように挙動ベクトルを生成できる。一態様では、生成された挙動ベクトルは、セキュアバッファ712内に格納され得る。高レベル挙動検出の例は、特定の事象の存在、別の事象の量または頻度、複数の事象間の関係、事象が発生する順序、いくつかの事象の発生の間の時間差などの検出を含み得る。
【００８８】
挙動オブザーバモジュール302は、適応的観測技法を実行し、様々なソースから受信した情報に基づいて観測の細分性を制御することができる。たとえば、高レベル挙動検出モジュール708は、スロットルモジュール704、オブザーバモードモジュール706からの情報と、モバイルデバイスの他の構成要素(たとえば、センサー)から受信したコンテキスト情報とを受信できる。一例として、時間相関を実行する高レベル挙動検出モジュール708は、カメラが使用されたことと、モバイルデバイスがピクチャをサーバへのアップロードを試みていることとを検出できる。また、高レベル挙動検出モジュール708は、デバイスがホルスターに入れられ、ユーザのベルトに取り付けられていた間にモバイルデバイス上のアプリケーションがピクチャを撮ったか否かを判断するために、空間相関を実行できる。高レベル挙動検出モジュール708は、この検出された高レベル挙動(たとえば、ホルスターに入れたままでカメラを使用すること)が容認できるまたは一般的な挙動であるか否かを判断し得、そのことは、モバイルデバイスの現在の挙動と過去の挙動とを比較することによって、および/または複数のデバイスから収集された情報(たとえば、クラウドソーシングサーバから受信した情報)にアクセスすることによって達成され得る。ホルスターに入れられている間にピクチャを撮り、それらをサーバにアップロードすることは、(ホルスターに入れられている状況で観測される通常の挙動から判断され得るように)異常な挙動であるので、この状況では、高レベル挙動検出モジュール708は、これを、潜在的に危険な(threatening)挙動と認識し、適切な対応(たとえば、カメラを遮断する、警報を鳴らすなど)を開始することができる。
【００８９】
一態様では、挙動オブザーバモジュール302は、複数の部分に実装され得る。
【００９０】
図8は、一態様のオブザーバデーモンを実装するコンピューティングシステム800内の論理構成要素および情報フローを示す。図8に示す例では、コンピューティングシステム800は、ユーザ空間内に挙動検出器802モジュール、データベースエンジン804モジュール、および挙動アナライザモジュール306と、カーネル空間内にリングバッファ814、フィルタルール816モジュール、スロットリングルール818モジュール、およびセキュアバッファ820とを含む。コンピューティングシステム800は、ユーザ空間内に挙動検出器802およびデータベースエンジン804を含むオブザーバデーモンと、カーネル空間内にセキュアバッファマネージャ806、ルールマネージャ808、およびシステムヘルスモニタ810とをさらに含み得る。
【００９１】
様々な態様は、システム挙動を特徴付けるためにwebkit、SDK、NDK、カーネル、ドライバ、およびハードウェアを包含する、モバイルデバイス上のクロスレイヤ観測を提供できる。挙動観測は、実時間で行われ得る。
【００９２】
オブザーバモジュールは、適応的観測技法を実行し、観測の細分性を制御することができる。上記で説明したように、モバイルデバイスの劣化の起因となる可能性のある多数(すなわち、数千)のファクタが存在し、デバイスの性能の劣化の起因となる可能性のある異なるファクタのすべてを監視/観測することは実現不可能である。これを克服するために、様々な態様は、観測されるべきである関連挙動を動的に特定し、特定された挙動が観測されるべき詳細さのレベルを動的に決定する。
【００９３】
図9は、一態様による、動的かつ適応的観測を実行するための例示的な方法900を示す。ブロック902で、モバイルデバイスプロセッサは、モバイルデバイスの劣化の起因となる可能性のある多数のファクタ/挙動のサブセットを監視/観測するとによって、粗い観測を実行できる。ブロック903で、モバイルデバイスプロセッサは、粗い観測を特徴付ける挙動ベクトルおよび/または粗い観測に基づくモバイルデバイス挙動を生成できる。ブロック904で、モバイルデバイスプロセッサは、モバイルデバイスの劣化に潜在的に起因となる可能性のある粗い観測に関連するサブシステム、プロセス、および/またはアプリケーションを特定できる。これは、たとえば、複数のソースから受信した情報とモバイルデバイスのセンサーから受信したコンテキスト情報とを比較することによって達成され得る。ブロック906で、モバイルデバイスプロセッサは、粗い観測に基づいて挙動分析動作を実行できる。判断ブロック908で、疑わしい挙動または潜在的問題が特定され、挙動分析の結果に基づいて修正され得るか否かを、モバイルデバイスプロセッサが判断できる。疑わしい挙動または潜在的問題が特定され、挙動分析の結果に基づいて修正され得るとモバイルデバイスプロセッサが判断する(すなわち、判断ブロック908=「Yes」である)とき、ブロック918で、プロセッサは、挙動を修正するためのプロセスを開始し、ブロック902に戻って追加の粗い観測を実行することができる。
【００９４】
疑わしい挙動または潜在的問題が、挙動分析の結果に基づいて特定および/または修正され得ないとモバイルデバイスプロセッサが判断する(すなわち、判断ブロック908=「No」である)とき、判断ブロック909で、モバイルデバイスプロセッサは、問題の可能性があるか否かを判断できる。一実施形態では、モバイルデバイスプロセッサは、モバイルデバイスが潜在的問題に遭遇することおよび/または疑わしい挙動に関与することの確率を計算し、計算された確率が所定の閾値よりも大きいか否かを判断することによって、問題の可能性があるか否かを判断できる。計算された確率が所定の閾値よりも大きくない、ならびに/あるいは疑わしい挙動または潜在的問題が存在するおよび/または検出可能である可能性はないとモバイルデバイスプロセッサが判断する(すなわち、判断ブロック909=「No」である)とき、プロセッサは、ブロック902に戻って追加の粗い観測を実行することができる。
【００９５】
疑わしい挙動または潜在的問題が存在するおよび/または検出可能である可能性があるとモバイルデバイスプロセッサが判断する(すなわち、判断ブロック909=「Yes」である)とき、ブロック910で、モバイルデバイスプロセッサは、特定されたサブシステム、プロセス、またはアプリケーションに対して、よりディープなロギング/観察または最終的なロギングを実行できる。ブロック912で、モバイルデバイスプロセッサは、特定されたサブシステム、プロセス、またはアプリケーションに対して、よりディープでより詳細な観察を実行できる。ブロック914で、モバイルデバイスプロセッサは、よりディープでより詳細な観察に基づいて、より広範および/またはよりディープな挙動分析を実行できる。判断ブロック908で、モバイルデバイスプロセッサは、よりディープな挙動分析の結果に基づいて、疑わしい挙動または潜在的問題が特定され修正され得るか否かを再び判断できる。よりディープな挙動分析の結果に基づいて疑わしい挙動または潜在的問題が特定され修正され得ないとモバイルデバイスプロセッサが判断する(すなわち、判断ブロック908=「No」である)とき、詳細さのレベルが問題を特定するのに十分に微細になるまで、または詳細さを追加しても問題が特定され得ないかまたは問題が存在しないと判断されるまで、プロセッサはブロック910〜914で動作を繰り返すことができる。
【００９６】
よりディープな挙動分析の結果に基づいて疑わしい挙動または潜在的問題が特定され修正され得るとモバイルデバイスプロセッサが判断する(すなわち、判断ブロック908=「Yes」である)とき、ブロック918で、モバイルデバイスプロセッサは、問題/挙動を修正するための動作を実行し、プロセッサはブロック902に戻って追加の動作を実行することができる。
【００９７】
一態様では、方法900のブロック902〜918の一部分として、モバイルデバイスプロセッサは、限定された粗い観測値から疑わしい挙動を特定するため、より詳細に観測するために挙動を動的に判断するため、および観測のために必要な詳細さの正確なレベルを動的に決定するために、システムの挙動の実時間挙動分析を実行できる。これは、デバイス上のプロセッサ、メモリ、またはバッテリーのリソースを多量に使用する必要なしに、モバイルデバイスプロセッサが問題を効率的に特定し、問題が発生するのを予防することを可能にする。
【００９８】
図10は、一態様による、モバイルデバイスプロセッサ上で観測を実行するための例示的なマスターオブザーバの方法1000を示す。ブロック1002〜1018で、スレーブまたは二次の処理コア(コア1、コア2、コアn)の各々におけるスレーブオブザーバモジュールは、それらのそれぞれのコア内のモバイルデバイス活動を繰り返し監視し、監視された活動に基づいて挙動シグネチャを生成し、生成されたシグネチャをマスター処理コア(Master Core)に送信することができる。
【００９９】
ブロック1020で、マスターまたは一次の処理コアのマスターオブザーバモジュールは、トランスポートレイヤへの呼出しを監視し、タスクグラフを生成することができる。ブロック1022で、マスターオブザーバモジュールは、スレーブ/二次処理コア(コア1、コア2、コアn)から挙動シグネチャを受信できる。ブロック1024で、マスターオブザーバモジュールは、受信した挙動シグネチャと、マスターコア上で収集された挙動情報とを組み合わせて、グローバル挙動ベクトルを生成することができる。ブロック1026で、マスターオブザーバモジュールは、生成されたグローバル挙動ベクトルを、さらなる分析のためにアナライザモジュールに送信することができる。
【０１００】
図11は、別の態様による、モバイルデバイスプロセッサによって動的かつ適応的観測を実行するための別の例示的な方法1100を示す。ブロック1102で、モバイルデバイスプロセッサは、モバイルデバイス上で観測されるべき関連挙動を動的に特定できる。ブロック1104で、モバイルデバイスプロセッサは、特定される挙動が観測されるべき詳細さのレベルを動的に決定できる。随意のブロック1106で、モバイルデバイスプロセッサは、観測されているものに動的に適応する。随意のブロック1108で、モバイルデバイスプロセッサは、観測されるべきパラメータ、ファクタ、挙動、プロセス、アプリケーション、および/またはサブシステムを動的に変更または更新することができる。ブロック1102〜1108の動作は、継続的に、またはモバイルデバイス性能(たとえば、バッテリー電力消費、処理速度、ネットワーク通信速度など)を改良する必要があるときに、繰り返され得る。
【０１０１】
そのようなモバイルデバイスの例示的で非限定的な態様の例示的な構成要素およびモジュールが図12に示される。モバイルコンピューティングデバイス102は、電子部品の回路基板1202を含む場合があり、電子部品の一部またはすべては、メモリ1204に接続された制御プロセッサ1201を含むオンチップシステムに統合することができる。制御プロセッサ1201はさらに、デジタル信号プロセッサ1206および/またはアナログ信号プロセッサ1208に接続されてよく、これらも一緒に接続され得る。いくつかの実施形態では、制御プロセッサ1201およびデジタル信号プロセッサ1206は、同じ構成要素であってよく、または同じプロセッサチップに集積されてもよい。ディスプレイコントローラ1210およびタッチスクリーンコントローラ1212は、制御プロセッサ1201、およびモバイルコンピューティングデバイス102内またはそれに接続されるディスプレイ/タッチスクリーン1214に接続することができる。
【０１０２】
また、制御プロセッサ1201は、リムーバブルメモリ1216(たとえば、モバイルコンピューティングデバイスの場合のSDメモリまたはSIMカード)、ならびに/または、ディスクドライブ、CDドライブ、およびDVDドライブのうちの1つまたは複数などの外部メモリ1218に接続することができる。また、制御プロセッサ1201は、USBポート1222に接続するUniversal Serial Bus (USB)コントローラ1220に、接続され得る。様々な態様では、電源1221は、USBコントローラ1220を通して、または様々な電子部品に電力(たとえば、DC電力)を供給する様々な電気接続を通して、回路基板1202に接続することができる。
【０１０３】
また、制御プロセッサ1201は、ビデオエンコーダ1224、たとえば位相反転線(PAL)エンコーダ、sequential couleur a memoire(SECAM)エンコーダ、または全米テレビジョン放送方式標準化委員会(NTSC)エンコーダにも接続され得る。さらに、ビデオエンコーダ1224は、ビデオエンコーダ1224およびディスプレイ/タッチスクリーン1214に接続できるビデオアンプ1226に接続することができる。また、ビデオポート1228は、ビデオアンプ1226に接続されて、モバイルコンピューティングデバイス102を外部のモニタ、テレビまたは他のディスプレイ(図示せず)に接続することを可能にすることができる。
【０１０４】
制御プロセッサ1201は、アナログ信号プロセッサ1208などを介して、無線周波(RF)送受信機1230に接続することができる。RF送受信機1230は、RF信号を送信および受信するために、RFアンテナ1218に接続することができる。RF送受信機1230は、たとえば、携帯電話(たとえば、3G、UMTS、CDMAなど)、Wi-Fi、WiMax、およびBluetoothを含む、1つまたは複数の異なるワイヤレス通信プロトコルの通信信号を送信および受信するように構成することができる。
【０１０５】
制御プロセッサ1201はさらに、ネットワークカード1232に接続することができ、ネットワークカード1232は、ネットワークコネクタ1231および/またはRF送受信機1230に接続され、外部ネットワーク(たとえば、ローカルエリアネットワーク、インターネット、イントラネット、Wi-Fiネットワーク、Bluetoothネットワーク、パーソナルエリアネットワーク(PAN)など)を介した通信を可能にするように構成することができる。ネットワークカード1232は、個別のチップまたはカードの形態であり得るか、または、完全解通信チップとして、制御プロセッサ1201またはRF送受信機1230(またはそれら両方)の一部分として実装される場合がある。
【０１０６】
いくつかのアナログデバイスは、キーパッド1234のように、アナログ信号プロセッサ1208を介して制御プロセッサ1201に接続することができる。別の実装形態では、キーパッドまたはキーボードはそれ自体のプロセッサを含む場合があり、その結果、制御プロセッサ1201とのインターフェースは、直接接続(図示せず)を介するか、ネットワーク接続(たとえば、ネットワークカード)を介するか、またはUSBポート1222を介する場合がある。
【０１０７】
いくつかの実装形態では、デジタルカメラ1236は制御プロセッサ1201に接続することができる。例示的な態様では、デジタルカメラ1236は、電荷結合素子(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラであり得る。デジタルカメラ1236は、モバイルコンピューティングデバイス102に組み込まれているか、または外部ケーブルによってデバイスに接続することができる。
【０１０８】
いくつかの実装形態では、オーディオコーデック1238(たとえば、ステレオコーデック)は、アナログ信号プロセッサ1208に接続することができ、オーディオアンプ1242を介して1つまたは複数のスピーカ1240に音声信号を送信するように構成することができる。また、オーディオコーデック1238は、(たとえば、マイクロフォンジャックを介して)マイクロフォン1246に接続できるマイクロフォンアンプ1244に接続することができる。また、ヘッドフォンジャック1248は、オーディオをヘッドフォンに出力するために、オーディオコーデック1238に接続することができる。
【０１０９】
いくつかの実装形態では、モバイルコンピューティングデバイス102は、ブロードキャストされたワイヤレス通信信号を受信するためのアンテナ1252に接続できる別のRF受信機回路1250を含む場合がある。受信機回路1250は、放送されたテレビ信号(たとえば、EBMS放送)を受信し、処理のためにDSP 1206に受信した信号を与えるように構成され得る。いくつかの実装形態では、受信機回路1250は、FM無線信号を受信するように構成することができ、この場合、受信した信号は、処理のためにオーディオコーデック1238に渡すことができる。
【０１１０】
一態様では、上述された方法の動作のうちの1つまたは複数を遂行するためのプロセッサ実行可能命令は、内部メモリ1204、リムーバブルメモリ1216、および/または不揮発性メモリ1218(たとえば、ハードドライブ、CDドライブ、またはネットワークを介してアクセス可能な他のストレージ)に格納することができる。そのようなプロセッサ実行可能命令は、本明細書に記載された方法を実施するために、制御プロセッサ1201によって実行することができる。
【０１１１】
様々な態様が、多様なモバイルコンピューティングデバイス上に実装され得、それらの一例が、スマートフォンの形で図13に示されている。スマートフォン1300は、内部メモリ1302と、ディスプレイ1303と、スピーカとに接続されたプロセッサ1301を含み得る。加えて、スマートフォン1300は、プロセッサ1301に接続されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ1305に接続され得る、電磁放射を送信および受信するためのアンテナ1304を含むことができる。スマートフォン1300は、通常、ユーザ入力を受け取るためのメニュー選択ボタンまたはロッカースイッチ1306も含む。
【０１１２】
また、一般的なスマートフォン1300は、マイクロフォンから受信した音をワイヤレス送信に適したデータパケットにデジタル化し、受信した音のデータパケットを復号し、スピーカに提供されて音を発生させるアナログ信号を生成する、音の符号化/復号(CODEC)回路1312を含む。同じく、プロセッサ1301、ワイヤレストランシーバ1305、およびCODEC 1312のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に示されず)を含み得る。
【０１１３】
態様の方法の一部は、態様の方法を実行している間にモバイルデバイスプロセッサによってアクセスされ得る正常動作挙動のデータベースを維持することなど、サーバ内で発生する処理のいくつかによって、クライアントサーバアーキテクチャ内で遂行され得る。そのような態様は、図14に示すサーバ1400のような、種々の市販のサーバデバイスのいずれにおいても実装され得る。そのようなサーバ1400は、通常、揮発性メモリ1402と、ディスクドライブ1403のような大容量の不揮発性メモリとに接続された、プロセッサ1401を含む。また、サーバ1400は、プロセッサ1401に接続された、フロッピー(登録商標)ディスクドライブ、コンパクトディスク(CD)、またはDVDディスクドライブ1411も含み得る。また、サーバ1400は、他のブロードキャストシステムコンピュータおよびサーバに接続されたローカルエリアネットワークなど、ネットワーク1405とデータ接続を確立するための、プロセッサ1401に接続されたネットワークアクセスポート1404も含み得る。
【０１１４】
プロセッサ1301，1401は、以下で説明する様々な態様の機能を含む、様々な機能を実施するためのソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つまたは複数のマルチプロセッサチップであり得る。いくつかのモバイルデバイスでは、1つのプロセッサをワイヤレス通信機能専用にし、1つのプロセッサを他のアプリケーションの実行専用にするように、複数のプロセッサ1301を設けることができる。一般的には、ソフトウェアアプリケーションは、それらがアクセスされ、プロセッサ1301，1401にロードされる前に、内部メモリ1302，1402，1403内に格納され得る。プロセッサ1301，1401は、アプリケーションソフトウェア命令を格納するのに十分な内部メモリを含み得る。
【０１１５】
多くのモバイルコンピューティングデバイスのオペレーティングシステムのカーネルは、(非特権コードが動作する場合)ユーザ空間内に構築され、(特権コードが動作する場合)カーネル空間内に構築される。この分離は、カーネル空間の一部分であるコードは一般公衆利用許諾契約書(GPL)許諾される必要がある一方で、ユーザ空間内で動作するコードはGPL許諾されなくてもよい、Android(登録商標)および他のGPL環境において特に重要である。本明細書で説明する様々なソフトウェア構成要素/モジュールは、明示的に別段の記述がない場合、カーネル空間またはユーザ空間のいずれかに実装され得ることを理解されたい。
【０１１６】
本出願で使用されるように、「構成要素」、「モジュール」、「システム」、「サービス」、「エンジン」、「リスナー」、「マネージャ」などの用語は、これらに限定はしないが、特定の動作または機能を実行するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアなど、コンピュータに関連したエンティティを含むものとする。たとえば、構成要素は、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得るが、これらに限定されない。例を挙げると、コンピューティングデバイス上で動作しているアプリケーションとコンピューティングデバイスとの両方が、構成要素と称されてよい。1つまたは複数のコンポーネントは、プロセスおよび/または実行スレッドの中に存在してよく、1つのコンポーネントは、1つのプロセッサまたはコアに局在してよく、かつ/または2つ以上のプロセッサまたはコアに分散して存在してよい。加えて、これらの構成要素は、様々な命令および/またはデータ構造を格納している様々な非一時的コンピュータ可読媒体から実行することができる。構成要素は、ローカルおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の既知のコンピュータ、プロセッサ、および/または通信方法に関するプロセスによって通信できる。
【０１１７】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供したものであり、様々な態様のステップを提示された順序で実施しなければならないことを要求または暗示するものではない。当業者が諒解するように、上記の態様におけるステップの順序は、どのような順序で実施されてもよい。「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は、単に、方法の説明において読者を案内するために使用される。さらに、たとえば、冠詞「a」、「an」、または「the」を使用する単数形での請求要素への任意の言及は、その要素を単数に限定するものとして解釈されるべきではない。
【０１１８】
本明細書で開示された態様に関して記載された、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはそれら両方の組合せとして実装することができる。ハードウェアとソフトウェアとのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【０１１９】
本明細書で開示された態様に関して記載された様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別のハードウェアコンポーネント、または、本明細書に記載された機能を実行するように設計されたそれらの任意の組合せで、実装または実行され得る。汎用プロセッサはマルチプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。また、プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマルチプロセッサとの組合せ、複数のマルチプロセッサ、DSPコアと連携する1つまたは複数のマルチプロセッサ、または任意の他のそのような構成として実装され得る。代替として、いくつかのステップまたは方法は、所与の機能に固有の回路によって実行され得る。
【０１２０】
1つまたは複数の例示的な態様では、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せとして実装することができる。機能は、ソフトウェアとして実装される場合、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読記憶媒体、非一時的コンピュータ可読媒体、または非一時的プロセッサ可読媒体に格納され得る。本明細書で開示された方法またはアルゴリズムのステップは、非一時的コンピュータ可読またはプロセッサ可読の記憶媒体上に存在可能なプロセッサ実行可能ソフトウェアモジュールとして具現化することができる。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であってよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体またはプロセッサ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形式で所望のプログラムコードを格納するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用する場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク、およびブルーレイ(登録商標)ディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せも非一時的コンピュータ可読媒体およびプロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の、1つまたは任意の組合せ、またはそのセットとして存在し得る。
【０１２１】
開示された態様の上記の説明は、任意の当業者が本発明を製作または使用できるようになされている。これらの態様への様々な修正が当業者には容易に明らかであり、本明細書で定義された一般的な原理は、本発明の趣旨または範囲を逸脱することなく、他の態様に適用することができる。したがって、本発明は、本明細書で示された態様に限定されるものではなく、添付の特許請求の範囲ならびに本明細書で開示された原理および新規の特徴に合致する、最も広い範囲を与えられるべきである。
【符号の説明】
【０１２２】
100  システムオンチップ(SOC)
101  デジタル信号プロセッサ(DSP)
104  モデムプロセッサ
106  グラフィックスプロセッサ
108  アプリケーションプロセッサ
110  コプロセッサ
112  メモリ
114  カスタム回路
116  リソース
118  クロック
120  電圧調整器
124  相互接続/バスモジュール
202  マルチコアプロセッサ
204，206，230，232  処理コア
208，210，234，236  処理ユニット
212，214，238，240  L1キャッシュ
216  L2キャッシュ
218  バス/相互接続インターフェース
220  主メモリ
222  入力/出力モジュール
224  ハードディスクメモリ
226，242  L2キャッシュ
300  マルチプロセッサシステム
301  処理コア
302  マスター挙動オブザーバモジュール
303  スレーブ挙動オブザーバモジュール
304  外部コンテキスト情報モジュール
306  挙動アナライザモジュール
308  アクチュエータモジュール
402  アプリケーションタスクグラフ
404  サブタスク
600  マルチプロセッサシステム
602  マスター処理コア
604，606  二次コア
610  グローバル挙動検出ユニット
612  ローカル挙動検出ユニット
614  タスクグラフ
616  ワーク分配モニタ
618  ローカル観測値
620  異質のトランスポートプロトコル
702  適応フィルタモジュール
704  スロットルモジュール
706  オブザーバモードモジュール
708  高レベル挙動検出モジュール
710  挙動ベクトル発生器
712  セキュアバッファ
714  空間相関モジュール
716  時間相関モジュール
800  コンピューティングシステム
802  挙動検出器
804  データベースエンジン
806  セキュアバッファマネージャ
808  ルールマネージャ
810  システムヘルスモニタ
814  リングバッファ
816  フィルタルール
818  スロットリングルール
820  セキュアバッファ
1201  制御プロセッサ
1202  回路基板
1204  メモリ
1206  デジタル信号プロセッサ(DSP)
1208  アナログ信号プロセッサ
1210  ディスプレイコントローラ
1212  タッチスクリーンコントローラ
1214  ディスプレイ/タッチスクリーン
1216  リムーバブルメモリ
1218  外部メモリ
1220  USBコントローラ
1221  電源
1222  USBポート
1224  ビデオエンコーダ
1226  ビデオアンプ
1228  ビデオポート
1230  RFトランシーバ
1231  ネットワークコネクタ
1232  ネットワークカード
1234  キーパッド
1236  デジタルカメラ
1238  オーディオコーデック
1240  スピーカ
1242  オーディオアンプ
1244  マイクロフォンアンプ
1246  マイクロフォン
1248  ヘッドフォンジャック
1250  RF受信機回路
1252  アンテナ
1300  スマートフォン
1301  プロセッサ
1302  内部メモリ
1303  ディスプレイ
1304  アンテナ
1305  セルラー電話トランシーバ
1306  ロッカースイッチ
1312  符号化/復号(CODEC)回路
1400  サーバ
1401  プロセッサ
1402  揮発性メモリ
1403  ディスクドライブ
1404  ネットワークアクセスポート
1405  ネットワーク
【図１】
2015520452.tif 000003
【図２】
2015520452.tif 000004
【図３】
2015520452.tif 000005
【図４】
2015520452.tif 000006
【図５】
2015520452.tif 000007
【図６】
2015520452.tif 000008
【図７】
2015520452.tif 000009
【図８】
2015520452.tif 000010
【図９】
2015520452.tif 000011
【図１０】
2015520452.tif 000012
【図１１】
2015520452.tif 000013
【図１２】
2015520452.tif 000014
【図１３】
2015520452.tif 000015
【図１４】
2015520452.tif 000016
【手続補正書】
【提出日】平成26年7月15日(2014.7.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
モバイルコンピューティングデバイスの挙動を監視する方法であって、
前記モバイルコンピューティングデバイスの非マスター処理コアに関連する完全なモバイルデバイス挙動の一部分である部分的モバイルデバイス挙動を前記非マスター処理コア内で観測するステップと、
観測された前記部分的モバイルデバイス挙動を記述する挙動シグネチャを前記非マスター処理コア内で生成するステップと、
生成された前記挙動シグネチャを前記モバイルコンピューティングデバイスのマスター処理コアに送信するステップと、
非マスター処理コアから受信した２つ以上の挙動シグネチャを前記マスター処理コア内で組み合わせて、前記２つ以上の挙動シグネチャから前記完全なモバイルデバイス挙動を特定するグローバル挙動ベクトルを生成するステップと、
前記グローバル挙動ベクトルを処理のためにアナライザモジュールに提供するステップと、
前記アナライザモジュールにより、前記グローバル挙動ベクトルと挙動モデルとを比較して、前記グローバル挙動ベクトルに基づいて前記完全なモバイルデバイス挙動が良性の挙動であるか否かを決定するステップと
を有することを特徴とする方法。
【請求項２】
タスクグラフを前記マスター処理コア内で生成するステップをさらに有し、
２つ以上の挙動シグネチャを前記マスター処理コア内で組み合わせてグローバル挙動ベクトルを生成するステップが、前記グローバル挙動ベクトルが前記２つ以上の挙動シグナチャの合計となるように、生成された前記タスクグラフに基づいて前記２つ以上の挙動シグネチャを組み合わせるステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記モバイルコンピューティングデバイスの複数の非マスター処理コアへの単一のアプリケーションのサブタスクの分配を、前記マスター処理コア内で監視するステップをさらに有することを特徴とする請求項１に記載の方法。
【請求項４】
サブタスクの分配を監視するステップが、前記モバイルコンピューティングデバイスのトランスポートレイヤへの呼出しを監視するステップを含むことを特徴とする請求項３に記載の方法。
【請求項５】
メモリと、
マスタープロセッサと、
前記メモリおよび前記マスタープロセッサに接続された１つまたは複数の非マスタープロセッサと
を具備し、
前記１つまたは複数の非マスタープロセッサの各々は、
前記非マスタープロセッサに関連する完全なモバイルデバイス挙動の一部分である部分的モバイルデバイス挙動を観測する手順と、
観測された前記部分的モバイルデバイス挙動を記述する挙動シグネチャを生成する手順と、
生成された前記挙動シグネチャを前記マスタープロセッサに送信する手順と
を含む動作を実行するようにプロセッサ実行可能命令を用いて構成され、
前記マスタープロセッサは、
前記１つまたは複数の非マスタープロセッサから受信した２つ以上の挙動シグネチャを組み合わせて、前記２つ以上の挙動シグネチャから前記完全なモバイルデバイス挙動を特定するグローバル挙動ベクトルを生成する手順と、
前記グローバル挙動ベクトルを処理のためにアナライザモジュールに提供する手順と、
前記アナライザモジュールにより、前記グローバル挙動ベクトルと挙動モデルとを比較して、前記グローバル挙動ベクトルに基づいて前記完全なモバイルデバイス挙動が良性の挙動であるか否かを決定する手順と
を含む動作を実行するようにプロセッサ実行可能命令を用いて構成されることを特徴とするモバイルコンピューティングデバイス。
【請求項６】
前記マスタープロセッサが、
タスクグラフを生成する手順をさらに含む動作を実行するようにプロセッサ実行可能命令を用いて構成され、
２つ以上の挙動シグネチャを組み合わせてグローバル挙動ベクトルを生成する手順が、前記グローバル挙動ベクトルが前記２つ以上の挙動シグナチャの合計となるように、生成された前記タスクグラフに基づいて前記２つ以上の挙動シグネチャを組み合わせる手順を含むことを特徴とする請求項５に記載のモバイルコンピューティングデバイス。
【請求項７】
前記マスタープロセッサが、
前記１つまたは複数の非マスタープロセッサへの単一のアプリケーションのサブタスクの分配を監視する手順をさらに含む動作を実行するようにプロセッサ実行可能命令を用いて構成されることを特徴とする請求項５に記載のモバイルコンピューティングデバイス。
【請求項８】
サブタスクの分配を監視する手順が、前記モバイルコンピューティングデバイスのトランスポートレイヤへの呼出しを監視する手順を含むことを特徴とする請求項７に記載のモバイルコンピューティングデバイス。
【請求項９】
複数の異質のコアを有するモバイルコンピューティングデバイスであって、
非マスター処理コアに関連する完全なモバイルデバイス挙動の一部分である部分的モバイルデバイス挙動を前記非マスター処理コア内で観測するための手段と、
観測された前記部分的モバイルデバイス挙動を記述する挙動シグネチャを前記非マスター処理コア内で生成するための手段と、
生成された前記挙動シグネチャをマスター処理コアに送信するための手段と、
非マスター処理コアから受信した２つ以上の挙動シグネチャを前記マスター処理コア内で組み合わせて、前記２つ以上の挙動シグネチャから前記完全なモバイルデバイス挙動を特定するグローバル挙動ベクトルを生成するための手段と、
前記グローバル挙動ベクトルを処理のためにアナライザモジュールに提供するための手段と、
前記アナライザモジュールにより、前記グローバル挙動ベクトルと挙動モデルとを比較して、前記グローバル挙動ベクトルに基づいて前記完全なモバイルデバイス挙動が良性の挙動であるか否かを決定するための手段と
を具備することを特徴とするモバイルコンピューティングデバイス。
【請求項１０】
前記マスター処理コア内でタスクグラフを生成するための手段をさらに具備し、
２つ以上の挙動シグネチャを前記マスター処理コア内で組み合わせてグローバル挙動ベクトルを生成するための手段が、前記グローバル挙動ベクトルが前記２つ以上の挙動シグナチャの合計となるように、生成された前記タスクグラフに基づいて前記２つ以上の挙動シグネチャを組み合わせるための手段を含むことを特徴とする請求項９に記載のモバイルコンピューティングデバイス。
【請求項１１】
１つまたは複数の非マスター処理コアへの単一のアプリケーションのサブタスクの分配を前記マスター処理コア内で監視するための手段をさらに具備することを特徴とする請求項９に記載のモバイルコンピューティングデバイス。
【請求項１２】
サブタスクの分配を監視するための手段が、前記モバイルコンピューティングデバイスのトランスポートレイヤへの呼出しを監視するための手段を含むことを特徴とする請求項１１に記載のモバイルコンピューティングデバイス。
【請求項１３】
プロセッサ実行可能ソフトウェア命令を格納した非一時的コンピュータ可読記憶媒体であって、
前記プロセッサ実行可能ソフトウェア命令は、マルチプロセッサコンピューティングシステムに、
非マスタープロセッサに関連する完全なモバイルデバイス挙動の一部分である部分的モバイルデバイス挙動を前記非マスタープロセッサ内で観測する手順と、
観測された前記部分的モバイルデバイス挙動を記述する挙動シグネチャを前記非マスタープロセッサ内で生成する手順と、
生成された前記挙動シグネチャをマスタープロセッサに送信する手順と、
２つ以上の非マスタープロセッサから受信した２つ以上の挙動シグネチャを前記マスタープロセッサ内で組み合わせて、前記２つ以上の挙動シグネチャから前記完全なモバイルデバイス挙動を特定するグローバル挙動ベクトルを生成する手順と、
前記グローバル挙動ベクトルを処理のためにアナライザモジュールに提供する手順と、
前記アナライザモジュールにより、前記グローバル挙動ベクトルと挙動モデルとを比較して、前記グローバル挙動ベクトルに基づいて前記完全なモバイルデバイス挙動が良性の挙動であるか否かを決定する手順と
を含む動作を実行させるように構成されることを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項１４】
前記プロセッサ実行可能ソフトウェア命令が、前記マルチプロセッサコンピューティングシステムに、
タスクグラフを前記マスタープロセッサ内で生成する手順をさらに含む動作を実行させるように構成され、
２つ以上の挙動シグネチャを前記マスタープロセッサ内で組み合わせてグローバル挙動ベクトルを生成する手順が、前記グローバル挙動ベクトルが前記２つ以上の挙動シグナチャの合計となるように、生成された前記タスクグラフに基づいて前記２つ以上の挙動シグネチャを組み合わせる手順を含むことを特徴とする請求項１３に記載の非一時的コンピュータ可読記憶媒体。
【請求項１５】
前記プロセッサ実行可能ソフトウェア命令が、前記マルチプロセッサコンピューティングシステムに、
１つまたは複数の非マスター処理コアへの単一のアプリケーションのサブタスクの分配を前記マスタープロセッサ内で監視する手順をさらに含む動作を実行させるように構成されることを特徴とする請求項１３に記載の非一時的コンピュータ可読記憶媒体。
【請求項１６】
サブタスクの分配を監視する手順が、モバイルデバイスのトランスポートレイヤへの呼出しを監視する手順を含むことを特徴とする請求項１５に記載の非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2015520452.tif 000017
2015520452.tif 000018
2015520452.tif 000019