动态分支预测有哪些类型?
如上图所示,表达分支历史有两种不同的方法。在**显式动态技术**中,分支历史以历史位的形式明确表示。这种技术的实际实现可以使用一位、两位或三位来表示历史。第二种方法是**隐式动态技术**,其中分支历史通过预测分支目标访问路径的条目的存在来隐式表示。
**1位动态预测** - 这是最简单的动态技术。在1位预测中,每个分支的单个位可以定义分支的最后一次出现是跳转还是未跳转。因此,此技术为多个分支维护简单的二态历史(“跳转”或“未跳转”)。
评估分支后,其关联的历史将作为一位饱和计数器进行更新。在这种情况下,预测与关联分支的最后结果相同。只有少数处理器使用1位动态预测,例如α21064作为可用选项,以及R8000作为其中一种使用的预测技术。
**2位动态预测** - 当有多个位可用于记录分支历史时,可以考虑更长的分支历史。这比1位预测能产生更好的预测结果。2位预测就像一个4态有限状态机(FSM)。它以声明的状态及其状态转换图来表征。
**3位预测** - 在3位预测中,将保存分支指令最后三次出现的的结果。例如,如果最后三次分支结果中有两次是跳转,则预测结果将为“跳转”。随后,在分支的结果已知后,将更新相应的条目。这是基于FIFO(先进先出)的方式进行的,如果分支未跳转则写入“0”,如果跳转则写入“1”。
**隐式动态技术** - 此方案将用于访问分支目标路径。这些被称为BTAC(分支目标访问缓存)和BTIC(分支目标指令缓存)方案。
隐式预测技术是一种特殊的1位预测。同时,隐式预测是BTAC或BTIC方案的特定变体。它的特点是对于未跳转的分支,在BTAC或BTIC方案中不维护条目。这种类型的条目管理比在BTAC或BTIC中保留跳转和未跳转分支的条目更有效。
广告