1.对指针使用restrict来限定memory访问,可以减少pipe

2.improve the balance of resources提高资源平衡,A-side和B-side,因为C6000有两个.D单元和两个.T地址路径,在任何给定的循环(A侧和B侧)上都可用,所以编译器必须在一侧(A侧)对至少两个操作进行分区,使用#pragma MUST_ITERATE(min, max, multiple);来强制迭代

注意事项:

#pragma MUST_ITERATE(5) = #pragma MUST_ITERATE(5, , 5)

#pragma MUST_ITERATE(min, max, multiple)中min必须大于等于max,否则迭代不展开,multiple必须能被min整除,否则迭代不展开

3.The C62x fixed-point device loads and/or stores 32 bits every cycle. In addition, the C67x floating-point and C64x fixed-point devices load two 64-bit values each cycle.

也就是说,C67x可以加载每周期加载64bit,也就是8字节=2个浮点
使用

By asserting that xptr and yptr addresses anded with 0x3 are equal to zero,the compiler knows that they are word aligned

#define WORD_ALIGNED(x) (_nassert(((int)(x) & 0x3) == 0))
对齐语句来对齐

#define WORD_ALIGNED(x) (_nassert(((int)(x) & 0x3) == 0))
void lesson3_c(short * restrict xptr, short * restrict yptr, short *zptr,
short *w_sum, int N)
{
int i, w_vec1, w_vec2;
short w1,w2;
WORD_ALIGNED(xptr);
WORD_ALIGNED(yptr);
w1 = zptr[0];
w2 = zptr[1];
#pragma MUST_ITERATE(20, , 2);
for (i = 0; i < N; i++)
{
w_vec1 = xptr[i] * w1;
w_vec2 = yptr[i] * w2;
w_sum[i] = (w_vec1+w_vec2) >> 15;
}
}
#pragma CODE_SECTION(sp_bull_move, "Code_AEE");
void sp_bull_move(const float * x, float *restrict y, const int n)
{int i;_nassert((int)x % 8 == 0);_nassert((int)y % 8 == 0);_nassert(n % 4 == 0);_nassert(n > 0);#pragma MUST_ITERATE(4,,4)  //优化修改for (i = 0 ; i < n; i += 4){_amemd8(&y[i]) = _amemd8_const(&x[i]);_amemd8(&y[i+2]) = _amemd8_const(&x[i+2]);}
}

4.使用op3优化等级

5.Writing Linear Assembly写汇编,没搞懂怎么写优化

C6000系列DSP优化总结相关推荐

  1. TI的C6000系列DSP,flashboot的实现

    所谓的flashboot就是将用户主程序烧写至flash片中,然后加电开机实现主程序的自动载入和启动过程.关于程序对flash的烧写本文不做讨论,主要是熟悉flash芯片的一些参数.烧写规则,以及存储 ...

  2. C6000系列DSP的内联函数

    在c中,为了解决一些频繁调用的小函数大量消耗栈空间或是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数数.栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限 ...

  3. TMS320 C6000系列 DSP之 CCS5.5 仿真调试

    操作系统: Win7 64bit 仿真器: SEED-XDS560 Plus 开发环境: CCS 5.5 目标处理器: TMS320 C6748 ########################### ...

  4. 【DSP开发】C6000非多核非KeyStone系列DSP中断系统

    C6000系列DSP的中断系统 上一篇介绍了C6455的GPIO系统,最后把GPIO4配置成了中断/事件模式,本文将介绍C6455的中断系统,介绍完基本概念后,给出把GPIO4映射到INT4的代码. ...

  5. TI公司三大系列DSP内部结构之比较

    一引言 DSP有两种解释:一种是数字信号处理器(Digital SignalProcessor),也称数字信号芯片:另一种是数字信号处理技术(Digital Signal Processing).我们 ...

  6. C6000 DSP优化技术入门

    参考资料 SPRU198K-TMS320C6000 Programmer's Guide SPRUGH7-TMS320C66x DSP CPU and Instruction Set Referenc ...

  7. CCS5连接调试C64X系列DSP核

    CCS从3.3改版为5.X之后,CCS 变化很大.DaVinci芯片中DSP的调试步骤也不同了.这里介绍下在CCS里如何调试DaVinci的DSP核心 1. 创建CCS V5版本的project 本人 ...

  8. TI DSP TMS320C66x学习笔记之DSP优化经验

    此文是在http://blog.csdn.NET/guanchanghui/article/details/1181851基础上,通过自己的学习理解修改而来.暂且算作是自己的原创吧.如有侵权,联系,立 ...

  9. TI DSP TMS320C66x学习笔记之DSP优化经验(八-1)

    此文是在http://blog.csdn.net/guanchanghui/article/details/1181851基础上,通过自己的学习理解修改而来.暂且算作是自己的原创吧.如有侵权,联系,立 ...

最新文章

  1. SQL Server 性能基线和监控
  2. C语言sopc蜂鸣器按键弹奏中音,基于sopc 蜂鸣器
  3. CA/TA通信的share memory设计思想解读
  4. [BZOJ3944] Sum
  5. Window10:不能建立到远程计算机的连接。你可能需要更改此连接的网络设置。
  6. HDU-2159 FATE 二维背包
  7. [css] font-style的属性有Italic和oblique,两者有什么区别呢
  8. mysql left 数学原理,MySQL全面瓦解21(番外):一次深夜优化亿级数据分页的奇妙经历...
  9. [转]C++类成员修饰const和mutable
  10. 神威计算机主板型号,十代酷睿高端型Z490主板曝光 总线规格依旧是PCIe 3.0且USB接口并不支持USB 3.2...
  11. 【PostgreSQL-9.6.3】数据表操作语句
  12. 【NOIP2013提高组】华容道
  13. 《丁丁历险记系列之委托》-- 摘自http://www.cnblogs.com/xfxxx/archive/2010/04/03/1703839.html...
  14. uniapp h5 小程序点击按钮将图片保存到本地
  15. 实现原理 扫描枪_条码扫描枪的工作原理
  16. echarts踩坑记录---仪表盘设置仪表盘的位置
  17. Outlook 与企业微信邮箱通讯录同步
  18. 1040 有几个PAT (25分)
  19. win10进入不了系统修复方法
  20. java:布局方法(网格布局)

热门文章

  1. 模糊的正确和精的错误
  2. 阿里大数据之路问道(一)
  3. 网络爬虫---牛刀小试
  4. linux 页缓存 读写,实验5Linux文件操作之带缓存和非缓冲文件的读写(10页)-原创力文档...
  5. Jenkins集成Sonar Qube
  6. 八大内部排序+外部排序
  7. 真正的程序员 - 会心一笑
  8. PTA 一 愿天下有情人都是失散多年的兄妹
  9. 如何输出1到100的所有偶数?
  10. 微信小程序:纯头像微信小程序源码下载,多分类头像自动采集无需服务器和域名