2. 应用处理器(AP)子系统:Cortex-A76/A55大小核集群
应用处理器(AP)子系统是高通8155芯片的计算核心,负责运行操作系统(Android/Linux)、用户界面、应用程序以及复杂的信号处理任务。本章聚焦于其核心架构:基于ARM DynamIQ技术的Cortex-A76与Cortex-A55组成的大小核异构集群,以及与之紧密耦合的缓存层次、内存控制器接口和功耗管理机制。
2.1 模块边界与系统分层
AP子系统位于整个芯片的计算域中心,通过高速总线(如ACE/CHI)与其它子系统(如GPU、DSP、ISP、NPU)连接。其内部结构遵循清晰的层次化设计。
- 物理边界:一个DynamIQ共享单元(DSU-110)集群,内部集成4个Cortex-A76性能核与4个Cortex-A55能效核。
- 缓存分层:
- L1缓存:每个核心私有,包含L1指令缓存(L1-I)和L1数据缓存(L1-D)。A76的L1-D为64KB,A55的L1-D为32KB。
- L2缓存:每个核心私有。A76的L2为512KB,A55的L2为128KB。
- L3缓存:由DSU集群内所有核心共享,容量通常为2MB ~ 4MB。
- 系统内存接口:通过内存控制器(Memory Controller, MC)连接片外LPDDR5/LPDDR4x DRAM。典型配置为双通道64-bit LPDDR5,提供高带宽与低延迟。
2.2 数据流/控制流与信任链路
AP子系统内的数据流动遵循“取指-译码-执行-写回”的经典流水线,但大小核集群引入了任务调度与电源管理的复杂性。
- 控制流:操作系统调度器(如Linux CFS或EAS)根据任务优先级、CPU负载和功耗预算,决定将任务下发到A76性能核或A55能效核。DSU中的CCI/CHI一致性总线确保集群内数据一致性。
- 数据流:核心从L1/L2/L3缓存逐级请求数据,未命中则通过内存控制器访问DRAM。关键的信任链路是:从Boot ROM -> PBL -> SBL -> UEFI -> HLOS,每一步都包含签名验证,确保未经授权的代码无法在A76或A55核心上执行。
2.3 方案权衡:大小核与频率策略
采用A76 + A55的DSU集群方案,本质上是性能与功耗的工程权衡。下表对比了两种核心的关键特性:
| 特性 | Cortex-A76 (性能核) | Cortex-A55 (能效核) |
|---|---|---|
| 微架构 | 3宽度解码,乱序执行,高性能 | 按序执行,低功耗设计 |
| 典型频率范围 | 1.8 GHz ~ 2.96 GHz | 1.2 GHz ~ 1.8 GHz |
| L1缓存 | 64KB I + 64KB D | 32KB I + 32KB D |
| L2缓存 | 512KB | 128KB |
| 典型单核功耗 | 1.5W ~ 3W | 0.2W ~ 0.5W |
| 适用场景 | 游戏渲染、复杂计算、应用启动 | 后台服务、待机、轻量任务 |
权衡:A76核提供峰值性能,但功耗高;A55核能效比优异,适合轻量级常驻任务。DSU-110允许集群内所有核心使用相同的指令集(ARMv8.2-A),但可独立调节电压与频率,实现精细化的DVFS(动态电压频率调整)。
2.4 落地步骤:异构调度配置
在实际的嵌入式系统BSP开发中,需要配置内核调度器以利用大小核。关键步骤如下:
- 识别CPU拓扑:在设备树(DTS)或ACPI表中添加CPU容量信息。
- 配置DSU-110控制器:确保L3缓存和一致性总线驱动加载正确。
- 使能WALT或EAS调度器:选择基于窗口辅助负载追踪(WALT)或能耗感知调度(EAS)的策略。
- 设置频率调节器:使用
schedutil或cpufreq调节策略。 - 验证大小核负载分布:通过
/sys/devices/system/cpu*/cpufreq/或perf工具检查。
2.5 验收标准与异常处理
- 验收标准:
- 所有8个核心(4*A76 + 4*A55)在操作系统启动后均被正确枚举并处于在线状态。
- 执行标准
stress压力测试时,A76集群能稳定运行在标称的最高频率(如2.96 GHz),温度不超过85°C。 - 在待机场景下,A55集群能承担所有后台任务,且A76集群处于深度睡眠(WFI)状态。
- 异常处理:
- 核心崩溃(Panic):系统通过内部错误检测机制挂起故障核心,并尝试将其从调度域中剔除。
- 缓存一致性错误:DSU硬件自动执行行无效化操作,严重时触发系统复位。
- 温度过载:由温度传感器触发,PMIC自动执行降频或关机保护。
2.6 AP子系统核心架构图
工程实践提示: 在调试AP子系统性能时,应重点监控
/sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq 和 /sys/kernel/debug/tracing/trace 中的调度器事件。如果发现A76核心长期处于低负载状态,而A55核心负载过高,说明EAS调度器的能耗模型可能需要校准。