2012-08-22 35 views
3

一些体系结构有一个“预取写入”指令,用于向CPU表明在实际执行操作之前将要写入内存位置。我明白,在多核机器上,核心可以使用它作为暗示,它应该尝试现在获得给定高速缓存行的所有权,以便稍后可以更快地写入该位置。但是,AFAICT应该只在两个核心有可能竞争缓存线的情况下才起作用。对于仅由单个内核读取和写入的高速缓存行,预取写入是否有用?预取写入是否影响单核性能?

回答

1

其他所有条件都相同,对于仅由单个内核访问的行,预取写入没有优于预取读取。经过任何一种预取后,核心将拥有独有的状态。在随后的写入中,该行更改为修改后的状态。独家修改过渡是免费的,因为根据定义,没有其他核心拥有这条线。 E-> M状态更改在本地完成,无需窥探。

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

0

我认为它可以帮助如果高速缓存行不在内存中,并且写预取标记它将从现在开始需要一些周期。家务劳动,比如为写作腾出一条线可能会更加困难。当然,这应该允许CPU完成写入的速度比如果它只是简单地将写入缓存写入缓存一圈?

还是我错过了一些基本的东西?

+0

所以你在说,因为写预取也会像正常的预取一样工作,所以它可能有所帮助?这是可能的你是对的。 –

+0

CPU和RAM之间的任何事情都必须通过缓存行来完成。如果没有加载有问题的缓存行,那么读取或写入将不得不等待,直到它。 –