Computational Caches

International Systems and Storage Conference (SYSTOR), Haifa, Israel (2013)
PDF | Google Doc | Google Scholar | BibTex | EndNote


Caching is a well-known technique for speeding up computation. We cache data from le systems and databases; we cache dynamically generated code blocks; we cache page
translations in TLBs. We propose to cache the act of computation, so that we can apply it later and in di erent contexts. We use a state-space model of computation to support such caching, involving two interrelated parts: speculatively memoized predicted/resultant state pairs that we use to accelerate sequential computation, and trained probabilistic models that we use to generate predicted states from which to speculatively execute. The key techniques that make this approach feasible are designing probabilistic models that automatically focus on regions of program execution state space in which prediction is tractable and identifying state space equivalence classes so that predictions need not be exact.