原文: Power Management with big.LITTLE: A technical overview
投稿人:stevenwillis,2013 年 6 月 20 日
由于设计复杂性和多种电源域的原因,使用复杂 SoC(系统级芯片)的电源管理功能比较困难。在本文中,我将阐述配备 Versatile™ Express V2M-P1 主板的 ARM® CoreTile Express A15x2-A7x3 (V2P-CA15_A7 ) 开发板 (CoreTile)的电源管理硬件功能。其中包含动态电压和频率调节 (DVFS) 及电源切换功能。本文可以帮助你探索 ARM 的 big.LITTLETM 技术,更好地了解其工作原理。
图 1:V2P_CA15_A7 big.LITTLE CoreTile
CoreTile 为 Cortex®-A15 群集、Cortex-A7 群集和 SoC 提供独立的电源域,它们分别由板上的 PSU0、PSU1 和 PSU2 供电。
PSU0、PSU1 和 PSU2 电源具有板载电流感应电阻,其外部测试点可以进行电流测量和功率性能分析,如图 2“电源管理系统架构”中所示。这些电源还有可测量电源、电流和功率的板载 ADC,通过 CoreTile 使用板载微控制器 (DCC) 执行。也为 PSU0 和 PSU1 提供了板载能量计。
PSU0 和 PSU1 电源可以通过 DCC 切断。它直接与 CoreTile 测试芯片中实施的串联电源控制器 (SPC) 相连。DCC 负责控制 DVFS、群集电源开关和群集唤醒。
其中也显示了板载计时方案,可选择从 OSCCLK0/1/7 为 Cortex-A15 群集计时,从 OSCCLK2/3/7 为 Cortex-A7 群集计时。SoC 域则由 OSCCLK7 驱动。OSCCLK 默认值由主板的 board.txt 文件设定,该文件存储于 USBMSD 中。它们也可通过 DCC 使用 board.txt 文件中的性能表进行动态更改。与 DCC 连接的建议方式是通过测试芯片 SPC 寄存器进行。
图 2:电源管理系统架构
电源管理
CoreTile 电源管理通过 SPC(串联电源控制器)和 SCC(串联配置控制器)接口提供下列三大功能,以实现 big.LITTLE 开关/ MP 模型的软件实施:
CoreTile 测试芯片支持所有三种可用于管理 big.LITTLE 系统的软件模型:全局任务调度、群集迁移和 CPU 迁移。
在 big.LITTLE 群集迁移中,一个时间点上仅一个 CPU 群集处于活动状态。由于 Cortex-A7 的能效要优于 Cortex-A15,高性能应用程序可在 Cortex-A15 群集上执行,而中低性能的应用程序则可在 Cortex-A7 上执行。一旦 Cortex-A7 群集达到最高性能运行点,或者 Cortex-A15 群集达到了最低性能运行点,执行就可迁移到另一群集。该设计依赖 CoreLinkTM CCI-400 实现快速迁移。借助侦听从入站端访问出站端的缓存,以此实现数据迁移,防止对主内存的高代价存取。
CPU 迁移与群集迁移相似,但针对各个核心迁移上下文,而不是整个群集。每个 LITTLE 核心与 big 核心结成一对,组成一个虚拟核心。调度程序在虚拟核心间运作。为每个虚拟核心评估负载。如果负载要求高,则虚拟核心由 big 核心实例化;如果负载要求低,则由 LITTLE 核心实例化。随着负载性能分析的变化,该核心的整个上下文将根据需要在 big 和 LITTLE 核心之间迁移。此迁移利用了 CoreLink CCI-400。这一组件提供的连贯性不仅用于迁移,还允许在群集之间共享数据。使用 CPU 迁移时,两个群集都可在任意时间点上处于活动状态。
如果是 big.LITTLE 全局任务调度,操作系统调度程序在系统中的所有核心之间运作。调度程序清楚 big 和 LITTLE 核心之间的计算容量差异。调度程序根据每个线程的性能要求将线程放入 big 或 LITTLE 核心。而性能要求则是从线程历史负载性能分析中确定的。全局任务调度的一个实施是 ARM 的 big.LITTLE MP Linux 内核。此内核将任务调度给最适合的处理器,同时为支持核心电源门控的平台关闭不活动的群集或核心。例如,如果仅运行低密度任务,内核可以选择关闭 big 群集,继续仅在 LITTLE 上运行。与 CPU 迁移情形相似,两个群集都可在任意时间点上处于活动状态。CoreLink CCI-400 是实现这一功能的关键元素,它能在群集之间提供连贯性。
迁移
在 big.LITTLE 群集和 CPU 迁移模型中,软件处理群集间切换需要的所有机制,如处理器状态保存与恢复、控制侦听和中断迁移等。不过,迁移序列对系统有些依赖。
例如,入站群集必须打开电源或从复位中恢复,而隔离必须被移除。当入站群集打开并运行时,出站群集就必须置入复位、隔离状态,然后再关闭。该软件使用测试芯片 SPC 接口与外部 CoreTile DCC 进行通信,后者处理所有的切换机制。
DVFS 接口
动态电压和频率调节允许操作系统为特定的负载需求选择最佳的电压和频率,降低系统的动态功耗。
操作系统负责根据群集上预期的负载决定所需的性能级别。这一所需的性能级别是 0 到 7 范围的一个值,该值通过 SPC 寄存器传递到 DCC。写入这些寄存器会导致与 DCC 的中断,后者读取 SPC 寄存器并将性能级别值转译为电压和频率值。
电源开关模式
CoreTile 有三个与电源管理相关的功率岛,即 Cortex-A15 群集、Cortex-A7 群集和 SoC。Cortex-A15 和 Cortex-A7 群集支持多种电源管理级别。下方所示为测试芯片和电源的框图。
图 3:测试芯片功率岛
功率测量
如前文中所述,CoreTile 拥有板载电流感应电阻:
两个管脚跳头允许连接外部量表,用于确定各个电源上的电流消耗。J16 默认情况下没有插入,因为内置 AXI 包含了许多接口,而且对所测电流消耗的全面了解是因系统而异的。
板载功率测量
CoreTile 包含了对 PSU0/1 的板载电源和功率测量。这些值可从 Versatile Express 主板 SYS_CFGCTRL 或 CoreTile SPC_SYS_CFG 接口访问,详情请见 CoreTile TRM。
板载能量计
CoreTile 包含两个板载能量计,用于读取 PSU0/1 的能耗。它们在 10KHz 上采样,也可从 Versatile Express 主板接口访问。如需更多详情,请参见 CoreTile TRM 中的“能量计”部分,也可阅读我的同事撰写的有关使用 ARM Development Studio 5 (DS-5™) 和 Streamline™ 性能分析程序的博文。
应用说明“AN318 CoreTile Express A15x2 A7x3 电源管理”更详细地介绍了不同电源状态的顺序切断和各种接口的控制。
另外,此处也提供了一个展示 big.LITTLE 运作的演示视频。
Steven Willis 是 ARM 系统设计部门的资深首席工程师。Steven 于 2000 年 11 月加入 ARM,从事过包含 Motherboard、Daughterboard 和 FPGA 板在内的许多开发板的研发工作。在加入 ARM 前,Steve 曾经在剑桥大学卡文迪什实验室电子集团担任技术官。Steve 拥有电子学专业工程学士(荣誉)学位,并且是 IET 特许工程师和会员。