ABSTRACT

Due to the growing gap in processor and memory speeds, a cache miss is becoming more expensive. Data prefetching is a technique to hide cache miss latency by bringing data closer to the processor ahead of the processor’s request for it. One way to initiate prefetching is by inserting prefetch instructions into the program. This insertion is typically performed statically by the compiler. We will discuss it in the Software Prefetching section (Section 7.2). Prefetching can also be initiated dynamically by observing the program’s behavior. Since this dynamic prefetch generation is typically performed by hardware, we will discuss it in the Hardware Prefetching section (Section 7.3). Note that this boundary is not firm; for example prefetch instructions may be inserted dynamically by run-time optimizer, whereas some hardware prefetching techniques may be implemented in software.