2.5 KiB
APM - Wake Up
网传:如果在老设备上,使用最新的 iOS 系统,苹果会自动降频(CPU 频率),从而让你的 iPhone 看上去很卡,让你主动去购买新的设备。
其实,苹果在 iOS 13 的时候,在内核中加入了一个新的性能衡量指标wakeup。CPU 频率和设备电池有关系。看看 ARM 架构中对于 CPU 功耗问题的描述:
Many ARM systems are mobile devices and powered by batteries. In such systems, optimization of power use, and total energy use, is a key design constraint. Programmers often spend significant amounts of time trying to save battery life in such systems.
由于ARM被大量使用于低功耗设备,而这些设备往往会由电池来作为驱动,所以 ARM 在硬件层面就对功耗这个问题进行了优化设计。
功耗可以分为2种类型,即静态功耗与动态功耗。 静态功耗指的是只要 CPU 通上电,由于芯片无法保证绝对绝缘,所以会存在“漏电”的情况,而且越大的芯片这种问题越严重,这也是芯片厂家为什么拼命的研究更小尺寸芯片的原因。这部分功耗由于是硬件本身决定的,所以我们无法去控制,而这种类型功耗占比不大。
动态功耗指的是 CPU 运行期间,接通时钟后,执行指令所带来的额外开销,而这个开销会和时钟周期频率相关,频率越高,耗电量越大。这也就说明了苹果为什么会控制 CPU 使用率,而相关研究(Facebook 也做过)也表明,CPU 在20以下和20以上的能耗几乎是成倍的增加。
且苹果在具体哪个系统推出了 Battery Health 模块,其中有个 Maximum Capacity 的指标。用于判断电池的性能。苹果在这个开放出来之前,肯定已经在收集电池的健康状况。
iOS 11.3 及更高版本优化了性能管理功能,会定期评估所需的性能管理程度,以避免意外关机。如果电池健康能够满足系统所观察到的对峰值电源的要求,则系统会调低性能管理的程度。如果再次出现意外关机,则系统会调高性能管理的程度。这种评估是持续进行的,使得性能管理更能适应实际情况。
综上:当老设备运行新的 iOS 操作系统,系统会判断电池健康状态,如果电池不够健康,那么系统为了防止电池持续损坏(当 CPU 以较高频率工作,则会损坏电池设备,降低寿命),会自动降低 CPU 频率。其中这个有个判断标准,这个标准是不断变化的。