CN102804165A - 具有可扩展数据路径的前端处理器 - Google Patents
具有可扩展数据路径的前端处理器 Download PDFInfo
- Publication number
- CN102804165A CN102804165A CN2010800162519A CN201080016251A CN102804165A CN 102804165 A CN102804165 A CN 102804165A CN 2010800162519 A CN2010800162519 A CN 2010800162519A CN 201080016251 A CN201080016251 A CN 201080016251A CN 102804165 A CN102804165 A CN 102804165A
- Authority
- CN
- China
- Prior art keywords
- data
- processor
- programmable functions
- input
- data routing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000006870 function Effects 0.000 claims abstract description 107
- 238000012545 processing Methods 0.000 claims abstract description 99
- 230000033001 locomotion Effects 0.000 claims abstract description 79
- 230000015654 memory Effects 0.000 claims abstract description 53
- 238000001914 filtration Methods 0.000 claims description 95
- 238000000034 method Methods 0.000 claims description 57
- 230000008569 process Effects 0.000 claims description 28
- 230000008030 elimination Effects 0.000 claims description 22
- 238000003379 elimination reaction Methods 0.000 claims description 22
- 238000011002 quantification Methods 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 8
- 238000013139 quantization Methods 0.000 abstract description 9
- 229920009441 perflouroethylene propylene Polymers 0.000 description 76
- 239000011159 matrix material Substances 0.000 description 44
- 238000010586 diagram Methods 0.000 description 27
- 230000014509 gene expression Effects 0.000 description 27
- 230000017105 transposition Effects 0.000 description 18
- 238000006243 chemical reaction Methods 0.000 description 15
- 230000002441 reversible effect Effects 0.000 description 13
- 230000009466 transformation Effects 0.000 description 13
- 239000013598 vector Substances 0.000 description 13
- 238000007792 addition Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 10
- 238000003860 storage Methods 0.000 description 10
- 230000007704 transition Effects 0.000 description 7
- 241001269238 Data Species 0.000 description 6
- 230000008520 organization Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000005055 memory storage Effects 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000003066 decision tree Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000002203 pretreatment Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011079 streamline operation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Discrete Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开一种具有多级并行性并且高度可配置的、还被优化用于媒体处理的处理架构。在最高级,架构被结构化,以使得专用于特定媒体处理功能的每个处理器能够基本上并行操作。除了处理器级并行性之外,每个处理单元可以在每个时钟周期中并行地对多个字,而不是仅单个字进行操作。此外,在指令级,控制数据存储器、数据存储器和功能特定数据路径可以全部在同一时钟周期内被控制。此外,处理器具有多层可配置性,处理器的可扩展数据路径能够被配置为执行特定处理功能,诸如熵编码、离散余弦变换(DCT)、逆向离散余弦变换(IDCT)、运动补偿、运动估计、去块滤波、去交织、去噪声、量化以及去量化。
Description
技术领域
本发明一般涉及处理器架构领域,并且更具体地涉及包括模版前端处理器(FEP)的处理单元,所述模版前端处理器具有根据多个特定功能处理需要定制该FEP的可扩展数据路径部分。
背景技术
媒体处理和通信设备包括利用互相依存的处理来使能媒体的处理和传输的硬件和软件系统。媒体处理包括多个处理功能需要,诸如熵编码、离散余弦变换(DCT)、逆向离散余弦变换(IDCT)、运动补偿、去块滤波、去交织以及去噪声。典型地,不同功能处理单元可以专用于每个前述不同功能需要并且每个功能单元的结构特定于在给定处理设备中使用的编码方法或标准。然而,期望无需从头开始设计每个功能处理单元的结构并且使得功能处理单元的结构以如此的方式被设计:其可以被编程用于任何编码标准或方法。
例如,基于整数的变换矩阵用于数据信号的变换编码,诸如用于编码图像/视频信号之类。离散余弦变换(DCT)广泛用于图像/视频信号的基于块的变换编码,并且已经在很多联合摄影专家组(JPEG)、运动图像专家组(MPEG)以及诸如MPEG-1、MPEG-2、H.261、H.263和H.264之类的网络协议标准中被采用。理想地,DCT是使用实值数字的标准正交变换。该理想DCT称作实DCT。常规DCT实现方式使用要求高计算资源的浮点算术。为了减小计算负担,已经开发了使用定点或大整数算术来近似浮点DCT的DCT算法。
在常规正向DCT中,图像数据被细分为小2维分段,诸如对称8×8像素块,并且每个8×8像素块通过2维DCT被处理。在硬件中实现该处理是资源密集的并且随着要变换的像素块大小的增大而以指数方式要求更多资源。此外,现有技术图像处理典型地使用用于DCT和IDCT的单独的硬件结构。此外,对于DCT和IDCT处理的现有技术方法要求不同的硬件来支持用不同DCT/IDCT处理方法的编解码器。因此,在其他配置中,对于DCT4×4、IDCT 4×4、DCT 8×8以及IDCT 8×8要求不同的硬件。
类似地,现有技术视频处理系统要求单独的硬件结构来对不同的COEDC(编解码)进行量化和去量化。现有技术运动补偿处理单元还使用多个处理单元(不同DSP)用于处理各种编解码,诸如H.264、MPEG 2和4、VC-1、AVS。然而,期望具有高度可配置的、可编程、可分级并且使用单个数据路径以小于500MHz的周期处理多个编解码的运动补偿处理单元。还期望具有使用较少时钟周期而不需要额外花费的有效处理。
此外,需要DBF,这是因为它们去除帧中的处理块之间的不连续性。在逐个块的级别上处理帧。当通过将所有块放置在一起来重构帧时,在需要被平滑的块之间可能存在不连续性。需要滤波以响应于边界差异。过多的滤波创建伪像。过少滤波不能去除图像的粗糙(choppiness)/块效应(blockiness)。典型地,使用每个块的每个边缘并且通过所有块边缘工作而顺序地完成去块。块可以是任何大小:16×16、4×4(如果H.264)或者8×8(如果AVS或者VC-1)。
为了适当地执行DBF,在正确的时间需要可用的正确数据以进行滤波。本领域的普通技术人员将认识为了获得高阶处理速度(示例:每秒30帧),需要剪裁(tailor)DBF为特定编解码,类似H.264可编程DBF可以使用一般RISC处理器,但是其不能对于任一个编解码器被优化,因此将不能实现高处理速度(即,每秒30帧)。假定每个编解码器对于DBF将什么时候出现以及DBF将以什么顺序出现具有不同的方法,那么对于剪裁单个去块DSP来完成DBF变得有挑战性。
因此,需要可以被剪裁为各种功能处理需要所需的每个处理单元的模版处理结构。进一步存在对于将DCT和IDCT功能组合为单个处理块的需要。并且对于可以用于在单个时钟周期中对8个字完成量化和去量化二者的统一硬件结构也存在进一步的需要。
本领域仍然还需要以下硬件处理结构:其足以灵活地实现不同公式以支持多个CODEC标准并且具有在线(on the fly)计算大量系数而不需要开销来加速熵编码的处理的能力。因此,现有技术需要具有以下去块滤波DSP:a)可以被编程以用于任何编解码,特别是H.264、AVS、MPEG-2、MPEG-4、VC-1以及其派生或更新,以及b)可以每秒至少30帧操作。
此外,还需要二维寄存器组布置以方便单个时钟周期中的二维处理,由此加速处理功能。在处理器中,数据寄存器用于上载操作的操作数并且然后存储输出。它们典型地仅仅在一维中可存取。图3示出在时钟周期中一维中可存取的现有技术寄存器组300。然而,处理能力密集任务,诸如与媒体处理有关的那些,需要单个时钟周期中的大得多的处理来加速功能。
还需要以下媒体处理单元:可以用于执行各种种类媒体数据(诸如图形、文本以及视频之类)的给定处理功能并且可以被剪裁为用任意编码标准或方法工作。进一步优选这样的处理单元与统一处理方法一起提供最优数据/存储器管理,以使能成本效率和有效的处理系统。更具体地,需要以下片上系统架构:可以被有效地定标(scale)为满足新处理要求的,而同时使能高处理吞吐量。
发明内容
本说明书公开一种具有多级并行性并且高度可配置的、还被优化用于媒体处理的处理架构。具体地,新架构具有三级并行性。在最高级,架构被结构化,以使得每个专用于特定媒体处理功能的处理器能够基本并行操作。例如,如图19所示,系统架构可以包括多个处理器1901-1910,每个处理器专用于特定处理功能,诸如熵编码(1910)、离散余弦变换(DCT)(1902)、逆向离散余弦变换(IDCT)(1903)、运动补偿(1904)、运动估计(1905)、去块滤波(1906)、去交织(1907)、去噪声(1908)、量化(1909)以及去量化(1910),以及能够由任务调度器1911管理。除了处理器级并行性之外,每个处理单元(1901-1910)每个时钟周期可以并行地对多个字操作,而不是仅对单个字操作。最后,在指令级,控制数据存储器(如图1中125所示)、数据存储器(如图1中185所示),以及功能特定数据路径(如图1中115所示)可以全部在同一时钟周期内进行控制。
因此处理器对可以处理多少数据不具有固有的限制。不像其他处理器,本公开的处理器对于可以实现的功能数据路径或者执行单元的数量不具有限制,这是因为多个数据总线,即一条程序数据总线和两条数据总线,其并行操作并且其中每个总线是可配置的,使得可以承载一个或N个操作数。
除了该多层并行性,处理器具有多层可配置性。参考图1,可以配置处理器110以通过将功能特定数据路径115剪裁为期望的功能,同时保持处理器的剩余功能单元相同来执行每个特定处理功能,诸如熵编码、离散余弦变换(DCT)、逆向离散余弦变换(IDCT)、运动补偿、运动估计、去块滤波、去交织、去噪声、量化以及去量化。此外,每个在功能上被剪裁的处理器可以被进一步配置,以具体地支持特定的视频处理标准或协议,这是因为功能特定数据路径已经被设计为灵活地支持许多处理编解码器、标准或协议,包括H.264、H.263、VC-1、MPEG-2、MPEG-4以及AVS。
在一个实施例中,本发明针对一种具有可配置功能数据路径的处理器,其包括:多个地址生成器单元;程序流控制单元;多个数据和地址寄存器;指令控制器;可编程功能数据路径;以及至少两个存储器数据总线,其中,所述两个存储器数据总线的每一个与所述多个地址生成器单元、程序流控制单元、多个数据和地址寄存器、指令控制器、以及可编程功能数据路径进行数据通信。可选择地,可编程功能数据路径包括被配置为对输入到所述可编程功能数据路径的数据执行熵编码、离散余弦变换(DCT)、逆向离散余弦变换(IDCT)、运动补偿、运动估计、去块滤波、去交织、去噪声、量化、或去量化的电路。可选择地,被配置为对输入到所述可编程功能数据路径的数据执行熵编码、离散余弦变换(DCT)、逆向离散余弦变换(IDCT)、运动补偿、运动估计、去块滤波、去交织、去噪声、量化、或去量化处理的电路可以在逻辑上被编程,以根据H.264、MPEG-2、MPEG-4、VC-1或AVS协议中的任一个执行该处理,而不需要修改物理电路。可选择地,可以执行前述处理中的任一个,以使得能够以500MHz或更低的处理器频率以每秒至少30帧显示视频。
在另一个实施例中,本发明针对一种处理器,其包括:多个地址生成器单元;程序流控制单元;多个数据和地址寄存器;指令控制器;以及可编程功能数据路径,其中所述可编程功能数据路径包括被配置为对输入到所述可编程功能数据路径的数据执行以下处理功能中的任一个的电路:DCT处理、IDCT处理、运动估计、运动补偿、熵编码、去交织、去噪声、量化、或去量化。可选择地,可以在逻辑上编程该电路,以根据H.264、MPEG-2、MPEG-4、VC-1或AVS协议中的任一个执行所述处理功能,而不需要修改物理电路。可以执行处理功能,以使得能够以500MHz或更低的处理器频率以每秒至少30帧显示视频。
在另一个实施例中,本发明是一种片上系统,其包括至少5个如权利要求1所述的处理器以及任务调度器,其中,第一处理器包括被配置为对输入到可编程功能数据路径的数据执行熵编码的可编程功能数据路径;第二处理器包括被配置为对输入到可编程功能数据路径的数据执行离散余弦变换的可编程功能数据路径;第三处理器包括被配置为对输入到可编程功能数据路径的数据执行运动补偿的可编程功能数据路径;第四处理器包括被配置为对输入到可编程功能数据路径的数据执行去块滤波的可编程功能数据路径;以及第五处理器包括被配置为对输入到可编程功能数据路径的数据执行去交织的可编程功能数据路径。针对在此描述的处理功能中的任一个可以包括附加的处理器。
因此,本发明的目的是提供一种包括模板前端处理器(FEP)的媒体处理单元,所述模板前端处理器(FEP)具有用于根据多个特定功能处理需要定制FEP的可扩展数据路径部分。
本发明的另一目的是提供一种二维寄存器组布置以方便在单个时钟周期中的二维处理,由此加速处理功能。
根据另一目的,本发明的处理单元将DCT和IDCT功能组合在单个统一的块中。单个可编程处理块允许2、4和4点正向DCT和逆向DCT的高效计算处理。
本发明的又一目的是提供一种处理单元,该处理单元将量化(QT)和去量化(DQT)功能组合在单个统一的块中并且对于实现不同公式以支持多个CODEC标准是足够灵活的,并且具有在线计算有效系数而不需要用于加速熵编码处理的开销的能力。因此,在一个实施例中,统一的处理单元用于在单个时钟周期中对8个字进行量化和去量化两者。
根据本发明的另一目的,运动补偿处理单元使用单个数据路径来处理多个编解码器。
本发明的另一目的是具有一种去块滤波DSP,该去块滤波DSP可以被编程以用于任何编解码器并且还可以以每秒至少30帧操作。
本发明的又一目的是具有一种媒体处理单元,该媒体处理单元可以用于执行各种媒体数据(诸如,图形、文本和视频)的给定处理功能,并且可以被剪裁为用任何编码标准或方法工作。因此,在一个实施例中,本发明的媒体处理单元与统一的处理方法一起提供了最优数据/存储器管理来使能成本效能和有效处理系统。
附图说明
将认识本发明的这些和其他特征和优点,因为当连同附图考虑时通过参考下面的详细描述,它们变得更好理解。
图1是本发明的处理单元的一个实施例的框图;
图2是图示指令格式的框图;
图3是现有技术一维寄存器组的框图;
图4是图示本发明的二维寄存器组布置的框图;
图5示出本发明DCT/IDCT-QT(离散余弦变换/逆向离散余弦变换-量化)处理器的一个实施例的顶级架构;
图6a是8点正向DCT的8行×8列矩阵表示的第一种表示;
图6b是8点正向DCT的8行×8列矩阵表示的第二种表示;
图6c是8点正向DCT的8行×8列矩阵表示的第三种表示;
图7a示出本发明的8点DCT系统的电路结构;
图7b是本发明中实现的包括一对加法器和减法器的加法和减法电路的结构;
图7c是本发明中实现的乘法电路的结构;
图8a是8点逆向DCT的8行×8列矩阵表示的第一种表示;
图8b是8点逆向DCT的8行×8列矩阵表示的第二种表示;
图8c是8点逆向DCT的8行×8列矩阵表示的第三种表示;
图9a示出本发明的8点逆向DCT的电路结构;
图9b是本发明中实现的乘法电路的结构视图;
图10a是4点正向DCT的4行×4列矩阵表示的第一种表示;
图10b是4点正向DCT的4行×4列矩阵表示的第二种表示;
图10c是4点正向DCT的4行×4列矩阵表示的第三种表示;
图11a示出本发明的4点DCT系统的电路结构;
图11b是包括一对加法器和减法器的加法和减法电路的结构视图;
图11c是乘法电路的结构视图;
图12a是4点逆向DCT的4行×4列矩阵表示的第一种表示;
图12b是4点逆向DCT的4行×4列矩阵表示的第二种表示;
图12c是4点逆向DCT的4行×4列矩阵表示的第三种表示;
图13示出本发明的4点逆向DCT的电路结构;
图14a是2点正向DCT的2行×2列矩阵表示的第一种表示;
图14b是2点正向DCT的2行×2列矩阵表示的第二种表示;
图14c是2点正向DCT的2行×2列矩阵表示的第三种表示;
图15示出2点正向DCT和逆向DCT的电路结构;
图16是描述视频样本集的变换和量化的框图;
图17是视频序列的框图;
图18是图示映像存储器(shadow memory)的示例性操作表;
图19示出专用于不同处理功能、并行操作的多个处理器的处理架构;
图20示出如图21所示的8个单元的多层AC/DC量化器/去量化器硬件单元中的一个;
图21示出如图5所示的8个单元量化器/去量化器的顶级架构;
图22示出本发明的运动补偿引擎的硬件结构的实施例;
图23描绘本发明的运动补偿引擎的架构;
图24示出本发明的定标器数据路径的一部分的实施例;
图25是自适应去块滤波处理器的一个实施例的框图;
图26示出多个去块滤波数据路径阶段(phase);
图27示出多个数据路径流水线阶段;
图28示出H.264/AVC的垂直和水平边缘的顺序次序;
图29示出边界强度分配的判定树(H.264/AVC);
图30示出边界强度分配的判定树(AVS);
图31示出2个相邻块的8个像素的样本线(垂直方向或水平方向);
图32示出帧内8×8块之间的重叠平滑示例;
图33示出某些滤波公式;
图34是本发明示例性运动估计处理器的框图;
图35图示本发明运动估计引擎的6抽头滤波器的布置;
图36按滤波器设计详述集成电路;
图37图示ME阵列的示例性结构;
图38是图示运动估计处理步骤的流程图;
图39图示半像素值相对整数像素值;
图40图示当前整数值与计算的半像素值的比较;
图41是描绘IMIF和EMIF之间的映像存储器的使用的框图;
图42是80比特指令格式的实施例;以及
图43是前端处理器(FEP)的流水线图。
具体实施方式
虽然本发明可以体现在很多不同形式中,但对于促进对本发明原理理解的目的,现在将对附图中图示的实施例进行引用并且将使用特定语言来进行描述。然而将理解不意图由此限制本发明的范围。将描述的实施例中的任何改变以及另外的修改,以及在此描述的本发明原理的任何另外的应用设想为本发明相关领域的技术人员正常想到的。在附图中使用箭头的地方,本领域的普通技术人员应认识箭头表示经由总线或任何其他类型的通信信道互连元件和/或组件。
目前将参考前述附图描述本发明。标题将用于清楚的目的并且不意味着限制或者另外地限定在此进行的公开。在附图中使用箭头的地方,本领域的普通技术人员应认识箭头表示经由总线或任何其他类型的通信信道互连元件和/或组件。
图1示出包括具有可扩展数据路径(ETP)部分110的模版前端处理器(FEP)105的本发明的处理单元100的框图。可扩展数据路径部分110用于针对多种特定功能处理需要定制本发明的处理单元100。在一个实施例中,处理单元100处理可视媒体,诸如文本、图像和视频之类。媒体处理单元对数据执行特定媒体功能,诸如熵编码、离散余弦变换(DCT)、逆向离散余弦变换(IDCT)、运动补偿、去块滤波、去交织、去噪声、运动估计、量化、去量化或本领域普通技术人员已知的任何其他功能。本发明处理单元100的可扩展数据路径部分110包括多个功能特定数据路径115(0到N,其中N是任何数字),其可以被定制来将FEP105剪裁为诸如上面描述的那些之类的每个特定媒体处理功能。
应认识当对于特定处理功能被配置时,该处理器可以在包括多个处理器1901-1910的系统架构中实现,每个处理器专用于特定处理功能,诸如熵编码(1901)、离散余弦变换(DCT)(1902)、逆向离散余弦变换(IDCT)(1903)、运动补偿(1904)、运动估计(1905)、去块滤波(1906)、去交织(1907)、去噪声(1908)、量化(1909)以及去量化(1910),并且由任务调度器1911管理。除了处理器级并行性之外,每个处理单元(1901-1910)可以每个时钟周期对多个字并行地操作,而不是仅操作单个字。最后,在指令级,控制数据存储器(如图1中125所示)、数据存储器(如图1中185所示)以及功能特定数据路径(如图1中115所示)可以全部在同一时钟周期内被控制。处理器对于可以处理多少数据不具有固有限制。不像其他处理器,本公开的处理器对于可以实现的功能数据路径或执行单元的数量没有限制,这是因为多条数据总线,即一条程序数据总线和两条数据总线,该多条数据总线并行地操作并且其中每条总线是可配置的使得其可以传送一个或N个操作数。
除了该多层并行性之外,处理器具有多层可配置性。参考图1,通过将功能特定数据路径115剪裁为期望的功能性同时保持剩余的处理器的功能单元相同,可以将处理器110配置为执行每个特定处理功能,诸如熵编码、离散余弦变换(DCT)、逆向离散余弦变换(IDCT)、运动补偿、运动估计、去块滤波、去交织、去噪声、量化以及去量化。此外,每个在功能上被裁减的处理器还可以被配置为具体地支持特定的视频处理标准或协议,这是因为功能特定数据路径已经被设计为灵活地支持许多处理标准和协议,包括H.264、VC-1、MPEG-2、MPEG-4以及AVS。还应该认识处理器可以传递前述益处和特征,同时仍处理媒体,包括高清视频(1080×1920或更高),并且以小于500MHz并且更具体地小于250MHz的处理器速度来在每秒30帧或更快地使能其显示。
FEP 105包括经由在一个实施例中是128比特数据总线的数据总线130连接至数据存储器125的两个地址生成单元(AGU)120。数据总线还连接PCU 16×16寄存器文件(register file)135、地址寄存器140、程序控制145、程序存储器150、运算逻辑单元(ALU)155、指令分派和控制寄存器160以及引擎接口165。块190描绘MOVE(移动)块。FEP 105接收并且管理指令,将数据路径特定的指令转发到可扩展数据路径110,并且管理包含被正在被处理的数据的寄存器。
在一个实施例中,FEP 105具有128个数据寄存器,其被进一步分为可扩展数据路径110的上部96个寄存器和FEP 105的下部32个寄存器。在操作期间,将指令集传送到可扩展数据路径110并且FEP 105将必需数据指示到寄存器(AGU 120解码指令来知道将什么数据输入到寄存器内),通过可扩展数据110将要执行的数据分配到上部96个寄存器。例如,如果指令集是R3=R0+R1,那么由于这在ALU 155中完成,所以它的数据值存储在下部32个寄存器中。然而,如果另一个指令是需要由可扩展数据路径110执行的滤波指令,那么在上部96个寄存器中存储要求的数据。
可扩展数据路径110还包括指令解码器和控制器170并且具有从可变大小引擎寄存器文件180到数据存储器185的独立路径175。该路径175可以是任何大小,诸如1028比特、2056比特或其他大小,并且针对每个功能特定数据路径115而被定制。这对可以在任何给定时钟周期中处理的数据量提供灵活性。本领域的普通技术人员应该注意为了使可扩展数据路径110对于其意图的目的有用,处理单元100对于接受宽范围的指令是足够灵活的。图2的指令格式200是灵活的,在于分别对于指令集1和指令集2的第一和第二槽(slot)205和210可以用作每个18比特的两个单独指令或者一个36比特的指令或者四个9比特指令。该灵活性允许创建多个指令类型并且因此处理单元种类的灵活性可以被编程。
虽然下面将更加详细地描述特定于一个或多个媒体处理功能的每个功能路径,但特定于一个或多个媒体处理功能的一个或多个这样的功能路径利用的、使能快速数据访问的新系统和方法使用二维数据寄存器组。
图4示出本发明的二维数据寄存器组布置400的框图表示。寄存器组400使用在逻辑上分为二维行405和列410的物理寄存器。在操作期间,对于操作的操作数或者来自操作的输出被加载或存储在二维寄存器组的水平方向405或垂直方向410,以方便数据的二维处理。
当与图3的现有技术一维寄存器组300比较时,本发明的二维寄存器组400具有相同的行,寄存器0到寄存器N 405,然而寄存器组现在还具有可以被寻址为寄存器0到寄存器M 410的列。本领域的普通技术人员将认识这些寄存器可以以任何方式命名。
由此,在处理期间,当处理寄存器0(以进行诸如‘离散余弦变换’之类的变换)时,在现有技术中使用整个时钟周期仅仅访问一维寄存器中的寄存器0。然而,在本发明的二维寄存器组中,单个时钟周期不仅可以用于访问/处理寄存器0,而且可以用于访问/处理在逻辑上是不同的寄存器并且与寄存器0占据相同物理空间的列(定义为寄存器0到寄存器N)。
统一离散余弦变换/逆向离散余弦变换(DCT/IDCT)处理单元
图5示出本发明的DCT/IDCT-QT(离散余弦变换/逆向离散余弦变换-量化)处理器500的框图,该处理器500包括标准前端处理器(FEP)部分505和在本发明中被定制为执行用于处理诸如文本、图形和视频之类的视觉媒体的DCT和QT(量化)功能的可扩展数据路径(EDP)部分510。FEP 505包括第一地址生成单元506和第二地址生成单元507、程序流控制单元508以及数据和地址寄存器509。EDP部分510包括与转置寄存器的第一阵列514和第二阵列515通信的DCT单元513,该转置寄存器的第一阵列514和第二阵列515继而与数据和地址寄存器516以及8个量化器517通信。定标存储器518与寄存器516和量化器517进行数据通信。指令解码器和数据路径控制器519在EDP部分510中调整(coordinate)数据流。FEP 505和EDP 510与第一存储器总线520和第二存储器总线521数据连接。
应该认识DCT单元513、转置寄存器阵列514、515、定标存储器518和8个量化器517表示如图1中115所示的功能特定数据路径的元件。可以在一个或多个功能特定数据路径中提供这些元件。如图1和图5二者中所示,可扩展数据路径包括指令解码器和数据路径控制器170、519以及可变大小引擎寄存器文件180、516。
此外,如上面所讨论的,根据一个标准或协议用于处理DCT/IDCT功能的相同电路结构可以被多目的化(repurpose)并且可以被配置来处理不同标准或协议。特别地,用于根据H.264处理数据并且被使用的DCT/IDCT功能数据路径还根据VC-1、MPEG-2、MPEG-4或AVS处理数据。因此,可以用处理器500来DCT或IDCT处理图像中不同大小的块。例如,可以使用大小16×16、16×8、8×16、8×8、8×4、4×8和4×4的水平和垂直变换矩阵来变换16×16、16×8、8×16、8×8、8×4、4×8、和2×2宏块。
参考图7a,框图演示可以用于处理8×8宏块的DCT单元513。应认识图5的处理器500可以应用于变化大小的宏块的DCT或IDCT处理。通过回顾8×8、4×4和2×2块的DCT和IDCT处理(所有这些可以使用对于正实施的特定处理被可编程配置的相同的DCT单元513)将演示本发明的这个方面。
典型正向DCT可以数学地表达为Y=CXCT,其中C是变换矩阵,X是输入矩阵并且Y是输出变换系数。对于8点正向DCT,该公式可以以如图6a所示的8×8矩阵的形式在数学上实现。图6b示出将矩阵605和606相乘以后作为结果的矩阵公式615。在图6b中,将两侧的矩阵转置以最终获得图6c的矩阵625。对于H.264编解码,例如DCT 8×8系数c1:c7是{12,8,10,8,6,4,3}。
由此,在8点正向DCT模式中,将像素信息的8×8块变换为对应频率系数的8×8矩阵。为了进行该变换,本发明使用行-列方法,其中首先使用8点DCT将输入矩阵的每行变换,然后转置中间数据,并且然后进行另一轮的逐列变换。每次执行8点DCT,从下面所示的矩阵乘法中产生8个系数:
y0=[(x0+x7)+(x3+x4)]*c4+[(x1+x6)+(x2+x5)]*c4
y4=[(x0+x7)+(x3+x4)]*c4-[(x1+x6)+(x2+x5)]*c4
y2=[(x0+x7)-(x3+x4)]*c2+[(x1+x6)-(x2+x5)]*c6
y6=[(x0+x7)-(x3+x4)]*c6-[(x1+x6)-(x2+x5)]*c2
y1=[(x0-x7)*c1+(x3-x4)*c7]+[(x1-x6)*c3+(x2-x5)*c5]
y5=[(x0-x7)*c5+(x3-x4)*c3]-[(x1-x6)*c1-(x2-x5)*c7]
y3=[(x0-x7)*c3-(x3-x4)*c5]-[(x1-x6)*c7+(x2-x5)*c1]
y7=[(x0-x7)*c7-(x3-x4)*c1]-[(x1-x6)*c5-(x2-x5)*c3]
在一个实施例中,如图7a所示,这些公式以三个流水线阶段实现,每次产生八个系数。图7a示出图5的DCT单元513的逻辑结构700。图7b是包括加法器705和减法器706的加法和减法电路701的基本逻辑结构的视图。输入数据x0和x1作为加法器705和减法器706的输入。加法器705将x0和x1相加的结果输出为x0+x1,而减法器706将x0和x1相减的结果输出为x0-x1。图7c是将一对输入数据x0和x1与参数c1和c7相乘以输出四元值c1x0、c1x1、c7x0以及c7x1的乘法电路702的基本逻辑结构的视图。
现在参考图7a、7b以及7c,电路结构700使用多个加法和减法电路701以及乘法电路702来产生八个输出y0到y7。变换处理以表示图像像素数据块的定时信号的八个输入x0到x7开始。在阶段一,将八个输入x0到x7按对组合,以获得第一中间值a0到a7。例如,在加法和减法电路7011中组合输入值x0和x7,来产生第一中间值a0=x0+x7以及a1=x0-x7。类似地,在加法和减法电路7012中组合输入值x3和x4,来产生第一中间值a2=x3+x4以及a3=x3-x4。按对组合第一中间值a0、a2、a4和a6来获得第二中间值a8到a11。例如,如从图7a中显而易见地,在加法和减法电路7013中组合a0=x0+x7以及a2=x3+x4,来产生第二中间值a8=a0+a2以及a9=a0-a2。
在阶段二,将第二中间值a8到a11和第一中间值a1、a3、a5、a7选择性地组成对,写入到第一阶段中间值保持寄存器720,从第一阶段中间值保持寄存器720将它们按对输出到乘法电路,在乘法电路中它们与参数c1到c7相乘。例如,在乘法电路7021中第二中间值a8=a0+a2以及a10=a4+a6与一对参数c4、c4相乘,以获得被写入到第二阶段中间值保持寄存器721的四元中间值k0=a8c4、k1=a10c4、k2=a8c4以及k3=a10c4。本领域的普通技术人员将认识值k0、k1、k2以及k3分别等于[(x0+x7)+(x3+x4)]c4、[(x1+x6)+(x2+x5)]c4、[(x0+x7)+(x3+x4)]c4、[(x1+x6)+(x2+x5)]c4。类似地,如图7a的逻辑流图,显而易见地获得值k4至k23。
在阶段三,使用用以输出选择性的对中的中间值k0到k23的路由开关725用于进一步相加或相减。例如,将值k0和k1相加以获得中间值m0=k0+k1,而将值k6和k7相减来获得中间值m3=k6-k7,等等,如图7a所示。将值m0、m1、m2和m3分别写入阶段三中间值保持寄存器722作为p12、p15、p13、p14。然而,将值m4、m5和m8到m13组成对并且适当地相加或相减以获得分别被写入阶段三中间值保持寄存器722作为p4到p7的值n4到n7。第三阶段中间值保持寄存器的值p4到p7以及p12到p15与偏移信号适当相加或相减来经由移位寄存器获得八个输出系数y0到y7。
由于逆向DCT和正向DCT是正交的,所以逆向DCT给定为X=CTYC,其中C是变换矩阵,Y是输入变换系数以及X是输出逆向变换样本。对于8点逆向DCT,该公式可以以如图8a所示的8×8矩阵的形式在数学上实现。图8b示出将矩阵805和806相乘以后作为结果的矩阵公式815。在图8b的公式中,将两侧的矩阵转置以最终获得图8c的公式825。对于H.264编解码,IDCT 8×8系数c1:c7是{12,8,10,8,6,4,3}。
对于H.264编解码:
a0=y0+y4
a4=y0-y4
a2=(y2>>1)y6
a6=y2+(y6>>1)
a1=-y3+y5-y7-(y7>>1)
a3=y1+y7-y3-(y3>>1)
a5=-y1+y7+y5+(y5>>1)
a7=y3+y5+y1+(y1>>1)
b0=a0+a6
b2=a4+a2
b4=a4-a2
b6=a0-a6
b1=a1+a7>>2
b7=-a1>>2+a7;
b3=a3+a5>>2
b5=a3>>2-a5
m0=b0+b7
m1=b2+b5
m2=b4+b3
m3=b6+b1
m4=b6-b1
m5=b4-b3
m6=b2-b5
m7=b0-b7
8点逆向DCT可以视为下面示出的矩阵乘法:
x0=[c4x0+c2x2+c4x4+c6x6]+[c1x1+c3x3+c5x5+c7x7]
x1=[c4x0+c6x2-c4x4-c2x6]+[c3x1-c7x3-c1x5-c5x7]
x2=[c4x0-c6x2-c4x4+c2x6]+[c5x1-c1x3+c7x5+c3x7]
x3=[c4x0-c2x2+c4x4-c6x6]+[c7x1-c5x3+c3x5-c1x7]
x7=[c4x0+c2x2+c4x4+c6x6]-[c1x1+c3x3+c5x5+c7x7]
x6=[c4x0+c6x2-c4x4-c2x6]-[c3x1-c7x3-c1x5-c5x7]
x5=[c4x0-c6x2-c4x4+c2x6]-[c5x]-c1x3+c7x5+c3x7]
x4=[c4x0-c2x2+c4x4-c6x6]-[c7x1-c5x3+c3x5-c1x7]
对于H.264编解码:
a0=y0+y4=k0+k1=m0=m6
a4=y0-y4=k0-k1=m2=m4
a2=(y2>>1)-y6=k6-k7=m3=m5
a6=y2+(y6>>1)=k4+k5=m1=m7
a1=-y3+y5-y7-(y7>>1)=(y5)-(y3+y7+y7>>1)=(k10+k13)-(k16+k23)=m14-m15=p7
a3=y1+y7-y3-(y3>>1)=(y1)-(y3+y3>>1-y7)=(k12+k9)-(k20-k17)=m12-m13=p6
a5=-y1+y7+y5+(y5>>1)=-((y1-(y5+y5>>1))-y7)=-((k14-k11)-(k22+k19))=-(m10-m11)=-p5
a7=y3+y5+y 1+(y1>>1)=((y1+y1>>1)+y5)+(y3)=(k8+k15)+(k18+k21)=m8+m9=p4
b0=a0+a6=m0+m1=p0
b2=a4+a2=m2+m3=p1
b4=a4-a2=m4-m5=p2
b6=a0-a6=m6-m7=p3
b1=a1+a7>>2=p7+p4>>2=q4
b3=a3+a5>>2=p6+(-(-p5>>2))=q5
b5=a3>>2-a5=p6>>2+(-P5)=q6
b7=-a1>>2+a7=-p7>>2+p4=q7
m0=b0+b7=p0+q7=x0
m1=b2+b5=p1+q6=x1
m2=b4+b3=p2+q5=x2
m3=b6+b1=p3+q4=x3
m4=b6-b1=p3-q4=x4
m5=b4-b3=p2-q5=x5
m6=b2-b5=p1-q6=x6
m7=b0-b7=p0-q7=x7
这些公式在流水线阶段中实现,每次产生八输出逆向变换,如图9a所示。图9a示出如图5所示的DCT单元513的逻辑结构900,其被配置为执行本发明的8点逆向DCT。因此应该注意图9a的逻辑结构900和图7a的逻辑结构700在布置功能并且通过路由开关将它们连接以由正向DCT和逆向DCT二者使用的统一/单件硬件中实现。因此,仅仅使用程序配置(不在硬件或电路中)的改变,可以编程不同DCT/IDCT功能。图9b是将一对输入变换系数y0和y1与参数c1和c7相乘来输出四元值c1y0、c1y1、c7y0以及c7y1的乘法电路901的基本结构视图。
如图9a所图示,逆向变换处理以表示在乘法电路中为与参数c1到c7相乘而选择性地组成对的变换系数的8个输入y0到y7开始,以产生中间值k0到k23。通过路由开关925将这些中间值k0到k23选择性路由到各种加法和减法中间单元来最终获得八个输出逆向变换值x0到x7。
对于4点正向DCT,可以以如图10所示的4×4矩阵的形式在数学上实现变换。图10b示出将矩阵1005和1006相乘之后作为结果的矩阵公式1015。在图10b的公式中,两侧的矩阵被转置,以最终获得图10c的公式1025。对于H.264编解码器,DCT 4×4系数c1:c3是{1,2,1}并且Hadamard 4×4系数c1:c3是{1,1,1}。
每次使用4点DCT,从下面所示的矩阵乘法产生4个系数:
y0=(x0+x3)*c1+(x1+x2)*c1
y1=(x0x3)*c2+(x1x2)*c3
y2=(x0+x3)*c1(x1+x2)*c1
y3=(x0x3)*c3(x1x2)*c2
此外,再次使用图7a的逻辑结构700来执行4点DCT处理。由于资源是足够的,因此对于4点DCT同时处理两行或两列,如图11a所示,其基本功能上面已经描述。
图11b是包括一对加法器1105和减法器1106的加法和减法电路1101的基本结构视图。输入数据x0和x1作为加法器1105和减法器1106的输入。加法器1105将x0和x1相加的结果输出为x0+x1,而减法器1106将x0和x1相减的结果输出为x0-x1。图11c是将一对输入数据x0和x1与参数c1和c7相乘来输出四元值c1x0、c1x1、c7x0以及c7x1的乘法电路1102的基本结构视图。如图11a所示,变换处理以表示4×4图像像素数据块的定时信号的两行的八个输入x0到x7开始。换言之,同时处理两行导致八个系数y0到y7的输出。此外,图11a中的逻辑电路1100使用与图7a的逻辑电路700和图9a的逻辑电路900相同的底层硬件。
对于4点逆向DCT,可以以如图12a所示的4×4矩阵的形式在数学上实现变换。图12b示出将矩阵1205和1206相乘之后的结果矩阵公式1215。在图12b的公式中,两侧的矩阵被转置,以最终获得图12c的公式1225。对于H.264编解码,IDCT 4×4系数c1:c3是{2,2,1}并且iHadamard 4×4系数c1:c3是{1,1,1}。
通过下面所示的矩阵乘法可以实现4点逆向DCT:
x0=(x0c1+x2c1)+(x1c2+x3c3)
x1=(x0c1-x2c1)+(x1c3-x3c2)
x2=(x0c1-x2c1)-(x1c3-x3c2)
x3=(x0c1+x2c1)-(x1c2+x3c3)
如图13a所示并且类似上面所描述,这些公式在流水线阶段实现,每次产生八个输出逆向变换。如图13所图示,逆向变换处理以表示在乘法电路1301中为与参数c1到c7相乘而选择性地组成对的两行4×4变换系数的8个输入y0到y7开始,以产生中间值k0到k23。通过路由开关1325将这些中间值k0到k23选择性路由到各种加法和减法中间单元来最终获得八个输出逆向变换值x0到x7。如上所描述的,图13a中逻辑电路1300使用与图11a的逻辑电路1100、图7a的逻辑电路700和图9a的逻辑电路900相同的底层硬件。
对于2点正向DCT,可以以如图14a所示的2×2矩阵的形式在数学上实现变换。图14b示出将矩阵1405和1406相乘之后的结果矩阵公式1416。在图14b的公式中,两侧的矩阵被转置,以最终获得图14c的公式1426。对于H.264编解码,Hadamard 2×2系数c1是1。
每次使用2点DCT,从下面所示的2×1与2×2矩阵乘法产生2个系数:
y0=(x0+x1)*c1
y1=(x0-x1)*c1
如上面所讨论,用于实现2点正向DCT的图15中的逻辑电路依靠与图11a中的逻辑电路1110、图13a中的逻辑电路1300、图7a中的逻辑电路700以及图9a中的逻辑电路900相同的底层硬件。由于资源是足够的,如图15所示,对于正向DCT和逆向DCT同时处理两行或两列。
参考回图5,DCT单元513可以用于以正向或反向方式根据各种标准(包括H.264、VC-1、MPEG-2、MPEG-4或AVS)并且对于任何大小宏块(包括16×16、16×8、8×16、8×8、8×4、4×8、4×4以及2×2块)实现DCT/IDCT处理。现在将描述8个量化器单元517的结构。
图16是描述视频样本1605集的变换和量化的框图。变换器1610将视频样本的分区1605变换到频域,由此造成对应的频率系数1615集。然后将频率系数1615传递到量化器1620,造成量化频率系数1625集。量化器将具有范围值X的信号映射到具有减小的范围值Y的量化信号。标量量化器(scalar quantizer)将每个输入信号映射到一个输出量化信号。
被称作量化参数(QP)的步长值控制量化的量。QP确定块的每个元素被量化或者定标所使用的定标值。这些定标值在初始化时被存储在查找表中,诸如定标存储器中,并且以后在量化操作期间被检索。QP计算该表的指针。由此,量化器用量化级或步长编程。
根据本发明的一个重要方面,量化和去量化发生在相同的流水线阶段并且因此使用相同硬件结构顺次依序执行操作。换言之,根据新方面,本发明的硬件结构可配置并且一般支持不同类型的公式(依赖不同类型的视频编码标准或CODEC)。通过将硬件分解为更简单的功能并且然后通过指令来控制它们以执行不同类型视频编码标准或CODEC的不同类型公式来完成这一点。
参考图5,量化器单元517具有八层,在图21中更详细示出。图21示出包括8层2105的本发明的量化器/去量化器2100的顶级架构,每一层2000在图20中更详细示出。来自转置寄存器2110的数据并行地进入各个层2105,然后并行地向转置寄存器2120退出。应该认识可以使用任何数量的层。还应该认识使用相同物理电路或硬件的每个层可以用于根据若干标准或协议(诸如H.264、VC-1、MPEG-2、MPEG-4或AVS)之一来处理数据。在一个实施例中,不同层2105根据不同协议(诸如H.264、VC-1、MPEG-2、MPEG-4或AVS)处理数据。图20示出量化器/去量化器硬件单元的每层的物理电路2000。应该认识相同的物理电路2000可以可编程地配置为根据若干不同标准或协议(诸如H.264、VC-1、MPEG-2、MPEG-4或AVS)处理数据,而不需要改变物理电路。
如早先提及的,使用的量化技术依赖编码标准。例如,ITU-T视频编码专家组(VCEG)和ISO/IEC运动图像专家组(MPEG)起草标题为ITU-T推荐H.264和ISO/IEC MPEG-4高级视频编码的视频编码标准,其通过引用的方式结合于此。在H.264标准中,基于逐宏块编码视频。
图17是由1701到1703连续画面形成的视频序列的框图。画面1701包括(多个)二维像素格点。对于彩色视频。每个色彩分量与唯一的二维像素格点相关联。本领域的普通技术人员将认识画面可以包括亮度(Y)、色度红(Cr)以及色度蓝(Cb)分量。相应地,这些分量与亮度格点1705、色度红格点1706、以及色度蓝格点1707相关联。当格点1705、1706和1707在显示设备上重叠时,结果是画面被捕捉的持续时间的视场的画面。
一般地,人眼相对于色度红和色度蓝特性更易感知视频的亮度特性。因此,相对色度红格点1706和色度蓝格点1707,亮度格点1705中存在更多的像素。在H.264标准中,色度红格点1706和色度蓝格点1707在每个方向上具有亮度格点1706的像素的一半。因此,色度红格点1706和色度蓝格点1707每个具有亮度格点1705的总像素的四分之一。此外,H.264使用非线性标量,其中使用不同步长值量化块中的每个分量。
在一个实施例中,存在两个查找表-电平定标(LevelScale)2130和电平偏移(LevelOffset)2140,如图21中所示的到量化层2105的输入。在量化处理期间,使用用QP计算的索引指针在公式(下面提供)中读取并且使用来自这些表的值。在帧期间动态改变的变量保存在这些查找表中并且将仅仅在会话开始时需要被设置的变量存储在寄存器中。
H.264编码标准
LevelScale=LevelScale4x4Luma[1][luma_qp_rem]
LevelOffset=LevelOffTset4x4Luma[1][luma_qp_per]
亮度-16×16帧内模式中的残差4×4
DC值
level=[(abs(input)*LevelSacle[indxPtr])+(LevelOffset[indxPtr]<<1)]>>(qbits+1)
ouput=level*sign(input)
AC值
level=[(abs(input)*LevelSacle[indxPtr])+(LevelOffset[indxPtr])]>>(qbits)
ouput=level*sign(input)
亮度-其他残差块
DC/AC值
level=[(abs(input)*LevelSacle[indxPtr])+(LevelOffset(indxPtr])]>>(qbits)
ouput=level*sign(input)
色度(Cr和Cb二者)
LevelScale=LevelScale4x4Chroma[CrCb][Intra][cr_qp_rem or cb_qp_rem]
LevelOffset=LevelOffset4x4Chroma[CrCb][Intra][cr_qp_per or cb_qp_per]
对于Cr,CrCb=0
对于Cb,CrCb=1
DC值
level=[(abs(input)*LevelSacle[indxPtr])+(LevelOffset[indxPtr]<<1)]>>(qbits+1)
ouput=level*sign(input)
AC值
level=[(abs(input)*LevelSacle[indxPtr])+(LevelOffset[indxPtr])]>>(qbits)
ouput=level*sign(input)
VC-1编码标准
VC-1是由SMPTE和Microsoft公司发布的标准(如Windows Media 9或WM9)。
DC值
MQUANT=1~31
DCStepSize=1~63
Output=[(input)*DQScaleTable[DCStepSize])+(1<<17)]>>18
AC值
if(input>MQUANT)
Output=[(input-MQUANT)*DQScaleTable[2*MQUANT+HalfStep])+(1<<17)]>>18
elseif(input<-MQUANT)
Output=[((input+MQUANT)*DQScaleTable[2*MQUANT+HalfStep])+(1<<17)]>>18
else
Output=0
AVS编码标准
AC/DC值
ScaleM[4][4]
Q_TAB[64]
QP=0~63
if(intra)
qp_constant=(1<<15)*10/31
else
qp_constant=(1<<15)*10/62
for(yy=0;yy产8;yy++)
for(xx=0;xx<8;xx++)
temp=absm(input)
output=sign((((temp*ScaleM[yy&3][xx&3]+(1<<18))>>19)*Q_TAB[QP]+qp_constant)>>15)
去量化是逆向量化,其中,在变换回空间域之前将量化系数按比例增加(scale up)至其正常范围。类似量化,对于去量化存在公式(下面提供)。
H.264编码标准
亮度
一个实施例使用单个查找表-InvLevelScale。在去量化处理期间,使用用QP计算的索引指针在公式(下面提供)中读取和使用来自这些表的值。
InvLevelScale=InvLevelScale4x4Luma[1][luma_qp_rem]
亮度-16×16帧内模式中的残差4×4
DC值
If(qp_per<6)
output=[(input*InvLevelSacle[indxPtr])+(1<<(5-qp_per))]>>(6-qp_per)
else
output=[(input*InvLevelSacle[indxPtr])+(0)]<<(qp_per-6)
AC值
If(qp_per<4)
output=[(input*InvLevelSacle[indxPtr])+(1<<(3-qp_per))]>>(4-qp_per)
else
output=[(input*InvLevelSacle[indxPtr])+(0)]<<(qp_per-4)
亮度-其他残差块
AC/DC值
If(qp_per<4)
output=[(input*InvLevelSacle[indxPtr])+(1<<(3-qp_per))]>>(4-qp_per)
else
output=[(input*InvLevelSacle[indxPtr])+(0)]<<(qp_per-4)
色度(Cr和Cb二者)
InvLevelScale=InvLevelScale4x4Chroma[CrCb][Intra][cr_qp_rem or cb_qp_rem]
对于Cr,CrCb=0
对于Cb,CrCb=1
DC值
If(qp_per<5)
output=[(input*InvLevelSacle[indxPtr])+(0)]>>(5-qp_per)
else
output=[(input*InvLevelSacle[indxPtr])+(0)]<<(qp_per-5)
AC值
If(qp_per<4)
output=[(input*InvLevelSacle[indxPtr])+(1<<(3-qp_per))]>>(4-qp_per)
else
output=[(input*InvLevelSacle[indxPtr])+(0)]<<(qp_per-4)
VC-1编码标准
DC值
MQUANT=1~31
DCStepSize=1~63
If(MQUANT equal 1 or 2)
DCStepSize=2*MQUANT
else if(MQUANT equal 3 or 4)
DCStepSize=8
elseif(MQUANT>5)
DCStepSize=MQUANT/2+6
Output=input*DCStepSize
AC值
If(Uniform Quantizer)
output=[input*(2*MQUANT+HALFQP)]
else if(Non-unifom Quantizer)
output=[(input*(2*MQUANT+HALFQP)]+sign(innput)*MQUANT
AVS编码标准
AC/DC值
DequantTable[QP]
ShiftTable[QP]
QP=0~63
output=input*DequantTabble[QP]+2ShiftTable[QP]-1)>>ShiftTable[QP]
在一个实施例中,假设对于电平定标(Level Scale)、逆向电平定标(Inverse Level Scale)和电平偏移(Level Offset)是16比特,电平定标需要的全部存储器是1344字节,并且对于电平偏移和逆向电平定标一起是1728字节。在一个实施例中,用128比特宽的存储器,需要一个84实例和一个108深实例的存储器。
使用多个编解码器的单个数据路径的运动补偿引擎
诸如MPEG、AVS、VC-1、ITU-T H.263和ITU-T H.264之类的标准支持利用被称为时间或帧间相关性的连续视频帧之间的相似性的视频编码技术,以提供帧间压缩。帧间压缩技术通过将视频帧的基于像素的表示转换为运动表示来利用跨越帧的数据冗余度。此外,某些视频编码技术可能利用被称作空间或帧内相关性的帧内的相似性以进一步压缩视频帧。经常将视频帧划分为较小视频块,并且将帧间或帧内相关性应用于视频块级。
为了实现视频帧压缩,数字视频设备典型包括用于压缩数字视频序列的编码器,以及用于解压缩数字视频序列的解码器。在很多情形中,编码器和解码器形成对定义视频序列的帧内的像素块进行操作的集成“编解码器”。对于视频帧内的每个视频块,编解码器搜索一个或多个紧接在前的视频帧(或随后帧)的相似大小视频块来识别被称作“最佳预测”的最相似视频块。比较当前视频块和其他帧的视频块的处理通常称作运动估计。一旦在运动估计期间识别当前视频块的“最佳预测”,则编解码器可以编码当前视频块和最佳预测之间的差异。
编码当前视频块和最佳预测之间的差异的该处理包括称作运动补偿的处理。运动补偿包括创建指示要编码的当前视频块和最佳预测之间的差异的差异块的处理。具体地,运动补偿通常指代以下动作:使用运动矢量取得最佳预测块,并且然后从输入块减去最佳预测来生成差异块。差异块典型包括比差异块表示的原始视频块实质更少的数据。
本发明提供作为用于处理多个编解码的高度可配置、可编程的、可分级处理单元的运动补偿处理器。在一个实施例中,运动补偿处理器包括具有可扩展数据路径的前端处理器,并且更具体地,将功能数据路径配置为提供运动补偿处理。在一个实施例中,该处理器在500MHz或低于500MHz运行,更优选250MHz。在另一个实施例中,可以将该处理器的物理电路结构在逻辑上编程为使用多个不同编解码、协议或标准,包括H.264、AVS、H.263、VC-1或MPEG(任何生成)来处理处理高清内容,同时在250MHz或低于250MHz运行。
图22示出本发明的、实现为图1的功能数据路径115的运动补偿引擎2200的硬件结构的实施例。将数据写入寄存器2201,其被读入也从左移位器2203接收移位量和DQ比特的加法器2202。在加法器2204中与DQ舍入数据一起接收来自加法器2202的数据。在右移位器2205中与DQ比特一起接收来自加法器2204的输出。将右移位数据写入寄存器2206,从寄存器2206将其读入加法器2207和减法器2208。如图22所示,加法器2207接收来自寄存器2206的数据和来自寄存器2209a、2209b的参考数据。类似地,减法器2208接收来自寄存器2206的数据和来自寄存器2209a、2209b的参考数据。来自加法器2207和减法器2208的输出被输入到向饱和器2211输出数据的多路复用器2210,用于向TP向前进行数据通信。从寄存器2212a、2212b向多路复用器2210馈送补偿控制数据。在一个实施例中,本发明的运动补偿引擎提供两级控制:第一:基于作为依赖编解码器的指令选择正确值,以及第二,知道滤波之后保持多少比特/哪些比特。
图23示出包括八个运动补偿单元2305的顶级运动补偿引擎架构2300,其每一个包含图22示出的运动补偿电路2200。应该认识可以使用任何数量的单元2305将该运动补偿引擎2300实现为功能数据路径(图1的115)。
定标器
图24示出本发明的系数定标器2400的硬件结构实施例。如上面关于运动补偿、量化以及DCT/IDCT处理所讨论的,可以将该硬件结构逻辑编程为处理任何数量的编解码器、标准、或协议,包括H.264、H.263、AVS、VC-1和/或MPEG,而不需要修改底层物理电路。另外,将该硬件结构实现为图1的功能数据路径115。
参考图24,将来自内部存储器接口(IMIF)的数据写入寄存器2401,其被读入第一乘法器2402,该第一乘法器2402还从寄存器2403接收AC电平定标数据。将乘法器2402的输出写入寄存器2404,其被读入第二乘法器2405,第二乘法器还接收定标器乘数。将乘法器2405的输出写入寄存器2406,其被读入第三乘法器2407。还将定标器乘数输入到乘法器2407。将来自乘法器2407的输出写入寄存器2408,其被读入加法器2409。加法器2409接收作为通过左移位器2410左移位了电平移位数据的AC电平偏移数据。最后,来自加法器2409的数据由右移位器2411右移位一移位量,用于向DC寄存器向前进行通信。
自适应去块滤波器
图25示出本发明的去块处理器2500的硬件结构的实施例。如上面关于运动补偿、量化、定标器和DCT/IDCT处理所讨论的,可以将硬件结构逻辑编程为处理任何数量的编解码器、标准或协议,包括H.264、H.263、AVS、VC-1和/或MPEG,而不需要改变底层物理电路。在此,示出具有可扩展数据路径的全部前端处理器,并且尤其,由转置模块2521、2522、指令解码器2525和可配置并行输入/输出滤波器2520表示的功能数据路径。
更具体地,本发明的自适应去块滤波器(下面称作DBF)包括前端处理器(FEP)2505和可扩展数据路径2510。可扩展数据路径DBF 2510使用充当协处理器的FEP 2505的扩展数据路径(EDP)来解码FEP转发的指令并且在控制数据路径(CDP)2515和可配置1-D滤波器2520中执行它们。FEP2505提供DBF 2510的统一编程接口。
可扩展数据路径DBF 2510包括第一转置模块(T0)2521和第二转置模块(T1)2522、控制数据路径(CDP)2515、可配置并行输入/并行输出1-D滤波器2520、指令解码器2525、参数寄存器文件(PRF)2530和引擎寄存器文件(DBFRF)2535。
在一个实施例中,转置模块2521、2522每个是用于逐行存储并且处理两个相邻4×4块的8×4像素阵列。模块2521、2522当在H边界(水平边界)执行垂直滤波时使用转置功能而当在V边界上执行水平滤波时使用常规功能。两个模块用作乒乓(ping-pong)矩阵来加速滤波处理。
CDP 2515用于计算判定滤波所需的条件,并且在一个实施例中实现H.264/AVC、VC-1和AVS编解码器。其还包含计算不同阈值所需的三个查找表。1-D 2520滤波器是包括加法器和移位器的二阶段流水线滤波器。参数控制2530包括与DBF 2505正在处理的当前宏块有关的所有信息/参数。内容管理器(CM)提供信息/参数。在CDP 2515中使用参数,用于进行滤波判定。引擎寄存器文件2535包括依据DBF 2505内部的扩展功能特定指令使用的信息。
下面的表1示出一个实施例覆盖的不同编解码器的DBF 2505的主要属性的比较。在此针对的优选画面分辨率是至少1080i/p(1080×192030Hz)高清。
表1去块滤波器比较-H.264/AVS、VC-1、AVS
本发明的自适应DBF构架可以采用任何块大小并且按需要转置以遵守特定编解码器的滤波要求。为了实现这一点,架构首先以可以支持任何各种编解码器方法的方式来组织存储器以完成DBF。具体地,存储器组织确保:无论相邻块需要什么数据(或作为刚完成的处理的结果)都是容易可用的。本领域的普通技术人员将认识通过正在使用的编解码器定义实际滤波算法、通过正在使用的编解码器定义转置功能的使用并且通过正在使用的编解码器定义块的大小/数量。
图26示出根据本发明的一个实施例的DBF的数据路径阶段。在第一阶段,与当前处理宏块(MB)以及相邻宏块(MB)有关的所有参数被预加载2605在寄存器中。第二阶段是加载/存储处理2610。由于一个实施例使用2个乒乓转置模块并且有两个IMIF信道,所以可以加载接下来的4×4块并且存储已经滤波的4×4块。第三阶段是控制数据路径(CDP)2615。在该阶段,执行用于判定是否滤波块级像素所需的所有控制信号的计算和流水线操作。CDP流水线必须与滤波数据路径同步。因此,在该阶段之前,如在方框2620中描绘地,计算与诸如H.264之类的某些编解码器的每个4×4子块有关的边界强度(bS)。第四阶段是实际像素滤波2625。在该阶段,用两个流水线阶段使用1-D并行输入/并行输出滤波器。滤波输入/输出数据是两个转置模块(图25的2521,2522),这允许仅在10个周期中滤波2个8×4像素块(或总共64像素)。
数据路径流水线阶段如图27所示。在一个实施例中,DBF的性能要求给定为:
基于图27,可以将时钟周期中的DFB的实际性能计算如下:
实际性能
100周期+16(H亮度)*8周期+4(HCb)*8周期+4(HCr)*8周期
+16(V亮度)*10周期+4(VCb)*10周期+4(VCr)*10周期+100周期+200周期=832周期
上面的计算示出应该符合目标性能要求来处理一个宏块(MB)。
在宏块基础上完成去块滤波,以贯穿画面帧的光栅扫描顺序处理宏块。每个MB包含16×16像素并且可以进一步将运动补偿的块大小分区4×4(帧间预测的最小块大小)。H.264/AVC和VC-1可以具有4×4、8×4、4×8和8×8块大小,并且AVS可以具有仅仅8×8块大小。本领域的普通技术人员将实现MB边界内还可以具有混合块大小。
为了确保解码器和编码器之间滤波处理的匹配,滤波优选遵循预定义顺序。如图28示出H.264/AVC的滤波顺序的一个实施例。如块2805中示出的,对于每个亮度,首先滤波最左边边缘,之后通过作为宏块内部的接下来的垂直边缘从左到右滤波。然后相同的顺序应用于色度二者(Cb和Cr)。这叫做垂直边界(V边界)上的水平滤波。下一步是水平边界(H边界)上的垂直滤波,如块2810中所示。对于亮度,首先滤波最上边缘,随后通过作为宏块内部的接下来的水平边缘从顶部到底部滤波。然后将相同的顺序应用于色度两者。
滤波处理还影响当前宏块上部以及左侧的已经重构的宏块的边界。在一个实施例中,没有滤波帧边界。
类似地,将相同的顺序应用于AVS中、但在8×8边界上的宏块。内部滤波边缘的顺序与H.264中的相同。在VC-1中,滤波顺序是不同的。对于I、B和BI画面,在所有8×8边界上执行滤波,其中对于P画面,可以对4×4、4×8、8×4以及8×8边界执行滤波。对于P画面,这是滤波顺序。首先滤波沿着第8、第16、第24等水平线具有水平边界的所有块或子块。接下来滤波沿着第4、第12、第20等水平线具有水平边界的所有子块。接下来滤波沿着第8、第16、第24等垂直线具有垂直边界的所有子块。最后滤波沿着第4、第12、第20等垂直线具有垂直边界的所有子块。
在H.264/AVC中,对于相邻亮度块之间的每个边界,分配“边界强度”参数bS,如图29所示。bS=4是最强滤波,而bS=0意味着不进行滤波。图29的流程图示出最强分块伪像(blocking artifact)主要由帧内和预测错误编码引起以及较小伪像由块运动补偿造成。色度的bS值与对应的亮度bS相同。在AVS中,bS被分配值0、1或2,如图30所示。在VC-1编解码器中没有边界强度参数。
为了保持图像清晰度,真正的边缘需要尽可能地被保持未滤波,同时滤波伪像边缘,以减小它们的可视性。为了该目的,将去块滤波应用于任何方向上的两个相邻块的一条线的8个样本(p3,p2,p1,p0,q0,q1,q2,q3),边界线3115在p03105和q03125之间,如图31所示。
具有bS等于零(bS=0)的边缘不发生滤波。对于具有非零bS值的边缘,在确定是否滤波每个8样本集的内容活动检查中使用被称为α和β的一对依赖量化阈值参数。在一个实施例中,如果下面的条件为真,则仅仅滤波跨越该边界的样本集:
filterFlag=(bS≠0&&|p0-q0|<α&&|p1-p0|<β&&|q1-q0|<β)(1-1)
可以在H.264/AVC中滤波边界的每侧上的多至3个像素。阈值α和β的值依赖两个块的量化参数(qPp以及qPq)的平均值以及依赖于为了修改滤波特性的目的可能在码片首标中传送的一对索引偏移“FilterOffsetA”和“FilterOffsetB”。
VC-1重叠变换处理
跨越亮度和色度信道二者的两个相邻帧内块的边缘执行重叠变换或平滑。解码帧之后并且在去块滤波之前执行该处理。重叠变换被修改为跨越块边界交换信息的基于块的变换。在分离两个帧内块的8×8块的边缘上执行重叠平滑。
对未修剪10bit/pel(比特/像素)重构数据执行重叠平滑。这是重要的,因为重叠功能可以导致超出8bit/pel范围的范围扩展。
图32示出具有帧内块3220的P帧3205的部分。通过应用重叠变换功能滤波帧内块3220之间的边缘3210。将重叠平滑应用于边界任意侧上的两个像素。
首先滤波垂直边缘,随后滤波水平边缘。错误!没有找到参考源。33示出包括实际重叠滤波功能的公式。输入像素是(x0,x1,x2 x3),r0和r1是舍入参数,并且滤波像素是(y0,y1,y2,y3)。在两个方向滤波2×2角中的像素。首先执行垂直边缘滤波,之后水平边缘滤波。对于这些像素,垂直滤波之后的中间结果保持11bit/pel的全精度。
VC-1滤波处理
对于I、B和BI画面,在所有8×8块边界执行滤波(亮度、Cb或Cr平面)。对于P画面,可以帧内或帧间编码块。如果帧内编码块,对8×8边界执行滤波,以及如果帧间编码块,则对4×4、4×8以及8×8边界执行滤波。
将用于滤波的像素划分为4×4分段。在每个分段中。总是首先滤波第三行。该滤波的结果确定其他3行是否将被滤波。‘filter_other_3_pixels’的布尔值定义分段中的剩余3行是否也要被滤波。如果‘filter_other_3_pixels’==TRUE(真),则滤波它们,否则不滤波它们并且滤波操作进行至下一4×4像素分段。
在VC-1中,可以滤波边界的每侧上多达一个像素。在P画面的主简档去块中描述以下四个异常(exception):
1.如果帧内编码帧中的第一个宏块或者如果帧内编码帧中的第一宏块的左上亮度块,则滤波全部8样本顶部和左例边界。
2.按照期望从块2和3的运动矢量状态导出用于判定是否滤波块3的左侧边界(右下亮度块)的准则,但是替代使用块1和3的编码块状态和子块图案。
3.如果使用4×4变换编码当前块,则无论任一块的子块图案,滤波8像素顶部边界和8像素左侧边界二者。如果使用8×8、8×4或4×8变换编码当前块并且使用4×4变换编码以上块,则无论任一块的子块图案,滤波8像素顶部边界。如果使用8×8、8×4或4×8变换编码当前块并且使用4×4变换编码左侧块,则无论任一块的子块图案,滤波8像素左侧边界。
4.滤波色彩差异块边界的判定准则使用范围受限的色彩差异运动矢量(iCMvXComp和iCMvYComp)。
运动估计
图34示出本发明的运动估计处理器2500的硬件结构的实施例。如上面关于运动补偿、量化、定标器、去块和DCT/IDCT处理所讨论的,可以将硬件结构逻辑编程为处理任意数量的编解码器、标准或协议,包括H.264、H.263、AVS、VC-1和/或MPEG,而不需要改变底层物理电路。在此,示出具有可扩展数据路径的前端处理器,并且具体地,22个6抽头滤波器3401、ME阵列3402、ME寄存器块3404以及ME像素存储器3405表示功能数据路径。在一个实施例中,运动估计处理器可以以250MHz或更低操作并且可以被编程为根据MPEG 2、MPEG 4、H.264、AVS和/或VC-1编码和解码数据。
参考图34,示出本发明的运动估计引擎的示例性整个架构3400的框图。系统3400包括可以用于内插图像信号的二十二个6抽头滤波器3401。可以将滤波器3401设计为具有统一结构,从而实现垂直和水平方向二者的所有种类编解码器。系统还包括大小是16×16的运动估计阵列(ME阵列)3402,并且具有使得能够在三个方向上而不是像当前可用ME阵列的情况一样仅仅在两个方向上移动数据的结构设计。来自ME阵列3402的数据由一组绝对差加法器3403处理并且存储在ME寄存器块3404中。
ME引擎3400配备有专用像素存储器3405,对于诸如ME引擎中的ME滤波器3401和ME阵列3402之类的不同接口以及对于诸如运动补偿(MC)和调试之类的媒体处理系统的有关功能处理单元映射不同的地址。在一个实施例中,ME像素存储器3405包括四个垂直存储体(bank),提供借助跨越存储体混叠的地址多次同时跨越存储体进行写入。
ME控制块3406包含用于控制和调整ME引擎3400中的各种块的操作的电路和逻辑。其还与前端处理器(FEP)3407对接(interface),该前端处理器3407运行固件来控制媒体处理系统中的各种功能处理单元。
通过ME引擎中的一组四个多路复用器(MUX)促进对存储器的数据访问和写入。同时滤波器SRC MUX 3408和REF SRC MUX 3409与像素存储器3405以及外部存储器对接,CUR SRC MUX 3410用于从外部存储器接收数据并且当数据要被写入外部存储器时使用输出Mux 3411。
在运动估计处理期间,为了通过帧向前进行,每个时钟周期选择的窗口向下移位一个像素行。因此,ME阵列3402配备有叫作行16个寄存器的一组寄存器3412,其用于存储对应于上一行的像素数据。
参考图35,示出6抽头滤波器3510的布置。如之前提及的,ME引擎包括二十二个6抽头滤波器,其具有可以处理各种种类编解码器而不需要改变底层电路的统一结构。另外,相同的滤波器结构可以用于在水平和垂直方向二者上的处理。此外,设计滤波器使得系数和舍入值是可编程的,从而还支持未来的编解码器。由于该独特的设计,滤波器结构使得本发明的运动估计引擎的新应用成为可能。例如,不能够有效地用现有系统实现250MHz多个编解码器。3GHz芯片可以用于该目的,但是以大量的处理能力为代价。另外。较旧系统不是完全可编程的以用诸如MPEG 2/4、H.264、AVS和VC-1之类的较新标准工作。在本发明中的运动估计引擎中使用的滤波器新设计允许250MHz、多个编解码器系统的实现方式,这不仅支持旧的以及新的标准,而且还是可编程的以支持未来编解码器标准。
滤波器3510被设计来支持来自外部存储器以及内部存储器3505二者的加载,并且能够具有以下滤波器操作大小:
●一个16宽
●一个8宽
●两个同时8宽
图36图示滤波器设计的集成电路细节。参考图36,二十个6抽头滤波器的每一个,3601-3606使用6个系数-coeff_04701到coeff_54706。这些系数值根据各种编码标准用于半像素以及四分之一像素计算。滤波器电路包括用于VC1/MPEG2/MPEG4标准的四分之一/半像素计算的芯片逻辑3607和用于H.264标准的双线性四分之一像素计算芯片逻辑3608。还为AVS标准的四分之一像素计算提供芯片逻辑3609。这些计算是4抽头,并且因此使用仅仅四个系数-coeff_04701到coeff_34704。
在现有运动估计系统中,将ME阵列结构设计为在两个方向移动数据,并且采用16个周期加载16×16矩阵。然而,在本发明的运动估计系统中,设计16×16运动估计矩阵,使得其在三个方向上移动数据。这样的ME阵列的示例性结构在图37中例示。参考图37,阵列3700配备有水平存储体(horizontal banking)结构。水平存储体3701帮助在阵列的行之间注入数据,以在数据加载期间保存固件周期。这将数据加载所需的周期数量从16个周期减小到4个周期并且将矩阵加载时间减少75%。
另外,如在[0:3]4802、[4:7]4803等图示,阵列3700的垂直中间列通过避免相邻坐标的新加载来帮助保存附加数据。图37的阵列结构的另一新特征是在每隔四个阵列列之后提供‘虚象(ghost)’列3704、其支持部分搜索。
本发明的新阵列结构允许数据在三个方向-上部、下部和左侧移动。该阵列结构能够支持从外部存储器以及内部存储器加载,并且支持以下搜索大小:
●一个16×16
●一个8×8
●一个4×4
●两个8×8或四个同时8×8搜索
阵列结构还允许可选的数据对于写入操作在字节边界上翻转。当在以下段落中参考本发明的运动估计引擎操作进行描述时,ME阵列结构的优点和特征将变得更清楚。
如上面所讨论,在本领域中已知将图像信号中的每个帧划分为称为亮度和色度块的两种块。对于编码效率,将运动估计应用于亮度块。图38借助流程图3800例示运动估计的处理步骤。参考图38,首先将给定帧分解为亮度块,如步骤3801所示。在随后的步骤中,将每个亮度块与参考帧上的搜索区域中的候选块匹配。这形成运动估计的核心,并且因此运动估计引擎的一个主要功能是有效地实施搜索以将本帧中的块与参考帧匹配。在这一点中,对于任何运动估计算法的挑战是实现十分良好的匹配。使用本发明的运动估计方法以在标准搜索中获得的最佳整数匹配开始。这在步骤3802中示出。然后,为了获得尽可能接近的匹配,将最佳整数匹配的结果滤波或者内插到1/2或1/4像素分辨率,如步骤3803所示。此后,重复搜索,其中,将当前帧的整数值与计算的1/2像素和1/4像素值比较,如步骤3804所示。这导致对于找到最佳匹配的搜索更大的粒度(granularity)。
在候选块中找到最佳匹配后,确定最佳匹配块的运动矢量。这在步骤3805所示。运动矢量表示匹配块到当前帧的位移。
其后,从参考帧的预测中减去输入帧,如图3806所示。这允许替代原始亮度块仅仅传送运动矢量以及产生的误差。对于图像信号中的所有帧重复运动估计的该处理,如步骤3807例示。作为使用运动估计的结果,减小帧间冗余度,由此实现数据压缩。
在解码器侧,通过将来自接收数据的差异信号添加到参考帧来重新建立给定帧。该添加再现当前帧。
在功能上,运动估计使用特定窗口大小,诸如例如8×8或16×16像素,并且来回移动(move around)当前窗口,以获得整个块的运动估计。由此,需要穷尽运动估计算法,覆盖跨越块的所有像素。为了该目的,算法可以使用较大窗口尺寸;然而以牺牲时钟周期为代价。本发明的运动估计引擎利用新ME阵列结构(如之前所描述)来实现有效地来回移动搜索窗口的唯一方法。根据该方法:
1.使用参考帧,在ME阵列中加载对应于选取的窗口尺寸的像素集。该开始点是帧的左上角。
2.在当加载对应于窗口的像素集的同时,还将“虚象列”加载到窗口右侧。如之前提及的,ME阵列在每隔四个阵列列之后包含虚象列。该虚象列包括窗口右侧的像素并且当窗口向右移动一个像素时保持它们为处理做好准备。
3.为了来回移动帧,每个时钟周期窗口向下移动一个像素行。每次向下移动,窗口顶部的像素移出阵列并且底部的新像素移入。这一点继续直到到达帧的底部。一旦到达底部,窗口向右移动一列,由此包括虚象列中的像素。
4.重复该处理,除了窗口从下向上移动这一次,即帧向下移动。在到达帧的顶部时,窗口再次向右移位,并且再次利用虚象列。
由此,无论选取什么窗口大小,虚象列用作显著地使负载最小化。
如之前所公开的,运动估计涉及在当前帧和参考帧之间识别最佳匹配。为了这样做,ME引擎向参考帧应用窗口,将每个像素值提取到阵列内,并且在阵列中的每个处理元素处,执行确定差的总和的计算。处理元素包含算数单元以及保存当前像素和参考像素值的两个寄存器。由于每个时钟周期将窗口移动一个像素行来向前进行通过帧,并且在到达列末端时向右移位以因此执行该整数搜索,所以仅仅需要一个时钟周期来加载执行搜索点分析所需的数据。
当进行整数搜索时,运动估计方法可以在获得初始匹配时停止。然而,在本发明的运动估计方法中,当在帧中找到最佳匹配时,对应的窗口被捕获并且被发送到滤波器以计算1/2像素(1/2pel)和1/4像素(1/4pel)值。这称作内插。由此,在找到最佳整数匹配时,围绕搜索位置下载所有所需数据并且围绕它执行内插。同时还需要下载实现下一搜索的参考信息。本发明的运动估计系统的架构使得能够同时执行搜索和内插。也就是,在当加载用于滤波的数据的同时,可以加载用于搜索的数据。对于实现该并行操作,FEP执行两个指令-一个执行滤波而一个完成搜索。本发明的运动估计引擎的存储器结构还被设计用于允许同时加载数据,由此使得能够并行搜索和内插/滤波。
图39是给定窗口中1/2像素值和整数像素值的图示。参考图39,矩形3910表示整数像素,并且整数矩形周围的圆形3920表示半像素值。
由于计算1/2和1/4像素的目的是实现最佳匹配搜索的更大的粒度,因此在整数像素值上实施的搜索处理需要用计算的1/2或1/4像素值来重复。然而需要注意,替代比较当前帧的整数值和参考帧的整数值,重复搜索涉及比较当前帧的整数值与计算的1/2像素和1/4像素值。该计算处理与整数计算不同,并且作为结果,需要不同种类的存储器结构来最小化用于加载数据的时钟周期。
特别地,利用整数搜索,每次窗口移动一行或一列,加载入新行或列的数据,同时保持来自其他行或列的数据。这是因为在整数搜索期间,在随后处理步骤中在新计算中重新使用大多数行或列。这将每个搜索点所需的时钟周期的数量自动降低到仅一个。然而,对于1/2像素或1/4像素搜索,不依据之前紧接的计算重新使用每个搜索点正在使用的数据。实际上,每次数据完全是新的。
借助图40图示该事实,这帮助解释为什么不在1/2像素和1/4像素搜索中重新使用该数据。参考图40,由右侧矩形4010表示当前整数值。在搜索的第一步骤中,这些当前整数值4010与表示1/2像素值的红色圆形4020比较。在第二步骤,当前值4010与表示不同组的1/2像素值的蓝色圈4030比较。本领域的普通技术人员将由此能够认识每个搜索步骤中的数据不相同。相同的情况对1/4pel计算也适用。
这隐含对每个搜索点需要重新加载全部数据。如果以常规方式加载每个列或行,则16×16窗口将需要16个时钟周期,这是效率很低的。
为了解决数据加载效率低的这个问题,本发明的系统利用包括水平存储体的ME阵列的新设计。水平存储体的构思前面已经提及。具体地,本发明的ME阵列的水平存储体包括负责加载窗口数据的一部分的四个单独的存储器存储体。它们可以用于水平或者垂直加载数据。通过使用四个单独的存储器存储体来加载每个搜索点的数据,可以在仅四个时钟周期而不是16个时钟周期中处理搜索点。本领域的普通技术人员将认识ME阵列中单独的、专用存储器存储体的数量不限于四个,并且可以基于为运动估计处理选取的窗口大小被确定。ME阵列的寄存器能够确定什么时候要求从存储器存储体加载数据,并且能够自动地计算要访问数据的存储器存储体的地址。
本发明的ME引擎利用另一新设计特征来进一步加速处理。新设计特征涉及在外部存储器接口(EMIF)和内部存储器接口(IMIF)之间提供使用的映像存储器。这在图41中图示。参考图41,存储器4110在一端经由IMIF4130与DMA4120对接,并且在另一端经由EMIF 4150与处理器4140对接。常规地,存储器的行一4111中的数据首先由DMA 4120填充,并且然后由处理器4140使用,同时DMA填充行二4112中的数据。当不依赖行2中的数据而对行1中的数据执行处理器的活动时,或反之亦然,这种“乒乓”方法工作良好。然而,这不是运动估计引擎的情形。在运动估计期间,可能需要宏块84113中的数据来处理宏块74114中的数据,并且可能需要宏块74114中的数据来处理宏块84113中的数据。因此,使用常规存储器组织和访问技术,将停止(stall)整个数据加载处理,直至两个行中的数据被完全处理。
在本发明的系统中通过利用映像存储器4160解决该问题。该映像存储器包括一组三个圆盘存储器-SM1 4161、SM2 4162以及SM3 4163。使用映像存储器4160来加载某些数据块并且存储它们用于将来的使用,允许DMA4120保持填充存储器4110。借助图18中的表图示映像存储器的示例性操作。
参考图18,在第一步骤乒01801中,DMA将数据加载到存储器的宏块0-7中。在相同的步骤中,映像存储器SM1加载并且存储来自宏块6和7的数据。在下一步骤乓01802中,DMA将数据加载到存储器的宏块8-15中。同时,将来自宏块14和15的数据加载并且存储到映像存储器SM2。在随后的步骤乒01803中,DMA将数据加载到存储器的宏块16-23中。在相同的步骤中,映像存储器SM3加载并且存储来自宏块22和23的数据。作为圆盘存储器的映像存储器然后重新循环。映像存储器盘旋转使得能够在每个周期期间纠正来自IMIF和EMIF二者的乒/乓/乒访问。本发明的系统利用状态机,用于指示映像存储器从中取得数据的运动估计引擎。为了该目的,状态机跟踪映像存储器周期。以该方式,DSP继续处理而不需要任何停止。
示例性指令集
现在参考图42的指令格式4200,前端处理器(FEP)每个周期获取(fetch)并且执行80比特指令包。首先的8个比特指定循环信息,而将指令包的剩余72个比特分为两个指定的子包,每个是36比特宽。每个子包可以具有两个18比特指令或者一个36比特指令,造成五个不同的指令槽。
循环槽4205提供指定单个包或多个包的零开销硬件循环的方式。DP0和DP1槽用于引擎特定指令和ALU指令(比特17区分这两个)。这一点在以下表中例示:
比特[71] | 比特[53] | 定义 |
0 | 0 | 循环||引擎||引擎||AGU0||AGU1 |
0 | 1 | 循环||引擎||ALU||AGU0||AGU1 |
1 | - | 36比特 ALU||AGU0||AGU1 |
在此没有显式地定义引擎指令集,这是因为对于每个媒体处理功能引擎是不同的。例如,运动估计引擎提供指令集,并且DCT引擎提供其自身的指令集。不在FEP中执行这些引擎指令。FEP向媒体处理功能引擎发出指令并且引擎执行它们。
ALU指令可以是18比特或36比特。如果DP0槽具有36比特ALU指令,则DP1槽不能具有指令。AGU0和AGU1槽用于AGU(地址生成单元)指令。如果AGU0槽具有带有立即操作数的指令,则AGU1槽最低有效16比特包含16比特立即操作数并且因此AGU1槽不能具有指令。
现在参考图43的FEP的流水线图,在一个实施例中,FEP具有16个16比特数据寄存器(DR)、8个地址寄存器(AR),以及4个递增/递减寄存器(IR)。存在8个地址前缀寄存器(AP)并且它们保持对应的AR的存储器ID部分。存在类似FLAG(标志)寄存器(其保持比较指令的结果)、保存的PC寄存器,以及循环计数寄存器的定义的某些特殊的寄存器(SR)。媒体处理功能引擎可以定义它们自身的寄存器(ER)并且这些可以通过AGU指令被访问。包含DR、SR和ER的组称为复合数据寄存器组(CDR)。包含AR、AP和IR的组称为复合地址寄存器组(CAR)。
FEP支持零开销硬件循环。如果在指令中使用立即值指定循环计数(LC),则允许最大值是32。如果使用LC寄存器指定循环计数,则允许最大值是2048。在硬件中提供一个8条目(entry)循环计数器堆栈来支持达到8个嵌套循环。当LC寄存器被写入(读取)时,将循环计数器堆栈压入(弹出)。这允许软件通过将堆栈移入存储器来对其扩展。
DP0和DP1槽支持ALU指令和引擎特定指令。在FEP中执行ALU指令。ALU指令对数据寄存器(DR)提供简单操作。通用格式是DRk=DRiop(操作)DRj。DP0槽和DP1槽指令表具有FEP ALU支持的指令列表。AGU指令包括:从存储器加载、存储到存储器以及在所有种类寄存器(地址寄存器、数据寄存器、特殊寄存器以及引擎特定寄存器)之间移动数据、比较数据寄存器、分支指令以及返回指令。
如早先提及的,FEP具有8个地址寄存器和4个递增寄存器(还被称为偏移寄存器)。不同的处理单元使用24比特地址总线来寻址不同的存储器。在这些24比特中,来自地址前缀寄存器的底部8个比特的顶部8个比特识别要被寻址的存储器并且来自地址寄存器的剩余16个比特寻址特定存储器。即使数据字长在FEP内部是16比特,其产生的地址是字节地址。这对于需要知道数据来自像素(字节)级的何处的一些媒体处理功能引擎可能是有用的。FEP还支持索引寻址模式。在该模式中,地址的顶部8个比特来自地址前缀寄存器的顶部8个比特。接下来的10个比特来自阵列指针寄存器的顶部10个比特。接下来的5个比特来自指令。最后的比特通常是0。在该模式中,数据类型是16比特或更多。不支持加载字节和存储字节指令。FEP还支持特别适合于视频后处理器中的定标功能的另一地址递增方案。在该方案中,根据以下公式完成地址更新:{An,ASn[7:0]}={An,ASn[7:0]}+In,其中{}是级联操作(concatenation operation),An指代地址寄存器,ASn指代地址后缀寄存器,以及In指代递增寄存器。
可以使用比较指令来比较两个数据寄存器(Dri,DRj)。由此,CMP_S假设两个数据寄存器是有符号数并且CMP_U假设两个数据寄存器是无符号数。FLAG寄存器包含比较操作的输出。例如,如果DRi小于DRj,则将设置LT比特。对于关于FLAG寄存器的另外信息,请参考寄存器定义部分。
条件分支指令允许两种类型的条件。条件性分支可以检查FLAG寄存器中的任一比特是‘1’或‘0’。第二类型的条件允许编程器检查任何数据寄存器中的任一比特是‘1’或‘0’。FLAG寄存器中的比特7和比特6是只读的并且分别被设置为0和1。这可以用于实现无条件分支。
分支指令还具有将跟随延时槽(PC+2)的指令的PC保存到SPC(保存的PC)堆栈的选项(将‘U’设置为‘1’)。这与使用SPC作为目标地址的返回指令一起帮助支持子例程。SPC堆栈是16深并且其还可以用于实现DSL-DEL循环。无论何时SPC寄存器被隐式地或显式地写入(读取),将SPC堆栈压入(弹出)。这允许软件通过将堆栈移动到存储器来对其进行扩展。
分支指令具有总是被执行的延时槽。存在可能帮助编程器灵活地填充延时槽的“取消(kill)”选项。存在当采用分支时取消延时槽的选项(KT比特)以及当不采用分支时取消的另一选项(KF比特)。下面的表例示可以如何使用这两个比特:
寄存器定义
FLAG寄存器
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 1 | OVF | UNF | C | GZ | N | Z | 0 | 1 | LT | GT | EQ | LE | GE | NE |
无论何时FEP执行ALU或者比较指令,更新标志寄存器。ALU指令更新比特[13:8]并且比较指令更新比特[5:0]。比特15和7具有固定值0以及将比特14和6固定为值1。可以使用这些固定的比特模拟无条件分支。
FEP控制寄存器
6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | 0 | SWI_EN | CCE | MDE | MIE |
比特0是主中断使能(main interreupt enable)。在复位时,将它设置为作为使能的‘1’。当FEP采用中断时,清除该比特并且然后进行至中断服务例程。在ISR中,编程器可以判定编码是否可以采用进一步中断并且再次设置该比特。RTI指令(从ISR返回)也将设置该比特。
比特1是主调试使能。在复位时,将它设置为作为使能的‘1’。编程器可以将固件的某些部分与调试模式屏蔽。在一些媒体处理功能引擎中,可以不停止代码的一些优化的部分并且使用停止(stall)实现调试模式。
比特2是周期计数使能。在复位时,将其清除为‘0’,这禁用周期计数器。编程器可以将‘0’写入CCL和CCH并且然后将该比特设置为‘1’。这将使能周期计数器。CCL是计数器最低有效16比特并且CCH是计数器最高有效16比特。
比特3是软件中断使能。在复位时,将其设置为意味着禁用的‘0’,‘1’意味着使能。如果该比特是‘0’,则将忽略SWI指令,并且如果该比特是‘1’,则SWI指令将使FEP采用中断并且进行至矢量地址0×2。
去块滤波器使用作为5槽VLIW控制器的前端处理器(FEP)。FEP指令的格式如下:
循环槽 | DP槽0 | DP槽1 | AGU槽0 | AGU槽1 |
8比特 | 18比特 | 18比特 | 18比特 | 18比特 |
使用循环槽指定LOOP、DLOOP(延时LOOP)和NOOP指令。将DP槽中任何指令传递至DBF数据路径用于执行。这些槽可以用于指定两个18比特数据路径指令或者单个36比特指令。AGU槽用于使用两个内部存储器接口(IMIF0,IMIF1)从内部存储器将数据加载到DBF。为了加载AGU槽0/1,可以使用LOAD指令。本质上存在89个DBF内部寄存器D32:D120。
静态冒险(hazard)是发生在不同执行槽中但是在相同指令包内的指令之间的冒险。下面的规则被设计为最小化这样的冒险发生。
●DST_collision_hazard:在同一包中不允许具有相同目的地寄存器的多个指令。
●CMP_hazard:在指令包的AGU槽中允许仅仅一个比较指令(CMP_U,CMP_S)。
●COF_hazard:在同一包中在流指令的改变的情况下不允许流指令的另一改变(DEL、REPR、REPI、BRF、BRR、BRFI、BRRI、RTS、RTI)。
●DP0_hazard:在dp0槽中允许非18比特FEP ALU指令。
●PCS_rr_hazard:不允许读取PC堆栈的两个指令。在任何指令读取(弹出)PC堆栈的情况下不允许进行DEL、RTS、RTI。(例如:不允许NOP_LP#NOP_DP#NOP_DP#MVD2D R0R17#RTS)。
●PCS_rw_hazard:在任何指令读取(弹出)PC堆栈的情况下(包括DEL、RTS、RTI)不允许进行DSLI、DSLR和BRR、BRF、BRRI、BRFI设置U比特。
●LCS_rr_hazard:不允许读取LC堆栈的两个指令。在任何指令读取LC堆栈的情况下不允许DEL、REPR、DSLR。(例如:不允许DEL#NOP_DP#NOP_DP#MVD2D R0R18#NOP_AG)。
●LCS_rw_hazard:在任何指令读取LC堆栈的情况下不允许MVD2LC、MVI2LC、DSLI、REPI。
●LCS_ww_hazard:在任何指令写入LC堆栈的情况下不允许REPI、REPR、DSLI、DEL、MVI2LC、MVD2LC。
●FLAG_hazard:在任何ALU指令的情况下在相同包中不允许向FLAG寄存器的显式写入。
●AR_update_hazard:如果ARi寄存器是不同的或者LDI、LDBI_U、LDBI_S、STI,STBI的偏移是0,则仅仅允许两个并行agu指令集[LD,LDB_U,LDB_S,LDI,LDBI_U,LDBI_S,ST,STB,STI,STBI]。
●允许具有向pc堆栈显式和隐式写入的指令包。然而,将引起PCS利用作为显式写入的值的堆栈顶部(TOS)压入两次,(例如:NOP_LP#NOP_DP#NOP_DP#MVD2D R17R2#BRF 61R0001。TOS值将是R2值)。
●128-bit_register_hazard:仅仅在加载指令和存储指令中允许128比特宽寄存器(TEMP0,TEMP 1,R0_R7,R8_R15,A0_A6,{RP0_RP3,I0_I3})。
●SWB_hazard:具有SWB指令的指令包不应该包含任何其他指令。
FEP处理所有由数据相关性引起的流水线冒险。FEP自动地处理所有显式的相关性。在大多数情形中,将数据转发(旁路)到需要数据的执行单元以提高性能。在一些情形中,该转发是不可能的并且FEP停止流水线。对这些情形的良好理解能够帮助编程器最小化静止周期。以下是FEP自动停止的情形:
●从ALU指令写入之后寄存器从AGU指令读取停止1周期。
●从来自存储器指令的加载写入之后寄存器从任何指令读取停止1周期。
FEP不处理隐式相关性,隐式相关性是指令中隐式操作数引起相关性的情形(即,不在指令中显式地清楚说明操作数)。以下是FEP不停止以及所以这些隐式相关性必须在固件中处理的情形:
●LC_stack_hazard:除了{MVI2LC,MVD2LC}之外,依据任何AGU指令向LC写入之后的REPR、REPI、DEL、DSLRI、MVI2LC、MVD2LC指令需要2个停止周期(stall cycle)。
●PC_stack_push_push_hazard:依据任何AGU指令向SPC写入之后的BRR、BRF、BRFI、U字段被设置的BRFI或DSLI、DSLR指令(pc堆栈压入)需要2个停止周期。
●PC_stack_push_pop_hazard:依据任何AGU指令向SPC写入之后RTS、RTI、DEL指令(pc堆栈弹出)需要2个停止周期。
●FLAG_read_hazard:除了NOP_DP之外任何ALU指令之后的显式FLAG寄存器读取需要2个停止周期。
●FLAG_BRANCH_hazard:任何ALU指令之后在组FLAG[13:8]中读取比特的BRF、BRFI指令需要2个停止周期。
●FLAG_write_hazard:向FLAG寄存器显式写入之后BRF、BRFI指令需要2个停止周期。
●Combo_register_write_hazard:写入对应组合寄存器组的AGU指令之后的寄存器读取需要2个停止周期(例如,向R0_R7寄存器写入之后的R4读取)。
●Combo_register_read_hazard:写入该组中的一个对应寄存器的任何指令之后组合寄存器(例如,R0_R7)的寄存器读取需要2个停止周期(例如,向R4寄存器写入之后的R0_R7读取)。
●Compare_flag_hazard:依据AGU指令向FLAG写入之后的任何比较指令需要2个停止周期。(注意:这是Write-After-Write冒险)。
●Delay_slot_hazard:当没有设置KT比特时,在BRR/BRF/BRRI/BRFI的延时槽中不允许具有延时槽的流指令的改变(DEL/RTS/RTI/BRR/BRF/BRRI/BRFI)。
除了上面的情形之外,当存储器被访问并且依赖外部实现方式时可能引入一些停止周期。
中断支持
FEP支持一个中断输入,INT_REQ。存在支持16个不同中断的FEP外部的中断控制器。不中断将立即值用作循环计数(Loop Count)的单个包重复指令。类似地,不中断分支延时槽。FEP检查这两个条件并且如果不具备这些,则采用中断并且分支到中断矢量(INT_VECTOR)。在SPC堆栈中保存返回地址。这是仅由硬件保存的状态信息。软件负责保存中断服务例程(ISR)修改的任何事情。RTI指令(从ISR返回)将代码返回到被中断的程序地址。
FEP控制寄存器(特殊寄存器组的一部分)的比特0是主中断使能比特。在复位时,将该比特设置为‘1’,这意味着中断是使能的。当采用中断时,FEP清除中断使能比特。RTI指令设置主中断使能比特。在中断服务例程中,编程器可以判定代码是否可以采用另外的中断并且如果必要再次设置该比特。在设置该比特之前,编程器必须使用中断控制器内的中断清除寄存器来清除中断。
中断控制器具有通过特殊寄存器FEP可访问的以下寄存器。特殊寄存器ICS当写入时对应于中断控制寄存器并且当读取时对应中断状态寄存器。特殊寄存器IMR对应于中断屏蔽寄存器。
这些16个中断具有中断矢量地址0×4。中断服务例程可以读取中断状态寄存器来识别特定中断源。除了这些硬件中断比特之外,SWI指令可以用于中断FEP。如果FEP控制寄存器中的SWI_EN比特是‘1’,则该指令使得FEP采用中断并且分支至固定在0x2的中断矢量地址。这还清除FEP控制寄存器中的主中断使能比特。RTI指令可以用于从ISR返回。在清除中断指令(向ICS寄存器的写入)和RTI指令之间需要4周期间隙。
调试支持
设计调试接口来提供以下特征:
1.读取并且写入程序存储器
2.基于FEP执行的程序地址停止程序
3.基于任何其他事件停止程序
4.每次一个指令包地单步通过程序
5.读取并且写入FEP寄存器
6.读取并且写入FEP可访问的存储器。
在调试控制器的帮助下,FEP支持这些特征。
1 FEP端口
2 FEP具有以下端口:
应该认识已经关于特定实施例描述本发明,但是本发明不限于此。具体地,本发明针对运动估计引擎、能够处理多个标准编码视频、音频和图形数据的集成芯片架构,以及使用这样的架构的设备。
虽然上面结合本发明的具体实施例进行了描述,应该理解实施例的描述对于本发明是示例性的并且意图不被限制。本领域的技术人员可以想出各种修改和应用,而不背离所附权利要求限定的本发明的真正精神和范围。
Claims (20)
1.一种具有可配置功能数据路径的处理器,包括:
a.多个地址生成器单元;
b.程序流控制单元;
c.多个数据和地址寄存器;
d.指令控制器;
e.可编程功能数据路径;以及
f.至少两条存储器数据总线,其中,所述两条存储器数据总线的每一条与所述多个地址生成器单元、程序流控制单元、多个数据和地址寄存器、指令控制器,和可编程功能数据路径进行数据通信。
2.如权利要求1所述的处理器,其中,所述可编程功能数据路径包括被配置为对输入到所述可编程功能数据路径的数据执行DCT和IDCT处理的电路。
3.如权利要求2所述的处理器,其中,所述被配置为对输入到所述可编程功能数据路径的数据执行DCT和IDCT处理的电路能够在逻辑上被编程为根据H.264、MPEG-2、MPEG-4、VC-1或AVS协议中的任一个来执行DCT和IDCT处理,而不需要修改物理电路。
4.如权利要求3所述的处理器,其中,能够对输入到所述可编程功能数据路径的数据执行所述DCT和IDCT处理,以使得能够以500MHz或更低的处理器频率以每秒至少30帧显示视频。
5.如权利要求1所述的处理器,其中,所述可编程功能数据路径包括被配置为对输入到所述可编程功能数据路径的数据执行运动估计处理的电路。
6.如权利要求5所述的处理器,其中,所述被配置为对输入到所述可编程功能数据路径的数据执行运动估计处理的电路能够在逻辑上被编程为根据H.264、MPEG-2、MPEG-4、VC-1或AVS协议中的任一个来执行运动估计处理,而不需要修改物理电路。
7.如权利要求6所述的处理器,其中,能够对输入到所述可编程功能数据路径的数据执行所述运动估计处理,以使得能够以500MHz或更低的处理器频率以每秒至少30帧显示视频。
8.如权利要求1所述的处理器,其中,所述可编程功能数据路径包括被配置为对输入到所述可编程功能数据路径的数据执行去块滤波处理的电路。
9.如权利要求8所述的处理器,其中,所述被配置为对输入到所述可编程功能数据路径的数据执行去块滤波处理的电路能够在逻辑上被编程为根据H.264、MPEG-2、MPEG-4、VC-1或AVS协议中的任一个来执行去块滤波处理,而不需要修改物理电路。
10.如权利要求9所述的处理器,其中,能够对输入到所述可编程功能数据路径的数据执行所述去块滤波处理,以使得能够以500MHz或更低的处理器频率以每秒至少30帧显示视频。
11.如权利要求1所述的处理器,其中,所述可编程功能数据路径包括被配置为对输入到所述可编程功能数据路径的数据执行运动补偿处理的电路。
12.如权利要求11所述的处理器,其中,所述被配置为对输入到所述可编程功能数据路径的数据执行运动补偿处理的电路能够在逻辑上被编程为根据H.264、MPEG-2、MPEG-4、VC-1或AVS协议中的任一个来执行运动补偿处理,而不需要修改物理电路。
13.如权利要求12所述的处理器,其中,能够对输入到所述可编程功能数据路径的数据执行所述运动补偿处理,以使得能够以500MHz或更低的处理器频率以每秒至少30帧显示视频。
14.如权利要求1所述的处理器,其中,所述可编程功能数据路径包括被配置为对输入到所述可编程功能数据路径的数据执行标量处理的电路。
15.如权利要求14所述的处理器,其中,所述被配置为对输入到所述可编程功能数据路径的数据执行标量处理的电路能够在逻辑上被编程为根据H.264、MPEG-2、MPEG-4、VC-1或AVS协议中的任一个来执行标量处理,而不需要修改物理电路。。
16.如权利要求15所述的处理器,其中,能够对输入到所述可编程功能数据路径的数据执行所述标量处理,以使得能够以500MHz或更低的处理器频率以每秒至少30帧显示视频。
17.一种处理器,包括:
a.多个地址生成器单元;
b.程序流控制单元;
c.多个数据和地址寄存器;
d.指令控制器;以及
e.可编程功能数据路径,其中,所述可编程功能数据路径包括被配置为对输入到所述可编程功能数据路径的数据执行以下任一个处理功能的电路:DCT处理、IDCT处理、运动估计、运动补偿、熵编码、去交织、去噪声、量化或去量化。
18.如权利要求17所述的处理器,其中,所述电路能够在逻辑上被编程为根据H.264、MPEG-2、MPEG-4、VC-1或AVS协议中的任一个执行所述处理功能,而不需要修改物理电路。
19.如权利要求18所述的处理器,其中,能够执行所述处理功能,以使得能够以500MHz或更低的处理器频率以每秒至少30帧显示视频。
20.一种包括至少5个如权利要求1所述的处理器以及任务调度器的片上系统,其中,第一处理器包括被配置为对输入到可编程功能数据路径的数据执行熵编码的可编程功能数据路径;第二处理器包括被配置为对输入到可编程功能数据路径的数据执行离散余弦变换处理的可编程功能数据路径;第三处理器包括被配置为对输入到可编程功能数据路径的数据执行运动补偿的可编程功能数据路径;第四处理器包括被配置为对输入到可编程功能数据路径的数据执行去块滤波的可编程功能数据路径;以及第五处理器包括被配置为对输入到可编程功能数据路径的数据执行去交织的可编程功能数据路径。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15154209P | 2009-02-11 | 2009-02-11 | |
US15154709P | 2009-02-11 | 2009-02-11 | |
US15154609P | 2009-02-11 | 2009-02-11 | |
US15154009P | 2009-02-11 | 2009-02-11 | |
US61/151,540 | 2009-02-11 | ||
US61/151,547 | 2009-02-11 | ||
US61/151,546 | 2009-02-11 | ||
US61/151,542 | 2009-02-11 | ||
PCT/US2010/023956 WO2010093828A1 (en) | 2009-02-11 | 2010-02-11 | Front end processor with extendable data path |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102804165A true CN102804165A (zh) | 2012-11-28 |
Family
ID=42562063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800162519A Pending CN102804165A (zh) | 2009-02-11 | 2010-02-11 | 具有可扩展数据路径的前端处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20100321579A1 (zh) |
EP (1) | EP2396735A4 (zh) |
CN (1) | CN102804165A (zh) |
WO (1) | WO2010093828A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103281536A (zh) * | 2013-05-22 | 2013-09-04 | 福建星网视易信息系统有限公司 | 一种兼容avs及h.264的去块滤波方法及装置 |
CN104023243A (zh) * | 2014-05-05 | 2014-09-03 | 北京君正集成电路股份有限公司 | 视频前处理方法和系统,视频后处理方法和系统 |
CN104503732A (zh) * | 2014-12-30 | 2015-04-08 | 中国人民解放军装备学院 | 一种面向飞腾处理器的一维8点idct并行方法 |
CN105378651A (zh) * | 2013-05-24 | 2016-03-02 | 相干逻辑公司 | 具有可编程优化的存储器-网络处理器 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110314253A1 (en) * | 2010-06-22 | 2011-12-22 | Jacob Yaakov Jeffrey Allan Alon | System, data structure, and method for transposing multi-dimensional data to switch between vertical and horizontal filters |
US9665540B2 (en) * | 2011-07-21 | 2017-05-30 | Arm Limited | Video decoder with a programmable inverse transform unit |
US9323521B2 (en) * | 2011-12-19 | 2016-04-26 | Silminds, Inc. | Decimal floating-point processor |
US9513908B2 (en) | 2013-05-03 | 2016-12-06 | Samsung Electronics Co., Ltd. | Streaming memory transpose operations |
US10291813B2 (en) * | 2015-04-23 | 2019-05-14 | Google Llc | Sheet generator for image processor |
GB201516670D0 (en) * | 2015-09-21 | 2015-11-04 | Taranis Visual | Method and system for interpolating data |
US11167003B2 (en) | 2017-03-26 | 2021-11-09 | Mapi Pharma Ltd. | Methods for suppressing or alleviating primary or secondary progressive multiple sclerosis (PPMS or SPMS) using sustained release glatiramer depot systems |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080126812A1 (en) * | 2005-01-10 | 2008-05-29 | Sherjil Ahmed | Integrated Architecture for the Unified Processing of Visual Media |
US20080288728A1 (en) * | 2007-05-18 | 2008-11-20 | Farooqui Aamir A | multicore wireless and media signal processor (msp) |
CN101739383A (zh) * | 2008-11-19 | 2010-06-16 | 北京大学深圳研究生院 | 一种可配置处理器体系结构和控制方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030142875A1 (en) * | 1999-02-04 | 2003-07-31 | Goertzen Kenbe D. | Quality priority |
US6930689B1 (en) * | 2000-12-26 | 2005-08-16 | Texas Instruments Incorporated | Hardware extensions for image and video processing |
US7721069B2 (en) * | 2004-07-13 | 2010-05-18 | 3Plus1 Technology, Inc | Low power, high performance, heterogeneous, scalable processor architecture |
US8009740B2 (en) * | 2005-04-08 | 2011-08-30 | Broadcom Corporation | Method and system for a parametrized multi-standard deblocking filter for video compression systems |
AU2007231799B8 (en) * | 2007-10-31 | 2011-04-21 | Canon Kabushiki Kaisha | High-performance video transcoding method |
US20090304086A1 (en) * | 2008-06-06 | 2009-12-10 | Apple Inc. | Method and system for video coder and decoder joint optimization |
-
2010
- 2010-02-11 EP EP10741743A patent/EP2396735A4/en not_active Withdrawn
- 2010-02-11 US US12/704,472 patent/US20100321579A1/en not_active Abandoned
- 2010-02-11 WO PCT/US2010/023956 patent/WO2010093828A1/en active Application Filing
- 2010-02-11 CN CN2010800162519A patent/CN102804165A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080126812A1 (en) * | 2005-01-10 | 2008-05-29 | Sherjil Ahmed | Integrated Architecture for the Unified Processing of Visual Media |
US20080288728A1 (en) * | 2007-05-18 | 2008-11-20 | Farooqui Aamir A | multicore wireless and media signal processor (msp) |
CN101739383A (zh) * | 2008-11-19 | 2010-06-16 | 北京大学深圳研究生院 | 一种可配置处理器体系结构和控制方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103281536A (zh) * | 2013-05-22 | 2013-09-04 | 福建星网视易信息系统有限公司 | 一种兼容avs及h.264的去块滤波方法及装置 |
CN103281536B (zh) * | 2013-05-22 | 2016-10-26 | 福建星网视易信息系统有限公司 | 一种兼容avs及h.264的去块滤波方法及装置 |
CN105378651A (zh) * | 2013-05-24 | 2016-03-02 | 相干逻辑公司 | 具有可编程优化的存储器-网络处理器 |
CN105378651B (zh) * | 2013-05-24 | 2018-09-18 | 相干逻辑公司 | 具有可编程优化的存储器-网络处理器 |
CN104023243A (zh) * | 2014-05-05 | 2014-09-03 | 北京君正集成电路股份有限公司 | 视频前处理方法和系统,视频后处理方法和系统 |
CN104503732A (zh) * | 2014-12-30 | 2015-04-08 | 中国人民解放军装备学院 | 一种面向飞腾处理器的一维8点idct并行方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2010093828A1 (en) | 2010-08-19 |
EP2396735A4 (en) | 2012-09-26 |
US20100321579A1 (en) | 2010-12-23 |
EP2396735A1 (en) | 2011-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102804165A (zh) | 具有可扩展数据路径的前端处理器 | |
US20220060748A1 (en) | Luma-based chroma intra-prediction for video coding | |
US11785224B2 (en) | Low-complexity two-dimensional (2D) separable transform design with transpose buffer management | |
US8116379B2 (en) | Method and apparatus for parallel processing of in-loop deblocking filter for H.264 video compression standard | |
US8516026B2 (en) | SIMD supporting filtering in a video decoding system | |
US20070291857A1 (en) | Systems and Methods of Video Compression Deblocking | |
WO2007049150A2 (en) | Architecture for microprocessor-based systems including simd processing unit and associated systems and methods | |
Diniz et al. | A reconfigurable hardware architecture for fractional pixel interpolation in high efficiency video coding | |
US7965767B2 (en) | Two-dimensional filtering architecture | |
JP4704333B2 (ja) | 画像符号化装置および画像復号化装置、ならびにそれらで用いられる集積回路 | |
Ben Atitallah et al. | An FPGA comparative study of high‐level and low‐level combined designs for HEVC intra, inverse quantization, and IDCT/IDST 2D modules | |
Koziri et al. | Implementation of the AVS video decoder on a heterogeneous dual-core SIMD processor | |
US7756351B2 (en) | Low power, high performance transform coprocessor for video compression | |
WO2002087248A2 (en) | Apparatus and method for processing video data | |
EP1351512A2 (en) | Video decoding system supporting multiple standards | |
US8503537B2 (en) | System, method and computer readable medium for decoding block wise coded video | |
KR101031493B1 (ko) | 에이치 닷 264 표준에 근거한 디코더용 움직임 보상기 및 그 보간 연산 방법 | |
Ngo et al. | ASIP-controlled inverse integer transform for H. 264/AVC compression | |
WO2024088058A1 (en) | Method and apparatus of regression-based intra prediction in video coding system | |
Zheng et al. | Hardware Architecture Design for High-performance H. 264/AVC Deblocking Filter. | |
Garcia et al. | Low-Power Inverse Multiple Transform Hardware Design for 8K@ 60fps Real-Time VVC Decoding | |
Abbas et al. | A motion estimation chip for block based MPEG-4 video applications | |
KR20160059732A (ko) | 에이치이브이씨에서 y, u 및 v 변환의 병렬 처리를 위한 재사용 디씨티 아키텍처 | |
CN114503559A (zh) | 用于视频译码中的帧间预测装置和方法的插值滤波器 | |
Gong et al. | New programmable video signal processor for motion estimation and motion compensation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C05 | Deemed withdrawal (patent law before 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121128 |