您好~最近需要用6678实现一个工程,将一块大数据直接均分成8块,由8个核分别处理一块数据,核间不进行通信,数据是由EDMA从DDR3中传输到L2中进行处理,处理完重新传到DDR3中储存。单核跑这段程序时,时间可以满足要求,但是让8个核同时运行时,所需的时间却是单核跑这段时间的好几倍,完全满足不了要求。EDMA设置为8个通道,每个QUEUE进行处理了。我将处理的数据缩小一些后,八个核同时跑的加速比却是能接近8倍的。不知道是由什么原因引起的?希望专家们能指点下~
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.
你所谓的1024个数据是指1024bytes吗?数据处理是否放在DDR3中的,L2cache有没有开?
L2 CACHE LINE SIZE 刚好是128 bytes,如果你开了L2 cache,那么每个core处理的128bytes 数据全都会map进L2 cache,这样8个core的处理 互不影响。如果你的处理数据大于一个cache line,那么每次读取实际内容都需要从DDR3中读取,这样8个core 并行处理,如果访问的目标数据在一个bank中,由于bank confliction,对整体性能就会有较大的影响
如果在各自的L2中不会有什么冲突。数据处理如果有共享的,需加上cache 一致性维护