Jumana Mundichipparak
2021年10月7日
软件开发人员依靠性能分析器在程序执行期间收集详细的性能数据。性能分析器测量重要参数,如指令、周期、缓存命中和分支未命中,因此开发人员可以描述CPU工作负载并分析代码执行。分析的结果通过确定下一代系统的设计需求,更容易微调原型、生产系统和应用程序代码的效率,甚至帮助规划未来设计。
Arm Neoverse N1 CPU是真正革命性的,以一半的功耗提供业界领先的套接字性能,具有服务器级线程性能。Neoverse N1为领先的云提供商基础设施提供动力,如AWS Graviton2处理器和Oracle OCI Ampere A1。云提供商之所以选择Neoverse N1,是因为它的明显优势是,对于各种工作负载,其性价比比当前基于x86的同类实例高40%。
为了实现这些性能增益和节能,我们需要了解性能分析背后的方法。对于软件工作负载分析,可以使用原始硬件事件以及从中派生的一些有用数据点来关联事件,以获得可操作的细节。为了实现这一点,我们使用了一种称为性能监视单元(PMU)的东西。PMU是一种基于硬件的功能,在应用程序运行时收集硬件执行数据。PMU不会增加开销或影响性能,因为评测是在应用程序进程之外的硬件中完成的。代码中没有插入任何内容,执行顺序保持不变。Neoverse N1 PMU设计用于Linux perf工具,这是一种性能工具API,有助于从硬件计数器收集指标。LinuxPerf还有助于使用事件示例对代码进行注释,以便于微体系结构行为和软件执行之间的关联。在工作负载执行期间使用Linux Perf进行计数和采样的性能评测设置将开发人员从高级别的全局分析带到详细的、特定于事件的检查,以确定性能问题的根本原因。
性能分析
选择正确的PMU事件并遵循一种方法可以使用于分析和优化的时间更加有效。它有助于对Arm Neoverse N1微体系结构有一个高层次的理解,因为它包括复杂的管道并使用多级内存层次结构。由于Neoverse内核支持100多个硬件计数器,因此它还有助于了解要关注哪些事件。
内幕贴士
为了帮助节省时间和精力,使您能够快速完善分析并深入了解软件优化的细节,我们将两个关键文档放在一起,告诉您需要了解的内容。
1) Arm Neoverse N1 PMU指南:本文档更好地描述了所有硬件PMU事件,以及执行性能分析时使用事件所需的微体系结构和体系结构细节。
https://documentation-service.arm.com/static/60b79a94e022752339b44ba6?token=
2) Arm Neoverse N1性能分析方法白皮书:本白皮书介绍了性能分析方法,并演示了如何在Arm Neoverse N1上进行工作负载表征。
我们介绍了CPU的三个子系统,提出了原始事件和用于初始工作负载表征的衍生指标,确定了用于计数和基于事件的采样的四个关键性能函数,并包括一个用于演示该方法的案例研究。