




























在 MPAM DDR 语境里,FE 和 BE 通常表示:
| 缩写 | 全称 | 中文含义 | 位置/作用 |
|---|---|---|---|
| FE | Front-End | 前端 | 靠近 CPU/GPU/NPU/DMA 等发起访问的一侧,用于识别、分类、标记请求 |
| BE | Back-End | 后端 | 靠近 DDR Controller/Memory Controller 的一侧,用于真正执行带宽限制、优先级控制、统计监控等 |
MPAM 是 ARM 的 Memory System Resource Partitioning and Monitoring 机制。
它主要用于:
在 DDR 场景中,MPAM 主要关心:
FE = Front-End,前端。
它通常位于 请求发起端附近,比如:
FE 的核心作用是:
PARTID / PMGFE 主要负责 分类和标记。
常见功能包括:
PARTIDPMG可以简单理解为:
FE 不一定直接限制 DDR 带宽,它主要负责判断“这个请求是谁的”。
BE = Back-End,后端。
它通常位于 共享资源附近,比如:
在 MPAM DDR 场景中,BE 通常靠近 DDR 侧。
BE 的核心作用是:
PARTID / PMGBE 主要负责 控制和统计。
常见功能包括:
PARTID 控制 DDR 带宽可以简单理解为:
BE 负责真正执行“这个请求能用多少 DDR 资源”。
整体流程可以理解为:
CPU/GPU/NPU/DMA 等 Master
|
v
MPAM FE
识别请求来源,分配 PARTID/PMG
|
v
NoC / Interconnect
携带 MPAM 信息传递
|
v
MPAM BE
根据 PARTID/PMG 执行限速、仲裁、统计
|
v
DDR Controller
|
v
DDR Memory
MPAM 中常见两个重要字段:
| 字段 | 含义 | 作用 |
|---|---|---|
PARTID |
Partition ID | 表示请求属于哪个资源分区 |
PMG |
Performance Monitoring Group | 表示性能监控分组 |
PARTID 用于资源控制。
例如:
| 业务 | PARTID |
|---|---|
| Android foreground app | PARTID 1 |
| Background task | PARTID 2 |
| Camera | PARTID 3 |
| Display | PARTID 4 |
| NPU | PARTID 5 |
BE 可以基于 PARTID 对 DDR 做带宽控制。
例如:
PARTID 1: max 8 GB/s
PARTID 2: max 2 GB/s
PARTID 3: min 4 GB/s
PARTID 4: high priority
PMG 主要用于性能监控分类。
例如:
PMG 0: CPU traffic
PMG 1: GPU traffic
PMG 2: Camera traffic
PMG 3: Display traffic
BE 可以按 PMG 统计 DDR bandwidth。
| 对比项 | FE | BE |
|---|---|---|
| 全称 | Front-End | Back-End |
| 中文 | 前端 | 后端 |
| 靠近位置 | 请求发起端 | DDR/共享资源端 |
| 核心作用 | 分类、标记 | 控制、仲裁、统计 |
| 处理对象 | Master request | Shared resource access |
| 主要字段 | PARTID、PMG 生成/传递 | PARTID、PMG 消费/执行 |
| 是否直接限 DDR 带宽 | 通常不是 | 通常是 |
| 是否做监控统计 | 可能辅助 | 主要执行点 |
| 典型位置 | CPU/GPU/NPU/DMA path | DDR Controller/NoC DDR出口 |
假设系统中有 CPU、GPU、Camera 同时访问 DDR:
CPU request -> FE 标记 PARTID=1
GPU request -> FE 标记 PARTID=2
Camera request -> FE 标记 PARTID=3
Camera request -> FE 标记 PARTID=3
显示更多行
这些请求经过 NoC 到 DDR BE。
BE 上配置:
PARTID=1 CPU max bandwidth = 6 GB/s
PARTID=2 GPU max bandwidth = 10 GB/s
PARTID=3 Camera min bandwidth = 4 GB/s
然后 BE 根据配置控制 DDR 访问:
可以这样记:
FE:谁发起的?
BE:给它多少资源?
或者:
FE = 分类打标签
BE = 根据标签做控制
更具体一点:
FE 负责把 memory request 标记成某个 MPAM PARTID/PMG
BE 负责根据 PARTID/PMG 对 DDR bandwidth 做限制、保障、仲裁和统计
如果你在 debug DDR bandwidth、QoS、MPAM 配置,一般需要关注:
确认请求是否被正确分类:
确认 DDR 侧策略是否生效:
MPAM DDR 中:
FE = Front-End
作用:识别请求来源,分配/携带 MPAM PARTID、PMG
BE = Back-End
作用:在 DDR/Memory Controller 侧根据 PARTID、PMG 执行带宽控制、QoS 仲裁和性能统计
一句话:
FE 负责给 DDR 请求打标签,BE 负责根据标签管 DDR 资源。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。