smm

系統管理模式

SMM是一個對所有Intel處理器都統一的標準體系結構特性,系統管理模式(SMM)提供與傳統IA-32架構中的系統管理中斷(SMI)處理程序相同的執行環境。

目錄

簡介


System Management Mode系統管理模式
SMM是一個對所有Intel處理器都統一的標準體系結構特性。出現於Intel386 SL晶元。這個模式為OS實現平台指定的功能(比如電源管理或系統安全)提供了一種透明的機制。當外部的SMM interrupt pin(SMI#)被激活或者從APIC(Advanced Programming Interrupt Controller)收到一個SMI,處理器將進入SMM。在SMM下,當保存當前正在運行程序的整個上下文(Context)時,處理器切換到一個分離的地址空間。然後SMM指定的代碼或許被透明的執行。當從SMM返回時,處理器將回到被系統管理中斷之前的狀態。
系統管理模式(SMM)提供與傳統IA-32架構中的系統管理中斷(SMI)處理程序相同的執行環境。SMM支持從一個模式到另一個操作模式(包括IA-32e和傳統模式)的轉換。一個SMI處理程序能夠通過PSE機制處理任何的物理存儲頁。然而由於不支持PAE,SMM環境不支持64位線性地址。提交給SMI的事務,處理器將轉換到SMM,並根據SMM存儲映射(save map)將存儲器的狀態存儲到SM RAM中。因此,一個SMI處理程序將執行在和傳統IA-32架構中一樣的環境中。
通俗的講,Intel在它的CPU里專門留了個模式叫System Managment Mode(SMM),擁有最高的許可權.SMM中斷的時候,就連號稱無所不能的Windows的也不知道,這樣就可以給CPU補bug了,舉個例子,比如某天Intel的一個CPU對ADD指令給出錯誤操作結果,那麼就可以利用SMM在每次執行這個指令的時候,中斷一下,由BIOS軟體給出正確的執行結果.這就達到了給硬體修復缺陷的目的.這樣Intel就不用招回它的CPU了.此外,每次BIOS開機的時候,事實上都會更新CPU Microcode,同樣是用來給CPU補bug的.所以很多時候,刷BIOS刷出問題,事實上某個CPU的bug沒有補上導致出了問題出現。