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. Characteris-
tics of the trace such as instruction mix, address accesses, and load-
use distance are output. Acid can also detect potentially bad instruc-
tions sequences, where bad is defined as having misaligned operands,
data dependency stalls, or spilled loads. Acid can also be used to dis-
assemble a trace or prune a trace into a subset of the original trace.
Note that Acid is not reliable for analyzing 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 sub-
set 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' instruc-
tion 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 instruc-
tion at the 'z' address. Address should be a hexadeci-
mal number. The 'y' and 'z' options can be used to
stub a function call by replacing the first instruc-
tion in the function with the last instruction (usu-
ally a 'blr').
-z address
Replace the instruction at the 'y' address with the
instruction at 'address'. Address should be a hexadec-
imal number. The 'y' and 'z' options can be used to
stub a function call by replacing the first instruc-
tion in the function with the last instruction (usu-
ally a 'blr').
-a Show instructions in assembly language form, display
potential stalls for PPC7410 and PPC7450 class proces-
sors, show misaligned operands, serializing instruc-
tions, and load spills. The format for the output col-
umns is instruction number, program counter (instruc-
tion address), stalls on PPC7410 and PPC7450, and dis-
assembly. Execution 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 instruc-
tion), 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 instruc-
tions), 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
instructions 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 contains the fol-
lowing 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 regular 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 spec-
ification for DCB* instructions.
CHUD 1 Jan 2004 ACID(1)
Mac OS X 10.5 - Generated Sun Oct 28 20:55:36 EDT 2007
