码迷,mamicode.com
首页 > 其他好文 > 详细

优化 --cache

时间:2014-07-19 16:22:59      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   文件   

注意:配置成cache的地址段就不能再放入data and code,因为链接的时候,是不包含cache地址段的,如果想使用L1DSRAM或L1P SRAM,则应该相应减小cache段大小。

1:Keep critical code and data on-chip
2:Put non-critical code and data off-chip

#pragma CODE_SECTION(code, “section”);    //将代码数据指定段

#pragma DATA_SECTION (symbol, “section”);    //将数据指定段

#pragma DATA_ALIGN(InBuffA, CACHE_L2_LINESIZE)  //buffer按L2 cacheline对齐,并保证其为cachelines size的整数倍

 

应用级优化 (application-level optimization)
1) 合理设置cache大小,尽量将DMA用到的buffer开在片内RAM上
2) 将一般性程序代码和数据放到片外RAM,将DSP型代码和数据放到L2RAM。所谓一般性代码是指带有很多条件分支转移的指令,程序执行在空间上有随意 性,不利于流水线的形成,外在片外可以发挥L2CACHE 4 way的优势。DSP型代码是指算法型的代码,放在L2RAM,CPU stall 时间少,可以充分发挥DSP速度快的优势。
3.2 程序级优化(procedural-level optimization)
1)选择合适的数据类型。能用
short就不要用int。
2)将同一个函数要处理的数据尽量在内存中连续存放。
3.3避免L1P read miss
这种情况发生在一个循环体中有两个或以上的函数要执行,要利用#pragma DATA_SECTION伪指令将和CMD文件将其在内存中相邻定位,这样不会发生两个程序对应L1P中相同
line所造成的冲突缺失。
如果循环体中的两个函数大小超过L1P容量,将这两个函数分别放到两个循环体中。这样做会造成中间数据变量的加大。
3.4避免L1D read miss
利用#pragma DATA_SECTION伪指令将函数要同时处理的数组在内存中相邻存放。最好再用#pragma DATA_MEM_BANK 将数组内存对齐

 

Tell Compiler more information

#pragma MUST_ITERATE(min, max, multiple);

放在循环体之前,告知循环次数,改善软件流水

其中multiple参数必须有,循环执行次数必是multiple的整数倍。这个信息对编译器使用软件流水技术非常重要

_nassert((int)x % 8 == 0);

是个断言语句。对条件进行判断,如果为1,通过,为0,则抛出异常

bubuko.com,布布扣

优化 --cache,布布扣,bubuko.com

优化 --cache

标签:style   blog   http   color   使用   文件   

原文地址:http://www.cnblogs.com/ldjrl2013/p/3854054.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!