特許第6333965号(P6333965)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル コーポレイションの特許一覧

<>
  • 特許6333965-ウェイクロック使用を追跡する技術 図000002
  • 特許6333965-ウェイクロック使用を追跡する技術 図000003
  • 特許6333965-ウェイクロック使用を追跡する技術 図000004
  • 特許6333965-ウェイクロック使用を追跡する技術 図000005
  • 特許6333965-ウェイクロック使用を追跡する技術 図000006
  • 特許6333965-ウェイクロック使用を追跡する技術 図000007
  • 特許6333965-ウェイクロック使用を追跡する技術 図000008
  • 特許6333965-ウェイクロック使用を追跡する技術 図000009
  • 特許6333965-ウェイクロック使用を追跡する技術 図000010
  • 特許6333965-ウェイクロック使用を追跡する技術 図000011
  • 特許6333965-ウェイクロック使用を追跡する技術 図000012
  • 特許6333965-ウェイクロック使用を追跡する技術 図000013
  • 特許6333965-ウェイクロック使用を追跡する技術 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6333965
(24)【登録日】2018年5月11日
(45)【発行日】2018年5月30日
(54)【発明の名称】ウェイクロック使用を追跡する技術
(51)【国際特許分類】
   G06F 11/36 20060101AFI20180521BHJP
   G06F 1/28 20060101ALI20180521BHJP
【FI】
   G06F11/36 136
   G06F11/36 160
   G06F1/28 Z
【請求項の数】4
【全頁数】33
(21)【出願番号】特願2016-516929(P2016-516929)
(86)(22)【出願日】2013年9月27日
(65)【公表番号】特表2016-540268(P2016-540268A)
(43)【公表日】2016年12月22日
(86)【国際出願番号】US2013062291
(87)【国際公開番号】WO2015047312
(87)【国際公開日】20150402
【審査請求日】2016年3月24日
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】リム,ミン ヨル
(72)【発明者】
【氏名】ナイト,ロバート ピー.
(72)【発明者】
【氏名】ウパディヤヤ,ガウタム
(72)【発明者】
【氏名】シャルマ,ネハ
【審査官】 多胡 滋
(56)【参考文献】
【文献】 特開2006−172205(JP,A)
【文献】 中島震,スマートフォン・アプリ電力消費のモデルベース解析,情報処理学会 研究報告 組込みシステム(EMB) 2013−EMB−030,日本,情報処理学会,2013年 9月10日,pp.1-8
【文献】 江川崇,外4名,Google Androidプログラミング入門,株式会社アスキー・メディアワークス,2012年 8月31日,第1版,pp.195-201
【文献】 高田寛,外1名,不正アクセスを考慮したシステムログ収集機能について,情報処理学会研究報告 98−CSEC−1,日本,社団法人情報処理学会,1998年 5月29日,第98巻,第54号,pp.47-52
【文献】 手嶋透,Androidアプリ ウイルスが保護機構を台無しに 画像によるメモリー不足にも注意,日経SYSTEMS,日本,日経BP社,2012年 5月26日,第230号,pp.62-67
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 1/28
(57)【特許請求の範囲】
【請求項1】
ウェイクロックイベントをトレースする装置であって、
プロセッサコンポーネントと、
オペレーティングシステムのアプリケーション電力マネージャに対するアプリケーションレベルウェイクロックに関連するコールの通知をシステムログデータから抽出し、前記オペレーティングシステムのカーネル電力マネージャに対するカーネルレベルウェイクロックに関連するコールの通知を補完的ログデータから抽出し、前記オペレーティングシステムが実行される計算装置のコンポーネントのアクティビティレベルの通知を前記システムログデータから抽出する関連付けコンポーネントと、
前記アプリケーションレベルウェイクロックに関連するコール、前記カーネルレベルウェイクロックに関連するコール及びディスプレイ上の前記計算装置のコンポーネントのアクティビティレベルの変更の時間的に整列されたタイムライングラフを生成して視覚的に提示する提示コンポーネントと、
を有する装置。
【請求項2】
前記関連付けコンポーネントは、前記システムログデータ及び前記補完的ログデータの1つからマッピング情報を抽出し、前記マッピング情報は、前記計算装置上で実行されるプロセス及び前記計算装置の実行のスレッドの1つと前記計算装置上で実行されるアプリケーションルーチンとの関連付けの通知を有する、請求項記載の装置。
【請求項3】
前記関連付けコンポーネントは、前記関連付けの通知を利用して、アプリケーションレベルウェイクロックに関連するコールの少なくとも2つの通知を関連付ける、請求項記載の装置。
【請求項4】
コントロールを有し、前記提示コンポーネントは、前記コントロールをモニタして、前記タイムライングラフが時間的に整列された期間を選択するためのコマンドを伝送する前記コントロールの処理の通知を受信する、請求項記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
ここに説明される実施例は、一般に計算装置が低電力状態に入る能力を制御するためのウェイクロックの使用を追跡することに関する。
【背景技術】
【0002】
各電力状態が各種タスクを実行するため電力の消費と機能の可用性との間の異なるバランスをとる各種電力状態における動作をサポートするための電力管理機能を計算装置が搭載することが一般的である。特に、ポータブル計算装置は、バッテリから各種コンポーネントに利用可能な限定的な電力の供給が個別に制御可能な電力管理のある程度高度な形態を有する傾向がある。
【0003】
計算装置が配置されうる使用の多くについて、電力管理コンポーネントが計算装置を低電力状態に配置できることがしばしば可能である。しかしながら、高電力状態に計算装置を維持することが所望されうる状況が生じ、従って、電力管理コンポーネントが計算装置を低電力状態に配置することを防ぐことが所望されうる。例えば、計算装置は、動画ビデオの再生を実行するよう操作可能であり、これにより、動画ビデオを復号化するのに十分な処理リソースの中断のない使用と、動画ビデオを視覚的に提示するためのディスプレイの中断のない使用とを必要とする。さらに、このようなリソースの中断のない使用は、利用可能な電力の限定的な供給が枯渇に近づくにも関わらず必要とされる可能性がある(例えば、計算装置のバッテリが少なくなるにもかかわらず)。
【0004】
従って、計算装置の電力管理コンポーネントが計算装置を低電力状態に配置するのを避けることを、アプリケーションルーチン及び/又はオペレーティングシステムの各種部分が要求することを可能にするためのファンクションコールを提供することが一般的になっている。これは、計算装置が低電力状態又は“スリープモード”に入ることができないように、高電力状態又は“キープアウェイク”に“ロック”される“ウェイクロック”の要求又は“取得”として通常参照されている。各種実現形態は、ウェイクロックを要求するためのコール、ウェイクロックを解放するためのコール、及び/又は指定された期間の終わりに満了するように時間制限されたウェイクロックを要求するためのコールのサポートを含む。
【0005】
残念ながら、アプリケーションルーチンがウェイクロックを利用するためのこのようなサポートの提供は、ウェイクロックの過剰な使用をもたらすアプリケーションルーチンにおけるエラー及び/又は他の予期しない状況が発生する、いわゆる、“ノー・スリープ・ウェイクロック・バグ(no−sleep wakelock bug”の出現を伴い、これにより、利用可能な電力の早過ぎる枯渇を導く。これらの状況は、“予期しないバッテリ消耗”と呼ばれることもあり、ウェイクロックがともかく要求及び許可されるが、解放されない方法を特定するための労力を取り除くことを導く。
【0006】
残念なことに、多数のポータブル計算装置は、このようなウェイクロックバグのソースの迅速な検出を実現する方法では構成されていないオペレーティングシステムを搭載する。各種オペレーティングシステムは、時間の経過と共に各種イベントの発生を詳細にするシステムログデータの生成するサポートする。また、各種オペレーティングシステムは、早期に要求されたが、まだ解放されていないウェイクロックがあるか否かを含む、オペレーティングシステムのコンポーネントの状態の詳細ビューを提供するための各種データ構造とレジスタの現在状態とを“ダンプ(dump)”するための能力をサポートする。しかしながら、何れのルーチン又はオペレーティングシステムコンポーネントがウェイクロックを誤って要求し、及び/又はウェイクロックを解放することを無視したかを特定するのに必要なデータを記録又は提供するための準備がされていない。
【図面の簡単な説明】
【0007】
図1図1は、ウェイクロックデバッグシステムの実施例を示す。
図2図2は、ウェイクロックデバッグシステムの他の実施例を示す。
図3図3は、実施例によるログデータを生成する具体例を示す。
図4図4は、実施例によるウェイクロックのデバッグを実現するための一例となるイメージを示す。
図5図5は、実施例によるウェイクロックのデバッグを実現するための一例となるイメージを示す。
図6図6は、実施例によるウェイクロックのデバッグを実現するための一例となるイメージを示す。
図7図7は、ウェイクロックデバッグシステムの実施例の一部を示す。
図8図8は、ウェイクロックデバッグシステムの実施例の一部を示す。
図9図9は、ウェイクロックデバッグシステムの実施例の一部を示す。
図10図10は、実施例によるロジックフローを示す。
図11図11は、実施例によるロジックフローを示す。
図12図12は、実施例によるロジックフローを示す。
図13図13は、実施例による処理アーキテクチャを示す。
【発明を実施するための形態】
【0008】
各種実施例は、一般にオペレーティングシステムのカーネルレベル及びアプリケーションレベルにおけるウェイクロックに関するイベントを記録するログの生成と、ウェブクロックのデバッグを可能にするための視覚的提示におけるイベントのグラフの時間的配置とに関する。より詳細には、オペレーティングシステムのアプリケーション電力マネージャは、オペレーティングシステムにより通常生成されるシステムログデータへのイベントの記録をエンハンスするためのログパッチルーチンにより拡張される。また、ログデバイスドライバは、オペレーティングシステムのカーネル電力マネージャに接続され、カーネルレベルウェイクロックイベントを記録する補完的ログデータを生成する。さらに、システムログデータ及び補完的ログデータに記録されるウェイクロックイベント及び関連イベントは、ウェイクロックバグを示すイベント間の関連付けを閲覧することを可能にするため、時間的に揃えられたグラフにおいて視覚的に提示される。
【0009】
オペレーティングシステムは、選択されたイベントの出現は、通常は、オペレーティングシステムが搭載される計算装置のプロセッサコンポーネントによるオペレーティングシステムの実行中にタイムスタンプされたエントリに記録されるシステムログデータを生成する。何れのイベントがシステムログデータに記録されるよう選択されたものであるかは、計算装置のオペレータによってしばしば変更可能とされる。より詳細には、より限定的なイベントの選択が記録される“ノーマルモード”と、より大きなイベントの選択が記録される“デバッグモード”とが通常は存在し、このような計算装置のオペレータの制御の下、これらのモードを動的に切り替える能力が存在する。しかしながら、デバッグモードでさえ、通常は、ウェイクロックが依然として係属中であることの表示にすぎず(例えば、低電力モードへのエントリが妨げられるようにまだ解放されていない早期に要求されたウェイクロックなど)、何れのアプリケーションルーチン又はいくつのアプリケーションルーチンがウェイクロックを要求及び/又は解放したかの表示はない。典型的には、システムログデータにはほとんど情報が記録されないことが、アプリケーション電力マネージャによって提供される。
【0010】
オペレーティングシステム内において、電力管理は、アプリケーション電力マネージャが通信する個別のカーネル電力マネージャによるカーネルレベルと、アプリケーション電力マネージャによるアプリケーションレベルとの双方において取り扱われてもよい。アプリケーション電力マネージャは、アプリケーションレベルにおいてウェイクロックを要求又は解放するコールをアプリケーションルーチンから受信する。アプリケーション電力マネージャによって受信されたアプリケーションレベルウェイクロックを要求又は解放するためのコールは、典型的には、何れのアプリケーションルーチンが当該コールを送信しているかを示す識別情報を含む。さらに、マルチスレッド処理環境では、アプリケーション電力マネージャは、典型的には、各コールが何れのスレッドから受信されたか決定できる。アプリケーション電力マネージャは、典型的には、このようなアプリケーションルーチン及び/又はスレッドを特定する情報を利用して、コールがアプリケーションレベルウェイクロックの1つを解放するため受信されると、アプリケーションレベルにおける何れかの以前に要求されたウェイクロックが解放されるべきかを特定する。システムログデータにおけるこの特異性の欠落を救済するため、アプリケーション電力マネージャは、ログパッチルーチンにより拡張される。ログパッチルーチンは、何れのアプリケーションルーチン及び/又はスレッドが各コールに関連付けされるか特定する情報と共に、アプリケーションレベルウェイクロックを要求又は解放するための各コールに関する情報をアプリケーション電力マネージャに提供させるため、アプリケーション電力マネージャに命令シーケンスを加える。
【0011】
アプリケーション電力マネージャは、典型的には、計算装置の現在の電力状態を自ら直接的に制御することはできない(例えば、計算装置を何れか特定の低電力又は高電力状態に配置することなど)。代わりに、アプリケーション電力マネージャは、アプリケーションレベルにおけるウェイクロックを要求又は解放するため受信したコールを、カーネルレベルにおけるアプリケーション電力マネージャに関連するより少数のウェイクロックを要求又は解放するためカーネル電力マネージャに送信するコールに集約する。カーネル電力マネージャに対するこれらのコールは、典型的には、アプリケーションレベルにおけるウェイクロックを要求又は解放するための元のコールが発信されたアプリケーション及び/又はスレッドを特定する情報を有しない。しばしば、アプリケーション電力マネージャからカーネル電力マネージャへのこれらのコールに含まれる唯一の識別情報は、コールのソースとしてのアプリケーション電力マネージャの通知である。
【0012】
カーネル電力マネージャは、アプリケーション電力マネージャと共に、オペレーティングシステムの他のコンポーネント及び/又はカーネルレベルにおけるデバイスドライバからカーネルレベルウェイクロックを要求又は解放するコールを受信する。カーネル電力マネージャは、典型的には、システムログデータに記録するための関連イベント又はカーネルレベルウェイクロックに関連する情報を全く又はほとんど提供しないよう構成される。カーネルレベルウェイクロックに関連するイベントに関する情報の提供のこの完全な欠落を救済するため、ログデバイスドライバが、カーネルレベルウェイクロックを要求又は解放するためのコールの出現と、何れのオペレーティングシステムコンポーネントが各コールを行っているかを含む(アプリケーション電力マネージャを含む)、カーネルレベルウェイクロックに関連するイベントを記録する補完的ログデータを生成するため追加される。ログデバイスドライバは、カーネルレベルウェイクロックを要求又は解放するためカーネル電力マネージャによって受信される全てのコールが通知されるよう要求するため、カーネル電力マネージャと通信する。ログデバイスドライバはまた、補完的ログデータに記録する各イベントの通知をタイムスタンプする。
【0013】
システムログデータ(アプリケーションレベルウェイクロックに関するエンハンスされた情報と共に)及び補完的ログデータの生成後、デバッグルーチンは、ウェイクロックイベント及び他の関連イベントに関する情報を抽出するため双方を解析する。デバッグルーチンは、各ログにおけるイベントに関連するタイムスタンプを利用して、それらを時間的に揃えて、特定されるべきウェイクロックバグを導くイベント間の訂正を可能にするため、ディスプレイ上にこれらのイベントのタイムラインの時間的に揃えられたグラフを視覚的に提示する。デバッグルーチンは、ウェイクロックバグが実行された同一の計算装置のプロセッサコンポーネントによって実行されてもよく、及び/又は別のデバッグデバイスのプロセッサコンポーネントによって実行されてもよい。
【0014】
ここで用いられる記号及び用言の一般的な参照によって、以下の詳細な説明の各部分は、コンピュータ又はコンピュータのネットワーク上で実行されるプログラム手順に関して提供されてもよい。これらの手続的説明及び表現は、他の当業者に自らの研究の本質を最も効果的に伝えるため当業者によって用いられる。手順とは、ここでは、また一般的には、所望の結果を導く自己完結した処理シーケンスであると考えられる。これらの処理は、物理量の物理的操作を必要とするものである。通常、必要ではないが、これらの量は、記憶、伝送、合成、比較及び操作可能である電気、磁気又は光信号の形態をとる。通常の使用のため、これらの信号をビット、値、要素、シンボル、文字、項、数などとして参照することがときに便利であると分かる。しかしながら、これら及び同様の用語の全ては適切な物理量に関連付けされ、これらの量に適用される単なる便宜的なラベルであることが留意されるべきである。
【0015】
さらに、これらの操作は、人間のオペレータによって実行される精神的処理に通常関連する加算又は比較などの用語でしばしば参照される。しかしながら、人間のオペレータのこのような能力は、1つ以上の実施例の一部を構成するここに説明される処理の何れかにおいて大部分は必要でないか、又は望ましくない。むしろ、これらの処理はマシーン処理である。各種実施例の処理を実行するのに有用なマシーンは、ここでの教示に従って記述された内部に記憶されたコンピュータプログラムによって選択的にアクティブ化又は構成される汎用デジタルコンピュータ、及び/又は必要とされる目的のため特に構成された装置を含む。各種実施例はまた、これらの処理を実行するための装置又はシステムに関する。これらの装置は、必要とされる目的にために特に構成されるか、又は汎用コンピュータを含むものであってもよい。これら各種マシーンに必要とされる構成は、与えられた説明から明らかであろう。
【0016】
ここで図面が参照され、同様の参照番号は全体を通じて同様の要素を参照するのに用いられる。以下の説明では、説明のため、多数の具体的な詳細がそれの完全な理解を提供するため与えられる。しかしながら、新規な実施例はこれら具体的な詳細な市に実現可能であることは明らかであるかもしれない。他の例では、周知の構成及び装置は、その説明を容易にするため、ブロック図の形式で示される。その意図は、請求項の範囲内の全ての修正、均等及び代替をカバーすることである。
【0017】
図1は、サーバ100、計算装置300及びデバッグ装置500の1つ以上を含むウェイクロックデバッグシステム1000の実施例のブロック図である。これらの計算装置100,300,500のそれぞれは、限定することなく、デスクトップコンピュータシステム、データエントリ端末、ラップトップコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、携帯情報端末、スマートフォン、デジタルカメラ、衣服に搭載された装着式計算装置、車両(例えば、自動車、自転車、車いす)に一体化された計算装置、サーバ、サーバのクラスタ、サーバファームなどを含む各種タイプの計算装置の何れかであってもよい。
【0018】
図示されるように、これらの計算装置100,300,500の一部は、ネットワーク999を介し計算装置300上で実行される1つ以上のルーチンによって要求されたウェイクロックのデバッグに関連する信号を交換してもよい。しかしながら、これらの計算装置の1つ以上は、ネットワーク999を介し更なる他の計算装置(図示せず)及び/又は互いに当該デバッグ処理に全く関連しない他のデータを交換してもよい。各種実施例では、ネットワーク999は、単一の建物又は他のやや限定的なエリア内で拡張することにおそらく限定された単一のネットワーク、かなりの距離におそらく拡張する接続されたネットワークの組み合わせであってもよく、及び/又はインターネットを含むものであってもよい。従って、ネットワーク999は、限定することなく、電気的及び/又は光学的に伝導的なケーブルを利用する有線技術、及び赤外線、ラジオ波又は他の形態の無線送信を利用する無線技術とを含む、信号が交換可能な各種通信技術の何れか(又は組み合わせ)に基づくものであってもよい。
【0019】
各種実施例では、計算装置300は、プロセッサコンポーネント350、クロック351、ストレージ360及び計算装置300とネットワーク999とを結合するインタフェース390の1つ以上を有する。ストレージ360は、オペレーティングシステム340、デバイスドライバ310、システムデータ330、アプリケーションルーチン340、ログパッチルーチン177、ログデバイスドライバ171、システムログデータ337及び補完的ログデータ331の1つ以上を記憶する。オペレーティングシステム340、デバイスドライバ310、アプリケーションルーチン370、ログパッチルーチン177及びログデバイスドライバ171のそれぞれは、各種機能を実行するためのロジックを実現するため、計算装置300のメインプロセッサコンポーネントとしてそれの役割においてプロセッサコンポーネント350上で実行される命令シーケンスを有する。
【0020】
オペレーティングシステム340及びデバイスドライァb310を実行する際、プロセッサコンポーネント350は、アプリケーションルーチン370を実行するための各種形態のサポートを提供する。より詳細には、プロセッサコンポーネント350は、アプリケーションルーチン370が構成される何れかの機能を実行するためにアプリケーションルーチン370が実行可能な動作環境を提供するため、各種機能コールがアプリケーションルーチン370の実行中に行われることを可能にするアプリケーションプログラミングインタフェース(API)を利用可能にする。各アプリケーションルーチン370は、ワードプロセッサ、ウェブサイトビューワ、フォトグラフエディタ、ミーティングスケジュール管理、CAD/CAMなどを含む、各種の個人用途及び/又はプロフェッショナル用途の何れかを実行するためのオペレーティングシステム340のサポートによって、プロセッサコンポーネント350による計算装置300上の実行のため選択された各種タイプのアプリケーションレベルルーチンの何れかであってもよい。プロセッサコンポーネント350はまた、計算装置300のコンポーネントによる電力の消費を管理させられ、各種低電力及び高電力状態間で計算装置300を遷移させることによって実行する。当業者には知られるように、少なくとも一部の低電力状態中、計算装置300の機能は、計算装置300の各種コンポーネントのクロック速度を低下させ、及び/又は電力を絶つことを含む、各種方法で低下されてもよい。
【0021】
少なくともオペレーティングシステム34によってアプリケーションルーチン370に提供されるコール可能な機能のうち、ウェイクロックを要求及び解放するためのコールがある。上述されたように、ウェイクロックの要求は、計算装置300をアプリケーションルーチン370の1つ以上が計算装置300により提供されるより完全なレベルの機能を利用し続けることを可能にするため、少なくとも一部の形態の低電力モードに計算装置を遷移させることを控えるためのオペレーティングシステム340に対するリクエストである。アプリケーションルーチン370の1つ以上は、アプリケーションルーチン370により実行される機能に少なくとも部分的に基づき、各種理由の何れかのためにウェイクロックを要求するためのコールをオペレーティングシステム340に送信してもよい。例えば、アプリケーションルーチン370の1つは、プロセッサコンポーネント350のクロック速度の低下又はインタフェースの機能の低下によって特徴付けされる低電力モードが、当該アプリケーションルーチン370が当該機能を実行するための能力を不可にするように、ネットワーク999を介し他の装置から受信されたデータのリアルタイムのモニタリングを実行してもよい。他の例として、アプリケーションルーチン370の1つは、計算装置300に接続されたディスプレイから電力を絶つことによって、又はプロセッサコンポーネント350のクロック速度を低下させることによって特徴付けされる低電力モードが、当該アプリケーションルーチン370が何れかの機能を実行するための能力を中断させるように、ストレージ360内に記憶される動画ビデオの復号化及び再生を実行してもよい。
【0022】
図3は、ウェイクロックを利用及びデバッグするための計算装置300のコンポーネントの処理の実施例を示す。図示されるように、オペレーティングシステム340は、アプリケーションレベルウェイクロックを管理するアプリケーション電力マネージャ347と、アプリケーション電力マネージャ347に関連するカーネルレベルウェイクロックを含む、カーネルレベルウェイクロックを管理するカーネル電力マネージャ341との双方を含むものであってもよい。オペレーティングシステム340はまた、システムログデータ337を生成するシステムログ生成手段344を有してもよく、さらにシステムログデータ337に記録するため、計算装置300の処理の各種パラメータをモニタするシステムモニタ345を有してもよい。
【0023】
アプリケーションルーチン370の1つがウェイクロックを必要とするアプリケーションルーチン370の1つの通常の実行中、当該アプリケーションルーチン370の1つは、ウェイクロックを要求するコールをアプリケーション電力マネージャ347に送信する。使用されるコールは、アプリケーションルーチン370による利用のためにアプリケーション電力マネージャ347により提供されるAPIのファンクションコールである。当該コールは、ウェイクロックを要求し、ウェイクロックに関連付けされるルーチンとして、コールを行ったアプリケーションルーチン370の1つを特定する識別情報を含む。当該識別情報は、コールのパラメータ及び/又は当該コールの送信元であって、当該アプリケーションルーチン370の一部がプロセッサコンポーネント350により実行されるスレッドの識別子として、アプリケーションルーチン370によって直接提供されるアプリケーションルーチン370の識別子を含むものであってもよい。オペレーティングシステム340は、コールの送信元のスレッドの識別子を、これらのスレッド上で実行されるアプリケーションルーチン370(及び他のルーチン)の特定の1つに関連付けるシステムデータ330内のマッピングデータを維持してもよい。システムデータ330は、オペレーティングシステム340の通常の処理に必要とされる各種データを有し、偶発的又は悪意のある変更を防ぐためにアクセスが大きく制限されるストレージ360内のある位置に記憶されてもよい。
【0024】
ウェイクロックに対するリクエストを受信したことに応答して、アプリケーション電力マネージャ347は、アプリケーションレベルウェイクロックをインスタンス化し、それを要求したアプリケーションルーチン370の1つと関連付ける。これを実行する際、アプリケーション電力マネージャ347は、要求されたアプリケーションウェイクロックと、それを要求したアプリケーションルーチン370の1つとを関連付け、アプリケーションウェイクロックが現在保留中であることの通知を含むシステムデータ330内に維持されるウェイクロックデータへのエントリを生成してもよい。アプリケーションレベルウェイクロックのインスタンス化によって、アプリケーションレベルウェイクロックは、そのとき“アクティブ”又は“保留中”であり、1つのウェイクロックが保留中であるという事実は、計算装置300が低電力状態に遷移することを妨げる。計算装置300が低電力状態に遷移することが可能とされるため、アクティブ及び保留中である何れか及び全てのウェイクロックがまず解放される必要がある。アプリケーションルーチン370の1つに関連するウェイクロックを解放するための以降のコールを受信すると、当該以降のコールの識別情報が、何れのアプリケーションウェイクロックが解放されるか特定するのに利用され、ウェイクロックデータへのエントリはクリアされるか、又は当該ウェイクロックがもはや保留中でないという通知によってマーク付けされる。従って、保留中のウェイクロックを解放するためのコールは、当該ウェイクロックをもはやアクティブにせず、低電力状態への遷移を依然として妨げる1つ以上の他のウェイクロックが依然として保留中であったとしても、計算装置が低電力状態に遷移することをもはや妨げることはできない。上述されたように、アプリケーション電力マネージャ347は、何れかのアプリケーションレベルウェイクロックが保留中であるときはいつでも、全ての保留中のアプリケーションレベルウェイクロックを、それを要求したカーネル電力マネージャ341のより少数のカーネルレベルウェイクロックに集約する。すなわち、何れか保留中のアプリケーションレベルウェイクロックが有る限り、アプリケーション電力マネージャ347に関連する限定数のカーネルレベルウェイクロックをまた保留中にさせるため、カーネル電力マネージャと通信する。いくつかの実施例では、アプリケーション電力マネージャ347に関連するカーネルレベルウェイクロックは1つしかなくてもよい。
【0025】
従って、ウェイクロックに対するリクエストが、何れのアプリケーションレベルウェイクロックもすでに保留中でない時点で、アプリケーション電力マネージャ347によって受信された場合、アプリケーション電力マネージャ347は、アプリケーション電力マネージャ347に関連するカーネルレベルウェイクロックに対するリクエストによって、カーネル電力マネージャ341に通知する。そうでなく、ウェイクロックに対するリクエストが、少なくとも1つのアプリケーションレベルウェイクロックがすでに保留中である時点でアプリケーション電力マネージャ347によって受信された場合、アプリケーション電力マネージャ347は、アプリケーション電力マネージャ347に関連するカーネルレベルウェイクロックに対するリクエストによってカーネル電力マネージャ341に再通知しなくてもよい。これは、カーネルレベルウェイクロックがすでに保留中であるべきであるためである。何れかのアプリケーションウェイクロックが保留中であることを止めるときにのみ(例えば、保留中の全てのアプリケーションレベルウェイクロックが解放された)、アプリケーション電力マネージャ347は、アプリケーション電力マネージャ347に関連するカーネルレベルウェイクロックを解放するためのコールをカーネル電力マネージャ341に送信する。
【0026】
アプリケーション電力マネージャ341に関連するカーネルレベルウェイクロックを要求又は解放するためのアプリケーション電力マネージャ347からカーネル電力マネージャ341へのコールは、当該コールのソースとしてアプリケーション電力マネージャ341を特定する識別情報を含む。この同じコール機構がまた、オペレーティングシステム340の他のカーネルレベルコンポーネントによって、及び/又はデバイスドライバ310によって、カーネルレベルウェイクロックを直接要求又は解放するため利用されてもよい。アプリケーション電力マネージャ347により受信されるウェイクロックに関連するコールと同様に、カーネル電力マネージャ341により受信されたウェイクロックに関連するコールの少なくとも一部における識別情報は、コールのパラメータとしてコールの送信元により提供される識別子、及び/又はコールの送信元のスレッド又はオペレーティングシステムプロセスの識別子を含むものであってもよい。システムデータ330のマッピング情報は、スレッド又はオペレーティングシステムプロセスの識別子を、アプリケーション電力マネージャ347、オペレーティングシステム340のカーネルレベルコンポーネント又はデバイスドライバ310の1つと関連付けるため、カーネル電力マネージャ341により利用されてもよい。しかしながら、一部の実施例では、当該情報を提供する唯一のコールは、アプリケーション電力マネージャ347からのコールであってもよく、これらは、コールのソースとしてアプリケーション電力マネージャ347を特定しさえすればよい。カーネル電力マネージャ341はまた、何れのカーネルレベルウェイクロックが現在保留中であり、それらを要求したオペレーティングシステムコンポーネント又はデバイスドライバ310とのそれらの関連付けとを追跡するための機構として、システムデータ330のウェイクロックデータにおけるエントリを生成及びクリアしてもよい。上述されたように、カーネル電力マネージャ341は、各種低及び/又は高電力状態間で計算装置300を遷移させることによって、保留中のウェイクロックの少なくとも有無に対して実行されるオペレーティングシステム340の部分であってもよい。
【0027】
ウェイクロックを少なくとも要求するのに利用されるコールは、要求されたウェイクロックにおいて所望される特定の特性を示すためのパラメータとして、1つ以上のインジケータフラグを含むものであってもよいことに留意すべきである。例えば、ウェイクロックを要求するためのコールは、ウェイクロックが計算装置300の特定のリソース又はコンポーネント(例えば、ディスプレイ、特定の記憶媒体デバイスなど)を低電力状態に配置することに対してロックすることに限定されることを指定してもよい。また、各種デバッグフラグ又はメッセージは、アプリケーションルーチンの一部の状態の表示、及び/又はアプリケーションルーチンの何れの部分がウェイクロックを必要としたかの表示を提供するため、ウェイクロックに関連するコールに含まれてもよい。このようなデバッグフラグ又はメッセージの搭載は、当該コールにおいて伝送されるパラメータであってもよい。さらに、少なくともカーネルレベルウェイクロックは、要求されたことに応答してインスタンス化されてから選択された期間が経過した後、保留であることを自動的に止める自己満了するウェイクロックであることが要求されてもよいことに留意すべきである。このような選択された期間は、ウェイクロックを要求するためのコールのパラメータとして指定されてもよいし、又は所定の期間であってもよい(例えば、パラメータとして異なる期間を指定することによってオーバライドされうるデフォルト期間など)。
【0028】
オペレーティングシステム340の通常の実行中、システムログ生成手段344は、選択されたイベントセットの出現を記録するシステムログデータ337にエントリを反復的に加える。当該選択されたセットには、計算装置300の電力状態間の変更の発生、システムエラーの発生、ストレージ360の特定部分に試みられた不適切なアクセスの発生(例えば、システムデータ330が記憶されている部分)などがあってもよい。システムモニタ345は、システムログデータ337に記録された情報の少なくとも一部をシステムログ生成手段344に供給するため、計算装置300の処理の各種側面(例えば、それの現在の電力状態)をモニタしてもよい。システムログ生成手段344はまた、システムログデータ337に加えられるエントリをタイムスタンプする際に利用される現在時間を取得するため、クロック351と定期的に通信してもよい。
【0029】
上述されたように、ウェイクロックのサポートの提供は、バッテリ(特に図示せず)などの計算装置の電力の限定的なソースの枯渇を生じさせるのに十分長くウェイクロックが誤って維持されるウェイクロックバグと伴う可能性がある。また上述されたように、オペレーティングシステムにより提供されるウェイクロックバグをデバッグするための典型的なサポートは、ウェイクロックがシステムログデータにおいて保留中であるか否かの表示だけでなく、何れのアプリケーションルーチン、オペレーティングシステムコンポーネント又はデバイスドライバが保留中のウェイクロックを有しているかの表示との包含である。
【0030】
しかしながら、図3に示されるように、アプリケーション電力マネージャ347は、システムログデータ337における当該情報の欠落を解消するため、ログパッチルーチン177により拡張される。いくつかの実施例では、ログパッチルーチン177は、コール機構を介し接続するためアプリケーション電力マネージャ347(例えば、ログパッチルーチン177は、他のライブラリのものと代替されるコール可能なファンクションのライブラリを実装してもよい)に(動的又は静的に)リンクされてもよい。他の実施例では、ログパッチルーチン177は、より完全に接続するため、コンパイル前にアプリケーション電力マネージャ347に搭載されてもよい(例えば、双方の命令シーケンスが、コンパイル処理を介し単一の合成されたルーチンを効果的に生成するよう合成されてもよい)。更なる他の拡張の機構が当業者に想到しうる。
【0031】
ログパッチルーチン177は、アプリケーション電力マネージャ347のものに追加される際、システムログデータ337に追加的データ334として記録するため、システムログ生成手段344に追加的なアプリケーションレベルウェイクロック情報を提供する命令シーケンスを含む。具体的には、ログパッチルーチン177は、ウェイクロックを要求又は解放するため、アプリケーションルーチン370からアプリケーション電力マネージャ347により受信されたコールをキャプチャする。ログパッチルーチン177は、それからシステムログ生成手段344が追加的データ334の一部として記録することを可能にするため、各コールの表示をシステムログ生成手段344に提供するため、アプリケーション電力マネージャ347と連携する(例えば、アプリケーション電力マネージャ347とシステムログ生成手段344との間の位置における通信を利用する)。これらの表示は、これらのコールに含まれるパラメータにおいて示されるように、及び/又はシステムデータ330内に維持されるマッピングデータを参照することから導出されるように、これらのコールを生成するアプリケーションルーチン370のそれぞれを識別する識別情報を有してもよい。さらに、アプリケーション電力マネージャ347は、プロセッサコンポーネント350によるログパッチルーチン177の実行によって、追加的データ334の一部として記録のため、カーネル電力マネージャ341に対するアプリケーション電力マネージャ347により生成された各コールの表示をシステムログ生成手段344に更に提供させるものであってもよい。システムログデータ337において生成される他のエントリに関して、追加的データ334を構成する追加的なエントリがまたタイムスタンプされる。
【0032】
さらに、図3にまた示されるように、ログデバイスドライバ171は、デバイスドライバ(デバイスドライバ310など)からのウェイクロックコールをサポートするため、カーネル電力マネージャ341により少なくとも部分的に提供されるドライバプログラミングインタフェース(DPI)を介しカーネル電力マネージャ341と通信するデバイスドライバセット310に加えられる。カーネル電力マネージャ341により少なくとも部分的に提供されるDPIは、少なくともウェイクロックに関するカーネル電力マネージャ341により受信されたコールがデバイスドライバに再送可能なコールバック機構のサポートを含むものであってもよい。ログデバイスドライバ171は、プロセッサコンポーネント350により実行されるとき、ウェイクロックを要求又は解放するためカーネル電力マネージャ341により受信された各コールがログデバイスドライバ171に中継されるように、当該機構のみの呼出を要求するためのコールをカーネル電力マネージャ341に送信する命令シーケンスを有する。さらに、ログデバイスドライバ171は、各コールの発生を示すエントリにより補完的ログデータ331を生成するため、それに中継されたウェイクロックコールを解析する。これらの表示は、これらのコールに含まれるパラメータにおいて示されるように、及び/又はシステムデータ330内に維持されるマッピングデータを参照することから導出可能であるように、これらのコールを生成するデバイスドライバ310のそれぞれを特定する識別情報を含むものであってもよい。システムログ生成手段344により生成されたエントリに関して、補完的ログデータ331において生成されたエントリは、ログデバイスドライバ171によりタイムスタンプされる。これを実行する際、ログデバイスドライバ171は、システムログ生成手段344と同様に、現在時間を提供するためクロック351に依拠してもよい。
【0033】
追加的データ334のエントリによるシステムログデータ337の拡張及び/又は補完的ログデータ331の生成は、システムログデータ337により大きなイベントセットを記録するエントリを含める“デバッグモード”を有効又は無効にする同一のモード設定によって選択的にトリガされてもよい。上述されるように、計算装置300のオペレータの制御の下でデバッグモードに入ったり出たりする切替のためのサポートが提供されてもよい。従って、オペレーティングシステム340は、1つ以上のアプリケーションレベル又はカーネルレベルウェイクロックがすでに配置されていてもよいように、ログパッチルーチン177及び/又はログデバイスドライバ171の機能が有効にされるまでのある時間において、プロセッサコンポーネント350により実行されてもよい。いくつかの実施例では、ログパッチルーチン177は、有効にされると、追加的データ334の一部として記録するため、システムログ生成手段3444にすでに保留中の全てのアプリケーションレベルウェイクロックの表示をアプリケーション電力マネージャ347に提供させてもよい。さらに、少なくともログパッチルーチン177は、アプリケーション電力マネージャ347に、システムデータ330のマッピングデータの少なくとも一部を抽出させ、追加的データ344の一部として記録するためシステムログ生成手段344に提供させてもよい。
【0034】
図1を参照して、計算装置300は、ネットワーク999を介し、及び/又は他の機構によって(例えば、着脱可能な記憶媒体の利用によって)サーバ100からログパッチルーチン171及びログデバイスドライバ177を受信してもよい。あるいは、特に示されていないが、計算装置300は、存在する場合、デバッグ装置500からログパッチルーチン171及びログデバイスドライバ177を受信してもよい。さらに、それらが統合されるように、ログパッチルーチン171がアプリケーション電力マネージャ347と共にコンパイルされることが与えられると、計算装置300は、統合されたログパッチルーチン171と共にあるバージョンのアプリケーション電力マネージャ347を受信することによって、ログパッチルーチン171を受信してもよい。
【0035】
各種実施例では、デバッグ装置500(存在する場合)は、プロセッサコンポーネント550、ストレージ560、コントロール520、ディスプレイ580、及びデバッグ装置500とネットワーク999とを接続するためのインタフェース590の1つ以上を有する。ストレージ560は、システムログデータ337、補完的ログデータ331、揃えられたトレースデータ534及びデバッグルーチン570を記憶する。デバッグルーチン570は、各種機能を実行するためのロジックを実現するため、リモート計算装置500のメインプロセッサコンポーネントとしてそれの役割においてプロセッサコンポーネント550上で実行される命令シーケンスを有する。
【0036】
デバッグルーチン570を実行する際、プロセッサコンポーネント550は、ネットワーク999を介し、又は他の機構を介し(例えば、着脱可能な記憶媒体の利用を介し)計算装置300からシステムログデータ337及び補完的ログデータ331を受信する。プロセッサコンポーネント550は、システムログデータ337(追加的データ334を含む)及び補完的ログデータ331のそれぞれを解析し、何れかのマッピングデータと共に、ワークロックに関連するイベント又は他の情報の全ての表示を抽出する。プロセッサコンポーネント550はまた、計算装置300の各種コンポーネントのアクティビティのレベル又はタイプに関する情報を抽出してもよい(例えば、プロセッサの利用レベル及び/又はクロック速度、インタフェース390を介したデータフローレート、記憶装置の着脱可能媒体からのデータ抽出レートなど)。プロセッサコンポーネント550は、システムログデータ337又は補完的ログデータ331の何れかに含まれる何れかのマッピングデータを利用して、ウェイクロックに関連するエントリにおける識別情報とオペレーティングシステム340のコンポーネント及び/又はアプリケーションルーチン370の特定のものとを関連付けてもよい。その後、プロセッサコンポーネント550は、タイムスタンプによってイベントの表示を伝送するエントリを時間的に関連付け、それらを整列されたトレースデータ534として記憶する。
【0037】
プロセッサコンポーネント550は、整列されたトレースデータ534の時間的に整列されたエントリの各種組み合わせを以降に抽出し、ディスプレイ580上に通常の期間において発生したイベントのタイムラインの時間的に整列されたグラフとしてそれらを視覚的に提示する。プロセッサコンポーネント550は、時間的に整列されたグラフの何れの組み合わせが表示されるべきか、及び/又は整列されたトレースデータ534によってカバーされる何れの期間が表示されるべきかを選択するため、デバッグ装置500のオペレータによってコントロール520の操作から入力を受信するため、コントロール520をモニタリングしてもよい。
【0038】
図4,5,6はそれぞれ、計算装置300の処理中に経時的に行われたウェイクロックの使用に関連するイベントの時間的に整列されたグラフの組み合わせについて、ディスプレイ580上に視覚的に提示されうるイメージ880の一例となる実施例を示す。図示され、説明されるように、このような時間的整列は、ウェイクロックに関連するイベント間の可能性のある因果関係の関連付けを特定するのに役立ち、これにより、ウェイクロックバグのインスタンスをデバッグするのに役立つ。
【0039】
図4は、ウェイクロックに対するリクエストに応答したウェイクロックのインスタンス化及び/又はこれを実行するためのリクエストに応答したウェイクロックの解放など、ウェイクロックに関連するイベントのタイムラインをそれぞれ提示する複数のウェイクロックグラフ881,884,887の視覚的提示を示す。それぞれが異なるアプリケーションルーチン(アプリケーションルーチン370のそれぞれなど)に関連する2つのアプリケーションレベルウェイクロック及びアプリケーション電力マネージャ347に関連するカーネルレベルウェイクロックを含む、経時的な異なる3つのウェイクロックのインスタンス化及び解放の3つの時間的に整列されたウェイクロックグラフ887が具体的に示される。また、ウェイクロックグラフ881が3つのウェイクロックグラフ887と時間的に整列されるように、同じ期間におけるデバイスドライバ(デバイスドライバ310の1つなど)に関連するカーネルレベルウェイクロックのインスタンス化及び解放のウェイクロックグラフ881が示される。さらに、ウェイクロックグラフ884ウェイクロックグラフ887,881と時間的に整列されるように、同じ期間におけるオペレーティングシステムのカーネルレベルコンポーネントに関連するカーネルレベルワイクロックのインスタンス化及び解放のウェイクロックグラフ884が示される。更にまた、アクティビティグラフが上述したウェイクロックグラフに時間的に整列されるように、同じ期間においてプロセッサコンポーネント350、インタフェース390及び着脱可能な記憶装置(例えば、上記の図の何れにも具体的に示されていないディスクメディアリーダなど)のアクティビティレベルのタイムラインの3つのアクティビティグラフ885が示される。また更に、電力状態グラフ883が上述したウェイクロックグラフに時間的に整列されるように、同じ期間において電力状態間の計算装置300の遷移のタイムラインの電力状態グラフ883が示される。
【0040】
3つのウェイクロックグラフ887の時間的な整列は、アプリケーション電力マネージャ347に関連する2つのアプリケーションレベルウェイクロックを集約したものを表すカーネルレベルウェイクロックのインスタンス化及びリリースを生じさせる2つのアプリケーションレベルウェイクロックのインスタンス化及びリリースの因果関係を可視化する。より詳細には、2つのアプリケーションレベルウェイクロックの何れかが保留中であるとき、カーネルレベルウェイクロックは保留中のままであることが確認できる。また、インタフェース390のアクティビティグラフ885の1つ(例えば、“ネットワークアクティビティ”のアクティビティグラフ885など)によるウェイクロックグラフ881の時間的な整列は、インタフェース390のアクティビティにデバイスドライバのカーネルレベルウェイクロックの間に存在する関係の視覚的ヒントを提供する。計算装置300の3つの特定のコンポーネントのアクティビティの図示にも関わらず、他のコンポーネント及び/又はより多く又はより少ないコンポーネントのアクティビティが含まれてもよいことに留意すべきである。さらに、アクティビティが示されうるコンポーネントは、単一の(又は少数の)半導体デバイス(例えば、“システム・オン・チップ”又はSOC)の回路の物理的に離散的なコンポーネント及び/又は機能ブロックであってもよい。確認できるように、ある量のネットワークアクティビティが開始され、その後、ウェイクロックが必要とされたことが、インタフェース390に関連するデバイスドライバによって明らかに決定され、デバイスドライバに1つを要求させる。その後、ネットワークアクティビティが停止すると、カーネルレベルウェイクロックがデバイスドライバによって解放される。さらに、ウェイクロックグラフ881,884,887との電力状態グラフ883の時間的関係は、計算装置の電力状態とウェイクロックの係属との間の因果関係を可視化する。具体的には、保留中のウェイクロックがない場合、計算装置300は、低電力状態に入ることが可能とされ(対角線のハッチングによって電力状態グラフ883において示される)、保留中の少なくとも1つのウェイクロックがある場合、計算装置300は、高電力状態に強制的に留まる(正方形のハッチングによって電力状態グラフ883において示される)。
【0041】
図5は、着脱可能な記憶媒体装置に関連する単一のアクティビティグラフ(例えば、“ディスクリーダ”のアクティビティグラフなど)と時間的に整列されたアプリケーションルーチンに関連するアプリケーションレベルウェイクロックの単一のウェイクロックグラフ887の視覚的提示のよりシンプルな具体例を示す。これら2つのグラフの時間的整列は、ディスクリーダのアクティビティが低電力状態への可能性のある遷移からの中断なく継続することを可能にするためのウェイクロックを要求するウェイクロックグラフ887にマーク付けされたコールとディスクリーダの一部に対するアクティビティの開始との間の因果関係を確認することを可能にする。しかしながら、これら2つのグラフの時間的整列は、ディスクリーダのアクティビティの悪人が終了すると、コールの欠落がウェイクロックを解放することを可能にする。当業者に知られるように、これは、命令シーケンスにおけるエラーがウェイクロックを要求するが、解放しないウェイクロックバグの“ノー・スリープ・コード・バグ(no sleep code bug)”バージョンの表示を提供するものであってもよい。命令シーケンスは、ウェイクロックを解放するのに必要とされるコールを欠落するか、又は命令シーケンスのロジックは、ウェイクロックの解放をコールするための命令が実行されない方法で不具合となりうる。
【0042】
図6は、アプリケーションルーチン(例えば、アプリケーションルーチン370の1つ)に関連する単一のアプリケーションレベルウェイクロックに関連するイベントの3つの時間的に整列されたウェイクロックグラフ887の視覚的提示のよりシンプルな具体例を示す。これらのウェイクロックグラフ887の2つは、ウェイクロックを要求して解放するため同一のアプリケーションルーチンに関連する2つの別々のスレッドにより生成されるコールを視覚的に示す。これら2つのウェイクロックグラフ887の時間的整列は、2つのスレッドの間の命令の実行タイミングが、ウェイクロックを要求するためのコールが解放するためのコールの後に行われるウェイクロックバグの可能性のある“ノー・スリープ・レース条件(no sleep race condition)”バージョンを容易に可視化する。これらのウェイクロックグラフ887の3番目とのこれら2つのウェイクロックグラフ887の時間的整列は更に、2つのコールが生成された順序の因果関係と、要求されたウェイクロックの結果としてのインスタンス化及び以降の解放の欠落を示す。
【0043】
図2は、計算装置300の他の実施例を含むウェイクロックデバッグシステム1000の他の実施例のブロック図を示す。図2のウェイクロックデバッグシステム1000の他の実施例は、多くの方法で図1の実施例と類似し、従って、同様の参照番号は全体を通じて同様のコンポーネントを参照するのに用いられる。しかしながら、図1の計算装置300と異なって、図2の計算装置300は更に、図1のデバッグ装置500の特徴を含む。従って、別のデバッグ装置500は実行する代わりに、時間の経過と共に発生するウェイクロックの使用に関連するイベントの時間的に整列されたタイムライングラフを解析し、時間的に整列し、視覚的に提示するのは、図2の計算装置300のプロセッサコンポーネント350である。また、別のデバッグ装置500のコントロール520及びディスプレイ580が実行する代わりに、視覚的提示を提供及び制御するのに利用されるのは、図2の計算装置300のディスプレイ380及びコントロール320である。
【0044】
各種実施例では、プロセッサコンポーネント350,550のそれぞれは、広範な市販のプロセッサの何れかを含むものであってもよい。さらに、これらのプロセッサコンポーネントの1つ以上は、複数のプロセッサ、マルチスレッドプロセッサ、マルチコアプロセッサ(複数のコアが同一の又は別のダイ上に共存するか否かに関わらず)、及び/又は複数の物理的に別のプロセッサがある方法でリンクされる他の多様性を有するマルチプロセッサアーキテクチャを含むものであってもよい。
【0045】
各種実施例では、ストレージ360,560のそれぞれは、おそらく電力の中断されない供給を必要とする揮発性技術を含むと共に、おそらく着脱可能であってもよいし、又はなくてもよい機械可読記憶媒体の使用を伴う技術を含む、広範な各種情報記憶技術の何れかに基づくものであってもよい。従って、これらのストレージのそれぞれは、限定することなく、ROM(Read−Only Memory)、RAM(Random−Access Memory)、DRAM(Dymanic RAM)、DDR−RAM(Double−Data−Rate DRAM)、SDRAM(Sunchronous DRAM)、SRAM(Static RAM)、PROM(Programmable ROM)、EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)、フラッシュメモリ、ポリマメモリ(例えば、強誘電性ポリマメモリ)、オボニックメモリ、相変化若しくは強誘電性メモリ、SONOS(Silicon−Oxide−Nitride−Silicon)メモリ、磁気若しくは光カード、1つ以上の個別の強誘電性ディスクドライブ、又は1つ以上のアレイ(例えば、RAID(Redundant Array of Independent Disks)アレイ)に編成される複数の記憶装置を含む広範な各種タイプ(又はタイプの組み合わせ)の何れかを含むものであってもよい。これらのストレージのそれぞれは単一のブロックとして示されているが、これらの1つ以上は異なる記憶技術に基づきうる複数の記憶装置を含むものであってもよいことに留意すべきである。従って、例えば、これら図示されたストレージのそれぞれの1つ以上は、光ドライブ又はフラッシュメモリカードリーダの組み合わせを表すものであってもよく、これによって、プログラム及び/又はデータは、機械可読記憶媒体、相対的に延長された期間にローカルにプログラム及び/又はデータを記憶するための強誘電性ディスクドライブ、及びプログラム及び/又はデータへの相対的に迅速なアクセスを可能にする1つ以上の揮発性ソリッドステートメモリ装置(例えば、SRAM又はDRAM)のある形態で記憶及び伝送されうることが留意されるべきである。また、これらのストレージのそれぞれは同一の記憶技術に基づき複数のストレージコンポーネントから構成されてもよいが、使用中の特殊性の結果として個別に維持されてもよい(例えば、あるDRAM装置はメインストレージとして利用されるが、他のDRAM装置はグラフィックコントローラのフレームバッファとして利用される)ことが留意されるべきである。
【0046】
各種実施例では、インタフェース390,590のそれぞれは、説明されたように、計算装置が他の装置に結合されることを可能にする広範な各種シグナリング技術の何れかを利用してもよい。これらのインタフェースのそれぞれは、当該結合を可能にするための必須の機能の少なくとも一部を提供する回路を有してもよい。しかしながら、これらのインタフェースのそれぞれはまた、プロセッサコンポーネントの対応するものによって実行される命令シーケンスにより少なくとも部分的に実現されてもよい(例えば、プロトコルスタック又は他の機能を実現するため)。電気的及び/又は光学的に伝導性のケーブリングが利用される場合、これらのインタフェースは、限定することなく、RS−232C、RS−422、USB、イーサネット(登録商標)(IEEE−802.3)又はIEEE−1394を含む、各種工業規格の何れかに準拠するシグナリング及び/又はプロトコルを利用してもよい。無線信号伝送の利用を伴う場合、これらのインタフェースは、限定することなく、IEEE802.11a、802.11b、802.11g、802.16、802.20(“モバイル・ブロードバンド・ワイヤレス・アクセス”として通常参照される)、Bluetooth(登録商標)、ZigBee、又はGSM(登録商標)/GPRS(GSM(登録商標) with General Packet Radio Service)、CDMA/1xRTT、EDGE(Enhanced Data Rates for Global Evolution)、EV−DO(Evolution Data Only/Optimized)、EV−DV(Evolution For Data and Voice)、HSDPA(High Speed Downlink Packet Access)、HSUPA(High Speed Uplink Packet Access)、4G LTEなどのセルラ無線サービスを含む、各種工業規格の何れかに準拠するシグナリング及び/又はプロトコルを利用してもよい。
【0047】
図7,8,9はそれぞれ、図1又は図2の何れかのヘテロジーニアスコア処理システム1000の実施例の一部のブロック図をより詳細に示す。より詳細には、図7は、図7は、プロセッサコンポーネント350が、オペレーティングシステム340及びログパッチルーチン177を実行する際、エンハンスされた特異性によってアプリケーションレベルウェイクロックに関連するイベントをシステムログデータ337に記録する計算装置300の動作環境の態様を示す。図8は、プロセッサコンポーネント350が、オペレーティングシステム340及びログデバイスドライバ171を実行する際、カーネルレベルウェイクロックに関連するイベントを補完的ログデータ331に記録する計算装置300の動作環境の態様を示す。図9は、プロセッサコンポーネント350又は550がそれぞれ、デバッグルーチン570を実行する際、システムログデータ337及び補完的ログデータ334を用いて、ウェイクロックのデバッグを支援するために時間的に整列されたイベントのタイムライングラフを視覚的に提示する計算装置300又はデバッグ装置500の何れかの動作環境の態様を示す。
【0048】
当業者に認識可能であるように、それぞれが構成されるコンポーネントを含む、オペレーティングシステム340、ログパッチルーチン177、ログデバイスドライバ171及びデバッグルーチン570が、プロセッサコンポーネント350又は550の適用可能なものを実現するため選択された何れかのタイプのプロセッサ上で動作可能となるよう選択される。各種実施例では、それぞれを構成する命令シーケンスは、オペレーティングシステム、デバイスドライバ及び/又はアプリケーションレベルルーチン(例えば、いわゆる、ディスク媒体上に提供される“ソフトウェアスーツ(software suites)”、リモートサーバから取得される“アプレット”)の1つ以上を有してもよい。オペレーティングシステムが含まれる場合、オペレーティングシステムは、プロセッサコンポーネント350又は550の何れか対応するものに適した各種の利用可能なオペレーティングシステムの何れかであってもよい。1つ以上のデバイスが含まれる場合、これらのデバイスドライバは、ハードウェア又はソフトウェアコンポーネントに関わらず、計算装置300又は500の対応するものの他の各種コンポーネントの何れかのサポートを提供してもよい。
【0049】
オペレーティングシステム340及びデバッグルーチン540のそれぞれは、説明されたように、ネットワーク999を介し信号を送受信するため、それぞれインタフェース390又は590を実行するためのプロセッサコンポーネント350又は550により実行可能な通信コンポーネント349又は549を有してもよい。交換される信号のうち、ログパッチルーチン177及び/又はログデバイスドライバ171をサーバ100又はデバッグ装置500の何れかから計算装置300に伝送する信号があってもよい。あるいは、又は更に、交換される信号のうち、システムログデータ337及び補完的ログデータ331を計算装置300からデバッグ装置500に伝送する信号があってもよい。当業者に認識されるように、これらの通信コンポーネントは、インタフェース390,590の対応するものを実現するため何れのタイプのインタフェース技術が選択されても動作可能であるよう選択される。
【0050】
より詳細には、図7を参照して、ログパッチルーチン177は、ウェイクロックを要求又は解放するためアプリケーションルーチン370から入力されるコールを傍受するため、プロセッサコンポーネント350により実行可能なキャプチャコンポーネント1777を有してもよい。キャプチャコンポーネント1777は、限定することなく、アプリケーションルーチン370の何れがコールを送信したかの識別情報、アプリケーションルーチン370の1つの何れのプロセスがコールを送信したかの識別情報、又はウェイクロックが適用する計算装置300の1つ以上の特定のコンポーネントを示す1つ以上のフラグを含む、これらのコールにおいて伝送されるパラメータの1つ以上をキャプチャする。あるいは、又は更に、キャプチャコンポーネント1777は、コールを送信したアプリケーションルーチン370の一部がプロセッサコンポーネント350により実行されるスレッドを特定してもよい。
【0051】
ログパッチルーチン177は、アプリケーションレベルウェイクロックを要求又は解放するためのコール、マッピングデータ及び/又は現在保留中のウェイクロックのウェイクロックデータの受信の通知を、システムログデータ337に追加的データ334の一部として記録されるシステムログ生成手段344に提供するため、プロセッサコンポーネント350により実行可能な中継コンポーネント1774を有してもよい。いくつかの実施例では、システムログ生成手段344はシステムログデータ337を生成する際に生成される全てのエントリの全てのタイムスタンプを提供してもよいが、中継コンポーネント1774は、あるいは、又は更に、システムログ生成手段344に伝送されるウェイクロックに関連するイベントの通知をタイムスタンプする際に利用するため、クロック351からより直接的に現在時間の通知を受信してもよい。
【0052】
より詳細には、図8を参照して、ログデバイスドライバ171は、カーネル電力マネージャ341に対して行われるカーネルレベルウェイクロックを要求又は解放するための全てのコールがログデバイスドライバ171に中継されるよう調整するため、カーネル電力マネージャ341によって提供されるDPIのコールバック機構の利用を要求するコールによって、カーネル電力マネージャ341に通知するためプロセッサコンポーネント350により実行可能なコールコンポーネント1713を含むものであってもよい。これは、デバイスドライバ310、アプリケーション電力マネージャ347及びオペレーティングシステム340の他のコンポーネントの1つ以上によって行われるカーネルレベルウェイクロックに対するコールを含む。いくつかの実施例では、コールコンポーネント1713はまた、何れのデバイスドライバ310及び/又はオペレーティングシステム340の何れのコンポーネントが要求したかを示す識別情報と共に、何れのカーネルレベルウェイクロックがすでに保留中であるかの通知を要求するコールによって、カーネル電力マネージャ341に通知してもよい。これは、関連するデバイスドライバ又はオペレーティングシステムコンポーネント(例えば、要求元のデバイスドライバ又はオペレーティングシステムコンポーネント)に関連する保留中のカーネルレベルウェイクロックの通知を含むシステムデータ330の一部として維持されるウェイクロックデータの少なくとも一部をカーネル電力マネージャ341に抽出させるものであってもよい。
【0053】
ログデバイスドライバ171は、カーネル電力マネージャ341がカーネルレベルウェイクロックを要求又は解放するため受信するコールの通知をカーネル電力マネージャ341から受信するように、プロセッサコンポーネント350により実行可能な受信コンポーネント1711を有してもよい。カーネル電力マネージャ341によるこれらの通知の提供は、上述されたように、コールバック機構を呼び出すためカーネル電力マネージャに対してコールコンポーネント1713によって行われるコールに応答してもよい。受信コンポーネント1711はまた、現在保留中のカーネルレベルウェイクロック、及び/又は要求元のデバイスドライバ310及び/又はオペレーティングシステムのコンポーネントのカーネル電力マネージャ341から受信した通知をキャプチャしてもよい。
【0054】
ログデバイスドライバ171は、補完的ログデータ331を生成するように、プロセッサコンポーネント350により実行可能なログコンポーネント1714を有してもよい。これを実行する際、ログコンポーネント1714は、現在保留中のウェイクロックのカーネルレベルウェイクロック及び/又はウェイクロックデータを要求又は解放するためのコールの通知を補完的ログデータ331に記憶する。ログコンポーネント1714は、カーネルレベルウェイクロックを要求又は解放するためのコールなど、補完的ログデータ331に記録されたカーネルレベルウェイクロックに関連するイベントの通知をタイムスタンプする際に利用されるクロック351からの現在時間の通知を受信する。
【0055】
より詳細には、図9を参照して、デバッグルーチン570は、計算装置300のコンポーネントのアクティビティの態様を示すエントリと共に、ウェイクロックに関連するエントリを抽出するため、システムログデータ337及び補完的ログデータ331のエントリを解析するように、プロセッサコンポーネント350又は550の何れかによって実行可能な関連付けコンポーネント574を有してもよい。関連付けコンポーネント574は、抽出されたエントリを時間的に整列し、それらを組み合わせ、整列されたトレースデータ534を生成する。これを実行する際、関連付けコンポーネント574はまた、アプリケーションレベル及び/又はカーネルレベルウェイクロックと、オペレーティングシステム340のルーチン、プロセス、スレッド、コンポーネントなどの識別情報とを関連付けて、それらの間の関連付けを特定及び利用して、整列されたトレースデータ534にエントリを更に関連付けるため、システムログデータ337又は補完的ログデータ331の何れかに含まれる何れかのマッピングデータを抽出してもよい。
【0056】
デバッグルーチン570は、ウェイクロックに関連するイベントの時間的に整列されたグラフ、計算装置300のコンポーネントのアクティビティ及び/又は整列されたトレースデータ534に示される計算装置300の電力状態間の遷移のイメージ880をディスプレイ380又は580にそれぞれ視覚的に提示するように、プロセッサコンポーネント350又は550の何れかによって実行可能な提示コンポーネント578を有してもよい。説明されたように、提示コンポーネント578は、イメージ880に視覚的に提示されるべきコンポーネントのアクティビティレベル、ウェイクロックに関連する各種イベントを選択するため、計算装置300又はデバッグ装置500のそれぞれのオペレータによるコントロールの処理の通知を受信するため、コントロール320又は520をモニタしてもよい。あるいは、又は更に、コントロール320又は520は、イメージ880において視覚的に提示されるべき整列されたトレースデータによってカバーされる期間の一部を選択するため、処理の通知を受信するようにモニタされてもよい。
【0057】
図10は、ロジックフロー2100の一実施例を示す。ロジックフロー2100は、ここに説明される1つ以上の実施例により実行される処理の一部又は全てを表すものであってもよい。より詳細には、ロジックフロー2100は、少なくともオペレーティングシステム340及びログパッチルーチン177を実行する際にプロセッサコンポーネント350により実行され、及び/又は計算装置300の他のコンポーネントにより実行される処理を示すものであってもよい。
【0058】
2110において、ウェイクロックデバッグシステムの計算装置のプロセッサコンポーネント(例えば、ウェイクロックデバッグシステム1000の計算装置300のプロセッサコンポーネント350など)は、アプリケーション電力マネージャの命令シーケンスを拡張するため、命令シーケンスから構成されるパッチルーチンを実行する(例えば、オペレーティングシステム340のアプリケーション電力マネージャ347を拡張するログパッチルーチン177)。これを実行する際、パッチルーチンの機能が有効にされた時点で、すでに保留中の何れかのアプリケーションレベルウェイクロックの通知を収集するため、2つの命令シーケンスの間の協調がもたらされる。説明されたように、これは、オペレーティングシステムにより維持されるデータ構造(例えば、システムデータ330の一部として維持されるウェイクロックデータなど)にアクセスするアプリケーション電力マネージャが、それらを要求した結果としてそれらに関連付けされるアプリケーションルーチンの識別子と保留中のウェイクロックとを関連付けるデータ構造のエントリを抽出することを伴うものであってもよい。このようなデータ構造のこのようなエントリはまた、ウェイクロックの何れが保留中であるかの通知を維持してもよいか、又は保留中のウェイクロックのエントリをのみを有してもよい。
【0059】
2120において、パッチルーチンが有効にされた時点ですでに保留中の何れかのウェイクロックの通知が、オペレーティングシステムのシステムログ生成手段(例えば、オペレーティングシステム340のシステムログ生成手段344など)によって生成されるシステムログデータに記録される。上述されたように、アプリケーション電力マネージャは、いくつのウェイクロックが保留中であるか、又は関連するアプリケーションルーチンの通知なく、保留中のウェイクロックが存在するというかなり限られた通知のみを提供するため、システムログ生成手段とすでに通常は通信する。
【0060】
2130において、アプリケーションルーチンをプロセッサコンポーネントにより実行されるプロセス及び/又はスレッドにマッピングするマッピング情報を収集するため、パッチルーチンとアプリケーション電力マネージャとの間の更なる連携がもたらされる。上述されたように、これは、オペレーティングシステムにより維持される他のデータ構造(例えば、システムデータ330の一部として維持されるマッピングデータ)にアクセスするアプリケーション電力マネージャが、関連付けの通知を提供するマッピングデータのエントリを抽出することを伴うものであってもよい。2140において、収集されたマッピング情報の通知が、システムログデータに記憶される。
【0061】
2150において、ウェイクロックを要求又は解放するためアプリケーション電力マネージャにより受信されるコールが傍受される。上述されたように、このようなコールを傍受する際、パッチルーチンは、コールとそれを要求したアプリケーションルーチンとを関連付ける識別情報、ウェイクロックが適用する計算装置の特定のコンポーネントを示す1つ以上のフラグ、及び/又はパラメータとして含まれうるデバッグ情報を含むものであってもよい、これらのコールにより伝送されるパラメータを受信する。
【0062】
2160において、傍受されたコールの通知をシステムデータ生成手段に提供するため、アプリケーション電力マネージャとシステムデータ生成手段との間の通信を利用するため、パッチルーチンとアプリケーション電力マネージャとの間の更なる連携がもたらされる。上述されたように、これは、システムデータ生成手段にパラメータ情報を含む傍受されたコールのためのシステムログデータにおけるエントリを生成させる。
【0063】
図11は、ロジックフロー2200の一実施例を示す。ロジックフロー2200は、ここに説明される1つ以上の実施例により実行される処理の一部又は全てを表すものであってもよい。より詳細には、ロジックフロー2200は、少なくとも制御ルーチン340及びログデバイスドライバ171を実行する際にプロセッサコンポーネント350により実行され、及び/又は計算装置300の他のコンポーネントにより実行される処理を示すものであってもよい。
【0064】
2210において、ウェイクロックデバッグシステムの計算装置のプロセッサコンポーネント(例えば、ウェイクロックデバッグシステム1000の計算装置300のプロセッサコンポーネント350)は、カーネル電力マネージャに結合されるログデバイスドライバ(例えば、オペレーティングシステム340のカーネル電力マネージャ341と通信するログデバイスドライバ171)を実行する。これを実行する際、プロセッサコンポーネントは、ログデバイスドライバの機能が有効にされた時点ですでに保留中である何れかのカーネルレベルウェイクロックの通知を提供するためのリクエストによって、カーネル電力マネージャに通知する。上述されたように、これは、オペレーティングシステムにより維持されるデータ構造(例えば、システムデータ330の一部として維持されるウェイクロックデータなど)にアクセスするカーネル電力マネージャが、保留中のウェイクロックと、それらを要求した結果としてそれらと関連付けされるデバイスドライバ又はオペレーティングシステムコンポーネントの識別子とを関連付けるデータ構造のエントリを抽出することを伴うものであってもよい。このようなデータ構造のこのようなエントリはまた、これらのウェイクロックの何れが保留中であるかの通知を維持してもよいし、又は、保留中であるウェイクロックのエントリのみを有してもよい。2220において、ログデバイスドライバが有効とされた時点ですでに保留中である何れかのカーネルウェイクロックの通知が、ログデバイスドライバによって生成された補完的ログデータに記録される。
【0065】
2230において、プロセッサコンポーネントは、カーネルレベルウェイクロックを要求又は解放するためカーネル電力マネージャにより受信される全てのコールがログデバイスドライバに中継されることを要求するドライバプログラミングインタフェース(DPI)を介したコールによって、ログデバイスドライバによってカーネル電力マネージャに通知させる。上述されたように、カーネル電力マネージャに対するコールは、ウェイクロックに関する何れかのコールが1つ以上のデバイスドライバに反映されるDPIによって提供されるコールバック機構を呼び出すためのコールであってもよい。2240において、ログデバイスドライバは、カーネル電力マネージャによりログデバイスドライバに反映されるカーネルウェイクロックを要求及び解放するための各コールのためのエントリを補完的ログデータにおいて生成する。再び、このコールの反映は、コールバック機構を呼び出すための早期のコールに応答したものであってもよい。
【0066】
図12は、ロジックフロー2300の一実施例を示す。ロジックフロー2300は、ここに説明される1つ以上の実施例により実行される処理の一部又は全てを表すものであってもよい。より詳細には、ロジックフロー2300は、少なくともデバッグルーチン570を実行する際にプロセッサコンポーネント350又は550によって実行され、及び/又は計算装置300又はデバッグ装置500それぞれの他のコンポーネントによって実行される処理を示すものであってもよい。
【0067】
2310において、計算装置又はデバッグ装置のプロセッサコンポーネント(例えば、ウェイクロックデバッグシステム1000の計算装置300又はデバッグ装置500のプロセッサコンポーネント350又は550)は、計算装置の処理中に生成されるシステムログデータ及び補完的ログデータから、計算装置のコンポーネントのウェイクロック及びアクティビティレベルに関連するエントリを抽出する。上述されたように、抽出されたエントリは、ウェイクロックを要求及び/又は解放するためのコールの通知、計算装置の1つ以上のコンポーネントのアクティビティのレベルの通知、計算装置の電力状態間の遷移の通知などを含むものであってもよい。2320において、抽出されたエントリは、整列されたトレースデータ(例えば、システムログデータ337及び補完的ログデータ331から抽出されるエントリから生成される整列されたトレースデータ534)を生成するよう時間的に整列される。
【0068】
2330において、システムログデータ及び補完的ログデータの一方又は他方に含まれる何れかのマッピングデータがまた抽出される。2340において、このように抽出されたマッピングデータは、ウェイクロックとプロセス、スレッド、デバイスドライバ、計算装置のオペレーティングシステムのコンポーネント又はアプリケーションルーチンとを関連付けるため、抽出されたエントリからの識別情報を関連付けるのに利用される。
【0069】
2350において、整列されたトレースデータのエントリは、ウェイクロックイベントのタイムライン、コンポーネントのアクティビティレベルの変更、計算装置の電力状態の変更などを生成するのに利用される。さらに、これらのタイムラインは、それから計算装置の処理においてそれらが共通する期間に時間的に整列される方法で、ディスプレイ上に視覚的に提示される。2360において、コントロールは、表示すべきタイムラインを選択するため、及び/又は表示すべき整列されたトレースデータのエントリによりカバーされる時間部分を選択するため、コマンドを伝搬するためのこれらのコントロールの処理の通知を受信するためモニタされてもよく、時間的に整列されたタイムラインの視覚的提示がこれに従って変更される。
【0070】
図13は、上述されたような各種実施例を実現するのに適した処理アーキテクチャ3000の実施例を示す。より詳細には、処理アーキテクチャ3000(又はその変形)は、計算装置100、300又は500の1つ以上の一部として実現されてもよい。処理アーキテクチャ3000のコンポーネントには、最後の2桁がこれらの計算装置の一部として以前に図示及び説明されたコンポーネントの少なくとも一部の参照番号の最後の2桁に対応する参照番号が付与される。これは、それぞれのコンポーネントを関連付けるための一助として行われる。
【0071】
処理アーキテクチャ3000は、限定することなく、1つ以上のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺装置、インタフェース、オシレータ、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力(I/O)コンポーネント、電源などを含む、デジタル処理において一般的に利用される各種要素を含むものであってもよい。本出願で用いられるように、“システム”及び“コンポーネント”という用語は、デジタル処理が実行される計算装置のエンティティを参照することが意図され、当該エンティティはハードウェア、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア又は実行中のソフトウェアであり、これらの具体例は、当該図示された一例となる処理アーキテクチャにより提供される。例えば、コンポーネントは、限定することなく、プロセッサコンポーネント上で実行されるプロセス、プロセッサコンポーネント自体、光及び磁気記憶媒体を利用可能な記憶装置(例えば、ハードディスクドライブ、アレイにおける複数のストレージドライブ)、ソフトウェアオブジェクト、実行可能命令シーケンス、実行スレッド、プログラム及び/又は計算装置全体(例えば、コンピュータ全体)とすることができる。例えば、サーバ上で実行されるアプリケーションとサーバとは双方ともコンポーネントすることができる。1つ以上のコンポーネントが、プロセス及び/又は実行スレッド内に常駐可能であり、コンポーネントは、1つの計算装置上に配置可能であり、及び/又は2つ以上の計算装置の間に分散できる。さらに、コンポーネントは、処理を連携させるため各種タイプの通信媒体によって相互に通信結合されてもよい。当該連携は、情報の一方向又は双方向のやりとりを伴うものであってもよい。例えば、コンポーネントは、通信媒体を介し通信される信号の形態により情報を通信してもよい。当該情報は、1つ以上の信号ラインに割り当てられる信号として実現可能である。メッセージ(コマンド、状態、アドレス又はデータメッセージを含む)は、このような信号の1つであってもよいし、又は複数の信号であってもよく、各種コネクション及び/又はインタフェースの何れかを介し実質的にパラレル又はシリアルに送信されてもよい。
【0072】
図示されるように、処理アーキテクチャ3000を実現する際、計算装置は少なくとも、プロセッサコンポーネント950、ストレージ960、1つ以上の他のデバイスとのインタフェース990及びカップリング959を有してもよい。説明されるように、その位置された利用及び/又は利用条件を含む、処理アーキテクチャ3000を実現する計算装置の各種態様に依存して、このような計算装置は更に、限定することなく、ディスプレイインタフェース985又は1つ以上の処理サブシステム900などの更なるコンポーネントを有してもよい。処理アーキテクチャ3000を実現する計算装置において、回路により実現される図示された各種コンポーネントの1つは、単一の又は相対的に少数の半導体デバイス(例えば、“システム・オン・チップ”又はSOC)内の回路の離散的コンポーネント及び/又はブロックとして実現されてもよい。
【0073】
カップリング959は、1つ以上のバス、ポイント・ツー・ポイントインターコネクト、送受信機、バッファ、クロスポイントスイッチ、及び/又はプロセッサコンポーネント950とストレージ960とを少なくとも通信結合する他のコンダクタ及び/又はロジックを有してもよい。カップリング959は更に、プロセッサ950とインタフェース990、オーディオサブシステム970及びディスプレイインタフェース985の1つ以上とを結合してもよい(上記及び/又は他のコンポーネントの何れがまた存在するかに依存して)。プロセッサコンポーネント950がカップリング959によって結合されることによって、プロセッサコンポーネント950は、詳細に説明されたタスクの様々なものを実行可能であり、上述された計算装置の何れかが処理アーキテクチャ3000を実現する。カップリング959は、信号を光学的及び/又は電気的に伝搬する各種技術又は技術の組み合わせにより実現されてもよい。さらに、カップリング959の少なくとも一部は、限定することなく、Accelerated Graphics Port(AGP)、CardBus、Extended Industry Standard Architecture(E−ISA)、Micro Channel Architecture(MCA)、NuBus、Peripheral Component Interconnect(Extended)(PCI−X)、PCI Express(PCI−E)、Personal Computer Memory Card International Association(PCMCIA)バス、HyperTransportTM、QuickPathなどを含む、広範な各種工業規格の何れかに準拠したタイミング及び/又はプロトコルを利用してもよい。
【0074】
上述されたように、プロセッサコンポーネント950(プロセッサコンポーネント350又は550の1つ以上に対応する)は、広範な各種技術の何れかを利用し、複数の方法の何れにおいて物理的に組み合わされた1つ以上のコアにより実現される広範な各種の市販のプロセッサの何れかを含むものであってもよい。
【0075】
上述されたように、ストレージ960(ストレージ360又は560の1つ以上に対応する)は、広範な各種技術の何れか又は技術の組み合わせに基づき、1つ以上の記憶装置から構成されてもよい。より詳細には、図示されるように、ストレージ960は、揮発性ストレージ961(例えば、RAM技術の1つ以上の形態に基づくソリッドステートストレージ)、不揮発性ストレージ962(例えば、コンテンツを保持するための電力の一定の供給を必要としないソリッドステート、強磁性又は他のストレージ)、及び着脱可能な媒体ストレージ963(例えば、計算装置の間で情報が伝達される着脱可能なディスク又はソリッドステートメモリカードストレージ)の1つ以上を有してもよい。おそらく複数の異なるタイプのストレージを含むようなストレージ960の説明は、あるタイプがプロセッサコンポーネント950によるデータのより迅速な操作を可能にする相対的に迅速なリード及びライト能力を提供し(しかしながら、おそらく電力を一定に必要とする“揮発性”技術を利用して)、他のタイプが相対的に高密度の不揮発性ストレージを提供する(しなしながら、おそらく相対的に低速なリード及びライト能力を提供する)計算装置における複数タイプの記憶装置の通常の利用を認識する。
【0076】
異なる技術を利用する異なる記憶装置のしばしば異なる特性が与えられると、このような異なる記憶装置が異なるインタフェースを介し異なる記憶装置に結合されることはまた一般的である。例えば、揮発性ストレージ961が存在し、RAM技術に基づく場合、揮発性ストレージ961は、ロー及びカラムアドレッシングをおそらく利用する揮発性ストレージ961との適切なインタフェースを提供するストレージコントローラ965aを介しカップリング959に通信結合されてもよく、ここで、ストレージコントローラ965aは、揮発性ストレージ961内に記憶される情報を保持するのを支援するためローリフレッシュ及び/又は他のメンテナンスを実行してもよい。他の例として、不揮発性ストレージ962が存在し、1つ以上の強磁性及び/又はソリッドステートディスクドライブを有する場合、不揮発性ストレージ962は、情報のブロック及び/又はシリンダ及びセクタのアドレッシングをおそらく利用する不揮発性ストレージ962との適切なインタフェースを提供するストレージコントローラを介しカップリング959に通信結合されてもよい。更なる他の例として、着脱可能なメディアストレージ963が存在し、機械可読記憶媒体969の1つ以上を利用する1つ以上の光及び/又はソリッドステートディスクドライブを有する場合、着脱可能なメディアストレージ963は、情報のブロックのアドレッシングをおそらく利用する着脱可能なメディアストレージ963との適切なインタフェースを提供するストレージコントローラ965cを介しカップリング959に通信結合されてもよく、ここで、ストレージコントローラ965cは、機械可読記憶媒体969の寿命を拡大するのに特定の方法でリード、イレース及びライト処理を調整してもよい。
【0077】
揮発性ストレージ961又は不揮発性ストレージ962の一方又は他方は、各自が基礎とする技術に応じて、各種実施例を実現するためプロセッサコンポーネント950により実行可能な命令シーケンスを有するルーチンが記憶可能な機械可読記憶媒体の形態による製造物を有してもよい。例えば、不揮発性ストレージ962が強磁性ベースディスクドライブ(例えば、いわゆる“ハードドライブ”)を有する場合、このような各ディスクドライブは、典型的には、磁気に反応する粒子のコーティングが蒸着され、フロッピー(登録商標)ディスケットなどの記憶媒体に類似した方法で命令シーケンスなどの情報を記憶するための各種パターンで磁気的に配向された1つ以上の回転プラッタを利用する。他の例として、不揮発性ストレージ962は、コンパクトフラッシュカードに類似した方法で命令シーケンスなどの情報を記憶するためソリッドステート記憶装置のバンクから構成されてもよい。再び、異なる時点で計算装置における異なるタイプの記憶装置を利用して実行可能なルーチン及び/又はデータを記憶することが一般的である。従って、各種実施例を実現するためプロセッサコンポーネント950により実行されるべき命令シーケンスを含むルーチンはまず、機械可読記憶媒体969に記憶されてもよく、着脱可能なメディアストレージ963は、ルーチンが実行されるとき、プロセッサコンポーネント950によるより迅速なアクセスを可能にするため、機械可読記憶媒体969及び/又は揮発性ストレージ961の継続的な存在を必要としないロングタームストレージのため、当該ルーチンを不揮発性ストレージ962にコピーする際に以降において利用されてもよい。
【0078】
上述されるように、インタフェース990(インタフェース390又は590の1つ以上に対応する)は、計算装置を1つ以上の他のデバイスに通信結合するため利用可能な各種通信技術の何れかに対応する各種シグナリング技術の何れかを利用してもよい。再び、各種形態の有線又は無線シグナリングの一方又は双方が、おそらくネットワーク(例えば、ネットワーク999)又はネットワーク相互接続されたセットを介し、プロセッサコンポーネント950が入出力装置(例えば、図示された一例となるキーボード920又はプリンタ925)及び/又は他の計算装置とやりとりすることを可能にするため利用されてもよい。何れか1つの計算装置によってしばしばサポートされる必要がある複数のタイプのシグナリング及び/又はプロトコルのしばしば大きく異なる性質を認識する際、インタフェース990は、複数の異なるインタフェースコントローラ995a、995b及び995cを含むように示される。インタフェースコントローラ995aは、各種タイプの有線デジタルシリアルインタフェース又はラジオ波無線インタフェースの何れかを利用して、図示されたキーボード920などのユーザ入力装置から逐次的に送信されるメッセージを受信してもよい。インタフェースコントローラ995bは、各種ケーブルベース又は無線シグナリング、タイミング及び/又はプロトコルの何れかを利用して、図示されたネットワーク999を介し他の計算装置にアクセスしてもよい(おそらく、1つ以上のリンク、小規模ネットワーク又はおそらくインターネットから構成されるネットワーク)。インタフェース995cは、シリアル又はパラレル信号送信の何れかの利用を可能にする各種電導性ケーブルの何れかを利用して、図示されたプリンタ925にデータを伝送してもよい。インタフェース990の1つ以上のインタフェースコントローラを介し通信結合されてもよいデバイスの他の具体例は、限定することなく、マイクロフォン、リモートコントロール、スタイラスペン、カードリーダ、フィンガープリントリーダ、バーチャルリアリティインタラクショングローブ、グラフィカル入力タブレット、ジョイスティック、他のキーボード、網膜スキャナ、タッチ画面のタッチ入力コンポーネント、トラックボール、各種センサ、人間の動きをモニタしてジェスチャ又は顔の表情を介し人間によりシグナリングされるコマンド及び/又はデータを受け入れるためのカメラ又はカメラアレイ、レーザプリンタ、メカニカルロボット、ミリングマシーンなどを含む。
【0079】
計算装置がディスプレイ(例えば、ディスプレイ580に対応する図示された一例となるディスプレイ980)に通信結合(又はおそらく実際には搭載する)される場合、処理アーキテクチャ3000を実現するこのような計算装置はまた、ディスプレイインタフェース985を有してもよい。より一般化されたタイプのインタフェースがディスプレイを通信結合する際に利用されてもよいが、ディスプレイ上に各種形態のコンテンツを視覚的に表示する際にしばしば必要とされるやや特殊な更なる処理は、使用されるケーブルベースインタフェースのやや特殊な性質と共に、ディスプレイインタフェースの提供を望ましいものにしばしばする。ディスプレイ980の通信結合においてディスプレイインタフェース985により利用可能な有線及び/又は無線シグナリング技術は、限定することなく、各種アナログビデオインタフェース、デジタル・ビデオ・インタフェース(DVI)、DisplayPortなどの何れかを含む、各種工業規格の何れかに準拠したシグナリング及び/又はプロトコルを利用してもよい。
【0080】
より一般には、ここに説明及び図示された計算装置の各種要素は、各種ハードウェア要素、ソフトウェア要素又は双方の組み合わせを含むものであってもよい。ハードウェア要素の具体例は、デバイス、ロジックデバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサコンポーネント、回路素子(例えば、トランジスタ、レジスタ、キャパシタ、インダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含むものであってもよい。ソフトウェア要素の具体例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシーンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシージャ、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、計算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル又はこれらの何れかの組み合わせを含むものであってもよい。しかしながら、実施例がハードウェア要素及び/又はソフトウェア要素を利用して実現されるかの判定は、所与の実現形態について所望されるように、所望される計算レート、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード及び他の設計又は性能制約など、何れかの個数のファクタに従って可変的であってもよい。
【0081】
一部の実施例は、その派生語と共に、“一実施例”又は“実施例”という表現を用いて説明されてもよい。これらの用語は、実施例に関連して説明された特定の特徴、構成又は特性が少なくとも1つの実施例に含まれることを意味する。明細書の各所における“一実施例では”というフレーズの出現は、必ずしも全てが同一の実施例を参照しているとは限らない。さらに、一部の実施例は、その派生語と共に“結合”及び“接続”という表現を用いて説明されてもよい。これらの用語は互いに同義語として必ずしも意図されていない。例えば、一部の実施例は、2つ以上の要素が互いに直接的な物理的又は電気的に接触していることを示すため、“接続”及び/又は“結合”の用語を用いて説明されてもよい。しかしながら、“結合”の用語はまた、2つ以上の要素が互いに直接的に接触せず、互いに連携又は相互作用することを意味しうる。さらに、異なる実施例からの態様又は要素は組み合わされてもよい。
【0082】
開示の要約は、読者が技術的開示の性質を迅速に確認することを可能にするため提供されることが強調される。それは、請求項の範囲又は意味を解釈又は限定するのに利用されないという理解によって提出されている。さらに、上記の詳細な説明では、各種特徴は開示を簡略化するために単一の実施例に一緒にグループ化されることが理解できる。この開示の方法は、請求された実施例が各請求項において明示的に記載されるより多くの特徴を必要とするという意図を反映するものとして解釈されるべきでない。むしろ、以下の請求項が反映するように、発明の主題は、開示された単一の実施例の全ての特徴より少なくてもよい。従って、以下の請求項は、各請求項が別の実施例として自ら成立することによって、詳細な説明に含まれる。添付した請求項では、“含む”及び“ここで”という頭語は、それぞれ“有する”及び“ここで”という各用語の平易な英語の等価として用いられる。さらに、“第1”、“第2”、“第3”などは、単なるラベルとして用いられ、オブジェクトに対する多数の要求を課すことを意図していない。
【0083】
上述されたものは、開示されたアーキテクチャの具体例を含む。もちろん、コンポーネント及び/又は方法の全ての想到可能な組み合わせを説明することはできないが、当業者は、更なる多数の組み合わせ及び並び替えが可能であり得ることを認識しうる。従って、新規なアーキテクチャは添付した請求項の精神及び範囲内に属するこのような全ての代替、修正及び変形を含むことが意図される。ここでは詳細な開示は、更なる実施例に属する具体例を提供するとわかる。以下に提供される具体例は、限定することを意図していない。
【0084】
いくつかの具体例では、ウェイクロックイベントをトレースする装置は、プロセッサコンポーネントと、プロセッサコンポーネントによる実行のため、アプリケーションレベルウェイクロックに関連するコールを傍受するキャプチャコンポーネントであって、傍受されるコールはアプリケーションルーチンからオペレーティングシステムのアプリケーション電力マネージャにより受信される、キャプチャコンポーネントと、プロセッサコンポーネントによる実行のため、アプリケーション電力マネージャと連携して、アプリケーション電力マネージャに結合されるオペレーティングシステムのシステムログ生成手段に傍受されたコールの通知を提供する中継コンポーネントであって、システムログ生成手段は、プロセッサコンポーネントによるオペレーティングシステムの実行に関連するイベントの通知と、傍受されたコールの通知とを有するシステムログデータを生成する、中継コンポーネントとを有してもよい。
【0085】
さらに、又は代わりに、当該装置は、プロセッサコンポーネントによる実行のため、アプリケーション電力マネージャと連携して、保留中のアプリケーションレベルウェイクロックの通知を提供し、保留中のアプリケーションレベルウェイクロックをアプリケーションルーチンと関連付けるウェイクロックデータを収集する収集コンポーネントを有してもよい。
【0086】
さらに、又は代わりに、中継コンポーネントは、アプリケーション電力マネージャと連携して、保留中のアプリケーションレベルウェイクロックの通知をシステムログ生成手段に提供し、システムログ生成手段は、システムログデータに保留中のアプリケーションレベルウェイクロックの通知を含めてもよい。
【0087】
さらに、又は代わりに、当該装置は、プロセッサコンポーネントによる実行のため、アプリケーション電力マネージャと連携して、プロセッサコンポーネントにより実行されるプロセス又はアプリケーションルーチンの一部が実行されるスレッドとアプリケーションルーチンとを関連付けるマッピングデータを収集する収集コンポーネントを有してもよい。
【0088】
さらに、又は代わりに、中継コンポーネントは、アプリケーション電力マネージャと連携して、マッピングデータをシステムログ生成手段に提供し、システムログ生成手段は、システムログデータにマッピングデータを含めてもよい。
【0089】
さらに、又は代わりに、傍受されたコールは、ウェイクロックを要求するためのコール又は保留中のウェイクロックを解放するためのコールを有してもよい。
【0090】
さらに、又は代わりに、当該装置は、アプリケーション電力マネージャを有し、アプリケーション電力マネージャは、キャプチャコンポーネント及び中継コンポーネントを有するよう拡張されてもよい。
【0091】
さらに、又は代わりに、当該装置は、プロセッサコンポーネントによる実行のため、オペレーティングシステムのカーネル電力マネージャに通知して、カーネルレベルウェイクロックに関連するコールをログデバイスドライバに中継するログデバイスドライバのコールコンポーネントを有し、中継されるコールは、オペレーティングシステムのコンポーネント又はデバイスドライバからカーネル電力マネージャによって受信されてもよい。
【0092】
さらに、又は代わりに、オペレーティングシステムのコンポーネントは、アプリケーション電力マネージャを有し、アプリケーション電力マネージャは、カーネル電力マネージャに結合され、カーネルレベルウェイクロックに関連するコールによってカーネル電力マネージャに通知してもよい。
【0093】
さらに、又は代わりに、当該装置は、プロセッサコンポーネントによる実行のため、ログデバイスドライバにおいて中継されたコールを受信する受信コンポーネントと、プロセッサコンポーネントによる実行のため、中継されたコールの通知を有する補完的ログデータを生成するログコンポーネントとを有してもよい。
【0094】
さらに、又は代わりに、当該装置は、システムログデータからアプリケーションレベルウェイクロックに関連するエントリを抽出し、補完的ログデータからカーネルレベルウェイクロックに関連するエントリを抽出し、システムログデータからプロセッサコンポーネントを有する計算装置のコンポーネントのアクティビティレベルを示すエントリを抽出し、抽出されたエントリを時間的に整列する関連付けコンポーネントと、アプリケーションレベルウェイクロック及びカーネルレベルウェイクロックに関連するイベントと、ディスプレイ上の計算装置のコンポーネントのアクティビティレベルとの時間的に整列されたタイムライングラフを生成して視覚的に提示する提示コンポーネントであって、イベント及びアクティビティレベルは、抽出されたエントリにおいて示される、提示コンポーネントとを有してもよい。
【0095】
さらに、又は代わりに、当該装置は、システムログデータ及び補完的ログデータをデバッグ装置に送信するためのインタフェースを有してもよい。
【0096】
いくつかの具体例では、ウェイクロックイベントをトレースする装置は、プロセッサコンポーネントと、オペレーティングシステムのアプリケーション電力マネージャに対するアプリケーションレベルウェイクロックに関連するコールの通知をシステムログデータから抽出し、オペレーティングシステムのカーネル電力マネージャに対するカーネルレベルウェイクロックに関連するコールの通知を補完的ログデータから抽出し、オペレーティングシステムが実行される計算装置のコンポーネントのアクティビティレベルの通知をシステムログデータから抽出する関連付けコンポーネントと、アプリケーションレベルウェイクロックに関連するコール、カーネルレベルウェイクロックに関連するコール及びディスプレイ上の計算装置のコンポーネントのアクティビティレベルの変更の時間的に整列されたタイムライングラフを生成して視覚的に提示する提示コンポーネントとを有してもよい。
【0097】
さらに、又は代わりに、関連付けコンポーネントは、システムログデータ及び補完的ログデータの1つからマッピング情報を抽出し、マッピング情報は、計算装置上で実行されるプロセス及び計算装置の実行のスレッドの1つと計算装置上で実行されるアプリケーションルーチンとの関連付けの通知を有してもよい。
【0098】
さらに、又は代わりに、関連付けコンポーネントは、関連付けの通知を利用して、アプリケーションレベルウェイクロックに関連するコールの少なくとも2つの通知を関連付けてもよい。
【0099】
さらに、又は代わりに、当該装置はコントロールを有し、提示コンポーネントは、コントロールをモニタして、タイムライングラフが時間的に整列された期間を選択するためのコマンドを伝送するコントロールの処理の通知を受信してもよい。
【0100】
いくつかの具体例では、タスク部分を実行するため、プロセッサコンポーネントコアを割り当てるためコンピュータにより実現される方法は、アプリケーションレベルウェイクロックに関連するコールを傍受するステップであって、傍受されたコールは、アプリケーションルーチンからオペレーティングシステムのアプリケーション電力マネージャによって受信される、傍受するステップと、アプリケーション電力マネージャに結合されるオペレーティングシステムのシステムログ生成手段に傍受されたコールの通知を提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、オペレーティングシステムの実行に関連するイベントの通知と、傍受されたコールの通知とを有するシステムログデータを生成する、連携するステップとを有してもよい。
【0101】
さらに、又は代わりに、当該方法は、保留中のアプリケーションレベルウェイクロックの通知を提供し、保留中のアプリケーションレベルウェイクロックをアプリケーションルーチンに関連付けるウェイクロックデータを収集するため、アプリケーション電力マネージャと連携するステップを有してもよい。
【0102】
さらに、又は代わりに、当該方法は、保留中のアプリケーションレベルウェイクロックの通知をシステムログ生成手段に提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、保留中のアプリケーションレベルウェイクロックの通知をシステムログデータに含む、連携するステップを有してもよい。
【0103】
さらに、又は代わりに、当該方法は、プロセッサコンポーネントにより実行されるプロセス又はアプリケーションルーチンの一部が実行されるスレッドとアプリケーションルーチンとを関連付けるマッピングデータを収集するため、アプリケーション電力マネージャと連携するステップを有してもよい。
【0104】
さらに、又は代わりに、当該方法は、マッピングデータをシステムログ生成手段に提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、マッピングデータをシステムログデータに含める、連携するステップを有してもよい。
【0105】
さらに、又は代わりに、傍受されたコールは、ウェイクロックを要求するためのコール又は保留中のウェイクロックを解放するためのコールを有してもよい。
【0106】
さらに、又は代わりに、カーネルレベルウェイクロックに関連するコールをログデバイスドライバに中継するため、オペレーティングシステムのカーネル電力マネージャに通知するステップを有し、中継されるコールは、オペレーティングシステムのコンポーネント又はデバイスドライバからカーネル電力マネージャによって受信されてもよい。
【0107】
さらに、又は代わりに、オペレーティングシステムのコンポーネントは、アプリケーション電力マネージャを有し、アプリケーション電力マネージャは、カーネルレベルウェイクロックに関連するコールによってカーネル電力マネージャに通知するため、カーネル電力マネージャに結合されてもよい。
【0108】
さらに、又は代わりに、当該方法は、ログデバイスドライバにおいて中継されたコールを受信するステップと、中継されたコールの通知を有する補完的ログデータを生成するステップとを有してもよい。
【0109】
さらに、又は代わりに、当該方法は、アプリケーションレベルウェイクロックに関連するエントリをシステムログデータから抽出するステップと、カーネルレベルウェイクロックに関連するエントリを補完的ログデータから抽出するステップと、プロセッサコンポーネントを有する計算装置のコンポーネントのアクティビティレベルを示すエントリをシステムログデータから抽出するステップと、抽出されたエントリを時間的に整列するステップと、アプリケーションレベルウェイクロック及びカーネルレベルウェイクロックに関連するイベントと、計算装置のコンポーネントのアクティビティレベルとの時間的に整列されたタイムライングラフをディスプレイ上に視覚的に提示するステップであって、イベント及びアクティビティレベルは抽出されたエントリに示される、提示するステップとを有してもよい。
【0110】
さらに、又は代わりに、当該方法は、システムログデータ及び補完的ログデータをネットワークを介しデバッグ装置に送信するステップを有してもよい。
【0111】
いくつかの具体例では、少なくとも1つの機械可読記憶媒体は、プロセッサコンポーネントにより実行されると、アプリケーションレベルウェイクロックに関連するコールを傍受するステップであって、傍受されたコールは、アプリケーションルーチンからオペレーティングシステムのアプリケーション電力マネージャによって受信される、傍受するステップと、アプリケーション電力マネージャに結合されるオペレーティングシステムのシステムログ生成手段に傍受されたコールの通知を提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、オペレーティングシステムの実行に関連するイベントの通知と、傍受されたコールの通知とを有するシステムログデータを生成する、連携するステップとをプロセッサコンポーネントに実行させる命令を有してもよい。
【0112】
さらに、又は代わりに、プロセッサコンポーネントは、保留中のアプリケーションレベルウェイクロックの通知を提供し、保留中のアプリケーションレベルウェイクロックをアプリケーションルーチンに関連付けるウェイクロックデータを収集するため、アプリケーション電力マネージャと連携するステップと、保留中のアプリケーションレベルウェイクロックの通知をシステムログ生成手段に提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、保留中のアプリケーションレベルウェイクロックの通知をシステムログデータに含めてもよい、連携するステップとを実行してもよい。
【0113】
さらに、又は代わりに、プロセッサコンポーネントは、プロセッサコンポーネントにより実行されるプロセス又はアプリケーションルーチンの一部が実行されるスレッドとアプリケーションルーチンとを関連付けるマッピングデータを収集するため、アプリケーション電力マネージャと連携するステップと、マッピングデータをシステムログ生成手段に提供するため、アプリケーション電力マネージャと連携するステップであって、システムログ生成手段は、マッピングデータをシステムログデータに含める、連携するステップとを実行してもよい。
【0114】
さらに、又は代わりに、傍受されたコールは、ウェイクロックを要求するためのコール又は保留中のウェイクロックを解放するためのコールを有してもよい。
【0115】
さらに、又は代わりに、プロセッサコンポーネントは、カーネルレベルウェイクロックに関連するコールをログデバイスドライバに中継するため、オペレーティングシステムのカーネル電力マネージャに通知するステップを実行し、中継されるコールは、オペレーティングシステムのコンポーネント又はデバイスドライバからカーネル電力マネージャによって受信されてもよい。
【0116】
さらに、又は代わりに、オペレーティングシステムのコンポーネントは、アプリケーション電力マネージャを有し、アプリケーション電力マネージャは、カーネルレベルウェイクロックに関連するコールによってカーネル電力マネージャに通知するため、カーネル電力マネージャに結合されてもよい。
【0117】
さらに、又は代わりに、プロセッサコンポーネントは、ログデバイスドライバにおいて中継されたコールを受信するステップと、中継されたコールの通知を有する補完的ログデータを生成するステップとを実行してもよい。
【0118】
さらに、又は代わりに、プロセッサコンポーネントは、アプリケーションレベルウェイクロックに関連するエントリをシステムログデータから抽出するステップと、カーネルレベルウェイクロックに関連するエントリを補完的ログデータから抽出するステップと、プロセッサコンポーネントを有する計算装置のコンポーネントのアクティビティレベルを示すエントリをシステムログデータから抽出するステップと、抽出されたエントリを時間的に整列するステップと、アプリケーションレベルウェイクロック及びカーネルレベルウェイクロックに関連するイベントと、計算装置のコンポーネントのアクティビティレベルとの時間的に整列されたタイムライングラフをディスプレイ上に視覚的に提示するステップであって、イベント及びアクティビティレベルは抽出されたエントリに示される、提示するステップとを実行してもよい。
【0119】
さらに、又は代わりに、プロセッサコンポーネントは、システムログデータ及び補完的ログデータをネットワークを介しデバッグ装置に送信するステップを実行してもよい。
【0120】
いくつかの具体例では、少なくとも1つの機械可読記憶媒体は、計算装置により実行されると、上記の何れかを計算装置に実行させる命令を有してもよい。
【0121】
いくつかの具体例では、タスク部分を実行するためプロセッサコンポーネントコアを割り当てる装置は、上記の何れかを実行する手段を有してもよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13