  Hardware prefetching is one of the latency tolerance optimization techniques
that tolerate costly DRAM accesses. Though hardware prefetching is one of the
fundamental mechanisms prevalent on most of the commercial machines, there is
no prefetching technique that works well across all the access patterns and
different types of workloads. Through this paper, we propose Arsenal, a
prefetching framework which allows the advantages provided by different data
prefetchers to be combined, by dynamically selecting the best-suited prefetcher
for the current workload. Thus effectively improving the versatility of the
prefetching system. It bases on the classic Sandbox prefetcher that dynamically
adapts and utilizes multiple offsets for sequential prefetchers. We take it to
the next step by switching between prefetchers like Multi look Ahead Offset
Prefetching and Timing SKID Prefetcher on the run. Arsenal utilizes a
space-efficient pooling filter, Bloom filters, that keeps track of useful
prefetches of each of these component prefetchers and thus helps to maintain a
score for each of the component prefetchers. This approach is shown to provide
better speedup than anyone prefetcher alone. Arsenal provides a performance
improvement of 44.29% on the single-core mixes and 19.5% for some of the
selected 25 representative multi-core mixes.
