3. Zynq低功耗架构总览

Zynq 的低功耗能力并不是某一个模块单独决定的,而是由 PS(Processing System,处理系统)、PL(Programmable Logic,可编程逻辑)、片上互连以及存储器层次共同构成的“功耗版图”决定的。理解这张版图,是后续做时钟门控、电源域划分、DDR 低功耗模式配置和 PL 动态重配置的前提。本节从架构层面梳理各部分的低功耗设计特征,并给出一个可对照的功耗来源分解视图。

一、PS 子系统:功耗的“常驻基座”

PS 是 Zynq 中始终需要供电、且承担启动、配置、外设管理和操作系统运行的部分,因此它构成了整颗芯片的静态功耗基座。以常见的 Zynq-7000 系列为例,PS 内部包含 APU(应用处理单元,双核 Cortex-A9)、SCU(Snoop Control Unit)、L2 Cache、OCM(On-Chip Memory)、DDR 控制器、中央互连以及一组外设控制器(UART、SPI、I2C、USB、GigE、SD 等)。这些模块的低功耗特征各不相同:

  • APU 与时钟域:每个 Cortex-A9 核有独立的时钟使能,空闲核可通过 WFI(Wait For Interrupt)进入低功耗状态,配合 CPU 时钟关闭可显著降低动态功耗;但 L2 Cache 与 SCU 通常需要保持供电以维持一致性。
  • OCM 与 L2:OCM 容量小、访问延迟低,适合放置频繁访问的代码或数据,减少对 DDR 的访问次数,从而间接降低 DDR PHY 与控制器功耗。
  • DDR 控制器:支持自刷新(Self-Refresh)、预充电掉电(Precharge Power-Down)等模式,是 PS 侧可主动干预的最大动态功耗来源之一。
  • 外设控制器:未使用的外设应通过时钟关闭或复位保持关闭,避免“空转”消耗。

需要强调的是,PS 的电源域划分相对固定,用户可干预的空间主要集中在时钟使能、PLL 配置、DDR 工作模式和 CPU 频率/电压(若平台支持 DVFS)上。因此 PS 侧的低功耗策略更偏向“配置优化”而非“结构裁剪”。

二、PL 可编程逻辑:可裁剪的动态功耗主体

PL 由可配置逻辑块(CLB)、DSP48 切片、Block RAM、时钟管理单元(MMCM/PLL)以及 I/O 组成。与 PS 不同,PL 的功耗与“实际使用了多少资源、以多高频率翻转”强相关,因此它是 Zynq 中最具可裁剪性的功耗部分。其低功耗特征体现在:

  • 资源使用率:未使用的 CLB、DSP、BRAM 在配置后不翻转,动态功耗接近零,但漏电仍存在;因此“少用资源”主要降低动态功耗。
  • 时钟与翻转率:PL 动态功耗近似与频率和翻转率成正比。对不工作的逻辑关闭时钟(BUFGCE 门控)是最直接有效的手段。
  • 电源域与部分重配置:部分 Zynq 器件支持将 PL 划分为多个可独立断电的区域(如通过 DFX/PR 配合电源门控),在不需要时关闭整块区域,可同时降低动态与静态功耗。
  • I/O 标准与驱动强度:LVCMOS 与 LVDS 的功耗差异明显,驱动强度和转换速率(Slew Rate)设置也会影响 I/O 功耗。

因此,PL 侧的低功耗设计核心是“按需使用、按需翻转、按需供电”。

三、互连与存储器层次:功耗的“通道成本”

PS 与 PL 之间通过 AXI 互连连接,包括 GP(General Purpose)端口、HP(High Performance)端口和 ACP(Accelerator Coherency Port)。互连本身不产生大量计算功耗,但它是数据搬运的通道,其功耗与访问频率、位宽、突发长度和访问目标密切相关。存储器层次则从 OCM、L2、DDR 到外部存储逐级增加访问功耗。一个重要的低功耗原则是:让数据尽量停留在离计算单元更近、更小的存储层次中。例如,将频繁访问的系数表放入 BRAM 或 OCM,而不是每次从 DDR 读取,可以显著减少 DDR 控制器和 PHY 的活跃时间。

下图给出 Zynq 低功耗架构的功耗来源分解与可干预点,帮助建立“哪部分功耗由谁决定、可以从哪里下手”的整体视图。

Zynq 低功耗架构:功耗来源与可干预点 PS 处理系统(常驻基座) APU 双核 Cortex-A9 + SCU L2 Cache / OCM DDR 控制器(自刷新/掉电) 外设控制器(UART/SPI/USB…) PL 可编程逻辑(可裁剪主体) CLB / DSP48 / BRAM MMCM / PLL 时钟管理 I/O 标准与驱动强度 部分重配置 / 电源门控区域 AXI 互连 GP / HP / ACP 端口 位宽 · 突发长度 · 访问频率 决定数据搬运功耗 存储器层次(通道成本递增) 寄存器 / BRAM(最近,功耗最低) OCM / L2 Cache DDR 控制器 + PHY 外部 DDR 颗粒(最远,功耗最高) PS 侧可干预点 • CPU 空闲 → WFI + 时钟关闭 • 未用外设 → 关闭时钟/复位 • DDR → 自刷新 / 预充电掉电 • PLL → 按需降频或旁路 • 数据就近放置 → 减少 DDR 访问 • 电压/频率调节(若平台支持) PL 侧可干预点 • 资源按需例化,减少翻转 • BUFGCE 门控空闲时钟域 • 降低不必要的高频时钟 • I/O 驱动强度与转换速率 • 部分重配置关闭闲置区域 • 用 BRAM 替代片外访问 总功耗 ≈ PS 基座 + PL 动态 + 互连搬运 + 存储访问

四、从架构到策略:三个层次的协同

把上述三部分放在一起看,可以得到一个清晰的功耗分解关系:总功耗约等于 PS 基座功耗、PL 动态功耗、互连搬运功耗和存储器访问功耗之和。PS 基座相对固定,优化空间在时钟与 DDR 模式;PL 动态功耗弹性最大,优化空间在资源使用、时钟门控和电源门控;互连与存储层次则通过“数据放置”和“访问模式”间接影响功耗。

在实际工程中,一个常见的低功耗设计流程是:先确认 PS 侧哪些外设和时钟可以关闭,再评估 PL 中哪些逻辑可以门控或断电,最后检查数据流是否把大量访问压在了 DDR 上。例如,一个图像预处理任务若把行缓存放在 BRAM 中,只把最终结果写回 DDR,其 DDR 访问次数可能从每帧数百万次降到数万次,DDR 控制器的活跃时间随之大幅缩短。这类优化不需要改变算法,只需要调整数据放置和访问顺序。

判断某部分是否值得优化,可以先问三个问题:它是否常开?它是否高频翻转?它是否频繁访问远端存储?三个“是”越多,优化收益通常越大。

需要提醒的是,Zynq 的低功耗设计不是把每个模块都调到最低,而是在性能、延迟和功耗之间找到平衡点。PS 的常驻特性决定了它不能随意断电,PL 的可裁剪性决定了它是最灵活的调节对象,而互连与存储层次则决定了“数据搬得多远、多频繁”。理解这三者的分工,后续的时钟门控、电源域划分和 DDR 低功耗模式配置才有明确的落脚点。