(57)【特許請求の範囲】
【請求項１】
ＣＰＵ、第１のメモリ、及び第２のメモリを有するコンピュータデバイスにおいてコードとデータとを保護する方法であって、
前記第１のメモリにあるオペレーティングシステムと同じアクセスレベルを有するファームウェアの認証を行う段階と、
前記認証を行う段階において有効と判断されたファームウェアをオブジェクト記述子に関連づける段階と、
前記認証を行う段階において有効と判断された前記ファームウェアを前記第２のメモリに格納する段階と、
非ファームウェアエージェントが、前記ファームウェアが格納されている前記第２のメモリにアクセスを試みている場合に、前記非ファームウェアエージェントがアクセスを試みている前記ファームウェアに関連づけられた前記オブジェクト記述子が含む、前記第２のメモリへのアクセス権に関連する情報に基づいて、前記非ファームウェアエージェントが前記第２のメモリにアクセスできるか否かを判断する段階と、
前記非ファームウェアエージェントが前記第２のメモリにアクセス可能であるとの判断に応じて、前記非ファームウェアエージェントから前記第２のメモリへのアクセスを許可する段階と、
前記非ファームウェアエージェントが前記第２のメモリにアクセス可能ではないとの判断に応じて、前記非ファームウェアエージェントから前記第２のメモリへのアクセスを阻止する段階と、
を備え、
前記認証を行う段階、前記関連づける段階、前記格納する段階、前記判断する段階、前記許可する段階、前記阻止する段階、及び前記阻止する段階は、少なくとも部分的には、前記ＣＰＵを用いて前記コンピュータデバイスのファームウェアシステムによって実行される、方法。
【請求項２】
前記認証を行う段階が、ブート処理中に行われる、請求項１に記載の方法。
【請求項３】
前記認証を行う段階が、プレブート処理中に行われる、請求項１に記載の方法。
【請求項４】
ＴＣＢ（トラステッド・コンピューティング・ベース）の一部であるコンポーネントが前記認証を行う、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記コンポーネントが、前記コンピュータデバイスのシステムボードの読み出し専用メモリ（ＲＯＭ）に予め格納される、請求項４に記載の方法。
【請求項６】
前記認証はデジタル署名によって行われる、請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記非ファームウェアエージェントは、誤ったコーラーおよび悪意のあるコーラーのうちの１つを含む請求項１から６のいずれか１項に記載の方法。
【請求項８】
前記第２のメモリは、前記オブジェクト記述子であるか否かを示すタグを含む請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記非ファームウェアエージェントが前記第２のメモリにアクセスを試みている場合に、前記第２のメモリへのアクセス権違反があると、インタラプトを生成する段階をさらに備える、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
前記第２のメモリが利用可能であるか否かを、前記ＣＰＵを用いて前記コンピュータデバイスの前記ファームウェアシステムによって、判断する段階と、
前記非ファームウェアエージェントが前記第２のメモリにアクセスできるか否かを判断する段階の前に、前記ＣＰＵを用いて前記コンピュータデバイスの前記ファームウェアシステムによって、１つ以上の呼び出しポイントを前記第１のメモリから前記第２のメモリに供給する段階とをさらに備え、
前記オブジェクト記述子は、前記第２のメモリへのポインタを含む、請求項１から９のいずれか一項に記載の方法。
【請求項１１】
第１のメモリおよび第２のメモリと、
前記第１のメモリ及び前記第２のメモリに結合されるプロセッサと、
前記第１のメモリ及び第２のメモリの少なくとも一方に格納されたファームウェアシステムと、
を含むシステムであって、
前記ファームウェアシステムは、前記プロセッサによって実行された場合に前記システムに、
前記第１のメモリにあるオペレーティングシステムと同じアクセスレベルを有するファームウェアの認証を行わせ、
有効と判断されたファームウェアをオブジェクト記述子に関連づけ、
有効と判断された前記ファームウェアを前記第２のメモリに格納させ、
非ファームウェアエージェントが、前記ファームウェアが格納されている前記第２のメモリにアクセスを試みている場合に、前記非ファームウェアエージェントがアクセスを試みている前記ファームウェアに関連づけられた前記オブジェクト記述子が含む、前記第２のメモリへのアクセス権に関連する情報に基づいて、前記非ファームウェアエージェントが前記第２のメモリにアクセスできるか否かを判断させ、
前記非ファームウェアエージェントが前記第２のメモリにアクセス可能であるとの判断に応じて、前記非ファームウェアエージェントから前記第２のメモリへのアクセスを許可させ、
前記非ファームウェアエージェントが前記第２のメモリにアクセス可能ではないとの判断に応じて、前記非ファームウェアエージェントから前記第２のメモリへのアクセスを阻止させる、システム。
【請求項１２】
前記認証がブート処理中に行われる、請求項１１に記載のシステム。
【請求項１３】
前記認証がプレブート処理中に行われる、請求項１１に記載のシステム。
【請求項１４】
ＴＣＢ（トラステッド・コンピューティング・ベース）の一部であるコンポーネントが前記認証を行う、請求項１１から１３のいずれか一項に記載のシステム。
【請求項１５】
前記コンポーネントが、前記システムのシステムボードの読み出し専用メモリ（ＲＯＭ）に予め格納される、請求項１４に記載のシステム。
【請求項１６】
前記認証はデジタル署名によって行われる、請求項１１から１５のいずれか一項に記載のシステム。
【請求項１７】
前記非ファームウェアエージェントは、誤ったコーラーおよび悪意のあるコーラーのうちの１つを含む、請求項１１から１６のいずれか一項に記載のシステム。
【請求項１８】
前記第２のメモリは、前記オブジェクト記述子であるか否かを示すタグを含む、請求項１１から１７のいずれか一項に記載のシステム。
【請求項１９】
前記ファームウェアシステムは、前記非ファームウェアエージェントが前記第２のメモリにアクセスを試みている場合に、前記第２のメモリへのアクセス権違反があると、インタラプトを生成する、請求項１１から１８のいずれか一項に記載のシステム。
【請求項２０】
前記ファームウェアシステムは、前記第２のメモリが利用可能であるか否かを判断し、前記第２のメモリが利用可能である場合に、１つ以上の呼び出しポイントを前記第１のメモリから前記第２のメモリに供給し、
前記オブジェクト記述子は、前記第２のメモリへのポインタを含む、請求項１１から１９のいずれか一項に記載のシステム。
【請求項２１】
複数の命令が格納される機械可読記憶媒体であって、
前記複数の命令は、ＣＰＵ、第１のメモリ及び第２のメモリを有する機械に実行されると、当該機械に複数のオペレーションを実行可能なファームウェアシステムを実装し、
前記ファームウェアシステムは、
前記第１のメモリにあるオペレーティングシステムと同じアクセスレベルを有するファームウェアの認証を行うオペレーションと、
有効と判断されたファームウェアをオブジェクト記述子に関連づけるオペレーションと、
有効と判断された前記ファームウェアを前記第２のメモリに格納するオペレーションと、
非ファームウェアエージェントが、前記ファームウェアが格納されている前記第２のメモリにアクセスを試みている場合に、前記非ファームウェアエージェントがアクセスを試みている前記ファームウェアに関連づけられた前記オブジェクト記述子が含む、前記第２のメモリへのアクセス権に関連する情報に基づいて、前記非ファームウェアエージェントが前記第２のメモリにアクセスできるか否かを判断するオペレーションと、
前記非ファームウェアエージェントが前記第２のメモリにアクセス可能であるとの判断に応じて、前記非ファームウェアエージェントから前記第２のメモリへのアクセスを許可するオペレーションと、
前記非ファームウェアエージェントが前記第２のメモリにアクセス可能ではないとの判断に応じて、前記非ファームウェアエージェントからの前記第２のメモリへのアクセスを阻止するオペレーションと、
を行う、機械可読記憶媒体。
【請求項２２】
前記認証を行うオペレーションがブート処理中に行われる、請求項２１に記載の機械可読記憶媒体。
【請求項２３】
前記認証を行うオペレーションがプレブート処理中に行われる、請求項２１に記載の機械可読記憶媒体。
【請求項２４】
ＴＣＢ（トラステッド・コンピューティング・ベース）の一部であるコンポーネントが前記認証を行う、請求項２１から２３のいずれか一項に記載の機械可読記憶媒体。
【請求項２５】
前記コンポーネントが、前記機械のシステムボードの読み出し専用メモリ（ＲＯＭ）に予め格納される、請求項２４に記載の機械可読記憶媒体。
【請求項２６】
前記認証はデジタル署名によって行われる、請求項２１から２５のいずれか一項に記載の機械可読記憶媒体。
【請求項２７】
前記非ファームウェアエージェントは、誤ったコーラーおよび悪意のあるコーラーのうちの１つを含む、請求項２１から２６のいずれか一項に記載の機械可読記憶媒体。
【請求項２８】
前記第２のメモリは、前記オブジェクト記述子であるか否かを示すタグを含む、請求項２１から２７のいずれか一項に記載の機械可読記憶媒体。
【請求項２９】
前記非ファームウェアエージェントがアクセスを試みている場合に前記第２のメモリへのアクセス権違反があると、前記ファームウェアシステムは、インタラプトを生成するオペレーションをさらに行う、請求項２１から２８のいずれか一項に記載の機械可読記憶媒体。
【請求項３０】
前記ファームウェアシステムは、
前記第２のメモリが利用可能であるか否かを判断するオペレーションをさらに行い、
前記非ファームウェアエージェントが前記第２のメモリにアクセスできるか否かを判断するオペレーションの前に、１つ以上の呼び出しポイントを前記第１のメモリから前記第２のメモリに供給するオペレーションをさらに行い、
前記オブジェクト記述子は、前記第２のメモリへのポインタを含む、請求項２１から２９のいずれか一項に記載の機械可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
オペレーティングシステムは、リソースに対する様々なアクセスレベルを供給する。アクセスレベルは、「リング」に関連付けられうる。たとえば、リング０は、一般的に、最も多くの特権を有するアクセスレベルである。他のリングには、リング１、リング２、およびリング３が含まれる。動作時に、たとえば、高い番号の付いたリング（例、リング３）で実行されるプログラムは、一般的に、低い番号の付いたリング（例、リング０）に制限されるリソースであるネットワークへのアクセスをリクエストするとする。リングの使用は、リング１において実行される、誤ったまたは悪意のあるソフトウェア（例、スパイウェア）が、デバイスドライバ用に用意されるリング０機能により実行されうる、損害を与えるようなオペレーション（例、コンピュータ上のパスワードにアクセスする）を実行することを阻止することを目的とする。
【０００２】
拡張可能ファームウェアインタフェース（ＥＦＩ）システムは、パワーオンセルフテスト（ＰＯＳＴ）プロセス、オペレーティングシステムのブートストラッピング、およびオペレーティングシステムと物理ハードウェア間にインタフェースを供給することに対して責任のあるシステムとして説明しうる。
【０００３】
図１は、ＥＦＩランタイムメモリの脆弱性を示す従来技術のシナリオを示す。オペレーティングシステム１００（例、Ｗｉｎｄｏｗｓ（登録商標）ＮＴ３．１からＷｉｎｄｏｗｓ（登録商標）Ｖｉｓｔａ（登録商標）オペレーティングシステムを含むマイクロソフト社のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステム）は、リング０  １１０のアクセスレベルを含む。オペレーティングシステム（ＯＳ）カーネル１２０、ハードウェアアブストラクションレイヤ１２２（すなわち、ＨＡＬ．ＤＬＬ）、およびサービス呼び出し１２４は、リング０  １１０のアクセスレベルを有する。さらに、実行可能な拡張可能ファームウェアインタフェース（ＥＦＩ）ランタイムドライバイメージ１２６（例、ＥＦＩランタイムコードおよびデータ）は、オペレーティングシステム１００の最も特権のあるオペレーティングモードであるリング０に、ともに置かれる。
【０００４】
特に、プラットフォームファームウェア１５０は、ＥＦＩランタイムドライバ１  １６０、ＥＦＩランタイムドライバ２  １６２、ＥＦＩランタイムドライバ３  １６４を含む。ＥＦＩラインタイムドライバ１６０、１６２、および１６４のイメージは、実行可能なＥＦＩランタイムドライバイメージ１２６に、ともに置かれる（すなわち、コピーされる）。ハードウェアデバイス１７０からのデータ１８０も、実行可能なＥＦＩランタイムドライバイメージ１２６に、ともに置かれる（すなわち、コピーされる）。ＥＦＩランタイムドライバイメージ１２６は、ＥＦＩブートサービスおよびランタイムコンポーネントを含み、また、オプションの読み出し専用メモリ（ＲＯＭ）を有しうる。読み出し専用データはＲＯＭ内にあるので、ＲＯＭは、ＲＯＭにおけるコードの破損を阻止するのに有用である。ＲＯＭは、ＲＯＭ内のコードの長期インテグリティを保つのに有用であるが、一旦コードがＲＯＭからメモリ内にロードされると、メモリに移されたイメージのインテグリティは疑わしくなる。
【０００５】
ＯＳカーネル１２０とともに、ＥＦＩランタイムドライバイメージ１２６をリング０  １１０アクセスレベルに有することによって、ＯＳカーネル１２０からのＥＦＩランタイムコードの効率のよい起動を可能にするが、これは、ＥＦＩランタイムドライバイメージ１２６を、ＯＳカーネル１２０内の誤ったまたは悪意のあるコンポーネントにさらすことになる。つまり、ＯＳカーネル１２０内の誤ったまたは悪意のあるコンポーネントが、ＥＦＩランタイムドライバイメージ１２６にアクセスして破損してしまいうる。したがって、図１は、任意のリング０エージェントがＥＦＩランタイムコードおよびデータを破損してしまう方法を示す。
【０００６】
これは、出版業において最近多発している「ルートキット」によって注目されてきている懸案事項である。ルートキットは、コンピュータへの管理者レベルのアクセスを可能にする１つ以上のプログラムとして説明しうる。一般的に、無許可のユーザ（例、「攻撃者」）が、最初にユーザレベルのアクセスを取得後、ルートキットをコンピュータにインストールする。一旦ルートキットがインストールされると、ルートキットによって、攻撃者は命令をマスクし、コンピュータに対して特権的アクセスを得ることができるようになる。たとえば、ルートキットは、メモリ内のコードおよびデータを破損することのできるカーネルモードウィルスでありうる。
【０００７】
ランタイム「ルートキット」問題に関する実際のデータがあり、これは、単にセキュリティ／コンテンツ保護／デジタル権利管理（ＤＲＭ）問題だけではない。つまり、ルートキットは、セキュリティ／コンテンツ保護／デジタル権利管理（ＤＲＭ）に関して懸念事項のあるシステムだけでなくどのシステムにも悪影響を及ぼすことができるのである。ルートキット使用人口は増加している。一部では、これは、ルートキットに含まれうるアドウェアおよびスパイウェアをサポートする経済的動機があることによる。ルートキットは、社会における技術的な課題である。特に、ルーツキットは、現在のスパイウェア防止プロダクトを打破してしまうからである。ルートキットを削除し、コンピュータを回復するために顧客を案内するには数時間かかる場合がある。たとえば、ルートキットのセーフモード削除には１２を越える作業がある場合がある。さらに、ドライバをブートするよう動作する新たな悪意のあるドライバがある。つまり、オペレーティングシステム起動の最も初期の段階が影響を受けている。一方で多くのアンチウイルスおよび他の保護ソフトウェアは、オペレーティングシステム処理のもっと後において起動する。
【０００８】
今日において、ランタイムファームウェアは、システム管理モード（ＳＭＭ）により保護されうる。ＳＭＭは、特定のＩｎｔｅｌ（登録商標）マイクロプロセッサの１つのモードとして説明しうるが、このモードでは、コード（例、オペレーティングシステム）の正常実行はサスペンドされ、特別な別個のソフトウェア（例、ファームウェア）は高特権モードで実行される。
【０００９】
したがって、当該技術において、改善された高インテグリティファームウェアが必要である。
【図面の簡単な説明】
【００１０】
【図１】ＥＦＩランタイムメモリの脆弱性を示す従来技術のシナリオを示す図である。
【図２】特定の実施形態によるコンピュータデバイス２００の詳細を示す図である。
【図３】特定の実施形態による、ＥＦＩランタイムドライバイメージを保護する方法を示す図である。
【図４】特定の実施形態によるタグ付きメモリの使用の一例を示す図である。
【図５】特定の実施形態による、オブジェクト記述子およびタグ付きメモリを示す図である。
【図６】特定の実施形態による、メモリ内に格納されたＥＦＩイメージを示す図である。
【図７】特定の実施形態によるタグ付きメモリの使用のもう１つの例を示す図である。
【図８】特定の実施形態による、ＥＦＩランタイムコードおよびデータを保護するようＥＦＩランタイムコンポーネントにより実行される論理を示す図である。
【図９】特定の実施形態による、ＥＦＩコンポーネントを保護する方法の一例を示す図である。
【図１０】特定の実施形態による、プレＥＦＩ初期化（ＰＥＩ）、ドライバ実行環境（ＤＸＥ）、およびＥＦＩ実行フェーズを示す図である。
【図１１】特定の実施形態による、プレブートのためのタグ付きメモリの使用を示す図である。
【図１２】特定の実施形態による、プレブート処理のための論理を示す図である。
【発明を実施するための最良の形態】
【００１１】
同様の参照番号は対応する部分を示す図面を参照する。
【００１２】
以下の説明において、本願の一部を形成し、且つ、幾つかの実施形態を説明する添付図面を参照する。他の実施形態を使用してもよく、また構造的および動作的な変更を加えてもよい。
【００１３】
図２は、特定の実施形態によるコンピュータデバイス２００の細部を示す。コンピュータデバイス２００（例、ホストコンピュータ）は、１つ以上の中央演算処理ユニット（ＣＰＵ）２０４（すなわち、プロセッサ）、揮発性メモリ２０６、不揮発性ストレージ２０８（例、磁気ディスクドライブ、光ディスクドライブ、テープドライブなど）、および１つ以上のネットワークアダプタ２４０を含む。１つ以上のネットワークアダプタ２４０は、通信路２７０（例、ネットワーク）に結合されるとも言える。
【００１４】
メモリ２０６は、ＯＳカーネル２１２を含むオペレーティングシステム２１０を格納する。メモリ２０６はさらに、ＥＦＩランタイムコンポーネント２３０を格納する。特定の実施形態では、ＥＦＩランタイムコンポーネント２３０は、ファームウェアとして実装される。特定の他の実施形態では、ＥＦＩランタイムコンポーネント２３０は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの一部の組み合わせとして実施されうる。メモリ２０６の一部は、タグ付きメモリ２３２である。タグ付きメモリ２３２は、プレＯＳファームウェアによりポピュレートされ、ＥＦＩランタイムドライバのタイプであるドライバイメージを含むメモリとして説明しうる。タグ付きメモリ２３２は、オブジェクト記述子２３３を含む。オブジェクト記述子２３３は、オペレーション（例、非ファームウェアエージェントがタグ付きメモリにアクセスすることを阻止する）を実行することのできる「スマート」メモリとして説明しうる。メモリ２０６の一部は非タグ付きメモリ（例、オペレーティングシステム２１０およびＯＳカーネル２１２は非タグ付きメモリ内にある）である。メモリ２０６はさらに、キャッシュアズＲＡＭ（Cache-as-RAM）２３４を含む。１つ以上のドライバ２２０（例、ストレージドライバまたはネットワークドライバ）と、１つ以上のアプリケーションプログラム２２４がメモリ２０６に格納されてもよく、また、ネットワーク２７０を介してリモートコンピュータデバイス（例、ホストコンピュータまたはストレージシステム）に対してパケットを伝送または取り出しすることができる。
【００１５】
コンピュータデバイス２００は、メインフレーム、サーバー、パーソナルコンピュータ、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、電話機デバイス、ネットワークアプライアンス、仮想化デバイス、ストレージコントローラなどといった任意の好適なコンピュータデバイスを含みうる。任意の好適なＣＰＵ２０４およびオペレーティングシステム２１０を使用しうる。メモリ２０６内のプログラムおよびデータは、メモリ管理オペレーションの一部としてストレージ２０８内にスワップされうる。
【００１６】
ネットワーク２７０は、たとえば、ストレージエリアネットワーク（ＳＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、およびイントラネットなどといった任意のタイプのネットワークでありうる。
【００１７】
各ネットワークアダプタ２４０は、ネットワークアダプタ２４０のハードウェアとして実装される様々なコンポーネントを含む。各ネットワークアダプタ２４０は、ネットワーク２７０を介してデータパケットを送受信することができる。
【００１８】
各ドライバ２２０は、メモリ２０６内で実行し、また、各ネットワークアダプタ２４０と通信し、オペレーティングシステム２１０と各ネットワークアダプタ２４０との間をインタフェースするためのネットワークアダプタ２４０固有コマンドを含む。各ネットワークアダプタ２４０またはドライバ２２０は、伝送制御プロトコル（ＴＣＰ）および／またはインターネットプロトコル（ＩＰ）、インターネットスモールコンピュータシステムインタフェース（ｉＳＣＳＩ）（ＩＥＴＦ  ＲＦＣ２３４７、２００３年２月）、ファイバーチャネル（米国規格協会（ＡＮＳＩ）Ｘ３．２６９−１９９Ｘ、改訂０１２版、２９９５年１２月４月）、または任意の他の好適なトランスポート層プロトコルといった、トランスポート層内にラップされるパケットに含まれるメッセージコンテンツを処理するトランスポートプロトコル層といった、パケットを処理する論理を実装する。
【００１９】
ストレージ２０８は、内部ストレージデバイス、または、付属或いはネットワークアクセス可能なストレージを含みうる。ストレージ２０８内のプログラムは、メモリ２０６内にロードされ、ＣＰＵ２０４により実行されうる。入力装置２５０は、ＣＰＵ２０４にユーザ入力を供給するよう使用され、キーボード、マウス、ペン−スタイラス、マイクロホン、タッチディスプレイスクリーン、または任意の好適な作動または入力メカニズムを含みうる。出力装置２５２は、ディスプレイモニタ、プリンタ、ストレージなどのように、ＣＰＵ２０４、または他のコンポーネントから転送された情報をレンダリングすることができる。
【００２０】
様々な構造および／またはバッファ（図示せず）は、メモリ２０６内に存在するか、または、特定の実施形態では、メモリ２０６とは別個のストレージユニット内に位置付けられうる。
【００２１】
特定の実施形態では、ＥＦＩランタイムコンポーネント２３０と、オブジェクト記述子２３３を有するタグ付きメモリ２３２は、コンピュータデバイス２００のシステムボード上の集積回路コンポーネントとして実施されうる。したがって、ＥＦＩランタイムコンポーネント２３０と、オブジェクト記述子２３３を有するタグ付きメモリ２３２は、システムボードに結合されるとも言える。代替実施形態では、ＥＦＩランタイムコンポーネント２３０と、オブジェクト記述子２３３を有するタグ付きメモリ２３２は、コンピュータシステム２００のシステムボード上の拡張カードスロットに挿入されうる拡張カード上の集積回路コンポーネントとして実施されうる。したがって、ＥＦＩランタイムコンポーネント２３０と、オブジェクト記述子２３３を有するタグ付きメモリ２３２は、拡張ボードに結合されるとも言える。
【００２２】
図３は、特定の実施形態による、ＥＦＩランタイムドライバイメージが保護される方法を示す。図３では、オペレーティングシステム２１０は、リング０  ３１０のアクセスレベルを含む。オペレーティングシステム（ＯＳ）カーネル３２０、ハードウェアアブストラクションレイヤ３２２（すなわち、ＨＡＬ．ＤＬＬ）、およびサービス呼び出し３２４は、リング０  ３１０のアクセスレベルを有する。さらに、タグ付きメモリ３２６内の実行可能な拡張可能ファームウェアインタフェース（ＥＦＩ）ランタイムドライバイメージ（ＥＦＩランタイムコードおよびデータを含む）は、オペレーティングシステム３００の最も特権のあるオペレーティングモードであるリング０において、ともに置かれる。
【００２３】
特に、プラットフォームファームウェア３５０は、ＥＦＩランタイムドライバ３  ３６０、ＥＦＩランタイムドライバ２  ３６２、ＥＦＩランタイムドライバ３  ３６４を含む。ＥＦＩラインタイムドライバ３６０、３６２、および３６４のイメージは、タグ付きメモリ３２６内の実行可能なＥＦＩランタイムドライバイメージに、ともに置かれる（すなわち、コピーされる）。ハードウェアデバイス３７０からのデータ３８０も、タグ付きメモリ３２６内の実行可能なＥＦＩランタイムドライバイメージに、ともに置かれる（すなわち、コピーされる）。
【００２４】
図３では、ＥＦＩランタイムドライバイメージがリング０  ３１０のアクセスレベルにあるタグ付きメモリ３２６に格納されているので、ＯＳカーネル３２０における誤ったまたは悪意のあるコンポーネント（例、オペレーティングシステムにおけるバグ）は、ＥＦＩランタイムドライバ３６０、３６２、３６４、または、タグ付きメモリ３２６内の実行可能なＥＦＩランタイムドライバイメージ内の他のコードおよびデータを破損することはできない。しかし、ＯＳカーネル３２０からのＥＦＩランタイムコードの有効な起動が行われうる。したがって、図３は、実施形態が、ＥＦＩランタイムコードおよびデータを破損しないよう保護する方法を示す。
【００２５】
図４−７は、特定の実施形態による新たなＣＰＵ機能を示す。
【００２６】
図４は、特定の実施形態によるタグ付きメモリの使用の一例を示す。凡例４９０は、サンプルタグとその意味を示す。４つのタグを示すが、他のタグも実施形態の範囲内である。中央演算処理ユニット（ＣＰＵ）４００は、制御ユニット４１０と、算術論理演算ユニット（ＡＬＵ）４１２を含む。特殊レジスタ４２０は、オブジェクト記述子であることを示すタグ４２３を有するスタック記述子レジスタ４２２と、スタックポインタ（ＳＰ）レジスタ４２４と、オブジェクト記述子であることを示すタグ４２７を有するデータ記述子レジスタ４２６と、オブジェクト記述子であることを示すタグ４２９を有するコード記述子レジスタ４２８と、命令ポインタ４３０を含む。汎用レジスタ４４０は、オブジェクト記述子であることを示すタグ４４３を有するオブジェクト記述子４４２と、初期化されていないレジスタまたはメモリワードであることを示すタグ４４５を有する非初期化要素４４４と、初期化されたレジスタまたはメモリワードであることを示すタグ４４７を有するデータ４４６を含む。メモリ４７０は、スタック４７２、データ４７４、およびコード４７６を含む。メモリ４７０はさらにタグ４８０を含む。タグ４８０は、特殊レジスタ４２０および汎用レジスタ４４０に関連付けられるタグに対応する。
【００２７】
図５は、特定の実施形態によるオブジェクト記述子５００とタグ付きメモリ５７０を示す。オブジェクト記述子５００は、タグ付きメモリ５７０内、任意のＣＰＵのレジスタ上、および仮想メモリ（ＶＭ）内のどこにおかれてもよい。オブジェクト記述子５００は、タグ５１０（例、タグビット）を含み、アクセス権５１２、オブジェクトサイズ５１４、およびメモリ５７０へのポインタ５１６を供給することにより、１つのオブジェクトの記述をメモリに入れる。タグ５１０は、記述子５００がオブジェクト記述子であることを示す。オブジェクト記述子５００は、（任意のサイズチェックなしのＶＭのページごとのコントロールに比べて）高級言語セマンティクスに近い、読み出し（「Ｒ」）、書き込み（「Ｗ」）、実行（「Ｘ」）に対しファイングレインアクセスコントロールを供給する。特定の実施形態では、トラステッド・コンピューティング・ベース（ＴＣＢ）（ハードウェアおよびソフトウェアコンポーネントの両方を有する）だけが、オブジェクト記述子５００の内容を初期化し、変更しうる。トラステッド・コンピューティング・ベースは、信頼されるべき最小量のコードとして説明しうる（例、これらの初期のオブジェクト記述子を設定する場合、ＴＣＢは初期化ブートファームウェアを含みうる）。
【００２８】
アプリケーションは、（たとえば、ロード、ストア、ジャンプ、および呼び出しなどのために）そのアプリケーションが利用可能なオブジェクト記述子を介してメモリ５７０に（直接的および間接的に）アクセスしうる。特定の実施形態においてハードウェアは各アクセスを制御し、アクセス権またはオブジェクトサイズ違反がある場合にはインタラプトを生成する。
【００２９】
図６は、特定の実施形態による、メモリ５７０内に格納されるＥＦＩイメージ６００を示す。特定の実施形態では、ＥＦＩイメージは、ポータブルエグゼクタブルおよびオブジェクトの共通ファイル形式（Portable Executable and Common Object File Format：ＰＥ／ＣＯＦＦ）実行ファイルである。様々なオブジェクト記述子をＥＦＩイメージの様々な部分に割り当てしうる。一例として、ＥＦＩイメージ６００は、プレＯＳ、ＥＦＩのブートサービスフェーズの間に起動され、ＯＳカーネル２１２と同格に存在し続けるRuntimeServices.efi実行ファイルでありうる。
【００３０】
図７は、特定の実施形態によるタグ付きメモリの使用のもう１つの例を示す。図７では、中央演算処理ユニット（ＣＰＵ）７００は、制御ユニット７１０と、算術論理演算ユニット（ＡＬＵ）７１２を含む。汎用レジスタ７４０は、オブジェクト記述子であることを示すタグ７４３を有するオブジェクト記述子７４２と、初期化されていないレジスタまたはメモリワードであることを示すタグ７４５を有する非初期化要素７４４と、初期化されたレジスタまたはメモリワードであることを示すタグ７４７を有するデータ７４６を含む。メモリ７７０は、コード、データ、オブジェクト記述子、および非初期化部分を含む。メモリ７７０はさらに、タグ７８０を含む。
【００３１】
図８は、特定の実施形態による、ＥＦＩランタイムコードおよびデータを保護するようＥＦＩランタイムコンポーネント２３０により実行される論理を示す。制御は、工程８００において、（例、電源スイッチがオンの状態であったため）システムが再起動することにより開始する。「システム」とは、コンピューティングプラットフォームを指す。工程８０２では、システムは初期化される。工程８０４では、ＥＦＩランタイムコンポーネント２３０は、タグ付きメモリ２３２が利用可能であるか否かを判断する。利用可能である場合は、処理は工程８０６に進み、利用可能ではない場合は、処理は工程８１２に進む。
【００３２】
工程８０６では、ＥＦＩランタイムコンポーネント２３０は、ＥＦＩシステムが実装されているか否かを判断する。実装されている場合は、処理は工程８０８に進み、実装されていない場合は、処理は工程８１２に進む。工程８０８では、ＥＦＩランタイムコンポーネント２３０は、ＥＦＩランタイムコードおよびデータに対するオブジェクト記述子を割り当てる。各オブジェクト記述子は、それがオブジェクト記述子であることを示すタグを含む。工程８０８の処理には、ＥＦＩランタイムコンポーネント２３０が各レジスタを初期化して、そのレジスタが初期化されたか、初期化されていないかを示すか、またはオブジェクト記述子を格納するタグを含むことが含まれる。工程８１０では、ＥＦＩランタイムコンポーネント２３０は、ランタイム時に使用するために、非タグ付きメモリからの１つ以上の呼び出しポイントをタグ付きメモリに供給する。たとえば、図３では、ハードウェアアブストラクションレイヤ３２２は、非タグ付きメモリ内にあるが、実行可能ＥＦＩランタイムドライバイメージ３２６は、タグ付きメモリ内にあるので、サービス呼び出し３２４は、非タグ付きメモリからタグ付きメモリへの呼び出しポイントとして説明しうる。呼び出しポイントは、ＥＦＩランタイムサービス呼び出しといったようにパブリックに記述される関数呼び出しとして説明しうる。
【００３３】
工程８１２では、ＥＦＩランタイムコンポーネント２３０は、プレオペレーティングシステム処理またはブートシステム処理を完了する。したがって、工程８００−８１２は、ブートフェーズを表し、一方、工程８１４−８２２は、ランタイムフェーズを表す。
【００３４】
工程８１４では、１つ以上のオブジェクト記述子２３３は、非ファームウェアエージェントがタグ付きメモリ２３２へのアクセスを試みているか否かを判断する。非ファームウェアエージェントは、プラットフォームファームウェア／プラットフォームＲＯＭからロードされていないコードとして説明しうる。非ファームウェアエージェントは、以下に限定されないが、ＯＳエグゼクティブまたはカーネルモードドライバ／サービスの一コンポーネントを含みうる。非ファームウェアエージェントがタグ付きメモリ２３２へのアクセスを試みている場合は、処理は工程８１６に進む。非ファームウェアエージェントがタグ付きメモリ２３２へのアクセスを試みていない場合は、処理は工程８２２に進む。工程８１６では、１つ以上のオブジェクト記述子２３３が、アクセスされるタグ付きメモリ２３２に関連付けられるオブジェクト記述子内のアクセス権に基づいて非ファームウェアエージェントがタグ付きメモリ２３２にアクセスすることができるか否かを判断する（すなわち、タグ付きメモリ２３２が、ＥＦＩランタイムドライバイメージの正当なメモリロケーションであるか否かを判断する）。アクセスすることができる場合は、処理は工程８１８に進み、アクセスすることができない場合は、処理は工程８２０に進む。工程８１８では、ＥＦＩランタイムコンポーネント２３０は、タグ付きメモリ２３２に対する非ファームウェアエージェントからのアクセスオペレーションを処理し、結果を受信し、また、その結果を戻す。特定の実施形態では、これは、ＥＦＩランタイムコンポーネント２３０と非タグ付きＯＳカーネル２１２間の仲介として動作するスタブ（すなわち、（ＥＦＩランタイムコンポーネント２３０の一部である）ＥＦＩランタイムコードの特定の非タグ付き部分がある）を介して発生する。工程８２０では、１つ以上のオブジェクト記述子２３３は、誤ったまたは悪意のある呼び出しをするコーラー（caller）でありうる非ファームウェアエージェントによるタグ付きメモリ２３２へのアクセスを阻止する。工程８２２では、処理は続けられ、非ファームウェアがＥＦＩランタイムタグ付きメモリ２３２へのアクセスを試みようとする場合に、処理を工程８１４に戻す。
【００３５】
図９は、特定の実施形態による、ＥＦＩコンポーネントを保護する方法の一例を示す。この例では、悪意のあるドライバ３を含むスモールコンピュータシステムインタフェース（ＳＣＳＩ）カード９００が、コンピュータシステムに差し込まれる可能性がある。図９の例では、ＥＦＩを実装するフレームワークは、２つの主なフェーズを含む。１つは、プレＥＦＩ初期化（ＰＥＩ）フェーズであり、もう１つはドライバ実行環境（ＤＸＥ）フェーズである。プレＥＦＩ初期化フェーズは、複数のＰＥＩモジュールＡ、Ｂ、およびＣにより行われる。ドライバ実行環境フェーズは、複数のドライバ、すなわち、ＤＸＥドライバ１およびＤＸＥドライバ２により行われる。メモリ９１０のプラットフォーム初期化部は、ＰＥＩモジュールおよびＤＸＥドライバとは別個にタグ付きメモリ内に格納されるＥＦＩコアフレームワークを含む。ＥＦＩコアフレームワークは、ＥＦＩフレームワーク、ＤＸＥフレームワーク、およびＰＥＩフレームワークを含む。
【００３６】
図１０は、特定の実施形態による、ＰＥＩ、ＤＸＥ、およびＥＦＩ実行のフェーズ１０００を示す。実施形態では、ＰＥＩフレームワーク、ＤＸＥフレームワーク、およびＥＦＩフレームワークは、タグ付きメモリ内に置かれ、一方、ＰＥＩモジュール、ＤＸＥドライバ、およびＥＦＩアプリケーションおよびライブラリは、非タグ付き（「通常」）メモリ内に置かれる。特定の実施形態では、「信頼」され、ＴＣＢの一部であるプラットフォームファームウェアからのコードは、ＥＦＩランタイムタグ付きメモリ内に入れられる。これは、システムボードベンダからのコードが、第三者のアダプタカードなどからロードされるドライバから分離されることを可能にする。この同様の分離は、ＥＦＩランタイムコードがシステムボードから分離され、続けて起動される任意のＥＦＩ認識オペレーティングシステムから分離されることが可能であるようランタイムにおいても存在する。したがって、実施形態は、相手先ブランド製造者（ＯＥＭ）といったシステムボードを供給する当事者が、ボード上のＲＯＭに入れられて出荷される当事者のコードが他のプレＯＳコードまたはＯＳにより破損／影響を受けないことを確実にすることができる。
【００３７】
したがって、図９および１０は、実施形態を、オペレーティングシステムの起動の前にファームウェアコンポーネントのフローに適用しうる方法を示す。図９では、ＲＯＭ内にコアフレームワークを有し、これは、次にＥＦＩランタイムタグ付きメモリにロードされる。図１０では、フローの下半分は、タグ付き及び保護されたプレＯＳフレームワークコードを示す。
【００３８】
図１１は、特定の実施例による、プレブートのためのタグ付きメモリの使用を示す。制御は、システムがリセットされる工程１１００において開始する。ここでは、オペレーティングモードはフラットモード（すなわち、０−４ＧＢマッピングのためのデータ／コードセットを有する保護モード）に設定され、制御は、ＰＥＩフレームワークを開始するよう渡される。工程１１０２では、マシーンコードが実行されてキャッシュアズＲＡＭ２３４が有効にされる。工程１１０４では、一時的なページ表がキャッシュアズＲＡＭ内に作成される。工程１１０６では、ＰＥＩコアと、ＰＥＩ  ＴＣＢの一部であり、タグ付きメモリ内にある、認証の実行を支援する任意のＰＥＩモジュール（「ＰＥＩコンポーネント」）は、各ＰＥＩモジュールを試験し、また、デジタル署名により各ＰＥＩモジュールを認証する。工程１１０８では、ＰＥＩコンポーネントは、デジタル署名が有効なデジタル署名であるか否かを判断する。有効なデジタル署名である場合は、処理は工程１１１０に進み、有効なデジタル署名ではない場合は、処理は工程１１１２に進む。工程１１１０では、ＰＥＩコンポーネントは、各ＰＥＩモジュールに対してタグ付きメモリを割り当てする。工程１１１２では、ＰＥＩコンポーネントは、各ＰＥＩモジュールイメージハンドラを安全ではないとマークする。工程１１１４では、各ＰＥＩモジュールは、メインメモリを初期化するよう実行される。
【００３９】
図１２は、特定の実施例によるプレブート処理の論理を示す。特定の実施形態では、１つ以上のＤＸＥドライバは、ＥＦＩランタイムドライバとしてロードされうる。したがって、ＤＸＥにおける認証／タグ付けは、ＯＳの存在する実施形態をもたらす。工程１２００では、ＤＸＥコア／ファウンデーションと、ＤＸＥ  ＴＣＢの一部であり、タグ付きメモリ内にある任意のＤＸＥ認証ドライバ（「ＤＸＥコンポーネント」）は、各ＤＸＥドライバを試験し、また、デジタル署名により各ＤＸＥドライバを認証する。工程１２０２では、ＤＸＥコンポーネントは、デジタル署名が有効なデジタル署名であるか否かを判断する。有効なデジタル署名である場合は、処理は工程１２０４に進み、有効なデジタル署名ではない場合は、処理は工程１２０６に進む。工程１２０４では、ＤＸＥコンポーネントは、各ＤＸＥドライバに対してタグ付きメモリを割り当てする。工程１２０６では、ＤＸＥコンポーネントは、ＤＸＥドライバイメージハンドラを安全ではないとマークする。工程１２０８では、オペレーティングシステムブート処理が続行する。
【００４０】
実施形態は、プレブートおよびランタイムの両方で高いインテグリティのファームウェアを供給する。実施形態は、コードおよびデータを、同一の特権レベルで動作する他のコードから分離させるよう「機能（capabilities）」または「タグ付きメモリ」を使用する。
【００４１】
実施形態は、ＲＯＭからロードされたメモリ内イメージのインテグリティを保つのに役立つ。
【００４２】
実施形態は、相手先ブランド製造者（ＯＥＭ）のブートサービスコードが、誤ったプレＯＳアプリケーションおよびＯＳローダにより破損されないようにすることを可能にする。本質的に異なる要素が同じロケーションにあることは、いずれは信用および信頼性の問題につながる。特定の実施形態では、オブジェクト記述子を設定するために、図８の工程８００−８１０の論理は、ブートフローの非常に初期、好適には、ＳＥＣまたはＰＥＩフェーズといった測定のための信頼のコアルート（Core-Root of Trust for Measurement：ＣＲＴＭ）において実行される。ＣＲＴＭは、トラステッドプラットフォームモジュール（ＴＰＭ）を開始し、トラステッドコンピューティングプラットフォームのためのトラステッドビルディングブロック（ＴＢＢ）の一部であるコードとして説明しうる。ＳＥＣは、次のように説明しうる。すなわち、システム再起動時に実行され、「保護モード」／キャッシュアズＲＡＭ初期化を行う非常に初期のコードとして説明しうる。
【００４３】
ＥＦＩプレブートコアおよびランタイムを対象とするオブジェクト記述子が信頼できないコードにより不安定にされないことを確実にするようフラッシュブロックロックを使用してもよい。つまり、フラッシュメモリは、ＴＣＢが制御を他のエージェントに送るときにフラッシュは読み出し専用にされる（すなわち、誰もフラッシュのコンテンツを改ざんすることができない）ことを確実にするようＮＯＲフラッシュのハードウェア機能を使用してロックされる。あるいは、ファームウェアに保存されたメモリ、または、初期ブートファームウェアにより供給される他の読み出し専用リソースを使用してもよい。上述したいずれの場合においても、ＥＦＩファームウェアは、オブジェクト記述子のストレージのためにファームウェアにより使用されるメモリを、（オペレーティングシステムにメモリマップをリポートするよう基本入力／出力システム（ＢＩＯＳ）でのＩｎｔ  １５ｈ  Ｅ８２０呼び出し（詳細設定と電力のインタフェース（Advanced Configuration and Power Interface）（ＡＣＰＩ）仕様、改訂３．０、２００４年９月２日）を有する）ＡＣＰＩメモリマップと、（（オペレーティングシステムが不注意にまたは悪意を持ってストアを破損することを回避するための）ＧｅｔＭｅｍｏｒｙＭａｐ呼び出しを有する）ＥＦＩメモリマップの両方において「ファームウェア予約済み（firmware reserved）」としてマークをつける。
【００４４】
実施形態は、プラットフォーム展開のブートサービス、プレブートフェーズの間に使用することができる。特に、信用できない、おそらく誤ったオプションＲＯＭと、プレブートアプリケーションがありえ、これらに対してプラットフォームファームウェアは保護される。オプションＲＯＭは、ホストバスアダプタ（ＨＢＡ）上のＢＩＯＳ拡張またはＥＦＩドライバ（すなわち、システムに差し込まれるカード）として説明しうる。それにより、独立ハードウェアベンダは、システムのブートに役立つよう使用することのできるＨＢＡとともにコードを発送しうる。プラットフォームファームウェア／ＥＦＩはドライバをロードし、ドライバがドライバサービスをインストールすることを許可する。ＨＢＡ上のドライバは、場合により信頼できない第三者からくるので、タグ付きメモリ分離を使用して、低インテグリティドライバがプレＯＳ  ＴＣＢを不安定にさせないようにすることが重要である。
【００４５】
実施形態は、拡張性ファームウェアインタフェース（「フレームワーク」）またはフレームワーク標準に準拠して構築される任意の他のファームウェアのためにインテル（登録商標）プラットフォームイノベーションフレームワークのブートサービスＰＥＩおよびＤＸＥファウンデーションを強化する。
【００４６】
さらに、実施形態は、以下に限定されないが、符号付フラッシュアップデート、未知のソースからのコードを実行する前のＳＭＲＡＭおよびフラッシュのロック、信頼のおけるコードが起動の前にプラットフォーム権限者／所有者に既知のソースにより署名されていることの確認、トラステッドプラットフォームモジュール（ＴＰＭ）を有するコンポーネント／トラステッドブートの測定、および任意の設定更新または変更の前のオペレータの認証を含むファームウェアデプロイメントにおける他のプラクティスとともに使用してもよい。タグ付きメモリは、独立して使用しても、または、ロバストで高いインテグリティのプラットフォームファームウェア構成の１つ以上のこれらの他のアスペクトを補完するよう使用してもよい。
【００４７】
実施形態は、ＯＳデータ構造を保護するよう設計されるタグ付きメモリを供給する。さらに、実施形態は、プレＯＳおよびランタイムファームウェア／ＯＳランタイム分離を取り扱う。実施形態は、オペレーティングシステムにおける「安全なファイルシステムまたは安全なｉノード」といったオペレーティングシステムコンポーネントにおける保護および分離を与える。実施形態は、この機能をプラットフォームファームウェアに活用することを可能にする。
【００４８】
実施形態は、読み出し−書き込みデータおよびメモリ内のコードを保護するのに有用である。
【００４９】
実施形態は、機能が、下位互換性があるように追加されることを可能にする。したがって、業界標準ファームウェアであるブートサービスおよびランタイムはともに、業界標準ファームウェアがタグ付きメモリを使用することによって有利となるよう再コンパイルされうる。実施形態は、コードのタイプ−セーフティは、分離に使用され、ソフトウェア要素はリング保護を必要としない管理ランタイム環境（ＭＲＴＥ´ｓ）への適用性により「タイプ−セーフ」なＣＰＵを供給する。分離のための、ソフトウェアおよび高度に定型化されたソフトウェアインタフェースに対して「リング保護がないこと」は、ＥＦＩおよびフレームワークに基づく仕様を含む統一ＥＦＩフォーラム下の技術にも適用することができる。つまり、現在、ＵＥＦＩでは、ドライバとコアプラットフォームファームウェアとは分離されない。これは、インテグリティに関する問題がある。なぜなら、システムボード上のプラットフォームファームウェアは、ＨＢＡまたはディスクからロードされたファームウェアよりも信頼され、かつ、より高いインテグリティを有するべきだからである。ハードウェア分離は、このインテグリティを保証するために必要である。ＯＳランタイムにおいて、ページ表および他の保護ハードウェアは、ＯＳカーネルが所有する。したがって、プラットフォームファームウェアランタイムによる使用にとっておかれる新しいタグ付きハードウェアは、より高いインテグリティＥＦＩランタイムコードが悪意のあるまたは誤ったＯＳランタイムコードにより破損されないことを確実にするよう使用される。
【００５０】
実施形態は、タグメモリ以外のリング０のコロケーションが適宜続行することを可能にする。実施形態では、リング０  ＯＳローダでさえもＥＦＩコアを破損することができない。
【００５１】
ランタイム時、ＥＦＩファームウェアは、ファームウェアランタイムコードおよびデータの保護をＯＳカーネルに委任する。実施形態では、ＥＦＩファームウェアランタイムは、プレＯＳ処理において委任される適切なオブジェクト記述子を介して保護されることが可能である。
【００５２】
実施形態は、ＥＦＩランタイムのタグ付きメモリの変形が、ＯＳと共存し、ＯＥＭに対して多くのシナリオを実行することを可能にする。これらのシナリオは、今日、コードインテグリティを妥協することなくＳＭＭにおいて実施される。
【００５３】
実施形態は、ルートキット／ＯＳカーネルモードマルウェアからＥＦＩランタイムを保護する。
【００５４】
信用とは、信頼性、安全性、機密性、インテグリティ、および可用性を含むものとする。安全性は、機密性、インテグリティ、および可用性を含むものとする。実施形態は、インテグリティに関して取り組む。したがって、信用および安全性の両方に関して取り組む。実施形態は、企業に適用することができる。企業は、マーケットセグメント（例、コンピュータを購入して使用するビジネス）として説明しうる。マーケ  
ットセグメントは、信用および安全性の「信頼性」のアスペクトによってホームユーザとは区別される。
【００５５】
実施形態は、メニーコアおよびマルチコアプロセッサに基づいたプラットフォームが、プラットフォームファームウェアから高インテグリティコードフローを展開する方法を有することを確実にするよう使用されうる。
【００５６】
実施形態は、現在のソフトウェアエコシステムに影響を与えることなく悪いオプションＲＯＭ、ルートキット、カーネルに対する防護を供給するために、ＯＳコンポーネント分離のためのハードウェア機能を使用する。つまり、プラットフォームファームウェアは、これらのタグを使用しうるが、ＯＳカーネルは、実施形態と動作するよう再コンパイル／更新される必要はない。新規のシステムボードおよびファームウェアは、旧型のＯＳカーネル（例、Ｗｉｎｄｏｗｓ（登録商標）ＸＰまたはＷｉｎｄｏｗｓ（登録商標）サーバー２００３オペレーティングシステム）とともに動作することができる。実施形態は、旧型および新型のオペレーティングシステムに対してファームウェア分離を供給する。これは、ＯＥＭにとっては好都合である。なぜなら各システムボードは一般的にさまざまな新旧型のオペレーティングシステムロードをサポートするからである。
【００５７】
Ｉｎｔｅｌ（登録商標）は、米国および／または諸外国におけるインテル社の登録商標またはコモンローマークである。Ｗｉｎｄｏｗｓ（登録商標）およびＶｉｓｔａ（登録商標）は、米国および／または諸外国におけるマイクロソフト社の登録商標またはコモンローマークである。
［追加の実施形態の詳細］
【００５８】
上述したオペレーションは、ソフトウェア、ファームウェア、ハードウェア、あるいはそれらの任意の組み合わせを生成するよう標準プログラミングおよび／またはエンジニアリング技法を使用する、方法、装置、または、製品として実施されうる。上述したオペレーションは、「コンピュータ可読媒体」内に維持されるコードとして実施されうる。プロセッサは、コンピュータ可読媒体からコードを読み出ししかつ実行しうる。コンピュータ可読媒体は、磁気記憶媒体（例、ハードディスクドライブ、フロッピー（登録商標）ディスク、テープなど）、光学記憶装置（ＣＤ−ＲＯＭ、ＤＶＤ、光ディスクなど）、揮発性および不揮発性メモリ装置（例、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、フラッシュメモリ、ファームウェア、プログラマブル論理など）といった媒体を含みうる。上述したオペレーションを実施するコードは、さらにハードウェア論理（例、集積回路チップ、プログラマブルゲートアレイ（ＰＧＡ）、特殊用途向け集積回路（ＡＳＩＣ）など）に実施されうる。さらに、上述したオペレーションを実施するコードは、「伝送信号」で実施されうる。伝送信号は、空間、または、光ファイバ、銅線などといった伝送媒体を通り伝播しうる。その中にコードまたは論理が符号化される伝送信号はさらに、無線信号、衛星伝送、無線波、赤外線信号、ブルートゥース（登録商標）などを含みうる。その中にコードまたは論理が符号化される伝送信号は、送信局により送信され、受信局により受信されることが可能であり、伝送信号内に符号化されるコードまたは論理は、受信および送信局または装置において、ハードウェアまたはコンピュータ可読媒体において復号化され格納されうる。「機械可読媒体」は、その中にコードが実装されうるコンピュータ可読媒体、ハードウェア論理、および／または伝送信号を含む。上述したオペレーションの実施形態を実施するコードがその中に符号化された装置は、コンピュータ可読媒体またはハードウェア論理を含みうる。当然ながら、当業者は、本発明の範囲から逸脱することなく多くの変更をこの構成に加え、また、製品は当該技術において周知である情報担持媒体を含みうることを認識するであろう。
【００５９】
図８、１１、および１２に示すオペレーションは、特定の順序で発生する特定のイベントを示す。代替実施形態では、特定のオペレーションは、異なる順序で、変更されて、または削除されて行われうる。さらに、オペレーションが上述した論理に追加され、依然として上述した実施形態と一致しうる。さらに、本願に説明したオペレーションは、逐次的に発生しても、または、特定のオペレーションは、並列で処理されてもよい。さらに、オペレーションは、単一の処理ユニットまたは分散型処理ユニットによって処理されうる。
【００６０】
上述したさまざまな実施形態は、例示および説明のために提示された。これは、網羅的でも限定的でもない。多くの変更および変形が上述の技術の教示内容を鑑みて可能である。
【符号の説明】
【００６１】
１００  オペレーティングシステム
１１０  リング０
１２０  オペレーティングシステムカーネル
１２２  ハードウェアアブストラクションレイヤ
１２４  サービス呼び出し
１２６  実行可能ＥＦＩランタイムドライバイメージ
１５０  プラットフォームファームウェア
１６０、１６２、１６４  ＥＦＩランタイムドライバ
１７０  ハードウェアデバイス
１８０  データ１８０
２００  コンピュータデバイス
２０４  ＣＰＵ
２０６  メモリ
２０８  ストレージ
２１０  オペレーティングシステム
２１２  ＯＳカーネル
２２０  ドライバ
２２４  アプリケーションプログラム
２３０  ＥＦＩランタイムコンポーネント
２３２  タグ付きメモリ
２３３  オブジェクト記述子
２３４  キャッシュアズＲＡＭ
２４０  ネットワークアダプタ
２５０  入力装置
２５２  出力装置
２６０  バス
２７０  通信路
３１０  リング０
３２０  オペレーティングシステムカーネル
３２２  ハードウェアアブストラクションレイヤ
３２４  サービス呼び出し
３２６  タグ付きメモリ内の実行可能ＥＦＩランタイムドライバイメージ
３５０  プラットフォームファームウェア
３６０、３６２、３６４  ＥＦＩランタイムドライバ
３７０  ハードウェアデバイス
３８０  データ
４００  ＣＰＵ
４１０  制御ユニット
４１２  ＡＬＵ
４２０  特殊レジスタ
４２２  スタック記述子レジスタ
４２４  スタックポインタレジスタ
４２６  データ記述子レジスタ
４２８  コード記述子レジスタ
４３０  命令ポインタ
４４０  汎用レジスタ
４４２  オブジェクト記述子
４４４  非初期化
４４６  データ
５００  オブジェクト記述子
５７０  タグ付きメモリ
６００  ＥＦＩイメージ
７００  ＣＰＵ
７１０  制御ユニット
７１２  ＡＬＵ
７４０  汎用レジスタ
７４２  オブジェクト記述子
７４４  非初期化
７４６  データ
７８０  タグ
７７０  メモリ
【図１】
0005512610.tif 000002
【図２】
0005512610.tif 000003
【図３】
0005512610.tif 000004
【図４】
0005512610.tif 000005
【図５】
0005512610.tif 000006
【図６】
0005512610.tif 000007
【図７】
0005512610.tif 000008
【図８】
0005512610.tif 000009
【図９】
0005512610.tif 000010
【図１０】
0005512610.tif 000011
【図１１】
0005512610.tif 000012
【図１２】
0005512610.tif 000013