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

时间:2018-10-17 19:10:03

标签: caching assembly arm cpu-cache memory-barriers

关于ARM DSB内存屏障instruction

  

DSB-

     

数据同步屏障充当一种特殊的内存   屏障。该指令后无程序顺序指令   执行直到该指令完成。

好,下一步:

  

此说明完成   什么时候:

     

在此指令完成之前,所有显式内存访问。

     

在此之前的所有缓存,分支预测变量和TLB 维护操作   指令完成。

等等,缓存,分支预测变量和TLB 维护到底是什么意思?这是否意味着冲洗?这是否意味着DSB指令本身可以触发此类刷新?还有什么被视为维护?

2 个答案:

答案 0 :(得分:1)

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

  • 缓存操作(加载/存储的所有副作用,或者在MMU操作之后进行显式刷新/无效)
  • 分支预测器操作(例如,全局启用/禁用分支预测)
  • TLB维护操作(例如,在更改页表条目之后使TLB条目无效)

我不认为他们试图将分支预测器操作描述为“维护”,并且“维护”一词仅应与该句中的“ TLB”一起使用。

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

答案 1 :(得分:1)

消除此歧义的关键是要认识到TLB maintenanceTLB operation更为常见。 (根据简单的搜索,系数约为3)。

在单独使用TLB operation的地方,它似乎是指操作过程或特定的确定活动。当指令被描述为与TLB交互时,这些指令将在TLB maintenance operations标题下进行描述,并且该组形成了一个相当大的集合。通常,这组指令将不会仅描述为TLB operations,因此,您建议的解析需要拆分文档中的一个通用(如果不是明确标准的)术语。