システムマネジメントモード

システムマネジメントモード (SMM) はx86の動作モードのひとつ。Intel 80386SLにおいて導入された。

特徴は、BIOSによってのみ使用可能で、オペレーティングシステム (OS) を含むユーザからアクセスの出来ない独立した環境を提供することである。

システムマネジメント割り込み (SMI) と呼ばれる、最高の優先度を持ったハードウエア割り込みを契機に、メモリ空間上の設定された場所に専用の動作環境の入ったSMRAMと呼ばれるRAMをマップし、その中に移行前のレジスタを含む全てのCPUコンテキストをセーブしてSMMは実行される。

通常SMRAMは、A0000h-BFFFFh (128KB) のレガシーVGAのフレームバッファと同じメモリ空間にマップされ、実体は裏に隠れた物理メモリである。CPUがシステムマネージメントモードに移行すると、CPUから発行されるリクエストには全てSMMフラグが付加され、MCH等のチップセットによりリクエストのルーティング先が切り替えられる。つまり通常時、A0000h〜BFFFFh空間に対するCPUからのリクエストはVGAへルーティングされるが、SMM時に限り物理メモリにルーティングされる。この機能によりSMRAMはSMM時のみアクセス可能な空間として保護される。チップセットによっては、初期化後、二度とSMM以外では通常のメモリ空間にマップできないようにすることが可能である。

SMMはリアルモードに似た環境で、デフォルトのレジスタアクセスは16ビットであるが、プレフィックスによって、レジスタアクセスのみならず、メモリアクセスも32ビットアクセスが可能である。また、通常SMRAMは非キャッシュ空間として扱われるが、キャッシュ空間としてアクセスするための、High-SMRAM空間が定義されたり、さらにSMRAM容量の不足を補うために、Extended SMRAM空間として、4GB以下かつ物理メモリの最上位に定義するチップセットも存在している。

このモードは、電源管理イベントを受け付けることによってAPMの実装に使われる他、ホットキーによって、OSが動いている最中にBIOSメニューを表示することを可能にしたり、OSから透過なことから、USBキーボードをATキーボードに見せるエミュレーションにも使われている。また、ACPIにおいては、唯一、BIOSコードを動作させる方法でもあり、BIOSにACPIモードに入ったことを通知するために、SMIを起こすI/Oポートが規格として定義されている他、ベンダによっては、独自のBIOSとのインターフェイスをSMIを通して行うことが可能である。

関連項目 編集