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

C6678多核通过EDMA访问DDR3速率问题

您好:

最近在测试C6678多核同时访问DDR3时传输带宽,使用EDMA访问。

EDMA每次传输20000*8Byte,传输256次,测试传输时间。用传输字节数除以传输时间即为传输带宽。

当用单核访问时,测得传输带宽为8.5GB/s,基本接近DDR3的访问速率10GB/s。

当用多核访问时,使用core1、core2、core3传输,EDMA每次传输20000*8Byte,每个核传输256/3次,这样测得的core1的速率为7.5GB/s,core2速率为3.2GB/s,core3速率为3.2GB/s。三个核合计带宽为13GB/s,超过了DDR3的最大传输带宽10GB/s,请问,这是正常的吗?如果不正常,可能的原因是什么呢?

已知三个核的EDMA通道分别为1、2、3,队列为0、1、1,每个通道对应不同的param set。

当改变三个核的队列号时,测得会传输带宽会发生改变

Shine:

应该不会超过DDR3总宽,请看附件throughput performance文档。

5.6 Scenario 6: EDMA Transfer From Different CorePac L2 to DDR3Throughput Performance Guide for C66x KeyStone Devices (Rev. A).pdf

xiaoyan Bian:

回复 Shine:

非常感谢您,但是我不清楚我的测试代码有什么问题导致这样的结果,能帮忙看一下吗?

下面是三个核同时运行以下代码,得到传输时间,再用传输数据量/传输时间得到带宽。

prt_eachcore = PRT_NUM/corenum;

         add_addr = (DNUM-1)*prt_eachcore*disdot*8;

        

         start_time_Ali = C6678_Timer8_SystemTime_Get(); //开始计时

 

         //core1,core2,core3同时读取,通道号分别为1,2,3,队列号为0,1,1

         for(j=0;j<prt_eachcore;j++)

         {

                   EDMA_2D(DNUM>>1, DNUM,\

                                     1, 0, DNUM+1,\

                                     1, 0, 4,\

                                     (unsigned int)(DDR_OrigData1+add_addr+j*disdot*8), (unsigned int)MSMC_ADDR_CORE,\

                                     disdot, 8,\

                                     disdot, disdot);        

        

                   EDMA_wait_over(DNUM); //等待传输结束

         }

         end_time_Ali = C6678_Timer8_SystemTime_Get() ; //结束计时

         end_time_Ali = (end_time_Ali – start_time_Ali);

         timeuse = end_time_Ali/1e6;

Shine:

回复 xiaoyan Bian:

请用TSCL, TSCH寄存器计算指令执行时间比较准。

xiaoyan Bian:

回复 Shine:

您好,感谢您的回复,我用TSC测试了,结果和timer测试结果一样,应该不是这个时间测试的问题,而且测试过程中发现有的时候测试时间基本平均分配,总带宽正常,有的时候又不正常,搞不懂了,还有点随机性

赞(0)
未经允许不得转载:TI中文支持网 » C6678多核通过EDMA访问DDR3速率问题
分享到: 更多 (0)