[轉] SCI v.s SMI 基本概念

出處:http://biosengineer.blogspot.tw/2007/10/sci-vs-smi.html

SCI v.s SMI 基本概念

這邊大概描述一下這兩種東西的不同處(BIOS 觀點):

SMM is entered via the SMI (system management interrupt).
SMI – System Managment interrupt
SCI – System Control interrupt

由上面字義的解釋可以得知幾件事情:
1. SMI pin 觸發後會使CPU 進入SMM Mode,而BIOS會把某些程式碼放在SMM 所在位置(SMRAM)
所以簡單說就是SMI pin 觸發後,CPU會去執行BIOS中的某個程式碼,至於是哪段程式碼,就要看BIOS註冊了哪個Functon。

SMI pin–> CPU SMM Mode –> BIOS routine

2. SCI pin 觸發後是系統OS 接手後面的事情。 所以SCI觸發後,CPU會去執行某個放在中斷描述表中的程式(IDT),一般都是指向某個驅動程式(ACPI.sys )。
所以簡單說就是當SCI pin 觸發後,ACPI driver會通知相關的驅動程式(ACPI EC Driver),然後跟EC BIOS取得一個代碼,而這個代碼就是ASL Code中的Qxx Number ,接著OS 會去執行某一段ASL Code ,一般都是Method(Qxx)。至於Method(Qxx) 內要做什麼事情就要看一些BIOS Features Spec的定義。

SCI pin –> OS Acpi Driver –> ASL Code (Q event) –> ? (看BIOS Spec需求)

結論:
IA32架構中,EC Chipset會連接 2 pins(SCI/SMI)到I/O Control Host ,接著當EC 去拉這兩根pin的電位的時候(Low/High active) 南橋會告知CPU 處理後續動作(進入SMM Mode執行某段BIOS Code或是執行OS內的ACPI Driver),接著後續的動作就如同你們在BIOS 程式碼中看到的部份。

至於詳細設定資料請參考ACPI Spec、ICH Spec與IA32 Spec SMM Mode章節所描述,這部份是屬於經驗累積,江湖一點訣點破就不值錢 ^^b。

另外,為何要用SCI/SMI 則是在IA32 系統發展史中有說明,如果有興趣的人可以從APM/ACPI 歷史開始看。

未經允許不得轉載:GoMCU » [轉] SCI v.s SMI 基本概念