`

关于分支预测

 
阅读更多

 

昨日与某老汉聊天, 给我分享了一些机器学习相关内容,受益匪浅。老汉问我有关分支预测的问题,我解释得天马星空,貌似老汉已被误导,故今日撰写此文以理清逻辑。实际上分支预测这个词在N年前(N<3)在读深入理解计算机系统时就大概看过那么一段,但其中的原理一直没有深究,直至昨日老汉发问。下面让我们来了解一下。

 

假设你是一个19世纪的铁路搬岔工,负责当地的一个铁路岔路口,当时没有电话,也没有其他的无线电通信方式。火车到来之前,你根本不知道它想要去的方向。火车到来时需要停下来,你要问一下驾驶员要去那一边,然后调整岔路口的开关。

 

火车非常的沉重,同时惯性也非常大,所以火车启动和减速时能量损耗会很大,对火车的整体速度也会有影响。

 

那么是否有更好的解决方案呢?当然你可以猜测火车的前进方向并预先调整开关。如果猜对了,火车直接开过去,不需要减速。如果你猜错了,火车一定会错方向,这时火车需要停下来,倒车,回到岔路口,然后驾驶员给你一顿臭骂让你调整开关,最后驾驶员重新发动火车。如果每一次都猜对了,列车永远不用停下来。如果经常猜错,列车将花费大量的时间停车倒车重新发动。

 

 

计算流水线

 

现代的处理器会将每条指令分为以下几个阶段:取指,译码,执行,访存,写回。这些阶段被设计成流水线以提高整体吞吐量,也就是同一时间可以处理多个指令的不同阶段,也就是说处理器的处理超前于当前执行的指令,处理器会预先读出指令(取指),并解码指令(译码),来确定具体执行什么操作(执行)。见下图。

 

 

 

如果指令只是简单的顺序结构,指令流水线化会就会工作得很好(铁路线上没有分支,火车可以全速前进)。现在让我们考虑一下处理器的分支语句处理。现在假设你就是一个处理器正在处理一个分支语句(if 等语句),在if的最后一个阶段完成之前(写回),你不知道分支的下一条指令是什么。你该怎么做?停止执行,等待直到判断出条件语句,然后再加载下一条指令,然后继续执行?如果这样做的话,处理分支语句时,前面几个阶段的处理器都需要停止,这至少要浪费几个指令周期。 

 

CPU有很长的流水线(取指,译码,执行,访存,写回),CPU在”启动时也需要加速,停止时也需要减速”。

 

那么更好的办法是什么呢?猜(投机执行)!猜对了指令继续执行,没有任何性能损失。如果猜错了,需要重新刷新流水线(倒车)。

 

那么怎么去猜呢?这就是现代处理器里面的逻辑了,处理器会根据程序的历史来猜。具体怎么猜可以看这里http://zh.wikipedia.org/wiki/%E5%88%86%E6%94%AF%E9%A0%90%E6%B8%AC%E5%99%A8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 32.2 KB
分享到:
评论

相关推荐

    处理器分支预测研究的历史和现状

    以下是一些关于分支指令的基本属性: 1. **分支指令类型**:主要包括条件分支指令和无条件分支指令。无条件分支指令又可以根据目标地址的不同细分为立即分支指令、间接分支指令和返回分支指令。 2. **分支指令频率...

    代码优化之条件分支预测、除法、浮点数取整

    本篇文章将深入探讨三个关键的优化领域:条件分支预测、除法运算优化以及浮点数取整策略。 首先,我们来谈谈条件分支预测。在现代处理器中,为了提高性能,会采用一种称为“动态分支预测”的技术。它预测程序中的...

    同时多线程处理器上的动态分支预测器设计方案研究.pdf

    同时多线程处理器上的动态分支预测器设计方案研究。 一篇关于分支预测的论文

    中科大_高性能处理器体系结构_L5_分支预测

    标题“中科大_高性能处理器体系结构_L5_分支预测”明确了讲座的主题是关于中国科学技术大学(简称中科大)的一门课程——高性能处理器体系结构中的第5讲,主要内容聚焦于分支预测技术。 #### 描述解析 描述部分简要...

    VLIW-Superscalar混合结构处理器分支预测结构设计.pdf

    总的来说,这篇文章提供了关于VLIW-Superscalar混合结构处理器中分支预测设计的深入见解,强调了其在提升处理器性能方面的贡献。通过选择适当的预测算法(如gshare),并在实际硬件上进行验证,证明了这种方法的有效...

    Linux的系统级性能剖析工具-perf-31

    `branches`和`branch-misses`是关于分支预测的指标。分支预测和乱序执行(Out-of-Order Execution)是现代处理器提高性能的技术。分支指令可能导致流水线停顿,分支预测可以减轻这种影响,但预测错误(`branch-...

    branchpredictor代码解析1

    - `globalBPT`, `localBPT`, `L1_localBPT`, `L2_localBPT`: 分别表示全局分支预测表和不同级别的局部分支预测表。 - `chooser`: 分支选择器,决定使用哪个预测表。 - `RAS`: 返回地址栈,用于记录函数调用的返回...

    Lab4-PB16110173-徐煜森1

    本文是关于计算机体系结构中分支预测技术的实验报告,作者为徐煜森,实验编号PB16110173。实验的主要目标是掌握基于Branch Target Buffer (BTB)和Branch History Table (BHT)的分支预测方法,并通过Vivado 2017在...

    gem5分支捕食

    文件名称“gem5-branch-prediction-master”可能表示这是一个关于gem5分支预测的源代码仓库的主分支。在研究这个项目时,你需要理解C++的面向对象编程、模板、多线程以及可能的并行算法。同时,熟悉计算机体系结构,...

    体系结构作业21

    - 固定2个时钟周期延迟的分支处理方法意味着每次分支都延迟两个周期,而长流水线设计配合分支预测可能在大多数情况下更快,因为有90%的分支预测精度。但当预测错误时,会有额外的开销。 总的来说,RISC和CISC各有...

    指令调度和延迟分支学习资料.rar

    1. 分支预测:现代处理器普遍采用分支预测技术,通过猜测分支的走向来避免分支延迟,提高执行效率。 2. 延迟槽填充:设计者需要谨慎选择延迟槽中的指令,确保在分支错误时不会影响程序的正确性。 3. 适用性:延迟...

    关于数学建模问题的预测

    深度学习是机器学习的一个分支,尤其在图像识别、语音识别等领域表现出色。对于复杂的非线性关系,如自然语言处理和图像分析,卷积神经网络(CNN)和循环神经网络(RNN)等深度模型能提供更准确的预测。 七、集成学习 ...

    基于数值预测的机器学习相关算法综述.pdf

    决策树学习算法以树形结构建立模型,在这个模型中,决策节点、叶节点和分支定义了一系列可用于案例分类的决策。决策树算法可以用于解决分类问题,例如预测客户的购买行为、预测股票价格等。决策树算法的优点是可以...

    gamecubepdf

    GCN通过使用高效的处理器流水线、强大的功能单元、先进的分支预测机制以及优化的内存系统,成功地实现了高性能的游戏体验。Gekko处理器的设计充分考虑了当时游戏主机的需求,包括对图形处理的支持、多媒体功能的增强...

    北大的计算机体系结构讲义3

    综上所述,本讲义不仅提供了关于高级流水技术的基本概念,还深入分析了DLX指令集中分支预测的具体实现方法,以及如何通过不同的冒险处理策略来优化计算机系统的性能。这对于理解和设计高效的计算机体系结构具有重要...

    if.rar_If..._流水线

    然而,流水线也面临一些挑战,如数据相关(数据冲突)、控制相关(分支预测错误)和资源冲突等问题,这些都需要通过特定的策略来解决,如分支预测、推测执行、乱序执行等。 “if”可能是这个压缩包中的一个关键文件...

    高级体系结构 20131

    5. ** 分支预测 **:2位分支预测缓冲区可以降低分支指令带来的性能影响。分支预测是现代处理器中用于提高性能的重要技术,它尝试预测程序执行的分支方向,减少由于分支延迟导致的空闲周期。 以上知识点展示了计算机...

    _神经网络预测辛烷值预测bp_数据预测MATLAB

    2. 神经网络预测:可能包含了关于神经网络模型的描述或实现。 3. matlab神经网络:可能包含MATLAB中实现神经网络的相关脚本或函数。 4. 辛烷值预测bp:这部分代码可能专门针对辛烷值预测的BP神经网络模型。 5. 数据...

    L21.pdf mit6.004

    优点是提高了时钟频率,但这也增加了流水线的复杂性和对分支预测准确性的依赖。 #### 7. 流水线设计示例 在设计项目中,流水线可以设计为4个阶段:取指令(IF)、解码(DEC)、执行(EXE)、写回(WB),并且没有...

Global site tag (gtag.js) - Google Analytics