Cachetool - A tool in need of a more original name
This cache tool was designed while investigating Cache Conscious Data
Placement. The eventual goal was to gather memory traces from real
programs, and then test various re-arrangements of memory layouts on the
fly to see if we could improve cache behavior.
CCDP is a very hard problem, and for now we've moved on to other work.
I've had some inquiries about the valgrind tool developed for this,
so I am posting this here now for that reason.
The tool was originally designed to get its input from
FIT, the flexible
instrumentation toolkit. FIT is an open-source ATOM-like
static instrumentation
package, which sadly is not maintained anymore.
We instrumented binaries to report all memory reads and writes (for
data cache), all instructions (for instruction cache) and all memory
allocations/frees (because we were sorting memory accesses to see if
they were heap, data or stack... and also because we were trying
to see if we could tell type info by the size of the allocation). These
values were put out to a named
pipe from the instrumented program, and then read in by the cachetool
in a separate process.
Due to the memory overhead of fit, we decided to move to valgrind.
So with the help of MEng student I-Chun Li we worked on taking the
fit interface and making a valgrind plugin that would generate the
same output.
Here is I-Chun Li's MEng thesis,
which describes most of the work done on this plugin.
It describes a slightly older version
of the code than is posted here.
Here are some related files:
Back to my Computer Architecture Software