什么是指令tlbiel及其作用是什么?

时间:2016-11-26 04:46:32

标签: assembly supervisor hypervisor powerpc

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

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

1 个答案:

答案 0 :(得分:6)

tlbiel是" TLB无效输入本地":它使TLB [Translation Look-aside Buffer]中的条目无效。正如对该问题的评论所推测,它与常规的TLB无效有关,但它是" local"因为它只会使执行tlbiel的线程上的TLB条目无效 指令。

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

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

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

最后几件事:

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