c6678加入链接库deplib.a66,测试函数dspf_sp_fft_SPxSP,有如下问题
1. 在simulator环境下,测试出的周期数和dsplib手册上的基本一致,例如8192点FFT需要88289 始终周期
但是在开发板上使用emulator运行时,效率下降很严重。 仍然以8192点为例,L1全设为CACHE,L2设256KBCACHE
此时将FFT输入输出旋转因子都放在L2里,需要254933个周期。都放在MCSM需要295429个周期。都放在DDR3中要274579周期。
这是CACHE未命中miss导致的么?如何避免这的周期浪费,最大化FFT效率。
2.输入参数中的 brv[4]是什么意思,有什么作用。
3.输入输出数组定义时都有Xi[M+2*PAD] 这里的PAD是什么意思有什么作用。
4.如果我需要8个核同时运行FFT。对存在MCSM中或者DDR3的数据进行运算,再将结果存回MCSM或者DDR3去。
例如核0做 x[0]~x[8191]的FFT 核1做x[8192]~x[16383] 以此类推。
那么在他们同时对MCSM或者DDR3存取数时会不会有访问冲突。
怎么安排8核同时进行FFT运算效率比较高
5. 如果用EDMA3 的TCPP0 将数据从DDR3导入MEM或者L2 速度有多快
问题问的比较多,麻烦专家耐心解答一下,谢谢。
Richard Zhang:
回复 Andy Yin1:
谢谢回答。再确认几个问题。
1.调用库函数时,我应该在工程中加入库函数源程序,还是使用连接库deplib.a66或deplib.ae66。这两种方式效果是否一样
2.您提到的多核可以同时访问共享memory时指MCSM吗,是否包括DDR3。可以同时去共享memory取数,可以同时写入数据么?
3.从软件上避免数据访问冲突是指多核可以访问不同的bank,还是说分时间访问共享memory。
Andy Yin1:
回复 Richard Zhang:
您好,
1. 效果是一样,建议加入lib;
2. 包括DDR3,读写均可。
3. 均可。
Yu Liu:
回复 Andy Yin1:
Richard,
从你的数据LL2情况下和simulator增加了三倍的开销,感觉高了一点。请确认L1P、L1D cache打开设置为最大,代码和数据全部都要在LL2,可以提供map我们一起看看。同时确保链接同样的库。
另外,你的测试cycle只是包含调用的TI库函数的开销还是有别的东西?
谢谢!
Richard Zhang:
回复 Yu Liu:
只包含TI库函数。工程传上来了,请帮忙看下,为什么运行速度这么慢,因为数据量大,放在了MCSM上,放在LL2里速度差不多。
Yu Liu:
回复 Richard Zhang:
还没时间看你的工程。下面是FFT文档包含硬件上的测试数据供参考。
www.ti.com.cn/…/getliterature.tsp
Ryan KU:
回复 Richard Zhang:
Richard Zhang 您好:
基你提供的工程,我也测了下FFT的效率,在Simulator下结果与手册相近,Emulator条件下时钟周期稍大些,
我尝试着将CCS中的DSPF_sp_fftSPxSP例程加入cache,包括
#include <c6x.h>
#include <csl_cacheAux.h>
#include <csl_cache.h>
CACHE_setL1PSize (CACHE_L1_MAXIM3);
CACHE_setL1DSize (CACHE_L1_MAXIM3);
CACHE_setL2Size (CACHE_256KCACHE);
printf ("Core 0 : L1P cache size %d. L1D cache size %d. L2 cache size %d.\n",CACHE_getL1PSize(), CACHE_getL1DSize(), CACHE_getL2Size());
等指令,但是运行后还是未加cache的结果,时钟周期数很大,跟你给的工程测得结果不一样,不知还需在工程中做哪些修改
刚接触Cache相关的知识,还望不吝赐教!
谢谢!
Ryan KU:
Richard Zhang 您好:
我基于您所提供的工程修改CCS中的例程,但一直未能实现cache的优化,能否留下工作邮箱用以交流6678的学习心得,最近要给出6678FFT/IFFT vecmul matrix相关运算的实测报告,还请指教如何进行相关工程配置。
我的邮箱hafeigu_2006@126.com
谢谢!
Richard Zhang:
回复 Ryan KU:
我的邮箱是
chuan_zy@126.com
有什么问题可以共同探讨