【读书报告】从TAGE看分支预测器设计
注:本文是高等计算机体系结构课程的作业,因为觉得作业不能白写,而且读书报告似乎被我写成了科普向的文章,所以打算把这些作业发在 blog 上 \_(:з」∠)_
自流水线的概念被提出起,处理器的性能就进入了一个飞速提升的时代。而随着 RISC、超标量等技术的诞生和发展,指令级并行性的开发越来越被人所重视,指令级并行度本身也在技术的更迭中不断上升。为了提升处理器的性能,进一步挖掘 ILP,人们选择让处理器尽可能同时分析和调度更多的指令。但由于控制转移指令的存在,尤其是条件分支,处理器不得不采用推测执行的方式来跨越基本块的边界,将流水线填得更满——由此,就诞生了分支预测技术。
“分支预测” 技术正如其名,是一种 “预测” 未来的技术。但实际上,它可以做得很简单,例如对所有分支都预测不跳转;也可以做得很复杂,例如结合过往的分支跳转情况,进行各类预测。在本科期间初次了解分支预测技术时,我曾痴迷于此——一度惊讶于简单的计数器居然也可以预知未来,而复杂的多级结构居然可以将预测正确率推上一个常人无法想象的顶峰。
借读书报告的机会,我终于能从历史的角度,学习和认识分支预测器的发展过程。这篇读书报告虽然是针对 TAGE 分支预测器的论文撰写的,但实际上我将课程中提到的所有关于分支预测的文献都大略的看了一遍。本文将结合这些文献,着重探讨 TAGE 分支预测器的技术要点,兼以浅谈分支预测器的普适设计思想。