一种按行交错划分任务和数据的多核并行视频解码方法

文档序号:9619133阅读:359来源:国知局
一种按行交错划分任务和数据的多核并行视频解码方法
【技术领域】
[0001] 本发明涉及视频编码技术领域,特别涉及运用多核数字信号处理器DSP芯片完成 高清视频编解码及传输的多核并行视频解码方法以及多核并行时负荷分摊、执行等待和阻 塞以及高速缓存的优化措施。
【背景技术】
[0002] 上世纪 80 年代 3C (Computers, Communications, Consumer Electronics)的相互 渗透与融合催生了多媒体技术并且推动多媒体技术飞速发展与普及。视频编码是多媒体技 术中的关键技术。近年传输视频清晰度不断提升,同时视频编码标准频繁更新换代,还不 断涌现新内容。2002年CIFH. 263在会议电视设备中尚占据主流。2005年就出现了 720P H. 264。到2009年1080P会议电视设备已为市场主推产品。这个时刻离1080P随Sony PS2 游戏机和蓝光产品上市的时刻并不遥远。存储介质和双向实时网络传输两类应用对视频编 码提出的压缩比和实时性要求相差甚远,仅单纯实时解码和实时编解码就相差2倍以上运 算量。这么短时间一下迈上这么高台阶,完全得益于处理器芯片技术的飞跃!目前实时传 输双向的三路1080P060HZ H. 264达到Sony PS3高清晰度的会议电视终端上市后,接下来 的内容自然是4K、8K超高清视频和最新视频编码标准HEVC/H. 265。
[0003] 一路 1080P@30Hz 视频的图像数据量达到 746, 496, 000bit/s。以 ITU-RBT. 1120 格 式传输时速率达1. 485Gbit/s。压缩为1~8Mbit/s的H. 264码流,编码、解码各需要2片、1 片32位定点处理能力96亿次/秒的TI C6455@1.2GHz数字信号处理器DSP芯片。视频编 码技术对于处理器芯片性能要求不断跃进。Intel Pentium 404GHz处理器芯片上市失败 后,传统的提升处理器芯片性能的手段遇到阻滞,多核结构包括同构多核和异构多核已经 成为提升处理器芯片性能的最主要手段。在DSP芯片领域数麻省理工学院MIT教授Anant Agarwal创立的Tilera公司推出的64核心DSP芯片Tile64最引人注目。其中最显著优势 为iMesh片内核间高速互连网络,呈8x8网格状,网格节点为64个相同的64位定点处理器 核心,包含5套独立物理线路,包交换,支持数据包组播和广播。TI公司则在C6455芯片达 到传统单核心DSP性能顶峰后推出3核心TCI6487/6488和6核心TCI6486芯片,片内分别 包含3个、6个C6455核心,虽然没有Tile64那么引人注目,但是牢牢占据高端DSP芯片市 场。TI最新最强的DSP为C6678,包含8个浮点处理器核心以及TeraNet片内高速互连网 络。
[0004] 在硅片上复制η份处理器核心简单易行。难度和关键在于如何让η个核心在应 用中表现出期待的η倍性能!除了依靠核间通信技术,最主要还是依赖软件包括操作系统 0S和应用软件。现时DSP所用实时操作系统RT0S包括Linux嵌入式发行版本和TI DSP/ BIOS。版本号高于2. 6. 10的Linux支持对称多处理器SMP,具有调度多核间负荷分布的能 力。鉴于目前计算机应用领域内标量过程的单一任务在多处理上均衡的技术解决状况,运 用RT0S提供的多进程和多线程设置多任务是RT0S有效均衡多核负荷的情景和前提条件。 也就是现有RT0S对标量过程的单一任务运行于多核的自动调度负荷分布的作用很微弱。
[0005] 本发明涉及领域恰恰正是这种情况:一路高清视频数据量巨大,编码和解码运算 量巨大,双向实时网络传输时更甚,需要拿出多个核心去应付;视频编码和解码都是顺序执 行的上下文的标量过程,前一步未完就走不到后一步;在时间、空间上也存在很强的运算与 数据的关联与依赖。缘于视频编码本身就是计算时间、空间相关性以去除表达冗余减少数 据量。视频编码技术的压缩比越高,时间、空间相关的范围和程度也越大,相应运算量据增。 此时RT0S已无意义,唯有依靠应用软件。η个核心表现出η倍性能即要求并行加速比达到 η。在软件上提高并行加速比的途径、措施是调整负荷在多核的分布达到均衡、减少并行等 待和相互阻塞、优化高速缓存。
[0006] 多核并行在视频解码上的难度大于编码。因为编码输入为规整原始图像数据,可 任意划分、随机存取,便于数据划分;解码输入为压缩码流,不仅表达图像内容的效率非常 高,常常1个二进制位就表达了一个图像块,而且一段码流内不可再划分与定位,码流划分 单位与定位位置只能到包含任意整数个码流基本单元的片slice -层,在实际网络传输常 见码流中片由数据包长不超过网络最大传输单元MTU的规则而定,位置不定,难以进行数 据划分。
[0007] 视频解码过程的划分不宜多于3 (3个顺接的子过程),而且分出的子过程运算 量难以均等,更增大数据存储量和吞吐量。解码核心数大于3就必须考虑一帧图像以内 的任务划分。相邻图像块的空间依赖性使任务均衡划分的难度徒然增大。迄今比较有效 的一帧图像内图像块并行的解码方法为水边线Waterfront并行解码方法如图1所示,同 时在垂直方向上展开多个行扫描处理,而非通常光栅扫描线处理。图1中5x5的16x16 宏块阵列的H. 264解码于T1~T13时刻完成,其中T3~T11时刻可同时处理多个宏 块。视频编解码的空间依赖性使这样的处理形似空中俯瞰的地面与水面间分界线,因而 得名。详情见于文献一(Erik B. van der Tol, et al. Mapping of H. 264decoding on a multiprocessor architecture. Proceedings of SPIE Conference on Image and Video Commuincations, Vol. 5022, PP. 707 一 718, Jan. 2003)和是文献二(Arnaldo Azevedo, et al.Parallel H. 264 Decoding on an Embedded Multicore Processor, http://ce. et. tudelft.nl/publicationfiles/1590 752 54090404. pdf)〇
[0008] 图1所示二维水边线Waterfront多核并行解码方法在Tile64上的首次尝试见于 文献三(管辉.基于同构多核处理器的H. 264并行解码算法研究.哈尔滨工业大学硕士学 位论文.2009.下载于中国知网www. cnki. net),步骤简述如下:
[0009] (1)安排Tile64的1个核心#0处理一帧图像码流解析,5个核心#1~5处理一 帧图像重建以及去方块环路滤波。
[0010] (2)核心#0在共享内存中为全部共享图像数据、图像重建队列和去方块滤波队列 的结构体变量开辟空间malloc,对这些队列和处理状态数组所带的互斥锁Mutex做初始 化,把位于左上顶点坐标(〇,〇)的第一个宏块排入图像重建队列。
[0011] (3)用双缓冲区方法(也称乒乓缓冲方法)使核心#0的码流解析与核心#1~5 的图像重建以及去方块环路滤波并行执行。即从核心#〇操作缓冲区#〇开始。核心#〇完 成后把缓冲区#0交给核心#1~5操作,接着操作缓冲区#1 ;缓冲区#0和#1的操作都完成 后,通过指针轮换交换缓冲区,核心#0操作缓冲区#0同时核心#1~5操作缓冲区#1 ;…。
[0012] (4)核心#1~5每个核心执行以下步骤:
[0013] (41)循环读先进先出FIFO的队列queue直到从中取出一个宏块(mb_y, mb_x)为 止,每次循环先读带互斥锁的图像重建队列,如果遇空再读带互斥锁的去方块环路滤波队 列;
[0014] (42)宏块(mb_y,mb_x)图像重建或者去方块环路滤波,完成后写带互斥锁的宏块 (mb_y,mb_x)的处理状态为已完成图像重建或者已完成去方块环路滤波;
[0015] (43)读带互斥锁的下一行相邻的左下宏块(mb_y+l,mb_x-l)和下方宏块(mb_ y+l,mb_x)的处理状态,判断能否执行图像重建或者去方块环路滤波;
[0016] (44)更新带互斥锁的图像重建队列和去方块环路滤波队列,把可处理的0/1/2个 宏块排入队列;
[0017] (45)处理完一帧图像全部宏块的图像重建以及去方块环路滤波,退出循环;否 贝1J,跳到(41)继续循环执行。
[0018] (5)核心#0码流解析完成与核心#1~5的图像重建以及去方块环路滤波完成的 同步。
[0019] (6)跳到(4)继续循环执行下一帧图像码流的解码,直到码流终止。
[0020] 以上方法和程序的效果十分糟糕:对于Foreman序列CIF H. 264码流,Tile64单 核运行PC机算法验证模型的H. 264解码软件C代码(未经任何针对Tile64平台的优化), 解码平均帧频20多ms/f ;分摊到6个核后慢得非常多;最后完成代码优化工作,主要包括 32位单指令多数据操作SHffi、循环拆解、条件分支替代等措施,也仅达到23ms/f。也就是 说优化后在6个核上跑,比未优化在一个核上跑还慢。曾经将解码软件的可执行文件交给 Tilera公司分析,答复是片内高速缓存cache缓存的数据绝大部分为非母核数据,数据存 取效率过低。
[0021] Tile64片内高速缓存Cahce分散到64个核心内部,每个核心配备全速的8K字节 一级数据缓存L1D和8K字节一级指令缓存L1P,还有半速的64K字节二级缓存L2Cache。L1D 和L2Cache只缓存由本核心开辟空间malloc的片外主内存数据,称为母核Cache-homing, 不缓存其它核心开辟空间的片外主内存数据。当核心A访问非母核数据时,首先由该数据 的母核B缓存至L2Cache,再由核心A通过iMesh片内核间高速互连网络与核心B传输数据 包,实现自核心B的L2Cache读入数据或者更新核心B的L2Cache内数据。即使η次重复的 访问也需要η次经过iMesh网的数据包传输。所以访问非母核数据比访问母核数据效率 低得多。曾经做过一试验,把H. 264解码任务分成两部分A和B。A为开辟空间malloc并码 流解析
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1