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

推荐订阅源

cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
云风的 BLOG
云风的 BLOG
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
GbyAI
GbyAI
WordPress大学
WordPress大学
NISL@THU
NISL@THU
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
D
DataBreaches.Net
F
Full Disclosure
Recent Commits to openclaw:main
Recent Commits to openclaw:main
V
Visual Studio Blog
Last Week in AI
Last Week in AI
L
LangChain Blog
AWS News Blog
AWS News Blog
Martin Fowler
Martin Fowler
V
V2EX
The Hacker News
The Hacker News
Scott Helme
Scott Helme
T
Troy Hunt's Blog
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
Cloudbric
Cloudbric
C
Cyber Attacks, Cyber Crime and Cyber Security
O
OpenAI News
月光博客
月光博客
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
G
Google Developers Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
IT之家
IT之家
C
Cisco Blogs
Google DeepMind News
Google DeepMind News
T
Tenable Blog
Jina AI
Jina AI
T
Tor Project blog
The Cloudflare Blog
Y
Y Combinator Blog
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
Cyberwarzone
Cyberwarzone
Microsoft Security Blog
Microsoft Security Blog
Stack Overflow Blog
Stack Overflow Blog
A
Arctic Wolf

博客园 - yooooooo

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的概念、类型、使用 PELT算法浅析 load_balance函数代码详解 UEFI Boot Manager Linux misfit task Linux 内核中sched_prio_to_weight转换关系 CFS任务放置代码详解 CFS任务的负载均衡(load balance)
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 资源。