(57)【要約】  目標とされたセキュリティを用いてアクセスするためのＩ／Ｏデバイスを実行するための方法及び装置である。ソフトウェアオブジェクト（３５０）が実施される。ソフトウェアオブジェクト（３５０）のセキュリティレベルが構築される。マルチテーブル入出力（Ｉ／Ｏ）スペースアクセスは、少なくともセキュリティレベルの１つを用いて実行される。ソフトウェアオブジェクト（３５０）の機能が実施される。
2005515536.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアオブジェクト（３５０）を実行し、
前記ソフトウェアオブジェクト（３５０）にセキュリティレベルを設定し、
前記セキュリティレベルの少なくとも一つを用いてマルチテーブル入出力（Ｉ／Ｏ）空間アクセスを実行し、
前記オブジェクト（３５０）の前記機能を実行する、方法。
【請求項２】
前記ソフトウェアオブジェクト（３５０）のセキュリティレベルの設定では、メモリ（３４７）の少なくとも一部のＩ／Ｏ空間アクセス空間に関連するセキュリティレベルの割当がなされる、請求項１記載の方法。
【請求項３】
前記セキュリティレベルの少なくとも一つを用いたマルチテーブルＩ／Ｏ空間アクセスの実行では、
第２のＩ／Ｏテーブル（４３０）を設定し、
前記ソフトウェアオブジェクト（３５０）の実行に基づいてＩ／Ｏ空間アクセスリクエストを受信し、
前記第２のＩ／Ｏテーブル（４３０）及び少なくとも一つのバーチャルメモリーテーブルを用いて、前記Ｉ／Ｏ空間アクセスリクエストに基づいてマルチレベルテーブルアクセスを実行し、
前記マルチレベルテーブルアクセスに基づいてＩ／Ｏデバイス（３６０）の少なくとも一部にアクセスする、請求項１記載の方法。
【請求項４】
第２のＩ／Ｏテーブル（４３０）の設定では、
Ｉ／Ｏ空間（３４０）を複数のセグメントに分割し、
前記複数のセグメントのうち前記第２のＩ／Ｏテーブル（４３０）からオミットすべきセグメントを少なくとも一つ、オミットされないセグメントを少なくとも一つ、それぞれ決定し、
前記オミットされたセグメントに対してデフォルトセキュリティレベルを割り当て、
前記オミットされなかったセグメントに対してはセキュリティレベルを割り当て、
少なくとも一つの割り当てられたセグメントをＩ／Ｏ空間（３４０）ロケーションを関連付ける、請求項３記載の方法。
【請求項５】
善意Ｉ／Ｏ空間アクセスリクエストに基づいたマルチレベルテーブルアクセスの実行では、
前記第２のＩ／Ｏテーブル（４３０）内のセグメントに対応する少なくとも一つのセキュリティレベルを決定し、
前記オブジェクトの実行に応答して、アクセスされるセグメントに関連付けられたセキュリティレベルと、実行セキュリティレベルと、の一致性を照合し、
アクセスされた前記セグメントに関連付けられた前記セキュリティレベルと前記実行セキュリティレベルとの一致性に応じて、前記第２のＩ／Ｏテーブル（４３０）に基づいてＩ／Ｏ空間アドレスを決定し、
前記Ｉ／Ｏ空間アドレスに対応するＩ／Ｏデバイス（３６０）のロケーションを決定する、請求項３記載の方法。
【請求項６】
前記第２のＩ／Ｏテーブル（４３０）内のセグメントに対応する少なくとも一つのセキュリティレベルの決定では、
前記第２のＩ／Ｏテーブル（４３０）から物理Ｉ／Ｏデバイスアドレスを決定し、
前記物理Ｉ／Ｏデバイスアドレスに基づいて実行されるセグメントを決定し、
前記実行されるセグメントの決定に基づいて現在のセキュリティレベルを定義する、請求項５記載の方法。
【請求項７】
所望のセキュリティを用いてＩ／Ｏデバイスアクセスを実行する装置であって、
バス（３１５）に結合されたプロセッサ（３１０）と、
前記プロセッサ（３１０）に少なくとも一つのソフトウェアオブジェクトを結合させる手段と、
入出力（Ｉ／Ｏ）デバイスと、
前記バス（３１５）及びメモリユニット（３４７）に結合さたＩ／Ｏアクセスインターフェース（３２０）と、を有し、当該Ｉ／Ｏアクセスインターフェースは、前記プロセッサによる前記ソフトウェアオブジェクト（３５０）の実行に応答して、前記プロセッサ（３１０）に、前記メモリユニット（３４７）の少なくとも一部のマルチテーブルＩ／Ｏ空間アクセスを前記少なくとも一つのセキュリティレベルに基づいて与える、装置。
【請求項８】
前記Ｉ／Ｏ空間アクセスインターフェースは、第２のＩ／Ｏテーブル（４３０）に結合されたＩ／Ｏ空間アクセステーブル（４１０）を有し、当該Ｉ／Ｏアクセスインターフェース（３２０）により、セキュリティレベルに基づいて前記Ｉ／Ｏデバイス（３６０）の少なくとも一部にアクセスするための仮想メモリアドレッシングスキームが提供される、請求項７記載の装置。
【請求項９】
コンピュータに実行されたときに所定の方法を実行するインストラクションを含んでエンコードされたコンピュータ可読プログラム記録デバイスであって、前記方法では、
ソフトウェアオブジェクト（３５０）を実行し、
前記ソフトウェアオブジェクト（３５０）にセキュリティレベルを設定し、
第２の入出力（Ｉ／Ｏ）テーブル（４３０）を設定し、
前記ソフトウェアオブジェクト（３５０）の実行に基づいてＩ／Ｏ空間アクセスリクエストを受信し、
前記第２のＩ／Ｏテーブル（４３０）内のセグメントに対応するセキュリティレベルを少なくとも一つ決定し、
前記ソフトウェアオブジェクトの実行に応答して、アクセスされるセグメントに関連付けられたセキュリティレベルと、実行セキュリティレベルと、の一致性を照合し、
アクセスされた前記セグメントに関連付けられた前記セキュリティレベルと前記実行セキュリティレベルとの一致性に応じて、前記第２のＩ／Ｏテーブル（４３０）に基づいてＩ／Ｏ空間アドレスを決定し、
前記Ｉ／Ｏ空間アドレスに対応する物理Ｉ／Ｏデバイス（３６０）のロケーション（物理メモリロケーション）を決定する、コンピュータ可読プログラム記録デバイス。
【請求項１０】
コンピュータに実行されたときに請求項９に記載の方法を実行するインストラクションを含んでエンコードされたコンピュータ可読プログラム記録デバイスであって、前記第２のＩ／Ｏテーブル（４３０）内のセグメントに対応するセキュリティレベルの少なくとも一つの決定では、
前記Ｉ／Ｏ空間テーブルから物理Ｉ／Ｏデバイス（３６０）アドレスを決定し、
前記物理Ｉ／Ｏデバイス（３６０）アドレスに基づいて実行されるセグメントを決定し、
前記実行されるセグメントの決定に基づいて現在のセキュリティレベルを設定する、コンピュータ可読プログラム記録デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータシステム操作に関連し、主に、安全な入出力（Ｉ／Ｏ）アクセスを用意するための物理的なアドレスに基づいたセキュリティスキームを実行するための方法及び装置に係わる。
【背景技術】
【０００２】
コンピュータ又はコンピュータシステムは、今日の工業用アプリケーションとホームアプリケーションの多くにおいて重要な構成要素である。製造システム、電力システム、製品流通システム、書類システム等のような多くのシステムは、プロセッサを使用するコンピュータシステムによって支えられている。これらのプロセッサは、種々のテストを行い、複数ソフトウェアプログラムの交信を実行する。多くの場合、入出力デバイスは、プロセッサとソフトウェアプログラムオペレーションの操作を可能にする。ある種のソフトウェア構造（例えば、ソフトウェアオブジェクト、サブルーティン、スタンドアローンプログラム等）が制御されて他のソフトウェア構築よりも優先権を付与されるように、プロセッサのオペレーション時には標準レベルのセキュリティが要請される。多くの場合、認証されていない、又は不正のアクセスやオペレーションがプロセッサにより実行されることのないように、ある種のソフトウェア構造とあるプロセッサ機能へのアクセスには制限が設けられている。現在のコンピュータアーキテクチャは、コンピュータシステムの物理的メモリ内にある、いくつかのシステム定義されたテーブルを用いる仮想メモリを使用するためのスキームを含む。これらのシステムテーブル内のエントリは、一般的に予め限定され、あるソフトウェア構築にアクセスすることを限定する、リザーブされたセクションを含む。
【０００３】
コンピュータシステムは、単一タスクデバイスからマルチタスクデバイスに進化してきた。コンピュータシステムは、多数のタスクを実行するためのオペレーティングシステムを使用してこれらのリソース使用を管理する。一般的には、ユーザが処理を実行する（例えば、ワードプロセッサのようなアプリケーションプログラムを開く）と、操作システムでは、あるコンピュータリソース（例えば、メモリの一部）をタスクに占有させる。しかしながら、この方法では、多くのコンピュータリソースを占有させることはできない。例えば、プリンタドライバは、マルチタスクによって頻繁に用いられる。それ故、操作システムは通常、このような共有されたリソースに係わるアクセス権とタスクのプロトコルを設定する。従って操作システムの動作により、コンピュータシステムは、効果的な方法でマルチタスクを同時に実行可能となっている。
【０００４】
このようなコンピュータ環境においては、“セキュリティ”が重要となる。マルチタスクを採用したコンピュータシステムでは、ユーザプロセスから操作システムを保護し、相互の処理を保護するために、セキュリティと保護サービスを採用している。保護がなければ、悪意のあるプログラムが、操作システム又は他の処理に属するメモリスペースにおけるプログラムコード又はプログラムデータをユーザの意に反して破壊することが可能である。少なくとも本願においては、セキュリティとは、これらの悪意ある行為自体を阻止することを意図するものではなく、これらの悪意ある行為からの保護を意味するものである。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ｘ８６プロセッサのような多くのプロセッサは、特権レベルのような複数セキュリティレベルを用意する。図１を参照すると、複数セキュリティレベルの表示の一実施例が示されている。図１に示す逆ピラミッド型構造は、４つのセキュリティ（特権）レベルであるレベル０，レベル１，レベル２，レベル３、及びレベルｎまでを表す。操作システムはレベル０のような特権レベルが付与されている。セキュリティレベル０によって提供される特権により、特定のソフトウェア構造が、レベル１からレベル３のような後続のセキュリティレベルからのアクセスを獲得することを可能にする。もしソフトウェア構造が、セキュリティレベル２の特権のみを許可されるとすると、この特定ソフトウェアは特権レベル２と特権レベル３によって付与される操作に関してのみアクセスを有し、制御可能であることになる。マイクロソフトウィンドウズ（登録商標）のような多くのケースでは、複数の特権レベルの全性能を用いることはない。ソフトウェア操作システムにおいて、レベル０やレベル３のような２つのレベルのみを用いるものもある。
【０００６】
操作システムサービスと全部のドライバがセキュリティレベル０で動作している間でも、ユーザアプリケーションプログラムは、セキュリティレベル３で実行され得る。このことは、コンピュータシステムを種々のセキュリティリスクにさらすことになる。これは、殆どのドライバが、最も特権を有するレベルであるセキュリティレベル０で動作しているため全部のコンピュータリソースに対するアクセスを有するのことからも実証される。従って、モデムドライバのようなコンピュータシステムのＩ／Ｏデバイスを制御するドライバに対する権限のないアクセスによって、Ｉ／Ｏデバイスの不正操作を引き起こし、システム破壊又は不正使用という結果を生じ得る。更に、システムＩ／Ｏデバイスに対する不正アクセスにより、重要なデータやソフトウェアプログラムの損失が引き起こされるおそれがある。
【０００７】
本発明は、上述した１つ以上の問題を解決、又は少なくとも削減することを目的としている。
【課題を解決するための手段】
【０００８】
本発明の一態様においては、ターゲットとなるセキュリティレベル、つまり所望のセキュリティを用いてＩ／Ｏデバイスにアクセスを実行する方法が用意される。ソフトウェアオブジェクトが実行される。ソフトウェアオブジェクトのセキュリティレベルが設定される。マルチテーブル入出力（Ｉ／Ｏ）空間アクセスが少なくとも１つのセキュリティレベルを用いて実行される。オブジェクトの機能が実施される。
【０００９】
本発明の他の態様において、標的セキュリティを用いてＩ／Ｏデバイスを実行する装置が、用意される。本発明の装置は、バスに結合されるプロセッサ、少なくとも１つのソフトウェアオブジェクトがプロセッサに結合される手段、入出力（Ｉ／Ｏ）デバイス、バスとメモリユニットに結合される（Ｉ／Ｏ）アクセスインターフェース、及び、ソフトウェアオブジェクトを実施するプロセッサに応じて少なくとも１つのセキュリティレベルに基づくメモリの少なくとも一部のプロセッサマルチレベルテーブルＩ／Ｏ空間アクセスを用意するメモリアクセスインターフェースを含む。
【発明を実施するための最良の形態】
【００１０】
本発明は、種々の変形及び形態で実施することができるが、以下に、本発明の一実施形態図示し、詳細を記載する。しかしながら、この実施形態は、単に例示的なものに過ぎず、本発明を特定の実施形態に限定することを意図したものではない。逆に、本クレームの趣旨及び範囲に属するすべての修正、等価物、及び変形例は、本願発明の範疇に属するものである。
以下、本発明の実施形態を記載する。明瞭性を期すために、実際の実施例の全部の特徴は本明細書に記載されていない。このような実際の実施例の開発にあたって、システム関連又はビジネス関連制約に応じた種々の変化に富んだ実施例が実施され、開発者の特定の目的を満たすために、個々の実施形態に特有の仕様が採用され得る。更に、このような開発努力は、複雑で時間を要することではあるが、当業者にとっては、本願における開示の利益を享受するための通常の能力の発揮にすぎない。
以下、本発明を、添付した図面を参照して説明する。図面において、同一の要素あるいは同等の要素に対しては同一番号を付している。
【００１１】
本発明の実施形態は、セキュリティアクセスシステムを用いたＩ／Ｏ空間アクセスを用意する。本発明の実施形態は、コンピュータシステムにおいて１つ以上のプロセッサによって起動したＩ／Ｏ空間にアクセスする（例えば、Ｉ／Ｏデバイスにアクセスする）間、マルチＩ／Ｏ空間アクセステーブル及び／又はＩ／Ｏメモリアクセステーブルシステムのためにセキュリティを用意する。本発明の実施形態は、また、結果としてＩ／Ｏ空間アクセスとＩ／Ｏメモリアクセスの間、セキュリティ度を高める、Ｉ／Ｏ空間アクセステーブルと第２Ｉ／Ｏメモリアクセステーブルを用いるＩ／Ｏ空間アクセスシステムを用意する。  
【００１２】
図２に、本発明に係るシステム２００の一実施形態を示す。システム２００は、プロセスユニット２１０と、キーボード２３０、マーズ２４０、入力ペン２５０のような複数入出力デバイスと、モニタのような表示ユニット２２０と、を有する。本発明によって開示されるセキュリティレベルは、一実施形態によると、プロセスユニット２１０内にある。入出力デバイス２３０，２４０，２５０の１つからの入力は、プロセスユニット２１０における、操作システムを含む１以上のソフトウェアの起動して実行させる。次にシステム２００にあるＩ／Ｏ空間に関連するＩ／Ｏ空間及び／又はＩ／Ｏメモリがアクセスされ、プロセスユニット２１０内にある種々のソフトウェア構造が実行される。本発明の実施形態では、システム２００内にプログラムされた所定のセキュリティエントリに基づき、１つ以上のソフトウェア構造によって起動されるＩ／Ｏ空間アクセスを限定する。
【００１３】
図３に、本発明に係るプロセスユニット２１０の一実施形態を簡略したブロック図を示す。一実施形態におけるプロセスユニット２１０は、プロセッサ３１０、Ｉ／Ｏアクセスインターフェース３２０、Ｉ／Ｏ空間３４０、及びソフトウェアオブジェクト又はソフトウェア構造のようなプログラム可能なオブジェクト３５０を含む。このプロセッサ３１０は、複数プロセッサ（図示されていない）を有するマイクロプロセッサである。
【００１４】
一実施形態において、Ｉ／Ｏ空間３４０は、モデム、ディスクドライブ、ハードシスクドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤドライブ、ＰＣＭＣＩＡカード、及び種々の入出力周辺デバイスのようなＩ／Ｏデバイス３６０に対して“ゲートウェイ”を用意する。他の実施形態においては、Ｉ／Ｏ空間３４０は、Ｉ／Ｏデバイス３６０内に一体化されている。一実施形態において、Ｉ／Ｏ空間３４０は、Ｉ／Ｏ空間３４０とアドレス指定と通信に関連するデータを含むメモリユニット３４７を有する。メモリユニット３４７は、磁気テープメモリ、フラッシュメモリ、ランダムアクセスメモリ、半導体チップにおけるメモリ等のような物理的メモリを含む、物理的メモリセクションを有する。半導体チップにおけるメモリは、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、倍率（？）ダイナミックランダムアクセスメモリ（ＤＤＲＡＭ）のような種々の形態を用いることができる。
【００１５】
プロセッサ３１０は、システムＩ／Ｏアクセスインターフェース３２０を介してＩ／Ｏ空間３４０と通信を行う。一実施形態において、Ｉ／Ｏアクセスインターフェース３２０は、従来の構造のものであり、所望の入出力データトランザクションを特徴付けるために、Ｉ／Ｏ空間３４０に対してＩ／Ｏ空間アドレスとロジック信号を用意する。本発明の一実施形態は、マルチテーブルの、セキュリティベースのアクセスシステムを実行するためにＩ／Ｏアクセスインターフェース３２０を用意する。
【００１６】
プロセッサ３１０は、一実施形態においてホストバス３１５に結合される。プロセッサ３１０は、ホストバス３１５を介してＩ／Ｏアクセスインターフェース３２０とオブジェクト３５０との通信を行う。Ｉ／Ｏアクセスインターフェース３２０は、ホストバス３１５とＩ／Ｏ空間３４０に結合される。プロセッサ３１０は、周辺デバイスとの通信を行うために使用される１次バス３２５に結合される。一実施形態において、１次バス３２５は周辺構成要素相互接続（ＰＣＩ）バス（ＰＣＩ仕様書、概説２．１参照）である。表示ユニット２２０を動かすビデオコントローラ（図示されていない）と他のデバイス（例えばＰＣＩデバイス）は、１次バス３２５に結合される。コンピュータシステム２００は、２次ＰＣＩバス（図示されていない）又は当業者にとって周知の他のデバイス（図示されていない）のような他のデバイスである。
【００１７】
プロセッサ３１０は、オブジェクト３５０からの命令に基づく複数のコンピュータ処理操作を実行する。オブジェクト３５０は、複数の機能を実施するためにプロセッサ３１０を促すソフトウェア構造を有する。更に、マイクロソフトワード等の操作システム、ユーザインターフェースソフトウェアシステムのような複数のオブジェクト３５０のサブセクションはプロセッサ３１０内に位置し、同時に操作を実行する。本発明の実施形態は、プロセッサ３１０に関するセキュリティレベルのアクセスと特権を用意する。
【００１８】
オブジェクト３５０によって用意されるソフトウェアコードの実行に応じて、プロセッサ３１０は、１つ以上のオブジェクト３５０の起動によって促されるタスクを実行するために、メモリアクセスを含む、１つ以上のＩ／Ｏデバイスアクセスを実行する。プロセッサ３１０によって実行されるＩ／Ｏアクセスは、モデム操作のようなＩ／Ｏデバイス３６０の各機能を制御するためにＩ／Ｏデバイスにアクセスする過程を有する。プロセッサ３１０によって実行されたＩ／Ｏアクセスは、記録されたメモリロケーションからデータを入手するために実施コードとメモリアクセスの記録のＩ／Ｏデバイス３６０のメモリロケーションにアクセスする過程を含む。
【００１９】
多くの場合、あるＩ／Ｏデバイス３６０又はＩ／Ｏデバイス３６０の一部は１つ以上の選択されたオブジェクト３５０によってアクセスが制限される。同様にＩ／Ｏデバイス３６０の特定のメモリロケーションに記録されたある種のデータは、１つ以上の選択されたオブジェクト３５０によって、アクセスが制限される。本発明の実施形態は、システム２００において特定Ｉ／Ｏデバイス３６０、又はＩ／Ｏデバイス３６０のメモリロケーションにアクセスすることを制限するためにマルチテーブルセキュリティアクセスを用意する。プロセッサ３１０は、Ｉ／Ｏアクセスインターフェース３２０を介してＩ／Ｏ空間アクセスを実行する。Ｉ／Ｏアクセスインターフェース３２０は、複数のＩ／Ｏデバイス３６０に向けたゲートウェイを含むＩ／Ｏ空間３４０に対するアクセスを用意する。マルチテーブル仮想メモリアクセスプロトコルは、本発明の少なくとも一実施形態によって用意される。
【００２０】
図４を参照すると、本発明に従ったＩ／Ｏアクセスインターフェース３２０の一実施形態のブロック概略図が示される。一実施形態において、Ｉ／Ｏアクセスインターフェース３２０は、Ｉ／Ｏアクセステーブル４１０（又はＩ／Ｏ空間アクセステーブル４１０），第２のＩ／Ｏテーブル４３０，及びＩ／Ｏ空間インターフェース３４５を含む。一実施形態において、Ｉ／Ｏ空間インターフェース３４５は、Ｉ／Ｏデバイス３６０又はＩ／Ｏデバイス３６０の一部に関連する物理的ロケーションのアドレス指定するために使用可能である“バーチャル”Ｉ／Ｏ空間アドレスを表す。このバーチャルＩ／Ｏ空間アドレス指定は、仮想メモリテーブルに関連する仮想メモリをアドレス指定する過程として限定される。他の実施形態によると、仮想メモリテーブルは第２のＩ／Ｏテーブル４３０又はＩ／Ｏアクセステーブル４１０内のような、Ｉ／Ｏ空間インターフェース３４５の外部に配置される。
【００２１】
本発明の実施形態は、マルチテーブルＩ／Ｏとマルチアクセスシステムを用いてＩ／Ｏアクセスを実行する過程を用意する。本発明の実施形態によって使用されるマルチテーブルＩ／Ｏとマルチアクセスシステムは、Ｉ／Ｏ空間インターフェース３４５を介してＩ／Ｏ空間アドレスにアクセスするためにマルチレベルテーブルアドレス指定構造（つまり第２のＩ／Ｏテーブル４３０を用いて）を用いる。Ｉ／Ｏメモリアドレスは、要請された物理的Ｉ／Ｏロケーションを配置するためにプロセッサ３１０によって使用される。
【００２２】
システム２００は、仮想メモリテーブルに関連するバーチャルＩ／Ｏ空間アドレスを限定するために、第２のＩ／Ｏテーブル４３０のような少なくとも１つの他のテーブルと結合するＩ／Ｏアクセステーブル４１０を用いる。Ｉ／Ｏアクセステーブル４１０第２のＩ／Ｏアクセステーブル４３０は、物理的Ｉ／Ｏアドレスに通じるバーチャルＩ／Ｏ空間アドレスを変換するために用いられる。物理的Ｉ／Ｏアドレスは、Ｉ／Ｏデバイス３６０の物理的ロケーション又はメモリロケーションを指定する。本発明の実施形態によって用意されたマルチレベルＩ／Ｏアクセステーブルシステムは、第２のＩ／Ｏテーブル４３０にバーチャルＩ／Ｏアクセステーブル４１０の全体部分を設定することが可能となる。ある実施例において、第２のＩ／Ｏテーブル４３０は、Ｉ／Ｏアクセステーブル４１０内にあるバーチャルＩ／Ｏアドレスの部分を設定する。第２のＩ／Ｏテーブル４３０は、Ｉ／Ｏアクセステーブルによって生成されるバーチャルＩ／Ｏアドレスに基づく物理的Ｉ／Ｏロケーションをさらに設定する微調整デバイスとして使用可能である。
【００２３】
一実施形態において、２次テーブル４３０内に複数のサブセットテーブルを含む２次テーブル４３０はメモリユニット３４７，又はシステム２００の主メモリ（図示されていない）に記録される。第２のＩ／Ｏテーブル４３０は、第２のＩ／Ｏテーブル４３０にアクセスしようとする安全でない、未証明のソフトウェア構造又はオブジェクト３５０を回避するために高水準レベルで記録される。一実施形態において、プロセッサ３１０は、オブジェクト３５０によって送信された命令に基づく物理的Ｉ／Ｏデバイスロケーション内のロケーションにアクセスすることを要請する。プロセッサ３１０によるメモリアクセス要請に応じて、Ｉ／Ｏアクセスインターフェース３２０は、Ｉ／Ｏアクセステーブル４１０に第２のＩ／Ｏテーブルに更に限定されるバーチャルアドレスを生成することを要請する。バーチャルＩ／Ｏアドレスは次にＩ／Ｏ空間インターフェース３４５内の場所を指定する。プロセッサ３１０は、Ｉ／Ｏデバイス３６０内の対応する場所を配置するために使用されるバーチャルＩ／Ｏロケーションへのアクセスを次に要請する。
【００２４】
プロセッサ３１０によって実行されるメモリアクセスを実施する実施形態は、図５Ａ，図５Ｂ，に示され、以下の記載に説明される。図５Ａを参照すると、データプロセッサ又はコンピュータシステム２００におけるセキュリティレベル属性を記録し、取り出すためのＩ／Ｏアクセスシステム５００の一実施例が、示される。一実施形態において、Ｉ／Ｏアクセスシステム５００は、プロセスユニット２１０内に一体化される。Ｉ／Ｏアクセスシステム５００は、Ｉ／Ｏ空間３４０にアクセスするためのマルチテーブルセキュリティスキームを用いるデータプロセッサ（図示されていない）において有用である。例えば、Ｉ／Ｏアクセスシステム５００は、ｘ８６マイクロプロセッサ内に実装されるページングスキームのようなページングスキームを用いてＩ／Ｏ空間３４０をアドレス指定する場合に、プロセッサ３１０によって使用され得る。一実施形態において、ｘ８６システム内の単一メモリページは、４Ｋバイトのメモリを有する。更に、Ｉ／Ｏアクセスシステム５００は、プロセッサ３１０においてページレベルにおける適切なセキュリティレベル属性を割り当てる特定のアプリケーションを見つける。
【００２５】
Ｉ／Ｏアクセスシステム５００は、ｘ８６型マイクロプロセッサ内のページングユニットによって受信されるバーチャル、リニア、又は中間（intermediate）アドレスとは異なり、ページ部分５１０とオフセット部分５２０で構成されるＩ／Ｏ空間アドレス５５３を受信する。一実施形態において、ページ部分５１０データは、適切なメモリページのアドレス指定を行い、一方、オフセット部分５２０データは、選択されたページ部分５１０内に特定のオフセットＩ／Ｏロケーションをアドレス指定する。Ｉ／Ｏアクセスシステム５００は、物理的アドレス、例えばｘ８６型マイクロプロセッサ内のページングユニット（図示せず）によって生成されるような物理アドレスを受信する。
【００２６】
一般的に拡張されたセキュリティ属性テーブル（extended security attributes tabel:ESAT）と称されるマルチレベル探索テーブル５３０は、物理的Ｉ／Ｏアドレスのページ部分５１０を受信する。マルチレベル探索テーブル５３０は、メモリの各ページ５１０と関連するセキュリティ属性を記録する。換言すれば、各ページ５１０は、このページ５１０と関連する、あるセキュリティ属性を有する。一実施形態において、ページ５１０に関連するセキュリティ属性は、マルチレベルマルチレベル探索テーブル５３０内に記録される。例えば、各ページ５１０に関連するセキュリティ属性として、ルックダウン、セキュリティコンテキストイＤ、ライトウェイトコールゲート（lightweight call gate）、読み出しイネーブル、書取りイネーブル、実行、外部マスタ書取りイネーブル、外部マスタ読み出しイネーブル、暗号化メモリ、セキュリティイネーブル等が挙げられる。これらの属性の多くは、本開示による利益を享受する当業者にとって周知である。
【００２７】
一実施形態において、マルチレベル検索テーブル５３０は、システム２００のシステムメモリ（図示されていない）内に配置される。他の実施形態において、マルチレベル検索テーブル５３０は、システム２００を使用するマイクロプロセッサを含むプロセッサ３１０内に結合される。従って、マルチレベル検索テーブル５３０が操作可能な速度は、少なくとも一部でシステムメモリの速度に依存する。プロセッサ３１０の速度と比較して、システムメモリの速度は、概してかなり遅い。従って、マルチレベル探索テーブル５３０を用いたセキュリティ属性を読み出す処理は、システム２００の操作全体を遅くする。セキュリティ属性を配置し、読み出すために要請される時間を削減するために、マルチレベル探索テーブル５３０と並行してキャッシュ５４０が実装される。キャッシュ５４０は、プロセッサ３１０として同一の半導体ダイ（つまり半導体チップにキャッシュ５４０とプロセッサ３１０とが結合される）又はプロセッサ３１０の外部に配置可能である。概して、キャッシュ５４０の速度は、実質的にマルチレベル探索テーブル５３０の速度より速い。キャッシュ５４０は、ページ５１０の比較的小さなサブセットを含み、これらのセキュリティ属性は、マルチレベル探索テーブル５３０内に包含される。従って、キャッシュ５４０に記録されたページ５１０に関して、セキュリティ属性を取り出す操作が、実質的に向上され得る。
【００２８】
図５Ｂを参照すると、メモリ内のページ５１０と関連したセキュリティ属性を記録し、取り出すために使用されるマルチレベル探索テーブル５３０の一実施形態が示される。マルチレベル探索テーブル５３０は、一般的にＥＳＡＴディレクトリと称される第１テーブル５５０と、一般的にＥＳＡＴと称される第２テーブル５５２とを含む。概して、第１テーブル５５０には、各ページ５１０のセキュリティ属性が記録される、複数ＥＳＡＴ５５２の開始アドレスのディレクトリを含む。以下に記載される一実施形態において、単一ＥＳＡＴディレクトリ５５０は、Ｉ／Ｏデバイス３６０内のアドレス及び／若しくはメモリの全体の範囲をマップするために用いられる。
【００２９】
最上位オーダーの命令ビットを含むスペースアドレス５５３の第１部分は、一般的にディレクトリ（ＤＩＲ）５５４と称され、第１テーブル５５０への指針として使用される。Ｉ／Ｏ空間アドレス５５３は、アドレス指定されているテーブル５５０とテーブル５５２を識別可能なテーブルデータ５７０を含む部分を有する。Ｉ／Ｏ空間アドレス５５３は、更に特定のエントリ５６０，５８０につながるテーブル５５０，５５２内にオフセット５２０を含む。第１テーブル５５０は、ベースアドレス５５５におけるシステムメモリ内に配置される。Ｉ／Ｏ空間アドレス５５３のＤＩＲ部分５５４は、第２テーブル５５２の１つに適切なアドレスのベースアドレスを指定する、エントリ５６０を識別するためにベースアドレス５５５に追加される。一実施形態において、複数の第２テーブル５５２は、マルチテーブルｂ探索テーブル５３０内に配置される。概して、第１テーブル５５０のエントリ５６０の各々は、第２テーブル５５２内のアドレスの１つのスタートアドレスを指定する。すなわち、各エントリ５８０は、それぞれの別のＥＳＡＴ５５２を指示する。
【００３０】
一実施形態において、第１テーブル５５０と第２テーブル５５２は、物理的メモリの１ページを占有する。それ故、ページングイネーブルを備えたｘ８６型マイクロプロセッサ従来のメモリ管理ユニットは、必要であれば、システムメモリの出入りにおいて、テーブル５５０，５５２を交換する能力がある。これは、テーブル５５０と５５２がマルチレベル配置であるために、テーブル５５２の全部が同時にＩ／Ｏ空間３４０内にあることが望ましい。メモリユニット３４７にカレントに配置されていないテーブル５５２の１つが第１テーブル５５０のエントリ５６０によって要請された場合、ｘ８６マイクロプロセッサの従来のメモリ管理ユニット（図示されていない）は、ハードディスクドライブのような主メモリからページ５１０を読み取り、アクセスされるシステムメモリ内に要請されたページ５１０を記録する。テーブル５５０，５５２をこのように１ページサイズとしたことで、マルチレベル探索テーブル５３０を記録するために要するシステムメモリの量を削減し、テーブル５５０，５５２を用いてＩ／Ｏ空間３４０にアクセスするために要するメモリ交換の量を削減する。
【００３１】
一実施形態において、各ページのサイズは４Ｋバイトであり、システムメモリ総量は、「１６」Ｍバイトである。それ故、ほぼ４０００のＥＳＡＴテーブル５５２がページ５１０内に存在する。一実施形態において、４０００のＥＳＡＴテーブル５５２の各々は、４０００セットのセキュリティ属性を含む。更に、ＥＳＡＴディレクトリ５５０は、各４０００ＥＳＡＴテーブル５５２の開始アドレスを含む。第１テーブル５５０のエントリ５６０は、適切な第２テーブル５５２のベースアドレスを指示する。適切な第２テーブル５５２の所望のエントリ５８０は、Ｉ／Ｏ空間アドレス５５３の第２部分５５２（テーブル部分）をエントリ５６０内に含まれたベースアドレス５５５に追加することによって識別される。一実施形態において、エントリ５８０は、Ｉ／Ｏ空間３４０の識別されたページ５１０に関連する所定のセキュリティ属性を含む。図５Ａと図５Ｂに示されるマルチテーブルスキームは、一実施例であり、本開示によって利益を享受しうる当業者であれば、本発明に従った種々のマルチテーブルスキームを実装可能であろう。
【００３２】
図６を参照すると、本発明の一実施形態に従った方法のフローチャート図が示される。オブジェクト３５０は、システム２００（ブロック６１０）によって起動される。特定のソフトウェアプログラム（例えば、マイクロソフトワード）のようなオブジェクト３５０は、マウス２４０のような入出力デバイスの起動によって開始する。オブジェクト３５０がシステム２００によって起動された場合、プロセッサ３１０は、オブジェクト３５０（ブロック６２０）によって用意されたコードを実行する。システム２００は、オブジェクト３５０（ブロック６３０）のための所定のセキュリティレベルに基づいたセキュリティレベルを設定する。その後、システム２００は、マルチテーブルＩ／Ｏ空間アクセス（ブロック６４０）を呼び出す。システム２００によって実行されたマルチテーブルＩ／Ｏ空間アクセスは、以下に大部分の詳細が記載される。設定されたセキュリティレベル及びシステム２００によって実行されるマルチテーブルＩ／Ｏ空間アクセスに基づいて、オブジェクト３５０の機能が実施される（ブロック６５０）。オブジェクト３５０の機能は、記録されたドキュメントを読み取る過程と、ワイヤレスモデムのようなモデムによって起動される通信リンクの実行する過程とを含む。
【００３３】
図７を参照すると、図６のブロック６４０に記載のマルチテーブルＩ／Ｏ空間アクセスを実行するための一実施形態のフローチャート図が示される。システム２００は、第２のテーブル設定機能を実行する（ブロック７１０）。第２のＩ／Ｏテーブル４３０を設定する過程は、２次テーブル４３０におけるセキュリティレベルデータを配置し、更新する過程を有する。第２のＩ／Ｏテーブル４３０は、Ｉ／Ｏアクセステーブル４１０における複数セクションを限定するために使用される。第２のＩ／Ｏテーブル４３０は、Ｉ／Ｏアクセステーブル４１０からなくなっているテーブルエントリの全部のセクション（例えば、図５Ｂの５６０，５８０）に関連するデータを含む。
【００３４】
一実施形態において、システム２００は、プロセッサ３１０がページ５１０に基づいてＩ／Ｏ空間３４０にアクセスするように、Ｉ／Ｏ空間３４０をページ５１０に分ける。一実施形態において、ページ５１０は、ｘ８６プロセッサと互換性がある４Ｋバイトのメモリセクションであるように限定される。Ｉ／Ｏアクセステーブル４１０と第２のＩ／Ｏテーブル４３０は、テーブル４１０，４３０にインデックスを含める。これらのインデックスは、Ｉ／Ｏデバイス３６０にアクセスするために用い得る物理的Ｉ／Ｏ空間アドレス５５３の計算、及び／又はＩ／Ｏデバイス３６０の物理的メモリのようなＩ／Ｏデバイス３６０の特定部分への配置、のために使用することができる。プロセッサ３１０によって実行されるテーブル４１０，４３０を用いてＩ／Ｏ空間３４０にアクセスする過程の詳細を以下に記述する。
【００３５】
システム２００が第２のＩ／Ｏテーブル４３０を設定すると、システム２００は、プロセッサ３１０（ブロック７２０）からのＩ／Ｏ空間アクセス要請をチェックする。メモリアクセス要請は、概してオブジェクト３５０によって促される。若干のオブジェクト３５０は、モデムを介して通信の起動、特定ドキュメントに属するデータの取り出し等のようなそれぞれのタスクを実行するために広大なＩ／Ｏ空間３４０及び／又はメモリアクセスを要請する。システム２００は、Ｉ／Ｏ空間アクセス要請が受信されたか否かを判断する（ブロック７２０）。システムがＩ／Ｏ空間アクセスが受信されていないと判断すると、システム２００は、図７においてブロック７３０からブロック７２０に戻るとして示されるように、Ｉ／Ｏ空間アクセス要請のチェックを継続する。
【００３６】
システム２００は、Ｉ／Ｏ空間アクセスの要請がなされたと判断すると、本発明の一実施形態に従ったマルチテーブルアクセスを実行する（ブロック７４０）。システム２００によって実行されたマルチレベルテーブルアクセスのより詳細な記載が以下に示される。システム２００は一旦、ブロック７４０に記載のマルチテーブルアクセスを実行すると、マルチレベルテーブルアクセスに応じた適切なＩ／Ｏ空間アクセスを許可する。つまり、システム２００は、プロセッサ３１０でのメモリリクエストのリクエストを促したオブジェクト３５０が、実際にＩ／Ｏデバイス３６０及び／又はＩ／Ｏデバイス３６０内の物理的メモリにアクセスすることを許可する。
【００３７】
図８を参照すると、図７のブロック７１０に示される第２のテーブル４３０を設定する方法の一実施形態が、表される。システム２００は、Ｉ／Ｏデバイス３６０内のＩ／Ｏ空間及び／又はメモリを複数セグメント（ブロック８１０）に分ける。一実施形態において、これらのセグメントは、ページ５１０と称される。一実施形態において、これらのセグメント／ページは、いずれも４Ｋバイトに分割される。Ｉ／Ｏ空間３４０を４Ｋバイトセグメントに区分することは、本開示による利益を享受し得る当業者にとって周知であるハードウェア処理によって実行可能である。他の実施形態においては、本開示による利益を享受する当業者に周知のソフトウェア技術によってＩ／Ｏ空間３４０をセグメントに区分することも可能である。
【００３８】
システム２００は、第２のテーブル４３０から何れのセグメントを除外するかを判断し、除外機能（オミット機能）を実行する（ブロック８２０）。第２のテーブル４３０から除外されたセグメントは、ページ５１０であり、デフォルトセキュリティレベルを割り当てることができる。ページ５１０を含めて、除外されたセグメントは、広範囲レベル（broad-level)又は低いレベル(low-level)のセキュリティレベルに割り当て可能である。従って、システム２００は、除外されたセグメントに対して、デフォルトセキュリティレベルを割り当てる（ブロック８３０）。除外されたセグメントには最も低いレベルには、最も低いレベルが割り当てられる。従って、除外されたセグメントは、プロセッサ３１０にＩ／Ｏ空間３４０及び／又はメモリにアクセスすることを促すいずれのソフトウェアオブジェクト３５０によっても、仮想的にアクセス可能である。
【００３９】
システム２００は、次にＩ／Ｏ空間３４０内の除外されていないセグメント／ページ５１０に応じたセキュリティレベルを割り当てる（ブロック８４０）。システム２００は、プロセッサ３１０を介した特定のオブジェクト３５０によって予想されるアクセスに基づいて、ページ５１０にセキュリティレベルを割り当てる。システム２００は、除外されていないセグメント／ページ５１０に適切なセキュリティレベルを割り当てる間、プロセッサユニット２１０におけるハードウェアデバイスと他のメモリロケーションを保護する。
【００４０】
セキュリティレベルが一度、割り当てられると、システム２００は、特定のセグメント／ページ５１０と初期又は仮想Ｉ／Ｏ空間アドレス５５３とを関連付ける（ブロック８５０）。仮想Ｉ／Ｏ空間アドレス５５３は、特定のセキュリティレベルに基づいてＩ／Ｏデバイス３６０及び／又はＩ／Ｏデバイス３６０内のメモリを指示する。システム２００は、次に仮想のＩ／Ｏ空間アドレス５５３のＩ／Ｏ空間内のセグメントに対しての関連づけを用いて、マルチレベルの第２のＩ／Ｏテーブル４３０を生成する（ブロック８５０）。一実施形態において、メモリリソースを残すために、２次Ｉ／Ｏテーブル４３０内の特定の空間が除外される。上述したように除外されたメモリロケーションは、概して最も低いセキュリティレベルである、初期値セキュリティレベルに割り当てられる。
【００４１】
図９を参照すると、図７のブロック７４０に示されるマルチテーブルアクセス処理を実行するための一実施形態が示される。Ｉ／Ｏ空間アクセスを受信後、システム２００は、要請されたＩ／Ｏ空間アクセスに応じた２次Ｉ／Ｏテーブル４３０内のセキュリティレベルを決定する（ブロック９１０）。システム２００は、プロセッサ３１０のソフトウェアの実行を起動するオブジェクト３５０のタイプに関するプロセッサ３１０が指示されたことに応じて、Ｉ／Ｏ空間アクセスに基づく第２のテーブル４３０におけるセキュリティレベルを決定する。ソフトウェアオブジェクト３５０によっては、メモリにおけるある種のセンシティブなＩ／Ｏデバイス及び又はメモリ内のデータへのアクセスを許可する、より高レベルのセキュリティアクセスを要請する。例えば、データ通信転送を要請するソフトウェアオブジェクト３５０は、プロセッサユニット３１０からのセンシティブなデータにアクセスするために、高セキュリティレベルのクリアランスを要求し得る。反対に、マイクロソフトワード（登録商標）のようなデータプロセッサの機能を実行するソフトウェアオブジェクト３５０は、タスクを実行するために低レベルのセキュリティクリアランスを要求するであろう。
【００４２】
システム２００は、次にＩ／Ｏ空間アクセスリクエストを開始させるソフトウェアオブジェクト３５０の実行セキュリティレベルと、Ｉ／Ｏ空間アクセスのターゲットであるページ５１０のセキュリティレベルと、を検査する（ブロック９２０）。プロセッサ３１０は、現在実行しているソフトウェアオブジェクト３５０のセキュリティレベルを、Ｉ／Ｏ空間アクセス及び／又はメモリアクセスの目標であるページ５１０のセキュリティレベルと比較して、両者の一致性、即ち両者が一致するか否か（即ち、要請されたＩ／Ｏ空間３４０及び／又はメモリアクセスを許可するか否か）を判断する。これにより、ある種のＩ／Ｏデバイス３６０及び／又はＩ／Ｏデバイスの物理的メモリ内のセンシティブなデータにアクセスする権限を有さないある種のソフトウェアオブジェクト３５０は、何らかのＩ／Ｏデバイス３６０及び／又はメモリロケーションにアクセスすることも、またこれらを制御することもできないようになっている。システム２００は、次にソフトウェアオブジェクト３５０によって起動された特定のアクセス要請に適切なセキュリティレベルを関連付ける（ブロック９３０）。
【００４３】
システム２００は、次に第２のＩ／Ｏテーブル４３０アドレスを、Ｉ／Ｏ空間インターフェース３４５のロケーションに関連付ける。こおｎＩ／Ｏ空間インターフェース３４５のロケーションは、Ｉ／Ｏ空間３４０及び／又はメモリー内のロケーションに対応する（ブロック９４０）。システム２００は、Ｉ／Ｏ空間３４０のロケーションを行い、適切なセキュリティレベルを物理的なＩ／Ｏ空間３４０に関連付ける（ブロック９５０）。一実施形態において、Ｉ／Ｏ空間アクセスインターフェース３２０は、Ｉ／Ｏ空間インターフェース３４５のロケーションの設定を行い、また、Ｉ／Ｏ空間インターフェース３４５をＩ／Ｏ空間３４０に関連付ける。
【００４４】
図１０を参照すると、図９のブロック９１０に示されるようにプロセッサ３１０のメモリアクセス要請に応じて第２のテーブル４３０におけるセキュリティレベルを決定する過程の一実施形態が表される。システム２００は、Ｉ／Ｏアクセステーブル４１０からのＩ／Ｏ空間アクセスリクエストに応答するＩ／Ｏ空間アドレス５５３を決定する（ブロック１０１０）。システム２００は、次に物理的Ｉ／Ｏ空間アドレス５５３に基づいて（例えば、アドレスを２次Ｉ／Ｏテーブル４３０へのインデックスとして使用して）、ソフトウェアオブジェクト３５０に応答するプロセッサ３１０によって実行されるセグメント／ページ５１０のロケーションを設定する（ブロック１０２０）。システム２００は、ソフトウェアオブジェクト３５０に基づくコードを実施すると、プロセッサ３１０が実行されるページ５１０のセキュリティレベルを決定し、このセキュリティレベルから現在のセキュリティレベルを決定することができる。従って、システム２００は、セキュリティレベルを設定するためにセグメント／ページ５１０を効果的に使用する（ブロック１０３０）。システム２００は、次に適切なＩ／Ｏ空間アクセスを実行するために、設定されたセキュリティレベルを送信する（ブロック１０４０）。図１０に示されるステップを完了することで、実質的に、図９のブロック９１０に示される２次Ｉ／Ｏテーブル４３０におけるセキュリティレベルを決定するステップも完了される。
【００４５】
図１１を参照すると、図７のブロック７５０に記載の適切なＩ／Ｏ空間アクセスを実行するためのステップの一実施形態が表される。システム２００は、特定のメモリアクセス要請に応じるセキュリティレベルをチェックする（ブロック１１１０）。セキュリティレベルは、プロセッサ３１０によって実施される特定のソフトウェアオブジェクト３５０に基づく特定のＩ／Ｏと関連付けることが可能である。システム２００は、次に、セキュリティレベルが、Ｉ／ＯリソースＩ／Ｏメモリ（例えば、Ｉ／Ｏデバイス３６０及び／又はＩ／Ｏデバイス３６０のメモリの一部）にアクセス可能となるに十分であるかを判断する（ブロック１１２０）。システム２００は、セキュリティレベルクリアランスが、プロセッサ３１０によって要請されたＩ／Ｏ空間アクセスを許可しかつ特定のＩ／Ｏデバイス３６０及び／又はＩ／Ｏデバイス３６０内のメモリロケーションにアクセス可能となるに適切なものであるか否か（セキュリティレベルがこれらの条件を満たしているか）をチェックする。
【００４６】
システム２００が、プロセッサ３１０による特定のＩ／Ｏ空間アクセス要求に基づいたＩ／Ｏ−リソース／Ｉ／Ｏ−メモリメモリアクセスを許可するに十分にセキュリティレベルが高くないと判断した場合、システム２００は、要求されたＩ／Ｏ−リソース／Ｉ／Ｏ−メモリメモリアクセスを拒否する。システム２００が、セキュリティレベルがＩ／Ｏ−リソース／Ｉ／Ｏ−メモリメモリアクセスを許可するに十分なまでに高いと判定した場合、システム２００は、プロセッサ３１０又はソフトウェアオブジェクト３５０による、特定のＩ／Ｏデバイス３６０及び／又は物理メモリ３４５内のＩ／Ｏデバイス３６０内のメモリロケーションへのアクセスを許可する（ブロック１１３０）。図１１におけるステップが完了することは、実質的に、図７のブロック７５０に示されるように適切なメモリアクセスのプロセスが完了することを意味する。本発明が教唆する原理は、その他のタイプの自動化フレームワークに実装することも可能である。
【００４７】
本願の開示による利益を享受し得る当業者であれば、上述の例とは異なるものの明らかに等価な範疇で本発明の修正及び実行が可能である。更に、クレームの記載を除き、ここに示される構成または設計は、本発明を限定することを意図したものではない。従って、上述の特定の実施形態は、変形又は修正が可能であり、これらは本発明の趣旨及び範囲内のものに過ぎない。従って、本発明は、添付したクレームにより保護されるべきである。
【図面の簡単な説明】
【００４８】
【図１】コンピュータシステムにおけるセキュアなアクセスのための複数の権限レベルの説明図。
【図２】本発明の一実施形態に適用可能なコンピュータシステムの説明図。
【図３】本発明の一実施形態に係る、図２に示される処理ユニットのより詳細な説明図。
【図４】本発明の一実施形態に係る、図３に示されるＩ／Ｏアクセスインターフェースのより詳細な説明図。
【図５Ａ】図１〜４に示されるプロセッサで実行されるＩ／Ｏ−空間／Ｉ／Ｏ−メモリアクセスの機能ブロック図。
【図５Ｂ】図１〜４に示されるプロセッサで実行されるＩ／Ｏ−空間／Ｉ／Ｏ−メモリアクセスの機能ブロック図。
【図６】本発明の一実施形態に係るセキュリティスキームを用いたＩ／Ｏ−空間／Ｉ／Ｏ−メモリアクセスの実行方法を示すフローチャート。
【図７】本発明の一実施形態に係る、図６に示されるＩ／Ｏ−空間／Ｉ／Ｏ−メモリアクセス方法を示すフローチャート。
【図８】本発明の一実施形態に係る、図７に示される第２のＩ／Ｏテーブルのセットアップ方法を示すフローチャート。
【図９】本発明の一実施形態に係る、図７に示されるマルチテーブルアクセスを実行する方法を示すフローチャート。
【図１０】本発明の一実施形態に係る、図９に示される、第２のＩ／Ｏテーブルにおけるセキュリティレベルの決定方法を示すフローチャート。
【図１１】本発明の一実施形態に係る、図７に示される、マルチレベルテーブルアクセスに応答しての適切なＩ／Ｏ−空間／Ｉ／Ｏ−メモリアクセスを容易化する方法を示すフローチャート。
【図１】
2005515536.tif 000003
【図２】
2005515536.tif 000004
【図３】
2005515536.tif 000005
【図４】
2005515536.tif 000006
【図５Ａ】
2005515536.tif 000007
【図５Ｂ】
2005515536.tif 000008
【図６】
2005515536.tif 000009
【図７】
2005515536.tif 000010
【図８】
2005515536.tif 000011
【図９】
2005515536.tif 000012
【図１０】
2005515536.tif 000013
【図１１】
2005515536.tif 000014
【手続補正書】
【提出日】平成16年7月15日(2004.7.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェアオブジェクト（３５０）を実行し、
前記ソフトウェアオブジェクト（３５０）にセキュリティレベルを設定し、
前記セキュリティレベルの少なくとも一つを用いてマルチテーブル入出力（Ｉ／Ｏ）空間アクセスを実行し、当該マルチテーブルＩ／Ｏ空間アクセスには第２のＩ／Ｏテーブル（４３０）の設定が含まれ、
前記オブジェクト（３５０）の前記機能を実行する、方法。
【請求項２】
前記ソフトウェアオブジェクト（３５０）のセキュリティレベルの設定では、メモリ（３４７）の少なくとも一部のＩ／Ｏ空間アクセス空間に関連するセキュリティレベルの割当がなされる、請求項１記載の方法。
【請求項３】
前記セキュリティレベルの少なくとも一つを用いたマルチテーブルＩ／Ｏ空間アクセスの実行では、
前記ソフトウェアオブジェクト（３５０）の実行に基づいてＩ／Ｏ空間アクセスリクエストを受信し、
前記第２のＩ／Ｏテーブル（４３０）及び少なくとも一つのバーチャルメモリーテーブルを用いて、前記Ｉ／Ｏ空間アクセスリクエストに基づいてマルチレベルテーブルアクセスを実行し、
前記マルチレベルテーブルアクセスに基づいてＩ／Ｏデバイス（３６０）の少なくとも一部にアクセスする、請求項１記載の方法。
【請求項４】
第２のＩ／Ｏテーブル（４３０）の設定では、
Ｉ／Ｏ空間（３４０）を複数のセグメントに分割し、
前記複数のセグメントのうち前記第２のＩ／Ｏテーブル（４３０）からオミットすべきセグメントを少なくとも一つ、オミットされないセグメントを少なくとも一つ、それぞれ決定し、
前記オミットされたセグメントに対してデフォルトセキュリティレベルを割り当て、
前記オミットされなかったセグメントに対してはセキュリティレベルを割り当て、
少なくとも一つの割り当てられたセグメントをＩ／Ｏ空間（３４０）ロケーションを関連付ける、請求項３記載の方法。
【請求項５】
善意Ｉ／Ｏ空間アクセスリクエストに基づいたマルチレベルテーブルアクセスの実行では、
前記第２のＩ／Ｏテーブル（４３０）内のセグメントに対応する少なくとも一つのセキュリティレベルを決定し、
前記オブジェクトの実行に応答して、アクセスされるセグメントに関連付けられたセキュリティレベルと、実行セキュリティレベルと、の一致性を照合し、
アクセスされた前記セグメントに関連付けられた前記セキュリティレベルと前記実行セキュリティレベルとの一致性に応じて、前記第２のＩ／Ｏテーブル（４３０）に基づいてＩ／Ｏ空間アドレスを決定し、
前記Ｉ／Ｏ空間アドレスに対応するＩ／Ｏデバイス（３６０）のロケーションを決定する、請求項３記載の方法。
【請求項６】
前記第２のＩ／Ｏテーブル（４３０）内のセグメントに対応する少なくとも一つのセキュリティレベルの決定では、
前記第２のＩ／Ｏテーブル（４３０）から物理Ｉ／Ｏデバイスアドレスを決定し、
前記物理Ｉ／Ｏデバイスアドレスに基づいて実行されるセグメントを決定し、
前記実行されるセグメントの決定に基づいて現在のセキュリティレベルを定義する、請求項５記載の方法。
【請求項７】
所望のセキュリティを用いてＩ／Ｏデバイスアクセスを実行する装置であって、
バス（３１５）に結合されたプロセッサ（３１０）と、
前記プロセッサ（３１０）に少なくとも一つのソフトウェアオブジェクトを結合させる手段と、
入出力（Ｉ／Ｏ）デバイスと、
前記バス（３１５）及びメモリユニット（３４７）に結合さたＩ／Ｏアクセスインターフェース（３２０）と、を有し、当該Ｉ／Ｏアクセスインターフェースは、前記プロセッサによる前記ソフトウェアオブジェクト（３５０）の実行に応答して、前記プロセッサ（３１０）に、前記メモリユニット（３４７）の少なくとも一部のマルチテーブルＩ／Ｏ空間アクセスを前記少なくとも一つのセキュリティレベルに基づいて与え、前記マルチレベルテーブルＩ／Ｏ空間アクセスには、第２のＩ／Ｏテーブル（４３０）の設定が含まれる、装置。
【請求項８】
前記Ｉ／Ｏ空間アクセスインターフェースは、第２のＩ／Ｏテーブル（４３０）に結合されたＩ／Ｏ空間アクセステーブル（４１０）を有し、当該Ｉ／Ｏアクセスインターフェース（３２０）により、セキュリティレベルに基づいて前記Ｉ／Ｏデバイス（３６０）の少なくとも一部にアクセスするための仮想メモリアドレッシングスキームが提供される、請求項７記載の装置。
【請求項９】
コンピュータに実行されたときに所定の方法を実行するインストラクションを含んでエンコードされたコンピュータ可読プログラム記録デバイスであって、前記方法では、
ソフトウェアオブジェクト（３５０）を実行し、
前記ソフトウェアオブジェクト（３５０）にセキュリティレベルを設定し、
第２の入出力（Ｉ／Ｏ）テーブル（４３０）を設定し、
前記ソフトウェアオブジェクト（３５０）の実行に基づいてＩ／Ｏ空間アクセスリクエストを受信し、
前記第２のＩ／Ｏテーブル（４３０）内のセグメントに対応するセキュリティレベルを少なくとも一つ決定し、
前記ソフトウェアオブジェクトの実行に応答して、アクセスされるセグメントに関連付けられたセキュリティレベルと、実行セキュリティレベルと、の一致性を照合し、
アクセスされた前記セグメントに関連付けられた前記セキュリティレベルと前記実行セキュリティレベルとの一致性に応じて、前記第２のＩ／Ｏテーブル（４３０）に基づいてＩ／Ｏ空間アドレスを決定し、
前記Ｉ／Ｏ空間アドレスに対応する物理Ｉ／Ｏデバイス（３６０）のロケーション（物理メモリロケーション）を決定する、コンピュータ可読プログラム記録デバイス。
【請求項１０】
コンピュータに実行されたときに請求項９に記載の方法を実行するインストラクションを含んでエンコードされたコンピュータ可読プログラム記録デバイスであって、前記第２のＩ／Ｏテーブル（４３０）内のセグメントに対応するセキュリティレベルの少なくとも一つの決定では、
前記Ｉ／Ｏ空間テーブルから物理Ｉ／Ｏデバイス（３６０）アドレスを決定し、
前記物理Ｉ／Ｏデバイス（３６０）アドレスに基づいて実行されるセグメントを決定し、
前記実行されるセグメントの決定に基づいて現在のセキュリティレベルを設定する、コンピュータ可読プログラム記録デバイス。
【国際調査報告】
2005515536.tif 000015
2005515536.tif 000016
2005515536.tif 000017