每当cpu空闲时,它都会执行cpu_idle_loop。我很好奇,与arm中的halt x86或wfe/wfi指令相比,这个循环的优点是什么?
是否有功耗优势?
发布于 2015-06-02 14:57:35
wfe / wfi只是指令,它可以使内核进入低功耗模式,但这不会影响内核的时钟等。如果内核在此时获得电力,泄漏仍将存在,这在电池供电的设备中非常重要。
在像cpu_idle_loop这样的功能中,你可以控制更多的电力进入核心,因为你知道什么影响了什么,还可以刷新缓存和减少它们使用的电力等。你也可以完全切断核心的电力,消除或减少泄漏到最小的可能。在多核系统中,最后一个进入空闲状态的内核可以关闭平台/板的电源,使其进入更省电的状态。
wfe / wfi有利于避免内核在等待时浪费功率,也有利于散热。必须实现互斥锁/信号量,但如今SOC由许多元素组成,内核可以在不需要大部分元素时通知硬件,而不仅仅是有效地闲置单个内核。
发布于 2015-06-03 11:58:31
除了其他用户指出的功率优势之外,我还想指出使用WFI的另一个不太为人注意的优点。主机操作系统会将WFI指令标记为陷阱。当来宾操作系统执行WFI指令时,控制权会立即转移(捕获)到主机操作系统。这允许主机有效地在其就绪队列中调度其他操作系统。如果来宾操作系统使用繁忙的空闲循环(而不是WFI),则分配给来宾操作系统的时间片必须在主机操作系统可以在其他来宾操作系统中调度之前过期,这会导致浪费CPU周期。
https://stackoverflow.com/questions/30588812
复制相似问题