ARM7各种指令的周期数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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