ARM V8A体系结构-第十五章 能量管理

概述

许多ARM系统都是移动设备,由电池供电。在这样的系统中,电力使用和总能源使用的优化是一个关键的设计约束。在这样的系统中,程序员通常会花费大量时间来节省电池寿命。
即使在不使用电池的系统中,节能也可能是个问题。例如,出于环境原因,您可能希望尽量减少能源使用,以降低消费者的电费成本,或者尽量减少设备产生的热量。
ARM内核内置了许多旨在降低功耗的硬件设计方法。
能源使用可分为两部分:

  • 静态:每当核心逻辑或RAM块通电时,就会发生静态功耗,也称为泄漏。一般来说,漏电流与总硅面积成正比,这意味着芯片越大,漏电流越高。随着制造几何尺寸的减小,泄漏造成的功耗比例显著增加。
  • 动态:动态功耗是由于晶体管切换而产生的,是核心时钟速度和每个周期改变状态的晶体管数量的函数。显然,更高的时钟速度和更复杂的内核会消耗更多的功率。

支持电源管理的操作系统动态更改内核的电源状态,将可用计算容量与当前工作负载相平衡,同时尝试使用最小的电源量。其中一些技术动态地打开和关闭内核,或者将它们置于静态状态,不再执行计算。这意味着它们消耗的电力非常少。这些技术的主要例子有:

  • 空闲管理
  • 动态电压和频率调节

1、空闲管理

当内核空闲时,操作系统电源管理(OSPM)会将其转换为低功耗状态。通常,可以选择与每个状态相关的状态,具有不同的进入和退出延迟,以及不同的功耗级别。使用的状态通常取决于再次需要核心的速度。在任何时候都可以使用的电源状态可能还取决于SoC中除核心之外的其他组件的活动。每个状态都由一组组件定义,这些组件在进入状态时是时钟选通的或电源选通的。
从低功耗状态移动到运行状态所需的时间(称为唤醒延迟)在更深的状态下需要更长。尽管空闲电源管理是由内核上的线程行为驱动的,但OSPM可以将平台置于影响内核本身之外的许多其他组件的状态。如果集群中的最后一个核心空闲,OSPM可以针对影响整个集群的电源状态。同样,如果SoC中的最后一个内核空闲,OSPM可以针对影响整个SoC的电源状态。这种选择还取决于系统中其他组件的使用。一个典型的例子是,当所有内核和任何其他总线主机空闲时,将内存置于自刷新状态。
OSPM必须提供必要的电源管理软件基础设施,以确定正确的状态选择。在空闲管理中,当核心或集群处于低功耗状态时,它可以随时通过核心唤醒事件重新激活。也就是说,可以将内核从低功耗状态唤醒的事件(如中断)。OSPM不需要显式命令即可使核心或集群恢复运行。OSPM认为受影响的一个或多个内核始终可用,即使它们当前处于低功耗状态。

1.1 电源和时钟

减少能源消耗的一种方法是移除电源,这会移除动态和静态电流(有时称为功率门),或者停止内核的时钟,这只移除动态功耗,可以称为时钟门。
ARM内核通常支持多个级别的电源管理,如下所示:

  • 待机
  • 保留
  • 关机
  • 睡眠模式
  • 热插拔

对于某些操作,需要在断电前后保存和恢复状态。在软件选择适当的电源管理活动时,保存和恢复所需的时间以及额外工作所消耗的电量都是一个重要因素。
包含内核的SoC设备可以具有额外的低功耗状态,其名称为STOP和Deep sleep。这些是指硬件锁相环(PLL)和电压调节器由电源管理软件控制的能力。

1.2 待机模式

在待机操作模式下,内核保持通电,但其大多数时钟停止,或部分时钟选通。这意味着,磁芯的几乎所有部分都处于静态状态,唯一的功率消耗是因为泄漏电流和少量逻辑的时钟,以检测唤醒条件。
使用WFI(等待中断)或WFE(等待事件)指令进入该模式。ARM建议在WFI或WFE之前使用数据同步屏障(DSB)指令,以确保挂起的内存事务在更改状态之前完成。
如果调试通道处于活动状态,它将保持活动状态。内核停止执行,直到检测到唤醒事件。唤醒条件取决于输入指令。对于WFI,中断或外部调试请求会唤醒内核。对于WFE,存在许多指定的事件,包括集群中执行SEV指令的另一个核心。
来自Snoop控制单元(SCU)的请求也可以唤醒多核系统中缓存一致性操作的时钟。这意味着处于待机状态的内核的缓存继续与其他内核的缓存一致(但处于待机状态的内核不一定执行下一条指令)。磁芯复位总是迫使磁芯退出待机状态。
各种形式的动态时钟选通也可以在硬件中实现。例如,当检测到空闲状态时,SCU、GIC、定时器、指令管道或霓虹灯模块可以自动时钟选通,以节省电源。待机模式可以快速进入和退出(通常在两个时钟周期内)。因此,它对内核的延迟和响应能力的影响几乎可以忽略不计。对于OSPM来说,待机状态和保留状态基本上是无法区分的。这种差异对于外部调试器和硬件实现来说很明显,但对于操作系统的空闲管理子系统来说并不明显。

1.3 保留

内核状态(包括调试设置)保留在低功耗结构中,使内核至少部分关闭。从低功耗保留更改为运行操作不需要重置内核。从低功耗保留状态更改为运行操作时,将恢复保存的核心状态。从操作系统的角度来看,除了输入方法、延迟和使用相关的限制之外,保留状态和待机状态之间没有区别。但是,从外部调试器的角度来看,由于外部调试请求调试事件处于挂起状态,并且无法访问core power域中的调试寄存器,因此状态会有所不同。

1.4 关机

在这种状态下,内核断电。设备上的软件必须保存所有核心状态,以便在断电期间保存。从断电改为运行操作必须包括:

  • 在恢复能量等级后,重置内核
  • 恢复保存的内核状态

断电状态的定义特征是它们破坏了环境。这会影响在给定状态下关闭的所有组件,包括核心,以及在更深的状态下系统的其他组件,如GIC或特定于平台的IP。根据调试和跟踪电源域的组织方式,在某些断电状态下,调试和跟踪上下文中的一个或两个可能会丢失。必须提供机制,使操作系统能够为每个给定状态执行相关的上下文保存和恢复。执行的恢复从重置向量开始,在此之后,每个操作系统必须恢复其上下文。

1.5 睡眠模式

休眠模式是断电状态的一种实现。在休眠模式下,核心逻辑断电,但高速缓存RAM保持通电状态。RAMs通常保持在低功率保持状态,在这种状态下,它们保持内容物,但在其他方面不起作用。这提供了比完全关闭快得多的重新启动,因为实时数据和代码一直存在于缓存中。同样,在多核系统中,单个核可以处于休眠模式。
在一个多核系统中,允许集群中的单个核进入休眠模式,在核心断电时,没有保持一致性的空间。因此,这些核心必须首先将自己与相干域隔离开来。在执行此操作之前,它们会清除所有脏数据,通常会使用另一个内核唤醒,并向外部逻辑发送重新通电的信号。
然后,唤醒的核心必须在重新加入相干域之前恢复原始核心状态。因为在内核处于休眠模式时,内存状态可能已经改变,所以它可能必须使缓存失效。因此,休眠模式在单核环境中比在集群中更有用。这是因为离开和重新加入相干域的额外功耗。在集群中,当其他内核已经关闭时,休眠模式通常只可能由最后一个内核使用。

1.6 热插拔

CPU热插拔是一种可以动态地打开或关闭内核的技术。OSPM可以使用热插拔来根据当前的计算需求更改可用的计算容量。出于可靠性原因,有时也会使用热插拔。热插拔和在空闲状态下使用断电状态之间有许多不同之处:

  • 当内核热插拔时,监控软件会停止在中断和线程处理中使用该内核。主叫操作系统不再认为内核可用。
  • OSPM必须发出一个明确的命令,使核心重新联机,即热插拔核心。相应的监控软件仅在该命令发出后才开始安排或启用对该内核的中断。

操作系统通常在一个主内核上执行大部分内核引导过程,在稍后阶段使从核启动。二次引导的行为非常类似于将内核热插拔到系统中。两种情况下的操作几乎相同。

2、动态电压和频率调节

许多系统在工作负载可变的条件下运行。因此,有能力降低或提高核心性能以匹配预期的核心工作负载是很有用的。更慢地给内核计时可以降低动态功耗。
动态电压和频率缩放(DVFS)是一种利用以下技术的节能技术:

  • 功耗和工作频率之间的线性关系
  • 功耗与工作电压的二次关系

在这里插入图片描述
通过调整核心时钟的频率可以实现节能。在较低的频率下,磁芯也可以在较低的电压下工作。降低电源电压的优点是可以降低动态和静态功率。
给定电路的工作电压与电路可以安全工作的频率范围之间存在特定于实现的关系。给定的工作频率及其相应的工作电压表示为元组,称为工作性能点(OPP)。对于给定的系统,可达到的OPP范围统称为系统DVFS曲线。
操作系统使用DVFS来节约能源,并在必要时保持在热限制范围内。操作系统提供DVFS策略来管理功耗和所需的性能。针对高性能的策略选择更高的频率并使用更多的能量。旨在节能的政策会选择较低的频率,因此会导致较低的性能。

3、汇编语言电源指令

ARM汇编语言包含可用于将内核置于低功耗状态的指令。架构将这些指令定义为提示,这意味着内核在执行它们时不需要采取任何特定的操作。然而,在Cortex-A处理器家族中,这些指令的实现方式几乎关闭了内核所有部分的时钟。这意味着铁芯的功耗显著降低,因此只会产生静态泄漏电流,而不会产生动态功耗。
WFI指令具有暂停执行的效果,直到内核被以下其中一种情况唤醒:

  • IRQ中断,即使PSTATE I位已设置
  • FIQ中断,即使PSTATE F位已设置
  • 异步中止

当内核的中断标志被WFPSTI激活后,下一个中断标志被WFPSTI激活。
WFI指令广泛用于电池供电的系统。例如,移动电话可以每秒多次将核心置于待机模式,同时等待您按下按钮。WFE与WFI类似。它将暂停执行,直到事件发生。这可以是列出的事件条件之一,也可以是集群中另一个核心发出信号的事件。其他内核可以通过执行SEV指令来发送事件信号。SEV向所有核心发送事件信号。通用定时器还可以编程为触发周期性事件,从WFE中唤醒核心。

4、电源状态协调接口

Power State Coordination Interface(PSCI)提供了一种与操作系统无关的方法,用于在内核可以通电或断电的情况下实现电源管理用例。这包括:

  • core闲置管理
  • 动态添加和移除内核(热插拔),以及辅助内核引导
  • 大小核迁徙
  • 系统关机或复位
    使用此接口发送的消息由所有相关执行级别接收。也就是说,如果实现了EL2和EL3,则在来宾系统中执行的Rich OS发送的消息必须由系统管理程序接收。如果虚拟机监控程序发送消息,则安全固件必须接收该消息,然后与受信任的操作系统进行协调。这允许每个操作系统确定是否需要保存上下文。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值