コンピュータで実施される方法であって、センサハブのセンサハブプロセッサを設定することによって、アプリケーションプロセッサから前記センサハブプロセッサへと複数の機能をアウトソースする段階と、前記センサハブプロセッサに結合されている1以上のセンサを用いて1以上のコンテキストアウェアアプリケーションを実行する段階とを備えるコンピュータで実施される方法。前記センサハブプロセッサを設定することは、複数のプリミティブに基づいて前記センサハブプロセッサを動的に設定することを含む請求項1に記載のコンピュータで実施される方法。前記複数のプリミティブのうち1以上のプリミティブを拡張または縮小するべく前記複数のプリミティブのうち前記1以上のプリミティブを更新する段階をさらに備える請求項2に記載のコンピュータで実施される方法。前記複数のプリミティブに1以上のプリミティブを追加するか、または、前記複数のプリミティブのうち1以上のプリミティブを削除する段階をさらに備える請求項3に記載のコンピュータで実施される方法。前記センサハブプロセッサを動的に設定することは、前記複数のプリミティブのうち1以上のプリミティブを更新すること、または、1以上のプリミティブを追加することに基づいて行われる請求項2から4のいずれか一項に記載のコンピュータで実施される方法。アウトソースされた前記複数の機能は、前記センサハブプロセッサによって実行され、前記センサハブプロセッサは、前記1以上のセンサの動作を管理し、前記1以上のセンサの動作を管理することは、前記アプリケーションプロセッサがスリープ状態の間に、前記1以上のセンサからデータを取得することを含み、前記複数の機能は、データの取得、前記1以上のセンサのトリガ、取得した前記データのフィルタリングを含む前記取得したデータの処理、処理した前記データの配信、キャリブレーション、前記取得したデータへの時間サンプリング、および、消費電力を低減することを含む電力の管理のうち1以上を含む請求項1から5のいずれか一項に記載のコンピュータで実施される方法。前記動作は、前記1以上のコンテキストアウェアアプリケーションに関連するユーザの動作に基づいている請求項6に記載のコンピュータで実施される方法。前記センサハブプロセッサは、一のチップセットまたは複数の別箇のチップセットに設けられている前記アプリケーションプロセッサに結合されている請求項1から7のいずれか一項に記載のコンピュータで実施される方法。センサハブのセンサハブプロセッサと、前記センサハブプロセッサを設定することによってアプリケーションプロセッサから前記センサハブプロセッサへと複数の機能をアウトソースする第1のロジックと、前記センサハブプロセッサに結合されている1以上のセンサを用いて1以上のコンテキストアウェアアプリケーションを実行する第2のロジックとを備えるシステム。前記センサハブプロセッサを設定することは、複数のプリミティブに基づいて前記センサハブプロセッサを動的に設定することを含む請求項9に記載のシステム。前記複数のプリミティブのうち1以上のプリミティブを拡張または縮小するべく前記複数のプリミティブのうち前記1以上のプリミティブを更新する第3のロジックをさらに備える請求項10に記載のシステム。前記第3のロジックはさらに、前記複数のプリミティブに1以上のプリミティブを追加するか、または、前記複数のプリミティブのうち1以上のプリミティブを削除する請求項11に記載のシステム。前記センサハブプロセッサを動的に設定することは、前記複数のプリミティブのうち1以上のプリミティブを更新すること、または、1以上のプリミティブを追加することに基づいて行われる請求項10から12のいずれか一項に記載のシステム。前記センサハブプロセッサは、前記1以上のセンサの動作を管理し、前記1以上のセンサの動作を管理することは、前記アプリケーションプロセッサがスリープ状態の間に、前記1以上のセンサからデータを取得することを含み、前記複数の機能は、データの取得、前記1以上のセンサのトリガ、取得した前記データのフィルタリングを含む前記取得したデータの処理、処理した前記データの配信、キャリブレーション、前記取得したデータへの時間サンプリング、および、消費電力を低減することを含む電力の管理のうち1以上を含む請求項9から13のいずれか一項に記載のシステム。前記動作は、前記1以上のコンテキストアウェアアプリケーションに関連するユーザの動作に基づいている請求項14に記載のシステム。コンピュータに、センサハブのセンサハブプロセッサを設定することによって、アプリケーションプロセッサから前記センサハブプロセッサへと複数の機能をアウトソースする手順と、前記センサハブプロセッサに結合されている1以上のセンサを用いて1以上のコンテキストアウェアアプリケーションを実行する手順とを実行させるためのプログラム。前記センサハブプロセッサを設定することは、複数のプリミティブに基づいて前記センサハブプロセッサを動的に設定することを含む請求項16に記載のプログラム。前記コンピュータにさらに、前記複数のプリミティブのうち1以上のプリミティブを拡張または縮小するべく前記複数のプリミティブのうち前記1以上のプリミティブを更新する手順を実行させる請求項17に記載のプログラム。前記コンピュータにさらに、前記複数のプリミティブに1以上のプリミティブを追加するか、または、前記複数のプリミティブのうち1以上のプリミティブを削除する手順を実行させる請求項18に記載のプログラム。前記センサハブプロセッサを動的に設定することは、前記複数のプリミティブのうち1以上のプリミティブを更新すること、または、1以上のプリミティブを追加することに基づいて行われる請求項17から19のいずれか一項に記載のプログラム。本発明の実施形態は、センサハブにコンテキストアウェアアプリケーション関連の処理をアウトソースするメカニズムを提供する。本発明の実施形態に係る方法は、センサハブのセンサハブプロセッサを設定することによって、複数の機能をアプリケーションプロセッサからセンサハブプロセッサへとアウトソースする段階と、センサハブプロセッサに結合されている1以上のセンサを用いて1以上のコンテキストアウェアアプリケーションを実行する段階とを備える。一実施形態によると、コンピューティングデバイスのアプリケーションプロセッサがスリープ状態である場合に動作し、複数の機能をアプリケーションプロセッサから、これらの機能をアプリケーションプロセッサで実行する場合よりはるかに低い電力のセンサハブプロセッサへと、オフロードする機能を持つ低電力感知サブシステム例えば、プロセッサ、センサ、ハードウェアおよびソフトウェアの組み合わせ等から構成されるセンサハブが提供される。さらに、一実施形態によると、センサハブは、低電力要件を満足させつつ、センサハブを多岐にわたるコンテキスト機能に合わせて設定するために必要な柔軟性を得るための一連の電力効率プリミティブを公開することによって、多岐にわたるコンテキストアウェアアプリケーションをサポートしている。新型のセンサハブは、従来のシステムに関連付けられている従来の電力に関する問題を克服している。従来のシステムでは、コンテキストアウェアアプリケーション関連のセンサをアプリケーションプロセッサに直接接続する必要があり、大量の電力を消費すると共に、電池寿命が大幅に短くなる。図1は、本発明の一実施形態に係るセンサハブ110を利用するコンピューティングデバイス100を示す図である。コンピューティングデバイス100は、コンピューティングデバイス100の任意のハードウェアまたは物理リソースとユーザとの間のインターフェースとして機能するオペレーティングシステム104を有するモバイルデバイス例えば、スマートフォン、手持ちデバイス、タブレット、ラップトップ等を備えるとしてよい。コンピューティングデバイス100はさらに、プロセッサ106と、メモリデバイス102と、ネットワークデバイス、ドライバ等を備えるとしてよい。プロセッサ106は、コンピューティングデバイス100にサービスを提供するべく設けられているアプリケーションプロセッサ回路108を有するとしてよい。アプリケーションプロセッサ108は、高度コンテキスト処理等、さまざまなタスクを実行するべく、モバイルインターネットデバイスMID対応プロセッサ、例えば、Atom商標のプロセッサコアを持つLincroftシステムオンチップSOCに基づいているMoorestown商標を含むとしてよい。一実施形態によると、本文献で後述するが、アプリケーションプロセッサ108は、同様の機能をアプリケーションプロセッサで実行する場合に比べて利用する電力を大幅に低減するべく、センサハブプロセッサに結合されている複数のセンサを用いて、さまざまなコンテキストアウェアアプリケーション関連の機能アプリケーションプロセッサによって実行されるものを実行するべく、所望または必要に応じて、センサハブハードウェアおよび/またはセンサハブソフトウェアを用いてセンサハブを設定する権限および機能を与えられるとしてよい。機械、デバイス、コンピュータおよびコンピューティングシステムといった用語は本文献において同義語として用いられることに留意されたい。一実施形態によると、コンピューティングデバイス100はさらに、プリミティブとして提供される、センサデータ取得、トリガ、処理、フィルタリング、ストリーミング、格納、転送、キャリブレーション等のさまざまなコンテキストアウェアアプリケーション関連機能を実行するべく、アプリケーションプロセッサ108と通信するハードウェアアーキテクチャ112およびソフトウェアアーキテクチャ114を有するセンサハブ110を備える。これらの機能は、アプリケーションプロセッサ108からセンサハブ110へとアウトソース、例えば、オフロードされ、コンテキストアウェアアプリケーションの要求が変化しても対応できるよう十分柔軟に実行される。言い換えると、一実施形態によると、プリミティブは、センサハブ110で実行され得るが、プロトコル、例えば、センサハブアプリケーションプログラミングインターフェースAPIを介してアプリケーションプロセッサ108によって設定される。実生活におけるコンテキストアウェアアプリケーションの例を考えると、コンテキストアウェアアプリケーションは、ジェスチャ認識を要求すると、トリガされる。この要求は、インタラクティブアプリケーションIAアプリケーションプロセッサ108で実行されているミドルウェアにルーティングされる。その後、ミドルウェアは、例えば、加速度計からデータを取得して、加速度計から動きが検出されればジャイロスコープをトリガして、センサハブ110上でジェスチャスポッティングを実行して、これらの条件が満たされればデータをミドルウェアに送信するよう、センサハブ110を設定する。そして、アプリケーションプロセッサ上のミドルウェアは、データを受信するとアルゴリズム例えば、隠れマルコフモデルHMMアルゴリズムを実行して、最後のジェスチャ認識を実行して、ユーザがシェイクジェスチャをたった今実行したと判断する。言い換えると、一実施形態では、プリミティブ例えば、トリガ、取得および処理は、IAアプリケーションプロセッサ108で実行されるミドルウェアによって設定されるが、センサハブ110のセンサハブソフトウェア114で実施され、アプリケーションプロセッサ108にあるセンサハブAPIを介して公開され、アプリケーションプロセッサ108を介して要求、トリガおよび設定される。これについては、以降の図面を参照しつつ説明する。本文献で続いて説明するが、センサハブハードウェア112は、コンピューティングデバイス100の電力要件を低減するべくさまざまなコンテキストアウェアアプリケーションに関する機能を実行することを目的としてセンサハブソフトウェア114と協働している複数のセンサ例えば、3D加速器、ジャイロスコープ、コンパス、気圧計等に結合されている汎用低電力プロセッサ例えば、STMicro社のCortex等を含むとしてよい。図2は、本発明の一実施形態に係るセンサハブハードウェア112を備えるセンサハブ110を示す図である。一実施形態によると、センサハブ110は、センサハブハードウェア112およびセンサハブソフトウェア114を備える。センサハブハードウェア112は、非常に低い電流例えば、マイクロアンペアからミリアンペアの範囲で動作可能であり、処理需要に基づいて動的にスケールアップ可能である汎用低電力センサハブプロセッサ202例えば、CortexM3を含む。一実施形態によると、コンテキストアウェアアプリケーションに関するさまざまなセンサ214-228は、例えば、インターインテグレーテッドサーキットI2Cインターフェース、シリアルペリフェラルインターフェースSPI、汎用入出力GPIO、ユニバーサルアシンクロナスレシーバ/トランスミッタUART、アナログ型、無線型等、標準のインターフェースを用いてセンサハブプロセッサ202に接続されているので、センサハブハードウェア112内に位置している。さらに、一実施形態によると、センサハブプロセッサ202は、一連のインターフェース例えば、SPI、ユニバーサルシリアルバスUSB、GPIO等を介してアプリケーションプロセッサ108と通信するように接続および位置しており、共有メモリ空間へのアクセスを維持する。また、図示した実施形態では、センサハブプロセッサ202は別のプロセッサとして図示されているが、別の実施形態では、センサハブプロセッサ202はアプリケーションプロセッサ108内のコアプロセッサとして位置しているとしてもよいし、または、さらに別の実施形態では、チップセット例えば、Atom商標チップセット、プラットフォームコントローラハブPCH等等に位置しているとしてもよい。一実施形態によると、センサハブプロセッサ202は、センサ214-228とアプリケーションプロセッサ108との間等、処理ヒエラルキー内の中間レベル処理エージェントとして機能する。この中間レベルエージェントによって、アプリケーションプロセッサ108が上記のセンサデータ関連のタスクをセンサハブプロセッサ202にアウトソースできるようにすることで、センサデータのポーリングおよび処理例えば、センサデータを収集してしきい値と比較をアプリケーションプロセッサ108が継続的に行う必要性が減る。また、センサハブプロセッサ202は、センサハブプロセッサ202が無くアプリケーションプロセッサ108と直に協働する場合にセンサ214-228が通常実現し得るレベルより高い柔軟性およびプログラミング可能性を実現する。センサハブプロセッサ202は、コンテキストアウェアアプリケーションの性格および機能に応じて、任意の数で任意の種類のセンサ214-228と協働するべく利用され得ると考えられる。例えば、歩数計アプリケーション等のコンテキストアウェアアプリケーションは、特定のセンサ例えば、3D加速度計222、3Dジャイロスコープ220等が必要になるとしてよい。一方で、カメラアプリケーション等の別のコンテキストアウェアアプリケーションは、歩数計アプリケーションが必要としたセンサと全く同じセンサが必要でない場合があり、この逆もまた然りである。幾つかの例として、環境マイクロフォン216とセンサハブプロセッサ202との間でのデータ変換に利用されるコーデック214例えば、Maxim社のコーデックに対応付けられている環境マイクロフォン216例えば、Knowles社の環境マイクロフォン、3Dコンパス218例えば、Honeywell社のコンパス、3Dジャイロスコープ220例えば、Invense社のジャイロスコープ、3D加速度計222例えば、STMicro社の加速度計、光センサ224例えば、Intersil社の光センサ、気圧計226、およびフラッシュ228等が挙げられる。上述した物理センサ214-228に加えて、さまざまな仮想センサがセンサハブプロセッサ202によってサポートされているとしてよい。これらの仮想センサ例えば、xy方向、z方向、慣性測定による進行方向、ノイズレベル等は、物理センサ214-228で取得したセンサデータを用いて算出または取得するとしてよい。図3Aおよび図3Bを参照しつつさらに説明するが、一実施形態によると、センサハブプロセッサ202が、動的または要望に応じて、さまざまな機能または処理を実行する性能を採用するように、アプリケーションプロセッサ108において、任意の数で任意の種類のソフトウェアモジュールをセンサハブソフトウェア114の一部として利用する。ソフトウェアモジュールを介して提供されるこれらの機能は、センサハブプリミティブと呼ばれるとしてよい。一実施形態によると、センサデータ取得、トリガ、処理、フィルタリング、ストリーミング、格納、転送、キャリブレーション等のさまざまなコンテキストアウェアアプリケーション関連機能は、プリミティブとして提供され、アプリケーションプロセッサ108からセンサハブ110へとアウトソース、例えば、オフロードされ、コンテキストアウェアアプリケーションからの要求が変化しても対応できるように十分柔軟に実行される。言い換えると、一実施形態によると、プリミティブはセンサハブ110で実行されるとしてよいが、センサハブAPI等のプロトコルを介してアプリケーションプロセッサ108によって設定される。言い換えると、一実施形態では、プリミティブ例えば、トリガ、取得、処理、取得、フィルタリング等は、IAアプリケーションプロセッサ108上で実行されているミドルウェアによって設定されるが、センサハブ110のセンサハブソフトウェア114で実行され、アプリケーションプロセッサ108にあるセンサハブAPIを介して公開され、アプリケーションプロセッサ108を介して要求、トリガおよび設定される。これらについては、以降の図面を参照しつつ説明する。一実施形態によると、特定のデフォルトプリミティブがセンサハブ110の一部として最初に提供されるとしてよい。例えば、センサハブ110およびアプリケーションプロセッサ108を備えるコンピューティングデバイスの製造時に提供されるとしてよい。しかし、時間が経過すると、特定のプリミティブこれらの機能または性能に対応するものは、センサハブソフトウェア114に追加またはセンサハブソフトウェア114から削除されるとしてよい。例えば、新しい機能例えば、追加機能を表す新しいプリミティブ例えば、新しいコンポーネントの追加をセンサハブソフトウェア114に追加する場合、センサハブソフトウェア114は、アプリケーションプロセッサ108がセンサハブプロセッサ202を動的または需要に応じて再設定できるようにして、コンテキストアウェアアプリケーションに関連する今後のトランザクションで利用されるこの新しい機能を採用する。同様に、センサハブプロセッサ202は、対応するプリミティブ例えば、キャリブレータがセンサハブソフトウェア114によって提供されるプリミティブのリストから削除されると、センサハブソフトウェア114からの支援に応じてアプリケーションプロセッサ108によって動的または需要に応じて再設定されて、特定の機能例えば、キャリブレーションを削除するとしてよい。一実施形態によると、動的設定とは、任意の数または任意の組み合わせのプリミティブを動的に実行および終了することを意味する。例えば、データの取得は、加速度計222を用いて開始されて、その後任意のタイミングで停止させるとしてよい。しかし、取得プリミティブ例えば、図3Bの取得モジュール322はそのままで、実施されないだけであるとしてもよい例えば、再度必要になるまでアイドル状態を維持する。さらに、監視すべきイベントを開始するとしてよいが、例えば、加速度計データが特定のしきい値に到達するか、または、特定のしきい値を超えると、アプリケーションプロセッサ108がアウェイク状態になるか、または、当該イベントを除去するとしてよい。さらに、センサハブ110で実行されているセンサハブソフトウェア114を修正して、新しいプリミティブをAPI例えば、図3AのセンサハブAPI310に追加してアプリケーションプロセッサ108が新しく追加されたプリミティブにアクセスして利用できるようにすることによって、センサハブ機能の拡張で、特定のプリミティブを追加または削除するとしてよい。図3Aおよび図3Bは、本発明の一実施形態に係るセンサハブソフトウェア114を備えるセンサハブ110の実施形態を示す図である。図2を参照しつつ上述したが、複数のプリミティブ処理モジュール、性能モジュール、機能モジュール等とも呼ばれるは、アプリケーションプロセッサ108がセンサハブプロセッサ202を設定して関連する機能を採用してさまざまな対応するコンテキストアウェアアプリケーション関連機能を実行できるようにするべく、センサハブソフトウェア114およびセンサハブソフトウェアモジュール304の一部として利用されるとしてよい。一実施形態によると、コンピューティングデバイス100はさらに、さまざまなコンテキストアウェアアプリケーション関連機能、例えば、センサデータ取得、トリガ、処理、フィルタリング、ストリーミング、格納、転送、キャリブレーション等を実行するべく、アプリケーションプロセッサ108と通信しているハードウェアアーキテクチャ112およびソフトウェアアーキテクチャ114を有するセンサハブ110を備える。これらの機能は、プリミティブとして提供され認識されているとしてよい。これらの機能は、アプリケーションプロセッサ108からセンサハブ110へと、アウトソース、例えば、オフロードされ、コンテキストアウェアアプリケーションの要求が変化しても対応できるように十分柔軟に実行される。言い換えると、一実施形態では、プリミティブはセンサハブ110で実行されるが、センサハブAPI等のプロトコルを介してアプリケーションプロセッサ108によって設定される。言い換えると、一実施形態では、プリミティブ例えば、トリガ、取得、処理、取得、フィルタリング等は、IAアプリケーションプロセッサ108で実行されているミドルウェアによって設定されるが、センサハブ110のセンサハブソフトウェア114で実行され、アプリケーションプロセッサ108にあるセンサハブAPIを介して公開され、アプリケーションプロセッサ108を介して要求、トリガおよび設定される。これについては、以降の図面を参照しつつ説明する。一実施形態によると、プリミティブを用いるアプリケーションプロセッサ108によるセンサハブプロセッサ202の設定または再設定は、動的に実行されるとしてよい例えば、プリミティブは、コンテキストアウェアアプリケーションまたはユーザのジェスチャが変化を引き起こす度に、自動的に追加、編集または削除されるとしてよいし、または、要求に応じて実行されるとしてもよい例えば、ユーザが、センサハブ110を利用するコンピューティングデバイスでの設定を変更することによってプリミティブの変更を行えるようにする。プリミティブに加えて図3Bを参照しつつさらに説明する、他のソフトウェア/ハードウェア/ファームウェアコンポーネントも利用する。例えば、センサハブアプリケーションプログラミングインターフェース310APIまたは単にインターフェースと呼ぶは、IA306に対応付けられているIAドライバ312コンテンツパーサ314を含むが、例えば、センサハブプロセッサ202の設定、データの設定等について、センサハブプロセッサ202とやり取りできるようにするとしてよい。ドライバ314は、例えば、推論エンジン例えば、Skin-Skeleton-GutsSSG推論ソフトウェアディベロッパキットSDKによって利用され得るか、または、例えば、生センサデータが必要な場合にはアプリケーションおよびサービス316によって直接利用され得るセンサAPI308を公開するべく利用されるとしてよい。一実施形態によると、センサAPI308および/またはセンサハブAPI310は、センサハブソフトウェア114に抽象化を提供する。このため、所定期間にわたってセンサハブソフトウェア114が複数の異なるセンサをサポートする必要がある場合には、各センサドライバが公開しているセンサ機能はセンサAPI308および/またはセンサハブAPI310で抽象化される。このように、例えば、センサ214-228の既存の加速度計を新しい加速度計と交換する場合、既存の加速度計に対応付けられているセンサドライバを単に新しい加速度計に対応付けられているセンサドライバと交換することで、同じ加速度計APIを既存のもの例えば、データ取得、電力低減等として公開するには十分である。さらに、ミドルウェア370は、高レベルでのコンテキストの格納、検索、通知、データの処理等を実現するとしてよく、さらに、他のアプリケーション、サービスおよびコンポーネント316の実装、例えば、推論アルゴリズムの実装、生センサデータの格納例えば、高データレート等を実現するとしてよい。同様に、ドライバ312、パーサ314等のさまざまなコンポーネントは、抽象的なセンサハブの詳細を提供し、複数の消費者をサポートし、コンフリクト解決を実行するべく利用され得る。図1を参照しつつ上述したジェスチャ認識の例に戻ると、ジェスチャ認識要求がアプリケーションプロセッサ108上で実行されているミドルウェア370にルーティングされると、ミドルウェア370は、例えば、加速度計からデータを取得して、加速度計から動きが検出されればジャイロスコープをトリガして、センサハブ110でジェスチャスポッティングを実行して、これらの条件が満たされればミドルウェア370にデータを送信するよう、センサハブ110を設定する。アプリケーションプロセッサ108上のミドルウェア370はこの後、データを受信すればいつでもアルゴリズム例えば、HMMアルゴリズムを実行して、最後のジェスチャ認識を実行して、ユーザがたった今、例えば、シェイクジェスチャを行ったと判断する。ミドルウェア370は、本明細書で図示しているコンポーネントのうち一部、例えば、IA306、センサAPI308、センサハブAPI310、ドライバ312、他のアプリケーション、サービスおよびコンポーネント316、呼受付制御CACアプリケーション352、CACフレームワーク354例えば、SSGフレームワーク、推論SDK例えば、SSG推論SDK356、CACクライアントAPI358、CACプロバイダAPI360等を含むとしてよい。一方、パーサ314は、ドライバ312に対応付けられているが、センサハブ110で実行されるとしてよい。上述したように、一実施形態によると、センサハブソフトウェアモジュール304を介して提供するプリミティブ例えば、トリガ、取得、処理、取得、フィルタリング等は、アプリケーションプロセッサ108上で実行されているミドルウェア370によって設定されるが、センサハブ110のセンサハブソフトウェア114において実施され、アプリケーションプロセッサ108にあるセンサハブAPI310を介して公開され、アプリケーションプロセッサ108を介して要求、トリガおよび設定される。図3Bを参照すると、さまざまな機能および/または性能に言及する複数のプリミティブ322-338が、ソフトウェアモジュール304として提供されており、センサハブAPI310を介してセンサハブプロセッサ202に対応付けられており、アプリケーションプロセッサ108は、コンテキストアウェアアプリケーションのさまざまな要求および/または要件に基づいて、センサハブプロセッサ202を再設定できる。本明細書で図示しているプリミティブ322-338に対応付けられているさまざまな機能は、説明を簡潔かつ分かり易くするべく単に一例として挙げられているが、任意の数の他の機能をプリミティブ322-338のリストに追加し得るまたはプリミティブ322-338のリストから削除し得るものと考えられる。一実施形態によると、センサハブプリミティブ322-338は、範囲および所望のサンプリングレートを設定することに加えて、複数のセンサ212-228のうちいずれを選択してデータを取得するかを決定するべく、取得モジュール322を含む。取得モジュール322はさらに、センサハブプロセッサ202に、不要または非アクティブ状態のセンサ214-228のいずれかを低電力モードに移行させて、電力を節約できるようにする。別のプリミティブは、輸送効率を維持しつつレイテンシを最適化することを目的としてデータをアプリケーションプロセッサ108にストリームするべくセンサハブプロセッサ202の設定を容易にするために用いられるデータ配信モジュール324を含む。データ配信モジュール324またはこのモードは、アプリケーションプロセッサ108がウェイク状態またはアクティブ状態である場合に利用されるとしてよい。これに代えて、ユーザ例えば、モバイルコンピューティングデバイスのエンドユーザがモバイルコンピューティングデバイスとやり取りしていない場合には、アプリケーションプロセッサ108はスリープ状態に移行して、バックグラウンドで関連データを収集して格納媒体でデータを蓄積または保持するようにセンサハブプロセッサ202を設定するとしてよい。データ配信モードにおいて、アプリケーションプロセッサ108は、周期的にウェイク状態に移行して、格納媒体から格納されているデータを取得して、コンテキスト認識等の必要なタスクを実行するとしてよい。別のプリミティブは、一実施形態によると、特定のデータ処理機能をセンサ214-228から取得したセンサデータに適用するようにセンサハブプロセッサ202を設定し易くするべくアプリケーションプロセッサ108をトリガするために用いられる処理モジュール326を含む。これらの処理機能は、柔軟性を高めるべく一連のパラメータを用いて設定可能である例えば、サンプルの数、スライディングウィンドウ等。さらに、これらの処理機能は、必要または所望に応じて、プリミティブ調整部338を用いて既存の処理モジュール326を拡張することによって、比較的容易に拡張が可能である。プリミティブ調整部338は、処理モジュール326等の既存モジュールの機能を拡張するべく、または、ソフトウェアプログラミングを介した新しいモジュールを追加するべく用いられる機能拡張モジュールを含む。一実施形態によると、プリミティブ322-338はさらに、任意の1以上のセンサ214-228からのセンサデータを組み合わせ、特定の条件の発生についてセンサデータを評価するべくデータ処理機能を実行するようにセンサハブプロセッサ202の設定を容易にする条件評価部328を含む。これらの条件は、トリガされると、以下の処理のうち1以上が行われる。1新しいセンサからの取得をトリガ2データ低減3イベント検出新しいセンサからの取得をトリガは、センサ214-228を用いて異なるセンサからの取得モジュール322を利用した取得をトリガすると、一部のセンサは他のセンサよりも消費電力が高いので、電力効率が高くなることを意味する。例えば、コンテキストアウェアアプリケーションのジェスチャ認識の場合、加速度計、ジャイロスコープ等の特定のセンサがジェスチャ認識関連のタスクを実行するために必要である。例えば、加速度計から取得したデータは、ユーザの動きを検出するために用いられる。その結果、ジャイロスコープ通常は、消費電力が10倍10Xであるからの取得が開始される。一実施形態によると、アプリケーションプロセッサ108の機能はセンサハブプロセッサ202にオフロードまたはアウトソースされて、動作時のレイテンシを低く抑える。これは、当該機能がアプリケーションプロセッサ108にとどまっている場合には、取得がトリガされる度にアプリケーションプロセッサ108をウェイク状態にする必要があるので、不可能である。データ低減およびイベント検出に関しては、継続的に検出処理を行うので、取得モジュール322を用いて所定量のデータが取得されるが、このデータの大半は意味を持たない場合がある。例えば、ジェスチャ認識または音声認識を考えると、加速度計またはマイクロフォン等のセンサは通常、アプリケーションプロセッサ108をウェイク状態にする必要がない無用なデータを収集したり、無用なデータを受信したりすることがある。ある時点において、ユーザは、ジェスチャを行うか、または、単語を話すとしてよく、ジェスチャーまたは音声が行われた可能性があるジェスチャまたは音声が理解可能である必要はないとセンサハブ110が検出することが出来る場合、センサハブ110はアプリケーションプロセッサ108をウェイク状態に移行させてデータを送信する。言い換えると、一実施形態では、アプリケーションプロセッサ108は、収集されたデータに何らかの意義がある場合に限ってウェイク状態になりデータを受信する。何の意義もない場合には、この処理は、アプリケーションプロセッサ108における処理負荷を低減して、コンピューティングデバイスの消費電力を低減するべくセンサハブ110にアウトソースされて実行される。例えば、ジェスチャ認識の場合、ジェスチャ認識パイプラインの最初の2つのステージは、演算の負荷が大きくないので、センサハブ110にオフロードすることができる。これらのステージによって、ジェスチャの種類を判断することはできないが、ジェスチャに似た動きがあるか否かを検出することができる。この結果、ジェスチャが実行されていない場合には元のデータの95以上を落とすので、IA、アプリケーションプロセッサ108をウェイク状態に移行させる頻度が大幅に少なくなる。残りの5のデータについては、アプリケーションプロセッサ108はウェイク状態に移行するとしてよく、ジェスチャ認識を実行する演算の負荷が非常に大きいステージをIAで実行する。この作業負荷分散方法は、検出、音声認識、スピーカ特定等の複数のインターフェースパイプラインについて、一般化することができる。プリミティブ304について続けると、仮想センサ330は、生センサデータセンサ214-228から取得または算出したものに対して、高レベルデータ例えば、コンピューティングデバイスの表面が上を向いているか否か等を提供するために利用可能なプリミティブとして機能する。一部の仮想センサ330例えば、向き、進行方向等は、センサハブ110で効率的に算出可能であり、元のセンサデータが必要でない場合にはデータが大幅に削減される。さらに、これらの仮想センサ330は、特定のイベントをトリガして、アプリケーションプロセッサ108をウェイク状態に移行させるとしてよい。他のプリミティブ304には、キャリブレータ332、タイムスタンプモジュール334、電力マネージャ336およびプリミティブ調整部338が含まれる。一部のセンサ例えば、コンパスは頻繁にキャリブレーションを行う必要があるので、キャリブレータ332は、キャリブレーション機能を適用してさまざまなキャリブレーションタスクを実行してキャリブレーションまたは、キャリブレーション済みのデータをアプリケーションプロセッサ108に供給するために用いられるとしてよい。正確なコンテキスト認識を可能とするためにはセンササンプルのタイムスタンプを正確に維持することが重要であるので、タイムスタンプモジュール334は、センサハブの自身の内蔵クロックと共に利用され、時間データをアプリケーションプロセッサ108と周期的に同期させて、コンテキストアウェアアプリケーションに関するさまざまな処理のタイムサンプリングを実行して登録する。時間データは、時間データサンプルと共に送信されるタイムスタンプとして、アプリケーションプロセッサ108と共有されるとしてよい。電力マネージャ336は、センサハブ110における電力の管理を容易にするので、アプリケーションプロセッサ108とは別に自発的に行われる。例えば、電力マネージャ336は、センサハブ110を、例えば、連続するデータサンプル取得タイミングの間に低電力状態に切り替えるとしてよい。一方、アプリケーションプロセッサ108は、高電力状態にあるとしてよい。プリミティブ調整部338によれば、新しいプリミティブをセンサハブプリミティブ304のリストにプログラミングすること、および/または、既存のプリミティブ304を再プログラミングして特定の機能を追加または削除することが可能である。図4は、本発明の一実施形態に係るセンサハブにプロセッサのコンテキストアウェアアプリケーション関連の機能をアウトソースする方法を説明するための図である。方法400は、ハードウェア例えば、回路、専用ロジック、プログラム可能ロジック等、ソフトウェア処理デバイスで実行される命令等、または、これらの組み合わせを含む処理ロジックによって実行されるとしてよい。一実施形態によると、方法400は、図1のセンサハブ110によって実行される。方法400は、センサハブをコンピューティングデバイス例えば、モバイルコンピューティングデバイスまたは手持ちコンピューティングデバイスのアプリケーションプロセッサに対応付けるブロック405で開始される。コンピューティングデバイスは、1以上のコンテキストアウェアアプリケーションをホストしている。一実施形態によると、ブロック410において、コンテキストアウェアアプリケーションに関連する複数のセンサは、センサハブのハードウェアアーキテクチャのセンサハブプロセッサに対応付けられている。一実施形態によると、センサハブは、チップセットのうち、アプリケーションプロセッサが位置しているのと同じコアに位置するとしてもよいし、別のチップセットにディスクリートに設けられるとしてもよい。一実施形態によると、一連のソフトウェアモジュールは、ブロック415において、プリミティブとしてセンサハブのソフトウェアアーキテクチャにプログラミングされ、コンピューティングシステムのアプリケーションプロセッサに供給される。上述したように、プリミティブ例えば、トリガ、取得および処理は、アプリケーションプロセッサで実行されているミドルウェアによって設定されるが、センサハブソフトウェアで実施され、アプリケーションプロセッサのセンサハブAPIを介して公開され、アプリケーションプロセッサを介して要求、トリガおよび設定される。一実施形態によると、図3Bを参照しつつ説明したように、センサハブソフトウェアモジュール304によって提供されるように、プリミティブ調整部またはプリミティブ調整モジュールを用いて、プリミティブを後に更新するとしてよい。これらのプリミティブの変更または更新は、任意の数の既存のプリミティブの編集、移動および/または削除、ならびに、任意の数で任意の種類の新しいプリミティブの追加を含むとしてよい。ブロック420において、これらのプリミティブはアプリケーションプロセッサに提供されて、アプリケーションプロセッサに新しい機能を提供し、コンピューティングシステムのコンテキストアウェアアプリケーションに対応する処理に関するさまざまな機能およびタスクを実行するようにセンサハブプロセッサを設定する。このように、一実施形態によると、通常はアプリケーションプロセッサによって実行される機能または処理は、ブロック425においてセンサハブプロセッサにアウトソースされる。例えば、アプリケーションプロセッサが通常は直接管理するセンサは、一実施形態によると、センサハブプロセッサによって管理されるので、コンテキストアウェアアプリケーションに関するタスクの大半をアプリケーションプロセッサが行わなくて済む。これによって、アプリケーションプロセッサはスリープ状態に移行するので、消費電力が全体的に低減される。ブロック430において、既存のプリミティブのうちいずれかは更新例えば、拡張または低減すべきであるか否か、および/または、任意の新しいプリミティブを追加すべきか否かを判断する。更新および/または追加を行う場合、プリミティブ調整部を用いて、更新および/または追加をブロック435で実行して、ブロック420において、アプリケーションプロセッサによるセンサハブプロセッサの設定を行うようにする。更新および/または追加を行わない場合、ブロック440で終了する。図5は、本発明の一実施形態に係る、図1のセンサハブ110を利用可能なコンピューティングシステム500を示す図である。図5に示すコンピューティングシステムの例は、1少なくとも1つが上述した特徴を含む1以上のプロセッサ501と、2メモリコントロールハブMCH502と、3システムメモリ503異なる種類のシステムメモリも存在する、例えば、ダブルデータレートRAMDDRRAM、拡張データ出力RAMEDORAM等と、4キャッシュ504と、5入出力I/OコントロールハブICH505と、6グラフィクスプロセッサ506と、7ディスプレイ/スクリーン507異なる種類のものが存在する、例えば、陰極線管CRT、薄膜トランジスタTFT、液晶ディスプレイLCD、DPL等と、81以上のI/Oデバイス508とを備える。1以上のプロセッサ501は、コンピューティングシステムが実現するソフトウェアルーチンを実行するべく、命令を実行する。命令は、データに対して実行される何らかの種類の演算を含むことが多い。データおよび命令は共に、システムメモリ503およびキャッシュ504に格納されている。キャッシュ504は通常、システムメモリ503よりもレイテンシ時間が短い。例えば、キャッシュ504は、プロセッサと同じシリコンチップに集積化されているとしてもよいし、および/または、より高速なスタティックRAMSRAMセルで構成されているとしてもよい。一方、システムメモリ503は、より低速のダイナミックRAMDRAMセルで構成されているとしてよい。利用頻度が高い命令およびデータをシステムメモリ503ではなくキャッシュ504に格納しようとすることで、コンピューティングシステムの全体的な性能効率が改善する。システムメモリ503は意図的に、コンピューティングシステム内の他のコンポーネントによって利用可能な構成になっている。例えば、さまざまなインターフェース例えば、キーボードおよびマウス、プリンタポート、ローカルエリアネットワークLANポート、モデムポート等からコンピューティングシステムで受信したデータ、または、コンピュータシステム例えば、ハードディスクドライブの内部格納要素から取り出したデータは通常、ソフトウェアプログラムの実施に際して1以上のプロセッサ501によって演算を行う前に、システムメモリ503の待ち行列に一時的に入れる。同様に、ソフトウェアプログラムがコンピューティングシステムから外部のエンティティへとコンピューティングシステムインターフェースのうち1つを介して送信する必要があると判断するデータ、または、内部格納要素に格納されるデータは通常、送信または格納の前にシステムメモリ503で一時的に待ち行列に入れられる。ICH505は、当該データが適切にシステムメモリ503と適切な対応するコンピューティングシステムインターフェースとの間でやり取りされるように処理するコンピューティングシステムの構成に応じて、内部格納デバイスとのやり取りも処理する。MCH502は、プロセッサ501、インターフェースおよび内部格納要素からのシステムメモリ503へのアクセス要求が互いに近接したタイミングで発生して競合する場合に、これらの要求を管理する。また、通常のコンピューティングシステムでは1以上のI/Oデバイス508が実現されている。I/Oデバイスは一般的に、コンピューティングシステム例えば、ネットワーキングアダプタとの間でデータ転送を行うか、または、大規模不揮発性ストレージの場合には、コンピューティングシステム例えば、ハードディスクドライブ内でデータ転送を行う。ICH505は、自身とI/Oデバイス508との間において、双方向のポイントツーポイントリンクを持つ。本発明のさまざまな実施形態の一部は、コンピュータプログラム製品として提供されるとしてよい。コンピュータプログラム製品は、本発明の実施形態に係るプロセスを実行するようコンピュータまたはその他の電子デバイスをプログラミングするために用いられるコンピュータプログラム命令を格納しているコンピュータ可読媒体を含むとしてよい。機械可読媒体は、これらに限定されないが、フロッピー登録商標ディスケット、光ディスク、コンパクトディスクリードオンリーメモリCD-ROM、および、光磁気ディスク、ROM、RAM、消去可能プログラム可能リードオンリーメモリEPROM、電気的EPROMEEPROM、磁気カードまたは光カード、フラッシュメモリ、または、電子命令を格納するのに適した他の種類の媒体/機械可読媒体を含むとしてよい。上述した説明では、本発明は、具体的な実施形態例を参照しつつ説明した。しかし、上述した説明を、特許請求の範囲に記載した本発明のより広義の意図および範囲から逸脱することなく、さまざまな点で変形および変更し得ることは明らかである。明細書および図面は、本発明を限定するものではなく、例示するものと見なされたい。