JP5801372B2 - システム管理モードのためのプロセッサにおける状態記憶の提供 - Google Patents

システム管理モードのためのプロセッサにおける状態記憶の提供 Download PDF

Info

Publication number
JP5801372B2
JP5801372B2 JP2013250360A JP2013250360A JP5801372B2 JP 5801372 B2 JP5801372 B2 JP 5801372B2 JP 2013250360 A JP2013250360 A JP 2013250360A JP 2013250360 A JP2013250360 A JP 2013250360A JP 5801372 B2 JP5801372 B2 JP 5801372B2
Authority
JP
Japan
Prior art keywords
processor
smm
state
core
thread
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.)
Active
Application number
JP2013250360A
Other languages
English (en)
Other versions
JP2014075147A (ja
Inventor
ナトゥ,マヘシュ,エス.
ガネサン,バスカラン
ランガラジャン,タヌナタン
クマール,モーハン,ジェイ.
ドシ,ガウタム,ビー.
パルタサラティ,ラジェシュ,エス.
ダッタ,シャンマンナ,エム.
ビンズ,フランク
ナガラジャ ムルティ,ラジェシュ
ナガラジャ ムルティ,ラジェシュ
スワンソン,ロバート,シー.
Original Assignee
インテル コーポレイション
インテル コーポレイション
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2014075147A publication Critical patent/JP2014075147A/ja
Application granted granted Critical
Publication of JP5801372B2 publication Critical patent/JP5801372B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40615Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本願はプロセッサのシステム管理モードに関する。
たいていのコンピュータ・システム・プロセッサは、システム管理モード(SMM: system management mode)と呼ばれる特別な動作モードをサポートしている。SMMはオペレーティング・システム(OS: operating system)ソフトウェアにとって透明な、独特な動作環境を提供する。このモードはしばしば、相手先ブランド装置製造業者(OEM: original equipment manufacturer)によって、システム管理、デバイス、電力および熱管理といった特別なタスクを実行するために使用される。サーバーに関係した信頼性、可用性および保守性(RAS: reliability, availability and serviceability)機能は通例SMMを使って実装される。典型的にはシステム管理割り込み(SMI: system management interrupt)メッセージをプロセッサに送ることによって、SMMにはいる。SMIを受け取り確認すると、プロセッサは、プロセッサ保存状態(Processor Save State)とも呼ばれる現在のプロセッサ・コンテキストを、SMMに特に割り当てられている、システム管理ランダム・アクセス・メモリ(SMRAM: system management random access memory)と称されるシステム・メモリの部分に保存し、SMRAMに含まれるSMIハンドラ・コードを実行する。SMIハンドラがその動作を完了すると、特別な(SMMにおいてのみ有効な)再開命令を実行し、それによりプロセッサは保存されたプロセッサ・コンテキストをSMRAMから改めてロードし、中断されたタスクの実行を再開する。
マルチプロセッサ・システムでは、一般にSMIメッセージはすべてのプロセッサにブロードキャストされる。SMIハンドラは、そのイベントを処理するために、SMMモナーク(monarch)と称される一つのプロセッサを選択する。このプロセッサは、SMIイベントを処理する前に、他のすべてのプロセッサがSMM内部に集結〔ランデブー〕するまで待つ。非モナーク・プロセッサは、モナークがイベント処理を完了するまでSMMに留まる。SMMイベントが処理されたら、モナークは他のプロセッサにSMMを出るよう合図する。この同期された入場および退場振る舞いは、二つの並列環境(OSおよびSMM)の間のいかなる資源の衝突も防止するよう実装される。すなわち、いくつかのプロセッサがOS環境においてアクティブであり、残りは同時にSMM環境においてアクティブである場合、それらが共有された資源を修正し、それにより互いの動作に干渉してシステム・クラッシュを引き起こすことがありうる。さらに、ある種のSMMイベントは、特定の論理プロセッサまたは一組の論理プロセッサによってのみ処理されることができる。ブロードキャストは、すべての論理的プロセッサがSMIにはいるので、この条件が常に満たされることを保証する。
このように、マルチプロセッサにおけるSMI処理(SMI handling)は複雑で、すべてのシステム資源を消費して、他の有用な作業を処理することを妨げることがある。プロセッサがSMM内にある間は、オペレーティング・システムにとって利用可能でないからである。
本願の課題は請求項記載の手段によって解決される。
本発明のある実施形態に基づくプロセッサのブロック図である。 本発明のある実施形態に基づくマイクロプロセッサ・システムのブロック図である。 本発明のある実施形態に基づく方法の流れ図である。 本発明のもう一つの実施形態に基づく方法の流れ図である。
さまざまな実施形態において、SMM入場/退場に際して個々のスレッドの保存状態を記憶するために外部の物理的メモリを使うことに対する代替として、ダイ上記憶を使用することができる。対照的に、現行のシステムはSMMに入場および退場するために、外部の物理的メモリに依存する。このSMMのシステムRAMへの依存の結果、ミッションクリティカルな応用におけるスケーリング、パフォーマンスおよび信頼性に関係した制限が生じるが、そのような依存は、本発明のある実施形態を使って回避できる。本稿での用法では、「スレッド」という用語は、プロセスに関連付けられたアーキテクチャ状態についてのプロセッサ中の記憶(たとえば、レジスタ・ファイルおよび関連する構成設定および状態レジスタ)を含むハードウェア・スレッドを指しうることを注意しておく。本稿での用法では、「ハードウェア・スレッド」という用語は、「論理プロセッサ」という用語と同義に使われる。各プロセッサ・コアは複数の論理プロセッサを含んでいてもよく、各論理プロセッサは、専用のアーキテクチャ状態記憶を有するが、フロントエンド・ユニット、実行ユニットなどといった他のコア資源を共有する。
種々の実装において、SMMの間、アクティブ・スレッドがあればその保存状態を記憶しておくために設けられるダイ上記憶は、保存状態記憶のための小さな専用のメモリとしてはたらく、ダイ上静的RAM(SRAM: static RAM)またはプロセッサ自身の中のレジスタ・ファイルであることができる。いくつかのプロセッサは、電力管理のような特定のタスクのためのダイ上SRAMを含むことがある。該電力管理とは、たとえば、先進構成設定および電力インターフェース(ACPI: Advanced Configuration and Power Interface)状態に基づくようなOSに管理される低電力状態(たとえば、C6状態または他の電力管理動作)である。そのようなプロセッサでは、スレッド毎に分割した、このSRAMの一部を、各スレッドのSRAM保存状態のためにリザーブすることができる。一例として、各論理プロセッサは、SMM保存状態のために1キロバイト(KB)のSRAM記憶を使ってもよい。所与のプロセッサがこの量のSRAMをSMM保存状態のために割くことができない場合、ある実施形態は、C6フローのためにリザーブされているSRAMを利用できるよう実装されることができる。この場合、SMM内部のC6/C7遷移はより低い低電力状態(たとえばC3)に降格されることができる。SMM状態保存のために共有されるSRAM空間の互いに排他的な使用を保証するためである。いくつかのプロセッサはC6状態保存のための専用のSRAMを実装せず、代わりに最終レベル・キャッシュ(LLC: last level cache)の一部を、C6状態保存の間、プロセッサ状態を保存するために利用する。これらのプロセッサにおいて、SMM保存状態はLLC内に記憶されることができる。
いったん保存されると、この内部SMM保存状態は種々の仕方でアクセスされうる。例として、内部状態は、スレッド毎のモデル固有レジスタ(MSR: model-specific register)アドレッシングまたは上位互換な機構を使ってアクセスされることができる。従来では、プロセッサは、ある種のシステム・メモリ・アドレスにおいてSMM保存状態にアクセスできる。上位互換な機構は、これらのレガシー・メモリ・アドレスへの論理プロセッサのアクセスを捕捉して、それらを適切なSRAM位置にリダイレクトするプロセッサ中の論理を含む。そのようなリダイレクトは、既存の基本入出力システム(BIOS: basic input/output system)ソフトウェアとの絶対的な上位互換性が要求される場合に実装されることができる。これらのMSRは、SMMモードでのみ読まれたり書かれたりすることができ、SMM保存状態に関連する制約に従う。ある論理プロセッサが別のプロセッサの保存状態へのアクセスを必要とする場合、これはソフトウェア・プロトコルを介して達成できる。
いくつかの実施形態では、専用のプロセッサ識別子リーフ(leaf)(たとえばCPUIDリーフ)またはそのフィールドまたは機能イネーブルMSR(Model-specific Register)ビットが、内部SRAMの使用を有効にするために使うことができる。ここで図1を参照するに、本発明のある実施形態に基づくプロセッサのブロック図が示されている。図1に示されるように、プロセッサ100は多段(multi-stage)パイプライン式(pipelined)順序外(out-of-order)プロセッサであってもよい。プロセッサ100は、本稿で記載されるSMM技法に関連して使われるさまざまな機能を例解するために比較的単純化した図として示している。見て取れるように、プロセッサ100は、複数のプロセッサ・コア105を含み、単一の半導体ダイ上に形成されうるマルチコア・プロセッサであってもよい。図1の実施形態では四つのそのようなコアをもって示されているが、本発明の範囲がこの点に関して限定されないことを理解されたい。図1においてさらに見て取れるように、追加的なコンポーネントがプロセッサ100内に存在していてもよい。たとえば、統合メモリ・コントローラ(IMC: integrated memory controller)108が、静的ランダム・アクセス・メモリ(SRAM)106とともに存在していてもよい。上で論じたように、いくつかの実装では、このメモリは、普通ならSMRAMに記憶されるところのコンテキスト状態を本発明の実施形態に基づいて記憶するために使用されてもよい。さらに、プロセッサ100は、すべてのプロセッサ・コアの間で共有されている共有キャッシュであってもよい最終レベル・キャッシュ(LLC)109を含んでいてもよい。
図1に示されるように、プロセッサ100は、実行されるべきマクロ命令をフェッチしてそれらをコアにおけるのちの使用のために用意するために使用されうるフロントエンド・ユニット110を含む。たとえば、フロントエンド・ユニット110は命令プリフェッチャー、命令デコーダおよびトレース・キャッシュを、マイクロコード記憶およびマイクロ命令(μop)記憶とともに含んでいてもよい。命令プリフェッチャーは、メモリからマクロ命令をフェッチし、それらを命令デコーダに供給してもよい。命令デコーダはそれらのマクロ命令をプリミティブ、すなわちプロセッサによる実行のためのマイクロ命令にデコードする。トレース・キャッシュはデコードされたマイクロ命令を受け、それらをプログラム順序付けシーケンス(program ordered sequence)にまとめてもよい。もちろん、追加的なコンポーネントおよび機能がフロントエンド・ユニット110において実装されていてもよい。
フロントエンド・ユニット110および実行ユニット120の間には、マイクロ命令を受け取ってそれらを実行のために用意するために使用されうる順序外(OOO: out-of-order)エンジン115が結合される。より具体的には、OOOエンジン115は、マイクロ命令フローを並べ替え、実行のために必要とされるさまざまな資源を割り当てるとともに、レジスタ・ファイル130aのようなさまざまなレジスタ・ファイル内の記憶位置への論理レジスタのリネーミング(renaming)を提供するためのさまざまなバッファを含んでいてもよい。レジスタ・ファイル130は、整数演算および浮動小数点演算のための別個のレジスタ・ファイルを含んでいてもよい。それぞれ異なる論理プロセッサ用の複数のレジスタ・ファイル130a〜nが存在していてもよいことを注意しておく。さらなるレジスタ、すなわち状態および構成設定レジスタ135も存在していてもよい。見て取れるように、レジスタ135a〜nの各セットは異なる論理プロセッサ用であってもよい。これらさまざまなレジスタは、異なる動作モードのためにコアを構成設定するために、また実行されるスレッドおよび異なる命令に関して状態情報を提供するために、使用されてもよい。
図1に示した例では、そのようなレジスタはSMM保存状態レジスタ136を含んでいてもよい。さまざまな実装では、それぞれコア上で動作する所与のスレッドに関連付けられている複数のそのようなレジスタが存在していてもよい。上で論じたように、そのようなレジスタは、SMMにはいるときにコア自身の内部などにスレッドの状態が記憶されることができるようにするインジケータ、たとえばイネーブル・ビットを記憶してもよい。このインジケータが有効にされていない場合は、その代わりに、SMMにはいった時点でスレッドのコンテキストがSMRAMに記憶される。いくつかの実施形態では、このMSRは、他のプロセッサ機能を制御できる他のビットを含んでいてもよい。いくつかの実施形態では、インジケータを含むこのレジスタ・ファイル135は、SMMにおいてのみ変更可能であるようにされることができる。こうして、SMMの外部のマルウェア・コンポーネントによって悪意をもって変更されることから保護され、システムのセキュリティおよび堅牢性の両方が向上する。
さらに見て取れるように、レジスタ・ファイル135は一つまたは複数のSMM状態インジケータ・レジスタ138をも含んでいてもよい。そのようなインジケータ・レジスタは、ビットマップまたはビット・ベクトルの形であってもよく、ここで、各論理プロセッサが、該論理プロセッサがいつSMMにはいることを禁止されるか、あるいは該論理プロセッサが長いフロー実行の中にあるかどうかを指示するための位置をもつ。ある実施形態では、別個のレジスタがそのような各指示について存在していてもよい。あるいはまた、単一のレジスタが存在していてもよく、論理的に組み合わされたインジケータが、各論理プロセッサについてこれらの状態の一つの存在を指示するために使用されてもよい。これらのレジスタの使用に関するさらなる詳細は以下で述べる。
引き続き図1を参照するに、さまざまな資源が実行ユニット120中に存在していてもよい。それにはたとえば、数ある特化されたハードウェアの中でも、整数、浮動小数点および単一命令複数データ(SIMD: single instruction multiple data)論理ユニットが含まれる。結果は、リアイアメント(retirement)ユニット140に与えられてもよい。リアイアメント・ユニット140は、実行された命令が有効にリタイアされ、結果データがプロセッサのアーキテクチャ状態にコミットされることができるかどうか、あるいは命令の適正なリアイアメントを妨げる一つまたは複数の例外が発生したかどうかを決定するよう動作しうる。
図1に示されるように、リアイアメント・ユニット140はキャッシュ・メモリ150に結合されている。キャッシュ・メモリ150は一実施例では低レベル・キャッシュ(たとえばL1キャッシュ)であってもよいが、本発明の範囲はこの点に関して限定されるものではない。また、実行ユニット120はキャッシュ150に直接結合されることができる(図1には示さず)。キャッシュ・メモリ150から、より高いレベルのキャッシュ、システム・メモリなどとデータ通信が行われてもよい。図1の実施形態ではこの高レベルで示されているが、本発明の範囲がこの点に関して限定されるものではないことを理解されたい。たとえば、他の実施形態は、順序内(in-order)プロセッサにおいて実装されてもよい。
SMM保存状態を内部的にプロセッサに保存することによって、システムの信頼性および堅牢性が改善されうる。すなわち、典型的にはSMRAMが存在する外部の動的ランダム・アクセス・メモリ(DRAM)デバイスの組である物理的メモリはメモリ・エラーを起こしやすい。本発明の実施形態なしでは、SMM動作はその外部メモリを使い果たして、よってエラー状態において頼られることができない。その代わり、本発明の実施形態を使うと、エラーを処理する際に不揮発性空間からSMIハンドラを実行することによって、SMRAMメモリ信頼性が改善できる。たとえば、SMMハンドラは、メモリ・エラーを処理する間、BIOSフラッシュまたは外部SRAMのようなより堅牢な記憶から走らせることができる。また、SMM保存状態がプロセッサ内部であるとき、この記憶のアーキテクチャ状態は、ソフトウェア外部には、MSRを通じてのみ暴露されることができる。SMMコードが「再開(RSM: resume)」命令を実行した後に機械実行状態を復元するために必要とされるプロセッサのマイクロアーキテクチャ状態は、外部のソフトウェアに暴露される必要がない。外部のソフトウェアはこの内部機械状態にとって何の正当な用途もないからである。これは、悪意のあるソフトウェア・コードが機微なマイクロアーキテクチャ状態へのアクセスをもたないことをも意味する(保存されたデータ記憶がSMRAM内にあればそのようなアクセスをもつはずである)。それにより当該機械がより安全で、堅牢になる。
諸実施形態は、パフォーマンスおよびレイテンシも改善しうる。多くのサーバー・アプリケーション/オペレーティング・システムは非一様メモリ・アーキテクチャ(NUMA: non-uniform memory architecture)最適化をされており、BIOSは典型的には、連続するメモリ範囲であるSMRAM全体が単一のソケットにマッピングされるようメモリを構成設定する。したがって、すべてのSMM保存状態/復元状態動作は、SMRAMにとってローカルな一つのソケットに含まれるものを除いて、すべての論理CPUについてリモート書き込み/リモート読み出しのように見えるであろう。それぞれ12個のコアをもつ四つのソケットをもつサーバー構成についてのパフォーマンス解析によると、SMM保存状態書き込み動作は相互接続およびメモリ帯域幅によって制限されることができ、高々5マイクロ秒かかることができることが示される。アプリケーションがよりNUMA最適化されるにつれ、プロセッサはリモート・トラフィックのためにさらに少数のバッファを割り当てることがありうる。そうなると、SMRAM保存状態書き込みおよび読み出し動作は、さらに長い時間がかかる。オペレーティング・システムは典型的には、受け容れ可能なリアルタイム・パフォーマンスを維持し、高速ネットワーク・リンク上でのタイムアウトを回避するために、CPUがどれくらい長くSMM内にあることができるかについて制限をもつ。この制限を超えることは、OSの反応性、アプリケーション・レイテンシに影響し、さらにはオペレーティング・システムの誤動作につながることもありうる。したがって、本発明のある実施形態に基づくダイ上SMM保存状態を使うことは、レイテンシを短縮し、よってSMMイベントにサービスする(SMMの有用な作業)ためのSMMハンドラのために割り当てられるさらなる時間を可能にする。
さらに、諸実施形態はスケーラビリティを改善しうる。マルチプロセッサ・システムにおいて、SMIが発生するとき、システム中の全スレッドがその保存状態を、システム・ブートの際にシステムBIOSによって画定され、リザーブされる、外部システム・メモリ中のそれ自身の専用の保存状態領域に記憶しなければならない。システム中のすべてのスレッドの保存状態すべてを取り込むために必要とされるSMRAM空間としてリザーブされるべき物理的メモリの総量は、システム中のスレッド数に対して線形に増大する。対称的なマルチスレッディング・サポートをもつマルチコア、マルチソケット・システムについて、空間の量はかなり大きいことがある(ある実施形態では約256KBのオーダーになりうる)。SMM保存状態のためのダイ上記憶を設けることによって、すべてのコアおよびそのスレッドを収容するための拡大し続けるSMRAM領域の必要性が回避でき、それによりスケーリングが容易にされる。また、BIOSがスレッド毎にSMRAM中の一意的な重複しない領域を見出し、割り当てる必要性もなくなる。さらにまた、これはメモリ保護領域がシリコンにおいて実装されることを免除する。ホット・プラグ・シナリオでは、SMRAMにおけるアーキテクチャ的に画定されるSMM保存状態領域は1MB未満である。本発明の実施形態なしでは、BIOSはメモリ保護範囲を設定し、新しいプロセッサを追加するときは、OS攻撃および/または干渉を避けるために、データを退避する。諸実施形態では、保存される状態はもはやOS可視メモリ内に記憶されないので、これを行う必要がなくなる。
ここで図2を参照すると、本発明のある実施形態に基づくマルチプロセッサ・システムのブロック図が示される。図2に示されるように、マルチプロセッサ・システム200は複数のプロセッサ2101〜210n(概括してプロセッサ210)を含む。図2の実施形態ではそのようなプロセッサ四つが示されているが、本発明の範囲がこの点に関して限定されるものではないことを理解されたい。図2に示される実施形態では、非一様メモリ・アーキテクチャ(NUMA)システムが存在しており、システム・メモリ2201および2203が相互接続2171および2173を介してプロセッサ2101および2103にローカルに取り付けられる。こうして、プロセッサ2102および210nによるメモリへのアクセスは、プロセッサ2101および2103の一方との複数のポイントツーポイント(PTP: point-to-point)相互接続215のうちの一つを通じた通信を必要とする。図2の実装において見て取れるように、DRAMであってもよいメモリ2201はSMRAM 225を含む。このNUMA最適化アーキテクチャでは、SMRAM 225はシステム全体のためのシステム管理ストアである。よって、本発明の実施形態なしでは、各プロセッサは、SMM入場または退場の際、このSMRAM 225にコンテキストを保存/復元する必要がある。これはPTP相互接続215および相互接続2171での帯域幅の大幅な使用を引き起こすとともに、SMMへの入場およびSMMからの退場のためのレイテンシを増加させる。したがって、さまざまな実施形態において、各プロセッサ210は、一つまたは複数のコア212および統合メモリ・コントローラ214に加えて、SRAM 216を含んでいてもよい。さまざまな実施形態では、SRAM 216はSMM保存状態の記憶のために専用とされてもよい。すなわち、システム管理割り込みが起こるとき、各プロセッサ210のさまざまな論理プロセッサについてのコンテキスト状態がそのSRAM 216にローカルに記憶されてもよい。それによりSMRAM 225との状態情報の通信の必要性が回避される。他の実施形態では、専用のダイ上記憶の代わりに、このコンテキスト状態は、たとえばレジスタ・ファイルまたはキャッシュ・メモリのような他の位置の、チップ上レジスタに記憶されることができる。図2の実施形態ではこの特定の実装で示しているが、本発明の範囲はこの点について限定されるものではない。たとえば、諸実施形態はさらに、一様メモリ・アーキテクチャ・システムとともに使用されてもよい。
ここで図3を参照するに、本発明のある実施形態に基づく方法の流れ図が示されている。図3に示されるように、方法300は、状態情報を保存するためにSMRAMにアクセスする必要なしにSMMへの入場を扱うよう実行されうる。議論の簡単のため、単一のハードウェア・スレッドしか存在していないと想定されるが、多くの実装では複数のスレッドが一緒にSMMにはいってもよいことを注意しておく。図3で見て取れるように、方法300は、システム管理割り込みを受け取ることによって開始されうる(ブロック310)。この割り込みを受領すると、(たとえば所与のハードウェア・スレッドの)現在のアクティブ状態がダイ上記憶に保存されてもよい(ブロック320)。上で論じたように、このダイ上記憶は、専用のSRAM、別の目的(たとえば電力管理状態)のために使われるSRAM、レジスタ記憶、ダイ上キャッシュ記憶などであってもよい。
引き続き図3を参照するに、プロセッサ状態は、たとえばプロセッサ仕様によって定義されるところのSMM入場状態にマッチするよう修正される(ブロック330)。この状態は、さまざまな制御および構成設定レジスタについての値およびレジスタ・ファイルについての初期値を含む。よって、このセットアップは、SMM入場状態に関連付けられた所定の値を状態記憶にロードすることによって、SMMハンドラのために適切なSMM実行環境を用意する。SMM状態がセットアップされたら、制御はブロック340に進む。ブロック340では、SMMがSMRAMからのコードおよびデータを使って実行されてもよい。したがって、所望されるSMM動作が実行されてもよい。本発明の範囲はこの点に関して限定されるものではないが、SMM動作の例は電力管理動作、エラー処理動作などを含む。
次いで、SMM動作が完了したかどうかが判定されてもよい(菱形350)。まだであれば、SMMにおける実行は継続してもよい。完了していれば、プロセッサは再開命令を実行する(ブロック360)。この命令の結果として、前の状態が、ダイ上記憶からプロセッサのレジスタにロードし戻されてもよい(ブロック370)。次いで、プロセッサは、アクティブ状態に復元し戻されたこの、前の状態に対応するスレッドの実行を再開してもよい(ブロック380)。図3の実施形態ではこの特定の実装をもって示しているが、本発明の範囲がこの点に関して限定されるものではないことを理解されたい。たとえば、いくつかの実装では、特にSMMがDRAMエラーのようなエラーを処理するためであるとき、SMM動作をSMRAMから実行するのではなく、諸実施形態はSMM状態情報、SMMコードおよびデータをフラッシュメモリのような不揮発性記憶から取得してもよい。
上記のように、アクティブ状態のシリコン記憶はSMMレイテンシを減らすことができる。諸実施形態はさらに、ある種の状況においてより高速にSMMにはいることを可能にすることによって、さらにレイテンシを減らしてもよい。それについてこれから論じる。
SMMレイテンシは、単一SMI当たりプロセッサがSMM環境内にある期間の長さとして定義される。全SMMレイテンシに対する主として二つの寄与因子がある。プロセッサ・オーバーヘッドおよびOEM BIOSコードである。このレイテンシは、タイムアウトおよびクロック・ドリフトのようなOS環境に対する副作用を回避するために制御下に保たれる必要がある。将来の需要はこのレイテンシが減らされることを要求するであろうが、それは実現するのが難しくなる。現在のところ、SMIレイテンシは、約190マイクロ秒未満であるよう指定されている。インターネット・ポータル・データ・センターおよびユーティリティー・コンピューティングのような新しい使用モデルは、アプリケーションから、より予測可能なレイテンシを期待する。結果として、OSベンダーはSMMレイテンシのさらなる削減を求めている。他方、他の技術は時間とともにSMIレイテンシを増大させる可能性がある。たとえば、マルチコア・プロセッサに向けた業界の圧力は、SMIハンドラが増大し続ける数のプロセッサ・コアを集結させなければならないことを意味する。新しいSMMベースの機能も、SMMレイテンシに対して追加的な圧力をかける。たとえば、ハイエンドRAS機能はSMMに依拠する。さらに、一部のOEMは、自分たちの製品を差別化するために独特な電力管理機能を与えるため、SMMを利用する。多くのOEMは、1秒当たり8回もSMIを生成することが知られている。
ある種の命令セット・アーキテクチャ(ISA: instruction set architecture)は、すべてのキャッシュ・ラインを無効にしてメモリに書き戻すライトバック(write back)および無効化(invalidate)命令(たとえばwbinvd)のような命令を含む。これらの動作は完了までに、特に大きなキャッシュ・サイズをサポートするプロセッサでは、たとえば103ないし107プロセッサ・サイクルのオーダーの長い時間がかかることがある。さらに、SMI応答が遅延されることのできるある種のプロセッサ状態がある(たとえばC3およびC6低プロセッサ状態)。まとめて、これらの命令およびプロセッサ状態は「長いフロー(long flow)」状態と称される。これは、完了するのに異例なほど長いサイクル数(たとえば103クロックのオーダー)がかかることがあり、SMMにはいるのを遅らせることができる命令またはプロセスを意味するものと定義される。ある実施形態では、SMM入場を5ミリ秒より長く遅らせるいかなるフローも長いフローと称されることができる。SMMに関しては、一つまたは複数の論理プロセッサが長いフロー中にある場合、それはSMMにはいるのを遅らせる。
上に説明したように、SMMモナークは、すべての期待される論理プロセッサがSMMにはいってしまうまで待つ。SMMにはいると、各プロセッサはSMRAM中の自らのビットをセットして、SMMにはいったことを示す。モナークは、すべての期待されるプロセッサがそのビットをセットしてしまうまで待つ。一つまたは複数の論理プロセッサが長いフロー中にあってSMMに遅れてはいるときは、SMMモナークは引き留められ、よってSMMレイテンシが増す。さらに、スタートアップ・プロセッサ間割り込み待ち(WFS: wait for startup interprocessor interrupt)およびTXTスリープ状態のような、SMIイベントが禁止されるある種のアーキテクチャ状態がある。OS/BIOSが一つまたは複数の論理プロセッサをSMI禁止状態に入れる場合、その論理プロセッサは、OS/BIOSが明示的にこの状態から出すまで、SMMにはいらない。SMIイベントは他のすべてのプロセッサをSMMに入れるので、OSはSMIをマスク解除することができない。このシナリオのもとでは、SMMモナークは、SMI禁止されたプロセッサの存在を判別するためには、長いタイムアウトに頼らなければならない。これらのタイムアウトはSMM集結を遅らせ、全体的なSMMレイテンシを増大させるか、SMMイベント処理のために利用可能な時間を減らすかする。
さまざまな実施形態において、たとえいくつかの論理プロセッサが長いフロー中にある場合でも、SMM内部のタイムアウトの必要性が回避できる。そのようなタイムアウトをなくすことは、平均SMMレイテンシを10〜20%改善でき、最悪ケースのSMMレイテンシを少なくとも数ミリ秒改善できる。
諸実施形態は、長いフロー中にあるまたはSMI禁止状態にあるプロセッサは共有資源にアクセスする可能性は低いという事実に依拠している。さらに、そのようなプロセッサはSMIを引き起こした可能性は低く、よってその参加はSMI処理のために必要ではない。したがって、SMMモナークは、そのようなプロセッサがSMMにはいる前にSMM処理を進めることができる。
しかしながら、先に進む前に、SMMモナークは、どのプロセッサが長いフロー中にあるおよび/またはSMI禁止状態にあるかを信頼できる仕方で検出できなければならない。長いフロー中またはSMI禁止状態にあってビジーであるプロセッサを検出するために、諸実施形態は、それらの状態についてのインジケータを、たとえばビットマップによって、設けてもよい。ある実施形態では、そのような指標はグローバルに可視である、LONG_FLOW_INDICATION〔長いフロー指標〕およびSMI_INHIBITED_INDICATION〔SMI禁止指標〕と呼ばれる構成設定レジスタを介して提供されることができる。この実施形態では、ソケット内の各論理プロセッサに1ビットが割り当てられることができる。一例として、レジスタは図1のレジスタ138によって表現されてもよい。プロセッサ・マイクロコードが長いフローおよびSMI禁止状態への出入りに関わる実装では、マイクロコード/ハードウェアがそれらのレジスタ・ビットの中身を入れることができる。長いフローのいくつかは、5マイクロ秒より長い時間をかけることがあり、したがって、これらの状態にあるプロセッサを待たない能力は、SMMレイテンシの有意な節減を提供できる。将来のプロセッサはSMMマイクロコード入場フローについて5ミリ秒を超える時間がかかることがありえ、それ自身が長いフローと考えられることができる。SMMモナークはすべてのプロセッサの説明が付く、すなわちSMMに加わるか長いフローまたはSMI禁止状態にあると報告されるまで待つことができる。そのような判定において支援するために、下記で述べるように、SMRAMに記憶されるビットマップのような一つまたは複数のテーブルが、使用されることができる。
ある実装では、モナーク・プロセッサはその状態を保存し、インジケータ・レジスタのチェックを実行する前にSMMプリアンブル・コードを走らせる。これらのステップは、容易に0.5マイクロ秒より長くかかることがある。この継続時間は、いかなるインフライト割り込み(in-flight interrupt)のための伝搬時間よりずっと長く、コアへのSMI送達とそのインジケータ・レジスタの読み出しの間に競合条件がないことが保証される。遅延がある種の構成のもとでより小さい場合、モナーク・プロセッサは、埋め合わせるために小さな遅延ループを挿入することができる。
ここで図4を参照するに、本発明のもう一つの実施形態に基づく方法の流れ図が示されている。特に、図4は、すべての論理プロセッサがSMM状態において集結する必要がないときの、SMMへの出入りを扱うための流れ図を示している。このようにして、すべての論理プロセッサを待ってからSMM動作を実行することに関わるレイテンシが回避できる。図4で見て取れるように、方法400は、SMIイベントの生成によって開始されうる(ブロック410)。このSMIイベントはすべてのスレッドに伝搬されてもよい。議論の簡単のため、図4のスレッドは単一プロセッサ・ソケットに関してであると想定されていることを注意しておく。ただし、実装は、複数のソケットにまたがってSMMを集結させるために使われることができる。
次に、SMM集結状態にはいる各スレッドについて、SMMインジケータ・マップにおいてインジケータが設定されてもよい(ブロック420)。たとえば図3に関して上述した状態保存のような、SMMにはいるためのさまざまな準備動作が先にスレッドによって実行されることができることは理解しておくものとする。SMM集結状態にはいる各スレッドは、SMRAM内に記憶されていてもよいSMMインジケータ・マップにおいて、インジケータをセットしてもよい。ある実施形態では、このマップは、各論理プロセッサがマップのあるビットと関連付けられており、各ソケットの論理プロセッサがマップの異なるセグメントに分離されることのできるビットマップであってもよい。このように、所与のスレッドがSMMにはいるとき、ビットマップにおけるその対応するビットがセットされてもよい。次いで、SMM内部のスレッドの一つが、モナークまたは実行スレッドとして選択されてもよい(ブロック430)。さまざまな実施形態において、どのスレッドが実行スレッドとなるかの決定は多様でありうる。たとえば、モナークはあらかじめ選択されていてもよいし(たとえば、ソケット0上の論理プロセッサ0)、あるいは選出機構を介して動的に選択されることもできる。
引き続き図4を参照するに、各スレッドは次いで、該スレッドがモナークとして選択されたかどうかを判定する(菱形435)。そうでなければ、そのスレッドはスリープ状態にはいって、モナーク・スレッドが完了を合図するのを待ってもよい(ブロック470)。
こうして、制御はモナーク・スレッドのためのブロック440に移る。このブロックでは、すべてのスレッドについてACCOUNTED〔説明が付けられた〕状態が決定される。ある実施形態では、この状態は、SMRAM内にあってもよいスレッド存在マップに加えて、さまざまな構成設定レジスタ、SMMインジケータ・マップに基づいていてもよい。この存在マップは、SMMインジケータ・マップと同様のビットマップであってもよく、システム中に存在するスレッドを示すためにSMM初期化の際に設定されてもよい。ある実施形態では、ブロック440における決定は次のようなビットごとのOR演算であってもよい:
OR(LONG_FLOW_INDICATION,SMI_INHIBITED_INDICATION,IN_SMM_INDICATION)
ここで、LONG_FLOW_INDICATIONは、各ビットが対応するスレッドが長いフロー動作中にあるかどうかを示すビット・ベクトルを記憶する状態レジスタから得られる。SMI_INHIBITED_INDICATIONは、各ビットが対応するスレッドがSMI禁止状態にあるかどうかを示すビット・ベクトルを記憶する状態レジスタから得られる。IN_SMM_INDICATIONはSMMインジケータ・マップである。このビットごとのORの結果であるACCOUNTEDは、たとえばSMRAM中のビットマップに記憶されてもよい。この解析後、制御は菱形450に移り、ACCOUNTED状態〔説明が付けられたかどうかの状態〕がすべての存在するスレッドについてアクティブであるかどうかが判定されてもよい(菱形450)。これは、ACCOUNTED演算の結果と存在マップとの間の比較に基づいて決定できる。もしそうでない場合には、制御はもとのブロック440に移る。それ以外の場合には、制御はブロック455に移り、SMIイベントが処理されうる。こうして、モナーク・スレッドは所望されるSMMコードを実行しうる。モナーク・スレッドによって実行されるSMMの終結時に、制御はブロック460に移る。ブロック460では、ACCOUNTED状態およびSMMインジケータ・マップがリセットされてもよい(ブロック460)。すなわち、モナーク・スレッドはこれら両方のビットマップにおける値をリセットしてもよい。次いで、モナーク・スレッドは他の論理プロセッサに、SMIから復帰してもよいことを合図してもよい(ブロック465)。このようにして、他のスレッドは待ちループから解放される。こうして、ブロック475において、すべてのスレッドがSMMから復帰してもよい。図4の実施形態ではこの特定の実装をもって示されているが、本発明の範囲はこの点に関して限定されるものではない。
このように、諸実施形態は、メモリ依存性なしにSMMハンドラ実行を可能にし、信頼性を改善する。この機構は、SMMに付随するパフォーマンスおよびスケーラビリティの問題にも対処する。そのため、SMI処理は、マルチコア/マルチソケット・システムにおけるボトルネックになることを回避できる。このように、諸実施形態は、DRAM依存性をもつSMMコードの実行を回避し、高い可用性使用モデルを可能にする。ここで、SMMコードはメモリ・エラーを診断および訂正する。
諸実施形態はさらに、長いフローまたはSMI禁止状態にある論理プロセッサがあるときに低減したレイテンシをもってSMMにはいることを可能にする。対照的に、現在のところ、SMMコードが一つまたは複数のプロセッサがSMMに遅れて加わるまたはSMM禁止状態にあるかどうかを判定できる信頼できる機構はなく、よって、最大の長いフロー状態よりも大きいタイムアウトが設定される。この解決策は、信頼できず、実装が難しいことに加えて、SMMレイテンシを増大させ、OSリアルタイム応答を低下させるが、本発明の実施形態を使って克服できる。
諸実施形態は、コードにおいて実装されてもよく、システムが命令を実行するようプログラムするために使用できる命令が記憶されている記憶媒体上に記憶されてもよい。記憶媒体は、これに限られないが、フロッピー(登録商標)ディスク、光ディスク、光学式ディスク、固体ドライブ(SSD: solid state drive)、コンパクトディスク読み出し専用メモリ(CD-ROM)、書き換え可能型コンパクトディスク(CD-RW)および光磁気ディスクを含む任意の型のディスク、読み出し専用メモリ(ROM)、動的ランダム・アクセス・メモリ(DRAM)、静的ランダム・アクセス・メモリ(SRAM)のようなランダム・アクセス・メモリ(RAM)、消去可能型プログラム可能読み出し専用メモリ(EPROM)、フラッシュメモリ、電気的に消去可能なプログラム可能読み出し専用メモリ(EEPROM)のような半導体デバイス、磁気もしくは光学式カードまたは電子的な命令を記憶するのに好適な他の任意の型の媒体を含んでいてもよい。
本発明は限られた数の実施形態に関して記述されてきたが、当業者は、それから数多くの修正および変形を理解するであろう。付属の請求項は、本発明の真の精神および範囲内にはいるそのようなすべての修正および変形をカバーすることが意図されている。
いくつかの態様を記載しておく。
〔態様1〕
命令を実行し、システム管理モード(SMM)にはいるプロセッサ・コア内の論理プロセッサを有する装置であって、SMMにはいる際、前記論理プロセッサは、前記論理プロセッサについての前記プロセッサ・コアの状態記憶に存在しているアクティブな状態を前記論理プロセッサについての前記プロセッサ・コアの記憶ユニットに記憶し、SMMに関連する値を前記状態記憶中に挿入することによってSMM実行環境をセットアップし、
前記論理プロセッサが、システム管理ランダム・アクセス・メモリ(SMRAM)にではなく、前記記憶ユニットに、前記アクティブな状態を記憶できるようにされていることを示すインジケータを記憶する第一の状態レジスタをさらに有する、
装置。
〔態様2〕
前記第一の状態レジスタが、SMM外では変更可能でない、態様1記載の装置。
〔態様3〕
前記プロセッサ・コアが、前記SMRAMに記憶されているSMMコードを実行する、態様1記載の装置。
〔態様4〕
SMMがメモリ・エラーを解決するものであり、前記プロセッサ・コアが不揮発性メモリから復元SMMコードを取得するのであって、前記SMRAMから前記SMMコードを取得するのではない、態様3記載の装置。
〔態様5〕
前記プロセッサ・コアの前記論理プロセッサが長いフローの動作中であることを示すインジケータを記憶する第二の状態レジスタをさらに有しており、長いフローの動作とは少なくとも103クロックかかる動作である、態様1記載の装置。
〔態様6〕
前記プロセッサ・コアの前記論理プロセッサがシステム管理割り込み(SMI)禁止状態にあることを示すインジケータを記憶する第三の状態レジスタをさらに有する、態様5記載の装置。
〔態様7〕
SMMにはいった前記プロセッサ・コアの各論理プロセッサの指標を記憶するSMMインジケータ・マップをさらに有する、態様6記載の装置。
〔態様8〕
前記第一、第二および第三の状態レジスタがSMM外では書き込み不能である、態様6記載の装置。
〔態様9〕
命令を実行し、システム管理モード(SMM)にはいるプロセッサ・コア内の論理プロセッサを有する装置であって、SMMにはいる際、前記論理プロセッサは、前記論理プロセッサについての前記プロセッサ・コアの状態記憶に存在しているアクティブな状態を前記論理プロセッサについての前記プロセッサ・コアの記憶ユニットに記憶し、SMMに関連する値を前記状態記憶中に挿入することによってSMM実行環境をセットアップし、
前記プロセッサ・コアが複数の論理プロセッサを含み、
当該方法が、前記プロセッサ・コアのすべての論理プロセッサがSMMはいることなく、SMM動作を実行するモナーク・プロセッサをさらに有する、
装置。
〔態様10〕
前記モナーク・プロセッサは、前記プロセッサ・コアの論理プロセッサが長いフローの動作中であることを示す第一の状態レジスタ、前記プロセッサ・コアの論理プロセッサがSMI禁止状態にあることを示す第二の状態レジスタおよびSMMにはいった前記プロセッサ・コアの各論理プロセッサを示すSMMインジケータ・マップにアクセスし、それに基づいて、前記論理プロセッサのすべてが集結を実行することなく、要求されたSMM動作を実行するかどうかを決定し、長いフローの動作とは少なくとも103クロックかかる動作である、態様9記載の装置。
〔態様11〕
前記モナーク・プロセッサは、前記プロセッサ・コアの各論理プロセッサがSMMにはいった、長いフローの動作中であるまたはSMI禁止状態にある場合、前記論理プロセッサのすべてが前記集結を実行したかどうかにかかわりなく、前記要求されたSMM動作を実行する、態様10記載の装置。
〔態様12〕
システム管理割り込み(SMI)イベントに応答して、プロセッサ上で実行中のすべてのスレッドがシステム管理モード(SMM)集結状態にはいったかどうかを判定する段階と;
もしまだである場合、残っているスレッドが、長いフローの動作を実行中であるまたはSMI禁止状態にあるかどうかを判定し、もしそうであれば、前記残っているスレッドが前記長いフローの動作を実行するまたは前記SMI禁止状態にある間に、モナーク・スレッドを使って、前記SMIイベントを処理し、そうでなければ、前記残っているスレッドがSMM集結状態にはいるのを待ってから前記SMIイベントを処理する段階とを含み、長いフローの動作とは少なくとも103クロックかかる動作である、
方法。
〔態様13〕
SMM集結状態にはいる各スレッドについて、SMMインジケータ・マップ内のインジケータをセットする段階をさらに含む、態様12記載の方法。
〔態様14〕
スレッドが長いフローの動作中であることを示すよう、前記プロセッサの第一の状態レジスタのインジケータを設定する段階と;
スレッドがSMI禁止状態にあることを示すよう、前記プロセッサの第二の状態レジスタのインジケータを設定する段階とをさらに含む、
態様13記載の方法。
〔態様15〕
前記判定する処理が、前記SMMインジケータ・マップと、前記第一の状態レジスタと、前記第二の状態レジスタとの間のビットごとのOR演算を実行することを含む、態様14記載の方法。
〔態様16〕
スレッドがSMMにはいる際、前記モナーク・スレッドが、前記プロセッサの状態記憶に存在するアクティブな状態を、前記プロセッサの記憶ユニット中に記憶し、SMM状態を前記状態記憶に記憶する、態様12記載の方法。
〔態様17〕
第一のプロセッサと、第二のプロセッサと、動的ランダム・アクセス・メモリ(DRAM)とを有するシステムであって:
前記第一のプロセッサは、命令を実行しシステム管理モード(SMM)にはいる第一のコアと、前記第一のコアで実行されているスレッドが長いフローの動作中であるかどうかを示す第一のインジケータと、前記スレッドがシステム管理割り込み(SMI)禁止状態にあるかどうかを示す第二のインジケータと、記憶ユニットとを有し、SMMにはいる際、前記第一のコアは前記第一のコアの状態記憶に存在するアクティブな状態を前記記憶ユニット中に記憶し、SMM実行状態を前記状態記憶中に記憶し、前記記憶ユニットはSMMの間前記アクティブな状態を記憶するのに専用であり、
前記第二のプロセッサは、命令を実行しSMMにはいる第二のコアと、前記第二のコアで実行されている第二のスレッドが長いフローの動作中であるかどうかを示す第一のインジケータと、前記第二のスレッドがSMI禁止状態にあるかどうかを示す第二のインジケータと、第二の記憶ユニットとを有し、SMMにはいる際、前記第二のコアは前記第二のコアの状態記憶に存在するアクティブな状態を前記第二の記憶ユニット中に記憶し、SMM実行状態を前記状態記憶中に記憶し、前記第二の記憶ユニットはSMMの間前記アクティブな状態を記憶するのに専用であり、
前記DRAMは前記第一および第二のプロセッサに結合されており、前記DRAMの一部は当該システムのためのシステム管理ランダム・アクセス・メモリ(SMRAM)であり、
長いフローの動作とは少なくとも103クロックかかる動作である、
システム。
〔態様18〕
前記DRAMが非一様メモリ・アーキテクチャ(NUMA)において結合されており、前記第二のプロセッサは前記DRAMと前記第一のプロセッサを通じて通信する、態様17記載のシステム。
〔態様19〕
前記第二のプロセッサが、SMI信号に応答して前記SMRAMに前記アクティブな状態を記憶せず、その代わり、前記アクティブな状態を前記第二の記憶ユニットに記憶する、態様17記載のシステム。
〔態様20〕
前記第一のプロセッサおよび前記第二のプロセッサがそれぞれ少なくとも一つの論理プロセッサを含み、前記第一および第二のプロセッサの複数の論理プロセッサがSMMにはいったが前記第一および第二のプロセッサの少なくとも一つの論理プロセッサがSMMにはいっていない状態後にSMM動作を実行するモナーク・プロセッサを含む、態様17記載のシステム。
〔態様21〕
前記少なくとも一つの論理プロセッサが長いフローの動作中であるまたはSMI禁止状態にある、態様20記載のシステム。
〔態様22〕
態様20記載のシステムであって、前記モナーク・プロセッサが、前記第一のプロセッサのいずれかの論理プロセッサが長いフローの動作中であるかどうかを示す第一のビットマップ、前記第一のプロセッサのいずれかの論理プロセッサがSMI禁止状態にあるかどうかを示す第二のビットマップおよび前記第一のプロセッサの各論理プロセッサがSMM集結状態にはいったかどうかを示す第三のビットマップにアクセスし、それに基づいて、前記少なくとも一つの論理プロセッサがSMM集結状態にはいっていないときにSMM集結状態動作を実行するかどうかを決定する、システム。

Claims (18)

  1. コアのアクティブな状態を記憶する記憶ユニットと;
    命令を実行し、システム管理モード(SMM)にはいる前記コアとを有するプロセッサであって、前記コアは前記記憶ユニットに結合されており、
    前記コアが、前記コアの状態記憶に存在しているアクティブな状態を、システム管理ランダム・アクセス・メモリ(SMRAM)にではなく前記記憶ユニットに記憶できるようにされていることを示すインジケータを記憶する第一の状態レジスタを含む複数の状態および構成設定レジスタを前記コアは含み、
    SMMにはいる際、前記コアは、前記アクティブな状態を前記記憶ユニットに記憶し、SMMに関連する値を前記状態記憶中に挿入することによってSMM実行環境をセットアップする、
    プロセッサ。
  2. 前記第一の状態レジスタが、SMM外では変更可能でない、請求項1記載のプロセッサ。
  3. 前記コアが、前記SMRAMに記憶されているSMMコードを実行する、請求項1記載のプロセッサ。
  4. SMMがメモリ・エラーを解決するとき、前記コアが不揮発性メモリから復元SMMコードを取得するのであって、前記SMRAMから前記SMMコードを取得するのではない、請求項3記載のプロセッサ。
  5. 前記複数の状態および構成設定レジスタが、前記コアの論理プロセッサが長いフローの動作中であることを示すインジケータを記憶する第二の状態レジスタをさらに有しており、長いフローの動作とは少なくとも103クロックかかる動作である、請求項1記載のプロセッサ。
  6. 前記複数の状態および構成設定レジスタが、前記コアの前記論理プロセッサがシステム管理割り込み(SMI)禁止状態にあることを示すインジケータを記憶する第三の状態レジスタをさらに有する、請求項5記載のプロセッサ。
  7. SMMにはいった前記コアの各論理プロセッサの指標を記憶するSMMインジケータ・マップをさらに有する、請求項6記載のプロセッサ。
  8. 前記第一、第二および第三の状態レジスタがSMM外では書き込み不能である、請求項6記載のプロセッサ。
  9. プロセッサであって:
    フロントエンド・ユニットと;
    前記フロントエンド・ユニットに結合された複数のレジスタ・ファイルと;
    前記フロントエンド・ユニットに結合された複数のレジスタ・セットであって、各レジスタ・セットは、当該プロセッサが、システム管理モード(SMM)にはいる際、当該プロセッサの記憶ユニット中の前記複数のレジスタ・ファイルの一つに記憶されているアクティブな状態を記憶できるようにされていることを示すインジケータを記憶する第一のレジスタを含む、複数のレジスタ・セットと;
    命令を実行する複数の実行ユニットと;
    当該プロセッサがSMMにあるときに前記アクティブな状態を記憶する前記記憶ユニットとを有する、
    プロセッサ。
  10. 前記第一のレジスタが、SMM外では変更可能でない、請求項9記載のプロセッサ。
  11. 当該プロセッサが、当該プロセッサに結合されているシステム管理ランダム・アクセス・メモリ(SMRAM)に記憶されているSMMコードを実行する、請求項9記載のプロセッサ。
  12. SMMがメモリ・エラーを解決するとき、当該プロセッサが不揮発性メモリから復元SMMコードを取得するのであって、前記SMRAMから前記SMMコードを取得するのではない、請求項11記載のプロセッサ。
  13. 前記記憶ユニットが静的ランダム・アクセス・メモリである、請求項9記載のプロセッサ。
  14. 当該プロセッサがさらに、前記複数の実行ユニットにおいて実行される命令をリタイアさせるリタイア・ユニットを有する、請求項9記載のプロセッサ。
  15. 前記プロセッサが、複数のコアと、統合メモリ・コントローラと、共有されるキャッシュ・メモリとを含むマルチコア・プロセッサである、請求項9記載のプロセッサ。
  16. システム管理割り込み(SMI)イベントに応答して、プロセッサ上で実行中のすべてのスレッドがシステム管理モード(SMM)集結状態にはいったかどうかを判定する段階と;
    もしまだである場合、残っているスレッドが、選択された命令の集合の一つを実行中であるまたは選択されたプロセッサ状態にあるかどうかを判定し、もしそうであれば、前記残っているスレッドが前記選択された命令の前記一つを実行するまたは前記選択されたプロセッサ状態にある間に、モナーク・スレッドを使って、前記SMIイベントを処理し、そうでなければ、前記残っているスレッドがSMM集結状態にはいるのを待ってから前記SMIイベントを処理する段階とを含む方法であって、
    当該方法がさらに、
    SMM集結状態にはいる各スレッドについて、SMMインジケータ・マップ内のインジケータをセットする段階と;
    スレッドが前記選択された命令の前記一つを実行中であることを示すよう、前記プロセッサの第一の状態レジスタのインジケータを設定する段階と;
    スレッドが前記選択されたプロセッサ状態にあることを示すよう、前記プロセッサの第二の状態レジスタのインジケータを設定する段階とを含む、
    法。
  17. 前記判定する処理が、前記SMMインジケータ・マップと、前記第一の状態レジスタと、前記第二の状態レジスタとの間のビットごとのOR演算を実行することを含む、請求項16記載の方法。
  18. スレッドがSMMにはいる際、前記モナーク・スレッドが、前記プロセッサの状態記憶に存在するアクティブな状態を、前記プロセッサの記憶ユニット中に記憶し、SMM状態を前記状態記憶に記憶する、請求項16記載の方法。
JP2013250360A 2009-08-31 2013-12-03 システム管理モードのためのプロセッサにおける状態記憶の提供 Active JP5801372B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/550,737 US8578138B2 (en) 2009-08-31 2009-08-31 Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
US12/550,737 2009-08-31

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012517932A Division JP5430756B2 (ja) 2009-08-31 2010-08-02 システム管理モードのためのプロセッサにおける状態記憶の提供

Publications (2)

Publication Number Publication Date
JP2014075147A JP2014075147A (ja) 2014-04-24
JP5801372B2 true JP5801372B2 (ja) 2015-10-28

Family

ID=43525352

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012517932A Expired - Fee Related JP5430756B2 (ja) 2009-08-31 2010-08-02 システム管理モードのためのプロセッサにおける状態記憶の提供
JP2013250360A Active JP5801372B2 (ja) 2009-08-31 2013-12-03 システム管理モードのためのプロセッサにおける状態記憶の提供

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2012517932A Expired - Fee Related JP5430756B2 (ja) 2009-08-31 2010-08-02 システム管理モードのためのプロセッサにおける状態記憶の提供

Country Status (8)

Country Link
US (4) US8578138B2 (ja)
JP (2) JP5430756B2 (ja)
KR (3) KR101635778B1 (ja)
CN (1) CN102004668B (ja)
BR (1) BRPI1010234A2 (ja)
DE (1) DE102010034555A1 (ja)
GB (1) GB2510792A (ja)
WO (1) WO2011025626A2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8255594B2 (en) * 2009-10-15 2012-08-28 Intel Corporation Handling legacy BIOS services for mass storage devices using systems management interrupts with or without waiting for data transferred to mass storage devices
US8954790B2 (en) 2010-07-05 2015-02-10 Intel Corporation Fault tolerance of multi-processor system with distributed cache
US8819225B2 (en) * 2010-11-15 2014-08-26 George Mason Research Foundation, Inc. Hardware-assisted integrity monitor
US8892924B2 (en) 2011-05-31 2014-11-18 Intel Corporation Reducing power consumption of uncore circuitry of a processor
DE112011106032B4 (de) 2011-12-22 2022-06-15 Intel Corporation Energieeinsparung durch Speicherkanal-Abschaltung
AU2012375309A1 (en) * 2012-03-30 2014-09-25 Intel Corporation Reporting malicious activity to an operating system
JP2013214210A (ja) * 2012-04-02 2013-10-17 Nec Corp フォールトトレラントシステム、cpuの動作周波数変更方法、及びプログラム
US8984313B2 (en) * 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
US9383812B2 (en) 2012-09-28 2016-07-05 Intel Corporation Method and apparatus for efficient store/restore of state information during a power state
KR20150112075A (ko) * 2014-03-26 2015-10-07 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9396032B2 (en) * 2014-03-27 2016-07-19 Intel Corporation Priority based context preemption
US20160170767A1 (en) * 2014-12-12 2016-06-16 Intel Corporation Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
US9977682B2 (en) * 2015-12-09 2018-05-22 Intel Corporation System management mode disabling and verification techniques
US9898351B2 (en) * 2015-12-24 2018-02-20 Intel Corporation Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US11182315B2 (en) * 2017-02-10 2021-11-23 Intel Corporation Apparatuses, methods, and systems for hardware control of processor performance levels
US10678909B2 (en) * 2017-04-21 2020-06-09 Vmware, Inc. Securely supporting a global view of system memory in a multi-processor system
US10990159B2 (en) * 2017-04-25 2021-04-27 Apple Inc. Architected state retention for a frequent operating state switching processor
US10528398B2 (en) * 2017-09-29 2020-01-07 Intel Corporation Operating system visibility into system states that cause delays and technology to achieve deterministic latency
US10552280B2 (en) 2017-12-14 2020-02-04 Microsoft Technology Licensing, Llc In-band monitor in system management mode context for improved cloud platform availability
KR102623918B1 (ko) * 2017-12-25 2024-01-11 인텔 코포레이션 프리-메모리 초기화 멀티스레드 병렬 컴퓨팅 플랫폼
US11593154B2 (en) * 2018-12-20 2023-02-28 Intel Corporation Operating system assisted prioritized thread execution
KR20200114017A (ko) * 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
US11481206B2 (en) * 2019-05-16 2022-10-25 Microsoft Technology Licensing, Llc Code update in system management mode
US11119770B2 (en) * 2019-07-26 2021-09-14 Microsoft Technology Licensing, Llc Performing atomic store-and-invalidate operations in processor-based devices
US11385903B2 (en) 2020-02-04 2022-07-12 Microsoft Technology Licensing, Llc Firmware update patch
US11520653B2 (en) 2020-10-15 2022-12-06 Nxp Usa, Inc. System and method for controlling faults in system-on-chip
CN117331676B (zh) * 2023-11-30 2024-03-19 上海兆芯集成电路股份有限公司 系统管理模式进入方法、处理器和计算机系统

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369771A (en) * 1991-12-23 1994-11-29 Dell U.S.A., L.P. Computer with transparent power-saving manipulation of CPU clock
US5357628A (en) * 1992-03-25 1994-10-18 Intel Corporation Computer system having integrated source level debugging functions that provide hardware information using transparent system interrupt
US5764999A (en) * 1995-10-10 1998-06-09 Cyrix Corporation Enhanced system management mode with nesting
US5819020A (en) 1995-10-16 1998-10-06 Network Specialists, Inc. Real time backup system
US5689698A (en) 1995-10-20 1997-11-18 Ncr Corporation Method and apparatus for managing shared data using a data surrogate and obtaining cost parameters from a data dictionary by evaluating a parse tree object
US6240414B1 (en) 1997-09-28 2001-05-29 Eisolutions, Inc. Method of resolving data conflicts in a shared data environment
US6571206B1 (en) * 1998-01-15 2003-05-27 Phoenix Technologies Ltd. Apparatus and method for emulating an I/O instruction for the correct processor and for servicing software SMI's in a multi-processor environment
US6766326B1 (en) 2000-07-24 2004-07-20 Resty M Cena Universal storage for dynamic databases
US6848046B2 (en) 2001-05-11 2005-01-25 Intel Corporation SMM loader and execution mechanism for component software for multiple architectures
US8032592B2 (en) 2002-04-18 2011-10-04 Intuit Inc. System and method for data collection and update utilizing surrogate e-mail addresses using a server
EP1550192B1 (en) 2002-09-09 2009-11-11 Dell Marketing USA L.P. System and method for application monitoring and automatic disaster recovery for high-availability
US7152169B2 (en) * 2002-11-29 2006-12-19 Intel Corporation Method for providing power management on multi-threaded processor by using SMM mode to place a physical processor into lower power state
US7219241B2 (en) 2002-11-30 2007-05-15 Intel Corporation Method for managing virtual and actual performance states of logical processors in a multithreaded processor using system management mode
US7117319B2 (en) 2002-12-05 2006-10-03 International Business Machines Corporation Managing processor architected state upon an interrupt
JP2004220070A (ja) * 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US7380106B1 (en) 2003-02-28 2008-05-27 Xilinx, Inc. Method and system for transferring data between a register in a processor and a point-to-point communication link
US7251745B2 (en) 2003-06-11 2007-07-31 Availigent, Inc. Transparent TCP connection failover
US7363411B2 (en) 2003-10-06 2008-04-22 Intel Corporation Efficient system management synchronization and memory allocation
US7617488B2 (en) 2003-12-30 2009-11-10 Intel Corporation Method and apparatus and determining processor utilization
US7653727B2 (en) 2004-03-24 2010-01-26 Intel Corporation Cooperative embedded agents
US8996455B2 (en) 2004-04-30 2015-03-31 Netapp, Inc. System and method for configuring a storage network utilizing a multi-protocol storage appliance
US7487222B2 (en) 2005-03-29 2009-02-03 International Business Machines Corporation System management architecture for multi-node computer system
US7818388B2 (en) 2005-10-07 2010-10-19 International Business Machines Corporation Data processing system, method and interconnect fabric supporting multiple planes of processing nodes
US7433985B2 (en) * 2005-12-28 2008-10-07 Intel Corporation Conditional and vectored system management interrupts
US20070156960A1 (en) 2005-12-30 2007-07-05 Anil Vasudevan Ordered combination of uncacheable writes
US8973094B2 (en) 2006-05-26 2015-03-03 Intel Corporation Execution of a secured environment initialization instruction on a point-to-point interconnect system
US20080040524A1 (en) 2006-08-14 2008-02-14 Zimmer Vincent J System management mode using transactional memory
US7555671B2 (en) 2006-08-31 2009-06-30 Intel Corporation Systems and methods for implementing reliability, availability and serviceability in a computer system
JP4802123B2 (ja) 2007-03-07 2011-10-26 富士通株式会社 情報送信装置、情報送信方法、情報送信プログラムおよび該プログラムを記録した記録媒体
US20090037932A1 (en) * 2007-08-01 2009-02-05 Clark Michael T Mechanism for broadcasting system management interrupts to other processors in a computer system
US7831858B2 (en) 2007-08-31 2010-11-09 Intel Corporation Extended fault resilience for a platform
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US7996663B2 (en) 2007-12-27 2011-08-09 Intel Corporation Saving and restoring architectural state for processor cores
US7913018B2 (en) * 2007-12-28 2011-03-22 Intel Corporation Methods and apparatus for halting cores in response to system management interrupts
US7802042B2 (en) * 2007-12-28 2010-09-21 Intel Corporation Method and system for handling a management interrupt event in a multi-processor computing device
US7991933B2 (en) * 2008-06-25 2011-08-02 Dell Products L.P. Synchronizing processors when entering system management mode

Also Published As

Publication number Publication date
US10169268B2 (en) 2019-01-01
JP2012531680A (ja) 2012-12-10
US9465647B2 (en) 2016-10-11
GB2510792A (en) 2014-08-20
KR101635778B1 (ko) 2016-07-04
KR20120061938A (ko) 2012-06-13
KR20130081302A (ko) 2013-07-16
WO2011025626A3 (en) 2011-07-14
KR101392109B1 (ko) 2014-05-07
WO2011025626A9 (en) 2011-05-26
US20110055469A1 (en) 2011-03-03
US20140040543A1 (en) 2014-02-06
CN102004668A (zh) 2011-04-06
JP5430756B2 (ja) 2014-03-05
CN102004668B (zh) 2014-08-20
KR101572079B1 (ko) 2015-11-27
BRPI1010234A2 (pt) 2016-03-22
JP2014075147A (ja) 2014-04-24
US8578138B2 (en) 2013-11-05
KR20130081301A (ko) 2013-07-16
GB201122094D0 (en) 2012-02-01
DE102010034555A1 (de) 2011-03-03
WO2011025626A2 (en) 2011-03-03
US20180143923A1 (en) 2018-05-24
US20170010991A1 (en) 2017-01-12

Similar Documents

Publication Publication Date Title
JP5801372B2 (ja) システム管理モードのためのプロセッサにおける状態記憶の提供
US10489317B2 (en) Aggregation of interrupts using event queues
US10877766B2 (en) Embedded scheduling of hardware resources for hardware acceleration
TWI512448B (zh) 用以啟用處理器等待狀態之指令
US9423959B2 (en) Method and apparatus for store durability and ordering in a persistent memory architecture
US11360809B2 (en) Multithreaded processor core with hardware-assisted task scheduling
US20090037932A1 (en) Mechanism for broadcasting system management interrupts to other processors in a computer system
WO2012026877A1 (en) Context switching
US20140129784A1 (en) Methods and systems for polling memory outside a processor thread
US11868306B2 (en) Processing-in-memory concurrent processing system and method
US8490071B2 (en) Shared prefetching to reduce execution skew in multi-threaded systems
US11640305B2 (en) Wake-up and timer for scheduling of functions with context hints
US9396142B2 (en) Virtualizing input/output interrupts
US10564972B1 (en) Apparatus and method for efficiently reclaiming demoted cache lines
US20190377493A1 (en) Supporting hierarchical ordering points in a microprocessor system
US20190205061A1 (en) Processor, method, and system for reducing latency in accessing remote registers
JP3900499B2 (ja) 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置
US10051087B2 (en) Dynamic cache-efficient event suppression for network function virtualization

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150629

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: 20150728

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150826

R150 Certificate of patent or registration of utility model

Ref document number: 5801372

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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