ACID(1) ACID(1)
NAME
acid - TT6E instruction trace analyzer; version 2.7
SYNOPSIS
acid [ -i filename ]
[ -o filename ]
[ -x filename ]
[ -j filename,filename,filename... ]
[ -n number ]
[ -k number ]
[ -e number ]
[ -r number ]
[ -y address ]
[ -z address ]
[ -a ] [ -A ] [ -b ] [ -d ] [ -f ] [ -s ] [ -t ]
DESCRIPTION
This manual page describes acid, which is part of the Computer Hardware Understanding Toolkit (CHUD).
Acid analyzes TT6E instruction traces generated by amber or other instruction tracing programs. Char-acteristics Characteristics
acteristics of the trace such as instruction mix, address accesses, and load-use distance are output.
Acid can also detect potentially bad instructions sequences, where bad is defined as having mis-aligned misaligned
aligned operands, data dependency stalls, or spilled loads. Acid can also be used to disassemble a
trace or prune a trace into a subset of the original trace. Note that Acid is not reliable for ana-lyzing analyzing
lyzing trace files that exceed 2 billion instructions.
OPTIONS
-i filename
The name of the input file to analyze. If no input file is specified, stdin is used.
-o filename
The name of the file to send output to. If no file is specified, results will go to
stdout.
-x filename
The name of the file to write a subset trace to. This option can be used with -n and
-k to get an exact subset of instructions. It can also be used with -y and -z to
remove functions. When used with -t, this is the name of the TT6 output file which
can be fed to simg4.
-j filename,filename,filename,...
Concatenate trace files by inserting a 'b 0' instruction between traces. In this
mode, the output file specified by -o is a new TT6 or TT6E file. No trace statistics
are generated. The list of input files should be comma-separated with no spaces.
-n number Analyze 'number' of instructions or less.
-k number Skip 'number' instructions before analyzing.
-e number Show addresses accessed at '2^number' bytes of address granularity. For example, '-e
10' will show addresses in blocks of 1024 bytes. The default setting is '-e 12', so
addresses will be grouped by 4KB segments (4KB = one PowerPC page). Using smaller
granularities may increase processing time.
-r number Show address accesses every 'number' of instructions. This option creates two files
(instruction and data accesses) that can be fed into gnuplot. You can detect access
patterns over time with this option.
-y address
Replace the instruction at 'address' with the instruction at the 'z' address.
Address should be a hexadecimal number. The 'y' and 'z' options can be used to stub
a function call by replacing the first instruction in the function with the last
instruction (usually a 'blr').
-z address
Replace the instruction at the 'y' address with the instruction at 'address'.
Address should be a hexadecimal number. The 'y' and 'z' options can be used to stub
a function call by replacing the first instruction in the function with the last
instruction (usually a 'blr').
-a Show instructions in assembly language form, display potential stalls for PPC7410
and PPC7450 class processors, show misaligned operands, serializing instructions,
and load spills. The format for the output columns is instruction number, program
counter (instruction address), stalls on PPC7410 and PPC7450, and disassembly. Exe-cution Execution
cution time will be substantially longer when using this option and the output file
will be much larger.
-A Show instructions as in -a, but add several other facts about the code. The format
for the output is instruction number, program counter (instruction address), branch
target address (if branch instruction), data address (if load or store instruction),
extra information (byte count for load/store string or RB for a dst), target to use
distance, update register to use distance (for updating load/store instructions),
use distance for the condition register if the instruction sets the CR, use distance
for the link register if the instruction sets the LR, stalls on PPC7410 and PPC7450,
and disassembly. The size of the output file will be approximately 20x the size of
the input file, so the user must ensure that there is enough disk space to hold the
output file. Execution time will be substantially longer when using this option.
-b Disassemble based on program counter. This output mode will print instructions and
frequency ordered by instruction address rather than simply printing out instruc-tions instructions
tions in sequential order. This is a quick way to detect code loops and hot spots in
the trace.
-d Output data access addresses. Accesses are labeled with 'r', 'w', 's', 'S', 'f',
'T', 'a', 'z', 'I', 'd', 'D', or 'k' for load, store, dcbst, dcbtst, dcbf, dcbt,
dcba, dcbz, dcbi, dst/dstt, dstst/dststt, dss/dssall respectively. The output con-tains contains
tains the following information: number of instructions between memory accesses,
type of memory access, data address of memory access, and load-to-use distance (in
instructions) for reads. This option can be used to feed a memory access driven
model.
-f Fast mode. Only outputs instruction mix statistics. Executes 2-3x faster than regu-lar regular
lar mode.
-s Print results to stderr. Default is output file or stdout.
-t Convert TT6E trace file to TT6 format for input to simg4. Specify the output trace
file name using -x. TT6 format does not contain an effective address specification
for DCB* instructions.
CHUD 1 Jan 2004 ACID(1)
|