【问题标题】:Does prefetching a write ever affect single core performance?预取写入是否会影响单核性能?
【发布时间】:2012-08-22 02:31:57
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    在其他条件相同的情况下,对于仅由单个内核访问的行,Prefetch-Write 与 Prefetch-Read 相比没有任何优势。在任何类型的预取之后,核心将拥有处于 Exclusive 状态的线路。在随后的写入中,该行更改为 Modified 状态。 Exclusive-to-Modified 转换是免费的,因为根据定义,没有其他内核具有这条线。 E->M 状态更改在本地完成,无需窥探。

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

    【讨论】:

      【解决方案2】:

      我认为如果缓存行不在内存中并且写入预取标志表明从现在开始需要一些周期,这可能会有所帮助。诸如为写入腾出一条线之类的家务活可能会更麻烦。当然,这应该允许 CPU 完成写入比简单地将写入卸载到缓存圈中更快?

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

      【讨论】:

      • 所以你是说因为写预取也会像普通预取一样,它可能有帮助吗?有可能你是对的。
      • 任何在 CPU 和 RAM 之间传输的东西都必须通过缓存线进行。如果有问题的缓存行没有被加载,那么读取或写入将不得不等到它被加载。
      猜你喜欢
      • 1970-01-01
      • 2013-01-18
      • 2014-10-25
      • 1970-01-01
      • 2017-07-05
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多