(57)【特許請求の範囲】
【請求項１】
集積回路であって、
前記集積回路に集積された複数の構成要素であって、前記複数の構成要素は、中央処理装置（ＣＰＵ）プロセッサ及びメモリコントローラを含み、該メモリコントローラは、使用中に第１のメモリに接続される、複数の構成要素と、
前記複数の構成要素に接続された第１の構成要素であって、前記第１の構成要素も前記集積回路に集積され、前記第１の構成要素は、前記複数の構成要素が電源オフされている間に電源オンされたままであるように構成され、前記第１の構成要素は、前記集積回路を含むシステム内の少なくとも１つのセンサに接続されるように構成され、前記第１の構成要素は、プロセッサ、センサキャプチャ回路、及び第２のメモリを含む、第１の構成要素と、
を備え、
前記複数の構成要素が電源オフされている間に：
前記センサキャプチャ回路は、前記少なくとも１つのセンサからセンサデータのＮ個のサンプルを前記第２のメモリ内にキャプチャするように構成され、Ｎは正の整数であり、前記プロセッサは、前記Ｎ個のサンプルのキャプチャ中は、電源オフされ、
前記第１の構成要素は、前記Ｎ個のサンプルのキャプチャに応じて、前記プロセッサを電源オンするように構成され、
前記プロセッサは、前記キャプチャされたセンサデータの前記Ｎ個のサンプル中の所定の状態を検出するように構成され、
前記第１の構成要素は、前記キャプチャされたセンサデータの前記Ｎ個のサンプルが前記第２のメモリの閾値レベルに到達するのに応じて、前記メモリコントローラと前記第１の構成要素から前記メモリコントローラへの通信経路とを電源オンさせるように構成され、
前記第１の構成要素は、前記ＣＰＵプロセッサによって処理するために、前記キャプチャされたセンサデータの前記Ｎ個のサンプルを前記第２のメモリから前記第１のメモリに書き込むように構成され、このような前記第２のメモリから前記第１のメモリへのセンサデータの転送は、前記キャプチャされたセンサデータの前記Ｎ個のサンプルが前記第２のメモリの閾値レベルに到達するのに応じて、前記ＣＰＵプロセッサが電源オフされたままの間に達成され、そして
前記第１の構成要素は、前記所定の状態を検出するのに応じて、前記複数の構成要素を電源オンさせるように構成され、前記ＣＰＵプロセッサは、前記第１のメモリ内の前記キャプチャされたセンサデータを処理するように構成されている、
集積回路。
【請求項２】
前記プロセッサは、前記第２のメモリ内にキャプチャされたセンサデータの前記Ｎ個のサンプルをフィルタリングするように構成される、請求項１に記載の集積回路。
【請求項３】
前記第１の構成要素は、キャプチャされたセンサデータの前記Ｎ個のサンプル中の所定の状態を前記プロセッサが前記フィルタリング中に検出するのに応じて、前記複数の構成要素を電源オンさせるように構成される、請求項２に記載の集積回路。
【請求項４】
前記第１の構成要素は、複数の電力状態で動作するように構成され、前記複数の電力状態のうちの第１の電力状態は、前記プロセッサが非アクティブである間に、前記センサキャプチャ回路が電源オンされ、センサデータをキャプチャすることを含む、請求項１に記載の集積回路。
【請求項５】
前記複数の電力状態のうちの第２の電力状態は、前記処理を実行するために前記プロセッサがアクティブであることを含み、前記第１の構成要素は、前記第２のメモリ内にキャプチャされた前記センサデータが所定の量に到達することに応じて、前記第１の電力状態から前記第２の電力状態へ移行するように構成される、請求項４に記載の集積回路。
【請求項６】
前記複数の電力状態のうちの第３の電力状態は、前記センサキャプチャ回路及び前記プロセッサが非アクティブであることを含み、前記第１の構成要素は、センサデータが読出しのために利用可能になることに応じて、前記第３の電力状態から前記第１の電力状態へ移行するように構成される、請求項４に記載の集積回路。
【請求項７】
前記少なくとも１つのセンサと、
請求項１に記載の集積回路と、
を備える、システム。
【請求項８】
前記センサは加速度計である、請求項７に記載のシステム。
【請求項９】
前記センサはジャイロスコープである、請求項７に記載のシステム。
【請求項１０】
集積回路内の複数の構成要素のうちの第１の構成要素に、前記複数の構成要素のうちの残り部分が電源切断されている間に電源供給することであって、前記第１の構成要素を含む前記複数の構成要素は、前記集積回路に集積される、ことを含み、
前記複数の構成要素のうちの前記残り部分が電源切断されている間に、前記第１の構成要素が：
前記第１の構成要素内のセンサキャプチャ回路及び前記第１の構成要素内のメモリを使用して、前記集積回路に接続された少なくとも１つのセンサからセンサデータのＮ個のサンプルをキャプチャして、前記センサキャプチャ回路によりキャプチャされた前記サンプルを格納することであって、Ｎは正の整数であり、前記第１の構成要素のプロセッサは、前記キャプチャ中は、電源切断されている、こと、
前記Ｎ個のサンプルのキャプチャに応じて、前記プロセッサに電源投入すること、
前記第１の構成要素内のプロセッサによって、前記メモリにキャプチャされたセンサデータの前記Ｎ個のサンプルを処理すること、
前記キャプチャされたセンサデータの前記Ｎ個のサンプル中の所定の状態を検出するのに応じて、前記複数の構成要素のうちの残り部分に電源投入すること、
前記キャプチャされたセンサデータの前記Ｎ個のサンプルが前記メモリの閾値レベルに到達するのに応じて、メモリコントローラと前記第１の構成要素から前記メモリコントローラへの通信経路とに電源投入すること、及び
前記Ｎ個のサンプルを前記メモリから前記メモリコントローラによって制御される第２のメモリに書き込むことであって、前記複数の構成要素のうちの１つは、前記第２のメモリにキャプチャされたセンサデータを処理するように構成された中央処理装置（ＣＰＵ）プロセッサを含み、前記書き込むことは、前記第１の構成要素によって実行され、且つ、前記キャプチャされたセンサデータの前記Ｎ個のサンプルが前記メモリの閾値レベルに到達するのに応じて、前記ＣＰＵプロセッサが電源切断されたままの間に実行される、こと、
を実行することを含む、
方法。
【請求項１１】
前記処理することは、キャプチャされたセンサデータの前記Ｎ個のサンプルをフィルタリングすることを含む、請求項１０に記載の方法。
【請求項１２】
前記第１の構成要素は、複数の電力状態で動作するように構成され、前記キャプチャすることは、前記複数の電力状態のうちの第１の電力状態で生じ、前記フィルタリングすることは、前記複数の状態のうちの第２の電力状態で生じ、前記方法は、
フィルタリングのために、キャプチャされたセンサデータの前記Ｎ個のサンプルの準備が整っていることを検出することと、
前記検出することに応じて、前記第１の電力状態から前記第２の電力状態へ移行することと、を更に含む、請求項１１に記載の方法。
【請求項１３】
前記第１の構成要素は、アイドル時に第３の電力状態で動作するように更に構成され、前記方法は、
キャプチャのためにセンサデータの前記Ｎ個のサンプルの準備が整っていることを検出することと、
前記検出することに応じて、前記第３の電力状態から前記第１の電力状態へ移行することと、を更に含む、請求項１２に記載の方法。
【請求項１４】
前記第１の電力状態は、前記センサキャプチャ回路がアクティブであり、前記プロセッサが非アクティブであることを含み、前記第２の電力状態への移行は、前記フィルタリングを実行するために前記プロセッサをアクティブ化させることを含む、請求項１２に記載の方法。
【請求項１５】
前記第３の電力状態は、前記プロセッサ及び前記センサキャプチャ回路が非アクティブであることを含み、前記第１の電力状態への移行は、前記センサキャプチャ回路をアクティブ化させることを含む、請求項１３に記載の方法。
【請求項１６】
前記センサデータの前記キャプチャを完了することに応じて、前記第１の電力状態から前記第３の電力状態へ移行することを更に含む、請求項１３に記載の方法。
【請求項１７】
前記フィルタリングを完了することに応じて、前記第２の電力状態から前記第１の電力状態及び前記第３の電力状態のうちの一方へ移行することを更に含む、請求項１３に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
（技術分野）
【０００２】
本明細書に記述する実施形態は、システムオンチップ（ＳＯＣ）の分野に関し、特に、ＳＯＣ内の常時オンブロックに関する。
（関連技術の説明）
【０００３】
今日では、各種の電子デバイスが、消費者に日常的に使用されている。特にモバイルデバイスが普及してきている。モバイルデバイスとしては、携帯電話、携帯情報端末（ＰＤＡ）、電話機能と各種のＰＤＡ機能及び／又は汎用アプリケーションサポートなどの他のコンピューティング機能とを組み合わせたスマートフォン、タブレット、ラップトップ、ネットトップ、スマートウォッチ、ウェアラブル電子機器などが挙げられる。概して、モバイルデバイスは、ユーザにより携帯されたり、ユーザにより着用されたりするように設計された任意の電子デバイスであり得る。モバイルデバイスは、一般的に、コンセントなどの一定の電源から離れて動作し得るようにバッテリにより電源供給される。
【０００４】
多くのモバイルデバイスは、殆どの時間、「スタンバイ」モードで動作し得る。スタンバイモードでは、デバイスは、ユーザのための内容をアクティブに表示していないので、及び／又はユーザのための機能をアクティブに実行していないので、「オフ」であるように見え得る。スタンバイモードでは、かなりのデバイスは、実際に電源オフされ得る。しかし、バックグラウンドでは、デバイスは電話呼び出し又はネットワークパケットを待ち、アラームを確認し、動きに反応するなどし得る。
【０００５】
モバイルデバイスは、しばしば、限られた電源（例えばバッテリ）により動作しているため、デバイスにとって省エネルギーが重要な設計要点となる。システムオンチップ（ＳＯＣ）の搭載は、デバイスに必要とされるかなりの機能をＳＯＣ内に搭載できるので、省エネルギーを支援することができる。「スタンバイ」モード及び他の低電力モードでは、リーク電流損失を解消するためにＳＯＣを電源切断することが望ましく、リーク電流損失は、最新の集積回路技術におけるエネルギー消費の重要なファクタである。一方、ＳＯＣは、上述したスタンバイ機能のうちの幾つかのために必要とされる。
【発明の概要】
【０００６】
ある実施形態では、ＳＯＣは、ＳＯＣの残り部分が電源オフされている時に、電源供給されたままである構成要素を含む。構成要素は、各種のデバイスセンサからデータをキャプチャするように構成されたセンサキャプチャユニットを含み得る。キャプチャされたセンサデータは、構成要素内のメモリにバッファリングされ得る。構成要素はプロセッサを更に含み得、プロセッサは、幾つかの実施形態では、キャプチャされたセンサデータをフィルタリングし、デバイスによる更なる処理の必要性を示し得るパターンを探索し得る。更なる処理の必要性が検出された場合、構成要素は、処理を可能にするためにＳＯＣの残り部分をスリープ解除し得る（すなわち、電源投入及び再プログラミングを生じさせ得る）。電力／エネルギー消費は、幾つかの実施形態では、デバイスがアクティブに使用されていない時に、センサデータのキャプチャをサポートしながら低減され得る。例えば、集積回路上に構成要素を組み込むことにより得られ得る電力／エネルギー効率が、センサデータキャプチャをサポートしながら実現され得る。構成要素は、ＳＯＣの他の構成要素のためのプログラミング可能な設定データを、スリープ解除後にそれらを再プログラミングするために格納し得る。プログラミング可能な設定データは、（構成要素が電源供給されたままでありながら）ＳＯＣが直近に電源切断されたときの構成要素の状態に合致してもよく、スリープ解除のために望まれる異なる状態でもよい。
【０００７】
幾つかの実施形態では、構成要素は、データをメモリに書き込み及び／又はメモリから読み出すために、ＳＯＣ内のメモリコントローラ及びメモリコントローラへの経路の両方をスリープ解除するように構成され得る。ＳＯＣの残り部分は、電源切断されたままであり得る。このようにして、構成要素は、転送を可能にするために、他の構成要素（例えば、中央処理装置（ＣＰＵ）の１つ以上のプロセッサを含む）をウェイクさせずに、データ（例えばセンサデータ）を格納するためにより大きなメインメモリを利用し得る。電力／エネルギー消費は、必要とされる構成要素のみが電源投入されるため低減され得る。
【０００８】
幾つかの実施形態では、プログラミング可能な設定データの保存及び構成要素からのデータの復元は、ＳＯＣの電源切断（例えばスリープ）状態から再び電源投入するときの待ち時間を短縮させ得る。幾つかの実施形態では、１つの状態（例えば、構成要素内のプロセッサがアウェイクしている一方で、ＳＯＣがスリープしている）でのデータの処理は、より高い電力／パフォーマンス状態がほどなく必要とされ得るという推測を生じさせ得る。ＳＯＣは、その状態へ推測的に移行し得、よって、推測が精確である場合にはアウェイクさせるための待ち時間を更に短くし得る。
【０００９】
以下の詳細な説明は、次に簡単に記述する添付の図面を参照する。
【図面の簡単な説明】
【００１０】
【図１】ＳＯＣの一実施形態のブロック図である。
【図２】ＳＯＣ内の常時オンブロックの一実施形態のブロック図である。
【図３】図２に示す常時オンブロックのための状態マシンの一実施形態のブロック図である。
【図４】図２に示す常時オンブロックのための状態マシンの別の実施形態のブロック図である。
【図５】ブート中又は設定変更中にＳＯＣ内のＣＰＵ上で動作するソフトウェアの一実施形態の動作を例示するフローチャートである。
【図６】図２に示す常時オンブロックの一実施形態の再設定中の動作のフローチャートである。
【図７】メモリオンリー通信状態にあるＳＯＣの一実施形態のブロック図である。
【図８】再設定手法を使用する一実施形態のための待ち時間短縮のブロック図である。
【図９】待ち時間短縮のための推測的なスリープ解除の一実施形態のブロック図である。
【図１０】図１に示すＳＯＣを含むシステムの一実施形態のブロック図である。
【図１１】コンピュータアクセス可能な記憶媒体の一実施形態のブロック図である。
【００１１】
この開示に記述する実施形態には、各種の変更形態及び代替形態の余地があり得るが、その具体的な実施形態を例として図面に示し、本明細書で詳細に記述する。しかし、図面及び図面に関する詳細な説明は、開示する特定の形態に実施形態を限定することを意図しておらず、むしろその意図は、添付の請求項の主旨及び範囲に含まれる全ての変更形態、等価形態、及び代替形態を網羅することであると理解されるべきである。本明細書で使用する見出しは、構成を目的とするにすぎず、説明の範囲を限定するために使用することを意図していない。この出願を通して使用するとき、「〜し得る（may）」という語は、義務的な意味（すなわち、〜しなければならない（must）を意味する）ではなく、許容的な意味（すなわち、〜する可能性を有することを意味する）で使用される。同様に、単語「含む（include）」、「含む（including）」及び「含む（includes）」は、何かを含むことを意味するが、その何かに限定されることを意味していない。
【００１２】
各種のユニット、回路、又は他の構成要素は、１つ以上のタスクを実行「するように構成される（configured to）」と記述され得る。このような文脈において、「〜するように構成される」は、動作中に１つ以上のタスクを実行する「回路を有する」ことを概ね意味する構造を広く記載するものである。よって、ユニット／回路／構成要素は、ユニット／回路／構成要素が現在動作していなくても、タスクを実行するように構成され得る。概して、「〜するように構成される」に対応する構造を形成する回路は、ハードウェア回路を含み得る。同様に、各種のユニット／回路／構成要素は、説明の便宜上、１つ以上のタスクを実行すると記述され得る。このような説明は、「〜するように構成される」というフレーズを含むものと解釈されるべきである。１つ以上のタスクを実行するように構成されるユニット／回路／構成要素の記載は、そのユニット／回路／構成要素について米国特許法第１１２条第６項の解釈を援用しないことを明示的に意図している。
【００１３】
この明細書は、「一実施形態」又は「ある実施形態」に対する参照を含む。特徴の任意の組合せを含む実施形態が概して企図されるが、本明細書で明示的に否定しない限り、「一実施形態で」又は「ある実施形態で」のフレーズの形態は、必ずしも同じ実施形態を意味していない。特定の機能、構造又は特性は、この開示と整合する任意の好適な方法で組み合わされ得る。
【発明を実施するための形態】
【００１４】
次に図１に移ると、メモリ１２、少なくとも１つのセンサ２０、及び電源管理ユニット（ＰＭＵ）１５６に接続されたＳＯＣ１０の一実施形態のブロック図が示される。名前により暗示されるように、ＳＯＣ１０の構成要素は、集積回路「チップ」としての単一の半導体基板上に集積され得る。幾つかの実施形態では、構成要素は、システム内の２つ以上の個別のチップ上に実装され得る。しかし、本明細書では、ＳＯＣ１０を例として使用する。例示する実施形態では、ＳＯＣ１０の構成要素は、中央処理装置（ＣＰＵ）コンプレックス１４、「常時オン」構成要素１６、周辺構成要素１８Ａ〜１８Ｂ（より短く、「周辺装置」）、メモリコントローラ２２、電源マネージャ（ＰＭＧＲ）３２、及び通信ファブリック２７を含む。構成要素１４、１６、１８Ａ〜１８Ｂ、２２、及び３２は、全て通信ファブリック２７に接続され得る。メモリコントローラ２２は、使用中にメモリ１２に接続され得る。ＰＭＧＲ３２及び常時オン構成要素１６は、ＰＭＵ１５６に接続され得る。ＰＭＵ１５６は、各種の電源電圧をＳＯＣ、メモリ１２、及び／又はセンサ２０に供給するように構成され得る。常時オン構成要素１６は、センサ２０に接続され得る。例示する実施形態では、ＣＰＵコンプレックス１４は、１つ以上のプロセッサ（図１のＰ３０）を含み得る。プロセッサ３０は、ＳＯＣ１０のＣＰＵ（単数又は複数）を形成し得る。
【００１５】
常時オン構成要素１６は、ＳＯＣ１０の他の構成要素（例えば、ＣＰＵコンプレックス１４、周辺装置１８Ａ〜１８Ｂ、及びＰＭＧＲ３２）が電源切断されている時に、電源投入されたままであるように構成され得る。特に、常時オン構成要素１６は、ＳＯＣ１０がＰＭＵ１５６から電力を受けているときは常にオンであり得る。よって、常時オン構成要素は、ＳＯＣ１０が電力を受けている場合（例えば、ＳＯＣ１０を含むデバイスがスタンバイモードにあるとき、又はアクティブに動作しているとき）に電源供給され得るが、ＳＯＣ１０が電力を受けていないとき（例えば、デバイスの電源が完全に切られているとき）には電源供給され得ないという意味で「常時オン」である。常時オン構成要素１６は、ＳＯＣ１０の残り部分がオフである間に特定の機能をサポートし、低電力動作を可能にし得る。
【００１６】
図１では、常時オン構成要素１６を他の構成要素から隔てる点線２４が、常時オン構成要素１６のための独立したパワードメインを示し得る。同様に、例示する実施形態では、点線２６が、メモリコントローラ２２のための独立したメモリコントローラパワードメインを表し得る。他の構成要素、構成要素の群、及び／又は下位構成要素もまた独立したパワードメインを有し得る。概して、パワードメインは、他のパワードメインから独立して、供給電圧を受けたり（すなわち電源オンされたり）、供給電圧を受けなかったり（すなわち電源オフされたり）するように構成され得る。幾つかの実施形態では、複数のパワードメインが、様々な大きさの供給電圧を同時に供給され得る。独立性は、各種のやり方でもたらされ得る。例えば、独立性は、ＰＭＵ１５６からの別個の供給電圧入力を設けることによって、供給電圧入力と構成要素の間に電源スイッチを設け、ユニットとしての所与のドメインのための電源スイッチを制御することによって、及び／又は上記の組合せによってもたらされ得る。図１に例示するよりも多くのパワードメインもまた存在し得る。例えば、ＣＰＵコンプレックス１４は、ある実施形態では、独立したパワードメインを有し得る（各ＣＰＵプロセッサ３０もまた独立したパワードメインを有し得る）。ある実施形態では、１つ以上の周辺構成要素１８Ａ〜１８Ｂが、１つ以上の独立したパワードメイン内にあり得る。
【００１７】
図１に例示するように、常時オン構成要素１６は、少なくとも１つのセンサ２０に接続され得る（及び複数のセンサ２０に接続され得る）。常時オン構成要素１６は、（ＳＯＣ１０が電源オンされるときに加えて、）ＳＯＣ１０が電源オフされている間にセンサ２０からセンサデータを読み取るように構成され得る。常時オン構成要素１６は、センサデータをバッファリングするためのメモリ（図１には示さない）を含み得、ＳＯＣ１０の残り部分は、メモリ（又はセンサデータを格納するために割り当てられたその一部分）がデータでフルにならない（又は満杯状態の閾値レベルに到達しない）限り、電源投入される必要がない。幾つかの実施形態では、常時オン構成要素１６は、幾つかのやり方でセンサデータを処理するようにもまた構成され得る。例えば、常時オン構成要素１６は、センサデータをフィルタリングするように構成され得る。データのフィルタリングは、概して、ＣＰＵコンプレックス１４内のプロセッサによりセンサデータが更に処理されるべきであることを示すパターン若しくは他のデータ特性を探索すること、データ中のノイズを検出／除去するためにデータを操作すること、誤った肯定的な整合を解消するためにパターン若しくは他の特性に整合するように見えるデータを更に処理することなどのうちの１つ以上を意味し得る。
【００１８】
センサ２０は、センサを含むデバイスの物理的環境の態様を検出又は測定するように構成される任意のデバイスであり得る。例えば、センサは、デバイスの加速度を測定する加速度計を含み得る。加速度計は、方向式（所定の方向の加速度を測定する）又はベクトル式（多次元の加速度を測定し、加速度及びその方向を示すベクトルを生成する）であり得る。複数の方向式加速度計は、加速度ベクトル検知とともに加速度方向検知を可能にするために用いられ得る。センサの別の例は、ジャイロスコープ（又はジャイロ）であり得る。ジャイロスコープは、デバイスの向き及び／又は向きの変化を検出するために使用され得る。加速度計と同様に、ジャイロスコープは、方向式又は多次元式であり得、及び／又は多方向式ジャイロスコープが使用され得る。また別のセンサは磁力計であり得、それは、磁性配向を測定するために使用され得、よってコンパスを形成するために使用され得る。他の実施形態では、コンパス機能は、センサ内に組み込まれ得る。別のセンサは、音声検出器（例えばマイク）であり得る。音声検出器は、音をキャプチャし、音を示すデータを生成し得る。別のセンサは、光又は他の電磁エネルギーを検出する光検出器であり得る。他の例示的なセンサは、高度を検出するための高度計、温度センサ、及び／又は圧力センサを含み得る。また別のセンサは、ボタン、タッチスクリーン、キーボード、ポインティングデバイス、カメラなどのユーザインタフェースデバイスであり得る。センサの任意の集合が用いられ得る。
【００１９】
上述したように、常時オン構成要素１６は、構成要素内のメモリにデータをバッファリングするように構成され得る。バッファがフルに近くなると、常時オン構成要素１６は、センサデータをメモリ１２に書き込むためにメモリコントローラ２２をウェイクさせるように構成され得る。幾つかの実施形態では、常時オン構成要素１６は、データのフィルタリング結果をメモリ１２に書き込むように構成され得る。幾つかの実施形態では、常時オン構成要素１６は、ＳＯＣ１０の残り部分が電源切断されている間に他の処理タスクを実行し得る。これらのタスクがメモリ１２にアクセスする程度まで、常時オン構成要素１６は、メモリコントローラ２２をウェイクさせるように構成され得る。加えて、常時オン構成要素１６は、通信ファブリック２７の少なくとも一部分（すなわち、常時オン構成要素１６をメモリコントローラ２２に接続する部分）をウェイクさせるように構成され得る。
【００２０】
このメモリオンリー通信モードを使用して、常時オン構成要素１６は、メモリ１２にアクセスし得、ＳＯＣ１０の残り部分が電源切断されたままであるので、比較的少ない量のエネルギー／電力を費やしながら、メモリ１２内で利用可能な著しい記憶領域を利用し得る。常時オン構成要素１６は、メモリコントローラ２２のためのプログラミング可能な設定データを格納し得るので、常時オン構成要素１６は、電力が復元するとメモリコントローラ２２をプログラミングし得る。つまり、常時オン構成要素１６は、オペレーティングシステムがＳＯＣ１０を含むデバイスのブート中にメモリコントローラ２２をプログラミングするのと同様の方法で、メモリコントローラ２２をプログラミングするように構成され得る。常時オン構成要素１６により格納されるプログラミング可能な設定データは、一実施形態では、ＳＯＣ１０（常時オン構成要素１６を除く）が直近に電源切断されたときにメモリコントローラ２２内に存在していた設定データであり得る。別の実施形態では、プログラミング可能な設定データは、メモリコントローラ２２の任意の従前の設定及び／又はメモリ１２の任意の設定のために機能することが知られている設定であり得る。既知の良好な設定は、例えば、常時オン構成要素１６によるメモリアクセスのパフォーマンスにおいて許容できる設定であり得る。
【００２１】
常時オン構成要素１６が電源供給されたままの状態でＳＯＣ１０が電源切断されるとき、電源切断シーケンスの一部分は、メモリ１２を保持モードにすることであり得る。例えば、メモリ１２がダイナミックランダムアクセスメモリ（ＤＲＡＭ）である実施形態の場合、保持モードは「セルフリフレッシュ」モードであり得る。保持モードでは、メモリ１２は、モードが変更されるまで、外部的にアクセス不能であり得る。しかし、メモリ１２の内容は保存され得る。例えば、セルフリフレッシュモードでは、ＤＲＡＭは、データを保持するために必要とされる周期的なリフレッシュを実行し得る（通常は、メモリコントローラ２２が電源オンされる時に、メモリコントローラ２２により実行される）。
【００２２】
幾つかの実施形態では、常時オン構成要素１６は、ＳＯＣ１０内の他の構成要素のためのプログラミング可能な設定データを更に格納し得る。プログラミング可能な設定データは、ＳＯＣ１０の残り部分が直近に電源切断されたときの構成要素の状態を反映し得る。常時オン構成要素１６は、ＳＯＣ１０を処理のためにウェイクさせるように構成され得、格納されたプログラミング可能な設定データを用いて構成要素を再プログラミングし得る。格納されたプログラミング可能な設定データに基づいて構成要素に対する状態を復元する処理は、再設定と称され得る。再び、上で議論したメモリオンリー通信モードと同様に、構成要素に対して復元される状態は、構成要素が直近に電源切断されたときの状態であってもよく、又はＳＯＣ１０を動作のために復元するための許容できるパフォーマンスを有する既知の良好な状態であってもよい。後者の場合、状態は、再設定が完了した後に、より高いパフォーマンス状態に変更され得る。
【００２３】
常時オン構成要素１６の再設定機能を使用した状態の復元は、ＳＯＣ１０の電力を復元し、コールドブートと同様の方法でＳＯＣ１０及びオペレーティングシステムを初期化するよりも短い待ち時間動作となり得る。常時オン構成要素１６を用いない初期化中、オペレーティングシステムは、システム状態がメモリ１２に格納された状態でＳＯＣ１０が従前に電源切断され、幾つかの初期化動作を迂回したことを発見した。しかし、復元の待ち時間は、所望されるよりも長かった。以下では、一実施形態の追加詳細がより詳細に議論される。
【００２４】
常時オン構成要素１６は、ＰＭＵ１５６に対するＰＭＧＲ３２の通信に加えて、ＰＭＵ１５６と通信するように構成され得る。ＰＭＵ１５６と常時オン構成要素１６の間のインタフェースは、ＰＭＧＲ３２が電源切断される時に、常時オン構成要素１６が構成要素（例えば、メモリコントローラ２２、又はＳＯＣ１０の他の構成要素）を電源投入させることを可能にし得る。インタフェースは、常時オン構成要素１６がそれ自体の電力状態を制御することもまた可能にし得る。
【００２５】
概して、構成要素は、電源オンされる又は電源オフされると称され得る。構成要素は、設計されたように動作し得るように、供給電圧を受けている場合に電源オンされ得る。構成要素は、電源オフされる場合に、供給電圧を受けておらず、動作していない。構成要素は、電源オンされる場合に電源投入されるとも称され得、電源オフされる場合に電源切断されるとも称され得る。構成要素の電源投入は、電源オフされている構成要素に供給電圧を供給することを意味し得、構成要素の電源切断は、構成要素への供給電圧の供給を終了することを意味し得る。同様に、任意の下位構成要素及び／又はＳＯＣ１０の全体は、電源投入される／電源切断されるなどと称され得る。構成要素は、ＳＯＣ１０内の指定された機能を提供し、ＳＯＣ１０の残り部分に対する特定のインタフェースを有する、回路の予め定められたブロックであり得る。よって、常時オン構成要素１６、周辺装置１８Ａ〜１８Ｂ、及びＣＰＵコンプレックス１４、メモリコントローラ２２、並びにＰＭＧＲ３２は、それぞれ構成要素の例であり得る。
【００２６】
構成要素は、電源投入されクロックゲートされていない場合、アクティブであり得る。よって、例えば、ＣＰＵコンプレックス１４内のプロセッサは、アクティブである場合、命令実行のために利用可能であり得る。構成要素は、電源オフされている場合、又は命令が実行され得る前に著しい遅延が経験され得る別の低電力状態にある場合に、非アクティブであり得る。例えば、構成要素は、位相ロックループ（ＰＬＬ）のリセット又は再ロックを必要とする場合、電源供給されたままでも非アクティブであり得る。構成要素は、クロックゲートされている場合、非アクティブであり得る。クロックゲートは、構成要素内のデジタル回路へのクロックが一時的に「電源を切られ」、フロップ、レジスタなどのクロック制御される記憶デバイス内のデジタル回路から状態がキャプチャされることを妨げる技術を意味し得る。
【００２７】
上述したように、ＣＰＵコンプレックス１４は、ＳＯＣ１０のＣＰＵとして機能する１つ以上のプロセッサ３０を含み得る。システムのＣＰＵは、オペレーティングシステムなどの、システムの主制御ソフトウェアを実行するプロセッサ（単数又は複数）を含む。概して、使用中にＣＰＵにより実行されるソフトウェアは、システムの所望の機能を実現するために、システムの他の構成要素を制御し得る。プロセッサは、アプリケーションプログラムなどの他のソフトウェアも実行し得る。アプリケーションプログラムは、ユーザ機能を提供し得、低レベルデバイス制御、スケジューリング、メモリ管理などについてオペレーティングシステムに依存し得る。したがって、プロセッサは、アプリケーションプロセッサとも称され得る。ＣＰＵコンプレックス１４は、Ｌ２キャッシュ及び／又はシステムの他の構成要素に対するインタフェース（例えば、通信ファブリック２７に対するインタフェース）などの他のハードウェアを更に含み得る。
【００２８】
動作点は、電源電圧の大きさと、ＣＰＵコンプレックス１４、常時オン構成要素１６、ＳＯＣ１０の他の構成要素などの動作周波数との組合せを意味し得る。動作周波数は、構成要素をクロック制御するクロックの周波数であり得る。動作周波数は、クロック周波数又は単に周波数とも称され得る。動作点は、動作状態又は電力状態とも称され得る。動作点は、常時オン構成要素１６に格納され、再設定が生じるときに構成要素内に再プログラミングされ得る、プログラミング可能な設定データの一部分であり得る。
【００２９】
概して、プロセッサは、プロセッサにより実装される命令セットアーキテクチャ内に定義された命令を実行するように構成された任意の回路及び／又はマイクロコードを含み得る。プロセッサは、システムオンチップ（ＳＯＣ１０）又は他の集積化レベルとして他の構成要素とともに集積回路上に実装されるプロセッサコアを包含し得る。プロセッサは、別個のマイクロプロセッサ、マルチチップモジュール実装内に集積化されるプロセッサコア及び／又はマイクロプロセッサ、複数の集積回路として実装されるプロセッサなどを更に包含し得る。
【００３０】
メモリコントローラ２２は、概して、ＳＯＣ１０の他の構成要素からメモリ操作を受信し、メモリ操作を完了するためにメモリ１２にアクセスするための回路を含み得る。メモリコントローラ２２は、任意の種類のメモリ１２にアクセスするように構成され得る。例えば、メモリ１２は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４など）ＤＲＡＭを含むシンクロナスＤＲＡＭ（ＳＤＲＡＭ）などのダイナミックＲＡＭ（ＤＲＡＭ）であり得る。ＤＤＲ  ＤＲＡＭの低電力／モバイルバージョン（例えば、ＬＰＤＤＲ、ｍＤＤＲなど）がサポートされ得る。メモリコントローラ２２は、操作を順序付けし（及び場合によっては再順序付けし）、メモリ１２へ操作を提示するための、メモリ操作用の待ち行列を含み得る。メモリコントローラ２２は、メモリへの書き込みを待っている書き込みデータ、及びメモリ操作の送信元への返送を待っている読出しデータを格納するためのデータバッファを更に含み得る。幾つかの実施形態では、メモリコントローラ２２は、最近アクセスされたメモリデータを格納するためのメモリキャッシュを含み得る。ＳＯＣ実装形態では、例えば、メモリキャッシュは、データがほどなく再びアクセスされると予想される場合、メモリ１２からのデータの再アクセスを回避することによって、ＳＯＣ内の電力消費を低減させ得る。幾つかの場合、メモリキャッシュは、Ｌ２キャッシュ又はプロセッサ内のキャッシュなど特定の構成要素のみに役立つプライベートキャッシュとは異なり、システムキャッシュとも称され得る。加えて、幾つかの実施形態では、システムキャッシュはメモリコントローラ２２内に位置する必要がない。
【００３１】
周辺装置１８Ａ〜１８Ｂは、ＳＯＣ１０内に含まれる追加ハードウェア機能の任意の集合であり得る。例えば、周辺装置１８Ａ〜１８Ｂは、カメラ若しくは他の画像センサからの画像キャプチャデータを処理するように構成された画像信号プロセッサなどの映像周辺装置、１つ以上の表示デバイスに映像データを表示するように構成された表示コントローラ、グラフィック処理ユニット（ＧＰＵ）、映像エンコーダ／デコーダ、スケーラ、ローテータ、ブレンダなどを含み得る。周辺装置は、マイク、スピーカ、マイク及びスピーカに対するインタフェース、音声プロセッサ、デジタル信号プロセッサ、ミキサなどの音声周辺装置を含み得る。周辺装置は、ユニバーサルシリアルバス（ＵＳＢ）、ＰＣＩエクスプレス（ＰＣＩｅ）を含むペリフェラルコンポーネント相互接続（ＰＣＩ）、シリアルポート及びパラレルポートなどのインタフェースを含む、ＳＯＣ１０（例えば周辺装置１８Ｂ）の外部の各種のインタフェースのためのインタフェースコントローラを含み得る。周辺装置は、メディアアクセスコントローラ（ＭＡＣ）などのネットワーク用周辺装置を含み得る。ハードウェアの任意の集合が含まれ得る。
【００３２】
通信ファブリック２７は、ＳＯＣ１０の構成要素間で通信するための任意の通信相互接続及び通信プロトコルであり得る。通信ファブリック２７は、共有バス構成、クロスバー構成、及びブリッジを有する階層化バスを含むバスベースであり得る。通信ファブリック２７は、またパケットベースであり得、ブリッジを有する階層構造、クロスバー、ポイントツーポイント、又は他の相互接続であり得る。
【００３３】
ＰＭＧＲ３２は、ＰＭＵ１５６から要求される供給電圧の大きさを制御するように構成され得る。ＳＯＣ１０のためにＰＭＵ１５６により発生される複数の供給電圧が存在し得る。例えば、図１には、ＶCPU及びＶSOCが例示される。ＶCPUは、ＣＰＵコンプレックス１４のための供給電圧であり得る。ＶSOCは、概して、ＣＰＵコンプレックス１４の外側にあるＳＯＣ１０の残り部分のための供給電圧であり得る。例えば、他の構成要素のためのＶSOCに加えて、メモリコントローラのパワードメイン及び常時オンパワードメインのための別の供給電圧が存在し得る。別の実施形態では、ＶSOCは、メモリコントローラ２２、常時オン構成要素１６、及びＳＯＣ１０の他の構成要素に役立ち得、パワーゲート（登録商標）は、パワードメインに基づいて用いられ得る。幾つかの実施形態では、ＳＯＣ１０の残り部分のための複数の供給電圧が存在し得る。幾つかの実施形態では、ＣＰＵコンプレックス１４内及び／又はＳＯＣ１０内の各種のメモリアレイのためのメモリ供給電圧も存在し得る。メモリ供給電圧は、ロジック回路に供給される電圧（例えばＶCPU又はＶSOC）とともに使用され得、ロバストなメモリ操作を確実にするために必要とされるよりも低い電圧を有し得る。ＰＭＧＲ３２は、ソフトウェアの直接制御下にあり得（例えば、構成要素の電源投入及び／又は電源切断をソフトウェアが直接要求し得る）、及び／又は、ＳＯＣ１０を監視し、各種の構成要素が電源投入又は電源切断されるべき時を決定するように構成され得る。
【００３４】
ＰＭＵ１５６は、概して、供給電圧を発生させ、それらの供給電圧をＳＯＣ１０、メモリ１２（図１のＶMEM）、ディスプレイデバイス、画像センサ、ユーザインタフェースデバイスなどの各種のオフチップ周辺構成要素（図１には示さない）などのシステムの他の構成要素に提供するための回路を含み得る。ＰＭＵ１５６は、よって、プログラミング可能な電圧レギュレータ、ＳＯＣ１０、特に、電圧要求などを受信するためにＰＭＧＲ３２に対してインタフェースするためのロジックを含み得る。
【００３５】
ＳＯＣ１０の構成要素の数（及びＣＰＵコンプレックス１４内などの、図１に示すもののための下位構成要素の数）が実施形態によって異なり得ることに留意されたい。各構成要素／下位構成要素の数は、図１に示すよりも多くても少なくてもよい。
【００３６】
次に図２に移ると、常時オン構成要素１６の一実施形態のブロック図が示される。例示する実施形態では、常時オン構成要素１６は、プロセッサ４０、メモリ４２、センサキャプチャモジュール（ＳＣＭ）４４、ＳＯＣ再設定回路４６、ローカルＰＭＧＲ４８、及び相互接続５０を含み得る。プロセッサ４０、メモリ４２、ＳＣＭ４４、ＳＯＣ再設定回路４６、及びローカルＰＭＧＲ４８は、相互接続５０に接続され得る。ＳＣＭ４４は、センサキャプチャユニット又はセンサキャプチャ回路とも称され得る。
【００３７】
センサキャプチャモジュール４４は、ＳＯＣ１０がシステムに搭載されるときにセンサ２０に接続され得、センサ２０からデータをキャプチャするように構成され得る。例示する実施形態では、センサキャプチャモジュール４４は、キャプチャされたセンサデータ（ＳＣＭデータ５２）をメモリ４２に書き込むように構成され得る。メモリ４２は、例えばＳＲＡＭであり得る。しかし、他の実施形態では、任意の種類のメモリが使用され得る。
【００３８】
ＳＣＭデータ５２は、キャプチャされたセンサデータを格納するために常時オン構成要素１６により予め割り当てられる領域に格納され得る。領域が消費されるので、キャプチャされたデータを格納するために利用可能なメモリの量が減少する。センサキャプチャモジュール４４は、割り当てメモリ領域の満杯状態の透かし又は他の表示（概して、例えば「閾値」）を用いてプログラミングされ得、センサキャプチャモジュール４４は、キャプチャされたセンサデータをメモリ１２に書き込むために、メモリコントローラ２２をウェイクさせるように構成され得る。代わりに、プロセッサ４０は、キャプチャされたセンサデータをメモリ１２に書き込むように構成されてもよい。このような場合、センサキャプチャモジュール４４は、プロセッサ４０をウェイクさせるように構成され得る。
【００３９】
プロセッサ４０は、メモリ４２に格納されたコード（プロセッサコード／データ５４）を実行するように構成され得る。コードは、実行されると、プロセッサ４０に各種の機能を実施させる一連の命令を含み得る。例えば、コードは、上で議論したようにＳＣＭデータ５２をフィルタリングするためにプロセッサ４０により実行され得るフィルタコードを含み得る。所望のパターン又は他のデータ属性（単数又は複数）をＳＣＭデータ５２中に検出することに応じて、プロセッサ４０は、メモリ１２を更新するためにメモリコントローラ２２をウェイクさせるように、及び／又はＳＯＣ１０をウェイクさせるように構成され得る。
【００４０】
プロセッサコード／データ５４は、ＳＯＣ１０を含むデバイスがブートされると初期化され得る。コードは、ＳＯＣ１０上又はデバイス内の何処かにある不揮発性メモリに格納され得、例えば、メモリ４２にロードされ得る。幾つかの実施形態では、リードオンリーメモリ（ＲＯＭ）などのローカルの不揮発性メモリも使用され得る。
【００４１】
ある実施形態では、プロセッサ４０は、ＣＰＵコンプレックス１４内のＣＰＵプロセッサ３０よりも小さく、電力効率が高いプロセッサであり得る。よって、プロセッサ４０は、ＣＰＵプロセッサ３０が消費するよりも少ない電力をアクティブ時に消費し得る。ある実施形態では、ＣＰＵプロセッサ３０が存在するよりも少ないプロセッサ４０が存在し得る。
【００４２】
ＳＯＣ再設定回路４６は、電源オフ状態から戻る構成要素に電力供給することに応じて各種の構成要素を再プログラミングするために、メモリコントローラ２２及びＳＯＣ１０の他の構成要素のためのプログラミング可能な設定データ５６を格納するように構成され得る。代わりに、プログラミング可能な設定データ５６は、メモリ４２に又はメモリ４２とＳＯＣ再設定回路４６の組合せに格納されてもよい。設定データ５６は、例えば、対応する構成要素のプログラミングの一部分として、ＣＰＵプロセッサ３０により回路４６に書き込まれ得る。つまり、（例えば、デバイスのブートの一部として及び／又は設定が変更される他の時に、オペレーティングシステムソフトウェアを実行する）ＣＰＵプロセッサ３０は、データをＳＯＣ再設定回路４６に書き込み得る。代わりに、幾つかの実施形態では、ＳＯＣ再設定回路４６は、設定状態を監視及びシャドーウィングするハードウェアを有してもよい。幾つかの実施形態では、プログラミング可能な設定データ５６の少なくとも一部分は、予め定められ得、メモリ４２及び／又はＳＯＣ再設定回路４６に書き込まれるよりも、ＲＯＭなどの不揮発性メモリに格納され得る。
【００４３】
ある実施形態では、ＳＯＣ再設定回路４６は、ＳＯＣ１０が再び電源投入された後に、プログラミング可能な設定データ５６を処理し、ＳＯＣ１０内の対応する構成要素にデータを書き込むように構成されたロジック回路を含み得る。プログラミング可能な設定データ５６は、書き込まれるべき一連のレジスタアドレスと、それらのレジスタに書込むためのデータとを含み得る。幾つかの実施形態では、プログラミング可能な設定データ５６は、レジスタを読み出すための読出しコマンド、例えば、各種の書き込みにより実行された初期化が完了したこと及び／又は対応する状態が構成要素内で有効であることを示す予想値に対してのポーリングを更に含み得る。予想値は、読み出された値の全体でもよく、値の一部分でもよい（例えば、予想値は、値と、比較の前に読出し値に適用されるべきマスクとを含み得る）。幾つかの実施形態では、プログラミング可能な設定データ５６は、レジスタを読み出し、読出しデータの一部分を変更し、変更データをレジスタに書き戻すための読出し−変更−書き込みコマンドを更に含み得る。例えば、レジスタ値のどの部分を更新すべきであるかを判定するために第２のマスクが使用され得る。レジスタのうち第２のマスクによりマスクされた部分は、値がレジスタに書き込まれるときに更新され得ない。
【００４４】
別の実施形態では、ＳＯＣ再設定回路４６は、別のプロセッサと、プロセッサのためコードを格納する対応するメモリとを含み得る（又は、コードはメモリ４２に格納され得る）。コードは、プロセッサにより実行されると、プログラミング可能な設定データ５６を用いてＳＯＣ１０内の各種の構成要素をプロセッサに設定させ得る。コードは、上述したポーリング機能をコード自体の構造の一部として実施してもよく、プログラミング可能な設定データ５６は、上の議論と同様に、ポーリングするためのアドレス及び予想値を格納してもよい。別の実施形態では、プロセッサ４０は、ＳＯＣ１０の構成要素を再プログラミングするためにソフトウェアを実行し得る。
【００４５】
プログラミング可能な設定データ５６は、メモリコントローラ２２のためのデータ、ＳＯＣ１０の他の構成要素のための別のデータ、及び、プロセッサ４０が電源投入されるときにプロセッサ４０を再設定するための別のデータを含み得る。ＳＯＣ１０の残り部分が電源切断されている間に、メモリコントローラ２２が電源投入されると、メモリコントローラ２２のためのデータが処理され得る。データは、メモリコントローラ２２のためのプログラミング可能な設定データを含み得る。データは、ある実施形態では、追加のプログラミング可能な設定データを更に含み得る。例えば、通信ファブリック２７のためのプログラミング可能な設定データが含まれ得る。プログラミング可能な設定データは、常時オン構成要素１６とメモリコントローラ２２の間の通信に使用される全ての構成要素のために含まれ得る。ＳＯＣ１０の残り部分が電源投入される時に、他の構成要素のためのデータが処理され得る。同様に、プロセッサ４０が電源投入される時に、プロセッサ４０のためのプログラミング可能な設定データが処理され得る。
【００４６】
幾つかの実施形態では、ＳＯＣ再設定回路４６は、ＳＯＣ１０の電源投入の１つ以上の時点で、プログラミング可能な設定データをＳＯＣ１０の構成要素に提供するように構成され得る。例えば、幾つかのプログラミング可能な再設定データは、電源オンへの移行の初め近くで提供され得（例えば、電源電圧が安定化した直後）、他のプログラミング可能な再設定データは、電源オンへの移行の、より終わり近くで提供され得る。更に、幾つかの実施形態では、プログラミング可能な設定データ５６は、プログラミング可能な設定のうちＳＯＣ１０の構成要素内で確立されるべき一部分のみであり得る。プログラミング可能な設定の残り部分は、メモリ１２に格納され得る。例えば、ＣＰＵプロセッサ３０上で動作するオペレーティングシステムソフトウェアは、プログラミング可能な設定を電源切断の前にメモリ１２にキャプチャし得る。メモリ１２に格納されたプログラミング可能な設定データの復元は、ＣＰＵプロセッサ３０がリセットから解放され、実行を再開した後に、ＳＯＣ再設定回路４６、他のハードウェア、及び／又はオペレーティングシステムソフトウェアにより実行され得る。
【００４７】
ローカルＰＭＧＲ４８は、図１のＰＭＧＲ３２がＳＯＣ１０に対して行うのと全体として同様な方法で、常時オン構成要素１６内の電源管理機能を処理するように構成され得る。常時オン構成要素１６は、複数の電力状態をサポートし得、ローカルＰＭＧＲ４８は、それらの状態間の移行を支援し得る。ローカルＰＭＧＲ４８は、状態変化をサポートするとともに、各種の構成要素のスリープ解除又はスリープ投入の一部として、ＳＯＣ１０の各種の構成要素への供給電圧の提供を管理するために、ＰＭＵ１５６と通信するように構成され得る。
【００４８】
相互接続５０は、図２に示す各種の下位構成要素間で情報を送信するとともに、通信ファブリック２７を介してＳＯＣ１０の他の構成要素と通信するために、任意の相互接続を備え得る。相互接続は、各種の実施形態では、所望に応じて、図１に関して上で議論した通信ファブリック２７の例のいずれかを含み得る。
【００４９】
次に図３に移ると、常時オン構成要素１６の一実施形態で実装され得る状態マシンの一実施形態のブロック図が示される。例示する実施形態では、状態は、待機状態６０、キャプチャ状態６２、処理状態６４、メモリアクセス状態６６、及びＳＯＣオン状態６８を含む。状態間の移行が実線で例示され、可能な特定の追加的移行が点線で例示される。図３には、図面を煩雑にしないために、可能な移行の全ては例示されない。
【００５０】
図３に例示する状態は、相対的な電力／エネルギー消費の順序であり得、待機状態６０が最小電力状態であり、ＳＯＣオン状態６８が最大電力状態である。待機状態６０では、常時オン構成要素１６の下位構成要素は、パワーゲートされているか又はクロックゲートされているかのいずれかであり得る。例えば、ある実施形態では、プロセッサ４０はパワーゲートされ得、ＳＣＭ４４はクロックゲートされ得る。メモリ４２は保持モードでもよく、通常どおりに電源供給されてもよい。ＳＯＣ再設定回路４６及びローカルＰＭＧＲ４８は、クロックゲートされ得る。下位構成要素の間でクロックゲート及びパワーゲートの任意の組合せが使用され得る。
【００５１】
待機状態６０では、常時オン構成要素１６は、実質的にアイドルであり得る。状態マシンは、ＳＣＭ４４によりセンサ２０からのセンサデータのキャプチャの準備が整った時に、待機状態６０からキャプチャ状態６２へ移行し得る。一実施形態では、常時オン構成要素１６内のタイマ（例えば監視タイマ）（図２には明示的に示されない）が、待機状態６０からキャプチャ状態６２への移行を周期的に生じさせ得る。この場合、キャプチャのためのセンサデータが存在してもよく、存在しなくてもよい。一実施形態では、センサは、センサデータがキャプチャのために利用可能であることを示すために、常時オン構成要素１６への信号をアサートし得る。いずれの場合でも、キャプチャ状態６２への移行が実行され得る。
【００５２】
例示する実施形態では、状態マシンは、待機状態６０から処理状態６４へ直接的にも移行し得る。この移行は、（プロセッサ４０による）プロセッササポートが望まれることをセンサが常時オン構成要素１６にシグナリングするように構成される場合にサポートされ得る。信号は、信号を実施する実施形態の場合、センサデータが利用可能であることを示すための信号とは別であり得る。移行は、例えば、センサデータの高速処理（例えばフィルタリング）をサポートしてもよく、ＳＯＣ１０の高速スリープ解除（プロセッサ４０上で動作するソフトウェアにより管理され得る）が望まれる場合に使用されてもよい。例えば、デバイスと相互作用するユーザの望みを示すボタン又は他のユーザインタフェースデバイスが、ＳＯＣ１０の高速スリープ解除を生じさせるイベントとなり得る。プロセッサ４０が待機状態６０でパワーゲートされている場合、待機状態６０から処理状態６４への移行は、プロセッサ４０の電源投入、並びにプロセッサ４０のリセット及び初期化を含み得る。他の実施形態では、待機状態６０からの移行は、キャプチャ状態６２を通過するが、キャプチャ状態６２に留まり得ない。この実施は、プロセッサ４０のための僅かに長いスリープ解除時間によって複雑性を低下させ得る。
【００５３】
キャプチャ状態６２では、ＳＣＭ４４は、アクティブであり得、センサ２０のうちの１つ以上からデータをサンプリングし得る。ＳＣＭ４４は、キャプチャされたセンサデータ（ＳＣＭデータ５２）をメモリ４２に書き込み得る。ＳＣＭ４４は、キャプチャされたセンサデータに関連するタイムスタンプ、センサ識別子などの追加データ（ＳＣＭデータ５２）もメモリ４２に書き込み得る。任意の所望の追加データがメモリ４２に格納され得る。一実施形態では、タイムスタンプは、センサデータがセンサ２０により検知された時間であり得、それは、データがＳＣＭ４４によりキャプチャされる前であり得る。代わりに、タイムスタンプは、ＳＣＭ４４によるセンサデータキャプチャ時間であってもよい。
【００５４】
ＳＣＭ４４は、データを処理するためにＳＣＭ４４がプロセッサ４０をウェイクさせるように設定され得る１つ以上の閾値を検出し得る。閾値は、例えば、メモリ４２内のＳＣＭデータ５２の相対的な満杯状態、取られたセンササンプルの数、第１のサンプルからの経過時間、サンプルによりトリガされていないスリープ解除タイマ、誤り検出などを含み得る。１つ以上の閾値の任意の集合が使用され得、様々な閾値が様々なセンサのために使用され得る。閾値に到達した場合、状態マシンは、キャプチャ状態６２から処理状態６４へ移行し得る。代わりに、センサデータキャプチャが完了した場合、状態マシンは、キャプチャ状態６２から待機状態６０へ移行してもよい。
【００５５】
処理状態６４では、プロセッサ４０は、アクティブであり、メモリ４２から（又は、存在する場合にはプロセッサ４０のキャッシュから）のコードを実行し得る。コードは、例えばフィルタコードを含み得る。処理状態６４の間、ＳＣＭ４４は、追加センサデータをキャプチャするために周期的にアクティブであってもよく、処理状態６４の間、連続的にアクティブであってもよい。プロセッサ４０上で動作するコードは、コードが完了したと少なくとも一時的に判定し得、キャプチャ状態６２に戻る移行を生じさせ得る。代わりに、移行は、待機状態６０への直接的な移行であってもよい（例えば、ＳＣＭ４４が非アクティブである場合）。
【００５６】
コードは、処理状態６４の間のメモリ１２との通信が望まれるとも判定し得る。例えば、メモリ１２との通信は、メモリ４２からキャプチャされたセンサデータをメモリ１２に書き込むように使用され、メモリ１２内の利用可能なより大きな記憶スペースを使用する。幾つかの実施形態では、メモリ１２は、メモリ４２に連続的に格納され得ない、プロセッサ４０により実行可能な追加コード（例えば追加のフィルタリングアルゴリズム）も格納し得る。追加コードは、メモリ１２との通信が確立された後にプロセッサ４０により実行され得る。例えば、追加コードは、メモリ１２からメモリ４２にフェッチされ得、及び／又はプロセッサ４０によりキャッシュされ得る。データは、プロセッサ４０がキャプチャされたセンサデータ中に所望のパターン若しくは他の態様を検出することに応じて、メモリ４２からメモリ１２に書き込まれ得、ＣＰＵコンプレックス１４内のＣＰＵプロセッサ３０による追加処理が保証され得る。データは、ＣＰＵプロセッサ３０がデータへのアクセスを有するようにメモリ１２に書き込まれ得る。メモリ１２との通信が望まれる場合、状態マシンは、メモリアクセス状態６６へ移行し得る。移行は、メモリコントローラ２２の状態とともに、常時オン構成要素１６からメモリコントローラ２２への通信経路をプログラミングするための、ＳＯＣ再設定回路４６による動作を含み得る。幾つかの実施形態では、通信ファブリック２７の全体がアクティブ化され得る。他の実施形態では、通信ファブリック２７のうちメモリコントローラ２２と常時オン構成要素１６の間の通信に関与する部分のみがアクティブ化され得る。メモリ１２は、セルフリフレッシュから引き出されもし得る。ある実施形態では、ローカルＰＭＧＲ４８は、メモリコントローラの供給電圧がＰＭＵ１５６により管理される場合、メモリコントローラ２２の電源投入を要求する、移行にも関与し得る。
【００５７】
メモリアクセス状態６６では、メモリコントローラ２２は、アクティブであり得、常時オン構成要素１６は、メモリ１２へのアクセスを有し得る。常時オン構成要素１６（ある実施形態では、特にプロセッサ４０）は、メモリ１２に対する読出し及び書き込み操作を発生させるように構成され得、操作は、相互接続５０及び通信ファブリック２７を介してメモリコントローラ２２に引き継がれ得る。データは、同様なやり方で、メモリコントローラ２２により（読出しのために）戻されてもよく、メモリコントローラ２２により（書き込みのために）受信されてもよい。
【００５８】
プロセッサ４０は、メモリ１２にアクセスする必要性が終了したと判定し得、処理状態６４に戻る移行を生じさせ得る。移行は、メモリ１２をセルフリフレッシュモードに復帰し、メモリコントローラ２２及び通信ファブリック２７を電源切断することを含み得る。
【００５９】
プロセッサ４０は、ＳＯＣ１０が（例えば、ＣＰＵコンプレックス１４に対するハンドオフ処理のために）アウェイクされるべきであるとも判定し得る。状態マシンは、メモリアクセス状態６６からＳＯＣオン状態６８へ移行し得る。移行は、ローカルＰＭＧＲ４８が、ＳＯＣ１０のためにＰＭＵ１５６からの電源投入を要求することを含み得、ＳＯＣ再設定回路４６が設定データ５６により各種の構成要素をプログラミングすることを含み得る。一実施形態では、処理状態６４からＳＯＣオン状態６８への直接的な移行がサポートされ得る。このような移行では、メモリコントローラ２２の電源投入及びメモリ１２のセルフリフレッシュ解除もまた実行され得る。代わりに、プロセッサ４０は、ＳＯＣオン状態６８への移行の望みを検出し得るが、移行を実行するためにメモリアクセス状態６６を通過してもよい。
【００６０】
ＳＯＣオン状態６８から、ＳＯＣ１０（例えば、ＰＭＧＲ３２及び／又はＣＰＵプロセッサ３０上で動作するソフトウェア）は、ＳＯＣ１０がより低い電力状態へ移行すべきであると判定し得る。一実施形態では、ソフトウェアは、メモリ１２がセルフリフレッシュにされ、ＳＯＣ１０の構成要素が電源切断される前に、設定データ５６によって表されもする状態を含む各種のシステム状態がメモリ１２に書き込まれる「ＲＡＭへのサスペンド（suspend to RAM）」動作を実行し得る。よって、ＳＯＣオン状態６８に復帰すると、設定データ５６による状態の再プログラミングが実行され得、ソフトウェアは、メモリ１２に格納されたデータに基づく実行を再開し得る。移行は、例えば、常時オン構成要素１６が搭載されていない場合と比べて、相対的に迅速であり得る。このような場合、ソフトウェアは、通常のコールドブート処理を開始し得る。処理中の一部の時点で、ソフトウェアは、ＲＡＭへのサスペンドが生じていたことを認識し得るが、処理中のその時点で一部の不要な初期化処理が既に実行されていてもよい。
【００６１】
概して、状態マシンがより高い電力状態のうちのいずれかである間に、より低い電力状態で実行される動作もまた実行され得る。例えば、センサデータキャプチャは、状態マシンが処理状態６４、メモリアクセス状態６６、及びＳＯＣオン状態６８である間にも実行され得る（例えば、状態マシンが他の状態のうちのいずれかである間に、ＳＣＭ４４にデータをキャプチャさせるトリガのうちの１つが生じる場合）。同様に、プロセッサ４０は、処理状態６４、メモリアクセス状態６６、及びＳＯＣオン状態６８のうちのいずれかでアクティブであり得、よって、それらの状態のいずれかでデータを処理し得る。
【００６２】
ＳＯＣ１０が停止する場合、状態マシンは、ＳＯＣオン状態６８からメモリアクセス状態６６に復帰し得る（及び常時オン構成要素１６内の他のアクティビティに基づいて、より低い状態へ移行し得る）。代わりに、ＳＯＣオン状態６８から状態６０、６２、６４、又は６６のいずれかへの直接的な移行が、移行が生じるときの常時オン構成要素１６内の現在のアクティビティに基づいて実行されてもよい。
【００６３】
次に図４に移ると、別の状態マシンのブロック図が示される。図４の状態マシンは、図３の状態マシンと共同して実装され得る。例示する実施形態では、状態マシンは、オフ状態７０、ＳＯＣオン状態７２、ＡＯ＋メモリ状態７４、ＡＯ状態７６、及び非ＡＯ状態７８を含む。この文脈でのＡＯは、常時オンの頭文字であり得る。
【００６４】
オフ状態７０は、ＳＯＣ１０を含むデバイスが完全にオフであるときなど、ＳＯＣ１０に対する全電力がオフである状態であり得る。したがって、状態マシンは、ＳＯＣ１０に対して電源が入れられることに応じてオフ状態７０から（例えばＳＯＣオン状態７２へ）移行し得る。ＳＯＣ１０のリセットが実行され得、ＳＯＣ１０はブートに進み得る。状態マシンは、ＳＯＣ１０を完全に電源オフすることに応じて、ＳＯＣオン状態７２からオフ状態７０へ移行し得る。電源オフは、ＣＰＵ３０上で動作するソフトウェアが任意の所望の状態をメモリ１２から不揮発性メモリに保存し、デバイスが有し得る各種の接続（例えば、無線及び／又は有線ネットワーク接続、無線電話接続など）を閉鎖し、その他の方法で、順序立った停止のためにデバイスを準備した後に生じ得る。図４では、移行がＳＯＣオン状態７２からオフ状態７０への移行であるが、他の実施形態では、他の状態からオフ状態７０への移行がサポートされ得る。
【００６５】
ＳＯＣオン状態７２では、ＳＯＣ１０は、フル動作中であり得る。ＳＯＣ１０の各種の構成要素は、所望に応じて電源オン又は電源オフされ得るが、ＳＯＣ１０全体としては、ＳＯＣオン状態７２で概してアクティブであると見られ得る。ＳＯＣオン状態７２は、図３の実施形態では、ＳＯＣオン状態６８に対応し得る。
【００６６】
ＳＯＣオン状態７２では、ＣＰＵコンプレックス１４上で動作するソフトウェアは、ＳＯＣ１０が低電力状態（例えばスリープ）に行くべきであると判定し得る。ある実施形態では、ソフトウェアは、「ＲＡＭへのサスペンド」動作を実行し得、その動作では、各種のＳＯＣ状態がＳＯＣ１０の電源切断前にメモリ１２に書き込まれる。メモリ１２は、メモリ内容を維持するが、メモリコントローラ２２に対するメモリインタフェースに関して非アクティブである、「セルフリフレッシュ」モードにされ得る。ＰＭＧＲ３２は、メモリコントローラ２２、ファブリック２７（又はそのうちのメモリコントローラ２２との間で通信するために使用される部分）、及び常時オン構成要素１６を除く、ＳＯＣ１０内の構成要素の電源切断を生じさせるために電源切断コマンドをＰＭＵ１５６に通信し得る。代わりに、ローカルＰＭＧＲ４８は、電源切断コマンドを送信してもよい。状態マシンは、ＡＯ＋メモリ状態７４へ移行し得る。幾つかの実施形態では、ＳＯＣオン状態７２からＡＯ状態７６への移行もまたサポートされ得る。代わりに、ＳＯＣオン状態７２からＡＯ状態７６への移行は、ＡＯ＋メモリ状態７４を通過してもよい。つまり、ターゲット状態がＡＯ状態７６である場合、ＡＯ＋メモリ状態７４への移行が行われ、それにＡＯ状態７６への移行が続き得る。
【００６７】
ＡＯ＋メモリ状態７４では、メモリコントローラ２２、通信ファブリック２７（又は常時オン構成要素１６に対する部分）、及び常時オン構成要素１６は、アクティブであり得る。ＡＯ＋メモリ状態７４は、図３のメモリアクセス状態６６に対応し得る。ＳＯＣをスリープ解除させるイベントが検出された場合、状態マシンは、ＳＯＣオン状態７２へ移行し得る（各種の実施形態では、ＰＭＵ１５６及び／又はＳＯＣ１０内の電源スイッチとの通信によるＳＯＣ１０の他の構成要素の電源投入、並びにＳＯＣ再設定回路４６による及び／又はメモリ１２内のデータによる構成要素の再設定）。
【００６８】
一方、常時オン構成要素１６は、メモリアクセスが完了したと判定し得、（メモリ１２をセルフリフレッシュなどの保持モードにした後に）メモリコントローラ２２を非アクティブ化させ得る。メモリコントローラ２２は電源切断され得、常時オン構成要素１６は電源供給されたままであり得る。状態マシンはＡＯ状態７６へ移行し得る。ＡＯ状態７６は、図３の処理状態６４、キャプチャ状態６２、及び待機状態６０のうちのいずれかに対応し得る。常時オン構成要素１６が、メモリアクセスが再び望まれると判定した場合、（例えば、ＳＣＭデータ５２中の各種の閾値に到達するか、又はプロセッサ４０によりパターン／属性を検出するかによって）、状態マシンは、ＡＯ＋メモリ状態７６へ移行し得る（メモリコントローラ２２及び通信ファブリック２７に電源供給し、それらをＳＯＣ再設定回路４６により再設定する）。幾つかの実施形態では、メモリコントローラ２２、通信ファブリック２７、及びＳＯＣ１０内の他の構成要素の電源投入、並びにＳＯＣ再設定回路４６によるそれらの構成要素の再設定を含めて、ＡＯ状態７６からＳＯＣオン状態７２への直接的な移行がサポートされ得る。
【００６９】
一実施形態では、非ＡＯ状態７８がサポートされ得る。非ＡＯ状態７８は、常時オン構成要素１６が電源切断されるが、メモリ１２が保持モードで電源供給されたままである状態であり得る。非ＡＯ状態７８は、「典型的な」ＲＡＭへのサスペンド状態と同様であり得る。非ＡＯ状態７８からＳＯＣオン状態７２への復帰は、ソフトウェアが常時オン構成要素１６を含むＳＯＣ１０の構成要素を再設定することを含み得る。ソフトウェアは、ＣＰＵプロセッサ３０上で動作し得る。よって、非ＡＯ状態７８からＳＯＣオン状態７２への移行は、ソフトウェアが、ＳＯＣ１０を初期化し、メモリ１２が状態を既に格納していることを検出するまで、基本ブート動作を含み得る。
【００７０】
次に図５に移ると、（例えば、ＣＰＵプロセッサ３０により）ＳＯＣ１０上で動作し得るソフトウェアコードの一実施形態の動作を例示するフローチャートが示される。コードは、ＳＯＣ１０を含むデバイスのブートで実行され得る。コードは、構成要素のプログラミング可能な設定の変更中に同様に実行され得る。設定変更中に動作するコードは、各種の実施形態では、ブート中に動作するコードと同じであってもよく、同じでなくてもよい。他の実施形態では、図５に示す動作の部分は、ハードウェア内で実施され得る。コードは、プロセッサ上で実行されると、図５に例示する動作を実施する命令を含み得る。ある実施形態では、図５に示す動作を実施するコードは、対応する構成要素のためのドライバコードの一部であり得、よって、図５に例示する動作は、複数のコードシーケンスで実施され得る。
【００７１】
コードは、構成要素内にプログラミングされるべき設定パラメータを決定し得る（ブロック８０）。パラメータは、構成要素及びその能力を発見することに基づき得る。ＳＯＣ１０内の構成要素は、ハードウェア内に実装されるため一定であり得るが、コードは、ＳＯＣ１０の複数のバージョンで走るように汎用であり得る。更に、ＳＯＣ１０は、様々に設計された複数のデバイスに搭載され得る。所望のパラメータは、ＳＯＣ１０がインスタンス化される特定のデバイスによる影響を受け得る。
【００７２】
コードは、設定パラメータを構成要素に書き込み（ブロック８２）、構成要素をプログラミングし得る。設定パラメータが、スリープ状態又は他の電源切断状態の後にＳＯＣ１０に再び電源供給すると復元されるべきデータを含む場合（判定ブロック８４、「はい」の脚）、コードは、設定パラメータをプログラミング可能な設定データ５６に書き込み、よってＳＯＣ再設定回路４６の状態をシャドーウィングし得る（ブロック８６）。他の実施形態では、ＳＯＣ再設定回路４６は、所望の状態を自動的にシャドーウィングするように構成され得る。
【００７３】
幾つかの実施形態では、設定パラメータの全ては、ＳＯＣ１０の次の電源投入時に構成要素に対して復元される再設定状態の一部である必要がないことに留意されたい。例えば、構成要素との基本通信に必要とされない各種の任意選択的な機能を設定するパラメータは、再設定時にデフォルト値に設定され得る。このような任意選択的パラメータは、構成要素に対する復元のためにＣＰＵ３０上の実行を再開した後に、メモリ１２内のＲＡＭへのサスペンド状態から読み出され得る。したがって、このようなパラメータは、ＳＯＣ再設定回路４６により格納された状態の一部である必要がない。更に、前述したように、幾つかの実施形態では、ＳＯＣ再設定回路４６に書き込まれたパラメータは、ＳＯＣ１０が電源切断されるときに構成要素にプログラミングされたパラメータとは異なり得る。このような場合、ＳＯＣ再設定回路４６に書き込まれたパラメータは、ＳＯＣ１０のスリープ解除に応じて構成要素内に再プログラミングされるべきパラメータであり得る。
【００７４】
次に図６に移ると、ＳＯＣ１０の１つ以上の構成要素が再び電源投入されるべきであるという、常時オン構成要素１６内の判定に応じた、常時オン構成要素１６の一実施形態の動作を例示するフローチャートが示される。例えば、図６の動作は、メモリコントローラ２２及び通信ファブリック２７を復元するための、メモリアクセス状態６６／ＡＯ＋メモリ状態７４への移行の一部であり得る。図６の動作は、ＳＯＣ１０全体の構成要素を復元するための、ＳＯＣオン状態６８／ＳＯＣオン状態７２への移行の一部であり得る。常時オン構成要素１６は、図６に示す動作を実施するように構成され得る。
【００７５】
常時オン構成要素１６は、電源投入される構成要素の電力の復元を生じさせるように構成され得る（ブロック９０）。例えば、ローカルＰＭＧＲ４８は、ＰＭＵ１５６がＳＯＣ１０の１つ以上の供給電圧レールへの供給電圧を復元することを要求するように構成され得る。代わりに、ローカルＰＭＧＲ４８又は常時オン構成要素１６内の他の回路は、パワーゲートされている構成要素への電力を復元するために、ＳＯＣ１０内の電源スイッチを制御するように構成されてもよい。ＰＭＵ要求及び電源スイッチ制御の組合せもまた使用され得る。
【００７６】
電力が安定化し、任意の構成要素のリセットが完了すると、ＳＯＣ再設定回路４６は、構成要素に対応するプログラミング可能な設定データ５６を用いて構成要素をプログラミングするように構成され得る（ブロック９２）。ＳＯＣ再設定回路４６は、プログラミング可能な設定データ５６を読み出し、再設定が完了するまで、データを構成要素に送信するように構成され得る（判定ブロック９４）。再設定が完了すると（判定ブロック９４の「はい」脚）、新たな状態（例えば、メモリアクセス状態６６又はＳＯＣオン状態６８）への移行が完了し得る（ブロック９６）。
【００７７】
伝達は、任意の形態（例えば、プログラミングされた入力／出力（ＰＩＯ）書き込み、専用の通信経路、メモリマッピングされたＩ／Ｏ書き込みなど）をとり得る。設定パラメータの書き込みに加えて、幾つかの実施形態は、構成要素から状態を判定するために、プログラミング可能な再設定データ５６中の他の情報をサポートし得、そのことは、再設定が完了したかどうかの判定の一部を形成し得る（判定ブロック９４）。例えば、一連の設定パラメータの書き込みが構成要素に送信され、それに、例えば、完了又は動作のための準備が整ったことを示すために構成要素が更新するレジスタへのポーリング読出しが続き得る。
【００７８】
図７は、ＳＯＣ１０の構成要素を例示するブロック図であり、それらの構成要素は、ＳＯＣ１０の一実施形態では、メモリアクセス状態６６／ＡＯ＋メモリ状態７４に対してオン又はオフである。図７の陰影を付けられた構成要素が電源オフされる一方、陰影を付けられていない構成要素が電源オンされる。図７には、各種のパッド９８Ａ〜９８Ｄも例示する。パッドは、ＳＯＣ１０のピン上の信号を駆動し、ピンから信号を受信するように構成された入力／出力ドライバ／レシーバ回路を含み得る。したがって、パッド９８Ａ〜９８Ｄもまた供給電圧を受け得る。この実施形態では、メモリコントローラ２２がメモリ１２と通信するためのパッド９８Ｃは、電源オンされ得、パッド９８Ｂも、常時オン構成要素１６から各種のセンサに同じように通信する。ＰＭＧＲ３２がＰＭＵ１５６と通信するためのパッド９８Ｄと、周辺装置１８Ｂのためのパッド９８Ａとは、両方とも電源切断され得る。代わりに、少なくとも１つのパッドが電源オンされるときには常に全てのパッドが電源オンされる単一パッド構成が使用されてもよい。
【００７９】
図７に例示するように、メモリコントローラ２２及び常時オン構成要素１６は、残りの構成要素が電源切断されている間に電源投入され得る。加えて、通信ファブリック２７のうち常時オン構成要素１６とメモリコントローラ２２の間で通信するために使用される一部分９９は、通信ファブリック２７の残り部分が電源切断されている間に電源投入され得る。例えば、ある実施形態では、通信ファブリック２７は、周辺装置１８Ａ〜１８Ｂ、ＣＰＵコンプレックス１４、及び常時オン構成要素１６などのソースからメモリコントローラ２２にトランザクションをルーティングするために、バス及び回路の階層的集合を含み得る。ファブリックは、またデータを（書き込みのためにメモリコントローラ２２へ、読出しのためにメモリコントローラ２２から）運び得、及びメモリコントローラ２２からソースへの応答を運び得る。階層的インタフェース及び回路のうち常時オン構成要素１６とメモリコントローラ２２の間の部分は、電源オンされ得、他の部分は電源オフされ得る。
【００８０】
図８は、一実施形態のための再設定メカニズムを使用した待ち時間短縮を例示するブロック図である。図８の左手側にある矢印により例示するように、図８では、上から下に時間が増加する。左側は、集積回路１０のためのブートシーケンスであり、右側は、本実施の再設定メカニズムによる再設定である。
【００８１】
ブートシーケンスは、ＳＯＣ１０を含むデバイスが最初に電源投入されるときに実行され得る。したがって、メモリ１２に格納されたデータが存在せず、プログラミング可能な再設定データ５６を含めてＳＯＣ１０は初期化されない。ブートシーケンスは、リードオンリーメモリ（ＲＯＭ）のロード１００、低レベルブート１０２、及びカーネル１０４を含む。ＲＯＭロード１００は、ＣＰＵプロセッサ３０によるリセットの終わりで開始し得、低レベルブート１０２のための低レベルブートコードのＲＯＭ（例えばセキュアＲＯＭ）からの読出し、低レベルブートコードの復号化及び／又は認証、並びに低レベルブートコードの開始を含み得る。低レベルブートコードは、ＳＯＣ１０の各種の構成要素を発見し得、構成要素を初期化し得る。概して、初期化の量、初期化されるべき構成要素、及び低レベルブートコードにより構成要素が初期化される状態は、カーネルコード（カーネルブロック１０４）の設計に応じて制御され得る。つまり、低レベルブートコードは、カーネルコードがその最初の命令を実行するときの状態として予想されるシステム／ＳＯＣ１０の状態を発生させ得る。カーネルコードは、オペレーティングシステムの中央コアであり、システム内で動作する各種のアプリケーションプログラムにより使用するためにＳＯＣ１０のリソースを管理し得る。
【００８２】
電源投入が再び再設定メカニズムを使用するとき、ＲＯＭロード１００が回避され得る。再設定メカニズム（ブロック１０６）は、低レベルブート１０２と同じ効果を有し得るが、幾つかの場合では、低レベルブートコードよりも高速であり得る。最悪、再設定メカニズム１０６は、低レベルブート１０２と同じ待ち時間を有し得る。再設定メカニズム１０６の終わりに、カーネル１０４は、実行の準備を整え得る。再設定メカニズムを使用した待ち時間短縮は、矢印１０８により例示される。
【００８３】
別の実施形態では、再設定メカニズム１０６は、低レベルブートコードから再設定コードを導出し、電源投入イベントの後にＣＰＵプロセッサ３０によりアクセス可能な領域（例えば、ＳＯＣ１０内の又はＳＯＣ１０に接続されたフラッシュメモリなどの不揮発性メモリ）にコードを格納することによって実施され得る。ＣＰＵプロセッサ３０の電源投入及びリセットの後、ＣＰＵプロセッサ３０は、再設定コードが実行され得るように領域を指すリセットベクトルへのリセットから解放され得る。再設定コードは、カーネルへの呼出しにより終了し得る。
【００８４】
図９は、一実施形態のために、スリープ解除待ち時間を短縮させるための推測の使用を例示するブロック図である。概して、図９に示すような推測は、待ち時間を短縮させるために任意のレベル（例えば、図３及び図４の状態間の任意の移行）で使用され得る。推測が正しくない場合に幾らかの電力が回路の推測的な電源投入及び電源切断で消費され得るが、合理的に精確な推測は、良好な電力／パフォーマンスのトレードオフとなり得る。図８と同様、図９では、上から下に時間が増加する。
【００８５】
図９の左側は、推測なしに実行されるシーケンスである。常時オン構成要素１６は、Ｎ個のセンササンプルを収集し得る（ブロック１１０）。つまり、常時オン構成要素１６は、待機状態６０とキャプチャ状態６２の間をＮ（ここで、Ｎが正の整数である）回移行し、センサデータを毎回キャプチャし得る。常時オン構成要素１６は、Ｎ個のセンササンプルの後に状態マシンが処理状態６４へ移行する（プロセッサ４０をウェイクさせる）ように、この例ではＮの閾値を用いてプログラミングされ得る。プロセッサ４０は、センサデータを処理し得る（ブロック１１２）が、プロセッサ４０にメモリコントローラ２２又はＳＯＣ１０の他の部分をウェイクさせるセンサデータのパターン又は他の属性を検出し得ない。状態マシンは、キャプチャ状態６２及び／又は待機状態６０に復帰し得る。続いて、更にＮ個のセンササンプルが収集され得（ブロック１１４）、プロセッサ４０は、再びアウェイクされ得、センサデータを処理し得る（ブロック１１６）。この場合、プロセッサ４０は、ＣＰＵプロセッサ３０が更にセンサデータを処理し又は他の処理を実行し得るように、ＳＯＣ１０がアウェイクされるべきであることを検出し得る。よって、状態マシンは、ＳＯＣオン状態６８／７２へ移行し、ＳＯＣ１０をアウェイクさせ、処理を可能にし得る（ブロック１１８）。
【００８６】
図９の右側は、ＳＯＣ１０の電源を入れるための待ち時間を短縮させるための推測のある例である。左側の例と同様に、右側の例は、常時オン構成要素１６が、Ｎ個のセンササンプルを収集し、プロセッサ４０をウェイクさせ（ブロック１２０）、状態マシンを処理状態６４へ移行させることを含み得る。この場合、しかし、プロセッサ４０により実行されるコードは、（例えば、図９の左側のブロック１１２及び１１６と同様に、）迅速なＳＯＣ処理の望みを示すセンサデータ中のパターン／属性を探索するのみではなく、ＳＯＣ処理がほどなく望まれることを予測するためにパターン／属性を探索する。右側の例では、プロセッサ４０により実行されるコードは、ＳＯＣ処理が望まれることを予測し得（ブロック１２２）、状態マシンをＳＯＣオン状態６８／７２へ移行させ得る（ブロック１２４）。ＳＣＭ４４は、並行してセンササンプルもまたキャプチャし続け得る。スリープ解除を生じさせるパターン／属性が検出される時に、ＳＯＣ１０は、既に準備を整え得る。待ち時間が、矢印１２６により例示するように、左側の例と比べて短縮され得る。予測が正しくない場合（図９の予測ミス）、ＳＯＣ１０は、スリープに復帰し得る（ブロック１２８）。この場合、ＳＯＣ１０をスリープ解除するために使用された電力は浪費され得る。
【００８７】
次に図１０に移ると、システム１５０の一実施形態のブロック図が示される。例示する実施形態では、システム１５０は、１つ以上の周辺装置１５４及び外部メモリ１２に接続された、ＳＯＣ１０の少なくとも１つのインスタンスを含む。ＳＯＣ１０に供給電圧を供給するとともに、メモリ１２及び／又は周辺装置１５４に１つ以上の供給電圧を供給するＰＭＵ１５６が設けられる。幾つかの実施形態では、ＳＯＣ１０の２つ以上のインスタンスが含まれ得る（及び２つ以上のメモリ１２もまた含まれ得る）。
【００８８】
周辺装置１５４は、システム１５０の種類に応じて任意の所望の回路を含み得る。例えば、一実施形態では、システム１５０は、モバイルデバイス（例えば、携帯情報端末（ＰＤＡ）、スマートフォンなど）であり得、周辺装置１５４は、ワイファイ、ブルートゥース（登録商標）、セルラー、全地球測位システムなどの各種の無線通信のためのデバイスを含み得る。周辺装置１５４は、ＲＡＭストレージ、ソリッドステートストレージ、又はディスクストレージを含む追加ストレージも含み得る。周辺装置１５４は、タッチディスプレイスクリーンインタフェース又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力デバイス、マイク、スピーカなどのユーザデバイスを含み得る。図１の実施形態では、周辺装置１５４は、センサ２０を含み得る。他の実施形態では、システム１５０は、任意の種類のコンピューティングシステム（例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップなど）であり得る。
【００８９】
外部メモリ１２は、任意の種類のメモリを含み得る。例えば、外部メモリ１２は、ＳＲＡＭ、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３など）ＳＤＲＡＭ、ＲＡＭＢＵＳ  ＤＲＡＭ、ＤＤＲ  ＤＲＡＭの低電力バージョン（例えばＬＰＤＤＲ、ｍＤＤＲなど）などのダイナミックＲＡＭ（ＤＲＡＭ）であり得る。外部メモリ１２は、シングルインラインメモリモジュール（ＳＩＭＭ）、デュアルインラインメモリモジュール（ＤＩＭＭ）などのメモリデバイスが装着される１つ以上のメモリモジュールを含み得る。代わりに、外部メモリ１２は、チップオンチップ又はパッケージオンパッケージ実装でＳＯＣ１０に装着される１つ以上のメモリデバイスを含んでもよい。
【００９０】
図１１には、コンピュータアクセス可能な記憶媒体２００の一実施形態のブロック図が示される。一般的に、コンピュータアクセス可能な記憶媒体は、コンピュータに命令及び／又はデータを提供するために使用中にコンピュータによりアクセス可能である任意の記憶媒体を含み得る。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体、例えば、（固定された又は取り外し可能な）ディスク、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ又はブルーレイなどの記憶媒体を含み得る。記憶媒体は、ＲＡＭ（例えば、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、Ｒａｍｂｕｓ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）など）、ＲＯＭ、又はフラッシュメモリなどの、揮発性又は不揮発性メモリ媒体を更に含み得る。記憶媒体は、それが命令／データを提供するコンピュータ内に物理的に搭載され得る。代わりに、記憶媒体は、コンピュータに接続されてもよい。例えば、記憶媒体は、ネットワーク接続ストレージのように、ネットワーク又は無線リンクを介してコンピュータに接続され得る。記憶媒体は、ユニバーサルシリアルバス（ＵＳＢ）などの周辺インタフェースにより接続され得る。概して、コンピュータアクセス可能な記憶媒体２００は、非一時的な方法でデータを格納し得、非一時的とは、この文脈上、命令／データを信号上で伝達しないことを意味し得る。例えば、非一時的なストレージは、揮発性（格納された命令／データを電源切断に応じて失い得る）でもよく、不揮発性でもよい。
【００９１】
図１１のコンピュータアクセス可能な記憶媒体２００は、常時オン構成要素コード２０２を格納し得る。常時オン構成要素コード２０２は、プロセッサ４０により実行されると、コードについて上述した動作を実施する命令を含み得る。常時オン構成要素コード２０２は、例えば、図２に示すプロセッサコード５４を含み得る。図１１のコンピュータアクセス可能な記憶媒体２００は、ＣＰＵコード２０４を更に含み得る。ＣＰＵコード２０４は、ＲＯＭロードコード２０６、低レベルブートコード２０８、及び／又はカーネルコード２１０を含み得る。各コードは、実行されると、例えば、ＲＯＭロードブロック１００、低レベルブートブロック１０２、及びカーネルブロック１０４に割り当てられた動作を実施する命令を含み得る。キャリア媒体は、コンピュータアクセス可能な記憶媒体、及び有線若しくは無線伝送などの伝送媒体を含み得る。
【００９２】
上記の開示を十分に理解すれば、多くの変形及び変更が当業者にとって明らかとなるであろう。以下の請求項は、このような変形及び変更の全てを包含するように解釈されることを意図している。
【図１】
0006449997.tif 000002
【図２】
0006449997.tif 000003
【図３】
0006449997.tif 000004
【図４】
0006449997.tif 000005
【図５】
0006449997.tif 000006
【図６】
0006449997.tif 000007
【図７】
0006449997.tif 000008
【図８】
0006449997.tif 000009
【図９】
0006449997.tif 000010
【図１０】
0006449997.tif 000011
【図１１】
0006449997.tif 000012