存储器子系统的制作方法

文档序号:6768433阅读:162来源:国知局
专利名称:存储器子系统的制作方法
技术领域
本发明涉及电子存储器,并且具体地,涉及高度并行流水线式集成电路计算引擎内的或者被高度并行流水线式集成电路计算引擎存取的存储器子系统,或者在各种不同类型的电子装置中的任一个内使用的或者被各种不同类型的电子装置中的任一个存取的存储器子系统。
背景技术
计算机器正经历快速发展。早期的电子计算机通常是逐个执行指令流的完全顺序处理机器,所述指令一起构成计算机程序。多年来,电子计算机通常包括单个主处理器,所述主处理器能够快速执行相对小的一组简单指令,所述简单指令包括存储器提取、存储器储存、运算和逻辑指令。通过将计算任务的解决方案编程为一组指令、然后在单处理器计算机系统上执行程序来解决该任务。在电子计算机发展的相对早期,各种附属和支持任务开始从主处理器被移到专用的辅助处理部件。作为一个实施例,开发了分离的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和306。Y'平面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亮度块中所包含的数据值。类似地,单元 1010-1013表征正被预测的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块中的中间四个像素1304-1307之间的更高分辨率的插入值的计算。图13A的右边图示说明扩展1310。在本实施例中,在两个维度中对像素值1304-1307已经进行了空间上的扩展,并且已经添加了 21个新的单元,以形成在拐角处具有原始像素值1304-1307的 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帧1416-1419可以包含通过帧间预测从一个或两个其他B帧、P帧或I帧预测的块。在图14C中,B帧1418包含从P帧 1410中的块1422被帧间预测的块1420。B帧1416包含从B帧1417中的块1似8和参考帧 1402中的块1430这二者被预测的块1似6。B帧可以最佳地利用帧间预测,并且因此,实现由于帧间预测而导致的最高压缩,但是也具有可以在解码过程中引起各种误差和异常的更高的可能性。当块(例如块1426)是从两个其他块被预测时,该块被编码为两个不同的参考帧标识符和运动矢量,并且该预测块被生成为从其被预测的两个预测块中的像素值的可能的加权平均。如以上所提及的,如果帧内预测和/或帧间预测完全精确,则可以获得极其高的压缩比。将块表征为一个或两个运动矢量和帧偏移肯定比表示为256个不同的像素值简明得多。将块表征为13种不同的帧内预测模式之一甚至更有效率。然而,如通过大量不同的可能的宏块值可意识到的,就作为256字节编码的数值的宏块值而论,帧内预测和帧间预测均不可能生成视频帧内的块的内容的精确预测,除非其中包含视频帧的视频信号不包含噪声,并且几乎不包含信息,所述视频信号例如均勻的、无变化的、纯色背景的视频。然而, 即使帧内预测和帧间预测不能精确地预测宏块的内容,一般来讲,它们常常也可以相对接近地估算宏块的内容。这种估计可以被用于产生差宏块,所述差宏块表征实际宏块与对于该宏块通过帧内预测或帧间预测而获得的预测值之间的差。当预测令人满意时,结果得到的差块通常仅包含少量或者甚至零个像素值。图15图示说明差宏块的产生的实施例。在图15的实施例中,宏块被示为三维图表,在所述三维图表中,宏块的二维表面上方的柱的高度表征宏块内的像素值的幅度。在图 15中,当前考虑的帧内的实际宏块被示为顶部的三维图表1502。中间的三维图表表征通过帧内预测或帧间预测而获得的预测宏块。注意的是,预测宏块1504的三维图表与实际宏块 1502完全相似。图15表征帧内预测或帧间预测已经产生实际宏块的非常接近的估算的情况。从实际宏块减去预测宏块产生差宏块,所述差宏块在图15中被示为较下面的三维图表 1506。尽管图15是最佳情况预测的夸大,但是它图示说明与实际的最终预测的宏块相比, 差宏块通常不仅包含幅度更小的值,而且还常常包含更少的非零值。还要注意的是,可以通过将差宏块加到预测宏块来完全恢复实际宏块。当然,预测的像素值可以超过或者低于实际像素值,从而差宏块可以包含正值和负值这二者。然而,作为实施例,原点的移位可以被用于生成全部正值的差宏块。正如可以从与宏块空间上相邻和/或时间上相邻的块中的值被预测的该宏块内的像素值一样,也可以预测通过帧间预测产生的运动矢量和通过帧内预测产生的模式。图 16图示说明运动矢量和帧内预测模式预测的实施例。在图16中,当前考虑的块1602在帧的一部分的块网格内被示出。已通过帧内预测或帧间预测对相邻块1604-1606进行了压缩。 因此,存在与这些相邻的、已经被压缩的块相关联的帧内预测模式或帧间预测运动矢量,所述帧内预测模式是一种类型的位移矢量。因此,合理的假设是,根据使用的是帧内预测还是帧间预测而与当前考虑的块1602相关联的空间矢量或时间矢量将与和相邻的、已经被压缩的块1604-1606相关联的空间矢量或时间矢量相似。事实上,与当前考虑的块1602相关联的空间矢量或时间矢量可以被预测为如图16右边的矢量加法1610所示的相邻块的空间矢量或时间矢量的平均。因此,不是直接对运动矢量或帧间预测模式进行编码,H. 264标准是基于矢量预测以从实际计算的矢量1622减去预测矢量1622的方式计算差矢量。帧之间的块的时间运动和帧内的空间一致性将被预期为是大致上相关的,并且因此,预测矢量将被预期为接近地近似实际计算的矢量。因此,差矢量的大小通常比实际计算的矢量小,并且因而,可以使用更少的比特来对差矢量进行编码。再者,与差宏块一样,可以通过将差矢量加到预测矢量来精确地重构实际计算的矢量。一旦通过帧间预测或帧内预测生成差宏块,就根据预定的顺序将差宏块分解为 4X4差块,通过整数变换对每个4X4差块进行变换,以生成对应的系数块,然后对所述系数块的系数进行量化,以生成最终的量化系数序列。帧内预测和帧间预测的优点是,差块的变换通常生成大量尾随零系数(trailing zero coefficient),这些尾随零系数完全可以通过随后的熵编码步骤而被有效率地压缩。图17图示说明差宏块的分解、整数变换和量化的一个实施例。在该实施例中, 按图17中的差宏块的单元的数字标示所描述的顺序将差宏块1702分解为4X4差块 1704-1706。对每个4X4差块执行整数变换1708计算,以生成对应的4X4系数块1708。 根据ζ字形序列化模式1710将变换的4X4块中的系数序列化,以生成线性的系数序列,然后通过量化计算1712对所述系数序列进行量化,以生成量化系数序列1714。视频信号压缩中的已经论述的步骤中的许多步骤是无损的。宏块可以从帧内预测方法或帧间预测方法以及对应的差宏块来无损地重新产生。还存在整数变换的精确逆变换。然而,由于一旦被量化,原始系数的近似值可以通过量化方法的近似逆(被称为“重缩放”)来重新产生,所以量化步骤1712是一种有损压缩的形式。由于不能从低分辨率色度数据恢复高分辨率色度数据,所以色度平面抽取是另一个有损压缩步骤。量化和色度平面抽取事实上是H. 264视频压缩技术中的两个有损压缩步骤。
图18分别提供H. 264视频压缩和视频解压缩中所使用的整数变换和逆整数变换的推导。符号“X” 1802表征4X4差块或残余块(比如,图17中的1704-1706)。由图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。还要注意的是,可以通过重缩放之后的另外的加法步骤如箭头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中,提供帧2302-2304的流作为编码方法的输入。在该实施例中,如上所论述的,帧被分解为宏块或宏块分区,以用于随后的处理。在第一处理步骤中,尝试从一个或更多个参考帧对当前考虑的宏块或宏块分区进行帧间预测。当如步骤2308中所确定的那样,帧内预测成功并且产生一个或更多个运动矢量时,则在求差步骤2310中从实际的原始宏块减去通过运动估计和补偿步骤2306产生的预测宏块,以生成对应的残余宏块,所述残余宏块通过求差步骤被输出到数据路径2312上。然而,如果还是如步骤2308中所确定的那样帧间预测失败,则开始帧内预测步骤2314来对宏块或宏块分区执行帧内预测,然后在步骤2310中从实际的原始宏块或宏块分区减去所述宏块或宏块分区,以生成被输出到数据路径2312的残余宏块或残余宏块分区。然后通过变换步骤2316对残余宏块或残余宏块分区进行变换,通过量化步骤2318进行量化,可能在步骤2320中进行重新排序以更有效率地编码,并且然后在步骤2322中进行熵编码,以生成输出NAL包23 的流。通常,压缩实施方式在平衡各种预测方法的成本、及时性和存储器使用的同时,寻求利用提供考虑的宏块的最接近的预测的预测方法。可以使用用于应用预测方法的各种不同的排序和选择标准中的任意一种。
20
继续跟随图23的实施例,在步骤2318中进行量化之后,量化系数被输入到重排序阶段2320和熵编码阶段2322,并且还被输入到逆量化器23 和逆变换步骤23 ,以重新产生残余宏块或残余宏块分区,所述残余宏块或残余宏块分区通过逆变换步骤被输出到数据路径2330上。通过逆变换步骤输出的残余宏块或宏块分区通常与通过求差步骤2310输出到数据路径2312上的残余宏块或残余宏块分区不相同。回想,量化是有损压缩技术。因此,逆量化步骤23 生成原始变换系数的估算,而不是精确地再现原始变换系数。因此,虽然逆整数变换将生成残余宏块或宏块分区的精确副本,但是如果将它应用于通过整数变换步骤2316生成的原始系数,则由于逆整数变换步骤23 被应用于重缩放系数,所以在步骤 2328中仅生成原始残余宏块或宏块分区的估算。然后在加法步骤2332中将估算的残余宏块或宏块分区加到对应的预测宏块或宏块分区,以产生宏块的解压缩版本。解压缩的、但是没有滤波的宏块版本通过数据路径2334被输入到帧内预测步骤2312,以用于随后处理的块的帧内预测。对解压缩的宏块执行去块滤波器2336的步骤,以生成滤波的、解压缩的宏块,然后对所述宏块进行组合,以生成解压缩的图像2338-2340,解压缩的图像2338-2340 然后可以被输入到运动估计和补偿步骤2306。一个巧妙之处涉及解压缩的帧输入到运动估计和补偿步骤2306,并且解压缩的、但是没有滤波的宏块和宏块分区输入到帧内预测步骤 2314。回想,为了预测当前考虑的宏块或宏块分区中的值,帧内预测与大部分的运动估计和补偿这二者都使用相邻块,在空间预测的情况下,使用当前帧中的相邻块,或者在时间帧间预测的情况下使用前帧和/或后帧中的相邻块。但是,考虑压缩的数据流的接收者。接收者将不可以访问最初的原始视频帧2302和2304。因此,在解压缩期间,编码的视频数据流的接收者将使用先前解码的或解压缩的宏块来用于预测随后解码的宏块的内容。如果编码过程使用原始视频帧进行预测,则编码器将使用与解码器随后可用的数据不同的数据进行预测。这将在解码过程中引起显著的误差和伪像。为了防止这种情况,编码过程产生用于在帧间预测步骤和帧内预测步骤中的解压缩的宏块和宏块分区以及解压缩的且经过滤波的视频帧,从而帧内预测和帧间预测使用相同的数据对任何解压缩过程将会可用的宏块和宏块分区的内容进行预测,所述任何解压缩过程可以仅依赖于编码的视频数据流进行解压缩。因此,通过数据路径2334被输入到帧内预测步骤2314的解压缩的、但是没有经过滤波的宏块和宏块分区是随后从其预测当前宏块或宏块分区的相邻块,并且运动估计和补偿步骤2306将解压缩的且经过滤波的视频帧2338-2340用作参考帧,以用于处理其他帧。图M以与图23中所用的框图方式类似的框图方式图示说明示例性的H. 264视频数据流解码过程。解压缩比压缩简单得多。NAL包流M02输入到熵解码步骤M04中,熵解码步骤M04应用逆熵编码来产生量化系数,重排序步骤M06将所述量化系数重新排序为与通过图23中的重排序步骤2320执行的重排序互补。熵解码流中的信息可以被用于确定最初用其对数据进行编码的参数,所述参数包括在每个块的压缩期间是利用帧内预测还是利用帧间预测的情况。通过步骤对08,该数据允许在步骤MlO中选择帧间预测或者在步骤 2412中选择帧内预测,以生成沿着数据路径M14提供给加法步骤M16的宏块和宏块分区的预测值。在步骤M18中逆量化器对重新排序的系数进行重新缩放,并且在步骤M20中应用逆整数变换来生成残差或者残余宏块或宏块分区的估算,在加法步骤M16中将所述估算加到基于先前解压缩的宏块或宏块分区而产生的预测宏块或宏块分区。加法步骤生成解压缩的宏块或宏块分区,以生成解压缩的视频帧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连接至各个装置2516-2518。这些装置之一是控制大容量储存装置2520的I/O控制器2516。考虑实现视频编解码器的软件程序的执行。在该实施例中,软件程序储存在大容量储存装置2520上,并且根据需要被分页到存储器2504中。处理器2502从存储器提取软件程序的指令,以用于执行。因此,每个指令的执行涉及至少一个存储器提取,并且还可以涉及处理器存取存储器中(并且最终在大容量储存装置2520中)的储存数据。通用计算机系统中的实际计算行为的很大一部分致力于在大容量储存装置、存储器和处理器之间传输数据和程序指令。此外,关于以高数据传输速率生成大容量数据的视频摄像机或其他数据输入装置,在视频摄像机和处理器之间可能存在对于存储器和大容量储存装置这二者的大量竞争。这种竞争可以持续达到一般计算机系统内的各个总线和桥的饱和。为了使用视频编解码器的软件实施方式来实现实时视频压缩和解压缩,计算机所消耗的可用计算资源和功率的非常大的一部分致力于数据传输和指令传输,而不是实际上执行压缩和解压缩。并行处理方法可以被预期为提高软件实现的视频编解码器的计算吞吐量的可行方法。然而, 在一般计算系统中,适当地分解问题以充分利用多个处理部件远非微不足道的任务,并且可能不会解决计算机系统内对于存储器资源的竞争和数据传输带宽的耗尽,或者可能甚至使计算机系统内对于存储器资源的竞争和数据传输带宽的耗尽恶化。可被考虑的下一种实施方式将是使用各种片上系统(system-on-a-chip)设计方法中的任意一种将软件实施方式移到硬件上。片上系统实现的视频编解码器将提供优于执行视频编解码器的软件实现的通用计算机系统的某些优点。具体地,程序指令可以储存在板上、闪存中,并且各种计算步骤可以在逻辑电路中实现,而不是被实现为由处理器顺序执行指令。然而,视频编解码器的片上系统实现本质上一般仍然是按顺序的,并且不提供高吞吐量的并行计算方法。图沈图示说明视频压缩和解压缩过程的许多方面,当考虑这些方面时,这些方面提供对实现根据本发明的视频编解码器的计算效率高得多的新方法的深刻理解。首先, H. 264标准已经提供服从并行处理解决方案的高级问题分解。如上所论述的,每个视频帧沈02被分解为宏块沈04-2613,并且为了在前向方向上对视频帧进行压缩,对宏块和宏块分区执行基于宏块的或者基于宏块分区的操作,并且反向地对宏块进行解压缩,以重构解压缩的帧。如上所论述的,在编码过程期间和解码过程期间帧之间和宏块之间肯定存在相关性。然而,如图沈所示,宏块与宏块相关性和宏块分区与宏块分区相关性通常是前向相关性。序列沈13的开始帧中的开始宏块不取决于后面的宏块,并且可以完全基于其自己的内容进行压缩。当通过宏块的光栅扫描处理,压缩逐帧地继续时,后面的宏块可以取决于先前压缩的帧中的宏块,特别是对于帧间预测,并且可以取决于同一帧内的先前压缩的宏块, 特别是对于帧内预测。然而,相关性受到很好的约束。首先,相关性受限于序列、空间和时间中的最大距离沈20。换句话讲,只有当前帧内的相邻宏块和相对少量参考帧中以当前帧的位置为中心的搜索区域内的宏块可能对压缩任何给定的宏块有贡献。如果相关性在时间、 空间和序列中没有受到很好的约束,则将需要非常大的存储器容量来容纳压缩连续宏块所需的中间结果。这样的存储器是昂贵的,并且随着存储器管理任务的复杂性和大小增大,快速开始消耗可用的计算带宽。另一种类型的约束是,对于给定的宏块2622,可能仅存在相对少的、最多数目的相关性。这种约束也有助于限制存储器的必要大小,并且有助于对计算复杂性的限制。随着相关性数目增长,计算复杂性可以成几何地或者成指数地增长。此外,当处理实体之间的必要通信被很好地限制时,对于复杂计算问题的并行处理解决方案才是可行的和可管理的。否则,结果在分离的处理实体之间的通信快速压垮可用的计算带宽。视频编解码器问题的另一个特点是,前向压缩方向或者反向解压缩方向的每个宏块的处理是逐步过程沈对。如上所论述的,这些按顺序的步骤包括帧间和帧内预测、残余宏块的产生、 主变换、量化、对象重排序和熵编码。这些步骤是分离的,并且一般来讲,一个步骤的结果被直接进给到后面的步骤。因此,正如可以以沿着组装线逐步制造汽车或电器的方式一样,可以按组装线方式处理宏块。在许多不同的问题域内,可以存在参照图沈所论述的视频编解码器实现的激励根据本发明的视频编解码器的大规模并行处理实施方式的特点。在许多情况下,可以以以许多不同的方式分解计算问题。为了将本发明的方法应用于任何特定问题,作为所述方法的第一步,需要选择产生以上参照图26所论述的特点中的一些或全部的问题分解。例如, 可以以可替换的、不利的方式分解视频数据流压缩问题。例如,可替换的分解将是分析整个视频数据流或者帧的大部分块,以在宏块处理之前进行运动检测。在某些方面,这种较大粒度方法可以对运动检测和基于运动检测的压缩提供显著的优点。然而,这种可替换的问题分解需要容量很大的内部存储器,并且运动检测步骤将会太复杂且计算效率太低,以至于不能容易地在易计算的和可管理的数据对象的逐步处理内适应。再次,强调的是,尽管在实现视频编解码器的背景下描述本发明,但是本发明的方法适用于宽泛范围的效率高的被设计来解决多种不同计算问题的计算引擎。对于可以被分解和用公式表示以提供参照图26所论述的特点的那些问题,本发明的方法提供计算带宽、 成本、功耗的效率以及激励和约束计算引擎、装置和系统开发的其他重要效率。图27图示说明根据本发明的方法的视频编解码器的单集成电路实现的基本特征。单集成电路内实现的那些部件在大的虚线块2702内被示出。视频编解码器实施方式另外使用外部存储器2704和视频摄像机2706的外部光学器件和电子器件。视频摄像机系统的另外的外部部件包括电源、各种另外的机电部件、壳体、用于外部装置的互连部件和其他这样的部件。如以上参照图4所论述的,视频摄像机将数据流和电子时序信号输入2708提供给视频编解码器。数据流被引导到存储器2704和集成电路内的微处理器控制器部件2710,微处理器控制器部件2710可以访问视频摄像机的时序信号输出,以协调视频编解码器的行为。存储器2704是双端口的,以使得当视频数据流从数码视频摄像机2706进入时,可以将先前储存的原始视频数据从外部存储器提取到内部高速缓冲存储器2712中,以提供给若干处理元件2714-2719中的每个。在图27中,示出了六个处理元件2714-2719,但是在以下所论述的特定实施方案中,事实上存在更多数目的处理元件。处理元件的数目是问题域确定的且设计选择的参数。一种实施方式的完全分开的处理元件可以可替换地在另一种实施方式中被组合在一起。在图27的实施例中,微处理器控制器2710执行储存在闪存2720中的指令。微处理器控制器通过各个信号路径与存储器2722、高速缓冲存储器27 、系统时钟27 和多个处理元件27 通信。在集成电路内,大量数据流动通过对象总线2730发生。对象总线将视频数据相关的对象(主要是宏块和宏块分区)传递到处理元件。另外,对象总线还可以传递共享的参数和元数据,包括描述宏块和宏块分区对象以及当前帧和视频数据流内的更高级结构的对象。在该实施例中,每个处理元件执行视频数据对象的逐步处理的一个步骤,所述视频数据对象主要是宏块和宏块分区。输入到处理元件的视频对象的类型和通过处理元件输出的视频和数据对象的类型取决于处理元件所实现的压缩过程中的特定步骤。处理元件执行被执行来压缩视频数据的大量计算。处理方法是非常流水线式、组装线式的方法,在该方法中,给定的原始数据宏块进入第一处理元件2714,并且沿着处理元件流水线中的后面的处理元件序列以逐步的方式被变换。总体组装线处理由相对低频时钟信号实现的计算步骤时序信号控制。每个处理元件内的处理步骤由相对高频时钟信号控制。视频编解码器的单集成电路实施方式的一个重要方面是低频计算步骤时序信号提供用于微处理器控制器的时序信号,但是不提供组装线过程的绝对控制。一般来讲,应该在单个低频计算步骤时序信号间隔内执行逐步的高级处理中的每个步骤。然而,可能存在处理元件不能在一个时间间隔内完成其任务的情况。这些情况通过由微处理器控制器2710提供的高级控制逻辑来检测,在这种情况下,微处理器控制器可以延迟开始后面的计算步骤,使得即使处理元件的任务已经超过低频时序间隔,处理元件也可以完成其任务。因而,微处理器控制器控制提供视频压缩和视频解压缩过程的总控制的重要级别的灵活性。如果没有提供这种灵活性,则需要将低频间隔至少设置为系统内的任何处理元件所需的最大可能的时间间隔,以完成处理元件可能会遇到的计算上最复杂的任务。在最复杂任务只是不频繁发生(例如每1,000 个宏块中发生一次)的情况下,则在处理其余的999个计算需求较小的宏块期间,处理元件将在低频时间间隔内的大部分时间段内处于空闲。通过提供总体组装线过程的更灵活的微处理器控制器控制,可以将低频时序信号间隔设置为合理值,所述合理值指定在其期间大部分宏块可以被处理的时间间隔,并且可以实时地以上下文相关方式调整低频时序信号间隔,以适应相对不频繁的计算密集的宏块。在该实施例中,板上对象高速缓冲存储器2712提供不同类型的灵活性。高速缓冲存储器提供用于数据对象的动态缓冲,所述动态缓冲可以容纳在视频压缩中的特定点所需的不同量的数据。像由微处理器控制器控制提供的时序弹性一样,灵活的高速缓冲存储器允许在有效率地处理存储器密集存取程度较小的一般处理任务的同时适应特定的上下文相关的存储器需求。由时钟27 提供的更高频时序间隔允许在处理元件内进行时钟控制的处理,所述处理被实现为逻辑电路,而不是被实现为微处理器控制器执行的指令。正是这种时钟控制的、基于逻辑电路的实施方式提供了视频编解码器的总体单集成电路实现的大的计算带宽。如果视频压缩和视频解压缩过程的大部分通过处理器上的指令执行来执行, 则总体计算开销的大部分将被指令提取周期消耗。对象存储器控制器负责在板上对象高速缓冲存储器和对象存储器之间交换对象。最后,对象总线2730便利基于对象流水线的实施方式。如果宏块和宏块分区作为比特流或字节流在集成电路内被传输,则对于将宏块和宏块分区传送到处理元件和从处理元件传送宏块和宏块分区,将需要甚高频通信处理。通过提供宽的高容量对象总线,可以以计算和时间效率高的方式从高速缓冲存储器传递被发送到每个处理元件的数据。总而言之,根据本发明的复杂计算任务的实施方式涉及实施问题特定的计算引擎的单集成电路的设计和制作。计算引擎包括微处理器控制器,所述微处理器控制器提供集成电路内的处理的高级控制,而且还提供执行大量计算过程的大量并行流水线式处理元件。处理元件并行操作,以提供非常高的计算带宽,并且通过对象总线和中间处理元件数据路径被提供以对象为单位的数据,所述对象例如宏块和宏块分区,是处理元件对其操作的自然对象。处理元件中的高频时序由系统时钟提供,而低频高级计算步骤控制由微处理器控制器提供,进而提供计算任务的组装式处理的总时序的灵活性,以提高计算引擎的效率和吞吐量。图28和四中示出了视频编解码器的可替换实施方案。图28图示说明本发明的实施方案,在该实施方案中,集成电路观02包括存储器观04,存储器观04在图27中所图示说明的实施例中是外部的。图四图示说明本发明的可替换实施方案,在该实施方案中,数码视频摄像机被包括在组合的视频摄像机和视频编解码器的单集成电路实施方式中。图30-32图示说明根据本发明的视频编解码器的单集成电路实施方式内的总时序和数据流动。在完成前一步骤时,微处理器控制器检查处理实体、高速缓冲存储器,并且如果需要的话,还检查存储器,以确保执行下一个高级计算步骤所需的所有数据对象可用于传输到需要这些数据对象的处理元件。因此,微处理器控制器检查以确保数据对象可获得,并且当需要时,便利高速缓冲存储器中数据对象3001-3005的编组,以供处理元件在下一个高级计算步骤中进行存取,并且检查每个处理元件已生成需要提供给另一个处理元件以用于下一个高级计算步骤的任何数据,并且当前正在存储这些数据。这里再次注意的是,微处理器控制器控制提供集成电路的总控制的灵活性。在许多情况下,是一个特定数据对象还是多个特定数据对象需要被准备来在下一个步骤中进行传输取决于该步骤在总视频编码任务中的步骤序列中的位置。作为一个实施例,视频流的开始参考帧的开始宏块首先被第一处理元件处理,第一处理元件没有结果提供给后面的处理元件。作为另一个实施例,对于帧间预测,不对视频流内的参考帧进行处理。因此,在任何给定的低频时序间隔中,处理后面的高级计算步骤所需的数据对象可以以上下文相关方式改变。而且,在某些高级计算步骤中,处理元件中的一个或更多个可以不是工作状态的。 处理元件自身内的上下文相关的且随时间改变的控制的实施复杂性将不期望地需要复杂处理元件实现。然而,通过用指令执行的微处理器控制器提供更高级别的控制,许多级别的决策和时间相关的且上下文相关的控制上的变化可以用固件,而不是用高度复杂的逻辑电
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,处理元件 3312和3313对应于图23中的块2322,处理元件3314对应于图23中的块23 ,处理元件 3316对应于图23中的块23 ,并且处理元件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示出表征本发明的一个实施方案的熵编码的处理元件的框图。该处理元件接收亮度对象、色度对象和运动矢量对象以及各种类型的数据对象,并且应用如上所论述的各种不同的熵编码方案来生成被打包到NAL数据单元中的最后的编码输出。图40图示说明对于图33A中图示说明的视频编解码器实施方式中的视频高速缓冲存储器的储存需求的一个实施例。在一个实施方案中,视频高速缓冲存储器包含足够的宏块、宏块分区和运动矢量对象,以使得在操作序列期间不必在视频高速缓冲存储器和外部存储器之间交换给定的对象,所述操作序列被执行为从第一处理元件开始并且进行到最后的处理元件的顺序步骤。各种类型的对象储存在视频高速缓冲存储器内的循环队列中, 其中许多队列被分割来在一个分区中包含当前考虑的宏块信息,并且在另一个分区中包含相邻宏块信息。因此,例如,视频高速缓冲存储器包括循环队列4002,循环队列4002包含 16个亮度宏块,所述16个亮度宏块被分割为两个分割部分(two partitions),每个分割部分有8个宏块。
29
图41图示说明亮度宏块循环队列(图40中的400 在九个高级计算步骤间隔期间的操作。在时间间隔、4102期间,下一个原始视频数据亮度宏块被输入到槽(slot)O 4104,并且来自重构帧的对应的相邻参考宏块被放置到槽8 4106中。在每个连续的时间间隔期间,另外的原始数据宏块和参考宏块被输入到循环队列内的连续槽中。当槽0 4104 中的宏块被后面的处理元件存取和修改时,该宏块的内容在时间间隔期间渐进地改变。最后,在间隔t7 4108期间,最后的处理元件对宏块的内容进行编码并且输出,以使得在间隔 t8 4110期间,新的原始数据宏块可以被放置到槽0 4112中。因此,循环队列包含用于供所有的处理元件进行组装式处理的宏块数据视频高速缓冲存储器,并且然后在最后的处理元件已经使用宏块之后,用新的原始数据宏块和参考宏块替换该宏块。在每个低频时序信号时间间隔期间,执行所有的编码或解码步骤,但是每个处理元件在低频时序信号时间间隔期间对不同的宏块或宏块分区执行其任务。图42图示说明表征本发明的一个实施方案的视频编解码器的视频高速缓冲存储器控制器的实施方式。通过由循环缓冲读写地址指针控制的复用器4204-4206对视频高速缓冲存储器4202进行存取。因此,每个处理元件可以在给定时刻储存来自其他处理元件的不同的读写地址指针,以使得每个处理元件对循环队列中的合适的槽进行存取。当块前进通过处理元件的流水线时,与块相关联的读地址指针和写地址指针从处理元件到处理元件地增加,以确保处理元件对循环队列内的合适的槽进行存取,而无需在视频高速缓冲存储器内内部地传输数据,以在视频高速缓冲存储器和外部存储器之间进行传输。图43提供表格,该表格指示由表征本发明的一个实施方案的视频编解码器的某些处理元件中的每个执行的总计算处理。从该表格可以理解,由根据本发明的一个实施方案的视频编解码器的单集成电路实施方式内的大规模并行处理提供的计算带宽的大小。为了实现将会提供相同计算带宽的计算引擎和软件,执行软件的处理器将需要以远大于当前可用的处理器所支持的时钟速度的惊人的速度工作。一种流行的集成电路设计语言是超高谏集成电路硬件描沭语言(“VHDL”)。图 44A-E提供如图33A中所示的根据本发明的一个实施方案的视频编解码器的单集成电路实施方式中的各个处理元件的高级VHDL定义。在图44A中,首先提供各种对象的定义4402。 然后,在各个处理元件的粗体名称下方,提供处理元件的输入和输出的VHDL定义。例如,在图44A的下面部分,提供运动估计处理元件的输入和输出4404。运动估计处理元件接收四个逻辑信号输入4406、亮度宏块4408和亮度参考宏块4410,并且生成作为输出的三个逻辑信号4412-4414和运动矢量对象4416。H四小节艮据本发日月的各个实施方案的以与存储器子系统整体的集是高力特征的视频编解码器实现在本小节和后面的两个小节中,对表征本发明实施方案的各种不同存储器子系统进行论述。本小节集中于前面小节中所论述的单集成电路实现的视频编解码器的各种实施方式,这些实施方式以集成度提高的全集成摄像机、视频编解码器和存储器为特征。不同的实施方式提供可以在各种不同的市场缺口中找到特定用途的不同特点和用于不同类型的成像系统的不同特点。例如,以下所论述的集成的透镜、传感器、存储器和编解码器实施方案可以提供效率和成本优点,而本发明的集成度较低的实施方案可以提供更大模块性和较低初始设计及制造成本的优点。
图45图示说明表征本发明的各个实施方案的视频摄像机的存储器子系统的部件和功能。视频摄像机系统可以包括在图45中被示为透镜和传感器对4502-4505的一个或更多个视频摄像机,所述视频摄像机将信息编码单元(例如字节)流中的数据传送到电子存储器4506。如上所论述的,视频摄像机可以生成大量数据,并且可以相对于连接至视频摄像机系统的其他视频摄像机和视频摄像机数据处理子系统异步地生成数据,所述视频摄像机数据处理子系统例如为前面描述的单集成电路视频编解码器。视频数据作为帧储存在存储器中,如上所论述的,每个帧用线性帧序列内的位置、各种视频摄像机参数和大量数据值来描述,所述视频摄像机参数包括帧宽度和帧高度,所述数据值每个对帧内的不同像素用大体上固定的少数比特对颜色和亮度信息进行编码。视频编解码器所使用的单像素、像素矢量、像素块和各种其他数据对象被从存储器检索(retrieved),并且被放置到存储器高速缓冲存储器4508中,以供视频编解码器的各个处理元件存取,并且可以在视频摄像机数据处理期间以改变的形式从存储器高速缓冲存储器返回到存储器。尽管从视频摄像机4502-4505到存储器4506的数据路径4510基本上是单向的, 但是将高速缓冲存储器4508与存储器4506互连的数据路径4512是双向的。在本发明的若干实施方案中,存储器控制器4514提供数据格式化、数据寻址和仲裁功能,所述仲裁功能允许一个或更多个视频摄像机4502-4505在视频编解码器通过高速缓存存储器4508同时对存储器进行存取时同时且异步地对存储器4506进行存取。图46A-E图示说明表征本发明实施方案的一系列视频系统,并且这些视频系统表征提高视频系统的子系统之间的集成度的途径。图46A中所示的本发明的第一实施方案以分离的视频摄像机4602、存储器组(memory-bank) 4604和视频编解码器4606部件子系统为特征,其中视频编解码器包括作为子部件的存储器控制器4608和高速缓冲存储器这二者。 在前面的小节中详尽地论述了本发明的这个实施方案。本发明的这个实施方案的优点包括将标准的现成的存储器芯片用于存储器组,并且模块化程度相对高。当更快、更有能力的存储器芯片变为可用时,可以通过存储器芯片更换和视频编解码器的相对简单的重新参数化来更新存储器组。图46B示出本发明的下一个实施方案。在该实施方案中,存储器控制器功能4610 直接合并到存储器组的存储器芯片4612中的一个或更多个中,而不是合并在视频编解码器中。本发明的这个实施方案提供视频编解码器和存储器子系统之间的简单接口,并且在某些实施方案中,可以降低视频编解码器和存储器子系统之间的通信开销。图46C图示说明本发明的第三实施方案。在本发明的这个实施方案中,如在本发明的前面所论述的实施方案中那样,视频摄像机数据直接被输入到存储器子系统4616中, 而不是通过视频编解码器输入到存储器子系统中。在这个实施方案中,视频编解码器被进一步简化,并且数据通信开销被进一步减少。图46D图示说明本发明的第四实施方案。在本发明的这个实施方案中,视频编解码器和存储器一起组合到单个集成电路4618中。由于存储器控制器和视频编解码器之间的数据通信被内在化于单集成电路内,而不是需要视频编解码器和存储器子系统之间的高速数据链路或总线,所以通过这样做,通信开销会被进一步减少。图46E图示说明本发明的全集成的实施方案。在这个实施方案中,如从上方4620和从侧面4622观看地那样所示,摄像机与存储器子系统和视频编解码器完全集成,以生成单片机系统。在本发明的这个实施方案中,摄像机数据直接被输入到集成电路中,而无需连接摄像机与集成电路的高速总线或串行链路。此外,二维或更高维数的存储器架构可以允许二维摄像机数据直接被输入到对应的二维存储器中,而无需串行化和并行化,提高了速度,并且改进了摄像机数据到电子存储器中的储存效率。本发明的最后的实施方案可以利用材料科学、纳米技术和纳米电子中的许多新的发展,所述新的发展提供大得多的二维和三维存储器密度。全集成还可以改善许多潜在的故障点,并且降低子系统集成成本。如以上所提及的,图46A-E中所图示说明的各种实现的排序不意味着暗示本发明的一个实施方案必然取代另一个实施方案或者被另一个实施方案取代。图46A-E中所示的本发明的每个实施方案提供各种不同成本、效率和期望特点之间的不同的折衷和平衡集合。图46E中所示的全集成的系统可以容纳多个摄像机,但是底层集成电路将通常可以更大,以容纳另外的摄像机,并且虽然摄像机相对于彼此旋转数度的两摄像机实施方案可以提供立体图像捕获以便利于捕获图像中的深度确定,但是全集成的系统可以以相对刚性的几何约束为特征。图46A中所示的本发明的第一实施方案允许使用目前存在的现成的存储器芯片来相对容易地进行存储器子系统更新。预期本发明的各种不同族的实施方案可以基于图46A-E中所示的各种架构,来提供性能、成本和折衷的范围。m五./丨邝遍絲_一会目_摊白魄一fe^诸軒胃会充在本发明的第一组实施方案中,存储器子系统包括一组现成的存储器芯片和以上参照图46A所论述的视频编解码器集成电路内的存储器控制器子系统,或者各种集成度更高的基于视频摄像机的视频数据处理系统内的存储器控制器子系统,在所述视频数据处理系统中,存储器控制器被集成在一个或更多个存储器芯片内,例如以上参照图46B-C所论述的本发明的实施方案。在本发明的这些实施方案中,存储器控制器用作仲裁器,以协调视频摄像机和视频编解码器以及二维数据到一维数据的串行器和一维数据到二维数据的并行器对存储器的异步的同时访问。本发明的该第一组实施方案的存储器子系统还可以与其他类型的计算引擎耦合,或者被包括在需要效率高的存储器子系统的其他类型的系统中。图47图示说明由本发明的存储器控制器实施方案提供给摄像机、视频编解码器和存储器的一般化接口。在图47中,存储器控制器4702用矩形表征。存储器和高速缓冲存储器接口在矩形的右侧4704被示出,并且视频摄像机和视频编解码器接口在矩形的左侧4706被示出。存储器控制器可以与一个或更多个视频摄像机接口连接。在图47中,存储器控制器被示出与四个视频摄像机4708-4711接口连接。每个视频摄像机与输入数据路径、线信号(“Is”)、帧信号(“fs”)和像素时钟信号(“pixclk”)(例如对于视频摄像机 4708的输入数据路径4716、Is 4718、fs 4720和pixclk 4722)接口连接。输入数据路径 4716包括一组并行输入信号线,每根输入信号线对应于更大信息单元(例如字节)内的比特。在前面的章节中已对Is信号4718、fs信号4720和pixclk信号4722进行了描述。简要地回顾,Is指示线边界,并且fs指示串行化的摄像机数据信号内的帧边界。pixclk是供给摄像机的时钟信号,其中摄像机通常对每个有效转变输入一个像素,或者,换句话讲,每个pixclk间隔或滴答信号(tick)输入一个像素。表征本发明的各个实施方案的存储器控制器提供用于视频系统的视频编解码器或者视频处理子系统的稍微更复杂的接口。这个接口包括储存在存储器中的视频帧内的像素或像素块的χ坐标4730和y坐标4732的输入、帧数4734的输入、操作码4738、“程序” 4740、“写” 4742和“选择” 4744信号输入的输入,以及当存储器控制器支持来自两个或更多个视频摄像机的输入时,摄像机的索引4736的输入。应该注意的是,参照图47所描述的接口是示例性的接口,并且本发明的特定实施方案可以利用各种不同的特定接口,所述特定接口包括不同数据路径和信号和/或更多数目或更少数目的数据路径和信号。例如, 不是输入χ坐标4730和y坐标4732到存储器控制器,可替换的接口而是可以提供线性像素序列内的线性像素地址的输入。在这种情况下,当两个实施方案支持相同的最大帧大小时,线性像素地址输入将需要在先前所论述的实施方案中用于χ坐标输入或y坐标输入的信号线的两倍。在本发明的某些实施方案中,X坐标和y坐标包括(X,y)坐标对,该(X,y)坐标对描述块中的左侧最上点的位置或者储存在存储器中的视频帧内的像素矢量或特定像素的位置。χ坐标和y坐标二者都通过一组具有足够宽度的并行信号线供给,以将视频系统所支持的最大可能的帧大小内的最大可能的坐标表征为二进制数。注意的是,与坐标χ和y 的正常数学惯例相反,y坐标对应于帧内的行索引,而χ坐标对应于列索引。再次,可替换地,当帧被认为是线性像素序列,而不是二维像素阵列时,可以通过线性索引或位置来寻址帧内的像素。帧数4734也由一组足够数目的并行信号线供给,以将用于储存在存储器中的帧的最大可能的帧索引表达为二进制数。例如,两根信号线足以表达集合{0,1,2,3}中的每个帧数。类似地,摄像机索引4736由一组足够数目的并行信号线供给,以表达连接至存储器控制器的每个视频摄像机的索引或摄像机编号。操作码4738也由一组足够数目的并行信号线提供,以将所有需要的操作码编码为二进制数。在本发明的一个实施方案中,“程序”、“写”和“选择”信号线是提供二进制“0”或“ 1”的单根信号线,“0”或“ 1”也被称为关和开或者低和高。在本发明的特定存储器控制器实施方案内可以利用任何可能的二进制信号编码。例如,输入到“写”信号线的布尔值“0”在本发明的某些实施方案中可以指示写操作,而在本发明的可替换实施方案中可以指示读操作。在本发明的任何特定实施方案中,所利用的惯例是固定。在本发明的一个实施方案中,通过以下方式对存储器控制器进行初始化,所述方式即,将“程序”信号线4740设置为高,并且然后通过其余的信号线和数据路径中的某些供给初始化数据。例如,最大帧大小可以被指定为通过χ坐标信号路径4730和y 坐标信号路径4732输入的χ坐标和y坐标的最大可能值的乘积。类似地,可以对每个摄像机储存的最大帧数可以使用帧数信号线4734输入。支持摄像机的最大数目可以通过摄像机索引信号路径4736作为最大可能的摄像机索引输入。视频编解码器通过以下方式请求存储器到高速缓冲存储器或者从高速缓冲存储器到存储器的操作,所述方式即,在通过操作码信号路径4738输入操作码、通过帧数信号路径输入帧数、通过摄像机索引信号路径输入摄像机索引、以及通过χ信号路径和y信号路径输入χ坐标和y坐标时,将“选择”信号线设置为高。在本发明的单视频摄像机实施方案中,不需要摄像机索引信号路径。在本发明的一个实施方案中,通过以下方式发起高速缓冲存储器到存储器的操作,所述方式即,在通过将“写”信号线设置为低来请求存储器到高速缓冲存储器的操作时,将“写”信号线4744 设置为高。输入信号的精确时序和序列可以从本发明的一个实施方案到另一个实施方案地变化。在本发明的某些实施方案中,每个操作码表征不同类型的存储器存取,如前面章节所论述的,存储器存取类型包括对像素、各种大小的像素矢量、各种大小的像素块和数据对象的存取。图47中图示说明的一般化存储器控制器接口包括用于存储器的第一接口,所述第一接口包括双向数据路径4750、地址路径4752和控制路径47M。存储器控制器接口另外包含用于高速缓冲存储器的第二接口,所述第二接口也包括数据路径4756、地址路径4758 和控制路径4760。分别通过一组并行信号线4750和4756在存储器和存储器高速缓冲存储器之间交换数据。在本发明的某些实施方案中,数据路径是双向的,并且被用于将数据写入到存储器和从存储器接收数据这二者。在本发明的其他实施方案中,分离的单向数据路径可以被用于将数据写入到存储器和从存储器读取数据。每个数据路径包括足够数目的一组并行信号线,以传载信息单元,例如字节、字、长字或更长的比特序列。在许多实施方案中, 数据路径中的每根信号线对应于存储器组或存储器架构内的不同面。例如,8信号线数据路径可以将存储器控制器与八个存储器芯片互连,其中每个字节从分布在8个存储器芯片外的摄像机接收。各种其他映射和数据路径大小都是可以的,特别是包括更宽的数据路径和数据单元与存储面的各种类型的交错映射。存储器地址作为每个存取请求的一部分通过地址路径4752和4758被供给至存储器和高速缓冲存储器。在本发明的某些实施方案中,存储器控制器将串行化的摄像机数据和相关信号或二维数据块规范转化为线性存储器地址。存储器通常还通过控制路径47M 和4760被供给控制信号,例如由视频编解码器供给至存储器控制器的“选择”信号和“写” 信号(4742 和 4744)。图48A-H图示说明表征本发明的一个实施方案的存储器控制器的部件和部件的操作。在后面的段落中参照后面的附图对这些部件进行更详细的描述。图48A-H全部使用类似的图示惯例,接下来参照图48A进行论述。存储器控制器4802被表征为矩形。如上所论述的,存储器控制器可以被实现为视频编解码器内的模块或子系统,可替换地,可以被实现为一个或更多个存储器芯片内的子系统或模块,或者可以被实现为视频编解码器和存储器集成电路内的子系统或模块。甚至可以的是将存储器控制器实现为某些复杂系统中的独立部件。存储器控制器包括与连接至存储器控制器的每个视频摄像机对应的摄像机块。在图48A-H中,示出了三个摄像机块4804-4806。摄像机块从视频摄像机接收数据和信号,并且将控制信号和数据输出到存储器,从而实现允许视频摄像机将数据发送到存储器控制器的数据流接口。存储器定序器 4808实现参照图47所论述的视频编解码器到存储器控制器接口。虽然在图48A-H中示出了单个存储器定序器,但是可替换的实施方案可以利用多个存储器定序器,来便利视频编解码器和存储器控制器之间的互连中的更高的并行程度。存储器子系统以矩形4810来进行图示说明,该矩形4810通过数据输入路径4812、 数据输出路径4814、地址路径4816和控制路径4818连接至存储器控制器。如上所论述的, 某些存储器子系统可以将数据输入路径4812和数据输出路径4814组合为单个双向数据路径。存储器控制器另外包括仲裁器4820、时钟输入4822、三个复用器4拟4_4拟6和地址转化单元4拟8。最后,存储器控制器包括用于从高速缓冲存储器接收数据的数据输入端口 48 和用于将数据发送到高速缓冲存储器的数据输出端口 4830。在本发明的某些实施方案中,这些端口可以被组合在双向数据端口中。相同的或者分离的地址转化部件可以被用
34于指定高速缓冲存储器存取,或者高速缓冲存储器存取可以由另一个系统(例如视频编解码器)来指定。图48B-C图示说明仲裁器(图48A中的4820)的功能。如图48B所示,仲裁器从摄像机块和存储器定序器中的每个接收请求信号。摄像机块或存储器定序器通过将请求信号线设置为“ 1,,来发起存储器操作,所述请求信号线将摄像机块或存储器定序器与仲裁器互连。仲裁器4820在从摄像机块和存储器定序器块接收的异步请求和同步请求之间进行仲裁,在每个时刻,选择摄像机块和存储器定序器中的单独一个来对其进行下一个请求服务。换句话讲,仲裁器连续从摄像机和存储器定序器接收未决的请求的指示,并且通过仅允许单个摄像机或存储器定序器在每个时刻执行存储器事务来将进入请求的流串行化。仲裁器通过使能信号线4836-4839将在当前所论述的本发明实施方案中被编码为二进制值“ 1” 的使能信号发送到存储器定序器块中的每个摄像机块。在任何给定时刻,仅有单根使能信号线为高。仲裁器需要确保在任何给定时刻仅有单个摄像机块或存储器定序器块正执行存储器事务,并且还确保随时间公平地处理由摄像机块和存储器定序器发起的请求,以使得全部摄像机块和存储器定序器都获得足够的存储器带宽,并且没有输入数据未能到达存储器。如图48C所示,使能信号线4836-4839还输入到三个复用器4拟4_4826,以允许复用器选择数据坐标、像素坐标、像素矢量坐标或像素块坐标,并且控制来自当前启用的摄像机块或存储器定序器的信号。图48D图示说明第一复用器4拟4的功能。摄像机块4804-4806和存储器定序器块4808中的每个可以将数据发送到存储器4810。由存储器定序器块控制的由每个摄像机块输出的数据路径和数据输入端口 4拟9连接至第一复用器4拟4,第一复用器4拟4选择四个输入数据路径中的一个,用于接收由第一复用器转发到存储器4810的数据。在图48D中, 存储器定序器块当前由仲裁器启用,并且因此,第一复用器4拟4将第一复用器4拟4通过数据输入端口 48 从高速缓冲存储器接收的数据发送到存储器。如图48E所示,复用器4825 在给定时刻将来自摄像机块之一的数据的坐标或者像素、像素矢量、像素块或数据对象的坐标从存储器定序器块发送到地址转化单元48 ,地址转化单元4拟8将坐标转化为对应的线性存储器地址,地址转化单元然后将该线性存储器地址转发给存储器。对于摄像机输入,线性存储器地址被计算为帧的线内的位置,该位置被加到摄像机的基体偏移和帧偏移之和。类似地,如图48F所示,复用器4拟6从摄像机块和存储器定序器块中的每个接收控制信号,并且在任何给定时刻将控制信号从摄像机块或存储器定序器块中当前被仲裁器启用的一个发送到存储器。如图48G所示,当存储器定序器块被仲裁器启用时,在由存储器定序器块向存储器发起读请求期间,数据从存储器反向通过存储器控制器经由数据输出端口 4830流到存储器高速缓冲存储器。如图48H所示,时钟输入4822输入到存储器控制器,并且被路由到摄像机块和存储器定序器、仲裁器中的每个,并且被路由到使用时钟同步信号的任何其他存储器控制器部件。在存储器控制器内称为“fastclk”的时钟信号通常是最快的预期pixclk信号的倍数。倍数η根据摄像机块的数目而变化,并且在本发明的某些实施方案中,倍数η可以是可配置的参数。在本发明的一个实施方案中,当四个摄像机块通过存储器控制器与存储器互连时,使用倍数η = 16。以下称为“fastclk”的内部存储器控制器时钟信号需要具有足够高的频率,以使得存储器控制器可以同时为由摄像机块和存储器定序器块发起的所有存储器存取请求服务。例如,在四个视频摄像机连接至存储器控制器的情况下,当所有四个摄像机以每个Pixclk间隔一个像素的最快可能的速率发送数据时,在16个fastclk间隔跨度期间,平均来讲,通过存储器控制器发送四个像素。由于存储器控制器根据fastclk频率执行内部操作,包括存储器存取操作,所以甚至在由所有四个视频摄像机供给的满数据传输载荷下,存储器控制器也通过存储器定序器块将足够的fastclk周期(并且由此,存储器带宽)提供给视频编解码器。图49A-C图示说明参照图48B-C所论述的仲裁器的实施方案,所述仲裁器是表征本发明的一个实施方案的存储器控制器的部件。图49A提供状态转移图和摄像机块仲裁器块的符号表征,摄像机块仲裁器块是存储器控制器仲裁器的部件,并且被实现为状态机。摄像机仲裁器块的符号表征4902指示摄像机仲裁器块接收两个输入信号,并且输出两个输出信号。输入信号包括Blocks信号4904和Req信号4906。摄像机仲裁器块输出Grant 信号4908和Block-Out信号4910。输入信号和输出信号是单信号线信号,所述单信号线信号每个在任何特定时刻承载两个二进制值“0”和“ 1”之一。因此,摄像机仲裁器块的状态可以被表达为四个布尔项或量,所述布尔项或量与当前通过两根输入信号线输入到摄像机仲裁器块并且由摄像机仲裁器块通过两根输出信号线输出的值对应。状态被重新评估,并且可以在每个fastclk间隔改变。图49A还提供状态转移图4912,状态转移图4912表征摄像机仲裁器块的操作特点。在状态转移图4912中,每个圆(例如圆4914)表征摄像机仲裁器块的不同的稳定状态。互连状态的笔直箭头表征状态转移,例如状态转移箭头4916,并且弯曲箭头(例如弯曲箭头4918)表征没有状态转移,或者,换句话讲,表征摄像机仲裁器块在两个或更多个 fastclk间隔期间保持在单态下。每种状态(例如状态4914)用名称指定,所述名称例如为用其指定状态4914的名称“未决”,并且还包括两个输出信号的当前输出的指示。在例如状态未决4914下,摄像机仲裁器块将“0”输出到Grant输出,并且将“1”输出到BlockOut 输出。状态转移对于一个或两个输入信号的特定值发生。例如,当Req输入信号4906为低时,或者如图49A中所表达的,当布尔表达式“ι Req”具有值TRUE时,摄像机仲裁器块从状态4920转移到状态4922。当用单变量布尔表达式说明状态转移时,通过单根输入信号线输入特定值的结果是,发生状态转移。当用两变量布尔表达式说明状态转移时,则两根输入信号线都必须具有用于发生状态转移的特定值。摄像机仲裁器块可以处于三种状态中的任何一种状态下(1)空闲(IDLE)状态 4922 ; (2)未决(PENDING)状态4914 ;以及(3)准予(GRANT)状态(4920)。在空闲状态下, 相关联的摄像机没有正在请求执行存储器存取操作的存储器控制。在未决状态下,相关联的摄像机正在发送写入到存储器的数据,但是被另一个摄像机或者视频编解码器阻止获得存储器控制。在准予状态下,使得与摄像机仲裁器块相关联的摄像机能够对存储器进行存取。当上电时,摄像机仲裁器块的初始状态是“空闲” 4922,其中摄像机仲裁器块将布尔“0”输出到Grant输出信号线,并且将与通过BlockHn输入信号线接收的值相反的值输出到Block-Out输出信号线。当Req输入信号线为低时,摄像机仲裁器块保持在空闲状态 4922下。当Req输入信号变为高或者输入值“ 1”时,当Blodrfn输入信号线为低时,摄像机仲裁器块转移4拟6到准予状态4920,或者当Block-h输入信号线为高时,转移4拟8到未决状态4914。在空闲状态4922下,与摄像机仲裁器块相关联的摄像机当前不发起存储器请求,并且没有其他摄像机当前发起存储器请求。当较高优先级的摄像机已经请求存储器事务时,当前考虑的摄像机仲裁器不能转移到准予状态,而是相反转移到未决状态进行等待,直到没有更高优先级的摄像机正在请求存储器事务为止。未决状态4914如此表征这样一种状态,在该状态下,与摄像机仲裁器块相关联的摄像机正请求存储器事务,但是由于更高优先级的摄像机当前正与存储器执行存储器事务,所以前述存储器事务不能被启用。在未决状态下,摄像机仲裁器块将布尔值“1”输出到block-out信号线,以防止较低优先级的摄像机或者存储器定序器被准予对存储器进行存取,直到与摄像机仲裁器块相关联的摄像机已具有执行所请求的存储器事务的机会为止。准予状态4920表征这样一种摄像机仲裁器块状态,在该状态下,使得相关联的摄像机能够执行存储器事务。在准予状态4920下,如摄像机仲裁器块将“1”输出到grant信号所表征的,与摄像机仲裁器块相关联的摄像机被启用。注意的是,摄像机不能保持在准予状态4932下多于单个fastclk间隔。因此,在将存储器控制交给另一个当前请求的块之前,仅允许摄像机向存储器传送单个数据单元。图49B示出表征本发明的一个实施方案的存储器控制器仲裁器内的存储器定序器仲裁器块的状态转移图和符号表征。存储器定序器仲裁器块的符号表征4940指示存储器定序器仲裁器块接收与由摄像机仲裁器块接收的输入信号相同的两个输入信号,并且仅输出Grant输出信号,而不是由摄像机仲裁器块输出的Grant输出信号和Block-Out输出信号这二者。因此,存储器定序器仲裁器块的状态转移图4942比摄像机仲裁器块的状态转移图简单。存储器定序器仲裁器块的特征是在状态转移图中只有单个空闲状态4944,并且重要的是,存储器定序器仲裁器块在多个fastclk间隔期间可以保持在准予状态4946下。 在多存储器定序器实施方式中,除了最后的存储器定序器仲裁器块之外都包括Block-Out 输出信号和与图48B中所示的状态转移图稍有不同的状态转移图。图49C图示说明表征本发明的一个实施方案的存储器控制器内的存储器控制器仲裁器的实施方式。仲裁器包括一系列摄像机仲裁器块4960-4962和单个存储器定序器块 4964。根据相关联的摄像机仲裁器块在摄像机仲裁器块序列中的顺序,按降序对与摄像机仲裁器块4960-4962相关联的摄像机进行优先级排序。因此,与摄像机仲裁器块4960相关联的摄像机具有最高优先级。因此,与存储器定序器仲裁器块4964相关联的存储器定序器具有最低优先级。然而,如上所论述的,存储器定序器在多个fastclk间隔内可以保持在准予或被使能的状态下,而较高优先级的摄像机仅可以在一个fastclk间隔内控制存储器。 高优先级的块通过该高优先级的块的Block-Out输出信号线和低优先级的块的BlockHn 输入信号线连接至该低优先级的块。当特定块在未决或准予状态下时,所有的低优先级块被阻止从未决状态转移到准予状态。图50提供关于表征本发明的一个实施方案的存储器控制器内实现的存储器控制器仲裁器的时序考虑的简单图示说明。在图50中,圆5002的完整环路表征一个pixclk时钟间隔。沿着圆的每个增量(例如增量5004)表征一个fastclk间隔。当所有四个摄像机全都正以最大数据传输速率发送数据时,在每个Pixclk间隔或者在图50中在由一个整圆所表征的时间跨度期间,每个摄像机发送一个数据单元。即使在图50中存储器控制器在两个fastclk间隔中代表摄像机执行存储器传输,则无论从摄像机接收的数据单元的时序或顺序如何,存储器控制器带宽的至少一半(在图50中未加阴影)也仍然可用于存储器定序器或视频编解码器。在图50中,示出存储器传输发生在一个fastclk间隔中,从而 fastclk间隔的3/4可用于视频编解码器存储器操作。当每个pixclk间隔的fastclk间隔的倍数η增大时,存储器控制器带宽的增大部分可用于视频编解码器。因此,pixclk间隔内的fastclk间隔的数目η可以被调整为在视频编解码器存储器存取请求的服务和摄像机存储器存取请求的服务之间的平衡,以及使存储器控制器时钟速率保持在最低可能的水平,以消耗尽可能少的功率以及确保存储器存取不超过对存储器的最大存取速率。图51-Μ提供表征本发明的一个实施方案的存储器控制器的示意图。图51提供表征本发明的一个实施方案的单摄像机存储器控制器的示意图。在这个实施方案中,除了存储器定序器块5104之外,还有单个摄像机块5102。存储器控制器由fastclk信号5106 驱动,fastclk信号5106振荡是摄像机pixclk 5108信号的η倍。仲裁器包括摄像机仲裁器块5110和存储器定序器仲裁器块5112。在图51中图示说明的实施方案中,直接通过逻辑门从仲裁器输出信号和输入到存储器控制器的信号产生存储器控制信号,而不是通过分离的控制复用器产生存储器控制信号。第一复用器5114根据是摄像机块还是存储器定序器当前被来自各自的仲裁器块的Grant信号启用来将摄像机数据或存储器高速缓存数据发送到存储器。摄像机块5012将摄像机输入信号Is、fs和pixclk转化为χ坐标和y坐标,所述χ坐标和y坐标是到坐标复用器5120的输出5116和5118,坐标复用器5120将输入坐标传递到地址转化单元5122上,地址转化单元5122产生地址转化单元发送给存储器的存储器地址。存储器定序器块5104分别将输入的χ坐标51M和y坐标51 转化为存储器χ坐标51 和y坐标5130。图52示出表征本发明的一个实施方案的多摄像机存储器控制器的示意图。在本实施方案中,多个摄像机块5202-5203分别与多个摄像机仲裁器块5204和5205相关联。图53提供图示说明被包括在图51和52中所示的存储器控制器实施方案中的摄像机块的示意图。摄像机块包括先进先出(“FIFO”)缓冲器5308,在缓冲器5308中,由相关联的视频摄像机输入的信息单元被临时储存,用于输出到存储器。这种FIFO缓冲器在数据传输时序方面提供足够的灵活性,以允许仲裁器平衡来自多个摄像机以及来自存储器定序器的竞争请求。在图53中所示的实施方案中,仅当FIFO缓冲器几乎为满时,摄像机块才产生请求信号5310。否则,摄像机块遵从(defer to)其他摄像机块和存储器定序器块,具体地讲,允许存储器定序器执行视频编解码器发起的存储器事务到最满的可能的程度,但是确保及时地将所有摄像机数据传送到存储器,以防止任何摄像机数据损失。在本发明的一个实施方案中,用于每个摄像机块的FIFO包括用于储存四个数据单元的空间。摄像机块还检测由摄像机输入的数据流中的冗余数据,并且当检测到冗余数据时,发送冗余UV信号 5312。在前面的章节中对摄像机输出冗余数据进行了论述。该冗余UV信号允许丢弃摄像机发送的数据流中的冗余数据,而不是插入到FIFO中,以防止不必要的功耗和为将冗余摄像机数据发送到存储器而分配存储器控制器周期。在可替换的实施方案中,FIFO队列可以包含具有足以容纳多个信息单元的大小的入口(entries),所述多个信息单元相对于FIFO 入口以及在FIFO队列中被排序。在本发明的某些实施方案中,摄像机块还可以通过在FIFO 队列内对接收的信息单元进行重新排序来变换信息单元在数据流中的顺序。如所论述的, 信息单元可以是字节、字或另一个大小固定的二进制信息单元。在本发明的某些实施方案中,利用更复杂的、内容可寻址的FIF0( “CAM FIFO”)
38块。CAM FIFO包括多个槽,每个槽包含多个入口,每个槽与χ坐标和y坐标以及Y、U或V指示和计数器相关联。CAM FIFO允许对摄像机输入进行重新排序,用于输出到存储器以及输出更大的数据单元,所述更大的数据单元每个包含多个摄像机输入数据单元。作为一个实施例,虽然摄像机块从摄像机接收8比特像素值,但是FIFO可以被实现为输出32比特字。 在该实施方案中,如图53中所示,当如与槽相关联的计数器具有最大计数器值在内部所指示的那样和如所用的read-OK信号所指示的那样,FIFO几乎满时和将被传输的下一个槽满时,与使能和几乎满信号一起拉高请求信号,以确定对请求信号的输出。图讨提供本发明的一个实施方案中的存储器控制器到存储器接口的示意图。从仲裁器Grant信号M08-5411和“写”信号产生存储器M06的“写”输入M02和“选择”输入M04,所述“写”信号是到存储器定序器的输入M12。本小节中所论述的本发明的存储器控制器实施方案如此提供为视频处理系统提供若干优点。如上所论述的,存储器控制器对将数据流输入到存储器中的多个摄像机以及对处理从摄像机输入的数据的视频编解码器提供公平仲裁,而没有不足(starvation)或数据损失。存储器控制器对视频摄像机数据进行滤波,从而没有浪费存储器控制器周期以将冗余数据传输到存储器,并且使得以其他方式浪费在冗余数据上的存储器带宽可以被代替用于视频编解码器发起的存储器存取操作。表征本发明的实施方案的存储器控制器通过存储器定序器子系统为视频编解码器提供简单的接口,以使得单个的高级存储器操作的结果是,可以在存储器和存储器高速缓存之间交换二维数据,所述二维数据包括宏块和矢量。 处理来自摄像机的输入数据以及来自视频编解码器的存储器请求所需的高时钟频率可以聚集在存储器控制器内,而不是在整个视频编解码器内传播,降低了能量消耗以及视频编解码器设计和制作的成本。总的来讲,当前所论述的存储器子系统族的存储器子系统可以被用于各种应用, 在所述应用中,一个或更多个数据源同时通过存储器控制器数据流接口将数据流发送到存储器,同时,计算引擎或其他装置以随机存取的方式从存储器读取数据和将数据发送到存储器,并且具体地讲,在单个二维随机存取存储器操作中与存储器交换二维数据对象。H六小节表征本发日月的Il 二組鹿施方案的!! 二族存彳诸器子系统如前面的小节中所论述的,通过存储器控制器使得以分离的标准存储器芯片实现的存储器组为特征的本发明的实施方案变为可能,所述存储器控制器以相对高的时钟速率通过存储器高速缓存在视频摄像机与存储器之间并且在视频编解码器与存储器之间执行存储器交换操作。由于需要使存储器高速缓存与存储器之间的数据串行化和并行化,并且需要通过若干数据通信接口交换数据,而引发了大量的数据通信开销。此外,由于标准存储器芯片可以在每个时刻仅为单个存储器请求服务,所以存储器控制器以相对高的频率操作,以提供足够的仲裁器周期,来公平地对同时发送的摄像机和视频编解码器之间的存储器存取进行仲裁。本小节中所公开的新类型的存储器(称为“多路存取存储器”)可以被用在视频处理系统和许多其他类型的计算系统中,以为多个存储器存取装置提供并行存取,而无需仲裁和/或复用。这种多路存取存储器可以提供比传统的RAM存储器效率高得多的数据储存器介质,并且可以被定制来提供与视频处理系统或其他类型的计算系统的需求相匹配的存取速率、操作速度和性能。
图55图示说明表征本发明的一个实施方案的多路存取存储器的操作。在视频处理系统应用(例如前面的小节中所论述的视频处理系统)中,存储器阳02被分割为多个分区5504-5507,每个分区分别与特定的视频摄像机5508-5511相关联。存储器可以包括用于储存视频编解码器独有数据的附加分区阳12。每个摄像机可以同时将帧线5514-5517写入存储器,而不干扰其他摄像机,并且不被其他摄像机干扰。同时,视频编解码器可以对存储器的当前没有被摄像机写入的任何部分(例如宏块5518)进行存取,用于写入或读取。在图55中,宏块5518从存储器被写入高速缓冲存储器5522中的对应的宏块5520。如此,多路存取存储器支持多个视频摄像机中的每个以及视频编解码器通过存储器高速缓存同时存取。多路并行存取的唯一限制是储存在存储器中的帧内的单行线不能被多个实体同时存取。图56抽象地图示说明表征本发明的一个实施方案的多路存取存储器的操作。存储器包括存储器储存元素网格5602,每个元素也称为“单位”或“单元”,用于储存单个比特。 多个网格可以被组合为存储器子系统内的多个面,其中信息单位(例如字节)在整个面上分布,或者根据更复杂的分布模式分布。在视频数据处理系统中,视频帧的线储存在网格的水平行中,所述水平行例如为图56中加阴影的水平行5604。通过以下所论述的顺序移位操作将摄像机数据通过行复用器5608输入到存储器。如上所论述的,摄像机数据是下述信息单位的串流,所述信息单位可以通过使用由摄像机供给的Is信号和fs信号而被解释为视频帧的线内的信息单位。行解复用器5608将摄像机数据流解复用为帧的行,在存储器写操作期间通过重复的顺序移位操作连续地填充每一行,每次一行。还可以通过列解复用器 5610和行解复用器5612以随机的方式对存储器进行存取,列解复用器5610和行解复用器 5612 一起提供对多路存取存储器的二维随机存取。为了选择特定的存储器单元5620进行读或写访问,如图56所示,χ坐标5614被输入到列复用器5610,并且y坐标5615被输入到行复用器5612。如此,存储器支持视频处理系统应用中的视频编解码器进行的二维随机存取以及用于将帧线从从摄像机输入的数据流写入到存储器中的基本一维写访问。由于多摄像机视频处理系统中的每个摄像机被提供不同的且分离的存储器分区和行解复用器,所以摄像机不相互干扰,并且可以同时写入存储器。假设存储器的存取部分不被摄像机同时写入,则通过列复用器5614和行复用器5612对存储器进行存取的视频编解码器可以对存储器的任何部分进行存取。摄像机和视频编解码器对特定存储器单元的同时存取可以通过冲突检测子系统来防止,或者可替换地,可以通过视频编解码器监控摄像机输入行为并确保没有存取针对当前正从摄像机数据流输入的视频帧来防止。图57图示说明根据本发明的一个实施方案的多面存储器系统。在图57中,存储面组5704的每个面(例如面570 是存储器网格,例如图56中所示的存储器网格5602。 摄像机和视频编解码器中的每个通过解码器5706和数据信道5708对存储器进行存取。从解码器输出的公共信号5710驱动所有存储面中的存储器存取操作。相反,从数据信道输入的数据分布在整个存储面上。在图57中所示的实施方案中,一个字节数据的每个比特被发送到分离的存储面,并且被储存在该存储面内。因此,图57示出八个存储面,每个接收的字节的比特被写入到这八个存储面,并且从这八个存储面检索从存储器发送的每个字节的比特。如以上所提及的,除了字节之外的信息单位可以被多路存取存储器接收,并且可以根据各种分布方案来分布,所述分布方案包括更复杂的交错方案。
图58图示说明多路存取存储器中的根据本发明实施方案的与每个摄像机相关联的存储器分区的分割。在图58中,与第一摄像机相关联的存储器分区5802被进一步分割为帧大小的存储器区域,例如存储器区域5804。存储器系统将存储器中连续排序的帧作为存储器FIFO进行处理。这些帧基本上形成循环FIFO队列5806,视频摄像机数据被连续流传输到循环FIFO队列5806。当前帧指针5808指示存储器分区内的当前帧,摄像机当前正将数据发送到该当前帧,或者接着将会将数据发送到该当前帧。通过检测从摄像机输出到存储器的fs信号中的边缘来增加帧指针。图59图示说明根据本发明的各个实施方案将帧写入到多路存取存储器。在图59 中,帧数据的二维表征5902被示为用列索引χ和行索引y编索引的直线网格。如图59所示,以镜像反射的方式将数据写入到多路存取存储器5904,所述镜像反射将列索引χ反向。 在图59的下面部分,图示说明了在一行数据传送到多路存取存储器期间的第一四个数据传送移位操作。行中的第一数据单元5906被传送到多路存取存储器的对应行的第一数据储存单元5908。下一个数据单元5910被传送到存储器行的第一数据储存元素5908,存在于该第一存储器元素中的值同时被传送到该行内的第二数据储存单元5912。换句话讲,每个数据单元通过移位操作被输入,其中整个多路存取存储器行作为非常长的移位寄存器操作。每个随后的数据值被传送到存储器行的第一数据储存单元,其中当前储存在该行中的所有数据值向右移动一个位置。这种操作在多路存取存储器中生成视频帧的镜像反射。多路存取存储器包含容纳最大可能宽度的视频帧的足够大小的行。可以使用较少的移位操作将较窄的视频帧储存到多路存取存储器中。可以以逐行的方式通过另外的移位操作将视频帧移出存储器的相对侧来从多路存取存储器读取视频帧。这种基于移位的视频帧读取操作可以被用于例如将解压缩的视频数据发送到显示装置进行显示。接下来,提供以上参照图55-59所论述的多路存取存储器的实施方式。图60图示说明信号反向器。在图60的中央提供信号反向器6002的符号表征。信号反向器将输入 “1”数字信号反向为“0”,并且将输入“0”数字信号反向为“1”。如图60中的示意图6004 所示,信号反向器可以使用两个互补金属氧化物半导体(“CMOS”)晶体管来实现。ρ型晶体管6006与η型晶体管6008串联连接。ρ型晶体管的源极连接至与布尔值“ 1”6010对应的电压,并且η型晶体管的漏极连接至地6012。输入布尔值“0” 6014激活ρ型晶体管6006, 并且使η型晶体管6008停止工作,从而得到布尔值“1”的输出6016。类似地,如图60中的示意图6020所示,输入布尔值“ 1,,得到布尔值“0”的输出。图61示出用于表征本发明的一个实施方案的多路存取存储器的存储器单位或存储器单元的示意图以及存储器单元的符号表征。存储器单元的符号表征6102示出接收五个输入信号的存储器单元(1) ,Ain,通过随机存取存储器存取操作被输入以储存在存储器单元中的值的二进制补码;0)SIn,被输入到图56中的行解复用器5608的值,以基于移位操作输入到存储器单元;(3) Shiftl和》!ift2信号6102-6107,用于将信号线Sh上输入的值移位到存储器单元中;(4) Awrite,控制将信号线ι Ain 6104上输入的值写入到存储器单元中;以及(5)0utRd 6109,控制将存储器单元的内容输出到输出信号线Out 6112。 存储器单元连续地将当前储存的值输出到输出信号线SOut 6110。如图61中的存储器单元6102的符号表征所示,存储器单元没有改变地输出输入信号Siiftl、Shift2、Awrite和 OutRd0在图61中还提供了存储器单元的示意图6120。将信号线OutRd设置为高导通晶
41体管T4 6122,并且导致在触发器6131中储存在存储器单元内的数据被输出到输出信号线 "Out"6124.将布尔值“1”输入到输入信号线“Shiftl”6125激活晶体管Tl 6126,以将信号线SIn 6127上的值输入到反向器Il 6128。将布尔值“ 1 ”输入到输入信号线Siift2 6129激活晶体管T2 6130,以将反向的Sh输入输出到触发器6131,触发器6131包括反向器12 6132和13 6133。触发器肯定地储存输入值的补码,而无需增量刷新(incremental refresh)。触发器由此构成静态比特储存单位。相反,反向器Il 61 依赖于动态电荷转移,所述动态电荷转移用于使输入信号SIn反向,并且将反向的信号2传送到触发器6131。 在存储器写移位操作周期中,首先通过将“1”输入到Siiftl来激活晶体管Tl,以将信号SIn 输入到反向器II,并且然后使晶体管Tl停止工作或断开,同时随后激活晶体管T2,以将反向的Sh信号从反向器Il传送到触发器6131。移位操作的间隔足够快,以至于输入到反向器Il的值在该值的补码输出到触发器之前没有消失。为了将信号,Ain 6136的值输入到触发器6131中,输入信号Awrite 6134激活或者闭合晶体管T3 6135。使用SIruSiiftl 和Shift2输入将摄像机数据写入到存储器单元中,并且通过Awrite、OutRd和,Ain输入将数据写入到视频编解码器的数据单位和从视频编解码器的数据单位检索数据。图62A-C图示说明将数据移位到表征本发明的一个实施方案的多路存取存储器的存储器单元中。一开始,如图62A所示,存储器单元将布尔值“0”储存在触发器6202中。 当前通过输入信号线SIn 6204输入布尔值“1”。如图62B所示,拉高输入信号线Siiftl 6206,以激活晶体管Tl,并且将输入值“1”从Sh传递到反向器Il 6207。接着,如图62C 所示,拉低输入信号线Shiftl,以使晶体管Tl 6208停止工作,并且为了激活晶体管T2 6212并将由反向器Il输出的布尔值“0”输入到触发器6214中,拉高输入信号线Siift2 6210,在触发器6214中,输入值“0”再次被反向,并且被储存为布尔值“1”。注意的是,在图62B中,如果第二存储器单元位于图示说明的存储器单元的右边,并且第二存储器单元的Sh输入连接至图示说明的存储器单元的SOut输出6216,并且图示说明的存储器单元的 Shiftl和Shift2直接连接至第二存储器单元的Shiftl和Shift2,则图示说明的存储器单元中的当前值将在移位操作中被移位到第二存储器单元进行储存。因此,将存储器单元一起互连在一行中产生移位寄存器。图63A-C图示说明根据本发明的实施方案将布尔值“0”写入到当前储存布尔值 “1”的存储器单元。图63A-C使用与图62A-C中所用的图示惯例相同的图示惯例。图64A-B图示说明根据本发明的实施方案的当前储存在多路存取存储器的存储器单元中的值到输出信号线的输出。在图64A中,存储器单元当前储存布尔值“1”6402。 通过拉高如图64B中所示的OutRd信号线6404,激活晶体管T4 6406,并且将储存的布尔值“1”输出到输出信号线Out 6408。图65A-B图示说明通过两根输入信号线将值写入到表征本发明的一个实施方案的存储器单元中。如图65A所示,存储器单元当前储存布尔值 “0”6502。布尔值“1”输入到信号线Awrite 6504和布尔值“0”输入到信号线,Ain 6506 导致将布尔值“ 1,,6508储存在存储器单元中。图66A-B示出使用图61中所图示说明的类型的16个存储器单元的4X4存储器储存阵列的实施方式和4X4存储器储存阵列的符号表征。在图66A中,图61中所图示说明的类型的16个存储器单元(包括存储器单元660 被布置成提供4X4存储器储存阵列的二维网格。每个存储器单元储存单个比特的信息。如以上参照图56所论述的,4X4阵列的每一行可以通过如参照图59所论述的四个移位操作系列来写入,也可以通过如参照图56所论述的二维随机存取来写入。在随机存取写期间,数据被输入到存储器单元的,Ain输入。 因此,在随机存取写期间,存储器单元被逐个存取。类似地,特定存储器单元的Out输出在随机存取读操作期间输出值。在图66A中,,Ain输入被示出连接至标记为"Axy”的二维输入信号线网格,其中,χ和y是4X 4阵列内的存储器单元的坐标,并且Out输出连接至标记为“Yxy”的二维输入信号线网格,其中,χ和y是4X4阵列内的存储器单元的坐标。图66B 示出4X4存储器单元阵列的符号表征。4X4存储器单元阵列的特征是被传递到行中的每个存储器单元的Wr和Rd输入以及φ 和φ2输入,Wr和Rd输入连接至每行中的第一个存储器单元的Awrite和OutRd输入,φ 和φ2输入连接至每行中的第一个存储器单元的Shiftl 和Shift2输入。图67示出根据本发明的实施方案的基于4X4存储器储存阵列(例如图66A中所示的4X4存储器储存阵列)的更大容量存储器的示意图。行解码器6702与解复用器6730 和6731 —起作为图56中的行解复用器5608操作。列解码器6704和行解码器6706 —起作为图56中的列解复用器5614和行解复用器5612操作。在输出收集信号线YLtl 6708和信号线YL1 6710上收集来自每一行存储器单元的输出值。从用于行的公共输出收集信号线读取该行内的特定存储器单元的输出。二维存取解码器块(“2DDeCOde (2D解码)”)6720-6723 的2X2块由行解码器6706和列解码器6704驱动,以将合适的Wr信号和Rd信号输出到 4X4阵列。注意的是,在任何时刻仅选择图67中所示的多路存取存储器的单个行,以供行解码器6702与解复用器6730和6731基于移位操作进行写入。因此,如参照图56所论述的,包括行解码器6702及解复用器6730和6731的行解复用器通过以下方式适当地执行基于移位操作的行写操作,所述方式即,对由存储器控制器的摄像机块供给的χ坐标和y坐标进行解码,并且在两个连续的Pixclk滴答信号的每个间隔内交替地拉高和拉低φ 6736和 φ2 6737输入信号。图67意在图示说明大量存储器单元可以互连,来形成图57中图示说明的任意大的存储面,以实现多路存取存储器,所述多路存取存储器允许多个摄像机同时进行基于移位寄存器的写访问和视频处理系统应用的视频编解码器进行随机存取。图68图示说明作为本发明的一个实施方案的图67中图示说明的存储器储存阵列中所示的二维存取解码器块的示意图。每个二维存取解码器块将Wr信号和Rd信号输出到对应的4X4阵列。当由列解码器(图67中的6704)和行解码器(图67中的6706)输出的列和行与2DDeCOde的索引匹配时,当输入Read (读)为高时,2DDeCOde输出Rd信号,并且当输入Write (写)为高时,输出Wr信号。图69图示说明表征本发明的一个实施方案的与以上参照图65-68所论述的多路存取存储器接口连接的存储器控制器。与图48A-H中图示说明的存储器控制器一样,与多路存取存储器6904接口连接的存储器控制器6902包括与每个摄像机相关联的摄像机块 6906-6908和与视频编解码器相关联的存储器定序器块6910。与前面描述的存储器控制器一样,存储器定序器块中的每个摄像机块输出数据、二维地址和时钟信号。然而,图69中所示的存储器控制器不利用仲裁器或复用器,而是将输出信号直接传递到多路存取存储器的解码器6912-6915。摄像机数据因此可以在没有仲裁或复用的情况下被直接发送到存储器, 并且可以在没有仲裁或复用的情况下通过存储器定序器与存储器高速缓存交换数据。视频编解码器可以监控摄像机块所使用的当前帧指针,以确保视频编解码器不发起与摄像机存储器存取操作冲突的存储器存取操作,或者,在本发明的可替换实施方案中,简单的冲突检测电路可以被包括在存储器控制器中,以确保存储器定序器发起的存储器存取操作不与摄像机写访问操作冲突。虽然已经就特定实施方案对本发明进行了描述,但是意图并不是使本发明限于这些实施方案。对于本领域技术人员,在本发明的精神内的修改将是明显的。例如,可以用各种集成电路设计规范语言(包括VHDL和Veri log)中的任何一种,来对表征本发明实施方案的存储器控制器和多路存取存储器进行编码。可以任意分配二进制信号的意义,并且本发明的不同实施方案可以利用不同的信号编码惯例。可以根据本发明的各个实施方案制作具有任意大小的存储器子系统。在视频系统应用的背景下对存储器子系统进行了论述,但是存储器子系统可以用在以同时数据流写入和对存储器的二维随机存取为特征的其他应用中。许多不同的集成电路制作技术中的任何一种可以被用于实现本发明的各种可替换的实施方案。许多可替换的电路和子系统部件设计可以被设计来实现表征本发明实施方案的存储器子系统。为了说明的目的,前面的描述使用特定的术语来提供本发明的充分理解。然而,本领域技术人员将明白的是,实施本发明不需要特定细节。为了图示说明和描述的目的,呈现本发明的特定实施方案的前面的描述。它们的意图不是穷举或者将本发明限于所公开的精确形式。鉴于以上教导,许多修改和改动是可以的。为了最佳地说明本发明的原理及其实践应用,示出并描述了实施方案,从而使得本领域技术人员能够最佳地利用本发明和具有适合于所考虑的特定用途的各种修改的各种实施方案。意图的是,本发明的范围由所附的权利要求及其等同形式限定。
权利要求
1.一种存储器子系统,所述存储器子系统包括存储器;以及存储器控制器,所述存储器控制器提供一个或更多个数据流接口,为各个存储器单元和二维存储器区域提供随机存取接口,在数据流接口和随机存取接口之间进行仲裁,以使通过所述数据流接口和所述随机存取接口接收的同时请求的存储器存取串行化,通过将数据流输入写入到存储器来执行通过所述数据流接口请求的存储器存取,以及通过从存储器单元和二维存储器单元区域读取值和将值写入到存储器单元和二维存储器单元区域来执行通过所述随机存取接口请求的单存储器单元和二维存储器单元区域的存储器存取。
2.如权利要求1所述的存储器子系统,在单集成电路计算引擎内实现。
3.如权利要求1所述的存储器子系统,在计算引擎芯片组内实现。
4.如权利要求1所述的存储器子系统,在存储器集成电路内实现。
5.如权利要求1所述的存储器子系统,其中所述存储器子系统由具有下述频率的 fastclk时钟信号控制,所述频率至少是所述存储器控制器通过所述一个或更多个数据流接口中的任一个接收的最快时钟信号的频率的η倍,其中η大于2,并且其中从数据流接口接收的所述时钟信号便利于所述存储器控制器通过所述数据流接口接收的所述数据流的数据单元的存储器控制器接收的同步。
6.如权利要求5所述的存储器子系统,其中所述存储器子系统包括仲裁器,所述仲裁器在所述数据流接口和所述随机存取接口之间进行仲裁,以使通过所述数据流接口和所述随机存取接口接收的同时请求的存储器存取串行化,所述仲裁器包括与每个数据流接口对应的数据源仲裁器块和与所述随机存取接口对应的存储器定序器块。
7.如权利要求6所述的存储器子系统,其中所述一个或更多个数据源仲裁器块和所述存储器定序器仲裁器块在一个序列中被链接在一起,所述数据源仲裁器块和所述存储器定序器仲裁器块在所述序列内的位置限定所述数据源仲裁器块和所述存储器定序器仲裁器块中的每个的优先级,其中第一位置中的所述数据源仲裁器块具有最高优先级,其余优先级随着相关联的数据源仲裁器块在所述序列中的位置增大而降低,并且所述或存储器定序器仲裁器块具有最低优先级。
8.如权利要求7所述的存储器子系统,其中每个数据源仲裁器块为单个写操作获取存储器控制,但是然后交出存储器控制,以允许其他数据源仲裁器块或所述存储器定序器仲裁器块获取存储器控制。
9.如权利要求7所述的存储器子系统,其中所述存储器定序器仲裁器块获取存储器控制,直到来自通过数据流接口输入的数据流的数据损失的可能性迫使所述仲裁器从所述存储器定序器仲裁器块撤销存储器控制并且将存储器控制授予所述数据流接口为止。
10.如权利要求7所述的存储器子系统,其中单数据源仲裁器块或所述存储器定序器仲裁器块在任何时间被授予存储器控制,其中与当前通过数据流接口请求存储器存取的所述数据流接口相关联的较高优先级的数据源仲裁器块阻止将存储器控制授予较低优先级的数据源仲裁器块,并且其中所述最高优先级的存储器存取请求接收数据源仲裁器块或存储器定序器仲裁器块接着被授予存储器控制。
11.如权利要求6所述的存储器子系统,还包括一个或更多个数据源块和存储器定序器块,所述一个或更多个数据源块每个实现数据流接口,并且每个与用于所述数据流接口的数据源仲裁器块相关联,所述存储器定序器块实现所述随机存取接口,所述随机存取接口提供对各个存储器单元和二维存储器区域的存取,并且与所述存储器定序器仲裁器块相关联。
12.如权利要求11所述的存储器子系统,其中每个数据源块包括FIFO队列,所述FIFO 队列用于临时储存通过所述数据流接口输入的所述数据流的数据单元,所述数据流接口由所述数据源块实现。
13.如权利要求12所述的存储器子系统,其中被包括在通过所述数据流接口接收的数据流中的冗余数据单元被所述数据源块丢弃,而不是被插入到FIFO队列中,所述数据流接口由所述数据源块实现。
14.如权利要求5所述的存储器子系统,其中所述fastclk的频率足够高,以允许所述存储器子系统在储存通过所述一个或更多个数据流接口输入的所述数据流的同时满足通过所述随机存取接口接收的存储器存取请求。
15.如权利要求1所述的存储器子系统,其中所述存储器包括一个或更多个存储器集成电路。
16.如权利要求1所述的存储器子系统,其中所述数据流接口从视频摄像机接收数据流,并且所述随机存取接口从视频编解码器接收随机存取存储器请求。
17.—种多路存取存储器,所述多路存取存储器包括存储器单元的直线网格,每个存储器单元储存信息比特;行解复用器,所述行解复用器通过沿着行解复用器在存储器单元的直线网格内选择的一行存储器单元的移位操作来将比特从数据流引导到存储器单元中;以及行解复用器和列解复用器对,所述行解复用器和列解复用器对将在随机存储器存取写请求中接收的比特引导到由所述行解复用器和列解复用器对选择的存储器单元中,并且从由所述行解复用器和列解复用器对选择的存储器单元检索通过随机存储器存取读请求所请求的比特。
18.如权利要求17所述的多路存取存储器,其中所述多路存取存储器包括一个或更多个行解复用器,所述行解复用器每个通过沿着由所述行解复用器选择的一行存储器单元的移位操作来将比特从数据流引导到存储器单元中,每个行解复用器与所述存储器单元的直线网格的不同区域相关联。
19.如权利要求18所述的多路存取存储器,其中所述多路存取存储器被同时存取,以通过移位操作并且通过随机存储器存取写请求和随机存储器存取读请求从数据流写入至少一行。
20.如权利要求17所述的多路存取存储器,其中存储器单元包括反向数据储存单元, 所述反向数据储存单元静态地没有更新地储存在数据储存单元输入上接收的数据比特的补码,并且连续地将储存的所述数据比特的补码输出到存储器单元移位输出。
21.如权利要求20所述的多路存取存储器,其中所述数据储存单元为包括两个反向器的触发器。
22.如权利要求21所述的多路存取存储器,其中所述存储器单元还包括第一移位操作晶体管,所述第一移位操作晶体管的源极输入连接至存储器单元数据流输入,并且所述第一移位操作晶体管的栅极连接至存储器单元Siiftl输入;第二移位操作晶体管,所述第二移位操作晶体管的漏极输出连接至所述数据储存单元输入,并且所述第二移位操作晶体管的栅极连接至存储器单元aiift2输入;连接的反向器,所述反向器的输入连接至所述第一移位操作晶体管的漏极输出,并且所述反向器的输出连接至所述第二移位操作晶体管的源极输入;存储器单元随机存取输出晶体管,所述存储器单元随机存取输出晶体管的栅极连接至存储器单元存储器单元随机存取读输入,所述存储器单元随机存取输出晶体管的源极输入连接至所述存储器单元移位输出,并且所述存储器单元随机存取输出晶体管的漏极输出连接至存储器单元随机存取读输出;以及存储器单元随机存取输入晶体管,所述存储器单元随机存取输入晶体管的栅极连接至存储器单元存储器单元随机存取写输入,所述存储器单元随机存取输入晶体管的源极输入连接至存储器单元随机存取输入,并且所述存储器单元随机存取输入晶体管的漏极输出连接至所述数据储存单元输入。
23.如权利要求22所述的多路存取存储器,其中通过以下方式将比特从所述存储器单元数据流输入移位到所述存储器单元中,所述方式即,拉高aiifti存储器单元输入,拉低 Shifti存储器单元输入,并且拉高aiift2存储器单元输入。
24.如权利要求22所述的多路存取存储器,其中通过拉高所述存储器单元随机存取写输入来将比特从所述存储器单元随机存取输入写入到所述存储器单元中。
25.如权利要求22所述的多路存取存储器,其中通过拉高所述存储器单元存储器单元随机存取读输入来在所述存储器单元随机存取读输出上从所述数据储存单元读取比特。
26.如权利要求22所述的多路存取存储器,其中在所述存储器单元的直线网格中,存储器单元行用作移位寄存器,其中除了每行中最后的存储器单元之外的存储器单元的存储器单元移位输出都连接至所述行中的下一个存储器单元的所述存储器单元数据流输入。
27.如权利要求17所述的多路存取存储器,与存储器控制器耦合,以构成存储器子系统。
全文摘要
本发明的实施方案涉及在计算引擎的并行流水线式集成电路实施方式内实现的或者连接至计算引擎的并行流水线式集成电路实施方式并被所述并行流水线式集成电路实施方式存取的存储器子系统,所述计算引擎被设计来解决复杂计算问题。本发明的附加实施方案涉及在各种不同类型的电子装置内实现的或者连接至各种不同类型的电子装置并被这些电子装置存取的存储器子系统。本发明的一个实施方案包括存储器控制器和一个或更多个分离的存储器装置,所述存储器控制器在第一集成电路或其他电子系统中被实现。本发明的可替换实施方案将存储器控制器合并在一个或更多个存储器装置内,所述一个或更多个存储器装置连接至集成电路实现的计算引擎或另一个电子装置并被所述计算引擎或另一个电子装置存取。在本发明的可替换实施方案中,存储器控制器和存储器一起被集成在计算引擎或另一个电子装置内。本发明的可替换实施方案包括与更简单的存储器控制器接口连接的多路存取存储器,以连接至计算引擎或其他电子装置或者集成在计算引擎或其他电子装置内。
文档编号G11C19/38GK102369552SQ200980158006
公开日2012年3月7日 申请日期2009年12月21日 优先权日2009年1月12日
发明者A·鲁亚科斯, J·鲁宾斯坦 申请人:美信集成产品公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1