TI中文支持网
TI专业的中文技术问题搜集分享网站

求教大神 6678的存储器问题

问题背景:我用a[10][402][902]表示三维空间的情况,程序需要反复的随机的访问一个点周围6个点的数据,程序执行缓慢

问题1 速度瓶颈是不是在cpu访问ddr3上?
问题2 cpu访问ddr3是否用的预存预取技术?
问题3 cpu访问4M共享sram是否用预存预取技术?
问题4 预存预取技术有办法取消么?
问题5 有什么办法提高程序运行速度?

Zhan Xiang:

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 访问。

ying jiang:

回复 Zhan Xiang:

5-a的解答中片内指的是msmc还是ll2还是l1d 如果是msmc那么我将prefetch关掉是不是就可以了

赞(0)
未经允许不得转载:TI中文支持网 » 求教大神 6678的存储器问题
分享到: 更多 (0)