emmtrix
Performance
Estimator (ePE)

emmtrix Performance Estimator icon

The Tool to GET the Performance of Your Applications

emmtrix Performance Estimator (ePE) supports different ways to acquire the duration of the tasks of an application. These vary in accuracy and additional software or hardware requirements. Static code analysis provides basic information without the need for hardware or special software. More accurate numbers can be collected with interfaces to simulators or the hardware. Depending on the requirements, the methods can be combined as desired.

Estimation Methods

In general, the execution time of a task or block can be modelled as:

texec = execution_frequencyblock* single_durationblock

The C code based static code analysis derives the execution frequency by analyzing loop boundaries using constant folding. For the duration, each instruction in the code is modelled as numbers of cycles of an abstract hardware model of the processor and then summed up. To improve these basic numbers, the LLVM compiler framework can be used to perform source level profiling to get more accurate execution frequencies and to compile the C code to assembler. Using the assembler code, a more accurate hardware model based on the processor’s pipelines is used to calculate the duration of the blocks. Users can provide custom execution frequencies for blocks with special configuration files to bring the knowledge about the algorithm into the tool. This allows setting typical cases for constructs like queues or waiting tasks to get more realistic numbers for the average execution.

To get even more accurate numbers from simulators or directly from the hardware, the emmtrix tools support automated instrumentation of C code by adding the required measuring points into the program and automated import into the performance estimation.

 

Static Code Analysis:

Static Code Analysis

Processor Pipeline:

Instruction Fetch

FETCH

Instruction Decode

DECODE

Shift + ALU

EXECUTE

Memory Access

MEMORY

Register Write

WRITE

Features

  • Automatic generation of reports and visualization for more detailed information
  • Confidence levels for classification of results
  • Easy to integrate into the development workflow
  • Fast evaluation for different target platforms
  • Static performance estimation based on C code or assembly code
  • Integration of simulators or hardware profiling into your workflow

Your Benefits

  • Performance estimation early in the development process
  • Continuous monitoring of performance changes during the development
  • Comparison of performance for different or heterogeneous target platforms
  • Detailed information to better understand the timing behavior of your application
  • Detect high-runners or critical parts of you software application
  • Estimate the core utilization to optimize runnable/task to core mappings

Intuitive Visualization

Intuitive Visualization

Figure 1: Visualization of the Performance Estimation

The result of the performance estimation can be visualized using our interactive and zoomable hierarchical program view. The X-axis represents the time, therefore the width of each block depends on the actual duration. On the Y-axis, the control structure of the program can be seen. Additional levels are added for structures like function calls, loops or conditions.

ASM View

Figure 2: Analyzing Assembler Code

To enhance our static performance estimation solution, the emmtrix tools take applied compiler optimizations into consideration by analyzing assembler code. Together with a model of the processor pipeline, the actual timing behavior of the program on the selected hardware can be predicted with significantly higher accuracy. The advanced mapping between C and assembler code is accessed directly from the GUI and can be used for further inspection.

Some Supported Platforms

emmtrix Performance Estimator has already a wide range of supported target platforms ranging from general-purpose processors (e.g. ARM Cortex-A series or X86) to special-purpose microcontrollers (e.g. Infineon Aurix family). In general, the performance estimation can be easily adapted and customized to provide basic supoprt for new processor architectures. More complex and accurate hardware models with respect to the processor pipeline can be supported on demand.

arm logo
Cortex
Infineon logo
Aurix
Power PC logo
PowerPC
Rasperry Pi logo
Rasperry Pi
Renesas logo
R-Car
NXP logo

iMX.8

STM logo

STM32

For more information on emmtrix Performance Estimator or to request a demo, a chat or a meeting use our contact form or get directly in touch. We’re looking forward to hearing from you!

Portrait Rainer Heim
Rainer Heim
Cookie Consent with Real Cookie Banner