Who is this for?

This is an advanced topic for software developers and performance engineers who want to understand the similarities and differences between Arm Neoverse and Intel x86 top-down performance analysis using PMU counters, Linux Perf, and the topdown-tool.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Compare Intel x86 multi-level hierarchical methodology with Arm Neoverse micro-architecture exploration methodology
  • Execute performance analysis using Linux Perf on x86 and topdown-tool on Arm systems
  • Analyze Backend Bound, Frontend Bound, Bad Speculation, and Retiring categories across both architectures

Prerequisites

Before starting, you will need the following:

  • Familiarity with performance analysis on Linux systems using Perf and PMU counters
  • Access to an Arm Neoverse V3 system, such as the Arm AGI CPU platform, and an Intel x86 Linux system to run the comparative code examples
  • Basic understanding of CPU pipeline concepts and performance bottlenecks

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll compare Intel x86 and Arm Neoverse top-down performance analysis with PMU counters. You’ll examine slot-based accounting—four issue slots per cycle on Intel and eight rename slots on Neoverse V2— and interpret Retiring, Bad Speculation, Frontend Bound, and Backend Bound. Then, you’ll build an FP64 divide-chain benchmark, collect results with Linux Perf and topdown-tool, and compare top-level category percentages.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
Which tool should I use to collect top-down metrics on each system?
Use Linux Perf on Intel x86 systems and topdown-tool on Arm systems. Both systems need Perf. Arm systems also need topdown-tool.
How do I build and run the example benchmark?
Save the code as core-bound-div-chain.c, compile it with GCC or Clang, and run it as ./core-bound-div-chain <iterations>.
What result should I expect when I profile the example workload?
The tools report Retiring, Bad Speculation, Frontend Bound, and Backend Bound. The FP64 divide-chain example is designed to show a prominent Backend Bound category.
How do I compare results across Intel and Arm given different slot definitions?
Compare the top-level category percentages instead of raw event counts. Intel uses four issue slots per cycle, while Neoverse V2 uses eight rename slots. The accounting changes, but the category meanings remain comparable.
What should I check if my Intel and Arm breakdowns look very different?
Verify that you ran the same benchmark with the same iteration count, using Perf on x86 and topdown-tool on Arm. Microarchitecture and event-formula differences are expected, so focus on the relative distribution across the four categories.
Next