流水线深度
流水线深度一直是影响处理器效率的重要因素,流水线深度的增加可以让处理器时钟频率进一步提高,但带来的反面影响就是处理器的单周期执行效率降低、发热量上升,同时容易产生分支预测等问题,因此流水线长度的尺度把握一直是处理器设计中的一个重要核心问题。早期的NetBurst架构的Pentium 4处理器,诸如Williamette和Northwood核心都只有21级的流水线长度,而到了Prescott核心则达到了惊人的31级流水线长度,这种长度要比当年的Pentium III和Athlon处理器高出许多。
管线中的“级”的任务包括分支下一步要执行的指令、分支数据的运算结果、分支结果的存储位置、执行运算等等。最基础的CPU管线可以被分为5级:取指令;解释指令;演算出操作数;执行指令; 存储到高速缓存;当然现代的CPU不可能就这么单纯的分配管线“级”,很多现代的处理器是这么分级的:取指令 1,取指令 2;解释指令 1,译解指令 2;演算出操作数;分派操作;确定时;执行指令;存储到高速缓存 1;存储到高速缓存 2。
两者最终完成的结果是一样的,只是前者只有5级操作,而后者则达到了10级操作,同样的为了完成操作,前者的5级操作的的任何一级都要比10级操作中的任何一级来得操作多。因此,如果可能的话尽量采用5级操作似乎更加有优势,因为数据填充以及控制都比10级操作来得简单了许多。那么延长管线长度有什么根本意义呢?最关键的因素在于管线长度并不是简单的重复,可以说它把原来的每一级的工作细化,从而让每一级的工作更加简单,因此在“10级”模式下完成每一级工作的时间要明显的快于“5级”模式。其实可以这样理解CPU的效率看的是需要耗费最长操作那级的效率。
比如假设5级管线模式每1级需要1个时钟周期来执行,最快可以在1ns内完成的话,那么基于这种管线结构的处理器的主频可以达到1GHz的处理器(1/1ns = 1GHz)。现在的情况是CPU管线内的级数越来越多,为此必须明显的缩短时钟周期来提供等于或者高于较短管线处理器的性能。好在,较长管线中每个时钟周期内所做的工作减少了,因此即时处理器频率提升了,每个时钟周期缩短了,每个“级”所用的时间也就相应的减少了,从而可以让CPU运行在更高的频率上了。如果采用10级管线模式可以可以让处理器主频提升到2GHz,那么我们应该可以得到相当于原来的处理器2倍的性能,如果管线一直保持满载的话。当然以上仅仅是理想状态下。
其实归根结底,增加管线并不是为了彻底的提升处理器效率,最终要的因素还是可以更高的提升处理器频率。但是效率却会有一定的丧失,因为处理的分支多了,消耗的时间反而会高。但是不管性能是不是因为增加管线而获得了提升,英特尔已经全面否定了NetBurst架构的设计理念,因为虽然这种架构对于提升工作频率非常有帮助,但是其响应带来的功耗提升却也是非常巨大的,于是新一代的Core架构中,英特尔依旧会同Pentium M的英特尔移动架构那样采用少流水线深度的设计。
在Core架构中,其指令流水线深度达到14级,这个深度是要高于Pentium M的12级,但是却比AMD的K8处理器架构的17级要低上3级。目前的Core架构可能是兼顾执行效率和降低功耗的折中设计。