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

DSP片上内存优化使用

大家好

关于DSP的片上内存,用于算法优化的角度,该如何使用才能提升速度?

1.片上cache  L2cache  如何使用  L1pcache  L1dcache 如何使用等?

2.片上SRAM  L2SRAM  L1SRAM 如何使用?关于这个大部分人说,把数据放片上,但是这个空间毕竟有限啊,如果仅仅是简单的放数据,未必作用太有限了吧。

大家讨论下吧  

Louis:

你好,

  关于DSP的优化方面,可以详细阅读下面几个文档。 优化的过程永远都是一个循序渐进不断迭代的过程,每次优化只有,需要使用profile来剖析一下,看性能开销的瓶颈在哪里,在进行优化。一般对于L2的分配,需要根据需要分为L2CACHE 与 L2 RAM, 对于数据量较大的算法,可以适当增加L2 RAM的分配大小。可以使用DMA以及ping-pong机制来最合理的使用你的L2。

 1.片上cache  L2cache  如何使用  L1pcache  L1dcache 如何使用等?

— 关于CACHE的使用,取决于你的DSP程序大小,相对来说cache的资源有限,尽量不要写太大太长的函数,整个函数或者循环体的代码量不要超过L1P的大小,这样可以避免由于代码太长不停进行cache页更新,对于data来说也一样,在优化的时候,很可能用到查表法,这个时候注意表格的长度,也不应太长。

2.片上SRAM  L2SRAM  L1SRAM 如何使用?

— L2 SRAM 用于片内与片外的数据交互,当算法需要使用较大量的数据时候,就需要L2来做一个缓冲,使DSP达到最大的使用效率,不需要过多的等待数据准备。由于DMA不需要DSP的参与,故多缓冲的ping-pong机制在图像算法的优化过程中只用最为常见。

  希望能够帮到你!

1. 《TMS320C6000 Optimizing Compiler User Guide》 http://www.ti.com/lit/ug/spru187u/spru187u.pdf

2. 《TMS320C64x DSP Two-Level Internal Memory Reference Guide》 http://www.ti.com/lit/ug/spru610c/spru610c.pdf

3. 《TMS320C6000 DSP Cache User’s Guide》 http://www.ti.com/lit/ug/spru656a/spru656a.pdf

steve_xiaop:

回复 Louis:

谢谢回复:

1.关于“整个函数或者循环体的代码量不要超过L1P的大小” 这个怎么保证的?如何计算函数的代码量?比如DM648我的L1P cache大小是32kb,那么是不是说

  我的算法中所有函数的代码量都不能超过32KB呢?

2.关于“L2SRAM使用DMA和ping pong buf的问题”   从理论上来讲,如果做了DDR的cacheability属性,那么DDR的速度和L2SRAM的速度  应该差不多的,一般

都会采用DDR的cacheability属性的,所以,我觉得使用L2SRAM做DMA的话速度也不会太明显。

3.我其实想知道如何减少cache的冲突和miss率,包括L2cache  L1PCACHE  L1DCACHE等.

steve_xiaop:

回复 steve_xiaop:

还有一个问题就是,如何提高片上sram的使用率,因为片上sram资源是有限的,就那么大,如果一个算法很大的话,那么要优化的函数就很多,

每个函数都想使用sram的资源,然后利用edma机制优化,如何重复使用。

Louis:

回复 steve_xiaop:

你好!

1.关于“整个函数或者循环体的代码量不要超过L1P的大小” 这个怎么保证的?如何计算函数的代码量?比如DM648我的L1P cache大小是32kb,那么是不是说

  我的算法中所有函数的代码量都不能超过32KB呢?

Louis: 不是说所有的函数,是说关联性比较大,而且与流水核心/并行处理相关紧密,需要占用cycle数比较多的函数。 这个信息你可以通过profile中的详细统计信息得到,里面会包含各个函数的调用次数以及总的开销,开销大的,调用平凡的函数就需要控制一代吗量。

2.关于“L2SRAM使用DMA和ping pong buf的问题”   从理论上来讲,如果做了DDR的cacheability属性,那么DDR的速度和L2SRAM的速度  应该差不多的,一般

都会采用DDR的cacheability属性的,所以,我觉得使用L2SRAM做DMA的话速度也不会太明显。

Louis:从上面的途中可以看书,DDR的访问速度与cache的访问还是有很大差异的,使用DMA来做ping-pong buffer类似于手动管理cache。 光设置一个cacheability,速度差距很大的。

3.我其实想知道如何减少cache的冲突和miss率,包括L2cache  L1PCACHE  L1DCACHE等.

Louis:关于减少cache conflict,可以详细阅读《TMS320C64x+ DSP Cache User's Guide》,了解一下

3.4.3 Avoiding L1P Conflict Misses ………………………………………………………………………… 563.4.4 Avoiding L1D Conflict Misses………………………………………………………………………… 603.4.5 Avoiding L1D Thrashing ……………………………………………………………………………… 623.4.6 Avoiding Capacity Misses ……………………………………………………………………………. 643.4.7 Avoiding Write Buffer Related Stalls …………………………………………………………………. 66

Louis:

回复 steve_xiaop:

《TMS320C64x+ DSP Cache User's Guide》可以通过如下地址找到:http://www.ti.com/lit/ug/spru862b/spru862b.pdf

steve_xiaop:

回复 Louis:

谢谢,Louis:

还是想问如何计算代码量,比如一个函数,你怎么知道这个函数的代码量是多少KB呢? 如果真的大于32KB  L1P的大小的话,如何拆分呢?

Louis:

回复 steve_xiaop:

这个可以在CCS打开编译选项-mo,这样你可以通过.map文件查找到各个函数的起始位置以及占用的长度。

steve_xiaop:

回复 Louis:

Louis

这个可以在CCS打开编译选项-mo,这样你可以通过.map文件查找到各个函数的起始位置以及占用的长度。

赞(0)
未经允许不得转载:TI中文支持网 » DSP片上内存优化使用
分享到: 更多 (0)