|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object avrora.sim.util.MemoryMatrixProfiler
The MemoryMatrixProfiler
class collects information about a program's usage of memory. For
each instruction in the program, it tracks the memory locations read and written by that instruction. For
example, a load instruction that uses an address in a register might load bytes from various locations in
the data memory. This class maintains two internal two-dimensional matrices, one for read counts and one
for write counts. The matrices are indexed by code address and data address.
Field Summary | |
int |
ramSize
The ramSize field stores the maximum RAM address that should be recorded. |
long[][] |
rcount
The rcount field stores a two dimensional array that records the read count for each
memory location for each instruction. |
long[][] |
wcount
The rcount field stores a two dimensional array that records the write count for each
memory location for each instruction. |
Constructor Summary | |
MemoryMatrixProfiler(Program p,
int size)
The constructor for the MemoryMatrixProfiler class creates a new memory probe that can be
inserted into the simulator to record the full memory access statistics of the program. |
Method Summary | |
void |
fireAfterRead(Instr i,
int address,
State state,
int data_addr,
byte value)
The fireAfterRead() method is called after the data address is read by the program. |
void |
fireAfterWrite(Instr i,
int address,
State state,
int data_addr,
byte value)
The fireAfterWrite() method is called after the data address is written by the program. |
void |
fireBeforeRead(Instr i,
int address,
State state,
int data_addr,
byte value)
The fireBeforeRead() method is called before the data address is read by the program. |
void |
fireBeforeWrite(Instr i,
int address,
State state,
int data_addr,
byte value)
The fireBeforeWrite() method is called before the data address is written by the program.
|
long |
getReadCount(int address,
int data_addr)
The getReadCount() method returns the number of times the specified instruction read the
specified memory address. |
long |
getWriteCount(int address,
int data_addr)
The getWriteCount() method returns the number of times the specified instruction wrote the
specified memory address. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public final long[][] rcount
rcount
field stores a two dimensional array that records the read count for each
memory location for each instruction. It is indexed by program address, and then by data address. This
matrix is row-sparse in that rows of all zero (e.g. a non-memory instruction) are not stored. To access
this matrix, use the getReadCount()
method.
public final long[][] wcount
rcount
field stores a two dimensional array that records the write count for each
memory location for each instruction. It is indexed by program address, and then by data address. This
matrix is row-sparse in that rows of all zero (e.g. a non-memory instruction) are not stored. To access
this matrix, use the getWriteCount()
method.
public final int ramSize
ramSize
field stores the maximum RAM address that should be recorded.
Constructor Detail |
public MemoryMatrixProfiler(Program p, int size)
MemoryMatrixProfiler
class creates a new memory probe that can be
inserted into the simulator to record the full memory access statistics of the program.
p
- the program to record statistics forsize
- the size of the RAM in bytesMethod Detail |
public void fireBeforeRead(Instr i, int address, State state, int data_addr, byte value)
fireBeforeRead()
method is called before the data address is read by the program. In
the implementation of MemoryMatrixProfiler
, it simply increments the count of reads at the
address of the instruction and memory location by one.
i
- the instruction being probedaddress
- the address at which this instruction residesstate
- the state of the simulationdata_addr
- the address of the data being referencedvalue
- the value of the memory location being readpublic void fireBeforeWrite(Instr i, int address, State state, int data_addr, byte value)
fireBeforeWrite()
method is called before the data address is written by the program.
In the implementation of MemoryMatrixProfiler
, it simply increments the count of writes at
the address of the instruction and memory location by one.
i
- the instruction being probedaddress
- the address at which this instruction residesstate
- the state of the simulationdata_addr
- the address of the data being referencedvalue
- the value being written to the memory locationpublic void fireAfterRead(Instr i, int address, State state, int data_addr, byte value)
fireAfterRead()
method is called after the data address is read by the program. In the
implementation of MemoryMatrixProfiler
, it does nothing.
i
- the instruction being probedaddress
- the address at which this instruction residesstate
- the state of the simulationdata_addr
- the address of the data being referencedvalue
- the value of the memory location being readpublic void fireAfterWrite(Instr i, int address, State state, int data_addr, byte value)
fireAfterWrite()
method is called after the data address is written by the program. In
the implementation of MemoryMatrixProfiler
, it does nothing.
i
- the instruction being probedaddress
- the address at which this instruction residesstate
- the state of the simulationdata_addr
- the address of the data being referencedvalue
- the value being written to the memory locationpublic long getReadCount(int address, int data_addr)
getReadCount()
method returns the number of times the specified instruction read the
specified memory address.
address
- the program address of the instructiondata_addr
- the address of the byte of memory
public long getWriteCount(int address, int data_addr)
getWriteCount()
method returns the number of times the specified instruction wrote the
specified memory address.
address
- the program address of the instructiondata_addr
- the address of the byte of memory
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |