ARM——三级流水线结构,以及PC指针

    首先科普几个概念:

    MIPS——Million instruction Per Second 每秒多少百万条指令,比如0.9MIPS,表示每秒90万条指令。

    MIPS/MHz表示CPU在1MHz的运行速度下可以执行多少个MIPS,比如0.9MIPS/MHz表示如果CPU运行在1MHz的频率下,每秒可执行90万条指令.

    这两个概念常用作描述ARM类的CPU执行速度,比如STM32F103ZET6的参数是1.25 DMips/MHZ,CPU的最高频率为72MHz,也就是说CPU满负荷运行时,速度为 72*1.25 = 90MIPS,也就是1秒可执行9000万条执行,非常非常快。

    ARM7处理器使用了3级流水线来增加处理器指令流的速度,其细节如下图所示:

   

    分别为:取指令、译码、执行。

    所以处理时实际上是这样的:ARM正在执行第1条指令的同时,就对第2条指令进行译码,并将第3条指令从存储区中取出,这个可以理解为CPU有2只手,大脑在执行(EXECUTE)动作时,一只手已经对下一条指令进行译码,同时另一只手已经在取第三条指令了。这样源源不断的,让大脑可以一直处于执行状态。

    ARM7三级流水线示例:

    

    从上图可以看到第一条指令:

    

add r0,r1,#5
    在执行第一条指令的时候,其实PC已经自动指向了第3条指令,或者说PC总是指向当前指令地址再加2条指令的地址。 
cmp r2,#3

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

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



猜你喜欢

转载自blog.csdn.net/u012351051/article/details/80898085