通信基础局端网络面临的挑战在于,如何才能够将所有的内容交付给所有所需用户,同时又能维持硬件资源的高利用率和高效性。为了进一步阐述这一挑战,不妨考虑一下这个事实,单个 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。