Optimal Collaborative Caching

Introduction

On most modern computers, most memory accesses happen in cache, and its usage increasingly affects the performance, stability, and energy consumption of the whole system. The traditional solution divides the memory problem and conquers the pieces separately: software to improve cache locality and hardware to improve cache speed and capacity. A recent approach called collaborative caching breaks the rigid division by allowing software to provide cache hints to influence hardware cache management. In traditional caching, the hardware infers the “importance” of data and manages cache based on the inferred priority. In collaborative caching, software specifies the “importance” of data and changes the priority in which the hardware manages the data.

The project presents the theory and applications of optimal collaborative caching. Through software-hardware collaboration, the goal is not to improve existing solutions but to obtain the optimal solution. Toward this goal, both theoretical and practical issues are tackled. It shows in theory that efficient hardware similar to the existing cache is sufficient to produce optimal results. Based on the theory, practical techniques on the software side is described and the combined solution is evaluated on both simulated and real hardware. 



Publications
Optimal Collaborative Caching: Theory and Applications, Xiaoming Gu, Ph.D. Dissertation 
• Pacman: Program-Assisted Cache Management, Jacob Brock, Xiaoming Gu, Bin Bao, and Chen Ding, 12th International Symposium on Memory Management (ISMM’13) 

• A Generalized Theory of Collaborative Caching, Xiaoming Gu and Chen Ding, 11th International Symposium on Memory Management (ISMM’12)

On the Theory and Potential of LRU-MRU Collaborative Cache Management, Xiaoming Gu and Chen Ding, 10th International Symposium on Memory Management (ISMM’11)

• P-OPT: Program-directed Optimal Cache Management, Xiaoming Gu, Tongxin Bai, Yaoqing Gao, Chengliang Zhang, Roch Archambault, and Chen Ding, 21st Workshop on Languages and Compilers for Parallel Computing (LCPC’08)

Groups: