ARM 低功耗架构

ARM 低功耗架构

Linux power and performance management architecture and SCMI
在这里插入图片描述

移动设备

在这里插入图片描述
在这里插入图片描述

SoC上有很多核,ATF和Linux占据了A核,SCP占据了一个M核。当遇到Linux没有权限的事情的时候(eg: 当Linux想要关机或者休眠的时候,这涉及到整个系统电源状态的变化,为了安全性Linux内核没有权利直接执行,需要陷入到EL3等级去执行),需要给SCP打报告,SCP审批后去执行。(异构核间通信)。

ATF代码运行在EL3, 是实现安全相关的软件部分固件,在EL3中处理的程序是BL31。PSCI是工作在non secure EL1(linux内核)/EL2 hypervisor和EL3(bl31)之间的一组电源管理接口,PSCI在EL3实现。

在这里插入图片描述

  • ATF响应smc发过来的PSCI服务请求,PSCI由BL31处理;
  • 实现EL2的虚拟化系统中,EL1使用hvc进入EL2,hypervisor为运行在EL1的Guest/Host OS提供PSCI API调用SPF支持。

在这里插入图片描述
虚拟机电源管理的两种类型(左:Type-2,右:Type-1)

A核需要通过SCMI协议上报给SCP,在AP与SCP的核间通信使用SCMI。
走SMC是安全通道,Linux直接和SCP通信是非安全通道

  • 用户层:首先用户发起的一些操作,通过用户空间的各service处理,会经过内核提供的sysfs,操作cpu hotplug、device pm、EAS、IPA等。
  • 内核层:在linux内核中,EAS通过感知到当前的负载及相应的功耗,经过cpu idle、cpu dvfs及调度选择idle等级、cpu频率及大核或者小核上运行。IPA经过与EAS的交互,做热相关的管理。
  • ATF层:Linux kernel中发起的操作,会经过电源状态协调接口PSCI,由操作系统无关的framework(ARM Trusted Firmware,ATF)做相关的处理后,通过系统控制与管理接口(System Control and Management Interface,SCMI),向系统控制处理器(system control processor,SCP)发起低功耗操作。
  • SCP层:SCP(系统控制处理器system control processor)最终会控制芯片上的sensor、clock、power domain、及板级的pmic做低功耗相关的处理。

Call flow: 用户进程 --sysfs–> 内核(EAS、IPA)–PSCI–> ATF --SCMI–>SCP --LPI–> 功耗输出器件

服务器

在这里插入图片描述

在OS中加入ACPI高级配置和电源接口(X86)
ACPI为兼容的OSPM实现,提供了一组电源管理服务:

  1. LPI:Low-Power Idle,不同于C-states,可以兼容ARM的idle状态
  2. D-States:设备电源管理
  3. CPPC:让OS根据CPU负载情况主动管理CPU的性能
  4. Power Meters:功率计接口 (PMI)

PSCI在ATF(EL3/BL31)中实现
ACPI在UEFI(EL2/BL33)中实现

在这里插入图片描述
ATF+UEFI的boot过程
在这里插入图片描述

CPUidle和hotplug区别:
CPUidle:处于idle状态的cpu,是“suspend”。对调度器来说是可见的,换句话说,调度器并不知道某个CPU是否处于idle状态
cpu hotplug:“off”。负荷较低时,从调度器移除,并将该CPU上的中断等资源迁移到其它CPU上,同时进行必要的负载均衡。

PSCI不包含:

  1. 动态电压频率调节DVFS (cpu freq)
  2. 外设电源管理(GPU等外设)

在这里插入图片描述

PSCI用来与高级配置与电源接口ACPI和设备树FDT等配合使用,并不是要取代ACPI或FDT

PSCI是ARM安全和非安全世界之间的接口,提供了一种发出电源管理请求的方法,在SPF和可信操作系统之间进行通信。为了处理这些请求,SPF(Secure Platform Firmware)必须包含PSCI实现

PSCI在ARM架构不同异常等级上工作的软件之间,提供一个标准的电源管理接口。这些软件,比如Linux、Hypervisor、安全Firmware和可信OS之间必须能够实现互相操作。包括:

  1. CPU核的空闲管理(cpu idle)
  2. CPU核的动态添加,删除(热插拔hotplug)
  3. 辅核引导(在SMP系统中,Linux kernel会在一个CPU(primary CPU)上完成启动操作。primary CPU启动完成后,再启动其它的CPU(secondary CPUs),这称作secondary CPU boot。)
  4. big.LITTLE调度(Cluster迁移,Cpu迁移,全局任务调度)
  5. 系统关机,复位,挂起

SCP 与 SOC PPU

中间层的SCP是由一个M系列的处理器构成的子系统,负责运行固件软件(firmware),向上可与AP通过设定好的接口/协议通信,接收服务请求,向下控制硬件单元,监控传感器,控制时钟和复位,管理电源等等。
有了SCP,就能把一些任务从OSPM中抽离出来,把软件和硬件隔离,增加了灵活性和安全性

PPU(power policy unit)是一个硬件组件,支持SCP通过软件接口编程

在这里插入图片描述
在这里插入图片描述


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值