(57)【特許請求の範囲】
【請求項１】
プロセッサベースシステムでのシステム管理モードの命令を実行する装置であって、
前記プロセッサベースシステムが処理される命令シーケンスを格納するメモリと、
システムアドレス空間を有するとともに当該格納された命令シーケンスを実行するプロセッサと、
を有し、
前記格納された命令シーケンスは、前記プロセッサに以下のプロセスステップを生ぜしむるためのものであり、前記プロセスステップは、
(a) システム管理モードである間に、前記プロセッサを保護モードで動作するように構成し、かつ、前記プロセッサを１メガバイトよりも大きいアドレスにおいて動作させるステップと、
(b) 前記プロセッサのページング機能を呼び出すステップと、
(c) 前記プロセッサを仮想モードにて動作させるように構成するステップと、
(d) 前記格納された命令シーケンスを処理するステップと、
からなり、前記プロセスステップは、システム管理要求を処理する命令が入力されたときに行われることを特徴とする装置。
【請求項２】
ステップ（b）は、
(b.1) 少なくとも１つのページテーブルを作るステップと、
(b.2) 前記プロセッサのページング機能を呼び出すステップと、
からなることを特徴とする請求項１記載の装置。
【請求項３】
ステップ(a)の前に、少なくとも１つのページテーブルをつくるステップをさらに有することを特徴とする請求項１記載の装置。
【請求項４】
ステップ(a)は、
(a.l) 第２の位置へのニアジャンプを実行するステップと、
(a.2) 前記プロセッサを保護モードにて動作するように構成するステップと、
からなることを特徴とする請求項１記載の装置。
【請求項５】
(e) 制御が、前記プロセッサが保護モードにて動作するように構成されることを要求するタスクを実行するための命令シーケンスに移行すべきか否かを判別するステップと、
(f) そうである場合に、前記プロセッサが前記保護モードにて動作するように構成し、前記タスクを実行するための命令シーケンスを実行するステップと、
(g) そうでなければ、前記格納された命令シーケンスの処理を継続するステップと、
をさらに有することを特徴とする請求項１記載の装置。
【請求項６】
(h) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(i) そうである場合に、仮想モードでの動作を行わないように前記プロセッサを構成し、前記プロセッサを保護モードにおいて動作するように構成し、前記プロセッサがページングをディスエーブルにするように構成し、
そうでない場合は、システム管理活動に関連する命令シーケンスの実行を継続するステップと、
をさらに有することを特徴とする請求項５記載の装置。
【請求項７】
(h) メモリの前記プロセッサのコンテキストを復元するステップと、
(i) 呼び出し元の機能に戻るステップと、
をさらに有することを特徴とする請求項５記載の装置。
【請求項８】
(j) 少なくとも１つのページテーブルを削除するステップと、
(k) メモリの前記プロセッサのコンテキストを復元するステップと、
(l) 呼び出し元の機能に戻るステップと、
をさらに有することを特徴とする請求項５記載の装置。
【請求項９】
(e) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(f) そうである場合に、前記仮想モードでの動作を行わないように前記プロセッサを構成し、前記プロセッサを前記保護モードにおいて動作するように構成し、前記プロセッサがページングをディスエーブルにするように構成し、
そうでない場合は、システム管理活動に関連する命令シーケンスの実行を継続するステップと、
をさらに有することを特徴とする請求項１記載の装置。
【請求項１０】
(g) メモリの前記プロセッサのコンテキストを復元するステップと、
(h) 呼び出し元の機能に戻るステップと、
をさらに有することを特徴とする請求項９記載の装置。
【請求項１１】
プロセッサベースシステムのシステム管理モードの命令を実行する方法であって、
(a) システム管理モードである間に、プロセッサを保護モードで動作するように構成し、かつ、前記プロセッサを１メガバイトよりも大きいアドレスにおいて動作させるステップ
と、
(b) 前記プロセッサのページング機能を呼び出すステップと、
(c) 仮想モードにおいて動作するように前記プロセッサを構成するステップと、
(d) 第１の位置に格納される命令シーケンスを処理するステップと、
からなり、ステップ(a)、(b)、(c)、(d)は、システム管理要求を処理する命令が入力されると行われることを特徴とする方法。
【請求項１２】
ステップ(b)は、
(b.1)少なくとも１つのページテーブルを作るステップと、
(b.2)前記プロセッサのページング機能を呼び出すステップと、
からなることを特徴とする請求項１１記載の方法。
【請求項１３】
ステップ(a)の前に少なくとも１つのページテーブルをつくるステップをさらに有することを特徴とする請求項１１記載の方法。
【請求項１４】
ステップ(a)は、
(a.1)第２の位置にニアジャンプを実行するステップと、
(a.2)保護モードにおいて動作するように前記プロセッサを構成するステップと、
からなることを特徴とする請求項１１記載の方法。
【請求項１５】
(e) 前記プロセッサが保護モードにて動作するように構成されることを要求するタスクを実行するための命令シーケンスに制御が移行すべきか否かを判別するステップと、
(f) もしそうならば、保護モードにて動作するように前記プロセッサを構成し、前記タスクを実行するための命令シーケンスを実行するステップと、
(g) そうでなければ、前記格納された命令シーケンスの処理を継続するステップと、
をさらに有することを特徴とする請求項１１記載の方法。
【請求項１６】
(h) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(i) もしそうならば、前記仮想モードでの動作を行わないように前記プロセッサを構成し、前記保護モードにて動作するように前記プロセッサを構成し、ページングをディスエーブルするように前記プロセッサを構成し、
そうでなければ、システム管理活動に関連する命令シーケンスの実行を継続することを特徴とする請求項１５記載の方法。
【請求項１７】
(i) メモリの前記プロセッサのコンテキストを復元するステップと、
(i)呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項１５記載の方法。
【請求項１８】
(j) 少なくとも１つのページテーブルを削除するステップと、
(k) メモリの前記プロセッサのコンテキストを復元するステップと、
(l) 呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項１５記載の方法。
【請求項１９】
(e) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(f) もしそうならば、前記仮想モードでの動作を行わないように前記プロセッサを構成し、前記保護モードにて動作するように前記プロセッサを構成し、ページングをディスエーブルするように前記プロセッサを構成し、
そうでなければ、システム管理活動に関連する命令シーケンスの実行を継続することを特徴とする請求項１１記載の方法。
【請求項２０】
(g) メモリの前記プロセッサのコンテキストを復元するステップと、
(h) 呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項１９記載の方法。
【請求項２１】
プロセッサベースシステムのシステム管理モードで命令を実行するコンピュータ実行可能なプロセスステップであって、
(a)システム管理モードである間に、プロセッサを保護モードで動作するように構成し、かつ、前記プロセッサを１メガバイトよりも大きいアドレスにおいて動作させるステップと、
(b) 前記プロセッサのページング機能を呼び出すステップと、
(c) 仮想モードにおいて動作するように前記プロセッサを構成するステップと、
(d) 第１の位置に格納される命令シーケンスを処理するステップと、
からなり、ステップ(a)、(b)、(c)、(d)は、システム管理要求を処理する命令が入力されたときに行われることを特徴とするコンピュータ実行可能なプロセスステップ。
【請求項２２】
ステップ(b)は、
(b.l) 少なくとも１つのページテーブルを作成するステップと、
(b.2) 前記プロセッサのページング機能を呼び出すステップと、
からなることを特徴とする請求項２１記載のコンピュータ実行可能なプロセスステップ。
【請求項２３】
ステップ(a)の前に、少なくとも１つのページテーブルをつくるステップをさらに有することを特徴とする請求項２１記載のコンピュータ実行可能なプロセスステップ。
【請求項２４】
ステップ(a)は、
(a.1) 第２の位置へのニアジャンプを実行するステップと、
(a.2) 保護モードにおいて動作するように前記プロセッサを構成するステップと、
からなることを特徴とする請求項２１記載のコンピュータ実行可能なプロセスステップ。
【請求項２５】
(e) 前記プロセッサが保護モードにおいて動作するように構成されることを要求するタスクを実行するための命令シーケンスに制御を移行すべきか否かを判別するステップと、
(f) もしそうならば、前記保護モードにおいて動作するように前記プロセッサを構成し、前記タスクを実行するための命令シーケンスを実行するステップと、
(g) そうでなければ、前記格納された命令シーケンスの処理を継続するステップと、
を更に有することを特徴とする請求項２１記載のコンピュータ実行可能なプロセスステップ。
【請求項２６】
(h) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(i) もしそうならば、前記仮想モードでの動作を行わないように前記プロセッサを構成し、前記保護モードにおいて動作するように前記プロセッサを構成し、ページングをディスエーブルするように前記プロセッサを構成し、
そうでなければ、システム管理活動に関連する命令シーケンスの実行を継続するステップと、
をさらに有することを特徴とする請求項２５記載のコンピュータ実行可能なプロセスステップ。
【請求項２７】
(h) メモリの前記プロセッサのコンテキストを復元するステップと、
(i) 呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項２５記載のコンピュータ実行可能なプロセスステップ。
【請求項２８】
(j) 少なくとも１つのページテーブルを削除するステップと、
(k) メモリの前記プロセッサのコンテキストを復元するステップと、
(l) 呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項２５記載のコンピュータ実行可能なプロセスステップ。
【請求項２９】
(e) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(f) もしそうならば、前記仮想モードでの動作を行わないように前記プロセッサを構成し、前記保護モードにおいて動作するように前記プロセッサを構成し、ページングをディスエーブルするように前記プロセッサを構成し、
そうでなければ、システム管理活動に関連する命令シーケンスの実行を継続するステップと、
をさらに有することを特徴とする請求項２１記載のコンピュータ実行可能なプロセスステップ。
【請求項３０】
(g) メモリの前記プロセッサのコンテキストを復元するステップと、
(h) 呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項２９記載のコンピュータ実行可能なプロセスステップ。
【発明の詳細な説明】
【０００１】
【技術分野】
本発明は、マイクロコントローラベースシステムのメモリに関し、より詳しくは、仮想モードでのシステム管理モードサービスを行う装置および方法に関係する。
【０００２】
【関連技術の説明】
パーソナルコンピュータアーキテクチャに基づく現代のコンピュータは、システム管理モード（ＳＭＭ）として公知の、インテルｘ８６ファミリのマイクロプロセッサのオペレーティングモードを使用することによって、パワーマネジメントや他のシステム管理機能を実行できる。ＳＭＭは、オペレーティングシステムおよびアプリケーションソフトウェアに見えないように、プロダクト・特定ハードウェア機能を制御するシステムファームウェアによって使用される。ＳＭＭは、例えば、システム構成やパワーダウン装置の構成などのシステム管理情報に対して使用され、すなわち、ゼロボルトサスペンド機能などの省電力ルーチンを呼び出す。
【０００３】
ＳＭＭは、ＳＭＩによって呼び出される。ＳＭＩは、通常のコード実行速度に比較すると、多くの場合低速で実行する。これは、ＳＭＩがアンキャッシュメモリ領域の１メガバイトの境界の下で大抵操作するからである。この特徴は、オーバラッピングメモリによるキャッシュ対立を避けるために実行される。ＳＭＩの発生の間、ＣＰＵは、データアクセスのためのちょうど６４キロバイトより４ギガバイトまで延在するセグメント限度を除いたリアルモードに似ているＳＭＭモードを実行する。コード実行アドレス可能性は、１メガバイトのみに限られる。かかる方法によって、結果としてシステム性能は制限される。
【０００４】
１の代替の方法は、ＳＭＺが呼び出されるときはいつでも、１メガバイトの境界より上のキャッシュ可能な領域から、１メガバイトの境界の下のキャッシュ可能な領域に向かう、ＳＭＩコードおよびデータの転送を含む。次に、ＳＭＩの実行が、標準のＳＭＭモードで起こる。そして、ＳＭＩコードは、ＳＭＩの終了時に１メガバイトの領域より上のキャッシュ可能な領域に戻される。かかる方法は、かなりの時間を要し、故に、システム性能の低下につながる。
【０００５】
したがって、上述した課題を解決する装置および方法に対する技術に需要が存在する。特に、既存のソフトウェアを書き直す必要が無い状態で、キャッシュ領域のシステム管理割り込みサービスコードを有効且つ安全に実行する装置および方法に対して需要が存在する。
【０００６】
【発明の概要】
本発明は、プロセッサベースシステムのシステム管理モードにて命令を実行するための装置および方法である。この装置は、プロセスベースシステムが処理される命令シーケンスを格納するためのメモリからなる。装置は、さらに、システムアドレス空間を有するとともに格納された命令シーケンスを実行するプロセッサも含む。格納された命令シーケンスは、プロセッサに以下の動作を生ぜしむるプロセスステップを含む。このプロセスステップは、(a) プロセッサを保護モードで動作させるように構成しながらも、システム管理モードにて、プロセッサは１メガバイトより大きいアドレスで動作するステップと、(c) プロセッサのページング機能を呼び出すステップと、(d) プロセッサを仮想モードにて動作させるように構成するステップと、(e) 格納された命令シーケンスを処理するステップと、からなり、プロセスステップは、システム管理要求を処理する命令が入力されたときに行われる。
【０００７】
【好ましい発明の詳細な説明】
本発明は、メモリページングが仮想モードでＳＭＩコードを実行することによって可能となるシステム管理モード（ＳＭＭ）の下で動作する仮想モニタをつくる。仮想モード動作によって、１メガバイト未満で動作しなければならなかったＳＭＭモードに対して書かれたＳＭＭコードが、１メガバイトの境界より上で実行できる。特に、全てのＳＭＩハンドラは１メガバイトの境界より上に写像される。そして、パワーマネジメントコードは、ＳＭＭモード内で、ページイネーブル保護モード仮想タスクとして実行される。完全に別々のメモリ空間のＳＭＩハンドラコードによって、ＳＭＭに入るときにキャッシュフラッシュは不必要である。その理由は、正規システムを備えたメモリ使用は重ならないからである。
【０００８】
本実施例を、プロセッサシステム１０に関して記載する。図１は、本発明のプロセスを実行する典型的なプロセッサシステム１０を示す。プロセッサシステム１０内で、バストランザクションが、システムデータバス１２を介して、プロセッサ、すなわち中央処理装置（ＣＰＵ）１４と、システムメモリ１８とシステム管理ランダムアクセスメモリ（ＳＭＲＡＭ）２０とビデオメモリ２２とディスクドライブコントローラ２４やネットワークコントローラ２６等のさまざまなＩ/Ｏおよび周辺装置モジュールとの間で、実行される。ＣＰＵ１４は、システムアドレスバス３０およびＣＰＵ制御信号ライン３２を介してメモリコントローラ２８およびバスコントローラ３６に結合される。次に、メモリコントローラ３４は、システムメモリ１８およびＳＭＲＡＭ２０に接続されている。
【０００９】
メモリコントローラ３４は、メモリアドレスをライン３８を介して、メモリ制御信号をライン４０を介してシステムメモリ１８およびＳＭＲＡＭ２０に供給して、システムメモリ１８やＳＭＲＡＭ２０とＣＰＵ１４との間でシステムデータバス１２を介したデータ転送を可能にする。ＣＰＵ１４も、システムアドレスバス３０、システムデータバス１２、およびＣＰＵ制御信号ライン３２を介して、バスコントローラ３６に接続されている。バスコントローラ３６は、次に、バッファ付きアドレスバス４２およびバッファ付きデータバス４４を介して、ビデオメモリ２２と、ディスクドライブコントローラ２４と、ネットワークコントローラ２６と、適宜の周辺装置に接続されている。プロセッサシステム１０は、デスクトップコンピュータやノートパソコン、サーバとして実施される。メモリコントローラ３４と他のシステム論理とは、チップセットと称するものに集積されて、パワーマネジメントＢＩＯＳサービスを提供する。かかるチップセットの例は、部品指定(part designations)ＳＰＣ８２１０、ＳＰＣ９２２０の下にセイコーエプソンによって製造されるフォークナ(Falconer)チップセットを含む。かかるチップセットの他の例は、インテル４３０ＴＸ、インテル４３０ＨＸ、インテル４４０ＥＸチップセットを含む。
【００１０】
一実施例において、ＣＰＵ１４は、インテル社によって販売されているインテル４８６マイクロプロセッサである。他の実施例において、ＣＰＵ１４は、ＡＭＤによって販売されているＫ-６マイクロプロセッサでもよい。更なる実施例において、ＣＰＵ１４は、サイリクス社(Cyrix Corp.)によって販売されている５８６マイクロプロセッサである。尚、本発明が、システム管理モード（ＳＭＭ）の使用を行うマイクロプロセッサを使用するとともに、専用割り込みライン（図１のライン５０）およびメモリスペースＳＭＲＡＭ２０を使用するオペレーティングモードである、任意のプロセッサベースシステムにおいて実行されることは、当業者によって理解される。ＳＭＭは、オペレーティングシステムおよびアプリケーションソフトウェアに対して完全に透明になるように、ファームウェアのインテリジェントパワーマネジメントや他の強化システム機能を実行するために使用される。
【００１１】
ＳＭＭは、ＣＰＵ１４へのＳＭＩ信号の表明を介してシステム管理割り込みを生成することによって呼び出される。ＣＰＵ１４は、反応して、ＳＭＲＡＭ２０にアクセスするライン３２を介して提供されるＳＭＩＡＣＴ制御信号を表明する。ＳＭＲＡＭ ２０は、ＳＭＭのみでの仕様に対して専用化されて固定されているメモリ空間である。すなわち、オペレーティングシステムおよびアプリケーションソフトウェアは、この空間にアクセスをしない。現在のＣＰＵ１４の状態（コンテキスト）は、ＳＭＩＡＣＴ信号の表明後にＳＭＲＡＭ２０に格納され、次に、ＣＰＵ１４は、ＳＭＲＡＭ２０での位置へジャンプして、システム管理活動を実施するためのＳＭＩハンドラコードを実行する。システム管理活動の終了時に、ＳＭＩハンドラは、レジューム（ＲＳＭ）命令を実行する。この命令は、ＳＭＲＡＭ２０からＣＰＵ１４のコンテキストを回復させ、ＳＭＩＡＣＴ信号の表明を止め、次に、以前に割込されたオペレーティングシステムやアプリケーションプログラムの実行に制御を戻す。
【００１２】
アドレスバス３０上のＣＰＵ１４（図１）によって表明されたアドレスは、１６進のフォーマットで参照され、接尾辞「Ｈ」によって示される。インテルのマイクロプロセッサのアドレスバス３０は、３２ビット長であり、４ギガバイトのシステムアドレス空間５０のアドレス指定を行うことができる。ＳＭＲＡＭ２０は、このシステムアドレス空間５０内の任意の場所に配置されるが、しかし、多数のチップセット（例えば、部品指定ＳＰＣ８２１０およびＳＰＣ８２２０の下にセイコーエプソンによって製造されるフォークナーチップセット）によって実行されるので、ＣＰＵ１４は、ＳＭＲＡＭコードおよびデータを、物理的なメモリから、１メガバイト以下のＣＰＵ１４のアドレス空間５０の一部に自動的にマップするように構成される。
【００１３】
図２Ａは、図１のプロセッサシステム１０用の典型的なシステムアドレスマップ、すなわち空間５０を示す。システムアドレスの最低位の６４０キロバイト、すなわち0H-9FFFFが、システムメモリ１８にマップする。システムアドレスA0000H−BFFFFHは、ビデオメモリ２２にマップする。システムアドレスC0000H−CFFFFHは、ビデオＢＩＯＳコードにマップする。システムアドレスD0000H−DFFFFH、E0000H−EFFFFHは、しばし、別々のＰＣＭＣＩＡ周辺機器領域にマップされたり、または、他のタイプの周辺装置にマップされる。システムアドレスF0000H−FFFFFHは、BIOSコード用に残される。システムアドレス100000H（１メガバイト）以降は、アプリケーション使用に対するシステムメモリにマップされる。
【００１４】
図２Ｂは、ＳＭＲＡＭ２０の典型的なレイアウトを示す。プロセッサ、すなわちＣＰＵ１４は、ＳＭＭに入るときにＣＰＵ１４の状態（すなわち、コンテキスト）を保存するために使用されるＳＭＲＡＭ２０内で、アドレスの範囲をあらかじめ定義する。ＣＰＵ１４も、ＳＭＩコードのエントリポイントを指定する。これらの位置は、ＳＭＲＡＭ２０のベースアドレスを基準としている。図２Ｂに示されたＳＭＲＡＭ２０の他の領域は、定義するＳＭＭプログラマに対して実施特化されて残されている。
【００１５】
一実施例において、ＳＭＲＡＭ２０のベースアドレスは、ＣＰＵ１４によって、A0000hのデフォルト値に設定される。ＣＰＵ１４は、ＣＰＵの１４のコンテキストを保存するために、AFE00hに対して下方の位置AFFFFh（ＳＭＲＡＭベース+FFFFh）で開始するＳＭＲＡＭの５１２バイト領域を定義する。ＣＰＵ１４のコンテキストが保存されると、ＣＰＵ１４は、ＳＭＭ位置A8000h（ＳＭＲＡＭベース+8000h）でＳＭＩハンドラのエントリポイントへジャンプする。次に、ＳＭＩハンドラは、ＳＭＲＡＭ内で次にそのルーチンを実行し、それを使用して必要に応じてデータおよびスタックを格納する。
【００１６】
ＣＰＵ１４は、上記多数の設計を使用して実行されるが、現在の議論目的のために、インテルのプロセッサのｘ８６ファミリに触れる。図３Ａ乃至図３Ｆは、本発明の議論において使用されるｘ８６ファミリのプロセッサのレジスタを示す。ｘ８６ファミリのプロセッサは、各々８個の３２ビット汎用レジスタＥＡＸ、ＥＢＸ、ＥＣＸ、ＥＤＸ、ＥＳＩ、ＥＤＩ、ＥＢＰ、ＥＳＰを含む。ＡＸ、ＢＸ、ＣＸ、ＤＸレジスタの１６の下位オーダビットは、バイトアドレス指定用のＡＬ（高）、ＡＬ（低）、ＢＨ、ＢＬ、ＣＨ、ＣＬ、ＤＨ，ＤＬレジスタとして、８ビットの増加で、独立にアドレス指定可能である。更に、プロセッサは、６個の１６ビットセグメントレジスタを含む。このレジスタは、セグメントのアドレスを判別するために、メモリ内のセグメント記述のテーブルへと指し示すセグメントセレクタを保持する。２個の３２ビットレジスタと、ＥＦＬＡＧＳと、ＥＩＰ（命令ポインタ）とは、状況および制御目的のために使用される。
【００１７】
各ｘ８６プロセッサも、メモリ管理のために使用される４個のレジスタを含む。グローバルディスクリプタテーブルレジスタ（ＧＤＴＲ）は、グローバルディスクリプタテーブルがメモリに見い出されるベースアドレスを格納する。グローバルディスクリプタテーブルは、ベースアドレスを提供するセグメントディスクリプタと、セグメントアドレス指定が行われるサイズおよび保護と、を保持する。ローカルディスクリプタテーブルレジスタ（ＬＤＴＲ）は、ローカルディスクリプタテーブルがメモリ内に見い出されるベースアドレスも格納する。そして、ローカルディスクリプタテーブルは、個々のプログラム用のセグメントアドレス指定が行われるセグメントディスクリプタを保持する。タスクレジスタ（ＴＲ）は、プログラム間のスイッチに使用されるグローバルディスクリプタテーブルでのタスク状態ディスクリプタ（ＴＳＳ）のアドレスを含む情報を保持する。割り込みディスクリプタテーブルレジスタ（ＩＤＴＲ）は、割り込み動作用のアドレスが判別されるテーブルに向けられるアドレスと他情報とを保持する。
【００１８】
プロセッサは、４個の制御レジスタＣＲ０、ＣＲ１、ＣＲ２、ＣＲ３を含む。ＣＲ０レジスタは、システム制御フラグを保持する。このフラグは、動作モードを制御したり、プロセッサに適用する状態を示したりする。ＣＲ０レジスタは、ページングビット（３１）を含む制御ビットを保持する。ページングビットは、発生するページングに対して設定される必要があり、また、ページングがディスエーブルになるべきときに、クリアにされなければならない。
【００１９】
ｘ８６ファミリのプロセッサにおいて、プログラムは、タスクと称される。タスクは、例外、ジャンプ、割り込み、または呼び出しにより開始される。動作を転送するこれら命令のうちの１つが、宛先を参照して使用されてタスクスイッチを呼び出すときに、プログラムの間でのスイッチングが起きる。タスクスイッチは、１のプログラムから他のプログラムへの実行を移動させる。この移動が生じるとき、前のプロセスとともに使用されるほぼ全てのレジスタのコンテンツは、保存されなければならない。特に、すでに進行中の条件操作の結果を含むＥＦＬＡＧＳレジスタのコンテンツは、保存する必要がある。さまざまなタスクの状態は、タスク状態セグメント（ＴＳＳ）（図４参照）に保存される。このタスク状態セグメントは、タスク状態セグメントディスクリプタにより定義されるデータ構造である。タスク状態セグメントディスクリプタは、タスク状態セグメントのベースアドレスと、タスクが現在動作しているかまたは動作を待っているかを示すビジービットと、を含む。タスク状態セグメントディスクリプタに加えて、タスク状態セグメントディスクリプタに間接的なインデックスを提供するタスクゲートディスクリプタが、タスク間の制御の移行のために使用される。
【００２０】
マルチタスキングを行うために、タスク状態セグメントはつくられなければならない。そして、ＴＳＳディスクリプタがつくられる必要があり、グローバルディスクリプタテーブルに配置され、故に、タスク状態セグメントにアクセスでき、そして、保存された状態が回復される。更に、タスクレジスタＴＲは、グローバルレジスタのＴＳＳディスクリプタのインデックスとともにロードされなければならず、故に、タスク状態セグメントにアクセスされる。
【００２１】
ｘ８６ファミリのプロセッサは、Ｉ/Ｏビットマップの使用によるＩ/Ｏアドレス空間へのアクセスのための保護機構を提供する。図４は、タスク状態セグメント（ＴＳＳ）の典型的なＩ/Ｏビットマップを示す。Ｉ/Ｏビットマップは、各タスクのＴＳＳの一部である。その結果、異なるタスクが異なるＩ/Ｏビットマップを参照することができる。ＴＳＳディスクリプタのＩ/Ｏマップベースエントリは、対応するＩ/Ｏビットマップが開始するＴＳＳ内で、オフセットを提供する。有効Ｉ/Ｏビットマップは、Ｉ/ＯマップベースがＴＳＳに含まれる場合存在する。Ｉ/Ｏビットマップは、電源投入セルフテスト（ＰＯＳＴ）の間、またはＳＭＩが呼び出された後に、作成されなければならない。詳細は後述する。Ｉ/Ｏビットマップは、ＣＰＵ１４によって調べられて、必要なＩ/ＯポートまたはＩ/Ｏ位置に実際にアドレス指定を行うことができるかどうかを判別する。例えば、アドレスが０のポートまたは位置は、オフセットが０のマップに含まれるビットと関係し、アドレスが１のポートまたは位置は、１のオフセットを有するビットと関係する。ポートや位置に対応するマップのビットがクリアされ（０に等しい）、さらに、適用可能なポートへのアクセスが存在するとき、特定のポートやＩ/Ｏ位置がタスクに対して使用される。逆に、Ｉ/Ｏ位置に相当するマップにビットが設定される場合（１に等しい)、特定のＩ/Ｏ位置は、タスクのために使用できない。マップの長さは、Ｉ/Ｏ位置の保護ポートの追加の個数を設定する。マップに含まれないポートの全てに、自動的にセットビット(set bit)が割り当てられる。マップに含まれないポートへのアクセスは、例外を生成する。一実施例において、Ｐｅｎｔｉｕｍプロセッサを使用するときに、合計で（６４Ｋポート）/(バイト毎に８ビット）、すなわち、８１９２バイトが、６４キロバイトの８-ビットポートを有するＰｅｎｔｉｕｍプロセッサの完全なＩ/Ｏアドレス空間を保護するのに必要になる。
【００２２】
ｘ８６ファミリのプロセッサは、保護動作モードにおいて提供されるハードウェアセットアップによって、Ｖ86動作モードをサポートする。プロセッサは、仮想８０８６タスクとして多数の８０８６プログラムを実行することができる。仮想タスクは、ソフトウェアにおいて、現れて８０８６環境になるものを提供する。仮想８０８６タスクは、ｘ８６プロセッサハードウェアおよびシステムソフトを使用して、リアルモードプログラムを実行する。プロセッサハードウェアは、ＴＳＳデータ構造を使用して仮想メモリ空間を提供し、プロセッサハードウェアレジスタおよび仮想メモリを使用してそのタスク用の命令を実行する。システムソフトは、実行されるべき他のタスクに関して、任意の仮想タスクのインターフェースを制御する。このシステムソフトを、仮想８０８６モニタと称する。
【００２３】
仮想８０８６モードにスイッチするために、ＣＲ０レジスタのＶＭビット（１７）が設定されなければならない。（これは、Ｖ８６ ＴＳＳへのファージャンプ(FAR JUMP)によって自動的に行われる）。仮想８０８６モードで動作するときに、プロセッサは、セグメントレジスタを（ＣＳ、ＤＳ、ＥＳ、ＦＳ、ＧＳのいずれか）を標準ポインタレジスタ、すなわちオフセットと組み合わせて、リアルモードで動作する８０８６プロセッサと同様な方法で線形アドレスを形成する。しかし、これらの線形アドレスは、ページングユニットを通り抜けて、１メガバイトの物理メモリにマップする。このメモリは、システムの任意の場所に存在する。このように、仮想８０８６タスクを行うときに、プロセッサは、リアルモードとしてＶ８６モードアドレスを形成して、仮想タスクであるアプリケーションプログラムを走らせる。プロセッサは、システム仮想マシンモニタソフトウェアを走らせるために保護モードに戻る。
【００２４】
前述のように、ＳＭＭは、ＣＰＵ１４へのＳＭＩ信号の表明を介してシステム管理割り込みを生成することによって呼び出される。ＣＰＵ１４は、反応して、ＳＭＲＡＭ２０にアクセスするライン３２を介して提供されるＳＭＩＡＣＴ制御信号を表明する。本発明の原理によると、物理メモリに位置するＳＭＲＡＭ２０に格納されるデータおよびコードは、最初に、図５に示すように、システムアドレス空間５０の１メガバイトを超える位置２２へとマップされる。現在のＣＰＵ１４の状態（コンテキスト）は、ＳＭＩＡＣＴ信号の表明の後、ＳＭＲＡＭ２０に格納される。次に、ＣＰＵ１４は、システムアドレス空間５０の１メガバイトを超えるＳＭＲＡＭ２０の位置へジャンプして、システム管理活動を実行するためのＳＭＩハンドラコードを実行する。
【００２５】
次に、ＳＭＩハンドラは、ＳＭＭモードでＣＰＵ１４によるＳＭＩコードの実行を開始するように構成される。特に、ＳＭＩハンドラは、図６に示すように、システムアドレス空間５０で１メガバイトを超える位置２４に、ニアジャンプ(NEAR JMP)を実行する。そこで、ＣＰＵ１４のモード変化が行われる。位置２４は、位置２２の６４キロバイト内に存在しなければならない。次に、ＳＭＩハンドラは、ＣＰＵ１４に次に制御信号を発して、ＣＰＵ１４を保護モードで動作するように構成する。一実施例において、これは、ＣＲ０レジスタのビット０を１に設定することによって成し遂げられる。
【００２６】
一実施例において、次に、ＳＭＩハンドラは、ＣＰＵ１４のページング機能を使用するときに要求されるページテーブルをつくるように構成される。ページテーブルは、システムメモリ１８（図１）の領域に配置される。各ページテーブルは、１０２４個の各ページスタートアドレスに向けられている１０２４個のエントリを含む。
【００２７】
ＳＭＩハンドラは、ＣＰＵ１４のタスク状態セグメント（ＴＳＳ）機能を使用するときに要求されるＴＳＳおよびＩ／Ｏビットマップをつくるように構成される。Ｉ／Ｏビットマップを使用すると、Ｉ／Ｏアドレス空間にアクセスするための保護機構が提供される。前述したように、Ｉ／Ｏビットマップは、呼び出されたタスクのＴＳＳに格納される。
【００２８】
他の実施例において、ページテーブルおよびＩ／Ｏビットマップは、ＳＭＭの起動前に、電源投入セルフテスト（ＰＯＳＴ）の間に、作成される。この他の実施例において、ページテーブルとＴＳＳおよびＩ／Ｏビットマップとは、一度作成されなければならないだけであり、ＳＭＭ活動の終了時に削除されない。更に、適宜の実施例において、ページテーブルは、ＴＳＳおよびＩ／Ｏビットマップを同時につくらずに、作成される。逆に、ＴＳＳおよびＩ／Ｏビットマップは、ページテーブルを同時に作成せずに作成できる。
【００２９】
ページテーブルとＴＳＳおよびＩ／Ｏビットマップとがつくられると、ＳＭＴハンドラは、ＣＰＵ１４のページング機能を呼び出す。一実施例において、これは、インテル社によって販売されているようなｘ８６プロセッサのＣＲ０レジスタのビット３１を設定することによって、実行される。次に、ＳＭＩハンドラは、ＣＰＵ１４を仮想モードに切り替える。一実施例において、これは、仮想モードへ切替えるためのＴＳＳへのファージャンプ(FAR JMP)を実行することによって、実施される。更に、１メガバイトを越える物理メモリ領域は、タスクの線形アドレス空間の第１のメガバイトに実質的にマップされる。その結果、タスクスイッチが、呼び出されて、１メガバイトの境界より上に、プロセッサ１４の動作モードを仮想モードに変化させる。
【００３０】
仮想モードにおいて１回、ＣＰＵ１４は、リアルモードと同様な方法でアプリケーションの論理アドレスを判別する。物理アドレスは、ページテーブルを使用することによって判別される。次に、ＳＭＩハンドラは、システム管理活動を処理するために必要なタスクの実行を開始する。システム管理活動の実行中に、ソフトウェアは、特定の特別タスクの実行を容易にするために、プロセッサを時々保護モードにおいて動作するように構成している。これらの特別なタスクは、当業者には周知なように、演算論理ユニットの浮動小数点ユニットのアクセスとキャッシュフラッシュとを含む。もしそうならば、ＳＭＩハンドラは、保護モードにおいて作動するＣＰＵ１４を構成する。このように一旦構成されると、ＣＰＵ１４は、特別なタスクを処理する。特別なタスクが終了すると、ＳＭＩハンドラは、ＣＰＵ１４を仮想モードにおいて作動するように構成し、故に、システム管理活動が再開できる。
【００３１】
システム管理活動が終了すると、ＳＭＩハンドラは、ＣＰＵ１４を仮想モードから出すように構成する。そして、それは、また、ＣＰＵ１４を保護モードにおいて再び動作するように構成する。次に、ページングは、ＰＧビット、ビット３１(図３Ｇ参照)をクリアすることによってディスエーブルになる。次に、ＳＭＩハンドラは、ＳＭＲＡＭ２０にＣＰＵｌ４のコンテキストを復元するレジューム（ＲＳＭ）命令を実行し、ＳＭＩＡＣＴ信号の表明を止め、以前に割込まれたオペレーティングシステムやアプリケーションプログラムの実行に制御を戻す。
【００３２】
図７Ａおよび図７Ｂは、本発明のプロセスの一実施例を示すフローチャートである。スタート状態から始まり、プロセスＳ１００は、プロセスステップＳ１０２に進み、ここで、ＳＭＭは、ＳＭＩの発行によって呼び出される。プロセスＳ１００は、次にプロセスステップＳ１０４へ進み、ここで、特に、物理メモリに位置するＳＭＲＡＭ２０に格納されたデータおよびコードは、最初に、システムアドレス空間５０において１メガバイトを超える位置２２にマップされる。現在のＣＰＵ１４の状態（コンテキスト）は、ＳＭＲＡＭ２０に格納される。次に、ＳＭＩハンドラは、１メガバイトを越えるＳＭＩコードの実行を始めているが、一方、ＣＰＵ１４は、プロセスステップＳ１０６に示すように、ＳＭＭモードで未だ動作している。特に、ＳＭＩハンドラは、システムアドレス空間５０にて未だ１メガバイトを超える位置へのニアジャンプ(NEAR JMP)を実行する。次に、プロセスＳ１００は、プロセスステップＳ１０８へ進む。そこで、ＳＭＩハンドラは、ＣＰＵ１４に制御信号を発して、ＣＰＵ１４を保護モードにおいて動作するように構成する。次に、ＳＭＩハンドラは、ページテーブルおよびＩ／Ｏテーブル（プロセスステップＳ１１０）をつくる。または、ページテーブル及びＩ／Ｏテーブルを、ＰＯＳＴの間につくることもできる。次に、ＳＭＩハンドラは、ＣＰＵ１４のページング機能を呼び出す（プロセスステップＳ１１２）。次に、プロセスＳ１００は、プロセスステップＳｌ１４へ進む。そこでは、ＳＭＩハンドラは、ＣＰＵを仮想モードで動作させるように構成する。次に、ＳＭＩハンドラは、ＳＭＩの処理に進み、プロセスステップＳ１１６に示すように、システム管理活動を実行する。
【００３３】
システム管理活動の実行中に、ソフトウェアは、特定の特別タスクの実行を容易にするために（判別ステップＳ１１８）、時々プロセッサを保護モードで動作させるように変更する。これらの特別なタスクは、当業者に対して周知なように、演算論理ユニットの浮動小数点のアクセス及びキャッシュフラッシュを含む。もしそうならば、プロセスＳ１００は、プロセスステップＳ１２０へ進む。そこで、ＳＭＩハンドラは、ＣＰＵ１４を保護モードで動作させるように構成する。このように、構成されると、ＣＰＵ１４は、特別タスクを処理する（プロセスステップＳ１２２）。特別タスクが終了すると、ＳＭＩハンドラは、ＣＰＵ１４を仮想モードで動作させるように構成する。次に、ＳＭＩハンドラは、判別ステップＳ１２６へ進む。判別ステップＳ１１８として、プロセスＳ１００が、実行しなければならない特別タスクが無いと判定する場合、プロセスＳ１００は、直接判別ステップＳ１２６に進む。
【００３４】
判別ステップＳ１２６で、プロセスＳ１００は、全てのシステム管理活動が終了したかどうかを問い合わせる。もしそうでなければ、プロセスＳ１００は、プロセスステップＳ１１６へ進む。そこで、それは、システム管理活動の処理を続ける。全てのシステム管理活動が終了した場合、ＳＭＩハンドラが、ＣＰＵ１４を仮想モードから出すように構成し（プロセスステップＳ１２８）、次に、ＣＰＵ１４を再び保護モードにて動作させるように構成する。次に、ページングはディスエーブルになる（プロセスステップＳ１３０）。ページテーブルおよびＩ／Ｏテーブルが、ＳＭＩの呼び出しの後でＰＯＳＴの間でないときにつくられる場合、プロセスＳ１００は、プロセスステップＳ１３２へ進み、ページテーブルおよびＩ／Ｏテーブルを削除する。次に、ＳＭＩハンドラは、ＣＰＵ１４のコンテキストをＳＭＲＡＭ２０に戻すレジューム（ＲＳＭ）命令を実行する（プロセスステップＳ１３４）。次に、プロセスＳ１００は、プロセスステップＳ１３６に示すように、以前に割込まれたオペレーティングシステムプロセスやアプリケーションプログラムの実行に制御を戻す。次に、プロセスＳ１００は終わる。
【００３５】
本発明の使用を介して、システム管理モード内のコードを有効に実行する装置および方法が提供される。特に、本発明は、プログラムコードの重複や、メモリの増加使用や保守の増加の無い状態で、システム管理モード内のコードの実行を容易にする。本発明の使用は、簡単且つコンパクトで、デバッグが簡単なコードの実行を容易にする。
【００３６】
本発明は、好ましい実施例に関して記載したが、当業者において明らかな他の実施例も、本発明の範囲内に含まれる。したがって、本発明の範囲は、以下の請求の範囲によってのみ定義されることを意図したものである。
【図面の簡単な説明】
【図１】  図１は、本発明のプロセスを実行する典型的なプロセッサシステムを示す。
【図２Ａ】  図２Ａは、図１のプロセッサシステム用の典型的なシステムアドレスマップ５０を示す。
【図２Ｂ】  図２Ｂは、ＳＭＲＡＭ２０の典型的なレイアウトを示す。
【図３Ａ】  図３Ａは、ＣＰＵ１４の一実施例のレジスタを示す。
【図３Ｂ】  図３Ｂは、ＣＰＵ１４の一実施例のレジスタを示す。
【図３Ｃ】  図３Ｃは、ＣＰＵ１４の一実施例のレジスタを示す。
【図３Ｄ】  図３Ｄは、ＣＰＵ１４の一実施例のレジスタを示す。
【図３Ｅ】  図３Ｅは、ＣＰＵ１４の一実施例のレジスタを示す。
【図３Ｆ】  図３Ｆは、ＣＰＵ１４の一実施例のレジスタを示す。
【図３Ｇ】    図３Ｇは、ＣＰＵ１４の一実施例のレジスタを示す。
【図４】  図４は、本発明において使用されるＩ/Ｏビットマップの一実施例を示す。
【図５】  図５は、物理的なメモリからＣＰＵアドレス空間までＳＲＡＭに格納されるデータおよびコードのマッピングを示す。
【図６】  図６は、本発明の原理に従って、ニアジャンプ動作の実行によるメモリのセグメントへの制御の移行を示す。
【図７Ａ】  図７Ａは、本発明のプロセスの一実施例を示すフローチャートである。
【図７Ｂ】  図７Ｂは、本発明のプロセスの一実施例を示すフローチャートである。
【図１】
0004434482.tif 000002
【図２Ａ】
0004434482.tif 000003
【図２Ｂ】
0004434482.tif 000004
【図３Ａ】
0004434482.tif 000005
【図３Ｂ】
0004434482.tif 000006
【図３Ｃ】
0004434482.tif 000007
【図３Ｄ】
0004434482.tif 000008
【図３Ｅ】
0004434482.tif 000009
【図３Ｆ】
0004434482.tif 000010
【図３Ｇ】
0004434482.tif 000011
【図４】
0004434482.tif 000012
【図５】
0004434482.tif 000013
【図６】
0004434482.tif 000014
【図７Ａ】
0004434482.tif 000015
【図７Ｂ】
0004434482.tif 000016