当前位置:  开发笔记 > 编程语言 > 正文

_mm_prefetch如何工作?

如何解决《_mm_prefetch如何工作?》经验,为你挑选了1个好方法。

这里所述的_mm_prefetch调用将内容从RAM中的给定存储器位置预取到高速缓存行.但是缓存完全在硬件控制之下吗?基于经常访问的存储器(基于空间/时间位置),硬件将内容从存储器预取到高速缓存.我认为程序员无法控制缓存,它完全是一种硬件机制.

所以我的理解是错误的,缓存实际上可以由我们控制,对吧?

如果_mm_prefetch可以控制什么可以放在缓存中,

    这是否意味着它永远不会从缓存中删除?

    什么是等效的汇编级指令,它适用于缓存机制?

Margaret Blo.. 9

如果活动,我们总是可以通过简单地执行内存访问将数据移动到缓存中.
我们可以通过简单地"提前触摸"来预取var,我们不需要特殊的指令.

目前还不清楚"控制缓存"是什么意思,因为我们可以启用/禁用它,设置其模式,填充/溢出策略以及与其他HW线程共享模式.
我们还可以用数据填充缓存,并通过切割器使用算术力来驱逐一条线.

您假设程序员必须通过缓存控制任何东西然后并不完全有效,尽管不是不正确的:只要它遵守文档化的规范(包括根本没有缓存或溢出),CPU就可以自由地实现它想要的任何缓存策略.缓存每个X时钟滴答).
我们还做不到的一件事就是在缓存中固定行,我们不能告诉CPU永远不要驱逐特定的行.

编辑正如@Mysticial在评论中指出的那样,可以将数据固定到较新的Intel CPU中的L3缓存中.


PREFETCHT0,PREFETCHT1,PREFETCHT2,PREFETCHTNTAPREFETCHWT1指令,其_mm_prefetch被编译到只是一个提示的预取硬件如果存在的话,活性,并愿意尊重提示1.

他们有限的使用案例3更多地来自对数据将停止的缓存层次级别更精细控制以及核心资源2减少使用,而不是将数据移动到缓存中的方式.

一旦预取了一行,就会像任何其他行一样从缓存中删除它.


1这些硬件预取程序通常由内存访问模式(如顺序访问)触发,并且与执行流程异步.

2它们本质上是异步的(在本地快速完成)并且可能不会污染负载所需的核心资源(例如寄存器,负载单元等).

3虽然人们可能认为提示最糟糕无用(如果没有得到尊重),实际上可以证明prefetch会降低性能.



1> Margaret Blo..:

如果活动,我们总是可以通过简单地执行内存访问将数据移动到缓存中.
我们可以通过简单地"提前触摸"来预取var,我们不需要特殊的指令.

目前还不清楚"控制缓存"是什么意思,因为我们可以启用/禁用它,设置其模式,填充/溢出策略以及与其他HW线程共享模式.
我们还可以用数据填充缓存,并通过切割器使用算术力来驱逐一条线.

您假设程序员必须通过缓存控制任何东西然后并不完全有效,尽管不是不正确的:只要它遵守文档化的规范(包括根本没有缓存或溢出),CPU就可以自由地实现它想要的任何缓存策略.缓存每个X时钟滴答).
我们还做不到的一件事就是在缓存中固定行,我们不能告诉CPU永远不要驱逐特定的行.

编辑正如@Mysticial在评论中指出的那样,可以将数据固定到较新的Intel CPU中的L3缓存中.


PREFETCHT0,PREFETCHT1,PREFETCHT2,PREFETCHTNTAPREFETCHWT1指令,其_mm_prefetch被编译到只是一个提示的预取硬件如果存在的话,活性,并愿意尊重提示1.

他们有限的使用案例3更多地来自对数据将停止的缓存层次级别更精细控制以及核心资源2减少使用,而不是将数据移动到缓存中的方式.

一旦预取了一行,就会像任何其他行一样从缓存中删除它.


1这些硬件预取程序通常由内存访问模式(如顺序访问)触发,并且与执行流程异步.

2它们本质上是异步的(在本地快速完成)并且可能不会污染负载所需的核心资源(例如寄存器,负载单元等).

3虽然人们可能认为提示最糟糕无用(如果没有得到尊重),实际上可以证明prefetch会降低性能.


在Broadwell-E和Haswell-E的子集中,存在特定于处理器的寄存器,其控制哪些核具有对L3的不同部分的驱逐权.因此,实际上可以将一些数据拉入L3,然后禁用对所有核心的逐出访问.所以你留下了锁定在L3缓存中的数据,因为没有人被允许驱逐它.不幸的是,没有类似的功能来控制L1和L2缓存.
推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有