【问题标题】:What is the instruction tlbiel and what does it do?什么是指令 tlbiel,它有什么作用?
【发布时间】:2016-11-26 04:46:31
【问题描述】:

我最近遇到了一个名为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 的真实文档(我可以找到)。这条指令有什么作用?

【问题讨论】:

  • 据我所知,这是本地版本的 TLB 条目失效 (tlbie),其中本地意味着它不会影响系统中的其他 CPU。但很奇怪,IBM 没有清楚地解释这条指令......
  • 可能与TLBIE指令有关,导致TLB条目失效。
  • @SamiKuhmonen,公平地说,该平台在 Xenon CPU (Xbox 360) 上运行,所以这可能是没有太多文档的原因。我应该补充一点,li r3, 0x3FFsldi r3, r3, 32 都在 tlbiel 函数之前执行。这个值(0x00003FF000000000)看起来有什么熟悉的吗?谢谢你们提供的信息。
  • @MichaelPetch 感谢您提供有用的资源。但是,在这种情况下,tlbiel 后跟一个意外的立即值 (1),并且 r3 (RB) 似乎不包含无效扇区字段的三个定义值(0b00、0b10 和 0b11)。

标签: assembly powerpc hypervisor supervisor-mode


【解决方案1】:

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

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

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

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

最后几件事:

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

【讨论】:

    猜你喜欢
    • 2011-01-14
    • 2019-04-26
    • 2016-04-29
    • 2017-03-02
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多