ARMv8-A编程指导之电源管理(1)

博客详细讨论了ARM系统中的电源管理,包括静态和动态能源消耗,以及各种电源管理模式如standby、retention、powerdown等。操作系统通过动态改变core的电源状态来平衡工作负载并节约电池。关键技术如idle管理、动态电压和频率调整被用来减少能源使用。此外,hotplug技术允许动态添加或移除core以适应计算需求变化。

        很多ARM系统都是移动设备并有电池供电。在这种系统中,电源使用的优化和整个能源的使用是重要的设计约束。在这种系统中编程者经常需要花费很多时间来节约电池。

        节约电源也是不适用电池的系统需要考虑的事情。比如,你可能想最小化能源的使用来减少电源,由于环境原因,或减少设备产生的热量。

        ARM core中有很多为减少电源的使用的硬件设计方法。

        使用的能源可以分为两个部分:

Static: 静态能源消耗,也经常称为泄露,当core逻辑或RAM块已经给它们供电,这时静态能源消耗产生。通常来说,泄露电流与整个silicon面积成正比,这意味着越大的芯片,泄露越大。来自泄露的功耗比例会变得明显当你移动到更小的制造几何体。

Dynamic: 动态功耗产生是因为晶体管开关,动态功耗是core时钟速度和一些修改状态的晶体管的集合。明显更高时钟速度和更复杂的core消耗更多的电源。

        电源管理意识的操作系统动态的改变core的电源状态,对当前workload进行平衡有用的计算,当尝试使用最小的电源。有一些技术动态的对core进行打开和关闭,或将他们放进quiescent状态,这时他们不再消耗能量。这意味着他们消耗很少电源。这些技术主要是:

  1. Idle管理
  2. 动态电压和频率

1 Idle管理

        当core为idle时,操作系统电源管理OSPM将它转换为低功耗状态。通常状态的选择是有用的,不同的entry和exit时延,每个状态有不同层次的电源功耗。使用的状态通常依赖于core被要求的有多快。在任何一次使用的电源状态也依赖于SOC其他部分的活动。当状态进入时每个状态由clock-gated或power-gated的部分。

        从低功耗状态到运行状态的时间被称为wakeup时延,进入更深的状态要求的时间越长。虽然idle电源管理由core上的线程行为驱动,OSPM可以将平台进入到很多状态,这些状态影响core以外的其他部件。如果cluster中的最后一个core也变成idle,OSPM可以将电源状态修改为可以影响整个cluster的。同样的,如果soc中的最后一个core变成idle,OSPM会将电源状态修改为可以影响整个soc的。这个选择是由系统中其他部件的使用所驱动。一个典型的例子是当所有core和其他总线master为Idle时,将内存处于自刷新状态。

        OSPM必须提供必要的电源管理软件组件来决定正确选择的状态。在idle管理时,当一个core或cluster处于低功耗状态时,它可以在任何时候被core唤醒事件所激活。即一个事件可以将core从低功耗状态唤醒,比如中断。不需要OSPM提供明确的命令来将core或cluster来做操作。即使这些core在低功耗状态,OSPM也考虑在任何时候将影响的core变为有效。

1.1 电源和时钟

       一个可以减少功耗的方法为移除静态和动态电流(称为power-gating),或停止时钟(它仅移除动态电源功耗,也称为clock-gating)。

        ARM core通常支持多个电源管理级别,如下:

  1. Standby
  2. Retention
  3. Power down
  4. Dormant mode
  5. Hotplug

        对于某些操作,要求在移除电源之前保存状态,在移除电源之后恢复状态。用于保存和恢复状态的时间和额外工作消耗的功耗时软件选择合适电源管理活动的重要因素。

        包括core的SOC设备由另外的低功耗状态,比如STOP和深度睡眠。这设计到硬件的PLL和电压regulator的能力,这些由电源管理软件控制。

1.2 Standby

        在standby模式时,core仍上电,但大多数clock停止了,或称为clock-gated。这意味着core的大部分都处于静止状态,仅有的电源是由leakage电流和小部分逻辑的时钟产生,它们是等待wake-up条件。

        使用WFI或WFE指令可以进入该状态。ARM建议在WFI或WFE之前使用DSB指令保证在修改状态之前保证pending的内存事务已经完成。

        如果调试通道是有效的,它仍保持有效。Core停止执行直到一个wakeup事件被检测到。Wakeup条件依赖于执行的指令。对于WFI指令,中断或外部调试请求会唤醒core。对于WFE指令,一些特定的事件存在,包括在cluster上的其他core执行SEV指令。

        来自SCU的请求也可以在多核系统中唤醒cache一致性的时钟。这意味着处于standby状态的core的cache与其他core的cache保持一致性(但处于standby状态的core没有必要执行下一条指令)。core的复位通常会强制core退出standby条件。

        各种形式的动态clock gating也可以在硬件中实现。比如,当检测到一个idle条件时,为节省功耗,SCU,GIC,定时器,指令流水线或NEON块可以自动关闭时钟。

        Standby模式可以进入和推出非常快(通常两个时钟周期)。因此它对core的延迟和响应能力几乎忽略不计。

        对于OSPM,standby模式和retention状态几乎没有差别。差异点在于对外部调试和硬件实现是明显的,但对于操作系统的idle管理不明显。

1.3 Retention

        core的状态包括调试的设置,保存在低功耗结构体中,可以让core处于部分关闭状态。从低功耗retention状态到运行操作不需要对core进行reset。从低功耗retention到运行状态会让保存的core状态被恢复。从操作系统的角度来看,retention状态和standby状态没有区别,除了进入的方法,时延和使用相关的限制。但是,从外部调试的角度,还是存在不一样因为外部调试请求的调试事件在core电源域保持pending且不能被访问。

1.4 下电

        在这个状态下,core被下电。设备的软件必须保持所有core的状态,因此它可以被在下电时被保存。从下电到运行必须包括:

  1. 在电源级别被恢复后进行core的复位;
  2. 恢复保存的core状态;

        下电的定义特征为上下文的destructive。这会影响给定状态下的所有组件被关闭,且在更深的状态下系统其他组件如GIC或平台相关的IP。依赖于调试和trace电源域是如何组织起来的,在相同下电状态下一个或多个调试和trace上下文可能被丢失。必须提供机制来让操作系统对给定的状态发出相关的上下文保存和恢复。恢复执行从重置向量开始,在此之后每个OS必须恢复它的上下文。

1.5 Dormant 模式

        Dormant 模式是下电状态的一个实现。在Dormant 模式,core逻辑被下电,但是cache RAM仍上电。通常RAM处于低功耗retention状态,这时它们保持住内容但在其他方面不其作用。这提供了比完全的shutdown更快的重启,因为live数据和代码仍在cache中。在多核系统中,单个core可以处于dormantz模式。

        在多核系统中,允许cluster中的单独core进入dormant模式。但当core的电源被移除时,对于维护一致性没有范围。这种core必须所有将自己从一致性域被隔离出来。他们在做此之前清除所有脏数据并使用其他core信号来wakeup重新上电。

        在重新加入一致性域之前被唤醒的core必须恢复原始的core状态。因为当core在dormant模式时内存状态可能已经改变,它可能必须无效化cache。因此dormant模式更可能在单个core环境上而不是一个cluster。这是因为额外的昂贵的离开和重新加入一致性域。在一个cluster中,当其他core已经被关闭,dormant域通常更可能仅在最后一个core时被使用。

1.6 hotplug

        CPU热插拔为动态的将core关闭或打开的技术。OSPM可以使用hotplug来修改基于当前计算要求的计算容量。

        hotplug也有时被用于可靠性原因。这里hotplug和下电或idle不一样:

  1. 当core被拔出时,supervisory软件停止在中断和线程处理的core上。Core不再被OS考虑使用;
  2. OSPM需要发出明确的命令来将一个core重新online,即hotplug一个core。合适的supervisory软件仅在该命令后开始调度或使用该core上的中断。

        操作系统通常在主core上发出内核引导进程,然后在后面阶段起第二core。第二引导行为与热插拔core到系统类似。两种情况的操作几乎相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值