6

我最近遇到了一个名为的指令tlbiel,我很好奇它的含义和它的用途。在进行了一些密集的 Google 搜索后,我看到了一份 IBM 文档,让我相信它与虚拟机管理程序相关。我面临的当前指令是tlbiel r3, 1,在研究了操作码(0x7C201A24)之后,我得出的结论是它大致翻译为mtspr 3, 1;唯一的区别是 mtspr 的操作码中 21 - 30 处的 467 的预期值已更改为 274。但是,在执行 tlbiel 之前,之前直接引入了指令li r3, 0x3FF& ,导致 r3 包含.sldi r3, r3, 320x00003FF000000000

据我所知,没有值为 3 的 SPR,并且根本没有关于 tlbiel 的真实文档(我可以找到)。这个指令有什么作用?

4

1 回答 1

6

tlbiel是“TLB Invalidate Entry Local”:它使 TLB [Translation Look-aside Buffer] 中的条目无效。正如对该问题的评论所推测的那样,它与常规 TLB 无效有关,但它是“本地的”,因为它仅使执行 tlbiel 指令的线程上的 TLB 条目无效。

有关更多详细信息,通常的来源是 Power ISA。它非常详细地解释了该指令,包括它对您指定的寄存器的作用。

有几个版本的 ISA 浮动。最容易找到的两个是:

您需要注册一个 IBM ID 才能下载这些文件,但它们是免费的。如果您在 PowerPC 芯片上进行汇编程序级开发,它们绝对是非常宝贵的资源。

最后几件事:

  • 您提到您在 Xbox 360 上运行。它支持稍微不同的指令集。如果您能找到与该特定处理器相对应的 ISA,那就更好了:虽然大多数事情保持不变,但某些细节确实会发生变化。(我没有任何比 Power8 更老的经验 - 抱歉,我不能在这里更具体!)
  • Linux 内核是迄今为止关于如何在 Power 处理器上执行低级操作的最佳开源文档。那里有处理 TLB 失效的代码,特别是何时tlbiel足够以及何时需要非本地版本。
于 2016-11-27T21:46:43.180 回答