(57)【要約】  複数のメモリページ内に配置されているデータを格納するメモリ（４０６）を管理するためのメモリ管理ユニット（ＭＭＵ（６０２）を開示する。ＭＭＵ（６０２）はカレント命令を実行中に発生させられた線形アドレス（１０２）を受けるセキュリティチェックユニット（４１６）を含む。線形アドレスは被選択メモリページ内における物理アドレスのうちの一つに対応している。セキュリティチェックユニット（４１６）は線形アドレス（１０２）を用いてメモリ内に位置する一以上のセキュリティ属性データ構造にアクセスし、被選択メモリページのセキュリティ属性を取得する。セキュリティチェックユニット（４１６）はカレント命令のセキュリティ属性により伝達された数値と被選択メモリページのセキュリティ属性により伝達された数値とを比較して、比較結果に応じた出力信号を生成する。ＭＭＵはその出力信号に従って被選択メモリページにアクセスする。
2005509946.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリページ内部に配置されたデータを格納するためのメモリ（４０６）を管理するためのメモリ管理ユニット（６０２）であって、
該メモリ管理ユニット（６０２）はカレント命令の実行中に生成された線形アドレス（１０２）を受けるように接続されたセキュリティチェックユニット（４１６）を備えており、前記線形アドレス（１０２）は被選択メモリページ内における物理アドレスの一つと対応するものであり、前記セキュリティチェックユニット（４１６）は前記線形アドレス（１０２）を用いて前記メモリ（４０６）内に位置するセキュリティ属性のデータ構造の少なくとも一つにアクセスして前記被選択メモリページのセキュリティ属性を取得するように構成されており、前記セキュリティチェックユニット（４１６）は前記カレント命令のセキュリティ属性により伝達される数値を前記被選択メモリページのセキュリティ属性により伝達される数値と比較してその比較結果に応じた出力信号を生成するものであり、
前記メモリ管理ユニット（６０２）は前記出力信号に従って前記被選択メモリページにアクセスするように構成されている、メモリ管理ユニット。
【請求項２】
前記メモリ（４０６）に接続され、カレント命令の実行中に生成された線形アドレス（１０２）を受けるページングユニット（７０２）であって、前記線形アドレス（１０２）を用いて被選択メモリページ内部の物理アドレスを生成するように構成されたページングユニットを更に備えており、前記ページングユニット（７０２）は前記線形アドレス（１０２）を用いて前記メモリ（４０６）内に位置するデータ構造の少なくとも一つであってページング対象のメモリの関するものにアクセスして前記被選択メモリページのセキュリティ属性を取得するものであり、前記ページングユニット（７０２）は前記被選択メモリページの前記セキュリティ属性に応じて違反信号を生成するように構成されている、請求項１記載のメモリ管理ユニット（６０２）。
【請求項３】
前記被選択メモリページ及び前記カレント命令のうちの少なくとも一つの前記セキュリティ属性はセキュリティコンテキストＩＤ（ＳＣＩＤ）を備えており、前記ＳＣＩＤ値は０以上の整数値であり、前記被選択メモリページのセキュリティコンテキストレベルを示すものである、請求項１又は２記載のメモリ管理ユニット（６０２）。
【請求項４】
前記セキュリティ属性のデータ構造の少なくとも一つは、セキュリティ属性テーブルディレクトリ（９０４）及び少なくとも一つのセキュリティ属性テーブル（９０６）を備えている、請求項１又は２記載のメモリ管理ユニット（６０２）。
【請求項５】
前記セキュリティ属性テーブルディレクトリ（９０４）は複数のエントリを備えており、前記セキュリティ属性テーブルディレクトリ（９０４）における各エントリは現存ビット及びセキュリティ属性テーブル基底アドレス用フィールドを含んでおり、前記現存ビットは前記セキュリティ属性テーブルディレクトリエントリに対応するセキュリティ属性テーブル（９０６）が前記メモリ内に現存するか否かを示すものであり、前記セキュリティ属性テーブル基底アドレス用フィールドは前記セキュリティ属性テーブルディレクトリエントリに対応する前記セキュリティ属性テーブル（９０６）の基底アドレス用として確保されているものである、請求項４記載のメモリ管理ユニット（６０２）。
【請求項６】
前記少なくとも一つのセキュリティ属性テーブル（９０６）は複数のエントリを備えており、前記セキュリティ属性テーブル（９０６）の各エントリはセキュリティコンテキストＩＤ（ＳＣＩＤ）用フィールドを含んでおり、前記ＳＣＩＤ用フィールドは複数のビット位置を含んでおり、前記ビット位置はＳＣＩＤ値のバイナリ表現を構成しており、前記ＳＣＩＤ値は０以上の整数値であり、前記ＳＣＩＤ値は対応するメモリページのセキュリティコンテキストレベルを示すものである、請求項４記載のメモリ管理ユニット（６０２）。
【請求項７】
前記セキュリティチェックユニット（４１６）は、前記被選択メモリページの前記セキュリティ属性に加えて、前記被選択メモリページについての一組のセキュリティ属性を受けて、（ｉ）前記カレント命令の前記セキュリティ属性により伝達される前記数値と被選択メモリページの前記セキュリティ属性により伝達される前記数値との比較結果、及び、（ｉｉ）前記被選択メモリページの前記一組のセキュリティ属性とに従い、前記出力信号を生成するように構成されている、請求項１記載のメモリ管理ユニット（６０２）。
【請求項８】
複数のメモリページ内部に配置されたデータを格納するために用いられるメモリ（４０６）に対してアクセスセキュリティを付与する方法であって：
第１のメモリページ内に存する命令の実行中に生成された線形アドレス（１０２）及び前記線形アドレス（１０２）のセキュリティ属性を受ける処理と；
前記線形アドレス（１０２）を用いて、前記メモリ（４０６）内に位置するデータ構造の少なくとも一つであってページング対象のメモリに関するものにアクセスし、被選択メモリページの基底アドレス及び前記被選択メモリページのセキュリティ属性を取得する処理と；
前記被選択メモリページの前記基底アドレスをオフセットと組み合わせて、前記命令の前記セキュリティ属性と前記被選択メモリページの前記セキュリティ属性とによって前記アクセスの権限があることが示される場合には、前記被選択メモリページ内部の物理アドレスを生成する処理と；
前記命令の前記セキュリティ属性と前記被選択メモリページの前記セキュリティ属性とによって前記アクセスの権限がないことが示される場合には、違反信号を生成する処理と；
前記命令の実行中に生成された前記線形アドレス（１０２）を用いて前記メモリ（４０６）内に位置するセキュリティ属性のデータ構造の少なくとも一つにアクセスして、前記第１のメモリページの付加的なセキュリティ属性と前記選択されたメモリの付加的なセキュリティ属性とを取得する処理と；
前記第１のメモリページの付加的なセキュリティ属性により伝達される数値を前記選択されたメモリの前記付加的なセキュリティ属性により伝達される数値と比較する処理と；
前記第１のメモリページの前記セキュリティ属性により伝達される数値と選択されたメモリの前記付加的なセキュリティ属性により伝達される数値との比較結果に従って、被選択メモリページにアクセスする処理と
を備える方法。
【請求項９】
前記アクセスする処理は、前記命令の実行中に生成された前記線形アドレス（１０２）を用いて前記メモリ（４０６）内に位置するセキュリティ属性のデータ構造の少なくとも一つにアクセスして、前記第１のメモリページの付加的なセキュリティ属性と前記被選択メモリページの付加的なセキュリティ属性とを取得する処理を備えており、前記少なくとも一つのセキュリティ属性のデータ構造は、セキュリティ属性テーブルディレクトリ（９０４）と少なくとも一つのセキュリティ属性テーブル（９０６）とを備えており、前記第１のメモリページの前記付加的なセキュリティ属性は前記第１のメモリページのセキュリティコンテキストＩＤ（ＳＣＩＤ）値を備えており、前記第１のメモリページにおける前記ＳＣＩＤ値は０以上の整数値であり且つ前記第１のメモリページのセキュリティコンテキストレベルを示すものであり、前記被選択メモリページの前記付加的なセキュリティ属性は前記被選択メモリページのセキュリティコンテキストＩＤ（ＳＣＩＤ）値を備えており、前記被選択メモリページの前記ＳＣＩＤ値は０以上の整数値であり且つ前記被選択メモリページのセキュリティコンテキストレベルを示すものである、請求項８記載の方法。
【請求項１０】
メモリ（４０６）を管理するためのプロセッサ（４０２）において、
該プロセッサは：メモリ（４０６）に機能的に接続され、前記メモリ（４０６）から命令をフェッチして該命令を実行するように構成された実行ユニット（６００）と；前記メモリ（４０６）に機能的に接続され、前記メモリ（４０６）を管理するように構成されたメモリ管理ユニット（６０２）とを備えており、
前記メモリ管理ユニット（６０２）は、前記メモリ（４０６）が複数のメモリページ内に配置されたデータを格納するように前記メモリ（４０６）を管理するといった設定が可能なものであり、
前記メモリ管理ユニット（６０２）は、カレント命令の実行中に生成された線形アドレス（１０２）を受けるように接続されたセキュリティチェックユニット（４１６）を備えており、前記線形アドレス（１０２）は被選択メモリページ内における物理アドレスの一つと対応するものであり、前記セキュリティチェックユニット（４１６）は前記線形アドレス（１０２）を用いて前記メモリ（４０６）内に位置するセキュリティ属性のデータ構造の少なくとも一つにアクセスして前記被選択メモリページのセキュリティ属性を取得するように構成されており、前記セキュリティチェックユニット（４１６）は前記カレント命令のセキュリティ属性により伝達される数値を前記被選択メモリページのセキュリティ属性により伝達される数値と比較してその比較結果に応じた出力信号を生成するものであり、
前記メモリ管理ユニット（６０２）は前記出力信号に応じて前記被選択メモリページにアクセスするように構成されている、ことを特徴とするプロセッサ（４０２）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概略、メモリ管理システム及び方法に関し、特に、メモリ内に格納されたデータの保護を付与するメモリ管理システム及び方法に関する。
【背景技術】
【０００２】
典型的なコンピュータシステムは、比較的ローコストで比較的ハイレベルのパフォーマンスを得るために記憶階層を有している。いくつかの異なるソフトウェアプログラムの命令は典型的には比較的大容量且つ低速の不揮発性のストレージユニット（例えば、ディスクドライブユニット）に格納される。ユーザがそれらのプログラムのうちの一つを選択して実行する際、選択されたプログラムの命令はメインメモリユニット（例えばランダムアクセスメモリ（ＲＡＭ））にコピーされ、中央処理ユニット（ＣＰＵ）がメインメモリユニットから選択されたプログラムの命令を取得する。周知の仮想メモリ管理技術によれば、データ構造の一部のみを任意の時点にメインメモリユニット内に格納することにより、ＣＰＵはメインメモリユニットの容量よりも大きいデータ構造にアクセスすることができる。データ構造の残りの部分は、比較的大容量且つ低速の不揮発性のストレージユニット内に格納され、必要となったときだけ、メインメモリユニット内にコピーされる。
【０００３】
仮想メモリは、典型的には、ＣＰＵのアドレス空間をページフレーム又は“ページ”と呼ばれる多数のブロックに分割することにより実現されている。一部のページに対応するデータのみが任意の時点においてメインメモリユニット内に格納される。ＣＰＵが任意のページ内のアドレスを生成し、且つ、そのページのコピーがメインメモリユニット内に位置していなかった場合、要求されたページのデータが比較的大容量且つ低速の不揮発性のストレージユニットからメインメモリユニットにコピーされる。この過程において、要求されたページ分の空きを作るために、他のページのデータをメインメモリから不揮発性ストレージユニットにコピーしても良い。
【０００４】
ポピュラーな８０ｘ８６（ｘ８６）プロセッサアーキテクチャはプロテクトされた仮想アドレスモード（即ち、プロテクトモード）をサポートするために特化したハードウェア要素を含んでいる。ここで、図１乃至３を用いて、ｘ８６プロセッサがどのようにして仮想メモリとメモリ保護機能の両方を実現しているのかについて説明する。図１はｘ８６プロセッサアーキテクチャについての周知の線形−物理アドレス変換メカニズム１００の図である。アドレス変換メカニズム１００はｘ８６プロセッサ内部に搭載されており、ｘ８６プロセッサ内部において生成された線形アドレス１０２、ページテーブルディレクトリ（即ち、ページディレクトリ）１０４、ページテーブル１０６を含む多数のページテーブル、ページフレーム１０８を含む多数のページフレーム、及び制御レジスタ（ＣＲ３）１１０を備えている。ページディレクトリ１０４及び多数のページテーブルは、ページング対象となるメモリに関するデータ構造であって、オペレーティングシステムソフトウェア（即ちオペレーティングシステム）により生成され保持されているものである。ページディレクトリ１０４は常にメモリ（例えば、メインメモリユニット）内部に位置している。簡単にするため、ページテーブル１０６及びページフレーム１０８もメモリ内に存することとする。
【０００５】
図１に示されるように、線形アドレス１０２は、線形−物理アドレス変換を達成するために、３つの部分に分けられている。ＣＲ３  １１０における最高位の数ビットはページディレクトリ基底レジスタを格納するために用いられる。ページディレクトリ基底レジスタはページディレクトリ１０４を含むメモリページの基底アドレスである。ページディレクトリ１０４はページディレクトリエントリ１１２を含む多数のページディレクトリエントリを備えている。線形アドレス１０２における上位の“ディレクトリインデックス”部は線形アドレス１０２における最上位又は最高位の数ビットを含むものであるが、これはページディレクトリ１０４においてインデックスとして用いられる。ページディレクトリエントリ１１２は、ＣＤ３  １１０のページディレクトリ基底アドレス及び線形アドレス１０２における上位の“ディレクトリインデックス”部を用いて、ページディレクトリ１０４内部から選択される。
【０００６】
図２はｘ８６プロセッサアーキテクチャのページディレクトリエントリ用フォーマット２００の図である。図２に示されるように、任意のページディレクトリエントリにおける最高位（即ち、最上位）の数ビットにはページテーブル基底アドレスが含まれている。なお、ページテーブル基底アドレスとは、対応するページテーブルを含むメモリページの基底アドレスである。ページディレクトリエントリ１１２におけるページテーブル基底アドレスは対応するページテーブル１０６を選択するために用いられる。
【０００７】
図１に戻って、ページテーブル１０６はページテーブルエントリ１１４を含む多数のページテーブルエントリを備えている。線形アドレス１０２における中位の“テーブルインデックス”はページテーブル１０６内におけるインデックスとして用いられ、それによってページテーブルエントリ１１４が選択される。図３はｘ８６プロセッサアーキテクチャのページテーブルエントリ用フォーマット３００の図である。図３に示されるように、任意のページテーブルエントリにおける最高位（即ち、最上位）の数ビットには、ページフレーム基底アドレスが含まれている。なお、ページフレーム基底アドレスとは対応するページフレームの基底アドレスである。
【０００８】
再び図１を参照すると、ページテーブルエントリ１１４におけるページフレーム基底アドレスは対応するページフレーム１０８を選択するために用いられる。ページフレーム１０８は多数のメモリロケーションを含む。線形アドレス１０２における下位又は“オフセット”部はページフレーム１０８内におけるインデックスとして用いられる。ページテーブルエントリ１１４のページフレーム基底アドレスと線形アドレス１０２のオフセット部とは、組み合わされると、線形アドレス１０２に対応する物理アドレスを構成し、ページフレーム１０８内部におけるメモリロケーション１１６を示す。メモリロケーション１１６は線形−物理アドレス変換の結果である物理アドレスを有する。
【０００９】
メモリ保護機能に関し、図２におけるページディレクトリエントリ用フォーマット２００及び図３におけるページテーブルエントリ用フォーマット３００はユーザ／スーパーバイザ（Ｕ／Ｓ）ビットとリード／ライト（Ｒ／Ｗ）ビットとを有している。Ｕ／Ｓビット及びＲ／Ｗビットの内容は、対応するページフレーム（即ち、メモリページ）を権限なしのアクセスから保護するためにオペレーティングシステムによって用いられる。Ｕ／Ｓ＝０はオペレーティングシステムのメモリページを示すために用いられており、オペレーティングシステムの“スーパーバイザ”レベルに対応している。オペレーティングシステムにおけるスーパーバイザレベルは、ｘ８６プロセッサにより実行されているソフトウェアプログラム及びルーチンの現在の特権レベル０（ＣＰＬ０）に対応している。Ｕ／Ｓ＝１はユーザのメモリページを示すために用いられており、オペレーティングシステムの“ユーザ”レベルに対応している。オペレーティングシステムにおけるユーザレベルはｘ８６プロセッサにおけるＣＰＬ３に対応している。（ユーザレベルはｘ８６プロセッサにおけるＣＰＬ１及び／又はＣＰＬ２に対応している。）
【００１０】
Ｒ／Ｗビットは、対応するメモリページに対して許容されるアクセスのタイプを示すために用いられる。Ｒ／Ｗ＝０は、対応するメモリページに関してはリードオンリーのアクセスが許可されていることを示す（即ち、対応するメモリページは“リードオンリー”である）。Ｒ／Ｗ＝１は対応するメモリページに関してはリードアクセス及びライトアクセスの双方ともが許可されていることを示す（即ち、対応するメモリページは“リードライト”である）。
【００１１】
図１における線形−物理アドレス変換処理において、ページフレーム１０８に対応するページディレクトリエントリ１１２及びページテーブルエントリ１１４におけるＵ／Ｓビットの内容についてＡＮＤをとり、ページフレーム１０８に対してアクセス権限があるか否かを決定する。同様に、ページディレクトリエントリ１１２及びページテーブルエントリ１１４におけるＲ／Ｗビットの内容についてＡＮＤをとり、ページフレーム１０８に対してアクセス権限があるか否かを決定する。もし、Ｕ／ＳビットとＲ／Ｗビットとの論理的な組み合わせにより、ページフレーム１０８に対するアクセス権限があることが示される場合、メモリロケーション１１６は物理アドレスを用いてアクセスされる。一方、Ｕ／ＳビットとＲ／Ｗビットとの論理的な組み合わせにより、ページフレーム１０８に対するアクセス権限がないことが示された場合、保護違反のインジケーションがシグナルされる。
【００１２】
残念ながら、上述したｘ８６プロセッサアーキテクチャにおけるメモリ保護メカニズムはメモリ内に格納されたデータの保護に関し十分ではない。例えば、スーパーバイザレベルで実行される（例えば、ＣＰＬ０を有する）ものであれば、如何なるソフトウェアプログラムやルーチンもメモリの任意の箇所にアクセスできてしまうし、また、“リードオンリー”（Ｒ／Ｗ＝０）といった指定の無いメモリの如何なる部分も変更する（即ち、当該部分に対して書き込み動作をする）こともできてしまう。加えて、スーパーバイザレベルで実行されていることから、当該ソフトウェアプログラム又はルーチンはメモリ上の如何なる部分における属性（即ち、Ｕ／Ｓビット及びＲ／Ｗビット）も変更することができる。従って、当該ソフトウェアプログラム又はルーチンは“リードオンリー”と指定されているメモリの如何なる部分も“リードライト”（Ｒ／Ｗ＝１）に変更することができ、その変更後、そのメモリの該当部分を書き換えることもできる。
【００１３】
本発明は、上記の問題のいくつか又はすべてを解決しうる又は少なくとも減じうる方法及びその方法を実現する装置に関する。
【発明の開示】
【００１４】
複数のメモリページ内部に配置されたデータを格納するメモリを管理するためのメモリ管理ユニットを開示する。メモリ管理ユニットは現在の命令の実行中に生成された線形アドレスを受けるセキュリティチェックユニットを含む。線形アドレスは被選択メモリページ内における物理アドレスの一つと対応している。セキュリティチェックユニットは線形アドレスを用いてメモリ内に位置する一以上のセキュリティ属性のデータ構造にアクセスし、被選択メモリページのセキュリティ属性を取得する。セキュリティチェックユニットは現在の命令におけるセキュリティ属性により伝達される数値と被選択メモリページにおけるセキュリティ属性により伝達される数値とを比較して、比較結果に応じた出力信号を生成する。メモリ管理ユニットはその出力信号に従って被選択メモリページにアクセスする。
【００１５】
実行ユニットと管理ユニット（ＭＭＵ）を含む中央処理ユニット（ＣＰＵ）について記す。実行ユニットは、メモリから命令をフェッチして、その命令を実行する。ＭＭＵはメモリを管理するものであり、複数のメモリページ内部に配置されたデータをメモリが格納するように該メモリを管理するといった設定が可能なものである。ＭＭＵは上述のセキュリティチェックユニットを備える。メモリ、ＣＰＵ及びＭＭＵを備えるコンピュータシステムが記される。
【００１６】
複数のメモリページ内に配置されたデータを格納するために用いられるメモリに対して、アクセスセキュリティを与えるための方法を記載する。その方法は、命令の実行中に生成された線形アドレス及びその命令のセキュリティ属性を受けることを含む。ここで、該命令は第１のメモリページ内に存している。線形アドレスはメモリ内に位置する一以上のデータ構造であってページング対象のメモリに関するものにアクセスして、被選択メモリページの基底アドレスと該被選択メモリページのセキュリティ属性とを取得するために用いられる。該命令のセキュリティ属性（例えば、ｘ８６プロセッサアーキテクチャにより定義されたような命令の現在の特権レベル即ちＣＰＬ）及び被選択メモリページのセキュリティ属性（例えば、被選択メモリページのｘ８６Ｕ／Ｓビット及びｘ８６Ｒ／Ｗビット）によりアクセス権限があるとされた場合、被選択メモリページの基底アドレスは、被選択メモリページ内部における物理アドレスを生成するために、オフセットと組み合わせられる。該命令のセキュリティ属性及び被選択メモリページのセキュリティ属性によりアクセス権限がないとされた場合、違反信号（例えばｘ８６ＧＰＦ信号）が生成される。
【００１７】
線形アドレスは、メモリ内に位置する一以上のセキュリティ属性のデータ構造にアクセスして、第１のメモリページにおける付加的なセキュリティ属性及び被選択メモリページの付加的なセキュリティ属性を取得するためにも用いられる。第１のメモリページにおける付加的なセキュリティ属性により伝達される数値は、被選択メモリページの付加的なセキュリティ属性により伝達された数値と比較される。第１のメモリページにおけるセキュリティ属性により伝達される数値と被選択メモリページにおける付加的なセキュリティ属性との比較結果に従って、被選択メモリページがアクセスされる。
【００１８】
本発明は、以下の説明と関連する付属図面とを参照することにより、理解されるであろう。ここで、図面においては、同様な構成要素には同じ参照符号が付されている。
本発明については、様々な変形及び置換が可能であるが、特定の実施例が図に例示され且つここに詳細に説明される。しかしながら、ここにおける特定の実施例に関する記述は開示した特定の形態に本発明を限定することを意図したものではなく、逆に、付属のクレームに定義されたような発明の精神及び技術的範囲内に属する変形例、均等物及び置換のすべてをカバーすることが意図される。
【発明の実施の形態】
【００１９】
本発明の実施例について以下に説明する。分かり易くするために、本明細書においては、実際に実施されるもののすべての特徴は説明しない。勿論、そういった現実的な実施例の開発においては、システム関連又はビジネス関連の制約の遵守のような、その開発特有の目的であって、実施例間において互いに異なることを達成するために、個々の実施に特有な決定が多数なされるはずであると思われる。また、かかる開発努力は複雑で時間を要するものであるがそれにも拘らず本件開示による利益を受ける分野における当業者にとっては日常的な業務であると思われる。
【００２０】
図４は、ＣＰＵ４０２、システム又は“ホスト”ブリッジ４０４、メモリ４０６、第１のデバイスバス４０８（例えば、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔバス、即ち、ＰＣＩバス）、デバイスバス間ブリッジ４１０、第２のデバイスバス（例えば、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅバス、つまりＩＳＡバス）及び４つのデバイスハードウェアユニット４１４Ａ−４１４Ｄを備えるコンピュータシステム４００の一実施例の図である。ホストブリッジ４０４はＣＰＵ４０２、メモリ４０６、及び第１のデバイスバス４０８に接続されている。ホストブリッジ４０４はＣＰＵ４０２と第１のデバイスバス４０８との間における信号変換を行うと共に、メモリ４０６をＣＰＵ４０２及び第１のデバイスバス４０８に機能的に接続する。デバイスバス間ブリッジ４１０は第１のデバイスバス４０８及び第２のデバイスバス４１２間に接続され、第１のデバイスバス４０８及び第２のデバイスバス４１２間における信号変換を行う。図４の実施例においては、デバイスハードウェアユニット４１４Ａ及び４１４Ｂは第１のデバイスバス４０８に接続され、デバイスハードウェアユニット４１４Ｃ及び４１４Ｄは第２のデバイスバス４１２に接続されている。一以上のデバイスハードウェアユニット４１４Ａ−４１４Ｄは、例えば、ストレージデバイス（例えば、ハードディスクドライブ、フロッピードライブ、及びＣＤ−ＲＯＭドライブ）、通信デバイス（例えば、モデムやネットワークアダプタ）、又はＩ／Ｏデバイス（たとえば、ビデオデバイス、オーディオデバイス、及びプリンタ）である。
【００２１】
図４の実施例において、ＣＰＵ４０２はＣＰＵセキュリティチェックユニット（ＳＣＵ）４１６を備えている。後に詳述するように、ＣＰＵ  ＳＣＵ４１６はメモリ４０６をＣＰＵ４０２により生成された不正アクセス（権限のないアクセス）から保護する。ここで、他の実施例においては、図４に示されているように、ホストブリッジ４０４がＣＰＵ４０２の一部であっても良い。
【００２２】
図５は図４のコンピュータシステム４００における様々なハードウェア要素及びソフトウェア要素間の関係を示す図である。図５の実施例においては、多数のアプリケーションプログラム５００、オペレーティングシステム５０２、セキュリティ用カーネル５０４、及びデバイスドライバ５０６Ａ−５０６Ｄがメモリ４０６内に格納されている。アプリケーションプログラム５００、オペレーティングシステム５０２、セキュリティ用カーネル５０４、及びデバイスドライバ５０６Ａ−５０６Ｄは、ＣＰＵ４０２により実行される命令を含んでいる。オペレーティングシステム５０２は、ユーザインタフェース及びソフトウェアに関する“プラットフォーム”を提供し、そのプラットフォーム上でアプリケーションプログラム５００が実行される。オペレーティングシステム５０２は、例えば、ファイルシステム管理、プロセス管理、及び入出力（Ｉ／Ｏ）制御を含む基本的なサポート機能をも提供する。
【００２３】
オペレーティングシステム５０２は基本的なセキュリティ機能を提供するものとしても良い。例えば、ＣＰＵ４０２（図４）はｘ８６命令セットにおける命令を実行するｘ８６プロセッサであっても良い。その場合、ＣＰＵ４０２は、上述したようにプロテクトモードにおいて仮想メモリ保護機能及び物理メモリ保護機能の両方を提供するために特化したハードウェア要素を備えていても良い。オペレーティングシステム５０２は、例えば、Ｗｉｎｄｏｗｓ（登録商標）ファミリのＯＳ（マイクロソフト社、ワシントン州レッドモンド）の一つであっても良い。このＯＳは、ＣＰＵ４０２をプロテクトモードで動作させ、プロテクトモードにおいて仮想メモリ及びメモリ保護の双方を提供するためにＣＰＵ４０２の特化したハードウェア要素を利用する。
【００２４】
後に更に詳述するように、セキュリティ用カーネル５０４は、オペレーティングシステム５０２により提供されるセキュリティ機能に勝る付加的なセキュリティ機能を提供し、メモリ４０６内に格納されたデータを不正アクセスから保護する。図５に示されるように、セキュリティ用カーネル５０４は、ＣＰＵ  ＳＣＵ４１６に接続されている。後に詳述するように、ＣＰＵ  ＳＣＵ４１６は、ソフトウェアにより開始されたメモリへのアクセスのすべてを監視して、メモリ４０６に対する権限のあるアクセスのみを許可する。
【００２５】
図５の実施例において、デバイスドライバ５０６Ａ−５０６Ｄは、それぞれ、対応するデバイスハードウェアユニット４１４Ａ−４１４Ｄと機能的に関連付けられ、接続されている。例えば、デバイスハードウェアユニット４１４Ａ及び４１４Ｄを“セキュア”デバイス（セキュリティのかかったデバイス）とし、対応するデバイスドライバ５０６Ａ及び５０６Ｄを“セキュア”デバイスドライバ（セキュリティのかかったデバイスドライバ）としても良い。セキュリティ用カーネル５０４はオペレーティングシステム５０２とセキュアデバイスドライバ５０６Ａ及び５０６Ｄとの間に接続され、アプリケーションプログラム５００及びオペレーティングシステム５０２によるセキュアデバイスドライバ５０６Ａ及び５０６Ｄ並びに対応するセキュアデバイス４１４Ａ及び４１４Ｄに対するすべてのアクセスを監視しても良い。セキュリティ用カーネル５０４は、アプリケーションプログラム５００及びオペレーティングシステム５０２がセキュアデバイスドライバ５０６Ａ及び５０６Ｄ並びに対応するセキュアデバイス４１４Ａ及び４１４Ｄに対する権限のないアクセスを行うことを防止しても良い。一方、デバイスドライバ５０６Ｂ及び５０６Ｃを“ノンセキュア”デバイスドライバ（セキュリティのかかっていないデバイスドライバ）としても良く、対応するデバイスハードウェアユニット４１４Ｂ及び４１４Ｃを“ノンセキュア”デバイスハードウェアユニット（セキュリティのかかっていないデバイスハードウェアユニット）としても良い。デバイスドライバ５０６Ｂ及び５０６Ｃ並びに対応するデバイスハードウェアユニット４１４Ｂ及び４１４Ｃは、例えば、“レガシー”デバイスドライバ及び“レガシー”デバイスハードウェアユニットであっても良い。
【００２６】
ここで、他の実施例においては、セキュリティ用カーネル５０４はオペレーティングシステム５０２の一部であっても良い。また、更に他の実施例においては、セキュリティ用カーネル５０４、デバイスドライバ５０６Ａ及び５０６Ｄ、及び／又はデバイスドライバ５０６Ｂ及び５０６Ｃがオペレーティングシステム５０２の一部であっても良い。
【００２７】
図６は、図４のコンピュータシステム４００におけるＣＰＵ４０２の一実施例の図である。図６の実施例において、ＣＰＵ４０２は、実行ユニット６００、メモリ管理ユニット（ＭＭＵ）６０２、キャッシュユニット６０４、バスインタフェースユニット（ＢＩＵ）６０６、一組の制御レジスタ６０８、及び一組のセキュア実行モード（ＳＥＭ）レジスタ６１０を備えている。ＣＰＵ  ＳＣＵ４１６はＭＭＵ６０２内部に位置している。後に詳述するように、一組のＳＥＭレジスタ６１０は、図４のコンピュータシステム４００内部でセキュア実行モード（ＳＥＭ）を実現するために用いられており、ＣＰＵ  ＳＣＵ４１６の動作は、一組のＳＥＭレジスタ６１０の内容によって制御される。ＳＥＭレジスタ６１０はセキュリティ用カーネル５０４（図５）によってアクセス（即ち、書込み及び／又は読出し）される。図４のコンピュータシステム４００は、例えば、（ｉ）ＣＰＵ４０２がｘ８６プロテクトモードで動作するｘ８６プロセッサであり、（ｉｉ）メモリページングがイネーブルになっており、且つ、（ｉｉｉ）ＳＥＭレジスタ６１０の内容がＳＥＭ動作を示している場合に、ＳＥＭで動作することとしても良い。
【００２８】
一般的に、一組の制御レジスタ６０８の内容はＣＰＵ４０２の動作を制御している。従って、一組の制御レジスタ６０８の内容は実行ユニット６００、ＭＭＵ６０２、キャッシュユニット６０４、及び／又はＢＩＵ６０６の動作を制御している。一組の制御レジスタ６０８は、例えば、ｘ８６プロセッサアーキテクチャにおける多数の制御レジスタを含むものとしても良い。
【００２９】
ＣＰＵ４０２における実行ユニット６００は命令（例えば、ｘ８６命令）及びデータをフェッチし、フェッチされた命令を実行し、そして、命令実行中に信号（例えば、アドレス信号、データ信号、及び制御信号）を生成する。実行ユニット６００はキャッシュユニット６０４に接続されており、キャッシュユニット６０４及びＢＩＵ６０６を介してメモリ４０６（図４）から命令を受けることとしても良い。
【００３０】
コンピュータシステム４００におけるメモリ４０６（図４）はそれぞれ固有の物理アドレスを有しているメモリロケーションを多数含んでいる。ページングがイネーブルになった状態においてプロテクトモードで動作するとき、ＣＰＵ４０２のアドレス空間はページフレーム又は“ページ”と呼ばれる多数のブロックに分けられる。上述したように、一部のページに対応するデータのみが任意の時点でメモリ４０６内に格納される。図６の実施例において、命令実行中に実行ユニット６００により生成されたアドレス信号はセグメント（即ち、“論理”）アドレスを示す。後述するように、ＭＭＵは実行ユニット６００により生成されたセグメントアドレスをメモリ４０６における対応する物理アドレスに変換する。ＭＭＵはキャッシュユニット６０４に対して物理アドレスを提供する。キャッシュユニット６０４は、実行ユニット６００により最近フェッチされた命令やデータを格納するために用いられる比較的小さなストレージユニットである。ＢＩＵ６０６は、キャッシュユニット６０４及びホストブリッジ４０４間に接続され、その時点でキャッシュユニット６０４に存在しなかった命令及びデータを、ホストブリッジ４０４を介して、メモリ４０６からフェッチするために用いられる。
【００３１】
図７は、図６におけるＭＭＵの一実施例の図である。図７の実施例において、ＭＭＵ６０２は、セグメンテーションユニット７００、ページングユニット７０２、ＣＰＵ  ＳＣＵ４１６、及び選択ロジック７０４を備えている。ここで、選択ロジック７０４は、セグメンテーションユニット７００の出力とページングユニット７０２の出力との一方を選択して、物理アドレスを生成するためのものである。図７に示されるように、セグメンテーションユニット７００は実行ユニット６００からセグメントアドレスを受けて、ｘ８６プロセッサアーキテクチャの周知のセグメント−線形アドレス変換メカニズムを用い、出力として、対応する線形アドレスを生成する。図７に示されるように、“ＰＡＧＩＮＧ”信号によりイネーブルとされると、ページングユニット７０２は、セグメンテーションユニット７００により生成された線形アドレスを受けて、対応する物理アドレスを生成する。ＰＡＧＩＮＧ信号は、ｘ８６プロセッサアーキテクチャの制御レジスタ０（ＣＲ０）であって一組の制御レジスタ６０８（図６）のうちの一つにおけるページングフラグ（ＰＧ）のミラーであっても良い。ＰＡＧＩＮＧ信号がディアサートされると、メモリページングはイネーブルでなくなり、選択ロジック７０４はセグメンテーションユニット７００から受けた線形アドレスを物理アドレスとして生成する。
【００３２】
ＰＡＧＩＮＧ信号がアサートされると、メモリページングはイネーブルになり、ページングユニット７０２は、上述したｘ８６プロセッサアーキテクチャ（図１）における線形−物理アドレス変換メカニズム１００を利用して、セグメンテーションユニット７００から受けた線形アドレスを対応する物理アドレスに変換する。上述したように、線形−物理アドレス変換処理において、選択されたページディレクトリエントリ及び選択されたページテーブルエントリのＵ／Ｓビットの内容はＡＮＤをとられて、ページフレームに対するアクセスの権限の有無について決定がなされる。同様に、選択されたページディレクトリエントリ及び選択されたページテーブルエントリのＲ／Ｗビットの内容もＡＮＤをとられて、当該ページフレームに対するアクセスの権限の有無について決定がなされる。Ｕ／Ｓビット及びＲ／Ｗビットの論理的な組み合わせによってページフレームに対するアクセス権限があることが示される場合、ページングユニット７０２は線形−物理アドレス変換処理の結果として物理アドレスを生成する。選択ロジック７０４はページングユニット７０２により生成された物理アドレスを受けて、ページングユニット７０２から受けた物理アドレスを物理アドレスとして生成し、その物理アドレスをキャッシュユニット６０４に提供する。
【００３３】
一方、Ｕ／Ｓビット及びＲ／Ｗビットの論理的な組み合わせによってページフレーム１０８に対するアクセス権限がないことが示される場合、ページングユニット７０２は線形−物理アドレス変換処理の間、物理アドレスを生成しない。その代わり、ページングユニット７０２は一般保護違反（ＧＰＦ）信号をアサートし、ＭＭＵ６０２はそのＧＰＦ信号を実行ユニット６００に転送する。ＧＰＦ信号に応じて、実行ユニット６００は、実行ハンドラルーチンを実行しても良く、ＧＰＦ信号がアサートされたときに実行中であったアプリケーションプログラム５００（図５）のうちの一つの実行を完全に停止することとしても良い。ページングユニット７０２は、最近決定された所定数の線形−物理アドレス変換（比較的少数）を格納するためのアドレス変換バッファ（ＴＬＢ）を備えていても良い。
【００３４】
図８は、図７におけるＣＰＵ  ＳＣＵ４１６の一実施例の図である。図８の実施例において、ＣＰＵ  ＳＣＵ４１６は、一組のＳＥＭレジスタ６１０（図６）に接続されたセキュリティチェック用論理回路８００とセキュリティ属性テーブル（ＳＡＴ）エントリ用バッファ８０２とを備えている。後述するように、ＳＡＴエントリには、メモリページに対応したページディレクトリエントリ及びページテーブルエントリにおけるＵ／Ｓビット及びＲ／Ｗビットに勝る付加的なセキュリティ情報を含んでいる。セキュリティチェック用論理回路８００は、任意のＳＡＴエントリ内に格納された付加的なセキュリティ情報を用いて、対応するメモリページに対する権限のないソフトウェアにより始動されたアクセスを防止する。ＳＡＴエントリ用バッファ８０２は、最近アクセスされた所定数のメモリページに関するＳＡＴエントリ（比較的少数）を格納するために用いられる。
【００３５】
上述したように、一組のＳＥＭレジスタ６１０は、図４のコンピュータシステム４００内部にてセキュア実行モード（ＳＥＭ）を実現するために用いられている。一組のＳＥＭレジスタ６１０の内容はＣＰＵ  ＳＣＵ４１６の動作を制御する。セキュリティチェック用論理回路８００は、ＳＡＴエントリ用バッファ８０２に格納されるべき情報をＭＭＵ６０２から図８に示されるコミュニケーションバスを介して受ける。セキュリティチェック用論理回路８００は、ページングユニット７０２により生成された物理アドレスも受ける。
【００３６】
以下、図９乃至図１１を用いて、図４のコンピュータシステム内においてどのようにして被選択メモリページに関する付加的なセキュリティ情報が取得されるかについて説明する。図９は、被選択メモリページに関するＳＡＴエントリにアクセスして、該被選択メモリページについての付加的なセキュリティ情報を取得するためのメカニズム９００の一実施例の図である。図９のメカニズム９００は、図８のセキュリティチェック用論理回路８００内部に搭載されていても良いし、図４のコンピュータシステム４００がＳＥＭで動作する際に実現されることとしても良い。メカニズム９００は、命令実行中にセグメンテーションユニット７００（図７）により生成された線形アドレス９０２、ＳＡＴディレクトリ９０４、ＳＡＴ９０６を含む多数のＳＡＴ、及び一組のＳＥＭレジスタ６１０におけるＳＡＴ基底アドレス用レジスタを備えている。ＳＡＴディレクトリ９０４及びＳＡＴ９０６を含む多数のＳＡＴはセキュリティ用カーネル５０４（図５）により生成され保持されているＳＥＭデータ構造である。後述するように、ＳＡＴディレクトリ９０４（現存する場合）及び必要とされるＳＡＴはアクセスされる前にメモリ４０６にコピーされる。
【００３７】
ＳＡＴ基底アドレス用レジスタ９０８は現存（Ｐ）ビットを含んでいる。このＰビットは、ＳＡＴ基底アドレス用レジスタ９０８内部に有効なＳＡＴディレクトリ基底アドレスが存在することを示すものである。ＳＡＴ基底アドレス用レジスタ９０８のうち、最高位の（即ち、最上位の）数ビットは、ＳＡＴディレクトリ基底アドレス用に確保されている。ＳＡＴディレクトリ基底アドレスはＳＡＴディレクトリ９０４を含むメモリページの基底アドレスである。Ｐ＝１の場合、ＳＡＴディレクトリ基底アドレスは有効であり、ＳＡＴテーブルはメモリページのセキュリティ属性を明確に示している。Ｐ＝０の場合、ＳＡＴディレクトリ基底アドレスは有効でなく、ＳＡＴテーブルは存在せず、メモリページのセキュリティ属性はＳＡＴデフォルト用レジスタにより決定される。
【００３８】
図１０は、ＳＡＴデフォルト用レジスタ１０００の一実施例の図である。図１０の実施例において、ＳＡＴデフォルト用レジスタ１０００は、セキュアコンテキストＩＤ（ＳＣＩＤ）フィールドを含んでいる。ＳＣＩＤフィールドは、ＳＡＴデフォルト用レジスタ１０００における多数のビット位置を含んでいる。複数のビット位置は、一つのＳＣＩＤ値のバイナリ表記を形成する。ここで、ＳＣＩＤ値は０以上の整数値である。ＳＣＩＤ値は、コンピュータシステム４００内におけるメモリページ用のデフォルトセキュリティコンテキストレベルを示す。例えば、ＳＣＩＤフィールドがＳＡＴデフォルト用レジスタ１０００におけるｎビットを含む場合、任意のメモリページが、コンピュータシステム４００内において２ｎ個の考えられうるセキュリティコンテキストレベルの一つを占有する。
【００３９】
線形アドレス９０２は、対応する物理アドレスであって被選択メモリページ内に存するものを有する。対応する物理アドレスは、図１のアドレス変換メカニズム１００を用いて、ページングユニット７０２（図７）により生成される。図９に戻って、ＳＡＴ基底アドレス用レジスタ９０８のＰビットが“１”であったとすると、セグメンテーションユニット７００（図７）により生成された線形アドレス９０２は、被選択メモリページについてのＳＡＴエントリをアクセスするために３つの部分に分割される。上述したように、ＳＡＴ基底アドレス用レジスタ９０８におけるＳＡＴディレクトリ基底アドレスは、ＳＡＴディレクトリ９０４を含むメモリページの基底アドレスである。ＳＡＴディレクトリ９０４は、ＳＡＴディレクトリエントリ９１０を含む多数のＳＡＴディレクトリエントリを含む。線形アドレス９０２における“上位”部は、線形アドレス９０２における最高位又は最上位の数ビットを含むものであるが、これはＳＡＴディレクトリ９０４内においてインデックスとして用いられる。ＳＡＴディレクトリエントリ９１０は、ＳＡＴ基底アドレス用レジスタ９０８におけるＳＡＴディレクトリ基底アドレスと線形アドレス９０２における上位部とを用いて、ＳＡＴディレクトリ９０４内部から選択される。
【００４０】
図１１は、ＳＡＴディレクトリエントリ用フォーマット１１００の一実施例の図である。図１１によれば、各ＳＡＴディレクトリエントリは現存（Ｐ）ビットを含んでいる。このＰビットはＳＡＴディレクトリエントリ内部に有効なＳＡＴ基底アドレスが存在することを示す。図１１の実施例において、各ＳＡＴディレクトリエントリにおける最高位（即ち、最上位の）数ビットはＳＡＴ基底アドレス用として確保されている。ＳＡＴ基底アドレスとは、対応するＳＡＴを含むメモリページの基底アドレスである。Ｐ＝１の場合、ＳＡＴ基底アドレスは有効であり、対応するＳＡＴはメモリ４０６に格納される。
【００４１】
Ｐ＝０の場合、ＳＡＴ基底アドレスは有効ではなく、対応するＳＡＴはメモリ４０６内に存しないので、ストレージデバイス（例えばディスクドライブ）からメモリ４０６内にコピーされなければならない。Ｐ＝０の場合、セキュリティチェック用論理回路８００はページングユニット７０２内部におけるロジックに対しページ違反を伝達しても良く、ＭＭＵ６０２はそのページ違反信号を実行ユニット６００（図６）に転送しても良い。ページ違反信号に応じて、実行ユニット６００はページ違反ハンドラルーチンを実行しても良い。ここで、ページ違反ハンドラルーチンとは、必要とされるＳＡＴをストレージデバイスから取り出し、その必要とされるＳＡＴをメモリ４０６に格納するものである。必要とされるＳＡＴがメモリ４０６内に格納された後、対応するＳＡＴディレクトリエントリのＰビットは“１”にセットされ、メカニズム９００は続行させられる。若しくは、Ｐ＝０の場合、ＳＡＴデフォルト用レジスタ１０００（図１０）におけるＳＡＴデフォルト基底アドレス用フィールド（図示せず）の内容がＳＡＴ基底アドレスとして用いられても良い。
【００４２】
図９に戻って、線形アドレス９０２の“中位”部はＳＡＴ９０６におけるインデックスとして用いられる。ＳＡＴエントリ９０６は、従って、ＳＡＴディレクトリエントリ９１０におけるＳＡＴ基底アドレス及び線形アドレス９０２における中位部を利用して、ＳＡＴ９０６内にて選択される。図１２は、ＳＡＴエントリ用フォーマット１２００の一実施例の図である。図１２の実施例において、各ＳＡＴエントリは、セキュアコンテキストＩＤ（ＳＣＩＤ）フィールドを含んでいる。ＳＣＩＤフィールドは、ＳＡＴエントリにおける多数のビット位置を含んでいる。該ビット位置は一つのＳＣＩＤ値のバイナリ表現を形成する。ここで、ＳＣＩＤ値は、０以上の整数値である。ＳＣＩＤ値は、被選択メモリページにおけるセキュリティコンテキストレベルを示す。例えば、ＳＣＩＤフィールドがＳＡＴエントリにおけるｎビットを含む場合、被選択メモリページは、コンピュータシステム４００内において、２ｎ個の考えられるセキュリティコンテキストレベルのうちの一つを占有することとしても良い。
【００４３】
ＢＩＵ６０６（図６）は、必要とされるＳＥＭデータ構造エントリをメモリ４０６から取り出し、そのＳＥＭデータ構造エントリをＭＭＵ６０２に提供する。図８に戻って、セキュリティチェック用論理回路８００は、コミュニケーションバスを介して、ＭＭＵ６０２及びページングユニット７０２からＳＥＭデータ構造エントリを受ける。上述したように、ＳＡＴエントリ用バッファ８０２は、最近アクセスされたメモリページのうち、比較的少数のＳＡＴエントリを格納するために用いられる。セキュリティチェック用論理回路８００は、対応する物理アドレスの“タグ”部に従って、任意のＳＡＴエントリをＳＡＴエントリ用バッファ８０２内に格納する。
【００４４】
後続のメモリページアクセスの間、セキュリティチェック用論理回路８００は、ページングユニット７０２により生成された物理アドレスの“タグ”部を、ＳＡＴエントリ用バッファ８０２内に格納されたＳＡＴエントリに対応する物理アドレスのタグ部と比較する。物理アドレスのタグ部がＳＡＴエントリ用バッファ８０２内に格納されたＳＡＴエントリに対応する物理アドレスのタグ部と一致した場合、セキュリティチェック用論理回路８００は、ＳＡＴエントリ用バッファ８０２内におけるＳＡＴエントリにアクセスし、一方では、図９のプロセスを実行してメモリ４０６からＳＡＴエントリを取得するという要求を削除する。セキュリティ用カーネル５０４（図５）は、（例えば、コンテキストの変更時に）ＣＰＵ４０２におけるＳＡＴ基底アドレス用レジスタ９０８の内容を書き換える。ＳＡＴ基底アドレス用レジスタ９０８の書換えに応じて、ＣＰＵ  ＳＣＵ４１６におけるセキュリティチェック用論理回路８００は、ＳＡＴエントリ用バッファ８０２の内容を消去しても良い。
【００４５】
図７の実施例において、ＣＰＵ  ＳＣＵ４１６はページングユニット７０２に接続されている。図４のコンピュータシステム４００がＳＥＭで動作している際、セキュリティチェック用論理回路８００は、現在実行中のタスク（即ち、現在実行中の命令）についての現在の特権レベル（ＣＰＬ）を受ける。また、セキュリティチェック用論理回路８００は、内部に対応する物理アドレスが存在する被選択メモリページに関するページディレクトリエントリ（ＰＤＥ）のＵ／Ｓビット、ＰＤＥのＲ／Ｗビット、ページテーブルエントリ（ＰＴＥ）のＵ／Ｓビット及びＰＴＥのＲ／Ｗビットを、ページングユニット７０２から受ける。セキュリティチェック用論理回路８００は、被選択メモリページに対応するＳＡＴエントリのＳＣＩＤ値に従って、上述の情報を用いて、メモリ４０６へのアクセスに権限が与えられているか否かを決定する。
【００４６】
図６のＣＰＵ４０２はｘ８６プロセッサであってもよく、ｘ８６プロセッサアーキテクチャにおける１６ビットセグメントレジスタのうちの一つであるコードセグメント（ＣＳ）レジスタを含んでいても良い。各セグメントレジスタは、メモリの一ブロック（すなわち、メモリにおける一セグメント）を選択する。ページングがイネーブルとされている状態におけるプロテクトモードでは、ＣＳレジスタは、メモリ４０６の実行可能なブロックを示すセグメントセレクタを用いてロードされる。セグメントセレクタにおける最高位の（即ち、最上位の）数ビットは、ＣＰＵ４０２（図６）における実行ユニット６００により実行されるべき次命令を含むメモリの一ブロック（例えば、メモリの一セグメント）を示す情報を格納するために用いられる。命令ポインタ（ＩＰ／ＥＩＰ／ＲＩＰ）レジスタは、ＣＳレジスタにより示されたメモリにおけるブロック（例えば、メモリにおけるセグメント）内にオフセットを格納するために用いられる。ＣＳレジスタにおける最低位（即ち、最下位）の２ビットは、実行ユニット６００により現在実行中のタスクの現在の特権レベル（ＣＰＬ）（即ち、カレントタスクのＣＰＬ）を示す値を格納するために用いられる。
【００４７】
下記表１は、図４のコンピュータシステム４００がＳＥＭで動作している際に、ＣＰＵにより始動された（即ち、ソフトウェアにより始動された）メモリアクセス用の代表的なルールを示す。図４のコンピュータシステム４００がＳＥＭで動作し、オペレーティングシステム５０２（図５）により提供されたデータセキュリティに勝る、メモリ４０６内に格納されているデータ用の付加的なセキュリティを提供する際に、ＣＰＵ  ＳＣＵ４１６（図４乃至図８）及びセキュリティ用カーネル（図５）は共に動作して表１のルールを実現する。
【００４８】
下記表１において、“ＣＥＩ−ＳＣＩＤ”は現在実行中の命令に関するＳＣＩＤ値を示し、“ＳＭＰ−ＳＣＩＤ”は被選択メモリページに関するＳＣＩＤ値を示す。ＣＥＩ−ＳＣＩＤ値は、現在実行中の命令を含むメモリページに対応するＳＡＴエントリにおけるＳＣＩＤ値である。表１の実施例において、低いＳＣＩＤ値ほど、高いセキュリティコンテキストレベルと関連付けられている。他の実施例として、高いＳＣＩＤほど高いセキュリティコンテキストレベルに関連付けられることとしても良い。
【００４９】
【表１】
2005509946.tif 000003
【００５０】
上記表１において、現在実行中の命令に関するＳＣＩＤ値により表される整数値が被選択メモリページのＳＣＩＤ値により表される整数値よりも数的に大きい場合には、条件“ＣＥＩ−ＳＣＩＤ＞ＳＭＰ−ＳＣＩＤ”は真である。現在実行中の命令に関するＳＣＩＤ値により表される整数値が被選択メモリページのＳＣＩＤ値により表される整数値以下の場合には、条件“ＣＥＩ−ＳＣＩＤ≦ＳＭＰ−ＳＣＩＤ”は真である。被選択メモリページにおけるＵ／Ｓビットは、被選択メモリページに関するＰＤＥのＵ／ＳビットとＰＴＥのＵ／Ｓビットとの論理積（ＡＮＤ）である。被選択メモリページのＲ／Ｗビットは、被選択メモリページに関するＰＤＥのＲ／ＷビットとＰＴＥのＲ／Ｗビットとの論理積（ＡＮＤ）である。記号“Ｘ”は“Ｄｏｎ‘ｔ  Ｃａｒｅ”を示しており、論理値は“０”又は“１”のいずれでも良い。
【００５１】
図８に戻って、ＣＰＵ  ＳＣＵ４１６におけるセキュリティチェック用論理回路８００は一般保護違反（“ＧＰＦ”）信号及び“ＳＥＭ  ＳＥＣＵＲＩＴＹ  ＥＸＣＥＰＴＩＯＮ”信号を生成し、それらのＧＰＦ信号及びＳＥＭ  ＳＥＣＵＲＩＴＹ  ＥＸＣＥＰＴＩＯＮ信号をＭＭＵ６０２内部のロジックに提供する。セキュリティチェック用論理回路８００がＧＰＦ信号をアサートしたとき、ＭＭＵ６０２はそのＧＰＦ信号を実行ユニット６００（図６）に転送する。ＧＰＦ信号に応じて、実行ユニット６００は、ｘ８６プロセッサアーキテクチャにおける周知の割り込みディスクリプタテーブル（ＩＤＴ）のベクタリングメカニズムを用いて、ＧＰＦハンドラルーチンにアクセスし実行することとしても良い。
【００５２】
セキュリティチェック用論理回路８００がＳＥＭ  ＳＥＣＵＲＩＴＹ  ＥＸＣＥＰＴＩＯＮ信号をアサートすると、ＭＭＵ６０２はそのＳＥＭ  ＳＥＣＵＲＩＴＹ  ＥＸＣＥＰＴＩＯＮ信号を実行ユニット６００に転送する。ｘ８６プロセッサアーキテクチャにおけるＩＤＴのベクタリングメカニズムを用いる通常のプロセッサの例外とは異なり、ＳＥＭセキュリティ例外を扱うために異なるベクタリング方法が用いられる。ＳＥＭセキュリティ例外はｘ８６“ＳＹＳＥＮＴＥＲ”及び“ＳＹＳＥＸＩＴ”命令が行われる場合と同様に、一対のレジスタ（例えば、モデル固有レジスタ即ちＭＳＲ）を用いてディスパッチされることとしても良い。レジスタ対は“セキュリティ例外エントリポイント”レジスタであっても良いし、ＳＥＭセキュリティ例外が生じた際における命令実行用のブランチターゲットアドレスを定義しても良い。セキュリティ例外エントリポイントレジスタはコードセグメント（ＣＳ）を定義して、その後、ＳＥＭセキュリティ例外ハンドラのエントリに用いられるべき命令ポインタ（ＩＰ又は６４ビット版ＲＩＰ）、スタックセグメント（ＳＳ）及びスタックポインタ（ＳＰ又は６４ビット版ＲＳＰ）の値を定義することとしても良い。ソフトウェア制御の下、実行ユニット６００（図６）は以前のＳＳ、ＳＰ／ＲＳＰ、ＥＦＬＡＧＳ、ＣＳ及びＩＰ／ＲＩＰの値を新しいスタックにプッシュして、どこで例外が生じたのかを示すこととしても良い。加えて、実行ユニット６００はエラーコードを当該スタックにプッシュしても良い。割り込み（ＩＲＥＴ）命令からの通常のリターンは、以前のＳＳ及びＳＰ／ＲＳＰの値が常にセーブされていることから、用いられないかも知れず、且つ、たとえＣＰＬにおける変更が生じなかったとしてもスタックスイッチは常に実現されることも特筆される。従って、新しい命令が定義され、ＳＥＭセキュリティ例外ハンドラからのリターンが実現されても良い。
【００５３】
図１３Ａ及び図１３Ｂは、組み合わせられることにより、複数のメモリページ内部に配置されたデータを格納するために用いられるメモリに対してアクセスセキュリティを付与するための方法１３００の一実施例を示すフローチャートを構成する。方法１３００は、例えば、図４のコンピュータシステム４００がＳＥＭで動作している際に、ＣＰＵにより始動された（即ち、ソフトウェアにより始動された）メモリアクセス用の表１の代表的なルールを反映したものである。方法１３００はＭＭＵ６０２（図６及び図７）内部に組み込まれても良い。
【００５４】
方法１３００のステップ１３０２において、命令の実行中に生成された線形アドレスがその命令のセキュリティ属性（例えば、その命令を含むタスクのＣＰＬ）に従って受取られる。その命令は第１のメモリページ内に存する。ステップ１３０４において、線形アドレスは、メモリ内に位置するデータ構造（例えば、ページディレクトリ及びページテーブル）の少なくとも一つであってページング対象となるメモリに関するものにアクセスして、被選択メモリページの基底アドレスと被選択メモリページにおけるセキュリティ属性とを取得するために用いられる。被選択メモリページにおけるセキュリティ属性は、例えば、ページディレクトリエントリにおけるＵ／Ｓビット及びＲ／Ｗビット並びにページテーブルエントリにおけるＵ／Ｓビット及びＲ／Ｗビットを含むこととしても良い。
【００５５】
判断ステップ１３０６において、命令のセキュリティ属性及び被選択メモリページのセキュリティ属性は、アクセス権限があるか否かを判断するために用いられる。アクセス権限があった場合には、被選択メモリページにおける基底アドレス及びオフセットはステップ１３０８において組み合わされ、選択メモリページ内における物理アドレスが生成される。アクセス権限がなかった場合には、違反信号（例えば、一般保護違反信号、即ち、ＧＰＦ信号）がステップ１３１０において生成される。
【００５６】
ステップ１３１２は、ステップ１３０４とほぼ同時に（即ち、ステップ１３０４とほぼ並列して）実行されても良いものであるが、このステップにおいては、メモリ内に位置するセキュリティ属性のデータ構造（例えば、図９のＳＡＴディレクトリ及びＳＡＴ）の少なくとも一つが、第１のメモリページの付加的なセキュリティ属性及び被選択メモリページの付加的なセキュリティ属性を取得するために、命令の実行中に生成された線形アドレスを用いて、アクセスされる。ここで、第１のメモリページは命令を含んでおり、被選択メモリページは線形アドレスに対応する物理アドレスを含んでいる。第１のメモリページの付加的なセキュリティ属性は、例えば、上述したようにセキュリティコンテキストＩＤ（ＳＣＩＤ）値を含んでいても良い。ここで、ＳＣＩＤ値は第１のメモリページにおけるセキュリティコンテキストレベルを示す。同様に、被選択メモリページの付加的なセキュリティ属性は、ＳＣＩＤ値を含んでいても良い。ここで、ＳＣＩＤ値は被選択メモリページのセキュリティコンテキストレベルを示す。
【００５７】
ステップ１３１４において、第１のメモリページの付加的なセキュリティ属性により伝達された数値は被選択メモリページの付加的なセキュリティ属性により伝達された数値と比較される。第１のメモリページのセキュリティ属性により伝達された数値と被選択メモリページの付加的なセキュリティ属性により伝達された数値との比較結果に従って、ステップ１３１６において、被選択メモリページはアクセスされる。
【００５８】
例えば、方法１３００が図４のコンピュータシステム４００がＳＥＭで動作している際に、ＣＰＵにより始動された（即ち、ソフトウェアにより始動された）メモリアクセス用の表１の代表的なルールを反映したものである場合、被選択メモリページは、ステップ１３１６において、命令のＳＣＩＤ値により表される整数値が被選択メモリページのＳＣＩＤ値により表される整数値以下であった場合（即ち、ＣＥＩ−ＳＣＩＤ  ≦  ＳＭＰ＿ＳＣＩＤの場合）にのみ、アクセスされることとしても良い。一方、命令のＳＣＩＤ値により表される整数値が被選択メモリページのＳＣＩＤ値により表される整数値よりも大きい場合（即ち、ＣＥＩ−ＳＣＩＤ  ＞  ＳＭＰ＿ＳＣＩＤの場合）、被選択メモリページはステップ１３１６においてアクセスされないこととしても良い。この場合、ＳＥＭ  ＳＥＣＵＲＩＴＹ  ＥＸＣＥＰＴＩＯＮ信号が表１に示されるように且つ上述したようにアサートされることとしても良い。
【００５９】
以上開示された特定の実施例は単なる例であり、本発明は異なるが等価な手法であってここに教授したことの利益を受ける分野における当業者にとって明らかな手法に従って変更され実施されても良い。更に、以下のクレームに記されたこと以外、ここに示された構成又は設計の詳細に制限はない。それゆえ、以上開示された特定の実施例は置き換えられ又は変更されても良いことは明らかであり、かかる変形のすべては本発明の精神及び技術的範囲内に属するものと考えられる。従って、ここに求める保護は、以下のクレームに規定されるようなものである。
【図面の簡単な説明】
【００６０】
【図１】図１は、ｘ８６プロセッサアーキテクチャにおける周知の線形−物理アドレス変換メカニズムの図である。
【図２】図２は、ｘ８６プロセッサアーキテクチャにおけるページディレクトリエントリ用フォーマットの図である。
【図３】図３は、ｘ８６プロセッサアーキテクチャにおけるページテーブルエントリ用フォーマットの図である。
【図４】図４は、ＣＰＵを含むコンピュータシステムの一実施例の図である。ここで、ＣＰＵはＣＰＵセキュリティチェックユニット（ＳＣＵ）を備えている。
【図５】図５は、図４のコンピュータシステムにおける様々なハードウェア要素及びソフトウェア要素間の関係を示す図である。
【図６】図６は、図４のコンピュータシステムにおけるＣＰＵの一実施例の図である。ここで、ＣＰＵはメモリ管理ユニット（ＭＭＵ）を備えている。
【図７】図７は、図６のＭＭＵの一実施例の図である。ここで、ＭＭＵはＣＰＵ  ＳＣＵに接続されたページングユニットを備えている。
【図８】図８は、図７のＣＰＵ  ＳＣＵの一実施例の図である。
【図９】図９は、任意のメモリページについてのセキュリティ属性テーブル（ＳＡＴ）エントリにアクセスして、当該任意のメモリページの付加的なセキュリティ情報を取得するためのメカニズムの一実施例の図である。
【図１０】図１０は、ＳＡＴデフォルト用レジスタの一実施例の図である。
【図１１】図１１は、ＳＡＴディレクトリエントリ用フォーマットの一実施例の図である。
【図１２】図１２は、ＳＡＴエントリ用フォーマットの一実施例の図である。
【図１３Ａ】図１３Ａは、組み合わされることにより、多数のメモリページ内部に配置されたデータを格納するために用いられるメモリを管理するための方法の一実施例を示すフローチャートを構成する。
【図１３Ｂ】図１３Ｂは、組み合わされることにより、多数のメモリページ内部に配置されたデータを格納するために用いられるメモリを管理するための方法の一実施例を示すフローチャートを構成する。
【図１】
2005509946.tif 000004
【図２】
2005509946.tif 000005
【図３】
2005509946.tif 000006
【図４】
2005509946.tif 000007
【図５】
2005509946.tif 000008
【図６】
2005509946.tif 000009
【図７】
2005509946.tif 000010
【図８】
2005509946.tif 000011
【図９】
2005509946.tif 000012
【図１０】
2005509946.tif 000013
【図１１】
2005509946.tif 000014
【図１２】
2005509946.tif 000015
【図１３Ａ】
2005509946.tif 000016
【図１３Ｂ】
2005509946.tif 000017
【手続補正書】
【提出日】平成15年12月9日(2003.12.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のメモリページ内部に配置されたデータを格納するためのメモリを管理するためのメモリ管理ユニットであって、ページングユニット（７０２）を備えており、該ページングユニットは、カレント命令の実行中に生成された線形アドレス（１０２）に応じて、少なくとも一つのページテーブルを用いて被選択メモリページ内における対応する物理アドレスを生成すると共に、前記被選択メモリページに対応する前記ページテーブルエントリからセキュリティ属性に従って出力信号を提供するものである、メモリ管理ユニットにおいて、
該メモリ管理ユニット（６０２）はカレント命令の実行中に生成された線形アドレス（１０２）を受けるように接続されたセキュリティチェックユニット（４１６）を更に備えており、前記線形アドレス（１０２）は被選択メモリページ内における物理アドレスの一つと対応するものであり、前記セキュリティチェックユニット（４１６）は前記線形アドレス（１０２）を用いて前記メモリ（４０６）内に位置するセキュリティ属性のデータ構造の少なくとも一つにアクセスして前記被選択メモリページのセキュリティ属性を取得するように構成されており、前記セキュリティチェックユニット（４１６）は前記カレント命令のセキュリティ属性により伝達される数値を前記被選択メモリページのセキュリティ属性により伝達される数値と比較してその比較結果に応じた出力信号を生成するものであり、
前記メモリ管理ユニット（６０２）は前記ページングユニット及び前記セキュリティチェックユニット（４１６）の双方からの前記出力信号に従って前記被選択メモリページにアクセスするように構成されている、メモリ管理ユニット。
【請求項２】
前記被選択メモリページ及び前記カレント命令のうちの少なくとも一つの前記セキュリティ属性はセキュリティコンテキストＩＤ（ＳＣＩＤ）を備えており、前記ＳＣＩＤ値は０以上の整数値であり、前記被選択メモリページのセキュリティコンテキストレベルを示すものである、請求項１記載のメモリ管理ユニット（６０２）。
【請求項３】
前記セキュリティ属性のデータ構造の少なくとも一つは、セキュリティ属性テーブルディレクトリ（９０４）及び少なくとも一つのセキュリティ属性テーブル（９０６）を備えている、請求項１記載のメモリ管理ユニット（６０２）。
【請求項４】
前記セキュリティ属性テーブルディレクトリ（９０４）は複数のエントリを備えており、前記セキュリティ属性テーブルディレクトリ（９０４）における各エントリは現存ビット及びセキュリティ属性テーブル基底アドレス用フィールドを含んでおり、前記現存ビットは前記セキュリティ属性テーブルディレクトリエントリに対応するセキュリティ属性テーブル（９０６）が前記メモリ内に現存するか否かを示すものであり、前記セキュリティ属性テーブル基底アドレス用フィールドは前記セキュリティ属性テーブルディレクトリエントリに対応する前記セキュリティ属性テーブル（９０６）の基底アドレス用として確保されているものである、請求項３記載のメモリ管理ユニット（６０２）。
【請求項５】
前記少なくとも一つのセキュリティ属性テーブル（９０６）は複数のエントリを備えており、前記セキュリティ属性テーブル（９０６）の各エントリはセキュリティコンテキストＩＤ（ＳＣＩＤ）用フィールドを含んでおり、前記ＳＣＩＤ用フィールドは複数のビット位置を含んでおり、前記ビット位置はＳＣＩＤ値のバイナリ表現を構成しており、前記ＳＣＩＤ値は０以上の整数値であり、前記ＳＣＩＤ値は対応するメモリページのセキュリティコンテキストレベルを示すものである、請求項３記載のメモリ管理ユニット（６０２）。
【請求項６】
前記セキュリティチェックユニット（４１６）は、前記被選択メモリページの前記セキュリティ属性に加えて、前記被選択メモリページについての一組のセキュリティ属性を受けて、（ｉ）前記カレント命令の前記セキュリティ属性により伝達される前記数値と被選択メモリページの前記セキュリティ属性により伝達される前記数値との比較結果、及び、（ｉｉ）前記被選択メモリページの前記一組のセキュリティ属性とに従い、前記出力信号を生成するように構成されている、請求項１記載のメモリ管理ユニット（６０２）。
【請求項７】
複数のメモリページ内部に配置されたデータを格納するために用いられるメモリ（４０６）に対してアクセスセキュリティを付与する方法であって：
第１のメモリページ内に存する命令の実行中に生成された線形アドレス（１０２）及び前記線形アドレス（１０２）のセキュリティ属性を受ける処理と；
前記線形アドレス（１０２）を用いて、前記メモリ（４０６）内に位置するデータ構造の少なくとも一つであってページング対象のメモリに関するものにアクセスし、被選択メモリページの基底アドレス及び前記被選択メモリページのセキュリティ属性を取得する処理と；
前記被選択メモリページの前記基底アドレスをオフセットと組み合わせて、前記命令の前記セキュリティ属性と前記被選択メモリページの前記セキュリティ属性とによって前記アクセスの権限があることが示される場合には、前記被選択メモリページ内部の物理アドレスを生成する処理と；
前記命令の前記セキュリティ属性と前記被選択メモリページの前記セキュリティ属性とによって前記アクセスの権限がないことが示される場合には、違反信号を生成する処理と
を備える方法において：
前記命令の実行中に生成された前記線形アドレス（１０２）を用いて前記メモリ（４０６）内に位置するセキュリティ属性のデータ構造の少なくとも一つにアクセスして、前記第１のメモリページの付加的なセキュリティ属性と前記選択されたメモリの付加的なセキュリティ属性とを取得する処理と；
前記第１のメモリページの付加的なセキュリティ属性により伝達される数値を前記選択されたメモリの前記付加的なセキュリティ属性により伝達される数値と比較する処理と；
前記第１のメモリページの前記セキュリティ属性により伝達される数値と選択されたメモリの前記付加的なセキュリティ属性により伝達される数値との比較結果に従って、被選択メモリページにアクセスする処理と
を更に備えることを特徴とする方法。
【請求項８】
前記アクセスする処理は、前記命令の実行中に生成された前記線形アドレス（１０２）を用いて前記メモリ（４０６）内に位置するセキュリティ属性のデータ構造の少なくとも一つにアクセスして、前記第１のメモリページの付加的なセキュリティ属性と前記被選択メモリページの付加的なセキュリティ属性とを取得する処理を備えており、前記少なくとも一つのセキュリティ属性のデータ構造は、セキュリティ属性テーブルディレクトリ（９０４）と少なくとも一つのセキュリティ属性テーブル（９０６）とを備えており、前記第１のメモリページの前記付加的なセキュリティ属性は前記第１のメモリページのセキュリティコンテキストＩＤ（ＳＣＩＤ）値を備えており、前記第１のメモリページにおける前記ＳＣＩＤ値は０以上の整数値であり且つ前記第１のメモリページのセキュリティコンテキストレベルを示すものであり、前記被選択メモリページの前記付加的なセキュリティ属性は前記被選択メモリページのセキュリティコンテキストＩＤ（ＳＣＩＤ）値を備えており、前記被選択メモリページの前記ＳＣＩＤ値は０以上の整数値であり且つ前記被選択メモリページのセキュリティコンテキストレベルを示すものである、請求項７記載の方法。
【請求項９】
メモリ（４０６）を管理するためのプロセッサ（４０２）において、
メモリ（４０６）に機能的に接続され、前記メモリ（４０６）から命令をフェッチして該命令を実行するように構成された実行ユニット（６００）と；
前記メモリ（４０６）に機能的に接続された請求項１記載のメモリ管理ユニット（６０２）とを備えるプロセッサ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
図１における線形−物理アドレス変換処理において、ページフレーム１０８に対応するページディレクトリエントリ１１２及びページテーブルエントリ１１４におけるＵ／Ｓビットの内容についてＡＮＤをとり、ページフレーム１０８に対してアクセス権限があるか否かを決定する。同様に、ページディレクトリエントリ１１２及びページテーブルエントリ１１４におけるＲ／Ｗビットの内容についてＡＮＤをとり、ページフレーム１０８に対してアクセス権限があるか否かを決定する。もし、Ｕ／ＳビットとＲ／Ｗビットとの論理的な組み合わせにより、ページフレーム１０８に対するアクセス権限があることが示される場合、メモリロケーション１１６は物理アドレスを用いてアクセスされる。一方、Ｕ／ＳビットとＲ／Ｗビットとの論理的な組み合わせにより、ページフレーム１０８に対するアクセス権限がないことが示された場合、保護違反のインジケーションがシグナルされる。
このｘ８６プロテクションモードの詳細は、インテル株式会社において得ることができる：“インテル・アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル第３巻：システム・プログラミング・ガイド、２〜４章、６章及び１５章並びにアネックスＢ”。インテル・リファレンス・マニュアル、ＸＰ００２２４８３７６。同様の記述は、例えば、ＵＳ６，１５４，８１８及びＵＳ５，６２７，９８７においても見つけることができる。これらの記述はすべてページテーブルにおけるセキュリティ属性がメモリのページを保護するために用いることができることについて論証している。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
本発明は、以下の説明と関連する付属図面とを参照することにより、理解されるであろう。ここで、図面においては、同様な構成要素には同じ参照符号が付されている。
本発明については、様々な変形及び置換が可能であるが、特定の実施例が図に例示され且つここに詳細に説明される。しかしながら、ここにおける特定の実施例に関する記述は開示した特定の形態に本発明を限定することを意図したものではなく、逆に、付属のクレームに定義されたような発明の技術的範囲内に属する変形例、均等物及び置換のすべてをカバーすることが意図される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
以上開示された特定の実施例は単なる例であり、本発明は異なるが等価な手法であってここに教授したことの利益を受ける分野における当業者にとって明らかな手法に従って変更され実施されても良い。更に、以下のクレームに記されたこと以外、ここに示された構成又は設計の詳細に制限はない。それゆえ、以上開示された特定の実施例は置き換えられ又は変更されても良いことは明らかであり、かかる変形のすべては本発明の技術的範囲内に属するものと考えられる。従って、ここに求める保護は、以下のクレームに規定されるようなものである。


【国際調査報告】
2005509946.tif 000018
2005509946.tif 000019
2005509946.tif 000020