|
板凳
楼主 |
发表于 2018-11-14 15:29:56
|
只看该作者
公司原程序是c6416基于裸机开发的,移植到c6678上是基于sysbios的。
为了提高运算速度我做了以下工作:
1、数据存储位置
将常用的数据都存储在L3内存中(由于数据量比较大L2放不下,我准备优化一下代码,把一些数据放在L2中,我觉得这样会快一些)。程序段也放在了L3中。
2、使能cache
L1P、L1D和128k L2配置为cache,代码如下:
{
cacheSize.l1pSize = Cache_L1Size_32K;
cacheSize.l1dSize = Cache_L1Size_32K;
cacheSize.l2Size = Cache_L2Size_128K;
Cache_setSize(&cacheSize);
Cache_setMar((Ptr *)0x0c200000,0x00200000,Cache_Mar_ENABLE |
Cache_PFX); // L3开启缓存和预取
Cache_setMar((Ptr *)0x90000000,0x10000000,Cache_Mar_ENABLE |
Cache_PFX);// DDR3开启缓存和预取
}
我很奇怪的是使能或不使能L3、DDR3缓存计算时间是一样的,好像Cache_setMar这个操作没起作用!这可能是什么原因导致的呢?
3、对于算法时间的测试方法
{
TSCL=0; TSCH=0;
t1 = _itoll(TSCH,TSCL);
程序段;
t2 = _itoll(TSCH,TSCL);
time = (t2-t1)/1000.0; // us 不考虑_itoll运算时间
} |
|