曲径通幽论坛
标题:
CPU|分支预测单元
[打印本页]
作者:
beyes
时间:
2009-12-18 17:27
标题:
CPU|分支预测单元
在
http://www.groad.net/bbs/read.php?tid-1455.html
这里介绍了一级缓存、二级缓存以及指令预取的概念。虽然实现多个级别的缓存是帮助加快程序逻辑的执行速度的一个途径,但实际上仍然没有解决“跳转的”程序问题。如果程序采用很多不同的逻辑分支,那么使不同级别的缓存跟上分支的跳转几乎是不可能的事情,结果反而会造成在最后时刻有更多的从内存中访问指令码和数据元素的情况。
为了解决这个问题,IA-32 平台的处理器提出了
分支预测(branch prediction)
的概念。
分支预测
使用专门的算法试图预测接下来在程序分支中需要哪些指令码。
专门统计学算法和分析被引入用来确定指令码中最可能的执行路径。这条路径上的指令码会被预取并且加载到缓存中。
3 种分支预测技术(Pentium-4):
深度分支预测
动态数据流分析
推理性执行
深度分支预测
使处理器能够试图越过程序中的多个分支对指令进行解码。这里同样使用了统计学的算法来预测程序在分支中最可能的执行路径。虽然这种技术有帮助,但是不是完全没错误,完全解决了跳转的问题。
动态数据流分析
对处理器中的数据流进行统计学实时分析。被预测为程序流程必须经过的,但是指令指针还没有达到的指令被传递给乱序执行引擎。另外,在处理器等待与令一条指令相关的数据时,任何可以执行的指令都会被处理。
推理性执行
处理器能够确定指令码分支中哪些不是立即就需要执行的,哪些“远距离”指令码以后有可能需要执行的,并且试图处理这些指令,这里同样使用了乱序执行引擎。
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/)
Powered by Discuz! X3.2