(57)【要約】方法と方法を実行するシステム（４００Ａ−Ｂ）を提供する。本方法は非セキュリティルーチンを実行し非セキュリティルーチンから要求を受信することを含む。本方法は又ハードウェアで要求の第１の評価を実行し、ソフトウェアでセキュリティルーチン内で要求の第２の評価を実行することを含む。コンピュータ・システム（４００Ａ−Ｂ）はセキュリティルーチンと非セキュリティルーチンを実行するように構成可能なプロセッサ（４０４）を含む。コンピュータ・システム（４００Ａ−Ｂ）は、また非セキュリティルーチンに関連する要求の第１の評価を実行するように接続されたハードウェアも含む。ハードウェアはさらにセキュリティルーチンへ要求の通知を提供するように構成される。セキュリティルーチンは要求の第２の評価を実行するように構成される。セキュリティルーチンはさらに要求に対して要求された応答を拒絶するように構成される。
2005528686.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティルーチンと非セキュリティルーチンとを実行するように構成可能なプロセッサ（４０４）と、
前記非セキュリティルーチンに関連する要求の第１の評価を実行するように接続され、さらに前記セキュリティルーチンへ前記要求の通知を提供するように構成されたハードウェアとを含み、
前記セキュリティルーチンは前記要求の第２の評価を実行するように構成され、前記セキュリティルーチンはさらに前記要求により要求された応答を拒否するように構成される、コンピュータ・システム（４００Ａ−Ｂ）。
【請求項２】
前記セキュリティルーチンは前記要求の前記第２の評価を実行するように構成されたソフトウェアセキュリティ例外ハンドラ（１２１０）を含む請求項１に記載のコンピュータ・システム。
【請求項３】
前記ソフトウェアセキュリティ例外ハンドラ（１２１０）は前記要求が前記第２の評価を通過した場合前記要求された応答を許可するように構成される請求項２に記載のコンピュータ・システム。
【請求項４】
前記セキュリティルーチンはセキュリティカーネル（５０５）の要素であり、前記セキュリティカーネル（５０５）はオペレーティング・システム（５０２）の要素である請求項１に記載のコンピュータ・システム。
【請求項５】
前記第１の評価はカテゴリ分けであり、前記第２の評価はセキュリティリスク評価である請求項１に記載のコンピュータ・システム。
【請求項６】
前記カテゴリ分けでは、前記要求を、最小限のセキュリティリスクを伴うカテゴリや潜在的に高いセキュリティリスクを伴うカテゴリを含む複数のカテゴリと比較し、前記要求が潜在的に高いセキュリティリスクを伴うカテゴリの一つに該当する場合は、前記ハードウェアは前記セキュリティルーチンに前記要求を通知する請求項５に記載のコンピュータ・システム。
【請求項７】
前記ハードウェアは、少なくともセキュリティ実行モードビット（６０９）を格納するセキュリティ実行モードハンドラ（６１０）とＩ／Ｏ保護ビットマップ（２２００）とセキュリティ属性データ構造とを格納するメモリ（４０６）を含み、前記セキュリティルーチンはマイクロコード（６５０）と有限状態マシンの少なくとも一方を含む請求項１に記載のコンピュータ・システム。
【請求項８】
非セキュリティルーチンを実行し、
前記非セキュリティルーチンから要求を受け取り、
前記要求の第１の評価をハードウェアで実行し、及び
前記要求の第２の評価をセキュリティルーチン内でソフトウェアで実行する、方法。
【請求項９】
前記要求の前記第１の評価のハードウェアでの実行では、前記要求のカテゴリ分けをハードウェアで実行し、前記要求の前記第２の評価の前記セキュリティルーチン内のソフトウェアでの実行では、前記要求のセキュリティリスク評価を前記セキュリティルーチン内でソフトウェアで実行する請求項８に記載の方法。
【請求項１０】
前記要求のカテゴリ分けのハードウェアでの実行では、前記要求を、わずかなセキュリティリスクを伴うカテゴリと潜在的セキュリティリスクを伴うカテゴリとを含む複数のカテゴリと比較し、前記要求が潜在的セキュリティリスクを伴うカテゴリの一つに該当する場合、前記ハードウェアが前記要求を前記セキュリティルーチンへ渡す、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にメモリ管理システム及び方法に関し、さらに詳しくは、高セキュリティあるいはセキュアな（secure）計算環境を提供するメモリ管理システム及び方法に関する。
【背景技術】
【０００２】
図１は、ウィンドウズ（登録商標）オペレーティング・システム（マイクロソフト社、ワシントン州レッドモンド）を実行する場合などｘ８６プロセッサで発生する例外スタック・フレーム１００の略図である。例外ハンドラへのエントリには、例外が発生したアプリケーション・プログラム[すなわち「障害の発生したアプリケーション（faulting application）」]の全レジスタが保存されるが、コード・セグメント（CS）、命令ポインタ（ＥＩＰ）、スタック・セグメント（SS）、スタック・ポインタ（ESP）レジスタ群とEFLAGSは除く。これらのレジスタの内容は例外スタック・フレーム１００で利用可能になっている。
【０００３】
例外スタック・フレーム１００は、セグメント・アドレスSS：ESPで始まる。エラー・コードは例外スタック・フレーム１００内でセグメント・アドレスSS：ESP+00hにある。障害の発生したアプリケーションの命令ポインタ（ＥＩＰ）レジスタの内容は例外スタック・フレーム１００内でセグメント・アドレスSS：ESP+04hにある。障害の発生したアプリケーションのコード・セグメント（CS）レジスタの内容は例外スタック・フレーム１００内でセグメント・アドレスSS：ESP+08hにある。障害の発生したアプリケーションのフラグ（EFLAGS）レジスタの内容は例外スタック・フレーム１００内でセグメント・アドレスSS：ESP+0Chにある。障害の発生したアプリケーションのスタック・ポインタ（ESP）レジスタの内容は例外スタック・フレーム１００内でセグメント・アドレスSS：ESP+10hにある。障害の発生したアプリケーションのスタック・セグメント（SS）レジスタの内容は例外スタック・フレーム１００内でセグメント・アドレスSS：ESP+14hにある。なお、関連する制御の例外ハンドラへの転送が特権レベルの変更を伴う場合は、ESPとSSの値が例外スタック・フレーム１００に現れる。
【０００４】
障害の発生したアプリケーションの命令ポインタ（ＥＩＰ）の内容は、セグメント・アドレスSS：ESP+04hにあり、例外を発生させた障害の発生したアプリケーションの命令を示している。障害の発生したアプリケーションのスタックポインタ（ESP）レジスタの内容は、セグメント・アドレスSS：ESP+10hにあり、障害を発生したアプリケーションの障害時のスタック・フレームのアドレスである（すなわちこれを指している）。
【０００５】
セグメントに関連した例外のエラー・コードは保護モード・セレクタに非常に類似している。上位１３ビット（ビット１５：３）がセレクタ・インデックスで、ビット２がテーブル・インデックスである。しかし、要求側特権レベル（RPL）の代わりに、ビット０及び１は以下のミーティングを有する：ビット０（EXT）は障害がプログラム外部のイベントに起因した場合にセットされ、ビット１（ＩＤＴ）はセレクタ・インデックスがＩＤＴ内部のゲート・デスクリプタを参照している場合にセットされる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
図２は、アドバンスド・マイクロ・デバイセズ社で製造されるｘ８６プロセッサで使用されるSYSCALL／SYSRETターゲット・アドレス・レジスタ（STAR）２００の略図である。SYSCALL／SYSRETターゲット・アドレス・レジスタ（STAR）２００は、「SYSRET CSセレクタ及びＳＳセレクタ・ベース」フィールドと、「SYSCALL CSセレクタ及びＳＳセレクタ・ベース」フィールドと、「ターゲットＥＩＰアドレス」フィールドを含む。
【０００７】
SYSCALL命令実行前の何らかの時点で、オペレーティング・システムは、SYSCALL／SYSRETターゲット・アドレス・レジスタ（STAR）２００のSYSCALL CSセレクタ及びSSセレクタベース・フィールドへ適当なシステム・サービス・コードのコード・セグメント（CS）の値を書き込む。オペレーティング・システムはまた、SYSCALL／SYSRETターゲット・アドレス・レジスタ（STAR）２００のターゲットＥＩＰアドレス・フィールドへ、実行しようとするシステム・サービス・コード内の最初の命令のアドレスも書き込む。STARレジスタはシステム・ブート時に構成される。ターゲットＥＩＰアドレスはオペレーティング・システム・カーネル内の固定システム・サービス領域を指すことができる。
【０００８】
SYSCALL命令実行中に、SYSCALL CSセレクタ及びSSセレクタベース・フィールドの内容はCSレジスタへコピーされる。SYSCALL CSセレクタ及びSSセレクタベース・フィールドの内容に値「１０００ｂ」を加えたものがＳＳレジスタへコピーされる。これによってCSセレクタのインデックス・フィールドを実効的にインクリメントし、こうして得られたＳＳセレクタがCSデスクリプタの後、デスクリプタ・テーブル内の次のデスクリプタをポイントするようにする。ターゲットＥＩＰアドレス・フィールドの内容は命令ポインタ（ＥＩＰ）レジスタへコピーされ、実行すべき最初の命令のアドレスを指定する。
【０００９】
SYSCALL命令に対応するSYSRET命令の実行前の何らかの時点で、オペレーティング・システムは呼出しコードのコード・セグメント（CS）の値を、SYSCALL／SYSRETターゲット・アドレス・レジスタ（STAR）２００のSYSRET CSセレクタ及びＳＳセレクタ・ベースへ書き込む。SYSRET命令はECXレジスタからの戻りＥＩＰアドレスを取得する。
【課題を解決するための手段】
【００１０】
本発明の１つの態様によれば、方法が提供される。本方法は非セキュリティ（insecure）ルーチンを実行し非セキュリティルーチンからの要求を受信することを含む。本方法はまた、ハードウェアに於いて要求の第１の評価を実行し、ソフトウェアに於いてセキュリティ（secure）ルーチンでの要求の第２の評価を実行することを含む。
本発明の別の態様によれば、コンピュータ・システムが提供される。本コンピュータ・システムはセキュリティルーチンと非セキュリティルーチンを実行するように構成可能なプロセッサを含む。本コンピュータ・システムは非セキュリティルーチンに関連する要求の第１の評価を実行するように結合されたハードウェアも含む。ハードウェアはさらにセキュリティルーチンへの要求の通知を提供するように構成される。セキュリティルーチンは要求の第２の評価を実行するように構成される。セキュリティルーチンはさらに要求への要求された応答を拒否するように構成される。
【発明を実施するための最良の形態】
【００１１】
本発明は各種変更や代替の形態を許容するものであるが、本発明の特定の実施例が例として図面に図示してありまた本明細書で詳細に説明されている。しかし特定実施例の本明細書での説明は、開示された特定の形態に本発明を制限することを意図したものではなく、むしろ本発明は添付の請求の範囲で定義される本発明の趣旨と範囲とに納まる全ての変更、等価物、代替物を包含することを意図していることは理解されるべきである。
本発明は添付の図面を参照しつつ以下の詳細な説明を熟読することで理解されよう。図面に於いて同一の参照番号は同様の要素を表す。
本発明の図示した実施例について以下で説明する。簡明のため、実際の実施の全ての特徴が本明細書で説明されているわけではない。当然のことながらこのような実際の実施例の開発に当たっては数多くの実装特有の決定を行って、例えばシステム関連及びビジネス関連の制限との適合性など、開発者の特定の目標を実現する必要があり、これは実施毎に変化するものであることは理解されるであろう。さらに、このような開発努力は複雑でありまた時間がかかるが、本開示の恩恵を有する当業者には尚且つ日常的な保証であろうことも理解されよう。
【００１２】
図３をここで参照すると、本発明によるシステム３００の１実施例が図示してある。システム３００はプロセッシング・ユニット３１０、例えばキーボード３３０、マウス３４０、入力ペン３５０、モニタなどのディスプレイ・ユニット３２０など複数の入出力デバイスを含む。本発明で開示されるセキュリティレベル・システムは１実施例に於いてプロセッシング・ユニット３１０に存在する。本発明の１つの態様によれば、入出力デバイス３３０，３４０，３５０の一つからの入力は、プロセッシング・ユニット３１０に於いて、オペレーティング・システムを含む１つ又はそれ以上のソフトウェア構造体の実行を開始する。システム３００内に存在するＩ／Ｏ空間及び／又はＩ／Ｏ空間に関連するメモリがアクセスされて、プロセッシング・ユニット３１０に存在する各種ソフトウェア構造体を実行する。本発明の実施例は１つ又はそれ以上のソフトウェア構造体によって開始されたＩ／Ｏ空間アクセスを、システム３００内にプログラムされた所定のセキュリティエントリに基づいて制限することができる。
【００１３】
図４Ａはコンピュータ・システム４００Ａの１実施例の略図で、これにはＣＰＵ４０２、システム又は「ホスト」ブリッジ４０４、メモリ４０６、第１のデバイス・バス４０８[例えばＰＣＩ(peripheral component interconnect）バス]、デバイス・バス・ブリッジ４１０、第２のデバイス・バス４１２[例えばＩＳＡ（industry standard architecture）バス]、及び４台のデバイス・ハードウェア・ユニット４１４Ａ〜４１４Ｄを含む。ホスト・ブリッジ４０４はＣＰＵ４０２、メモリ４０６、第１のデバイス・バス４０８へ接続される。ホスト・ブリッジ４０４はＣＰＵ４０２と第１のデバイス・バス４０８の間で信号を変換し、メモリ４０６をＣＰＵ４０２と第１のデバイス・バス４０８へ動作的に接続する。デバイス・バス・ブリッジ４１０は第１のデバイス・バス４０８と第２のデバイス・バス４１２の間に接続されて第１のデバイス・バス４０８と第２のデバイス・バス４１２の間で信号を変換する。
【００１４】
図４Ａの実施例に於いて、デバイス・ハードウェア・ユニット４１４Ａと４１４Ｂは第１のデバイス・バス４０８へ接続され、デバイス・ハードウェア・ユニット４１４Ｃと４１４Ｄは第２のデバイス・バス４１２へ接続される。デバイス・ハードウェア・ユニット４１４Ａ〜４１４Ｄの１台又はそれ以上は、例えばストレージ・デバイス（例えばハードディスク・ドライブ装置、フロッピードライブ装置、ＣＤ−ＲＯＭドライブ装置など）、通信デバイス（例えばモデムやネットワーク・アダプタなど）又は入出力デバイス（例えばビデオ・デバイス、オーディオ・デバイス、及びプリンタなど）でも良い。他の実施例に於いてホスト・ブリッジ４０４は図４Ａに図示してあるＣＰＵ４０２の一部をなすことがあることに注意する。
【００１５】
図４Ｂの実施例に於いて、ＣＰＵ４０４は入出力（Ｉ／Ｏ）セキュリティチェック・ユニット（ＳＣＵ）４１５を含む。デバイス・ハードウェア・ユニット４１４Ａ〜４１４ＤはＣＰＵ４０４のＩ／Ｏ空間の各種Ｉ／Ｏポートへマッピングされ、ＣＰＵ４０４はデバイス・ハードウェア・ユニット４１４Ａ〜４１４Ｄと対応するＩ／Ｏポート経由で通信する。この状況で、Ｉ／ＯＳＣＵ４１５はデバイス・ハードウェア・ユニット４１４Ａ〜４１４ＤをＣＰＵ４０４によって生成された無許可アクセスから保護するために使用する。他の実施例に於いてホスト・ブリッジ４０４は図４Ｂに図示してあるＣＰＵ４０４の一部をなすことがあることに注意する。
図４Ｃの実施例に於いて、ＣＰＵ４０２はＣＰＵセキュリティチェック・ユニット（ＳＣＵ）４１６を含みホスト・ブリッジ４０４はホスト・ブリッジＳＣＵ４１８を含む。詳細に後述するように、ＣＰＵＳＣＵ４１６はＣＰＵ４０２によって生成された無許可アクセス（すなわち「ソフトウェアが開始したアクセス」）からメモリ４０６を保護し、ホスト・ブリッジＳＣＵ４１８はデバイス・ハードウェア・ユニット４１４Ａ〜４１４Ｄによって開始された無許可アクセス（すなわち「ハードウェアが開始したアクセス」）からメモリ４０６を保護する。
【００１６】
図５Ａは図４Ａ又は図４Ｂのコンピュータ・システム４００の各種ハードウェア及びソフトウェア要素の間の関係を示す略図である。図５の実施例に於いて、多数のアプリケーション・プログラム５００、オペレーティング・システム５０２、セキュリティカーネル５０４、及びデバイス・ドライバ５０６Ａ〜５０６Ｄがメモリ４０６に格納される。アプリケーション・プログラム５００、オペレーティング・システム５０２、セキュリティカーネル５０４、デバイス・ドライバ５０６Ａ〜５０６ＤはＣＰＵ４０２によって実行される命令を含む。オペレーティング・システム５０２はユーザ・インタフェースとソフトウェア「プラットホーム」を提供し、その上でアプリケーション・プログラム５００が動作する。オペレーティング・システム５０２は、例えば、ファイルシステム管理、プロセス管理、及び入出力（Ｉ／Ｏ）制御を含む基本サポート関数も提供する。
【００１７】
オペレーティング・システム５０２は、基本セキュリティ関数も提供する。例えば、ＣＰＵ４０２はｘ８６命令セットの命令を実行するｘ８６プロセッサである。この状況で、ＣＰＵ４０２は前述したような保護モードに於いて仮想メモリと物理メモリの双方の保護機能を提供するように特化したハードウェア要素を含むことができる。オペレーティング・システム５０２は例えば、保護モードでＣＰＵ４０２を動作させるオペレーティング・システムのウィンドウズ（登録商標）ファミリーの一つであり、保護モードで仮想メモリとメモリ双方の保護を提供するように特化したハードウェア要素を使用する。セキュリティカーネル５０４はオペレーティング・システム５０２によって提供されるセキュリティ機能の上に追加のセキュリティ関数を提供し、例えばメモリ４０６に格納されたデータを無許可アクセスから保護する。
【００１８】
図５Ａの実施例に於いて、デバイス・ドライバ５０６Ａ〜５０６Ｄは、各々が対応するデバイス・ハードウェア・ユニット４１４Ａ〜４１４Ｄへ動作的に関連しまた結合される。デバイス・ハードウェア・ユニット４１４Ａと４１４Ｄは、例えば、「セキュリティ」デバイスでありこれに対応するデバイス・ドライバ５０６Ａと５０６Ｄが「セキュリティ」デバイス・ドライバである。セキュリティカーネル５０４はオペレーティング・システム５０２とデバイス・ドライバ５０６Ａと５０６Ｄの間に結合されてアプリケーション・プログラム５００とオペレーティング・システム５０２による全てのアクセスをモニタし、デバイス・ドライバ５０６Ａ及び５０６Ｄとこれに対応するセキュリティデバイス４１４Ａ及び４１４Ｄをセキュリティ化する。セキュリティカーネル５０４はアプリケーション・プログラム５００とオペレーティング・システム５０２によるデバイス・ドライバ５０６Ａと５０６Ｄ及びこれに対応するセキュリティデバイス４１４Ａと４１４Ｄへの無許可アクセスを防止する。デバイス・ドライバ５０６Ｂと５０６Ｃは逆に「非セキュリティ」デバイス・ドライバであり、これに対応するデバイス・ハードウェア・ユニット４１４Ｂと４１４Ｃが「非セキュリティ」デバイス・ハードウェア・ユニットである。デバイス・ドライバ５０６Ｂと５０６Ｃ及びこれに対応するデバイス・ハードウェア・ユニット４１４Ｂと４１４Ｃは例えば「レガシー」デバイス・ドライバ及びデバイス・ハードウェア・ユニットである。
【００１９】
他の実施例に於いて、セキュリティカーネル５０４はオペレーティング・システム５０２の一部をなすことがあることに注意する。さらに別の実施例に於いて、セキュリティカーネル５０４、デバイス・ドライバ５０６Ａと５０６Ｄ、及び／又はデバイス・ドライバ５０６Ｂと５０６Ｃはオペレーティング・システム５０２の一部をなすことがある。
【００２０】
図５Ｂに示してあるように、セキュリティカーネル５０４はＩ／ＯＳＣＵ４１７へ結合される。詳細には後述するように、Ｉ／ＯＳＣＵ２１６はＩ／Ｏアドレス空間内のＩ／Ｏポートへのソフトウェアにより開始されたアクセスを全てモニタして、Ｉ／Ｏポートへの許可されたアクセスだけを許容する。
【００２１】
図５Ｃに示してあるように、セキュリティカーネル５０４はＣＰＵＳＣＵ４１６及びホスト・ブリッジＳＣＵ４１８に（例えば、１つ又はそれ以上のデバイス・ドライバ経由で）結合される。詳細には後述するように、ＣＰＵＳＣＵ４１６とホスト・ブリッジＳＣＵ４１８はメモリ４０６へのアクセスを制御する。ＣＰＵＳＣＵ４１６はメモリ４０６へのソフトウェアにより開始されたアクセスを全てモニタし、ホスト・ブリッジＳＣＵ４１８はメモリ４０６へのハードウェアにより開始されたアクセスを全てモニタする。セキュリティカーネル５０４によって一端構成されると、ＣＰＵＳＣＵ４１６とホスト・ブリッジＳＣＵ４１８はメモリ４０６及びＩ／Ｏ空間へ許可されたアクセスだけを許容する。一実施例に於いて、ＣＰＵＳＣＵ４１６はレジスタ空間を保護する点に注意する。
【００２２】
図６Ａは図４Ａのコンピュータ・システム４００ＡのＣＰＵ４０２の１実施例の略図である。図６Ａの実施例に於いて、ＣＰＵ４０２Ａは実行ユニット６００、メモリ管理ユニット（ＭＭＵ）６０２、キャッシュ・ユニット６０４、バス・インタフェース・ユニット（ＢＩＵ）６０６、制御レジスタ６０８のセット、セキュリティ実行モード（ＳＥＭ）レジスタ６１０のセットを含む。ＳＥＭレジスタ６１０のセットは図４Ａのコンピュータ・システム４００Ａ内部にセキュリティ実行モード（ＳＥＭ）を実装するために使用される。ＳＥＭレジスタ６１０はセキュリティカーネル５０４によってアクセスされる（すなわち書き込み及び／又は読み出しされる）。
【００２３】
図６Ａの実施例に於いて、ＳＥＭレジスタ６１０のセットはセキュリティ実行モード（ＳＥＭ）ビット６０９を含む。図４Ａのコンピュータ・システム４００Ａは例えば、（ｉ）ＣＰＵ４０２がｘ８６保護モードで動作するｘ８６プロセッサであり、（ｉｉ）メモリ・ページングが有効になっていて、かつ（ｉｉｉ）ＳＥＭビットが「１」にセットされている場合に、セキュリティ実行モード（ＳＥＭ）で動作する。ＳＥＭにおける動作やＳＥＭの他の動作を示すその他の方法も使用できる。
【００２４】
一般に、制御レジスタ６０８のセットの内容を用いてＣＰＵ４０２の動作を管理する。したがって、制御レジスタ６０８のセットの内容は実行ユニット６００、ＭＭＵ６０２、キャッシュ・ユニット６０４，及び／又はＢＩＵ６０６の動作を管理するために使用される。制御レジスタ６０８のセットは例えば、ｘ８６プロセッサ・アーキテクチャの多数の制御レジスタ群を含むことができる。
ＣＰＵ４０２の実行ユニット６００は命令（例えばｘ８６命令）とデータをフェッチし、フェッチした命令を実行し、命令実行中に信号（例えばアドレス、データ、及び制御信号）を生成する。実行ユニット６００はキャッシュ・ユニット６０４に接続されて、キャッシュ・ユニット６０４とＢＩＵ６０６経由でメモリ４０６からの命令を受信する。実行ユニット６００は実装により、標準命令、セキュリティ命令、及び／又はマイクロコードを実行できることに注意する。一実施例に於いて、ＣＰＵ４０２で実行するマイクロコードはハードウェアでありソフトウェアではない。
【００２５】
コンピュータ・システム４００Ａのメモリ４０６（例えば図４Ａ）は多数のメモリ位置（memory location）を含み、各々がユニークな物理アドレスを有する。ページングを有効にした保護モードで動作する場合、ＣＰＵ４０２のアドレス空間はページ・フレーム又は「ページ」と呼ばれる多数のブロックに分割される。他の実施例に於いて、メモリは定義が異なるメモリ領域に分割されるか又はこれを介してアクセスされる。代表的には、ページ群の一部に対応するデータだけが任意の時刻にメモリ４０６内に格納されている。
【００２６】
図６Ａの実施例に於いて、命令実行中に実行ユニット６００によって生成されたアドレス信号はセグメント化（すなわち「論理」）アドレスを表現する。ＭＭＵ６０２は実行ユニット６００によって生成されたセグメント化アドレスを、これに対応するメモリ４０６の物理アドレスへ変換する。ＭＭＵ６０２はキャッシュ・ユニット６０４へ物理アドレスを提供する。キャッシュ・ユニット６０４は比較的小さなストレージ・ユニットで、実行ユニット６００によって最近フェッチされた命令とデータを格納するために使用される。ＢＩＵ６０６はキャッシュ・ユニット６０４とホスト・ブリッジ４０４の間に結合されており、ホスト・ブリッジ４０４経由でメモリ４０６から、キャッシュ・ユニット６０４に存在しない命令とデータをフェッチするために使用される。キャッシュ・ユニット６０４の使用はオプションだがＣＰＵ４０２の大幅な動作効率化を有利に提供できる点に注意する。
【００２７】
図４Ａのコンピュータ・システム４００ＡがＳＥＭで動作する場合、セキュリティカーネル５０５はメモリ４０６に１つ又はそれ以上のセキュリティ属性データ構造（例えばテーブル）を生成し保持する。各メモリ・ページは対応するセキュリティ内容識別（ＳＣＩＤ）値を有し、対応するＳＣＩＤ値がセキュリティ属性データ構造内に格納される。ＭＭＵ６０２は命令実行中に生成したアドレス（例えば物理アドレス）を用いて１つ又はそれ以上のセキュリティ属性データ構造にアクセスし、対応するメモリ・ページのＳＣＩＤを取得する。一般に、コンピュータ・システム４００Ａはｎ個の異なるＳＣＩＤ値を有し、ここでｎはｎ≧１の整数である。
【００２８】
図４Ａのコンピュータ・システム４００ＡがＳＥＭで動作する場合、セキュリティメカニズムを侵害するソフトウェアによる各種活動がＳＥＭセキュリティ例外を発生する。ＳＥＭセキュリティ例外は、ｘ８６「SYSENTER」及び「SYSEXIT」命令が動作するのと同様の方法で、一対のレジスタ（例えばモデル固有レジスタ又はＭＳＲ）経由でディスパッチされる。一対のレジスタは「セキュリティ例外エントリ・ポイント」レジスタであり、ＳＥＭセキュリティ例外が発生した場合の命令実行の分岐目標アドレスを定義する。セキュリティ例外エントリ・ポイント・レジスタはコード・セグメント（ＣＳ）を定義し、次いでＳＥＭセキュリティ例外ハンドラ１２１０（図１２参照）へのエントリに使用する命令ポインタ（ＩＰ又は６４ビット版ＲＩＰ）、スタック・セグメント（ＳＳ）、スタック・ポインタ（ＳＰ又は６４ビット版ＲＳＰ）の値を定義する。
【００２９】
ソフトウェアによる制御下で、実行ユニット６００は直前のＳＳ、ＳＰ／ＲＳＰ、ＥＦＬＡＧＳ、ＣＳ、ＩＰ／ＲＩＰ値を新しいスタックへプッシュして例外がどこで発生したかを表示する。さらに、実行ユニット６００はエラー・コードをスタック上にプッシュする。直前のＳＳ及びＳＰ／ＲＳＰ値がいつも保存されているので普通の割り込みからの戻り（ＩＲＥＴ）命令は使用できず、またスタック・スイッチは、現在の特権レベル（ＣＰＬ）の変更が行われない場合であっても必ず遂行される。したがって、新規命令はＳＥＭセキュリティ例外ハンドラ１２１０（ＳＭＲＥＴ）からの戻り値を実行するように定義される。
【００３０】
図６Ｂは図４Ｂのコンピュータ・システム４００ＢのＣＰＵ４０２Ｂの１実施例の略図である。図６Ａの実施例に於いて、ＣＰＵ４０２Ｂは実行ユニット６００、メモリ管理ユニット（ＭＭＵ）６０２、キャッシュ・ユニット６０４、バス・インタフェース・ユニット（ＢＩＵ）６０６、制御レジスタ６０８のセット、及びセキュリティ例外モード（ＳＥＭ）レジスタ６１０のセットを含む。ＢＩＵ６０６はホスト・ブリッジ４０４（図２）へ結合されＣＰＵ４０２Ｂとホスト・ブリッジ４０４の間のインタフェースを形成する。ＢＩＵ６０６はホスト・ブリッジ４０４経由でメモリ４０４（図２）へも結合され、ＣＰＵ４０２Ｂとメモリ４０４との間のインタフェースを形成する。図６Ａの実施例に於いて、Ｉ／ＯＳＣＵ４１７はＢＩＵ６０６内に配置される。
【００３１】
ＳＥＭレジスタ６１０のセットは図４Ｂのコンピュータ・システム４００Ｂ内部でセキュリティ実行モード（ＳＥＭ）を実装するために使用され、Ｉ／ＯＳＣＵ４１７の動作はＳＥＭレジスタ６１０のセットの内容によって規制される。ＳＥＭレジスタ６１０はセキュリティカーネル５０４によりアクセス（すなわち書き込み及び／又は読み出し）される。
図６Ｂの実施例に於いて、ＳＥＭレジスタ６１０のセットはＳＥＭビット６０９を含む。図４Ｂのコンピュータ・システム４００Ｂは例えば、（ｉ）ＣＰＵ４０２Ｂがｘ８６保護モードで動作するｘ８６プロセッサであり、（ｉｉ）メモリ・ページングが有効になっていて、かつ（ｉｉｉ）ＳＥＭビットが「１」にセットしてある場合にＳＥＭで動作する。
【００３２】
一般に、制御レジスタ６０８のセットの内容がＣＰＵ４０２Ｂの動作を規制する。したがって、制御レジスタ６０８のセットの内容は、実行ユニット６００、ＭＭＵ６０２、キャッシュ・ユニット６０４、及び／又はＢＩＵ６０６の動作を規制する。制御レジスタ６０８のセットは例えばｘ８６プロセッサ・アーキテクチャの多数の制御レジスタ群を含むことができる。
【００３３】
ＣＰＵ４０２Ｂの実行ユニット６００は命令（例えばｘ８６命令）とデータをフェッチし、フェッチした命令を実行し、命令実行中に信号（例えばアドレス、データ、及び制御信号）を生成する。実行ユニット６００はキャッシュ・ユニット６０４と結合され、キャッシュ・ユニット６０４及びＢＩＵ６０６経由でメモリ４０６から命令を受信できる。
コンピュータ・システム４００Ｂのメモリ４０６は多数のメモリ位置を含み、その各々がユニークな物理アドレスを有する。ページングを有効にした保護モードで動作する場合、ＣＰＵ４０２Ｂのアドレス空間はページ・フレーム又は「ページ」と呼ばれる多数のブロックに分割される。その他のメモリ単位又は分割も企図される。ページ群の一部に対応するデータだけが任意の時刻にメモリ４０６内に格納されている。図６Ｂの実施例に於いて、命令実行中に実行ユニット６００によって生成されたアドレス信号はセグメント化された（すなわち「論理」）アドレスを表現する。ＭＭＵ６０２は実行ユニット６００によって生成されたセグメント化アドレスをメモリ４０６の対応する物理アドレスへと変換する。ＭＭＵ６０２はキャッシュ・ユニット６０４へ物理アドレスを提供する。キャッシュ・ユニット６０４は比較的小さなストレージ・ユニットで、実行ユニット６００によって最近フェッチされた命令とデータを格納するために使用される。
【００３４】
ＢＩＵ６０６はキャッシュ・ユニット６０４とホスト・ブリッジ４０４の間に結合される。ＢＩＵ６０６はホスト・ブリッジ４０４経由でメモリ４０６から、キャッシュ・ユニット６０４に存在しない命令とデータをフェッチするために使用される。ＢＩＵ６０６はＩ／ＯＳＣＵ４１７も含む。Ｉ／ＯＳＣＵ４１７はＳＥＭレジスタ６１０、実行ユニット６００、ＭＭＵ６０２へ結合される。前述したように、Ｉ／ＯＳＣＵ４１７はＩ／Ｏアドレス空間内のＩ／Ｏポートに対するソフトウェアによって開始されたアクセスを全てモニタし、Ｉ／Ｏポートへの許可されたアクセスだけを通過させる。
【００３５】
図６Ｃは図４Ｃのコンピュータ・システム４００ＣのＣＰＵ４０２Ｃの１実施例の略図である。図６Ｃの実施例に於いて、ＣＰＵ４０２Ｃは実行ユニット６００、メモリ管理ユニット（ＭＭＵ）６０２、キャッシュ・ユニット６０４、バス・インタフェース・ユニット（ＢＩＵ）６０６、制御レジスタ６０８のセット、セキュリティ実行モード（ＳＥＭ）レジスタ６１０のセットを含む。ＣＰＵＳＣＵ４１６はＭＭＵ６０２内部に配置される。
【００３６】
ＳＥＭレジスタ６１０のセットは図４Ｃのコンピュータ・システム４００Ｃ内部にＳＥＭを実装するために使用され、ＣＰＵＳＣＵ４１６とホスト・ブリッジＳＣＵ４１８の動作はＳＥＭレジスタ６１０のセットの内容によって規制される。ＳＥＭレジスタ６１０はセキュリティカーネル５０４からアクセス（すなわち書き込み及び／又は読み出し）される。図４Ｃのコンピュータ・システム４００Ｃは例えば（ｉ）ＣＰＵ４０２がｘ８６保護モードで動作するｘ８６プロセッサであり、（ｉｉ）メモリ・ページングが有効になっていて、かつ（ｉｉｉ）ＳＥＭレジスタ６１０の内容がＳＥＭ動作を指定している場合にＳＥＭで動作する。
【００３７】
図６Ｃの実施例に於いて、ＳＥＭレジスタ６１０のセットはＳＥＭビット６０９を含む。コンピュータ・システム４００Ｃの動作モードには「通常実行モード」と「セキュリティ実行モード」（ＳＥＭ）を含む。コンピュータ・システム４００Ｃは通常の場合通常実行モードで動作する。ＳＥＭレジスタ６１０のセットを使用してコンピュータ・システム４００Ｃ内部にＳＥＭを実装する。ＳＥＭレジスタ６１０はセキュリティカーネル５０４によりアクセス（すなわち書き込み及び／又は読み出し）される。コンピュータ・システム４００Ｃは例えば、（ｉ）ＣＰＵ４０２Ｃがｘ８６保護モードで動作するｘ８６プロセッサであり、（ｉｉ）メモリ・ページングが有効になっていて、かつ（ｉｉｉ）ＳＥＭビット６０９が「１」にセットしてある場合にＳＥＭで動作する。
一般に、制御レジスタ６０８のセットの内容がＣＰＵ４０２Ｃの動作を規制する。したがって、制御レジスタ６０８のセットの内容は、実行ユニット６００、ＭＭＵ６０２、キャッシュ・ユニット６０４、及び／又はＢＩＵ６０６の動作を規制する。制御レジスタ６０８のセットは例えばｘ８６プロセッサ・アーキテクチャの多数の制御レジスタ群を含むことができる。
【００３８】
ＣＰＵ４０２Ｃの実行ユニット６００は命令（例えばｘ８６命令）とデータをフェッチし、フェッチした命令を実行し、命令実行中に信号（例えばアドレス、データ、及び制御信号）を生成する。実行ユニット６００はキャッシュ・ユニット６０４と結合され、キャッシュ・ユニット６０４及びＢＩＵ６０６経由でメモリ４０６から命令を受信できる。
コンピュータ・システム４００Ｃのメモリ４０６は多数のメモリ位置を含み、その各々がユニークな物理アドレスを有する。ページングを有効にした保護モードで動作する場合、ＣＰＵ４０２のアドレス空間はページ・フレーム又は「ページ」と呼ばれる多数のブロックに分割される。その他のメモリ単位又は分割も企図される。前述したように、ページ群の一部に対応するデータだけが任意の時刻にメモリ４０６内に格納されている。図６Ｃの実施例に於いて、命令実行中に実行ユニット６００によって生成されたアドレス信号はセグメント化された（すなわち「論理」）アドレスを表現する。後述するように、ＭＭＵ６０２は実行ユニット６００によって生成されたセグメント化アドレスをメモリ４０６の対応する物理アドレスへと変換する。ＭＭＵ６０２はキャッシュ・ユニット６０４へ物理アドレスを提供する。キャッシュ・ユニット６０４は比較的小さなストレージ・ユニットで、実行ユニット６００によって最近フェッチされた命令とデータを格納するために使用される。ＢＩＵ６０６はキャッシュ・ユニット６０４とホスト・ブリッジ４０４の間に結合され、ホスト・ブリッジ４０４経由でメモリ４０６から、キャッシュ・ユニット６０４に存在しない命令とデータをフェッチするために使用される。
【００３９】
図６Ｄはコンピュータ・システム４００のＣＰＵ４０２の別の実施例の略図である。図６Ｄの実施例に於いて、ＣＰＵ４０２Ｄは、実行ユニット６００、メモリ管理ユニット（ＭＭＵ）６０２、キャッシュ・ユニット６０４、バス・インタフェース・ユニット（ＢＩＵ）６０６、制御レジスタ６０８のセット、及び図６Ａに関連して前述したセキュリティ実行モード（ＳＥＭ）レジスタ６１０のセットを含む。さらに、ＣＰＵ６０２Ｄはマイクロコード・エンジン６５０と、セキュリティチェック・コード６５４を含むマイクロコード・ストア６５２とを含む。マイクロコード・エンジン６５０は実行ユニット６００、ＭＭＵ６０２、キャッシュ・ユニット６０４、ＢＩＵ６０６、制御レジスタ６０８のセット、ＳＥＭレジスタ６１０のセットに接続されている。接続は共有バス構造として図示してあるが、その他の接続も企図される。マイクロコード・エンジン６５０はマイクロコード・ストア６５２に格納されているマイクロコード命令を実行し、実行ユニット６００、ＭＭＵ６０２、キャッシュ・ユニット６０４、及びＢＩＵ６０６の動作を制御し、またマイクロコード命令によっては、制御レジスタ６０８のセットの内容、ＳＥＭレジスタ６１０のセットの内容を制御する信号を発生する。図６Ｄの実施例に於いて、マイクロコード・ストア６５２に格納されているマイクロコード命令を実行するマイクロコード・エンジン６５０は１台又はそれ以上のＣＰＵＳＣＵ４１６とＩ／ＯＳＣＵ４１７を置き換えることができる。ｘ８６実施例に於いて、マイクロコード・エンジン６５０はｘ８６命令セットのさらに複雑な命令を実行する際に実行ユニット６００の支援もする。
【００４０】
例えば、Ｉ／Ｏ命令が実行のために実行ユニット６００へ転送された場合、実行ユニット６００はマイクロコード・エンジン６５０へＩ／Ｏ命令の存在を通知する。マイクロコード・エンジンはＭＭＵ６０２とＢＩＵ６０６へ信号を発行する。マイクロコード・エンジン６５０からの信号に応答して、ＭＭＵ６０２はＢＩＵ６０６へのＩ／Ｏ命令を含むメモリ・ページのセキュリティ内容識別（ＳＣＩＤ）値を提供する。実行ユニット６００はＩ／Ｏ命令によってアクセスされたＩ／Ｏポート番号をＢＩＵ６０６へ提供する。
【００４１】
マイクロコード・エンジン６５０からの信号に応答して、ＢＩＵ６０６はセキュリティ内用識別（ＳＣＩＤ）値と受信したＩ／Ｏポート番号とを用いてＳＥＭＩ／Ｏ許可（permission）ビットマップ２２００、２３００（図２２及び図２３参照）へアクセスし、ＳＥＭＩ／Ｏ許可ビットマップ２２００，２３００から対応するビットをマイクロコード・エンジン６５０へ提供する。ＳＥＭＩ／Ｏ許可ビットマップ２２００，２３００からの対応するビットが「０」にクリアされている場合、マイクロコード・エンジン６５０はＩ／Ｏ命令の実行完了に於いて実行ユニット６００を支援し続けることができる。他方対応するビットが「１」にセットされている場合、マイクロコード・エンジン６５０は実行ユニット６００に信号を送ってＩ／Ｏ命令の実行を停止させ、ＳＥＭ例外ハンドラ１２１０の命令実行を開始させる。
また実行ユニット６００は標準命令、セキュリティ命令、及び／又はマイクロコードを実装により実行できることに注意する。つまり、一実施例に於いて、実行ユニット６００とマイクロコード・エンジン６５０の双方がマイクロコードを実行する。
【００４２】
図７は例えばｘ８６実施例を説明した図６Ｃなどに図示してある、ＭＭＵ６０２の１実施例の略図である。図７の実施例に於いて、ＭＭＵ６０２はセグメンテーション・ユニット７００、ページング・ユニット７０２、セグメンテーション・ユニット７００とページング・ユニット７０２の出力間で選択を行って物理アドレスを作成するための選択論理７０４とを含む。図７に図示してあるように、セグメンテーション・ユニット７００は実行ユニット６００からセグメント化アドレスを受信し、ｘ８６プロセッサ・アーキテクチャにあるセグメント化アドレスからリニア・アドレスへの周知の変換メカニズムを使用して、出力に対応するリニア・アドレスを発生する。図７に図示してあるように、「PAGING」信号によって有効にされた場合、ページング・ユニット７０２はセグメンテーション・ユニット７００によって作成されたリニア・アドレスを受信してこれに対応する物理アドレスを出力に発生する。PAGING信号はｘ８６プロセッサ・アーキテクチャの制御レジスタ０（CR0）と制御レジスタ６０８とにあるページング・フラグ（PG）ビットをミラーする。PAGING信号が停止された場合、メモリのページングは有効でなくなり、選択論理７０４は物理アドレスとしてセグメンテーション・ユニット７００から受信したリニア・アドレスを発生する。
【００４３】
PAGING信号が発行されると、メモリのページングが有効になり、ページング・ユニット７０２は、ｘ８６プロセッサ・アーキテクチャのリニア・アドレスから物理アドレスへの変換メカニズムを使用して、セグメンテーション・ユニット７００から受信したリニア・アドレスをこれに対応する物理アドレスに変換する。リニア・アドレスから物理アドレスへの変換演算中に、選択したページ・ディレクトリ・エントリと選択したページ・テーブル・エントリとにあるＵ／Ｓビットの内容が論理積（AND）され、あるページ・フレームへのアクセスが許可されるかどうかかを決定する。同様に、選択したページ・ディレクトリ・エントリと選択したページ・テーブル・エントリとにあるＲ／Ｗビットの内容が論理積（AND）されて、ページ・フレームへのアクセスが許可されるかどうかを決定する。Ｕ／ＳビットとＲ／Ｗビットの論理的組合せで、ページ・フレームへのアクセスが許可されることを示している場合、ページング・ユニット７０２はリニア・アドレスから物理アドレスへの変換演算によって得られた物理アドレスを発生する。選択論理７０４はページング・ユニット７０２が発生した物理アドレスを受信し、物理アドレスとしてページング・ユニット７０２から受信した物理アドレスを発生し、物理アドレスをキャッシュ・ユニット６０４へ提供する。
【００４４】
他方、Ｕ／ＳビットとＲ／Ｗビットの論理的組合せで、ページ・フレームへのアクセスが許可されないことを示している場合、ページング・ユニット７０２はリニア・アドレスから物理アドレスへの変換演算中に物理アドレスを発生しない。その代わり、ページング・ユニット７０２はページ・フォールト（ＰＦ）信号を発行し、ＭＭＵ６０２がＰＦ信号を実行ユニット６００へ転送する。ＰＦ信号に応答して、実行ユニット６００は例外ハンドラ・ルーチンを実行し、最終的にＰＦ信号が発行された時点で実行されているアプリケーション・プログラム５００の一つの動作を最終的に停止させる。
【００４５】
図７の実施例に於いて、ＣＰＵＳＣＵ４１６はＭＭＵ６０２のページング・ユニット７０２内部に配置されている。ページング・ユニット７０２は最近決定された比較的少数のリニア・アドレスから物理アドレスへの変換を格納するための変換ルックアサイド・バッファ（TLB）も含んでいる。
【００４６】
図８Ａは図４のＩ／ＯＳＣＵ５１５の１実施例を示す略図である。図８Ａの実施例に於いて、Ｉ／ＯＳＣＵ４１７はセキュリティチェック論理８００Ａを含む。セキュリティチェック論理８００Ａは「イネーブル（ENABLE）」信号とＩ／Ｏポート番号とをコンピュータ・システム４００から受信し、またＭＭＵ６０２からＳＣＩＤ値を受信する。実行ユニット６００はＩ／Ｏアドレス空間内の「目標」Ｉ／ＯポートにアクセスするＩ／Ｏ命令を実行する前にイネーブル信号を発行する。Ｉ／Ｏポート番号は目標Ｉ／Ｏポートの番号である。ＳＣＩＤ値はＩ／Ｏ命令を含むメモリ・ページのセキュリティ内容レベルを表す。
【００４７】
コンピュータ・システムがＳＥＭで動作する場合、セキュリティカーネル５０４はメモリ４０６に１つ又はそれ以上のセキュリティ属性データ構造（例えばテーブル）を生成して保持する。各メモリ・ページはこれに対応するＳＣＩＤ値を有し、対応するＳＣＩＤ値はセキュリティ属性データ構造内に格納される。ＭＭＵ６０２は命令実行中に生成されたアドレスを使用して（例えば物理アドレス）、該１つ又はそれ以上のセキュリティ属性データ構造へアクセスし、対応するメモリ・ページのＳＣＩＤを取得する。一般に、コンピュータ・システム４００はｎ個の異なるＳＣＩＤ値を有しており、ここでｎはｎ≧１の整数である。
【００４８】
コンピュータ・システム４００がＳＥＭで動作している場合、セキュリティカーネル５０４もメモリ４０６内にＳＥＭ Ｉ／Ｏ許可（permission）ビットマップ２２００、２３００（例えば図２２〜２３）を生成して保持する。実行ユニット６００があるタスクのＩ／Ｏ命令を実行する場合、ＣＰＵ４０２Ｂ内部の論理が最初にタスクのＣＰＬをＩ／Ｏ特権レベル（ＩＯＰＬ）と比較する。タスクのＣＰＬが少なくともＩＯＰＬと同じ特権レベルである（すなわち数値的には小さいか等しい）場合、ＣＰＵ４０２Ｂ内部の論理はＳＥＭＩ／Ｏ許可ビットマップ２２００，２３００をチェックする。他方、タスクのＣＰＬがＩＯＰＬと同等の特権にない（すなわち数値的には大きい）場合、実行ユニット６００はＩ／Ｏ命令を実行しないことになる。一実施例に於いて、一般保護フォールト（ＧＰＦ）が発生する。
【００４９】
実行ユニット６００がイネーブル信号を発行した場合、セキュリティチェック論理８００Ａはイネーブル信号と、受信したＳＣＩＤ値と、受信したＩ／Ｏポート番号とをＢＩＵ４０６内の論理へ提供する。ＢＩＵ４０６内部の論理はＳＣＩＤ値と受信したＩ／Ｏポート番号とを使用してＳＥＭＩ／Ｏ許可ビットマップ２２００，２３００へアクセスし、ＳＥＭＩ／Ｏ許可ビットマップ２２００，２３００からの対応するビットをセキュリティチェック論理８００Ａへ提供する。ＳＥＭＩ／Ｏ許可ビットマップ２２００，２３００からの対応するビットが「０」にクリアされている場合、セキュリティチェック論理８００Ａは実行ユニット６００へ提供される出力「実行（EXECUTE）」信号を発行する。発行されたEXECUTE信号に応答して、実行ユニット６００はＩ／Ｏ命令を実行する。他方で、対応するビットが「１」にセットされている場合には、セキュリティチェック論理８００Ａは実行ユニット６００へ提供される出力「SEM SECURITY EXCEPTION」信号を発行する。発行されたSEM SECURITY EXCEPTION信号に応答して、実行ユニット６００はＩ／Ｏ命令を実行せず、その代わりにＳＥＭ例外ハンドラを実行する（以下を参照）。
Ｉ／Ｏ命令が１６ビット・ワードＩ／Ｏポート又は３２ビット・ダブルワードＩ／Ｏポートへのアクセスを試みる場合、実行ユニット６００は多バイトＩ／Ｏポート番号をセキュリティチェック論理８００Ａに連続して提供する。セキュリティチェック論理８００ＡがバイトＩ／Ｏポート番号の各々についてEXECUTE信号を発行する場合、実行ユニット６００はＩ／Ｏ命令を実行できる。他方で、セキュリティチェック論理８００ＡがバイトＩ／Ｏポート番号の１つ又はそれ以上についてSEM SECURITY EXCEPTIONを発行する場合、実行ユニット６００はＩ／Ｏ命令を実行せず、その代わりとしてＳＥＭ例外ハンドラを実行する。
【００５０】
図８ＢはＣＰＵＳＣＵ４１６の１実施例の略図である。図８Ｂの実施例に於いて、ＣＰＵＳＣＵ４１７はＳＥＭレジスタ６１０のセットに接続されたセキュリティチェック論理８００Ｂとセキュリティ属性テーブル（ＳＡＴ）エントリ・バッファ８０２とを含む。ＳＡＴエントリ１２２５（図１２参照）はページ・ディレクトリのＵ／Ｓ及びＲ／Ｗビットとメモリ・ページに対応するページ・テーブル・エントリ上に追加のセキュリティ情報を含む。セキュリティチェック論理８００ＢはＳＡＴエントリ１２２５の任意の一つの内部に格納された追加セキュリティ情報を使用して、対応するメモリ・ページへの無許可のソフトウェアが開始したアクセスを防止する。ＳＡＴエントリ・バッファ８０２は最近アクセスしたメモリ・ページの比較的少数のＳＡＴエントリ１２２５を格納するために使用される。
前述したように、ＳＥＭレジスタ６１０のセットはコンピュータ・システム４００内部にＳＥＭを実装するために使用できる。ＳＥＭレジスタ６１０のセットの内容はＩ／ＯＳＣＵ４１７の動作を規制する。セキュリティチェック論理８００Ｂは図８Ｂに図示してある通信バスを経由してＭＭＵ６０２からＳＡＴエントリ・バッファ８０２に格納されるべき情報を受信する。セキュリティチェック論理８００Ｂは又ページング・ユニットによって発生した物理アドレスも受信する。
【００５１】
図９は、ＳＥＭセキュリティ例外を処理するために使用される、セキュリティモードＳＭＣＡＬＬ／ＳＭＲＥＴ目標アドレス・レジスタ（ＳＭＳＴＡＲ）９００とセキュリティモードＧＳベース（ＳＭＧＳＢＡＳＥ）レジスタ９０２の略図である。
セキュリティ上の理由から、ＳＥＭセキュリティ例外メカニズムは、ＳＥＭセキュリティ例外が発生した場合、いずれかのロード制御レジスタ又はデータ構造を頼ることができずＳＥＭ例外ハンドラ及びスタックのアドレスを提供することができない。
ＳＭＳＴＡＲレジスタ９００は「ＳＭＲＥＴ  ＣＳセレクタ及びＳＳセレクタ・ベース」フィールド、「ＳＭＣＡＬＬ  ＣＳセレクタ及びＳＳセレクタ・ベース」フィールド、「目標ＥＩＰアドレス」フィールドを含む。ＳＭＧＳＢＡＳＥレジスタ９０２はセキュリティモードＧＳベースアドレスを含む。ＳＭＳＴＡＲレジスタ９００とＳＭＧＳＢＡＳＥレジスタ９０２に格納される値は代表的にはブート時にセットされる。
【００５２】
図１０ＡはＳＥＭ例外が発生した場合にオペレーティング・システム５０２によって生成されたＳＥＭ例外スタック・フレーム１０００の１実施例の略図である。ＳＥＭ例外スタック・フレーム１０００はGS[00h]で始まる。
エラー・コードはＳＥＭ例外スタック・フレーム１０００内でGS[00h]にある。フォールトを発生したアプリケーションの命令ポインタ（ＥＩＰ）の内容はＳＥＭ例外スタック・フレーム１０００内のGS[04h]にある。フォールトを発生したアプリケーションのコード・セグメント（ＣＳ）レジスタの内容はＳＥＭ例外スタック・フレーム１０００内のGS[08h]にある。フォールトを発生したアプリケーションのフラグ（ＥＦＬＡＧＳ）レジスタの内容はＳＥＭ例外スタック・フレーム１０００内のGS[0Ch]にある。フォールトを発生したアプリケーションのスタック・ポインタ（ＥＳＰ）レジスタの内容はＳＥＭ例外スタック・フレーム１０００内のGS[10h]にある。フォールトを発生したアプリケーションのスタック・セグメント（ＳＳ）レジスタの内容はＳＥＭ例外スタック・フレーム１０００内のGS[14h]にある。
図１０Ｂは図１０ＡのＳＥＭ例外スタック・フレーム１０００のエラー・コードの代表的フォーマット１０１０の略図である。図１０Ｂの実施例に於いて、エラー・コード・フォーマットはライト／リード（Ｗ／Ｒ）ビット、ユーザ／スーパーバイザ（Ｕ／Ｓ）ビット、モデル固有レジスタ（ＭＳＲ）ビット、システム管理割り込み（ＳＭＩ）ビットを含む。ＳＥＭセキュリティ例外が書き込み演算中に発生した場合にはライト／リード（Ｗ／Ｒ）ビットが「１」になり、ＳＥＭセキュリティ例外が読み出し又は実行演算中に発生した場合には「０」になる。ユーザ／スーパーバイザ（Ｕ／Ｓ）ビットは、セキュリティ例外モード（ＳＥＭ）例外がユーザ・モード（ＣＰＬ＝３）で発生した場合に「１」になり、ＳＥＭセキュリティ例外がスーパーバイザ・モード（ＣＰＬ＝０）で発生した場合に「０」になる。
【００５３】
モデル固有レジスタ（ＭＳＲ）ビットはＳＥＭセキュリティ例外がセキュリティモデル固有レジスタ（ＭＳＲ）へのアクセス試行中に発生した場合「１」となり、ＳＥＭセキュリティ例外がセキュリティＭＳＲへのアクセス試行中に発生しなかった場合に「０」となる。システム管理割り込み（ＳＭＩ）ビットはＳＥＭセキュリティ例外がシステム管理割り込み（ＳＭＩ）の間に発生した場合「１」となり、ＳＥＭセキュリティ例外がＳＭＩの間に発生しなかった場合「０」となる。
図１１は本発明の一つの態様によるＳＥＭセキュリティ例外を処理する方法１１００の実施例のフローチャートを示す。方法１１００はブロック１１０５で、ハードウェア経由又はソフトウェア経由いずれかで、例えばＳＭＣＡＬＬ命令経由で、ＳＥＭセキュリティ例外を生成するステップを含む。方法１１００はブロック１１１０に於いてベース・アドレスにオフセットを加えた位置にＳＥＭスタック・フレーム１０００を作成するステップを含む。セキュリティモードＧＳベースアドレスはＳＭＧＳＢＡＳＥレジスタ９０２から読み出される。ＳＥＭスタック・ポインタはセキュリティモードＧＳベースアドレスからＳＥＭスタック・フレーム内のバイト数だけオフセットして形成される。ＳＥＭ例外スタック・フレーム１０００はＳＭＧＳＢＡＳＥレジスタ９０２に格納されたセキュリティモードＧＳベースアドレスによって示されている位置にエラー・コードがあるようにメモリ内に書き込まれる。ＳＥＭセキュリティ例外のエラー・コードはＳＥＭ例外ハードウェアによって生成される。ＳＥＭセキュリティ例外それ自体はオペレーティング・システム５０２によって、デバイス・ドライバ・コード５０６によって、アプリケーション・コード５００によって、などで生成される。フォールトを発生したコード・セグメント値は図１０Ａに図示してあるようにＧＳ空間内に書き込まれる。
【００５４】
方法１１００は次に、ブロック１１１５で、目標ＥＩＰアドレスとＳＭＣＡＬＬ  ＣＳ及びＳＳセレクタの値をＳＭＳＴＡＲレジスタ９００から読み出して、目標ＥＩＰアドレスとＳＭＣＡＬＬ  ＣＳ及びＳＳセレクタ値を適当なレジスタに書き込む。目標ＥＩＰアドレスはＥＩＰレジスタ内にロードされる。ＣＳセレクタ値はＣＳレジスタにロードされ、ＳＳセレクタ値はＳＳレジスタにロードされる。ＳＳセレクタ・アドレスはＣＳセレクタ・アドレスから派生できる。目標ＥＩＰアドレスはＳＥＭセキュリティ例外ハンドラ・コードの最初の命令を示す。
方法１１００は、ブロック１１２０でＳＷＡＰＧＳ命令も実行する。ＳＷＡＰＧＳ命令の実行でＣＰＵ４０２内にキャッシュされているＧＳセグメント・デスクリプタのベース・アドレスとＳＭＧＳＢＡＳＥレジスタ９０２の内容とを入れ換える。後続のＳＥＭセキュリティ例外ハンドラ命令は、ＧＳ空間移動のみアドレシングを使用することで、ＳＥＭ例外スタック・フレーム１０００と、ＳＥＭ例外スタック・フレーム１０００より上又は下のメモリへアクセスできる。ＧＳ空間アドレシングはＳＥＭセキュリティ例外ハンドラにセキュリティメモリを提供する。
セキュリティカーネル５０４のＳＥＭセキュリティ例外ハンドラは、例えばＳＥＭレジスタ６１０に格納されている又は本明細書で説明するその他のセキュリティ化手段など、セキュリティビットによって保護された数ページの仮想メモリを含む。ＳＥＭセキュリティ例外ハンドラは例えばＳＥＭレジスタ６１０に格納されている又は本明細書で説明するその他のセキュリティ化手段などのセキュリティビットによって保護された数ページの保護物理メモリを含む。
【００５５】
方法１１００は次にブロック１１２０でエラー・コードをパースする。エラーコード・ビットは、一度に一つづつ、ＳＥＭセキュリティ例外の発生源が決定されるように、パースされる。随意に、方法１１００はＳＥＭセキュリティ例外が発生する前に実行されたか実行の準備がなされた１つ又はそれ以上の命令を、ブロック１１３０でデコードする。特定の命令とそのオペランドがＳＥＭセキュリティ例外の発生源についての付加情報を提供できる。方法１１００はブロック１１３５でエラー・コードに基づいて、また可能ならＳＥＭセキュリティ例外の生成の原因となった命令に先行する又はその後続の命令に基づいてＳＥＭセキュリティ例外を評価する。ブロック１１３５の評価は参照テーブルを参照すること、又はセキュリティアルゴリズムを実行することを含む。参照テーブルは１つ又はそれ以上のエラー・コード、１ビット又はそれ以上のエラー・コード、及び１つ又はそれ以上の特定命令及び／又はそのオペランドによってインデックス化される。セキュリティアルゴリズムはセキュリティカーネル５０４によって実行されるコードツリーを含む。参照テーブルとセキュリティアルゴリズムの両方が正確なハードウェア３１０その他についてとコンピュータ・システム３００に実装されたオペレーティング・システム４０２について判定する。
ブロック１１３５で方法１１００がＳＥＭセキュリティ例外を評価すると、方法１１００はブロック１１４０で必要に応じてその評価に基づいて機能する。ＳＥＭセキュリティ例外は無視され演算を再開することがある。フォールトを発生した命令又はコード・セグメントが無視されることがある。フォールトを発生した命令又はコード・セグメントが内包されフォールトを発生した命令又はコード・セグメントが仮想メモリ又はＩ／Ｏ空間内でプロキシによって実行されるようにする。
【００５６】
方法１１００はブロック１１４５でＳＥＭセキュリティ例外前の構成へコンピュータ・システム３００をほぼ復元する。ＳＥＭセキュリティ例外ハンドラが終了した場合、ブロック１１５０で、別のＳＷＡＰＧＳ命令が実行されてセキュリティモード・ベースアドレス値を本来の値に戻し、またＳＭＲＥＴ命令が実行されて直前のオペレーティングモードに復帰する。ＳＷＡＰＧＳ命令を実行する際、セキュリティカーネル５０４はフォールトを発生したコードのコード・セグメント（ＣＳ）の値をＳＭＳＴＡＲレジスタ９００のＳＭＲＥＴ  ＣＳセレクタ及びＳＳセレクタ・ベース・フィールドに書き込む。ＳＭＲＥＴ命令はシステム３００を通常モードに戻す。ＳＹＳＲＥＴ命令とは異なり、ＳＭＲＥＴ命令はＣＰＬを０のままにしておき、ＥＦＬＡＧＳ.ＩＦビットをセットしない。
１実施例において、方法１１００のブロック１１０５〜１１１５は主としてハードウェアで実行されるが、ブロック１１２０〜１１４５は主としてソフトウェアで実行されることに注意する。別の実施例において、方法１１００は主としてソフトウェアで実行される。さらに別の実施例において、方法１１００は主としてハードウェアで実行される。一実施例に於いて、ＥＩＰアドレスはＳＥＭセキュリティ例外の原因となったかも知れない命令を回避するように変更される。
【００５７】
もう一度図８Ｂを参照すると、コンピュータ・システム３００がＳＥＭで動作している場合、セキュリティチェック論理８００Ｂが現在実行しているタスク（すなわち現在実行している命令）のＣＰＬを受信し、これと同時に通常の制御ビットと、物理アドレスが内部に存在する選択されたメモリ・ページに関連した１つ又はそれ以上のＳＥＭビット５０９を受信する。セキュリティチェック論理８００Ｂは異常の情報を用いてメモリ４０６のその部分へのアクセスが許可されているかを判定する。
ＣＰＵ４０２はｘ８６プロセッサであり、ｘ８６プロセッサ・アーキテクチャの１６ビット・セグメント・レジスタの一つであるコード・セグメント（ＣＳ）レジスタを含む。各セグメント・レジスタはセグメントと呼ばれる６４ｋブロックのメモリを選択する。ページングを有効にした保護モードに於いて、ＣＳレジスタはメモリ４０６の実行可能セグメントを表すセグメント・セレクタによってロードされる。セグメント・セレクタの最高次（すなわち最上位）ビットはＣＰＵ４０２の実行ユニット６００によって実行されるべき次の命令を含むメモリのセグメントを表示する情報を格納するために使用される。命令ポインタ（ＩＰ）レジスタはコード・セグメント（CS）レジスタによって示されたセグメントへのオフセットを格納するために使用される。ＣＳ：ＩＰペアは次の命令のセグメント化アドレスを表示する。ＣＳレジスタの最低次（すなわち最下位）２ビットは実行ユニット６００によって現在実行されているタスクのＣＰＬ（すなわち現在のタスクのＣＰＬ）を表す値を格納するために使用される。
【００５８】
ＣＰＵＳＣＵ４１６のセキュリティチェック論理８００Ｂはページ・フォールト（「ＰＦ」）信号と「SEM SECURITY EXCEPTION」信号を発生し、ＰＦ及びSEM SECURITY EXCEPTION信号をページング・ユニット７０２内部の論理へ提供する。セキュリティチェック論理８００ＢがＰＦ信号を発行した場合、ＭＭＵ６０２はＰＦ信号を実行ユニット６００へ転送する。ＰＦ信号に応答して、実行ユニット６００はｘ８６プロセッサ・アーキテクチャの周知の割り込みデスクリプタ・テーブル（ＩＤＴ）ベクトル化メカニズムを使用してＰＦハンドラ・ルーチンにアクセスし実行する。
セキュリティチェック論理８００ＢがSEM SECURITY EXCEPTION信号を発行した場合、ＭＭＵ６０２はSEM SECURITY EXCEPTION信号を実行ユニット６００へ転送する。ｘ８６プロセッサ・アーキテクチャのＩＤＴベクトル化メカニズムを使用する通常のプロセッサ例外とは異なり、別のベクトル化方法を用いてＳＥＭセキュリティ例外を処理する。ＳＥＭセキュリティ例外はｘ８６「SYSENTER」及び「SYSEXIT」命令が動作する方法と同様に一対のレジスタ（例えばＭＳＲ）を介して配当される。レジスタ対は「セキュリティ例外エントリ・ポイント」レジスタで、ＳＥＭセキュリティ例外が発生した場合の命令実行の分岐目標アドレスを定義する。
【００５９】
セキュリティ例外エントリ・ポイント・レジスタは、ＳＥＭセキュリティ例外ハンドラへのエントリに使用するコード・セグメント（ＣＳ）、次いで命令ポインタ（ＥＩＰ、又は６４ビット版ＲＩＰ）、スタック・セグメント（ＳＳ）、さらにスタック・ポインタ（ＥＳＰ、又は６４ビット版ＲＳＰ）値を定義する。実行ユニット６００は直前のＳＳ、ＥＳＰ／ＲＳＰ、ＥＦＬＡＧＳ、ＣＳ、ＥＩＰ／ＲＩＰ値を新しいスタックへプッシュしてＳＥＭセキュリティ例外が発生した場所を表示する。さらに、実行ユニット６００はエラー・コードをスタックへプッシュする。前述したように、直前のＳＳ及びＥＳＰ／ＲＳＰ値が保存されているのでＩＲＥＴ命令は使用されず、ＣＰＬの変更が発生しない場合でもスタック・スイッチが完了する。ＳＥＭセキュリティ例外ハンドラからの戻りはＳＭＲＥＴ命令を経由する。
【００６０】
図１２は本発明の各種態様によるコンピュータ・システム内でセキュリティを維持するための各種実施例を含む略図１２００を示す。図１２に図示してあるように、オペレーティング・システムはセキュリティカーネル５０４を含む。セキュリティカーネル５０４はＳＥＭセキュリティ例外ハンドラ１２１０及び／又はページ管理ルーチン１２１５を含む。セキュリティカーネル５０４はＳＥＭセキュリティ例外１２０５を受信する。セキュリティカーネル５０４は１つ又はそれ以上の信号１２５５経由で現在のＣＰＵ状態１２３０を伝送する１つ又はそれ以上の値を受信する。セキュリティカーネル５０４は又当該１つ又はそれ以上の信号１２５５によって現在のＣＰＵ状態１２３０を変更することもできる。ＣＰＵ状態１２３０は制御レジスタ１２３５とＭＳＲ１２４０に格納された値から決定される。値はＣＲ３制御レジスタ１２４２、ＣＰＬ１２４４、ＳＥＭイネーブル・ビット１２４６に格納された値を含む。
その他の値も、例えばページングをオン／オフするＣＲ０、拡張機能レジスタ、又は拡張アドレシングのためのページアドレス拡張モード・レジスタなどが含まれるものとして企図している。図示した値１２４２，１２４４，１２４６の１つ又はそれ以上を希望に応じて除外することもできる。セキュリティカーネル５０４はＣＰＵ状態１２３０、仮想メモリ構成１２２０、セキュリティ属性エントリ１２２５の１つ又はそれ以上からのセキュリティ値及び信号１２５０を受信する。セキュリティ値１２５０Ａはセキュリティカーネル５０４と仮想メモリ構成１２２０との間に図示してある。セキュリティ値１２５０Ｂはセキュリティカーネル５０４とセキュリティ属性エントリ１２２５との間に図示してある。セキュリティ値１２５０Ｃはセキュリティカーネル５０４とＣＰＵ状態１２３０との間に図示してある。
【００６１】
一実施例に於いて、仮想メモリ構成１２２０はページ管理ルーチン１２１５経由でセキュリティカーネル５０４によって１２５０Ａ経由でモニタされメモリ４０６へのアクセスのセキュリティ性を維持している。ＣＰＵ状態１２３０もセキュリティカーネル５０４によってモニタされ、適切なセキュリティがページ管理ルーチン１２１５によって適用されるようになっている。仮想メモリ構成１２２０も１２５０Ａ経由でページ管理ルーチン１２１５によって変更される。ページ管理ルーチン１２１５はオペレーティング・システム５０２の一部を構成する。ページ管理ルーチン１２１５もＳＥＭセキュリティ例外ハンドラ１２１０を用いて仮想メモリ構成１２２０への変更を監視している。
一実施例に於いて、セキュリティ属性エントリ１２２５は１２５０Ｂ経由でセキュリティカーネル５０４によりモニタされる。メモリ位置へのアクセス試行によりＳＥＭセキュリティ例外ハンドラ１２１０に対してＳＥＭセキュリティ例外１２０５を生成し、ＣＰＵ状態１２３０のＳＥＭへの変更を惹起する。メモリ位置へのアクセスはセキュリティ属性エントリ１２２５の関連する一つにより許可されるか又は拒否される。セキュリティ属性エントリ１２２５はメモリ４０６内の保護されたページにある。
一実施例において、ＣＰＵ状態１２３０は１２５０Ｃ経由でセキュリティカーネル５０４によりモニタされる。本実施例はモード依存である。メモリ位置へのアクセス試行によりＳＥＭセキュリティ例外ハンドラ１２１０に対してＳＥＭセキュリティ例外１２０５を生成する。メモリ位置へのアクセスはアクセスを試みた時点でのＣＰＵ状態１２３０にしたがって許可されるか又は拒否される。
【００６２】
ＣＰＵ４０２内部にある汎用レジスタ（図示していない）の内容はどの時点でも利用可能である。一実施例において、制御レジスタ１２３５へのアクセスはセキュリティビット、例えば制御レジスタ１２３５のＴＸ（信頼実行）ビット又はＭＳＲ１２４０のＳＩＥ（セキュリティ命令）ビットなどの値に結びつけられている。同様に、ＭＳＲ１２４０へのアクセスもセキュリティビットの値に結びつけられている。セキュリティビットがセットされていない場合には、セキュリティ感知制御レジスタ１２３５及びＭＳＲ１２４０への変更を試みることでＳＥＭセキュリティ例外１２０５となる。別の実施例において、実行ページ値が制御レジスタ１２３５へのアクセスを制御する。
セキュリティモード例えばＳＥＭから非セキュリティモード例えば通常モードへの移行で幾つかのレジスタの内容がクリアされる。メモリ内容は不変のままだが、幾つかのメモリアドレスは以後読み出しできなくなる。セキュリティ性を強化するため仮想メモリ構成１２２０を使用している場合、ＣＲ３レジスタ１２４２の内容が再ロードされる。これにより信頼コードで使用されている仮想メモリ構成１２２０とは異なる非信頼コードに仮想メモリ構成１２２０を提供する。セキュリティ属性エントリ１２２５を使用している場合には、セキュリティページに関連したエントリはページ・テーブル内で保護されているようにマークされ、ＣＰＵ状態１２３０がセキュリティ（又は保護）モードにならない限りアクセスできなくなる。セキュリティ性を強化するためＣＰＵ状態１２３０を使用している場合、ＣＰＵ状態１２３０は保護メモリへのアクセスが許容される前にセキュリティモードには入らなければならない。
一実施例において、ＳＥＭにおけるセキュリティカーネル５０４はページ管理ルーチン１２１５を実装することにより仮想メモリ構成１２２０に対する保護を提供できる。この保護には最小限のハードウェアを必要とし主として最高特権（ＳＣＩＤ）レベルで実行されるソフトウェアで実現される。
【００６３】
ＳＥＭはページングが有効になっている保護モード環境に適用可能である。不正な又は撹乱したリニアから物理へのマッピングを作成することによりＳＥＭに対する攻撃を防止するには、ページング構造体と制御レジスタ１２３５及び／又はページングに関連したＭＳＲ１２４０例えばＣＲ３１２４２を不正な変更から保護する必要がある。
仮想メモリ構成１２２０、セキュリティ属性エントリ１２２５、ＣＰＵ状態１２３０の、図１２において説明したメカニズムの一つを用いて強化したセキュリティ性は残りのメカニズムに対して排他的である。他の実施例に於いて、これらのメカニズムのうちの二つ又はそれ以上を協動して動作させることができる。
【００６４】
ここで図１３〜図１５を使ってメモリ・ページの追加セキュリティ情報が図４Ａ〜図４Ｃのコンピュータ・システム４００内部で使用されるアドレス変換メカニズムを使用してどのように選択されるかを説明する。図１３は選択されたメモリ・ページについてＳＡＴエントリ１２２５の関連する一つにアクセスすることで選択されたメモリ・ページの追加セキュリティ情報を取得するためのメカニズム１３００の１実施例の略図である。図１３のメカニズム１３００は図８Ａ〜図８Ｂのセキュリティチェック論理８００内部に実現され、図４Ａ〜図４Ｃのコンピュータ・システム４００のいずれかがＳＥＭで動作している場合に実装し得る。メカニズム１３００には、ｘ８６アドレス変換メカニズムを使用してページング・メカニズム７０２によって発生した物理アドレス１３０２、ＳＡＴディレクトリ１３０４、ＳＡＴ１３０６を含む多数のＳＡＴ、及びＳＥＭレジスタ６１０のセットのＳＡＴベースアドレス・レジスタ１３０８が関係する。ＳＡＴディレクトリ１０４及びＳＡＴ１３０６を含む多数のＳＡＴはセキュリティカーネル５０４によって作成維持されるＳＥＭデータ構造である。後述するようにＳＡＴディレクトリ１３０４（存在する場合）といずれかの必要とされるＳＡＴ１３０６が、アクセスを受ける前にメモリ４０６にコピーされる。
【００６５】
ＳＡＴベースアドレス・レジスタ１３０８はＳＡＴベースアドレス・レジスタ１３０８内部の有効なＳＡＴディレクトリ・ベースアドレスの存在を表す存在（Ｐ）ビットを含む。ＳＡＴベースアドレス・レジスタ１３０８の最高次（すなわち最上位）ビット群はＳＡＴディレクトリ・ベースアドレスに予約されている。ＳＡＴディレクトリ・ベースアドレスはＳＡＴディレクトリ１３０４を含むメモリ・ページのベース・アドレスである。Ｐ＝１の場合、ＳＡＴディレクトリ・ベースアドレスが有効であり、ＳＡＴテーブル１３０６はメモリ・ページのセキュリティ属性を指定する。Ｐ＝０の場合、ＳＡＴディレクトリ・ベースアドレスは有効ではないので、ＳＡＴテーブルは存在せず、メモリ・ページのセキュリティ属性はＳＡＴデフォルト・レジスタによって決定される。
【００６６】
図１４ＡはＳＡＴデフォルト・レジスタ１４００の１実施例の略図である。図１４Ａの実施例に於いて、ＳＡＴデフォルト・レジスタ１４００はセキュリティページ（ＳＰ）ビットを含む。ＳＰビットは全メモリ・ページがセキュリティページ稼働かを示す。例えば、ＳＰ＝０の場合全メモリ・ページはセキュリティページではなく、ＳＰ＝１の場合全メモリ・ページがセキュリティページである。
ここで図１３を参照しＳＡＴベースアドレス・レジスタ１３０８のＰビットが「１」であると仮定すると、ページング論理７０２によって発生した物理アドレス１３０２は、選択されたメモリ・ページについてのＳＡＴエントリ１２２５の関連する一つにアクセスするための３つの部分に分割される。前述したように、ＳＡＴベースアドレス・レジスタ１３０８のＳＡＴディレクトリ・ベースアドレスはＳＡＴディレクトリ１３０４を含むメモリ・ページのベース・アドレスである。ＳＡＴディレクトリ１３０４は、ＳＡＴディレクトリ・エントリ１３１２を含めた多数のＳＡＴディレクトリ・エントリを含む。各ＳＡＴディレクトリ・エントリはこれに対応するＳＡＴをメモリ４０６内に保持する。物理アドレス１３０２の最高次又は最上位ビット群を含む物理アドレス１３０２の「上部」はＳＡＴディレクトリ１３０４へのインデックスとして使用される。ＳＡＴディレクトリ・エントリ１３１２はＳＡＴベースアドレス・レジスタ１３０８のＳＡＴディレクトリ・ベースアドレスと物理アドレス１３０２の上部とを使用してＳＡＴディレクトリ３０４内部から選択される。
【００６７】
図１４ＢはＳＡＴディレクトリ・エントリ・フォーマット１４３０の１実施例の略図である。図１４Ｂによれば、各ＳＡＴディレクトリ・エントリは存在（Ｐ）ビットを含み、これはＳＡＴディレクトリ・エントリ内部の有効なＳＡＴベース・アドレスの存在を表している。図１４Ｂの実施例に於いて、各ＳＡＴディレクトリ・エントリ１３１０の最高次（すなわち最上位）ビットはＳＡＴベース・アドレスに予約されている。ＳＡＴベース・アドレスは対応するＳＡＴを含むメモリ・ページのベース・アドレスである。Ｐ＝１の場合、ＳＡＴベース・アドレスが有効で、これに対応するＳＡＴはメモリ４０６内に格納される。
Ｐ＝０の場合、ＳＡＴベース・アドレスは有効ではなく、これに対応するＳＡＴはメモリ４０６内に存在せず、又ストレージ・デバイス（例えばディスク・ドライブ装置）からメモリ４０６へコピーする必要がある。Ｐ＝０の場合、セキュリティチェック論理８００はページング・ユニット７０２内部の論理へページ・フォールトを通知し、ＭＭＵ６０２がページ・フォールト信号を実行ユニット６００（図６）へ転送する。ページ・フォールト信号に応答して、実行ユニット６００はページ・フォールト・ハンドラ・ルーチンを実行し、これによってストレージ・デバイスから必要とされるＳＡＴを取り出して必要なＳＡＴをメモリ４０６内に格納する。必要なＳＡＴがメモリ４０６内に格納された後で、対応するＳＡＴディレクトリ・エントリのＰビットが「１」にセットされ、メカニズム１３００が継続する。
【００６８】
図１３をもう一度参照すると、物理アドレス１３０２の「中央部」はＳＡＴ１３０６へのインデックスとして使用される。ＳＡＴディレクトリ・エントリ１３１２はＳＡＴディレクトリ・エントリ１３１２のＳＡＴベース・アドレスと物理アドレス１３０２の中央部とを使用してＳＡＴ１３０６内部で選択されることになる。
【００６９】
図１５はＳＡＴエントリ・フォーマット１５００の１実施例の略図である。図１５の実施例に於いて、各ＳＡＴディレクトリ・エントリ１３１２はセキュリティページ（ＳＰ）ビットを含む。ＳＰビットは選択されたメモリ・ページがセキュリティページか否かを表す。例えば、ＳＰ＝０の場合選択されたメモリ・ページはセキュリティページではなく、ＳＰ＝１の場合選択されたメモリ・ページはセキュリティページである。
ＢＩＵ６０６はメモリ４０６から必要となるＳＥＭデータ構造エントリを取り出し、ＳＥＭデータ構造エントリをＭＭＵ６０２へ提供する。もう一度図８Ｂを参照するとセキュリティチェック論理８００ＢがＭＭＵ６０２とページング・ユニット７０２から通信バス経由でＳＥＭデータ構造エントリを受信する。前述したように、ＳＡＴエントリ・バッファ８０２は最近アクセスしたメモリ・ページの比較的少数のＳＡＴエントリ１２２５を格納するために使用される。セキュリティチェック論理８００Ｂは任意のＳＡＴエントリ１３１２をＳＡＴエントリ・バッファ８０２へ格納し、これに併せて対応する物理アドレスの「タグ」部分も格納する。
【００７０】
後続のメモリ・ページ・アクセスの間、セキュリティチェック論理８００Ｂはページング・ユニット７０２によって発生した物理アドレスの「タグ」部分をＳＡＴエントリ・バッファ１１０２に格納されたＳＡＴエントリ１２２５に対応する物理アドレスのタグ部分と比較する。物理アドレスのタグ部分が、ＳＡＴエントリ・バッファ１１０２内に格納されたＳＡＴエントリ１３１２に対応する物理アドレスのタグ部分と一致すれば、セキュリティチェック論理８００ＢはＳＡＴエントリ・バッファ１１０２内のＳＡＴエントリ１３１２へアクセスし、メモリ４０６からＳＡＴエントリ１３１２を取得する図１３の処理を実行する必要がなくなる。セキュリティカーネル５０４はＣＰＵ４０２のＳＡＴベースアドレス・レジスタ１３０８の内容を書き換える（例えばコンテクスト・スイッチ）。ＳＡＴベースアドレス・レジスタ１３０８の変更に応答して、ＣＰＵＳＣＵ４１７のセキュリティチェック論理８００ＢはＳＡＴエントリ・バッファ８０２をフラッシュする。
【００７１】
図４Ａ〜図４Ｃのコンピュータ・システム４００がＳＥＭで動作している場合、セキュリティチェック論理８００Ｂは現在実行中のタスク（すなわち現在実行している命令）のＣＰＬと、これに併せて物理アドレスが内部に存在している選択されたメモリ・ページのページ・ディレクトリ・エントリ（ＰＤＥ）Ｕ／Ｓビット、ＰＤＥ  Ｒ／Ｗビット、ページ・テーブル・エントリ（ＰＴＥ）Ｕ／Ｓビット、ＰＴＥ  Ｒ／Ｗビットも受信する。セキュリティチェック論理８００Ｂは以上の情報と、これに併せて選択されたメモリ・ページに対応するＳＡＴディレクトリ・エントリ１３１２のＳＰビットとを用いて、メモリ４０６のアクセスが許可されているかを判定する。
【００７２】
図４ＢのＣＰＵ４０２Ｂはｘ８６プロセッサであり、ｘ８６プロセッサ・アーキテクチャの１６ビット・セグメント・レジスタの一つであるコード・セグメント（ＣＳ）レジスタを含む。各セグメント・レジスタはセグメントと呼ばれる６４ｋブロックのメモリを選択する。ページングを有効にした保護モードでは、ＣＳレジスタにはメモリ４０６の実行可能セグメントを表すセグメント・セレクタがロードされる。セグメント・セレクタの最高次（すなわち最上位）ビットはＣＰＵ４０２Ｂの実行ユニット６００によって実行されるべき次の命令を含むメモリのセグメントを表す情報を格納するために使用される。命令ポインタ（ＩＰ）レジスタはＣＳレジスタによって示されているセグメントへのオフセットを格納するために使用する。ＣＳ：ＩＰペアは次の命令のセグメント化アドレスを表す。ＣＳレジスタの最低次（すなわち最下位）２ビットは実行ユニット６００によって現在実行されているタスクのＣＰＬを表す値を格納するために使用される（すなわち現行タスクのＣＰＬ）。
【００７３】
以下の表１は、コンピュータ・システム４００ＢがＳＥＭで動作している場合にＣＰＵが開始した（すなわちソフトウェアによって開始した）メモリ・アクセスの代表的規則を示している。ＣＰＵＳＣＵ４１７とセキュリティカーネル５０４が協動して、コンピュータ・システム４００がＳＥＭで動作している場合に表１の規則を実装し、オペレーティング・システム５０２によって提供されるデータセキュリティ以上に、メモリ４０６内に格納されるデータに追加のセキュリティを提供する。
表１：コンピュータ・システム４００ＢがＳＥＭで動作している場合に
おけるソフトウェアで開始されたメモリ・アクセスでの代表的規則
現在実行      選択された
中の命令    メモリ・ページ           許可されるアクセス
SP  CPL     SP  U/S    R/W     アクセス              備考
1   0        X   X    1(R/W)     R/W         全アクセス許可（１）
1   0        X   X     0(R)    読み出し             （２）
1   3        1  1(U)  1(R/W）        標準保護メカニズム適用
1   3        1  0(S)    X        なし       アクセスでＧＰＦ発生（１）
1   3        0   0      1        なし       アクセスでＧＰＦ発生（４）
0   0        1   X      X        なし    アクセスでSEMセキュリティ例外発生
0   0        0   1      1        R/W       標準保護メカニズム適用（３）
0   3        X   0      X        なし               注５参照
0   3        0   1      1        R/W       標準保護メカニズム適用（６）
注（１）：代表的なアクセスされるページ内容はセキュリティカーネルとＳＥＭデータ構造を含む。
注（２）：書き込み試行でＧＰＦを発生する。選択されたメモリ・ページがセキュリティページ（ＳＰ＝１）だとＳＥＭセキュリティ例外がＧＰＦの代わりに通知される。
注（３）：代表的なアクセスされるページ内容は高セキュリティアプレットを含む。
注（４）：代表的なアクセスされるページ内容はＯＳカーネルとリング０デバイス・ドライバを含む。
注（５）：全てのアクセス試行でＧＰＦを発生する。選択されたメモリ・ページがセキュリティページ（ＳＰ＝１）だとＳＥＭセキュリティ例外がＧＰＦの代わりに通知される。
注（６）：代表的なアクセスされるページ内容はアプリケーションを含む。
【００７４】
上記表１では、現在実行している命令のＳＰビットが現在実行している命令を含むメモリ・ページに対応するＳＡＴディレクトリ・エントリ１３１２のＳＰビットである。選択されたメモリ・ページのＵ／Ｓビットは、選択されたメモリ・ページのＰＤＥ  Ｕ／ＳビットとＰＴＥ  Ｕ／Ｓビットとの論理積（AND）である。選択されたメモリ・ページのＲ／Ｗビットは、選択されたメモリ・ページのＰＤＥ  Ｒ／ＷビットとＰＴＥ  Ｒ／Ｗビットとの論理積（AND）である。記号「ｘ」は「任意である」ことを意味し、論理値は「０」か「１」のどちらでも良い。
【００７５】
図８Ｂをもう一度参照すると、ＣＰＵＳＣＵ４１７のセキュリティチェック論理８００Ｂは一般保護フォールト（「ＧＰＦ」）信号と、「SEM SECURITY EXCEPTION」信号とを発生し、ＧＰＦ及びSEM SECURITY EXCEPTION信号をページング・ユニット７０２へ提供する。セキュリティチェック論理８００ＢがＧＰＦ信号を発行すると、ＭＭＵ６０２はＧＰＦ信号を実行ユニット６００へ転送する。ＧＰＦ信号に応答して、実行ユニット６００はｘ８６プロセッサ・アーキテクチャの周知の割り込みデスクリプタ・テーブル（ＩＤＴ）ベクトル化メカニズムを使用してＧＰＦハンドラ・ルーチンへアクセスしこれを実行する。
【００７６】
セキュリティチェック論理８００ＢがSEM SECURITY EXCEPTION信号を発行すると、ＭＭＵ６０２はSEM SECURITY EXCEPTION信号を実行ユニット６００へ転送する。ｘ８６プロセッサ・アーキテクチャのＩＤＴベクトル化メカニズムを使用する通常のプロセッサ例外とは異なり、別のベクトル化方法を使用してＳＥＭセキュリティ例外を処理する。ＳＥＭセキュリティ例外はｘ８６の「SYSENTER」及び「SYSEXIT」命令が動作する方法と同様に一対のレジスタ（例えばＭＳＲ）経由で配当される。レジスタ対は「セキュリティ例外エントリ・ポイント」レジスタであり、ＳＥＭセキュリティ例外が発生した場合の命令実行について分岐目標アドレスを定義する。セキュリティ例外エントリ・ポイント・レジスタはコード・セグメント（ＣＳ）を定義し、次いでＳＥＭセキュリティ例外ハンドラ１２１０へのエントリに使用する命令ポインタ（ＩＰ又は６４ビット版ＲＩＰ）、スタック・セグメント（ＳＳ）、スタック・ポインタ（ＳＰ又は６４ビット版ＲＳＰ）の値を定義する。ソフトウェアによる制御下で、実行ユニット６００は直前のＳＳ、ＳＰ／ＲＳＰ、ＥＦＬＡＧＳ、ＣＳ、ＩＰ／ＲＩＰ値を新しいスタックへプッシュして例外がどこで発生したかを表示する。さらに、実行ユニット６００はエラー・コードをスタック上にプッシュする。前述したように、直前のＳＳ及びＳＰ／ＲＳＰ値がいつも保存されているのでＩＲＥＴ命令は使用できず、スタック・スイッチは、現在の特権レベル（ＣＰＬ）の変更が行われない場合であっても必ず遂行される。ＳＥＭセキュリティ例外ハンドラ１２１０からの戻り値はＳＭＲＥＴ命令を経由する。
【００７７】
以下の表２は、コンピュータ・システム４００がＳＥＭで動作している場合に、デバイス・ハードウェア・ユニット４１４Ａ〜４１４Ｄによって開始されたメモリ・ページ・アクセス（すなわちハードウェアによって開始されたメモリ・アクセス）についての代表的な規則を示している。このようなハードウェアで開始されたメモリ・アクセスはデバイス・ハードウェア・ユニット４１４Ａ〜４１４Ｄ内部のバス・マスタリング回路によって開始されるか、又はデバイス・ハードウェア・ユニット４１４Ａ〜４１４Ｄの要求でＤＭＡデバイスにより開始される。コンピュータ・システム４００がＳＥＭで動作している場合にセキュリティチェック論理８００は表２の規則を実施してオペレーティング・システム５０２によって提供されたデータセキュリティの上にメモリ４０６内に格納されるデータについての追加のセキュリティを提供する。以下の表２では、「目標」メモリ・ページはメモリ・アクセスのメモリ・アクセス信号によって伝送される物理アドレスが内部に存在するメモリ・ページである。
表２：コンピュータ・システム４００がＳＥＭで動作している場合の
ハードウェアで開始されたメモリ・アクセスについての代表的規則
特定の
メモリ
ページ
ＳＰ    アクセス種別              動作
０      Ｒ／Ｗ       アクセスは通常どおり完了する
１      読み出し     アクセスは実際のメモリ内容の代わりに全部                                      「F」を返して完了する。
無許可アクセスは記録される
１      書き込み     アクセスは完了するが書き込みデータは破棄
される。メモリ内容は変更されない。
無許可アクセスは記録される。
【００７８】
上記表２に於いて、目標メモリ・ページのＳＰビットはメモリ・アクセスの物理アドレスと対応するメモリ・ページのＳＡＴエントリ１２２５を取得するためすでに説明した図９のメカニズム９００とを使用してホスト・ブリッジＳＣＵ４１８によって取得される。
表２に示してあるように、目標メモリ・ページがセキュリティページであることを示すＳＰ＝１の場合、メモリ・アクセスは無許可である。この状況に於いて、セキュリティチェック論理８００はメモリ・制御装置へメモリ・アクセス信号を提供しない。メモリ・アクセス信号の一部（例えば制御信号）はメモリ・アクセスの種別を示し、ここに於いてメモリ・アクセス種別は読み出しアクセスか書き込みアクセスのどちらかである。ＳＰ＝１で、かつメモリ・アクセス種別が読み出しアクセスであることをメモリ・アクセス信号が示している場合、メモリ・アクセスは無許可の読み出しアクセスであり、セキュリティチェック論理８００は実際のメモリ内容の代わりに全部「Ｆ」を提供することで（すなわち偽物の読み出しデータ）無許可読み出しアクセスに応答する。セキュリティチェック論理８００はまた、前述のように無許可読み出しアクセスを記録することで無許可読み出しアクセスに応答する。
ＳＰ＝１かつメモリ・アクセス種別が書き込みアクセスであるとメモリ・アクセス信号が示している場合、メモリ・アクセスは無許可の書き込みアクセスである。この状況では、メモリ・アクセス信号によって伝送される書き込みデータを破棄することにより、セキュリティチェック論理８００は無許可書き込みアクセスに応答する。セキュリティチェック論理８００はまた、前述のように無許可書き込みアクセスを記録することで無許可書き込みアクセスに応答する。
【００７９】
図１６Ａは図４Ｃのホスト・ブリッジ４０４Ｃの１実施例の略図である。図１６Ａの実施例に於いて、ホスト・ブリッジ４０４Ｃはホスト・インタフェース１６００、ブリッジ論理１６０２、ホスト・ブリッジＳＣＵ４１８、メモリ・コントローラ１６０４、デバイス・バス・インタフェース１６０６を含む。ホスト・インタフェース１６００はＣＰＵ４０２へ接続され、デバイス・バス・インタフェース１６０６はデバイス・バス４０８へ接続される。ブリッジ論理１６０２はホスト・インタフェース１６００とデバイス・バス・インタフェース１６０６の間に接続される。メモリ・コントローラ１６０４はメモリ４０６へ接続されメモリ４０６への全部のアクセスを実行する。ホスト・ブリッジＳＣＵ４１８はブリッジ論理１６０２とメモリ・コントローラ１６０４の間に接続される。前述のように、ホスト・ブリッジＳＣＵ４１８はデバイス・バス・インタフェース１６０６経由でメモリ４０６へのアクセスを制御する。ホスト・ブリッジＳＣＵ４１８はデバイス・バス・インタフェース１６０６経由でメモリ４０６へのアクセスを全てモニタし、メモリ４０６への許可されたアクセスだけを許容する。
【００８０】
図１６Ｂは図４Ｃのホスト・ブリッジ４０４Ｃの別の実施例の略図である。図１６Ｃの実施例に於いて、ホスト・ブリッジ４０４Ｃはホスト・インタフェース１６００、ブリッジ論理１６０２、ホスト・ブリッジＳＣＵ４１８、メモリ・コントローラ１６０４、デバイス・バス・インタフェース１６０６、バス・アービタ１６０８を含む。ホスト・インタフェース１６００はＣＰＵ４０２へ接続され、デバイス・バス・インタフェース１６０６はデバイス・バス４０８へ接続される。ブリッジ論理１６０２はホスト・インタフェース１６００とデバイス・バス・インタフェース１６０６の間に接続される。メモリ・コントローラ１６０４はメモリ４０６へ接続されて、メモリ４０６への全てのアクセスを実行する。ホスト・ブリッジＳＣＵ４１８はブリッジ論理１６０２とメモリ・コントローラ１６０４の間に接続される。前述のように、ホスト・ブリッジＳＣＵ４１８はデバイス・バス・インタフェース１６０６経由でメモリ４０６へのアクセスを制御している。ホスト・ブリッジＳＣＵ４１８はデバイス・バス・インタフェース１６０６経由でメモリ４０６へのアクセスを全てモニタし、メモリ４０６への許可されたアクセスだけを許容する。
図１６Ｂの実施例に於いて、バス・アービタ１６０８はデバイス・バス・インタフェース１６０６、ブリッジ論理１６０２、ホスト・ブリッジＳＣＵ４１８へ接続される。バス・アービタ１６０８はブリッジ論理１６０２、デバイス・ハードウェア・ユニット４１４Ａと４１４Ｂ、及びデバイス・バス・ブリッジ４１０の間でデバイス・バス４０８の制御について調停する。（デバイス・ハードウェア・ユニット４１４Ｃと４１４Ｄはデバイス・バス・ブリッジ４１０経由でデバイス・バス４０８へアクセスする。）一般に、デバイス・バス４０８は許可信号を伝送する１本又はそれ以上の信号線を含み、ここに於いて許可信号はデバイス・バス４０８へ接続されているデバイスのどれがデバイス・バス４０８の制御を行っているかを表す複数状態のうちの一つの状態にある。バス・アービタ１６０８は許可信号を伝送する１本又はそれ以上の信号線に許可信号を駆動する。バス・アービタ１６０８は、代表的には、デバイス・ハードウェア・ユニット４１４Ａと４１４Ｂ、及びデバイス・バス・ブリッジ４１０から別々の要求信号を受信し、ここに於いて各要求信号は対応するデバイスがデバイス・バス４０８の制御を必要とする場合に対応するデバイスによって発行される。バス・アービタ１６０８はデバイス・ハードウェア・ユニット４１４Ａと４１４Ｂへ又デバイス・バス・ブリッジ４１０へ別々の許可信号を発行し、ここに於いて許可信号の任意の一つが発行されて対応するデバイスがデバイス・バス４０８の制御を許可されていることを表す。バス・アービタ１６０８はホスト・ブリッジＳＣＵ４１８と協動してコンピュータ・システム４００Ｃ内部でデバイス間アクセスセキュリティを提供する。
【００８１】
図１７は図１６Ａ及び図１６Ｂのホスト・ブリッジＳＣＵ４１８の１実施例の略図である。図１７の実施例に於いて、ホスト・ブリッジＳＣＵ４１８はＳＥＭレジスタ１７０２のセットとＳＡＴエントリ・バッファ１７０４へ接続されたセキュリティチェック論理１７００を含む。ＳＥＭレジスタ１７０２のセットはセキュリティチェック論理１７００の動作を規制し、図９の第２のＳＡＴベースアドレス・レジスタ９０８を含む。ＳＥＭレジスタ１７０２のセットの第２のＳＡＴベースアドレス・レジスタ９０８は、アドレス可能なレジスタである。セキュリティカーネル５０４がＣＰＵ４０２のＳＥＭレジスタ６１０のセットに於いて第２のＳＡＴベースアドレス・レジスタ９０８の内容を変更する場合（例えばコンテクスト・スイッチの間）、セキュリティカーネル５０４はホスト・ブリッジＳＣＵ４１８のＳＥＭレジスタ１７０２のセットに於いて第２のＳＡＴベースアドレス・レジスタ９０８へも同一の値を書き込む。第２のＳＡＴベースアドレス・レジスタ９０８の変更に応答して、ホスト・ブリッジＳＣＵ４１８のセキュリティチェック論理１７００はＳＡＴエントリ・バッファ１７０４をフラッシュする。
セキュリティチェック論理１７００はデバイス・バス・インタフェース１６０６とブリッジ論理１６０２経由でデバイス・ハードウェア・ユニット４１７Ａ〜４１７Ｄによって開始されたメモリ・アクセスのメモリ・アクセス信号を受信する。メモリ・アクセス信号はデバイス・ハードウェア・ユニット４１７Ａ〜４１７Ｄからの物理アドレスと、関連する制御及び／又はデータ信号をを伝送する。セキュリティチェック論理１７００は対応するメモリ・ページのＳＡＴエントリ１２２５を取得するためのメカニズム１３００を実現し、コンピュータ・システム４００がＳＥＭで動作する場合にメカニズム１３００を実装するものである。ＳＡＴエントリ・バッファ１７０４は前述のＣＰＵＳＣＵ４１６のＳＡＴエントリ・バッファ８０２と同様であり、最近アクセスされたメモリ・ページの比較的少数のＳＡＴエントリ１２２５を格納するために使用する。
【００８２】
コンピュータ・システム４００がＳＥＭで動作している場合、図１７のセキュリティチェック論理１７００は選択されたメモリ・ページに関連したＳＡＴディレクトリ・エントリ１３１２の追加セキュリティ情報を使用して、任意のハードウェアで開始されたメモリ・アクセスが許可されるか否かを判定する。任意のハードウェアで開始されたメモリ・アクセスが許可される場合、セキュリティチェック論理１７００は当該メモリ・アクセスのメモリ・アクセス信号（すなわち物理信号並びにこれと関連する制御及び／又はデータ信号を伝送するアドレス信号）をメモリ・コントローラ１６０４へ提供する。メモリ・コントローラ１６０４は物理アドレス及びこれに関連した制御及び／又はデータ信号を使用してメモリ４０６へアクセスする。メモリ４０６のアクセスが書き込みアクセスである場合、データ信号によって伝送されるデータはメモリ４０６へ書き込まれる。メモリ４０６へのアクセスが読み出しアクセスである場合には、メモリ・コントローラ１６０４がメモリ４０６からデータを読み出して、得られた読み出しデータをセキュリティチェック論理１７００へ提供する。セキュリティチェック論理１７００は読み出しデータをブリッジ論理１６０２へ転送し、ブリッジ論理１６０２がデバイス・バス・インタフェース１６０６へデータを提供する。
【００８３】
他方で、任意のハードウェアで開始されたメモリ・アクセスが許可されていない場合、セキュリティチェック論理１７００はメモリ４０６アクセスの物理アドレス及びこれに関連する制御及び／又はデータ信号をメモリ・コントローラ１６０４に提供しない。無許可のハードウェアで開始されたメモリ・アクセスがメモリ書き込みアクセスである場合、セキュリティチェック論理１７００は書き込みアクセスの完了を通知して書き込みデータを破棄し、メモリ４０６を変更されないままにしておく。セキュリティチェック論理１７００は又ログにログ・エントリを作成し（例えば状態レジスタの１つ又はそれ以上のビットをセットするか又はクリアする）セキュリティアクセス侵害を記録する。セキュリティカーネル５０４は定期的にログにアクセスしてこのようなログ・エントリをチェックする。無許可のハードウェアで開始されたメモリ・アクセスがメモリ読み出しアクセスである場合には、セキュリティチェック論理１７００は読み出しデータとしてブリッジ論理１６０２経由でデバイス・バス・インタフェース１６０６へ偽の結果（例えば全部「F」）を返す。セキュリティチェック論理１７００はまた前述のようにログ・エントリを作成してセキュリティアクセス侵害を記録する。
【００８４】
図１８はホスト・ブリッジＳＣＵ４１８の別の実施例の略図で、ここに於いてホスト・ブリッジＳＣＵ４１８はアクセス許可テーブル１８００を含む。一般に、アクセス許可テーブル１８００はデバイス・バス４０８に接続されていてデバイス・バス４０８を駆動することができる各デバイスについて（すなわち関連するREQ＃とGNT＃信号を持っている各デバイス）異なるエントリのセットを有する。デバイス・ハードウェア４１４Ａに対応する第１のエントリのセットと、デバイス・ハードウェア４１４Ｂに関連した第２のエントリのセットが図１８に図示してある。追加のエントリのセットも企図される。
【００８５】
アクセス許可テーブル１８００の各エントリはデバイス・バス４０８に接続されていてデバイス・バス４０８を駆動することが可能なデバイスに対応する。例えば、図１８に於いて、デバイス・ハードウェア４１４Ａに対応する第１のエントリのセットで第１のエントリはデバイス・ハードウェア４１４Ｂに向けられている。第１のエントリは、フレーズ"(GNT#2 ASSERTED)"を含む「GRANT SIGNAL STATE」フィールドを含み、これはGNT#2信号が発行された場合第１のエントリが適用されることを表している。第１のエントリはまた、デバイス・ハードウェア４１４Ｂに対応する「ACCESS AUTHORIZED」値を含み、これはデバイス・ハードウェア４１４Ｂがデバイス・ハードウェア４１４Ａへのアクセスを許可されているか否かを表している。アクセス許可テーブル１８００はセキュリティカーネル５０４によって作成され維持される。
ＰＣＩバス・プロトコルによれば、「イニシエータ」デバイスは「ターゲット」デバイスにアクセスしてバス転送又は「トランザクション」を開始する。ターゲット・デバイスはSTOP#信号を発行することによりトランザクションを終了する。イニシエータ・デバイスが発行されたSTOP#信号を検出すると、イニシエータ・デバイスはトランザクションを終了し、トランザクションを完了するためにＰＣＩバスの制御を再調停する必要がある。何らかのデータが転送される前にターゲット・デバイスがSTOP#信号を発行した場合終了は「リトライ」と呼ばれる。
【００８６】
デバイス・バス４０８がＰＣＩバスである実施例に於いて、デバイス・バス４０８は多重化アドレス及びデータ（Ａ／Ｄ）信号線を含む。デバイス・バス４０８に接続されたイニシエータ・デバイスはターゲット・デバイスに割り当てられたアドレスを伝送するアドレス信号でデバイス・バス４０８の多重化Ａ／Ｄ線を駆動することによりデバイス・バス４０８に接続されたターゲット・デバイスへアクセスする。例えばデバイス・バス４０８へ接続されたデバイス・ハードウェア４１４Ｂへのアクセスを制御する目的で、ホスト・ブリッジＳＣＵ４１８は最初にＰＣＩバス経由でデバイス・ハードウェア４１４Ｂをプログラムしてデバイス・ハードウェア４１４Ｂを構成し、STOP#信号を発行することによる全てのアクセス試行に応答させる（すなわちＰＣＩバス・リトライを開始することによる全てのアクセス試行を阻止する）。
ホスト・ブリッジＳＣＵ４１８はデバイス・バス・インタフェース１６０６経由でデバイス・バス４０８の信号線へ接続され、デバイス・バス４０８のGNT#及びＡ／Ｄ信号線をモニタしてデバイス・アクセス試行を検出する。例えば、デバイス・ハードウェア４１４Ａがデバイス・ハードウェア４１４Ｂへのアクセスを試みたと仮定する。「イニシエータ」デバイス・ハードウェア４１４Ａが「ターゲット」デバイス・ハードウェア４１４Ｂへのアクセスを試みた場合、デバイス・ハードウェア４１４ＢはＰＣＩバス・リトライを開始することによる（すなわちデバイス・バス４０８のＡ／Ｄ信号線上でデバイス・ハードウェア４１４Ｂに割り当てられたアドレスを検出した後でSTOP#信号を発行することによる）アクセス試行を阻止する。この動作でデバイス・ハードウェア４１４Ａに対し後続のアクセス試行を経由してアクセス試行をリトライするよう強制する。
【００８７】
デバイス・ハードウェア４１４Ｂがアクセス試行を阻止している一方で、ホスト・ブリッジＳＣＵ４１８はデバイス・バス４０８のＡ／Ｄ信号線上で駆動されたデバイス・ハードウェア４１４Ｂに割り当てられているアドレスを経由してアクセス試行を検出する。デバイス・ハードウェア４１４Ａがデバイス・バス４０８の制御を持っているので、GNT#1信号を発行し、ホスト・ブリッジＳＣＵ４１８は発行されたGNT#1信号経由でイニシエータとしてデバイス・ハードウェア４１４Ａを認識する。
【００８８】
ホスト・ブリッジＳＣＵ４１８はデバイス・ハードウェア４１４Ａによる後続のアクセス試行を許可するか否かを判定する。ホスト・ブリッジＳＣＵ４１８はデバイス・ハードウェア４１４Ｂに対応するアクセス許可テーブル１８００の第２のエントリのセットにアクセスして、GRANT SIGNAL STATEフィールドに"(GNT#1 ASSERTED)"を有する第２のセットの最初のエントリを選択する。第１のエントリのACCESS AUTHORIZED値は「１」で、これはデバイス・ハードウェア４１４Ａによるデバイス・ハードウェア４１４Ｂへのアクセスが許可されていることと、デバイス・ハードウェア４１４Ａによる後続のアクセス試行が許可されるべきであることを示している。
【００８９】
ACCESS AUTHORIZED値で、デバイス・ハードウェア４１４Ａによる後続のアクセス試行が許可されるべきことを示しているので、ホスト・ブリッジＳＣＵ４１８はデバイス・ハードウェア４１４Ａを識別するようにバス・アービタ１６０８へ信号を送信する。デバイス・バス４０８の制御をデバイス・ハードウェア４１４Ａへ次回許可する直前に、バス・アービタ１６０８はデバイス・バス４０８の制御をホスト・ブリッジＳＣＵ４１８に許可する。ホスト・ブリッジＳＣＵ４１８はデバイス・バス４０８の信号線に信号を送信して、デバイス・ハードウェア４１４Ａによる後続のアクセス試行を許可するようにデバイス・ハードウェア４１４Ｂを構成する。
【００９０】
デバイス・ハードウェア４１４Ａによる後続のアクセス試行の直後に、バス・アービタ１６０８はまたデバイス・バス４０８の制御をホスト・ブリッジＳＣＵ４１８に許可する。ホスト・ブリッジＳＣＵ４１８はＰＣＩバスの信号線に信号を発信し、ＰＣＩバス・リトライを開始することによる全てのアクセス試行に応答するように（すなわち、デバイス・バス４０８のＡ／Ｄ信号線上でデバイス・ハードウェア４１４Ｂに割り当てられたアドレスを検出した後でSTOP#信号を発行することにより全てのアクセス試行を阻止するように）デバイス・ハードウェア４１４Ｂを構成する。
【００９１】
アクセス許可テーブル１８００の選択したエントリでACCESS AUTHORIZED値が「０」になっていて、イニシエータ・デバイスによるターゲット・デバイスへのアクセスが許可されずイニシエータ・デバイスによる後続のアクセス試行も許可されるべきでないことを表しているような場合では、ホスト・ブリッジＳＣＵ４１８はイニシエータ・デバイスによる後続のアクセス試行を許可するようにはターゲット・デバイスを構成せず、ターゲット・デバイスはＰＣＩバス・リトライを開始することによりイニシエータ・デバイスによるアクセス試行を阻止し続ける。上記で説明したアトム的構成−アクセス−構成メカニズムでは、既存のＰＣＩデバイスが保護されるためにはＰＣＩバス・リトライを開始するようにプログラム可能であることだけが要求される。
【００９２】
ここで図１９を参照すると、本発明による処理ユニット１９１０の１実施例の略ブロック図が図示してある。１実施例の処理ユニット３１０はプロセッサ１９１０、Ｉ／Ｏアクセス・インタフェース１９２０、Ｉ／Ｏ空間１９４０、プログラム可能なオブジェクト１９５０例えばソフトウェア・オブジェクト又は構造体を含む。プロセッサ１９１０はマイクロプロセッサ（例えばＣＰＵ４２０）であり複数のプロセッサを含むことができる（図示していない）。
【００９３】
一実施例において、Ｉ／Ｏ空間１９４０はＩ／Ｏデバイス１９６０例えばモデム、ディスク・ドライブ装置、ハードディスク・ドライブ装置、ＣＤ−ＲＯＭドライブ装置、ＤＶＤドライブ装置、ＰＣＭＣＩＡカード、各種のその他入出力周辺デバイス装置（例えば４１４Ａ〜４１４Ｄ）などへの「ゲートウェイ」を提供する。別の実施例において、Ｉ／Ｏ空間１９４０はＩ／Ｏデバイス１９６０内に統合されている。一実施例において、Ｉ／Ｏ空間１９４０はＩ／Ｏ空間１９４０にアドレスしこれと通信することに関連したデータを含むメモリ・ユニット１９４７を含む。メモリ・ユニット１９４７は物理メモリ例えば磁気テープ・メモリ、フラッシュ・メモリ、ランダム・アクセス・メモリ、半導体チップに搭載されるメモリ、その他等を含む物理メモリ部分を含む。半導体チップに搭載されるメモリは、例えば同期ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）、ダブルレート・ダイナミック・ランダム・アクセス・メモリ（ＤＤＲＡＭ）又はその他等各種の形状のいずれかを取ることができる。
【００９４】
プロセッサ１９１０はシステムＩ／Ｏアクセス・インタフェース１９２０経由でＩ／Ｏ空間１９４０と通信する。一実施例において、Ｉ／Ｏアクセス・インタフェース１９２０は従来の構造であり、希望する入出力データ・トランザクションを特徴付けるＩ／Ｏ空間１９４０へのＩ／Ｏ空間アドレスと論理信号とを提供する。本発明の実施例はマルチ・テーブルによるセキュリティベースのアクセス・システムを実行するＩ／Ｏアクセス・インタフェース１９２０を提供する。
【００９５】
一実施例において、プロセッサ１９１０はホスト・バス１９１５に接続される。プロセッサ１９１０はホスト・バス１９１５経由でＩ／Ｏアクセス・インタフェース１９２０及びオブジェクト１９５０と通信する。Ｉ／Ｏアクセス・インタフェース１９２０はホスト・バス１９１５とＩ／Ｏ空間１９４０に接続される。プロセッサ１９１０はまた周辺装置と通信するために使用するプライマリ・バス１９２５へも接続する。一実施例において、プライマリ・バス１９２５は周辺器相互接続（ＰＣＩ）バス（ＰＣＩ仕様書Rev.2.1.  参照）である。ディスプレイ・ユニット２２０やその他のデバイス（例えばＰＣＩデバイス）を駆動するビデオ・コントローラ（図示していない）はプライマリ・バス１９２５へ接続される。コンピュータ・システム２００は他のバス例えばセカンダリＰＣＩバス（図示していない）又は当業者に公知のその他の周辺装置（図示していない）などを含むことがある。
【００９６】
プロセッサ１９１０はオブジェクト１９５０からの命令に基づいて複数のコンピュータ処理演算を実行する。オブジェクト１９５０は、プロセッサ１９１０に複数の機能を実行させるソフトウェア構造体を含む。さらに、オブジェクト１９５０の複数のサブセクション例えばオペレーティング・システム、ユーザ・インタフェース・ソフトウェア・システム、例えばMicrosoft Ward（登録商標）その他が同時に存在しプロセッサ１９１０内部の演算を実行する。本発明の実施例はプロセッサ１９１０に対するセキュリティレベル・アクセス及び特権を提供する。
【００９７】
オブジェクト１９５０によって提供されたソフトウェア・コードの実行に応答して、プロセッサ１９１０はメモリ・アクセスを含む１つ又はそれ以上のＩ／Ｏデバイス・アクセスを実行し、１つ又はそれ以上のオブジェクト１９５０の開始によって指示されたタスクを実行する。プロセッサ１９１０によって実行されるＩ／Ｏアクセスは、Ｉ／Ｏデバイス１９６０にアクセスしてＩ／Ｏデバイス１９６０の各々の機能例えばモデムの動作などを制御することを含む。プロセッサ１９１０によって実行されるＩ／Ｏアクセスはまた、実行コードの格納のためにＩ／Ｏデバイス１９６０のメモリ位置へアクセスすることや、保存したメモリ位置からデータを取り出すためのメモリ・アクセスを含む。
【００９８】
ある種のＩ／Ｏデバイス１９６０又はＩ／Ｏデバイス１９６０の一部が１つ又はそれ以上の選択されたオブジェクト１９５０によってアクセスを制限されることもある。同様に、Ｉ／Ｏデバイス１９６０の特定のメモリ位置に格納されているある種のデータが１つ又はそれ以上の選択されたオブジェクト１９５０によってアクセスを制限されることがある。本発明の実施例はシステム２００内の特定のＩ／Ｏデバイス１９６０へ又はＩ／Ｏデバイス１９６０のメモリ位置へのアクセスを制限するマルチ・テーブルセキュリティアクセスを提供する。プロセッサ１９１０はＩ／Ｏアクセス・インタフェース１９２０経由でＩ／Ｏ空間アクセスを実行する。Ｉ／Ｏアクセス・インタフェース１９２０はＩ／Ｏ空間１９４０へのアクセスを提供し、Ｉ／Ｏ空間は複数のＩ／Ｏデバイス１９６０へのゲートウェイを含むことがある。マルチ・テーブル仮想メモリ・アクセス・プロトコルが本発明の少なくとも一実施例によって提供される。
【００９９】
ここで図２０を参照すると、本発明によるＩ／Ｏアクセス・インタフェース１９２０の１実施例のブロック図表現が図示してある。一実施例において、Ｉ／Ｏアクセス・インタフェース１９２０はＩ／Ｏアクセス・テーブル２０１０、セカンダリＩ／Ｏテーブル２０３０、Ｉ／Ｏ空間インタフェース１９４５を含む。一実施例において、Ｉ／Ｏ空間インタフェース１９４５は、Ｉ／Ｏデバイス１９６０又はＩ／Ｏデバイス１９６０の一部に対する物理的位置にアドレスするために使用することのできる「仮想」Ｉ／Ｏ空間アドレスを表現している。プロセッサ１９１０はＩ／Ｏ空間インタフェース１９４５にアドレスすることによってＩ／Ｏ空間１９４０へアクセスすることが可能である。
【０１００】
本発明の実施例はマルチ・テーブルＩ／Ｏ及びメモリ・アクセス・システムを使用するＩ／Ｏアクセスを実行することを提供する。本発明の実施例で用いられているマルチ・テーブルＩ／Ｏ及びメモリ・アクセス・システムは、マルチレベル・テーブル・アドレシング方式（すなわちセカンダリＩ／Ｏテーブル２０３０との組合せでＩ／Ｏアクセス・テーブル２０１０を使用する）を使用してＩ／Ｏ空間インタフェース１９４５経由でＩ／Ｏ空間アドレスへアクセスする。Ｉ／Ｏメモリ・アドレスをプロセッサ１９１０が使用して希望する物理的Ｉ／Ｏ位置を特定する。
【０１０１】
システム３００は１つ又はそれ以上の他のテーブル、例えばセカンダリＩ／Ｏテーブル２０３０との組合せでＩ／Ｏアクセス・テーブル２０１０を使用して仮想Ｉ／Ｏ空間アドレスを定義する。Ｉ／Ｏアクセス・テーブル２０１０とセカンダリＩ／Ｏアクセス・テーブル２０３０を使用して物理的Ｉ／Ｏアドレスに繋がる仮想Ｉ／Ｏ空間アドレスを変換する。物理Ｉ／ＯアドレスはＩ／Ｏデバイス３６０の物理的位置、又はＩ／Ｏデバイス１９６０内のメモリ位置を指している。本発明の実施例により提供されるマルチレベルＩ／Ｏアクセス・テーブル・システムでは、セカンダリＩ／Ｏテーブル２０３０がＩ／Ｏアクセス・テーブル２０１０のセクション全体を定義できる。場合によっては、セカンダリＩ／Ｏテーブル２０３０はＩ／Ｏアクセス・テーブル２０１０に存在しないかも知れない仮想Ｉ／Ｏアドレスの一部を定義することもある。セカンダリＩ／Ｏテーブル２０３０はＩ／Ｏアクセス・テーブル２０１０によって生成された仮想Ｉ／Ｏアドレスに基づいた物理的Ｉ／Ｏ位置をさらに定義する微調整（fine-tuning）デバイスとして使用できる。これにより一層正確かつ高速な仮想Ｉ／Ｏアドレス定義が得られるようになる。
【０１０２】
一実施例において、セカンダリ・テーブル２０３０はセカンダリ・テーブル２０３０内部に複数のサブセット・テーブルを含んでおり、メモリ・ユニット１９４７内に格納されるか、又はシステム３００の主メモリ（図示していない）に格納される。セカンダリＩ／Ｏテーブル２０３０は高セキュリティレベルで格納されセキュリティでない又は確認されないソフトウェア構造体又はオブジェクト１９５０がセカンダリＩ／Ｏテーブル２０３０へのアクセスを取得できないようにしている。一実施例において、プロセッサ１９１０はオブジェクト１９５０によって送信された命令に基づいて物理的Ｉ／Ｏデバイス位置でのある位置へのアクセスを要求する。プロセッサ１９１０によってなされたメモリ・アクセス要求に応答して、Ｉ／Ｏアクセス・インタフェース１９２０はＩ／Ｏアクセス・テーブル２０１０に対して仮想Ｉ／Ｏアドレスを作成するように指示し、この仮想Ｉ／ＯアドレスがさらにセカンダリＩ／Ｏテーブル２０３０によって定義される。仮想Ｉ／ＯアドレスはＩ／Ｏ空間インタフェース１９４５内のある位置を指し示す。プロセッサ１９１０は仮想Ｉ／Ｏ位置へのアクセスを要求し、仮想Ｉ／Ｏ位置はＩ／Ｏデバイス１９６０内のこれに対応する位置を特定するために使用される。
【０１０３】
プロセッサ１９１０によって実行されるメモリ・アクセスを実行する１実施例が図２１Ａ、図２１Ｂ及び以下の説明で示される。ここで図２１Ａを参照すると、データ・プロセッサ又はシステム３００でセキュリティレベル属性を格納し取り出すためのＩ／Ｏアクセス・システム２１００の代表的１実施例が図示してある。一実施例において、Ｉ／Ｏアクセス・システム２１００はシステム３００において処理ユニット１９１０に統合されている。Ｉ／Ｏアクセス・システム２１００はＩ／Ｏ空間１９４０にアクセスするためにマルチ・テーブルセキュリティ方式を使用するデータ・プロセッサ（図示していない）で有用である。例えば、Ｉ／Ｏアクセス・システム２１００はページング方式例えばｘ８６型マイクロプロセッサに実装されているページング方式などを使用するＩ／Ｏ空間１９４０にアドレスする場合処理ユニット１９１０で使用することができる。一実施例において、ｘ８６システムに於ける１メモリ・ページには４キロバイトのメモリを含む。さらに、Ｉ／Ｏアクセス・システム２１００はページ・レベルで適切なセキュリティレベル属性を割り当てる処理ユニット１９１０に於いて特に用途がある。
【０１０４】
Ｉ／Ｏアクセス・システム２１００は、ｘ８６型マイクロプロセッサのページング・ユニットで受信される仮想、線形、又は中間アドレスに対向して、ページ部分２１１０とオフセット部分２１２０とからなるＩ／Ｏ空間アドレス２１５３を受信する。一実施例において、ページ部分２１１０のデータは適当なメモリ・ページをアドレスし、一方のオフセット部分２１２０データは選択されたページ部分２１１０内部の特定のオフセットＩ／Ｏ位置をアドレスする。Ｉ／Ｏアクセス・システム２１００はｘ８６型マイクロプロセッサのページング・ユニット（図示していない）で作成されるような物理アドレスを受信する。
【０１０５】
マルチレベル参照テーブル２１３０は、一般に拡張セキュリティ属性テーブル（ＥＳＡＴ）と呼ばれるもので、物理Ｉ／Ｏアドレスのページ部分２１１０を受信する。マルチレベル参照テーブル２１３０はメモリの各ページ２１１０に関連したセキュリティ属性を格納する。言い換えれば、各ページ２１１０はそのページ２１１０に関連して何らかのセキュリティレベル属性を備えている。一実施例において、ページ２１１０に関連したセキュリティ属性は２１３０に格納される。例えば、ページ２１１０に関連したセキュリティ属性は、見下ろし（look down）セキュリティ内容ＩＤ、軽量コールゲート、読み取り可能、書き込み可能、実行、外部マスタ書き込み可能、外部マスタ読み取り可能、暗号化メモリ、セキュリティ命令有効、などを含む。これらの属性の多くは本開示の恩恵を受ける当業者には公知である。
【０１０６】
一実施例において、マルチレベル参照テーブル２１３０はシステム３００のシステム・メモリ（図示していない）に配置される。別の実施例に於いて、マルチレベル参照テーブル２１３０はプロセッサ１９１０に統合され、プロセッサにはシステム３００を使用するマイクロプロセッサを含む。したがって、マルチレベル参照テーブル２１３０が演算可能な速度は、少なくとも部分的には、システム・メモリの速度に依存する。プロセッサ３１０の速度と比較した場合のシステム・メモリの速度は一般に相対的に低い。つまり、マルチレベル参照テーブル２１３０を使用してセキュリティ属性を取り出す処理はシステム３００の全体的演算を遅くすることがある。セキュリティ属性を特定し取り出すために必要な時間間隔を低減するため、キャッシュ２１４０をマルチレベル参照テーブル２１３０と並列に実装する。キャッシュ２１４０はプロセッサ１９１０と同一の半導体上に配置されるか（すなわち、キャッシュ２１４０とプロセッサ１９１０は１個の半導体チップ上に統合されている）又はプロセッサ・ダイの外部に配置されるか、又はその両方に配置する。一般に、キャッシュ２１４０の速度はマルチレベル参照テーブル２１３０の速度より実質的に高速である。キャッシュ２１４０はページ部分２１１０と、マルチレベル参照テーブル２１３０内部に内包されるこれのセキュリティ属性との小さなサブセットを含む。つまり、キャッシュ２１４０に格納されたページ２１１０について、セキュリティ属性を取り出す演算は実質的に改善されている。
【０１０７】
図２１Ｂをここで参照すると、メモリ内にページ２１１０に関連したセキュリティ属性を格納して取り出すために使用されるマルチレベル参照テーブル２１３０の１実施例が図示してある。マルチレベル参照テーブル２１３０は、一般にＥＳＡＴディレクトリと呼ばれる第１のテーブル２１５０、及び一般にＥＳＡＴと呼ばれる第２のテーブル２１５２を含む。一般に、第１のテーブル２１５０は、ページ２１１０の各々についてのセキュリティ属性が格納される複数のＥＳＡＴ２１５２について開始アドレスのディレクトリを含んでいる。本明細書で図示した実施例に於いて、単一のＥＳＡＴディレクトリ２１５０を用いてＩ／Ｏデバイス１９６０内部のＩ／Ｏアドレス及び／又はメモリの全範囲をマッピングすることができる。
【０１０８】
Ｉ／Ｏアドレス空間２１５３の第１の部分は最高次ビットを含み一般にディレクトリ２１５４（ＤＩＲ）と呼ばれており、第１のテーブル２１５０へのポインタとして用いられる。Ｉ／Ｏ空間アドレス２１５３はテーブル・データ２１７０を含む部分も含み、この部分はアドレスしようとするテーブル２１５０，２１５２を識別することができる。Ｉ／Ｏ空間アドレス２１５３はさらに、特定のエントリ２１６０，２１８０へ続くテーブル２１５０，２１５２内のオフセット２１２０も含む。第１のテーブル２１５０はベース・アドレス２１５５でシステム・メモリ内に配置される。Ｉ／Ｏ空間アドレス２１５３のＤＩＲ部分２１５４はベース・アドレス２１５５に追加されてエントリ２１６０を特定し、このエントリは第２のテーブル２１５２の一つにある適当なアドレスのベース・アドレスを指すものである。一実施例において、複数の第２のテーブル２１５２がマルチレベル参照テーブル２１３０内に存在し得る。一般に、第１のテーブル２１５０のエントリ２１６０の各々一つずつは第２のテーブル２１５２内のアドレスの一つの開始アドレスを指している。言い換えれば、各エントリ２１８０はそれ自身の別々のＥＳＡＴ２１５２を指している。
【０１０９】
一実施例において、第１のテーブル２１５０と、各第２のテーブル２１５２は物理メモリ内で１ページ２１１０を占有している。つまり、ｘ８６型マイクロプロセッサでページングを有効にした従来のメモリ管理ユニットは、必要に応じてシステム・メモリ内又は外部へテーブル２１５０，２１５２をスワップすることが可能である。つまり、テーブル２１５０，２１５２のマルチレベル構成のため、テーブル２１５２の全部がＩ／Ｏ空間３４０内に同時に存在するのが望ましい。現在メモリ・ユニット１９４７には配置されていないテーブル２１５２の一つが第１のテーブル２１５０のエントリ２１６０で要求された場合、ｘ８６マイクロプロセッサの従来のメモリ管理ユニット（図示してない）は主メモリ例えばハードディスクドライブ装置からページ２１１０を読み込み、要求されたページ２１１０をシステム・メモリに格納することで、アクセスできるようにする。この１ページ・サイズにしたテーブル２１５０，２１５２でマルチレベル参照テーブル２１３０を格納するために必要とされるシステム・メモリの量を減少させ、テーブル２１５０，２１５２を使用してＩ／Ｏ空間１９４０にアクセスするのに必要とされるメモリ・スワッピングの量を減少する。
【０１１０】
一実施例において、各ページは４キロバイトの大きさであり、システム・メモリは合計１６メガバイト又はそれ以上である。つまり、ページ２１１０内にはほぼ４０００個のＥＳＡＴテーブル２１５２が存在できる。一実施例において、４０００個のＥＳＡＴテーブル２１５２の各々は４０００セットのセキュリティ属性を含み得る。さらに、ＥＳＡＴディレクトリ２１５０は４０００個のＥＳＡＴテーブル２１５２の各々についての開始アドレスを含んでいる。第１のテーブル２１５０のエントリ２１６０は適切な第２のテーブル２１５２のベース・アドレスを指す。適切な第２のテーブル２１５２にある所望のエントリ２１８０はエントリ２１６０に含まれるベース・アドレス２１５５へＩ／Ｏ空間アドレス２１５３の第２の部分２１５２（テーブル部分）を追加することで同定される。一実施例において、エントリ２１８０はＩ／Ｏ空間３４０内の同定されたページ２１１０に関連した所定のセキュリティ属性を含む。図２１Ａと図２１Ｂに図示したマルチ・テーブル方式は代表的実施例であり、本開示の恩恵を受ける当業者は本発明により各種のマルチ・テーブル方式を実現できる。
【０１１１】
図２２は、図２２に於いて参照番号２２００で標識されるＳＥＭＩ／Ｏパーミッション・ビットマップの１実施例と、ＳＥＭＩ／Ｏパーミッション・ビットマップ２２００にアクセスするためのメカニズムの１実施例を示す略図である。図２２のメカニズムはＢＩＵ４０６内部の論理内部に実現でき、コンピュータ・システム４００がＳＥＭで動作している場合に適用できる。図２２に於いて、ＳＥＭレジスタ６１０のセットはモデル固有レジスタ（ＭＳＲ）２２０２を含む。ＭＳＲ２２０２はＳＥＭＩ／Ｏパーミッション・ビットマップ２２００の開始（すなわちベース）アドレスを格納するために使用される。前述したように、コンピュータ・システム４００はｎ個の異なるＳＣＩＤ値を有し、ｎはｎ≧１の整数である。ＳＥＭＩ／Ｏパーミッション・ビットマップ２２００は、ｎ個の異なるＳＣＩＤ値の各々に対して異なるＩ／Ｏパーミッション・ビットマップを含む。別々のＩ／Ｏパーミッション・ビットマップの各々は６４ｋビット又は８ｋバイトを含む。
【０１１２】
図２２の実施例に於いて、Ｉ／ＯポートにアクセスするＩ／Ｏ命令を含むメモリ・ページのＳＣＩＤ値は、モデル固有レジスタ２２０２の内容（すなわちＳＥＭＩ／Ｏパーミッション・ビットマップ２２００のベース・アドレス）から、ＳＥＭＩ／Ｏパーミッション・ビットマップ２２００を構成する１つ又はそれ以上の６４ｋビット（８ｋバイト）Ｉ／Ｏパーミッション・ビットマップへの、オフセットとして使用される。その結果、ＳＣＩＤ値に対応するＩ／Ｏパーミッション・マップがアクセスされる。Ｉ／Ｏポート番号はＳＣＩＤ値に対応するＩ／Ｏパーミッション・ビットマップへのビット・オフセットして使用される。この方法でアクセスされるビットはＩ／Ｏポート番号によって定義されたＩ／Ｏポートに対応するビットである。
【０１１３】
図２３は図２３に於いて参照番号２３００が標識されているＳＥＭＩ／Ｏパーミッション・ビットマップの別の実施例と、ＳＥＭＩ／Ｏパーミッション・ビットマップへアクセスするためのメカニズムの別の実施例を示す略図である。図２３のメカニズムはＢＩＵ４０６内部の論理内部に実現できる。図２３の実施例に於いて、ＳＥＭＩ／Ｏパーミッション・ビットマップ２３００は、単一の６４ｋビット（８ｋバイト）Ｉ／Ｏパーミッション・ビットマップを含む。Ｉ／Ｏポート番号はモデル固有レジスタ２２０２（すなわちセキュリティ実行モードＩ／Ｏパーミッション・ビットマップ２２００）の内容からＩ／Ｏパーミッション・ビットマップへのビット・オフセットとして使用される。この方法でアクセスされるビットはＩ／Ｏポート番号によって定義されたＩ／Ｏポートに対応するビットである。他に特に指定しない限り、ＳＥＭＩ／Ｏパーミッション・ビットマップ２２００とＳＥＭＩ／Ｏパーミッション・ビットマップ２３００は相互に交換可能であることに留意する。
【０１１４】
図２４を用いて、ＳＣＩＤ値の割当てと、これに対応するＳＥＭＩ／Ｏパーミッション・ビットマップ２２００、２３００の作成が、セキュリティ目的でコンピュータ・システム４００内部のデバイス・ドライバ及び関連するデバイス・ハードウェア・ユニットを「コンパートメント化」するのにどのように共用されるかを説明する。図２４は図５Ｂと同様のコンピュータ・システム４００の各種ハードウェア及びソフトウェア要素の間の関係を示す略図で、ここに於いてデバイス・ドライバ５０６Ａとこれに対応するデバイス・ハードウェア・ユニット４１４Ａは第１のセキュリティ「コンパートメント」２４００に存在し、デバイス・ドライバ５０６Ｄとこれに対応するデバイス・ハードウェア・ユニット４１４Ｄは第２のセキュリティコンパートメント２４０４に存在する。セキュリティコンパートメント２４００と２４０４は互いに独立しており動作的に隔離されている。デバイス・ドライバ５０６Ａだけがデバイス・ハードウェア・ユニット４１４Ａにアクセスすることを許可されており、デバイス・ドライバ５０６Ｄだけがデバイス・ハードウェア・ユニット４１４Ｄへアクセスすることを許可されている。デバイス・ドライバとこれに関連するデバイス・ハードウェア・ユニットのこのような「コンパートメント化」によって、悪意のある又は誤ったコードがデバイス・ハードウェア・ユニットの状態に悪い影響を与えるのを防止する、又はコンピュータ・システム４００の正しい動作に干渉するのを防止するようにする。
【０１１５】
例えば、図２４の実施例に於いて、デバイス・ドライバ５０６Ａ及び５０６Ｄの命令を含むメモリ・ページには異なるＳＣＩＤ値が割り当てられる。デバイス・ドライバ５０６ＡのＳＣＩＤ値について作成された第１のＳＥＭＩ／Ｏパーミッション・ビットマップ２２００、２３００により、デバイス・ドライバ５０６Ａは、デバイス・ハードウェア・ユニット４１４Ａに割り当てられたコンピュータ・システム４００のＩ／Ｏアドレス空間の第１の部分へアクセスすることができ、またデバイス・ドライバ５０６Ａはデバイス・ハードウェア・ユニット４１４Ｄに割り当てられたＩ／Ｏアドレス空間の第２の部分へアクセスすることができる。同様に、デバイス・ドライバ５０６ＤのＳＣＩＤ値について作成された第２のＳＥＭＩ／Ｏパーミッション・ビットマップ２２００、２３００により、デバイス・ドライバ５０６Ｄはデバイス・ハードウェア・ユニット４１４Ｄに割り当てられたＩ／Ｏアドレス空間の第２の部分にアクセスすることができ、又デバイス・ドライバ５０６Ａはデバイス・ハードウェア・ユニット４１４Ａに割り当てられたＩ／Ｏアドレス空間の第１の部分へアクセスすることができない。結果として、デバイス・ドライバ５０６Ａだけがデバイス・ハードウェア・ユニット４１４Ａへアクセスを許され、デバイス・ドライバ５０６Ｄだけがデバイス・ハードウェア・ユニット４１４Ｄへアクセスすることを許される。
【０１１６】
前述したシステム３００とこれに関して説明した各種の特徴に鑑み、コンピュータ・システム４００をその実施例のいずれかで動作させる方法３３００の実施例が図２５に図示してある。方法３３００はブロック３３０５で非セキュリティルーチンを実行することを含む。非セキュリティルーチンは動作にセキュリティプロトコルを必要としない典型的なソフトウェア・ルーチンである。非セキュリティルーチンはまた最小限のセキュリティプロトコルを備えたソフトウェア・ルーチンでもある。非セキュリティルーチンはオペレーティング・システム・コールを含む。
【０１１７】
方法３３００は又ブロック３３１０で非セキュリティルーチンからの要求を受信することも含む。要求は、例えば、メモリ・トランザクション、Ｉ／Ｏトランザクション、デバイス間トランザクション、又はソフトウェア・ルーチンを含む。要求は代表的にはコンピュータ・システム４００による想定された応答に適合するはずである。方法３３００はブロック３３１５で、ハードウェアにおける要求の第１の評価を実行する。第１の評価は特徴付け（characterization）又はその他の広範囲で潜在的なセキュリティリスク決定を含む。第１の評価は真のセキュリティリスクではないが、可能性として又は潜在的なセキュリティリスクを含むカテゴリ又はトランザクション形式に分類される要求にフラグを立てる。
【０１１８】
方法３３００は次にブロック３３２０で要求が潜在的にセキュリティリスクがあるかを判定する。決定ブロック３３２０に於いて要求が潜在的セキュリティリスクとしてみなされない場合には、方法３３００はブロック３３２５で要求を充当する。要求は何らかのセキュリティリスクを最小限に止めるように及び／又はコンピュータ・システム４００の応答時間を最大にするように充当される。ブロック３３２０に於いて要求が潜在的セキュリティリスクであると看做される場合には、方法３３００はブロック３３３０でソフトウェアによるさらに詳細な第２の評価を実行する。第２の評価は要求及び、予想される応答で要求を充当する際の何らかの潜在的なセキュリティリスクについてのさらに全体的な評価を含む。
【０１１９】
方法３３００は次に決定ブロック３３３５で、要求がセキュリティリスクと看做されたか判定する。決定ブロック３３３５で要求がセキュリティリスクであると看做されなかった場合、方法３３００はブロック３３２５で要求を充当する。要求は何らかのセキュリティリスクを最小限に止めるように及び／又はコンピュータ・システム４００の応答時間を最大にするように充当される。要求が決定ブロック３３３５でセキュリティリスクであると看做された場合、方法３３００は決定ブロック３３４０で、本明細書に記載した本発明の態様の１つ又はそれ以上を用いて要求にセキュリティ的に応答できるように、リスクを管理できるかを判定する。決定ブロック３３４０で要求を充当する際のセキュリティリスクが管理可能であると看做される場合、方法３３００はブロック３３４５でセキュリティ版の要求に充当する。一実施例において、応答は仮想化によって実行され、要求が要求された通りには充当されなかったとの表示を非セキュリティルーチンは受け取らない。その代わり要求はコンピュータ・システム４００が要求に関連したセキュリティ上の問題をトラップするか又は内包できるようにするソフトウェア構造体によって充当される。要求を充当する際のセキュリティリスクが管理不可能であると看做される場合、方法３３００はブロック３３５０で要求を拒否するか又は無視する。方法３３００はまたダミー又は所定の応答で要求に応答することもある。
【０１２０】
ブロック３３１５に於ける第１の評価はハードウェアに於いて有利にも迅速に実行できる。ブロック３３３０に於ける第２の評価はソフトウェアに於いて有利にも一層完全に実行できる。ソフトウェア評価もまた新規セキュリティリスク・アルゴリズムが開発されたなら容易に更新することができる。
【０１２１】
以下に示す要求及び可能性としてのセキュリティ応答は単なる例であって、何らかの特定の請求項を制限することを意図していない。セキュリティ化された極秘データを含むメモリ・ページに書き込もうとする要求を考える。書き込みは要求どおりには許可できない。メモリ・ページは仮想ページへと仮想化され、書き込みは仮想ページへ許可される。そしてコンピュータ・システム４００は仮想ページへの変更を評価することができる。
【０１２２】
次に保護レジスタへの書き込みの要求を考える。保護レジスタは仮想レジスタへ仮想化される。書き込みは仮想レジスタへ許可することができセキュリティリスクについて評価できる。さらにリアルタイム・クロックを変更する要求についても考えてみる。リアルタイム・クロックは仮想クロックへ仮想化される。要求はリアルタイム・クロックを変更すること無しに非セキュリティルーチンで充当される。
【０１２３】
以上で説明した本発明の幾つかの態様はハードウェア又はソフトウェアに於いて実装される。つまり、本明細書の詳細な説明のある部分は結果的に、ハードウェアで実装された処理として提示され、本明細書の詳細な説明のある部分は結果的に、計算システム又は計算デバイスのメモリ内部にあるデータ・ビットに対する演算の記号表現が関係するような、ソフトウェアで実装された処理として表現される。これらの説明及び表現は当業者がその業績の本質をより効率的にハードウェアとソフトウェアの双方を使用する他の当業者へ伝達するために使用する手段である。双方の処理及び演算は物理量の物理的操作を必要とする。ソフトウェアに於いて、通常、必要ではないが、これらの量は、格納したり、転送したり、組み合わせたり、比較したり、又何らかの操作をしたりできる電気的、磁気的、又は光学的信号の形を取る。時に原理的に共通の使用の理由からこれらの信号をビット、値、要素、記号、文字、項、数、又は同様な物として参照するのが便利であることは実証されている。
【０１２４】
しかしこれらの全てと同様の項目が、適当な物理量に関連付けられるべきことと、これらの量に適用する単に便利なラベルであることは心しておくべきである。特記するか又は何らか自明でない限り、本開示全体を通して、これらの説明は、何らかの電子デバイスのストレージ内の物理量（電気的、磁気的、又は光学的）として表現されるデータを、これも同様にストレージ内部の物理量として表現される他のデータへと、又は伝送又は表示デバイスへ、操作したり変換したりする電子デバイスの動作及び処理を表すものである。このような説明の意味する項目の代表例としては、制限を意味することなく、「処理する（processing）」、「計算する（computing）」、「計算する（calculating）」、「決定する」、「表示する」及びその他同様な項目がある。
【０１２５】
本発明のソフトウェアで実装された態様は代表的にはプログラム・ストレージ媒体の何らかの形状で符号化されるか、何らかの種類の伝送媒体の上に実装されることも注意する。プログラム・ストレージ媒体は磁気的（例えばフロッピー・ディスク又はハードディスクドライブ）又は光学的（例えばコンパクトディスク・リード・オンリー・メモリ又は「ＣＤ−ＲＯＭ」）であり、読み出し専用又はランダムアクセスできるものである。同様に、伝送媒体はツイステッドペア線、同軸ケーブル、光ファイバ、又は当該技術で公知の他の何らかの適当な伝送媒体である。本発明は何らかの任意の実装のこれらの態様によって制限されるものではない。
【０１２６】
上記で開示した特定の実施例は単に図示を目的としており、本明細書の挟持の恩恵を受ける当業者には明らかなように異なっているが等価な方法で本発明を変更し実施することができる。さらに、以下の請求項に記載されている以外、本明細書に示した構成又は設計の詳細には制限を意図していない。したがって上記で開示した特定の実施例を変更又は改良でき、これら全ての変化が本発明の範囲と精神に含まれると看做されることは明らかである。したがって本明細書で要求する保護は以下の請求項に記載した通りである。
【図面の簡単な説明】
【０１２７】
【図１】ウィンドウズ（登録商標）オペレーティング・システムを実行する際など、ｘ８６プロセッサにより作成される例外スタック・フレームの略図である。
【図２】SYSCALL／SYSRETターゲット・アドレス・レジスタの略図である。
【図３】本発明の１つの態様によるシステムの１実施例の略図である。
【図４Ａ】本発明の１つの態様により使用することができるコンピュータ・システムの１実施例のブロック図である。
【図４Ｂ】本発明の１つの態様によるコンピュータ・システムの１実施例の略図で、中央演算処理装置（ＣＰＵ）を含み、ＣＰＵはＣＰＵによって生成される未許可アドレスからデバイス・ハードウェアを保護するために使用される入出力（Ｉ／Ｏ）セキュリティチェック・ユニット（ＳＣＵ）を含む。
【図４Ｃ】本発明の１つの態様によるコンピュータ・システムの１実施例の略図で、ＣＰＵセキュリティチェック・ユニット（ＳＣＵ）を含むＣＰＵと、ホスト・ブリッジＳＣＵを含むホスト・ブリッジとを含む。
【図５Ａ】本発明の１つの態様によるコンピュータ・システム実施例の各種ハードウェア及びソフトウェア要素の間の関係を示す略図である。
【図５Ｂ】本発明の１つの態様によるコンピュータ・システム実施例の各種ハードウェア及びソフトウェア要素の間の関係を示す別の略図である。
【図５Ｃ】本発明の１つの態様によるコンピュータ・システム実施例の各種ハードウェア及びソフトウェア要素の間の関係を示すさらに別の略図である。
【図６Ａ】本発明の１つの態様によるＣＰＵの１実施例の略図である。
【図６Ｂ】本発明の１つの態様によるＣＰＵの別の実施例の略図である。
【図６Ｃ】本発明の１つの態様によるＣＰＵの別の実施例の略図である。
【図７】本発明の１つの態様によるＣＰＵ  ＳＣＵを備えたページング・ユニットを含むＭＭＵの１実施例の略図である。
【図８Ａ】本発明の１つの態様によるＩ／ＯＳＣＵの１実施例を示す略図である。
【図８Ｂ】本発明の１つの態様によるＣＰＵ  ＳＣＵの１実施例を示す略図である。
【図９】セキュリティ例外モード（ＳＥＭ）例外を処理するために使用されるＳＭＣＡＬＬ／ＳＭＲＥＴターゲット・アドレス・レジスタ（ＳＭＳＴＡＲ）及びセキュリティモードＧＳベース（ＳＭＧＳＢＡＳＥ）レジスタの本発明の１つの態様による実施例の略図である。
【図１０Ａ】ＳＥＭ例外が発生した場合に生成されるＳＥＭ例外スタック・フレームの、本発明の１つの態様による１実施例の略図である。
【図１０Ｂ】本発明の１つの態様による、ＳＥＭ例外スタック・フレームのエラー・コードの代表的フォーマットの略図である。
【図１１】本発明の１つの態様によるセキュリティ実行モード例外を処理する方法の実施例のフローチャートを示す。
【図１２】コンピュータ・システム内でセキュリティを保持するための、本発明の各種態様による各種実施例を含む略図である。
【図１３】本発明の一実施例による、選択したメモリ・ページのセキュリティ属性テーブル（ＳＡＴ）へアクセスして選択したメモリ・ページの追加セキュリティ情報を取得するためのメカニズムの１実施例の略図である。
【図１４Ａ】本発明の１つの態様による、ＳＡＴデフォルト・レジスタの１実施例の略図である。
【図１４Ｂ】本発明の１つの態様による、ＳＡＴディレクトリ・エントリ・フォーマットの１実施例の略図である。
【図１５】本発明の１つの態様による、ＳＡＴエントリ・フォーマットの１実施例の略図である。
【図１６Ａ】本発明の１つの態様による、ホスト・ブリッジＳＣＵを含むホスト・ブリッジの１実施例の略図である。
【図１６Ｂ】本発明の１つの態様による、略図である。
【図１７】本発明の１つの態様による、ホスト・ブリッジＳＣＵの１実施例の略図である。
【図１８】本発明の１つの態様による、アクセス許可テーブルを含むホスト・ブリッジＳＣＵの１実施例の略図である。
【図１９】本発明の１つの態様による、本発明の１実施例による図２に図示した処理ユニットのさらに詳細なブロック図表現である。
【図２０】本発明の一実施例による、図１９に図示したＩ／Ｏアクセス・インタフェースのさらに詳細なブロック図表現である。
【図２１Ａ】本発明の各種態様による、図１９〜図２０に図示したプロセッサで実行されるＩ／Ｏ空間／Ｉ／Ｏメモリ・アクセスのブロック図表現である。
【図２２】本発明の各種態様による、メモリ内に格納されたＳＥＭＩ／Ｏ許可ビットマップの１実施例と、ＳＥＭＩ／Ｏ許可ビットマップにアクセスするためのメカニズムの１実施例とを示す略図である。
【図２２Ｂ】本発明の各種態様による、図１９〜図２０に図示したプロセッサで実行されるＩ／Ｏ空間／Ｉ／Ｏメモリ・アクセスのブロック図表現である。
【図２３】本発明の各種態様による、図２２のＳＥＭＩ／Ｏ許可ビットマップの別の実施例と、ＳＥＭＩ／Ｏ許可ビットマップへアクセスするためのメカニズムの別の実施例とを示す略図である。
【図２４】本発明の１つの態様による、コンピュータ・システムの各種ハードウェア及びソフトウェア要素の間の関係を示す略図で、第１のデバイス・ドライバとこれに対応する第１のデバイス・ハードウェア・ユニットが第１のセキュリティ「区画」内に存在し、第２のデバイス・ドライバとこれに対応する第２のデバイス・ハードウェア・ユニットが、前記第１のセキュリティ区画とは別の動作的に隔離された第２のセキュリティ区画内に存在する。
【図２５】本発明の１つの態様による、セキュリティ状態を改善するためのコンピュータ・システムの動作方法の実施例のフローチャートを示す。
【図１】
2005528686.tif 000003
【図２】
2005528686.tif 000004
【図３】
2005528686.tif 000005
【図４Ａ】
2005528686.tif 000006
【図４Ｂ】
2005528686.tif 000007
【図４Ｃ】
2005528686.tif 000008
【図５Ａ】
2005528686.tif 000009
【図５Ｂ】
2005528686.tif 000010
【図５Ｃ】
2005528686.tif 000011
【図６Ａ】
2005528686.tif 000012
【図６Ｂ】
2005528686.tif 000013
【図６Ｃ】
2005528686.tif 000014
【図６Ｄ】
2005528686.tif 000015
【図７】
2005528686.tif 000016
【図８Ａ】
2005528686.tif 000017
【図８Ｂ】
2005528686.tif 000018
【図９】
2005528686.tif 000019
【図１０Ａ】
2005528686.tif 000020
【図１０Ｂ】
2005528686.tif 000021
【図１１】
2005528686.tif 000022
【図１２】
2005528686.tif 000023
【図１３】
2005528686.tif 000024
【図１４Ａ】
2005528686.tif 000025
【図１４Ｂ】
2005528686.tif 000026
【図１５】
2005528686.tif 000027
【図１６Ａ】
2005528686.tif 000028
【図１６Ｂ】
2005528686.tif 000029
【図１７】
2005528686.tif 000030
【図１８】
2005528686.tif 000031
【図１９】
2005528686.tif 000032
【図２０】
2005528686.tif 000033
【図２１Ａ】
2005528686.tif 000034
【図２１Ｂ】
2005528686.tif 000035
【図２２】
2005528686.tif 000036
【図２３】
2005528686.tif 000037
【図２４】
2005528686.tif 000038
【図２５】
2005528686.tif 000039
【手続補正書】
【提出日】平成16年6月14日(2004.6.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
セキュリティルーチンと非セキュリティルーチンとを実行するように構成可能なプロセッサ（４０４）と、
前記非セキュリティルーチンに関連する要求の第１の評価を実行するように接続され、さらに前記第１のセキュリティ評価に基づいて前記セキュリティルーチンへ前記要求の通知を提供するように構成されたハードウェアとを含み、
前記セキュリティルーチンは、前記第１のセキュリティ評価に基づいて前記要求の第２のセキュリティ評価を実行するように構成され、前記セキュリティルーチンはさらに前記第２のセキュリティ評価に基づいて、前記要求により要求された応答を拒否するように構成される、コンピュータ・システム（４００Ａ−Ｂ）。
【請求項２】
前記セキュリティルーチンは前記要求の前記第２の評価を実行するように構成されたソフトウェアセキュリティ例外ハンドラ（１２１０）を含む請求項１に記載のコンピュータ・システム。
【請求項３】
前記ソフトウェアセキュリティ例外ハンドラ（１２１０）は前記要求が前記第２の評価を通過した場合前記要求された応答を許可するように構成される請求項２に記載のコンピュータ・システム。
【請求項４】
前記セキュリティルーチンはセキュリティカーネル（５０５）の要素であり、前記セキュリティカーネル（５０５）はオペレーティング・システム（５０２）の要素である請求項１に記載のコンピュータ・システム。
【請求項５】
前記第１のセキュリティ評価では、前記要求が可能性として又は潜在的なセキュリティリスクを含むようなカテゴリ及びトランザクション形式の少なくとも一つに分類されるかどうかを判定し、前記第２のセキュリティ評価は前記要求がセキュリティリスクであるかどうかを判定するセキュリティリスク評価である請求項１に記載のコンピュータ・システム。
【請求項６】
前記第１のセキュリティ評価では、最小限のセキュリティリスクを伴うカテゴリ又はトランザクション形式や、潜在的に高いセキュリティリスクを伴うカテゴリ又はトランザクション形式を含む複数のカテゴリと前記要求とを比較することにより、可能性として又は潜在的セキュリティリスクを含むカテゴリ及びトランザクション形式の少なくとも一つに前記要求が該当するかどうかを判定し、前記要求が潜在的に高いセキュリティリスクを伴うカテゴリの一つに該当する場合は、前記ハードウェアは前記セキュリティルーチンに前記要求を通知する請求項５に記載のコンピュータ・システム。
【請求項７】
前記ハードウェアは、少なくともセキュリティ実行モードビット（６０９）を格納するセキュリティ実行モードハンドラ（６１０）とＩ／Ｏ保護ビットマップ（２２００）とセキュリティ属性データ構造とを格納するメモリ（４０６）を含み、前記セキュリティルーチンはマイクロコード（６５０）と有限状態マシンの少なくとも一方を含む請求項１に記載のコンピュータ・システム。
【請求項８】
非セキュリティルーチンを実行し、
前記非セキュリティルーチンから要求を受け取り、
前記要求の第１の評価をハードウェアで実行し、及び
前記第１のセキュリティ評価に基づいて、前記要求の第２の評価をセキュリティルーチン内でソフトウェアで実行する、方法。
【請求項９】
前記要求の前記第１の評価のハードウェアでの実行では、前記要求のカテゴリ分けをハードウェアで実行し、前記要求の前記第２の評価の前記セキュリティルーチン内のソフトウェアでの実行では、前記要求のセキュリティリスク評価を前記セキュリティルーチン内でソフトウェアで実行する請求項８に記載の方法。
【請求項１０】
前記要求のカテゴリ分けのハードウェアでの実行では、前記要求を、わずかなセキュリティリスクを伴うカテゴリと潜在的セキュリティリスクを伴うカテゴリとを含む複数のカテゴリと比較し、前記要求が潜在的セキュリティリスクを伴うカテゴリの一つに該当する場合、前記ハードウェアが前記要求を前記セキュリティルーチンへ渡す、請求項９に記載の方法。
【国際調査報告】
2005528686.tif 000040
2005528686.tif 000041
2005528686.tif 000042