大家好,想问个6474的问题:
核1,核2来不断的计算,核1,核2都在自己的L2空间里开辟512KB的乒乓buffer.
数据源是由核0来提供,每次核0都把数据源放到核1,核2的固定L2空间,
能不能做到核0把256KB数据,存储到核1的L2RAM,同时把256k的数据搬移到核2的L2ram。
。即核1,核2同时收到核0的数据呢?就是怎么处理这里面的先后问题?
还有就是核0把核内空间256KB的数据搬移到核1的空间,那么这个搬移要花费多少clock?这个是怎么计算的呢?
另外核0如果把256K数据搬移到DDR,这个搬移的过程要花费多少clock?又是怎么计算的?
核0如果把核1的RAM空间里的数据搬移到DDR,这个时间是怎么算的呢?
2:核1,核2,处理完256KB数据后,还要把处理后的结果存到DDR里面。这个工作是交给核0去做呢?还是核1,核2,处理完后,就接着用DMA
把数据放到DDR里?我认为处理完后交给核0去做,可以提供效率,那么核1,核2就可以处理另外一块buffer里的数据。不知道
这样理解对吗?
3:我这样对三个核的分工方式合理吗?谢谢,
Andy Yin1:
您好,
根据你的描述简化一下相应的数据流向:数据从core0的L2过来,送到core1及core2处理后,处理结果再统一存到DDR。我的疑问及建议:
1. core0上的数据是从哪里送进来的,即真正的数据源是什么?
2. 为了简化数据的搬移,可否直接将外面过来的数据直接放到每个处理core的L2,处理的结果直接送出去,或者先放到L2再通过EDMA的方式合成在一起往外送,而不需要向你那样浪费core0只是用于数据的搬移。
3. 如果外面的数据不能直接放到每个处理core的L2,建议可以先放在每个共享memory,然后启动多个EDMA Channel将数据分发到每个core L2上,处理完后再通过EDMA合成到共享memory。
你上面提到的数据搬移的耗时,与搬移使用的方式,及cache的配置是有关的,对于你这种大数据快的搬移建议使用EDMA,并且尽量让后面数据块的EDMA搬移与前面EDMA的处理能够并行,这样就能节省数据搬移的时间。
建议看一下多核编程的相关手册:http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=sprab27b&fileType=pdf
jian zong1:
回复 Andy Yin1:
1:真正的数据源是由核0,转发FPGA的数据到DDR,因为DDR必须把256M数据装完之后。DSP才能处理这256M的数据。不能把核0转发的数据,直接送到核1,核2。
2:256M数据量太大,分块处理,每次取出128KB,到核1,核2的L2(平均分)。核0还要负责计算出核1,核2要用的系数。所以每次都要把256KB的系数用DMA放到 核1,核2的L2,供核1,核2直接使用。
3:共享MEMORY只有1M的空间,那从DDR取出的128K,是先放到共享的空间,然后再把128K分两路,用DMA方式,启动两个channel,分别送到核1,核2的L2。 是不是核0如果要给其他的核内送数据,一定要把要搬移的数先放到共享空间,才能实现把数据搬移到核1,核2的L2空间?? 如果这样,那么核1核2处理完后,也是一定要把数据先放到共享空间后,核0才能,把共享空间的数据送回到DDR吗?还是说这样可以节省DMA搬移的时间?