(57)【要約】メモリ（４０６）内に記憶され、複数のメモリ領域に配置されたデータに対するセキュリティを提供するメモリ（４０６）および方法である。本方法は選択されたメモリ領域内のアドレスを受信するステップと、そのアドレスを用いて暗号化表示にアクセスするステップとを含む。暗号化表示は選択されたメモリページに記憶されているデータが暗号化されているかどうかを示す。本方法はさらに選択されたメモリ領域からデータブロックと暗号化表示とを受信するステップと、当該暗号化表示に応じて当該データブロックを復号するステップとを含む。
2005521942.tif 000002
【特許請求の範囲】
【請求項１】
データブロックおよび当該データブロックについての対応する暗号化表示を受信するように結合された少なくとも１つの記憶位置（６０４）であって、前記データブロックは選択されたメモリ領域に対応し、前記暗号化表示は前記選択されたメモリ領域に対応するデータが暗号化されているかどうかを示す記憶位置（６０４）と、
データを暗号化し、復号するための暗号化／復号ユニット（６１２）であって、前記データブロックが前記記憶位置に記憶される前に、前記暗号化表示に応じて前記データブロックを復号するように構成されている暗号化／復号ユニット（６１２）とを備える、メモリ（４０６）。
【請求項２】
前記データブロックは隣接する位置に記憶される複数のデータユニットを含み、前記選択されたメモリ領域はメモリページ、メモリセグメントまたはベースバンドペアのいずれか一つに対応する、請求項１記載のメモリ（４０６）。
【請求項３】
前記暗号化表示は、少なくとも１つのセキュリティ属性データ構造（９０６）にアクセスすることで取得される少なくとも１つの暗号メモリビットである、請求項１記載のメモリ（４０６）。
【請求項４】
前記少なくとも１つの暗号メモリビットはユーザ／管理者（Ｕ／Ｓ）ビット、ｘ８６プロセッサアーキテクチャで定義される読み出し／書き込み（Ｒ／Ｗ）ビットおよびセキュアページ（ＳＰ）ビットのいずれか一つを含み、前記ＳＰビットは前記選択されたメモリ領域がセキュア領域であるかどうかを示す、請求項３記載のメモリ（４０６）。
【請求項５】
前記データブロックおよび前記選択されたメモリ領域から対応する暗号化表示を受信するように結合されたキャッシュ（６０４）を備える、請求項１記載のメモリ（４０６）。
【請求項６】
前記キャッシュ（６０４）はデータブロックを記憶するための複数のキャッシュメモリエントリ（１８００）および前記データブロックにアクセスするのに必要なデータを記憶するための複数のキャッシュディレクトリエントリ（１９００）を含み、前記キャッシュディレクトリエントリ（１９００）のそれぞれは前記キャッシュメモリエントリ（１８００）の異なる一つに対応し、前記キャッシュディレクトリエントリ（１９００）のそれぞれは前記対応するキャッシュメモリエントリ（１８００）に記憶されているデータブロックを記憶する前に暗号化する必要があるかどうかを示す暗号データビットを含む、請求項５記載のメモリ（４０６）。
【請求項７】
与えられたキャッシュメモリエントリ（１８００）に記憶されたデータブロックを前記メモリ（４０６）に記憶すべきときに、前記キャッシュ（６０４）は、前記暗号化／復号ユニット（６１２）を用いて、前記データブロックを前記メモリ（４０６）に記憶する前に、前記与えられたキャッシュメモリエントリ（１８００）に対応するキャッシュディレクトリエントリ（１９００）内の前記暗号データビットに応じて、前記データブロックを暗号化するように構成されている、請求項６記載のメモリ（４０６）。
【請求項８】
メモリ（４０６）内に記憶されたデータに対するセキュリティを提供する方法であって、前記データは複数のメモリ領域に配置されており、
選択されたメモリ領域内のアドレスを受信するステップと、
前記アドレスを用いて、前記選択されたメモリページに記憶されたデータが暗号化されているかどうかを示す暗号化表示にアクセスするステップと、
前記選択されたメモリ領域からのデータブロックと前記暗号化表示を受信するステップと、
前記暗号化表示に応じて前記データブロックを復号するステップとを含む方法。
【請求項９】
前記選択されたメモリ領域からのデータブロックと前記暗号化表示を受信するステップは、前記選択されたメモリ領域から隣接する位置に記憶された複数のデータユニットおよび前記暗号化表示を受信するステップを含み、前記暗号化表示に応じて前記データブロックを復号するステップは、前記暗号化表示に応じて隣接する位置に記憶された前記複数のデータユニットを復号するステップをさらに含む、請求項８記載の方法。
【請求項１０】
前記選択されたメモリ領域内のアドレスを受信するステップは前記選択されたメモリ領域内の物理アドレスを受信するステップを含み、前記アドレスを用いて前記暗号化表示にアクセスするステップは前記物理アドレスを用いて、暗号化されたメモリビットを含むセキュリティ属性テーブルエントリ（９１２）を取得するために、前記メモリ内に位置する少なくとも１つのセキュリティ属性データ構造（９０６）にアクセスするステップを含む、請求項８記載の方法。
【発明の詳細な説明】
【関連出願の表示】
【０００１】
本願は、２００１年１２月５日出願の同時係属出願番号１０／０１１，１５１「メモリへのアクセスセキュリティを高めたメモリへのデバイスアクセスの処理システム及び方法（Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｈａｎｄｌｉｎｇ  Ｄｅｖｉｃｅ  Ａｃｃｅｓｓｅｓ  ｔｏ  ａ  Ｍｅｍｏｒｙ  Ｐｒｏｖｉｄｉｎｇ  Ｉｎｃｒｅａｓｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｓｅｃｕｒｉｔｙ）」及び同時係属出願番号１０／００５，２７１「メモリへのアクセスセキュリティを高めたメモリ管理システム及び方法（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  Ｐｒｏｖｉｄｉｎｇ  Ｉｎｃｒｅａｓｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｓｅｃｕｒｉｔｙ）」、並びに本願と同日に出願の同時係属出願番号１０／１０８，２５３（代理人ドケット番号２０００．０５６０００／ＴＴ４０８０）「コンピュータシステム内におけるデバイス間アクセスを制御するシステムおよび方法（Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  ｃｏｎｔｒｏｌｉｎｇ  Ｄｅｖｉｃｅ−Ｔｏ−Ｄｅｖｉｃｅ  Ａｃｃｅｓｓｅｓ  ｗｉｔｈｉｎ  ａ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ）」に関連する。
【技術分野】
【０００２】
本発明は、一般にはコンピュータシステムに関し、特に詳細にはコンピュータシステム内における秘密データの転送の際に信号の外部監視による暴露から秘密データを保護するためのシステムおよび方法に関する。
【背景技術】
【０００３】
一般的なコンピュータシステムには、比較的低コストで比較的高レベルの性能を得るために、メモリ階層が含まれている。数種の異なるソフトウェアプログラムの命令は、通常比較的大容量であるが速度の遅い不揮発性記憶ユニット（例えばディスクドライブユニット）上に記憶されている。ユーザーがそのプログラムのうちの１つを選択して実行すると、選択されたプログラムの命令はメインメモリユニットにコピーされ、中央演算処理装置（ＣＰＵ）がメインメモリユニットから選択されたプログラムの命令を得る。周知の仮想メモリ管理技術によって、ＣＰＵは、任意の時間にメインメモリユニット内のデータ構造の一部分のみを記憶することにより、メインメモリユニットよりもサイズが大きいデータ構造へのアクセスが可能になる。データ構造の残りの部分は比較的大容量であるが速度の遅い不揮発性記憶ユニット内に記憶され、必要時のみメインメモリユニットへコピーされる。
【０００４】
仮想メモリは通常、ＣＰＵのアドレス空間をページフレームまたは「ページ」と呼ばれる複数のブロックに分割することにより実現される。ページの一部分に相当するデータのみが、任意の時間にメインメモリユニットに記憶される。ＣＰＵがあるページ内においてアドレスを生成し、そのページのコピーがメインメモリユニット内に位置していない場合、データの必要なページは比較的大容量であるが速度の遅い不揮発性記憶ユニットからメインメモリユニットへコピーされる。この処理において、データの別のページをメインメモリユニットから不揮発性記憶ユニットにコピーして必要なページのための空間を空けておいてもよい。
【０００５】
一般に普及している８０ｘ８６（ｘ８６）プロセッサアーキテクチャには、保護されている仮想アドレスモード（つまり、プロテクトモード）をサポートする専用のハードウェア要素が含まれている。ここで、図１〜３を用いて、ｘ８６プロセッサが仮想メモリ及びメモリ保護の両機能をいかに実行するかについて説明する。図１は、ｘ８６プロセッサアーキテクチャの周知のリニア‐物理アドレス変換機構１００を示す図である。アドレス変換機構１００はｘ８６プロセッサに組み込まれており、ｘ８６プロセッサ内で生成されたリニアアドレス１０２、ページテーブルディレクトリ（つまり、ページディレクトリ）１０４、ページテーブル１０６を含む複数のページテーブル、ページフレーム１０８を含む複数のページフレーム、及び制御レジスタ３（ＣＲ３）１１０を含む。ページディレクトリ１０４及び複数のページテーブルは、オペレーティングシステムソフトウェア（つまり、オペレーティングシステム）により生成され維持されているページングされたメモリデータ構造である。ページディレクトリ１０４は常にメモリ（例えばメインメモリユニット）内に位置している。説明を簡単にするために、ページテーブル１０６とページフレーム１０８もまたメモリ内にあると想定する。
【０００６】
図１に示すように、リニアアドレス１０２は、リニア‐物理アドレス変換を実現するために３つの部分に分割されている。ＣＲ３  １１０の最高位ビットはページディレクトリベースレジスタを格納するのに用いられる。ページディレクトリベースレジスタとは、ページディレクトリ１０４が含まれているメモリページのベースアドレスである。ページディレクトリ１０４は、ページディレクトリエントリ１１２を含む複数のページディレクトリエントリを含む。リニアアドレス１０２の上位にある「ディレクトリインデックス」部分はリニアアドレス１０２の最高位ビット、つまり最上位ビットを含み、ページディレクトリ１０４へのインデックスとして用いられる。ページディレクトリエントリ１１２は、ＣＲ３  １１０のページディレクトリベースレジスタ及びリニアアドレス１０２の上位にある「ディレクトリインデックス」部分を用いて、ページディレクトリ１０４内から選択される。
【０００７】
図２はｘ８６プロセッサアーキテクチャのページディレクトリエントリフォーマット２００の図である。図２に示すように、あるページディレクトリエントリの最高位（つまり、最上位）ビットにはページテーブルベースアドレスが含まれている。ここで、ページテーブルベースアドレスとは、対応するページテーブルが含まれているメモリページのベースアドレスである。ページディレクトリエントリ１１２のページテーブルベースアドレスは、対応するページテーブル１０６を選択するのに用いられる。
【０００８】
再度図１において、ページテーブル１０６はページテーブルエントリ１１４を含む複数のページテーブルエントリを含む。リニアアドレス１０２の中位にある「テーブルインデックス」部分をページテーブル１０６へのインデックスとして用いることにより、ページテーブルエントリ１１４を選択する。図３はｘ８６プロセッサアーキテクチャのページテーブルエントリフォーマット３００の図である。図３に示すように、あるページテーブルエントリの最高位（つまり、最上位）ビットには、ページフレームベースアドレスが含まれている。ここで、ページフレームベースアドレスとは対応するページフレームのベースアドレスである。
【０００９】
再度図１において、ページテーブルエントリ１１４のページフレームベースアドレスは、対応するページフレーム１０８を選択するのに用いられる。ページフレーム１０８は複数のメモリ位置を含む。リニアアドレス１０２の下位にある部分、つまり「オフセット」部分はページフレーム１０８へのインデックスとして用いられる。ページテーブルエントリ１１４のページフレームベースアドレスとリニアアドレス１０２のオフセット部分は、結合するとリニアアドレス１０２に相当する物理アドレスになり、ページフレーム１０８内のメモリ位置１１６を表している。メモリ位置１１６はリニア‐物理アドレス変換の結果生成される物理アドレスを有する。
【００１０】
メモリ保護機能に関しては、図２のページディレクトリエントリフォーマット２００及び図３のページテーブルエントリフォーマット３００は、ユーザー／管理者（Ｕ／Ｓ）ビット及び読み出し／書き込み（Ｒ／Ｗ）ビットを含む。Ｕ／Ｓビット及びＲ／Ｗビットの各内容をオペレーティングシステムが使用することにより、認証されていないアクセスから対応するページフレーム（つまり、メモリページ）を保護する。Ｕ／Ｓ＝０はオペレーティングシステムメモリページを示すのに用いられ、オペレーティングシステムの「管理者」レベルに相当する。このオペレーティングシステムの管理者レベルは、ｘ８６プロセッサが実行するソフトウェアプログラム及びルーチンの現行の特権レベル０（ＣＰＬ０）に相当する（管理者レベルはまた、ｘ８６プロセッサのＣＰＬ１及び／またはＣＰＬ２レベルに相当していてもよい）。Ｕ／Ｓ＝１はユーザーメモリページを示すのに用いられ、オペレーティングシステムの「ユーザー」レベルに相当する。このオペレーティングシステムのユーザーレベルは、ｘ８６プロセッサのＣＰＬ３に相当する（ユーザーレベルもまた、ｘ８６プロセッサのＣＰＬ１及び／またはＣＰＬ２レベルに相当していてもよい）。
【００１１】
Ｒ／Ｗビットは、対応するメモリページに許可されているアクセスの種類を示すのに用いられる。Ｒ／Ｗ＝０は、対応するメモリページには読み出しアクセスしか許可されていないことを示している（つまり、対応するメモリページは「読み出し専用」である）。Ｒ／Ｗ＝１は、対応するメモリページには読み出しアクセスと書き込みアクセスの両方が許可されていることを示している（つまり、対応するメモリページは「読み出し書き込み可能」である）。
【００１２】
図１に示すリニア‐物理アドレス変換動作中には、ページフレーム１０８に相当するページディレクトリエントリ１１２とページテーブルエントリ１１４の各Ｕ／Ｓビットの内容に対して論理積演算が行われ、それによりページフレーム１０８へのアクセスが認証されているかどうかを判断する。同様に、ページディレクトリエントリ１１２とページテーブルエントリ１１４の各Ｒ／Ｗビットの内容に対して論理積演算が行われ、それによりページフレーム１０８へのアクセスが認証されているかどうかを判断する。Ｕ／Ｓビット及びＲ／Ｗビットの各論理結合がページフレーム１０８へのアクセスが認証されていると示している場合、物理アドレスを用いてメモリ位置１１６へのアクセスが行われる。一方、Ｕ／Ｓビット及びＲ／Ｗビットの各論理結合がページフレーム１０８へのアクセスが認証されていないと示している場合、メモリ位置１１６へのアクセスは行われず、保護違反を示す信号が発生する。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
残念ながら、上述のｘ８６プロセッサアーキテクチャのメモリ保護機構は、メモリ内に格納したデータを保護するには十分なものではない。例えば、管理者レベル（例えば、ＣＰＬ値が０）で実行する任意のソフトウェアプログラムまたはルーチンは、メモリのあらゆる部分へのアクセスが可能であると共に、メモリの「読み出し専用」（Ｒ／Ｗ＝０）と標示されていない部分のいずれに対しても変更（つまり、書き込み）が可能である。さらに、管理者レベルで実行することにより、ソフトウェアプログラムまたはルーチンはメモリのあらゆる部分の属性（つまり、Ｕ／Ｓビット及びＲ／Ｗビット）を変えることができる。従って、ソフトウェアプログラムまたはルーチンによって、メモリの「読み出し専用」と標示されている部分のいずれに対しても「読み出し書き込み可能」（Ｒ／Ｗ＝１）への変更が可能になり、さらにメモリの当該部分の変更を続けて行うことが可能になる。
【００１４】
ｘ８６プロセッサアーキテクチャの保護機構はまた、メモリに動作可能に接続されたハードウェアデバイスによるメモリへの誤ったアクセス、つまり不正アクセスの防止においても不十分である。実際、ハードウェアデバイスが起動した（メモリにおける始めに上述のように変更される部分の属性を持たない）書き込みアクセスでは、メモリの「読み出し専用」と標示された部分は変更できない。また、ハードウェアデバイスとメモリ間のデータ転送を扱うソフトウェアプログラムまたはルーチン（例えば、デバイスドライバ）は、通常ユーザーレベル（例えば、ＣＰＬ３）で実行し、メモリにおける管理者レベル（Ｕ／Ｓ＝０）と標示された部分へのアクセスは許可されていないことも事実である。しかし、ｘ８６プロセッサアーキテクチャの保護機構は、命令を実行した結果行われたメモリへのデバイスアクセス（つまり、プログラミングされた入力／出力）のみを対象としている。デバイスドライバは、ハードウェアデバイスからメモリにおけるハードウェアデバイスがアクセス可能なあらゆる部分へデータを転送するバスマスタリング機能もしくはＤＭＡ機能を有するハードウェアデバイスをプログラミングすることができる。例えば、フロッピーディスクコントローラに対して、フロッピーディスクからメモリにおけるオペレーティングシステムを格納するのに用いられる部分へ直接データを転送するようにプログラミングすることは比較的易しい。
【００１５】
さらに、ＣＰＵは他のコンピュータシステム構成要素（例えば、メモリ）と信号線において伝達される信号を介して通信する。そのような信号は監視の対象となる（例えば、外部機器によって）。そのような信号を分析することにより、転送されている秘密データのみならず、そのような秘密データを処理するのに使用されているコンピュータシステム内に実装された方法（例えば、ソフトウェアプログラム）をもわかってしまう。
【００１６】
したがって、メモリアクセスに対するより高いセキュリティを提供するシステムおよび方法が望まれている。所望のシステムおよび方法は、秘密データおよび秘密データを処理するのに使用する方法を隠すために、ＣＰＵに転送されるデータおよびＣＰＵから転送されるデータ（命令、インストラクションを含む）のすべてを暗号化する能力をさらに有する。
【発明の概要】
【００１７】
本発明の一実施形態はメモリである。このメモリは少なくとも１つの記憶位置と、データを暗号化し、そして復号する暗号化／復号ユニットを備える。この記憶位置は、データブロックおよび当該データブロックに対応する暗号化表示（インジケータ）を受信するように結合されている。このデータブロックは選択されたメモリ領域に対応する。この暗号化表示は選択されたメモリ領域に対応するデータが暗号化されているかどうかを示す。暗号化／復号ユニットは、データブロックを記憶位置に記憶する前に、暗号化表示に応じてデータブロックを復号するように構成される。
【００１８】
本発明の他の実施形態はシステムである。このシステムは、メモリに動作可能に結合され、そのメモリを管理するように構成されたメモリ管理ユニット（ＭＭＵ）と、選択されたメモリ領域内の物理アドレスを受信するように結合されたセキュリティチェックユニットと、当該選択されたメモリ領域から取得されたデータブロックを受信し、暗号化表示を受信するように結合されたキャッシュユニットとを備える。ＭＭＵは、メモリが複数のメモリ領域内に配置されたデータを記憶するように、メモリを管理するように構成可能である。セキュリティチェックユニットは、暗号化表示を取得するためにメモリ内に位置する少なくとも１つのセキュリティ属性データ構造にアクセスするために物理アドレスを使用するように構成される。暗号化表示は選択されたメモリ領域に記憶されたデータが暗号化されているかどうかを示す。セキュリティチェックユニットは暗号化／復号ユニットに暗号化表示を供給するように構成される。キャッシュユニットは暗号化／復号ユニットを備える。暗号化／復号ユニットは、データブロックを記憶する前に、暗号化表示に応じてデータブロックを復号するように構成される。
【００１９】
本発明のさらに他の実施形態は、メモリ内に記憶され、複数のメモリ領域内に配置されたデータに対するセキュリティを提供する方法である。この方法は、選択されたメモリ領域内のアドレスを受信するステップと、そのアドレスを用いて暗号化表示にアクセスするステップとを含む。暗号化表示は選択されたメモリページに記憶されたデータが暗号化されているかどうかを示す。本方法は、選択されたメモリ領域からデータブロックおよび暗号化表示を受信するステップと、暗号化表示に応じてそのデータブロックを復号するステップとを含む。
【００２０】
本発明は、添付の図面に関連付けて行われる以下の説明を参照することにより理解されるであろう。以下の説明において、同等な参照符号は類似の要素を示す。
本発明は様々な変更や代替形態が可能であるが、本発明の個別の実施形態は、各図面において例示として示されたものであり、ここでは詳細に説明されている。しかしながら、ここで行われている実施形態の説明は、本発明を開示された特定の形態に限定することを意図するものではなく、逆に、本発明は、添付の特許請求の範囲により定義されるような本発明の精神や範囲の範疇である全ての変更、均等物、及び代替物を含むものであることは理解すべきである。
【発明を実施するための最良の形態】
【００２１】
以下に、本発明の例証となる実施形態を説明する。分かりやすくするために、本明細書では、実際の実施例のすべての特徴を説明してはいない。勿論、このような実際の実施形態のいずれにおける開発でも、システムや業務に関連する制約の遵守といった、実施例ごとに変わる開発者独自の目標を達成するために、各実施例に特有の決定を数多く行わなければならないことは理解されよう。さらに、このような開発の労力は、複雑で時間を消費するものであるが、それでも、本発明の開示の恩恵を受ける一般的な当業者が請け負うルーチンであろうことは理解されよう。
【００２２】
図４はコンピュータシステム４００の一実施形態の図であり、コンピュータシステム４００には、ＣＰＵ４０２、システムすなわち「ホスト」ブリッジ４０４、メモリ４０６、第１のデバイスバス４０８（例えば、周辺機器接続すなわちＰＣＩバス）、デバイスバスブリッジ４１０、第２のデバイスバス４１２（例えば、業界標準アーキテクチャすなわちＩＳＡバス）、及び４個のデバイスハードウェアユニット４１４Ａ〜４１４Ｄが含まれている。ホストブリッジ４０４はＣＰＵ４０２、メモリ４０６、及びデバイスバス４０８に接続されている。ホストブリッジ４０４はＣＰＵ４０２とデバイスバス４０８との間の信号を変換し、メモリ４０６をＣＰＵ４０２とデバイスバス４０８に動作可能に接続する。デバイスバスブリッジ４１０はデバイスバス４０８とデバイスバス４１２との間に接続されており、デバイスバス４０８とデバイスバス４１２との間の信号を変換する。図４の実施形態では、デバイスハードウェアユニット４１４Ａ，４１４Ｂはデバイスバス４０８に、デバイスハードウェアユニット４１４Ｃ，４１４Ｄはデバイスバス４１２にそれぞれ接続されている。デバイスハードウェアユニット４１４Ａ〜４１４Ｄのうちの１つ以上が、例えば、記憶デバイス（例えば、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤ−ＲＯＭドライブ）、通信デバイス（例えば、モデムやネットワークアダプタ）、もしくは、入出力デバイス（例えば、ビデオデバイス、オーディオデバイス、プリンタ）であってもよい。
【００２３】
図４の実施形態において、ＣＰＵ４０２はＣＰＵセキュリティチェックユニット（ＳＣＵ）４１６を含み、ホストブリッジ４０４はホストブリッジＳＣＵ４１８を含む。以下に詳しく述べるように、ＣＰＵ  ＳＣＵ４１６は、ＣＰＵ４０２が生成したアクセス（つまり、「ソフトウェアが起動したアクセス」）であるとともに認証されていないものからメモリ４０６を保護し、ホストブリッジＳＣＵ４１８は、デバイスハードウェアユニット４１４Ａ〜４１４Ｄが起動したアクセス（つまり、「ハードウェアが起動したアクセス」）であるとともに認証されていないものからメモリ４０６を保護する。なお、他の実施形態において、ホストブリッジ４０４は図４に示すようにＣＰＵ４０２の一部であってもよい。
【００２４】
図５は、図４のコンピュータシステム４００の様々なハードウェア要素及びソフトウェア要素の間の関係を示す図である。図５の実施形態において、複数のアプリケーションプログラム５００、オペレーティングシステム５０２、セキュリティカーネル５０４、及びデバイスドライバ５０６Ａ〜５０６Ｄがメモリ４０６に格納されている。アプリケーションプログラム５００、オペレーティングシステム５０２、セキュリティカーネル５０４、及びデバイスドライバ５０６Ａ〜５０６Ｄは、ＣＰＵ４０２により実行される命令を含む。オペレーティングシステム５０２は、ユーザーインターフェイスやソフトウェア「プラットフォーム」を提供し、これらの上で、アプリケーションプログラム５００が動作する。オペレーティングシステム５０２はまた、例えば、ファイルシステム管理、プロセス管理、入出力（Ｉ／Ｏ）制御等の基本的なサポート機能を提供してもよい。
【００２５】
オペレーティングシステム５０２はまた、基本的なセキュリティ機能を提供してもよい。例えば、ＣＰＵ４０２（図４）は、ｘ８６の命令セットの命令を実行するｘ８６プロセッサであってもよい。この場合に、ＣＰＵ４０２は、専用のハードウェア要素を備えることにより、上述のようなプロテクトモードにおいて仮想メモリとメモリ保護の特徴を両方提供してもよい。オペレーティングシステム５０２は、例えば、プロテクトモードでＣＰＵ４０２を動作させ、ＣＰＵ４０２の専用のハードウェア要素を使用してプロテクトモードで仮想メモリとメモリ保護の両方を行うウィンドウズ（登録商標：マイクロソフト社  ワシントン州レッドモンド）系のオペレーティングシステムの一つであってもよい。
【００２６】
以下に詳細に述べるように、セキュリティカーネル５０４は、メモリ４０６に格納されたデータを認証されていないアクセスから保護するために、オペレーティングシステム５０２が提供したセキュリティ機能を超える追加のセキュリティ機能を提供する。図５の実施形態では、デバイスドライバ５０６Ａ〜５０６Ｄはそれぞれ対応するデバイスハードウェアユニット４１４Ａ〜４１４Ｄに操作可能に関連付けられ、かつ接続されている。デバイスハードウェアユニット４１４Ａ，４１４Ｄは「セキュリティ保護された」デバイスであり、対応するデバイスドライバ５０６Ａ，５０６Ｄは「セキュリティ保護された」デバイスドライバである。セキュリティカーネル５０４はオペレーティングシステム５０２とセキュリティ保護されたデバイスドライバ５０６Ａ，５０６Ｄの間に接続されており、アプリケーションプログラム５００及びオペレーティングシステム５０２によるセキュリティ保護されたデバイスドライバ５０６Ａ，５０６Ｄ及び対応するセキュリティ保護されたデバイス４１４Ａ，４１４Ｄへの全てのアクセスを監視する。セキュリティカーネル５０４は、アプリケーションプログラム５００及びオペレーティングシステム５０２によるセキュリティ保護されたデバイスドライバ５０６Ａ，５０６Ｄ及び対応するセキュリティ保護されたデバイス４１４Ａ，４１４Ｄへの認証されていないアクセスを防止する。
【００２７】
図５に示すように、セキュリティカーネル５０４は、（例えば、一つ以上のデバイスドライバを介して）ＣＰＵ  ＳＣＵ４１６及びホストブリッジＳＣＵ４１８に接続されている。以下に詳細に述べるように、ＣＰＵ  ＳＣＵ４１６とホストブリッジＳＣＵ４１８はメモリ４０６へのアクセスを制御する。ＣＰＵ  ＳＣＵ４１６はソフトウェアが起動したメモリ４０６へのアクセスを全て監視し、ホストブリッジＳＣＵ４１８はハードウェアが起動したメモリ４０６へのアクセスを全て監視する。ＣＰＵ  ＳＣＵ４１６及びホストブリッジＳＣＵ４１８は、セキュリティカーネル５０４によって一旦構成されてしまうと、認証されているメモリ４０６へのアクセスしか許可しない。
【００２８】
図５の実施形態では、デバイスドライバ５０６Ｂ，５０６Ｃは「セキュリティ保護されていない」デバイスドライバであり、対応するデバイスハードウェアユニット４１４Ｂ，４１４Ｃは「セキュリティ保護されていない」デバイスハードウェアユニットである。デバイスドライバ５０６Ｂ，５０６Ｃ及び対応するデバイスハードウェアユニット４１４Ｂ，４１４Ｃは各々、例えば、「旧来からある」デバイスドライバ及びデバイスハードウェアユニットであってもよい。
【００２９】
なお、他の実施形態において、セキュリティカーネル５０４はオペレーティングシステム５０２の一部であってもよい。さらに別の実施形態において、セキュリティカーネル５０４、デバイスドライバ５０６Ａ，５０６Ｄ、及び／またはデバイスドライバ５０６Ｂ，５０６Ｃはオペレーティングシステム５０２の一部であってもよい。
【００３０】
図６は、図４のコンピュータシステム４００のＣＰＵ４０２の一実施形態を示す図である。図６の実施形態において、ＣＰＵ４０２は、実行ユニット６００、メモリ管理ユニット（ＭＭＵ）６０２、キャッシュユニット６０４、バスインターフェイスユニット（ＢＩＵ）６０６、一組の制御レジスタ６０８、及び一組のセキュリティ保護実行モード（ＳＥＭ）レジスタ６１０を含む。ＣＰＵＳＣＵ４１６はＭＭＵ６０２内に位置している。以下に詳細に述べるように、一組のＳＥＭレジスタ６１０は図４のコンピュータシステム４００内のセキュリティ保護実行モード（ＳＥＭ）を実施するために用いられており、ＣＰＵＳＣＵ４１６とホストブリッジＳＣＵ４１８の各動作は一組のＳＥＭレジスタ６１０の内容によって管理されている。ＳＥＭレジスタ６１０へのアクセス（例えば、書き込み及び／または読み出し）はセキュリティカーネル５０４（図５）によって行われる。（ｉ）ＣＰＵ４０２がｘ８６プロテクトモードで動作するｘ８６プロセッサである  （ｉｉ）メモリページングが可能である  （ｉｉｉ）ＳＥＭレジスタ６１０の内容によってＳＥＭの動作が規定される場合には、図４のコンピュータシステム４００は、例えば、ＳＥＭで動作してもよい。
【００３１】
一般に、一組の制御レジスタ６０８の内容によって、ＣＰＵ４０２の動作は管理されている。つまり、一組の制御レジスタ６０８の内容によって、実行ユニット６００、ＭＭＵ６０２、キャッシュユニット６０４、及び／またはＢＩＵ６０６の動作が管理されている。一組の制御レジスタ６０８は、例えば、ｘ８６プロセッサアーキテクチャの制御レジスタを複数含んでいてもよい。
【００３２】
ＣＰＵ４０２の実行ユニット６００は、命令（例えば、ｘ８６の命令）やデータを取り出し、取り出された命令を実行し、命令の実行中に信号（例えば、アドレス、データ、制御信号）を生成する。実行ユニット６００はキャッシュユニット６０４に接続されているが、メモリ４０６（図４）からキャッシュユニット６０４やＢＩＵ６０６を介して命令を受け取ってもよい。
【００３３】
コンピュータシステム４００のメモリ４０６（図４）は、各々が固有の物理アドレスを有する複数のメモリ位置を含む。ＣＰＵ４０２のアドレス空間は、ページングが可能な状態でプロテクトモードで動作すると、ページフレームまたは「ページ」と呼ばれる複数のブロックに分割される。上述のように、ページの一部分に相当するデータのみが、任意の時間においてメモリ４０６内に格納される。図６の実施形態では、命令実行中に実行ユニット６００が生成したアドレス信号は、セグメント化された（つまり、「論理」）アドレスを表している。以下に述べるように、ＭＭＵ６０２は、実行ユニット６００が生成したセグメント化されたアドレスを、メモリ４０６における対応する物理アドレスに変換する。ＭＭＵ６０２は、キャッシュユニット６０４に物理アドレスを供給する。キャッシュユニット６０４は、実行ユニット６００によって取り出されたばかりの命令やデータを格納するのに用いられる比較的小容量の記憶ユニットである。ＢＩＵ６０６はキャッシュユニット６０４とホストブリッジ４０４の間に接続されており、キャッシュユニット６０４には存在していない命令やデータをメモリ４０６からホストブリッジ４０４を介して取り出すのに用いられる。
【００３４】
図６に示すように、キャッシュユニット６０４は、データ暗号化機能およびデータ復号機能の両方を実行する暗号化／復号ユニット６１２を備える。ＣＰＵ４０２がページングイネーブルの保護（プロテクト）モードで動作しているとき、メモリ４０６は複数のページ（つまり、メモリページ）内に配置されたデータを記憶する。以下で詳細に説明するように、選択されたメモリページのデータ（命令を含む）はセキュリティの目的で暗号化することができる。暗号化／復号ユニット６１２のデータ復号機能を用いて、メモリ４０６からＢＩＵ６０６を介してキャッシュユニット６０４が受信した暗号化されたデータ（命令を含む）を復号する。暗号化／復号ユニット６１２のデータ暗号化機能を用いて、データがキャッシュユニット６０４から追い出される（例えば、より最近に参照された命令および／またはデータのための空きを作るために）前に、キャッシュユニット６０４内に記憶され、実行ユニット６００が利用可能な暗号化されていない（つまり、「平文」の）データ（命令を含む）を暗号化する。暗号化／復号ユニット６１２によって実行されるデータ暗号化および復号機能は実行ユニット６００の動作に影響を与えない（つまり、実行ユニット６００に対して透過性を持つ）。他の実施形態では、暗号化／復号ユニット６１２はＢＩＵ６０６内に配置することができることに注意すべきである。
【００３５】
図７は図６のＭＭＵ６０２の一実施形態を示す図である。図７の実施形態において、ＭＭＵ６０２は、セグメント化ユニット７００、ページングユニット７０２、及び、セグメント化ユニット７００とページングユニット７０２の両出力の間で選択して物理アドレスを生成する選択ロジック７０４を含む。図７に示すように、セグメント化ユニット７００は、実行ユニット６００からセグメント化されたアドレスを受け取り、ｘ８６プロセッサアーキテクチャにおける周知のセグメント‐リニアアドレス変換機構を用いて、対応するリニアアドレスを出力に生成する。図７に示すように、ページングユニット７０２は、「ページング」信号によって可能となる場合には、セグメント化ユニット７００が生成したリニアアドレスを受け取り、対応する物理アドレスを出力に生成する。このページング信号は、ｘ８６プロセッサアーキテクチャに属し、かつ一組の制御レジスタ６０８（図６）にも属する制御レジスタ０（ＣＲ０）内に、ページングフラグ（ＰＧ）ビットをミラーリングしてもよい。ページング信号をディアサートすると、メモリページングは不可能となり、選択ロジック７０４はセグメント化ユニット７００から受け取ったリニアアドレスを物理アドレスとして生成する。
【００３６】
ページング信号をアサートすると、メモリページングが可能となり、ページングユニット７０２は、上述のｘ８６プロセッサアーキテクチャ（図１）のリニア‐物理アドレス変換機構１００を用いて、セグメント化ユニット７００から受け取ったリニアアドレスを対応する物理アドレスに変換する。上述のように、リニア‐物理アドレス変換動作中、選択されたページディレクトリエントリと選択されたページテーブルエントリの各Ｕ／Ｓビットの内容に対して論理積演算が行われ、それによってページフレームへのアクセスが認証されているかどうかを判定する。同様に、選択されたページディレクトリエントリと選択されたページテーブルエントリの各Ｒ／Ｗビットの内容に対して論理積演算が行われ、それによってページフレームへのアクセスが認証されているかどうかを判定する。Ｕ／Ｓビット及びＲ／Ｗビットの各論理結合がページフレームへのアクセスが認証されていると示している場合、ページングユニット７０２はリニア‐物理アドレス変換動作に起因する物理アドレスを生成する。選択ロジック７０４は、ページングユニット７０２が生成した物理アドレスを受け取り、ページングユニット７０２から受け取った物理アドレスを物理アドレスとして生成し、その物理アドレスをキャッシュユニット６０４に供給する。
【００３７】
一方、Ｕ／Ｓビット及びＲ／Ｗビットの各論理結合がページフレーム１０８へのアクセスが認証されていないと示している場合、ページングユニット７０２はリニア‐物理アドレス変換動作中に物理アドレスを生成しない。その代わり、ページングユニット７０２は一般保護違反（ＧＰＦ）信号をアサートし、ＭＭＵ６０２はＧＰＦ信号を実行ユニット６００に送信する。ＧＰＦ信号を受けて、実行ユニット６００は例外ハンドラルーチンを実行してもよく、最終的にはＧＰＦ信号をアサートした時に動作しているアプリケーションプログラム５００（図５）のうちの一つの実行を停止してもよい。
【００３８】
図７の実施形態において、ＣＰＵＳＣＵ４１６はＭＭＵ６０２のページングユニット７０２内に位置している。ページングユニット７０２はまた、決定されたばかりのリニア‐物理アドレス変換を比較的少数格納する変換索引バッファ（ＴＬＢ）を含んでいてもよい。
【００３９】
図８は図７のＣＰＵ  ＳＣＵ４１６の一実施形態を示す図である。図８の実施形態において、ＣＰＵ  ＳＣＵ４１６は、一組のＳＥＭレジスタ６１０（図６）と接続するセキュリティチェックロジック８００及びセキュリティ属性テーブル（ＳＡＴ）エントリバッファ８０２を含む。以下に述べるように、ＳＡＴエントリは、メモリページに相当するページディレクトリエントリとページテーブルエントリとのＵ／Ｓビット及びＲ／Ｗビットを越える追加セキュリティ情報を含む。セキュリティチェックロジック８００は、あるＳＡＴエントリ内に格納されたこの追加セキュリティ情報を用いることにより、対応するメモリページに対するソフトウェアが起動した認証されていないアクセスを防止する。ＳＡＴエントリバッファ８０２は、アクセスされたばかりのメモリページのＳＡＴエントリを比較的少数格納するために用いられる。
【００４０】
上述のように、一組のＳＥＭレジスタ６１０を用いて、図４のコンピュータシステム４００内においてセキュリティ保護実行モード（ＳＥＭ）を実施する。一組のＳＥＭレジスタ６１０の内容により、ＣＰＵ  ＳＣＵ４１６の動作が管理される。セキュリティチェックロジック８００は、ＭＭＵ６０２から図８に示す通信バスを介して、ＳＡＴエントリバッファ８０２に格納される情報を受け取る。セキュリティチェックロジック８００はまた、ページングユニット７０２が生成した物理アドレスも受け取る。
【００４１】
ここで、図９〜１１を利用して、図４のコンピュータシステム４００内において、図１のアドレス変換機構１００を用いて選択されたメモリページの追加セキュリティ情報を得る方法について説明する。図９は、選択されたメモリページの追加セキュリティ情報を得るために、その選択されたメモリページのＳＡＴエントリへのアクセスを行う機構９００の一実施形態を示す図である。図９の機構９００は、図８のセキュリティチェックロジック８００内に組み込まれていてもよく、図４のコンピュータシステム４００がＳＥＭにおいて動作中に実施されてもよい。機構９００は、図１のアドレス変換機構１００を用いてページング機構７０２（図７）が生成した物理アドレス９０２、ＳＡＴディレクトリ９０４、ＳＡＴ９０６を含む複数のＳＡＴ、及び一組のＳＥＭレジスタ６１０のＳＡＴベースアドレスレジスタ９０８を含む。ＳＡＴディレクトリ１０４及びＳＡＴ９０６を含む複数のＳＡＴは、セキュリティカーネル５０４（図５）が生成し維持しているＳＥＭデータ構造である。以下に述べるように、ＳＡＴディレクトリ１０４（存在する場合）と任意の必要なＳＡＴは、アクセスされる前のメモリ４０６にコピーされる。
【００４２】
ＳＡＴベースアドレスレジスタ９０８は、ＳＡＴベースアドレスレジスタ９０８内に有効なＳＡＴディレクトリベースアドレスが存在することを意味する存在（Ｐ）ビットを含む。ＳＡＴベースアドレスレジスタ９０８の最高位（つまり、最上位）ビットはＳＡＴディレクトリベースアドレスのために確保されている。ＳＡＴディレクトリベースアドレスとは、ＳＡＴディレクトリ９０４を含むメモリページのベースアドレスである。Ｐ＝１の場合、ＳＡＴディレクトリベースアドレスは有効であり、ＳＡＴテーブルは各メモリページのセキュリティ属性を指定する。Ｐ＝０の場合には、ＳＡＴディレクトリベースアドレスは有効ではないので、ＳＡＴテーブルは存在せず、各メモリページのセキュリティ属性はＳＡＴデフォルトレジスタによって決定される。
【００４３】
図１０は、ＳＡＴデフォルトレジスタ１０００の一実施形態を示す図である。図１０の実施形態において、ＳＡＴデフォルトレジスタ１０００はセキュリティ保護されたページ（ＳＰ）ビットを含む。このＳＰビットは全てのメモリページがセキュリティ保護されたページかどうかを表している。例えば、ＳＰ＝０ならば、全てのメモリページがセキュリティ保護されたページではない可能性があり、また、ＳＰ＝１ならば、全てのメモリページはセキュリティ保護されたページである可能性がある。
【００４４】
再度図９においてＳＡＴベースアドレスレジスタ９０８のＰビットが「１」であると仮定すると、ページングロジック７０２（図７）が生成した物理アドレス９０２は、選択されたメモリページのＳＡＴエントリにアクセスするために、３つの部分に分割される。上述のように、ＳＡＴベースアドレスレジスタ９０８のＳＡＴディレクトリベースアドレスは、ＳＡＴディレクトリ９０４が含まれるメモリページのベースアドレスである。ＳＡＴディレクトリ９０４は、ＳＡＴディレクトリエントリ９１０を含む複数のＳＡＴディレクトリエントリを含む。各ＳＡＴディレクトリエントリはメモリ４０６における対応するＳＡＴを有していてもよい。物理アドレス９０２の「上位」にある部分は、物理アドレス９０２の最高位、つまり最上位ビットを含んでおり、ＳＡＴディレクトリ９０４へのインデックスとして用いられる。ＳＡＴディレクトリエントリ９１０は、ＳＡＴベースアドレスレジスタ９０８のＳＡＴディレクトリベースアドレスと物理アドレス９０２の上位にある部分を用いて、ＳＡＴディレクトリ９０４内から選択される。
【００４５】
図１１は、ＳＡＴディレクトリエントリフォーマット１１００の一実施形態を示す図である。図１１によれば、各ＳＡＴディレクトリエントリは、ＳＡＴディレクトリエントリ内に有効なＳＡＴベースアドレスが存在することを意味する存在（Ｐ）ビットを含む。図１１の実施形態において、各ＳＡＴディレクトリエントリの最高位（つまり、最上位）ビットはＳＡＴベースアドレスのために確保されている。ＳＡＴベースアドレスとは、対応するＳＡＴが含まれるメモリページのベースアドレスである。Ｐ＝１の場合、ＳＡＴベースアドレスは有効であるので、対応するＳＡＴはメモリ４０６に格納される。
【００４６】
Ｐ＝０の場合には、ＳＡＴベースアドレスは有効ではないので、対応するＳＡＴはメモリ４０６には存在せず、記憶デバイス（例えばディスクドライブ）からメモリ４０６にコピーされなければならない。Ｐ＝０の場合、セキュリティチェックロジック８００はページ違反の信号をページングユニット７０２内のロジックに送信してもよく、ＭＭＵ６０２はこのページ違反信号を実行ユニット６００（図６）に転送することもできる。ページ違反信号を受けて、実行ユニット６００は、記憶デバイスから必要なＳＡＴを検索してメモリ４０６に格納するページ違反ハンドラルーチンを実行してもよい。メモリ４０６に必要なＳＡＴを格納した後、対応するＳＡＴディレクトリエントリのＰビットは「１」に設定され、機構９００での処理が続行される。
【００４７】
再度図９において、物理アドレス９０２の「中位にある」部分はＳＡＴ９０６へのインデックスとして用いられる。ＳＡＴエントリ９０６はＳＡＴ９０６内でこのようにして選択され、その際には、ＳＡＴディレクトリエントリ９１０のＳＡＴベースアドレスと物理アドレス９０２の中位にある部分が用いられる。図１２はＳＡＴエントリフォーマット１２００の一実施形態を示す図である。図１２の実施形態において、各ＳＡＴエントリはセキュリティ保護されたページ（ＳＰ）ビットを含む。ＳＰビットは選択されたメモリページがセキュリティ保護されたページかどうかを表している。例えば、ＳＰ＝０ならば、選択されたメモリページがセキュリティ保護されたページではない可能性があり、また、ＳＰ＝１ならば、選択されたメモリページはセキュリティ保護されたページである可能性がある。
【００４８】
ＢＩＵ６０６（図６）は、メモリ４０６から必要なＳＥＭデータ構造エントリを検索して、そのＳＥＭデータ構造エントリをＭＭＵ６０２に供給する。再度図８において、セキュリティチェックロジック８００は、ＳＥＭデータ構造エントリを、ＭＭＵ６０２及びページングユニット７０２から通信バスを介して受け取る。上述のように、ＳＡＴエントリバッファ８０２は、アクセスされたばかりのメモリページのＳＡＴエントリを比較的少数格納するのに用いられる。セキュリティチェックロジック８００は、対応する物理アドレスの「タグ」部分と共に、ＳＡＴエントリバッファ８０２内のある特定のＳＡＴエントリを格納する。
【００４９】
後に続くメモリページアクセス中に、セキュリティチェックロジック８００によって、ページングユニット７０２が生成した物理アドレスの「タグ」部分とＳＡＴエントリバッファ８０２に格納されている各ＳＡＴエントリに相当する物理アドレスのタグ部分とを比較してもよい。物理アドレスのタグ部分がＳＡＴエントリバッファ８０２に格納されているあるＳＡＴエントリに相当する物理アドレスのタグ部分と一致した場合、セキュリティチェックロジック８００はＳＡＴエントリバッファ８０２内のＳＡＴエントリにアクセスしてもよく、それによってメモリ４０６からＳＡＴエントリを得るために図９のプロセスを行う必要がなくなる。セキュリティカーネル５０４（図５）はＣＰＵ４０２内のＳＡＴベースアドレスレジスタ９０８の内容を（例えば、コンテクストスイッチ中に）変更する。ＳＡＴベースアドレスレジスタ９０８の変更を受けて、ＣＰＵＳＣＵ４１６のセキュリティチェックロジック８００はＳＡＴエントリバッファ８０２を一括で消去してもよい。
【００５０】
図４のコンピュータシステム４００がＳＥＭで動作中の場合、セキュリティチェックロジック８００は、現在実行中のタスク（つまり、現在実行中の命令）の現行の特権レベル（ＣＰＬ）を、中に物理アドレスがある選択されたメモリページのページディレクトリエントリ（ＰＤＥ）Ｕ／Ｓビット、ＰＤＥ  Ｒ／Ｗビット、ページテーブルエントリ（ＰＴＥ）Ｕ／Ｓビット、及びＰＴＥ  Ｒ／Ｗビットと共に受け取る。セキュリティチェックロジック８００は、上記の情報を、選択されたメモリページに相当するＳＡＴエントリのＳＰビットと共に使用して、メモリ４０６へのアクセスが認証されているかどうかを判定する。
【００５１】
図６のＣＰＵ４０２はｘ８６プロセッサであってもよく、コードセグメント（ＣＳ）レジスタ、すなわちｘ８６プロセッサアーキテクチャの１６ビットセグメントレジスタの一つを含んでいてもよい。各セグメントレジスタは、セグメントと呼ばれる、メモリの６４Ｋブロックを選択する。ページングが可能な状態でのプロテクトモードにおいて、ＣＳレジスタは、メモリ４０６の実行可能なセグメントを示すセグメントセレクタを用いてロードされる。セグメントセレクタの最高位（つまり、最上位）ビットは、ＣＰＵ４０２（図６）の実行ユニット６００が次に実行する命令を含むメモリのセグメントを示す情報を格納するのに用いられる。命令ポインタ（ＩＰ）レジスタは、オフセットをＣＳレジスタが示したセグメントに格納するのに用いられる。この一対のＣＳ：ＩＰは、次の命令のセグメント化されたアドレスを表す。ＣＳレジスタの最低位（つまり、最下位）にある２つのビットは、実行ユニット６００が現在実行中のタスクの現行の特権レベル（ＣＰＬ）を示す値（つまり、現行のタスクのＣＰＬ）を格納するのに用いられる。
【００５２】
以下の表１に、図４のコンピュータシステム４００がＳＥＭで動作中における、ＣＰＵが起動した（つまり、ソフトウェアが起動した）メモリアクセスに対する規則の一例を示す。オペレーティングシステム５０２（図５）が提供したデータセキュリティを超える追加セキュリティをメモリ４０６に格納されたデータに対して提供するために、ＣＰＵＳＣＵ４１６（図４〜８）とセキュリティカーネル５０４（図５）が協働して、図４のコンピュータシステム４００がＳＥＭで動作中に表１の規則を実施する。
【００５３】
【表１】
2005521942.tif 000003
【００５４】
上記の表１において、現在実行中の命令のＳＰビットは、現在実行中の命令が含まれるメモリページに相当するＳＡＴエントリのＳＰビットである。選択されたメモリページのＵ／Ｓビットは、選択されたメモリページのＰＤＥ  Ｕ／ＳビットとＰＴＥ  Ｕ／Ｓビットとの論理積である。選択されたメモリページのＲ／Ｗビットは、選択されたメモリページのＰＤＥ  Ｒ／ＷビットとＰＴＥ  Ｒ／Ｗビットとの論理積である。符号「Ｘ」は「どちらでもよい」、つまり、論理値が「０」と「１」のいずれでもよいことを意味する。
【００５５】
再度図８において、ＣＰＵＳＣＵ４１６のセキュリティチェックロジック８００は一般保護違反（「ＧＰＦ」）信号及び「ＳＥＭセキュリティ例外」信号を生成し、そしてこれらのＧＰＦ信号及びＳＥＭセキュリティ例外信号をページングユニット７０２内のロジックに供給する。セキュリティチェックロジック８００がＧＰＦ信号をアサートすると、ＭＭＵ６０２はＧＰＦ信号を実行ユニット６００（図６）に転送する。ＧＰＦ信号を受けて、実行ユニット６００はｘ８６プロセッサアーキテクチャの周知の割り込みディスクリプタテーブル（ＩＤＴ）ベクタリング機構を用いてＧＰＦハンドラルーチンへアクセスして実行してもよい。
【００５６】
セキュリティチェックロジック８００がＳＥＭセキュリティ例外信号をアサートすると、ＭＭＵ６０２はそのＳＥＭセキュリティ例外信号を実行ユニット６００に転送する。ｘ８６プロセッサアーキテクチャのＩＤＴベクタリング機構を用いる通常のプロセッサ例外とは違い、別のベクタリング方法を用いてＳＥＭセキュリティ例外に対処してもよい。ＳＥＭセキュリティ例外は、ｘ８６の「ＳＹＳＥＮＴＥＲ」命令及び「ＳＹＳＥＸＩＴ」命令が動作する方法と同様に、一対のレジスタ（例えば、モデル固有レジスタまたはＭＳＲＳ）を介し迅速に送信されてもよい。この一対のレジスタは「セキュリティ例外エントリポイント」レジスタであってもよく、ＳＥＭセキュリティ例外発生時には命令実行用の分岐先アドレスを規定してもよい。このセキュリティ例外エントリポイントレジスタは、ＳＥＭセキュリティ例外ハンドラへのエントリ時に使用されるコードセグメント（ＣＳ）、命令ポインタ（ＩＰ、もしくは６４ビット版ＲＩＰ）、スタックセグメント（ＳＳ）、及びスタックポインタ（ＳＰ、もしくは６４ビット版ＲＳＰ）の各値を規定してもよい。ソフトウェア制御下では、実行ユニット６００（図６）は上述のＳＳ、ＳＰ／ＲＳＰ、ＥＦＬＡＧＳ、ＣＳ、及びＩＰ／ＲＩＰの各値を例外の発生場所を示す新しいスタック上に送り出してもよい。また、実行ユニット６００は、そのスタック上にエラーコードを送り出してもよい。なお、ＣＰＬの変化が起こらなくても、上記のＳＳ及びＳＰ／ＲＳＰの各値は常にセーブされ、スタックの切換えが常に達成されているので、割り込み（ＩＲＥＴ）命令からの通常のリターンを用いることはないであろう。したがって、新しい命令を規定することによりＳＥＭ例外ハンドラからのリターンを達成してもよい。
【００５７】
図１３は図４のホストブリッジ４０４の一実施形態を示す図である。図１３の実施形態において、ホストブリッジ４０４は、ホストインターフェイス１３００、ブリッジロジック１３０２、ホストブリッジＳＣＵ４１８、メモリコントローラ１３０４およびデバイスバスインターフェイス１３０６を含む。ホストインターフェイス１３００はＣＰＵ４０２に、デバイスバスインターフェイス１３０６はデバイスバス４０８にそれぞれ接続されている。ブリッジロジック１３０２はホストインターフェイス１３００とデバイスバスインターフェイス１３０６の間に接続されている。メモリコントローラ１３０４はメモリ４０６に接続され、メモリ４０６への全てのアクセスを行う。ホストブリッジＳＣＵ４１８はブリッジロジック１３０２とメモリコントローラ１３０４の間に接続されている。上述のように、ホストブリッジＳＣＵ４１８は、デバイスバスインターフェイス１３０６を介してメモリ４０６へのアクセスを制御する。ホストブリッジＳＣＵ４１８は、デバイスバスインターフェイス１３０６を介してメモリ４０６へのアクセスを監視し、メモリ４０６へのアクセスが認証されているものだけを許可する。
【００５８】
図１４は図１３のホストブリッジＳＣＵ４１８の一実施形態を示す図である。図１４の実施形態において、ホストブリッジＳＣＵ４１８は、一組のＳＥＭレジスタ１４０２に接続されたセキュリティチェックロジック１４００及びＳＡＴエントリバッファ１４０４を含む。一組のＳＥＭレジスタ１４０２は、セキュリティチェックロジック１４００の動作を管理し、図９の第２のＳＡＴベースアドレスレジスタ９０８を含む。一組のＳＥＭレジスタ１４０２の第２のＳＡＴベースアドレスレジスタ９０８は、アドレス指定が可能なレジスタであってもよい。セキュリティカーネル５０４（図５）が（例えば、コンテクストスイッチ中に）ＣＰＵ４０２の一組のＳＥＭレジスタ６１０の中のＳＡＴベースアドレスレジスタ９０８の内容を変更した時は、セキュリティカーネル５０４は、同じ値をホストブリッジＳＣＵ４１８の一組のＳＥＭレジスタ１４０２内の第２のＳＡＴベースアドレスレジスタ９０８にも書き込んでもよい。第２のＳＡＴベースアドレスレジスタ９０８の変更を受けて、ホストブリッジＳＣＵ４１８のセキュリティチェックロジック１４００はＳＡＴエントリバッファ１４０４を一括で消去してもよい。
【００５９】
セキュリティチェックロジック１４００は、ハードウェアデバイスユニット４１４Ａ〜４１４Ｄ（図４）が起動したメモリアクセスのメモリアクセス信号を、デバイスバスインターフェイス１３０６及びブリッジロジック１３０２（図１３）を介して受け取る。このメモリアクセス信号は、ハードウェアデバイスユニット４１４Ａ〜４１４Ｄからの物理アドレスと、関連する制御信号及び／またはデータ信号を伝送する。セキュリティチェックロジック１４００は、対応するメモリページのＳＡＴエントリを得るための機構９００（図９）を組み込んでいてもよく、図４のコンピュータシステム４００がＳＥＭで動作中には機構９００を実施してもよい。ＳＡＴエントリバッファ１４０４は上述のＣＰＵＳＣＵ４１６（図８）のＳＡＴエントリバッファ８０２と類似しており、アクセスされたばかりのメモリページのＳＡＴエントリを比較的少数格納するのに用いられる。
【００６０】
図４のコンピュータシステム４００がＳＥＭで動作中、図１４のセキュリティチェックロジック１４００は、選択されたメモリページに関連したＳＡＴエントリの追加セキュリティ情報を用いて、ハードウェアが起動した所定のメモリアクセスが認証されているかどうかを判定する。このハードウェアが起動した所定のメモリアクセスが認証されている場合、セキュリティチェックロジック１４００によって、メモリアクセスのメモリアクセス信号（つまり、物理アドレスを伝送するアドレス信号と関連する制御信号及び／またはデータ信号）がメモリコントローラ１３０４に供給される。メモリコントローラ１３０４は、物理アドレスと関連する制御信号及び／またはデータ信号を用いてメモリ４０６にアクセスする。メモリ４０６へのアクセスが書き込みアクセスの場合、データ信号が伝送するデータはメモリ４０６に書き込まれる。メモリ４０６へのアクセスが読み出しアクセスの場合、メモリコントローラ１３０４はメモリ４０６からデータを読み出し、セキュリティチェックロジック１４００に読み出したデータを供給する。セキュリティチェックロジック１４００は読み出したデータをブリッジロジック１３０２に転送し、ブリッジロジック１３０２はそのデータをデバイスバスインターフェイス１３０６に供給する。
【００６１】
一方、ハードウェアが起動した所定のメモリアクセスが認証されていない場合、セキュリティチェックロジック１４００による、メモリ４０６へのアクセスの物理アドレスや関連する制御信号及び／またはデータ信号のメモリコントローラ１３０４への供給は行われない。ハードウェアが起動した認証されていないメモリアクセスがメモリ書き込みアクセスである場合、セキュリティチェックロジック１４００はメモリ４０６には変更を加えずに、書き込みアクセス完了の信号を出して書き込みデータを破棄してもよい。セキュリティチェックロジック１４００はまた、セキュリティアクセス違反を記録に残すために、ログの中にログエントリを形成（例えば、状態レジスタの１つ以上のビットを設定もしくはクリアする）してもよい。セキュリティカーネル５０４は、ログに周期的にアクセスして、そのようなログエントリがあるかどうかをチェックしてもよい。ハードウェアが起動した認証されていないメモリアクセスがメモリ読み出しアクセスの場合、セキュリティチェックロジック１４００は、ブリッジロジック１３０２を介してデバイスバスインターフェイス１３０６に、違反であるという結果（例えば、全て「Ｆ」）を読み出しデータとして返す。セキュリティチェックロジック１４００は同様に、上述のようなログエントリを、セキュリティアクセス違反を記録に残すために形成してもよい。
【００６２】
図１５は、複数のメモリページ内に配置されたデータを記憶するのに用いられるメモリに対してアクセスセキュリティを提供する方法１５００の一実施形態を示すフローチャートである。方法１５００は、図４のコンピュータシステム４００がＳＥＭで動作中にＣＰＵが起動した（つまり、ソフトウェアが起動した）メモリアクセスに対する表１に示した規則の一例を反映したものである。方法１５００はＭＭＵ６０２（図６〜７）内に組み込まれていてもよい。方法１５００のステップ１５０２において、命令実行中に生成されたリニアアドレスを、命令のセキュリティ属性（例えば、この命令を含むタスクのＣＰＬ）とともに受け取る。この命令はメモリページ内にある。ステップ１５０４において、選択されたメモリページのベースアドレス及びセキュリティ属性を得るために、リニアアドレスを用いて、メモリ内に位置する少なくとも１つのページングされたメモリデータ構造（例えば、ページディレクトリやページテーブル）にアクセスする。選択されたメモリページのセキュリティ属性は、例えば、ページディレクトリエントリのＵ／ＳビットやＲ／Ｗビット及びページテーブルエントリのＵ／ＳビットやＲ／Ｗビットを含んでいてもよい。
【００６３】
判定ステップ１５０６において、命令のセキュリティ属性及び選択されたメモリページのセキュリティ属性を用いて、上記アクセスが認証されているかどうかを判定する。アクセスが認証されている場合には、ステップ１５０８において選択されたメモリページのベースアドレスとオフセットを合体することにより、選択されたメモリページ内に物理アドレスを生成する。アクセスが認証されていない場合には、ステップ１５１０において違反信号（例えば、一般保護違反信号またはＧＰＦ信号）を生成する。
【００６４】
ステップ１５０８の後に続くステップ１５１２において、第１のメモリページの追加セキュリティ属性及び選択されたメモリページの追加セキュリティ属性を得るために、選択されたメモリページの物理アドレスを用いて、メモリ内に位置する少なくとも１つのセキュリティ属性データ構造（例えば、図９のＳＡＴディレクトリ９０４やＳＡＴ）へのアクセスが行われる。この第１のメモリページの追加セキュリティ属性は、例えば、上述のようなセキュリティ保護されたページ（ＳＰ）ビットを含んでいてもよい。ここで、ＳＰビットは、第１のメモリページがセキュリティ保護されたページかどうかを表している。同様に、選択されたメモリページの追加セキュリティ属性はセキュリティ保護されたページ（ＳＰ）ビットを含んでいてもよい。ここで、ＳＰビットは、選択されたメモリページがセキュリティ保護されたページかどうかを表している。
【００６５】
ステップ１５１４において、命令のセキュリティ属性、第１のメモリページの追加セキュリティ属性、選択されたメモリページのセキュリティ属性、及び選択されたメモリページの追加セキュリティ属性に従って、違反信号を生成する。なお、方法１５００のステップ１５１２，１５１４はＣＰＵＳＣＵ４１６（図４〜８）内に組み込まれていてもよい。
【００６６】
以下の表２に、図４のコンピュータシステム４００がＳＥＭで動作中における、デバイスハードウェアユニット４１４Ａ〜４１４Ｄが起動したメモリページアクセス（つまり、ハードウェアが起動したメモリアクセス）に対する規則の一例を示す。このようなハードウェアが起動したメモリアクセスは、デバイスハードウェアユニット４１４Ａ〜４１４Ｄ内のバスマスタリング回路によって起動されてもよいし、また、デバイスハードウェアユニット４１４Ａ〜４１４Ｄの要求によりＤＭＡデバイスによって起動されてもよい。セキュリティチェックロジック１４００は、メモリ４０６に格納されたデータに対してオペレーティングシステム５０２（図５）が提供したデータセキュリティを超える追加セキュリティを提供するために、図４のコンピュータシステム４００がＳＥＭで動作中において表２の規則を実行してもよい。以下の表２において、「対象となる」メモリページとは、メモリアクセスのメモリアクセス信号によって伝送された物理アドレスが中にあるメモリページである。
【００６７】
【表２】
2005521942.tif 000004
【００６８】
上記の表２において、対象となるメモリページのＳＰビットは、メモリアクセスの物理アドレス及び図９に示す対応するメモリページのＳＡＴエントリを得るための上記機構９００を用いて、ホストブリッジＳＣＵ４１８によって得られる。
【００６９】
図２に示すように、対象となるメモリページがセキュリティ保護されたページであることを表しているＳＰ＝１の場合、メモリアクセスは認証されていない。この状況において、セキュリティチェックロジック１４００（図１４）は、メモリアクセス信号をメモリコントローラに供給しない。メモリアクセス信号（例えば制御信号）のある部分はメモリアクセスの種類を表し、ここでメモリアクセスの種類とは、読み出し信号か書き込み信号のいずれかである。ＳＰ＝１でメモリアクセス信号がメモリアクセスの種類が読み出しアクセスであることを示している場合、そのメモリアクセスは認証されていない読み出しアクセスであり、セキュリティチェックロジック１４００は、認証されていない読み出しアクセスに対して、実際のメモリの内容ではなく全て「Ｆ」（つまり、偽りの読み出しデータ）を供給することにより応答する。セキュリティチェックロジック１４００はまた、認証されていない読み出しアクセスに対して、上述のような認証されていない読み出しアクセスのログを記録することによって応答してもよい。
【００７０】
ＳＰ＝１でメモリアクセス信号がメモリアクセスの種類が書き込みアクセスであることを示している場合には、そのメモリアクセスは認証されていない書き込みアクセスである。このような状況では、セキュリティチェックロジック１４００は、認証されていない書き込みアクセスに対して、メモリアクセス信号が伝送した書き込みデータを破棄することによって応答する。セキュリティチェックロジック１４００はまた、認証されていない書き込みアクセスに対して、上述のような認証されていない書き込みアクセスのログを記録することによって応答してもよい。
【００７１】
図１６は、複数のメモリページ内に配置されたデータを記憶するのに用いられるメモリにアクセスセキュリティを提供する方法１６００の一実施形態を示すフローチャートである。方法１６００は、図４のコンピュータシステム４００がＳＥＭで動作中にハードウェアが起動したメモリアクセスに対する表２に示した規則の一例を反映したものである。方法１６００はホストブリッジ４０４（図４，１３，１４）内に組み込まれていてもよい。方法１６００のステップ１６０２において、あるメモリアクセスのメモリアクセス信号を受け取る。ここで、メモリアクセス信号は、対象となるメモリページ内の物理アドレスを伝送している。上述のように、メモリアクセス信号はデバイスハードウェアユニットによって生成されていてもよい。ステップ１６０４において対象となるメモリページのセキュリティ属性を得るために、物理アドレスを用いて、メモリ内に位置する少なくとも１つのセキュリティ属性データ構造にアクセスする。この少なくとも１つのセキュリティ属性データ構造は、例えば、ＳＡＴディレクトリ（例えば、図９のＳＡＴディレクトリ９０４）や少なくとも１つのＳＡＴ（例えば、図９のＳＡＴ９０６）を含んでいてもよく、対象となるメモリページの追加セキュリティ属性は、対象となるメモリページがセキュリティ保護されたページかどうかを表している上述のようなセキュリティ保護されたページ（ＳＰ）ビットを含んでいてもよい。ステップ１６０６において、対象となるメモリページのセキュリティ属性に従ったメモリアクセス信号を用いて、メモリにアクセスする。
【００７２】
ＣＰＵ４０２（図４および６）は信号線で伝達される信号を介してコンピュータシステム４００（図４）の他の構成要素と通信する。上述したように、そのような信号は監視の対象となる（例えば、外部機器によって）。そのような信号を分析することにより、転送されている秘密データのみならず、そのような秘密データを処理するのに使用されているコンピュータシステム内に実装された方法（例えば、ソフトウェアプログラム）をもわかってしまう。コンピュータシステム４００は、秘密データおよび秘密データを処理するのに使用する方法を隠すために、ＣＰＵ４０２に転送されるデータおよびＣＰＵから転送されるデータ（命令を含む）のすべてを暗号化する能力を有する。
【００７３】
上述のように、キャッシュユニット６０４（図６）は、データ暗号化機能およびデータ復号機能の両方を実行するために使用される暗号化／復号ユニット６１２を備える。ＣＰＵ４０２がページングイネーブルの保護（プロテクト）モードで動作しているとき、上述のようにメモリ４０６は複数のページ（つまり、メモリページ）内に配置されたデータを記憶する。選択されたメモリページのデータ（命令を含む）はセキュリティの目的で暗号化することができる。暗号化／復号ユニット６１２のデータ復号機能を用いて、メモリ４０６からＢＩＵ６０６を介してキャッシュユニット６０４が受信した暗号化されたデータ（命令を含む）を復号する。暗号化／復号ユニット６１２のデータ暗号化機能を用いて、データがキャッシュユニット６０４から追い出される（例えば、より最近に参照された命令および／またはデータのための空きを作るために）前に、キャッシュユニット６０４内に記憶され、実行ユニット６００が利用可能な暗号化されていない（つまり、「平文」の）データ（命令を含む）を暗号化する。暗号化／復号ユニット６１２はデータを暗号化および復号するために、様々な暗号化および復号アルゴリズムのうちどれを用いてもよい。
【００７４】
再び図１２を参照して、ＳＡＴエントリフォーマット１２００エントリは上述のＳＰビットに加えて、暗号メモリ（Ｅ）ビットを含む。このＥビットは対応するメモリページのメモリ位置に記憶されているデータが暗号化されているかどうかを示す。例えば、Ｅ＝０の場合は対応するメモリページ内のデータは暗号化されておらず、そしてＥ＝１の場合は対応するメモリページ内のデータは暗号化されている。
【００７５】
図１７から１９を参照して、キャッシュユニット６０４が複数のセットを含むセットアソシアティブキャッシュユニットである、図６のキャッシュユニット６０４の一実施形態の動作を説明する。セットアソシアティブキャッシュユニットとして、キャッシュユニット６０４は、行および列を有する２次元配列（アレイ）に構成されているものと考えられる。それぞれの行はキャッシュユニット６０４の複数の「セット」の一つを表し、それぞれの列はキャッシュユニット６０４の複数の「ウェイ」の一つを表す。キャッシュユニット６０４の特定の行（つまりセット）にマッピングされるデータはそのセットの複数の列（つまり、ウェイ）のどれに記憶してもよい。
【００７６】
図１７は、図６のＭＭＵ６０２によって生成され、図６のキャッシュユニット６０４に供給される物理アドレス１７００の一例を示す図である。キャッシュユニット６０４は物理アドレス１７００を、物理アドレス１７００の最高順位（つまり、最上位）ビットを含む上位「アドレスタグ」部１７０２と、中位「セットアドレス」部１７０４と、物理アドレス１７００の最低順位（つまり、最下位）ビットを含む下位「バイトアドレス」部１７０６の３つの部分に分割する。セットアドレス部１７０４のビットはキャッシュユニット６０４の複数のセットのうちの一つを選択するために用いられ、バイトアドレス部１７０６のビットはキャッシュユニット６０４に存在する、対応するキャッシュメモリエントリ内の特定バイトを選択するために用いられる。
【００７７】
図１８は図６のキャッシュユニット６０４のキャッシュメモリエントリ１８００の一実施形態を示す図である。各キャッシュメモリエントリはデータ（例えば、命令）の複数バイトを記憶するために使用される。図１９は、図６のキャッシュユニット６０４のキャッシュディレクトリエントリ１９００の一実施形態を示す図である。各キャッシュディレクトリエントリは異なったキャッシュメモリエントリに対応し、対応するキャッシュメモリエントリに関連するデータを記憶するために用いられる。図１９の実施形態においては、キャッシュディレクトリエントリ１９００はアドレス部１９０２と、制御部１９０４とを含む。アドレス部１９０２は複数のビット位置を含み、対応するキャッシュメモリエントリに記憶されるデータに関連する物理アドレスのアドレスタグ部（例えば、物理アドレス１７００のアドレスタグ部１７０２）を記憶するために用いられる。制御部１９０４もまた複数のビット位置を含み、対応するキャッシュメモリエントリの内容（コンテンツ）を管理するために使用されるデータを記憶するために用いられる。
【００７８】
図１９の実施形態において、キャッシュディレクトリエントリ１９００の制御部１９０４は、有効（Ｖ）ビット、書き込み保護（Ｗ）ビット、一以上の置換（Ｒ）ビットおよび暗号データ（Ｅ）ビットを含む。有効（Ｖ）ビットは対応するキャッシュメモリエントリの内容が有効であるか否かを特定する。例えば、Ｖ＝１の場合、対応するキャッシュメモリエントリは有効なデータを記憶している。一方、Ｖ＝０の場合、対応するキャッシュメモリエントリの内容は有効ではない。書き込み保護（Ｗ）ビットは対応するキャッシュメモリエントリの内容が書き込み保護（ライトプロテクト）されているかどうかを特定する。例えば、Ｗ＝１は対応するキャッシュメモリエントリの内容に書き込みできないことを示し、Ｗ＝０は対応するキャッシュの内容が書き込み可能であることを示す。
【００７９】
一以上の置換（Ｒ）ビット対応するキャッシュメモリエントリの内容を置換する方法を実装するために用いられる。置き換え方法は、例えば、最長未使用時間（ＬＲＵ，  Least Recently Used）置き換え方法とすることができる。暗号データ（Ｅ）ビットは、対応するキャッシュメモリエントリの内容が暗号化されているかどうかを特定する。例えば、Ｅ＝１は対応するキャッシュメモリエントリの内容が暗号化されていることを示し、Ｅ＝０は対応するキャッシュメモリエントリの内容が暗号化されていないことを示す。
【００８０】
キャッシュユニット６０４（図６）が、実行ユニット６００によって要求されるデータ（例えば、命令）に関係して、ＭＭＵ６０２（図６）から物理アドレス（例えば、図１７の物理アドレス１７００）を受信したとき、キャッシュユニット６０４は物理アドレス１７００のセットアドレス部１７０４をキャッシュユニット６０４の２次元キャッシュ構造の行（例えば、セット）へのインデックスとして用いる。インデックスとして用いることにより、セットアドレス部１７０４はキャッシュユニット６０４内の特定のセットを選択する。次に、キャッシュユニット６０４は、物理アドレス１７００のアドレスタグ部１７０２を、選択された行（つまり、セット）内の各列（つまり、ウェイ）の（有効な）キャッシュディレクトリエントリ１９００のアドレス部１９０２と比較する。もし、合致（マッチ）があると、キャッシュ「ヒット」が発生し、キャッシュユニット６０４は要求されたデータバイトを提供するのに物理アドレス１７００のバイトアドレス部１７０６を使用する。
【００８１】
もし比較の結果合致が生じなかった場合は、キャッシュ「ミス」が発生し、メモリ４０６（図４）から要求されたデータを取得する必要があることを示す信号を出す。この状況において、キャッシュユニット６０４は物理アドレス１７００を、「キャッシュミス」信号とともに、ＢＩＵ６０６（図６）に供給する。それに対応して、ＢＩＵ６０６は物理アドレス１７００を用いてメモリ４０６から要求されたデータを含むデータブロック（つまり、キャッシュライン）を取得し、要求されたデータを含むデータブロックをキャッシュユニット６０４に供給する。
【００８２】
キャッシュミスが発生すると、キャッシュユニット６０４はキャッシュミス信号をＣＰＵ  ＳＣＵ４１６（図６）にも供給する。ＭＭＵ６０２によって実行されるリニア対物理アドレス変換処理に続いて、ＣＰＵ  ＳＣＵ４１６は物理アドレスを用いて、既述のように物理アドレスを含むメモリページのＳＡＴエントリ（つまり、対応するメモリページのＳＡＴエントリ）を取得する。キャッシュユニット６０４からのキャッシュミス信号に応答して、ＣＰＵ  ＳＣＵ４１６は対応するＳＡＴエントリ内の暗号データ（Ｅ）ビットの値をキャッシュユニット６０４に供給する（図１２を参照）。
【００８３】
対応するＳＡＴエントリ内の暗号メモリ（Ｅ）ビットがセットされていると、ＢＩＵ６０６によってメモリ４０６から取得されるデータブロックは暗号化されている。この状況で、キャッシュユニット６０４は、選択されたセットの１ウェイのキャッシュメモリエントリにデータブロックを記憶する前に、暗号化／復号ユニット６１２（図６）を用いてデータブロックを復号する。キャッシュユニット６０４はさらに対応するキャッシュディレクトリエントリ１９００の制御部１９０４の暗号データ（Ｅ）ビットを設定する（図１９を参照）。
【００８４】
もし選択されたセットのすべてのウェイが有効なデータを含んでいる場合は、キャッシュユニット６０４は置き換え方法を実施して、ＢＩＵ６０６によってメモリ４０６から取得されるデータブロックのための場所を確保するために、キャッシュユニット６０４からあるキャッシュラインを追い出す。もしキャッシュユニット６０４から追い出されたキャッシュメモリエントリ１８００（つまり、キャッシュライン）に対応するキャッシュディレクトリエントリ１９００の暗号データ（Ｅ）ビットが設定されていると、キャッシュユニット６０４は暗号化／復号ユニット６１２を使用して、メモリ４０６に書き込まれるべき、追い出されたキャッシュラインをＢＩＵ６０６に供給する前に、データブロックを暗号化する。
【００８５】
図２０は、メモリ４０６（図４）に記憶され、ＣＰＵ４０２（図４）とメモリ４０６との間で転送されるデータに対してセキュリティを提供するための方法２０００の一実施形態のフローチャートである。上述のように、メモリ４０６内に記憶されているデータは複数のメモリページに配置されている。方法２０００のステップ２００２において、選択されたメモリページの物理アドレスを受信する。選択されたメモリページの暗号化表示を取得するために、ステップ２００４において、この物理アドレスを用いて、メモリ４０６に位置するＳＥＭデータ構造にアクセスする。上述のように、ＳＥＭデータ構造はＳＡＴディレクトリ９０４（図９）および少なくとも１つのＳＡＴ（例えば、図９のＳＡＴ９０６）を含む。選択されたメモリページの暗号化表示はその選択されたメモリページに記憶されたデータが暗号化されているかどうかを示す。選択されたメモリページの暗号化表示は、例えば選択されたメモリページに対応するＳＡＴエントリの暗号メモリ（Ｅ）ビットであってもよい（図１２を参照）。
【００８６】
ステップ２００６において、選択されたメモリページからのデータブロックおよび暗号化表示を受信する。このデータブロックは、例えばメモリ４０６の隣接する位置に記憶された複数のデータユニット（例えば、データバイト）を含む。このデータブロックはステップ２００８において暗号化表示に応じて復号され、データブロックはステップ２０１０において記憶される。
【００８７】
ここで、方法２０００のステップ２００２および２００４はＣＰＵ  ＳＣＵ４１６（図４および図６−８）で実行することができ、方法２０００のステップ２００６，２００８および２０１０はキャッシュユニット６０４（図６）で実行することができることに注意してもらいたい。
【００８８】
さらに、コンピュータシステム４００の選択されたデータ（例えば、秘密データおよびその秘密データを処理するのに用いられるソフトウェアプログラム）がＣＰＵ４０２の外にあるときに（例えば、メモリ４０６に記憶されているとき）、それを暗号化し、ＣＰＵ４０２とコンピュータシステム４００の他の構成要素（例えば、メモリ４０６）の間で暗号化されたデータを転送することで、秘密データおよびその秘密データを処理するのに用いられるソフトウェアプログラムの両方を隠すことができることに注意してほしい。本発明の方法をフローチャートを用いて説明してきたが、本発明の方法はここに示した実施形態に限定されるものではないことを理解してもらいたい。他の実施形態では、本方法の一以上のステップが異なった順番で実行され、または省略される。
【００８９】
本明細書で示した実施形態では、使用されるメモリ領域はメモリページである。他の実施形態では、異なるメモリ単位（granularity）も使用可能であって、それにはメモリセグメントまたはベースバンドペアのようなメモリアドレスペアも含まれる。メモリアドレスペアはメモリ範囲またはベースバンドペアのようなある範囲を持つベースメモリを定義する上位および下位アドレスを含むことができる。一実施形態では、使用されるメモリ領域の単位はオペレーティングシステムが使用する単位である。他の実施形態では、使用されるメモリ領域の単位はハードウェアが使用する単位である。
【００９０】
上記で開示されたような本発明の態様の中には、ハードウェアまたはソフトウェア内で実施されるものがあってもよい。従って、これまでの詳細な説明の中には、ハードウェアが実施するプロセスの観点から結果として提起されたものもあり、また、計算処理システムまたは計算処理デバイスのメモリ内のデータバス上での動作の記号表現を伴った、ソフトウェアが実施するプロセスの観点から提起されたものもある。これらの記述や表現は、当業界で用いられる、当業者に各態様の作用の趣旨をハードウェアとソフトウェアの両方を使用して最も効果的に伝える手段である。両者のプロセス及び動作には、物理量の物理的な操作が必要である。ソフトウェアでは、通常、必要であるとは限らないが、これらの量は、格納、転送、結合、比較、及びその他の操作が可能な電気、磁気、もしくは光の各信号の形を採っている。場合によっては、主に共用するという理由から、これらの信号を、ビット、値、要素、符号、文字、語、数等として表すと便利であることがわかっている。
【００９１】
しかしながら、これらの語句及び類似の語句は全て適当な物理量に関連するものであり、これらの物理量に適用された便利なラベルにしか過ぎないことは留意すべきである。明らかなもの以外は特に断らない限り、本開示を通じて、これらの説明は、ある電子デバイスの記憶装置の中にある物理（電気、磁気、もしくは光）量で表されたデータに対して、記憶装置内、または転送装置やディスプレイ装置内の物理量で同様に表された他のデータへの操作や変換を行う電子デバイスの動作及びプロセスについて言及しているものである。このような説明を示す語句の例としては、制限はないが、「プロセス処理」「計算処理」「計算」「判定」「表示」等の語句がある。
【００９２】
また、本発明のソフトウェアによって実施された態様は、通常、プログラム記憶媒体のフォーム上に符号化されているか、またはある種の伝送媒体上で実施されている。プログラム記憶媒体は磁気方式（例えば、フロッピーディスクやハードディスク）でも光方式（例えば、コンパクトディスク読み出し専用メモリ、つまり「ＣＤ‐ＲＯＭ」）でもよいし、読み出し専用でもランダムアクセス可能でもよい。同様に、伝送媒体は、撚線対、同軸ケーブル、光ファイバー、または当業界では既知の他の適当な伝送媒体のいずれでもよい。本発明は、これら任意の実施態様には制限されない。
【００９３】
本発明は、ここにある教示の恩恵を受ける当業者には明らかである様々かつ同等な方法で変更及び実現されてもよいので、上述の個別の実施形態は単に例示的なものである。さらに、以下の請求項に記述されているようなことを除いて、ここに示した構造または設計の詳細に限定することを意図するものではない。従って、上記に開示された個別の実施形態は変形や変更を加えられてもよく、このような変形例の全ては本発明の範囲と精神の範疇にあるとみなされることは明らかである。すなわち、ここに求められている保護は、以下の請求項に記載されているものである。
【図面の簡単な説明】
【００９４】
【図１】ｘ８６プロセッサアーキテクチャの周知のリニア‐物理アドレス変換機構の図。
【図２】ｘ８６プロセッサアーキテクチャのページディレクトリエントリフォーマットの図。
【図３】ｘ８６プロセッサアーキテクチャのページテーブルエントリフォーマットの図。
【図４】ＣＰＵ及びシステム、つまり「ホスト」ブリッジを含むコンピュータシステムの一実施形態の図であり、ここでＣＰＵはＣＰＵセキュリティチェックユニット（ＳＣＵ）を含み、ホストブリッジはホストブリッジＳＣＵを含む。
【図５】図４のコンピュータシステムの様々なハードウェア要素及びソフトウェア要素間の関係を示す図。
【図６】図４のコンピュータシステムのＣＰＵの一実施形態を示す図であり、ここでＣＰＵはメモリ管理ユニット（ＭＭＵ）およびキャッシュユニットを含み、当該キャッシュユニットはデータ暗号化機能およびデータ復号機能の両方を実行する、暗号化／復号ユニットを備える。
【図７】図６のＭＭＵの一実施形態を示す図であり、ここでＭＭＵはページングユニットを含み、ページングユニットはＣＰＵＳＣＵを含む。
【図８】図７のＣＰＵＳＣＵの一実施形態を示す図。
【図９】選択されたメモリページの追加セキュリティ情報を得るために、選択されたメモリページのセキュリティ属性テーブル（ＳＡＴ）エントリにアクセスする機構の一実施形態を示す図。
【図１０】ＳＡＴデフォルトレジスタの一実施形態の図。
【図１１】ＳＡＴディレクトリエントリフォーマットの一実施形態の図。
【図１２】ＳＡＴエントリフォーマットの一実施形態の図。
【図１３】図４のホストブリッジの一実施形態の図であり、ここでホストブリッジはホストブリッジＳＣＵを含む。
【図１４】図１３のホストブリッジＳＣＵの一実施形態の図。
【図１５】複数のメモリページ内に配置されたデータを格納するのに用いられるメモリを管理する第１の方法の一実施形態のフローチャート。
【図１６】複数のメモリページ内に配置されたデータを格納するのに用いられるメモリに対してアクセスセキュリティを提供する第２の方法の一実施形態のフローチャート。
【図１７】図６のＭＭＵによって生成され、図６のキャッシュユニットに供給される物理アドレスの例を示す図。
【図１８】図６のキャッシュユニットのキャッシュメモリエントリの一実施例を示す図。
【図１９】図６のキャッシュユニットのキャッシュディレクトリエントリの一実施例を示す図。
【図２０】図４のメモリ内に記憶され、図４のＣＰＵとメモリとの間で転送されるデータに対してセキュリティを提供する方法の一実施例を示すフローチャート。
【図１】
2005521942.tif 000005
【図２】
2005521942.tif 000006
【図３】
2005521942.tif 000007
【図４】
2005521942.tif 000008
【図５】
2005521942.tif 000009
【図６】
2005521942.tif 000010
【図７】
2005521942.tif 000011
【図８】
2005521942.tif 000012
【図９】
2005521942.tif 000013
【図１０】
2005521942.tif 000014
【図１１】
2005521942.tif 000015
【図１２】
2005521942.tif 000016
【図１３】
2005521942.tif 000017
【図１４】
2005521942.tif 000018
【図１５】
2005521942.tif 000019
【図１６】
2005521942.tif 000020
【図１７】
2005521942.tif 000021
【図１８】
2005521942.tif 000022
【図１９】
2005521942.tif 000023
【図２０】
2005521942.tif 000024
【国際調査報告】
2005521942.tif 000025
2005521942.tif 000026
2005521942.tif 000027