(57)【特許請求の範囲】
【請求項１】
プロセッサ製造業者のプラットフォームから独立したコードに対応する半導体一体化コード（ＳＩＣ）を記憶するための不揮発性メモリであって、前記ＳＩＣは、プロセッサ及び前記プロセッサをシステムメモリに接続する少なくとも一つのリンクを初期化するために埋込型プロセッサロジックを含む、不揮発性メモリと、
前記システムメモリを初期化するための埋込型メモリロジックと、
を有し、
プロセッサリセットに応答し、かつ、オリジナル製品製造者（ＯＥＭ）のプリブートコードに制御を提供する前に、前記ＳＩＣが実行され、
前記ＳＩＣは、前記不揮発性メモリへ組み入れるために、バイナリとして前記ＯＥＭに提供され、
前記不揮発性メモリは、ＯＥＭ基本入出力システム（ＢＩＯＳ）を含んでおり、
前記ＳＩＣは、ランタイムの間の前記プロセッサの独占的使用のために、前記システムメモリの部分を隔離し、
前記隔離された部分は、オペレーティングシステムから見えない、
装置。
【請求項２】
前記ＳＩＣをロードするためのイニシャル・プログラム・ローダ（ＩＰＬ）を更に有し、
前記ＩＰＬは、前記プロセッサのマイクロコードからランチされ、
前記ＩＰＬは、前記ＳＩＣを認証し、かつ、その後、前記ＳＩＣをランチする、
請求項１記載の装置。
【請求項３】
前記ＩＰＬは、前記ＳＩＣの位置をポイントするポインタを含むエントリを有するファームウェア・インターフェース・テーブル（ＦＩＴ）にアクセスする、
請求項２記載の装置。
【請求項４】
前記不揮発性メモリは、複数のＳＩＣレビジョンを含み、
前記複数のＳＩＣレビジョンの各々は、対応するＳＩＣデータモジュールに関連づけられており、
前記ＩＰＬは、前記ＦＩＴのエントリに基づいて、ランチするために、前記複数のＳＩＣバージョン及びＳＩＣデータモジュールのうちの１つを選択する、
請求項１記載の装置。
【請求項５】
前記ＳＩＣデータモジュールは、プロセッサ製造業者データ、ＯＥＭデータ、及びエンドユーザデータを含み、
前記ＯＥＭデータ、及び前記エンドユーザデータは、プラットフォームに依存する、
請求項４記載の装置。
【請求項６】
前記ＯＥＭデータは、前記不揮発性メモリに書き込まれる前に、前記プロセッサ製造業者によって署名された信頼されたデータである、
請求項５記載の装置。
【請求項７】
前記不揮発性メモリは、複数のコアと、少なくとも一つのマイクロコードストアと、一体化されたメモリコントローラと、を含むプロセッサパッケージの中にある、
請求項１記載の装置。
【請求項８】
前記プロセッサは、前記隔離された部分に、バイナリトランスレータを記憶する、
請求項１記載の装置。
【請求項９】
システムにおいて少なくとも一つのコンポーネントが前記システムに動的に組み込まれる指示を受け取るステップと；  
前記指示に応答するオペレーティングシステムパワーマネジメント（ＯＳＰＭ）コードを介して、パワーマネージメントオペレーションを起動させるステップと；
システムマネジメントモードに移行せずに、前記ＯＳＰＭコードから半導体に一体化されたコード（ＳＩＣ）を呼び出すステップであって、前記ＳＩＣは、プロセッサ製造業者のプラットフォームから独立したコードに対応し、かつ、前記ＳＩＣを用いて、前記少なくとも一つのコンポーネントのイニシャライゼーションを実行する、ステップと；
前記ＳＩＣをアンロードし、かつ、前記ＯＳＰＭに返すステップであって、前記ＳＩＣはバイナリのモジュールとして、前記システムのオリジナル製品製造者（ＯＥＭ）に、前記プロセッサ製造業者によって提供される、ステップと；
システムスタートアップにおいて、前記システムのプロセッサ及びシステムメモリのイニシャライゼーションを実行するために、ＳＩＣをランチするステップであって、前記イニシャライゼーションの実行の後、前記ＳＩＣによるランタイムのセットアップの間の前記プロセッサの独占的使用のために、前記システムメモリの隔離された部分にＳＩＣを記憶し、前記隔離された部分は、オペレーティングシステムから見えない、ステップと；
を有する方法。
【請求項１０】
前記ＳＩＣを用いて、ファームウェア・インターフェース・テーブル（ＦＩＴ）のエントリに基づいて、ＳＩＣデータモジュールにアクセスするステップ、
を更に有する請求項９記載の方法。
【請求項１１】
前記ＳＩＣデータモジュールの情報を用いて、前記イニシャライゼーションを実行するステップ；
を更に有する請求項１０記載の方法。
【請求項１２】
チップセットに周辺デバイスアドレスを合成し、前記ＯＳＰＭコードによって前記周辺デバイスアドレスへのアクセスを介して前記ＳＩＣを呼び出すステップ；
を更に有する請求項９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリコンに一体化されたコードのシステムへの提供に関する。
【背景技術】
【０００２】
歴史的に、基本入出力システム（ＢＩＯＳ）ソフトウエアは、コンピュータシステムにおいて、ローレベルのソフトウエアであり、ブートアップ及びローレベルのオペレーションを行う。そして、典型的に、いわゆるＯＥＭメーカ（すなわちコンピュータメーカ）により組み込まれる。プロセッサのためのＢＩＯＳのサポートを提供するために、プロセッサメーカ（いわゆるシリコン製造業者）は、詳細な情報をＯＥＭに提供する。この情報は、通常、ソフトウエアコードである。しかしながら、このコードを提供することによって、ハードウエア知的財産（ＩＰ：ｉｎｔｅｌｌｅｃｔｕａｌ  ｐｒｏｐｅｒｔｙ）の態様、すなわち、どのようにプログラムするか、根底にあるハードウエアの詳細が、サードパーティに開示されてしまう。更に、ソースコードを提供することによって、ＯＥＭは、非標準的なやり方で、コードを変更することができ、統合することができる。あるいは、プログラムを修正して非標準のハードウエアをサポートする。これによって、複雑化を招き、動作時の不安を招来する。そして、シリコン製造業者のサポートのコストを増大させる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
例えば、システムをイニシャライズする情報は、通常、プロセッサの詳細、内部リンク、メモリ構造その他を含んでいる。そのような詳細は、レジスタの定義及びこのハードウエアとのインターフェースが含まれる。この情報は、ＯＥＭ業者以外に、独立のＢＩＯＳベンダー（ＩＢＶ）にも拡散する。ｘ８６コンピュータシステムのＩＢＶ及びＯＥＭの世界は比較的狭いものであった。この頃は、プロセッサ及びその他の拡張されたシリコンコントローラは、異なるタイプのシステムやデバイスに組み込まれていた。しかしながら、この世界は、今や大きく拡大し、ＩＰの懸念やサポートに対する弊害が発生するようになってきた。
【課題を解決するための手段】
【０００４】
一実施例によれば、プロセッサ製造業者のプラットフォームから独立したコードに対応する半導体一体化コード（ＳＩＣ）を記憶するための不揮発性記憶手段であって、前記ＳＩＣは、プロセッサ手段及び前記プロセッサ手段をメモリ手段に接続する少なくとも一つのリンクを初期化するために埋込型プロセッサロジックを含む、不揮発性記憶手段と、
前記メモリ手段を初期化するための埋込型メモリロジック手段と、を有し、プロセッサリセットに応答し、かつ、オリジナル製品製造者（ＯＥＭ）のプリブートコードに制御を提供する前に、前記ＳＩＣが実行される、装置が提供される。
【図面の簡単な説明】
【０００５】
【図１】本発明の一実施例に従った、プラットフォームから独立したシリコン一体化コード（ＳＩＣ：ｓｉｌｉｃｏｎ  ｉｎｔｅｇｒａｔｅｄ  ｃｏｄｅ）のコンポーネントのブロック図である。
【図２】本発明の実施例に従ったシステムのブロック図である。
【図３Ａ】本発明の一実施例に従った、シリコン一体化コードをランチするためのフローのブロック図である。
【図３Ｂ】本発明の一実施例に従った、シリコン一体化コードをランチするためのフローのブロック図である。
【図４Ａ】本発明の他の実施例に従った、ＳＩＣをランチするフローのブロック図である。
【図４Ｂ】本発明の他の実施例に従った、ＳＩＣをランチするフローのブロック図である。
【図５Ａ】本発明の更に他の実施例に従った、ＳＩＣをランチするフローのブロック図である。
【図５Ｂ】本発明の更に他の実施例に従った、ＳＩＣをランチするフローのブロック図である。
【図６】本発明の実施例に従った、ランタイムＳＩＣの実行を行う方法のフローを示す図である。
【図７】本発明の実施例に従った、ブートタイムの概略フローを示す図である。
【図８】本発明の実施例に従った、一時的なＳＩＣコードの実行の方法を示す図である。
【発明を実施するための形態】
【０００６】
様々な実施例において、初期のイニシャライゼーションは、密接に基本的なプロセッサハードウエアに結びついている。このため、シリコン製造業者が初期のイニシャライゼーションソフトウエアをコントロールし、かつ提供する。これは、ＯＥＭ  ＢＩＯＳによりインプリメントされない。
【０００７】
このシリコン一体化コードは、コードをロードする環境において用いられる。そして、これは、供給元を保証し、このＳＩＣの実行後、ＯＥＭ  ＢＩＯＳに、シームレスな形で制御が引き渡される。このＳＩＣは、ローレベルの態様のメモリイニシャライゼーションを実行するために用いられてもよい。例えば、アナログリンクがセットアップされるトレーニング、診断及びフックのテストのデザインが挙げられる。ＳＩＣの中には、メモリコントローラ及び内部リンクのキー・イニシャライゼーション、そして、様々なプロセッサ及びシステム機能の基本的なランタイムサポートが含まれる。なお、本発明の技術的範囲はこの点に限定されない。
【０００８】
ある実施例においては、このコードの信用のルート（ｒｏｏｔ  ｏｆ  ｔｒｕｓｔ）は、プロセッサマイクロコードのフックを介して提供される。このマイクロコードは、ＳＩＣローダをインプリメントし、認証し、そしてＳＩＣをロードする。これは、シリコン製造業者のＢＩＯＳに存在し、その後、ＯＥＭ  ＢＩＯＳに制御が渡される。ＯＥＭ  ＢＩＯＳのアップグレードの試みがなされるため、例えばフラッシュメモリに組み込まれたファームウェアが脅威となる。したがって、ＳＩＣローダをランチするプロセッサパッケージ内のコアマイクロコードの信用のルートは、その後に実行されるＳＩＣを含むＯＥＭ  ＢＩＯＳのブロックが有効であることを保証するために利用される。
【０００９】
ＳＩＣが実行された後、制御がＯＥＭ  ＢＩＯＳに渡される。このＯＥＭ  ＢＩＯＳは、オープンソースコードの、ＵＥＦＩ（Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ）（例えば、２００６年２月２６日のＵＥＦＩ仕様書バージョン２．０）に従ってインプリメントされてもよい。あるいは、ＩＥＥＥオープンファームウエアインスティテュート１２７５−１９９４に従ってインプリメントされてもよい。あるいは、従来のＢＩＯＳまたは、専用のＯＥＭブートコードによりインプリメントされてもよい。これらは、複数のＯＳをブートすることができる。ある実施例では、このＳＩＣは、パッチを実行するために利用されてもよい。例えば、エラーを回復したり、バイナリ変換を実行したりしてもよい。また、ＳＩＣは、特定のメモリブロックのプロテクトの設定を行ってもよい。例えば、バイナリ変換のためのメモリブロックを隠したり、エラーのハンドリングを行ったり、ＯＳからは見えず、かつランタイムの際に実行するシリコン製造業者によるその他のコードをハンドリングしてもよい。このようにして、プロセッサが、マイクロコードＲＯＭ（ｕＲＯＭ）オフロード、コプロセッサ・サポート等のための予備のコードを使用し、マシンがサードパーティＯＥＭコードを実行する前に、ＳＩＣがこのメモリを提供するようにさせることによって、このメモリのサブセットをプロセッサが利用することを可能とする。
【００１０】
様々な実施例において、ＳＩＣは、例えばフラッシュあるいはその他の不揮発性メモリとして、ＯＥＭ  ＢＩＯＳに組み込むために、バイナリーコードで提供されてもよい。あるいは、ＳＩＣは、プロセッサパッケージの不揮発性記憶領域にインプリメントされてもよい。したがって、実施例において、プロセッサ（またはその他のシリコン）製造業者は、ソースコードではなく、バイナリモジュールを顧客に提供することができる。これによって、より強固なＩＰ保護が提供される。更に、シリコンと共にＢＩＯＳビルディングブロックを提供することによって、顧客の数が増加しても、技術的なサポートのコストは軽減できる。
【実施例】
【００１１】
図１は、本発明の一実施例に従った、プラットフォームから独立した（ｐｌａｔｆｏｒｍ  ｉｎｄｅｐｅｎｄｅｎｔ）ＢＩＯＳのコンポーネントのブロック図を示している。これは、ＳＩＣに組み込むことができる。プラットフォームから独立させることによって、内在するコンポーネントは、マシンの特徴（例えば、メモリのタイプ、リンクスピード、利用できる電圧等）に依存せずに、あらゆるプラットフォームにおいても実行できる。後述するように、これに代えて、プラットフォームに従属したものも、プラットフォーム製造業者データファイルによって記述しておくことができる。例としては、例えば、システムボード等の情報をパラメータとして規定することができる。サードパーティのコードに制御を渡す前に、基本的なイニシャライゼーション（例えば、信用のルートを確立するリンクイニシャライゼーション）を行う特定のコンポーネントをＳＩＣによって実行することができる。このＳＩＣによる時間的な隔離によって、パワーオンリセットの際に、プロセッサがハードウエアを所有していることの保証を提供する。そして、制御をサードパーティのコードに渡す前まで、ＳＩＣコードのみが実行される。図１に示すように、ＳＩＣコンポーネントは、イニシャルプログラムローダ（ＩＰＬ）２０を含んでもよい。これは、サードパーティのコードの前にＳＩＣの残部を見つけ、ローディングする役目を果たす。なお、このローダはＳＩＣの一部と認識しなくてもよい。ＳＩＣのコンポーネントは、一時的なものであり（ｔｒａｎｓｉｔｏｒｙ）又は、永続的なもの（ｐｅｒｓｉｓｔｅｎｔ）でもある。永続的なものとしては、アクティブなもの（プラットフォームイニシャライゼーション（ＰＩ）モジュールのように振る舞うもの）又はパッシブなもの（新しい命令を介するライブラリのように振る舞うもの）がある。図１の実施例において、ＳＩＣ１０は、埋め込まれた中央処理装置（ＣＰＵ）ロジック（ＥＣＬ）３０を含む。これは、オンボードの相互接続などのインタープロセッサロジックをイニシャライズする。双方のリンクのトレーニング及びメモリイニシャライゼーションは、リンクの両端の間の通信を含む。リンクについては、プロセッサは、他のプロセッサ又は入出力（ＩＯ）ハブに接続されてもよく、そして、データをやりとりするための最適な周波数及びリンク幅を決定することができる。このＥＣＬモジュールは、一時的（ｔｒａｎｓｉｔｏｒｙ）なものであってもよい。ある実施例において、リンクイニシャライゼーションは、ローパワー状態からのレジュームオペレーションにおいて、メモリの内容にダメージを加えずに再実行されてもよい（例えば、ＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ））仕様バージョン４．０（２００９年６月６日）。
【００１２】
ＳＩＣ１０は、更に、メモリをイニシャライズするために、埋め込まれたメモリロジック（ＥＭＬ）２０を含んでもよい。このコンポーネントは、ランタイムの間、一部は一時的なものであり、一部は永続的なものである（例えば、温度スロットリングの取り扱い、又はエラーの取り扱いが挙げられる）。メモリイニシャライゼーションは、アドレッシングを設定することを含む。異なるコンポーネントからは異なるメモリとして見える（ｖｉｅｗｓ  ｏｆ  ｍｅｍｏｒｙ）。例えば、ＣＰＵは、プロセッサ物理アドレスを持つ。ダイナミックランダムアクセスメモリ（ＤＲＡＭ）は、ＤＲＡＭ物理アドレスを持ってもよい。そして、ある実施例では、プラットフォーム物理アドレスが手当てされてもよい。したがって、どのようにリンクアドレスデコーダがプログラムされているかによって、メモリの見え方は異なる。プロセッサのための隔離メモリ（ｓｅｑｕｅｓｔｅｒｅｄ  ｍｅｍｏｒｙ）を確保するために、アドレスデコーダ及びメモリデコーダのサブセットが、そのプロセッサのためにプログラムされてもよい。この隔離したメモリは、システムオペレーションの際にプロセッサに対して独占的に使われてもよい。そして、マイクロコードオフロード、バイナリトランスレータ、ライセンシング情報、管理情報等を格納してもよい。加えて、予約ロジック（ｒｅｓｅｒｖｅｄ  ｌｏｇｉｃ）５０は、プラットフォームに独立のロジックの他の機能をサポートするために用いられてもよい。実施例を図１に示したが、本発明はこの点に限定されるものではない。
【００１３】
図２を参照すると、本発明の実施例に従ったブロック図が示されている。図２におけるシステム１００は、ハードウエア及びソフトウエアの複数のレイヤを含んでいる。同様に、図に示されたハードウエアは概略であって、所定のシステムにおいては、更に多くのコンポーネントが存在してもよい。更に、ソフトウエア部分は、異なる位置に、複数のコンポーネントが記載されているが、ＳＩＣの部分は、異なる実施例においては、異なる位置に存在しうる点に留意すべきである。このシステムの基本的なハードウエアに関しては、ハードウエア１１０は、１つ以上のプロセッサ、メモリ、入出力デバイス等の様々なコンポーネントを含んでもよい。しかしながら、図面を分かりやすくするために、図２の実施例には、幾つかのコンポーネントのみを示している。特に、コアにおける実行のため、プロセッサコア１１５及び対応するマイクロコード１２０が示されている。様々な実施例において、コア１１５は、マルチコアプロセッサの複数のコアを代表するものとして示されている。マルチコアプロセッサの各々は、自身のマイクロコード記憶領域を持っている。加えて、様々なインプリメンテーションにおいて、プロセッサパッケージは、更に、統合メモリコントローラ（ＩＭＣ）１２５を含んでもよい。これは、システムメモリ１３０に接続され、１つの実施例においては、デュアルインラインメモリモジュール（ＤＩＭＭ）例えば、ダブルデータレートＤＤＲ−３ＤＩＭＭである。更に示されているように、ＩＭＣ１２５は、周辺機器コントローラハブ（ＰＣＨ）１３５に接続されている。これは、更に他のデバイス、例えばＴＰＭ（ｔｒｕｓｔｅｄ  ｐｌａｔｆｏｒｍ  ｍｏｄｕｌｅ）１４０及び周辺装置モジュール１４５に接続されている。様々な装置からＰＣＨ１３５への接続はＬＰＣ（ｌｏｗ  ｐｉｎ  ｃｏｕｎｔ）バスを介してなされてもよい。なお、本発明の技術的範囲はこれに限定されることはない。限定されたコンポーネントが示されているが、異なる実施例においては、更に多くのコンポーネントが存在してもよいことは言うまでもない。
【００１４】
ＳＩＣモジュール１５０は、プロセッサハードウエアと密接に接続されている。様々なインプリメンテーションにおいて、ＳＩＣモジュールは、プロセッサパッケージ内に存在し得るフラッシュメモリのような不揮発性ストレージにインプリメントされてもよい。あるいは、ＳＩＣモジュールは、バイナリの形式でプロセッサ製造業者からＯＥＭに提供されてもよい。ＯＥＭにおいて、これをＢＩＯＳに組み込む。したがって、実施例によって、ＳＩＣの実際の場所は異なる。１つの実施例において、ＳＩＣは、ＯＥＭ  ＢＩＯＳの一部であってもよい。例えば、マザーボードに装着されたフラッシュデバイスに統合されてもよい。あるいは、例示としては、ＳＩＣモジュールは、別個のコードブロックとして示されてもよい。特に、複数のＳＩＣコードのレビジョン１５２１−１５２ｎを含んでもよい。すなわち、以下に詳述するように、ＳＩＣはフィールドにおいてアップデートされてもよい。コードに加えて、ＳＩＣには、様々なデータブロック１５４１−１５４ｎが存在してもよい。１つの実施例において、シリコン製造業者のポリシが、このＳＩＣデータブロックに組み込まれてもよい。これは、在庫管理ユニット（ＳＫＵ：ｓｔｏｃｋ  ｋｅｅｐｉｎｇ  ｕｎｉｔ）に基づいてもよい。このような情報は、パーツの等級（ｐａｒｔ  ｇｒａｄｉｎｇ）を示す電圧及び温度レーティング、サポートされる機能、及び／又は、温度―物理的シリコン特性が含まれてよい。これらの様々なコード及びデータブロックにアクセスするために、ファームウエアインターフェーステーブル（ＦＩＴ）１５５が提供されてもよい。このコード及びデータブロックは、キーペア構成によってプロテクトされてもよい。様々な実施例において、ＳＩＣ１５０は、暗号によってハードウエアに従属しており、かつ、ランチは、コアマイクロコード１２０によって調整される（ｍｅｄｉａｔｅｄ）。更に、システムソフトウエアは、ＯＥＭ  ＢＩＯＳの形式をとってもよい。これには、ＵＥＦＩ標準に基づくプリブートコードが含まれる。このコードは、様々なファームエアにボリュームに保存されてもよい。そして、セキュリティイニシャライゼーションコード（ＳＥＣ）、プリＥＦＩ（ＰＥＩ）コード、及び、ドライバ実行環境（ＤＸＥ）及びブートデバイスセレクト（ＢＤＳ）コードが含まれてもよい。論理的な説明をすると、これらのコードは、第１のコードモジュール１６０及び第２のコードモジュール１７０にセグメント化されてもよい。ファームエアボリュームは、不揮発性メモリの論理パーティションであり、これには、ＢＩＯＳ及びその他のローレベルソフトウエアが含まれてもよい。一般的に、モジュール１６０及びモジュール１７０の各々は、サードパーティが実行可能なコードを含むファームウエアボリュームであってもよい。第１のコードモジュール１６０は、ＯＥＭプラットフォームのイニシャライゼーションを実行するために利用されてもよい。そして、ＳＩＣコード（ブロック１６２）からメモリアパーチャ（ｍｅｍｏｒｙ  ａｐｅｒｔｕｒｅ）を取得する。制御は、その後、コードブロック１６４に渡され、物理的な存在の分析（ｐｈｙｓｉｃａｌ  ｐｒｅｓｅｎｃｅ  ａｎａｌｙｓｉｓ）を行い、セキュアなハ��シュオペレーションを実行する。これによって、メインファームエアボリューム１６８の測定をする前に、セキュアなファームエアアップデートメカニズム１６６を実行することが可能となる。もし、全ての認証にパスすると、制御は第２のコードモジュール１７０に移る。これは、ＤＸＥコードを含んでもよい。そして、ＵＥＦＩセキュアブロックモジュール１７４を実行してもよい。例えば、ＡＣＰＩメモリに記憶された計測ログ（ｍｅａｓｕｒｅｍｅｎｔ  ｌｏｇ）１７６を使用する。そして、ＯＳローダ及びドライバ１８５が実行されてもよい。これは、後にＯＳ１８０をロードする。ＯＳは、ＵＥＦＩ準拠のＯＳであってもよい。他の実施例において、１つ以上のオプションＲＯＭ１９５を介して、レガシーＯＳ１９０がインプリメントされてもよい。ＳＩＣイニシャルプログラムローダのインプリメンテーションは、ＳＩＣのプラットフォームへバインドするために選択されたアプローチに依存する。これについては、以下に詳述する。一実施例において、パッチアットリセット（Ｐ＠Ｒ）のオペレーションが発生する。この場合、プロセッサがパッチを実行すると、ＣＰＵのコアマイクロコード又は他のロジックは、ＣＰＵフラッシュ内またはＯＥＭフラッシュ内に、ＳＩＣセクションを探す。または、ＳＩＣをランチするイニシャルプログラムロード（ＩＰＬ）ロジック内のコアパッチを介して、ランチする。ＣＰＵの外又はＣＰＵ認証されたエレメントに、ＳＩＣが存在する場合、ＳＩＣバイナリを正当と認めるために、ローディングの前に認証が実行される
さて、図３Ａを参照すると、本発明の実施例に従った、ＳＩＣをランチ（ｌａｕｎｃｈ）するフローを示している。図３Ａに示されるように、オペレーションはプロセッサのリセット（ブロック２１０）によって開始される。最小限のローレベルオペレーションが、リセットに応答して、プロセッサによって実行される。次に、コアマイクロコードによって、パッチがロードされてもよい（ブロック２１５）。コアマイクロコードは、コアマイクロコードパッチをポイントしているＦＩＴポインタを含むファームウエアインターフェーステーブルにアクセスする。ある実施例において、テーブルは、ＩＰＬをポイントしてもよい。１つの実施例において、パッチメモリはＦＩＴをも含むＯＥＭフラッシュにストアされてもよい。テーブルの各エントリは、所定のコードの位置をポイントしている。このパッチをロードした後、ＳＩＣは、コアマイクロコードを介してランチされる（ｌａｕｎｃｈｅｄ）（ブロック２２０）。異なるインプリメンテーションにおいて、パッチは、ＩＰＬを含んでもよい。ＩＰＬは、コアパッチロードの一部として検証される。そして、これは独自のインテグリティメカニズムを実行する。例えば、ＳＩＣを検証する別個のキーペアである。１つの実施例では、ＩＰＬは、マイクロコードの一部であってもよい。したがって、図３Ｂに示すように、プロセッサのリセット（ブロック２３０）、そしてパッチローディング（ブロック２３５）の後、パッチの実行がなされる。これには、ＩＰＬ（ブロック２４０）が含まれ、これは、その後ＳＩＣをランチ（ｌａｕｎｃｈ）する（ブロック２５０）。
【００１５】
他のインプリメンテーションにおいて、プロセッサリセットの時に、認証されたコードモジュール（ＡＣＭ：ａｕｔｈｅｎｔｉｃａｔｅｄ  ｃｏｄｅ  ｍｏｄｕｌｅ）がランチされ、適切なシャットダウン、及び／又は、メモリにゼロを書き込むこと（ｚｅｒｏｉｎｇ  ｍｅｍｏｒｙ  ｏｕｔ）を実行し、その後ＢＩＯＳコードのランチ（ｌａｕｎｃｈ）がなされる。これらのオペレーションは、ＯＥＭ  ＢＩＯＳにおいてハッシュの実行を含んでもよい。そして、認証されたコードモジュールによって、ＴＰＭへのアクセスが行われてもよい。このようなＡＣＭは、ＳＩＣ又はＩＰＬを埋め込むことができ、そして、例えばサードパーティＢＩＯＳ内（例えばマザーボードのフラッシュデバイス）にＳＩＣを見つけられるようにする。したがって、他のインプリメンテーションにおいて、ＳＩＣは、認証されたコードモジュールからランチされてもよい。図４Ａには、本発明の他の実施例に従った、ＳＩＣのランチのフローが示されている。ブロック３１０においてプロセッサがリセットされた後、ＡＣＭは、コアマイクロコードによってランチされてもよい（ブロック３１５）。これに対して、ＳＩＣは、ＡＣＭのクリーンシャットダウンにおいてランチされる（ブロック３２０）。更に他のインプリメンテーションにおいては、ＩＰＬは、ＡＣＭのクリーンシャットダウンにおいてランチされてもよい。したがって、図４Ｂに示されるように、プロセッサのリセット後（ブロック３５０）、ＡＣＭがランチされ（ブロック３６０）、そして、ＡＣＭのクリーンシャットダウンにおいて、ＩＰＬがランチされ（ブロック３７０）、そして、ＳＩＣがランチされる（ブロック３８０）。
【００１６】
ＳＩＣの実行後、制御はＢＩＯＳ（ＳＩＣはこの一部である）に移される。例えば、制御は、マシンのリセットベクトルに移される。そして、ＳＩＣによって、ＦＩＴエントリがアクセスされ、ＰＩモジュールにおいて、ＵＥＦＩエントリポイントを介して、ＯＥＭ  ＢＩＯＳの実行が開始される。
【００１７】
あるインプリメンテーションにおいて、利用できるＰＩコードが、ＳＩＣの実行のために利用される。例えば、「ＳＥＣ」モジュールは、何らハードウエアの変更なしに、論理的に「ＳＩＣ＿ＩＰＬ」とリネームされる。これは、図５Ａに示されている。ここにおいて、プロセッサリセット（ブロック４１０）で、ＩＰＬがランチされ（ブロック４１５）、そして、その後ＳＩＣがランチされる（ブロック４２０）。その他の方法としては、ＳＩＣをイニシャライゼーションＲＯＭ（ＩＮＩＴ  ＲＯＭ）に埋め込むことである。すなわち、フラッシュは、結局のところ、サードパーティのＢＩＯＳ又はＯＳアドレススペースにマッピングされないことになる。これは、図５Ｂに示されている。ここで、プロセッサのリセット（ブロック４３０）において、ＩＰＬを含むＩＮＩＴ  ＲＯＭが実行され、ＩＰＬは、ＳＩＣをランチする（ブロック４３５、４４０及び４５０）。更に他のインプリメンテーションにおいては、（例えばＰＩ  ＳＥＣ又はＩＮＩＴ  ＲＯＭにより）プロセッサベースのコードを用いて、独立したＳＩＣのランチが行われる。
【００１８】
「ＳＥＣ」の場合、認証は、ＳＩＣのランチの後に行われる。すなわち、このアプローチでは、ＢＩＯＳブートブロックが信用のコアルート（ＣＲＴＭ：ｃｏｒｅ  ｒｏｏｔ  ｏｆ  ｔｒｕｓｔ）を意味する。このモデルのセキュリティの検討は、ＳＩＣのインテグリティを担保することが含まれる。すなわち、バイナリの出所は、シリコン製造業者である。ＳＩＣを認証されたコードモジュール又はパッチにバインドすることは、これらのバイナリに既に使われているインテグリティの有効範囲を利用する１つのメカニズムである。あるいは、他のモデルとしては、ＳＩＣ＿ＩＰＬを上述のエンティティに統合することである。このＳＩＣ＿ＩＰＬは、ＳＩＣのインテグリティチェックを確保する責任を担うこととなる。しかし、リセット時にロードされるエラッタパッチ（ｅｒｒａｔａ  ｐａｔｃｈ）の残存するロジック（ｅｘｔａｎｔ  ｌｏｇｉｃ）、ＢＩＯＳ  ＡＣＭ、ＩＮＩＴ  ＲＯＭ、又は他のリセットタイムに実行可能なものは、ＳＩＣから分離（ｄｅｃｏｕｐｌｅｄ）される。これは、アップグレードのメカニズムを可能とする。この場合、ＳＩＣは、以前のバイナリエンティティとは異なる終了時期（ｄｉｆｆｅｒｅｎｔ  ｃａｄｅｎｃｅ）において、変化する。このデカプリング（ｄｅｃｏｕｐｌｉｎｇ）は、その場かぎりで（ａｄ  ｈｏｃ）混合された様々なバージョンのＳＩＣ＿ＩＰＬホストモジュール及び連続したＳＩＣインスタンスがあることを意味するものではない。むしろ、チューブル（ｔｕｐｌｅ）（ＳＩＣ＿ＩＰＬホスト、ＳＩＣ）は、一緒に検証される。これによって、ＳＩＣ＿ＩＰＬホスト及びＳＩＣのサポートされたバージョンが、アップデートを介してサポートされる。そのため、検証されていないコンビネーションを介して、ロールバック及び他のアタックにさらされることはない。シリコン製造業者によって初期のイニシャライゼーションの制御ができるようにするために、様々なデータモジュールが存在してもよい。一実施例において、全てのＳＩＣデータモジュールは、ＳＩＣに関連しており、そして、プロセッサ製造業者、ＯＥＭ、及びエンドユーザにより提供されたデータを含む。したがって、プロセッサ製造業者のデータに加えて、上述のように、ＳＩＣプラットフォームデータエンコーディング（ＰＤＥ）、すなわちプラットフォーム製造業者（ＰＭ）により作られ、システムボード結合されたデータ構造にアクセスできてもよい。一実施例において、ＰＤＥは、ＵＥＦＩ  ＰＩプラットフォーム構成データ（ＰＣＤ：Ｐｌａｔｆｏｒｍ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ）を含むことができ（なお、これに限られるものではない）、例えば、ファームウエアインターフェーステーブル（ＦＩＴ）エントリによって参照される。ＰＤＥは、パワーマネージメント（ＰＭ）ポリシ、及び発見できない（ｎｏｎ−ｄｉｓｃｏｖｅｒａｂｌｅ）、ボードに特有な（ｂｏａｒｄ−ｓｐｅｃｉｆｉｃ）情報を提供する。プラットフォームデータエンコーディングは、プロセッサがどのようにボードに組み込まれたかに関する詳細を提供する。例えば、ボードがファンレスデザインであるか否かである。この情報には、ベンダによってデザインされた周波数モード設定、特定のシステムマネジメントバス（ＳＭＢＵＳ）のルーティング、メモリＤＩＭＭ上のＳＰＤ（ｓｅｒｉａｌ  ｐｒｅｓｅｎｃｅ  ｄｅｔｅｃｔ）ＥＥＰＲＯＭのアドレス等が含まれる。あり得る情報としては、ＰＤＥにおける誤った情報によって、ＳＩＣが安全に失敗するということである。例えば、ベンダによる誤り、又は、ＲＯＭに対してアタックするマルウエアによる場合が挙げられる。他のモデルとしては、信頼されたＰＤＥである。例えば、ＰＭファシリティにおいてシリコン製造業者のツールを持つことによって、ＰＭの入力を取り除き、リモートのシリコン製造業者のサーバを使ってＰＤＥにサインし、それをＰＭに戻し、引き続きプラットフォームの統合を行うことである。ＰＤＥのほかに、出荷後（ｐｏｓｔ−ｓｈｉｐ）に設定し、ＳＩＣに移すことが挙げられる。これらは、プラットフォームオーナ（ＰＯ）がもたらす典型的な変更である。特定のデータエンコーディング及び格納は、オーナデータエンコーディング（ＯＤＥ）と呼ばれる。このＯＤＥは、異なるシステムにおいて異なる場所で行われる。例えば、信頼されたコンピューティンググループ（ＴＣＧ）ＴＰＭ不揮発性（ＮＶ）データ位置そして、ＳＩＣに予約されたＮＶインデックス、又はオーナがオーソライズしたその他の場所が挙げられる。このＯＤＥに存在するデータのタイプとしては、オーナの選択が含まれ得る。例えば、メモリインターリーブ、機能のイネーブル／ディスエーブル（例えば、同時マルチスレッディング（ＳＭＴ））が挙げられる。同様の課題がＯＤＥに関する信頼に対しても内在している。すなわち、ＯＤＥに対するオーナアップデートが悪意であったり、間違っていたりした場合、ＳＩＣは、安全に失敗しなければならない。
【００１９】
上述の検討は、ＳＩＣのイニシャライゼーション時に焦点を当てたものである。実施例では、ＳＩＣはランタイムの間においても利用される。例えば、信頼性、可用性、保守性（ＲＡＳ：ｒｅｌｉａｂｉｌｉｔｙ−ａｖａｉｌａｂｉｌｉｔｙ−ｓｅｒｖｉｃｅａｂｉｌｉｔｙ）を目的とした利用性の高いサーバが挙げられる。特に、ブート／イニシャライゼーションの際になされる特定のオペレーション、例えば、リンクイニシャライゼーション、及びメモリイニシャライゼーションのコードは、ランタイムにおいても実行される。このランタイムのアクティビティは、全てＡＣＰＩマシン語（ＡＭＬ）フローに開示されてしまう。こんため、ＯＳパワーマネージメント（ＯＳＰＭ）コードは、ファームウェアの力を借りずにアクションを実行することができる。しかしながら、実際には、これらのフローの多くは、システムマネジメントモード（ＳＭＭ）のアシストを利用している。このＳＭＭのインプリメンテーションは、ＡＣＰＩ及びチップセットアクションを補完するハンドラであり、ＤＩＭＭのホットアッドによるメモリイニシャライゼーションなどのアクションを完了するものである。これは、ランタイムにおいてＳＩＣを必要とする。しかしながら、ＳＭＭハンドラはＯＥＭの制御下にあるため、メモリイニシャライゼーションにおいて必要なＩＰは、ＯＥＭに共有される。これに対して、本発明の実施例を用いた場合、ＳＩＣは、ランタイム時においてこのような開示をすることを避けることができる。
【００２０】
図６を参照すると、本発明の実施例に従った、ランタイムＳＩＣ実行を行うための方法のフローが示されている。図６は、例えばホットアッドオペレーションのように、システムに対して動的な変更を提供する、高度に利用されるシステム上でのランタイムオペレーションの場合を示している。更に、図６の方法５００は、ＡＣＰＩフロー環境において利用される。この場合、制御は通常、ＳＭＭコンテキストで流され、ＡＣＰＩリクエストをハンドリングするための特定のタスクを実行する。図６に示すように、方法５００は、ホットプラグインディケーションを受け取る（ブロック５１０）。このホットプラグインディケーションとは、新しいコンポーネントがシステムに加えられるインディケーションである。このようなコンポーネントは、マルチプロセッサシステムの新しいプロセッサ、追加メモリ等である。更に、図６の実施例では、ホットプラグオペレーションであるが、実施例は、システムへの他の動的な変更にも同様に適用できる。その例としては、例えば、取り除くイベント、フェイルオーバイベント等が挙げられる。ホットプラグインディケーションを受け取ると、パワーマネージメントオペレーションは、パワーマネージメントオペレーションがトリガーされ、ホットプラグイベントがハンドリグされる（ブロック５２０）。このパワーマネージメントオペレーションは、ＡＣＰＩインプリメントオペレーションであり、例えば、ＡＣＰＩ  ＡＭＬフローに従う。従来においては、このようなフローは、ＳＭＭイベントをトリガーし、様々なタスクをハンドリングし、これらのタスク（例えば、イニシャライゼーション等）が、ホットプラグイベントの際に実行されていた。ＳＭＭモードは、所定のＯＥＭによってインプリメントされているため、しかしながら、ＯＥＭは、基本的な（例えばシリコン製造業者の）ＩＰにアクセスする必要がある。このため、様々な実施例において、これに代えて、パワーマネージメントオペレーションは、一時的な（ｔｒａｎｓｉｔｏｒｙ）ＳＩＣを呼び出すためのコードを含める（ブロック５３０）。この一時的なＳＩＣは、ＳＭＭが本来実行しなければならないイニシャライゼーション等の様々なタスクを実行する。更に具体的には、ブロック５４０に示すように、このＳＩＣは、例えばホットプラグコンポーネントなどのイニシャライゼーションを実行する。これは、１つ以上のＦＩＴエントリ及びパワーマネージメントオペレーションからの入力に基づいて実行される。例えば、ＡＣＰＩ  ＡＭＬは、様々な入力情報を提供する。一実施例において、ＡＣＰＩフローにおいて、インタープリタは、ＦＩＴテーブルをアクセスすることができ、また、ＡＣＰＩネームスペースにおけるルーチンＳＩＣモジュールを含ませる。そして、時間的アイソレーションを提供する。他の実施例において、ＡＣＰＩは、コールバックのために、ＣＰＵドライバを起動することができる。そして、パッチモードを実行するようＳＩＣを起動する。あるいは、このＳＩＣモデルが認証されたコードモジュールである場合、ＥｎｔｅｒＡｃｃｓ命令を介して実行する。ＡＣＰＩ  ＡＭＬを用いて、メモリへのリード又はライト、あるいは、入出力位置の探索（ＩＯ  ｌｏｃａｔｉｏｎ）が実���される。したがって、一実施例においては、モードを示すために、人工的な（ｓｙｎｔｈｅｔｉｃ）周辺デバイスアドレスが、チップセットに合成される。この状態において、ＡＭＬは、チップセットの部分と通信していると信じ、そしてチップセットは、実際にＳＩＣを起動する。他のアプローチとしては、初期の一時的なＳＩＣコードを実行しているとき、これは隔離したメモリ（ｓｅｑｕｅｓｔｅｒｅｄ  ｍｅｍｏｒｙ）にストアされ、その後、この合成された周辺デバイスを通じて再度起動され、リロードされる必要はない。したがって、異なる実施例においては、このインディケーションに応答して、永続的な（ｐｅｒｓｉｓｔｅｎｔ）ＳＩＣコードが実行されるか、あるいは、一時的なＳＩＣコードが実行される。
【００２１】
イニシャライゼーション及び他のオペレーションの実行の後、一時的なＳＩＣは、アンロードされ、制御はパワーマネージメントオペレーションに返還される（部録５５０）。このようなパワーマネージメントオペレーション、例えば、ＡＣＰＩ  ＡＭＬフローの継続的な実行は、システムによる追加的なコンポーネントの追加の準備をするためになされる。図６に、この典型的なインプリメンテーションを示したが、本発明はこれに限定されるものではない。
【００２２】
上述のランタイムＳＩＣ（ＲＴ＿ＳＩＣ）オペレーションは、リセットベクトルから実行される上述のＳＩＣ（本明細書ではブートタイムＳＩＣ（ＢＴ＿ＳＩＣ）と呼ぶ）と区別される。ＲＴ＿ＳＩＣは、ＳＩＣ＿ＩＰＬと類似した顕著なＩＰＬプロセスを持つ。このプロセスは、正しいＳＩＣモジュールを検証し、これによってＳＩＣのコンテンツがシステムボード制作者に対し不可視であることを確保する。この目的のために、一時的なまたは永続的な二つのモジュールのうち少なくとも１つのランタイム起動がインプリメントされる。一時的なモデルにおいては、ＡＣＰＩ  ＡＭＬフローが（例えば、認証されたコードモジュール（ＡＣＭ）として）ランタイムバイナリモジュールを起動することができる。ＡＣＭとして構築されたランタイムＳＩＣは、ＦＩＴからＳＩＣデータを参照することができ、かつ、そのイニシャライゼーションのアクションを実行することができる。しかし、実行後、それ自身はアンロードされる。このモードにおいて、ランタイムＳＩＣのインテグリティの保護に対して、危険にさらされる範囲（ｗｉｎｄｏｗ）は、単純にそのアクションの実行の間である。なお、プラットフォームに対する全時間に亘ってのＳＩＣの保護について心配することはない。これは、既に説明したブートタイムＳＩＣの信用モデルを補うものである。この例の場合、時間的なアイソレーションを採用している。すなわち、これは最初実行され、その後、自身をアンロードする。
【００２３】
もう一つのランタイムサポートは、永続的なランタイムＳＩＣである。このモデルの場合、ブートタイムＳＩＣが付加的なＩＰＬを持つ。すなわち、ランタイムＳＩＣ＿ＩＰＬであり、これは、ランタイムコードの環境及び実行コンテキストを作る。ランタイムＳＩＣに対するポリシの入力は、コントロール／ステータスレジスタ（ＣＳＲ）を持つ人工的な周辺デバイスである（例えば、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ））。このＳＣＲは、ランタイムアクションをパラメータ化する。例えば、ホットプラグ又は他の命令（ｉｎｊｕｎｃｔｉｏｎ）が挙げられる。これらのＳＣＲは、ランタイム永続性ＳＩＣ（ｒｕｎｔｉｍｅ  ｐｅｒｓｉｓｔｅｎｔ  ＳＩＣ）によって発行（ｐｕｂｌｉｓｈ）される必要があり、ＳＩＣは、これらのディレクティブ（ｄｉｒｅｃｔｉｖｅ）に従って動作する。すなわち、これらの機能（ｃａｐａｂｉｌｉｔｉｅｓ）に対するホストプラットフォームのインターフェースは、ＳＣＲを介する。したがって、これはホストに対してハードウエアのように見える。実行の内容は、プラットフォームの存続期間全体に渡って保護しなければならず、ランタイム永続性ＳＩＣに対しては、トラストモデルは挑戦的なものであるため、ＣＭＡ（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｍｅｍｏｒｙ  ａｐｅｒｔｕｒｅ）が、ランタイム永続性ＳＩＣの実行環境をカバーするために用いられ得る。
【００２４】
実施例は、更に、ＳＩＣのアップデート及びマイグレーションを規定する。工場及びユーザの構成（ｃｏｎｆｉｇｕｒａｔｉｏｎ）を維持するため、プラットフォームのオーナ又は製造業者の設定が維持される。例えば、ＳＩＣ＿ＤＡＴＡ＿ｒｅｖ１からＳＩＣ＿ＤＡＴＡ＿ｒｅｖ２の変更は安全なトランスフォーメーションであり、すなわち、ＳＩＣ＿ＤＡＴＡ＿ｒｅｖ２  ＝  Ｔ  （ＳＩＣ＿ＤＡＴＡ＿ｒｅｖ１）である。このトランスフォーメーションＴ（）の一実施例としては、ＳＩＣ＿ＤＡＴＡ＿ｒｅｖ２には定義されていないＳＩＣ＿ＤＡＴＡ＿ｒｅｖ１の工場設定のいかなるものも取り除き、そして、インテグリティ又は秘密性メタデータブロック（例えば、暗号的な再署名、及び／又は、再暗号化）の再生（ｒｅｇｅｎｅｒａｔｉｏｎ）をＳＩＣ＿ＤＡＴＡ＿ｒｅｖ２に適用する。また、セキュリティの目的から、ＳＩＣ＿ＩＰＬ及びＳＩＣ＿ＣＯＤＥは、以前のレビジョンへのアップデートの許可を回避するよう構成することができる（例えば、ＳＩＣ＿ＣＯＤＥ／ＣＯＤＥ＿ｒｅｖ”ｎ”を持つシステムにＳＩＣ＿ＣＯＤＥ／ＤＡＴＡ＿ｒｅｖ”ｎ−１”を適用することを回避する）。この基本原理は、システムの導入のモデルは、プロセッサ又はチップセット製造業者がレビジョンｎ−１に存在するセキュリティ上の欠陥をレビジョンｎによって製造業者がフィックスをリリースしてこれに対処したということである。アタックは、しばしばフィックスをリバースエンジニアリングして、レビジョンｎ−１へのアップデートをシステムに適用することを試み、エラーの再発を起こさせることを目論むものである。このような、ＳＩＣ＿ＣＯＤＥ及び  ＳＩＣ＿ＩＰＬにおけるアンチロールバックへの対処は、このようなアタックに対する保護を提供する追加的なポリシである。
【００２５】
このようなアップデートは、後に発見された問題に対する検討である。シリコンの誤り（ｅｒｒａｔａ）、セキュリティのフィクスは、カスタマーから報告された製品の欠陥に対処するため、プロセッサの出荷後の環境で見つかったもの、あるいは、利用上の不満（例えば、パワー、パフォーマンス、フィックス）によるものである。
【００２６】
コアマイクロコード及びファームエアインターフェーステーブル（ＦＩＴ）の増大によって、ＳＩＣ＿ＣＯＤＥ及びＳＩＣ＿ＤＡＴＡブロックが複数許容されるようになった。このコード及びデータは、レビジョン識別子に加えて、それらの過去の暗号化メタデータ（モジュールの機密性のためのもの、インテグリティのためのＣＭＡ及び署名が用いられる）。後者のレビジョンは、後者の過去の設定をマイグレートすることを仕組むために利用される。しかし、レビジョンは、コード及びデータが規定されたアクセス基準を持つようにするために使われる。例えば、「過去のバージョンへのロールバック禁止」は、アタックを回避することを目的とする。アタッカーは、既知のセキュリティ欠陥を持つ過去のＳＩＣ＿ＣＯＤＥ  及び  ＳＩＣ＿ＤＡＴＡを意図的にシステムに適用して、その後に指摘された脆弱性を再度導入することができる。
【００２７】
図７を参照すると、本発明の実施例に従った、システムのブートタイムの概略ブロック図が示されている。図７に示されるように、このブートタイムフローは、複数のＳＩＣ実行の適切な１つを決定することを示している。図示するように、電源オンの最初のフェーズで、コアマイクロコード７１０の実行が開始される。このコアマイクロコードは、ＦＩＴ７２２を探し、そして、１以上のＳＩＣモジュール７２４及び７２６を認証する。この認証は、異なる実施例において、様々な形態をとってもよい。例えば、あるインプリメンテーションにおいては、この認証は、ハッシュ（例えばＳＨＡ−２５６）の実行、及び／又は、暗号デジタル署名（例えば、ＲＳＡ（Ｒｉｖｅｓｔ  Ｓｈａｍｉｒ  Ａｄｅｌｍａｎ）、ＥＣＣ（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ  ｃｏｄｉｎｇ）、ＤＳＡ（ｄｉｇｉｔａｌ  ｓｉｇｎａｔｕｒｅ  ａｌｇｏｒｉｔｈｍ））を含む。そして、プロセッサハードウエアにより、このハッシュ、及び／又は、デジタル署名と、プロセッサ又はチップセットの複合体に格納されたホワイトリスト（許可されたもの）及び／又はブラックリスト（禁止されているもの）とを比較することにより、プラットフォームのオーナシップを確保する。このフェーズは、ＳＩＣを利用するかのポリシ決定によるＳＩＣのランチによって終了する。図示するように、ＦＩＴ７２２の１以上のエントリに基づいて、対応するＳＩＣデータ７２８と共に、複数のＳＩＣレビジョン７２４及び７２６の１つが選択され得る。上述のように、ＳＩＣデータは、プラットフォーム製造業者エンコーディング、及び、エンドユーザエンコーディング、これに加えて、プロセッサ製造業者データエンコーディングが含まれてもよい。したがって、制御は、イニシャライゼーションＲＯＭ７２０が実行される第２のフェーズに移される。シリコン一体化コードのサードパーティ由来（ｔｈｉｒｄ  ｐａｒｔ−ｄｏｕｒｃｅｄ）の従来のアクティビティを実行することによって、シリコン製造者のオーソライズしたアクティビティが行われる。これには、ＳＩＣをアップグレードすることに係るポリシ（例えば、複数のＳＩＣコード及びデータブロックがある場合にいずれを使用すべきか）及び、ＳＩＣ自身のアクティビティのコンテンツを隠すことが含まれる。イニシャライゼーションＲＯＭはＳＩＣを含んでもよい。又は、ＳＩＣは、（プロセッサに対して）外部ＲＯＭ（例えばＯＥＭ  ＢＩＯＳメモリ）に含まれてもよい。ＳＩＣの実行は、プロセッサ、メモリ等に関連するリンクをイネーブルとする。制御は、第３のフェーズに移される。ここでは、一実施例において、ＵＥＦＩファームエア７３０に基づいて、更なるプラットフォームのイニシャライゼーションが実行される。ＵＥＦＩファームエア７３０は、セキュリティコード、実行前（ｐｒｅ−ｅｘｅｃｕｔｉｏｎ）イニシャライゼーション、及びＤＸＥこれ７３５が含まれてもよい。これらのコードを実行するために、様々なデバイス、バス、又はサービスドライバ７３３ｂ−ｎが実行されてもよい。このＵＥＦＩファームエアは、ＯＥＭ  ＢＩＯＳにおいてインプリメントされてもよいことに留意すべきである。制御は、その後、ＵＥＦＩインターフェースを介して、ブートマネジャ７４４によって実行されるブートデバイスセレクト（ＢＤＳ）コード７４０ａに移る。これによって、ＯＳのブートが可能となる。ＳＩＣは、一時的（ｔｒａｎｓｉｔｏｒｙ）であり、第２のフェーズでのみ存在する。これによって、空間的及び時間的な隔離（ｉｓｏｌａｔｉｏｎ）が可能となる。図７には示されていないが、ランタイムの際に、このコード又はランタイムＳＩＣは、アクセスされ得ることに留意すべきである。例えば、プラットフォームマネジメントオペレーションのために利用されうる上述の様々な動的なイベントと同様である。
【００２８】
図８には、本発明の実施例に従ったＳＩＣコードを実行する方法のフローが示されている。図示するように、方法８００は、マシンのリスタート（ブロック８１０）により開始される。特に、マイクロコードは、ＦＩＴテーブルがアクセス可能か否かを判断する（ダイヤモンド８１５）。もし、アクセスできない場合には、フラッグをセットし、ＦＩＴテーブルからのローディングが不可能であることを示す（ブロック８２３）。制御は、その後ブロック８２４に移り、ブート失敗によるリカバリ状態に入る。もし、インストールされたＦＩＴテーブルにアクセスできる場合、ＳＩＣコードエントリが、最大のレビジョン番号に対応するか否かが判断される（ダイヤモンド８２０）。これがイエスであれば、イニシャルプログラムローダがランチされる（ｌａｕｎｃｈｅｄ）（ブロック８２５）。ＩＰＬが成功した場合（ダイヤモンド８３０）、このＳＩＣが実行される（ブロック８４０）。不成功の場合には、制御は、ダイヤモンド８３５に移り、追加的なＳＩＣ  ＦＩＴエントリが存在するかが判断される。存在する場合には、制御はブロック８４０に移動し、ここでＦＩＴエントリはインクリメントされそして、制御はダイヤモンド８２０に戻る。
【００２９】
図８を更に参照すると、ＳＩＣコードが実行されているとき、制御はダイヤモンド８５０に移る。そして、正当なＳＩＣデータが存在するかが判断される。例えば、１つ以上の認証手続に基づいてこれがなされる（ダイヤモンド８５０）。もし、これが否定的であれば、制御は上述のブロック８２４に戻される。もし正当なデータモジュールが存在する場合には、制御は、ブロック８５５に移る。ここで、特定のシステムイニシャライゼーション、が実行され得る。これには、メモリイニシャライゼーション及びリンクイニシャライゼーションが含まれる。イニシャライゼーションの後、メモリ及びリンクは、自身の設定をテストする（ブロック８６０）。次に、テストがパスしたか否かが判断される（ダイヤモンド８６５）。もし、そうでない場合には、リカバリに移行する。もし、テストをパスしたら、制御はブロック８７０に移る。ここで、全ての設定が、安全な変換（ｔｒａｎｓｆｏｒｍａｔｉｏｎ）を介して、最新のＳＩＣデータにマイグレートされる。一実施例において、このような安全な変換では、ＳＩＣ＿ＣＯＤＥによって実行されるＳＩＣ＿ＣＯＤＥは、以前のＳＩＣ＿ＤＡＴＡの設定をマッピングし、かつ、次のＳＩＣ＿ＤＡＴＡにマッピングする。これは、ＳＩＣ＿ＤＡＴＡブロックのインテグリティ基準値を再生成することを含む。制御は、その後、例えばＯＥＭ  ＢＩＯＳに移る（ブロック８７５）。図８の実施例におけるこのような特定のインプリメンテーションを示したが、本発明の技術的範囲はこの点に限定されない。
【００３０】
実施例は、コードによってインプリメントされ、そして記憶媒体に格納される。媒体に格納された命令は、命令を実行するシステムをプログラムするために使用される。記憶媒体としては、フロッピー（登録商標）ディスクを含むあらゆるタイプのディスク、光ディスク、個体ドライブ（ＳＳＤ）、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、再書き込み可能コンパクトディスク（ＣＤ−ＲＷ）、及び磁気光ディスク、半導体デバイス、例えば、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、ＥＰＲＯＭ、磁気光カード、又は、その他の媒体であって、電気的命令を格納するのに適した媒体が含まれる。
【００３１】
限定された数の実施例に基づいて本発明を説明したが、当業者は、様々な変更及びバリエーションをこれらから導くことができることは言うまでもない。添付の請求項はこれらの全ての変更及びバリエーションをカバーし、本発明の技術的範囲に含まれる。
【図１】
0005307196.tif 000002
【図２】
0005307196.tif 000003
【図３Ａ】
0005307196.tif 000004
【図３Ｂ】
0005307196.tif 000005
【図４Ａ】
0005307196.tif 000006
【図４Ｂ】
0005307196.tif 000007
【図５Ａ】
0005307196.tif 000008
【図５Ｂ】
0005307196.tif 000009
【図６】
0005307196.tif 000010
【図７】
0005307196.tif 000011
【図８】
0005307196.tif 000012