Adaptive Runtime-Assisted Block Prefetching on Chip-Multiprocessors