本頁使用了標題或全文手工轉換

進階組態與電源介面

維基百科,自由的百科全書
跳至導覽 跳至搜尋

進階組態與電源介面英文Advanced Configuration and Power Interface縮寫ACPI),是1997年由英特爾微軟東芝公司共同提出、制定提供作業系統應用程式管理所有電源管理埠,是一種工業標準,包括了軟體和硬體方面的規範。2000年8月康柏和鳳凰科技加入,推出 ACPI 2.0規格。2004年9月惠普取代康柏,推出 ACPI 3.0規格。2009年6月16日則推出 ACPI 4.0規格。2011年11月23日推出ACPI 5.0規格。由於ACPI技術正被多個作業系統和處理器架構採用,該規格的管理模式需要與時俱進。2013年10月,ACPI的推廣者們一致同意將ACPI的屬有歸到UEFI論壇。今後新的ACPI規格將由UEFI論壇制定。

概要[編輯]

作為標準中最廣為認可的部分,電源管理經歷了較多的改進。

早先,進階電源管理(APM, Advanced Power Management)將電源管理幾乎完全分配給BIOS控制,這大大的限制了作業系統在控制電能消耗方面的功能。

當前,ACPI的電源管理特性以前只適用從攜帶式電腦(例如膝上型電腦)到桌上型電腦工作站伺服器。例如,系統可能會進入極低功率消耗狀態。這些就是可利用在多數桌上型電腦上的「睡眠」和「休眠」設定。睡眠和休眠狀態可以通過移動滑鼠,按鍵盤按鍵,從另外一台電腦接收一條資訊(如果連接到了一個區域網路)或者重大系統錯誤來喚醒系統。

現在,如果ACPI在BIOS和其他系統硬體中被實現,它就可以由作業系統所呼叫(觸發)。

ACPI可以實現的功能包括:

  • 系統電源管理(System power management)
  • 裝置電源管理(Device power management)
  • 處理器電源管理(Processor power management)
  • 裝置和處理器效能管理(Device and processor performance management)
  • 組態/隨插即用(Configuration/Plug and Play)
  • 系統事件(System Event)
  • 電池管理(Battery management)
  • 溫度管理(Thermal management)
  • 嵌入式控制器(Embedded Controller)
  • SMBus控制器(SMBus Controller)

Windows 98是微軟第一個支援ACPI的作業系統FreeBSD v5.0是支援ACPI的第一個UNIX作業系統 [來源請求]LinuxNetBSDOpenBSD都支援ACPI。

ACPI術語[編輯]

  • 進階組態電源管理埠(Advanced Configuration and Power Interface (ACPI))
按照在本文中的定義, ACPI是一種描述硬體埠的方法,要足夠抽象以允許靈活創新的硬體實現,並且足夠具體以允許shrink-wrap OS code使用這個硬體埠
  • ACPI硬體(ACPI Hardware)
它是一種電腦硬體,具有支援OSPM所必備的特性,而且還具有特定的埠,這些埠的特性是由ACPI規範所指定的描述表(Description Tables)所描述的。
  • ACPI命名空間(ACPI Namespace)
一個樹狀層次機構,在受作業系統控制的記憶體裡面,這段記憶體裡面包含命名物件(named objects)等。這些物件(objects)可以是資料物件,控制方法物件,匯流排/裝置包物件等。作業系統通過從駐留在 ACPI BIOS 中的 ACPI Tables 載入載出(loading and/or unloading)定義塊(definition blocks),來動態改變命名空間(namespace)的內容。在ACPI Namespace 中的所有資訊都來自 Differentiated System Description Table (DSDT),DSDT 裡面包含了 Differentiated Definition Block 還有一個或者多個其他的定義塊(definition blocks)。
  • ACPI機器語言(ACPI Machine Language (AML))
是一種由ACPI相容的OS支援的虛擬機器的虛擬碼(Pseudo-code),裡面寫有ACPI控制方法和控制物件。
  • 進階可程式化中斷控制器(Advanced Programmable Interrupt Controller (APIC))
一個中斷控制器架構,通常多見於Intel32位元架構(Intel Architecture-based 32-bit)的PC系統。APIC架構支援多處理器中斷管理(中斷均勻的分布在所有處理器),多I/O子系統支援,與8259A相容,並且支援處理器內部中斷(Inter-Processor Interrupt, IPI)。這個架構由直屬於處理器的本地APICs(Local APICs)和在(南橋)晶片中的I/O APIC組成。
  • ACPI源語言(ACPI Source Language (ASL))
一種和AML等同的程式語言。ASL編譯以後就是AML鏡像(AML images)。
  • 控制方法(Control Method)
控制方法定義OS如何執行一個簡單的硬體任務。例如,OS呼叫控制方法(Control Method)去讀取一個高溫區的溫度。控制方法是用一種叫做AML的編碼語言寫的,AML可以被相容ACPI的OS所解釋並執行。ACPI相容的系統必須在ACPI table中提供一組最小的控制方法。OS提供一組well-defined 的控制方法,以使ACPI table開發者能夠在他們的控制方法中參照。OEM廠商可以通過,要麼Including control methods in the BIOS that test configurations and respond as needed,要麼為晶片組的不同修訂版包含一組不同的控制方法,來使一個BIOS能夠同時支援晶片組的不同修訂版。
  • 中央處理器或者處理器(Central Processing Unit (CPU) or Processor)
  • 定義區段(Definition Block)
Definition Blockl以資料和控制方法(編碼成AML)的形式包含關於硬體實現和組態詳細資訊。OEM廠商可以在ACPI Tables中提供一個或者多個Definition Blocks。有一個definition block是必須被提供:那就是Differentiated Definition Block,它描述了基本的系統。在裝載Differentiated Definition Block之後,緊接著OS會把Differentiated Definition Block的內容插入到ACPI Namespace。OS可以動態的從the active ACPI Namespace插入和刪除的其他definition blocks,可以包含指向Differentiated Definition Block的參照。
  • 裝置(Device)
  • 裝置上下文(Device Context)
裝置中包含的變化的資料;通常是揮發性(volatile)資料。當進入或者離開特定的狀態(states)的時候,裝置應該忘記這些資訊,在這種情況下OS軟體負責儲存並恢復這些資訊。裝置上下文(Device Context)指的是包含在裝置周邊的小數量的資訊。同樣可以看看System Context。
  • 區分系統描述表(Differentiated System Description Table (DSDT))
OEM廠商必須為ACPI相容的OS提供一個DSDT。這個DSDT包含Differentiated Definition Block,它能提供關於基本系統的實現和組態資訊。OS總是在ACPI Namespace中插入DSDT資訊,當系統啟動的時候,而且絕不會刪除它。
它是一個在OS和韌體平台之間的埠。這個埠的形式是一種包含有平台相關資訊的資料表,and boot and run-time service calls that are available to the OS and loader。這些一起為啟動OS提供一個標準的環境。
  • 嵌入式控制器(Embedded Controller)
  • 嵌入式控制器介面(Embedded Controller Interface)
  • 韌體ACPI控制結構(Firmware ACPI Control Structure (FACS))
在讀寫記憶體中的一種結構,BIOS用它來實現韌體和OS之間的資訊交換(handshaking )。通過FADT(Fixed ACPI Description Table)FACS被轉到相容ACPI的OS中。FACS包含上次啟動時的系統硬體簽章,firmware waking vector,和Global Lock。
  • 固定ACPI描述表(Fixed ACPI Description Table (FADT))
一個包含ACPI 硬體暫存器塊(Hardware Register Block)的實現和組態詳細資訊的表,OS需要用這些組態資訊來直接管理ACPI硬體暫存器塊和DSDT的實體位址,DSDT則包含其他平台的實現和組態詳細資訊。 OEM廠商必須在RSDT/XSDT中提供FADT給相容ACPI的OS。當系統啟動的時候,OS則總是把已經定義好了的namespace資訊(它存在於DSDT的Differentiated Definition Block中)插入到ACPI Namespace,並且OS絕不會刪除它。
  • 固定特徵(Fixed Features)
ACPI埠提供的一組特徵。ACPI規範限制硬體編程模型(hardware programming model)在哪產生還有如何產生的。所有的Fixed Features,如果被使用了,會按照本片規範中的描述進行實現,以使OSPM能夠直接存取Fixed Features暫存器(fixed feature registers)。
  • 固定特徵事件(Fixed Feature Events)
一組事件,當Fixed Feature暫存器中的一對狀態和事件位(event bits)被在同一時間設定時,這組事件會在ACPI埠處發生。當一個Fixed Feature時間發生時,系統控制中斷(SCI,system control interrupt)is raised。對於ACPI Fixed Feature Events來說OSPM(or an ACPI-aware driver)扮演事件的處理者。
  • 固定特徵暫存器(Fixed Feature Registers)
一組在fixed feature register space中的硬體暫存器,fixed feature register space在系統I/O位址空間的特殊的位址里。ACPI為fixed features定義了暫存器塊(register blocks)(每個暫存器塊從FADT那裡得到一個單獨的指標)
  • 一般目的事件暫存器(General-Purpose Event Registers)
The general-purpose event registers contain the event programming model for generic features. All general-purpose events generate SCIs.
  • 一般特徵(Generic Feature)
  • 全局系統狀態(Global System States)
Global System States適用於整個系統,而且對於用戶是可見的。各種不同的Global System States在ACPI規範中是從G0標記到G3的。
  • 省略位(Ignored Bits)
在ACPI硬體暫存器中的一些沒有被使用的位(bits),在ACPI規範中會指定這些位是「ignored」的。在讀的時候,軟體會忽略ACPI硬體暫存器中的Ignored Bits位(而不去讀取它),寫的時候,會保護Ignored Bits(不去寫這寫位)。
  • Intel個人電腦架構(Intel Architecture-Personal Computer (IA-PC))
一種對於電腦的一般描述術語,這種電腦的處理器架構符合Intel處理器家族基於Intel架構指令集(Intel Architecture instruction set)的定義,並且有工業標準(industry-standard)PC的結構。
  • I/O APIC(Input/Output Advanced Programmable Interrupt Controller)
一個輸入輸出進階可程式化中斷控制器,用來從裝置傳遞中斷給處理器裡面的本地APIC(local APIC)。
  • I/O SAPIC
An Input/Output Streamlined Advanced Programmable Interrupt Controller用來從裝置傳遞中斷給處理器裡面的本地APIC(local APIC)。應用於安騰處理器(Itanium)。和APIC的不同可以看看Intel® Itanium® Processor Family Interrupt Architecture Guide ,PDF文件的最後一章會講到不同點。
  • 老式的(Legacy)
這是一種電腦狀態,在這個電腦狀態下電源管理策略是由平台硬體/韌體決定的。在如今的系統中,傳統電源管理特性被用來支援安裝有傳統OS的電腦中的電源管理,這種傳統OS並不支援OS直接管理電源架構(OS-directed power management architecture)。
  • 老式的硬體(Legacy Hardware)
沒有ACPI或者OSPM電源管理支援的電腦系統。
  • 老式的作業系統(Legacy OS)
此類的作業系統無法得知或對系統的電源管理功能做管理,包含在此類型內的如一些支援APM 1.x的作業系統。
  • 本地APIC(Local APIC)
接收來自I/O APIC的中斷。
  • 本地SAPIC(Local SAPIC)
接收來自I/O SAPIC的中斷。關於SAPIC,請看「I/O SAPIC」。
  • 複合APIC描述表(Multiple APIC Description Table (MADT))
它被用在支援APIC和SAPIC的系統上,以描述APIC的實現。Following the MADT is a list of APIC/SAPIC structures that declare the APIC/SAPIC features of the machine.
  • 物件(Object)
ACPI Namespace的節點就是objects,這些objects被OS用system definition tables中的資訊插入tree。這些objects可以是資料物件(data objects),包物件(package objects),控制方法物件(control method objects)等。包物件refer to其他物件(objects)。物件同樣擁有類型(type),大小(size),和相對名稱(relative name)。
  • 物件名(Object name)
ACPI Namespace的一部分。有一組規則for naming objects。
  • 作業系統直接電源管理(Operating System-directed Power Management (OSPM))
電源(和系統)管理的一個模型,在其中OS扮演重要的角色,使用全局資訊為手邊的任務最佳化系統行為(system behavior)。
  • 包(Package)
一組objects。
  • 電源開關(Power Button)
用戶按的按鈕或者其他有觸點的開關(switch contact)裝置,通過它可以把系統從睡眠或者soft off狀態切換到工作狀態,還可以給OS傳送訊號使OS從睡眠或者soft off狀態恢復到工作狀態。
  • 電源管理(Power Management)
一種最小化系統電源消耗的軟硬體機制,管理系統熱量限制,延長系統電池使用時間(battery life)。電源管理在系統速度,噪音,電池使用時間,處理器速度,還有電源消耗之間取得平衡。一些system functions,比如appliance (for example, answering machine, furnace control) operations,需要電源管理。
  • 電源資源(Power Resources)
裝置需要的資源(比如power planes和clock sources),裝置需要在給定的電源狀態下對這些資源進行操作。
  • 電源來源(Power Sources)
  • 暫存器分組(Register Grouping)
由兩個暫存器塊組成(它有兩個指向兩個不同暫存器塊的指標)。在暫存器分組(register grouping)內部的固定位可以被在兩個暫存器塊(register blocks)之間拆分。這就允許了在暫存器分組內部的位可以被在兩個晶片(chips)之間拆分。
  • 保留位(Reserved Bits)
在ACPI硬體暫存器中有一些沒有被使用的位,在ACPI規範中被稱為保留位。為了未來能夠擴充,硬體暫存器保留位總是被歸零,並且寫入的資料不會造成其他的影響。OSPM的實現必須往所有使能和狀態暫存器的保留位寫「0」,同樣還要往控制暫存器(control registers)的preserve bits寫「0」
  • 根系統描述指標(Root System Description Pointer (RSDP))
相容ACPI的系統必須在系統低位址空間(system’s low address space)提供一個RSDP。這種結構的唯一目的就是提供RSDT和XSDT的實體位址。
  • 根系統描述表(Root System Description Table (RSDT))
signature為RSDT的table,它跟隨在一組指向其他系統描述表(system description tables)的物理指標之後。OS通過跟隨RSDP結構中的指標來定位RSDT。

狀態[編輯]

全局狀態(Global System States)[編輯]

ACPI規範定義了一台相容ACPI的電腦系統可以有以下七個狀態(所謂的全局狀態):

  • G0('S0)正常工作狀態:電腦的正常工作狀態-作業系統和應用程式都在執行。CPU(s)執行指令。 在這個狀態下(即沒有進入G1睡眠),CPU和像硬碟、DVD驅動器等等這些的裝置可以一再的進入和從低能源狀態回來,叫做C0-CnD0-D3。(例如筆記型電腦,當使用電池執行的時候通常關掉所有當前未使用的裝置;一些桌上型電腦也這麼做來減少噪聲。)
  • G1 睡眠 細分為從S1到S4這四種狀態。系統從這幾種狀態被喚醒到G0執行喚醒等待時間)所需的時間最短的是S1,其次是S2和S3,最後是S4。此外/sys/power/state對應的關鍵字與狀態: standby(S1), mem(S3), disk(S4)
    • S1:最耗電的睡眠模式。處理器的所有暫存器被重新整理,並且CPU停止執行指令。CPU記憶體的電源一直維持著,一些裝置如果沒有被使用那麼就會被停止供電。這種模式通常指上電待機或者簡單叫做POS,特別在BIOS設定介面上。一些新式的電腦不再支援S1;老式的電腦對S1支援可能要比S3好。
    • S2:一個比S1更深的睡眠狀態,已經不給CPU供電了;然而,通常這種模式並不被採用。
    • S3 :在BIOS中叫做"掛到記憶體" (Suspend to RAM/STR),在Windows XP以後的Windows版本和一些Linux發行版中叫做"待機(Standby)", 在Windows VistaMac OS X則叫做"睡眠(Sleep)",雖然ACPI規範僅僅提到術語"S3"和"睡眠(Sleep)"。在這個狀態下,主記憶體儲器(RAM)仍然有電源供給,儘管它也是幾乎唯一的有電源供給的元件。因為作業系統、所有應用程式和被開啟的文件等等的狀態都是儲存在主記憶體儲器中,用戶可以把工作恢復到正好上次他們保持的狀態-電腦從S3狀態回來時主記憶體儲器的內容和它進入S3狀態時候的內容是相同象的。(規範中提到了S3和S2是相當類似的,只有更多的元件在S3狀態下會被關掉電源。) 相比較S4來說S3有兩個好處;電腦恢復的過程比重新啟動要快,第二,如果任何正在執行的應用程式(被開啟的文件等等)有私有資訊在裡面,這些資訊是不會被寫到硬碟上的。然而,在系統不能被喚醒比如遇到了電源故障的時候, 高速緩衝記憶體可能會被flushed來防止資料毀壞。
    • S4: 在Windows中叫休眠, 在Mac OS X中叫作安全睡眠,也稱為掛到硬碟,雖然ACPI規範中只提到了一個術語S4main article:Hibernate(OS feature))。在這個狀態下,所有主記憶體儲器的內容被儲存在非揮發性記憶體,例如硬碟,保護作業系統當前的狀態,包括所有應用程式,開啟的文件等.這意味著從S4恢復後,用戶可以恢復到原本的工作狀態,採用的方法和S3是一樣的。S4和S3之間的差異是,除了把主記憶體儲器中的內容移進移出所消耗的時間以外,在S3狀態下的時候如果一旦停電了,所有主記憶體儲器上的資料就會遺失,包括所有的沒有儲存的文件,而在S4狀態下則沒有影響.S4和其他的S狀態有很大不同,事實上更類似G2Soft Off狀態和G3 Mechanical Off狀態,而不是S1-S3.在S4狀態下的系統同樣可進入G3(Mechanical Off)狀態,並且保留S4時候的狀態資訊.所以它可以恢復到以前的執行狀態在關掉電源之後.
  • G2S5Soft Off--G2S5,和Soft Off都是相同的叫法。G2和G3Mechanical Off幾乎是相同的,但有些部件仍然帶電,使電腦仍然可以被鍵盤、時鐘、數據機(電話喚醒)、LAN(網路喚醒)還有USB裝置所喚醒。[1]在啟動系統從G2恢復到G0正常工作模式的過程中,無論是G3 Mechanical Off還是G2都得執行啟動程式來啟動作業系統。

此外,當作業系統在不支援ACPI的情況下執行,這種狀態被定義為Legacy。在這個狀態下,硬體和電源不是通過ACPI來管理的,實際上已經禁用了ACPI。

(參考資料:ACPI規範3.0b版的連結在下面 External links, 檢視chapter 7.3.4)

裝置電源狀態(Device Power State)[編輯]

裝置狀態對於用戶來說往往是不可見的,比如當一個裝置已經沒有電源供應的時候,可能整個系統還是在工作狀態,光碟機是一個很好的例子。 裝置狀態是與裝置相關的狀態,他們的定義和以下四個因素有關:

電源消耗(Power consumption),裝置用電量的多少。

裝置狀態/環境(Device context),裝置(從D0進入其他狀態的時候)保留了多少原來的狀態/環境。作業系統負責儲存遺失的裝置狀態/環境。

裝置驅動(Device driver),讓裝置恢復到D0,驅動程式應該做什麼(或者做多少)。

裝置狀態有一下幾個:

  • D0 Fully-On 是(正常)工作狀態,電源消耗量最多,裝置是完全被相應的,並且裝置保留了全部的裝置狀態/環境。
  • D1 和 D2是中間電源狀態,它的定義根據裝置的不同而有所不同。
  • D3 Off是裝置電源關閉所以對匯流排來說是沒有相應的。裝置狀態/環境全部遺失,作業系統會重新初始化裝置當重新給它加電的時候。這個狀態下的裝置恢復到D0相比之下需要最長的時間。


裝置狀態總結
裝置狀態 電源消耗 保留裝置狀態資訊 驅動程式恢復
D1 D0>D1>D2>D3 >D2 <D2
D2 D0>D1>D2>D3 <D1 >D1
D3 - Off 0 沒有保留 完全初始化並且裝載

處理器電源狀態(Processor Power State)[編輯]

處理器電源狀態(C0到C3狀態,後面還有Cn)是指在G0狀態下(只對G0狀態有效,在其他狀態下不予討論)的處理器電能消耗和溫度管理的狀態。

只有C0狀態下CPU才會執行指令,C1到Cn狀態下CPU都處於各種不同程度的睡眠狀態(Sleeping States),在這睡眠狀態下,CPU都有一個恢復到C0的喚醒時間latency),它是和CPU的電能消耗有關的,通常,用電能量越小意味著得花更長的時間恢復到C0狀態,也就是喚醒時間越長。

當在C0狀態下時,ACPI允許通過定義節流閥(throttling)過程,和通過進去多效能狀態(multiple performance states,P-states)來改變處理器的效能。

各個狀態的定義如下所示:

  • C0是正常工作狀態,當處理器處於這種狀態下的時候,它能正常處理指令
  • C1(通常稱為Halt)擁有最短的喚醒時間,這個延時必須短到作業系統軟體使用CPU的時候不會考慮到喚醒時間方面的因素。一些處理器,比如說奔騰4Pentium 4),支援C1E(Enhanced C1 state)這樣的低電能消耗技術。

這個狀態是不被軟體所見的。

  • C2 (通常稱為Stop-Clock),這個狀態下處理器維持著所有的軟體所見的狀態資訊,但是需要更長的時間來恢復到C0。這個狀態下情況最壞的硬體喚醒時間是由ACPI韌體提供,並且作業系統軟體可以利用這些資訊來決定是採用C1而不是C2狀態,C2比C1更省電。
  • C3 (通常稱為Sleep),相比C1和C2更省電了。這個狀態下情況最壞的硬體喚醒時間是由ACPI韌體提供,並且作業系統軟體可以利用這些資訊來決定是採用C2而不是C3狀態,當處於C3狀態時,處理器快取保留了所有的狀態資訊,但是忽略所有的偵聽。作業系統軟體負責保證快取資料的一致性。

裝置和處理器效能狀態(Device and Processor Performance States)[編輯]

裝置和處理器效能狀態(Px狀態)是在C0(對於處理器)和D0(對於裝置)下定義的電源消耗和能力的狀態。效能狀態允許OSPM在效能和能源消耗之間取得平衡。P0是最高效能狀態,從P1到Pn是連續的低效能狀態,最高限制n為16。

  • P0狀態,使用最大效能並且消耗的電能最多。
  • P1狀態,效能比前者要小,但是消耗電能也相應少一些。
  • Pn狀態,n是的大小是依賴於處理器和裝置的,處理器和裝置可以定一個任意的不超過16的數字。

這個狀態在Intel處理器中稱為SpeedStep,在AMD處理器中稱為PowerNow!Cool'n'Quiet,在VIA處理器中稱為PowerSaver

參考文獻[編輯]