FVP for instruction count assessment

Dear Arm forum,

If I want to profile a program which will land on Arm chip (like cortex A78), how far can I go if I have a x86 pc to simulation (i.e. w/o hardware)?

I know it will be cycle inaccurate, but how about instruction count?

What I expect is a tool that can report instruction count for each function in the program and maybe structure it as a tree diagram.

Can I use streamline or some kind of arm tool for this purpose?

If so, can you provide some documentation and some simple guide?

PS. actually I've open a support case #00386877 and try to use Fastline for instruction count assess, but I did not get my answer so far.

Thanks for your help.

Best regards,

Tao

Parents
  • Hi Tao

    My name is Stephen and I work at Arm.

    The Arm Fast Models and Fixed Virtual Platform (FVP) models are instruction accurate, and designed for your requirement.  These are models of Arm-based systems that can run on an x86 PC.  See https://developer.arm.com/tools-and-software/simulation-models/fast-models.  For example, "FVP_Base_Cortex-A78x2" is a Base Platform FVP model of a dual Cortex-A78, that includes a selection of peripherals too.

    Most Arm processors include a Performance Monitor Unit (PMU) that provides various performance counters, including cycle counters, for example, see:
    developer.arm.com/.../PMCCNTR-EL0--Performance-Monitors-Cycle-Counter

    You can run your program on an FVP model, and read/view the number of cycles executed, either from within your code itself, or from the model's simulated LCD display, or from a connected debugger, for example, the Arm Development Studio Debugger.  

    To measure the cycles per function, you will need to read the cycle count on entry into the function, then read the cycle count again on exit from the function, and calculate the difference.  You can do this either under your program control, or from the debugger (e.g. by setting breakpoints on function entry/exit).

    The best way to get started is to use the Arm Development Studio, which includes Arm Compiler, FVP models of a number of Arm processors (including "FVP_Base_Cortex-A78x2"), and the Debugger.  A free 30-day evaluation of Arm Development Studio is available for download from developer.arm.com/.../evaluate

    Hope this helps

    Stephen

Reply
  • Hi Tao

    My name is Stephen and I work at Arm.

    The Arm Fast Models and Fixed Virtual Platform (FVP) models are instruction accurate, and designed for your requirement.  These are models of Arm-based systems that can run on an x86 PC.  See https://developer.arm.com/tools-and-software/simulation-models/fast-models.  For example, "FVP_Base_Cortex-A78x2" is a Base Platform FVP model of a dual Cortex-A78, that includes a selection of peripherals too.

    Most Arm processors include a Performance Monitor Unit (PMU) that provides various performance counters, including cycle counters, for example, see:
    developer.arm.com/.../PMCCNTR-EL0--Performance-Monitors-Cycle-Counter

    You can run your program on an FVP model, and read/view the number of cycles executed, either from within your code itself, or from the model's simulated LCD display, or from a connected debugger, for example, the Arm Development Studio Debugger.  

    To measure the cycles per function, you will need to read the cycle count on entry into the function, then read the cycle count again on exit from the function, and calculate the difference.  You can do this either under your program control, or from the debugger (e.g. by setting breakpoints on function entry/exit).

    The best way to get started is to use the Arm Development Studio, which includes Arm Compiler, FVP models of a number of Arm processors (including "FVP_Base_Cortex-A78x2"), and the Debugger.  A free 30-day evaluation of Arm Development Studio is available for download from developer.arm.com/.../evaluate

    Hope this helps

    Stephen

Children
No data