在非虚拟化环境中,“移动到 CR3”指令是否会刷新所有处理器的 TLB 中的所有非全局转换?
In a non-virtualized environment, will the “move to CR3” instruction flushes all non-global translations from all processors' TLBs?
在非虚拟化环境中,“移动到 CR3”指令是否会刷新来自所有处理器 TLB 的所有非全局翻译,还是仅仅是非全局翻译来自当前的处理器 TLB,假设我们有一个统一的 data/instruction TLB
只定义刷新当前处理器的TLB。但是,它也可能导致额外的 TLB 条目被刷新。
英特尔 SDM 表示:"On a processor supporting Hyper-Threading Technology, invalidations performed on one logical processor may invalidate entries in the TLBs and paging-structure caches used by other logical processors."
它没有具体说明一个处理器上的失效是否会影响其他物理处理器上的 TLB。但是,我认为这属于一般准则:"Processors need not implement any TLBs. Processors that do implement TLBs may invalidate any TLB entry at any time. Software should not rely on the existence of TLBs or on the retention of TLB entries."
任何比这更精确的答案都是特定于实现的。
在非虚拟化环境中,“移动到 CR3”指令是否会刷新来自所有处理器 TLB 的所有非全局翻译,还是仅仅是非全局翻译来自当前的处理器 TLB,假设我们有一个统一的 data/instruction TLB
只定义刷新当前处理器的TLB。但是,它也可能导致额外的 TLB 条目被刷新。
英特尔 SDM 表示:"On a processor supporting Hyper-Threading Technology, invalidations performed on one logical processor may invalidate entries in the TLBs and paging-structure caches used by other logical processors."
它没有具体说明一个处理器上的失效是否会影响其他物理处理器上的 TLB。但是,我认为这属于一般准则:"Processors need not implement any TLBs. Processors that do implement TLBs may invalidate any TLB entry at any time. Software should not rely on the existence of TLBs or on the retention of TLB entries."
任何比这更精确的答案都是特定于实现的。