单指令周期处理器
在引入流水线机制之前,先来看看单指令周期处理器,之所以称之为单指令周期处理器,是因为这样机制的处理器在运行一条指令的时候,从取指到译码到执行,不能有第二条指令的加入,也就是说如果前后有两条指令需要运行,那第二条指令的运行必须等待第一条指令运行完毕之后才能得到运行。
前文所述一条指令大致可以分为三个阶段执行,而这个过程的执行,至少都需要一个时钟周期,因为在取指的时候我们的 PC 指针寄存器在一个时钟周期的驱动下递增,从而实现下一条指令的取指,同样的,为了尽可能地提高 CPU 效率,我们也希望指令的运行能够在一个时钟周期内完成,既然所有的指令的运行都在一个时钟周期内运行,但是指令各有不同,有的指令执行的时间长,有的指令执行的时间短,因此,为了兼顾所有指令都能够得到运行,那么时钟周期就应该满足执行时间最长的指令的运行,下面展示了三条不同的指令在一个时钟周期内所占的时间。
通过上图我们可以明显的看到采用单指令周期机制的弊端,时钟周期受到最长执行时间指令的影响,而对于执行时间较短的指令来说,又会有大部分时间处于啥也干不了的状态,浪费了资源,这样的机制虽然使得每一条指令都在一个时钟周期内就执行完毕了,但是也降低了 CPU 的主频,因为如果太高的话,有些复杂的指令就不能执行完。
基于此,也就有了流水线技术的出现。