(57)【要約】  ホストブリッジ（４０４）は、メモリコントローラ（１３０４）およびセキュリティチェックユニット（４１８）を含む。メモリコントローラ（１３０４）は、複数のメモリページに配置されたデータを記憶するメモリ（４０６）に結合される。メモリコントローラ（１３０４）はメモリアクセス信号を受信し、メモリ（４０６）にアクセスする。セキュリティチェックユニット（４１８）は、目標メモリページ内の物理アドレスを含む、メモリアクセス信号を受信する。セキュリティチェックユニット（４１８）は、目標メモリページのセキュリティ属性を取得するために、物理アドレスを用いて一以上のセキュリティ属性データ構造にアクセスする。セキュリティチェックユニット（４１８）は、目標メモリページのセキュリティ属性に応じて、メモリコントローラ（１３０４）にメモリアクセス信号を供給する。
2005512228.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリページに配置されたデータを記憶するメモリ（４０６）に結合可能に構成され、メモリアクセス信号を受信するように結合され、メモリ（４０６）にアクセスすることで前記メモリアクセス信号に応答するように構成されているメモリコントローラ（１３０４）と、
前記メモリアクセス信号を受信するように結合され、前記メモリアクセス信号は目標メモリページ内の物理アドレスを伝達し、前記目標のメモリページのセキュリティ属性を取得するために前記物理アドレスを用いて前記メモリ（４０６）内に配置された少なくとも一つのセキュリティ属性データ構造にアクセスするように構成され、前記目標のメモリページのセキュリティ属性に応じて、前記メモリコントローラ（１３０４）に前記メモリアクセス信号を供給するように構成されているセキュリティチェックユニット（４１８）とを備える、ホストブリッジ（４０４）。
【請求項２】
前記少なくとも一つのセキュリティ属性データ構造は、セキュリティ属性テーブルディレクトリ（９０４）および少なくとも一つのセキュリティ属性テーブル（９０６）を含む、請求項１のホストブリッジ（４０４）。
【請求項３】
前記セキュリティ属性テーブルディレクトリ（９０４）は複数のエントリ（９１０）を含み、前記セキュリティ属性テーブルディレクトリ（９０４）の各エントリ（９１０）は存在ビットおよびセキュリティ属性テーブル（９０６）基本アドレスフィールドを含み、前記存在ビットは前記セキュリティ属性テーブルディレクトリエントリ（９１０）に対応するセキュリティ属性テーブル（９０６）がメモリ（４０６）に存在するか否かを示し、前記セキュリティ属性テーブル基本アドレスフィールドは前記セキュリティ属性テーブルディレクトリエントリ（９１０）に対応するセキュリティ属性テーブル（９０６）の基本アドレスのために予約されている、請求項２のホストブリッジ（４０４）。
【請求項４】
前記目標メモリページのセキュリティ属性はセキュアページ（SP）ビットを含み、前記SPビットは前記目標メモリページがセキュアページか否かを示す、請求項１のホストブリッジ（４０４）。
【請求項５】
前記SPビットが前記目標メモリページはセキュアページであることを示すとき、前記メモリアクセスは許可されず、前記セキュリティチェックユニット（４１８）は前記メモリコントローラ（１３０４）に対して前記メモリアクセス信号を供給しない、請求項４のホストブリッジ（４０４）。
【請求項６】
前記SPビットが前記目標メモリページはセキュアページであることを示し、前記メモリアクセス信号がメモリアクセスタイプは読み込みアクセスおよび許可されていない読み込みアクセスのうちのいずれかであることを示すとき、前記セキュリティチェックユニット（４１８）はニセの読み出しデータを供給することによって前記許可されていない読み込みアクセスに応答するように構成されている、請求項５のホストブリッジ（４０４）。
【請求項７】
前記SPビットが前記目標メモリページはセキュアページであることを示し、前記メモリアクセス信号がメモリアクセスタイプは書き込みアクセスおよび許可されていない書き込みアクセスのうちのいずれかであることを示すとき、前記セキュリティチェックユニット（４１８）は、前記メモリアクセス信号によって伝達された書き込みデータを廃棄することで、前記許可されていない書き込みアクセスに応答するように構成されている、請求項５のホストブリッジ（４０４）。
【請求項８】
メモリ（４０６）を管理するコンピュータシステム（４００）であって、当該コンピュータシステム（４００）は、
複数のメモリページ内に配置されたデータを記憶するメモリ（４０６）と、
前記メモリ（４０６）に動作可能に結合され、メモリアクセス信号を生成するように構成可能なデバイス（４１４Ａ−Ｄ）と、
前記デバイス（４１４Ａ−Ｄ）およびメモリ（４０６）に動作可能に結合され、複数のメモリページに配置されたデータを記憶するメモリ（４０６）に結合可能に構成され、メモリアクセス信号を受信するように結合され、メモリ（４０６）にアクセスすることで前記メモリアクセス信号に応答するように構成されているメモリコントローラ（１３０４）および前記メモリアクセス信号を受信するように結合され、前記メモリアクセス信号は目標メモリページ内の物理アドレスを伝達し、前記目標のメモリページのセキュリティ属性を取得するために前記物理アドレスを用いて前記メモリ（４０６）内に配置された少なくとも一つのセキュリティ属性データ構造にアクセスするように構成され、前記目標のメモリページのセキュリティ属性に応じて、前記メモリコントローラ（１３０４）に前記メモリアクセス信号を供給するように構成されているセキュリティチェックユニット（４１８）とを有するホストブリッジ（４０４）とを備える、
ことを特徴とするコンピュータシステム。
【請求項９】
複数のメモリページ内に配置されたデータを記憶するのに使用されるメモリ（４０６）のためのアクセスセキュリティを提供する方法であって、
目標メモリページ内の物理アドレスを伝達するメモリアクセス信号を受信するステップと、
前記目標メモリページのセキュリティ属性を取得するために、前記物理アドレスを用いて、前記メモリ（４０６）内に配置された少なくとも一つのセキュリティ属性データ構造にアクセスするステップと、
前記目標メモリページの前記セキュリティ属性に応じて、前記メモリアクセス信号を用いて前記メモリ（４０６）にアクセスするステップとを含む方法。
【請求項１０】
前記物理アドレスを用いて少なくとも一つのセキュリティ属性データ構造にアクセスするステップは、セキュリティ属性テーブルディレクトリ（９０４）および少なくとも一つのセキュリティ属性テーブル（９０６）を含む、少なくとも一つのセキュリティ属性データ構造に前記物理アドレスを用いてアクセスするステップを含む、請求項９の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にメモリ管理システムおよび方法に関し、さらに詳細にはメモリに記憶されたデータに対する保護を提供するメモリ管理システムおよび方法に関する。
【背景技術】
【０００２】
通常コンピュータシステムは、比較的低いコストで、比較的に高いレベルの性能を得るためにメモリ階層を含んでいる。通常、いくつかの異なったソフトウェアプログラムの命令は、比較的大きく、しかし低速の不揮発性記憶装置（例えば、ディスクドライブ装置）に記憶される。ユーザがそれらのプログラムの一つを実行するために選択すると、選択されたプログラムの命令が主記憶装置にコピーされ、中央処理装置（CPU）が主記憶装置から選択されたプログラムの命令を取得する。周知の仮想メモリ管理技術によって、ある任意の時点でデータ構造の一部のみを主記憶装置内に記憶させることにより、CPUが主記憶装置のサイズよりも大きなサイズのデータ構造にアクセスすることを可能にする。データ構造の残りの部分は比較的大きく、しかし低速の不揮発性記憶装置内に記憶され、必要なときにのみ主記憶装置にコピーされる。
【０００３】
仮想メモリは通常、CPUのアドレス空間を、ページフレームまたは「ページ」と呼ばれる複数のブロックに分割することによって実現される。それらのページの一部に対応するデータのみが、ある任意の時点において主記憶装置に記憶される。CPUがある所与のページ内のアドレスを生成したとき、そしてそのページのコピーが主記憶装置内に配置されていないときは、データの必要なページが、比較的大きく、しかし低速の不揮発性記憶装置から主記憶装置へコピーされる。このプロセスにおいて、データの他のページが、必要なページのための空きを作るために、主記憶装置から不揮発性記憶装置にコピーされる。
【０００４】
普及している８０ｘ８６（ｘ８６）プロセッサアーキテクチャは、保護仮想アドレスモードを（つまり保護モード）をサポートする特別なハードウェア要素を含んでいる。図１から３を用いて、ｘ８６プロセッサがどのように仮想メモリおよびメモリ保護機能の両方を実装しているのかを説明する。図１は、ｘ８６プロセッサアーキテクチャの周知のリニアアドレス対仮想アドレス変換機構１００を示す。アドレス変換機構１００はｘ８６プロセッサ上に実現され、ｘ８６プロセッサ内部で生成されたリニアアドレス１０２、ページテーブルディレクトリ（つまり、ページディレクトリ）１０４、ページテーブル１０６を含む複数のページテーブル、ページフレーム１０８を含む複数のページフレームおよび制御レジスタ３（ＣＲ３）１１０を含む。ページディレクトリ１０４および複数のページテーブルは、オペレーティングシステムソフトウェア（つまり、オペレーティングシステム）によって生成され、管理されるページ化されたメモリデータ構造である。ページディレクトリ１０４は常にメモリ（例えば主記憶装置）内に配置される。単純化のために、ページテーブル１０６およびページフレーム１０８もメモリ内に常駐すると仮定する。
【０００５】
図１に示すように、リニア対物理アドレス変換を実行するために、リニアアドレス１０２は３つの部分に分割される。ＣＲ３  １１０の最高順位のビット群はページディレクトリ基本レジスタを記憶するために使用する。ページディレクトリ基本レジスタは、ページディレクトリ１０４を含むメモリページの基本アドレスである。ページディレクトリ１０４は、ページディレクトリエントリ１１２を含む、複数のページディレクトリエントリを含む。リニアアドレス１０２の最高順位つまり最上位ビット（ＭＳＢ）を含むリニアアドレス１０２の上位「ディレクトリインデックス」部分は、ページディレクトリ１０４に対するインデックスとして用いられる。ページディレクトリエントリ１１２は、ＣＲ３  １１０に記憶されているページディレクトリ基本レジスタおよびリニアアドレス１０２の上位「ディレクトリインデックス」部分を用いて、ページディレクトリ１０４のなかから選択する。
【０００６】
図２は、ｘ８６プロセッサアーキテクチャのページディレクトリエントリフォーマット２００を示す。図２に示すように、所与のページディレクトリエントリの最高順位（つまり最上位）ビットは、ページテーブル基本アドレスを含む。ページテーブル基本アドレスは、対応するページテーブルを含むメモリページの基本アドレスである。ページディレクトリエントリ１１２のページテーブル基本アドレスは、対応するページテーブル１０６を選択するために用いられる。
【０００７】
図１を再度参照すると、ページテーブル１０６は、ページテーブルエントリ１１４を含む、複数のページテーブルエントリを有する。リニアアドレス１０２の中間の「テーブルインデックス」部分は、ページテーブル１０６に対するインデックスとして用いられ、それによってページテーブルエントリ１１４を選択する。図３は、ｘ８６プロセッサアーキテクチャのページテーブルエントリフォーマット３００を示す。図３に示すように、与えられたページテーブルエントリの最高順位（つまり最上位）ビットは、ページフレーム基本アドレスを含む。ページフレーム基本アドレスは、対応するページフレームの基本アドレスである。
【０００８】
図１を再度参照すると、ページテーブルエントリ１１４のページフレーム基本アドレスは、対応するページフレーム１０８を選択するために用いられる。ページフレーム１０８は複数の記憶位置を含む。リニアアドレス１０２の下位または「オフセット」部分はページフレーム１０８に対するインデックスとして用いられる。ページテーブルエントリ１１４のページフレーム基本アドレスとリニアアドレス１０２のオフセット部分とが組み合わせられると、リニアアドレス１０２に対応する物理アドレスを生成し、ページフレーム１０８内の記憶位置１１６を指し示す。記憶位置１１６は、リニア対物理アドレス変換の結果生じた物理アドレスを持つ。
【０００９】
メモリ保護機能に関して、図２のページディレクトリエントリフォーマット２００および図３のページテーブルエントリフォーマット３００はユーザ／スーパーバイザー（Ｕ／Ｓ）ビットおよびリード／ライト（Ｒ／Ｗ）ビットを含む。Ｕ／ＳおよびＲ／Ｗビットの内容は、オペレーティングシステムによって、許可されていないアクセスから対応するページフレーム（つまり、メモリページ）を保護するために用いられる。Ｕ／Ｓ＝０は、オペレーティングシステムメモリページを示すために用いられ、オペレーティングシステムの「スーパーバイザー」レベルに対応する。オペレーティングシステムのスーパーバイザーレベルは、ｘ８６プロセッサによって実行されるソフトウェアプログラムおよびルーチンの現在（カレント）特権レベル０（ＣＰＬ０）に対応する。Ｕ／Ｓ＞０（つまり、Ｕ／Ｓ＝１，２または３）はユーザメモリページを示すために用いられ、オペレーティングシステムの「ユーザ」レベルに対応する。
【００１０】
Ｒ／Ｗビットは、対応するメモリページに許可されたアクセスタイプを示すために用いられる。Ｒ／Ｗ＝０は、対応するメモリページに対し、読み出し（リード）アクセスのみが許可されていることを示す（つまり、対応するメモリページは「読み出し専用」である）。Ｒ／Ｗ＝１は、対応するメモリページに対し、読み出しおよび書き込み（リードおよびライト）アクセスが許可されていることを示す（つまり、対応するメモリページは、「リード／ライト」である）。
【００１１】
図１のリニア対物理アドレス変換操作の間、ページフレーム１０８に対応する、ページディレクトリエントリ１１２およびページテーブルエントリ１１４のＵ／Ｓビットの内容の論理積（ＡＮＤ）をとって、ページフレーム１０８に対するアクセスが許可されているかどうかを決定する。同様に、ページテーブルディレクトリエントリ１１２およびページテーブルエントリ１１４のＲ／Ｗビットの内容の論理積（ＡＮＤ）をとって、ページフレーム１０８に対するアクセスが許可されているかどうかを決定する。もしＵ／ＳおよびＲ／Ｗビットの論理的な組み合わせが、ページフレーム１０８に対するアクセスが許可されていることを示していれば、物理アドレスを用いて記憶位置１１６にアクセスする。一方、もしＵ／ＳおよびＲ／Ｗビットの論理的な組み合わせが、ページフレーム１０８に対するアクセスが許可されていないことを示しているならば、記憶位置１１６はアクセスされず、保護違反表示信号が発信される。
【００１２】
残念なことに、上述のｘ８６プロセッサアーキテクチャのメモリ保護機構は、メモリに記憶されたデータを保護するには不十分である。例えば、スーパーバイザーレベル（例えば、ＣＰＬが０）で実行される任意のソフトウェアプログラムまたはルーチンは、メモリの任意の箇所にアクセス可能であり、「読み出し専用」（Ｒ／Ｗ＝０）としてマークされていないメモリの任意の箇所を変更（つまり、書き込み）可能である。さらに、スーパーバイザーレベルで実行しているために、ソフトウェアプログラムまたはルーチンは、メモリの任意箇所の属性（つまり、Ｕ／ＳおよびＲ／Ｗビット）を変更することができる。従って、ソフトウェアプログラムまたはルーチンは、「読み出し専用」としてマークされたメモリの任意の箇所を「読み出しおよび書き込み」（Ｒ／Ｗ＝１）に変更し、その後続けてメモリのその箇所を変更することができる。
【００１３】
ｘ８６プロセッサアーキテクチャの保護機構も、メモリに動作可能に結合されたハードウェアデバイスからのメモリに対する、誤った、または悪意のあるアクセスを防ぐには不十分である。「読み出し専用」にマークされたメモリ部分がハードウェアデバイスによって起動された書き込みアクセスによって変更することができない（そのようなメモリ部分の属性が最初に上述したように変更されない限りは）のは事実である。また、ハードウェアデバイスとメモリの間のデータ転送を取り扱うソフトウェアプログラムまたはルーチン（例えば、デバイスドライバ）は通常ユーザレベル（例えば、ＣＰＬ３）で実行され、スーパーバイザーレベル（Ｕ／Ｓ＝０）にマークされたメモリ部分にアクセスすることを許可されていないのも事実である。しかしながら、ｘ８６プロセッサアーキテクチャの保護機構は、命令実行の結果（つまり、プログラムされた入出力）として実行されるメモリに対するデバイスのアクセスのみを対象とする。デバイスドライバは、バスマスタリングやＤＭＡ機能を有するハードウェアデバイスをプログラムすることができ、そのようなハードウェアデバイスはそれらがアクセス可能なメモリの任意の部分に、それらのデバイスからデータを転送することができる。例えば、フロッピーディスクからオペレーティングシステムを記憶するのに用いられているメモリ部分に直接データを転送するように、フロッピーディスクコントローラをプログラムするのは比較的容易なことである。
【発明の開示】
【発明の概要】
【００１４】
ホストブリッジは、メモリコントローラおよびセキュリティチェックユニットを含むものとして説明される。メモリコントローラは、複数のメモリページに配置されたデータを記憶するメモリに結合するように構成される。メモリコントローラはメモリアクセス信号を受信し（例えば、メモリアクセス中に）、メモリにアクセスすることによってメモリアクセス信号に応答する。セキュリティチェックユニットはメモリアクセス信号を受信する。メモリアクセス信号は、目的のメモリページ内の物理アドレスを伝達する。セキュリティチェックユニットは、目的のメモリページのセキュリティ属性を得るために、メモリ内に配置された一以上のセキュリティ属性データ構造にアクセスするために物理アドレスを用いる。セキュリティチェックユニットは、目的のメモリページのセキュリティ属性に応じて、メモリコントローラにメモリアクセス信号を供給する。
【００１５】
一以上のセキュリティ属性データ構造が、セキュリティ属性テーブルディレクトリおよび一以上のセキュリティ属性テーブルを含む。セキュリティ属性テーブルディレクトリは、複数のエントリを含む。セキュリティ属性テーブルディレクトリの各エントリは、現在ビットおよびセキュリティ属性テーブル基本アドレスフィールドを含む。現在ビットは、セキュリティ属性テーブルディレクトリエントリに対応するセキュリティ属性テーブルがメモリ内に存在するか否かを示す。セキュリティ属性テーブル基本アドレスフィールドは、セキュリティ属性テーブルディレクトリエントリに対応するセキュリティ属性テーブルの基本アドレスのために予約することができる。一以上のセキュリティ属性テーブルは、複数のエントリを含んでもよい。一以上のセキュリティ属性テーブルの各エントリは、対応するメモリページがセキュアページか否かを示すセキュアページ（ＳＰ）ビットを含む。
【００１６】
メモリアクセス信号は、ホストブリッジに結合されたデバイスハードウェアユニットによって生成される。目的のメモリページのセキュリティ属性は、対応するメモリページがセキュアページか否かを示すセキュアページ（ＳＰ）ビットを含む。セキュアページ（ＳＰ）ビットが目的のメモリページがセキュアページではないことを示すとき、セキュリティチェックユニットはメモリコントローラにメモリアクセス信号を供給する。セキュアページ（ＳＰ）ビットが目的のメモリページがセキュアページであることを示すとき、メモリアクセスは不許可になり、セキュリティチェックユニットはメモリコントローラにメモリアクセス信号を供給しない。
【００１７】
メモリアクセス信号はメモリアクセスのタイプを示す。例えば、メモリアクセスのタイプは、読み込み（リード）アクセスまたは書き込み（ライト）アクセスである。セキュアページ（ＳＰ）ビットが目的のメモリページがセキュアページであることを示し、メモリアクセス信号がメモリアクセスのタイプが読み込み（読み出し）アクセスであることを示すとき、そのメモリアクセスは許可されていない読み込みアクセスである可能性がある。この状況では、セキュリティチェックユニットは、この許可されていない読み込みアクセスに、無効またはニセの読み込みデータを供給することで応答する。さらにセキュリティチェックユニットは、許可されていない読み込みアクセスに、その許可されていない読み込みアクセスのログをとる（logging）ことで、応答することもできる。
【００１８】
セキュアページ（ＳＰ）ビットが目的のメモリページがセキュアページであることを示し、メモリアクセス信号がメモリアクセスのタイプが書き込みアクセスであることを示すとき、そのメモリアクセスは許可されていない書き込みアクセスである可能性がある。セキュリティチェックユニットは、メモリアクセス信号によって伝達された書き込みデータを廃棄することによって、許可されていない書き込みアクセスに応答することができる。さらにセキュリティチェックユニットは、許可されていない書き込みアクセスに、その許可されていない書き込みアクセスのログをとる（logging）ことで、応答することもできる。
【００１９】
複数のメモリページ内に配置されたデータを記憶するメモリ、そのメモリに動作可能に結合され、メモリアクセス信号を生成するように構成可能なデバイス、上述のホストブリッジを含むコンピュータシステムを説明する。例えば、コンピュータシステムは、メモリに動作可能に結合され、メモリを管理するように構成されたメモリ管理ユニット（Memory Management Unit, MMU）を含む中央処理装置（ＣＰＵ）を有する。メモリ管理ユニット（ＭＭＵ）は、メモリを管理して、メモリが複数のメモリページに配置されたデータを記憶するようにする。
【００２０】
複数のメモリページに配置されたデータを記憶するのに用いられるメモリのためのアクセスセキュリティを提供する方法を開示する。本方法は、メモリアクセス信号を受信する段階を含み、メモリアクセス信号は目的のメモリページ内の物理アドレスを伝達する。この物理アドレスは、目的のメモリページのセキュリティ属性を取得するために、メモリに配置された一以上のセキュリティ属性データ構造にアクセスするために用いられる。目的のメモリページのセキュリティ属性に応じて、メモリアクセス信号を用いてメモリがアクセスされる。
【００２１】
本発明は、添付の図面と関係付けて、以下の説明を参照することによって理解できるであろう。図面中、類似の参照符号は類似の要素を示している。
本発明は様々な変形および代替の形態をとりうるが、その特定の実施形態を例示のために図面に示し、本明細書において詳細に説明する。しかしながら、特定の実施形態についての本明細書中の説明は、開示された特定の形態に本発明を限定しようとするものではなく、むしろ反対に、添付の特許請求の範囲に規定される本発明の精神および範囲の範疇に入る、すべての変形物、均等物および代替物を含むことを意図している、ことを理解してもらいたい。
【発明を実施するための最良の形態】
【００２２】
本発明の例示としての実施形態を以下説明する。明確化のために、本明細書では、現実の実施品のすべての特徴を説明することはしない。そのような現実の実施品の開発においては、例えばシステム関連の順守事項およびビジネス上の制約など、実用化の事例毎に異なる、開発者の特定の目標を達成するために、数々の実施に則した判断を行わなければならないことは当然理解してもらえるだろう。さらに、そのような開発努力は複雑で時間のかかるものであるかもしれないが、それにもかかわらず本明細書の開示による利益を得た当業者にとっては日常作業に過ぎないことも理解できるであろう。
【００２３】
図４はコンピュータシステム４００の一実施形態を示す。コンピュータシステム４００は、ＣＰＵ４０２、システムつまり「ホスト」ブリッジ４０４、メモリ４０６、第１デバイスバス４０８（例えば、ペリフェラル・コンポーネント・インターコネクト、つまりＰＣＩバス）、デバイスバスブリッジ４１０、第２デバイスバス４１２（例えば、インダストリ・スタンダード・アーキテクチャ、つまりＩＳＡバス）および４つのデバイスハードウェアユニット４１４Ａ−４１４Ｄを含む。ホストブリッジ４０４は、ＣＰＵ４０２、メモリ４０６およびデバイスバス４０８に結合される。ホストブリッジ４０４はＣＰＵ４０２とデバイスバス４０８との間で信号を変換し、メモリ４０６をＣＰＵ４０２およびデバイスバス４０８に対して動作可能に結合する。デバイスバスブリッジ４１０はデバイスバス４０８とデバイスバス４１２との間に結合され、デバイスバス４０８とデバイスバス４１２の間で信号を変換する。図４の実施形態では、デバイスハードウェアユニット４１４Ａおよび４１４Ｂはデバイスバス４０８に結合され、デバイスハードウェアユニット４１４Ｃおよび４１４Ｄはデバイスバス４１２に結合される。例えば、デバイスハードウェアユニット４１４Ａ−４１４Ｄの一以上が記憶装置（例えば、ハードディスクドライブ、フロッピードライブ、およびＣＤ−ＲＯＭドライブ）、通信装置（例えば、モデムおよびネットワークアダプタ）、または入出力装置（例えば、ビデオ装置、オーディオ装置、およびプリンタ）であってよい。
【００２４】
図４の実施形態においては、ＣＰＵ４０２はＣＰＵセキュリティチェックユニット（ＳＣＵ）４１６を含み、そしてホストブリッジ４０４はホストブリッジＳＣＵ４１８を含む。以下で詳細に説明するように、ＣＰＵ  ＳＣＵ４１６はＣＰＵ４０２によって生成された許可されていないアクセス（つまり、「ソフトウェア起源のアクセス」）からメモリ４０６を保護し、そしてホストブリッジＳＣＵ４１８は、デバイスハードウェアユニット４１４Ａ−４１４Ｄによって起動された許可されていないアクセス（つまり、「ハードウェア起源のアクセス」）からメモリ４０６を保護する。他の実施形態においては、ホストブリッジ４０４は、図４に示すようにＣＰＵ４０２の一部である。
【００２５】
図５は、図４のコンピュータシステム４００の様々なハードウェアおよびソフトウェア部品間の関係を示す。図５の実施形態において、複数のアプリケーションプログラム５００、オペレーティングシステム５０２、セキュリティカーネル５０４、およびデバイスドライバ５０６Ａ−５０６Ｄがメモリ４０６に記憶されている。アプリケーションプログラム５００、オペレーティングシステム５０２、セキュリティカーネル５０４、およびデバイスドライバ５０６Ａ−５０６Ｄは、ＣＰＵ４０２によって実行される命令を含む。オペレーティングシステム５０２は、ユーザインターフェイスと、その上でアプリケーションプログラム５００が走るソフトウェアの「プラットフォーム」とを提供する。さらにオペレーティングシステム５０２は、例えばファイルシステム管理、プロセス管理、および入力／出力（Ｉ／Ｏ）制御を含む基本サポート機能を提供する。
【００２６】
オペレーティングシステム５０２は基本セキュリティ機能をも提供する。例えば、ＣＰＵ４０２（図４）は、ｘ８６インストラクションセットの命令群を実行するｘ８６プロセッサである。この状況では、ＣＰＵ４０２は、上述の保護モードにおいて仮想メモリおよびメモリ保護機能の両方を提供するための特別のハードウェア要素を含む。オペレーティングシステム５０２は、例えば、ウィンドウズ（商標）ファミリー・オペレーティングシステム（マイクロソフト社、ワシントン州レッドモンド）の一つでよく、それはＣＰＵ４０２を保護（プロテクト）モードで動作させ、ＣＰＵ４０２の特別のハードウェア要素を用いて、保護モードにおいて仮想メモリおよびメモリ保護の両方を提供する。
【００２７】
以下でさらに詳細に説明するように、セキュリティカーネル５０４は、オペレーティングシステム５０２が提供するセキュリティ機能よりも上の追加セキュリティ機能を提供して、許可されていないアクセスからメモリ４０６に記憶されたデータを保護する。図５の実施形態において、デバイスドライバ５０６Ａ−５０６Ｄは、対応するデバイスハードウェアユニット４１４Ａ−４１４Ｄのそれぞれに動作可能に関連づけられ、結合される。デバイスハードウェアユニット４１４Ａおよび４１４Ｄは「セキュア」デバイスであって、対応するデバイスドライバ５０６Ａおよび５０６Ｄは「セキュア」デバイスドライバである。セキュリティカーネル５０４は、オペレーティングシステム５０２とセキュアデバイスドライバ５０６Ａおよび５０６Ｄとの間に結合され、デバイスドライバ５０６Ａおよび５０６Ｄ、そして対応するセキュアデバイス４１４Ａおよび４１４Ｄを保護するために、アプリケーションプログラム５００およびオペレーティングシステム５０２によるすべてのアクセスを監視する。セキュリティカーネル５０４は、セキュアデバイスドライバ５０６Ａおよび５０６Ｄ、そして対応するセキュアデバイス４１４Ａおよび４１４Ｄに対する、アプリケーションプログラム５００およびオペレーションシステム５０２による、許可されていないアクセスを防止する。
【００２８】
図５に示すように、セキュリティカーネル５０４はＣＰＵ  ＳＣＵ４１６およびホストブリッジＳＣＵ４１８（例えば、一以上のデバイスドライバを介して）に結合される。以下で詳細に説明するように、ＣＰＵ  ＳＣＵ４１６およびホストブリッジＳＣＵ４１８はメモリ４０６に対するアクセスを制御する。ＣＰＵ  ＳＣＵ４１６はメモリ４０６に対するすべてのソフトウェア起源のアクセスを監視し、そしてホストブリッジＳＣＵ４１８はメモリ４０６に対するすべてのハードウェア起源のアクセスを監視する。セキュリティカーネル５０４によって設定されると、ＣＰＵ  ＳＣＵ４１６およびホストブリッジＳＣＵ４１８は、メモリ４０６に対する許可されたアクセスのみを許可する。
【００２９】
図５の実施形態において、デバイスドライバ５０６Ｂおよび５０６Ｃは「非セキュア」なデバイスドライバであって、対応するデバイスハードウェアユニット４１４Ｂおよび４１４Ｃは「非セキュアな」デバイスハードウェアユニットである。デバイスドライバ５０６Ｂおよび５０６Ｃならびに対応するデバイスハードウェアユニット４１４Ｂおよび４１４Ｃは、例えば「レガシー」デバイスドライバおよびデバイスハードウェアユニットであってもよい。
【００３０】
他の実施形態では、セキュリティカーネル５０４は、オペレーティングシステム５０２の一部であってもよい、ことに注意してほしい。さらに他の実施形態では、セキュリティカーネル５０４、デバイスドライバ５０６Ａおよび５０６Ｄ、および／またはデバイスドライバ５０６Ｂおよび５０６Ｃはオペレーティングシステム５０２の一部であってもよい。
【００３１】
図６は、図４のコンピュータシステム４００のＣＰＵ４０２の一実施形態を示す。図６の実施形態では、ＣＰＵ４０２は、実行ユニット６００、メモリ管理ユニット（ＭＭＵ）６０２、キャッシュユニット６０４、バスインターフェイスユニット（ＢＩＵ）６０６、制御レジスタセット６０８、セキュア実行モード（ＳＥＭ）レジスタセット６１０を含む。ＣＰＵ  ＳＣＵ４１６はＭＭＵ６０２の中に位置する。以下で詳細に説明するように、ＳＥＭレジスタセット６１０は図４のコンピュータシステム４００内でセキュア実行モード（ＳＥＭ）を実現するために使用され、ＣＰＵ  ＳＣＵ４１６およびホストブリッジＳＣＵ４１８の動作は、ＳＥＭレジスタセット６１０の内容によって制御される。ＳＥＭレジスタ６１０はセキュリティカーネル５０４（図５）によってアクセス（つまり、書き込み、および／または読み出し）される。図４のコンピュータシステム４００は例えば、（１）ＣＰＵ４０２がｘ８６保護モードで動作するｘ８６プロセッサであり、（２）メモリのページングがイネーブルであり、および（３）ＳＥＭレジスタ６１０の内容がＳＥＭ動作を特定しているときには、ＳＥＭで動作しうる。
【００３２】
一般的に、制御レジスタセット６０８の内容はＣＰＵ４０２の動作を制御する。従って、制御レジスタセット６０８の内容は、実行ユニット６００、ＭＭＵ６０２、キャッシュユニット６０４、および／またはＢＩＵ６０６の動作を制御する。制御レジスタセット６０８は、例えば、ｘ８６プロセッサアーキテクチャの複数の制御レジスタを含む。
【００３３】
ＣＰＵ４０２の実行ユニット６００は命令（例えば、ｘ８６インストラクション）およびデータをフェッチし、フェッチされた命令を実行し、命令実行のあいだに信号（例えば、アドレス、データ、および制御信号）を生成する。実行ユニット６００はキャッシュユニット６０４に結合され、キャッシュユニット６０４およびＢＩＵ６０６を介して、メモリ４０６（図４）から命令を受信する。
【００３４】
コンピュータシステム４００のメモリ４０６（図４）は複数の記憶位置を有し、それぞれが一意の物理アドレスを持つ。ページングがイネーブルになった、保護モードで動作しているときは、ＣＰＵ４０２のアドレス空間は、ページフレームまたは「ページ」と呼ばれる複数のブロックに分割されている。上述のように、ある任意の時点において、ページ群の一部に対応するデータのみがメモリ４０６に記憶される。図６の実施形態では、命令実行のあいだ、実行ユニット６００によって生成されたアドレス信号がセグメント化された（つまり、「論理的な」）アドレスを表す。以下で説明するように、ＭＭＵ６０２は実行ユニット６００によって生成されたセグメント化されたアドレスを、メモリ４０６の対応する物理アドレスに変換する。ＭＭＵ６０２は、その物理アドレスをキャッシュユニット６０４に供給する。キャッシュユニット６０４は、実行ユニット６００によって直近にフェッチされた命令およびデータを記憶するために使用される、比較的小容量の記憶ユニットである。ＢＩＵ６０６はキャッシュユニット６０４とホストブリッジ４０４の間に結合され、キャッシュユニット６０４に存在しない命令やデータを、ホストブリッジ４０４を介してメモリ４０６からフェッチするのに使用される。
【００３５】
図７は、図６のＭＭＵ６０２の一実施形態を示す。図７の実施形態では、ＭＭＵ６０２は、セグメント化ユニット７００、ページングユニット７０２、および選択ロジック７０４を含み、物理アドレスを生成するために、セグメント化ユニット７００およびページングユニット７０２からの出力を選択する。図７に示すように、セグメント化ユニット７００は実行ユニット６００からセグメント化されたアドレスを受信し、ｘ８６プロセッサアーキテクチャの周知のセグメント化されたアドレス対リニアアドレス変換機構を使用して、出力において対応するリニアアドレスを生成する。図７に示すように、「ページング」信号によってイネーブルされているときは、ページングユニット７０２はセグメント化ユニット７００が生成したリニアアドレスを受信し、出力において対応する物理アドレスを生成する。ページング信号は、ｘ８６プロセッサアーキテクチャおよび制御レジスタセット６０８（図６）の制御レジスタ０（ＣＲ０）内のページングフラグ（ＰＧ）ビットを反映する。ページング信号がアサートされていない（deasserted）ときは、メモリのページングはイネーブルになっておらず、選択ロジック７０４はセグメント化ユニット７００から受信したリニアアドレスを物理アドレスとして生成する。
【００３６】
ページング信号がアサートされているとき、メモリページングはイネーブルであり、ページングユニット７０２はセグメント化ユニット７００から受信したリニアアドレスを、ｘ８６プロセッサアーキテクチャ（図１）の上述のリニア対物理アドレス変換機構１００を用いて、対応する物理アドレスに変換する。上述のように、リニア対物理アドレス変換処理のあいだ、選択されたページディレクトリエントリおよび選択されたページテーブルエントリのＵ／Ｓビットの内容の論理積（ＡＮＤ）をとって、ページフレームに対するアクセスが許可されているかどうかを決定する。同様に、選択されたページディレクトリエントリおよび選択されたページテーブルエントリのＲ／Ｗビットの内容の論理積をとって、そのページフレームに対するアクセスが許可されているかどうかを決定する。もしＵ／ＳおよびＲ／Ｗビットの論理的な組み合わせがそのページフレームに対するアクセスが許可されていることを示しているならば、ページングユニット７０２は、リニア対物理アドレス変換処理の結果としての物理アドレスを生成する。選択ロジック７０４はページングユニット７０２によって生成された物理アドレスを受信し、ページングユニット７０２から受信した物理アドレスを物理アドレスとして生成し、その物理アドレスをキャッシュユニット６０４に供給する。
【００３７】
一方で、もしＵ／ＳおよびＲ／Ｗビットの論理的な組み合わせがページフレーム１０８に対するアクセスが許可されていないことを示しているならば、ページングユニット７０２は、リニア対物理アドレス変換処理のあいだ、物理アドレスを生成しない。その代わりに、ページングユニット７０２はページ違反信号をアサートし、ＭＭＵ６０２はそのページ違反信号を実行ユニット６００に転送する。ｘ８６プロセッサアーキテクチャでは、ページ違反信号は、ある場合には、保護違反を表す。ページ違反信号に応答して、実行ユニット６００は例外ハンドラルーチン（exception handler routine）を実行し、ページ違反信号がアサートされたときに、最終的に走っている複数のアプリケーションプログラム５００（図５）の一つの実行を停止させる。
【００３８】
図７の実施形態では、ＣＰＵ  ＳＣＵ４１６はＭＭＵ６０２のページングユニット７０２の中に配置されている。ページングユニット７０２はさらに、直近に決定されたリニア対物理アドレス変換の比較的少数を記憶するための変換索引バッファ（translation lookaside buffer, TLB）を含む。
【００３９】
図８は、図７のＣＰＵ  ＳＣＵ４１６の一実施形態を示す。図８の実施形態では、ＣＰＵ  ＳＣＵ４１６は、ＳＥＭレジスタセット６１０（図６）に結合されたセキュリティチェックロジック８００およびセキュリティ属性テーブル（ＳＡＴ）エントリバッファ８０２を含む。以下で説明するように、ＳＡＴエントリは、メモリページに対応するページディレクトリおよびページテーブルエントリのＵ／ＳおよびＲ／Ｗビットの上の、追加セキュリティ情報を含む。セキュリティチェックロジック８００は、所与のＳＡＴエントリに記憶された、この追加セキュリティ情報を使用して、対応するメモリページへの許可されていないソフトウェア起源のアクセスを防止する。ＳＡＴエントリバッファ８０２は、直近にアクセスされたメモリページの比較的少数のＳＡＴエントリを記憶するのに用いられる。
【００４０】
上述したように、ＳＥＭレジスタセット６１０は、図４のコンピュータシステム４００にセキュア実行モード（ＳＥＭ）を実装するために使用される。ＳＥＭレジスタセット６１０の内容はＣＰＵ  ＳＣＵ４１６の動作を制御する。セキュリティチェックロジック８００は、図８に示すように、通信バスを介してＭＭＵ６０２からＳＡＴエントリバッファ８０２に記憶されるべき情報を受信する。セキュリティチェックロジック８００はページングユニット７０２によって生成された物理アドレスをも受信する。
【００４１】
図９−１１を参照して、図４のコンピュータシステム４００内で、図１のアドレス変換機構１００を用いて、どのようにして選択されたメモリページの追加セキュリティ情報を取得するのかを説明する。図９は、選択されたメモリページの追加セキュリティ情報を取得するために、その選択されたメモリページのＳＡＴエントリにアクセスする機構９００の一実施形態を示す。図９の機構９００は図８のセキュリティチェックロジック８００内に実現することが可能であり、図４のコンピュータシステム４００がＳＥＭで動作しているときに実装される。機構９００は、図１のアドレス変換機構１００を用いてページング機構７０２（図７）によって生成された物理アドレス９０２、ＳＡＴディレクトリ９０４、ＳＡＴ９０４を含む複数のＳＡＴ、およびＳＥＭレジスタセット６１０のＳＡＴ基本アドレスレジスタ９０８を含む。ＳＡＴ９０６を含む、ＳＡＴディレクトリ１０４および複数のＳＡＴは、セキュリティカーネル５０４（図５）によって生成され、維持されるＳＥＭデータ構造である。以下で説明するように、ＳＡＴディレクトリ１０４（存在するとき）および必要なＳＡＴのすべてが、アクセスされる前に、メモリ４０６にコピーされる。
【００４２】
ＳＡＴ基本アドレスレジスタ９０８は、有効なＳＡＴディレクトリ基本アドレスがＳＡＴ基本アドレスレジスタ９０８内に存在することを示す、存在（Ｐ）ビットを含む。ＳＡＴ基本アドレスレジスタ９０８の最高順位（つまり、最上位）ビットはＳＡＴディレクトリ基本アドレスのために予約される。ＳＡＴディレクトリ基本アドレスは、ＳＡＴディレクトリ９０４を含むメモリページの基本アドレスである。Ｐ＝１であるならば、ＳＡＴディレクトリ基本アドレスは有効であり、ＳＡＴテーブルはメモリページのセキュリティ属性を特定する。Ｐ＝０であるならば、ＳＡＴディレクトリ基本アドレスは有効ではなく、ＳＡＴテーブルは存在せず、メモリページのセキュリティ属性はＳＡＴデフォルトレジスタによって決定される。
【００４３】
図１０は、ＳＡＴデフォルトレジスタ１０００の一実施形態を示す。図１０の実施形態では、ＳＡＴデフォルトレジスタ１０００はセキュアページ（ＳＰ）ビットを含む。このＳＰビットはすべてのメモリページがセキュアページなのか否かを示す。例えば、もしＳＰ＝０ならば、すべてのメモリページはセキュアページではなく、もしＳＰ＝１ならばすべてのメモリページはセキュアページである。
【００４４】
図９に戻って、ＳＡＴ基本アドレスレジスタ９０８のＰビットが「１」であると仮定すると、ページングロジック７０２（図７）によって生成される物理アドレス９０２は、選択されたメモリページのＳＡＴエントリにアクセスするために３つの部分に分割される。上述したように、ＳＡＴ基本アドレスレジスタ９０８のＳＡＴディレクトリ基本アドレスは、ＳＡＴディレクトリ９０４を含むメモリページの基本アドレスである。ＳＡＴディレクトリ９０４は、ＳＡＴディレクトリエントリ９１０を含む、複数のＳＡＴディレクトリエントリを含む。それぞれのＳＡＴディレクトリエントリは、メモリ４０６に対応するＳＡＴを持ちうる。物理アドレス９０２の最高順位つまり最上位ビットを含む、物理アドレス９０２の「上位」部分は、ＳＡＴディレクトリ９０４に対するインデックスとして用いられる。ＳＡＴディレクトリエントリ９１０は、ＳＡＴ基本アドレスレジスタ９０８のＳＡＴディレクトリ基本アドレスおよび物理アドレス９０２の上位部分を用いて、ＳＡＴディレクトリ９０４のなかから選択される。
【００４５】
図１１は、ＳＡＴディレクトリエントリフォーマット１１００の一実施形態を示す。図１１に従って、各ＳＡＴディレクトリエントリは、ＳＡＴディレクトリエントリ内に有効なＳＡＴ基本アドレスが存在することを示す、存在（Ｐ）ビットを含む。図１１の実施形態では、各ＳＡＴディレクトリエントリの最高順位（つまり、最上位）ビットはＳＡＴ基本アドレスのために予約されている。ＳＡＴ基本アドレスは、対応するＳＡＴを含むメモリページの基本アドレスである。もしＰ＝１ならば、ＳＡＴ基本アドレスは有効であり、対応するＳＡＴはメモリ４０６に記憶されている。
【００４６】
もしＰ＝０ならば、ＳＡＴ基本アドレスは有効ではなく、対応するＳＡＴはメモリ４０６に存在しないので、記憶装置（例えば、ディスクドライブ）からメモリ４０６にコピーしなければならない。もしＰ＝０ならば、セキュリティチェックロジック８００がページ違反をページングユニット７０２内のロジックに報知し、ＭＭＵ６０２はそのページ違反信号を実行ユニット６００（図６）に転送する。ページ違反信号に応答して、実行ユニット６００は、必要なＳＡＴを記憶装置から読み出し、その必要なＳＡＴをメモリ４０６に記憶する、ページ違反ハンドラルーチンを実行する。必要なＳＡＴがメモリ４０６に記憶された後、対応するＳＡＴディレクトリエントリのＰビットが「１」に設定され、機構９００は継続する。
【００４７】
図９を再度参照して、物理アドレス９０２の「中間」部分は、ＳＡＴ９０６に対するインデックスとして用いられる。従って、ＳＡＴエントリ９０６は、ＳＡＴディレクトリエントリ９１０のＳＡＴ基本アドレスおよび物理アドレス９０２の中間部分を用いて、ＳＡＴ９０６のなかから選択される。図１２は、ＳＡＴエントリフォーマット１２００の一実施形態を示す。図１２の実施形態では、各ＳＡＴエントリがセキュアページ（ＳＰ）ビットを含む。このＳＰビットが、選択されたメモリページがセキュアページか否かを示す。例えば、もしＳＰ＝０ならば、選択されたメモリページはセキュアページではなく、もしＳＰ＝１ならば、選択されたメモリページはセキュアページである。
【００４８】
ＢＩＵ６０６（図６）は、メモリ４０６から必要なＳＥＭデータ構造エントリを読み出し、ＭＭＵ６０２にそのＳＥＭデータ構造エントリを供給する。図８に戻って、セキュリティチェックロジック８００は、通信バスを介して、ＭＭＵ６０２およびページングユニット７０２からＳＥＭデータ構造エントリを受信する。上述したように、ＳＡＴエントリバッファ８０２は、直近にアクセスされたメモリページのＳＡＴエントリの比較的少数を記憶するために用いられる。セキュリティチェックロジック８００は与えられたＳＡＴエントリを、対応する物理アドレスの「タグ」部分とともに、ＳＡＴエントリバッファ８０２に記憶する。
【００４９】
続くメモリページアクセスのあいだ、セキュリティチェックロジック８００は、ページングユニット７０２によって生成された物理アドレスの「タグ」部分とＳＡＴエントリバッファ８０２に記憶されたＳＡＴエントリに対応する物理アドレスのタグ部分とを比較する。もし、物理アドレスのタグ部分が、ＳＡＴエントリバッファ８０２に記憶されたＳＡＴエントリに対応する物理アドレスのタグ部分と合うならば、セキュリティチェックロジック８００はＳＡＴエントリバッファ８０２内のＳＡＴエントリにアクセスして、メモリ４０６からＳＡＴエントリを取得するために図９の処理を実行する必要をなくす。セキュリティカーネル５０４（図５）は、ＣＰＵ４０２内のＳＡＴ基本アドレスレジスタ９０８の内容を変更する（例えば、コンテクストスイッチのあいだに）。ＳＡＴ基本アドレスレジスタ９０８の変更に応答して、ＣＰＵ  ＳＣＵ４１６のセキュリティチェックロジック８００はＳＡＴエントリバッファ８０２をクリア（フラッシュ）する。
【００５０】
図４のコンピュータシステム４００がＳＥＭで動作しているとき、セキュリティチェックロジック８００は、物理アドレスがその中にある選択されたメモリページのページディレクトリエントリ（ＰＤＥ）Ｕ／Ｓビット、ＰＤＥ  Ｒ／Ｗビット、ページテーブルエントリ（ＰＴＥ）Ｕ／ＳビットおよびＰＴＥ  Ｒ／Ｗビットとともに、現在実行中のタスク（つまり、現在実行中の命令）の現在の特権レベル（ＣＰＬ）を受信する。セキュリティチェックロジック８００は、上記情報を選択されたメモリページに対応するＳＡＴエントリのＳＰビットとともに用いて、メモリ４０６のアクセスが許可されているか否かを決定する。
【００５１】
図６のＣＰＵ４０２はｘ８６プロセッサであり、ｘ８６プロセッサアーキテクチャの１６ビットセグメントレジスタの一つである、コードセグメント（ＣＳ）レジスタを含む。各セグメントレジスタは、セグメントと呼ばれる、６４ｋのメモリブロックを選択する。ページングがイネーブルにされた保護モードでは、ＣＳレジスタは、メモリ４０６の実行可能セグメントを示すセグメントセレクタによってロードされる。セグメントセレクタの最高順位（つまり、最上位）ビットは、ＣＰＵ４０２（図６）の実行ユニット６００によって実行されるべき次の命令を含むメモリセグメントを示す情報を記憶するのに用いられる。命令ポインタ（ＩＰ）レジスタは、ＣＳレジスタによって示されるセグメントに対するオフセットを記憶するのに用いられる。ＣＳとＩＰの組みは次の命令のセグメント化されたアドレスを示す。ＣＳレジスタの２つの最低順位（つまり、最下位）ビットは、実行ユニット６００によって現在実行中のタスクの現在の特権レベル（ＣＰＬ）（つまり、現在のタスクのＣＰＬ）を示す値を記憶するために用いられる。
【００５２】
次の表１は、図４のコンピュータシステム４００がＳＥＭで動作しているときの、ＣＰＵ起源（つまり、ソフトウェア起源）のメモリアクセスのための規則例を示す。ＣＰＵ  ＳＣＵ４１６（図４−８）およびセキュリティカーネル５０４（図５）は、図４のコンピュータシステム４００がＳＥＭで動作しているときに、共同して表１の規則を実現するように働き、オペレーティングシステム５０２（図５）によって提供されるデータセキュリティを超える追加のセキュリティをメモリ４０６に記憶されたデータに提供する。
【表１】
2005512228.tif 000003
【００５３】
上の表１では、現在実行中の命令のＳＰビットは、現在実行中の命令を含むメモリページに対応するＳＡＴエントリのＳＰビットである。選択されたメモリページのＵ／Ｓビットは、選択されたメモリページのＰＤＥ  Ｕ／ＳビットとＰＴＥ  Ｕ／Ｓビットの論理積である。選択されたメモリページのＲ／Ｗビットは、選択されたメモリページのＰＤＥ  Ｒ／ＷビットとＰＴＥ  Ｒ／Ｗビットの論理積である。シンボル「Ｘ」は「不定」を意味する。論理値は「０」または「１」のどちらでもよい。
【００５４】
図８に戻って、ＣＰＵ  ＳＣＵ４１６のセキュリティチェックロジック８００はページ違反信号および「ＳＥＭセキュリティ例外」信号を生成し、これらページ違反およびＳＥＭセキュリティ例外信号をページングユニット７０２内のロジックに供給する。セキュリティチェックロジック８００がページ違反信号をアサートしたとき、ＭＭＵ６０２はそのページ違反信号を実行ユニット６００（図６）に転送する。ページ違反信号に応答して、実行ユニット６００は、ｘ８６プロセッサアーキテクチャの周知のインタラプト・ディスクリプタ・テーブル（ＩＤＴ）ベクタリング機構を用いて、ページ違反ハンドラルーチンにアクセスし、実行する。
【００５５】
セキュリティチェックロジック８００がＳＥＭセキュリティ例外信号をアサートしたとき、ＭＭＵ６０２はそのＳＥＭセキュリティ例外信号を実行ユニット６００に転送する。ｘ８６プロセッサアーキテクチャのＩＤＴベクタリング機構を使用する通常のプロセッサ例外とは異なり、ＳＥＭセキュリティ例外の処理には異なったベクタリング方法が用いられる。ＳＥＭセキュリティ例外は、”SYSENTER”および”SYSEXIT”命令が動作するのと同様の方法で、レジスタペア（例えば、モデル特有のレジスタまたはＭＳＲ）を通じてディスパッチされる。このレジスタペアは「セキュリティ例外エントリポイント」レジスタであり、ＳＥＭセキュリティ例外が発生したときに、命令実行のための分岐目標アドレスを定義する。このセキュリティ例外エントリポイントレジスタはコードセグメント（ＣＳ）を定義し、次に、ＳＥＭセキュリティ例外ハンドラに対するエントリに使用されるべき、命令ポインタ（ＩＰ，またはＲＩＰの６４ビットパージョン）、スタックセグメント（ＳＳ）、およびスタックポインタ（ＳＰ，またはＲＳＰの６４ビットバージョン）の値を定義する。ソフトウェア制御下では、実行ユニット６００（図６）は、先行するＳＳ、ＳＰ／ＲＳＰ、ＥＦＬＡＧＳ，ＣＳおよびＩＰ／ＲＩＰの値を新しいスタックにプッシュして、どこで例外が発生したのかを示す。さらに、実行ユニット６００はエラーコードをスタックにプッシュすることができる。先行するＳＳおよびＳＰ／ＲＳＰ値が常にセーブされている場合には、割り込み（ＩＲＥＴ）命令からの通常のリターンは使用されず、ＣＰＬの変更が起こらないときでもスタック切り替えが常に実行される、ことに注意してもらいたい。従って、新しい命令は、ＳＥＭセキュリティ例外ハンドラからのリターンを実行するように定義される。
【００５６】
図１３は、図４のホストブリッジ４０４の一実施形態を示す。図１３の実施形態では、ホストブリッジ４０４はホストインターフェイス１３００、ブリッジロジック１３０２、ホストブリッジＳＣＵ４１８、メモリコントローラ１３０４、およびデバイスバスインターフェイス１３０６を含む。ホストインターフェイス１３００はＣＰＵ４０２に結合され、デバイスバスインターフェイス１３０６はデバイスバス４０８に結合される。ブリッジロジック１３０２は、ホストインターフェイス１３００とデバイスバスインターフェイス１３０６との間に結合される。メモリコントローラ１３０４はメモリ４０６に結合され、メモリ４０６に対するすべてのアクセスを実行する。ホストブリッジＳＣＵ４１８は、ブリッジロジック１３０２とメモリコントローラ１３０４との間に結合される。上述のように、ホストブリッジＳＣＵ４１８は、デバイスバスインターフェイス１３０６を介してメモリ４０６に対するアクセスを制御する。ホストブリッジＳＣＵ４１８はデバイスバスインターフェイス１３０６を介したメモリ４０６に対するすべてのアクセスを監視し、メモリ４０６に対する許可されたアクセスのみを許可する。
【００５７】
図１４は、図１３のホストブリッジＳＣＵ４１８の一実施形態を示す。図１４の実施形態では、ホストブリッジＳＣＵ４１８は、ＳＥＭレジスタセット１４０２およびＳＡＴエントリバッファ１４０４に結合されたセキュリティチェックロジック１４００を含む。ＳＥＭレジスタセット１４０２はセキュリティチェックロジック１４００の動作を制御し、図９の第２ＳＡＴ基本アドレスレジスタ９０８を含む。ＳＥＭレジスタセット１４０２の第２ＳＡＴ基本アドレスレジスタ９０８はアドレス指定可能なレジスタであってもよい。セキュリティカーネル５０４（図５）がＣＰＵ４０２のＳＥＭレジスタセット６１０内のＳＡＴ基本アドレスレジスタ９０８の内容を変更するとき（例えば、コンテクスト切り替えの際）、セキュリティカーネル５０４はさらに、ホストブリッジＳＣＵ４１８のＳＥＭレジスタセット１４０２内の第２ＳＡＴ基本アドレスレジスタ９０８に対して同じ値を書き込むことができる。第２ＳＡＴ基本アドレスレジスタ９０８の変更に応答して、ホストブリッジＳＣＵ４１８のセキュリティチェックロジック１４００はＳＡＴエントリバッファ１４０４をクリアする。
【００５８】
セキュリティチェックロジック１４００は、ハードウェアデバイスユニット４１４Ａ−４１４Ｄ（図４）起源のメモリアクセスのメモリアクセス信号を、デバイスバスインターフェイス１３０６およびブリッジロジック１３０２（図１３）を介して受信する。メモリアクセス信号はハードウェアデバイスユニット４１４Ａ−４１４Ｄから物理アドレスおよび関連する制御および／またはデータ信号を伝達する。セキュリティチェックロジック１４００は対応するメモリページのＳＡＴエントリを取得するために機構９００（図９）を実現し、図４のコンピュータシステム４００がＳＥＭで動作しているときに機構９００を実装する。ＳＡＴエントリバッファ１４０４は、上述したＣＰＵ  ＳＣＵ４１６のＳＡＴエントリバッファ８０２（図８）に類似し、直近にアクセスされたメモリページのＳＡＴエントリの相対的に少数を記憶するために用いられる。
【００５９】
図４のコンピュータシステム４００がＳＥＭで動作しているとき、図１４のセキュリティチェックロジック１４００は、与えられたハードウェア起源のメモリアクセスが許可されているか否かを決定するために、選択されたメモリページに関連するＳＡＴエントリの追加セキュリティ情報を用いる。もし与えられたハードウェア起源のメモリアクセスが許可されているならば、セキュリティチェックロジック１４００は、メモリアクセスのメモリアクセス信号（つまり、物理アドレスおよび関連する制御および／またはデータ信号を伝達するアドレス信号）をメモリコントローラ１３０４に供給する。メモリコントローラ１３０４は物理アドレスおよび関連する制御および／またはデータ信号を用いてメモリ４０６にアクセスする。もしメモリ４０６へのアクセスが書き込みアクセスならば、データ信号によって伝達されるデータはメモリ４０６に書き込まれる。もしメモリ４０６へのアクセスが読み込みアクセスならば、メモリコントローラ１３０４はメモリ４０６からデータを読み込んで、結果としての読み込みデータをセキュリティチェックロジック１４００に供給する。セキュリティチェックロジック１４００はその読み込まれたデータをブリッジロジック１３０２へ転送し、ブリッジロジック１３０２はそのデータをデバイスバスインターフェイス１３０６に供給する。
【００６０】
一方、もし与えられたハードウェア起源のメモリアクセスが許可されていないときは、セキュリティチェックロジック１４００は、メモリ４０６に対するアクセスの物理アドレスおよび関連する制御および／またはデータ信号をメモリコントローラ１３０４に供給しない。もし許可されていないハードウェア起源のメモリアクセスがメモリへの書き込み（ライト）アクセスならば、セキュリティチェックロジック１４００は書き込みアクセスの完了を伝達し、メモリ４０６を変更せずに書き込みデータを廃棄する。セキュリティチェックロジック１４００はさらに、セキュリティアクセス違反を記録するために、ログにログエントリを作成する（例えば、ステータスレジスタの一以上のビットをセットまたはクリアする）。セキュリティカーネル５０４はそのようなログエントリをチェックするために周期的にログにアクセスすることができる。もし、許可されていないハードウェア起源のメモリアクセスがメモリからの読み込み（リード）アクセスならば、セキュリティチェックロジック１４００は、ブリッジロジック１３０２を介して、読み込みデータとしてニセの結果（例えば、すべて「Ｆ」）をデバイスバスインターフェイス１３０６に返す。セキュリティチェックロジック１４００はさらに、上述したように、セキュリティアクセス違反を記録するためにログエントリを作成することができる。
【００６１】
図１５は、複数のメモリページに配置されたデータを記憶するのに用いられるメモリにアクセスセキュリティを提供する方法１５００の一実施形態の流れ図である。方法１５００は、図４のコンピュータシステム４００がＳＥＭで動作しているときの、ＣＰＵ起源（つまり、ソフトウェア起源）のメモリアクセスのための表１の規則例を反映している。方法１５００はＭＭＵ６０２（図６−７）内で実現される。方法１５００のステップ１５０２の際、命令実行の間に生成されるリニアアドレスが、その命令のセキュリティ属性（例えば、命令を含むタスクのＣＰＬ）とともに受信される。その命令はメモリページ内に存在する。ステップ１５０４の間、選択されたメモリページの基本アドレスおよび選択されたメモリページのセキュリティ属性を取得するために、リニアアドレスを用いてメモリに配置された少なくとも一つのページ化されたメモリデータ構造（例えば、ページディレクトリおよびページテーブル）にアクセスする。選択されたメモリページのセキュリティ属性は、例えば、ページディレクトリエントリのＵ／ＳビットおよびＲ／ＷビットならびにページテーブルエントリのＵ／ＳビットおよびＲ／Ｗビットを含む。
【００６２】
決定ステップ１５０６の間、アクセスが許可されているか否かを決定するのに、命令のセキュリティ属性および選択されたメモリページのセキュリティ属性を用いる。もしアクセスが許可されているならば、選択されたメモリページの基本アドレスおよびオフセットをステップ１５０８で組み合わせて、選択されたメモリページ内の物理アドレスを生成する。もしアクセスが許可されていないならば、ステップ１５１０で違反信号（例えば、ページ違反信号）が生成される。
【００６３】
ステップ１５０８に続くステップ１５１２のあいだ、メモリに配置された少なくとも一つのセキュリティ属性データ構造（例えば、図９のＳＡＴディレクトリ９０４およびＳＡＴ）に選択されたメモリページの物理アドレスを用いてアクセスし、第１メモリページの追加セキュリティ属性および選択されたメモリページの追加セキュリティ属性を取得する。上述したように、第１メモリページの追加セキュリティ属性は、例えばセキュアページ（ＳＰ）ビットを含む。このＳＰビットは、第１メモリページがセキュアページか否かを示す。同様に、選択されたメモリページの追加セキュリティ属性はセキュアページ（ＳＰ）ビットを含みうる。このＳＰビットは、選択されたメモリページがセキュアページか否かを示す。
【００６４】
ステップ１５１４では、命令のセキュリティ属性、第１メモリページの追加セキュリティ属性、選択されたメモリページのセキュリティ属性および選択されたメモリページの追加セキュリティ属性に応じて、違反信号が生成される。方法１５００のステップ１５１２および１５１４は、ＣＰＵ  ＳＣＵ４１６（図４−８）内に実現できることに注意してほしい。
【００６５】
次の表２は、図４のコンピュータシステム４００がＳＥＭで動作しているときのデバイスハードウェアユニット４１４Ａ−４１４Ｄが開始したメモリページアクセス（つまり、ハードウェア起源のメモリアクセス）のための規則例を示す。このようなハードウェア起源のメモリアクセスは、デバイスハードウェアユニット４１４Ａ−４１４Ｄ内のバスマスタ回路、またはデバイスハードウェアユニット４１４Ａ−４１４Ｄ要求を受けたＤＭＡ装置によって開始される。セキュリティチェックロジック１４００は、図４のコンピュータシステム４００がＳＥＭで動作しているときに、メモリ４０６に記憶されたデータに対して、オペレーティングシステム５０２（図５）によって提供されるデータセキュリティを超える追加セキュリティを提供するために、表２の規則を実施する。次の表２では、「目標」のメモリページは、メモリアクセスのメモリアクセス信号によって伝達される物理アドレスが存在するメモリページである。
【表２】
2005512228.tif 000004
【００６６】
上の表２では、目標のメモリページのＳＰビットは、メモリアクセスの物理アドレスおよび対応するメモリページのＳＡＴエントリを取得する図９の上述の機構９００を用いて、ホストブリッジＳＣＵ４１８によって取得される。
【００６７】
図２に示すように、目標メモリページがセキュアページであることを示すＳＰ＝１のとき、メモリアクセスは許可されない。この場合、セキュリティチェックロジック１４００（図１４）はメモリコントローラにメモリアクセス信号を供給しない。メモリアクセス信号の一部（例えば、制御信号）はメモリアクセスタイプを示す。メモリアクセスタイプは読み込みアクセスまたは書き込みアクセスである。ＳＰ＝１で、メモリアクセス信号がメモリアクセスタイプは読み込みアクセスであることを示すとき、メモリアクセスは許可されていない読み込みアクセスであり、セキュリティチェックロジック１４００はその許可されていない読み込みアクセスに応答して、実際のメモリ内容の代わりにすべて「Ｆ」を供給する（つまり、ニセの読み込みデータ）。セキュリティチェックロジック１４００は、上述したように、許可されない読み込みアクセスに応答して、その許可されない読み込みアクセスのログをとることもできる。
【００６８】
ＳＰ＝１で、メモリアクセス信号がメモリアクセスタイプは書き込みアクセスであることを示すとき、そのメモリアクセスは許可されない書き込みアクセスである。この場合、セキュリティチェックロジック１４００はその許可されていない書き込みアクセスに応答して、メモリアクセス信号によって伝達された書き込みデータを廃棄する。セキュリティチェックロジック１４００は、上述したように、許可されない書き込みアクセスに応答して、その許可されない書き込みアクセスのログをとることもできる。
【００６９】
図１６は、複数のメモリページに配置されたデータを記憶するのに用いられるメモリにアクセスセキュリティを提供する方法１６００の一実施形態の流れ図である。方法１６００は、図４のコンピュータシステム４００がＳＥＭで動作しているときの、ハードウェア起源のメモリアクセスのための表２の規則例を反映している。方法１６００はホストブリッジ４０４（図４，および図１３−１４）内で実現される。方法１６００のステップ１６０２の際、メモリアクセスのメモリアクセス信号が受信される。メモリアクセス信号は目標のメモリページ内の物理アドレスを伝達する。上述のように、メモリアクセス信号はデバイスハードウェアユニットによって生成されうる。ステップ１６０４の間、目標のメモリページのセキュリティ属性を取得するために、物理アドレスを用いて、メモリに配置された少なくとも一つのセキュリティ属性データ構造にアクセスする。この少なくとも一つのセキュリティ属性データ構造は、例えば、ＳＡＴディレクトリ（例えば、図９のＳＡＴディレクトリ９０４）および少なくとも一つのＳＡＴ（例えば、図９のＳＡＴ９０６）を含み、目標のメモリページの追加セキュリティ属性は、目標のメモリページがセキュアページか否かを示す、上述のセキュアページ（ＳＰ）ビットを含む。ステップ１６０６において、メモリは、目標のメモリページのセキュリティ属性に応じて、メモリアクセス信号を用いてアクセスされる。方法１６００のステップ１６００および１６０２はホストブリッジＳＣＵ４１８（図４、および図１３−１４）内で実現可能であることに注意して欲しい。
【００７０】
上述の特定の実施形態は例示目的のためだけのものであり、本教示の利益を得た当業者に明白なように、本発明を変更し、異なってはいるが均等なやり方で実施することが可能である。さらに、添付の特許請求の範囲に記載されている以外には、ここに開示された構成または設計の詳細に本発明を限定することを意図するものではない。従って、上述の特定の実施形態は変更または修正可能であり、そのようなすべてのバリエーションは、本発明の範囲および精神の範囲内のものであると考えられることは明らかである。従って、ここで求められる保護は添付の特許請求の範囲に記載されたとおりである。
【図面の簡単な説明】
【００７１】
【図１】ｘ８６プロセッサアーキテクチャの周知のリニア対物理アドレス変換機構を示す図。
【図２】ｘ８６プロセッサアーキテクチャのページディレクトリエントリフォーマットを示す図。
【図３】ｘ８６プロセッサアーキテクチャのページテーブルエントリフォーマットを示す図。
【図４】CPUおよびシステムつまり「ホスト」ブリッジを含むコンピュータシステムの一実施形態を示す図。CPUはCPUセキュリティチェックユニット（SCU）を含み、ホストブリッジはホストブリッジSCUを含む。
【図５】図４のコンピュータシステムの様々なハードウェアおよびソフトウェア部品間の関係を示す図。
【図６】図４のコンピュータシステムのCPUの一実施形態を示す図。CPUはメモリ管理ユニット（ＭＭＵ）を含む。
【図７】図６のＭＭＵの一実施形態を示す図。ＭＭＵは、ページングユニットを含み、ページングユニットはＣＰＵ  ＳＣＵを含む。
【図８】図７のＣＰＵ  ＳＣＵの一実施形態を示す図。
【図９】選択されたメモリページの追加セキュリティ情報を取得するために、その選択されたメモリページのセキュリティ属性テーブル（ＳＡＴ）エントリにアクセスする仕組みの一実施形態を示す図。
【図１０】ＳＡＴデフォルトレジスタの一実施形態を示す図。
【図１１】ＳＡＴディレクトリエントリフォーマットの一実施形態を示す図。
【図１２】ＳＡＴエントリフォーマットの一実施形態を示す図。
【図１３】図４のホストブリッジの一実施形態を示す図。ホストブリッジはホストブリッジＳＣＵを含む。
【図１４】図１３のホストブリッジＳＣＵの一実施形態を示す図。
【図１５】複数のメモリページに配置されたデータを記憶するのに用いられるメモリにアクセスセキュリティを提供する第１方法の一実施形態の流れ図。
【図１６】複数のメモリページに配置されたデータを記憶するのに用いられるメモリにアクセスセキュリティを提供する第２方法の一実施形態の流れ図。
【図１】
2005512228.tif 000005
【図２】
2005512228.tif 000006
【図３】
2005512228.tif 000007
【図４】
2005512228.tif 000008
【図５】
2005512228.tif 000009
【図６】
2005512228.tif 000010
【図７】
2005512228.tif 000011
【図８】
2005512228.tif 000012
【図９】
2005512228.tif 000013
【図１０】
2005512228.tif 000014
【図１１】
2005512228.tif 000015
【図１２】
2005512228.tif 000016
【図１３】
2005512228.tif 000017
【図１４】
2005512228.tif 000018
【図１５】
2005512228.tif 000019
【図１６】
2005512228.tif 000020
【手続補正書】
【提出日】平成16年2月12日(2004.2.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のメモリページに配置されたデータを記憶するメモリ（４０６）に結合可能に構成され、メモリアクセス信号を受信するように結合され、メモリ（４０６）にアクセスすることで前記メモリアクセス信号に応答するように構成されているメモリコントローラ（１３０４）と、
前記メモリアクセス信号を受信するように結合され、前記メモリアクセス信号は目標メモリページ内の物理アドレスを伝達し、前記目標のメモリページのセキュリティ属性を取得するために前記物理アドレスを用いて前記メモリ（４０６）内に配置された少なくとも一つのセキュリティ属性データ構造にアクセスするように構成され、前記目標のメモリページのセキュリティ属性に応じて、前記メモリコントローラ（１３０４）に前記メモリアクセス信号を供給するように構成されているセキュリティチェックユニット（４１８）とを備える、ホストブリッジ（４０４）。
【請求項２】
前記少なくとも一つのセキュリティ属性データ構造は、セキュリティ属性テーブルディレクトリ（９０４）および少なくとも一つのセキュリティ属性テーブル（９０６）を含む、請求項１のホストブリッジ。
【請求項３】
前記セキュリティ属性テーブルディレクトリ（９０４）は複数のエントリ（９１０）を含み、前記セキュリティ属性テーブルディレクトリ（９０４）の各エントリ（９１０）は存在ビットおよびセキュリティ属性テーブル（９０６）基本アドレスフィールドを含み、前記存在ビットは前記セキュリティ属性テーブルディレクトリエントリ（９１０）に対応するセキュリティ属性テーブル（９０６）がメモリ（４０６）に存在するか否かを示し、前記セキュリティ属性テーブル基本アドレスフィールドは前記セキュリティ属性テーブルディレクトリエントリ（９１０）に対応するセキュリティ属性テーブル（９０６）の基本アドレスのために予約されている、請求項２のホストブリッジ。
【請求項４】
前記目標メモリページのセキュリティ属性はセキュアページ（SP）ビットを含み、前記SPビットは前記目標メモリページがセキュアページか否かを示す、請求項１、２または３のホストブリッジ。
【請求項５】
前記SPビットが前記目標メモリページはセキュアページであることを示すとき、前記メモリアクセスは許可されず、前記セキュリティチェックユニット（４１８）は前記メモリコントローラ（１３０４）に対して前記メモリアクセス信号を供給しない、請求項４のホストブリッジ。
【請求項６】
前記SPビットが前記目標メモリページはセキュアページであることを示し、前記メモリアクセス信号がメモリアクセスタイプは読み込みアクセスおよび許可されていない読み込みアクセスのうちのいずれかであることを示すとき、前記セキュリティチェックユニット（４１８）はニセの読み出しデータを供給することによって前記許可されていない読み込みアクセスに応答するように構成されている、請求項５のホストブリッジ。
【請求項７】
前記SPビットが前記目標メモリページはセキュアページであることを示し、前記メモリアクセス信号がメモリアクセスタイプは書き込みアクセスおよび許可されていない書き込みアクセスのうちのいずれかであることを示すとき、前記セキュリティチェックユニット（４１８）は、前記メモリアクセス信号によって伝達された書き込みデータを廃棄することで、前記許可されていない書き込みアクセスに応答するように構成されている、請求項５または６のホストブリッジ。
【請求項８】
メモリ（４０６）を管理するコンピュータシステム（４００）であって、当該コンピュータシステム（４００）は、
複数のメモリページ内に配置されたデータを記憶するメモリ（４０６）と、
前記メモリ（４０６）に動作可能に結合され、メモリアクセス信号を生成するように構成可能なデバイス（４１４Ａ−Ｄ）と、
請求項１乃至７いずれか１項記載のホストブリッジ（４０４）とを備える、
コンピュータシステム。
【請求項９】
複数のメモリページ内に配置されたデータを記憶するのに使用されるメモリ（４０６）のためのアクセスセキュリティを提供する方法であって、
目標メモリページ内の物理アドレスを伝達するメモリアクセス信号を受信するステップと、
前記目標メモリページのセキュリティ属性を取得するために、前記物理アドレスを用いて、前記メモリ（４０６）内に配置された少なくとも一つのセキュリティ属性データ構造にアクセスするステップと、
前記目標メモリページの前記セキュリティ属性に応じて、前記メモリアクセス信号を用いて前記メモリ（４０６）にアクセスするステップとを含む方法。
【請求項１０】
前記物理アドレスを用いて少なくとも一つのセキュリティ属性データ構造にアクセスするステップは、セキュリティ属性テーブルディレクトリ（９０４）および少なくとも一つのセキュリティ属性テーブル（９０６）を含む、少なくとも一つのセキュリティ属性データ構造に前記物理アドレスを用いてアクセスするステップを含む、請求項９の方法。
【国際調査報告】
2005512228.tif 000021
2005512228.tif 000022
2005512228.tif 000023