PREFETCHW
预选数据输入 Caches 在预想写作中
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
0F 0D /1 | PREFETCHW m8 | M | 有效 | 有效 | 将数据从 m8 移动到处理器附近,以等待写入. |
操作数编码
每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。
M
modrm.rmlecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移
实测开销
正在从 arch-data 加载实测数据...
说明
从包含 源操作数 指定的字节的内存中获取数据缓存行到第1级或第2级缓存中的位置,并取消该行的其他缓存实例.
源操作数是一个字节内存位置. 如果选中的行已经在最低水平缓存中存在,并且已经处于独有状态,则不会发生数据移动. 非写回内存的预费被忽略.
PREFETCHW指令只是提示,不影响程序行为. 如果执行,本指令会将数据移动到处理器附近,并由于预期未来会写入行而使其他缓存副本失效.
预选位置提示的特征是执行依赖,可以被处理器执行超载或忽略. 预选数据的数量也依赖处理器执行. 不过,这至少是32字节。 Intel(R)64和IA-32《建筑优化参考手册》第7.4节介绍了更多关于取决于实施的地方提示的细节。
应当指出的是,处理器可以自由地从允许这种访问的系统内存区域(即WB内存类型)中以独有的所有权进行投机获取和缓存数据. PREFETCHW指令被认为是这种投机行为的暗示. 由于这种投机性抓取可以随时发生,并且不与指令执行绑定,因此对栅栏指令(MFENCE,SFENCE,和LFENCE)或锁定的内存引用,没有命令PREFETCHW指令. PREFETCHW指令也针对CLFLUSH和CLFLUSHOPT指令,其他PREFETCHW指令,或任何其他一般指令无命令.
命令涉及CPUID、WRMSR、OUT和MOV CR等序列化指令。
此指令的操作在非64位模式和64位模式中是相同的.
行动
FETCH_WITH_EXCLUSIVE_OWNERSHIP (m8);受影响的旗帜
None.
C/C++ 编译器内置等效空格 m prefetchw( 空) ;
异常
保护模式
#UD | 如果使用 LOCK 前缀 。 |
实地址模式
#UD | 如果使用 LOCK 前缀 。 |
虚拟 8086 模式
#UD | 如果使用 LOCK 前缀 。 |
兼容模式
#UD | 如果使用 LOCK 前缀 。 |
64 位模式
#UD | 如果使用 LOCK 前缀 。 |