|

楼主 |
发表于 2014-6-10 09:28:18
|
显示全部楼层
测试方法如下:
思路:用硬件定时器分别统计进行n次+ - * 运算所耗的时间,并通过仿真代码计算出进行n次运算在循环上消耗的时间(并保证一次运算由一条对应运算指令完成),两者相减得出真正的运算时间,最后得出指令周期,再反算出运行频率
结果:CPU 64M频率下,运算指令执行的频率却只有30M有30M
测试的时候,每种运算均运行10000次
符加法运算测试代码如下(其他的类似):
void Plus_test(uint16_t times)
{
uint16_t i;
uint32_t a=0,b=0,c=0,d=0;
uint32_t tick0_t,tick1_t;
//计时开始
tick0_t = TIM2->CNT;
for(i=0;i<times;i++) //40*times 测试
{
a++;b++;c++;d++;
a++;b++;c++;d++;
a++;b++;c++;d++;
a++;b++;c++;d++;
a++;b++;c++;d++;
a++;b++;c++;d++;
a++;b++;c++;d++;
a++;b++;c++;d++;
a++;b++;c++;d++;
a++;b++;c++;d++;
}
tick1_t = TIM2->CNT; //计时结束
printf("+ times = %d, use %d us, loop = %d \\r", 40*times,tick1_t-tick0_t,6*times);
} |
|