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

    文章

    8651

    浏览量

    361819
  • 计数器
    +关注

    关注

    32

    文章

    2123

    浏览量

    92985
  • SoC芯片
    +关注

    关注

    1

    文章

    533

    浏览量

    34477
  • SPE
    SPE
    +关注

    关注

    0

    文章

    25

    浏览量

    13631
  • csv
    csv
    +关注

    关注

    0

    文章

    35

    浏览量

    5760

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

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

收藏 人收藏

    评论

    相关推荐

    数据采集仪是如何进行数据采集分析 如何工作的 工程监测数采仪

    数据采集
    稳控自动化
    发布于 :2023年10月26日 09:44:30

    [求助]基于LabVIEW 的语音数据采集分析系统设计

    ; 内容包括基于声卡的数据采集系统硬件的实现和软件设计。根据虚拟仪器结构化的特征,把整个系统分为数据采集和信号分析两个模块,以友好的图形界面与用户进行交互。
    发表于 05-24 14:16

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

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

    基于ARM和Linux的无线数据采集系统设计

    基于ARM和Linux的无线数据采集系统设计
    发表于 03-27 14:52

    ARM数据采集+MATLAB

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

    【NanoPi M2申请】智慧型气象数据采集设备及其分析系统

    数据采集设备及其分析系统 ,希望能够使用一款性能相对较好的芯片用于前端数据采集传输和基本数据分析
    发表于 05-07 15:02

    不是NI公司的数据采集器,怎么加入labview进行采集

    不是NI公司的数据采集器,怎么加入labview进行采集
    发表于 11-08 19:08

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

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

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

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

    数据采集整体框架

    背景:对于一些需要快速验证传感器性能,或者某些实验需要快速采集数据并且需要直观显示成波形或者图片, 搭建一个简易方便的数据采集分析系统是有必要的.本文主要介绍以下几个方面:
    发表于 08-17 08:46

    数据采集系统性能测试

    摘要:为了了解某数据采集系统的实际性能,在设计的测试实验平台上,采用实验测试的方法,对其进行了实际测试,并定性与定量地分析了该数据采集系统的
    发表于 01-09 18:03 4次下载

    数据采集集成芯片进行AD转换电路图

    数据采集集成芯片进行AD转换电路图
    发表于 07-16 11:52 645次阅读
    用<b class='flag-5'>数据采集</b>集成<b class='flag-5'>芯片</b><b class='flag-5'>进行</b>AD转换电路图

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

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

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

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

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

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