(57)【特許請求の範囲】
【請求項１】
プラットフォームコントローラが、
ブートコントローラと、
前記ブートコントローラに接続された１つ以上の不揮発性メモリモジュールと、
を備え、
前記不揮発性メモリモジュールが、
前記プラットフォームコントローラをホスティングするコンピューティングデバイスのプロセッサにより実行されたときに、前記コンピューティングデバイスを初期化する第１の複数の命令と、
前記ブートコントローラにより実行されたときに、前記ブートコントローラに前記コンピューティングデバイスによる前記第１の複数の命令の実行の少なくとも一部をモニタさせ、前記第１の複数の命令の実行の前記モニタされた部分のトレースを生成し、前記１つ以上の不揮発性メモリモジュールに保存する第２の複数の命令と、
を保存する、プラットフォームコントローラ。
【請求項２】
前記第２の複数の命令が、前記ブートコントローラにより実行されたときに、パワーオンセルフテスト（ＰＯＳＴ）の実行前の初期状態から、オペレーティングシステム（ＯＳ）が前記コンピューティングデバイスにインスタンスを生成される後続の状態までの、前記コンピューティングデバイスよる前記第１の複数の命令の実行をモニタする、請求項１に記載のプラットフォームコントローラ。
【請求項３】
前記第２の複数の命令が、前記ブートコントローラにより実行されたときに、前記第１の複数の命令の正常終了に応じて、前記１つ以上の不揮発性メモリモジュールに前記トレースを保存する、請求項２に記載のプラットフォームコントローラ。
【請求項４】
前記１つ以上の不揮発性メモリモジュールが、前記ブートコントローラにより生成された、前記第１の複数の命令の以前にモニタされた複数の実行の複数のトレースを保存する、請求項１乃至３のいずれか１項に記載されたプラットフォームコントローラ。
【請求項５】
前記第２の複数の命令が、前記ブートコントローラにより実行されたときに、さらに前記ブートコントローラに、
リクエストに応答して、以前に生成され保存された複数のトレースを選択のため前記コンピューティングデバイスのユーザに提示し、
前記以前に生成され保存されたトレースの選択された一つを、選択に応じて、リプレイし、前記コンピューティングデバイスを初期化する、請求項１乃至３のいずれか１項に記載のプラットフォームコントローラ。
【請求項６】
前記選択されたトレースのリプレイが、さらに、前記１つ以上の不揮発性メモリモジュールへの前記選択されたトレースに関連する識別子の保存を含み、それにより、前記ブートコントローラの次の初期化に応じて、前記ブートコントローラに前記識別子へのアクセスを提供する、請求項５に記載のプラットフォームコントローラ。
【請求項７】
前記選択されたトレースのリプレイが、
前記ブートコントローラの前記次の初期化に応じて、前記１つ以上の不揮発性メモリモジュールから前記識別子の読み出しと、
前記識別子を介した前記選択されたトレースの特定と、
前記コンピューティングデバイスの初期化への前記選択されたトレースの利用と、
をさらに含む、請求項６に記載のプラットフォームコントローラ。
【請求項８】
前記第２の複数の命令が、前記ブートコントローラにより実行されたときに、さらに前記ブートコントローラに前記トレースに基づいて、前記第１の複数の命令の前記モニタされた実行の正常終了に応じて、チェックサムを生成させる、請求項１乃至３のいずれか１項に記載のプラットフォームコントローラ。
【請求項９】
前記第２の複数の命令が、前記ブートコントローラにより実行されたときに、さらに前記ブートコントローラに前記コンピューティングデバイスの初期化をベリファイするために予測されるチェックサムと前記チェックサムを比較させる、請求項８に記載のプラットフォームコントローラ。
【請求項１０】
前記第１の複数の命令が、前記コンピューティングデバイスに存在する複数のハードウェアコンポーネントを初期化する複数のファームウェアを含む、請求項１乃至３のいずれか１項に記載のプラットフォームコントローラ。
【請求項１１】
前記第２の複数の命令が、前記ブートコントローラにより実行されたときに、さらに前記ブートコントローラに、
前記複数のハードウェアコンポーネントの各ハードウェアコンポーネントに対応するトレースセグメントの生成を通して前記トレースを生成させ、
前記対応するハードウェアコンポーネントに対する各トレースセグメントが、前記トレースセグメントへのアクセス及びリプレイができるようにされる、請求項１０に記載のプラットフォームコントローラ。
【請求項１２】
コンピューティングデバイスのブートコントローラにより、前記コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）による前記コンピューティングデバイスの初期化をモニタすることであって、前記ブートコントローラ及び前記ＢＩＯＳは、お互いに独立しており、前記コンピューティングデバイスの前記初期化は、前記コンピューティングデバイスのプロセッサによって実行され、前記コンピューティングデバイスの前記プロセッサは、前記ブートコントローラとは異なる、初期化をモニタすることと、
前記ブートコントローラにより前記コンピューティングデバイスの前記モニタされた初期化のトレースを生成することと、
前記ブートコントローラにより、前記コンピューティングデバイスのメモリに前記初期化の前記生成されたトレースを保存することと、
を含み、
前記コンピューティングデバイスの前記初期化をモニタすることが、さらに、パワーオンセルフテスト（ＰＯＳＴ）の実行前の初期状態からオペレーティングシステム（ＯＳ）が前記コンピューティングデバイスにインスタンスを生成される後続の状態まで、前記コンピューティングデバイスの前記初期化をモニタすることを含む、コンピュータで実行させる方法。
【請求項１３】
前記初期化の正常終了に応じて、前記コンピューティングデバイスの不揮発性メモリに、前記ブートコントローラにより前記トレースを保存することをさらに含む、請求項１２に記載の方法。
【請求項１４】
前記トレースを保存することが、さらに、複数の他のトレースのレポジトリに前記トレースを保存することを含み、前記他のトレースは前記コンピューティングデバイスの以前にモニタされた初期化から生成されたものである、請求項１３に記載の方法。
【請求項１５】
前記方法が、さらに、
リクエストに応答して、選択のために前記コンピューティングデバイスのユーザに以前に生成され保存された複数のトレースを提示することと、
前記以前に生成され保存された複数のトレースの１つの選択を受信することと、
前記以前に生成され保存された複数のトレースの前記選択された１つをリプレイすることにより前記コンピューティングデバイスを初期化することと、
を含む請求項１２乃至１４のいずれか１項に記載された方法。
【請求項１６】
前記選択されたトレースをリプレイすることが、さらに、前記コンピューティングデバイスの不揮発性メモリに前記選択されたトレースに関連する識別子を保存することを含む、請求項１５に記載の方法。
【請求項１７】
前記選択されたトレースをリプレイすることが、さらに、
前記ブートコントローラの次の初期化に応じて、前記不揮発性メモリから前記識別子を読み取ることと、
前記ブートコントローラにより、前記識別子に基づいて前記選択されたトレースを取得することと、
前記取得されたトレースを使用して前記コンピューティングデバイスを初期化することと、
を含む、請求項１６に記載の方法。
【請求項１８】
前記ブートコントローラにより、第１の複数の命令のモニタされた実行の正常終了に応じて、前記トレースに基づいて、チェックサムを生成することをさらに含む請求項１２乃至１４のいずれか１項に記載された方法。
【請求項１９】
前記ブートコントローラにより、予測されるチェックサムに対して前記生成されたチェックサムを検証し、
前記ブートコントローラにより、前記コンピューティングデバイスのユーザに前記生成されたチェックサムの検証が失敗したことを通知することをさらに含む請求項１８記載の方法。
【請求項２０】
前記コンピューティングデバイスの初期化が、前記コンピューティングデバイスの複数のハードウェアコンポーネントを初期化する複数のファームウェアの実行を含む、請求項１２乃至１４のいずれか１項記載の方法。
【請求項２１】
前記トレースを生成することが、さらに
前記複数のハードウェアコンポーネントの各ハードウェアコンポーネントに対応するトレースセグメントを生成することであって、前記トレースは、前記トレースセグメントの組合せを含む、トレースセグメントを生成することと、
前記トレースセグメントに前記対応するハードウェアコンポーネントへのアクセスを提供し、前記対応するハードウェアコンポーネントによる前記トレースセグメントのリプレイを可能にすることと、を含む、請求項２０に記載の方法。
【請求項２２】
コンピューティングデバイスのブートコントローラにより実行されたときに、前記ブートコントローラに請求項１２乃至１４のいずれか一項に記載の方法を実行させる命令を含むコンピュータプログラム。
【請求項２３】
コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）による前記コンピューティングデバイスの初期化をモニタする手段であって、前記モニタする手段と前記ＢＩＯＳはお互いに独立しており、前記コンピューティングデバイスの前記初期化は、前記コンピューティングデバイスのプロセッサによって実行され、前記コンピューティングデバイスの前記プロセッサは、前記初期化をモニタする手段とは異なる、初期化をモニタする手段と、
前記コンピューティングデバイスの前記モニタされた初期化のトレースを生成する手段と、
前記初期化の前記生成されたトレースを前記コンピューティングデバイスのメモリに保存する手段と、
を備え、
前記コンピューティングデバイスの前記初期化をモニタする前記手段がさらに、パワーオンセルフテスト（ＰＯＳＴ）の実行前の初期状態からオペレーティングシステム（ＯＳ）が前記コンピューティングデバイス上にインスタンスを生成される後続の状態までモニタする手段を含む、コンピューティングデバイス。
【請求項２４】
コンピューティングデバイスのブートコントローラにより実行されたときに、前記ブートコントローラに請求項１２乃至１４のうちの一つに記載の方法を実行させる命令を含む１つ以上のコンピュータ読取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、「INITIALIZATION  TRACE  OF  A  COMPUTING  DEVICE」というタイトルで2014年３月２６日に出願された、米国出願14/226,612の優先権を主張する。
【０００２】
本開示の実施形態は、コンピューティングデバイスの初期化（initialization）の分野に関連し、特にコンピューティングデバイスの初期化のモニタ（monitoring）及びトレース（tracing）に関連している。
【背景技術】
【０００３】
本明細書での提供される背景説明は、本開示のコンテキストを一般的に示す目的である。本明細書中で別段の指示が無い限り、本セクションで説明した題材は、本出願の請求項に対する先行技術ではなく、且つ本セクションに含まれるものにより先行技術を認めるものでもない。
【０００４】
コンピューティングデバイスの電源がオンにされたとき、広範囲な初期化（initialization）プロセスが、コンピューティングデバイスが動作可能状態へ達する前に起こる。初期化プロセスは、メモリ、１つ以上のプロセッサ、メモリコントローラ等のようないくつかの特定のコントローラを含むハードウェアの初期化を含むことができる。各これらのハードウェアは、例えばリードオンリーメモリ（ＲＯＭ）又はフラッシュメモリのようなコンピューティングデバイスのメモリに保存された、ファームウェアのような一連の命令の実行を通して初期化されうる。初期化プロセスは、順番に実行される初期化、同時に実行される初期化又はそれらのいかなる組合せを含みうる。例えば、タブレットやスマホのような比較的小さいコンピューティングデバイスは、適切にプラットフォームをブートするために同時にブートタスクを実行できる。この順番の又は同時のイベントは、適切に実行されたとき、コンピューティングデバイスを動作可能な状態へ到達させることができる。しかしながら、このような初期化プロセスのいかなる態様であっても不適切に実行された場合、コンピューティングデバイスは、動作可能状態に到達することはできず、又は危険にさらされる可能性がある。不適切な初期化は、コンピューティングデバイスが動作可能状態になることを阻む場合、ユーザは、コンピューティングデバイスが不適切に初期化されたことを知る方法が無い可能性がある。さらに、現在の技術では、たとえユーザが初期化プロセスが不適切に実行されたことを知ったとしても、実際にプロセスのどの部分が不適切に実行されたのかを見つけ出すことは時間が掛かり且つ困難でありうる。
【図面の簡単な説明】
【０００５】
【図１】図１は、本開示の様々な実施形態によるブートコントローラを有するコンピューティングデバイスの実例となる構成を説明する図である。
【図２】図２は、本開示の様々な実施形態によるブートコントローラによりモニタされる実例となるブートプロセスを説明する図である。
【図３】図３は、本開示の様々な実施形態による不揮発性メモリの実例となるメモリマップを説明する図である。
【図４】図４は、本開示の様々な実施形態による初期化トレースを生成する実例となるプロセスの流れを説明する図である。
【図５】図５は、本開示の様々な実施形態によるユーザドリブンチェックポイント（user  driven  checkpoint）を確立する実例となるプロセスの流れを説明する図である。
【図６】図６は、本開示の様々な実施形態によるコンピューティングデバイスを初期化するトレースをリプレイする実例となるプロセスの流れを説明する図である。
【発明を実施するための形態】
【０００６】
コンピューティングデバイスの初期化をトレースする方法、記憶媒体、及びプラットフォームコントローラが本明細書で説明される。実施形態において、プラットフォームコントローラは、ブートコントローラを含みうる。ブートコントローラは、いくつかの不揮発性メモリモジュールに接続され、この不揮発性メモリモジュールは、コンピューティングデバイス上で初期化プロセスを実行するその中に保存された初期化命令を有することができる。単一初期化プロセスは、いくつかのハードウェア、複数のマイクロコントローラ、複数のソフトウェアコンポーネント等の初期化を含み、それによりコンピューティングデバイスを動作可能な状態に到達させうる。いくつかの不揮発性メモリモジュールは、またブートコントローラにより実行されたときに、コンピューティングデバイスによる初期化命令の実行の少なくとも一部をブートコントローラにモニタさせ、第１の命令の実行のモニタされた部分のトレースを生成することができる。実施形態において、トレースは、ブートコントローラにより不揮発性メモリモジュールのいくつかに保存されうる。例えば、初期化命令は、いくつかの実施形態において、いくつかのコントローラ又はコンピューティングデバイスのエンジンを初期化することに利用されるファームウェアの形態を取ることができる。ブートコントローラは、これらのファームウェアの実行をモニタし、このモニタからトレースを生成できる。すなわち、ここでＭは、いくつかのマイクロコントローラ（ブートコントローラ自身を含む）によりブートコントローラによってキャプチャされた初期化の数であり、システムブートは、全Ｍ初期化の集合体である。モニタされたトレースに加えて、例えば、一般性を失うこと無く、コンピューティングデバイスをマニュファクチャリングモード（manufacturing  mode）、リカバリモード（recovery  mode）、パフォーマンスモード（performance  mode）等にブートする所定のトレースもありうる。いくつかの実施形態において、ブートコントローラは、コンピューティングデバイスの少なくとも一部を初期化するブートコントローラにアクセス可能ないかなるトレースもリプレイ（replay）できるように構成されうる。いくつかの実施形態において、トレースの一部はリプレイされうる。このことは、例えば、部分的な攻撃に関連するシグネチャ（signature）を見つけ出すのに役に立ちうる。これらのシグネチャは、その結果、このような攻撃からコンピューティングデバイスを保護することに利用できる。
【０００７】
以下の詳細な説明において、参照記号（reference）は、あらゆる個所で同様の番号が同様の部分を指定する本明細書の一部を形成する添付図面に対してされ、その中で説明により実施されうる実施形態が示される。他の実施形態も利用することができ、構造的又は論理的な変更が本開示の範囲から逸脱すること無く、行うことができることを理解されたい。したがって、以下の詳細な説明は、制限を行う趣旨で理解されるべきではなく、実施形態の範囲が添付の請求項及びその均等物によって規定される。
【０００８】
様々なオペレーション（operation）が、請求された発明の内容を理解するのに最も有用な方法で、複数の個別のアクションや順番のオペレーションとして説明されうる。しかしながら、説明の順序は、それらのオペレーションが必要な順序依存性があることを意味すると理解すべきではない。特に、それらのオペレーションは、本開示の順番で実行されないかも知れない。記載されたオペレーションは、記載された実施形態とは異なる順番で実行されうる。様々な追加のオペレーションが実行され及び／又は記載のオペレーションが追加の実施形態では除外されうる。
【０００９】
本開示の目的で、表現「Ａ及び／又はＢ」（A  and/or  B）は、（Ａ）、（Ｂ）、又は（Ａ及びＢ）を意味する。本開示の目的で、表現「Ａ、Ｂ、及び／又はＣ」（A,  B,  and/or  C）は、（Ａ）、（Ｂ）、（Ｃ）、（Ａ及びＢ）、（Ａ及びＣ）、（Ｂ及びＣ）、又は（Ａ、Ｂ及びＣ）を意味する。明細書で表現「実施形態において、」（in  an  embodiment,）又は「いくつかの実施形態において、」（in  embodiments,）を使う場合は、それぞれ同様の又は異なる１つ以上の実施形態を参照することができる。その上、「備える」（comprising）、「含む」（including）、「有する」（having）等が、本開示の実施形態に関して使われるときは、同義語である。
【００１０】
図１は、本開示のいくつかの実施形態によるブートコントローラ１１４を有するコンピューティングデバイス１００の実例となる構成を示す。ブートコントローラ１１４は、コンピューティングデバイス１００の初期化プロセスをモニタし、初期化プロセスのモニタに基づきトレースを生成するように構成することができる。実例となる初期化プロセスは、図２を参照してさらに詳細に検討される。これらに制限されないが、トレースの全部又は一部のリプレイ、又はコンピューティングデバイス１００の初期化プロセスを検証する（validate）トレースの利用を含み、トレースは色々な方法で利用されることができ、これらは、以下でさらに詳細に検討される。
【００１１】
実施形態において、コンピューティングデバイス１００は、プロセッサ１０２のような一つ以上のプロセッサと、コヒーレントドメイン（coherent  domain）における１つ以上の処理要素（例えば、ベースボード管理コントローラ（ＢＭＣ）、図１に示していないイノベーションエンジン（ＩＥ）、管理エンジン（ＭＥ）等）を含むことができる。本明細書において使用される、コヒーレントドメインは、所定のブートシーケンスに関与し、メモリ及び／又はハードウェアリソースを共用しうる全てのコントローラを参照しうる。いくつかの実施形態において、プロセッサ１０２は、グラフィックスモジュール１０４とメモリコントローラ１０６を含みうる。プロセッサ１０２は、単一のプロセッサコア又は複数のプロセッサコアから成り立ちうる。さらに、いくつかの実施形態において、プロセッサ１０２は、複数のプロセッサの一つでありうる。いくつかの実施形態では、複数の非コヒーレント及び／又はコヒーレントプロセッサは協力してプラットフォームを初期化するように働くことができる。マルチプロセッサの実施形態では、複数のプロセッサが同じタイプであり、すなわち、ホモジニアス、又は違うタイプであり、すなわち、ヘテロジニアスでありえ、いかなるタイプのシングル又はマルチコアプロセッサも含みうる。本開示は、プロセッサのタイプ及び／又は数にかかわらず、同様に適用可能である。
【００１２】
メモリコントローラ１０６は、いくつかの実施形態において、図示したようにプロセッサ１０２と同じパッケージ内に統合されうる。他の実施形態では、メモリコントローラ１０６は、ディスクリートチップであり又はコンピューティングデバイス１００の別の部分に統合されうる。メモリコントローラ１０６は、１つ以上のランダムアクセスメモリ（ＲＡＭ）１０８からの読み取り及びＲＡＭへの書き込みを制御し、ＲＡＭ１０８のリフレッシュも制御するように構成することができる。
【００１３】
いくつかの実施形態では、統合されたグラフィックスモジュール１０４が図示したようにプロセッサ１０２と同じパッケージに統合されうる。いくつかの実施形態においては、統合されたグラフィックスモジュール１０４が、ディスクリートチップであり、コンピューティングデバイス１００の他の部分と統合され、システムオンチップ（ＳｏＣ）として実装され、又はバスによって接続されたいくつかのディスクリートの部品として実装されうる。統合されたグラフィックスモジュール１０４は、コンピューティングデバイス１００のディスプレイへ出力するグラフィカルデータを扱うように構成されたプロセッサを含むことができる。いくつかの実施形態において、統合されたグラフィックスモジュール１０４は、専用のグラフィックスカードで置き換えられうる。
【００１４】
プロセッサ１０２は、サウスブリッジ１１０と接続されうる。サウスブリッジ１１０は、例えば、プラットフォームコントローラハブ（ＰＣＨ）、ファームウェアコントローラハブ（ＦＣＨ）、入出力（Ｉ／Ｏ）コントローラハブ等のような、プラットフォームコントローラ又はその一部という形態を取りうる。本明細書で使用される、プラットフォームコントローラは、サウスブリッジ１１０やサウスブリッジ１１０に接続されるコントローラ及び／又はメモリを含みうる。サウスブリッジ１１０は、例えば、ファーメモリインタフェース（ＦＭＩ）、１つ以上のペリフェラルコンポーネントインターコネクト（ＰＣＩ）、ユニバーサルシリアルバス（ＵＳＢ）、ローピンカウント（ＬＰＣ）ブリッジ、スーパーペリフェラルインタフェース（ＳＰＩ）バス、システム管理バス（ＳＭＢ）等を介して、コンピューティングデバイス１００のＩ／Ｏ機能を調整することができる。これを達成するために、サウスブリッジ１１０は、例えば管理エンジン（ＭＥ）１１２と１つ以上の入出力（Ｉ／Ｏ）コントローラ１１６のようないくつかのコントローラ及び／又はエンジンを含むことができる。いくつかの実施形態では、複数のＭＥがコンピューティングデバイス１００に統合されうる。例えば、上述のコンポーネントのサードパーティーベンダが提供するコード又はファームウェアを実行する第１のＭＥがあり、プラットフォームのコード又はファームウェアを実行する追加のＭＥがあっても良い。いくつかの実施形態では、サウスブリッジ１１０は、一緒に統合されたブートコントローラ１１４を有することができる。他の実施形態では、ブートコントローラ１１４は、ディスクリートチップ上に配置され、又はコンピューティングデバイス１００の他のコンポーネントと一緒に統合されうる。これらのエンジンやコントローラは、単に説明のためのものであり、本開示を制限することを意味するものではないことを理解されたい。いくつかのコントローラ及び／又はエンジンが、本開示から逸脱することなく含まれうる。さらに、これらのコントローラは、本開示の範囲を逸脱すること無く、他の形態を取り、コンピューティングデバイス１００の異なる位置に配置されうる。いくつかの実施形態では、サウスブリッジ１１０は、ＢＭＣ又は他の内臓コントローラ（ＥＣ）、以下ではＢＭＣ／ＥＣ１２０のような帯域外（out-of-band）管理コントローラ及び例えばキーボード、マウス、カメラ、外付けハードドライブ等のような１つ以上の周辺デバイス１２２に接続されうる。いくつかの実施形態では、ブートコントローラ１１４は、ＢＭＣ／ＥＣ１２０と統合されうる。サウスブリッジ１１０は、またファーメモリインタフェース（ＦＭＩ：far  memory  interface）１２４、又は他のメモリインタフェースを含みうる。ＦＭＩ１２４は、不揮発性メモリ（ＮＶＭ）１２８にデータコネクション１２６を介して接続されうる。いくつかの実施形態では、ＮＶＭ１２８は、例えばＤＤＲ４のようなダブルデータレート（ＤＤＲ）仕様書に従って動作するように構成されうる。
【００１５】
上述の各コンポーネントは、コンピューティングデバイス１００の追加のコンポーネントと同様に、コンポーネントが動作状態（operational  state）に到達する前に初期化を必要とすることができる。その結果、コンピューティングデバイス１００が動作状態に到達する前に、図２の初期化プロセス２００のような複雑な初期化プロセスをコンピューティングデバイス１００が受けうる。さらに、これらの多くのコンポーネントは、個別の初期化を達成するための特定のファームウェアにアクセスする必要がありうる。もし１つのコンポーネントでも正しく初期化されなかった場合は、コンピューティングデバイス１００が、動作状態に達することが阻止され、コンピューティングデバイス１００がウィルス、マルウェア、又はサイバー攻撃に対して脆弱な状態になりうる。
【００１６】
実施形態において、ブートコントローラ１１４は、図２に示したように、コンピューティングデバイス１００の初期化プロセスをモニタし、モニタした初期化プロセスのトレースを生成するように構成することができる。このようなトレースは、リセットベクタの実行前の状態からコンピュータデバイス１００への動作状態へのインスタンスを生成（instantiation）までの初期化手順の全部又は一部を含みうる。さらに、いくつかの実施形態では、例えばＢＭＣ、ＩＥ、ＭＥ、基本入出力システム（ＢＩＯＳ）、メモリコントローラ等の初期化のような各初期化手順は、そのようなコンポーネントの個別の初期化と関連するトレースセグメントを有することができる。そのような実施形態では、各トレースセグメントは、ブートコントローラ１１４により実行されるモニタリングを通じて生成されうる。さらに、これらの各コンポーネントは、例えば個別のコンポーネントのベンダーにより提供されうるトレースのような所定のトレースを有することができる。いくつかの実施形態では、コンピューティングデバイス１００に対する初期化プロセスの開始前にブートコントローラ１１４の初期化するファームウェアを含むリードオンリーメモリ（ＲＯＭ）と共に、このモニタリングはプロビジョニングブートコントローラ１１４によって遂行されうる。いくつかの実施形態において、ブートコントローラ１１４の本明細書に記載される機能を実行するのに必要な命令の全てが、ＲＯＭ１１８に保存されうる。別の実施形態では、ＲＯＭ１１８が動作状態に到達するまでのブートコントローラ１１４に関する初期化命令を単に含み、ブートコントローラ１１４は、ＮＶＭ１２８のような他のメモリから実行可能な命令を読み出すことができる。
【００１７】
実施形態において、初期化プロセスのモニタリングを実行し、関連するトレースを生成するために、ブートコントローラ１１４は、ＮＶＭ１２８のようなメモリにアクセスする必要がありうる。例えば、上述の通り、ＮＶＭ１２８は、ブートコントローラ１１４に本明細書で記載した機能の少なくとも一部を実行させるような実行可能な命令を含みうる。実施形態において、ブートコントローラ１１４は、ＦＭＩ１２４及びデータコネクション１２６経由でＮＶＭ１２８にアクセスし、ブートコントローラ１１４がモニタリングプロセスを実行できるように構成されうる。ＦＭＩ１２４及びデータコネクション１２６は、上述のブートコントローラ１１４と同様の態様で初期化されうる。いくつかの実施形態において、ＦＭＩ１２４とデータコネクション１２６は、ＲＯＭ１１８を利用して初期化され、ブートコントローラ１１４を初期化するように使用されうる。別の実施形態では、ＦＭＩ１２４及びデータコネクション１２６は、ＲＯＭ１１８とは別のＲＯＭを利用して初期化されうる。いくつかの実施形態において、ブートコントローラ１１４、ＦＭＩ１２４及びデータコネクション１２６は、コンピューティングデバイス１００のパワーオンセルフテスト（ＰＯＳＴ）の前に初期化され、それにより、コンピューティングデバイス１００の各個別のコンポーネントのＰＯＳＴの前の状態からコンピューティングデバイス又はその他のコンポーネントのモニタリングをイネーブルしうる。
【００１８】
実施形態において、ＮＶＭ１２８は、トレースストア（trace  store）１３０、トレースリプレイ識別子（trace  replay  identifier）１３２及び／又はファームウェアストア（firmware  store）１３４を含むように構成することができる。トレースストア１３０は、ブートコントローラ１１４によって以前に生成されたトレース及び／又はブートコントローラ１１４によって現在生成されているトレースを保存するように構成することができる。さらに、いくつかの実施形態では、トレースストア１３０は、コンピューティングデバイス１００の単一のコンポーネント又はコンポーネントのグループ、又はその全体として、特定の状態に初期化する能力を有する所定のトレースと共に構成されうる。例えば、一般性を失うことなく、リカバリ（recovery）、パフォーマンスモード（performance  mode）への初期化、パワーエフィシェントモード（power  efficient  mode）への初期化、マルウェアプロテクションモード（malware  protection  mode）への初期化等をシステム全体として最適化する所定のトレースが存在しうる。本明細書においてブートコントローラメールボックスとして参照されるトレースリプレイ識別子（trace  replay  identifier）１３２は、コンピューティングデバイス１００のユーザがリプレイを選択したトレースの識別子を保存するように構成されうる。実施形態において、ブートコントローラ１１４は、トレースがリプレイのために選択されたことを判定するためにトレースリプレイ識別子１３２をチェックするように構成され、もしその場合、所定のトレースにコンピューティングデバイス１００に関する通常の初期化プロセスの代わりにリプレイさせるように構成されうる。このプロセスは、以下で図６を参照して、さらに詳細に検討される。ファームウェア１３４は、コンピューティングデバイス１００の個別のコンポーネントを初期化するために必要な全てのファームウェア、又はその一部を含みうる。
【００１９】
いくつかの実施形態において、コンピューティングデバイス１００の個別のコンポーネントは、ファームウェア１３４にアクセスし、個別のコンポーネントの初期化に必要なファームウェアを読み出す。このような実施形態において、ブートコントローラ１１４は、これらのアクセスをモニタし、トレースストア１３０に保存されるトレースの生成を補助するように構成されうる。他の実施形態において、ブートコントローラ１１４は、ＮＶＭ１２８に対して仲介者（middleman）又は門番（gatekeeper）として働くように構成されうる。そのような実施形態において、ブートコントローラ１１４は、個別のコンポーネントからファームウェアストア１３４内に含まれるファームウェアに対するリクエストを受け取り、リクエストされたファームウェアに対するアクセスを提供することによりこのようなリクエストにサービスを提供しうる。いくつかの実施形態において、ファームウェアが適正なコンポーネントに対して提供されているかを保証するためのファームウェアへのアクセスを提供する前に、ブートコントローラ１１４は、ファームウェアのリクエスタが本物であることの確認を行うよう構成することができる。さらに、いくつかの実施形態において、ブートコントローラ１１４は、ファームウェアストア１３４内に保存されたファームウェアの更新（update）を実行するように構成されうる。このような実施形態において、ブートコントローラ１１４は、トレースストア１３０に保存された以前に記録されたトレースのリプレイに必要でありうる以前のバージョンのファームウェアを維持するように構成されうる。いくつかの実施形態によると、ブートコントローラ１１４は、生成されたトレースからチェックサム（checksum）を生成し、所定の検証コード（validation  code）に対して比較し、初期化プロセスを検証するように構成することができる。いくつかの実施形態によると、もし初期化プロセスの検証が失敗した場合、ブートコントローラは、コンピューティングデバイスにトレースストア１３０からの以前に保存されたトレースを利用してコンピューティングデバイスに再初期化させるように構成することができる。これが遂行され、例えば、ブートコントローラ１１４によって、トレースリプレイ識別子１３２に以前に生成されたトレースの識別子を保存し、コンピューティングデバイスをリセットしうる。さらに、ブートコントローラ１１４は、トレースされた初期化プロセスの成功した検証のみに応じて、ＮＶＭ１２８に生成されたトレースを保存する（persist）ように構成されうる。上述の通り、トレースは、コンピューティングデバイス１００のいずれかのコンポーネント又はコンポーネントのグループ、又はその全体の初期化を含みうる。その結果、検証は、コンピューティングデバイス１００のいずれかのコンポーネント又はコンポーネントのグループ又はその全体のトレース上で実行されうる。
【００２０】
図２は、本開示のいくつかの実施形態による実例となる初期化プロセス２００を示す。初期化プロセスは、図１のブートコントローラ１１４によりモニタされ、トレースストア２３２内にトレースＮが生成され、ここでＮは、いくつかのトレースのうちの最近のトレースを表すことができる。初期化プロセス２００は、ブロック２０４においてセキュリティ（ＳＥＣ）フェーズで始まり、ここで中央処理ユニット（ＣＰＵ）キャッシュは、フラッシュ（flush）され、基本入出力システム（ＢＩＯＳ）リセットベクタが実行されうる。ブロック２０６において、データエリアは、ＣＰＵキャッシュの中に確立され、スタックベースのプログラミング言語が、システムメモリの初期化の前に使用されうる。
【００２１】
ブロック２０８において、ＳＥＣフェーズが、事前拡張ファームウェアインタフェース（ＰＥＩ：pre-extensible  firmware  interface）に引き継ぐことができる。ＰＥＩフェーズで、ＢＩＯＳがブロック２１０においてメモリに必要な速度を決定することができる。その後、メモリは、ブロック２１２で初期化されうる。ブロック２１４において、初期化プロセスが、見つかったメモリをメモリに関して定義されたアドレスマップにマップすることができる。このメモリマップは、見つかったメモリのメモリアドレスを、メモリマップによってカバーされるメモリ領域と関連付けることができる。例えば、メモリマップは、メモリアドレスの特定の範囲を予約済みメモリアドレスとして指定し、ブロック２１４における手順は、これらのメモリアドレスをそのように指定しうる。
【００２２】
ブロック２１６において、ブートプロセスのＰＥＩフェーズが完了し、ドライバ実行環境（ＤＸＥ：driver  execution  environment）が開始されうる。ブロック２１８においてチップセット及びサテライトコントローラがそれぞれのコンポーネントに関連したファームウェアを使用して初期化されうる。ブロック２２０において、中央処理ユニット（ＣＰＵ）が初期化されうる。ＣＰＵが初期化された後、ポテンシャルブート可能パーティションの優先順位を付けたリストからブートデバイスを選ぶプロセスがブロック２２２において実行されうる。ブロック２２４において、ＰＣＩエニュメレーション（enumeration）プロセスが実行され、コンピューティングデバイスのＰＣＩバスに接続されるデバイスが決定され、オプションＲＯＭがそれらのコンポーネントの初期化を開始しうる。ブロック２２６において、各ＲＯＭのシャドウ又はコピーがコンピューティングデバイスのメモリに保存されうる。ブロック２２８において、コンピューティングデバイスのオペレーティングシステム（ＯＳ）がブートされうる。
【００２３】
この初期化プロセス全体又はその部分は、ブートコントローラ１１４によってモニタされ、トレースストア２３２に保存されるトレースが生成されうる。上述の初期化プロセスは、初期化プロセスの例を単に説明することを意図している。このように説明した初期化プロセスは、コンピューティングデバイスの初期化を実行する実際のプロセスの一部分を表しているだけでありうる。初期化プロセスが追加のプロセスを含み、又はコンピューティングデバイスやその中に含まれるコンポーネントに依存して変化しうることを理解されたい。本開示は、コンピューティングデバイスによって実行されうる初期化プロセスにかかわらず同様に適用可能である。
【００２４】
図３は、本開示のいくつかの実施形態による、図１のＮＶＭ１２８のような不揮発性メモリの実例となるメモリマップ３００を示す。メモリマップ３００は、ＮＶＭのレイアウトを規定し、本開示のいくつかの態様で予約されるＮＶＭ内のメモリアドレスの範囲、又は領域を指定しうる。実施形態おいて、メモリマップ３００は、ディスクリプタ（descriptor）領域３０２を含むことができる。ディスクリプタ領域３０２は、ブートコントローラ等のコンポーネントがいくつかの領域へのアクセスを制限するために使用しうるメモリマップ３００によって定義された異なる領域へのアクセス許可を含みうる。トレースストア３０４は、コンピューティングデバイスの初期化プロセスのブートコントローラにより生成されたトレースを記憶するように構成することができる。メモリマップ３００は、また図１のトレースリプレイ識別子１３２のようなリプレイされるトレースの識別子を保存するのに利用されうるブートコントローラメールボックス３０６を含みうる。実施形態において、メモリマップ３００は、ＲＯＭのコピーを含みうるＲＯＭシャドウ３０８を含むことができ、ＲＯＭのコピーは以前に生成されたトレースにおいて特定されたＲＯＭのリプレイを可能にするためにコンピューティングデバイスの初期化で利用されうる。
【００２５】
実施形態において、トレースストア３０４は、コンピューティングデバイスを初期化するために必要な全てのプロセスを含むトレースを含みうる。いくつかの実施形態において、コンピューティングデバイスの個別のコンポーネントは、図１に示されるような個別のコンポーネント全てに対するファームウェアを含む単一のファームウェアストアを持つよりは、各ファームウェアストアを持ちうる。いくつかの実施形態において、各コンポーネントのファームウェアは、管理エンジン（ＭＥ）ファームウェア３１０、イノベーションエンジン（ＩＥ）ファームウェア３１４やベースボード管理コントローラ（ＢＭＣ）ファームウェア３１８のような個別のストアに保存されことができる。これらの各ファームウェアストア、３１０、３１４及び３１８は、単に個別のコンポーネントの最新のファームウェアを含むだけではなく、以前に生成されたトレースをリプレイするために必要となりうる以前のバージョンのファームウェアも含むことができる。コンピュータデバイスの個別のコンポーネントの初期化に利用するファームウェアに類似して、メモリマップもオペレーティングシステム（ＯＳ）メモリ３２２領域を含みうる。この領域は、コンピューティングデバイス上にオペレーティングシステムのインスタンスを生成するために必要なメモリエントリを含むことができる。実施形態においては、ＯＳメモリ３２２が、以下で図５を参照して検討されるように、ユーザドリブンチェックポイントに関するＯＳ状態情報を含むことができる。
【００２６】
いくつかの実施形態においては、トレースストア３０４が、コンピューティングデバイスの個別のコンポーネントの初期化に必要な全てのプロセスを含むことができる。他の実施形態では、トレースストア３０４に保存されたトレースが、初期化プロセスの簡略化したバージョン（abridged  version）を個別のコンポーネントの初期化を通して生成されたトレースセグメントに関連付けて含まれうる。例えば、トレースストアは、ＭＥトレースセグメント３１２、ＩＥトレースセグメント３１６、ＢＭＣトレースセグメント３２０及びＯＳトレースセグメント３２４に含まれるトレースセグメントと関連したトレースを含むことができる。トレースセグメントとトレースストア３０４内のトレースとの組合せは、コンピューティングデバイスに関する初期化プロセス全体を包含しうる。
【００２７】
図４は、本開示のいくつかの実施形態による、ブートコントローラによってコンピューティングデバイスの初期化トレースを生成するための実例となるプロセスフロー４００を示す。ブロック４０２において、プロセスは例えば本明細書の他の場所で議論されたブートコントローラの初期化から始まりうる。ブロック４０４において、ブートコントローラは、例えば図２の初期化プロセス２００のようなコンピューティングデバイスの初期化プロセスをモニタすることができる。ブロック４０６において、ブートコントローラは、既に検討したように、モニタされた初期化からトレースを生成することができる。
【００２８】
ブロック４０８で、初期化が成功したか否かについての判定が行われうる。いくつかの実施形態において、初期化が成功したか否かの判定は、初期化のトレースからブートコントローラによって生成されるチェックサムの検証に基づいて行われうる。この判定／検証プロセスは、ブートコントローラ、コンピュータデバイスの他のコンポーネント、ネットワーク経由でコンピューティングデバイスと接続されるうるリモートコンピューティングデバイス、又はコンピューティングデバイスのユーザ又はアドミニストレータによって実行されうる。このチェックサムは、例えば、各コンピューティングデバイスが異なるコンポーネントを有すが、アドミニストレータは、個別のコンピューティングデバイスの予想される初期化プロセスを保証したいサーバファーム（server  farm）又はデータウェアハウス（data  warehouse）において利用された場合に有益でありうる。このような環境では、個別のコンピューティングデバイスが個別のコンピューティングデバイスに関する予測される値（expected  value）との比較のためチェックサムが中央のレポジトリ（central  repository）に送信されうる。
他の実施形態では、初期化の成功が、コンピューティングデバイスによって実行されるシステムテストの結果に基づいて判定されうる。さらに他の実施形態では、ユーザ又はアドミニストレータがコンピューティングデバイスの実施可能性（operability）に基づいて初期化を検証することができる。
【００２９】
もし初期化が成功しなかった場合、プロセスは、失敗に終わった初期化タスクが実行されうるブロック４０９まで進み、その後、プロセスはプロセスが終了しうるブロック４１６へ進むことができる。いくつかの実施形態では、失敗に終わった初期化タスクが、ブートコントローラによるコンピュータシステムのリセット及び以前に生成されたトレースのリプレイを含み、それにより、コンピューティングデバイスを適切に初期化できる。他の実施形態では、失敗に終わった初期化タスクは、ユーザ又はアドミニストレータが制定したポリシーを含みうる。例えば、アドミニストレータが、既に検討した所定のトレースの１つのような、アドミニストレータが失敗に終わった初期化の場合に、それを利用してコンピューティングデバイス又はその一部を初期化したいと思うような所定のトレースを望みうる。さらに別の実施形態では、不成功に終わった初期化タスクが、ブートコントローラによるプロンプト又はログの生成を含み、それによりユーザ又はアドミニストレータに不成功に終わった初期化のコンピューティングデバイスを知らせることができる。
【００３０】
もし初期化が成功した場合は、プロセスは、ブロック４１０へ進むことができる。ブロック４１０において、ブートコントローラは、以前にセーブされた既存のトレースが存在するか否かを判定することができる。既存のトレースが存在しない場合、次にプロセスは、ブートコントローラがトレースをトレースＮとしてセーブするブロック４１２へ進むことができ、ここでＮは直近のトレースを示し、トレースはブロック４１６で終了しうる。既存のトレースが存在する場合は、いくつかの実施形態において、次に、プロセスがブロック４１４へ進むことができる。ブロック４１４でブートコントローラは以前のトレースＮをトレースＮ−１と格下げし、他の以前に保存されたトレースに対しても同様にすることができる。他の実施形態において、ブートコントローラは、以前のトレースＮを現在のトレースと単に置き換えることができる。以前のトレースが降格され又は置き換えられた後、プロセスは、ブロック４１６へ進み、プロセスは終了しうる。既に検討した通り、いくつかの実施形態において、コンピューティングデバイスの各コンポーネントと関連したトレースセグメントが存在しうる。そのような実施形態では、各コンポーネントに対してトレースセグメントＮが存在しうる。このような各トレースセグメントは、初期化の成功（successfulness）を判定するために分析され、それぞれのコンポーネントの成功した初期化に対応してトレースＮにアペンド（append）されうる。
【００３１】
図５は、コンピューティングデバイス上のユーザドリブンチェックポイントを確立するための実例となるプロセスフロー５００を本開示のいくつかの実施形態にしたがって、説明する。プロセスは、オペレーティングシステム（ＯＳ）が通常動作状態に到達しうるブロック５０２で始まることができる。ブロック５０４で、ユーザドリブンチェックポイントに到達したかについて判定が行われうる。この判定は、ブートコントローラ、ＯＳのコンポーネント、又は他の適切なコンポーネントによって行われうる。もしブートコントローラ以外のコンポーネントがこの判定を行う場合、次にいくつかの実施形態では、判定の肯定的な結果がブートコントローラに伝えられうる。このような判定は、コンピュータシステムの特定のアプリケーション又はイベントに基づいて行われ、それらはユーザによってコンピューティングデバイスの正常動作を示すチェックポイントとして定義されうる。例えば、チェックポイントは、電子メール（email）クライアント又は他の同様のイベントのようなユーザが通常利用する所定のアプリケーションの初期化によって定義されうる。ユーザドリブンチェックポイントが発生しなかったと判定された場合、次に、プロセスは、ブロック５０２へ戻り、ＯＳは通常の動作を続けることができる。
【００３２】
イベントがユーザドリブンチェックポイントと判定された場合は、プロセスは、ブロック５０６へ進むことができる。ブロック５０６で、ブートコントローラは以前セーブされたチェックポイントの既存のトレースが存在するか否か判定することができる。もし既存のトレースが存在しない場合は、次にプロセスはブロック５０８へ進み、そこでブートコントローラは、このチェックポイントをトレースＮとしてセーブし、ここでＮは直近のトレースを示し、そして、プロセスはブロック５０２で通常のＯＳ動作に戻ることができる。もし既存のトレースが存在する場合、次にプロセスはブロック５１０へ進み、そこではブートコントローラ、ＯＳのコンポーネント、又は他の適切なコンポーネントがチェックポイントマネージャを起動しうる。チェックポイントマネージャが一旦起動されると、コンピューティングデバイスのユーザは、このチェックポイントに対するトレースを置き換えるか、以前に生成されたトレースＮを降格させるか、チェックポイントマネージャによって判断するように促されうる。いくつかの実施形態では、チェックポイントマネージャはブートコントローラの一部でありうる。他の実施形態において、チェックポイントマネージャは、ＯＳの一部として実装され、ブートコントローラと通信するように構成されうる。ブロック５１４で、もしユーザがそうように選択するか、又はブートコントローラがトレースＮを現在のトレースと単に置換した場合には、以前のトレースＮがブートマネージャによりトレースＮ−１に降格させられうる。以前のトレースＮが降格され、又は置換された後に、プロセスは、ＯＳが通常動作を続けられるブロック５０２まで進むことができる。保存できるトレースの数は、トレースを保持するメモリの記憶能力によってのみ制限されうることを理解されたい。
【００３３】
いくつかの実施形態において、トレースは、それぞれのトレースを保存させるユーザドリブンチェックポイントの指示を有することができる。いくつかの実施形態では、ユーザドリブンチェックポイントに基づいてトレースが構成され、もしユーザがこれらのトレースのうち１つをリプレイしたい場合、図６に示されたようにプロセス全体をユーザがリプレイしたいトレースを特定するユーザドリブンチェックポイントを選択することができる。
【００３４】
図６は、コンピュータデバイスを初期化するトレースのリプレイに関して実例となるプロセスフロー６００を、本開示のいくつかの実施形態にしたがって説明する。プロセスは、ブートコントローラが初期化されるブロック６０２で始まることができる。ブロック６０４で、既に検討したように、ブートコントローラが、トレース識別子がブートコントローラメールボックスに保存されているか否か判定されうる。もしブートコントローラメールボックスに保存されたトレース識別子がない場合、プロセスは、コンピューティングデバイスが通常通り初期化されるブロック６０６へ進むことができる。その後、プロセスは、ブロック６１２で終了することができる。もしトレース識別子がブートコントローラメールボックスに保存されている場合、プロセスは、所定のトレースがブートコントローラによって取り出されうるブロック６０８へ進むことができる。ブロック６１０において、ブートコントローラは、通常の初期化プロセスの代わりにコンピューティングデバイスを初期化するトレースをリプレイすることができる。その後、プロセスは、ブロック６１２で終了することができる。いくつかの実施形態では、コンピューティングデバイスの各コンポーネントは、上述のようにトレースセグメントと関連付けられうる。そのような実施形態では、トレースのリプレイは、選択されたトレースのリプレイの実行と協調するこれらのトレースセグメントのリプレイを含むことができる。いくつかの実施形態において、トレースは、リモートサーバ、クラウド、ネットワーク接続ストレージ（ＮＡＳ）、又は同種のものに保存されうる。そのような実施形態において、トレース識別子は、トレースが読み出されるアドレスも含むことができる。
【００３５】
いくつかの実施形態では、ブートコントローラメールボックスは、トレースを読み出した後に、フラッシュされうる。別の実施形態では、ユーザが新たなトレースの生成を決めるまで、ブートコントローラメールボックスは、コンピューティングデバイスの各初期化に関して使用される同じトレースを確保するように持続することができる。これは、ユーザがコンピューティングデバイスの一貫した初期化の確保を望んでいる場合に起こりうる。そのようなシナリオでは、コンピューティングデバイスのコンポーネントのファームウェア更新又コンピューティングデバイスへの新たなハードウェア又はソフトウェアの追加のような、コンピューティングデバイスへの変更が発生した場合にのみ、新たなトレースの生成をユーザが選択することができる。
【００３６】
本明細書の目的では、コンピュータ使用可能又はコンピュータ読取り可能媒体は、命令実行システム、装置、又はデバイスによって又は関連しての使用に関するプログラムを、含み、保存し、通信し、又は伝搬するいかなる媒体でもありうる。媒体は、揮発性又は不揮発性メモリでありうる。媒体は、電子的、磁気的、光学的、電磁気的、赤外線の、半導体システム（又は装置又はデバイス）又は伝搬媒体でありうる。コンピュータ読取り可能記憶媒体の例は、半導体、ソリッドステートのメモリ、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、固定磁気ディスク及び光学ディスクを含む。光学ディスクの現在の例は、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）及びＤＶＤを含む。
【００３７】
本開示の実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態又はハードウェアとソフトウェアの両方を含む実施形態という形態を取りうる。いくつかの実施形態では、ソフトウェアは、これには制限されないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含みうる。その上、本開示は、コンピュータ又はいかなる命令実行システムによって使用される又は関連するプログラムコードを提供するコンピュータ使用可能又はコンピュータ読取り可能媒体からアクセス可能なコンピュータプログラム製品の形態を取ることができる。
【００３８】
本明細書において、特定の実施形態が説明され、記述されてきたが、本開示の実施形態の範囲から逸脱すことなく当業者によって幅広い代替手段及び／又は均等の実装が、提示され記述された特定の実施形態と置き換えられることを理解されたい。本出願は、本明細書で検討された実施形態のいかなる改変又は変形もカバーすることを意図する。したがって、本開示の実施形態が制限されるのは、請求項及びその均等物によってのみであることを意図している。
【００３９】
例
いくつかの実施形態による、本開示のいくつかの例を説明する。例１は、ブートコントローラ、前記ブートコントローラに接続された１つ以上の不揮発性メモリモジュールとを備えた、プラットフォームコントローラであって、前記不揮発性メモリモジュールが、前記プラットフォームコントローラをホスティングするコンピューティングデバイスのプロセッサにより実行されたときに、前記コンピューティングデバイスを初期化する第１の複数の命令（first  instructions）と、前記ブートコントローラにより実行されたときに、前記ブートコントローラに前記コンピューティングデバイスによる前記第１の複数の命令の実行の少なくとも一部をモニタさせ、前記１つ以上の不揮発性メモリモジュールに保存される前記第１の複数の命令の前記命令の前記モニタされた部分のトレースを生成する第２の複数の命令（second  instructions）と、を中に保存する、プラットフォームコントローラ。
【００４０】
例２は、例１の前記発明特定事項を含むことができ、前記第２の命令が前記ブートコントローラによって実行されたときに、パワーオンセルフテスト（ＰＯＳＴ）の実行前の初期状態から前記コンピューティングデバイスへのオペレーティングシステム（ＯＳ）のインスタンスの作成が行われる後続の状態まで前記コンピューティングデバイスによる前記第１の命令の実行をモニタする例２。
【００４１】
例３は、例２の前記発明特定事項を含むことができ、前記ブートコントローラによって実行されたときに、前記第２の命令が、前記第１の命令の実行の成功に応じて前記１つ以上の不揮発性メモリに前記トレースを保存する、例３。
【００４２】
例４は、例１乃至３のうち１つの前記発明特定事項を含むことができ、前記１つ以上の不揮発性メモリモジュールは、前記ブートコントローラによって生成された、以前に前記第１の命令の複数のモニタされた実行の複数のトレースを保存する、例４。
【００４３】
例５は、例１乃至３のうち１つの前記発明特定事項を含むことができ、前記第２の命令は、前記ブートコントローラによって実行されたときに、さらに前記ブートコントローラに、リクエストに応答して、以前に生成され保存されたトレース選択のため前記コンピューティングデバイスのユーザに提示し、選択に応じて、前記以前に生成され保存されたトレースの選択された１つをリプレイし、前記コンピューティングデバイスを初期化する、例５。
【００４４】
例６は、例５の前記発明特定事項を含むことができ、前記選択されたトレースのリプレイが、さらに前記不揮発性メモリモジュール中の前記選択されたトレースと関連する識別子のストレージを含み、前記ブートコントローラの次の初期化に応じて、前記識別子へのアクセスを前記ブートコントローラに提供する、例６。
【００４５】
例７は、例６の前記発明特定事項を含むことができ、前記選択されたトレースのリプレイが、さらに、前記ブートコントローラの前記次の初期化に応じた前記１つ以上の不揮発性メモリモジュールからの前記識別子の読取り、前記識別子を介しての前記選択されたトレースの特定、及び前記コンピューティングデバイスの初期化する前記選択されたトレースの利用を含む、例７。
【００４６】
例８は、例１乃至３のうち１つの前記発明特定事項を含むことができ、前記第２の命令は、前記ブートコントローラよって実行されたときに、さらに、前記第１の命令の前記モニタされた実行の正常終了に応じて、前記ブートコントローラに前記トレースに基づきチェックサムを生成させる、例８。
【００４７】
例９は、例８の前記発明特定事項を含むことができ、前記第２の命令は、前記ブートコントローラによって実行されたときに、前記ブートコントローラに、前記チェックサムを予測されるチェックサムと比較し、前記コンピューティングデバイスの初期化を検証させる、例９。
【００４８】
例１０は、例１乃至３のうち１つの前記発明特定事項を含むことができ、前記第１の命令は、前記コンピューティングデバイスに存在する複数のハードウェアコンポーネントを初期化する複数のファームウェアを含む、例１０。
【００４９】
例１１は、例１０の前記発明特定事項を含むことができ、前記第２の命令は、前記ブートコントローラによって実行されたときに、さらに、前記ブートコントローラに、前記複数のハードウェアコンポーネントの各ハードウェアコンポーネントに対応するトレースセグメントの生成を通して前記トレースを生成し、前記トレースセグメントをアクセス及びリプレイするハードウェアコンポーネントに対応する各トレースセグメントを利用可能にする、例１１。
【００５０】
例１２は、命令を含む１つ以上のコンピュータ読取り可能媒体であって、前記命令は、コンピューティングデバイスのブートコントローラによって実行されたときに、前記ブートコントローラに、前記コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）による前記コンピューティングデバイスの初期化をモニタさせ、ここで前記ブートコントローラ及び前記ＢＩＯＳは、互いに独立であり、前記コンピューティングデバイスのメモリに前記モニタされた初期化の前記生成されたトレースを保存する、例１２。
【００５１】
例１３は、例１２の前記発明特定事項を含むことができ、初期化のモニタが、パワーオンセルフテスト（ＰＯＳＴ）の実行の前の初期状態から、前記コンピューティングデバイス上にオペレーティングシステム（ＯＳ）のインスタンスを生成される後続の状態まで前記コンピューティングデバイスをモニタする、例１３。
【００５２】
例１４は、例１２の前記発明特定事項を含むことができ、前記生成されたトレースの保存が、前記初期化の正常終了に応じて、前記１つ以上の不揮発性メモリモジュールに前記トレースを保存する、例１４。
【００５３】
例１５は、例１４の前記発明特定事項を含むことができ、前記トレースの保存が、他の複数のトレースのレポジトリに前記トレースを保存し、ここで前記他のトレースが、前記コンピューティングデバイスの以前にモニタされた初期化から生成されたものである、例１５。
【００５４】
例１６は、例１２乃至１５のうち１つの前記コンピュータ読取り可能媒体を含み、前記命令は、前記ブートコントローラによって実行されたときに、さらに、前記ブートコントローラにリクエストに応答して以前に生成され保存された複数のトレースを選択のため前記コンピューティングデバイスのユーザに提示し、選択に応じて、前記以前に生成され保存されたトレースの選択された１つをリプレイし、前記コンピューティングデバイスを初期化する、例１６。
【００５５】
例１７は、例１６の前記発明特定事項を含むことができ、前記選択されたトレースのリプレイが、さらに、前記ブートコントローラの初期化の間に前記ブートコントローラによってアクセス可能なロケーションに前記選択されたトレースに関連した識別子のストレージを含み、前記ブートコントローラに前記ブートコントローラの次の初期化に応じて、前記識別子へのアクセスを提供する、例１７。
【００５６】
例１８は、例１７の前記発明特定事項を含むことができ、前記選択されたトレースのリプレイは、さらに、前記ブートコントローラの前記次の初期化に応じて、前記１つ以上の不揮発性メモリモジュールから前記識別子の読取り、前記識別子に基づく前記選択されたトレースの取得、及び前記コンピューティングデバイスを初期化する前記取得したトレースの利用を含む、例１８。
【００５７】
例１９は、例１２乃至１５のうち１つの前記発明特定事項を含むことができ、前記命令は、前記ブートコントローラによって実行されたときに、さらに、前記ブートコントローラに前記コンピューティングデバイスの前記初期化の正常終了に応じて、前記トレースに基づきチェックサムを生成させる、例１９。
【００５８】
例２０は、例１９の前記発明特定事項を含むことができ、前記命令は、前記ブートコントローラによって実行されたときに、さらに、前記ブートコントローラに、前記チェックサムを予測されるチェックサムと比較させ、前記コンピューティングデバイスの初期化を検証させる、例２０。
【００５９】
例２１は、例１２乃至１５にうち１つに記載の前記発明特定事項を含むことができ、前記コンピューティングデバイスの前記初期化が、前記コンピューティングデバイスの複数のハードウェアコンポーネントを初期化するための複数のファームウェアの実行を含む、例２１。
【００６０】
例２２は、例２１の前記発明特定事項を含み、前記命令は、前記ブートコントローラによって実行されたときに、さらに、前記ブートコントローラに複数のハードウェアコンポーネントに各ハードウェアコンポーネントに対応するトレースセグメントの生成を通して、前記トレースを生成せ、前記対応するハードウェアコンポーネントに対する前記トレースセグメントのアクセスを提供し、前記対応するハードウェアコンポーネントの前記複数のトレースセグメントのリプレイを可能にする、例２２。
【００６１】
例２３は、コンピュータ実施方法であって、コンピューティングデバイスのブートコントローラによって、前記コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）による前記コンピューティングデバイスの初期化をモニタすることであって、前記ブートコントローラと前記ＢＩＯＳは、相互に独立である、モニタすることと、前記ブートコントローラによって、前記コンピューティングデバイスの前記モニタした初期化のトレースを作成することと、前記ブートコントローラによって前記コンピューティングデバイスのメモリ中の前記初期化の生成されたトレースを保存することと、を含むコンピュータ実施方法。
【００６２】
例２４が例２３の前記発明特定事項を含み、前記コンピュータデバイスの前記初期化をモニタすることが、さらに、パワーオンセルフテスト（ＰＯＳＴ）の実行前の初期状態から、オペレーティングシステム（ＯＳ）が前記コンピュータ上にインスタンスを生成される後続の状態まで前記コンピューティングデバイスの前記初期化のモニタすることを含む、例２４。
【００６３】
例２５は、例２４の前記発明特定事項を含むことができ、さらに前記ブートコントローラにより、前記初期化の正常終了に応じて、前記コンピューティングデバイスの不揮発性メモリにトレースを保存することを含む、例２５。
【００６４】
例２６は、例２５の前記発明特定事項を含むことができ、前記トレースを保存することが、さらに、複数の他のトレースのレポジトリに前記トレースを保存することを含み、前記他のトレースが、前記コンピューティングデバイスの以前モニタされた初期化から生成されたものである、例２６。
【００６５】
例２７は、例２３乃至２６のいずれか１つの前記発明特定事項を含むことができ、さらにリクエストに応じて、前記ブートコントローラが、以前に生成し保存された複数のトレースを選択のために前記コンピューティングデバイスのユーザに提示し、以前に生成し保存された前記複数のトレースの１つの選択を受信し、以前に生成し保存された前記複数のトレースの前記選択された１つをリプレイし、コンピューティングデバイスを初期化することを含む、例２７。
【００６６】
例２８が例２７の前記発明特定事項を含むことができ、前記選択されたトレースをリプレイすることが、前記コンピューティングデバイスの不揮発性メモリに前記選択されたトレースに関連する識別子を保存することを含む、例２８。
【００６７】
例２９は、例２８の前記発明特定事項を含むことができ、前記選択されたトレースをリプレイすることが、さらに、前記ブートコントローラの前記次の初期化に応じて、前記不揮発性メモリから前記識別子を読取り、前記ブートコントローラのよって前記識別子に基づいて前記選択されたトレースを取得し、前記取得されたトレースを使用して前記コンピューティングデバイスを初期化することを含む、例２９。
【００６８】
例３０は、例２３乃至２６のうち１つの前記発明特定事項を含むことができ、さらに、前記ブートコントローラによって前記第１の命令の前記モニタされた実行の正常終了に応じて、前記トレースに基づいてチェックサムを生成することを含む例３０。
【００６９】
例３１は、例３０の前記発明特定事項を含むことができ、さらに、前記ブートコントローラによって、予測されるチェックサムに対する前記生成されたチェックサムの検証を行うことと、前記生成されたチェックサムの前記検証が失敗したときに、前記ブートコントローラによって前記コンピューティングデバイスのユーザに知らせることを含む、例３０。
【００７０】
例３２は、例２３乃至２６のうち１つの前記発明特定事項を含むことができ、前記コンピューティングデバイスの初期化が、前記コンピューティングデバイスの複数のハードウェアコンポーネントを初期化する複数のファームウェアを実行することを含む、例３２。
【００７１】
例３３は、例３２の前記発明特定事項を含むことができ、前記トレースを生成することが、さらに、前記複数のハードウェアコンポーネントの各ハードウェアコンポーネントに対応するトレースセグメントを生成することと、ここで前記トレースは、前記トレースセグメントの組合せを含み、前記対応するハードウェアコンポーネントに対する前記トレースセグメントのアクセスを提供することによって前記対応するハードウェアコンポーネントによる前記トレースセグメントのリプレイを可能にすることを含む、例３３。
【００７２】
例３４は、コンピューティングデバイスであって、コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）による前記コンピューティングデバイスの初期化をモニタする手段と、ここで前記モニタする手段と前記ＢＩＯＳは相互に独立であり、前記コンピューティングデバイスの前記モニタされた初期化のトレースを生成する手段と、前記コンピューティングデバイスのメモリ中に前記初期化の前記生成されたトレースを保存する手段とを有する例３４。
【００７３】
例３５は、例３４の前記発明特定事項を含み、ここで前記コンピューティングデバイスの前記初期化をモニタする前記手段は、さらに、パワーオンセルフテスト（ＰＯＳＴ）の実行より前の初期状態からオペレーティングシステム（ＯＳ）が前記コンピューティングデバイス上にインスタンスが生成される後続の状態まで初期化をモニタする手段を含む、例３５。
【００７４】
例３６は、例３５の前記発明特定事項を含むことができ、さらに、前記初期化の正常終了に応じて、前記コンピューティングデバイスの不揮発性メモリの中に前記トレースを保存する手段とを含む、例３６。
【００７５】
例３７は、例３６の前記発明特定事項を含むことができ、前記トレースを保存する手段が、さらに複数の他のトレースのレポジトリに前記トレースを保存する手段を含み、ここで前記他のトレースは、前記コンピューティングデバイスの以前モニタされた初期化から生成される、例３７。
【００７６】
例３８は、例３４乃至３７のうち１つの前記発明特定事項を含むことができ、さらに、リクエストに応答して、以前に生成され保存された複数のトレースを選択のため前記コンピューティングデバイスのユーザに提示する手段と、以前に生成され保存された前記複数のトレースの選択された１つをリプレイし、前記コンピューティングデバイスを初期化する手段とを有する、例３８。
【００７７】
例３９は、例３８の前記発明特定事項を含むことができ、前記選択されたトレースをリプレイする前記手段が、さらに、前記コンピューティングデバイスの不揮発性メモリ中の前記選択されたトレースに関連する識別子を保存する手段をさらに含む、例３９。
【００７８】
例４０は、例３９の前記発明特定事項を含むことができ、前記選択されたトレースをリプレイする前記手段が、前記不揮発性メモリから前記識別子を読み取る手段と、前記識別子に基づき、前記選択されたトレースを取得する手段と、前記取得したトレースを使用して前記コンピューティングデバイスを初期化する手段をさらに含む例４０。
【００７９】
例４１は、前記３４乃至３７のうち１つの前記発明特定事項を含むことができ、さらに前記第１の命令の前記モニタされた実行の正常終了に応じて、前記トレースに基づき、チェックサムを生成する手段を含む、例４１。
【００８０】
例４２は、例４１の前記発明特定事項を含むことができ、さらに、予測されるチェックサムに対して前記生成されたチェックサムを検証する手段と、前記生成されたチェックサムの前記検証が失敗した場合に、前記コンピューティングデバイスのユーザに知らせる手段とを含む、例４２。
【００８１】
例４３は、例３４乃至３７のうち１つの前記発明特定事項を含むことができ、前記コンピューティングデバイスの初期化が前記コンピューティングデバイスの複数のハードウェアコンポーネントを初期化する複数のファームウェアを実行することを含む、例４３。
【００８２】
例４４は、例４３の前記発明特定事項を含むことができ、前記トレースを生成する前記手段が、さらに、前記複数のハードウェアコンポーネントに各ハードウェアコンポーネントに対応するトレースセグメントを生成する手段であって、前記トレースは、トレースセグメントの組合せを含み、前記対応するハードウェアコンポーネントに対する前記トレースセグメントへのアクセスを提供することにより、前記対応するハードウェアコンポーネントによる前記トレースセグメントのリプレイを可能にする手段とを、含む例４４。
【図１】
0006297715.tif 000002
【図２】
0006297715.tif 000003
【図３】
0006297715.tif 000004
【図４】
0006297715.tif 000005
【図５】
0006297715.tif 000006
【図６】
0006297715.tif 000007