tlbiel 指令是什么,它有什么作用?
What is the instruction tlbiel and what does it do?
我最近遇到了一条名为 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
.
据我所知,没有值为 3 的 SPR,也根本没有关于 tlbiel 的真实文档(我能找到)。这条指令完成了什么?
tlbiel
是 "TLB Invalidate Entry Local":它使 TLB [Translation Look-aside Buffer] 中的条目无效。正如对问题的评论所推测的那样,它与常规的 TLB 无效有关,但它是 "local" 因为它只使执行 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
足够并且需要非本地版本时。
我最近遇到了一条名为 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
.
据我所知,没有值为 3 的 SPR,也根本没有关于 tlbiel 的真实文档(我能找到)。这条指令完成了什么?
tlbiel
是 "TLB Invalidate Entry Local":它使 TLB [Translation Look-aside Buffer] 中的条目无效。正如对问题的评论所推测的那样,它与常规的 TLB 无效有关,但它是 "local" 因为它只使执行 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
足够并且需要非本地版本时。