标题:
ARM7各种指令的周期数
[打印本页]
作者:
梦景
时间:
2011-9-30 23:21
标题:
ARM7各种指令的周期数
ARM7
具有
3
级流水线结构(取指、译
**
、执行),对大多数指令来说每条流水线的处理都是单周期的,不过某些情况下,取指和执行的周期数会延长,导致流水线进入
stall
状态,指令执行时间超过
1
个周期。
经过在
LPC213x/214x
(
NXP ARM7TDMI-S
)上的试验,得出各类指令的执行周期数如下:
1
、大部分算术运算和逻辑运算指令都是单周期的(乘法例外)。
2
、
STR
指令需要增加
1
个总线周期。如果地址位于内部
SRAM
,则是
2
个周期;如果地址位于
AHB
、
VPB
等外设总线上(例如访问外设的寄存器),由于局部总线和外设总线桥接还有额外延时,因此需要再增加一些周期数,在
LPC213x/214x
上,当
VPB
和主频相同时,需要再增加
5
个周期额外延时,即用
STR
指令访问外设寄存器需要
7
个期。
3
、
LDR
指令需要增加
2
个总线周期。同理,如果地址位于内部
SRAM
,则是
3
个周期;如果地址在外设总线上,同样需要再增加一些周期数,在
LPC213x/214x
上,当
VPB
和主频相同时,
LDR
指令需要
8
个周期。
4
、对于一次
**
作多个寄存器的
STM
、
LDM
类指令,指令周期数与
STR
、
LDR
类似,但每增加一个寄存器需要增加一个总线周期,例如当地址位于内部
SRAM
、寄存器个数为
N
时,执行周期数为
1+N
(
STM
)和
2+N
(
LDM
)。
5
、无条件跳转语句和跳转语句成功跳转,需要重新填充流水线,因此至少需要
3
个周期(假设访问程序存储空间是单周期的)。
6
、
LDR
指令的目标寄存器为
R15
(
PC
)时,相当于读总线
+
跳转,至少需要
5
个周期(假设访问程序存储空间是单周期的)。
7
、乘法指令根据
**
作数位数的不同,从
2-5
个周期都有可能。
8
、对于所有的带条件的指令,如果条件不满足,指令不被执行,都只需要花
1
个周期来跳过该指令。
9
、实际应用时,还需考虑程序存储器的访问速度(影响流水线取指阶段的周期数)以及
Cache
的命中情况
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0