首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
MPEG-4编码器在BF561上的优化
来源:本站整理  作者:佚名  2010-06-20 10:53:33





3 编码器优化方案
3.1 基于Cache和DMA的优化

    Blackfin系列DSP多级存储结构,其代码从内部L1指令存储器运行、中间数据及常用参数从内部L1数据存储器读取或存放时,才能实现最佳性能。但是MPEG-4算法大量的算法导致代码不可能放入L1指令存储器中,大量的中间数据和参数也不可能仅存放在L1数据存储器中,所以要考虑如何更好地利用处理器上的L1存储器才能让系统的性能达到最佳。指令Cache,数据DMA,这是目前最流行的系统模型,多数的嵌入式媒体处理器都是基于这样的想法而设计的。
    使用高速缓存机制允许编程者访问大的、低成本的外部存储器。它的工作方式是:在需要的时候自动将代码读入L1指令存储器。这使编程者不必繁琐地将代码从内部存储器移入移出。指令高速缓存有助于以更为有效的方式从外部存储器预取指令。
    相比于指令管理方面使用指令Cache,在数据管理上使用DMA显得是自然而然的。但是在优化过程中还是注意了以下几个问题:
    (1)由于BF561的外部总线是32位宽的,所以用32位DMA能最大程度地提高数据存取的性能。
    (2)基于寄存器的DMA和基于描述符的DMA两种DMA工作方式的选取。基于寄存器的DMA中,处理器直接对DMA控制寄存器编程来初始化一个传送。因为寄存器不必从内存中装载,并且内核不必保存描述符,因此,基于寄存器的DMA提供了最好的DMA控制器性能。相反在基于描述符的DMA操作中,可以对一个DMA通道进行编程,以便在当前传送队列完成后,自动设置和重启其他的DMA传送过程。在管理一个系统的DMA过程时,基于描述符的模型可以提供最大的灵活性。基于上面的考虑,在视频采集模块中我们选了基于描述符的DMA控制方式,而在其他模块中选取基于寄存器的DMA方式。
    (3)当数据在内部存储器移动时,尽量不使用标准C语言中的memepy()函数,而使用MemDMA的方式,这样可以减少CPU等待时间。
3.2 存储器管理策略优化
    对于通常的嵌入式媒体处理器,片上存储器都不够存储一个完整的视频帧,因此系统必须依赖L3外部RAM来支持对大缓冲区进行相对较快的访问。因此对片外存储器的访问必须精心设计,以保证较优的数据吞吐。以下是笔者在优化过程中总结的一些关键步骤:
    (1)分组类似传送来减小存储器总线出送方向切换的次数。以相同的方向访问外存是是最有效率的(如连续的读或者写)。例如,当访问片外SDRAM时,16个读16个写总比单独的16个读/写要快,这是由于先写再读而导致的延迟。对外存的随机访问会产生高概率的总线中转。因此在给定的方向上充分利用控制传输数量的能力是重要的。
    对于MemDMA流,当期望共享可用的DMA总线带宽时,可编程的DMA控制器以轮流选择每个数据流的方式进行固定数量的传送。在每条DMA总线上,这个“方向控制”工具在DMA资源的优化使用方面是一个重要的考虑。通过分组同方向地传送在一起,其提供了一种方法来管理DMA总线传送方向的频繁变动。当使用方向控制特性时,DMA控制器优先级保证在DMA或存储器总线上,与前一次传送据具有相同读/写方向的数据传输,直到方向控制计数器溢出,或停止传送,或传送过程中自己改变方向。当方向计数器归零时,DMA控制器改变其优先选择方向为相反的数据流动。
    (2)保持SDRAM的行打开及实现多次数据传送。每次访问SDRAM都会花费几个SCLK(系统时钟周期),特别是如果需要的SDRAM的行还没有被激活时。一旦一行是激活的,就能从一整行中读取数据而不必每次访问该行的时候再打开。或者可以这样理解:每个SCLK周期访问存储器的任何位置都是可能的,只要这些位置在SDRAM的同一行中。关闭一行需要多个SDRAM时钟周期,因此,连续的行关闭能严格限制SDRAM的吞吐量。
    一个SDRAM的页错失可花费20~50个CCLK(核时钟周期)。Blackfin系列DSP可以最多同时打开四个SDRAM行,从而减少设置时间。应用程序应当通过适当放置数据缓冲区和管理访问来利用打开的SDRAM块,原则就是把可能同一时间访问的缓冲区分配到不同的SDRAM块中。
3.3 基于双核结构的优化
    一片BF561内包含了两个完全相同的Blackfin内核,这使其拥有比同系列芯片更为强劲的运算能力。因此想要充分发挥其能力就必须更具其结构特性为编码器设定合适的整体构架。通常的方式有两种,一种是非对称的程序设计模式,另外一种为对称的程序设计模式。顾名思义,非对称模式就是两个内核完成不同的处理任务,这种模式下,两个内核好像是两个单独的处理器,它们之间不共享代码。不共享或者只共享少量的数据。而对称的程序设计模式比较适合于处理器任务较为单一,但运算量比较大的情况,更能发挥双核在运算能力方面的优势。
    基于上面的分析,选择了对称的程序设计模式,而且是基于运算量考虑的对称模型,即两个核各负责半帧图像的压缩,另外A核还负责系统初始化以及输入/输出中断的响应,B核还负责时间字符的叠加以及时间计算等,这样最大程度上平衡了两个核的工作量。此外,在L2存储器中定义了两个核都需要的变量,以及控制双核同步的信号量等。双核协作工作的过程以及同步方式如图3所示。



上一页  [1] [2] [3] 

关键词:

  • 好的评价
      0%(0)
  • 差的评价
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:172,648.40000 毫秒