制(待機(jī)功耗基礎(chǔ)))
Linux CPUIdle深度解析:CPU空閑休眠機(jī)制、C?State、內(nèi)核流程、原理圖承接上一篇CPU架構(gòu),本篇聚焦CPU空閑功耗子系統(tǒng)CPUIdle,適合嵌入式、Android功耗調(diào)優(yōu)、操作系統(tǒng)學(xué)習(xí)、面試復(fù)習(xí)。前言很多人有一個(gè)誤區(qū):CPU沒有任務(wù)運(yùn)行就不耗電。實(shí)際如果沒有CPUIdle,CPU空閑時(shí)會不停執(zhí)行idle死循環(huán),流水線、時(shí)鐘、緩存全部處于工作狀態(tài),空載功耗居高不下,設(shè)備待機(jī)發(fā)燙、續(xù)航變短。CPUIdle是Linux內(nèi)核的CPU空閑功耗管理子系統(tǒng):CPU無事可做時(shí),根據(jù)預(yù)測空閑時(shí)長進(jìn)入不同深度的硬件休眠;收到中斷/新任務(wù)后快速喚醒,在性能響應(yīng)與功耗之間做權(quán)衡。本文講解C?State休眠狀態(tài)、CPUIdle內(nèi)核三層架構(gòu)、完整執(zhí)行流程、調(diào)試命令,附帶可直接截圖保存的原理圖。一、C?State:CPU空閑休眠狀態(tài)核心規(guī)律:C編號越大,休眠越深、功耗越低、喚醒延遲越大;C0為正常工作狀態(tài),不屬于Idle休眠。狀態(tài)休眠等級硬件行為喚醒延遲C0工作態(tài)CPU正常執(zhí)行指令,時(shí)鐘電壓全開0C1淺休眠停止指令執(zhí)行,時(shí)鐘暫停,電壓不變,核心不斷電很小C2淺?