説明

システム管理モードにおけるプロセッサ間割り込みの再方向付け

【課題】マルチコア環境のシステム管理モードにおけるプロセッサ間の割り込み(IPI)等のアクションに応答する。
【解決手段】幾つかのプロセッサコアのうち第1のプロセッサコアがシステム管理モードに入り、第1のプロセッサコアとは異なる他のプロセッサコアのうち少なくとも1つは動作を維持してシステム管理モードには入らない。次いで、第1のプロセッサコアがシステム管理モード中にプロセッサ間割り込みに応答する。IPIを受けると、対象となるコアのシステムのコンテキストをセーブしておき、制御をIPI用のオペレーティングシステム(OS)ハンドラ140に渡す。ひとたびOS IPIが完了すると、システムのコンテキストを復元して、制御を、さらなる処理のためにSMIハンドラに戻す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システム管理モード中のプロセッサ間の割り込み処理に係る。
【背景技術】
【0002】
SMM(システム管理モード)は32または64ビットのインテル(登録商標)マイクロプロセッサ等の中央処理装置の根幹部である。例えばACPI(電力制御インターフェース)のイネーブルおよびディセーブル、デジタル熱センサの利用、メモリのホットプラグ等の、重要なコンピュータのプラットフォームアクティビティの多くが、通常、相手先ブランド供給業者(OEM)のファームウェアがコンピュータプラットフォームに提供するSMMコードで実行される。コアは、SMI(システム管理割り込み)を受けて、SMMに入る。
【0003】
現在のコンピュータプラットフォームに常駐する中央プロセッサは、幾つかのコアを有していることが多い(つまり、プロセッサ1つについて2、4、8、16等のコア)。一般的にマルチコアの中央プロセッサの性能はシングルコアのものよりも優れているかもしれないが、マルチコア環境における効率的な動作には、幾つかの技術的課題が残されている。現在のところ、プラットフォームのファームウェアは、オペレーティングシステム(OS)ソフトウェアモデルに適合すべくSMM用に全てのCPUコアを同期させている、というのもOSカーネルでは、1つのコアが見当たらないことも、または、プロセッサ間の割り込み(IPI)等のアクションに応答しないことも許されないからである。
【0004】
PI(プラットフォーム初期化)1.1(www.uefi.org)仕様では、UEFI(Unified Extensible Firmware Interface)ベースのファームウェアのSMMアーキテクチャが定義されている。しかし、現在のUEFIファームウェアおよびレガシーバイオス(BIOS)いずれにおいても、SMM環境への割り込みはディセーブルされている。
【図面の簡単な説明】
【0005】
本発明を例示するが、図面は限定を意図しておらず、同様の参照番号の部材は類似したものを示すものとする。
【0006】
【図1】SMMにおける応答コアを対象としたIPIの処理機能を有するコンピュータプラットフォームおよびプロセッサの一実施形態を示す。
【0007】
【図2】処理コアがSMM中に行うタスクがない場合に、SMMから処理コアを退出させる処理の一実施形態のフロー図である。
【0008】
【図3】シングルコアをSMMに入らせる処理の別の実施形態を示す。
【0009】
【図4】SMM内の処理コアに対象を絞ってIPIを再方向付けする処理の一実施形態のフロー図である。
【発明を実施するための形態】
【0010】
システム管理モード中にプロセッサ間割り込みを再方向付けるデバイス、システム、および方法の実施形態を記載する。
【0011】
コンピュータプラットフォームの中央プロセッサ内の処理コアは、SMI(システム管理割り込み)を受けると、SMM(システム管理モード)に入ることができる。コアはSMMに入ることで、そのモード固有の1以上のタスクを完了させる。現在のファームウェアによる解決法を有するコンピュータプラットフォームでは、SMMにあるコアがIPI(プロセッサ間割り込み)に応答しない。さらに、現在のコンピュータプラットフォームでは、プラットフォームの処理コアがSMIを受けてSMMに入ると、コンピュータプラットフォーム上のファームウェアは、全てのコアを同期してSMMに入らせる。従って、現在の技術では、SMMへの入退出は、全てのコアを対象とする同期処理である。これにより、コア間の処理割り込み量が不当に増加していることが懸念される。この割り込みは特に、オーディオ/ビデオストリーミング等のある種のサービス品質(QoS)アクティビティで顕著であり、このようなケースでは、SMM内のコア数が増える、および/または、SMM占有時間が長くなる、といった場合にジッタが生じ始めることもある。
【0012】
多くの実施形態では、「全てのコア間のSMM同期」の修正モデルを保証している。例えば、SMIが発行されるが、必要となるSMM処理がマルチコアプロセッサ内の単一のコアだけに固有であるような場合には、通常、対象とされている単一のコアだけをSMMに入らせ、残りのコアには標準動作を続行させることでプロセッサの効率が上がると考えられる。現在のIPIにまつわる問題は、この修正された「対象となるコアのSMM」の入退出モデルを実装するときに起こる。単純に、1つ残され、SMMに入らなかった1つのコアが、SMMに入った1以上のコアに対してIPIを発行することがある。しかし、IPIがSMMに入っていないコアからSMMに入っているコアに送られても、SMM内のコアは不在で応答しないように見えるので、該IPIが受信されないことになる。
【0013】
従って、多くの実施形態では、対象となるコアの制御フローは、標準SMIハンドラのものを外れて、SMM中であってもIPIに応答するようにする。特に、IPIを受けると、対象となるコアのシステムのコンテキストをセーブしておき、制御をIPI用のオペレーティングシステム(OS)ハンドラに渡す。ひとたびOS IPIが完了すると、システムのコンテキストを復元して、制御を、さらなる処理のためにSMIハンドラに戻す。
【0014】
以下の記載および請求項では、「含む(include)」および「備える(comprise)」、並びにそれらの派生物が利用される場合があるが、これらは互いに同義語として取り扱われることを意図している。さらに、以下の記載および請求項では、「連結された(coupled)」および「接続された(connected)」、並びにそれらの派生物が利用される場合がある。これらの用語は互いに同義語を意図していないことを理解されたい。特定の実施形態では、「接続された」は、2以上の部材が直接物理的または電気的接触関係にあることを示す場合に用いられる。「連結された」も、2以上の部材が直接物理的または電気的接触関係にあることを示していてもよい。しかし、「連結された」は、2以上の部材が直接接触していなくてもよく、互いに協働または相互作用することを意味する場合もある。
【0015】
図1は、SMMにおける応答コアを対象としたIPIの処理機能を有するコンピュータプラットフォームおよびプロセッサの一実施形態を示す。コンピュータプラットフォーム100は、プロセッサ(例えばプロセッサ102)を含みうる。図示されていない他の実施形態では、コンピュータシステム100は、2以上のプロセッサを含んでもよい。プロセッサ102は、インテル(登録商標)ベースの中央処理装置(CPU)であっても、別のブランドのCPUであってもよい。他の実施形態では、プロセッサ102は、1以上のコアを有してよい。例えば図1では、4つのコア(コア0(104)、コア1(106)、コア2(108)、コア3(110))を有するプロセッサ102が示されている。しかし、図示されていない他の実施形態では、プロセッサ102は、2、8、16、またはこれより多くの数のコアを含んでもよい。
【0016】
各プロセッサコアは、実行ユニットおよび命令撤回ユニット等の、幾つかの内部動作ユニットを含んでよい。さらに、各コアは、レジスタおよびキャッシュ等の、データを保存するのに利用される内部メモリ位置を含んでよい。例えば、インテル(登録商標)ベースのマイクロプロセッサアーキテクチャでは、各コアが割り込み記述子テーブル(IDT)レジスタ(IDTR112)、グローバル記述子テーブル(GDT)レジスタ(GDTR114)、1以上の制御レジスタ(CRx116)、1以上のモデル固有のレジスタ(MSR118)等を含むことができる。
【0017】
IDTR112は、IDTのアドレス位置を記憶する。IDTは、汎用x86コンピュータアーキテクチャにおいて割り込みベクトルテーブルを実装するのに利用されるデータ構造である。IDTは、コアが、コアが受ける割り込みおよび例外への正しい応答を決定するのに利用される。
【0018】
GDTR114は、GDTのアドレス位置を記憶する。GDTは、プログラムを実行する際の様々なメモリ領域の特性を定義するのに利用されるデータ構造である(例えば個々のメモリセグメントのベースアドレス、サイズ、アクセス特権等)。
【0019】
各CRx116(例えばCR0、CR1等)は、コア0(104)については、該コアの汎用行動を変更する、または制御するプロセッサレジスタである。制御レジスタが制御しうるタスクのなかには、割り込み制御、メモリページング制御、およびアドレスモード制御等が含まれる。
【0020】
各MSR118(幾つかのMSRがあることもあり、各々が異なる情報を記憶している)は、OS等のシステムソフトウェアに対して、特定のプロセッサの実装に関しており他のプロセッサの実装に関するものではないフィーチャを提供する。MSR内の情報により、OSは、コアまたはプロセッサが一般的に有する機能について知ることができる。
【0021】
コア0(104)に示す記憶レジスタは、特定のコアに位置するレジスタのサンプルに過ぎない。現実には、コア0(104)はこれ以外に、多くの記憶レジスタおよび1以上のメモリキャッシュを含みうるが、このようなさらなる記憶位置は図1に示さない。他の実施形態では、プロセッサ102はインテル(登録商標)プロセッサではなくてもよく、代わりに、類似した機能を有する他の記憶位置があってもよい。
【0022】
プロセッサ102は、メモリコントローラ120を介してメモリサブシステムに連結される。図1はプロセッサ102に集積されたメモリコントローラ120を示しているが、図示されていない他の実施形態では、メモリコントローラは、ブリッジデバイスあるいはコンピュータシステム内のプロセッサ102とは離間している他の集積回路内に集積されていてもよい。メモリサブシステムは、プロセッサが実行する命令を記憶するシステムメモリ122を含む。メモリサブシステムのメモリデバイスは、ダブルデータレート(DDR)同期DRAM等の任意の種類の揮発性ダイナミックランダムアクセスメモリ(DRAM)、および/または、フラッシュメモリ(登録商標)等の任意の種類の不揮発性メモリであってよい。プロセッサは、プロセッサメモリインタフェースによりメモリに連結され、プロセッサメモリインタフェースは、データ、アドレス、制御、およびその他の情報を、プロセッサ(1または複数)およびメモリ間で交換させる個々のラインを含むリンク(つまり、インターコネクト/バス)であってよい。
【0023】
ホストオペレーティングシステム(OS)124は、コンピュータプラットフォーム100が、プラットフォームおよびプラットフォームに取り付けられた周辺機器に対して汎用動作制御を提供するよう動作可能な間、該コンピュータプラットフォーム100のメモリにロードされるオペレーティングシステムを表す。ホストOS124は、マイクロソフト(登録商標)、ウィンドウズ(登録商標)、UNIX(登録商標)、LINUX(登録商標)、またはその他の機能OSであってよい。ホストOS124は、1以上のプログラム、サービス、またはエージェントがその内部で動作できる環境を提供する。多くの実施形態では、1以上のソフトウェアアプリケーションを、ホストOS124の上部で動作させうる。アプリケーションは、システムリソースの利用中に1以上のタスクを実行する任意の種類のソフトウェアアプリケーションであってよい。
【0024】
コンピュータプラットフォームは、さらに、入出力(I/O)ロジックコンプレックス126を含んでよい。I/Oロジックコンプレックス126は、コンピュータプラットフォーム100内のI/Oサブシステムの一部を管理する1以上の集積コントローラを含みうる。例えば、I/Oコンプレックス126は、プロセッサと、コンピュータプラットフォーム100にプラグインされうる1以上のユニバーサルシリアルバス(USB)デバイスとの間の情報の流れを制御する1以上の集積USBホストコントローラ(不図示)を含みうる。
【0025】
多くの実施形態では、I/Oコンプレックスは、仮想化エンジン128を含む。仮想化エンジン128は、コンピュータプラットフォーム100を多数の仮想マシン(VM)に分割させるロジックを含みうる。例えば、2つのVMがコンピュータプラットフォーム100上で実行されているとすると、各々は、別このシステムリソースを割り当てられている(例えばシステムメモリ)。1つのVMは、ホストOS124にリソースを提供する際の優先度の低いVMとして実装されてよい。2つ目のVMは、コンピュータプラットフォーム100に対して遠隔情報技術(IT)アクセスを実現すべく、システム管理者にある種の優先リソースを提供する優先度の高いVMとして実装されてよい。別の例ではさらに別のVMを実装することもできる(例えば、コンピュータプラットフォーム100に連結されたVoIP(Voice-over-Internet-Protocol)電話機専用のリソースを提供するVM等)。
【0026】
仮想化エンジン128は、さらに、強力なハードウェアベースのセキュリティチェック処理をホストOS124に実装することができる。例えば、優先度の低いホストOSベースのVMの整合性は、最初の起動処理中または、より優先度の高いセキュリティVMによるプラットフォーム動作中の任意の時点において、セキュアに計測することができる。これらセキュリティ計測値により、コンピュータプラットフォーム100のエンドユーザは、ホストOS124およびホストOSの上部で実行されているソフトウェアアプリケーションいずれもが危険に曝されていないことを確認することができうる。
【0027】
多くの実施形態では、プロセッサ102は、ファームウェアロジック130の記憶装置を含む。ファームウェアロジック130は、起動処理の初めにプロセッサを初期化する助けとなり、且つ、ホストOS124のランタイムサービスを提供する起動前および起動後のルーチンを含んでよい。多くの実施形態では、コンピュータプラットフォーム100は、ホストOS124とプロセッサ/プラットフォームファームウェアとの間の通信を促進する目的で存在するUEFI(Unified Extensible Firmware Interface)を利用する。UEFIは部分的に、ホストOS124を、標準的なインタフェースを利用して多くのプロセッサの1つと協働させる。
【0028】
上述したように、プロセッサ102はマルチコアプロセッサであり、個々のコアは他のコアに対してIPIを利用して割り込みを送り、IPIが対象とする1以上の他のコアに対してある形態の機能動作を要求することができる。加えて、多くの実施形態では、プロセッサ102は、SMMへ入退出する機能を有する。SMMにある間は通常、各コア内において通常のプロセッサの実行は中断される。言い換えると、現在のところSMIがプロセッサに到達すると、ファームウェアロジック130またはプロセッサ102内の他のロジックは、全てのコアをSMMに入らせて同期させる。
【0029】
しかし多くの実施形態では、プロセッサ102内の1以上のコアがSMMに入ることなく通常動作を続けつつ、1以上の他のコアがSMMにおける動作をすることができる。例えば、図2は、処理コアがSMM中に行うタスクがない場合に、SMMから該処理コアを退出させる処理の一実施形態のフロー図である。処理は、ハードウェア、ソフトウェア、またはこれらの組み合わせにより行うことができる。処理は、コアが、第1のブロードキャストSMIを受信するロジックを処理することにより始まる(処理ブロック200)。SMIは、全ての処理コアにブロードキャストされる。SMIを受信すると、コア内の処理ロジックがSMMに入る(処理ブロック202)。次に、これも全てのコアに送信された第2のブロードキャストSMIを受信する(処理ブロック204)。多くの実施形態では、第2のブロードキャストSMIは、SMMでビジー状態にない各コアに対して、SMMを退出して通常予定していたタスクに戻ってよい旨を伝える。
【0030】
従って、任意のコア内の処理ロジックは、対象となっているコアが完了すべきSMMタスクを有しているのか、アイドル状態であるのかを判断する(処理ブロック206)。コアが完了すべきSMMタスクを有している場合には、処理ロジックはそのコアをSMM内に留め、SMM関連のタスクを行わせる(処理ブロック208)。逆にコアがSMMでアイドル状態にあり、完了すべきSMM関連のタスクを持たない場合、処理ロジックはそのコアをSMMから退出させて、通常の動作に戻す(処理ブロック210)。この処理は、各コア内の処理ロジックにより、または、各コア外の、各コアのステータスを遠隔判断する機能を有するプラットフォームレベルロジックにより行うことができる。従って、この処理の終了時には、SMMに送られタスクを与えられた各コアがSMMに留まることができる。逆にSMMコア同期処理のみの理由でSMMへと送られ、SMM関連のタスクを持たない各コアは、SMMから退出して、通常動作(例えば、ホストOSの上部のアプリケーションコードの実行)を続ける。
【0031】
図3は、シングルコアをSMMに入らせる処理の別の実施形態を示す。図2の処理の欠点は、SMIのブロードキャストがあまり効率的でないことである。本来ならばSMMから退出せねばならないコアが先ずはSMMに入ってから退出させられる。これは、他の1以上のコアがタスクを行っている間中、動作しないコアをアイドル状態のままSMMに留めておくよりは効率的ではあるが、対象を絞ったSMIを利用するよりは潜在的に非効率である。対象を絞ったSMIは、特定のコアに方向付けられる。故に、単一のコアがSMMでタスクを行う必要がある場合、対象を絞ったSMIを対象となるコアに直接送ることができ、他の各コアはSMIを受け取らない。従って、対象を絞ったSMIをコンピュータプラットフォームに実装する場合、各コアの処理ロジックは、対象を絞ったSMIを受け取った場合には自身をSMMに入らせることができるが、SMIを受け取っていない場合には邪魔されずに通常動作を続けることができる。このように、コアの処理ロジックは、対象を絞ったSMIを受信したか否かを判断する(処理ブロック300)。コアの処理ロジックが対象を絞ったSMIを受け取っていない場合には、処理ロジックはコアに対して、通常動作を続けさせることができる(処理ブロック302)。他方、処理ロジックが対象を絞ったSMIを受け取ったと判断する場合には、ロジックはコアをSMMに入らせ、そのコアにSMM関連のタスクを行わせる(処理ブロック304)。
【0032】
このように、図2または図3の処理を実装するにあたっては、プラットフォームは、任意の時点で、幾らかのコアをSMMに有し、幾らかのコアをSMM外に有するプロセッサを有することができる。IPIは、幾らかのコアがSMMにあり、これと同時に、幾らかのコアがSMM外にあるようなプロセッサを許容するプラットフォーム上で、重要な問題を生じる可能性がある。上述したように、SMMにないあるコアが、SMMにある別のコア宛にIPIを開始した場合、このIPIは、各コアのIPI処理メカニズムに修正を加えない限り、宛先のコアには達しないことになる。現在のところ、SMM内のコアは、不在に見えるためにIPIを受信することはできない。従って、SMM内のコアにIPIを受信させるような修正を行うことが望ましい。
【0033】
図1に戻ると、多くの実施形態では、各コアは、SMMモードにあるIPIの受信および再方向付けを処理するロジックを含む。例えばコア0(104)は、再方向付けロジッ132を含みうる。再方向付けロジック132は、ハードウェア回路またはファームウェア記憶位置に記憶されるファームウェアコードを備えうる。
【0034】
図4は、SMM内の処理コアに対象を絞ってIPIを再方向付けする処理の一実施形態のフロー図である。本処理は、ハードウェア回路またはソフトウェア(つまりファームウェア)、またはこれらの組み合わせを含みうる処理ロジックにより行うことができる。本処理は、例えばコア0(図1の104)等のコアがSMIを受信することにより開始される(処理ブロック400)。別の実施形態では、SMIはブロードキャストされるSMIであっても、そのコアに対象が絞られたSMIであってもよい。その後コアは、SMIに応じてSMMに入る(処理ブロック402)。
【0035】
コアがSMMに入ると、処理ロジック(例えば図1の再方向付けロジック132)は、割り込み記述子テーブル(IDT)を設定する(図1の134)(処理ブロック404)。IDTは、割り込みベクトルテーブルを実装するのに用いられるデータ構造であり、コアが、割り込みおよび例外への正しい応答を決定するのに利用される。IDTはシステムメモリ内に構築されてよい(図1の122)。IDTの開始のメモリアドレス位置をIDTR内に記憶させてよい(図1の112)。次に、処理ロジックは、コアへの割り込みをイネーブルする(処理ブロック406)。これにより、コアはSMM中に割り込みを受信することができ、従来のように無視はしない。デバイスドライバの機能に影響を及ぼさないように、SMM中のコアは、CPU割り込みをイネーブルしつつ、PIC(プログラム可能な割り込み制御回路)またはAPIC(拡張された割込制御回路)により幾らかのデバイス割り込みを選択的にイネーブルおよび/またはディセーブルすることができる。
【0036】
そして処理ロジックは、SMIハンドラの実行を開始する(処理ブロック408)。SMIハンドラは、SMIが要求したタスクの種類に応じた特定の処理セットを含みうる。コアへの割り込みがイネーブルされるので、SMI実行中に処理ロジックは、別のコアからのIPIの受信について、継続してポーリングを行う(処理ブロック410)。IPIが受信されていない間は、処理ロジックは標準SMIハンドラを実行し続ける(処理ブロック408)。他方、IPIが受信されると、処理ロジックは、先ずIPIのベクトル数(vector number)を入手することによりIPI処理ルーチンに入る(処理ブロック412)。IPIのベクトル数はIDTに見つかる場合が多い。
【0037】
ベクトル数により、処理ロジックは、IDT内の適切なエントリを見つけることができる。ひとたび利用するIDTエントリが見つかると、処理ロジックはスーパジャンプ前のシステムコンテキストをセーブすることができる(処理ブロック416)。コアは、IDT、1以上の制御レジスタ(図1のCRs−CRx116)、および、おそらくは他のコア固有の情報をも変更させるスーパジャンプを行う。スーパジャンプ後のシステムコンテキストは、コア動作制御を、通常は標準OS制御の範囲外で動作するSMIハンドラロジックから、OS実行IPIハンドラに渡すことができる。スーパジャンプは、一時的なOS実行IPIハンドラに対して、IPIに関するタスクを完了させるよう制御することができる。処理ロジックは、IPIハンドラの完了時にコアをSMIハンドラに戻すべく、スーパジャンプ前にコアのシステムコンテキスト(状態)をセーブする。システムコンテキストのセーブには、現在のIDT、1以上のCR、命令ポインタ(EIP)、および追加的な情報のセーブが含まれる。多くの実施形態では、システムコンテキスト(図1の136)は、システムメモリのシステム管理ランダムアクセスメモリ(SMRAM)(図1の138)の部分内にセーブされる。SMRAMは、プロセッサが、SMM関連のコードを保存するのに用いるシステムメモリの部分である。
【0038】
システムコンテキストをセーブすると、処理ロジックはOSエントリポイントへのスーパジャンプを行う(処理ブロック418)。スーパジャンプにより、1以上のセーブ情報が、スーパジャンプに関する新たな情報(例えば新たなEIP)に置き換わる。次いで、処理ロジックは、OS IPIハンドラの実行を開始する(処理ブロック420)。OS IPIハンドラは、IPIが要求するタスクを行わせることでコアにIPIに応答させる命令セットを実行する。OS IPIハンドラ(図1の140)は、システムメモリ内に記憶されているオペレーティングシステム内で実行されうる。OS IPIハンドラが自身のタスクを完了すると、処理ロジックは、割り込み終了(EOI)コマンドをコンピュータシステムのAPICに送り、APICに割り込みタスクが完了した旨を通知する(処理ブロック422)。
【0039】
多くの実施形態では、スーパジャンプを行うのに利用される命令を、特殊な遠い呼(specialized Far Call)としてよい。通常の遠い呼(normal Far Call)は、現在のコードセグメントとは異なるセグメントに位置するプロシージャへの呼である。OS IPIハンドラが実行できるようにシステムコンテキストを切り替えるには、多くのレジスタ(CR0、CR3、CR4、GDTR、およびIDTR等)を復元する必要がある。通常の遠い呼は、CS(コードセグメント)レジスタよびEIPのみを切り替えればよい。従って、多くの実施形態では、プロセッサコアにフルコンテキスト切り替えをサポートさせるには、1ビットをMSRに追加させればよい。MSRビットがイネーブルされると、遠い呼の命令が、超遠い呼(Super Far Call)としてパースされる。これにより、CS/EIPが切り替わるのみならず、CRx/GDTR/IDTR/等も切り替わる。従って、1つの命令を利用してOS環境に入ることができる。OS IPIハンドラの完了時に、OS Iret(割り込みリターン)命令をスーパIretとしてパースすることで、CRx/GDTR/IDTR/等を切り替え、コンテキストをSMM動作に戻すことができる。
【0040】
EOIをAPICに送った後で、処理ロジックは、OSエントリポイントにジャンプする前にコアが存在していた位置に戻ることができるが、これは、OS IPIハンドラが完了したから可能となる(処理ブロック424)。スーパジャンプの前の位置に戻る際に、処理ロジックは、ジャンプ前にセーブされていたシステムコンテキストを復元する(IDT,EIP、1以上のCR等を含み)(処理ブロック426)。ひとたびもとのシステムコンテキストが復元されると、処理ロジックは、コアをSMMのSMIハンドラの処理に戻す(処理ブロック428)。SMIハンドラの処理は、別のIPIが受信されるまで(ブロック410から初めて全スーパジャンプを繰り返すことになる)、あるいは、SMI処理が完了するまで続けられ、こうしてコアはSMMを抜け(処理ブロック430)、処理が完了する。
【0041】
多くの実施形態では、オペレーティングシステムは、OSが制御を獲得しOS IPIハンドラを実行する前にVMM(仮想マシンマネージャ)または別のセキュアな仮想マシンによりセキュアに計測される。この計測処理により、スーパジャンプ中にセキュアな環境をハンドオフ制御(hand off control)へと確実に移行させる。多くの実施形態では、SMI転送モニタ(STM)がサポートされる。STMのサポートにより、STMは、SMMのIPI処理用のOSゲストを再開する。STMは、VMCS(仮想マシン制御構造)環境を設定して、割り込みを受信した際にVMExitをイネーブルすることができる。このイネーブルは初期化中に行われてよい。そして、IPIが起こった際には、STMは、割り込みに起因したVMExitコマンドを受信する。次いでSTMはOS IPIハンドラを開始するセキュアな環境を設定して、SMMのIPIハンドラに対してVMEntryを行うことができる。加えて、STMは、コンテキストを記憶させているSMRAMをセキュアにすることにより、記憶されているコンテキストを保護し、SMM実行環境を、SM IPIハンドラによる傍受から守ることができる。これにより、SMM実行環境を、不良または悪意のあるOS実体による危険から守ることもできるであろう。
【0042】
システム管理モード中にプロセッサ間割り込みを再方向付けるデバイス、システム、および方法の実施形態が記載された。これら実施形態は特定の例示的な実施形態に基づいて記載されてきた。しかし当業者であれば、本開示に基づき開示される実施形態の広義の精神および範囲から逸脱しないで、これら実施形態に対して様々な変形例および変更例を相当することができよう。従って明細書および図面は例示的であり、制限的な意味合いで捉えられるべきものではない。実施形態の例を項目として示す。
[項目1]
複数のプロセッサコアのうち第1のプロセッサコアがシステム管理モードに入り、複数のプロセッサコアのうちの、第1のプロセッサコアとは異なる1以上のプロセッサコアは動作を維持してシステム管理モードには入らない段階と、
第1のプロセッサコアが、システム管理モード中にプロセッサ間割り込みに応答する段階とを備える方法。
[項目2]
第1のプロセッサコアがシステム管理モードに入った後で、
第1のプロセッサコアによる割り込み処理を許可するべく割り込み記述子テーブルをセーブする段階と、
第1のプロセッサコアに対するプロセッサ間割り込みをイネーブルする段階とをさらに備える項目1に記載の方法。
[項目3]
第1のプロセッサコアがプロセッサ間割り込みを受信した後で、
第1のプロセッサコアの現在のシステムコンテキストをメモリにセーブする段階と、
第1のプロセッサコアに対して、スーパジャンプに利用される新たなスーパジャンプシステムコンテキストを設定する段階と、
スーパジャンプを、オペレーティングシステムのプロセッサ間割り込みハンドラの位置に行う段階と、
オペレーティングシステムのプロセッサ間割り込みハンドラを実行する段階とをさらに備える項目2に記載の方法。
[項目4]
オペレーティングシステムのプロセッサ間割り込みハンドラを実行した後で、
スーパジャンプの前の位置に戻る段階と、
第1のプロセッサコアの現在のシステムコンテキストをメモリから復元する段階と、
第1のプロセッサコアを、システム管理モードから抜けさせる段階とをさらに備える項目3に記載の方法。
[項目5]
オペレーティングシステムのプロセッサ間割り込みハンドラを制御するオペレーティングシステムが制御を獲得してハンドラを実行する前に、システム管理割り込み転送モニタによりオペレーティングシステムをセキュアに計測する段階と、
計測時に、システム管理割り込み転送モニタがオペレーティングシステムに制御を送る段階とをさらに備える項目3に記載の方法。
[項目6]
プロセッサ間割り込みに呼応して、スーパジャンプに関連するコンテキスト切り替えにおいて、1以上の第1のプロセッサコアの制御レジスタと、一の第1のプロセッサコアのグローバル記述子テーブルレジスタとを含むように、第1のプロセッサコアのマシン固有レジスタにビットを設定する段階をさらに備える項目3に記載の方法。
[項目7]
コンピュータシステムの第1のプロセッサコアであって、
システム管理モードに入り、
システム管理モード中にプロセッサ間割り込みに応答し、
コンピュータシステムの中の1以上のさらなるプロセッサコアは動作を維持してシステム管理モードには入らない第1のプロセッサコア。
[項目8]
システム管理モードに入った後で、さらに、
割り込み処理を許可するべく割り込み記述子テーブルをセーブし、
プロセッサ間割り込みをイネーブルする項目7に記載の第1のプロセッサコア。
[項目9]
プロセッサ間割り込みを受信した後で、さらに、
現在のシステムコンテキストをメモリにセーブし、
スーパジャンプに利用される新たなスーパジャンプシステムコンテキストを設定し、
スーパジャンプを、オペレーティングシステムのプロセッサ間割り込みハンドラの位置に行い、
オペレーティングシステムのプロセッサ間割り込みハンドラを実行する項目8に記載の第1のプロセッサコア。
[項目10]
オペレーティングシステムのプロセッサ間割り込みハンドラを実行した後で、さらに、
スーパジャンプの前の位置に戻り、
現在のシステムコンテキストをメモリから復元し、
システム管理モードから抜ける項目9に記載の第1のプロセッサコア。
[項目11]
オペレーティングシステムのプロセッサ間割り込みハンドラを制御するオペレーティングシステムが制御を獲得してハンドラを実行する前に、システム管理割り込み転送モニタによりオペレーティングシステムをセキュアに計測し、
計測時に、システム管理割り込み転送モニタがオペレーティングシステムに制御を送る項目9に記載の第1のプロセッサコア。
[項目12]
プロセッサ間割り込みに呼応して、スーパジャンプに関連するコンテキスト切り替えにおいて、1以上の第1のプロセッサコアの制御レジスタと、一の第1のプロセッサコアのグローバル記述子テーブルレジスタとを含むように、第1のプロセッサコアのマシン固有レジスタにビットを設定する項目9に記載の第1のプロセッサコア。
[項目13]
システム管理モードに入り、システム管理モード中にプロセッサ間割り込みに応答する第1のプロセッサコアと、
動作を維持してシステム管理モードには入らない1以上のさらなるプロセッサコアとを備えるシステム。
[項目14]
第1のプロセッサコアはさらに、システム管理モードに入った後で、
割り込み処理を許可するべく割り込み記述子テーブルをセーブし、
プロセッサ間割り込みをイネーブルする項目13に記載のシステム。
[項目15]
第1のプロセッサコアはさらに、プロセッサ間割り込みを受信した後で、
現在のシステムコンテキストをメモリにセーブし、
スーパジャンプに利用される新たなスーパジャンプシステムコンテキストを設定し、
スーパジャンプを、オペレーティングシステムのプロセッサ間割り込みハンドラの位置に行い、
オペレーティングシステムのプロセッサ間割り込みハンドラを実行する項目14に記載のシステム。
[項目16]
第1のプロセッサコアはさらに、オペレーティングシステムのプロセッサ間割り込みハンドラを実行した後で、
スーパジャンプの前の位置に戻り、
現在のシステムコンテキストをメモリから復元し、
システム管理モードから抜ける項目15に記載のシステム。
[項目17]
第1のプロセッサコアはさらに、オペレーティングシステムのプロセッサ間割り込みハンドラを制御するオペレーティングシステムが制御を獲得してハンドラを実行する前に、システム管理割り込み転送モニタによりオペレーティングシステムをセキュアに計測し、
計測時に、システム管理割り込み転送モニタがオペレーティングシステムに制御を送る項目15に記載のシステム。
[項目18]
第1のプロセッサコアはさらに、プロセッサ間割り込みに呼応して、スーパジャンプに関連するコンテキスト切り替えにおいて、1以上の第1のプロセッサコアの制御レジスタと、一の第1のプロセッサコアのグローバル記述子テーブルレジスタとを含むように、第1のプロセッサコアのマシン固有レジスタにビットを設定する項目15に記載のシステム。

【特許請求の範囲】
【請求項1】
複数のプロセッサコアのうち第1のプロセッサコアがシステム管理モードに入り、前記複数のプロセッサコアのうちの、前記第1のプロセッサコアとは異なる1以上のプロセッサコアは動作を維持して前記システム管理モードには入らない段階と、
前記第1のプロセッサコアが、前記システム管理モード中にプロセッサ間割り込みに応答する段階と、
前記第1のプロセッサコアが前記システム管理モードに入った後で、前記第1のプロセッサコアによる割り込み処理を許可するべく割り込み記述子テーブルをセーブする段階と、
前記第1のプロセッサコアに対するプロセッサ間割り込みをイネーブルする段階と、
前記第1のプロセッサコアがプロセッサ間割り込みを受信した後で、
前記第1のプロセッサコアの現在のシステムコンテキストをメモリにセーブする段階と、
前記第1のプロセッサコアに対して、オペレーティングシステムのプロセッサ間割り込みハンドラに関する新たなシステムコンテキストを設定する段階と、
前記第1のプロセッサコアが、処理位置を前記プロセッサ間割り込みハンドラの位置にジャンプさせる段階と、
前記第1のプロセッサコアが、前記オペレーティングシステムのプロセッサ間割り込みハンドラを実行する段階と、
前記オペレーティングシステムのプロセッサ間割り込みハンドラを実行した後で、
前記第1のプロセッサコアの処理位置をジャンプ前の位置に戻す段階と、
前記第1のプロセッサコアの前記現在のシステムコンテキストを前記メモリから復元する段階と、
前記第1のプロセッサコアを、前記システム管理モードから抜けさせる段階と、
を備える方法。
【請求項2】
前記第1のプロセッサコアの前記システムコンテキストは、前記第1のプロセッサコアの制御レジスタ、前記割り込み記述子テーブル、命令ポインタ、グローバル記述子テーブルレジスタを含む、
請求項1に記載の方法。
【請求項3】
前記オペレーティングシステムのプロセッサ間割り込みハンドラを制御するオペレーティングシステムが制御を獲得して前記ハンドラを実行する前に、システム管理割り込み転送モニタにより前記オペレーティングシステムをセキュアに計測する段階と、
前記計測時に、前記システム管理割り込み転送モニタが前記オペレーティングシステムに制御を送る段階とをさらに備える請求項1または2に記載の方法。
【請求項4】
前記プロセッサ間割り込みに呼応した前記システムコンテキストの切り替えにおいて、1以上の第1のプロセッサコアの制御レジスタと、一の第1のプロセッサコアのグローバル記述子テーブルレジスタとを含むように、前記第1のプロセッサコアのマシン固有レジスタにビットを設定する段階をさらに備える請求項1から3のいずれか1項に記載の方法。
【請求項5】
コンピュータシステムの第1のプロセッサコアであって、
システム管理モードに入り、
前記システム管理モード中にプロセッサ間割り込みに応答し、
前記コンピュータシステムの中の1以上のさらなるプロセッサコアは動作を維持して前記システム管理モードには入らず、
前記システム管理モードに入った後で、前記第1のプロセッサコアによる割り込み処理を許可するべく割り込み記述子テーブルをセーブし、
前記プロセッサ間割り込みをイネーブルし、
前記プロセッサ間割り込みを受信した後で、
現在のシステムコンテキストをメモリにセーブし、
オペレーティングシステムのプロセッサ間割り込みハンドラに関する新たなシステムコンテキストを設定し、
処理位置を前記プロセッサ間割り込みハンドラの位置にジャンプさせ、
前記オペレーティングシステムのプロセッサ間割り込みハンドラを実行し、
前記オペレーティングシステムのプロセッサ間割り込みハンドラを実行した後で、
処理位置をジャンプ前の位置に戻し、
前記現在のシステムコンテキストを前記メモリから復元し、
前記システム管理モードから抜けさせる、
第1のプロセッサコア。
【請求項6】
前記システムコンテキストは、前記第1のプロセッサコアの制御レジスタ、前記割り込み記述子テーブル、命令ポインタ、グローバル記述子テーブルレジスタを含む、
請求項5に記載の第1のプロセッサコア。
【請求項7】
前記オペレーティングシステムのプロセッサ間割り込みハンドラを制御するオペレーティングシステムが制御を獲得して前記ハンドラを実行する前に、システム管理割り込み転送モニタにより前記オペレーティングシステムをセキュアに計測し、
前記計測時に、前記システム管理割り込み転送モニタが前記オペレーティングシステムに制御を送る請求項5または6に記載の第1のプロセッサコア。
【請求項8】
前記プロセッサ間割り込みに呼応した前記システムコンテキストの切り替えにおいて、1以上の第1のプロセッサコアの制御レジスタと、一の第1のプロセッサコアのグローバル記述子テーブルレジスタとを含むように、前記第1のプロセッサコアのマシン固有レジスタにビットを設定する請求項5から7のいずれか1項に記載の第1のプロセッサコア。
【請求項9】
システム管理モードに入り、前記システム管理モード中にプロセッサ間割り込みに応答する第1のプロセッサコアと、
動作を維持して前記システム管理モードには入らない1以上のさらなるプロセッサコアとを備え、
前記第1のプロセッサコアは、
前記システム管理モードに入った後で、前記第1のプロセッサコアによる割り込み処理を許可するべく割り込み記述子テーブルをセーブし、
前記プロセッサ間割り込みをイネーブルし、
前記プロセッサ間割り込みを受信した後で、
現在のシステムコンテキストをメモリにセーブし、
オペレーティングシステムのプロセッサ間割り込みハンドラに関する新たなシステムコンテキストを設定し、
処理位置を前記プロセッサ間割り込みハンドラの位置にジャンプさせ、
前記オペレーティングシステムのプロセッサ間割り込みハンドラを実行し、
前記オペレーティングシステムのプロセッサ間割り込みハンドラを実行した後で、
処理位置をジャンプ前の位置に戻し、
前記現在のシステムコンテキストを前記メモリから復元し、
前記システム管理モードから抜けさせる
システム。
【請求項10】
前記システムコンテキストは、前記第1のプロセッサコアの制御レジスタ、前記割り込み記述子テーブル、命令ポインタ、グローバル記述子テーブルレジスタを含む、
請求項9に記載のシステム。
【請求項11】
前記第1のプロセッサコアはさらに、前記オペレーティングシステムのプロセッサ間割り込みハンドラを制御するオペレーティングシステムが制御を獲得して前記ハンドラを実行する前に、システム管理割り込み転送モニタにより前記オペレーティングシステムをセキュアに計測し、
前記計測時に、前記システム管理割り込み転送モニタが前記オペレーティングシステムに制御を送る請求項9または10に記載のシステム。
【請求項12】
前記第1のプロセッサコアはさらに、前記プロセッサ間割り込みに呼応した前記システムコンテキストの切り替えにおいて、1以上の第1のプロセッサコアの制御レジスタと、一の第1のプロセッサコアのグローバル記述子テーブルレジスタとを含むように、前記第1のプロセッサコアのマシン固有レジスタにビットを設定する請求項9から11のいずれか1項に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2013−93045(P2013−93045A)
【公開日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願番号】特願2013−3917(P2013−3917)
【出願日】平成25年1月11日(2013.1.11)
【分割の表示】特願2010−85510(P2010−85510)の分割
【原出願日】平成22年4月1日(2010.4.1)
【出願人】(591003943)インテル・コーポレーション (1,101)