您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> DSP >> Blackfin >> 正文
  ADSP-BF609 乘除运算需要的周期数及测试方法           ★★★ 【字体:
ADSP-BF609 乘除运算需要的周期数及测试方法
作者:逸风    文章来源:逸风    点击数:    更新时间:2014-6-30    

1 cycle = 1/主频;当BF609运行在最高主频500MHz时,1 cycle = 2ns;
需要说明的是:DSP是流水线指令,同样的运算,放到代码的不同位置,测得的时间不完全相同,看编译效果;
1.完成1次常量的乘法:6 cycles;  例如:14.05 * 177777777.888888888;
2.完成1次常量的除法:10 cycles;例如:14.05 / 177777777.888888888;
3.完成1次变量的乘法:72 cycles;例如:float i * float k ;
4.完成1次变量的除法:251 cycles;例如:float i / float k ;
5.完成变量的乘除法:  317 cycles;例如:float i * float j  / float k ;


测试方法:
CCES提供代码运行周期数的测试函数,
#include <adi_types.h>
#define PROFBEG(TAG)    asm volatile("%0=cycles;" : "=d"(TAG.nCycles))
#define PROFEND(TAG)   asm volatile("r0=cycles; %0=r0-%0; %1=%0+%1;" : "+d"TAG.nCycles), "+d"TAG.nSum)::"R0")
typedef struct
{
    uint32_t    nCycles;
    uint32_t    nSum;
} prof_t  goProfile;
PROFBEG(goProfile);  //在需要测试的代码前加PROFBEG()
Result = 14.05/177777777.888888888;
PROFEND(goProfile);  //在结束点加PROFEND()
printf("[CORE 0]1: need cycles = %d!\n",goProfile.nCycles);

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    bf609-ezkit移植uclinux(以…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61 湘ICP备13001086号-2