Thursday, November 17, 2011

Power Management (1):前言

常常有人有疑問:BIOS在電源管理(Power Managemenet)上扮演什麼角色?如果系統太耗電,是否BIOS可以修正、可以修正到什麼程度?

筆者要提醒電源管理不是單一元件(如BIOS)能夠獨立完成。在今天科技的演變下,電源管理的最佳化已經是硬體(Hardware)+系統韌體(BIOS)+作業系統(OS)皆需配合。

這系列文章的主要目的為討論Run-time的電源管理的基本觀念以及常見的幾種功能。

TARGET AUDIENCES

文章的內容以敘述性為主,技術細節為輔:非BIOS及Kernel工程師可以略過這些細節,也強烈建議BIOS及Kernel工程師閱讀相關技術文件。

如何達到省電的效果?

省電的方法不外乎兩種:
  1. 降速裝置(工作模式):在裝置執行小量程式而不需要全速運行的時候,將裝置的速度(甚至電壓)降低來省電。
  2. 關閉裝置(睡眠模式):在空閒的時候把裝置關閉,等到需要的時候才把裝置重新喚醒。
以上的理論雖然簡單,但是有幾個注意事項:
  1. 使用者的感覺:除了在自願的情況下,省電功能要能作到使用者感覺不出差異(User-transparent),所以系統設計必須考慮如何切換最佳速度/最佳電量。如果使用者必須犧牲使用者經驗,那麼使用者就可能放棄省電功能。
  2. 實際效果:當裝置回復高速或是重新啟動的時候,除了需要一小段的時間恢復裝置的狀態,也會瞬間使用更多電量。因此過多的開關會造成系統更加耗電,如何避免過多開關變成一個重要的議題。

硬體、韌體及作業系統的角色

硬體是電源管理的核心(因為吃電是硬體)。除了將硬體本身做的低耗電,硬體也要提供「省電功能」讓軟體/韌體使用以達到最佳化的電力使用。依照軟體/韌體的參與程度,約可以把功能分成「主動式」(硬體會自動運作,如ASPM)跟「被動式」(軟體/韌體控制,如CPU的P-State跟C-State)。

長久以來,不佳的系統設計會讓省電功能會造成系統不穩定,(筆者)相信這也是很多省電功能預設關閉的原因。隨著技術的進步這樣的情形也逐漸減少,但卻沒法完全根治。系統設計者(硬體工程師+韌體工程師)必須初期就要開始驗證所有硬體的電源管理功能,以確保硬體能夠達到電源的最佳化。

註:「主動式」及「被動式」為筆者自行的分類,如果有參考文獻會在這邊更新。

韌體要負責設定所有的電源管理,包含在開機過程中開啟「主動式」的省電功能,以及建立資訊(如ACPI Tables)跟提供韌體功能(如SMI),讓作業系統在Run-time的時候使用。

接下來的文章系列會以韌體的角度為主體介紹省電功能,以及要如何驗證他們,也會介紹要如何確認系統韌體已經達到電源管理的最佳化。

作業系統會依照系統參數(如BIOS提供的ACPI Tables跟硬體本身的Timing參數)來動態切換省電功能,來達到省電又不犧牲速度的理想目標。除此之外,作業系統還可以提供使用者省電功能的客製化選項,讓使用者真正的選擇他們在不同的環境下使用他們的資產。

(續:Power Management (2):省電功能 - CPU)

No comments:

Post a Comment