烦请TI工程师、论坛大神解惑:
在ccs5.4版本下,使用TI 6678芯片。程序相关配置如下:
1.单核core0处理,且代码都放在LL2
2.cache开辟情况如下:
L1P为32K,LID为32K,L2为128K
3.编译器优化-o3
分别采用11×1模板、1×11模板处理640×512的图像,每个像素占2个bytes。(处理方式为求极大值)。
其中11×1模板编译整幅图像求极大值需耗时2.57ms左右,1×11模板遍历整幅图像求极大值需耗时0.98ms左右。
相应的源代码及汇编头文件见附录。
那么我的问题来了(= – =):
1.两种不同处理方式耗时的如此大差异的原因是因为11×1模块处理时取指次数太多造成的?
如果是,是因为DSP硬件结构、指令周期决定的?如果不是,又是什么原因?
2.如附录代码所示。这样操作像素点是否恰当?是否还有更好的方式?
3.如果在不更改算法的条件下,可有什么巧妙的方式规避这种耗时的操作?
4.参考了相关优化资料,这般使用内部函数、编译器指令使用是否恰当?
优化无止境啊,小白还烦请TI工程师、论坛大神指教一二,万分感激!
yue li2:
汇编头问价如附录所示
yue li2:
回复 yue li2:
我问错了地方么 ?
Shine:
回复 yue li2:
先看看这些优化文档。 http://www.ti.com/lit/an/sprabg7/sprabg7.pdf http://www.ti.com/lit/an/sprabf2/sprabf2.pdf http://processors.wiki.ti.com/index.php/TMS320C6000_DSP_Optimization_Workshop
或者把image拆分到多核并行执行。http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Image_Processing_Demo
yue li2:
回复 Shine:
谢谢Shine zhang的建议。
这些文档都看过了,按文档的要求在complier优化的时候做了很多改动,效果不明显。
因为整个算法比较繁杂,也只能做成多核。
还有一个疑问:
1.6678的做图像处理 取数时,横向取数为什么会比纵向取数少如此多的cycles?我也只知其然,不知其所以然。