基于Tilera平台的AVS视频编码器的研究与实现

2016-12-31 19:41许昌满1陈兆龙21上海应用技术学院巢湖学院
数码世界 2016年6期
关键词:编码器指令内存

许昌满1陈兆龙21.上海应用技术学院 2.巢湖学院



基于Tilera平台的AVS视频编码器的研究与实现

许昌满1陈兆龙2
1.上海应用技术学院2.巢湖学院

摘要:Tile处理器是Tilera公司研发的一种新型的多核处理器,文章在介绍Tilera平台的多核处理器的基础上,根据该处理器的架构特点,在该平台上实现了AVS和H.264的标清/高清实时视频编码器。

关键字:AVS Tilera 多核处理器 视频编码 H.264

1 Tilera平台简介

Tile处理器是Tilera公司研发的一种新型的多核处理器,它能够在一颗高度集成的芯片上提供前所未有的高性能,灵活性以及低能耗,它主要由一个二维的计算引擎阵列组成,每个计算引擎可以看作一个tile核,并且每个tile都支持c语言编程,同时每 个tile都被一个二维的网络结构相互连接起来。这种结构可扩展性很强,可以做成8×8,可以做成 10×10,他们之间通过二维网状网络达到连接的效果,它克服了传统的以一维总线架构做的多核处理 器的信号通信方面的瓶颈,因为这种多核处理器当核的个数超过了8个核或者16个核的时候,一维总线就会非常繁忙,这样会使得数据传输与交换缓慢,大大的影响了处理器的性能。在处理器芯片上,Tile 处理器结合外部缓存和I/O接口组成了完备的可编程的多核处理器,外部缓存和I/O接口也是通过iMesh 技术与tile进行相连通信的。TILEPro64就是Tilera的 一个8*8的64核的处理器。每一个tile都是一个强大的,性能完备的计算系统,都可以独立的运行一个操作系统,例如SMP Linux操作系统等。每一个tile有一个32位的整数处理器引擎,这个处理器引擎中包含一个3通道的超长指令字架构,该架构有自己的指令计数器(PC), 高速缓冲存储器(cache)和DMA子系统。每一个独立的tile在一个时钟周期都最多能执行三条指令。Tilera处理器中有配合该硬件设备的特定指令集来处理视频编码或者网络数据处理的一些复杂的计算,这些指令集使得运算的效率更高,这些指令集包括:差的绝对值的和的计算(SAD),搜索与计数,加扰,SIMD指令,不对齐的数据的访问等。

Tilera处理器的每个tile都有自己独立的cache,并且有和其它的tile相连的共享内存,每个tile都包括一个一级的数据cache(L1D),一个一级的指令cache(L1I)和一个共享的二级cache(L2)。Tile通过访问L1I来读写指令,在执行指令的过程中都会检查 L1D和L2来读取或者更新数据,如果指令需要的数据在这个tile中没有找到,则tilera的内存系统就会在旁边相连的tile中寻找数据。I/O接口:Tile处理器采用了软I/O结构,这种结构使得原本通常在硬件中实现的一些应用,通过在一些tile上运行一些代码来实现。

2 基于Tilera平台的视频编码器的架构

基于Tilera平台的视频编码器的架 构主要由5部分组成,即采集模块,视频编码模块,音频编码模块,码流复用模块和码流输出模块。

2.1模块

(1)采集模块:该模块的功能是接收标清SDI 的信号或者高清SDI信号,采集视频和音频的数据,将SDI信号中的视频数据转换成一帧一帧的YUV数据存在Tile的共享内存中,同时将SDI附属数据中的音频数据解析成音频的PCM数据存在Tile的共享内存中。

(2)视频编码模块:该模块的功能是实现高清/标清的AVS[4](PAL/NTSC)或者H.264[5](PAL/NTSC)的实时编码,它通过共享内存,读取采集模块采集到的视频的YUV数据,将YUV数据编码压缩成为符合AVS1.0标准的ES流或者编码压缩成为符合H.264标准的ES流,同时将这些视频ES流存入到Tile的共享内存中。

(3)音频编码模块:该模块的功能是实现音 频的MPEG-1 layer2的实时编码,它通过共享内存, 读取采集模块采集到的音频的PCM数据,将PCM数 据编码压缩成为MPEG-1 layer2的ES流,并且将这些音频ES流存入到Tile的共享内存中。

(4)码流复用模块:该模块的功能是从共享内存中读取输入的AVS视频ES流或者H.264视频ES 流和MPEG-1音频ES流,将这些数据实时的复用成符合13818-1标准的TS流,并且将这些TS流数据存在Tile的共享内存中。

(5)码流输出模块:该模块的功能是将码流 复用模块中输出的TS流,通过IP接口实时输出传输 流或者通过ASI接口实时输出TS流。

(6)管理控制模块:该模块主要包括两个部分,即网络控制模块和LED液晶面板控制模块,网络控制模块的功能是接收用户通过网络发过来的启动编码器或者停止编码器,以及设置编码器的一些参数的命令,然后根据命令启动或者关闭其它软件模块,LED液晶面板控制模块是用户通过设置前面板对编码器的编码参数以及编码器的开启与关闭进行设置和管理。

2.2模块间的通讯和CPU的分配

(1) 每个模块之间的通讯与数据传输 从2.1节中编码器的每个模块的介绍中,我们可以看出,模块间的数据传输是通过Tile提供的共 享内存来实现的。每个模块之间的通讯是通过Linux的信号传输来完成的。

(2)每个模块的CPU的分配与绑定

Tile平台提供了一些让Linux下的任务进程与该平台的某些CPU绑定的函数,这样被绑定的线程函数,就只能在其个CPU或者某个CPU集合上运行。

3 基于Tilera平台的AVS视频编码器的实现

3.1基于Tilera平台的AVS视频编码器中多线程的管理

任务实时调度模块完成任务队列的创建、销毁,以及向队列添加、删除任务,还有线程的创建,任务的执行,线程与tile处理器的绑定等功能;这里的任务的优先级我们分为两级,一级是帧级的编码,一级是Slice的编码,帧级的编码的优先级高于Slice的编码,当有空闲得CPU,该CPU就会去任务栏中寻找可以执行的任务,先寻找优先级高的任务,再寻找优先级较低的任务。为了在保证图像编码质量的情况下,提高编码的速度,我们对I帧和 B、P帧采取了不同的编码架构,I帧是单slice的 编码,B帧和P帧采用了多slice的编码方式。

3.2基于Tilera平台的AVS视频编码器中的内存 的管理与平衡

(1)共享内存的申请与使用

(2)Tilera平台的4个内存控制器的平衡

Tile处理器有四个独立的DDR2内存控制器, 64个核分成四个象限,每个象限都有一个内存控制器,同时每一个控制器都可以分别控制外部的DRAM部件,Tile处理器有内存striping的功能,这个功能可以自动的平衡四个内存控制器中的内存访问频率。

在H.264/AVS的视频编码的CPU的分配过程中, 我们根据Tile的内存控制器的结构,将4路标清编码,每一路的进程分配在了同一个象限中。

3.3基于Tilera平台的AVS视频编码器的优化

AVS视频编码性能优化主要从以下几个方面进行:

(1)编译选项参数优化为了获得更好的性能,提高指令在缓存中的命中率,编译选项设置为-o3进行最优级别的优化。

(2)缓存的存取模式 AVS视频编码为多线程、多任务的应用,系统默认缓存模式是Hash-for-home(Distributed L3 Cathing), Hash-for-home 允许定义一个CPUs的集合作为分配的缓存L3,当L2Cache不能命中时,也不需要去访 问DRAM,而是转到了L3.

(3)任务的同步tmc库提供了经过优化的一些用于线程同步的API,系统的pthread_mutex_lock()相比,性能有明显提高。在进行任务同步的时候,我们采用了 tmc_spin_mutex_unlock()函数替代pthread_ mutex_lock(),这样提高了编码的速率。

(4)指令集的应用 指令集方面的优化主要是两个方面的优化,一方面是SIMD指令的使用,Tilera处理器的SIMD(单指 令多数据流)指令可将同一寄存器中的高十六位与低十六位作为两个半字整形进行处理,甚至可将它细分成4个8位整形。这样就可以在一条指令中执行4个8位加法,或移位等操作。我们对AVS/H.264的视频编码的量化与反量化模块,DCT与IDCT模块,CAVLC模块,运动估计模块和Deinterlace模块的优化中都使用SIMD语句,应用SIMD语句读写或计算一组数据可以显著提高执行效率。

另一方面是一些预处理指令的使用,例如预取指令prefetch,在Tilera平台中,L1I高速缓冲支持硬件预取指令引擎,这可以在cache中预测取出最有可能执行的下一条指令,对于要处理的数据也是如此,我们通过prefetch指令给硬件一些暗示,让处理器能够提前知道这些数据下面要处理了。

4 总结

AVS是具有我国自主知识产权的视频压缩标准,在保证与国际先进标准相当的编码性能的同时,显著降低了算法复杂度,加之专利费用较低,在各种数字多媒体应用领域或者广播电视领域有广泛的应用前景,H.264是目前替代MPEG-2标准的已被广泛使用的标准,本文在Tilera的多核的平台上,实现了一路AVS/H.264高清或者多路AVS/H.264标清编码器的研发,编码器的输入为SDI信号,输出为 ASI信号或者传输流通过网络UDP输出。实验结果证明,该平台具有计算能力强,性能稳定等特点,在该平台上实现了AVS和H.264的标清/高清实时视频编码器。

参考文献

[1]Tile Processor User Architecture Manual March 2011 TILERA CORPORATION;

[2]Application Libraries Reference Manual April 2011 TILERA CORPORATION;

[3]Programming The Tile Processor March 2011 TILERA CORPORATION;

[4]GB/T 20090《信息技术先进音视频编码第二部分:视频》;

猜你喜欢
编码器指令内存
融合CNN和Transformer编码器的变声语音鉴别与还原
设定多圈绝对值编码器当前圈数的方法
转炉系统常用编码器选型及调试
基于 Verilog HDL 的多周期 CPU 设计与实现
舞台机械技术与设备系列谈(二)
——编码器
《单一形状固定循环指令G90车外圆仿真》教案设计
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
内存搭配DDR4、DDR3L还是DDR3?
中断与跳转操作对指令串的影响