预取写会影响单核性能吗?

时间:2012-08-22 02:31:58

标签: x86-64 multicore cpu-architecture prefetch cpu-cache

某些体系结构具有“预取写入”指令,用于向CPU指示在实际执行之前您将要写入内存位置。据我所知,在多核计算机上,核心可以使用它作为提示,它应该尝试获得给定缓存行的所有权,以便以后可以更快地写入该位置。但是,AFAICT应该只在有两个核心可能争用缓存行的情况下才有意义。对于仅由单个内核读取和写入的高速缓存行,预取写入是否有用?

2 个答案:

答案 0 :(得分:1)

在其他条件相同的情况下,对于仅由单个内核访问的行,Prefetch-Write对Prefetch-Read没有任何好处。在任何类型的预取之后,核心将拥有独占状态的行。在随后的写入中,该行将更改为已修改状态。独占到修改的转换是免费的,因为根据定义,没有其他核心具有该行。 E-> M状态更改在本地完成而不进行监听。

请注意,内核具有自己的硬件预取逻辑。对线路的访问可能导致核心自动抓取相邻线路。如果全局变量或其他数据驻留在附近,则SMP系统可能会遇到许多意外的交叉窥探。

答案 1 :(得分:0)

我认为如果高速缓存行不在内存中并且写入预取标记它将从现在开始需要一些周期,它会有所帮助。家务杂务,例如为写作腾出一条线路,可能会更加困难。当然,这应该允许CPU更快地完成写入,而不是简单地将写入的蓝色卸载到缓存的一圈?

或者我错过了一些基本的东西?