搜索
bottom↓
回复: 15

数组定义在片内SRAM和片外SDRAM的差异有多大?

[复制链接]

出0入0汤圆

发表于 2016-10-13 16:59:21 | 显示全部楼层 |阅读模式
本帖最后由 zhyu 于 2016-10-13 17:13 编辑

开发环境是dsp 6713 +SEEDXDS510PLUS+CCS3.3
跑算法时,发现时间开销花在数组存取数据上。 暂不考虑数据结构问题,后续我改成了循环队列。
for(i=1;i<20;i++)
{
        Sxn[i-1]=Sxn;
        Sdn[i-1]=Sdn;
       
}
发现将数组Sxn和Sdn定义在片内SRAM和片外SDRAM中,花销的时间差3倍。SDRAM 频率100MHz,dsp主频 300MHz。
后来发现用CCS软仿,算法的耗时也一样。
具体情况如下:

一 数组定义在片外
.cmd:
MEMORY
{
        L2SRAM:        o = 00000000h        l = 00030000h  /* L2 SRAM 192k*/
        L2CACHE: o = 00030000h        l = 00010000h  /* L2 CACHE 64*/
        SDRAM:        o = 80000000h        l = 01000000h
}
SECTIONS
{   
   。。。。。。
     Audio_dat > SDRAM
}
main:
#pragma DATA_SECTION(Sxn, "Audio_dat")     
short  Sxn[20];  //外部噪声信号
#pragma DATA_SECTION(Sdn, "Audio_dat")   
short Sdn[20]; //内部误差信号
此时上面的for循环要3100 cycles.

二数组直接定义在片内
short  Sxn[NUM3];  
short Sdn[NUM3];
此时上面的for循环要1000个cpu clock cycles。

想问为什么会差这么多,和cache有关系么?这是正常的么,因为插入等待周期?

出0入0汤圆

发表于 2016-10-13 17:34:00 | 显示全部楼层
本帖最后由 RAMILE 于 2016-10-13 17:35 编辑

SDRAM本来就很慢,尤其是单个读取的时候,CLK的利用效率很低 ,要写入两次地址,插入n个等待,才有数据返回

另外,楼下补充

出0入0汤圆

发表于 2016-10-13 17:49:59 | 显示全部楼层
这么大字还斜着不累么。。

没有cache或buffer的情况,可以先在SRAM中计算好,然后memcpy或dma搬到SDRAM中。

出0入0汤圆

 楼主| 发表于 2016-10-14 08:27:27 | 显示全部楼层
aozima 发表于 2016-10-13 17:49
这么大字还斜着不累么。。

没有cache或buffer的情况,可以先在SRAM中计算好,然后memcpy或dma搬到SDRAM中 ...

是累,但是不会弄。。。。
嗯,已经把数据定义在片内SRAM,并且优化了算法,每次只搬移一个数。
但是想弄清楚为啥会差这么

出0入8汤圆

发表于 2016-10-14 08:37:01 | 显示全部楼层
看到这个字体就像举报

出0入0汤圆

发表于 2016-10-14 08:42:07 | 显示全部楼层
lindabell 发表于 2016-10-14 08:37
看到这个字体就像举报



有同感,看着累........

出0入10汤圆

发表于 2016-10-14 08:57:07 来自手机 | 显示全部楼层
手机看着累,好大

出0入0汤圆

发表于 2016-10-14 11:00:22 | 显示全部楼层
SDRAM是地址线分时复用的,组成行列结构;读一次数据至少需要发一个行地址,再发一个列地址(不算猝发和背靠背等);

而且要不停的刷新,否则数据会丢;读完了还要预充电(关闭行)。如果是32位的数据,16位的片子还要读两次;

SRAM只有一个地址,一个数据,快的话,一个时钟数据就出来了;cache和芯片内部的MEM都是SRAM的结构的;

再优化优化,看看能不能再提高点;在优化的时候多考虑点计算机体系,例如CACHE的大小、起始位置,争取都次的

操作都在一个cache行内。

出0入0汤圆

发表于 2016-10-16 07:03:34 来自手机 | 显示全部楼层
优化传输的数据量,尽量用sdram的突发传输模式,写一次行列地址读写多字节

出0入0汤圆

发表于 2016-10-16 22:45:33 | 显示全部楼层
mark~~~~~~~~!

出0入0汤圆

发表于 2016-10-16 23:23:06 | 显示全部楼层
zhyu 发表于 2016-10-14 08:27
是累,但是不会弄。。。。
嗯,已经把数据定义在片内SRAM,并且优化了算法,每次只搬移一个数。
但是想弄 ...

重新编辑,去掉各种字体格式,大字体是会封ID的

出0入31汤圆

发表于 2016-10-17 07:23:38 来自手机 | 显示全部楼层
wx85105157 发表于 2016-10-16 07:03
优化传输的数据量,尽量用sdram的突发传输模式,写一次行列地址读写多字节 ...

这个是需要设置还是sdram控制器自动实现的?

出0入0汤圆

发表于 2016-10-17 09:34:45 | 显示全部楼层
楼主位的字看得怪怪的,好不顺眼啊

出0入0汤圆

发表于 2016-10-17 09:35:22 | 显示全部楼层
本帖最后由 LearningASM 于 2016-10-17 09:36 编辑

SDRAM本来就这样,需要等待时间

出0入4汤圆

发表于 2016-10-17 09:37:43 | 显示全部楼层
肯定慢啊,有什么好问的

出0入0汤圆

发表于 2016-10-17 09:56:36 | 显示全部楼层
以前研究过2812,内部RAM之间倒腾数据确实比外部快,如果加密,访问更慢,慢九倍
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 16:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表