大家好,最近遇到奇怪的问题,
之前用SEED6437 做视频开发,视频处理速度为7帧每秒,DM6437的主频为600MHZ,
但是随着代码量增大,6437的L2只有128KB,有点力不从心了。
于是升级选用DM6467t,双核,DSP端主频1G,DDR速度300Mhz,
把程序移植到DM6467t后,发现速度只有2帧每秒!!!
最后发现是一个主要算法执行函数很费时间,而6437明显执行要快,
编译器的优化等级都是2,
找了好久没有找到问题所在?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好,
DM6467t的DDR时钟可以到400Mhz(支持DDR-800),不知道你说的300Mhz是否是DDR的时钟频率。无论如何也是可以提高的。
我对比例一下DM6467的L1D比DM6437是要小点的。请问你的L2是否有配成部分cache?你是否有比较过cache的命中率?
L1D CACHE的大小只是影响系统性能的一个指标。取决于函数的大小,如果算法关联度很高的函数加起来一次性无法放入L1D,就可能导致频繁的换页,L1D miss。这个可以通过profile来看。
下面是C6000 DSP优化的wiki,供参考:
http://processors.wiki.ti.com/index.php/Optimization_Techniques_for_the_TI_C6000_Compiler?keyMatch=optimization%20COMPILER&tisearch=Search-EN-Everything
谢谢您的回复,
我的一个图像处理主函数很大,大约2000行。整个工程更大,仅仅.text段大约有80KB
1、L1D是否会放不下这个函数,导致程序变慢?
2、我把L2配置成部分cache是否可以行,解决运行速度慢的问题?
3、L2中 cache和SRAM 是怎么排列的?我的意思是CMD文件中SRAM地址如何分配,L2中首先是cache还是SRAM?
我分配64KB的SRAM和64KB cache, 下面哪种方式对呢?
DSP_L2: o = 0x00818000 l = 0x0000FFFF /* 64 kB DSP L2 RAM 64KB CACHE */
或者
DSP_L2: o = 0x00828000 l = 0x0000FFFF /* 64 kB DSP L2 RAM 64KB CACHE */
4、还有一个问题是关于MAR寄存器,我没有使用这个寄存器,他的作用是啥?
谢谢