我最近遇到了一条称为tlbiel的指令,我对其含义和用途有很好的好奇。在经过大量的Google搜索之后,我看到了一份IBM文档,这使我相信它与虚拟机管理程序有关。我目前所面对的指令是tlbiel r3, 1,在研究了操作码(0x7C201A24)之后,我得出的结论是,该指令可以粗略地转换为mtspr 3, 1;唯一的不同是,mtspr的操作码中21-30处的预期值467已更改为274。但是,在执行tlbiel之前,直接在其之前引入了li r3, 0x3FFsldi r3, r3, 32指令,从而使r3包含0x00003FF000000000

据我所知,没有值为3的SPR,也没有关于tlbiel的真实文档(我可以找到)。该指令完成什么工作?

最佳答案

tlbiel是“TLB本地无效条目”:它使TLB [转换后备缓冲区]中的条目无效。猜想该问题的评论与正常的TLB无效有关,但它是“本地的”,因为它仅使执行tlbiel的线程上的TLB条目无效
操作说明。

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

有几种版本的ISA随处可见。最容易找到的两个是:

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

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

    最后几件事:
  • 您已经提到您正在Xbox 360上运行。它支持稍有不同的指令集。如果您可以找到与该特定处理器相对应的ISA,那就更好了:尽管大多数情况保持不变,但某些细节确实会发生变化。 (对于Power8之前的版本,我没有任何经验-抱歉,我在这里不能更具体!)
  • 到目前为止,Linux内核是有关如何在Power处理器上执行低级操作的最佳开源文档。其中包含用于处理TLB无效的代码,尤其是在tlbiel足够且需要非本地版本的情况下。
  • 关于assembly - tlbiel指令是什么,它有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40815004/

    10-11 18:26