标题:
基于DM642 的视频编码Cache 优化策略
[打印本页]
作者:
goodic
时间:
2005-10-31 16:03
标题:
基于DM642 的视频编码Cache 优化策略
基于DM642 的视频编码Cache 优化策略 王熹微唐昆崔慧娟 随着多媒体业务的飞速发展,低速率高质量的活动图像编码成为当前国内外研究的热点之一。由国际电联和MPEG 标准组织ISO 共同发布的H.264/AVC 视频压缩标准,以技术的显着优势和多个标准组织的支持,迅速应用到视频服务、媒体制作发行、固定及移动运营网络、设备终端制造等多个领域。 但H.264 在大幅度提高编码效率的同时,带来了运算复杂度猛增的新问题。许多针对提高图像质量,加快编解码速度方法被提出并实现,H.264 编码器在DSP 上的应用也日臻成熟。在目前的DSP 平台上实时实现大尺寸、高分辨率的视频编解码仍旧是大家关注的焦点。如何合理利用DM642 平台的优势高效率的实现H.264 视频编码算法成为急需解决的问题。 1.视频编码算法的高复杂度 H.264 包括视频编码层(VCL)和网络抽象层(NAL),VCL 研究基于运动补偿、变换编码、熵编码技术来提高视频编码效率,NAL 用于支持H.264 的网络友好,将VCL 编码数据组合到现有网络中以提供更高的灵活性,目的是基于兼容当前视频编码的流行标准H.263 和MPEG-4 技术,找到一种新标准用于取代现有任何实现高质量视频的视频编码标准。 它以运动补偿和变换编码为框架,利用多参考预测帧提高编码效率,1/4 象素搜索提高预测精度,基于4×4 块编码、多种帧间预测模式提高峰值信噪比。其中,七种不同块尺寸大小的帧间预测技术可以节省15%的码率,1/4 像素精度估值相对于整像素估值可以节省20%的码率,采用五帧参考帧预测可节省5~10% 的码率。这带来了运算复杂度猛增的新问题。 2. TMS320DM642 DSP 及Cache 结构 DM642 平台简介 DM642 是德州仪器(TI) 公司最新推出的一款专门面向多媒体处理领域应用的处理器,是构成多媒体通信系统的良好平台。它丰富的外围接口使得它近乎是一个多媒体嵌入式系统 基金项目: 国家自然科学基金项目(60272020) 的单芯片硬件平台;它的完全可编程性,又可以使得它能够兼容正在发展的各种多媒体信号处理标准,构成通用的软件平台。 DM642 采用的是C64x DSP 核,时钟频率高达600MHz ,提供8 个并行处理单元,处理能力高达4800MIPS, 拥有两级Cache 结构,适用于 V2oIP 、视频点播 (VOD)、多通道数字录像应用,以及高质量的视频编码、解码解决方案。为满足视频和图像处理的需要,还集成了三个高精度可配置的视频接口、面向音频应用的串行端口McASP、10Mb/s 或100Mb/s 模式自适应的以太网口(EMAC) 等外设。其改进的数据路径结构能够提供一个时钟周期内两个64-bit 的读取/存储,在图像算法处理方面能力得到了很大提高,相对于300MHz 主频的C62x DSP 能够最多有19 倍的性能改善。 2.2 DM642 的cache 结构DM642 的高性能还得益于CPU 的两级高速缓存结构,其结构框图如图1 所示。 图1 两级CACHE 结构框图 CPU 和一级程序高速缓存(L1P) 及一级数据高速缓存(L1D) 直接连接,L1P 和L1D 分别为16KByte ,第二级缓存(L2)有256KByte ,程序空间和数据空间是共享的,可以设置成存储单元(memory),高速缓存(cache),或者是这两者的结合。表1 列出的是L1P、L1D 和L2 各个性能参数和使用方式的对比。 表1 L1P、L1D、L2 参数比较 L1P L1D L2 组织形式 直接映像 2 路组合 4 路组合 行大小 32Byte 64 字节 128 Bytes Set 数量 512 个(512 行) 128 个 读miss 指派 向L2 请求一行(CPU 阻塞<=8 周期) 在L1D 中指派一行 数据取自EDMA,存储在L2 中,并送往L1 读hit 数据直接由L1P 中读出 数据直接由L1D 中读出 由L2 读数据 写miss 指派 不支持L1P 写 不在L1D 中指派,数据送给L2 先将数据取自EDMA,写入LRU 写hit 不支持L1P 写 写入L1D 中命中的地方 写入命中的L2 单元 CPU 存取时间 1 个周期(1cycle) 1 个周期(1cycle) 代换策略 2 路最早使用原则 4 路最早使用原则 L2 一部分配置为SRAM 时,映像入C64x 寻址空间,CPU 可以直接进行存取,L2 一部 分配置为cache ,大小可为32KB 、64KB 、128KB 、256KB 中的一种,任何被配置为Cache 的L2 SRAM 不处于存储器映象中,不能被存取。 两级Cache 的工作原理如图3 所示。CPU 只对L1 的数据进行访问,程序代码和数据必须经过存储器到L2,L2 到L1 的逐级搬移才能被CPU 访问。在CPU 处理片内的数据时可以通过EDMA 把片外的数据倒入片内,并行工作以提高效率。由于内部存储器的工作频率与DSP 内部时钟同频,而远远高于片外存储器的频率,这就解决了DSP 外部时钟频率小于内部时钟频率的问题。实验表明,合理利用两级缓存配合低工作频率的外部存储器,系统的效率能够达到全部使用高工作频率的内部存储器的80% 到90% 。 图3 两级缓存的访问原理 3. Cache 优化策略及优化结果 Cache 的性能主要依赖于cache 行的重复使用情况。一般性应用中涉及大量不可预测的 内存访问时(比如控制流程等)使用L2 cache;在实时信号处理系统中必须要使用L2 SRAM。具体的优化方法,包括应用层优化和程序层优化两方面。 应用层优化 合理配置L2 的Cache 和SRAM 的大小配置的总原则是将尽量多的关键数据分配在片内,Cache 越大越好,对于不同的应用需要用不同的配置。最优配置需要在开发中根据经验和实际的测试结果进行选择。在我们的实时系统中把cache 配置成128KByte ,剩余的128KBye 作为SRAM 使用。从 表2 可以看到,将L2 的Cache 设为128KByte 时,系统性能最佳。表2 不同L2 配置方式对系统性能影响 信号处理代码与通用处理代码的分别对待 通用目的处理程序一般而言是顺序执行的数据流和条件分支,没有太多的并行性,执行 时依赖于不同的模式和条件,数据内存访问具有更大的随机性,对代码空间的访问更多的是带分支的线性流程。L2 SRAM 不足以大到存放系统所有的数据和程序,因此把通用用途的 留给对性能要求更好的信号处理部分的代码。 程序层优化 Cache 在程序层的优化,关注的是数据、代码在内存中的分配方式和函数的调用方式。优化的目的是尽可能减少cache miss 的次数和CPU 停止周期的次数。 选择合适的数据类型以减少对内存带宽的需求 在视频编码系统中的变换编码部分,H.264 中采用的是4×4 整型变换。由于视频编码的输入是8-bit 精度的数,依据整型变换变化矩阵的特点很容易分析出在变换过程中的数,用16 位来表示即可,不必要定义为32 位。 对于代码段:for(i=0; i表3 给出了数组x[]定义成int 型和short 型对应参数比较。在改用short 型定义x[]后,该段代码的执行速度得到了2.3 倍的提高,相应的cache miss 次数减半。 表3 不同数据类型对实现性能和cache 效率的影响 x[]定义为整型(周期) x[]定义为short 型(周期) 执行周期 3117 1071 L1D 停止周期 2063 1152 L1P 停止周期 17 22 总执行周期 5197 2248 3.2.2 对处理链进行优化 对于视频编码应用来说,数据流是顺序的,即前一个函数的输出将作为下一个函数的输入。函数1 当前的输入在L1D 中,输出数据将被存放在低一级的存储空间(L2 或者外部存储器),函数2 在读取数据时会发生miss 。为了减少该类miss,可将函数1 的输出写入L1D, 则该部分数据可以直接重新访问而不会发生CPU 停止。这种优化的理念可以用图4 来表示。 图3 两个函数的处理链 3.2.3 避免L1P 因冲突造成的读miss 当读取内存地址映射到相同cache 单元却不在cache 中的代码时,会导致这类读miss 的产生。编译器和连接器不会考虑到cache 冲突问题,必须手动优化这部分代码。通过下面的例子来说明这类读miss 的几种情况和相应的解决方法For(i=0; i、循环里两个函数映射到L1P 中的地址空间有重叠的情况:解决方法:调整函数在链接时候的顺序,保证一个循环中的两个函数func1 和func2 映射到L1P 中的地址空间不重叠。这个可以通过将func1 和func2 在内存中连续存放来实现。2、循环里的所有函数的代码大小比L1P 大的情况:解决方法:循环拆分。循环被拆分成如下形式, For(i=0; i 这种改进方式会增加用于存储输出数据的临时缓冲区的大小。 在我们的视频编码系统中,对比例缩放归一化部分的代码进行这类优化,将该部分代码分割成一系列的核心循环以避免L1P 因冲突造成的读miss, 对该部分的数据依照3.2.2 中提及的方式优化,经测试可知,优化之后的程序,cache 的使用效率能达到90%。 4.结论 Cache 工作在CPU 时钟频率上,静态L1 高命中率和灵活的L2 访问机制提供了低成本高性能的使用。依据DM642 两级cache 特征,对高复杂度的视频编码算法H.264 进行cache 使用的优化,取得了非常显著的效果。【参考文献】1、TMS320DM642 Video/Imaging Fixed-Point Digital Signal Processor Data Manual. Texas Instruments, sprs200B, May 2003 2、TMS320C6000 DSP Cache User’s Guide. Texas Instruments, spru656A, May 2003 3、魏振宇,张旭东. 一种新的数字信号处理器——媒体处理器DM642. 世界电子元器件,
意创科技提供
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0