This paper describes our works in progress on FlexCache, a framework for flexible, compiler generated data caching. FlexCache substitutes the tag-memory and cache controller hardware with a compiler managed tag-like data structure, address trabslation, and tag-check. This allows the division of the data-array into separately controlled partitions, allows the selection of cache line sizes, the support of highly associative mappings, and the selection of various replacement policies on a per program basis.
FlexCache leverages compile-time static information to selectively virtualize memory, to eliminate cache-tag accesses, and to guide the replacement of conflicting cache lines. For the applications studied the FlexCache compiler techniques eliminate in average more than 90% of the cacge-tag lookups, enabling the support of highly associative caching schemes. Even without any hardware support, FlexCache can outperform fixed hardware caches by improving caching effectiveness, eliminating mapping conflicts, and eliminating the cache pollution caused by register spills. The beauty of FlexCache is that its core techniques could be augmented with additional software techniques and/or hardware support (i.e., special instructions) to look into optimizing data caching in areas such as low-power, real-time systems, and high-performance microprocessors.
[1]
Katherine Yelick,et al.
Intelligent RAM (IRAM)
,
1997
.
[2]
Rajeev Barua,et al.
Maps: a compiler-managed memory system for raw machines
,
1999,
ISCA.
[3]
Keith D. Cooper,et al.
Compiler-controlled memory
,
1998,
ASPLOS VIII.
[4]
Frederic T. Chong,et al.
Active pages: a computation model for intelligent memory
,
1998,
ISCA.
[5]
Csaba Andras Moritz,et al.
Parallelizing applications into silicon
,
1999,
Seventh Annual IEEE Symposium on Field-Programmable Custom Computing Machines (Cat. No.PR00375).
[6]
Martin C. Rinard,et al.
Pointer analysis for multithreaded programs
,
1999,
PLDI '99.
[7]
William J. Dally,et al.
Smart Memories: a modular reconfigurable architecture
,
2000,
ISCA '00.
[8]
Steven K. Reinhardt,et al.
A fully associative software-managed cache design
,
2000,
Proceedings of 27th International Symposium on Computer Architecture (IEEE Cat. No.RS00201).
[9]
Norman P. Jouppi,et al.
Reconfigurable caches and their application to media processing
,
2000,
Proceedings of 27th International Symposium on Computer Architecture (IEEE Cat. No.RS00201).
[10]
Monica S. Lam,et al.
Efficient context-sensitive pointer analysis for C programs
,
1995,
PLDI '95.