(57)【特許請求の範囲】
【請求項１】
ＳＭＩイベントを発生させるシステム管理割り込み（ＳＭＩ）メカニズムを有する、処理のシステム管理モード（ＳＭＭ）をサポートするプロセッサとシステムメモリを有するコンピュータシステムであって、
対応するＳＭＩルーチンにつき、複数のＳＭＩイベントの各々と関連するための再入可能なＳＭＭハンドラー手段と、
システムメモリにおけるＳＭＭ領域を定義するためのＳＭＭ領域手段であって、前記ＳＭＭ領域はＳＭＩコンテクスト及びＳＭＩハンドラーセグメントを有しており、
ＳＭＩイベントを認識し、対応するＳＭＩルーチンを処理するためにＳＭＭハンドラーを選択的に呼び出すための第１のＳＭＭ手段と、
第１のＳＭＩイベントに応答して、第１の選択されたプロセッサの状態情報を前記ＳＭＩコンテクストにストアし、対応する第１のＳＭＩルーチンを処理するために、前記ＳＭＭハンドラー手段を呼び出す第２のＳＭＭ手段と、
前記第１のＳＭＩルーチンの処理の間に生じる第２のＳＭＩイベントに応答して、前記第１の選択されたプロセッサの状態情報を維持し続けると同時に、第２の選択されたプロセッサの状態情報を前記ＳＭＩコンテクストにストアし、且つ対応する第２のＳＭＩルーチンを処理するために、前記ＳＭＭハンドラー手段にリエンターする手段と、
プロセッサが前記第２のＳＭＩルーチンの処理を完了したとき、前記第２の選択されたプロセッサの状態情報をリストアし、且つ前記第１のルーチンの処理を再開する前記ＳＭＭ手段、
を有するコンピュータシステム。
【請求項２】
前記ＳＭＩセグメントは、各ＳＭＩイベントが対応する選択されたプロセッサの状態情報をストアするための対応位置を割り当てられた準スタックとして実行され、前記第１の選択されたプロセッサの状態情報は第１の位置にストアされ、前記第２の選択されたプロセッサの状態情報は第２の位置にストアされることを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記ＳＭＭ手段は、次のＳＭＩイベントに応答して、選択されたプロセッサの状態情報をストアするための、次の位置に対するアドレスポインタをストアするレジスタを含むことを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
プロセッサ及びシステムメモリを有するコンピュータシステムにおいて使用するＳＭＩネスティングを含む拡張されたシステム管理の方法であって、
前記プロセッサは、ＳＭＩイベントを発生させるＳＭＩメカニズムを含む処理のＳＭＭをサポートし、
前記コンピュータシステムは、複数のＳＭＩイベントの各々のために、対応するＳＭＩルーチンを含むＳＭＭハンドラーを備え、
前記システムメモリは、ＳＭＩコンテクストセグンメントおよびＳＭＭハンドラーセグメントを含むＳＭＭ領域を備えており、
前記方法が、
ＳＭＩイベントに応答して、対応するＳＭＩルーチンを処理するためにＳＭＭハンドラーを選択的に呼び出すステップと、
第１のＳＭＩイベントに応答して、第１の選択されたプロセッサの状態情報をＳＭＩコンテクストセグメントにストアし、且つ対応する第１のＳＭＩルーチンを処理するために、ＳＭＭハンドラーを呼び出すステップと、
前記第１のＳＭＩルーチンの処理中に生じる第２のＳＭＩイベントに応答して、前記第１の選択されたプロセッサの状態情報を維持し続ける間、第２の選択されたプロセッサの状態情報をＳＭＩコンテクストセグメントにストアし、且つ対応する第２のＳＭＩルーチンを処理するために、ＳＭＭハンドラー手段に再入するステップと、
前記プロセッサが前記第２のＳＭＩルーチンの処理を完了したとき、前記第２の選択されたプロセッサの状態情報をリストアし、且つ前記第１のＳＭＩルーチンの処理を再開するステップ、
を有する方法。
【請求項５】
前記ＳＭＩセグメントは、各ＳＭＩイベントが対応する選択されたプロセッサの状態情報をストアするための、対応する位置に割付られる準スタックとして実施され、前記第１の選択されたプロセッサの状態情報は第１の位置にストアされ、且つ前記第２の選択されたプロセッサの状態情報は第２の位置にストアされることを特徴とする請求項４に記載の方法。
【請求項６】
次のＳＭＩイベントに応答して、選択されたプロセッサの状態情報をストアするための、次の位置に対してアドレスポインタをストアするステップをさらに有することを特徴とする請求項５に記載の方法。
【請求項７】
前記コンピュータシステムは、キャッシュメモリを含み、前記ＳＭＩハンドラーはキャッシュできることを特徴とする請求項４乃至６のいずれか１項に記載の方法。
【請求項８】
ＳＭＩイベントはプロセッサの内部か、あるいは外部の何れかで発生されることを特徴とする請求項４乃至６のいずれか１項に記載の方法。
【請求項９】
ＳＭＩイベントはメモリマップされたアクセスによって発生されることを特徴とする請求項４乃至６のいずれか１項に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にコンピュータシステム、特に、プロセッサがＳＭＩイベントのネスティングを伴う拡張されたシステム管理モードを実現するコンピュータシステムに関する。
典型的な実施の形態において、本発明は、ハードウェアの周辺機器機能（例えばＶＧＡ及び音声カード機能）の（ソフトウェアにおいて）仮想化をサポートする拡張されたシステム管理モードを用いるｘ８６プロセッサにおいて具現化される。
【０００２】
【従来の技術】
コンピュータシステムは、周辺機器の相互接続バス（例えば、ＰＣＩやＩＳＡ）に結合された周辺機器のインターフェース論理回路（例えば、周辺機器の声誉装置或いはインターフェースカード）と共に、プロセッサのバスに相互結合された、プロセッサおよびメモリサブシステムを含む。プロセッサと周辺機器の相互接続バス間のシステム制御およびデータパスの相互接続機能はシステム（チップセット）論理回路によって達成される。
ｘ８６プロセッサアーキテクチャに基づいたコンピュータシステムは、オペレーティング・システムおよびアプリケーション・ソフトウェアに透明な(transparent) 方法で呼びだされるシステム管理モード（ＳＭＭ）を代表的にサポートする。ＳＭＭは、システムロジックによって表明され得る、高い優先順位のシステム割り込みを提供し、プロセッサによる幾つかの具現化において、応答では、マシン状態の少なくとも一部が保存され、ＳＭＭハンドラーは割り込みをサービスするために用いられる。ＳＭＭの使用例は、周辺機器の透明な停止およぼ再開の様な、電力管理用である。
【０００３】
本発明の範囲から限定することなく，この背景情報は、発明がアプリケーション：プロセッサによって実行されるソフトウェアにいて、ある周辺機器のインターフェース機能を仮想化することによって、コンピュータシステムハードウェアの複雑性およびコストを減少する、を有する特定の問題のコンテキストにおいて与えられる。
関連したアプリケーション（１）と（２）は、システムの母板上の周辺機器のインターフェースロジックによって通常達成される、プロセッサの選択された周辺機器のインターフェース機能において、仮想化する（同化する）ことによってコンピュータシステムの複雑性およびコストを減少するために、仮想システム（或いはサブシステム）アーキテクチャ（ＶＳＡ）を含むプロセッサおよびコンピュータシステムに向けられる。関連アプリケーンションにおいて述べられた典型的な実施の形態はグラフィックスおよび音声の周辺のハードウェア機能のためのＶＳＡ仮想化である。
【０００４】
仮想システムアーキテクチャの絶対的に必要な統合的特徴は、ＶＳＡハードウェーアの仮想化ソフトウェアをもたらすために、通常のプロセッサの実行を透明的に横取りするメカニズム(preemptive mechnism) である。おそらく、このような横取りするメカニズムは、通常のプログラムの実行を、透明的に割り込むための高い優先度システムのトラッピング／割り込みメカニズムとして実現される。
アクセス・トラッピングは通常のプロセッサの実行と同期している。ＶＳＡの仮想化されたハードウェア機能（例えば、グラフィックス又はオーディオ）へのアクセスはトラップされ、ＶＳＡソフトウェアが関連したＶＳＡルーチンを処理するために呼び出される。
対照的に、割り込みは、通常のプロセッサの実行と同期的していない。周辺のハードウェアは、（オーディオデータが連続的に引き取られるオーディオＦＩＦＯバッファのような）サービスを要求する。周辺ハードウェアは、割り込みが発生されるようにし、ＶＳＡソフトウェアは、先ず割り込みのソースを決定し、適切なＶＳＡルーチンを呼び出す。
【０００５】
もし、多重の周辺インターフェース機能が仮想化されるなら、一般にＶＳＡソフトウェア、および特に横取りのメカニズムは、平行のトラピング／割り込みイベント間で優先化する必要があるであろう。例えば、ＶＳＡグラフッィクス仮想化ルーチンの間に、オーディオハードウェア（例えば、ＦＩＦＯバッファ）はＶＳＡオーディオ仮想ルーチンからの高度の優先サービスを要求することができる。更に、それは、ＶＳＡ仮想化中に、低い優先度の割り込み機能（例えば、タイマー）をサービスすることを可能にするために要求することができる。
通常の割り込みメカニズムはＶＳＡ横取りメカニズムに対して有利ではない。例えば、マスクすることができない割り込み（nonmaskable interrupts: NMI)は高い優先度であるという利点があるが、同期するトラッピングを容易にサポートしない。
【０００６】
従来のＳＭＭは、システムロジック或いはプロセッサの何れかによって表明される高い優先度のシステム割り込みを提供し、トラッピングに適応できる。例えば、ＳＭＭの電力管理アプリケーションにおいて、周辺機器に割当られたＩ／Ｏアドレスへのアクセスがトラップされ、ＳＭＭハンドラーが周辺機器がパワーダウンされたかどうかをテストするために呼び出される--もし、そうなら、周辺機器はパワーアップされ、プロセッサ状態はＩ／Ｏ命令の開始に対して変更される。従って、ＳＭＭは、システム機能を扱う目的のために、通常のプログラム実行の透明な横取りに対して設計される。
ＳＭＭを伴う問題は、今実行されると、それはＳＭＩイベントのネスティングをサポートしないことである。１つのＳＭＭの実行において、もし第２のＳＭＩイベントが第１のＳＭＩイベントの処理中に発生すると、第２のＳＭＩイベントはラッチされ、通常の処理が第１のＳＭＩイベントから回復した後に処理される−第１ＳＭＩのハンドリングルーチンは、２つのイベントの相対的な優先度に関係なく第２のＳＭＩイベントを扱うために割り込まれない。
【０００７】
現在のＳＭＭの実行に伴う他の問題は、それらがＩ／Ｏトラッピングをサポートしている間、それらはメモリマップされたアクセスに対してトラッピングをサポートしない。グラフッィクスの周辺カードはビデオフレームバッファ（また、時には制御レジスタ）のためにメモリマッピングを用いる−両立性の理由のために、Ｉ／Ｏマッピングは、ビデオ制御レジスタのためにまだ一般的に用いられる（例えば、ビデオタイミング、カーソル制御、カラーパレット、およびグラフッィクスモードのために）。
現在のＳＭＭの実行に伴う他の問題は、それらがハードウェアの仮想化をサポートするにはあまりにも遅すぎることである。ＳＭＩハンドリングは、プロセッサ状態をセーブし、ＳＭＩハンドリングルーチンを呼出し、ＳＭＩルーチンを処理し、且つ通常の処理を再開する前にプロセッサ状態を復元することを要求する。周辺のインターフェースハードウェアによって実行される代表的な周辺のインターフェース機能が約１−２マイクロセカンドかかるけれども、現在のＳＭＭの実行において、このプロセスは約６−１０マイクロセカンドかかる。
【０００８】
関連出願（３）は、あらゆるＳＭＭハンドリング動作によって必然的に変更されるプロセッサ状態のその部分のみをセーブすることによってＳＭＭ動作を早くする拡張されたＳＭＭの実行を開示している。−もし、特別のＳＭＩハンドリングルーチンがプロセッサ状態の他の部分を変更するならば、ＳＭＩハンドリングルーチンはプロセッサ状態の他の部分をセーブする（特定のＳＭＭ命令がその目的のために与えられる）。この技術は、セーブされ、復元されなければならないプロセッサ状態の情報を最小にし、それによりＳＭＭモードへの入口およびＳＭＭモードからの出口に関連したオーバーヘッド／待ち時間を減らす。
ＳＭＭ性能を増大するために用いられている他の技術は、キャッシュすることができるＳＭＭスペースの一部を作ることである。特に、１つのＳＭＭ実行において、ＳＭＭハンドラーは、ＳＭＭハンドラー情報（プロセッサ状態を含む）をストアするために、（キャッシュすることができない）ＳＭＭスペースを用い、キャッシュすることができるメモリの他の領域へジャンプする。従って、ＳＭＭのオーバーヘッドが減少されないけれど（即ち、復元されなければならないプロセッサ状態情報はキャッシュされない）、ＳＭＭハンドラーの性能はキャッシィングによって増大される。
【０００９】
【発明の概要】
本発明の目的は、選ばれた周辺インターフェース機能が、仮想システムアーキテクチャをサポートするために拡張されたシステム管理モードを備えることによって、プロセッサにおいて仮想化されるコンピュータシステムの設計を容易にすることである。
本発明のこの、および他の目的は、ＳＭＩネスティングを含む拡張されたシステム管理モード（system management mode: SMM)によって達成される。拡張されたＳＭＭはプロセッサおよびメモリを含むコンピュータシステムにおいて実現される。ここで、プロセッサは、システム管理割り込み(system management interrupt: SMI)イベントを信号化するＳＭＩメカニズムを含む処理のシステム管理モードをサポートする。
【００１０】
本発明の１つの特徴において、拡張されたＳＭＭは、複数のＳＭＩイベントの各々、対応するＳＭＩルーチンを有する再入可能なＳＭＭソフトウェアハンドウラーを有する。ＳＭＭ領域はシステムメモリにおいて定義され、ＳＭＩコンテクストのセグメントとＳＭＭハンドラーのためのセグメントを含む。
ＳＭＭロジックは、ＳＭＩ割り込みを認識し、対応するＳＭＩルーチンを処理するためにＳＭＭハンドラーを選択的に呼び出す。
第１のＳＭＩイベントに対して、ＳＭＭロジックは、第１の選択されたプロセッサの状態情報をＳＭＩコンテクストセグメントにストアし、対応する第１のＳＭＩルーチンを処理するためにＳＭＭハンドラーを呼び出す。第１のＳＭＩルーチンの処理中に生じる第２のＳＭＩイベントに対して、ＳＭＭロジックは、第１の選択されたプロセッサの状態情報を維持し続けている間、第２の選択されたプロセッサ状態情報をＳＭＩコンテクストセグメントにストアし、且つ対応する第２のＳＭＩルーチンを処理するために、ＳＭＭハンドラーを再入する。
【００１１】
プロセッサが第２のＳＭＩルーチンの処理を完了すると、ＳＭＭロジックは、第２の選択されたプロセッサの状態情報を再ストアし、横取りされた第１のＳＭＩルーチンを再開する。
本発明の他の特徴において、ＳＭＩセグメントは、各ＳＭＩイベントが対応する選択されたプロセッサ状態情報をストアするための対応ロケーションに割付けられる準スタック(quasi-stack) として実行される。従って、第１の選択されたプロセッサの状態情報が第１のロケーションにストアされ、そして第１のロケーションに維持されている第１の選択されたプロセッサの状態情報と一緒に、第２の選択されたプロセッサの状態情報が第２のロケーションにストアされる。
本発明の他の特徴において、ＳＭＩロジックは、次のＳＭＩイベントに応答して選択されたプロセッサの状態情報をストアするための、次のロケーションのためのアドレスポインターをストアするレジスタを含む。
【００１２】
本発明の他の特徴において、ＳＭＩハンドラーはキャッシュ可能である。典型的な実施の形態では、ＳＭＩヘッダーとＳＭＩハンドラーの双方がキャッシュ可能である。
本発明の他の特徴において、ＳＭＩイベントはプロセッサ内或いは外の何れかで発生される。
本発明の他の特徴において、メモリのメモリマップされた領域へのアクセスに応答して発生される。
本発明の実施の形態は、以下の技術的利点の１つ以上を実現するために具現化される。拡張されたシステム管理モードは、例えば、周辺のインターフェース機能の仮想化をサポートするために、ＳＭＩネスティングを実行する。ＳＭＩネスティングを含む、ＳＭＭモードは、例えば、グラフィックス機能の仮想化をサポートするために、メモリマップされたアクセスに応答して、信号されたＳＭＩによって呼び出すことができる。ＳＭＩヘッダー／コンテクスト情報および再入可能なＶＳＡソフトウェアを含むＳＭＭ領域は、性能を増大（即ち、スループットの増大及びオーバーヘッド／待ち時間の減少）するためにキャッシュ可能なシステムメモリにマップされる。ＳＭＩヘッダーのロケーション／ポインターおよびＳＭＭメモリ領域の上部と下部（top and bottom) はＳＭＩヘッダーをセーブするとことに関連した待ち時間を減少するために、それにより、ＳＭＩイベントをサービスするためのＶＳＡソフトウェアへのエントリーを早くするために、マイクロコードによって予め計算され、ＳＭＨＲレジスタは、マイクロコードおよびＶＳＡソフトウェア間のインターフェースを与えるために用いられる−ネスティングがイネーブルさると、ＶＳＡソフトウェアは、次のＳＭＩイベントのために用いられるべきＳＭＩヘッダーのロケーションのアドレスを与えるためにＳＭＨＲレジスタを更新し、このアドレスは、ネストされたＳＭＩイベントに応答してＳＭＩヘッダーをセーブすることに、マイクロコードによって用いられる。
【００１３】
本発明の理解をより完全にするために、また更なる特徴および利点のために、添付された図面と共に、本発明の典型的な実施の形態の詳細な説明がなされ、本発明は、請求項の範囲内にあるあらゆる変更或いは代替物を包含することが理解されるであろう。
【００１４】
【実施の形態】
ＳＭＩネスティングを伴う拡張されたシステム管理モード（ＳＭＭ）の典型的な実施の形態の詳細な記載は以下のように行われる。
１．コンピュータシステム
２．仮想システムアーキテクチャ
２．１．ＶＳＡグラフィックスの仮想化
２．２．ＶＳＡオーディオの仮想化
３．拡張されたＳＭＭ
３．１．ＳＭＭの構成
３．１．１．ＳＭＭヘッダー
３．１．２．ＳＭＨＲレジスタ
３．２．ＳＭＭネスティング
３．２．１．コンテクスト・スタック
３．２．２．コンテクスト・スタック管理
３．２．３．ネスト／モード・ビット
３．３．ＳＭＭキャッシング
４．むすび
【００１５】
この編成の概要、及び対応するヘッディングは参照の便宜のためのみに、この詳細な説明において用いられる。
典型的な拡張ＳＭＭは、ｘ８６命令セットアーキテクチャに基づいた統合された処理装置を用い、メモリ制御装置、ディスプレイ制御装置、Ｌ２キャッシュ制御装置、及びＰＣＩ周辺バス制御装置を内蔵するコンピュータシステムに関して記載されている。プロセッサは、同時の仮想化されたグラフッィクス及び／又はオーディオ機能に関連したネストされたＳＭＩイベントをサポートするために拡張ＳＭＭを用いて、グラフッィクスおよびオーディオ周辺インターフェース機能を仮想化するために仮想システムアーキテクチャを実現する。プロセッサおよびプロセッサシステムの従来、および既知の特徴の詳細な説明は、本発明の記載を不明瞭にしないように省略される。特に、この分野における従事者は、（ａ）一般にｘ８６命令セットのアーキテクチャに特有の用語および特に、従来のシステム管理モード（例えば、レジスタ名、信号の命名法(signal nomenclature) 、アドレスモード、ピンアウトの定義(pinout definition) 等）及び（ｂ）このプロセッサと関連したコンピュータシステムの基本的な設計及び動作に熟知している。
【００１６】
信号と共に用いられると、/ シンボルが信号の補集合を示すのに対し、＃シンボルはアクティブロー(active low)の信号を示す。
用語“仮想化する(virtualize)" は、ハードウェア装置或いはサブシステムを除くようにアプリケーションプログラムの通常処理の間に生じるハードウェア或いはサブシステムの特性或いは機能をシミュレートすることを意味している。
１．コンピュータシステム
図１は、本発明の原理に従って実施される、典型的なシステム（しかしこれに限らない）を示す。システム回路板１１（別名、母板(motherboard))は、好ましくはＣＰＵ１０、システムメモリ３６、RAMDAC/ 薄膜トランジスタ・ディスプレイ・パネル・インターフェース４０、Ｌ２キャッシュ４４、およびチップセット倫理回路４９を一緒に結合するバスを有する。マイクロソフト・ウインドウズ（登録商標）のようなマルチタスク・オペレーティングシステム・プログラムは、好ましくは一次動作を管理するためにＣＰＵ上で実行する。
【００１７】
好ましくは、ＣＰＵ１０は、以下の機能ユニット：内部バス制御装置１２、ＣＰＵコア１４、Ｌ１（レベル１）キャッシュ１８−その部分はスクラッチパッド・メモリ、メモリ制御装置２８、浮動小数点装置（ＦＰＵ）１６、ディスプレイ制御装置２０、内部ＳＭＩ発生器２１、グラフィックス・パイプライン（別名、グラフィックス・アクセレレータ(graphics accelerator)) ２２、Ｌ２（レベル２）キャッシュ制御装置２４、およびＰＣＩ−バス制御装置２６として区別できる。
バス制御装置１２、ＣＰＵコア１４、ＦＰＵ１６、Ｌ１キャッシュ１８、およびグラフィックス・パイプライン２２は、（ＣＰＵ１０に関して）内部のＣ−バス３０を介して一緒に結合されるが、その正確な構成は本発明の理解のためには必要ない。バス制御装置１２、ディスプレイ制御装置２０、グラフッィクスパイプライン２２、Ｌ２キャッシュ制御装置２４、ＰＣＩ−バス制御装置２６、およびメモリ制御装置２８は（ＣＰＵ１０に関して）内部のＸ−バス３２を介して一緒に結合される。
【００１８】
Ｃ−バス３０およびＸ−バス３２の詳細は、本発明の理解のためには必要でない。独立したＣおよびＸバス３０と３２は、例えば、ＣＰＵコア１４、ＦＰＵ１６、およびＬ１キャッシュ１８はＣＰＵ１０のリマインダーから実質的に自律して動作することができるので、また他のアクティビティ(activities)（例えば、ＰＣＩ−バス転送、Ｌ２キャッシュ転送、およびグラフィックス更新）は独立して行われるので、ＣＰＵ１０内のこれらの機能的装置を減結合する。更に詳細には、Ｃ−バス３０は充分なバンド幅を有しており、ＣＰＵコア１４が関係のない動作を行っている間、グラフィックス・パイプライン２２がスラッチパッド・メモリにアクセスすることを可能にする。
好適な実施の形態におけるＣＰＵコア１４は６ステージの実行パイプラインである。典型的な実行パイプラインは、以下のステージを含む。
【００１９】
ＩＦ命令フェッチ--複数のバイトがバッファへフェッチされる、
ＩＤ命令デコード--デコードおよびスコアボードチェック、
ＡＣ１アドレス計算--メモリ参照のためのリニアアドレス計算、
ＡＣ２オペランドアクセス--キャッシュおよびレジスタファイルアクセスと同様、物理的なアドレス翻訳、
ＥＸ  実行--命令実行、および
ＷＢ  ライトバック--レジスタファイルおよび書き込みバッファに書かれた実行結果。
【００２０】
本開示の助けによってこの分野の通常の知識を有するものは、本発明の範囲から逸脱することなく、パイプライン用の他の数のステージおよびＣＰＵのための他の構成を認識するであろう。
Ｌ１キャッシュ１８は、好ましくは、しかしこれに限らないが、ライトスルー(write-through) 或いはライトバック(write-back)モードの何れかにおいて動作する１６ｋバイトの統一されたデータ／命令キャッシュである。Ｌ１キャッシュ１８のエリアは、ＣＰＵコア１４の構成制御レジスタ（図示せず）を介してスクラッチパッドメモリとして、プログラム可能に区分される。Ｌ１キャッシュ１８におけるスクラッチパッド制御回路は、スクラッチパッドメモリのデータにアクセスするために、ＣＰＵコア１４或いはグラフィックスパイプライン２２の何れかによって用いられるデータポインターを含む。このスクラッチパッドメモリもＣＰＵコア１４によって直接アドレスされる。
典型的な、しかしこれに限らないが、スクラッチパッドメモリのための使用はグラフィックスパイプライン２２による使用のためのビットバッファとしてである。特に、データがディスプレイ４２上に移動されると、データの、ラスタライン（走査ライン）或いはその一部が、直接マップされたフレームバッファ３５（好ましくは、システムメモリ３６における）から読み取られ、Ｌ１キャッシュ１８から区分されたブリットバッファ(blit buffer) へ書き込まれ、且つ直接マップされたフレームバッファ３５の他の領域から読みだしたり、他の領域へ書き込んだりされる。ＣＰＵコア１４によって実行されるプログラムはブリットバッファへデータを直接入れることもでき、グラフッィクスパイプライン２２に直接マップされたフレームバッファ３５において、自律的に読み出したり、入れたりさせる。
【００２１】
スクラッチパッドメモリのための他の典型的なアプリケーションと共に、好適なＬ１キャッシュ１８は、本発明の出願人に譲渡され、１９９５年６月５日に出願された“Partionable Cache"（米国特許出願番号08/464,921) に記載されている。しかし、Ｌ１キャッシュ１８は、本発明の範囲から逸脱することなく、サイズを大きくしたり、小さくしたりしてもよく、或いはハーワード “スプリット(split)"アーキテクチャを有してもよいことが理解されるべきである。また、スクラッチパッドメモリは、本発明の範囲から逸脱することなく、Ｌ１キャッシュ１８に対して別のメモリでもよい。
グラフィックスパイプライン２２は、スクラッチパッドメモリ（ブリットバッファ）からＶＧＡフレームバッファ３３、及び好適な実施の形態においてシステムメモリ３６の一部として存する直接マップされたフレームバッファメモリ３５へデータのブロック移動を早くする専用のバス３４を介してメモリ制御装置に結合される。この直接マップされたフレームバッファメモリ３５は、通常アドレス発生に関連する保護及び特別のチェックを避けて、ベースアドレスを生成するメモリ制御装置２８、およびオフセットを生成するグラフッィクスパイプライン２２を介してアドレスされる。
【００２２】
グラフッィクスパイプラインのBitBlt動作は、i)要求されるソースデータの形式、もし、あるならフレームバッファ、或いはブリットバッファ； ii)要求される宛て先データの形式、もし、あるならフレームバッファ、或いはブリットバッファ；iii)グラフッィクスパイプライン２２がデータを書き込む場合、直接マップされたフレームバッファ、或いはシステムメモリ；及び iv)ソース拡張フラッグを特定する、ＣＰＵコア１４における制御レジスタ（図示せず）に書き込むことによって開始される。ソースがシステムメモリ３６にあるイメージであると、データは、BitBlt動作を開始する前に、システムメモリ３６からブリットバッファへロードされる。グラフィックスパイプライン２２がシステムメモリ３６に渡すと、宛て先データもブリットバッファヘロードされる。
【００２３】
内部バス制御装置１２はＣ−バス３０およびＸ−バス３２のそれぞれの間での転送を調整し、優先度を決める。メモリ制御装置２８は、主システムメモリ３６を制御し、且つ内部バス制御装置と協同して、キャッシュ能力を決定し、全てのＤＭＡサイクルがＬ１キャッシュ１８及びＬ２キャッシュ４４を自動的にスヌープ(snoop) することを許す。ＦＰＵ１６は浮動少数点動作を行う。
速いリンク３８を介してメモリ制御装置２８へ結合されるディスプレイ制御装置２０は、直接マップされたフレームバッファメモリ３５からのイメージを取戻し、もし必要なら、カラールックアップを行い、カーソル及びアイコンのオーバレイをビクセル・データ・ストリームに挿入し、タイミングを発生し、且つ順次ディスプレイ４２を駆動する RAMDAC/薄膜トランジスタ（ＴＦＴ）インターフェース４０へ出力のためのピクセルデータを構成する。
【００２４】
Ｌ２キャッシュ制御装置２４およびＰＣＩ制御装置２６は、（ＣＰＵ１０に関して）“オフチップ(off-chip)”Ｌ２キャッシュ４４に対して、中でも、高速度インターフェースを集合的に与える。好適な、しかしこれに限らない、Ｌ２キャッシュインターフェースが本発明の出願人に譲渡され：１９９５年８月３１日に出願された“Ｌ２キャッシュインターフェース”（米国特許出願番号08/522,219) に記載されている。Ｌ２キャッシュインターフェースのための他の形状は本発明の範囲から逸脱することなく実施されることが理解されるべきである。また、Ｌ２キャッシュ４４が、性能上の理由から同じ物理的データ、アドレス、及び制御ラインを共有する間、クロック速度および通信プロトコルはＰＣＩプロトコルに必ずしも関係ない。Ｌ２キャッシュ４４へのデータアクセスは他の“PCIのような" ＰＣＩ−バス４８のアクセスと共に相互に排他的であるが、ＰＣＩ−バスへの書き込みはキャッシュタグおよび制御論理回路４６へアクセスし、ヒット上のタグを無効にする。
【００２５】
好適な実施の形態において、ヒット／ミス(hit/miss)が発生したどうかを決定するキャッシュ・タグおよび制御論理回路４６は、外部のチップセット論理回路４９におけるデータ・キャッシュ４４から分離して設けられている。この分野の通常の知識を有するものは、本発明の範囲を逸脱することなく、例えば、しかしこれに限定されない、ＣＰＵ１０上の集積回路のような、キャッシュ・タグおよび制御論理回路４６に対する他の形状および配列を認識するであろう。
ＳＭＩ発生器２１はＣＰＵコア１４から第１の入力、内部バス制御装置１２から第２の入力、および好ましくは、チップセット論理回路４９からＣＰＵ１０の外部にあるソースから第３の入力（ＸＳＭＩ）を受取る。チップセット論理回路４９はＰＣＩ−バス４６に結合され、好ましくは、入来するデータおよび出ていくデータを受信するためのＦＩＦＯバッファ及び所与のバッファの一杯を表示するインジケータ（しかしこれに限定されない、）を含むインターフェースロジックを有している。チップセット論理回路４９も、好ましくはＣＰＵ１０外の所定のイベントの発生を検出及び表示するために、比較器及び他のトラップ回路を含む。
２．仮想システムアーキテクチャ（ＶＳＡ）
図１を参照すると、典型的なコンピュータシステム１１は、周辺のハードウエア機能が、ＶＳＡソフトウェアを用いて仮想化される仮想システムアーキテクチャを実現している。ＶＳＡ仮想化は、周辺アプリケーションをサポートするために必要な周辺のインターフェース・ハードウェアを減少して、グラフッィクスおよびオーディオ機能にために用いられる。
【００２６】
関連アプリケーション（１）は、グラフッィクスの仮想化のためのＶＳＡの典型的な実施の形態を記載している。関連アプリケーション（２）は、オーディオの仮想化のためのＶＳＡの典型的な実施の形態を記載している。
仮想システムアーキテクチャは、ネストされたＳＭＩ動作をサポートする拡張されたシステム管理モードを実現している。ＶＳＡソフトウェアは、電力管理およびシステム割り込みのような、非仮想ＳＭＩイベントをサービスするためのたのＳＭＩルーチンばかりでなく、グラフィックス及びオーディオの仮想ルーチンを含むＳＭＭハンドラーを有する。ＶＳＡソフトウェアは、プロセッサ１０へ内部的に、或いは外部的に信号されたＳＭＩ割り込みに応答して呼び出される。内部のＳＭＩイベントは、外部のＳＭＩイベントがチップセット４９によって信号される間にＳＭＩ発生器によって信号される。典型的なＶＳＡの実施に対して、内部的に信号されたＳＭＩs は、外部的に信号されたＳＭＩs がＩ／Ｏトラップ或いは割り込みの何れかである限り、全てメモリマップされた、或いはＩ／Ｏトラップである。
【００２７】
内部および外部ＳＭＩs 間の主な相違は、ＳＭＩが発生される時間にプロセッサ１０（ＣＰＵコア１４）に利用可能な情報の量にある。内部的に信号されたＳＭＩs に対して、プロセッサは、処理の透明な再開を可能にするために関連ＳＭＭハンドラールーチンを処理する前にセーブされなければならないプロセッサの状態情報に特有のコンテクストばかりでなく、ＳＭＩのソース及び／又は特定の原因を利用可能にさせる。外部的に信号されたＳＭＩs に対して、チップセット４９は、ＳＭＩのソースを決定するために、プロセッサによって読み取られなければならないＳＭＩ制御レジスタを含む。
２．１．ＶＳＡグラフッィクスの仮想化
ＶＳＡグラフッィクスの仮想化は関連出願（１）に記載さている。一般に、典型的な実現化に対して、ＶＳＡグラフッィクスの仮想化は内部的に信号された、メモリマップされた、およびＩ／Ｏアクセストラップによって一次的に呼び出される。特に、典型的な実施において、ＳＭＩイベントは、（ａ）メモリマップのグラフィックス領域へのメモリ書き込みのため、及び（ｂ）Ｉ／Ｏマップされたグラフィックス制御レジスタへのＩ／Ｏの読み取り／書き込みアクセスのために信号される。
【００２８】
図１を参照すると、メモリアクセストラッピングが（実行パイプラインのアドレス計算ステージの間）ＣＰＵコア１４によって行われ、一方Ｉ／Ｏの読み取り／書き込みトラッピングはバス制御装置１２において実施される--タイミングの考慮のため、メモリマップされたアクセスは実行パイプラインにおいて早くトラップされ、外部バス上に出ていくことを許さない。メモリマップされた、或いはＩ／Ｏトラップに応答して、ＣＰＵコア或いはバス制御装置は、順次ＳＭＩ割り込みをＣＰＵコア１４へ信号するＳＭＩ発生器２１へ、ＳＭＩイベントを信号する--ＳＭＩに応答して、ＶＳＡソフトウェアが呼び出され、それはＳＭＩをサービスするために適切なＶＳＡグラフッィクス仮想ルーチンを呼ぶ。ＳＭＭヘッダー情報は、ＳＭＩが内部的に信号されたグラフッィクスアクセスであり、メモリマップされた、或いはＩ／Ｏアクセスから生じたＳＭＩであるかどうかを示す（セクション３．１．１．参照）。
【００２９】
内部的に信号されたメモリマップされた、及びＩ／ＯトラップのＳＭＩs に加えて、典型的なＶＳＡグラフッィクス仮想化が外部的に信号されたＳＭＩs （例えば、ビデオのタイミングあるいは位置決めするディスプレイの更新に対して）によって呼び出される。
２．２．ＶＳＡオーディオの仮想化
ＶＳＡオーディオの仮想化は関連出願（２）に記載されている。一般に、典型的なＶＳＡの実現のために、ＶＡＳオーディオの仮想化は、オーディオインターフェースロジックによって発生された外部的に信号されたＩ／Ｏアクセストラップおよび割り込みによって呼び出される。特に、ＳＭＩイベントは、（ａ）Ｉ／Ｏマップされたオーディオ機能或いはハードウェア（例えば、オーディオレジスタ）へのＩ／Ｏアクセス、及び（ｂ）オーディオＦＩＦＯバッファ管理のようなハードウェアインターフェース機能のために信号される。
【００３０】
Ｉ／Ｏアクセスは（オーディオＦＩＦＯバッファのような）オーディオインターフェースも含むチップセット４９においてトラップされる。信号された各ＳＭＩイベントに対して、チップセットは外部のＳＭＩの状態レジスタに対応するＳＭＩ識別子コードをストアする。プロセッサがＳＭＩを取り、ＶＳＡソフトウェアを呼び出すと、ＳＭＩの状態レジスタは外部のＳＭＩのソースを決めるために読み取られる。
【００３１】
３．０．拡張されたＳＭＭ
仮想システムアーキテクチャは、周辺ハードウェア機能の仮想化をサポートするためにネストされたＶＳＡ／ＳＭＩルーチンを可能にする拡張されたシステム管理モードを実現する。従来のＳＭＭの実施に対する他の拡張はＳＭＩオーバーヘッド／待ち時間を減少することにより仮想化の性能を改善する。
典型的な拡張されたシステム管理モードに対して、メモリのＳＭＭ領域はＳＭＭ領域のベースおよび限界を保持するＳＭＡＲレジスタを用いて、従来どうりに定義される。ＳＭＭ領域は、（ａ）多重にネストされたＳＭＩヘッダーをストアするためのヘッダー／コンテクストのスタックセグメント、及び（ｂ）典型的なＶＳＡグラフッィクス及びＶＳＡオーディオの仮想化ルーチンのようなＶＳＡ／ＳＭＩルーチンを含む再入可能なＶＳＡソフトウェアをストアするためのＶＳＡソフトウェアセグメントを有する。
典型的な拡張されたシステム管理モードのための特別なＳＭＭ特徴の拡張は：
・ＳＭＭモードは、Ｉ／Ｏマップされたアクセスおよび非同期割り込みばかりでなくメモリマップされたアクセスに対して呼び出され、グラフッィクス、オーディオ、及びたの周辺ハードウェア機能における最大の柔軟性を与える--ＳＭＩヘッダーは、メモリ又はＩ／Ｏマップされたアクセスに対して３２ビットアドレス及び３２ビットデータをストアする。
【００３２】
・ＶＳＡソフトウェアは、多重ＶＳＡ／ＳＭＩルーチンを含み、且つ多重ネストされたＳＭＩs に対して再入可能である。
．ＳＭＭ領域は、多重ネストされたＳＭＩヘッダーをストアするための準スタック配列を伴うヘッダー／コンテクストのセグメントを含む。
．新規なＳＭＨＲレジスタは、ＳＭＭ領域のヘッダー／コンテクストへアドレスポインタを与えるために定義される--ネスティングがイネーブルされている現在実行しているＶＳＡ／ＳＭＩルーチンに対して、ＳＭＨＲは、ＳＭＩに応答して、そのルーチンに対するＳＭＩヘッダーをストアするための位置へポインティングする物理的アドレスをストアする。
・ＳＭＨＲレジスタはＶＳＡソフトウェアによって管理され、ＶＳＡソフトウェアとプロセッサのマイクロコード間のハードウェアインターフェースを与える。
【００３３】
・ＳＭＭエントリーのオーバーヘッドを減少するために、ＳＭＩネスティングがイネーブルされると、プロセッサのマイクロコードはＳＭＨＲを読み取り、予め計算をして、次のＳＭＩヘッダー位置にための３２ビットポインターアドレスをストアする。
・ＳＭＩヘッダーは、ＳＭＩ割り込みがグラフィックス（ＶＧＡ）アクセスのために内部的に発生されたか否かを示す。
・ＳＭＩヘッダーは、ＳＭＩ割り込みがトラップから生じたか否か、およびそのトラップがメモリ又はＩ／Ｏアクセスから生じたか否かを示す。
・ＳＭＩ ＮＥＳＴビットは、ＳＭＩ割り込みのネスティングを制御するために、制御レジスタに加えられている。
【００３４】
・コンテクストのスタックおよびＶＳＡソフトウェアを含む、ＳＭＭ領域はキャッシュ可能なシステムメモリ（ＳＭＡＤＳ＃は用いられない）に存する。
図２は従来のＳＭＭハンドラー動作を示す。ＳＭＩイベント（１０１）に応答て、マイクロコードはＳＭＡＲレジスタを読み取り（１０５）、ＳＭＭスペースの上部と下部を計算する（１０６）。ＳＭＭヘッダーはＳＭＭスペースの上部へセーブされ（１０７）、そしてＳＭＩヘッダー（１１０）の実行がＳＭＭスペースの下部で開始する。
ＳＭＩハンドラーは、ＳＭＩがＩ／Ｏトラップ（１１２）から生じたかを決定する。もし違えば、ＳＭＩハンドラーは、非トラップＳＭＩ（１１３）をサービスする。もし、周辺装置へのＩ／ＯアクセスがＳＭＩを生じたならば、ＳＭＩハンドラーはその装置は電源が落ちている（１１４）か否かを決定し、もし落ちているなら、周辺装置の電源を入れ、トラップを生じたＩ／Ｏ命令の再開を可能にするため、状態情報（１１６）を変更することを含む、トラップＳＭＩをサービス（１１５）をする。トラップＳＭＩのサービスにおいて行われる他の機能は、周辺装置におけるライトオンリー・レジスタ(write-only register: 書き込み専用レジスタ) をシャドウイング（shadowing)することを含む。
【００３５】
ＳＭＩハンドラーがＳＭＩイベントをサービスすること完了すると、それは、ＳＭＭハンドラーを用いてプロセッサ状態をリストアし（１１８）、通常の処理を再開するために、プロセッサを通知することによって出ていく。
図３は、例えば、仮想システムアーキテクチャの一部として周辺ハードウェアの仮想化をサポートするために、ＳＭＩネスティングを含む拡張されたシステム管理モードの動作を一般に示す。
ＳＭＭエントリーのオーバヘッドを減少することによって性能を改善するために、マイクロコードは（ＳＭＨＲとＳＭＡＲレジスタのコンテクストを用いて）事前計算し、（ａ）ＳＭＭメモリ領域のヘッダー／コンテクストのセグメント内で、ＳＭＩヘッダー位置（ロケーション）／ポインタ（１２１）、及び（ｂ）ＳＭＭ領域の上部及び下部をストアする。典型的な実施に対して、ＳＭＩヘッダーのポインタの事前計算はＳＭＨＲレジスタにストアされたＳＭＩヘッダーの位置を３２ビットのｄｗｏｒｄ（ダブルワード）整列したポインタアドレス（セクション３．１．２．参照）へ再フォーマットすることを含む。
ＳＭＩイベント（１３０）に応答して、ＳＭＩヘッダーは、ＳＭＨＲレジスタによって指示されたＳＭＭ領域のヘッダー／コンテクストのセグメント内の位置にセーブされ（１３１）、実行がＳＭＭ領域の下部でＶＳＡソフトウェアにおいて開始する（１３２）。プロセッサの状態情報に依存するあらゆる追加的なコンテクストは、ＳＭＩのソースに基づいて、適切なＶＳＡ／ＳＭＭルーチン（例えば、グラフッィクス或いはオーディオの仮想ルーチン）へ送るＶＳＡソフトウェアによってセーブされる（１３３）。ＶＳＡ／ＳＭＭルーチンはＳＭＩイベントをサービスする（１３５）。
もし適切であるなら、ＶＳＡ／ＳＭＭルーチンはＳＭＩネスティングをイネーブルすることができる（１３６）。ＳＭＩネスティングをイネーブルするために、ＶＳＡ／ＳＭＩルーチンは、コンテクストのスタックセグメント内の次のヘッダー位置を指示するために、先ずＳＭＨＲレジスタを更新し（１３７）、次いで、ネスティングをイネーブルする（１３８）。ＳＭＩネスティングがイネーブルされると、ＶＳＡ／ＳＭＩルーチン（１３５）は、他のＳＭＩイベントによって割り込まれる。
【００３６】
３．１．ＳＭＭ構成
拡張されたシステム管理モードは、ＳＭＨＲレジスタに加えて、以下のＳＭＭ構成の特徴を有する。
・ＳＭＩ割り込みがグラフィック（ＶＧＡ）アクセスに対して内部的に発生されたか否かを示すビット当たりのＳＭＩヘッダー
・ＳＭＩトラップがメモリ又はＩ／Ｏアクセスから生じるか否かを示すＳＭＩヘッダービット
・メモリ又はＩ／Ｏアクセスのための、３２ビットアドレス及び３２ビットデータ用のＳＭＩヘッダーフィールド
・ＳＭＩ割り込みのネスティングを制御する制御レジスタにおけるＳＭＩ ＮＥＳＴビット
更に、典型的な仮想システムアーキテクチャは２つの追加構成を有し、グラフィックスのメモリスペースにおいてＳＭＩ割り込みをプログラム的に制御し、マスクする。従来のｘ８６コンピュータシステムにおいて、６４０ｋから７６８ｋ（１２８ｋ）へのシステムメモリ領域はグラフィックスのためにリザーブされる--この領域は３つのアドレス範囲：Ａ００００ｈ−ＡＦＦＦＦｈ（６４ｋ）、Ｂ００００ｈ−Ｂ７ＦＦＦｈ（３２ｋ）及びＢ８０００ｈ−ＢＦＦＦＦｈ（３２ｋ）に代表的に分割される。制御レジスタはこれら３つの範囲においてＳＭＩ割り込みを選択的にイネーブル／ディスエーブルするために用いられる。マスクレジスタは、最初の６４ｋアドレス範囲Ａ００００ｈ−ＡＦＦＦＦｈ内の２ｋ領域をディスエーブスするために用いられる--マスキングの目的は、ディスプレイされないグラフィックスのメモリをアクセスする時、ＳＭＩ割り込みを防ぐることである。この典型的な実施は、マスク領域が開始及び終了アドレスによって選択的に定義されるようにすることによって完全なプログラム化のために与えるように拡張することができる。
３．１．１．ＳＭＩヘッダー
典型的なＳＭＩヘッダーの構成は以下に示される。特に、Ｉ／Ｏアドレス及びデータフィールドに加えて、メモリのアドレスフィールドはメモリマップされた領域へのトラップに対して含まれる--これらのイベントは同時に生じることができないので、メモリデータはＩ／Ｏデータを重ねてストアされる。Ｉ／ＯアドレスはＩＮ及びＯＵＴの双方の命令に対して有効であり、Ｉ／ＯデータはＯＵＴに対してのみ有効である。典型的な実施に対して、メモリアドレスは読み取り及び書き込みに対して有効であり、メモリデータは書き込みのみに有効である。
【００３７】
【表１】
0003854668.tif 000002
ＳＭＩヘッダーは、ＳＭＩを生じたＳＭＩイベントを定義するために用いられた以下のビットフィールドを含む。
Ｃ  書き込み可能なコードセグメント
Ｉ  イン（ＩＮ）／読み取りに対しては０、アウト（ＯＵＴ）／書き込みに対しては１
Ｐ  ＲＥＰ命令
Ｓ  ＳＭＩＮＴ命令
Ｈ  ＣＰＵが停止中のＳＭＩ
Ｍ  Ｉ／Ｏに対しては０、メモリに対しては１
Ｘ  外部ＳＭＩピン
Ｖ  内部のグラフィックアクセス
Ｎ  ＳＭＭモード中のＳＭＩ
特に、ＭとＶのフィールドは、ＸフィールドはＳＭＩが外部的に信号されたことを示す間、ＶＳＡグラフィックスの仮想ルーチンによってサービスされる内部的に信号されたＳＭＩを定義するために用いられる。
Ｎフィールドは、ＳＭＩがネストされたＳＭＩであるか、即ちそれはプロセッサがＳＭＭモードにあった間に生じたか、を示すＳＭＭ ＭＯＤＥビットである。プロセッサは、ＳＭＩイベントをサービスすることからの出口でＳＭＭ ＭＯＤＥを用い、ＳＭＭモードに留まるか、通常の処理を開始するかを決定する。
【００３８】
３．１．２．ＳＭＨＲレジスタ
典型的な拡張されたシステム管理モードは新規な構成の制御レジスタ--ＳＭＩネスティングをサポートするために用いられるＳＭＨＲ--を備える。特に、ＳＭＨＲは、３２ビットの物理的なＳＭＩヘッダーアドレスを特定し、次のＳＭＩイベントに対するＳＭＩヘッダー位置を定義するために用いられる。
【００３９】
【表２】
0003854668.tif 000003
典型的なＳＭＨＲレジスタ構成は、４つの分離した８ビット構成レジスタとしてであるあることを留意されたい。各々のタイムＳＭＨＲは変更され、マイクロコードがＳＭＨＲレジスタを読み取り、ＳＭＨＲレジスタによって特定されたＳＭＩヘッダー位置を指定する３２ビットアドレスを事前計算（リホーマット）し且つストアする--ＳＭＨＲアドレスはｄｗｏｒｄ整列されなければならず、下部の２ビットはマイクロコードによって無視される。
図４は、ＳＭＩヘッダー／コンテクストのスタックセグメント１４１及び再入ＶＳＡソフトウェアセグメント１４２を含む典型的なＳＭＭ領域１４０のマッピングを示している。従来のＳＭＡＲレジスタは、ＳＭＭ領域に対するコードベースおよび限界をまだ特定している。
【００４０】
ＳＭＩヘッダー／コンテクストのセグメントは、ＶＳＡソフトウェア（セクション３．２）によって管理される準スタック(quasi-stack) として構成される。一般に、ＳＭＨＲレジスタはＳＭＩ Nestingの管理においてＶＳＡソフトウェアによって更新される--ネスティングがＶＳＡソフトウェアによってイネーブルされると、ＳＭＨＲは次のＳＭＩヘッダー位置を指定するために更新される。
ＳＭＨＲレジスタはＳＭＡＲの後にセットアップされなければならない。何故ならば、ＳＭＡＲが書き込まれるとき、それは計算されたＳＭＩヘッダーアドレスを重ね書き(overwrite) するからである。
【００４１】
３．２．ＳＭＭネスティング
拡張されたシステム管理モードはＳＭＩイベントのネスティングをサポートする。典型的なテスティングスキームは、多重のＳＭＩヘッダおよび関連したコンテクスト依存性の情報をストアするための準スタック配列を用いる--この配列はＳＭＩイベントを扱うＶＳＡソフトウェアのための再入可能性をサポートする。図４を参照すると、各ネストされたＳＭＩイベントに対して、対応するＳＭＩヘッダーは、ＳＭＭメモリ領域１４０のＳＭＩヘッダー／コンテクストセグメント１４１の所定の位置にストアされる。ＳＭＩヘッダーの位置はＳＭＨＲレジスタを用いてＶＳＡソフトウェアによって管理される（セクション３．２．２．参照）。
ＳＭＩネスティングはＳＭＩイベントのダイナミック優先順位を可能にする。拡張されたシステム管理モードの特徴の特別な利点は、それが、例えば、プロセッサグラフッィクスおよびオーディオ機能において仮想化するための、周辺ハードウェアの仮想化の実施において、仮想システムアーキテクチャに対して与えるサポートである。
【００４２】
例えば、ＳＭＩネスティングによって与えられたダイナミック優先順位は、オーディオＦＩＦＯバッファ制御のような、高い優先度の仮想イベントが、グラフィックスの仮想化（或いは電力管理）のための低い優先度のＳＭＩハンドラーを中断することを可能にする。ネスティングは、優先順位の制御を与えるＶＳＡ／ＳＭＩルーチン中に、選択的にイネーブル／ディスエーブルされる。
ＳＭＩネスティングの典型的な実施に対して、もし内部或いは外部のＳＭＩ信号は同時に受信されるなら、内部のＳＭＩはイベントを失うことをさけるために優先度が与えられる--ネスティングは、高い優先度の外部的に信号されたＳＭＩイベントが低い優先度の内部的に信号されたＳＭＩを中断することを可能するように直ちにイネーブルされ得る。
【００４３】
３．２．１．コンテクスト・スタック
図４を参照すると、ＳＭＭ領域１４０のＳＭＩヘッダー／コンテクスト・スタック・セグメント１４１は、各ＳＭＩイベントに対して、対応するＳＭＩヘッダーをストアする。ＳＭＩヘッダーの位置は、イネーブ／ディスエーブルするＳＭＩネスティングに関して、ＳＭＨＲを更新することによってＶＳＡソフトウェア１４２により決定される。
典型的な実施の形態に対して、各ＳＭＩイベントは、以下の３つの形式のコンテクスト依存性ＳＭＩ情報によって特徴づけられる。
・ＳＭＩヘッダー
・追加のＣＰＵ状態情報
・他のクンテクスト依存性情報
ＳＭＩが取られると、ＳＭＩヘッダーはマイクロコードによってアッセンブルされ、ＶＳＡソフトウェアを入れる前に、ＳＭＭ領域にセーブされる。ＶＳＡソフトウェアは、関連するＶＳＡ／ＳＭＩルーチンが終了したときに、どんな追加のコンテクスト依存性情報が、プロセッサ情報をストアするためにセーブされなければならないかを制御する。
【００４４】
ＳＭＩヘッダーは、ＳＭＩをサービスした後再開するように要求されるプロセッサの状態情報の最小量を表す。関連出願（３）は、ＳＭＩヘッダーにプロセッサ状態の一部だけを含むことによって、ＳＭＩルーチンからの早急な入りと出を記載している--特定のＳＭＭ命令は、ＳＭＩルーチンがＳＭＩイベントをサービスする前に、プロセッサ状態の他の部分をＳＭＭ領域にセーブすることを可能にするように与えられる。典型的な拡張されたＳＭＭは、ＶＳＡソフトウェアの設計における最大のフレキシビリティを与えるためにこのアプローチを用いる。
ＳＭＩヘッダーに含まれるプロセッサの状態情報に加えて、ＶＳＡソフトウェアは追加のプロセッサ状態及び他のコンテクスト依存性情報（例えば、ＶＳＡシステムの状態変化）もセーブすることができる。ＶＳＡソフトウェアは、ＳＭＩイベントをサービスするための適切なＶＳＡ／ＳＭＩルーチンにディスパッチする前にこのプロセッサ状態及び他のコンテクスト依存性情報をセーブすることによって実行を開始する。
【００４５】
図３は、拡張されたシステム管理モードによって実施されたＳＭＩネスティング動作に関して、典型的なＳＭＩヘッダー／コンテクストセグメント１４１の使用を示す。処理状態が示されている。
０  プログラム実行
１  ＳＭＩイベント１
２  ＳＭＩイベント２
通常のプログラムの実行中、ＳＭＩイベントに応答するための準備において、マイクロコードはＳＭＩヘッダー位置０、即ち通常のプログラムの実行に関連したＳＭＩヘッダー０に対するＳＭＩヘッダー／コンテクストセグメント１４１内の物理的アドレス、へのポインタを事前計算する（１５１）。
【００４６】
ＳＭＩ（１）が信号されると、マイクロコードは、ＳＭＩヘッダー０を事前計算された位置０（ＳＭＩネスティングはディエーブルされる）にセーブする。
ＶＳＡソフトウェアは入れられ（１５５）、選択された追加のＣＰＵ状態とコンテクスト依存性情報はＳＭＩヘッダー０に関連したＳＭＩヘッダー／コンテクストセグメントの適切な位置にセーブされる（１５６）。それからＶＳＡソフトウェアはＳＭＩ（１）ＮＯソースをデコードし、ＳＭＩ（１）をサービスするための適切なＶＳＡ／ＳＭＩルーチンへディスパッチする。
ＶＳＡ／ＳＭＩルーチンへディスパッチに依存して、ネステイングはエネーブルされることができる（１５７）。イネーブルするネスティングは、（ａ）ＳＭＨＲレジスタがＳＭＩ（１）ＮＩ関連したヘッダー情報をストアするためのＳＭＩヘッダー／コンテクストセグメント１４１の位置へのポインタに対して先ず更新され（１５８）、（ｂ）ネスティングがＳＭＩ ＮＥＳＴを表明することによってイネーブルされる２つのステップ手順である。ＳＭＨＲが更新される（書き込まれる）と、マイクロコードはＳＭＩヘッダー１の位置へのポインタを事前計算する。
【００４７】
もし、ＳＭＩ（１）に対するＶＳＡ／ＳＭＩルーチンがＳＭＩ（１）イベントのサービスを終わる前に、第２のＳＭＩ（２）イベントが信号される（１６２）なら、ネスティングがイネーブルされている（１５７）ので、ＶＳＡ／ＳＭＩ（１）ルーチンは横取りされる。マイクロコードは、ＳＭＨＲによって指定されたＳＭＩヘッダー／コンテクストセグメント１４１の位置へＳＭＩ（１）に関連したＳＭＩヘッダーをセーブすることによって、ＳＭＩ（２）に応答する。
ＶＳＡソフトウェアはリエンターされ、選択された追加のＣＰＵ状態及びコンテクスト依存性情報は、ＳＭＩヘッダー１に関連したＳＭＩヘッダー／コンテクストセグメント１４１の適切な位置へセーブされる（１６６）。それからＶＳＡソフトウェアはＳＭＩ（２）のソースをデコードし、ＳＭＩ（２）をサービスするための適切なＶＳＡ／ＳＭＩルーチンへディスパッチする。
【００４８】
ＶＳＡ／ＳＭＩ（２）ルーチンが認識される他のＳＭＩのないＳＭＩ（２）のサービスを計算することを仮定すると、ＶＳＡ／ＳＭＩ（２）ルーチンは、もしネスティングがイネーブルされたなら、先ずネスティングをディエーブルすることによって出るであろう（１７１）。ネスティングをイネーブルことと同様に、ネスティングをディスエーブルすることは、（ａ）ネスティングがＳＭＩ ＮＥＳＴを表明しないことによってディスエーブルされ（１７３）、（ｂ）ＳＭＨＲレジスタが新しいＳＭＩ（２）に応答して横取りされたＳＭＩヘッダーをストアするためのＳＭＩヘッダー／コンテクストセグメント１４１の位置を指定するために更新（１７３）される２つのステップの手続きである。
ネスティングがディスエーブルされると、ＶＳＡ／ＳＭＩルーティン１６５はＳＭＩヘッダー１と共にＳＭＩヘッダー／コンテクストセグメント１４１にストアされたプロセッサの状態およびコンテクスト依存性情報をリストアする。この情報がリストアされると、ＶＳＡ／ＳＭＩルーチンは、マイクロコードへ通る制御で再開動作（１７５）を始める。
【００４９】
再開動作（１７５）の実行において、マイクロコードは以下の３つの機能を達成する。
（ａ）ＳＭＩヘッダー１はＳＭＩヘッダー／コンテクストセグメントからリストアされ、（ｂ）ネスティングはＳＭＩ ＮＥＳＴを表明することによってイネーブルされ、そして（ｃ）横取りされた処理、この場合ＶＳＡ／ＳＭＩ（１）ルーチン、が再開される（１７８）。ネストされたＳＭＩ（１６５）に対する再開動作（１７５）が終わった後、プロセッサは、それがＳＭＩ（２）が取られたときにあった状態へリストアされる--ＳＭＩヘッダー１及び関連したＣＰＵ状態とコンテクスト依存性情報はリストアされており（１７４、１７６）およびネスティングはイネーブルされる（１７７、それは１５９に対応する）
典型的な拡張されたシステム管理モードは隣接するメモリにおいて準スタックとしてＳＭＩヘッダー／コンテクストセグメントを実施する。代わって、３つの形式のコンテクスト情報に対する分離したアレイ--ＳＭＩヘッダー、追加のＣＰＵ状態、及びコンテクスト依存性情報--が用いられる。
３．２．２．コンテクスト・スタック管理
典型的な拡張されたシステム管理モードは、ＳＭＩヘッダー／コンテクストセグメント（図４の１４１）に関してＳＭＩネスティングを管理するためのＶＳＡコンテクスト・タック管理メカニズムを用いる。ＶＳＡコンテクスト・スタック管理はＶＳＡソフトウェア（図４の１４２）及びＳＭＨＲレジスタとＳＭＩ ＮＥＳＴビットを用いてプロセッサのマイクロコードによって共同で実施される。
【００５０】
典型的なＶＳＡコンテクスト・スタック管理は、一般に、実施するＳＭＩネスティングにおいて最大のフレキシビリティ、特にＶＳＡ周辺ハードウェアの仮想化に対するＳＭＩネスティングを与えるために設計される。ＶＳＡソフトウェアとプロセッサのマイクロコード間のインターフェースはＳＭＨＲレジスタによって与えられる--このレジスタは、ＶＳＡソフトウェアによって更新され、マイクロコードによって用いられる（しかし、変更されない）。
図５はＭＳＩネスティングのためのＶＳＡコンテクスト・スタック管理を含む拡張されたシステム管理モードを示す。一般に、ＶＳＡコンテクスト・スタック管理およびマイクロコードは、ネスト化されたＳＭＩs に対して、ネスティングが、
・ネスト化されたＳＭＩを扱うために、ＶＳＡソフトウェアを入れる前にマイクロコードによってディスエーブルされる、
・プロセッサ状態のリストア後、ＶＳＡ／ＳＭＩルーチンを出て、マイクロコードによってイネーブルされる、
ことを確実にする。
【００５１】
ＶＳＡ／ＳＭＩルーチンの処理中、ネスティングは、（ＳＭＩネステイングをイネーブルすることを少しも含まない）あらゆる時にイネーブルされ／ディスエーブルされる。
ＳＭＩイベントが検出されると（１８０）、マイクロコードはアッセンブルし、ＳＭＩヘッダーをＳＭＩヘッダー／コンテクストセグメントにセーブする。（ＳＭＩイベントの表示ビットを含む）ＳＭＩヘッダー構成に関してはセクション３．１．１．を、またＳＭＭメモリ領域のＳＭＩヘッダー／コンテクストセグンメントに関してはセクション３．２．１．を参照されたい。
マイクロコードはＶＳＡソフトウェア（１８３）に入る前にネスティングをディスエーブルする（１８２）。エントリーすると、ＶＳＡソフトウェアは選択さた追加のＣＰＵ状態／コンテクスト情報をＳＭＩヘッダー／コンテクストセグメントへセーブする。
【００５２】
ＶＳＡソフトウェアは、ＳＭＩイベントのソースを決定するためにデコード及びディスパッチ動作（１８８）を行い、そしてそれにより、ＳＭＩをサービスするためのディスパッチに対してどのＶＳＡ／ＳＭＩルーチンかをを決定する。特に、もし、ＳＭＩが内部的に信号されるなら、ＳＭＩヘッダーはディスパッチのための充分な情報を含んでおり、一方、ＳＭＩが外部的に信号されるなら、ＶＳＡソフトウェアは、ディスパッチ前にＳＭＩのソースを決定するために、チップセット論理回路（図１における４９）において、ＳＭＩ状態レジスタを読み取るであろう。典型的なＳＭＩデコード／ディスパッチ・メカニズムは内部的及び外部的に信号されたＳＭＩs のために分離したテーブルを用い、そして各々は、ＳＭＩイベントフラッグマスク（SMI event flag masks) 及び関連ＶＳＡ／ＳＭＩルーチンをストアする。
【００５３】
ＳＭＩのソースをデコードした後、ＶＳＡソフトウェアはＳＭＩイベントをサービスするために、適切なＶＳＡ／ＳＭＩルーチン（１９０）へディスパッチする。この点で、ＳＭＩネツティングがデスエーブルされる（１８２）ことに留意されたい。
ＶＳＡ／ＳＭＩルーチン（１９０）の処理中に、ＳＭＩネスティングはイネーブルされる（１９１）。もし、特別なＳＭＩイベントが短い時間に扱われるならば、即ちそれが割り込まれない、ＶＳＡ／ＳＭＩルーチンはＳＭＩネスティングをイネーブルすることがない。たとえＳＭＩネスティングが初めにイネーブルされるとしても、ある点で、ＳＭＩネスティングは、一次的にディスエーブルされ、即ちＳＭＩイベントが終わることをサービスするまで、ディスエーブルされる。
【００５４】
ＳＭＩネスティングをイネーブルするために、ＶＳＡ／ＳＭＩルーチンは、先ずＳＭＨＲレジスタを更新し（１９２）、それからネスティングをイネーブルする（１９３）。ＳＭＨＲレジスタがＳＭＩヘッダーの位置アドレスと共に更新されると、マイクロコードは、現在アクティブなＶＳＡ／ＳＭＩルーチン（１９０）中にＳＭＩイベント（１９５）を受け取る用意に、ＳＭＩヘッダー／コンテクストスタックないのヘッダー位置へポインタを事前計算する。
もし、ＶＳＡ／ＳＭＩルーチン（１９０）が他のＳＭＩによって横取りされずにＳＭＩイベントをサービスすることを完了するなら、それはＳＭＩの扱い動作を終了し、制御はＶＳＡソフトウェア（１８４）へ戻される。
ＶＳＡソフトウェアは、通常の処理或いは横取りされたＶＳＡ／ＳＭＩルーチンの何れかを再開する用意に、プロセッサ状態を復元する。もし、ＳＭＩネツティングがイネーブルされる（１９６）なら、ネスティングはディスエーブルされ（１９７）、ＳＭＨＲは更新される（１９８）。ＶＳＡソフトウェアは、ＳＭＩヘッダー／コンテクストセグメントからのＣＰＵ状態および他のコンテクスト依存性情報をリストアし、パスは再開動作を行うマイクロコードへ制御する。
【００５５】
マイクロコードはＳＭＩヘッダー／コンテクストセグメントからのＳＭＩヘッダーをリストアし（２０１）、ネツティングをイネーブルする（２０２）ことによって割り込まれた処理を再開を果たす。割り込まれた処理は再開する（２０３）。
ＳＭＩネスティングを管理するためのこの典型的な準スタック配列は重要なフレキシビリティを与える。ＳＭＩネスティング管理への代わりのアプローチはＶＳＡソフトウェア或いはマイクロコードの何れかにおいて完全なスタック動作を実施することを含む。
３．２．３．ネスト／モード・ビット
図６は、ＳＭＭ ＮＥＳＴおよびＳＭＭ ＭＯＤＥビットの状態の移行を示すことにより拡張されたシステム管理モードの典型的なＳＭＩネスティングの特徴を示す。
【００５６】
プロセッサがＳＭＭモード（２１１）の外部にあると、ＳＭＭ ＭＯＤＥはクリアし、そしてＳＭＩ ＮＥＳＴはセットされる。第１レベルのＳＭＩ割り込みがプロセッサによって受け取られる（２１２）と、マイクロコードはＳＭＩ ＮＥＳＴをクリアし、ＳＭＭ ＭＯＤＥをセットする--それはＳＭＩヘッダーのＳＭＭ ＭＯＤＥ（０）の前の値をセーブし、ＳＭＩヘッダーをセーブする。
ＳＭＩ割り込みは、ＳＭＨＲを更新するＶＳＡ／ＳＭＩルーチンによって再イネーブルされ、ＳＭＩ ＮＥＳＴをセットする（２１３）。ＳＭＩ ＮＥＳＴセット（イネーブルされたネスティング）で、たとえプロセッサがＳＭＭモードにあっても、第２レベル（ネストされた）ＳＭＩは取られる（２１４）--応答では、マイクロコードはＳＭＩ ＮＥＳＴをクリアし、ＳＭＭ ＭＯＤＥをセットし、そしてＳＭＩヘッダーにおけるＳＭＭ ＭＯＤＥ（１）の前の値をセーブし、ＳＭＩヘッダーをセーブする。
【００５７】
第２レベルのＳＭＩイベントを扱うためにディスパッチされた第２レベルのＶＳＡ／ＳＭＩルーチンＳＭＨＲを更新し、ＳＭＩ ＮＥＳＴをセットする（２１５）によってＳＭＩ割り込みを再イネーブルすることができる。ＳＭＩネスティングの他のレベルは、この期間中に発生することができる。
第２レベルのＶＳＡ／ＳＭＩルーチンがＳＭＩをサービスすることを完了すると、ＶＳＡソフトウェアはＳＭＩ割り込みをディスエーブルするためにＳＭＩ ＮＥＳＴをクリアし（２１６）、それからＳＭＨＲを更新する。再開動作はマイクロコードによって達成される。
マイクロコードは、ネスティングを再イネーブルするためにＳＭＩ ＮＥＳＴをセットし（２１７）、ＳＭＩヘッダー（この場合、ＳＭＭ ＭＯＤＥはセットされる）に基づいてＳＭＭ ＭＯＤＥをリストアする。処理は第１レベルＶＳＡ／ＳＭＩハンドラーで再開する。
【００５８】
第１レベルのＶＳＡ／ＳＭＩハンドラーがＳＭＩをサービスすることを完了すると、それはＳＭＩ割り込みをディエーブルためにＳＭＩ ＮＥＳＴをクリアし（２１８）、ＳＭＨＲを更新することによって、再開動作を始めるＶＳＡソフトウェアに戻る。
マイクロコードは、ＳＭＩ ＮＥＳＴをセットし（２１９）、ＳＭＩハンドラーに基づいてＳＭＭ ＭＯＤＥ（０）をリストアする（２２０）
プロセッサがＳＭＭモードの外部にあると、ＳＭＭ ＭＯＤＥは常にクリアでありＳＭＩ ＮＥＳＴはセットされる。
【００５９】
３．３．ＳＭＭキャッシング
典型的な拡張されたシステム管理モードは、ＶＳＡソフトウェアを出し入れする場合のオーバヘッド／待ち時間を減少し、ＶＳＡ／ＳＭＩルーチンを処理する場合のスループットを増大することにより、性能を増大するためにキャッシングを用いる。
従来のＳＭＡＤＳ＃（ＳＭＩアドレスストローブ）は用いられない--代わりに、キャッシュできるシステムメモリの領域がＳＭＭメモリ領域のために割付される。キャッシュ可能なＳＭＭ領域は、再入可能ＶＳＡソフトウェアばかりでなく、ＳＭＩハンドラー、ＣＰＵ状態及びたのコンテクスト依存性情報を含む（図３）。
図７はＳＭＭ領域をキャッシュ可能なシステムメモリへマップするための典型的なメモリマッピングスキームを示す。このメモリマッピング機能は、バス制御装置１２およびメモリ制御装置２８（図１も参照されたい）によって達成される。
典型的な３２ビットｘ８６プロセッサ（図１における１０）は４Ｇバイトのアドレススペース２３０を有している。現在のコンピュータシステムは４−１６Ｍバイトのシステムメモリ（図１の３６）を備える--システムメモリ(DRAM)の上部は２３１で示される。システムメモリ６４０Ｋ−１Ｍの領域は、周辺機器およびＢＩＯＳ機能のために代表的にリザーブされる--６４０Ｋから７６８Ｋの１２８Ｋの領域はグラフッィクス（セクション３．１．を参照）メモリ（ＶＧＡ）のために代表的にリザーブされ、一方、７６８Ｋから１Ｍまでの領域は他の周辺機器およびＢＩＯＳ機能のために用いられる。
【００６０】
システムメモリ（即ち、上に述べたＤＲＡＭアドレススペース）の上部以上のアドレススペースは周辺機能をマッピングするために一般に用いられる。例えば、グラフッィクス周辺機器は、特定のグラフッィクスレジスタ及び／又は機能を指定するために、このアドレススペースの一部を用いる。
仮想システムアーキテクチャは、ＧＸメモリマップ領域２３２を確立するために上述のＤＲＡＭアドレススペースの一部を用いる。典型的な仮想システムアーキテクチャに対して、ＧＸメモリマップ領域は、ビデオフレームバッファおよびＳＭＭ領域を含む。
メモリ制御装置２８はＧＸメモリマップ領域を物理的なメモリへ再マップする。典型的な再マップするアプローチはフレームバッファをシステムメモリの上部へ再マップすることであり、ＳＭＭ領域を、グラフィックス機能（しかし、この機能のためのＶＳＡによって必要とされない）に対して通常リザーブされるシステムメモリの６４０Ｋ−７６８Ｋの領域へ再マップすることである。
【００６１】
バス制御装置１２はいろいろな制御信号を与えるために、Ｃ−バス（図１の３０）からアドレスをデコードするＸマッパー（Ｘmapper) ２３５を含む。１つのこの制御信号--ＧＸ ＭＥＭ--はＧＸメモリ２３２内にあるアドレスを指示するために用いられる。
ＧＸ ＭＥＭの表明に応答して、メモリ制御装置２８は、ＧＸメモリ領域２３２内にあるアドレスがフレームバッファ或いはＳＭＭ領域内にあるか否かを決定するために、２ビットデコードを行う。もし、アドレスがＳＭＭ領域内にあるなら、メモリ制御装置はシステムメモリのＳＭＭ領域２３３へ再マップすることを行う。
図８はＳＭＭメモリ領域へのアクセスに関連したキャッシュ制御動作を示す。もし、バス制御装置がＣバスからのアドレスを受信し（２４０）、キャッシュミスがキャッシュ（図１の１８）によって信号されるなら、バス制御装置は、キャッシュ・ライン・フィル・サイクル（cache line fill cycle)がランされるべきであるか否かを決定するためにアドレス（２４２）をデコードする。
【００６２】
もし、バス制御装置がＧＸメモリ（２４５）内としてアドレスをデコードするなら、それはＧＸ ＭＥＭ（２４６）をメモリ制御装置へ表明する。バス制御措置およびメモリ制御装置の双方は、アクセスがキャッシュ可能なＳＭＭメモリへ向けられているかを検出するためにアドレスの２ビットデコードを行う。
もしバス制御装置は、アドレスがＳＭＭ領域内にあることを決定するなら、それはキャッシュミス(cache miss)に応答してキャッシュ可能なラインフィル(cacheable line fill) を示す内部のＫＥＮ＃（キャッシュイネーブル）信号を表明する。同時に、メモリ制御装置はＳＭＭ領域内としてアドレスをデコードし、ＳＭＭ領域２３３内のアドレスへ再マップすることを行う。
【００６３】
４．むすび
本発明の詳細な説明はある典型的な実施の形態について述べられたけれども、代替の実施の形態ばかりでなく、これらの実施の形態のいろいろな変更がこの分野の通常の知識を有するものに示唆されるであろう。
例えば、一般に、仮想システムアーキテクチャに関して、また特にグラフッックスおよびオーディオの周辺ハードウェア機能を仮想化するする拡張されたシステム管理モードの説明は典型的なもののみである。また、ＳＭＩネスティングのための特定の実施を含み、ＳＭＨＲレジスタとしてのこのような構成および制御の特徴、ＳＭＩヘッダー位置のマイクロコードの事前計算、およびＳＭＩ ＮＥＳＴとＳＭＭ ＭＯＤＥの制御信号の使用を含む拡張されたＳＭＭの特定の実施は典型的なもののみである。また、本発明のＳＭＩネスティングの特徴は、あらゆるソースあるいは原因からのＳＭＩ、内部的に、あるいは外部的に信号されたトラップ（メモリあるいはＩ／Ｏアクセス）または割り込みへ応用できる。
更に、特定のレジスタ構造、マッピング、ビット割付け、およびたの実施の詳細は、典型的なｘ８６プロセッサおよびコンピュータシステムに関して、本発明の詳細な説明を与えるためのみに述べられている。
【００６４】
また、バイト、ワード、ダブルワード（double words: dwords) 、クワッドワード(quad words: qwords)等への分割データの参照は、特許請求の範囲において用いられたとき、サイズについて限定する意図ではなく、むしろデータのブロックのための包括的用語として取り扱うように意図されている。
更に、ハードウェアおよびソフトウェアロジック間のトレードオフ（trade-offs) に基づくいろいろな変更はこの分野の通常の知識を有するものに明らかであろう。また、ＶＳＡソフトウェアおよび種々のＶＳＡ／ＳＭＩルーチン間の機能の割付けは例示的なものである。本発明は請求項の範囲内にはいるあらゆる変更あるいは代替の実施の形態を含むものである。
関連出願
本発明は、米国特許出願、(1) Ser. No. 08/540,351 entiled “Virtual Subsystem Architecture （仮想サブシステムアーキテクチャ）" filed October 6, 1995, (2) Ser. No. 08/458,326 entiled “Virtual Audio Generation And Capture In A Computer（コンピュータにおける仮想オーディオ発生および捕獲）" filed June 2, 1995, and (3) Ser. No. 08/401,664 entiled “Enhanced System Management Method and Apparatus（拡張されたシステム管理方法および装置）“ filed March 9, 1995 、に関連している。
【図面の簡単な説明】
【図１】内部的および外部的に信号されたＳＭＩの割り込みを有する拡張されたシステム管理モードを含む、仮想システムアーキテクチャを実施する典型的なコンピュータシステムを示す。
【図２】電力管理のためのＩ／Ｏトラッピングを含む、従来のＳＭＭハンドラーの一般的な動作を示す。
【図３】例えば、周辺ハードウェアの仮想化をサポートするＳＭＩネスティングを含む拡張されたＳＭＭの動作を一般的に示す。
【図４】ネストされたＳＭＩイベントおよび再入可能なＶＳＡソフトウェアのためのＳＭＩヘッダー／コンテクストセグメントを含む、典型的なＳＭＭ領域のマッピングを示す。
【図５】ＳＭＩネツティングのためのＶＳＡコンテクストスタック管理を含む拡張されたＳＭＭを示す。
【図６】ＳＭＩネスティング動作のためのＳＭＩ ＮＥＳＴおよびＳＭＭ ＭＯＤＥビットの状態変化を示す。
【図７】キャッシュ可能なシステムメモリへのＳＭＭ領域の典型的なマッピング、およびバス制御装置およびメモリ制御装置における関連したキャッシュ可能性の制御メカニズムを示す。
【図８】キャッシュ可能なシステムメモリへのＳＭＭ領域の典型的なマッピング、およびバス制御装置およびメモリ制御装置における関連したキャッシュ可能性の制御メカニズムを示す。
【図１】
0003854668.tif 000004
【図２】
0003854668.tif 000005
【図３】
0003854668.tif 000006
【図４】
0003854668.tif 000007
【図５】
0003854668.tif 000008
【図６】
0003854668.tif 000009
【図７】
0003854668.tif 000010
【図８】
0003854668.tif 000011