1. Introduction
- 预测器主要由两部分预测表组成,分别为双峰值预测表和全局预测表。其中双峰值预测表由PC直接索引,每一项包含一个与branch指令相关的预测方向;全局表由几个bank组成,每一个bank由PC和一个不同长度的历史索引共同索引,全局表中的每一项包括一个用于确认该全局历史下的PC是否命中的tag以及一个该全局历史下的branch指令的跳转方向。
- 预测器的方向由全局表中匹配成功的最长历史索引的bank提供,若果全局表都发生了miss,则预测方向由使用PC直接索引的双峰值表提供。
- 下图为TAGE Predictor的结构图。图的最左侧为上面介绍的双峰值预测表记为bank0,它有4K项,使用PC低12位直接索引,每一项包含3bits的饱和计数器和1bit的m位;右边四个bank记为bank1~4,他们为上述介绍的全局预测表,分别使用10、20、40、80bits的全局历史和PC一起索引,当历史长度超出索引所需的位数时,将采用折叠的方法将历史转化为所需长度,再将其与PC进行异或后对相应的bank进行索引。bank1~4均有1K项,每一项包含一个8bits的tag,3bits的饱和计数器以及一个ubit。综上预测器的大小为64Kb。