首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM7各种指令的周期数

ARM7各种指令的周期数

ARM7具有3级流水线结构(取指、译**、执行),对大多数指令来说每条流水线的处理都是单周期的,不过某些情况下,取指和执行的周期数会延长,导致流水线进入stall状态,指令执行时间超过1个周期。
经过在LPC213x/214xNXP ARM7TDMI-S)上的试验,得出各类指令的执行周期数如下:

1
、大部分算术运算和逻辑运算指令都是单周期的(乘法例外)。

2
STR指令需要增加1个总线周期。如果地址位于内部SRAM,则是2个周期;如果地址位于AHBVPB等外设总线上(例如访问外设的寄存器),由于局部总线和外设总线桥接还有额外延时,因此需要再增加一些周期数,在LPC213x/214x上,当VPB和主频相同时,需要再增加5个周期额外延时,即用STR指令访问外设寄存器需要7个期。

3
LDR指令需要增加2个总线周期。同理,如果地址位于内部SRAM,则是3个周期;如果地址在外设总线上,同样需要再增加一些周期数,在LPC213x/214x上,当VPB和主频相同时,LDR指令需要8个周期。

4
、对于一次**作多个寄存器的STMLDM类指令,指令周期数与STRLDR类似,但每增加一个寄存器需要增加一个总线周期,例如当地址位于内部SRAM、寄存器个数为N时,执行周期数为1+NSTM)和2+NLDM)。

5
、无条件跳转语句和跳转语句成功跳转,需要重新填充流水线,因此至少需要3个周期(假设访问程序存储空间是单周期的)。

6
LDR指令的目标寄存器为R15PC)时,相当于读总线+跳转,至少需要5个周期(假设访问程序存储空间是单周期的)。

7
、乘法指令根据**作数位数的不同,从2-5个周期都有可能。

8
、对于所有的带条件的指令,如果条件不满足,指令不被执行,都只需要花1个周期来跳过该指令。

9
、实际应用时,还需考虑程序存储器的访问速度(影响流水线取指阶段的周期数)以及Cache的命中情况
返回列表