Intel系列CPU的流水线结构与性能分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Intel系列CPU的流水线结构与性能分析

流水线技术早在Intel的X86芯片中均得到了实现。流水线的使用使CPU 的性能得到了很大的提升,而Pentium系列CPU产品更是一个高级的超标量处理器。

当然CPU流水线性能是有限制,影响CPU流水线性能的因素有:

1、多个任务在同一时间周期内争用同一个流水段

例如,假如在指令流水线中,如果数据和指令是放在同一个储存器中,并且访问接口也只有一个,那么,两条指令就会争用储存器;在一些算数流水线中,有些运算会同时访问一个运算部件。

2、数据依赖

比如,A运算必须得到B运算的结果,但是,B运算还没有开始,A运算动作就必须等待,直到A运算完成,两次运算不能同时执行。

3、条件转移的影响

如果第一条指令是一个条件转移指令,那么系统就会不清楚下面应该执行那一条指令。这时就必须等第一条指令的判断结果出来才能执行第二条指令。

条件转移所造成的流水线停顿甚至比相关还要严重的多。

越是长的流水线,相关和转移两大问题也越严重,所以,流水线并不是越长越好,超标量也不是越多越好,找到一个速度与效率的平衡点才是最重要的。

为了解决这些影响流水线性能的因素和提高CPU性能,Intel公司采取了一系列技术手段。

在Pentium III的时候主要采用的技术

1.采用超标量双流水线结构

超标量流水线设计是Pentium微处理器技术的核心。所谓超标量就是处理器内部含有多个执行单元来完成多条指令的同时执行。Pentium有两条分别称为U和V的指令流水线,各自有独立的算术逻辑单元ALU及高速缓存结构。这种双流水线并行作业的方式,使得Pentium在每个时钟周期内可同时执行两条指令。此外,还有一个执行单元,保证同时完成一条浮点运算指令。在Pentium III时采用3条独立的12级超标量流水线。

2.分支预测技术

为了减少由于转移导致流水线的效率损失,Pentium采用分支预测技术来动态预测指令的目标地址,从而节省了CPU的执行时间。通常在用户程序中包含不少的条件转移指令,在流水线计算机中,这些转移指令由于产生分支可能使予取和予译码指令作废。Pentium内部有两个予取指令缓冲队列,在执行条件转移指令前,一个以顺序方式予取指令,另一个以转移方式予取指令,后者也称作分支目标缓冲器BTB(Branch Target Buffer),这是一个小的cache,它基于转移指令,尤其是循环转移的固有特点,可以认为在大多数情况下,当一条转移指令被再次执行时,其成功与否及转移目标与上次相同。据此可构造动态的分支目标预测硬件。BTB是一种效果较好的硬件机制,统计表明BTB的容量较大时(如超过256项)预测准确率可达90%。通过这种动态分支预测技术,不管是否产生转移,所需指令都在执行前予取好。

3.通过乱序来优化指令流水线

在执行中采取了无序执行(out-of-order processing)技术。即当某条指令需要一些数据而未能立即执行完毕时,它将被剔出流水线并等待数据,CPU则马上执行下条指令,就好比在装配线上发现某件产品不太合格,而被淘汰,等待返工一个道理。这样,可以防止一条指令不能执行而影响了整个流水线的效率。

4. 将指令划分为更细的阶段

在P6架构的CPU中将指令划分成了更细的阶段,从而使逻辑设计、工序等等更为简化,提高了速度。在486芯片中,一条指令一般被划分为五个标准的部分,奔腾亦是如此。而在P6中,由于采用了近似于RISC的技术,一条指令被划分成了创纪录的十四个阶段。这极大地提高了流水线的速度。

在Pentium IV中增加采用的技术如下

1. 使用高级动态执行(Advanced Dynamic Execution)

为支持乱序执行和提高分支预测精度, 高级动态执行机制可以检查126条指令, 并决定执行次序, 配合128个重命名寄存器, 具有更高的预测精度。与PIII相比, 大约可减少1/3的预测错误。动态执行技术一般指集分支预测、数据流分析(即乱序执行)和猜测执行三种技术于一身。

2. 执行跟踪缓存(Execution Trace Cache)

用于存储已解码的微指令( OPs), 加快运行速率。当下次再执行到相同指令时, 不必再一次重复解码, 只需要取相关数据直接执行即可。这对于循环执行的程序有很高的效率。此外, 当分支预测出错, 需要回到分支处重新开始运行另一路时, 之前的译码阶段已经把另一分支指令缓冲进了Trace Cache, 而不用再译码,可节约1~2个时钟周期。

3. 快速执行引擎(Rapid Execution Engine)

采用了称为Double Pumped的双重并发技术(即两组ALU) , 每个时钟ALU能执行两次, 效率相应提升一倍。因此, Pentium 4的双ALU在一个周期内可以执行4条指令。

4. 超长管道处理技术(超管线技术) (Hyper Pipelined Technology)

采用超长管道处理技术, 使流水线深度达20级。Prescott(Pentium IV 的一种核心)更是达到了31级。

5.超线程(HT)技术

资源不冲突时,可同时运行2个线程。

在Core架构时,由于Core架构是Pentium III的P6架构的扩展,所以采用的技术和Pentium III差不多,为3路,12级流水线,同时采用了微指令融合技术,主要是为了减少微指令数量,精简硬件设计。

到了Core2时主要采用了

1. 高级智能高速缓存技术

各Core可动态支配L2 Cache,可提高L2命中率;减少FSB使用频率(通信量)。

2.智能内存访问技术

根据软件需求,用预取器预取指令和数据。

3.宽位动态执行技术

CPU内部增加新操作类型,将多条指令合并为1个操作,实现更大解码带宽、更少空间占用、更低调度负载。微指令融合(Micro-Op Fusion)技术CPU 内部优化uop控制,将多个uop合并为1个uop;

4. 优化流水线的技术

优化分支预测技术:采用二级BTB、返回堆栈缓冲器(RSB)满时可导入ROB,平衡BTB/RSB中指令数量与速度的矛盾;64位宏指令融合技术:支持64位宏指令融合、增加了可融合宏指令个数。

上面提到的技术基本上是以提高CPU流水线的性能为目的的,但是其中有一个技术确违背了这个意愿,就是在Pentium中使用超长流水线技术使流水线深度达到20级,在Prescott架构中甚至达到了31级。

相关文档
最新文档