分支检测的方案是什么?


计算机程序中的分支是一条指令,它指示设备开始执行多条指令,而不是简单地按顺序执行指令。在高级语言中,这些被定义为流程控制语句,并被集成到语言中。该图显示了微处理器中使用的分支检测方法概述。

早期的流水线微处理器在通用指令解码期间(主流水线方法)检测分支。这种简单技术的缺点是会导致较长的分支处理惩罚。它可以减少获取惩罚,最新的处理器通常在通用指令编码之前检测分支(早期分支检测)。

有三种方法,例如并行分支检测、前瞻分支检测和集成指令获取和检测。在下文中,它可以介绍这些早期分支检测方案。一些处理器与“通用”指令解码并行检测和解码分支。此方案称为**并行分支检测**。

一种更高级的分支检测方法是在与通用指令解码并行地从指令缓冲区标记分支,但此外还要向前查看以前的缓冲区条目。此方案称为**前瞻分支检测**。

例如,Power1(RS/6000)从最后五个条目检测分支,而Power2从顺序指令缓冲区的最后八个条目检测分支。相比之下,除分支之外的指令仅分别从最后四个和六个条目解码和发出。

PowerPC 603 中选择了一种不同的分支检测变体。在此处理器中,分支检测完全向前移动到指令缓冲区的输入端。一个双解码器检查从指令缓存读取到指令缓冲区的指令是否存在分支。

最先进的分支检测方法避免了显式解码。相反,分支检测集成到指令获取结构中。此方案称为**集成指令获取和分支检测**。

指令获取结构被扩展,以便它可以识别下一个要获取的指令是否是分支。每个检测到的分支都被猜测为已获取,并且除了或此外,除了下一个顺序指令之外,分支的目标地址甚至目标指令也会提前获取。

在此方案中,条件分支遵循“通用”解码,如果猜测过程错误,则启动一个结构来更正此错误。一些新型处理器采用集成指令获取和分支检测方案,例如IBM ES 9000系列处理器的高端型号、PowerPC 604/620、MIPS R8000和R10000以及PA 8000。

更新于: 2021年7月23日

938 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告