(57)【特許請求の範囲】
【請求項１】
プラットフォーム初期化を改善する計算デバイスであって、
送られたセキュリティ・コ・プロセッサコマンドを実行するセキュリティ・コ・プロセッサと、
前記計算デバイスのプラットフォームの初期化を開始する基本入出力システムモジュールと、
前記基本入出力システムモジュールからのセキュリティ・コ・プロセッサコマンドの受け取りに応じて、セキュリティ・コ・プロセッサコマンドをコマンドリストに加えるセキュリティ・コ・プロセッサドライバモジュールと、
前記プラットフォームの初期化の定期的割り込みを確立するタイマーモジュールとを有し、
前記セキュリティ・コ・プロセッサドライバモジュールは、さらに、前記定期的割り込みの発生に応じて、（ｉ）前に送られたセキュリティ・コ・プロセッサコマンドに対するセキュリティ・コ・プロセッサ応答の入手可能性に関し前記セキュリティ・コ・プロセッサにクエリし、（ｉｉ）入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、前記入手可能なセキュリティ・コ・プロセッサ応答を前記基本入出力システムモジュールに転送する、
計算デバイス。
【請求項２】
前記セキュリティ・コ・プロセッサドライバモジュールは、さらに、前記入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、前記コマンドリストの中の次のセキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送る、請求項１に記載の計算デバイス。
【請求項３】
前記セキュリティ・コ・プロセッサはトラステッドプラットフォームモジュールを含む、請求項１に記載の計算デバイス。
【請求項４】
前記セキュリティ・コ・プロセッサはマネジアビリティエンジンを含む、
請求項１に記載の計算デバイス。
【請求項５】
前記セキュリティ・コ・プロセッサはコンバージド・セキュリティエンジンを含む、
請求項１に記載の計算デバイス。
【請求項６】
前記セキュリティ・コ・プロセッサは帯域外プロセッサを含む、
請求項１に記載の計算デバイス。
【請求項７】
前記基本入出力システムモジュールは、さらに、前記定期的割り込みからの戻りに応じて、前記プラットフォームの初期化を継続する、請求項１に記載の計算デバイス。
【請求項８】
前記タイマーモジュールは、さらに、前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、初期化の定期的割り込みを中断する、
請求項１に記載の計算デバイス。
【請求項９】
前記セキュリティ・コ・プロセッサドライバモジュールは、さらに、前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、（ｉ）前記コマンドリストの中に残っている各セキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送り、（ｉｉ）残っているセキュリティ・コ・プロセッサコマンドの一つに対する入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、残っているセキュリティ・コ・プロセッサコマンドの各々について、入手可能なセキュリティ・コ・プロセッサ応答を、前記基本入出力システムモジュールに転送する、請求項８に記載の計算デバイス。
【請求項１０】
前記基本入出力システムモジュールは、さらに、初期化プロシージャの完了に応じて、前記計算デバイスのオペレーティングシステムをブートする、
請求項９に記載の計算デバイス。
【請求項１１】
前記コマンドリストは先入れ先出しシステムに従う、
請求項１に記載の計算デバイス。
【請求項１２】
前記コマンドリストは後入れ先出しシステムに従う、
請求項１に記載の計算デバイス。
【請求項１３】
計算デバイスのプラットフォームの初期化を改善する方法であって、
前記計算デバイスの基本入出力システムを用いて前記計算デバイスのプラットフォームの初期化を開始するステップと、
前記計算デバイスのセキュリティ・コ・プロセッサドライバで、前記基本入出力システムから、前記計算デバイスのセキュリティ・コ・プロセッサにより実行されるセキュリティ・コ・プロセッサコマンドを受け取るステップと、
セキュリティ・コ・プロセッサコマンドの受け取りに応じて、前記セキュリティ・コ・プロセッサドライバで、前記セキュリティ・コ・プロセッサコマンドをコマンドリストに加えるステップと、
前記計算デバイスで、前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記セキュリティ・コ・プロセッサに、前に送られたセキュリティ・コ・プロセッサ応答へのセキュリティ・コ・プロセッサ応答の入手可能性に関しクエリし、（ｉｉ）入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、入手可能なセキュリティ・コ・プロセッサ応答を前記基本入出力システムモジュールに転送するステップとを有する、方法。
【請求項１４】
前記プラットフォームの初期化に割り込むステップは、入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、前記コマンドリストの中の次のセキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送るステップを有する、請求項１３に記載の方法。
【請求項１５】
前記セキュリティ・コ・プロセッサコマンドを受け取るステップは、前記計算デバイスのトラステッドプラットフォームモジュールで、前記基本入出力システムから、前記計算デバイスのトラステッドプラットフォームモジュールにより実行されるトラステッドプラットフォームモジュールコマンドを受け取るステップを有し、
前記セキュリティ・コ・プロセッサコマンドを前記コマンドリストに加えるステップは、前記トラステッドプラットフォームモジュールコマンドの受け取りに応じて、前記トラステッドプラットフォームモジュールで、前記トラステッドプラットフォームモジュールコマンドをコマンドリストに加えるステップを有し、
前記プラットフォームの初期化に割り込むステップは、前記計算デバイスで、前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記トラステッドプラットフォームモジュールに、前に送ったトラステッドプラットフォームモジュールコマンドに対するトラステッドプラットフォームモジュール応答の入手可能性に関しクエリし、（ｉｉ）入手可能なトラステッドプラットフォームモジュール応答の受け取りに応じて、入手可能なトラステッドプラットフォームモジュール応答を前記基本入出力システムモジュールに転送するステップを有する、
請求項１３に記載の方法。
【請求項１６】
前記プラットフォームの初期化に割り込むステップは、入手可能なトラステッドプラットフォームモジュール応答の受け取りに応じて、前記コマンドリストの中の次のトラステッドプラットフォームモジュールコマンドを前記トラステッドプラットフォームモジュールに送るステップを有する、
請求項１５に記載の方法。
【請求項１７】
前記計算デバイスにおいて、定期的割り込みから戻るのに応じて、前記プラットフォームの初期化を継続するステップをさらに有する、
請求項１３に記載の方法。
【請求項１８】
前記計算デバイスにおいて、前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、初期化の定期的割り込みを中断するステップをさらに有する、請求項１３に記載の方法。
【請求項１９】
前記計算デバイスで、前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、コマンドリスト中に残っている各セキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送るステップと、
前記計算デバイスで、残っているセキュリティ・コ・プロセッサコマンドの一つに対する入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、残っているセキュリティ・コ・プロセッサコマンドの各々について、入手可能なセキュリティ・コ・プロセッサ応答を前記基本入出力システムモジュールに転送するステップとを有する、
請求項１８に記載の方法。
【請求項２０】
前記計算デバイスにおいて、前記初期化プロシージャの完了に応じて、前記計算デバイスのオペレーティングシステムをブートするステップをさらに有する、
請求項１９に記載の方法。
【請求項２１】
コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドをセキュリティ・コ・プロセッサに送るステップは、前記コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドを、先入れ先出し、及び後入れ先出しのうち一方で、セキュリティ・コ・プロセッサに送るステップを有する、請求項１３に記載の方法。
【請求項２２】
実行されると、計算デバイスに請求項１３乃至２１いずれか一項に記載の方法を実行させる複数の命令を格納した一以上の機械読み取り可能記憶媒体。
【請求項２３】
プラットフォーム初期化を改善する計算デバイスであって、
前記計算デバイスの基本入出力システムを用いて前記計算デバイスのプラットフォームの初期化を開始する手段と、
前記計算デバイスのセキュリティ・コ・プロセッサドライバで、前記基本入出力システムから、前記計算デバイスのセキュリティ・コ・プロセッサにより実行されるセキュリティ・コ・プロセッサコマンドを受け取る手段と、
セキュリティ・コ・プロセッサコマンドの受け取りに応じて、前記セキュリティ・コ・プロセッサドライバで、前記セキュリティ・コ・プロセッサコマンドをコマンドリストに加える手段と、
前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記セキュリティ・コ・プロセッサに、前に送られたセキュリティ・コ・プロセッサ応答へのセキュリティ・コ・プロセッサ応答の入手可能性に関しクエリし、（ｉｉ）入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、入手可能なセキュリティ・コ・プロセッサ応答を前記基本入出力システムに転送する手段とを有する、
計算デバイス。
【請求項２４】
前記プラットフォームの初期化に割り込む手段は、入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、前記コマンドリストの中の次のセキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送る手段を有する、
請求項２３に記載の計算デバイス。
【請求項２５】
定期的割り込みからの戻りに応じて前記プラットフォームの初期化を継続する手段と、
前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、初期化の定期的割り込みを中断する手段と、
前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、コマンドリスト中に残っている各セキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送る手段と、
残っているセキュリティ・コ・プロセッサコマンドの一つに対する入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、残っているセキュリティ・コ・プロセッサコマンドの各々について、入手可能なセキュリティ・コ・プロセッサ応答を前記基本入出力システムモジュールに転送する手段とをさらに有する、
請求項２３に記載の計算デバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
トラステッドプラットフォームモジュール（ＴＰＭ）及びその他のセキュリティ・コ・プロセッサは、計算デバイスのセキュリティを向上するために一般的に用いられている。かかるセキュリティ・コ・プロセッサは、一般的に、様々な暗号機能を行い、プラットフォームのインテグリティを保証するために用いられることが多い。また、セキュリティ・コ・プロセッサは、一般的に暗号プロシージャを実行できるので、幾つかの場合には、計算デバイスのメインプロセッサから暗号プロシージャをオフロードするために用いられる。
【０００２】
今日の社会では、様々な計算デバイスのコンシューマの喜びに対してスピードが欠かせない。例えば、ウルトラブックが市場に登場したのは、標準的なノートブックコンピュータと比較してブートスピードを速くすることが中心フォーカスである。さらに、オペレーティングシステムとコンピュータプラットフォームに対する幾つかの標準は、生産者がブートスピードに注意することを要求し、例えばそれは計算デバイスがＵｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ  （ＵＥＦＩ）  ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ  （ＢＩＯＳ）  Ｐｏｗｅｒ−Ｏｎ  Ｓｅｌｆ−Ｔｅｓｔ  （ＰＯＳＴ）を数秒で完了することを要求することにより行われる。これらの標準は、計算デバイスが素早くブートし、サーバのリブートに関連するダウンタイムが最小であることを保証する。さらに、典型的なＴＰＭをブートするのに関連するレイテンシは大きく、これはこれらの標準に反する。
【図面の簡単な説明】
【０００３】
ここで説明するコンセプトを、添付した図面において、限定ではなく実施例により説明する。説明を単純かつ明確にするため、図に示した要素は必ずしもスケール通りには描いていない。適当であれば、対応または類似する要素を示すため、複数の図面で同じ参照レベルを用いた。
【図１】プラットフォーム初期化を改善する計算デバイスの少なくとも一実施形態を示す簡略化したブロック図である。
【図２】図１の計算デバイスの環境の少なくとも一実施形態を示す簡略化したブロック図である。
【図３】図１の計算デバイスにおけるプラットフォーム初期化を改善する方法の少なくとも一実施形態を示す簡略化したフロー図である。
【図４】図１の計算デバイスにおけるプラットフォーム初期化を改善する方法の少なくとも一実施形態を示す簡略化したフロー図である。
【図５】図１の計算デバイスのブートフローを示す簡略化したフロー図である。
【図６】従来システムのブートフローを示す簡略化したフロー図である。
【発明を実施するための形態】
【０００４】
本開示のコンセプトはいろいろな修正を施したり代替的形式を取ったりすることもできるが、その具体的な実施形態を図面において実施例で示し、ここに詳細に説明する。しかし、言うまでもなく、開示した具体的な形式に本開示を限定する意図ではなく、逆に、本発明は本開示と添付した特許請求の範囲に沿ったすべての修正、等価物及び代替物をカバーするものである。
【０００５】
本明細書において「ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ」、「ａｎ  ｅｍｂｏｄｉｍｅｎｔ」、「ａｎ  ｉｌｌｕｓｔｒａｔｉｖｅ  ｅｍｂｏｄｉｍｅｎｔ」などと言う場合、記載した実施形態が、ある機能、構造、または特徴を含むが、かならずしもすべての実施形態がその機能、構造、または特徴を含んでも含まなくてもよい。さらに、かかる文言は必ずしも同じ実施形態を参照しているとは限らない。さらに、ある機能、構造、または特徴をある実施形態について説明した場合、明示的に記載していようがいまいが、他の実施形態に関するそれらの機能、構造、または特徴に影響が及ぶことは、当業者には自明である。
【０００６】
開示した実施形態は、幾つかの場合には、ハードウェア、ファームウェア、ソフトウェア、またはそれらの任意の組み合わせで実装できる。開示の実施形態は、一時的又は非一時的な機械読み取り可能（例えば、コンピュータ読み取り可能）記憶媒体により担われ、又はそれに格納された（一以上のプロセッサにより読み取られ実行され得る）命令として実装することもできる。機械読み取り可能記憶媒体は、機械により読み取り可能な形式で情報を格納又は送信する任意のストレージデバイス、メカニズム、又はその他の物理的構造（例えば、揮発性又は不揮発性メモリ、メディアディスク、又はその他のメディアデバイス）として実施できる。
【０００７】
図中、幾つかの構造的又は方法フィーチャを具体的な構成及び／又は順序で示すかも知れない。しかし、言うまでもなく、かかる具体的な構成及び／又は順序は必須ではない場合がある。むしろ、幾つかの場合には、かかるフィーチャは、例示した図面に示したのとは異なる方法及び／又は順序で構成することもできる。また、ある図面に構造的又は方法フィーチャを含めることは、かかるフィーチャがすべての実施形態において必要であることを意味するのではなく、幾つかの実施形態では、含まれなくてもよいし、他のフィーチャと組み合わされてもよい。
【０００８】
ここで図１を参照するに、例示の実施形態において、プラットフォーム初期化を改善する計算デバイス１００は、計算デバイス１００のＢＩＯＳが、セキュリティ・コ・プロセッサからの応答を待つ間に、計算デバイス１００の他のコンポーネントの初期化プロセスを継続するように構成される。以下に詳しく説明するように、これにより、セキュリティ・コ・プロセッサに送った各セキュリティ・コ・プロセッサコマンドに対するセキュリティ・コ・プロセッサからの応答を待つことに関連する大きなレイテンシが無くなる。
【０００９】
計算デバイス１００は、プラットフォーム初期化を改善でき、ここに説明する機能を実行できる任意のタイプの計算デバイスとして実施できる。例えば、計算デバイス１００は、セルラー電話、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、パーソナルデジタルアシスタント、モバイルインターネットデバイス、デスクトップコンピュータ、サーバ、及び／又はその他の任意の計算／通信デバイスとして実施できる。図１に示したように、例示の計算デバイス１００は、プロセッサ１１０、入出力（Ｉ／Ｏ）サブシステム１１２、メモリ１１４、データストレージ１１６、一以上の周辺デバイス１１８、及びセキュリティ・コ・プロセッサ１２０を含む。もちろん、計算デバイス１００は、一実施形態では、一般的な計算デバイスに一般的に見つかるようなその他の又は追加的なコンポーネント（例えば、様々な入出力デバイス、通信回路など）を含み得る。また、幾つかの実施形態では、例示したコンポーネントのうち一以上は、他のコンポーネントに組み込まれていても良く、又はその一部を構成していても良い。例えば、メモリ１１４又はその部分は、幾つかの実施形態では、プロセッサ１１０に組み込まれても良い。
【００１０】
プロセッサ１１０は、ここに説明する機能を実行できる任意のタイプのプロセッサとして実施できる。例えば、このプロセッサは、シングル又はマルチコアプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、又はその他のプロセッサ又は処理／制御回路として実施できる。同様に、メモリ１１４は、ここに説明する機能を実行できる、任意のタイプの揮発性又は不揮発性メモリ又はデータストレージとして実施できる。動作中、メモリ１１４は、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、及びドライバなど、計算デバイス１００の動作中に用いられる様々なデータとソフトウェアを記憶できる。メモリ１１４は、Ｉ／Ｏサブシステム１１２を介してプロセッサ１１０に通信可能に結合している。Ｉ／Ｏサブシステム１１２は、プロセッサ１１０、メモリ１１４、及び計算デバイス１００のその他のコンポーネントとの入出力動作を容易にする回路及び／又はコンポーネントとして実施できる。例えば、Ｉ／Ｏサブシステム１１２は、メモリコントローラハブ、入出力制御ハブ、ファームウェアデバイス、通信リンク（すなわち、ポイント・ツー・ポイントリンク、バスリンク、ワイヤ、ケーブル、光ガイド、プリント回路板トレースなど）及び／又は入出力動作を容易にするその他のコンポーネント及びサブシステムとして、又はこれらを含むものとして実施できる。幾つかの実施形態では、Ｉ／Ｏサブシステム１１２は、システム・オン・チップ（ＳｏＣ）の一部を形成でき、単一の集積回路チップ上にプロセッサ１１０、メモリ１１４、及び計算デバイス１００のその他のコンポーネントとともに、組み込むことができる。
【００１１】
データストレージ１１６は、例えば、メモリデバイスと回路、メモリカード、ハードディスクドライブ、固体ドライブ、その他の記憶デバイスなどの、データを短期又は長期にわたり格納するように構成された任意のタイプのデバイスとして実施できる。計算デバイス１００の周辺デバイス１１８は、いくつの追加的周辺デバイスやインタフェースデバイスを含んでもよい。周辺デバイス１１８に含まれるデバイスは、例えば、計算デバイス１００のタイプ及び／又は意図された使用目的などに応じて決まってもよい。
【００１２】
セキュリティ・コ・プロセッサ１２０は、ここに説明する機能を実行できる任意のハードウェアコンポーネント又は回路として実施できる。幾つかの実施形態では、セキュリティ・コ・プロセッサ１２０は、トラステッド実行環境（ｔｒｕｓｔｅｄ  ｅｘｅｃｕｔｉｏｎ  ｅｎｖｉｒｏｎｍｅｎｔ）を確立できる。例えば、セキュリティ・コ・プロセッサ１２０は、トラステッドプラットフォームモジュール（ＴＰＭ）、マネジャビリティエンジン（ｍａｎａｇｅａｂｉｌｉｔｙ  ｅｎｇｉｎｅ、ＭＥ）、集中セキュリティエンジン（ｃｏｎｖｅｒｇｅｄ  ｓｅｃｕｒｉｔｙ  ｅｎｇｉｎｅ、ＣＳＥ）、又はその他の帯域外（ｏｕｔ−ｏｆ−ｂａｎｄ）プロセッサとして実施できる。幾つかの実施形態では、セキュリティ・コ・プロセッサ１２０は、独立して、プロセッサ１１０に対して帯域外で動作するように構成された帯域外プロセッサとして実施される。
【００１３】
図２を参照するに、使用時、計算デバイス１００は、プラットフォーム初期化を改善する環境２００を確立する。例示の実施形態における環境２００は、セキュリティ・コ・プロセッサ２０２と基本入出力システム（ＢＩＯＳ）モジュール２０４を含む。また、セキュリティ・コ・プロセッサドライバモジュール２０２は、さらに、アプリケーションプログラミングインタフェース２０６、タイマーモジュール２０８、及びセキュリティ・コ・プロセッサ割り込みハンドラ２１０を含む。セキュリティ・コ・プロセッサドライバモジュール２０２、ＢＩＯＳモジュール２０４、アプリケーションプログラムインタフェース２０６、タイマーモジュール２０８、及びセキュリティ・コ・プロセッサ割り込みハンドラ２１０はそれぞれハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせとして実施できる。
【００１４】
セキュリティ・コ・プロセッサドライバモジュール２０２は、セキュリティ・コ・プロセッサ１２０と計算デバイス１００のその他のコンポーネントとの間の通信を管理する。例えば、以下に詳しく説明するように、セキュリティ・コ・プロセッサドライバモジュール２０２は、セキュリティ・コ・プロセッサコマンドをセキュリティ・コ・プロセッサ１２０に実行その他の処理のために送信できる。セキュリティ・コ・プロセッサが応答するのを待つ（これには大きなレイテンシが伴う）替わりに、幾つかの実施形態では、以下により詳しく説明するように、セキュリティ・コ・プロセッサドライバモジュール２０２は、セキュリティ・コ・プロセッサ１２０の状態をクエリ又は調べ（ｐｏｌｌ）、セキュリティ・コ・プロセッサ１２０の応答が準備できたか判断し、もしまだであれば、その他の初期化を再開する。
【００１５】
ＢＩＯＳモジュール２０４は、計算デバイス１００のプラットフォームの初期化を開始できる。そのため、幾つかの実施形態では、ＢＩＯＳモジュール２０４は、計算デバイス１００の様々なコンポーネント（例えば、入出力デバイス）を初期化及び／又はテストする。また、ＢＩＯＳモジュール２０４は、セキュリティ・コ・プロセッサドライバモジュール２０２のアプリケーションプログラミングインタフェース（ＡＰＩ）を用いて、セキュリティ・コ・プロセッサドライバモジュール２０２と通信及びインターラクトできる。幾つかの実施形態では、ＢＩＯＳモジュール２０４は、セキュリティ・コ・プロセッサ１２０と直接通信せず、セキュリティ・コ・プロセッサドライバモジュール２０２を仲介として用いる。したがって、ＢＩＳＯモジュール２０４は、セキュリティ・コ・プロセッサコマンドを送りたい時、そのコマンドを、セキュリティ・コ・プロセッサ１２０に直接ではなく、セキュリティ・コ・プロセッサドライバモジュール２０２に送る。以下に説明するように、セキュリティ・コ・プロセッサ１２０は、そのセキュリティ・コ・プロセッサコマンドをコマンドリストに加える。同様に、セキュリティ・コ・プロセッサ１２０からの応答がセキュリティ・コ・プロセッサドライバモジュール２０２により受け取られた時、その応答は次いでＢＩＯＳモジュール２０４に転送される。もちろん、幾つかの実施形態では、一定のセキュリティ・コ・プロセッサコマンドはセキュリティ・コ・プロセッサ１２０からの応答を要求しないかも知れず、及び／又はセキュリティ・コ・プロセッサドライバモジュール２０２によりＢＩＯＳモジュール２０４に転送される必要は無いかも知れない。
【００１６】
タイマーモジュール２０８は、計算デバイス１００のプラットフォームの初期化の定期的な割り込みを確立するように構成されている。例えば、幾つかの実施形態では、タイマーモジュール２０８は、Ｈｉｇｈ  Ｐｒｅｃｉｓｉｏｎ  Ｅｖｅｎｔ  Ｔｉｍｅｒ  （ＨＰＥＴ）又はその他のハードウェアタイマーを含み得る。幾つかの実施形態では、タイマーモジュール２０８により確立される定期的割り込みは、計算デバイス１００のクロックが一定の値に達した時にいつでも生じるリアルタイム割り込みである。もちろん、他の実施形態では、タイマーモジュール２０８は、定期的な、又は周期が変化する（例えば、一組の期間で）割り込みを確立できる。例えば、割り込みが生じる頻度は、あるＢＩＯＳフェーズの間の方が他のＢＩＯＳフェーズよりも低い（すなわち、周期はＢＩＯＳフェーズに依存し得る）。割り込みが起こると、セキュリティ・コ・プロセッサ割り込みハンドラ２１０が起動され、制御が（ＢＩＯＳモジュール２０４から）そのセキュリティ・コ・プロセッサ割り込みハンドラ２１０に転送される。以下に詳しく説明するように、セキュリティ・コ・プロセッサ割り込みハンドラ２１０は、セキュリティ・コ・プロセッサ１２０の状態をチェックし（すなわち、前に送信したセキュリティ・コ・プロセッサコマンドに対する応答が準備できたか判断し）、準備できていれば、セキュリティ・コ・プロセッサ１２０から応答を得る。
【００１７】
コマンドリスト中にセキュリティ・コ・プロセッサコマンドがあれば、セキュリティ・コ・プロセッサ割り込みハンドラ２１０は、次のコマンドを、セキュリティ・コ・プロセッサ１２０に処理のため送り、制御がセキュリティ・コ・プロセッサ割り込みハンドラ２１０から返される。もちろん、上記の通り、応答はＢＩＯＳモジュール２０４に転送できる。幾つかの実施形態では、コマンドリストはセキュリティ・コ・プロセッサ１２０への送信のためにキューされたセキュリティ・コ・プロセッサのリストである。例えば、セキュリティ・コ・プロセッサ１２０がＴＰＭである実施形態では、コマンドリストはＢＩＯＳモジュール２０４からセキュリティ・コ・プロセッサドライバモジュール２０２に（又は、かかる一実施形態では、ＴＰＭドライバモジュールに）送られた、実行のためにキューに入れられるＴＰＭコマンドのリストである。幾つかの実施形態では、セキュリティ・コ・プロセッサコマンドは、実行のため一旦セキュリティ・コ・プロセッサ１２０に送られると、コマンドリストから削除される。言うまでもなく、コマンドリスト中のセキュリティ・コ・プロセッサコマンドの実行の順序は、実施形態に応じて変わり得る。例えば、一実施形態では、先入れ先出し（ＦＩＦＯ）ポリシーが実装され得る。他の一実施形態では、後入れ先出し（ＬＩＦＯ）ポリシーが使われても良い。さらに他の一実施形態では、より高度なポリシーを用いて、セキュリティ・コ・プロセッサコマンドの実行の優先順位を決定できる。コマンドリストは、任意の適切なデータ構造で、計算デバイス１００に格納され得る。
【００１８】
ここで図３と図４を参照して、使用中、計算デバイス１００は、プラットフォーム初期化を改善する方法３００を実行でき、これは例えば、ＢＩＯＳモジュール２０４が、セキュリティ・コ・プロセッサ１２０に送信された各セキュリティ・コ・プロセッサコマンドに対するセキュリティ・コ・プロセッサ１２０からの応答を待っている間に、計算デバイス１００の他のコンポーネントの初期化プロセスを継続することによる。例示の方法３００は、図３のブロック３０２で始まり、計算デバイス１００がパワーオンされたか、計算デバイス１００が判断する。計算デバイス１００は、一旦パワーオンされると、ブロック３０４においてセキュリティ・コ・プロセッサ割り込みハンドラ２１０を初期化する。そうする時、ブロック３０６において、計算デバイス１００はタイマーを初期化する。すなわち、プラットフォームの初期化の定期的割り込みが上記の通り確立される。また、ブロック３０８において、計算デバイス１００はセキュリティ・コ・プロセッサコマンドリストを初期化する（例えば、適当なデータ構造を確立する）。
【００１９】
ブロック３１０において、計算デバイス１００はプラットフォーム初期化を開始する。例えば、計算デバイス１００は、計算デバイス１００の様々なコンポーネント（例えば、様々な入出力コンポーネント）の初期化及び／又はテストを開始できる。ブロック３１２において、計算デバイス１００は、セキュリティ・コ・プロセッサ１２０に送信するため、ＢＩＯＳモジュール２０４からのセキュリティ・コ・プロセッサコマンドがセキュリティ・コ・プロセッサドライバモジュール２０２により受け取られたか判断する。受け取られていれば、計算デバイス１００は、ブロック３１４において、そのセキュリティ・コ・プロセッサコマンドをセキュリティ・コ・プロセッサコマンドリストに加え、プラットフォーム初期化を継続する。ブロック３１６において、計算デバイス１００は、セキュリティ・コ・プロセッサ割り込み（例えば、定期的な割り込み）がトリガーされたか判断する。計算デバイス１００が、ブロック３１２において、ＢＩＯＳモジュール２０４からセキュリティ・コ・プロセッサコマンドを受け取っていないと判断した場合、方法３００はブロック３１６に直接進む。セキュリティ・コ・プロセッサ割り込みがトリガーされると、ブロック３１８において、計算デバイス１００は、セキュリティ・コ・プロセッサ１２０の状態をチェックする。例えば、計算デバイス１００は、前に送信したセキュリティ・コ・プロセッサコマンドに対する応答がセキュリティ・コ・プロセッサ１２０からセキュリティ・コ・プロセッサドライバモジュール２０２に送信するため入手可能か判断する。また、計算デバイス１００がブロック３１６においてセキュリティ・コ・プロセッサ割り込みがトリガーされていないと判断した場合、方法３００はブロック３３０に進み、以下により詳しく説明するように、非セキュリティ・コ・プロセッサプラットフォーム初期化が完了したか、計算デバイス１００が判断する。言い換えると、幾つかの実施形態では、計算デバイス１００のセキュリティ・コ・プロセッサ割り込みハンドラ２１０は、セキュリティ・コ・プロセッサ割り込みの発生に応じてのみ、方法３００のブロック３１８−３２８で説明した機能を実行する。
【００２０】
ブロック３１８においてセキュリティ・コ・プロセッサ１２０の状態をチェックした後、方法３００はブロック３２０に進む（図４を参照）。ブロック３２０においてセキュリティ・コ・プロセッサからの応答が入手可能かを計算デバイス１００が判断すると、計算デバイス１００のセキュリティ・コ・プロセッサドライバモジュール２０２はブロック３２２において、セキュリティ・コ・プロセッサ１２０からセキュリティ・コ・プロセッサ応答を受け取る。しかし、応答がまだであると計算デバイス１００が判断すると、方法３００はブロック３３０に進む。ブロック３２４において、セキュリティ・コ・プロセッサドライバモジュール２０２は受け取った応答をＢＩＯＳモジュール２０４に転送する。幾つかの実施形態では、セキュリティ・コ・プロセッサドライバモジュール２０２は、セキュリティ・コ・プロセッサ応答が入手可能（ａｖａｉｌａｂｌｅ）であることをＢＩＯＳ２０４に通知するイベントをシグナリングする。かかる実施形態では、ＢＩＯＳモジュール２０４は、応答が必要であれば、イベントコールバック手順を介してセキュリティ・コ・プロセッサ応答を読み出しできる。
【００２１】
ブロック３２６において、計算デバイス１００は、セキュリティ・コ・プロセッサコマンドリストが空か判断する。すなわち、計算デバイス１００は、セキュリティ・コ・プロセッサ１２０による実行を待っているセキュリティ・コ・プロセッサコマンドがあるか判断する。コマンドリストが空であれば、方法３００はブロック３３０に進む。しかし、コマンドリストが空でなければ、ブロック３２８において、セキュリティ・コ・プロセッサドライバモジュール２０２は、次のセキュリティ・コ・プロセッサコマンドをセキュリティ・コ・プロセッサ１２０に実行のため送る。上記の通り、コマンドリスト中のセキュリティ・コ・プロセッサコマンドの実行の優先度は、実装された具体的なポリシーに応じて変化してもよい。ブロック３３０において、計算デバイス１００は、非セキュリティ・コ・プロセッサプラットフォーム初期化が完了したか判断する。言い換えると、計算デバイス１００は、セキュリティ・コ・プロセッサコマンド（すなわち、セキュリティ・コ・プロセッサコマンドリスト中のコマンド）がプラットフォーム初期化を完了するために実行すべき残っているコマンドであるか判断する。もちろん、幾つかの実施形態では、セキュリティ・コ・プロセッサ１２０からのセキュリティ・コ・プロセッサコマンドへの応答に依存する、ＢＩＯＳモジュール２０４により実行される別のコマンドがあってもよい。かかる一実施形態では、計算デバイス１００は、例えば、セキュリティ・コ・プロセッサコマンドが現在実行され得るコマンドであるか判断できる。
【００２２】
非セキュリティ・コ・プロセッサプラットフォーム初期化が完了すると、計算デバイス１００はブロック３３２においてタイマーを停止する。すなわち、計算デバイス１００は、プラットフォーム初期化の割り込みを停止する。  ブロック３３４において、計算デバイス１００は、セキュリティ・コ・プロセッサコマンドリストが空か判断する。言うまでもなく、非セキュリティ・コ・プロセッサプラットフォーム初期化が完了し、コマンドリスト中に実行するセキュリティ・コ・プロセッサコマンドが無ければ、プラットフォーム初期化は完了し、計算デバイス１００のオペレーティングシステムがここでブートされ得る。従って、ブロック３３８において、計算デバイス１００はオペレーティングシステムをブートする。もちろん、幾つかの実施形態では、計算デバイス１００は二以上のオペレーティングシステムを含んでいてもよい。このように、デフォルトオペレーティングシステムがブートされてもよいし、計算デバイス１００のユーザはブートするオペレーティングシステムを選択するオプションを与えられてもよいし、他のブートポリシーを実装してもよい。
【００２３】
計算デバイス１００は、ブロック３３４において、セキュリティ・コ・プロセッサコマンドリストが空であると判断すると、ブロック３３６において、残りのセキュリティ・コ・プロセッサコマンドを実行する。例えば、セキュリティ・コ・プロセッサドライバモジュール２０２は、コマンドリストに残っている各セキュリティ・コ・プロセッサコマンドをセキュリティ・コ・プロセッサに実行のため順番に送信して、次を送る前に送信した各コマンドへの応答を待ち、その応答をＢＩＯＳモジュール２０４に転送して、初期化を完了する従来のアプローチを踏襲してもよい。上記の通り、幾つかの実施形態では、一以上の非セキュリティ・コ・プロセッサコマンドは、実行するため、セキュリティ・コ・プロセッサコマンドへの応答に依存し得る。かかる一実施形態では、非セキュリティ・コ・プロセッサコマンドが（例えば、セキュリティ・コ・プロセッサ１２０からの応答により）ＢＩＯＳモジュール２０４により実行可能となれば、方法３００はブロック３３０に戻り、非セキュリティ・コ・プロセッサプラットフォーム初期化が完了したか、計算デバイス１００が判断する。計算デバイス１００はセキュリティ・コ・プロセッサ割り込みに関連するタイマーを再度イネーブルしてもよい。言い換えると、かかる一実施形態では、計算デバイス１００は、セキュリティ・コ・プロセッサ１２０からのセキュリティ・コ・プロセッサコマンドへの応答を待つ間に、プラットフォームの非セキュリティ・コ・プロセッサ初期化を許す手順を再開できる。ブロック３３０に戻り、非セキュリティ・コ・プロセッサ初期化が完了していないと計算デバイス１００が判断すると、方法３００は図３のブロック３１２に戻り、計算デバイス１００は、セキュリティ・コ・プロセッサコマンドがＢＩＯＳモジュール２０４からセキュリティ・コ・プロセッサドライバモジュール２０２により受け取られたか判断する。
【００２４】
図５と図６をここで参照して、プラットフォーム初期化を改善する方法３００を実装する計算デバイス１００のブートフロー５０２を図５に示し、一方、プラットフォーム初期化をする従来の方法を実装した計算デバイス１００のブートフローを図６に示した。図５に示すように、ブートフロー５０２は、ここに説明したように、計算デバイス１００のプラットフォーム初期化を実装した時、概して連続的である。上記の通り、プラットフォーム初期化時に、ＢＩＯＳモジュール２０４がセキュリティ・コ・プロセッサコマンド５０４にぶつかる（ｅｎｃｏｕｎｔｅｒ）と、コマンド５０４はセキュリティ・コ・プロセッサ１２０による実行のためにセキュリティ・コ・プロセッサドライバモジュール２０２に送信される。コマンド５０４は実行を待つコマンド５０４のコマンドリストに加えられ、ＢＩＯＳモジュール２０４はセキュリティ・コ・プロセッサ１２０に関係しないプラットフォーム初期化を続ける。（例えば、所与の期間の経過により）確立されたセキュリティ・コ・プロセッサ割り込みがトリガーされると、セキュリティ・コ・プロセッサ割り込みハンドラ２１０は、セキュリティ・コ・プロセッサ１２０が前に送ったコマンド５０４に対する応答を有するか判断し、そうであれば、その応答を受け取り、その応答をＢＩＯＳモジュール２０４に転送し、コマンドリスト中の次のコマンド５０４をセキュリティ・コ・プロセッサ１２０に実行のため送る。このように、セキュリティ・コ・プロセッサ１２０の初期化に関連するレイテンシが最小になり、そうでなくても低減される。しかし、図６に例示したように、セキュリティ・コ・プロセッサ１２０を初期化する従来の方法は、送信した各コマンド６０４に対するセキュリティ・コ・プロセッサからの応答を待つことに関連する大きな時間的遅延が生じる。具体的に、ＢＩＯＳモジュール２０４がセキュリティ・コ・プロセッサコマンド６０４にぶつかると（ｅｎｃｏｕｎｔｅｒ）、コマンド６０４はセキュリティ・コ・プロセッサ１２０に送信される。ＢＩＯＳモジュール２０４は、送信したコマンド６０４に対するセキュリティ・コ・プロセッサ１２０からの応答を待ってから、プラットフォーム初期化を続けなければならない。セキュリティ・コ・プロセッサ１２０の初期化は、一般的、複数の（例えば、２０以上の）セキュリティ・コ・プロセッサコマンド６０４の実行を含むので、従来のプラットフォーム初期化を実装した時のレイテンシは大きい。例えば、ＴＰＭの場合、ＰＥＩ  （Ｐｒｅ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ）  ＢＩＯＳフェーズ中に「ＴｐｍＳｅｌｆＴｅｓｔ」コマンドをＴＯＭに送らないとならない。これは、ＴＯＭから応答を受け取るまでに長い時間がかかる。
【００２５】
実施例
ここに開示するデバイス、システム、及び方法の例を以下に提供する。デバイス、システム及び方法の実施形態は、以下に説明する一以上の例及びその任意の組み合わせを含み得る。
【００２６】
例１は、プラットフォーム初期化を改善する計算デバイスであって、送られたセキュリティ・コ・プロセッサコマンドを実行するセキュリティ・コ・プロセッサと、前記計算デバイスのプラットフォームの初期化を開始する基本入出力システムモジュールと、前記基本入出力システムモジュールからのセキュリティ・コ・プロセッサコマンドに応じて、セキュリティ・コ・プロセッサコマンドをコマンドリストに加えるセキュリティ・コ・プロセッサドライバモジュールと、前記プラットフォームの初期化の定期的割り込みを確立するタイマーモジュールとを有し、前記セキュリティ・コ・プロセッサドライバモジュールは、さらに、前記定期的割り込みの発生に応じて、（ｉ）前に送られたセキュリティ・コ・プロセッサコマンドに対するセキュリティ・コ・プロセッサ応答の入手可能性（ａｖａｉｌａｂｉｌｉｔｙ）に関し前記セキュリティ・コ・プロセッサにクエリし、（ｉｉ）入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、前記入手可能なセキュリティ・コ・プロセッサ応答を前記基本入出力システムモジュールに転送する。
【００２７】
実施例２は実施例１の主題を含み、前記セキュリティ・コ・プロセッサドライバモジュールは、さらに、前記入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、前記コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送る。
【００２８】
実施例３は実施例１の主題を含み、前記セキュリティ・コ・プロセッサはトラステッドプラットフォームモジュールを有する。
【００２９】
実施例４は実施例１−３のいずれかの主題を含み、前記セキュリティ・コ・プロセッサはマネジアビリティエンジンを有する。
【００３０】
実施例５は実施例１−４のいずれかの主題を含み、前記セキュリティ・コ・プロセッサはコンバージド・セキュリティエンジンを有する。
【００３１】
実施例６は実施例１−５のいずれかの主題を含み、前記セキュリティ・コ・プロセッサは帯域外プロセッサを有する。
【００３２】
実施例７は実施例１−６のいずれかの主題を含み、前記基本入出力システムモジュールは、さらに、前記定期的割り込みからの戻りに応じて、前記プラットフォームの初期化を継続する。
【００３３】
実施例８は実施例１−７のいずれかの主題を含み、前記タイマーモジュールは、さらに、前記セキュリティ・コ・プロセッサコマンドが関与しない初期化プロシージャの完了に応じて、初期化の定期的割り込みを中断する。
【００３４】
実施例９は実施例１−８のいずれかの主題を含み、前記セキュリティ・コ・プロセッサドライバモジュールは、さらに、前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、（ｉ）前記コマンドリスト中に残っている各セキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送り、（ｉｉ）残っているセキュリティ・コ・プロセッサコマンドの一つに対する入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、残っているセキュリティ・コ・プロセッサコマンドの各々について、入手可能なセキュリティ・コ・プロセッサ応答を、前記基本入出力システムモジュールに転送する。
【００３５】
実施例１０は実施例１−９のいずれかの主題を含み、前記基本入出力システムモジュールは、さらに、初期化プロシージャの完了に応じて、前記計算デバイスのオペレーティングシステムをブートする。
【００３６】
実施例１１は実施例１−１０のいずれかの主題を含み、前記コマンドリストは先入れ先出しシステムに従う。
【００３７】
実施例１２は実施例１−１１のいずれかの主題を含み、前記コマンドリストは後入れ先出しシステムに従う。
【００３８】
実施例１３は、計算デバイスのプラットフォームの初期化を改善する方法を含み、該方法は、前記計算デバイスの基本入出力システムを用いて前記計算デバイスのプラットフォームの初期化を開始するステップと、前記計算デバイスのセキュリティ・コ・プロセッサドライバで、前記基本入出力システムモジュールから、前記計算デバイスのセキュリティ・コ・プロセッサにより実行されるセキュリティ・コ・プロセッサコマンドを受け取るステップと、セキュリティ・コ・プロセッサコマンドの受け取りに応じて、前記セキュリティ・コ・プロセッサドライバで、前記セキュリティ・コ・プロセッサコマンドをコマンドリストに加えるステップと、前記計算デバイスで、前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記セキュリティ・コ・プロセッサに、前に送られたセキュリティ・コ・プロセッサ応答へのセキュリティ・コ・プロセッサ応答の入手可能性に関しクエリし、（ｉｉ）入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、入手可能なセキュリティ・コ・プロセッサ応答を前記基本入出力システムモジュールに転送するステップとを有する。
【００３９】
実施例１４は実施例１３の主題を含み、前記プラットフォームの初期化に割り込むステップは、入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、前記コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送るステップを有する。
【００４０】
実施例１５は実施例１３及び１４のどちらかの主題を含み、前記セキュリティ・コ・プロセッサコマンドを受け取るステップは、前記計算デバイスのトラステッドプラットフォームモジュールで、前記基本入出力システムから、前記計算デバイスのトラステッドプラットフォームモジュールにより実行されるトラステッドプラットフォームモジュールコマンドを受け取るステップを有し、前記セキュリティ・コ・プロセッサコマンドを前記コマンドリストに加えるステップは、前記トラステッドプラットフォームモジュールコマンドの受け取りに応じて、前記トラステッドプラットフォームモジュールで、前記トラステッドプラットフォームモジュールコマンドをコマンドリストに加えるステップを有し、前記プラットフォームの初期化に割り込むステップは、前記計算デバイスで、前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記トラステッドプラットフォームモジュールに、前に送ったトラステッドプラットフォームモジュールコマンドに対するトラステッドプラットフォームモジュール応答の入手可能性に関しクエリし、（ｉｉ）入手可能なトラステッドプラットフォームモジュール応答の受け取りに応じて、入手可能なトラステッドプラットフォームモジュール応答を前記基本入出力システムモジュールに転送するステップを有する。
【００４１】
実施例１６は実施例１３−１５のいずれかの主題を含み、前記プラットフォームの初期化に割り込むステップは、入手可能なトラステッドプラットフォームモジュール応答の受け取りに応じて、前記コマンドリスト中の次のトラステッドプラットフォームモジュールコマンドを前記トラステッドプラットフォームモジュールに送るステップを有する。
【００４２】
実施例１７は実施例１３−１６のいずれかの主題を含み、前記セキュリティ・コ・プロセッサコマンドを受け取るステップは、前記計算デバイスのマネジアビリティエンジンで、前記基本入出力システムから、前記計算デバイスのマネジアビリティエンジンにより実行されるマネジアビリティエンジンコマンドを受け取るステップを有し、前記セキュリティ・コ・プロセッサコマンドを前記コマンドリストに加えるステップは、前記マネジアビリティエンジンコマンドの受け取りに応じて、前記マネジアビリティエンジンで、前記マネジアビリティエンジンコマンドをコマンドリストに加えるステップを有し、前記プラットフォームの初期化に割り込むステップは、前記計算デバイスで、前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記マネジアビリティエンジンに、前に送ったマネジアビリティエンジンコマンドに対するマネジアビリティエンジン応答の入手可能性に関しクエリし、（ｉｉ）入手可能なマネジアビリティエンジン応答の受け取りに応じて、入手可能なマネジアビリティエンジン応答を前記基本入出力システムモジュールに転送するステップを有する。
【００４３】
実施例１８は実施例１３−１７のいずれかの主題を含み、前記セキュリティ・コ・プロセッサコマンドを受け取るステップは、前記計算デバイスのコンバージド・セキュリティエンジンで、前記基本入出力システムから、前記計算デバイスのコンバージド・セキュリティエンジンにより実行されるコンバージド・セキュリティエンジンコマンドを受け取るステップを有し、前記セキュリティ・コ・プロセッサコマンドを前記コマンドリストに加えるステップは、前記コンバージド・セキュリティエンジンコマンドの受け取りに応じて、前記コンバージド・セキュリティエンジンで、前記コンバージド・セキュリティエンジンコマンドをコマンドリストに加えるステップを有し、前記プラットフォームの初期化に割り込むステップは、前記計算デバイスで、前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記コンバージド・セキュリティエンジンに、前に送ったコンバージド・セキュリティエンジンコマンドに対するコンバージド・セキュリティエンジン応答の入手可能性に関しクエリし、（ｉｉ）入手可能なコンバージド・セキュリティエンジン応答の受け取りに応じて、入手可能なコンバージド・セキュリティエンジン応答を前記基本入出力システムモジュールに転送するステップを有する。
【００４４】
実施例１９は実施例１３−１８のいずれかの主題を含み、前記計算デバイスにおいて、前記定期的割り込みから戻るのに応じて、前記プラットフォームの初期化を継続するステップをさらに有する。
【００４５】
実施例２０は実施例１３−１９のいずれかの主題を含み、前記計算デバイスにおいて、前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、初期化の定期的割り込みを中断するステップをさらに有する。
【００４６】
実施例２１は実施例１３−２０のいずれかの主題を含み、前記計算デバイスで、前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、コマンドリスト中に残っている各セキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送るステップと、前記計算デバイスで、残っているセキュリティ・コ・プロセッサコマンドの一つに対する入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、残っているセキュリティ・コ・プロセッサコマンドの各々について、入手可能なセキュリティ・コ・プロセッサ応答を前記基本入出力システムモジュールに転送するステップとをさらに有する。
【００４７】
実施例２２は実施例１３−２１のいずれかの主題を含み、前記計算デバイスにおいて、前記初期化プロシージャの完了に応じて、前記計算デバイスのオペレーティングシステムをブートするステップをさらに有する。
【００４８】
実施例２３は実施例１３−２２のいずれかの主題を含み、コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドをセキュリティ・コ・プロセッサに送るステップは、前記コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドを、先入れ先出しで、セキュリティ・コ・プロセッサに送るステップを有する。
【００４９】
実施例２４は実施例１３−２３のいずれかの主題を含み、コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドをセキュリティ・コ・プロセッサに送るステップは、前記コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドを、後入れ先出しで、セキュリティ・コ・プロセッサに送るステップを有する。
【００５０】
実施例２５は計算デバイスを含み、該計算デバイスは、プロセッサと、前記プロセッサにより実行されたとき、前記プロセッサに、実施例１３−２４いずれかに記載の方法を実行させる複数の命令を格納したメモリとを有する。
【００５１】
実施例２６は、実行されると、計算デバイスに実施例１３乃至２４いずれかに記載の方法を実行させる複数の命令を格納した一以上の機械読み取り可能記憶媒体を含む。
【００５２】
実施例２７はプラットフォーム初期化を改善する計算デバイスを含み、該計算デバイスは、前記計算デバイスの基本入出力システムを用いて前記計算デバイスのプラットフォームの初期化を開始する手段と、前記計算デバイスのセキュリティ・コ・プロセッサドライバで、前記基本入出力システムモジュールから、前記計算デバイスのセキュリティ・コ・プロセッサにより実行されるセキュリティ・コ・プロセッサコマンドを受け取る手段と、セキュリティ・コ・プロセッサコマンドの受け取りに応じて、前記セキュリティ・コ・プロセッサドライバで、前記セキュリティ・コ・プロセッサコマンドをコマンドリストに加える手段と、前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記セキュリティ・コ・プロセッサに、前に送られたセキュリティ・コ・プロセッサ応答へのセキュリティ・コ・プロセッサ応答の入手可能性に関しクエリし、（ｉｉ）入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、入手可能なセキュリティ・コ・プロセッサ応答を前記基本入出力システムモジュールに転送する手段とを有する。
【００５３】
実施例２８は実施例２７の主題を含み、前記プラットフォームの初期化に割り込む手段は、入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、前記コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送る手段を有する。
【００５４】
実施例２９は実施例２７及び２８のどちらかの主題を含み、前記セキュリティ・コ・プロセッサコマンドを受け取る手段は、前記計算デバイスのトラステッドプラットフォームモジュールで、前記基本入出力システムから、前記計算デバイスのトラステッドプラットフォームモジュールにより実行されるトラステッドプラットフォームモジュールコマンドを受け取る手段を有し、前記セキュリティ・コ・プロセッサコマンドを前記コマンドリストに加える手段は、前記トラステッドプラットフォームモジュールコマンドの受け取りに応じて、前記トラステッドプラットフォームモジュールで、前記トラステッドプラットフォームモジュールコマンドをコマンドリストに加える手段を有し、前記プラットフォームの初期化に割り込む手段は、前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記トラステッドプラットフォームモジュールに、前に送ったトラステッドプラットフォームモジュールコマンドに対するトラステッドプラットフォームモジュール応答の入手可能性に関しクエリし、（ｉｉ）入手可能なトラステッドプラットフォームモジュール応答の受け取りに応じて、入手可能なトラステッドプラットフォームモジュール応答を前記基本入出力システムモジュールに転送する手段を有する。
【００５５】
実施例３０は実施例２７−２９のいずれかの主題を含み、前記プラットフォームの初期化に割り込む手段は、入手可能なトラステッドプラットフォームモジュール応答の受け取りに応じて、前記コマンドリスト中の次のトラステッドプラットフォームモジュールコマンドを前記トラステッドプラットフォームモジュールに送る手段を有する。
【００５６】
実施例３１は実施例２７−３０のいずれかの主題を含み、前記セキュリティ・コ・プロセッサコマンドを受け取る手段は、前記計算デバイスのマネジアビリティエンジンで、前記基本入出力システムから、前記計算デバイスのマネジアビリティエンジンにより実行されるマネジアビリティエンジンコマンドを受け取る手段を有し、前記セキュリティ・コ・プロセッサコマンドを前記コマンドリストに加える手段は、前記マネジアビリティエンジンコマンドの受け取りに応じて、前記マネジアビリティエンジンで、前記マネジアビリティエンジンコマンドをコマンドリストに加える手段を有し、前記プラットフォームの初期化に割り込む手段は、前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記マネジアビリティエンジンに、前に送ったマネジアビリティエンジンコマンドに対するマネジアビリティエンジン応答の入手可能性に関しクエリし、（ｉｉ）入手可能なマネジアビリティエンジン応答の受け取りに応じて、入手可能なマネジアビリティエンジン応答を前記基本入出力システムモジュールに転送する手段を有する。
【００５７】
実施例３２は実施例２７−３１のいずれかの主題を含み、前記セキュリティ・コ・プロセッサコマンドを受け取る手段は、前記計算デバイスのコンバージド・セキュリティエンジンで、前記基本入出力システムから、前記計算デバイスのコンバージド・セキュリティエンジンにより実行されるコンバージド・セキュリティエンジンコマンドを受け取る手段を有し、前記セキュリティ・コ・プロセッサコマンドを前記コマンドリストに加える手段は、前記コンバージド・セキュリティエンジンコマンドの受け取りに応じて、前記コンバージド・セキュリティエンジンで前記コンバージド・セキュリティエンジンコマンドをコマンドリストに加える手段を有し、前記プラットフォームの初期化に割り込む手段は、前記計算デバイスで、前記プラットフォームの初期化に定期的に割り込み、（ｉ）前記コンバージド・セキュリティエンジンに、前に送ったコンバージド・セキュリティエンジンコマンドに対するコンバージド・セキュリティエンジン応答の入手可能性に関しクエリし、（ｉｉ）入手可能なコンバージド・セキュリティエンジン応答の受け取りに応じて、入手可能なコンバージド・セキュリティエンジン応答を前記基本入出力システムモジュールに転送する手段を有する。
【００５８】
実施例３３は実施例２７−３２のいずれかの主題を含み、前記定期的割り込みからの戻りに応じて前記プラットフォームの初期化を継続する手段をさらに有する。
【００５９】
実施例３４は実施例２７−３３のいずれかの主題を含み、前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、初期化の定期的割り込みを中断する手段をさらに有する。
【００６０】
実施例３５は実施例２７−３４のいずれかの主題を含み、前記セキュリティ・コ・プロセッサコマンドを含まない初期化プロシージャの完了に応じて、コマンドリスト中に残っている各セキュリティ・コ・プロセッサコマンドを前記セキュリティ・コ・プロセッサに送る手段と、残っているセキュリティ・コ・プロセッサコマンドの一つに対する入手可能なセキュリティ・コ・プロセッサ応答の受け取りに応じて、残っているセキュリティ・コ・プロセッサコマンドの各々について、入手可能なセキュリティ・コ・プロセッサ応答を前記基本入出力システムモジュールに転送する手段とをさらに有する。
【００６１】
実施例３６は実施例２７−３５のいずれかの主題を含み、初期化手順の完了に応じて計算デバイスのオペレーティングシステムをブートする手段をさらに有する。
【００６２】
実施例３７は実施例２７−３６のいずれかの主題を含み、コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドをセキュリティ・コ・プロセッサに送る手段は、前記コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドを、先入れ先出しで、セキュリティ・コ・プロセッサに送る手段を有する。
【００６３】
実施例３８は実施例２７−３７のいずれかの主題を含み、コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドをセキュリティ・コ・プロセッサに送る手段は、前記コマンドリスト中の次のセキュリティ・コ・プロセッサコマンドを、後入れ先出しで、セキュリティ・コ・プロセッサに送る手段を有する。
【図１】
0006050528.tif 000002
【図２】
0006050528.tif 000003
【図３】
0006050528.tif 000004
【図４】
0006050528.tif 000005
【図５】
0006050528.tif 000006
【図６】
0006050528.tif 000007