ARM7架构做一次32bit乘法要多少单周期乘法?

ARM7具有3级流水线结构(取指、译码、执行)对大多数指令来说每条流水线的处理都是单单周期乘法的,不过某些情况下取指和执行的单周期乘法数会延长,导致流水线進入stall状态指令执行时间超过1个单周期乘法。 
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的命中情况

}

ARM7具有3级流水线结构(取指、译码、执行)对大多数指令来说每条流水线的处理都是单单周期乘法的,不过某些情况下取指和执行的单周期乘法数会延长,导致流水线進入stall状态指令执行时间超过1个单周期乘法。 
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的命中情况

}

ARM7具有3级流水线结构(取指、译码、执行)对大多数指令来说每条流水线的处理都是单单周期乘法的,不过某些情况下取指和执行的单周期乘法数会延长,导致流水线進入stall状态指令执行时间超过1个单周期乘法。 
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的命中情况

}

我要回帖

更多关于 单周期乘法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信