説明

カスタマイズされた実行環境および該環境をサポート可能なオペレーティング・システム

カスタム実行環境(CE)を実施するための方法および技術、関連するローダ、およびCEをサポートするためのオペレーティング・システムが提供されている。一実施形態によれば、コンピュータ・システムの、存在するのであるならば、どのシステム資源が、コンピュータ・システムの常駐のオペレーティング・システムの制御の下に留まるべきか、ならびにどのシステム資源が、1つまたは複数のCEの制御の下に配置されるべきかについての決定がなされる。次に、システム資源の1つまたは複数のパーティションを1つまたは複数のCEに関連させることによって、システム資源は、常駐のオペレーティング・システムおよび1つまたは複数のCEの間でパーティショニングされる。一実施形態によれば、CEは、アプリケーションのコードおよびデータ・セクションと、システム・サービスの組のコードおよびデータ・セクションとを含む。システム・サービスの組は、並列保護アーキテクチャを実施する1つまたは複数のプロセッサを含むコンピュータ・システムのハードウェア資源の組の直接的かつ完全制御を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、一般的には、アプリケーション実行環境およびオペレーティング・システムの分野に関する。より詳細には、本発明の実施形態は、(i)特定のクラスのハードウェア命令の組のアーキテクチャに対して高度に調整され、かつその命令の組の保護機構を用いてセキュリティの脆弱性を低減するアプリケーション実行環境;および(ii)多目的オペレーティング・システムを増強して、1つまたは複数のアプリケーション実行環境との共生的パートナとして機能するようにすること、に関する。
【背景技術】
【0002】
最新の多目的オペレーティング・システムが採用するアプローチは、実際のプロセッサ・ハードウェアの最上部において複数レベルの抽象化を規定して実施することである。このような抽象化には、複数の仮想メモリ、複数のタスク(別名プロセスまたはスレッド)、ファイル、ソケット、割り込みハンドラ、セマフォ、スピン・ロック、時刻クロック、インターバル・タイマなどが含まれる。
【0003】
これらの抽象化のいくつかは、通常はプロセッサの実際の計算資源に対して完全な制御を実行するそれぞれのオペレーティング・システムのカーネル内で実施される。このようなカーネルは、プロセッサが与える最も高い特権レベルで実行され、カーネルによって構成されるプログラムがプロセッサ命令の組の「特権命令」を実行することを可能にする。オペレーティング・システム・カーネルによって、このような抽象化の場合の形成、スケジューリング、コーディネーション、およびデストラクションが管理される。またカーネルによって、ハードウェア・プロセッサ・アーキテクチャによって規定される同期および非同期の障害、トラップ、アボート、および割り込みの全範囲を適切に取り扱うことが行われる。
【0004】
一体型またはプラグ・インの入出力(I/O:Input/Output)デバイス制御アダプタの制御は、ドライバ(別名I/Oドライバまたはローカル・エリア・ネットワーク(LAN:Local Area Network)ドライバまたは<デバイス>ドライバ。ここで<デバイス>は、特定の周辺機器、バス、または機能名である)と呼ばれるプログラムによって実施される。またこのようなドライバは、プロセッサが与える最も高い特権レベルにおいて実行することが許可される。ドライバに含まれるコードの量は通常、オペレーティング・システム・カーネル自体におけるコードよりも多い。
【0005】
他の要素によって、オペレーティング・システム・カーネルおよびI/Oドライバの最上部に構築される抽象化が実施される。これらには、ファイル・システム、ネットワーク・スタック、同期化プリミティブ、信号送信メカニズム、ソケット・インターフェース、グラフィカル・ユーザ・インターフェース、およびシステム・サービスの種々のライブラリが、含まれる。これらの要素が、オペレーティング・システム・カーネルおよびI/Oドライバと組み合わされることにより、多くの異なるハードウェア・プラットフォーム上で実現可能なアプリケーションに対するインターフェース・プログラムが得られる。
【0006】
多目的オペレーティング・システムが提供する複数レベルの抽象化を規定する際における主な目的は、互換性がないプロセッサおよびプラットフォーム・ハードウェアおよびファームウェア・アーキテクチャを用いるシステムに渡って実施可能なアプリケーション・プログラミング・インターフェース(API:Application Program Interface )を開発することにある。現在のユニックス(Unix(登録商標))、リナックス(Linux (登録商標))、およびウィンドウズ(Windows (登録商標))・オペレーティング・システム(ULWシステム)(場合によっては、本明細書においては「主要なオペレーティング・システム」と称する)において見られる複数の抽象化層を規定し、かつ実施するプログラムは、重要であり、移植性を実現する際に功を奏していたが、そのような結果は、性能を犠牲にすることおよび他の負の効果を伴わずには達成されていなかった。このような効果の主な2つは、「最小公分母」(LCD:Lowest Common Denominator )の効果および「セマンティック・ミスマッチ」(SM:Semantic Mismatch )の効果と呼ばれる。これらの効果のうちの前者の効果によって、ULWオペレーティング・システムは、一部のプロセッサ上のみに存在する強力な能力からは利益を得ることができないでいる。後者の効果は、過剰な性能オーバーヘッドにおいて、またはシステム・レベルの機能上の不完全性、たとえば拡張性およびセキュリティにおいて、現れる。
【0007】
特にULWシステムにおけるオペレーティング・システムの移植性は、実際には、コンセンサスの2つの基本的なカテゴリにつながっている。第1に、APIにおいてどの抽象化をサポートするかについて、ULWシステム間で幅広いコンセンサスが存在する。たとえば、ULWシステムの仮想メモリ、プロセス・スレッド・タスク、ファイル、ネットワーク、および割り込み抽象化の間で、著しい差を見出すことはできない。もちろん、API間の均一性によって、アプリケーションの移植性が可能になる。第2に、ハードウェア能力のどの下位集合をサポートするかについてコンセンサスが存在する。この能力の下位集合に、アーキテクチャのLCDによって適切に標識することができる。
【0008】
1960年代半ばに、IBMのシステム/360の導入に伴って、ハードウェア的に強制された2つの特権のレベルに基づくオペレーティング・システム構造が確立された。オペレーティング・システム・カーネル(当時は「ニュークレアス(Nucleus )」と呼ばれた)および他の重要なシステム制御コードは、高いハードウェア・特権レベルで実行された。アプリケーション・コードを含む他のコードは、低いハードウェア特権レベルで実行された。
【0009】
いくつかの重要な命令の組のアーキテクチャによって、その後に4つのレベルのハードウェア特権が、他の高性能な保護メカニズムとともに与えられたが、ULWオペレーティング・システムは、これらの機構をサポートしてはいない。何故なら、このようなサポートは、依然として2つのレベルのハードウェア特権を与えるプロセッサ上では、実行できないからである。実際には、ハードウェアLCD効果のせいで、ULWオペレーティング・システムは現在、基本的に1960年代の特権モデルをサポートすることを続けており、読み出し、書き込み、および実行の特権制御に対する拡張機能は少数である。本当に重要な唯一の変化は、現在ハードウェア特権の最も高いレベルで実行されるコードの量の爆発的な成長であって、IBMシステム/360アーキテクトが意図も予測もしてない結果である。
【0010】
より強力なアドレス指定保護能力、たとえばPARISCX(登録商標)およびアイテニアム(登録商標)システムによって提供されるものは、ULWオペレーティング・システムによってまったく使用されていない状態が続いている。また、特に非常に安全なシステムに対しては、すべての製造業者のプロセッサに普及している能力を超えるより細かい単位のメモリ保護能力をどうしても使用する必要がある。このような能力に対するサポートは、どのULW多目的オペレーティング・システムからもまったく得られない。そのため、非常に安全であり得るオペレーティング・システムを構築することはさらに難しくなっている。たとえばULWシステムでは、長時間メイン・メモリ内に暗号キーおよび暗号キーイング材料を記憶することは安全でないことが知られている(ニールス・ファーガソン&ブルース・シュナイア(Niels Ferguson&Bruce Schneier )、「実用的な暗号化(Practical Cryptography)」、ウィリ(Wiley )、2003、アジ・シャミール&ニッコ・ファン・ソメーレン(Adi Shamir&Nicko Van Someren)「記憶されたキーと隠れっこをする(Playing hide and seek with stored keys)」(1998年9月22日))。しかし、これは、アイテニアム(登録商標)アーキテクチャによって提供される保護能力を本出願で説明する方法で用いれば、安全に行うことができる。アイテニアム(登録商標)2プロセッサの少なくとも明示的な命令レベルの並列処理および保護能力を含むコンピュータ・アーキテクチャを、本明細書では、「並列保護アーキテクチャ」(PPA:Parallel Protected Architecture )と呼ぶことにする。
【0011】
ULWオペレーティング・システムが提供する第1のカテゴリの抽象化のコンセンサスの結果、ハードウェアLCDコンセンサスと同様に、場合によっては本明細書においてSM効果と称する機能上の欠点が集まることになる。一般的に容認されているオペレーティング・システム抽象化は、重要な幅広いクラスのアプリケーションに対して適切であるが、このような抽象化は、すべての場合において理想的というわけではない。どのアプリケーションにも適するコンピューティング構造というものは、あり得ない。しかし、すべてのアプリケーションを、一般的に容認されているULWのAPI抽象化にマッピングしなければならないということは、この事実と衝突する。重要な場合には、ULWオペレーティング・システム抽象化によって、その下にあるハードウェア性能および保護能力を十分に使用することが妨げられる。
【発明の開示】
【発明が解決しようとする課題】
【0012】
アプリケーションによっては、単純に、ULW制約の制限内では機能できないものがある。明らかな例は、リアル・タイム・アプリケーションである。このアプリケーションでは、システムは常に、厳密な時間制約の中で応答しなければならない。多目的オペレーティング・システムは通常、システムが達成することのできる最良の応答にシステム自体を合わせるためのパラメータを設けている。しかし、多目的オペレーティング・システムは、厳しいリアル・タイム・アプリケーションの要求を常に満たすということはできない。システム設計者は、このような問題に種々の方法で対応している。一部の設計者は、多目的オペレーティング・システムを、その下にあるリアル・タイム・カーネル内に埋め込んでいる。この構造では、リアル・タイム・カーネルが、応答性を保証する必要があるアプリケーションを制御し、多目的オペレーティング・システムが、残りの部分を制御する。他の設計者の場合には、特化されたリアル・タイム・オペレーティング・システムを選択し、多目的オペレーティング・システムを用いる試みはあっさりと断念している。
【0013】
多くのアプリケーションを、多目的オペレーティング・システム内で機能するように作ることができる。しかし、それが可能であるのは、システム性能が実質的に低下する可能性のあるオーバーヘッドのコストの場合だけである。主要な多目的オペレーティング・システムがもたらす抽象化は、複雑さおよび多数のハードウェア・サイクルを消費することによってのみ実現される。また抽象化は、特に拡張性およびセキュリティを考慮すると、オーバーヘッドが低い構成とはならないことが分かっている。結果として、アプリケーションの目的として、セキュリティ、可能な最大のスループット、および可能な最短の応答時間が含まれる場合には、多目的オペレーティング・システムのコンセンサス抽象化を行うと、これらの目的を達成することに対して支障となる可能性がある。
【0014】
多くの場合、主要なULWオペレーティング・システム開発は常に、スケジュールが見積もりよりも長くなり、結果として生じるコード・ベースは予想よりも大きくなり、性能は所望のものよりも遅くなる。しかし、ハードウェア・メモリ・サイズおよびプロセッサ速度の並行した進歩によって、オペレーティング・システム・ソフトウェアのサイズおよび性能の不足分が補われていたために、大惨事は回避されている。同時に、多目的オペレーティング・システムの累積するソフトウェアのオーバーヘッドなしにPPAプロセッサのハードウェアの進歩を十分に利用できていたならば、アプリケーション性能が何になっていたのかについての注意が、ほとんど払われていなかったように思われる。
【課題を解決するための手段】
【0015】
カスタム実行環境(CE:Custom Execution Environment)を実現するための方法および技術、関係するローダ、およびCEをサポートするためのオペレーティング・システムについて説明する。一実施形態によれば、コンピュータ・システムの、存在するのであるならば、どのシステム資源が、コンピュータ・システムの常駐のオペレーティング・システムの制御の下に留まるべきか、ならびにシステム資源のうちのどれが、1つまたは複数のCEの制御の下に配置されるべきかについての決定がなされる。システム資源の1つまたは複数のパーティションを1つまたは複数のCEに関連させることによって、システム資源は、常駐のオペレーティング・システムおよび1つまたは複数のCE間でパーティショニングされる。一実施形態によれば、CEは、アプリケーションのコードおよびデータ・セクションと、システム・サービスの組のコードおよびデータ・セクションとを含む。システム・サービスの組は、並列保護アーキテクチャを実施する1つまたは複数のプロセッサを含むコンピュータ・システムのハードウェア資源の組の直接的かつ完全な制御を有する。
【0016】
本発明の実施形態の他の特徴は、添付図面および以下の詳細な説明から明らかである。
アプリケーション実行環境を実現するための、ならびに共生的多目的オペレーティング・システム(SGPOS:Symbiotic General Purpose Operating System)を実施するための方法および技術について説明する。本発明の実施形態では、1つまたは複数の「並列保護アーキテクチャ」(PPA)プロセッサ、たとえばインテル(登録商標)アイテニアム(登録商標)2プロセッサを用いるハードウェア・プラットフォーム上で機能する高性能アプリケーション実行環境を提供することを目指している。本明細書で与えられる教示により実施されるアプリケーション実行環境によって、最大性能が実現され、セキュリティ脆弱性を除去することができる。本発明の実施形態の目的は、1つまたは複数のカスタム実行環境を初期化し、サポートし、かつ/もしくはカスタム実行環境と共存する新しい能力を有する多目的オペレーティング・システムを提供することにある。その結果として、本発明の実施形態によれば、多目的オペレーティング・システムを発展させることにより、多目的オペレーティング・システムを、多目的オペレーティング・システムがアプリケーション・ソフトウェア実行環境の組を提供することができるSGPOSにすることができる。そのアプリケーション・ソフトウェア実行環境の組は、多目的オペレーティング・システム自体がサポートする抽象化だけでなく、次のような1つまたは複数のカスタム実行環境(CE)が与える抽象化をもたらす。(1)各CEは、単一のアプリケーションに対する実行環境を構成し、SGPOSによってそのアプリケーションに割り当てられたハードウェア資源の下位集合をもっぱら管理するのみである;(2)各CE内のセマンティックスは、多目的オペレーティング・システムが与える多目的抽象化の組とは独立にすることができ、この組によって限定されることはもはやない;(3)各CE内のセマンティックスは、その環境内で実行すべきアプリケーションの要求のみに対してカスタマイズすることができる;(4)各CE内のセマンティックスは、多目的オペレーティング・システム自体がもたらす抽象化の制約内で容易に達成できない所望の特性を実現することができる。このような特性は、たとえば、最小の計算オーバーヘッド、線形マルチ・プロセッサ拡張性、ならびにその完全性およびセキュリティへの攻撃に対する脆弱性を除去することである;(5)CE内では、利用可能なハードウェア能力を完全に用いることが、その能力が多目的オペレーティング・システムによって直接サポートされていなくても、可能である;(6)各CEは、他の任意のCEによるアクセスから、あるいはSGPOS自体によるアクセスから、隔離および保護することができる。
【0017】
一実施形態によれば、SGPOSは、システム資源をパーティショニングする手段と、カスタマイズされた実行環境を初期化して呼び出す手段と、SGPOSとカスタマイズされた実行環境とを隔離して、それらを互いから保護する手段と、SGPOSの制御の下に留まるシステム資源のパーティションとカスタマイズされた実行環境の制御の下のシステム資源のパーティションとの間で通信する手段と、カスタマイズされた実行環境が手放したシステム資源をそれが停止したときに再び取り入れ、再び取り入れたシステム資源の完全制御をSGPOSに戻す手段と、含む。
【0018】
一旦、システム資源、たとえばプロセッサ、物理メモリ、記憶装置、仮想メモリ識別子値、入出力(I/O)装置、および例外送出が、1つまたは複数のパーティションにパーティショニングされると、SGPOSは、少なくとも1つのパーティションの完全制御を、別個のカスタマイズされた実行環境へ移してもよい。したがって、カスタマイズされた実行環境は、そのパーティション内のシステム資源に対する直接的なアクセスおよび制御を有する。すなわち、カスタマイズされた実行環境とカスタマイズされた実行環境に割り当てられるシステム資源との間に介在するオペレーティング・システム抽象化は存在しない。好都合なことに、オペレーティング・システム抽象化が存在しないために、カスタマイズされた実行環境は、より簡単で、特定のアプリケーションに対して調整された計算および/またはI/O構造を、実現してもよく、SGPOSが利用していない特定のプロセッサまたは他のシステム資源機構を利用することができる。
【0019】
さらに、SGPOSおよびカスタマイズされた実行環境がそれぞれのパーティション内で同時に実行される限り、カスタマイズされた実行環境は、SGPOS内にすでに存在している多目的能力の写しを作る必要はなく、むしろ、その特定のアプリケーションに最も適したソフトウェア構造に焦点をあてるのみでよい。したがって、カスタマイズされた実行環境は、SGPOSと通信することによって多目的サービスを得ることができる。たとえば、カスタマイズされた実行環境は、システム管理、そのパーティションの外側の周辺機器の制御、システムの起動および構成の初期化、システム資源のパーティショニング、重要でないオペレーティング・システム・サービス、SGPOSの下で実行されるユーザ・アプリケーションがもたらすサービスなどを、SGPOSから、SGPOSのパーティションとカスタマイズされた実行環境のパーティションとの間に維持される通信チャネルを介して、得てもよい。
【0020】
本発明の種々の実施形態により、アプリケーション実行環境は、ハードウェア・プラットフォームに対して完全な制御を実行してもよいし、あるいはシステム資源の第1のパーティションに対して完全な制御を実行し、その間に、システム資源の前記第1のパーティションまたはそれ以上のパーティションの制御を1つまたは複数の同時アプリケーション実行環境に引き渡したオペレーティング・システムと同時に動作してもよい。一方で、オペレーティング・システム自体は、システム資源の第2のパーティションを管理し続ける。前者の場合、そのアプリケーション実行環境を「カスタム実行環境」(CE)と呼ぶことができる。後者の場合、そのアプリケーション実行環境を「同時カスタム実行環境」(C)と呼び、システム資源の前記第1のパーティションの制御をCEに引き渡したオペレーティング・システムを「共生的多目的オペレーティング・システム」(SGPOS)と呼ぶことができる。
【0021】
以下の説明では、説明を目的として、本発明の実施形態が十分に理解されるように、多くの具体的な詳細について述べる。しかし本発明の実施形態は、これらの具体的な詳細の一部がない状態で実行してもよいことは、当業者には明らかである。他の場合には、良く知られた構造および装置を、ブロック・ダイアグラムの形態で示す。
【0022】
本発明の実施形態には、種々のステップが含まれている。これについて以下に述べる。ステップは、オペレータ構成、ハードウェア・コンポーネントによって行われてもよいし、機械実行可能な命令において具体化されてもよい。この命令を用いて、命令によってプログラムされる多目的または特殊目的のプロセッサに、ステップを実行させてもよい。あるいはステップを、オペレータ構成、ハードウェア、ソフトウェア、および/またはファームウェアの組み合わせによって行ってもよい。
【0023】
本発明の実施形態を、コンピュータ・プログラム製品として提供してもよい。この製品には、プロセスを実行するようにコンピュータ(または他の電子装置)をプログラムするために用い得る命令が記憶された機械読取可能な媒体が含まれていてもよい。機械読取可能な媒体としては、以下のものが挙げられる(しかしこれらに限定されない)。磁気ディスク、フロッピィ・ディスケット、光ディスク、コンパクト・ディスク読み出し専用メモリ(Compact Disc Read-Only Memory )(CD−ROM、CD−R、CD−RW)、デジタル多目的ディスク(Digital Versatile Disk)(DVD−ROM、DVD+RW)、および光磁気ディスク、ROM、ランダム・アクセス・メモリ(RAM:Random Access Memory)、消去可能なプログラマブル読み出し専用メモリ(EPROM:Erasable Programmable Read-Only Memory)、電気的に消去可能なプログラマブル読み出し専用メモリ(EEPROM:Electrically Erasable Programmable Read-Only Memory )、磁気もしくは光カード、フラッシュ・メモリ、または電子命令の記憶にとって好適な他のタイプの媒体/機械読取可能な媒体。さらに本発明の実施形態を、コンピュータ・プログラム製品としてダウンロードしてもよい。プログラムを、通信リンク(たとえばモデムまたはネットワーク接続)を介して、搬送波または他の伝搬媒体において具体化されたデータ信号によって、遠隔コンピュータからリクエスト中のコンピュータへ転送してもよい。
【発明を実施するための最良の形態】
【0024】
本発明の実施形態は、一例として示されるものであり、限定を意味するものではない。添付図面の図中で行われる例示では、同一の参照番号は同様の要素を指す。

専門用語
本出願の全体を通して使用される用語、略語、および語句の簡単な定義について、以下に述べる。
【0025】
1.以下の用語は、コンピュータ・アーキテクチャ、たとえばインテル(登録商標)アイテニアム(登録商標)アーキテクチャ、ヒューレット・パッカードPARISC(登録商標)アーキテクチャ、またはIBMパワーPC(登録商標)アーキテクチャによって、かつこれらのアーキテクチャを実施するプロセッサに基づくハードウェア・プラットフォームによって定義される。一部の用語は、アイテニアム(登録商標)アーキテクチャに固有である。
【0026】
a.用語「物理アドレス(physical address)」は、ハードウェア・プラットフォームの物理メモリ内の特定の箇所に直接アクセスするためにハードウェアによって用いられるエンコードされた数値を示す。
【0027】
b.用語「仮想アドレス(virtual address )」は、ハードウェア・プラットフォームのメモリ内の特定の箇所に間接的にアクセスするために用いられるエンコードされた数値を示す。メモリにアクセスする前に、このアドレスは最初に、物理アドレスに変換される。変換は、物理メモリにアクセスする前に、ソフトウェアが(プロセッサ・アーキテクチャが提供する手段によって)指定してもよいものであり、およびプロセッサ・ハードウェアが実行するものである。
【0028】
c.用語「領域(region)」は、固定された数の高位のビットの仮想アドレスにおいて指定されるエンコードされた小さな数値と交換されるエンコードされた大きな数値を示す。アイテニアム(登録商標)2プロセッサの場合には、大きな値は、長さが24ビットであり、小さな値は、長さが3ビットである。交換は、プロセッサ・ハードウェアが仮想アドレスを物理アドレスに変換する度に行われる。
【0029】
d.用語「領域レジスタ(region register )」(RR)は、プロセッサ・ハードウェアが仮想アドレスを物理アドレスに変換するときに用いられるエンコードされた大きな値を収容するハードウェア・レジスタを示す。
【0030】
e.用語「ページ(page)」は、その第1のアドレス(「ページ・アドレス(page address)」)およびそのサイズ(バイト数)によって識別されるメモリの連続領域を示す。許容されるページ・サイズ(多くの場合に、4KBバイトまたは8KBバイトを含む)は、各プロセッサ・アーキテクチャによって規定される。仮想アドレスから物理アドレスへの変換は、仮想アドレスを収容する固定されたサイズ・ページに対して行われる。
【0031】
f.用語「物理ページ(physical page )」は、その物理アドレスによってアドレス指定されるページを示す。
g.用語「仮想ページ(virtual page)」は、システム・ソフトウェアがそれに対して指定した仮想アドレスによってアドレス指定されるページを示す。
【0032】
h.用語「アクセス権(access rights )」(AR)は、プロセッサによるメモリに対するアクセスのうち、どのタイプのアクセスが許可されて、どのタイプのアクセスが許可されないかを示す。アクセスのタイプは、プロセッサがメモリのコンテンツを読み出してもよいことを意味する「読み出し」と、プロセッサがメモリにコンテンツを書き込んでもよいことを意味する「書き込み」と、プロセッサがメモリのコンテンツを命令として実行してもよいことを意味する「実行」である。許可されないアクセスがあった場合、ハードウェア割り込みが生成される。
【0033】
i.用語「保護キー(protection key)」(PK)は、メモリの仮想ページにアクセスするためにプロセッサ制御レジスタ内に存在していなければならないエンコードされた値を示す。アイテニアム(登録商標)2プロセッサの場合、PKは、24ビットにエンコードされている。
【0034】
j.用語「保護キー・レジスタ(protection key register )」(PKR)は、PKだけでなく他の制御情報も収容するプロセッサ制御レジスタを示す。図3Bを参照のこと。
k.用語「ハードウェア特権レベル(hardware privilege level)」は、プロセッサが実行している現在の特権レベルを示す。多くのアーキテクチャでは、このような特権レベルを2つ規定している。他のアーキテクチャ、たとえばアイテニアム(登録商標)アーキテクチャでは、このようなレベルを4つ規定している。下位の方の特権レベルで実行すると、割り込みを起こすことなく実行できる命令が制限される。
【0035】
l.用語「PL3」、「PL2」、「PL1」、および「PL0」によって、アイテニアム(登録商標)アーキテクチャによって規定されるハードウェア特権レベルを命名する。PL0は、最高の特権レベルであり、PL3は、最低の特権レベルである(数字の大きさとは逆である)。
【0036】
m.用語「EPCページ(EPC page)」は、入力保護されたコード(epc:enter protected code)命令がハードウェア特権レベルを引き上げ得る仮想ページを示す。
n.用語「変換索引バッファ(translation lookaside buffer)」(TLB)は、可能な限り最速の方法で仮想アドレスを物理アドレスに変換するために用いられるプロセッサ制御レジスタを示す。事実上、TLBに、特定の仮想ページに対する変換が記憶される。
【0037】
o.用語「スレッド(thread)」または「実行のスレッド(thread of execution )」は、プロセッサ制御レジスタの特定の状態内において連続的な命令を実行することを示す。プロセッサが、2つのアプリケーションを同時に実行している場合、プロセッサは実際には、一方のアプリケーション・スレッドにおいて短時間だけ実行した後、他方のアプリケーション・スレッドに切り換わってこのスレッドにおいて短時間だけ実行して、行ったり来たりする。
【0038】
p.用語「割り込み(interruption)」は、プロセッサが、命令実行の通常のシーケンスを停止して、何が起こったか、ならびにそれについて何をすべきかを判断するシステム・ソフトウェアに制御を送ることが発生したことを示す。
【0039】
q.用語「例外(exception )」は、割り込みを起こす命令が実行される直前または直後に起こる割り込みを示す。
r.用語「割り込む(interrupt )」は、特定の命令を実行した結果ではなく、経過タイマ間隔の終了またはI/Oアダプタからの信号などのシステム・イベントの結果として起こる割り込みを示す。
【0040】
s.用語「レジスタ保存エンジン(register save engine)」(RSE)は、アイテニアム(登録商標)プロセッサにおける機能であって、「スタックされた(stacked )」汎用レジスタ(R32〜R127)を保存し、復元し、かつ名前を変更して、無制限の数の汎用レジスタの様相をソフトウェアに対して示す機能を示す。
【0041】
t.用語「レジスタ保存エンジン・スタック(register save engine stack)」(RSES)は、汎用レジスタを保存および復元をするためにRSEが用いるメモリを示す。
2.以下の用語は、ファームウェアまたはソフトウェアによって規定される。一部の用語は、アイテニアム(登録商標)システムに固有である。
【0042】
a.用語「ソフトウェア・スタック(software stack)」(SWS)は、ソフトウェアが、LIFOスタックとして用いるメモリを示す。
b.用語「セクション(section )」は、互いにリンクされおよびメモリ内に共に配置されるソフトウェア・コードまたはデータ・イメージの集まりを示す。
【0043】
c.用語「BSS」は、メモリ内にロードされたときにクリアされるべきメモリを占めるデータ・セクションを示す。またBSSページIを含むメモリは、「ヒープ」と呼ばれる。
【0044】
d.用語「エントリ・ベクトル(entry vector)」(EV)は、命令シーケンスのベクトルを示す。命令シーケンスのそれぞれの命令は特定のシステム・イベントに対応し、対応するイベントが起きた場合に適切なコードに制御を送るように設定されている。
【0045】
e.用語「拡張可能なファームウェア・インターフェース(extensible firmware interface )」(EFI)は、インテル(登録商標)ペンティアム(登録商標)またはアイテニアム(登録商標)プロセッサを組み込んだハードウェア・プラットフォームが提供する標準的なファームウェア・インターフェースの名前である。これは、他の実行可能な環境ローダのオペレーティング・システムによって用いられるインターフェースである。
【0046】
f.用語「起動サービス(boot services )」は、システムを起動し、オペレーティング・システムまたは他の制御プログラムをローディングするときにEFIファームウェアによって提供されるサービスの組を示す。
【0047】
g.用語「主プロセッサ(monarch processor )」は、EFIファームウェアを実行する特定のプロセッサを示す。マルチ・プロセッサ・システムでは、主プロセッサが、初期の作業のほとんどを行い、システムが準備完了となったときに、その他のプロセッサを始動させる。
【0048】
h.用語「ハードウェア・プラットフォーム制御サービス(hardware platform control Service )」または「プラットフォーム制御サービス(platform control service)」(PCS)は、本発明の実施形態によって提供される特定のシステム・サービスの組を示す。
【0049】
i.用語「割り込みサービス・ルーチン(interruption service routine)」は、割り込みが発生した後に割り込みが無効にされる状態に留まる間に実行されるソフトウェアを示す。
【0050】
j.用語「延期された割り込みサービス・ルーチン(deferred interruption service routine )」は、割り込みが発生した結果(しかし、通常の実行の状況では、割り込みが再び有効にされた後に)、実行されるソフトウェアを示す。
【0051】
3.用語「GUI」は、グラフィカル・ユーザ・インターフェース(graphical user interface)、たとえばインターネット・ブラウザまたはマイクロソフト・ウィンドウズ(登録商標)オペレーティング・システムによって提供されるものを示す。
【0052】
4.用語「デジタル署名(digital signature )」または「暗号デジタル署名(cryptographic digital signature )」は、暗号ハッシュ値、たとえばSHA−1を、エンコードされたデータの特定のボディに対して算出した後に、プライベート・キーを用いてハッシュ値を暗号化した結果を示す。エンコードされたデータのボディが同一であるならば、ハッシュ値を再計算し、対応する公開キーを用いてデジタル署名を復号化することによって、エンコードされたデータが依然として同一であるならば、同一の値が生成される。
【0053】
5.用語「接続された(connected )」または「結合された(coupled )」および関連用語は、動作上の意味で用いられており、直接的な物理的接続または結合に必ずしも限定されない。
【0054】
6.語句「同時のカスタマイズされた実行環境(Concurrent Customized Execution Environment )」即ち「C」は一般的に、多目的オペレーティング・システムと共存し、かつ少なくとも多目的オペレーティング・システムとの通信手段を共有するカスタマイズされた実行環境を指す。
【0055】
7.語句「カスタマイズされた実行環境(Customized Execution Environment)」即ち「CE」は一般的に、カスタマイズされた動作環境自体を指す。この動作環境では、システム資源の一部に対する直接的なアクセスおよび完全制御を有するソフトウェアにおいて実施されるシステム・サービスの組が設けられている。CEは、オペレーティング・システムまたは特化されたオペレーティング・システムとは全く別個であり、特定の実施形態に依存して以下の特徴のうちの1つまたは複数を含んでいてもよい。
【0056】
a.CEには、静的にリンクされたシステム・コードおよびデータ・モジュールと、アプリケーション・コードおよびデータ・モジュールとの両方が含まれていてもよい。
b.CEは、任意の他のアプリケーションをロードするか、あるいはロードして実行する能力を欠いていてもよい。
【0057】
c.CEの機能上の能力は、特定のアプリケーションまたはアプリケーションの小さな組が必要とするサービスのみに厳密に限定してもよい。
d.CEは通常、オペレーティング・システムに予想される能力には達しない。具体的には、一実施形態において、アプリケーションは、CEが制御する各プロセッサにおける単一スレッドの実行に限定される。
【0058】
e.CEのサービス・インターフェースは、幅広いクラスのアプリケーションに対するより複雑で一般的なアプリケーション・プログラミング・インターフェース(API)によって構成されるのではなく、簡単で、特定のアプリケーションの1つまたは小さな組のそれぞれに対して特化されていてもよい。
【0059】
f.CE内のシステム資源に対する管理ストラテジは、従来の多目的オペレーティング・システムが採用するストラテジとはまったく異なることもある。
g.CEは、多目的または共生的多目的オペレーティング・システムがサポートしていないハードウェア能力を利用してもよい。
【0060】
h.CEは、多目的または共生的多目的オペレーティング・システムが十分には利用していないハードウェア能力を実質的に利用してもよい。
i.CE内のアプリケーションに対して提供されるサービスは、アプリケーションがシステム・エラーからはるかに容易に再生して継続できるように、設計されていてもよい。
【0061】
j.本発明の一実施形態によれば、多目的オペレーティング・システムは、コンピュータ・システムに関連するシステム資源の全部または一部の制御を、1つまたは複数のCEに少なくとも一時的に明け渡す。他の実施形態によれば、CEを、ハードウェア上で直接起動してもよい。たとえば、多目的オペレーティング・システムは、CEが制御すべきシステム資源部分に対して制御を行うことなく、CEを開始してもよい。さらに他の実施形態においては、多目的オペレーティング・システムおよび1つまたは複数のCEは両方とも、別個のハードウェア・パーティションたとえばヒューレット・パッカード・スーパードーム・プラットフォームにおいて提供されるハードウェア・パーティション内に、起動してもよい。CEは通常、特定のハードウェア・プラットフォームに対して特化されている。一実施形態によれば、CEは非移植性であり、カスタマイズされた実行環境とカスタマイズされた実行環境に割り当てられたシステム資源との間に介在する多目的オペレーティング・システム抽象化は存在しない。通常は、CEが提供するシステム・サービスは、特定のアプリケーションに対して調整される簡単化された計算構造および/またはI/O構造を実施する。たとえば、CEは、多目的オペレーティング・システムが利用しない特定のプロセッサまたは他のシステム資源機構を利用してもよい。一実施形態によれば、調整されたCEが、ウェブ・エッジ・エンジン、たとえばウェブ・サーバ、安全なウェブ・サーバ、プロキシ・サーバ、安全なプロキシ・サーバ、または他のアプリケーションもしくは通信サーバをサポートするために設けられる。これは、ウェブ・エッジ・エンジンがネットワーク接続の利用を、可能な限り100%近くにできるようにするためである。
【0062】
8.語句「一実施形態において(in one embodiment )」、「一実施形態によれば(according to one embodiment )」、およびその同義語が一般的に意味するところは、その語句の後に続く特定の機構、構造、または特性が、本発明の少なくとも1つの実施形態に含まれており、また本発明の複数の実施形態に含まれていてもよいということである。重要なことは、このような様相が、必ずしも同一の実施形態を指すわけではないことである。
【0063】
9.本明細書において、コンポーネントまたは機構が、ある特性に含まれ「てもよい(may )」、「ることが可能である(can )」、「得る(could )」、「るかもしれない(might )」と述べられていたとしても、あるいは、ある特性を有「してもよい(may )」、「することが可能である(can )」、「し得る(could )」、「するかもしれない(might )」と述べられていたとしても、その特定のコンポーネントまたは機構が含まれることも、その特性を有していることも必要とはされない。
【0064】
10.語句「オフロード・ボード(offload board )」は一般的に、別個のプラグ・イン・ボード、たとえばより高いレベルのインターフェースをサポートし、さらなる処理サイクルを用いてより高容量のネットワークまたは他の処理負荷に対応することができる別個のプラグ・イン・ボードを指す。一実施形態においては、このようなボードは、単に安全に起動することを補助するために用いてもよい。
【0065】
11.語句「並列保護アーキテクチャ(Parallel Protected Architecture )」即ち「PPA」は一般的に、アイテニアム(登録商標)2プロセッサの少なくとも明示的な命令レベルの並列処理および保護能力を含むコンピュータ・アーキテクチャを指す。
【0066】
12.語句「主要な多目的オペレーティング・システム(principal general-purpose operating systems )」または「ULWシステム」は一般的に、ユニックス(登録商標)、リナックス(登録商標)、およびウィンドウズ(登録商標)オペレーティング・システムの現在および将来のバージョンを指す。
【0067】
13.語句「共生的多目的オペレーティング・システム(Symbiotic General-Purpose Operating System)」即ち「SGPOS」は一般的に、以下の能力の1つまたは複数を含むように強化されたオペレーティング・システム(たとえば主要な多目的オペレーティング・システムの1つ)を指す:(1)1つまたは複数のCEと協力してコンピュータ・システムの資源を管理するメカニズム;(2)システム資源をパーティショニング/コンパートメント化し、システム資源(たとえば、プロセッサ、物理メモリ、記憶装置、仮想メモリ識別子値、I/O装置、および/または例外送出)の1つまたは複数のパーティションの制御を、1つまたは複数のCEへ移すメカニズム;(3)システム資源のパーティション間の通信を可能にするメカニズム。SGPOSに、移植性を残しておいてもよいし、特定のハードウェア・プラットフォームに特化させてもよい。
【0068】
14用語「応答する(responsive)」には、完全に、あるいは部分的に応答することが含まれる。
15.語句「システム資源(system resources)」は一般的に、個別の、あるいは全体の計算資源および/またはコンピュータ・システムの他の資源、たとえばプロセッサ、物理メモリ、記憶装置、仮想メモリ識別子値、入出力(I/O)装置、例外送出等を指す。
【0069】
16.語句「ウェブ・エンジン(web engine)」および「ウェブ・エッジ・エンジン(web edge engine )」は一般的に、1つまたは複数のウェブ・プロトコルをサポートするハードウェア、ファームウェア、および/またはソフトウェアを指す。
【0070】
17.語句「ウェブ・プロトコル(web protocol)」は一般的に、現在および将来のアプリケーション層ネットワーキング・プロトコルを指し、このプロトコルには、以下のものが含まれる(しかしこれらに限定されない)。ハイパーテキスト・トランスファ・プロトコル(HTTP:Hyper Text Transfer Protocol)、安全なHTTP(S−HTTP:Secure HTTP )、安全なソケット層(SSL:Secure Socket Layer )、トランスポート・コントロール・プロトコル(TCP:Transport Control Protocol)、インターネット・プロトコル(IP:Internet Protocol )、トランスポート層セキュリティ(TLS:Transport Layer Security)、エクテンシブル・マークアップ・ランゲージ(XML:Extensible Markup Language)、シンプル・オブジェクト・アクセス・プロトコル(SOAP:Simple Object Access Protocol )、ユニバーサル・ディスクリプション・ディスカバリ・アンド・インテグレーション(UDDI:Universal Description, Discovery, and Integration )、DHTTP、HTTP/NG、ファイル転送プロトコル(FTP:File Transfer Protocol)、トリビアル・ファイル転送プロトコル(TFTP:Trivial File Transfer Protocol)、共通オープン・ポリシ・サービス(COPS:Common Open Policy Service)、フロー・アットリビュート・ノーティフィケーション・プロトコル(FANP:Flow Attribute Notification Protocol)、フィンガ・ユーザ情報プロトコル、インターネット・メッセージ・アクセス・プロトコル改訂4(IMAP4:Internet Message Access Protocol rev 4)、IPデバイス・コントロール(IPCD:IP Device Control )、インターネット・メッセージ・アクセス・プロトコル・バージョン4改訂1(ISAKMP:Internet Message Access Protocol version 4 rev 1)、ネットワーク時間プロトコル(NTP:Network Time Protocol )、ポスト・オフィス・プロトコル・バージョン3(POPS:Post Office Protocol version 3)、レイディアス、リモート・ログイン(RLOGIN:Remote Login)、リアル・タイム・ストリーミング・プロトコル(RTSP:Real-time Streaming Protocol)、ストリーム制御送信プロトコル(SCTP:Stream Control Transmission Protocol)、サービス・ロケーション・プロトコル(SLP:Service Location Protocol )、SMTP−シンプル・メール・トランスファ・プロトコル(SMTP:Simple Mail Transfer Protocol )、シンプル・ネットワーク管理プロトコル(SNMP:Simple Network Management Protocol)、SOCKS、TACACS+、TELNET、およびウェブ・キャッシュ・コーディネーション・プロトコル(WCCP:Web Cache Coordination Protocol )。
【0071】
18.語句「ウェブ資源(web resource)」は一般的に、ユニバーサル資源識別子(URI:Universal Resource Identifier )によって識別可能なネットワーク・データ・オブジェクトまたはサービスを指す。
【0072】
19.語句「ウェブ・サーバ」は一般的に、1つまたは複数のウェブ・プロトコルをサポートし、ウェブ資源、たとえばウェブ・ページおよびウェブ・アプリケーションの出力をウェブ・ユーザに提供するハードウェア、ファームウェア、および/またはソフトウェアを指す。現在利用可能なウェブ・サーバの例には、以下のものが含まれる。アパッチ(Apache)(供給元はアパッチ・ソフトウェア財団);ジアス(Zeas)ウェブ・サーバ(供給元はゼウス・テクノロジー( オフィス所在地は英国ケンブリッジ、およびカリフォルニア州サンタ・クララ));マイクロソフトの「インターネット情報サーバ(IIS:Internet Information Server );ノベル(Novell)のウェブ・サーバ;およびIBMのロータス・ドミノ・サーバのファミリ。

概略
セキュア64(Secure64(商標))ウェブ・エッジ・エンジンは、世界中で最良の性能および世界中で最良のセキュリティを提供することを目的としている。セキュア64ウェブ・エッジ・エンジンは、シングルまたはデュアル・プロセッサを用いる電気器具から、数100のプロセッサを使用してカスタムアプリケーションおよびダイナミック・コンテント・ジェネレータを同時に実行する完全なウェブ・サーバまで、連続的にスケールする。高性能なコンテント・アクセラレーションおよび暗号のセキュリティおよびプライバシ保護が、製品ライン全体に渡って与えられる。(セキュア64(SECURE64)は、コロラド州イーグルウッドのセキュア64ソフトウェア社(Secure64 Software Corporation )の商標である)。
【0073】
セキュア64ウェブ・エッジ・エンジンは、現在および将来のウェブ・プロトコルを広範囲に渡ってサポートしている。便宜上、本明細書においては、本発明の実施形態を、典型的なウェブ・エッジ・エンジン、たとえばアプリケーション・サーバ、ウェブ・サーバ、およびプロキシ・サーバを参照して説明しているが、本明細書で説明するイネーブリング技術は、他の種々のネットワーク製品に広く基づいており、それらに広範囲に渡って適用可能である。このようなネットワーク製品としては以下のものが挙げられる(しかし、これらに限定されない)。コンテント・アクセラレータ、キャッシング・アクセラレータ、ファイアウォール、スマート・ルータ、フィルタ、ゲートウェイ、ファイアウォール、およびトンネル。
【0074】
加えて、説明を簡単にするために、本発明の実施形態を、特定のコンピュータ・アーキテクチャ、たとえば明示的な命令レベル並列処理および保護能力が得られるアイテニアム(登録商標)アーキテクチャを参照して説明する。それでもなお、本発明の実施形態は、最小の並列保護アーキテクチャ機構をサポートする他の種々の現在または将来のコンピュータ・アーキテクチャに対しても、等しく適用可能である。

設計原理
インテル(登録商標)アイテニアム(登録商標)2プロセッサを用いる本発明の種々の実施形態についてここで説明する。当業者であれば、設計原理を他のPPAアーキテクチャに適用する方法、またはこれらの原理を非PPAアーキテクチャに部分的に適用する方法を、容易に理解することができる。本発明の好ましい実施形態は、以下の設計原理の1つまたは複数に基づいている。
【0075】
1.不必要な抽象化を回避する
移植性および一般性ではなく、簡単さおよび性能を最大にするために設計する。従来のULWページ仮想メモリ、タスクおよびスレッド、同期化メカニズム、ファイル・システム、信号、ソケット・モデル、および完全に一般的なネットワーキングは必要ではないし、提供されない。最小限の組のシステム制御機能のみを提供する。簡単さは、セキュリティにとって不可欠である。
【0076】
2.アプリケーションおよび環境をプロセッサに対して最適化する
PPAプロセッサ能力を完全に用いることで、性能を最大にしてセキュリティ脆弱性を除去する。この原理は、事実上のULW原理:「ハードウェアLCD能力のみを用いる」とは、明白に対照をなす。
【0077】
3.プロセッサ当たり単一スレッドを用いてシステムおよびアプリケーションを統合化する
各プロセッサ上で単一スレッドのみを実行する。各プロセッサは実際に、実行の1つのスレッドのみを実行する。従来のマルチ・スレッドのオペレーティング・システムでは、これまで、各プロセッサ上で1つのスレッドのみが一時に動作中である。CEは、単一スレッドのアプリケーションの構造に基づいて、アプリケーションの種々の応答性に対する計算サイクルの分配を制御し、バランスさせる。同様に、CEは、単一スレッドのシステム制御構造に基づいて、必要なシステム・タスクを調整する。
【0078】
4.直接マルチ・プロセッサ拡張性に対して設計する
計算資源の共有は、プロセッサの単位において行われ、複数のプロセッサ内の複数のタスク内のスレッドのより細かい単位においてではない。この場合も、システムは、アプリケーションおよびシステム制御機能(それぞれ、1つまたは複数のプロセッサを制御する)に基づいて、作業を分配および調整する。アイテニアム(登録商標)アトミック同期化命令を直接用いることによって、アプリケーションがこのような制御と同期化するための手段が与えられる。
【0079】
5.増加し続けるネットワーク・バンド幅に対して設計する
高バンド幅ネットワーク・トラフィックに対するオーバーヘッドを最小限にする。加えて、ボードをオフロードするソケットおよびTCP/IP機能をオフロードすることを行う。現在のシステム利用率は、複数の1GB/秒イーサネット接続を同時にサービスすることによって、大きく増加させることができる。最近の研究によれば、4つの1ギガ・ビット(GB:Giga-Bit)/秒接続を、2個のプロセッサの3MHzゼオン(Xeon)システム上で同時にサービスするためには、中央演算処理装置(CPU:Central Processing Unit )の利用率が95%となることが報告された(IEEEコンピュータ・エレメンツ・ワークショップ(Computer Elements Workshop)、コロラド州ベイル、2003年6月)。10GB/秒の接続が現れると、従来のシステム構造では、結果として生じるシステムのオーバーヘッドに対処することができなくなる。
【0080】
6.資源を静的に形成して割り当てる
可能である場合は、資源を、コンパイルまたはシステム負荷時間において構築して、割り当てる。資源割り当てを、特定の構成のパラメータに対して調整しなければならない場合には、このような割り当てを行うのは理想的には、一度だけ、システム初期化時においてである。
【0081】
7.コンパートメント化
CEアーキテクチャのすべての特権レベルにおいて、ソフトウェア・コード・イメージおよびデータを、コンパートメントと呼ばれる保護ドメインに組織化しなければならない。コンパートメント内のデータおよび命令アクセスは、対応するアイテニアム(登録商標)「保護ID(Protection ID )」(PID)の存在によって有効にされる。また保護IDレジスタのコンテンツを、コンパートメント内のコードおよびデータに対する読み出し、書き込み、およびアクセス実行のいずれの組み合わせも防ぐように、設定することができる。コンパートメント化によって、強力なセキュリティ特性とともに、これまでは追跡不可能であったプログラミング・バグを隔離することが実現される。
【0082】
8.最小限の必要な特権を強制する
CE設計を実施することには、システム内のすべてのコードおよびデータ・イメージに対して最小限の必要なアクセス特権の指定および強制が含まれる。すなわちコード・イメージは、実行されてもよいが、決して読み出しも書き込みもされない。このようにすることにより、攻撃者が、実行可能なコードを変更することによってアクセスを得るか、あるいは利用することが不可能になる。ソフトウェア・スタックは、読み出されても書き込まれてもよいが、決して実行はされない。このようにすることにより、攻撃者が、ソフトウェア・スタックから悪意によりペイロードを実行することが不可能になる。データ領域は、実行コードの特権レベルにかかわらず、読み出し専用であってもよいし、書き込み専用であってもよいし、あるいは読取可能および書き込み可能の両方であってもよい。しかし、データ領域は、決して実行されることはない。このようにすることにより、悪意によるコードがデータ領域から実行されることは不可能になる。アイテニアム(登録商標)RSEスタックは、読み出されるか、あるいは書き込まれるべき最高の特権レベルを必要とするメモリを占める。すべての呼び出し戻りアドレス(call return address )は、RSEスタックに保存される。このようにすることにより、攻撃者が、呼び出し戻りアドレスを変更することによって制御を乗っ取ることが不可能になる。
【0083】
9.コード・イメージを組織的に保護する
前述の原理によって、コード・イメージの実行可能な状態を説明した。このようなコード・イメージを組織的に保護するためには、この実行可能な状態に、後続の状態のシーケンスのみを通して到達する必要がある。コード・イメージを最初にメモリ領域内に読み出すときには、そのメモリ領域には、書き込み許可はあるが、読み出し許可、または実行許可はない。一旦、イメージがメモリ領域内に書き込まれれば、イメージを復号化すべき場合に、暗号化サービスによるイメージ領域の読み出しおよび書き込みが許可される。一旦、暗号化サービスがイメージを復号化すると、アクセス特権を読み出し専用に設定する。復号化が必要でない場合には、初期イメージを読み出し専用に設定する。一旦、イメージが読み出し専用に設定されると、暗号の認証コードによって、すべてのコード・イメージに対して必要とされるデジタル署名が妥当であると確認される。一旦、コードのデジタル署名の妥当性が確認された場合にのみ、コード・イメージに対する許可が、適切な特権レベルにおいて実行専用に設定される。
【0084】
10.読み出し専用および読み書きデータ領域を組織的に保護する
データ領域およびソフトウェア・スタックが、実行許可を有することは決してない。それらは、初期化時に書き込み許可に設定され、アプリケーションによって指定されるように、読み出し専用許可または読み書き許可に設定される。これらの許可が十分に有効となるのは、対応する保護IDがそれらの1つまたは複数を無効にしないときのみである。したがって、データ領域は、コードの一部のセクションに対して読み書きできるとともに、同時に、コードの異なるセクションに対して読み出し専用であってもよい。各特権レベルに対しては、別個のソフトウェア・スタック・ページを用いる。
【0085】
11.ソフトウェアおよびレジスタ保存エンジン(RSE)スタックを組織的に保護する
ソフトウェア・スタックは、前述の原理で説明したように保護されている。RSEスタックは読み書きの許可を有するが、これらの許可は、特権レベル・ゼロ(PL0)に限定される。RSEスタックのページは、各特権レベルに対して連続して割り当てられる;これらのページへのアクセスは、各特権レベルに対して別個の保護IDを用いることによって保護される。製造時に、アプリケーション・レジスタ命令を回避するために走査することによって、この保護を回避し得るいかなる実行可能なコードも除去することができる。
【0086】
12.特権命令を用いなければならないプラットフォーム・メカニズム制御コードに対してPL0を確保する
システム・サービスに対するコードを、PL0、即ち、最高のハードウェア特権レベルに配置するための指針的な原理は、したがって、次のようになる。サービスの正確な機能に対しては特権命令が不可欠である。このようなサービス(「プラットフォーム制御サービス(Platform Control Services )」(PCS)と呼ばれる)のみが、PL0におけるコンパートメントにおいて実行される。PL0において実行されるコードは、ハードウェアに対する完全な制御を及ぼすことができる。PL0コード内での悪意な行為に対しては、いかなる防御も存在しない。そのため、このようなコードは、最小限でなければならず、またハードウェア命令レベルにおいて正確であることが知られていなければならない。
【0087】
13.重要なプラットフォーム制御ソース・コードを公開する
プラットフォーム制御コード(PL0において実行される)が正確かつ確実であることは、不可欠である。このような正確さを主張および宣伝するだけでは、十分ではない。セキュリティおよび暗号化業界の指針的な慣行によれば、重要なプラットフォーム制御ソース・コードは、隠すことなく公開して、専門家による再検討および批判が行われるようにしなければならない。PL0コードの有効性および正確性が確実であることは、この同業者による評価に基づかなければならない。
【0088】
14.プラットフォーム制御サービス呼び出しを、暗号を用いて認証する
従来のシステムでは、PL0において実行することが、プロセッサの特権命令を実行するための許可の構成要素である。CEの実施形態においては、特権命令が必要なサービスはPL0においてコンパートメント化され、これらのプラットフォーム制御サービスを呼び出すことによって、プラットフォーム制御機能が行われる。物理プラットフォームはPCSによって制御されるため、特権の下部レベルで動作するコード・イメージからのPCS呼び出し自体が、許可および認証されなければならない。
【0089】
15.徹底的に防御する
可能ある場合は、予期しない脆弱性に対して警戒するために、複数のレベルの保護を確立する。これは、1つのレベルの保護で十分であると考えられる場合でも行うべきである。たとえば、コード・イメージの特権保護および組織的保護の意味するところは、正確なコード・イメージのみが常に、システムの最高の特権レベルで実行されるハードウェア制御サービスを呼び出すということである。それでもなお、プラットフォーム制御サービスに対する呼び出しは、呼び出しの点を常に認証する。
【0090】
16.システム管理および動作タスクを最小限にし/簡単化する
特にセキュリティ脆弱性よりも先行するために、毎月、毎週、または毎日でさえ、パッチ競争に加わらなければならない場合には、現在のシステムに対するシステム管理、動作の複雑さ、および全体的な所有コスト(TCO:Total Cost of Ownership)は、過大なものとなる。好ましい実施形態においては、CE設計によって、インストレーション、構成、セルフ・テスト、および動作が、30分未満で可能になる。異なるコンピュータにおけるネットワーク・インターフェースを介して、管理を行ってもよい。オペレータ・グラフィカル・ユーザ・インターフェース(GUI)によって、構成パラメータの理解しやすい検査および変更、ならびにシステム負荷および性能の連続的なモニタリングを可能にしなければならない。
【0091】
17.システム管理者およびオペレータを、暗号を用いて認証する
システム管理者またはオペレータからのインターフェースは、暗号認証によって保護される。SSL接続を通して行われる2因子または3因子の身元認証を用いてもよい。システムにルート・キーおよび初期乱数シード・データを与えるために、別個の一組のトークンまたは3つのトークンを必要としてもよい。CDROMまたはDVDROMからのCEの起動は、おそらく完全性および機密性の両方に対する暗号保護によって、可能になる。
【0092】
18.再生可能性に対して設計する
次のようなサービスを、CE内に設ける。すなわち、システム・エラーが起きた場合に、アプリケーションを有効にして、容易に、イベントの原因を決定し、イベントの発生を記録し、動作状態を復元し、および処理を再開するか、あるいはそれ自体を再始動するようにするサービスである。簡単なリセットおよび再始動システム・サービスを、設ける必要がある。
【0093】
典型的なコンピュータ・システム100は、典型的なサーバ、たとえば2−ウェイHPサーバrx5600、4−ウェイHPサーバrx5670、HPサーバrx2600などを表しており、これらを用いて本発明の種々の特徴を利用することができる。次にコンピュータ・システム100について、図1を参照して説明する。この簡単化された例では、コンピュータ・システム100には、データおよび制御情報を通信するためのバス130または他の通信手段、ならびにバス130を経由して結合される1つまたは複数のプロセッサ105、たとえばインテル(登録商標)アイテニアム(登録商標)またはアイテニアム(登録商標)2プロセッサが含まれている。
【0094】
コンピュータ・システム100にはさらに、ランダム・アクセス・メモリ(RAM)または他の動的な記憶デバイス(メイン・メモリ115と言われる)が含まれており、これらがバス130に結合されて、プロセッサ105が実行すべき情報および命令を記憶するようになっている。またメイン・メモリ115を、プロセッサ115が命令を実行する間に一時的な変数または他の中間の情報を記憶するために、用いてもよい。本発明の種々の実施形態によれば、メイン・メモリ115は、領域識別子ベースのメモリ・パーティショニング・メカニズムを介してパーティショニングされていてもよい。結果として生じるパーティションを、1つまたは複数のプロセッサに割り当てて、このようなプロセッサによる排他的なアクセスがなされるようにしてもよい。これは、ハードウェア・ベースの隔離メカニズムを用いることによって、たとえばメモリの領域を保護キーに関連させることによって、行われる。
【0095】
またコンピュータ・システム100には、読み出し専用メモリ(ROM)120および/または他の静的な記憶デバイスが含まれており、これらはバス130に結合されて、静的な情報、たとえば暗号のデジタル署名(1つまたは複数のCE、カスタマイズされたアプリケーション、およびオペレーティング・システムの初期コードおよびデータ・イメージに関連する)、ならびにプロセッサ105に対する命令を記憶するようになっている。
【0096】
また大容量記憶装置125、たとえば磁気ディスクまたは光ディスク、およびその対応するドライブを、バス130に結合して、情報および命令、たとえばオペレーティング・システム・ローダ、オペレーティング・システム、1つまたは複数のカスタマイズされたアプリケーション、および関連するCE、初期化ファイルなどを記憶するようにしてもよい。
【0097】
また1つまたは複数の通信ポート110を、バス130に結合して、コンピュータ・システム100とのネットワーク接続および情報通信を、たとえばローカル・エリア・ネットワーク(LAN:Local Area Network)、ワイド・エリア・ネットワーク(WAN:Wide Area Network )、インターネット、または公衆交換電話網(PSTN:Public Switched Telephone Network )によって、サポートするようにしてもよい。通信ポート110には、1つまたは複数のモデムなどの良く知られたインターフェースの種々の組み合わせが含まれて、以下のものを提供するようになっていてもよい。ダイアル・アップ能力、1つもしくは複数の10/100イーサネット・ポート、1つもしくは複数のギガ・ビット・イーサネット・ポート(ファイバおよび/または銅)、1つもしくは複数のネットワーク・プロトコル・オフロード・ボード、またはインターネット環境において広く用いられている他の良く知られたネットワーク・インターフェース。これによって、何らかのイベントが発生したときに、コンピュータ・システム100は、多くの他のネットワーク装置、クライアント、および/またはサーバに、従来のネットワーク・インフラストラクチャ、たとえば企業のイントラネットおよび/またはインターネットを介して、結合され得る。
【0098】
また必要に応じて、オペレータおよびアドミニストレイティブ・インターフェース135、たとえばディスプレイ、キーボード、およびカーソル制御デバイスを、バス130に結合して、コンピュータ・システム100とのオペレータの直接的なやり取りをサポートするようにしてもよい。他のオペレータおよびアドミニストレイティブ・インターフェースを、通信ポート110を通して接続されたネットワーク接続を通して設けることが可能である。
【0099】
最後に、リムーバブル記憶メディア140、たとえば1つまたは複数の外部またはリムーバブル・ハード・ドライブ、テープ、フロッピィー・ディスク、光磁気ディスク、コンパクト・ディスク読み出し専用メモリ(CD−ROM)、コンパクト・ディスク書き込み可能メモリ(CD−R、CD−RW)、デジタル多目的ディスクまたはデジタル・ビデオ・ディスク(DVD)(たとえばDVD−ROMおよびDVD+RW)、ジップ・ディスク、またはUSBメモリ・デバイス、たとえば親指ドライブまたはフラッシュ・カードを、対応するドライブ、ポートまたはスロットを介して、バス130に結合してもよい。
【0100】
図2Aおよび図2Bに、システム資源のパーティショニングを概念的に例示する。図示した表の例では、行は典型的なハードウェア資源を表わし、列は動作環境を表わしており、Xによって、どの動作環境に、特定のハードウェア資源またはこのような資源の一部が割り当てられているかが識別される。全体として、特定の列におけるXは、対応する動作環境に割り当てられたシステム資源のパーティションを表わす。
【0101】
図2Aに示したシステム資源のパーティショニングによれば、SGPOSには、1つまたは複数のプロセッサ・ユニット、メモリの1つまたは複数のバンク/範囲、1つまたは複数の周辺機器および関連するアダプタ・カード、ならびに1つまたは複数の組の論理資源が割り当てられている。すなわち、前述の資源のリストを備えるシステム資源のパーティションが、SGPOSの排他的な利用に対して識別されている。同様に、この例では、Cを排他的に使用することに対して、1つまたは複数のプロセッサ・ユニット、メモリの1つまたは複数のバンク/範囲、1つまたは複数のLANアダプタ・カード、ならびに1つまたは複数の組の論理資源を備えるシステム資源のパーティションが識別され、割り当てられている。最後に、Cには、その排他的な使用および管理に対して、1つまたは複数のプロセッサ・ユニット、メモリの1つまたは複数のバンク/範囲、1つまたは複数の周辺機器および関連するアダプタ・カード、ならびに1つまたは複数の組の論理資源が割り当てられている。
【0102】
図示した簡単なパーティショニング例では、特定のタイプのハードウェア資源を、複数の動作環境に対して割り当ててもよいが、このような資源を等しく分割する必要はない。たとえば、図2Aでは、SGPOS、C、およびC列のそれぞれに対するプロセッサ行におけるXは、少なくとも1つのプロセッサ・ユニット(通常はプロセッサ全体)がその特定の動作環境に対してパーティショニングされている、即ち、割り当てられていることを示している。しかし、動作環境がすべて、利用可能なハードウェア資源の同一の限定されたプールから得られているという事実を除けば、各動作環境に対してパーティショニングされるプロセッサ・ユニットの数は、残りに対してパーティショニングされる数とは無関係である。
【0103】
同様に、システム資源を分割して、任意の別個のシステム資源またはシステム資源の集まりに関して均一なパーティションまたは等しく設けられたパーティションにする必要はない。さらにパーティションは、静的であってもよいし動的であってもよい。特定のパーティションに関連する論理および物理システム資源の数および/またはタイプは、たとえば、CEまたはSGPOSのアドレス要求に対して、または新しいCEの開始または既存のCEの終了に応答して、動的に再割り当てされてもよい。
【0104】
この時点において、ある動作環境に他の動作環境によるアクセスから割り当てられたシステム資源のパーティションを保護するために用いてもよい種々のハードウェア隔離メカニズムついて説明すると都合がよい。将来のプロセッサは、SGPOSおよび/またはCEが用いるハードウェア・ベースの隔離技術を提供すると予想される。しかし、このようなハードウェア・ベースの完全隔離の技術が利用できるようになるまで、CEに割り当てられるシステム資源のパーティションを、オペレーティング・システムを静止させる(quiescing )ことおよびオペレーティング・システムを休止状態に置くことによって、常駐のオペレーティング・システムから保護してもよい(休止状態ではオペレーティング・システムは、何も実行しておらず、再始動するための最小限の組のシステム資源のみを利用する)。必要に応じて、1つまたは複数の既存の保護メカニズム、たとえば保護キー・ベースのメモリ・パーティション、領域識別子割り当て、保護識別子割り当て、メモリ・ページ・アクセス権値を用いて、CE間および/またはCE内のパーティション・セキュリティを強制してもよい。
【0105】
あるいは、常駐のオペレーティング・システムは依然として動作していてもよく、安全なプラットフォーム・インターフェースを用いて、パーティション間の所望のレベルの隔離を得てもよい。これはたとえば、「オペレーティング・システムおよびカスタマイズされた制御プログラムとインターフェースする安全な機械プラットフォーム(Secure Machine Platform that Interfaces to Operating Systems and Customized Control Programs)」と題された、米国特許出願第10/118,646号明細書、2002年12月19日公開、公開番号第2002/0194389A1号(「646明細書」)に記載されている、組み合わされたハードウェアおよびソフトウェアの安全なプラットフォーム・インターフェースである。なお、この内容は本明細書において参照により全体として取り入れられている。
【0106】
たとえばHPスーパードーム・プラットフォームによって提供されるハードウェア・パーティショニング能力によっても、パーティション間の完全な隔離をもたらす第3の代替案が得られる。SGPOSがパーティションを動的に構築するのではなく、これらの手段を用いて、システム管理者がパーティションを静的に構成してもよい。パーティションは、それほど容易には変更されないが、隔離はハードウェアによって十分に強制することができる。
【0107】
図2Bに示すシステム資源のパーティショニングは、SGPOSが休止状態である場合のシステム資源割り当ての特定の状態を表している。SGPOSにはプロセッサ・ユニットが割り当てられていないため、SGPOSでは、いかなるプロセスも実行できない。他のシステム資源割り当て構成も、SGPOSが休止状態であることと整合する。たとえば、SGPOSにシステム資源が割り当てられないときには(SGPOS列が空である場合に)、SGPOSは休止状態であり、1つまたは複数のCEがシステム資源の排他的制御および管理を行う。逆に、Cに関連する列が空であるときには、たとえば起動処理の間、またはCが終了してそのパーティションがSGPOSへ放出された後では、SGPOSがシステム資源の排他的制御および管理を行う。
【0108】
図3に、本発明の一実施形態によるSGPOS320、システム資源パーティション310、およびC330の間の関係を概念的に例示する。簡潔に述べれば、本発明の実施形態では、常駐のオペレーティング・システムからは分離され区別される安全な動作環境の形成がサポートされる。複数パーティション構成では、システム資源の一部は、安全な動作環境に割り当てられ、その直接的で排他的な制御の下に配置される。システム資源の残りの部分は、1つまたは複数の他の安全な動作環境に割り当てられ、かつ/もしくは常駐のオペレーティング・システムによって保持される。単一のパーティション構成では、常駐のオペレーティング・システムは、実質的にすべてのコンピュータ・システムのシステム資源の制御を明け渡して、システム資源を安全な動作環境の完全制御の下に置いてもよい。
【0109】
図示した例では、資源を、2つのシステム資源パーティション310、すなわちSGPOS資源321およびC資源331に、パーティショニングおよび割り当てた後におけるコンピュータ・システム300が概念的に例示されている。説明を容易かつ簡潔にするために、システム資源の2つのパーティションのみを例示しているが、本発明の実施形態は、任意の数のSGPOSおよび/またはCEに割り当てられる任意の数のパーティションに等しく適用可能であることを理解されたい。さらに、各列には、複数のおそらく相互に隔離されたパーティションが含まれ得るが、ここでの説明のために、各列を、単一のパーティションであるかのように説明する。
【0110】
図示した概念上の実施形態によれば、垂直方向の両頭の矢印は、パーティション内の層間の通信(たとえば、パーティション内通信)を表わし、一方で、水平方向の両頭の矢印は、パーティション間の通信手段(すなわち、パーティション間通信)を表わす。サポートされる特定のアプリケーションの要求に依存するが、パーティション間通信に対して設けられる通信手段によって、以下のような通信が可能になってもよい。(1)すべてのパーティション間の通信、(2)厳密に、SGPOS320の制御の下に留まるパーティションと、CE(たとえばC330)の制御の下のパーティションとの間の通信、または(3)他の基準に従って制御される通信。本実施形態では、パーティション間通信がアプリケーション間で起こると例示しているが、注目すべきは、このような通信が、SGPOSカーネル・モード・サービス324によって提供されるサービスおよび非移植性のカスタマイズされた制御およびサービス332によって提供されるサービスを伴っていてもよいし、これらのサービスを介してもよいことである。
【0111】
任意のイベントにおいて、このようなパーティション間通信を、以下のものを含む複数の目的に対して用いてもよい。システム初期化、構成、および制御;システム・デバッギングおよびモニタリング;ネットワーク制御およびモニタリング・システムたとえばHPのオープンビュー(OpenView)またはIBMのティボリ(Tivoli)との通信;オペレーティング・システム、アプリケーション(たとえば、ユーザ・アプリケーションまたはカスタマイズされたアプリケーション)、またはCEサービスを異なる環境から呼び出すこと;ならびに、CEおよび/またはSGPOS320間でのハードウェアおよび/または論理資源の割り当てをシフトさせること。パーティション間通信を、種々の良く知られた技術によって実施してもよい。このような技術は、たとえば、共有の仮想メモリ、共有の一方向仮想メモリ(一方の環境は書き込めるだけ、他方は読み出せるだけ)、遠隔の手順呼び出し、ソフトウェア割り込み、および内部メッセージである。
【0112】
図3に示す簡単化された概念上の表現は、アプリケーション間に通常は論理的に介在される複数レベルの抽象化を例示している。アプリケーションは、たとえば従来のオペレーティング・システム、たとえばULWオペレーティング・システムにおける任意のユーザ・アプリケーション328、およびその下にあるシステム資源、たとえばSGPOS資源321である。抽象化、たとえば仮想メモリ、タスク、ファイルおよびファイル・システム、ソケットおよびソケット・インターフェース、ネットワーク・スタックなど(これらは、ユーザ・モード・サービス326、カーネル・モード・サービス324、およびOSカーネル322によって実施される)は、性能が重要なアプリケーション、たとえば高性能ウェブ・エンジン、に対する容認できないほどの高いオーバーヘッドに対する重要な寄与因子である。
【0113】
対照的に、CE、たとえばC330は、これらが、多目的オペレーティング・システムに課される移植性の制約に限定されないため、特定のハードウェア・プラットフォームおよび/またはアプリケーションに対して簡単化および最適化された計算および/またはI/O構造の実現を支持し、高いオーバーヘッドの構成および抽象化のコンセンサスを回避することができる。たとえば、C330が提供する非移植性のカスタマイズされた制御およびサービス332は、C資源331と、C330による排他的な使用および制御に対して割り当てられたその下のシステム資源310とを、直接制御してもよく、およびSGPOS320が利用しない特定のプロセッサまたは他のシステム資源機構を利用してもよい。
【0114】
CE、たとえばC330の代わりに、さらなる効率を達成することが、多目的能力、たとえばシステム管理、システム起動および構成初期化、およびシステム資源のパーティショニング、およびSGPOS320内にすでに存在しているウェブコンテントの生成などを、除外することによって、達成することができる。またCは、SGPOSに基づいて、このような多目的能力を提供してもよい。
【0115】
この例では、システム資源パーティション310、すなわちSGPOS資源321およびC資源331は、等しくサイズ取りされたボックスとして示されており、同一の特性が潜在的に意味されているが、コンピュータ・システム300のシステム資源は、任意の個々のシステム資源またはシステム資源の集まりに関して均一なパーティションまたは等しく提供されるパーティションに分割される必要はない。たとえば、あるパーティションには、X個のプロセッサ、Y MBの物理メモリ、およびZ個のI/O装置が含まれ、一方で、他のパーティションには、R個のプロセッサ、S KBの物理メモリ、およびT個のI/O装置が含まれていてもよい。さらにシステム資源パーティション310は、静的であってもよいし動的であってもよい。
【0116】
図4は、本発明の一実施形態によるSGPOS処理を例示するフロー・ダイアグラムである。この例では、SGPOSには、1つまたは複数のCEと協調してコンピュータ・システムのシステム資源を管理する手段が含まれている。またSGPOSには、システム資源、たとえば(これらに限定されないが)、プロセッサ、物理メモリおよび記憶装置、仮想メモリ識別子値、I/O装置、および例外送出を、パーティショニングする手段が含まれていてもよい。またこれらの手段は、すべてのまたは実質的にすべてのシステム資源が、1つまたは複数のCEに移される場合も網羅している。この場合には、SGPOSは、CEが資源のパーティションの制御をSGPOSへ戻すときまで、受動性の状態に留まる。
【0117】
SGPOSにはさらに、CEを初期化して呼び出す手段、CEにその直接的かつ完全な制御の下に配置されたシステム資源および/またはシステム管理デューティを通知する手段、およびCEからSGPOS環境を保護するためにハードウェア隔離および保護メカニズムを用いる手段が、含まれている。安全なシステムを得るために、これらの手段には、信頼の連鎖をCE内へ拡張する能力が含まれている。このように拡張することは、CEの初期コードおよびデータ・イメージ、関連する非移植性のカスタマイズされた制御およびサービス、およびカスタマイズされたアプリケーションの妥当性を、暗号のデジタル署名を用いて確認することによって行われる。
【0118】
現在の多目的オペレーティング・システムの中には、前述の能力を提供するものはない。既存のオペレーティング・システムは、システム資源の完全な制御がカーネルの直接制御から生じることはないという仮定の下で構築されている。仮想機械システムによって、多目的オペレーティング・システムがその制御下にあると信じている資源が仮想化されるが、仮想機械カーネルは、実際のシステム資源に対して完全な制御を保持しており、したがってCEとの共生的パートナとしての機能を果たす能力は十分ではない。
【0119】
図示した実施形態によれば、SGPOS処理は一般的に、プレCEステージ(任意のCEが動作中となる前)と、CE動作ステージ(少なくとも1つのCEが実行中で、システム資源の一部の制御を保持する間)とに、分類される。プレCEステージは、ブロック410〜440によって表わされ、CE動作ステージは、ブロック440〜480間のループによって表わされる。簡潔に述べれば、プレCEステージには、利用可能なシステム資源をSGPOSと1つまたは複数のCEとの間で割り当てること、および1つまたは複数のCEを開始することが含まれる。CE動作ステージの間、SGPOSは、(1)1つまたは複数のCEからのリクエストに応答し、(2)システム資源を潜在的に再び割り当てて、新しいかまたは再確立されたCEを初期化および開始し、(3)CEが手放したシステム資源を再び取り入れる。
【0120】
SGPOS処理は、システム起動が行われるブロック410により開始される。システム起動処理には、通常、プロセッサ・セルフ・テスト・ルーチンを行うこと、およびROM内に記憶されたファームウェア命令を実行して、オペレーティング・システム・ローダ・プログラムを大容量記憶装置から読み出して実行することが、含まれる。システム起動プロセスは、SGPOSがシステム資源の下位集合またはすべてのシステム資源を1つまたは複数のCEに明け渡す通常の起動であってもよい。あるいは、システム起動プロセスは、CEによって制御されるべきシステム資源に対してはSGPOSが決して制御しないような部分的な起動であってもよい。
【0121】
一実施形態によれば、SGPOSおよび1つまたは複数のCEは、安全なシステムの一部である。安全なシステムにおいて重要なことは、システム資源を制御するソフトウェア・イメージが、完全で正確であること、およびいかなる変更または他の形態の不正変更も受けていないことである。その結果として、このような実施形態においては、システム起動は、信頼の連鎖をCEへ拡張することをサポートする安全な起動プロセスである。
【0122】
将来、コンピュータ・システムが安全に起動する能力を提供することが予想される。これを行うことができる1つの方法は、「646明細書」において説明されている。「646明細書」の図19に、デジタル署名に基づく安全な起動プロセスが例示されている。初期ファームウェア・イメージ・デジタル署名の妥当性は、ハードウェアによって確認される。その後の各ファームウェアまたはソフトウェア・イメージのデジタル署名の妥当性は、制御がその後続するイメージに渡される前に、その先行するファームウェアまたはソフトウェア・イメージによって確認される。このようにして、信頼の連鎖を、構築することができ、初期ファームウェア・イメージ内でルーティングすることができ、信頼の連鎖は、ファームウェアのあらゆるイメージ、オペレーティング・システム・ソフトウェア、およびアプリケーション・ソフトウェアを介して拡張される。
【0123】
ブロック420において、SGPOSは、システム資源の一部の制御を受け取るべき1つまたは複数のCに関する情報を受け取る。たとえば、SGPOSは、1つまたは複数のCに対する非移植性のカスタマイズされた制御およびサービスのシステム資源およびコード・イメージの所望する割り当てを識別する初期化ファイルまたはパーティション記述子を読み出してもよい。あるいは、パーティション記述子情報を、オペレータ指令によって得てもよい。安全なシステムという状況では、SGPOS処理におけるこの時点において、Cおよび関連する非移植性のカスタマイズされた制御およびサービスに対するイメージを、ロードし、および認証することを、ソフトウェア・イメージのデジタル署名の妥当性を確認することによって行ってもよい。
【0124】
ブロック430では、パーティション記述子によるSGPOSパーティション・システム資源によって、次に、SGPOS資源をCから保護するために、存在するのであるならば、その制御の下に留まるべきシステム資源部分が隔離される。実際には、プロセッサ全体が、コンピュータ・システムの処理資源に対するパーティショニングの最小単位となることが予想される。その結果として、個々のマイクロプロセッサは通常は、SGPOSによってか、あるいはCによって完全に制御されるが、個々のプロセッサのより細かく単位の制御が、環境間の切り換えのより高い計算コストにおいて可能である。
【0125】
一実施形態によれば、SGPOSによって、そのパーティション内から生じるすべての割り込みリクエストに対して、割り込みハンドラが提供される。SGPOSが保持するシステム資源に基づいて、SGPOSは、割り込みを無効にし、適切な割り込みベクトルを更新し、割り込みを有効にしてもよい。たとえば、SGPOSに対してパーティショニングされたハードウェア・システム資源に対応する外部の割り込みリクエストに関連する割り込みベクトルを、割り込みベクトル・テーブル内で更新して、SGPOSのパーティション内の適切な割り込みハンドラ・ルーチンのアドレスを識別してもよい。一方で、CEに対してパーティショニングされたハードウェア・システム資源に対応する外部の割り込みリクエストに関連する割り込みベクトルは、CEが適切な変化を割り込みベクトル・テーブルに対して施して、このような割り込みリクエストをそのパーティション内の適切なハンドラ・ルーチンに送るまで、隠すかその他の場合には一時的に無効にしてもよい。
【0126】
またSGPOSは、I/Oを再構成してもよい。一実施形態によれば、このような再構成には、SGPOSパーティション内のメイン・メモリの確保された領域間の適切な関連性を、SGPOSパーティション内のメモリ・マッピングされたI/O装置によって形成することが含まれる。たとえば、ネットワーク・デバイスを再構成して、メイン・メモリ・アドレスの確保された領域を介してデバイスに書き込まれたデータが、対応するデバイス・コントローラ・メモリ・アドレスにメモリ・マッピング・ハードウェアによってコピーされるように、およびメイン・メモリ・アドレスの確保された領域を介してデバイスから読み出されたデータが、指定されたプロセッサ・レジスタにメモリ・マッピング・ハードウェアによってロードされるようにしてもよい。同様のI/O再構成を、CEによって、それらの初期化処理の間に行ってもよい。
【0127】
一実施形態によれば、SGPOSによって保持されるべきシステム資源を隔離することを、前述したハードウェアまたはソフトウェアの隔離および保護能力の1つまたは複数を利用することによって、たとえばSGPOSを静止させること(quiescing )、安全なプラットフォーム・インターフェースを用いること、またはハードウェア・プラットフォーム・パーティショニングを利用することによって、達成してもよい。
【0128】
使用される保護メカニズムにかかわらず、この例では、Cを呼び出す前に、SGPOSが、SGPOSによって排他的に使用されるべきメモリ資源および他のシステム資源を囲いで仕切り、その他の場合にはこのようなシステム資源に対するアクセスを限定する。Cは、その初期化処理の間に同一のことをしてもよい。既存のハードウェア隔離メカニズムは、Cに割り当てられたシステム資源のパーティションを、常駐のオペレーティング・システムから完全に保護するには十分ではないことが知られているが、C内またはC間の保護に対しては依然として実行可能である。しかし、前述したように、システム資源が1つまたは複数のC間でのみ割り当てられ、SGPOSが受動性の状態に配置される実施形態においては、1つまたは複数の現在または将来の保護メカニズム、たとえばヒューレット・パッカードのPARISCおよびIA64システムによって提供される高性能なメモリ保護アーキテクチャ、または同様のセキュリティ技術を用いて、C内またはC間のパーティションを確保してもよい。このような実施形態においては、たとえば、受動性の状態に入る前に、SGPOSが、物理メモリおよび領域識別子の組をCEに割り当て、およびメモリ属性を相応に設定して、メモリ領域を、CEの制御の下に配置されるべき対応するシステム資源に関連させてもよい。
【0129】
通常は、メモリは、ページ(すなわちメモリ・ページ)にパーティショニングされる。メモリ・ページは、I/O動作、仮想メモリ−物理メモリのマッピング、隔離および保護属性、および他のタイプのオペレーティング・システム作用に関して、メモリの基本単位である。IA−64の実施形態においては、排他的なドメインを、領域識別子および保護キー・ベースのメモリ・パーティションによって強制してもよい。1つまたは複数の領域識別子割り当て、保護識別子割り当て、メモリ・ページ・アクセス権値、および保護キー・ベースのメモリ・パーティションを用いて、特定の仮想的にアドレス指定されたメモリの領域、たとえば不連続な、あるいは連続するメモリ・ページのグループを、1つまたは複数のCEの制御の下に配置されるべき1つまたは複数のプロセッサに、効果的に関連させることができる。他の実施形態によれば、メモリ保護ドメインは、ウィッチェル(Witchel )他による「モンドリアン・メモリ保護(Mondrian Memory Protection)」、(2002年10月)、ASPLOS-X、プログラミング言語およびオペレーティング・システムに対するアーキテクチャ・サポートに関する第10回国際会議(Tenth International Conference on Architectural Support for Programming Languages and Operating Systems )に説明されているように実施してもよい。
【0130】
本実施形態のフロー・ダイアグラムに戻って、一旦、システム資源をパーティショニングして、SGPOSを適切に隔離したならば、ブロック440において、SGPOSは、Cを呼び出して、Cにシステム資源がその制御下に配置されていると伝えることによって、システム資源の1つのパーティションの完全制御をCに移す。この例によれば、SGPOSから、かつ他のシステム資源パーティション内で同時に実行され得る他のCから、Cを隔離することによって、C自身のパーティションを適切に保護することはC自体の責務である。
【0131】
この時点で、1つまたは複数のCは動作し、ブロック440〜480間のループの処理を、すべてのCが終了してSGPOS処理が終了するまで行う。一実施形態によれば、SGPOSを、それが1つまたは複数のCEを初期化および開始した後に、休止状態で配置されてもよいことを思い起こされたい。しかし、本実施形態においては、1つまたは複数のCを初期化および開始した後で、SGPOSは、判定ブロック450へと進み、Cおよびオペレータ・リクエストに応答する状態に留まる。
【0132】
判定ブロック450では、SGPOSが、(たとえば、Cまたはオペレータからの)外部リクエストの種類を判定し、それに応答して適切な処理を開始する。このようなリクエストの存在に気付くためのメカニズムは、ポーリング、割り込み、ソフトウェア信号または他の適切な信号送信手段を介してもよく、およびこのようなリクエストを受け取るメカニズムは、内部メッセージング・インターフェース、外部インターフェース(たとえば、ダイナミック・コンテントに関係するウェブ・プロトコル・リクエストに対するもの)、通信インターフェース、内部RPCなどを介してもよい。いずれにしても、図示した実施形態によれば、C動作ステージの間に取り扱われる一般的な3つのタイプのリクエストが存在する。すなわち、Cからのリクエスト、新しいCを開始するか、あるいはCを再確立するためのオペレータ指令からのリクエスト、およびC資源の戻りからのリクエストである。SGPOSが、Cからのリクエストが受け取られたと判定した場合、処理はブロック460に続く。SGPOSが、新しいCを開始するか、あるいはCを再確立するオペレータ指令が受け取られたと判定した場合、処理はブロック470に続く。SGPOSが、Cがシステム資源を戻していると判定した場合、処理はブロック480に続く。
【0133】
ブロック460では、Cからのリクエストに応答して、SGPOSによって、結果およびサービス・リクエストが用意される。これは、結果を、Cが結果にアクセスできる場所に書き込むことによって行われる。
【0134】
ブロック470では、新しいCの開始または以前のCの再確立に関係する指令の受け取りに対するリクエストに応答して、SGPOSは、新しいCに対するシステム資源を割り当て、次にブロック440に進む。
【0135】
ブロック480では、Cによって開始されたシステム資源の戻りに応答して、SGPOSが、Cと協力して、システム資源をその制御の下に再び取り入れる。たとえば、SGPOSおよびCは、割り込みを再統合してもよく、I/Oを再構成することによって、I/O装置のその後の管理に対する責務をSGPOSヘ送ってもよい。
【0136】
図5は、本発明の一実施形態によるSGPOS起動処理およびC初期化を概念的に例示する簡略化されたブロック・ダイアグラムである。このマルチ・プロセッサ・サーバ500の簡略化された図では、2つのプロセッサのみ(すなわち、SGPOSプロセッサ510およびCプロセッサ515)、大容量記憶装置520たとえば内部ハード・ドライブ、およびメモリ560が示されている。
【0137】
この例では、大容量記憶装置520は、少なくとも1つのSGPOS540と、少なくとも1つのカスタマイズされたアプリケーション530と、少なくとも1つのC550とに対する命令およびデータを記憶し、その命令およびデータは、カスタマイズされたアプリケーション530に対して調整される計算および/またはI/O構造を実施し、SGPOS540が利用していない特定のプロセッサまたは他のシステム資源機構を利用する。また大容量記憶装置520には、SGPOSローダおよびSGPOSイメージに対するデジタル署名545および546と、カスタマイズされたアプリケーション530に対するデジタル署名535と、C550に対するデジタル署名555と、SGPOS540にC550の存在およびシステム資源要求についての情報を伝達し、パーティション構成に関する情報を提供するための任意の初期化ファイルまたはパーティション記述子541とが、記憶される。
【0138】
SGPOSプロセッサ510およびCプロセッサ515は、同一のオペレーティング・システム・イメージを用いていてもよいし、または独立に起動してもよい(たとえば、オペレーティング・システム・ローダ・プログラムと、同一か、あるいは異なるオペレーティング・システム・イメージとを別個にロードするだけでなく、SGPOSローダおよびSGPOSイメージに対するデジタル署名545および546を検証する)。一方のプロセッサ、SGPOSプロセッサ510が、SGPOS540の完全な制御の下に留まってもよく、他方のプロセッサ、Cプロセッサ515が、C550の完全な制御の下に配置されてもよい。以前に説明したように、SGPOS540およびCは通常、それぞれ、それらの個々のシステム資源パーティション(たとえば、メモリ範囲570および580)を、ハードウェア隔離を用いて隔離する。たとえば、メモリ560は、多くのページ(たとえば、メモリ・ページ565)として表される。種々の高性能なメモリ保護アーキテクチャによって、隔離メカニズム、たとえば領域識別子、保護識別子、およびメモリ・ページ・アクセス権が与えられる。適切な識別子値566をメモリ・ページに関連させることで、メモリ・ページを、特定のシステム資源パーティションに割り当ててもよい。このような識別子値は、メモリ・ページに対する仮想のマッピングを記述するデータ構造内のフィールドとして直接取り入れてもよいだけでなく、関連するメモリ制御データ構造内に記録してもよい。
【0139】
この例では、イメージは局所的な記憶デバイスからロードされるが、代替的な実施形態、たとえばコンピュータ・システムが内部ハード・ディスクにアクセスすることなくネットワーク(たとえばIPネットワーク)を通して起動される環境においては、1つまたは複数のイメージを通信ポートを介して1つまたは複数のネットワーク・アクセス可能な記憶装置から提供できることが、意図されている。
【0140】
図6Aに、本発明の一実施形態によりウェブ・サーバに対して安全な高性能処理環境を提供するように構成されたコンピュータ・システム600を概念的に例示する。同図では、SGPOS625によって、システム資源のパーティション629の制御が保持されている。図示したシステム構成は、プロセッサ内の適切なハードウェア・ベースの隔離機構、関連するチップセット、または動作環境とシステム資源(たとえば、オペレーティング・システムとCE)との間に介在される中間のインターフェース(たとえば前述の安全なプラットフォーム・インターフェース)の存在によってサポートされる典型的な複数パーティション構成を例示している。このような隔離機構が広く利用できるようになるまで、プラットフォーム・ハードウェア・パーティショニングまたはより典型的な単一パーティション構成、たとえば図6Bに例示したものが、安全なシステムに対する最適な構成であると予想される。
【0141】
いずれにしても、本例に戻って、コンピュータ・システム600の概念的な例示が、そのシステム資源610を、ダイナミック・コンテント・ジェネレータ620にサービスを提供するSGPOS625に関連するパーティション629と、安全なウェブ・サーバ630にサービスを提供するCE635に関連するパーティション639との間で、(たとえば、図4および図5を参照して説明した処理に従って)割り当てた後の状態として、なされている。前述したように、CE635は、全体としては、SGPOS625および多目的オペレーティング・システムに課された移植性制約に限定されないため、CE635は、その下の特定のハードウェア・プラットフォーム(たとえば1つまたは複数のインテル(登録商標)アイテニアム(登録商標)2プロセッサおよび関連するチップセット)および/または特定のカスタマイズされたアプリケーション(たとえば安全なプロキシ・サーバまたは安全なウェブ・サーバ630)に対して簡単化および最適化された計算および/またはI/O構造を実施することができる。
【0142】
本例で例示する1つの可能なシステム構成は、将来のハードウェア隔離能力または現在のハードウェア・プラットフォーム・パーティショニングを用いたときに、ウェブ・サーバ・セキュリティおよび性能を強化する一方で、他のカスタムアプリケーションを実行する能力の維持を、常駐のオペレーティング・システムSGPOS625および常駐のオペレーティング・システムとは別個の動作環境CE635の同時かつ協力的な実行をサポートすることによって、可能にするものである。
【0143】
図6Bに、本発明の代替的な実施形態によるウェブ・サーバ630に対する安全な高性能処理環境を提供するように構成されたコンピュータ・システム600を概念的に例示する。図示したシステム構成が例示する可能なシステム構成は、CE635を初期化および開始した後で、常駐のオペレーティング・システムが、すべての、あるいは実質的にすべてのシステム資源611の完全な制御をCE635へ引き渡した後に、休止状態に配置されるものである。常駐のオペレーティング・システムは、システム資源611がCE635によって解放されたときに、休止状態から回復することができる。SGPOS625が静止(quiescing )され、かつすべての、あるいは実質的にすべてのシステム資源611の完全な制御が1つまたは複数のCE内に配置されているようなハードウェア・プラットフォーム・パーティショニングまたはシステム構成は、期待されているハードウェア・ベースの隔離機構が利用可能となり、かつ業界の容認を得るまでは、支配的な構成であると予想される。CEパーティション内および/またはCEパーティション間における隔離が望ましい限り、前述したように、現在または将来の高性能なメモリ保護アーキテクチャ、たとえば領域識別子、保護識別子、およびメモリ・ページ・アクセス権を用いてもよい。

アドレス指定およびメモリ管理
この節およびそれに続く主要な節における説明は、本発明のアイテニアム(登録商標)2の実施形態を例示するものである。本発明の実施形態は、一例として例示されており、限定は意味しない。
【0144】
図9Aに、第1世代の多目的オペレーティング・システム、たとえばIBMシステム/360に対するDOSオペレーティング・システムによるコードまたはデータの物理的にアドレス指定されるセクションの組織を概念的に例示する。セクション910〜950が物理メモリ900内に連続して配置されている。
【0145】
図9Bに、従来の多目的オペレーティング・システム、たとえばULWシステムによる、コードまたはデータの仮想的にアドレス指定されるセクション910〜950の組織、および物理ページ908に対するそれらのマッピング(矢印によって例示される)を、概念的に例示する。通常、オペレーティング・システムは、ほぼすべてのページに対して、比較的小さな固定されたページ・サイズ(破線960によって例示される)、多くの場合に4KB(4096バイト)または8KB(8192バイト)を選択し、多くのこのような連続するアドレス指定されたページ910〜950を用いることによって、コードまたはデータのより大きな仮想的にアドレス指定されるセクションをカバーする。ページ910〜950のそれぞれを、物理ページ908(PO〜P11)のいずれか1つにマッピングしてもよい。また従来のオペレーティング・システムでは、より少数のはるかに大きなページを、特定の目的、たとえばオペレーティング・システムまたはディスプレイ・バッファのセクション全体をマッピングするために、用いる場合がある。
【0146】
本発明の1つのアイテニアム(登録商標)の実施形態においては、CEは、仮想のアドレス指定モードにおいて全体として動作する。しかし、図10Aおよび図10Bに例示するようにページを用いることは、従来の多目的オペレーティング・システムが採用するものとは全く異なる。
【0147】
アイテニアム(登録商標)2プロセッサを用いる本発明の好ましい実施形態においては、各ページに対する仮想アドレス変換パラメータは、2つのタイプのメモリ・アクセス保護を含むようにアイテニアム(登録商標)アーキテクチャによって指定される。第1のアクセス保護は、「ページ・アクセス権」(AR)と呼ばれ、3ビットのアクセス・タイプ・フィールドおよび2ビットのページ特権レベル・フィールドによってエンコードされる。これは、図8Aのアクセス権テーブル800に示されている。これらのフィールドによって、特定の特権レベル830における読み出し、書き込み、および実行動作の規定された下位集合に対するページに対する許容メモリ・アクセスが限定される。第2のアクセス保護は、「保護キー」(PK)と呼ばれる。保護キーは、アイテニアム(登録商標)2プロセッサにおいて長さが24ビットであり、16,777,216の別個のキー値を与える。PKがページに関連している場合、ページへのメモリ・アクセスが許可されるのは、マッチングPK値が、保護キー・レジスタ(PKR)850の組の1つの中に含まれている場合だけである。これは図8Bに例示されている。PKR850における値は、プロセッサの最高の特権レベル(PL0)で動作するコードのみによって設定することができる。PKR850における値には、保護キー860、3つのビット870、872、874が含まれる。これらは設定されると、それぞれ、ページおよび有効なビット880に対して、すべての実行を無効にし、読み出し、アクセスを書き込む。ARおよびPKは、プロセッサ特権レベル(PL)とともに、メモリ内のすべてのページに対してきめ細やかなアクセス制御を強制するために用いられ得る。このようにして、ページを、コンパートメントにグループ分けして、各コンパートメントを、別個のPK値によって識別および保護することができる。この場合、各ページに対して、実行専用、読み出し専用、および書き込み専用のアクセスを任意に組み合わせて、制御することができる。
【0148】
最先端のハードウェアでは、仮想的にアドレス指定されたメモリに対するアクセスを加速する「変換索引バッファ」(TLB)を利用している。TLBには、ページの仮想および物理ページ・アドレスと、関連するすべての変換パラメータたとえばARおよびPKとが、収容されている。プロセッサ・ハードウェアがアクセスする仮想アドレスがTLBに含まれない場合、「TLBミス」が起こり、ハードウェアおよび/またはソフトウェアは、以下のことをしなければならない。(1)その仮想アドレスに対する変換を、仮想−物理変換を指定するメモリ内のテーブルの組から見出す、(2)必要な変換をTLB内へ挿入する、(3)メモリ参照命令を再実行する。本発明のアイテニアム(登録商標)の実施形態の場合、ミスは、全体としてハードウェアによって取り扱える場合があり、その他のときには、ソフトウェアがTLBミスを解決する必要があるソフトウェア例外が生じる。TLBは複雑で高度に最適化されたハードウェアであるため、最新のプロセッサには限定された数のTLBしかない。その数はおそらく、命令仮想アドレス指定されたページ変換に対して約100個であり、データ仮想アドレス指定されたページ変換に対して約100個である。4KBまたは8KBページを用いるシステムの場合、このようにTLBの数が限定されているために、TLBミスを起こすことなくアドレス指定ができるメモリは、約400KBまたは約800KBに、それぞれ限定される。サイズが数ギガ・バイトに達する物理メモリ、および3、6、9、またはそれ以上のメガバイトに達するオン・チップ・キャッシュの場合、TLBミスは、頻繁に起こると予想することができる。
【0149】
本発明のアイテニアム(登録商標)の実施形態の場合には、CEページを以下のように組織化して、TLBミスを完全に取り除くことができる。アイテニアム(登録商標)2プロセッサは、11個のページ・サイズを実施する。すなわち、4KB、8KB、16KB、64KB、256KB、1MB、4MB、16MB、256MB、1GB、および4GBである。一旦、物理メモリ・マップが決定されたなら、一実施形態においては、物理メモリを、16KB以上の9ページ・サイズだけを用いて、可能な最大のページ・サイズのリストに組織化する。可能な最大のページが、アプリケーションBSS作業用記憶に対して割り当てられる。この記憶は、CEが初期化されたときに、ゼロに設定される。いくつかの16KBページは通常、ソフトウェアおよびインテル(登録商標)アーキテクチャ−64(IA−64)「レジスタ保存エンジン」(RSE)スタックのセクションに対して割り当てられ、これは、特定のCEアプリケーションによってより大きなページが必要とされるまで行われる。最後に、単一または最大3つのページを、CEによって構成されるシステムおよびアプリケーションのコードおよびデータ・セクションのそれぞれを収容するために割り当てる。
【0150】
図10Bは、本発明の1つのアイテニアム(登録商標)の実施形態による物理ページの実際の組織を例示する抜粋である。物理アドレスの3つの別個の連続する範囲に対する物理ページ組織を、1070〜1090において示す。各行は、可能な最大のページになる組織の物理アドレスおよびサイズを示す。物理ページ・アドレスは16進数である。コードおよびデータ・セクションに対する物理ページの割り当ての間に、ページ・リスト内の特定のページ・サイズが使い切られた場合には、次に大きなページを、パーティショニングして、次に小さなサイズの4つのページにする。必要ならばこれを繰り返す。各ページには、所望するARおよびPK値が割り当てられ、その結果、コンパートメントの組が生成される。その組の各コンパートメントには、実行可能なコード・ページおよび/またはデータ・ページがあってもよい。このようにすることで、必要なページの数が最小になり、各コンパートメントおよびページに対するきめ細やかなアクセス制御が得られる。初期の結果によれば、約半分の数の利用可能なアイテニアム(登録商標)2TLBによって、CE全体をカバーできることが示されている。このようにして、多くのCEにおいて、TLBミス処理のオーバーヘッドを完全に取り除くことができる。このようにしてページを管理する場合、CEソフトウェアが、いくつかのTLBミスに対処する必要があってもよい。TLBミスを解決するアイテニアム(登録商標)プロセッサ・ハードウェアは、メモリの各領域における均一なページ・サイズのみに対処する。
【0151】
図10Aでは、本発明のアイテニアム(登録商標)の実施形態における仮想的および物理的にアドレス指定されたページのマッピングを概念的に例示している。連続する各ページが異なるアクセス特権レベルを有していなければならないような特定のページ間(たとえばソフトウェア・スタック・ページ間)で、連続する仮想アドレスが必要とされる場合を除いて、各ページには、アライメントされた大きな境界(たとえば1ギガ・バイトまたは4ギガ・バイト)上で始まる仮想アドレスが割り当てられる(アイテニアム(登録商標)プロセッサが提供する85−ビット仮想アドレス内には、このまばらな仮想アドレス割り当てを許可するには十分過ぎるほどの仮想アドレスが存在する)。これは、図10Aにおいて、4ギガ・バイト仮想アドレスのアラインメントに対して例示されている。4ギガ・バイトのアラインメントによって、アイテニアム(登録商標)2プロセッサがサポートする11ページ・サイズのいずれかを、このような仮想アドレス境界のいずれかにマッピングすることができる。これはまた、ループ内では、アドレス指定例外を引き起こすことなく、4GBより小さなページの境界を越えてアドレス指定することは不可能であることを意味する。
【0152】
図10Aに例示した例では、仮想的にアドレス指定されたページ1010〜1050がそれぞれ、4ギガ・バイトの境界において始まり、対応する破線まで延びている。ページ1040の場合には、4GBページが、仮想アドレス(N+3)×4GBにおいて始まっており、破線はない。仮想的にアドレス指定されたページ1010〜1050は、物理メモリ1008内の物理的にアドレス指定されたページ1010〜1050にマッピングされている。各仮想ページは、矢印で示したように正確に同一サイズの物理ページにマッピングされている。
【0153】
従来の多目的オペレーティング・システムでは、プラットフォーム物理メモリよりも数倍大きな仮想メモリが設けられていた。これは、TLBミスがしばしば、ページ・フォルトにカスケードすることを意味する。TLBミス・ハードウェアおよび/またはソフトウェアによって、必要な変換は、ディスクにコピーされているページに対するものであることが分かった場合、ソフトウェアは、以下のことをしなければならない。(1)必要に応じて、さらに他の物理ページをコピーすることによって、利用可能な物理ページを見出す;(2)コピーされたページを読み出して、物理メモリ内へ戻す;(3)一旦、ページが物理メモリ内に戻ったら、マッピング・テーブルおよびTLBの両方内に変換をインストールする;(4)フォールティング・メモリ命令へ制御を戻す。時おり、エンジニアリングでは、量的な変化が非常に大きいために質的な変化が生じるという可能性がある。物理メモリの場合、現在利用可能なサイズが非常に大きいために、CEに対して2倍以上の大きさの仮想メモリを設けることは、もはや必要ではない。これは、多目的オペレーティング・システムの構造からの別の逸脱である。
【0154】
アイテニアム(登録商標)システム・ソフトウェアの取り決めによって、2つのタイプのスタックが規定される。第1は、「ソフトウェア・スタック」と呼ばれ得る。第2は、「RSEスタック」と呼ばれる。CE内では、多目的オペレーティング・システムとは違って、何らかの再帰的なプロセスをサポートすることに十分拡張可能なスタックをサポートする必要はない。したがって、CEアプリケーションに対して十分なサイズのSWSおよびRSESが、後述するように、ARおよびPKによって割り当てられて保護される。何であれ所定の境界を越えるアドレス指定を行うと、アプリケーションに対して誤差通知がなされる。次いで、リカバリ動作を行って処理を再開する手段が与えられる。
【0155】
図11Aおよび図11Bは、本発明のアイテニアム(登録商標)の実施形態におけるSWSおよびRSESに対して割り当てられたページと関連する保護設定とを示す簡略化されたダイアグラムである。SWS仮想アドレス1100が、スタック最上部の最高の仮想アドレスから下部の仮想アドレスに向かって大きくなっている。本例でのSWSには、特定のCE内で実行される特定のアプリケーションまたは特定のアプリケーションの組の要求に対して適切にサイズ取りされたページの組1110〜1140が含まれる。この特定の例では、これらの16KBのページ1110〜1140に、ページ1110〜1140を指す矢印が示す連続した仮想アドレスが割り当てられている。本例では、SWSの各特権セクション1110、1120、1130、および1140には、単一ページのみが必要とされているが、他の場合において、各特権セクションには、最大3つの仮想的にアドレス指定されたページが含まれていてもよい(1〜3のより小さなページを、次のより大きなページ・サイズ(通常は4倍大きい)を選択する前に、用いてもよい)。すべての特権セクション1110〜1140は、それらの個々のハードウェア特権レベル、1140に対するPL3、1130に対するPL2、1120に対するPL1、および1110に対するPL0において、読み書き権を有するが、実行権、アクセス権を有することはない。スタックされたデータが、アプリケーションから隠されるべきである場合、制御フローがより高い特権レベル・コードに進む前に、SWSアドレスをより高い特権セクションのアドレスへと押し進めてもよい。また、図11Aには、仮想的にアドレス指定されたSWSページ1100(1110〜1140)の、物理ページ1108(PO〜P5)へのマッピングが例示されている。これは矢印によって示されている。
【0156】
図11Bに例示するように、RSESは、低い仮想アドレスから、より高い仮想アドレスへと大きくなっている。この例では、RSEスタックには、特定のCE内で実行する特定のアプリケーションまたはアプリケーションの組の要求に対して適切にサイズ取りされたページの組1115〜1145が含まれている。この特定の例では、これらの16KBページ1115〜1145には、ページ1115〜1145を指す矢印が示す連続した仮想アドレスが割り当てられている。必要な特権レベルを、すべてのRSE特権セクション1115〜1145に対して、PL0に設定する。すべてのRSE特権セクション1115〜1145は、PL0において、アクセス権の読み書きを行うが、アクセス権を実行することはない。一実施形態においては、RSEスタック・ページ1105にアクセスするための特権レベルは、実行コードの特権レベルとは別個の特権レベルである。これについては、後でより詳細に説明する。本例では、RSEスタックの各特権セクション1115、1125、1135、および1145は、単一ページのみを必要としているが、他の場合では、各特権セクションに、最大3つの仮想的にアドレス指定されたページが含まれていてもよい。
【0157】
RSEのさらに高い特権ページに対するアクセスは、各特権レベルに対して別個の保護キー値を割り当てることによって制御される。制御フローがハードウェア特権境界を横切ると、PKRのコンテンツは変更されて、RSESページ・アクセスを、許可された特権レベルのみに限定するようになる。具体的には、最も低い仮想的にアドレス指定された特権セクション1115は、すべての特権レベルに対して、PKR内に存在するPKによって保護される。次に高い仮想的にアドレス指定された特権セクション1125は、PL2、PL1、またはPL0におけるコード動作に対してのみ、PKR内に存在するPKによって保護される。その次に高い仮想的にアドレス指定された特権セクション1135は、PL1またはPL0におけるコード動作に対してのみ、PKR内に存在するPKによって保護される。最も高い仮想アドレス指定された特権セクション1145は、PL0に対してのみ、PKR内に存在するPKによって保護される。実行特権は、すべてのPKによって無効にされる。また、図11Bには、仮想的にアドレス指定されたRSEページ1105(1115〜1145)の、物理ページ1118(PO〜P5)に対するマッピングが例示されている。これは矢印によって示されている。
【0158】
この設計によって、特権レベルを横切るときにRSEスタックを交換する必要がなくなる。しかし、秘密の値がリークすることを回避するために、システム・コードを、より低い特権コードに戻る前に、秘密に関わる値を収容するレジスタを取り除くように設計してもよい。アイテニアム(登録商標)プロセッサの場合、最大で6つのレジスタを、単一のサイクルにおいてクリアにすることができる。通常は、その他の場合には用いられない命令スロットを用いることによって、レジスタ・クリアリングを、かなりの数の付加的なサイクルを必要とせずに行うことができる。
【0159】
特定のアプリケーションによって必要とされる割り込み構造に依存するが、別個のSWSおよび/またはRSESを、システム内の割り込み制御フローに対して割り当ててもよい。あるいは、より簡単に、割り込み制御フローを、適切な特権レベルに制御が戻るまで延期できる場合には、別個のSWSまたはRSEスタックを必要としなくてもよい。この場合には、通常の制御を下部の特権レベルへ戻す前に、下部の特権レベルにおける割り込みコードを、下部の特権レベルにおけるシステム導入された呼び出しとして呼び出してもよい。このように、単一のSWSおよびRSESを、通常の場合および割り込み処理の場合の両方に対して、用いることができる。
【0160】
前述したように、RSEスタック・ページにアクセスするための特権レベルが、別個のアイテニアム(登録商標)アプリケーション・レジスタ、名称「レジスタ・スタック構成レジスタ(Register Stack Configuration Register )」(AR.RSC)内に含まれており、次のレジスタ・エンジン記憶装置が開始される仮想アドレスが、アイテニアム(登録商標)アプリケーション・レジスタ、名称「記憶装置用RSE外部記憶装置ポインタ(RSE Backing Store Pointer for Memory Stores )」(AR.BSPSTORE)に含まれている。残念ながら、AR.RSCおよびAR.BSPSTOREアプリケーション・レジスタを変更する命令を実行できるのは、PL3、最低のハードウェア特権においてである。しかし、AR.RSCモード・フィールドが非ゼロに設定されている場合には、AR.BSPSTOREレジスタを変更するいかなる試みによっても、検出可能なハードウェア例外が生成される。モード・フィールドを変えるAR.RSCレジスタのいかなる変更によっても、特権レベル・フィールドでは、特権が、PL0からアプリケーション用の現在のハードウェア特権レベル、PL3へと下がる。PL0コードを除いて、AR.RSCレジスタを変えると、RSEコンテンツは完全にアクセス不可能となる。何故なら、RSEページに対するメモリ・アクセスでは、PL0をAR.RSC.plフィールド内で設定する必要があるからである。本発明の一実施形態によれば、CEに対して採用される保護ストラテジは、AR.RSC特権レベルをPL0に、ARRSCモード・フィールドを0x3に、初期化するものである。CE構成プロセスには、すべての実行可能なコードが見えるため、実行可能なコードは、AR.RSCまたはAR.BSPSTOREレジスタを変更する任意の非PL0命令がないことを保証するために、走査される。厳密に言えば、AR.RSCを変更しないことが保証されれば、保護に対して十分である。何故なら、AR.BSPSTOREのみがわずかでも変更すれば、例外となるからである。しかし、各CEに対する製造ポリシは、CEが構築されている間に、例外に対する可能な発生源をすべて取り除くことである。このコード走査は、実行可能なコード・セクションに対して暗号のデジタル署名が算出されているときと同時に行われる。
【0161】
メモリ割り当てCEサービスが、BSSデータ・ページ、初期化されていない読み出し/書き込みデータ・ページ内に、作業用メモリを割り当てて解放するために設けられている。BSSデータ・ページに、連続的な仮想アドレスが割り当てられる。これらは、CEが最初にロードされるときに、ゼロに設定される。ページに対する仮想アドレス割り当てストラテジによって、最大のページを用いてヒープを構成することができる。各CEに対して、ヒープ内の仮想メモリを割り当てるための割り当て単位サイズとして、アプリケーションに対して適切なものが選択される。この割り当て単位サイズは、各アプリケーションに対して異なっていてもよい。メモリを割り当てて解放するサービス呼び出しが対応しているのは、この規定された割り当て単位サイズの連続する倍数のみである。ヒープ内の仮想メモリ割り当てを制御するデータ構造は、まったく別個のページ内に維持され、非常にコンパクトに作ることができる。本発明のアイテニアム(登録商標)の実施形態の1つについてテストを実施したところ、メモリの各割り当て単位サイズのひとまとまりを割り当てるためのブックキーピング・データ構造には、2.5ビットのみが必要であった。隔離されたヒープ割り当て制御データ構造は、アプリケーション内の任意の記憶装置によって汚染される可能性はない。またこの構造は、アプリケーションによって、リカバリおよびレジューム処置を始める必要があることが見出された場合に、正確なメモリ割り当て状態を決定するために用いることができる。

実行制御
以下は、本発明のアイテニアム(登録商標)の実施形態を例示する説明である。CEの第1の設計原理が意味するように、実行制御はまた、最も簡単で、最も速くて、最も安全な能力に限定される。CEは、各プロセッサ上のアプリケーション実行に対して単一スレッドのみを与える。他のアプリケーション・スケジューリングまたはディスパッチング・メカニズムは与えられない。各プロセッサ上における単一スレッドの実行は、特定のプロセッサ上での制御として存続し、アプリケーション・コードおよびより高い特権システム・サービス・コード間を行き来する。またこの単一スレッドは、アプリケーションおよびシステム・コンポーネント内の例外取り扱いルーチン、割り込みサービス・ルーチン、および延期された割り込みサービス・ルーチンへの制御フロー・パスとして存続する。
【0162】
CEのアプリケーション・コンポーネントは、その作業をスケジュールおよび制御することを担っており、これは、単一のプロセッサ上で実行するか、複数のプロセッサ上で実行するかにかかわらない。複数のプロセッサをアプリケーションが用いるときには、アプリケーション自体が、これらのプロセッサ間でのコーディネーションおよび同期化を担う。このような同期化は、ハードウェアが与えるアトミック動作(たとえばアイテニアム(登録商標)交換、比較および交換、またはフェッチ・アンド・アッド・ハードウェア命令)を直接用いることによって、あるいはアトミック命令を用いることで実施されるソフトウェア規定のロック階層によって、行ってもよい。アトミック命令は、アセンブリ言語サブルーチンにおいて行ってもよいし、イン・ラインのアセンブリ言語命令文を可能にするコンパイラを用いて指定してもよい。図15に示したように、各プロセッサは、その独自のソフトウェアおよびRSEスタック、1501、1502および1511、1512を有していてもよい。各ページに対するメモリ・アドレス指定能力は、特定のプロセッサ1504および1514に局所的とすることもできるし、すべてのプロセッサ1505、1508および1515、1518間で共有とすることもできる。またアプリケーション・コード・イメージは、特定のプロセッサに対して局所的とすることもできるし、すべてのプロセッサ1503および1513の間で共有とすることもできる。システム・サービス・コードは通常は、すべてのプロセッサ1506、1516によって共有される。またシステム・サービス・データも、局所的なまたは共有された1507、1517であってもよい。また、図15では、物理ページ1520(PO〜P10)への2つのプロセッサ1500および1510内の仮想アドレスのマッピングを例示している。
【0163】
良く知られた作業スケジューリング構造、たとえば適応性のある有限のステート・マシーン、ラウンド・ロビン・コミュテータ、または優先順位主導のコミュテータを用いることによって、好適な作業キュー上で動作しながら、単一の実行スレッドによって駆動されるアプリケーションが、その計算タスクを組織化して進行を保証することが可能となる。図13は、本発明の一実施形態による、プライオリティ・コミュテータを用いたアプリケーション論理フローを概念的に例示する簡略化されたダイアグラムである。判定ブロック1310において、ネットワークI/Oイベントの発生について判定がなされる。ネットワークI/Oイベントが発生した場合には、制御はブロック1320へ流れ、そこで、ネットワークI/Oイベントの結果として要求される必要な処理が行われる。いった、状態が、このような処理が終了したことを示すように設定されたら、ブロック1320からの制御は判定ブロック1310に戻る。このために、この制御フロー構造は、「優先」コミュテータと言われる。それによって、存在するのであるならば、最も高優先のイベントに対する処理が、最初に行われる。
【0164】
一旦、すべてのネットワークI/Oイベントが取り扱われたら、判定ブロック1330において、タイマ・チックの発生について判定がなされる。タイマ・チックが発生した場合は、制御はブロック1340へと流れ、そこで、タイマ・チックの結果として要求される必要な処理が行われる。一旦、状態が、このような処理が終了したことを示すように設定されたら、ブロック1340からの制御は、判定ブロック1310に戻る。
【0165】
一旦、すべてのタイマ・チック・イベントが取り扱われたら、判定ブロック1350において、オペレータ・コマンドの発行について判定がなされる。オペレータ・コマンドが発行された場合は、制御はブロック1360へと流れ、そこで、コマンドの結果として要求される必要な処理が行われる。一旦、状態が、このような処理が終了したことを示すように設定されたら、ブロック1360からの制御は判定ブロック1310に戻る。
【0166】
前述のイベントは、より大きな組の潜在的な発生を例示している。前述の例においてブロック1310〜1360によって例示される制御フロー論理を、特定のCEに対して発生し得るこのようなイベントのすべてに対して、継続してもよい。一旦、すべてのより高優先のイベントが取り扱われた場合、判定パターンが、アプリケーション・タスクに対して続く。本例では、このようなタスクとして2つのみ(高優先および低優先と呼ばれる)を示す。通常、アプリケーションには、より多くのタスクが存在する。
【0167】
判定ブロック1365において、アプリケーション作業キュー上に高優先タスクがあるか否かについて判定がなされる。このようなタスクが存在する場合には、制御フローはブロック1370へ移って、必要な処理が行われる。一旦、状態が、このような処理が終了したことを示すように設定されたら、ブロック1370からの制御は判定ブロック1310に戻る。
【0168】
判定ブロック1375では、アプリケーション作業キュー上の低優先タスクの存在について、判定がなされる。このようなタスクが存在する場合には、制御フローはブロック1380へ移って、必要な処理が行われる。一旦、状態が、このような処理が終了したことを示すように設定されたら、ブロック1380からの制御は、再び判定ブロック1310に戻る。
【0169】
単一スレッドの制御構造、たとえば図13に例示したものによって、アプリケーションは、通常のアプリケーション・タスクだけでなく、アプリケーションの外部のイベントの結果として行われるタスクの両方に、対処することができる。同様の構造は通常、システムの他の特権レベルにおいても使用される。また、このような構造によって、アプリケーションが、例外または割り込みの発生の結果のみとして入ったセクションを収容することができる。このような割り込みには、以下のものが含まれる。すなわち、システム・クロックの規則的な経過時間において発生するもの、終了または1つもしくは複数のI/O動作に起因する他の信号の結果として発生するもの、システム・オペレータ・コマンドの結果として発生するもの、およびシステム・エラーが検出された結果として発生するもの、である。これらの場合のうち最初の3つにおいては、アプリケーション・セクションが、割り込みが発生してから間もなくして呼び出される。アプリケーションは通常、呼び出されると、その作業スケジューリング・アルゴリズムを起こすのに必要な最小限の制御状態および状態情報を設定し、一旦、アプリケーションが通常の処理を再開したら、イベントの結果にさらに十分に対処する。第4の場合では、アプリケーションは通常、必要なリカバリ処理を行って、何らかの必要なCEシステム・サービスを呼び出し、作業用アプリケーション状態を復元するか、あるいはリセットおよび再始動システム・サービスを呼び出す。
【0170】
CEアプリケーションが、必要なCEシステム・コンポーネントとリンクしている場合には、アプリケーション・コード・イメージは、「エントリ・ベクトル」(EV)と呼ばれる命令のCEベクトルによって前置される。EVにおける各スロットは、特定の例外、割り込み、オペレータ制御信号、または他のシステム・イベントに対応している。EVの各位置における命令から、制御が、イベントを取り扱うためのアプリケーションまたはシステムにおける適切な点に送られる。各EVは、特定のアプリケーションに対して特別仕立てされている。たとえば、オペレータ・コマンドに応答するためにアプリケーション・セクションが設けられている場合には、対応するEVエントリー内の命令が、そのアプリケーション・セクションに制御を送る。1つの規定されたEVエントリーを用いて、アプリケーションの実行を始める;他の一つのEVエントリーが、アプリケーションを終了させるために提供される;他のEVエントリーによって、制御が、例外および/または割り込みに応答しなければならないアプリケーション・セクションに送られる。特定のEVエントリーに対して、アプリケーション動作がなされない場合、デフォルトのシステム動作が取られる場合がある。
【0171】
図12は、本発明のアイテニアム(登録商標)の実施形態におけるアプリケーションに関連するEVの簡略化されたダイアグラムである。EV1210によって構成される命令は、アプリケーション・コード1230の前に配置され、完全なアプリケーション・コード・セクション1220は、1210および1230によって構成されている。アプリケーション・データ・セクション、たとえばアプリケーション・データ・セクション1240は、完全に別個のページを占めている。EVコード1210におけるEVエントリー1211〜1218は、行われ得るEVエントリーのタイプを単に示すだけのものである。これらは、何ら特定の順番で示されているわけではない。
【0172】
EV機能の一例として、アプリケーションが5秒ごとに経過時間の通知を希望する場合には、アプリケーションは最初に、5秒間隔とイベントに対する識別タグとを指定するCEタイマ・サービスを呼び出す;タイマ・チックを取り扱うためのアプリケーションのコード・セクションに制御を送る命令は、EV内にすでに存在している。要求されたタイマ・チックが発生すると、制御は、タイマ間隔EVエントリー1213へと流れる。このエントリー1213は、指定されたアプリケーション・タイマ・チック取り扱いセクションに、制御を送る。このタイマ・チック取り扱いセクションは、アプリケーションがタイマ通知を要求したときに供給されるタグを用いてイベントを識別し、アプリケーション内部制御状態を相応に更新する。制御がタイマ・チック取り扱いセクションから戻ったら、システムは、通常のアプリケーション処理に制御を戻すため、タイマ・チック取り扱いセクションが設定する制御状態は、アプリケーション実行フローに適切に影響を及ぼすことができる。
【0173】
従来の多目的オペレーティング・システムでは、アプリケーションは、一部のシステムおよび/またはアプリケーション動作不良を示す信号を処理し、修正処置を試みることができる。これは、捕らえるべき特定の信号を指定するシステム呼び出しと、対応する信号が発生したときに呼び出すべきアプリケーション・コードとを通して、行うことができる。アプリケーション・リカバリには通常、アプリケーション制御スタックを巻き戻すプロセスに、一度に1つまたは複数のステップで入ること、および必要とされるリカバリ・コードをこれらのステップのいくつかにおいて実行することが、伴う。特定の時点でイベントの発生を記録することが、よい措置である。最終的に、アプリケーションは、以下のことができなければならない。(1)その状態を補正して処理を継続する;または(2)それ自体の異なるコピーを再び開始し、この新しいコピーが継続できるように十分な情報を送る;または(3)断念して終了する。
【0174】
CEアプリケーションは通常、動作を再生および継続するためのあらゆる努力をなすように設計される。考えられる最悪の場合では、アプリケーションは、障害を他のいかなるシステムにも伝搬しない動作状態に入るように設計される。たとえば、キャッシング・プロキシ・サーバの場合には、通常のキャッシュ処理を復元することができない場合には、サーバは、スループット・レベルが低下してもウェブ・アクセスの継続を可能にした通過モードへと機能低下してもよい;あるいは、サーバを、それ自体をリセットして再始動するように設計してもよい。
【0175】
CEシステム・サービスは、アプリケーション再生および継続処理を容易にするように設計されている。図12では、EVエントリー1212は、「再生不可欠」エントリーをアプリケーションへ送出するために設けられている。CEのアイテニアム(登録商標)の実施形態の構造の基本的な簡単さおよび分かりやすさは、アプリケーションの再生および継続ストラテジを設計する際の利点である。ハードウェア保護原理によって、アプリケーションおよびシステムの両方によって実行可能なコード・セクションが変更されていないことが保証される。同一のことが、すべての読み出し専用データ・セクションについて言える。メモリ・ページ割り当ては静的である。したがって、マッピングされた各ページの種類および保護は、正確に分かっている。ソフトウェアおよびRSEスタック構造は、良く理解されており、また簡単なシステム・サービスによって調整または再初期化することができる。アプリケーションにとって重要なI/O動作は、アプリケーションと再同期化することができ、および継続または再始動することができる。ヒープを使用し続けるべきか、あるいはそれを初期化するべきかを決定するときに、BSSメモリ割り当て状態を常に、正確に決めることができる。精巧なスタック巻き戻しプロセスは、必要ではない。アプリケーションは、再生および継続しなければならない場合、またはリセットおよび再始動しなければならない場合には、取るべき行動方針を決定できるための十分な情報を、簡単に記録することができる。
【0176】
図7に、本発明の一実施形態によるCE700内のサービス間の関係を概念的に例示する。本発明のアイテニアム(登録商標)の実施形態においては、システム制御は、アプリケーション制御の場合と同様に、プロセッサ当たり同一の、簡単な、単一のスレッドに基づいている。アプリケーションを実行すること、たとえばシステム・サービス750に対する呼び出しは、このスレッド上で行われる。システム・サービス750には、以下のものが含まれる。
【0177】
1.プラットフォーム制御サービス740
これらのサービスは、PL0、最高のプロセッサ特権レベルで実行されるサービスだけである。1つまたは複数の特権ハードウェア命令を用いることは、これらのサービスの機能に対して不可欠である。これらのサービスのいくつかは、システム初期化時においてのみ動作する。他は、割り込みが起きたときに呼び出される。さらに他は、呼び出し可能である。この例では、プラットフォーム制御サービス740には、以下のものが含まれる。
【0178】
a.システム初期化−図17Bおよび17Cは、本発明のアイテニアム(登録商標)の実施形態に対するCEローディングおよび初期化を例示するフロー・ダイアグラムである。主起動プロセッサ内での実行によって:物理メモリ・ページを割り当てる(1740);コード、データ、スタック、およびヒープ・ページに対する仮想アドレスマッピングおよびページ保護状態を確立する(1745);セクション・イメージを適切な物理ページへ移動させる(1750);ヒープ・ページをゼロにする(1755);最新の物理メモリ・マップ・キーを読み出し、EFI起動サービスから出て、制御をCE初期化サービスへ移す(1760,1765);CEローダによって占められた物理ページをゼロにする(1770);ファームウェア呼び出しを介してハードウェア・プラットフォームおよび構成オプションを設定する(1775);主プロセッサ内での実行によって、コード、データ、スタック、およびヒープ・ページに対する仮想アドレスマッピングおよびページ保護状態を確立する;仮想アドレス指定へ移行する(1780);プロセッサに対する割り込みステアリングを構成する;ファームウェアから供給された情報を用いて、タイマを校正する;I/Oコントローラ、オフロード・ボード、または他のプラグ・イン・ボードを初期化する;任意の他のプロセッサを起動させる(1785)。非主プロセッサ内での実行する:それによって、コード、データ、スタック、およびヒープ・ページに対する仮想アドレスマッピングおよびページ保護状態を確立する;ファームウェア呼び出しを介してプロセッサ構成およびオプションを設定する;ファームウェアから供給された情報を用いて、タイマを校正する(1790)。すべてのプロセッサ上で実行する:それによって、プロセッサ状態を確立する;制御を、各システム・サービス初期化エントリー・ポイント、たとえば任意のI/Oアダプタ、任意のオフロード・ボード、および他の任意の別個のプラグ・イン・ボードを初期化するための初期化エントリー・ポイントへ送り、暗号キーイングおよびランダム状態を外部から取得し、状態メッセージをインストレーション管理システムへ送る;最後に制御をCEアプリケーションへ渡す。
【0179】
b.ソフトウェア再始動制御−再始動イベントを報告する;割り込みを一時的に無効にし、I/O動作を停止させ、ならびに任意のI/Oアダプタ、任意のオフロード・ボード、および任意の他の別個のプラグ・イン・ボードを再初期化する;スタックを再初期化する;ヒープ・メモリをクリアにするか、あるいはしないでシステム状態をリセットする;アプリケーションを再起動する。
【0180】
c.メモリ制御:利用可能なTLBがすべてのページを同時にカバーすることができない場合に、TLBミスを取り扱う。保護IDを管理し、アクセス許可が、保護キー・レジスタにおいて無効にされる。
【0181】
d.プロセス制御−各プロセッサ内で実行する:それによって、実行スレッドの状態を初期化する;実行スレッドを始動する;実行スレッドをチェックポイントする;システムによって延期された割り込みサービス・ルーチン(DISR:Deferred Interruption Service Routine )を始動させる;割り込みの後に実行スレッドを再開する;実行スレッドを停止させる;実行スレッドをリセットおよび/または再始動する;特権レベルに渡って呼び出すとき、特権レベルに渡って戻るとき、ならびに例外取り扱いルーチン、割り込みサービス・ルーチン、および遅延した割り込みサービス・ルーチンをディスパッチするときに用いられるリンケージ・サービスを提供する;呼び出しを認証する。
【0182】
e.割り込み制御−各プロセッサ内で実行する:それによって、割り込みが起きたときに制御を受け取る;制御が、対応する例外取り扱いルーチン、割り込みサービス・ルーチン(ISR)、および延期された割り込みサービス・ルーチン(DISR)へと流れるように、状態を設定する;割り込みキューを排出して、すべての待ち状態の割り込みに対する対応する状態を設定する。
【0183】
f.I/Oハードウェア制御−実際のメモリ・マッピングされた読み出しおよび書き込みをすべてI/Oコントローラへ出す;I/Oドライバが用いたメモリ仮想アドレスをすべて変換して、正確な物理アドレスにする;I/O物理アドレスを変換して仮想へ戻しI/Oドライバが使用できるようにする。後述のさらなる説明を参照されたい。
【0184】
g.システム状態制御−システム状態情報を読み出して下部の特権システム・デバッギング・サービスへ戻す。デバッガを介してのシステム状態への変更は、許可されない。
2.システム制御サービス730
I/OドライバISRを除いて、これらのサービスは、アプリケーションまたはアプリケーション・サービスからの呼び出しによって呼び出される。これらのサービスが実行されるのは、PL1、すなわち2番目に高いハードウェア特権レベルにおいてである。本例によれば、システム制御サービス730には、以下のものが含まれる。
【0185】
a.タイマ制御サービス−経過時間信号をアプリケーションへ、アプリケーションEVを介して戻す。複数の信号リクエストを管理して、各信号を適切な経過時間の後に戻す。各信号には、識別子によってタグが付けられている。この識別子によって、アプリケーションは信号を、特定のタイマ・イベントと相関させることができる。
【0186】
b.デバッグおよびモニタリング制御サービス−システム状態および動作上の統計を戻す;動作中、CEシステム・コンポーネントはそれぞれ、システム作用の種々の対策を維持する。このシステム・サービスは、これらの対策のスナップショットを戻す。
【0187】
c.オペレータ・インターフェース制御サービス−オペレータ・リクエストが認識されたときに始動される;システム状態を尋ねるリクエストに応答する;オペレータ指令を受け取ったときに、オペレータに関係するEV動作を開始する。オペレータ・リクエストは、CEとのSSLセッションを維持しているブラウザ上のGUIを介して入力されることが想定される。このGUIは、システム構成設定および状態を表示することが可能である。オペレータ指令は、インターフェースたとえば「適用」または「保存する」ボタンを、GUIユーザに良く知られた方法により用いて、構成設定を変えてもよい。
【0188】
d.暗号化サービス−システムおよびアプリケーションに対して暗号のサービスを行う;サービスには、以下のものが含まれる。キー生成および管理、暗号的に強い乱数生成;暗号ハッシュ機能、デジタル署名、メッセージ認証コード、および対称的および非対称的の両方の暗号動作。暗号キーおよび他のランダムな材料が維持されるコンパートメントは、これらの特定のコンパートメントを保護するためだけに確保された保護キーによって保護されている;特定のキーが、キーが最初に生成されたときに戻されたハンドルを用いることによって指定される。
【0189】
e.TCP/IPオフロード・ドライバまたはTCP/IPスタック・サービス−TCP/IP通信を、1つまたは複数のCEプロセッサ内で、またはTCP/IPオフロード・ボードを用いて、提供する;両方の場合において、アプリケーションに対するインターフェースは、非同期の動作および通知を可能にする汎用の「ソケット」レベルにおいてである;データ取り扱いは、「ゼロ移動」目標に基づく;データ移動を回避できないときには、それを他の処理、たとえば圧縮、復元、暗号化、または解読と組み合わせる。
【0190】
f.I/Oドライバ・サービス−必要なシステムI/Oに対するI/Oアダプタを制御する;仮想アドレスのみによって動作する;I/Oハードウェアとの実際の通信に対するプラットフォームI/Oサービスを用いる;これによって、I/Oドライバから生じる物理アドレス攻撃が防がれる。
【0191】
g.システム・モニタリング・サービス−システム状態の表示を周期的に更新する。システム状態には、負荷、スループット、およびハードウェア利用率情報などの測定基準が含まれる。
【0192】
3.アプリケーション・サービス720
これらのサービスが動作するのは、PL2、すなわち2番目に低いハードウェア特権レベルにおいてである。現在、規定されているアプリケーション・サービスは1つだけである。将来、他のアプリケーション・サービスが、システムのこのレベルにおいて出現し得ることが想定される。たとえば、考えられる将来のサービスの1つは、指定されたイベントが発生するまで、アプリケーションが、プロセッサ・スレッドの制御を他の背景アプリケーションへ引き渡すことを可能にするサービスである。
【0193】
a.メモリ割り当てサービス−アプリケーションのヒープ・メモリからのメモリの割り当ておよび解放を行う;割り当てられたメモリのサイズは常に、固定された割り当て単位の倍数であり、たとえば4Kバイトまたは8Kバイトまたは16Kバイト、などである。割り当て単位は、特定のアプリケーションに対して設定することができる。メモリ割り当てを把握するために使用されるデータ構造は、非常にコンパクトに作ることができる。これらのデータ構造は全く別個のメモリ内にあり、アプリケーション内のワイルド記憶装置によって汚染される可能性はない。
【0194】
CE設計原理によれば、システム・サービス750は、特定のアプリケーションに対して不可欠のものに限定される;サービスは、最も簡単で、最速で、かつ最も安全な可能な方法で実施される。アプリケーションが必要とする装置のみに対して、I/Oサービスが与えられる。本発明のアイテニアム(登録商標)の実施形態によって、プロセッサ制御が、簡単なプリエンプティブまたはノン・プリエンプティブ・マルチタスキング(アプリケーションの固定された組の間のもの、ならびに拡張されたアプリケーション、システム、およびプラットフォーム・サービスによって提供されるもの)に対して一般化できることは、当業者にとって明白である。しかし、特定のアプリケーションによって、それ自体をその方法で組織化することが避けられないと見出されるまで、各プロセッサ上での単一スレッドの実行で十分である。
【0195】
システム・サービス750に対するアプリケーション呼び出し、およびシステム・サービス750からの戻りは、各プロセッサにおける同一の単一スレッド上のシステム・サービスの全体において実行される。本発明のアイテニアム(登録商標)の実施形態においては、標準のソフトウェア呼び出し取り決めを用いる。システム・サービス呼び出しによって、制御が、本発明のアイテニアム(登録商標)の実施形態におけるハードウェア特権のより高いレベルで実行されるサービスに移された場合、特権レベル交差は、「入力保護されたコード(Enter Protected Code)」(EPC)ページを用いることによって行われる。図8Aに例示するように、アイテニアム(登録商標)ページ・アクセス権は、TLB.ar810の値7に設定することができる。この値に設定された場合、このようなページに分岐することによって、現在のプロセッサ特権レベル830を、ページに対してTLB.plフィールド820内で設定された値まで上げる(PL数値のレベルは下がる)ことができる。このような特権レベル移行をもたらすために、本発明の1つのアイテニアム(登録商標)の実施形態においては、1つまたは複数のEPCページを用いてもよい。32バイトのアライメントされたエントリー・ポイントが、呼び出し元のハードウェア特権レベルよりも高いレベルで実行しなければならない各サービス呼び出しに対して、このページ内で規定される。アイテニアム(登録商標)アーキテクチャの規定が緻密であるため、EPCページ内のそれぞれの規定されたエントリー・ポイントは、サイクルの中断によって分離される2つの束(それぞれには3つの命令が収容される)からなっていてもよい。ハードウェアepc(入力保護されたコード)命令が有効であるのは、EPCページ内で実行されたときのみであり、このようなページ内で実行されたときには、ハードウェア特権レベルが、EPCページのTLB.plフィールド820によって指定されたように、増加する。epc命令は、第1の束における第3の命令スロットを占めなければならない。この束における第1および第2の命令は、古いハードウェア特権レベルにおいて実行できなければならない。規定されたエントリー・ポイントの第2の束のみに対する誤った呼び出しが起こる可能性を避けるために、第2の束には、その第3の命令位置において、非EPCページに対する分岐が含まれていなければならず、ならびにその第1および/または第2の命令位置において、第1の束におけるepc命令が以前に実行されていなかった場合に例外を生成する命令がなくてはならない。EPCページ内の他のすべての命令は、特権例外を発生させるように設定しなければならない。このように操作することによって、正確な特権移行のみが可能になるということが保証される。
【0196】
ハードウェア割り込みは、命令の第1のEPCページ・バンドルの実行の前に、あるいは命令の第1のEPCページ・バンドルの実行と命令の第2のEPCページ・バンドルの実行との間に、発生してもよい。この結果、割り込みの点において保存されるハードウェア特権レベルのみから、実行が完全なプラットフォーム制御サービス状態に完全に移行していたか否かを決定することは不可能になる。このことは、割り込みから戻るときに状態を復元する方法についての不確定性の原因となる。たとえば、従来のカーネルでは、PL0の割り込まれた特権レベルが、割り込みの点における実行が依然としてアプリケーション・スタックを用いていたか、あるいはカーネル・スタックにすでにスイッチングしていたかを、確実に示すことはない。同様に、本発明のアイテニアム(登録商標)の実施形態においては、PL0の割り込まれた特権レベルが、割り込みから戻るときに保護キー・レジスタに復元する必要がある状態を確実に示すことはない。この不確定性は、以下のステップを取ることによって回避される:(1)割り込みを、第2のEPCページ・バンドル内のrsm(リセット・システム・マスク(reset system mask ))命令を実行することによって無効にする;(2)より高い特権状態への移行の残りの部分は、割り込みが無効にされた状態に留まっている間に行われる;(3)移行の終了を表示するフラッグが、PL0コードのみがアクセス可能なレジスタ内で設定された後でのみ、割り込みを再び有効にする;(4)このフラッグを用いて、割り込みから戻るときに復元すべき状態を決定する;フラッグ自体は、もちろん、実際に戻る前に戻り状態を示すように変更される。
【0197】
特権境界に渡って呼び出す場合、呼び出しは最初に、EPCページ内の適切なエントリー・ポイントに送られる。これについては前述の通りである。EPCページ内のエントリー・ポイントにおける第2の束内のブランチ命令によって、制御がリンケージ・サービス・プラットフォーム制御コードへ転送される。リンケージ・サービス・コードによって、より高いハードウェア特権レベルで動作するコードにとって必要な何らかのさらなるシステム状態が、最初に設定される。このような変更には、保護キー・レジスタに対する変更、または指定されたプラットフォーム制御サービスにパラメータを供給することが、含まれていてもよい。たとえば暗号機能を呼ぶ場合には、これは、保護キー・レジスタが、暗号キー・データ・ページに対するアクセスを可能にするように設定される点である。より高い特権コードの入力は、戻ったときに制御がリンケージ・サービス・コードを再び通過するように、行われる。暗号機能の例の場合には、これは、暗号キー材料へのアクセスを可能にする保護キーが無効にされる点である。またリンケージ・サービスは、本来の呼び出し元へ戻る前に、割り込みの発生によって呼び出すべきコードに制御を送る機会を、戻ったときに有する。このメカニズムは、DISRおよび他のEVルーチンを呼び出すために用いられる。このような動作に対して、リンケージ・サービスは以下のことを行う:(1)制御が後で呼び出し元に戻れるように、十分な状態を保持する;(2)DISRまたは他のEVルーチンへの呼び出しを実行する;(3)DISRまたはEVルーチンから戻ったら、保存されたシステム状態を復元して、本来の呼び出し元に戻る。
【0198】
ハードウェア割り込みは一般に、2つの別個のクラスに分類される。第1は、本明細書において「例外」と呼んでもよいが、特定の命令を実行する結果起こる割り込みである。これらの割り込みは、例外の原因となる命令を実行することと同期して行われる。第2は、本明細書において「割り込み」と呼んでもよいが、任意の時点(通常はタイマまたはI/O割り込み)で起こってもよい割り込みである。両方のタイプの割り込みは、同一のハードウェア・メカニズムによって取り扱われるが、ソフトウェアは、全く異なる方法で2つのクラスの割り込みに対処する。例外の場合、プラットフォーム割り込みおよびリンケージ・サービスは即座に、制御を、同一のハードウェア特権レベルにおけるEVエントリーに、あるいは他のシステム・コードに送って、最初に例外に対処し、戻る。割り込みの場合、システムは最初に、1つまたは複数のISR、DISRを呼び出さなければならない場合があり、また他の待ち状態の割り込み(それらの関連するISRおよびDISRを含む)をすべて、制御を割り込みの点に戻す前に、取り扱うことも試みる。
【0199】
例外の取り扱いは、概念的には簡単である。リンケージ・サービスによって、例外の点に戻るために後で必要となるシステム状態が保存される。次に、EVルーチンまたは他のシステム例外取り扱いコードに対して呼び出しがなされる。例外取り扱いコードから戻ったら、リンケージ・サービスは、状態を復元して、例外の点へ戻る。割り込みの場合、割り込みが起こる点において、システムは、何らかのハードウェア特権レベルで実行している場合があることが考えられる。次に、割り込み制御サービスおよびリンケージ・サービスが最初に協同して、制御を1つまたは複数の割り込みサービス・ルーチンへ送る。ISRが実行される間、さらなる割り込みは無効にされたままである。またISRを、一部のハードウェア特権レベル(たとえばPL1およびPL0)のみで実行することに限定してもよい。ISRが実行される間、通常はISRによって、関連する延期された割り込みサービス・ルーチンを後で実行するように状態が設定される。ISRの実行は、種々のソフトウェア・スタックおよび種々のRSEスタックを用いて行われる。割り込みサービス・ルーチンによって、制御をこれらのスタックに切り換えて、ISRルーチンを呼び出す。実行している間、ISRルーチンが他のシステム・サービスを、ISRルーチンのみによって呼び出され得る別個のEPCページを用いて、呼び出してもよい。一旦、特定の割り込みに対するISRルーチンが実行されたら、割り込みサービスは他の待ち状態の割り込みを探す。他の割り込みが見つかたら、割り込みおよびリンケージ・サービは、その新しい割り込みに対してISRルーチンの実行を開始する。待ち状態の割り込みがすべて処理されるまで、処理はこのようにして続く。一旦、すべてのISR機能が実行されたら、通常のソフトウェアおよびRSEスタックが復元され、制御はリンケージ・サービスを通って戻り、割り込みは再び有効にされる。割り込みの実際の点に最後に戻る前に、リンケージ・サービスは最初に、対応するISRが設定する状態によって始動されたDISRルーチンのそれぞれに、制御を送る。
【0200】
本発明のアイテニアム(登録商標)の実施形態では、従来のULWシステムにおいて、特権命令によって本来は実行されていた機能を、プラットフォーム制御サービスに対する呼び出しによって行う。このことによって、このような呼び出しを行うことでシステムを悪意により攻撃できる可能性が広がる。このような攻撃を排除するために、システムおよびアプリケーションが、システム・サービスに対する許可された呼び出しを指定すること、およびこのような呼び出しが実行されたときに呼び出し元を認証することを可能にする構造が、設けられる。構造は、以下の事実を前提としている。(1)コード・イメージが実行専用ページ内にある;(2)すべてのコード・イメージ暗号が、デジタル署名によって認証されている;(3)CEローダ自体も、デジタル署名によって認証されている;(4)CEローダは、すべての実行可能なコードを走査して、デジタル署名の妥当性を確認し、RSEを危うくし得る命令を検出することができる;(5)CEローダはまた、特権サービスへのすべての呼び出しを識別することができる;(6)CEローダは、認証を支援するために、負荷時間においてランダム情報を供給することができる。
【0201】
当業者にとっては、重要なシステムおよびプラットフォーム機能に対するこのような呼び出しの妥当性確認をもたらす手段が複数存在することは明らかである。本発明の1つのアイテニアム(登録商標)の実施形態においては、以下のアプローチが採用される。
【0202】
1.Cプログラマおよびアセンブリ言語プログラマの両方にマクロを与えて、重要なサービス呼び出しを作るために用いる。これらのマクロによって、CEローダが検出することができる認識可能なパターンを伴うコード・スケルトンが生成される。またスケルトンによって、呼び出されている特定の重要なサービスの識別が可能になる。
【0203】
2.規定されているサービス呼び出しの1つは、プログラム制御フローがプログラムの特定の点に到達したことを簡単に登録する機能を有する。この呼び出しのパラメータは、ネスティング・レベルを示す整数である。この呼び出しの第2のパラメータは、CEローダによって生成されアイテニアム(登録商標)命令内に書き込まれる64ビット乱数である。
【0204】
3.他の規定されているサービス呼び出しは、初期のプログラム制御フロー登録エントリーを簡単に消去する機能を有する。この呼び出しに対するパラメータは、登録を消去すべき登録呼び出しに対する仮想ポインタであってもよい。あるいは、この呼び出しは、ネスティング・レベル・パラメータのみを有していてもよい。
【0205】
4.他の重要なサービス呼び出しは、特定の呼び出しを識別するために用いられる整数パラメータを有している。ローダは、この整数パラメータを生成して、それを実行可能な命令内に挿入し、すべてのサービス呼び出しのテーブルを構築し、この特定の呼び出しに対するエントリーを、この整数によって識別されるエントリーに配置する。第2のパラメータは、バック・ドミネーティング登録または機能呼び出しに対する仮想ポインタである。バック・ドミネーティング呼び出しとは、最終的に現在の呼び出しに到達するプログラム・フローにおいて、常に早めに実行されている呼び出しである。概念的には、各サービス呼び出しは、バック・ドミネーティング呼び出しを識別して、制御フローが正当なプログラム経路を介して重要なサービス呼び出しに到達したことを保証する。第3のパラメータは、ローダによって生成され機械語命令に挿入される他の64ビット乱数である。第4のパラメータによって、バック・ドミネータ登録の処置が指定される。
【0206】
CEローダは、必要な乱数を登録呼び出しに与え、それぞれの重要なサービス呼び出しに対する整数値を識別する。次にローダによって、許可された呼び出しのテーブルが生成される。このテーブルは、プラットフォーム・リンケージ・サービスによって、呼び出しを認証するために用いられる。
【0207】
登録呼び出しが行われると、ローダが与えた乱数が、登録呼び出しによって指定されるネスティング・レベルにおいて経路識別テーブル内に書き込まれる。登録取り消し呼び出しが起きたときには、経路識別テーブルに以前に書き込まれた乱数は、登録呼び出しが指定するネスティング・レベルにおいてゼロに設定されて、現在登録済みの経路がないことを示す。
【0208】
機能呼び出しが行われると、整数識別子パラメータを用いて、ローダが生成した呼び出しテーブルにアクセスする。呼び出しテーブル・エントリーには、以下のものが含まれている。(1)機能呼び出しの仮想の戻りアドレス;(2)指定されたバック・ドミネータ呼び出しによって登録済みの乱数;(3)バック・ドミネーティング登録に対して指定された経路テーブル内のネスティング・レベル;(4)CEローダによって生成された第2の乱数;(5)バック・ドミネータ登録エントリーの処置を指定するパラメータ。代替的な実施形態においては、このパラメータは、呼び出しテーブルの一部ではなくて、呼び出しによって与えられてもよい。
【0209】
図14は、本発明のアイテニアム(登録商標)の実施形態において実施される呼び出し認証のフロー・ダイアグラムである。この実施形態によれば、重要なサービス呼び出しの認証は、以下のステップで進む。
【0210】
1.前述したEPC処理は、ブロック1410で行われる。これによって、ハードウェア特権レベルはPL0に引き上げられ、割り込みは無効にされ、制御はリンケージ・サービスに移される。
【0211】
2.ブロック1420では、リンケージ・サービスによって特権状態フラッグが、処理が以前のハードウェア特権レベルから移行したことを示すように設定される。次に、呼び出されているさらに高い特権サービスが必要とする任意のPKRを設定してもよい。
【0212】
3.実際の仮想戻りアドレスを、呼び出しテーブルからの仮想戻りアドレスと、判定ブロック1430で比較する。アドレスが異なる場合には、認証は失敗する(1470)。
4.呼び出しテーブル・エントリーからの乱数を、経路テーブル内の指定されたネスティング・レベルにおける乱数と比較する(1440)。数が異なる場合には、認証は失敗する(1470)。
【0213】
5.認証に失敗した場合には、プラットフォーム・リンケージ・サービスによって誤差イベントが生成される(1480)。誤差イベントは、システムまたはアプリケーションに報告され得る。このレベルの誤差の重大さの場合には、アプリケーションは通常、低下した動作状態に入るか、あるいはソフトウェア・リセットおよび再始動システム・サービス呼び出しを実行する。
【0214】
6.一旦、認証に成功したら、呼び出しテーブルを、呼び出しテーブル・エントリーからの処置パラメータによって指定されるように、変更する(1450)。処置には通常、以下のものが含まれる:変更は含まれないこと;バック・ドミネータ登録を削除すること;バック・ドミネータ登録を呼び出しテーブル乱数と入れ替えること;次のネスティング・レベルにおける呼び出しテーブル乱数を経路テーブル内に挿入すること;または他のアプリケーション依存性の処置。一般的に、処置は、各アプリケーションに対して特別仕立てすることができる。一旦、処置処理が終了したら、制御は、呼び出されたサービスに送られる(1460)。

I/Oロジスティックスおよびセキュリティ
CEのI/Oサービスの設計に対する指導原理は、「ゼロ移動」である。これは、I/Oが、可能ならばいつでも、内部のシステム・バッファまたは任意の中間のバッファを用いることを回避することを意味する。データ移動が避けられない場合には、データ移動を、できることなら、データの他の処理、たとえば圧縮、復元、暗号化、または復号化と組み合わせる。本発明の実施形態では、この基本原理に従うCEのI/Oサービスを用いる。
【0215】
第2の指導原理は、I/Oサービスが、CEによってサポートされている特定のアプリケーションが必要とするI/Oのタイプに対してのみ提供される、ということである。これは、ULWシステムが採用するアプローチとは対照的である。このシステムで提供される構造は、I/Oドライバおよびファイル・システムの連続的に増大するポピュレーションに適応して、アプリケーションが、オペレーティング・システムの抽象化を利用できるようにし、任意の好適なI/Oデバイス上でI/O機能が実行されるようにできるものである。これは、ULWシステムが採用する原理を軽視するものではない。それらは、重要でありかつ非常に功を奏している。目的として、最も簡単であること、可能な限り速度が速いこと、かつセキュリティ脆弱性がないことを掲げると、結論として異なったものになり得るという事実を強調することは難しくない。
【0216】
本発明のアイテニアム(登録商標)の実施形態を、ウェブ・アプリケーションに対して用いるという特に重要な事例は、ネットワークI/Oトラフィックに対するデータ・ロジスティックスである。パケットは、様々な順番で到着してもよい:一部は、新しい接続の始まりを示してもよい;他は、リクエストまたは応答の完全なデータ・ペイロードを収容していてもよい;さらに他は、リクエストまたは応答の一部のみを収容していてもよい;ペイロードによっては、圧縮または復元および暗号化または復号化を、完全性の妥当性確認とともに必要としてもよい;他は、特定のプロトコルの方式の要素として用いられる中間のパケットであってもよい;さらに他は、システム障害に対する意図を伴って、またはシステムを無力にするためにおよびシステムがその指定された機能を行えないように、悪意により送られていてもよい。
【0217】
本発明の好ましいアイテニアム(登録商標)の実施形態では、ネットワーク・トラフィックを取り扱うための2つの可能なアプローチの一方を採用することが予想される。第1のアプローチは、特定のハードウェア・プラットフォームに内蔵されているかまたはプラグ接続されたネットワーク・インターフェース・コントローラ(NIC:Network Interface Controller)に対する最も薄いネットワーク・プロトコル・スタックおよび可能な最も簡単なドライバを提供する。これらのドライバは、「ソケット・ライクな(socket-like )」プロトコルの拡張されたおよび非同期の拡張機能をサポートしてもよく、また特定のアプリケーションに対して不可欠であるものを超えるいかなるプロトコルに対してもサポートする必要がなくてよい。第2のアプローチは、1つまたは複数の別個のプラグ・イン・ボードを用いることである。このようなボードはたとえば、機能的なオフロード・ボード(より高いレベルのインターフェースをサポートしてもよく、およびより多量のネットワーク負荷に対処するためにさらなる処理サイクルを用いてもよい)、または安全な起動を助けるためだけに設計されたボードである。両方の場合において、設計は、「ゼロ移動」原理によってガイドされる。
【0218】
現在の主要な多目的オペレーティング・システムは、I/Oドライバからのセキュリティ攻撃の被害を、非常に受けやすい。現在のULWシステムでは、I/Oドライバは、システムの最高のハードウェア特権モードにおいて実行される。これらのドライバの1つまたは複数における悪意な行為に対しては、いかなる防御も存在しない。I/Oドライバは現在、I/Oコントローラに命令しおよびこれと通信するときに物理アドレスを取り扱わなければならないため、ハードウェア仮想アドレス指定メカニズムが提供するいかなる保護も、容易に回避されてしまう。 この問題に対する現在のアプローチは、I/Oドライバにデジタル的に署名することで、「良好な人物」がドライバに書いたことおよびその人物の完全性が保持されていることの証明を試みることである。ドライバがサインされていることによって、ドライバが、その著者が書き込んだインストレーションのために到着したことが保証される。しかし、署名者が善良な人物であるということを受け入れることは、盲目的に信頼するという問題が残る。実際には、システム管理者は、デジタル署名キーのオーナーを完全に信頼するか、そうでなければ、管理者のシステムにドライバをインストールしないことを決定することを、強いられる。それは、巧みな選択でも安全な選択でもない。「デジタル的に署名したから、善良な人物を信頼せよ」という原理は、安全な解決方法としては不十分である。
【0219】
残念ながら、I/Oコントローラのアーキテクチャ、およびほとんどの所有プロセッサ・ベースのおよび業界標準プロセッサ・ベースのプラットフォームのアーキテクチャは、安全なI/Oドライバを保証する手段を考案する際の助けにはほとんどならない。仮想アドレス指定がメモリに対して与えるのと同一の保護が、まさにI/Oに対してもぜひ必要なものである。ドライバが物理メモリ・アドレスを取り扱わなければならない限り、ハードウェア・プラットフォームのメイン・メモリ内にあるものは何も、I/Oドライバ・コードにおける考えられる悪意な行為から、あるいはその事柄に対するバグから、保護することはできない。前記で引用したシャミールおよびファン・ソメーレンの論文では、物理メモリを走査する間に公開および秘密暗号キーを見出す簡単なアルゴリズムについて説明していた。
【0220】
図16は、本発明のアイテニアム(登録商標)の実施形態におけるソフトウェア安全なI/Oハードウェア制御サービスを例示するフロー・ダイアグラムである。本発明の好ましいアイテニアム(登録商標)の実施形態において、I/Oドライバを保護するために取られるアプローチは、以下の通りである。
【0221】
1.すべてのドライバを、PL1において、システム制御サービスとして実行させる。
2.すべてのドライバを、仮想アドレスのみを用いて動作させる。
3.PL1から、I/Oアダプタがマッピングされる仮想および物理アドレスへのアドレス指定能力を、設けない。
【0222】
4.できるだけ小さくて、簡単で、かつ理解できるプラットフォーム・ハードウェアI/O制御サービスのみにおいて、すべてのハードウェアI/Oアダプタに対する実際の読み出しおよび書き込みを行う(1640)。
【0223】
5.プラットフォーム・ハードウェアI/O制御サービス内のすべての仮想−物理または物理−仮想アドレス変換を行い、すべての仮想アドレスが、I/Oバッファに対して割り当てられたメモリ領域内に含まれることを保証する(1640)。
【0224】
6.プラットフォーム・ハードウェアPO制御サービスに対するソース・コードを公開して、同業者による評価を確実に受ける。
7.単に仮想アドレスを用いるだけでI/Oドライバを許可するアーキテクトされたソフトウェア・インターフェースを規定して、I/O制御アダプタに対する実際の読み出しおよび書き込みをもたらすI/Oプラットフォーム制御サービスに対するエンコードされた方向を与える(1610,1620)。
【0225】
8.このようなエンコードされた方向において、ハードウェア・アダプタ制御レジスタ・アドレスを間接的に指定し、プラットフォームI/Oハードウェア制御サービス内に含まれるアダプタの記述子を用いる(1650);I/O指令をエンコーディングした後に、認証された呼び出し(前述)を、I/Oハードウェア制御サービスに対して作成する(1630および1660)。
【0226】
9.物理アドレスを収容するメモリ・データ構造の場合には、I/Oドライバが以下のことを行えるサービスを提供する:(1)仮想アドレスを用いてデータ構造を構築することができるデータ・ページに対するアドレス指定能力を得る;(2)データ・ページの所有権をI/Oハードウェア制御サービスへ戻す。ここでは、時間サービスによって、仮想アドレスが物理アドレスに変換され、アドレスが、I/Oバッファに対して割り当てられたメモリ領域内に含まれることが、保証される(1640);(3)I/Oアダプタから読み出された任意の物理アドレスを変換して仮想アドレスに戻し、この仮想アドレスをI/Oドライバに戻す(1640)。本発明のアイテニアム(登録商標)の実施形態のメモリ組織によって、変換をどちらかの方向で行うことができる。一方の方向では、アイテニアム(登録商標)tpa(物理アドレスへの変換(translate to physical address ))命令を用いることができる。他方の方向では、I/Oバッファに対して割り当てられたページの開始物理アドレスのバイナリ・サーチを用いることができる。
【0227】
実際には、この設計アプローチによって、I/Oドライバを必要とし、かつ仮想メモリ・アドレスのみを用いてI/Oドライバが機能することを可能にする強制されるソフトウェア・インターフェースが、規定される。これによって、I/Oドライバが物理メモリ・アドレスを用いることが回避され、悪意によるI/Oドライバからのセキュリティ露出が閉じられる。その結果、重要な秘密データ、たとえば暗号化キーおよびキーイング材料、安全なポリシ・データ・ベース、およびランダム・データが、仮想メモリ・コンパートメント内に長時間、安全に存在することができる。

安全な起動、安全なローディング
将来のシステムは、安全に起動する能力を有することが予想される。安全に起動することの意味は、制御が、最初にオペレーティング・システム・ローダに、あるいはCEローダに渡されるときに、ローダのインプリメンタは、以下の事実に基づいてもよいということである。すなわち、ローダは、実行を開始するときに、システムの完全制御を有していること、その完全性が保証されること(コードはどんな方法によっても変更されていない)、およびローダに対する実行経路は、完全性も保証されたファームウェア・コード・モジュールのみを通過すること、である。安全に起動するための可能な1つの実施形態が、「オペレーティング・システムおよびカスタマイズされた制御プログラムとインターフェースする安全な装置プラットフォーム(Secure Machine Platform that Interfaces to Operating Systems and Customized Control Programs)」と題された、米国特許出願第10/118,646号明細書、2002年12月19日公開、公開番号1002/0194389A1(「646明細書」)において記載されている。なおこの内容は、本明細書において参照により全体として取り入れられている。「646明細書」の実施形態では、「信頼の連鎖」について説明されていた。これは、実行すべき第1のファームウェア・モジュールの完全性のハードウェア妥当性確認から始まり、その拡張は、第1のモジュールおよびその後の各モジュールに、その後継モジュールの完全性が妥当であることを、そのモジュールへ制御を渡す前に確認させることによってなされる。「646明細書」で説明された実施形態における妥当性確認では、暗号のデジタル署名を利用している。
【0228】
現在のハードウェア・プラットフォームでは、起動したときにこのような信頼の連鎖は確立されない。起動時にこのような信頼の連鎖を確立するハードウェア・プラットフォームが利用可能となるまで、CEローダ、コード、およびデータ・イメージの完全性を確立するための1つのオプションには、信頼の連鎖の新しいルートをCEローダにおいて確立することが含まれる。一旦、CEローダの完全性が確立されたら、その完全性は、信頼の連鎖をCEのすべてのモジュールを通して拡張することが、モジュールのデジタル署名の妥当性を確認することによって可能である。
【0229】
本発明のアイテニアム(登録商標)の実施形態では、信頼の連鎖を拡張することができるローダを用いる。一旦、ハードウェア・プラットフォームが安全に起動できれば、オペレーティング・システムおよび同時CEの安全な起動およびロードが、あるいはCEのみの安全な起動およびロードが、実現されることになる。ハードウェア・プラットフォームが安全に起動できるときまで、本発明のアイテニアム(登録商標)の実施形態では、CEローダにおける信頼のレベルを増加させるための代替的なアプローチを取ってもよい。
【0230】
1.物理的なセキュリティが強制されるインストレーションでは、EFIユーティリティを設けることで、内部の主プロセッサ・ファームウェアの暗号ハッシュ、およびCEローダの小さな第1フェーズの暗号ハッシュを、算出および印刷することができる。最初の実行の際に、このユーティリティが算出したハッシュ値を、人間が読取可能な形態で記録することもできるし、あるいは管理システムへ送信することもできる。その後の起動に対しては、あるいは周期的なサンプリングに対しては、このユーティリティを再び実行して、CEを起動する前に本来の値と比較することができるハッシュを生成することができる。これは、システムの内部ファームウェアおよびCEローダの完全性の妥当なチェックである。ユーティリティおよびCEシステムは、CDROM上で分散させることができるが、これは、安全に保持されなければならない。システムがULWオペレーティング・システムも起動できる場合には、ユーティリティのバージョンを、オペレーティング・システムの下で実行して、EFIバージョンによって生成された値をクロス・チェックすることができる。これは、CEローダにおける確かさを高めるが、信頼の新しいルートを確立するには至らないアプローチである。
【0231】
2.システムに、バス・マスタとすることができ、かつカスタマイズされた読み出し専用プログラムを収容可能な別個のプラグ・イン・ボードが収容されている場合には、信頼のルートを、図17AによるCEローダの小さな第1のフェーズに対して確立してもよい。この例では、CEローダの小さな第1のフェーズが、EFIファームウェアによって、ブロック1705においてロードされる。一旦、ロードされると、第1のフェーズは、第1の信号を別個のプラグ・イン・ボードへ送った後に、アンキャッシュされたメモリ内で実行される第1の無限ループに入ってもよい(1710)。別個のプラグ・イン・ボードは、最初に、システム・ファームウェアを走査して、そのデジタル署名を検証し、次に、CEローダの第1のフェーズのコード・イメージを読み出して、そのデジタル署名を検証してもよい。一旦、これらの署名が検証されると、別個のプラグ・イン・ボードは、次に、1つまたは複数の命令をアンキャッシュされたメモリ内に書き込み、最後に、第1の無限ループ分岐を上書きして無限ループを終了させる(1715)。別個のプラグ・イン・ボードによって書き込まれる命令には、別個のプラグ・イン・ボードによってメモリに書き込まれる命令内で提供される乱数にアクセスする命令(1715)、この乱数を含む第2の信号を別個のプラグ・イン・ボードに送り、第2の無限ループに入る命令(1720)が含まれていてもよい。別個のプラグ・イン・ボードは、第1の無限ループを終了させるために命令を書き込むときと第2の信号を受け取るときとの間の継続時間を調整してもよい。継続時間が十分に小さいことおよび供給されたばかりの乱数が受け取られたことが示すのは、第1の無限ループを終了させて継続するために別個のプラグ・イン・ボードによって書き込まれた命令が、実行されるということである(1725)。これらの条件が満たされる場合には、次に別個のプラグ・イン・ボードによって、第2の無限ループを終了させるための命令が書き込まれる(1725);別個のプラグ・イン・ボードによって同時に書き込まれた他の命令が、CEローダの第2および最後のフェーズを固定された物理アドレスでロードするファームウェアを呼び出す;CEローダの前記第2のフェーズのデジタル署名が妥当であると確認する(1730);前記第2のフェーズへ制御を移す(1735)。この点から、CEローダは信頼の連鎖を拡張する。
【0232】
3.外部カード上のプログラム記憶域のみを読み出す物理的なセキュリティを保証しなくてはならない。しかし、起動プロセスは、手動のステップを必要とするのではなく、自動的である。別個のプラグ・イン・ボードが、システム・ファームウェアまたはローダのデジタル署名の妥当性を確認できないということを決定した場合には、第1または第2の無限ループを終了させるために生成された命令によって、システムが、誤差メッセージを印刷しおよび起動プロセスを終了させる。
【0233】
4.当業者にとって、第2のアプローチの可能な変形が数多く存在することは明らかである。たとえば、前述したプロセスを分割してより多くのフェーズにするか、主プロセッサと別個のプラグ・イン・ボードとの間のプロトコルを変更もしくは装飾するか、あるいは主プロセッサもしくは別個のプラグ・イン・ボード内の内蔵されたセキュリティ・チップを用いる等である。
【0234】
ハードウェア・プラットフォームが、安全に起動する能力を有するまで、前述したアプローチを物理的なセキュリティと組み合わせたものは実行可能であるように思われる。これは、特に、前述したように使用される別個のプラグ・イン・ボード内の起動コードが、読み出し専用メモリ内に完全に存在できる場合に、そうである。
【0235】
本発明のアイテニアム(登録商標)の実施形態において、CEローダの第1のフェーズのみのデジタル署名についてその妥当性を確認する理由は、EFIプログラムは、予測不可能な物理アドレスにおいて、ロードしてもよいし、再配置してもよいし、かつファームウェアによって実行してもよいからである。事実上、このことは、フル・ローダのロードしたイメージには、定まったデジタル署名はないことを意味する。署名は、各物理的ロード・アドレスに対して異なっている。この問題は、CEローダの小さな第1のフェーズに対しては、そのコードを十分簡単に作ることによって、回避することができる。一旦、第1のフェーズの妥当性が確認されたら、第1のフェーズは次に、EFIに命令を出して、特定の物理アドレスにおいてロードすべきCEローダの完全な第2のフェーズを、ロードさせることができる。その結果、第1のフェーズが、第2のフェーズのデジタル署名について妥当であると確認することができる。
【0236】
前述の明細書において、本発明を、その特定の実施形態を参照して説明してきた。しかし、本発明のより広い趣旨および範囲から逸脱することなく種々の変更および変形を行ってもよいことが、明らかである。したがって明細書および図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。
【図面の簡単な説明】
【0237】
【図1】本発明の実施形態を利用することができるコンピュータ・システムの例を示す図。
【図2A】システム資源のパーティショニングを概念的に例示する図。
【図2B】システム資源のパーティショニングを概念的に例示する図。
【図3】本発明の一実施形態によるSGPOS、システム資源、およびCの間の関係を概念的に例示する図。
【図4】本発明の一実施形態によるSGPOS起動処理、C初期化、およびSGPOS処理を概念的に例示する簡略化されたフロー・ダイアグラム。
【図5】本発明の一実施形態によるSGPOS起動処理およびC初期化を概念的に例示する簡略化されたブロック・ダイアグラム。
【図6】A:本発明の一実施形態による安全なウェブ・サーバ機能性を提供するように構成されたコンピュータ・システムを概念的に例示する図。この図では、SGPOSは、システム資源のパーティションの制御を保持している。B:本発明の代替的な実施形態による安全なウェブ・サーバ機能性を提供するように構成されたコンピュータ・システムを概念的に例示する図。この図では、SGPOSは、休止状態に配置され、システム資源の完全な制御をCEに引き渡している。
【図7】本発明の一実施形態によるCE内のサービスの間の関係を概念的に例示する図。
【図8A】本発明のアイテニアム(登録商標)の実施形態において指定され得るページ・アクセス権のダイアグラム。
【図8B】本発明のアイテニアム(登録商標)の実施形態における保護キー・レジスタのコンテンツのダイアグラム。
【図9A】第1世代の多目的オペレーティング・システム、たとえばIBMシステム/360におけるDOSオペレーティング・システムによるコードまたはデータの物理的にアドレス指定されたセクションの組織を概念的に例示する図。
【図9B】従来の多目的オペレーティング・システム、たとえばULWシステムによるコードまたはデータの仮想的にアドレス指定されたセクション、および物理ページに対するそれらのマッピングの組織を概念的に例示する図。
【図10A】本発明のアイテニアム(登録商標)の実施形態における仮想的および物理的にアドレス指定されたページのマッピングを概念的に例示する図。
【図10B】本発明の1つのアイテニアム(登録商標)の実施形態による物理ページの実際の組織を例示する例を示す図。
【図11A】本発明のアイテニアム(登録商標)の実施形態におけるソフトウェア・スタックおよびレジスタ保存エンジン・スタックに対して割り当てられるページを、関連する保護設定とともに示す、簡略化されたダイアグラム。
【図11B】本発明のアイテニアム(登録商標)の実施形態におけるソフトウェア・スタックおよびレジスタ保存エンジン・スタックに対して割り当てられるページを、関連する保護設定とともに示す、簡略化されたダイアグラム。
【図12】本発明のアイテニアム(登録商標)の実施形態におけるアプリケーションに関連するエントリ・ベクタを示す簡略化されたダイアグラム。
【図13】本発明の一実施形態によるプライオリティ・コミュテータを用いたアプリケーション論理フローを概念的に例示する簡略化されたダイアグラム。
【図14】本発明のアイテニアム(登録商標)の実施形態において実施される呼び出し認証を示すフロー・ダイアグラム。
【図15】本発明のマルチ・プロセッサ実施形態における仮想的にアドレス指定された資源の局所的および大域的なマッピングを示すダイアグラム。
【図16】本発明のアイテニアム(登録商標)の実施形態におけるソフトウェア安全なI/Oハードウェア制御サービスを例示するフロー・ダイアグラム。
【図17A】本発明のアイテニアム(登録商標)の実施形態に対する安全な起動処理を例示するフロー・ダイアグラム。
【図17B】本発明のアイテニアム(登録商標)の実施形態に対するCEフェーズ2ローダ処理を例示するフロー・ダイアグラム。
【図17C】本発明のアイテニアム(登録商標)の実施形態に対するCE初期化処理を例示するフロー・ダイアグラム。

【特許請求の範囲】
【請求項1】
カスタマイズされた実行エンジン(CE)であって、
アプリケーションのコードおよびデータ・セクションと、
システム・サービスの組のコードおよびデータ・セクションと
を備え、前記システム・サービスの組は、並列保護アーキテクチャを実施する1つまたは複数のプロセッサを含むコンピュータ・システムのハードウェア資源の組の直接的かつ完全な制御を有する、カスタマイズされた実行エンジン(CE)。
【請求項2】
請求項1に記載のCEであって、従来のオペレーティング・システムによってサポートされていない能力を含むコンピュータ・システムの能力を完全に使用するCE
【請求項3】
請求項1に記載のCEにおいて、前記システム・サービスの組は、前記アプリケーションによって必要とされるサービスのみに厳密に限定される、CE
【請求項4】
請求項1に記載のCEにおいて、前記アプリケーションは、前記CEによって制御される各プロセッサにおいて単一スレッドの実行のみを利用する制御フロー構造を実施する、CE
【請求項5】
請求項1に記載のCEにおいて、前記システム・サービスの組によって、前記アプリケーションが、システム・エラーの後で再生して継続できる、CE
【請求項6】
請求項1に記載のCEにおいて、前記アプリケーションおよび前記システム・サービスの組は非移植性である、CE
【請求項7】
請求項1に記載のCEにおいて、前記システム・サービスの組は多目的オペレーティング・システムの抽象化を利用しない、CE
【請求項8】
請求項1に記載のCEにおいて、前記システム・サービスの組は、多目的オペレーティング・システムによって用いられるものとは全く異なる資源管理ストラテジを用いる、CE
【請求項9】
方法であって、
カスタマイズされた実行環境(CE)ローダが、並列保護アーキテクチャを実施する1つまたは複数のプロセッサを用いて、コンピュータ・システムの物理メモリの利用可能な物理ページを、前記物理メモリのマップに基づいて可能な最大のページに組織化すること、前記コンピュータ・システムのプロセッサによってサポートされる所定の複数のページ・サイズを用いること、
を備える方法。
【請求項10】
請求項9に記載の方法であって、更に、
CEおよび該CEのアプリケーション要素によって用いられる仮想ページの数を低減することによって、ならびに前記所定の複数のページ・サイズのページを前記CEおよび前記アプリケーションのセクションに、該セクションのメモリ要求に基づいて、かつ利用可能な物理ページの組織に基づいて割り当てることによって、変換索引バッファ(TLB)ミスを実質的に低減すること、
必要に応じて必要以上に大きなページを再分割すること、
を備える方法。
【請求項11】
請求項10に記載の方法であって、更に、前記割り当てられたページをTLBエントリーに固定することによってTLBミスを除去することを備える方法。
【請求項12】
請求項9に記載の方法であって、更に、前記セクションを複数のコンパートメントにグループ分けすることを備え、該複数のコンパートメントのそれぞれのページは、特権レベル、アクセス権、保護識別子、および他の保護キー・レジスタ制御ビットによって保護される、方法。
【請求項13】
方法であって、
カスタマイズされた実行エンジン(CE)ローダが、
コンピュータ・システムのファームウェアに関連する1つまたは複数のデジタル署名の妥当性を確認し、
前記CEローダに関連する1つまたは複数のデジタル署名の妥当性を確認し、かつ
前記妥当性の確認、および前記CEのコードおよびデータ・セクションに関連する1つまたは複数のデジタル署名の妥当性確認の終了が成功した後に、前記CEのシステム・サービスおよびアプリケーションを開始すること、
によって、信頼の新しいルートを確立し、信頼の連鎖を新しいルートから前記CEへ拡張すること、
を備える方法。
【請求項14】
請求項13に記載の方法において、前記CEおよびアプリケーションが実行されるコンピュータ・システムの各プロセッサは、並列保護アーキテクチャを実施する、方法。
【請求項15】
請求項13に記載の方法であって、更に、
前記コンピュータ・システム内にロードされて開始された後に、前記CEローダの第1の部分が、前記ファームウェアに関連する前記1つまたは複数のデジタル署名の妥当性確認と、前記1つまたは複数のデジタル署名のうちの、前記CEローダの前記第1の部分に関連する第1のデジタル署名の妥当性確認とを開始すること、
前記ファームウェアに関連する前記デジタル署名と前記第1のデジタル署名とが妥当であると分かった場合に、前記CEローダの前記第1の部分がさらなる妥当性確認を開始すること、
さらなる妥当性確認が行われた後に、前記CEローダの前記第1の部分が、
前記CEローダの第2の部分をロードするとともに、
前記1つまたは複数のデジタル署名のうちの、前記CEローダの前記第2の部分に関連する第2のデジタル署名の妥当性を確認すること、
前記第2のデジタル署名が妥当であると分かった場合に、制御を前記CEローダの前記第2の部分へ移すこと、
を備える方法。
【請求項16】
請求項15に記載の方法であって、更に、
前記さらなる妥当性確認を開始する前に、前記CEローダの前記第1の部分が、前記コンピュータ・システムとは独立に機能する別個のプラグ・イン・ボードから乱数を受け取ること、を備え、
前記さらなる妥当性確認は、前記さらなる妥当性確認および前記CEローダの前記第1の部分によって返される前記乱数の妥当性確認の開始が被る遅延についての前記別個のプラグ・イン・ボードによる妥当性確認を備える、
方法。
【請求項17】
請求項15に記載の方法において、
前記ファームウェアの前記1つまたは複数のデジタル署名および前記第1のデジタル署名の妥当性は、前記コンピュータ・システムとは独立して機能する別個のプラグ・イン・ボードによって確認される、方法。
【請求項18】
請求項15に記載の方法において、
前記CEローダの前記第2の部分をロードすることは、前記CEローダの前記第2の部分を、前記コンピュータ・システムのメモリにおける固定されたアドレスでロードして、前記CEローダの前記第1の部分による前記第2のデジタル署名の妥当性確認を容易にすることを備える、方法。
【請求項19】
方法であって、
カスタマイズされた実行環境(CE)が、前記CEが完全に制御するコンピュータ・システムの各プロセッサ上に、前記CE内においてアプリケーションとシステム・サービスの組とを実行するための単一スレッドのみを提供すること、
前記アプリケーションが、通常のアプリケーション・タスク、および前記アプリケーションの外部のイベントの結果として発生するタスクの両方を、各プロセッサ上の前記単一スレッドのみを用いて実行すること、
を備える方法。
【請求項20】
請求項19に記載の方法であって、更に、
割り込みに応答して、割り込み制御サービスが、前記単一スレッドの制御を受け取ること、前記単一スレッドの制御が、最初は、前記割り込みに対応する1つまたは複数の割り込みサービス・ルーチン(ISR)となり、後に、1つまたは複数の延期された割り込みサービス・ルーチン(DISR)となるように、状態を設定することを備える方法。
【請求項21】
請求項19に記載の方法であって、更に、
I/Oドライバの最小の組のI/Oドライバが、仮想アドレスを用いることによってのみ動作し、I/O動作を行うために必要なステップを指定するエンコードされた指令を生成すること、
前記I/Oドライバが、プラットフォーム制御サービスを呼び出して、I/Oデバイスを制御すること、
を備え、前記プラットフォーム制御サービスは、前記I/Oドライバが供給する前記エンコードされた指令に従うことによって物理アドレスを用いる、方法。
【請求項22】
方法であって、
呼び出し元が、カスタマイズされた実行環境(CE)内で実行すること、
前記呼び出し元が、前記CEのシステム・サービス呼び出しを呼び出すこと、
前記システム・サービス呼び出しが、アプリケーションによって前記システム・サービス呼び出しに関連する呼び出し戻りアドレスが検証されることを引き起こすこと、
を備える方法。
【請求項23】
請求項22に記載の方法において、
前記呼び出し戻りアドレスの検証は、前記CEの中間のシステム・サービスを介して行われる、方法。
【請求項24】
請求項22に記載の方法において、
前記呼び出し戻りアドレスを検証することは、前記CEおよびアプリケーションのローディングの間に初期化される1つまたは複数のデータ構造を参照して行われる、方法。
【請求項25】
請求項24に記載の方法において、
前記1つまたは複数のデータ構造における第1のデータ構造は、呼び出しテーブルを備え、前記1つまたは複数のデータ構造における第2のデータ構造は、経路テーブルを備える、方法。
【請求項26】
請求項25に記載の方法において、
前記経路テーブルは、1つまたは複数の乱数を特定の箇所に含み、前記呼び出しテーブルは、前記呼び出し戻りアドレス、CEローダによって供給される1つまたは複数の乱数、特定の経路テーブル・エントリー箇所、および前記システム・サービス呼び出しの間に実行されるべき前記経路テーブルに対する変更が少しでも存在するのであるならば、その変更を示す処置パラメータ、を含む、方法。
【請求項27】
請求項26に記載の方法であって、更に、
前記呼び出しテーブル内の前記1つまたは複数の乱数における第1の乱数を、前記経路テーブル内の特定の箇所での前記1つまたは複数の乱数における第2の乱数と比較することによって、前記呼び出し元へのフロー経路内のバック・ドミネーティング命令を通過した後で、前記呼び出し元のフローが呼び出し点に到達していたことを検証すること、
を備える方法。
【請求項28】
請求項25に記載の方法であって、更に、
前記バック・ドミネーティング命令に関連する乱数を検証することを備える方法。
【請求項29】
請求項22に記載の方法において、
前記呼び出し元は、複数の特権レベルのうちの第1の特権レベルで実行し、呼び出されたシステム・サービスは、前記複数の特権レベルのうちの同一か、あるいはより高い特権レベルで実行する、方法。
【請求項30】
請求項22に記載の方法であって、更に、
I/Oドライバの最小の組のI/Oドライバが、仮想アドレスを用いることによってのみ動作し、I/O動作を行うために必要なステップを指定するエンコードされた指令を生成すること、
前記I/Oドライバが、プラットフォーム制御サービスを呼び出して、I/Oデバイスを制御すること、
を備え、前記プラットフォーム制御サービスは、前記I/Oドライバが供給するエンコードされた指令に従うことによって物理アドレスを用いる、方法。
【請求項31】
方法であって、
カスタマイズされた実行環境(CE)が、特定のアプリケーションに対するI/Oドライバの最小の組を提供すること、
前記I/Oドライバの最小の組のI/Oドライバが、仮想アドレスを用いることによってのみ動作し、I/O動作を行うために必要なステップを指定するエンコードされた指令を生成すること、
前記I/Oドライバが、プラットフォーム制御サービスを呼び出して、I/Oデバイスを制御すること、
を備え、前記プラットフォーム制御サービスは、I/Oドライバが供給するエンコードされた指令に従うことによって物理アドレスを用いる、方法。
【請求項32】
請求項31に記載の方法において、
前記エンコードされた指令は、I/Oコントローラ・アドレスを、1つまたは複数の前記プラットフォーム制御サービスのみによってアクセス可能なコンパートメント内に存在するI/Oコントローラ記述子を通して、間接的に指定する、方法。
【請求項33】
方法であって、
コンピュータ・システムの、存在するのであるならば、どのシステム資源が、前記コンピュータ・システムの常駐のオペレーティング・システムの制御の下に留まるべきか、ならびに、どのシステム資源が、前記コンピュータ・システム内に確立されるべき1つまたは複数のカスタマイズされた実行環境(CE)の制御の下に配置されるべきか、を決定すること、
前記システム資源の1つまたは複数のパーティションを前記1つまたは複数のCEに関連させることによって、前記システム資源を前記常駐のオペレーティング・システムおよび前記1つまたは複数のCE間でパーティショニングすること、
を備える方法。
【請求項34】
請求項33に記載の方法において、
前記システム資源をパーティショニングすることは、前記常駐のオペレーティング・システムが、前記コンピュータ・システムの1つまたは複数のプロセッサによって提供されるハードウェア・ベースの隔離技術を用いて、前記1つまたは複数のパーティションを構成することを備える、方法。
【請求項35】
請求項34に記載の方法であって、更に、
前記常駐のオペレーティング・システムが休止状態に進行することを備える方法。
【請求項36】
請求項33に記載の方法において、
前記システム資源をパーティショニングすることは、前記オペレーティング・システムが、安全なプラットフォーム・インターフェースを用いて、前記1つまたは複数のパーティションを構成することを備える、方法。
【請求項37】
請求項36に記載の方法であって、更に、
前記常駐のオペレーティング・システムが、前記1つまたは複数のパーティションの完全制御を保持し、前記システム資源をパーティショニングした後に動作状態に留まることを備える方法。
【請求項38】
請求項33に記載の方法において、
前記システム資源をパーティショニングすることは、システム管理者が、前記コンピュータ・システムによって提供されるハードウェア・パーティショニング能力を用いて、前記1つまたは複数のパーティションを構成することを備える、方法。
【請求項39】
請求項38に記載の方法であって、更に、
前記常駐のオペレーティング・システムおよび前記1つまたは複数のCEを、それらの個別に構成されたパーティション内において別個に起動することを備える方法。
【請求項40】
請求項33に記載の方法であって、更に、
前記1つまたは複数のCEにおけるCEが、前記常駐のオペレーティング・システムによってサポートされていない前記コンピュータ・システムの能力を使用することを備える方法。
【請求項41】
請求項33に記載の方法において、
前記1つまたは複数のCEにおけるCEは、静的にリンクされたシステム・コードおよびデータ・モジュールと、アプリケーション・コードおよびデータ・モジュールとの両方を備える、方法。
【請求項42】
請求項33に記載の方法において、
前記1つまたは複数のCEにおけるCEの機能上の能力は、所定のアプリケーションの小さな組によって必要とされるサービスのみに厳密に限定される、方法。
【請求項43】
請求項33に記載の方法において、
前記1つまたは複数のCEにおけるCE内でのアプリケーションは、前記CEによって制御されるプロセッサにおける単一スレッドの実行に限定される、方法。
【請求項44】
請求項33に記載の方法において、
前記1つまたは複数のCEにおけるCEは、前記常駐のオペレーティング・システムによってサポートされていないハードウェア能力を利用する、方法。
【請求項45】
請求項33に記載の方法において、
前記1つまたは複数のCEにおけるCE内でのアプリケーションに提供されるサービスによって、前記アプリケーションはシステム・エラーから回復して継続することができる、方法。
【請求項46】
請求項33に記載の方法において、
前記1つまたは複数のCEにおけるCEは非移植性である、方法。
【請求項47】
請求項33に記載の方法において、
前記1つまたは複数のCEにおけるCE内でのアプリケーションに提供されるサービスは、多目的オペレーティング・システム抽象化を利用しない、方法。
【請求項48】
請求項33に記載の方法において、
CE内でのサービスは、多目的オペレーティング・システムによって用いられるものとは全く異なる資源管理ストラテジを用いる、方法。
【請求項49】
方法であって、
コンピュータ・システムのオペレーティング・システムが、カスタマイズされた実行環境(CE)に関する情報を受け取ること、
前記オペレーティング・システムが、1つまたは複数のプロセッサおよび物理メモリの1つまたは複数の範囲を含む前記コンピュータ・システムのシステム資源をパーティショニングすることであって、
(i)前記システム資源のうちで、存在するのであるならば、どのシステム資源が、前記オペレーティング・システムの制御の下に留まるべきか、ならびに、前記システム資源のうちのどのシステム資源が、前記CEの制御の下に配置されるべきかを決定すること、
(ii)前記システム資源の第1のパーティションを前記CEに関連させること、
によって、システム資源をパーティショニングすること、
前記オペレーティング・システムが、前記システム資源の前記第1のパーティションの完全制御を前記CEに引き渡すこと、
を備える方法。
【請求項50】
請求項49に記載の方法において、
前記CEに関する情報は、パーティション資源に対する指令および関連するパーティション記述子を含み、該パーティション記述子は、前記CEが必要とする資源を識別し、パーティションをどのように構成すべきかを示す、方法。
【請求項51】
請求項49に記載の方法において、
前記システム資源の第1のパーティションを前記CEに関連させることは、前記第1のパーティション内のシステム資源部分を前記オペレーティング・システムから分離すること、割り込みを再構成することを備える、方法。
【請求項52】
請求項49に記載の方法であって、更に、
前記オペレーティング・システムが、前記システム資源における第2のパーティションの完全制御を保持すること、
ハードウェア隔離を用いることによって、前記システム資源における前記第2のパーティションを隔離して、前記オペレーティング・システムに関連する前記システム資源を前記CEから保護すること、
を備える方法。
【請求項53】
請求項52に記載の方法であって、更に、
ハードウェア隔離を用いることによって、前記システム資源における前記第1のパーティションを隔離して、前記CEに関連する前記システム資源を前記オペレーティング・システムから保護すること備える方法。
【請求項54】
請求項52に記載の方法において、
前記ハードウェア隔離は、前記システム資源の前記第1のパーティションまたは前記第2のパーティション内の仮想的にアドレス指定されたメモリの1つまたは複数の範囲上の1つまたは複数の動作に対する保護キーの1つまたは複数の互いに素な集合を確立することを備える、方法。
【請求項55】
請求項52に記載の方法において
前記ハードウェア隔離は、前記システム資源の前記第1のパーティションまたは前記第2のパーティション内の仮想的にアドレス指定されたメモリの1つまたは複数の範囲上の1つまたは複数の動作に対する領域識別子の1つまたは複数の互いに素な集合を確立することを備える、方法。
【請求項56】
請求項52に記載の方法において、
前記ハードウェア隔離は、前記システム資源の前記第2のパーティション内のメモリの1つまたは複数の範囲を前記第2のパーティション内のプロセッサに関連させること、前記システム資源の前記第1のパーティション内のメモリの1つまたは複数の範囲を前記第1のパーティション内のプロセッサに関連させること、を備える、方法。
【請求項57】
請求項56に記載の方法において、
前記システム資源の前記第2のパーティション内のメモリの1つまたは複数の範囲を前記第2のパーティション内のプロセッサに関連させること、ならびに、前記システム資源の前記第1のパーティション内のメモリの1つまたは複数の範囲を前記第1のパーティション内のプロセッサに関連させることは、領域識別子ベースのメモリ・パーティショニング・メカニズムを用いることを備える、方法。
【請求項58】
請求項49に記載の方法であって、更に、
前記CEが終了しているという表示を受け取ること、
前記オペレーティング・システムが、前記システム資源の前記第1のパーティションの制御を担うこと、
を備える方法。
【請求項59】
システムであって、
常駐のオペレーティング・システムならびに1つまたは複数のカスタム実行環境(CE)に関連するカスタマイズされた制御環境およびサービスのソフトウェア・イメージが記憶された1つまたは複数の記憶装置と、
前記1つまたは複数の記憶装置に結合される1つまたは複数のプロセッサであって、前記常駐のオペレーティング・システムならびに前記カスタマイズされた制御環境およびサービスを実行する1つまたは複数のプロセッサと、を備え、
前記システムの前記1つまたは複数のプロセッサおよびメモリを含む前記システムの資源のうちで、存在するのであるならば、どの部分が、前記常駐のオペレーティング・システムの制御の下に留まるべきか、ならびに前記資源のどの部分が前記1つまたは複数のCEの制御の下に配置されるべきかについての決定がなされ、
前記資源の1つまたは複数の部分を前記1つまたは複数のCEに関連させることによって、前記システム資源は、前記常駐のオペレーティング・システムおよび前記1つまたは複数のCE間でパーティショニングされる、システム。
【請求項60】
サーバであって、
オペレーティング・システムならびに同時カスタム実行環境(C)に関連するカスタマイズされた制御環境およびサービスのソフトウェア・イメージが記憶された1つまたは複数の記憶装置であって、前記オペレーティング・システムは、前記オペレーティング・システムが使用および制御するためのシステム資源の第1のパーティションおよび前記Cが使用および制御するためのシステム資源の第2のパーティションを確立することができる、1つまたは複数の記憶装置と、
前記1つまたは複数の記憶装置に結合される1つまたは複数のプロセッサであって、前記オペレーティング・システムならびに前記カスタマイズされた制御環境およびサービスを実行する1つまたは複数のプロセッサと、を備え、
前記1つまたは複数の記憶装置の第1の部分、前記1つまたは複数のプロセッサの第1の部分、メモリの第1の部分、および1つまたは複数の入出力(I/O)装置の第1の部分は、前記オペレーティング・システムによって、前記第1のパーティションに関連付けされ、
前記1つまたは複数の記憶装置の第2の部分、前記1つまたは複数のプロセッサの第2の部分、前記メモリの第2の部分、および前記1つまたは複数の入出力(I/O)装置の第2の部分は、前記オペレーティング・システムによって、前記第2のパーティションに関連付けされ、
前記第1のパーティションは、ハードウェア・ベースのセキュリティ対策を用いることによって前記オペレーティング・システムに関連するシステム資源を前記Cから保護するために隔離され、
前記第2のパーティションの完全制御は、前記オペレーティング・システムが前記メモリの前記第2の部分内の前記カスタマイズされた制御環境およびサービスを初期化し、呼び出すことによって、前記Cに引き渡される、サーバ。
【請求項61】
請求項60に記載のサーバにおいて、
前記第2のパーティションは、ハードウェア・ベースのセキュリティ対策を用いることによって前記Cに関連するシステム資源を前記オペレーティング・システムから保護するために隔離される、サーバ。
【請求項62】
請求項60に記載のサーバにおいて、
前記カスタマイズされた制御環境およびサービスは非移植性である、サーバ。
【請求項63】
請求項60に記載のサーバにおいて、
前記第1のパーティションは、少なくとも1つのプロセッサを含む、サーバ。
【請求項64】
請求項60に記載のサーバにおいて、
前記第2のパーティションは、少なくとも1つのプロセッサを含む、サーバ。
【請求項65】
請求項60に記載のサーバにおいて、
前記1つまたは複数の記憶装置は、前記カスタマイズされた制御環境およびサービスの計算構造が調整されているカスタマイズされたアプリケーションのソフトウェア・イメージを記憶している、サーバ。
【請求項66】
請求項65に記載のサーバにおいて、
前記カスタマイズされたアプリケーションはウェブ・エッジ・エンジンを備える、サーバ。
【請求項67】
請求項66に記載のサーバにおいて、
前記ウェブ・エッジ・エンジンはウェブ・サーバを備える、サーバ。
【請求項68】
請求項66に記載のサーバにおいて、
前記ウェブ・エッジ・エンジンはアプリケーション・サーバを備える、サーバ。
【請求項69】
請求項66に記載のサーバにおいて、
前記ウェブ・エッジ・エンジンは通信サーバを備える、サーバ。
【請求項70】
請求項60に記載のサーバにおいて、
通信チャネルが前記第1のパーティションと前記第2のパーティションとの間に維持され、ダイナミック・コンテント・ジェネレータが、前記第1のパーティション内で実行し、ダイナミック・コンテントをウェブ・サーバに前記通信チャネルを介して提供する、サーバ。
【請求項71】
請求項60に記載のサーバにおいて、
前記ハードウェア・ベースのセキュリティ対策は、領域識別子、保護識別子、およびメモリ・ページ・アクセス権値のうちの1つまたは複数を用いることを備える、サーバ。
【請求項72】
オペレーティング・システムであって、
システム資源を、少なくとも、前記オペレーティング・システムの制御の下に留まる第1のパーティションと、同時カスタム実行環境(C)の完全制御の下に配置されるべき第2のパーティションとにパーティショニングするための手段と、
前記第1のパーティションにおけるシステム資源を前記Cによるアクセスから保護するためのハードウェア・ベースの隔離機構に対するインターフェース手段と、
前記第2のパーティションにおけるシステム資源の完全制御を前記Cへ移すための手段であって、前記Cに関連するカスタマイズされた制御およびサービスを初期化し、呼び出すことを含む、手段と、
前記第1のパーティションと前記第2のパーティションとの間の通信を提供するための手段と、
を備えるオペレーティング・システム。
【請求項73】
請求項72に記載のオペレーティング・システムであって、更に、
パーティショニングされたシステム資源を再び取り入れるための手段を備えるオペレーティング・システム。
【請求項74】
請求項72に記載のオペレーティング・システムであって、更に、
前記オペレーティング・システムおよび前記Cをオペレータ制御するための別個の手段と、
前記オペレーティング・システムおよび前記Cをモニタリングするための別個のインターフェース手段と、
を備えるオペレーティング・システム。
【請求項75】
オペレーティング・システムであって、
前記オペレーティング・システムが存在するシステム資源のハードウェア強制されたパーティションとは別個の、システム資源の個別のハードウェア強制されたパーティション内で動作し、これを制御する1つまたは複数の同時カスタム実行環境(C)と通信するための手段と、
前記1つまたは複数のCにおけるCに処理を始めさせるか、あるいは終了させるための手段と、
を備えるオペレーティング・システム。

【図1】
image rotate

image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

image rotate

【図7】
image rotate

image rotate

image rotate

image rotate

image rotate

image rotate

image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

image rotate

image rotate

image rotate


【公表番号】特表2007−524896(P2007−524896A)
【公表日】平成19年8月30日(2007.8.30)
【国際特許分類】
【出願番号】特願2006−509176(P2006−509176)
【出願日】平成16年3月4日(2004.3.4)
【国際出願番号】PCT/US2004/006788
【国際公開番号】WO2004/079547
【国際公開日】平成16年9月16日(2004.9.16)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
【出願人】(505333311)セキュアーシックスティフォー ソフトウェア コーポレイション (1)
【氏名又は名称原語表記】SECURE64 SOFTWARE CORPORATION
【Fターム(参考)】