消費電子產品對省電和性能的要求都比較苛刻,軟件系統設計要從“退出時的延遲”和“idle狀態下的功耗”兩個方面考慮,設計多種idle級別。對延遲較敏感的場合,可以使用低延遲、高功耗的idle;對延遲不敏感的場合,可以使用高延遲、低功耗的idle。對於linux系統就有一套專門的子系統來負責管理,這就是cpuidle子系統。
cpuidle子系統主要有cpuidle core,cpuidle governors,cpuilde driver三部分。
cpuidle core是整個子系統的核心,包含以下功能:
向上層sched模塊提供接口;
以sysfs的形式,向用戶空間提供接口;
向下層的cpuidle drivers模塊,提供統一的driver註冊和管理接口;
向下層的governors模塊,提供統一的governor註冊和管理接口。
cpuidle driver負責idle機制的實現:
如何進入idle狀態,什麼條件下會退出,具體的idle級別是怎樣的;一般具體的soc有自己的cpuidle driver實現。
cpuidle governors負責idle狀態原因的策略:
具體什麼場景要實現什麼樣的idle級別都是由cpuidle governors決定。
閱讀更多 AIOT小學生 的文章