(57)【要約】セキュリティ初期化命令を実行することによって、セキュア実行モードを初期化するプロセッサを含む、コンピュータシステム（１０，２０）。さらに、このプロセッサはセキュアオペレーティングシステムコードセグメントを実行することによって、セキュア実行モードで動作可能である。このコンピュータシステムはさらにＩ／Ｏリンク（２２５）を介してプロセッサに結合された入出力（Ｉ／Ｏ）インターフェイス（１２０，２２０）を含む。このＩ／Ｏインターフェイスはセキュリティ初期化命令の実行の結果として実行されたトランザクションを受信する。このトランザクションはセキュアオペレーティングシステムコードセグメントの少なくとも一部を含む。Ｉ／Ｏインターフェイスはさらにプロセッサがトランザクションの発信元かどうかを判定する。コンピュータシステムはさらに、ペリフェラルバス（１３５）を介してＩ／Ｏインターフェイスに結合されたセキュリティサービスプロセッサ（１３０）を含む。Ｉ／Ｏインターフェイスは、プロセッサがトランザクションの発信元かどうかの判定に応じて、セキュリティサービスプロセッサにそのトランザクションを伝達する。
2005528677.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティ初期化命令を実行することによって、セキュア実行モードを初期化するように構成され、セキュアオペレーティングシステムコードセグメントを実行することによって、前記セキュア実行モードで動作するように構成されたプロセッサ（１１０）と、
Ｉ／Ｏリンク（２２５）を介して前記プロセッサに結合され、前記セキュリティ初期化命令の実行の結果として実行されるトランザクションを受信して、前記トランザクションの発信元が前記プロセッサがどうかを判定するように構成された入力／出力（Ｉ／Ｏ）インターフェイス（１２０，２２０）と、
ペリフェラルバス（１３５）を介して、前記Ｉ／Ｏインターフェイスに結合されたセキュリティサービスプロセッサ（１３０）とを備え、
前記トランザクションは前記セキュアオペレーティングシステムコードセグメントの少なくとも一部を含み、前記Ｉ／Ｏインターフェイスは、前記プロセッサが前記トランザクションの発信元かどうかの判定に応じて、前記セキュリティサービスプロセッサに前記トランザクションを伝達するように構成されている、コンピュータシステム（２０）。
【請求項２】
前記Ｉ／Ｏインターフェイスは、前記プロセッサが前記トランザクションの唯一の発信元ではないとの判定に応答して、前記セキュリティサービスプロセッサへの前記トランザクションをブロックするように構成されている、請求項１記載のコンピュータシステム。
【請求項３】
前記セキュリティサービスプロセッサは、前記プロセッサの前記セキュア実行モードへの前記初期化の際に、前記セキュアオペレーティングシステムコードセグメントの前記少なくとも一部が有効であるかどうかを検証するように構成されている、請求項１記載のコンピュータシステム。
【請求項４】
前記セキュリティ初期化命令の実行の結果として実行される前記トランザクションが、Startトランザクション、対応するDataトランザクション、および対応するEndトランザクションを含む、請求項１記載のコンピュータシステム。
【請求項５】
前記Ｉ／Ｏインターフェイスはさらに、前記Startトランザクションの受信後、前記Endトランザクションの受信前に、前記セキュリティサービスプロセッサへのすべてのピアトゥーピアのトランザクションをブロックするように構成されている、請求項４記載のコンピュータシステム。
【請求項６】
セキュアオペレーティングシステムコードセグメントを実行することによって、セキュア実行モードで動作するプロセッサ（１１０）を、前記セキュア実行モードでの動作のために初期化する方法であって、
前記プロセッサがセキュリティ初期化命令を実行するステップと、
入力／出力（Ｉ／Ｏ）インターフェイス（１２０，２２０）が、Ｉ／Ｏリンク（２２５）上で、前記プロセッサから、前記セキュリティ初期化命令の実行の結果として実行されるトランザクションを受信するステップであって、前記トランザクションは前記セキュアオペレーティングシステムコードセグメントの少なくとも一部を含むステップと、
前記Ｉ／Ｏインターフェイスが、前記プロセッサが前記トランザクションの発信元かどうかの判定するステップと、
前記Ｉ／Ｏインターフェイスが、前記プロセッサが前記トランザクションの発信元かどうかの判定に応じて、セキュリティサービスプロセッサ（１３０）に前記トランザクションを伝達するステップとを含む、方法。
【請求項７】
前記Ｉ／Ｏインターフェイスが、前記プロセッサが前記トランザクションの唯一の発信元ではないとの判定に応答して、前記セキュリティサービスプロセッサへの前記トランザクションをブロックするステップをさらに含む、請求項６記載の方法。
【請求項８】
前記セキュリティサービスプロセッサが、前記プロセッサの前記セキュア実行モードへの前記初期化の際に、前記セキュアオペレーティングシステムコードセグメントの前記少なくとも一部が有効であるかどうかを検証するステップをさらに含む、請求項６記載の方法。
【請求項９】
前記セキュリティ初期化命令の実行の結果として実行される前記トランザクションが、Startトランザクション、対応するDataトランザクション、および対応するEndトランザクションを含む、請求項６記載の方法。
【請求項１０】
前記Ｉ／Ｏインターフェイスが、前記Startトランザクションの受信後、前記Endトランザクションの受信前に、前記セキュリティサービスプロセッサへのすべてのピアトゥーピアのトランザクションをブロックするステップをさらに含む、請求項９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムに関し、さらに詳細には許可されていないアクセスからコンピュータシステムメモリ内に記憶されているデータを保護するためのトラステッド（trusted）実行モードを採用するコンピュータシステムに関する。
【背景技術】
【０００２】
現代的なコンピュータシステムは人々の暮らしに革新をもたらしている。特に、ｘ８６システムアーキテクチャを採用するマイクロプロセッサを含む、システムプラットホームにおいて特にそれが当てはまる。ユーザによって取り付け可能なサードパーティー製の無数の周辺装置およびアプリケーションに対してｘ８６ベースシステムが開放されていることによって、ハードウェアおよびソフトウェアベンダーの大きな市場が実現され、それは競争、革新、そして進化を育んできた。品質および性能が向上し続ける、デジタルコミュニケーションおよびメディアシステムとして当該プラットホームが幅広く受け入れられていることが、そのような進化の証左である。インターネットと協力して、これらのシステムプラットホームはデジタルコンテンツの大量流通に明確な革新をもたらしており、新聞、リアルタイムの天気予報、世界中のラジオ局、オンラインバンキングおよびショッピング、オーディオおよびビデオエンターテインメントへのオンデマンドのアクセスを可能にしている。
【０００３】
ｘ８６プラットホームはオープンアーキテクチャなので、通常デバイスはそのデバイスにアクセスするためにカーネルモードで動作するベンダーから供給されるドライバを有し、ある種のソフトウェアアプリケーションはカーネルモードコンポーネントを含んでいる。従って、オープンアーキテクチャは数々の特長を有しており、あるアプリケーションが他のアプリケーションと偶発的に干渉することに対してすでに大規模な保護（プロテクション）を提供してはいるものの、現在のアーキテクチャとしての保護機構は、この環境において望ましくない不正操作にさらされる可能性がある。
【０００４】
ｘ８６アーキテクチャを採用するマイクロプロセッサを含むコンピュータシステムは、互いに干渉する複数のアプリケーションに対する保護のために設計された機能を有する。例えば、ｘ８６ベースのオペレーティングシステムは、複数のアプリケーションが互いに分離され、クリティカルなオペレーティングシステムコードおよびデータがアプリケーションから分離される環境を提供するための、ｘ８６プロテクトモードアーキテクチャの２つの機能、１）ページ化された仮想メモリ、および２）実行特権（privilege）レベルに依存している。
【０００５】
ページ化された仮想メモリは、オペレーティングシステム（ＯＳ）が各アプリケーションに対して分離した仮想アドレス空間を定義して、アドレス変換テーブルのセットを介して物理メモリの個別ページをそれらの仮想アドレス空間のそれぞれに選択的にマッピングすることを可能にしている。これにより、各アプリケーションに対して、他のアプリケーションからはアクセス不可能な、そのコードおよびデータのための物理メモリの私的なセクションを提供する。さらに、この仮想メモリ機構により、ＯＳが物理メモリのページを複数の仮想アドレス空間に選択的にマッピングすること、そして仮想空間内のそのようなページを読み出し専用（リードオンリー）に選択的に指定することを可能になる。この共有マッピング機能はＯＳカーネルそれ自身のコピーが各アプリケーションアドレス空間に常駐することを可能にし、同様に周辺装置のアクセスポートおよび関連するデバイスドライバルーチンの共有マッピングを可能にする。それによって、ロスの多いアドレス空間の切り替えを必要とせずに、アプリケーションにＯＳのサービスへの効率的なアクセスを提供する。しかしながら、アドレス空間のＯＳ部分はＯＳのコードによる変更が可能でなければならないシステムデータ領域を含んでいなければならず、さらにそれはアプリケーションのコードから保護されていなければならない。読み出し専用指定はそのような領域に対して適切な保護を提供することはできない。
【０００６】
さらに、ｘ８６アーキテクチャは４つの特権レベル、０から３を定義し、それらはＯＳによってコード領域に割り当てられ、コードセグメントディスクリプタ内に保存される。一般的に、現在実行しているコードやプロシージャの特権レベルは現行特権レベル（ＣＰＬ）として記憶される。従って、この特権レベルは通常ＣＰＬ０からＣＰＬ３と呼ばれる。この特権レベルを用いることにより、ある種のシステム資源は適切なレベルで実行されているコードからのみアクセス可能となる。このページ化された仮想メモリアーキテクチャは、仮想メモリのページへのアクセスを特権レベルによって制限できるようにする。４つの特権レベルが定義されているものの、主流となっているオペレーティングシステムにおいては、通常ＣＰＬ０とＣＰＬ３レベルのみが使用されている。その理由は、このページ化された仮想メモリアーキテクチャはＣＰＬ１またはＣＰＬ２をＣＰＬ０と区別しないからである。ＣＰＬ０は一般的にカーネルモードと呼ばれ、最も高い特権レベルである。一方、ＣＰＬ３は一般的にユーザモードと呼ばれ、最も低い特権レベルである。ＯＳのコードおよびデータには通常ＣＰＬ０が割り当てられ、アプリケーションコードおよびデータにはＣＰＬ３が割り当てられる。ＣＰＬ０実行特権は読み出し専用保護をオーバーライド（優先）しない。これら２つの属性は互いに独立している。コードセグメントディスクリプタを用いて、これらの特権を割り当てている。
【０００７】
このメモリ保護に加えて、仮想メモリ動作を制御するものを含む、すべてのプロセッサコントロールレジスタはアーキテクチャ上の定義ではＣＰＬ０においてのみアクセス可能である。さらに、一般に、あるセグメントから他のセグメントへ実行を切り替えるためには特別の制御転送命令が必要とされ、それによって特権レベルも切り替えられる。これらの命令はＯＳが、そのような制御転送の相手（ターゲット）をＯＳによって制御されるコード中の特別のエントリポイントに限定することを可能にし、そのためアプリケーションは、同時にＯＳに制御を渡すことなしに特権レベルを変更することはできない。
【０００８】
相互のアドレス空間の分離、およしＯＳメモリのアプリケーションからの分離は、仮想メモリアドレス変換（トランスレーション）テーブルの内容によって完全に制御可能である。この変換テーブルはあるアプリケーションメモリを他のものから分離する仮想対物理ページマッピングを定義し、さらに共有ライブラリおよびＯＳを保護する読み出し専用および特権レベル属性を定義する。このテーブルそれ自身はメモリ常駐のデータ構造であって、それらを共有ＯＳメモリ領域にマッピングし、それらに対するアクセスをカーネルモードコードに制限する変換エントリを含む。
【０００９】
上記既存の保護機構はアプリケーションおよびオペレーティングシステムに適切な保護を提供しているように見える。うまく動作しているシステム（例えば、これらの機構の応用をオペレーティングシステムによって修正する、そしてこれらの機構を制御するＯＳコードの動作を修正する、さらにカーネルモードで動作する他のすべてのコードがこれと干渉しない）においてはそのとおりである。しかしながら、典型的なｘ８６ベースのシステムにおいては、ＯＳベンダーからのみならず、多くの独立したソースから提供された非常に多くのカーネルモードコードが存在し、それが偶発的なものにしろ、そうでないにしろ、そのような干渉が発生しないことを保証できる者は誰もいない。
【００１０】
ユーザが実行している操作タイプおよび実行されているソフトウェアアプリケーションのタイプに応じて、コンピュータシステム内に記憶されている情報または実行されている情報は外部からのアクセスに対して脆弱になりうる。従って、セキュリティ問題を改善し、ｘ８６アーキテクチャシステムのそのようなアクセスに対する脆弱性をできる限り小さくすることが望ましい。
【発明の開示】
【発明の概要】
【００１１】
セキュア実行モードを実行可能なプロセッサおよびセキュア通信リンクを介して接続されるセキュリティサービスプロセッサを含むコンピュータシステムの様々な実施形態を開示する。一実施形態では、当該コンピュータシステムは、セキュリティ初期化命令（security initialization instruction）を実行することによってセキュア実行モードを初期化するように構成可能なプロセッサを含む。さらに、このプロセッサはセキュア・オペレーティングシステム・コードセグメントを実行することによってセキュア実行モードで動作可能である。さらに、このコンピュータシステムはＩ／Ｏリンクを介してプロセッサに結合された入力／出力（Ｉ／Ｏ）インターフェイスを含む。このＩ／Ｏインターフェイスは、セキュリティ初期化命令実行の結果実行されるトランザクションを受信するように構成することができる。このトランザクションはセキュアオペレーティングシステム・コードセグメントの少なくとも一部を含む。さらにこのＩ／Ｏインターフェイスはプロセッサがトランザクションのソースかどうかを判定することができる。このコンピュータシステムは、ペリフェラルバスを介してＩ／Ｏインターフェイスに結合されたセキュリティサービスプロセッサをさらに含む。このＩ／Ｏインターフェイスは、プロセッサがトランザクションのソースであるかどうかの判定に応じて、そのトランザクションをセキュリティサービスプロセッサに伝達するように構成することができる。
【００１２】
特定の一実施態様において、このＩ／Ｏインターフェイスはそのプロセッサがトランザクションの唯一のソースではないと判定されると、そのトランザクションのセキュリティサービスプロセッサへの伝達を阻止（ブロック）するように構成される。
【００１３】
他の特定の実施態様において、セキュリティ初期化命令実行の結果として実行されるトランザクションは、スタート（Start）トランザクション、対応するデータ（Data）トランザクションおよび対応するエンド（End）トランザクションである。
【００１４】
さらに他の特定の実施態様においては、スタートトランザクション、データトランザクションおよびエンドトランザクションは、HyperTransport（商標）規格に従ってフォーマットされたパケットである。
【００１５】
本発明は様々な変形および代替の形態をとりうるが、その特定の実施形態を例示のために図面に示し、本明細書において詳細に説明する。しかしながら、特定の実施形態についての本明細書中の説明は、開示された特定の形態に本発明を限定しようとするものではなく、むしろ反対に、添付の特許請求の範囲に規定される本発明の精神および範囲の範疇に入る、すべての変形物、均等物および代替物を含むことを意図している、ことを理解してもらいたい。
【発明を実施するための最良の形態】
【００１６】
＜セキュアコンピューティングプラットフォームの概要＞
高信頼（Trusted）コンピューティングは、コンピュータシステム（例えば、パーソナルコンピュータ（ＰＣ））ユーザに対して、彼らのプライバシーに対する攻撃から保護されながら、電子マネーや映画をダウンロードできるといった新しい活動への参加を可能にしている。高信頼コンピューティング環境の一部となるためにはＰＣそれ自体がユーザおよび銀行、コンテンツ提供者といった外部組織の両方から信頼されなければならない。高信頼ＰＣを作るのに必要な主要要素には、信頼性の高い実行環境（trusted processing environment）、プラットフォーム依存の秘密化、暗号化処理、セキュアな記憶装置およびセキュリティカーネル（ＳＫ）と呼ばれるセキュア・オペレーティングシステム・コードセグメントが含まれる。これらの要素を具体化する構成ブロックについて以下で詳述する。
【００１７】
ｘ８６命令を実行するように構成されたプロセッサは一般的に、ページ化された仮想メモリおよび特権実行モードを提供する保護モードなどのアーキテクチャ上の機能と、それらの機能を制御する制御レジスタセットを含んでいる。これらの制御レジスタおよびページテーブルへのアクセスを制御することによって、コンピュータシステム内のプログラムコードおよびデータに対する許可されていないアクセスに対する保護を追加することができる。従って、そのようなプロセッサに対するアーキテクチャ拡張セットを追加し、それに対応するサポートソフトウェアを提供することによって、この保護を提供可能である。プロセッサに対する全体的なセキュリティ強化は、セキュア実行モード（ＳＥＭ，Secure Execution Mode）と呼ばれる。セキュア実行モード（ＳＥＭ）はプロセッサに新たに加えられた実行モードであり、外部からの不正操作を受けることなく、セキュリティカーネルが動作する高信頼実行環境を生成するものである。
【００１８】
従って、ＳＥＭで動作可能なプロセッサは、ＳＥＭによって使用可能にされ、例えば動作時の高信頼実行（ＴＸ）モードなどのＳＥＭ動作モードをサポートする。以下でさらに説明するように、この高信頼実行モードは、実行されているソフトウェアの種類およびその特権レベルに応じて、ノーマルユーザモードおよびノーマルカーネルモードに加えて、セキュアユーザモードおよびセキュアカーネルモードで動作するＳＥＭ実行可能なプロセッサを有する。ハードウェアによるメモリアクセス（例えば、ダイレクトメモリアクセス、ＤＭＡ）とともに、この環境内で実行されるソフトウェアからのみアクセス可能な保護メモリ領域を作るための機構も提供される。
【００１９】
この新しい高信頼実行環境（ＴＸ）は、ユーザ環境とカーネル環境とを分離するために使用される従来のノーマル／保護モード（Ｒｉｎｇ０／Ｒｉｎｇ３）機構にいくらか似ている。図１の説明に関連して以下でさらに詳細に説明するように、高信頼／非高信頼モードと、ユーザ／カーネルモードとの組み合わせは四象限モデルを生成する。従って、ＳＥＭ実行可能なＣＰＵは、上記ＴＸモードを生成し、実行するハードウェア機構を含む。
【００２０】
図１は、セキュア実行モードを実行可能なプロセッサの一実施形態の動作ドメインおよびそれらのドメインで動作するコードの振る舞いを示す。上述のとおり、現行のｘ８６ベースのオペレーティングシステムは一般的に利用可能な４つの特権レベルのうちの２つ（例えば、ＣＰＬ０およびＣＰＬ３）を用いて２つのモード、ノーマルカーネルモードおよびノーマルユーザモードをノーマル実行モードまたは保護ドメイン内に実装する。ＳＥＭを使用可能にしたとき、ＳＥＭ拡張は高信頼実行（ＴＸ）モードと呼ばれる新しい実行モードを定義する。既存のノーマル実行モード保護ドメインと組み合わされたとき、ＴＸモードは４つの個別のモードまたは以下に説明するソフトウェア実行ドメインを生成する。例示の実施形態では、これら４つのドメインはノーマルユーザ（ＮＵ）ドメイン１０１０、ノーマルカーネル（ＮＫ）ドメイン１０２０、セキュアユーザ（ＳＵ）ドメイン１０３０およびセキュアカーネル（ＳＫ）ドメイン１０４０からなる。
【００２１】
上記ＮＵ１０１０ドメインは、ノーマルユーザモード（つまり、ＣＰＬ＝３）で動作し、高信頼実行（ＴＸ）モードに入っていないプロセッサによって特徴付けられる。ＮＵ１０１０ドメインにおいては、一般的な仮想メモリ設定により、修正されていないアプリケーションの通常動作を許可する。ＳＥＭにおいては、しかしながら、そのようなアプリケーションは、ＳＵドメイン１０３０に常駐するアプリケーションのメモリ、またはＳＫドメイン１０４０内のセキュリティカーネル１０２１を含むメモリにアクセスすることができない。さらに、そのようなアプリケーションは、例えばＵ／ＳおよびＲ／Ｗページ属性（図示せず）などの既存の保護ロジック機構によって、ＯＳカーネル１０２３のメモリまたはノーマルカーネルドメイン１０２０内のデバイスドライバへのアクセスが禁止される。
【００２２】
ＮＫドメイン１０２０では、ＳＥＭによって、修正されていないＯＳカーネル１０２３のコンポーネントおよびカーネルモードデバイスドライバの通常の動作が許可される。このドメインで実行されているコードはＮＵドメイン１０１０内のオブジェクトにアクセスすることができるが、ＳＥＭにおいてはＳＵドメイン１０３０またはＳＫドメイン１０４０内のオブジェクトへのアクセスは禁止される。さらに、ＮＫドメイン１０２０は、プロセッサがＴＸモードではなく、ノーマルカーネルモード（つまり、ＣＰＬ＝０）で動作するという特徴がある。ＮＫドメイン１０２０においてページングが使用可能になっているとき、しばしばプロセッサはネイティブカーネルモードにおいて動作していると言われる。
【００２３】
ＳＵドメイン１０４０では、ＳＥＭは、ハイセキュリティアプリケーション（ＨＳＡ）１のような新しいタイプのアプリケーションソフトウェアに対して、例えばその実行を許可する。ＨＳＡソフトウェアは、既存のｘ８６ページ保護およびページマッピング機構によってその他すべてのドメイン中のオブジェクトへのアクセスを禁止されうる。さらに、ＨＳＡは、オペレーティングシステムカーネル１０２３およびデバイスドライバ（図２には図示せず）を含む、ＮＵドメイン１０１０およびＮＫドメイン１０２０において実行される任意のコードからの許可されないアクセスから保護される。以下でさらに詳しく説明するように、セキュリティカーネル１０２１はＨＳＡの仮想アドレス空間を設定し、維持する責任を持つ。さらに、ＳＵドメイン１０４０はユーザーモード（つまり、ＣＰＬ＝３）のみならずＴＸモード（セキュアユーザーモードとも呼ばれる）で動作するプロセッサに特徴がある。
【００２４】
ＳＫドメイン１０４０では、ＳＥＭはセキュリティカーネル１０２１に対してすべてのプラットホームのリソースに対する完全なアクセスを許可することができ、さらにセキュリティカーネル１０２１に対してそれらのリソースの独占的な制御を与えることもできる。ＳＫドメイン１０４０はカーネルモード（つまり、ＣＰＬ＝０）およびＴＸモード（セキュアカーネルモードとも呼ばれる）で動作するプロセッサに特徴がある。
【００２５】
一般的に、セキュリティカーネル１０２１は高信頼実行（ＴＸ）モードで動作するソフトウェアである。一実施形態では、セキュリティカーネル１０２１はＳＫドメイン１０４０で動作する唯一のソフトウェアである。ＳＫドメイン１０４０では、セキュリティカーネル１０２１がすべての仮想対物理メモリマッピングを制御することができ、外部装置が物理メモリのどの領域にアクセスできるようにするかを制御することができる。しかしながら、セキュリティカーネル１０２１は、ノーマルモード仮想メモリマッピング、ＨＳＡメモリ初期マッピング、ＨＳＡコードおよびデータセクションのロードを含む、ＯＳカーネルのプロセス生成機能に依存している。しかしながら、セキュリティカーネル１０２１はそのようなマッピングのすべてを監視して、高信頼でない仮想空間に高信頼のメモリが許可なくマッピングされることがないことを保証することができる。従って、セキュリティカーネル１０２１は、高信頼ではないすべてのメモリ領域を非高信頼として取り扱うことができる。さらに、セキュリティカーネル１０２１は、セキュリティカーネル１０２１によって制御されていない動作中のすべてのプログラムコードを非高信頼として取り扱ってもよい。一実施形態において、セキュリティカーネル１０２１はスタンドアローンのコードセグメントとすることができ、既存のＯＳに対するパッチであってもよいことに注意してもらいたい。他の実施形態では、セキュリティカーネル１０２１は与えられたＯＳの一部のなかのモジュールまたはコードセグメントとすることができる。
【００２６】
ＳＥＭの主な機能には、ＳＥＭで動作するプロセッサを初期化し、ＳＫの信憑性を検証し、外部アタックから高信頼環境を保護することにより、高信頼環境にシステムを維持することが含まれる。ＣＰＵ、マイクロプロセッサおよびプロセッサという用語は相互に交換可能に使用できることを注意すべきである。
【００２７】
＜セキュア実行モード初期化＞
高信頼ＰＣを作成する中枢は独特の、プラットホーム依存の秘密事項である。実際には、この秘密事項は、公開／秘密暗号鍵ペアの秘密鍵であってもよい。この秘密事項はＰＣが高信頼環境内で動作しているときにのみ使用されなければならず、誰に対しても、つまりどのコードにも開示してはならない。この秘密事項を用いた暗号化動作の結果は開示することができるが、秘密事項それ自体は開示することはできない。これを機能させるために、それを使用する秘密事項および暗号処理装置は入力および出力が制限された密閉箱に配置しなければならない。実用では、密閉箱とはプロセッサ機能と不揮発性の記憶装置とを組み合わせた単一の集積回路（ＩＣ）パッケージを意味する。この装置はセキュリティサービスプロセッサ（ＳＳＰ）と呼ばれる。一実施形態では、少なくとも１つのＳＳＰが必要とされ、プラットホーム初期化プロセスには確実に１つのＳＳＰが寄与する。
【００２８】
アーキテクチャ上は、ＳＳＰはプラットホームのどこに配置してもよい。唯一の条件は、スプーフィング不可能（non-spoofable）な高信頼通信路が、ＳＥＭ実行可能プロセッサとＳＳＰとの間に存在しなければならないことである。ここで、ＳＥＭ実行可能プロセッサとＳＳＰとの間のスプーフィング不可能（non-spoofable）な通信路とは、ＳＳＰが高信頼環境外で実行されるソフトウェアから、またはＤＭＡハードウェアから命令を受信することがない高信頼通信路をいう。このことは特に高信頼環境が初期化されるときに特に複雑になりうる。ここで、ＳＳＰがＳＫの有効性を検証しなければならず、有効化されたＳＫがその時ＳＥＭ実行可能なプロセッサ上で実際に動作するコードであることを保証しなければならない。この有効化処理は、ＳＫイメージの暗号化されたハッシュ（hash）の形態をとる。このハッシュは、通常のソフトウェアの実行からは生じることがない形態でＳＳＰに伝達しなければならない。さらに、このＳＥＭ実行可能なプロセッサはクリーンな初期状態（そしてＳＳＰがこれを知っていなければならない）からＳＫの実行を開始しなければならない。これらの要件は通常のソフトウェアには利用不可能なＣＰＵマイクロコードおよびハードウェア機構を使用することによって達成される。特に、セキュリティカーネル初期化（ＳＫＩＮＩＴ：Security Kernel Initialization）命令と呼ばれる新しいセキュリティ初期化命令が、ＳＥＭ実行可能なプロセッサの初期化、ＭＰシステム内の他のプロセッサが停止していることの検証、予約済みのシステムアドレスを用いてＳＳＰとの通信、ＳＫコードへのジャンプ、のために使用される。一実施形態では、このＳＫＩＮＩＴ命令は個別に実行される複数のコンポーネント（部品）を持つ単一の命令であることに注意されたい。さらにある実施形態では、この初期化プロセスは２つのステップ、ＳＳＰによるサイズの小さいセキュア・ローダー（ＳＬ）の有効化ステップ、それに続くより大きなサイズのＳＫの有効化ステップを含む、ことに注意してもらいたい。
【００２９】
＜高信頼性コンピューティングプラットホームを採用したコンピュータシステム＞
図２は、高信頼性コンピューティングプラットホームを採用したコンピュータシステムの一実施形態のブロック図である。コンピュータシステム１０は、ＳＥＭプロセッサ１００ＡおよびＳＥＭプロセッサ１００Ｂと呼ばれるＳＥＭを実行可能な２つのプロセッサを含む。ＳＥＭプロセッサ１００Ａはプロセッサバス１０５を介してＳＥＭプロセッサ１００Ｂに結合される。さらにコンピュータシステム１０は、ＳＥＭプロセッサ１００ＡおよびＳＥＭプロセッサ１００Ｂに結合されたシステムメモリ１１０Ｂに結合されるシステムメモリ１１０Ａを含む。ＳＥＭプロセッサ１００Ａはシステムバス１２５を介してＩ／Ｏインターフェイス１２０に結合される。Ｉ／Ｏインターフェイス１２０はペリフェラルバス１４５を介して記憶装置１４０および周辺装置１５０に結合される。さらにＩ／Ｏインターフェイス１２０はペリフェラルバス１３５を介してＳＳＰ１３０に結合される。別の実施形態では、ペリフェラルバス１３５の代わりに、点線で示すようにＳＳＰ１３０をペリフェラルバス１４５に結合してもよい。ここで２つのＳＥＭプロセッサを示しているものの、他の実施形態では異なる数のＳＥＭプロセッサを用いてもよいことに注意すべきである。さらに、同一の参照番号と一つの参照符号で示す要素は、単にその参照符号だけで参照することもあることに注意してもらいたい。例えば、ＳＥＭプロセッサ１００Ａを、場合によっては、単にＳＥＭプロセッサ１００と呼ぶこともある。
【００３０】
例示の実施形態では、ＳＥＭプロセッサ１００ＡおよびＳＥＭプロセッサ１００Ｂはそれぞれシステムメモリ１１０Ａおよび１１０Ｂに接続するための統合メモリコントローラ（図示せず）を有する。別の実施形態においては、Ｉ／Ｏインターフェイス１２０は一以上のメモリコントローラおよび一つのホストブリッジを含んでもよい。そのような実施形態では、システムメモリ１１０はＩ／Ｏインターフェイス１２０に接続される。
【００３１】
ＳＥＭプロセッサ１００はｘ８６アーキテクチャを採用したプロセッサの一例である。例えば、一実施形態として、ＳＥＭプロセッサ１００はアドバンスド・マイクロ・ディバイシズ社から提供されるAthlon（商標）プロセッサであってもよい。それとして、ＳＥＭプロセッサ１００は、システムメモリ１１０または記憶装置１４０に記憶されるｘ８６命令を実行するように構成される。この例としての実施形態では、ＳＥＭプロセッサ１００はセキュリティハードウェア（図示せず）を含み、ＳＥＭによって使用可能にされたときに、それは例えば図１の説明との関連において説明した高信頼実行（ＴＸ）モードのようなＳＥＭ動作モードに対するサポートを提供する。
【００３２】
システムメモリ１１０はＳＥＭプロセッサ１００によって頻繁に使用されるプログラム命令およびデータを記憶するように構成される。典型的なシステム構成では、記憶装置１４０はそのようなプログラム命令やデータをより永続的に記憶するために用いることができ、ＳＥＭプロセッサ１００がデータおよびプログラムコードを必要とするときに、システムメモリ１１０へと転送される。ＳＥＭ動作モードに対する追加のサポートがセキュリティカーネルによって提供される。それは、ＳＥＭプロセッサ１００の動作時に、システムメモリ１１０の外部でＯＳと連携して実行することができる。さらに、システムメモリ１１０は高信頼部分と非高信頼部分とに区切ることができる。このセキュリティカーネルはシステムメモリ１１０の高信頼部分に常駐する。上述のとおり、システムメモリ１１０には通常ページ化された仮想メモリを使用してアクセスする。そのような構成では、システムメモリ１１０には、個別のページ単位で、またはひとかたまりのメモリ単位でアクセス可能である。このページ化機能は、一般的にＯＳのメモリ管理機能によって処理される。
【００３３】
一実施形態では、システムメモリ１１０はダイナミック・ランダムアクセス・メモリ（ＤＲＡＭ）技術、または利用可能な様々なＤＲＡＭ技術の一つ、例えばシンクロナスＤＲＡＭ（ＳＤＲＡＭ）に実装される複数のメモリチップを用いて実現可能である。通常、ＤＲＡＭチップはエッジ部にコネクタを持つ小型の回路基板に取り付けられ、この基板がマザーボード上のソケットコネクタに差し込まれる。この基板の仕様によって、それらはシングルまたはデュアルインライン・メモリモジュール（それぞれＳＩＭＭ，ＤＩＭＭ）と呼ばれる。システムメモリ１１０はメモリ拡張を可能にするメモリモジュールを複数バンク含みうる。
【００３４】
上述のように、記憶装置１４０はプログラムコードおよびデータを記憶することができる。一実施形態では、記憶装置１４０はハードディスクドライブまたは複数のハードディスクからなるバンクであるが、例えばＣＤ−ＲＯＭドライブ、フロッピーディスクドライブまたはテープドライブなどのその他の大量記憶装置を有する他の実施形態も考え得る。
【００３５】
周辺装置１５０は、例えばモデム、ビデオキャプチャー装置またはその他の汎用入出力装置などのどのような周辺装置であってもよい。別の実施形態では、周辺装置の数は異なっていてもよいことに注意すべきである。
【００３６】
Ｉ／Ｏインターフェイス１２０は、通常のシステム動作において、異なるペリフェラルバスおよびＳＥＭプロセッサ１００Ａ、１００Ｂの間のトランザクションに対して、バス制御および変換機能を提供するように構成可能である。一実施形態では、Ｉ／Ｏインターフェイス１２０は、ノースブリッジ（Northbridge）に関連する機能を実行することができるバスブリッジ１２１を有する。例えば、ペリフェラルバス１４５はＰＣＩ（Peripheral Component Interconnect）バスとすることができ、ペリフェラルバス１３５はＬＰＣ（Low Pin Count）バスとすることができる。さらに、バスブリッジ１２１は、セキュア初期化の際にＳＥＭプロセッサ１００とＳＳＰ１３０との間でスプーフィング不可能な通信を可能にするセキュリティ機構（図２には図示せず）を提供するように構成することができる。例えば、バスブリッジ１２１は、ＳＳＰがそれに接続されているかどうか、およびどのバスに接続されているかを判定するように構成可能である。以下でさらに説明するが、バスのタイプに応じて、バスブリッジ１２１は様々なセキュリティ関連の機能、システムバス１２５においてＳＥＭプロセッサ１００Ａから受信したセキュリティ初期化命令をペリフェラルバス１３５上での伝達に適したフォーマットへの変換などを実行するように構成可能である。例えば、バスブリッジ１２１はＳＫＩＮＩＴ関連のメッセージを識別して、それらのメッセージをペリフェラルバス１３５の特定フォーマットでＳＳＰ１３０に伝送するように構成可能である。さらに、バスブリッジ１２１は例えばアドレスフィルタリングなどの機構によってＳＳＰ１３０へのピア・トゥー・ピア（peer-to-peer）のトラフィックを遮断（ブロック）するように構成可能である。バスブリッジ１２１はさらに、ＳＫＩＮＩＴ動作の際に、ＳＳＰ１３０のメモリマップドＩ／Ｏにアクセスウィンドウを適用するように構成することもできる。
【００３７】
一般的にセキュリティカーネル初期化命令（ＳＫＩＮＩＴ）は、例えばＳＥＭプロセッサ１００ＡおよびＳＥＭプロセッサ１００ＢなどのＳＥＭ実行可能プロセッサ上で実行される。上述のとおり、ＳＫＩＮＩＴ命令は個別に実行される複数のコンポーネントを有する単一の命令である。さらに、一実施形態では、ＳＫＩＮＩＴ命令は例えばＥＡＸレジスタの内容のような単一入力オペランドを持ってもよい。一実施形態では、ＳＫＩＮＩＴ命令は初期化、データ転送、そしてジャンプの３つの実行フェーズを含む。
【００３８】
この初期化フェーズの際、ＳＥＭプロセッサ１００Ａの状態はリセットされ、すべてのマイクロコードパッチがクリアされる。さらに、システムメモリ１１０ＡにＳＬイメージがロードされて、ＤＭＡアクセスの発生を禁止し、ＳＬイメージが常駐する物理メモリの６４Ｋバイト連続空間に対するアクセスがブロックされる前に、ＳＬイメージを保護する。この６４Ｋバイトの領域はセキュアローダブロック（ＳＬＢ）と呼ばれる。この６４Ｋバイト空間のベースアドレスはＳＫＩＮＩＴ命令（例えば、ＥＡＸを用いたＳＫＩＮＩＴへの入力）の１パラメータである。あるHush_Startトランザクションはこのベースアドレスをそのアドレスフィールドの一部として持つ。このようにして、Hush_Startトランザクションを受信するすべてのメモリコントローラはどのメモリ領域を保護するのかを報知される。
【００３９】
データ転送フェーズの際、マイクロコードは、Hash_Start，Hash_DataおよびHash_End命令を実行可能である。一実施形態では、Hash_Startトランザクションは、すべての介在リンクおよびＳＥＭプロセッサ１００ＡとＳＳＰ１３０の間のバス上で送信されるブロードキャストトランザクションである。この例示の実施形態では、Hash_Startは、プロセッサバス１０５、システムバス１２５およびペリフェラルバス１３５上に送信されうる。マルチプロセッサ環境では、ＳＥＭプロセッサ１００ＡはＳＥＭプロセッサ１００Ｂからの応答を待つ。ＳＥＭプロセッサ１００Ｂはそのメッセージに対して、「ＡＰＩＣ初期（init）モードアクティブ」または「ＡＰＩＣ初期（init）モード非アクティブ」のいずれかを示すステータスビットとともに応答する。ＳＥＭプロセッサ１００Ｂが「ＡＰＩＣ初期（init）モードアクティブ」との応答をしなかった場合、ＳＥＭプロセッサ１００ＡはHash_Startを終了し、次にHash_Endを実行して、Hash_Data命令を省略する。ＳＥＭプロセッサ１００Ｂが「ＡＰＩＣ初期（init）モードアクティブ」との応答をしたと仮定すると、このHash_Start命令はＳＳＰ１３０に転送され、後からHash_Data命令が続く。ＳＥＭプロセッサ１００Ａおよび１００Ｂのそれぞれに関連するホストブリッジ／メモリコントローラ（図示せず）はメモリ、Ｉ／ＯおよびＤＭＡ排除保護（exclusion protection）を有効にする。
【００４０】
Hash_StartトランザクションがＳＳＰ１３０に送信されると、マイクロコードはHash_Dataトランザクションを実行する。このHash_Dataトランザクションはシステムメモリ１１０ＡからＳＬコードイメージをフェッチし、システムバス１２５を介してそれをＩ／Ｏインターフェイス１２０に送信する。
【００４１】
Hash_Dataトランザクションおよびその対応データがＳＳＰ１３０に送られると、マイクロコードはHash_Endトランザクションを実行する。Hash_Endトランザクションは、すべての介在リンクおよびＳＥＭプロセッサ１００ＡとＳＳＰ１３０の間のバス上でブロードキャストトランザクションとして送信することができる。
【００４２】
Ｉ／Ｏインターフェイス１２０は、Hash_StartメッセージとHash_Endメッセージとで囲まれたＳＬイメージを受信する。このStart/Endウィンドウの外側で受信されたトランザクションは無視される。このデータはＳＳＰ１３０に送信される。バスブリッジ１２１は、Hash_StartメッセージとHash_Endメッセージとの間のＳＫＩＮＩＴトランザクションに関連するＳＳＰ１３０のアドレス範囲に対する他のすべてのトランザクションを禁止するように構成可能である。ジャンプフェーズの際、ＳＫＩＮＩＴ命令はＳＬへのジャンプ（Jump）で終了する。
【００４３】
一実施形態では、ＳＳＰ１３０がHash_DataトランザクションおよびHash_Endトランザクションのデータペイロード（つまり、ＳＬイメージ）を受信したとき、それはそのイメージの暗号ハッシュを実行し、その結果を内部記憶値と比較する。合致すれば、ＳＳＰ１３０は、ＳＬイメージが有効であるとの内部表示を記憶してそのＳＬイメージを有効にする。この状態において、ＳＳＰ１３０は「武装された（armed）」と呼ばれ、例えばより大きなセキュリティカーネルのハッシュを有効化するなどの後続の動作に参加する準備が完了する。
【００４４】
ＳＳＰ１３０がペリフェラルバス１４５に結合される実施形態では、バスブリッジ１２１は、ペリフェラルバス１４５に関する変換およびセキュリティ関連の機能を実行するように構成することができる。
【００４５】
図３は、高信頼コンピューティングプラットホームを採用したコンピュータシステムの他の実施形態のブロック図である。簡略化および明確化のために、図２に示した要素に対応する要素には同じ参照符号を付する。コンピュータシステム２０は、ＳＥＭプロセッサ１００ＡおよびＳＥＭプロセッサ１００Ｂと呼ばれるＳＥＭを実行可能な２つのプロセッサを含む。ＳＥＭプロセッサ１００Ａは同期（coherent）リンク２０５を介してＳＥＭプロセッサ１００Ｂに結合される。この同期リンク２０５は高速ポイント間（point-to-point）リンクを形成することができる。さらにコンピュータシステム２０は、ＳＥＭプロセッサ１００ＡおよびＳＥＭプロセッサ１００Ｂに結合されたシステムメモリ１１０Ｂに結合されるシステムメモリ１１０Ａを含む。ＳＥＭプロセッサ１００Ａは非同期（non-coherent）のＩ／Ｏリンク２２５を介してＩ／Ｏインターフェイス２２０に結合される。この非同期リンク２２５も高速ポイント間（point-to-point）リンクを形成することができる。Ｉ／Ｏインターフェイス２２０はペリフェラルバス１４５を介して記憶装置１４０および周辺装置１５０に結合される。さらにＩ／Ｏインターフェイス２２０はペリフェラルバス１３５を介してＳＳＰ１３０に結合される。別の実施形態では、ペリフェラルバス１３５の代わりに、点線で示すようにＳＳＰ１３０をペリフェラルバス１４５に結合してもよい。ここで２つのＳＥＭプロセッサを示しているものの、他の実施形態では異なる数のＳＥＭプロセッサを用いてもよいことに注意すべきである。
【００４６】
例示の実施形態では、ＳＥＭプロセッサ１００ＡおよびＳＥＭプロセッサ１００Ｂはそれぞれシステムメモリ１１０Ａおよび１１０Ｂに接続するための統合メモリコントローラ（図示せず）を有する。さらに、ＳＥＭプロセッサ１００Ａは、非同期リンク２２５に接続し、同期リンク２０５においてＳＥＭプロセッサ１００ＡとＳＥＭプロセッサ１００Ｂとの間でメッセージを伝達するための組込みホストブリッジロジック（図示せず）を含む。ホストブリッジがスタンドアローンである（つまり、ノースブリッジ）、または組み合わせであるような他の実施形態も考え得ることに注意すべきである。
【００４７】
例示の実施形態では、同期リンク２０５および非同期Ｉ／Ｏリンク２２５のそれぞれは、単一方向の信号線セットとして実装されている。所与のセットの各信号線はトランザクションを異なった方向に伝達する。同期リンク２０５は、ＳＥＭプロセッサ１００Ａと１００Ｂとの間の通信においてキャッシュ同期形式で動作可能である。さらに、非同期Ｉ／Ｏリンク２２５は、Ｉ／Ｏインターフェイス２２０とＳＥＭプロセッサ１００Ａのホストブリッジのようなホストブリッジとの間の通信において非同期形式で動作可能である。同期リンクを介した２以上の装置の相互接続は「コヒーレント・ファブリック」と呼ばれる。同様に、非同期リンクを介した２以上の装置の相互接続は「ノンコヒーレント・ファブリック」と呼ばれる。一実施形態では、非同期Ｉ／Ｏリンク２２５はHyperTransport（商標）技術と互換性を持つ、ことに注意してもらいたい。
【００４８】
一般に、パケットとは２つのノードまたは装置（パケットを送信する発信ノードおよびそのパケットを受信する宛先ノード）間の通信である。発信ノードと宛先ノードは、パケットがその一部を構成するトランザクションのソース（発信元）および目的ノードとは、どちらのノードもソースノードまたは目的ノードとなりうる点において異なる。制御パケットはトランザクションに関する制御情報を運ぶパケットである。ある種の制御パケットはデータパケットが続いていることを特定する。データパケットはトランザクションに対応し、特定した制御パケットに対応するデータを運ぶ。一実施形態では、制御パケットは命令パケット、情報パケットおよび応答パケットを含むことができる。その他のタイプのパケットを含む他の実施形態も考え得ることに注意してもらいたい。
【００４９】
パケットが非同期リンク上または同期リンク上の同期ノード間でアップストリームまたはダウンストリーム方向に伝達されるとき、パケットは１以上のノードを通過する。ここで、「アップストリーム」はＩ／Ｏインターフェイス２２０からＳＥＭプロセッサ１１０Ａのホストブリッジへ向かう方向のパケットトラフィックの流れを指し、「ダウンストリーム」はＳＥＭプロセッサ１１０ＡのホストブリッジからＩ／Ｏインターフェイス２２０へ向かう方向のパケットトラフィックの流れを指す。
【００５０】
図２の説明と同様に、図２のＳＥＭプロセッサ１００はｘ８６アーキテクチャを採用したプロセッサの一例である。そのために、ＳＥＭプロセッサ１００は、システムメモリ１１０または記憶装置１４０に記憶されるｘ８６命令を実行するように構成されている。例示の実施形態では、ＳＥＭプロセッサ１００はセキュリティハードウェア（図示せず）を含み、ＳＥＭによって使用可能にされたときに、それは例えば上述の高信頼実行（ＴＸ）動作モードのようなＳＥＭ動作モードに対するサポートを提供する。
【００５１】
以下でさらに詳細に説明するように、HyperTransport（商標）技術を用いたスプーフィング不可能なセキュアな通信路を実現するために、ホストブリッジもセキュリティ関連の機能を実行するように構成される。例えば、ＳＥＭプロセッサ１００Ａのホストブリッジは、Ｉ／Ｏ空間排除を実行し、ＳＫＩＮＩＴ関連のメッセージサポートを行い、そのダウンストリームバス上にＳＳＰ１３０が常駐しているかどうかの情報を持つことができる。Ｉ／Ｏ空間排除（space exclusion）とは、ダウンストリームバスからＩ／Ｏ空間に到着するすべてのトランザクションをブロックすることを指す。例えば、アップストリームトランザクションは、アップストリームバスに向かってブリッジを通過することも、ダウンストリームバスを戻ることも許されない。さらに、HyperTransport（商標）４０ビット設定アドレスウィンドウ（FD_FE00_0000hからFD_FFFF_FFFFh）に対するすべてのアップストリームアクセスはホストブリッジによってブロックされる。一実施形態では、これらのアクセスはTarget Abort（ターゲットアボート）またはMaster Abort（マスタアボート）のどちらかによって阻止される。
【００５２】
図２の説明との関連ですでに説明したとおり、ＳＥＭプロセッサ１００Ａ内のホストブリッジはHash_Start，Hash_DataおよびHash_Endトランザクションを送信するように構成可能である。一実施形態では、Hash_StartおよびHash_Endメッセージはブロードキャストパケットであり、一方Hash_Dataトランザクションは非ポスト、サイズ調整されたライト要求パケット（non-posted Sized Write request packet）と、それに続くデータペイロードを含むデータパケットを含んでいる。以下の図６から図８の説明は、例としてのHash_Start，Hash_DataおよびHash_End HyperTransport（商標）パケットについてのものである。これらのトランザクションのための４０ビットのアドレスを以下で特定する。一実施形態では、これらのアドレスに対するトランザクションがＳＫＩＮＩＴ命令の一部としてＳＥＭプロセッサ１００Ａのみから来ていることを保証するのは、ＳＥＭプロセッサ１００ＡのHyperTransport（商標）ホストブリッジの責任である。セキュリティ初期化のためにここで使用される以下のアドレス範囲はHyperTransport（商標）規格では予約済みとされていることに注意する必要がある。
FD_F920_0000h-FD_F923_FFFFh Hash_Start
FD_F924_0000h-FD_F927_FFFFh 予約済み
FD_F928_0000h-FD_F928_0003h Hash_End
FD_F928_0004h-FD_F928_0007h Hash_Data
FD_F928_0008h-FD_F92F_FFFFh 予約済み
【００５３】
システムメモリ１１０は、図２の説明との関連で上述したシステムメモリ１１０と実質的に同じように動作する。例えば、図３のシステムメモリ１１０もＳＥＭプロセッサ１００によって頻繁に使用されるプログラム命令およびデータを記憶するように構成される。ＳＥＭ動作モードに対する追加のサポートがセキュリティカーネルによって提供される。それは、ＳＥＭプロセッサ１００の動作時に、システムメモリ１１０の外部でＯＳと連携して実行することができる。さらに、上述のとおり、システムメモリ１１０は高信頼部分と非高信頼部分とに区切ることができる。セキュリティカーネルはシステムメモリ１１０の高信頼部分に常駐する。上述のとおり、システムメモリ１１０には通常ページ化された仮想メモリを使用してアクセスする。そのような構成では、システムメモリ１１０には、個別のページ単位で、またはひとかたまりのメモリ単位でアクセス可能である。このページ化機能は、一般的にＯＳのメモリ管理機能によって処理される。
【００５４】
上述のように、記憶装置１４０はプログラムコードおよびデータを記憶することができる。一実施形態では、記憶装置１４０はハードディスクドライブまたは複数のハードディスクからなるバンクであるが、例えばＣＤ−ＲＯＭドライブ、フロッピーディスクドライブまたはテープドライブなどのその他の大量記憶装置を有する他の実施形態も考え得る。
【００５５】
周辺装置１５０は、例えばモデム、ビデオキャプチャー装置またはその他の汎用入出力装置などのどのような周辺装置であってもよい。別の実施形態では、周辺装置の数は異なっていてもよいことに注意すべきである。
【００５６】
一実施形態では、Ｉ／Ｏインターフェイス２２０はバスブリッジ２２１を含み、このバスブリッジ２２１は、ＮＣ  Ｉ／Ｏリンク２２５上で伝達される非同期のHyperTransport（商標）トランザクションと、ペリフェラルバス１３５上で伝達されるトランザクションおよびペリフェラルバス１４５上で伝達されるトランザクションの両方とをブリッジするように構成されたハードウェア（図３には図示せず）を含む。一実施形態では、ペリフェラルバス１３５はＬＰＣ（Low Pin Count）バスである。さらに、ペリフェラルバス１４５はＰＣＩ（Peripheral Component Interconnect）バスとすることができる。そのような実施形態では、バスブリッジ２２１は、ＮＣ  Ｉ／Ｏリンク２２５上で伝達される非同期のHyperTransport（商標）トランザクションと、ＬＰＣバス１３５上で伝達されるＬＰＣバストランザクションと、ＰＣＩバス１４５上で伝達されるバストランザクションとの間をブリッジするように構成できる。ＬＰＣバスが非加算（non-enumerable）である実施形態では、シリアルバスはホストと周辺装置との間で制御、アドレスおよびデータ情報を伝達するために４本の信号線を使用可能であることに注意すべきである。通信対象の情報は、スタート、ストップ（サイクルをアボート）、転送タイプ（メモリ、Ｉ／Ｏ、ＤＭＡ）、転送方向（リード／ライト）、アドレス、データ、待ち状態（wait states）、ＤＭＡチャネルおよびバスマスタ許可（grant）である。ＬＰＣバスに関するさらに詳しい情報については、インテル（登録商標）から提供されるLow Pin Count Interface規格書改訂版１．１を参照してもらいたい。また、ＰＣＩバスは一般的にパラレルのマルチプレクスされたアドレスおよびデータバスと特徴付けることができる。さらに、ＰＣＩバスに関するさらに詳しい情報については、ＰＣＩスペシャルイントレストグループから提供されるＰＣＩローカルバス規格書改訂版２．２を参照してもらいたい。
【００５７】
Ｉ／Ｏインターフェイス２２０は、通常のシステム動作の際に、バス制御および異なるペリフェラルバス間のトランザクションの変換を行うように構成される。さらに、バスブリッジ２２１は、セキュア初期化の際に、ＳＥＭプロセッサ１００とＳＳＰ１３０との間でスプーフィング不可能な通信を実行可能にするセキュリティ機構を含む。例えば、バスブリッジ２２１はＳＳＰがそれに接続されているか、またどのバスに接続されているかを判定するように構成可能である。さらに、以下で図４および図５の説明に関連して説明するように、バスブリッジ２２１はセキュリティ初期化トランザクションの変換などのセキュリティに関連する様々な機能を実行するように構成可能である。例えば、バスブリッジ２２１は、ＮＣ  Ｉ／Ｏリンク２２５上で受信したＳＫＩＮＩＴメッセージを識別して、それらのメッセージを、ＳＳＰ１３０の位置に応じて必要ならばＬＰＣバス１３５またはＰＣＩバス１４５での伝達に適したフォーマットでＳＳＰ１３０に対して転送する。さらに、バスブリッジ２２１はＳＳＰ１３０に対するピアトゥーピアのトラフィックをブロックするように構成可能である。さらにバスブリッジ２２１は、ＳＫＩＮＩＴ動作の際に、ＳＳＰ１３０のメモリマッピングされたＩ／Ｏにアクセスウィンドウを適用するように構成可能である。
【００５８】
図４および図５の説明との関連において以下でさらに詳しく説明するように、ホストブリッジ２２１は、ＳＫＩＮＩＴに関連するHyperTransport（商標）メッセージを遮断し、必要ならばそれらのメッセージを、ＳＳＰ１３０の位置に応じて、正しいフォーマットで、ＬＰＣバス１３５またはＰＣＩバス１４５を介してＳＳＰ１３０に伝達するように構成されるロジック（図３には図示せず）を含んでもよい。さらに、バスブリッジ２２１は、HyperTransport（商標）をＳＳＰフロー制御に提示するように構成されたロジック（図示せず）を含んでもよい。例えば、バスブリッジ２２１は、サポートされるHyperTransport（商標）データ速度で到着するHash_Dataトランザクションの連続フローを吸い込むこともできるし、またはアップストリームＮＣ  Ｉ／Ｏリンク２２５でフロー制御を呼び出してもよい。
【００５９】
さらにバスブリッジ２２１はHash_Start, Hash_Endアクセスウィンドウ規則を適用するように構成されるロジック（図３には図示せず）を含んでもよい。特に、アップストリームリンクから受信されるHash_Dataトランザクションを除き、Hash_StartおよびHash_Endの境界間のＳＳＰメモリマッピングされたＩ／Ｏアドレスウィンドウに対してはいかなるアクセスも許可されない。これには、ＳＳＰ１３０の位置に応じて、ＬＰＣバス３３５またはＰＣＩバス１４５上のピアトゥーピアのトラフィックも含まれる。
【００６０】
図４は、図３のバスブリッジの一実施形態のブロック図である。図３に示した要素に対応する要素には明確化と簡略化のために同一の参照符号を付する。ＬＰＣバスブリッジ３２１は、ＮＣ  Ｉ／Ｏリンク２２５および内部バス４２１に結合された内部ブリッジユニット４０１を含む。ＬＰＣバスブリッジ３２１はさらに、内部ブリッジユニット４０１およびＳＫＩＮＩＴソースディテクタ４５０に結合されたＳＫＩＮＩＴフィルタ４０５を含む。ＬＰＣバスブリッジ３２１はさらにアドレスマッパ４１１を含む。アドレスマッパ４１１は、ＳＫＩＮＩＴフィルタ４０５に結合されているアドレスフィルタ４１０に結合されている。ＬＰＣバスブリッジ３２１はさらに制御ロジック４１６を含み、制御ロジック４１６は構成ヘッダ標準レジスタ（configuration header standard register）４１５を制御するために結合される。ＬＰＣバスブリッジ３２１は、内部バス４２１に結合される内部バスサイクルデコードユニット４２０をさらに含む。ＬＰＣバスブリッジ３２１はさらに読み出しバッファ４２５および書き込みバッファ４３０を含み、それらはどちらも内部バス４２１に結合されている。ＬＰＣバスブリッジ３２１はさらにHash_x命令変換装置４５５を含み、それはＳＫＩＮＩＴソースディテクタ４５０とＬＰＣバスサイクルエンジン４３５との間に結合される。さらに、ＬＰＣバスブリッジ３２１は、ＬＰＣバス３３５に結合されたＬＰＣバスドライバ４４０を含む。
【００６１】
例示の実施形態では、内部バス４２１はＬＰＣバスブリッジ３２１内部のトランザクションを伝達するために使用することができる。ＮＣ  Ｉ／Ｏリンク２２５で受信されたトランザクションは内部ブリッジユニット４０１で受信され、内部バスサイクルへ変換される。一実施形態では、内部ブリッジユニット４０１は、ＮＣ  Ｉ／Ｏリンク２２５上でHyperTransport（商標）メッセージを受信し、それらのメッセージを内部バス４２１上で伝達するためにＰＣＩバスサイクルに変換するように構成可能である。例えば、図６から図８の説明との関連において以下で説明するように、Hash_Start，Hash_EndおよびHash_Dataメッセージなどの HyperTransport（商標）メッセージを送信することができる。
【００６２】
内部ブリッジユニット４０１がＮＣ  Ｉ／Ｏリンク２２５からトランザクションを受信するとき、ＳＫＩＮＩＴフィルタ４１５はＳＫＩＮＩＴトランザクションを識別するように構成することができる。トランザクションがＳＫＩＮＩＴトランザクションであるとき、それらはＳＫＩＮＩＴソースディテクタ４５０に転送される。アドレスマッパ４１１が受信したアドレスを、以下に示すように対応するＬＰＣバス３３５のアドレスにマッピングする。アドレスフィルタ４１０はHyperTransport（商標）メッセージに対応するＰＣＩトランザクションを受信して、もしそれらのトランザクションのアドレスがＳＳＰ１３０の２５６バイトセキュリティ初期化アドレスウィンドウの範囲内であるときは、範囲内（in-range）信号がアドレスフィルタ４１０からＳＫＩＮＩＴソースディテクタ４５０に供給される。以下でさらに説明するように、アドレスフィルタ４１０は入力メッセージアドレスを比較するために構造ヘッダ標準レジスタ４１５を使用する。一実施形態では、構造ヘッダ標準レジスタ４１５はシステムのブートの際にＳＳＰ１３０のベースアドレスレジスタ（図示せず）の内容によってプログラムされる。このプログラミングは基本入出力システム（ＢＩＯＳ）の助けをかりて実行される。
【００６３】
一実施形態では、ＳＬの有効化およびメモリマッピングされたＩ／ＯトランザクションはＬＰＣバスブリッジ３２１のアドレスマッパ４１１によって、次のとおりＬＰＣバス３３５上の４Ｋバイト固定アドレス範囲内にマッピング可能である。
FED0_0000h-FED0_0003h Hash_End
FED0_0004h-FED0_0007h Hash_Data
FED0_0008h-FED0_000Bh Hash_Start
FED0_000Ch-FED0_00FFh 予約済み
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 予約済み
FED0_0200h-FED0_0FFFh SSPメモリマッピングされたＩ／Ｏウィンドウ
FED0_1000h-FEDF_FFFFh 予約済み
【００６４】
ＬＰＣバス３３５上のトランザクションはバイト読み出しおよび書き込みであることに注意すべきである。従って、ＮＣ  Ｉ／Ｏリンク２２５で受信されるすべてのHash_DataＤワードトランザクションは対応するバイトトランザクションに変換される。
【００６５】
ＳＫＩＮＩＴソースディテクト４５０はトランザクションの発信元（ソース）を判定するように構成される。ＳＫＩＮＩＴソースディテクト４５０がＳＫＩＮＩＴトランザクションの発信元がホストブリッジでないと判定すると、そのＳＫＩＮＩＴトランザクションはドロップまたは廃棄される。一実施形態では、ホストブリッジのみが発信元でないＳＫＩＮＩＴトランザクションを受信すると、それに応答してシステムのリセットが行われる。しかしながら、ＳＫＩＮＩＴソースディテクト４５０がＳＫＩＮＩＴトランザクションの発信元がＳＥＭプロセッサ１００Ａのホストブリッジであると判定し、そのトランザクションのアドレスがセキュリティ初期化ウィンドウの範囲内であると、範囲内信号によって判定したときは、そのＳＫＩＮＩＴトランザクションはHash_x命令変換装置４５５によるＬＰＣ命令への変換および関連ＬＰＣアドレスへのマッピングが許可される。次に、ＬＰＣバスサイクルエンジン４３５は適切なＬＰＣバスサイクルを生成する。次に、ＬＰＣバスドライバ４４０はＳＳＰ１３０への伝達のためにＬＰＣバス３３５上のバスサイクルを駆動するための適切な信号を生成する。
【００６６】
読み出しバッファ４２５および書き込みバッファ４３０はそれぞれの内部バスサイクルに関連するデータを記憶するように構成された記憶装置である。内部バス４２１上でトランザクションが伝達される際に、内部バスサイクルデコーダ４２０はトランザクションが読み出しサイクルか、または書き込みサイクルかを判定する。このサイクルに関連するすべてのデータは、ＬＰＣバスサイクルを生成するときにＬＰＣバスサイクルエンジン４３５によって使用するために、適切なバッファに記憶される。
【００６７】
ＬＰＣバス３３５は非可算（non-enumerable）のバスであるため、ＬＰＣバスブリッジ３２１はＳＳＰ１３０に対して構成ヘッダ（configuration header）を供給し、それはＳＳＰ１３０が存在するか否かに応じてソフトウェアから可視的であり、アクセス可能である。一実施形態では、構成ヘッダ標準レジスタ４１５は標準ＰＣＩ構成ヘッダと互換性を持つ。システムブートアップの際に、ＢＩＯＳはＬＰＣバス３３５上のＳＳＰ１３０の存在をチェックする。ＳＳＰ１３０が検出されると、ＢＩＯＳは制御ロジック４１６中のビットをセットし、それによって構成ヘッダ４１５の標準レジスタがソフトウェアから見えるようになるとともに、アクセス可能になる。代替的には、ＳＳＰ１３０が組み込まれるときには物理的なジャンパ配線を半田付けして、制御ロジック４１６がスタートアップ時に読み出してもよい。または、ＳＳＰがない場合には、構成ヘッダおよびその標準レジスタ４１５は、制御ロジック４１６によってソフトウェアから隠される。さらに、ＳＳＰ１３０は、固定されたＬＰＣバスアドレスにマッピングされている読み出し専用レジスタセットを含む。ＢＩＯＳはこれらのレジスタを読み出し、その値を構成ヘッダ標準レジスタ４１５の可算レジスタにロードする。一実施形態では、次のＳＳＰ読み出し専用レジスタが固定ＬＰＣアドレスにマッピングされる。
【００６８】
【表１】
2005528677.tif 000003
【００６９】
一実施形態では、ＬＰＣバスブリッジ３２１はＳＳＰ１３０のための割り込み機構をさらに含む。ＬＰＣブリッジ３２１は、構成ヘッダ標準レジスタ４１５内の構成ヘッダ割り込みレジスタを介してＳＳＰ割り込みのためのマッピングを行う。一実施形態では、ＬＰＣバスブリッジ３２１はＳＳＰ割り込みのためのマッピングを確定し、それを構成ヘッダにレポートする。代替的には、ＢＩＯＳが構成ヘッダレジスタをプログラムしてもよい。
【００７０】
従って、上記の説明から、ＬＰＣバスブリッジ３２１は、ＳＥＭ実行可能なプロセッサ１００のホストブリッジを発信元とするＳＳＰ１３０のセキュリティ初期化アドレスウィンドウへのアクセスを許可する一方、ＳＥＭ実行可能なプロセッサ１００のセキュリティ初期化の際に、ピアトゥーピアのアクセスなどの他のアクセスはブロックする。
【００７１】
図４の説明に関連して既に説明したＬＰＣバスブリッジ３２１の実施形態は特定のブロックに関係する機能を含んでいたが、ここで用いられた特定のブロックは説明目的のためだけのものであり、同様の機能を実行するように構成されたその他のブロックを含む別の実施形態も考えられる。
【００７２】
図５は、図３のブリッジユニットの他の実施形態のブロック図である。明確化および簡略化のために、図２、３に示した要素に対応する要素には同一の参照符号を付する。ＰＣＩバスブリッジ４２１はＮＣ  Ｉ／Ｏリンク２２５と、内部バス５２１とに結合された内部ブリッジユニット５０１を含む。ＰＣＩバスブリッジ４２１はさらに内部ブリッジユニット５０１と、ＳＫＩＮＩＴソースディテクタ５５０とに結合されたＳＫＩＮＩＴフィルタ５０５を含む。ＰＣＩバスブリッジ４２１はさらにアドレスマッパ５１１を含み、アドレスマッパ５１１は、ＳＫＩＮＩＴフィルタ５０５とベースアドレスレジスタ（ＢＡＲ）シャドウレジスタ５１５とに結合されたアドレスフィルタ５１０に結合される。ＰＣＩバスブリッジ４２１はさらに内部バス５２１に結合された内部バスサイクルデコーダ５２０を含む。ＰＣＩバスブリッジ４２１はさらに読み出しバッファ５２５と書き込みバッファ５３０とを含み、これらは内部バス５２１に結合される。ＰＣＩバスブリッジ４２１はさらにHash_x命令変換装置５５５を含み、それはＳＫＩＮＩＴソースディテクタ５５０とＰＣＩバスサイクルエンジン５３５との間に結合される。さらに、ＰＣＩバスブリッジ４２１はＰＣＩバス５４５に結合されたＰＣＩバスドライバ５４０を含む。
【００７３】
一実施形態では、ＢＡＲシャドウレジスタ５１５はシステムブートアップの際にＳＳＰ１３０のベースアドレスレジスタ（図示せず）の内容でプログラムされる。このプログラミングはＢＩＯＳの助けをかりて実行することできる。ＢＡＲシャドウレジスタ５１５は、ＳＳＰ１３０のＢＡＲに合致するように構成されている。制御ロジック５１６は、ＳＳＰ１３０のＢＡＲとＢＡＲシャドウレジスタ５１５との間の整合を維持する。一実施形態では、この整合を維持するために、制御ロジック５１６は、ＳＳＰ１３０に対する専用初期化デバイスセレクト（ＩＤＳＥＬ）を定義する。ＳＳＰ１３０はマザーボードに物理的に取り付けられ、または半田付けされる。このマザーボードにおいて、Ｉ／Ｏインターフェイス５２０のＰＣＩバスブリッジ４２１から所定のかつ専用のＩＤＳＥＬを用いてＳＳＰ１３０に配線するように構成することができる。４０ビットのセキュリティアドレスをＰＣＩバス５４５の対応する３２ビットアドレス空間にマッピングするために、アドレスマッパ５１５は可算書き込みが生じているときに制御ロジック５１６に通知するように構成される。制御ロジック５１６はＳＳＰ１３０のＢＡＲに対する可算書き込みをつかんで（snarf）、そのつかまえた可算書き込みが代わりにＢＡＲシャドウレジスタ５１５に書き込まれるようにする。ここでつかまえる（snarfing）とは特定のトランザクションのためにバスまたはインターフェイスを監視し、もし合致するものを見つけると、そのトランザクションを取り除く、または横取りすることである。
【００７４】
一実施形態では、ＳＬ有効化およびメモリマッピングされたＩ／Ｏトランザクションは、ＰＣＩバスブリッジ４２１のアドレスマッパ５１１によって、次のようにＰＣＩバス５４５のアドレス範囲にマッピングされる。
XXXX_XXX0h-XXXX_XXX3h Hash_End
XXXX_XXX4h-XXXX_XXX7h Hash_Data
XXXX_XXX8h-XXXX_XXXBh Hash_Start
XXXX_X00Ch-XXXX_X1FFh 予約済み
XXXX_X200h-XXXX_XFFFh ＳＳＰメモリマッピングされたＩ／Ｏウィンドウ
【００７５】
例示の実施形態では、内部バス５２１はＰＣＩバスブリッジ４２１内部でトランザクションを伝達するために使用可能である。ＮＣ  Ｉ／Ｏリンク２２５で受信されたトランザクションは内部ブリッジユニット５０１で受信され、内部バスサイクルに変換される。一実施形態では、内部ブリッジユニット５０１はＮＣ  Ｉ／Ｏリンク２２５でHyperTransport（商標）メッセージを受信し、それらのメッセージを内部バス５２１での伝送のためにＰＣＩバスサイクルに変換するように構成されている。例えば、図６から図８の説明との関連において以下で説明するように、Hash_Start，Hash_EndおよびHash_Dataメッセージなどの HyperTransport（商標）メッセージを送信することができる。
【００７６】
内部ブリッジユニット５０１がＮＣ  Ｉ／Ｏリンク２２５からトランザクションを受信するとき、ＳＫＩＮＩＴフィルタ５１５はＳＫＩＮＩＴトランザクションを識別するように構成することができる。トランザクションがＳＫＩＮＩＴトランザクションであるとき、それらはＳＫＩＮＩＴソースディテクタ５５０に転送される。アドレスマッパ５１１が４０ビットセキュリティアドレスを、以下に示すように対応するＰＣＩバス５４５の３２ビットアドレス空間にマッピングする。アドレスフィルタ５１０はHyperTransport（商標）メッセージに対応するＰＣＩトランザクションを受信して、もしそれらのトランザクションのアドレスがＳＳＰ１３０の２５６バイトセキュリティ初期化アドレスウィンドウ（例えば、Hash_Start, Hash_EndおよびHash_Dataアドレスに対応するメモリマッピングされたＩ／Ｏ空間の最初の３つのＤワード）の範囲内であるときは、範囲内（in-range）信号がアドレスフィルタ５１０からＳＫＩＮＩＴソースディテクタ５５０に供給される。
【００７７】
ＳＫＩＮＩＴソースディテクト５５０はトランザクションの発信元（ソース）を判定するように構成される。ＳＫＩＮＩＴソースディテクト５５０がＳＫＩＮＩＴトランザクションの発信元がホストブリッジでないと判定すると、そのＳＫＩＮＩＴトランザクションはドロップまたは廃棄される。一実施形態では、ホストブリッジのみが発信元でないＳＫＩＮＩＴトランザクションを受信すると、それに応答してシステムのリセットが行われる。他の実施形態では、ＰＣＩバスブリッジ４２１が、ＳＳＰ１３０のセキュリティ初期化アドレスウィンドウへのアクセスを試みたマスタへの後に続く許可（grant）の発行をブロックする。
【００７８】
しかしながら、ＳＫＩＮＩＴソースディテクト５５０がＳＫＩＮＩＴトランザクションの発信元がＳＥＭプロセッサ１００Ａのホストブリッジであると判定し、そのトランザクションのアドレスがセキュリティ初期化ウィンドウの範囲内であると、範囲内信号によって判定したときは、そのＳＫＩＮＩＴトランザクションはHash_x命令変換装置５５５によるＰＣＩ命令への変換および関連ＰＣＩアドレスへのマッピングが許可される。次に、ＰＣＩバスサイクルエンジン５３５は適切なＰＣＩバスサイクルを生成する。次に、ＰＣＩバスドライバ５４０はＳＳＰ１３０への伝達のためにＰＣＩバス５４５上のバスサイクルを駆動するための適切な信号を生成する。
【００７９】
読み出しバッファ５２５および書き込みバッファ５３０はそれぞれの内部バスサイクルに関連するデータを記憶するように構成された記憶装置である。内部バス５２１上でトランザクションが伝達される際に、内部バスサイクルデコーダ５２０はトランザクションが読み出しサイクルか、または書き込みサイクルかを判定する。このサイクルに関連するすべてのデータは、ＰＣＩバスサイクルを生成するときにＰＣＩバスサイクルエンジン５３５によって使用するために、適切なバッファに記憶される。
【００８０】
従って、上記の説明から、ＰＣＩバスブリッジ４２１は、ＳＥＭ実行可能なプロセッサ１００のホストブリッジを発信元とするＳＳＰ１３０のセキュリティ初期化アドレスウィンドウへのアクセスを許可する一方、ＳＥＭ実行可能なプロセッサ１００のセキュリティ初期化の際に、ピアトゥーピアのアクセスなどの他のアクセスはブロックする。
【００８１】
図５の説明に関連して既に説明したＰＣＩバスブリッジ４２１の実施形態は特定のブロックに関係する機能を含んでいたが、ここで用いられた特定のブロックは説明目的のためだけのものであり、同様の機能を実行するように構成されたその他のブロックを含む別の実施形態も考えられる。
【００８２】
＜HyperTransport（商標）トランザクションを使用したセキュリティカーネル初期化＞
上述のとおり、パケットを、ＮＣ  Ｉ／Ｏリンク２２５などのHyperTransport（商標）リンク上をアップストリームにもダウンストリームにも送信することができる。さらにある種のパケットは特定の宛先を持ち、その他のパケットはすべての装置に対してブロードキャストされる。図６から図８に、HyperTransport規格と互換性を持つＳＫＩＮＩＴトランザクションパケットの例を示す。図６はHash_Startパケットの一例を、図７はHash_Endパケットの一例を、図８はHash_Dataパケットの一例を示す。様々なHyperTransport（商標）パケットフォーマットとともに、リンク構造および信号の仕様についてのさらに詳細な情報は、HyperTransport（商標）技術コンソーシアムから出版されている、HyperTransport（商標）Ｉ／Ｏリンク規格書の最新版に記載されている。
【００８３】
図６に、Hash_Startパケットの一実施形態を示す。Hash_Startパケット６００は、ビット０−７からなる複数のフィールド、すなわち１バイトを含む。さらに、このパケットはビット時間０−７を含むので、８バイトのパケットである。Hash_Startパケット６００のフォーマットは、ホストブリッジがすべてのダウンストリーム装置との通信ために一般的に用いるブロードキャストメッセージとして定義される。ビット時間０の間、ビット０−５が命令タイプをエンコードするために用いられ、CMD[5:0]とラベリングされる。一方、ビット６−７はシーケンスＩＤのビット２，３をエンコードするために用いられ、SeqID[3:2]とラベリングされる。例示の実施形態では、CMD[5:0]のエンコードは111010bであり、それは、非ポスト（non-posted）、サイズ調整された（sized）書き込み、ダブルワード、等時性の（isochronous）、非同期（non-coherent）パケットであることを示している。ビット時間１の間、ビット０−４はホストブリッジのユニットＩＤ（00000b）をエンコードするために用いられ、UnitID[4:0]とラベリングされる。ビット５−６はシーケンスＩＤのビット０，１をエンコードするために用いられ、SeqID[1:0]とラベリングされる。ビット７はパスポステッド（pass posted）書き込みビットであって、PassPWとラベリングされる。この実施形態では、PassPWビットは値0bに固定される。ビット時間２の間、すべてのビットは予約済みである。ビット時間３の間、ビット０−１は予約済みである。ビット２−７はアドレスビット２−７をエンコードするために用いられ、それらはAddr[7:2]とラベリングされる。これらのビットはノーチェック（don’t care）ビットである。ビット時間４の間、ビット０−７はアドレスビット８から１５をエンコードするために用いられ、それらはAddr[15:8]とラベリングされる。これらのビットはノーチェックビットである。ビット時間５の間、ビット０−１はアドレスビット１６，１７をエンコードするために用いられ、それらはAddr[17:16]とラベリングされる。これらのビットはノーチェックビットである。ビット２−７はアドレスビット１８から２３をエンコードするために用いられ、それらはAddr[23:18]とラベリングされる。これらのビットはアドレス値001010bでエンコードされる。ビット時間６の間、ビット０−７はアドレスビット２４から３１をエンコードするために用いられ、それらはAddr[31:24]とラベリングされる。これらのビットはアドレス値F9hでエンコードされる。ビット時間７の間、ビット０−７はアドレスビット３２から３９をエンコードするために用いられ、それらはAddr[39:32]とラベリングされる。これらのビットはアドレス値FDhでエンコードされる。これらのアドレスは、図２から図５の上記説明との関連で説明したＳＳＰ１３０の予約済みＳＫＩＮＩＴアドレス空間に対応する。
【００８４】
図７に、Hash_Endパケットの一実施形態を示す。図６のHash_Startパケット６００と同様に、Hash_Endパケット７００は、ビット０−７からなる複数のフィールド、すなわち１バイトを含む。さらに、このパケットはビット時間０−７を含むので、８バイトのパケットである。Hash_Endパケット７００のフォーマットは、ホストブリッジがすべてのダウンストリーム装置との通信ために一般的に用いるブロードキャストメッセージとして定義される。ビット時間０の間、ビット０−５が命令タイプをエンコードするために用いられ、CMD[5:0]とラベリングされる。一方、ビット６−７はシーケンスＩＤのビット２，３をエンコードするために用いられ、SeqID[3:2]とラベリングされる。例示の実施形態では、CMD[5:0]のエンコードは111010bであり、それは、非ポスト（non-posted）、サイズ調整された（sized）書き込み、ダブルワード、等時性の（isochronous）、非同期（non-coherent）パケットであることを示している。ビット時間１の間、ビット０−４はホストブリッジのユニットＩＤ（00000b）をエンコードするために用いられ、UnitID[4:0]とラベリングされる。ビット５−６はシーケンスＩＤのビット０，１をエンコードするために用いられ、SeqID[1:0]とラベリングされる。ビット７はパスポステッド（pass posted）書き込みビットであって、PassPWとラベリングされる。この実施形態では、PassPWビットは値0bに固定される。ビット時間２の間、すべてのビットは予約済みである。ビット時間３の間、ビット０−１は予約済みである。ビット２−７はアドレスビット２−７をエンコードするために用いられ、それらはAddr[7:2]とラベリングされる。これらのビットはアドレス値00000bにエンコードされる。ビット時間４の間、ビット０−７はアドレスビット８から１５をエンコードするために用いられ、それらはAddr[15:8]とラベリングされる。これらのビットはアドレス値00000bにエンコードされる。ビット時間５の間、ビット０−７はアドレスビット１６から２３をエンコードするために用いられ、それらはAddr[23:16]とラベリングされる。これらのビットはアドレス値28hでエンコードされる。ビット時間６の間、ビット０−７はアドレスビット２４から３１をエンコードするために用いられ、それらはAddr[31:24]とラベリングされる。これらのビットはアドレス値F9hでエンコードされる。ビット時間７の間、ビット０−７はアドレスビット３２から３９をエンコードするために用いられ、それらはAddr[39:32]とラベリングされる。これらのビットはアドレス値FDhでエンコードされる。これらのアドレスは、図２から図５の上記説明との関連で説明したＳＳＰ１３０の予約済みＳＫＩＮＩＴアドレス空間に対応する。
【００８５】
図８に、Hash_Dataパケットの一実施形態を示す。Hash_Dataパケット８００は、ビット０−７からなる複数のフィールド、すなわち１バイトを含む。さらに、このパケットはビット時間０−７を含むので、８バイトのパケットである。Hash_Dataパケット８００のフォーマットは、サイズ調整された書き込み要求パケットとして定義される。ビット時間０の間、ビット０−５が命令タイプをエンコードするために用いられ、CMD[5:0]とラベリングされる。一方、ビット６−７はシーケンスＩＤのビット２，３をエンコードするために用いられ、SeqID[3:2]とラベリングされる。例示の実施形態では、CMD[5:0]のエンコードは0011x0bであり、それは、非ポスト（non-posted）、ダブルワードデータを持つサイズ調整された（sized）書き込み要求、非同期（non-coherent）パケットであることを示している。ビット時間１の間、ビット０−４はホストブリッジのユニットＩＤ（00000b）をエンコードするために用いられ、UnitID[4:0]とラベリングされる。ビット５−６はシーケンスＩＤのビット０，１をエンコードするために用いられ、SeqID[1:0]とラベリングされる。ビット７はパスポステッド（pass posted）書き込みビットであって、PassPWとラベリングされる。この実施形態では、PassPWビットは値0bに固定される。ビット時間２の間、ビット０−４はソースタグ値をエンコードするために用いられ、SrcTag[4:0]とラベリングされる。ビット５は、互換性ビットとして用いられ、値0bに固定されている。ビット６−７はデータマスクまたはデータカウント値のビット０，１をエンコードするために用いられ、Mask/Count[1:0]とラベリングされる。これらのビットは値0xbでエンコードされ、Hash_Dataがトランザクション毎に単一のＤワードとして送信され、バイトまたはＤワードモードが使用されることを示す。例えば、Ｄワードモードでは、カウント値＝0000b（１Ｄワード）であり、バイトモードではカウント値＝0001b（２Ｄワード、１データ、１マスク）であり、マスクＤワード＝000Fhである。ビット時間３の間、ビット０−１はデータマスクまたはデータカウント値のビット２，３をエンコードするために用いられ、Mask/Count[3:2]とラベリングされる。ビット２−７はアドレスビット２−７をエンコードするために用いられ、それらはAddr[7:2]とラベリングされる。これらのビットはアドレス値000001bでエンコードされる。ビット時間４の間、ビット０−７はアドレスビット８から１５をエンコードするために用いられ、それらはAddr[15:8]とラベリングされる。これらのビットはアドレス値00hでエンコードされる。ビット時間５の間、ビット０−７はアドレスビット１６から２３をエンコードするために用いられ、それらはAddr[23:16]とラベリングされる。これらのビットはアドレス値28hでエンコードされる。ビット時間６の間、ビット０−７はアドレスビット２４から３１をエンコードするために用いられ、それらはAddr[31:24]とラベリングされる。これらのビットはアドレス値F9hでエンコードされる。ビット時間７の間、ビット０−７はアドレスビット３２から３９をエンコードするために用いられ、それらはAddr[39:32]とラベリングされる。これらのビットはアドレス値FDhでエンコードされる。これらのアドレスは、図２から図５の上記説明との関連で説明したＳＳＰ１３０の予約済みＳＫＩＮＩ��アドレス空間に対応する。
【００８６】
上記実施形態は、考え得るかぎり詳細に説明しているが、これまでの開示を完全に理解した当業者にとっては様々な変形または変更が可能になることは明らかである。添付の特許請求の範囲はすべてのそのような変形例または変更例を包含するように解釈されることを意図したものである。
【産業上の応用】
【００８７】
本発明は、一般にコンピュータシステムに応用可能である。
【図面の簡単な説明】
【００８８】
【図１】セキュア実行モードを実行可能なプロセッサの一実施形態の動作ドメインとそれらのドメインで動作するコードの振る舞いを示す図。
【図２】高信頼コンピューティングプラットホームを採用したコンピュータシステムの一実施形態を示すブロック図。
【図３】高信頼コンピューティングプラットホームを採用したコンピュータシステムの別実施形態を示すブロック図。
【図４】セキュリティサービスプロセッサに接続するためのＩ／Ｏインターフェイスユニットの一実施形態を示すブロック図。
【図５】セキュリティサービスプロセッサに接続するためのＩ／Ｏインターフェイスユニットの別実施形態を示すブロック図。
【図６】HyperTransport（商標）プロトコルでフォーマットされたHash_Startパケットの一実施形態を示す図。
【図７】HyperTransport（商標）プロトコルでフォーマットされたHash_Endパケットの一実施形態を示す図。
【図８】HyperTransport（商標）プロトコルでフォーマットされたHash_Dataパケットの一実施形態を示す図。
【図１】
2005528677.tif 000004
【図２】
2005528677.tif 000005
【図３】
2005528677.tif 000006
【図４】
2005528677.tif 000007
【図５】
2005528677.tif 000008
【図６】
2005528677.tif 000009
【図７】
2005528677.tif 000010
【図８】
2005528677.tif 000011
【国際調査報告】
2005528677.tif 000012
2005528677.tif 000013
2005528677.tif 000014