什么是流水线?ARM处理器流水线简析

电子说

1.2w人已加入

描述

CPU 流水线

什么是流水线?

类似于工厂流水线。

为什么要弄出这个东西?

流水线是为了提高效率,能并发同时进行多个任务。

CPU的一个任务,或者说指令,被分为很多个步骤完成,就跟生产线上装配汽车,分成若干个零件工序依次安装。

几种CPU流水线

Intel:流水线较少,但是每条流水线的长度很长。可以想象成,Intel有较少的生产线,而每个生产线上把装配一辆汽车分成了较多的步骤,所以生产线很长。这样的优点是,生产线上的每个步骤需要完成的任务相对较少,这样,工作的节奏很容易加快,也就是号子喊的可以快一些,所以Intel的P4主频提高非常迅速。

这种架构的缺点是,因为流水线太长,如果中间有一步发生错误,只有到最后一个工序才能发现。虽然这种错误几率很小很小,但是不可避免,而且会被非常高的主频放大无数倍,带来的影响就是工作效率并没有随着节奏的加快而明显提升,也就是Intel“高频低能”的原因之一。Intel的Pentium M系列就没有采用这种架构模式,而是采用类似AMD的短管线多管线模式。

AMD:拥有较多的流水线,就是说,生产线较多,但是每条生产线的长度较短。带来的影响是,在短生产线上装备一辆汽车的话,每个工序需要干的活比较多,所以大家工作的节奏就不能太快。所以AMD的主频提高非常困难。可是AMD较多的流水线同样保证了指令执行数量,也就是装配汽车的数量,效率较高。短的流水线受工序错误的影响也很低,因为流水线短,发现错误会更及时。主频低,错误率被放大的也小。

CPU的主频

CPU的主频相当于流水线工作的统一干活节奏。你可以想象成主频就是干活时候喊的号子,大家都跟着号子一步一步的干活。

描述主频的单位:

MIPS(Million Instruction Per Second)表示CPU每秒执行多少百万条指令。比如0.9MIPS,表示每秒九十万条指令。

MIPS/MHz表示CPU在每MHz的运行速度下可以执行多少个MIPS,如0.9MIPS/MHz则表示如果CPU运行在1MHz的频率下,每秒可执行90万条指令。如果CPU在20MHz的频率下,每秒可运行1800万条指令。MIPS/MHz可以很好的反映CPU的速度。

ARM CPU 三级流水线(基于ARMV7)

计数器

3级流水线如上图所示(PC为程序计数器),流水线使用3个阶段,因此指令分3个阶段执行。

⑴ 取指-从存储器装载一条指令

⑵ 译码-识别将要被执行的指令

⑶ 执行-处理指令并将结果写回寄存器或者存储器

以前学过的51单片机,因为比较简单,所以它的处理器只能完成一条指令的读取和执行后,才会执行下一条指令。这样,PC始终指向的正在“执行”的指令。

而对于ARMV7来说因为是3级流水线,所以把指令的处理分为了上面所述的3个阶段。

所以处理时实际是这样的:ARM正在执行第1条指令的同时对第2条指令进行译码,并将第3条指令从存储器中取出。

所以,ARMV7流水线只有在取第4条指令时,第1条指令才算完成执行。

下图生动形象的说明了3级流水线的处理机制。

计数器

下面一句话很关键: 无论处理器处于何种状态,程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或者“正在译码”的指令

人们一般会习惯性的将正在执行的指令作为参考点,即当前第1条指令。

所以,PC总是指向第3条指令,或者说PC总是指向当前正在执行的指令地址再加2条指令的地址。

处理器处于ARM状态时,每条指令为4个字节,所以PC值为正在执行的指令地址加8字节,即是:

PC值 = 当前程序执行位置 + 8字节

处理器处于Thumb状态时,每条指令为2字节,所以PC值为正在执行的指令地址加4字节,即是:

PC值 = 当前程序执行位置 + 4字节

下面一个例子就很好的说明了这个问题。

  1. 0x4000 ADD PC,PC,#4 ;正在被执行的指令,将地址值PC+4写入PC
  2. 0x4004 ...;正在被译码的指令
  3. 0x4008 ...;正在被取指的指令,PC=0x4008
  4. 0x400C ...;PC+4=0x400C

另外补充说明就是根据以上描述,流水线只有被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅单周期指令)。

如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线被再次填满。因此,尽量地少使用跳转指令可以提高程序的执行效率。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分