筆者要提醒電源管理不是單一元件(如BIOS)能夠獨立完成。在今天科技的演變下,電源管理的最佳化已經是硬體(Hardware)+系統韌體(BIOS)+作業系統(OS)皆需配合。
這系列文章的主要目的為討論Run-time的電源管理的基本觀念以及常見的幾種功能。
TARGET AUDIENCES
文章的內容以敘述性為主,技術細節為輔:非BIOS及Kernel工程師可以略過這些細節,也強烈建議BIOS及Kernel工程師閱讀相關技術文件。
如何達到省電的效果?
省電的方法不外乎兩種:
- 降速裝置(工作模式):在裝置執行小量程式而不需要全速運行的時候,將裝置的速度(甚至電壓)降低來省電。
- 關閉裝置(睡眠模式):在空閒的時候把裝置關閉,等到需要的時候才把裝置重新喚醒。
以上的理論雖然簡單,但是有幾個注意事項:
- 使用者的感覺:除了在自願的情況下,省電功能要能作到使用者感覺不出差異(User-transparent),所以系統設計必須考慮如何切換最佳速度/最佳電量。如果使用者必須犧牲使用者經驗,那麼使用者就可能放棄省電功能。
- 實際效果:當裝置回復高速或是重新啟動的時候,除了需要一小段的時間恢復裝置的狀態,也會瞬間使用更多電量。因此過多的開關會造成系統更加耗電,如何避免過多開關變成一個重要的議題。
硬體、韌體及作業系統的角色
硬體是電源管理的核心(因為吃電是硬體)。除了將硬體本身做的低耗電,硬體也要提供「省電功能」讓軟體/韌體使用以達到最佳化的電力使用。依照軟體/韌體的參與程度,約可以把功能分成「主動式」(硬體會自動運作,如ASPM)跟「被動式」(軟體/韌體控制,如CPU的P-State跟C-State)。
長久以來,不佳的系統設計會讓省電功能會造成系統不穩定,(筆者)相信這也是很多省電功能預設關閉的原因。隨著技術的進步這樣的情形也逐漸減少,但卻沒法完全根治。系統設計者(硬體工程師+韌體工程師)必須初期就要開始驗證所有硬體的電源管理功能,以確保硬體能夠達到電源的最佳化。
註:「主動式」及「被動式」為筆者自行的分類,如果有參考文獻會在這邊更新。
韌體要負責設定所有的電源管理,包含在開機過程中開啟「主動式」的省電功能,以及建立資訊(如ACPI Tables)跟提供韌體功能(如SMI),讓作業系統在Run-time的時候使用。
接下來的文章系列會以韌體的角度為主體介紹省電功能,以及要如何驗證他們,也會介紹要如何確認系統韌體已經達到電源管理的最佳化。
作業系統會依照系統參數(如BIOS提供的ACPI Tables跟硬體本身的Timing參數)來動態切換省電功能,來達到省電又不犧牲速度的理想目標。除此之外,作業系統還可以提供使用者省電功能的客製化選項,讓使用者真正的選擇他們在不同的環境下使用他們的資產。
(續:Power Management (2):省電功能 - CPU)
硬體是電源管理的核心(因為吃電是硬體)。除了將硬體本身做的低耗電,硬體也要提供「省電功能」讓軟體/韌體使用以達到最佳化的電力使用。依照軟體/韌體的參與程度,約可以把功能分成「主動式」(硬體會自動運作,如ASPM)跟「被動式」(軟體/韌體控制,如CPU的P-State跟C-State)。
長久以來,不佳的系統設計會讓省電功能會造成系統不穩定,(筆者)相信這也是很多省電功能預設關閉的原因。隨著技術的進步這樣的情形也逐漸減少,但卻沒法完全根治。系統設計者(硬體工程師+韌體工程師)必須初期就要開始驗證所有硬體的電源管理功能,以確保硬體能夠達到電源的最佳化。
註:「主動式」及「被動式」為筆者自行的分類,如果有參考文獻會在這邊更新。
韌體要負責設定所有的電源管理,包含在開機過程中開啟「主動式」的省電功能,以及建立資訊(如ACPI Tables)跟提供韌體功能(如SMI),讓作業系統在Run-time的時候使用。
接下來的文章系列會以韌體的角度為主體介紹省電功能,以及要如何驗證他們,也會介紹要如何確認系統韌體已經達到電源管理的最佳化。
作業系統會依照系統參數(如BIOS提供的ACPI Tables跟硬體本身的Timing參數)來動態切換省電功能,來達到省電又不犧牲速度的理想目標。除此之外,作業系統還可以提供使用者省電功能的客製化選項,讓使用者真正的選擇他們在不同的環境下使用他們的資產。
(續:Power Management (2):省電功能 - CPU)
No comments:
Post a Comment