我用fread()函数从电脑硬盘上读取一幅图像数据,然后把图像数据等分六分,分别交给c6678的6个核来处理,我的想象是把图像数据放在SL2中要比放在DDR中效率要高很多,但是我发现效率没有任何提高,请问是怎么回事?
分配空间是这样进行的:
#pragma DATA_SECTION(img1, "image_1")
#pragma DATA_ALIGN(img1, 128)
int img1[640*100];
#pragma DATA_SECTION(img2, "image_2")
#pragma DATA_ALIGN(img2, 128)
int img2[640*100];
img1 ,img2。。。。。都是全局变量
其余4个核类似
然后用
image_1 > SL2
image_2 > DDR3
我多次运行发现无论放在SL2或DDR3中,对运行效率没有任何影响,
我想可能在以下3个环节有问题
1、通过fread()函数从电脑硬盘上读取图像的时候,应该是先把整幅图像读到DDR中,即使我用image_1 > SL2,实际上图像任然需要从DDR拷贝到SL2中,这个过程比较耗时,所以和image_2 > DDR3用时一样?
2、我从网上看需要把SL2映射到DDR3中,并且需要MSMC的内存设置为non-cacheable才行,请问怎么把SL2映射到DDR3,用MPAX怎么映射?
3、我的存放方法有问题吗,能使用image_1 > SL2这种方式吗?
Thomas Yang1:
请问您L2 CACHE 开了没有,如果开了,CPU CORE 访问SL2 和DDR3的路径都是通过 L1D CACHE- L2 CACHE – Share memory/DDR3, 您实测到的访问速度差不多有可能都是从CACHE中读到的