post-pass binary adaptation for software-based speculative precomputation
Recently, a number of thread-based prefetching techniques have been proposed. These techniques aim at improving the latency of single-threaded applications by leveraging multithreading resources to perform memory prefetching via speculative prefetch threads. Software-based speculative precomputation (SSP) is one such technique, proposed for multithreaded Itanium models. SSP does not require expensive hardware support-instead it relies on the compiler to adapt binaries to perform prefetching on otherwise idle hardware thread contexts at run time. This paper presents a post-pass compilation tool for generating SSP-enhanced binaries. The tool is able to: (1) analyze a single-threaded application to generate prefetch threads; (2) identify and embed trigger points in the original binary; and (3) produce a new binary that has the prefetch threads attached. The execution of the new binary spawns the speculative prefetch threads, which are executed concurrently with the main thread. Our results indicate that for a set of pointer-intensive benchmarks, the prefetching performed by the speculative threads achieves an average of 87\% speedup on an in-order processor and 5\% speedup on an out-of-order processor.
post-pass adapt speculation thread prefetching latency applications multithreading resource memorialized model hardware compilation context timing paper tool triggering point benchmark speedup processor order slack long-range thread-based prefetching dependence reduction slicing delay minimization chaining speculative precomputation prediction software loop rotation pointer support scheduling embedding