88 次浏览
历史位用于记录分支历史。处理器采用四种不同的方案之一来实现历史位,如图所示。在最简单的方案中,历史位放置在 I 缓存中。例如,α 处理器在 I 缓存中为每条指令提供一个 (21064) 或两个 (21064A) 历史位。相反,UltraSparc 仅为每条缓存行维护两个 2 位条目,其中包含四条指令。Sparc 架构维护延迟槽,因此在四条后续指令中最多只能发生两个分支(和两个延迟槽)。在 PowerPC 604 中,有一个…… 阅读更多
2K+ 次浏览
有两种不同的方法可以表达分支的历史,如图所示。在显式动态技术中,分支历史以历史位形式明确说明。使用一位、两位或三位来表达历史的这种技术的实际实现。第二种方法是隐式动态技术,其中分支历史由预测分支目标访问路径的条目的存在隐式说明。1 位动态预测 - 这是最简单的动态技术。在 1 位预测中,每个分支的单个位可以定义最终发生的… 阅读更多
984 次浏览
在静态预测技术中,分支是“总是执行”或分支是“总是未执行”的方法。它可以通过检查目标代码的特定属性来进行静态预测。在实际实现中,静态预测是基于操作码、基于位移或基于编译器提供的提示,如图所示。基于操作码的预测是通过假设某些操作码的分支将“执行”,而其他操作码的分支将“未执行”来进行的。例如,在 MC 88110 和 PowerPC 601/603 处理器中使用此预测技术。如表所示,显示了如何在… 阅读更多
208 次浏览
在固定预测中,会持续进行类似的猜测,即“总是执行”或“总是未执行”方法。“总是未执行方法” - “总是未执行方法”(或简称“未执行方法”)具有以下典型处理方案:它可以检测未解决的条件分支,并将其猜测为“未执行”。它可以继续执行顺序路径,但为了准备错误的猜测,可以并行开始执行执行路径(例如,计算 BTA)。当条件变得可评估时,检查猜测。如果猜测正确,则继续执行顺序… 阅读更多
处理器中使用的分支预测方案对其执行产生核心影响。因此,已付出一些努力来促进一种有效的方案。预测可以是固定的或真实的预测。在固定预测中,会持续进行相同的猜测,即“执行”或“未执行”。这是一种单一结果的猜测。“总是未执行”方法更倾向于“未执行”路径,因此执行惩罚 (TP) 通常高于未执行惩罚 (NTP)。“未执行”方案比“执行”方案更容易实现。许多流水线微处理器采用此方案,包括某些早期… 阅读更多
231 次浏览
条件分支不能早于已知引用的条件进行计算。例如,如果指定的条件定义先前指令结果的符号,则计算的前提条件是先前指令已执行。在引用的条件变得已知之前,条件分支被声明为未解决。处理器使用三种基本元素来应对未解决的条件分支,例如阻塞分支处理、推测执行和多路分支,如图所示 - 阻塞分支处理是应对未解决的条件分支的简单元素。… 阅读更多
940 次浏览
计算机程序中的分支是一条指令,它指示设备开始执行多条指令,而不是简单地按顺序执行指令。在高级语言中,这些定义为流程控制阶段,并建立到语言中。该图概述了微处理器中采用的分支检测方法。早期的流水线微处理器在公共指令解码期间检测分支(主流水线方法)。这种简单技术的主要缺点是它会导致较长的分支处理惩罚。它可以减少执行惩罚,最新的处理器通常会在公共指令编码之前检测分支(早期分支… 阅读更多
421 次浏览
分支处理有两种方法,例如分支处理的布局及其微体系结构实现,如图所示。分支处理包括三个主要子任务,例如检测分支、处理未解决的条件分支和访问分支目标路径。第一个方面是分支检测。最初,处理器在指令解码期间检测分支。但是,处理器识别分支越早,分支处理就可以越早启动,并且惩罚越少。因此,新方案试图尽早遇到分支。最先进的分支检测技术避免了显式解码。相反,分支… 阅读更多
176 次浏览
有两种扩展基本概念的可能方法,例如增加延迟槽的倍数或在延迟槽中引入指令的取消。大多数体系结构只提供一个延迟槽。一些体系结构提供多个延迟槽,例如 MIPS-X。另一种填充更多延迟槽的可能性是引入取消(也称为无效或压缩)。基本思想是在使用延迟槽方面引入选项,这允许填充比基本方案情况下更多的延迟槽。可以引入四种不同的取消类型。这四种变体… 阅读更多
8K+ 次浏览
当分支由流水线简单地处理时,在每个执行的分支之后,至少有一个周期保持未利用。这是由于流水线的装配线式冷漠性。分支后面的指令槽称为分支延迟槽。延迟槽也可能出现在加载指令之后;这些定义为加载延迟槽。在传统执行期间,分支延迟槽会被浪费。但是,当使用延迟分支时,这些槽可以至少部分地使用。延迟分支原理titi+1ti+2ti+3ti+4BbFDEWBAaddFDEWBCsubFDBTAF在图中,它可以将程序段中最初位于分支之前的 add 指令转移到分支延迟槽中。使用延迟… 阅读更多