(57)【特許請求の範囲】
【請求項１】
第１及び第２の動作モードで動作可能なプロセッサを具備するコンピュータシステムの入出力（Ｉ／Ｏ）マップレジスタへのアクセスを可能にする方法において：
Ｉ／Ｏマップレジスタと関連づけられた論理回路で、Ｉ／Ｏマップレジスタへのアクセス要求を受け取るステップと；
プロセッサが第１の動作モードで動作しているかどうかを、前記論理回路によって調べるステップと；
プロセッサが第１の動作モードで動作していればＩ／Ｏマップレジスタへの第１の型のアクセスを、前記論理回路によって可能にするステップと；
プロセッサが第１の動作モードで動作していなければＩ／Ｏマップレジスタへの第２の型のアクセスを、前記論理回路によって可能にするステップと；
を具備した方法。
【請求項２】
プロセッサを備えるコンピュータシステムの入出力（Ｉ／Ｏ）アドレス空間にマップされたレジスタへのアクセスを可能にする方法において：
プロセッサでシステム管理要求を受け取るステップと；
そのシステム管理要求に応答して、プロセッサによって、システム管理モードになるステップと；
プロセッサにコンピュータシステムの入出力（Ｉ／Ｏ）アドレス空間にマップされた前記レジスタへの第１の型のアクセス権を、前記レジスタに関連づけられた論理回路によって与えるステップと；
そのレジスタの内容に対して演算を、前記論理回路によって実行するステップと；
プロセッサによって、システム管理モードのままにしておくステップと；
プロセッサにそのレジスタへの第２の型のアクセス権を、前記論理回路によって与えるステップと；
を具備した方法。
【請求項３】
コンピュータシステムの入出力（Ｉ／Ｏ）アドレス空間へのアクセス権を持つプロセッサを含み、そして第１及び第２の動作モードで動作可能なコンピュータシステムで使用するためのインタフェース装置において：
コンピュータシステムの入出力（Ｉ／Ｏ）アドレス空間にマップされたレジスタと；
そのレジスタを識別するためのアドレスデータを受け取るように接続された入力と、アドレスデータがそのレジスタを識別していることを示すセレクト信号を出力するよう接続された出力とを有するデコーダと；
コンピュータシステムが第１の動作モードで動作しているときそれを検知するよう構成され、かつコンピュータシステムが第１のモードで動作しているときそのレジスタへの第１の型のアクセスを可能にし、コンピュータシステムが第１のモードで動作していないときは第２の型のアクセスを可能にするよう構成された論理回路と；
を具備したインタフェース装置。
【請求項４】
システム管理モード（ＳＭＭ）で動作可能なコンピュータシステムにおいて：
コンピュータシステムがシステム管理モードで動作しているとき専用のＳＭＭメモリアドレス空間に対してアクセス権を持つプロセッサと；
そのプロセッサ接続されていて：
コンピュータシステムの入出力（Ｉ／Ｏ）アドレス空間にマップされたレジスタ；
そのレジスタを識別するアドレスデータを受け取るよう接続された入力と、そのレジスタにセレクト信号を供給するよう接続された出力とを有するデコーダ；及び
コンピュータシステムがシステム管理モードで動作しているときそれを検知するよう構成され、かつコンピュータシステムがシステム管理モードで動作しているとき該プロセッサによる該レジスタへの第１の型のアクセスを可能にし、コンピュータシステムがシステム管理モードで動作していないときは該プロセッサによる該レジスタへの第２の型のアクセスを可能にするよう構成されている論理回路；
を有するインタフェース装置と；
を具備したコンピュータシステム。
【発明の詳細な説明】
発明の分野
本発明は、コンピュータシステムに関するものである。より詳しくは本発明は、特にレジスタを保護するように、コンピュータシステムの入出力（Ｉ／Ｏ）アドレス空間にマップされたレジスタへのアクセスを制御するための方法及び装置に関する。
発明の背景
Ｉ／Ｏアドレス空間にマップされたレジスタ（Ｉ／Ｏマップレジスタと称する）は、一般に、コンピュータシステムと周辺装置とをインタフェースするためのインタフェース内に配置される。Ｉ／Ｏマップレジスタは、他にバスブリッジのようなコンピュータシステム内のいくつかの他の機能単位内にも配置され、データバッファリング、状態表示・制御及びコンフィギュレーション機能などを含むいくつかの機能のために使用することができる。
Ｉ／Ｏマップレジスタは、内容が様々な形で損傷したり、望まずして変えられたりしやすい。たとえば、「暴走」プログラムまたは誤動作プログラム、ウィルスプログラムあるいはオペレーティングシステムそのものさえＩ／Ｏマップレジスタの内容を不正に変えようとすることがある。Ｉ／Ｏマップレジスタの内容の破損は、コンピュータシステムの動作にとって、またコンピュータシステムのコンポーネントや周辺装置の物理的保全性にとっても非常に重大な結果をもたらすことがある。この脆弱性は、制御またはコンフィギュレーション機能を実行するＩ／Ｏマップレジスタの内容が変えられた場合特に重大である。少なくとも、レジスタ内容の損傷はソフトウェア障害を招くことがある。Ｉ／Ｏマップレジスタが電源管理に関連する値を記憶する場合のように、最悪の例のシナリオにおいては、レジスタ内容の損傷はプロセッサをオーバーヒートさせ、焼損を引き起こすことがある。この最悪の例のシナリオは、コンピュータシステムのハードウェア及びソフトウェアの保全性、さらにはコンピュータシステムユーザの安全にとっても相当の脅威になる。また、Ｉ／Ｏマップレジスタの脆弱性は、コンピュータシステム内部に莫大な損害や損傷をもたらすウィルスプログラムを書く機会をウィルスプログラムの作者に与えることになる。
Ｉ／Ｏマップレジスタのアクセス保護を行うための従来技術の方法としては、Ｉ／Ｏマップレジスタに関連づけられた専用の「ロック」レジスタにロック／アンロック値を書き込む「ロッキング」機構を設けるものがある。Ｉ／Ｏマップレジスタのアクセスに先立って、「ロックレジスタ」の検査によってＩ／Ｏマップレジスタをアクセスすることができるかどうかを調べる保護アルゴリズムが実行される。この方法は、誤動作プログラムがＩ／Ｏマップレジスタにアクセスしようとするのを阻止するには比較的効果的であるが、ウィルスプログラムのようなインテリジェントな敵性プログラムに対しては十分な保護が得られない。ウィルスプログラムは、たとえば「ロック」レジスタにアクセスしてその内容に上書きし、あるいは保護アルゴリズムを攻撃してバイパスさせてしまうことがある。
米国カリフォルニア州サンタクララ（Ｓａｎｔａ  Ｃｌａｒａ）のインテル・コーポレーション（Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ）のマイクロプロセッサ・アーキテクチャ（インテルアーキテクチャと呼ばれる）もＩ／Ｏマップレジスタのための保護機構を提供する。これらの保護機構の詳細は、「ペンティアムヨプロセッサ・ユーザズマニュアル；アーキテクチャとプログラミング（“Ｐｅｎｔｉｕｍヨ  ｐｒｏｃｅｓｓｏｒ  Ｕｓｅｒ’ｓ  Ｍａｎｕａｌ；Ａｒｃｈｉｔｅｃｔｕｒｅ  ａｎｄ  Ｐｒｏｇｒａｍｍｉｎｇ”）」（１９９４年刊、１２−１〜１２−８ページ、及び１５−５〜１５−９ページ）に記載されている。詳しく言うと、このインテルアーキテクチャは２つのＩ／Ｏアクセス保護機構を設ける構成を採用したものである。それらの両方の保護機構の下に、Ｉ／Ｏアクセスがアドレス変換と平行してチェックされ、そのＩ／Ｏアクセスが種々の保護要件を満たすかどうかが調べられる。
その第１のＩ／Ｏ保護機構はいわゆる「保護リングモデル」の下に０〜３とラベルされた４つの特権レベルを認識する。プロセッサによって実行中のプログラムは、カレント特権レベル（ＣＰＬ）と呼ばれる特権レベルを有し、これはＣＳセグメントレジスタの下位２ビットに格納される。アプリケーションプログラムによるＩＮ及びＯＵＴのようなＩ／Ｏ命令へのアクセスは入出力保護レベル（ＩＯＰＬ）によって制御され、ＩＯパルスはＣＰＬと比較されて、アプリケーションプログラムがＩＯ命令に有効にアクセスすることができるかどうかが調べられる。この保護機構は、一般に、特権レベルが０のオペレーティングシステム及び特権レベルが１の一部のデバイスドライバが、アプリケーション及び特権レベルが３の特権レベルが低いデバイスドライバによるＩ／Ｏ命令へのアクセスを阻止する一方で、Ｉ／Ｏ命令にアクセスすることを可能にする。しかしながら、この保護機構は、巧みに特権レベル０を手に入れるウィルスプログラム、あるいは特権レベル１の粗悪にかかれたデバイスドライバに対しては効果的ではない。
第２のＩ／Ｏ保護機構は、Ｉ／Ｏアドレス空間にマップされた個々のレジスタへのアクセスを制御するＩ／Ｏ許可ビットマップを設けたものである。この保護機構は上述の「ロッキング」機構の一つの実施形態である。簡単に言うと、ビットマップの各ビットはＩ／Ｏレジスタのあるバイトに対応し、Ｉ／Ｏマップレジスタにアクセスする前に関連するビットがプロセッサによってテストされる。テストされたビットがセットされていれば、一般保護エラーが生成される。これに対して、テストビットがセットされていなければ、Ｉ／Ｏ動作が進行可能である。しかしながら、この保護機構には、「ロッキング」機構に関連して上に説明した不具合がある。
また、上記の保護機構は、Ｉ／Ｏアドレス空間への全てのアクセスを可能にするか、あるいはＩ／Ｏアドレス空間へのアクセスを全て拒絶するかのどちらかでしかないという欠点もある。この「オール・オア・ナッシング」の技法は柔軟性に欠け、Ｉ／Ｏマップレジスタに対して種々異なる程度またはレベルの保護を与えることができない。
最後に、保護の問題とは別に、より柔軟なＩ／Ｏマップレジスタの使用を容易にすることは要望される所である。このようなレジスタは、通常単一の機能を果たすことだけに限定され、コンピュータシステムの動作条件次第で、場合によってはリソースが十分に利用されなかったり、他方ではＩ／Ｏマップレジスタによってリソース不足が生じる場合もある。
発明の概要
本発明は、その一つの態様として、少なくとも第１及び第２の動作モードで動作可能なプロセッサを具備したコンピュータシステムの入出力（Ｉ／Ｏ）マップレジスタへのアクセスを確保する方法が提供される。本発明の方法は、まずＩ／Ｏマップレジスタへのアクセス要求を受け取るステップを含む。次に、Ｉ／Ｏマップレジスタと関連づけられた論理回路が、プロセッサが第１のモードで動作中かどうかを判断するが、この場合の第１のモードはたとえばシステム管理モード（ＳＭＭ）であってもよい。論理回路はプロセッサが第１のモードで動作していると判断した場合は、プロセッサによるＩ／Ｏマップレジスタへの第１の無制限型アクセスが可能になる。これに対して、論理回路がプロセッサが第２のモードで動作していると判断すると、プロセッサによるＩ／Ｏマップレジスタへの第２の限定型アクセスが可能になる。プロセッサに対して第１の無制限型アクセスが許可されると、プロセッサは、専用のシステム管理メモリアドレス空間に記憶されたコードの指示の下にＩ／Ｏマップレジスタの内容に対して演算を実行する。
上記第１の型のアクセスを可能にするステップは、少なくともＩ／Ｏマップレジスタへの読出しアクセスを可能にするステップで構成することができ、第２の型のアクセスを可能にするステップは、Ｉ／Ｏマップレジスタへのアクセスを阻止するステップで構成することができる。あるいは、第１の型のアクセスを可能にするステップはＩ／Ｏマップレジスタへの読出し及び書込みの両方のアクセスを可能にするステップで構成し、第２の型のアクセスを可能にするステップはＩ／Ｏマップレジスタへの読出しアクセスのみを可能にするステップで構成することができる。
本発明は、その第２の態様として、コンピュータシステム内の入出力（Ｉ／Ｏ）アドレス空間にマップされたレジスタへのアクセスを制御する方法を提供する。コンピュータシステムは、メモリアドレス空間、Ｉ／Ｏアドレス空間、及びシステム管理モード（ＳＭＭ）メモリアドレス空間を決める。さらに、コンピュータシステムは、システム管理モード（ＳＭＭ）で動作可能なプロセッサを具備し、このモードでは、プロセッサはＳＭＭメモリアドレス空間にアクセスする。本発明のこの方法は、プロセッサでシステム管理要求を受け取るステップ、及びその後システム管理要求に応答してプロセッサをシステム管理モードにするステップが必要である。この後、プロセッサはレジスタへの第１の型のアクセスが可能になり、レジスタの内容に対して演算を実行する。次に、プロセッサはシステム管理モードから出され、レジスタへの第２の型のアクセスが可能になる。
本発明は、その第３の態様として、コンピュータシステムで使用するためのインタフェース装置を提供する。コンピュータシステムは、第１及び第２の動作モードで動作可能である。本発明のインタフェース装置は、入出力（Ｉ／Ｏ）アドレス空間にマップされたレジスタ、レジスタを識別するアドレスデータを受け取るための入力とレジスタにセレクト信号を供給する出力を有するデコーダと、コンピュータシステムが第１のモードで動作しているときそれを検知するよう、またコンピュータシステムが第１のモードで動作している時レジスタへの第１の型のアクセスを可能にし、コンピュータシステムが第１のモードで動作していないときレジスタへの第２の型のアクセスを可能にするよう構成された論理回路とを具備する。
本発明は、上記のようなインタフェース装置を具備したコンピュータシステムもその範囲に含まれる。本発明の他の特徴は添付図面及び以下の詳細な説明から明らかとなろう。
【図面の簡単な説明】
以下、本発明を添付図面に示す実施形態により詳細に説明するが、図中同じ参照符号は同様の構成要素・部分を示す。
図１は、プロセッサの種々の動作モードを示す状態図である。
図２は、本発明を実施することができるコンピュータシステムを示すブロック図である。
図３Ａは、プロセッサがシステム管理モードで動作していないときのプロセッサアドレス空間を示すブロック図である。
図３Ｂは、プロセッサがシステム管理モードで動作しているときのプロセッサアドレス空間を示すブロック図である。
図４は、本発明によるＩ／Ｏマップレジスタへのアクセスを制御するための装置を組み込んだコンピュータシステムを示すブロック図である。
図５は、本発明によるＩ／Ｏマップレジスタへのアクセスを制御するための回路構成の第１の実施形態を示すブロック図である。
図６は、本発明によるＩ／Ｏマップレジスタへのアクセスを制御するための回路構成の第２の実施形態を示すブロック図である。
図７は、本発明によるＩ／Ｏマップレジスタへのアクセスを制御するための回路構成の第３の実施形態を示すブロック図である。
図８は、本発明によるＩ／Ｏマップレジスタへのアクセスを制御する方法の一実施形態を図解したフローチャートである。
図９は、プロセッサがＩ／Ｏマップレジスタへの無制限型アクセス権を取得する方法の一実施形態を図解したフローチャートである。
図１０は、本発明によるシステム管理ランダムアクセスメモリ（ＳＭＲＡＭ）の図式図である。
図１１Ａは、従来技術のコンピュータシステムでプロセッサによりアクセスされるアドレス空間の図式図である。
図１１Ｂは、本発明を採用したコンピュータシステムでプロセッサによりアクセスされるアドレス空間の図式図である。
詳細な説明
ここでは、コンピュータシステムの入出力（Ｉ／Ｏ）アドレス空間にマップされたレジスタへのアクセスを制御するための方法及び装置について説明する。以下の説明においては、本発明の完全な理解を期すために、説明の便宜上具体的な詳細事項を多数記載する。しかしながら、当業者にとっては、本発明がこれらの詳細事項の記載なしで実施可能なことは明白であろう。
Ｉ／Ｏアドレス空間
一部のプロセッサアーキテクチャを採用したコンピュータシステムでは、明確に異なる２つのアドレス空間、すなわちメモリアドレス空間とＩ／Ｏアドレス空間が用意されている。Ｉ／Ｏインタフェース及びその他の機能単位内に配置されたレジスタはＩ／Ｏアドレス空間にマップされ、Ｉ／Ｏマップレジスタと呼ばれる。一般に、Ｉ／Ｏポートは、それと関連づけられた専用のＩ／Ｏマップレジスタを有する。しかしながら、レジスタとポートとの間でデータの流れの方向を指示する適切な回路が設けられれば、２つ以上のＩ／Ｏマップレジスタが共通のポートを共用することもできる。Ｉ／Ｏマップレジスタは、コンピュータ内で、データバッファリング、状態・コンフィギュレーション指示及び制御機能のような多くの機能を遂行することができる。
一実施形態の場合、コンピュータシステムは、Ｉ／Ｏポートを２通りの方法、すなわちＩ／Ｏポートがメモリアドレス空間に書き込まれるメモリマップＩ／Ｏ動作による方法と、Ｉ／Ｏ命令を用いてアクセスされる別のＩ／Ｏアドレス空間を用いる方法の２通りの方法によってアドレスできるようにする。これらの命令には、ＩＮ及びＯＵＴ命令が含まれる。
システム管理モード
コンピュータシステム内のプロセッサは、種々の機構や機能がイネーブルにされたり、ディスエーブルにされたりするいくつかの異なるモードで動作するよう設計することができる。これらの機能のイネーブル化及びディスエーブル化は、システム最適化、後方互換性及び機能透過性を含め、広範な考慮事項によって動機付けされ得る。たとえば、米国カリフォルニア州サンタクララ（Ｓａｎｔａ  Ｃｌａｒａ）のインテル・コーポレーション製のペンティアムヨ（Ｐｅｎｔｉｕｍヨ）プロセッサは図１に示す４つのモード、すなわち下記のいずれかのモードで動作することができる。
１．実アドレスモード１０；
２．保護モード１２；
３．仮想８０８６モード１４；
４．システム管理モード（ＳＭＭ）１６。
これらのモードについては当技術分野において周知である。
ＳＭＭ１６は、アプリケーションソフトウェアにとってもオペレーティングシステムにとっても透過な方法で電源管理やセキュリティのような高準位システムを提供する。たとえば、所定量の時間だけアイドル状態であった周辺装置をパワーダウンするコードは、システム管理ランダムアクセスメモリ（ＳＭＲＡＭ）と呼ばれる専用ＳＭＭアドレス空間に記憶される。このコードは、プロセッサがＳＭＭ１６に入ったときアクセスし、オペレーティングシステム、デバイスドライバ及びアプリケーションソフトウェアに完全に透過な形で実行することができる。これによれば、アプリケーションソフトウェア及びオペレーティングシステム・ソフトウェアの開発者はこのような電源管理機能を組み込む必要がなくなる。
図２には、ＳＭＭ１６で動作することができ、本発明を用いることができるコンピュータシステム１８が示されている。コンピュータシステム１８は、その主要構成要素として、プロセッサ２０，ホストバス２２、ホストブリッジ２４、主メモリ２６、中間バス２８、拡張ブリッジ３０及び拡張バス３２を有する。
プロセッサ２０は信号を処理し、計算を行い、動作を制御する。ホストブリッジ２４はホストバス２２と中間バス２８の間にインタフェース手段を与える。一実施形態においては、中間バス２８はペリフェラル・コンポーネント・インターコネクト（ＰＣＩ；Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスで、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ローカルバス規格改訂版２．１（１９９５年６月１日刊行）に従って動作する。拡張ブリッジ３２は中間バス２８と拡張バス３２との間のインタフェース手段として機能し、中間バスアービタ（図示省略）によりＰＣＩデバイスとして見られる。一実施形態においては、拡張バス３２は、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ；Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バスまたはエキステンディド・インダストリ・スタンダード・アーキテクチャ（ＥＩＳＡ；Ｅｘｔｅｎｄｅｄ  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バスが用いられる。
ホストブリッジ２４には、主メモリ２６へのアクセスを制御するためのメモリコントローラ３４が組み込まれている。ＰＣＩデバイス３６．１は入出力（Ｉ／Ｏ）デバイスでも別の拡張ブリッジでもよく、インタフェース３９を介して中間バス２８に接続されている。Ｉ／Ｏデバイスはいくつかの例が周知であり、スモール・コンピュータ・システム・インタフェース（ＳＣＳＩ；Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）コントローラ、パーソナル・コンピュータ・メモリカード・インターナショナル・アソシエーション（ＰＣＭＣＩＡ；Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ａｓｓｏｃｉａｔｉｏｎ）インタフェース及びキーボードコントローラ等がある。グラフィックス・コントローラ３６．２もインタフェース３９を介して中間バス２８に接続されており、グラフィックス・フレームバッファ３８へのアクセスを制御する。拡張バスマスタ４０．１及び拡張バススレーブ４０．２はインタフェース４１を介して拡張バス３２に接続されている。拡張バスマスタ４０．１は、たとえばダイレクトメモリアクセス（ＤＭＡ；Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラを用いることができる。拡張バススレーブ４０．２は、フロッピィディスクドライブを用いることができる。
インタフェース３９及び４１は、データバッファリング・レジスタ、制御レジスタ及び状態レジスタを含む多数のレジスタ（図示省略）、及び適切なデコーディング論理回路（図示省略）を具備し、これについては以下にさらに詳細に説明する。拡張ブリッジ３０は中間バス２８と拡張バス３２との間のインタフェース手段として機能する。また、拡張ブリッジ３０は上記のような種類のレジスタ及びデコーディング論理回路をも具備している。従って、この明細書に関する限り、「インタフェース装置」という用語は、（インタフェース３９及び４１のように）コンピュータシステムと周辺装置との間のインタフェース手段を構成するインタフェースか、あるいは（拡張ブリッジ３０のような）バスブリッジを意味するものとする。さらに、インタフェース装置は、コンピュータシステムまたは周辺装置に組み込むこともできれば、別個の機能単位とすることもできる。
図２に示すように、拡張ブリッジ３０、グラフィックス・コントローラ３６．２、ＰＣＩデバイス３６．１、拡張バスマスタ４０．１及び拡張バススレーブ４０．２は、プロセッサ２０にシステム管理割込み（ＳＭＩ＃）信号４２を供給するように接続されている。ＳＭＩ＃信号４２は、他のマスク不可能割込みを含め、他の全ての割込みより高い優先順位を持つマスク不可能割込み信号である。プロセッサ２０は、メモリコントローラ３４にシステム管理割込み応答（ＳＭＩＡＣＴ＃）信号４４を供給するように接続されており、このＳＭＩＡＣＴ＃信号４４はＳＭＩ＃信号４２のアサートに応答してアサートされる。各信号の後の＃の符号はその信号が能動ローであること、従ってローへの遷移によってアサートされるということを指示する。プロセッサ２０には、任意の周辺装置、バスブリッジ、電源管理回路あるいはセキュリティ回路を接続してＳＭＩ＃信号４２を供給することができるということは理解されよう。
ＳＭＩ＃信号４２がアサートされると、プロセッサ２０は、これに応答して、ＳＭＩＡＣＴ＃信号をアサートしてメモリコントローラ３４に次のプロセッサアクセスがシステム管理ランダムアクセスメモリ（ＳＭＲＡＭ）５０へのアクセスであるということを知らせる。図３Ａは、ＳＭＭに入る前のプロセッサアドレス空間４６を示し、他方図３Ｂは、ＳＭＩＡＣＴ＃信号４４のアサート後のプロセッサアドレス空間４８を示したものである。図３Ｂに示すように、ＳＭＲＡＭ５０はプロセッサアドレス空間４８内にあるアドレス値域にマップされる。ある装置によるＳＭＩ＃信号４２のアサート後、プロセッサ２０は、未処理の全てのデータ書込み動作が終了するまで待機し、その後レジスタ状態情報をＳＭＲＡＭ５０にセーブする。次に、プロセッサは、内部レジスタを初期ＳＭＭ状態の条件に設定することによりＳＭＭ１６に入りＳＭＲＡＭ５０内の所定のエントリポイントに記憶されたＳＭＩハンドラ（図示省略）の実行を開始する。ＳＭＭ１６にある間、プロセッサ２０は全Ｉ／Ｏアドレス空間及び全メモリアドレス空間にアクセスすることができる。ＳＭＩハンドラは、呼び出されると、まず状態ベクトルを調べて、ＳＭＩ＃信号４２の性質及びソースを確定する。要求の性質及びソースを確定したならば、ＳＭＩハンドラはその要求に対応し、処理するＳＭＭルーチンを実行する。ＳＭＩ＃信号４２は、様々な理由で様々な装置によりアサートすることができ、最も一般的な要求には下記のものがある：
（ａ）アイドル状態のデバイスをパワーダウンする；
（ｂ）アクセスが必要な装置をパワーアップする；
（ｃ）コンピュータシステム１８と周辺装置との間に互換性が得られるようにレジスタ中のデータのフォーマットを変更する；
（ｄ）オペレーティングシステムによっては処理できないモバイルコンピューティング機能（例えばドッキング機能）を処理する；
（ｅ）クロック及び発振器を絞る；
（ｆ）コンピュータシステムに関する状態情報をセーブする；
（ｇ）コンピュータシステムをパワーダウンする。
システム設計に依存する他の機能もＳＭＩ＃信号４２のアサートを引き起こし得る。ＳＭＩハンドラが該当するＳＭＭルーチンを実行したならば、システム管理からのリターン（ＲＳＭ）命令が出され、ＳＭＭに入ったとき記憶されたプロセッサ状態が復元される。従って、ＳＭＭ１６は、コンピュータシステム１８内のシステム管理機能を処理する透過で便利な方法を提供する。
装置説明
次に、図４には本発明の一実施形態を採用したコンピュータシステム１８が示されている。拡張ブリッジ３０は、図示のように、複数のレジスタ６０．１〜６０．３を有し、これらのレジスタ６０はＩ／Ｏアドレス空間にマップされている。これらのレジスタ６０．１〜６０．３はデータバッファリング、状態指示及び種々の制御機能を含むいくつかの機能を果たすよう構成される。また、拡張ブリッジ３０はデコーダ６２を有し、デコーダ６２は、中間バス２８からアドレス及び制御情報を受け取り、プロセッサ２０及びコンピュータシステム１８内の他の装置によるアクセスのためにレジスタ６０．１〜６０．３の１つを選択するよう接続されている。図示のように、拡張ブリッジ３０には論理回路６４も具備され、プロセッサ２０からＳＭＩＡＣＴ＃信号４４を受け取るよう接続されている。従って、論理回路６４はプロセッサ２０がＳＭＭ１６に入ったときそのことを検知することができる。
論理回路６４は、プロセッサ２０がＳＭＭ１６になっていることを検出すると、レジスタ６０．１〜６０．３に第１の型のアクセスを可能にし、プロセッサ２０がＳＭＭ１６になっていない（すなわち、実アドレス、保護または仮想８０８６モードになっている）ことを検出すると、レジスタ６０．１〜６０．３の第２の型のアクセスを可能にするよう機能する。より詳しく言うと、論理回路６４は、プロセッサ２０がＳＭＭ１６になっていることが検出されると、レジスタ６０．１〜６０．３へのフル読出し／書込みアクセスを可能にし、他方プロセッサがＳＭＭ１６になっていないときは、レジスタ６０．１〜６０．３へのアクセスを抑止、あるいは阻止する。図４に示すように、論理回路６４はデコーダ６２に接続されていて、上に述べた機能性が確保されるようデコーダ６２に入力を供給する。しかしながら、論理回路６４はデコーダ６２に組み込むこともできれば、デコーダ６２の下流に設けて、プロセッサ２０がＳＭＭ１６になっていないときデコーダからのセレクト信号をゲート処理するようにすることも可能なことは理解されよう。
さらに、論理回路６４によって可能になる第１の型のアクセスはフル読出し／書込みアクセスである必要はなく、また第２の型のアクセスは完全なアクセスブロックである必要はない。たとえば、第１の型のアクセスは読出しアクセスのみで、これに特定レジスタへの完全アクセスブロックを可能にする第２の型のアクセスを組み合わせることもできる。あるいは、第１の型のアクセスはフル読出し／書込みアクセスで、これにレジスタへの読出しアクセスのみを可能にする第２の型のアクセスを組み合わせてもよい。
上に説明した第１及び第２の型のアクセスは、プロセッサ２０がＳＭＭ１６になっていないときレジスタへのアクセスを完全に阻止するか、または制限するだけで、レジスタへの程度の異なる保護を可能にするのに役立つ。従って、上記の構成は、これを用いない場合にレジスタ６０にアクセスしてその内容を不正に変えることが可能であり得る誤動作プログラム、ウィルスプログラムあるいはオペレーティングシステム・カーネルに対してさえ、簡単かつ効果的な保護手段を提供することができる。上記のように、レジスタ６０に対して確かな保護を講じることは、レジスタ６０．１〜６０．３のいずれかのレジスタが電源管理及びシステム構成用として使用される場合、このようなレジスタに記憶されたデータの損傷はコンピュータシステム１８内のデータ、ソフトウェアの保全性、及びさらには物理装置の保全性についても重大な影響を持ち得るので、特に大切である。
第１及び第２の型のアクセスは、レジスタ６０へのアクセスの程度と関連づける必要はないが、レジスタ６０自体が動作する形態と関連づけてもよい。たとえば、論理回路６４によって可能となる第１の型のアクセスがシリアルポートの形でレジスタ６０．１へのアクセスを容易にし、第２の型のアクセスがパラレルポートの形でレジスタ６０．１へのアクセスを可能にするようにすることもできれば、この逆の関係とすることも可能である。
図５〜図７は、Ｉ／Ｏマップレジスタへの第１及び第２の型のアクセスを容易にするための回路構成をより詳細に示したものである。まず、図５には、制御／状態レジスタ７０及びデータレジスタ７２を有するチップ６８を含む回路構成６６が示されており、レジスタ７０及び７２はＩ／Ｏアドレス空間にマップされている。図示の回路構成６６は、さらにアドレスデコーダ７４を含み、このアドレスデコーダはアドレスバス７６からアドレスデータを受け取り、かつ制御バス７８からメモリ・入出力（Ｍ／ＩＯ）信号を受け取るよう接続されている。また、回路構成６６は、ＡＮＤゲート８０の形の論理回路も具備し、この論理回路はアドレスデコーダ７４からＳＥＬＥＣＴ信号８２を受け取り、制御バス７８からＳＭＩＡＣＴ＃信号８４を受け取るよう接続されている。また、ＡＮＤゲート８０は、ＣＨＩＰ  ＳＥＬＥＣＴ信号８６をチップ６８に供給するよう接続されている。従って、ＡＮＤゲート８０がアドレスデコーダ７４からのＳＥＬＥＣＴ信号８２をゲート処理することを可能にすることによって、ＳＭＩＡＣＴ＃信号８４を出すプロセッサがＳＭＭ１６になっていないとき、ＡＮＤゲート８０はレジスタ７０及び７２へのアクセスを全て阻止することができる。このようにして、レジスタ７０及び７２は、プロセッサがＳＭＭ１６になっていないとき、内容の損傷あるいは不正書き換えが阻止される。
図６は、本発明のもう一つの実施形態を示し、この実施形態では、回路構成８８はＩ／Ｏマップレジスタ９０及びアドレスデコーダ９２を有する。アドレスデコーダ９２は、アドレスバス７６からアドレスデータを受け取り、制御バス７８からメモリ／入出力（Ｍ／ＩＯ）信号を受け取るように接続されている。また、図示の回路構成８８は、ＡＮＤゲート９４及び９６とＯＲゲート９８からなる論理回路を有する。ＡＮＤゲート９４は、制御バス７８から読出し／書込み（Ｒ／Ｗ）信号１００を受け取り、アドレスデコーダ９２からＳＥＬＥＣＴ信号１０２を受け取ると共に、ＳＥＬＥＣＴ１信号１０４をＯＲゲート９８へ出力するよう接続されている。ＡＮＤゲート９６はアドレスデコーダ９２からＳＥＬＥＣＴ信号１０２を受け取り、制御バス７８からＳＭＩＡＣＴ＃信号１０６を受け取ると共に、ＳＥＬＥＣＴ２信号１０８をＯＲゲート９８へ出力するよう接続されている。ＯＲゲート９８は、ＲＥＧＩＳＴＥＲ  ＳＥＬＥＣＴ信号１１０をレジスタ９０へ出力する。従って、ＳＭＩＡＣＴ＃信号１０６がアサートされていないとき、図４に示すデコーダ９２論理回路の構成は、レジスタ９０への読出しアクセスのみを許可するということは理解されよう。しかしながら、ＳＭＩＡＣＴ＃信号１０６がアサートされると、レジスタ９０への読出し及び書込みアクセスが容易になる。
図７は、本発明のさらにもう一つの実施形態を示し、この実施形態においては、回路構成１１０はいずれも同じＩ／Ｏアドレスにマップされた一対のレジスタ１１２及び１１４を有する。また、この回路構成１１０はアドレスデコーダ１１６を有する。アドレスデコーダ１１６はデータバス７６からアドレスデータを、制御バス７８からメモリ／入出力（Ｍ／ＩＯ）信号を受け取るように接続されている。回路構成１１０は、ＡＮＤゲート１１８及び１２０と、マルチプレクサ（ＭＵＸ）１２２も具備している。ＡＮＤゲート１１８及び１２０は各々アドレスデコーダ１１６からＳＥＬＥＣＴ信号１２４を受け取るよう接続されている。さらに、ＡＮＤゲート１１８は制御バスからＳＭＩＡＣＴ＃信号１２６を受け取るよう接続されており、他方ＡＮＤゲート１２０はインバータ１３０から反転ＳＭＩＡＣＴ＃信号１２８を受け取るように接続されている。ＳＭＩＡＣＴ＃信号を出すプロセッサがＳＭＭ１６になっていないときは、ＡＮＤゲート１１８がＳＥＬＥＣＴ１信号１３２をレジスタ１１２に供給する。同様に、ＳＭＩＡＣＴ＃信号を出すプロセッサがＳＭＭ１６になっているときは、ＡＮＤゲート１２０がＳＥＬＥＣＴ２信号１３４をレジスタ１１４に供給する。ＭＵＸ１２２は双方向マルチプレクサで、ＳＭＩＡＣＴ＃信号１２６がハイかローかによってレジスタ１１２または１１４のどちらかをデータバス７９に接続する。より詳しく言うと、ＳＭＩＡＣＴ＃信号がアサートされていて（すなわちローで）、プロセッサがＳＭＭ１６になっていることが指示されているとき、ＭＵＸ１２２は読出しまたは書込み動作が可能なようにレジスタ１１４をデータバス７９に接続する。あるいは、ＳＭＩＡＣＴ＃信号１２６がアサートされておらず（すなわちハイで）、プロセッサがＳＭＭ１６になっていないことが指示されているとき、ＭＵＸ１２２はレジスタ１２２をデータバス７９に接続する。
従って、プロセッサがＳＭＭ１６になっていないとき、レジスタ１１４の内容はアクセス不可能であり、プロセッサがＳＭＭ１６になっていないときのウィルスまたは誤動作プログラムによるアクセスが阻止され、レジスタ内容の損傷が防止される。
さらに、上に述べたレジスタは、種々のサイズのものを使用することができ、従ってレジスタのサイズによって、保護を確保するために本発明を適用して問題を解消する能力の程度も変化する。たとえば、上記のレジスタは各々１〜１２４ビットの間のサイズを持つことができる。
方法の説明
次に、図８にはＩ／Ｏマップレジスタへのアクセスを制御する方法が示されている。図示の方法は、まずステップ１３４において、Ｉ／Ｏマップレジスタへのアクセス要求をデコーダ及びＩ／Ｏマップレジスタと関連づけられた論理回路で受け取るステップからなる。ステップ１３６では、論理回路がプロセッサのモードを検知する。より詳しく言うと、プロセッサからでたＳＭＩＡＣＴ＃信号を調べることによって、アクセス要求を出したプロセッサがＳＭＭで動作しているかどうかが調べられる。ステップ１３８でプロセッサがＳＭＭで動作していることが確認されると、プログラムはステップ１４０に進み、プロセッサはＩ／Ｏマップレジスタへの無制限アクセスを許可される。これに対して、ステップ１３８でプロセッサがＳＭＭで動作していないことが確認されると、プログラムはステップ１４２へ進み、プロセッサはＩ／Ｏマップレジスタへの限定アクセスを許可されるか、あるいは全くアクセスを許可されない。
プロセッサがＩ／Ｏマップレジスタへの無制限アクセス権を得る方法が図９に全体として符号１５０で示されている。この方法では、ステップ１５２で、Ｉ／Ｏアドレス空間にマップされ電源管理機能を実行中の制御レジスタが組み込まれたバスブリッジのような装置がＳＭ＃信号をアサートすることによってシステム管理割込み要求をプロセッサへ出す。ステップ１５４で、プロセッサはＳＭＩＡＣＴ＃信号をアサートすることによりその要求に応答する。次に、プロセッサは、ステップ１５６に進んで、図３Ｂに示されるように、ＳＭＲＡＭをメモリアドレス空間のメモリ値域にマップし、プロセッサ状態情報をＳＭＲＡＭに書き込む。図１０にＳＭＲＡＭ１８０が図解してあり、ステップ１５６でＳＭＲＡＭ１８０に書き込まれたプロセッサ状態情報１８２の記憶場所が示されている。プロセッサは、ステップ１５８でＳＭＭに入り、ステップ１６０でＳＭＲＡＭ１８０内のエントリポイント１８４へジャンプしてＳＭＩハンドラルーチン１８６にアクセスする。すると、ＳＭＩハンドラルーチン１８６は、ステップ１６２で、状態レジスタ（状態ベクトルとも呼ばれる）をチェックして、ＳＭＩ要求の性質及びソースを確認する。この例の場合、状態レジスタはそのＳＭＩ要求が上述のバスブリッジから出たものであること、そしてその制御レジスタの内容を変更する必要があるということを指示する。たとえば、制御レジスタには、プロセッサを動作させようとするフル動作周波数に対する比率を示す「絞り」値が書き込まれるかもしれない。その場合、状態レジスタは、プロセッサの動作周波数を「絞る」、従って「絞り」値を小さくする要求に応答してＳＭＩ要求が出されたということを示すことを指示することになる。ステップ１６４で、ＳＭＩハンドラルーチン１８６は、上に述べたように、ＳＭＩＡＣＴ＃信号のアサートの故に、対応するＩ／Ｏマップレジスタへの無制限アクセス権を与えられる。ステップ１６６で、ＳＭＩハンドラルーチン１８６はレジスタの内容に対して（すなわち「絞り」値に対して）要求された演算処理を実行する。
より詳しく説明すると、ＳＭＩハンドラルーチン１８６は、図１０に示すようにＳＭＩハンドラルーチン１８６の一部からなるＩ／Ｏマップレジスタ・アクセス及び変更コード１８８を実行する。コード１８８で実行を完了したＳＭＩハンドラルーチン１８６は、ステップ１６８でＳＭＭ命令からのリターン（ＲＳＭ）命令を出す。次に、プロセッサは、ステップ１７０で、プロセッサ状態情報１８２を検索して取り出し、ステップ１５２でＳＭＩ＃信号の送出前に存在したプロセッサ状態を復元する。
図１１Ａ及び１１Ｂは、２つのアドレス空間構成を示し、図１１Ａのアドレス空間構成は従来の技術で実施されているものであり、図１１Ｂのアドレス空間構成は本発明によって達成されるものである。図１１Ａに示す構成においては、プロセッサ１９０は、図示のように、実アドレス、保護または仮想８０８６動作モードになっているとき、円１９２で示すアドレス空間へのアクセス権を持ち、ＳＭＭになっているとき、円１９４で示すアドレス空間へのアクセス権を持つ。明らかに理解できるように、プロセッサ１９０は全ての動作モードにおいて全Ｉ／Ｏマップ空間に対するアクセス権を有する。図１１Ｂに示す構成においては、プロセッサ１９０は、実アドレス、保護または仮想８０８６動作モードになっているとき、円１９６に示すアドレス空間へのアクセス権を有し、ＳＭＭになっているとき、円１９８で示すアドレス空間へのアクセス権を有する。円１９８に示すように、本発明は、プロセッサがＳＭＭモードになっているときのみアクセス可能な専用ＳＭＭ  Ｉ／Ｏマップアドレス空間の生成を可能にするものである。
本発明は、プロセッサまたは他のコンピュータの装置によるＩ／Ｏマップレジスタへのアクセスを制御するための効果的な方法を提供するものである。本発明を実装するための回路の搭載は、回路の構成が簡単なことから、ダイスペースが大きくなるという不利を招くことなく達成することができる。
本発明によれば、プロセッサがＳＭＭで動作しているときだけアクセスすることができる保護Ｉ／Ｏアドレス空間の生成が可能になる。保護Ｉ／Ｏアドレス空間には、プロセッサがＳＭＭで動作しているときだけ保護が講じられるので、本発明では、誤動作やウィルスプログラムに対して、さらにはオペレーティングシステムによる不正なアクセスに対してＩ／Ｏマップレジスタの内容を効果的に保護する手段が得られる。また、本発明は、様々な保護深さまたはレベルの生成が可能であるという点もある。たとえば、保護は絶対保護とすることもできれば、保護Ｉ／Ｏマップレジスタへの書込みトランザクションを阻止する程度までしか保護が及ばないようにすることもできる。
本発明によれば、拡張機能が可能なようにＩ／Ｏマップレジスタの構成を行うことが可能になる。たとえば、本発明の他の実施形態においては、Ｉ／Ｏマップレジスタをプロセッサが動作しているモードによってシリアルまたはパラレル・データバッファ・レジスタとして構成することが可能である。
以上、コンピュータシステムのＩ／Ｏアドレス空間にマップされたレジスタへのアクセスを制御する方法及び装置について詳細に説明した。本発明は、特定の実施形態との関連で説明したが、広義の本発明の精神及び範囲を逸脱することなくこれらの実施形態に対して様々な修正態様及び変更態様を実施することが可能なことは明らかであろう。従って、本願明細書及び図面は、限定的な意味ではなく、例示説明を目的とした意味で解釈されるべきものである。
【図１】
0004234202.tif 000002
【図２】
0004234202.tif 000003
【図３Ａ】
0004234202.tif 000004
【図３Ｂ】
0004234202.tif 000005
【図４】
0004234202.tif 000006
【図５】
0004234202.tif 000007
【図６】
0004234202.tif 000008
【図７】
0004234202.tif 000009
【図８】
0004234202.tif 000010
【図９】
0004234202.tif 000011
【図１０】
0004234202.tif 000012
【図１１Ａ】
0004234202.tif 000013
【図１１Ｂ】
0004234202.tif 000014