你好,
如题,
我们的算法在VC下已经优化到最优了,耗时最大的部分是内存赋值。现在以一个大约指令数为50M的mempy算法加到swosd的程序中,执行时间要12ms,请问,8168的DSP有没有专用的内存赋值,可以加快读写指令周期?
Chris Meng:
你好,
在DSP上如果是memcpy,建议使用EDMA来搬移数据。
Ali wang:
回复 Chris Meng:
你好,
首先谢谢您的回复!
但是由于我们的算法需要memcpy的数据不能以大块数据的形式搬移,只能点对点的赋值,或者说非常小批量的memcpy,我看到8168是基于VLIW的架构,可以使用字访问短型数据。
那么请问:是否可以在做memcpy时,利用超长指令字,将32个8位的数据同时读出来? 谢谢!
CVD:
回复 Ali wang:
这个和VLIW关系不大,主要由数据通路带宽决定。8168的DSP有两个D单元,每个单元一次最大可以进行8字节的读取,因此如果你要用DSP来搬运数据的话,最快速度就是一个周期搬运8个字节(一个D单元读,一个D单元写)。但是要注意要达到这个性能的话,你的源和目的地址都需要按8字节对齐,否则会出错。
另外一点是你的算法在VC下优化到最优,并不能说明在DSP下就无法优化了。事实上PC和DSP的处理器架构差别很大,因此在PC上的运行性能不能代表在DSP上的运行性能。
Ali wang:
回复 CVD:
谢谢,非常感谢您的认真回复,对我很有帮助,我再努力尝试!
CVD:
回复 Ali wang:
如果你确定需要使用DSP Core进行数据搬移,可以把你的详细需求告诉我,也许我可以帮你写一个函数。
Ali wang:
回复 CVD:
要不留个QQ吧,可以交流一下。qq:1043395298
CVD:
回复 Ali wang:
100264642