【问题标题】:Does a CPU cache entry contains physical or virtual address?CPU 缓存条目是否包含物理或虚拟地址?
【发布时间】:2013-08-29 18:16:53
【问题描述】:

CPU 缓存是处理物理地址还是虚拟地址?如果它处理虚拟地址,这是否意味着它必须在上下文切换时清空,假设新线程来自另一个进程。

【问题讨论】:

  • 它不需要在线程切换时清空(如果处理虚拟地址),只是它的条目变得陈旧,最终将被覆盖和重用。顺便说一句,您的问题仅与硬件有关(与CLinuxgcc ....无关)

标签: x86-64 memory-address virtual-memory cpu-cache


【解决方案1】:

这取决于处理器型号。 Some processors use both.(请参阅“虚拟标签和提示”部分中的“SPARC”。)

您已经用 x86-64 标记了这个问题,并且可以给出迄今为止所有 x86-64 模型的答案,但我不确定架构规范是否指定符合规范的处理器是否必须使用其中一个或另一个用于缓存信息。

【讨论】:

  • 我不认为 x86-64 有一种机制可以让操作系统知道它必须使用页面着色来避免 VIPT 缓存的同义词别名,或者刷新 VIVT 的上下文切换缓存。如果不是,那意味着所有缓存都必须给出仅基于物理地址的缓存错觉,避免任何类型的别名。所以我认为所有的缓存都必须给人一种像 PIPT 一样工作的错觉。
  • 有趣的事实:Sandybridge 系列中的解码微指令缓存实际上已被寻址。我不确定它是否会在更改页表时明显失效。它足够小,而且旧版解码器足够好,它会很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
  • 2018-10-21
  • 2015-05-04
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多