软件预取(software prefetching),理学-计算机科学技术-计算机体系结构-微体系结构-预取,使用软件机制实现预取的方法。通常是由程序员或编译器分析程序代码中的访存行为,在程序中插入额外的预取指令,将数据预先从主存加载到高速缓存中,避免程序运行时由于等待数据传输而暂停。软件预取在不引起大量的主存和高速缓存间的传输量的情况下,提高高速缓存的命中率。软件预取的方法通常应用于大量迭代循环中,通过离线的分析来指定预取的数据,在程序执行过程中,大多数的访存都来自内层的循环,从而带来大量的失效,因此作为一个预取的候选。编译器预测高速缓存的失效率,基于失效开销和指令执行时间来确定插入预取指令,通过特殊的指令得到数据的存储地址,高速缓存通过一个队列顺序地接收来自主存的数据。这种预取方式是非阻塞的存储操作,并不干扰实际的访存,同时不改变处理器的状态引起页错误。