什么是流水线技术? 河南 周珩珩 1996-04-12 流水线(Pipeline)技术是目前广泛应用于微处理芯片(CPU)中的一项关键技术,但对许多非专业性的读者来说,这个名词过于抽象,加上P6(高能奔腾)应用的超流水线(Super Pipeline)技术,更令人一头雾水,不知所云。本文试图以简单、形象、非专业的语言来介绍这一技术,以加深大家对其的理解。 流水线技术指的是对CPU内部的各条指令的执行方式的一种形容,要了解它,就必须先了解指令及其执行过程。 1.计算机指令及其执行过程 计算机指令,就是告诉CPU要做什么事的一组特定的二进制集合。如果我们将CPU比喻成一个加工厂,那么,一条指令就好比一张订单,它引发了CPU__加工厂的一系列动作,最后分别得到了运算结果和产品。那么,它们到底是怎样工作的呢?首先,要有一个接收订单的部门__CPU的取指令机构;其次,还要有完成订单的车间__CPU的执行指令机构。在工厂中,一张订单上的产品被分成了许多道工序,而指令亦在CPU中转换成了许多条对应的微操作,依次完成它们,就执行完了整条指令。 2.执行指令的方式及流水线技术 在低档的CPU中,指令的执行是串行的,简单地说,就是执行完了一条指令后,再执行下一条指令,好比我们上面提到的那个加工厂在创业之初,只有一间小车间及孤军奋战的老板,那么,当他接到一张订单之后,他必然忙于完成第1张订单,而没有能力去接第2张订单。这样接订单→完成订单→接订单→……取指令→执行指令→取指令→……是一个串行的过程。后来,老板发现接受订单不费太多时间,而且他还有了一个帮工,他们可以相互独立地工作,这样,老板就在完成上张订单产品的同时,接受下一张订单的订货。这表现在CPU上就是取指令机构与执行指令机构的分开,这样从CPU整体来看,CPU在执行上条指令的同时,又在并行地取下条指令。这在CPU技术上是一个质的飞跃,它使得CPU从串行工作变为并行工作,从而具有了流水线的雏型。 CPU在完成了上面这一步之后,剩下的就是如何提高并行处理能力的问题了,CPU的设计者们从加工厂的装配线得到启发,将一条指令的执行分解成了许多各不相同的多个工序__微指令,从而极大地简化了指令的复杂度,简化了逻辑设计,提高了速度。在具有流水线技术的CPU中,上条指令刚执行完第一道“工序”,马上第二条指令就加入了流水线中,开始执行。很明显,这种流水线技术要求有多个执行单元,这在X86芯片中均得到了实现。 通过上面的介绍,我们已经了解到什么是流水线技术,这虽不是一种创新,但在技术的实现上则是一大难关,是CPU设计者对计算机发展的一大贡献。 那么,P6芯片的超流水线又是怎么回事呢? 3.P6的超流水线简介 超流水线(Super Pipeline)在本质上仍为一种流水线技术,但它做了以下的改进。 第一、流水线条数从奔腾的两条增至三条,还有十一个独立的执行单元并行支持。 第二、在执行中采取了无序执行(out-of-order processing)技术。即当某条指令需要一些数据而未能立即执行完毕时,它将被剔出流水线并等待数据,CPU则马上执行下条指令,就好比在装配线上发现某件产品不太合格,而被淘汰,等待返工一个道理。这样,可以防止一条指令不能执行而影响了整个流水线的效率。 第三、在P6中将指令划分成了更细的阶段,从而使逻辑设计、工序等等更为简化,提高了速度。在486芯片中,一条指令一般被划分为五个标准的部分,奔腾亦是如此。而在P6中,由于采用了近似于RISC的技术,一条指令被划分成了创纪录的十四个阶段。这极大地提高了流水线的速度。 那么,P6的超流水线技术是否将流水线工艺发挥到了极限呢?我个人认为,还远远未到,在P7中也许我们将看到全新的设计。