(57)【特許請求の範囲】
【請求項１】
セキュア動作モード機能付きプロセッサ（１００Ａ−Ｂ）とセキュリティサービスプロセッサ（１３０）との間におけるトランザクションをブリッジするためのバスブリッジ（１２１，２２１，３２１）であって、
セキュリティ初期化命令の実行結果として行われたセキュリティ初期化トランザクションを受けて、当該セキュリティ初期化トランザクションのソースが前記セキュア動作モード機能付きプロセッサであるか否かを決定するように構成されているトランザクションソースディテクタ（４５０）；
前記セキュリティサービスプロセッサに関連する情報のストレージを提供するように構成されているコンフィグレーションヘッダ（４１５）；及び
前記コンフィグレーションヘッダに結合され、前記セキュリティサービスプロセッサが不可付番周辺バス（１３５，３３５）に結合されているか否かを決定するように構成されている制御ロジック（４１６）；
を備えるバスブリッジ。
【請求項２】
請求項１記載のバスブリッジにおいて、前記制御ロジックは、更に、前記セキュリティサービスプロセッサが前記不可付番周辺バスに接続されているとの決定に応じて、前記コンフィグレーションヘッダをブート処理中にアクセス可能とするように構成されている、バスブリッジ。
【請求項３】
請求項１記載のバスブリッジにおいて、前記トランザクションソースディテクタに結合されたコマンド変換器（４５５）であって、前記セキュア動作モード機能付きプロセッサが前記セキュリティ初期化トランザクションのソースであると前記トランザクションソースディテクタが決定したことを受けて、前記不可付番周辺バス上を前記セキュリティサービスプロセッサに向けて前記セキュリティ初期化トランザクションを伝達するために適切なトランザクションに変換するように、構成されているコマンド変換器（４５５）を更に備えている、バスブリッジ。
【請求項４】
請求項１記載のバスブリッジにおいて、前記トランザクションソースディテクタに結合されたトランザクションフィルタ（４０５）であって、受信したトランザクションがセキュリティ初期化命令の実行結果として行われたセキュリティ初期化トランザクションであるか否かを決定するように構成されているトランザクションフィルタ（４０５）を更に備えている、バスブリッジ。
【請求項５】
請求項４記載のバスブリッジにおいて、前記トランザクションフィルタは、前記受信したトランザクションがセキュリティ初期化命令の実行結果として行われたセキュリティ初期化トランザクションであると決定した場合には、当該セキュリティ初期化トランザクションを前記トランザクションソースディテクタに対して伝達するように構成されている、バスブリッジ。
【請求項６】
請求項１記載のバスブリッジにおいて、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）リンク（２２５）上において前記セキュア動作モード機能付きプロセッサからＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）トランザクションを受信するように結合され、且つ、スタートトランザクションを受信後であってエンドトランザクションを受信前に前記所定の受信したトランザクションが前記セキュリティサービスプロセッサに関連付けられたセキュリティアドレス空間に対応するアドレスを含んでいるとアドレスフィルタ（４１０）が決定したことに応じて、前記セキュリティサービスプロセッサに対するピアツーピアアクセスをブロックするように構成されているブリッジユニット（４０１）を更に備えている、バスブリッジ。
【請求項７】
セキュリティ初期化命令を実行することにより、セキュア動作モードを初期化し、且つ、セキュアオペレーティングシステムコードセグメントを実行することにより、前記セキュア動作モードにおいて動作するように構成されたプロセッサ；及び
請求項１乃至請求項６のいずれか１項に記載されたバスブリッジであって、前記プロセッサに対して、Ｉ／Ｏリンクを介して接続され、且つ、セキュリティサービスプロセッサに対して、不可付番周辺バスを介して接続されたバスブリッジ；
を備えるコンピュータシステム（２０）。
【請求項８】
セキュア動作モード機能付きプロセッサ（１００Ａ−Ｂ）とセキュリティサービスプロセッサ（１３０）との間におけるトランザクションをブリッジするためのバスブリッジ（１２１，２２１，４２１）であって、
セキュリティ初期化命令の実行結果として行われたセキュリティ初期化トランザクションを受けて、当該セキュリティ初期化トランザクションのソースが前記セキュア動作モード機能付きプロセッサであるか否かを決定するように構成されているトランザクションソースディテクタ（５１０）；
前記セキュリティサービスプロセッサに関連する一覧情報のストレージを提供するように構成されている基底アドレスシャドウレジスタ（５１５）；及び
前記基底アドレスシャドウレジスタに結合され、前記セキュリティサービスプロセッサ宛の前記一覧情報を含むトランザクションをインタセプトし、前記一覧情報を前記基底アドレスシャドウレジスタ宛に送るように構成されている制御ロジック（５１６）；
を備えるバスブリッジ。
【請求項９】
請求項８記載のバスブリッジにおいて、前記トランザクションソースディテクタに結合されたコマンド変換器（５５５）であって、前記セキュア動作モード機能付きプロセッサが前記セキュリティ初期化トランザクションのソースであると前記トランザクションソースディテクタが決定したことを受けて、並列多重アドレス・データ周辺バス（５４５）上を前記セキュリティサービスプロセッサに向けて前記セキュリティ初期化トランザクションを伝達するために適切なトランザクションに変換するように構成されているコマンド変換器（５５５）を更に備えている、バスブリッジ。
【請求項１０】
請求項８記載のバスブリッジにおいて、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）リンク（２２５）上において前記セキュア動作モード機能付きプロセッサからＨｙｐｅｒＴｒａｎｓｐｏｒｔ（商標）トランザクションを受信するように結合され、且つ、スタートトランザクションを受信後であってエンドトランザクションを受信前に前記所定の受信したトランザクションが前記セキュリティサービスプロセッサに関連付けられたセキュリティアドレス空間に対応するアドレスを含んでいるとアドレスフィルタ（５１０）が決定したことに応じて、前記セキュリティサービスプロセッサに対するピアツーピアアクセスをブロックするように構成されているブリッジユニット（５０１）を更に備えている、バスブリッジ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、とりわけ、コンピュータシステムのメモリに格納されているデータを不正アクセスから保護するための高信頼動作モードを採用したコンピュータシステムに関する。
【背景技術】
【０００２】
米国公開公報６，０９２，２０２は、セキュアトランザクション方法及び装置について開示しており、そこにおいては、セキュリティコプロセッサがホストコンピュータシステムに対するインタフェースとなっている。セキュアトランザクション処理は、セキュリティコプロセッサ内においてローカルに行われ、非セキュアトランザクション処理はホストコンピュータシステム内で行われる。セキュリティコプロセッサに接続された第２のインタフェースは、スマートカードからデリケートなデータを受信する。セキュリティコプロセッサが機能手段を有していることから、スマートカードは、アカウント番号及び秘密鍵を含むデリケートなデータを格納し且つ関与を証明するためのデジタル署名を提供する専用の組み込み機能手段を必要とする。組み込み機能手段を少なくすれば、スマートカードは複雑でなくなり、より安価になる。
米国公開公報６，００３，１３５には、モジュラーデバイスが開示されている。このモジュラーデバイスは、ホストコンピューティングデバイスと通信し、ホストコンピューティングデバイス内部に格納されたデータ、ホストコンピューティングデバイスからモジュラーデバイスに供給されたデータ、及びホストコンピューティングデバイスによってモジュラーデバイスから回収されたデータに関する一以上のセキュリティ処理が当該モジュラーデバイスによって実行されることを可能とする。モジュラーデバイスは、一以上のセキュリティデータ処理の実行を可能とするに適するセキュリティモジュールを含むことができる。
最近のコンピュータシステムは人々の生活様式を激変させている。とりわけ、ｘ８６アーキテクチャを採用するマイクロプロセッサを含むシステムプラットフォームにおいては、疑う余地もない。オーナ自らがインストールすることのできる無数のサードパーティ製周辺機器やアプリケーションに対してｘ８６ベースのシステムがオープンであることから、競合、革新そして進化を促進するハードウェアベンダ及びソフトウェアベンダの広範な市場が可能となっている。かかる進化の例は、今日、かつてないほど高まっている質と能力を有するデジタルコミュニケーション／メディアシステムとして前述のプラットフォームを広範囲に使用していることである。インターネットとも相俟って、これらのシステムプラットフォームは、デジタルコンテンツのマスディストリビューションを明らかに激変させており、世界中のラジオ局、新聞及びリアルタイムお天気情報に対するオン・デマンド・アクセスや、オンラインバンキング及びオンラインショッピング、並びにオーディオ・ビデオベースのエンタテインメントを可能としている。
【０００３】
ｘ８６プラットフォームがオープンアーキテクチャであることから、各機器は、通常、ベンダが供給するドライバであって当該装置にアクセスするためにカーネルモードで実行されるドライバを有しており、また、ある種のソフトウェアアプリケーションがカーネルモード・コンポーネントを含んでいてもよい。このように、オープンアーキテクチャは利点を有しており、また、一のアプリケーションが他のアプリケーションに対して誤って干渉してしまわないように十分な保護を現時点でも提供しているが、現在のアーキテクチャの保護メカニズムは、この環境において、不正操作に晒されている。
【０００４】
ｘ８６アーキテクチャを採用するマイクロプロセッサを含むコンピュータシステムは、アプリケーションがお互いに干渉し合わないように保護するようにして設計された特徴を含んでいる。例えば、ｘ８６ベースのオペレーティングシステムは、アプリケーションが互いに切り離された環境であってクリティカルなオペレーティングシステムのコードやデータがアプリケーションから切り離された環境を提供するため、ｘ８６プロテクトモードのアーキテクチャの有する次の２つの特徴に依存している：１）ページ仮想メモリ（Paged Virtual Memory）及び２）動作特権レベル（Execution Privilege Level）。
【０００５】
ページ仮想メモリのおかげで、オペレーティングシステム（ＯＳ）は、各アプリケーションに対して独立した仮想アドレス空間を規定することができ、また、一組のアドレス変換テーブルを用いて物理メモリの個々のページを仮想アドレス空間の夫々に対して選択的にマッピングすることもできる。これにより、各アプリケーションは、コード及びデータ用として物理メモリ上に他のアプリケーションからはアクセスし得ない当該アプリケーション専用のスペースを有する。また、仮想メモリメカニズムによれば、ＯＳは物理メモリのページを多数の仮想アドレス空間に選択的にマッピングすることもできるし、かかるページを仮想空間内において選択的にリードオンリーとして指定することも可能である。この共有マッピング能力のおかげで、ＯＳカーネルのコピー自体が、各アプリケーションのアドレス空間内に存在することも可能であるし、また、同様に、周辺機器のアクセスポートを関連するデバイスドライバルーチンに対して共有マッピングすることも可能であり、このようにして、アプリケーションに対して、コストのかかるアドレス空間スイッチを要求することなく、ＯＳサービスに対する効率的なアクセスを提供している。しかし、アドレス空間のＯＳ部分は、必然的に、ＯＳコードが変更され得るものと考えられるシステムデータ領域を含んでおり、それは現時点においてもアプリケーションコードから保護されていなければならない。リードオンリー指定はかかる領域に関する適切な保護を提供し得ないかもしれない。
【０００６】
ｘ８６アーキテクチャは、また、特権レベル０〜３を規定しており、これらはＯＳによりコード領域に割り当てられ、コードセグメントのデスクリプタ（記述子）内に保持される。典型的には、現在実行されているコード又はプロシジャの特権レベルは、カレント特権レベル（ＣＰＬ）として格納される。従って、特権レベルは、通常、ＣＰＬ０〜ＣＰＬ３として参照される。これらの特権レベルを用いて、ある種のシステムリソースは適切なレベルで実行されているコードに対してのみアクセス可能となる。ページ仮想メモリアーキテクチャは、仮想メモリのページが特権レベルにより制限されることを許容してもよい。４種の特権レベルが規定されているが、ページ仮想メモリアーキテクチャはＣＰＬ１やＣＰＬ２をＣＰＬ０と区別しないことから、主流となっているオペレーティングシステムでは典型的にはＣＰＬ０及びＣＰＬ３レベルのみが用いられる。ＣＰＬ０は一般にカーネルモードとして参照されるものであり、最も高い特権レベルである。一方、ＣＰＬ３は一般にユーザモードとして参照されるものであり、最も低い特権レベルである。ＯＳコード及びデータは典型的にはＣＰＬ０に割り当てられ、アプリケーションコード及びデータはＣＰＬ３に割り当てられる。ＣＰＬ０動作特権は、リードオンリー保護に優先せず、二つの属性は互いに独立している。コードセグメントのデスクリプタはこれらのレベルを割り当てるために用いられる。
【０００７】
このメモリ保護に加えて、仮想メモリオペレーションを制御するものを含めた全プロセッサ制御レジスタは、アーキテクチャ規定により、ＣＰＬ０においてのみアクセス可能である。更に、動作をあるセグメントから他のセグメントに移し、従って特権レベルを変更するためには、典型的には、特別な制御転送命令が要求される。これらの命令のおかげで、ＯＳはかかる制御転送の対象をＯＳにより制御されるコード内の特定のエントリポイントに限定することができ、故に、アプリケーションはＯＳに制御を渡すことなく特権レベルを変更することはできない。
【０００８】
互いにアドレス空間を分離することやＯＳメモリをアプリケーションから分離することは、仮想メモリのアドレス変換テーブルの内容により完全に制御されうる。アドレス変換テーブルは、あるアプリケーションのメモリを他のアプリケーションのメモリから分離する仮想−物理ページマッピングを規定し、また、共有ライブラリとＯＳを保護するリードオンリー属性及び特権レベル属性をも規定する。アドレス変換テーブルそれ自体は、メモリ上に存在しうるデータ構造であり、それらを共有ＯＳメモリにマップし且つそれらのカーネルモードのコードへのアクセスを制限する変換項目を含んでいる。
【０００９】
既存の保護メカニズムはアプリケーション及びオペレーティングシステムに対して十分な保護を提供しているように思える。きちんと機能しているシステムにおいては、（例えば、オペレーティングシステムによるこれらのメカニズムの正しいアプリケーション、これらのメカニズムを制御するＯＳコードの正しいオペレーション、及び、カーネルモードにおいて実行されるすべての他のコードはこれと干渉しない。）既存の保護メカニズムは、そのようにしている。しかしながら、典型的なｘ８６ベースのシステムは、かかる大量のカーネルモードのコードを含んでいる。これらのカーネルモードのコードは、ＯＳベンダからのみならず、たくさんの別個のソースから入手されるものであり、何人もかかる干渉が生じてしまうか否か、あるいは生じてしまうことはないか否か保証することは不可能である。
【００１０】
ユーザが実行しているオペレーションの種別や稼働中のソフトウェアアプリケーションの種別によって、コンピュータシステム内部に格納された又はコンピュータシステム上で実行されている情報は、外部からのアクセスに攻撃されやすい。従って、セキュリティを改良し、それにより、ｘ８６アーキテクチャのシステムをかかるアクセスから攻撃されやすいという状態をできるだけ回避することが望まれている。
【発明の開示】
【００１１】
セキュリティサービスプロセッサに対する接続用バスブリッジを含むコンピュータシステムについてのさまざまな実施例が開示される。ある実施例において、セキュア動作モード機能付きプロセッサとセキュリティサービスプロセッサとの間のトランザクションをブリッジするためのバスブリッジは、トランザクションソースディテクタ、コンフィグレーションヘッダ、及び制御ロジックを含んでいる。トランザクションソースディテクタは、セキュリティ初期化命令の実行結果として行われたセキュリティ初期トランザクションを受けてもよい。更に、トランザクションソースディテクタは、セキュア動作モード機能付きプロセッサがセキュリティ初期化トランザクションのソースであるか否かを決定するように構成されていてもよい。コンフィグレーションヘッダは、セキュリティサービスプロセッサに関連付けられた情報に関するストレージを提供するように構成されていてもよい。制御ロジックは、コンフィグレーションヘッダに接続され、セキュリティサービスプロセッサが不可付番（non-enumerable：優先順位を付けることのできない）周辺バスを介してバスブリッジに接続されているかどうかを決定するように構成されていてもよい。
【００１２】
ある特定の実装において、制御ロジックは、セキュリティサービスプロセッサが不可付番周辺バスに接続されているとの決定に応じて、ブート処理中にコンフィグレーションヘッダをアクセス可能な状態にする。
【００１３】
他の実装において、不可付番周辺バスは、ＬＰＣ（Low pin count）準拠バスである。
【００１４】
他の実装において、セキュア動作モード機能付きプロセッサとセキュアサービスプロセッサとの間のトランザクションをブリッジするためのバスブリッジは、トランザクションソースディテクタ、基底（ベース）アドレスシャドウレジスタ及び制御ロジックを含んでいる。トランザクションソースディテクタは、セキュリティ初期化命令の実行結果としての実行されたセキュリティ初期トランザクションを受けてもよい。更に、トランザクションソースディテクタは、セキュア動作モード機能付きプロセッサがセキュリティ初期化トランザクションのソースであるか否かを決定するように構成されていてもよい。基底アドレスシャドウレジスタは、セキュリティサービスプロセッサに関連付けられた一覧情報用のストレージを提供するように構成されていてもよい。制御ロジックは、基底アドレスシャドウレジスタに接続され、セキュリティサービスプロセッサに宛てられた一覧情報を含むトランザクションをインタセプトするように構成されていてもよい。制御ロジックは、また、一覧トランザクションを基底アドレスシャドウレジスタ宛に送る。
【００１５】
ある特定の実装において、並列多重アドレス／データ周辺バスは、ＰＣＩ（peripheral component interconnect）準拠バスである。
【００１６】
本発明については、様々な変形及び置換が可能であるが、特定の実施例が図に例示され且つここに詳細に説明される。しかしながら、それらに関する図及び説明は、開示した特定の形態に本発明を限定することを意図したものではなく、逆に、付属のクレームに定義されたような発明の技術的範囲内に属する変形例、均等物及び置換のすべてをカバーすることを意図したものである。
【発明を実施するための最良の形態】
【００１７】
セキュアコンピューティングプラットフォームの概要
【００１８】
高信頼コンピューティングによれば、コンピュータシステム（例えば、パーソナルコンピュータ（ＰＣ））のユーザは、当該ユーザのプライバシーを攻撃から保護しつつ、電子マネーや動画をダウンロードするといったような新しい活動に参加することが可能となる。高信頼コンピューティング環境の一環として、例えば、ＰＣそれ自体も、ユーザと銀行やコンテンツプロバイダといったような外部のエンティティの双方から信頼されなければならない。高信頼ＰＣを構成するために必要と思われる重要な要素は：高信頼処理環境、プラットフォーム特有のシークレット、暗号処理、セキュアなストレージ、セキュリティカーネル（ＳＫ）として参照されるセキュアなオペレーティングシステムコードセグメントを含んでいる。これらの要素を実装するための構成要素は、以下に詳細に記述される。
【００１９】
ｘ８６命令を実行するように構成されているプロセッサは、通常、ページ仮想メモリや特権動作モードを提供するためのプロテクトモードのようなアーキテクチャ上の特徴と、これらの特徴を制御する制御レジスタセットを含んでいる。これらの制御レジスタとページテーブルに対するアクセスを制御すると、コンピュータシステム内部のプログラムコードやデータに対する不正アクセスから更に保護することができる。従って、かかるプロセッサと対応するソフトウェアサポートに一組のアーキテクチャ上の拡張を加えることが、この保護を提供してもよい。プロセッサに対する全体的なセキュリティの向上は、セキュア動作モード（ＳＥＭ）と参照されてもよい。セキュア動作モード（ＳＥＭ）は、外部からの改ざんを受けることなくセキュリティカーネルを実行し得る高信頼動作環境を構築するプロセッサに付加された新しい動作モードである。
【００２０】
従って、ＳＥＭで動作可能なプロセッサは、ＳＥＭによって動作可能とされると、例えば、高信頼実行（ＴＸ）の動作モードのようなＳＥＭ動作モード用のサポートを提供する。更に後述するように、高信頼動作モードは、ソフトウェアが何を実行しているか及びその特権レベルに応じて、ノーマルユーザモード及びノーマルカーネルモードに加えてセキュアユーザモード及びセキュアカーネルモードで動作するＳＥＭ機能付きプロセッサを含んでいてもよい。メカニズムは、本環境内部において実行されているソフトウェア及びハードウェアメモリアクセス（例えば、ダイレクトメモリアクセス（ＤＭＡ））によってのみアクセス可能な保護されたメモリ領域を提供されてもよい。
【００２１】
この新たな高信頼動作環境（ＴＸ）は、ユーザ環境とカーネル環境とを区別するために用いられていた従来のノーマル／プロテクトモード（Ｒｉｎｇ３／Ｒｉｎｇ０）メカニズムに少し似ている。図１の記述に関連して以下に詳述されるように、ユーザ／カーネルモードと高信頼／無信頼モードとの組み合わせは、四分割モデルを形成する。従って、ＳＥＭ機能付きＣＰＵは上記のＴＸモードを構築し実行するハードウェアメカニズムを備えている。
【００２２】
ここで、図１に戻ると、セキュア動作モード機能付きプロセッサの一実施例によるオペレーショナルドメインと、それらドメインにおいて動作するコードの振る舞いを例示した図が示されている。上述したように、現在のｘ８６ベースのオペレーティングシステムは、典型的には、利用可能な４種類の特権レベルのうち２種類（例えばＣＰＬ０及びＣＰＬ３）を用いてノーマル動作モード又は保護ドメイン内に２つのモードを実装している：即ち、ノーマルカーネルモード及びノーマルユーザモード。ＳＥＭエンハンスメントは、ＳＥＭ可能とされたとき、高信頼動作（ＴＸ）モードとして参照される新たな動作モードを規定する。既存のノーマル動作モードの保護ドメインと組み合わされることにより、ＴＸモードは、４種類の別個のモード即ち以下に述べるソフトウェアのオペレーショナルドメインを構築する。図示された実施例において、４種類のドメインは、ノーマルユーザ（ＮＵ）ドメイン１０１０、ノーマルカーネル（ＮＫ）ドメイン、セキュアユーザ（ＳＵ）ドメイン１０３０及びセキュアカーネル（ＳＫ）ドメイン１０４０である。
【００２３】
ＮＵ１０１０ドメインは、高信頼動作（ＴＸ）モードではなくノーマルユーザモード（即ち、ＣＰＬ＝３）において動作するプロセッサを特徴とすることとしてもよい。ＮＵ１０１０ドメインにおいて、典型的な仮想メモリ設定は修正されないアプリケーションのノーマルオペレーションを考慮している。しかしながら、ＳＥＭの下では、かかるアプリケーションは、ＳＵドメイン１０３０内に存するアプリケーションのメモリ又は、ＳＫドメイン１０４０内にセキュリティカーネル１０２１を含んでいるメモリに対するアクセスを禁じられる。しかも、かかるアプリケーションは、例えばＵ／Ｓ及びＲ／Ｗページ属性のような既存の保護ロジックメカニズム（図示せず）により、ノーマルカーネルドメイン１０２０内にあるＯＳカーネル１０２３やデバイスドライバに関するメモリに対するアクセスも禁じられる。
【００２４】
ＮＫドメイン１０２０において、ＳＥＭは、修正されないＯＳカーネル１０２３のコンポーネントのノーマルオペレーションとカーネルモードデバイスドライバを考慮する。このドメインに存在するコードはＮＵドメイン１０１０内にあるオブジェクトにアクセスしてもよいが、ＳＥＭの下では、ＳＵドメイン１０３０及びＳＫドメイン１０４０のいずれに存在するオブジェクトに対するアクセスも禁じられる。更に、ＮＫドメイン１０２０は、ＴＸモードにおいてではなく、ノーマルカーネルモード（即ち、ＣＰＬ＝０）において動作するプロセッサを特徴とすることとしてもよい。ページングがＮＫドメイン１０２０において可能となると、プロセッサはしばしば、ネイティブカーネルモードにおける動作として参照される。
【００２５】
ＳＵドメイン１０４０において、ＳＥＭは高セキュリティアプリケーション（ＨＳＡ）のような新たなタイプのアプリケーションソフトウェアを例えば実行することを許容してもよい。ＨＳＡソフトウェアは、既存のｘ８６ページ保護及びページマッピングメカニズムにより、他の如何なるドメインに存在するオブジェクトに対するアクセスも禁じられる。更に、ＨＳＡは、ＮＵドメイン１０１０及びＮＫドメイン１０２０内で実行されているあらゆるコード（オペレーティングシステムカーネル１０２３及びデバイスドライバ（図２には図示せず）を含む）による不正アクセスからも保護されている。後に詳述するように、セキュリティカーネル１０２１がＨＳＡの仮想アドレス空間の設定及び維持について責任を有することとしてもよい。更に、ＳＵドメイン１０４０は、ユーザモード（即ち、ＣＰＬ＝０）及びＴＸモードにおいても動作するプロセッサを特徴とすることとしてもよい。かかるモードは、セキュアユーザモードとしても参照される。
【００２６】
ＳＫドメイン１０４０において、ＳＥＭは、すべてのプラットフォームリソースに対するセキュリティカーネル１０２１のフルアクセスを許容し、加えて、セキュリティカーネル１０２１に対するそれらリソースの排他的制御を与えるものとしてもよい。ＳＫドメイン１０４０は、カーネルモード（即ちＣＰＬ＝０）及びＴＸモードにおいて動作するプロセッサを特徴とすることとしてもよい。かかるモードは、セキュアカーネルモードとしても参照される。
【００２７】
一般的には、セキュリティカーネル１０２１は、高信頼動作（ＴＸ）モードにおいて動作する何がしかである。ある実施例において、セキュリティカーネル１０２１はＳＫドメイン１０４０において動作する唯一のソフトウェアであってもよい。ＳＫドメイン１０４０において、セキュリティカーネル１０２１は、すべての仮想−物理メモリマッピングを制御してもよいし、外部機器により物理メモリのどの領域がアクセス可能なのかについて制御することとしてもよい。しかしながら、セキュリティカーネル１０２１は、ノーマルモードの仮想メモリマッピングやＨＳＡメモリの初期マッピング並びにＨＳＡコード及びデータセクションのローディングを含む、ＯＳカーネルプロセス生成機能に依存していてもよい。しかしながら、セキュリティカーネル１０２１は、かかるマッピングのすべてを監視して、高信頼メモリが無信頼仮想空間に不正にマッピングされることがないことを保証することとしてもよい。従って、セキュリティカーネル１０２１は、信頼されていないメモリの領域のすべてを無信頼とみなしてもよい。更には、セキュリティカーネル１０２１は、セキュリティカーネル１０２１により制御されなかったすべての実行中のプログラムコードを無信頼とみなしてもよい。ある実施例において、セキュリティカーネル１０２１は既存のＯＳに対するパッチであってもよいスタンドアロンのコードセグメントであってもよいことに留意する。他の実施例において、セキュリティカーネル１０２１は所定のＯＳの一部であって当該ＯＳの内部にあるモジュール又はコードセグメントであってもよい。
【００２８】
ＳＥＭの主機能は、高信頼環境を初期化すること、ＳＫの信頼性を検証すること、及び高信頼環境を外部からのアタックから保護することである。用語ＣＰＵ，マイクロプロセッサ及びプロセッサは、区別なく用いられてもよい。
【００２９】
セキュア動作モードの初期化
【００３０】
高信頼ＰＣを形成するために中心となるものは、ユニークでプラットフォームに特有なシークレットである。実際には、このシークレットは公開／秘密暗号鍵ペアの一方の秘密鍵であってもよい。このシークレットは、ＰＣが高信頼環境内で動作しているときにのみ用いられなければならず、何人にも即ち如何なるコードにも決して明らかとなってはならない。シークレットを用いる暗号処理の結果は、秘密でなくともよいが、シークレットそれ自体は知られてはならない。これを機能させるため、シークレットとそれを用いる暗号処理機構は、入出力を制御された閉ボックス内になければならない。具体的な言葉で示すと、閉ボックスは、処理能力と不揮発性ストレージを併せ持つ単一の集積回路（ＩＣ）パッケージを意味する。この機器は、セキュリティサービスプロセッサ（ＳＳＰ）と呼ばれる。ある実施例においては、少なくとも一つのＳＳＰが必要とされ、実際に、一つのＳＳＰがプラットフォーム初期化処理に関与している。
【００３１】
アーキテクチャ的には、ＳＳＰはプラットフォームの一部であってもよい。唯一の要件は、非スプーファブル（かく乱不可能）でセキュアな通信路がＳＥＭ機能付きプロセッサとＳＳＰとの間に存在していることである。ここに用いられるように、ＳＥＭ機能つきプロセッサとＳＳＰとの間の非スプーファブルな通信路は、高信頼環境外部において実行されているソフトウェアからもＤＭＡハードウェアからもＳＳＰがコマンドを受け付けないようなセキュアな通信路を意味する。これは、高信頼環境が初期化されているときには、とりわけ複雑であってもよい。ここで、ＳＳＰは、ＳＫの有効性を検証し、且つ、有効であると判断されたＳＫがその時点においてＳＥＭ機能付きプロセッサ上で実際に実行されているコードであることを確信しなければならない。実証は、ＳＫイメージの暗号ハッシュの形態を採る。このハッシュは、ノーマルソフトウェアの処理からでは到達できない方法によって、ＳＳＰまで伝達されなければならない。更に、ＳＥＭ機能付きプロセッサは、クリーンな初期状態から実行されなければならない（また、ＳＳＰはそれを知っていなければならない）。これらの要件は、ＣＰＵマイクロコードやノーマルソフトウェアには利用できないハードウェアメカニズムを用いて満たすこととしてもよい。具体的には、セキュリティカーネルイニシャライゼーション（ＳＫＩＮＩＴ）と呼ばれる新しいセキュリティ初期化命令は次のことを行うために用いられる：ＳＥＭ機能付きプロセッサを初期化し；ＭＰシステム内の他のプロセッサが停止させられていることを検証し；リザーブされているシステムアドレスを用いてＳＳＰと通信し；そして、ＳＫコード内にジャンプする。ある実施例において、初期化処理は二つのステップを含んでいる：ＳＳＰによる小さなセキュアローダ（ＳＬ）の検証と；それに続く、もっと大きなＳＫの検証。
【００３２】
高信頼コンピューティングプラットフォームを採用したコンピュータシステム
【００３３】
図２を参照すると、高信頼コンピューティングプラットフォームを採用したコンピュータシステムの一実施例のブロック図が示されている。コンピュータシステム１０は、ＳＥＭプロセッサ１００Ａ及びＳＥＭプロセッサ１００Ｂとして描かれている２つのＳＥＭ機能付きプロセッサを含んでいる。ＳＥＭプロセッサ１００Ａは、プロセッサバス１０５を介して、ＳＥＭプロセッサ１００Ｂに接続されている。また、コンピュータシステム１０は、ＳＥＭプロセッサ１００Ａに接続されたシステムメモリ１１０Ａと、ＳＥＭプロセッサ１００Ｂに接続されたシステムメモリ１１０Ｂとを含んでいる。ＳＥＭプロセッサ１００Ａは、システムバス１２５を介してＩ／Ｏインタフェース１２０に接続されている。Ｉ／Ｏインタフェース１２０は、周辺バス１４５を介して、ストレージデバイス（記憶装置）１４０や周辺機器１５０に接続されている。Ｉ／Ｏインタフェース１２０は、更に、周辺バス１３５を介して、ＳＳＰ１３０に接続されている。他の実施例においては、周辺バス１３５に代えて、ＳＳＰ１３０は破線により示されるように、周辺バス１４５に接続されていてもよい。２つのＳＥＭプロセッサが示されているが、他の実施例が１又は３以上のＳＥＭプロセッサを含んでいてもよいことに留意する。また、同一の参照符号と一文字で示される構成要素は単純に参照符号のみによって参照されてもよい。例えば、ＳＥＭプロセッサ１００Ａは、適切な場合には、単にＳＥＭプロセッサ１００と参照されてもよい。
【００３４】
図示された実施例において、ＳＥＭプロセッサ１００Ａ及びＳＥＭプロセッサ１００Ｂは、夫々、システムメモリ１１０Ａ及び１１０Ｂへの接続用として集積されたメモリコントローラ（図示せず）を含んでいる。他の実施例において、Ｉ／Ｏインタフェース１２０が一以上のメモリコントローラとホストブリッジを含んでもよいことに留意する。かかる実施例において、システムメモリ１１０はＩ／Ｏインタフェース１２０に接続されていてもよい。
【００３５】
ＳＥＭプロセッサ１００は、ｘ８６アーキテクチャを採用するプロセッサの例示である。例えば、ある実施例において、ＳＥＭプロセッサ１００は、アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドのＡｔｈｌｏｎ（登録商標）プロセッサであってもよい。それ自体、ＳＥＭプロセッサ１００は、例えば、システムメモリ１１０又はストレージデバイス１４０に格納されたｘ８６命令を実行するようにして構成されている。図示された実施例において、ＳＥＭプロセッサ１００は、ＳＥＭにより実行可能とさせられると、例えば、図１の記述と関連して説明された高信頼動作（ＴＸ）モードのようなＳＥＭ処理モードに対してサポートを提供するようなセキュリティハードウェア（図示せず）を含んでいてもよい。
【００３６】
システムメモリ１１０は、ＳＥＭプロセッサ１００により頻繁に用いられるプログラム命令及びデータを格納するように構成されている。典型的なシステムコンフィグレーションにおいて、ストレージデバイス１４０は、プログラム命令やデータを永久に格納するために用いられてもよく、また、ＳＥＭプロセッサ１００がそのデータやプログラムコードを必要とする際に、それはシステムメモリ１１０に転送されてもよい。ＳＥＭ処理モードに対する更なるサポートは、例えばＳＥＭプロセッサ１００の動作中にシステムメモリ１１０外部のＯＳに関連して実行されるセキュリティカーネルにより提供されてもよい。更に、システムメモリ１１０は、高信頼部及び無信頼部に分けられてもよい。セキュリティカーネルはシステムメモリ１１０の高信頼部内に存する。上述したように、システムメモリ１１０は典型的にはページ仮想メモリを用いてアクセスされる。かかる仕組みにおいては、システムメモリ１１０が、個々のページ又はメモリ領域によりアクセスされることとしてもよい。このページング機能は、典型的には、ＯＳのメモリ管理機能によりハンドルされる。
【００３７】
ある実施例において、システムメモリ１１０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）技術又は例えばシンクロナスＤＲＡＭ（ＳＤＲＡＭ）のような利用可能なＤＲＡＭ関連技術の一つとして実現された複数のメモリチップを用いて実現されてもよい。ＤＲＡＭチップは、典型的には、マザーボード上のソケットコネクタに挿入されるエッジコネクタを有する小さい回路基板上に搭載される。基板の配置に応じて、それらの回路基板は、シングルインラインメモリモジュール又はデュアルインラインメモリモジュール（例えば、夫々、ＳＩＭＭ又はＤＩＭＭ）と参照されてもよい。システムメモリ１１０は、例えば、メモリ拡張を許容する多数のメモリモジュールのバンクを含んでいてもよい。
【００３８】
上述したように、ストレージデバイス１４０はプログラムコード及びデータを格納してもよい。ある実施例において、ストレージデバイス１４０は、一のハードディスクドライブ又は複数のハードディスクドライブの一のバンクであってもよい。但し、他の実施例では、例えば、ＣＤ−ＲＯＭドライブ、フロッピディスクドライブ及びテープドライブのような他のマスストレージデバイスを含むことについて検討されている。
【００３９】
周辺機器１５０は、例えば、モデムや、ビデオキャプチャデバイス、その他の汎用入出力デバイスのように如何なる周辺機器であってもよい。他の実施例においては、ここに例示された以外の数の周辺機器が用いられていてもよい。
【００４０】
Ｉ／Ｏインタフェース１２０は、ノーマルなシステムオペレーション中における異なる周辺バスとＳＥＭプロセッサ１００Ａ及び１００Ｂとの間におけるトランザクション用のバス制御及び変換を提供する。ある実施例において、Ｉ／Ｏインタフェース１２０はノースブリッジに関連する機能を実行してもよいバスブリッジ１２１を含んでいる。例えば、周辺バス１４５はＰＣＩ（peripheral component interconnect）バスであってもよく、周辺バス１３５はＬＰＣ（low pin count）バスであってもよい。更に、バスブリッジ１２１は、ＳＳＰがそれに接続されているか否か及びどのバスに接続されているかを決定するようにして構成されている。以下に説明するように、バスタイプに応じて、バスブリッジ１２１は、システムバス１２５上のＳＥＭプロセッサ１００Ａから受けたセキュリティ初期化命令を周辺バス１３５上への伝達に適するフォーマットに変換するといったような様々なセキュリティ関連機能を実行するようにして構成されていてもよい。例えば、バスブリッジ１２１は、ＳＫＩＮＩＴ関連メッセージを認識し、それらのメッセージを周辺バス１３５に特有のフォーマットでＳＳＰ１３０に伝達するようにして構成されていてもよい。更に、バスブリッジ１２１は、例えば、アドレスフィルタリングのような機能により、ＳＳＰ１３０に対するピアツーピア通信をブロックするように構成されていてもよい。バスブリッジ１２１は、ＳＫＩＮＩＴオペレーション中、ＳＳＰ１３０のＩ／Ｏにマップされたメモリ内においてアクセスウィンドウを実現するように構成されていてもよい。
【００４１】
一般的には、セキュリティカーネルイニシャライゼーション命令（ＳＫＩＮＩＴ）は、例えば、ＳＥＭプロセッサ１００ＡやＳＥＭプロセッサ１００ＢのようなＳＥＭ機能付きプロセッサ上で実行される。ある実施例において、ＳＫＩＮＩＴ命令は３つの動作フェーズ（段階）を含んでいる：初期化（イニシャライゼーション）、データ転送（データトランスファ）及びジャンプ。
【００４２】
初期化フェーズ中、ＳＥＭプロセッサ１００Ａの状態はリセットされてもよく、また、あらゆるマイクロコードのパッチもクリアされてよい。更に、ある実施例において、ＳＥＭプロセッサに集積された又はＳＥＭプロセッサ外部のメモリコントローラの夫々は、リセットがＳＴＲ（Suspend To RAM）に関するものでない限り、当該リセットに応じてシステムメモリ１１０のメモリチップの物理的内容をクリアするように構成されたロジック（図示せず）を含んでいてもよい。更に、ＳＬイメージは、システムメモリ１１０Ａ内にロードされても良く、ＤＭＡアクセスが生じるのを防ぐよりも前にＳＬイメージを保護するために、ＳＬイメージが存在する物理メモリ内の６４Ｋバイトの連続した空間に対するアクセスはブロックされる。この６４Ｋバイトの基底アドレスはＳＫＩＮＩＴ命令のパラメータである。Ｈａｓｈ＿Ｓｔａｒｔトランザクションは、それと共に、そのアドレスフィールドの一部として上記の基底アドレスを伝達する。この方法において、Ｈａｓｈ＿Ｓｔａｒｔトランザクションを受け付けるすべてのメモリコントローラは、どのメモリエリアを保護するかについて通知されてもよい。
【００４３】
データ転送フェーズ中、マイクロコードは、Ｈａｓｈ＿Ｓｔａｒｔ、Ｈａｓｈ＿Ｄａｔａ及びＨａｓｈ＿Ｅｎｄコマンドを実行してもよい。ある実施例において、Ｈａｓｈ＿Ｓｔａｒｔトランザクションは、ＳＥＭプロセッサ１００Ａ及びＳＳＰ１３０間に介在するすべてのリンク及びバスに対して送られたブロードキャストトランザクションであってもよい。図示された実施例において、Ｈａｓｈ＿Ｓｔａｒｔは、プロセッサバス１０５、システムバス１２５及び周辺バス１３５上に送信される。マルチプロセッサ環境において、ＳＥＭプロセッサ１００ＡはＳＥＭプロセッサ１００Ｂからの応答を待つ。ＳＥＭプロセッサ１００Ｂは、そのメッセージに対して、“ＡＰＩＣ  Ｉｎｉｔ  Ｍｏｄｅ  ｉｓ  Ａｃｔｉｖｅ（ＡＰＩＣ初期モードがアクティブである）”又は“ＡＰＩＣ  Ｉｎｉｔ  Ｍｏｄｅ  ｉｓ  Ｉｎａｃｔｉｖｅ（ＡＰＩＣ初期モードがインアクティブである）”のいずれかを示すステータスビットで応答することとしてもよい。もし、ＳＥＭプロセッサ１００Ｂが“ＡＰＩＣ  Ｉｎｉｔ  Ｍｏｄｅ  ｉｓ  Ａｃｔｉｖｅ（ＡＰＩＣ初期モードがアクティブである）”と応答しない場合、ＳＥＭプロセッサ１００ＡはＨａｓｈ＿Ｓｔａｒｔを終わりにし、Ｈａｓｈ＿Ｅｎｄを実行し、それによりＨａｓｈ＿Ｄａｔａコマンドをスキップすることとしてもよい。ＳＥＭプロセッサ１００Ｂが“ＡＰＩＣ  Ｉｎｉｔ  Ｍｏｄｅ  ｉｓ  Ａｃｔｉｖｅ（ＡＰＩＣ初期モードがアクティブである）”と応答した場合、Ｈａｓｈ＿Ｓｔａｒｔコマンド、それに続いてＨａｓｈ＿ＤａｔａコマンドがＳＳＰ１３０に伝達される。ＳＥＭプロセッサ１００Ａ及び１００Ｂの夫々に関連付けられたホストブリッジ／メモリコントローラ（図示せず）は、メモリ、Ｉ／Ｏ、ＤＭＡの排他保護を励起してもよい。
【００４４】
一旦、Ｈａｓｈ＿ＳｔａｒｔトランザクションがＳＳＰ１３０に送られると、マイクロコードはＨａｓｈ＿Ｄａｔａトランザクションを実行してもよい。Ｈａｓｈ＿Ｄａｔａトランザクションは、ＳＬコードイメージをシステムメモリ１１０Ａから取得し、それをシステムバス１２５を通じてＩ／Ｏインタフェース１２０に送る。
【００４５】
一旦、Ｈａｓｈ＿Ｄａｔａトランザクション及びその対応データがＳＳＰ１３０に送られると、マイクロコードはＨａｓｈ＿Ｅｎｄトランザクションを実行してもよい。Ｈａｓｈ＿Ｅｎｄトランザクションは、ＳＥＭプロセッサ１００ＡとＳＳＰ１３０との間に介在するすべてのリンク及びバス上に対してブロードキャストトランザクションとして送られてもよい。
【００４６】
Ｉ／Ｏインタフェース１２０は、Ｈａｓｈ＿Ｓｔａｒｔ／ＥｎｄメッセージによってバウンドされたＳＬイメージを受け取る。Ｓｔａｒｔ／Ｅｎｄウィンドウ以外で受け取ったトランザクションは無視される。そのデータはＳＳＰ１３０に送られる。バスブリッジ１２１は、ＳＳＰ１３０に対する他のいかなるトランザクションもＨａｓｈ＿ＳｔａｒｔとＨａｓｈ＿Ｅｎｄとの間のＳＫＩＮＩＴトランザクションに関連付けられたアドレス範囲を避けるようにして、構成されている。
【００４７】
ジャンプフェーズ中、ＳＫＩＮＩＴ命令はＳＬへのジャンプを完備する。
【００４８】
ある実施例において、ＳＳＰ１３０がＨａｓｈ＿Ｄａｔａトランザクションのデータペイロード（即ち、ＳＬイメージ）とＨａｓｈ＿Ｅｎｄトランザクションを受信すると、ＳＳＰ１３０は、そのイメージについての暗号ハッシュを実行し、その結果と内部に格納していた値とを比較する。一致した場合、ＳＳＰ１３０はそのＳＬイメージを有効と判断してもよい。
【００４９】
ＳＳＰ１３０が周辺バス１４５に接続されている実施例において、バスブリッジ１２１は周辺バス１４５に対する変換及びセキュリティ関連機能を実行するように構成されてもよい点に留意する。
【００５０】
図３を参照すると、高信頼コンピューティングプラットフォームを採用するコンピュータシステムの他の実施例のブロック図が示されている。図２に示される構成要素に対応する構成要素には、簡略化と明瞭化のため、同一の構成要素が付されている。コンピュータシステム２０は、ＳＥＭプロセッサ１００Ａ及びＳＥＭプロセッサ１００Ｂとして描かれている２つのＳＥＭ機能付きプロセッサを含んでいる。ＳＥＭプロセッサ１００Ａは、例えば、高速ポイントツーポイントリンクを構成するコヒーレントリンク２０５を介して、ＳＥＭプロセッサ１００Ｂに接続されている。また、コンピュータシステム２０は、ＳＥＭプロセッサ１００Ａに接続されたシステムメモリ１１０Ａと、ＳＥＭプロセッサ１００Ｂに接続されたシステムメモリ１１０Ｂとを含んでいる。ＳＥＭプロセッサ１００Ａは、非コヒーレントＩ／Ｏリンク２２５を介して、Ｉ／Ｏインタフェース２２０に接続されている。非コヒーレントＩ／Ｏリンク２２５もまた、高速ポイントツーポイントリンクであってもよい。Ｉ／Ｏインタフェース２２０は、周辺バス１４５を介して、ストレージデバイス１４０や周辺機器１５０に接続されている。Ｉ／Ｏインタフェース２２０は、更に、周辺バス１３５を介して、ＳＳＰ１３０に接続されている。他の実施例においては、周辺バス１３５に代えて、ＳＳＰ１３０は破線により示されるように、周辺バス１４５に接続されていてもよい。２つのＳＥＭプロセッサが示されているが、他の実施例が１又は３以上のＳＥＭプロセッサを含んでいてもよいことに留意する。
【００５１】
図示された実施例において、ＳＥＭプロセッサ１００Ａ及びＳＥＭプロセッサ１００Ｂは、夫々、システムメモリ１１０Ａ及び１１０Ｂへの接続用として集積されたメモリコントローラ（図示せず）を含んでいる。他の実施例において、ＳＥＭプロセッサ１００Ａは、非コヒーレントリンク２２５に対する接続用且つコヒーレントリンク２０５上におけるＳＥＭプロセッサ１００Ａ及びＳＥＭプロセッサ１００Ｂ間におけるメッセージ伝達用として集積されたホストブリッジ（図示せず）を含んでいる。但し、他の実施例としては、ホストブリッジがスタンドアロン（即ち、ノースブリッジ）であるものや、組み合わせなどが検討される点に留意する。
【００５２】
図示された実施例において、コヒーレントリンク２０５及び非コヒーレントＩ／Ｏリンク２２５は、それぞれ、一組の一方向性配線として実現されている。所定のセットの各ワイヤは異なる方向にトランザクションを伝達してもよい。コヒーレントリンク２０５は、ＳＥＭプロセッサ１００Ａ及び１００Ｂ間における通信のために、キャッシュコヒーレント法に従って動作させられてもよい。更に、非コヒーレントＩ／Ｏリンク２２５は、Ｉ／Ｏインタフェース２２０とＳＥＭプロセッサ１００Ａのホストブリッジのようなホストブリッジとの間の通信のために、非コヒーレント法に従って動作させられてもよい。コヒーレントリンクを介した二以上の機器の相互接続は、「コヒーレントファブリック」と呼ばれてもよい。同様に、非コヒーレントリンクを介した二以上の機器の相互接続は、「非コヒーレントファブリック」と呼ばれてもよい。ある実施例において、非コヒーレントＩ／Ｏリンク２２５は、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）技術と互換性のあるものであってもよい。
【００５３】
一般的には、パケットは、２つのノード（パケットを送信する開始ノードとそのパケットを受信する宛先ノード）即ち機器間における通信である。開始ノードと宛先ノードは、当該パケットが一部をなすトランザクションのソースノード及びターゲットノードと異なっていてもよいし、いずれかのノードがソースノード若しくはターゲットノードであってもよい。制御パケットは、トランザクションに関する制御情報を伝達するパケットである。ある種の制御パケットは、データパケットが次に来ることを規定している。データパケットは、トランザクションに対応するデータや規定制御パケットに対応するデータを伝達する。他の実施例において、制御パケットはコマンドパケット、インフォパケット、及び応答パケットを含んでいてもよい。他種のパケットを含むことについても他の実施例において検討される点に留意する。
【００５４】
パケットが非コヒーレントリンク上をアップストリーム側又はダウンストリーム側に移動したり、コヒーレントリンク上におけるコヒーレントノード間を移動したりするので、パケットは一以上のノードを通過してもよい。ここで用いられるように、「アップストリーム」はＩ／Ｏインタフェース２２０からＳＥＭプロセッサ１１０Ａのホストブリッジに向かう方向におけるパケットのトラフィックの流れを意味し、「ダウンストリーム」はＳＥＭプロセッサ１１０Ａのホストブリッジを離れてＩ／Ｏインタフェース２２０に向かう方向におけるパケットのトラフィックの流れを意味する。
【００５５】
図２についての記述と同様に、図２のＳＥＭプロセッサ１００は、ｘ８６アーキテクチャを採用するプロセッサの例示である。それ自体、ＳＥＭプロセッサ１００は、例えば、システムメモリ１１０又はストレージデバイス１４０に格納されたｘ８６命令を実行するようにして構成されている。図示された実施例において、ＳＥＭプロセッサ１００は、ＳＥＭにより実行可能とさせられると、例えば、上述した高信頼動作（ＴＸ）モードのようなＳＥＭ処理モード用のサポートを提供するようなセキュリティハードウェア（図示せず）を含んでいてもよい。
【００５６】
後に詳述するように、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）技術を利用した非スプーファブルでセキュアな通信路を実現するために、ホストブリッジはセキュリティ関連機能を実行するようにして構成されていてもよい。例えば、ＳＥＭプロセッサ１００Ａのホストブリッジは、次のことを行ってもよい：Ｉ／Ｏ空間排他動作、ＳＫＩＮＩＴ関連メッセージサポート、及び、そのダウンストリームのバス上にＳＳＰ１３０が存するか否かについての情報の取得。Ｉ／Ｏ空間排他は、ダウンストリームバスから到達したＩ／Ｏ空間宛のいかなるトランザクションをもブロックすることを意味する。例えば、アップストリームトランザクションは、ブリッジを通過してアップストリームバスに向かうことも、ダウンストリームバスに向けて戻ることも許されない。加えて、ＨｙｐｅｒＴａｒｎｓｐｏｒｔ（登録商標）の４０ビットコンフィグレーションのアドレスウィンドウ（FD_FE00_0000h-FD_FFFF_FFFFh）に対するあらゆるアップストリームアクセスはホストブリッジによってブロックされてもよい。ある実施例において、これらのアクセスは“Ｔａｒｇｅｔ  Ａｂｏｒｔ”又は“Ｍａｓｔｅｒ  Ａｂｏｒｔ”でターミネートされてもよい。
【００５７】
図２についての記述と関連して上述したように、ＳＥＭプロセッサ１００Ａ内部のホストブリッジは、Ｈａｓｈ＿Ｓｔａｒｔトランザクション、Ｈａｓｈ＿Ｄａｔａトランザクション及びＨａｓｈ＿Ｅｎｄトランザクションを送信するように構成されていてもよい。ある実施例において、Ｈａｓｈ＿Ｓｔａｒｔメッセージ及びＨａｓｈ＿Ｅｎｄメッセージはブロードキャストパケットであるが、Ｈａｓｈ＿Ｄａｔａトランザクションはポストされないサイズド・ライト・リクエストパケットとそれに続くデータペイロードを包含するデータパケットを含んでいる。以下、図６乃至図８についての記述は、典型的なＨａｓｈ＿Ｓｔａｒｔ、Ｈａｓｈ＿Ｄａｔａ及びＨａｓｈ＿ＥｎｄのＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）パケットについて論じたものである。これらのトランザクションに対する４０ビットアドレスは以下に規定される。ある実施例において、これらのアドレスに対するトランザクションがＳＫＩＮＩＴ命令の一部としてＳＥＭプロセッサ１００Ａからのみ到達したものであるかどうかについて保証することは、ＳＥＭプロセッサ１００ＡのＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）ホストブリッジの責任である。以下に列挙されたアドレス範囲であってセキュリティ初期化用としてここで利用されたアドレス範囲は、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）の仕様においてＲｅｓｅｒｖｅｄ（予約済み）として指定されている：
FD_F920_0000h-FD_F923_FFFFh        Hash_Start
FD_F924_0000h-FD_F927_FFFFh        Reserved
FD_F928_0000h-FD_F928_0003h        Hash_End
FD_F928_0004h-FD_F928_0007h        Hash_Data
FD_F928_0008h-FD_F92F_FFFFh        Reserved
【００５８】
システムメモリ１１０は、図２についての記述に関連して上述したシステムメモリ１１０と実質的に同じ方法で動作する。例えば、図３のシステムメモリ１１０は、ＳＥＭプロセッサ１００により頻繁に用いられるプログラム命令及びデータを格納するように構成されている。ＳＥＭ処理モードに対する更なるサポートは、例えばＳＥＭプロセッサ１００の動作中にシステムメモリ１１０外部のＯＳに関連して実行されるセキュリティカーネルにより提供されてもよい。更に、上述したように、システムメモリ１１０は、高信頼部及び無信頼部に分けられてもよい。セキュリティカーネルは、システムメモリ１１０の高信頼部に存在する。上述したように、システムメモリ１１０は典型的にはページ仮想メモリを用いてアクセスされる。かかる仕組みにおいては、システムメモリ１１０が、個々のページ又はメモリ領域によりアクセスされることとしてもよい。このページング機能は、典型的には、ＯＳのメモリ管理機能によりハンドルされる。
【００５９】
上述したように、ストレージデバイス１４０はプログラムコード及びデータを格納してもよい。ある実施例において、ストレージデバイス１４０は、一のハードディスクドライブ又は複数のハードディスクドライブの一のバンクであってもよい。但し、他の実施例では、例えば、ＣＤ−ＲＯＭドライブ、フロッピディスクドライブ及びテープドライブのような他のマスストレージデバイスを含むことについて検討されている。
【００６０】
周辺機器１５０は、例えば、モデムや、ビデオキャプチャデバイス、その他の汎用入出力デバイスのように如何なる周辺機器であってもよい。他の実施例においては、ここに例示された以外の数の周辺機器が用いられていてもよい。
【００６１】
図示された実施例において、Ｉ／Ｏインタフェース２２０は、ＮＣ  Ｉ／Ｏリンク２２５上を伝達される非コヒーレントなＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）トランザクションや周辺バス１３５上を伝達されるバストランザクション及び周辺バス１４５上を伝達されるバストランザクションをブリッジするように構成されている。ある実施例において、周辺バス１３５はＬＰＣ（low pin count）バスである。また、周辺バス１４５は、ＰＣＩ（peripheral component bus）であってもよい。かかる実施例において、バスブリッジ２２１は、ＮＣ  Ｉ／Ｏリンク２２５上を伝達される非コヒーレントなＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）トランザクションやＬＰＣバス１３５上を伝達されるＬＰＣバストランザクション及びＰＣＩバス１４５上を伝達されるバストランザクションをブリッジするように構成されている。ある実施例において、ＬＰＣバスは、例えば、ホストとペリフェラルとの間の制御、アドレス及びデータ情報伝達のために４本の配線を使用する不可付番シリアルバスであってもよい。通信される情報は：スタート、ストップ（サイクルのアボート）、転送タイプ（メモリ、Ｉ／Ｏ、ＤＭＡ）、転送方向（リード／ライト）、アドレス、データ、待ち状態、ＤＭＡチャネル及びバスマスタ付与である。ＬＰＣバスに関する更なる情報については、インテル（登録商標）により提供されている「Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  第１．１版」を参照されたい。更に、ＰＣＩバスは一般に並列多重アドレス・データバスにて特徴付けられる。ＰＣＩバスに関する更なる情報についてはＰＣＩ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐにより提供された「ＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  第２．２版」を参照されたい。
【００６２】
Ｉ／Ｏインタフェース２２０は、ノーマルシステムオペレーション中において異なる周辺バス間のトランザクション用のバス制御及び変換を提供するように構成されている。加えて、バスブリッジ２２１は、セキュア初期化中にＳＥＭプロセッサ１００及びＳＳＰ１３０の間において非スプーファブル通信が生じることを許容するセキュリティメカニズムを含んでもよい。例えば、バスブリッジ２２１は、ＳＳＰがそれに接続されているか否か及びどのバスに接続されているかを決定するように構成されていてもよい。更に、図４及び図５についての記述と関連して後述するように、バスブリッジ２２１は、セキュリティ初期化命令の変換のような様々なセキュリティ関連機能を実行するように構成されていてもよい。例えば、バスブリッジ２２１は、ＮＣ  Ｉ／Ｏリンク２２５上で受信されたＳＫＩＮＩＴ関連メッセージを認識し、ＳＳＰ１３０の位置に応じて、必要に応じて、それらのメッセージをＬＰＣバス１３５又はＰＣＩバス１４５上を伝達するのに適したフォーマットでＳＳＰ１３０に伝達するようにして構成されていてもよい。更に、バスブリッジ２２１は、ＳＳＰ１３０に対するピアツーピア通信をブロックするように構成されていてもよい。また、バスブリッジ２２１は、ＳＫＩＮＩＴオペレーション中、ＳＳＰ１３０のＩ／Ｏにマップされたメモリ内においてアクセスウィンドウを実現するように構成されていてもよい。
【００６３】
図４及び図５についての記述に関連して後に詳述するように、バスブリッジ２２１は、ＳＫＩＮＩＴ関連ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）メッセージをターミネートし、それらのメッセージを、ＳＳＰ１３０の位置により、必要に応じて、正しいフォーマットで、ＬＰＣバス１３５又はＰＣＩバス１４５上を介してＳＳＰ１３０に対して伝達するように構成されたロジック（図３には図示せず）を含んでいてもよい。更に、バスブリッジ２２１はＳＳＰフロー制御に関するＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）を示すように設計されたロジック（図示せず）を含んでいてもよい。例えば、バスブリッジ２２１は、サポートされたＨｙｐｅｒＴａｒｎｓｐｏｒｔ（登録商標）データレートで到達するＨａｓｈ＿Ｄａｔａトランザクションの継続的なフローを吸収してもよいし、アップストリームのＮＣ  Ｉ／Ｏリンク２２５上にフロー制御を呼び出してもよい。
【００６４】
バスブリッジ２２１は、Ｈａｓｈ＿Ｓｔａｒｔ、Ｈａｓｈ＿Ｅｎｄのアクセスウィンドウのルールを実現するようにして構成されたロジック（図３には図示せず）を含んでいてもよい。具体的には、アップストリームリンクから受信したＨａｓｈ＿Ｄａｔａトランザクションを除き、Ｈａｓｈ＿ＳｔａｒｔバウンドとＨａｓｈ＿Ｅｎｄバウンドとの間においてＩ／ＯアドレスをマップされたＳＳＰのメモリに対するいかなるアクセスをも許容しないこととしてもよい。これは、ＳＳＰ１３０がどこに存在するかに応じて、ＬＰＣバス３３５又はＰＣＩバス１４５上のあらゆるピアツーピアトラフィックを含む。
【００６５】
図４に戻り、図３におけるバスブリッジの一実施例についてのブロック図が示されている。図３に示される構成要素に対応する構成要素には、明瞭化及び簡略化のため、同一の番号が付されている。ＬＰＣバスブリッジ３２１は、ＮＣ  Ｉ／Ｏリンク２２５と内部バス４２１に接続された内部ブリッジユニット４０１を含んでいる。また、ＬＰＣバスブリッジ３２１は、内部ブリッジユニット４０１とＳＫＩＮＩＴソースディテクタ４５０に接続されたＳＫＩＮＩＴフィルタ４０５を含んでいる。また、ＬＰＣバスブリッジ３２１は、ＳＫＩＮＩＴフィルタ４０５に接続されたアドレスフィルタ４１０に接続されたアドレスマッパ４１１を含んでいる。また、ＬＰＣバスブリッジ３２１は、コンフィグレーションヘッダ標準レジスタ４１５を制御するために接続された制御ロジック４１６を含んでいる。また、ＬＰＣバスブリッジ３２１は、いずれも内部バス４２１に接続されたリードバッファ４２５及びライトバッファ４３０を含んでいる。また、ＬＰＣバスブリッジ３２１は、ＳＫＩＮＩＴソースディテクタ４５０とＬＰＣバスサイクルエンジン４３５との間に接続されたＨａｓｈ＿ｘコマンド変換器４５５を含んでいる。更には、ＬＰＣバスブリッジ３２１は、ＬＰＣバス３３５に接続されたＬＰＣバスドライバ４４０を含んでいる。
【００６６】
図示された実施例において、内部バス４２１はＬＰＣバスブリッジ３２１内部においてトランザクションを内部伝達するために用いられてもよい。ＮＣ  Ｉ／Ｏリンク２２５上で受信したトランザクションは内部ブリッジユニット４０１により受信され、内部バスサイクルに変換されてもよい。ある実施例において、内部ブリッジユニット４０１は、ＮＣ  Ｉ／Ｏリンク２２５上のＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）メッセージを受信して、内部バス４２１上を伝達するために当該メッセージをＰＣＩバスサイクルに変換するように構成されていてもよい。例えば、Ｈａｓｈ＿Ｓｔａｒｔメッセージ、Ｈａｓｈ＿Ｅｎｄメッセージ、及びＨａｓｈ＿ＤａｔａメッセージのようなＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）メッセージは、図６乃至図８についての記述に関連して上述したように、送信されてもよい。
【００６７】
内部ブリッジユニット４０１がＮＣ  Ｉ／Ｏリンク２２５からトランザクションを受信した際に、ＳＫＩＮＩＴフィルタ４１５はＳＫＩＮＩＴトランザクションを認識するように構成されている。トランザクションがＳＫＩＮＩＴトランザクションであった場合、それらのトランザクションはＳＫＩＮＩＴソースディテクタ４５０に転送される。アドレスマッパ４１１は、受信したアドレスを、以下に示す対応するＬＰＣバス３３５アドレスにマッピングする。アドレスフィルタ４１０は、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）メッセージに対応するＰＣＩトランザクションを受信してもよく、トランザクションのアドレスがＳＳＰ１３０の２５６バイトセキュリティ初期化アドレスウィンドウ内にある場合には範囲内（ｉｎ−ｒａｎｇｅ）信号がアドレスフィルタ４１０からＳＫＩＮＩＴソースディテクタ４５０に対して供給されることとしてもよい。以下に更に述べるように、アドレスフィルタ４１０は、コンフィグレーションヘッダ標準レジスタ４１５を用いて、入力メッセージのアドレスを比較することとしてもよい。ある実施例において、コンフィグレーションヘッダ標準レジスタ４１５は、システムブート中におけるＳＳＰ１３０の基底アドレスレジスタ（図示せず）の内容によってプログラムされることとしてもよい。このプログラミングは、ＢＩＯＳ（basic input/output system）を利用して達成される。
【００６８】
ある実施例において、ＳＬの有効性確認及びメモリにマップされたＩ／Ｏトランザクションは、ＬＰＣバスブリッジ３２１のアドレスマッパ４１１により、以下に示すように、ＬＰＣバス３３５の４Ｋバイト固定長アドレスレンジ内にマッピングされる：
FED0_0000h-FED0_0003h        Hash_End
FED0_0004h-FED0_0007h        Hash_Data
FED0_0008h-FED0_000Bh        Hash_Start
FED0_000Ch-FED0_00FFh        Reserved
FED0_0100h-FED0_0103h        Device_ID-Vendor_IDレジスタ
FED0_0104h-FED0_0107h        Class_Code-Revision_IDレジスタ
FED0_0108h-FED0_010Bh        Subsystem_ID-Subsystem_Vendor_IDレジスタ
FED0_010Ch-FED0_01FFh        Reserved
FED0_0200h-FED0_0FFFh        SSP Memory-Mapped I/O Window
FED0_1000h-FED0_FFFFh        Reserved
【００６９】
ＬＰＣバス３３５上のトランザクションはバイト読出し、バイト書込みであることに留意する。従って、ＮＣ  Ｉ／Ｏリンク２２５上で受信されたいかなるＨａｓｈ＿Ｄａｔａ  Ｄｗｏｒｄトランザクションも、対応するバイトトランザクションに変換されてもよい。
【００７０】
ＳＫＩＮＩＴソースディテクト４５０は、トランザクションのソースを決定するように構成されていてもよい。ＳＫＩＮＩＴトランザクションのソースがホストブリッジではないとＳＫＩＮＩＴソースディテクト４５０が決定した場合、それらのＳＫＩＮＩＴトランザクションはドロップされるか、捨てられてもよい。ある実施例においては、ホストブリッジが唯一のソースでないようなＳＫＩＮＩＴトランザクションを受信することに応じてシステムリセットが行われることとしてもよい。しかしながら、ＳＫＩＮＩＴトランザクションのソースがＳＥＭプロセッサ１００Ａのホストブリッジであり、且つ、範囲内信号により決定されたようにそれらのトランザクションのアドレスがセキュリティ初期化ウィンドウ内にあるとＳＫＩＮＩＴソースディテクト４５０が決定した場合には、ＳＫＩＮＩＴトランザクションはＨａｓｈ＿ｘコマンド変換器４５５によりＬＰＣコマンドに変換され、関連するＬＰＣアドレスにマッピングされ得る。その後、ＬＰＣバスサイクルエンジン４３５は、適切なＬＰＣバスサイクルを発生する。ＬＰＣバスドライバ４４０は、その後、適切な信号を発生してＳＳＰ１３０への伝達用としてＬＰＣバス３３５上にバスサイクルをドライブする。
【００７１】
リードバッファ４２５及びライトバッファ４３０は各内部バスサイクルに関連するデータを格納するように構成されたストレージであってもよい。トランザクションが内部バス４２１上を伝達される際に、トランザクションがリードサイクルであるかライトサイクルであるかを内部バスサイクルデコーダ４２０が決定してもよい。サイクルに関する如何なるデータも、ＬＰＣバスサイクルを発生する際に、ＬＰＣバスサイクルエンジン４３５による使用に適当なバッファ内に格納されてもよい。
【００７２】
ＬＰＣバス３３５が不可付番バスであることから、ＬＰＣバスブリッジ３２１は、ＳＳＰ１３０が存在するか否かに応じて、ＳＳＰ１３０に対して、ソフトウェアから見ることができ且つアクセス可能なコンフィグレーションヘッダを提供する。ある実施例において、コンフィグレーションヘッダ標準レジスタ４１５は標準ＰＣＩコンフィグレーションヘッダと互換性のあるものとしてもよい。システムブート中、ＢＩＯＳはＬＰＣバス３３５上にＳＳＰ１３０が存在するか否かについてチェックしてもよい。ＳＳＰ１３０が検出されると、ＢＩＯＳは、コンフィグレーションヘッダ４１５の標準レジスタがソフトウェアから見ることができ且つアクセス可能となるようにするための１ビット（フラグ）をコントロールロジック４１６にセットする。これに代えて、ＳＳＰ１３０がスタートアップ時に制御ロジック４１６によりインストールされ且つリードされるときに、ジャンパ配線が適切な場所に接続されていてもよい。さもなければ、ＳＳＰが見当たらなかった場合、コンフィグレーションヘッダとその標準レジスタ４１５は制御ロジック４１６によりソフトウェアから見えない状態に置かれることとしてもよい。更に、ＳＳＰ１３０は固定長ＬＰＣバスアドレスにマッピングされた一組のリードオンリーレジスタを含んでいてもよい。ＢＩＯＳはこれらのレジスタをリードし、その値をコンフィグレーションヘッダ標準レジスタ４１５の一覧レジスタ内にロードしてもよい。ある実施例において、以下のＳＳＰリードオンリーレジスタは固定長ＬＰＣアドレスにマッピングされていてもよい。
【表１】
0004514060.tif 000002
【００７３】
ある実施例において、ＬＰＣバスブリッジ３２１は、ＳＳＰ１３０用の割り込みメカニズムを含んでいてもよい。ＬＰＣブリッジ３２１は、コンフィグレーションヘッダ標準レジスタ４１５内部のコンフィグレーションヘッダ割り込みレジスタを通じて、ＳＳＰ割り込みに対するマッピングを提供する。ある実施例において、ＬＰＣバスブリッジ３２１は、ＳＳＰ割り込みのマッピングを固定し、それをコンフィグレーションヘッダにレポートする。これに代えて、ＢＩＯＳがコンフィグレーションヘッダレジスタをプログラムしてもよい。
【００７４】
従って、以上述べたことから、ＬＰＣバスブリッジ３２１は、ＳＥＭ機能付きプロセッサ１００のホストブリッジに端を発するＳＳＰ１３０のセキュリティ初期化アドレスウィンドウに対するアクセスを許容し、一方で、ＳＥＭ機能付きプロセッサ１００のセキュリティ初期化中においてピアツーピアアクセスのような他のアクセスをブロックすることとしてもよい。
【００７５】
図４についての記述に関連して上述されたＬＰＣバスブリッジ３２１の実施例は具体的なブロックに関連付けられた機能手段を含んでいたが、それら具体的なブロックは説明目的のためだけに用いられたものであり、他の実施例においては同様に機能し得るように構成された他のブロックを含んでいてもよい点に留意する。
【００７６】
図５を参照すると、図３のブリッジユニットの他の実施例のブロック図が示されている。図２乃至図３に示された構成要素に対応する構成要素には、明瞭化及び簡略化のため、同一の参照符号を付してある。ＰＣＩバスブリッジ４２１は、ＮＣ  Ｉ／Ｏリンク２２５及び内部バス５２１に接続された内部ブリッジユニット５０１を含んでいる。また、ＰＣＩバスブリッジ４２１は、内部ブリッジユニット５０１及びＳＫＩＮＩＴソースディテクタ５５０に接続されたＳＫＩＮＩＴフィルタ５０５を含んでいる。また、ＰＣＩバスブリッジ４２１は、ＳＫＩＮＩＴフィルタ５０５及び基底アドレスレジスタ（ＢＡＲ）シャドウレジスタ５１５に接続されたアドレスフィルタ５１０に接続されたアドレスマッパ５１１を含んでいる。また、ＰＣＩバスブリッジ４２１は、内部バス５２１に接続された内部バスサイクルデコーダ５２０を含んでいる。また、ＰＣＩバスブリッジ４２１は、いずれも内部バス５２１に接続されたリードバッファ５２５及びライトバッファ５３０を含んでいる。また、ＰＣＩバスブリッジ４２１は、ＳＫＩＮＩＴソースディテクタ５５０とＰＣＩバスサイクルエンジン５３５との間に接続されたＨａｓｈ＿ｘコマンド変換器５５５を含んでいる。更に、ＰＣＩバスブリッジ４２１は、ＰＣＩバス５４５に接続されたＰＣＩバスドライバ５４０を含んでいる。
【００７７】
ある実施例において、ＢＡＲシャドウレジスタ５１５は、システムブート中におけるＳＳＰ１３０の基底アドレスレジスタ（図示せず）の内容によってプログラムされてもよい。このプログラミングは、ＢＩＯＳを利用して達成される。ＢＡＲシャドウレジスタ５１５は、ＳＳＰ１３０のＢＡＲに一致するように構成されている。制御ロジック５１６はＳＳＰ１３０のＢＡＲとＢＡＲシャドウレジスタ５１５との内容の一致を維持する。その内容の一致を維持するために、ある実施例において、制御ロジック５１６は、ＳＳＰ１３０用の専用の初期化機器選択（ＩＤＳＥＬ）を規定してもよい。ＳＳＰは、マザーボード上に物理的に搭載され又は半田付けされる。マザーボードは、ＳＳＰ１３０と、Ｉ／Ｏインタフェース５２０のＰＣＩバスブリッジ４２１から予め規定された専用のＩＤＳＥＬとを接続するように構成されていてもよい。４０ビットセキュリティアドレスを対応するＰＣＩバス５４５の３２ビットアドレス空間にマッピングするため、アドレスマッパ５１５はいつ可付番ライトが生じているのかを制御ロジック５１６に知らせるように構成されてもよい。制御ロジック５１６は、ＳＳＰ１３０のＢＡＲに対する可付番ライトを取り込み、取り込まれた可付番ライトを代わりにＢＡＲシャドウレジスタ５１５に書き込ませることとしてもよい。取り込みは、バス又は特定のトランザクション用のインタフェースを監視し、もし一致したならば、当該トランザクションを除去又はインタセプトすることを意味する。
【００７８】
ある実施例において、ＳＬの有効性判断とメモリにマッピングされたＩ／Ｏトランザクションは、ＰＣＩバスブリッジ４２１のアドレスマッパ５１１によりＰＣＩバス５４５上のアドレス範囲に、以下のようにして、マッピングされる：
XXXX_XXX0h-XXXX_XXX3h        Hash_End
XXXX_XXX4h-XXXX_XXX7h        Hash_Data
XXXX_XXX8h-XXXX_XXXBh        Hash_Start
XXXX_X00Ch-XXXX_X1FFh        Reserved
XXXX_X200h-XXXX_XFFFh        SSP Memory-Mapped I/O Window
【００７９】
図示された実施例において、内部バス５２１はＰＣＩバスブリッジ４２１内部においてトランザクションを内部伝達するために用いられてもよい。ＮＣ  Ｉ／Ｏリンク２２５上で受信したトランザクションは、内部ブリッジユニット５０１により受信され、内部バスサイクルに変換されてもよい。ある実施例において、内部ブリッジユニット５０１は、ＮＣ  Ｉ／Ｏリンク２２５上においてＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）を受信し、内部バス５２１上における伝達用として、それらメッセージをＰＣＩバスサイクルに変換するように構成されていてもよい。例えば、図６乃至図８についての記述に関連して以下に説明するＨａｓｈ＿Ｓｔａｒｔメッセージ、Ｈａｓｈ＿Ｅｎｄメッセージ及びＨａｓｈ＿ＤａｔａメッセージといったＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）メッセージが送信されてもよい。
【００８０】
内部ブリッジユニット５０１がＮＣ  Ｉ／Ｏリンク２２５からトランザクションを受信した際、ＳＫＩＮＩＴフィルタ５１５はＳＫＩＮＩＴトランザクションを認識するように構成されていてもよい。それらのトランザクションがＳＫＩＮＩＴトランザクションであった場合、当該トランザクションは、ＳＫＩＮＩＴソースディテクタ５５０に転送されてもよい。アドレスマッパ５１１は、以下に示すように、４０ビットセキュリティアドレスを対応するＰＣＩバス５４５の３２ビットアドレス空間にマッピングしてもよい。アドレスフィルタ５１０は、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）に対応するＰＣＩトランザクションを受信し、それらのトランザクションのアドレスがＳＳＰ１３０の２５６バイトセキュリティ初期化アドレスウィンドウ内部にある場合（例えば、メモリにマッピングされたＩ／Ｏ空間の、Ｈａｓｈ＿Ｓｔａｒｔアドレス、Ｈａｓｈ＿Ｅｎｄアドレス及びＨａｓｈ＿Ｄａｔａアドレスに対応する最初の３つのＤｗｏｒｄ）、範囲内（ｉｎ−ｒａｎｇｅ）信号がアドレスフィルタ５１０からＳＫＩＮＩＴソースディテクタ５５０に対して提供されることとしてもよい。
【００８１】
ＳＫＩＮＩＴソースディテクト５５０は、トランザクションのソースを決定するように構成されていてもよい。ＳＫＩＮＩＴトランザクションのソースがホストブリッジではないとＳＫＩＮＩＴソースディテクト５５０が決定した場合、それらのＳＫＩＮＩＴトランザクションはドロップされるか、捨てられてもよい。ある実施例においては、ホストブリッジが唯一のソースでないようなＳＫＩＮＩＴトランザクションを受信することに応じてシステムリセットが行われることとしてもよい。他の実施例において、ＰＣＩバスブリッジ４２１は、ＳＳＰ１３０のセキュリティ初期化アドレスウィンドウにアクセスしようとしていたマスタに対するその後の許可の発行をブロックしてもよい。
【００８２】
しかしながら、ＳＫＩＮＩＴトランザクションのソースがＳＥＭプロセッサ１００Ａのホストブリッジであり、且つ、範囲内信号により決定されたようにそれらのトランザクションのアドレスがセキュリティ初期化ウィンドウ内にあるとＳＫＩＮＩＴソースディテクト５５０が決定した場合には、ＳＫＩＮＩＴトランザクションはＨａｓｈ＿ｘコマンド変換器５５５によりＰＣＩコマンドに変換され、関連するＰＣＩアドレスにマッピングされ得る。その後、ＰＣＩバスサイクルエンジン５３５は、適切なＰＣＩバスサイクルを発生する。ＰＣＩバスドライバ５４０は、その後、適切な信号を発生してＳＳＰ１３０への伝達用としてＰＣＩバス５４５上にバスサイクルをドライブする。
【００８３】
リードバッファ５２５及びライトバッファ５３０は各内部バスサイクルに関連するデータを格納するように構成されたストレージであってもよい。トランザクションが内部バス５２１上を伝達される際に、トランザクションがリードサイクルであるかライトサイクルであるかを内部バスサイクルデコーダ５２０が決定してもよい。サイクルに関する如何なるデータも、ＰＣＩバスサイクルを発生する際に、ＰＣＩバスサイクルエンジン５３５による使用に適当なバッファ内に格納されてもよい。
【００８４】
従って、以上述べたことように、ＰＣＩバスブリッジ４２１は、ＳＥＭ機能付きプロセッサ１００のホストブリッジに端を発するＳＳＰ１３０のセキュリティ初期化アドレスウィンドウに対するアクセスを許容し、一方で、ＳＥＭ機能付きプロセッサ１００のセキュリティ初期化中においてピアツーピアアクセスのような他のアクセスをブロックすることとしてもよい。
【００８５】
図５についての記述に関連して上述されたＰＣＩバスブリッジ４２１の実施例は具体的なブロックに関連付けられた機能手段を含んでいたが、それら具体的なブロックは説明目的のためだけに用いられたものであり、他の実施例においては同様に機能し得るように構成された他のブロックを含んでいてもよい点に留意する。
【００８６】
ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）を利用したセキュリティカーネルの初期化
【００８７】
上述したように、パケットは、ＮＣ  Ｉ／Ｏリンク２２５のようなＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）リンク上をアップストリーム側に又はダウンストリーム側に送信されてもよい。更に、特定の宛先を有するパケットがあってもよいし、すべての機器に対してブロードキャストされるパケットがあってもよい。図６乃至図８は、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）の仕様と互換性のある典型的なＳＫＩＮＩＴトランザクションパケットを例示している。図６は典型的なＨａｓｈ＿Ｓｔａｒｔパケットを示しており、図７は典型的なＨａｓｈ＿Ｅｎｄパケットを示しており、図８は典型的なＨａｓｈ＿Ｄａｔａパケットを示している。リンクコンフィグレーションやシグナリング並びに様々なＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）パケットフォーマットに関する更に詳細な情報は、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）テクノロジコンソーシアムにより発行された「ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）Ｉ／Ｏ  Ｌｉｎｋ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」の最新版にて見ることができる。
【００８８】
ここで、図６に戻ると、Ｈａｓｈ＿Ｓｔａｒｔパケットの一実施例を描いた図が示されている。Ｈａｓｈ＿Ｓｔａｒｔパケット６００は第０〜７ビット即ち１バイトからなるフィールドを複数含んでいる。また、パケットは、第０〜７ビット次を含んでいる、即ち、８バイトパケットである。Ｈａｓｈ＿Ｓｔａｒｔパケット６００のフォーマットによれば、当該パケットが、一般的にホストブリッジがすべてのダウンストリーム機器に対して通信するために用いられるブロードキャストメッセージであることが明らかである。第０ビット次においては、第０〜５ビットがコマンドタイプをエンコードするために用いられ、ＣＭＤ［５：０］とラベリングされ、第６〜７ビットがシーケンスＩＤの第２及び第３ビットをエンコードするために用いられ、ＳｅｑＩＤ［３：２］とラベリングされる。図示された実施例において、ＣＭＤ［５：０］のエンコーディングは１１１０１０ｂであり、これは、ノンポスティド、サイズド・ライト、ダブルワード、等時性、且つ、非コヒーレントなパケットであることを示している。第１ビット次においては、第０〜４ビットがホストブリッジ（０００００ｂ）のユニットＩＤをエンコードするために用いられ、ＵｎｉｔＩＤ［４：０］とラベリングされている。第５〜６ビットは、シーケンスＩＤの第０ビット及び第１ビットをエンコードするために用いられ、ＳｅｑＩＤ［１：０］とラベリングされている。第７ビットはパス・ポスティド・ライト・ビットであり、ＰａｓｓＰＷとラベリングされている。この実施例において、ＰａｓｓＰＷビットの値は０ｂに固定されている。第２ビット次においては、すべてのビットがリザーブされている。第３ビット次において、第０〜１ビットはリザーブされている。第２〜７ビットは第２〜第７のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［７：２］とラベリングされている。これらのビットは、ドントケア（ｄｏｎ‘ｔ  ｃａｒｅ）ビットである。第４ビット次において、第０〜７ビットは第８〜１５のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［１５：８］とラベリングされている。これらのビットは、ドントケア（ｄｏｎ‘ｔ  ｃａｒｅ）ビットである。第５ビット次において、第０〜１ビットは、第１６〜１７のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［１７：１６］とラベリングされている。これらのビットは、ドントケア（ｄｏｎ‘ｔ  ｃａｒｅ）ビットである。第２〜７のビットは第１８〜２３のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［２３：１８］とラベリングされる。これらのビットは、アドレス値を００１０１０ｂとしてエンコードされる。第６ビット次において、第０〜７ビットは、第２４〜３１のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［３１：２４］とラベリングされる。これらのビットは、アドレス値をＦ９ｈとしてエンコードされる。第７ビット次において、第０〜７ビットは第３２〜３９のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［３９：３２］とラベリングされる。これらのビットは、アドレス値をＦＤｈとしてエンコードされる。これらのアドレスは、図２乃至図５についての記述に関連して上述されたＳＳＰ１３０のリザーブされたＳＫＩＮＩＴアドレス空間に対応している。
【００８９】
図７を参照すると、Ｈａｓｈ＿Ｅｎｄパケットの一実施例の図が示されている。図６のＨａｓｈ＿Ｓｔａｒｔパケット６００と同様に、Ｈａｓｈ＿Ｅｎｄパケット７００は第０〜７ビット即ち１バイトからなるフィールドを複数含んでいる。また、パケットは、第０〜７ビット次を含んでいる、即ち、８バイトパケットである。Ｈａｓｈ＿Ｅｎｄパケット７００のフォーマットによれば、当該パケットが、一般的にホストブリッジがすべてのダウンストリーム機器に対して通信するために用いられるブロードキャストメッセージであることが明らかである。第０ビット次においては、第０〜５ビットがコマンドタイプをエンコードするために用いられ、ＣＭＤ［５：０］とラベリングされ、第６〜７ビットがシーケンスＩＤの第２及び第３ビットをエンコードするために用いられ、ＳｅｑＩＤ［３：２］とラベリングされる。図示された実施例において、ＣＭＤ［５：０］のエンコーディングは１１１０１０ｂであり、これは、ノンポスティド、サイズド・ライト、ダブルワード、等時性、且つ、非コヒーレントなパケットであることを示している。第１ビット次においては、第０〜４ビットがホストブリッジ（０００００ｂ）のユニットＩＤをエンコードするために用いられ、ＵｎｉｔＩＤ［４：０］とラベリングされている。第５〜６ビットは、シーケンスＩＤの第０ビット及び第１ビットをエンコードするために用いられ、ＳｅｑＩＤ［１：０］とラベリングされている。第７ビットはパス・ポスティド・ライト・ビットであり、ＰａｓｓＰＷとラベリングされている。この実施例において、ＰａｓｓＰＷビットの値は０ｂに固定されている。第２ビット次においては、すべてのビットがリザーブされている。第３ビット次において、第０〜１ビットはリザーブされている。第２〜７ビットは第２〜第７のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［７：２］とラベリングされている。これらのビットは、０００００ｂのアドレス値にエンコードされている。第４ビット次において、第０〜７ビットは第８〜１５のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［１５：８］とラベリングされている。これらのビットは、００００ｂのアドレス値にエンコードされている。第５ビット次において、第０〜１ビットは、第１６〜２３のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［２３：１６］とラベリングされている。これらのビットは、アドレス値を２８ｈとしてエンコードされる。第６ビット次において、第０〜７ビットは、第２４〜３１ビットをエンコードするために用いられ、Ａｄｄｒ［３１：２４］とラベリングされる。これらのビットは、アドレス値をＦ９ｈとしてエンコードされる。第７ビット次において、第０〜７ビットは第３２〜３９のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［３９：３２］とラベリングされる。これらのビットは、アドレス値をＦＤｈとしてエンコードされる。これらのアドレスは、図２乃至図５についての記述に関連して上述されたＳＳＰ１３０のリザーブされたＳＫＩＮＩＴアドレス空間に対応している。
【００９０】
図８を参照すると、Ｈａｓｈ＿Ｄａｔａパケットの一実施例を描いた図が示されている。Ｈａｓｈ＿Ｄａｔａパケット８００は第０〜７ビット即ち１バイトからなるフィールドを複数含んでいる。また、パケットは、第０〜７ビット次を含んでいる、即ち、８バイトパケットである。Ｈａｓｈ＿Ｄａｔａパケット８００のフォーマットによれば、当該パケットが、サイズド・ライト・リクエスト・パケットであることが分かる。第０ビット次においては、第０〜５ビットがコマンドタイプをエンコードするために用いられ、ＣＭＤ［５：０］とラベリングされ、第６〜７ビットがシーケンスＩＤの第２及び第３ビットをエンコードするために用いられ、ＳｅｑＩＤ［３：２］とラベリングされる。図示された実施例において、ＣＭＤ［５：０］のエンコーディングは００１１ｘ０ｂであり、これは、ノンポスティド、ダブルワードを有するサイズド・ライト・リクエスト、且つ、非コヒーレントなパケットであることを示している。第１ビット次においては、第０〜４ビットがホストブリッジ（０００００ｂ）のユニットＩＤをエンコードするために用いられ、ＵｎｉｔＩＤ［４：０］とラベリングされている。第５〜６ビットは、シーケンスＩＤの第０ビット及び第１ビットをエンコードするために用いられ、ＳｅｑＩＤ［１：０］とラベリングされている。第７ビットはパス・ポスティド・ライト・ビットであり、ＰａｓｓＰＷとラベリングされている。この実施例において、ＰａｓｓＰＷビットの値は０ｂに固定されている。第２ビット次においては、第０〜４のビットがソースタグ値をエンコードするために用いられ、ＳｒｃＴａｇ［４：０］とラベリングされている。第５ビットは、互換ビットであり、その値は０ｂに固定されている。第６〜７ビットは、データマスク又はデータカウント値の第０及び第１ビットをエンコードするために用いられ、Ｍａｓｋ／Ｃｏｕｎｔ［１：０］とラベリングされる。これらのビットは、トランザクション毎に単一のＤｗｏｒｄとしてＨａｓｈ＿Ｄａｔａが送られても良く且つＢｙｔｅ又はＤｗｏｒｄモードのいずれが使われてもよいことを示す値０ｘｂでエンコードされている。例えば、Ｄｗｏｒｄモード用の場合、カウント値＝００００ｂ（１Ｄｗｏｒｄ）であり、バイトモード用の場合、カウント値＝０００１ｂ（２Ｄｗｏｒｄ、１データ、１マスク）及びマスクＤｗｏｒｄ値＝０００Ｆｈである。第３ビット次において、第０〜１ビットはデータマスク又はデータカウント値の第２及び第３ビットをエンコードするために用いられ、Ｍａｓｋ／Ｃｏｕｎｔ［３：２］とラベリングされる。第２〜７ビットは第２〜第７のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［７：２］とラベリングされている。これらのビットは、アドレス値を０００００１ｂとしてエンコードされる。第４ビット次において、第０〜７ビットは第８〜１５のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［１５：８］とラベリングされている。これらのビットは、アドレス値を００ｈとしてエンコードされる。第５ビット次において、第０〜７ビットは、第１６〜２３のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［２３：１６］とラベリングされている。これらのビットは、アドレス値を２８ｈとしてエンコードされる。第６ビット次において、第０〜７ビットは、第２４〜３１のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［３１：２４］とラベリングされる。これらのビットは、アドレス値をＦ９ｈとしてエンコードされる。第７ビット次において、第０〜７ビットは第３２〜３９のアドレスビットをエンコードするために用いられ、Ａｄｄｒ［３９：３２］とラベリングされる。これらのビットは、アドレス値をＦＤｈとしてエンコードされる。これらのアドレスは、図２乃至図５についての記述に関連して上述されたＳＳＰ１３０のリザーブされたＳＫＩＮＩＴアドレス空間に対応している。
【００９１】
実施例についてかなり詳細に説明してきたが、上記の開示が完全に理解されれば、当業者にとっては多数の変種及び変形が明らかになるだろう。後述するクレームがそれらすべての変種及び変形を包含するように解釈されることが意図される。
【産業上の利用可能性】
【００９２】
本発明は、一般に、コンピュータシステムに適用可能である。
【図面の簡単な説明】
【００９３】
【図１】セキュア動作モード機能付きプロセッサの一実施例によるオペレーショナルドメインと、それらドメインにおいて動作するコードの振る舞いを示す図である。
【図２】高信頼コンピューティングプラットフォームを採用するコンピュータシステムの一実施例のブロック図である。
【図３】高信頼コンピューティングプラットフォームを採用するコンピュータシステムの他の実施例のブロック図である。
【図４】セキュリティサービスプロセッサに対する接続用のＩ／Ｏインタフェースユニットの一実施例のブロック図である。
【図５】セキュリティサービスプロセッサに対する接続用のＩ／Ｏインタフェースユニットの他の実施例のブロック図である。
【図６】ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）プロトコルに従ってフォーマットされたＨａｓｈ＿Ｓｔａｒｔパケットの一実施例を示す図である。
【図７】ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）プロトコルに従ってフォーマットされたＨａｓｈ＿Ｅｎｄパケットの一実施例を示す図である。
【図８】ＨｙｐｅｒＴｒａｎｓｐｏｒｔ（登録商標）プロトコルに従ってフォーマットされたＨａｓｈ＿Ｄａｔａパケットの一実施例を示す図である。
【図１】
0004514060.tif 000003
【図２】
0004514060.tif 000004
【図３】
0004514060.tif 000005
【図４】
0004514060.tif 000006
【図５】
0004514060.tif 000007
【図６】
0004514060.tif 000008
【図７】
0004514060.tif 000009
【図８】
0004514060.tif 000010