缓存控制指令
目录
缓存控制指令
在计算中,高速缓存控制指令是嵌入中的提示指示一个的流处理器旨在改善的性能的硬件缓存,使用预知所述的存储器访问模式由所提供的程序员或编译器。通过对工作集提供更好的控制,它们可以减少缓存污染、减少带宽需求、避开等待时间。大多数缓存控制指令不会影响程序的语义,尽管有些会。

缓存控制指令的替代品
自动预取
近年来,随着Intel和ARM越来越先进的应用处理器设计将更多的晶体管用于加速用传统语言编写的代码,例如执行自动预取,并带有可实时检测线性访问模式的硬件,缓存控制指令已变得不那么流行。然而,这些技术对于具有不同吞吐量与等待时间权衡的,面向吞吐量的处理器可能仍然有效,并且可能更愿意为执行单元投入更多的空间。
便签本存储器
某些处理器支持暂存器 可放入临时存储器,并在需要时直接进行内存访问(DMA)以与主存储器之间来回传输数据。Cell处理器和某些嵌入式系统使用此方法。这些允许对内存流量和位置进行更好的控制(因为通过显式传输来管理工作集),并且无需在多核计算机中使用昂贵的缓存一致性。
缺点是需要使用截然不同的编程技术。很难适应用传统语言(例如C和C ++)编写的程序,这些程序为程序员提供了大地址空间的统一视图(这是由高速缓存模拟的一种幻觉)。传统的微处理器可以更轻松地运行遗留代码,然后可以通过缓存控制指令来加速遗留代码,而基于暂存器的机器则需要从头开始进行专用编码才能实现均匀功能。高速缓存控制指令特定于特定的高速缓存行大小,实际上,该大小可能在同一体系结构系列的几代处理器之间有所不同。缓存还可以帮助合并来自不太可预测的访问模式的读取和写入(例如,在纹理映射期间),而暂存器DMA需要重新设计算法以实现更可预测的“线性”遍历。
因此,尽管数据流模型(例如TensorFlow)可能更适合,但此类暂存器通常更难以与传统编程模型一起使用。
向量获取
向量处理器(例如,现代图形处理单元(GPU)和Xeon Phi)使用大规模并行处理来实现高吞吐量,同时解决了内存延迟问题(减少了对预取的需求)。并行发出许多读取操作,以供随后调用计算内核使用。计算可能会被搁置以等待将来的数据,而执行单元则致力于处理来自已经出现的过去请求数据中的数据。对于程序员来说,这更容易与适当的编程模型(计算内核)结合使用,但是更难于应用于通用编程。
缺点是许多临时状态的副本可能会保存在处理元件的本地内存中,等待数据传输。