Prefetch指在处理器进行运算时,提前通知存储器子系统将运算所需要的数据准备好,当处理器需要这些数据时,可以直接从这些预读缓冲中,通常指Cache,获得这些数据,不必再次读取存储器,从而实现了存储器访问与运算并行,隐藏了存储器的访问延时。Prefetch的实现可以采用两种方式,HB(Hardware-Based)和SD(Software-Directed)。这两种方法各有利弊,我们首先以图5‑1为基础模型讨论采用SD方式的数据预读。
其中实例a没有使用预读机制;实例b是一个采用预读机制的理想情况;实例c是一个采用预读机制的次理想情况。我们假设处理器执行图5‑1所示的任务需要经历四个阶段,每个阶段都由处理器执行运算指令和存储指令组成。
在其中处理器的一次存储器访问需要5个时钟周期。在第一个阶段处理器执行4个时钟周期后需要访问存储器;在第二个阶段处理器执行6个时钟周期后需要访问存储器;在第三个阶段处理器执行8个时钟周期后需要访问存储器;在第四个阶段处理器执行4个时钟周期后完成整个任务。
实例a没有使用预读机制,在运算过程中,在进行存储器访问,将不可避免的出现Cache Miss