曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5950|回复: 0
打印 上一主题 下一主题

CPU|分支预测单元

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2009-12-18 17:27:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
http://www.groad.net/bbs/read.php?tid-1455.html 这里介绍了一级缓存、二级缓存以及指令预取的概念。虽然实现多个级别的缓存是帮助加快程序逻辑的执行速度的一个途径,但实际上仍然没有解决“跳转的”程序问题。如果程序采用很多不同的逻辑分支,那么使不同级别的缓存跟上分支的跳转几乎是不可能的事情,结果反而会造成在最后时刻有更多的从内存中访问指令码和数据元素的情况。

为了解决这个问题,IA-32 平台的处理器提出了 分支预测(branch prediction)的概念。

分支预测使用专门的算法试图预测接下来在程序分支中需要哪些指令码。

专门统计学算法和分析被引入用来确定指令码中最可能的执行路径。这条路径上的指令码会被预取并且加载到缓存中。

3 种分支预测技术(Pentium-4):
      深度分支预测
      动态数据流分析
      推理性执行

深度分支预测使处理器能够试图越过程序中的多个分支对指令进行解码。这里同样使用了统计学的算法来预测程序在分支中最可能的执行路径。虽然这种技术有帮助,但是不是完全没错误,完全解决了跳转的问题。

动态数据流分析对处理器中的数据流进行统计学实时分析。被预测为程序流程必须经过的,但是指令指针还没有达到的指令被传递给乱序执行引擎。另外,在处理器等待与令一条指令相关的数据时,任何可以执行的指令都会被处理。

推理性执行处理器能够确定指令码分支中哪些不是立即就需要执行的,哪些“远距离”指令码以后有可能需要执行的,并且试图处理这些指令,这里同样使用了乱序执行引擎。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-17 23:27 , Processed in 0.063234 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表