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