微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > 嵌入式系统设计讨论 > FPU计算测试-----与FSL K64对比

FPU计算测试-----与FSL K64对比

时间:10-02 整理:3721RD 点击:
TG401是与飞思卡尔的k64都是M4内核,都具备到单精度的浮点运算单元------FPU,在进行浮点数据运算时,相较于M0+、M3核,有着巨大的优势。今天就来测试一下他们的FPU。首先,先看手册,TG401的主频是150MHz,而K64的标准主频120MHz,不出意外的话,计算速度是TG401领先。首先,在网上找了一个计算圆周率的函数,浮点运算,用来测试。

  1.     while(count--)//计算100次
  2.     {
  3.         float term=1.0f,sum=0.0f,pi;
  4.         int i=1;
  5.         do{
  6.             sum+=term;
  7.             i++;
  8.             term=1.0f/(i*i);
  9.         }while(term > 1e-12);
  10.         sum*=6;
  11.         pi=sqrt(sum);
  12.     }
  13.     time=start;
  14.     printf(" FPU_on: %d ms\n",time);//计算完毕,打印时间

复制代码

MDK5.14作为开发平开,代码优化等级均设置为Level 1,统一利用系统的systick来计时。
两款片子各计算100次,分不开启FUP和开启FPU两种情况,参看所需时间。结果如下:
可以看到,不开启FUP和开启FPU的计算时间,差距不止一点点


               


K64






TG401





还有一点要注意的是浮点运算单元只适用于单精度浮点(Float型)的运算,而对于double型就不管用。要是你语句中有a=a*1.2 这样的语句,这个1.2系统是默认定义为double型的,运算时按double型进行运算,再把结果转化成float,所以应写成 a=a*1.2f(将1.2定义为float型) 才行。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top