(57)【特許請求の範囲】
【請求項１】
ウェイクロックイベントをトレースする装置であって、
プロセッサコンポーネントと、
オペレーティングシステムのアプリケーション電力マネージャに対するアプリケーションレベルウェイクロックに関連するコールの通知をシステムログデータから抽出し、前記オペレーティングシステムのカーネル電力マネージャに対するカーネルレベルウェイクロックに関連するコールの通知を補完的ログデータから抽出し、前記オペレーティングシステムが実行される計算装置のコンポーネントのアクティビティレベルの通知を前記システムログデータから抽出する関連付けコンポーネントと、
前記アプリケーションレベルウェイクロックに関連するコール、前記カーネルレベルウェイクロックに関連するコール及びディスプレイ上の前記計算装置のコンポーネントのアクティビティレベルの変更の時間的に整列されたタイムライングラフを生成して視覚的に提示する提示コンポーネントと、
を有する装置。
【請求項２】
前記関連付けコンポーネントは、前記システムログデータ及び前記補完的ログデータの１つからマッピング情報を抽出し、前記マッピング情報は、前記計算装置上で実行されるプロセス及び前記計算装置の実行のスレッドの１つと前記計算装置上で実行されるアプリケーションルーチンとの関連付けの通知を有する、請求項１記載の装置。
【請求項３】
前記関連付けコンポーネントは、前記関連付けの通知を利用して、アプリケーションレベルウェイクロックに関連するコールの少なくとも２つの通知を関連付ける、請求項２記載の装置。
【請求項４】
コントロールを有し、前記提示コンポーネントは、前記コントロールをモニタして、前記タイムライングラフが時間的に整列された期間を選択するためのコマンドを伝送する前記コントロールの処理の通知を受信する、請求項１記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
ここに説明される実施例は、一般に計算装置が低電力状態に入る能力を制御するためのウェイクロックの使用を追跡することに関する。
【背景技術】
【０００２】
各電力状態が各種タスクを実行するため電力の消費と機能の可用性との間の異なるバランスをとる各種電力状態における動作をサポートするための電力管理機能を計算装置が搭載することが一般的である。特に、ポータブル計算装置は、バッテリから各種コンポーネントに利用可能な限定的な電力の供給が個別に制御可能な電力管理のある程度高度な形態を有する傾向がある。
【０００３】
計算装置が配置されうる使用の多くについて、電力管理コンポーネントが計算装置を低電力状態に配置できることがしばしば可能である。しかしながら、高電力状態に計算装置を維持することが所望されうる状況が生じ、従って、電力管理コンポーネントが計算装置を低電力状態に配置することを防ぐことが所望されうる。例えば、計算装置は、動画ビデオの再生を実行するよう操作可能であり、これにより、動画ビデオを復号化するのに十分な処理リソースの中断のない使用と、動画ビデオを視覚的に提示するためのディスプレイの中断のない使用とを必要とする。さらに、このようなリソースの中断のない使用は、利用可能な電力の限定的な供給が枯渇に近づくにも関わらず必要とされる可能性がある（例えば、計算装置のバッテリが少なくなるにもかかわらず）。
【０００４】
従って、計算装置の電力管理コンポーネントが計算装置を低電力状態に配置するのを避けることを、アプリケーションルーチン及び／又はオペレーティングシステムの各種部分が要求することを可能にするためのファンクションコールを提供することが一般的になっている。これは、計算装置が低電力状態又は“スリープモード”に入ることができないように、高電力状態又は“キープアウェイク”に“ロック”される“ウェイクロック”の要求又は“取得”として通常参照されている。各種実現形態は、ウェイクロックを要求するためのコール、ウェイクロックを解放するためのコール、及び／又は指定された期間の終わりに満了するように時間制限されたウェイクロックを要求するためのコールのサポートを含む。
【０００５】
残念ながら、アプリケーションルーチンがウェイクロックを利用するためのこのようなサポートの提供は、ウェイクロックの過剰な使用をもたらすアプリケーションルーチンにおけるエラー及び／又は他の予期しない状況が発生する、いわゆる、“ノー・スリープ・ウェイクロック・バグ（ｎｏ−ｓｌｅｅｐ  ｗａｋｅｌｏｃｋ  ｂｕｇ”の出現を伴い、これにより、利用可能な電力の早過ぎる枯渇を導く。これらの状況は、“予期しないバッテリ消耗”と呼ばれることもあり、ウェイクロックがともかく要求及び許可されるが、解放されない方法を特定するための労力を取り除くことを導く。
【０００６】
残念なことに、多数のポータブル計算装置は、このようなウェイクロックバグのソースの迅速な検出を実現する方法では構成されていないオペレーティングシステムを搭載する。各種オペレーティングシステムは、時間の経過と共に各種イベントの発生を詳細にするシステムログデータの生成するサポートする。また、各種オペレーティングシステムは、早期に要求されたが、まだ解放されていないウェイクロックがあるか否かを含む、オペレーティングシステムのコンポーネントの状態の詳細ビューを提供するための各種データ構造とレジスタの現在状態とを“ダンプ（ｄｕｍｐ）”するための能力をサポートする。しかしながら、何れのルーチン又はオペレーティングシステムコンポーネントがウェイクロックを誤って要求し、及び／又はウェイクロックを解放することを無視したかを特定するのに必要なデータを記録又は提供するための準備がされていない。
【図面の簡単な説明】
【０００７】
【図１】図１は、ウェイクロックデバッグシステムの実施例を示す。
【図２】図２は、ウェイクロックデバッグシステムの他の実施例を示す。
【図３】図３は、実施例によるログデータを生成する具体例を示す。
【図４】図４は、実施例によるウェイクロックのデバッグを実現するための一例となるイメージを示す。
【図５】図５は、実施例によるウェイクロックのデバッグを実現するための一例となるイメージを示す。
【図６】図６は、実施例によるウェイクロックのデバッグを実現するための一例となるイメージを示す。
【図７】図７は、ウェイクロックデバッグシステムの実施例の一部を示す。
【図８】図８は、ウェイクロックデバッグシステムの実施例の一部を示す。
【図９】図９は、ウェイクロックデバッグシステムの実施例の一部を示す。
【図１０】図１０は、実施例によるロジックフローを示す。
【図１１】図１１は、実施例によるロジックフローを示す。
【図１２】図１２は、実施例によるロジックフローを示す。
【図１３】図１３は、実施例による処理アーキテクチャを示す。
【発明を実施するための形態】
【０００８】
各種実施例は、一般にオペレーティングシステムのカーネルレベル及びアプリケーションレベルにおけるウェイクロックに関するイベントを記録するログの生成と、ウェブクロックのデバッグを可能にするための視覚的提示におけるイベントのグラフの時間的配置とに関する。より詳細には、オペレーティングシステムのアプリケーション電力マネージャは、オペレーティングシステムにより通常生成されるシステムログデータへのイベントの記録をエンハンスするためのログパッチルーチンにより拡張される。また、ログデバイスドライバは、オペレーティングシステムのカーネル電力マネージャに接続され、カーネルレベルウェイクロックイベントを記録する補完的ログデータを生成する。さらに、システムログデータ及び補完的ログデータに記録されるウェイクロックイベント及び関連イベントは、ウェイクロックバグを示すイベント間の関連付けを閲覧することを可能にするため、時間的に揃えられたグラフにおいて視覚的に提示される。
【０００９】
オペレーティングシステムは、選択されたイベントの出現は、通常は、オペレーティングシステムが搭載される計算装置のプロセッサコンポーネントによるオペレーティングシステムの実行中にタイムスタンプされたエントリに記録されるシステムログデータを生成する。何れのイベントがシステムログデータに記録されるよう選択されたものであるかは、計算装置のオペレータによってしばしば変更可能とされる。より詳細には、より限定的なイベントの選択が記録される“ノーマルモード”と、より大きなイベントの選択が記録される“デバッグモード”とが通常は存在し、このような計算装置のオペレータの制御の下、これらのモードを動的に切り替える能力が存在する。しかしながら、デバッグモードでさえ、通常は、ウェイクロックが依然として係属中であることの表示にすぎず（例えば、低電力モードへのエントリが妨げられるようにまだ解放されていない早期に要求されたウェイクロックなど）、何れのアプリケーションルーチン又はいくつのアプリケーションルーチンがウェイクロックを要求及び／又は解放したかの表示はない。典型的には、システムログデータにはほとんど情報が記録されないことが、アプリケーション電力マネージャによって提供される。
【００１０】
オペレーティングシステム内において、電力管理は、アプリケーション電力マネージャが通信する個別のカーネル電力マネージャによるカーネルレベルと、アプリケーション電力マネージャによるアプリケーションレベルとの双方において取り扱われてもよい。アプリケーション電力マネージャは、アプリケーションレベルにおいてウェイクロックを要求又は解放するコールをアプリケーションルーチンから受信する。アプリケーション電力マネージャによって受信されたアプリケーションレベルウェイクロックを要求又は解放するためのコールは、典型的には、何れのアプリケーションルーチンが当該コールを送信しているかを示す識別情報を含む。さらに、マルチスレッド処理環境では、アプリケーション電力マネージャは、典型的には、各コールが何れのスレッドから受信されたか決定できる。アプリケーション電力マネージャは、典型的には、このようなアプリケーションルーチン及び／又はスレッドを特定する情報を利用して、コールがアプリケーションレベルウェイクロックの１つを解放するため受信されると、アプリケーションレベルにおける何れかの以前に要求されたウェイクロックが解放されるべきかを特定する。システムログデータにおけるこの特異性の欠落を救済するため、アプリケーション電力マネージャは、ログパッチルーチンにより拡張される。ログパッチルーチンは、何れのアプリケーションルーチン及び／又はスレッドが各コールに関連付けされるか特定する情報と共に、アプリケーションレベルウェイクロックを要求又は解放するための各コールに関する情報をアプリケーション電力マネージャに提供させるため、アプリケーション電力マネージャに命令シーケンスを加える。
【００１１】
アプリケーション電力マネージャは、典型的には、計算装置の現在の電力状態を自ら直接的に制御することはできない（例えば、計算装置を何れか特定の低電力又は高電力状態に配置することなど）。代わりに、アプリケーション電力マネージャは、アプリケーションレベルにおけるウェイクロックを要求又は解放するため受信したコールを、カーネルレベルにおけるアプリケーション電力マネージャに関連するより少数のウェイクロックを要求又は解放するためカーネル電力マネージャに送信するコールに集約する。カーネル電力マネージャに対するこれらのコールは、典型的には、アプリケーションレベルにおけるウェイクロックを要求又は解放するための元のコールが発信されたアプリケーション及び／又はスレッドを特定する情報を有しない。しばしば、アプリケーション電力マネージャからカーネル電力マネージャへのこれらのコールに含まれる唯一の識別情報は、コールのソースとしてのアプリケーション電力マネージャの通知である。
【００１２】
カーネル電力マネージャは、アプリケーション電力マネージャと共に、オペレーティングシステムの他のコンポーネント及び／又はカーネルレベルにおけるデバイスドライバからカーネルレベルウェイクロックを要求又は解放するコールを受信する。カーネル電力マネージャは、典型的には、システムログデータに記録するための関連イベント又はカーネルレベルウェイクロックに関連する情報を全く又はほとんど提供しないよう構成される。カーネルレベルウェイクロックに関連するイベントに関する情報の提供のこの完全な欠落を救済するため、ログデバイスドライバが、カーネルレベルウェイクロックを要求又は解放するためのコールの出現と、何れのオペレーティングシステムコンポーネントが各コールを行っているかを含む（アプリケーション電力マネージャを含む）、カーネルレベルウェイクロックに関連するイベントを記録する補完的ログデータを生成するため追加される。ログデバイスドライバは、カーネルレベルウェイクロックを要求又は解放するためカーネル電力マネージャによって受信される全てのコールが通知されるよう要求するため、カーネル電力マネージャと通信する。ログデバイスドライバはまた、補完的ログデータに記録する各イベントの通知をタイムスタンプする。
【００１３】
システムログデータ（アプリケーションレベルウェイクロックに関するエンハンスされた情報と共に）及び補完的ログデータの生成後、デバッグルーチンは、ウェイクロックイベント及び他の関連イベントに関する情報を抽出するため双方を解析する。デバッグルーチンは、各ログにおけるイベントに関連するタイムスタンプを利用して、それらを時間的に揃えて、特定されるべきウェイクロックバグを導くイベント間の訂正を可能にするため、ディスプレイ上にこれらのイベントのタイムラインの時間的に揃えられたグラフを視覚的に提示する。デバッグルーチンは、ウェイクロックバグが実行された同一の計算装置のプロセッサコンポーネントによって実行されてもよく、及び／又は別のデバッグデバイスのプロセッサコンポーネントによって実行されてもよい。
【００１４】
ここで用いられる記号及び用言の一般的な参照によって、以下の詳細な説明の各部分は、コンピュータ又はコンピュータのネットワーク上で実行されるプログラム手順に関して提供されてもよい。これらの手続的説明及び表現は、他の当業者に自らの研究の本質を最も効果的に伝えるため当業者によって用いられる。手順とは、ここでは、また一般的には、所望の結果を導く自己完結した処理シーケンスであると考えられる。これらの処理は、物理量の物理的操作を必要とするものである。通常、必要ではないが、これらの量は、記憶、伝送、合成、比較及び操作可能である電気、磁気又は光信号の形態をとる。通常の使用のため、これらの信号をビット、値、要素、シンボル、文字、項、数などとして参照することがときに便利であると分かる。しかしながら、これら及び同様の用語の全ては適切な物理量に関連付けされ、これらの量に適用される単なる便宜的なラベルであることが留意されるべきである。
【００１５】
さらに、これらの操作は、人間のオペレータによって実行される精神的処理に通常関連する加算又は比較などの用語でしばしば参照される。しかしながら、人間のオペレータのこのような能力は、１つ以上の実施例の一部を構成するここに説明される処理の何れかにおいて大部分は必要でないか、又は望ましくない。むしろ、これらの処理はマシーン処理である。各種実施例の処理を実行するのに有用なマシーンは、ここでの教示に従って記述された内部に記憶されたコンピュータプログラムによって選択的にアクティブ化又は構成される汎用デジタルコンピュータ、及び／又は必要とされる目的のため特に構成された装置を含む。各種実施例はまた、これらの処理を実行するための装置又はシステムに関する。これらの装置は、必要とされる目的にために特に構成されるか、又は汎用コンピュータを含むものであってもよい。これら各種マシーンに必要とされる構成は、与えられた説明から明らかであろう。
【００１６】
ここで図面が参照され、同様の参照番号は全体を通じて同様の要素を参照するのに用いられる。以下の説明では、説明のため、多数の具体的な詳細がそれの完全な理解を提供するため与えられる。しかしながら、新規な実施例はこれら具体的な詳細な市に実現可能であることは明らかであるかもしれない。他の例では、周知の構成及び装置は、その説明を容易にするため、ブロック図の形式で示される。その意図は、請求項の範囲内の全ての修正、均等及び代替をカバーすることである。
【００１７】
図１は、サーバ１００、計算装置３００及びデバッグ装置５００の１つ以上を含むウェイクロックデバッグシステム１０００の実施例のブロック図である。これらの計算装置１００，３００，５００のそれぞれは、限定することなく、デスクトップコンピュータシステム、データエントリ端末、ラップトップコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、携帯情報端末、スマートフォン、デジタルカメラ、衣服に搭載された装着式計算装置、車両（例えば、自動車、自転車、車いす）に一体化された計算装置、サーバ、サーバのクラスタ、サーバファームなどを含む各種タイプの計算装置の何れかであってもよい。
【００１８】
図示されるように、これらの計算装置１００，３００，５００の一部は、ネットワーク９９９を介し計算装置３００上で実行される１つ以上のルーチンによって要求されたウェイクロックのデバッグに関連する信号を交換してもよい。しかしながら、これらの計算装置の１つ以上は、ネットワーク９９９を介し更なる他の計算装置（図示せず）及び／又は互いに当該デバッグ処理に全く関連しない他のデータを交換してもよい。各種実施例では、ネットワーク９９９は、単一の建物又は他のやや限定的なエリア内で拡張することにおそらく限定された単一のネットワーク、かなりの距離におそらく拡張する接続されたネットワークの組み合わせであってもよく、及び／又はインターネットを含むものであってもよい。従って、ネットワーク９９９は、限定することなく、電気的及び／又は光学的に伝導的なケーブルを利用する有線技術、及び赤外線、ラジオ波又は他の形態の無線送信を利用する無線技術とを含む、信号が交換可能な各種通信技術の何れか（又は組み合わせ）に基づくものであってもよい。
【００１９】
各種実施例では、計算装置３００は、プロセッサコンポーネント３５０、クロック３５１、ストレージ３６０及び計算装置３００とネットワーク９９９とを結合するインタフェース３９０の１つ以上を有する。ストレージ３６０は、オペレーティングシステム３４０、デバイスドライバ３１０、システムデータ３３０、アプリケーションルーチン３４０、ログパッチルーチン１７７、ログデバイスドライバ１７１、システムログデータ３３７及び補完的ログデータ３３１の１つ以上を記憶する。オペレーティングシステム３４０、デバイスドライバ３１０、アプリケーションルーチン３７０、ログパッチルーチン１７７及びログデバイスドライバ１７１のそれぞれは、各種機能を実行するためのロジックを実現するため、計算装置３００のメインプロセッサコンポーネントとしてそれの役割においてプロセッサコンポーネント３５０上で実行される命令シーケンスを有する。
【００２０】
オペレーティングシステム３４０及びデバイスドライァｂ３１０を実行する際、プロセッサコンポーネント３５０は、アプリケーションルーチン３７０を実行するための各種形態のサポートを提供する。より詳細には、プロセッサコンポーネント３５０は、アプリケーションルーチン３７０が構成される何れかの機能を実行するためにアプリケーションルーチン３７０が実行可能な動作環境を提供するため、各種機能コールがアプリケーションルーチン３７０の実行中に行われることを可能にするアプリケーションプログラミングインタフェース（ＡＰＩ）を利用可能にする。各アプリケーションルーチン３７０は、ワードプロセッサ、ウェブサイトビューワ、フォトグラフエディタ、ミーティングスケジュール管理、ＣＡＤ／ＣＡＭなどを含む、各種の個人用途及び／又はプロフェッショナル用途の何れかを実行するためのオペレーティングシステム３４０のサポートによって、プロセッサコンポーネント３５０による計算装置３００上の実行のため選択された各種タイプのアプリケーションレベルルーチンの何れかであってもよい。プロセッサコンポーネント３５０はまた、計算装置３００のコンポーネントによる電力の消費を管理させられ、各種低電力及び高電力状態間で計算装置３００を遷移させることによって実行する。当業者には知られるように、少なくとも一部の低電力状態中、計算装置３００の機能は、計算装置３００の各種コンポーネントのクロック速度を低下させ、及び／又は電力を絶つことを含む、各種方法で低下されてもよい。
【００２１】
少なくともオペレーティングシステム３４によってアプリケーションルーチン３７０に提供されるコール可能な機能のうち、ウェイクロックを要求及び解放するためのコールがある。上述されたように、ウェイクロックの要求は、計算装置３００をアプリケーションルーチン３７０の１つ以上が計算装置３００により提供されるより完全なレベルの機能を利用し続けることを可能にするため、少なくとも一部の形態の低電力モードに計算装置を遷移させることを控えるためのオペレーティングシステム３４０に対するリクエストである。アプリケーションルーチン３７０の１つ以上は、アプリケーションルーチン３７０により実行される機能に少なくとも部分的に基づき、各種理由の何れかのためにウェイクロックを要求するためのコールをオペレーティングシステム３４０に送信してもよい。例えば、アプリケーションルーチン３７０の１つは、プロセッサコンポーネント３５０のクロック速度の低下又はインタフェースの機能の低下によって特徴付けされる低電力モードが、当該アプリケーションルーチン３７０が当該機能を実行するための能力を不可にするように、ネットワーク９９９を介し他の装置から受信されたデータのリアルタイムのモニタリングを実行してもよい。他の例として、アプリケーションルーチン３７０の１つは、計算装置３００に接続されたディスプレイから電力を絶つことによって、又はプロセッサコンポーネント３５０のクロック速度を低下させることによって特徴付けされる低電力モードが、当該アプリケーションルーチン３７０が何れかの機能を実行するための能力を中断させるように、ストレージ３６０内に記憶される動画ビデオの復号化及び再生を実行してもよい。
【００２２】
図３は、ウェイクロックを利用及びデバッグするための計算装置３００のコンポーネントの処理の実施例を示す。図示されるように、オペレーティングシステム３４０は、アプリケーションレベルウェイクロックを管理するアプリケーション電力マネージャ３４７と、アプリケーション電力マネージャ３４７に関連するカーネルレベルウェイクロックを含む、カーネルレベルウェイクロックを管理するカーネル電力マネージャ３４１との双方を含むものであってもよい。オペレーティングシステム３４０はまた、システムログデータ３３７を生成するシステムログ生成手段３４４を有してもよく、さらにシステムログデータ３３７に記録するため、計算装置３００の処理の各種パラメータをモニタするシステムモニタ３４５を有してもよい。
【００２３】
アプリケーションルーチン３７０の１つがウェイクロックを必要とするアプリケーションルーチン３７０の１つの通常の実行中、当該アプリケーションルーチン３７０の１つは、ウェイクロックを要求するコールをアプリケーション電力マネージャ３４７に送信する。使用されるコールは、アプリケーションルーチン３７０による利用のためにアプリケーション電力マネージャ３４７により提供されるＡＰＩのファンクションコールである。当該コールは、ウェイクロックを要求し、ウェイクロックに関連付けされるルーチンとして、コールを行ったアプリケーションルーチン３７０の１つを特定する識別情報を含む。当該識別情報は、コールのパラメータ及び／又は当該コールの送信元であって、当該アプリケーションルーチン３７０の一部がプロセッサコンポーネント３５０により実行されるスレッドの識別子として、アプリケーションルーチン３７０によって直接提供されるアプリケーションルーチン３７０の識別子を含むものであってもよい。オペレーティングシステム３４０は、コールの送信元のスレッドの識別子を、これらのスレッド上で実行されるアプリケーションルーチン３７０（及び他のルーチン）の特定の１つに関連付けるシステムデータ３３０内のマッピングデータを維持してもよい。システムデータ３３０は、オペレーティングシステム３４０の通常の処理に必要とされる各種データを有し、偶発的又は悪意のある変更を防ぐためにアクセスが大きく制限されるストレージ３６０内のある位置に記憶されてもよい。
【００２４】
ウェイクロックに対するリクエストを受信したことに応答して、アプリケーション電力マネージャ３４７は、アプリケーションレベルウェイクロックをインスタンス化し、それを要求したアプリケーションルーチン３７０の１つと関連付ける。これを実行する際、アプリケーション電力マネージャ３４７は、要求されたアプリケーションウェイクロックと、それを要求したアプリケーションルーチン３７０の１つとを関連付け、アプリケーションウェイクロックが現在保留中であることの通知を含むシステムデータ３３０内に維持されるウェイクロックデータへのエントリを生成してもよい。アプリケーションレベルウェイクロックのインスタンス化によって、アプリケーションレベルウェイクロックは、そのとき“アクティブ”又は“保留中”であり、１つのウェイクロックが保留中であるという事実は、計算装置３００が低電力状態に遷移することを妨げる。計算装置３００が低電力状態に遷移することが可能とされるため、アクティブ及び保留中である何れか及び全てのウェイクロックがまず解放される必要がある。アプリケーションルーチン３７０の１つに関連するウェイクロックを解放するための以降のコールを受信すると、当該以降のコールの識別情報が、何れのアプリケーションウェイクロックが解放されるか特定するのに利用され、ウェイクロックデータへのエントリはクリアされるか、又は当該ウェイクロックがもはや保留中でないという通知によってマーク付けされる。従って、保留中のウェイクロックを解放するためのコールは、当該ウェイクロックをもはやアクティブにせず、低電力状態への遷移を依然として妨げる１つ以上の他のウェイクロックが依然として保留中であったとしても、計算装置が低電力状態に遷移することをもはや妨げることはできない。上述されたように、アプリケーション電力マネージャ３４７は、何れかのアプリケーションレベルウェイクロックが保留中であるときはいつでも、全ての保留中のアプリケーションレベルウェイクロックを、それを要求したカーネル電力マネージャ３４１のより少数のカーネルレベルウェイクロックに集約する。すなわち、何れか保留中のアプリケーションレベルウェイクロックが有る限り、アプリケーション電力マネージャ３４７に関連する限定数のカーネルレベルウェイクロックをまた保留中にさせるため、カーネル電力マネージャと通信する。いくつかの実施例では、アプリケーション電力マネージャ３４７に関連するカーネルレベルウェイクロックは１つしかなくてもよい。
【００２５】
従って、ウェイクロックに対するリクエストが、何れのアプリケーションレベルウェイクロックもすでに保留中でない時点で、アプリケーション電力マネージャ３４７によって受信された場合、アプリケーション電力マネージャ３４７は、アプリケーション電力マネージャ３４７に関連するカーネルレベルウェイクロックに対するリクエストによって、カーネル電力マネージャ３４１に通知する。そうでなく、ウェイクロックに対するリクエストが、少なくとも１つのアプリケーションレベルウェイクロックがすでに保留中である時点でアプリケーション電力マネージャ３４７によって受信された場合、アプリケーション電力マネージャ３４７は、アプリケーション電力マネージャ３４７に関連するカーネルレベルウェイクロックに対するリクエストによってカーネル電力マネージャ３４１に再通知しなくてもよい。これは、カーネルレベルウェイクロックがすでに保留中であるべきであるためである。何れかのアプリケーションウェイクロックが保留中であることを止めるときにのみ（例えば、保留中の全てのアプリケーションレベルウェイクロックが解放された）、アプリケーション電力マネージャ３４７は、アプリケーション電力マネージャ３４７に関連するカーネルレベルウェイクロックを解放するためのコールをカーネル電力マネージャ３４１に送信する。
【００２６】
アプリケーション電力マネージャ３４１に関連するカーネルレベルウェイクロックを要求又は解放するためのアプリケーション電力マネージャ３４７からカーネル電力マネージャ３４１へのコールは、当該コールのソースとしてアプリケーション電力マネージャ３４１を特定する識別情報を含む。この同じコール機構がまた、オペレーティングシステム３４０の他のカーネルレベルコンポーネントによって、及び／又はデバイスドライバ３１０によって、カーネルレベルウェイクロックを直接要求又は解放するため利用されてもよい。アプリケーション電力マネージャ３４７により受信されるウェイクロックに関連するコールと同様に、カーネル電力マネージャ３４１により受信されたウェイクロックに関連するコールの少なくとも一部における識別情報は、コールのパラメータとしてコールの送信元により提供される識別子、及び／又はコールの送信元のスレッド又はオペレーティングシステムプロセスの識別子を含むものであってもよい。システムデータ３３０のマッピング情報は、スレッド又はオペレーティングシステムプロセスの識別子を、アプリケーション電力マネージャ３４７、オペレーティングシステム３４０のカーネルレベルコンポーネント又はデバイスドライバ３１０の１つと関連付けるため、カーネル電力マネージャ３４１により利用されてもよい。しかしながら、一部の実施例では、当該情報を提供する唯一のコールは、アプリケーション電力マネージャ３４７からのコールであってもよく、これらは、コールのソースとしてアプリケーション電力マネージャ３４７を特定しさえすればよい。カーネル電力マネージャ３４１はまた、何れのカーネルレベルウェイクロックが現在保留中であり、それらを要求したオペレーティングシステムコンポーネント又はデバイスドライバ３１０とのそれらの関連付けとを追跡するための機構として、システムデータ３３０のウェイクロックデータにおけるエントリを生成及びクリアしてもよい。上述されたように、カーネル電力マネージャ３４１は、各種低及び／又は高電力状態間で計算装置３００を遷移させることによって、保留中のウェイクロックの少なくとも有無に対して実行されるオペレーティングシステム３４０の部分であってもよい。
【００２７】
ウェイクロックを少なくとも要求するのに利用されるコールは、要求されたウェイクロックにおいて所望される特定の特性を示すためのパラメータとして、１つ以上のインジケータフラグを含むものであってもよいことに留意すべきである。例えば、ウェイクロックを要求するためのコールは、ウェイクロックが計算装置３００の特定のリソース又はコンポーネント（例えば、ディスプレイ、特定の記憶媒体デバイスなど）を低電力状態に配置することに対してロックすることに限定されることを指定してもよい。また、各種デバッグフラグ又はメッセージは、アプリケーションルーチンの一部の状態の表示、及び／又はアプリケーションルーチンの何れの部分がウェイクロックを必要としたかの表示を提供するため、ウェイクロックに関連するコールに含まれてもよい。このようなデバッグフラグ又はメッセージの搭載は、当該コールにおいて伝送されるパラメータであってもよい。さらに、少なくともカーネルレベルウェイクロックは、要求されたことに応答してインスタンス化されてから選択された期間が経過した後、保留であることを自動的に止める自己満了するウェイクロックであることが要求されてもよいことに留意すべきである。このような選択された期間は、ウェイクロックを要求するためのコールのパラメータとして指定されてもよいし、又は所定の期間であってもよい（例えば、パラメータとして異なる期間を指定することによってオーバライドされうるデフォルト期間など）。
【００２８】
オペレーティングシステム３４０の通常の実行中、システムログ生成手段３４４は、選択されたイベントセットの出現を記録するシステムログデータ３３７にエントリを反復的に加える。当該選択されたセットには、計算装置３００の電力状態間の変更の発生、システムエラーの発生、ストレージ３６０の特定部分に試みられた不適切なアクセスの発生（例えば、システムデータ３３０が記憶されている部分）などがあってもよい。システムモニタ３４５は、システムログデータ３３７に記録された情報の少なくとも一部をシステムログ生成手段３４４に供給するため、計算装置３００の処理の各種側面（例えば、それの現在の電力状態）をモニタしてもよい。システムログ生成手段３４４はまた、システムログデータ３３７に加えられるエントリをタイムスタンプする際に利用される現在時間を取得するため、クロック３５１と定期的に通信してもよい。
【００２９】
上述されたように、ウェイクロックのサポートの提供は、バッテリ（特に図示せず）などの計算装置の電力の限定的なソースの枯渇を生じさせるのに十分長くウェイクロックが誤って維持されるウェイクロックバグと伴う可能性がある。また上述されたように、オペレーティングシステムにより提供されるウェイクロックバグをデバッグするための典型的なサポートは、ウェイクロックがシステムログデータにおいて保留中であるか否かの表示だけでなく、何れのアプリケーションルーチン、オペレーティングシステムコンポーネント又はデバイスドライバが保留中のウェイクロックを有しているかの表示との包含である。
【００３０】
しかしながら、図３に示されるように、アプリケーション電力マネージャ３４７は、システムログデータ３３７における当該情報の欠落を解消するため、ログパッチルーチン１７７により拡張される。いくつかの実施例では、ログパッチルーチン１７７は、コール機構を介し接続するためアプリケーション電力マネージャ３４７（例えば、ログパッチルーチン１７７は、他のライブラリのものと代替されるコール可能なファンクションのライブラリを実装してもよい）に（動的又は静的に）リンクされてもよい。他の実施例では、ログパッチルーチン１７７は、より完全に接続するため、コンパイル前にアプリケーション電力マネージャ３４７に搭載されてもよい（例えば、双方の命令シーケンスが、コンパイル処理を介し単一の合成されたルーチンを効果的に生成するよう合成されてもよい）。更なる他の拡張の機構が当業者に想到しうる。
【００３１】
ログパッチルーチン１７７は、アプリケーション電力マネージャ３４７のものに追加される際、システムログデータ３３７に追加的データ３３４として記録するため、システムログ生成手段３４４に追加的なアプリケーションレベルウェイクロック情報を提供する命令シーケンスを含む。具体的には、ログパッチルーチン１７７は、ウェイクロックを要求又は解放するため、アプリケーションルーチン３７０からアプリケーション電力マネージャ３４７により受信されたコールをキャプチャする。ログパッチルーチン１７７は、それからシステムログ生成手段３４４が追加的データ３３４の一部として記録することを可能にするため、各コールの表示をシステムログ生成手段３４４に提供するため、アプリケーション電力マネージャ３４７と連携する（例えば、アプリケーション電力マネージャ３４７とシステムログ生成手段３４４との間の位置における通信を利用する）。これらの表示は、これらのコールに含まれるパラメータにおいて示されるように、及び／又はシステムデータ３３０内に維持されるマッピングデータを参照することから導出されるように、これらのコールを生成するアプリケーションルーチン３７０のそれぞれを識別する識別情報を有してもよい。さらに、アプリケーション電力マネージャ３４７は、プロセッサコンポーネント３５０によるログパッチルーチン１７７の実行によって、追加的データ３３４の一部として記録のため、カーネル電力マネージャ３４１に対するアプリケーション電力マネージャ３４７により生成された各コールの表示をシステムログ生成手段３４４に更に提供させるものであってもよい。システムログデータ３３７において生成される他のエントリに関して、追加的データ３３４を構成する追加的なエントリがまたタイムスタンプされる。
【００３２】
さらに、図３にまた示されるように、ログデバイスドライバ１７１は、デバイスドライバ（デバイスドライバ３１０など）からのウェイクロックコールをサポートするため、カーネル電力マネージャ３４１により少なくとも部分的に提供されるドライバプログラミングインタフェース（ＤＰＩ）を介しカーネル電力マネージャ３４１と通信するデバイスドライバセット３１０に加えられる。カーネル電力マネージャ３４１により少なくとも部分的に提供されるＤＰＩは、少なくともウェイクロックに関するカーネル電力マネージャ３４１により受信されたコールがデバイスドライバに再送可能なコールバック機構のサポートを含むものであってもよい。ログデバイスドライバ１７１は、プロセッサコンポーネント３５０により実行されるとき、ウェイクロックを要求又は解放するためカーネル電力マネージャ３４１により受信された各コールがログデバイスドライバ１７１に中継されるように、当該機構のみの呼出を要求するためのコールをカーネル電力マネージャ３４１に送信する命令シーケンスを有する。さらに、ログデバイスドライバ１７１は、各コールの発生を示すエントリにより補完的ログデータ３３１を生成するため、それに中継されたウェイクロックコールを解析する。これらの表示は、これらのコールに含まれるパラメータにおいて示されるように、及び／又はシステムデータ３３０内に維持されるマッピングデータを参照することから導出可能であるように、これらのコールを生成するデバイスドライバ３１０のそれぞれを特定する識別情報を含むものであってもよい。システムログ生成手段３４４により生成されたエントリに関して、補完的ログデータ３３１において生成されたエントリは、ログデバイスドライバ１７１によりタイムスタンプされる。これを実行する際、ログデバイスドライバ１７１は、システムログ生成手段３４４と同様に、現在時間を提供するためクロック３５１に依拠してもよい。
【００３３】
追加的データ３３４のエントリによるシステムログデータ３３７の拡張及び／又は補完的ログデータ３３１の生成は、システムログデータ３３７により大きなイベントセットを記録するエントリを含める“デバッグモード”を有効又は無効にする同一のモード設定によって選択的にトリガされてもよい。上述されるように、計算装置３００のオペレータの制御の下でデバッグモードに入ったり出たりする切替のためのサポートが提供されてもよい。従って、オペレーティングシステム３４０は、１つ以上のアプリケーションレベル又はカーネルレベルウェイクロックがすでに配置されていてもよいように、ログパッチルーチン１７７及び／又はログデバイスドライバ１７１の機能が有効にされるまでのある時間において、プロセッサコンポーネント３５０により実行されてもよい。いくつかの実施例では、ログパッチルーチン１７７は、有効にされると、追加的データ３３４の一部として記録するため、システムログ生成手段３４４４にすでに保留中の全てのアプリケーションレベルウェイクロックの表示をアプリケーション電力マネージャ３４７に提供させてもよい。さらに、少なくともログパッチルーチン１７７は、アプリケーション電力マネージャ３４７に、システムデータ３３０のマッピングデータの少なくとも一部を抽出させ、追加的データ３４４の一部として記録するためシステムログ生成手段３４４に提供させてもよい。
【００３４】
図１を参照して、計算装置３００は、ネットワーク９９９を介し、及び／又は他の機構によって（例えば、着脱可能な記憶媒体の利用によって）サーバ１００からログパッチルーチン１７１及びログデバイスドライバ１７７を受信してもよい。あるいは、特に示されていないが、計算装置３００は、存在する場合、デバッグ装置５００からログパッチルーチン１７１及びログデバイスドライバ１７７を受信してもよい。さらに、それらが統合されるように、ログパッチルーチン１７１がアプリケーション電力マネージャ３４７と共にコンパイルされることが与えられると、計算装置３００は、統合されたログパッチルーチン１７１と共にあるバージョンのアプリケーション電力マネージャ３４７を受信することによって、ログパッチルーチン１７１を受信してもよい。
【００３５】
各種実施例では、デバッグ装置５００（存在する場合）は、プロセッサコンポーネント５５０、ストレージ５６０、コントロール５２０、ディスプレイ５８０、及びデバッグ装置５００とネットワーク９９９とを接続するためのインタフェース５９０の１つ以上を有する。ストレージ５６０は、システムログデータ３３７、補完的ログデータ３３１、揃えられたトレースデータ５３４及びデバッグルーチン５７０を記憶する。デバッグルーチン５７０は、各種機能を実行するためのロジックを実現するため、リモート計算装置５００のメインプロセッサコンポーネントとしてそれの役割においてプロセッサコンポーネント５５０上で実行される命令シーケンスを有する。
【００３６】
デバッグルーチン５７０を実行する際、プロセッサコンポーネント５５０は、ネットワーク９９９を介し、又は他の機構を介し（例えば、着脱可能な記憶媒体の利用を介し）計算装置３００からシステムログデータ３３７及び補完的ログデータ３３１を受信する。プロセッサコンポーネント５５０は、システムログデータ３３７（追加的データ３３４を含む）及び補完的ログデータ３３１のそれぞれを解析し、何れかのマッピングデータと共に、ワークロックに関連するイベント又は他の情報の全ての表示を抽出する。プロセッサコンポーネント５５０はまた、計算装置３００の各種コンポーネントのアクティビティのレベル又はタイプに関する情報を抽出してもよい（例えば、プロセッサの利用レベル及び／又はクロック速度、インタフェース３９０を介したデータフローレート、記憶装置の着脱可能媒体からのデータ抽出レートなど）。プロセッサコンポーネント５５０は、システムログデータ３３７又は補完的ログデータ３３１の何れかに含まれる何れかのマッピングデータを利用して、ウェイクロックに関連するエントリにおける識別情報とオペレーティングシステム３４０のコンポーネント及び／又はアプリケーションルーチン３７０の特定のものとを関連付けてもよい。その後、プロセッサコンポーネント５５０は、タイムスタンプによってイベントの表示を伝送するエントリを時間的に関連付け、それらを整列されたトレースデータ５３４として記憶する。
【００３７】
プロセッサコンポーネント５５０は、整列されたトレースデータ５３４の時間的に整列されたエントリの各種組み合わせを以降に抽出し、ディスプレイ５８０上に通常の期間において発生したイベントのタイムラインの時間的に整列されたグラフとしてそれらを視覚的に提示する。プロセッサコンポーネント５５０は、時間的に整列されたグラフの何れの組み合わせが表示されるべきか、及び／又は整列されたトレースデータ５３４によってカバーされる何れの期間が表示されるべきかを選択するため、デバッグ装置５００のオペレータによってコントロール５２０の操作から入力を受信するため、コントロール５２０をモニタリングしてもよい。
【００３８】
図４，５，６はそれぞれ、計算装置３００の処理中に経時的に行われたウェイクロックの使用に関連するイベントの時間的に整列されたグラフの組み合わせについて、ディスプレイ５８０上に視覚的に提示されうるイメージ８８０の一例となる実施例を示す。図示され、説明されるように、このような時間的整列は、ウェイクロックに関連するイベント間の可能性のある因果関係の関連付けを特定するのに役立ち、これにより、ウェイクロックバグのインスタンスをデバッグするのに役立つ。
【００３９】
図４は、ウェイクロックに対するリクエストに応答したウェイクロックのインスタンス化及び／又はこれを実行するためのリクエストに応答したウェイクロックの解放など、ウェイクロックに関連するイベントのタイムラインをそれぞれ提示する複数のウェイクロックグラフ８８１，８８４，８８７の視覚的提示を示す。それぞれが異なるアプリケーションルーチン（アプリケーションルーチン３７０のそれぞれなど）に関連する２つのアプリケーションレベルウェイクロック及びアプリケーション電力マネージャ３４７に関連するカーネルレベルウェイクロックを含む、経時的な異なる３つのウェイクロックのインスタンス化及び解放の３つの時間的に整列されたウェイクロックグラフ８８７が具体的に示される。また、ウェイクロックグラフ８８１が３つのウェイクロックグラフ８８７と時間的に整列されるように、同じ期間におけるデバイスドライバ（デバイスドライバ３１０の１つなど）に関連するカーネルレベルウェイクロックのインスタンス化及び解放のウェイクロックグラフ８８１が示される。さらに、ウェイクロックグラフ８８４ウェイクロックグラフ８８７，８８１と時間的に整列されるように、同じ期間におけるオペレーティングシステムのカーネルレベルコンポーネントに関連するカーネルレベルワイクロックのインスタンス化及び解放のウェイクロックグラフ８８４が示される。更にまた、アクティビティグラフが上述したウェイクロックグラフに時間的に整列されるように、同じ期間においてプロセッサコンポーネント３５０、インタフェース３９０及び着脱可能な記憶装置（例えば、上記の図の何れにも具体的に示されていないディスクメディアリーダなど）のアクティビティレベルのタイムラインの３つのアクティビティグラフ８８５が示される。また更に、電力状態グラフ８８３が上述したウェイクロックグラフに時間的に整列されるように、同じ期間において電力状態間の計算装置３００の遷移のタイムラインの電力状態グラフ８８３が示される。
【００４０】
３つのウェイクロックグラフ８８７の時間的な整列は、アプリケーション電力マネージャ３４７に関連する２つのアプリケーションレベルウェイクロックを集約したものを表すカーネルレベルウェイクロックのインスタンス化及びリリースを生じさせる２つのアプリケーションレベルウェイクロックのインスタンス化及びリリースの因果関係を可視化する。より詳細には、２つのアプリケーションレベルウェイクロックの何れかが保留中であるとき、カーネルレベルウェイクロックは保留中のままであることが確認できる。また、インタフェース３９０のアクティビティグラフ８８５の１つ（例えば、“ネットワークアクティビティ”のアクティビティグラフ８８５など）によるウェイクロックグラフ８８１の時間的な整列は、インタフェース３９０のアクティビティにデバイスドライバのカーネルレベルウェイクロックの間に存在する関係の視覚的ヒントを提供する。計算装置３００の３つの特定のコンポーネントのアクティビティの図示にも関わらず、他のコンポーネント及び／又はより多く又はより少ないコンポーネントのアクティビティが含まれてもよいことに留意すべきである。さらに、アクティビティが示されうるコンポーネントは、単一の（又は少数の）半導体デバイス（例えば、“システム・オン・チップ”又はＳＯＣ）の回路の物理的に離散的なコンポーネント及び／又は機能ブロックであってもよい。確認できるように、ある量のネットワークアクティビティが開始され、その後、ウェイクロックが必要とされたことが、インタフェース３９０に関連するデバイスドライバによって明らかに決定され、デバイスドライバに１つを要求させる。その後、ネットワークアクティビティが停止すると、カーネルレベルウェイクロックがデバイスドライバによって解放される。さらに、ウェイクロックグラフ８８１，８８４，８８７との電力状態グラフ８８３の時間的関係は、計算装置の電力状態とウェイクロックの係属との間の因果関係を可視化する。具体的には、保留中のウェイクロックがない場合、計算装置３００は、低電力状態に入ることが可能とされ（対角線のハッチングによって電力状態グラフ８８３において示される）、保留中の少なくとも１つのウェイクロックがある場合、計算装置３００は、高電力状態に強制的に留まる（正方形のハッチングによって電力状態グラフ８８３において示される）。
【００４１】
図５は、着脱可能な記憶媒体装置に関連する単一のアクティビティグラフ（例えば、“ディスクリーダ”のアクティビティグラフなど）と時間的に整列されたアプリケーションルーチンに関連するアプリケーションレベルウェイクロックの単一のウェイクロックグラフ８８７の視覚的提示のよりシンプルな具体例を示す。これら２つのグラフの時間的整列は、ディスクリーダのアクティビティが低電力状態への可能性のある遷移からの中断なく継続することを可能にするためのウェイクロックを要求するウェイクロックグラフ８８７にマーク付けされたコールとディスクリーダの一部に対するアクティビティの開始との間の因果関係を確認することを可能にする。しかしながら、これら２つのグラフの時間的整列は、ディスクリーダのアクティビティの悪人が終了すると、コールの欠落がウェイクロックを解放することを可能にする。当業者に知られるように、これは、命令シーケンスにおけるエラーがウェイクロックを要求するが、解放しないウェイクロックバグの“ノー・スリープ・コード・バグ（ｎｏ  ｓｌｅｅｐ  ｃｏｄｅ  ｂｕｇ）”バージョンの表示を提供するものであってもよい。命令シーケンスは、ウェイクロックを解放するのに必要とされるコールを欠落するか、又は命令シーケンスのロジックは、ウェイクロックの解放をコールするための命令が実行されない方法で不具合となりうる。
【００４２】
図６は、アプリケーションルーチン（例えば、アプリケーションルーチン３７０の１つ）に関連する単一のアプリケーションレベルウェイクロックに関連するイベントの３つの時間的に整列されたウェイクロックグラフ８８７の視覚的提示のよりシンプルな具体例を示す。これらのウェイクロックグラフ８８７の２つは、ウェイクロックを要求して解放するため同一のアプリケーションルーチンに関連する２つの別々のスレッドにより生成されるコールを視覚的に示す。これら２つのウェイクロックグラフ８８７の時間的整列は、２つのスレッドの間の命令の実行タイミングが、ウェイクロックを要求するためのコールが解放するためのコールの後に行われるウェイクロックバグの可能性のある“ノー・スリープ・レース条件（ｎｏ  ｓｌｅｅｐ  ｒａｃｅ  ｃｏｎｄｉｔｉｏｎ）”バージョンを容易に可視化する。これらのウェイクロックグラフ８８７の３番目とのこれら２つのウェイクロックグラフ８８７の時間的整列は更に、２つのコールが生成された順序の因果関係と、要求されたウェイクロックの結果としてのインスタンス化及び以降の解放の欠落を示す。
【００４３】
図２は、計算装置３００の他の実施例を含むウェイクロックデバッグシステム１０００の他の実施例のブロック図を示す。図２のウェイクロックデバッグシステム１０００の他の実施例は、多くの方法で図１の実施例と類似し、従って、同様の参照番号は全体を通じて同様のコンポーネントを参照するのに用いられる。しかしながら、図１の計算装置３００と異なって、図２の計算装置３００は更に、図１のデバッグ装置５００の特徴を含む。従って、別のデバッグ装置５００は実行する代わりに、時間の経過と共に発生するウェイクロックの使用に関連するイベントの時間的に整列されたタイムライングラフを解析し、時間的に整列し、視覚的に提示するのは、図２の計算装置３００のプロセッサコンポーネント３５０である。また、別のデバッグ装置５００のコントロール５２０及びディスプレイ５８０が実行する代わりに、視覚的提示を提供及び制御するのに利用されるのは、図２の計算装置３００のディスプレイ３８０及びコントロール３２０である。
【００４４】
各種実施例では、プロセッサコンポーネント３５０，５５０のそれぞれは、広範な市販のプロセッサの何れかを含むものであってもよい。さらに、これらのプロセッサコンポーネントの１つ以上は、複数のプロセッサ、マルチスレッドプロセッサ、マルチコアプロセッサ（複数のコアが同一の又は別のダイ上に共存するか否かに関わらず）、及び／又は複数の物理的に別のプロセッサがある方法でリンクされる他の多様性を有するマルチプロセッサアーキテクチャを含むものであってもよい。
【００４５】
各種実施例では、ストレージ３６０，５６０のそれぞれは、おそらく電力の中断されない供給を必要とする揮発性技術を含むと共に、おそらく着脱可能であってもよいし、又はなくてもよい機械可読記憶媒体の使用を伴う技術を含む、広範な各種情報記憶技術の何れかに基づくものであってもよい。従って、これらのストレージのそれぞれは、限定することなく、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｍａｎｉｃ  ＲＡＭ）、ＤＤＲ−ＲＡＭ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ  ＤＲＡＭ）、ＳＤＲＡＭ（Ｓｕｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、ポリマメモリ（例えば、強誘電性ポリマメモリ）、オボニックメモリ、相変化若しくは強誘電性メモリ、ＳＯＮＯＳ（Ｓｉｌｉｃｏｎ−Ｏｘｉｄｅ−Ｎｉｔｒｉｄｅ−Ｓｉｌｉｃｏｎ）メモリ、磁気若しくは光カード、１つ以上の個別の強誘電性ディスクドライブ、又は１つ以上のアレイ（例えば、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）アレイ）に編成される複数の記憶装置を含む広範な各種タイプ（又はタイプの組み合わせ）の何れかを含むものであってもよい。これらのストレージのそれぞれは単一のブロックとして示されているが、これらの１つ以上は異なる記憶技術に基づきうる複数の記憶装置を含むものであってもよいことに留意すべきである。従って、例えば、これら図示されたストレージのそれぞれの１つ以上は、光ドライブ又はフラッシュメモリカードリーダの組み合わせを表すものであってもよく、これによって、プログラム及び／又はデータは、機械可読記憶媒体、相対的に延長された期間にローカルにプログラム及び／又はデータを記憶するための強誘電性ディスクドライブ、及びプログラム及び／又はデータへの相対的に迅速なアクセスを可能にする１つ以上の揮発性ソリッドステートメモリ装置（例えば、ＳＲＡＭ又はＤＲＡＭ）のある形態で記憶及び伝送されうることが留意されるべきである。また、これらのストレージのそれぞれは同一の記憶技術に基づき複数のストレージコンポーネントから構成されてもよいが、使用中の特殊性の結果として個別に維持されてもよい（例えば、あるＤＲＡＭ装置はメインストレージとして利用されるが、他のＤＲＡＭ装置はグラフィックコントローラのフレームバッファとして利用される）ことが留意されるべきである。
【００４６】
各種実施例では、インタフェース３９０，５９０のそれぞれは、説明されたように、計算装置が他の装置に結合されることを可能にする広範な各種シグナリング技術の何れかを利用してもよい。これらのインタフェースのそれぞれは、当該結合を可能にするための必須の機能の少なくとも一部を提供する回路を有してもよい。しかしながら、これらのインタフェースのそれぞれはまた、プロセッサコンポーネントの対応するものによって実行される命令シーケンスにより少なくとも部分的に実現されてもよい（例えば、プロトコルスタック又は他の機能を実現するため）。電気的及び／又は光学的に伝導性のケーブリングが利用される場合、これらのインタフェースは、限定することなく、ＲＳ−２３２Ｃ、ＲＳ−４２２、ＵＳＢ、イーサネット（登録商標）（ＩＥＥＥ−８０２．３）又はＩＥＥＥ−１３９４を含む、各種工業規格の何れかに準拠するシグナリング及び／又はプロトコルを利用してもよい。無線信号伝送の利用を伴う場合、これらのインタフェースは、限定することなく、ＩＥＥＥ８０２．１１ａ、８０２．１１ｂ、８０２．１１ｇ、８０２．１６、８０２．２０（“モバイル・ブロードバンド・ワイヤレス・アクセス”として通常参照される）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ、又はＧＳＭ（登録商標）／ＧＰＲＳ（ＧＳＭ（登録商標）  ｗｉｔｈ  Ｇｅｎｅｒａｌ  Ｐａｃｋｅｔ  Ｒａｄｉｏ  Ｓｅｒｖｉｃｅ）、ＣＤＭＡ／１ｘＲＴＴ、ＥＤＧＥ（Ｅｎｈａｎｃｅｄ  Ｄａｔａ  Ｒａｔｅｓ  ｆｏｒ  Ｇｌｏｂａｌ  Ｅｖｏｌｕｔｉｏｎ）、ＥＶ−ＤＯ（Ｅｖｏｌｕｔｉｏｎ  Ｄａｔａ  Ｏｎｌｙ／Ｏｐｔｉｍｉｚｅｄ）、ＥＶ−ＤＶ（Ｅｖｏｌｕｔｉｏｎ  Ｆｏｒ  Ｄａｔａ  ａｎｄ  Ｖｏｉｃｅ）、ＨＳＤＰＡ（Ｈｉｇｈ  Ｓｐｅｅｄ  Ｄｏｗｎｌｉｎｋ  Ｐａｃｋｅｔ  Ａｃｃｅｓｓ）、ＨＳＵＰＡ（Ｈｉｇｈ  Ｓｐｅｅｄ  Ｕｐｌｉｎｋ  Ｐａｃｋｅｔ  Ａｃｃｅｓｓ）、４Ｇ  ＬＴＥなどのセルラ無線サービスを含む、各種工業規格の何れかに準拠するシグナリング及び／又はプロトコルを利用してもよい。
【００４７】
図７，８，９はそれぞれ、図１又は図２の何れかのヘテロジーニアスコア処理システム１０００の実施例の一部のブロック図をより詳細に示す。より詳細には、図７は、図７は、プロセッサコンポーネント３５０が、オペレーティングシステム３４０及びログパッチルーチン１７７を実行する際、エンハンスされた特異性によってアプリケーションレベルウェイクロックに関連するイベントをシステムログデータ３３７に記録する計算装置３００の動作環境の態様を示す。図８は、プロセッサコンポーネント３５０が、オペレーティングシステム３４０及びログデバイスドライバ１７１を実行する際、カーネルレベルウェイクロックに関連するイベントを補完的ログデータ３３１に記録する計算装置３００の動作環境の態様を示す。図９は、プロセッサコンポーネント３５０又は５５０がそれぞれ、デバッグルーチン５７０を実行する際、システムログデータ３３７及び補完的ログデータ３３４を用いて、ウェイクロックのデバッグを支援するために時間的に整列されたイベントのタイムライングラフを視覚的に提示する計算装置３００又はデバッグ装置５００の何れかの動作環境の態様を示す。
【００４８】
当業者に認識可能であるように、それぞれが構成されるコンポーネントを含む、オペレーティングシステム３４０、ログパッチルーチン１７７、ログデバイスドライバ１７１及びデバッグルーチン５７０が、プロセッサコンポーネント３５０又は５５０の適用可能なものを実現するため選択された何れかのタイプのプロセッサ上で動作可能となるよう選択される。各種実施例では、それぞれを構成する命令シーケンスは、オペレーティングシステム、デバイスドライバ及び／又はアプリケーションレベルルーチン（例えば、いわゆる、ディスク媒体上に提供される“ソフトウェアスーツ（ｓｏｆｔｗａｒｅ  ｓｕｉｔｅｓ）”、リモートサーバから取得される“アプレット”）の１つ以上を有してもよい。オペレーティングシステムが含まれる場合、オペレーティングシステムは、プロセッサコンポーネント３５０又は５５０の何れか対応するものに適した各種の利用可能なオペレーティングシステムの何れかであってもよい。１つ以上のデバイスが含まれる場合、これらのデバイスドライバは、ハードウェア又はソフトウェアコンポーネントに関わらず、計算装置３００又は５００の対応するものの他の各種コンポーネントの何れかのサポートを提供してもよい。
【００４９】
オペレーティングシステム３４０及びデバッグルーチン５４０のそれぞれは、説明されたように、ネットワーク９９９を介し信号を送受信するため、それぞれインタフェース３９０又は５９０を実行するためのプロセッサコンポーネント３５０又は５５０により実行可能な通信コンポーネント３４９又は５４９を有してもよい。交換される信号のうち、ログパッチルーチン１７７及び／又はログデバイスドライバ１７１をサーバ１００又はデバッグ装置５００の何れかから計算装置３００に伝送する信号があってもよい。あるいは、又は更に、交換される信号のうち、システムログデータ３３７及び補完的ログデータ３３１を計算装置３００からデバッグ装置５００に伝送する信号があってもよい。当業者に認識されるように、これらの通信コンポーネントは、インタフェース３９０，５９０の対応するものを実現するため何れのタイプのインタフェース技術が選択されても動作可能であるよう選択される。
【００５０】
より詳細には、図７を参照して、ログパッチルーチン１７７は、ウェイクロックを要求又は解放するためアプリケーションルーチン３７０から入力されるコールを傍受するため、プロセッサコンポーネント３５０により実行可能なキャプチャコンポーネント１７７７を有してもよい。キャプチャコンポーネント１７７７は、限定することなく、アプリケーションルーチン３７０の何れがコールを送信したかの識別情報、アプリケーションルーチン３７０の１つの何れのプロセスがコールを送信したかの識別情報、又はウェイクロックが適用する計算装置３００の１つ以上の特定のコンポーネントを示す１つ以上のフラグを含む、これらのコールにおいて伝送されるパラメータの１つ以上をキャプチャする。あるいは、又は更に、キャプチャコンポーネント１７７７は、コールを送信したアプリケーションルーチン３７０の一部がプロセッサコンポーネント３５０により実行されるスレッドを特定してもよい。
【００５１】
ログパッチルーチン１７７は、アプリケーションレベルウェイクロックを要求又は解放するためのコール、マッピングデータ及び／又は現在保留中のウェイクロックのウェイクロックデータの受信の通知を、システムログデータ３３７に追加的データ３３４の一部として記録されるシステムログ生成手段３４４に提供するため、プロセッサコンポーネント３５０により実行可能な中継コンポーネント１７７４を有してもよい。いくつかの実施例では、システムログ生成手段３４４はシステムログデータ３３７を生成する際に生成される全てのエントリの全てのタイムスタンプを提供してもよいが、中継コンポーネント１７７４は、あるいは、又は更に、システムログ生成手段３４４に伝送されるウェイクロックに関連するイベントの通知をタイムスタンプする際に利用するため、クロック３５１からより直接的に現在時間の通知を受信してもよい。
【００５２】
より詳細には、図８を参照して、ログデバイスドライバ１７１は、カーネル電力マネージャ３４１に対して行われるカーネルレベルウェイクロックを要求又は解放するための全てのコールがログデバイスドライバ１７１に中継されるよう調整するため、カーネル電力マネージャ３４１によって提供されるＤＰＩのコールバック機構の利用を要求するコールによって、カーネル電力マネージャ３４１に通知するためプロセッサコンポーネント３５０により実行可能なコールコンポーネント１７１３を含むものであってもよい。これは、デバイスドライバ３１０、アプリケーション電力マネージャ３４７及びオペレーティングシステム３４０の他のコンポーネントの１つ以上によって行われるカーネルレベルウェイクロックに対するコールを含む。いくつかの実施例では、コールコンポーネント１７１３はまた、何れのデバイスドライバ３１０及び／又はオペレーティングシステム３４０の何れのコンポーネントが要求したかを示す識別情報と共に、何れのカーネルレベルウェイクロックがすでに保留中であるかの通知を要求するコールによって、カーネル電力マネージャ３４１に通知してもよい。これは、関連するデバイスドライバ又はオペレーティングシステムコンポーネント（例えば、要求元のデバイスドライバ又はオペレーティングシステムコンポーネント）に関連する保留中のカーネルレベルウェイクロックの通知を含むシステムデータ３３０の一部として維持されるウェイクロックデータの少なくとも一部をカーネル電力マネージャ３４１に抽出させるものであってもよい。
【００５３】
ログデバイスドライバ１７１は、カーネル電力マネージャ３４１がカーネルレベルウェイクロックを要求又は解放するため受信するコールの通知をカーネル電力マネージャ３４１から受信するように、プロセッサコンポーネント３５０により実行可能な受信コンポーネント１７１１を有してもよい。カーネル電力マネージャ３４１によるこれらの通知の提供は、上述されたように、コールバック機構を呼び出すためカーネル電力マネージャに対してコールコンポーネント１７１３によって行われるコールに応答してもよい。受信コンポーネント１７１１はまた、現在保留中のカーネルレベルウェイクロック、及び／又は要求元のデバイスドライバ３１０及び／又はオペレーティングシステムのコンポーネントのカーネル電力マネージャ３４１から受信した通知をキャプチャしてもよい。
【００５４】
ログデバイスドライバ１７１は、補完的ログデータ３３１を生成するように、プロセッサコンポーネント３５０により実行可能なログコンポーネント１７１４を有してもよい。これを実行する際、ログコンポーネント１７１４は、現在保留中のウェイクロックのカーネルレベルウェイクロック及び／又はウェイクロックデータを要求又は解放するためのコールの通知を補完的ログデータ３３１に記憶する。ログコンポーネント１７１４は、カーネルレベルウェイクロックを要求又は解放するためのコールなど、補完的ログデータ３３１に記録されたカーネルレベルウェイクロックに関連するイベントの通知をタイムスタンプする際に利用されるクロック３５１からの現在時間の通知を受信する。
【００５５】
より詳細には、図９を参照して、デバッグルーチン５７０は、計算装置３００のコンポーネントのアクティビティの態様を示すエントリと共に、ウェイクロックに関連するエントリを抽出するため、システムログデータ３３７及び補完的ログデータ３３１のエントリを解析するように、プロセッサコンポーネント３５０又は５５０の何れかによって実行可能な関連付けコンポーネント５７４を有してもよい。関連付けコンポーネント５７４は、抽出されたエントリを時間的に整列し、それらを組み合わせ、整列されたトレースデータ５３４を生成する。これを実行する際、関連付けコンポーネント５７４はまた、アプリケーションレベル及び／又はカーネルレベルウェイクロックと、オペレーティングシステム３４０のルーチン、プロセス、スレッド、コンポーネントなどの識別情報とを関連付けて、それらの間の関連付けを特定及び利用して、整列されたトレースデータ５３４にエントリを更に関連付けるため、システムログデータ３３７又は補完的ログデータ３３１の何れかに含まれる何れかのマッピングデータを抽出してもよい。
【００５６】
デバッグルーチン５７０は、ウェイクロックに関連するイベントの時間的に整列されたグラフ、計算装置３００のコンポーネントのアクティビティ及び／又は整列されたトレースデータ５３４に示される計算装置３００の電力状態間の遷移のイメージ８８０をディスプレイ３８０又は５８０にそれぞれ視覚的に提示するように、プロセッサコンポーネント３５０又は５５０の何れかによって実行可能な提示コンポーネント５７８を有してもよい。説明されたように、提示コンポーネント５７８は、イメージ８８０に視覚的に提示されるべきコンポーネントのアクティビティレベル、ウェイクロックに関連する各種イベントを選択するため、計算装置３００又はデバッグ装置５００のそれぞれのオペレータによるコントロールの処理の通知を受信するため、コントロール３２０又は５２０をモニタしてもよい。あるいは、又は更に、コントロール３２０又は５２０は、イメージ８８０において視覚的に提示されるべき整列されたトレースデータによってカバーされる期間の一部を選択するため、処理の通知を受信するようにモニタされてもよい。
【００５７】
図１０は、ロジックフロー２１００の一実施例を示す。ロジックフロー２１００は、ここに説明される１つ以上の実施例により実行される処理の一部又は全てを表すものであってもよい。より詳細には、ロジックフロー２１００は、少なくともオペレーティングシステム３４０及びログパッチルーチン１７７を実行する際にプロセッサコンポーネント３５０により実行され、及び／又は計算装置３００の他のコンポーネントにより実行される処理を示すものであってもよい。
【００５８】
２１１０において、ウェイクロックデバッグシステムの計算装置のプロセッサコンポーネント（例えば、ウェイクロックデバッグシステム１０００の計算装置３００のプロセッサコンポーネント３５０など）は、アプリケーション電力マネージャの命令シーケンスを拡張するため、命令シーケンスから構成されるパッチルーチンを実行する（例えば、オペレーティングシステム３４０のアプリケーション電力マネージャ３４７を拡張するログパッチルーチン１７７）。これを実行する際、パッチルーチンの機能が有効にされた時点で、すでに保留中の何れかのアプリケーションレベルウェイクロックの通知を収集するため、２つの命令シーケンスの間の協調がもたらされる。説明されたように、これは、オペレーティングシステムにより維持されるデータ構造（例えば、システムデータ３３０の一部として維持されるウェイクロックデータなど）にアクセスするアプリケーション電力マネージャが、それらを要求した結果としてそれらに関連付けされるアプリケーションルーチンの識別子と保留中のウェイクロックとを関連付けるデータ構造のエントリを抽出することを伴うものであってもよい。このようなデータ構造のこのようなエントリはまた、ウェイクロックの何れが保留中であるかの通知を維持してもよいか、又は保留中のウェイクロックのエントリをのみを有してもよい。
【００５９】
２１２０において、パッチルーチンが有効にされた時点ですでに保留中の何れかのウェイクロックの通知が、オペレーティングシステムのシステムログ生成手段（例えば、オペレーティングシステム３４０のシステムログ生成手段３４４など）によって生成されるシステムログデータに記録される。上述されたように、アプリケーション電力マネージャは、いくつのウェイクロックが保留中であるか、又は関連するアプリケーションルーチンの通知なく、保留中のウェイクロックが存在するというかなり限られた通知のみを提供するため、システムログ生成手段とすでに通常は通信する。
【００６０】
２１３０において、アプリケーションルーチンをプロセッサコンポーネントにより実行されるプロセス及び／又はスレッドにマッピングするマッピング情報を収集するため、パッチルーチンとアプリケーション電力マネージャとの間の更なる連携がもたらされる。上述されたように、これは、オペレーティングシステムにより維持される他のデータ構造（例えば、システムデータ３３０の一部として維持されるマッピングデータ）にアクセスするアプリケーション電力マネージャが、関連付けの通知を提供するマッピングデータのエントリを抽出することを伴うものであってもよい。２１４０において、収集されたマッピング情報の通知が、システムログデータに記憶される。
【００６１】
２１５０において、ウェイクロックを要求又は解放するためアプリケーション電力マネージャにより受信されるコールが傍受される。上述されたように、このようなコールを傍受する際、パッチルーチンは、コールとそれを要求したアプリケーションルーチンとを関連付ける識別情報、ウェイクロックが適用する計算装置の特定のコンポーネントを示す１つ以上のフラグ、及び／又はパラメータとして含まれうるデバッグ情報を含むものであってもよい、これらのコールにより伝送されるパラメータを受信する。
【００６２】
２１６０において、傍受されたコールの通知をシステムデータ生成手段に提供するため、アプリケーション電力マネージャとシステムデータ生成手段との間の通信を利用するため、パッチルーチンとアプリケーション電力マネージャとの間の更なる連携がもたらされる。上述されたように、これは、システムデータ生成手段にパラメータ情報を含む傍受されたコールのためのシステムログデータにおけるエントリを生成させる。
【００６３】
図１１は、ロジックフロー２２００の一実施例を示す。ロジックフロー２２００は、ここに説明される１つ以上の実施例により実行される処理の一部又は全てを表すものであってもよい。より詳細には、ロジックフロー２２００は、少なくとも制御ルーチン３４０及びログデバイスドライバ１７１を実行する際にプロセッサコンポーネント３５０により実行され、及び／又は計算装置３００の他のコンポーネントにより実行される処理を示すものであってもよい。
【００６４】
２２１０において、ウェイクロックデバッグシステムの計算装置のプロセッサコンポーネント（例えば、ウェイクロックデバッグシステム１０００の計算装置３００のプロセッサコンポーネント３５０）は、カーネル電力マネージャに結合されるログデバイスドライバ（例えば、オペレーティングシステム３４０のカーネル電力マネージャ３４１と通信するログデバイスドライバ１７１）を実行する。これを実行する際、プロセッサコンポーネントは、ログデバイスドライバの機能が有効にされた時点ですでに保留中である何れかのカーネルレベルウェイクロックの通知を提供するためのリクエストによって、カーネル電力マネージャに通知する。上述されたように、これは、オペレーティングシステムにより維持されるデータ構造（例えば、システムデータ３３０の一部として維持されるウェイクロックデータなど）にアクセスするカーネル電力マネージャが、保留中のウェイクロックと、それらを要求した結果としてそれらと関連付けされるデバイスドライバ又はオペレーティングシステムコンポーネントの識別子とを関連付けるデータ構造のエントリを抽出することを伴うものであってもよい。このようなデータ構造のこのようなエントリはまた、これらのウェイクロックの何れが保留中であるかの通知を維持してもよいし、又は、保留中であるウェイクロックのエントリのみを有してもよい。２２２０において、ログデバイスドライバが有効とされた時点ですでに保留中である何れかのカーネルウェイクロックの通知が、ログデバイスドライバによって生成された補完的ログデータに記録される。
【００６５】
２２３０において、プロセッサコンポーネントは、カーネルレベルウェイクロックを要求又は解放するためカーネル電力マネージャにより受信される全てのコールがログデバイスドライバに中継されることを要求するドライバプログラミングインタフェース（ＤＰＩ）を介したコールによって、ログデバイスドライバによってカーネル電力マネージャに通知させる。上述されたように、カーネル電力マネージャに対するコールは、ウェイクロックに関する何れかのコールが１つ以上のデバイスドライバに反映されるＤＰＩによって提供されるコールバック機構を呼び出すためのコールであってもよい。２２４０において、ログデバイスドライバは、カーネル電力マネージャによりログデバイスドライバに反映されるカーネルウェイクロックを要求及び解放するための各コールのためのエントリを補完的ログデータにおいて生成する。再び、このコールの反映は、コールバック機構を呼び出すための早期のコールに応答したものであってもよい。
【００６６】
図１２は、ロジックフロー２３００の一実施例を示す。ロジックフロー２３００は、ここに説明される１つ以上の実施例により実行される処理の一部又は全てを表すものであってもよい。より詳細には、ロジックフロー２３００は、少なくともデバッグルーチン５７０を実行する際にプロセッサコンポーネント３５０又は５５０によって実行され、及び／又は計算装置３００又はデバッグ装置５００それぞれの他のコンポーネントによって実行される処理を示すものであってもよい。
【００６７】
２３１０において、計算装置又はデバッグ装置のプロセッサコンポーネント（例えば、ウェイクロックデバッグシステム１０００の計算装置３００又はデバッグ装置５００のプロセッサコンポーネント３５０又は５５０）は、計算装置の処理中に生成されるシステムログデータ及び補完的ログデータから、計算装置のコンポーネントのウェイクロック及びアクティビティレベルに関連するエントリを抽出する。上述されたように、抽出されたエントリは、ウェイクロックを要求及び／又は解放するためのコールの通知、計算装置の１つ以上のコンポーネントのアクティビティのレベルの通知、計算装置の電力状態間の遷移の通知などを含むものであってもよい。２３２０において、抽出されたエントリは、整列されたトレースデータ（例えば、システムログデータ３３７及び補完的ログデータ３３１から抽出されるエントリから生成される整列されたトレースデータ５３４）を生成するよう時間的に整列される。
【００６８】
２３３０において、システムログデータ及び補完的ログデータの一方又は他方に含まれる何れかのマッピングデータがまた抽出される。２３４０において、このように抽出されたマッピングデータは、ウェイクロックとプロセス、スレッド、デバイスドライバ、計算装置のオペレーティングシステムのコンポーネント又はアプリケーションルーチンとを関連付けるため、抽出されたエントリからの識別情報を関連付けるのに利用される。
【００６９】
２３５０において、整列されたトレースデータのエントリは、ウェイクロックイベントのタイムライン、コンポーネントのアクティビティレベルの変更、計算装置の電力状態の変更などを生成するのに利用される。さらに、これらのタイムラインは、それから計算装置の処理においてそれらが共通する期間に時間的に整列される方法で、ディスプレイ上に視覚的に提示される。２３６０において、コントロールは、表示すべきタイムラインを選択するため、及び／又は表示すべき整列されたトレースデータのエントリによりカバーされる時間部分を選択するため、コマンドを伝搬するためのこれらのコントロールの処理の通知を受信するためモニタされてもよく、時間的に整列されたタイムラインの視覚的提示がこれに従って変更される。
【００７０】
図１３は、上述されたような各種実施例を実現するのに適した処理アーキテクチャ３０００の実施例を示す。より詳細には、処理アーキテクチャ３０００（又はその変形）は、計算装置１００、３００又は５００の１つ以上の一部として実現されてもよい。処理アーキテクチャ３０００のコンポーネントには、最後の２桁がこれらの計算装置の一部として以前に図示及び説明されたコンポーネントの少なくとも一部の参照番号の最後の２桁に対応する参照番号が付与される。これは、それぞれのコンポーネントを関連付けるための一助として行われる。
【００７１】
処理アーキテクチャ３０００は、限定することなく、１つ以上のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺装置、インタフェース、オシレータ、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力（Ｉ／Ｏ）コンポーネント、電源などを含む、デジタル処理において一般的に利用される各種要素を含むものであってもよい。本出願で用いられるように、“システム”及び“コンポーネント”という用語は、デジタル処理が実行される計算装置のエンティティを参照することが意図され、当該エンティティはハードウェア、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア又は実行中のソフトウェアであり、これらの具体例は、当該図示された一例となる処理アーキテクチャにより提供される。例えば、コンポーネントは、限定することなく、プロセッサコンポーネント上で実行されるプロセス、プロセッサコンポーネント自体、光及び磁気記憶媒体を利用可能な記憶装置（例えば、ハードディスクドライブ、アレイにおける複数のストレージドライブ）、ソフトウェアオブジェクト、実行可能命令シーケンス、実行スレッド、プログラム及び／又は計算装置全体（例えば、コンピュータ全体）とすることができる。例えば、サーバ上で実行されるアプリケーションとサーバとは双方ともコンポーネントすることができる。１つ以上のコンポーネントが、プロセス及び／又は実行スレッド内に常駐可能であり、コンポーネントは、１つの計算装置上に配置可能であり、及び／又は２つ以上の計算装置の間に分散できる。さらに、コンポーネントは、処理を連携させるため各種タイプの通信媒体によって相互に通信結合されてもよい。当該連携は、情報の一方向又は双方向のやりとりを伴うものであってもよい。例えば、コンポーネントは、通信媒体を介し通信される信号の形態により情報を通信してもよい。当該情報は、１つ以上の信号ラインに割り当てられる信号として実現可能である。メッセージ（コマンド、状態、アドレス又はデータメッセージを含む）は、このような信号の１つであってもよいし、又は複数の信号であってもよく、各種コネクション及び／又はインタフェースの何れかを介し実質的にパラレル又はシリアルに送信されてもよい。
【００７２】
図示されるように、処理アーキテクチャ３０００を実現する際、計算装置は少なくとも、プロセッサコンポーネント９５０、ストレージ９６０、１つ以上の他のデバイスとのインタフェース９９０及びカップリング９５９を有してもよい。説明されるように、その位置された利用及び／又は利用条件を含む、処理アーキテクチャ３０００を実現する計算装置の各種態様に依存して、このような計算装置は更に、限定することなく、ディスプレイインタフェース９８５又は１つ以上の処理サブシステム９００などの更なるコンポーネントを有してもよい。処理アーキテクチャ３０００を実現する計算装置において、回路により実現される図示された各種コンポーネントの１つは、単一の又は相対的に少数の半導体デバイス（例えば、“システム・オン・チップ”又はＳＯＣ）内の回路の離散的コンポーネント及び／又はブロックとして実現されてもよい。
【００７３】
カップリング９５９は、１つ以上のバス、ポイント・ツー・ポイントインターコネクト、送受信機、バッファ、クロスポイントスイッチ、及び／又はプロセッサコンポーネント９５０とストレージ９６０とを少なくとも通信結合する他のコンダクタ及び／又はロジックを有してもよい。カップリング９５９は更に、プロセッサ９５０とインタフェース９９０、オーディオサブシステム９７０及びディスプレイインタフェース９８５の１つ以上とを結合してもよい（上記及び／又は他のコンポーネントの何れがまた存在するかに依存して）。プロセッサコンポーネント９５０がカップリング９５９によって結合されることによって、プロセッサコンポーネント９５０は、詳細に説明されたタスクの様々なものを実行可能であり、上述された計算装置の何れかが処理アーキテクチャ３０００を実現する。カップリング９５９は、信号を光学的及び／又は電気的に伝搬する各種技術又は技術の組み合わせにより実現されてもよい。さらに、カップリング９５９の少なくとも一部は、限定することなく、Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）、ＣａｒｄＢｕｓ、Ｅｘｔｅｎｄｅｄ  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｅ−ＩＳＡ）、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）、ＮｕＢｕｓ、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（Ｅｘｔｅｎｄｅｄ）（ＰＣＩ−Ｘ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩ−Ｅ）、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ（ＰＣＭＣＩＡ）バス、ＨｙｐｅｒＴｒａｎｓｐｏｒｔＴＭ、ＱｕｉｃｋＰａｔｈなどを含む、広範な各種工業規格の何れかに準拠したタイミング及び／又はプロトコルを利用してもよい。
【００７４】
上述されたように、プロセッサコンポーネント９５０（プロセッサコンポーネント３５０又は５５０の１つ以上に対応する）は、広範な各種技術の何れかを利用し、複数の方法の何れにおいて物理的に組み合わされた１つ以上のコアにより実現される広範な各種の市販のプロセッサの何れかを含むものであってもよい。
【００７５】
上述されたように、ストレージ９６０（ストレージ３６０又は５６０の１つ以上に対応する）は、広範な各種技術の何れか又は技術の組み合わせに基づき、１つ以上の記憶装置から構成されてもよい。より詳細には、図示されるように、ストレージ９６０は、揮発性ストレージ９６１（例えば、ＲＡＭ技術の１つ以上の形態に基づくソリッドステートストレージ）、不揮発性ストレージ９６２（例えば、コンテンツを保持するための電力の一定の供給を必要としないソリッドステート、強磁性又は他のストレージ）、及び着脱可能な媒体ストレージ９６３（例えば、計算装置の間で情報が伝達される着脱可能なディスク又はソリッドステートメモリカードストレージ）の１つ以上を有してもよい。おそらく複数の異なるタイプのストレージを含むようなストレージ９６０の説明は、あるタイプがプロセッサコンポーネント９５０によるデータのより迅速な操作を可能にする相対的に迅速なリード及びライト能力を提供し（しかしながら、おそらく電力を一定に必要とする“揮発性”技術を利用して）、他のタイプが相対的に高密度の不揮発性ストレージを提供する（しなしながら、おそらく相対的に低速なリード及びライト能力を提供する）計算装置における複数タイプの記憶装置の通常の利用を認識する。
【００７６】
異なる技術を利用する異なる記憶装置のしばしば異なる特性が与えられると、このような異なる記憶装置が異なるインタフェースを介し異なる記憶装置に結合されることはまた一般的である。例えば、揮発性ストレージ９６１が存在し、ＲＡＭ技術に基づく場合、揮発性ストレージ９６１は、ロー及びカラムアドレッシングをおそらく利用する揮発性ストレージ９６１との適切なインタフェースを提供するストレージコントローラ９６５ａを介しカップリング９５９に通信結合されてもよく、ここで、ストレージコントローラ９６５ａは、揮発性ストレージ９６１内に記憶される情報を保持するのを支援するためローリフレッシュ及び／又は他のメンテナンスを実行してもよい。他の例として、不揮発性ストレージ９６２が存在し、１つ以上の強磁性及び／又はソリッドステートディスクドライブを有する場合、不揮発性ストレージ９６２は、情報のブロック及び／又はシリンダ及びセクタのアドレッシングをおそらく利用する不揮発性ストレージ９６２との適切なインタフェースを提供するストレージコントローラを介しカップリング９５９に通信結合されてもよい。更なる他の例として、着脱可能なメディアストレージ９６３が存在し、機械可読記憶媒体９６９の１つ以上を利用する１つ以上の光及び／又はソリッドステートディスクドライブを有する場合、着脱可能なメディアストレージ９６３は、情報のブロックのアドレッシングをおそらく利用する着脱可能なメディアストレージ９６３との適切なインタフェースを提供するストレージコントローラ９６５ｃを介しカップリング９５９に通信結合されてもよく、ここで、ストレージコントローラ９６５ｃは、機械可読記憶媒体９６９の寿命を拡大するのに特定の方法でリード、イレース及びライト処理を調整してもよい。
【００７７】
揮発性ストレージ９６１又は不揮発性ストレージ９６２の一方又は他方は、各自が基礎とする技術に応じて、各種実施例を実現するためプロセッサコンポーネント９５０により実行可能な命令シーケンスを有するルーチンが記憶可能な機械可読記憶媒体の形態による製造物を有してもよい。例えば、不揮発性ストレージ９６２が強磁性ベースディスクドライブ（例えば、いわゆる“ハードドライブ”）を有する場合、このような各ディスクドライブは、典型的には、磁気に反応する粒子のコーティングが蒸着され、フロッピー（登録商標）ディスケットなどの記憶媒体に類似した方法で命令シーケンスなどの情報を記憶するための各種パターンで磁気的に配向された１つ以上の回転プラッタを利用する。他の例として、不揮発性ストレージ９６２は、コンパクトフラッシュカードに類似した方法で命令シーケンスなどの情報を記憶するためソリッドステート記憶装置のバンクから構成されてもよい。再び、異なる時点で計算装置における異なるタイプの記憶装置を利用して実行可能なルーチン及び／又はデータを記憶することが一般的である。従って、各種実施例を実現するためプロセッサコンポーネント９５０により実行されるべき命令シーケンスを含むルーチンはまず、機械可読記憶媒体９６９に記憶されてもよく、着脱可能なメディアストレージ９６３は、ルーチンが実行されるとき、プロセッサコンポーネント９５０によるより迅速なアクセスを可能にするため、機械可読記憶媒体９６９及び／又は揮発性ストレージ９６１の継続的な存在を必要としないロングタームストレージのため、当該ルーチンを不揮発性ストレージ９６２にコピーする際に以降において利用されてもよい。
【００７８】
上述されるように、インタフェース９９０（インタフェース３９０又は５９０の１つ以上に対応する）は、計算装置を１つ以上の他のデバイスに通信結合するため利用可能な各種通信技術の何れかに対応する各種シグナリング技術の何れかを利用してもよい。再び、各種形態の有線又は無線シグナリングの一方又は双方が、おそらくネットワーク（例えば、ネットワーク９９９）又はネットワーク相互接続されたセットを介し、プロセッサコンポーネント９５０が入出力装置（例えば、図示された一例となるキーボード９２０又はプリンタ９２５）及び／又は他の計算装置とやりとりすることを可能にするため利用されてもよい。何れか１つの計算装置によってしばしばサポートされる必要がある複数のタイプのシグナリング及び／又はプロトコルのしばしば大きく異なる性質を認識する際、インタフェース９９０は、複数の異なるインタフェースコントローラ９９５ａ、９９５ｂ及び９９５ｃを含むように示される。インタフェースコントローラ９９５ａは、各種タイプの有線デジタルシリアルインタフェース又はラジオ波無線インタフェースの何れかを利用して、図示されたキーボード９２０などのユーザ入力装置から逐次的に送信されるメッセージを受信してもよい。インタフェースコントローラ９９５ｂは、各種ケーブルベース又は無線シグナリング、タイミング及び／又はプロトコルの何れかを利用して、図示されたネットワーク９９９を介し他の計算装置にアクセスしてもよい（おそらく、１つ以上のリンク、小規模ネットワーク又はおそらくインターネットから構成されるネットワーク）。インタフェース９９５ｃは、シリアル又はパラレル信号送信の何れかの利用を可能にする各種電導性ケーブルの何れかを利用して、図示されたプリンタ９２５にデータを伝送してもよい。インタフェース９９０の１つ以上のインタフェースコントローラを介し通信結合されてもよいデバイスの他の具体例は、限定することなく、マイクロフォン、リモートコントロール、スタイラスペン、カードリーダ、フィンガープリントリーダ、バーチャルリアリティインタラクショングローブ、グラフィカル入力タブレット、ジョイスティック、他のキーボード、網膜スキャナ、タッチ画面のタッチ入力コンポーネント、トラックボール、各種センサ、人間の動きをモニタしてジェスチャ又は顔の表情を介し人間によりシグナリングされるコマンド及び／又はデータを受け入れるためのカメラ又はカメラアレイ、レーザプリンタ、メカニカルロボット、ミリングマシーンなどを含む。
【００７９】
計算装置がディスプレイ（例えば、ディスプレイ５８０に対応する図示された一例となるディスプレイ９８０）に通信結合（又はおそらく実際には搭載する）される場合、処理アーキテクチャ３０００を実現するこのような計算装置はまた、ディスプレイインタフェース９８５を有してもよい。より一般化されたタイプのインタフェースがディスプレイを通信結合する際に利用されてもよいが、ディスプレイ上に各種形態のコンテンツを視覚的に表示する際にしばしば必要とされるやや特殊な更なる処理は、使用されるケーブルベースインタフェースのやや特殊な性質と共に、ディスプレイインタフェースの提供を望ましいものにしばしばする。ディスプレイ９８０の通信結合においてディスプレイインタフェース９８５により利用可能な有線及び／又は無線シグナリング技術は、限定することなく、各種アナログビデオインタフェース、デジタル・ビデオ・インタフェース（ＤＶＩ）、ＤｉｓｐｌａｙＰｏｒｔなどの何れかを含む、各種工業規格の何れかに準拠したシグナリング及び／又はプロトコルを利用してもよい。
【００８０】
より一般には、ここに説明及び図示された計算装置の各種要素は、各種ハードウェア要素、ソフトウェア要素又は双方の組み合わせを含むものであってもよい。ハードウェア要素の具体例は、デバイス、ロジックデバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサコンポーネント、回路素子（例えば、トランジスタ、レジスタ、キャパシタ、インダクタなど）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリユニット、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含むものであってもよい。ソフトウェア要素の具体例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシーンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース（ＡＰＩ）、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル又はこれらの何れかの組み合わせを含むものであってもよい。しかしながら、実施例がハードウェア要素及び／又はソフトウェア要素を利用して実現されるかの判定は、所与の実現形態について所望されるように、所望される計算レート、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード及び他の設計又は性能制約など、何れかの個数のファクタに従って可変的であってもよい。
【００８１】
一部の実施例は、その派生語と共に、“一実施例”又は“実施例”という表現を用いて説明されてもよい。これらの用語は、実施例に関連して説明された特定の特徴、構成又は特性が少なくとも１つの実施例に含まれることを意味する。明細書の各所における“一実施例では”というフレーズの出現は、必ずしも全てが同一の実施例を参照しているとは限らない。さらに、一部の実施例は、その派生語と共に“結合”及び“接続”という表現を用いて説明されてもよい。これらの用語は互いに同義語として必ずしも意図されていない。例えば、一部の実施例は、２つ以上の要素が互いに直接的な物理的又は電気的に接触していることを示すため、“接続”及び／又は“結合”の用語を用いて説明されてもよい。しかしながら、“結合”の用語はまた、２つ以上の要素が互いに直接的に接触せず、互いに連携又は相互作用することを意味しうる。さらに、異なる実施例からの態様又は要素は組み合わされてもよい。
【００８２】
開示の要約は、読者が技術的開示の性質を迅速に確認することを可能にするため提供されることが強調される。それは、請求項の範囲又は意味を解釈又は限定するのに利用されないという理解によって提出されている。さらに、上記の詳細な説明では、各種特徴は開示を簡略化するために単一の実施例に一緒にグループ化されることが理解できる。この開示の方法は、請求された実施例が各請求項において明示的に記載されるより多くの特徴を必要とするという意図を反映するものとして解釈されるべきでない。むしろ、以下の請求項が反映するように、発明の主題は、開示された単一の実施例の全ての特徴より少なくてもよい。従って、以下の請求項は、各請求項が別の実施例として自ら成立することによって、詳細な説明に含まれる。添付した請求項では、“含む”及び“ここで”という頭語は、それぞれ“有する”及び“ここで”という各用語の平易な英語の等価として用いられる。さらに、“第１”、“第２”、“第３”などは、単なるラベルとして用いられ、オブジェクトに対する多数の要求を課すことを意図していない。
【００８３】
上述されたものは、開示されたアーキテクチャの具体例を含む。もちろん、コンポーネント及び／又は方法の全ての想到可能な組み合わせを説明することはできないが、当業者は、更なる多数の組み合わせ及び並び替えが可能であり得ることを認識しうる。従って、新規なアーキテクチャは添付した請求項の精神及び範囲内に属するこのような全ての代替、修正及び変形を含むことが意図される。ここでは詳細な開示は、更なる実施例に属する具体例を提供するとわかる。以下に提供される具体例は、限定することを意図していない。
【００８４】
いくつかの具体例では、ウェイクロックイベントをトレースする装置は、プロセッサコンポーネントと、プロセッサコンポーネントによる実行のため、アプリケーションレベルウェイクロックに関連するコールを傍受するキャプチャコンポーネントであって、傍受されるコールはアプリケーションルーチンからオペレーティングシステムのアプリケーション電力マネージャにより受信される、キャプチャコンポーネントと、プロセッサコンポーネントによる実行のため、アプリケーション電力マネージャと連携して、アプリケーション電力マネージャに結合されるオペレーティングシステムのシステムログ生成手段に傍受されたコールの通知を提供する中継コンポーネントであって、システムログ生成手段は、プロセッサコンポーネントによるオペレーティングシステムの実行に関連するイベントの通知と、傍受されたコールの通知とを有するシステムログデータを生成する、中継コンポーネントとを有してもよい。
【００８５】
さらに、又は代わりに、当該装置は、プロセッサコンポーネントによる実行のため、アプリケーション電力マネージャと連携して、保留中のアプリケーションレベルウェイクロックの通知を提供し、保留中のアプリケーションレベルウェイクロックをアプリケーションルーチンと関連付けるウェイクロックデータを収集する収集コンポーネントを有してもよい。
【００８６】
さらに、又は代わりに、中継コンポーネントは、アプリケーション電力マネージャと連携して、保留中のアプリケーションレベルウェイクロックの通知をシステムログ生成手段に提供し、システムログ生成手段は、システムログデータに保留中のアプリケーションレベルウェイクロックの通知を含めてもよい。
【００８７】
さらに、又は代わりに、当該装置は、プロセッサコンポーネントによる実行のため、アプリケーション電力マネージャと連携して、プロセッサコンポーネントにより実行されるプロセス又はアプリケーションルーチンの一部が実行されるスレッドとアプリケーションルーチンとを関連付けるマッピングデータを収集する収集コンポーネントを有してもよい。
【００８８】
さらに、又は代わりに、中継コンポーネントは、アプリケーション電力マネージャと連携して、マッピングデータをシステムログ生成手段に提供し、システムログ生成手段は、システムログデータにマッピングデータを含めてもよい。
【００８９】
さらに、又は代わりに、傍受されたコールは、ウェイクロックを要求するためのコール又は保留中のウェイクロックを解放するためのコールを有してもよい。
【００９０】
さらに、又は代わりに、当該装置は、アプリケーション電力マネージャを有し、アプリケーション電力マネージャは、キャプチャコンポーネント及び中継コンポーネントを有するよう拡張されてもよい。
【００９１】
さらに、又は代わりに、当該装置は、プロセッサコンポーネントによる実行のため、オペレーティングシステムのカーネル電力マネージャに通知して、カーネルレベルウェイクロックに関連するコールをログデバイスドライバに中継するログデバイスドライバのコールコンポーネントを有し、中継されるコールは、オペレーティングシステムのコンポーネント又はデバイスドライバからカーネル電力マネージャによって受信されてもよい。
【００９２】
さらに、又は代わりに、オペレーティングシステムのコンポーネントは、アプリケーション電力マネージャを有し、アプリケーション電力マネージャは、カーネル電力マネージャに結合され、カーネルレベルウェイクロックに関連するコールによってカーネル電力マネージャに通知してもよい。
【００９３】
さらに、又は代わりに、当該装置は、プロセッサコンポーネントによる実行のため、ログデバイスドライバにおいて中継されたコールを受信する受信コンポーネントと、プロセッサコンポーネントによる実行のため、中継されたコールの通知を有する補完的ログデータを生成するログコンポーネントとを有してもよい。
【００９４】
さらに、又は代わりに、当該装置は、システムログデータからアプリケーションレベルウェイクロックに関連するエントリを抽出し、補完的ログデータからカーネルレベルウェイクロックに関連するエントリを抽出し、システムログデータからプロセッサコンポーネントを有する計算装置のコンポーネントのアクティビティレベルを示すエントリを抽出し、抽出されたエントリを時間的に整列する関連付けコンポーネントと、アプリケーションレベルウェイクロック及びカーネルレベルウェイクロックに関連するイベントと、ディスプレイ上の計算装置のコンポーネントのアクティビティレベルとの時間的に整列されたタイムライングラフを生成して視覚的に提示する提示コンポーネントであって、イベント及びアクティビティレベルは、抽出されたエントリにおいて示される、提示コンポーネントとを有してもよい。
【００９５】
さらに、又は代わりに、当該装置は、システムログデータ及び補完的ログデータをデバッグ装置に送信するためのインタフェースを有してもよい。
【００９６】
いくつかの具体例では、ウェイクロックイベントをトレースする装置は、プロセッサコンポーネントと、オペレーティングシステムのアプリケーション電力マネージャに対するアプリケーションレベルウェイクロックに関連するコールの通知をシステムログデータから抽出し、オペレーティングシステムのカーネル電力マネージャに対するカーネルレベルウェイクロックに関連するコールの通知を補完的ログデータから抽出し、オペレーティングシステムが実行される計算装置のコンポーネントのアクティビティレベルの通知をシステムログデータから抽出する関連付けコンポーネントと、アプリケーションレベルウェイクロックに関連するコール、カーネルレベルウェイクロックに関連するコール及びディスプレイ上の計算装置のコンポーネントのアクティビティレベルの変更の時間的に整列されたタイムライングラフを生成して視覚的に提示する提示コンポーネントとを有してもよい。
【００９７】
さらに、又は代わりに、関連付けコンポーネントは、システムログデータ及び補完的ログデータの１つからマッピング情報を抽出し、マッピング情報は、計算装置上で実行されるプロセス及び計算装置の実行のスレッドの１つと計算装置上で実行されるアプリケーションルーチンとの関連付けの通知を有してもよい。
【００９８】
さらに、又は代わりに、関連付けコンポーネントは、関連付けの通知を利用して、アプリケーションレベルウェイクロックに関連するコールの少なくとも２つの通知を関連付けてもよい。
【００９９】
さらに、又は代わりに、当該装置はコントロールを有し、提示コンポーネントは、コントロールをモニタして、タイムライングラフが時間的に整列された期間を選択するためのコマンドを伝送するコントロールの処理の通知を受信してもよい。
【０１００】
いくつかの具体例では、タスク部分を実行するため、プロセッサコンポーネントコアを割り当てるためコンピュータにより実現される方法は、アプリケーションレベルウェイクロックに関連するコールを傍受するステップであって、傍受されたコールは、アプリケーションルーチンからオペレーティングシステムのアプリケーション電力マネージャによって受信される、傍受するステップと、アプリケーション電力マネージャに結合されるオペレーティングシステムのシステムログ生成手段に傍受されたコールの通知を提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、オペレーティングシステムの実行に関連するイベントの通知と、傍受されたコールの通知とを有するシステムログデータを生成する、連携するステップとを有してもよい。
【０１０１】
さらに、又は代わりに、当該方法は、保留中のアプリケーションレベルウェイクロックの通知を提供し、保留中のアプリケーションレベルウェイクロックをアプリケーションルーチンに関連付けるウェイクロックデータを収集するため、アプリケーション電力マネージャと連携するステップを有してもよい。
【０１０２】
さらに、又は代わりに、当該方法は、保留中のアプリケーションレベルウェイクロックの通知をシステムログ生成手段に提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、保留中のアプリケーションレベルウェイクロックの通知をシステムログデータに含む、連携するステップを有してもよい。
【０１０３】
さらに、又は代わりに、当該方法は、プロセッサコンポーネントにより実行されるプロセス又はアプリケーションルーチンの一部が実行されるスレッドとアプリケーションルーチンとを関連付けるマッピングデータを収集するため、アプリケーション電力マネージャと連携するステップを有してもよい。
【０１０４】
さらに、又は代わりに、当該方法は、マッピングデータをシステムログ生成手段に提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、マッピングデータをシステムログデータに含める、連携するステップを有してもよい。
【０１０５】
さらに、又は代わりに、傍受されたコールは、ウェイクロックを要求するためのコール又は保留中のウェイクロックを解放するためのコールを有してもよい。
【０１０６】
さらに、又は代わりに、カーネルレベルウェイクロックに関連するコールをログデバイスドライバに中継するため、オペレーティングシステムのカーネル電力マネージャに通知するステップを有し、中継されるコールは、オペレーティングシステムのコンポーネント又はデバイスドライバからカーネル電力マネージャによって受信されてもよい。
【０１０７】
さらに、又は代わりに、オペレーティングシステムのコンポーネントは、アプリケーション電力マネージャを有し、アプリケーション電力マネージャは、カーネルレベルウェイクロックに関連するコールによってカーネル電力マネージャに通知するため、カーネル電力マネージャに結合されてもよい。
【０１０８】
さらに、又は代わりに、当該方法は、ログデバイスドライバにおいて中継されたコールを受信するステップと、中継されたコールの通知を有する補完的ログデータを生成するステップとを有してもよい。
【０１０９】
さらに、又は代わりに、当該方法は、アプリケーションレベルウェイクロックに関連するエントリをシステムログデータから抽出するステップと、カーネルレベルウェイクロックに関連するエントリを補完的ログデータから抽出するステップと、プロセッサコンポーネントを有する計算装置のコンポーネントのアクティビティレベルを示すエントリをシステムログデータから抽出するステップと、抽出されたエントリを時間的に整列するステップと、アプリケーションレベルウェイクロック及びカーネルレベルウェイクロックに関連するイベントと、計算装置のコンポーネントのアクティビティレベルとの時間的に整列されたタイムライングラフをディスプレイ上に視覚的に提示するステップであって、イベント及びアクティビティレベルは抽出されたエントリに示される、提示するステップとを有してもよい。
【０１１０】
さらに、又は代わりに、当該方法は、システムログデータ及び補完的ログデータをネットワークを介しデバッグ装置に送信するステップを有してもよい。
【０１１１】
いくつかの具体例では、少なくとも１つの機械可読記憶媒体は、プロセッサコンポーネントにより実行されると、アプリケーションレベルウェイクロックに関連するコールを傍受するステップであって、傍受されたコールは、アプリケーションルーチンからオペレーティングシステムのアプリケーション電力マネージャによって受信される、傍受するステップと、アプリケーション電力マネージャに結合されるオペレーティングシステムのシステムログ生成手段に傍受されたコールの通知を提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、オペレーティングシステムの実行に関連するイベントの通知と、傍受されたコールの通知とを有するシステムログデータを生成する、連携するステップとをプロセッサコンポーネントに実行させる命令を有してもよい。
【０１１２】
さらに、又は代わりに、プロセッサコンポーネントは、保留中のアプリケーションレベルウェイクロックの通知を提供し、保留中のアプリケーションレベルウェイクロックをアプリケーションルーチンに関連付けるウェイクロックデータを収集するため、アプリケーション電力マネージャと連携するステップと、保留中のアプリケーションレベルウェイクロックの通知をシステムログ生成手段に提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、保留中のアプリケーションレベルウェイクロックの通知をシステムログデータに含めてもよい、連携するステップとを実行してもよい。
【０１１３】
さらに、又は代わりに、プロセッサコンポーネントは、プロセッサコンポーネントにより実行されるプロセス又はアプリケーションルーチンの一部が実行されるスレッドとアプリケーションルーチンとを関連付けるマッピングデータを収集するため、アプリケーション電力マネージャと連携するステップと、マッピングデータをシステムログ生成手段に提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、マッピングデータをシステムログデータに含める、連携するステップとを実行してもよい。
【０１１４】
さらに、又は代わりに、傍受されたコールは、ウェイクロックを要求するためのコール又は保留中のウェイクロックを解放するためのコールを有してもよい。
【０１１５】
さらに、又は代わりに、プロセッサコンポーネントは、カーネルレベルウェイクロックに関連するコールをログデバイスドライバに中継するため、オペレーティングシステムのカーネル電力マネージャに通知するステップを実行し、中継されるコールは、オペレーティングシステムのコンポーネント又はデバイスドライバからカーネル電力マネージャによって受信されてもよい。
【０１１６】
さらに、又は代わりに、オペレーティングシステムのコンポーネントは、アプリケーション電力マネージャを有し、アプリケーション電力マネージャは、カーネルレベルウェイクロックに関連するコールによってカーネル電力マネージャに通知するため、カーネル電力マネージャに結合されてもよい。
【０１１７】
さらに、又は代わりに、プロセッサコンポーネントは、ログデバイスドライバにおいて中継されたコールを受信するステップと、中継されたコールの通知を有する補完的ログデータを生成するステップとを実行してもよい。
【０１１８】
さらに、又は代わりに、プロセッサコンポーネントは、アプリケーションレベルウェイクロックに関連するエントリをシステムログデータから抽出するステップと、カーネルレベルウェイクロックに関連するエントリを補完的ログデータから抽出するステップと、プロセッサコンポーネントを有する計算装置のコンポーネントのアクティビティレベルを示すエントリをシステムログデータから抽出するステップと、抽出されたエントリを時間的に整列するステップと、アプリケーションレベルウェイクロック及びカーネルレベルウェイクロックに関連するイベントと、計算装置のコンポーネントのアクティビティレベルとの時間的に整列されたタイムライングラフをディスプレイ上に視覚的に提示するステップであって、イベント及びアクティビティレベルは抽出されたエントリに示される、提示するステップとを実行してもよい。
【０１１９】
さらに、又は代わりに、プロセッサコンポーネントは、システムログデータ及び補完的ログデータをネットワークを介しデバッグ装置に送信するステップを実行してもよい。
【０１２０】
いくつかの具体例では、少なくとも１つの機械可読記憶媒体は、計算装置により実行されると、上記の何れかを計算装置に実行させる命令を有してもよい。
【０１２１】
いくつかの具体例では、タスク部分を実行するためプロセッサコンポーネントコアを割り当てる装置は、上記の何れかを実行する手段を有してもよい。
【図１】
0006333965.tif 000002
【図２】
0006333965.tif 000003
【図３】
0006333965.tif 000004
【図４】
0006333965.tif 000005
【図５】
0006333965.tif 000006
【図６】
0006333965.tif 000007
【図７】
0006333965.tif 000008
【図８】
0006333965.tif 000009
【図９】
0006333965.tif 000010
【図１０】
0006333965.tif 000011
【図１１】
0006333965.tif 000012
【図１２】
0006333965.tif 000013
【図１３】
0006333965.tif 000014