The Eighteenth International Conference on
Raleigh, North Carolina. September 12-16, 2009.
Improving MemoiSE Using Function Splitting
Rajesh Vanka and James Tuck, North Carolina State University
Memoization has attracted considerable interest because it speeds up programs by reducing instruction count, which has the potential to directly reduce execution time and save power. To that end, MemoiSE is a new technique that can safely memoize functions even in the presence of non-anlyzable memory accesses. MemoiSE records the explicit inputs and outputs of a function in a lookup table and the implicit inputs and outputs in a signature register. In this poster, we evaluate the reasons why functions cannot be memoized using MemoiSE in the hopes of finding more function level redundancy. Our analysis shows that, on average, anti-dependences prevent memoization in more than 40%, on average, of the instructions executed in the MediaBench applications we studied. We also evaluate the potential of a speculative function transformation technique which enables better memoization, called function splitting. Applying this technique, we show a 2% potential reduction in the number of dynamic instructions found using MemoiSE.