流水线化的图像处理引擎的制作方法

文档序号:6580097阅读:193来源:国知局
专利名称:流水线化的图像处理引擎的制作方法
技术领域
本发明一般涉及流水线化的图像处理引擎,并且更具体地涉及用于通
过多核处理系统上的效果流水线(effect pipeline)来处理多个图像帧的系 统和方法。
背景技术
随着制造技术的持续提高,基于半导体的微电子的物理极限也扩展来 满足对更有能力的微处理器的需要。处理速度上的限制带来了这样的适应 性通过采用多核或分布式体系结构以分布工作负荷的并行化来平衡现有 处理器速度和性能,由此增加了处理能力并减少了处理时间。
电影/视频/成像空间中的应用常常以流水线方式将多个图像处理效果 链接起来。这些图像处理流水线可以从通过多核或分布式体系结构提供的 并行化中受益。执行这种图像处理的应用共享共同的特性,包括以实时的 速率处理并移动大量数据的需求。
这种系统的传统实施方式遭受了差的吞吐量、高延时以及增加的复杂 性这些问题的组合,这降低了可扩展性和可縮放性。如在流水线系统中那 样,在将依赖于连续执行的多个分立效果链接起来时,使这些限制增加。
在处理视频时,'效果流水线'指以定义的顺序对图像应用视觉效 果。类似地,'效果'指效果流水线的各级。
在效果流水线中将硬件资源分布在各个效果间的现有方法通常受到许 多关于并行化的限制的影响。
一种方法将各个图像帧的数据定义为最小工作份额,这允许各个效果 独立地对给定帧或其它帧操作。虽然这种方法允许多个效果共同存在于共 享系统中而不会在它们之间强加紧密集成,然而,这种方法也导致了整个 系统的高延时。这种延时与效果流水线中的效果数目有关。
6'流水线性能'将性能测量为延时和计算时间的组合。'延时'指流 水线系统发出给定单位的数据所需的时间。对于效果流水线,'延时'指 流水线中的每个图像帧自进入流水线中第一效果的时刻起到离开流水线中 最后一个效果的时间为止所花费的时间。
H十算时间'指处理标准单位的数据,例如图像帧所需的时间。此 外,计算时间可以表示为视频系统的帧频的函数,或者处理帧的实际时间 的函数。
图11图示出了多核系统中的6级基于帧的效果流水线。在图11中, 在假设流水线中的处理器数目等于或大于效果数目的最佳情况下,各个效 果被指派给处理器(或核)。每个处理器每次对一个完整图像帧上的效果 进行处理。图像帧可能来源于视频流或图像帧的其它源。各个进入帧依次 顺序地被处理。为了简化起见,假设每个效果花费相同量的时间来处理 帧,这表示了输出每个帧所需的最佳时间,以便维持一致的帧频。
在时间tl,帧1进入流水线,并且由处理器1将第一效果应用到帧 1。在时间t2,帧2被处理器l载入并处理,并且帧l被处理器2载入并处 理。在时间t3,帧3被处理器1载入并处理,帧2被处理器2载入并处 理,并且帧l被处理器3载入并处理。从时间t4至t6,帧4至帧6被引入 流水线,并且帧1-3沿着流水线前进。在时间t6的结尾处,帧1从流水线 中出来。
可以将流水线延时测量为通过流水线中的所有级处理一帧所需的时 间,或者以 <帧时间',即在帧N离开效果流水线之前管道中的第一效果 所处理的帧数来测量流水线延时。作为帧时间的函数,流水线延时被计算

PLFT = M-N (式l) 其中
PLpr是以帧时间为单位的流水线延时。
M是在时刻T时进入流水线的帧。 .N是在时刻T时离开流水线的帧,并且]VKN。
对于基于帧的体系结构,流水线延时也可以被定义为链中的最慢效果
7的处理时间与流水线中的效果(或级)数之积。这被计算为
PLCT = NxTFM (式2)
其中
PLcT是作为计算时间的流水线延时。
,N是流水线中的级数。
TFM是流水线中的最慢效果M处理帧所需的时间。
假设每120 ms新的帧被馈送入流水线中,流水线包含6个级或效果, 并且流水线中的最慢效果也花费120ms来处理一帧的数据,则图11中的 基于帧的系统的流水线延时(PL)为6x120 = 960 ms。
此外,由于流水线延时被测量为第一帧,即帧1进入和离开流水线时 的时间的函数,因此,通过使各个处理器并行地连续运行每个效果不会带 来益处。即,即使每个帧立即可用于处理,而不是每120ms将新的帧连续 馈送到流水线中,基于第一帧进入和离开流水线的时间,流水线将仍然具 有6帧延时以及960 ms的计算时间延时。
上面的系统受到可用硬件资源的限制,即,如果效果数超过了可用独 立处理组件数,或者如果每个处理器中的可用缓存不能存储一整帧,则处 理将变得相当慢。

发明内容
本发明提供了实现灵活可扩展流水线的流水线化图像处理引擎,流水 线能够针对受限的硬件资源进行调节。实施例还可以包括静态和动态负荷 平衡。示例实施例移除或减少了许多上述限制,同时还提供了以更高效的 方式执行效果的一般架构。
本发明的示例实施例可以包括用于通过效果流水线处理图像帧的方 法。该方法可以包括从每帧生成多个块,以预定的连续顺序通过效果流水 线来处理每块,并且通过组合每个经处理块中的像素来聚合经处理的块以 产生输出帧。每个块可以包含一组主要像素和一组总像素,总像素包括效 果流水线中的效果产生针对主要像素的输出所需的作为输入的任何像素。 每个块中的主要像素是将用于由效果流水线生成的最后一帧的像素。
8效果流水线可以被分布在多个处理节点中,并且每个效果可以处理被 提供作为节点的输入的块,以产生针对块的主要像素的输出。每个处理节 点可以独立地利用效果对块进行处理。可以针对调度的目的来分析效果, 以便减少处理每帧中的第一块与输出每帧中的最后一块之间的延时。
效果可以包括空间效果或时间效果。当处理空间效果时,块中的总像 素可以包括邻近块中的多个像素。当处理时间效果时,总像素可以包括来 自时间上邻近的图像帧的多个像素。
块处理和生成可以采用不同策略,例如下面描述的减小范畴或固定范 畴策略,但是不限于此而是可以包括不同策略的组合和子组合。例如,效 果流水线的不同部分可以利用不同策略进行操作。
在一个实施例中,生成总像素可以包括识别通过效果流水线中的多 个效果连续地处理块以产生针对主要像素的输出的任何像素。这可以包 括分析第一效果以确定产生针对主要像素的输出所需的总像素,并且分 析第二效果以确定生成针对所述总像素的输出所需的总像素,所针对的总 像素是第一效果产生针对主要像素的输出所需的。处理步骤然后可以在通 过第二效果处理块之后并且在处理所述第一效果之前减少该块中的总像素 的数目。
在另一实施例中,处理步骤可以包括在处理第一效果之后并且在处 理第二效果之前,利用来自至少一个邻近块的主要像素来更新块中的总像 素。
另一示例实施例可以是用于通过效果流水线处理图像帧链的装置。该 装置可以包括主要处理器、多个辅助处理器以及总线。总线可以互连主要 处理器、多个辅助处理器以及存储器接口。
主要处理器可以包括块生成器、效果分布器和块聚合器。块生成器可 以从经由存储器接口提供的输入图像帧中生成多个块。效果分布器可以管 理效果和多个块在多个辅助处理器间的分布和处理顺序。最后,块聚合器 可以组合经处理的块。
多个辅助处理器的每个可以包括存储来自块生成器的块的内容的最小 存储器缓存。多个辅助处理器的每个可以以连续顺序通过效果流水线一次
9处理一个块。效果流水线可以被分布在多个辅助处理器中。每个辅助处理 器可以独立地执行效果,以产生针对给定块的主要像素的输出。


参考附图,在下面的说明书中更全面地公开了本发明的这些以及其它 更详细和具体的特征,在附图中
图1是根据本发明的多核处理器的一个示例。
图2是根据本发明的计算机集群的第二示例实施例。
图3图示出了被划分为16个均一块的12x 12像素帧。 图4图示出了 12 x 12像素帧形成的块。
图5A图示出了根据本发明的用于在流水线情景中处理三个区域效果 的减小范畴策略的示例实施例。
图5B图示出了用于在给定图5A中的三个效果时确定生成所希望的主 要数据区域的输出所需的外部范畴的大小的处理。
图6A图示出了根据本发明用于处理效果流水线的固定范畴策略。
图6B是块遍历策略的第一示例实施例。
图6C是块遍历策略的第二示例实施例。
图7图示出了根据本发明用于在多核处理器上执行效果流水线的处理 的示例实施例。
图8图示出了根据本发明将最小工作份额减少为半帧的块大小的第一 经修改的效果流水线。
图9使用与图8的基于块的架构内的相同效果流水线,但是将块大小 减小为四分之一帧。
图IOA图示出了分布式非平衡效果流水线的一个示例。
图10B图示出了分布式负荷平衡效果流水线的一个示例。
图11图示出了多核系统中的传统效果流水线。
具体实施例方式
在下面的描述中,为了说明的目的,阐述了诸如流程图、系统配置和
10处理体系结构之类的多个细节,以便提供对本发明的一个或多个实施例的理解。然而,本领域技术人员将清楚,这些具体细节不是实施本发明所必需的。
本发明提供实现了对受限硬件资源进行调节的灵活可扩展流水线的流水线图像处理引擎。实施例将每个'效果,所处理的最小份额的工作从帧减小到 <块'(block)。每块表示整帧的子集。基于块的处理将相当于每
帧的数据拆分为N个部分重叠或不重叠的块,并且允许流水线的任何级中
的每个效果与其它块相独立地处理块。这允许了多个效果同时工作而不用等待整个帧或场可用,并且还消除了对复杂的同步机制的需要。每个块是
自足的(self-contained),并且保存了足以让每个效果独立地在其上工作的帧数据。由于块是自足的并且在各个块上工作的各个效果被松散地耦合,因此架构可以容易地向流水线中的较慢效果指派更多的物理处理器,而向轻便的简单效果分配较少的物理处理器。此外,处理器的指派可以逐帧改变,而不用任何用户干预。
可以以各种形式来体现本发明,各种形式包括商业处理、计算机实现的方法、计算机程序产品、计算机系统和网络、用户接口、应用编程接口等等。
图1图示出了根据本发明的多核处理器100的示例实施例。多核处理器100可以包括通过非常快的内部总线110连接起来的分立的单个处理器单元(SPU) 104池。多核处理器100还可以包括并行处理单元(PPU) 102、存储器接口 106以及输入/输出接口 108。 PPU 102可以协调SPU 104之间的处理任务的分布。PPU 102还可以包含本地存储器缓存103,用于存储与运行处理或效果相关的信息和指令。每个SPU 104可以包括存储器缓存105,用来存储与分配给该SPU 104的运行处理或效果有关的信息。
在操作期间,包含效果流水线和多个图像帧的输入可以经由输入/输出接口 108被提供给多核处理器100。 PPU 102可以将效果流水线解析为多个分立的效果。可以结合多个效果来分析每个图像帧,并将其分离为像素块。PPU 102然后可以将效果和块分布在SPU 104间供处理。在SPU 104
ii基于效果处理了块之后,PPU 102可以将经处理的块聚合为完整的输出图像帧。
虽然图1图示出了具有不同的PPU 102和SPU 104的体系结构,然而,本领域技术人员将理解,本发明不限于此,而是可以在包含均一的多核处理器的通用体系结构或其它类型的专用体系结构上实现。
图2以计算机集群200的形式图示出了本发明的第二示例实施例,计算机集群200能够分布与处理效果流水线相关联的工作负荷。计算机集群200可以包括通过网络210连接起来的分立处理单元(DPU) 204池。计算机集群200还可以包括集群管理单元(CMU) 202以及控制终端208。CMU 202可以协调DPU 204之间处理任务的分配。CMU 202还可以包括用于跟踪分布到各个DPU 204的进展、负荷和效果的集群监视器。
在操作期间,效果流水线和多个图像帧可以从终端208或能够访问网络210的另外的源被提供到CMU 202。 CMU 202可以将效果流水线解析为分立效果。可以结合效果来分析每个图像帧并将其分离为像素块。CMU202然后可以将效果和像素块分布在DPU 204间供处理。
效果的类型
对于像素数据块,'效果'是改变或扭曲像素块的处理。每块包括多个像素,例如矩形或方形网格的像素。如果M x N个处理元件同时可用,则可以同时并行地处理具有M x N个像素的块。这只有在每个输入像素提供了给定效果产生相对应的输出像素所需的所有数据时才是可能的。然而,许多效果依赖于输入像素和邻近像素以合适地将输入像素改变或扭曲为输出像素。
可以将效果分为三类点效果、区域效果和范围效果。 <点效果,是仅基于一个输入像素来产生输出像素的效果。色彩校正效果落在这类中。
'区域效果'是需要除给定输入像素之外的一定量的邻近像素来产生输出像素的效果。诸如模糊效果之类的巻积滤波器就是区域效果。区域效果给尤其与存储器占用(memory footprint)和性能有关的并行化带来了一些挑战。'范围效果'是需要整体帧作为输入以产生单个输出像素的效果。直方图效果一般是范围效果,这是因为它们在生成任何输出像素之前需要对
12整个帧的分析。范围效果给并行化造成了最大挑战。
虽然相对于空间域描述了上面的效果(即,它们利用单个帧的数据操作),然而,这些效果也可以在时间域中操作。时间域效果可能需要来自时间上邻近的帧的数据。例如,时间区域效果可能需要邻近帧输入像素数据来产生单个帧中的输出像素数据,并且时间范围效果可能需要剪辑或序
列的所有帧来产生单个输出帧的像素数据。例如,盒子模糊(Box Blur)是空间区域效果,而运动模糊(Motion Blur)是时间区域效果。此外,效果可以在两个域中工作。例如,交错扫描到逐行扫描的转换就是空间一时间区域效果,这是因为它需要空间(单个帧)域和时间域(邻近帧)两者中的邻近数据。块划分
为了减少与帧相关联的工作份额,可以将每个帧划分为较小的子帧或数据/块,。
图3图示出了被划分为16个均一块304 (图示为块1-16)的12 x 12像素帧302。虽然帧302包含12 x 12个像素,然而,每个块304 (304-1至304-16)可以包含3 x 3个像素;需要16个块来完整地将帧302映射到块304。将会明白,12 x 12像素帧302仅被提供来用于示例的目的,而并不以任何方式将本发明限制于特定帧大小、分辨率或纵横比。
示例实施例可以保持给定帧中所有块的相同尺寸。这可以在所有SPU104间提供对工作的均匀分布。然而,块大小的分布可以遵循不同方案。例如,在效果中某些像素间存在较大依赖性的情况中,可以将这些像素成组为单个块以促进并行化。此外,可以基于诸如色彩关系、对象标识等之类的各种标准来划分特定帧。最后,块大小的标准还可以产生具有类似工作份额的块,以使得给定效果在不同块上的处理时间大体上保持均一。
块划分(或聚合)自身不是本质上并行的任务,因此可以被交付给可访问多个SPU 104的结果并且可访问更多可用存储器资源的单个处理器,例如PPU 102。由于PPU 102能够立即访问整体帧,而SPU104可能优选地在分立块上操作,因此,可以将块的划分和聚合处理交付给PPU 102。此外,当块304被卸载(offload)到SPU 104时,PPU 102与SPU 104之
13间的交互优选地可以被最小化。这通过平衡多个高速SPU 104而提高了最大计算吞吐量,同时避免了与跨处理或通信相关联的延迟。
将帧分裂为不重叠的唯一块在处理点效果时表现良好。然而,对于区域效果,相同的不重叠块可能仍然有助于输出,但是需要边缘周围的额外像素数据。例如,可能需要5x5像素块来修改或输出3x3像素块304。
对于块304,可能经效果修改的块304的部分称为'主要数据,402。毗邻主要数据402的另外的数据,亦称为'边缘数据'406可能被需要来辅助处理区域效果。主要数据402与边缘数据406的组合称为块304的'总数据,。类似地,被主要数据402覆盖的区域称为^内部范畴'(inner extent ) 404,而被主要数据402与边缘数据406的组合覆盖的区域称为'外部范畴,(outer extent) 408。
所需边缘数据406的量取决于区域效果。例如,巻积效果可能需要每个块304的相当于1像素宽周长的边缘数据406。图4图示出了12x 12像素帧302的块划分。在图4中,像素帧302被划分为16个3 x 3像素块304 (304-1至304-16)。例如,虽然块304-6可以具有包含内部范畴404的3 x 3像素主要数据402,然而总数据包含具有外部范畴408的5 x 5像素区域,包括主要数据402以及毗邻像素宽的边缘数据406。
在该示例中,每个块的边缘数据406与至少一个相邻块304的主要数据402重叠。可以冗余地将该边缘数据406包括进来,以使得块304对于效果处理尽可能地自足,以实现最大性能。位于帧302边缘处的块304可以包括制造的边缘数据406,以确保它们可以被均一地处理。例如,该边缘数据406可以包括帧302的边界像素的拷贝,或者被设为固定值。
在图4的示例实施例中,块304-6的所有边缘数据406都位于相邻块304的内部范畴404内;这样,块304-6被当作'内部块,。作为对比,块304-16的两个边缘与帧302的边缘重合;这样,需要像上述那样来制造块304-16的一部分边缘数据406。在块创建时制造边缘块304的边缘数据406可以避免需要各个效果具有专门的边界条件检查,并且避免需要效果在内部或边缘块304之间进行区分。
排除了任何边缘数据406的块304的大小也称为'主要块大小',因
14为这是块304中对最终输出图像帧有贡献的唯一部分。包括边缘数据在内的块的大小称为^总块大小'。
在图4中,每个块304的主要块大小可以为9像素,而总块大小可以为25。由于这些块是正方形的,因此只要将来自边缘数据的像素添加到输出块大小中就可以计算出每个边。
虽然相对于空间效果描述了所公开的块划分,然而,本领域技术人员将明白,块划分在时间域中也可以起作用。当在时间域中作用时,块304主要包括来自时间上相邻帧的像素,并且总块大小可以是二维或三维的,而不是像空间域中那样是二维的。
虽然图5A和图5B图示出了 9像素的各块304的主要块大小以及25像素的总块大小,然而,本领域技术人员将理解,通过独立地针对每个维度考虑流水线中的各个效果的边缘需求,可以将这种实施方式扩展到非正方形块。此外,还可以将实施方式扩展到多维域(其中,块不是二维的,而是多维的,即n维)。
流水线系统中的块边缘
在包含多个效果的效果流水线的上下文中,多个区域效果中的每个将连续地使总块大小的边缘需求增加。将相对于包括三个区域效果(每个区域效果需要1像素宽的边缘)来描述下面的示例实施例。然而,将明白,给定效果可能需要各种边缘像素宽度,这可能会或者可能不会均一地被分布在内部范畴404周围。
此示例中的主要数据402可以包括具有9像素的内部块大小以及25像素的总块大小的块304。增加边缘数据406产生了25像素的大小的块,其承载了供流水线中的第一效果产生主要数据402的输出的足够信息。然而,当第一效果处理块304时,流水线中的下一区域效果利用余下的3x3像素的数据可能没有足够数据来产生主要数据402的数据,或者下一效果可能必须访问与经修改的主要数据402不相符的未经修改的边缘数据406。这是因为块304的边缘数据406将会仍然与第一效果接收到它时相同,而主要数据402将会反映第一效果的输出。为了应对流水线的情形,可能需要提供更大的总块大小,这是因为每个连续区域效果可能仅能够产
15生越发小的区域的输出。
图5A图示出了用于在流水线情景中处理三个区域效果的减小范畴(reduced-extent)策略的示例实施例。该示例实施例通过为流水线中的每个连续区域效果增加额外的边缘数据406来克服连续区域效果所导致的减少,使得每个在前的区域效果可以处理作为其输出的一部分的后续效果的边缘数据406。
在例示的减小范畴策略中,三个区域效果连续地处理像素块。利用该策略,随着块304被各个效果处理,块304的外部范畴连续地收縮。在上面示例的上下文中,第一效果处理81个像素,并且输出或修改49个像素,第二效果处理49个经修改的像素并输出或修改25个像素,并且第三效果处理25个经修改的像素,并输出或修改内部范畴404内的9个像素。
在第一步骤中,主要块大小为9像素,而总块大小为81像素。第一区域效果被提供有具有外部范畴408-3的块304,其产生具有外部范畴408-2的总数据的输出。第二区域效果被提供有具有外部范畴408-2的总数据,其产生具有外部范畴408-1的总数据的输出。第三区域效果随后被提供有具有外部范畴408-1的块304,并且产生主要数据402的输出。
图5B图示出了用于确定利用减小范畴策略在给定图5A的三个效果的情况下生成所需要主要数据402区域输出所需的外部范畴408的大小的处理。块的外部范畴408是通过如下处理确定的取用所需要的内部范畴404 (此示例中的3 x 3个像素),并且增加流水线中的最后一个区域效果的边缘数据406 (以获得5 x 5像素的外部范畴408-l),然后返回中间区域效果(以获得7 x 7像素的外部范畴408-2),然后返回最后一个效果的外部范畴506 (以获得9 x 9像素的外部范畴408-3)。该处理生成了具有9 x 9像素的外部范畴408-3的块大小。
计算此的替代方式是简单地将各个效果所需的边缘尺寸增加到主要数据402的尺寸上。假若主要数据402的块的原始尺寸为3 x 3像素,并且每个效果需要1像素边界(在每个维度上增加2像素),则总尺寸为9 x9。
减小范畴策略在遍历流水线时受益于给予每个块304的高度独立性。
16即, 一旦块304进入流水线,在数据块304离开流水线之前,不需要与任何其它邻近块304同步,也不需要任何控制机制来确保数据完整性。这还提供了减小流水线延时的最大自由度。
虽然减小范畴策略导致了流水线中除了最后一级之外的所有效果的处理时间和总数据的存储方面的额外成本,然而,,可以通过在点效果和区域效果之间进行区分并且将任何点效果朝流水线的末尾(最后一个区域效果之后)放置来减小成本和延时。
图6A图示出了用于处理效果流水线的固定范畴策略。在固定范畴策略中,在每个块304与邻近块304同步之前,在流水线的每一级仅处理一个效果。当给定块304与其邻居同步之后,其可以被流水线中的下一效果处理。该策略可能使流水线延时增加一些余裕,但是减小了计算开销。
图6A图示出了所有效果的内部范畴404和外部范畴408都相同的固定范畴策略的示例实施例。在图6A中,每个效果利用总数据作为输入仅处理主要数据402。每个区域效果被处理之后与邻近块304的同步确保了在下一效果被处理之前,利用邻近块304的主要数据402更新块304中的所有数据。
固定范畴策略的效率可能受块304被处理的顺序的影响。由于固定范畴策略需要邻近块304之间的后效果(post-effect)数据的同步,因此,在第一 (或在先)效果处理了给定块的所有邻近块304并且给定块的边缘数据406与其邻近块304同步之前,给定的第二 (或当前)效果不能开始处理该给定块。作为示例,在经第一效果处理之后,块304-1必须在被第二效果处理之前与其周围块,即块304-2、 304-5和304-6同步。类似地,块304-6必须与块304-1、 304-2、 304-3、 304-5、 304-7、 304-9、 304-10和304-11同步。
图6B图示出了以连续顺序处理块的块遍历策略(block traversalstrategy)的示例实施例。虽然是最简单的处理策略,然而,该策略可能不是效率最高的。给定多处理器100的并行性质,PPU 104可以紧邻其邻近块304被处理之后开始对给定块的边缘数据406进行同步。作为示例,当块304-1经第一效果处理之后,在其可以被同步之前,必须等待5个块,即块304-2至304-6被处理。类似地,当块304-6经第一效果处理之后,在其可以被同步之前,必须等待5个块,即块304-7至304-11被处理。这样,替代的块遍历策略可以提高固定范畴策略的并行性。
图6C图示出了替代的块遍历策略的示例实施例,其中,块被处理以便减少在给定块可以被同步之前必须处理的块304的数目。作为示例,当块304-1经第一效果处理之后,在其可以被同步之前,必须等待仅3个其它块,即块304-2、 304-5至304-6被处理。对于块304-1,两种策略都需要与3个邻近块304交换数据。由于在3个邻近块304被处理时实际等待的块304的数目是固定的(4块)并且与帧中的块304的总数无关,因此替代的块遍历策略更有用。作为对比,在图6B的原始遍历策略中,即使块304-1取决于相同数目的块304,也需要等待同一行中的所有其它块304(块304-2至304-4)以及该帧的下一行中的两个相关块(304-5禾n 304-6)被处理。这包括了三个相关块(304-2、 304-5、 304-6)以及两个无关块(304-3、 304-4);后者因遍历策略(对于从顶部至底部的所有行,在每行中向左或向右遍历)而被包括。这对于具有较大块分布的帧来说可能更显著(例如,对于100X100块的帧,利用图6B的策略,块0可能需要等待101块,即3个相关块和98个无关块,但是利用图6C的策略仍仅需等待4个块304,即3个相关块、1个无关块)。
虽然图6C示出了用于处理块304的一个替代策略,然而,该策略仅仅是示例性的,并且意图示出改变处理块304的潜在遍历顺序的益处。此外,替代的遍历策略在本发明的精神内也是可能的。例如,替代策略可以通过优化不同块划分策略、流水线中的效果、存储器容量、处理器速度等来提高性能。
流水线处理
图7图示出了根据本发明在多核处理器100上执行效果流水线的处理700的示例实施例。虽然处理700可以在各种系统中实现,然而,为了清楚,相对于多核处理器100进行描述。
在步骤702,多核处理器100可以接收标识效果流水线的输入。效果流水线可以标识可由SPU 104执行以处理像素块304的多个效果。PPU
18102可以分析多个效果以识别出各个效果的空间/时间边缘需求。
在步骤704,可以基于步骤702中的分析将效果指派并分布到多个SPU 104中。PPU 102可以给每个SPU 104指派一个效果。或者,PPU 102可以将多个简单的运行快速的效果指派给单个SPU 104,并且将复杂的运行慢速的效果指派给多个SPU 104。在另一替代实施例中,系统可以依赖于动态负荷平衡来管理效果在各个SPU 104间的分配。
在步骤706, PPU 102可以接收图像帧302用于根据效果流水线进行处理。或者,PPU 102可以经由存储器接口 106从存储器或者任何其它可访问数据源读取图像帧302。
在步骤708, PPU 102可以从图像帧302生成数据块304。数据块304的大小和结构可以是预定义的,或者可以取决于各个效果的处理需求以及所釆用的处理策略。
在步骤710, PPU 102可以将各个数据块304提供给被指派给效果流水线中的第一效果的SPU 104。各个数据块304随后可以按效果流水线所定义的顺序遍历效果流水线的多个效果。
在步骤712,当数据块304经效果流水线所确定的最后一个效果进行处理后,数据块304可由PPU 102聚合在存储器缓存103或其它存储器中。PPU102然后可以将经聚合的数据块304组合成为图像帧302。
在步骤714,如果任何其它图像帧302需要通过效果流水线进行处理,则处理返回步骤706;否则,处理结束。
图11图示出了在现有技术中,6级效果流水线中的预期延时为六帧,这是因为通过定义,每个帧花费一帧时间进行处理。
图8图示出了经修改的效果流水线,其中,最小工作份额被减少为块304。在此实施例中,每个块304等于半个帧302,因此,由各个效果以1/2的帧时间来处理。如图8所示,这可以将延时从6帧减少为3!/2帧。
在图8中,第一半帧F1B1在3帧G/2帧X6个效果)内被处理。第二半帧F1B2也在3帧内被处理,但是仅在第一半帧F1B1后!/2帧进入流水线。结果,第二半帧F1B2在3 W帧G/2帧X6个效果+V2帧延时)内离开流水线,导致整个第一帧302的总的帧时间延时为3 V0贞。
19图9所示的示例实施例使用图8的基于块的架构内的相同效果流水线,但是块大小被减小到四分之一帧。与现有技术相比,本实施例通过再次减小块大小,生成了从6帧到2 1/4帧的流水线延时改善。
在图9中,第一四分之一帧F1B1在1 ^帧(1/4帧X6个效果)内被处理。四分之一帧F1B2也在1 '/2帧内被处理,但是仅在第一四分之一帧F1B1后1/4帧进入流水线。结果,第二四分之一帧F1B2在1 3/4帧(1/4帧X6个效果+l/4帧延时)内离开流水线。第三和第四个四分之一帧F1B3和F1B4也在第一四分之一帧F1B1之后^帧和3/4帧离开流水线。结果,第一帧在2 1/4帧内被处理。
上面的示例清楚地表明了基于块的效果处理相对于基于帧的效果处理的优点。随着块大小持续减小,获得关于流水线延时的更高增益变得可能;然而,增益变得越来越小。最终,从数据块304的数据传送以及处理的其它计算方面引入的延时随着进一步的块减小而超过了增益。
与传统的基于帧的体系结构类似,基于块的系统的流水线延时也可以定义为链中的最慢效果的处理时间与流水线中的效果(或级)数之积。然而,切换为基于块的体系结构将此减小为最慢效果M处理一块304数据所花时间与效果(或级)数减1的乘积,再加上最慢效果处理一帧302数据所花时间的和。作为计算时间的基于块的流水线延时可以计算为PLCT = (S x T脂)+ ((N- 1) x TBM) (式3)
其中
PLcr是作为计算时间的流水线延时。,N是流水线中的效果/级数。
S是从每个帧302生成的块304的数目。
TBM是流水线中的最慢效果M处理一块所需时间。假设与块处理相关联的开销成本可忽略,这计算出的处理时间为TFM = (SxTBM) (式4)
例如,图7所示的基于块的系统的PLcr在S=2时变为(2 x 60) + (5 x60) = 420ms。由于我们忽略了与到块处理的切换相关联的任何开销,因此T脂简单地计算为TFM/S。计算以帧时间为单位的PL产生了公式PLFT = PLCT/FR (式5)其中-
PLpT是以帧时间为单位的流水线延时。
PLcT是作为计算时间的流水线延时。
,FR是有效帧频。
利用上面的数字,图8中的示例的PLpT为420 / 120 = 3.5帧,等于先前计算出的数目。图9所示示例产生了 270 ms的PLct和2.25帧的PLFT。
如前面所提到的,这些示例假设基于块的处理的开销可忽略。现实世界的情景可能具有位于流水线中较前面的效果的较多计算时间(减小范畴策略),或者较大的同步开销,因此减小了流水线延时(固定范畴策略)。
存储器需求
基于块的系统在流水线的存储器占用方面提供了重大优点。传统的基于帧的N级流水线需要至少N帧缓冲器来维持所有级的操作。由于在效果流水线的外面处理帧1/0,因此,这种系统还需要几个额外的帧缓冲器来用于该目的(最少为2, 一个用于输入, 一个用于输出,并且如果采用I/0操作的双缓冲则为4)。因此,处理流水线所需的最少帧缓冲器实际上为N+2。
如果P表示流水线系统中可用处理器元件的数目,则所需缓冲器将减少为(P, N)中的最小值个缓冲器,这是因为,如果处理器元件的数目少于流水线中的级数,则系统仅可以同时处理P个帧302。相反,如果流水线级数小于处理器元件数,则系统仅可以同时处理N个缓冲器,伺时其余处理器元件将保持空闲。
计算传统的基于帧的流水线所需的帧缓冲器的最小数目的公式可以得出为
YF = min (P, N) + 2 (式6)其中
Yp是处理流水线所需的帧缓冲器的最小数目。
21,P是可用处理器元件的数目。
,N是流水线中的级/效果数。
则针对缓冲器的实际存储器需求变为
MFBA = YFxZF (式7)其中-
MFBA是利用基于帧的方法的流水线中的缓冲器所需的最小存储器,以字
节为单位
Yp是处理流水线所需的帧缓冲器的最小数目,Zp是每个帧缓冲器的大小,以字节为单位
基于块的系统在流水线的存储器占用方面提供了重大优点。由于块比帧小,因此即使对于较短长度的管道,存储器节省也可以是大量的。遵照前面的逻辑,基于块的系统中所需的最小缓冲器数可以为min (P, N)个块缓冲器,加上同样用于I/0操作的至少2个帧缓冲器。如上
YB = min(P,N) (式8)
其中-
,YB是处理流水线所需的块缓冲器的最小数目
'P是可用处理器元件(SPU104)的数目,N是流水线中的级数。
然而,所有缓冲器的实际存储器需求为MBBA = YBxZB + 2xZF (式9)其中-
MBBA是利用基于块的方法的流水线中的缓冲器所需的最小存储器,以字
节为单位。
YB是处理流水线所需的块缓冲器的最小数目。
,ZB是每个块304缓冲器的大小,以字节为单位。,Zp是每个帧302缓冲器的大小,以字节为单位。
作为示例,在4 SPU系统上的6级流水线中,其中,保存一帧302所需存储器为8192 KB (保存每2048 x 1024尺寸的4字节每像素HD帧所需的大小),并且每个帧302被划分为256 x 256尺寸的块304,保存每个块304所需的大小为256 KB,并且每个帧302将有32个块304 (为了简化,
边缘大小=0) o
利用传统的基于帧的方法的公式,基于帧的流水线系统中的缓冲器所需的最小存储器为
MFBA = [min (P, N) + 2] x ZF = [min (4, 6) + 2] x 8192 = 6 x 8192 = 49152 KB作为比较,利用基于块的方法处理相同流水线所需的最小存储器为
MBBA = [min (P, N)] x ZB + 2 x ZF = [min (4, 6)] x 256 + 2 x 8192 = 4 x 256 +
2 x 8192= 17408 KB。
此外,可以注意,两个强制性(mandatory)帧缓冲器消耗了基于块的
系统所使用的17MB中的16MB。因此,通过移除这些强制性缓冲器,可
比存储器使用之差变为基于帧的系统的32MB相对于基于块的系统的1.5
MB。即使基于块的方法对于连续的区域效果将需要更大量的存储器,存
储器消耗也不可能接近基于帧的系统的存储器消耗。III.负荷平衡
到此为止所图示出的示例实施例假设所有构成效果花费相同量的时间来处理相同量的数据(不管是帧302还是块304)。然而,效果可以基于它们的算法以及实施方式复杂度而花费变化量的时间。不同效果的变化的处理时间可以降低流水线延时,并最慢效果导致了瓶颈。瓶颈随后可能使下游SPU 104缺乏工作。如果缓冲器数目受到限制,这还可能使上游SPU104缺乏工作,这是因为存储器被消耗。
图10A图示出了效果的各自计算时间极大地变化的流水线的一个示例。在图10A中,效果FX1、 FX2和FX4需要20 ms的计算时间,效果FX3需要160 ms的计算时间,而效果FX5和FX6需要10 ms的计算时间。在此实施例中,由于各个块在效果FX1处进入流水线并且连续地通过各个效果FX2-FX6,因此,在效果FX3处产生了瓶颈。
图IOA中的处理流水线与相对于图8和图9所讨论的每个SPU 104被指派有单个效果的实施例类似。然而,尽管在图8和图9中块延时为6个块,但是在图10中,总的流水线延时因效果3所创建的瓶颈而高许多。这导致下游的效果(因此,其它SPU 104)在空闲状态中浪费时间。长期
23地,此瓶颈可能导致利用极大量的缓冲器仅仅用来保持上游SPU 104被占 用,而在输出端没有任何益处。
静负荷平衡(Static Load Balancing)提供了对此问题的第一解决方 案。静负荷平衡包括通过将所涉及的各个效果(FX1-FX6)的计算时间 考虑在内,来执行对效果的静态分析。这允许了效果的在先分布,其可以 包括将短计算效果组合到单个资源(即, 一个或较少的SPU),同时增加 较慢效果的资源数(例如,贡献多个SPU)。
图IOB图示出了负荷平衡效果流水线的一个示例。图IOB中的效果处 理时间与图IOA相等;然而,效果在不同SPU 104 (104-1至104-6)之间 是负荷平衡的。在图11B中,SPU 104-2至104-5专用于效果FX3。 SPU 104-1被指派给效果FX1和FX2,而SPU 104-6被指派给效果FX4、 FX5 和FX6。这种分布使用了所有的SPU 104,同时还限制了缓冲器的使用并 且提升了整体性能。尤其明显的是效果FX3所消耗的过多处理时间被分布 在了多个SPU 104 (104-2至104-5)上的事实。这确保了当每个块304离 开效果FX2时,有可用SPU 104来处理效果FX3。此外,当每个块304离 开效果FX3时,指派给效果FX4至FX6的SPU 104立即可用。
对于固定功能流水线,静负荷平衡可以工作得很好,但是在需要一般 效果流水线或者甚至在需要效果处理时间基于输入数据的复杂性或外部参 数而变化的固定功能流水线时,不能够很好的扩展。
在处理负荷基于外部输入(例如处理时间随着用户提供的参数而改变 的效果)或基于工作负荷本身(例如,基于编码数据内的压縮变化的解码 器)逐帧或逐块变化的情况中,动态负荷平衡提供了对静负荷平衡的替 代。
从基于帧的处理切换为基于块的处理允许了调度系统中的更有效的动 态负荷平衡,这是因为有更多的同步点可供调度者用来使事件相抵消,并 且可以将本地化工作差异考虑在内(例如,同一帧内包含低反差数据的块 和包含高反差数据的块对于不同效果将具有不同的性能特性,并且切换到 基于块的动态负荷平衡允许系统以更细粒度的水平来适应此)。
关于这里描述的处理、系统、方法、试探法等,应当明白,虽然这些处理的步骤等被描述为根据某种顺序序列而发生,然而,也可以利用按除 了这里描述的顺序之外的顺序执行的所描述步骤来实施这些处理。还应当 明白,可以同时执行某些步骤,可以添加其它的步骤,或者可以省略这里 描述的某些步骤。处理也可以实现为客户端、服务器和/或数据库中的计算 机可执行指令(例如, 一个或多个脚本)、存储的过程、可执行程序等。 换言之,这里对处理的描述被提供用于图示说明某些实施例的目的,而决 不应当被解释为限制要求保护的发明。
因此,将明白,上面的描述希望是说明性的而非限制性的。本领域技 术人员在阅读了上面的描述之后将清楚除了所提供的示例之外的许多实施 例和应用。不应当参考上面的描述而应当参考所附权利要求书以及这些权 利要求享有的等同物的全部范围来确定本发明的范围。预期并希望将来的 发展将在这里所讨论的技术中发生,所提到的系统和方法将包括在这些将 来的实施例中。总之,应当明白,本发明能够进行修改和变化并且仅由下 面的权利要求来限定。
所公开的并行处理方法可以应用于音频效果流水线、3D效果流水线 或者可以将数据拆分为分离块并且通过效果流水线被处理的任何情形。
诸如这里所讨论的那些计算设备之类的计算设备(例如,处理器、客 户端、服务器、终端等) 一般可以包括可执行指令。此外,处理器可以包 括包含了诸如SPU、 PPU、 GPU等之类的任意数目的处理组件的任何设备 本身。可以从计算机程序编译或解析计算机可执行指令,计算机程序是利 用本领域技术人员公知的包括但不限于单独或组合形式的Java、 C、 C++、汇编等多种编程语言和/或技术创建的。 一般地,处理器(例如,微 处理器)接收指令(例如,从存储器、计算机可读介质等),并执行这些 指令,由此来执行包括这里描述的一个或多个处理在内的一个或多个处 理。可以利用多种公知的计算机可读介质来存储并发送这些指令和其它数 据。
计算机可读介质包括可由计算机读取的参与提供数据(例如,指令) 的任何介质。这种介质可以采取许多形式,包括但不限于非易失性介质、 易失性介质以及传输介质。非易失性介质例如可以包括光或磁盘以及其它
25永久性存储器。易失性介质包括动态随机存取存储器(DRAM),其通常 构成主存储器。
计算设备之间以及计算设备内的通信可以采用传输介质,包括同轴线 蓝、铜线以及光纤,包括包含了耦合到处理器的系统总线在内的线路。传 输介质可以包括或传送声波、光波以及电磁发射,例如在射频(RF)和红 外(IR)数据通信期间生成的那些发射物。计算机可读介质的普通形式例 如包括软盘、可折叠磁盘、硬盘、磁带、任何其它磁介质、CD-ROM、 DVD、任何其它光介质、穿孔卡、纸带、任何其它具有孔图案的物理介 质、RAM、 PROM、 EPROM、 FLASH-EEPROM、任何其它存储芯片或模 块、如此后描述的载波、或者可由计算机读取的任何其它介质。
因此,本发明的实施例产生并提供了流水线化图像处理引擎。虽然已 参考本发明的某些实施例相当详细地描述了本发明,然而,在不脱离本发
明的精神或范围的情况下,可以以各种形式体现本发明。因此,下面的权 利要求不应当以任何方式受限于这里所包含的对实施例的描述。
本申请与2008年9月9日提交的美国临时申请No. 61/191,557有关, 该申请的全部内容通过引用结合于此。
2权利要求
1.一种用于通过效果流水线处理图像帧的方法,所述方法包括生成多个块,每个块包含一组主要像素和一组总像素,所述总像素包括所述效果流水线中的效果产生针对所述主要像素的输出所需的作为输入的任何像素;以预定的连续顺序通过所述效果流水线来处理每个块,所述效果流水线被分布在多个处理节点中;以及通过组合经处理块中的所述主要像素,来聚合经处理的块以产生输出帧,其中,所述效果流水线中的每个效果处理作为输入被提供给节点的块,以产生针对所述块的所述主要像素的输出。
2. 如权利要求1所述的方法,其中,总块像素包括所述主要像素以及 至少一个效果产生针对所述主要像素的输出所需的作为输入的任何其它像 素。
3. 如权利要求1所述的方法,其中,生成多个块还包括分析效果以 确定生成针对所述主要像素的输出所需要的总像素。
4. 如权利要求3所述的方法,其中,生成多个块包括分析第一效果以确定产生针对所述主要像素的输出所需要的总像素;以及分析第二效果以确定生成针对所述总像素的输出所需的总像素,所针 对的总像素是所述第一效果产生针对所述主要像素的输出所需的。
5. 如权利要求4所述的方法,其中,所述处理步骤在通过所述第二效 果处理块之后并且在处理所述第一效果之前,减少所述块中的总像素的数 目。
6. 如权利要求1所述的方法,其中,所述处理步骤包括在处理第一 效果之后并且在处理第二效果之前,利用来自至少一个邻近块的主要像素 来更新块中的总像素。
7. 如权利要求1所述的方法,其中,所述总像素包括通过所述效果流水线中的多个效果连续地处理块以产生针对所述主要像素的输出所需的作 为输入的任何像素。
8. 如权利要求1所述的方法,其中,生成多个块包括分析每个效果 以判断所述效果是像素效果、区域效果还是范围效果。
9. 如权利要求1所述的方法,其中,生成多个块包括分析节点可用 的资源以及效果,以确定所述多个块中的每个块的总像素和主要像素的数 目。
10. 如权利要求1所述的方法,其中,所述总像素包括来自时间上邻 近的图像帧的多个像素。
11. 如权利要求1所述的方法,其中,所述总像素包括输入图像帧内 的多个空间上邻近的像素。
12. 如权利要求1所述的方法,其中,当通过效果流水线处理每个块 时,每个处理节点独立地利用效果对块进行处理。
13. 如权利要求1所述的方法,其中,所述处理步骤包括调度效果 以减少每帧中的第一块的开始处理与每帧中的最后一块的输出之间的延 时。
14. 一种用于通过效果流水线处理图像帧链的装置,包括 主要处理器,该主要处理器包括块生成器、效果分布器和块聚合器; 多个辅助处理器,每个辅助处理器包括存储块的内容的最小存储器缓存;以及总线,该总线互连所述主要存储器、所述多个辅助处理器以及存储器 接口;其中所述块生成器从经由所述存储器接口提供的输入图像帧中生成多 个块,每个块包含来自所述输入图像帧的一组主要像素和一组总像 素,所述总像素包括所述效果流水线中的效果产生针对所述主要像素 的输出所需的作为输入的任何像素,所述效果分布器管理效果和所述多个块在所述多个辅助处理器间 的分布和处理顺序,所述块聚合器组合经处理的块;所述多个辅助处理器通过所述效果流水线以连续顺序处理每个 块,所述效果流水线被分布在所述多个辅助处理器中,以及每个辅助处理器执行独立地处理每个块以产生针对所述块的主要 像素的输出的效果。
15. 如权利要求14所述的装置,其中,每个块中的所述总像素包括所 述主要像素以及至少一个效果输出所述主要像素所需的作为输入的任何其 它像素。
16. 如权利要求14所述的装置,其中,所述主要处理器分析效果以确 定生成所述主要像素所需的总像素。
17. 如权利要求14所述的装置,其中,所述块生成器分析第一效果以 确定生成所述主要像素所需的总像素,并且分析第二效果以确定生成所述 第一效果需要用来生成所述主要像素的总像素所需的总像素。
18. 如权利要求17所述的装置,其中,辅助处理器在通过所述第二效 果处理块之后并且在处理所述第一效果之前,减少所述块中的总像素的数 目。
19. 如权利要求14所述的装置,其中,所述辅助处理器在对块处理第 一效果之后并且在处理第二效果之前,利用来自至少一个邻近块的主要像 素来更新所述块的总像素。
20. 如权利要求14所述的装置,其中,所述总像素包括执行效果流水 线中的至少一个效果以产生针对所述主要像素的输出的至少一个辅助处理 器连续地处理块所需的作为输入的任何像素。
21. 如权利要求14所述的装置,其中,所述块生成器分析每个效果以 判断至少一个效果是像素效果、区域效果还是范围效果。
22. 如权利要求14所述的装置,其中,生成多个块包括分析辅助处 理器可用的资源以及相对应的效果,以确定总像素和主要像素的数目。
23. 如权利要求14所述的装置,其中,所述总像素包括来自时间上邻 近的图像帧的多个像素。
24. 如权利要求14所述的装置,其中,所述总像素包括空间上邻近的块中的多个主要像素中的像素。
25. 如权利要求14所述的装置,其中,当通过效果流水线处理每个块 时,每个处理节点独立地利用效果对块进行处理。
26. 如权利要求14所述的装置,其中,所述主要处理器包括调度器, 以减少每帧中的第一块的开始处理与每帧中的最后一块的输出之间的延 时。
全文摘要
本发明公开了流水线化的图像处理引擎。本发明涉及通过将图像帧分成为多块图像数据来通过效果流水线处理图像帧。示例方法包括从每帧生成多个块,以预定的连续顺序通过效果流水线来处理每块,并且通过组合每个经处理块中的主要像素来聚合经处理的块以产生输出帧。效果流水线可以被分布在多个处理节点中,并且每个效果可以处理被提供作为节点的输入的块。每个处理节点可以独立地利用效果对块进行处理。
文档编号G06T1/20GK101673391SQ20091016911
公开日2010年3月17日 申请日期2009年9月9日 优先权日2008年9月9日
发明者赫曼·K·加拉 申请人:索尼株式会社;索尼电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1