2009年2月13日 星期五

ACPI和APIC有什麽關系?[轉貼]

很多人問道了什麽ACPI,什麽是APIC,他們有没有關系?名字這麽相近。下面給出我對其的一些理解,具體的解釋可以查看内核文檔庫的内核參數文件:
/usr/src/`uname -r`/Documents/kernel-parameters.txt

ACPI就是Advanced Configuration and Power Interface的縮寫,意思是“高級配置與電源接口”。這是英特爾、微軟和東芝共同開發的一種電源管理標准。
ACPI可實現以下功能:   
1、用户可以使外設在指定時間開關;   
2、使用筆記本電腦的用户可以指定計算機在低電壓的情况下進入低功耗狀態,以保證重要的應用程序運行;   
3、操作系統可以在應用程序對時間要求不高的情况下降低時鐘頻率;
4、操作系統可以根據外設和主板的具體需求為它分配能源;
5、在無人使用計算機時可以使計算機進入休眠狀態,但保證一些通信設備打開;
6、即插即用設備在插入時能够由ACPI來控制。
不 過,ACPI和其他的電源管理方式一様,要想享受到上面這些功能,必須要有軟件和硬件的支持。在軟件方面,Windows 98及其後續産品和Windows 2000都對ACPI給予了全面的支持;而Linux的内核目前對此支持得并不是太理想。硬件方面比較麻煩,除了要求主板、顯卡和網卡等外設要支持 ACPI外,還需要機箱電源的配合。電源在提供5伏電壓給主板的同時,還必須使電流穩定在720毫安以上才可以,這様它才能够實現電腦的“睡眠”和“唤醒 ”。
ACPI共有六種狀態,分別是S0到S5,它們代表的含義分別是:
S0–實際上這就是我們平常的工作狀態,所有設備全開,功耗一般會超過80W;
S1–也稱為POS(Power on Suspend),這時除了通過CPU時鐘控制器將CPU關閉之外,其他的部件仍然正常工作,這時的功耗一般在30W以下;(其實有些CPU降温軟件就是利用這種工作原理)
S2–這時CPU處於停止運作狀態,總線時鐘(Bus Clock)也被關閉,但其餘的設備仍然運轉;
S3–這就是我們熟悉的STR(Suspend to RAM),這時的功耗不超過10W;
S4–也稱為STD(Suspend to Disk),這時系統主電源關閉,但是硬碟仍然帶電並可以被唤醒 再進入系統時需重跑BIOS,如同WindowsXP的睡眠模式行為;
S5–這種狀態是最乾脆的,就是連電源在内的所有設備全部關閉,功耗為0。
我們最常用到的是S3狀態,即Suspend to RAM(載入到記憶體)狀態,簡稱STR。顧名思義,STR就是把系統進入STR前的工作狀態數據都存放到記憶體中去。在STR狀態下,電源仍然繼續為記憶體等 最必要的設備供電,以確保數據不丢失,而其他設備均處於關閉狀態,系統的耗電量極低。一旦我們按下Power按鈕(主機電源開關),系統就被唤醒,馬上從 内存中讀取數據並恢復到STR之前的工作狀態。記憶體的讀寫速度極快,因此我們感到進入和離開STR狀態所花費的時間不過是幾秒鐘而已;而S4狀態,即 STD(載入到硬盤)與STR的原理是完全一様的,只不過數據是保存在硬盤中。由於硬盤的讀寫速度比内存要慢得多,因此用起來也就没有STR那麽快了。 STD的優點是只通過軟件就能實現,比如Windows 2000就能在不支持STR的硬件上實現STD。
之前的電源管理是APM(Advanced Power Management),那麽ACPI和APM相比有什麽區別呢?

2、ACPI與APM比較
APM 1.0&1.1:由BIOS執行電源管理;
APM 1.2:操作系統定義電源管理時間,由BIOS負責執行;
ACPI:BIOS收集硬件信息,定義電源管理方案;由操作系統負責執行。
APM是一種軟件解决方案,因此是與操作系統有關的, 而ACPI是工業標准,包括了軟件和硬件方面的規範。

APIC (高級可編程中斷控制器)對計算機來講有兩個作用
一是管理IRQ的分配,可以把傳統的16個IRQ擴展到24個(傳統的管理方式叫PIC),以適應更多的設備。
二是管理多CPU。由於Nf2主板并不支持多CPU,所以,APIC關閉直接的影響是减少了可用的IRQ。
不過,如果板卡不是非常多的話,關閉 APIC對系統是没有什麽影響的。
要實現SMP功能,我們使用的CPU必須具備以下要求:
CPU 内部必須内置APIC單元。Intel 多處理規範的核心就是高級可編程中斷控制器(Advanced Programmable Interrupt Controllers–APICs)的使用。CPU通過彼此發送中斷來完成它們之間的通信。通過給中斷附加動作(actions),不同的CPU可以在 某種程度上彼此進行控制。每個CPU有自己的APIC(成為那個CPU的本地APIC),並且還有一個I/O APIC來處理由I/O設備引起的中斷,這個I/O APIC是安裝在主板上的,但每個CPU上的APIC則不可或缺,否則將無法處理多CPU之間的中斷協調。
APIC可能遇到的問題,很多這類問題可以通過BIOS更新來解决。
下面的是通過更改HAL類型來解决
  CPU實際運行頻率與BIOS設定頻率不符
  NF2的用户大约有10%的會出現CPU實際運行頻率與BIOS設定頻率不符的問題。我們稱之為“頻率不對”。
  這種現象帶來的直接後果就是在測試3dmark或跑3D游戲的時候,會感覺不流暢,也稱之為“頓”。
   一般在更改BIOS設置後、更新驅動後重啓時,用測試軟件如Aida32、MBM5等可以看到CPU的運行頻率和你在BIOS裏設置得不一様,而且差距 很大。這個時候,用super pi測試CPU速度,會比平常花費時間長好幾秒,用3dmark跑測試,會比平常低幾百分甚至上千分。在3dmark中看到的CPU頻率,也與BIOS設 定不符合。
  如果出現這種情况,則屬於我們所討論的“頻率不對”的問題。
  不過,不是所有的3D游戲“頓”都是這個原因。判斷的方法是:如果你只有個別游戲“頓”,或者用上述軟件測試頻率正確,就不是此問題。
  如果判斷確實屬此問題,解决的方法也很簡單,經過網友討論,只要關閉APIC功能即可。(注意,是APIC,不是ACPI)。

有一些服務器(比如IBM的,HP的),安裝LINUX時,會給出内核的錯誤,導致無法安裝,這個時候可以在安裝的時候輸入linux acpi=off noapic應該是安裝上的。

資料來源:
http://mlsx.xplore.cn/2006/01/12/what-difference-between-acpi-and-apic.html

2 則留言:

Ching-Hung Lin 提到...

S4 STD 應該是硬碟不會耗電低唷
雖然是轉貼的
但仍要抱持著懷疑的態度:D

史丹利 提到...

呵,感謝您的回應,不好意思我沒注意看呢!
的確S4 STD硬碟是不會耗電的^^