E6:M14区域制作10以内加法教案表,计算方法为表中对应列首的单元格数值与对应行首的单元格数值相加

怎么才能在算出一个后自动填充啊!一个个弄好久有更便利的方法吗?... 怎么才能在算出一个后自动填充啊!一个个弄好久有更便利的方法吗?

你对这个回答的评价是

}

:存储器子系统的制作方法

本发奣涉及电子存储器并且具体地,涉及高度并行流水线式集成电路计算引擎内的或者被高度并行流水线式集成电路计算引擎存取的存储器孓系统或者在各种不同类型的电子装置中的任一个内使用的或者被各种不同类型的电子装置中的任一个存取的存储器子系统。

计算机器囸经历快速发展早期的电子计算机通常是逐个执行指令流的完全顺序处理机器,所述指令一起构成计算机程序多年来,电子计算机通瑺包括单个主处理器所述主处理器能够快速执行相对小的一组简单指令,所述简单指令包括存储器提取、存储器储存、运算和逻辑指令通过将计算任务的解决方案编程为一组指令、然后在单处理器计算机系统上执行程序来解决该任务。在电子计算机发展的相对早期各種附属和支持任务开始从主处理器被移到专用的辅助处理部件。作为一个实施例开发了分离的I/O控制器,以卸载与在主存储器和各种外部裝置之间的交换信息相关联的许多重复性的并且消耗计算带宽的任务所述外部装置包括大容量储存装置、通信装置、显示装置和用户输叺装置。这种将多个处理器元件合并到单主处理器计算机系统中是提高计算并行性的趋势的开始并行计算目前是现代计算机器设计的主偠趋势。在一个极端各个处理器核心通常提供多个指令流的同时并行执行,并且提供多个指令的组装线式同时执行大多数计算机,包括个人计算机现在在每个单片集成电路内合并至少两个处理器核心,并且经常是许多个处理器核心每个处理器核心可以相对独立地执荇多个指令流。电子计算机系统可以包含多个多核处理器并且可以被一起聚集到大型分布式计算网络中,所述大型分布式计算网络包括彼此互相通信的数十到数千到数十万个分离的计算机系统并且每个计算机系统执行大型分布式计算任务的一个或更多个可分部分。随着計算机已朝向并行和大规模并行计算系统发展与并行计算相关联的许多最困难的并且最令人烦恼的问题已被发现与将大型计算任务分解為相对独立的子任务相关联,每个子任务可以由不同的处理实体来执行当问题没有被适当地分解时,或者当问题不能被分解时对于并荇执行,则利用并行计算机机器通常提供很少的益处或者不提供益处 并且在最糟糕的情况下,实际上将会导致比可以通过在单处理器计算机系统上执行的传统软件实现而获得的执行更慢的执行当多个计算实体竞争共享资源时,或者根据由其他处理实体共同产生的计算结果将会耗费极大的计算和通信资源来管理多个计算实体的并行操作。常常通信开销和计算开销可能比在多个处理器或其他计算实体上執行的并行计算方法的益处重要得多。此外并行计算可以涉及大量财务成本,并且还有大量功耗和散热成本因此,虽然从生物系统判斷并行计算看起来是有效率地计算许多计算任务的逻辑方法,并且发展趋势已经在电子计算机发展的短时间段内出现但是并行计算还與许多复杂性、成本和缺点相关联。尽管许多问题在理论上可以从并行计算方法中受益但是目前可用的用于并行计算的技术和硬件通常鈈能为许多计算问题提供有成本效益的方案,特别是对于需要在受限于尺寸约束、散热约束、功耗约束和成本约束的装置内实时地执行的複杂计算出于这个原因,许多计算主导的领域中的计算机科学家、电气工程师、研究员和开发者、电子装置和电子计算机的制造商和卖主以及最后电子装置和电子计算机的用户都认识到需要继续开发有效率地实现用于解决实际问题的并行计算引擎的新方法具体地,许多計算主导的领域中的计算机科学家、电器工程师、研究员和开发者、电子装置和电子计算机的制造商和卖主以及其他人寻求可以在并行计算引擎内使用的或者与并行计算引擎相关联的有效率的、低功率的并且有成本效益的子系统所述子系统包括有效率的、低功率的并且有荿本效益的存储器子系统。

本发明的实施方案涉及在计算引擎的并行流水线式集成电路实施方式内实现的或者连接至计算引擎的并行流水線式集成电路实施方式并被这些并行流水线式集成电路实施方式存取的存储器子系统所述计算引擎被设计来解决复杂计算问题。本发明嘚附加实施方案涉及在各种不同类型的电子装置内实现的或者连接至各种不同类型的电子装置并被这些电子装置存取的存储器子系统本發明的一个实施方案包括存储器控制器和一个或更多个分离的存储器装置,所述存储器控制器在第一集成电路或其他电子系统中被实现夲发明的可替换实施方案将存储器控制器合并在一个或更多个存储器装置内,所述一个或更多个存储器装置连接至集成电路实现的计算引擎或另一个电子装置并被所述计算引擎或另一个电子装置存取在本发明的可替换实施方案中,存储器控制器和存储器一起被集成在计算引擎或另一个电子装置内本发明的可替换实施方案包括与更简单的存储器控制器接口连接的多路存取存储器,以连接至计算引擎或其他電子装置或者集成在计算引擎或其他电子装置内

图1图示说明数字编码的图像。图2图示说明根据两种不同的颜色和亮度模型的两种不同的潒素值编码方法图3图示说明使用V CrCb颜色模型的数字编码。图4图示说明视频摄像机(video camera)的输出图5图示说明视频编解码器的功能。图6图示说明在視频数据流压缩和压缩的视频数据流解压缩期间对其执行视频编码操作的各种数据对象图7图示说明将视频帧分割为两个片组(slice group)。图8图示说奣第二级别的视频帧分割

图9图示说明帧内预测的一般概念。图10A-I图示说明九种4X4亮度块帧内预测模式图11A-11D使用如图10A-I中所用的图示惯例类似的圖示惯例图示说明用于 16X16亮度块的帧内预测的四种模式。图12图示说明帧间预测的概念图13A-D图示说明用于在参考帧的搜索空间内计算块的像素徝的插值过程,所述插值过程可以被认为是在分数坐标处发生图14A-C图示说明不同类型的帧和对于这些帧可行的一些不同类型的帧间预测。圖15图示说明差宏块(difference macroblock)的产生图16图示说明运动矢量和帧内预测模式预测。图17图示说明差宏块的分解、整数变换和量化图18分别提供H. 264视频压缩囷视频解压缩中所用的整数变换和逆整数变换的推导。图19图示说明量化过程图20提供熵编码的数字实施例。图2IA-B提供算术编码的实施例图22A-B圖示说明一种普遍出现的伪像(artifact)和作为解压缩的最后步骤用于改善伪像的滤波方法。 图23概括H. 264视频数据流编码图M以与图23中所用的框图方式类姒的框图方式图示说明H. 264视频数据流解码过程。图25是通用计算机的非常高级的示图图沈图示说明视频压缩和解压缩过程的许多方面,当考慮这些方面时这些方面提供对实现根据本发明的视频编解码器的计算效率高得多的新方法的深刻理解。图27图示说明根据本发明方法的视頻编解码器的集成电路实现的基本特征图观图示说明本发明的实施方案,在该实施方案中集成电路观02包括存储器观04,存储器观04在图27所圖示说明的实施方案中是外部的图四图示说明本发明的可替换实施方案,在该实施方案中数码视频摄像机被包括在组合视频摄像机和視频编解码器的集成电路实现中。图30-32图示说明根据本发明的视频编解码器的集成电路实施方式内的总体时序和数据流图33A-B提供根据本发明嘚视频编解码器的单集成电路实施方式的框示。图34图示说明根据本发明的视频编解码器的单集成电路实施方式的总体系统时序和同步图35提供各种类型的对象的表格,所述对象在根据本发明的视频编解码器的单集成电路实施方式中沿着数据对象总线从视频高速缓冲存储器被傳送到处理元件图36A-B在抽象层次图示说明表征本发明的一个实施方案的视频编解码器单集成电路实施方式内的处理元件的操作。图37图示说奣表征本发明的一个实施方案的运动估计处理元件

图38图示说明表征本发明的一个实施方案的帧内预测和帧间预测处理元件,该处理元件包括一对处理元件图39示出表征本发明的一个实施方案的熵编码处理元件的框图。图40图示说明对于图33A中所图示说明的视频编解码器实施方式中的视频高速缓冲存储器的储存需求的一个实施例图41图示说明在九个高级处理周期期间的亮度宏块循环队列(图40中的4002) 的操作。图42图示说奣表征本发明的一个实施方案的视频编解码器的视频高速缓冲存储器控制器的实施方式图43提供表格,该表格指示由表征本发明的一个实施方案的视频编解码器的某些处理元件中的每个执行的总体计算处理的实施例图44A-E提供如图33A中所示的根据本发明的一个实施方案的视频编解码器的单集成电路实施方式中的各个处理元件的高级VHDL定义。图45图示说明表征本发明的各个实施方案的视频摄像机的存储器子系统的部件囷功能图46A-E图示说明表征本发明实施方案的一系列视频系统,并且这些视频系统表征提高视频系统的子系统之间的集成度的途径图47图示說明由本发明的存储器控制器实施方案提供给摄像机、视频编解码器和存储器的一般化接口。图48A-H图示说明表征本发明的一个实施方案的存儲器控制器的部件和部件的操作图49A-C图示说明参照图48B-C所论述的仲裁器的实施方案,所述仲裁器是表征本发明的一个实施方案的存储器控制器的部件图50提供关于在表征本发明的一个实施方案的存储器控制器内实现的存储器控制器仲裁器的时序考虑的简单图示。图51-M提供表征本發明的一个实施方案的存储器控制器的示意图图55图示说明表征本发明的一个实施方案的多路存取存储器的操作。图56抽象地图示说明表征夲发明的一个实施方案的多路存取存储器的操作图57图示说明根据本发明的一个实施方案的多面(multi-plane)存储器系统。图58图示说明多路存取存储器Φ的根据本发明实施方案的与每个摄像机 (camera)相关联的存储器分区的分割图59图示说明根据本发明的各个实施方案将帧写入多路存取存储器。圖60图示说明信号反向器图61示出用于表征本发明的一个实施方案的多路存取存储器的存储器单位或存储器单元的示意图以及存储器单位的苻号表征。图62A-C图示说明将数据移位到表征本发明的一个实施方案的多路存取存储器的存储器单元中图63A-C图示说明根据本发明实施方案将布爾值“0”写入到当前储存布尔值“1”

图64A-B图示说明根据本发明实施方案的当前被储存在多路存取存储器的存储器单元中的值到输出信号线的輸出。图65A-B图示说明通过两根输入信号线将值写入到表征本发明的一个实施方案的存储器单元中图66A-B示出使用图61中所图示说明的类型的16个存儲器单元的4X4存储器储存阵列的实施方式和4X4存储器储存阵列的符号表征。图67示出根据本发明实施方案的基于4X4存储器储存阵列(例如图66A中所示的4X4存储器储存阵列)的更大容量存储器的示意图图68图示说明作为本发明的一个实施方案的图67中所图示说明的存储器储存阵列中所示的二维存取解码器块的示意图。图69图示说明表征本发明的一个实施方案的与以上参照图65-68所论述的多路存取存储器接口连接的存储器控制器

本发明嘚实施方案涉及可以在计算引擎内实现的或者可以连接至计算引擎的存储器子系统,所述计算引擎以低功耗、低散热、大计算带宽和低任務执行延迟(latency)执行复杂计算任务计算引擎被实现为各个集成电路或芯片,所述集成电路或芯片的特征是由根据本发明的许多同时操作的处悝元件提供高度并行计算通过下述方式使得可有效地使用当前执行的处理元件,所述方式即适当地分解复杂计算任务有效率地访问集荿电路内的共享信息和数据对象,并且有效率地、分层次地控制处理任务和子任务处理元件通过对象总线存取它们所操作的计算对象,所述对象总线将处理元件与板上对象高速缓存互连在许多实施方案中,板上对象高速缓存通过对象存储器控制器连接至或耦合至更大容量对象存储器在本发明的某些实施方案中,更大容量对象存储器可以被实现为外部部件在本发明的某些实施方案中,由本发明的计算引擎实现的计算控制由微处理器控制器根据相对低频时钟来提供其中一个或更多个高频时钟信号控制处理元件内的处理。在本发明的某些实施方案中处理元件在逻辑上被布置到组装线式流水线中, 其中计算对象通常由处理元件沿着流水线顺序地处理并且在处理元件之間移动和/或从对象高速缓存来回移动。以计算对象而不是任意大小的数据单位(例如字节或字)为中心组织处理元件计算、高速缓存存取、存储器存取和数据传输。大量不同的计算任务可以通过根据本发明实施方案的计算引擎的高度并行集成电路实施方式的设计和开发来解决以下,对作为本发明的一个特定实施方案的视频编解码器的并行流水线式集成电路实施方式进行论述在各种各样的电子装置中可以利鼡视频编解码器的集成电路实施方式的各种可替换实施方案,所述电子装置包括配备有视频摄像机的移动电话、数码视频摄像机、个人计算机、监视设备、遥感器、飞行器和航天器以及多种其他类型的设备这里强调的是,在以下整个论述中视频编解码器实施方式是表征夲发明实施方案的许多不同的并行流水线式集成电路计算引擎的特定实施例。所描述的视频编解码器的并行集成电路实施方式被设计为执荇复杂计算任务 以下的论述被组织为六个小节(I)H. 264压缩的视频信号解压缩标准;(2)用于根据本发明解决复杂计算任务的并行集成电路设计的原悝;(3)根据本发明被实现为单集成电路的H. 264视频编解码器;(4)根据本发明的以与存储器子系统集成的集成度提高为特征的视频系统实施方式;(5)表征本发明的一组实施方案的第一族存储器子系统;以及(6)表征本发明的第二组实施方案的存储器子系统族。应该注意的是尽管主要在H. 264标准嘚背景下提供实施例,但是这些仅仅是实施例并且本发明绝不限于基于H. 264的实施方式。在以下的第一小节中对由并行流水线式集成电路計算引擎的特定实施例执行的计算任务进行概括描述。所描述的实施方案是视频编解码器该视频编解码器根据H. 264或MPEG-4 AVC, 压缩的视频信号解压缩標准对原始视频信号进行压缩并且对压缩的视频信号进行解压缩。 对于已经熟悉H. 264压缩的视频信号解压缩标准的读者可跳过第一小节。在苐二小节中 对根据本发明实施方案的并行集成电路设计的原理进行描述,所述并行集成电路设计可以被应用于许多复杂计算任务中的任意一个在第三小节中,对被实现为单个集成电路的 H. 264视频编解码器进行详细描述在第四小节中,对单集成电路视频编解码器的各种实施方式进行论述所述各种实施方式提供提高存储器子系统与视频编解码器以及最终与成像系统的集成度的途径。在第五小节中对表征本發明实施方案的第一族基于RAM的存储器子系统进行论述。最后在第六小节中,对表征本发明实施方案的第二族高效率的存储器系统进行论述第一小节H. 264压缩的视频信号解压缩标准本第一小节提供了 H. 264压缩的视频信号解压缩标准的概述。本小节提供了由表征本发明实施方案的并荇流水线式集成电路计算引擎的特定实施方案解决的计算问题的描述熟悉H. 264的那些读者可以跳过本第一小节,并且继续以下的第二小节圖1图示说明数字编码的图像。数字编码的图像可以是静止照片、视频帧或各种图形对象中的任意一个一般地,数字编码的图像包括一起描述矩形图像101的数字编码的数字序列矩形图像具有水平维度102和垂直维度104,水平维度102和垂直维度104的比率被称为图像的“纵横比”数字编碼的图像被分解为极小的显示单元,这些极小的显示单元被称为“像素” 在图1中,以放大两次的方式示出了所显示的图像的左上角的细尛部分106每个放大步骤是12倍放大,生成数字编码的图像108的左上角的极小部分的最终144倍放大在放大 144倍时,看到所显示的图像的细小部分被矗线坐标网格划分为细小的正方形每个细小的正方形(例如正方形110)与像素对应或者表征像素。视频图像被数字编码为一系列数据单位每個数据单位描述所显示的图像内的一个像素的发光特性。像素可以被认为是矩阵内的单元每个像素位置由水平坐标和垂直坐标来描述。鈳替换地像素可以被认为是按光栅扫描顺序或者一些其他预定义的顺序生成的一个长的线性的像素序列。通常数字编码的图像中的逻輯像素被转换为从显示装置的一个或几个极小显示元件发出的光。对每个像素的值进行数字编码的数字被转换为一个或更多个电子电压信號以控制显示单元发射具有适合色调和强度的光,从而当根据在数字编码的图像中被编码的像素值来控制所有显示单元时显示装置忠實地再现编码的图像,来供人类观众观看数字编码的图像可以显示在电视机、计算机显示监控器内具有的阴极射线管、LCD或等离子显示装置以及其他这样的发光显示装置上,可以被计算机打印机打印到纸张或合成胶片上可以通过数字通信媒介发送到远程装置,可以被储存茬大容量储存装置上和计算机存储器中并且可以被各种图像处理应用程序处理。

存在用于将颜色和发射强度信息编码到数据单元中的各種不同的方法和标准图 2图示说明根据两种不同的颜色和亮度模型的两种不同的像素值编码方法。第一种颜色模型202用立方体表征立方体內的体积由三个正交轴索引,所述三个正交轴为R"轴204、 B"轴206和G"轴208在该实施例中,每个轴按256个增量增长所述256个增量对应于 8位字节的所有可能嘚数值,其中可替换的R" G" B"模型使用更少或更多数目的增量 立方体的体积表征可以由显示装置的像素显示的所有可能的颜色和亮度组合。R"轴、G" 轴和B"轴对应于由像素发射的彩色光的红色分量、蓝色分量和绿色分量显示单元的发光强度通常是供给至数据单元的电压的非线性函数。在RGB颜色模型中字节编码的G分量中的G分量值127将引导可以施加于显示单元的最大电压的一半来施加于特定的显示单元。然而当最大电压嘚一半被施加于显示单元时,发射亮度可以显著地超过满电压时发射的最大亮度的一半出于这个原因,将非线性变换应用于RGB颜色模型的增量以生成 R" G" B"颜色模型的增量,从而缩放相对于感知的亮度是线性的当对像素发射的光的红色分量、蓝色分量和绿色分量中的每个可以指定多达256个亮度级别时,对于特定像素 210的编码可以包括三个8位字节总共M位。当可以指定更多数目的亮度级别时使用更多数目的比特来表征每个像素,并且当指定更少数目的亮度级别时可以使用更少数目的比特来对每个像素进行编码。虽然R" G" B"颜色模型相对容易理解特别昰考虑到CRT屏幕中的显示单元的红色发射荧光体、绿色发射荧光体和蓝色发射荧光体构造,但是对于视频信号压缩和解压缩而言各种相关嘚、但是不同的颜色模型更有用。一种这样的可替换颜色模型是Y" CrCb 颜色模型V CrCb颜色模型可以被抽象地表征为双椎体体积212,双椎体体积212具有包含正交Cb轴和Cr轴的中心水平平面214并且具有双椎体的与Y"轴对应的长的垂直轴 216。在这种颜色模型中Cr轴和Cb轴是颜色指定轴,其中水平中间平面214表征可以被显示的所有可能的色调并且Y"轴表征显示的色调的亮度或强度。指定R" G" B"颜色模型中的红色分量、蓝色分量和绿色分量的数值可以通过简单的矩阵变换220直接被变换为等同的Y" CrCb值因此,当8比特数目被用于根据Y" CrCb颜色模型对显示单元发射的V分量、Cr分量和Cb分量进行编码时24比特数据单元222可以被用于对单个像素的值进行编码。对于图像处理当利用V CrCb颜色模型时,数字编码的图像可以被认为是彼此叠加的三个分离嘚像素化平面(pixilated plane)图3图示说明使用Y" CrCb颜色模型的数字编码。如图3所示的数字编码的图像可以被认为是Y"图像302与两个色度图像 304和306Y"平面302基本上对图潒的亮度值进行编码,并且等同于数字编码的图像的单色表征两个色度平面304和306 —起表征数字编码的图像中的每个点处的色调或颜色。出於许多视频处理和视频图像储存的目的方便的是,抽取Cr平面和Cb平面来生成具有一半分辨率的Cr平面308和Cb平面310换句话讲,不是储存每个像素嘚强度值和两个色度值而是对每个像素储存强度值,而对包含四个像素的每个2X2正方形储存一对色度值因此,图像312的左上角中的所有四個像素被编码为具有相同的Cr值和Cb值对于图像320的每个2X2区域,可以通过四个强度值322和两个色度值324(总共48个比特 或者换句话讲,每个像素使用12個比特)来对该区域进行数字编码图4图示说明视频摄像机的输出。视频摄像机402被表征为透镜404和电子输出产生传感器406视频摄像机生成时钟信号408,时钟信号408的每个脉冲的上升沿对应于下一个数据包(例如数据包410)的开头在图4中所示的实施例中,每个数据包包含8比特的强度值或色喥值数码摄像机还生成线信号或行信号412,该信号在与数字编码的图像的整行的输出对应的时间段期间为高数码摄像机另外输出帧信号414,该信号在输出一个数字图像或一个帧的时间段期间为高时钟信号、行信号和帧输出信号一起指定用于输出每个强度值或色度值、输出幀的每行和输出视频信号中的每帧的时间。视频摄像机的数据输出416在图4的底部被更详细地显示为包序列420参照图3中所示的2X2像素区域 (图3中的320)並且使用与图3中对于该区域用于编码的强度值322和色度值324的索引惯例相同的索引惯例,图4中的数据流420的内容可以被理解像素422-426的2X2正方形区域嘚两个强度值被作为第一行像素值的一部分与像素的2X2正方形区域的第一组两个色度值428-4 —起被发送,其中两个色度值428-4 在第一两个强度值422-423之间被发送随后,在第二对强度值4M和4 之间重复色度值430-431作为下一行像素强度的一部分。色度值的重复便利于某些类型的实时视频数据流处理然而,第二对色度值 430-431是冗余的如参照图3所论述的,抽取色度平面以使得仅两个色度值与包含四个像素的每个2X2区域相关联。图5图示说奣视频编解码器的功能如以上参照图1-4所论述的,视频摄像机502 生成数字编码的视频帧的流504以每秒30帧,假设1920 X 1080像素的帧并且假设每个像素使用12比特的编码,则视频摄像机每秒生成93兆字节的数据一分钟的持续视频捕获将生成5. 5千兆字节的数据。根据目前可用的设计和技术制造嘚小型手持电子装置不能以这个速率处理、储存和/或发送数据为了生成可管理的数据传输速率,利用视频编解码器506来对从摄像机输出的數据流进行压缩H. 264标准提供了大约30 1的视频压缩比。由此视频编解码器506对从摄像机进入的93MB/S数据流进行压缩,以生成大约3MB/ s的压缩的视频数据鋶508与由摄像机生成的原始视频数据流相反,视频编解码器以可以被处理来供手持装置储存或发送的数据速率输出压缩的视频数据流视頻编解码器还可以接收压缩的视频数据流510,并且对压缩的数据进行解压缩以生成输出原始视频数据流 512,来供视频显示装置使用由于视頻信号通常包含相对大量的冗余信息,所以视频编解码器可以实现30 1 的压缩比作为一个实施例,通过拍摄两个小孩来回扔球而产生的视频信号包含相对少量的快速变化的信息和相对大量的静态或缓慢变化的对象所述快速变化的信息即小孩和球的图像,所述静态或缓慢变化嘚对象包括背景景色和小孩在其上玩耍的草坪在小孩的人影和球的图像在拍摄过程期间可以从帧到帧地显著变化的同时,背景对象可以茬整个拍摄期间或者至少在相对长的时间段内保持相对恒定在这种情况下,在第一帧后面的帧中编码的大部分信息可以是完全冗余的視频压缩技术被用于识别冗余信息,并且有效率地对该冗余信息进行编码因此,极大地减少了压缩的视频信号中所包括的信息的总量茬图5的下部分更详细地显示了压缩的视频流508(520)。根据H. 264标准压缩的视频流包括网络抽象层(“NAL”)包序列,例如NAL包522每个NAL包包括8位的头, 例如NAL包522嘚头524第一位5 必须总是零,接着的两位5 指示包中所包含的数据是否与参考帧相关联并且最后的5位530 —起构成类型字段,所述类型字段指示包的类型和其数据载荷(payload)的性质包类型包括包含编码的像素数据和编码的元数据的包,并且还包括表征各种类型的分隔符的包所述编码嘚元数据描述数据的部分已经如何被编码,所述分隔符包括序列结束分隔符和流结束分隔符NAL包的主体(body) 532通常包含编码的数据。图6图示说明茬视频数据流压缩和压缩的视频数据流解压缩期间对其执行视频编码操作的各种数据对象从视频处理的观点来讲,视频帧602被认为是由宏塊604的二维阵列构成每个宏块包括16X16数据值阵列。如上所论述的视频压缩和解压缩通常独立地对包含强度值的Y"帧和包含色度值的色度帧进荇操作。人的眼睛通常对亮度变化比对颜色的空间变化敏感得多因此,如上所论述的简单地通过抽取两个色度平面来获得最初的有用壓缩。假设强度值和色度值的8比特表征则在抽取之前,2X2正方形像素可以用 12个字节的编码数据来表征在抽取之后,相同的2X2正方形的四个潒素可以仅用6个字节的数据来表征因此,通过降低颜色信号的空间分辨率实现2 1的压缩比。尽管宏块是对其执行压缩和解压缩操作的基夲单元但是对于某些压缩和解压缩操作,宏块可以被进一步分割强度宏块或亮度宏块每个包含256个像素606,但是可以被分割生成16X8 个分区608、8X 16個分区、8X8个分区612、8X4个分区614、4X8个分区616和4X4个分区618类似地,色度宏块每个包含64个编码的色度值620但是可以被进一步分割生成 8X4个分区622、4X8个分区624、4X4個分区6^、4X2个分区6^、2X4个分区630和 2X2个分区632。另外在某些操作中可以利用1X4、1X8和1X16像素矢量。根据H. 264标准每个视频帧可以在逻辑上被分割为片组,其Φ分割由片组映射 (slice-group map)来指定许多不同类型的片组分割可以由适合的片组映射来指定。图 7图示说明将视频帧分割为两个片组视频帧702被分割為第一棋盘格状片组704和补充的棋盘格状片组706。第一片组和第二片组二者含有相等数目的像素值并且每个包含帧中的像素值的总数的一半。根据基本上任意的映射功能帧可以被分割为基本上任意数目的片组,每个片组包括全部像素的基本上任意的部分图8图示说明第二级別的视频帧分割。每个片组(例如片组802)可以被分割为若干片804-806每片包含按光栅扫描顺序的若干相邻像素(在片组内相邻,但是不必在一帧内相鄰)片组802可以是整个视频帧,或者可以是根据任意片组分割功能的帧的分区 可以逐片地执行压缩和解压缩操作中的某些操作。总而言之对视频帧和视频帧的各种子集执行视频压缩和解压缩技术,所述子集包括片、宏块和宏块分区通常,与色度平面对象无关地对强度平媔对象或亮度平面对象进行操作由于在每个维度中色度平面被抽取一半,总体4 1压缩所以色度宏块和宏块分区的大小通常是亮度宏块和煷度宏块分区的大小的一半。如由H. 264标准所暗示的视频压缩中的第一步是利用两种不同的普通的预测技术之一,以在一种情况下从同一幀中相邻宏块或宏块分区预测当前考虑的宏块或宏块分区的像素值,并且在另一种情况下从在空间上相邻的宏块或宏块分区预测当前考慮的宏块或宏块分区的像素值,所述在空间上相邻的宏块或宏块分区出现在正在被预测的宏块或宏块分区的帧之前或之后的帧中第一类型的预测是空间预测,被称为“帧内预测”第二类型的预测是时间预测,被称为“帧间预测”帧内预测是可以被用于某些帧的唯一类型的预测,所述某些帧被称为“参考帧”帧内预测还是当对宏块进行编码时所使用的默认预测。 对于非参考帧的宏块首先尝试帧间预測。当帧间预测成功时则不将帧内预测用于宏块。然而当帧间预测失败时,则可以将帧内预测用作默认预测方法图9图示说明帧内预測的一般概念。考虑在视频帧的逐个宏块压缩期间出现的宏块C 902如上所论述的,可以使用256个字节对16X16亮度宏块904进行编码然而, 如果可以从圖像中的相邻宏块计算宏块的内容则在理论上相当大量的压缩是可能的。例如考虑当前考虑的宏块C 902的四个相邻宏块。这四个宏块包括咗宏块904、左上对角宏块906、上宏块908和右上对角宏块910如果可以使用一些数目的不同的预测函数f。之一 912根据这些相邻宏块中的一个或更多个來计算C中的像素值,则宏块的内容可以被简单地编码为用于预测函数的数字指定符或指示符如果预测函数的数目小于或等于例如256, 则用於所选择的预测函数的指定符或指示符可以被编码在单字节信息中因此,如果可以使用256个可能的预测函数中的被选定的一个从宏块的邻域计算该宏块的内容则可以实现相当惊人的256 1的压缩比。不幸的是由于存在太多可能的宏块而不能仅通过256 个预测函数进行精确预测,所鉯用于H. 264压缩的空间预测方法通常没有实现这种幅度的压缩比例如,当每个像素用12个比特编码时存在212 = 4096个不同的可能的像素值和 40962Mi个不同的鈳能的宏块。然而对于H. 264视频压缩,特别是对于具有不快速变化的以及强度和颜色相对均勻的大的图像区域的相对静态的视频信号帧内預测可以显著地有利于总体压缩比。可以根据用于4 X 4亮度宏块的九种不同模式或者根据用于16 X 16亮度宏块的四种不同模式来执行H. 264帧内预测图10Α-Ι图示说明九种4X4亮度块帧内预测模式。在所有这些图中所使用的图示惯例是类似的并且参照图IOA进行描述。正被预测的4X4亮度宏块在图中通過图右下方的4X4矩阵1002来表征如此,在图IOA中正被预测的4X4 矩阵中的最上左侧的像素值1004包含值“Α”。与4X4亮度块相邻的单元表征图像内相邻 4X4亮度塊中的像素值例如,在图IOA中值“Α” 1006、“B” 1007、“C” 1008和“D” 1009 是正被预测的4X4亮度块1002正上方的4X4亮度块中所包含的数据值。类似地单元 表征囸被预测的4X4亮度块左方的4X4亮度块的最后垂直列内的像素值。在图IOA中所图示说明的模式0预测的情况下上方相邻的4X4亮度块的最后一行中的值被向下垂直地复制到当前考虑的4X4亮度块1002的列中。因此在图IOA中,模式0预测构成由图IOA中所示的指向向下的箭头1020所表征的向下垂直预测在图10Β-10Ι中使用与图IOA中所使用的图示惯例相同的图示惯例示出用于预测4X4亮度块的其余八种帧内预测模式,并且因此这八种帧内预测模式是完铨独立且不言自明的。除了模式2以外的每种模式都可以被认为是空间矢量所述空间矢量指示相邻4X4块中的像素值被转换为正被预测的块的方向。图11A-11D使用与图10Α-Ι中所使用的图示惯例类似的图示惯例图示说明用于 16X16亮度块的帧内预测的四种模式在图IlA-D中,正被预测的块是矩阵1102的祐下侧部分中的16 X 16块最左垂直列1104是左毗连16X16亮度块的最右垂直列,并且顶部水平行1106是上毗连16X16亮度块的底行最左上单元1110是上左对角16X16亮度块的祐下侧角单元。16Χ 16预测模式与4X4帧内预测模式的子集类似除了图IlD中所示的模式4之外,模式4是相对复杂的平面预测模式该模式从上方相邻嘚16X 16亮度块的下一行和左方相邻的16X16亮度块的最右侧垂直列中的所有像素计算每个像素的预测值。通常将生成正被帧内预测的当前块的最接菦近似的模式选择为应用于当前考虑的块的帧内预测模式。可以将预测像素值与实际像素值进行比较;像素值使用各种比较度量中的任意┅种所述度量包括在预测的块和考虑的块之间的平均像素值差、像素值的均方差、方差和以及其他这样的度量。图12图示说明帧间预测的概念如上所论述的,帧间预测是时间预测并且可以被认为是基于运动的预测。出于图示说明的目的考虑当前帧1202和视频信号中在当前幀之前或之后出现的参考帧1204。在视频压缩的当前时刻需要从参考帧的内容预测当前宏块1206。图12中图示说明所述过程的实施例在参考帧中,对于当前帧参考点1210被选为当前考虑的块1206的应用于参考帧的坐标。换句话讲所述过程在当前帧中的当前考虑的块在参考帧中的等同位置处开始。然后在图12中由粗实线1212正方形所指示的有界搜索空间内,将搜索区域内的每个块与当前帧中的当前考虑的块进行比较以识别參考帧1204的搜索区域1212中与当前考虑的块最相似的块。如果搜索区域内像素值最接近的块与当前考虑的块的内容之间的差低于阈值则从搜索區域选择的最接近的块预测当前考虑的块的内容。从搜索区域选择的块可以是实际的块或者可以是相对于直线像素格栅的分数坐标处的估计块,其中所述估计块中的像素值从参考帧中的实际像素值插值因此,使用帧间预测而不是将当前考虑的宏块1206编码为256个像素值,可鉯将当前考虑的宏块 1206编码为参考帧的标识符和矢量的数字表征所述矢量从参考点1210指向从搜索区域 1212选择的宏块。例如如果发现所选择的插值块1214与当前考虑的块1206最紧密匹配, 则可以将当前考虑的块编码为参考帧1204的标识符和矢量1216的数字表征所述标识符例如视频信号内的帧与當前帧的偏移,矢量1216表征所选择的块1214距参考点1210的空间位移各种不同的度量可以被用于将参考帧1212的搜索区域内的实际块或插值块的内容与當前考虑的帧1206的内容进行比较,所述度量包括像素值之间的平均绝对像素值差或均方差图12中提供作为上述帧间预测过程的可替换描述的類C++式的伪代码1220。 编码的位移矢量被称为运动矢量所选择的块距参考帧中的参考点的空间位移对应于视频流中的当前考虑的宏块的时间位迻,所述时间位移通常对应于视频图像中的对象的实际运动图13A-D图示说明用于计算参考帧的搜索区域内的块的像素值的插值过程,所述插徝过程可以被认为是发生在分数坐标处的H. 264标准允许相对于整数像素坐标的0. 25 的分辨率。考虑图13A的左边的像素1302的6X6块插值过程可以被认为是實际像素在两个维度中的平移扩展和在扩展像素之间插入的插值的计算。图13A-D图示说明实际像素值的6X6块中的中间四个像素之间的更高分辨率嘚插入值的计算图13A的右边图示说明扩展1310。在本实施例中在两个维度中对像素值已经进行了空间上的扩展,并且已经添加了 21个新的单元以形成在拐角处具有原始像素值的 4X4矩阵。也已经对像素1302的6X6矩阵的其余像素进行了平移扩展图13B图示说明在实际像素值1304和1306之间生成插值1312的插值过程。如图1 中虚线1314所示沿着一列像素值应用垂直滤波器,所述像素值包括原始像素值1304和1306根据公式1316 计算插值Y 1312。在本实施例中根据公式1322,通过两个垂直相邻值的线性插值来对值 Y" 1320进行插值可以通过值1312和1306之间的线性插值来类似地计算插值13M。可以类似地应用垂直滤波器1314来計算包含原始值1305和1307的列中的插值图13C图示说明原始值1304和1305之间的水平行中的插值的计算。在该实施例中与图13B中垂直滤波器的应用类似,将沝平滤波器13 应用于实际像素值通过公式13 计算中间点插值,并且可以通过根据公式1330和用于中间点与原始值1305之间的右侧插值的类似公式的线性插值来获得中间点的任一侧的四分之一点值可以将相同的水平滤波器应用于包含原始值1306和1307的最后一行。图13D图示说明中间插值点1340和插值嘚中间点值 1342与1344之间相邻的四分之一点的计算可以通过线性插值获得所有其余的值。图14A-C图示说明不同类型的帧和相对于这些不同类型的帧鈳行的不同类型的帧间预测的实施例如图14A所示,视频信号包括线性视频帧序列在图14A中,序列以帧 1402开始并且以帧1408结束。视频信号中的苐一类型的帧被称为“I”帧I帧的宏块的像素值不能通过帧间预测来预测。I帧是解压缩的视频信号内的一种类型的参考点编码的I帧的内嫆仅取决于原始信号I帧的内容。因此当系统误差发生在涉及与帧间预测相关联的问题的解压缩中时,可以通过向前跳到下一个I参考帧并苴从该帧重新开始解码来恢复视频信号解压缩这样的误差不越过I帧栅栏(barrier)传播。在图14A中第一帧 1402和最后帧1404是I帧。图14B中图示说明下一类型的幀P帧1410可以包含已经从I帧帧间预测的块。 在图14B中块1412已被编码为运动矢量和参考帧1402的标识符。运动矢量表征参考帧 1402中的块1414到P帧1410中的块1412的位置的时间移动P帧表征一种类型的预测约束帧,该帧包含已经可以通过帧间预测从参考帧预测的块P帧表征编码的视频信号内的另一种类型的栅栏帧。图14C图示说明第三类型的帧B帧可以包含通过帧间预测从一个或两个其他B帧、P帧或I帧预测的块。在图14C中B帧1418包含从P帧 1402中的块1430这②者被预测的块1似6。B帧可以最佳地利用帧间预测并且因此,实现由于帧间预测而导致的最高压缩但是也具有可以在解码过程中引起各種误差和异常的更高的可能性。当块(例如块1426)是从两个其他块被预测时该块被编码为两个不同的参考帧标识符和运动矢量,并且该预测块被生成为从其被预测的两个预测块中的像素值的可能的加权平均如以上所提及的,如果帧内预测和/或帧间预测完全精确则可以获得极其高的压缩比。将块表征为一个或两个运动矢量和帧偏移肯定比表示为256个不同的像素值简明得多将块表征为13种不同的帧内预测模式之一甚至更有效率。然而如通过大量不同的可能的宏块值可意识到的,就作为256字节编码的数值的宏块值而论帧内预测和帧间预测均不可能苼成视频帧内的块的内容的精确预测,除非其中包含视频帧的视频信号不包含噪声并且几乎不包含信息,所述视频信号例如均勻的、无變化的、纯色背景的视频然而, 即使帧内预测和帧间预测不能精确地预测宏块的内容一般来讲,它们常常也可以相对接近地估算宏块嘚内容这种估计可以被用于产生差宏块,所述差宏块表征实际宏块与对于该宏块通过帧内预测或帧间预测而获得的预测值之间的差当預测令人满意时,结果得到的差块通常仅包含少量或者甚至零个像素值图15图示说明差宏块的产生的实施例。在图15的实施例中宏块被示為三维图表,在所述三维图表中宏块的二维表面上方的柱的高度表征宏块内的像素值的幅度。在图 15中当前考虑的帧内的实际宏块被示為顶部的三维图表1502。中间的三维图表表征通过帧内预测或帧间预测而获得的预测宏块注意的是,预测宏块1504的三维图表与实际宏块 1502完全相姒图15表征帧内预测或帧间预测已经产生实际宏块的非常接近的估算的情况。从实际宏块减去预测宏块产生差宏块所述差宏块在图15中被礻为较下面的三维图表 1506。尽管图15是最佳情况预测的夸大但是它图示说明与实际的最终预测的宏块相比, 差宏块通常不仅包含幅度更小的徝而且还常常包含更少的非零值。还要注意的是可以通过将差宏块加到预测宏块来完全恢复实际宏块。当然预测的像素值可以超过戓者低于实际像素值,从而差宏块可以包含正值和负值这二者然而,作为实施例原点的移位可以被用于生成全部正值的差宏块。正如鈳以从与宏块空间上相邻和/或时间上相邻的块中的值被预测的该宏块内的像素值一样也可以预测通过帧间预测产生的运动矢量和通过帧內预测产生的模式。图 16图示说明运动矢量和帧内预测模式预测的实施例在图16中,当前考虑的块1602在帧的一部分的块网格内被示出已通过幀内预测或帧间预测对相邻块进行了压缩。 因此存在与这些相邻的、已经被压缩的块相关联的帧内预测模式或帧间预测运动矢量,所述幀内预测模式是一种类型的位移矢量因此,合理的假设是根据使用的是帧内预测还是帧间预测而与当前考虑的块1602相关联的空间矢量或時间矢量将与和相邻的、已经被压缩的块相关联的空间矢量或时间矢量相似。事实上与当前考虑的块1602相关联的空间矢量或时间矢量可以被预测为如图16右边的矢量10以内加法教案1610所示的相邻块的空间矢量或时间矢量的平均。因此不是直接对运动矢量或帧间预测模式进行编码,H. 264标准是基于矢量预测以从实际计算的矢量1622减去预测矢量1622的方式计算差矢量帧之间的块的时间运动和帧内的空间一致性将被预期为是大致上相关的,并且因此预测矢量将被预期为接近地近似实际计算的矢量。因此差矢量的大小通常比实际计算的矢量小,并且因而可鉯使用更少的比特来对差矢量进行编码。再者与差宏块一样,可以通过将差矢量加到预测矢量来精确地重构实际计算的矢量一旦通过幀间预测或帧内预测生成差宏块,就根据预定的顺序将差宏块分解为 4X4差块通过整数变换对每个4X4差块进行变换,以生成对应的系数块然後对所述系数块的系数进行量化,以生成最终的量化系数序列帧内预测和帧间预测的优点是,差块的变换通常生成大量尾随零系数(trailing zero coefficient)这些尾随零系数完全可以通过随后的熵编码步骤而被有效率地压缩。图17图示说明差宏块的分解、整数变换和量化的一个实施例在该实施例Φ, 按图17中的差宏块的单元的数字标示所描述的顺序将差宏块1702分解为4X4差块 对每个4X4差块执行整数变换1708计算,以生成对应的4X4系数块1708 根据ζ字形序列化模式1710将变换的4X4块中的系数序列化,以生成线性的系数序列然后通过量化计算1712对所述系数序列进行量化,以生成量化系数序列1714视频信号压缩中的已经论述的步骤中的许多步骤是无损的。宏块可以从帧内预测方法或帧间预测方法以及对应的差宏块来无损地重新产苼还存在整数变换的精确逆变换。然而由于一旦被量化,原始系数的近似值可以通过量化方法的近似逆(被称为“重缩放”)来重新产生所以量化步骤1712是一种有损压缩的形式。由于不能从低分辨率色度数据恢复高分辨率色度数据所以色度平面抽取是另一个有损压缩步骤。量化和色度平面抽取事实上是H. 264视频压缩技术中的两个有损压缩步骤

图18分别提供H. 264视频压缩和视频解压缩中所使用的整数变换和逆整数变換的推导。符号“X” 1802表征4X4差块或残余块(比如图17中的)。由图18 中的第一组表达式1804定义离散余弦变换离散余弦变换是一种公知的类似于离散傅里叶的变换。如表达式1806所示离散余弦变换是基于矩阵乘法的运算。可以如图18中的表达式1808中所示的那样对离散余弦变换进行因子分解矩阵C 1810的元素包括有理数 “d”1812。为了有效率地估算离散余弦变换可以将该数近似为1/2,从而得到图18中的近似矩阵元素1814为了生成全整数元素洏乘以矩阵C的两行的这种估算生成图18中的整数变换1818和对应的逆整数变换1820。图19图示说明量化过程可以假设任何整数值在范围0-255中,作为简单嘚实施例认为用8个比特编码的数1902因此可以在0 (图19中的1904)和255 (图19中的1906) 之间的值范围中。如图19所示量化过程可以被用于通过范围0-255中的整数到范围0-7 Φ的整数的逆线性插值来仅用三个比特1908对8比特数1902进行编码。在这种情况下 用8比特编码的数表征的整数值0-31全部被映射到值0(图19中的1912)。连续范圍的 32个整数值被映射到值1-7因此,例如整数200(图19中的1916)的量化生成量化值 6(图19中的1918)。可以通过简单的乘法从3比特的量化值重新生成8比特的值鈳以将3比特的量化值乘以32,以生成原始的8比特数的近似然而,近似数1920可以仅具有值0、32、64、…、2M中的一个换句话讲,量化是一种数值抽取或者精度损失的形式重缩放过程或者乘法可以被用于重新产生估算被量化的原始值的数,但是不能恢复在量化过程中损失的精度通瑺,量化由公式1922表达并且量化的逆或者重缩放由公式1拟4表达。 这些公式中的值“Qstep”控制在量化过程中损失的精度在图19的左侧图示说明嘚实施例中,Qstep具有值“32”更小的Qst印值提供更小的精度损失,但也提供更少的压缩而更大的值提供更大的压缩,但也提供更大的精度损夨例如,在图19中所示的实施例中如果Qst印是128,而不是32则可以用一个比特对8比特数进行编码,但是重缩放将仅会生成两个值0和128还要注意的是,可以通过重缩放之后的另外的10以内加法教案步骤如箭头1拟6和 19 所指示的那样对缩放值进行垂直移位例如,在图19中所示的实施例中不是产生值 0、32、64、…、224,而是将16加到缩放值产生对应的值16、48、…、M0使得在缩放的垂直数轴的顶部的间隙不是那么大。在对残余块或差塊进行量化并且收集从熵编码上游的步骤生成为数据流的差矢量和其他对象之后将熵编码器应用于部分压缩的数据流,以生成熵编码的數据流所述熵编码的数据流包括以上参照图5所描述的NAL包的载荷。熵编码是无损编码技术该技术利用部分编码的数据流中的统计上的非均勻性。熵编码的一种公知的实施例是Morse代码Morse代码使用常常出现的字母(例如“E”和“T”)的单脉冲编码和不频繁遇到的字母 (例如“Q”和“Z” )嘚四脉冲或五脉冲编码。图20提供熵编码的数字实施例考虑包括观个符号的四符号字符串2002,每个字符选自字母“A”、“B”、“C”和“D”之┅如编码表格2004所示,该个28符号串的简单并且直观的编码将会是将四个不同的2比特代码之一分配给四个字母中的每个使用这种2 比特编码,生成等同于符号串2002的56比特编码的符号串2006然而,符号串2002的分析揭示了表格2010中所示的每个符号的百分比发生率“A”是到目前为止最频繁絀现的符号,并且“D”是到目前为止最不频繁出现的符号通过编码表格2012表征更好的编码,编码表格2012使用每个符号的可变长度的表征作為最频繁出现的符号的“A”被分配代码“0”。最不频繁出现的符号“B”和“D”分别被分配代码“110”和“111”使用这种编码生成仅使用47个比特的编码符号串2014。通常对于出现概率为P的符号,二进制熵编码应该生成-Iog2P个比特的编码符号尽管在图20中所示的实施例中对于明确具有不均勻的符号出现分布的长符号序列,编码长度的改进并不大但是熵编码生成相对高的压缩比。一种类型的熵编码被称为“算术编码”圖21A-B中提供简单的实施例。图21A-B 中图示说明的算术编码是一种上下文自适应编码方法的版本在该实施例中,8符号序列 2102被编码为小数点后位数為5位的小数值.04016(图21A中的2104)可以通过各种已知的二进制数字编码中的任何一种对小数值.04016进行编码,以生成二进制编码符号串 在该简单实施例Φ,在编码过程期间不断更新符号出现概率表格2106由于当根据在编码期间观察到的符号出现频率调整符号出现概率时,编码方法随时间动態地改变所以这提供上下文自适应。一开始由于缺乏更佳的一组初始概率,所以将所有符号的概率设置为 0.25在每个步骤,利用区间烸个步骤的区间用数轴(例如数轴2108)来表征。一开始 区间在0-1范围内变化。在每个步骤根据当前的符号出现频率表格中的概率将区间划分为㈣个分区。由于初始表格包含相等的概率0. 25所以在第一步中,区间被划分为四个相等部分在第一步中,对符号序列2102中的第一个符号“A”2110進行编码将与这个第一符号对应的区间分区2112选择为用于下一步的区间2114。此外由于遇到符号“A”,所以通过将符号“A”的出现概率增加0. 03並且将其余符号的出现概率降低0. 01来在下一版本的表格2116中调整符号出现概率下一个符号还是“A”2118,而所以再次选择第一区间分区 2119为用于第彡步的后一区间2120该过程继续,直到符号串中的所有符号已经被使用为止最后的符号“A”2U6选择在所述过程中计算的最后区间中的第一区間2128。注意的是区间的大小在每个步骤减小,并且通常需要指定更多数目的小数点位数可以通过选择最后区间21 内的任何值来对符号串进荇编码。值.04016落在该区间内并且因此,表征符号串的编码如图21B所示,可以通过使用初始的等值符号出现频率概率表格2140和初始间隔0-1 2142再次开始所述过程来重新产生原始符号串编码.04016被用于选择与符号“A”对应的第一分区2144。然而在与图21A中所示的正向过程中的步骤类似的步骤中, 编码.04016被用于选择每个后一区间的每个后一分区直到重新产生最后的符号串2148。尽管该实施例图示说明算术编码的一般概念但是由于该實施例假设无限精度算术,并且由于符号出现频率概率表格调整算法将快速导致不可工作的值所以它是假象的实施例。实际的算术编码鈈假设无限精度算术而是利用技术来调整区间,以给予在由任何特定计算机系统提供的精度内的区间指定和选择H. 264标准指定几种不同的編码方案,这些编码方案之一是上下文自适应算术编码方案查表过程被用于对由上游编码技术生成的频繁出现的符号串进行编码,以便利于随后的解压缩所述频繁出现的符号串包括部分压缩的数据流中所包括的各个元数据和参数。当根据H. 264技术对视频数据流进行压缩时隨后的解压缩可以得到某些类型的伪像。作为实施例图22A-B图示说明一种普遍出现的伪像和被用作解压缩的最后步骤以改善伪像的滤波方法。如图22A所示在没有滤波的情况下,解压缩的视频图像可以表现出成块状由于逐块地执行解压缩和压缩,所以各个块边界可以表征压缩/解压缩处理中的显著的不连续这些不连续导致所显示的解压缩的视频图像的视觉上可感知的成块。图22B图示说明H. 264解压缩中用于改善成块伪潒的去块滤波器方法在这种技术中,为了使跨块边界上的像素值梯度的不连续平滑沿着所有的块边界移动与以上参照图13A-D所论述的用于潒素值插值的滤波器类似的垂直滤波器2210和水平滤波器2212。边界每侧的三个像素值可以受去块滤波器方法的影响在图22B的右边,示出了去块滤波器应用的实施例 在该实施例中,滤波器2214被表征为包含块边界2216的任一侧的四个像素值的垂直列滤波器的应用为块边界的任一侧的第一彡个像素值生成滤波像素值。作为一个实施例从像素2218、2220、2221、2222和2223的预滤波值计算像素2218的滤波值χ*。为了重新建立跨边界的连续梯度滤波器趋向于对像素值进行平均或者使像素值变得模糊。图23概括了 H. 264视频数据流编码图23提供框图,并且因此提供编码过程的高级别的描述。嘫而该示图与前面的论述和前面所参照的图一起提供H. 264编码的基本概述。必要时揭示另外的细节,以描述本发明的特定视频编解码器实施方案应该注意的是,在视频编码和视频解码中存在众多在本文档的概述部分不能解决的细微要点、细节和特殊情况为了易于交流和簡化,这里的实施例大部分基于H. 264标准然而,绝不应该被理解为这里呈现的本发明限于H. 264应用官方H. 264说明书超过500页长。这些许多细节包括唎如,由各种边界状况引起的特殊情况、特定细节和在各种上下文相关情况下可以应用的可选的可替换方法考虑例如帧内预测。帧内预測模式取决于特定的相邻块中的像素值的可利用性对于没有邻域的边界块,不能使用所述模式中的许多种模式在某些情况下,为了使嘚可以使用特定的帧内预测模式可以对不可利用的相邻像素值进行插值或估算。编码过程中的许多令人感兴趣的细节与以下操作相关选擇最佳预测方法、量化参数以及进行其他这样的参数选择,以优化视频数据流的压缩H. 264标准不指定如何执行压缩,而是相反地指定编碼的视频数据流的格式和内容以及将如何对编码的视频数据流进行解压缩。H. 264标准还提供各种不同级别的不同计算复杂性其中高端级别支歭计算上更昂贵的、但是更有效率的另外的步骤和方法。目前的概述意在提供理解后面提供的本发明的各种实施方案的描述的充分背景泹是绝不意在构成H. 264视频编码和解码的完整描述。在图23中提供帧的流作为编码方法的输入。在该实施例中如上所论述的,帧被分解为宏塊或宏块分区以用于随后的处理。在第一处理步骤中尝试从一个或更多个参考帧对当前考虑的宏块或宏块分区进行帧间预测。当如步驟2308中所确定的那样帧内预测成功并且产生一个或更多个运动矢量时,则在求差步骤2310中从实际的原始宏块减去通过运动估计和补偿步骤2306产苼的预测宏块以生成对应的残余宏块,所述残余宏块通过求差步骤被输出到数据路径2312上然而,如果还是如步骤2308中所确定的那样帧间预測失败则开始帧内预测步骤2314来对宏块或宏块分区执行帧内预测,然后在步骤2310中从实际的原始宏块或宏块分区减去所述宏块或宏块分区鉯生成被输出到数据路径2312的残余宏块或残余宏块分区。然后通过变换步骤2316对残余宏块或残余宏块分区进行变换通过量化步骤2318进行量化,鈳能在步骤2320中进行重新排序以更有效率地编码并且然后在步骤2322中进行熵编码,以生成输出NAL包23 的流通常,压缩实施方式在平衡各种预测方法的成本、及时性和存储器使用的同时寻求利用提供考虑的宏块的最接近的预测的预测方法。可以使用用于应用预测方法的各种不同嘚排序和选择标准中的任意一种

继续跟随图23的实施例,在步骤2318中进行量化之后量化系数被输入到重排序阶段2320和熵编码阶段2322,并且还被輸入到逆量化器23 和逆变换步骤23 以重新产生残余宏块或残余宏块分区,所述残余宏块或残余宏块分区通过逆变换步骤被输出到数据路径2330上通过逆变换步骤输出的残余宏块或宏块分区通常与通过求差步骤2310输出到数据路径2312上的残余宏块或残余宏块分区不相同。回想量化是有損压缩技术。因此逆量化步骤23 生成原始变换系数的估算,而不是精确地再现原始变换系数因此,虽然逆整数变换将生成残余宏块或宏塊分区的精确副本但是如果将它应用于通过整数变换步骤2316生成的原始系数,则由于逆整数变换步骤23 被应用于重缩放系数所以在步骤 2328中僅生成原始残余宏块或宏块分区的估算。然后在10以内加法教案步骤2332中将估算的残余宏块或宏块分区加到对应的预测宏块或宏块分区以产苼宏块的解压缩版本。解压缩的、但是没有滤波的宏块版本通过数据路径2334被输入到帧内预测步骤2312以用于随后处理的块的帧内预测。对解壓缩的宏块执行去块滤波器2336的步骤以生成滤波的、解压缩的宏块,然后对所述宏块进行组合以生成解压缩的图像,解压缩的图像 然后鈳以被输入到运动估计和补偿步骤2306一个巧妙之处涉及解压缩的帧输入到运动估计和补偿步骤2306,并且解压缩的、但是没有滤波的宏块和宏塊分区输入到帧内预测步骤 2314回想,为了预测当前考虑的宏块或宏块分区中的值帧内预测与大部分的运动估计和补偿这二者都使用相邻塊,在空间预测的情况下使用当前帧中的相邻块,或者在时间帧间预测的情况下使用前帧和/或后帧中的相邻块但是,考虑压缩的数据鋶的接收者接收者将不可以访问最初的原始视频帧2302和2304。因此在解压缩期间,编码的视频数据流的接收者将使用先前解码的或解压缩的宏块来用于预测随后解码的宏块的内容如果编码过程使用原始视频帧进行预测,则编码器将使用与解码器随后可用的数据不同的数据进荇预测这将在解码过程中引起显著的误差和伪像。为了防止这种情况编码过程产生用于在帧间预测步骤和帧内预测步骤中的解压缩的宏块和宏块分区以及解压缩的且经过滤波的视频帧,从而帧内预测和帧间预测使用相同的数据对任何解压缩过程将会可用的宏块和宏块分區的内容进行预测所述任何解压缩过程可以仅依赖于编码的视频数据流进行解压缩。因此通过数据路径2334被输入到帧内预测步骤2314的解压縮的、但是没有经过滤波的宏块和宏块分区是随后从其预测当前宏块或宏块分区的相邻块,并且运动估计和补偿步骤2306将解压缩的且经过滤波的视频帧用作参考帧以用于处理其他帧。图M以与图23中所用的框图方式类似的框图方式图示说明示例性的H. 264视频数据流解码过程解压缩仳压缩简单得多。NAL包流M02输入到熵解码步骤M04中熵解码步骤M04应用逆熵编码来产生量化系数,重排序步骤M06将所述量化系数重新排序为与通过图23Φ的重排序步骤2320执行的重排序互补熵解码流中的信息可以被用于确定最初用其对数据进行编码的参数,所述参数包括在每个块的压缩期間是利用帧内预测还是利用帧间预测的情况通过步骤对08,该数据允许在步骤MlO中选择帧间预测或者在步骤 2412中选择帧内预测以生成沿着数據路径M14提供给10以内加法教案步骤M16的宏块和宏块分区的预测值。在步骤M18中逆量化器对重新排序的系数进行重新缩放并且在步骤M20中应用逆整數变换来生成残差或者残余宏块或宏块分区的估算,在10以内加法教案步骤M16中将所述估算加到基于先前解压缩的宏块或宏块分区而产生的预測宏块或宏块分区10以内加法教案步骤生成解压缩的宏块或宏块分区,以生成解压缩的视频帧MM-2426在步骤M22中对这些解压缩的宏块或宏块分区應用去块滤波器,以生成最后解压缩的视频帧解压缩过程基本上与图23中所示的压缩过程的下部分等同。第二小节根据本发明的用于解决複杂计算仵各的并行集成电路设计的原理实现执行H. 264压缩和解压缩的计算引擎的问题是图示说明本发明的示例性问题域在本小节中,用于開发用于执行H. 264压缩和解压缩的并行流水线式集成电路计算引擎的原理被描述为表征本发明实施方案的计算引擎设计的整体方法的实施例夲发明绝不限于H. 264实施方式。实现执行在第一小节中所论述的H. 264视频压缩和解压缩的视频编解码器的一种方式是用软件对编码和解码过程进行編程并且在通用计算机上执行程序。图25是通用计算机的非常高级的示图计算机包括处理器2502、存储器2504、存储器/处理器总线 2506和桥2508,存储器/處理器总线2506互连处理器、存储器桥将处理器/存储器总线 2506与高速数据输入总线2510和内部总线2512互连,内部总线2512连接第一桥2508与第二桥2514第二桥又通过高速通信媒介2520连接至各个装置。这些装置之一是控制大容量储存装置2520的I/O控制器2516考虑实现视频编解码器的软件程序的执行。在该实施唎中软件程序储存在大容量储存装置2520上,并且根据需要被分页到存储器2504中处理器2502从存储器提取软件程序的指令,以用于执行因此,烸个指令的执行涉及至少一个存储器提取并且还可以涉及处理器存取存储器中(并且最终在大容量储存装置2520中)的储存数据。通用计算机系統中的实际计算行为的很大一部分致力于在大容量储存装置、存储器和处理器之间传输数据和程序指令此外,关于以高数据传输速率生荿大容量数据的视频摄像机或其他数据输入装置在视频摄像机和处理器之间可能存在对于存储器和大容量储存装置这二者的大量竞争。這种竞争可以持续达到一般计算机系统内的各个总线和桥的饱和为了使用视频编解码器的软件实施方式来实现实时视频压缩和解压缩,計算机所消耗的可用计算资源和功率的非常大的一部分致力于数据传输和指令传输而不是实际上执行压缩和解压缩。并行处理方法可以被预期为提高软件实现的视频编解码器的计算吞吐量的可行方法然而, 在一般计算系统中适当地分解问题以充分利用多个处理部件远非微不足道的任务,并且可能不会解决计算机系统内对于存储器资源的竞争和数据传输带宽的耗尽或者可能甚至使计算机系统内对于存儲器资源的竞争和数据传输带宽的耗尽恶化。可被考虑的下一种实施方式将是使用各种片上系统(system-on-a-chip)设计方法中的任意一种将软件实施方式移箌硬件上片上系统实现的视频编解码器将提供优于执行视频编解码器的软件实现的通用计算机系统的某些优点。具体地程序指令可以儲存在板上、闪存中,并且各种计算步骤可以在逻辑电路中实现而不是被实现为由处理器顺序执行指令。然而视频编解码器的片上系統实现本质上一般仍然是按顺序的,并且不提供高吞吐量的并行计算方法图沈图示说明视频压缩和解压缩过程的许多方面,当考虑这些方面时这些方面提供对实现根据本发明的视频编解码器的计算效率高得多的新方法的深刻理解。首先 264标准已经提供服从并行处理解决方案的高级问题分解。如上所论述的每个视频帧沈02被分解为宏块沈04-2613,并且为了在前向方向上对视频帧进行压缩对宏块和宏块分区执行基于宏块的或者基于宏块分区的操作,并且反向地对宏块进行解压缩以重构解压缩的帧。如上所论述的在编码过程期间和解码过程期間帧之间和宏块之间肯定存在相关性。然而如图沈所示,宏块与宏块相关性和宏块分区与宏块分区相关性通常是前向相关性序列沈13的開始帧中的开始宏块不取决于后面的宏块,并且可以完全基于其自己的内容进行压缩当通过宏块的光栅扫描处理,压缩逐帧地继续时後面的宏块可以取决于先前压缩的帧中的宏块,特别是对于帧间预测并且可以取决于同一帧内的先前压缩的宏块, 特别是对于帧内预测然而,相关性受到很好的约束首先,相关性受限于序列、空间和时间中的最大距离沈20换句话讲,只有当前帧内的相邻宏块和相对少量参考帧中以当前帧的位置为中心的搜索区域内的宏块可能对压缩任何给定的宏块有贡献如果相关性在时间、 空间和序列中没有受到很恏的约束,则将需要非常大的存储器容量来容纳压缩连续宏块所需的中间结果这样的存储器是昂贵的,并且随着存储器管理任务的复杂性和大小增大快速开始消耗可用的计算带宽。另一种类型的约束是对于给定的宏块2622,可能仅存在相对少的、最多数目的相关性这种約束也有助于限制存储器的必要大小,并且有助于对计算复杂性的限制随着相关性数目增长,计算复杂性可以成几何地或者成指数地增長此外,当处理实体之间的必要通信被很好地限制时对于复杂计算问题的并行处理解决方案才是可行的和可管理的。否则结果在分離的处理实体之间的通信快速压垮可用的计算带宽。视频编解码器问题的另一个特点是前向压缩方向或者反向解压缩方向的每个宏块的處理是逐步过程沈对。如上所论述的这些按顺序的步骤包括帧间和帧内预测、残余宏块的产生、 主变换、量化、对象重排序和熵编码。這些步骤是分离的并且一般来讲,一个步骤的结果被直接进给到后面的步骤因此,正如可以以沿着组装线逐步制造汽车或电器的方式┅样可以按组装线方式处理宏块。在许多不同的问题域内可以存在参照图沈所论述的视频编解码器实现的激励根据本发明的视频编解碼器的大规模并行处理实施方式的特点。在许多情况下可以以以许多不同的方式分解计算问题。为了将本发明的方法应用于任何特定问題作为所述方法的第一步,需要选择产生以上参照图26所论述的特点中的一些或全部的问题分解例如, 可以以可替换的、不利的方式分解视频数据流压缩问题例如,可替换的分解将是分析整个视频数据流或者帧的大部分块以在宏块处理之前进行运动检测。在某些方面这种较大粒度方法可以对运动检测和基于运动检测的压缩提供显著的优点。然而这种可替换的问题分解需要容量很大的内部存储器,並且运动检测步骤将会太复杂且计算效率太低以至于不能容易地在易计算的和可管理的数据对象的逐步处理内适应。再次强调的是,盡管在实现视频编解码器的背景下描述本发明但是本发明的方法适用于宽泛范围的效率高的被设计来解决多种不同计算问题的计算引擎。对于可以被分解和用公式表示以提供参照图26所论述的特点的那些问题本发明的方法提供计算带宽、 成本、功耗的效率以及激励和约束計算引擎、装置和系统开发的其他重要效率。图27图示说明根据本发明的方法的视频编解码器的单集成电路实现的基本特征单集成电路内實现的那些部件在大的虚线块2702内被示出。视频编解码器实施方式另外使用外部存储器2704和视频摄像机2706的外部光学器件和电子器件视频摄像機系统的另外的外部部件包括电源、各种另外的机电部件、壳体、用于外部装置的互连部件和其他这样的部件。如以上参照图4所论述的視频摄像机将数据流和电子时序信号输入2708提供给视频编解码器。数据流被引导到存储器2704和集成电路内的微处理器控制器部件2710微处理器控淛器部件2710可以访问视频摄像机的时序信号输出,以协调视频编解码器的行为存储器2704是双端口的,以使得当视频数据流从数码视频摄像机2706進入时可以将先前储存的原始视频数据从外部存储器提取到内部高速缓冲存储器2712中,以提供给若干处理元件中的每个在图27中,示出了陸个处理元件但是在以下所论述的特定实施方案中,事实上存在更多数目的处理元件处理元件的数目是问题域确定的且设计选择的参數。一种实施方式的完全分开的处理元件可以可替换地在另一种实施方式中被组合在一起在图27的实施例中,微处理器控制器2710执行储存在閃存2720中的指令微处理器控制器通过各个信号路径与存储器2722、高速缓冲存储器27 、系统时钟27 和多个处理元件27 通信。在集成电路内大量数据鋶动通过对象总线2730发生。对象总线将视频数据相关的对象(主要是宏块和宏块分区)传递到处理元件另外,对象总线还可以传递共享的参数囷元数据包括描述宏块和宏块分区对象以及当前帧和视频数据流内的更高级结构的对象。在该实施例中每个处理元件执行视频数据对潒的逐步处理的一个步骤,所述视频数据对象主要是宏块和宏块分区输入到处理元件的视频对象的类型和通过处理元件输出的视频和数據对象的类型取决于处理元件所实现的压缩过程中的特定步骤。处理元件执行被执行来压缩视频数据的大量计算处理方法是非常流水线式、组装线式的方法,在该方法中给定的原始数据宏块进入第一处理元件2714,并且沿着处理元件流水线中的后面的处理元件序列以逐步的方式被变换总体组装线处理由相对低频时钟信号实现的计算步骤时序信号控制。每个处理元件内的处理步骤由相对高频时钟信号控制視频编解码器的单集成电路实施方式的一个重要方面是低频计算步骤时序信号提供用于微处理器控制器的时序信号,但是不提供组装线过程的绝对控制一般来讲,应该在单个低频计算步骤时序信号间隔内执行逐步的高级处理中的每个步骤然而,可能存在处理元件不能在┅个时间间隔内完成其任务的情况这些情况通过由微处理器控制器2710提供的高级控制逻辑来检测,在这种情况下微处理器控制器可以延遲开始后面的计算步骤,使得即使处理元件的任务已经超过低频时序间隔处理元件也可以完成其任务。因而微处理器控制器控制提供視频压缩和视频解压缩过程的总控制的重要级别的灵活性。如果没有提供这种灵活性则需要将低频间隔至少设置为系统内的任何处理元件所需的最大可能的时间间隔,以完成处理元件可能会遇到的计算上最复杂的任务在最复杂任务只是不频繁发生(例如每1,000 个宏块中发生┅次)的情况下则在处理其余的999个计算需求较小的宏块期间,处理元件将在低频时间间隔内的大部分时间段内处于空闲通过提供总体组裝线过程的更灵活的微处理器控制器控制,可以将低频时序信号间隔设置为合理值所述合理值指定在其期间大部分宏块可以被处理的时間间隔,并且可以实时地以上下文相关方式调整低频时序信号间隔以适应相对不频繁的计算密集的宏块。在该实施例中板上对象高速緩冲存储器2712提供不同类型的灵活性。高速缓冲存储器提供用于数据对象的动态缓冲所述动态缓冲可以容纳在视频压缩中的特定点所需的鈈同量的数据。像由微处理器控制器控制提供的时序弹性一样灵活的高速缓冲存储器允许在有效率地处理存储器密集存取程度较小的一般处理任务的同时适应特定的上下文相关的存储器需求。由时钟27 提供的更高频时序间隔允许在处理元件内进行时钟控制的处理所述处理被实现为逻辑电路,而不是被实现为微处理器控制器执行的指令正是这种时钟控制的、基于逻辑电路的实施方式提供了视频编解码器的總体单集成电路实现的大的计算带宽。如果视频压缩和视频解压缩过程的大部分通过处理器上的指令执行来执行 则总体计算开销的大部汾将被指令提取周期消耗。对象存储器控制器负责在板上对象高速缓冲存储器和对象存储器之间交换对象最后,对象总线2730便利基于对象鋶水线的实施方式如果宏块和宏块分区作为比特流或字节流在集成电路内被传输,则对于将宏块和宏块分区传送到处理元件和从处理元件传送宏块和宏块分区将需要甚高频通信处理。通过提供宽的高容量对象总线可以以计算和时间效率高的方式从高速缓冲存储器传递被发送到每个处理元件的数据。总而言之根据本发明的复杂计算任务的实施方式涉及实施问题特定的计算引擎的单集成电路的设计和制莋。计算引擎包括微处理器控制器所述微处理器控制器提供集成电路内的处理的高级控制,而且还提供执行大量计算过程的大量并行流沝线式处理元件处理元件并行操作,以提供非常高的计算带宽并且通过对象总线和中间处理元件数据路径被提供以对象为单位的数据,所述对象例如宏块和宏块分区是处理元件对其操作的自然对象。处理元件中的高频时序由系统时钟提供而低频高级计算步骤控制由微处理器控制器提供,进而提供计算任务的组装式处理的总时序的灵活性以提高计算引擎的效率和吞吐量。图28和四中示出了视频编解码器的可替换实施方案图28图示说明本发明的实施方案,在该实施方案中集成电路观02包括存储器观04,存储器观04在图27中所图示说明的实施例Φ是外部的图四图示说明本发明的可替换实施方案,在该实施方案中数码视频摄像机被包括在组合的视频摄像机和视频编解码器的单集成电路实施方式中。图30-32图示说明根据本发明的视频编解码器的单集成电路实施方式内的总时序和数据流动在完成前一步骤时,微处理器控制器检查处理实体、高速缓冲存储器并且如果需要的话,还检查存储器以确保执行下一个高级计算步骤所需的所有数据对象可用於传输到需要这些数据对象的处理元件。因此微处理器控制器检查以确保数据对象可获得,并且当需要时便利高速缓冲存储器中数据對象的编组,以供处理元件在下一个高级计算步骤中进行存取并且检查每个处理元件已生成需要提供给另一个处理元件以用于下一个高級计算步骤的任何数据,并且当前正在存储这些数据这里再次注意的是,微处理器控制器控制提供集成电路的总控制的灵活性在许多凊况下,是一个特定数据对象还是多个特定数据对象需要被准备来在下一个步骤中进行传输取决于该步骤在总视频编码任务中的步骤序列Φ的位置作为一个实施例,视频流的开始参考帧的开始宏块首先被第一处理元件处理第一处理元件没有结果提供给后面的处理元件。莋为另一个实施例对于帧间预测,不对视频流内的参考帧进行处理因此,在任何给定的低频时序间隔中处理后面的高级计算步骤所需的数据对象可以以上下文相关方式改变。而且在某些高级计算步骤中,处理元件中的一个或更多个可以不是工作状态的 处理元件自身内的上下文相关的且随时间改变的控制的实施复杂性将不期望地需要复杂处理元件实现。然而通过用指令执行的微处理器控制器提供哽高级别的控制,许多级别的决策和时间相关的且上下文相关的控制上的变化可以用固件而不是用高度复杂的逻辑电

25路来实现。在该实施例中一旦所有的数据对象可用于下一个处理步骤,并且所有的处理元件准备好开始执行下一个步骤如图31中所示的微处理器控制器就產生使所有处理元件开始处理下一个步骤的启动信号。如图31所示在下一个步骤开始时,数据对象被传送给需要它们的处理元件然后,洳图32所示处理元件执行它们各自的任务,产生用于后面的步骤的输出并且向高速缓冲存储器请求在后面的步骤中将会需要的数据对象。在图32中图示说明的当前高级计算步骤的处理完成时达到图30中所示的状态,并且然后使处理元件准备好开始后面的处理步骤再次,应該强调的是在每个低频时间间隔期间,每个处理元件对与正被其他处理元件处理的数据对象不同的数据对象执行其计算任务例如,在囸通过整数变换对一个残余宏块进行变换的同时对另一个宏块进行分析以进行帧间预测或帧内预测。总而言之表征本发明的一个实施方案的计算引擎的高级概念部件包括(1)问题分解,所述问题分解导致合理大小的计算对象(每个计算对象具有对另外的数据的有界相关性)、已經处理的计算对象和后面处理的计算对象的逐步处理并且每个计算对象基本上包括数据结构值,例如一维、二维或更高维阵列的元素的徝或者多字段记录或结构中的字段的值;( 组装线式处理元件系列所述处理元件每个执行计算对象的逐步处理的高级步骤,所述高级步骤並行地对不同的计算对象执行;C3)板上对象高速缓冲存储器所述板上对象高速缓冲存储器缓冲足够的计算对象,以使得一开始可以将用于沿着处理元件系列处理计算对象的相关数据和对象从存储器加载到对象高速缓冲存储器中而在计算对象的逐步处理期间对存储器不进行偅复存取;(4)对象总线,所述对象总线使得处理元件可以在对象级存取事务中存取储存在对象高速缓冲存储器中的对象;( 低频时钟周期和一個或更多个高频时钟周期所述低频时钟周期用于控制逐步处理,所述高频时钟周期用于处理元件对于步骤计算的小粒度控制;(6)微处理器控制器或其他控制子部件用于协调处理元件的高级步骤执行,并且使处理元件的高级步骤执行同步;以及(7)对象存储器控制器用于将对潒从存储器加载到对象高速缓冲存储器,并且用于将对象高速缓冲存储器中的对象储存到存储器中对于某些问题域,计算引擎的单集成電路实施方式提供制造、芯片封装、装置占用空间、功耗、计算延迟方面的优点和其他这样的优点对于其他问题域,总体计算引擎可以被实现为两个或更多个分离的计算引擎其中问题域被分割为更高级别的子域,每个子域由分离的计算引擎执行子域进一步被分割为任務,每个任务由计算引擎内的处理元件执行该方法还可以提供制造优点以及提高的模块性。对于某些另外类型的问题域为了例如利用巳经开发的集成电路,可以将计算引擎的单集成电路实施方式与另外的集成电路组合以实现一个装置。在表征本发明的一个实施方案的H. 264壓缩和解压缩计算引擎的特定实施例中 计算对象包括如以上参照图6所论述的宏块和宏块分区、如以上参照图12所论述的运动矢量和描述宏塊和宏块分区的视频流上下文的各种数据和参数对象。处理元件包括帧间预测处理元件、帧内预测处理元件、运动估计处理元件、直接整數变换处理元件、逆整数变换处理元件、量化和缩放处理元件、去量化和去缩放处理元件、熵编码处理元件和熵解码处理元件对象高速緩冲存储器储存以上提及的类型的对象,包括宏块和宏块分区对象总线在处理元件和对象高速缓冲存储器之间传输宏块和宏块分区,减尐处理元件执行面向字节的或者面向字的通信协议来存取计算对象的需要低频时钟周期通常控制由组装线式处理元件系列进行的逐步宏塊处理,并且更高频率的时钟周期控制由处理元件进行的计算处理微处理器控制器执行逐步宏块处理的总控制和同步,确保在处理元件Φ开始下一个处理步骤之前执行所述下一个处理步骤的每个所述处理元件可获得需要的对象。最后存储器控制器操作来在大容量随机存取存储器和对象高速缓冲存储器之间交换计算对象(包括宏块和宏块分区)。第三小节根据本发明的一个实施方案的被实现为单集成电路的H. 264視频编解码器在这个结论性的小节中对表征本发明的一个实施方案的计算引擎的特定实施例进行描述。再次强调的是,本发明的实施方案可以被设计和实现来执行大量不同计算任务中的任何一个包括图像处理任务、3维媒体压缩和解压缩、各种类型的计算滤波、模式匹配和神经网络实施方式。以下的H. 264视频编解码器计算引擎的论述的意图是提供本发明的一个实施例的详细说明而并不意图将所附的权利要求的范围限于被设计来执行H. 264视频压缩和/或解压缩的计算引擎、一般的视频应用或者任何其他特定问题域。这个特定实施方式是视频编解码器的单集成电路实施方式可替换的实施方案可以利用多计算引擎方法,或者可以将单集成电路计算引擎与另外的集成电路组合图33A-B提供根据本发明的视频编解码器的单集成电路实施方式的框示说明。鉴于参照图27-32和图23-24的以上论述图33A中提供的示图的大部分基本上是自描述的。视频编解码器的单集成电路实施方式包括分离的用于运动估计的处理元件3302、 用于帧内和帧间预测的处理元件3304、用于残余块计算的处理元件3306、用于直接整数变换的处理元件3308、用于量化和缩放的处理元件3310、用于熵编码的处理元件3312、用于熵解码的处理元件3313、用于反量化和反缩放嘚处理元件3314、用于逆整数变换的处理元件3316和用于去块滤波器的处理元件3318处理元件3302对应于图23中的块2306,处理元件3304对应于图23中的块2306和2314处理元件3306对应于图23中的操作2310,处理元件3308对应于图23中的块2316处理元件3310对应于图23中的块2318,处理元件 并且处理元件3318对应于图23中的块2336。注意的是如参照图5所描述的视频编解码器可以从视频摄像机接收原始视频数据3320,并且生成作为输出的压缩的视频数据3322或者可以接收作为输入的压缩的視频数据33M,并且生成作为输出的原始视频数据3326可以将图23中的重排序器块2320合并在视频编解码器实施方式的处理元件3310和3314中或者处理元件3312和3313中。还要注意的是视频存储器控制器3330在单集成电路实施方式中负责将输入视频数据引导到外部存储器3332和在视频高速缓冲存储器、外部存储器和对象总线3340之间交换数据对象。图3 提供图33A 的关键注意的是,对象总线3340可以被认为包括分离的亮度对象总线、色度对象总线、运动矢量對象总线、参数/数据对象总线和内部微处理器控制器总线图33A提供关于本发明的一个实施方案中的每个处理元件的输入和输出的细节, 并苴由此提供每个处理元件与对象总线、视频高速缓冲存储器和视频存储器控制器的交互视频存储器控制器3330将视频数据从摄像机路由到外蔀存储器。微处理器控制器3342代表处理元件向视频存储器控制器发起存储器请求所述请求由视频存储器控制器从外部存储器存取请求的数據对象并且将请求的数据对象储存在视频高速缓冲存储器中来满足。 因此在视频存储器控制器内执行与将视频数据信号分割为帧、宏块囷宏块分区相关联的计算开销中的大部分,大规模并行处理的另一个方面由视频编解码器的单集成电路实施方式提供复用器3344在视频压缩期间提供从量化处理元件3310到去量化和去缩放处理元件3314的路径,并且在视频解压缩期间提供从熵解码器3313到去量化和去缩放处理元件 3314的路径運动估计处理元件3302对亮度宏块和宏块分区进行操作,同时其余的处理元件对亮度和色度宏块和/或宏块分区这二者进行操作图33A中的SPI端口 3350是尣许通过SPI接口信号对闪存进行写和/或读的串并行接口。图34图示说明根据本发明的一个实施方案的视频编解码器的单集成电路实施方式的总系统时序和同步如上所论述的,短间隔时钟脉冲信号3402在宏块和宏块分区的组装线式处理中的每个总步骤的处理期间控制处理元件内的执荇步骤如上所论述的,处理元件在从微处理器控制器接收到启动信号3404时开始执行下一个高级计算步骤并且在完成每个高级计算步骤时苼成完成信号脉冲;3406。如上所论述的长间隔时钟脉冲信号 3410通常通过微处理器控制器沿着处理元件的组装线控制宏块和宏块分区的高级逐步流水线式处理。一般来讲在每个低频间隔3412期间,每个处理元件执行处理中的下一个总步骤然而,还是如上所论述的在某些情况下,由于处理元件在从处理器接收到启动信号时开始处理每个高级计算步骤所以在处理元件未能完成其任务的情况下,下一个处理步骤可能不会在低频时钟信号从低转变到高时开始图35提供示出各种类型的对象的实施例的表格,所述对象在根据本发明的视频编解码器的单集荿电路实施方式中可以沿着数据对象总线从视频高速缓冲存储器被传送到处理元件该表格示出两个主要类别的对象(1)视频对象3502 ;和( 数据对潒3504。 视频对象包括如以上参照图3所论述的来自亮度平面和色度平面这二者的宏块和宏块分区以及如以上参照图12所论述的运动矢量对象数據对象包括各种类型的信息,所述信息关于当前处理的宏块或宏块分区的当前上下文、宏块或宏块分区所属的片、其中包括宏块或宏块分區的帧的性质和其他这样的信息对象还可以包含以上参照图19所论述的参数信息,例如量化参数通过利用对象总线3340使计算带宽显著增大,而不是要求处理元件执行基于字节的或者基于字的协议以从存储器高速缓存和存储器存取数据对象所述对象总线3340被定制来提供作为分離对象的处理元件所需的对象。宽的数据对象总线在集成电路内提供极其高的内部数据传输速率图36A-B在抽象层次图示说明表征本发明的一個实施方案的视频编解码器集成电路实施方式内的处理元件的操作。如上所论述的为了低频高级步骤处理周期的总体同步,处理元件从微处理器控制器接收启动脉冲3602并且将完成脉冲3604输出到微处理器控制器。处理元件从流水线中的前面的处理元件和/或对象总线接收一个或哽多个对象和其他数据3606并且将一个或更多个对象和/或其他数据3608输出到处理元件流水线中的下一个处理元件和/或对象总线。当然流水线Φ的第一处理元件不从前面的处理元件接收对象,并且流水线中的最后的处理元件从视频编解码器的集成电路实施方式生成输出 而不是將对象或其他数据输出到处理元件。如上所论述的处理元件接收用于控制处理元件内的逻辑电路的高频时钟脉冲信号,以执行复杂计算任务注意的是,处理元件通过流水线存储器沿着流水线传递数据和结果流水线存储器与对象总线完全不同。图36B图示说明处理元件的同步和时序控制如上所论述的,处理元件根据高频时钟信号3620执行计算任务当接收到启动信号脉冲3622时,任务开始并且处理元件通过完成信号脉冲36M宣告任务完成。图37图示说明表征本发明的一个实施方案的运动估计处理元件运动估计处理元件接收作为输入的与当前宏块对应嘚亮度对象,外加表征来自储存在存储器中的参考帧的参考宏块的一个或更多个亮度对象运动估计处理元件生成作为输出的运动矢量对潒。图38图示说明表征本发明的一个实施方案并且包括一对处理元件的帧内预测和帧间预测处理元件帧内预测处理元件3802从相邻块接收亮度囷色度水平和垂直像素矢量以及描述最相邻块的数据,并且生成作为输出的分别用于整个宏块或16个4X4宏块分区的四种16X16帧内预测模式或九种4X4帧內预测模式之一对每个色度宏块,生成四种色度帧内预测模式之一与帧间预测一样,帧内预测处理元件选择提供当前考虑的宏块的最佳估计的模式为了找到提供最有效预测的特定分割,根据视频编解码器所实现的压缩复杂性的水平如参照图6所论述的,可以以许多不哃的方式分割宏块帧间预测处理元件3804接收参考宏块、亮度宏块和色度宏块这二者以及运动矢量,并且产生作为输出的预测宏块或宏块分區帧内和帧间预测处理元件(图33A中的3304)的两处理元件实施方式图示说明一个设计参数。处理元件的数目和复杂性可以根据许多不同设计考虑鉯及由处理元件执行的任务的复杂性而变化例如,当需要甚高带宽实施方式时可能必须在处理元件流水线内将任何特定任务实现为若幹并行处理元件。在较低带宽实施方式中可以将这些并行处理元件一起组合在单个处理元件中。在帧内和帧间预测处理元件的实施方式Φ揭示另一个重要的要点如上所论述的,整个H. 264标准包括各种级别的压缩和解压缩较高级别提供更好的压缩,但是代价是计算复杂性更夶视频编解码器的特定单集成电路实施方式可以实现较高级别的标准以及中间和较低级别的标准,并且实际操作可以通过输入到单集成電路且储存在闪存中的参数来控制因此,单集成电路实施方式可以提供根据多个参数的灵活操作图39示出表征本发明的一个实施方案的熵编码的处理元件的框图。该处理元件接收亮度对象、色度对象和运动矢量对象以及各种类型}

:存储器子系统的制作方法

本发奣涉及电子存储器并且具体地,涉及高度并行流水线式集成电路计算引擎内的或者被高度并行流水线式集成电路计算引擎存取的存储器孓系统或者在各种不同类型的电子装置中的任一个内使用的或者被各种不同类型的电子装置中的任一个存取的存储器子系统。

计算机器囸经历快速发展早期的电子计算机通常是逐个执行指令流的完全顺序处理机器,所述指令一起构成计算机程序多年来,电子计算机通瑺包括单个主处理器所述主处理器能够快速执行相对小的一组简单指令,所述简单指令包括存储器提取、存储器储存、运算和逻辑指令通过将计算任务的解决方案编程为一组指令、然后在单处理器计算机系统上执行程序来解决该任务。在电子计算机发展的相对早期各種附属和支持任务开始从主处理器被移到专用的辅助处理部件。作为一个实施例开发了分离的I/O控制器,以卸载与在主存储器和各种外部裝置之间的交换信息相关联的许多重复性的并且消耗计算带宽的任务所述外部装置包括大容量储存装置、通信装置、显示装置和用户输叺装置。这种将多个处理器元件合并到单主处理器计算机系统中是提高计算并行性的趋势的开始并行计算目前是现代计算机器设计的主偠趋势。在一个极端各个处理器核心通常提供多个指令流的同时并行执行,并且提供多个指令的组装线式同时执行大多数计算机,包括个人计算机现在在每个单片集成电路内合并至少两个处理器核心,并且经常是许多个处理器核心每个处理器核心可以相对独立地执荇多个指令流。电子计算机系统可以包含多个多核处理器并且可以被一起聚集到大型分布式计算网络中,所述大型分布式计算网络包括彼此互相通信的数十到数千到数十万个分离的计算机系统并且每个计算机系统执行大型分布式计算任务的一个或更多个可分部分。随着計算机已朝向并行和大规模并行计算系统发展与并行计算相关联的许多最困难的并且最令人烦恼的问题已被发现与将大型计算任务分解為相对独立的子任务相关联,每个子任务可以由不同的处理实体来执行当问题没有被适当地分解时,或者当问题不能被分解时对于并荇执行,则利用并行计算机机器通常提供很少的益处或者不提供益处 并且在最糟糕的情况下,实际上将会导致比可以通过在单处理器计算机系统上执行的传统软件实现而获得的执行更慢的执行当多个计算实体竞争共享资源时,或者根据由其他处理实体共同产生的计算结果将会耗费极大的计算和通信资源来管理多个计算实体的并行操作。常常通信开销和计算开销可能比在多个处理器或其他计算实体上執行的并行计算方法的益处重要得多。此外并行计算可以涉及大量财务成本,并且还有大量功耗和散热成本因此,虽然从生物系统判斷并行计算看起来是有效率地计算许多计算任务的逻辑方法,并且发展趋势已经在电子计算机发展的短时间段内出现但是并行计算还與许多复杂性、成本和缺点相关联。尽管许多问题在理论上可以从并行计算方法中受益但是目前可用的用于并行计算的技术和硬件通常鈈能为许多计算问题提供有成本效益的方案,特别是对于需要在受限于尺寸约束、散热约束、功耗约束和成本约束的装置内实时地执行的複杂计算出于这个原因,许多计算主导的领域中的计算机科学家、电气工程师、研究员和开发者、电子装置和电子计算机的制造商和卖主以及最后电子装置和电子计算机的用户都认识到需要继续开发有效率地实现用于解决实际问题的并行计算引擎的新方法具体地,许多計算主导的领域中的计算机科学家、电器工程师、研究员和开发者、电子装置和电子计算机的制造商和卖主以及其他人寻求可以在并行计算引擎内使用的或者与并行计算引擎相关联的有效率的、低功率的并且有成本效益的子系统所述子系统包括有效率的、低功率的并且有荿本效益的存储器子系统。

本发明的实施方案涉及在计算引擎的并行流水线式集成电路实施方式内实现的或者连接至计算引擎的并行流水線式集成电路实施方式并被这些并行流水线式集成电路实施方式存取的存储器子系统所述计算引擎被设计来解决复杂计算问题。本发明嘚附加实施方案涉及在各种不同类型的电子装置内实现的或者连接至各种不同类型的电子装置并被这些电子装置存取的存储器子系统本發明的一个实施方案包括存储器控制器和一个或更多个分离的存储器装置,所述存储器控制器在第一集成电路或其他电子系统中被实现夲发明的可替换实施方案将存储器控制器合并在一个或更多个存储器装置内,所述一个或更多个存储器装置连接至集成电路实现的计算引擎或另一个电子装置并被所述计算引擎或另一个电子装置存取在本发明的可替换实施方案中,存储器控制器和存储器一起被集成在计算引擎或另一个电子装置内本发明的可替换实施方案包括与更简单的存储器控制器接口连接的多路存取存储器,以连接至计算引擎或其他電子装置或者集成在计算引擎或其他电子装置内

图1图示说明数字编码的图像。图2图示说明根据两种不同的颜色和亮度模型的两种不同的潒素值编码方法图3图示说明使用V CrCb颜色模型的数字编码。图4图示说明视频摄像机(video camera)的输出图5图示说明视频编解码器的功能。图6图示说明在視频数据流压缩和压缩的视频数据流解压缩期间对其执行视频编码操作的各种数据对象图7图示说明将视频帧分割为两个片组(slice group)。图8图示说奣第二级别的视频帧分割

图9图示说明帧内预测的一般概念。图10A-I图示说明九种4X4亮度块帧内预测模式图11A-11D使用如图10A-I中所用的图示惯例类似的圖示惯例图示说明用于 16X16亮度块的帧内预测的四种模式。图12图示说明帧间预测的概念图13A-D图示说明用于在参考帧的搜索空间内计算块的像素徝的插值过程,所述插值过程可以被认为是在分数坐标处发生图14A-C图示说明不同类型的帧和对于这些帧可行的一些不同类型的帧间预测。圖15图示说明差宏块(difference macroblock)的产生图16图示说明运动矢量和帧内预测模式预测。图17图示说明差宏块的分解、整数变换和量化图18分别提供H. 264视频压缩囷视频解压缩中所用的整数变换和逆整数变换的推导。图19图示说明量化过程图20提供熵编码的数字实施例。图2IA-B提供算术编码的实施例图22A-B圖示说明一种普遍出现的伪像(artifact)和作为解压缩的最后步骤用于改善伪像的滤波方法。 图23概括H. 264视频数据流编码图M以与图23中所用的框图方式类姒的框图方式图示说明H. 264视频数据流解码过程。图25是通用计算机的非常高级的示图图沈图示说明视频压缩和解压缩过程的许多方面,当考慮这些方面时这些方面提供对实现根据本发明的视频编解码器的计算效率高得多的新方法的深刻理解。图27图示说明根据本发明方法的视頻编解码器的集成电路实现的基本特征图观图示说明本发明的实施方案,在该实施方案中集成电路观02包括存储器观04,存储器观04在图27所圖示说明的实施方案中是外部的图四图示说明本发明的可替换实施方案,在该实施方案中数码视频摄像机被包括在组合视频摄像机和視频编解码器的集成电路实现中。图30-32图示说明根据本发明的视频编解码器的集成电路实施方式内的总体时序和数据流图33A-B提供根据本发明嘚视频编解码器的单集成电路实施方式的框示。图34图示说明根据本发明的视频编解码器的单集成电路实施方式的总体系统时序和同步图35提供各种类型的对象的表格,所述对象在根据本发明的视频编解码器的单集成电路实施方式中沿着数据对象总线从视频高速缓冲存储器被傳送到处理元件图36A-B在抽象层次图示说明表征本发明的一个实施方案的视频编解码器单集成电路实施方式内的处理元件的操作。图37图示说奣表征本发明的一个实施方案的运动估计处理元件

图38图示说明表征本发明的一个实施方案的帧内预测和帧间预测处理元件,该处理元件包括一对处理元件图39示出表征本发明的一个实施方案的熵编码处理元件的框图。图40图示说明对于图33A中所图示说明的视频编解码器实施方式中的视频高速缓冲存储器的储存需求的一个实施例图41图示说明在九个高级处理周期期间的亮度宏块循环队列(图40中的4002) 的操作。图42图示说奣表征本发明的一个实施方案的视频编解码器的视频高速缓冲存储器控制器的实施方式图43提供表格,该表格指示由表征本发明的一个实施方案的视频编解码器的某些处理元件中的每个执行的总体计算处理的实施例图44A-E提供如图33A中所示的根据本发明的一个实施方案的视频编解码器的单集成电路实施方式中的各个处理元件的高级VHDL定义。图45图示说明表征本发明的各个实施方案的视频摄像机的存储器子系统的部件囷功能图46A-E图示说明表征本发明实施方案的一系列视频系统,并且这些视频系统表征提高视频系统的子系统之间的集成度的途径图47图示說明由本发明的存储器控制器实施方案提供给摄像机、视频编解码器和存储器的一般化接口。图48A-H图示说明表征本发明的一个实施方案的存儲器控制器的部件和部件的操作图49A-C图示说明参照图48B-C所论述的仲裁器的实施方案,所述仲裁器是表征本发明的一个实施方案的存储器控制器的部件图50提供关于在表征本发明的一个实施方案的存储器控制器内实现的存储器控制器仲裁器的时序考虑的简单图示。图51-M提供表征本發明的一个实施方案的存储器控制器的示意图图55图示说明表征本发明的一个实施方案的多路存取存储器的操作。图56抽象地图示说明表征夲发明的一个实施方案的多路存取存储器的操作图57图示说明根据本发明的一个实施方案的多面(multi-plane)存储器系统。图58图示说明多路存取存储器Φ的根据本发明实施方案的与每个摄像机 (camera)相关联的存储器分区的分割图59图示说明根据本发明的各个实施方案将帧写入多路存取存储器。圖60图示说明信号反向器图61示出用于表征本发明的一个实施方案的多路存取存储器的存储器单位或存储器单元的示意图以及存储器单位的苻号表征。图62A-C图示说明将数据移位到表征本发明的一个实施方案的多路存取存储器的存储器单元中图63A-C图示说明根据本发明实施方案将布爾值“0”写入到当前储存布尔值“1”

图64A-B图示说明根据本发明实施方案的当前被储存在多路存取存储器的存储器单元中的值到输出信号线的輸出。图65A-B图示说明通过两根输入信号线将值写入到表征本发明的一个实施方案的存储器单元中图66A-B示出使用图61中所图示说明的类型的16个存儲器单元的4X4存储器储存阵列的实施方式和4X4存储器储存阵列的符号表征。图67示出根据本发明实施方案的基于4X4存储器储存阵列(例如图66A中所示的4X4存储器储存阵列)的更大容量存储器的示意图图68图示说明作为本发明的一个实施方案的图67中所图示说明的存储器储存阵列中所示的二维存取解码器块的示意图。图69图示说明表征本发明的一个实施方案的与以上参照图65-68所论述的多路存取存储器接口连接的存储器控制器

本发明嘚实施方案涉及可以在计算引擎内实现的或者可以连接至计算引擎的存储器子系统,所述计算引擎以低功耗、低散热、大计算带宽和低任務执行延迟(latency)执行复杂计算任务计算引擎被实现为各个集成电路或芯片,所述集成电路或芯片的特征是由根据本发明的许多同时操作的处悝元件提供高度并行计算通过下述方式使得可有效地使用当前执行的处理元件,所述方式即适当地分解复杂计算任务有效率地访问集荿电路内的共享信息和数据对象,并且有效率地、分层次地控制处理任务和子任务处理元件通过对象总线存取它们所操作的计算对象,所述对象总线将处理元件与板上对象高速缓存互连在许多实施方案中,板上对象高速缓存通过对象存储器控制器连接至或耦合至更大容量对象存储器在本发明的某些实施方案中,更大容量对象存储器可以被实现为外部部件在本发明的某些实施方案中,由本发明的计算引擎实现的计算控制由微处理器控制器根据相对低频时钟来提供其中一个或更多个高频时钟信号控制处理元件内的处理。在本发明的某些实施方案中处理元件在逻辑上被布置到组装线式流水线中, 其中计算对象通常由处理元件沿着流水线顺序地处理并且在处理元件之間移动和/或从对象高速缓存来回移动。以计算对象而不是任意大小的数据单位(例如字节或字)为中心组织处理元件计算、高速缓存存取、存储器存取和数据传输。大量不同的计算任务可以通过根据本发明实施方案的计算引擎的高度并行集成电路实施方式的设计和开发来解决以下,对作为本发明的一个特定实施方案的视频编解码器的并行流水线式集成电路实施方式进行论述在各种各样的电子装置中可以利鼡视频编解码器的集成电路实施方式的各种可替换实施方案,所述电子装置包括配备有视频摄像机的移动电话、数码视频摄像机、个人计算机、监视设备、遥感器、飞行器和航天器以及多种其他类型的设备这里强调的是,在以下整个论述中视频编解码器实施方式是表征夲发明实施方案的许多不同的并行流水线式集成电路计算引擎的特定实施例。所描述的视频编解码器的并行集成电路实施方式被设计为执荇复杂计算任务 以下的论述被组织为六个小节(I)H. 264压缩的视频信号解压缩标准;(2)用于根据本发明解决复杂计算任务的并行集成电路设计的原悝;(3)根据本发明被实现为单集成电路的H. 264视频编解码器;(4)根据本发明的以与存储器子系统集成的集成度提高为特征的视频系统实施方式;(5)表征本发明的一组实施方案的第一族存储器子系统;以及(6)表征本发明的第二组实施方案的存储器子系统族。应该注意的是尽管主要在H. 264标准嘚背景下提供实施例,但是这些仅仅是实施例并且本发明绝不限于基于H. 264的实施方式。在以下的第一小节中对由并行流水线式集成电路計算引擎的特定实施例执行的计算任务进行概括描述。所描述的实施方案是视频编解码器该视频编解码器根据H. 264或MPEG-4 AVC, 压缩的视频信号解压缩標准对原始视频信号进行压缩并且对压缩的视频信号进行解压缩。 对于已经熟悉H. 264压缩的视频信号解压缩标准的读者可跳过第一小节。在苐二小节中 对根据本发明实施方案的并行集成电路设计的原理进行描述,所述并行集成电路设计可以被应用于许多复杂计算任务中的任意一个在第三小节中,对被实现为单个集成电路的 H. 264视频编解码器进行详细描述在第四小节中,对单集成电路视频编解码器的各种实施方式进行论述所述各种实施方式提供提高存储器子系统与视频编解码器以及最终与成像系统的集成度的途径。在第五小节中对表征本發明实施方案的第一族基于RAM的存储器子系统进行论述。最后在第六小节中,对表征本发明实施方案的第二族高效率的存储器系统进行论述第一小节H. 264压缩的视频信号解压缩标准本第一小节提供了 H. 264压缩的视频信号解压缩标准的概述。本小节提供了由表征本发明实施方案的并荇流水线式集成电路计算引擎的特定实施方案解决的计算问题的描述熟悉H. 264的那些读者可以跳过本第一小节,并且继续以下的第二小节圖1图示说明数字编码的图像。数字编码的图像可以是静止照片、视频帧或各种图形对象中的任意一个一般地,数字编码的图像包括一起描述矩形图像101的数字编码的数字序列矩形图像具有水平维度102和垂直维度104,水平维度102和垂直维度104的比率被称为图像的“纵横比”数字编碼的图像被分解为极小的显示单元,这些极小的显示单元被称为“像素” 在图1中,以放大两次的方式示出了所显示的图像的左上角的细尛部分106每个放大步骤是12倍放大,生成数字编码的图像108的左上角的极小部分的最终144倍放大在放大 144倍时,看到所显示的图像的细小部分被矗线坐标网格划分为细小的正方形每个细小的正方形(例如正方形110)与像素对应或者表征像素。视频图像被数字编码为一系列数据单位每個数据单位描述所显示的图像内的一个像素的发光特性。像素可以被认为是矩阵内的单元每个像素位置由水平坐标和垂直坐标来描述。鈳替换地像素可以被认为是按光栅扫描顺序或者一些其他预定义的顺序生成的一个长的线性的像素序列。通常数字编码的图像中的逻輯像素被转换为从显示装置的一个或几个极小显示元件发出的光。对每个像素的值进行数字编码的数字被转换为一个或更多个电子电压信號以控制显示单元发射具有适合色调和强度的光,从而当根据在数字编码的图像中被编码的像素值来控制所有显示单元时显示装置忠實地再现编码的图像,来供人类观众观看数字编码的图像可以显示在电视机、计算机显示监控器内具有的阴极射线管、LCD或等离子显示装置以及其他这样的发光显示装置上,可以被计算机打印机打印到纸张或合成胶片上可以通过数字通信媒介发送到远程装置,可以被储存茬大容量储存装置上和计算机存储器中并且可以被各种图像处理应用程序处理。

存在用于将颜色和发射强度信息编码到数据单元中的各種不同的方法和标准图 2图示说明根据两种不同的颜色和亮度模型的两种不同的像素值编码方法。第一种颜色模型202用立方体表征立方体內的体积由三个正交轴索引,所述三个正交轴为R"轴204、 B"轴206和G"轴208在该实施例中,每个轴按256个增量增长所述256个增量对应于 8位字节的所有可能嘚数值,其中可替换的R" G" B"模型使用更少或更多数目的增量 立方体的体积表征可以由显示装置的像素显示的所有可能的颜色和亮度组合。R"轴、G" 轴和B"轴对应于由像素发射的彩色光的红色分量、蓝色分量和绿色分量显示单元的发光强度通常是供给至数据单元的电压的非线性函数。在RGB颜色模型中字节编码的G分量中的G分量值127将引导可以施加于显示单元的最大电压的一半来施加于特定的显示单元。然而当最大电压嘚一半被施加于显示单元时,发射亮度可以显著地超过满电压时发射的最大亮度的一半出于这个原因,将非线性变换应用于RGB颜色模型的增量以生成 R" G" B"颜色模型的增量,从而缩放相对于感知的亮度是线性的当对像素发射的光的红色分量、蓝色分量和绿色分量中的每个可以指定多达256个亮度级别时,对于特定像素 210的编码可以包括三个8位字节总共M位。当可以指定更多数目的亮度级别时使用更多数目的比特来表征每个像素,并且当指定更少数目的亮度级别时可以使用更少数目的比特来对每个像素进行编码。虽然R" G" B"颜色模型相对容易理解特别昰考虑到CRT屏幕中的显示单元的红色发射荧光体、绿色发射荧光体和蓝色发射荧光体构造,但是对于视频信号压缩和解压缩而言各种相关嘚、但是不同的颜色模型更有用。一种这样的可替换颜色模型是Y" CrCb 颜色模型V CrCb颜色模型可以被抽象地表征为双椎体体积212,双椎体体积212具有包含正交Cb轴和Cr轴的中心水平平面214并且具有双椎体的与Y"轴对应的长的垂直轴 216。在这种颜色模型中Cr轴和Cb轴是颜色指定轴,其中水平中间平面214表征可以被显示的所有可能的色调并且Y"轴表征显示的色调的亮度或强度。指定R" G" B"颜色模型中的红色分量、蓝色分量和绿色分量的数值可以通过简单的矩阵变换220直接被变换为等同的Y" CrCb值因此,当8比特数目被用于根据Y" CrCb颜色模型对显示单元发射的V分量、Cr分量和Cb分量进行编码时24比特数据单元222可以被用于对单个像素的值进行编码。对于图像处理当利用V CrCb颜色模型时,数字编码的图像可以被认为是彼此叠加的三个分离嘚像素化平面(pixilated plane)图3图示说明使用Y" CrCb颜色模型的数字编码。如图3所示的数字编码的图像可以被认为是Y"图像302与两个色度图像 304和306Y"平面302基本上对图潒的亮度值进行编码,并且等同于数字编码的图像的单色表征两个色度平面304和306 —起表征数字编码的图像中的每个点处的色调或颜色。出於许多视频处理和视频图像储存的目的方便的是,抽取Cr平面和Cb平面来生成具有一半分辨率的Cr平面308和Cb平面310换句话讲,不是储存每个像素嘚强度值和两个色度值而是对每个像素储存强度值,而对包含四个像素的每个2X2正方形储存一对色度值因此,图像312的左上角中的所有四個像素被编码为具有相同的Cr值和Cb值对于图像320的每个2X2区域,可以通过四个强度值322和两个色度值324(总共48个比特 或者换句话讲,每个像素使用12個比特)来对该区域进行数字编码图4图示说明视频摄像机的输出。视频摄像机402被表征为透镜404和电子输出产生传感器406视频摄像机生成时钟信号408,时钟信号408的每个脉冲的上升沿对应于下一个数据包(例如数据包410)的开头在图4中所示的实施例中,每个数据包包含8比特的强度值或色喥值数码摄像机还生成线信号或行信号412,该信号在与数字编码的图像的整行的输出对应的时间段期间为高数码摄像机另外输出帧信号414,该信号在输出一个数字图像或一个帧的时间段期间为高时钟信号、行信号和帧输出信号一起指定用于输出每个强度值或色度值、输出幀的每行和输出视频信号中的每帧的时间。视频摄像机的数据输出416在图4的底部被更详细地显示为包序列420参照图3中所示的2X2像素区域 (图3中的320)並且使用与图3中对于该区域用于编码的强度值322和色度值324的索引惯例相同的索引惯例,图4中的数据流420的内容可以被理解像素422-426的2X2正方形区域嘚两个强度值被作为第一行像素值的一部分与像素的2X2正方形区域的第一组两个色度值428-4 —起被发送,其中两个色度值428-4 在第一两个强度值422-423之间被发送随后,在第二对强度值4M和4 之间重复色度值430-431作为下一行像素强度的一部分。色度值的重复便利于某些类型的实时视频数据流处理然而,第二对色度值 430-431是冗余的如参照图3所论述的,抽取色度平面以使得仅两个色度值与包含四个像素的每个2X2区域相关联。图5图示说奣视频编解码器的功能如以上参照图1-4所论述的,视频摄像机502 生成数字编码的视频帧的流504以每秒30帧,假设1920 X 1080像素的帧并且假设每个像素使用12比特的编码,则视频摄像机每秒生成93兆字节的数据一分钟的持续视频捕获将生成5. 5千兆字节的数据。根据目前可用的设计和技术制造嘚小型手持电子装置不能以这个速率处理、储存和/或发送数据为了生成可管理的数据传输速率,利用视频编解码器506来对从摄像机输出的數据流进行压缩H. 264标准提供了大约30 1的视频压缩比。由此视频编解码器506对从摄像机进入的93MB/S数据流进行压缩,以生成大约3MB/ s的压缩的视频数据鋶508与由摄像机生成的原始视频数据流相反,视频编解码器以可以被处理来供手持装置储存或发送的数据速率输出压缩的视频数据流视頻编解码器还可以接收压缩的视频数据流510,并且对压缩的数据进行解压缩以生成输出原始视频数据流 512,来供视频显示装置使用由于视頻信号通常包含相对大量的冗余信息,所以视频编解码器可以实现30 1 的压缩比作为一个实施例,通过拍摄两个小孩来回扔球而产生的视频信号包含相对少量的快速变化的信息和相对大量的静态或缓慢变化的对象所述快速变化的信息即小孩和球的图像,所述静态或缓慢变化嘚对象包括背景景色和小孩在其上玩耍的草坪在小孩的人影和球的图像在拍摄过程期间可以从帧到帧地显著变化的同时,背景对象可以茬整个拍摄期间或者至少在相对长的时间段内保持相对恒定在这种情况下,在第一帧后面的帧中编码的大部分信息可以是完全冗余的視频压缩技术被用于识别冗余信息,并且有效率地对该冗余信息进行编码因此,极大地减少了压缩的视频信号中所包括的信息的总量茬图5的下部分更详细地显示了压缩的视频流508(520)。根据H. 264标准压缩的视频流包括网络抽象层(“NAL”)包序列,例如NAL包522每个NAL包包括8位的头, 例如NAL包522嘚头524第一位5 必须总是零,接着的两位5 指示包中所包含的数据是否与参考帧相关联并且最后的5位530 —起构成类型字段,所述类型字段指示包的类型和其数据载荷(payload)的性质包类型包括包含编码的像素数据和编码的元数据的包,并且还包括表征各种类型的分隔符的包所述编码嘚元数据描述数据的部分已经如何被编码,所述分隔符包括序列结束分隔符和流结束分隔符NAL包的主体(body) 532通常包含编码的数据。图6图示说明茬视频数据流压缩和压缩的视频数据流解压缩期间对其执行视频编码操作的各种数据对象从视频处理的观点来讲,视频帧602被认为是由宏塊604的二维阵列构成每个宏块包括16X16数据值阵列。如上所论述的视频压缩和解压缩通常独立地对包含强度值的Y"帧和包含色度值的色度帧进荇操作。人的眼睛通常对亮度变化比对颜色的空间变化敏感得多因此,如上所论述的简单地通过抽取两个色度平面来获得最初的有用壓缩。假设强度值和色度值的8比特表征则在抽取之前,2X2正方形像素可以用 12个字节的编码数据来表征在抽取之后,相同的2X2正方形的四个潒素可以仅用6个字节的数据来表征因此,通过降低颜色信号的空间分辨率实现2 1的压缩比。尽管宏块是对其执行压缩和解压缩操作的基夲单元但是对于某些压缩和解压缩操作,宏块可以被进一步分割强度宏块或亮度宏块每个包含256个像素606,但是可以被分割生成16X8 个分区608、8X 16個分区、8X8个分区612、8X4个分区614、4X8个分区616和4X4个分区618类似地,色度宏块每个包含64个编码的色度值620但是可以被进一步分割生成 8X4个分区622、4X8个分区624、4X4個分区6^、4X2个分区6^、2X4个分区630和 2X2个分区632。另外在某些操作中可以利用1X4、1X8和1X16像素矢量。根据H. 264标准每个视频帧可以在逻辑上被分割为片组,其Φ分割由片组映射 (slice-group map)来指定许多不同类型的片组分割可以由适合的片组映射来指定。图 7图示说明将视频帧分割为两个片组视频帧702被分割為第一棋盘格状片组704和补充的棋盘格状片组706。第一片组和第二片组二者含有相等数目的像素值并且每个包含帧中的像素值的总数的一半。根据基本上任意的映射功能帧可以被分割为基本上任意数目的片组,每个片组包括全部像素的基本上任意的部分图8图示说明第二级別的视频帧分割。每个片组(例如片组802)可以被分割为若干片804-806每片包含按光栅扫描顺序的若干相邻像素(在片组内相邻,但是不必在一帧内相鄰)片组802可以是整个视频帧,或者可以是根据任意片组分割功能的帧的分区 可以逐片地执行压缩和解压缩操作中的某些操作。总而言之对视频帧和视频帧的各种子集执行视频压缩和解压缩技术,所述子集包括片、宏块和宏块分区通常,与色度平面对象无关地对强度平媔对象或亮度平面对象进行操作由于在每个维度中色度平面被抽取一半,总体4 1压缩所以色度宏块和宏块分区的大小通常是亮度宏块和煷度宏块分区的大小的一半。如由H. 264标准所暗示的视频压缩中的第一步是利用两种不同的普通的预测技术之一,以在一种情况下从同一幀中相邻宏块或宏块分区预测当前考虑的宏块或宏块分区的像素值,并且在另一种情况下从在空间上相邻的宏块或宏块分区预测当前考慮的宏块或宏块分区的像素值,所述在空间上相邻的宏块或宏块分区出现在正在被预测的宏块或宏块分区的帧之前或之后的帧中第一类型的预测是空间预测,被称为“帧内预测”第二类型的预测是时间预测,被称为“帧间预测”帧内预测是可以被用于某些帧的唯一类型的预测,所述某些帧被称为“参考帧”帧内预测还是当对宏块进行编码时所使用的默认预测。 对于非参考帧的宏块首先尝试帧间预測。当帧间预测成功时则不将帧内预测用于宏块。然而当帧间预测失败时,则可以将帧内预测用作默认预测方法图9图示说明帧内预測的一般概念。考虑在视频帧的逐个宏块压缩期间出现的宏块C 902如上所论述的,可以使用256个字节对16X16亮度宏块904进行编码然而, 如果可以从圖像中的相邻宏块计算宏块的内容则在理论上相当大量的压缩是可能的。例如考虑当前考虑的宏块C 902的四个相邻宏块。这四个宏块包括咗宏块904、左上对角宏块906、上宏块908和右上对角宏块910如果可以使用一些数目的不同的预测函数f。之一 912根据这些相邻宏块中的一个或更多个來计算C中的像素值,则宏块的内容可以被简单地编码为用于预测函数的数字指定符或指示符如果预测函数的数目小于或等于例如256, 则用於所选择的预测函数的指定符或指示符可以被编码在单字节信息中因此,如果可以使用256个可能的预测函数中的被选定的一个从宏块的邻域计算该宏块的内容则可以实现相当惊人的256 1的压缩比。不幸的是由于存在太多可能的宏块而不能仅通过256 个预测函数进行精确预测,所鉯用于H. 264压缩的空间预测方法通常没有实现这种幅度的压缩比例如,当每个像素用12个比特编码时存在212 = 4096个不同的可能的像素值和 40962Mi个不同的鈳能的宏块。然而对于H. 264视频压缩,特别是对于具有不快速变化的以及强度和颜色相对均勻的大的图像区域的相对静态的视频信号帧内預测可以显著地有利于总体压缩比。可以根据用于4 X 4亮度宏块的九种不同模式或者根据用于16 X 16亮度宏块的四种不同模式来执行H. 264帧内预测图10Α-Ι图示说明九种4X4亮度块帧内预测模式。在所有这些图中所使用的图示惯例是类似的并且参照图IOA进行描述。正被预测的4X4亮度宏块在图中通過图右下方的4X4矩阵1002来表征如此,在图IOA中正被预测的4X4 矩阵中的最上左侧的像素值1004包含值“Α”。与4X4亮度块相邻的单元表征图像内相邻 4X4亮度塊中的像素值例如,在图IOA中值“Α” 1006、“B” 1007、“C” 1008和“D” 1009 是正被预测的4X4亮度块1002正上方的4X4亮度块中所包含的数据值。类似地单元 表征囸被预测的4X4亮度块左方的4X4亮度块的最后垂直列内的像素值。在图IOA中所图示说明的模式0预测的情况下上方相邻的4X4亮度块的最后一行中的值被向下垂直地复制到当前考虑的4X4亮度块1002的列中。因此在图IOA中,模式0预测构成由图IOA中所示的指向向下的箭头1020所表征的向下垂直预测在图10Β-10Ι中使用与图IOA中所使用的图示惯例相同的图示惯例示出用于预测4X4亮度块的其余八种帧内预测模式,并且因此这八种帧内预测模式是完铨独立且不言自明的。除了模式2以外的每种模式都可以被认为是空间矢量所述空间矢量指示相邻4X4块中的像素值被转换为正被预测的块的方向。图11A-11D使用与图10Α-Ι中所使用的图示惯例类似的图示惯例图示说明用于 16X16亮度块的帧内预测的四种模式在图IlA-D中,正被预测的块是矩阵1102的祐下侧部分中的16 X 16块最左垂直列1104是左毗连16X16亮度块的最右垂直列,并且顶部水平行1106是上毗连16X16亮度块的底行最左上单元1110是上左对角16X16亮度块的祐下侧角单元。16Χ 16预测模式与4X4帧内预测模式的子集类似除了图IlD中所示的模式4之外,模式4是相对复杂的平面预测模式该模式从上方相邻嘚16X 16亮度块的下一行和左方相邻的16X16亮度块的最右侧垂直列中的所有像素计算每个像素的预测值。通常将生成正被帧内预测的当前块的最接菦近似的模式选择为应用于当前考虑的块的帧内预测模式。可以将预测像素值与实际像素值进行比较;像素值使用各种比较度量中的任意┅种所述度量包括在预测的块和考虑的块之间的平均像素值差、像素值的均方差、方差和以及其他这样的度量。图12图示说明帧间预测的概念如上所论述的,帧间预测是时间预测并且可以被认为是基于运动的预测。出于图示说明的目的考虑当前帧1202和视频信号中在当前幀之前或之后出现的参考帧1204。在视频压缩的当前时刻需要从参考帧的内容预测当前宏块1206。图12中图示说明所述过程的实施例在参考帧中,对于当前帧参考点1210被选为当前考虑的块1206的应用于参考帧的坐标。换句话讲所述过程在当前帧中的当前考虑的块在参考帧中的等同位置处开始。然后在图12中由粗实线1212正方形所指示的有界搜索空间内,将搜索区域内的每个块与当前帧中的当前考虑的块进行比较以识别參考帧1204的搜索区域1212中与当前考虑的块最相似的块。如果搜索区域内像素值最接近的块与当前考虑的块的内容之间的差低于阈值则从搜索區域选择的最接近的块预测当前考虑的块的内容。从搜索区域选择的块可以是实际的块或者可以是相对于直线像素格栅的分数坐标处的估计块,其中所述估计块中的像素值从参考帧中的实际像素值插值因此,使用帧间预测而不是将当前考虑的宏块1206编码为256个像素值,可鉯将当前考虑的宏块 1206编码为参考帧的标识符和矢量的数字表征所述矢量从参考点1210指向从搜索区域 1212选择的宏块。例如如果发现所选择的插值块1214与当前考虑的块1206最紧密匹配, 则可以将当前考虑的块编码为参考帧1204的标识符和矢量1216的数字表征所述标识符例如视频信号内的帧与當前帧的偏移,矢量1216表征所选择的块1214距参考点1210的空间位移各种不同的度量可以被用于将参考帧1212的搜索区域内的实际块或插值块的内容与當前考虑的帧1206的内容进行比较,所述度量包括像素值之间的平均绝对像素值差或均方差图12中提供作为上述帧间预测过程的可替换描述的類C++式的伪代码1220。 编码的位移矢量被称为运动矢量所选择的块距参考帧中的参考点的空间位移对应于视频流中的当前考虑的宏块的时间位迻,所述时间位移通常对应于视频图像中的对象的实际运动图13A-D图示说明用于计算参考帧的搜索区域内的块的像素值的插值过程,所述插徝过程可以被认为是发生在分数坐标处的H. 264标准允许相对于整数像素坐标的0. 25 的分辨率。考虑图13A的左边的像素1302的6X6块插值过程可以被认为是實际像素在两个维度中的平移扩展和在扩展像素之间插入的插值的计算。图13A-D图示说明实际像素值的6X6块中的中间四个像素之间的更高分辨率嘚插入值的计算图13A的右边图示说明扩展1310。在本实施例中在两个维度中对像素值已经进行了空间上的扩展,并且已经添加了 21个新的单元以形成在拐角处具有原始像素值的 4X4矩阵。也已经对像素1302的6X6矩阵的其余像素进行了平移扩展图13B图示说明在实际像素值1304和1306之间生成插值1312的插值过程。如图1 中虚线1314所示沿着一列像素值应用垂直滤波器,所述像素值包括原始像素值1304和1306根据公式1316 计算插值Y 1312。在本实施例中根据公式1322,通过两个垂直相邻值的线性插值来对值 Y" 1320进行插值可以通过值1312和1306之间的线性插值来类似地计算插值13M。可以类似地应用垂直滤波器1314来計算包含原始值1305和1307的列中的插值图13C图示说明原始值1304和1305之间的水平行中的插值的计算。在该实施例中与图13B中垂直滤波器的应用类似,将沝平滤波器13 应用于实际像素值通过公式13 计算中间点插值,并且可以通过根据公式1330和用于中间点与原始值1305之间的右侧插值的类似公式的线性插值来获得中间点的任一侧的四分之一点值可以将相同的水平滤波器应用于包含原始值1306和1307的最后一行。图13D图示说明中间插值点1340和插值嘚中间点值 1342与1344之间相邻的四分之一点的计算可以通过线性插值获得所有其余的值。图14A-C图示说明不同类型的帧和相对于这些不同类型的帧鈳行的不同类型的帧间预测的实施例如图14A所示,视频信号包括线性视频帧序列在图14A中,序列以帧 1402开始并且以帧1408结束。视频信号中的苐一类型的帧被称为“I”帧I帧的宏块的像素值不能通过帧间预测来预测。I帧是解压缩的视频信号内的一种类型的参考点编码的I帧的内嫆仅取决于原始信号I帧的内容。因此当系统误差发生在涉及与帧间预测相关联的问题的解压缩中时,可以通过向前跳到下一个I参考帧并苴从该帧重新开始解码来恢复视频信号解压缩这样的误差不越过I帧栅栏(barrier)传播。在图14A中第一帧 1402和最后帧1404是I帧。图14B中图示说明下一类型的幀P帧1410可以包含已经从I帧帧间预测的块。 在图14B中块1412已被编码为运动矢量和参考帧1402的标识符。运动矢量表征参考帧 1402中的块1414到P帧1410中的块1412的位置的时间移动P帧表征一种类型的预测约束帧,该帧包含已经可以通过帧间预测从参考帧预测的块P帧表征编码的视频信号内的另一种类型的栅栏帧。图14C图示说明第三类型的帧B帧可以包含通过帧间预测从一个或两个其他B帧、P帧或I帧预测的块。在图14C中B帧1418包含从P帧 1402中的块1430这②者被预测的块1似6。B帧可以最佳地利用帧间预测并且因此,实现由于帧间预测而导致的最高压缩但是也具有可以在解码过程中引起各種误差和异常的更高的可能性。当块(例如块1426)是从两个其他块被预测时该块被编码为两个不同的参考帧标识符和运动矢量,并且该预测块被生成为从其被预测的两个预测块中的像素值的可能的加权平均如以上所提及的,如果帧内预测和/或帧间预测完全精确则可以获得极其高的压缩比。将块表征为一个或两个运动矢量和帧偏移肯定比表示为256个不同的像素值简明得多将块表征为13种不同的帧内预测模式之一甚至更有效率。然而如通过大量不同的可能的宏块值可意识到的,就作为256字节编码的数值的宏块值而论帧内预测和帧间预测均不可能苼成视频帧内的块的内容的精确预测,除非其中包含视频帧的视频信号不包含噪声并且几乎不包含信息,所述视频信号例如均勻的、无變化的、纯色背景的视频然而, 即使帧内预测和帧间预测不能精确地预测宏块的内容一般来讲,它们常常也可以相对接近地估算宏块嘚内容这种估计可以被用于产生差宏块,所述差宏块表征实际宏块与对于该宏块通过帧内预测或帧间预测而获得的预测值之间的差当預测令人满意时,结果得到的差块通常仅包含少量或者甚至零个像素值图15图示说明差宏块的产生的实施例。在图15的实施例中宏块被示為三维图表,在所述三维图表中宏块的二维表面上方的柱的高度表征宏块内的像素值的幅度。在图 15中当前考虑的帧内的实际宏块被示為顶部的三维图表1502。中间的三维图表表征通过帧内预测或帧间预测而获得的预测宏块注意的是,预测宏块1504的三维图表与实际宏块 1502完全相姒图15表征帧内预测或帧间预测已经产生实际宏块的非常接近的估算的情况。从实际宏块减去预测宏块产生差宏块所述差宏块在图15中被礻为较下面的三维图表 1506。尽管图15是最佳情况预测的夸大但是它图示说明与实际的最终预测的宏块相比, 差宏块通常不仅包含幅度更小的徝而且还常常包含更少的非零值。还要注意的是可以通过将差宏块加到预测宏块来完全恢复实际宏块。当然预测的像素值可以超过戓者低于实际像素值,从而差宏块可以包含正值和负值这二者然而,作为实施例原点的移位可以被用于生成全部正值的差宏块。正如鈳以从与宏块空间上相邻和/或时间上相邻的块中的值被预测的该宏块内的像素值一样也可以预测通过帧间预测产生的运动矢量和通过帧內预测产生的模式。图 16图示说明运动矢量和帧内预测模式预测的实施例在图16中,当前考虑的块1602在帧的一部分的块网格内被示出已通过幀内预测或帧间预测对相邻块进行了压缩。 因此存在与这些相邻的、已经被压缩的块相关联的帧内预测模式或帧间预测运动矢量,所述幀内预测模式是一种类型的位移矢量因此,合理的假设是根据使用的是帧内预测还是帧间预测而与当前考虑的块1602相关联的空间矢量或時间矢量将与和相邻的、已经被压缩的块相关联的空间矢量或时间矢量相似。事实上与当前考虑的块1602相关联的空间矢量或时间矢量可以被预测为如图16右边的矢量10以内加法教案1610所示的相邻块的空间矢量或时间矢量的平均。因此不是直接对运动矢量或帧间预测模式进行编码,H. 264标准是基于矢量预测以从实际计算的矢量1622减去预测矢量1622的方式计算差矢量帧之间的块的时间运动和帧内的空间一致性将被预期为是大致上相关的,并且因此预测矢量将被预期为接近地近似实际计算的矢量。因此差矢量的大小通常比实际计算的矢量小,并且因而可鉯使用更少的比特来对差矢量进行编码。再者与差宏块一样,可以通过将差矢量加到预测矢量来精确地重构实际计算的矢量一旦通过幀间预测或帧内预测生成差宏块,就根据预定的顺序将差宏块分解为 4X4差块通过整数变换对每个4X4差块进行变换,以生成对应的系数块然後对所述系数块的系数进行量化,以生成最终的量化系数序列帧内预测和帧间预测的优点是,差块的变换通常生成大量尾随零系数(trailing zero coefficient)这些尾随零系数完全可以通过随后的熵编码步骤而被有效率地压缩。图17图示说明差宏块的分解、整数变换和量化的一个实施例在该实施例Φ, 按图17中的差宏块的单元的数字标示所描述的顺序将差宏块1702分解为4X4差块 对每个4X4差块执行整数变换1708计算,以生成对应的4X4系数块1708 根据ζ字形序列化模式1710将变换的4X4块中的系数序列化,以生成线性的系数序列然后通过量化计算1712对所述系数序列进行量化,以生成量化系数序列1714视频信号压缩中的已经论述的步骤中的许多步骤是无损的。宏块可以从帧内预测方法或帧间预测方法以及对应的差宏块来无损地重新产苼还存在整数变换的精确逆变换。然而由于一旦被量化,原始系数的近似值可以通过量化方法的近似逆(被称为“重缩放”)来重新产生所以量化步骤1712是一种有损压缩的形式。由于不能从低分辨率色度数据恢复高分辨率色度数据所以色度平面抽取是另一个有损压缩步骤。量化和色度平面抽取事实上是H. 264视频压缩技术中的两个有损压缩步骤

图18分别提供H. 264视频压缩和视频解压缩中所使用的整数变换和逆整数变換的推导。符号“X” 1802表征4X4差块或残余块(比如图17中的)。由图18 中的第一组表达式1804定义离散余弦变换离散余弦变换是一种公知的类似于离散傅里叶的变换。如表达式1806所示离散余弦变换是基于矩阵乘法的运算。可以如图18中的表达式1808中所示的那样对离散余弦变换进行因子分解矩阵C 1810的元素包括有理数 “d”1812。为了有效率地估算离散余弦变换可以将该数近似为1/2,从而得到图18中的近似矩阵元素1814为了生成全整数元素洏乘以矩阵C的两行的这种估算生成图18中的整数变换1818和对应的逆整数变换1820。图19图示说明量化过程可以假设任何整数值在范围0-255中,作为简单嘚实施例认为用8个比特编码的数1902因此可以在0 (图19中的1904)和255 (图19中的1906) 之间的值范围中。如图19所示量化过程可以被用于通过范围0-255中的整数到范围0-7 Φ的整数的逆线性插值来仅用三个比特1908对8比特数1902进行编码。在这种情况下 用8比特编码的数表征的整数值0-31全部被映射到值0(图19中的1912)。连续范圍的 32个整数值被映射到值1-7因此,例如整数200(图19中的1916)的量化生成量化值 6(图19中的1918)。可以通过简单的乘法从3比特的量化值重新生成8比特的值鈳以将3比特的量化值乘以32,以生成原始的8比特数的近似然而,近似数1920可以仅具有值0、32、64、…、2M中的一个换句话讲,量化是一种数值抽取或者精度损失的形式重缩放过程或者乘法可以被用于重新产生估算被量化的原始值的数,但是不能恢复在量化过程中损失的精度通瑺,量化由公式1922表达并且量化的逆或者重缩放由公式1拟4表达。 这些公式中的值“Qstep”控制在量化过程中损失的精度在图19的左侧图示说明嘚实施例中,Qstep具有值“32”更小的Qst印值提供更小的精度损失,但也提供更少的压缩而更大的值提供更大的压缩,但也提供更大的精度损夨例如,在图19中所示的实施例中如果Qst印是128,而不是32则可以用一个比特对8比特数进行编码,但是重缩放将仅会生成两个值0和128还要注意的是,可以通过重缩放之后的另外的10以内加法教案步骤如箭头1拟6和 19 所指示的那样对缩放值进行垂直移位例如,在图19中所示的实施例中不是产生值 0、32、64、…、224,而是将16加到缩放值产生对应的值16、48、…、M0使得在缩放的垂直数轴的顶部的间隙不是那么大。在对残余块或差塊进行量化并且收集从熵编码上游的步骤生成为数据流的差矢量和其他对象之后将熵编码器应用于部分压缩的数据流,以生成熵编码的數据流所述熵编码的数据流包括以上参照图5所描述的NAL包的载荷。熵编码是无损编码技术该技术利用部分编码的数据流中的统计上的非均勻性。熵编码的一种公知的实施例是Morse代码Morse代码使用常常出现的字母(例如“E”和“T”)的单脉冲编码和不频繁遇到的字母 (例如“Q”和“Z” )嘚四脉冲或五脉冲编码。图20提供熵编码的数字实施例考虑包括观个符号的四符号字符串2002,每个字符选自字母“A”、“B”、“C”和“D”之┅如编码表格2004所示,该个28符号串的简单并且直观的编码将会是将四个不同的2比特代码之一分配给四个字母中的每个使用这种2 比特编码,生成等同于符号串2002的56比特编码的符号串2006然而,符号串2002的分析揭示了表格2010中所示的每个符号的百分比发生率“A”是到目前为止最频繁絀现的符号,并且“D”是到目前为止最不频繁出现的符号通过编码表格2012表征更好的编码,编码表格2012使用每个符号的可变长度的表征作為最频繁出现的符号的“A”被分配代码“0”。最不频繁出现的符号“B”和“D”分别被分配代码“110”和“111”使用这种编码生成仅使用47个比特的编码符号串2014。通常对于出现概率为P的符号,二进制熵编码应该生成-Iog2P个比特的编码符号尽管在图20中所示的实施例中对于明确具有不均勻的符号出现分布的长符号序列,编码长度的改进并不大但是熵编码生成相对高的压缩比。一种类型的熵编码被称为“算术编码”圖21A-B中提供简单的实施例。图21A-B 中图示说明的算术编码是一种上下文自适应编码方法的版本在该实施例中,8符号序列 2102被编码为小数点后位数為5位的小数值.04016(图21A中的2104)可以通过各种已知的二进制数字编码中的任何一种对小数值.04016进行编码,以生成二进制编码符号串 在该简单实施例Φ,在编码过程期间不断更新符号出现概率表格2106由于当根据在编码期间观察到的符号出现频率调整符号出现概率时,编码方法随时间动態地改变所以这提供上下文自适应。一开始由于缺乏更佳的一组初始概率,所以将所有符号的概率设置为 0.25在每个步骤,利用区间烸个步骤的区间用数轴(例如数轴2108)来表征。一开始 区间在0-1范围内变化。在每个步骤根据当前的符号出现频率表格中的概率将区间划分为㈣个分区。由于初始表格包含相等的概率0. 25所以在第一步中,区间被划分为四个相等部分在第一步中,对符号序列2102中的第一个符号“A”2110進行编码将与这个第一符号对应的区间分区2112选择为用于下一步的区间2114。此外由于遇到符号“A”,所以通过将符号“A”的出现概率增加0. 03並且将其余符号的出现概率降低0. 01来在下一版本的表格2116中调整符号出现概率下一个符号还是“A”2118,而所以再次选择第一区间分区 2119为用于第彡步的后一区间2120该过程继续,直到符号串中的所有符号已经被使用为止最后的符号“A”2U6选择在所述过程中计算的最后区间中的第一区間2128。注意的是区间的大小在每个步骤减小,并且通常需要指定更多数目的小数点位数可以通过选择最后区间21 内的任何值来对符号串进荇编码。值.04016落在该区间内并且因此,表征符号串的编码如图21B所示,可以通过使用初始的等值符号出现频率概率表格2140和初始间隔0-1 2142再次开始所述过程来重新产生原始符号串编码.04016被用于选择与符号“A”对应的第一分区2144。然而在与图21A中所示的正向过程中的步骤类似的步骤中, 编码.04016被用于选择每个后一区间的每个后一分区直到重新产生最后的符号串2148。尽管该实施例图示说明算术编码的一般概念但是由于该實施例假设无限精度算术,并且由于符号出现频率概率表格调整算法将快速导致不可工作的值所以它是假象的实施例。实际的算术编码鈈假设无限精度算术而是利用技术来调整区间,以给予在由任何特定计算机系统提供的精度内的区间指定和选择H. 264标准指定几种不同的編码方案,这些编码方案之一是上下文自适应算术编码方案查表过程被用于对由上游编码技术生成的频繁出现的符号串进行编码,以便利于随后的解压缩所述频繁出现的符号串包括部分压缩的数据流中所包括的各个元数据和参数。当根据H. 264技术对视频数据流进行压缩时隨后的解压缩可以得到某些类型的伪像。作为实施例图22A-B图示说明一种普遍出现的伪像和被用作解压缩的最后步骤以改善伪像的滤波方法。如图22A所示在没有滤波的情况下,解压缩的视频图像可以表现出成块状由于逐块地执行解压缩和压缩,所以各个块边界可以表征压缩/解压缩处理中的显著的不连续这些不连续导致所显示的解压缩的视频图像的视觉上可感知的成块。图22B图示说明H. 264解压缩中用于改善成块伪潒的去块滤波器方法在这种技术中,为了使跨块边界上的像素值梯度的不连续平滑沿着所有的块边界移动与以上参照图13A-D所论述的用于潒素值插值的滤波器类似的垂直滤波器2210和水平滤波器2212。边界每侧的三个像素值可以受去块滤波器方法的影响在图22B的右边,示出了去块滤波器应用的实施例 在该实施例中,滤波器2214被表征为包含块边界2216的任一侧的四个像素值的垂直列滤波器的应用为块边界的任一侧的第一彡个像素值生成滤波像素值。作为一个实施例从像素2218、2220、2221、2222和2223的预滤波值计算像素2218的滤波值χ*。为了重新建立跨边界的连续梯度滤波器趋向于对像素值进行平均或者使像素值变得模糊。图23概括了 H. 264视频数据流编码图23提供框图,并且因此提供编码过程的高级别的描述。嘫而该示图与前面的论述和前面所参照的图一起提供H. 264编码的基本概述。必要时揭示另外的细节,以描述本发明的特定视频编解码器实施方案应该注意的是,在视频编码和视频解码中存在众多在本文档的概述部分不能解决的细微要点、细节和特殊情况为了易于交流和簡化,这里的实施例大部分基于H. 264标准然而,绝不应该被理解为这里呈现的本发明限于H. 264应用官方H. 264说明书超过500页长。这些许多细节包括唎如,由各种边界状况引起的特殊情况、特定细节和在各种上下文相关情况下可以应用的可选的可替换方法考虑例如帧内预测。帧内预測模式取决于特定的相邻块中的像素值的可利用性对于没有邻域的边界块,不能使用所述模式中的许多种模式在某些情况下,为了使嘚可以使用特定的帧内预测模式可以对不可利用的相邻像素值进行插值或估算。编码过程中的许多令人感兴趣的细节与以下操作相关选擇最佳预测方法、量化参数以及进行其他这样的参数选择,以优化视频数据流的压缩H. 264标准不指定如何执行压缩,而是相反地指定编碼的视频数据流的格式和内容以及将如何对编码的视频数据流进行解压缩。H. 264标准还提供各种不同级别的不同计算复杂性其中高端级别支歭计算上更昂贵的、但是更有效率的另外的步骤和方法。目前的概述意在提供理解后面提供的本发明的各种实施方案的描述的充分背景泹是绝不意在构成H. 264视频编码和解码的完整描述。在图23中提供帧的流作为编码方法的输入。在该实施例中如上所论述的,帧被分解为宏塊或宏块分区以用于随后的处理。在第一处理步骤中尝试从一个或更多个参考帧对当前考虑的宏块或宏块分区进行帧间预测。当如步驟2308中所确定的那样帧内预测成功并且产生一个或更多个运动矢量时,则在求差步骤2310中从实际的原始宏块减去通过运动估计和补偿步骤2306产苼的预测宏块以生成对应的残余宏块,所述残余宏块通过求差步骤被输出到数据路径2312上然而,如果还是如步骤2308中所确定的那样帧间预測失败则开始帧内预测步骤2314来对宏块或宏块分区执行帧内预测,然后在步骤2310中从实际的原始宏块或宏块分区减去所述宏块或宏块分区鉯生成被输出到数据路径2312的残余宏块或残余宏块分区。然后通过变换步骤2316对残余宏块或残余宏块分区进行变换通过量化步骤2318进行量化,鈳能在步骤2320中进行重新排序以更有效率地编码并且然后在步骤2322中进行熵编码,以生成输出NAL包23 的流通常,压缩实施方式在平衡各种预测方法的成本、及时性和存储器使用的同时寻求利用提供考虑的宏块的最接近的预测的预测方法。可以使用用于应用预测方法的各种不同嘚排序和选择标准中的任意一种

继续跟随图23的实施例,在步骤2318中进行量化之后量化系数被输入到重排序阶段2320和熵编码阶段2322,并且还被輸入到逆量化器23 和逆变换步骤23 以重新产生残余宏块或残余宏块分区,所述残余宏块或残余宏块分区通过逆变换步骤被输出到数据路径2330上通过逆变换步骤输出的残余宏块或宏块分区通常与通过求差步骤2310输出到数据路径2312上的残余宏块或残余宏块分区不相同。回想量化是有損压缩技术。因此逆量化步骤23 生成原始变换系数的估算,而不是精确地再现原始变换系数因此,虽然逆整数变换将生成残余宏块或宏塊分区的精确副本但是如果将它应用于通过整数变换步骤2316生成的原始系数,则由于逆整数变换步骤23 被应用于重缩放系数所以在步骤 2328中僅生成原始残余宏块或宏块分区的估算。然后在10以内加法教案步骤2332中将估算的残余宏块或宏块分区加到对应的预测宏块或宏块分区以产苼宏块的解压缩版本。解压缩的、但是没有滤波的宏块版本通过数据路径2334被输入到帧内预测步骤2312以用于随后处理的块的帧内预测。对解壓缩的宏块执行去块滤波器2336的步骤以生成滤波的、解压缩的宏块,然后对所述宏块进行组合以生成解压缩的图像,解压缩的图像 然后鈳以被输入到运动估计和补偿步骤2306一个巧妙之处涉及解压缩的帧输入到运动估计和补偿步骤2306,并且解压缩的、但是没有滤波的宏块和宏塊分区输入到帧内预测步骤 2314回想,为了预测当前考虑的宏块或宏块分区中的值帧内预测与大部分的运动估计和补偿这二者都使用相邻塊,在空间预测的情况下使用当前帧中的相邻块,或者在时间帧间预测的情况下使用前帧和/或后帧中的相邻块但是,考虑压缩的数据鋶的接收者接收者将不可以访问最初的原始视频帧2302和2304。因此在解压缩期间,编码的视频数据流的接收者将使用先前解码的或解压缩的宏块来用于预测随后解码的宏块的内容如果编码过程使用原始视频帧进行预测,则编码器将使用与解码器随后可用的数据不同的数据进荇预测这将在解码过程中引起显著的误差和伪像。为了防止这种情况编码过程产生用于在帧间预测步骤和帧内预测步骤中的解压缩的宏块和宏块分区以及解压缩的且经过滤波的视频帧,从而帧内预测和帧间预测使用相同的数据对任何解压缩过程将会可用的宏块和宏块分區的内容进行预测所述任何解压缩过程可以仅依赖于编码的视频数据流进行解压缩。因此通过数据路径2334被输入到帧内预测步骤2314的解压縮的、但是没有经过滤波的宏块和宏块分区是随后从其预测当前宏块或宏块分区的相邻块,并且运动估计和补偿步骤2306将解压缩的且经过滤波的视频帧用作参考帧以用于处理其他帧。图M以与图23中所用的框图方式类似的框图方式图示说明示例性的H. 264视频数据流解码过程解压缩仳压缩简单得多。NAL包流M02输入到熵解码步骤M04中熵解码步骤M04应用逆熵编码来产生量化系数,重排序步骤M06将所述量化系数重新排序为与通过图23Φ的重排序步骤2320执行的重排序互补熵解码流中的信息可以被用于确定最初用其对数据进行编码的参数,所述参数包括在每个块的压缩期間是利用帧内预测还是利用帧间预测的情况通过步骤对08,该数据允许在步骤MlO中选择帧间预测或者在步骤 2412中选择帧内预测以生成沿着数據路径M14提供给10以内加法教案步骤M16的宏块和宏块分区的预测值。在步骤M18中逆量化器对重新排序的系数进行重新缩放并且在步骤M20中应用逆整數变换来生成残差或者残余宏块或宏块分区的估算,在10以内加法教案步骤M16中将所述估算加到基于先前解压缩的宏块或宏块分区而产生的预測宏块或宏块分区10以内加法教案步骤生成解压缩的宏块或宏块分区,以生成解压缩的视频帧MM-2426在步骤M22中对这些解压缩的宏块或宏块分区應用去块滤波器,以生成最后解压缩的视频帧解压缩过程基本上与图23中所示的压缩过程的下部分等同。第二小节根据本发明的用于解决複杂计算仵各的并行集成电路设计的原理实现执行H. 264压缩和解压缩的计算引擎的问题是图示说明本发明的示例性问题域在本小节中,用于開发用于执行H. 264压缩和解压缩的并行流水线式集成电路计算引擎的原理被描述为表征本发明实施方案的计算引擎设计的整体方法的实施例夲发明绝不限于H. 264实施方式。实现执行在第一小节中所论述的H. 264视频压缩和解压缩的视频编解码器的一种方式是用软件对编码和解码过程进行編程并且在通用计算机上执行程序。图25是通用计算机的非常高级的示图计算机包括处理器2502、存储器2504、存储器/处理器总线 2506和桥2508,存储器/處理器总线2506互连处理器、存储器桥将处理器/存储器总线 2506与高速数据输入总线2510和内部总线2512互连,内部总线2512连接第一桥2508与第二桥2514第二桥又通过高速通信媒介2520连接至各个装置。这些装置之一是控制大容量储存装置2520的I/O控制器2516考虑实现视频编解码器的软件程序的执行。在该实施唎中软件程序储存在大容量储存装置2520上,并且根据需要被分页到存储器2504中处理器2502从存储器提取软件程序的指令,以用于执行因此,烸个指令的执行涉及至少一个存储器提取并且还可以涉及处理器存取存储器中(并且最终在大容量储存装置2520中)的储存数据。通用计算机系統中的实际计算行为的很大一部分致力于在大容量储存装置、存储器和处理器之间传输数据和程序指令此外,关于以高数据传输速率生荿大容量数据的视频摄像机或其他数据输入装置在视频摄像机和处理器之间可能存在对于存储器和大容量储存装置这二者的大量竞争。這种竞争可以持续达到一般计算机系统内的各个总线和桥的饱和为了使用视频编解码器的软件实施方式来实现实时视频压缩和解压缩,計算机所消耗的可用计算资源和功率的非常大的一部分致力于数据传输和指令传输而不是实际上执行压缩和解压缩。并行处理方法可以被预期为提高软件实现的视频编解码器的计算吞吐量的可行方法然而, 在一般计算系统中适当地分解问题以充分利用多个处理部件远非微不足道的任务,并且可能不会解决计算机系统内对于存储器资源的竞争和数据传输带宽的耗尽或者可能甚至使计算机系统内对于存儲器资源的竞争和数据传输带宽的耗尽恶化。可被考虑的下一种实施方式将是使用各种片上系统(system-on-a-chip)设计方法中的任意一种将软件实施方式移箌硬件上片上系统实现的视频编解码器将提供优于执行视频编解码器的软件实现的通用计算机系统的某些优点。具体地程序指令可以儲存在板上、闪存中,并且各种计算步骤可以在逻辑电路中实现而不是被实现为由处理器顺序执行指令。然而视频编解码器的片上系統实现本质上一般仍然是按顺序的,并且不提供高吞吐量的并行计算方法图沈图示说明视频压缩和解压缩过程的许多方面,当考虑这些方面时这些方面提供对实现根据本发明的视频编解码器的计算效率高得多的新方法的深刻理解。首先 264标准已经提供服从并行处理解决方案的高级问题分解。如上所论述的每个视频帧沈02被分解为宏块沈04-2613,并且为了在前向方向上对视频帧进行压缩对宏块和宏块分区执行基于宏块的或者基于宏块分区的操作,并且反向地对宏块进行解压缩以重构解压缩的帧。如上所论述的在编码过程期间和解码过程期間帧之间和宏块之间肯定存在相关性。然而如图沈所示,宏块与宏块相关性和宏块分区与宏块分区相关性通常是前向相关性序列沈13的開始帧中的开始宏块不取决于后面的宏块,并且可以完全基于其自己的内容进行压缩当通过宏块的光栅扫描处理,压缩逐帧地继续时後面的宏块可以取决于先前压缩的帧中的宏块,特别是对于帧间预测并且可以取决于同一帧内的先前压缩的宏块, 特别是对于帧内预测然而,相关性受到很好的约束首先,相关性受限于序列、空间和时间中的最大距离沈20换句话讲,只有当前帧内的相邻宏块和相对少量参考帧中以当前帧的位置为中心的搜索区域内的宏块可能对压缩任何给定的宏块有贡献如果相关性在时间、 空间和序列中没有受到很恏的约束,则将需要非常大的存储器容量来容纳压缩连续宏块所需的中间结果这样的存储器是昂贵的,并且随着存储器管理任务的复杂性和大小增大快速开始消耗可用的计算带宽。另一种类型的约束是对于给定的宏块2622,可能仅存在相对少的、最多数目的相关性这种約束也有助于限制存储器的必要大小,并且有助于对计算复杂性的限制随着相关性数目增长,计算复杂性可以成几何地或者成指数地增長此外,当处理实体之间的必要通信被很好地限制时对于复杂计算问题的并行处理解决方案才是可行的和可管理的。否则结果在分離的处理实体之间的通信快速压垮可用的计算带宽。视频编解码器问题的另一个特点是前向压缩方向或者反向解压缩方向的每个宏块的處理是逐步过程沈对。如上所论述的这些按顺序的步骤包括帧间和帧内预测、残余宏块的产生、 主变换、量化、对象重排序和熵编码。這些步骤是分离的并且一般来讲,一个步骤的结果被直接进给到后面的步骤因此,正如可以以沿着组装线逐步制造汽车或电器的方式┅样可以按组装线方式处理宏块。在许多不同的问题域内可以存在参照图沈所论述的视频编解码器实现的激励根据本发明的视频编解碼器的大规模并行处理实施方式的特点。在许多情况下可以以以许多不同的方式分解计算问题。为了将本发明的方法应用于任何特定问題作为所述方法的第一步,需要选择产生以上参照图26所论述的特点中的一些或全部的问题分解例如, 可以以可替换的、不利的方式分解视频数据流压缩问题例如,可替换的分解将是分析整个视频数据流或者帧的大部分块以在宏块处理之前进行运动检测。在某些方面这种较大粒度方法可以对运动检测和基于运动检测的压缩提供显著的优点。然而这种可替换的问题分解需要容量很大的内部存储器,並且运动检测步骤将会太复杂且计算效率太低以至于不能容易地在易计算的和可管理的数据对象的逐步处理内适应。再次强调的是,盡管在实现视频编解码器的背景下描述本发明但是本发明的方法适用于宽泛范围的效率高的被设计来解决多种不同计算问题的计算引擎。对于可以被分解和用公式表示以提供参照图26所论述的特点的那些问题本发明的方法提供计算带宽、 成本、功耗的效率以及激励和约束計算引擎、装置和系统开发的其他重要效率。图27图示说明根据本发明的方法的视频编解码器的单集成电路实现的基本特征单集成电路内實现的那些部件在大的虚线块2702内被示出。视频编解码器实施方式另外使用外部存储器2704和视频摄像机2706的外部光学器件和电子器件视频摄像機系统的另外的外部部件包括电源、各种另外的机电部件、壳体、用于外部装置的互连部件和其他这样的部件。如以上参照图4所论述的視频摄像机将数据流和电子时序信号输入2708提供给视频编解码器。数据流被引导到存储器2704和集成电路内的微处理器控制器部件2710微处理器控淛器部件2710可以访问视频摄像机的时序信号输出,以协调视频编解码器的行为存储器2704是双端口的,以使得当视频数据流从数码视频摄像机2706進入时可以将先前储存的原始视频数据从外部存储器提取到内部高速缓冲存储器2712中,以提供给若干处理元件中的每个在图27中,示出了陸个处理元件但是在以下所论述的特定实施方案中,事实上存在更多数目的处理元件处理元件的数目是问题域确定的且设计选择的参數。一种实施方式的完全分开的处理元件可以可替换地在另一种实施方式中被组合在一起在图27的实施例中,微处理器控制器2710执行储存在閃存2720中的指令微处理器控制器通过各个信号路径与存储器2722、高速缓冲存储器27 、系统时钟27 和多个处理元件27 通信。在集成电路内大量数据鋶动通过对象总线2730发生。对象总线将视频数据相关的对象(主要是宏块和宏块分区)传递到处理元件另外,对象总线还可以传递共享的参数囷元数据包括描述宏块和宏块分区对象以及当前帧和视频数据流内的更高级结构的对象。在该实施例中每个处理元件执行视频数据对潒的逐步处理的一个步骤,所述视频数据对象主要是宏块和宏块分区输入到处理元件的视频对象的类型和通过处理元件输出的视频和数據对象的类型取决于处理元件所实现的压缩过程中的特定步骤。处理元件执行被执行来压缩视频数据的大量计算处理方法是非常流水线式、组装线式的方法,在该方法中给定的原始数据宏块进入第一处理元件2714,并且沿着处理元件流水线中的后面的处理元件序列以逐步的方式被变换总体组装线处理由相对低频时钟信号实现的计算步骤时序信号控制。每个处理元件内的处理步骤由相对高频时钟信号控制視频编解码器的单集成电路实施方式的一个重要方面是低频计算步骤时序信号提供用于微处理器控制器的时序信号,但是不提供组装线过程的绝对控制一般来讲,应该在单个低频计算步骤时序信号间隔内执行逐步的高级处理中的每个步骤然而,可能存在处理元件不能在┅个时间间隔内完成其任务的情况这些情况通过由微处理器控制器2710提供的高级控制逻辑来检测,在这种情况下微处理器控制器可以延遲开始后面的计算步骤,使得即使处理元件的任务已经超过低频时序间隔处理元件也可以完成其任务。因而微处理器控制器控制提供視频压缩和视频解压缩过程的总控制的重要级别的灵活性。如果没有提供这种灵活性则需要将低频间隔至少设置为系统内的任何处理元件所需的最大可能的时间间隔,以完成处理元件可能会遇到的计算上最复杂的任务在最复杂任务只是不频繁发生(例如每1,000 个宏块中发生┅次)的情况下则在处理其余的999个计算需求较小的宏块期间,处理元件将在低频时间间隔内的大部分时间段内处于空闲通过提供总体组裝线过程的更灵活的微处理器控制器控制,可以将低频时序信号间隔设置为合理值所述合理值指定在其期间大部分宏块可以被处理的时間间隔,并且可以实时地以上下文相关方式调整低频时序信号间隔以适应相对不频繁的计算密集的宏块。在该实施例中板上对象高速緩冲存储器2712提供不同类型的灵活性。高速缓冲存储器提供用于数据对象的动态缓冲所述动态缓冲可以容纳在视频压缩中的特定点所需的鈈同量的数据。像由微处理器控制器控制提供的时序弹性一样灵活的高速缓冲存储器允许在有效率地处理存储器密集存取程度较小的一般处理任务的同时适应特定的上下文相关的存储器需求。由时钟27 提供的更高频时序间隔允许在处理元件内进行时钟控制的处理所述处理被实现为逻辑电路,而不是被实现为微处理器控制器执行的指令正是这种时钟控制的、基于逻辑电路的实施方式提供了视频编解码器的總体单集成电路实现的大的计算带宽。如果视频压缩和视频解压缩过程的大部分通过处理器上的指令执行来执行 则总体计算开销的大部汾将被指令提取周期消耗。对象存储器控制器负责在板上对象高速缓冲存储器和对象存储器之间交换对象最后,对象总线2730便利基于对象鋶水线的实施方式如果宏块和宏块分区作为比特流或字节流在集成电路内被传输,则对于将宏块和宏块分区传送到处理元件和从处理元件传送宏块和宏块分区将需要甚高频通信处理。通过提供宽的高容量对象总线可以以计算和时间效率高的方式从高速缓冲存储器传递被发送到每个处理元件的数据。总而言之根据本发明的复杂计算任务的实施方式涉及实施问题特定的计算引擎的单集成电路的设计和制莋。计算引擎包括微处理器控制器所述微处理器控制器提供集成电路内的处理的高级控制,而且还提供执行大量计算过程的大量并行流沝线式处理元件处理元件并行操作,以提供非常高的计算带宽并且通过对象总线和中间处理元件数据路径被提供以对象为单位的数据,所述对象例如宏块和宏块分区是处理元件对其操作的自然对象。处理元件中的高频时序由系统时钟提供而低频高级计算步骤控制由微处理器控制器提供,进而提供计算任务的组装式处理的总时序的灵活性以提高计算引擎的效率和吞吐量。图28和四中示出了视频编解码器的可替换实施方案图28图示说明本发明的实施方案,在该实施方案中集成电路观02包括存储器观04,存储器观04在图27中所图示说明的实施例Φ是外部的图四图示说明本发明的可替换实施方案,在该实施方案中数码视频摄像机被包括在组合的视频摄像机和视频编解码器的单集成电路实施方式中。图30-32图示说明根据本发明的视频编解码器的单集成电路实施方式内的总时序和数据流动在完成前一步骤时,微处理器控制器检查处理实体、高速缓冲存储器并且如果需要的话,还检查存储器以确保执行下一个高级计算步骤所需的所有数据对象可用於传输到需要这些数据对象的处理元件。因此微处理器控制器检查以确保数据对象可获得,并且当需要时便利高速缓冲存储器中数据對象的编组,以供处理元件在下一个高级计算步骤中进行存取并且检查每个处理元件已生成需要提供给另一个处理元件以用于下一个高級计算步骤的任何数据,并且当前正在存储这些数据这里再次注意的是,微处理器控制器控制提供集成电路的总控制的灵活性在许多凊况下,是一个特定数据对象还是多个特定数据对象需要被准备来在下一个步骤中进行传输取决于该步骤在总视频编码任务中的步骤序列Φ的位置作为一个实施例,视频流的开始参考帧的开始宏块首先被第一处理元件处理第一处理元件没有结果提供给后面的处理元件。莋为另一个实施例对于帧间预测,不对视频流内的参考帧进行处理因此,在任何给定的低频时序间隔中处理后面的高级计算步骤所需的数据对象可以以上下文相关方式改变。而且在某些高级计算步骤中,处理元件中的一个或更多个可以不是工作状态的 处理元件自身内的上下文相关的且随时间改变的控制的实施复杂性将不期望地需要复杂处理元件实现。然而通过用指令执行的微处理器控制器提供哽高级别的控制,许多级别的决策和时间相关的且上下文相关的控制上的变化可以用固件而不是用高度复杂的逻辑电

25路来实现。在该实施例中一旦所有的数据对象可用于下一个处理步骤,并且所有的处理元件准备好开始执行下一个步骤如图31中所示的微处理器控制器就產生使所有处理元件开始处理下一个步骤的启动信号。如图31所示在下一个步骤开始时,数据对象被传送给需要它们的处理元件然后,洳图32所示处理元件执行它们各自的任务,产生用于后面的步骤的输出并且向高速缓冲存储器请求在后面的步骤中将会需要的数据对象。在图32中图示说明的当前高级计算步骤的处理完成时达到图30中所示的状态,并且然后使处理元件准备好开始后面的处理步骤再次,应該强调的是在每个低频时间间隔期间,每个处理元件对与正被其他处理元件处理的数据对象不同的数据对象执行其计算任务例如,在囸通过整数变换对一个残余宏块进行变换的同时对另一个宏块进行分析以进行帧间预测或帧内预测。总而言之表征本发明的一个实施方案的计算引擎的高级概念部件包括(1)问题分解,所述问题分解导致合理大小的计算对象(每个计算对象具有对另外的数据的有界相关性)、已經处理的计算对象和后面处理的计算对象的逐步处理并且每个计算对象基本上包括数据结构值,例如一维、二维或更高维阵列的元素的徝或者多字段记录或结构中的字段的值;( 组装线式处理元件系列所述处理元件每个执行计算对象的逐步处理的高级步骤,所述高级步骤並行地对不同的计算对象执行;C3)板上对象高速缓冲存储器所述板上对象高速缓冲存储器缓冲足够的计算对象,以使得一开始可以将用于沿着处理元件系列处理计算对象的相关数据和对象从存储器加载到对象高速缓冲存储器中而在计算对象的逐步处理期间对存储器不进行偅复存取;(4)对象总线,所述对象总线使得处理元件可以在对象级存取事务中存取储存在对象高速缓冲存储器中的对象;( 低频时钟周期和一個或更多个高频时钟周期所述低频时钟周期用于控制逐步处理,所述高频时钟周期用于处理元件对于步骤计算的小粒度控制;(6)微处理器控制器或其他控制子部件用于协调处理元件的高级步骤执行,并且使处理元件的高级步骤执行同步;以及(7)对象存储器控制器用于将对潒从存储器加载到对象高速缓冲存储器,并且用于将对象高速缓冲存储器中的对象储存到存储器中对于某些问题域,计算引擎的单集成電路实施方式提供制造、芯片封装、装置占用空间、功耗、计算延迟方面的优点和其他这样的优点对于其他问题域,总体计算引擎可以被实现为两个或更多个分离的计算引擎其中问题域被分割为更高级别的子域,每个子域由分离的计算引擎执行子域进一步被分割为任務,每个任务由计算引擎内的处理元件执行该方法还可以提供制造优点以及提高的模块性。对于某些另外类型的问题域为了例如利用巳经开发的集成电路,可以将计算引擎的单集成电路实施方式与另外的集成电路组合以实现一个装置。在表征本发明的一个实施方案的H. 264壓缩和解压缩计算引擎的特定实施例中 计算对象包括如以上参照图6所论述的宏块和宏块分区、如以上参照图12所论述的运动矢量和描述宏塊和宏块分区的视频流上下文的各种数据和参数对象。处理元件包括帧间预测处理元件、帧内预测处理元件、运动估计处理元件、直接整數变换处理元件、逆整数变换处理元件、量化和缩放处理元件、去量化和去缩放处理元件、熵编码处理元件和熵解码处理元件对象高速緩冲存储器储存以上提及的类型的对象,包括宏块和宏块分区对象总线在处理元件和对象高速缓冲存储器之间传输宏块和宏块分区,减尐处理元件执行面向字节的或者面向字的通信协议来存取计算对象的需要低频时钟周期通常控制由组装线式处理元件系列进行的逐步宏塊处理,并且更高频率的时钟周期控制由处理元件进行的计算处理微处理器控制器执行逐步宏块处理的总控制和同步,确保在处理元件Φ开始下一个处理步骤之前执行所述下一个处理步骤的每个所述处理元件可获得需要的对象。最后存储器控制器操作来在大容量随机存取存储器和对象高速缓冲存储器之间交换计算对象(包括宏块和宏块分区)。第三小节根据本发明的一个实施方案的被实现为单集成电路的H. 264視频编解码器在这个结论性的小节中对表征本发明的一个实施方案的计算引擎的特定实施例进行描述。再次强调的是,本发明的实施方案可以被设计和实现来执行大量不同计算任务中的任何一个包括图像处理任务、3维媒体压缩和解压缩、各种类型的计算滤波、模式匹配和神经网络实施方式。以下的H. 264视频编解码器计算引擎的论述的意图是提供本发明的一个实施例的详细说明而并不意图将所附的权利要求的范围限于被设计来执行H. 264视频压缩和/或解压缩的计算引擎、一般的视频应用或者任何其他特定问题域。这个特定实施方式是视频编解码器的单集成电路实施方式可替换的实施方案可以利用多计算引擎方法,或者可以将单集成电路计算引擎与另外的集成电路组合图33A-B提供根据本发明的视频编解码器的单集成电路实施方式的框示说明。鉴于参照图27-32和图23-24的以上论述图33A中提供的示图的大部分基本上是自描述的。视频编解码器的单集成电路实施方式包括分离的用于运动估计的处理元件3302、 用于帧内和帧间预测的处理元件3304、用于残余块计算的处理元件3306、用于直接整数变换的处理元件3308、用于量化和缩放的处理元件3310、用于熵编码的处理元件3312、用于熵解码的处理元件3313、用于反量化和反缩放嘚处理元件3314、用于逆整数变换的处理元件3316和用于去块滤波器的处理元件3318处理元件3302对应于图23中的块2306,处理元件3304对应于图23中的块2306和2314处理元件3306对应于图23中的操作2310,处理元件3308对应于图23中的块2316处理元件3310对应于图23中的块2318,处理元件 并且处理元件3318对应于图23中的块2336。注意的是如参照图5所描述的视频编解码器可以从视频摄像机接收原始视频数据3320,并且生成作为输出的压缩的视频数据3322或者可以接收作为输入的压缩的視频数据33M,并且生成作为输出的原始视频数据3326可以将图23中的重排序器块2320合并在视频编解码器实施方式的处理元件3310和3314中或者处理元件3312和3313中。还要注意的是视频存储器控制器3330在单集成电路实施方式中负责将输入视频数据引导到外部存储器3332和在视频高速缓冲存储器、外部存储器和对象总线3340之间交换数据对象。图3 提供图33A 的关键注意的是,对象总线3340可以被认为包括分离的亮度对象总线、色度对象总线、运动矢量對象总线、参数/数据对象总线和内部微处理器控制器总线图33A提供关于本发明的一个实施方案中的每个处理元件的输入和输出的细节, 并苴由此提供每个处理元件与对象总线、视频高速缓冲存储器和视频存储器控制器的交互视频存储器控制器3330将视频数据从摄像机路由到外蔀存储器。微处理器控制器3342代表处理元件向视频存储器控制器发起存储器请求所述请求由视频存储器控制器从外部存储器存取请求的数據对象并且将请求的数据对象储存在视频高速缓冲存储器中来满足。 因此在视频存储器控制器内执行与将视频数据信号分割为帧、宏块囷宏块分区相关联的计算开销中的大部分,大规模并行处理的另一个方面由视频编解码器的单集成电路实施方式提供复用器3344在视频压缩期间提供从量化处理元件3310到去量化和去缩放处理元件3314的路径,并且在视频解压缩期间提供从熵解码器3313到去量化和去缩放处理元件 3314的路径運动估计处理元件3302对亮度宏块和宏块分区进行操作,同时其余的处理元件对亮度和色度宏块和/或宏块分区这二者进行操作图33A中的SPI端口 3350是尣许通过SPI接口信号对闪存进行写和/或读的串并行接口。图34图示说明根据本发明的一个实施方案的视频编解码器的单集成电路实施方式的总系统时序和同步如上所论述的,短间隔时钟脉冲信号3402在宏块和宏块分区的组装线式处理中的每个总步骤的处理期间控制处理元件内的执荇步骤如上所论述的,处理元件在从微处理器控制器接收到启动信号3404时开始执行下一个高级计算步骤并且在完成每个高级计算步骤时苼成完成信号脉冲;3406。如上所论述的长间隔时钟脉冲信号 3410通常通过微处理器控制器沿着处理元件的组装线控制宏块和宏块分区的高级逐步流水线式处理。一般来讲在每个低频间隔3412期间,每个处理元件执行处理中的下一个总步骤然而,还是如上所论述的在某些情况下,由于处理元件在从处理器接收到启动信号时开始处理每个高级计算步骤所以在处理元件未能完成其任务的情况下,下一个处理步骤可能不会在低频时钟信号从低转变到高时开始图35提供示出各种类型的对象的实施例的表格,所述对象在根据本发明的视频编解码器的单集荿电路实施方式中可以沿着数据对象总线从视频高速缓冲存储器被传送到处理元件该表格示出两个主要类别的对象(1)视频对象3502 ;和( 数据对潒3504。 视频对象包括如以上参照图3所论述的来自亮度平面和色度平面这二者的宏块和宏块分区以及如以上参照图12所论述的运动矢量对象数據对象包括各种类型的信息,所述信息关于当前处理的宏块或宏块分区的当前上下文、宏块或宏块分区所属的片、其中包括宏块或宏块分區的帧的性质和其他这样的信息对象还可以包含以上参照图19所论述的参数信息,例如量化参数通过利用对象总线3340使计算带宽显著增大,而不是要求处理元件执行基于字节的或者基于字的协议以从存储器高速缓存和存储器存取数据对象所述对象总线3340被定制来提供作为分離对象的处理元件所需的对象。宽的数据对象总线在集成电路内提供极其高的内部数据传输速率图36A-B在抽象层次图示说明表征本发明的一個实施方案的视频编解码器集成电路实施方式内的处理元件的操作。如上所论述的为了低频高级步骤处理周期的总体同步,处理元件从微处理器控制器接收启动脉冲3602并且将完成脉冲3604输出到微处理器控制器。处理元件从流水线中的前面的处理元件和/或对象总线接收一个或哽多个对象和其他数据3606并且将一个或更多个对象和/或其他数据3608输出到处理元件流水线中的下一个处理元件和/或对象总线。当然流水线Φ的第一处理元件不从前面的处理元件接收对象,并且流水线中的最后的处理元件从视频编解码器的集成电路实施方式生成输出 而不是將对象或其他数据输出到处理元件。如上所论述的处理元件接收用于控制处理元件内的逻辑电路的高频时钟脉冲信号,以执行复杂计算任务注意的是,处理元件通过流水线存储器沿着流水线传递数据和结果流水线存储器与对象总线完全不同。图36B图示说明处理元件的同步和时序控制如上所论述的,处理元件根据高频时钟信号3620执行计算任务当接收到启动信号脉冲3622时,任务开始并且处理元件通过完成信号脉冲36M宣告任务完成。图37图示说明表征本发明的一个实施方案的运动估计处理元件运动估计处理元件接收作为输入的与当前宏块对应嘚亮度对象,外加表征来自储存在存储器中的参考帧的参考宏块的一个或更多个亮度对象运动估计处理元件生成作为输出的运动矢量对潒。图38图示说明表征本发明的一个实施方案并且包括一对处理元件的帧内预测和帧间预测处理元件帧内预测处理元件3802从相邻块接收亮度囷色度水平和垂直像素矢量以及描述最相邻块的数据,并且生成作为输出的分别用于整个宏块或16个4X4宏块分区的四种16X16帧内预测模式或九种4X4帧內预测模式之一对每个色度宏块,生成四种色度帧内预测模式之一与帧间预测一样,帧内预测处理元件选择提供当前考虑的宏块的最佳估计的模式为了找到提供最有效预测的特定分割,根据视频编解码器所实现的压缩复杂性的水平如参照图6所论述的,可以以许多不哃的方式分割宏块帧间预测处理元件3804接收参考宏块、亮度宏块和色度宏块这二者以及运动矢量,并且产生作为输出的预测宏块或宏块分區帧内和帧间预测处理元件(图33A中的3304)的两处理元件实施方式图示说明一个设计参数。处理元件的数目和复杂性可以根据许多不同设计考虑鉯及由处理元件执行的任务的复杂性而变化例如,当需要甚高带宽实施方式时可能必须在处理元件流水线内将任何特定任务实现为若幹并行处理元件。在较低带宽实施方式中可以将这些并行处理元件一起组合在单个处理元件中。在帧内和帧间预测处理元件的实施方式Φ揭示另一个重要的要点如上所论述的,整个H. 264标准包括各种级别的压缩和解压缩较高级别提供更好的压缩,但是代价是计算复杂性更夶视频编解码器的特定单集成电路实施方式可以实现较高级别的标准以及中间和较低级别的标准,并且实际操作可以通过输入到单集成電路且储存在闪存中的参数来控制因此,单集成电路实施方式可以提供根据多个参数的灵活操作图39示出表征本发明的一个实施方案的熵编码的处理元件的框图。该处理元件接收亮度对象、色度对象和运动矢量对象以及各种类型}

我要回帖

更多关于 10以内加法教案 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信