A tool for visualization of memory access patterns
An Eclipse plug-in to run a cache profile on C programs was implemented, with visualization for data analysis. The plug-in was built using Eclipse’s Rich Client Platform (RCP) and the Callgrind tool from Valgrind was used for the gathering of cache access information. Modifications were made in Call...
Saved in:
Main Author: | |
---|---|
Other Authors: | |
Format: | Final Year Project |
Language: | English |
Published: |
2013
|
Subjects: | |
Online Access: | http://hdl.handle.net/10356/55038 |
Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
Institution: | Nanyang Technological University |
Language: | English |
Summary: | An Eclipse plug-in to run a cache profile on C programs was implemented, with visualization for data analysis. The plug-in was built using Eclipse’s Rich Client Platform (RCP) and the Callgrind tool from Valgrind was used for the gathering of cache access information. Modifications were made in Callgrind to allow for collection of cache access data in finer granularity. The addition to Callgrind outputs cache information from data read and write events that is based on memory address. For each memory location referenced during data read or write events, the data is collected. Based on Callgrind’s output format specification, a parser was written to interpret Callgrind’s output. The results were displayed in a combination of three views, showing the source code, detailed cache statistics and visualization simultaneously. Results from the interpreted data after passing through the parser was confirmed to be 100% accurate when compared with the original Callgrind output and with KCachegrind. A timed run of the plug-in proved it to be efficient. The additional component implemented from modifying Callgrind has high execution time. However, the information obtained was proved to be useful for determining causes of bad cache performance. These results show that the plug-in can be used as an effective cache profiler and analyzer for C programmers who need to optimise their programs for systems with limited cache size. |
---|