缓存、分支预测器和 TLB 维护操作

Cache, Branch predictor and TLB maintenance operations

关于 ARM DSB 内存屏障 instruction:

DSB -

Data Synchronization Barrier acts as a special kind of memory barrier. No instruction in program order after this instruction executes until this instruction completes.

明白了,下一个:

This instruction completes when:

All explicit memory accesses before this instruction complete.

All Cache, Branch predictor and TLB maintenance operations before this instruction complete.

等等,缓存、分支预测器和TLB维护到底是什么意思?是冲水的意思吗?这是否意味着 DSB 指令本身可以触发这种刷新?还有什么被认为是维护?

我认为这是英语语法歧义的问题。我认为他们的意思是

  • 缓存操作(loads/stores 的所有副作用,或在 MMU 操作后显式刷新/失效)
  • 分支预测器操作(例如全局enable/disable分支预测)
  • TLB 维护操作(例如,在更改页面 table 条目后使 TLB 条目无效)

我不认为他们试图将分支预测器操作描述为 "maintenance",并且单词 "maintenance" 只应该与该句子中的 "TLB" 一起使用。

(某些分支预测器操作可能被描述为维护,如果 ARM 已添加分支预测器刷新操作以缓解 Spectre,英特尔对其 x86 CPU 的方式及其最近的微代码更新添加了新模型-具体寄存器。(https://access.redhat.com/articles/3311301)。但我不认为这是他们的句子在这里想说的。)

消除歧义的关键是要认识到 TLB maintenance 是一个比 TLB operation 更常见的术语。 (根据简单搜索,乘以约 3 倍)。

单独使用TLB operation的地方,好像是指操作的过程,或者是指具体的标识activity。在指令被描述为与 TLB 交互的地方,这些指令在 TLB maintenance operations 的标题下进行了描述,并且该组形成了一个相当大的集合。这组说明通常不会被描述为 TLB operations,因此您提出的解析需要在文档中拆分一个常见的(如果不是明确标准的)术语。