惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
H
Help Net Security
V
Visual Studio Blog
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
MyScale Blog
MyScale Blog
The Cloudflare Blog
Martin Fowler
Martin Fowler
D
Docker
腾讯CDC
F
Fortinet All Blogs
雷峰网
雷峰网
GbyAI
GbyAI
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
博客园 - 叶小钗

博客园 - yooooooo

I3C协议Single Data Rate(SDR)模式研读(一):总线配置Bus Configuration I3C总线技术概述(二) I3C 总线技术概述(一) PCIe扫盲——物理层逻辑部分基础(三) PCIe扫盲——Ack Nak 机制详解(二) PCIE 的 per-vector masking ftraceoption irq-info IPI与CPU唤醒机制 【ARM CoreLink 系列 5 -- CI-700 控制器介绍 】 ARM CoreLink 系列 4.3 -- NI-700 Component and interface identifiers ARM CCI-500 与 NI0700 的关系. ARM NIC-400 与 NI-700 的区别 claude code命令使用 【ARM Trace32(劳特巴赫) 使用介绍 2.2 -- TRACE32 进阶命令之 DIAG 弹框命令】 trace32 .cmm脚本和.t32文件的区别 【ARM Trace32(劳特巴赫) 使用介绍 2.1 -- TRACE32 Practice 脚本 cmm 脚本学习】 【ARM Trace32(劳特巴赫) 使用介绍 1.1 - Veloce 环境中使用trace32 连接 Cortex-M33】 PCIe 总线的 ASPM 和 链路状态机制总结 fw_devlink 功能 I3C协议详解 UART 协议规范 BPF 调度器 sched_ext 实现机制、调度流程及样例 Android Camera性能分析 录像Buffer Path详解 【UEFI基础】Protocol介绍 【UEFI实战】在库中使用全局变量 sched feature TTWU_QUEUE 【ARM CoreLink 系列 4.2 -- NI-700 Function units 详细介绍】 edk2构建编译流程 UEFI:FDF文件及FD、FV、FFS EDK II PCD的概念、类型、使用
MPAM BE/ FE 的区别及功能
yooooooo · 2026-07-15 · via 博客园 - yooooooo

MPAM DDR 语境里,FEBE 通常表示:

缩写 全称 中文含义 位置/作用
FE Front-End 前端 靠近 CPU/GPU/NPU/DMA 等发起访问的一侧,用于识别、分类、标记请求
BE Back-End 后端 靠近 DDR Controller/Memory Controller 的一侧,用于真正执行带宽限制、优先级控制、统计监控等

1. MPAM DDR 简要背景

MPAM 是 ARM 的 Memory System Resource Partitioning and Monitoring 机制。

它主要用于:

  • 对不同软件实体进行 资源隔离
  • 对不同 VM / Process / Thread / Master 进行 带宽限制
  • 对 DDR、Cache、Interconnect 等资源做 监控
  • 支持 QoS、性能隔离、实时性保障

在 DDR 场景中,MPAM 主要关心:

  • 谁在访问 DDR
  • 访问属于哪个 Partition
  • 该 Partition 能使用多少 DDR 带宽
  • 不同请求之间如何仲裁
  • 每个 Partition 消耗了多少带宽

2. FE 是什么?

FE = Front-End,前端。

它通常位于 请求发起端附近,比如:

  • CPU cluster
  • GPU
  • NPU
  • Display
  • Camera
  • DMA
  • PCIe
  • Modem
  • 其他 bus master

FE 的核心作用是:

  • 接收来自 master 的 memory request
  • 根据请求携带的信息识别来源
  • 给请求打上 MPAM 相关的控制信息
  • 将请求映射到某个 PARTID / PMG
  • 把 MPAM tag 随请求传递到 interconnect 或 DDR path

3. FE 主要负责什么?

FE 主要负责 分类和标记

常见功能包括:

  • 根据 CPU exception level、VMID、ASID、StreamID、MasterID 等区分请求来源
  • 为请求分配 PARTID
  • 为请求分配 PMG
  • 将不同业务流量映射到不同 MPAM partition
  • 将 MPAM 信息插入到 transaction 中
  • 把请求转发给后端 DDR 资源控制单元

可以简单理解为:

FE 不一定直接限制 DDR 带宽,它主要负责判断“这个请求是谁的”。


4. BE 是什么?

BE = Back-End,后端。

它通常位于 共享资源附近,比如:

  • DDR Controller
  • Memory Controller
  • NoC 到 DDR 的出口
  • LLC / SLC / System Cache
  • Interconnect 资源节点

在 MPAM DDR 场景中,BE 通常靠近 DDR 侧。

BE 的核心作用是:

  • 根据 FE 传来的 PARTID / PMG
  • 对 DDR 访问进行仲裁
  • 执行带宽限制
  • 执行优先级控制
  • 执行资源分配
  • 进行带宽统计和监控

5. BE 主要负责什么?

BE 主要负责 控制和统计

常见功能包括:

  • 根据 PARTID 控制 DDR 带宽
  • 对不同 partition 设置最大带宽限制
  • 对不同 partition 设置最小保障带宽
  • 统计每个 partition 的 DDR 访问量
  • 统计 read/write bandwidth
  • 对超限请求进行 throttle
  • 参与 QoS arbitration
  • 对 memory request 做调度控制

可以简单理解为:

BE 负责真正执行“这个请求能用多少 DDR 资源”。


6. FE 和 BE 的关系

整体流程可以理解为:

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

7. PARTID 和 PMG 是什么?

MPAM 中常见两个重要字段:

字段 含义 作用
PARTID Partition ID 表示请求属于哪个资源分区
PMG Performance Monitoring Group 表示性能监控分组

PARTID

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 主要用于性能监控分类。

例如:

PMG 0: CPU traffic
PMG 1: GPU traffic
PMG 2: Camera traffic
PMG 3: Display traffic

BE 可以按 PMG 统计 DDR bandwidth。


8. FE 和 BE 的典型区别

对比项 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出口

9. 一个实际例子

假设系统中有 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 访问:

  • CPU 超过 6 GB/s 时被 throttle
  • GPU 最多能用 10 GB/s
  • Camera 至少保障 4 GB/s,避免丢帧
  • BE 同时统计各 PARTID 的 DDR 使用量

10. 简单理解

可以这样记:

FE:谁发起的?
BE:给它多少资源?

或者:

FE = 分类打标签
BE = 根据标签做控制

更具体一点:

FE 负责把 memory request 标记成某个 MPAM PARTID/PMG
BE 负责根据 PARTID/PMG 对 DDR bandwidth 做限制、保障、仲裁和统计

11. 在 DDR bandwidth debug 中怎么看

如果你在 debug DDR bandwidth、QoS、MPAM 配置,一般需要关注:

FE 侧

确认请求是否被正确分类:

  • CPU/GPU/Camera/Display 是否映射到正确 PARTID
  • StreamID/MasterID 是否匹配
  • PARTID/PMG 是否正确传递
  • OS/Hypervisor 是否正确配置 MPAM context

BE 侧

确认 DDR 侧策略是否生效:

  • 对应 PARTID 是否配置 bandwidth limit
  • 对应 PARTID 是否配置 priority
  • monitor counter 是否在增长
  • throttle 是否被触发
  • DDR controller/NoC 是否支持对应 MPAM feature

12. 总结

MPAM DDR 中:

FE = Front-End
作用:识别请求来源,分配/携带 MPAM PARTID、PMG

BE = Back-End
作用:在 DDR/Memory Controller 侧根据 PARTID、PMG 执行带宽控制、QoS 仲裁和性能统计

一句话:

FE 负责给 DDR 请求打标签,BE 负责根据标签管 DDR 资源。