摘要
随着越来越多的移动手持终端支持视频功能,对于流媒体内容及实时通信的网络支持需求也在显著上升。虽然对已部署的 3G 媒体网关进行升级可以支持较低的分辨率和帧速率,但这种由于自身的有限处理能力而进行的升级并不能满足视频成为主流应用的需求。
为了使可扩展视频应用能够支持高密度 (HD),需要显著提高视频处理能力,而多核数字信号处理器 (DSP) 不但拥有能满足此类需求的增强型视频处理功能,同时还能充分满足运营商在可扩展性和低功耗方面的需求。
本文旨在介绍一种全新的多内核平台,其能够通过优化内核通信、任务管理及存储器接入实现高密度视频处理能力,此外,本文还阐述了扩展实施的结果如何支持多通道和多内核 HD 视频应用的高密度视频处理。
1 介绍
3G 与 4G 移动网络在全球范围内的广泛部署以及无线创新热点的不断涌现,催生了手持终端用户所需的关键数据带宽。除了 web/数据应用以外,视频已成为移动数据普及的另一推动力。
随着越来越多的用户转而使用视频应用,网络基础局端需要实现显著的性能提升才能支持视频内容,这从最近苹果公司 Facetime 视频呼叫应用及类似应用的流行上可见一斑。
手持终端能够以更高的分辨率和帧速率支持视频捕获与播放。传统部署的 3G 媒体网关专用于支持低分辩率视频应用中的高密度多语音通道,但通常不能满足用户对于高质量的预期。
此外,由于手持终端因电池使用寿命和存储器大小等技术局限性,通常仅能以有限的参数集支持几种标准,因而媒体网关需要支持更多的编解码器和转码模式,如转码、传输量以及传输速率等。例如,当移动手机用户驾车高速驶过某个区域时,让网络去适应由当时瞬时链接条件提供的带宽并提供相应的压缩、分辨率及比特率更具高效性,这样视频链不致中断,而且手持终端也不会因支持缩放或剪辑造成带宽或电池电量的浪费。
为了充分满足这些需求,我们需要显著提高高密度媒体网关的视频处理能力。多内核 DSP 能够以较低运营成本提供可扩展的解决方案,从而全面解决运营商重点关注的功耗与空间占用问题。
本文的组织结构如下:
首先,阐述了处理高分辨率视频面临的挑战和资源需求,以及如何有效地实现带可扩展实施功能的视频编码算法,以便同时支持低分辨率和高分辨率通道。
其次,还对软硬件选项如何提高多内核运行的效率展开了讨论。
最后,本文回顾性介绍了多内核 DSP 领域前沿技术的发展历程,并探讨了开发人员可资利用的平台。
2 基础局端 HD 视频面临的挑战
图 1 描述了基于基础局端网络的视频通信系统。一个典型的系统应支持多种功能,其中包括:
- 高密度媒体的码制转换与速率适应
- 与视频转码相关的音频转码
- 大型多方视频会议
- 诸如语音等其他媒体形式的处理
图 1 基于网路的视频通信
转码是一种典型的通信基础局端视频应用,我们可在其中通过已压缩的输入流对 YUV 域视频流进行解码,然后再使用不同的标准(转码)、不同的比特率(码流速率)、分辨率(传输大小)或上述各项的任意组合重新进行编码。从高质量的高清专业相机到低分辨率的智能电话录制,视频内容来源广泛;而视频内容接收器也是种类繁多,从大型的高清电视屏幕到低分辨率的手持终端,无所不包。视频基础局端必须全方位满足各种需求,其中包括:
- 多重编码和解码标准,如 DV、MPEG2/4、H.264 以及未来的 H.265 等。
- 多种分辨率和帧速率,从 128×96 像素的次 1/4 公用中分辨率格式 (SQCIF) 乃至更低分辨率,到高清 (1920x1080) 甚至是超高清 (4320P, 8K),从每秒 10 帧到每秒 60 帧不等。
- 各种编码的输入/输出 (I/O) 比特率,如从低分辨率低质量手持终端视频流的 48 Kbps 到专业质量的 50 Mbps(H.264 级 4.2)甚至更高。YUV域视频流的带宽要求非常高,例如,采用 4:2:0 配色方案的 YUV 1080p60 视频流需要 1.5 Gbps 左右的带宽。
延迟要求因应用而异:视频会议和实时游戏应用对延迟的要求非常严格,不能超过 100 毫秒;视频点播应用则可以接受中等延迟(可达几秒钟),而且存储等非实时应用的处理能够允许更长时间的延迟。
通信基础局端网络面临的挑战在于,如何才能够将所有的内容交付给所有所需用户,同时又能维持硬件资源的高利用率和高效性。为了进一步阐述这一挑战,不妨考虑一下这个事实,单个 1080i60 通道要求的处理负载与 164 个帧速率为 15 fps(假定负载与分辨率和帧数量之间呈线性关系)的 1/4 公用中分辨率格式 (QCIF)的通道相同。因此,支持单个 1080i60通道的硬件也应该能够以同等的高效性和高利用率支持 164 个 QCIF 通道。但是,以如此数量级实现的可扩展性是一大挑战。
为了符合高可扩展性要求,必须采用可编程的硬件解决方案。部分视频应用要求处理器具有极高比特率的信号输入与输出,因此,基于处理器的解决方案必须拥有可支持足够外部接口的理想外设。这种处理器必须具备足够的处理能力,可处理实时的高清高质量视频,同时还需配备足够的本机资源,如快速存储器、内部总线和 DMA 支持等,以使处理器的处理能力获得高效利用。
单内核 DSP 具有高度的灵活,能够高效执行各种算法。DSP 不仅能够处理话音、音频、视频,还可以执行其他功能。但是,由于单内核 DSP 的计算能力不足,因而不能自由地处理任何分辨率的实时视频,而只能处理 SQCIF、QCIF 以及公用中分辨率格式 (CIF) 等较低分辨率的视频;而且,单内核 DSP 的功耗也使其无法应用在高密度视频处理系统中。
新型的多内核 DSP 具备非常高的处理能力,且其每次运行的功耗也比单内核 DSP 低。为了确定多内核处理器对于通信基础局端而言是否能够成为有效的硬件解决方案,需要对其接口、处理性能、存储器要求以及多内核合作与同步机制针对各种不同的使用案例进行符合性验证。
2.1 外部 I/O 接口
典型转码应用的比特流是以 IP 数据包形式进行打包。转码应用所需的带宽与分辨率以及用户所需网络的可用带宽相关。以下针对单通道消费类质量 H.264 编码视频流作为分辨率函数时列出的公用带宽要求:
- HD 分辨率,720p 或 1080i - 6 至 10 Mbps
- D1 分辨率,720×480,30 帧/秒 (fps),或 720×576,25 帧/秒 – 1 至 3 Mbps
- CIF 分辨率,352×288,30 帧/秒 – 300 至 768 Kbps
- QCIF 分辨率,176×144,15 帧/秒 – 64 至 256 Kbps
转码应用所需的总外部接口是输入媒体流与输出媒体流所需带宽的总和。为了支持多个 HD 分辨率通道或大量较低分辨率通道,至少需要一个串行千兆位介质独立接口 (SGMII)。
非转码视频应用涉及从 YUV(或同等)域对原始视频媒体流进行编码或解码。原始视频流具有较高的比特率,且通常通过 PCI、PCI Express 或串行快速输入/输出 (SRIO) 等高比特率的快速多通道总线直接从处理器输入或输出信号。
以下列出了使用 8 位像素数据和 4:2:0 或 4:1:1 配色方案传输 YUV 域中单通道原始视频流所需的带宽:
- 1080i60 - 745.496 Mbps
- 720p60 - 663.552 Mbps
- D1(30fps NTSC 或 25 fps PAL)- 124.415 Mbps
- CIF(30 fps)- 36.49536 Mbps
- QCIF(15 fps)- 4.56192 Mbps
因此,可对 4 个 1080i60 H.264 通道进行解码的处理器要求能够支持超过 4 Gbps 速率的总线,从而可假定总线的利用率为 60%。
2.2 处理性能
在可编程处理器的 H.264 通道上进行视频处理所需的处理性能取决于众多参数,其中包括分辨率、比特率、影像质量以及视频剪辑内容等。本章不仅将讨论影响周期消耗的因素,而且还将给出普通应用实例平均周期消耗的经验法则。
与其他视频标准一样,H.264 仅定义解码器算法。对于既定编码媒体流而言,所有的解码器都可生成相同的 YUV 视频域数据。
因此,解码器不决定影像质量,而由编码器决定。不过,编码器质量能影响解码器的周期消耗。
熵解码器的周期消耗取决于熵解码器的类型和比特率。H.264 MP/HP 为熵解码器定义了两种无损算法,即上下文环境自适应二进制算术编码 (CABAC) 和上下文环境自适应可变长度编码 (CAVLC)。CABAC 能提供更高的压缩比,因此,比特数相同时影像质量会更佳,但相比 CAVLC 在每个媒体流比特上约多消耗 25% 的周期。用于解码 CABAC 或者 CAVLC 媒体流所需的周期量是比特数的一个非线性单调函数。
所有其他解码器功能的处理负载均是分辨率的函数。更高分辨率需要更多的周期,几乎与宏模块的总数量呈线性关系。视频流内容、编码器算法与工具能在一定程度上影响解码器的周期消耗。附录 A – 解码器性能依赖性 (Decoder Performance Dependency) 列举了可能会影响解码器周期消耗的编码器算法和工具。
在可编程器件上实施既定比特率的编码器需要在质量与处理负载之间进行权衡。附录 B – 运动估算与比特率控制 分析了可能影响编码器质量并消耗大量周期的两种编码器算法。
对于典型的运动消费类电子设备的高质量视频流而言,以下列表给出的经验法则,可用以判断常见使用案例中 H.264 编码器消耗的周期数。
- QCIF 分辨率、15 fps、128 Kbps - 每通道 2,700 万个周期
- CIF 分辨率、30 fps、300 Kbps – 每通道 2 亿个周期
- D1 分辨率、NTSC 或 PAL、2 Mbps –每通道 6.6 亿个周期
- 720p 分辨率、30 fps、6 Mbps – 每通道 18.5 亿个周期
- 1080i60、每秒 60 场、9 Mbps – 每通道 34.5 亿个周期
与此类似,H.264 解码器消耗的周期数为:
- QCIF 分辨率、15 fps、128IKbps – 每通道 1400 万个周期
- CIF 分辨率、30 fps、300 Kbps – 每通道 7050 万个周期
- D1 分辨率、NTSC 或 PAL、2 Mbps –每通道 2.92 亿个周期
- 720p 分辨率、30 fps、6 Mbps – 每通道 7.8 亿个周期
- 1080i60、每秒 60 场、9 Mbps –每通道 16.6 亿个周期
转码应用(包括完整的解码器和编码器)消耗的周期数是编码器和解码器所消耗的总和,在需要的情况下也会加上扩展的消耗。
2.3 存储器的考虑事项
在成本与存储器要求之间进行权衡折中是任何硬件设计都需要考虑的重要因素。在分析多核视频处理解决方案的存储器要求时,需要明确以下几个问题:
- 需要多大存储量的存储器,以及存储器的类型(专有还是共享)是什么?
- 存储器的速度是否足够支持流量需求?
- 接入总线的速度是否足以支持流量需求?
- 存储器架构是否能够以最少的多核性能损失支持多核接入?
- 存储器架构是否能以最小的数据冲突支持处理器数据流的输入与输出?
- 支持存储器接入(诸如 DMA 通道、DMA 控制器、预取机制和快速智能高速缓冲架构 )的现有硬件有哪些?所需存储器的存储量取决于应用。以下三个应用实例介绍了三种不同的存储器要求:
无线传输速率:在单帧运动估算参考 (single-motion estimation reference frame) 中以极低的延迟从 QCIF H.264BP 转换至 QCIF H.264BP 需要足够的存储容量才能存储 5 个帧。每帧需要 38016 个字节,那么一个通道(包括输入和输出媒体流的存储)所需存储器的存储量为每通道不足 256KB。同时处理 200 个通道则需 50MB 的数据存储。
多通道解码器应用实例:对于 H264 HP 1080p 解码器,如果两个连续的 P 帧和 I 帧之间的 B 帧数目等于或少于 5,那么我们只需要足够存储 7~8 个帧的存储空间,因而单个通道(包含存储输入和输出媒体流)所需的存储量应少于每通道 25MB。同时处理 5 个通道需要 125MB 的数据存储器。
包含实时电视广播的高质量视频流示例:应 FCC 的要求在系统中有 7 秒的延迟时,对实时电视节目采用 H.264HP 720P60 编码需要每个通道存储 600MB。并行处理两个通道需要 1.2GB 的数据存储量。
为了最大限度地提高视频处理系统的低成本优势,数据必须驻留在外部存储器中,其大小需要根据系统存储器最差的应用状态来选择。与此同时,处理过的数据必须存放在内部存储器中才能支持处理器的高吞吐量。优化的系统会使用乒乓机制将数据从外部存储器移至内部存储器,而将数据从内存移至外部存储器的同时还要处理来自内部存储器的数据。典型的处理器具有一个可配置为高速缓存或 RAM 的小型 L1 存储器,用于每个内核(可配置为高速缓存或 RAM)的较大型专用 L2 存储器,以及处理器中每个内核都能够存取的共享 L2 存储器均可使用。为加强乒乓机制,需要用多个相互独立的 DMA 通道从外部存储器中读写数据。
附录C 外部存储器带宽-为支持乒乓机制用于上述三个应用实例,估算了将数据从外部存储器移至内部存储器所需的带宽。外部存储器的有效带宽必须大于 3.5Gbps。
2.4 多内核间的协作与同步
当多个内核处理同一视频通道时,这些内核之间必须相互通信,才能实现对输入数据的同步、分离或共享,合并输出数据或者在处理过程中交换数据。附录 A - 解码器性能依赖阐述了将视频处理功能划分成多个内核的几种算法。
并行处理法和流水线处理法是两种常用的分区算法。并行处理的范例是两个或两个以上的内核可以处理同一输入通道。必须有一个不受竞态条件影响的机制在多个内核之间共享信息。可将信号标用来保护全局区域免受竞态条件的干扰。硬件需要支持阻塞性和非阻塞性信号标,以有效消除竞态条件,即消除两个内核同时占用同一存储器地址的可能性。
如果使用流水线算法,一个或一个以上的内核可执行运算的第一部分,然后再将中间结果传递第二组内核继续处理。由于视频处理负载取决于处理的内容,因而这种传递机制可能面临如下问题:
- 如果一个以上的内核处理流水线的第一阶段,那么第 N+1 帧可能先于第 N 帧被处理好。因此该传递机制必须能够对输出/输入进行排序。
- 即使流水线上的各内核总体是均衡的(在处理负载方面),但个别帧未必如此。该传递机制必须在不同的流水线阶段之间提供缓冲,以使内核没完成工作时不至于影响其他内核停滞等待。
- 如果算法要求流水线的两个阶段间能稳固实现紧密的链接(例如,为解决依赖性的问题),则该机制就必须能够支持紧密链接与松散链接。
2.5 多芯片系统
实时处理超级视频 (SVGA)、4K 及更高分辨率,或处理 5 级 H.264HP可能需要不止一个芯片一起协作。要构建一个具有超高处理能力的双芯片系统,拥有可连接两个芯片的超快速总线至关重要。
第三部分描述了可满足上述所有要求及难题的 KeyStone系列 DSP架构。
3.KeyStone DSP – TI 最新多内核处理器
TI KeyStone 架构描述了广泛应用于视频处理等要求高性能和高带宽的系列多内核设备。图 2 对 KeyStone DSP进行了概括性描述。本章针对在第二部分中阐述的视频处理硬件要求对 KeyStone DSP 特性进行了介绍。
图 2 KeyStone DSP 方框图
表 1 说明 KeyStone DSP 如何满足视频处理要求。
附录A - 解码器性能相关性
编码器所采用的工具和算法以及视频内容都会影响解码器的性能。下列因素将影响解码器性能:
- CABAC 或 CAVLC 熵解码器的选择
- 跳帧的数量
- 帧内预测模式的复杂性
- 预测类型—运动估算或帧内预测。(运动补偿需要消耗的解码周期数不同于帧内预测补偿。采用运动补偿还是帧内预测取决于编码器。)
- 不同的运动估算工具(每个宏模块一个运动矢量,每个宏模块 4个运动矢量,或每个宏模块 8 个运动矢量)能改变解码器的复杂度和周期数。
- B 帧宏模块的运动补偿涉及两个参考宏模块,并消耗更多周期。
- 媒体流中的运动量不仅会更改跳过宏模块的数目,同时还会改变解码器的处理要求。
- 比特流在运动矢量、模块值、标记等各个不同值等之间的分配取决于媒体流的内容和编码器算法。不同的分配会相应改变熵解码器的周期数。
附录B — 运动估算和速率控制
运动估算是 H.264 编码中很大一部分内容。H.264 编码器的质量取决于运动估算算法的质量。运动估算所需的周期数取决于运动估算算法的功能特性及特征。以下是几个影响运动估算周期消耗的主要因素:
- I 帧、P 帧和 B 帧的频率
- L0(对于 P 帧和 B 帧)和 L1(对于 B 帧)中的参考帧数目
- 搜索区域的数目
- 搜索区的大小
- 搜索算法
良好的运动估算算法可能消耗总编码周期的 40-50%,乃至更多。
速率控制算法是影响编码质量的主要因素。为了最大限度地提高视频的感知质量,智能速率控制算法可在宏模块和帧之间分配可用的比特。
部分系统可执行多重处理通道,以便在宏模块之间更好的分配可用比特。多条通道虽然能提高感知质量,但却要求更密集的处理。
附录C - 外部存储器带宽
由于运动估算算法的原因,编码器通常比解码器需要更高的内部带宽。编码器的要求分两种情况计算:低比特率 QCIF 和高比特率的 1080p。
- 第一种情况 -- QCIF 264 BP 编码器:
两个完整的 QCIF 帧能驻留在高速缓存或 L2 乒乓缓冲器中。每个帧需要的容量不到 40 KB。采用一个参考帧对某一帧进行编码时,系统应为每次 QCIF 处理传输 80KB 的数据,并输出少量数据。200 个15 fps 的 QCIF 通道所需的总内部带宽为:
80KB * 15 (fps) * 200(通道数)+ 200(通道数)* 256/8 KB(QCIF 通道的输出比特率)= 240MB + 6.4MB = 250MB/s
- 第二种情况 -- 1080p 60 H.264 HP:
假定采用最差情况中的算法来执行运动参考帧的运动估算,该参考帧可能需要从外部存储器移至内部存储器多达三次。此外,也可假定采用多达四个参考帧的高级算法。因此,单个 1080p60 通道的运动估算是:
3(复制 3 次)* 1920*1080*1(在运动估算中,每像素仅 1 个字节)*60 (fps) * 4(参考通道) = 1492.992 MBps
是否移动可进行处理和运动补偿的当前帧由以下情况来确定:
2(当前帧和运动补偿)* 1920 * 1080 * 1.5(字节/像素)* 60 = 373.248 MBps
综上所述,以上两个汇总结果规定了输出比特流。一个通道的总和为1866.24 MBps,即两个 H.264 HP 1080p60 编码器为 3732.48 MBps,这意味着约占用外部存储器原始数据带宽的 30%。