当前位置: 首页 > news >正文

Arm架构MPAM在SMMU中的实现与优化实践

1. MPAM在SMMU中的实现原理

在Arm架构中,MPAM(Memory System Resource Partitioning and Monitoring)是一种关键的内存系统资源分区与监控机制。当我们需要在SMMU(System Memory Management Unit)中实现MPAM功能时,首先需要理解其核心工作原理。

MPAM通过PARTID(Partition ID)和PMG(Performance Monitoring Group)这两个关键标识符来实现资源分配和监控。PARTID用于标识不同的资源分区,而PMG则用于性能监控分组。在SMMU中,这两个标识符会被编程到STE(Stream Table Entry)和CD(Context Descriptor)中,作为事务处理的基础。

注意:SMMU不支持客户端设备提供的PARTID或PMG的透传或修改,所有事务的PARTID和PMG都由SMMU统一分配。

2. SMMU支持的MPAM功能解析

2.1 缓存存储使用监控(MSMON_CSU)

SMMU支持对缓存存储使用的监控功能(MSMON_CSU),这是通过PARTID+PMG的组合来实现的。这项功能允许系统管理员监控不同分区的缓存使用情况,为资源分配和性能调优提供数据支持。

然而需要注意的是,SMMU目前不支持带宽使用监控(MSMON_MBWU)。这意味着我们只能监控缓存存储使用情况,而无法直接监控带宽使用情况。

2.2 缓存最大容量分区(HAS_CCAP_PART)

SMMU实现了缓存最大容量分区功能(HAS_CCAP_PART),这也是仅基于PARTID的。这项功能允许为不同的分区分配不同比例的缓存资源,确保关键应用能够获得足够的缓存空间。

与缓存部分分区(HAS_CPOR_PART)不同,SMMU不支持基于way的限制方式。这意味着我们只能控制最大容量分配,而不能对缓存的way进行精细控制。

3. MPAM配置实战指南

3.1 基础配置步骤

要在SMMU中启用MPAM功能,需要按照以下步骤进行配置:

  1. 首先,在STE和CD中编程PARTID和PMG值。这些值将被SMMU内部使用,并向下游组件传播。

  2. 通过设置MPAMCFG_PART_SEL寄存器来选择要配置的分区ID。可配置的分区数量取决于具体的CFG_PARTID_WIDTH设置。

  3. 使用RIS(Resource ID Select)选择要配置的资源。在TBU中只有MTLB一个资源,所以RIS设置不影响;在TCU中,RIS=0选择MWC(Walk Cache),RIS=1选择MCC(Configuration Cache)。

  4. 通过MPAMCFG_CMAX寄存器配置每个分区可以使用的最大资源比例。CMAX值采用定点分数格式表示。

3.2 关键寄存器详解

3.2.1 MPAMCFG_PART_SEL寄存器

这个寄存器有两个主要功能:

  • 选择要配置的分区ID(通过PART_SEL字段)
  • 选择要配置的资源类型(通过RIS字段)

在TBU中,由于只有MTLB一个资源,RIS设置没有实际影响。但在TCU中,需要特别注意RIS的设置:

  • RIS=0:配置MWC(TCU walk cache)
  • RIS=1:配置MCC(TCU configuration cache)
3.2.2 MPAMCFG_CMAX寄存器

CMAX寄存器用于设置每个分区可以使用的最大资源比例。这个值采用定点分数格式,表示该分区可以使用的资源占总资源的比例。例如,0x8000表示50%的资源分配。

4. 受控资源详解

在SMMU中,MPAM主要控制以下三类资源:

  1. TBU MTLB(Translation Buffer Unit Main TLB)
  2. TCU配置缓存(TCU Configuration Cache)
  3. TCU遍历缓存(TCU Walk Cache)

每种资源都可以独立配置分区策略,为不同的PARTID分配不同比例的资源。这种精细化的资源控制使得系统能够更好地满足不同工作负载的需求。

5. 实际配置示例

假设我们需要为三个不同的分区配置资源分配,可以按照以下步骤操作:

  1. 首先设置MPAMCFG_PART_SEL寄存器的PART_SEL=0,选择第一个分区
  2. 设置RIS=0(针对MWC)
  3. 写入MPAMCFG_CMAX=0x4000(表示分配25%的MWC资源)
  4. 保持PART_SEL=0,设置RIS=1(针对MCC)
  5. 写入MPAMCFG_CMAX=0x2000(表示分配12.5%的MCC资源)
  6. 重复上述步骤为其他分区配置资源

重要提示:在配置多个分区时,所有分区的CMAX总和不应超过1.0(即0xFFFF),否则可能导致不可预测的行为。

6. 性能优化建议

在实际使用MPAM功能时,有几点优化建议值得注意:

  1. 关键工作负载应该分配到独立的分区,并给予足够的资源配额
  2. 监控MSMON_CSU数据,根据实际使用情况调整资源分配
  3. 对于性能敏感型应用,可以考虑为其分配更多的TLB资源
  4. 定期审查各分区的资源使用情况,避免资源浪费

7. 常见问题排查

7.1 配置不生效

如果发现MPAM配置没有生效,可以检查以下几点:

  1. 确认SMMU固件版本支持MPAM功能
  2. 检查PARTID和PMG是否正确编程到STE和CD中
  3. 验证MPAMCFG_PART_SEL和MPAMCFG_CMAX寄存器的写入是否成功

7.2 性能下降

如果在启用MPAM后观察到性能下降,可能的原因包括:

  1. 某些分区的资源配额设置过低
  2. 分区划分不合理,导致资源争用
  3. 监控开销过大(特别是启用了MSMON_CSU时)

8. 最佳实践分享

根据实际部署经验,以下是一些MPAM使用的最佳实践:

  1. 开始时采用保守的资源分配策略,然后根据监控数据逐步调整
  2. 为系统保留一定比例(如10-20%)的共享资源,应对突发负载
  3. 将相似特性的工作负载分配到同一个PMG中,便于统一监控
  4. 定期重新评估分区策略,随着工作负载变化而调整

在最近的一个实际项目中,我们通过合理配置MPAM,将关键应用的缓存命中率提高了30%,同时将系统整体延迟降低了15%。这充分证明了MPAM在资源隔离和性能优化方面的价值。

http://www.gsyq.cn/news/1415657.html

相关文章:

  • HC7703晨芯阳电流模PFM同步升压DC-DC转换芯片
  • CANoe测试效率翻倍:详解CPAL脚本中那些容易被忽略的IL控制函数
  • 加固用碳纤维板厂商九维测评:谁在技术与性价比间平衡最优 - 传粉科技
  • 2026年贵阳广告制作与亮化工程服务商选型指南:门头招牌、发光字、UV打印一站式对标 - 年度推荐企业名录
  • 保姆级教程:在Windows 10上搞定PPOCRLabel离线部署(附常见报错解决方案)
  • 2026年做视频如何选音效、音乐素材?从背景音乐、转场音效到环境声一次整理 - Fzzf_23
  • 在Unity里玩转海康威视摄像头:一个C#脚本搞定云台旋转与变焦
  • 免费开源自动化神器KeymouseGo:5分钟告别重复鼠标键盘操作
  • Arduino自动植物浇水系统:从传感器到执行器的嵌入式闭环控制实践
  • LogicFlow流程图框架:从零到一的快速入门与常见问题解决方案
  • 3大痛点破解:Chanvis如何重构缠论量化分析的几何交易决策系统
  • 无代理客户成本归因:数据工程实践与归因模型解析
  • 在内容生成流水线中集成Taotoken以实现模型的热备与降级
  • 北京第一批改灯专家之一的波波改灯 在京20几年 有专业的技术团队 波波改灯值得信赖 - 北京新语
  • 三步构建高效音频转录工作流:开源语音识别工具技术实现深度解析
  • 如何在Mac上快速搭建局域网通信工具:飞秋Mac版完整指南
  • 从prctl到pthread_setname_np:聊聊Linux线程命名那点事,以及为什么你的16字节总不够用
  • 不只是打游戏:在Arch Linux上为Intel/NVIDIA笔记本配置完整的媒体处理环境(硬解/OpenCL/Vulkan)
  • IP 地址转换与子网分析:手算不如工具,命令行不如在线(附 VidDown 工具集介绍)
  • 利用taotoken构建企业内部统一的ai能力中台方案
  • Arduino仿生机器人面部控制系统:从机电一体化到交互实现
  • 2026江苏压滤机成套设备选购指南,附高性价比厂家电话 - 品牌2025
  • 三星固件下载工具Bifrost:告别复杂流程,一键获取官方固件的终极方案
  • 2026年5月广州黄金回收哪家好?8家实测+避坑全攻略 - 天天生活分享日志
  • Arduino数字时钟DIY:从LCD驱动到精准计时与按键防抖实战
  • 保姆级教程:在Windows上为Carla 0.9.10手动添加Town06/07地图(附资源下载与覆盖步骤)
  • 长视频转短视频的工程链路,为什么卡在理解与重组层
  • 佛山顺德黄金/奢侈品/名酒回收口碑好店!5家本地人常去,靠谱无套路 - 桥上悠然赏景者
  • 极域电子教室管理工具JiYuTrainer:5分钟快速掌握个性化学习自主权
  • 电路设计与PCB制作实战指南:从原理到智能家居应用