0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Arm SPE进行芯片数据采集和性能分析呢?

Arm社区 来源:Arm社区 2024-01-24 18:16 次阅读

Arm Statistical Profiling Extension (SPE, 统计分析扩展) 是一种架构级功能,旨在增强 Arm CPU 的指令执行分析。自 2019 年 Arm Neoverse N1 CPU 平台问世以来,该功能便与 Arm CPU 中普遍配备的 Performance Monitor Unit (PMU, 性能监控单元) 并存。

为了能从 SPE 和 PMU 等功能中获益,一个重要的步骤就是提供工具、文档和示例以便形成一种自顶向下 (Top-Down) 的系统级芯片 (SoC) 性能分析解决方案。近期,Arm 的六名工程师发布了一份关于使用 SPE 进行性能分析的详细白皮书。

本文针对软件开发者、性能分析师和芯片工程师介绍了使用 SPE 进行性能分析和根源问题分析的概念和方法。

Arm SPE 是一种硬件辅助 CPU 分析机制,可提供详细的分析功能。它会记录关键执行数据,包括程序计数器、数据地址和 PMU 事件。SPE 可增强对分支、内存访问等的性能分析,从而助力软件优化的实现。SPE 数据可用于使用 Linux perf 等工具进行源代码热点检测、内存访问分析,以及数据共享分析的精确采样。

SPE 采样包括四个阶段:运算采样、记录关键执行信息、样本记录后筛选,以及将记录存储在内存中。它可以使用监控工具进行高效的分析和数据提取。SPE 使用减法计数器定期选择微运算进行分析。SPE 样本还会记录指令从 CPU 后端开始运算的执行周期。

使用 Linux perf 工具收集数据时,可启用 SPE 分析功能。Arm 还发布了 SPE-Parser 辅助工具,以支持 SPE 追踪的数据收集和分析。该工具可以将数据导出为 CSV 和 Parquet 格式,提高了分析的灵活性。

已发布的 SPE 白皮书中提供了四个案例,用来说明该功能的价值。

1

Apache Arrow CSV 写入器:性能优化

第一个案例是利用 SPE 功能来优化 Apache Arrow CSV 写入器代码。结果表明,在 Neoverse N1 平台上,性能提高了 40%。该案例研究包括检测单位周期指令数 (IPC) 和带宽 (GB/s),然后进一步检查 MPKI 和未命中率。其次,运算组合指标揭示了 CSV 写入器工作负载对整数指令和分支的高度依赖,这表明可能存在矢量化优化的机会。

通过对 L1D 缓存事件和分支预测错误进行分析,揭示了与 memcpy 函数相关的问题,其中该函数频繁出现缓存缺失和分支预测错误的情况。该案例研究还对 memcpy 中的分支进行了分析,结果认为分支预测错误的根源在于缓冲区大小预测偏差导致的效率不足。该案例研究强调了在 Arrow CSV 写入器中结合 memcpy 运算对于数据字段和分隔符的复杂性,导致 CPU 分支预测未达到最佳状态。

使用 SPE 进行分析后,便进入了真正有趣的部分,即优化 CSV 写入器代码。第一阶段是引入 copy_separator 辅助函数,以改进热循环中分隔符和行结束符的复制。对经优化的代码进行了基准测试。结果表明,吞吐量从 1.5~1.8 GB/s 提高到 2.1 GB/s,指令总数减少,IPC 从 2.22 提高到 2.58。与分支相关的指标大幅降低,促进了整体性能的提升。在 Neoverse 核心上优化代码时,我们建议使用 SPE 进行热点分析和根源检测。

2

利用 SPE 进行内存访问分析

基于 SPE 进行分析可以获取有关内存运算的宝贵信息,包括内存地址、执行延迟和数据源信息。该分析有助于确定与内存访问相关的瓶颈和性能问题,并且可以采集通常需要运行 LMBench 才能获取的部分数据。

SPE 可记录内存负载的分层数据源命中情况,其中数据源编码取决于系统的缓存层次,如 L1 数据缓存、L2 缓存、LLC 或 RAM

使用 SPE 性能分析数据对内存访问进行分析需要筛选记录,以便着重针对特定代码部分,从中提取延迟值,并检查由内存运算触发的 PMU 事件。内存测试用例显示,SPE 衍生的延迟接近 LMBench 报告的延迟。SPE 数据还有助于分析性能问题,如 TLB 未命中。SPE 衍生的数据源信息与分层内存访问层级结构相匹配,这有助于确定内存访问在缓存层次结构中的命中位置。

3

内存带宽测试

SPE 分析还可用于预估内存带宽。不过需要注意的是,SPE 是一种基于采样运算的统计测量工具,对于内存带宽测量不一定百分百精确。SPE 可用于优化和精细研究时的比较分析,特别是对于具有可预测和熟知的内存访问模式的代码,如微内核。SPE 监测工具中推出的 SPE-Parser 工具可用于处理通过 Linux perf 工具收集的原始 SPE 分析数据。输出结果可提供有关分析结果的宝贵信息。内存读取带宽是通过经筛选的 SPE 样本以统计方式预估出来的。要计算这一估计值,需要将基准读取的总内存大小除以总执行时间。

4

数据共享分析

最后一个用例强调了 SPE 用于多线程工作负载中数据共享分析。数据共享问题可能会导致性能问题,特别是当多个线程在同一数据集上工作时,这会造成缓存一致性开销。缓存伪共享便是一个常见的性能问题。当一个处理器修改了缓存行上的数据项,而另一个处理器在该缓存行的不同部分工作时,就会出现这种情况。伪共享会导致缓存失效,并降低性能。

Linux perf c2c 工具会分析从 SPE 获取的内存访问数据,包括数据源信息、数据地址和指令 PC 地址。Perf c2c 可通过提供存在潜在问题的缓存行地址信息,为伪共享问题检测带来帮助。其中包括不同进程访问的缓存行中的数据偏移、指令地址、本地或远程(跨 CPU)访问信息,以及所涉及的 NUMA 节点。该工具会报告可能存在伪共享的缓存行的详细信息,以及不同线程访问的数据偏移,从而帮助开发者发现并解决伪共享问题。SPE 分析与 perf c2c 工具相结合,可用于识别和解决多线程应用中的伪共享问题,最终提高性能。

总结

Arm SPE 可提供详细的 CPU 分析功能,包括常规代码优化、内存访问分析、内存延迟预估和数据共享分析。

SPE 可用于对源代码热点检测、内存访问分析和数据共享问题进行精确采样。它可通过记录关键执行数据来增强性能分析,并且能够与 Linux perf 等工具集成,帮助用户有效地进行分析并优化代码。该工具集功能全面,能够让用户识别瓶颈,加深对 CPU 行为的理解,并提高软件性能。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9091

    浏览量

    367437
  • 计数器
    +关注

    关注

    32

    文章

    2256

    浏览量

    94505
  • SoC芯片
    +关注

    关注

    1

    文章

    610

    浏览量

    34912
  • SPE
    SPE
    +关注

    关注

    0

    文章

    27

    浏览量

    13736
  • csv
    csv
    +关注

    关注

    0

    文章

    39

    浏览量

    5820

原文标题:使用 Arm SPE 进行芯片数据采集和性能分析

文章出处:【微信号:Arm社区,微信公众号:Arm社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ARM+FPGA的高速同步数据采集

    1、 应用背景     基于ARM+FPGA的高速同步数据采集方案,解决了数据采集的同步性问题,与以往
    发表于 07-22 16:36 1471次阅读

    基于ARM+FPGA的高速同步数据采集

      1、 应用背景    市面上的FPGA开发板和ARM开发板很多,但是将两者结合起来完成数据采集与网络通讯的开发板很少
    发表于 08-31 09:14

    ARM数据采集+MATLAB

    我想做一个ARM数据采集系统,然后再接入MATLAB处理,不知道有没有人做过这方面的,求点资料。用什么接口接入MATLAB,还有就是MATLAB语言能不能转化为arm的,下入到arm
    发表于 08-26 09:24

    LabVIEW的光谱数据采集系统的设计与分析

    本文引入了新兴的虚拟仪器技术,设计了一个基于LabVIEW的光谱分析数据采集系统,通过软件编写再次对采集到的信号进行了滤波处理,增加了增益调整功能;采用最小二乘法实现了对系统的波长标
    发表于 06-06 08:00

    图像采集实例分析——基于LabVIEW的光谱数据采集

    本文引入了新兴的虚拟仪器技术,设计了一个基于LabVIEW的光谱分析数据采集系统,通过软件编写再次对采集到的信号进行了滤波处理,增加了增益调整功能;采用最小二乘法实现了对系统的波长标
    发表于 07-06 08:30

    基于ARM和GPS的数据采集模块的设计

    本文主要介绍了基于ARM 和GPS 的数据采集记录仪中的数据采集模块的设计与实现。该数据采集记录仪以32 位ARM7 微处理器LPC2220
    发表于 01-06 15:45 43次下载

    如何更好地进行数据采集

    如何更好地进行数据采集 工程师经常需要进行数据采集来验证产品的性能和指标,或者对一些特定的应用进行监测和控制,以便确定其物理参数,例如温度、应力、压
    发表于 01-04 10:32 1654次阅读
    如何更好地<b class='flag-5'>进行数据采集</b>

    基于ARM的蓝牙实时数据采集系统的设计

    基于ARM的蓝牙实时数据采集系统的设计 摘要:本文提出了一种基于ARM的蓝牙无线数据采集系统。结合嵌入式技术与蓝牙技术的优势,解决了传统工业现场
    发表于 02-02 11:27 1202次阅读
    基于<b class='flag-5'>ARM</b>的蓝牙实时<b class='flag-5'>数据采集</b>系统的设计

    基于ARM数据采集与控制系统设计

    基于ARM数据采集与控制系统设计
    发表于 12-17 15:26 2次下载

    基于ARM的远程数据采集系统设计_齐亚萍

    基于ARM的远程数据采集系统设计_齐亚萍
    发表于 01-18 20:24 1次下载

    基于ARM处理器的USB数据采集系统

    基于ARM处理器的USB数据采集系统
    发表于 09-25 13:41 5次下载
    基于<b class='flag-5'>ARM</b>处理器的USB<b class='flag-5'>数据采集</b>系统

    基于ARM与DSP的声频数据采集系统设计

    基于ARM与DSP的声频数据采集系统设计
    发表于 10-20 08:34 6次下载
    基于<b class='flag-5'>ARM</b>与DSP的声频<b class='flag-5'>数据采集</b>系统设计

    新的基于ARM数据采集系统设计

    新的基于ARM数据采集系统设计
    发表于 10-31 10:26 7次下载
    新的基于<b class='flag-5'>ARM</b>的<b class='flag-5'>数据采集</b>系统设计

    PLC实时数据采集如何实现?

    数据采集传输对于后续企业进行分析和决策是十分重要的,而实时数据采集更能提升整体生产的认识度,从而采取到更加及时高效的措施。因此PLC实时数据采集
    的头像 发表于 11-24 11:09 2032次阅读

    PLC实时数据采集如何实现

      数据采集传输对于后续企业进行分析和决策是十分重要的,而实时数据采集更能提升整体生产的认识度,从而采取到更加及时高效的措施。因此PLC实时数据采集
    的头像 发表于 12-08 10:31 1468次阅读