基于AVS-M和DM642视频服务器的研究 - [4]

Video.com.cn(视频网) 2007-09-12 16:16 来源: 通信世界网

    DM642的L2片内存储器可以配置为SRAM或Cache。由于编码器的数据流程是有规律的,因此我们考虑用程序控制DMA控制器来进行内存和外存之间的数据交换,这样比硬件自动地来处理效率要高。

    由于片内存储器容量的限制,不可能将编码器的所有数据都放入片内存储器。原始图像和重构图像是无法完全放到片内存储器中的。事实上,没有必要将这些数据放在片内,因为编码器的处理过程是以宏块为单位的,我们只需要在片内维护一个宏块的数据结构,CPU访问这些数据进行计算。每编码一个宏块的时候把该宏块需要的数据从外存调入内存,填到相应的这些数据结构中。利用DM642提供的QDMA机制,CPU发出QDMA请求后就可以继续对其它数据进行计算,由DMA负责将数据从外存调到内部存储器。因此如何设计使CPU与DMA之间协调工作很重要,本文2.3部分将详细讨论这个问题。

    需要注意的问题是当前宏块编码过程中需要用到前面编码已经获得的一些信息。参考代码中是保留所有宏块的编码信息,这样的做法是不适合DSP实现的,需要的存储空间太大,片内存储器无法容纳。实际上编码当前宏块只需要参考它上面和左面的宏块。因此设计编码器中各模块的局部数据结构如图3所示。该数据结构保留上面一行的值和左边宏块的值,每编码完一个宏块,确定当前宏块的信息后更新这些缓冲区,这些数据可以放在L2中,不用访问外存。而且实验证明用来维护这样的数据结构所需要的计算时间很小。

图3  模块的局部数据结构


    经过优化的程序和常用的数据结构的大小可以放在L2中。所以按照上面的分析将L2配置为256KBSRAM,将程序代码段(.text)、变量初值表(.cint)、常量字符串(.const)、全局变量静态变量(.bss/.far)、堆栈段(.stack)等放入L2SRAM当中,全局堆(.sysmem用于动态存储器分配)置于外部存储器。表1总结了编码器所要用到的存储空间分配情况。

表1编码器存储空间的分配

    其中整像素运动估计参考缓冲区包括亮度和色度。因为参考帧有两个,整像素运动估计参考缓冲区也有两个。分像素运动估计参考缓冲区也是两个:一个用来调入SKIP编码模式的预测值,一个用来做分像素运动估计。

评论】 【社区】 【 】 【关闭此页

发表评论

发表者:
内容: