ARM技术论坛
直播中

向日葵的花季

8年用户 1144经验值
擅长:电源/新能源
私信 关注
[经验]

ARM7使用3级流水线来增加处理器指令流的速度

首先科普几个概念:
    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级流水线来增加处理器指令流的速度,其细节如下图所示:
1.jpg
分别为:取指令、译码、执行。
    所以处理时实际上是这样的:ARM正在执行第1条指令的同时,就对第2条指令进行译码,并将第3条指令从存储区中取出,这个可以理解为CPU有2只手,大脑在执行(EXECUTE)动作时,一只手已经对下一条指令进行译码,同时另一只手已经在取第三条指令了。这样源源不断的,让大脑可以一直处于执行状态。
    ARM7三级流水线示例:
2.jpg
  从上图可以看到第一条指令:
add r0,r1,#5
    在执行第一条指令的时候,其实PC已经自动指向了第3条指令,或者说PC总是指向当前指令地址再加2条指令的地址。
cmp r2,#3
    处理器处于ARM状态时,每条指令为4个字节,所以PC的值为正在执行的指令地址加2*4=8个字节,即:
    PC值 = 当前程序执行位置 + 8字节

原作者:猪哥-嵌入式

更多回帖

发帖
×
20
完善资料,
赚取积分