In this work, we propose a new technique to improve the
performance of hardware data prefetching. This technique is based
on detecting periods of time and regions of code where the prefetcher
is not working properly, thus not providing any speedup or even
producing slowdown. Once these periods of time and regions of code
are detected, the prefetcher may be switched off and later on,
switched on. To efficiently implement such mechanism, we identify
three orthogonal issues that must be addressed: the granularity of the
code region, when the prefetcher is switched on, and when the
prefetcher is switched off