Sprungmarken

Servicenavigation

Hauptnavigation


You are here:

Home Research Energy Aware C Compiler Download

Bereichsnavigation

Hauptinhalt

LS12 Downloads for Energy Aware C Compilation

From this website you can download the energy profiler (enprofiler) developed for use with the encc compiler. Below you will find information about the enprofiler in general as well as about downloading, installing and running it on your system.


General description of enprofiler

The tool enprofiler provides statistical information about the execution of programs compiled with encc. enprofiler analyses several files produced during compilation, linking and execution of the program. The statistics generated mainly consist of the program's energy dissipation, considering the consumption of each individual instruction. From this data (including inter-instruction effects), performance statistics are generated which also contain the number of executed instructions, number of cycles and number and energy consumption of memory accesses (considering different types of memory).
If enprofiler is used in conjunction with encc, it also provides information about the number of function and basic block accesses as well as the number of jumps between those basic blocks.

System requirements

enprofiler was compiled using the GNU C++ Compiler (g++). It was developed and tested on machines running Sun Solaris 2.8, but should also work on Linux PCs. You can use it to analyze output files of the ARMulator which is part of the ARM Software Development Toolkit 2.50.

Download

To receive a copy of enprofiler, please send an e-mail to This e-mail address is being protected from spambots. You need JavaScript enabled to view it . In the e-mail, please provide the following information:

  • your name
  • your affiliation
  • city and country
  • the email address the enprofiler package should be sent to

As a reply, you will receive an e-mail containing the enprofiler package as a tarred and zipped archive of about 60 KByte.

Installation

Once you have received the e-mail containing the enprofiler package, save the attachment named "enprofiler.tar.gz" to a directory, in which the enprofiler subdirectory should be placed. Change to that directory and type:

"gunzip enprofiler.tar.gz | tar xf enprofiler.tar"

The package will then be unpacked and a new subdirectory named "enprofiler_v1.0" will be created. Change to that subdirectory and run "gmake" to compile. After this you will find the executable "enprofiler" in the subdirectory "BIN".

Documentation

You will find documentation concerning the use of enprofiler in the README file supplied along with the enprofiler archive.

Example of usage

After successfully compiling enprofiler you may test it with:

"BIN/enprofiler -main -symbols -r OBJ/array.report -msg"

You will get help about possible command line parameters by calling:

"BIN/enprofiler -h"

Since enprofiler deletes the necessary input file "armul.trc" during analysis, you will need to copy the file "armul.trc.saved" to "armul.trc" if you want to repeat the analysis.

Note about using your own Armulator Tracefiles: enprofiler is only capable of processing 16 bit THUMB instructions. The 32 bit ARM instruction set is not supported.

Example of the enprofiler output

When you have called the enprofiler (as written in the example of usage section), you should get the following output:

*********************
****  EnProfiler  ***
*********************
* Reading     instruction set data file [DATA/arm7tdmi.dat] ...
* Reading     board configuration file [DATA/board_config.dat] ...
* Reading     symbol names file [names.txt] ...
* Reading     symbol address file [symbols.txt] ...
* Retrieving  start address from [symbols.txt] ...
* Analyzing   linker report file [OBJ/array.report] ...
* Analyzing   trace file [armul.trc] ...
* Analyzing   trace file [armul.trc] (part 1) ...
* Removing    trace file [armul.trc] (part 1) ...
* Writing     symbol data to file [profiledata.txt] ...
* Displaying  analysis data on screen ...
================================================================================
# Memory areas :
| Area  | Start  - End    | Size (Byte) | Accesses  | Energy (µJ)    |
|-------|-----------------|-------------|-----------|----------------|
| Stack | 57ffcc - 57ffdf |          20 |         6 |          0.255 |

# Memory size :
| Memoryunit         | Inst     | Data     |
|--------------------|----------|----------|
| offchip     (Byte) |       44 |       28 |

# function/basic block accesses and energy :
| Type | Name                          | Address | Acc      | Energy (µJ)      |
|------|-------------------------------|---------|----------|------------------|
|  F   | main                          |  500000 |        1 |          0.59203 |
|  BB  | main                          |  500000 |        1 |          0.12731 |
|  BB  | LL3_0                         |  500012 |        4 |          0.42996 |
|  BB  | _M_4                          |  500024 |        1 |          0.03476 |

# basic block access scheme :
| Source - BB                    --> Destination - BB               | Count    |
|---------------------------------->--------------------------------|----------|
| main                           --> LL3_0                          |        1 |
| LL3_0                          --> LL3_0                          |        3 |
| LL3_0                          --> _M_4                           |        1 |

# Memory accesses :
| Memoryunit | Acc    | Width  | Inst      | Data      | Energy (nJ) |
|------------|--------|--------|-----------|-----------|-------------|
| offchip    | read   | 2 Byte |        48 |         0 |        24.0 |
| offchip    | read   | 4 Byte |         0 |         1 |        49.3 |
| offchip    | write  | 4 Byte |         0 |         5 |        41.1 |
|------------|-----------------|-----------|-----------|-------------|
| SUM        | access          |        48 |        24 |             |

# CPU-Cycles : 129

# Energy values :
|              | SUM           | Instruction   | Memory        |
|--------------|---------------|---------------|---------------|
| Energy  (µJ) |         1.999 |         0.592 |         1.407 |
| Power   (mW) |         511.3 |         151.4 |         359.9 |
| Current (mA) |         154.9 |          45.9 |         109.1 |

# Function unit-costs current : 40.9 mA

# Hamming distance- & Ones-costs :
|                | Hamming distance costs  | Ones costs              |
|Memory type     | Data bus     Addr bus   | Data bus     Addr bus   |
|----------------|-------------------------|-------------------------|
|     4     (mA) |       71.6         18.8 |       48.6         40.8 |
|     5     (mA) |        0.2          4.8 |        1.2         20.4 |
================================================================================
* EnProfiler done.