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

5 assembly powerpc hypervisor supervisor-mode

我最近遇到了一个叫做的指令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的真实文档(我可以找到).这个指令完成了什么?

dja*_*dja 6

tlbiel是"TLB Invalidate Entry Local":它使TLB [Translation Look-aside Buffer]中的条目无效.由于对该问题的评论推测,它与常规TLB无效有关,但它是"本地的",因为它只会使执行tlbiel指令的线程上的TLB条目无效.

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

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

  • 版本2.07,涉及POWER8:https://openpowerfoundation.org/ resources_lib = ibm-power -isa-version-2-07-b
  • 版本3,处理即将发布的POWER9:https://openpowerfoundation.org/ resources_lib = power-isa-version-3-0

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

最后几件事:

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