• 正文
  • 相关推荐
申请入驻 产业图谱

ARM CPU性能分析 -- SPE采样分析

06/19 10:15
1570
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

对ARM CPU进行性能分析常用的方法有PMU性能监控、Top-Down性能分析、SPE采样分析等。本文介绍一下SPE采样分析的方法。

ARMv8.2引入了Statistical Profiling Extension(SPE),它提供了一种非侵入性的软件和硬件采样方法,可以对指令集架构定义的架构指令或uop进行采样分析。

SPE和PMU的对比:PMU可以分析一段代码执行中的event信息,但不能精确分析某一条指令的信息,例如这条指令有没有cache miss、指令执行的latency、分支预测的地址、指令访问的虚拟地址和物理地址、数据来源是哪一级的cache/另外一个Cluster的CPU/另一个socket的CPU?

而SPE采样分析则可以做到这些。

1. SPE介绍

SPE通过硬件采集CPU执行过程中发生的event,根据软件设置的采样间隔对指令进行采样,由硬件产生SPE的record packet并将packet写入外部内存。SPE采样的指令地址信息是非常精确的,不会漂移。而且采样记录的开销较小,因而采样率可以设置得很高。

SPE采样流程主要包括以下4个步骤:

 

按照采样间隔从样本总体中选一个operation(可以限定为某个EL)。采样间隔是软件通过写入PMSICR_EL1.COUNT来设置的。这个过程可以加入一些随机,伪随机或扰动到采样间隔中。

硬件trace这个operation在pipeline的执行信息,包括PC,event,时序,数据地址,即profiling operation。

在创建一个采样record之前,可以通过以下条件来过滤profile operation。

a.operation类型;

b.event;

c.latency。

创建一个包含trace信息的sample record。满足过滤条件的sample record被写入并存储在内存缓冲区中。当内存缓冲区满时,可以用软件处理这些sample record。

2. 采样record和packet

SPE采集的一个record 表示对一个operation的trace记录,一个record包含多个packets,不同的packet代表不同的信息,包括Address packet、Counter(LAT) packet、Events(EV) packet、Type(LD) packet、Timestamp(TS) packet、datasource packet、context packet等。

2.1 address packet

统计operation的地址,包括PC、Branch target address、Data access virtual address和Data access physical address。

2.2 counter packet

统计operation的latency,包括total latency,issue latency,translation latency这三种。

Issue latency:统计operation从dispatch到issue出去执行之间的cycle数。包括所有operation。

Total latency: 统计operation被dispatch到执行完成之间的cycle数。包括所有operation。

Translation latency:统计operation从虚拟地址送到MMU到MMU地址翻译完成之间的cycle数。包括所有load、store和atomic operation。

2.3 operation type packet

统计采样的operation的类型,包括Load、store、atomic、Branch或exception return等指令类型。

2.4 event packet

统计采样的operation的event。例如L1D-ACCESS、TLB-ACCESS、L2-MISS等事件。

2.5 data source packet

统计load数据的来源是哪里,例如数据是来自L1 cache、L2 cache、peer cluster、DDR、remote socket等等。

3. 使用perf工具分析SPE

可以通过perf工具来进行SPE采样分析。例如获取SPE采样数据:

perf record -e arm_spe_0/branch_filter=1,load_filter=1,store_filter=1,pa_enable=1,min_latency=10/  ./user_app

分析SPE采样数据:

perf report -D -i ./perf.data  >  report.txt

参考内容:

https://aijishu.com/a/1060000000398832

https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/statistical-profiling-extension-for-armv8-a

https://static.linaro.org/connect/lvc21/presentations/lvc21-302.pdf

相关推荐