A software cache implements instruction and data caching entirely in software. Dynamic binary rewriting offers a means to specialize the software cache miss checks at cache miss time. We describe a software cachesystem implemented using dynamic binaryrewriting and observe that the combination is particularly appropriate for the scenario of a simple embedded system connected to a more powerful server over a network. As two examples, consider a network of sensors with local processing or cell phones connected to cell towers. Software caching with binary rewriting fits the embedded scenario in three ways. First, automatic caching enables theconvenient programming model of a large address space at the embedded system. Second, an all-software implementation minimizes cost and (potentially) power over ahardware implementation while maximizing flexibility. Flexibility is crucial to achieving high, predictable hit rates which are necessarywhen cache miss time is high. Third, dynamic binary ...
Chad Huneycutt, Joshua B. Fryman, Kenneth M. Macke