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