每当 cpu 空闲时,它就会执行 cpu_idle_loop。 我很想知道这个循环与arm中的halt [x86]或wfe/wfi指令相比有什么优势?
有功耗优势吗?
最佳答案
wfe
/wfi
只是指令,可以使内核进入低功耗模式,但这不会影响进入内核的时钟等。如果一个内核此时通电时漏电仍然存在,这对于电池供电的设备非常重要。
在像cpu_idle_loop
这样的函数中,您可以控制更多的电源进入核心,因为您知道什么会影响什么,并且还可以刷新缓存并减少它们使用的电源等。您还可以完全切断电源核心消除或减少泄漏到尽可能的最低限度。在多核系统中,最后一个处于空闲状态的核心可以将平台/主板断电,进入更加省电的状态。
wfe
/wfi
有利于避免核心在等待时浪费功率,这也有利于未调度的热量。必须实现互斥体/信号量,但如今 SOC 由许多元素组成,内核可以在不需要大部分元素时通知硬件,而不仅仅是有效地闲置单个内核。
关于linux-kernel - cpu_idle_loop 与halt/wfe/sevl 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588812/