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.
1. DDR随机访问会带来额外的开销,所以当你随机访问某个点周围的数据,可能会造成memory bank切换,这种访问比起连续访问开销要大很多
2. 你指cache吗,如果你开了cache,如果访问某个地址的数据,那么cache控制器会把整条cache line的数据搬移到片内的L1D cache中,随后的访问会直接从cache中取数据,而不是从ddr取
3.MSMC支持prefetch功能,这个和cache不太一样,MSMC控制器会假设你在做连续数据访问,会把额外的数据搬移到prefetch buffer中,之后的数据访问如果落到了prefetch 的数据,那么就直接从prefetch buffer中取数,如果不在prefecth bufffer中会导致prefetch miss,带来额外的开销
4. cache 和 prefetch都可以关掉,通常关掉prefetch,保留cache
5. 你的程序看起来是在做图像处理,通常有以下几种方法提高memory 访问效率:
a. 如果片内数据空间足够,那么用edma把数据搬到片内处理,或者把大块数据拆成小块数据搬到片内处理。
b. 打开访问空间的cache
c. 如果数据被反复使用,用instrisic 指令一次性load 多个字节,保证在处理的过程中尽量不需要重新读取新的数据,这样可以减少memory 访问。