(57)【特許請求の範囲】
【請求項１】
プラットフォームで動作し、ノーマル実行モードおよび分離実行モードの１つに設定されるプロセッサ内で分離命令を実行する実行ユニットと、
前記プロセッサが分離実行モードに構成されている場合に分離命令の実行をサポートするための少なくとも１つのパラメータを格納するパラメータ記憶域と
を具備し、
前記分離命令は、分離初期化（ｉｓｏ＿ｉｎｉｔ）命令、分離クローズ（ｉｓｏ＿ｃｌｏｓｅ）命令、分離入口（ｉｓｏ＿ｅｎｔｅｒ）命令、分離出口（ｉｓｏ＿ｅｘｉｔ）命令、分離構成読込み（ｉｓｏ＿ｃｏｎｆｉｇ＿ｒｅａｄ）命令、および分離構成書込み（ｉｓｏ＿ｃｏｎｆｉｇ＿ｗｒｉｔｅ）命令のうち、いづれか１つの命令であり、
前記少なくとも１つのパラメータは、分離特徴ワード、実行モード・ワード、論理プロセッサ値、マスク値およびベース値を含む分離設定、フレーム、出口物理アドレス、入口物理アドレス、プロセッサ・ナブ・ローダの物理アドレスの１つであり、
前記パラメータ記憶域は、内部記憶域か外部記憶域の１つであり、
前記内部記憶域は、分離特徴ワードを記憶する特徴レジスタ、実行モード・ワードを記憶する制御レジスタ、論理プロセッサ値を記憶する論理プロセッサ・レジスタ、マスク値を記憶するマスク・レジスタ、ベース値を記憶するベース・レジスタ、フレームを記憶するフレーム・レジスタ・セット、出口アドレスを記憶する出口フレーム・レジスタ、入口アドレスを記憶する入口フレーム・レジスタ、プロセッサ・ナブ・ローダ・アドレスを記憶するローダ・レジスタを含み、
前記外部記憶域は、メモリ・コントローラ・ハブ（ＭＣＨ）中のＭＣＨ記憶域、および入出力コントローラ・ハブ（ＩＣＨ）中のＩＣＨ記憶域を含み、
前記実行モード・ワードは、前記プロセッサを分離実行モードに構成し、
前記ｉｓｏ＿ｉｎｉｔ命令が実行されると、前記プロセッサは、
分離域がまだ作成されていない場合は前記ベース値および前記マスク値によって定義される分離域をメモリ中に作成し、
前記ＭＣＨ記憶域に分離域の範囲を設定し、
ローダ・レジスタ中のプロセッサ・ナブ・ローダ・アドレスを使って分離域中にプロセッサ・ナブ・ローダをコピーし、
プロセッサ・ナブ・ローダを実行する
ことを特徴とする装置。
【請求項２】
前記ｉｓｏ＿ｉｎｉｔ命令が実行されると、前記プロセッサは、さらに、
前記分離域をプラットフォーム用に初期化し、
プロセッサ・ナブのロケーションを得る請求項１に記載の装置。
【請求項３】
前記プロセッサにプロセッサ・ナブ・ローダを実行させるｉｓｏ＿ｉｎｉｔ命令によって、前記プロセッサは、
前記プロセッサ・ナブを前記分離域中にコピーし、
前記プロセッサ・ナブ・ローダ中に含まれる公開キーを使って前記プロセッサ・ナブの署名を検証し、
署名が検証された場合は前記プロセッサ・ナブを実行する請求項２に記載の装置。
【請求項４】
前記ｉｓｏ＿ｃｌｏｓｅ命令が実行されると、前記プロセッサは、
対応する論理プロセッサが最後に引き下るものである場合は、前記プロセッサ中の分離設定をリセットし、
前記プロセッサが最後に引き下るものである場合は、前記ＭＣＨおよび前記ＩＣＨ中の分離設定をリセットする請求項１に記載の装置。
【請求項５】
前記ｉｓｏ＿ｅｎｔｅｒ命令が実行されると、前記プロセッサは、
前記フレーム・レジスタ・セットの内容を、出口フレーム・レジスタ中の出口アドレスが指す出口フレームに記憶し、
入口フレーム・レジスタ中の入口アドレスが指す入口フレームを、前記フレーム・レジスタ・セット中にロードする請求項１に記載の装置。
【請求項６】
前記ｉｓｏ＿ｅｘｉｔ命令が実行されると、前記プロセッサは、
出口フレーム・レジスタ中の出口アドレスが指す出口フレームを、前記フレーム・レジスタ・セット中にロードする請求項１に記載の装置。
【請求項７】
前記ｉｓｏ＿ｃｏｎｆｉｇ＿ｒｅａｄ命令が実行されると、前記プロセッサは、
前記パラメータ記憶域に対応する構成記憶域の内容を返す請求項１に記載の装置。
【請求項８】
前記ｉｓｏ＿ｃｏｎｆｉｇ＿ｗｒｉｔｅ命令が実行されると、前記プロセッサは、
前記パラメータ記憶域に対応する構成記憶域の内容を書き込む請求項１に記載の装置。
【発明の詳細な説明】
【０００１】
（背景）
１．発明の分野
本発明は、マイクロプロセッサに関する。より詳細には、本発明は、プロセッサのセキュリティに関する。
【０００２】
２．関連技術の説明
マイクロプロセッサと通信技術の進歩は、従来のビジネスの方法を超えた多数の応用の機会をもたらしている。今や、電子商取引（Ｅコマース）およびビジネス・ツー・ビジネス（Ｂ２Ｂ）取引が普及しつつあり、高速で世界的規模の市場に到達する。残念ながら、最新のマイクロプロセッサ・システムは、便利で効率的なビジネスの方法、通信方法、取引方法をユーザに提供するが、悪意ある攻撃を受けやすい。これらの攻撃の例をいくつか挙げると、ウィルス、侵入、セキュリティの侵害、改ざんがある。したがって、コンピュータ・システムの保全性を保護し、ユーザの信頼を高めるために、コンピュータのセキュリティがますます重要になってきている。
【０００３】
悪意ある攻撃により生じる脅威は、多くの形態をとり得る。攻撃は遠隔からでも可能であり、物理的アクセスを必要としない。ハッカーによる遠隔からの侵入攻撃は、何千人または何百万人ものユーザに接続されているシステムの正常な動作を混乱させる。ウィルス・プログラムは、シングル・ユーザ・プラットフォームのコードおよび／またはデータを毀すことができる。
【０００４】
攻撃から保護するための既存の技術には多くの欠点がある。アンチ・ウィルス・プログラムは、既知のウィルスのスキャンおよび検出しか行えない。ほとんどのアンチ・ウィルス・プログラムは、ファイルまたはプログラムが不良であると証明されるまでは良好であると想定するウィーク・ポリシーを使用している。多くのセキュリティ・アプリケーションにとって、このウィーク・ポリシーは適切ではないであろう。さらに、ほとんどのアンチ・ウィルス・プログラムは、プラットフォームに常駐している場合にローカルに使用される。これは、グループ・ワーク環境においては適切ではないことがある。暗号化またはその他のセキュリティ技術を使用したセキュリティ・コプロセッサまたはスマート・カードは、速度性能、メモリ容量、フレキシビリティにおいて限界がある。オペレーティング・システムを再設計すると、ソフトウェアの互換性の問題が生じ、開発努力への多額の投資が発生する。
【０００５】
本発明の特徴および利点は、本発明の以下の詳細な説明から明らかになるであろう。
【０００６】
（説明）
本発明の一実施態様では、分離命令（isolated instruction）を実行するための技術を提供する。実行ユニットが、プラットフォームで動作するプロセッサ中で分離命令を実行する。プロセッサは、ノーマル実行モードおよび分離実行モードの１つに構成される。パラメータ記憶域は、プロセッサが分離実行モードに構成されている場合に分離命令の実行をサポートするための少なくとも１つのパラメータを含む。
【０００７】
一実施態様では、分離命令は、分離初期化（ｉｓｏ＿ｉｎｉｔ）命令、分離クローズ命令（ｉｓｏ＿ｃｌｏｓｅ）命令、分離入口（ｉｓｏ＿ｅｎｔｅｒ）命令、分離出口（ｉｓｏ＿ｅｘｉｔ）命令、分離構成読込み（ｉｓｏ＿ｃｏｎｆｉｇ＿ｒｅａｄ）命令、および分離構成書込み（ｉｓｏ＿ｃｏｎｆｉｇ＿ｗｒｉｔｅ）命令の１つである。パラメータは、分離特徴ワード、実行モード・ワード、論理プロセッサ値、マスク値およびベース値を含む分離設定、出口物理アドレス、入口物理アドレス、およびプロセッサ・ナブ・ローダ（processor nub loader）の物理アドレスの１つである。
【０００８】
パラメータ記憶域は、内部記憶域か外部記憶域の１つである。内部記憶域は、実行モード・ワードを記憶する制御レジスタ、論理プロセッサ・レジスタ、マスク値を記憶するマスク・レジスタ、ベース値を記憶するベース・レジスタ、フレーム・レジスタ・セット、出口アドレスを記憶する出口フレーム・レジスタ、入口アドレスを記憶する入口フレーム・レジスタ、プロセッサ・ナブ・ローダ・アドレスを記憶するローダ・レジスタを含む。外部記憶域は、メモリ・コントローラ・ハブ（ＭＣＨ）記憶域、および入出力コントローラ・ハブ（ＩＣＨ）記憶域を含む。実行モード・ワードは、プロセッサを分離実行モードに構成する。
【０００９】
ｉｓｏ＿ｉｎｉｔ命令を実行すると、プロセッサは、分離域がまだ作成されていない場合は、ベース値およびマスク値によって定義される分離域をメモリ中に作成し、ＭＣＨレジスタにその分離域の範囲を設定し、ローダ・レジスタ中のプロセッサ・ナブ・ローダ・アドレスを使ってその分離域にプロセッサ・ナブ・ローダをコピーし、プロセッサ・ナブ・ローダを実行する。さらに、ｉｓｏ＿ｉｎｉｔ命令を実行すると、プロセッサは、分離域をプラットフォーム用に初期化し、プロセッサ・ナブのロケーションを得る。プロセッサにプロセッサ・ナブ・ローダを実行させるｉｓｏ＿ｉｎｉｔ命令によって、プロセッサは、プロセッサ・ナブを分離域中にコピーし、プロセッサ・ナブ・ローダ中に含まれる公開キーを使ってプロセッサ・ナブの署名を検証し、署名が検証された場合はそのプロセッサ・ナブを実行する。したがって、ｉｓｏ＿ｉｎｉｔ命令は、分離域が作成されると、その環境またはプラットフォームを確実にクリーンな状態にする。
【００１０】
ｉｓｏ＿ｅｎｔｅｒ命令を実行すると、プロセッサは、フレーム・レジスタ・セットの内容を出口フレーム・レジスタ中の出口アドレスが指す出口フレーム中に記憶し、入口フレーム・レジスタ中の入口アドレスが指す入口フレームをフレーム・レジスタ・セット中にロードする。ｉｓｏ＿ｅｘｉｔ命令を実行すると、プロセッサは出口フレームをフレーム・レジスタ・セット中にロードする。出口フレーム・レジスタ中の出口アドレスが出口フレームを指す。ｉｓｏ＿ｃｌｏｓｅ命令を実行すると、プロセッサは、対応する論理プロセッサが最後に引き下るものである場合はプロセッサ中の分離設定をリセットし、また、そのプロセッサが最後に引き下るものである場合はＭＣＨおよびＩＣＨ中の分離設定をリセットする。ｉｓｏ＿ｃｏｎｆｉｇ＿ｒｅａｄ命令を実行すると、プロセッサは、パラメータ記憶域に対応する構成記憶域の内容を返す。ｉｓｏ＿ｃｏｎｆｉｇ＿ｗｒｉｔｅ命令を実行すると、プロセッサは、パラメータ記憶域に対応する構成記憶域の内容を書き込む。
【００１１】
次の命令は、環境および／またはプラットフォームの保全性を確実にするために、原子的かつ割込み不能である。すなわち、ｉｓｏ＿ｅｎｔｅｒ、ｉｓｏ＿ｅｘｉｔ、ｉｓｏ＿ｃｌｏｓｅ、ｉｓｏ＿ｃｏｎｆｉｇ＿ｒｅａｄ、ｉｓｏ＿ｃｏｎｆｉｇｕ＿ｗｒｉｔｅ。ｉｓｏ＿ｅｎｔｅｒ命令を実行すると、プロセッサは、フレーム・レジスタ・セットの内容を出口フレーム・レジスタ中の出口アドレスが指す出口フレーム中に記憶し、入口フレーム・レジスタ中の入口アドレスが指す入口フレームをフレーム・レジスタ・セット中にロードする。ｉｓｏ＿ｅｘｉｔ命令を実行すると、プロセッサは、出口フレームをフレーム・レジスタ・セット中にロードする。出口フレームは、出口フレーム・レジスタ中の出口アドレスによって指される。ｉｓｏ＿ｃｌｏｓｅ命令を実行すると、プロセッサは、対応する論理プロセッサが最後に引き下るものである場合はプロセッサ中の分離設定をリセットし、また、プロセッサが最後に引き下るものである場合はＭＣＨおよびＩＣＨ中の分離設定をリセットする。ｉｓｏ＿ｃｏｎｆｉｇ＿ｒｅａｄ命令を実行すると、プロセッサは、パラメータ記憶域に対応する構成記憶域の内容を返す。ｉｓｏ＿ｃｏｎｆｉｇ＿ｗｒｉｔｅ命令を実行すると、プロセッサは、パラメータ記憶域に対応する構成記憶域の内容を書き込む。
【００１２】
以下の記述では、説明の目的で、本発明が完全に理解できるように多数の詳細事項を記載する。しかし、本発明を実施するためにこれらの特定の詳細事項が必要ではないことが、当業者には明らかであろう。それ以外の場合には、本発明が不明瞭にならないように、周知の電気構造および電気回路を構成図の形態で示してある。
【００１３】
アーキテクチャの概要
コンピュータ・システムまたはプラットフォームにセキュリティを与えるための１つの原則は、分離実行アーキテクチャという概念である。分離実行アーキテクチャは、コンピュータ・システムまたはプラットフォームのオペレーティング・システムと直接的または間接的に相互作用するハードウェアおよびソフトウェアのコンポーネントの論理的および物理的定義を含む。オペレーティング・システムおよびプロセッサは、様々な動作モードに対応するリングと呼ばれるいくつかのレベルの階層を備えることができる。リングは、オペレーティング・システム内で専用タスクを実行するように設計されたハードウェアおよびソフトウェアのコンポーネントの論理区分である。この区分は、一般に、特権、すなわちプラットフォームに変更を施す能力の程度またはレベルに基づく。例えば、リング０は最も内側のリングであり、階層の最上レベルにある。リング０は、最も重要な特権コンポーネントを包含する。さらに、リング０中のモジュールは、それよりも特権度の低いデータにアクセスすることもできるが、その反対は不可能である。リング３は最も外側のリングであり、階層の最低レベルにある。リング３は、一般に、ユーザ・レベルまたはアプリケーション・レベルを包含し、最小特権を有する。リング１およびリング２は中間リングを表し、その特権のレベルが減少していく。
【００１４】
図１Ａは、本発明の一実施形態による論理動作アーキテクチャ５０を示す図である。論理動作アーキテクチャ５０は、オペレーティング・システムのコンポーネントおよびプロセッサのアブストラクトである。論理動作アーキテクチャ５０は、リング０  １０、リング１  ２０、リング２  ３０、リング３  ４０、およびプロセッサ・ナブ・ローダ５２を含む。プロセッサ・ナブ・ローダ５２は、プロセッサ・エグゼクティブ（ＰＥ）ハンドラのインスタンスである。ＰＥハンドラは、後述するように、プロセッサ・エグゼクティブ（ＰＥ）をハンドルおよび／または管理するために使用される。論理動作アーキテクチャ５０は、ノーマル実行モードおよび分離実行モードの２種類のオペレーション・モードを有する。論理動作アーキテクチャ５０中の各リングは、両方のモードで動作することができる。プロセッサ・ナブ・ローダ５２は、分離実行モードにおいてのみ動作する。
【００１５】
リング０  １０は、ノーマル実行リング０  １１および分離実行リング０  １５の２つの部分を含む。ノーマル実行リング０  １１は、オペレーティング・システムにとって重要なソフトウェア・モジュールを含み、これは、通常、カーネルと呼ばれる。これらのソフトウェア・モジュールは、プライマリ・オペレーティング・システム（例えばカーネル）１２、ソフトウェア・ドライバ１３、およびハードウェア・ドライバ１４を含む。分離実行リング０  １５は、オペレーティング・システム（ＯＳ）ナブ１６およびプロセッサ・ナブ１８を含む。ＯＳナブ１６およびプロセッサ・ナブ１８は、それぞれＯＳエグゼクティブ（ＯＳＥ）およびプロセッサ・エグゼクティブ（ＰＥ）のインスタンスである。ＯＳＥおよびＰＥは、分離域７０および分離実行モードに関連する安全な環境で動作するエグゼクティブ・エンティティ（executive entity）の一部である。プロセッサ・ナブ・ローダ５２は、システム中のチップセット内に保持される保護ブートストラップ・ローダ・コードであり、後述するように、プロセッサまたはチップセットから分離域にプロセッサ・ナブ１８をロードする責任をもつ。
【００１６】
同様に、リング１  ２０、リング２  ３０、およびリング３  ４０は、それぞれ、ノーマル実行リング１  ２１、リング２  ３１、リング３  ４１、および分離実行リング１  ２５、リング２  ３５、リング３  ４５を含む。特に、ノーマル実行リング３は、Ｎ個のアプリケーション４２１〜４２Ｎを含み、分離実行リング３は、Ｋ個のアプレット４６１〜４６Ｋを含む。
【００１７】
分離実行アーキテクチャの１つの概念は、システム・メモリ中に、分離域と呼ばれる分離された領域を作成することであり、この分離域は、コンピュータ・システム中のプロセッサおよびチップセットの両方によって保護される。この分離領域は、トランスレーション・ルックアサイド（ＴＬＢ）アクセス・チェックによって保護されるキャッシュ・メモリ中にあってもよい。この分離領域へのアクセスは、分離読込みおよび書込みサイクルと呼ばれる、専用バス（例えば、メモリ読込みおよび書込み）サイクルを使って、プロセッサのフロント・サイド・バス（ＦＳＢ）からのみ可能である。この専用バス・サイクルは、スヌーピングにも使用される。この分離読込み／書込みサイクルは、プロセッサが分離実行モードで実行することにより発行される。分離実行モードの初期化は、プロセッサ中の特権命令をプロセッサ・ナブ・ローダ５２と組み合わせて使用して行う。プロセッサ・ナブ・ローダ５２は、リング０のナブ・ソフトウェア・モジュール（例えば、プロセッサ・ナブ１８）を検証し、分離域中にロードする。プロセッサ・ナブ１８は、分離実行のためのハードウェア関連のサービスを提供する。
【００１８】
プロセッサ・ナブ１８の１つのタスクは、リング０のＯＳナブ１６を検証して分離域中にロードし、プラットフォーム、プロセッサ・ナブ１８、およびオペレーティング・システム・ナブ１６の組み合わせに一意のキー階層のルートを生成することである。オペレーティング・システム・ナブ１６は、プライマリＯＳ１２中のサービス（例えば、オペレーティング・システム中の非保護セグメント）へのリンクを提供し、分離域内のページ管理を提供し、また、アプレット４６１〜４６Ｋを含めて、リング３のアプリケーション・モジュール４５を分離域中の割り振られた保護ページ中にロードする責任を有する。オペレーティング・システム・ナブ１６はまたリング０サポート・モジュールをロードすることができる。
【００１９】
オペレーティング・システム・ナブ１６は、分離域と通常の（例えば非分離）メモリの間のデータのページングをサポートすることを選択することができる。その場合、オペレーティング・システム・ナブ１６は、ページを通常のメモリに追い出す前に、分離域のページを暗号化しハッシングする責任と、ページを復元したときにそのページの内容をチェックする責任も有する。分離モード・アプレット４６１〜４６Ｋ、およびそれらのデータは、他のアプレットから、また、非分離スペースのアプリケーション（例えば４１１〜４２Ｎ）、ダイナミック・リンク・ライブラリ（ＤＬＬ）、ドライバ、およびさらにはプライマリ・オペレーティング・システム１２からのあらゆるソフトウェア攻撃に対して耐偽造性および耐監視性を有する。プロセッサ・ナブ１８またはオペレーティング・システム・ナブ１６のみがアプレットの実行を干渉または監視することができる。
【００２０】
図１Ｂは、本発明の一実施形態によるオペレーティング・システム１０中の様々なエレメントおよびプロセッサのアクセス可能性を示す図である。説明のために、リング０  １０およびリング３  ４０のみを示している。論理動作アーキテクチャ５０中の様々な要素は、それらのリング階層および実行モードに従って、アクセス可能物理メモリ６０にアクセスする。
【００２１】
アクセス可能物理メモリ６０は、分離域７０および非分離域８０を含む。分離域７０は、アプレット・ページ７２およびナブ・ページ７４を含む。非分離域８０は、アプリケーション・ページ８２およびオペレーティング・システム・ページ８４を含む。分離域７０は、分離実行モードで動作するオペレーティング・システムの要素およびプロセッサからのみアクセス可能である。非分離域８０は、リング０のオペレーティング・システムのすべての要素およびプロセッサからアクセス可能である。
【００２２】
プライマリＯＳ１２、ソフトウェア・ドライバ１３、およびハードウェア・ドライバ１４を含むノーマル実行リング０  １１は、ＯＳページ８４およびアプリケーション・ページ８２の両方にアクセスすることができる。アプリケーション４２１〜４２Ｎを含むノーマル実行リング３は、アプリケーション・ページ８２のみにアクセスすることができる。しかし、ノーマル実行リング０  １１およびリング３  ４１は、分離域７０にアクセスすることはできない。
【００２３】
ＯＳナブ１６およびプロセッサ・ナブ１８を含む分離実行リング０  １５は、アプレット・ページ７２およびナブ・ページ７４を含む分離域７０と、アプリケーション・ページ８２およびＯＳページ８４を含む非分離域８０の両方にアクセスすることができる。アプレット４６１〜４６Ｋを含む分離実行リング３  ４５は、アプリケーション・ページ８２およびアプレット・ページ７２のみにアクセスすることができる。アプレット４６１〜４６Ｋは、分離域７０中に常駐する。
【００２４】
図１Ｃは、本発明の一実施形態を実施することができるコンピュータ・システム１００を示す図である。コンピュータ・システム１００は、プロセッサ１１０、ホスト・バス１２０、メモリ・コントローラ・ハブ（ＭＣＨ）１３０、システム・メモリ１４０、入出力コントローラ・ハブ（ＩＣＨ）１５０、不揮発性メモリまたはシステム・フラッシュ１６０、大容量記憶装置１７０、入出力装置１７５、トークン・バス１８０、マザーボード（ＭＢ）・トークン１８２、リーダ１８４、およびトークン１８６を含む。ＭＣＨ１３０は、分離実行モード、ホストから周辺機器へのバス・インタフェース、メモリ、コントロールなど、複数の機能を統合するチップセットに統合することができる。同様に、ＩＣＨ１５０も、入出力機能の実行のために、ＭＣＨ１３０と一緒にまたは分離して、チップセット中に統合することができる。わかりやすくするために、すべての周辺バスを示してはいない。システム１００はまた、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＡＧＰ（ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ）、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ユニバーサル・シリアル・バス（ＵＳＢ）などの周辺バスも含むことが考えられる。
【００２５】
プロセッサ１１０は、複雑命令セット・コンピュータ（ＣＩＳＣ）、縮小命令セット・コンピュータ（ＲＩＳＣ）、超長命令語（ＶＬＩＷ）、またはハイブリッド・アーキテクチャなど、任意の種類のアーキテクチャの中央処理装置を表す。一実施形態では、プロセッサ１１０は、ペンティアム（登録商標）・シリーズ、ＩＡ−３２（商標）、ＩＡ−６４（商標）などのインテル・アーキテクチャ（ＩＡ）プロセッサと互換性がある。プロセッサ１１０は、ノーマル実行モード１１２および分離実行回路１１５を含む。ノーマル実行モード１１２は、プロセッサ１１０が、非安全環境、すなわち分離実行モードによって提供されるセキュリティ機能がない通常のモードで動作するモードである。分離実行回路１１５は、プロセッサ１１０が分離実行モードで動作することを可能にするメカニズムを提供する。分離実行回路１１５は、分離実行モードのためのハードウェアおよびソフトウェアのサポートを提供する。このサポートには、分離実行のための構成、分離域の定義、分離命令の定義（例えば、復号および実行）、分離アクセス・バス・サイクルの生成、分離モード割込みの生成が含まれる。
【００２６】
一実施形態では、コンピュータ・システム１００は、たった１つの主要中央処理装置、例えばプロセッサ１１０のみを備えるデスクトップ・コンピュータなどの単一プロセッサ・システムであってよい。他の実施形態では、コンピュータ・システム１００は、図１Ｃに示すように、複数のプロセッサ、例えばプロセッサ１１０、１１０ａ、１１０ｂを含むことができる。したがって、コンピュータ・システム１００は、任意の数のプロセッサを有するマルチプロセッサ・コンピュータ・システムであってよい。例えば、マルチプロセッサ・コンピュータ・システム１００は、サーバまたはワークステーション環境の一部として動作することができる。プロセッサ１１０の基本的な記述およびオペレーションを以下に詳説して示す。当業者は、プロセッサ１１０の基本的な記述およびオペレーションが、図１Ｃに示す他のプロセッサ１１０ａおよび１１０ｂにも、また本発明の一実施形態によるマルチプロセッサ・コンピュータ・システム１００中で利用することができる任意の数の他のプロセッサにも適用できることを認識されよう。
【００２７】
プロセッサ１１０はまた、複数の論理プロセッサを有することができる。論理プロセッサはスレッドと呼ばれることもあり、あるアーキテクチャ状態、および何らかのパーティション・ポリシーに従って割り振られた物理資源を有する物理プロセッサ内の機能ユニットである。本発明のコンテキストにおいては、「スレッド」および「論理プロセッサ」という用語を同じものを意味するために使用している。マルチスレッド・プロセッサは、複数のスレッドまたは複数の論理プロセッサを有するプロセッサである。マルチプロセッサ・システム（例えば、プロセッサ１１０、１１０ａ、１１０ｂを含むシステム）は、複数のマルチスレッド・プロセッサを有することができる。
【００２８】
ホスト・バス１２０は、プロセッサ１１０、またはプロセッサ１１０、１１０ａ、１１０ｂが他のプロセッサまたは装置、例えばＭＣＨ１３０と通信することを可能にするインタフェース信号を供給する。ノーマル・モードに加えて、ホスト・バス１２０は、プロセッサ１１０が分離実行モードに構成されている場合に、メモリ読込みおよび書込みサイクルのための対応するインタフェース信号を用いる分離アクセス・バス・モードを提供する。分離アクセス・バス・モードは、プロセッサ１１０が分離実行モードである間に開始されたメモリ・アクセスに対してアサートされる。分離アクセス・バス・モードはまた、アドレスが分離域のアドレス範囲内にあり、プロセッサ１１０が分離実行モードで初期化された場合に、命令プリフェッチ・サイクルおよびキャッシュ・ライトバック・サイクルに対してアサートされる。プロセッサ１１０は、分離アクセス・バス・サイクルがアサートされ、プロセッサ１１０が分離実行モードに初期化された場合に、分離域のアドレス範囲内にあるキャッシュ・アドレスへのスヌープ・サイクルに応答する。
【００２９】
ＭＣＨ１３０は、システム・メモリ１４０やＩＣＨ１５０などのメモリおよび入出力装置の制御および構成を行う。ＭＣＨ１３０は、分離メモリ読込みおよび書込みサイクルを含めて、メモリ参照バス・サイクルに対する分離アクセスのアサートを認識し、サービスするためのインタフェース回路を提供する。さらに、ＭＣＨ１３０は、システム・メモリ１４０中の分離域を表すメモリ・レンジ・レジスタ（例えばベース・レジスタおよび長さレジスタ）を備える。ＭＣＨ１３０は、構成されると、分離アクセス・バス・モードがアサートされていない分離域に対するアクセスを打ち切る。
【００３０】
システム・メモリ１４０は、システム・コードおよびデータを記憶する。システム・メモリ１４０は、一般に、ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）またはＳＲＡＭ（スタティック・ランダム・アクセス／メモリ）で実装される。システム・メモリ１４０は、アクセス可能物理メモリ６０（図１Ｂに示す）を含む。アクセス可能物理メモリは、ロード済みオペレーティング・システム１４２、分離域７０（図１Ｂに示す）、および分離制御／ステータス・スペース１４８を含む。ロード済みオペレーティング・システム１４２は、システム・メモリ１４０中にロードされたオペレーティング・システムの一部である。ロード済みＯＳ１４２は、一般に、ブート読出し専用メモリ（ＲＯＭ）などのブート記憶域中のあるブート・コードによって、大容量記憶装置からロードされる。分離域７０は、図１Ｂに示すように、プロセッサ１１０が分離実行モードで動作しているときに定義するメモリ域である。分離域７０へのアクセスは、プロセッサ１１０および／またはＭＣＨ１３０、あるいは分離域の諸機能を統合する他のチップセットによって制限され、また実施される。分離制御／ステータス・スペース１４８は、プロセッサ１１０および／またはＭＣＨ１３０によって定義される、入出力に似た独立したアドレス・スペースである。分離制御／ステータス・スペース１４８は、主として、分離実行制御およびステータス・レジスタを含む。分離制御／ステータス・スペース１４８は、既存のどのアドレス・スペースとも重ならず、分離バス・サイクルを使ってアクセスされる。システム・メモリ１４０はまた、図示していないその他のプログラムまたはデータを含む。
【００３１】
ＩＣＨ１５０は、分離実行機能を有する、システム中の既知の１地点を表す。わかりやすくするために、ＩＣＨ１５０のみを示してある。システム１００は、ＩＣＨ１５０と同様の多くのＩＣＨを備えることができる。複数のＩＣＨがある場合は、分離域の構成およびステータスを制御するように指定したＩＣＨが選択される。一実施形態では、この選択が外部ストラッピング・ピンによって行われる。当業者には知られているように、プログラマブル構成レジスタを使用することを含めて、他の選択方法を使用することもできる。ＩＣＨ１５０は、従来の入出力機能に加えて、分離実行モードをサポートするように設計されたいくつかの機能を有する。特に、ＩＣＨ１５０は、分離バス・サイクル・インタフェース１５２、プロセッサ・ナブ・ローダ５２（図１Ａに示す）、ダイジェスト・メモリ１５４、暗号キー記憶域１５５、分離実行論理プロセッサ・マネージャ１５６、およびトークン・バス・インタフェース１５９を含む。
【００３２】
分離バス・サイクル・インタフェース１５２は、分離読込みおよび書込みバス・サイクルなどの分離バス・サイクルを認識し、サービスするための分離バス・サイクル信号へのインタフェースとなる回路を含む。プロセッサ・ナブ・ローダ５２は、図１Ａに示すように、プロセッサ・ナブ・ローダ・コードおよびそのダイジェスト（例えばハッシュ）値を含む。プロセッサ・ナブ・ローダ５２は、該当する分離命令（例えばＩｓｏ＿Ｉｎｉｔ）を実行することによって呼び出され、分離域７０に転送される。プロセッサ・ナブ・ローダ５２は、分離域８０から、システム・フラッシュ・メモリからのプロセッサ・ナブ１８（例えば、不揮発性メモリ１６０中のプロセッサ・ナブ・コード１８）を分離域７０中にコピーし、その保全性を検証してログし、プロセッサ・ナブの秘密を保護するために使用する対称キーを管理する。一実施形態では、プロセッサ・ナブ・ローダ５２は、読出し専用メモリ（ＲＯＭ）として実装する。セキュリティの目的で、プロセッサ・ナブ・ローダ５２は不変であり、耐偽造性があり、代用不能である。ダイジェスト・メモリ１５４は、一般にＲＡＭとして実装され、ロード済みプロセッサ・ナブ１８、オペレーティング・システム・ナブ１６、および分離実行スペース中にロードされる他の任意の重要なモジュール（例えば、リング０モジュール）のダイジェスト（例えばハッシュ）値を記憶する。暗号キー記憶域１５５は、システム１００のプラットフォームに一意の対称暗号／復号キーを保持する。一実施形態では、暗号キー記憶域１５５は、製造時にプログラムされる内部ヒューズを含む。あるいは、暗号キー記憶域１５５を、乱数発生器およびピンのストラップ付きでつくることもできる。分離実行論理プロセッサ・マネージャ１５６は、分離実行モードで動作する論理プロセッサのオペレーションを管理する。一実施形態では、分離実行論理プロセッサ・マネージャ１５６は、分離実行モードで参加している論理プロセッサの数を追跡する論理プロセッサ・カウント・レジスタを含む。トークン・バス・インタフェース１５９は、トークン・バス１８０へのインタフェースとなる。プロセッサ・ナブ・ローダ・ダイジェスト、プロセッサ・ナブ・ダイジェスト、オペレーティング・システム・ナブ・ダイジェスト、およびオプションの追加ダイジェストの組み合わせは、総合的な分離実行ダイジェストを表し、分離ダイジェストと呼ばれる。分離ダイジェストは、分離実行の構成およびオペレーションを制御するリング０コードを識別する指紋である。分離ダイジェストは、現在の分離実行の状態を証明または立証するために使用される。
【００３３】
不揮発性メモリ１６０は、不揮発性の情報を記憶する。一般に、不揮発性メモリ１６０は、フラッシュ・メモリで実装される。不揮発性メモリ１６０は、プロセッサ・ナブ１８を含む。プロセッサ・ナブ１８は、オペレーティング・システム・ナブ１６の検証、ロード、ロギングを含む、分離域７０（システム・メモリ１４０中の）の初期設定と低レベル管理、およびオペレーティング・システム・ナブの秘密を保護するために使用される対称キーの管理を行う。プロセッサ・ナブ１８はまた、他のハードウェアによって提供される低レベルのセキュリティ・サービスに、アプリケーション・プログラム・インタフェース（ＡＰＩ）アブストラクトを提供する。プロセッサ・ナブ１８はまた、相手先商標の製造会社（ＯＥＭ）またはオペレーティング・システム・ベンダー（ＯＳＶ）が、起動ディスクによって配布することもできる。
【００３４】
大容量記憶装置１７０は、コード（例えば、プロセッサ・ナブ１８）、プログラム、ファイル、データ、アプリケーション（例えば、アプリケーション４２１〜４２Ｎ）、アプレット（例えば、アプレット４６１〜４６Ｋ）、オペレーティング・システムなどのアーカイブ情報を記憶する。大容量記憶装置１７０は、コンパクト・ディスク（ＣＤ）ＲＯＭ１７２、フロッピー（登録商標）・ディスケット１７４、ハード・ドライブ１７６、および他の任意の磁気または光学記憶装置を含むことができる。大容量記憶装置１７０は、機械可読媒体を読むメカニズムを提供する。ソフトウェアとして実装される場合、本発明の要素は、必要なタスクを実行するためのコード・セグメントである。プログラムすなわちコード・セグメントは、プロセッサ可読媒体に記憶するか、あるいは、搬送波中で実施されたコンピュータ・データ信号、すなわち搬送波によって変調された信号によって伝送媒体を介して伝送することができる。「プロセッサ可読媒体」には、情報を記憶または転送することができるどのような媒体も含めることができる。プロセッサ可読媒体の例としては、電子回路、半導体メモリ・デバイス、ＲＯＭ、フラッシュ・メモリ、消去可能プログラム可能ＲＯＭ（ＥＰＲＯＭ）、フロッピー・ディスケット、コンパクト・ディスクＣＤ−ＲＯＭ、光ディスク、ハード・ディスク、光ファイバ媒体、無線周波数（ＲＦ）リンクなどが挙げられる。コンピュータ・データ信号には、電子ネットワーク・チャネル、光ファイバ、空気、電磁気、ＲＦリンクなどの伝送媒体を介して伝播することができるどのような信号も含めることができる。コード・セグメントは、インターネット、イントラネットなどのコンピュータ・ネットワークを介してダウンロードすることができる。
【００３５】
入出力装置１７５には、入出力機能を実行するためのどのような入出力装置も含めることができる。入出力装置１７５の例としては、入力装置（例えば、キーボード、マウス、トラックボール、ポインティング・デバイス）のためのコントローラ、メディア・カード（例えば、オーディオ、ビデオ、グラフィックス）、ネットワーク・カード、およびその他の任意の周辺コントローラが挙げられる。
【００３６】
トークン・バス１８０は、ＩＣＨ１５０と、システム中の様々なトークンの間のインタフェースを提供する。トークンは、セキュリティ機能を備えた専用の入出力機能を実行する装置である。トークンは、少なくとも一対の予約目的の公開／秘密キーのペアと、秘密キーを使ってデータに署名を行う能力を含めて、スマート・カードと同様の特性を有する。トークン・バス１８０に接続されたトークンの例としては、マザーボード・トークン１８２、トークン・リーダ１８４、およびその他のポータブル・トークン１８６（例えば、スマート・カード）が挙げられる。ＩＣＨ１５０中のトークン・バス・インタフェース１５９は、トークン・バス１８０を介してＩＣＨ１５０に接続し、分離実行の状態を証明するように命令されたときに、対応するトークン（例えば、マザーボード・トークン１８２、トークン１８６）が有効な分離ダイジェスト情報にのみ署名するようにする。セキュリティの目的で、トークンはダイジェスト・メモリに接続されるべきである。
【００３７】
分離命令
図２は、本発明の一実施形態による、図１Ｃに示す分離実行回路１１５の一部を示す図である。分離実行回路１１５は、実行ユニット２３０およびパラメータ記憶域２４０を含む。
【００３８】
実行ユニット２３０は、図１Ｃに示すように、プロセッサ１１０で分離命令を実行する。上述のように、プロセッサ１１０は、図１Ｃに示すように、ＭＣＨ１３０、システム・メモリ１４０、ＩＣＨ１５０、トークン・バス１８０を含むプラットフォームにおいて動作する。さらに、プロセッサ１１０は、ノーマル実行モードおよび分離実行モードの１つに構成される。実行ユニット２３０は、分離命令を復号するためのデコーダ、復号化された命令においてタスクを実行するサブ実行ユニット、演算機能および論理機能を実行するための演算論理ユニット（ＡＬＵ）、および関連するレジスタを含むことができる。実行ユニット２３０は分離命令２１０を受け取る。
【００３９】
分離命令２１０はまた、いくつかのマイクロ命令を含むマクロ命令、またはアセンブリ言語レベルの命令であってもよい。分離命令２１０は、高水準言語の命令、または高水準言語による機能、ルーチン、サブプログラムであってもよい。以下の記載において、「命令」という用語は、プロセッサ１１０（図１Ｃ）が実行するタスクまたは機能のアブストラクト的な概念を指す。このタスクまたは機能は、単一オペレーション、一連のマイクロオペレーション、マイクロコード・ルーチン、マクロ命令、アセンブリ言語のルーチンまたは機能、高水準言語によるステートメント、高水準言語によるサブルーチンまたはサブプログラムまたは機能、あるいは専用ハードウェア回路によってなし遂げることができる。
【００４０】
分離命令２１０は、いくつかの命令を含む。一実施形態では、これらの命令には、分離初期化（ｉｓｏ＿ｉｎｉｔ）命令２１２、分離クローズ（ｉｓｏ＿ｃｌｏｓｅ）命令２１４、分離入口（ｉｓｏ＿ｅｎｔｅｒ）命令２１６、分離出口（ｉｓｏ＿ｅｘｉｔ）命令２１８、分離構成読込み（ｉｓｏ＿ｃｏｎｆｉｇ＿ｒｅａｄ）命令２２２、および分離構成書込み（ｉｓｏ＿ｃｏｎｆｉｇ＿ｗｒｉｔｅ）命令２２４が含まれる。ｉｓｏ＿ｉｎｉｔ命令２１２は、分離作成（ｉｓｏ＿ｃｒｅａｔｅ）命令と呼ばれることもある。
【００４１】
パラメータ記憶域２４０は、プロセッサ１１０が分離実行モードに構成されている場合に、分離命令２１０の実行をサポートするための少なくとも１つのパラメータを格納する。パラメータ記憶域２４０は、内部記憶域２３２および外部記憶域２３４を含む。内部記憶域２３２はプロセッサ１１０の内側にあり、外部記憶域２３４はプロセッサ１１０の外側にある。パラメータは、分離特徴ワード、実行モード・ワード、論理プロセッサ値、マスク値およびベース値を含む分離設定、フレーム、出口物理アドレス、入口物理アドレス、プロセッサ・ナブ・ローダの物理アドレスの１つである。
【００４２】
図３は、本発明の一実施形態による、図２に示す内部記憶域２３２を示す図である。内部記憶域２３２は、特徴レジスタ３１０、プロセッサ制御レジスタ３２０、論理プロセッサ・レジスタ３３０、分離設定レジスタ３４０、フレーム・レジスタ・セット３５０、出口フレーム・レジスタ３６０、入口フレーム・レジスタ３７０、およびローダ・レジスタ３８０を含む。
【００４３】
特徴レジスタ３１０は分離特徴ワードを記憶する。分離特徴ワードは、プロセッサ１１０に分離命令が存在すること、および分離命令のどの特徴が存在しているかを表す。特徴の例としては、分離命令の種類、乱数、乱数のステータスが挙げられる。プロセッサ制御レジスタ３２０は実行モード・ワード３２２を記憶する。実行モード・ワード３２２は、プロセッサが分離命令モードに構成されているかどうかを表すビットを記憶する。一実施形態では、実行モード・ワードは、分離実行モードに、または分離実行モードから制御を移す命令のみがアクセスすることができる。これらの命令の例としては、ｉｓｏ＿ｉｎｉｔ、ｉｓｏ＿ｅｎｔｅｒ、およびｉｓｏ＿ｅｘｉｔ命令が挙げられる。
【００４４】
論理プロセッサ・レジスタ３３０は論理プロセッサ値３３２を記憶する。論理プロセッサ値３３２は、分離実行モードに入る論理プロセッサの数を表す。物理プロセッサはいくつかの論理プロセッサを有することができ、各論理プロセッサは１つの論理プロセッサに対応する。論理プロセッサ値３３２は最初はゼロである。論理プロセッサが論理実行モードに入ると、論理プロセッサ値３３２は１だけ増加する。論理プロセッサが分離実行モードから出ると、論理プロセッサ値は１だけ減少する。論理プロセッサ値３３２は、分離実行モードでの論理プロセッサの数を制限するために最大値を有する。論理プロセッサが出て、論理プロセッサ値３３２がゼロに減少すると、この論理プロセッサは、自分が分離実行モードから引き下る最後の論理プロセッサであることを知る。
【００４５】
フレーム・レジスタ・セット３５０は、フレームに対応するいくつかの値を記憶する。フレームは、分離実行モードからの出口、または分離実行モードへの入口がある場合に記憶または復元する必要があるいくつかのレジスタ値を含む。一般に、これらのフレーム値は、プロセッサの状態を追跡し続けるために必要な値である。一実施形態では、プロセッサはペンティアム・タイプである。フレーム情報には、制御レジスタ３（ＣＲ３）、制御レジスタ４（ＣＲ４）、割込み記述子タスク・レジスタ（ＩＤＴＲ）ベース、ＩＤＴＲリミットの値、グローバル記述子タスク・レジスタ（ＧＤＴＲ）ベース値、ＧＤＴＲリミット値、タスク・レジスタ（ＴＲ）値、拡張命令ポインタ（ＥＩＰ）、コード・セグメント（ＣＳ）値、ＣＳ記述子、拡張フラグ（ＥＦＬＡＧＳ）、拡張スタック・ポインタ（ＥＳＰ）、スタック・セグメント（ＳＳ）値、およびＳＳ記述子が含まれる。分離実行モードからの出口または分離実行モードへの入口に対応するフレームを、それぞれ、出口フレームまたは入口フレームと呼ぶ。
【００４６】
出口フレーム・レジスタ３６０は出口アドレス３６２を記憶する。出口アドレス３６２は出口フレームの物理アドレスである。入口フレーム・レジスタ３７０は入口アドレス３７２を記憶する。入口アドレス３７２は入口フレームの物理アドレスである。ロード・レジスタ３８０はプロセッサ・ナブ・ローダ・アドレス３８２を記憶する。プロセッサ・ナブ・ローダ・アドレス３８２はプロセッサ・ナブ・ローダ５２の物理アドレスである。
【００４７】
図４は、本発明の一実施形態による、図２に示す外部記憶域２３４を示す図である。外部記憶域２３４は、ＭＣＨ記憶域４１０およびＩＣＨ記憶域４５０を含む。
【００４８】
ＭＣＨ記憶域４１０はＭＣＨ中にあり、図１Ｃに示す分離域制御１３５の一部である。ＭＣＨ記憶域４１０は、ＭＣＨ論理プロセッサ・レジスタ４２０、ＭＣＨマスク・レジスタ４３０、およびＭＣＨベース・レジスタ４４０を含む。ＭＣＨ論理プロセッサ・レジスタ４２０は、ＭＣＨ論理プロセッサ値４２２を記憶する。ＭＣＨ論理プロセッサ値４２２は、図１Ｃに示すように、システム・メモリ１４０中の分離域７０を使用するように構成された論理プロセッサの数を表す。ＭＣＨマスク・レジスタ４３０およびベース・レジスタ４４０は、それぞれ、ＭＣＨマスク値４３２およびＭＣＨベース値４４２を記憶する。ＭＣＨマスク値４３２およびＭＣＨベース値４４２は、分離域７０を定義するために使用される。
【００４９】
ＩＣＨ記憶域４５０は、図１Ｃに示すＩＣＨ中にある。ＩＣＨ記憶域４５０は、ＩＣＨ論理プロセッサ・レジスタ４６０、ＩＣＨマスク・レジスタ４７０、およびＩＣＨベース・レジスタ４８０を含む。ＩＣＨ論理プロセッサ・レジスタ４６０は、ＩＣＨ論理プロセッサ値４６２を記憶する。ＩＣＨ論理プロセッサ値４６２は、図１Ｃに示すように、システム・メモリ１４０中の分離域７０を使用するように構成された論理プロセッサの数を表す。ＩＣＨマスク・レジスタ４７０およびベース・レジスタ４８０は、それぞれ、ＩＣＨマスク値４７２およびＩＣＨベース値４８２を記憶する。ＩＣＨマスク値４７２およびＩＣＨベース値４８２は、分離域７０を定義するために使用される。ＩＣＨ論理プロセッサ値４６２は、別個の異なる物理プロセッサを含めて、レジスタ中のすべての論理プロセッサを指す。しかし、ＭＣＨ論理プロセッサ値４２２は、対応するＭＣＨが直接、結合されている物理プロセッサ中の論理プロセッサのみを指す。
【００５０】
図５は、本発明の一実施形態による、ｉｓｏ＿ｉｎｉｔ命令を実行するプロセス５００を示す流れ図である。
【００５１】
開始すると、プロセス５００は初期化の準備をする（ブロック５１０）。この準備には、保護された非ページング・モードの検証、および分離域のマスク値およびベース値の妥当性の検証を含めることができる。次いで、プロセス５００は、分離域が作成されているかどうかを判定する（５２０）。ＹＥＳの場合は、プロセス５００はブロック５４０に進む。そうでない場合は、プロセス５００は、分離域を作成する（ブロック５３０）。作成のプロセスは図６Ａに示す。
【００５２】
プロセス５００は、次いで、ＭＣＨレジスタおよびプロセッサ・レジスタに範囲を設定する（ブロック５４０）。これには、プロセッサのマスク・レジスタとベース・レジスタ、およびＭＣＨのマスク・レジスタとベース・レジスタの更新が含まれる。次に、プロセス５００は、ローダ・レジスタ中のプロセッサ・ナブ・ローダ・アドレスを使って、ＩＣＨから分離域中にプロセッサ・ナブ・ローダをコピーする（ブロック５５０）。
【００５３】
次いで、プロセス５００は、分離域をプラットフォーム用に初期化する（ブロック５６０）。次いで、プロセス５００は、プロセッサ・ナブのロケーション、すなわち物理アドレスを得る（ブロック５７０）。次いで、プロセス５００は、プロセッサ・ナブ・ローダ・コードを実行することによって、制御をプロセッサ・ナブ・ローダに移す（ブロック５８０）。次いでプロセス５００は終了する。
【００５４】
図６Ａは、本発明の一実施形態による、ｉｓｏ＿ｉｎｉｔ命令中の作成機能を実行するプロセス５３０を示す流れ図である。
【００５５】
開始すると、プロセス５３０は、プロセス・ナブ・ローダのサイズが、マスク値によって定義された分離域の範囲よりも少ない、または同等であるかどうかを判定する（ブロック６１０）。そうでない場合は、分離域がプロセッサ・ナブ・ローダ全体を記憶するのに十分な大きさではないため、プロセス５３０は失敗または障害状態を生成する（ブロック６１５）。分離域の範囲よりも少ない、または同等である場合には、プロセス５３０は、実行モード・ワード中に該当するビットを設定することにより、プロセッサを分離実行モードに構成する（ブロック６２０）。
【００５６】
次いで、プロセス５３０は、プロセッサが、分離域を作成した最初のプロセッサであるかどうかを判定する（ブロック６２５）。そうでない場合は、プロセス５３０は、プロセッサ・ナブが初期化されているかどうかを判定する（ブロック６３０）。プロセッサ・ナブが初期化されていない場合は、プロセス５３０は失敗または障害状態を生成する（ブロック６３５）。プロセッサ・ナブが適切に初期化されている場合は、プロセス５３０は、マスク値およびベース値を含むグローバル・プロセッサ設定を読み込む（ブロック６４０）。次いで、プロセス５３０は、グローバル設定をプロセッサの設定に転送することにより、プロセッサの設定を初期化する（ブロック６４５）。プロセス５３０は、次いで、終了するか、またはメイン・プロセスに戻る。
【００５７】
プロセッサが分離域を作成した最初のプロセッサである場合、プロセス５３０は、モードが初期化を待っているかどうかを判定する（ブロック６５０）。これは、ＩＣＨからステータス値を読み込むことによって達成される。モードが初期化を待っていないことをステータスが示す場合には、プロセス５３０は失敗または障害状態を生成する（ブロック６５５）。そうでない場合には、プロセス５３０は、すでに分離域があるかどうかを判定する（ブロック６６０）。すでに分離域がある場合には、プロセス５３０はブロック６７０に進む。分離域がない場合には、プロセス５３０は、設定（例えば、ベース値およびマスク値）をＩＣＨに保存する（ブロック６６５）。次いで、プロセス５３０は、設定（例えば、ベース値およびマスク値）をＩＣＨから得る（ブロック６７０）。プロセス５３０は、次いで、終了するか、またはメイン・プロセスに戻る。
【００５８】
図６Ｂは、本発明の一実施形態による、ｉｓｏ＿ｉｎｉｔ命令中のプロセッサ・ナブ・ローダ機能を実行するプロセス５８０を示す流れ図である。
【００５９】
開始すると、プロセス５８０は、プロセッサ・ナブ・ローダ中のプロセッサ・ナブ物理アドレスを使って、プロセッサ・ナブを分離域中にコピーする（ブロック６７５）。次いで、プロセス５８０は、プロセッサ・ナブ・ローダ中の公開キーを使って、プロセッサ・ナブの署名を検証する（ブロック６８０）。次に、プロセス５８０は、その署名が検証されたかどうかを判定する（ブロック６８５）。検証されなかった場合には、プロセス５８０は失敗または障害状態を生成する（ブロック６９０）。検証された場合は、プロセス５８０は、プロセッサ・ナブを実行する（ブロック６９５）。プロセス５８０は、次いで終了するか、またはメイン・プロセスに戻る。
【００６０】
図７は、本発明の一実施形態によるｉｓｏ＿ｃｌｏｓｅ命令を実行するプロセス７００を示す流れ図である。
【００６１】
開始すると、プロセス７００は、クローズの準備をする（ブロック７１０）。この準備には、出口フレームを取得すること、および現在のＩＤＴＲリミットを保存することを含めることができる。次いで、プロセス７００は、分離実行モード・ワードを構成することにより分離実行モードを設定する（ブロック７２０）。次に、プロセス７００は、プロセッサの入口フレームへのポインタをクリアすることにより、プロセッサの論理プロセッサを取り除く（ブロック７３０）。
【００６２】
次いで、プロセス７００は、これが、分離実行モードから引き下る最後の論理プロセッサであるかどうかを判定する（ブロック７４０）。そうでない場合は、プロセス７００はブロック７６０に進む。そうである場合は、プロセス７００は、プロセッサの分離設定値（例えば、ベース値およびマスク値）をリセットする（ブロック７５０）。次いで、プロセス７００は、これが分離実行モードから引き下る最後のプロセッサであるかどうかを判定する（ブロック７６０）。そうでない場合は、プロセス７００はブロック７８０に進む。そうである場合は、プロセス７００は、ＭＣＨおよびＩＣＨ中の分離設定をリセットする（ブロック７７０）。次いで、プロセス７００は、実行モード・ワードを書き込むことによって、分離実行モードをクリアする（ブロック７８０）。プロセッサ７００は次いで終了する。
【００６３】
図８Ａは、本発明の一実施形態によるｉｓｏ＿ｅｎｔｅｒ命令を実行するプロセス８００を示す流れ図である。
【００６４】
開始すると、プロセス８００は、入口の準備をする（ブロック８１０）。この準備には、フレーム・アドレスの検証、および現在の制御レジスタおよびＩＤＴＲリミットを保存することを含めることができる。次いで、プロセス８００は、実行モード・ワードを構成することによって、分離実行モードを設定する（ブロック８２０）。次に、プロセス８００は、フレーム・レジスタ・セットの内容を出口フレーム中に記憶する（ブロック８３０）。出口フレーム・レジスタ中の出口アドレスが出口フレームを指す。次いで、プロセス８００は、入口フレームをフレーム・レジスタ・セット中にロードする（ブロック８４０）。入口フレーム・レジスタ中の入口アドレスが、入口フレームを指す。次いで、プロセス８００は終了する。
【００６５】
図８Ｂは、本発明の一実施形態による、ｉｓｏ＿ｅｘｉｔ命令を実行するプロセス８５０を示す流れ図である。
【００６６】
開始すると、プロセス８５０は出口の準備をする（ブロック８６０）。この準備には、フレーム・アドレスを検証すること、およびＩＤＴＲリミットをクリアすることを含めて、フレームの復元の前にマシン・チェックがある場合には正しいハンドラへのディスパッチが確実に行われるようにすることができる。次いで、プロセス８５０は、出口フレームをフレーム・レジスタ・セット中にロードする（ブロック８７０）。出口フレーム・レジスタ中の出口アドレスが、出口フレームを指す。次いで、プロセス８５０は終了する。
【００６７】
図９Ａは、本発明の一実施形態による、ｉｓｏ＿ｃｏｎｆｉｇ＿ｒｅａｄ命令を実行するプロセス９００を示す流れ図である。
【００６８】
開始すると、プロセス９００は構成記憶域を読み込む準備をする（ブロック９１０）。この準備には、構成記憶域のアドレスを検証することを含めることができる。次いで、プロセス９００は、パラメータ記憶域に対応する構成記憶域の内容を返す（ブロック９２０）。次いで、プロセス９００は終了する。
【００６９】
図９Ｂは、本発明の一実施形態による、ｉｓｏ＿ｃｏｎｆｉｇ＿ｗｒｉｔｅ命令を実行するプロセス９５０を示す流れ図である。
【００７０】
開始すると、プロセス９５０は、構成記憶域への書込みを準備する（ブロック９６０）。この準備には、構成記憶域のアドレスを検証することを含めることができる。次いで、プロセス９５０は、パラメータ記憶域に対応する構成記憶域の内容を書き込む（ブロック９７０）。次いで、プロセス９５０は終了する。
【００７１】
本発明を例示的実施形態を参照しながら説明してきたが、この説明は、限定的な意味をもつものとして解釈されることを意図したものではない。本発明のその他の実施形態と同様に、例示的実施形態のさまざまな変更形態が、本発明が関係する当分野の技術者には明らかであろうが、それらは、本発明の趣旨および範囲内に含まれるものとみなされる。
【図面の簡単な説明】
【図１Ａ】  本発明の一実施形態による論理動作アーキテクチャを示す図である。
【図１Ｂ】  本発明の一実施形態によるオペレーティング・システム中の様々なエレメントおよびプロセッサのアクセス可能性を示す図である。
【図１Ｃ】  本発明の一実施形態を実施することができるコンピュータ・システムを示す図である。
【図２】  本発明の一実施形態による分離命令のためのアーキテクチャを示す図である。
【図３】  本発明の一実施形態による内部記憶域を示す図である。
【図４】  本発明の一実施形態による外部記憶域を示す図である。
【図５】  本発明の一実施形態による、ｉｓｏ＿ｉｎｉｔ命令を実行するプロセスを示す流れ図である。
【図６Ａ】  本発明の一実施形態による、ｉｓｏ＿ｉｎｉｔ命令中の作成機能を実行するプロセスを示す流れ図である。
【図６Ｂ】  本発明の一実施形態による、ｉｓｏ＿ｉｎｉｔ命令中のプロセッサ・ナブ・ローダ機能を実行するプロセスを示す流れ図である。
【図７】  本発明の一実施形態によるｉｓｏ＿ｃｌｏｓｅ命令を実行するプロセスを示す流れ図である。
【図８Ａ】  本発明の一実施形態によるｉｓｏ＿ｅｎｔｅｒ命令を実行するプロセスを示す流れ図である。
【図８Ｂ】  図８Ｂは、本発明の一実施形態による、ｉｓｏ＿ｅｘｉｔ命令を実行するプロセスを示す流れ図である。
【図９Ａ】  本発明の一実施形態による、ｉｓｏ＿ｃｏｎｆｉｇ＿ｒｅａｄ命令を実行するプロセスを示す流れ図である。
【図９Ｂ】  本発明の一実施形態による、ｉｓｏ＿ｃｏｎｆｉｇ＿ｗｒｉｔｅ命令を実行するプロセスを示す流れ図である。
【図１Ａ】
0004719398.tif 000002
【図１Ｂ】
0004719398.tif 000003
【図１Ｃ】
0004719398.tif 000004
【図２】
0004719398.tif 000005
【図３】
0004719398.tif 000006
【図４】
0004719398.tif 000007
【図５】
0004719398.tif 000008
【図６Ａ】
0004719398.tif 000009
【図６Ｂ】
0004719398.tif 000010
【図７】
0004719398.tif 000011
【図８Ａ】
0004719398.tif 000012
【図８Ｂ】
0004719398.tif 000013
【図９Ａ】
0004719398.tif 000014
【図９Ｂ】
0004719398.tif 000015