参考
流水线、超流水线、超标量(superscalar)技术对比(转);
单片机代码运行流程;
超流水线【百度百科】
流水线
-
流水线技术是一种将每条指令分解为多步,并让不同的指令的各步骤操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令。
-
目前市场上常见的5步流水线步骤如下所示;
(1)取指令 (Instruction Fetch,IF):CPU从指令寄存器中取出指令的过程
(2)指令译码 (Instruction Decode,ID):指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别区分出不同的指令类别以及各种获取操作数的方法。在组合逻辑控制的计算机中,指令译码器对不同的指令操作码产生不同的控制电位,以形成不同的微操作序列;在微程序控制的计算机中,指令译码器用指令操作码来找到执行该指令的微程序的入口,并从此入口开始执行。
(3)指令执行 (Execute,EX):完成指令所规定的各种操作,具体实现指令的功能。为此,CPU的相关不同模块被连接起来,以执行所需的操作。
(4)访存取数(Memory,MEM):若指令操作需要访问主存或者读取操作数等,则进入此阶段,根据指令地址码,得到操作数在主存中的地址,并从主存中读取该操作数用于运算。
(5)结果写回(WriteBack,WB):把执行指令阶段的运行结果数据“写回”到某种存储形式。结果数据经常被写到CPU的内部寄存器中,以便被后续的指令快速地存取;
在有些情况下,结果数据也可被写入相对较慢、但较廉价且容量较大的主存。许多指令还会改变程序状态字寄存器中标志位的状态,这些标志位标识着不同的操作结果,可被用来影响程序的动作。 -
如下图所示,如果流水线的每一步都被装满时,那么每个时钟周期平均有一条指令在流水线上执行完毕,输出结果:
超流水线
- 超流水线是通过细化流水、提高主频,使得在一个机器周期内完成一个甚至多个操作,其实质是以空间换取时间。简单来说,超流水线增加了流水线的级数。
- 一般而言,CPU执行一条指令执行上述所说的5各阶段,理论上每一阶段的实现都需要消耗一个时钟周期,且每个阶段的计算结果在时钟周期结束以前都存放在阶段之间的锁存器上,以供下一个阶段使用。以消耗时间最长的阶段作为时钟频率。假设耗时最长的阶段耗时为Max,那么理论上实际达到的时钟频率为1/Max(这里不考虑指令执行过程中的额外消耗)。
那么要提高时钟频率,那么就要想方法减少每个阶段上的消耗,最直观的方式就是将每个阶段继续细分成为更小的操作步骤。这种将标准流水先细分的级数就是超级流水线技术。
超流水线也有其弊端:
1、由于在每个细分的阶段后都需要增加锁存器保存阶段结果,将结果发送到锁存器的时间也属于损耗;
2、由于级数的增加,CPU也需要增加大量的机器指令进行每一个级数的操作,如果在某个过程出现错误,那么大量的CPU的指令都将作废,所以很可能出现主频较高的CPU实际运算速度较低的现象
超标量
- 超标量可以理解为同时有很多条并行的流水线,而不是只有一条流水线。所以在超标量结构中,CPU支持指令并行,每个周期可以发射多条指令。
在单流水线结构中,指令虽然重叠进行,但实际上,还是按照顺序执行的指令,每个周期只能发射或者退休一条指令。
- 如下图所示,超标量结构可同时处理多条指令(常见为2-4条指令)
超标量结构的实现主要借助硬件资源的重复来实现,例如多套译码器,访存结构等