本帖最后由 ast145 于 2016-1-4 22:25 编辑
在8位单片机时代,1个机器周期=12个时钟周期,只要查下汇编指令是几个机器周期就可以准确知道一条指令用时多少。但是现在用cortex M3微控器,以stm32f103 72M时钟频率为例,
while(i--);
//以下是反汇编
22: while(i--);
0x0800B7DA BF00 NOP
0x0800B7DC 0001 MOVS r1,r0
0x0800B7DE F1A00201 SUB r2,r0,#0x01
0x0800B7E2 B2D0 UXTB r0,r2
0x0800B7E4 D1FA BNE 0x080
while(i--)反汇编之后有5条汇编指令,根据M3内核手册说明,用的是三级流水线,计算能力平均为1.25MIPS/MHz,现在我有个问题,1.25MIPS平均计算能力是以汇编指令还是C语言指令统计的?采用的是三级流水线模式,应该是取指,译码,执行三级流水操作,这里有个问题,就是每一级流水级周期是一个时钟周期呢,还是一个机器周期呢?在cortex m3系列里面,有四轴飞行器器周期的概念?如果有,一个机器周期相当于几个时钟周期呢?在网上查了许多资料,不过说的都是似是而非!
|