(57)【要約】カスタム実行環境（ＣＥ２）を実施するための方法および技術、関連するローダ、およびＣＥ２をサポートするためのオペレーティング・システムが提供されている。一実施形態によれば、コンピュータ・システムの、存在するのであるならば、どのシステム資源が、コンピュータ・システムの常駐のオペレーティング・システムの制御の下に留まるべきか、ならびにどのシステム資源が、１つまたは複数のＣＥ２の制御の下に配置されるべきかについての決定がなされる。次に、システム資源の１つまたは複数のパーティションを１つまたは複数のＣＥ２に関連させることによって、システム資源は、常駐のオペレーティング・システムおよび１つまたは複数のＣＥ２の間でパーティショニングされる。一実施形態によれば、ＣＥ２は、アプリケーションのコードおよびデータ・セクションと、システム・サービスの組のコードおよびデータ・セクションとを含む。システム・サービスの組は、並列保護アーキテクチャを実施する１つまたは複数のプロセッサを含むコンピュータ・システムのハードウェア資源の組の直接的かつ完全制御を行う。
2007524896.tif 000002
【特許請求の範囲】
【請求項１】
カスタマイズされた実行エンジン（ＣＥ２）であって、
アプリケーションのコードおよびデータ・セクションと、
システム・サービスの組のコードおよびデータ・セクションと
を備え、前記システム・サービスの組は、並列保護アーキテクチャを実施する１つまたは複数のプロセッサを含むコンピュータ・システムのハードウェア資源の組の直接的かつ完全な制御を有する、カスタマイズされた実行エンジン（ＣＥ２）。
【請求項２】
請求項１に記載のＣＥ２であって、従来のオペレーティング・システムによってサポートされていない能力を含むコンピュータ・システムの能力を完全に使用するＣＥ２。
【請求項３】
請求項１に記載のＣＥ２において、前記システム・サービスの組は、前記アプリケーションによって必要とされるサービスのみに厳密に限定される、ＣＥ２。
【請求項４】
請求項１に記載のＣＥ２において、前記アプリケーションは、前記ＣＥ２によって制御される各プロセッサにおいて単一スレッドの実行のみを利用する制御フロー構造を実施する、ＣＥ２。
【請求項５】
請求項１に記載のＣＥ２において、前記システム・サービスの組によって、前記アプリケーションが、システム・エラーの後で再生して継続できる、ＣＥ２。
【請求項６】
請求項１に記載のＣＥ２において、前記アプリケーションおよび前記システム・サービスの組は非移植性である、ＣＥ２。
【請求項７】
請求項１に記載のＣＥ２において、前記システム・サービスの組は多目的オペレーティング・システムの抽象化を利用しない、ＣＥ２。
【請求項８】
請求項１に記載のＣＥ２において、前記システム・サービスの組は、多目的オペレーティング・システムによって用いられるものとは全く異なる資源管理ストラテジを用いる、ＣＥ２。
【請求項９】
方法であって、
カスタマイズされた実行環境（ＣＥ２）ローダが、並列保護アーキテクチャを実施する１つまたは複数のプロセッサを用いて、コンピュータ・システムの物理メモリの利用可能な物理ページを、前記物理メモリのマップに基づいて可能な最大のページに組織化すること、前記コンピュータ・システムのプロセッサによってサポートされる所定の複数のページ・サイズを用いること、
を備える方法。
【請求項１０】
請求項９に記載の方法であって、更に、
ＣＥ２および該ＣＥ２のアプリケーション要素によって用いられる仮想ページの数を低減することによって、ならびに前記所定の複数のページ・サイズのページを前記ＣＥ２および前記アプリケーションのセクションに、該セクションのメモリ要求に基づいて、かつ利用可能な物理ページの組織に基づいて割り当てることによって、変換索引バッファ（ＴＬＢ）ミスを実質的に低減すること、
必要に応じて必要以上に大きなページを再分割すること、
を備える方法。
【請求項１１】
請求項１０に記載の方法であって、更に、前記割り当てられたページをＴＬＢエントリーに固定することによってＴＬＢミスを除去することを備える方法。
【請求項１２】
請求項９に記載の方法であって、更に、前記セクションを複数のコンパートメントにグループ分けすることを備え、該複数のコンパートメントのそれぞれのページは、特権レベル、アクセス権、保護識別子、および他の保護キー・レジスタ制御ビットによって保護される、方法。
【請求項１３】
方法であって、
カスタマイズされた実行エンジン（ＣＥ２）ローダが、
コンピュータ・システムのファームウェアに関連する１つまたは複数のデジタル署名の妥当性を確認し、
前記ＣＥ２ローダに関連する１つまたは複数のデジタル署名の妥当性を確認し、かつ
前記妥当性の確認、および前記ＣＥ２のコードおよびデータ・セクションに関連する１つまたは複数のデジタル署名の妥当性確認の終了が成功した後に、前記ＣＥ２のシステム・サービスおよびアプリケーションを開始すること、
によって、信頼の新しいルートを確立し、信頼の連鎖を新しいルートから前記ＣＥ２へ拡張すること、
を備える方法。
【請求項１４】
請求項１３に記載の方法において、前記ＣＥ２およびアプリケーションが実行されるコンピュータ・システムの各プロセッサは、並列保護アーキテクチャを実施する、方法。
【請求項１５】
請求項１３に記載の方法であって、更に、
前記コンピュータ・システム内にロードされて開始された後に、前記ＣＥ２ローダの第１の部分が、前記ファームウェアに関連する前記１つまたは複数のデジタル署名の妥当性確認と、前記１つまたは複数のデジタル署名のうちの、前記ＣＥ２ローダの前記第１の部分に関連する第１のデジタル署名の妥当性確認とを開始すること、
前記ファームウェアに関連する前記デジタル署名と前記第１のデジタル署名とが妥当であると分かった場合に、前記ＣＥ２ローダの前記第１の部分がさらなる妥当性確認を開始すること、
さらなる妥当性確認が行われた後に、前記ＣＥ２ローダの前記第１の部分が、
前記ＣＥ２ローダの第２の部分をロードするとともに、
前記１つまたは複数のデジタル署名のうちの、前記ＣＥ２ローダの前記第２の部分に関連する第２のデジタル署名の妥当性を確認すること、
前記第２のデジタル署名が妥当であると分かった場合に、制御を前記ＣＥ２ローダの前記第２の部分へ移すこと、
を備える方法。
【請求項１６】
請求項１５に記載の方法であって、更に、
前記さらなる妥当性確認を開始する前に、前記ＣＥ２ローダの前記第１の部分が、前記コンピュータ・システムとは独立に機能する別個のプラグ・イン・ボードから乱数を受け取ること、を備え、
前記さらなる妥当性確認は、前記さらなる妥当性確認および前記ＣＥ２ローダの前記第１の部分によって返される前記乱数の妥当性確認の開始が被る遅延についての前記別個のプラグ・イン・ボードによる妥当性確認を備える、
方法。
【請求項１７】
請求項１５に記載の方法において、
前記ファームウェアの前記１つまたは複数のデジタル署名および前記第１のデジタル署名の妥当性は、前記コンピュータ・システムとは独立して機能する別個のプラグ・イン・ボードによって確認される、方法。
【請求項１８】
請求項１５に記載の方法において、
前記ＣＥ２ローダの前記第２の部分をロードすることは、前記ＣＥ２ローダの前記第２の部分を、前記コンピュータ・システムのメモリにおける固定されたアドレスでロードして、前記ＣＥ２ローダの前記第１の部分による前記第２のデジタル署名の妥当性確認を容易にすることを備える、方法。
【請求項１９】
方法であって、
カスタマイズされた実行環境（ＣＥ２）が、前記ＣＥ２が完全に制御するコンピュータ・システムの各プロセッサ上に、前記ＣＥ２内においてアプリケーションとシステム・サービスの組とを実行するための単一スレッドのみを提供すること、
前記アプリケーションが、通常のアプリケーション・タスク、および前記アプリケーションの外部のイベントの結果として発生するタスクの両方を、各プロセッサ上の前記単一スレッドのみを用いて実行すること、
を備える方法。
【請求項２０】
請求項１９に記載の方法であって、更に、
割り込みに応答して、割り込み制御サービスが、前記単一スレッドの制御を受け取ること、前記単一スレッドの制御が、最初は、前記割り込みに対応する１つまたは複数の割り込みサービス・ルーチン（ＩＳＲ）となり、後に、１つまたは複数の延期された割り込みサービス・ルーチン（ＤＩＳＲ）となるように、状態を設定することを備える方法。
【請求項２１】
請求項１９に記載の方法であって、更に、
Ｉ／Ｏドライバの最小の組のＩ／Ｏドライバが、仮想アドレスを用いることによってのみ動作し、Ｉ／Ｏ動作を行うために必要なステップを指定するエンコードされた指令を生成すること、
前記Ｉ／Ｏドライバが、プラットフォーム制御サービスを呼び出して、Ｉ／Ｏデバイスを制御すること、
を備え、前記プラットフォーム制御サービスは、前記Ｉ／Ｏドライバが供給する前記エンコードされた指令に従うことによって物理アドレスを用いる、方法。
【請求項２２】
方法であって、
呼び出し元が、カスタマイズされた実行環境（ＣＥ２）内で実行すること、
前記呼び出し元が、前記ＣＥ２のシステム・サービス呼び出しを呼び出すこと、
前記システム・サービス呼び出しが、アプリケーションによって前記システム・サービス呼び出しに関連する呼び出し戻りアドレスが検証されることを引き起こすこと、
を備える方法。
【請求項２３】
請求項２２に記載の方法において、
前記呼び出し戻りアドレスの検証は、前記ＣＥ２の中間のシステム・サービスを介して行われる、方法。
【請求項２４】
請求項２２に記載の方法において、
前記呼び出し戻りアドレスを検証することは、前記ＣＥ２およびアプリケーションのローディングの間に初期化される１つまたは複数のデータ構造を参照して行われる、方法。
【請求項２５】
請求項２４に記載の方法において、
前記１つまたは複数のデータ構造における第１のデータ構造は、呼び出しテーブルを備え、前記１つまたは複数のデータ構造における第２のデータ構造は、経路テーブルを備える、方法。
【請求項２６】
請求項２５に記載の方法において、
前記経路テーブルは、１つまたは複数の乱数を特定の箇所に含み、前記呼び出しテーブルは、前記呼び出し戻りアドレス、ＣＥ２ローダによって供給される１つまたは複数の乱数、特定の経路テーブル・エントリー箇所、および前記システム・サービス呼び出しの間に実行されるべき前記経路テーブルに対する変更が少しでも存在するのであるならば、その変更を示す処置パラメータ、を含む、方法。
【請求項２７】
請求項２６に記載の方法であって、更に、
前記呼び出しテーブル内の前記１つまたは複数の乱数における第１の乱数を、前記経路テーブル内の特定の箇所での前記１つまたは複数の乱数における第２の乱数と比較することによって、前記呼び出し元へのフロー経路内のバック・ドミネーティング命令を通過した後で、前記呼び出し元のフローが呼び出し点に到達していたことを検証すること、
を備える方法。
【請求項２８】
請求項２５に記載の方法であって、更に、
前記バック・ドミネーティング命令に関連する乱数を検証することを備える方法。
【請求項２９】
請求項２２に記載の方法において、
前記呼び出し元は、複数の特権レベルのうちの第１の特権レベルで実行し、呼び出されたシステム・サービスは、前記複数の特権レベルのうちの同一か、あるいはより高い特権レベルで実行する、方法。
【請求項３０】
請求項２２に記載の方法であって、更に、
Ｉ／Ｏドライバの最小の組のＩ／Ｏドライバが、仮想アドレスを用いることによってのみ動作し、Ｉ／Ｏ動作を行うために必要なステップを指定するエンコードされた指令を生成すること、
前記Ｉ／Ｏドライバが、プラットフォーム制御サービスを呼び出して、Ｉ／Ｏデバイスを制御すること、
を備え、前記プラットフォーム制御サービスは、前記Ｉ／Ｏドライバが供給するエンコードされた指令に従うことによって物理アドレスを用いる、方法。
【請求項３１】
方法であって、
カスタマイズされた実行環境（ＣＥ２）が、特定のアプリケーションに対するＩ／Ｏドライバの最小の組を提供すること、
前記Ｉ／Ｏドライバの最小の組のＩ／Ｏドライバが、仮想アドレスを用いることによってのみ動作し、Ｉ／Ｏ動作を行うために必要なステップを指定するエンコードされた指令を生成すること、
前記Ｉ／Ｏドライバが、プラットフォーム制御サービスを呼び出して、Ｉ／Ｏデバイスを制御すること、
を備え、前記プラットフォーム制御サービスは、Ｉ／Ｏドライバが供給するエンコードされた指令に従うことによって物理アドレスを用いる、方法。
【請求項３２】
請求項３１に記載の方法において、
前記エンコードされた指令は、Ｉ／Ｏコントローラ・アドレスを、１つまたは複数の前記プラットフォーム制御サービスのみによってアクセス可能なコンパートメント内に存在するＩ／Ｏコントローラ記述子を通して、間接的に指定する、方法。
【請求項３３】
方法であって、
コンピュータ・システムの、存在するのであるならば、どのシステム資源が、前記コンピュータ・システムの常駐のオペレーティング・システムの制御の下に留まるべきか、ならびに、どのシステム資源が、前記コンピュータ・システム内に確立されるべき１つまたは複数のカスタマイズされた実行環境（ＣＥ２）の制御の下に配置されるべきか、を決定すること、
前記システム資源の１つまたは複数のパーティションを前記１つまたは複数のＣＥ２に関連させることによって、前記システム資源を前記常駐のオペレーティング・システムおよび前記１つまたは複数のＣＥ２間でパーティショニングすること、
を備える方法。
【請求項３４】
請求項３３に記載の方法において、
前記システム資源をパーティショニングすることは、前記常駐のオペレーティング・システムが、前記コンピュータ・システムの１つまたは複数のプロセッサによって提供されるハードウェア・ベースの隔離技術を用いて、前記１つまたは複数のパーティションを構成することを備える、方法。
【請求項３５】
請求項３４に記載の方法であって、更に、
前記常駐のオペレーティング・システムが休止状態に進行することを備える方法。
【請求項３６】
請求項３３に記載の方法において、
前記システム資源をパーティショニングすることは、前記オペレーティング・システムが、安全なプラットフォーム・インターフェースを用いて、前記１つまたは複数のパーティションを構成することを備える、方法。
【請求項３７】
請求項３６に記載の方法であって、更に、
前記常駐のオペレーティング・システムが、前記１つまたは複数のパーティションの完全制御を保持し、前記システム資源をパーティショニングした後に動作状態に留まることを備える方法。
【請求項３８】
請求項３３に記載の方法において、
前記システム資源をパーティショニングすることは、システム管理者が、前記コンピュータ・システムによって提供されるハードウェア・パーティショニング能力を用いて、前記１つまたは複数のパーティションを構成することを備える、方法。
【請求項３９】
請求項３８に記載の方法であって、更に、
前記常駐のオペレーティング・システムおよび前記１つまたは複数のＣＥ２を、それらの個別に構成されたパーティション内において別個に起動することを備える方法。
【請求項４０】
請求項３３に記載の方法であって、更に、
前記１つまたは複数のＣＥ２におけるＣＥ２が、前記常駐のオペレーティング・システムによってサポートされていない前記コンピュータ・システムの能力を使用することを備える方法。
【請求項４１】
請求項３３に記載の方法において、
前記１つまたは複数のＣＥ２におけるＣＥ２は、静的にリンクされたシステム・コードおよびデータ・モジュールと、アプリケーション・コードおよびデータ・モジュールとの両方を備える、方法。
【請求項４２】
請求項３３に記載の方法において、
前記１つまたは複数のＣＥ２におけるＣＥ２の機能上の能力は、所定のアプリケーションの小さな組によって必要とされるサービスのみに厳密に限定される、方法。
【請求項４３】
請求項３３に記載の方法において、
前記１つまたは複数のＣＥ２におけるＣＥ２内でのアプリケーションは、前記ＣＥ２によって制御されるプロセッサにおける単一スレッドの実行に限定される、方法。
【請求項４４】
請求項３３に記載の方法において、
前記１つまたは複数のＣＥ２におけるＣＥ２は、前記常駐のオペレーティング・システムによってサポートされていないハードウェア能力を利用する、方法。
【請求項４５】
請求項３３に記載の方法において、
前記１つまたは複数のＣＥ２におけるＣＥ２内でのアプリケーションに提供されるサービスによって、前記アプリケーションはシステム・エラーから回復して継続することができる、方法。
【請求項４６】
請求項３３に記載の方法において、
前記１つまたは複数のＣＥ２におけるＣＥ２は非移植性である、方法。
【請求項４７】
請求項３３に記載の方法において、
前記１つまたは複数のＣＥ２におけるＣＥ２内でのアプリケーションに提供されるサービスは、多目的オペレーティング・システム抽象化を利用しない、方法。
【請求項４８】
請求項３３に記載の方法において、
ＣＥ２内でのサービスは、多目的オペレーティング・システムによって用いられるものとは全く異なる資源管理ストラテジを用いる、方法。
【請求項４９】
方法であって、
コンピュータ・システムのオペレーティング・システムが、カスタマイズされた実行環境（ＣＥ２）に関する情報を受け取ること、
前記オペレーティング・システムが、１つまたは複数のプロセッサおよび物理メモリの１つまたは複数の範囲を含む前記コンピュータ・システムのシステム資源をパーティショニングすることであって、
（ｉ）前記システム資源のうちで、存在するのであるならば、どのシステム資源が、前記オペレーティング・システムの制御の下に留まるべきか、ならびに、前記システム資源のうちのどのシステム資源が、前記ＣＥ２の制御の下に配置されるべきかを決定すること、
（ｉｉ）前記システム資源の第１のパーティションを前記ＣＥ２に関連させること、
によって、システム資源をパーティショニングすること、
前記オペレーティング・システムが、前記システム資源の前記第１のパーティションの完全制御を前記ＣＥ２に引き渡すこと、
を備える方法。
【請求項５０】
請求項４９に記載の方法において、
前記ＣＥ２に関する情報は、パーティション資源に対する指令および関連するパーティション記述子を含み、該パーティション記述子は、前記ＣＥ２が必要とする資源を識別し、パーティションをどのように構成すべきかを示す、方法。
【請求項５１】
請求項４９に記載の方法において、
前記システム資源の第１のパーティションを前記ＣＥ２に関連させることは、前記第１のパーティション内のシステム資源部分を前記オペレーティング・システムから分離すること、割り込みを再構成することを備える、方法。
【請求項５２】
請求項４９に記載の方法であって、更に、
前記オペレーティング・システムが、前記システム資源における第２のパーティションの完全制御を保持すること、
ハードウェア隔離を用いることによって、前記システム資源における前記第２のパーティションを隔離して、前記オペレーティング・システムに関連する前記システム資源を前記ＣＥ２から保護すること、
を備える方法。
【請求項５３】
請求項５２に記載の方法であって、更に、
ハードウェア隔離を用いることによって、前記システム資源における前記第１のパーティションを隔離して、前記ＣＥ２に関連する前記システム資源を前記オペレーティング・システムから保護すること備える方法。
【請求項５４】
請求項５２に記載の方法において、
前記ハードウェア隔離は、前記システム資源の前記第１のパーティションまたは前記第２のパーティション内の仮想的にアドレス指定されたメモリの１つまたは複数の範囲上の１つまたは複数の動作に対する保護キーの１つまたは複数の互いに素な集合を確立することを備える、方法。
【請求項５５】
請求項５２に記載の方法において
前記ハードウェア隔離は、前記システム資源の前記第１のパーティションまたは前記第２のパーティション内の仮想的にアドレス指定されたメモリの１つまたは複数の範囲上の１つまたは複数の動作に対する領域識別子の１つまたは複数の互いに素な集合を確立することを備える、方法。
【請求項５６】
請求項５２に記載の方法において、
前記ハードウェア隔離は、前記システム資源の前記第２のパーティション内のメモリの１つまたは複数の範囲を前記第２のパーティション内のプロセッサに関連させること、前記システム資源の前記第１のパーティション内のメモリの１つまたは複数の範囲を前記第１のパーティション内のプロセッサに関連させること、を備える、方法。
【請求項５７】
請求項５６に記載の方法において、
前記システム資源の前記第２のパーティション内のメモリの１つまたは複数の範囲を前記第２のパーティション内のプロセッサに関連させること、ならびに、前記システム資源の前記第１のパーティション内のメモリの１つまたは複数の範囲を前記第１のパーティション内のプロセッサに関連させることは、領域識別子ベースのメモリ・パーティショニング・メカニズムを用いることを備える、方法。
【請求項５８】
請求項４９に記載の方法であって、更に、
前記ＣＥ２が終了しているという表示を受け取ること、
前記オペレーティング・システムが、前記システム資源の前記第１のパーティションの制御を担うこと、
を備える方法。
【請求項５９】
システムであって、
常駐のオペレーティング・システムならびに１つまたは複数のカスタム実行環境（ＣＥ２）に関連するカスタマイズされた制御環境およびサービスのソフトウェア・イメージが記憶された１つまたは複数の記憶装置と、
前記１つまたは複数の記憶装置に結合される１つまたは複数のプロセッサであって、前記常駐のオペレーティング・システムならびに前記カスタマイズされた制御環境およびサービスを実行する１つまたは複数のプロセッサと、を備え、
前記システムの前記１つまたは複数のプロセッサおよびメモリを含む前記システムの資源のうちで、存在するのであるならば、どの部分が、前記常駐のオペレーティング・システムの制御の下に留まるべきか、ならびに前記資源のどの部分が前記１つまたは複数のＣＥ２の制御の下に配置されるべきかについての決定がなされ、
前記資源の１つまたは複数の部分を前記１つまたは複数のＣＥ２に関連させることによって、前記システム資源は、前記常駐のオペレーティング・システムおよび前記１つまたは複数のＣＥ２間でパーティショニングされる、システム。
【請求項６０】
サーバであって、
オペレーティング・システムならびに同時カスタム実行環境（Ｃ２Ｅ２）に関連するカスタマイズされた制御環境およびサービスのソフトウェア・イメージが記憶された１つまたは複数の記憶装置であって、前記オペレーティング・システムは、前記オペレーティング・システムが使用および制御するためのシステム資源の第１のパーティションおよび前記Ｃ２Ｅ２が使用および制御するためのシステム資源の第２のパーティションを確立することができる、１つまたは複数の記憶装置と、
前記１つまたは複数の記憶装置に結合される１つまたは複数のプロセッサであって、前記オペレーティング・システムならびに前記カスタマイズされた制御環境およびサービスを実行する１つまたは複数のプロセッサと、を備え、
前記１つまたは複数の記憶装置の第１の部分、前記１つまたは複数のプロセッサの第１の部分、メモリの第１の部分、および１つまたは複数の入出力（Ｉ／Ｏ）装置の第１の部分は、前記オペレーティング・システムによって、前記第１のパーティションに関連付けされ、
前記１つまたは複数の記憶装置の第２の部分、前記１つまたは複数のプロセッサの第２の部分、前記メモリの第２の部分、および前記１つまたは複数の入出力（Ｉ／Ｏ）装置の第２の部分は、前記オペレーティング・システムによって、前記第２のパーティションに関連付けされ、
前記第１のパーティションは、ハードウェア・ベースのセキュリティ対策を用いることによって前記オペレーティング・システムに関連するシステム資源を前記Ｃ２Ｅ２から保護するために隔離され、
前記第２のパーティションの完全制御は、前記オペレーティング・システムが前記メモリの前記第２の部分内の前記カスタマイズされた制御環境およびサービスを初期化し、呼び出すことによって、前記Ｃ２Ｅ２に引き渡される、サーバ。
【請求項６１】
請求項６０に記載のサーバにおいて、
前記第２のパーティションは、ハードウェア・ベースのセキュリティ対策を用いることによって前記Ｃ２Ｅ２に関連するシステム資源を前記オペレーティング・システムから保護するために隔離される、サーバ。
【請求項６２】
請求項６０に記載のサーバにおいて、
前記カスタマイズされた制御環境およびサービスは非移植性である、サーバ。
【請求項６３】
請求項６０に記載のサーバにおいて、
前記第１のパーティションは、少なくとも１つのプロセッサを含む、サーバ。
【請求項６４】
請求項６０に記載のサーバにおいて、
前記第２のパーティションは、少なくとも１つのプロセッサを含む、サーバ。
【請求項６５】
請求項６０に記載のサーバにおいて、
前記１つまたは複数の記憶装置は、前記カスタマイズされた制御環境およびサービスの計算構造が調整されているカスタマイズされたアプリケーションのソフトウェア・イメージを記憶している、サーバ。
【請求項６６】
請求項６５に記載のサーバにおいて、
前記カスタマイズされたアプリケーションはウェブ・エッジ・エンジンを備える、サーバ。
【請求項６７】
請求項６６に記載のサーバにおいて、
前記ウェブ・エッジ・エンジンはウェブ・サーバを備える、サーバ。
【請求項６８】
請求項６６に記載のサーバにおいて、
前記ウェブ・エッジ・エンジンはアプリケーション・サーバを備える、サーバ。
【請求項６９】
請求項６６に記載のサーバにおいて、
前記ウェブ・エッジ・エンジンは通信サーバを備える、サーバ。
【請求項７０】
請求項６０に記載のサーバにおいて、
通信チャネルが前記第１のパーティションと前記第２のパーティションとの間に維持され、ダイナミック・コンテント・ジェネレータが、前記第１のパーティション内で実行し、ダイナミック・コンテントをウェブ・サーバに前記通信チャネルを介して提供する、サーバ。
【請求項７１】
請求項６０に記載のサーバにおいて、
前記ハードウェア・ベースのセキュリティ対策は、領域識別子、保護識別子、およびメモリ・ページ・アクセス権値のうちの１つまたは複数を用いることを備える、サーバ。
【請求項７２】
オペレーティング・システムであって、
システム資源を、少なくとも、前記オペレーティング・システムの制御の下に留まる第１のパーティションと、同時カスタム実行環境（Ｃ２Ｅ２）の完全制御の下に配置されるべき第２のパーティションとにパーティショニングするための手段と、
前記第１のパーティションにおけるシステム資源を前記Ｃ２Ｅ２によるアクセスから保護するためのハードウェア・ベースの隔離機構に対するインターフェース手段と、
前記第２のパーティションにおけるシステム資源の完全制御を前記Ｃ２Ｅ２へ移すための手段であって、前記Ｃ２Ｅ２に関連するカスタマイズされた制御およびサービスを初期化し、呼び出すことを含む、手段と、
前記第１のパーティションと前記第２のパーティションとの間の通信を提供するための手段と、
を備えるオペレーティング・システム。
【請求項７３】
請求項７２に記載のオペレーティング・システムであって、更に、
パーティショニングされたシステム資源を再び取り入れるための手段を備えるオペレーティング・システム。
【請求項７４】
請求項７２に記載のオペレーティング・システムであって、更に、
前記オペレーティング・システムおよび前記Ｃ２Ｅ２をオペレータ制御するための別個の手段と、
前記オペレーティング・システムおよび前記Ｃ２Ｅ２をモニタリングするための別個のインターフェース手段と、
を備えるオペレーティング・システム。
【請求項７５】
オペレーティング・システムであって、
前記オペレーティング・システムが存在するシステム資源のハードウェア強制されたパーティションとは別個の、システム資源の個別のハードウェア強制されたパーティション内で動作し、これを制御する１つまたは複数の同時カスタム実行環境（Ｃ２Ｅ２）と通信するための手段と、
前記１つまたは複数のＣ２Ｅ２におけるＣ２Ｅ２に処理を始めさせるか、あるいは終了させるための手段と、
を備えるオペレーティング・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般的には、アプリケーション実行環境およびオペレーティング・システムの分野に関する。より詳細には、本発明の実施形態は、（ｉ）特定のクラスのハードウェア命令の組のアーキテクチャに対して高度に調整され、かつその命令の組の保護機構を用いてセキュリティの脆弱性を低減するアプリケーション実行環境；および（ｉｉ）多目的オペレーティング・システムを増強して、１つまたは複数のアプリケーション実行環境との共生的パートナとして機能するようにすること、に関する。
【背景技術】
【０００２】
最新の多目的オペレーティング・システムが採用するアプローチは、実際のプロセッサ・ハードウェアの最上部において複数レベルの抽象化を規定して実施することである。このような抽象化には、複数の仮想メモリ、複数のタスク（別名プロセスまたはスレッド）、ファイル、ソケット、割り込みハンドラ、セマフォ、スピン・ロック、時刻クロック、インターバル・タイマなどが含まれる。
【０００３】
これらの抽象化のいくつかは、通常はプロセッサの実際の計算資源に対して完全な制御を実行するそれぞれのオペレーティング・システムのカーネル内で実施される。このようなカーネルは、プロセッサが与える最も高い特権レベルで実行され、カーネルによって構成されるプログラムがプロセッサ命令の組の「特権命令」を実行することを可能にする。オペレーティング・システム・カーネルによって、このような抽象化の場合の形成、スケジューリング、コーディネーション、およびデストラクションが管理される。またカーネルによって、ハードウェア・プロセッサ・アーキテクチャによって規定される同期および非同期の障害、トラップ、アボート、および割り込みの全範囲を適切に取り扱うことが行われる。
【０００４】
一体型またはプラグ・インの入出力（Ｉ／Ｏ：Input/Output）デバイス制御アダプタの制御は、ドライバ（別名Ｉ／Ｏドライバまたはローカル・エリア・ネットワーク（ＬＡＮ：Local Area Network）ドライバまたは＜デバイス＞ドライバ。ここで＜デバイス＞は、特定の周辺機器、バス、または機能名である）と呼ばれるプログラムによって実施される。またこのようなドライバは、プロセッサが与える最も高い特権レベルにおいて実行することが許可される。ドライバに含まれるコードの量は通常、オペレーティング・システム・カーネル自体におけるコードよりも多い。
【０００５】
他の要素によって、オペレーティング・システム・カーネルおよびＩ／Ｏドライバの最上部に構築される抽象化が実施される。これらには、ファイル・システム、ネットワーク・スタック、同期化プリミティブ、信号送信メカニズム、ソケット・インターフェース、グラフィカル・ユーザ・インターフェース、およびシステム・サービスの種々のライブラリが、含まれる。これらの要素が、オペレーティング・システム・カーネルおよびＩ／Ｏドライバと組み合わされることにより、多くの異なるハードウェア・プラットフォーム上で実現可能なアプリケーションに対するインターフェース・プログラムが得られる。
【０００６】
多目的オペレーティング・システムが提供する複数レベルの抽象化を規定する際における主な目的は、互換性がないプロセッサおよびプラットフォーム・ハードウェアおよびファームウェア・アーキテクチャを用いるシステムに渡って実施可能なアプリケーション・プログラミング・インターフェース（ＡＰＩ：Application Program Interface ）を開発することにある。現在のユニックス（Unix（登録商標））、リナックス（Linux （登録商標））、およびウィンドウズ（Windows （登録商標））・オペレーティング・システム（ＵＬＷシステム）（場合によっては、本明細書においては「主要なオペレーティング・システム」と称する）において見られる複数の抽象化層を規定し、かつ実施するプログラムは、重要であり、移植性を実現する際に功を奏していたが、そのような結果は、性能を犠牲にすることおよび他の負の効果を伴わずには達成されていなかった。このような効果の主な２つは、「最小公分母」（ＬＣＤ：Lowest Common Denominator ）の効果および「セマンティック・ミスマッチ」（ＳＭ：Semantic Mismatch ）の効果と呼ばれる。これらの効果のうちの前者の効果によって、ＵＬＷオペレーティング・システムは、一部のプロセッサ上のみに存在する強力な能力からは利益を得ることができないでいる。後者の効果は、過剰な性能オーバーヘッドにおいて、またはシステム・レベルの機能上の不完全性、たとえば拡張性およびセキュリティにおいて、現れる。
【０００７】
特にＵＬＷシステムにおけるオペレーティング・システムの移植性は、実際には、コンセンサスの２つの基本的なカテゴリにつながっている。第１に、ＡＰＩにおいてどの抽象化をサポートするかについて、ＵＬＷシステム間で幅広いコンセンサスが存在する。たとえば、ＵＬＷシステムの仮想メモリ、プロセス・スレッド・タスク、ファイル、ネットワーク、および割り込み抽象化の間で、著しい差を見出すことはできない。もちろん、ＡＰＩ間の均一性によって、アプリケーションの移植性が可能になる。第２に、ハードウェア能力のどの下位集合をサポートするかについてコンセンサスが存在する。この能力の下位集合に、アーキテクチャのＬＣＤによって適切に標識することができる。
【０００８】
１９６０年代半ばに、ＩＢＭのシステム／３６０の導入に伴って、ハードウェア的に強制された２つの特権のレベルに基づくオペレーティング・システム構造が確立された。オペレーティング・システム・カーネル（当時は「ニュークレアス（Nucleus ）」と呼ばれた）および他の重要なシステム制御コードは、高いハードウェア・特権レベルで実行された。アプリケーション・コードを含む他のコードは、低いハードウェア特権レベルで実行された。
【０００９】
いくつかの重要な命令の組のアーキテクチャによって、その後に４つのレベルのハードウェア特権が、他の高性能な保護メカニズムとともに与えられたが、ＵＬＷオペレーティング・システムは、これらの機構をサポートしてはいない。何故なら、このようなサポートは、依然として２つのレベルのハードウェア特権を与えるプロセッサ上では、実行できないからである。実際には、ハードウェアＬＣＤ効果のせいで、ＵＬＷオペレーティング・システムは現在、基本的に１９６０年代の特権モデルをサポートすることを続けており、読み出し、書き込み、および実行の特権制御に対する拡張機能は少数である。本当に重要な唯一の変化は、現在ハードウェア特権の最も高いレベルで実行されるコードの量の爆発的な成長であって、ＩＢＭシステム／３６０アーキテクトが意図も予測もしてない結果である。
【００１０】
より強力なアドレス指定保護能力、たとえばＰＡＲＩＳＣＸ（登録商標）およびアイテニアム（登録商標）システムによって提供されるものは、ＵＬＷオペレーティング・システムによってまったく使用されていない状態が続いている。また、特に非常に安全なシステムに対しては、すべての製造業者のプロセッサに普及している能力を超えるより細かい単位のメモリ保護能力をどうしても使用する必要がある。このような能力に対するサポートは、どのＵＬＷ多目的オペレーティング・システムからもまったく得られない。そのため、非常に安全であり得るオペレーティング・システムを構築することはさらに難しくなっている。たとえばＵＬＷシステムでは、長時間メイン・メモリ内に暗号キーおよび暗号キーイング材料を記憶することは安全でないことが知られている（ニールス・ファーガソン＆ブルース・シュナイア（Niels Ferguson&Bruce Schneier ）、「実用的な暗号化（Practical Cryptography）」、ウィリ（Wiley ）、２００３、アジ・シャミール＆ニッコ・ファン・ソメーレン（Adi Shamir&Nicko Van Someren）「記憶されたキーと隠れっこをする（Playing hide and seek with stored keys）」（１９９８年９月２２日））。しかし、これは、アイテニアム（登録商標）アーキテクチャによって提供される保護能力を本出願で説明する方法で用いれば、安全に行うことができる。アイテニアム（登録商標）２プロセッサの少なくとも明示的な命令レベルの並列処理および保護能力を含むコンピュータ・アーキテクチャを、本明細書では、「並列保護アーキテクチャ」（ＰＰＡ：Parallel Protected Architecture ）と呼ぶことにする。
【００１１】
ＵＬＷオペレーティング・システムが提供する第１のカテゴリの抽象化のコンセンサスの結果、ハードウェアＬＣＤコンセンサスと同様に、場合によっては本明細書においてＳＭ効果と称する機能上の欠点が集まることになる。一般的に容認されているオペレーティング・システム抽象化は、重要な幅広いクラスのアプリケーションに対して適切であるが、このような抽象化は、すべての場合において理想的というわけではない。どのアプリケーションにも適するコンピューティング構造というものは、あり得ない。しかし、すべてのアプリケーションを、一般的に容認されているＵＬＷのＡＰＩ抽象化にマッピングしなければならないということは、この事実と衝突する。重要な場合には、ＵＬＷオペレーティング・システム抽象化によって、その下にあるハードウェア性能および保護能力を十分に使用することが妨げられる。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
アプリケーションによっては、単純に、ＵＬＷ制約の制限内では機能できないものがある。明らかな例は、リアル・タイム・アプリケーションである。このアプリケーションでは、システムは常に、厳密な時間制約の中で応答しなければならない。多目的オペレーティング・システムは通常、システムが達成することのできる最良の応答にシステム自体を合わせるためのパラメータを設けている。しかし、多目的オペレーティング・システムは、厳しいリアル・タイム・アプリケーションの要求を常に満たすということはできない。システム設計者は、このような問題に種々の方法で対応している。一部の設計者は、多目的オペレーティング・システムを、その下にあるリアル・タイム・カーネル内に埋め込んでいる。この構造では、リアル・タイム・カーネルが、応答性を保証する必要があるアプリケーションを制御し、多目的オペレーティング・システムが、残りの部分を制御する。他の設計者の場合には、特化されたリアル・タイム・オペレーティング・システムを選択し、多目的オペレーティング・システムを用いる試みはあっさりと断念している。
【００１３】
多くのアプリケーションを、多目的オペレーティング・システム内で機能するように作ることができる。しかし、それが可能であるのは、システム性能が実質的に低下する可能性のあるオーバーヘッドのコストの場合だけである。主要な多目的オペレーティング・システムがもたらす抽象化は、複雑さおよび多数のハードウェア・サイクルを消費することによってのみ実現される。また抽象化は、特に拡張性およびセキュリティを考慮すると、オーバーヘッドが低い構成とはならないことが分かっている。結果として、アプリケーションの目的として、セキュリティ、可能な最大のスループット、および可能な最短の応答時間が含まれる場合には、多目的オペレーティング・システムのコンセンサス抽象化を行うと、これらの目的を達成することに対して支障となる可能性がある。
【００１４】
多くの場合、主要なＵＬＷオペレーティング・システム開発は常に、スケジュールが見積もりよりも長くなり、結果として生じるコード・ベースは予想よりも大きくなり、性能は所望のものよりも遅くなる。しかし、ハードウェア・メモリ・サイズおよびプロセッサ速度の並行した進歩によって、オペレーティング・システム・ソフトウェアのサイズおよび性能の不足分が補われていたために、大惨事は回避されている。同時に、多目的オペレーティング・システムの累積するソフトウェアのオーバーヘッドなしにＰＰＡプロセッサのハードウェアの進歩を十分に利用できていたならば、アプリケーション性能が何になっていたのかについての注意が、ほとんど払われていなかったように思われる。
【課題を解決するための手段】
【００１５】
カスタム実行環境（ＣＥ２：Custom Execution Environment）を実現するための方法および技術、関係するローダ、およびＣＥ２をサポートするためのオペレーティング・システムについて説明する。一実施形態によれば、コンピュータ・システムの、存在するのであるならば、どのシステム資源が、コンピュータ・システムの常駐のオペレーティング・システムの制御の下に留まるべきか、ならびにシステム資源のうちのどれが、１つまたは複数のＣＥ２の制御の下に配置されるべきかについての決定がなされる。システム資源の１つまたは複数のパーティションを１つまたは複数のＣＥ２に関連させることによって、システム資源は、常駐のオペレーティング・システムおよび１つまたは複数のＣＥ２間でパーティショニングされる。一実施形態によれば、ＣＥ２は、アプリケーションのコードおよびデータ・セクションと、システム・サービスの組のコードおよびデータ・セクションとを含む。システム・サービスの組は、並列保護アーキテクチャを実施する１つまたは複数のプロセッサを含むコンピュータ・システムのハードウェア資源の組の直接的かつ完全な制御を有する。
【００１６】
本発明の実施形態の他の特徴は、添付図面および以下の詳細な説明から明らかである。
アプリケーション実行環境を実現するための、ならびに共生的多目的オペレーティング・システム（ＳＧＰＯＳ：Symbiotic General Purpose Operating System）を実施するための方法および技術について説明する。本発明の実施形態では、１つまたは複数の「並列保護アーキテクチャ」（ＰＰＡ）プロセッサ、たとえばインテル（登録商標）アイテニアム（登録商標）２プロセッサを用いるハードウェア・プラットフォーム上で機能する高性能アプリケーション実行環境を提供することを目指している。本明細書で与えられる教示により実施されるアプリケーション実行環境によって、最大性能が実現され、セキュリティ脆弱性を除去することができる。本発明の実施形態の目的は、１つまたは複数のカスタム実行環境を初期化し、サポートし、かつ／もしくはカスタム実行環境と共存する新しい能力を有する多目的オペレーティング・システムを提供することにある。その結果として、本発明の実施形態によれば、多目的オペレーティング・システムを発展させることにより、多目的オペレーティング・システムを、多目的オペレーティング・システムがアプリケーション・ソフトウェア実行環境の組を提供することができるＳＧＰＯＳにすることができる。そのアプリケーション・ソフトウェア実行環境の組は、多目的オペレーティング・システム自体がサポートする抽象化だけでなく、次のような１つまたは複数のカスタム実行環境（ＣＥ２）が与える抽象化をもたらす。（１）各ＣＥ２は、単一のアプリケーションに対する実行環境を構成し、ＳＧＰＯＳによってそのアプリケーションに割り当てられたハードウェア資源の下位集合をもっぱら管理するのみである；（２）各ＣＥ２内のセマンティックスは、多目的オペレーティング・システムが与える多目的抽象化の組とは独立にすることができ、この組によって限定されることはもはやない；（３）各ＣＥ２内のセマンティックスは、その環境内で実行すべきアプリケーションの要求のみに対してカスタマイズすることができる；（４）各ＣＥ２内のセマンティックスは、多目的オペレーティング・システム自体がもたらす抽象化の制約内で容易に達成できない所望の特性を実現することができる。このような特性は、たとえば、最小の計算オーバーヘッド、線形マルチ・プロセッサ拡張性、ならびにその完全性およびセキュリティへの攻撃に対する脆弱性を除去することである；（５）ＣＥ２内では、利用可能なハードウェア能力を完全に用いることが、その能力が多目的オペレーティング・システムによって直接サポートされていなくても、可能である；（６）各ＣＥ２は、他の任意のＣＥ２によるアクセスから、あるいはＳＧＰＯＳ自体によるアクセスから、隔離および保護することができる。
【００１７】
一実施形態によれば、ＳＧＰＯＳは、システム資源をパーティショニングする手段と、カスタマイズされた実行環境を初期化して呼び出す手段と、ＳＧＰＯＳとカスタマイズされた実行環境とを隔離して、それらを互いから保護する手段と、ＳＧＰＯＳの制御の下に留まるシステム資源のパーティションとカスタマイズされた実行環境の制御の下のシステム資源のパーティションとの間で通信する手段と、カスタマイズされた実行環境が手放したシステム資源をそれが停止したときに再び取り入れ、再び取り入れたシステム資源の完全制御をＳＧＰＯＳに戻す手段と、含む。
【００１８】
一旦、システム資源、たとえばプロセッサ、物理メモリ、記憶装置、仮想メモリ識別子値、入出力（Ｉ／Ｏ）装置、および例外送出が、１つまたは複数のパーティションにパーティショニングされると、ＳＧＰＯＳは、少なくとも１つのパーティションの完全制御を、別個のカスタマイズされた実行環境へ移してもよい。したがって、カスタマイズされた実行環境は、そのパーティション内のシステム資源に対する直接的なアクセスおよび制御を有する。すなわち、カスタマイズされた実行環境とカスタマイズされた実行環境に割り当てられるシステム資源との間に介在するオペレーティング・システム抽象化は存在しない。好都合なことに、オペレーティング・システム抽象化が存在しないために、カスタマイズされた実行環境は、より簡単で、特定のアプリケーションに対して調整された計算および／またはＩ／Ｏ構造を、実現してもよく、ＳＧＰＯＳが利用していない特定のプロセッサまたは他のシステム資源機構を利用することができる。
【００１９】
さらに、ＳＧＰＯＳおよびカスタマイズされた実行環境がそれぞれのパーティション内で同時に実行される限り、カスタマイズされた実行環境は、ＳＧＰＯＳ内にすでに存在している多目的能力の写しを作る必要はなく、むしろ、その特定のアプリケーションに最も適したソフトウェア構造に焦点をあてるのみでよい。したがって、カスタマイズされた実行環境は、ＳＧＰＯＳと通信することによって多目的サービスを得ることができる。たとえば、カスタマイズされた実行環境は、システム管理、そのパーティションの外側の周辺機器の制御、システムの起動および構成の初期化、システム資源のパーティショニング、重要でないオペレーティング・システム・サービス、ＳＧＰＯＳの下で実行されるユーザ・アプリケーションがもたらすサービスなどを、ＳＧＰＯＳから、ＳＧＰＯＳのパーティションとカスタマイズされた実行環境のパーティションとの間に維持される通信チャネルを介して、得てもよい。
【００２０】
本発明の種々の実施形態により、アプリケーション実行環境は、ハードウェア・プラットフォームに対して完全な制御を実行してもよいし、あるいはシステム資源の第１のパーティションに対して完全な制御を実行し、その間に、システム資源の前記第１のパーティションまたはそれ以上のパーティションの制御を１つまたは複数の同時アプリケーション実行環境に引き渡したオペレーティング・システムと同時に動作してもよい。一方で、オペレーティング・システム自体は、システム資源の第２のパーティションを管理し続ける。前者の場合、そのアプリケーション実行環境を「カスタム実行環境」（ＣＥ２）と呼ぶことができる。後者の場合、そのアプリケーション実行環境を「同時カスタム実行環境」（Ｃ２Ｅ２）と呼び、システム資源の前記第１のパーティションの制御をＣＥ２に引き渡したオペレーティング・システムを「共生的多目的オペレーティング・システム」（ＳＧＰＯＳ）と呼ぶことができる。
【００２１】
以下の説明では、説明を目的として、本発明の実施形態が十分に理解されるように、多くの具体的な詳細について述べる。しかし本発明の実施形態は、これらの具体的な詳細の一部がない状態で実行してもよいことは、当業者には明らかである。他の場合には、良く知られた構造および装置を、ブロック・ダイアグラムの形態で示す。
【００２２】
本発明の実施形態には、種々のステップが含まれている。これについて以下に述べる。ステップは、オペレータ構成、ハードウェア・コンポーネントによって行われてもよいし、機械実行可能な命令において具体化されてもよい。この命令を用いて、命令によってプログラムされる多目的または特殊目的のプロセッサに、ステップを実行させてもよい。あるいはステップを、オペレータ構成、ハードウェア、ソフトウェア、および／またはファームウェアの組み合わせによって行ってもよい。
【００２３】
本発明の実施形態を、コンピュータ・プログラム製品として提供してもよい。この製品には、プロセスを実行するようにコンピュータ（または他の電子装置）をプログラムするために用い得る命令が記憶された機械読取可能な媒体が含まれていてもよい。機械読取可能な媒体としては、以下のものが挙げられる（しかしこれらに限定されない）。磁気ディスク、フロッピィ・ディスケット、光ディスク、コンパクト・ディスク読み出し専用メモリ（Compact Disc Read-Only Memory ）（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ）、デジタル多目的ディスク（Digital Versatile Disk）（ＤＶＤ−ＲＯＭ、ＤＶＤ＋ＲＷ）、および光磁気ディスク、ＲＯＭ、ランダム・アクセス・メモリ（ＲＡＭ：Random Access Memory）、消去可能なプログラマブル読み出し専用メモリ（ＥＰＲＯＭ：Erasable Programmable Read-Only Memory）、電気的に消去可能なプログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ：Electrically Erasable Programmable Read-Only Memory ）、磁気もしくは光カード、フラッシュ・メモリ、または電子命令の記憶にとって好適な他のタイプの媒体／機械読取可能な媒体。さらに本発明の実施形態を、コンピュータ・プログラム製品としてダウンロードしてもよい。プログラムを、通信リンク（たとえばモデムまたはネットワーク接続）を介して、搬送波または他の伝搬媒体において具体化されたデータ信号によって、遠隔コンピュータからリクエスト中のコンピュータへ転送してもよい。
【発明を実施するための最良の形態】
【００２４】
本発明の実施形態は、一例として示されるものであり、限定を意味するものではない。添付図面の図中で行われる例示では、同一の参照番号は同様の要素を指す。
専門用語
本出願の全体を通して使用される用語、略語、および語句の簡単な定義について、以下に述べる。
【００２５】
１．以下の用語は、コンピュータ・アーキテクチャ、たとえばインテル（登録商標）アイテニアム（登録商標）アーキテクチャ、ヒューレット・パッカードＰＡＲＩＳＣ（登録商標）アーキテクチャ、またはＩＢＭパワーＰＣ（登録商標）アーキテクチャによって、かつこれらのアーキテクチャを実施するプロセッサに基づくハードウェア・プラットフォームによって定義される。一部の用語は、アイテニアム（登録商標）アーキテクチャに固有である。
【００２６】
ａ．用語「物理アドレス（physical address）」は、ハードウェア・プラットフォームの物理メモリ内の特定の箇所に直接アクセスするためにハードウェアによって用いられるエンコードされた数値を示す。
【００２７】
ｂ．用語「仮想アドレス（virtual address ）」は、ハードウェア・プラットフォームのメモリ内の特定の箇所に間接的にアクセスするために用いられるエンコードされた数値を示す。メモリにアクセスする前に、このアドレスは最初に、物理アドレスに変換される。変換は、物理メモリにアクセスする前に、ソフトウェアが（プロセッサ・アーキテクチャが提供する手段によって）指定してもよいものであり、およびプロセッサ・ハードウェアが実行するものである。
【００２８】
ｃ．用語「領域（region）」は、固定された数の高位のビットの仮想アドレスにおいて指定されるエンコードされた小さな数値と交換されるエンコードされた大きな数値を示す。アイテニアム（登録商標）２プロセッサの場合には、大きな値は、長さが２４ビットであり、小さな値は、長さが３ビットである。交換は、プロセッサ・ハードウェアが仮想アドレスを物理アドレスに変換する度に行われる。
【００２９】
ｄ．用語「領域レジスタ（region register ）」（ＲＲ）は、プロセッサ・ハードウェアが仮想アドレスを物理アドレスに変換するときに用いられるエンコードされた大きな値を収容するハードウェア・レジスタを示す。
【００３０】
ｅ．用語「ページ（page）」は、その第１のアドレス（「ページ・アドレス（page address）」）およびそのサイズ（バイト数）によって識別されるメモリの連続領域を示す。許容されるページ・サイズ（多くの場合に、４ＫＢバイトまたは８ＫＢバイトを含む）は、各プロセッサ・アーキテクチャによって規定される。仮想アドレスから物理アドレスへの変換は、仮想アドレスを収容する固定されたサイズ・ページに対して行われる。
【００３１】
ｆ．用語「物理ページ（physical page ）」は、その物理アドレスによってアドレス指定されるページを示す。
ｇ．用語「仮想ページ（virtual page）」は、システム・ソフトウェアがそれに対して指定した仮想アドレスによってアドレス指定されるページを示す。
【００３２】
ｈ．用語「アクセス権（access rights ）」（ＡＲ）は、プロセッサによるメモリに対するアクセスのうち、どのタイプのアクセスが許可されて、どのタイプのアクセスが許可されないかを示す。アクセスのタイプは、プロセッサがメモリのコンテンツを読み出してもよいことを意味する「読み出し」と、プロセッサがメモリにコンテンツを書き込んでもよいことを意味する「書き込み」と、プロセッサがメモリのコンテンツを命令として実行してもよいことを意味する「実行」である。許可されないアクセスがあった場合、ハードウェア割り込みが生成される。
【００３３】
ｉ．用語「保護キー（protection key）」（ＰＫ）は、メモリの仮想ページにアクセスするためにプロセッサ制御レジスタ内に存在していなければならないエンコードされた値を示す。アイテニアム（登録商標）２プロセッサの場合、ＰＫは、２４ビットにエンコードされている。
【００３４】
ｊ．用語「保護キー・レジスタ（protection key register ）」（ＰＫＲ）は、ＰＫだけでなく他の制御情報も収容するプロセッサ制御レジスタを示す。図３Ｂを参照のこと。
ｋ．用語「ハードウェア特権レベル（hardware privilege level）」は、プロセッサが実行している現在の特権レベルを示す。多くのアーキテクチャでは、このような特権レベルを２つ規定している。他のアーキテクチャ、たとえばアイテニアム（登録商標）アーキテクチャでは、このようなレベルを４つ規定している。下位の方の特権レベルで実行すると、割り込みを起こすことなく実行できる命令が制限される。
【００３５】
ｌ．用語「ＰＬ３」、「ＰＬ２」、「ＰＬ１」、および「ＰＬ０」によって、アイテニアム（登録商標）アーキテクチャによって規定されるハードウェア特権レベルを命名する。ＰＬ０は、最高の特権レベルであり、ＰＬ３は、最低の特権レベルである（数字の大きさとは逆である）。
【００３６】
ｍ．用語「ＥＰＣページ（EPC page）」は、入力保護されたコード（ｅｐｃ：enter protected code）命令がハードウェア特権レベルを引き上げ得る仮想ページを示す。
ｎ．用語「変換索引バッファ（translation lookaside buffer）」（ＴＬＢ）は、可能な限り最速の方法で仮想アドレスを物理アドレスに変換するために用いられるプロセッサ制御レジスタを示す。事実上、ＴＬＢに、特定の仮想ページに対する変換が記憶される。
【００３７】
ｏ．用語「スレッド（thread）」または「実行のスレッド（thread of execution ）」は、プロセッサ制御レジスタの特定の状態内において連続的な命令を実行することを示す。プロセッサが、２つのアプリケーションを同時に実行している場合、プロセッサは実際には、一方のアプリケーション・スレッドにおいて短時間だけ実行した後、他方のアプリケーション・スレッドに切り換わってこのスレッドにおいて短時間だけ実行して、行ったり来たりする。
【００３８】
ｐ．用語「割り込み（interruption）」は、プロセッサが、命令実行の通常のシーケンスを停止して、何が起こったか、ならびにそれについて何をすべきかを判断するシステム・ソフトウェアに制御を送ることが発生したことを示す。
【００３９】
ｑ．用語「例外（exception ）」は、割り込みを起こす命令が実行される直前または直後に起こる割り込みを示す。
ｒ．用語「割り込む（interrupt ）」は、特定の命令を実行した結果ではなく、経過タイマ間隔の終了またはＩ／Ｏアダプタからの信号などのシステム・イベントの結果として起こる割り込みを示す。
【００４０】
ｓ．用語「レジスタ保存エンジン（register save engine）」（ＲＳＥ）は、アイテニアム（登録商標）プロセッサにおける機能であって、「スタックされた（stacked ）」汎用レジスタ（Ｒ３２〜Ｒ１２７）を保存し、復元し、かつ名前を変更して、無制限の数の汎用レジスタの様相をソフトウェアに対して示す機能を示す。
【００４１】
ｔ．用語「レジスタ保存エンジン・スタック（register save engine stack）」（ＲＳＥＳ）は、汎用レジスタを保存および復元をするためにＲＳＥが用いるメモリを示す。
２．以下の用語は、ファームウェアまたはソフトウェアによって規定される。一部の用語は、アイテニアム（登録商標）システムに固有である。
【００４２】
ａ．用語「ソフトウェア・スタック（software stack）」（ＳＷＳ）は、ソフトウェアが、ＬＩＦＯスタックとして用いるメモリを示す。
ｂ．用語「セクション（section ）」は、互いにリンクされおよびメモリ内に共に配置されるソフトウェア・コードまたはデータ・イメージの集まりを示す。
【００４３】
ｃ．用語「ＢＳＳ」は、メモリ内にロードされたときにクリアされるべきメモリを占めるデータ・セクションを示す。またＢＳＳページＩを含むメモリは、「ヒープ」と呼ばれる。
【００４４】
ｄ．用語「エントリ・ベクトル（entry vector）」（ＥＶ）は、命令シーケンスのベクトルを示す。命令シーケンスのそれぞれの命令は特定のシステム・イベントに対応し、対応するイベントが起きた場合に適切なコードに制御を送るように設定されている。
【００４５】
ｅ．用語「拡張可能なファームウェア・インターフェース（extensible firmware interface ）」（ＥＦＩ）は、インテル（登録商標）ペンティアム（登録商標）またはアイテニアム（登録商標）プロセッサを組み込んだハードウェア・プラットフォームが提供する標準的なファームウェア・インターフェースの名前である。これは、他の実行可能な環境ローダのオペレーティング・システムによって用いられるインターフェースである。
【００４６】
ｆ．用語「起動サービス（boot services ）」は、システムを起動し、オペレーティング・システムまたは他の制御プログラムをローディングするときにＥＦＩファームウェアによって提供されるサービスの組を示す。
【００４７】
ｇ．用語「主プロセッサ（monarch processor ）」は、ＥＦＩファームウェアを実行する特定のプロセッサを示す。マルチ・プロセッサ・システムでは、主プロセッサが、初期の作業のほとんどを行い、システムが準備完了となったときに、その他のプロセッサを始動させる。
【００４８】
ｈ．用語「ハードウェア・プラットフォーム制御サービス（hardware platform control Service ）」または「プラットフォーム制御サービス（platform control service）」（ＰＣＳ）は、本発明の実施形態によって提供される特定のシステム・サービスの組を示す。
【００４９】
ｉ．用語「割り込みサービス・ルーチン（interruption service routine）」は、割り込みが発生した後に割り込みが無効にされる状態に留まる間に実行されるソフトウェアを示す。
【００５０】
ｊ．用語「延期された割り込みサービス・ルーチン（deferred interruption service routine ）」は、割り込みが発生した結果（しかし、通常の実行の状況では、割り込みが再び有効にされた後に）、実行されるソフトウェアを示す。
【００５１】
３．用語「ＧＵＩ」は、グラフィカル・ユーザ・インターフェース（graphical user interface）、たとえばインターネット・ブラウザまたはマイクロソフト・ウィンドウズ（登録商標）オペレーティング・システムによって提供されるものを示す。
【００５２】
４．用語「デジタル署名（digital signature ）」または「暗号デジタル署名（cryptographic digital signature ）」は、暗号ハッシュ値、たとえばＳＨＡ−１を、エンコードされたデータの特定のボディに対して算出した後に、プライベート・キーを用いてハッシュ値を暗号化した結果を示す。エンコードされたデータのボディが同一であるならば、ハッシュ値を再計算し、対応する公開キーを用いてデジタル署名を復号化することによって、エンコードされたデータが依然として同一であるならば、同一の値が生成される。
【００５３】
５．用語「接続された（connected ）」または「結合された（coupled ）」および関連用語は、動作上の意味で用いられており、直接的な物理的接続または結合に必ずしも限定されない。
【００５４】
６．語句「同時のカスタマイズされた実行環境（Concurrent Customized Execution Environment ）」即ち「Ｃ２Ｅ２」は一般的に、多目的オペレーティング・システムと共存し、かつ少なくとも多目的オペレーティング・システムとの通信手段を共有するカスタマイズされた実行環境を指す。
【００５５】
７．語句「カスタマイズされた実行環境（Customized Execution Environment）」即ち「ＣＥ２」は一般的に、カスタマイズされた動作環境自体を指す。この動作環境では、システム資源の一部に対する直接的なアクセスおよび完全制御を有するソフトウェアにおいて実施されるシステム・サービスの組が設けられている。ＣＥ２は、オペレーティング・システムまたは特化されたオペレーティング・システムとは全く別個であり、特定の実施形態に依存して以下の特徴のうちの１つまたは複数を含んでいてもよい。
【００５６】
ａ．ＣＥ２には、静的にリンクされたシステム・コードおよびデータ・モジュールと、アプリケーション・コードおよびデータ・モジュールとの両方が含まれていてもよい。
ｂ．ＣＥ２は、任意の他のアプリケーションをロードするか、あるいはロードして実行する能力を欠いていてもよい。
【００５７】
ｃ．ＣＥ２の機能上の能力は、特定のアプリケーションまたはアプリケーションの小さな組が必要とするサービスのみに厳密に限定してもよい。
ｄ．ＣＥ２は通常、オペレーティング・システムに予想される能力には達しない。具体的には、一実施形態において、アプリケーションは、ＣＥ２が制御する各プロセッサにおける単一スレッドの実行に限定される。
【００５８】
ｅ．ＣＥ２のサービス・インターフェースは、幅広いクラスのアプリケーションに対するより複雑で一般的なアプリケーション・プログラミング・インターフェース（ＡＰＩ）によって構成されるのではなく、簡単で、特定のアプリケーションの１つまたは小さな組のそれぞれに対して特化されていてもよい。
【００５９】
ｆ．ＣＥ２内のシステム資源に対する管理ストラテジは、従来の多目的オペレーティング・システムが採用するストラテジとはまったく異なることもある。
ｇ．ＣＥ２は、多目的または共生的多目的オペレーティング・システムがサポートしていないハードウェア能力を利用してもよい。
【００６０】
ｈ．ＣＥ２は、多目的または共生的多目的オペレーティング・システムが十分には利用していないハードウェア能力を実質的に利用してもよい。
ｉ．ＣＥ２内のアプリケーションに対して提供されるサービスは、アプリケーションがシステム・エラーからはるかに容易に再生して継続できるように、設計されていてもよい。
【００６１】
ｊ．本発明の一実施形態によれば、多目的オペレーティング・システムは、コンピュータ・システムに関連するシステム資源の全部または一部の制御を、１つまたは複数のＣＥ２に少なくとも一時的に明け渡す。他の実施形態によれば、ＣＥ２を、ハードウェア上で直接起動してもよい。たとえば、多目的オペレーティング・システムは、ＣＥ２が制御すべきシステム資源部分に対して制御を行うことなく、ＣＥ２を開始してもよい。さらに他の実施形態においては、多目的オペレーティング・システムおよび１つまたは複数のＣＥ２は両方とも、別個のハードウェア・パーティションたとえばヒューレット・パッカード・スーパードーム・プラットフォームにおいて提供されるハードウェア・パーティション内に、起動してもよい。ＣＥ２は通常、特定のハードウェア・プラットフォームに対して特化されている。一実施形態によれば、ＣＥ２は非移植性であり、カスタマイズされた実行環境とカスタマイズされた実行環境に割り当てられたシステム資源との間に介在する多目的オペレーティング・システム抽象化は存在しない。通常は、ＣＥ２が提供するシステム・サービスは、特定のアプリケーションに対して調整される簡単化された計算構造および／またはＩ／Ｏ構造を実施する。たとえば、ＣＥ２は、多目的オペレーティング・システムが利用しない特定のプロセッサまたは他のシステム資源機構を利用してもよい。一実施形態によれば、調整されたＣＥ２が、ウェブ・エッジ・エンジン、たとえばウェブ・サーバ、安全なウェブ・サーバ、プロキシ・サーバ、安全なプロキシ・サーバ、または他のアプリケーションもしくは通信サーバをサポートするために設けられる。これは、ウェブ・エッジ・エンジンがネットワーク接続の利用を、可能な限り１００％近くにできるようにするためである。
【００６２】
８．語句「一実施形態において（in one embodiment ）」、「一実施形態によれば（according to one embodiment ）」、およびその同義語が一般的に意味するところは、その語句の後に続く特定の機構、構造、または特性が、本発明の少なくとも１つの実施形態に含まれており、また本発明の複数の実施形態に含まれていてもよいということである。重要なことは、このような様相が、必ずしも同一の実施形態を指すわけではないことである。
【００６３】
９．本明細書において、コンポーネントまたは機構が、ある特性に含まれ「てもよい（may ）」、「ることが可能である（can ）」、「得る（could ）」、「るかもしれない（might ）」と述べられていたとしても、あるいは、ある特性を有「してもよい（may ）」、「することが可能である（can ）」、「し得る（could ）」、「するかもしれない（might ）」と述べられていたとしても、その特定のコンポーネントまたは機構が含まれることも、その特性を有していることも必要とはされない。
【００６４】
１０．語句「オフロード・ボード（offload board ）」は一般的に、別個のプラグ・イン・ボード、たとえばより高いレベルのインターフェースをサポートし、さらなる処理サイクルを用いてより高容量のネットワークまたは他の処理負荷に対応することができる別個のプラグ・イン・ボードを指す。一実施形態においては、このようなボードは、単に安全に起動することを補助するために用いてもよい。
【００６５】
１１．語句「並列保護アーキテクチャ（Parallel Protected Architecture ）」即ち「ＰＰＡ」は一般的に、アイテニアム（登録商標）２プロセッサの少なくとも明示的な命令レベルの並列処理および保護能力を含むコンピュータ・アーキテクチャを指す。
【００６６】
１２．語句「主要な多目的オペレーティング・システム（principal general-purpose operating systems ）」または「ＵＬＷシステム」は一般的に、ユニックス（登録商標）、リナックス（登録商標）、およびウィンドウズ（登録商標）オペレーティング・システムの現在および将来のバージョンを指す。
【００６７】
１３．語句「共生的多目的オペレーティング・システム（Symbiotic General-Purpose Operating System）」即ち「ＳＧＰＯＳ」は一般的に、以下の能力の１つまたは複数を含むように強化されたオペレーティング・システム（たとえば主要な多目的オペレーティング・システムの１つ）を指す：（１）１つまたは複数のＣＥ２と協力してコンピュータ・システムの資源を管理するメカニズム；（２）システム資源をパーティショニング／コンパートメント化し、システム資源（たとえば、プロセッサ、物理メモリ、記憶装置、仮想メモリ識別子値、Ｉ／Ｏ装置、および／または例外送出）の１つまたは複数のパーティションの制御を、１つまたは複数のＣＥ２へ移すメカニズム；（３）システム資源のパーティション間の通信を可能にするメカニズム。ＳＧＰＯＳに、移植性を残しておいてもよいし、特定のハードウェア・プラットフォームに特化させてもよい。
【００６８】
１４用語「応答する（responsive）」には、完全に、あるいは部分的に応答することが含まれる。
１５．語句「システム資源（system resources）」は一般的に、個別の、あるいは全体の計算資源および／またはコンピュータ・システムの他の資源、たとえばプロセッサ、物理メモリ、記憶装置、仮想メモリ識別子値、入出力（Ｉ／Ｏ）装置、例外送出等を指す。
【００６９】
１６．語句「ウェブ・エンジン（web engine）」および「ウェブ・エッジ・エンジン（web edge engine ）」は一般的に、１つまたは複数のウェブ・プロトコルをサポートするハードウェア、ファームウェア、および／またはソフトウェアを指す。
【００７０】
１７．語句「ウェブ・プロトコル（web protocol）」は一般的に、現在および将来のアプリケーション層ネットワーキング・プロトコルを指し、このプロトコルには、以下のものが含まれる（しかしこれらに限定されない）。ハイパーテキスト・トランスファ・プロトコル（ＨＴＴＰ：Hyper Text Transfer Protocol）、安全なＨＴＴＰ（Ｓ−ＨＴＴＰ：Secure HTTP ）、安全なソケット層（ＳＳＬ：Secure Socket Layer ）、トランスポート・コントロール・プロトコル（ＴＣＰ：Transport Control Protocol）、インターネット・プロトコル（ＩＰ：Internet Protocol ）、トランスポート層セキュリティ（ＴＬＳ：Transport Layer Security）、エクテンシブル・マークアップ・ランゲージ（ＸＭＬ：Extensible Markup Language）、シンプル・オブジェクト・アクセス・プロトコル（ＳＯＡＰ：Simple Object Access Protocol ）、ユニバーサル・ディスクリプション・ディスカバリ・アンド・インテグレーション（ＵＤＤＩ：Universal Description, Discovery, and Integration ）、ＤＨＴＴＰ、ＨＴＴＰ／ＮＧ、ファイル転送プロトコル（ＦＴＰ：File Transfer Protocol）、トリビアル・ファイル転送プロトコル（ＴＦＴＰ：Trivial File Transfer Protocol）、共通オープン・ポリシ・サービス（ＣＯＰＳ：Common Open Policy Service）、フロー・アットリビュート・ノーティフィケーション・プロトコル（ＦＡＮＰ：Flow Attribute Notification Protocol）、フィンガ・ユーザ情報プロトコル、インターネット・メッセージ・アクセス・プロトコル改訂４（ＩＭＡＰ４：Internet Message Access Protocol rev 4）、ＩＰデバイス・コントロール（ＩＰＣＤ：IP Device Control ）、インターネット・メッセージ・アクセス・プロトコル・バージョン４改訂１（ＩＳＡＫＭＰ：Internet Message Access Protocol version 4 rev 1）、ネットワーク時間プロトコル（ＮＴＰ：Network Time Protocol ）、ポスト・オフィス・プロトコル・バージョン３（ＰＯＰＳ：Post Office Protocol version 3）、レイディアス、リモート・ログイン（ＲＬＯＧＩＮ：Remote Login）、リアル・タイム・ストリーミング・プロトコル（ＲＴＳＰ：Real-time Streaming Protocol）、ストリーム制御送信プロトコル（ＳＣＴＰ：Stream Control Transmission Protocol）、サービス・ロケーション・プロトコル（ＳＬＰ：Service Location Protocol ）、ＳＭＴＰ−シンプル・メール・トランスファ・プロトコル（ＳＭＴＰ：Simple Mail Transfer Protocol ）、シンプル・ネットワーク管理プロトコル（ＳＮＭＰ：Simple Network Management Protocol）、ＳＯＣＫＳ、ＴＡＣＡＣＳ＋、ＴＥＬＮＥＴ、およびウェブ・キャッシュ・コーディネーション・プロトコル（ＷＣＣＰ：Web Cache Coordination Protocol ）。
【００７１】
１８．語句「ウェブ資源（web resource）」は一般的に、ユニバーサル資源識別子（ＵＲＩ：Universal Resource Identifier ）によって識別可能なネットワーク・データ・オブジェクトまたはサービスを指す。
【００７２】
１９．語句「ウェブ・サーバ」は一般的に、１つまたは複数のウェブ・プロトコルをサポートし、ウェブ資源、たとえばウェブ・ページおよびウェブ・アプリケーションの出力をウェブ・ユーザに提供するハードウェア、ファームウェア、および／またはソフトウェアを指す。現在利用可能なウェブ・サーバの例には、以下のものが含まれる。アパッチ（Apache）（供給元はアパッチ・ソフトウェア財団）；ジアス（Zeas）ウェブ・サーバ（供給元はゼウス・テクノロジー( オフィス所在地は英国ケンブリッジ、およびカリフォルニア州サンタ・クララ))；マイクロソフトの「インターネット情報サーバ（ＩＩＳ：Internet Information Server ）；ノベル（Novell）のウェブ・サーバ；およびＩＢＭのロータス・ドミノ・サーバのファミリ。
概略
セキュア６４（Secure64（商標））ウェブ・エッジ・エンジンは、世界中で最良の性能および世界中で最良のセキュリティを提供することを目的としている。セキュア６４ウェブ・エッジ・エンジンは、シングルまたはデュアル・プロセッサを用いる電気器具から、数１００のプロセッサを使用してカスタムアプリケーションおよびダイナミック・コンテント・ジェネレータを同時に実行する完全なウェブ・サーバまで、連続的にスケールする。高性能なコンテント・アクセラレーションおよび暗号のセキュリティおよびプライバシ保護が、製品ライン全体に渡って与えられる。（セキュア64（SECURE64）は、コロラド州イーグルウッドのセキュア６４ソフトウェア社（Secure64 Software Corporation ）の商標である）。
【００７３】
セキュア６４ウェブ・エッジ・エンジンは、現在および将来のウェブ・プロトコルを広範囲に渡ってサポートしている。便宜上、本明細書においては、本発明の実施形態を、典型的なウェブ・エッジ・エンジン、たとえばアプリケーション・サーバ、ウェブ・サーバ、およびプロキシ・サーバを参照して説明しているが、本明細書で説明するイネーブリング技術は、他の種々のネットワーク製品に広く基づいており、それらに広範囲に渡って適用可能である。このようなネットワーク製品としては以下のものが挙げられる（しかし、これらに限定されない）。コンテント・アクセラレータ、キャッシング・アクセラレータ、ファイアウォール、スマート・ルータ、フィルタ、ゲートウェイ、ファイアウォール、およびトンネル。
【００７４】
加えて、説明を簡単にするために、本発明の実施形態を、特定のコンピュータ・アーキテクチャ、たとえば明示的な命令レベル並列処理および保護能力が得られるアイテニアム（登録商標）アーキテクチャを参照して説明する。それでもなお、本発明の実施形態は、最小の並列保護アーキテクチャ機構をサポートする他の種々の現在または将来のコンピュータ・アーキテクチャに対しても、等しく適用可能である。
設計原理
インテル（登録商標）アイテニアム（登録商標）２プロセッサを用いる本発明の種々の実施形態についてここで説明する。当業者であれば、設計原理を他のＰＰＡアーキテクチャに適用する方法、またはこれらの原理を非ＰＰＡアーキテクチャに部分的に適用する方法を、容易に理解することができる。本発明の好ましい実施形態は、以下の設計原理の１つまたは複数に基づいている。
【００７５】
１．不必要な抽象化を回避する
移植性および一般性ではなく、簡単さおよび性能を最大にするために設計する。従来のＵＬＷページ仮想メモリ、タスクおよびスレッド、同期化メカニズム、ファイル・システム、信号、ソケット・モデル、および完全に一般的なネットワーキングは必要ではないし、提供されない。最小限の組のシステム制御機能のみを提供する。簡単さは、セキュリティにとって不可欠である。
【００７６】
２．アプリケーションおよび環境をプロセッサに対して最適化する
ＰＰＡプロセッサ能力を完全に用いることで、性能を最大にしてセキュリティ脆弱性を除去する。この原理は、事実上のＵＬＷ原理：「ハードウェアＬＣＤ能力のみを用いる」とは、明白に対照をなす。
【００７７】
３．プロセッサ当たり単一スレッドを用いてシステムおよびアプリケーションを統合化する
各プロセッサ上で単一スレッドのみを実行する。各プロセッサは実際に、実行の１つのスレッドのみを実行する。従来のマルチ・スレッドのオペレーティング・システムでは、これまで、各プロセッサ上で１つのスレッドのみが一時に動作中である。ＣＥ２は、単一スレッドのアプリケーションの構造に基づいて、アプリケーションの種々の応答性に対する計算サイクルの分配を制御し、バランスさせる。同様に、ＣＥ２は、単一スレッドのシステム制御構造に基づいて、必要なシステム・タスクを調整する。
【００７８】
４．直接マルチ・プロセッサ拡張性に対して設計する
計算資源の共有は、プロセッサの単位において行われ、複数のプロセッサ内の複数のタスク内のスレッドのより細かい単位においてではない。この場合も、システムは、アプリケーションおよびシステム制御機能（それぞれ、１つまたは複数のプロセッサを制御する）に基づいて、作業を分配および調整する。アイテニアム（登録商標）アトミック同期化命令を直接用いることによって、アプリケーションがこのような制御と同期化するための手段が与えられる。
【００７９】
５．増加し続けるネットワーク・バンド幅に対して設計する
高バンド幅ネットワーク・トラフィックに対するオーバーヘッドを最小限にする。加えて、ボードをオフロードするソケットおよびＴＣＰ／ＩＰ機能をオフロードすることを行う。現在のシステム利用率は、複数の１ＧＢ／秒イーサネット接続を同時にサービスすることによって、大きく増加させることができる。最近の研究によれば、４つの１ギガ・ビット（ＧＢ：Giga-Bit）／秒接続を、２個のプロセッサの３ＭＨｚゼオン（Xeon）システム上で同時にサービスするためには、中央演算処理装置（ＣＰＵ：Central Processing Unit ）の利用率が９５％となることが報告された（ＩＥＥＥコンピュータ・エレメンツ・ワークショップ（Computer Elements Workshop）、コロラド州ベイル、２００３年６月）。１０ＧＢ／秒の接続が現れると、従来のシステム構造では、結果として生じるシステムのオーバーヘッドに対処することができなくなる。
【００８０】
６．資源を静的に形成して割り当てる
可能である場合は、資源を、コンパイルまたはシステム負荷時間において構築して、割り当てる。資源割り当てを、特定の構成のパラメータに対して調整しなければならない場合には、このような割り当てを行うのは理想的には、一度だけ、システム初期化時においてである。
【００８１】
７．コンパートメント化
ＣＥ２アーキテクチャのすべての特権レベルにおいて、ソフトウェア・コード・イメージおよびデータを、コンパートメントと呼ばれる保護ドメインに組織化しなければならない。コンパートメント内のデータおよび命令アクセスは、対応するアイテニアム（登録商標）「保護ＩＤ（Protection ID ）」（ＰＩＤ）の存在によって有効にされる。また保護ＩＤレジスタのコンテンツを、コンパートメント内のコードおよびデータに対する読み出し、書き込み、およびアクセス実行のいずれの組み合わせも防ぐように、設定することができる。コンパートメント化によって、強力なセキュリティ特性とともに、これまでは追跡不可能であったプログラミング・バグを隔離することが実現される。
【００８２】
８．最小限の必要な特権を強制する
ＣＥ２設計を実施することには、システム内のすべてのコードおよびデータ・イメージに対して最小限の必要なアクセス特権の指定および強制が含まれる。すなわちコード・イメージは、実行されてもよいが、決して読み出しも書き込みもされない。このようにすることにより、攻撃者が、実行可能なコードを変更することによってアクセスを得るか、あるいは利用することが不可能になる。ソフトウェア・スタックは、読み出されても書き込まれてもよいが、決して実行はされない。このようにすることにより、攻撃者が、ソフトウェア・スタックから悪意によりペイロードを実行することが不可能になる。データ領域は、実行コードの特権レベルにかかわらず、読み出し専用であってもよいし、書き込み専用であってもよいし、あるいは読取可能および書き込み可能の両方であってもよい。しかし、データ領域は、決して実行されることはない。このようにすることにより、悪意によるコードがデータ領域から実行されることは不可能になる。アイテニアム（登録商標）ＲＳＥスタックは、読み出されるか、あるいは書き込まれるべき最高の特権レベルを必要とするメモリを占める。すべての呼び出し戻りアドレス（call return address ）は、ＲＳＥスタックに保存される。このようにすることにより、攻撃者が、呼び出し戻りアドレスを変更することによって制御を乗っ取ることが不可能になる。
【００８３】
９．コード・イメージを組織的に保護する
前述の原理によって、コード・イメージの実行可能な状態を説明した。このようなコード・イメージを組織的に保護するためには、この実行可能な状態に、後続の状態のシーケンスのみを通して到達する必要がある。コード・イメージを最初にメモリ領域内に読み出すときには、そのメモリ領域には、書き込み許可はあるが、読み出し許可、または実行許可はない。一旦、イメージがメモリ領域内に書き込まれれば、イメージを復号化すべき場合に、暗号化サービスによるイメージ領域の読み出しおよび書き込みが許可される。一旦、暗号化サービスがイメージを復号化すると、アクセス特権を読み出し専用に設定する。復号化が必要でない場合には、初期イメージを読み出し専用に設定する。一旦、イメージが読み出し専用に設定されると、暗号の認証コードによって、すべてのコード・イメージに対して必要とされるデジタル署名が妥当であると確認される。一旦、コードのデジタル署名の妥当性が確認された場合にのみ、コード・イメージに対する許可が、適切な特権レベルにおいて実行専用に設定される。
【００８４】
１０．読み出し専用および読み書きデータ領域を組織的に保護する
データ領域およびソフトウェア・スタックが、実行許可を有することは決してない。それらは、初期化時に書き込み許可に設定され、アプリケーションによって指定されるように、読み出し専用許可または読み書き許可に設定される。これらの許可が十分に有効となるのは、対応する保護ＩＤがそれらの１つまたは複数を無効にしないときのみである。したがって、データ領域は、コードの一部のセクションに対して読み書きできるとともに、同時に、コードの異なるセクションに対して読み出し専用であってもよい。各特権レベルに対しては、別個のソフトウェア・スタック・ページを用いる。
【００８５】
１１．ソフトウェアおよびレジスタ保存エンジン（ＲＳＥ）スタックを組織的に保護する
ソフトウェア・スタックは、前述の原理で説明したように保護されている。ＲＳＥスタックは読み書きの許可を有するが、これらの許可は、特権レベル・ゼロ（ＰＬ０）に限定される。ＲＳＥスタックのページは、各特権レベルに対して連続して割り当てられる；これらのページへのアクセスは、各特権レベルに対して別個の保護ＩＤを用いることによって保護される。製造時に、アプリケーション・レジスタ命令を回避するために走査することによって、この保護を回避し得るいかなる実行可能なコードも除去することができる。
【００８６】
１２．特権命令を用いなければならないプラットフォーム・メカニズム制御コードに対してＰＬ０を確保する
システム・サービスに対するコードを、ＰＬ０、即ち、最高のハードウェア特権レベルに配置するための指針的な原理は、したがって、次のようになる。サービスの正確な機能に対しては特権命令が不可欠である。このようなサービス（「プラットフォーム制御サービス（Platform Control Services ）」（ＰＣＳ）と呼ばれる）のみが、ＰＬ０におけるコンパートメントにおいて実行される。ＰＬ０において実行されるコードは、ハードウェアに対する完全な制御を及ぼすことができる。ＰＬ０コード内での悪意な行為に対しては、いかなる防御も存在しない。そのため、このようなコードは、最小限でなければならず、またハードウェア命令レベルにおいて正確であることが知られていなければならない。
【００８７】
１３．重要なプラットフォーム制御ソース・コードを公開する
プラットフォーム制御コード（ＰＬ０において実行される）が正確かつ確実であることは、不可欠である。このような正確さを主張および宣伝するだけでは、十分ではない。セキュリティおよび暗号化業界の指針的な慣行によれば、重要なプラットフォーム制御ソース・コードは、隠すことなく公開して、専門家による再検討および批判が行われるようにしなければならない。ＰＬ０コードの有効性および正確性が確実であることは、この同業者による評価に基づかなければならない。
【００８８】
１４．プラットフォーム制御サービス呼び出しを、暗号を用いて認証する
従来のシステムでは、ＰＬ０において実行することが、プロセッサの特権命令を実行するための許可の構成要素である。ＣＥ２の実施形態においては、特権命令が必要なサービスはＰＬ０においてコンパートメント化され、これらのプラットフォーム制御サービスを呼び出すことによって、プラットフォーム制御機能が行われる。物理プラットフォームはＰＣＳによって制御されるため、特権の下部レベルで動作するコード・イメージからのＰＣＳ呼び出し自体が、許可および認証されなければならない。
【００８９】
１５．徹底的に防御する
可能ある場合は、予期しない脆弱性に対して警戒するために、複数のレベルの保護を確立する。これは、１つのレベルの保護で十分であると考えられる場合でも行うべきである。たとえば、コード・イメージの特権保護および組織的保護の意味するところは、正確なコード・イメージのみが常に、システムの最高の特権レベルで実行されるハードウェア制御サービスを呼び出すということである。それでもなお、プラットフォーム制御サービスに対する呼び出しは、呼び出しの点を常に認証する。
【００９０】
１６．システム管理および動作タスクを最小限にし／簡単化する
特にセキュリティ脆弱性よりも先行するために、毎月、毎週、または毎日でさえ、パッチ競争に加わらなければならない場合には、現在のシステムに対するシステム管理、動作の複雑さ、および全体的な所有コスト（ＴＣＯ：Total Cost of  Ownership）は、過大なものとなる。好ましい実施形態においては、ＣＥ２設計によって、インストレーション、構成、セルフ・テスト、および動作が、３０分未満で可能になる。異なるコンピュータにおけるネットワーク・インターフェースを介して、管理を行ってもよい。オペレータ・グラフィカル・ユーザ・インターフェース（ＧＵＩ）によって、構成パラメータの理解しやすい検査および変更、ならびにシステム負荷および性能の連続的なモニタリングを可能にしなければならない。
【００９１】
１７．システム管理者およびオペレータを、暗号を用いて認証する
システム管理者またはオペレータからのインターフェースは、暗号認証によって保護される。ＳＳＬ接続を通して行われる２因子または３因子の身元認証を用いてもよい。システムにルート・キーおよび初期乱数シード・データを与えるために、別個の一組のトークンまたは３つのトークンを必要としてもよい。ＣＤＲＯＭまたはＤＶＤＲＯＭからのＣＥ２の起動は、おそらく完全性および機密性の両方に対する暗号保護によって、可能になる。
【００９２】
１８．再生可能性に対して設計する
次のようなサービスを、ＣＥ２内に設ける。すなわち、システム・エラーが起きた場合に、アプリケーションを有効にして、容易に、イベントの原因を決定し、イベントの発生を記録し、動作状態を復元し、および処理を再開するか、あるいはそれ自体を再始動するようにするサービスである。簡単なリセットおよび再始動システム・サービスを、設ける必要がある。
【００９３】
典型的なコンピュータ・システム１００は、典型的なサーバ、たとえば２−ウェイＨＰサーバｒｘ５６００、４−ウェイＨＰサーバｒｘ５６７０、ＨＰサーバｒｘ２６００などを表しており、これらを用いて本発明の種々の特徴を利用することができる。次にコンピュータ・システム１００について、図１を参照して説明する。この簡単化された例では、コンピュータ・システム１００には、データおよび制御情報を通信するためのバス１３０または他の通信手段、ならびにバス１３０を経由して結合される１つまたは複数のプロセッサ１０５、たとえばインテル（登録商標）アイテニアム（登録商標）またはアイテニアム（登録商標）２プロセッサが含まれている。
【００９４】
コンピュータ・システム１００にはさらに、ランダム・アクセス・メモリ（ＲＡＭ）または他の動的な記憶デバイス（メイン・メモリ１１５と言われる）が含まれており、これらがバス１３０に結合されて、プロセッサ１０５が実行すべき情報および命令を記憶するようになっている。またメイン・メモリ１１５を、プロセッサ１１５が命令を実行する間に一時的な変数または他の中間の情報を記憶するために、用いてもよい。本発明の種々の実施形態によれば、メイン・メモリ１１５は、領域識別子ベースのメモリ・パーティショニング・メカニズムを介してパーティショニングされていてもよい。結果として生じるパーティションを、１つまたは複数のプロセッサに割り当てて、このようなプロセッサによる排他的なアクセスがなされるようにしてもよい。これは、ハードウェア・ベースの隔離メカニズムを用いることによって、たとえばメモリの領域を保護キーに関連させることによって、行われる。
【００９５】
またコンピュータ・システム１００には、読み出し専用メモリ（ＲＯＭ）１２０および／または他の静的な記憶デバイスが含まれており、これらはバス１３０に結合されて、静的な情報、たとえば暗号のデジタル署名（１つまたは複数のＣＥ２、カスタマイズされたアプリケーション、およびオペレーティング・システムの初期コードおよびデータ・イメージに関連する）、ならびにプロセッサ１０５に対する命令を記憶するようになっている。
【００９６】
また大容量記憶装置１２５、たとえば磁気ディスクまたは光ディスク、およびその対応するドライブを、バス１３０に結合して、情報および命令、たとえばオペレーティング・システム・ローダ、オペレーティング・システム、１つまたは複数のカスタマイズされたアプリケーション、および関連するＣＥ２、初期化ファイルなどを記憶するようにしてもよい。
【００９７】
また１つまたは複数の通信ポート１１０を、バス１３０に結合して、コンピュータ・システム１００とのネットワーク接続および情報通信を、たとえばローカル・エリア・ネットワーク（ＬＡＮ：Local Area Network）、ワイド・エリア・ネットワーク（ＷＡＮ：Wide Area Network ）、インターネット、または公衆交換電話網（ＰＳＴＮ：Public Switched Telephone Network ）によって、サポートするようにしてもよい。通信ポート１１０には、１つまたは複数のモデムなどの良く知られたインターフェースの種々の組み合わせが含まれて、以下のものを提供するようになっていてもよい。ダイアル・アップ能力、１つもしくは複数の１０／１００イーサネット・ポート、１つもしくは複数のギガ・ビット・イーサネット・ポート（ファイバおよび／または銅）、１つもしくは複数のネットワーク・プロトコル・オフロード・ボード、またはインターネット環境において広く用いられている他の良く知られたネットワーク・インターフェース。これによって、何らかのイベントが発生したときに、コンピュータ・システム１００は、多くの他のネットワーク装置、クライアント、および／またはサーバに、従来のネットワーク・インフラストラクチャ、たとえば企業のイントラネットおよび／またはインターネットを介して、結合され得る。
【００９８】
また必要に応じて、オペレータおよびアドミニストレイティブ・インターフェース１３５、たとえばディスプレイ、キーボード、およびカーソル制御デバイスを、バス１３０に結合して、コンピュータ・システム１００とのオペレータの直接的なやり取りをサポートするようにしてもよい。他のオペレータおよびアドミニストレイティブ・インターフェースを、通信ポート１１０を通して接続されたネットワーク接続を通して設けることが可能である。
【００９９】
最後に、リムーバブル記憶メディア１４０、たとえば１つまたは複数の外部またはリムーバブル・ハード・ドライブ、テープ、フロッピィー・ディスク、光磁気ディスク、コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク書き込み可能メモリ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、デジタル多目的ディスクまたはデジタル・ビデオ・ディスク（ＤＶＤ）（たとえばＤＶＤ−ＲＯＭおよびＤＶＤ＋ＲＷ）、ジップ・ディスク、またはＵＳＢメモリ・デバイス、たとえば親指ドライブまたはフラッシュ・カードを、対応するドライブ、ポートまたはスロットを介して、バス１３０に結合してもよい。
【０１００】
図２Ａおよび図２Ｂに、システム資源のパーティショニングを概念的に例示する。図示した表の例では、行は典型的なハードウェア資源を表わし、列は動作環境を表わしており、Ｘによって、どの動作環境に、特定のハードウェア資源またはこのような資源の一部が割り当てられているかが識別される。全体として、特定の列におけるＸは、対応する動作環境に割り当てられたシステム資源のパーティションを表わす。
【０１０１】
図２Ａに示したシステム資源のパーティショニングによれば、ＳＧＰＯＳには、１つまたは複数のプロセッサ・ユニット、メモリの１つまたは複数のバンク／範囲、１つまたは複数の周辺機器および関連するアダプタ・カード、ならびに１つまたは複数の組の論理資源が割り当てられている。すなわち、前述の資源のリストを備えるシステム資源のパーティションが、ＳＧＰＯＳの排他的な利用に対して識別されている。同様に、この例では、Ｃ２Ｅ２１を排他的に使用することに対して、１つまたは複数のプロセッサ・ユニット、メモリの１つまたは複数のバンク／範囲、１つまたは複数のＬＡＮアダプタ・カード、ならびに１つまたは複数の組の論理資源を備えるシステム資源のパーティションが識別され、割り当てられている。最後に、Ｃ２Ｅ２２には、その排他的な使用および管理に対して、１つまたは複数のプロセッサ・ユニット、メモリの１つまたは複数のバンク／範囲、１つまたは複数の周辺機器および関連するアダプタ・カード、ならびに１つまたは複数の組の論理資源が割り当てられている。
【０１０２】
図示した簡単なパーティショニング例では、特定のタイプのハードウェア資源を、複数の動作環境に対して割り当ててもよいが、このような資源を等しく分割する必要はない。たとえば、図２Ａでは、ＳＧＰＯＳ、Ｃ２Ｅ２１、およびＣ２Ｅ２２列のそれぞれに対するプロセッサ行におけるＸは、少なくとも１つのプロセッサ・ユニット（通常はプロセッサ全体）がその特定の動作環境に対してパーティショニングされている、即ち、割り当てられていることを示している。しかし、動作環境がすべて、利用可能なハードウェア資源の同一の限定されたプールから得られているという事実を除けば、各動作環境に対してパーティショニングされるプロセッサ・ユニットの数は、残りに対してパーティショニングされる数とは無関係である。
【０１０３】
同様に、システム資源を分割して、任意の別個のシステム資源またはシステム資源の集まりに関して均一なパーティションまたは等しく設けられたパーティションにする必要はない。さらにパーティションは、静的であってもよいし動的であってもよい。特定のパーティションに関連する論理および物理システム資源の数および／またはタイプは、たとえば、ＣＥ２またはＳＧＰＯＳのアドレス要求に対して、または新しいＣＥ２の開始または既存のＣＥ２の終了に応答して、動的に再割り当てされてもよい。
【０１０４】
この時点において、ある動作環境に他の動作環境によるアクセスから割り当てられたシステム資源のパーティションを保護するために用いてもよい種々のハードウェア隔離メカニズムついて説明すると都合がよい。将来のプロセッサは、ＳＧＰＯＳおよび／またはＣＥ２が用いるハードウェア・ベースの隔離技術を提供すると予想される。しかし、このようなハードウェア・ベースの完全隔離の技術が利用できるようになるまで、ＣＥ２に割り当てられるシステム資源のパーティションを、オペレーティング・システムを静止させる（quiescing ）ことおよびオペレーティング・システムを休止状態に置くことによって、常駐のオペレーティング・システムから保護してもよい（休止状態ではオペレーティング・システムは、何も実行しておらず、再始動するための最小限の組のシステム資源のみを利用する）。必要に応じて、１つまたは複数の既存の保護メカニズム、たとえば保護キー・ベースのメモリ・パーティション、領域識別子割り当て、保護識別子割り当て、メモリ・ページ・アクセス権値を用いて、ＣＥ２間および／またはＣＥ２内のパーティション・セキュリティを強制してもよい。
【０１０５】
あるいは、常駐のオペレーティング・システムは依然として動作していてもよく、安全なプラットフォーム・インターフェースを用いて、パーティション間の所望のレベルの隔離を得てもよい。これはたとえば、「オペレーティング・システムおよびカスタマイズされた制御プログラムとインターフェースする安全な機械プラットフォーム(Secure Machine Platform that Interfaces to Operating Systems and Customized Control Programs)」と題された、米国特許出願第１０／１１８，６４６号明細書、２００２年１２月１９日公開、公開番号第２００２／０１９４３８９Ａ１号（「６４６明細書」）に記載されている、組み合わされたハードウェアおよびソフトウェアの安全なプラットフォーム・インターフェースである。なお、この内容は本明細書において参照により全体として取り入れられている。
【０１０６】
たとえばＨＰスーパードーム・プラットフォームによって提供されるハードウェア・パーティショニング能力によっても、パーティション間の完全な隔離をもたらす第３の代替案が得られる。ＳＧＰＯＳがパーティションを動的に構築するのではなく、これらの手段を用いて、システム管理者がパーティションを静的に構成してもよい。パーティションは、それほど容易には変更されないが、隔離はハードウェアによって十分に強制することができる。
【０１０７】
図２Ｂに示すシステム資源のパーティショニングは、ＳＧＰＯＳが休止状態である場合のシステム資源割り当ての特定の状態を表している。ＳＧＰＯＳにはプロセッサ・ユニットが割り当てられていないため、ＳＧＰＯＳでは、いかなるプロセスも実行できない。他のシステム資源割り当て構成も、ＳＧＰＯＳが休止状態であることと整合する。たとえば、ＳＧＰＯＳにシステム資源が割り当てられないときには（ＳＧＰＯＳ列が空である場合に）、ＳＧＰＯＳは休止状態であり、１つまたは複数のＣＥ２がシステム資源の排他的制御および管理を行う。逆に、Ｃ２Ｅ２に関連する列が空であるときには、たとえば起動処理の間、またはＣ２Ｅ２が終了してそのパーティションがＳＧＰＯＳへ放出された後では、ＳＧＰＯＳがシステム資源の排他的制御および管理を行う。
【０１０８】
図３に、本発明の一実施形態によるＳＧＰＯＳ３２０、システム資源パーティション３１０、およびＣ２Ｅ２３３０の間の関係を概念的に例示する。簡潔に述べれば、本発明の実施形態では、常駐のオペレーティング・システムからは分離され区別される安全な動作環境の形成がサポートされる。複数パーティション構成では、システム資源の一部は、安全な動作環境に割り当てられ、その直接的で排他的な制御の下に配置される。システム資源の残りの部分は、１つまたは複数の他の安全な動作環境に割り当てられ、かつ／もしくは常駐のオペレーティング・システムによって保持される。単一のパーティション構成では、常駐のオペレーティング・システムは、実質的にすべてのコンピュータ・システムのシステム資源の制御を明け渡して、システム資源を安全な動作環境の完全制御の下に置いてもよい。
【０１０９】
図示した例では、資源を、２つのシステム資源パーティション３１０、すなわちＳＧＰＯＳ資源３２１およびＣ２Ｅ２資源３３１に、パーティショニングおよび割り当てた後におけるコンピュータ・システム３００が概念的に例示されている。説明を容易かつ簡潔にするために、システム資源の２つのパーティションのみを例示しているが、本発明の実施形態は、任意の数のＳＧＰＯＳおよび／またはＣＥ２に割り当てられる任意の数のパーティションに等しく適用可能であることを理解されたい。さらに、各列には、複数のおそらく相互に隔離されたパーティションが含まれ得るが、ここでの説明のために、各列を、単一のパーティションであるかのように説明する。
【０１１０】
図示した概念上の実施形態によれば、垂直方向の両頭の矢印は、パーティション内の層間の通信（たとえば、パーティション内通信）を表わし、一方で、水平方向の両頭の矢印は、パーティション間の通信手段（すなわち、パーティション間通信）を表わす。サポートされる特定のアプリケーションの要求に依存するが、パーティション間通信に対して設けられる通信手段によって、以下のような通信が可能になってもよい。（１）すべてのパーティション間の通信、（２）厳密に、ＳＧＰＯＳ３２０の制御の下に留まるパーティションと、ＣＥ２（たとえばＣ２Ｅ２３３０）の制御の下のパーティションとの間の通信、または（３）他の基準に従って制御される通信。本実施形態では、パーティション間通信がアプリケーション間で起こると例示しているが、注目すべきは、このような通信が、ＳＧＰＯＳカーネル・モード・サービス３２４によって提供されるサービスおよび非移植性のカスタマイズされた制御およびサービス３３２によって提供されるサービスを伴っていてもよいし、これらのサービスを介してもよいことである。
【０１１１】
任意のイベントにおいて、このようなパーティション間通信を、以下のものを含む複数の目的に対して用いてもよい。システム初期化、構成、および制御；システム・デバッギングおよびモニタリング；ネットワーク制御およびモニタリング・システムたとえばＨＰのオープンビュー（OpenView）またはＩＢＭのティボリ（Tivoli）との通信；オペレーティング・システム、アプリケーション（たとえば、ユーザ・アプリケーションまたはカスタマイズされたアプリケーション）、またはＣＥ２サービスを異なる環境から呼び出すこと；ならびに、ＣＥ２および／またはＳＧＰＯＳ３２０間でのハードウェアおよび／または論理資源の割り当てをシフトさせること。パーティション間通信を、種々の良く知られた技術によって実施してもよい。このような技術は、たとえば、共有の仮想メモリ、共有の一方向仮想メモリ（一方の環境は書き込めるだけ、他方は読み出せるだけ）、遠隔の手順呼び出し、ソフトウェア割り込み、および内部メッセージである。
【０１１２】
図３に示す簡単化された概念上の表現は、アプリケーション間に通常は論理的に介在される複数レベルの抽象化を例示している。アプリケーションは、たとえば従来のオペレーティング・システム、たとえばＵＬＷオペレーティング・システムにおける任意のユーザ・アプリケーション３２８、およびその下にあるシステム資源、たとえばＳＧＰＯＳ資源３２１である。抽象化、たとえば仮想メモリ、タスク、ファイルおよびファイル・システム、ソケットおよびソケット・インターフェース、ネットワーク・スタックなど（これらは、ユーザ・モード・サービス３２６、カーネル・モード・サービス３２４、およびＯＳカーネル３２２によって実施される）は、性能が重要なアプリケーション、たとえば高性能ウェブ・エンジン、に対する容認できないほどの高いオーバーヘッドに対する重要な寄与因子である。
【０１１３】
対照的に、ＣＥ２、たとえばＣ２Ｅ２３３０は、これらが、多目的オペレーティング・システムに課される移植性の制約に限定されないため、特定のハードウェア・プラットフォームおよび／またはアプリケーションに対して簡単化および最適化された計算および／またはＩ／Ｏ構造の実現を支持し、高いオーバーヘッドの構成および抽象化のコンセンサスを回避することができる。たとえば、Ｃ２Ｅ２３３０が提供する非移植性のカスタマイズされた制御およびサービス３３２は、Ｃ２Ｅ２資源３３１と、Ｃ２Ｅ２３３０による排他的な使用および制御に対して割り当てられたその下のシステム資源３１０とを、直接制御してもよく、およびＳＧＰＯＳ３２０が利用しない特定のプロセッサまたは他のシステム資源機構を利用してもよい。
【０１１４】
ＣＥ２、たとえばＣ２Ｅ２３３０の代わりに、さらなる効率を達成することが、多目的能力、たとえばシステム管理、システム起動および構成初期化、およびシステム資源のパーティショニング、およびＳＧＰＯＳ３２０内にすでに存在しているウェブコンテントの生成などを、除外することによって、達成することができる。またＣ２Ｅ２は、ＳＧＰＯＳに基づいて、このような多目的能力を提供してもよい。
【０１１５】
この例では、システム資源パーティション３１０、すなわちＳＧＰＯＳ資源３２１およびＣ２Ｅ２資源３３１は、等しくサイズ取りされたボックスとして示されており、同一の特性が潜在的に意味されているが、コンピュータ・システム３００のシステム資源は、任意の個々のシステム資源またはシステム資源の集まりに関して均一なパーティションまたは等しく提供されるパーティションに分割される必要はない。たとえば、あるパーティションには、Ｘ個のプロセッサ、Ｙ  ＭＢの物理メモリ、およびＺ個のＩ／Ｏ装置が含まれ、一方で、他のパーティションには、Ｒ個のプロセッサ、Ｓ  ＫＢの物理メモリ、およびＴ個のＩ／Ｏ装置が含まれていてもよい。さらにシステム資源パーティション３１０は、静的であってもよいし動的であってもよい。
【０１１６】
図４は、本発明の一実施形態によるＳＧＰＯＳ処理を例示するフロー・ダイアグラムである。この例では、ＳＧＰＯＳには、１つまたは複数のＣＥ２と協調してコンピュータ・システムのシステム資源を管理する手段が含まれている。またＳＧＰＯＳには、システム資源、たとえば（これらに限定されないが）、プロセッサ、物理メモリおよび記憶装置、仮想メモリ識別子値、Ｉ／Ｏ装置、および例外送出を、パーティショニングする手段が含まれていてもよい。またこれらの手段は、すべてのまたは実質的にすべてのシステム資源が、１つまたは複数のＣＥ２に移される場合も網羅している。この場合には、ＳＧＰＯＳは、ＣＥ２が資源のパーティションの制御をＳＧＰＯＳへ戻すときまで、受動性の状態に留まる。
【０１１７】
ＳＧＰＯＳにはさらに、ＣＥ２を初期化して呼び出す手段、ＣＥ２にその直接的かつ完全な制御の下に配置されたシステム資源および／またはシステム管理デューティを通知する手段、およびＣＥ２からＳＧＰＯＳ環境を保護するためにハードウェア隔離および保護メカニズムを用いる手段が、含まれている。安全なシステムを得るために、これらの手段には、信頼の連鎖をＣＥ２内へ拡張する能力が含まれている。このように拡張することは、ＣＥ２の初期コードおよびデータ・イメージ、関連する非移植性のカスタマイズされた制御およびサービス、およびカスタマイズされたアプリケーションの妥当性を、暗号のデジタル署名を用いて確認することによって行われる。
【０１１８】
現在の多目的オペレーティング・システムの中には、前述の能力を提供するものはない。既存のオペレーティング・システムは、システム資源の完全な制御がカーネルの直接制御から生じることはないという仮定の下で構築されている。仮想機械システムによって、多目的オペレーティング・システムがその制御下にあると信じている資源が仮想化されるが、仮想機械カーネルは、実際のシステム資源に対して完全な制御を保持しており、したがってＣＥ２との共生的パートナとしての機能を果たす能力は十分ではない。
【０１１９】
図示した実施形態によれば、ＳＧＰＯＳ処理は一般的に、プレＣＥ２ステージ（任意のＣＥ２が動作中となる前）と、ＣＥ２動作ステージ（少なくとも１つのＣＥ２が実行中で、システム資源の一部の制御を保持する間）とに、分類される。プレＣＥ２ステージは、ブロック４１０〜４４０によって表わされ、ＣＥ２動作ステージは、ブロック４４０〜４８０間のループによって表わされる。簡潔に述べれば、プレＣＥ２ステージには、利用可能なシステム資源をＳＧＰＯＳと１つまたは複数のＣＥ２との間で割り当てること、および１つまたは複数のＣＥ２を開始することが含まれる。ＣＥ２動作ステージの間、ＳＧＰＯＳは、（１）１つまたは複数のＣＥ２からのリクエストに応答し、（２）システム資源を潜在的に再び割り当てて、新しいかまたは再確立されたＣＥ２を初期化および開始し、（３）ＣＥ２が手放したシステム資源を再び取り入れる。
【０１２０】
ＳＧＰＯＳ処理は、システム起動が行われるブロック４１０により開始される。システム起動処理には、通常、プロセッサ・セルフ・テスト・ルーチンを行うこと、およびＲＯＭ内に記憶されたファームウェア命令を実行して、オペレーティング・システム・ローダ・プログラムを大容量記憶装置から読み出して実行することが、含まれる。システム起動プロセスは、ＳＧＰＯＳがシステム資源の下位集合またはすべてのシステム資源を１つまたは複数のＣＥ２に明け渡す通常の起動であってもよい。あるいは、システム起動プロセスは、ＣＥ２によって制御されるべきシステム資源に対してはＳＧＰＯＳが決して制御しないような部分的な起動であってもよい。
【０１２１】
一実施形態によれば、ＳＧＰＯＳおよび１つまたは複数のＣＥ２は、安全なシステムの一部である。安全なシステムにおいて重要なことは、システム資源を制御するソフトウェア・イメージが、完全で正確であること、およびいかなる変更または他の形態の不正変更も受けていないことである。その結果として、このような実施形態においては、システム起動は、信頼の連鎖をＣＥ２へ拡張することをサポートする安全な起動プロセスである。
【０１２２】
将来、コンピュータ・システムが安全に起動する能力を提供することが予想される。これを行うことができる１つの方法は、「６４６明細書」において説明されている。「６４６明細書」の図１９に、デジタル署名に基づく安全な起動プロセスが例示されている。初期ファームウェア・イメージ・デジタル署名の妥当性は、ハードウェアによって確認される。その後の各ファームウェアまたはソフトウェア・イメージのデジタル署名の妥当性は、制御がその後続するイメージに渡される前に、その先行するファームウェアまたはソフトウェア・イメージによって確認される。このようにして、信頼の連鎖を、構築することができ、初期ファームウェア・イメージ内でルーティングすることができ、信頼の連鎖は、ファームウェアのあらゆるイメージ、オペレーティング・システム・ソフトウェア、およびアプリケーション・ソフトウェアを介して拡張される。
【０１２３】
ブロック４２０において、ＳＧＰＯＳは、システム資源の一部の制御を受け取るべき１つまたは複数のＣ２Ｅ２に関する情報を受け取る。たとえば、ＳＧＰＯＳは、１つまたは複数のＣ２Ｅ２に対する非移植性のカスタマイズされた制御およびサービスのシステム資源およびコード・イメージの所望する割り当てを識別する初期化ファイルまたはパーティション記述子を読み出してもよい。あるいは、パーティション記述子情報を、オペレータ指令によって得てもよい。安全なシステムという状況では、ＳＧＰＯＳ処理におけるこの時点において、Ｃ２Ｅ２および関連する非移植性のカスタマイズされた制御およびサービスに対するイメージを、ロードし、および認証することを、ソフトウェア・イメージのデジタル署名の妥当性を確認することによって行ってもよい。
【０１２４】
ブロック４３０では、パーティション記述子によるＳＧＰＯＳパーティション・システム資源によって、次に、ＳＧＰＯＳ資源をＣ２Ｅ２から保護するために、存在するのであるならば、その制御の下に留まるべきシステム資源部分が隔離される。実際には、プロセッサ全体が、コンピュータ・システムの処理資源に対するパーティショニングの最小単位となることが予想される。その結果として、個々のマイクロプロセッサは通常は、ＳＧＰＯＳによってか、あるいはＣ２Ｅ２によって完全に制御されるが、個々のプロセッサのより細かく単位の制御が、環境間の切り換えのより高い計算コストにおいて可能である。
【０１２５】
一実施形態によれば、ＳＧＰＯＳによって、そのパーティション内から生じるすべての割り込みリクエストに対して、割り込みハンドラが提供される。ＳＧＰＯＳが保持するシステム資源に基づいて、ＳＧＰＯＳは、割り込みを無効にし、適切な割り込みベクトルを更新し、割り込みを有効にしてもよい。たとえば、ＳＧＰＯＳに対してパーティショニングされたハードウェア・システム資源に対応する外部の割り込みリクエストに関連する割り込みベクトルを、割り込みベクトル・テーブル内で更新して、ＳＧＰＯＳのパーティション内の適切な割り込みハンドラ・ルーチンのアドレスを識別してもよい。一方で、ＣＥ２に対してパーティショニングされたハードウェア・システム資源に対応する外部の割り込みリクエストに関連する割り込みベクトルは、ＣＥ２が適切な変化を割り込みベクトル・テーブルに対して施して、このような割り込みリクエストをそのパーティション内の適切なハンドラ・ルーチンに送るまで、隠すかその他の場合には一時的に無効にしてもよい。
【０１２６】
またＳＧＰＯＳは、Ｉ／Ｏを再構成してもよい。一実施形態によれば、このような再構成には、ＳＧＰＯＳパーティション内のメイン・メモリの確保された領域間の適切な関連性を、ＳＧＰＯＳパーティション内のメモリ・マッピングされたＩ／Ｏ装置によって形成することが含まれる。たとえば、ネットワーク・デバイスを再構成して、メイン・メモリ・アドレスの確保された領域を介してデバイスに書き込まれたデータが、対応するデバイス・コントローラ・メモリ・アドレスにメモリ・マッピング・ハードウェアによってコピーされるように、およびメイン・メモリ・アドレスの確保された領域を介してデバイスから読み出されたデータが、指定されたプロセッサ・レジスタにメモリ・マッピング・ハードウェアによってロードされるようにしてもよい。同様のＩ／Ｏ再構成を、ＣＥ２によって、それらの初期化処理の間に行ってもよい。
【０１２７】
一実施形態によれば、ＳＧＰＯＳによって保持されるべきシステム資源を隔離することを、前述したハードウェアまたはソフトウェアの隔離および保護能力の１つまたは複数を利用することによって、たとえばＳＧＰＯＳを静止させること（quiescing ）、安全なプラットフォーム・インターフェースを用いること、またはハードウェア・プラットフォーム・パーティショニングを利用することによって、達成してもよい。
【０１２８】
使用される保護メカニズムにかかわらず、この例では、Ｃ２Ｅ２を呼び出す前に、ＳＧＰＯＳが、ＳＧＰＯＳによって排他的に使用されるべきメモリ資源および他のシステム資源を囲いで仕切り、その他の場合にはこのようなシステム資源に対するアクセスを限定する。Ｃ２Ｅ２は、その初期化処理の間に同一のことをしてもよい。既存のハードウェア隔離メカニズムは、Ｃ２Ｅ２に割り当てられたシステム資源のパーティションを、常駐のオペレーティング・システムから完全に保護するには十分ではないことが知られているが、Ｃ２Ｅ２内またはＣ２Ｅ２間の保護に対しては依然として実行可能である。しかし、前述したように、システム資源が１つまたは複数のＣ２Ｅ２間でのみ割り当てられ、ＳＧＰＯＳが受動性の状態に配置される実施形態においては、１つまたは複数の現在または将来の保護メカニズム、たとえばヒューレット・パッカードのＰＡＲＩＳＣおよびＩＡ６４システムによって提供される高性能なメモリ保護アーキテクチャ、または同様のセキュリティ技術を用いて、Ｃ２Ｅ２内またはＣ２Ｅ２間のパーティションを確保してもよい。このような実施形態においては、たとえば、受動性の状態に入る前に、ＳＧＰＯＳが、物理メモリおよび領域識別子の組をＣＥ２に割り当て、およびメモリ属性を相応に設定して、メモリ領域を、ＣＥ２の制御の下に配置されるべき対応するシステム資源に関連させてもよい。
【０１２９】
通常は、メモリは、ページ（すなわちメモリ・ページ）にパーティショニングされる。メモリ・ページは、Ｉ／Ｏ動作、仮想メモリ−物理メモリのマッピング、隔離および保護属性、および他のタイプのオペレーティング・システム作用に関して、メモリの基本単位である。ＩＡ−６４の実施形態においては、排他的なドメインを、領域識別子および保護キー・ベースのメモリ・パーティションによって強制してもよい。１つまたは複数の領域識別子割り当て、保護識別子割り当て、メモリ・ページ・アクセス権値、および保護キー・ベースのメモリ・パーティションを用いて、特定の仮想的にアドレス指定されたメモリの領域、たとえば不連続な、あるいは連続するメモリ・ページのグループを、１つまたは複数のＣＥ２の制御の下に配置されるべき１つまたは複数のプロセッサに、効果的に関連させることができる。他の実施形態によれば、メモリ保護ドメインは、ウィッチェル（Witchel ）他による「モンドリアン・メモリ保護（Mondrian Memory Protection）」、（２００２年１０月）、ASPLOS-X、プログラミング言語およびオペレーティング・システムに対するアーキテクチャ・サポートに関する第１０回国際会議（Tenth International Conference on Architectural Support for Programming Languages and Operating Systems ）に説明されているように実施してもよい。
【０１３０】
本実施形態のフロー・ダイアグラムに戻って、一旦、システム資源をパーティショニングして、ＳＧＰＯＳを適切に隔離したならば、ブロック４４０において、ＳＧＰＯＳは、Ｃ２Ｅ２を呼び出して、Ｃ２Ｅ２にシステム資源がその制御下に配置されていると伝えることによって、システム資源の１つのパーティションの完全制御をＣ２Ｅ２に移す。この例によれば、ＳＧＰＯＳから、かつ他のシステム資源パーティション内で同時に実行され得る他のＣ２Ｅ２から、Ｃ２Ｅ２を隔離することによって、Ｃ２Ｅ２自身のパーティションを適切に保護することはＣ２Ｅ２自体の責務である。
【０１３１】
この時点で、１つまたは複数のＣ２Ｅ２は動作し、ブロック４４０〜４８０間のループの処理を、すべてのＣ２Ｅ２が終了してＳＧＰＯＳ処理が終了するまで行う。一実施形態によれば、ＳＧＰＯＳを、それが１つまたは複数のＣＥ２を初期化および開始した後に、休止状態で配置されてもよいことを思い起こされたい。しかし、本実施形態においては、１つまたは複数のＣ２Ｅ２を初期化および開始した後で、ＳＧＰＯＳは、判定ブロック４５０へと進み、Ｃ２Ｅ２およびオペレータ・リクエストに応答する状態に留まる。
【０１３２】
判定ブロック４５０では、ＳＧＰＯＳが、（たとえば、Ｃ２Ｅ２またはオペレータからの）外部リクエストの種類を判定し、それに応答して適切な処理を開始する。このようなリクエストの存在に気付くためのメカニズムは、ポーリング、割り込み、ソフトウェア信号または他の適切な信号送信手段を介してもよく、およびこのようなリクエストを受け取るメカニズムは、内部メッセージング・インターフェース、外部インターフェース（たとえば、ダイナミック・コンテントに関係するウェブ・プロトコル・リクエストに対するもの）、通信インターフェース、内部ＲＰＣなどを介してもよい。いずれにしても、図示した実施形態によれば、Ｃ２Ｅ２動作ステージの間に取り扱われる一般的な３つのタイプのリクエストが存在する。すなわち、Ｃ２Ｅ２からのリクエスト、新しいＣ２Ｅ２を開始するか、あるいはＣ２Ｅ２を再確立するためのオペレータ指令からのリクエスト、およびＣ２Ｅ２資源の戻りからのリクエストである。ＳＧＰＯＳが、Ｃ２Ｅ２からのリクエストが受け取られたと判定した場合、処理はブロック４６０に続く。ＳＧＰＯＳが、新しいＣ２Ｅ２を開始するか、あるいはＣ２Ｅ２を再確立するオペレータ指令が受け取られたと判定した場合、処理はブロック４７０に続く。ＳＧＰＯＳが、Ｃ２Ｅ２がシステム資源を戻していると判定した場合、処理はブロック４８０に続く。
【０１３３】
ブロック４６０では、Ｃ２Ｅ２からのリクエストに応答して、ＳＧＰＯＳによって、結果およびサービス・リクエストが用意される。これは、結果を、Ｃ２Ｅ２が結果にアクセスできる場所に書き込むことによって行われる。
【０１３４】
ブロック４７０では、新しいＣ２Ｅ２の開始または以前のＣ２Ｅ２の再確立に関係する指令の受け取りに対するリクエストに応答して、ＳＧＰＯＳは、新しいＣ２Ｅ２に対するシステム資源を割り当て、次にブロック４４０に進む。
【０１３５】
ブロック４８０では、Ｃ２Ｅ２によって開始されたシステム資源の戻りに応答して、ＳＧＰＯＳが、Ｃ２Ｅ２と協力して、システム資源をその制御の下に再び取り入れる。たとえば、ＳＧＰＯＳおよびＣ２Ｅ２は、割り込みを再統合してもよく、Ｉ／Ｏを再構成することによって、Ｉ／Ｏ装置のその後の管理に対する責務をＳＧＰＯＳヘ送ってもよい。
【０１３６】
図５は、本発明の一実施形態によるＳＧＰＯＳ起動処理およびＣ２Ｅ２初期化を概念的に例示する簡略化されたブロック・ダイアグラムである。このマルチ・プロセッサ・サーバ５００の簡略化された図では、２つのプロセッサのみ（すなわち、ＳＧＰＯＳプロセッサ５１０およびＣ２Ｅ２プロセッサ５１５）、大容量記憶装置５２０たとえば内部ハード・ドライブ、およびメモリ５６０が示されている。
【０１３７】
この例では、大容量記憶装置５２０は、少なくとも１つのＳＧＰＯＳ５４０と、少なくとも１つのカスタマイズされたアプリケーション５３０と、少なくとも１つのＣ２Ｅ２５５０とに対する命令およびデータを記憶し、その命令およびデータは、カスタマイズされたアプリケーション５３０に対して調整される計算および／またはＩ／Ｏ構造を実施し、ＳＧＰＯＳ５４０が利用していない特定のプロセッサまたは他のシステム資源機構を利用する。また大容量記憶装置５２０には、ＳＧＰＯＳローダおよびＳＧＰＯＳイメージに対するデジタル署名５４５および５４６と、カスタマイズされたアプリケーション５３０に対するデジタル署名５３５と、Ｃ２Ｅ２５５０に対するデジタル署名５５５と、ＳＧＰＯＳ５４０にＣ２Ｅ２５５０の存在およびシステム資源要求についての情報を伝達し、パーティション構成に関する情報を提供するための任意の初期化ファイルまたはパーティション記述子５４１とが、記憶される。
【０１３８】
ＳＧＰＯＳプロセッサ５１０およびＣ２Ｅ２プロセッサ５１５は、同一のオペレーティング・システム・イメージを用いていてもよいし、または独立に起動してもよい（たとえば、オペレーティング・システム・ローダ・プログラムと、同一か、あるいは異なるオペレーティング・システム・イメージとを別個にロードするだけでなく、ＳＧＰＯＳローダおよびＳＧＰＯＳイメージに対するデジタル署名５４５および５４６を検証する）。一方のプロセッサ、ＳＧＰＯＳプロセッサ５１０が、ＳＧＰＯＳ５４０の完全な制御の下に留まってもよく、他方のプロセッサ、Ｃ２Ｅ２プロセッサ５１５が、Ｃ２Ｅ２５５０の完全な制御の下に配置されてもよい。以前に説明したように、ＳＧＰＯＳ５４０およびＣ２Ｅ２は通常、それぞれ、それらの個々のシステム資源パーティション（たとえば、メモリ範囲５７０および５８０）を、ハードウェア隔離を用いて隔離する。たとえば、メモリ５６０は、多くのページ（たとえば、メモリ・ページ５６５）として表される。種々の高性能なメモリ保護アーキテクチャによって、隔離メカニズム、たとえば領域識別子、保護識別子、およびメモリ・ページ・アクセス権が与えられる。適切な識別子値５６６をメモリ・ページに関連させることで、メモリ・ページを、特定のシステム資源パーティションに割り当ててもよい。このような識別子値は、メモリ・ページに対する仮想のマッピングを記述するデータ構造内のフィールドとして直接取り入れてもよいだけでなく、関連するメモリ制御データ構造内に記録してもよい。
【０１３９】
この例では、イメージは局所的な記憶デバイスからロードされるが、代替的な実施形態、たとえばコンピュータ・システムが内部ハード・ディスクにアクセスすることなくネットワーク（たとえばＩＰネットワーク）を通して起動される環境においては、１つまたは複数のイメージを通信ポートを介して１つまたは複数のネットワーク・アクセス可能な記憶装置から提供できることが、意図されている。
【０１４０】
図６Ａに、本発明の一実施形態によりウェブ・サーバに対して安全な高性能処理環境を提供するように構成されたコンピュータ・システム６００を概念的に例示する。同図では、ＳＧＰＯＳ６２５によって、システム資源のパーティション６２９の制御が保持されている。図示したシステム構成は、プロセッサ内の適切なハードウェア・ベースの隔離機構、関連するチップセット、または動作環境とシステム資源（たとえば、オペレーティング・システムとＣＥ２）との間に介在される中間のインターフェース（たとえば前述の安全なプラットフォーム・インターフェース）の存在によってサポートされる典型的な複数パーティション構成を例示している。このような隔離機構が広く利用できるようになるまで、プラットフォーム・ハードウェア・パーティショニングまたはより典型的な単一パーティション構成、たとえば図６Ｂに例示したものが、安全なシステムに対する最適な構成であると予想される。
【０１４１】
いずれにしても、本例に戻って、コンピュータ・システム６００の概念的な例示が、そのシステム資源６１０を、ダイナミック・コンテント・ジェネレータ６２０にサービスを提供するＳＧＰＯＳ６２５に関連するパーティション６２９と、安全なウェブ・サーバ６３０にサービスを提供するＣＥ２６３５に関連するパーティション６３９との間で、（たとえば、図４および図５を参照して説明した処理に従って）割り当てた後の状態として、なされている。前述したように、ＣＥ２６３５は、全体としては、ＳＧＰＯＳ６２５および多目的オペレーティング・システムに課された移植性制約に限定されないため、ＣＥ２６３５は、その下の特定のハードウェア・プラットフォーム（たとえば１つまたは複数のインテル（登録商標）アイテニアム（登録商標）２プロセッサおよび関連するチップセット）および／または特定のカスタマイズされたアプリケーション（たとえば安全なプロキシ・サーバまたは安全なウェブ・サーバ６３０）に対して簡単化および最適化された計算および／またはＩ／Ｏ構造を実施することができる。
【０１４２】
本例で例示する１つの可能なシステム構成は、将来のハードウェア隔離能力または現在のハードウェア・プラットフォーム・パーティショニングを用いたときに、ウェブ・サーバ・セキュリティおよび性能を強化する一方で、他のカスタムアプリケーションを実行する能力の維持を、常駐のオペレーティング・システムＳＧＰＯＳ６２５および常駐のオペレーティング・システムとは別個の動作環境ＣＥ２６３５の同時かつ協力的な実行をサポートすることによって、可能にするものである。
【０１４３】
図６Ｂに、本発明の代替的な実施形態によるウェブ・サーバ６３０に対する安全な高性能処理環境を提供するように構成されたコンピュータ・システム６００を概念的に例示する。図示したシステム構成が例示する可能なシステム構成は、ＣＥ２６３５を初期化および開始した後で、常駐のオペレーティング・システムが、すべての、あるいは実質的にすべてのシステム資源６１１の完全な制御をＣＥ２６３５へ引き渡した後に、休止状態に配置されるものである。常駐のオペレーティング・システムは、システム資源６１１がＣＥ２６３５によって解放されたときに、休止状態から回復することができる。ＳＧＰＯＳ６２５が静止（quiescing ）され、かつすべての、あるいは実質的にすべてのシステム資源６１１の完全な制御が１つまたは複数のＣＥ２内に配置されているようなハードウェア・プラットフォーム・パーティショニングまたはシステム構成は、期待されているハードウェア・ベースの隔離機構が利用可能となり、かつ業界の容認を得るまでは、支配的な構成であると予想される。ＣＥ２パーティション内および／またはＣＥ２パーティション間における隔離が望ましい限り、前述したように、現在または将来の高性能なメモリ保護アーキテクチャ、たとえば領域識別子、保護識別子、およびメモリ・ページ・アクセス権を用いてもよい。
アドレス指定およびメモリ管理
この節およびそれに続く主要な節における説明は、本発明のアイテニアム（登録商標）２の実施形態を例示するものである。本発明の実施形態は、一例として例示されており、限定は意味しない。
【０１４４】
図９Ａに、第１世代の多目的オペレーティング・システム、たとえばＩＢＭシステム／３６０に対するＤＯＳオペレーティング・システムによるコードまたはデータの物理的にアドレス指定されるセクションの組織を概念的に例示する。セクション９１０〜９５０が物理メモリ９００内に連続して配置されている。
【０１４５】
図９Ｂに、従来の多目的オペレーティング・システム、たとえばＵＬＷシステムによる、コードまたはデータの仮想的にアドレス指定されるセクション９１０〜９５０の組織、および物理ページ９０８に対するそれらのマッピング（矢印によって例示される）を、概念的に例示する。通常、オペレーティング・システムは、ほぼすべてのページに対して、比較的小さな固定されたページ・サイズ（破線９６０によって例示される）、多くの場合に４ＫＢ（４０９６バイト）または８ＫＢ（８１９２バイト）を選択し、多くのこのような連続するアドレス指定されたページ９１０〜９５０を用いることによって、コードまたはデータのより大きな仮想的にアドレス指定されるセクションをカバーする。ページ９１０〜９５０のそれぞれを、物理ページ９０８（ＰＯ〜Ｐ１１）のいずれか１つにマッピングしてもよい。また従来のオペレーティング・システムでは、より少数のはるかに大きなページを、特定の目的、たとえばオペレーティング・システムまたはディスプレイ・バッファのセクション全体をマッピングするために、用いる場合がある。
【０１４６】
本発明の１つのアイテニアム（登録商標）の実施形態においては、ＣＥ２は、仮想のアドレス指定モードにおいて全体として動作する。しかし、図１０Ａおよび図１０Ｂに例示するようにページを用いることは、従来の多目的オペレーティング・システムが採用するものとは全く異なる。
【０１４７】
アイテニアム（登録商標）２プロセッサを用いる本発明の好ましい実施形態においては、各ページに対する仮想アドレス変換パラメータは、２つのタイプのメモリ・アクセス保護を含むようにアイテニアム（登録商標）アーキテクチャによって指定される。第１のアクセス保護は、「ページ・アクセス権」（ＡＲ）と呼ばれ、３ビットのアクセス・タイプ・フィールドおよび２ビットのページ特権レベル・フィールドによってエンコードされる。これは、図８Ａのアクセス権テーブル８００に示されている。これらのフィールドによって、特定の特権レベル８３０における読み出し、書き込み、および実行動作の規定された下位集合に対するページに対する許容メモリ・アクセスが限定される。第２のアクセス保護は、「保護キー」（ＰＫ）と呼ばれる。保護キーは、アイテニアム（登録商標）２プロセッサにおいて長さが２４ビットであり、１６，７７７，２１６の別個のキー値を与える。ＰＫがページに関連している場合、ページへのメモリ・アクセスが許可されるのは、マッチングＰＫ値が、保護キー・レジスタ（ＰＫＲ）８５０の組の１つの中に含まれている場合だけである。これは図８Ｂに例示されている。ＰＫＲ８５０における値は、プロセッサの最高の特権レベル（ＰＬ０）で動作するコードのみによって設定することができる。ＰＫＲ８５０における値には、保護キー８６０、３つのビット８７０、８７２、８７４が含まれる。これらは設定されると、それぞれ、ページおよび有効なビット８８０に対して、すべての実行を無効にし、読み出し、アクセスを書き込む。ＡＲおよびＰＫは、プロセッサ特権レベル（ＰＬ）とともに、メモリ内のすべてのページに対してきめ細やかなアクセス制御を強制するために用いられ得る。このようにして、ページを、コンパートメントにグループ分けして、各コンパートメントを、別個のＰＫ値によって識別および保護することができる。この場合、各ページに対して、実行専用、読み出し専用、および書き込み専用のアクセスを任意に組み合わせて、制御することができる。
【０１４８】
最先端のハードウェアでは、仮想的にアドレス指定されたメモリに対するアクセスを加速する「変換索引バッファ」（ＴＬＢ）を利用している。ＴＬＢには、ページの仮想および物理ページ・アドレスと、関連するすべての変換パラメータたとえばＡＲおよびＰＫとが、収容されている。プロセッサ・ハードウェアがアクセスする仮想アドレスがＴＬＢに含まれない場合、「ＴＬＢミス」が起こり、ハードウェアおよび／またはソフトウェアは、以下のことをしなければならない。（１）その仮想アドレスに対する変換を、仮想−物理変換を指定するメモリ内のテーブルの組から見出す、（２）必要な変換をＴＬＢ内へ挿入する、（３）メモリ参照命令を再実行する。本発明のアイテニアム（登録商標）の実施形態の場合、ミスは、全体としてハードウェアによって取り扱える場合があり、その他のときには、ソフトウェアがＴＬＢミスを解決する必要があるソフトウェア例外が生じる。ＴＬＢは複雑で高度に最適化されたハードウェアであるため、最新のプロセッサには限定された数のＴＬＢしかない。その数はおそらく、命令仮想アドレス指定されたページ変換に対して約１００個であり、データ仮想アドレス指定されたページ変換に対して約１００個である。４ＫＢまたは８ＫＢページを用いるシステムの場合、このようにＴＬＢの数が限定されているために、ＴＬＢミスを起こすことなくアドレス指定ができるメモリは、約４００ＫＢまたは約８００ＫＢに、それぞれ限定される。サイズが数ギガ・バイトに達する物理メモリ、および３、６、９、またはそれ以上のメガバイトに達するオン・チップ・キャッシュの場合、ＴＬＢミスは、頻繁に起こると予想することができる。
【０１４９】
本発明のアイテニアム（登録商標）の実施形態の場合には、ＣＥ２ページを以下のように組織化して、ＴＬＢミスを完全に取り除くことができる。アイテニアム（登録商標）２プロセッサは、１１個のページ・サイズを実施する。すなわち、４ＫＢ、８ＫＢ、１６ＫＢ、６４ＫＢ、２５６ＫＢ、１ＭＢ、４ＭＢ、１６ＭＢ、２５６ＭＢ、１ＧＢ、および４ＧＢである。一旦、物理メモリ・マップが決定されたなら、一実施形態においては、物理メモリを、１６ＫＢ以上の９ページ・サイズだけを用いて、可能な最大のページ・サイズのリストに組織化する。可能な最大のページが、アプリケーションＢＳＳ作業用記憶に対して割り当てられる。この記憶は、ＣＥ２が初期化されたときに、ゼロに設定される。いくつかの１６ＫＢページは通常、ソフトウェアおよびインテル（登録商標）アーキテクチャ−６４（ＩＡ−６４）「レジスタ保存エンジン」（ＲＳＥ）スタックのセクションに対して割り当てられ、これは、特定のＣＥ２アプリケーションによってより大きなページが必要とされるまで行われる。最後に、単一または最大３つのページを、ＣＥ２によって構成されるシステムおよびアプリケーションのコードおよびデータ・セクションのそれぞれを収容するために割り当てる。
【０１５０】
図１０Ｂは、本発明の１つのアイテニアム（登録商標）の実施形態による物理ページの実際の組織を例示する抜粋である。物理アドレスの３つの別個の連続する範囲に対する物理ページ組織を、１０７０〜１０９０において示す。各行は、可能な最大のページになる組織の物理アドレスおよびサイズを示す。物理ページ・アドレスは１６進数である。コードおよびデータ・セクションに対する物理ページの割り当ての間に、ページ・リスト内の特定のページ・サイズが使い切られた場合には、次に大きなページを、パーティショニングして、次に小さなサイズの４つのページにする。必要ならばこれを繰り返す。各ページには、所望するＡＲおよびＰＫ値が割り当てられ、その結果、コンパートメントの組が生成される。その組の各コンパートメントには、実行可能なコード・ページおよび／またはデータ・ページがあってもよい。このようにすることで、必要なページの数が最小になり、各コンパートメントおよびページに対するきめ細やかなアクセス制御が得られる。初期の結果によれば、約半分の数の利用可能なアイテニアム（登録商標）２ＴＬＢによって、ＣＥ２全体をカバーできることが示されている。このようにして、多くのＣＥ２において、ＴＬＢミス処理のオーバーヘッドを完全に取り除くことができる。このようにしてページを管理する場合、ＣＥ２ソフトウェアが、いくつかのＴＬＢミスに対処する必要があってもよい。ＴＬＢミスを解決するアイテニアム（登録商標）プロセッサ・ハードウェアは、メモリの各領域における均一なページ・サイズのみに対処する。
【０１５１】
図１０Ａでは、本発明のアイテニアム（登録商標）の実施形態における仮想的および物理的にアドレス指定されたページのマッピングを概念的に例示している。連続する各ページが異なるアクセス特権レベルを有していなければならないような特定のページ間（たとえばソフトウェア・スタック・ページ間）で、連続する仮想アドレスが必要とされる場合を除いて、各ページには、アライメントされた大きな境界（たとえば１ギガ・バイトまたは４ギガ・バイト）上で始まる仮想アドレスが割り当てられる（アイテニアム（登録商標）プロセッサが提供する８５−ビット仮想アドレス内には、このまばらな仮想アドレス割り当てを許可するには十分過ぎるほどの仮想アドレスが存在する）。これは、図１０Ａにおいて、４ギガ・バイト仮想アドレスのアラインメントに対して例示されている。４ギガ・バイトのアラインメントによって、アイテニアム（登録商標）２プロセッサがサポートする１１ページ・サイズのいずれかを、このような仮想アドレス境界のいずれかにマッピングすることができる。これはまた、ループ内では、アドレス指定例外を引き起こすことなく、４ＧＢより小さなページの境界を越えてアドレス指定することは不可能であることを意味する。
【０１５２】
図１０Ａに例示した例では、仮想的にアドレス指定されたページ１０１０〜１０５０がそれぞれ、４ギガ・バイトの境界において始まり、対応する破線まで延びている。ページ１０４０の場合には、４ＧＢページが、仮想アドレス（Ｎ＋３）×４ＧＢにおいて始まっており、破線はない。仮想的にアドレス指定されたページ１０１０〜１０５０は、物理メモリ１００８内の物理的にアドレス指定されたページ１０１０〜１０５０にマッピングされている。各仮想ページは、矢印で示したように正確に同一サイズの物理ページにマッピングされている。
【０１５３】
従来の多目的オペレーティング・システムでは、プラットフォーム物理メモリよりも数倍大きな仮想メモリが設けられていた。これは、ＴＬＢミスがしばしば、ページ・フォルトにカスケードすることを意味する。ＴＬＢミス・ハードウェアおよび／またはソフトウェアによって、必要な変換は、ディスクにコピーされているページに対するものであることが分かった場合、ソフトウェアは、以下のことをしなければならない。（１）必要に応じて、さらに他の物理ページをコピーすることによって、利用可能な物理ページを見出す；（２）コピーされたページを読み出して、物理メモリ内へ戻す；（３）一旦、ページが物理メモリ内に戻ったら、マッピング・テーブルおよびＴＬＢの両方内に変換をインストールする；（４）フォールティング・メモリ命令へ制御を戻す。時おり、エンジニアリングでは、量的な変化が非常に大きいために質的な変化が生じるという可能性がある。物理メモリの場合、現在利用可能なサイズが非常に大きいために、ＣＥ２に対して２倍以上の大きさの仮想メモリを設けることは、もはや必要ではない。これは、多目的オペレーティング・システムの構造からの別の逸脱である。
【０１５４】
アイテニアム（登録商標）システム・ソフトウェアの取り決めによって、２つのタイプのスタックが規定される。第１は、「ソフトウェア・スタック」と呼ばれ得る。第２は、「ＲＳＥスタック」と呼ばれる。ＣＥ２内では、多目的オペレーティング・システムとは違って、何らかの再帰的なプロセスをサポートすることに十分拡張可能なスタックをサポートする必要はない。したがって、ＣＥ２アプリケーションに対して十分なサイズのＳＷＳおよびＲＳＥＳが、後述するように、ＡＲおよびＰＫによって割り当てられて保護される。何であれ所定の境界を越えるアドレス指定を行うと、アプリケーションに対して誤差通知がなされる。次いで、リカバリ動作を行って処理を再開する手段が与えられる。
【０１５５】
図１１Ａおよび図１１Ｂは、本発明のアイテニアム（登録商標）の実施形態におけるＳＷＳおよびＲＳＥＳに対して割り当てられたページと関連する保護設定とを示す簡略化されたダイアグラムである。ＳＷＳ仮想アドレス１１００が、スタック最上部の最高の仮想アドレスから下部の仮想アドレスに向かって大きくなっている。本例でのＳＷＳには、特定のＣＥ２内で実行される特定のアプリケーションまたは特定のアプリケーションの組の要求に対して適切にサイズ取りされたページの組１１１０〜１１４０が含まれる。この特定の例では、これらの１６ＫＢのページ１１１０〜１１４０に、ページ１１１０〜１１４０を指す矢印が示す連続した仮想アドレスが割り当てられている。本例では、ＳＷＳの各特権セクション１１１０、１１２０、１１３０、および１１４０には、単一ページのみが必要とされているが、他の場合において、各特権セクションには、最大３つの仮想的にアドレス指定されたページが含まれていてもよい（１〜３のより小さなページを、次のより大きなページ・サイズ（通常は４倍大きい）を選択する前に、用いてもよい）。すべての特権セクション１１１０〜１１４０は、それらの個々のハードウェア特権レベル、１１４０に対するＰＬ３、１１３０に対するＰＬ２、１１２０に対するＰＬ１、および１１１０に対するＰＬ０において、読み書き権を有するが、実行権、アクセス権を有することはない。スタックされたデータが、アプリケーションから隠されるべきである場合、制御フローがより高い特権レベル・コードに進む前に、ＳＷＳアドレスをより高い特権セクションのアドレスへと押し進めてもよい。また、図１１Ａには、仮想的にアドレス指定されたＳＷＳページ１１００（１１１０〜１１４０）の、物理ページ１１０８（ＰＯ〜Ｐ５）へのマッピングが例示されている。これは矢印によって示されている。
【０１５６】
図１１Ｂに例示するように、ＲＳＥＳは、低い仮想アドレスから、より高い仮想アドレスへと大きくなっている。この例では、ＲＳＥスタックには、特定のＣＥ２内で実行する特定のアプリケーションまたはアプリケーションの組の要求に対して適切にサイズ取りされたページの組１１１５〜１１４５が含まれている。この特定の例では、これらの１６ＫＢページ１１１５〜１１４５には、ページ１１１５〜１１４５を指す矢印が示す連続した仮想アドレスが割り当てられている。必要な特権レベルを、すべてのＲＳＥ特権セクション１１１５〜１１４５に対して、ＰＬ０に設定する。すべてのＲＳＥ特権セクション１１１５〜１１４５は、ＰＬ０において、アクセス権の読み書きを行うが、アクセス権を実行することはない。一実施形態においては、ＲＳＥスタック・ページ１１０５にアクセスするための特権レベルは、実行コードの特権レベルとは別個の特権レベルである。これについては、後でより詳細に説明する。本例では、ＲＳＥスタックの各特権セクション１１１５、１１２５、１１３５、および１１４５は、単一ページのみを必要としているが、他の場合では、各特権セクションに、最大３つの仮想的にアドレス指定されたページが含まれていてもよい。
【０１５７】
ＲＳＥのさらに高い特権ページに対するアクセスは、各特権レベルに対して別個の保護キー値を割り当てることによって制御される。制御フローがハードウェア特権境界を横切ると、ＰＫＲのコンテンツは変更されて、ＲＳＥＳページ・アクセスを、許可された特権レベルのみに限定するようになる。具体的には、最も低い仮想的にアドレス指定された特権セクション１１１５は、すべての特権レベルに対して、ＰＫＲ内に存在するＰＫによって保護される。次に高い仮想的にアドレス指定された特権セクション１１２５は、ＰＬ２、ＰＬ１、またはＰＬ０におけるコード動作に対してのみ、ＰＫＲ内に存在するＰＫによって保護される。その次に高い仮想的にアドレス指定された特権セクション１１３５は、ＰＬ１またはＰＬ０におけるコード動作に対してのみ、ＰＫＲ内に存在するＰＫによって保護される。最も高い仮想アドレス指定された特権セクション１１４５は、ＰＬ０に対してのみ、ＰＫＲ内に存在するＰＫによって保護される。実行特権は、すべてのＰＫによって無効にされる。また、図１１Ｂには、仮想的にアドレス指定されたＲＳＥページ１１０５（１１１５〜１１４５）の、物理ページ１１１８（ＰＯ〜Ｐ５）に対するマッピングが例示されている。これは矢印によって示されている。
【０１５８】
この設計によって、特権レベルを横切るときにＲＳＥスタックを交換する必要がなくなる。しかし、秘密の値がリークすることを回避するために、システム・コードを、より低い特権コードに戻る前に、秘密に関わる値を収容するレジスタを取り除くように設計してもよい。アイテニアム（登録商標）プロセッサの場合、最大で６つのレジスタを、単一のサイクルにおいてクリアにすることができる。通常は、その他の場合には用いられない命令スロットを用いることによって、レジスタ・クリアリングを、かなりの数の付加的なサイクルを必要とせずに行うことができる。
【０１５９】
特定のアプリケーションによって必要とされる割り込み構造に依存するが、別個のＳＷＳおよび／またはＲＳＥＳを、システム内の割り込み制御フローに対して割り当ててもよい。あるいは、より簡単に、割り込み制御フローを、適切な特権レベルに制御が戻るまで延期できる場合には、別個のＳＷＳまたはＲＳＥスタックを必要としなくてもよい。この場合には、通常の制御を下部の特権レベルへ戻す前に、下部の特権レベルにおける割り込みコードを、下部の特権レベルにおけるシステム導入された呼び出しとして呼び出してもよい。このように、単一のＳＷＳおよびＲＳＥＳを、通常の場合および割り込み処理の場合の両方に対して、用いることができる。
【０１６０】
前述したように、ＲＳＥスタック・ページにアクセスするための特権レベルが、別個のアイテニアム（登録商標）アプリケーション・レジスタ、名称「レジスタ・スタック構成レジスタ（Register Stack Configuration Register ）」（ＡＲ．ＲＳＣ）内に含まれており、次のレジスタ・エンジン記憶装置が開始される仮想アドレスが、アイテニアム（登録商標）アプリケーション・レジスタ、名称「記憶装置用ＲＳＥ外部記憶装置ポインタ（RSE Backing Store Pointer for Memory Stores ）」（ＡＲ．ＢＳＰＳＴＯＲＥ）に含まれている。残念ながら、ＡＲ．ＲＳＣおよびＡＲ．ＢＳＰＳＴＯＲＥアプリケーション・レジスタを変更する命令を実行できるのは、ＰＬ３、最低のハードウェア特権においてである。しかし、ＡＲ．ＲＳＣモード・フィールドが非ゼロに設定されている場合には、ＡＲ．ＢＳＰＳＴＯＲＥレジスタを変更するいかなる試みによっても、検出可能なハードウェア例外が生成される。モード・フィールドを変えるＡＲ．ＲＳＣレジスタのいかなる変更によっても、特権レベル・フィールドでは、特権が、ＰＬ０からアプリケーション用の現在のハードウェア特権レベル、ＰＬ３へと下がる。ＰＬ０コードを除いて、ＡＲ．ＲＳＣレジスタを変えると、ＲＳＥコンテンツは完全にアクセス不可能となる。何故なら、ＲＳＥページに対するメモリ・アクセスでは、ＰＬ０をＡＲ．ＲＳＣ．ｐｌフィールド内で設定する必要があるからである。本発明の一実施形態によれば、ＣＥ２に対して採用される保護ストラテジは、ＡＲ．ＲＳＣ特権レベルをＰＬ０に、ＡＲＲＳＣモード・フィールドを０ｘ３に、初期化するものである。ＣＥ２構成プロセスには、すべての実行可能なコードが見えるため、実行可能なコードは、ＡＲ．ＲＳＣまたはＡＲ．ＢＳＰＳＴＯＲＥレジスタを変更する任意の非ＰＬ０命令がないことを保証するために、走査される。厳密に言えば、ＡＲ．ＲＳＣを変更しないことが保証されれば、保護に対して十分である。何故なら、ＡＲ．ＢＳＰＳＴＯＲＥのみがわずかでも変更すれば、例外となるからである。しかし、各ＣＥ２に対する製造ポリシは、ＣＥ２が構築されている間に、例外に対する可能な発生源をすべて取り除くことである。このコード走査は、実行可能なコード・セクションに対して暗号のデジタル署名が算出されているときと同時に行われる。
【０１６１】
メモリ割り当てＣＥ２サービスが、ＢＳＳデータ・ページ、初期化されていない読み出し／書き込みデータ・ページ内に、作業用メモリを割り当てて解放するために設けられている。ＢＳＳデータ・ページに、連続的な仮想アドレスが割り当てられる。これらは、ＣＥ２が最初にロードされるときに、ゼロに設定される。ページに対する仮想アドレス割り当てストラテジによって、最大のページを用いてヒープを構成することができる。各ＣＥ２に対して、ヒープ内の仮想メモリを割り当てるための割り当て単位サイズとして、アプリケーションに対して適切なものが選択される。この割り当て単位サイズは、各アプリケーションに対して異なっていてもよい。メモリを割り当てて解放するサービス呼び出しが対応しているのは、この規定された割り当て単位サイズの連続する倍数のみである。ヒープ内の仮想メモリ割り当てを制御するデータ構造は、まったく別個のページ内に維持され、非常にコンパクトに作ることができる。本発明のアイテニアム（登録商標）の実施形態の１つについてテストを実施したところ、メモリの各割り当て単位サイズのひとまとまりを割り当てるためのブックキーピング・データ構造には、２．５ビットのみが必要であった。隔離されたヒープ割り当て制御データ構造は、アプリケーション内の任意の記憶装置によって汚染される可能性はない。またこの構造は、アプリケーションによって、リカバリおよびレジューム処置を始める必要があることが見出された場合に、正確なメモリ割り当て状態を決定するために用いることができる。
実行制御
以下は、本発明のアイテニアム（登録商標）の実施形態を例示する説明である。ＣＥ２の第１の設計原理が意味するように、実行制御はまた、最も簡単で、最も速くて、最も安全な能力に限定される。ＣＥ２は、各プロセッサ上のアプリケーション実行に対して単一スレッドのみを与える。他のアプリケーション・スケジューリングまたはディスパッチング・メカニズムは与えられない。各プロセッサ上における単一スレッドの実行は、特定のプロセッサ上での制御として存続し、アプリケーション・コードおよびより高い特権システム・サービス・コード間を行き来する。またこの単一スレッドは、アプリケーションおよびシステム・コンポーネント内の例外取り扱いルーチン、割り込みサービス・ルーチン、および延期された割り込みサービス・ルーチンへの制御フロー・パスとして存続する。
【０１６２】
ＣＥ２のアプリケーション・コンポーネントは、その作業をスケジュールおよび制御することを担っており、これは、単一のプロセッサ上で実行するか、複数のプロセッサ上で実行するかにかかわらない。複数のプロセッサをアプリケーションが用いるときには、アプリケーション自体が、これらのプロセッサ間でのコーディネーションおよび同期化を担う。このような同期化は、ハードウェアが与えるアトミック動作（たとえばアイテニアム（登録商標）交換、比較および交換、またはフェッチ・アンド・アッド・ハードウェア命令）を直接用いることによって、あるいはアトミック命令を用いることで実施されるソフトウェア規定のロック階層によって、行ってもよい。アトミック命令は、アセンブリ言語サブルーチンにおいて行ってもよいし、イン・ラインのアセンブリ言語命令文を可能にするコンパイラを用いて指定してもよい。図１５に示したように、各プロセッサは、その独自のソフトウェアおよびＲＳＥスタック、１５０１、１５０２および１５１１、１５１２を有していてもよい。各ページに対するメモリ・アドレス指定能力は、特定のプロセッサ１５０４および１５１４に局所的とすることもできるし、すべてのプロセッサ１５０５、１５０８および１５１５、１５１８間で共有とすることもできる。またアプリケーション・コード・イメージは、特定のプロセッサに対して局所的とすることもできるし、すべてのプロセッサ１５０３および１５１３の間で共有とすることもできる。システム・サービス・コードは通常は、すべてのプロセッサ１５０６、１５１６によって共有される。またシステム・サービス・データも、局所的なまたは共有された１５０７、１５１７であってもよい。また、図１５では、物理ページ１５２０（ＰＯ〜Ｐ１０）への２つのプロセッサ１５００および１５１０内の仮想アドレスのマッピングを例示している。
【０１６３】
良く知られた作業スケジューリング構造、たとえば適応性のある有限のステート・マシーン、ラウンド・ロビン・コミュテータ、または優先順位主導のコミュテータを用いることによって、好適な作業キュー上で動作しながら、単一の実行スレッドによって駆動されるアプリケーションが、その計算タスクを組織化して進行を保証することが可能となる。図１３は、本発明の一実施形態による、プライオリティ・コミュテータを用いたアプリケーション論理フローを概念的に例示する簡略化されたダイアグラムである。判定ブロック１３１０において、ネットワークＩ／Ｏイベントの発生について判定がなされる。ネットワークＩ／Ｏイベントが発生した場合には、制御はブロック１３２０へ流れ、そこで、ネットワークＩ／Ｏイベントの結果として要求される必要な処理が行われる。いった、状態が、このような処理が終了したことを示すように設定されたら、ブロック１３２０からの制御は判定ブロック１３１０に戻る。このために、この制御フロー構造は、「優先」コミュテータと言われる。それによって、存在するのであるならば、最も高優先のイベントに対する処理が、最初に行われる。
【０１６４】
一旦、すべてのネットワークＩ／Ｏイベントが取り扱われたら、判定ブロック１３３０において、タイマ・チックの発生について判定がなされる。タイマ・チックが発生した場合は、制御はブロック１３４０へと流れ、そこで、タイマ・チックの結果として要求される必要な処理が行われる。一旦、状態が、このような処理が終了したことを示すように設定されたら、ブロック１３４０からの制御は、判定ブロック１３１０に戻る。
【０１６５】
一旦、すべてのタイマ・チック・イベントが取り扱われたら、判定ブロック１３５０において、オペレータ・コマンドの発行について判定がなされる。オペレータ・コマンドが発行された場合は、制御はブロック１３６０へと流れ、そこで、コマンドの結果として要求される必要な処理が行われる。一旦、状態が、このような処理が終了したことを示すように設定されたら、ブロック１３６０からの制御は判定ブロック１３１０に戻る。
【０１６６】
前述のイベントは、より大きな組の潜在的な発生を例示している。前述の例においてブロック１３１０〜１３６０によって例示される制御フロー論理を、特定のＣＥ２に対して発生し得るこのようなイベントのすべてに対して、継続してもよい。一旦、すべてのより高優先のイベントが取り扱われた場合、判定パターンが、アプリケーション・タスクに対して続く。本例では、このようなタスクとして２つのみ（高優先および低優先と呼ばれる）を示す。通常、アプリケーションには、より多くのタスクが存在する。
【０１６７】
判定ブロック１３６５において、アプリケーション作業キュー上に高優先タスクがあるか否かについて判定がなされる。このようなタスクが存在する場合には、制御フローはブロック１３７０へ移って、必要な処理が行われる。一旦、状態が、このような処理が終了したことを示すように設定されたら、ブロック１３７０からの制御は判定ブロック１３１０に戻る。
【０１６８】
判定ブロック１３７５では、アプリケーション作業キュー上の低優先タスクの存在について、判定がなされる。このようなタスクが存在する場合には、制御フローはブロック１３８０へ移って、必要な処理が行われる。一旦、状態が、このような処理が終了したことを示すように設定されたら、ブロック１３８０からの制御は、再び判定ブロック１３１０に戻る。
【０１６９】
単一スレッドの制御構造、たとえば図１３に例示したものによって、アプリケーションは、通常のアプリケーション・タスクだけでなく、アプリケーションの外部のイベントの結果として行われるタスクの両方に、対処することができる。同様の構造は通常、システムの他の特権レベルにおいても使用される。また、このような構造によって、アプリケーションが、例外または割り込みの発生の結果のみとして入ったセクションを収容することができる。このような割り込みには、以下のものが含まれる。すなわち、システム・クロックの規則的な経過時間において発生するもの、終了または１つもしくは複数のＩ／Ｏ動作に起因する他の信号の結果として発生するもの、システム・オペレータ・コマンドの結果として発生するもの、およびシステム・エラーが検出された結果として発生するもの、である。これらの場合のうち最初の３つにおいては、アプリケーション・セクションが、割り込みが発生してから間もなくして呼び出される。アプリケーションは通常、呼び出されると、その作業スケジューリング・アルゴリズムを起こすのに必要な最小限の制御状態および状態情報を設定し、一旦、アプリケーションが通常の処理を再開したら、イベントの結果にさらに十分に対処する。第４の場合では、アプリケーションは通常、必要なリカバリ処理を行って、何らかの必要なＣＥ２システム・サービスを呼び出し、作業用アプリケーション状態を復元するか、あるいはリセットおよび再始動システム・サービスを呼び出す。
【０１７０】
ＣＥ２アプリケーションが、必要なＣＥ２システム・コンポーネントとリンクしている場合には、アプリケーション・コード・イメージは、「エントリ・ベクトル」（ＥＶ）と呼ばれる命令のＣＥ２ベクトルによって前置される。ＥＶにおける各スロットは、特定の例外、割り込み、オペレータ制御信号、または他のシステム・イベントに対応している。ＥＶの各位置における命令から、制御が、イベントを取り扱うためのアプリケーションまたはシステムにおける適切な点に送られる。各ＥＶは、特定のアプリケーションに対して特別仕立てされている。たとえば、オペレータ・コマンドに応答するためにアプリケーション・セクションが設けられている場合には、対応するＥＶエントリー内の命令が、そのアプリケーション・セクションに制御を送る。１つの規定されたＥＶエントリーを用いて、アプリケーションの実行を始める；他の一つのＥＶエントリーが、アプリケーションを終了させるために提供される；他のＥＶエントリーによって、制御が、例外および／または割り込みに応答しなければならないアプリケーション・セクションに送られる。特定のＥＶエントリーに対して、アプリケーション動作がなされない場合、デフォルトのシステム動作が取られる場合がある。
【０１７１】
図１２は、本発明のアイテニアム（登録商標）の実施形態におけるアプリケーションに関連するＥＶの簡略化されたダイアグラムである。ＥＶ１２１０によって構成される命令は、アプリケーション・コード１２３０の前に配置され、完全なアプリケーション・コード・セクション１２２０は、１２１０および１２３０によって構成されている。アプリケーション・データ・セクション、たとえばアプリケーション・データ・セクション１２４０は、完全に別個のページを占めている。ＥＶコード１２１０におけるＥＶエントリー１２１１〜１２１８は、行われ得るＥＶエントリーのタイプを単に示すだけのものである。これらは、何ら特定の順番で示されているわけではない。
【０１７２】
ＥＶ機能の一例として、アプリケーションが５秒ごとに経過時間の通知を希望する場合には、アプリケーションは最初に、５秒間隔とイベントに対する識別タグとを指定するＣＥ２タイマ・サービスを呼び出す；タイマ・チックを取り扱うためのアプリケーションのコード・セクションに制御を送る命令は、ＥＶ内にすでに存在している。要求されたタイマ・チックが発生すると、制御は、タイマ間隔ＥＶエントリー１２１３へと流れる。このエントリー１２１３は、指定されたアプリケーション・タイマ・チック取り扱いセクションに、制御を送る。このタイマ・チック取り扱いセクションは、アプリケーションがタイマ通知を要求したときに供給されるタグを用いてイベントを識別し、アプリケーション内部制御状態を相応に更新する。制御がタイマ・チック取り扱いセクションから戻ったら、システムは、通常のアプリケーション処理に制御を戻すため、タイマ・チック取り扱いセクションが設定する制御状態は、アプリケーション実行フローに適切に影響を及ぼすことができる。
【０１７３】
従来の多目的オペレーティング・システムでは、アプリケーションは、一部のシステムおよび／またはアプリケーション動作不良を示す信号を処理し、修正処置を試みることができる。これは、捕らえるべき特定の信号を指定するシステム呼び出しと、対応する信号が発生したときに呼び出すべきアプリケーション・コードとを通して、行うことができる。アプリケーション・リカバリには通常、アプリケーション制御スタックを巻き戻すプロセスに、一度に１つまたは複数のステップで入ること、および必要とされるリカバリ・コードをこれらのステップのいくつかにおいて実行することが、伴う。特定の時点でイベントの発生を記録することが、よい措置である。最終的に、アプリケーションは、以下のことができなければならない。（１）その状態を補正して処理を継続する；または（２）それ自体の異なるコピーを再び開始し、この新しいコピーが継続できるように十分な情報を送る；または（３）断念して終了する。
【０１７４】
ＣＥ２アプリケーションは通常、動作を再生および継続するためのあらゆる努力をなすように設計される。考えられる最悪の場合では、アプリケーションは、障害を他のいかなるシステムにも伝搬しない動作状態に入るように設計される。たとえば、キャッシング・プロキシ・サーバの場合には、通常のキャッシュ処理を復元することができない場合には、サーバは、スループット・レベルが低下してもウェブ・アクセスの継続を可能にした通過モードへと機能低下してもよい；あるいは、サーバを、それ自体をリセットして再始動するように設計してもよい。
【０１７５】
ＣＥ２システム・サービスは、アプリケーション再生および継続処理を容易にするように設計されている。図１２では、ＥＶエントリー１２１２は、「再生不可欠」エントリーをアプリケーションへ送出するために設けられている。ＣＥ２のアイテニアム（登録商標）の実施形態の構造の基本的な簡単さおよび分かりやすさは、アプリケーションの再生および継続ストラテジを設計する際の利点である。ハードウェア保護原理によって、アプリケーションおよびシステムの両方によって実行可能なコード・セクションが変更されていないことが保証される。同一のことが、すべての読み出し専用データ・セクションについて言える。メモリ・ページ割り当ては静的である。したがって、マッピングされた各ページの種類および保護は、正確に分かっている。ソフトウェアおよびＲＳＥスタック構造は、良く理解されており、また簡単なシステム・サービスによって調整または再初期化することができる。アプリケーションにとって重要なＩ／Ｏ動作は、アプリケーションと再同期化することができ、および継続または再始動することができる。ヒープを使用し続けるべきか、あるいはそれを初期化するべきかを決定するときに、ＢＳＳメモリ割り当て状態を常に、正確に決めることができる。精巧なスタック巻き戻しプロセスは、必要ではない。アプリケーションは、再生および継続しなければならない場合、またはリセットおよび再始動しなければならない場合には、取るべき行動方針を決定できるための十分な情報を、簡単に記録することができる。
【０１７６】
図７に、本発明の一実施形態によるＣＥ２７００内のサービス間の関係を概念的に例示する。本発明のアイテニアム（登録商標）の実施形態においては、システム制御は、アプリケーション制御の場合と同様に、プロセッサ当たり同一の、簡単な、単一のスレッドに基づいている。アプリケーションを実行すること、たとえばシステム・サービス７５０に対する呼び出しは、このスレッド上で行われる。システム・サービス７５０には、以下のものが含まれる。
【０１７７】
１．プラットフォーム制御サービス７４０
これらのサービスは、ＰＬ０、最高のプロセッサ特権レベルで実行されるサービスだけである。１つまたは複数の特権ハードウェア命令を用いることは、これらのサービスの機能に対して不可欠である。これらのサービスのいくつかは、システム初期化時においてのみ動作する。他は、割り込みが起きたときに呼び出される。さらに他は、呼び出し可能である。この例では、プラットフォーム制御サービス７４０には、以下のものが含まれる。
【０１７８】
ａ．システム初期化−図１７Ｂおよび１７Ｃは、本発明のアイテニアム（登録商標）の実施形態に対するＣＥ２ローディングおよび初期化を例示するフロー・ダイアグラムである。主起動プロセッサ内での実行によって：物理メモリ・ページを割り当てる（１７４０）；コード、データ、スタック、およびヒープ・ページに対する仮想アドレスマッピングおよびページ保護状態を確立する（１７４５）；セクション・イメージを適切な物理ページへ移動させる（１７５０）；ヒープ・ページをゼロにする（１７５５）；最新の物理メモリ・マップ・キーを読み出し、ＥＦＩ起動サービスから出て、制御をＣＥ２初期化サービスへ移す（１７６０，１７６５）；ＣＥ２ローダによって占められた物理ページをゼロにする（１７７０）；ファームウェア呼び出しを介してハードウェア・プラットフォームおよび構成オプションを設定する（１７７５）；主プロセッサ内での実行によって、コード、データ、スタック、およびヒープ・ページに対する仮想アドレスマッピングおよびページ保護状態を確立する；仮想アドレス指定へ移行する（１７８０）；プロセッサに対する割り込みステアリングを構成する；ファームウェアから供給された情報を用いて、タイマを校正する；Ｉ／Ｏコントローラ、オフロード・ボード、または他のプラグ・イン・ボードを初期化する；任意の他のプロセッサを起動させる（１７８５）。非主プロセッサ内での実行する：それによって、コード、データ、スタック、およびヒープ・ページに対する仮想アドレスマッピングおよびページ保護状態を確立する；ファームウェア呼び出しを介してプロセッサ構成およびオプションを設定する；ファームウェアから供給された情報を用いて、タイマを校正する（１７９０）。すべてのプロセッサ上で実行する：それによって、プロセッサ状態を確立する；制御を、各システム・サービス初期化エントリー・ポイント、たとえば任意のＩ／Ｏアダプタ、任意のオフロード・ボード、および他の任意の別個のプラグ・イン・ボードを初期化するための初期化エントリー・ポイントへ送り、暗号キーイングおよびランダム状態を外部から取得し、状態メッセージをインストレーション管理システムへ送る；最後に制御をＣＥ２アプリケーションへ渡す。
【０１７９】
ｂ．ソフトウェア再始動制御−再始動イベントを報告する；割り込みを一時的に無効にし、Ｉ／Ｏ動作を停止させ、ならびに任意のＩ／Ｏアダプタ、任意のオフロード・ボード、および任意の他の別個のプラグ・イン・ボードを再初期化する；スタックを再初期化する；ヒープ・メモリをクリアにするか、あるいはしないでシステム状態をリセットする；アプリケーションを再起動する。
【０１８０】
ｃ．メモリ制御：利用可能なＴＬＢがすべてのページを同時にカバーすることができない場合に、ＴＬＢミスを取り扱う。保護ＩＤを管理し、アクセス許可が、保護キー・レジスタにおいて無効にされる。
【０１８１】
ｄ．プロセス制御−各プロセッサ内で実行する：それによって、実行スレッドの状態を初期化する；実行スレッドを始動する；実行スレッドをチェックポイントする；システムによって延期された割り込みサービス・ルーチン（ＤＩＳＲ：Deferred Interruption Service Routine ）を始動させる；割り込みの後に実行スレッドを再開する；実行スレッドを停止させる；実行スレッドをリセットおよび／または再始動する；特権レベルに渡って呼び出すとき、特権レベルに渡って戻るとき、ならびに例外取り扱いルーチン、割り込みサービス・ルーチン、および遅延した割り込みサービス・ルーチンをディスパッチするときに用いられるリンケージ・サービスを提供する；呼び出しを認証する。
【０１８２】
ｅ．割り込み制御−各プロセッサ内で実行する：それによって、割り込みが起きたときに制御を受け取る；制御が、対応する例外取り扱いルーチン、割り込みサービス・ルーチン（ＩＳＲ）、および延期された割り込みサービス・ルーチン（ＤＩＳＲ）へと流れるように、状態を設定する；割り込みキューを排出して、すべての待ち状態の割り込みに対する対応する状態を設定する。
【０１８３】
ｆ．Ｉ／Ｏハードウェア制御−実際のメモリ・マッピングされた読み出しおよび書き込みをすべてＩ／Ｏコントローラへ出す；Ｉ／Ｏドライバが用いたメモリ仮想アドレスをすべて変換して、正確な物理アドレスにする；Ｉ／Ｏ物理アドレスを変換して仮想へ戻しＩ／Ｏドライバが使用できるようにする。後述のさらなる説明を参照されたい。
【０１８４】
ｇ．システム状態制御−システム状態情報を読み出して下部の特権システム・デバッギング・サービスへ戻す。デバッガを介してのシステム状態への変更は、許可されない。
２．システム制御サービス７３０
Ｉ／ＯドライバＩＳＲを除いて、これらのサービスは、アプリケーションまたはアプリケーション・サービスからの呼び出しによって呼び出される。これらのサービスが実行されるのは、ＰＬ１、すなわち２番目に高いハードウェア特権レベルにおいてである。本例によれば、システム制御サービス７３０には、以下のものが含まれる。
【０１８５】
ａ．タイマ制御サービス−経過時間信号をアプリケーションへ、アプリケーションＥＶを介して戻す。複数の信号リクエストを管理して、各信号を適切な経過時間の後に戻す。各信号には、識別子によってタグが付けられている。この識別子によって、アプリケーションは信号を、特定のタイマ・イベントと相関させることができる。
【０１８６】
ｂ．デバッグおよびモニタリング制御サービス−システム状態および動作上の統計を戻す；動作中、ＣＥ２システム・コンポーネントはそれぞれ、システム作用の種々の対策を維持する。このシステム・サービスは、これらの対策のスナップショットを戻す。
【０１８７】
ｃ．オペレータ・インターフェース制御サービス−オペレータ・リクエストが認識されたときに始動される；システム状態を尋ねるリクエストに応答する；オペレータ指令を受け取ったときに、オペレータに関係するＥＶ動作を開始する。オペレータ・リクエストは、ＣＥ２とのＳＳＬセッションを維持しているブラウザ上のＧＵＩを介して入力されることが想定される。このＧＵＩは、システム構成設定および状態を表示することが可能である。オペレータ指令は、インターフェースたとえば「適用」または「保存する」ボタンを、ＧＵＩユーザに良く知られた方法により用いて、構成設定を変えてもよい。
【０１８８】
ｄ．暗号化サービス−システムおよびアプリケーションに対して暗号のサービスを行う；サービスには、以下のものが含まれる。キー生成および管理、暗号的に強い乱数生成；暗号ハッシュ機能、デジタル署名、メッセージ認証コード、および対称的および非対称的の両方の暗号動作。暗号キーおよび他のランダムな材料が維持されるコンパートメントは、これらの特定のコンパートメントを保護するためだけに確保された保護キーによって保護されている；特定のキーが、キーが最初に生成されたときに戻されたハンドルを用いることによって指定される。
【０１８９】
ｅ．ＴＣＰ／ＩＰオフロード・ドライバまたはＴＣＰ／ＩＰスタック・サービス−ＴＣＰ／ＩＰ通信を、１つまたは複数のＣＥ２プロセッサ内で、またはＴＣＰ／ＩＰオフロード・ボードを用いて、提供する；両方の場合において、アプリケーションに対するインターフェースは、非同期の動作および通知を可能にする汎用の「ソケット」レベルにおいてである；データ取り扱いは、「ゼロ移動」目標に基づく；データ移動を回避できないときには、それを他の処理、たとえば圧縮、復元、暗号化、または解読と組み合わせる。
【０１９０】
ｆ．Ｉ／Ｏドライバ・サービス−必要なシステムＩ／Ｏに対するＩ／Ｏアダプタを制御する；仮想アドレスのみによって動作する；Ｉ／Ｏハードウェアとの実際の通信に対するプラットフォームＩ／Ｏサービスを用いる；これによって、Ｉ／Ｏドライバから生じる物理アドレス攻撃が防がれる。
【０１９１】
ｇ．システム・モニタリング・サービス−システム状態の表示を周期的に更新する。システム状態には、負荷、スループット、およびハードウェア利用率情報などの測定基準が含まれる。
【０１９２】
３．アプリケーション・サービス７２０
これらのサービスが動作するのは、ＰＬ２、すなわち２番目に低いハードウェア特権レベルにおいてである。現在、規定されているアプリケーション・サービスは１つだけである。将来、他のアプリケーション・サービスが、システムのこのレベルにおいて出現し得ることが想定される。たとえば、考えられる将来のサービスの１つは、指定されたイベントが発生するまで、アプリケーションが、プロセッサ・スレッドの制御を他の背景アプリケーションへ引き渡すことを可能にするサービスである。
【０１９３】
ａ．メモリ割り当てサービス−アプリケーションのヒープ・メモリからのメモリの割り当ておよび解放を行う；割り当てられたメモリのサイズは常に、固定された割り当て単位の倍数であり、たとえば４Ｋバイトまたは８Ｋバイトまたは１６Ｋバイト、などである。割り当て単位は、特定のアプリケーションに対して設定することができる。メモリ割り当てを把握するために使用されるデータ構造は、非常にコンパクトに作ることができる。これらのデータ構造は全く別個のメモリ内にあり、アプリケーション内のワイルド記憶装置によって汚染される可能性はない。
【０１９４】
ＣＥ２設計原理によれば、システム・サービス７５０は、特定のアプリケーションに対して不可欠のものに限定される；サービスは、最も簡単で、最速で、かつ最も安全な可能な方法で実施される。アプリケーションが必要とする装置のみに対して、Ｉ／Ｏサービスが与えられる。本発明のアイテニアム（登録商標）の実施形態によって、プロセッサ制御が、簡単なプリエンプティブまたはノン・プリエンプティブ・マルチタスキング（アプリケーションの固定された組の間のもの、ならびに拡張されたアプリケーション、システム、およびプラットフォーム・サービスによって提供されるもの）に対して一般化できることは、当業者にとって明白である。しかし、特定のアプリケーションによって、それ自体をその方法で組織化することが避けられないと見出されるまで、各プロセッサ上での単一スレッドの実行で十分である。
【０１９５】
システム・サービス７５０に対するアプリケーション呼び出し、およびシステム・サービス７５０からの戻りは、各プロセッサにおける同一の単一スレッド上のシステム・サービスの全体において実行される。本発明のアイテニアム（登録商標）の実施形態においては、標準のソフトウェア呼び出し取り決めを用いる。システム・サービス呼び出しによって、制御が、本発明のアイテニアム（登録商標）の実施形態におけるハードウェア特権のより高いレベルで実行されるサービスに移された場合、特権レベル交差は、「入力保護されたコード（Enter Protected Code）」（ＥＰＣ）ページを用いることによって行われる。図８Ａに例示するように、アイテニアム（登録商標）ページ・アクセス権は、ＴＬＢ．ａｒ８１０の値７に設定することができる。この値に設定された場合、このようなページに分岐することによって、現在のプロセッサ特権レベル８３０を、ページに対してＴＬＢ．ｐｌフィールド８２０内で設定された値まで上げる（ＰＬ数値のレベルは下がる）ことができる。このような特権レベル移行をもたらすために、本発明の１つのアイテニアム（登録商標）の実施形態においては、１つまたは複数のＥＰＣページを用いてもよい。３２バイトのアライメントされたエントリー・ポイントが、呼び出し元のハードウェア特権レベルよりも高いレベルで実行しなければならない各サービス呼び出しに対して、このページ内で規定される。アイテニアム（登録商標）アーキテクチャの規定が緻密であるため、ＥＰＣページ内のそれぞれの規定されたエントリー・ポイントは、サイクルの中断によって分離される２つの束（それぞれには３つの命令が収容される）からなっていてもよい。ハードウェアｅｐｃ（入力保護されたコード）命令が有効であるのは、ＥＰＣページ内で実行されたときのみであり、このようなページ内で実行されたときには、ハードウェア特権レベルが、ＥＰＣページのＴＬＢ．ｐｌフィールド８２０によって指定されたように、増加する。ｅｐｃ命令は、第１の束における第３の命令スロットを占めなければならない。この束における第１および第２の命令は、古いハードウェア特権レベルにおいて実行できなければならない。規定されたエントリー・ポイントの第２の束のみに対する誤った呼び出しが起こる可能性を避けるために、第２の束には、その第３の命令位置において、非ＥＰＣページに対する分岐が含まれていなければならず、ならびにその第１および／または第２の命令位置において、第１の束におけるｅｐｃ命令が以前に実行されていなかった場合に例外を生成する命令がなくてはならない。ＥＰＣページ内の他のすべての命令は、特権例外を発生させるように設定しなければならない。このように操作することによって、正確な特権移行のみが可能になるということが保証される。
【０１９６】
ハードウェア割り込みは、命令の第１のＥＰＣページ・バンドルの実行の前に、あるいは命令の第１のＥＰＣページ・バンドルの実行と命令の第２のＥＰＣページ・バンドルの実行との間に、発生してもよい。この結果、割り込みの点において保存されるハードウェア特権レベルのみから、実行が完全なプラットフォーム制御サービス状態に完全に移行していたか否かを決定することは不可能になる。このことは、割り込みから戻るときに状態を復元する方法についての不確定性の原因となる。たとえば、従来のカーネルでは、ＰＬ０の割り込まれた特権レベルが、割り込みの点における実行が依然としてアプリケーション・スタックを用いていたか、あるいはカーネル・スタックにすでにスイッチングしていたかを、確実に示すことはない。同様に、本発明のアイテニアム（登録商標）の実施形態においては、ＰＬ０の割り込まれた特権レベルが、割り込みから戻るときに保護キー・レジスタに復元する必要がある状態を確実に示すことはない。この不確定性は、以下のステップを取ることによって回避される：（１）割り込みを、第２のＥＰＣページ・バンドル内のｒｓｍ（リセット・システム・マスク（reset system mask ））命令を実行することによって無効にする；（２）より高い特権状態への移行の残りの部分は、割り込みが無効にされた状態に留まっている間に行われる；（３）移行の終了を表示するフラッグが、ＰＬ０コードのみがアクセス可能なレジスタ内で設定された後でのみ、割り込みを再び有効にする；（４）このフラッグを用いて、割り込みから戻るときに復元すべき状態を決定する；フラッグ自体は、もちろん、実際に戻る前に戻り状態を示すように変更される。
【０１９７】
特権境界に渡って呼び出す場合、呼び出しは最初に、ＥＰＣページ内の適切なエントリー・ポイントに送られる。これについては前述の通りである。ＥＰＣページ内のエントリー・ポイントにおける第２の束内のブランチ命令によって、制御がリンケージ・サービス・プラットフォーム制御コードへ転送される。リンケージ・サービス・コードによって、より高いハードウェア特権レベルで動作するコードにとって必要な何らかのさらなるシステム状態が、最初に設定される。このような変更には、保護キー・レジスタに対する変更、または指定されたプラットフォーム制御サービスにパラメータを供給することが、含まれていてもよい。たとえば暗号機能を呼ぶ場合には、これは、保護キー・レジスタが、暗号キー・データ・ページに対するアクセスを可能にするように設定される点である。より高い特権コードの入力は、戻ったときに制御がリンケージ・サービス・コードを再び通過するように、行われる。暗号機能の例の場合には、これは、暗号キー材料へのアクセスを可能にする保護キーが無効にされる点である。またリンケージ・サービスは、本来の呼び出し元へ戻る前に、割り込みの発生によって呼び出すべきコードに制御を送る機会を、戻ったときに有する。このメカニズムは、ＤＩＳＲおよび他のＥＶルーチンを呼び出すために用いられる。このような動作に対して、リンケージ・サービスは以下のことを行う：（１）制御が後で呼び出し元に戻れるように、十分な状態を保持する；（２）ＤＩＳＲまたは他のＥＶルーチンへの呼び出しを実行する；（３）ＤＩＳＲまたはＥＶルーチンから戻ったら、保存されたシステム状態を復元して、本来の呼び出し元に戻る。
【０１９８】
ハードウェア割り込みは一般に、２つの別個のクラスに分類される。第１は、本明細書において「例外」と呼んでもよいが、特定の命令を実行する結果起こる割り込みである。これらの割り込みは、例外の原因となる命令を実行することと同期して行われる。第２は、本明細書において「割り込み」と呼んでもよいが、任意の時点（通常はタイマまたはＩ／Ｏ割り込み）で起こってもよい割り込みである。両方のタイプの割り込みは、同一のハードウェア・メカニズムによって取り扱われるが、ソフトウェアは、全く異なる方法で２つのクラスの割り込みに対処する。例外の場合、プラットフォーム割り込みおよびリンケージ・サービスは即座に、制御を、同一のハードウェア特権レベルにおけるＥＶエントリーに、あるいは他のシステム・コードに送って、最初に例外に対処し、戻る。割り込みの場合、システムは最初に、１つまたは複数のＩＳＲ、ＤＩＳＲを呼び出さなければならない場合があり、また他の待ち状態の割り込み（それらの関連するＩＳＲおよびＤＩＳＲを含む）をすべて、制御を割り込みの点に戻す前に、取り扱うことも試みる。
【０１９９】
例外の取り扱いは、概念的には簡単である。リンケージ・サービスによって、例外の点に戻るために後で必要となるシステム状態が保存される。次に、ＥＶルーチンまたは他のシステム例外取り扱いコードに対して呼び出しがなされる。例外取り扱いコードから戻ったら、リンケージ・サービスは、状態を復元して、例外の点へ戻る。割り込みの場合、割り込みが起こる点において、システムは、何らかのハードウェア特権レベルで実行している場合があることが考えられる。次に、割り込み制御サービスおよびリンケージ・サービスが最初に協同して、制御を１つまたは複数の割り込みサービス・ルーチンへ送る。ＩＳＲが実行される間、さらなる割り込みは無効にされたままである。またＩＳＲを、一部のハードウェア特権レベル（たとえばＰＬ１およびＰＬ０）のみで実行することに限定してもよい。ＩＳＲが実行される間、通常はＩＳＲによって、関連する延期された割り込みサービス・ルーチンを後で実行するように状態が設定される。ＩＳＲの実行は、種々のソフトウェア・スタックおよび種々のＲＳＥスタックを用いて行われる。割り込みサービス・ルーチンによって、制御をこれらのスタックに切り換えて、ＩＳＲルーチンを呼び出す。実行している間、ＩＳＲルーチンが他のシステム・サービスを、ＩＳＲルーチンのみによって呼び出され得る別個のＥＰＣページを用いて、呼び出してもよい。一旦、特定の割り込みに対するＩＳＲルーチンが実行されたら、割り込みサービスは他の待ち状態の割り込みを探す。他の割り込みが見つかたら、割り込みおよびリンケージ・サービは、その新しい割り込みに対してＩＳＲルーチンの実行を開始する。待ち状態の割り込みがすべて処理されるまで、処理はこのようにして続く。一旦、すべてのＩＳＲ機能が実行されたら、通常のソフトウェアおよびＲＳＥスタックが復元され、制御はリンケージ・サービスを通って戻り、割り込みは再び有効にされる。割り込みの実際の点に最後に戻る前に、リンケージ・サービスは最初に、対応するＩＳＲが設定する状態によって始動されたＤＩＳＲルーチンのそれぞれに、制御を送る。
【０２００】
本発明のアイテニアム（登録商標）の実施形態では、従来のＵＬＷシステムにおいて、特権命令によって本来は実行されていた機能を、プラットフォーム制御サービスに対する呼び出しによって行う。このことによって、このような呼び出しを行うことでシステムを悪意により攻撃できる可能性が広がる。このような攻撃を排除するために、システムおよびアプリケーションが、システム・サービスに対する許可された呼び出しを指定すること、およびこのような呼び出しが実行されたときに呼び出し元を認証することを可能にする構造が、設けられる。構造は、以下の事実を前提としている。（１）コード・イメージが実行専用ページ内にある；（２）すべてのコード・イメージ暗号が、デジタル署名によって認証されている；（３）ＣＥ２ローダ自体も、デジタル署名によって認証されている；（４）ＣＥ２ローダは、すべての実行可能なコードを走査して、デジタル署名の妥当性を確認し、ＲＳＥを危うくし得る命令を検出することができる；（５）ＣＥ２ローダはまた、特権サービスへのすべての呼び出しを識別することができる；（６）ＣＥ２ローダは、認証を支援するために、負荷時間においてランダム情報を供給することができる。
【０２０１】
当業者にとっては、重要なシステムおよびプラットフォーム機能に対するこのような呼び出しの妥当性確認をもたらす手段が複数存在することは明らかである。本発明の１つのアイテニアム（登録商標）の実施形態においては、以下のアプローチが採用される。
【０２０２】
１．Ｃプログラマおよびアセンブリ言語プログラマの両方にマクロを与えて、重要なサービス呼び出しを作るために用いる。これらのマクロによって、ＣＥ２ローダが検出することができる認識可能なパターンを伴うコード・スケルトンが生成される。またスケルトンによって、呼び出されている特定の重要なサービスの識別が可能になる。
【０２０３】
２．規定されているサービス呼び出しの１つは、プログラム制御フローがプログラムの特定の点に到達したことを簡単に登録する機能を有する。この呼び出しのパラメータは、ネスティング・レベルを示す整数である。この呼び出しの第２のパラメータは、ＣＥ２ローダによって生成されアイテニアム（登録商標）命令内に書き込まれる６４ビット乱数である。
【０２０４】
３．他の規定されているサービス呼び出しは、初期のプログラム制御フロー登録エントリーを簡単に消去する機能を有する。この呼び出しに対するパラメータは、登録を消去すべき登録呼び出しに対する仮想ポインタであってもよい。あるいは、この呼び出しは、ネスティング・レベル・パラメータのみを有していてもよい。
【０２０５】
４．他の重要なサービス呼び出しは、特定の呼び出しを識別するために用いられる整数パラメータを有している。ローダは、この整数パラメータを生成して、それを実行可能な命令内に挿入し、すべてのサービス呼び出しのテーブルを構築し、この特定の呼び出しに対するエントリーを、この整数によって識別されるエントリーに配置する。第２のパラメータは、バック・ドミネーティング登録または機能呼び出しに対する仮想ポインタである。バック・ドミネーティング呼び出しとは、最終的に現在の呼び出しに到達するプログラム・フローにおいて、常に早めに実行されている呼び出しである。概念的には、各サービス呼び出しは、バック・ドミネーティング呼び出しを識別して、制御フローが正当なプログラム経路を介して重要なサービス呼び出しに到達したことを保証する。第３のパラメータは、ローダによって生成され機械語命令に挿入される他の６４ビット乱数である。第４のパラメータによって、バック・ドミネータ登録の処置が指定される。
【０２０６】
ＣＥ２ローダは、必要な乱数を登録呼び出しに与え、それぞれの重要なサービス呼び出しに対する整数値を識別する。次にローダによって、許可された呼び出しのテーブルが生成される。このテーブルは、プラットフォーム・リンケージ・サービスによって、呼び出しを認証するために用いられる。
【０２０７】
登録呼び出しが行われると、ローダが与えた乱数が、登録呼び出しによって指定されるネスティング・レベルにおいて経路識別テーブル内に書き込まれる。登録取り消し呼び出しが起きたときには、経路識別テーブルに以前に書き込まれた乱数は、登録呼び出しが指定するネスティング・レベルにおいてゼロに設定されて、現在登録済みの経路がないことを示す。
【０２０８】
機能呼び出しが行われると、整数識別子パラメータを用いて、ローダが生成した呼び出しテーブルにアクセスする。呼び出しテーブル・エントリーには、以下のものが含まれている。（１）機能呼び出しの仮想の戻りアドレス；（２）指定されたバック・ドミネータ呼び出しによって登録済みの乱数；（３）バック・ドミネーティング登録に対して指定された経路テーブル内のネスティング・レベル；（４）ＣＥ２ローダによって生成された第２の乱数；（５）バック・ドミネータ登録エントリーの処置を指定するパラメータ。代替的な実施形態においては、このパラメータは、呼び出しテーブルの一部ではなくて、呼び出しによって与えられてもよい。
【０２０９】
図１４は、本発明のアイテニアム（登録商標）の実施形態において実施される呼び出し認証のフロー・ダイアグラムである。この実施形態によれば、重要なサービス呼び出しの認証は、以下のステップで進む。
【０２１０】
１．前述したＥＰＣ処理は、ブロック１４１０で行われる。これによって、ハードウェア特権レベルはＰＬ０に引き上げられ、割り込みは無効にされ、制御はリンケージ・サービスに移される。
【０２１１】
２．ブロック１４２０では、リンケージ・サービスによって特権状態フラッグが、処理が以前のハードウェア特権レベルから移行したことを示すように設定される。次に、呼び出されているさらに高い特権サービスが必要とする任意のＰＫＲを設定してもよい。
【０２１２】
３．実際の仮想戻りアドレスを、呼び出しテーブルからの仮想戻りアドレスと、判定ブロック１４３０で比較する。アドレスが異なる場合には、認証は失敗する（１４７０）。
４．呼び出しテーブル・エントリーからの乱数を、経路テーブル内の指定されたネスティング・レベルにおける乱数と比較する（１４４０）。数が異なる場合には、認証は失敗する（１４７０）。
【０２１３】
５．認証に失敗した場合には、プラットフォーム・リンケージ・サービスによって誤差イベントが生成される（１４８０）。誤差イベントは、システムまたはアプリケーションに報告され得る。このレベルの誤差の重大さの場合には、アプリケーションは通常、低下した動作状態に入るか、あるいはソフトウェア・リセットおよび再始動システム・サービス呼び出しを実行する。
【０２１４】
６．一旦、認証に成功したら、呼び出しテーブルを、呼び出しテーブル・エントリーからの処置パラメータによって指定されるように、変更する（１４５０）。処置には通常、以下のものが含まれる：変更は含まれないこと；バック・ドミネータ登録を削除すること；バック・ドミネータ登録を呼び出しテーブル乱数と入れ替えること；次のネスティング・レベルにおける呼び出しテーブル乱数を経路テーブル内に挿入すること；または他のアプリケーション依存性の処置。一般的に、処置は、各アプリケーションに対して特別仕立てすることができる。一旦、処置処理が終了したら、制御は、呼び出されたサービスに送られる（１４６０）。
Ｉ／Ｏロジスティックスおよびセキュリティ
ＣＥ２のＩ／Ｏサービスの設計に対する指導原理は、「ゼロ移動」である。これは、Ｉ／Ｏが、可能ならばいつでも、内部のシステム・バッファまたは任意の中間のバッファを用いることを回避することを意味する。データ移動が避けられない場合には、データ移動を、できることなら、データの他の処理、たとえば圧縮、復元、暗号化、または復号化と組み合わせる。本発明の実施形態では、この基本原理に従うＣＥ２のＩ／Ｏサービスを用いる。
【０２１５】
第２の指導原理は、Ｉ／Ｏサービスが、ＣＥ２によってサポートされている特定のアプリケーションが必要とするＩ／Ｏのタイプに対してのみ提供される、ということである。これは、ＵＬＷシステムが採用するアプローチとは対照的である。このシステムで提供される構造は、Ｉ／Ｏドライバおよびファイル・システムの連続的に増大するポピュレーションに適応して、アプリケーションが、オペレーティング・システムの抽象化を利用できるようにし、任意の好適なＩ／Ｏデバイス上でＩ／Ｏ機能が実行されるようにできるものである。これは、ＵＬＷシステムが採用する原理を軽視するものではない。それらは、重要でありかつ非常に功を奏している。目的として、最も簡単であること、可能な限り速度が速いこと、かつセキュリティ脆弱性がないことを掲げると、結論として異なったものになり得るという事実を強調することは難しくない。
【０２１６】
本発明のアイテニアム（登録商標）の実施形態を、ウェブ・アプリケーションに対して用いるという特に重要な事例は、ネットワークＩ／Ｏトラフィックに対するデータ・ロジスティックスである。パケットは、様々な順番で到着してもよい：一部は、新しい接続の始まりを示してもよい；他は、リクエストまたは応答の完全なデータ・ペイロードを収容していてもよい；さらに他は、リクエストまたは応答の一部のみを収容していてもよい；ペイロードによっては、圧縮または復元および暗号化または復号化を、完全性の妥当性確認とともに必要としてもよい；他は、特定のプロトコルの方式の要素として用いられる中間のパケットであってもよい；さらに他は、システム障害に対する意図を伴って、またはシステムを無力にするためにおよびシステムがその指定された機能を行えないように、悪意により送られていてもよい。
【０２１７】
本発明の好ましいアイテニアム（登録商標）の実施形態では、ネットワーク・トラフィックを取り扱うための２つの可能なアプローチの一方を採用することが予想される。第１のアプローチは、特定のハードウェア・プラットフォームに内蔵されているかまたはプラグ接続されたネットワーク・インターフェース・コントローラ（ＮＩＣ：Network Interface Controller）に対する最も薄いネットワーク・プロトコル・スタックおよび可能な最も簡単なドライバを提供する。これらのドライバは、「ソケット・ライクな（socket-like ）」プロトコルの拡張されたおよび非同期の拡張機能をサポートしてもよく、また特定のアプリケーションに対して不可欠であるものを超えるいかなるプロトコルに対してもサポートする必要がなくてよい。第２のアプローチは、１つまたは複数の別個のプラグ・イン・ボードを用いることである。このようなボードはたとえば、機能的なオフロード・ボード（より高いレベルのインターフェースをサポートしてもよく、およびより多量のネットワーク負荷に対処するためにさらなる処理サイクルを用いてもよい）、または安全な起動を助けるためだけに設計されたボードである。両方の場合において、設計は、「ゼロ移動」原理によってガイドされる。
【０２１８】
現在の主要な多目的オペレーティング・システムは、Ｉ／Ｏドライバからのセキュリティ攻撃の被害を、非常に受けやすい。現在のＵＬＷシステムでは、Ｉ／Ｏドライバは、システムの最高のハードウェア特権モードにおいて実行される。これらのドライバの１つまたは複数における悪意な行為に対しては、いかなる防御も存在しない。Ｉ／Ｏドライバは現在、Ｉ／Ｏコントローラに命令しおよびこれと通信するときに物理アドレスを取り扱わなければならないため、ハードウェア仮想アドレス指定メカニズムが提供するいかなる保護も、容易に回避されてしまう。  この問題に対する現在のアプローチは、Ｉ／Ｏドライバにデジタル的に署名することで、「良好な人物」がドライバに書いたことおよびその人物の完全性が保持されていることの証明を試みることである。ドライバがサインされていることによって、ドライバが、その著者が書き込んだインストレーションのために到着したことが保証される。しかし、署名者が善良な人物であるということを受け入れることは、盲目的に信頼するという問題が残る。実際には、システム管理者は、デジタル署名キーのオーナーを完全に信頼するか、そうでなければ、管理者のシステムにドライバをインストールしないことを決定することを、強いられる。それは、巧みな選択でも安全な選択でもない。「デジタル的に署名したから、善良な人物を信頼せよ」という原理は、安全な解決方法としては不十分である。
【０２１９】
残念ながら、Ｉ／Ｏコントローラのアーキテクチャ、およびほとんどの所有プロセッサ・ベースのおよび業界標準プロセッサ・ベースのプラットフォームのアーキテクチャは、安全なＩ／Ｏドライバを保証する手段を考案する際の助けにはほとんどならない。仮想アドレス指定がメモリに対して与えるのと同一の保護が、まさにＩ／Ｏに対してもぜひ必要なものである。ドライバが物理メモリ・アドレスを取り扱わなければならない限り、ハードウェア・プラットフォームのメイン・メモリ内にあるものは何も、Ｉ／Ｏドライバ・コードにおける考えられる悪意な行為から、あるいはその事柄に対するバグから、保護することはできない。前記で引用したシャミールおよびファン・ソメーレンの論文では、物理メモリを走査する間に公開および秘密暗号キーを見出す簡単なアルゴリズムについて説明していた。
【０２２０】
図１６は、本発明のアイテニアム（登録商標）の実施形態におけるソフトウェア安全なＩ／Ｏハードウェア制御サービスを例示するフロー・ダイアグラムである。本発明の好ましいアイテニアム（登録商標）の実施形態において、Ｉ／Ｏドライバを保護するために取られるアプローチは、以下の通りである。
【０２２１】
１．すべてのドライバを、ＰＬ１において、システム制御サービスとして実行させる。
２．すべてのドライバを、仮想アドレスのみを用いて動作させる。
３．ＰＬ１から、Ｉ／Ｏアダプタがマッピングされる仮想および物理アドレスへのアドレス指定能力を、設けない。
【０２２２】
４．できるだけ小さくて、簡単で、かつ理解できるプラットフォーム・ハードウェアＩ／Ｏ制御サービスのみにおいて、すべてのハードウェアＩ／Ｏアダプタに対する実際の読み出しおよび書き込みを行う（１６４０）。
【０２２３】
５．プラットフォーム・ハードウェアＩ／Ｏ制御サービス内のすべての仮想−物理または物理−仮想アドレス変換を行い、すべての仮想アドレスが、Ｉ／Ｏバッファに対して割り当てられたメモリ領域内に含まれることを保証する（１６４０）。
【０２２４】
６．プラットフォーム・ハードウェアＰＯ制御サービスに対するソース・コードを公開して、同業者による評価を確実に受ける。
７．単に仮想アドレスを用いるだけでＩ／Ｏドライバを許可するアーキテクトされたソフトウェア・インターフェースを規定して、Ｉ／Ｏ制御アダプタに対する実際の読み出しおよび書き込みをもたらすＩ／Ｏプラットフォーム制御サービスに対するエンコードされた方向を与える（１６１０，１６２０）。
【０２２５】
８．このようなエンコードされた方向において、ハードウェア・アダプタ制御レジスタ・アドレスを間接的に指定し、プラットフォームＩ／Ｏハードウェア制御サービス内に含まれるアダプタの記述子を用いる（１６５０）；Ｉ／Ｏ指令をエンコーディングした後に、認証された呼び出し（前述）を、Ｉ／Ｏハードウェア制御サービスに対して作成する（１６３０および１６６０）。
【０２２６】
９．物理アドレスを収容するメモリ・データ構造の場合には、Ｉ／Ｏドライバが以下のことを行えるサービスを提供する：（１）仮想アドレスを用いてデータ構造を構築することができるデータ・ページに対するアドレス指定能力を得る；（２）データ・ページの所有権をＩ／Ｏハードウェア制御サービスへ戻す。ここでは、時間サービスによって、仮想アドレスが物理アドレスに変換され、アドレスが、Ｉ／Ｏバッファに対して割り当てられたメモリ領域内に含まれることが、保証される（１６４０）；（３）Ｉ／Ｏアダプタから読み出された任意の物理アドレスを変換して仮想アドレスに戻し、この仮想アドレスをＩ／Ｏドライバに戻す（１６４０）。本発明のアイテニアム（登録商標）の実施形態のメモリ組織によって、変換をどちらかの方向で行うことができる。一方の方向では、アイテニアム（登録商標）ｔｐａ（物理アドレスへの変換（translate to physical address ））命令を用いることができる。他方の方向では、Ｉ／Ｏバッファに対して割り当てられたページの開始物理アドレスのバイナリ・サーチを用いることができる。
【０２２７】
実際には、この設計アプローチによって、Ｉ／Ｏドライバを必要とし、かつ仮想メモリ・アドレスのみを用いてＩ／Ｏドライバが機能することを可能にする強制されるソフトウェア・インターフェースが、規定される。これによって、Ｉ／Ｏドライバが物理メモリ・アドレスを用いることが回避され、悪意によるＩ／Ｏドライバからのセキュリティ露出が閉じられる。その結果、重要な秘密データ、たとえば暗号化キーおよびキーイング材料、安全なポリシ・データ・ベース、およびランダム・データが、仮想メモリ・コンパートメント内に長時間、安全に存在することができる。
安全な起動、安全なローディング
将来のシステムは、安全に起動する能力を有することが予想される。安全に起動することの意味は、制御が、最初にオペレーティング・システム・ローダに、あるいはＣＥ２ローダに渡されるときに、ローダのインプリメンタは、以下の事実に基づいてもよいということである。すなわち、ローダは、実行を開始するときに、システムの完全制御を有していること、その完全性が保証されること（コードはどんな方法によっても変更されていない）、およびローダに対する実行経路は、完全性も保証されたファームウェア・コード・モジュールのみを通過すること、である。安全に起動するための可能な１つの実施形態が、「オペレーティング・システムおよびカスタマイズされた制御プログラムとインターフェースする安全な装置プラットフォーム（Secure Machine Platform that Interfaces to Operating Systems and Customized Control Programs）」と題された、米国特許出願第１０／１１８，６４６号明細書、２００２年１２月１９日公開、公開番号１００２／０１９４３８９Ａ１（「６４６明細書」）において記載されている。なおこの内容は、本明細書において参照により全体として取り入れられている。「６４６明細書」の実施形態では、「信頼の連鎖」について説明されていた。これは、実行すべき第１のファームウェア・モジュールの完全性のハードウェア妥当性確認から始まり、その拡張は、第１のモジュールおよびその後の各モジュールに、その後継モジュールの完全性が妥当であることを、そのモジュールへ制御を渡す前に確認させることによってなされる。「６４６明細書」で説明された実施形態における妥当性確認では、暗号のデジタル署名を利用している。
【０２２８】
現在のハードウェア・プラットフォームでは、起動したときにこのような信頼の連鎖は確立されない。起動時にこのような信頼の連鎖を確立するハードウェア・プラットフォームが利用可能となるまで、ＣＥ２ローダ、コード、およびデータ・イメージの完全性を確立するための１つのオプションには、信頼の連鎖の新しいルートをＣＥ２ローダにおいて確立することが含まれる。一旦、ＣＥ２ローダの完全性が確立されたら、その完全性は、信頼の連鎖をＣＥ２のすべてのモジュールを通して拡張することが、モジュールのデジタル署名の妥当性を確認することによって可能である。
【０２２９】
本発明のアイテニアム（登録商標）の実施形態では、信頼の連鎖を拡張することができるローダを用いる。一旦、ハードウェア・プラットフォームが安全に起動できれば、オペレーティング・システムおよび同時ＣＥ２の安全な起動およびロードが、あるいはＣＥ２のみの安全な起動およびロードが、実現されることになる。ハードウェア・プラットフォームが安全に起動できるときまで、本発明のアイテニアム（登録商標）の実施形態では、ＣＥ２ローダにおける信頼のレベルを増加させるための代替的なアプローチを取ってもよい。
【０２３０】
１．物理的なセキュリティが強制されるインストレーションでは、ＥＦＩユーティリティを設けることで、内部の主プロセッサ・ファームウェアの暗号ハッシュ、およびＣＥ２ローダの小さな第１フェーズの暗号ハッシュを、算出および印刷することができる。最初の実行の際に、このユーティリティが算出したハッシュ値を、人間が読取可能な形態で記録することもできるし、あるいは管理システムへ送信することもできる。その後の起動に対しては、あるいは周期的なサンプリングに対しては、このユーティリティを再び実行して、ＣＥ２を起動する前に本来の値と比較することができるハッシュを生成することができる。これは、システムの内部ファームウェアおよびＣＥ２ローダの完全性の妥当なチェックである。ユーティリティおよびＣＥ２システムは、ＣＤＲＯＭ上で分散させることができるが、これは、安全に保持されなければならない。システムがＵＬＷオペレーティング・システムも起動できる場合には、ユーティリティのバージョンを、オペレーティング・システムの下で実行して、ＥＦＩバージョンによって生成された値をクロス・チェックすることができる。これは、ＣＥ２ローダにおける確かさを高めるが、信頼の新しいルートを確立するには至らないアプローチである。
【０２３１】
２．システムに、バス・マスタとすることができ、かつカスタマイズされた読み出し専用プログラムを収容可能な別個のプラグ・イン・ボードが収容されている場合には、信頼のルートを、図１７ＡによるＣＥ２ローダの小さな第１のフェーズに対して確立してもよい。この例では、ＣＥ２ローダの小さな第１のフェーズが、ＥＦＩファームウェアによって、ブロック１７０５においてロードされる。一旦、ロードされると、第１のフェーズは、第１の信号を別個のプラグ・イン・ボードへ送った後に、アンキャッシュされたメモリ内で実行される第１の無限ループに入ってもよい（１７１０）。別個のプラグ・イン・ボードは、最初に、システム・ファームウェアを走査して、そのデジタル署名を検証し、次に、ＣＥ２ローダの第１のフェーズのコード・イメージを読み出して、そのデジタル署名を検証してもよい。一旦、これらの署名が検証されると、別個のプラグ・イン・ボードは、次に、１つまたは複数の命令をアンキャッシュされたメモリ内に書き込み、最後に、第１の無限ループ分岐を上書きして無限ループを終了させる（１７１５）。別個のプラグ・イン・ボードによって書き込まれる命令には、別個のプラグ・イン・ボードによってメモリに書き込まれる命令内で提供される乱数にアクセスする命令（１７１５）、この乱数を含む第２の信号を別個のプラグ・イン・ボードに送り、第２の無限ループに入る命令（１７２０）が含まれていてもよい。別個のプラグ・イン・ボードは、第１の無限ループを終了させるために命令を書き込むときと第２の信号を受け取るときとの間の継続時間を調整してもよい。継続時間が十分に小さいことおよび供給されたばかりの乱数が受け取られたことが示すのは、第１の無限ループを終了させて継続するために別個のプラグ・イン・ボードによって書き込まれた命令が、実行されるということである（１７２５）。これらの条件が満たされる場合には、次に別個のプラグ・イン・ボードによって、第２の無限ループを終了させるための命令が書き込まれる（１７２５）；別個のプラグ・イン・ボードによって同時に書き込まれた他の命令が、ＣＥ２ローダの第２および最後のフェーズを固定された物理アドレスでロードするファームウェアを呼び出す；ＣＥ２ローダの前記第２のフェーズのデジタル署名が妥当であると確認する（１７３０）；前記第２のフェーズへ制御を移す（１７３５）。この点から、ＣＥ２ローダは信頼の連鎖を拡張する。
【０２３２】
３．外部カード上のプログラム記憶域のみを読み出す物理的なセキュリティを保証しなくてはならない。しかし、起動プロセスは、手動のステップを必要とするのではなく、自動的である。別個のプラグ・イン・ボードが、システム・ファームウェアまたはローダのデジタル署名の妥当性を確認できないということを決定した場合には、第１または第２の無限ループを終了させるために生成された命令によって、システムが、誤差メッセージを印刷しおよび起動プロセスを終了させる。
【０２３３】
４．当業者にとって、第２のアプローチの可能な変形が数多く存在することは明らかである。たとえば、前述したプロセスを分割してより多くのフェーズにするか、主プロセッサと別個のプラグ・イン・ボードとの間のプロトコルを変更もしくは装飾するか、あるいは主プロセッサもしくは別個のプラグ・イン・ボード内の内蔵されたセキュリティ・チップを用いる等である。
【０２３４】
ハードウェア・プラットフォームが、安全に起動する能力を有するまで、前述したアプローチを物理的なセキュリティと組み合わせたものは実行可能であるように思われる。これは、特に、前述したように使用される別個のプラグ・イン・ボード内の起動コードが、読み出し専用メモリ内に完全に存在できる場合に、そうである。
【０２３５】
本発明のアイテニアム（登録商標）の実施形態において、ＣＥ２ローダの第１のフェーズのみのデジタル署名についてその妥当性を確認する理由は、ＥＦＩプログラムは、予測不可能な物理アドレスにおいて、ロードしてもよいし、再配置してもよいし、かつファームウェアによって実行してもよいからである。事実上、このことは、フル・ローダのロードしたイメージには、定まったデジタル署名はないことを意味する。署名は、各物理的ロード・アドレスに対して異なっている。この問題は、ＣＥ２ローダの小さな第１のフェーズに対しては、そのコードを十分簡単に作ることによって、回避することができる。一旦、第１のフェーズの妥当性が確認されたら、第１のフェーズは次に、ＥＦＩに命令を出して、特定の物理アドレスにおいてロードすべきＣＥ２ローダの完全な第２のフェーズを、ロードさせることができる。その結果、第１のフェーズが、第２のフェーズのデジタル署名について妥当であると確認することができる。
【０２３６】
前述の明細書において、本発明を、その特定の実施形態を参照して説明してきた。しかし、本発明のより広い趣旨および範囲から逸脱することなく種々の変更および変形を行ってもよいことが、明らかである。したがって明細書および図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。
【図面の簡単な説明】
【０２３７】
【図１】本発明の実施形態を利用することができるコンピュータ・システムの例を示す図。
【図２Ａ】システム資源のパーティショニングを概念的に例示する図。
【図２Ｂ】システム資源のパーティショニングを概念的に例示する図。
【図３】本発明の一実施形態によるＳＧＰＯＳ、システム資源、およびＣ２Ｅ２の間の関係を概念的に例示する図。
【図４】本発明の一実施形態によるＳＧＰＯＳ起動処理、Ｃ２Ｅ２初期化、およびＳＧＰＯＳ処理を概念的に例示する簡略化されたフロー・ダイアグラム。
【図５】本発明の一実施形態によるＳＧＰＯＳ起動処理およびＣ２Ｅ２初期化を概念的に例示する簡略化されたブロック・ダイアグラム。
【図６】Ａ：本発明の一実施形態による安全なウェブ・サーバ機能性を提供するように構成されたコンピュータ・システムを概念的に例示する図。この図では、ＳＧＰＯＳは、システム資源のパーティションの制御を保持している。Ｂ：本発明の代替的な実施形態による安全なウェブ・サーバ機能性を提供するように構成されたコンピュータ・システムを概念的に例示する図。この図では、ＳＧＰＯＳは、休止状態に配置され、システム資源の完全な制御をＣＥ２に引き渡している。
【図７】本発明の一実施形態によるＣＥ２内のサービスの間の関係を概念的に例示する図。
【図８Ａ】本発明のアイテニアム（登録商標）の実施形態において指定され得るページ・アクセス権のダイアグラム。
【図８Ｂ】本発明のアイテニアム（登録商標）の実施形態における保護キー・レジスタのコンテンツのダイアグラム。
【図９Ａ】第１世代の多目的オペレーティング・システム、たとえばＩＢＭシステム／３６０におけるＤＯＳオペレーティング・システムによるコードまたはデータの物理的にアドレス指定されたセクションの組織を概念的に例示する図。
【図９Ｂ】従来の多目的オペレーティング・システム、たとえばＵＬＷシステムによるコードまたはデータの仮想的にアドレス指定されたセクション、および物理ページに対するそれらのマッピングの組織を概念的に例示する図。
【図１０Ａ】本発明のアイテニアム（登録商標）の実施形態における仮想的および物理的にアドレス指定されたページのマッピングを概念的に例示する図。
【図１０Ｂ】本発明の１つのアイテニアム（登録商標）の実施形態による物理ページの実際の組織を例示する例を示す図。
【図１１Ａ】本発明のアイテニアム（登録商標）の実施形態におけるソフトウェア・スタックおよびレジスタ保存エンジン・スタックに対して割り当てられるページを、関連する保護設定とともに示す、簡略化されたダイアグラム。
【図１１Ｂ】本発明のアイテニアム（登録商標）の実施形態におけるソフトウェア・スタックおよびレジスタ保存エンジン・スタックに対して割り当てられるページを、関連する保護設定とともに示す、簡略化されたダイアグラム。
【図１２】本発明のアイテニアム（登録商標）の実施形態におけるアプリケーションに関連するエントリ・ベクタを示す簡略化されたダイアグラム。
【図１３】本発明の一実施形態によるプライオリティ・コミュテータを用いたアプリケーション論理フローを概念的に例示する簡略化されたダイアグラム。
【図１４】本発明のアイテニアム（登録商標）の実施形態において実施される呼び出し認証を示すフロー・ダイアグラム。
【図１５】本発明のマルチ・プロセッサ実施形態における仮想的にアドレス指定された資源の局所的および大域的なマッピングを示すダイアグラム。
【図１６】本発明のアイテニアム（登録商標）の実施形態におけるソフトウェア安全なＩ／Ｏハードウェア制御サービスを例示するフロー・ダイアグラム。
【図１７Ａ】本発明のアイテニアム（登録商標）の実施形態に対する安全な起動処理を例示するフロー・ダイアグラム。
【図１７Ｂ】本発明のアイテニアム（登録商標）の実施形態に対するＣＥ２フェーズ２ローダ処理を例示するフロー・ダイアグラム。
【図１７Ｃ】本発明のアイテニアム（登録商標）の実施形態に対するＣＥ２初期化処理を例示するフロー・ダイアグラム。
【図１】
2007524896.tif 000003
2007524896.tif 000004
【図３】
2007524896.tif 000005
【図４】
2007524896.tif 000006
【図５】
2007524896.tif 000007
2007524896.tif 000008
【図７】
2007524896.tif 000009
2007524896.tif 000010
2007524896.tif 000011
2007524896.tif 000012
2007524896.tif 000013
2007524896.tif 000014
2007524896.tif 000015
【図１２】
2007524896.tif 000016
【図１３】
2007524896.tif 000017
【図１４】
2007524896.tif 000018
【図１５】
2007524896.tif 000019
【図１６】
2007524896.tif 000020
2007524896.tif 000021
2007524896.tif 000022
2007524896.tif 000023
【手続補正書】
【提出日】平成18年8月23日(2006.8.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
信頼の連鎖を実行環境に拡張する方法であって、
カスタマイズされた実行エンジン（ＣＥ２）ローダが、
コンピュータ・システムのファームウェアに関連する１つまたは複数のデジタル署名の妥当性を確認し、
前記ＣＥ２ローダに関連する１つまたは複数のデジタル署名の妥当性を確認し、かつ
前記妥当性の確認、および前記ＣＥ２のコードおよびデータ・セクションに関連する１つまたは複数のデジタル署名の妥当性確認の終了が成功した後に、前記ＣＥ２のシステム・サービスおよびアプリケーションを開始すること、
によって、信頼の新しいルートを確立し、信頼の連鎖を新しいルートから前記ＣＥ２へ拡張すること、
を備える方法。
【請求項２】
請求項１に記載の方法において、前記ＣＥ２およびアプリケーションが実行されるコンピュータ・システムの各プロセッサは、並列保護アーキテクチャを実施する、方法。
【請求項３】
請求項１に記載の方法であって、更に、
前記コンピュータ・システム内にロードされて開始された後に、前記ＣＥ２ローダの第１の部分が、前記ファームウェアに関連する前記１つまたは複数のデジタル署名の妥当性確認と、前記１つまたは複数のデジタル署名のうちの、前記ＣＥ２ローダの前記第１の部分に関連する第１のデジタル署名の妥当性確認とを開始すること、
前記ファームウェアに関連する前記デジタル署名と前記第１のデジタル署名とが妥当であると分かった場合に、前記ＣＥ２ローダの前記第１の部分がさらなる妥当性確認を開始すること、
さらなる妥当性確認が行われた後に、前記ＣＥ２ローダの前記第１の部分が、
前記ＣＥ２ローダの第２の部分をロードするとともに、
前記１つまたは複数のデジタル署名のうちの、前記ＣＥ２ローダの前記第２の部分に関連する第２のデジタル署名の妥当性を確認すること、
前記第２のデジタル署名が妥当であると分かった場合に、制御を前記ＣＥ２ローダの前記第２の部分へ移すこと、
を備える方法。
【請求項４】
請求項３に記載の方法であって、更に、
前記さらなる妥当性確認を開始する前に、前記ＣＥ２ローダの前記第１の部分が、前記コンピュータ・システムとは独立に機能する別個のプラグ・イン・ボードから乱数を受け取ること、を備え、
前記さらなる妥当性確認は、前記さらなる妥当性確認および前記ＣＥ２ローダの前記第１の部分によって返される前記乱数の妥当性確認の開始が被る遅延についての前記別個のプラグ・イン・ボードによる妥当性確認を備える、
方法。
【請求項５】
請求項３に記載の方法において、
前記ファームウェアの前記１つまたは複数のデジタル署名および前記第１のデジタル署名の妥当性は、前記コンピュータ・システムとは独立して機能する別個のプラグ・イン・ボードによって確認される、方法。
【請求項６】
請求項３に記載の方法において、
前記ＣＥ２ローダの前記第２の部分をロードすることは、前記ＣＥ２ローダの前記第２の部分を、前記コンピュータ・システムのメモリにおける固定されたアドレスでロードして、前記ＣＥ２ローダの前記第１の部分による前記第２のデジタル署名の妥当性確認を容易にすることを備える、方法。
【請求項７】
コンピュータ・システムの複数のプロセッサによって、アプリケーションとシステム・サービスの組とを実行する方法であって、
カスタマイズされた実行環境（ＣＥ２）が、前記ＣＥ２が完全に制御する前記複数のプロセッサのうちの各プロセッサ上に、前記ＣＥ２内においてアプリケーションとシステム・サービスの組とを実行するための単一スレッドのみを提供すること、
前記アプリケーションが、通常のアプリケーション・タスク、および前記アプリケーションの外部のイベントの結果として発生するタスクの両方を、前記複数のプロセッサのうちの各プロセッサ上の前記単一スレッドのみを用いて実行すること、
を備える方法。
【請求項８】
請求項７に記載の方法であって、更に、
割り込みに応答して、割り込み制御サービスが、前記単一スレッドの制御を受け取ること、前記単一スレッドの制御が、最初は、前記割り込みに対応する１つまたは複数の割り込みサービス・ルーチン（ＩＳＲ）となり、後に、１つまたは複数の延期された割り込みサービス・ルーチン（ＤＩＳＲ）となるように、状態を設定することを備える方法。
【請求項９】
請求項７に記載の方法であって、更に、
Ｉ／Ｏドライバの最小の組のＩ／Ｏドライバが、仮想アドレスを用いることによってのみ動作し、Ｉ／Ｏ動作を行うために必要なステップを指定するエンコードされた指令を生成すること、
前記Ｉ／Ｏドライバが、プラットフォーム制御サービスを呼び出して、Ｉ／Ｏデバイスを制御すること、
を備え、前記プラットフォーム制御サービスは、前記Ｉ／Ｏドライバが供給する前記エンコードされた指令に従うことによって物理アドレスを用いる、方法。
【請求項１０】
請求項１または７に記載の方法であって、更に、
呼び出し元が、カスタマイズされた実行環境（ＣＥ２）内で実行すること、
前記呼び出し元が、前記ＣＥ２のシステム・サービス呼び出しを呼び出すこと、
前記システム・サービス呼び出しが、前記呼び出し元によって前記システム・サービス呼び出しに関連する呼び出し戻りアドレスが検証されることを引き起こすこと、
を備える方法。
【請求項１１】
請求項１０に記載の方法において、
前記呼び出し戻りアドレスの検証は、前記ＣＥ２の中間のシステム・サービスを介して行われる、方法。
【請求項１２】
請求項１０に記載の方法において、
前記呼び出し戻りアドレスを検証することは、前記ＣＥ２および関連アプリケーションのローディングの間に初期化される１つまたは複数のデータ構造を参照して行われる、方法。
【請求項１３】
請求項１２に記載の方法において、
前記１つまたは複数のデータ構造における第１のデータ構造は、呼び出しテーブルを備え、前記１つまたは複数のデータ構造における第２のデータ構造は、経路テーブルを備える、方法。
【請求項１４】
請求項１３に記載の方法において、
前記経路テーブルは、１つまたは複数の乱数を特定の箇所に含み、前記呼び出しテーブルは、前記呼び出し戻りアドレス、ＣＥ２ローダによって供給される１つまたは複数の乱数、特定の経路テーブル・エントリー箇所、および前記システム・サービス呼び出しの間に実行されるべき前記経路テーブルに対する変更が少しでも存在するのであるならば、その変更を示す処置パラメータ、を含む、方法。
【請求項１５】
請求項１４に記載の方法であって、更に、
前記呼び出しテーブル内の前記１つまたは複数の乱数における第１の乱数を、前記経路テーブル内の特定の箇所での前記１つまたは複数の乱数における第２の乱数と比較することによって、前記呼び出し元へのフロー経路内のバック・ドミネーティング命令を通過した後で、前記呼び出し元のフローが呼び出し点に到達していたことを検証すること、
を備える方法。
【請求項１６】
請求項１３に記載の方法であって、更に、
前記バック・ドミネーティング命令に関連する乱数を検証することを備える方法。
【請求項１７】
請求項１０に記載の方法において、
前記呼び出し元は、複数の特権レベルのうちの第１の特権レベルで実行し、呼び出されたシステム・サービスは、前記複数の特権レベルのうちの同一か、あるいはより高い特権レベルで実行する、方法。
【請求項１８】
請求項１０に記載の方法であって、更に、
Ｉ／Ｏドライバの最小の組のＩ／Ｏドライバが、仮想アドレスを用いることによってのみ動作し、Ｉ／Ｏ動作を行うために必要なステップを指定するエンコードされた指令を生成すること、
前記Ｉ／Ｏドライバが、プラットフォーム制御サービスを呼び出して、Ｉ／Ｏデバイスを制御すること、
を備え、前記プラットフォーム制御サービスは、前記Ｉ／Ｏドライバが供給するエンコードされた指令に従うことによって物理アドレスを用いる、方法。
【請求項１９】
請求項１８に記載の方法において、
前記エンコードされた指令は、Ｉ／Ｏコントローラ・アドレスを、１つまたは複数の前記プラットフォーム制御サービスのみによってアクセス可能なコンパートメント内に存在するＩ／Ｏコントローラ記述子を通して、間接的に指定する、方法。
【請求項２０】
コンピュータ・システムのオペレーティング・システムによって、前記コンピュータ・システムの、１つまたは複数のプロセッサおよび物理メモリの１つまたは複数の範囲を含むシステム資源をパーティショニングする方法であって、
前記オペレーティング・システムが、カスタマイズされた実行環境（ＣＥ２）に関する情報を受け取ること、
前記オペレーティング・システムが、
（ｉ）前記システム資源のうちで、存在するのであるならば、どのシステム資源が、前記オペレーティング・システムの制御の下に留まるべきか、ならびに、前記システム資源のうちのどのシステム資源が、前記ＣＥ２の制御の下に配置されるべきかを決定すること、
（ｉｉ）前記システム資源の第１のパーティションを前記ＣＥ２に関連させること、
によって、前記コンピュータ・システムのシステム資源をパーティショニングすること、
前記オペレーティング・システムが、前記システム資源の前記第１のパーティションの完全制御を前記ＣＥ２に引き渡すこと、
を備える方法。
【請求項２１】
請求項２０に記載の方法において、
前記ＣＥ２に関する情報は、パーティション資源に対する指令および関連するパーティション記述子を含み、該パーティション記述子は、前記ＣＥ２が必要とする資源を識別し、パーティションをどのように構成すべきかを示す、方法。
【請求項２２】
請求項２０に記載の方法において、
前記システム資源の第１のパーティションを前記ＣＥ２に関連させることは、前記第１のパーティション内のシステム資源部分を前記オペレーティング・システムから分離すること、割り込みを再構成することを備える、方法。
【請求項２３】
請求項２０に記載の方法であって、更に、
前記オペレーティング・システムが、前記システム資源における第２のパーティションの完全制御を保持すること、
ハードウェア隔離を用いることによって、前記システム資源における前記第２のパーティションを隔離して、前記オペレーティング・システムに関連する前記システム資源を前記ＣＥ２から保護すること、
を備える方法。
【請求項２４】
請求項２３に記載の方法であって、更に、
ハードウェア隔離を用いることによって、前記システム資源における前記第１のパーティションを隔離して、前記ＣＥ２に関連する前記システム資源を前記オペレーティング・システムから保護すること備える方法。
【請求項２５】
請求項２３に記載の方法において、
前記ハードウェア隔離は、前記システム資源の前記第１のパーティションまたは前記第２のパーティション内の仮想的にアドレス指定されたメモリの１つまたは複数の範囲上の１つまたは複数の動作に対する保護キーの１つまたは複数の互いに素な集合を確立することを備える、方法。
【請求項２６】
請求項２３に記載の方法において
前記ハードウェア隔離は、前記システム資源の前記第１のパーティションまたは前記第２のパーティション内の仮想的にアドレス指定されたメモリの１つまたは複数の範囲上の１つまたは複数の動作に対する領域識別子の１つまたは複数の互いに素な集合を確立することを備える、方法。
【請求項２７】
請求項２３に記載の方法において、
前記ハードウェア隔離は、前記システム資源の前記第２のパーティション内のメモリの１つまたは複数の範囲を前記第２のパーティション内のプロセッサに関連させること、前記システム資源の前記第１のパーティション内のメモリの１つまたは複数の範囲を前記第１のパーティション内のプロセッサに関連させること、を備える、方法。
【請求項２８】
請求項２７に記載の方法において、
前記システム資源の前記第２のパーティション内のメモリの１つまたは複数の範囲を前記第２のパーティション内のプロセッサに関連させること、ならびに、前記システム資源の前記第１のパーティション内のメモリの１つまたは複数の範囲を前記第１のパーティション内のプロセッサに関連させることは、領域識別子ベースのメモリ・パーティショニング・メカニズムを用いることを備える、方法。
【請求項２９】
請求項２０に記載の方法であって、更に、
前記ＣＥ２が終了しているという表示を受け取ること、
前記オペレーティング・システムが、前記システム資源の前記第１のパーティションの制御を担うこと、
を備える方法。
【請求項３０】
常駐のオペレーティング・システムのソフトウェア・イメージが記憶された１つまたは複数の記憶装置、および該１つまたは複数の記憶装置に結合されるとともに、前記常駐のオペレーティング・システムを実行するように構成された１つまたは複数のプロセッサを含む資源を有するシステムにおいて、
前記１つまたは複数の記憶装置が、１つまたは複数のカスタム実行環境（ＣＥ２）に関連するカスタマイズされた制御環境およびサービスのソフトウェア・イメージを記憶し、
前記１つまたは複数のプロセッサが、前記カスタマイズされた制御環境およびサービスを実行するように構成され、
前記システムの資源のうちで、存在するのであるならば、どの部分が、前記常駐のオペレーティング・システムの制御の下に留まるべきか、ならびに前記資源のどの部分が前記１つまたは複数のＣＥ２の制御の下に配置されるべきかについての決定がなされ、
前記資源の１つまたは複数の部分を前記１つまたは複数のＣＥ２に関連させることによって、前記資源は、前記常駐のオペレーティング・システムおよび前記１つまたは複数のＣＥ２間でパーティショニングされることによって特徴付けられるシステム。
【請求項３１】
オペレーティング・システムのソフトウェア・イメージが記憶された１つまたは複数の記憶装置、メモリ、１つまたは複数の入出力（Ｉ／Ｏ）装置、および前記１つまたは複数の記憶装置に結合されるとともに、前記オペレーティング・システムを実行するように構成された１つまたは複数のプロセッサを含むシステム資源を有するサーバにおいて、
前記１つまたは複数の記憶装置が、同時カスタム実行環境（Ｃ２Ｅ２）に関連するカスタマイズされた制御環境およびサービスのソフトウェア・イメージを記憶し、前記オペレーティング・システムは、前記オペレーティング・システムが使用および制御するためのシステム資源の第１のパーティションおよび前記Ｃ２Ｅ２が使用および制御するためのシステム資源の第２のパーティションを確立することができ、
前記１つまたは複数のプロセッサが、前記カスタマイズされた制御環境およびサービスを実行するように構成され、
前記１つまたは複数の記憶装置の第１の部分、前記１つまたは複数のプロセッサの第１の部分、前記メモリの第１の部分、および前記１つまたは複数のＩ／Ｏ装置の第１の部分が、前記オペレーティング・システムによって、前記第１のパーティションに関連付けされ、
前記１つまたは複数の記憶装置の第２の部分、前記１つまたは複数のプロセッサの第２の部分、前記メモリの第２の部分、および前記１つまたは複数のＩ／Ｏ装置の第２の部分が、前記オペレーティング・システムによって、前記第２のパーティションに関連付けされ、
前記第１のパーティションは、ハードウェア・ベースのセキュリティ対策を用いることによって前記オペレーティング・システムに関連するシステム資源を前記Ｃ２Ｅ２から保護するために隔離され、
前記第２のパーティションの完全制御は、前記オペレーティング・システムが前記メモリの前記第２の部分内の前記カスタマイズされた制御環境およびサービスを初期化し、呼び出すことによって、前記Ｃ２Ｅ２に引き渡されることによって特徴付けられるサーバ。
【請求項３２】
請求項３１に記載のサーバにおいて、
前記第２のパーティションは、ハードウェア・ベースのセキュリティ対策を用いることによって前記Ｃ２Ｅ２に関連するシステム資源を前記オペレーティング・システムから保護するために隔離される、サーバ。
【請求項３３】
請求項３１に記載のサーバにおいて、
前記カスタマイズされた制御環境およびサービスは非移植性である、サーバ。
【請求項３４】
請求項３１に記載のサーバにおいて、
前記第１のパーティションは、少なくとも１つのプロセッサを含む、サーバ。
【請求項３５】
請求項３１に記載のサーバにおいて、
前記第２のパーティションは、少なくとも１つのプロセッサを含む、サーバ。
【請求項３６】
請求項３１に記載のサーバにおいて、
前記１つまたは複数の記憶装置は、前記カスタマイズされた制御環境およびサービスの計算構造が調整されているカスタマイズされたアプリケーションのソフトウェア・イメージを記憶している、サーバ。
【請求項３７】
請求項３６に記載のサーバにおいて、
前記カスタマイズされたアプリケーションはウェブ・エッジ・エンジンを備える、サーバ。
【請求項３８】
請求項３７に記載のサーバにおいて、
前記ウェブ・エッジ・エンジンは、１つまたは複数のウェブ・サーバ、アプリケーション・サーバ、または通信サーバを備える、サーバ。
【請求項３９】
請求項３８に記載のサーバにおいて、
通信チャネルが前記第１のパーティションと前記第２のパーティションとの間に維持され、ダイナミック・コンテント・ジェネレータが、前記第１のパーティション内で実行し、ダイナミック・コンテントを前記ウェブ・サーバに前記通信チャネルを介して提供する、サーバ。
【請求項４０】
請求項３１〜３９のうちのいずれか一項に記載のサーバにおいて、
前記ハードウェア・ベースのセキュリティ対策は、領域識別子、保護識別子、およびメモリ・ページ・アクセス権値のうちの１つまたは複数を用いることを備える、サーバ。
【請求項４１】
オペレーティング・システムであって、
コンピュータ・システムのシステム資源を、少なくとも、前記オペレーティング・システムの制御の下に留まる第１のパーティションと、同時カスタム実行環境（Ｃ２Ｅ２）の完全制御の下に配置されるべき第２のパーティションとにパーティショニングするための手段と、
前記第１のパーティションにおけるシステム資源を前記Ｃ２Ｅ２によるアクセスから保護するためのハードウェア・ベースの隔離機構に対するインターフェース手段と、
前記第２のパーティションにおけるシステム資源の完全制御を前記Ｃ２Ｅ２へ移すための手段であって、前記Ｃ２Ｅ２に関連するカスタマイズされた制御およびサービスを初期化し、呼び出すことを含む、手段と、
前記第１のパーティションと前記第２のパーティションとの間の通信を提供するための手段と、
を備えるオペレーティング・システム。
【請求項４２】
請求項４１に記載のオペレーティング・システムであって、更に、
パーティショニングされたシステム資源を再び取り入れるための手段を備えるオペレーティング・システム。
【請求項４３】
請求項４１に記載のオペレーティング・システムであって、更に、
前記オペレーティング・システムおよび前記Ｃ２Ｅ２をオペレータ制御するための別個の手段と、
前記オペレーティング・システムおよび前記Ｃ２Ｅ２をモニタリングするための別個のインターフェース手段と、
を備えるオペレーティング・システム。
【請求項４４】
請求項４１，４２または４３に記載のオペレーティング・システムであって、更に、
前記オペレーティング・システムが存在するシステム資源のハードウェア強制されたパーティションとは別個の、システム資源の個別のハードウェア強制されたパーティション内で動作し、これを制御する１つまたは複数の同時カスタム実行環境（Ｃ２Ｅ２）と通信するための手段と、
前記１つまたは複数のＣ２Ｅ２におけるＣ２Ｅ２に処理を始めさせるか、あるいは終了させるための手段と、
を備えるオペレーティング・システム。
【国際調査報告】
2007524896.tif 000024
2007524896.tif 000025
2007524896.tif 000026