INVLPG
无效的 TLB 条目
stableVMJITAOTinstruction
编码
| 操作码 | 指令 | Op/En | 64 位 | 兼容/传统 | 说明 |
|---|---|---|---|---|---|
0F 01/7 | INVLPG m | M | 有效 | 有效 | 无效的 TLB 条目包含 m 的页面 。 |
操作数编码
每个模式对应上表 Op/En 列的一个取值,说明各操作数按书写顺序分别编码在指令的哪个字段,以及指令对它是读、是写还是两者兼有。
M
modrm.rmlecturaModRM 字节的 r/m 字段(第 2-0 位);当 mod 字段要求时,还包括 SIB 字节和位移
实测开销
正在从 arch-data 加载实测数据...
说明
无效使用 源操作数 指定的任何翻译外观缓冲( TLB) 条目 。 源操作数是一个内存地址. 处理器确定包含该地址的页面,并冲掉该页面的所有 TLB 条目。
INVLPG指令是一种特殊指令. 当处理器在 保护模式 运行时, CPL 必须是 0 执行此指令 。
INVLPG指令通常只对指定的页面冲洗TLB条目;然而,在某些情况下,它可能冲洗更多的条目,甚至整个TLB. 该指令取消了与当前PCID相关的TLB条目,对于与其他PCID相关的TLB条目,可以也可以不这样做. (如果 PCID 已禁用 - CR4.PCIDE = 0 - 当前 PCID 是 000H. ) 该指令也使指定页面的任何全局性 TLB 条目无效,无论 PCID.
欲了解更多关于冲洗TLB,见 "MOV- 移动到/调出控制注册簿",载于Intel(R)64和IA-32架构软件开发者手册第2B卷和第5.10.4.1节,"使TLB和Page-Structure Caches无效的操作",载于Intel(R)64和IA-32架构软件开发者手册第3A卷.
此指令的操作在所有非64位模式中都是相同的. 它也在64位模式下运行相同,除非内存地址为非卡通形式. 在这种情况下,INVLPG与一个NOP相同.
IA-32 架构兼容性
INVLPG指令依赖于执行,其功能可能会在Intel 64或IA-32处理器的不同家族上得到不同的执行. 此指令在IA-32处理器上不比Intel486处理器更早得到支持.
行动
Invalidate(RelevantTLBEntries);
Continue; (* Continue execution *)受影响的旗帜
None.
异常
保护模式
#GP(0) | 如果当前特权级别不是 0 。 |
#UD | 操作数是一个寄存器。如果使用LOCK前缀。1. 如果使用大于4 KBytes的页面绘制线性地址图,并且该页面有多个TLB条目(见第5.10.2.3节,"TLB使用的细节",Intel(R)64和IA-32架构软件开发者手册第3A卷),则该指令将所有这些条目无效。 |
实地址模式
#UD | 操作数是一个寄存器。如果使用LOCK前缀。 |
虚拟 8086 模式
#GP(0) | INVLPG 指令无法在 虚拟 8086 模式 执行 。 |
64 位模式
#GP(0) | 如果当前特权级别不是 0 。 |
#UD | 操作数是一个寄存器。如果使用LOCK前缀。 |