説明

プロセッサ

【課題】マイクロプロセッサシステムにおけるセキュアな動作の間に、システム管理モード(SMM)コードの実行を可能にするためのシステム及び方法について開示している。
【解決手段】一実施形態において、システム管理割り込み(SMI)は、セキュアな仮想マシンモニタ(SVMM)におけるハンドラに、先ず、命令されることが可能である。SMIは、次いで、SVMMのセキュリティ制御の下にある仮想マシン(VM)において位置付けられたSMMコードに再命令されることが可能である。この再命令は、プロセッサにおけるシステム管理(SM)ベースのレジスタから読み出す及び書き込むことを可能にすることにより達成されることが可能である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の開示は、一般に、マイクロプロセッサに関し、更に詳細には、高信頼又は安全環境において機能することが可能であるマイクロプロセッサシステムに関する。
【背景技術】
【0002】
プロセッサは、システム動作の即時要求による幾つかのプロセッサの動作モードにおいて動作することが可能である。一般に、プロセッサは、スーパバイザモード、ユーザモード及び、あるときは特定目的モードを有することが可能である。スーパバイザモードはオペレーティングシステムの実行を支援することが可能であり、特権命令を含む殆どの命令の実行を可能にする。異なるアドレス空間及び周辺装置へのアクセスを特権モードで与えることが可能である。ユーザモードは、特権モードに照らして、被特権命令に制限されることが可能であり、それ故、ユーザコードは、システムの機能性を混乱させることはない。
【0003】
商業的にリリースされたソフトウェアは、特定のオリジナルの装置製造業者の(OEMの)ハードウェアのパッケージソフトに完全に適応しない場合がしばしばある。仕様についての誤解又は実行エラーのために、ハードウェアにより支援されない又は見込まれない方法で、ソフトウェアがハードウェアにアクセスするように試みる状態が存在し得る。簡単な例としては、ソフトウェアの問題がアドレスxのレジスタに値を置く一方、ハードウェアにおける実際のレジスタはアドレスx+yにあることがあり得る。これは、システムの例外の原因となり得る。
【0004】
そのような状態に対処するために、プロセッサは、低レベルのパッチを実行する目的で、特権レベルに依存しない方法で、又は特権レベルにトランスペアレント又は擬似トランスペアレントな方法で動作する能力を有する動作モードを支援するようにデザインされることが可能である。本出願の目的のために、そのようなモードを、“サブオペレーティングシステムモード”と定義することが可能である。1つのそのようなモードは、インテル(登録商標)のペンティアム(登録商標)プロセッサのファミリ及び互換性のあるプロセッサのシステム管理モード(SMM:System Management Mode)である。他のサブオペレーティングシステムモードは、MIPS Technologies(登録商標)MIPS32(登録商標)又はMIPS64(登録商標)アーキテクチャプロセッサ、IBM(登録商標)PowerPC(登録商標)アーキテクチャプロセッサ、SPARC International(登録商標)SPARC(登録商標)アーキテクチャプロセッサ、又は他の多くのプロセッサにおいて存在し得る。サブオペレーティングシステムの存在は、パワーダウンモードへの移行の支援のような付加的なシステム
の利益を有することが可能である。上記で概観したようなソフトウェアとハードウェアのミスマッチに対処するために、既存のサブオペレーティングシステムモードの実行は、特権制限又はアドレスマッピング制限を有しない。サブオペレーティングシステムモードは、専用サブオペレーティングシステムモードの割り込みにより呼び出されることが可能であり、ときどき、システムファームウェア又はシステムハードウェアにより生成されることが可能である。この専用サブオペレーティングシステムモードの割り込みは、通常、そのモードへのエントリを必要とした緊急性に応答するために、マスク不可能であるようにデザインされている。
【0005】
サブオペレーティングシステムモードは、一般に、次のような主要機構を有することが可能である。そのモードに入る唯一の方法は、特定のサブオペレーティングシステムモードの割り込みによるものである。SMMの場合、専用サブオペレーティングシステムモードの割り込みはシステム管理の割り込み(SMI:System Management Interrupt)と呼ばれている。プロセッサは、別個のアドレス空間においてモードのコードを実行することが可能である。例えば、そのモードがSMMである場合、別個のアドレス空間は、SMRAM(System Management Random−Access−Memory)へのアクセスを可能にし、SMRAMは他のオペレーティングモードにアクセス不可能にされる。そのモードに入るとき、プロセッサは、別個のアドレス空間において割り込みされたプログラム又はタスクのコンテキストを保存する。例えば、SMMにおいて、コンテキストはSMRAMに保存される。そのモードにおける実行の間に、普通の割り込みは無効になる。最終的に、そのモードは、そのモードにおいて実行する間にのみ実行されることが可能であるレジューム命令により終了されることが可能である。
【0006】
ローカルマイクロコンピュータ又はリモートマイクロコンピュータにおいて実行される金融取引及び個人取引の著しい増加は、“高信頼性の”又は“セキュアな”マイクロプロセッサ環境の確立のための推進力を提供している。これらの環境が解決しようとしている問題は、プライバシーの損失、並びにデータへの悪影響又は悪用である。ユーザは、彼らのプライベートなデータが公になることを望んでいない。ユーザは又、彼らのデータが改竄されたり不適切な取引で使用されたりすることを望まない。このような例は、医療記録の国内における公開、又はオンラインバンク又は他のデポジトリーバンクからの資金の電子盗難を含む。同様に、コンテンツプロバイダは、デジタルコンテンツ(例えば、音楽、他の音声、映像、又は一般的な他のタイプのデータ)が認証なしにコピーされることから保護しようと努めている。
【0007】
SMMのような、サブオペレーティングシステムモードの在り方は、セキュア及び高信頼性システムのデザイナーにとってのデザインの課題である。そのようなサブオペレーティングシステムモードが特権制限又はアドレスマッピング制限を有していないという事実は、セキュア又は高信頼性システムアーキテクチャとは相容れないものである。そして、このような特権制限又はアドレスマッピング制限の不足は、これらが通常マスク不可能であるようにデザインされているため、しばしば、モードの専用の割り込み等のマスキングを試みることによって回避されるようにすることはできない。
【発明の開示】
【発明が解決しようとする課題】
【0008】
以下の説明は、マイクロプロセッサシステムにおける高信頼性又はセキュアな環境における特定のシステム管理モードのコードの実行を可能にするための技術に関するものである。以下の説明においては、例えば、論理の実施、ソフトウェアモジュール割り当て、暗号化技術、バスシグナリング技術及びオペレーションの詳細等の多くの仕様の詳細について、本発明の全体を通してのよりよい理解を提供するように説明している。しかしながら、本発明はそのような特定の詳細を用いないで実行されることが可能であることが、当業者には理解されるであろう。他の例においては、制御構成、ゲートレベルの回路及び全部のソフトウェア命令シーケンスについては、本発明を理解し難くしないように、詳細を示すことはしない。盛り込んでいる説明を用いて、当業者は、過度の実験をすることなく、適切な機能性を実施することが可能となるであろう。本発明は、マイクロプロセッサシステムの形式で開示している。しかしながら、本発明は、例えば、デジタル信号プロセッサ、マイクロコンピュータ又はメインフレームコンピュータのような他の方式のプロセッサにおいて実行されることが可能である。
【発明を実施するための最良の形態】
【0009】
セキュアな及び高信頼性の環境において制限されたサブオペレーティングシステムモードコードを可能にするために、そのサブオペレーティングシステムモードの割り込みは、システムリソースへの仮想マシンアクセスを制御する高信頼性コードにおいてハンドラに先ず命令されることが可能である。そのハンドラへの命令は、そのようなサブオペレーティングシステムモードの割り込みを行うために必要なコードの位置を含むプロセッサにおいて割り込みサービスレジスタに高信頼性コードが書き込む及びそれから読み出すことを可能にすることにより、達成されることが可能である(割り込みサービスレジスタは、一般に、割り込みの受信において実行される必要があるそのコードを決定するために用いられるレジスタとして定義される)。サブオペレーティングシステムモードの割り込みは、次いで、割り込みサービスに対して、上記の高信頼性モードのセキュリティ制御の下にある他の仮想マシンに位置付けられたサブオペレーティングシステムモードのコードに対して再命令される。代替として、マイクロプロセッサの仮想化アーキテクチャは、高信頼性コードが確立されたとき、サブオペレーティングシステムモードの割り込みは、もはや、標準的な割り込みサービスレジスタを用いることはないが、それに代えて、仮想化アーキテクチャと整合性がとれた高信頼性コードへの移行をもたらす。
【0010】
サブオペレーティングシステムモードがシステム管理モード(SMM)である例示としての場合、セキュアな又は高信頼性の環境におけるSMMコードの実行は、システム管理の割り込み(SMI)がセキュアな仮想マシンモニタ(SVMM:Secured Virtual Machine Monitor)におけるハンドラに命令されるようにすることにより開始されることが可能である。このハンドラへの命令は、SVMMがプロセッサ(PSMBASE)におけるシステム管理ベース(SMBASE)のレジスタに書き込み及びそれから読み出すことを可能にすることにより、達成されることが可能である。SMIは、次いで、SVMMのセキュリティ制御の下にある仮想マシン(VM)に位置付けられたSMMコードに再命令される。代替として、プロセッサの仮想化アーキテクチャは、PSMBASEレジスタの使用を無効にし、直接、SVMMへのSMI全ての再命令をもたらすことが可能である。
【0011】
一実施形態において、SMMコードは、メモリにおける保護されたページを除いて、システムリソース全てへのアクセス、及びこの保護を維持する関連システム制御を許可されることが可能である。これを達成するために、セキュアにされた動作の初期設定の後、SMIは、先ず、SVMMにおいてハンドラに対して命令されることが可能である。このハンドラは、SMMモードに対して適切な仮想マシン(VM)コンテナを確立し、そのコードにSMIを再命令することが可能である。VMコンテナにおいてSMMコードを実行することにより、SMMコードは、SVMMが保護されたとみなされた、メモリのような種々のシステムリソースにアクセスしないようにされることが可能である。一実施形態においては、ここで、VMの要求を確認するために、SMMコードが書き込まれることが可能である。1つのそのような変化の確認は、SMMコードがフラット保護モードか又は一部の他のページメモリアクセスモードのどちらかにおいて書き込まれることである。
【0012】
ここで、図1を参照するに、システム管理ランダムアクセスメモリ(SMRAM:System Management Random−Access Memory)におけるシステム管理モード(SMM)コードのメモリマッピングが一実施形態において示されている。標準的システムの初期設定の間、システムランダムアクセスメモリ(RAM)110のセクションは、SMMコードによる独占使用のために除外される。この除外されたセクションは、システム管理RAM(SMRAM)と呼ばれる。SMRAMにおける特定のメモリ位置は、チップセット又はプロセッサにおける割り込みサービスレジスタにより指し示されることが可能であり、そのチップセット又はプロセッサは、一実施形態において、システム管理ベースの(SMBASE)レジスタと呼ばれる。
【0013】
チップセットSMBASEレジスタのコンテンツCSMBASEは、SMRAMの境界を規定することが可能である。例えば、SMRAMは、CSMBASE120とCSMBASE+FFFFhex132との間の空間を占めることが可能である。他の実施形態においては、同時にSMMコードを実行する2つ又はそれ以上のプロセッサを支援するために、各々のプロセッサはそれ自体の専用SMRAM空間を有することが可能である。プロセッサのSMBASEレジスタコンテンツPSMBASEは、SMRAMにおける状態保存位置及びコードエントリポイントを規定することが可能である。例えば、SMRAMにおいて、標準的コードエントリポイントは、CSMBASE+8000hex124に位置付けられることが可能である。CSMBASEの値は、各々のプロセッサのSMBASEレジスタに対するシステム初期設定において書き込まれることが可能であり、これにより、各々のプロセッサはSMIの受信においてSMMコードエントリポイントに進むことが可能である。SMMコードへのエントリに先立ち、プロセッサは、一実施形態において、アドレスPSMBASE+FE00hex128とSMBASE+FFFFhex132の位置におけるSMRAMの端部との間の状態保存領域に状態データを記憶することが可能である。他の実施形態においては、同時にSMMコードを実行する2つ又はそれ以上のプロセッサを支援するために、各々のプロセッサのSMBASEレジスタは、異なるコードエントリポイント及び状態データを記憶するための位置を可能にする、PSMBASEの異なる値を含むことが可能である。
【0014】
状態データは、制御レジスタの値、フラッグ、自動中断再起動フィールド、入力/出力(I/O)命令再起動フィールド及びSMMリビジョン識別子を含むことが可能である。SMRAMにおける位置の一部は、SMIハンドラにより修正されることが可能である。SMMコードの実行の完了に際して、オリジナルプログラムは、プロセッサがレジューム(RSM)命令を実行するとき、再エントリされることが可能である。この既存のRSM命令はSMM命令においてのみを発行されることが可能であり、SMRAMにおいて予め記憶された状態値をもとに戻す。この既存のSMMデザインは当該技術分野において周知である。
【0015】
ここで、図2を参照するに、本発明の一実施形態に従って、例示としての高信頼性又はセキュアなソフトウェア環境を示している。図2の実施形態においては、高信頼性の及び信頼性のないソフトウェアが同時に位置付けられており、それらを単一のコンピュータシステムにおいて同時に実行することが可能である。SVMM250は、信頼性の内オペレーティングシステム240(又は、複数の信頼性のない仮想マシンが実行される場合の複数のオペレーティングシステム)及び信頼性のない装置210乃至230からハードウェアしロース280への直接アクセスを選択的に可能にする又は回避する。これに関連して、“信頼性のない”は、オペレーティングシステム又はアプリケーションが故意に不正な挙動を示すが、相互作用するコードの種類及びサイズは、ソフトウェアが所望のように挙動し、その実行に干渉する他の外部からのコード又はウィルスが存在しないことを確実に実証することを非現実的にする。代表的な実施形態においては、信頼性のないコードは、標準的なオペレーティングシステム及び今日のパーソナルコンピュータにおいて見られるアプリケーションから構成されることが可能である。
【0016】
SVMM250は又、1つ又はそれ以上の高信頼性又はセキュアなカーネル260及び1つ又はそれ以上の高信頼性アプリケーション270からハードウェアリソース280への直接アクセスを選択的に可能にする又は回避する。そのような高信頼性の又はセキュアなカーネル260及び高信頼性のアプリケーション270は、それにおいて高信頼性分析を実行する能力において支援するようにサイズ及び機能性を制限されることが可能である。高信頼性のアプリケーション270を、セキュアな環境において実行可能である、いずれのソフトウェアコード、プログラム、ルーチン又はルーチンの集合とすることが可能である。このように、高信頼性のアプリケーション270は、種々のアプリケーション又はコードシーケンスであることが可能であり、又、Java(登録商標)アプレットのような比較的小さいアプリケーションであることが可能である。
【0017】
システムリソース保護又は特権を変えることが可能であるオペレーティングシステム240又はカーネル260により標準的に実行される命令又は動作は、SVMM250により捕捉され、選択的に可能にされ、部分的に可能にされ、又は拒否される。例として、代表的な実施形態において、オペレーティングシステム240又はカーネル260を動作させることにより標準的に実行されるプロセッサのページテーブルを変化させる命令は、それに代えて、SVMM250により捕捉される。そのSVMM250は、要求が仮想マシンの領域の外側のページ特権を変化させないように試みることを確実にする。このシステムを視認化する1つの方法は、オペレーティングシステム240、カーネル260及びSVMM250が、SVMM250仮想マシンにおいて実行するカーネル260仮想マシン及びオペレーティングシステム240仮想マシンを有する、全てが仮想マシンであることである。このようにして、仮想マシンの階層が構成される。ここでは、一実施形態において、仮想マシンは、システムのリソース全ての独占的な制御を有する特徴を各々のユーザに与えるいずれの複数のユーザの共有リソースのオペレーティングシステムとして定義されることが可能であり、又、仮想マシンは又、基本となる制御プログラムにより次に管理されるオペレーティングシステムと定義されることが可能である。
【0018】
図3を参照するに、図2のセキュアなソフトウェア環境を支援するために適応されたマイクロプロセッサ300の一実施形態を示している。CPU A310、CPU B314、CPU C318及びCPU D322は、特定命令の実行を支援するために論理回路又は付加マイクロコードから構成されることが可能である。一実施形態において、プロセッサは、本発明の実施形態に従って特定の特別な修正を有するIntel(登録商標)のPentium(登録商標)クラスのマイクロプロセッサとすることが可能である。これらの特別な命令は、プロセッサにおけるSVMM250動作の正確な同期を可能にするシステムバス320における特別なバスメッセージの発行を支援することが可能である。同様に、シップセット330は、システムバス320において、上記の特別なサイクルを支援することが可能である。物理プロセッサの数は、特定の実施形態の実行の再に変化することが可能である。
【0019】
図3の実施形態においては、4つのプロセッサ、CPU A310、CPU B314、CPU C318及びCPU D322が、4つの別個のハードウェアエンティティとして示されている。他の実施形態においては、プロセッサの数は異なることが可能である。実際には、プロセッサは、別個のスレッドであって、各々が物理プロセッサの一において実行する、スレッドにより置き換えられる。後者の場合、これらのスレッドは、付加物理プロセッサの多くの属性を処理する。複数の物理プロセッサ及びプロセッサに関する複数のスレッドのいずれの混合を用いて検討するように総称表現を有するために、表現“論理プロセッサ”を、物理プロセッサか又は物理プロセッサの1つにおいて動作するスレッドを表すために用いることが可能である。このようにして、1つの単一のスレッドプロセッサは論理プロセッサであるとみなすことが可能であり、複数のスレッド又は複数のコアプロセッサは複数の論理プロセッサとみなされることが可能である。
【0020】
一実施形態において、プロセッサへの修正は、レジスタの挙動への変化及び新しい又は修正された命令を含むことが可能である。例えば、一実施形態において、CPU C318は、新しい命令のセキュアなエンター(SENTER)を含むことが可能である。SENTER324命令は、実行に際して、上記の図2において示したように、セキュアな又は高信頼性の動作の初期設定を可能にする。SENTER324は、複数の論理プロセッサがセキュアな又は高信頼性の動作へのそれらのエントリを同期することを可能にする。一実施形態において、SENTER324は又、セキュアな又は高信頼性のSMM動作を支援するために特定の状況においてCPU C318のPSMBASEレジスタ316への書き込みを可能にする。
【0021】
一実施形態において、CPU C318は又、修正されたレジューム(RSM)326命令を含むことが可能である。修正されたRSM326は、セキュアな又は高信頼性の動作を支援するSMMからのリターンを可能にする。従来のRSM命令はSMMからのみ実行されることが可能である。修正されたRSM326は、標準的なページモードから実行されることが可能である。有効にされたVM拡張子と共に呼び出されるとき、修正されたRSM326命令は、SMIに対するSVMMに戻る、VMexitと呼ばれる、特別なシステムコールを実行することが可能である。
【0022】
チップセット330は、システムバス320においてCPUからもたらされた要求を書き込む又はそれを読み出すために役立つ。メモリ334におけるSMRAMの配分を、CSMBASEの値を含むチップセットSMBASEレジスタ331により容易にすることが可能である。チップセット330は、高性能グラフィクポート(AGP)336のような専用の入力/出力(I/O)チャネルに接続されることが可能である。チップセット330は、CPU A310、CPU B314、CPU C318及びCPU D322から、及び付加的にはI/O装置から、物理メモリ334におけるメモリのページへのアクセスを制御することが可能である。そのような装置は、固定媒体344又はリムーバブル媒体348のような大容量記憶装置を含むことが可能である。固定媒体344又はリムーバブル媒体348は、磁気ディスク、磁気テープ、磁気ディスケット、光磁気ドライブ、CD−ROM、DVD−ROM、フラッシュメモリカード、又は他の方式の大容量記憶装置とすることが可能である。固定媒体344又はリムーバブル媒体348は、周辺装置の構成要素の相互接続(PCI)バス346により、若しくは、代替として、ユニバーサルシリアルバス(USB)342,統合制御器エレクトロニクス(IDE)バス(図示せず)又は小型コンピュータシステムの相互接続(SCSI)バス(図示せず)により、チップセット330に接続されることが可能である。
【0023】
SVMM364は、メモリ334における特定のページへのVMのアクセスを可能にする又は拒否する。VMがアクセスを拒否されたメモリのページは“ロックされた”ページと呼ばれる一方、VMがアクセスを可能にされたページは“ロックされていない”ページと呼ばれる。ロックされたメモリページ360において、セキュアなSMM動作を支援するためにSVMM364におけるモジュール及びSVMM364を位置付けることが可能である。一実施形態において、そのようなモジュールは、SVMM SMMハンドラ366と、仮想マシンエグジット(VMexit)/仮想マシンコール(VMcall)ハンドラ368を含むことが可能である。他の実施形態においては、SVMM SMMハンドラ366の機能及びVMexit/VMcallハンドラ368の機能は結合される又は他のモジュールの間に分配されることが可能である。他のメモリのページは、ロックされないメモリページ362のように、ロックされないまま保たれることが可能である。標準的なオペレーティングシステム372はロックされないメモリページ362に位置付けられることが可能である。又、MMS仮想マシン(SMM VM)370はロックされないメモリページ362にあることが可能である。SMM VM370は標準的なSMMコードに類似しているが、仮想マシンコンテナにおいて動作するように修正されたソフトウェアコードを含むことが可能である。そのようなSMM VM370における修正は、標準的なSMMではなくページモードにおける実行のために調整されたコードを含むことが可能である。
【0024】
単一の分離された集積回路において実行されるように、チップセット330のメモリ制御器及びI/O装置の制御機能を、図3の実施形態に示している。代替の実施形態においては、分離されたメモリ制御器が集積された回路は、一般に、チップセット330について上で説明したメモリ制御機能を実行することが可能である。同様に、分離されたI/O装置の制御器が集積された回路は、チップセット330について上で説明したI/O装置の制御機能を実行することが可能である。他の実施形態において、チップセット330のメモリ制御機能は、幾つかのCPUが特定容量の物理メモリへの直接アクセスをそれぞれ有することを可能にする、CPU集積回路における回路構成において実施されることが可能である。そのような実施形態において、チップセット330のメモリ制御機能は、幾つかのCPU集積回路の間で分割されることが可能であり、又は、複数のプロセッサに対して、単一のダイにおいて含まれることが可能である。
【0025】
ここで、図4を参照するに、本発明の一実施形態に従って、仮想マシン(VM)コンテナにおいて動作するシステム管理コード(SMM)を示している。図4の実施形態において、SVMM450は、セキュアな又は高信頼性のSMM動作を支援するために2つの付加モジュールを有している。SVMM SMMハンドラ452は、SENTER命令の実行に応答してSMM VM490におけるSMMコードを確立する。VMexit/VMcallハンドラ454は、VMコンテナにおけるSMM VM490の意図的な低い特権レベルのために、SMM VM490へのエントリ及びそれからのエグジットを処理する。一部の実施形態においては、SVMM SMMハンドラ452及びVMexit/VMcallハンドラ454は同じソフトウェアモジュールとすることが可能である。
【0026】
SVMM SMMハンドラ452は幾つかの機能を実行することが可能である。セキュアな又は高信頼性の動作への移行の間に、プロセッサによるSENTERコマンドの実行に従って、SVMM SMMハンドラ452は、仮想マシンコンテナにおけるSMM VM 490コードをロードし且つ初期設定する。一部の実施形態においては、SVMM SMMハンドラ452は、次いで、システムにおける各々のプロセッサの修正されたSMBASEレジスタに対して、それ自体におけるエントリ位置を書き込む。このエントリ位置は、SMIがSVMM SMMハンドラ452に対して、先ず、命令されることを可能にする。これは、システム管理の割り込みに応答してVMexit/VMcallハンドラ454を直接呼び出す他の実施形態に対しては必要ない。これらの実施形態に対して、SVMM SMMハンドラ452及びVMexit/VMcallハンドラ454は1つのソフトウェアモジュールに結合される。SVMM SMMハンドラ452は又、SMM動作へのエントリの際に保存される必要がある状態データを記憶するために、ロックされたメモリページにおいて空間を構築する。この状態データの例については、図1に関連して上で説明している。ロックされたメモリページにこの状態データを置くことにより、状態データの無許可の開示又は操作を回避する。
【0027】
VMexit/VMcallハンドラ454は幾つかの機能を実行することが可能である。VMexit/VMcallハンドラ454は、最初のエントリに続いて、SMM VM490にエントリし、それからエグジットすることが可能である。VMexit/VMcallハンドラ454は又、SMM VM490がロックされたメモリページから読み出すように又はそれから書き込むように試みるときにもたらされる例外を処理することが可能である。VMexit/VMcallハンドラ454の一部は、特定のこれらのロックされたメモリページからの読み出し又はそれからの書き込みが状況に依存して進めるようにされる必要があるかどうかを決定することが可能である。一実施形態において、ロックされたメモリページにおいて対象とされた位置が高信頼性のデータを含んでいないことをVMexit/VMcallハンドラ454が決定した場合、ロックされたメモリページからの読み出し又はそれからの書き込みが許可されることが可能である。
【0028】
SMM VM490は、ページメモリアクセスモードにおいて実行するためにSMMモードフォーマットから修正された、所望のSMMコードを含む。一般に、SMM VM490におけるSMMコードは、ロックされたメモリページからのメモリ読み出し及びそれへのメモリ書き込みを生成するために、それらの命令の例外的場合と共に、上記のように実行する。それらの場合、SMMコードはVMexit/VMcallハンドラ454を読み出すことが可能である。SMMコードはVMexit/VMcallハンドラ454に明示コールを生成することが可能であり、又、VMexit/VMcallハンドラ454に例外が捕捉されるようにすることにより間接コールを生成することが可能である。どちらの場合においても、VMexit/VMcallハンドラ454はこれらの状況を処理する。
【0029】
ここで、図5を参照するに、本発明の一実施形態に従った、システム管理割り込み再命令について示している。セキュアな又は高信頼性の動作の開始に続くハードウェア480におけるSMI生成イベントについて考慮することとする。プロセッサはそのSMBASEレジスタを調べる。初期設定の際に、SVMM SMMハンドラ452はプロセッサにおける修正されたSMBASEレジスタに内部メモリ位置を書き込んだため、プロセッサはSVMM SMMハンドラ452の実行を開始する。SVMM SMMハンドラ452はロックされたメモリページに状態データを記憶し、次いで、SMM VM490における実際のSMMコードへの仮想モードエンター(VMenter)コールを発行する。他の実施形態においては、SMIは、SVMMのVMexitハンドラの呼び出しをもたらすことが可能である。
【0030】
SMM VM490におけるSMMコードは、ロックされたメモリページにおけるメモリ位置からの読み出し又はそれへの書き込みを試みるまで実行される。次いで、明示コールか又は捕捉をもたらす例外により、VMexit/VMcall524はVMexit/VMcallハンドラ454を呼び出すために生成されることが可能である。VMexit/VMcall524は、許可可能であるとみなされるそれらのメモリアクセスを実行し、次いで、他のVMenter522によりSMM VM490に戻る。このプロセスは、SMM VM490における所望のSMMコードが完了するまで、数回繰り返されることが可能である。このとき、SMMコードは、VMexit/VMcallハンドラ454にVMexit/VMcall524を経由してエグジットする。一部の実施形態に対して、VMexit/VMcallハンドラ454は、次いで、修正されたれジューム命令SMM VMコードRSM526の実行によりSVMM SMMハンドラ452にエグジットする。これは、SVMM SMMハンドラ452がロックされたメモリページに記憶された(VMexit/VMcallハンドラ454により修正される可能性がある)状態データを回復させるようにする。他の実施形態に対しては、SVMM SMMハンドラ452及びVMexit/VMcallハンドラ454は結合されることが可能であり、これらの動作はソフトウェアにおいて実行されることが可能である。状態データの回復のとき、プロセッサはそのオリジナルの動作を再開する。
【0031】
ここで、図6を参照するに、本発明の他の実施形態に従った、図2のソフトウェア環境を支援するように適合された例示としてのマイクロプロセッサシステムの模式図を示している。CPU A610、CPU B614、CPU C618及びCPU D622は、特別命令の実行を支援する論理回路構成又は付加マイクロコードから構成されることが可能である。一実施形態において、プロセッサに対する修正は、レジスタの挙動に対する変化及び新しい又は修正された命令を含むことが可能である。例えば、一実施形態において、CPU C618は、新しい命令“仮想マシンモニタ初期設定”(VMMINIT)624を含むことが可能である。VMMINIT624命令は、実行のとき、上で図2において示したように、セキュアな又は高信頼性の動作の開始を可能にする。一実施形態において、VMMINIT624は又、セキュアな又は高信頼性のSMM動作を支援するために特定の状況においてCPU C618のPSMBASEレジスタ616の標準的な動作を無効にすることが可能である。そのような実施形態において、CPU C618は、次いで、セキュリティ環境ルールにより予め準備されたVMexit/VMcall668におけるコードエントリポイント及び状態保存領域にSMIを再命令することが可能である。
【0032】
一実施形態において、CPU C618は又、修正されたレジューム(RSM)626命令を含むことが可能である。修正されたRSM626は、セキュアな又は高信頼性の動作を支援するSMMからの戻りを可能にする。通常、RSM命令はSMMからのみ実行されることが可能である。修正されたRSM626は標準的なページモードから実行されることが可能である。有効にされたVM拡張子が呼び出されたとき、修正されたRSM626命令は、VMexit/VMcall668を呼び出すことに戻って、VMexitと呼ばれる特別なシステムコールを実行することが可能である。
【0033】
チップセット630は、システムバス620においてCPUから伝えられた要求を読み込む及び書き出すために役立つ。メモリ634におけるSMRAMの分配を、CSMBASEの値を含むチップセットSMBASEレジスタ631により容易にすることが可能である。
【0034】
SVMM664は、メモリ634における特性のページへのVMのアクセスを可能にする又は拒否することを可能にする。VMがアクセスを拒否されたメモリのページは“ロックされた”ページと呼ばれる一方、VMがアクセスを可能にされたページは“ロックされていない”ページと呼ばれる。ロックされたメモリページ660において、セキュアなSMM動作を支援するためにSVMM664におけるモジュール及びSVMM664を位置付けることが可能である。一実施形態において、モジュールはVMexit/VMcall668とすることが可能である。他の実施形態においては、VMexit/VMcall668の機能は結合されることが可能であり、他のモジュール間に分配されることが可能である。他のメモリのページは、ロックされていないメモリページ662のようなロックされない状態のまま保つことが可能である。標準的なオペレーティングシステム672はロックされていないメモリページに位置付けられることが可能である。又、SMM VM670はロックされていないメモリページ662にあることが可能である。SMM VM670は、標準的なSMMコードに類似しているが、仮想マシンコンテナにおいて動作するように修正されたソフトウェアコードを含むことが可能である。SMM VM670におけるそのような修正は、標準的なSMMではなくページモードにおける実行のために調整されたコードを含むことが可能である。
【0035】
ここで、図7を参照するに、本発明の他の実施形態に従った、システム管理割り込み再命令についての図を示している。図7の実施形態においては、SVMM750は、セキュアな又は高信頼性のSMM動作を支援するために2つの付加モジュールを有する。一実施形態において、VMexit/VMcallハンドラ754は、VMMINIT命令の実行に応答してSMM VM790においてSMMコードを確立し、VMコンテナにおけるSMMVM790の意図的な低い特権レベルのためにSMM VM790へのエントリ及びそれからのエグジットを付加的に処理する。
【0036】
VMexit/VMcallハンドラ754は幾つかの機能を実行することが可能である。セキュアな又は高信頼性の動作への移行の間に、プロセッサによるVMMINITコマンドの実行に従って、VMexit/VMcallハンドラ754は、仮想マシンコンテナにおけるSMM VM 790コードをロードし且つ初期設定する。VMexit/VMcallハンドラ754は又、SMM動作へのエントリの際に保存される必要がある状態データを記憶するためにロックされたメモリページにおける空間を確立する。
【0037】
VMexit/VMcallハンドラ754は幾つかの付加機能を実行することが可能である。VMexit/VMcallハンドラ754は、SMM VM790へのエントリ及びそれからのエグジットを処理することが可能である。VMexit/VMcallハンドラ754は又、SMM VM790がロックされたメモリページから読み出すまたはそれから書き込むことを試みるときにもたらされる例外を処理することが可能である。
VMexit/VMcallハンドラ754の一部は、特定のこれらのロックされたメモリページからの読み出し又はそれからの書き込みが状況に依存して進めるようにされる必要があるかどうかを決定することが可能である。一実施形態において、ロックされたメモリページにおいて対象とされた位置が高信頼性のデータを含んでいないことをVMexit/VMcallハンドラ754が決定した場合、ロックされたメモリページからの読み出し又はそれからの書き込みが許可されることが可能である。
【0038】
SMM VM790は、ページメモリアクセスモードにおいて実行するために、一実施形態においてSMMモードフォーマットから修正された、所望のSMMコードを含む。一般に、SMM VM790におけるSMMコードは、ロックされたメモリページからのメモリ読み出し及びそれへのメモリ書き込みを生成するために、それらの命令の例外的場合と共に、上記のように実行する。それらの場合、SMMコードはVMexit/VMcallハンドラ754を読み出すことが可能である。SMMコードはVMexit/VMcallハンドラ754に明示コールを生成することが可能であり、又、VMexit/VMcallハンドラ754に例外が捕捉されるようにすることにより間接コールを生成することが可能である。どちらの場合においても、VMexit/VMcallハンドラ754はこれらの状況を処理する。
【0039】
セキュアな又は高信頼性の動作の開始に続くハードウェア480におけるSMI生成イベントについて考慮することとする。プロセッサはそのSMBASEレジスタを調べる。VMMINITの実行はプロセッサにおける修正されたSMBASEレジスタの標準的な動作を無効にしたため、プロセッサは、セキュリティ環境ルールにより予め準備されたコードエントリポイントからVMexit/VMcallハンドラ754の実行を開始する。VMexit/VMcallハンドラ754はロックされたメモリページにおいて状態データを記憶し、次いで、SMM VM790において実際のSMMコードにVMenterコールを発行する。
【0040】
SMM VM790におけるSMMコードは、ロックされたメモリページにおけるメモリ位置からの読み出し又はそれへの書き込みを試みるまで実行される。次いで、明示コールか又は捕捉をもたらす例外により、VMexit/VMcall724はVMexit/VMcallハンドラ754を呼び出すために生成されることが可能である。VMexit/VMcall724は、許可可能であるとみなされるそれらのメモリアクセスを実行し、次いで、他のVMenter522によりSMM VM790に戻る。このプロセスは、SMM VM790における所望のSMMコードが完了するまで、数回繰り返されることが可能である。このとき、SMMコードは、VMexit/VMcallハンドラ754にVMexit/VMcall724を経由してエグジットする。一部の実施形態に対して、VMexit/VMcallハンドラ754は、次いで、修正されたレジューム命令を先ず実行することにより、標準的なSVMM750動作にエグジットする。これは、SVMM SMMハンドラ452がロックされたメモリページに記憶された(VMexit/VMcallハンドラ454により修正される可能性がある)状態データを回復させるようにする。他の実施形態に対しては、SVMM SMMハンドラ452及びVMexit/VMcallハンドラ454は結合されることが可能であり、これらの動作はソフトウェアにおいて実行されることが可能である。状態データの回復のとき、プロセッサはそのオリジナルの動作を再開する。
【0041】
開示した種々の実施形態は2つ又はそれ以上のプロセッサ(論理プロセッサ又は物理プロセッサ)を含む一方、そのような複数のプロセッサ及び/又は複数のスレッドシステムは、複数の論理プロセッサ又は物理プロセッサを有するシステムをセキュアにすることに関連する付加的複雑性を述べるためにより詳細に説明されることを理解する必要がある。より複雑でないシステムにおいて有利である可能性がある実施形態は又、1つのプロセッサのみを用いることが可能である。一部の例においては、1つの物理プロセッサは、複数のスレッドとすることが可能であり、それ故、複数の論理プロセッサを含むことが可能である。他の例においては、しかしながら、単一のプロセッサ、単一のスレッドシステムが用いられることが可能であり、更に、開示したセキュアな処理技術を利用することが可能である。そのような場合、セキュアな処理技術は、更に、データが認証されない方式で操作される又は盗難される可能性を低減するために機能する。
【0042】
上記の詳細説明において、本発明は、例示としての特定の実施形態に関して説明した。しかしながら、同時提出の特許請求の範囲から逸脱することなく、種々の修正及び変更を行うことが可能であることは明らかであろう。従って、上記の詳細説明及び図面は、制限的意味ではなく、例示であるとみなされる必要がある。
【図面の簡単な説明】
【0043】
【図1】既存の実施におけるシステム管理RAMのシステム管理モードコードの守りマッピングを示す図である。
【図2】一実施形態に従った、高信頼性の領域及び信頼性のない領域を有する例示としてのソフトウェア環境を示す図である。
【図3】本発明の一実施形態に従った、図2のソフトウェア環境を支援するように適合された例示としてのマイクロプロセッサシステムの模式図である。
【図4】本発明の一実施形態に従った、仮想マシンコンテナにおいて動作するシステム管理コードを示す図である。
【図5】本発明の一実施形態に従った、システム管理割り込み再命令を示す図である。
【図6】本発明の他の実施形態に従った、図2のソフトウェア環境を支援するように適合された例示としてのマイクロプロセッサシステムの模式図である。
【図7】本発明の他の実施形態に従った、システム管理割り込み再命令を示す図である。

【特許請求の範囲】
【請求項1】
修正されたレジューム命令を実行するための第1論理;及び
セキュアなエンター命令の実行に続いて書き込まれることができる割り込みサービスレジスタ;
を有することを特徴とするプロセッサ。
【請求項2】
請求項1に記載のプロセッサであって、前記修正されたレジューム命令は、第1コードの実行に続いて前プログラムの実行に前記プロセッサを戻す、ことを特徴とするプロセッサ。
【請求項3】
請求項2に記載のプロセッサであって、前記修正されたレジューム命令はページモードから実行されることが可能である、ことを特徴とするプロセッサ。
【請求項4】
請求項2に記載のプロセッサであって、前記第1コードの前記実行はサブオペレーティングシステムモードにおいて生じる、ことを特徴とするプロセッサ。
【請求項5】
請求項4に記載のプロセッサであって、前記サブオペレーティングシステムモードはシステム管理モードである、ことを特徴とするプロセッサ。
【請求項6】
請求項1に記載のプロセッサであって、前記割り込みサービスレジスタはシステム管理ベースレジスタである、ことを特徴とするプロセッサ。
【請求項7】
修正されたレジューム命令を実行するための第1論理;及び
モニター初期設定命令の実行に続いて無効にされることができる割り込みサービスレジスタ;
を有することを特徴とするプロセッサ。
【請求項8】
請求項7に記載のプロセッサであって、前記修正されたレジューム命令は、第1コードの実行に続いて前プログラムの実行に前記プロセッサを戻す、ことを特徴とするプロセッサ。
【請求項9】
請求項8に記載のプロセッサであって、前記修正されたレジューム命令はページモードから実行されることが可能である、ことを特徴とするプロセッサ。
【請求項10】
請求項8に記載のプロセッサであって、前記第1コードの前記実行はサブオペレーティングシステムモードにおいて生じる、ことを特徴とするプロセッサ。
【請求項11】
請求項10に記載のプロセッサであって、前記サブオペレーティングシステムモードはシステム管理モードである、ことを特徴とするプロセッサ。
【請求項12】
請求項7に記載のプロセッサであって、前記割り込みサービスレジスタはシステム管理ベースのレジスタである、ことを特徴とするプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2007−265434(P2007−265434A)
【公開日】平成19年10月11日(2007.10.11)
【国際特許分類】
【出願番号】特願2007−150997(P2007−150997)
【出願日】平成19年6月6日(2007.6.6)
【分割の表示】特願2004−511985(P2004−511985)の分割
【原出願日】平成15年5月1日(2003.5.1)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】