(57)【要約】【課題】  ハードウェア・ベースの強制アクセス制御の方法及び機構を提供する。【解決手段】  ハードウェア・ベースの、データに対する命令のアクセス制御を行うためのハードウェア機構が提供される。これらのハードウェア機構は、プロセッサによって処理される命令に命令アクセス・ポリシー・ラベルを付随させ、プロセッサによって処理されるデータにオペランド・アクセス・ポリシー・ラベルを付随させる。命令アクセス・ポリシー・ラベルは命令と共に、プロセッサの１つ又は複数のハードウェア機能ユニットを介して伝えられる。オペランド・アクセス・ポリシー・ラベルはデータと共に、プロセッサの１つ又は複数のハードウェア機能ユニットを介して伝えられる。プロセッサの１つ又は複数のハードウェア機能ユニットに関連付けられた１つ又は複数のハードウェア実装ポリシー・エンジンが、命令アクセス・ポリシー・ラベル及びオペランド・アクセス・ポリシー・ラベルに基づいてデータへの命令によるアクセスを制御するのに用いられる。【選択図】      図３
2010092465.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システム内で、ハードウェア・ベースのアクセス制御を行う方法であって、
前記データ処理システムのハードウェア内で、命令アクセス・ポリシー・ラベルを前記データ処理システムのプロセッサにより処理される命令に付随させることと、
前記データ処理システムのハードウェア内で、オペランド・アクセス・ポリシー・ラベルを前記データ処理システム内のデータに付随させることと、
前記命令アクセス・ポリシー・ラベルを前記命令と共に、前記プロセッサの１つ又は複数のハードウェア機能ユニットを介して伝えることと、
前記オペランド・アクセス・ポリシー・ラベルを前記データと共に、前記プロセッサの前記１つ又は複数のハードウェア機能ユニットを介して伝えることと、
前記プロセッサの前記１つ又は複数のハードウェア機能ユニットに関連付けられた、１つ又は複数のハードウェア実装ポリシー・エンジンを用いて、前記命令アクセス・ポリシー・ラベル及び前記オペランド・アクセス・ポリシー・ラベルに基づいて前記データへの前記命令によるアクセスを制御することと、
を含む前記方法。
【請求項２】
前記データ処理システムは、複数のアクセス・ポリシー・ラベルに関するアクセス制御を指定する拡張アクセス制御マトリクスをストアする、ハードウェア実装アクセス・ポリシー・ラベル・キャッシュを含む、請求項１に記載の方法。
【請求項３】
前記拡張アクセス制御マトリクスは、各命令の型に対する１つ又は複数のルックアップ・テーブルを含み、前記命令の型は、前記プロセッサにより前記命令から命令識別子としてデコードされる、請求項２に記載の方法。
【請求項４】
前記ルックアップ・テーブルの各々は、データの入力オペランド・ラベル、命令の入力命令ラベル、及び前記命令に関連するプロセスのコンテキスト・ラベルに基づいて、アクセス権及び前記命令の実行を管理する遷移規則を指定する、請求項３に記載の方法。
【請求項５】
前記遷移規則は、前記命令を実行するときに実行される付加的な動作を指定する、請求項４に記載の方法。
【請求項６】
前記付加的な動作は、前記命令をトラップしてソフトウェア・トラップ・ハンドラを前記命令に対して実行させるトラップ動作、又は、前記コンテキスト・ラベルを現在の値から前記拡張アクセス制御マトリクス内のポリシー・ラベル・ルックアップ動作の出力に付随するコンテキスト・ラベル値に遷移させる遷移動作のうちの少なくとも１つを含む、請求項５に記載の方法。
【請求項７】
前記１つ又は複数のハードウェア実装ポリシー・エンジンは、前記ハードウェア実装アクセス・ポリシー・ラベル・キャッシュ内にストアされた前記拡張アクセス制御マトリクスにアクセスして、アクセス制御ポリシーが前記データ処理システムにより処理された命令によるデータへのアクセスを制御するように強制する、請求項２に記載の方法。
【請求項８】
第１の前記アクセス・ポリシーを伝えること及び第２の前記アクセス・ポリシーを伝えることは、
前記命令と、前記プロセッサの第１のハードウェア機能ユニットに関連付けられた第１のハードウェア実装ポリシー・エンジン内の前記命令アクセス・ポリシー・ラベルとを受け取ることと、
前記第１のハードウェア実装ポリシー・エンジン内で、前記命令に付随する現在のプロセス・コンテキスト・ラベルを受け取ることと、
前記第１のハードウェア実装ポリシー・エンジン内で、前記命令の１つ又は複数のオペランドに対応する１つ又は複数のオペランド・ラベルを受け取ることと
を含み、
前記１つ又は複数のハードウェア実装ポリシー・エンジンを用いて、前記命令アクセス・ポリシー・ラベル及び前記オペランド・アクセス・ポリシー・ラベルに基づいて前記データへの前記命令によるアクセスを制御することは、前記命令ラベル、現在のプロセス・コンテキスト・ラベル、及び前記１つ又は複数のオペランド・ラベルに基づいて前記拡張アクセス制御マトリクス上でポリシー・ルックアップ動作を実行して、前記命令の前記実行の結果に関する出力ラベルを識別することを含む、
請求項２に記載の方法。
【請求項９】
前記１つ又は複数のハードウェア実装ポリシー・エンジンを用いて、前記命令アクセス・ポリシー・ラベル及び前記オペランド・アクセス・ポリシー・ラベルに基づいて前記データへの前記命令によるアクセスを制御することは、
前記出力ラベルがトラップ・ラベルであるかどうかを判断することと、
前記出力ラベルがトラップ・ラベルであるとの判断に応じて、ソフトウェア割り込みを実行して制御を特権ソフトウェア・ハンドラに移すことによりトラップを実行することと、
前記出力ラベルがトラップ・ラベルではないと判断される場合に、前記命令を実行し、そして前記命令の前記実行の結果データに付随するラベルを前記出力ラベルに設定することと、
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記１つ又は複数のハードウェア実装ポリシー・エンジンを用いて、前記命令アクセス・ポリシー・ラベル及び前記オペランド・アクセス・ポリシー・ラベルに基づいて前記データへの前記命令によるアクセスを制御することは、
前記出力ラベルがコンテキスト遷移を指示するかどうかを判断することと、
前記出力ラベルがコンテキスト遷移を指示する場合に、前記現在のプロセス・コンテキスト・ラベルを前記出力ラベル値に設定することと、
をさらに含む、請求項９に記載の方法。
【請求項１１】
１つ又は複数のハードウェア機能ユニットと、
前記１つ又は複数のハードウェア機能ユニットに関連付けられる１つ又は複数のハードウェア実装ポリシー・エンジンと、
を備えるプロセッサであって、
命令アクセス・ポリシー・ラベルが、前記プロセッサのハードウェア内で、前記プロセッサによって処理される命令に付随させられ、
オペランド・アクセス・ポリシー・ラベルが、前記プロセッサのハードウェア内で、前記プロセッサによって処理されるデータに付随させられ、
前記命令アクセス・ポリシー・ラベルは前記命令と共に、前記プロセッサの前記１つ又は複数のハードウェア機能ユニットを介して伝えられ、
前記オペランド・アクセス・ポリシー・ラベルは前記データと共に、前記プロセッサの前記１つ又は複数のハードウェア機能ユニットを介して伝えられ、
前記１つ又は複数のハードウェア実装ポリシー・エンジンは、前記命令アクセス・ポリシー・ラベル及び前記オペランド・アクセス・ポリシー・ラベルに基づいて前記データへの前記命令によるアクセスを制御するように動作する、
前記プロセッサ。
【請求項１２】
前記１つ又は複数のハードウェア機能ユニットは、実行ユニット、ロード／ストア・ユニット、及び分岐ユニットを備え、
前記実行ユニット、前記ロード／ストア・ユニット、及び前記分岐ユニットの各々は、対応するハードウェア実装ポリシー・エンジンを有する、
請求項１１に記載のプロセッサ。
【請求項１３】
前記プロセッサは、複数のアクセス・ポリシー・ラベルに関するアクセス制御を指定する拡張アクセス制御マトリクスをストアするハードウェア実装アクセス・ポリシー・ラベル・キャッシュを備える、請求項１１に記載のプロセッサ。
【請求項１４】
前記拡張アクセス制御マトリクスは、各命令型に関する１つ又は複数のルックアップ・テーブルを含み、前記命令型は、前記プロセッサにより前記命令から命令識別子としてデコードされる、請求項１３に記載のプロセッサ。
【請求項１５】
前記ルックアップ・テーブルの各々は、データの入力オペランド・ラベル、命令の入力命令ラベル、及び前記命令に関連するプロセスのコンテキスト・ラベルに基づいて、アクセス権及び前記命令の実行を管理する遷移規則を指定する、請求項１４に記載のプロセッサ。
【請求項１６】
前記遷移規則は、前記命令を実行するときに実行される付加的な動作を指定する、請求項１５に記載のプロセッサ。
【請求項１７】
前記付加的な動作は、前記命令をトラップしてソフトウェア・トラップ・ハンドラを前記命令に対して実行させるトラップ動作、又は、コンテキスト・ラベルを現在の値から前記拡張アクセス制御マトリクス内のポリシー・ラベル・ルックアップ動作の出力に付随するコンテキスト・ラベル値に遷移させる遷移動作のうちの少なくとも１つを含む、請求項１６に記載のプロセッサ。
【請求項１８】
前記１つ又は複数のハードウェア実装ポリシー・エンジンは、前記ハードウェア実装アクセス・ポリシー・ラベル・キャッシュ内にストアされた前記拡張アクセス制御マトリクスにアクセスして、アクセス制御ポリシーが前記プロセッサにより処理された命令によるデータへのアクセスを制御するように強制する、請求項１３に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、改善されたデータ処理装置及び方法に関し、より具体的には、ハードウェア・ベースの強制アクセス制御をもたらすための機構に関する。
【背景技術】
【０００２】
コンピュータ・システムにおける最も重大な問題の１つはセキュリティである。セキュリティ・システムは、システム及びそのデータの完全性、機密性及び可用性を保護するように設計される。これらの保護は、典型的には、ページ・テーブルが所与のメモリ・ページへのプロセッサ・コンテキストの許容されるアクセスを定義する保護メモリのようなハードウェア手段と、ソフトウェア・ベースの強制アクセス制御システムのようなオペレーティング・システム内のソフトウェア技術との組合せによって与えられる。１つの型の強制アクセス制御システムの例は、Lampson, B.W.による「保護」と題する非特許文献１に記載されているＬａｍｐｓｏｎの強制アクセス制御である。ソフトウェア強制アクセス制御システムは、多くの場合、例えば、Bell 及び LaPadula による「コンピュータ・セキュリティ・モデル：統合エクスポジション及びマルティックス解釈」と題する非特許文献２に記載されているような機密保護のための数学的モデルと、例えば、Biba, K.J.による「安全なコンピュータ・システムに関する完全性の考察」と題する非特許文献３に記載されているような完全性保護のための数学的モデルとを含む。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Lampson, B.W., “Protection”, Proceedings of theFifth Princeton Symposium on Information Science and Systems, PrincetonUniversity, 1971年3月, 437-443ページ, reprinted in Operating Systems Review, 8, 1974年1月1日, 18-24ページ.
【非特許文献２】Bell 及びLaPadula, “Computer Security Model: Unified Expositionsand Multics Interpretation,” ESD-TR-75-306, 1976年3月, the MITRE Corporation, Bedford, MA; HQElectronic Systems Division, Hanscom AFB, MA.(http://csrc.nist.gov/publications/history/bell76.pdfにおいて入手可能).
【非特許文献３】Biba, K.J., “Integrity Considerations for Secure Computer Systems,” ESD-TR-76-732, 1977年4月, the MITRE Corporation, Bedford, MA: HQ Electronic SystemsDivision, Hanscom AFB, MA.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
既存のハードウェア及びソフトウェアのセキュリティ・システムは、重大な制限を有する。典型的なハードウェア・ベースの保護メモリに関しては、データがメモリ内にあるときは、データへのアクセスが制御されるが、ひとたびデータがプロセッサ内のレジスタ内にロードされると、アクセスは、もはやハードウェアによっては制御されず、その代わりに、ソフトウェア機構によりこれらのレジスタ値へのアクセスが制御される。従って、セキュリティは、オペレーティング・システム・ソフトウェアに依存する。このソフトウェアが完全には安全でない、即ち、使用される可能性があるオペレーティング・システム・ソフトウェアに何らかの誤りがある場合には、これらのレジスタ内にストアされたデータが公開される可能性があり、その結果、無許可のプロセス又はデバイスがデータにアクセスする可能性がある。典型的なオペレーティング・システムは、数百万行ものコードを有することがあり、それゆえ、このコードの全てがあらゆる条件下で正しいと保証することは極めて困難である。従って、プロセッサのレジスタ内のデータへのアクセスを制御するオペレーティング・システム・ソフトウェアが、使用され得るセキュリティ・ホールをもたらし得ることは非常にありそうなことである。
【課題を解決するための手段】
【０００５】
例証的な一実施形態において、データ処理システム内でハードウェア・ベースのアクセス制御を行う方法が提供される。この方法は、データ処理システムのハードウェア内で、命令アクセス・ポリシー・ラベルをデータ処理システムのプロセッサによって処理される命令に付随させることを含む。この方法は、データ処理システムのハードウェア内で、オペランド・アクセス・ポリシー・ラベルをデータ処理システム内のデータに付随させることをさらに含む。さらに、この方法は、命令アクセス・ポリシー・ラベルを命令と共に、プロセッサの１つ又は複数のハードウェア機能ユニットを介して伝えることと、オペランド・アクセス・ポリシー・ラベルをデータと共に、プロセッサの１つ又は複数のハードウェア機能ユニットを介して伝えることとを含む。これに加えて、この方法は、プロセッサの１つ又は複数のハードウェア機能ユニットと関連付けられた１つ又は複数のハードウェア実装ポリシー・エンジンを用いて、命令アクセス・ポリシー・ラベル及びオペランド・アクセス・ポリシー・ラベルに基づいてデータへの命令によるアクセスを制御することを含む。
【０００６】
別の例証的な実施形態において、１つ又は複数のハードウェア機能ユニットと、１つ又は複数のハードウェア機能ユニットと関連付けられた１つ又は複数のハードウェア実装ポリシー・エンジンとを備えたプロセッサが提供される。命令アクセス・ポリシー・ラベルは、プロセッサのハードウェア内で、プロセッサによって処理される命令に付随させられる。オペランド・アクセス・ポリシー・ラベルは、プロセッサのハードウェア内で、プロセッサによって処理されるデータに付随させられる。命令アクセス・ポリシー・ラベルは、命令と共にプロセッサの１つ又は複数のハードウェア機能ユニットを介して伝えられる。オペランド・アクセス・ポリシー・ラベルはデータと共に、プロセッサの１つ又は複数のハードウェア機能ユニットを介して伝えられる。１つ又は複数のハードウェア実装ポリシー・エンジンは、命令アクセス・ポリシー・ラベル及びオペランド・アクセス・ポリシー・ラベルに基づいてデータへの命令によるアクセスを制御するように動作する。
【０００７】
本発明のこれら及び他の特徴及び利点は、本発明の例示的な実施形態の以下の詳細な説明において説明され、或いは、これらを考慮することで当業者には明らかとなる。
【０００８】
本発明、並びに本発明の好ましい使用方法、さらなる目的及び利点は、例証的な実施形態の以下の詳細な説明を、添付の図面と関連して読みながら参照することで、最も良く理解されるであろう。
【図面の簡単な説明】
【０００９】
【図１】例証的な実施形態の例示的な態様を実施することができるデータ処理システムの例示的なブロック図である。
【図２】既知のプロセッサに関する最上位アーキテクチャ図の例示的な図である。
【図３】例証的な一実施形態による、変更されたコンピュータ処理アーキテクチャを示す例示的な図である。
【図４】例証的な一実施形態による、ラベル・ポリシー・ルックアップ動作を用いて中間値をレジスタにロードする実施例を示す例示的な図である。
【図５】例証的な一実施形態による、ポリシー・テーブルの例示的な図である。
【図６】例証的な一実施形態による、ポリシー・ルックアップを実行する例示的な動作を概説するフローチャートである。
【発明を実施するための形態】
【００１０】
例証的な実施形態は、オペレーティング・システムのようなソフトウェア内に存在し得るセキュリティ・ホールを回避できるような強制アクセス制御機能を完全にハードウェア内で実行することにより、データ値へのアクセスを制御するための、複合ハードウェア及びソフトウェア機構に関連する欠点を克服する。即ち、ハードウェア内にこれらの強制アクセス制御を実装することにより、データ処理システムは、多くのソフトウェアの正しさにはあまり依存しなくなる。
【００１１】
当業者であれば認識するように、本発明は、システム、方法又はコンピュータ・プログラムとして具体化することができる。従って、本発明は、完全にハードウェアの実施形態、又はソフトウェア態様（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）と、本明細書において一般に全て「回路」、「モジュール」又は「システム」と呼ぶことができるハードウェア態様とを組み合せた実施形態の形をとることができる。さらに、本発明の態様は、媒体内に具体化されたコンピュータ使用可能プログラム・コードを有する表現の、任意の有形媒体内に具体化されたコンピュータ・プログラムの形をとることができる。
【００１２】
１つ又は複数のコンピュータ使用可能又はコンピュータ可読媒体の任意の組合せを用いることができる。コンピュータ使用可能又はコンピュータ可読媒体は、それらに限定されないが、例えば、電子、磁気、光学、電磁、赤外線、又は半導体システム、装置、デバイス、或いは伝搬媒体とすることができる。コンピュータ可読媒体のより具体的な例（非網羅的なリスト）は、以下のもの、即ち、１つ又は複数のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤＲＯＭ）、光記憶デバイス、インターネット又はイントラネットをサポートするような伝送媒体、或いは磁気記憶デバイスを含む。コンピュータ使用可能又はコンピュータ可読媒体は、プログラムが印刷される紙又は別の適切な媒体とすることもできることに留意されたい。何故なら、例えば紙又は他の媒体の光学的走査を介してプログラムを電子的に取り込み、次いでコンパイルし、解釈し、又は必要であれば別の方法で適切に処理し、それからコンピュータ・メモリ内にストアすることができるからである。本明細書の文脈において、コンピュータ使用可能又はコンピュータ可読媒体は、命令実行システム、装置又はデバイスによって、又はそれと共に用いるためのプログラムを収容し、ストアし、伝達し、伝搬し、又は移動させることができる任意の媒体とすることができる。コンピュータ使用可能媒体は、ベースバンド内に又は搬送波の部分として、それにより具体化されたコンピュータ使用可能プログラム・コードを有する伝搬データ信号を含むことができる。コンピュータ使用可能プログラム・コードは、それらに限定されないが、無線、有線、光ファイバ・ケーブル、ＲＦ等を含む、任意の適切な媒体を用いて伝送することができる。
【００１３】
本発明の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向プログラミング言語、及び“Ｃ”プログラミング言語又は類似のプログラミング言語のような通常の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語の任意の組合せで書くことができる。プログラム・コードは、スタンドアロンのソフトウェア・パッケージとして、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、或いは、部分的にユーザのコンピュータ上で且つ部分的にリモート・コンピュータ上で、又は完全にリモート・コンピュータ若しくはサーバー上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意の型のネットワークを介してユーザのコンピュータに接続することができ、或いは接続は外部コンピュータに接続することができる（例えば、インターネット・サービス・プロバイダを用いてインターネットにより）。
【００１４】
本発明の例証的な実施形態による、方法、装置（システム）及びコンピュータ・プログラムのフローチャート図及び／又はブロック図を参照して、例証的な実施形態を以下に説明する。フローチャート図及び／又はブロック図の各々のブロック、並びにフローチャート図及び／又はブロック図中のブロックの組合せは、コンピュータ・プログラム命令によって実行することができることを理解されたい。これらのコンピュータ・プログラム命令は、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに供給してマシーンを生成し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサにより実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実行する手段を生成するようすることができる。
【００１５】
これらのコンピュータ・プログラム命令はまた、コンピュータ可読媒体内にストアして、コンピュータ可読媒体内にストアされた命令がフローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実行する命令手段を含む製造物品を生成するような特定の仕方で、コンピュータ又は他のプログラム可能データ処理装置が機能するように指示することができるようにすることができる。
【００１６】
コンピュータ・プログラム命令はまた、コンピュータ又は他のプログラム可能データ処理装置上にロードして、コンピュータ又は他のプログラム可能装置上で実行される一連の動作ステップがコンピュータにより実行されるプロセスを生成するようにし、その結果、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実行するプロセスをもたらすようにすることができる。
【００１７】
図中のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラムの可能な実施のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート又はブロック図中の各々のブロックは、モジュール、セグメント又はコード部分を表すことができ、これは、指定された論理機能を実行するための１つ又は複数の実行可能命令を含む。また、幾つかの代替的な実施において、ブロック内に示された機能は、図中に示された順番とは異なる順番で行うことができることに留意されたい。例えば、連続して示される２つのブロックを、実際には、実質的に同時に実行することができ、或いは場合により関与する機能に応じて、ブロックを逆の順番で実行することができる。また、ブロック図及び／又はフローチャート図中の各々のブロック、並びにブロック図及び／又はフローチャート図中のブロックの組合せは、指定された機能又は動作を実行する専用のハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令の組合せによって、実行することができることに留意されたい。
【００１８】
例証的な実施形態は、種々の型のデータ処理システム及びデバイスに実装することができる。図１は、以下で例証的な実施形態の例示的な態様を実装することができる１つの型のデータ処理システムの一例として与えられる。図１は例示的なものに過ぎず、例証的な実施形態の態様を実装することができるデータ処理システム又はデバイスの型又は構成に関するなんらかの制限を主張又は示唆することを意図したものではないことを認識されたい。本発明の精神及び範囲から逸脱することなく、図示したデータ処理システムに多くの変更を加えることができる。
【００１９】
ここで、図を参照すると、図１は、例証的な実施形態の態様を実装することができる例示的なデータ処理システムの例示的なブロック図である。図示した例において、データ処理システム１００には、ノース・ブリッジ及びメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）１０２並びにサウス・ブリッジ及び入力／出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）１０４を含むハブ・アーキテクチャが用いられている。処理ユニット１０６、主メモリ１０８、及びグラフィックス・プロセッサ１１０が、ＮＢ／ＭＣＨ１０２に接続される。グラフィックス・プロセッサ１１０は、アクセラレーテッド・グラフィックス・ポート（ＡＧＰ）を介してＮＢ／ＭＣＨ１０２に接続することができる。
【００２０】
図示した例において、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ１１２が、ＳＢ／ＩＣＨ１０４に接続する。音声アダプタ１１６、キーボード及びマウス・アダプタ１２０、モデム１２２、読取り専用メモリ（ＲＯＭ）１２４、ハード・ディスク・ドライブ（ＨＤＤ）１２６、ＣＤ−ＲＯＭドライブ１３０、ユニバーサル・シリアル・バス（ＵＳＢ）ポート及び他の通信ポート１３２、並びにＰＣＩ／ＰＣＩｅデバイス１３４は、バス１３８及びバス１４０を介してＳＢ／ＩＣＨ１０４に接続する。ＰＣＩ／ＰＣＩｅデバイスは、例えば、イーサネット・アダプタ、アドイン・カード、及びノート型コンピュータ用のＰＣカードを含むことができる。ＰＣＩには、カード・バス・コントローラを使用するが、ＰＣＩｅには使用しない。ＲＯＭ１２４は、例えば、フラッシュ基本入力／出力システム（ＢＩＯＳ）とすることができる。
【００２１】
ＨＤＤ１２６及びＣＤ−ＲＯＭドライブ１３０は、バス１４０を介してＳＢ／ＩＣＨ１０４に接続する。ＨＤＤ１２６及びＣＤ−ＲＯＭドライブ１３０には、例えば、統合ドライブ・エレクトロニクス（ＩＤＥ）又はシリアル先端技術アタッチメント（ＳＡＴＡ）インターフェースを使用することができる。スーパーＩ／Ｏ（ＳＩＯ）デバイス１３６は、ＳＢ／ＩＣＨ１０４に接続することができる。
【００２２】
オペレーティング・システムは、処理ユニット１０６上で実行する。オペレーティング・システムは、図１のデータ処理システム１００内の種々のコンポーネントの制御を調整し、供給する。クライアントとして、オペレーティング・システムは、マイクロソフト（Microsoft）（登録商標）ウィンドウズ（Windows）（登録商標）ＸＰのような市販のオペレーティング・システムとすることができる（Microsoft及びWindowsは、米国、他の国々、又はその両方におけるマイクロソフト社の登録商標である）。ジャバ（Java）（登録商標）プログラミング・システムのようなオブジェクト指向プログラミング・システムは、オペレーティング・システムと共に実行することができ、データ処理システム１００上で実行するジャバ（Java）（登録商標）プログラム又はアプリケーションからオペレーティング・システムに対する呼び出しを行う（Javaは、米国、他の国々、又はその両方におけるサン・マイクロシステムズ社の登録商標である）。
【００２３】
サーバーとして、データ処理システム１００は、例えば、AdvancedInteractive Executive（AIX（登録商標））オペレーティング・システム又はLINUX（登録商標）オペレーティング・システムを実行する、IBM（登録商標）eServer（登録商標）System p（登録商標）コンピュータ・システムとすることができる（eServer、System p 及びAIX は、米国、他の国々、又はその両方におけるＩＢＭ社の登録商標であり、一方、LINUX は、米国、他の国々、又はその両方における Linus Torvalds の登録商標である）。データ処理システム１００は、処理ユニット１０６内に複数のプロセッサを含む対称型マルチプロセッサ（ＳＭＰ）システムとすることができる。代替的に、単一プロセッサ・システムを用いることもできる。
【００２４】
オペレーティング・システム、オブジェクト指向プログラミング・システム、及びアプリケーション又はプログラムに関する命令は、ＨＤＤ１２６のような記憶デバイス上に配置され、処理ユニット１０６による実行のために主メモリ１０８内にロードすることができる。本発明の例証的な実施形態のプロセスは、コンピュータ使用可能プログラム・コードを用いて処理ユニット１０６によって実行することができ、このコンピュータ使用可能プログラム・コードは、例えば、主メモリ１０８、ＲＯＭ１２４のようなメモリ内、或いは例えば１つ又は複数の周辺デバイス１２６及び１３０内に配置することができる。
【００２５】
図１に示すバス１３８又はバス１４０のようなバス・システムは、１つ又は複数のバスから構成することができる。もちろん、バス・システムは、ファブリック又はアーキテクチャに取り付けられた異なるコンポーネント又はデバイス間のデータ転送をもたらす任意の型の通信ファブリック又はアーキテクチャを用いて実施することができる。図１のモデム１２２又はネットワーク・アダプタ１１２のような通信ユニットは、データを送受信するのに用いられる１つ又は複数のデバイスを含むことができる。メモリは、例えば、主メモリ１０８、ＲＯＭ１２４、又は図１のＮＢ／ＭＣＨ１０２内に見出されるようなキャッシュとすることができる。
【００２６】
当業者であれば、図１のハードウェアは実施に応じて変更し得ることを認識するであろう。図１に示したハードウェアに加えて、又はその代わりに、フラッシュ・メモリ、等価の不揮発性メモリ、又は光ディスク・ドライブ等のような他の内部ハードウェア又は周辺デバイスを使用することができる。また、例証的な実施形態のプロセスは、本発明の精神及び範囲から逸脱せずに、前述のＳＭＰシステム以外のマルチプロセッサ・データ処理システムに適用することもできる。
【００２７】
さらに、データ処理システム１００は、クライアント・コンピュータ・デバイス、サーバー・コンピュータ・デバイス、タブレット・コンピュータ、ラップトップ・コンピュータ、電話又は他の通信デバイス、携帯情報端末（ＰＤＡ）などを含む、多くの異なるデータ処理システムのうちのいずれかの形態をとることができる。幾つかの例証的な実施例において、データ処理システム１００は、例えば、オペレーティング・システム・ファイル及び／又はユーザ生成データをストアするための不揮発性メモリを与えるフラッシュ・メモリで構成されたポータブル・コンピュータ・デバイスとすることができる。本質的に、データ処理システム１００は、アーキテクチャ上の制限なしに任意の既知の又は後に開発されるデータ処理システムとすることができる。
【００２８】
例証的な実施形態は、ハードウェア実装強制アクセス制御機能、及び、ソフトウェアの正しさにあまり依存しない対応するセキュリティ・アーキテクチャを提供する。例証的な実施形態の機構により、図１のシステムに用いることができるようなコンピュータ処理アーキテクチャは、拡張型強制アクセス制御マトリクス機構を含むように変更される。さらに、コンピュータ処理アーキテクチャ内の全てのデータは小さな整数ラベル、例えば、各６４ビット・データ・ワードに対しては８ビットのラベルでラベル付けされる（但し、これらのサイズは、コンピュータ処理アーキテクチャに用いられる異なるプロセッサの型に対して変更し得る）。同様に、全ての処理コンテキストがラベル付けされる。拡張型強制アクセス制御マトリクスは、メモリ内にストアされ、コンピュータ処理アーキテクチャを通してアクセスが移動する際に、ラベル付けされたデータへのアクセスを制御するためのアクセス制御ポリシーを供給する。
【００２９】
各命令に対して、並びに、コンテキスト及び入力オペランド・ラベルの各セットに対して、強制アクセス制御マトリクスは、アクセス制御及び遷移規則を含む。アクセス制御規則は、読み書き及び実行の許可を含む。強制アクセス制御マトリクス内のエントリは、出力オペランド・ラベルを指定する拡張規則、並びに、低水準の完全性保護モデルをサポートするような、コンテキストのラベルをトラップ又は変更するための命令を含むことができる動作の遷移規則をさらに含むことができる。
【００３０】
例証的な実施形態によって加えられるコンピュータ処理アーキテクチャの変更を説明するために、まず、１つの既知のコンピュータ処理アーキテクチャを説明することが最善である。図２は、ニューヨーク州、アーモンク所在のＩＢＭ社から入手可能なＰｏｗｅｒ  ＰＣ６０１チップのような、既知のプロセッサについての最上位アーキテクチャ図の例示的な図である。図２に示すように、既知のプロセッサ・アーキテクチャ２００は、順次フェッチャ２１１を介して命令を受け取り、命令キュー２１２内で命令をキューに入れ、そしてディスパッチ・ユニット２１３を介して命令をディスパッチする命令ユニット２１０を含む。命令ユニット２１０は、カウンタ及びリンク・アドレス（ＣＴＲ及びＬＲ）及び状態情報（ＣＲ）を有する分岐処理ユニット２１４内のレジスタ２１５−２１７をさらに維持管理する。
【００３１】
命令は、ディスパッチ・ユニット２１３によって、必要に応じて実行ユニット２２０−２２３（整数、浮動小数点、及びロード／ストア）にディスパッチされる。命令の引数及び結果は、ＧＰＲファイル２３０の汎用レジスタ（ＧＰＲ）、及びＦＰＲファイル２３１の浮動小数点レジスタ（ＦＰＲ）内にストアされる。完了ユニット２４０は、分岐をもたらすことができ且つ状態レジスタ２１６を変更することができる命令ユニット２１０に命令完了フィードバックを供給する。ロード／ストア・ユニット２２１及び命令ユニット２１０は、主メモリ（図示せず）のデータを読み出し、それにデータをストアする。命令のためのアドレスは、論理アドレスから、データ・メモリ管理ユニット（ＤＭＭＵ）２５０及び命令メモリ管理ユニット（ＩＭＭＵ）２５１内の物理アドレスに変換される。データ自体は、それぞれのデータ・キャッシュ及び命令キャッシュ２６０−２６１内にキャッシュされる。
【００３２】
図３は、例証的な一実施形態による、変更されたコンピュータ処理アーキテクチャを示す例示的な図である。図３に示すように、コンピュータ処理アーキテクチャ３００のメモリ・システム３１０は、全てのデータ・ワードに対して、例えば、各６４ビット・データ・ワードに対して８ビットのラベルのようなラベル３０５を与えるように変更される。これらのラベルは、例えば、データ・キャッシュ３１１及び命令キャッシュ３１２のようなキャッシュに、又は、例えば分岐ユニット３１３内のＰＣレジスタ、ＣＲレジスタ及びＬＲレジスタのようなプロセッサ・レジスタに、又は、プログラム・レジスタ３１４内のＧＰＲ／ＦＰＲに、データがロードされるときなどの、常にデータと共に伝えられる。コンピュータ・プロセッサ・アーキテクチャ３００は、拡張アクセス制御マトリクスの使用を含むように変更され、このマトリクスは、ラベル・ポリシー・キャッシュ３２０内に全体として又は部分的にストアすることができる。さらに、拡張アクセス制御マトリクスは、メモリ３１０内に全体として又は部分的にストアすることができる。
【００３３】
一例を後に図５に示す、拡張アクセス制御マトリクスは、１つ又は複数のテーブルから構成される。拡張アクセス制御マトリクス内には、後述の命令ＩＤによって指定される、各命令型に対する類似のテーブルが存在する。これらのテーブルは、入力ラベル又はデータ・ラベル及び命令ラベル、並びに命令に関連するプロセスのプロセッサ・コンテキスト・ラベルに基づいて、アクセス権及び命令の実行を管理する遷移規則を指定する。この規則は、命令をトラップする、又は命令を実行するときに実行される命令の結果としてコンテキスト・ラベルを変更する、即ち遷移する、機能を含んだ付加的な動作を含む。このポリシーは、命令ユニット３４０、実行ユニット３４１、ロード／ストア・ユニット３４２、データＭＭＵ３４３、及び命令ＭＭＵ３４４に関連して設けられたラベル・ポリシー・エンジン３３０−３３５によって強制される。これらのラベル・ポリシー・エンジン３３０−３３５は、命令上のラベル、即ち命令ユニット３４０の命令デコード・ユニットからの「命令ラベル」（ＩＬ）と、現在のコンテキスト（ＰＣ）上のラベル、即ち命令ユニット３４０からの「コンテキスト・ラベル」（ＣＬ）と、それぞれのデータ・レジスタからのオペランド上のラベル、即ち「データ・ラベル」（ＤＬ）とを受け取る。ポリシー・ルックアップの結果は、レジスタ内の出力結果に対する新しいラベル、命令ユニット３４０内のコンテキスト（ＰＣ）に対する新しいラベル、又は、既存の命令をトラップするための命令ユニット３４０への信号を含むことができる。
【００３４】
既存の命令の「トラッピング」をさらに説明するために、アプリケーションがオペレーティング・システム・カーネルに対するシステム・コールを行うときのように、ソフトウェア割り込みがより高い特権レベルのソフトウェアに対して行われるときに、クロス・ドメイン・コールが行われることを考える。トラップは、強制クロス・ドメイン・コールである。ゼロ割り、又はヌル・ポインタの参照解除のような、違法命令に対する既存のトラップが存在し、その結果、より高い特権のあるソフトウェアが、違法命令を行おうとしたアプリケーションを削除するなどの、すべきことを決定することができる。例証的な実施形態において、拡張アクセス制御マトリクスが命令をトラップするように指示する場合、これは、命令が既存の強制アクセス制御ポリシー及びラベルに関して違法であるためであり、何をすべきかを決定するのに次のレベル（カーネル又はハイパーバイザ）が必要となる、即ち、命令がトラップされて、その結果カーネル／ハイパーバイザが、プロセスを削除する、プロセス上のラベルを変更するなどの適切な処置を取ることができるようになる。
【００３５】
命令ユニット３４０、並びに分岐ユニット３１３のレジスタ及びプログラム・レジスタ３１４の両方に流れ込むメモリ内のデータ上のラベルに加えて、ラベル・ポリシー・キャッシュ３２０並びに命令及びデータＭＭＵ３４３−３４４内のデータもまたラベル付けされる。また、データ及び命令ＭＭＵ３４３−３４４に送られる論理アドレスも、現在のプロセス・コンテキストのラベルを運ぶ。ＭＭＵ３４３−３４４は、それぞれの変換／アクセス・テーブル内に許容コンテキスト・ラベルを含むように拡張され、その結果、コンテキストは、ページが適正にラベル付けされていないメモリをアドレス指定しようとすることさえもできない。変換／アクセス・テーブルは、ＭＭＵ３４３−３４４の部分であり、これらの変換／アクセス・テーブルのコンテンツは、ＭＭＵ３４３−３４４によって実行される、論理アドレスから物理アドレスへの従来のアドレス変換のためのデータを供給する。例証的な実施形態によって加えられた改善に関しては、変換／アクセス・テーブルのデータは、誰が変換／アクセス・テーブル内のデータをロード／変更することができるかを制御するためにラベル付けされる、即ち、ＭＭＵ変換／アクセス・テーブルのデータ上のラベルは、変換／アクセス・テーブルに対する読み出し／書き込みアクセスを制御するために存在し、その結果ハードウェアは、誰が変換／アクセス・テーブルをロード又はそれにアクセスすることができるかを制御することができる。
【００３６】
従って、例えば、分岐ユニット３１３内で生成され、次の命令をフェッチするように命令ＭＭＵ３４４に送られ、且つ分岐の結果としての実行制御のために命令プロセッサ３４０に送られるプログラム・カウンタ（ＰＣ）及びコンテキスト・ラベル（ＣＬ）（ここでＰＣ＋ＣＬはプロセス・コンテキストである）を命令ＭＭＵ３４４が受け取り、そして、コンテキスト・ラベル（ＣＬ）が命令ＭＭＵ３４４の変換／アクセス・テーブルのエントリによって決定されるメモリ内の対応するページにアクセスするための許可されるコンテキスト・ラベルと一致しない場合には、メモリ３１０内の命令にアクセスするための対応する正当なアドレス（Ａｄｄｒ）が命令ＭＭＵ３４４によって出力されないことになるために、プロセス・コンテキストはメモリ・ページにアクセスできないことになる。同様に、データＭＭＵ３４３に供給されるコンテキスト・ラベル（ＣＬ）が有効アドレス（ＥＡ）に対応するデータをストアするメモリ・ページのＣＬと一致しない場合には、データＭＭＵ３４３は、メモリ３１０からデータを読み出すための正当なアドレス（Ａｄｄｒ）を出力しないことになる。
【００３７】
図３に示すように、命令キャッシュ３１２は、メモリ３１０から命令（Ｉ）及び命令ラベル（ＩＬ）を受け取る。次に、命令キャッシュ３１２が、命令（Ｉ）及びその対応する命令ラベル（ＩＬ）を命令ユニット３４０の命令バッファに出力する。命令ユニット３４０のポリシー・エンジン３３０は、受け取った命令（Ｉ）の命令型に関するラベル・ポリシー情報を、ラベル・ポリシー・キャッシュ３２０から受け取る。命令ユニット３４０のディスパッチャは、１つ又は複数の実行ユニット３４１及び分岐ユニット３１３に、命令（Ｉ）、命令のラベル（ＩＬ）、及びプロセッサ・コンテキストのコンテキスト・ラベル（ＣＬ）を送る。さらに、ラベル・ポリシー・キャッシュ３２０から取得されたポリシー情報がポリシー・エンジン３３１−３３５に供給される。
【００３８】
実行ユニット３４１及び／又は分岐ユニット３１３は、実行ユニット３４１又は分岐ユニット３１３によって要求されたデータに関するデータ（Ｄ）及び対応するデータ・ラベル（ＤＬ）情報を、プログラム・レジスタ３１４から受け取る。さらに、データをロード又はストアする必要がある場合には、データ（Ｄ）及びデータ・ラベル（ＤＬ）は、ロード／ストア・ユニット３４２を介してデータ・キャッシュ３１１からロードする又はそれにストアすることができる。実行ユニット３４１は、実行の結果（Ｒ）及び結果ラベル（ＲＬ）をプログラム・レジスタ３１４に供給することができる。さらに、ロード／ストア・ユニット３４２は、結果（Ｒ）に基づいて有効アドレス（ＥＡ）を生成し、その有効アドレス（ＥＡ）をコンテキスト・ラベル（ＣＬ）と共にデータＭＭＵ３４３に供給してメモリ３１０及び／又はデータ・キャッシュ３１１からデータをロードし、それにデータをストアすることができる。実行ユニット３４１は、さらに状態結果出力（Ｃｏｎｄ）及び結果ラベル（ＲＬ）を分岐ユニット３１３に供給することができる。
【００３９】
図４は、例証的な一実施形態による、ラベル・ポリシー・ルックアップ動作を用いた、中間値をレジスタにロードする例を示す例示的な図である。ルックアップ動作は、例えば、プロセッサのポリシー・エンジンによって実行することができる。さらに、図４には説明のために４つの別々のテーブルが示されているが、１つ又は複数の三次元テーブル又は三次元より大きな次元を有するテーブルを複数の二次元テーブルの代わりに用いることができることを認識されたい。図４は、４つの入力と１つのラベル出力を有する多次元ルックアップ・テーブルを有することの全体的な効果を示すことを意図したものである。最適化に関しては、例証的な実施形態は、最初の３つのテーブルが次のテーブル内で開始する位置に関するインデックスを出力する４つのより小さなテーブルとして実行される最適化を示す。例えば、テーブル４４０の、最後のテーブルだけが、この単純化された例において実際の出力ラベルを有する。これは一例に過ぎず、例証的な実施形態の機構によって多次元ルックアップ・テーブルをどのように実装できるかに関する何らかの制限を述べる又は示唆することを意図したものではないことを認識されたい。
【００４０】
図４に示すように、ポリシー・ルックアップ動作は、典型的には、コンテキスト・ラベル・テーブル４１０内のコンテキスト・ラベル（ＣＬ）のルックアップを実行することを含む。コンテキスト・ラベル・テーブル４１０内のルックアップ動作の出力は、命令ＩＤテーブル４２０内へのインデックスとなる。命令ＩＤテーブル４２０内へのインデックスは、命令に関する命令ＩＤと共に用いられて命令ＩＤテーブル４２０内のルックアップ動作が実行され、その結果が、命令ラベル・テーブル４３０内へのインデックスの出力となる。例証的な一実施形態において、実際の命令データは、付加的な８ビットの命令ラベルを有する、メモリからフェッチされた３２ビットの値であることに留意されたい。３２ビットの命令は、最初の「ＩＤ」部分を含み、これは「ａｄｄ」のような基本命令を指示し、残りのビットは、ａｄｄに対するソース及び宛先レジスタのような命令特有のオペランドである。以下で命令ＩＤ及びオペランド・ラベルを用いることによって、本質的にポリシー・ルックアップ・テーブル４１０−４４０は、基本命令ＩＤ及びオペランド・ラベルにより変わり得る。
【００４１】
命令ラベル・テーブル４３０内へのインデックスを命令（Ｉ）に関する命令ラベル（ＩＬ）と共に用いて、命令ラベル・テーブル４３０内のルックアップ動作が実行される。命令ラベル・テーブル４３０内のルックアップ動作の結果は、オペランド・ラベル・テーブル４４０内へのインデックスとなる。オペランド・ラベル・テーブル４４０内へのインデックスを、オペランドが存在する場所に応じてレジスタ３１４又はメモリ３１０と関連付けられるそれぞれのラインのデータ・ラベル（ＤＬ）であるオペランド・ラベルと共に用いて、オペランド・ラベル・テーブル４４０内のルックアップ動作を実行し、その結果は、トラップに対するフラグ命令の出力をラベル付けするのに用いられる出力ラベルとなる。例えば、算術命令に対して、出力ラベルは、図３の出力ラインＲ＋ＲＬの結果ラベル（ＲＬ）である。ロード／ストア命令に対しては、結果は、メモリからレジスタに進むＤ＋ＤＬラインである。幾つかの命令に対しては、オペランド及び結果は、すでにレジスタ内に存在する。
【００４２】
図４のラベル・ポリシー・ルックアップ動作をより明瞭に理解するために、即値をレジスタにロードするための命令の以下の簡単な例を考える。Ｉｎｔｅｌ４８６命令用語を用いると、これは以下のように表すことができる。
ＭＯＶ  ＥＡＸ，０
（３２ビットの即値０を３２ビットのレジスタＥＡＸにロードする）
【００４３】
この命令に関連する３つのラベルが存在する。即ち、命令を実行しようとするプロセス・コンテキスト上のラベル、例えばコンテキスト・ラベル（ＣＬ）と、命令自体（ＭＯＶ  ＥＡＸ）の上の命令ラベル（ＩＬ）と、即値上のオペランド・ラベル、例えば３２ビットのオペランド・データ・ワード（０）上のラベルとが存在する。また、命令ＩＤ（ＭＯＶ）も存在する。一般的な場合には、上書きされるＥＡＸレジスタ内の既存のデータ上にもラベルが存在する可能性があり、ポリシーはこのラベルにも依存し得るが、簡単にするために、本実施例において及び典型的な実施において、プロセスは、ラベルに関係なくそのレジスタ値を常に上書きすることができると仮定する。ポリシー・テーブルは、メモリ３１０内及び／又はラベル・ポリシー・キャッシュ３２０内に存在し、上述のように、これらのラベル及び命令ＩＤに基づいてアクセスされる。出力値は、ＥＡＸ内に移動する値に割り当てられる新しいラベルか、又はトラップを行うべきであることを指示する予約ラベルとなる。
【００４４】
プロセスのラベル及び命令のラベルのみが用いられる、ＮＯＰ（ノー・オペレーション）のような命令が存在することができ、より複雑な命令においては、１つ又は複数のオペランド・ラベル・テーブル内の多くの異なるオペランド・ラベル及びオペランド・ルックアップ動作を生じる多くのオペランドが存在し得る。例えば、Ｉｎｔｅｌ４８６におけるアドレス指定は、セグメント・レジスタ、基本レジスタ、インデックス・レジスタ、スケール値、及び置換からの値を含むことができ、その全てが、オペランド・ラベルを有することになる。従って、ポリシー・テーブルは、関与する正確な命令及びアドレス指定モードに基づいて次元が変化することになる。
【００４５】
当業者であれば、プロセッサは、性能上の理由で、ラベル・ポリシー・キャッシュ３２０におけるように、これらのテーブルの全て又は一部分をキャッシュすることができることを認識するであろう。同様に、典型的な場合に、全てのラベルを同一であり得るようにして、実施は、速度を上げるためにこの場合を直接（ポリシー・ルックアップなしに）処理することができる。即ち、典型的な場合には、実行プロセスに関連する命令及びデータの全てが、同じラベルを有することになる。例えば、プロセス及びそのデータは、全て「最高機密」とラベル付けすることができる。このプロセスが実行している間は、プログラムがカーネル・コンテキストに対するシステム・コールのような、クロス・ドメイン・コールを行わない限り、命令ラベル及びデータ・ラベルは、全て「最高機密」となる。プロセスがそのデータによってそのコードを単に実行し、クロス・ドメイン・コールを行わない限り、ラベルは同じままに維持され、全ての命令出力上のラベルは「最高機密」のままに維持される。
【００４６】
さらに、ポリシーは、最小又は最大関数計算を含む関連ラベル上の計算が単純な（階層）ポリシーのテーブル・サイズを縮小することを可能にすることができる。プロセッサに一語毎に直接再ラベル付けを行わせる必要なしに、メモリ内のページを迅速に再ラベル付けする機構のような付加的なハードウェア・コンポーネントを性能向上のために付加することができる。さらに、例証的な実施形態は、上記の例に用いたＩｎｔｅｌ４８６ばかりでなく、任意のプロセッサに適用することができる。
【００４７】
図５は、例証的な一実施形態による、ポリシー・テーブルの例示的な図である。図５に示した例は、１つだけの二次元ポリシー・テーブルであり、図４に示した様式のようにポリシー・ルックアップ動作を実行するために、ポリシー・エンジンにより複数のこれらの型のテーブルを用いることができることを認識されたい。図５に示したポリシー・テーブルは、例えば、コンテキスト・ラベル及び命令ラベルのような、２つだけのインデックスに基づいてポリシーを決定する単純化されたテーブルである。ポリシー・テーブルの実際の実装において、ポリシー・テーブル５００は、各命令ＩＤに対する、並びにコンテキスト及び入力オペランド・ラベルの各セットに対するポリシー・テーブルがアクセス制御規則及び遷移規則を含むような、多次元テーブル又はテーブルのセットとすることができる。アクセス制御規則は、読み出し、書き込み、及び実行の許可、並びに、出力オペランド・ラベルを指定する拡張規則、及び、コンテキストのラベルをトラップ又は変更する命令を含むことができる動作の遷移規則を包含する。
【００４８】
即ち、上述のように、トラップは、ソフトウェアのより高い特権部分へのクロス・ドメイン・コールであり、これが、継続を拒否される命令の場合を処理する。トラップに関連して、現在のコンテキスト・ラベル（ＣＬ）が遷移規則に指示されたものに変更された後で初めて命令が実行を許可される別の選択肢がある。例えば、１つのポリシーは、「機密扱いされていない」プロセスが「最高機密」データを読み出すことを単純に拒否することができ、この場合、ルックアップは出力の「トラップ」ラベルを生じることになり、プロセスを停止させ、特権トラップ・ハンドラを呼び出し、これがプロセスを終了させることになる。別の選択肢は、ポリシー・ルックアップがプロセス・コンテキスト・ラベル（ＣＬ）を「最高機密」に変更する（又は昇格させる）「遷移」規則をもたらし、それ故に命令の継続を可能にすることである。この機構は一般的であり、ポリシー・ルックアップ・テーブル内に適正なデータをロードすることによって、これらの挙動のいずれをも制御することができる。
【００４９】
図５に示すように、ポリシー・テーブルは、サブジェクト・インデックス及びオブジェクト・インデックスによってインデックス付けされた複数のエントリから構成される。例えば、サブジェクト・インデックスはテーブルの特定の行内にインデックス付けするのに用い、一方、オブジェクト・インデックスはテーブルの特定の列内にインデックス付けするのに用いることができ、或いは逆もまた可能である。一例として、サブジェクト・インデックスは、命令をサブミットするプロセスのコンテキスト・ラベルとすることができ、一方、オブジェクト・インデックスは、命令に付随する命令ラベルとすることができる。
【００５０】
ポリシー・テーブル５００内の各エントリは、対応する命令ラベルを有する命令が例えば読み取り（Ｒ）、書き込み（Ｗ）、実行許可（Ｘ）等を実行することができる許可を定義するアクセス制御規則を含む。さらに、ポリシー・テーブル５００内の各エントリは、出力オペランド・ラベル（ＯＬ）及び動作の遷移規則（ＴＲ）を指定する拡張規則をさらに含む。従って、ポリシー・テーブル５００内のルックアップを実行することによって、ポリシー・エンジンは、特定のコンテキストからの特定の命令がどんな許可を有するか、命令によって出力されるオペランドに当てはまるラベル、及び命令の遷移規則を決定することができる。
【００５１】
ひとたび、ポリシー・テーブル・ルックアップ動作によりポリシー・テーブル５００内に出力ラベル、トラップ・ラベル、又は遷移ラベルが見出されると、その出力は、命令を実行するそれぞれの命令ユニット（算術（＋−／＊）、ロード／ストア（ＬＤ／ＳＴ）、分岐等）に供給される。出力がラベルである場合には、命令ユニットは、そのラベルを任意の及び全ての出力データに貼付する。例えば、ＭＯＶ命令に関して、宛先レジスタ又はメモリ内のデータの新しいコピーは、貼付された出力ラベルを有することになる。出力ラベルがトラップを指示する場合には、分岐ユニットが実行をトラップ・ハンドラ・アドレスにリダイレクトする。出力が遷移ラベルである場合には、新しいラベルが、現在のプロセスのコンテキスト上に、即ち、コンテキスト・ラベル（ＣＬ）に設定される。
【００５２】
図６は、例証的な一実施形態による、ポリシー・ルックアップを実行するための例示的な動作を概説するフローチャートである。図６に示すように、動作は、プログラム・カウンタ（ＰＣ）によって指示され、その対応する命令ラベルと共にフェッチされている（ステップ６１０）次の命令から始まる。命令は、命令ＩＤと可能な変数にデコードされる（ステップ６２０）。上記の「ＭＯＶ  ＥＡＸ，０」の例において、命令ワードは、命令ＩＤ「ＭＯＶ」、宛先レジスタ（ＥＡＸ）、及びソース（次の即値ワード（０））を含む。
【００５３】
命令をデコードすると、命令のオペランド及び宛先は既知となり、オペランド及びオペランド・ラベルがフェッチされる（ステップ６３０）。例えば、図４及び図５に関して上述した、ポリシー・テーブル・ルックアップ動作によって、ポリシー出力ラベルが決定される（ステップ６４０）。例えば、コンテキスト・ラベル（ＣＬ）、命令ＩＤ（ＭＯＶ）、命令ラベル、及びオペランド・ラベル（０）は全て既知であり、これらを用いて、前述の方法で多次元テーブル・ルックアップ動作を実行することができる。命令ＩＤを用いて、コンテキスト・ラベル、命令ラベル及びオペランド・ラベルを有するポリシー・テーブルの特定のサブセットを識別し、そのテーブルのそれぞれにインデックスを供給して、他のテーブルへのポインタ、次いで出力ラベルを生成することができる。
【００５４】
ポリシー・テーブル・ルックアップ動作によりポリシー・テーブルから取得された出力ラベルはテストされ、それがトラップ・ラベルであるかどうか判断される（ステップ６５０）。出力ラベルがトラップ・ラベルである場合、例えば、ソフトウェア割り込みを実行してより高い特権のあるソフトウェア・ハンドラに制御を移すことによって、トラップが実行される（ステップ６６０）。出力ラベルがトラップ・ラベルでない場合には、その命令は実行され、命令の実行によって生成された結果データに付随するラベルは、結果データをストアする宛先レジスタの出力ラベル値に設定される（ステップ６７０）。例えば、即値０が、上記のＭＯＶ命令の例におけるレジスタＥＡＸ内にコピーされ、レジスタＥＡＸ上のラベルは、出力ラベルに設定される。
【００５５】
コンテキスト出力ラベルはテストされて、出力ラベルがコンテキスト遷移を指示するかどうか判断される（ステップ６８０）。そうである場合、コンテキスト・ラベル（ＣＬ）もまた、出力ラベル値に設定される（ステップ６９０）。その後、又は出力ラベルがコンテキスト遷移を指示しない場合、プログラム・カウンタ（ＰＣ）は次の命令位置に設定され、動作はステップ６１０に戻る。
【００５６】
従って、例証的な実施形態は、アクセス制御を行うためのハードウェア機構を提供する。これらのハードウェア機構は、従来のソフトウェアに基づくアクセス制御機構に存在する可能性のある、起り得るセキュリティ・ホールを防止する。従って、ひとたびデータ／命令がレジスタ内にロードされるとソフトウェアに頼るのではなくて、アクセス制御を完全にハードウェア内で実施することによって、より安全なシステムがもたらされる。
【００５７】
上述のように、例証的な実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、又はハードウェア要素とソフトウェア要素の両方を含む実施形態の形をとることができることを認識されたい。１つの例示的な実施形態において、例証的な実施形態の機構は、それらに限定されないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含む、ソフトウェア又はプログラム・コード内に実装される。
【００５８】
プログラム・コードをストアし、及び／又は実行するのに適したデータ処理システムは、メモリ要素に直接に又はシステム・バスを介して間接に結合された少なくとも１つのプロセッサを含むことになる。メモリ要素は、プログラム・コードの実際の実行中に用いられるローカル・メモリ、バルク記憶装置、及び、実行中にバルク記憶装置からコードを読み出さなくてはならない回数を減らすための、少なくとも幾つかのプログラム・コードの一時記憶をもたらすキャッシュ・メモリを含むことができる。
【００５９】
入力／出力又はＩ／Ｏデバイス（それらに限定されないが、キーボード、ディスプレイ、ポインティング・デバイス等を含む）を、直接に又は介在するＩ／Ｏコントローラを介してシステムに結合することができる。またネットワーク・アダプタをシステムに結合して、データ処理システムが介在するプライベート又はパブリック・ネットワークにより他のデータ処理システム又は遠隔プリンタ或いは記憶デバイスに結合できるようにすることができる。モデム、ケーブル・モデム及びイーサネット・カードは、現在利用可能な型のネットワーク・アダプタの幾つかにすぎない。
【００６０】
本発明の説明は、例証と説明の目的で提示したものであり、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。当業者には多くの変更及び改変が明らかであろう。実施形態は、本発明の原理、実用的な用途を最も良く説明し、そして、当業者が、企図される特定の用途に適するような種々の変更による種々の実施形態に関して本発明を理解できるように、選択し説明した。
【符号の説明】
【００６１】
１００：データ処理システム
１０２：ノース・ブリッジ及びメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）
１０４：サウス・ブリッジ及び入力／出力コントローラ・ハブ（ＳＢ／ＩＣＨ）
１０６：処理ユニット
１０８：主メモリ
１１０：グラフィック・プロセッサ
１１２：ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ
１１６：音声アダプタ
１２０：キーボード及びマウス・アダプタ
１２２：モデム
１２４：読取り専用メモリ（ＲＯＭ）
１２６：ハード・ディスク・ドライブ（ＨＤＤ）
１３０：ＣＤ−ＲＯＭドライブ
１３２：ユニバーサル・シリアル・バス（ＵＳＢ）ポート及び他のコミュニケーション・ポート
１３４：ＰＣＩ／ＰＣＬｅデバイス
１３８、１４０：バス
２００：既知のプロセッサ・アーキテクチャ
２１０：命令ユニット
２１１：順次フェッチ
２１２：命令キュー
２１３：ディスパッチ・ユニット
２１４：分岐処理ユニット
２１５、２１６、２１７：レジスタ
２２０、２２１、２２２，２２３：実行ユニット
２３０：ＧＰＲファイル
２３１：ＦＰＲファイル
２４０：完了ユニット
２５０：データ・メモリ管理ユニット（ＤＭＭＵ）
２５１：命令メモリ管理ユニット（ＩＭＭＵ）
２６０：データ・キャッシュ
２６１：命令キャッシュ
３００：コンピュータ・プロセッサ・アーキテクチャ
３０５：ラベル
３１０：メモリ・システム
３１１：データ・キャッシュ
３１２：命令キャッシュ
３１３：分岐ユニット
３１４：プログラム・レジスタ
３２０：ラベル・ポリシー・キャッシュ
３３０、３３１、３３２、３３３、３３４、３３５：ラベル・ポリシー・エンジン
３４０：命令ユニット
３４１：実行ユニット
３４２：ロード／ストア・ユニット
３４３：データＭＭＵ
３４４：命令ＭＭＵ
４１０：コンテキスト・ラベル・テーブル
４２０：命令ＩＤテーブル
４３０：命令ラベル・テーブル
４４０：オペランド・ラベル・テーブル
５００：ポリシー・テーブル
【図１】
2010092465.tif 000003
【図２】
2010092465.tif 000004
【図３】
2010092465.tif 000005
【図４】
2010092465.tif 000006
【図５】
2010092465.tif 000007
【図６】
2010092465.tif 000008