“…Architecture research has produced a wide variety microarchitectural, predictor-based optimizations, including value prediction [16,17,24] instruction reuse [26], hardware prefetching [4,7,13,14,18,25,31,27,32], dynamic program optimization [1,19,23,35], pointer caching [8], and cache replacement policies, e.g., [20]. These techniques collect metadata information at runtime about the application's behavior and store it in on-chip buffers or lookup tables.…”