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