JP4434482B2 - 仮想モードでのシステム管理モードサービスを実行する方法及び装置 - Google Patents
仮想モードでのシステム管理モードサービスを実行する方法及び装置 Download PDFInfo
- Publication number
- JP4434482B2 JP4434482B2 JP2000515232A JP2000515232A JP4434482B2 JP 4434482 B2 JP4434482 B2 JP 4434482B2 JP 2000515232 A JP2000515232 A JP 2000515232A JP 2000515232 A JP2000515232 A JP 2000515232A JP 4434482 B2 JP4434482 B2 JP 4434482B2
- Authority
- JP
- Japan
- Prior art keywords
- processor
- operate
- mode
- system management
- configure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【技術分野】
本発明は、マイクロコントローラベースシステムのメモリに関し、より詳しくは、仮想モードでのシステム管理モードサービスを行う装置および方法に関係する。
【0002】
【関連技術の説明】
パーソナルコンピュータアーキテクチャに基づく現代のコンピュータは、システム管理モード(SMM)として公知の、インテルx86ファミリのマイクロプロセッサのオペレーティングモードを使用することによって、パワーマネジメントや他のシステム管理機能を実行できる。SMMは、オペレーティングシステムおよびアプリケーションソフトウェアに見えないように、プロダクト・特定ハードウェア機能を制御するシステムファームウェアによって使用される。SMMは、例えば、システム構成やパワーダウン装置の構成などのシステム管理情報に対して使用され、すなわち、ゼロボルトサスペンド機能などの省電力ルーチンを呼び出す。
【0003】
SMMは、SMIによって呼び出される。SMIは、通常のコード実行速度に比較すると、多くの場合低速で実行する。これは、SMIがアンキャッシュメモリ領域の1メガバイトの境界の下で大抵操作するからである。この特徴は、オーバラッピングメモリによるキャッシュ対立を避けるために実行される。SMIの発生の間、CPUは、データアクセスのためのちょうど64キロバイトより4ギガバイトまで延在するセグメント限度を除いたリアルモードに似ているSMMモードを実行する。コード実行アドレス可能性は、1メガバイトのみに限られる。かかる方法によって、結果としてシステム性能は制限される。
【0004】
1の代替の方法は、SMZが呼び出されるときはいつでも、1メガバイトの境界より上のキャッシュ可能な領域から、1メガバイトの境界の下のキャッシュ可能な領域に向かう、SMIコードおよびデータの転送を含む。次に、SMIの実行が、標準のSMMモードで起こる。そして、SMIコードは、SMIの終了時に1メガバイトの領域より上のキャッシュ可能な領域に戻される。かかる方法は、かなりの時間を要し、故に、システム性能の低下につながる。
【0005】
したがって、上述した課題を解決する装置および方法に対する技術に需要が存在する。特に、既存のソフトウェアを書き直す必要が無い状態で、キャッシュ領域のシステム管理割り込みサービスコードを有効且つ安全に実行する装置および方法に対して需要が存在する。
【0006】
【発明の概要】
本発明は、プロセッサベースシステムのシステム管理モードにて命令を実行するための装置および方法である。この装置は、プロセスベースシステムが処理される命令シーケンスを格納するためのメモリからなる。装置は、さらに、システムアドレス空間を有するとともに格納された命令シーケンスを実行するプロセッサも含む。格納された命令シーケンスは、プロセッサに以下の動作を生ぜしむるプロセスステップを含む。このプロセスステップは、(a) プロセッサを保護モードで動作させるように構成しながらも、システム管理モードにて、プロセッサは1メガバイトより大きいアドレスで動作するステップと、(c) プロセッサのページング機能を呼び出すステップと、(d) プロセッサを仮想モードにて動作させるように構成するステップと、(e) 格納された命令シーケンスを処理するステップと、からなり、プロセスステップは、システム管理要求を処理する命令が入力されたときに行われる。
【0007】
【好ましい発明の詳細な説明】
本発明は、メモリページングが仮想モードでSMIコードを実行することによって可能となるシステム管理モード(SMM)の下で動作する仮想モニタをつくる。仮想モード動作によって、1メガバイト未満で動作しなければならなかったSMMモードに対して書かれたSMMコードが、1メガバイトの境界より上で実行できる。特に、全てのSMIハンドラは1メガバイトの境界より上に写像される。そして、パワーマネジメントコードは、SMMモード内で、ページイネーブル保護モード仮想タスクとして実行される。完全に別々のメモリ空間のSMIハンドラコードによって、SMMに入るときにキャッシュフラッシュは不必要である。その理由は、正規システムを備えたメモリ使用は重ならないからである。
【0008】
本実施例を、プロセッサシステム10に関して記載する。図1は、本発明のプロセスを実行する典型的なプロセッサシステム10を示す。プロセッサシステム10内で、バストランザクションが、システムデータバス12を介して、プロセッサ、すなわち中央処理装置(CPU)14と、システムメモリ18とシステム管理ランダムアクセスメモリ(SMRAM)20とビデオメモリ22とディスクドライブコントローラ24やネットワークコントローラ26等のさまざまなI/Oおよび周辺装置モジュールとの間で、実行される。CPU14は、システムアドレスバス30およびCPU制御信号ライン32を介してメモリコントローラ28およびバスコントローラ36に結合される。次に、メモリコントローラ34は、システムメモリ18およびSMRAM20に接続されている。
【0009】
メモリコントローラ34は、メモリアドレスをライン38を介して、メモリ制御信号をライン40を介してシステムメモリ18およびSMRAM20に供給して、システムメモリ18やSMRAM20とCPU14との間でシステムデータバス12を介したデータ転送を可能にする。CPU14も、システムアドレスバス30、システムデータバス12、およびCPU制御信号ライン32を介して、バスコントローラ36に接続されている。バスコントローラ36は、次に、バッファ付きアドレスバス42およびバッファ付きデータバス44を介して、ビデオメモリ22と、ディスクドライブコントローラ24と、ネットワークコントローラ26と、適宜の周辺装置に接続されている。プロセッサシステム10は、デスクトップコンピュータやノートパソコン、サーバとして実施される。メモリコントローラ34と他のシステム論理とは、チップセットと称するものに集積されて、パワーマネジメントBIOSサービスを提供する。かかるチップセットの例は、部品指定(part designations)SPC8210、SPC9220の下にセイコーエプソンによって製造されるフォークナ(Falconer)チップセットを含む。かかるチップセットの他の例は、インテル430TX、インテル430HX、インテル440EXチップセットを含む。
【0010】
一実施例において、CPU14は、インテル社によって販売されているインテル486マイクロプロセッサである。他の実施例において、CPU14は、AMDによって販売されているK-6マイクロプロセッサでもよい。更なる実施例において、CPU14は、サイリクス社(Cyrix Corp.)によって販売されている586マイクロプロセッサである。尚、本発明が、システム管理モード(SMM)の使用を行うマイクロプロセッサを使用するとともに、専用割り込みライン(図1のライン50)およびメモリスペースSMRAM20を使用するオペレーティングモードである、任意のプロセッサベースシステムにおいて実行されることは、当業者によって理解される。SMMは、オペレーティングシステムおよびアプリケーションソフトウェアに対して完全に透明になるように、ファームウェアのインテリジェントパワーマネジメントや他の強化システム機能を実行するために使用される。
【0011】
SMMは、CPU14へのSMI信号の表明を介してシステム管理割り込みを生成することによって呼び出される。CPU14は、反応して、SMRAM20にアクセスするライン32を介して提供されるSMIACT制御信号を表明する。SMRAM 20は、SMMのみでの仕様に対して専用化されて固定されているメモリ空間である。すなわち、オペレーティングシステムおよびアプリケーションソフトウェアは、この空間にアクセスをしない。現在のCPU14の状態(コンテキスト)は、SMIACT信号の表明後にSMRAM20に格納され、次に、CPU14は、SMRAM20での位置へジャンプして、システム管理活動を実施するためのSMIハンドラコードを実行する。システム管理活動の終了時に、SMIハンドラは、レジューム(RSM)命令を実行する。この命令は、SMRAM20からCPU14のコンテキストを回復させ、SMIACT信号の表明を止め、次に、以前に割込されたオペレーティングシステムやアプリケーションプログラムの実行に制御を戻す。
【0012】
アドレスバス30上のCPU14(図1)によって表明されたアドレスは、16進のフォーマットで参照され、接尾辞「H」によって示される。インテルのマイクロプロセッサのアドレスバス30は、32ビット長であり、4ギガバイトのシステムアドレス空間50のアドレス指定を行うことができる。SMRAM20は、このシステムアドレス空間50内の任意の場所に配置されるが、しかし、多数のチップセット(例えば、部品指定SPC8210およびSPC8220の下にセイコーエプソンによって製造されるフォークナーチップセット)によって実行されるので、CPU14は、SMRAMコードおよびデータを、物理的なメモリから、1メガバイト以下のCPU14のアドレス空間50の一部に自動的にマップするように構成される。
【0013】
図2Aは、図1のプロセッサシステム10用の典型的なシステムアドレスマップ、すなわち空間50を示す。システムアドレスの最低位の640キロバイト、すなわち0H-9FFFFが、システムメモリ18にマップする。システムアドレスA0000H−BFFFFHは、ビデオメモリ22にマップする。システムアドレスC0000H−CFFFFHは、ビデオBIOSコードにマップする。システムアドレスD0000H−DFFFFH、E0000H−EFFFFHは、しばし、別々のPCMCIA周辺機器領域にマップされたり、または、他のタイプの周辺装置にマップされる。システムアドレスF0000H−FFFFFHは、BIOSコード用に残される。システムアドレス100000H(1メガバイト)以降は、アプリケーション使用に対するシステムメモリにマップされる。
【0014】
図2Bは、SMRAM20の典型的なレイアウトを示す。プロセッサ、すなわちCPU14は、SMMに入るときにCPU14の状態(すなわち、コンテキスト)を保存するために使用されるSMRAM20内で、アドレスの範囲をあらかじめ定義する。CPU14も、SMIコードのエントリポイントを指定する。これらの位置は、SMRAM20のベースアドレスを基準としている。図2Bに示されたSMRAM20の他の領域は、定義するSMMプログラマに対して実施特化されて残されている。
【0015】
一実施例において、SMRAM20のベースアドレスは、CPU14によって、A0000hのデフォルト値に設定される。CPU14は、CPUの14のコンテキストを保存するために、AFE00hに対して下方の位置AFFFFh(SMRAMベース+FFFFh)で開始するSMRAMの512バイト領域を定義する。CPU14のコンテキストが保存されると、CPU14は、SMM位置A8000h(SMRAMベース+8000h)でSMIハンドラのエントリポイントへジャンプする。次に、SMIハンドラは、SMRAM内で次にそのルーチンを実行し、それを使用して必要に応じてデータおよびスタックを格納する。
【0016】
CPU14は、上記多数の設計を使用して実行されるが、現在の議論目的のために、インテルのプロセッサのx86ファミリに触れる。図3A乃至図3Fは、本発明の議論において使用されるx86ファミリのプロセッサのレジスタを示す。x86ファミリのプロセッサは、各々8個の32ビット汎用レジスタEAX、EBX、ECX、EDX、ESI、EDI、EBP、ESPを含む。AX、BX、CX、DXレジスタの16の下位オーダビットは、バイトアドレス指定用のAL(高)、AL(低)、BH、BL、CH、CL、DH,DLレジスタとして、8ビットの増加で、独立にアドレス指定可能である。更に、プロセッサは、6個の16ビットセグメントレジスタを含む。このレジスタは、セグメントのアドレスを判別するために、メモリ内のセグメント記述のテーブルへと指し示すセグメントセレクタを保持する。2個の32ビットレジスタと、EFLAGSと、EIP(命令ポインタ)とは、状況および制御目的のために使用される。
【0017】
各x86プロセッサも、メモリ管理のために使用される4個のレジスタを含む。グローバルディスクリプタテーブルレジスタ(GDTR)は、グローバルディスクリプタテーブルがメモリに見い出されるベースアドレスを格納する。グローバルディスクリプタテーブルは、ベースアドレスを提供するセグメントディスクリプタと、セグメントアドレス指定が行われるサイズおよび保護と、を保持する。ローカルディスクリプタテーブルレジスタ(LDTR)は、ローカルディスクリプタテーブルがメモリ内に見い出されるベースアドレスも格納する。そして、ローカルディスクリプタテーブルは、個々のプログラム用のセグメントアドレス指定が行われるセグメントディスクリプタを保持する。タスクレジスタ(TR)は、プログラム間のスイッチに使用されるグローバルディスクリプタテーブルでのタスク状態ディスクリプタ(TSS)のアドレスを含む情報を保持する。割り込みディスクリプタテーブルレジスタ(IDTR)は、割り込み動作用のアドレスが判別されるテーブルに向けられるアドレスと他情報とを保持する。
【0018】
プロセッサは、4個の制御レジスタCR0、CR1、CR2、CR3を含む。CR0レジスタは、システム制御フラグを保持する。このフラグは、動作モードを制御したり、プロセッサに適用する状態を示したりする。CR0レジスタは、ページングビット(31)を含む制御ビットを保持する。ページングビットは、発生するページングに対して設定される必要があり、また、ページングがディスエーブルになるべきときに、クリアにされなければならない。
【0019】
x86ファミリのプロセッサにおいて、プログラムは、タスクと称される。タスクは、例外、ジャンプ、割り込み、または呼び出しにより開始される。動作を転送するこれら命令のうちの1つが、宛先を参照して使用されてタスクスイッチを呼び出すときに、プログラムの間でのスイッチングが起きる。タスクスイッチは、1のプログラムから他のプログラムへの実行を移動させる。この移動が生じるとき、前のプロセスとともに使用されるほぼ全てのレジスタのコンテンツは、保存されなければならない。特に、すでに進行中の条件操作の結果を含むEFLAGSレジスタのコンテンツは、保存する必要がある。さまざまなタスクの状態は、タスク状態セグメント(TSS)(図4参照)に保存される。このタスク状態セグメントは、タスク状態セグメントディスクリプタにより定義されるデータ構造である。タスク状態セグメントディスクリプタは、タスク状態セグメントのベースアドレスと、タスクが現在動作しているかまたは動作を待っているかを示すビジービットと、を含む。タスク状態セグメントディスクリプタに加えて、タスク状態セグメントディスクリプタに間接的なインデックスを提供するタスクゲートディスクリプタが、タスク間の制御の移行のために使用される。
【0020】
マルチタスキングを行うために、タスク状態セグメントはつくられなければならない。そして、TSSディスクリプタがつくられる必要があり、グローバルディスクリプタテーブルに配置され、故に、タスク状態セグメントにアクセスでき、そして、保存された状態が回復される。更に、タスクレジスタTRは、グローバルレジスタのTSSディスクリプタのインデックスとともにロードされなければならず、故に、タスク状態セグメントにアクセスされる。
【0021】
x86ファミリのプロセッサは、I/Oビットマップの使用によるI/Oアドレス空間へのアクセスのための保護機構を提供する。図4は、タスク状態セグメント(TSS)の典型的なI/Oビットマップを示す。I/Oビットマップは、各タスクのTSSの一部である。その結果、異なるタスクが異なるI/Oビットマップを参照することができる。TSSディスクリプタのI/Oマップベースエントリは、対応するI/Oビットマップが開始するTSS内で、オフセットを提供する。有効I/Oビットマップは、I/OマップベースがTSSに含まれる場合存在する。I/Oビットマップは、電源投入セルフテスト(POST)の間、またはSMIが呼び出された後に、作成されなければならない。詳細は後述する。I/Oビットマップは、CPU14によって調べられて、必要なI/OポートまたはI/O位置に実際にアドレス指定を行うことができるかどうかを判別する。例えば、アドレスが0のポートまたは位置は、オフセットが0のマップに含まれるビットと関係し、アドレスが1のポートまたは位置は、1のオフセットを有するビットと関係する。ポートや位置に対応するマップのビットがクリアされ(0に等しい)、さらに、適用可能なポートへのアクセスが存在するとき、特定のポートやI/O位置がタスクに対して使用される。逆に、I/O位置に相当するマップにビットが設定される場合(1に等しい)、特定のI/O位置は、タスクのために使用できない。マップの長さは、I/O位置の保護ポートの追加の個数を設定する。マップに含まれないポートの全てに、自動的にセットビット(set bit)が割り当てられる。マップに含まれないポートへのアクセスは、例外を生成する。一実施例において、Pentiumプロセッサを使用するときに、合計で(64Kポート)/(バイト毎に8ビット)、すなわち、8192バイトが、64キロバイトの8-ビットポートを有するPentiumプロセッサの完全なI/Oアドレス空間を保護するのに必要になる。
【0022】
x86ファミリのプロセッサは、保護動作モードにおいて提供されるハードウェアセットアップによって、V86動作モードをサポートする。プロセッサは、仮想8086タスクとして多数の8086プログラムを実行することができる。仮想タスクは、ソフトウェアにおいて、現れて8086環境になるものを提供する。仮想8086タスクは、x86プロセッサハードウェアおよびシステムソフトを使用して、リアルモードプログラムを実行する。プロセッサハードウェアは、TSSデータ構造を使用して仮想メモリ空間を提供し、プロセッサハードウェアレジスタおよび仮想メモリを使用してそのタスク用の命令を実行する。システムソフトは、実行されるべき他のタスクに関して、任意の仮想タスクのインターフェースを制御する。このシステムソフトを、仮想8086モニタと称する。
【0023】
仮想8086モードにスイッチするために、CR0レジスタのVMビット(17)が設定されなければならない。(これは、V86 TSSへのファージャンプ(FAR JUMP)によって自動的に行われる)。仮想8086モードで動作するときに、プロセッサは、セグメントレジスタを(CS、DS、ES、FS、GSのいずれか)を標準ポインタレジスタ、すなわちオフセットと組み合わせて、リアルモードで動作する8086プロセッサと同様な方法で線形アドレスを形成する。しかし、これらの線形アドレスは、ページングユニットを通り抜けて、1メガバイトの物理メモリにマップする。このメモリは、システムの任意の場所に存在する。このように、仮想8086タスクを行うときに、プロセッサは、リアルモードとしてV86モードアドレスを形成して、仮想タスクであるアプリケーションプログラムを走らせる。プロセッサは、システム仮想マシンモニタソフトウェアを走らせるために保護モードに戻る。
【0024】
前述のように、SMMは、CPU14へのSMI信号の表明を介してシステム管理割り込みを生成することによって呼び出される。CPU14は、反応して、SMRAM20にアクセスするライン32を介して提供されるSMIACT制御信号を表明する。本発明の原理によると、物理メモリに位置するSMRAM20に格納されるデータおよびコードは、最初に、図5に示すように、システムアドレス空間50の1メガバイトを超える位置22へとマップされる。現在のCPU14の状態(コンテキスト)は、SMIACT信号の表明の後、SMRAM20に格納される。次に、CPU14は、システムアドレス空間50の1メガバイトを超えるSMRAM20の位置へジャンプして、システム管理活動を実行するためのSMIハンドラコードを実行する。
【0025】
次に、SMIハンドラは、SMMモードでCPU14によるSMIコードの実行を開始するように構成される。特に、SMIハンドラは、図6に示すように、システムアドレス空間50で1メガバイトを超える位置24に、ニアジャンプ(NEAR JMP)を実行する。そこで、CPU14のモード変化が行われる。位置24は、位置22の64キロバイト内に存在しなければならない。次に、SMIハンドラは、CPU14に次に制御信号を発して、CPU14を保護モードで動作するように構成する。一実施例において、これは、CR0レジスタのビット0を1に設定することによって成し遂げられる。
【0026】
一実施例において、次に、SMIハンドラは、CPU14のページング機能を使用するときに要求されるページテーブルをつくるように構成される。ページテーブルは、システムメモリ18(図1)の領域に配置される。各ページテーブルは、1024個の各ページスタートアドレスに向けられている1024個のエントリを含む。
【0027】
SMIハンドラは、CPU14のタスク状態セグメント(TSS)機能を使用するときに要求されるTSSおよびI/Oビットマップをつくるように構成される。I/Oビットマップを使用すると、I/Oアドレス空間にアクセスするための保護機構が提供される。前述したように、I/Oビットマップは、呼び出されたタスクのTSSに格納される。
【0028】
他の実施例において、ページテーブルおよびI/Oビットマップは、SMMの起動前に、電源投入セルフテスト(POST)の間に、作成される。この他の実施例において、ページテーブルとTSSおよびI/Oビットマップとは、一度作成されなければならないだけであり、SMM活動の終了時に削除されない。更に、適宜の実施例において、ページテーブルは、TSSおよびI/Oビットマップを同時につくらずに、作成される。逆に、TSSおよびI/Oビットマップは、ページテーブルを同時に作成せずに作成できる。
【0029】
ページテーブルとTSSおよびI/Oビットマップとがつくられると、SMTハンドラは、CPU14のページング機能を呼び出す。一実施例において、これは、インテル社によって販売されているようなx86プロセッサのCR0レジスタのビット31を設定することによって、実行される。次に、SMIハンドラは、CPU14を仮想モードに切り替える。一実施例において、これは、仮想モードへ切替えるためのTSSへのファージャンプ(FAR JMP)を実行することによって、実施される。更に、1メガバイトを越える物理メモリ領域は、タスクの線形アドレス空間の第1のメガバイトに実質的にマップされる。その結果、タスクスイッチが、呼び出されて、1メガバイトの境界より上に、プロセッサ14の動作モードを仮想モードに変化させる。
【0030】
仮想モードにおいて1回、CPU14は、リアルモードと同様な方法でアプリケーションの論理アドレスを判別する。物理アドレスは、ページテーブルを使用することによって判別される。次に、SMIハンドラは、システム管理活動を処理するために必要なタスクの実行を開始する。システム管理活動の実行中に、ソフトウェアは、特定の特別タスクの実行を容易にするために、プロセッサを時々保護モードにおいて動作するように構成している。これらの特別なタスクは、当業者には周知なように、演算論理ユニットの浮動小数点ユニットのアクセスとキャッシュフラッシュとを含む。もしそうならば、SMIハンドラは、保護モードにおいて作動するCPU14を構成する。このように一旦構成されると、CPU14は、特別なタスクを処理する。特別なタスクが終了すると、SMIハンドラは、CPU14を仮想モードにおいて作動するように構成し、故に、システム管理活動が再開できる。
【0031】
システム管理活動が終了すると、SMIハンドラは、CPU14を仮想モードから出すように構成する。そして、それは、また、CPU14を保護モードにおいて再び動作するように構成する。次に、ページングは、PGビット、ビット31(図3G参照)をクリアすることによってディスエーブルになる。次に、SMIハンドラは、SMRAM20にCPUl4のコンテキストを復元するレジューム(RSM)命令を実行し、SMIACT信号の表明を止め、以前に割込まれたオペレーティングシステムやアプリケーションプログラムの実行に制御を戻す。
【0032】
図7Aおよび図7Bは、本発明のプロセスの一実施例を示すフローチャートである。スタート状態から始まり、プロセスS100は、プロセスステップS102に進み、ここで、SMMは、SMIの発行によって呼び出される。プロセスS100は、次にプロセスステップS104へ進み、ここで、特に、物理メモリに位置するSMRAM20に格納されたデータおよびコードは、最初に、システムアドレス空間50において1メガバイトを超える位置22にマップされる。現在のCPU14の状態(コンテキスト)は、SMRAM20に格納される。次に、SMIハンドラは、1メガバイトを越えるSMIコードの実行を始めているが、一方、CPU14は、プロセスステップS106に示すように、SMMモードで未だ動作している。特に、SMIハンドラは、システムアドレス空間50にて未だ1メガバイトを超える位置へのニアジャンプ(NEAR JMP)を実行する。次に、プロセスS100は、プロセスステップS108へ進む。そこで、SMIハンドラは、CPU14に制御信号を発して、CPU14を保護モードにおいて動作するように構成する。次に、SMIハンドラは、ページテーブルおよびI/Oテーブル(プロセスステップS110)をつくる。または、ページテーブル及びI/Oテーブルを、POSTの間につくることもできる。次に、SMIハンドラは、CPU14のページング機能を呼び出す(プロセスステップS112)。次に、プロセスS100は、プロセスステップSl14へ進む。そこでは、SMIハンドラは、CPUを仮想モードで動作させるように構成する。次に、SMIハンドラは、SMIの処理に進み、プロセスステップS116に示すように、システム管理活動を実行する。
【0033】
システム管理活動の実行中に、ソフトウェアは、特定の特別タスクの実行を容易にするために(判別ステップS118)、時々プロセッサを保護モードで動作させるように変更する。これらの特別なタスクは、当業者に対して周知なように、演算論理ユニットの浮動小数点のアクセス及びキャッシュフラッシュを含む。もしそうならば、プロセスS100は、プロセスステップS120へ進む。そこで、SMIハンドラは、CPU14を保護モードで動作させるように構成する。このように、構成されると、CPU14は、特別タスクを処理する(プロセスステップS122)。特別タスクが終了すると、SMIハンドラは、CPU14を仮想モードで動作させるように構成する。次に、SMIハンドラは、判別ステップS126へ進む。判別ステップS118として、プロセスS100が、実行しなければならない特別タスクが無いと判定する場合、プロセスS100は、直接判別ステップS126に進む。
【0034】
判別ステップS126で、プロセスS100は、全てのシステム管理活動が終了したかどうかを問い合わせる。もしそうでなければ、プロセスS100は、プロセスステップS116へ進む。そこで、それは、システム管理活動の処理を続ける。全てのシステム管理活動が終了した場合、SMIハンドラが、CPU14を仮想モードから出すように構成し(プロセスステップS128)、次に、CPU14を再び保護モードにて動作させるように構成する。次に、ページングはディスエーブルになる(プロセスステップS130)。ページテーブルおよびI/Oテーブルが、SMIの呼び出しの後でPOSTの間でないときにつくられる場合、プロセスS100は、プロセスステップS132へ進み、ページテーブルおよびI/Oテーブルを削除する。次に、SMIハンドラは、CPU14のコンテキストをSMRAM20に戻すレジューム(RSM)命令を実行する(プロセスステップS134)。次に、プロセスS100は、プロセスステップS136に示すように、以前に割込まれたオペレーティングシステムプロセスやアプリケーションプログラムの実行に制御を戻す。次に、プロセスS100は終わる。
【0035】
本発明の使用を介して、システム管理モード内のコードを有効に実行する装置および方法が提供される。特に、本発明は、プログラムコードの重複や、メモリの増加使用や保守の増加の無い状態で、システム管理モード内のコードの実行を容易にする。本発明の使用は、簡単且つコンパクトで、デバッグが簡単なコードの実行を容易にする。
【0036】
本発明は、好ましい実施例に関して記載したが、当業者において明らかな他の実施例も、本発明の範囲内に含まれる。したがって、本発明の範囲は、以下の請求の範囲によってのみ定義されることを意図したものである。
【図面の簡単な説明】
【図1】 図1は、本発明のプロセスを実行する典型的なプロセッサシステムを示す。
【図2A】 図2Aは、図1のプロセッサシステム用の典型的なシステムアドレスマップ50を示す。
【図2B】 図2Bは、SMRAM20の典型的なレイアウトを示す。
【図3A】 図3Aは、CPU14の一実施例のレジスタを示す。
【図3B】 図3Bは、CPU14の一実施例のレジスタを示す。
【図3C】 図3Cは、CPU14の一実施例のレジスタを示す。
【図3D】 図3Dは、CPU14の一実施例のレジスタを示す。
【図3E】 図3Eは、CPU14の一実施例のレジスタを示す。
【図3F】 図3Fは、CPU14の一実施例のレジスタを示す。
【図3G】 図3Gは、CPU14の一実施例のレジスタを示す。
【図4】 図4は、本発明において使用されるI/Oビットマップの一実施例を示す。
【図5】 図5は、物理的なメモリからCPUアドレス空間までSRAMに格納されるデータおよびコードのマッピングを示す。
【図6】 図6は、本発明の原理に従って、ニアジャンプ動作の実行によるメモリのセグメントへの制御の移行を示す。
【図7A】 図7Aは、本発明のプロセスの一実施例を示すフローチャートである。
【図7B】 図7Bは、本発明のプロセスの一実施例を示すフローチャートである。
Claims (30)
- プロセッサベースシステムでのシステム管理モードの命令を実行する装置であって、
前記プロセッサベースシステムが処理される命令シーケンスを格納するメモリと、
システムアドレス空間を有するとともに当該格納された命令シーケンスを実行するプロセッサと、
を有し、
前記格納された命令シーケンスは、前記プロセッサに以下のプロセスステップを生ぜしむるためのものであり、前記プロセスステップは、
(a) システム管理モードである間に、前記プロセッサを保護モードで動作するように構成し、かつ、前記プロセッサを1メガバイトよりも大きいアドレスにおいて動作させるステップと、
(b) 前記プロセッサのページング機能を呼び出すステップと、
(c) 前記プロセッサを仮想モードにて動作させるように構成するステップと、
(d) 前記格納された命令シーケンスを処理するステップと、
からなり、前記プロセスステップは、システム管理要求を処理する命令が入力されたときに行われることを特徴とする装置。 - ステップ(b)は、
(b.1) 少なくとも1つのページテーブルを作るステップと、
(b.2) 前記プロセッサのページング機能を呼び出すステップと、
からなることを特徴とする請求項1記載の装置。 - ステップ(a)の前に、少なくとも1つのページテーブルをつくるステップをさらに有することを特徴とする請求項1記載の装置。
- ステップ(a)は、
(a.l) 第2の位置へのニアジャンプを実行するステップと、
(a.2) 前記プロセッサを保護モードにて動作するように構成するステップと、
からなることを特徴とする請求項1記載の装置。 - (e) 制御が、前記プロセッサが保護モードにて動作するように構成されることを要求するタスクを実行するための命令シーケンスに移行すべきか否かを判別するステップと、
(f) そうである場合に、前記プロセッサが前記保護モードにて動作するように構成し、前記タスクを実行するための命令シーケンスを実行するステップと、
(g) そうでなければ、前記格納された命令シーケンスの処理を継続するステップと、
をさらに有することを特徴とする請求項1記載の装置。 - (h) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(i) そうである場合に、仮想モードでの動作を行わないように前記プロセッサを構成し、前記プロセッサを保護モードにおいて動作するように構成し、前記プロセッサがページングをディスエーブルにするように構成し、
そうでない場合は、システム管理活動に関連する命令シーケンスの実行を継続するステップと、
をさらに有することを特徴とする請求項5記載の装置。 - (h) メモリの前記プロセッサのコンテキストを復元するステップと、
(i) 呼び出し元の機能に戻るステップと、
をさらに有することを特徴とする請求項5記載の装置。 - (j) 少なくとも1つのページテーブルを削除するステップと、
(k) メモリの前記プロセッサのコンテキストを復元するステップと、
(l) 呼び出し元の機能に戻るステップと、
をさらに有することを特徴とする請求項5記載の装置。 - (e) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(f) そうである場合に、前記仮想モードでの動作を行わないように前記プロセッサを構成し、前記プロセッサを前記保護モードにおいて動作するように構成し、前記プロセッサがページングをディスエーブルにするように構成し、
そうでない場合は、システム管理活動に関連する命令シーケンスの実行を継続するステップと、
をさらに有することを特徴とする請求項1記載の装置。 - (g) メモリの前記プロセッサのコンテキストを復元するステップと、
(h) 呼び出し元の機能に戻るステップと、
をさらに有することを特徴とする請求項9記載の装置。 - プロセッサベースシステムのシステム管理モードの命令を実行する方法であって、
(a) システム管理モードである間に、プロセッサを保護モードで動作するように構成し、かつ、前記プロセッサを1メガバイトよりも大きいアドレスにおいて動作させるステップ
と、
(b) 前記プロセッサのページング機能を呼び出すステップと、
(c) 仮想モードにおいて動作するように前記プロセッサを構成するステップと、
(d) 第1の位置に格納される命令シーケンスを処理するステップと、
からなり、ステップ(a)、(b)、(c)、(d)は、システム管理要求を処理する命令が入力されると行われることを特徴とする方法。 - ステップ(b)は、
(b.1)少なくとも1つのページテーブルを作るステップと、
(b.2)前記プロセッサのページング機能を呼び出すステップと、
からなることを特徴とする請求項11記載の方法。 - ステップ(a)の前に少なくとも1つのページテーブルをつくるステップをさらに有することを特徴とする請求項11記載の方法。
- ステップ(a)は、
(a.1)第2の位置にニアジャンプを実行するステップと、
(a.2)保護モードにおいて動作するように前記プロセッサを構成するステップと、
からなることを特徴とする請求項11記載の方法。 - (e) 前記プロセッサが保護モードにて動作するように構成されることを要求するタスクを実行するための命令シーケンスに制御が移行すべきか否かを判別するステップと、
(f) もしそうならば、保護モードにて動作するように前記プロセッサを構成し、前記タスクを実行するための命令シーケンスを実行するステップと、
(g) そうでなければ、前記格納された命令シーケンスの処理を継続するステップと、
をさらに有することを特徴とする請求項11記載の方法。 - (h) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(i) もしそうならば、前記仮想モードでの動作を行わないように前記プロセッサを構成し、前記保護モードにて動作するように前記プロセッサを構成し、ページングをディスエーブルするように前記プロセッサを構成し、
そうでなければ、システム管理活動に関連する命令シーケンスの実行を継続することを特徴とする請求項15記載の方法。 - (i) メモリの前記プロセッサのコンテキストを復元するステップと、
(i)呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項15記載の方法。 - (j) 少なくとも1つのページテーブルを削除するステップと、
(k) メモリの前記プロセッサのコンテキストを復元するステップと、
(l) 呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項15記載の方法。 - (e) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(f) もしそうならば、前記仮想モードでの動作を行わないように前記プロセッサを構成し、前記保護モードにて動作するように前記プロセッサを構成し、ページングをディスエーブルするように前記プロセッサを構成し、
そうでなければ、システム管理活動に関連する命令シーケンスの実行を継続することを特徴とする請求項11記載の方法。 - (g) メモリの前記プロセッサのコンテキストを復元するステップと、
(h) 呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項19記載の方法。 - プロセッサベースシステムのシステム管理モードで命令を実行するコンピュータ実行可能なプロセスステップであって、
(a)システム管理モードである間に、プロセッサを保護モードで動作するように構成し、かつ、前記プロセッサを1メガバイトよりも大きいアドレスにおいて動作させるステップと、
(b) 前記プロセッサのページング機能を呼び出すステップと、
(c) 仮想モードにおいて動作するように前記プロセッサを構成するステップと、
(d) 第1の位置に格納される命令シーケンスを処理するステップと、
からなり、ステップ(a)、(b)、(c)、(d)は、システム管理要求を処理する命令が入力されたときに行われることを特徴とするコンピュータ実行可能なプロセスステップ。 - ステップ(b)は、
(b.l) 少なくとも1つのページテーブルを作成するステップと、
(b.2) 前記プロセッサのページング機能を呼び出すステップと、
からなることを特徴とする請求項21記載のコンピュータ実行可能なプロセスステップ。 - ステップ(a)の前に、少なくとも1つのページテーブルをつくるステップをさらに有することを特徴とする請求項21記載のコンピュータ実行可能なプロセスステップ。
- ステップ(a)は、
(a.1) 第2の位置へのニアジャンプを実行するステップと、
(a.2) 保護モードにおいて動作するように前記プロセッサを構成するステップと、
からなることを特徴とする請求項21記載のコンピュータ実行可能なプロセスステップ。 - (e) 前記プロセッサが保護モードにおいて動作するように構成されることを要求するタスクを実行するための命令シーケンスに制御を移行すべきか否かを判別するステップと、
(f) もしそうならば、前記保護モードにおいて動作するように前記プロセッサを構成し、前記タスクを実行するための命令シーケンスを実行するステップと、
(g) そうでなければ、前記格納された命令シーケンスの処理を継続するステップと、
を更に有することを特徴とする請求項21記載のコンピュータ実行可能なプロセスステップ。 - (h) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(i) もしそうならば、前記仮想モードでの動作を行わないように前記プロセッサを構成し、前記保護モードにおいて動作するように前記プロセッサを構成し、ページングをディスエーブルするように前記プロセッサを構成し、
そうでなければ、システム管理活動に関連する命令シーケンスの実行を継続するステップと、
をさらに有することを特徴とする請求項25記載のコンピュータ実行可能なプロセスステップ。 - (h) メモリの前記プロセッサのコンテキストを復元するステップと、
(i) 呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項25記載のコンピュータ実行可能なプロセスステップ。 - (j) 少なくとも1つのページテーブルを削除するステップと、
(k) メモリの前記プロセッサのコンテキストを復元するステップと、
(l) 呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項25記載のコンピュータ実行可能なプロセスステップ。 - (e) システム管理活動に関連する命令シーケンスの実行が終了したか否かを判別するステップと、
(f) もしそうならば、前記仮想モードでの動作を行わないように前記プロセッサを構成し、前記保護モードにおいて動作するように前記プロセッサを構成し、ページングをディスエーブルするように前記プロセッサを構成し、
そうでなければ、システム管理活動に関連する命令シーケンスの実行を継続するステップと、
をさらに有することを特徴とする請求項21記載のコンピュータ実行可能なプロセスステップ。 - (g) メモリの前記プロセッサのコンテキストを復元するステップと、
(h) 呼び出し元の機能に戻すステップと、
をさらに有することを特徴とする請求項29記載のコンピュータ実行可能なプロセスステップ。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/946,416 | 1997-10-07 | ||
| US08/946,416 US5987604A (en) | 1997-10-07 | 1997-10-07 | Method and apparatus for providing execution of system management mode services in virtual mode |
| PCT/US1998/021088 WO1999018511A1 (en) | 1997-10-07 | 1998-10-07 | Method and apparatus for providing execution of system management mode services in virtual mode |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JP2001519566A JP2001519566A (ja) | 2001-10-23 |
| JP2001519566A5 JP2001519566A5 (ja) | 2009-04-23 |
| JP4434482B2 true JP4434482B2 (ja) | 2010-03-17 |
Family
ID=25484444
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000515232A Expired - Fee Related JP4434482B2 (ja) | 1997-10-07 | 1998-10-07 | 仮想モードでのシステム管理モードサービスを実行する方法及び装置 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US5987604A (ja) |
| JP (1) | JP4434482B2 (ja) |
| AU (1) | AU9788898A (ja) |
| GB (1) | GB2345564B (ja) |
| TW (1) | TW405097B (ja) |
| WO (1) | WO1999018511A1 (ja) |
Families Citing this family (85)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6486883B1 (en) * | 1999-06-18 | 2002-11-26 | Phoenix Technologies, Ltd. | Apparatus and method for updating images stored in non-volatile memory |
| US6996710B1 (en) | 2000-03-31 | 2006-02-07 | Intel Corporation | Platform and method for issuing and certifying a hardware-protected attestation key |
| US7013484B1 (en) | 2000-03-31 | 2006-03-14 | Intel Corporation | Managing a secure environment using a chipset in isolated execution mode |
| US6934817B2 (en) | 2000-03-31 | 2005-08-23 | Intel Corporation | Controlling access to multiple memory zones in an isolated execution environment |
| US7111176B1 (en) | 2000-03-31 | 2006-09-19 | Intel Corporation | Generating isolated bus cycles for isolated execution |
| US6990579B1 (en) | 2000-03-31 | 2006-01-24 | Intel Corporation | Platform and method for remote attestation of a platform |
| US6957332B1 (en) | 2000-03-31 | 2005-10-18 | Intel Corporation | Managing a secure platform using a hierarchical executive architecture in isolated execution mode |
| US7089418B1 (en) | 2000-03-31 | 2006-08-08 | Intel Corporation | Managing accesses in a processor for isolated execution |
| US7082615B1 (en) | 2000-03-31 | 2006-07-25 | Intel Corporation | Protecting software environment in isolated execution |
| US6976162B1 (en) | 2000-06-28 | 2005-12-13 | Intel Corporation | Platform and method for establishing provable identities while maintaining privacy |
| US7793111B1 (en) | 2000-09-28 | 2010-09-07 | Intel Corporation | Mechanism to handle events in a machine with isolated execution |
| US7215781B2 (en) | 2000-12-22 | 2007-05-08 | Intel Corporation | Creation and distribution of a secret value between two devices |
| US7225441B2 (en) | 2000-12-27 | 2007-05-29 | Intel Corporation | Mechanism for providing power management through virtualization |
| US7035963B2 (en) | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
| US6907600B2 (en) | 2000-12-27 | 2005-06-14 | Intel Corporation | Virtual translation lookaside buffer |
| US7117376B2 (en) | 2000-12-28 | 2006-10-03 | Intel Corporation | Platform and method of creating a secure boot that enforces proper user authentication and enforces hardware configurations |
| US7272831B2 (en) | 2001-03-30 | 2007-09-18 | Intel Corporation | Method and apparatus for constructing host processor soft devices independent of the host processor operating system |
| US7096497B2 (en) | 2001-03-30 | 2006-08-22 | Intel Corporation | File checking using remote signing authority via a network |
| US6862641B1 (en) * | 2001-05-10 | 2005-03-01 | Advanced Micro Devices, Inc. | Interruptable and re-enterable system management mode programming code |
| TW515959B (en) * | 2001-05-10 | 2003-01-01 | Via Tech Inc | Method for memory data access by system management interrupt and computer system thereof |
| US7191440B2 (en) | 2001-08-15 | 2007-03-13 | Intel Corporation | Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor |
| US7024555B2 (en) | 2001-11-01 | 2006-04-04 | Intel Corporation | Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment |
| US7103771B2 (en) | 2001-12-17 | 2006-09-05 | Intel Corporation | Connecting a virtual token to a physical token |
| US7308576B2 (en) | 2001-12-31 | 2007-12-11 | Intel Corporation | Authenticated code module |
| US20040078681A1 (en) * | 2002-01-24 | 2004-04-22 | Nick Ramirez | Architecture for high availability using system management mode driven monitoring and communications |
| US7480806B2 (en) | 2002-02-22 | 2009-01-20 | Intel Corporation | Multi-token seal and unseal |
| US7124273B2 (en) | 2002-02-25 | 2006-10-17 | Intel Corporation | Method and apparatus for translating guest physical addresses in a virtual machine environment |
| US7069442B2 (en) | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
| US7028149B2 (en) | 2002-03-29 | 2006-04-11 | Intel Corporation | System and method for resetting a platform configuration register |
| US7058807B2 (en) | 2002-04-15 | 2006-06-06 | Intel Corporation | Validation of inclusion of a platform within a data center |
| US7076669B2 (en) | 2002-04-15 | 2006-07-11 | Intel Corporation | Method and apparatus for communicating securely with a token |
| US7127548B2 (en) | 2002-04-16 | 2006-10-24 | Intel Corporation | Control register access virtualization performance improvement in the virtual-machine architecture |
| US7082507B1 (en) | 2002-04-18 | 2006-07-25 | Advanced Micro Devices, Inc. | Method of controlling access to an address translation data structure of a computer system |
| US7130977B1 (en) * | 2002-04-18 | 2006-10-31 | Advanced Micro Devices, Inc. | Controlling access to a control register of a microprocessor |
| US7043616B1 (en) | 2002-04-18 | 2006-05-09 | Advanced Micro Devices, Inc. | Method of controlling access to model specific registers of a microprocessor |
| US7401358B1 (en) | 2002-04-18 | 2008-07-15 | Advanced Micro Devices, Inc. | Method of controlling access to control registers of a microprocessor |
| US7130951B1 (en) * | 2002-04-18 | 2006-10-31 | Advanced Micro Devices, Inc. | Method for selectively disabling interrupts on a secure execution mode-capable processor |
| US7165135B1 (en) | 2002-04-18 | 2007-01-16 | Advanced Micro Devices, Inc. | Method and apparatus for controlling interrupts in a secure execution mode-capable processor |
| US7603551B2 (en) * | 2003-04-18 | 2009-10-13 | Advanced Micro Devices, Inc. | Initialization of a computer system including a secure execution mode-capable processor |
| US7139890B2 (en) | 2002-04-30 | 2006-11-21 | Intel Corporation | Methods and arrangements to interface memory |
| US20030229794A1 (en) * | 2002-06-07 | 2003-12-11 | Sutton James A. | System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container |
| US7142674B2 (en) | 2002-06-18 | 2006-11-28 | Intel Corporation | Method of confirming a secure key exchange |
| US7392415B2 (en) | 2002-06-26 | 2008-06-24 | Intel Corporation | Sleep protection |
| US20040003321A1 (en) * | 2002-06-27 | 2004-01-01 | Glew Andrew F. | Initialization of protected system |
| US6996748B2 (en) | 2002-06-29 | 2006-02-07 | Intel Corporation | Handling faults associated with operation of guest software in the virtual-machine architecture |
| US7124327B2 (en) | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
| US7165181B2 (en) | 2002-11-27 | 2007-01-16 | Intel Corporation | System and method for establishing trust without revealing identity |
| US7073042B2 (en) | 2002-12-12 | 2006-07-04 | Intel Corporation | Reclaiming existing fields in address translation data structures to extend control over memory accesses |
| US7318235B2 (en) | 2002-12-16 | 2008-01-08 | Intel Corporation | Attestation using both fixed token and portable token |
| US7900017B2 (en) | 2002-12-27 | 2011-03-01 | Intel Corporation | Mechanism for remapping post virtual machine memory pages |
| US7076802B2 (en) | 2002-12-31 | 2006-07-11 | Intel Corporation | Trusted system clock |
| US7146477B1 (en) | 2003-04-18 | 2006-12-05 | Advanced Micro Devices, Inc. | Mechanism for selectively blocking peripheral device accesses to system memory |
| US20040268337A1 (en) * | 2003-06-30 | 2004-12-30 | Culter Bradley G. | Allowing firmware to borrow a processor |
| US7210009B2 (en) * | 2003-09-04 | 2007-04-24 | Advanced Micro Devices, Inc. | Computer system employing a trusted execution environment including a memory controller configured to clear memory |
| US7424709B2 (en) | 2003-09-15 | 2008-09-09 | Intel Corporation | Use of multiple virtual machine monitors to handle privileged events |
| US7287197B2 (en) | 2003-09-15 | 2007-10-23 | Intel Corporation | Vectoring an interrupt or exception upon resuming operation of a virtual machine |
| US8079034B2 (en) | 2003-09-15 | 2011-12-13 | Intel Corporation | Optimizing processor-managed resources based on the behavior of a virtual machine monitor |
| US7610611B2 (en) | 2003-09-19 | 2009-10-27 | Moran Douglas R | Prioritized address decoder |
| US7177967B2 (en) | 2003-09-30 | 2007-02-13 | Intel Corporation | Chipset support for managing hardware interrupts in a virtual machine system |
| US20050080934A1 (en) | 2003-09-30 | 2005-04-14 | Cota-Robles Erik C. | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
| US7366305B2 (en) | 2003-09-30 | 2008-04-29 | Intel Corporation | Platform and method for establishing trust without revealing identity |
| US7237051B2 (en) | 2003-09-30 | 2007-06-26 | Intel Corporation | Mechanism to control hardware interrupt acknowledgement in a virtual machine system |
| US7636844B2 (en) | 2003-11-17 | 2009-12-22 | Intel Corporation | Method and system to provide a trusted channel within a computer system for a SIM device |
| US8156343B2 (en) | 2003-11-26 | 2012-04-10 | Intel Corporation | Accessing private data about the state of a data processing machine from storage that is publicly accessible |
| US8037314B2 (en) | 2003-12-22 | 2011-10-11 | Intel Corporation | Replacing blinded authentication authority |
| US7356735B2 (en) | 2004-03-30 | 2008-04-08 | Intel Corporation | Providing support for single stepping a virtual machine in a virtual machine environment |
| US7620949B2 (en) | 2004-03-31 | 2009-11-17 | Intel Corporation | Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment |
| US7917740B1 (en) * | 2004-05-11 | 2011-03-29 | Advanced Micro Devices, Inc. | Virtualization assist for legacy x86 floating point exception handling |
| US7490070B2 (en) | 2004-06-10 | 2009-02-10 | Intel Corporation | Apparatus and method for proving the denial of a direct proof signature |
| US7305592B2 (en) | 2004-06-30 | 2007-12-04 | Intel Corporation | Support for nested fault in a virtual machine environment |
| US8924728B2 (en) | 2004-11-30 | 2014-12-30 | Intel Corporation | Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information |
| US8533777B2 (en) | 2004-12-29 | 2013-09-10 | Intel Corporation | Mechanism to determine trust of out-of-band management agents |
| US7395405B2 (en) | 2005-01-28 | 2008-07-01 | Intel Corporation | Method and apparatus for supporting address translation in a virtual machine environment |
| US7487222B2 (en) * | 2005-03-29 | 2009-02-03 | International Business Machines Corporation | System management architecture for multi-node computer system |
| RU2294010C1 (ru) * | 2005-09-05 | 2007-02-20 | Павел Михайлович Шестаков | Способ обработки цифровых данных |
| US7809957B2 (en) | 2005-09-29 | 2010-10-05 | Intel Corporation | Trusted platform module for generating sealed data |
| US8959339B2 (en) | 2005-12-23 | 2015-02-17 | Texas Instruments Incorporated | Method and system for preventing unauthorized processor mode switches |
| US8661265B1 (en) | 2006-06-29 | 2014-02-25 | David Dunn | Processor modifications to increase computer system security |
| US7925815B1 (en) * | 2006-06-29 | 2011-04-12 | David Dunn | Modifications to increase computer system security |
| US9280659B2 (en) * | 2006-12-29 | 2016-03-08 | Intel Corporation | Methods and apparatus for remeasuring a virtual machine monitor |
| CN101246537B (zh) * | 2008-03-28 | 2010-06-02 | 上海中标软件有限公司 | 一种基于可信多任务操作系统实现可信计算的方法 |
| CN102467644B (zh) * | 2010-11-17 | 2014-09-03 | 英业达股份有限公司 | 系统管理中断的执行方法 |
| US10420058B2 (en) * | 2015-11-05 | 2019-09-17 | Verizon Patent And Licensing Inc. | Data-driven sensor configuration and information processing |
| US10698713B2 (en) * | 2016-11-29 | 2020-06-30 | Red Hat Israel, Ltd. | Virtual processor state switching virtual machine functions |
| US11138072B2 (en) * | 2017-12-22 | 2021-10-05 | Intel Corporation | Protected runtime mode |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US35480A (en) * | 1862-06-03 | Improvement in axes | ||
| US4926322A (en) * | 1987-08-03 | 1990-05-15 | Compag Computer Corporation | Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management |
| US5280599A (en) * | 1989-01-09 | 1994-01-18 | Kabushiki Kaisha Toshiba | Computer system with memory expansion function and expansion memory setting method |
| US5283889A (en) * | 1989-12-29 | 1994-02-01 | Zenith Data Systems Corporation | Hardware based interface for mode switching to access memory above one megabyte |
| US5175853A (en) * | 1990-10-09 | 1992-12-29 | Intel Corporation | Transparent system interrupt |
| US5255379A (en) * | 1990-12-28 | 1993-10-19 | Sun Microsystems, Inc. | Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor |
| US5274834A (en) * | 1991-08-30 | 1993-12-28 | Intel Corporation | Transparent system interrupts with integrated extended memory addressing |
| US5671422A (en) * | 1994-11-14 | 1997-09-23 | Intel Corporation | Method and apparatus for switching between the modes of a processor |
| US5544344A (en) * | 1994-12-06 | 1996-08-06 | Digital Equipment Corporation | Apparatus for caching smram in an intel processor based computer system employing system management mode |
| US5638532A (en) * | 1994-12-06 | 1997-06-10 | Digital Equipment Corporation | Apparatus and method for accessing SMRAM in a computer based upon a processor employing system management mode |
| US5644755A (en) * | 1995-02-24 | 1997-07-01 | Compaq Computer Corporation | Processor with virtual system mode |
| US5764999A (en) * | 1995-10-10 | 1998-06-09 | Cyrix Corporation | Enhanced system management mode with nesting |
| US5784625A (en) * | 1996-03-19 | 1998-07-21 | Vlsi Technology, Inc. | Method and apparatus for effecting a soft reset in a processor device without requiring a dedicated external pin |
-
1997
- 1997-10-07 US US08/946,416 patent/US5987604A/en not_active Expired - Lifetime
-
1998
- 1998-10-07 AU AU97888/98A patent/AU9788898A/en not_active Abandoned
- 1998-10-07 GB GB0008230A patent/GB2345564B/en not_active Expired - Fee Related
- 1998-10-07 TW TW087116652A patent/TW405097B/zh not_active IP Right Cessation
- 1998-10-07 JP JP2000515232A patent/JP4434482B2/ja not_active Expired - Fee Related
- 1998-10-07 WO PCT/US1998/021088 patent/WO1999018511A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| GB2345564A (en) | 2000-07-12 |
| GB0008230D0 (en) | 2000-05-24 |
| WO1999018511A1 (en) | 1999-04-15 |
| TW405097B (en) | 2000-09-11 |
| GB2345564B (en) | 2002-07-31 |
| JP2001519566A (ja) | 2001-10-23 |
| US5987604A (en) | 1999-11-16 |
| AU9788898A (en) | 1999-04-27 |
| WO1999018511A9 (en) | 1999-07-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4434482B2 (ja) | 仮想モードでのシステム管理モードサービスを実行する方法及び装置 | |
| US5659798A (en) | Method and system for initiating and loading DMA controller registers by using user-level programs | |
| US4779187A (en) | Method and operating system for executing programs in a multi-mode microprocessor | |
| US6219774B1 (en) | Address translation with/bypassing intermediate segmentation translation to accommodate two different instruction set architecture | |
| US7412702B1 (en) | System software displacement in a virtual computer system | |
| US4825358A (en) | Method and operating system for executing programs in a multi-mode microprocessor | |
| KR100624668B1 (ko) | 가상 머신 모니터와 게스트 운영 체제 간의 주소 공간 충돌을 해결하는 방법 | |
| US5561788A (en) | Method and system for executing programs using memory wrap in a multi-mode microprocessor | |
| US6408386B1 (en) | Method and apparatus for providing event handling functionality in a computer system | |
| US5459869A (en) | Method for providing protected mode services for device drivers and other resident software | |
| US6230259B1 (en) | Transparent extended state save | |
| EP0794492A2 (en) | Distributed execution of mode mismatched commands in multiprocessor computer systems | |
| US20020065989A1 (en) | Master/slave processing system with shared translation lookaside buffer | |
| US6694401B2 (en) | Method and apparatus for executing real-mode interrupts from within extended SMRAM handler | |
| JPH0619798A (ja) | セレクタの値のロードを回避する方法とシステム | |
| US6742103B2 (en) | Processing system with shared translation lookaside buffer | |
| JP2004342099A (ja) | アドレスに基づいた処理制約のブロッキング | |
| US6775734B2 (en) | Memory access using system management interrupt and associated computer system | |
| JP2004258840A (ja) | 仮想化されたi/oデバイスをもつ計算機システム | |
| US6564283B1 (en) | Data processing system for expanded addresses | |
| US20040122834A1 (en) | Apparatus and method for switching mode in a computer system | |
| US5555423A (en) | Multi-mode microprocessor having a pin for resetting its register without purging its cache | |
| EP0575171B1 (en) | Enhanced system management method and apparatus | |
| US20020156981A1 (en) | Cacheable above one megabyte system management random access memory | |
| CN118069403B (zh) | 一种异常指令的处理方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050929 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080808 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080909 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20081202 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20081209 |
|
| A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20090306 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090915 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091127 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20091215 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20091222 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130108 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130108 Year of fee payment: 3 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140108 Year of fee payment: 4 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140108 Year of fee payment: 4 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |