Prescott核心的Pentium 4处理器系列上市之初就受到了各方的质疑,因为相比上一代Northwood核心Pentium 4处理器的20级流水线,新Pentium 4处理器的流水线达到了创记录的31级!究竟什么是流水线,为什么新Pentium 4处理器会采用超长流水线,它有什么样的负面影响呢?
一、我们为什么需要流水线?
借鉴了工业流水线制造的思想,现代CPU也采用了流水线设计。在工业制造中采用流水线可以提高单位时间的生产量;同样在CPU中采用流水线设计也有助于提高CPU的频率。先让我们以汽车装配为例来解释流水线的工作方式。假设装配一辆汽车需要4个步骤:1.冲压:制作车身外壳和底盘等部件,2.焊接:将冲压成形后的各部件焊接成车身,3.涂装:将车身等主要部件清洗、化学处理、打磨、喷漆和烘干,4.总装:将各部件(包括发动机和向外采购的零部件)组装成车;同时对应地需要冲压、焊接、涂装和总装四个工人。如果不采用流水线,那么第一辆汽车依次经过上述四个步骤装配完成之后,下一辆汽车才开始进行装配,最早期的工业制造就是采用的这种原始的方式。
不久之后大家就发现,某个时段中一辆汽车在进行装配时,其它三个工人处于闲置状态,显然这是对资源的极大浪费!于是大家开始思考能有效利用资源的方法:有什么办法让四个工人一起工作呢?那就是流水线!在第一辆汽车经过冲压进入焊接工序的时候,立刻开始进行第二辆汽车的冲压,而不是等到第一辆汽车经过全部四个工序后才开始。之后的每一辆汽车都是在前一辆冲压完毕后立刻进入冲压工序,这样在后续生产中就能够保证四个工人一直处于运行状态,不会造成人员的闲置。这样的生产方式就好似流水川流不息,因此被称为流水线。
CPU的工作我们也可以大致分为指令的获取、解码、运算和结果的写入四个步骤,采用流水线设计之后,指令(好比待装配的汽车)就可以连续不断地进行处理。在同一个较长的时间段内,显然拥有流水线设计的CPU能够处理更多的指令。
二、为什么要加长流水线?
Intel和AMD在桌面CPU市场上的激烈竞争,使双方都千方百计地拿出更强大产品来压制对方,而最引人瞩目的就是CPU的频率之争。随着CPU频率不断地攀升,Intel总是在自己某个核心的处理器到达极限之时采用新的、更长流水线的核心来消除频率的瓶颈。那么流水线和频率之间有什么关系呢?
还是以上面的例子来说明。假如冲压、焊接、涂装和总装四个过程各自需要1个小时,现在我们把这四个工序细化:冲压分为冲压1(外壳)和冲压2(底盘)两个子工序,另外三个工序同样各自分成两个子工序,一共八个子工序。这样一来,完成每个子工序平均只需要半个小时,因此每隔半个小时就有一辆汽车完成装配,下线速度提高了一倍!如果再进一步细化,一分为二,那么完成每个工序平均只需要15分钟,即每隔15分钟就有一辆汽车下线,速度又提高了一倍(单辆汽车的生产时间仍是4个小时,但是两辆汽车的生产间隙更小了)。所以工序分得越细,单位时间内(例如8个小时)生产的汽车就越多。
正是这样,CPU厂商才试图不断加长流水线,以利于频率的提升。那么为什么Prescott核心的处理器才31级流水线,流水线级数能不能无限增长呢?
三、长流水线带来的问题
首先,由于现有芯片制造工艺的限制,频率的提升带来高功耗、高发热量的问题。尽管流水线增长,频率提升的空间相应增大,但是处理器频率提升的其它瓶颈却无法解决。而且过长的流水线意味着更加复杂的内部结构,生产的良品率也难以保证。
其次,在CPU的工作中,指令往往不是孤立的,许多指令按一定的顺序执行才能完成一个任务。而一旦某个指令在运算过程中发生了错误,或者执行了没有用的指令,那么其后与之相关的指令就都没有用了。这些指令必须清除掉,然后再执行其它的指令,CPU相当于做了许多无用功!流水线越长,一旦出错影响也就越大,比如一个指令在最后一级出错,那么可能在后续流水线中的所有指令都要被清除,Northwood核心处理器要浪费20级工序的时间,而Prescott核心处理器就要浪费31级工序的时间!
图. 标注:Northwood核心处理器和Prescott核心处理器工作效率(即IPC,每时钟周期实际执行指令数)对比。
再者,由于任何电导体都会产生延时,流水线越长、级数越多就会导致延迟次数越多,总延时就越大,CPU完成单个任务的时间就会越长。基于以上两个原因,人们才常常说Prescott核心处理器的效率低下,需要用更大的缓存和更先进的技术加以弥补。因此我们可以看到低频率Prescott核心处理器与同频的Northwood核心处理器相比在性能上比没有什么优势,只有在Prescott核心处理器的频率不断提升之后才能抵消长流水线带来的负面影响并发挥出自身的优势。
新闻热点
疑难解答