新闻中心

EEPW首页>消费电子>设计应用> 基于TMS320DM642 的X264 视频编码器的优化

基于TMS320DM642 的X264 视频编码器的优化

作者: 时间:2010-12-03 来源:网络 收藏


DM642 使用两级缓存L1 和L2。其中一级缓存L1包括一级程序缓存L1P 和一级数据缓存L1D;二级缓存L2 可配置为片内存储器、高速缓存或两者结合。

外设包括[4-6]:3 个可配置的端口;1 个10/100 Mbit/s的以太网控制器(EMAC);1 个管理数据输入输出(MDIO);1 个内插VCXO控制接口;1 个McASP0;1 个I2C 总线;2 个McBSPs;3 个32 位通用定时器;1 个用户配置的16 位或32 位主机接口(HPI16/HPI32);1 个PCI;1 个16 引脚的通用输入输出口(GP0),具有可编程中断/事件产生模式;1 个64 位IMI-FA,可以与同步和异步存储器的外围设备相连。

DM642 与传统的一样,采用哈佛结构,即把数据与程序分开存放于不同的存储区内,保证在的实际工作中,从程序存储区取指令与从数据存储区取运算数据是互相独立的, 另外在CPU 内部设计了8 个不同的处理单元, 可使在运行过程中,CPU 是按照流水线流程进行操作的。

3 DM642 平台优化方案介绍

3.1 算法和系统程序结构的优化

系统结构优化主要是合理安排程序中各个模块在的存储区间中所放的位置, 也就是解决存储区间的映射问题;在数据处理方面,尽量减少待处理数据的无谓搬移。算法优化主要体现在分析算法有没有更好更简单的替代方法,算法是否有某种对称性,可否采用更合适的数据结构等。在X264 的优化中,首先考虑系统结构的合理安排, 譬如程序到内存映射方面, 首先利用CCS的CODE_SECTION[9]伪指令把X264 中的9 个大的模块,依次映射到9 个大的子区间里面,把频繁使用到的DCT/IDCT 模块、QUANT/DEQUANT 模块、SAD/SATD 模块放到DM642 的片内存储区(L2 SRAM)中,把其他模块映射到片外存储区中。在数据访问方面,考虑到X264 编码分别为编码帧和帧间预测时的参考帧分配了存储空间,在移植的过程中, 存在着编码帧和参考帧的存放位置问题。从访问速度来看,片内存储区的访问速度要远远高于片外存储区的速度,但片内存储区的空间却要远远小于片外存储区,这样出现了访问速度与有限空间之间矛盾。考虑到实际编码流程中,编码的基本单元是16×16的亮度宏块加上2 个8×8 的色度模块, 这里用CCS 的DATA_SECTION[9]伪指令在DM642 的片内存储区(L2SRAM)中申请2 个大小为(16×16+8×8+8×8)的存储区,来存放编码像素值;用DATA_SECTION 伪指令在片内存储区内申请一些空间,临时存储编码过程中编码宏块的帧内预测模式信息、帧间预测运动矢量信息以及离散余弦变换系数和量化系数;最后,为了运动估计和帧内预测参考,给参考宏块分配一定存储空间。而整个当前编码帧和运动估计参考帧则放在DM642 映射的片外存储区。

3.2 EDMA 和乒乓缓存的优化

EDMA(Enhanced Direct Memory Access)是增强型直接内存访问的英文缩写。DMA 技术指的是在嵌入式处理平台或者大型计算平台上,外设与外设之间、外设与存储器之间、存储器与存储器之间可以在不需要CPU干预的情况下, 进行数据搬移和访问。这样可以保证CPU 在对一组数据进行运算时, 存储器把即将要处理的新的实验数据准备好,减少CPU 等待时间,特别是在一些需要进行大量数据搬移的情况下, 能够显着提高系统的运算速度。DM642 具备64 个EDMA 物理传输信道,能够保证数据在极短时间内,在DM642 外设的缓存区间和DM642 存储器之间进行搬移。DM642 的EDMA[10]主要有3种启动模式: CPU 启动,同步事件启动,外部事件启动。

CPU 启动指的是CPU 通过调用EDMA 的应用程序接口(Application Programming Interface,API) 去启动预先设置好的EDMA 搬移任务。同步事件启动一般指的是一个EDMA 信道完成了搬移任务,会产生激发信号,从而激发其他的EDMA 信道开始数据搬移。外部事件启动一般指的是DSP 的外设完成与外界的数据交换后, 激发EDMA信道进行数据搬移。

在对X264 进行EDMA 优化中, 采用双buffer 机制,也就是俗称的乒乓缓存(ping-pong buffer)机制。具体操作代码示例为:
2.JPG


关键词:视频DSP

评论


相关推荐

技术专区

关闭