An apparatus comprising: execution circuitry configured to execute instructions and process data; a Level 2, L2, cache configured to store at least a portion of the data; and a prefetcher configured to prefetch data from a memory subsystem to the L2 cache in anticipation of the data being needed by the execution circuitry to execute one or more of the instructions, the prefetcher comprising a buffer configured to store one or more prefetched memory pages or portions thereof, and signature data indicating detected patterns of access to the one or more prefetched memory pages; wherein the prefetcher is configured to prefetch one or more cache lines based on the signature data , wherein the apparatus further comprises a plurality of prediction tables configured to be indexed by the signature data , wherein each prediction table is associated with a different number of accesses to a page, wherein a prediction table, responsive to the signature data , is configured to be indexed to generate a pattern bank index into a prefetch pattern bank to determine a prefetch pattern to be used by the prefetcher , wherein the prefetcher comprises a granularity selector for determining a granularity to be used for prefetching by the prefetcher based on hit rates for at least two prefetch pattern banks (1301-1302), the at least two prefetch pattern banks (1301-1302) including a first prefetch pattern bank associated with a first granularity to be used for prefetching cache lines, the first prefetch pattern bank storing 64B prefetch pattern, and a second prefetch pattern bank associated with a second granularity to be used for prefetching cache lines, the second prefetch pattern bank storing 64B prefetch pattern compressed to 32B prefetch pattern, and wherein a cache line comprises 64B, the first granularity comprises 64B and the second granularity comprises 128B. execution circuitry configured to execute instructions and process data; a Level 2, L2, cache configured to store at least a portion of the data; and a prefetcher configured to prefetch data from a memory subsystem to the L2 cache in anticipation of the data being needed by the execution circuitry to execute one or more of the instructions, the prefetcher comprising a buffer configured to store one or more prefetched memory pages or portions thereof, and signature data indicating detected patterns of access to the one or more prefetched memory pages; wherein the prefetcher is configured to prefetch one or more cache lines based on the signature data , wherein the apparatus further comprises a plurality of prediction tables configured to be indexed by the signature data , wherein each prediction table is associated with a different number of accesses to a page, wherein a prediction table, responsive to the signature data , is configured to be indexed to generate a pattern bank index into a prefetch pattern bank to determine a prefetch pattern to be used by the prefetcher , wherein the prefetcher comprises a granularity selector for determining a granularity to be used for prefetching by the prefetcher based on hit rates for at least two prefetch pattern banks (1301-1302), the at least two prefetch pattern banks (1301-1302) including a first prefetch pattern bank associated with a first granularity to be used for prefetching cache lines, the first prefetch pattern bank storing 64B prefetch pattern, and a second prefetch pattern bank associated with a second granularity to be used for prefetching cache lines, the second prefetch pattern bank storing 64B prefetch pattern compressed to 32B prefetch pattern, and wherein a cache line comprises 64B, the first granularity comprises 64B and the second granularity comprises 128B. <EOS>