用于视频数据的处理器的制作方法

文档序号:7717103阅读:161来源:国知局

专利名称::用于视频数据的处理器的制作方法
技术领域
:无
背景技术
:视频信息在当今世界中随处可见。儿童从为视频而准备的电视节目和教育课程中学习。成年人使用视频进行娱乐并保持对时事的了解。与用于记录和分布视频信息的较旧的模拟机制相比,数字多用途光盘(DVD)、数字电缆和卫星电视使用数字视频数据。数字视频数据在当今的家庭和办公室环境中已变得越来越流行。处理数字视频数据中涉及的数值计算量需要极大量的计算能力。产生典型质量的一秒钟视频的数字视频数据需要执行的算术计算在数千万次与十亿次之间。与用于数字视频数据的软件编码器、解码器和代码转换器相比,硬件可用于加速视频计算。然而,典型的硬件设计方法仅仅对一个特定分辨率下的一种特定格式的视频数据操作。因此需要对不同分辨率、标准、格式等的视频数据起作用的硬件。
发明内容本发明的各种实施例提供用于处理视频数据的系统和方法。在一优选实施例中,视频处理器在运行时间配置经配置以便对具有各种属性的视频数据进行操作。这些流可具有属性(包括格式、标准化、分辨率、编码、压縮或其它属性)的各种组合。视频处理器根据动态控制机制来对各种视频数据流进行操作,所述动态控制机制包括(但不限于)寄存器中保存的程序或动态可配置值。本发明的某些实施例提供一可经由一指令序列来动态配置的视频处理器,其中所述指令包括关于当前视频数据的属性的信息。此信息配置视频处理器以便接收具有特定属性的视频数据,以便产生具有特定属性的视频数据,或两种情况均可。视频处理器的操作由至少一个指令序列控制。可同时采用多个序列,借此使处理器同时产生和/或接收具有不同属性的视频流。在本发明的某些实施例中,一个或一个以上控制处理器将指令序列提供到视频处理器。控制处理器和视频处理器适合于作为协处理器而共同操作。或者或另外,指令序列可存储在一个或一个以上指令存储器中或与视频处理器相关联的队列中。本发明的某些实施例提供一可经由控制机制来动态配置的加法器阵列,所述控制机制包括(但不限于)指令、寄存器值、控制信号或可编程链接。在处理器通过加法器阵列发送视频数据时,阵列产生处理视频数据所需的数字、逻辑或连续计算结果。在本发明的某些实施例中,使用加法器阵列来计算差值函数从而产生误差向量。误差向量可用于检测时间相关的多组视频数据之间的运动。误差向量也可用于计算输出视频中编码的残余数据。在本发明的某些实施例中,还使用加法器阵列来计算施加于视频数据的过滤函数。这些过滤函数包括(但不限于)在运动检测之前对传入的视频的插值或抽选。经抽选或插值的PEL可用于产生具有与输入视频不同的属性的输出视频。或者或另外,仅在编码或压縮处理期间持续的经抽选或插值的PEL可用于增加输出视频的精度或感知质量。这些用途包括(但不限于)分级技术,其基于减小一初始顶层运动扫描的输入视频的分辨率来增加运动检测的性能;或插值技术,其用于增加运动检测的精度。本发明的某些实施例提供动态可配置硬件搜索操作。可出于各种目的而在编码视频时使用这些操作,所述目的包括(但不限于)检测时间相关的多组视频数据之间的运动。单个硬件操作将一组视频数据内的参考块与同一组或一不同组视频数据内的一组区域进行比较。除了视频数据的属性是可动态配置的之外,所述组内区域的数目和各个区域之间的相对偏移量和是可动态配置的。使用自适应计算机(ACM)来实施本发明的某些实施例。一ACM包括复数个异类计算元件,其每一者均耦合到一互连网络。当结合附图阅读时,从本文的描述和讨论将明了本发明的各种实施例的目的、特征和优点。在所附图式中说明与本发明相关的技术、本发明的实例实施例和本发明的实例用途图1展示根据本发明实施例的视频处理器的高级功能方框图。图2展示根据本发明实施例的域视频节点(DVN)。图3展示如何根据本发明实施例来界定中心搜索位置。图4展示根据本发明实施例的48X48参考块内的搜索区域。图5展示根据本发明实施例的同时搜索中心8X5位置的处理。图6展示根据本发明实施例的搜索中心九组8X5位置的处理。图7展示根据本发明实施例的半PEL双线性插值的处理。图8展示根据本发明实施例的全PEL至半PEL双线性插值的处理。图9展示根据本发明实施例的半PEL编号惯例。图10展示根据本发明实施例的基于h.264六分支过滤的半PEL插值的处理。图11展示根据本发明实施例的基于六分支过滤的h.264半PEL插值的处理。图12展示根据本发明实施例的自适应计算机(ACM)节点的某些元件。图13展示根据本发明实施例的域视频节点(DVN)编程模型内的某些硬件元件。图14展示根据本发明实施例的有限状态机(FSM)的状态转变表。图15展示根据本发明实施例的DVN的任务参数列表(TPL)。图16展示根据本发明实施例的TPL内的位置0x00至0x03的格式。图17展示根据本发明实施例的TPL内的位置0x04和0x05的格式。图18展示根据本发明实施例的TPL内的应答+测试参数的格式。图19展示根据本发明实施例的设置与继续寄存器的格式。图20展示根据本发明实施例的设置与继续字节代码的格式。图21A至21E展示根据本发明实施例的应答+测试字节代码的格式。图22展示根据本发明实施例的"典型"任务TPL条目和字节代码的格式。图23展示根据本发明实施例的组织为具有512个32位的字的八个存储库的DVN存储器的存储映射图。图24展示根据本发明实施例的命令缓冲器数据结构的格式。图25展示根据本发明实施例的"至控制器"状态字的格式。图26展示根据本发明实施例的根据用于M乘N的5X5搜索范围的存储器与时钟周期的参考块长字的格式。图27展示根据本发明实施例的分数PEL成本函数和表的格式。图28展示根据本发明实施例的具有M=50列和N=50行的参考块的存储器布局。图29展示根据本发明实施例的尺寸为16PEL乘16PEL的当前块的存储器布局。图30展示根据本发明实施例的50乘50参考块内的搜索区域。图31展示根据本发明实施例的同时搜索中心5乘5位置的处理。图32展示根据本发明实施例的同时搜索中心9组5乘5位置的处理。图33展示根据本发明实施例的四十九组5乘5位置的穷举搜索的处理。图34展示根据本发明实施例的在没有重新载入预插值缓冲器的情况下加/减17搜索的参考块尺寸。图35展示根据本发明实施例的需要预插值缓冲器重新载入的全PEL搜索区域。图36展示根据本发明实施例的全PEL至半PEL双线性插值。图37展示根据本发明实施例的半PEL双线性插值阵列。图38展示根据本发明实施例的用于H.264视频的基于6分支过滤的半PEL插值。图39展示根据本发明实施例的半PEL插值有限脉冲响应(FIR)过滤的概述。图40展示根据本发明实施例的半PEL编号惯例。图41展示根据本发明实施例的用于MicrosoftWindows⑧媒体视频(丽V)的子PEL插值FIR过滤的概述。图42展示根据本发明实施例的四分之一PEL编号惯例。图43展示根据本发明实施例的DVN的执行单元。具体实施例方式本文的描述、讨论和图式说明与本发明相关的技术,且展示本发明和使用本发明的实例。可在不给定细节的情况下说明和描述已知方法、程序、系统、电路或元件,以便避免混淆本发明的原理。另一方面,描述本发明的特定实施例的细节,即使这些细节可能不会应用于本发明的其它实施例。本文中的某些描述和讨论使用抽象或普通术语,包括(但不限于)接收、呈现、提示、产生、是或否。所属领域的技术人员使用这些术语作为用于计算机、数字设备或机电系统内的组件、数据或操作的术语。这些组件、数据和操作体现在实际物体的物理特性中,所述物理特性包括(但不限于)电子电压、磁场和光学反射率。类似地,包括(但不限于)比较、确定、计算和控制的理解性或思维性术语也可用于提到这些组件、数据或操作,或提到这些物理操作。图1是根据本发明实施例的视频处理器的高级功能方框图。视频处理器100包括一个或一个以上视频数据设备110,其保存或提供对视频数据的网络访问;一个或一个以上视频计算引擎120;—个或一个以上设备130,其保存当前状态信息;一个或一个以上控制模块140;和一个或一个以上控制与配置数据设备150,其保存或提供对控制与配置数据的网络访问。视频数据110包括(但不必限于)输入视频数据112、输出视频数据114和中间结果116。在本发明的各种实施例中,视频数据IIO保存在以下一者或一者以上中与视频处理器100的其余部分处于同一集成电路内的存储器模块;所述IC外部的存储器设备;寄存器堆;或保存数据的其它电路。视频计算引擎120包括(但不必限于)以下各者输入多路复用器122;滤波器功能电路124;运动搜索电路126;误差(例如,绝对差和(SAD))计算电路127;和输出格式器电路128。运动估计引擎120接收输入视频数据112和中间结果116,并产生中间结果116和输出视频114。视频计算引擎120应用到所接收数据以便产生结果116和114的处理功能和操作受控制信号146控制。在信号146控制下,引擎120的各种实施例执行各种功能,包括(但不限于)编码、解码、代码转换和运动估计。视频输入112、视频输出114和中间结果116的属性由控制信号146指定。这些属性包括(但不必限于)格式、标准化、分辨率、编码或压縮度。控制模块140基于控制与配置数据150和当前状态数据130产生控制信号146。控制模块140包括(但不必限于)硬件任务管理器142、有限状态机144和命令解码器146。当前状态130包括(但不必限于)视频数据110内各项已准备处理的指示,以及控制与配置数据150内的各种数据项已准备好控制应用到视频数据110的处理操作的指示。当前状态130实施计算的数据流模型,因为处理是在视频数据和控制与配置数据就绪时发生。6控制与配置数据150包括(但不必限于)命令序列152、任务参数列表154和地址与指针156。地址与指针156是指视频数据110、控制与配置数据150或此两者内的各个数据项。在本发明的各种实施例中,视频数据IIO保存在以下一者或一者以上中与视频处理器100的其余部分处于同一集成电路内的存储器模块;所述IC外部的存储器设备;寄存器堆;或保存数据的其它电路和设备。视频数据110的各种组份具有各种属性,包括(但不限于)格式、标准化和分辨率。视频数据110内的组份可具有包括以下各项中至少一者的格式MPEG-2、MPEG-4版本;Windows媒体视频(丽V)版本;或国际电信联盟(InternationalTelecommunicationsUnion,ITU-T)标准X.264版本。X.264还已知为领导标准开发的群组之后的联合视频组(jointvideoteam,JVT)。X.264还已知为国际标准组织/国际电工委员会(IS0/IEC)标准运动图像专家组第4层(MPEG-4)第10部分。视频数据110内的组份可具有一分辨率,其包括约四分之一CEL(例如将由手机拍摄的静止图片所使用)与由高清晰度电视(HDTV)版本所界定的约一分辨率之间的任何分辨率。自适应计算机(ACM)包括由同等级网络(homogeneousnetwork)连接的异类节点。这些异类节点包括(但不限于)域视频节点(domainvideonode,DVN)。这种同等级网络包括(但不限于)矩阵互连网络(MIN)。在以上引用为相关申请案的专利和专利申请案中描述本发明某些实施例的某些方面(例如MIN)和对自适应计算机(ACM)的其它方面的进一步描述。域视频节点(DVN)可实施为ACM中的节点类型,或其可用任何合适的硬件和/或软件设计方法来实施。举例来说,可将本发明实施例的功能设计为离散电路、包括定制、半定制或其它的集成电路、可编程门阵列、特殊应用集成电路(ASIC)等。在需要时可由硬件、软件或两者的组合来执行功能。本文描述的各种功能可单独有利地使用,或以与其它功能(包括现有技术中已知的或仍将开发的功能)的组合或子组合来使用。DVN是可重新配置的数字视频处理器,其可实现与ASIC相当的功率-面积-性能度量。在一个实施例中,DVN以具有可重新配置性的额外益处而包括在ACM中,使其能够执行许多常用的可能需要多个ASIC来实现相同功能性的运动估计算法。然而,其它实施例可以包括在不可配置或部分可配置的设计中的任何合适的方式来实施DVN,或DVN的部分或功能。视频处理包括一运动估计步骤,其需要相当大的计算能力,尤其是针对较高的帧分辨率的情况。域视频节点(DVN)是一类ACM节点,其供执行运动估计功能和其它视频处理功能。图2中展示DVN的简化方框图。运动估计由对当前帧的像素(即,PEL)块与来自前一帧、后一帧或两者的块进行比较以定位具有最低失真的块组成。所述比较可(例如)包括常用的用于选择标准的"绝对差和(SAD)"度量。DVN包括八个2KB节点存储器,其允许每一时钟周期有十六个SAD操作。这还允许针对每一维度中的+/-16个?£1^的搜索面积,用于16X16个当前块(宏块(macroblock))和48X48个参考块的重叠的数据输入和计算/结果输出的双缓冲。DVN操作包括1)全PEL搜索;2)18X18全PEL到33x33半PEL双线性插值;3)半PEL搜索;4)将关联的16X16宏块的最佳度量和原点输出到指定节点,并将16X16宏块本身输出到解码器运动补偿引擎。全PEL捭索DVN支持两种模式的全PEL搜索操作。一种模式每次一个地估计每一16X16位置,每个时钟周期执行16个SAD操作;第二模式同时估计四十个连续位置,每个时钟周期执行160个SAD操作。对于两种模式,评估由计算当前16X16宏块与来自48X48参考块的1089个位置中的一个位置的16X16宏块之间的"绝对差和(SAD)"度量组成,从而总是保存关联的16X16宏块的最佳度量和原点。对于每一模式,搜索样式可为许多硬连线样式或由节点产生并存储在位于DVN中的队列中的x、y坐标(原点)列表所指定的许多位置。可使用各种队列数据结构,且可支持各种早期完成策略。48X48参考块内存在1089个候选搜索位置。图3中展示具有相对坐标H(O)、V(0)的"中心"位置。在图4中突出显示五个搜索位置中心位置,H(0)、V(0);上部最左边位置,H(-16)、V(-16);上部最右边位置,H(+16)、V(-16);下部最左边位置,H(_16)、V(+16);和下部最右边位置,H(+16)、V(+16)。图5中展示同时搜索40个位置(48X48参考块的中心处的8X5个位置)的实例。图6中展示搜索参考块中心处的九组40个位置的实例。水平搜索范围是-12到+11,垂直搜索范围是_7到+7,且所搜索位置的总数是360。半PEL双线件插倌在全PEL搜索具有最佳失真度量的16X16个宏块之后,对周围的18X18PEL阵列执行双线性插值,产生33X33半PEL阵列,如图7中所示。在图8中概述用于半PEL双线性插值的计算。半PEL搜索在执行双线性插倌之后,DVN计算九个候选的半PEL位置中每一者的SAD度量。图9中展示半PEL数据的编号惯例。从图式可见,已经计算全PEL位置(位置"5")的度量。因此,半PEL搜索由产生其它八个半PEL位置中每一者的SAD度量以确定九个候选者中哪一个具有最佳度量组成。输出结果将33X33半PEL阵列内关联的16X16宏块的最佳度量和原点输出到指定节点。将16X16宏块本身输出到解码器的运动补偿引擎。DVN操作概要DVN包括QST节点包装器(NodeWr即per)、八个2KB节点存储器(每一者组织为512个32位的字)和运动估计引擎(ME)。ME执行如上文概述的全PEL搜索、双线性插值和半PEL搜索。其将关联的16X16宏块的最佳度量和原点输出到指定节点;且其将16X16宏块本身输出到解码器的运动补偿引擎。将八个节点存储器的每一者分割为乒乓缓冲器对(pingpongbufferpair)以允许完全重叠的数据输入和计算/结果输出。在一个数据组已从指定存储器转移到八个DVN存储器之后,DVNME执行其计算并输出其结果。在此时间期间,下一数据组从另一系统存储器转移到八个DVN存储器。依此类推。每一数据组由48X48PEL阵列(参考块)和16X16PEL阵列(当前块)组成。这些数据以最优化ME对数据的访问的方式分布于八个节点存储器之间。通常,这包括每个时钟周期对来自八个节点存储器中每一者的四字节数据的访问。这允许在"快速搜索"模式期间每一时钟周期将执行十六个SAD操作,其中每次评估一个16X16搜索位置。另外,对于"四十个同时搜索位置"模式,其允许每个时钟周期对来自参考块的四行的数据和来自当前块的四行的数据的访问。节点存储器访问概要毎一数据会目在指定节点控制下经由自适应计算机(ACM)结构的矩阵互连网络(MIN)从指定存储器转移到八个DVN节点存储器。对于48X48PEL参考块将行0、4、8、…、44写入节点存储器1内的连续位置;将行1、5、9、…、45写入节点存储器2内的连续位置;将行2、6、10、…、46写入节点存储器3内的连续位置;和将行3、7、11、…、47写入节点存储器4内的连续位置。对于16X16PEL当前块将行0、4、8和12写入节点存储器1和5;将行1、5、9和13写入节点存储器2和6;将行2、6、10和14写入节点存储器3和7;和将行3、7、11和15写入节点存储器4和8。在全PEL搜索期间,ME从存储器1至4读取参考块数据,且其从存储器5至8读取当前块数据。在双线性插值期间,ME从存储器1至4读取全PEL参考块数据,且其将参考块半PEL插值数据写入存储器5至8。在半PEL搜索期间,ME从存储器5至8读取参考块半PEL插值数据,且其从存储器1至4读取当前块数据。最后,为了将16X16宏块输出到解码器的运动补偿引擎,ME从存储器5至8进行读取并写入到MIN。,繊雄目织、(籠fe锡,剤诸翻司)肝,繊诸器1至4,参考块数据将循序存储在位置0x00至0x8F;当前块数据将循序存储在位置OxCO至OxCF。对于节点存储器5至8,当前块数据将循序存储在位置OxCO至OxCF。节点存储器会目织(双线件插倌期间)对于节点存储器5至8,候选位置1(7)的半PEL数据将循序存储在位置0x00至0x10。候选位置2(8)的半PEL数据将循序存储在位置0x20至0x30。候选位置3(9)的半PEL数据将循序存储在位置0x40至0x50。候选位置4的半PEL数据将循序存储在位置0x80至0x8F。候选位置5的半PEL数据将循序存储在位置0x90至0x9F。候选位置6的半PEL数据将循序存储在位置OxAO至OxAF。DVN编程模型DVN的所有配置与控制信息将驻存在其TPL中。常规操作将采用合适数目的包装器的64个计数器和用于搜索队列的合适的数据结构。可使用用于全PEL搜索模式两者的合适数目与特性的硬连线搜索样式。未来的DVN能力可(例如)包括(但不限于)用于快速全PEL搜索的增加的SAD强度;1/4PEL处理;和双三次插值。自适应计算机(ACM)包括由同等级网络连接的异类节点。每一节点包括三个元件包装器、存储器和执行单元,如图12所示。域视频节点(DVN)是可重新配置的数字视频处理器,其实现可与特殊应用集成电路(ASIC)相当的功率-面积-性能度量,其具有可重新配置性的额外益处,使其能够执行许多常用的可能需要多个ASIC来实现相同功能性的运动估计算法。图13中展示描绘DVN编程环境的方框图。DVN节点包装器中的硬件任务管理器(HTM)和DVNEU中的有限状态机(FSM)提供DVN的高级控制。这个接口包括ACM标准EU_RUN、EU_CONTINUE和从包装器到EU的EU_TEARDOWN信号,以及从EU到包装器的ACK+TEST与EUDONE响应。图14中展示FSM的转变表。FSM采取六种状态中的一种空闲、设置、执行、ACK+TEST、等待或继续。当节点未启用或执行单元(EU)未启用时,FSM将进入并保持在其空闲状态。只要节点包装器确定"eu—abort"信号,FSM也将转变到其空闲状态。另外,当FSM响应于节点包装器对"eu—teardown"信号的确定而退出其等待状态时,FSM转变到空闲状态。FSM的典型操作序列将包括以下转变响应于节点包装器对"eu—r皿"信号的确定而从空闲转变到设置在设置期间,字节代码控制eu的初始化,使eu的配置寄存器载入有存储在位于节点存储器中的"任务参数列表(TPL)"中的参数。响应于"done"设置字节代码而从设置转变到执行。在执行期间,eu处理来自一命令队列的指令,以执行全PEL搜索、分数PEL插值、分数PEL搜索、宏块带正负号差值和结果输出的运动估计操作。当从命令队列读取DONE指令时,从执行转变到ACK+TEST。在ACK+TEST期间,将应答发送到网络以指示在运动估计阶段产生和消耗多少数据。通常,最终应答将包括"test"指示,以便查询节点包装器的硬件任务管理器(HTM):what'snext响应于ACK+TEST字节代码ACK+TEST而从ACK+TEST转变到等待。FSM保存在其等待状态,直到其接收到来自节点包装器的?what'snext响应。响应于节点包装器对"eu—teardown"信号的确定而从等待转变到空闲。FSM确定"eu_done,,0响应于节点包装器对"eu—conti皿e"信号的确定而从等待转变到继续。在继续期间,字节代码控制用来自位于节点存储器中的TPL的参数对一定eu寄存器的重新载入。响应于继续"done"字节而从继续转变到执行。以上序列在ACK+TEST之后将FSM的控制返回到节点包装器的HTM。DVN也可经编程以在"ack-ing"之后保留控制。操作包括向继续或空闲的条件/无条件状态转变(在确定"eu—done"之后)。测试条件包括节点包装器的64个计数器中的任一者的正负号(msb)、一定TPL条目的正负号(msb)和字节代码控制的5位降值计数器的正负号(msb)。任务执行所需的所有信息均包含在位于节点存储器中的"任务参数列表(TPL)"中。在设置期间,DVN硬件从其节点存储器中检索指向TPL的指针。用于多达31个任务的指针存储在位于由节点包装器信号{tpt_br[8:0],active_taSk[4:0]}指定的位置处的节点存储器中的31个连续字中。对每一DVNTPL指派节点存储器的64个长字。TPL的前八个条目经保留以用于特定信息。其余56个长字可用于存储用于设置、ACK+TEST和继续的参数。TPL位置0x00含有两个用于设置的参数节点存储器中用于其字节代码的开始地址,和从TPL指针到其参数的偏移量。TPL位置0x01含有两个用于ACK+TEST的参数节点存储器中用于其字节代码的开始地址,和从TPL指针到其参数的偏移量。TPL位置0x02含有一个用于拆分的参数节点存储器中用于其字节代码的开始地址。(当前,没有"拆分"的对象,所以这是在稍后有需要的情况下的占位符)。TPL位置0x03含有三个用于继续的参数节点存储器中用于其字节代码的开始地址,和从TPL指针到其两组参数的偏移量。TPL位置0x04和0x05用于字节代码可操作的一对信号量;且位置0x06和0x07经保留。TPL位置0x08至0x3F可用于存储所有其它任务参数。图15中展示DVN任务参数列表的布局。TPL存储用于三种状态中每一者的参数组设置、ACK+TEST和继续。对于继续状态,可有两组参数,其中每一组具有相同数目的参数但具有不同的TPL指针偏移量。这允许两组全局参数(例如,使用过程节点目的地、分数PEL差值过滤等)中的一组之间的条件选择。用于特定状态的参数组必须存储在TPL中的10连续位置中。在字节代码LOAD指令执行时,DVN硬件选择组中的下一参数。从TPL指针到用于所述状态的第一参数的位置的偏移量必须在以下范围中0x08至0x3F。DVNTPL存储器/寄存器格式在图16中展示含有字节代码开始地址和TPL指针偏移量的TPL位置0x00至0x03的格式。图17中展示TPL位置0x04和0x05处两个信号量的格式。图18中展示开始于TPL位置(TPL指针加上ACK+TEST偏移量)的ACK+TEST参数的格式。图19中展示在设置和继续期间载入有TPL参数的寄存器的格式。控制与状态寄存器(CSR):DVNCSR包括字段,所述字段指定使用哪些插值过滤、如何在参考块边缘插值、64个旗标中哪些指示"命令队列重新定向"、使用哪些乒乓缓冲器对,和对于参考块,每行中长字的数目。表1和2描述位[6:5]和位[4:0]。<table>tableseeoriginaldocumentpage11</column></row><table>表2:参考块边缘位[6:5]处的插值方法位[13:8]是命令队列重新定向旗标。总是在处理命令队列时,DVN连续监视由位[13:8]指示的64个包装器计数器正负号位中的一者。当计数器正负号位设置为l'bl时,DVN将清除所述位,发送"切换"指示到控制器、悬置来自命令队列(A/B)的处理,和重新开始来自命令队列(B/A)的处理。位[20:16]是缓冲选择器。五位中的每一者在一对乒乓缓冲器之间进行选择。位16是"参考块缓冲器选择",其中0选择参考块A,且1选择参考块B。位17是"当前块缓冲器选择",其中0选择当前块A,且1选择当前块B。位18是"命令队列缓冲器选择",其中0选择命令队列A,且1选择命令队列B。位19是"水平成本函数(HorizontalCostFunction)缓冲器选择",其中0选择水平成本函数表A,且1选择水平成本函数表B。位20是"垂直成本函数(VerticalCostFunction)缓冲器选择",其中0选择垂直成本函数表A,且1选择垂直成本函数表B。位[28:24]是"每行的参考块长字"。节点存储器寻址单元需要包含一参考块行的长字的数目,以支持从行(k)到行(k+4)的跨距。控制器节点定份器寄存器(CNLR):DVN使用PTP协议与其控制器通信,其需要一端口号(即,位[5:0])和一节点id(即,位[15:8])。目的地节点定位器寄存器(DNLR):当处理包括对目的地(使用过程)节点的输出的命令队列指令时,DVN将使用其一位逻辑输出端口字段来选择两个目的地节点中的一个当所述位设置为1'bO时,其输出将导向节点id(S卩,位[15:8])、端口号(S卩,位[5:0]);且当所述位设置为"bl时,其输出将导向节点id(即,位[31:24])、端口号(艮卩,位[21:16])。DVN字节代码DVN开销处理器(0HP)解译两个不同组的字节代码一组用于设置和继续,另一组用于ACK+TEST。FSM状态指示字节代码解译器应使用哪一组。对于设置和继续,仅存在一个字节代码如图20所示的L0AD。对于ACK+TEST,存在较为全面的一组字节代码。在图21A至40E中对这些进行概述。ACK+TEST字节代码0x80至0xFF是保留的,且可作为NOP或"无操作"来处理。对于DVN,编程步骤中的一个步骤需要写入字节代码和产生任务参数列表。字节代码总是"有序"执行,且字节代码必须开始于长字边界。字节代码执行是"小头(littleendian)";也就是说,将被执行的第一字节代码是第一长字的字节[7:0],接着是[15:8],接着是[23:16],接着是[31:24],接着是第二长字的[7:0],依此类推。TPL/字节代码编程实例图22中展示用于"典型"任务的任务参数列表和字节代码。TPL由21个长字组成,且存在5个长字的字节代码。设置需要三个时钟周期来从TPL载入寄存器;在三个周期的最末一个中指示DONE。ACK+TEST需要最少十个时钟周期两个用于产生者应答,两个用于使用过程应答,两个(或两个以上)用于测试(并在需要时等待)输入缓冲器就绪,两个(或两个以上)用于测试(并在需要时等待)输出缓冲器就绪,且两个用于测试计数器正负号以选择两组配置寄存器中的一组。继续需要三个时钟周期来更新CSR、CNLR和DNLR配置寄存器。侖令队列综述DVN的编程模型包括存储在DVN节点存储器中的命令队列中的指令序列的产生。这些指令控制全PEL搜索、分数PEL插值、分数PEL搜索、(或许有宏块带正负号的插值)和结果输出的运动估计操作。图23中展示DVN存储器映射图。对于每一宏块的处理,DVN将由其任务参数列表(TPL)中的条目定向,以便从其节点存储器中两个缓冲器中的一者获取其指令命令队列A;或命令队列B。两者的数据结构将是相同的。目的是在一个(或两个)静态命令队列中存储一固定组的指令,或在一个(或两个)动态命令队列中构造一交互序列的命令,和基于逐宏块在两个缓冲器之间进行选择。包括第二命令序列允许终止一个指令序列并以新的指令序列开始,同时保留完整的先前指令序列以供随后的重新使用。将使用标准ACMPTP(或DMA)协议(消耗可用的32个输入端口中的一个或两个)将两个命令队列的每一者转移到DVN节点存储器。命令队列A将由节点存储器6中位置为0x00至0x3F的64个长字(每长字32位)组成,且命令队列B将由节点存储器7中位置为0x00至0x3F的64个长字组成。DVN控制器节点通过将0x6C00写入DVN包装器端口翻译表(PTT)中对应于指派的DVN输入端口号的位置来初始化命令队列A(CQA)。这将CQA缓冲器设置为'存储器=6、物理地址=0』00'的开始地址256字节(64个长字)的大小。命令队列B(CQB)的初始化值=0x6E00,'存储器=7,物理地址=0x000'。控制器使用PTP写入来载入CQA和CQB,64长字循环缓冲器。DVN控制器节点通过将0x6C00/0x6E00重新写入DVNPTT中的适当位置来重新初始化缓冲器。DVN使用6位计数器(初始化为零)来获取CQA/CQB指令。图24中展示命令队列的数据结构。位31用于指示"有效"指令,且必须在控制器写入缓冲器的每一指令中将其设置为1'bl。当DVN读取具有位31被设置为1'bO的队列条目时,DVN将停止,直到所述位被设置为1'bl或直到其经重新定向为止。在处理从CQA/CQB获取的指令序列时,控制器可命令DVN:1)终止其对来自一个队列的指令的处理;2)清除其指向另一队列的指针;或3)重新开始其从另一队列的位置零的处理。从控制器到DVN的这个"切换"命令利用了DVN节点包装器中64个计数器正负号中的一个。控制器用设置为l'bl的msb写入适当的PCT/CCT计数器。(这里假定所述位先前已被初始化为1'b0)。DVN在处理时连续监视这个位。在DVN任务设置处,从TPL载入六位寄存器以选择64个计数器正负号中适当的一个进行监视。作为其"切换"例行程序的一部分,DVN将通过发送"自应答,初始化计数器"MIN字来清除这个位,且DVN将发送"切换完成"消息到控制器(见图25)。DVN侖令队列数据结构的描述下文参看图24来描述在DVN的命令队列中使用的数据结构。评估单个16x16宏块的度暈_侖令0x0:确定一个位置(X,Y)的度量,其中0,0指示参考块的左上部PEL;X是在0到79的范围内的正整数,且Y是在0到49的范围内的正整数。这些正整数指示自左上部PEL的位移。DVN执行度量的评估SAD256加上水平成本函数加上垂直成本函数。所述成本函数存储在节点存储器中。确定一组或一组以上5X5位置的最佳度暈~命令0xl:从开始于位置(X,Y)的m(H)乘n(V)5X5组位置确定最佳度量。X是在0到79的范围内的正整数,且Y是在0到49的范围内的正整数。M是在1到16的范围内的正整数;n是在1到10的范围内的正整数(见图26)。半PEL插倌——命令0x2:对于16X16宏块,执行全PEL至半PEL插值。位[24]是"评估":0意味着仅进行插值;且1意味着插值并评估八个(九个)半PEL16x16宏块。13位[25]是"模式":0意味着使用"最佳度量"向量来选择宏块,且1意味着使用(X,Y)参考(即,位[14:8]和位[5:0])来选择宏块。四分之一PEL插倌——命令0x3:执行四分之一插值。位[24]是"评估"0意味着仅进行插值;且1意味着插值并评估八个(九个)四分之一PEL16x16宏块。位[25]是"模式":0意味着使用来自半PEL搜索的"最佳度量"向量来选择宏块;且1意味着使用半PEL缓冲器位置(即,位[ll:O])来选择宏块。全PEL带iH负号差倌——命令0x4:执行16X16当前块与选自参考块的16X16全PEL宏块之间的带正负号差值。将256个值输出到选定的目的地作为以128个长字包装的在-255至255范围内的16位2进制互补整数。位[25]是"模式":O意味着使用来自全PEL搜索的"最佳度量"向量来选择宏块;且1意味着使用(X,Y)参考(即,位[14:8]和位[5:0])来选择宏块。位[26]是"目的地",其选自两个逻辑输出端口中的一个。对于每一端口,TPL含有用于选定目的地的关联的路径选择、输入端口号和存储器模式指示。半PEL带iH负号差倌——命令0x5:执行16X16当前块与选自半PEL缓冲器的16X16半PEL宏块之间的带正负号差值。将256个值输出到选定的目的地作为以128个长字包装的在-255至255范围内的16位2进制互补整数。位[25]是"模式":O意味着使用来自半PEL搜索的"最佳度量"向量来选择宏块;且1意味着使用半PEL缓冲器位置(即,位[ll:O])来选择宏块。位[26]是"目的地",其选自两个逻辑输出端口中的一个。对于每一端口,TPL含有用于选定目的地的关联的路径选择、输入端口号和存储器模式指示。四分之一PEL带iH负号差倌——命令0x6:执行16X16当前块与选自四分之一PEL缓冲器的16xX16四分之一PEL宏块之间的带正负号差值。将256个值输出到选定的目的地作为以128个长字包装的在-255至255范围内的16位2进制互补整数。位[25]是"模式"0意味着使用来自四分之一PEL搜索的"最佳度量"向量来选择宏块;且1意味着使用半PEL缓冲器位置(S卩,位[ll:O])来选择宏块。位[26]是"目的地",其选自两个逻辑输出端口中的一个。对于每一端口,TPL含有用于选定目的地的关联的路径选择、输入端口号和存储器模式指示。输出全PEL16X16宏块——命令0x7:将选定的全PEL16X16宏块从DVN节点存储器中的参考块转移到指示的目的地。位[25]是"模式":O意味着使用来自全PEL搜索的"最佳度量"向量来选择宏块沮1意味着使用(X,Y)参考(即,位[14:8]和位[5:0])来选择宏块。位[26]是"目的地",其选自两个逻辑输出端口中的一个。对于每一端口,TPL含有用于选定目的地的关联的路径选择、输入端口号和存储器模式指示。输出半PEL16X16宏块——命令0x8:将选定的半PEL16X16宏块从DVN节点存储器中的半PEL缓冲器转移到指示的目的地。位[25]是"模式":O意味着使用来自半PEL搜索的"最佳度量"向量来选择宏块;且1意味着使用半PEL缓冲器位置(S卩,位[ll:O])来选择宏块。位[26]是"目的地",其选自两个逻辑输出端口中的一个。对于每一端口,TPL含有用于选定目的地的关联的路径选择、输入端口号和存储器模式指示。输出四分之一PEL16X16宏块——命令0x9:将选定的四分之一PEL16X16宏块从DVN节点存储器中的四分之一PEL缓冲器转移到指示的目的地。位[25]是"模式":O意味着使用来自四分之一PEL搜索的"最佳度量"向量来选择宏块;且1意味着使用四分之一PEL缓冲器位置(S卩,位[ll:O])来选择宏块。位[26]是"目的地",其选自两个逻辑输出端口中的一个。对于每一端口,TPL含有用于选定目的地的关联的路径选择、输入端口号和存储器模式指示。输出最伟度量——命令OxA:将最佳度量(饱和无正负号的16位整数)转移到指示的目的地。位[25]是"模式":0意味着仅发送到控制器;且1意味着发送到控制器并发送到指示的目的地。位[26]是"目的地",其选自两个逻辑输出端口中的一个。对于每一端口,TPL含有用于选定目的地的关联的路径选择、输入端口号和存储器模式指示。输出运动向量——命令OxB:将具有四分之一PEL分辨率的运动向量转移到指示的目的地。位[25]是"模式":0意味着仅发送到控制器;且1意味着发送到控制器并发送到指示的目的地。位[26]是"目的地",其选自两个逻辑输出端口中的一个。对于每一端口,TPL含有用于选定目的地的关联的路径选择、输入端口号和存储器模式指示。^——命令OxC:DONE命令向DVN指示对于"当前块"没有将执行的额外处理。在从队列读取此命令之后,DVN将发送DONE状态字到控制器;且DVNFSM将转变为ACK+TEST状态。——命令0xF:ECHO命令指示DVN返回作为命令本身的状态字。希望这成为诊断辅助。DVN至控制器的状态字:在DVN执行每一命令之后,其将使用ACMPTP协议发送状态字到控制器。DVNTPL将含有支持此操作所需的适当的路径选择字段、输入端口号和存储器模式指示。在"设置"和"继续"操作期间将此信息转移到DVNCNLR。在图25中展示状态字的概述。对于命令OxO和Oxl,状态字包括迄今为止用于此特定当前块的最佳全PEL度量。所述状态字还包括具有水平维度0至79和垂直维度0至49的范围的全PEL单元中的相应向量。对于命令0x2,全PEL至半PEL插值,当命令的位[24]设置为1'bl(插值和评估)时,状态字位[15:0]指示最佳半PEL度量的值,且位[19:16]指示最佳度量与九个半PEL候选者中的哪一者相关联。(图40中展示的半PEL编号惯例用于编码位[19:16])。当命令的位[24]设置为1'bO(仅插值)时,位[15:0]指示先前评估的最佳全PEL度量的值,且位[19:16]设置为OxF以指示插值"完成"。对于命令0x3,半PEL至四分之一PEL插值,当命令的位[24]设置为1'bl(插值和评估)时,状态字位[15:0]指示最佳四分之一PEL度量的值,且位[19:16]指示最佳度量与九个四分之一PEL候选者中的哪一者相关联。(图42中展示的四分之一PEL编号惯例用于编码位[19:16])。当命令的位[24]设置为1'bO(仅插值)时,位[15:0]指示先前评估的最佳度量(全PEL或半PEL,如果后者已经评估)的值,且位[19:16]设置为OxF以指示插值"完成"。对于命令0x4、0x5、0x6、0x7、0x8禾P0x9,状态字将分另U为OxFFOlOOOO、0xFF020000、0xFF040000、0xFF080000、0xFF100000和0xFF200000以指示"完成"。对于命令OxA,状态字将为最佳度量、饱和的无正负号的16位整数。对于命令0xB,状态字将为具有四分之一PEL分辨率的运动向量。对于命令0xC,状态字将为0xFF400000以指示"完成"。对于命令OxF,状态字将回应命令本身。希望这成为诊断辅助。响应于"命令队列重新定向"旗标,状态字将为0xFF800000以指示"完成"。DVN节点存储器:DVN包括八个2KB物理存储器,每一者均组织成512个字,每个字1532位,从而总的节点存储器容量为16KB。这允许在每一时钟周期读取32个字节的视频数据并处理这些数据的十六个"绝对差和"。16KB容量还允许对于完全重叠的数据输入/输出与计算的双缓冲。任何ACM可使用DVN包装器中的PTT和三个服务PTP、DMA或RTI中的任一者来写入DVN节点存储器。另外,K节点可PEEK/POKEDVN节点存储器。图23中展示DVN节点存储器映射图。在表3中描述分配的缓冲器<table>tableseeoriginaldocumentpage16</column></row><table><table>tableseeoriginaldocumentpage17</column></row><table>表3:DVN节点的存储器映射图这假定参考块和当前块是经由MIN从"数据移动器(DataMover)"转移到八个DVN节点存储器。这还假定"数据移动器"由PSN节点控制。将参考块组织为每行M个PEL和每列N个PEL。M禾PN是5的整数倍,与每次5X5位置搜索策略一致。M的范围是20至95(20、25、30、...、90、95);N的范围是20至65(20、25、30、...、60、65)。参考块诜顶:在图26中展示不超过3840个字节参考块容量的M与N的可允许组合的概述,以及穷举搜索处理周期的附带数目。对于从数据移动器至DVN节点存储器的每一M-PEL乘N_PEL参考块的转移如下将行0、4、8、…、[M-(M)mod4]写入节点存储器0中的连续位置;将行1、5、9、...、[M-(M-1)mod4]写入节点存储器1中的连续位置;将行2、6、10、…、[M-(M-2)mod4]写入节点存储器2中的连续位置;和将行3、7、11、…、[M-(M-3)mod4]写入节点存储器3中的连续位置。对于从数据移动器至DVN节点存储器的每一16PEL乘16PEL当前块的转移将行0、4、8和12写入节点存储器0和4中;将行1、5、9和13写入节点存储器1和5中;将行2、6、10禾P14写入节点存储器2禾P6中;和将行3、7、11和15写入节点存储器3禾P7中。在全PEL搜索期间,DVN运动估计引擎(ME)从存储器0至3读取参考块数据,且其从存储器4至7读取当前块数据。在半PEL插值期间,ME从存储器0至3读取全PEL参考块数据,且其将半PEL插值数据写入存储器4至7。当半PEL搜索与半PEL插值同时执行时,ME从存储器4至7读取当前块数据。在四分之一PEL插值期间,ME从存储器4至7读取半PEL插值数据,且其将四分之一PEL插值数据写入存储器4至7。当四分之一PEL搜索与四分之一PEL插值同时执行时,ME从存储器0至3读取当前块数据。在输出期间,ME从存储器0至3读取全PEL宏块,从存储器4至7读取分数PEL宏块,且对于宏块带正负号差值,分别从用于全PEL/分数PEL宏块的存储器0至3/4至7读取当前块。成本函数表:对于每一全PEL搜索位置,DVN评估度量SAD256加上水平成本函数加上垂直成本函数。成本函数存储在节点存储器中。成本函数是无正负号的16位整数。对于M列乘N行的参考块,存在M个水平成本函数和N个垂直成本函数。在每一水平成本函数表中,两个16位整数,即一对水平成本函数包装在表中的每一32位长字中。列0和1的成本函数存储在表位置O,列2和3的成本函数存储在表位置l,依此类推。偶数编号列的成本函数存储在长字的位[15:0]中;奇数编号列的成本函数存储在长字的位[31:16]中。在每一垂直成本函数表中,两个16位整数,即一对垂直成本函数包装在表中的每一32位长字中。行0和1的成本函数存储在表位置O,行2和3的成本函数存储在表位置l,依此类推。偶数编号行的成本函数存储在长字的位[15:0]中;奇数编号行的成本函数存储在长字的位[31:16]中。在图27中展示分数PEL成本函数和成本函数表A与B。参考块综述:如图23所示,两个3840字节参考块缓冲器被分配在DVN节点存储器中。每一缓冲器存储在四个物理存储器中以允许在每时钟周期访问16个PEL。将采用参考左上部PEL的编号惯例,所述PEL的(H)水平和(V)垂直坐标将指定为(H:0,V:0)。参考块A的左上部PEL将存储在存储地址0x000的高阶字节中;且参考块B的左上部PEL将存储在存储地址0x100的高阶字节中。参考块的行0、4、8…将存储在存储器0中;行1、5、9…将存储在存储器l中;行2、6、10…将存储在存储器2中;且行3、7、11…将存储在存储器3中。M=50列乘N=50行的参考块将存储在节点存储器0至3中,如图28中所示。每一16PEL乘16PEL的当前块将存储在节点存储器0至3中,且还存储在节点存储器4至7中,如图29中所示。50£1^乘50£1^的参考块允许在每一维度中+/-17£1^的搜索范围(参考([H:17,V:17])处的中心搜索位置),如图30中所示。在50PEL乘50PEL参考块内存在1225个候选搜索位置。在图30中展示具有相对坐标H(17),V(17)的"中心"位置。在图30中突出显示五个搜索位置中心位置,H(17),V(17);上部最左边位置,H(O),V(O);上部最右边位置,H(34),V(0);下部最左边位置,H(0),V(34);和下部最右边位置,H(34),V(34)。图31中展示在此参考块中同时搜索中心5X5个位置。在此情况下,所搜索位置的总数是25,且在每一维度中搜索范围是+/_2PEL。图32中展示在此参考块中搜索中心九组5X5个位置。在此情况下,所搜索位置的总数是9X5X5=225,且在每一维度中搜索范围是+/-7£1^。图33中展示在此参考块中穷举搜索全部49组5X5个位置。在此情况下,所搜索位置的总数是49X5X5=1225,且在每一维度中搜索范围是+/_17PEL。当包括分数PEL处理时,程序设计者可在两种策略之间进行选择载入具有足够数目PEL的"过大的"参考块,以便支持任何搜索结果的插值。可由当前宏块的尺寸(m)、搜索范围(h,v)和半PEL插值过滤的分支数目(n)来确定此"过大的"参考块的尺寸。明确地说,尺寸将为[m+h+n-l]水平PEL乘[m+v+n-l]垂直PEL。举例来说,对于16X16PEL宏块,+/_17£1^的水平和垂直搜索范围,和H.2646分支插值过滤,参考块必须为56X56PEL(3136个字节),如图34所示。将与期望的搜索范围一致的最小数目PEL载入参考块。可由当前宏块的尺寸(m)和搜索范围(h,v)来确定此参考块的尺寸。明确地说,尺寸将为[m+h-l]水平PEL乘[m+v-l]垂直PEL。举例来说,对于16X16PEL宏块和+/-17的水平与垂直PEL搜索范围,参考块将为50X50PEL(2500个字节),比以上的策略1)所需的3136个字节小很多。然后,如果搜索结果需要,那么在进行插值步骤之前,重新载入具有[m+n]水平PEL乘[m+n]垂直PEL的参考块缓冲器。这在图35中具有概述。全PEL捭索:DVN支持用于全PEL搜索的两个操作模式。一个操作评估参考块内任意的16X16位置,每个时钟周期执行16个SAD操作。第二个模式同时评估m乘n组(5X5=25)位置,每个时钟周期执行最多200(平均160)个SAD操作。对于两个模式,"评估"由计算当前16X16宏块与参考块内的任何16X16宏块之间的"绝对差和(SAD)"加上水平成本函数加上垂直成本函数组成,从而总是保存关联的16X16宏块的最佳度量和原点。由通过控制PSN节点写入DVN存储器中两个命令队列中的一个命令队列中的指令序列来支配搜索样式。每一队列条目的唯一命令代码指示对于给定(X,Y)原点,是应评估一单个位置还是m乘n的5X5个位置。半PEL插倌在具有最佳失真度暈的16X16宏块的全PEL搜索之后,对周围的([16+n]X[16+n])PEL阵列执行半PEL插值,其中n为过滤阶数。对于双线性插值、丽V、H.264和MPEG4,n分别等于2、4、6和8。在图36中概述半PEL双线性插值所需的计算。在图37中展示由与"最佳度量"16X16宏块相关联的18X18全PEL阵列的双线性插值所获得的33X33半PEL阵列。在图40中展示由H.2646分支过滤插值所获得的33X33半PEL阵列。在图41中展示所支持的半PEL插值FIR过滤的概述。对于1/2PEL水平移位和1/2PEL垂直移位的半PEL位置,对全PEL、1/2PEL插值的值使用相同的过滤,从而维持这些值的全精度。半PEL搜索:在使用四个过滤选项中的一个进行半PEL插值之后,针对九个候选的半PEL位置中的每一者,计算半PEL度量。所述度量是SAD256度量加上半PEL成本函数的总和。在图42中展示九个候选的半PEL位置的编号惯例。从图中应注意,先前已计算全PEL位置(位置"5")的全PEL度量。然而,位置"5"的半PEL度量将为其全PEL度量、减去其全PEL水平和垂直成本函数、加上其用于此位置的半PEL成本函数(见图27)。半PEL搜索由产生九个候选者的每一者的SAD度量加上半PEL成本函数并选择具有最佳度量的一者组成。四分之一PEL插倌在具有最佳失真度暈的16X16宏块的半PEL搜索之后,对周围的([16+n]X[16+n])PEL阵列执行四分之一PEL插值,其中n为过滤阶数。对于丽V,n=4;对于使用双线性插值的H.264和MPEG4,n=2。在图42中概述1/4PEL位置、1/2PEL位置和3/4PEL位置的丽V子PEL四分支FIR过滤。四分之一PEL捭索:在四分之一PEL插值之后,针对九个候选的四分之一PEL位置中的每一者,计算四分之一PEL度量。所述度量是SAD256度量加上四分之一PEL成本函数的总和。在图43中展示九个候选的四分之一PEL位置的编号惯例。从图中应注意,必须计算16个四分之一PEL位置中的仅仅九个。还应注意,先前已计算九个候选的四分之一PEL位置的一个度量(位置"5")。然而,位置"5"的四分之一PEL度量将为其半PEL度量、减去其半PEL成本函数、加上其用于此位置的四分之一PEL成本函数(见图27)。四分之一PEL搜索由产生九个候选者的每一者的SAD度量加上四分之一PEL成本函数并选择具有最佳度量的一者组成。宏块带iH负号差倌DVN还将能够计算和输出DVN节点存储器中任何16PEL乘16PEL宏块(全PEL、半PEL或四分之一PEL)与DVN节点存储器中任一16PEL乘16PEL当前块之间的9位带正负号差值的256个元素阵列。所述阵列输出到目的地节点作为128个长字,其中每一长字是包装的一对16位带正负号整数,其表示16X16宏块的正负号扩展的9位带正负号差值。与DVN相关的编稈问题概沭参看图13,以下是DVN的编程要求构造任务参数列表(TPL)并将其载入DVN节点存储器;构造字节代码并将其载入DVN节点存储器;配置DVN硬件任务管理器(HTM);引导数据移动器以构造必需的参考块、当前块和成本函数表以及适当的数据流应答,并将其转移到DVN节点存储器;构造必需的命令队列指令序列并将其转移到DVN节点存储器;配置DVN的控制器节点中的HTM以支持其对来自DVN的消息的处理;和配置DVN目的地节点(使用过程)以接收来自DVN的输出,并将适当的数据流应答发送到DVN。DVN硬件综述:在图43中展示DVN执行单元的简化方框图。DVN包括QST节点包装器、八个2KB节点存储器(每一者被组织为512个32位的字),和执行单元(EU),所述执行单元由开销处理器(0HP)和运动估计引擎(ME)组成。ME执行全PEL/半PEL/四分之一PEL搜索、半PEL与四分之一PEL插值,和宏块带正负号差值。ME将关联的16X16个宏块的最佳度量和原点输出到控制器节点和目的地节点;ME将关联的16X16个宏块输出到执行解码器运动补偿功能的目的地节点;且ME可将宏块带正负号差值输出到目的地节点。DVN的特征包括分离的控制单元,用于使运动估计引擎和开销处理器具有最大效率;紧密的字节代码和有效的TPL载入/存储操作,以最小化设置、ACK+TEST和继续的开销;基于有限状态机(FSM)的运动估计引擎的PLA控制,用于与基于定序器加控制存储器的实施方案相比具有高级的功率/面积度量;用于增强的性能和减少的功率的创新算法实施方案;八个物理存储器块结构,以允许高度并行性;和具有"相同写入地址/读取地址"分辨率的高性能存储器接口。运动估计引擎包括若干功能元件控制程序单元(CPU);存储器地址产生器单元(AGU);数据路径单元(DPU);绝对差和(SAD),带正负号差值;多格式子PEL插值;包装器接口单元(WIU);和存储器接口单元(MIU)。DVN执行以下操作1)对水平维度中(高达)80PEL和垂直维度中(高达)50PEL进行全PEL搜索;2)使用四个(或许更多)过滤器中的一个进行全PEL至35X35半PEL插值;3)半PEL搜索;4)35X35半PEL至9X16X16四分之一PEL插值;5)四分之一PEL搜索;和6)将关联的16X16宏块的最佳度量和原点输出到控制PSN节点,并将16X16宏块本身输出到执行解码器运动补偿的节点;7)计算并输出选定的16X16宏块(全PEL、半PEL或四分之一PEL)与当前16X16宏块之间的256个带正负号差值。将八个节点存储器的每一者分割为乒乓缓冲器对以允许完全重叠的数据输入和计算/结果输出。在一个数据组已从数据移动器转移到八个DVN存储器之后,DVNME执行其计算并输出其结果。在这时间期间,下一数据组从数据移动器转移到八个DVN存储器。依此类推。每一数据组包括变化尺寸的参考块、16X16PEL阵列(当前块)和分数PEL成本函数表。这些数据以最优化ME对数据的访问的方式分布于八个节点存储器之间。通常,这包括每个时钟周期对来自八个节点存储器中每一者的四字节数据的访问。这允许在每次评估一个16X16搜索位置时,每一时钟周期执行十六个SAD操作。另外,对于"二十五个同时搜索位置"模式,其允许每个时钟周期对来自参考块的四行的数据和来自当前块的四行的数据的访问。可使用任何合适的编程语言来实施本发明的例行程序,所述编程语言包括(:丄++、Java、汇编语言等。可采用不同的编程技术,例如程序上的或面向对象的。所述例行程序可在单个处理设备或多个处理器上执行。尽管可能以特定次序呈现步骤、操作或计算,但在不同实施例中,这个次序可能改变。在某些实施例中,本说明书中循序展示的多个步骤可同时执行。可中断、悬置或由另一过程(例如操作系统、内核等)另外控制本文描述的操作序列。所述例行程序可在操作系统环境中操作,或作为占据系统处理的全部或一实质部分的独立例行程序而操作。可在硬件、软件或两者的组合中执行功能。除非另外规定,否则也可完全或部分地手动执行功能。在本文的描述中,提供许多特定细节,例如组件和/或方法的实例,以便提供本发明实施例的彻底理解。然而,所属领域的技术人员将了解,可在不具有一个或一个以上所述特定细节的情况下,或者用其它装置、系统、组合件、方法、组件、材料、零件和/或类似物来实践本发明的实施例。在其它情况下,没有特定展示或详细描述众所周知的结构、材料或操作,以避免混淆本发明实施例的方面。出于本发明实施例的目的,"计算机可读媒体"可为可含有、存储、传送、传播或传输供指令执行系统、装置、系统或设备使用或与指令执行系统、装置、系统或设备结合使用的程序的任何媒体。所述计算机可读媒体可为(仅借助于实例而并非限于)电子、磁、光、电磁、红外线或半导体系统、装置、系统、设备、传播媒体,或计算机存储器。"处理器"或"处理"包括处理数据、信号或其它信息的任何人类、硬件和/或软件系统、机制或组件。处理器可包括具有通用中央处理单元的系统、多个处理单元、实现功能性的专用电路,或其它系统。处理不需要限于地理位置,或不需要具有时间限制。举例来说,处理器可"实时"、"离线"、以"批处理模式"等来执行其功能。可由不同(或相同)的处理系统在不同时间且在不同位置执行处理的部分。整个本说明书中对"一个实施例"、"一实施例"或"一特定实施例"的参考意味着结合实施例描述的特定特征、结构或特性是包括在本发明的至少一个实施例中,且不必包括在所有实施例中。因此,整个本说明书中短语"在一个实施例中"、"在一实施例中"或"在一特定实施例中"在各处的各别出现不必是指同一实施例。另外,本发明的任何特定实施例的特定特征、结构或特性可以任何合适方式与一个或一个以上其它实施例组合。应了解,根据本文的教示,本文描述和说明的本发明实施例的其它变化和修改是可能的,且将被视为本发明的精神与范围的部分。可通过使用经编程的通用数字计算机来实施本发明的实施例,通过使用特殊应用集成电路、可编程逻辑设备、场可编程门阵列,可使用光、化学、生物、量子或纳米工程系统、组件和机制。一般来说,可通过所属领域的技术中已知的任何方式来实现本发明的功能。可使用分布式或网络系统、组件和电路。数据的通信或转移可为有线的、无线的,或任何其它方式。还将了解,如根据特定应用中有用的,也可用较为分离的或整合的方式来实施附图/图式中描绘的一个或一个以上元件,或者甚至由于在某些情况下不可操作而将其去除或放弃。同样在本发明的精神与范围内的是,实施可存储在机器可读媒体中的程序或代码以允许计算机执行上文描述的任何方法。另外,应将附图/图式中的任何信号箭头仅视为示范性的且不是限制性的,除非另外明确说明。另外,大体希望本文使用的术语"或"意味着"和/或",除非另外有指示。还将组件或步骤的组合视为已说明的,其中当不清楚分离或组合的能力时可预见术语。如本文的描述和随后的整个权利要求书中所使用,"一"和"所述"包括复数参考,除非上下文另外明确规定。同样,如本文的描述和随后的整个权利要求书中所使用,"在…中"的意义包括"在…中"和"在…上",除非上下文另外明确规定。不希望本发明的所说明实施例的上述描述(包括摘要中描述的内容)是彻底的或将本发明限于本文揭示的准确形式。虽然仅出于说明性目的而在本文中描述本发明的特定实施例和实例,但如所属领域的技术人员将认识和了解,在本发明的精神与范围内,各种等效修改是可能的。如所指示,可依照本发明的所说明实施例的上述描述而对本发明做出这些修改,且这些修改将包括在本发明的精神与范围中。因此,虽然本文已参考本发明的特定实施例描述了本发明,但在上述揭示中希望一定范围的修改、各种改变和替代,并且将了解,在不脱离所陈述的本发明的范围与精神的情况下,在某些情况中将采用本发明实施例的某些特征,而没有其它特征的相应使用。因此,可做出许多修改以使特定情形或材料适合于本发明的本质范围与精神。希望本发明不限于所附权利要求书中使用的特定术语,和/或限于作为实行本发明所涵盖的最佳模式而揭示的特定实施例,而是希望本发明将包括在附加权利要求书范围内的任何以及所有实施例和等效物。权利要求一种用于具有多种属性的数字视频数据的处理器,所述处理器包含一存储器或队列,其经配置以保存一指令序列;一处理器,其经配置以对视频数据进行操作;和一指令解码器/操作控制电路,其经配置以对所述指令中的一当前指令进行解码,从中确定所述视频数据的所述属性,且动态配置所述处理器以根据所述属性进行操作。2.根据权利要求1所述的处理器,其中所述视频数据具有一选自MPEG-2、MPEG-4、Windows媒体视频(丽V)或X.264中的至少一个版本的格式。3.根据权利要求1所述的处理器,其中所述视频数据具有一分辨率,所述分辨率选自约四分之一CEL(例如,手机图片)分辨率与由高清晰度电视(HDTV)的一版本界定的约一分辨率之间的一分辨率。4.根据权利要求1所述的处理器,其中所述处理器是选自一编码器、一解码器、一压縮器或一代码转换器中的至少一者。5.根据权利要求1所述的处理器,其中可根据所述视频数据的所述属性动态配置的所述属性中的一者是一加法器阵列。6.根据权利要求1所述的处理器,其中可根据所述视频数据的所述属性动态配置的所述属性中的一者是一用于所述视频数据的过滤器。7.根据权利要求1所述的处理器,其中可根据所述视频数据的所述属性动态配置的所述属性中的一者是一绝对差(SAD)计算机的总和。8.根据权利要求1所述的处理器,其中可编程的所述属性中的一者是一运动检测器。9.根据权利要求l所述的处理器,其中所述处理器是基于一自适应计算机(ACM)来构建的。全文摘要一种根据本发明的视频处理器可按照所述处理器所操作的视频数据的属性而动态配置。某些实施例经由一指令序列来动态配置所述处理器,其中所述指令包括关于当前视频数据的属性的信息。某些实施例包括一可动态配置的加法器阵列,所述加法器阵列计算差值函数从而产生误差向量。某些实施例包括一可动态配置的加法器阵列,其计算应用到所述视频数据的过滤函数,例如在运动检测之前对传入的视频进行插值或抽选。本发明某些实施例提供可动态配置的硬件搜索(例如)以用于检测运动。使用一自适应计算机(ACM)来实施本发明的某些实施例。一ACM包括复数个异类计算元件,其每一者耦合到一互连网络。文档编号H04N7/50GK101702779SQ20091020662公开日2010年5月5日申请日期2005年5月10日优先权日2004年5月10日发明者W·詹姆斯·朔伊尔曼申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1