最近在用memcpy发现源,目的地址如果是4字节对齐,或8字节对齐会产生巨大的速度差异, 请问下TI K2里面是怎么实现memcpy的, 有没有源码可以让我看一下?
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.
最近在用memcpy发现源,目的地址如果是4字节对齐,或8字节对齐会产生巨大的速度差异, 请问下TI K2里面是怎么实现memcpy的, 有没有源码可以让我看一下?
TI库中memcpy函数有两个分支,对于普通的memcpy采用字节拷贝,效率较低,对于4字节对齐的地址且拷贝数据长度超过28字节,采用for循环的方式搬移,效率会更优。根本原因是四字节对齐的数据搬移可以采用_amem4的指令来实现,而非四字节对齐的数据搬移只能用_mem4,执行效率有差异。
效率我没有具体比较过,应该能快不少吧,你可以自己写个小的测试程序测试一下。
对于一个变量强制其地址对齐的方法是在变量定义的前面加上如下的预编译声明
#pragma DATA_ALIGN(变量名,对齐长度)