Re: [問題] 省電模式下要如何管理threads?

作者: DontGoIntel (末日硬特爾)   2018-03-03 22:22:23
※ 引述《timemaker (Coder and Coffee)》之銘言:
: 各位板友好
: 我在開發embedded linux遇到了省電模式下功耗降不下來的問題
: 因為DDR RAM已開啟Self refresh power down功能
: 只有在threads存取RAM時會耗比較多的電
: 我目前的想法在省電模式下時
: 能否避免threads存取RAM?
: 只留一個監控thread看是否使用者有按按鍵
: 若是的話再喚醒其餘的threads
: 我所使用的是pthread
: 是否有推荐的API以避免threads於省電模式下存取RAM?
: 謝謝
我所知道的要降功耗有幾種方式
1. CPU dvfs.
透過不同頻率與電壓組合達到省電效果
這邊smp跟asmp會有差異
SMP下通常只有一組可以操控 會遷就於 max load cpu的需求
2. soc那看是否有其他core比較省電
由該CPU POWER OFF 較耗電的CPU
EX: BIG/LITTLE 可以斷大核電 然後有需要再開大核
或者是其他異質CPU 將 smp的CPU suspend 後完全斷電
上電後resume喚起.
3. CPU 進入省電模式 , 在arm中就是執行 WFI INSTRUCTIONS
系統的 key 配置為中斷模式. spi 中斷進來會觸發喚醒原先的 wfi
4. multicore 可以呼叫 cpu_down 去讓secondary停在wfi
達到將secondary卸載 offline,要在加回來就呼叫 cpu_up
5. 其實應該先看CPU吃多少電 系統是否還有其他更耗電的裝置
是否有推荐的API以避免threads於省電模式下存取RAM?
==>除非你的東西都在CACHE內 不然你是做不到這一點的
如果計算能力夠 DDR其實可以降頻看看
作者: askacis (ASKA)   2018-03-05 16:14:00
基本上就是降頻關周邊IO,比如說sleep mode下 lan card本來如果跑1000, 就切到100/10之類的省那一丁點電,東省西省就過了,2019 歐盟規範更嚴,省電是大議題
作者: TianBonBon (田蹦蹦)   2018-03-07 01:31:00
樓主實務經驗豐富,讚
作者: timemaker   2018-03-08 23:06:00
謝謝你的建議

Links booklink

Contact Us: admin [ a t ] ucptt.com