新一代多核媒体处理器优化高清视频应用
制代码效率方面的改进
SC3400采用先进的动态分支预测机制,可有效减少COF(Change of Flow)的延迟。例如,某条JMP指令已经在分支目标缓冲(BTB)中,实际执行只需要1个周期,而不是6个周期。SC3400e在原有的分析预测机制的基础上,完成了多方面的改进。
在SC3400e中,硬件循环和COF共同使用n个BTB,突破了SC3400中只支持4层嵌套的零开销硬件循环的限制。而且,SC3400e还改进了硬件循环误判的开销,就算硬件循环条件不成立,开销也只有3个周期,而在SC3400中这样的开销最多达6个周期;在SC3400e中,提高了短循环的执行效率,同时短循环不再占用BTB;SC3400e支持4个返回地址寄存器,相对SC3400中的一个返回地址寄存器,减少了子程序返回的平均延迟。总体看,相对SC3400,SC3400e控制代码的效率提高了0.25倍。
图2 高清视频编码及解码的多核功能分配示意图。
3) 查找表的性能提高
在SC3400e中,带有线性地址修改的指令1个周期就能完成。查找表的性能提高了0.5倍。
4) SC3400e中改进的视频加速指令
SC3400e中改进的视频加速指令主要包括:用于半像素插值的插值指令,性能提高1倍;用于运动补偿的Add-and-Sat指令,性能提高1倍;1个周期完成位插入或位抽取操作。对于位流与字节之间的pack/unpack及其他位流处理算法,性能提高1倍。
SP2704二级缓存的使用
SP2704支持二级缓存(L2 cache):其中一级缓存(L1 cache)分成32k指令缓存和32K数据缓存,二级缓存可灵活用于片外程序和数据的缓存。对于高清视频编解码的应用,需要使用DDR3存储器来存储大量的视频数据。这时,一般会配置二级缓存映射到DDR存储空间。同时,如果再配置L1 cache缓存L2 cache的数据,对缓存进行合理的优化,会使片外的视频数据读写效率更高。
L2 cache还可以配置成共享内存,如果L2 cache配置成共享内存,6MB共享内存的空间就扩展为8MB。对于不需要放置片外存储器的应用,一般会把L2 cache配置成共享内存,进一步增加数据和代码的片内存储空间。
分层的多核编解码器构架
对于H.263或H.264的高清视频编码,一个DSP核无法完成1路图像的编码/解码,因而需要由多个核协作完成,这就涉及到多核之间任务分配的问题。LSI目前采用灵活的多层编解码构架,以片(slice)为基本单位对图像进行分割,每个核处理一个或多个片。这样,可以在多核之间扩展,也可以通过sRIO、PCIe等高速互连总线在多器件之间扩展。
以1080P(1280*720)H.264的解码和编码为例,如果一个SP2704处理1路30fps 1080p H.264解码,多个SP2704协同处理1路30fps 1080p H.264编码,SP2704#1解码后的YUV4:2:0的图像数据提供给SP2704#2来进行编码,参考帧数据将存放在DDR3存储器中,如图2所示。
多核分层编码器
在协同处理1路图像的多个核中,一个核作为主核,其他核为从核。主核除了要负责一些slice的编解码之外,还要处理负荷平衡、场景识别及速率控制这样的公共任务。其他从核将只是对分配的slice进行处理。
多核分割可以减少高清视频编码的延迟,而动态负荷平衡功能可最大程度减少延迟。SP2704内部的4个DSP核可以通过6M的共享内存和DDR3片外存储器来共享视频数据:当前图像存放在6M的共享内存中,通过L1数据cache缓存片内共享内存的图像数据,参考图像存放在DDR3外部存储器中,通过L2 cache来缓存DDR3中的图像数据。从而使得视频数据访问的速度达到最快。
SP2716中的2个SP2704之间可以通过PCIe共享DDR3存储器,这样可减少2个SP2704之间的数据交互,从而简化了软件开发的复杂度,还将整个硬件设计所需的DDR3设备数量减少了一半。此外,多个SP2704器件之间通过sRIO接口来传输或共享视频数据,这些SP2704都连接到sRIO开关上。每个器件都可以自发地写入到其他任何一个器件的I/O空间。
多核解码器
H.264解码涉及串行操作和并行操作。熵解码包含一系列串行操作,无法分配给多个内核并行处理,因而将由主核处理,其他并行操作可以分配到各个从核来处理。LSI分层解码器的基本原理是:由主核负责熵解码,再把熵解码后的数据分配到各个从核来处理。其他从核读取数据后进行后续处理,例如逆量化、逆变换等;对于P宏块还要从DDR3中读取参考帧数据并进行运动补偿。最后进行循环滤波,并把得到的宏块数据存入DDR3的当前帧中。(LSI公司)
- 在FPGA上实现H.264/AVC 视频编码标准(07-23)
- 用FPGA替代DSP实现实时视频处理(08-26)
- DSP+FPGA嵌入式多路视频监控系统硬件平台(04-10)
- 基于DSP的视频采集驱动程序的实现(07-21)
- 未来的视频依赖转码技术(06-08)
- 视频跟踪算法在Davinci SOC上的实现与优化(10-06)