在 FPGA 上实现H.264/AVC 视频编码...
发布时间:2008/6/5 0:00:00 访问次数:301
实现 h.264/avc 编码标准所需的算法计算复杂度、数据局部性,以及算法和数据并行性,常常会直接影响系统级别的整体架构决策。这种影响又会决定在广播、视频编辑、电话会议以及消费电子领域开发h.264/avc解决方案所需的最终开发成本。
图 1 包括功能块和数据流的 h.264/avc 宏块编码器
图2 典型h.264/avc硬件/软件功能块分割
复杂度分析
为了实现实时 h.264/avc 标准清晰度 (sd) 或高清晰度 (hd) 分辩率编码解决方案,系统架构师常常需要使用多个 fpga 和可编程 dsp。为了说明所需计算的巨大复杂度,先探讨一下 h.264/avc 编码器的典型运行时的周期要求。h.264/avc 编码器基于由联合视频工作组(jvt)提供的软件模型,该工作组由来自 itu-t 的视频编码专家组 (vceg) 和 iso/iec 的运动图像专家组 (mpeg) 的专家组成。
采用intel的vtune软件,在 intel pentium iii 1.0 ghz 通用 cpu、512 mb 内存的平台上运行,按照主要配置编码解决方案实现 h.264/avc sd,需要约 1,600 bops(每秒十亿次运算)。
表 1 显示了基于 pentium iii 通用处理器架构的 h.264/avc 编码器的复杂度的典型情况。请注意,在表 1 中,运动估计、宏块/块处理(包括模式决策),以及运动补偿模块是基本候选硬件加速单元。
然而,单凭计算复杂度并不能决定一个功能模块是否应映射为硬件或是使其保持为软件。为了评估在由 fpga、可编程 dsp或通用主处理器混合组成的平台上实现 h.264/avc 编码标准时,软件和硬件分割的可行性,需要分析将会影响整体设计决策的大量架构问题。
数据局部性。在同步设计中,按照特定的顺序和粒度访问内存,同时根据延迟、总线竞争、对准、dma 传输率以及所用内存的类型(如 zbt 内存、sdram和 sram 等)使时钟周期数降至最小的能力至关重要。数据局部性问题主要是由数据单元和算术单元(或处理引擎)之间的物理接口体现的。
数据并行性。大多数信号处理算法都是对高度并行的数据进行操作(如 fir 滤波)。单指令多数据 (simd) 和向量处理器对可被并行化或做成向量格式(或长数据宽度)的数据具有较高的处理效率。
fpga可通过提供大量块 ram 支持大量极高总计带宽要求来实现这一点。在新的 xilinx virtex-4 sx器件中,块 ram 的数量与 xtreme dsp的逻辑片数紧密匹配(例如,sx25具有128个块ram,128个dsp逻辑片;sx35具有192个块 ram,192个dsp 逻辑片;sx55具有320个块 ram,512个dsp逻辑片)。
信号处理算法并行机制。在典型的可编程 dsp 或通用处理器中,信号处理算法并行机制通常是指指令级并行 (ilp)。超长指令字 (vliw) 处理器是此类采用ilp的机器中的一个例子,它将多条指令(add、mult 及 bra)组合起来,在一个周期内执行。处理器中高度流水线化的执行单元也是实现并行机制的典型硬件示例。现在已经有可编程dsp采用这种架构(如ti的tms320c64x)。
但是,并非所有算法都能使用这种并行机制。递归算法,如 iir 滤波、mpeg 1/2/4 中的变长编码 (vlc)、上下文自适应变长编码 (cavlc),以及 h.264/avc 中的上下文自适应二进制算术编码 (cabac),当映射到这些可编程 dsp 时,均无法达到最优且效率不高。这是因为数据递归阻碍了 ilp 的有效利用。作为取代方案,可在fpga 结构中有效地构建专用硬件引擎。
计算复杂度。可编程 dsp 受计算复杂度的限制,可通过处理器的时钟速率来度量。在fpga中实现的信号处理算法通常为计算密集型算法。其中的例子有运动估计中的绝对差值和 (sad) 引擎以及视频缩放。
通过将这些模块映射到 fpga 中,主处理器或可编程dsp就可有额外的周期来处理其他算法。此外,fpga 结构还可以具有多时钟域,从而允许选择性硬件模块根据各自的计算要求使用独立的时钟速度。
理论上质量的最优性。当且仅当对复杂度没有限制时,任何基于速率失真曲线的理论最优解决方案均可实现。在可编程 dsp 或通用处理器中,计算复杂度常受可用时钟周期的限制。而 fpga 则相反,通过对硬件引擎的多重实例化,或提高结构中块 ram 和寄存器组的利用率,实行数据和算法并行机制,从而提供更高的灵活性。
可编程 dsp 或通用处理器通常受每个周期发出的指令数、执行单元中的流水线级数以及完全馈
实现 h.264/avc 编码标准所需的算法计算复杂度、数据局部性,以及算法和数据并行性,常常会直接影响系统级别的整体架构决策。这种影响又会决定在广播、视频编辑、电话会议以及消费电子领域开发h.264/avc解决方案所需的最终开发成本。
图 1 包括功能块和数据流的 h.264/avc 宏块编码器
图2 典型h.264/avc硬件/软件功能块分割
复杂度分析
为了实现实时 h.264/avc 标准清晰度 (sd) 或高清晰度 (hd) 分辩率编码解决方案,系统架构师常常需要使用多个 fpga 和可编程 dsp。为了说明所需计算的巨大复杂度,先探讨一下 h.264/avc 编码器的典型运行时的周期要求。h.264/avc 编码器基于由联合视频工作组(jvt)提供的软件模型,该工作组由来自 itu-t 的视频编码专家组 (vceg) 和 iso/iec 的运动图像专家组 (mpeg) 的专家组成。
采用intel的vtune软件,在 intel pentium iii 1.0 ghz 通用 cpu、512 mb 内存的平台上运行,按照主要配置编码解决方案实现 h.264/avc sd,需要约 1,600 bops(每秒十亿次运算)。
表 1 显示了基于 pentium iii 通用处理器架构的 h.264/avc 编码器的复杂度的典型情况。请注意,在表 1 中,运动估计、宏块/块处理(包括模式决策),以及运动补偿模块是基本候选硬件加速单元。
然而,单凭计算复杂度并不能决定一个功能模块是否应映射为硬件或是使其保持为软件。为了评估在由 fpga、可编程 dsp或通用主处理器混合组成的平台上实现 h.264/avc 编码标准时,软件和硬件分割的可行性,需要分析将会影响整体设计决策的大量架构问题。
数据局部性。在同步设计中,按照特定的顺序和粒度访问内存,同时根据延迟、总线竞争、对准、dma 传输率以及所用内存的类型(如 zbt 内存、sdram和 sram 等)使时钟周期数降至最小的能力至关重要。数据局部性问题主要是由数据单元和算术单元(或处理引擎)之间的物理接口体现的。
数据并行性。大多数信号处理算法都是对高度并行的数据进行操作(如 fir 滤波)。单指令多数据 (simd) 和向量处理器对可被并行化或做成向量格式(或长数据宽度)的数据具有较高的处理效率。
fpga可通过提供大量块 ram 支持大量极高总计带宽要求来实现这一点。在新的 xilinx virtex-4 sx器件中,块 ram 的数量与 xtreme dsp的逻辑片数紧密匹配(例如,sx25具有128个块ram,128个dsp逻辑片;sx35具有192个块 ram,192个dsp 逻辑片;sx55具有320个块 ram,512个dsp逻辑片)。
信号处理算法并行机制。在典型的可编程 dsp 或通用处理器中,信号处理算法并行机制通常是指指令级并行 (ilp)。超长指令字 (vliw) 处理器是此类采用ilp的机器中的一个例子,它将多条指令(add、mult 及 bra)组合起来,在一个周期内执行。处理器中高度流水线化的执行单元也是实现并行机制的典型硬件示例。现在已经有可编程dsp采用这种架构(如ti的tms320c64x)。
但是,并非所有算法都能使用这种并行机制。递归算法,如 iir 滤波、mpeg 1/2/4 中的变长编码 (vlc)、上下文自适应变长编码 (cavlc),以及 h.264/avc 中的上下文自适应二进制算术编码 (cabac),当映射到这些可编程 dsp 时,均无法达到最优且效率不高。这是因为数据递归阻碍了 ilp 的有效利用。作为取代方案,可在fpga 结构中有效地构建专用硬件引擎。
计算复杂度。可编程 dsp 受计算复杂度的限制,可通过处理器的时钟速率来度量。在fpga中实现的信号处理算法通常为计算密集型算法。其中的例子有运动估计中的绝对差值和 (sad) 引擎以及视频缩放。
通过将这些模块映射到 fpga 中,主处理器或可编程dsp就可有额外的周期来处理其他算法。此外,fpga 结构还可以具有多时钟域,从而允许选择性硬件模块根据各自的计算要求使用独立的时钟速度。
理论上质量的最优性。当且仅当对复杂度没有限制时,任何基于速率失真曲线的理论最优解决方案均可实现。在可编程 dsp 或通用处理器中,计算复杂度常受可用时钟周期的限制。而 fpga 则相反,通过对硬件引擎的多重实例化,或提高结构中块 ram 和寄存器组的利用率,实行数据和算法并行机制,从而提供更高的灵活性。
可编程 dsp 或通用处理器通常受每个周期发出的指令数、执行单元中的流水线级数以及完全馈
上一篇:3GSM世界大会领航未来手机发展