图形处理管线可以包括至少两个或更多个管道,以使得可以在一个管道上执行较低频率的操作而同时在另一个管道上执行同一个指令流内的较高频率的操作。在一些情况下,较低频率的操作的结果可以被保持以供稍后结合在一不同管道上执行的较高频率的操作来使用。特别是,当未被使用的时隙可以被用于此较低频率的操作时,可以提高效率。
【技术实现步骤摘要】
执行并行着色操作
技术介绍
本专利技术总体上涉及基于处理器的系统,并更加具体地,涉及进行图形处理的基于 处理器的系统。在图形处理中,可以操纵电子数据以呈现用于显示在计算机显示器上的图 形图像。剔除算法被用在计算机图形学中以避免执行不必要的工作。例如,可编程的剔除 消除了实际永远不会在最终的描绘中出现的图形元素所需要的处理。被其它元素遮挡的图 形元素永远不会出现在实际的最终描绘中,然而对那些元素的处理却可能消耗处理带宽并 对性能产生不利影响。对不在视锥体中的对象不需要进行处理。类似地,对不显示在图形 描绘中的表面上的特征不需要进行处理。剔除着色器针对多个元素(例如像素或顶点)而自动生成,并针对每组图元而被 读取一次以确定是否剔除一个组中的所有元素。例如,可以做出是否一次性剔除多个像素 的决定。在被称为图块的像素组上执行剔除测试,这样如果一个图块被剔除,那么在该图块 中没有像素需要被着色或者在该图块中的每个像素都可以执行更短且更有效的着色器。为 了剔除面片(patch)内部的多个点,对保守的界限或多点包围进行剔除测试。典型的剔除算法由于其需要额外的处理而导致一些开销成本。因此,存在由于剔 除算法所造成的性能下降,即使如此,从净出上看,当剔除实际上消除了图块或顶点组时, 这些算法导致了性能的提升。附图说明图1为对根据本专利技术的一个实施例的可编程的图形管线的概要性描绘;图2为对根据本专利技术的一个实施例的双核心处理器体系结构的描绘;图3为针对本专利技术的一个实施例的流程图;以及图4为针对一个实施例的系统描绘。具体实施例方式在一些实施例中,图形处理核心可以包括至少两个或更多个管道(pipe)。根据一 些实施例,可以在一个管道上执行较低频率的操作(较不经常发生的操作),而同时在另一 个管道上执行同一个指令流中的较高频率的操作。在一些情况下,较低频率的操作的结果 可以被保持以供稍后在另一个管道上的较高频率的操作中使用。在一些情况下可以提升效 率,在这些情况中有可能使用较低频率管道中未被使用的时隙(slot)来执行操作,这些操 作协助在较高频率管道中执行的操作。有可能存在许多这种并行性的例子。例如,较低频率的操作可以是剔除着色器, 而较高频率的操作可以是像素着色器。较低频率的操作可以是固定功能剔除操作,例如视 锥体剔除操作或背面剔除操作,而较高频率的操作可以是光栅化。再如另一个示例,较低 频率的操作可以是几何着色,而较高频率的操作可以是像素着色。一般来说,在图形管线 (pipeline)中的任何操作都可以并行地运行。如本文所使用的,并行运行的意思是,在图形管线的至少两个不同管道上的操作是同一个指令流的组成部分并且被同时执行。 在一些情况下,图形管线可以包括一个或多个管道,这些管道中的一个管道比其 它管道宽。例如,在一个实施例中,一个管道可以是16道宽而另一个管道可以是1道宽。可 以在较宽的管道上执行较高频率的操作而在较窄的管道上执行较低频率的操作。然而,可 以存在具有各种宽度的任何数量的管道。在下面的讨论中给出了一个示例,在这个示例中, 在较低频率管道中执行剔除着色,而在较高频率管道中执行像素着色。这是一个极其具有 优势的实施例,因为它在当通过使用较低频率管道上的原本不被使用的时隙而使剔除着色 可以与像素着色同时被执行时,可以实现只有很少或没有开销的剔除着色。然而,本专利技术并 不局限于此,并且可以应用到任何数量的管道、任何多样的管道宽度以及以不同频率并行 执行的各种操作中的任何操作。根据一些实施例,可以并行地执行实际的顶点或像素着色器程序。在双管线体系 结构中,一条管线,被称为U管线或U-管道,负责执行主要指令,而第二条更受限制的管道, 被称为V管线或V-管道,负责执行标量指令。标量指令一次对单独一个元素进行操作。 U-管道对一次处理多个数据项的矢量操作进行操作。在典型的图形管线中,可编程的着色器阶段可以是工作量的主导部分。由于工作 量的高吞吐量,这些着色器被编译为运行在U-管道上的代码,一次处理多个元素。需要一 些标量指令来用来粘合这些矢量操作,但是存在未被利用的空时隙。这些空时隙可以被利 用以执行针对下一个图块或绘图调用的剔除着色器程序。“绘图调用”是一个状态集合以及一组几何体,从而可以使用一个(或至少是很少 量的)应用程序接口调用来将整个组和状态经由应用程序接口送入图形卡,节约了开销。通过使用并行管线中的空闲或未被使用的指令时隙,不存在任何由剔除算法引起 的性能的下降,因为剔除程序在并行管线(例如V-管道)上的原本未被使用的指令时隙上 并行地执行。如果在V-管道上没有足够的空闲指令,则可以将着色器循环“展开”以产生 长段的矢量代码,直到有足够的空闲时隙为止。可以按如下来解释对循环的展开。如果存在循环for(i = 0;i < 4; i++){doSomething(i) ;},则循环展开将是 doSomething(0) ;doSomething(1); doSomething(2) ;doSomething (3)。有可能存在部分循环展开,其中循环中的一些操作被展 开为一系列连续的组分操作。参照图1,完整的可编程管线10可以接收输入数据12,输入数据12被提供给顶点 着色器14、几何着色器16和图元建立18。在光栅化20之后是像素着色器22和帧缓冲器 混合对。参照图2,图形处理器核心30可以包括U-管道32和V-管道38。U-管道32与矢 量处理单元34以及算术逻辑单元36向耦合。矢量处理单元34耦合至16个图形处理寄存 器乘以4个线程42以及32个矢量寄存器乘以4个线程40。V-管道38耦合至算术逻辑单元36以及32个矢量寄存器40以及16个图形处理 寄存器42。U-管道32和V-管道38的输入来自于指令高速缓存45,其供应指令读取与拾取 单元44。数据高速缓存47接收来自各种处理单元34和36的输出并通过双向总线提供数据至二级或L2高速缓存48。L2高速缓存48通过环形总线46与主存储器相耦合。时钟单 元49提供时钟信号至数据高速缓存与L2高速缓存之间的总线以及L2高速缓存与环形总 线之间的总线。针对一组元素(例如图块或绘图调用)的剔除着色器,可以在运行针对那些元素 的着色器之前被运行,因为剔除着色器的目的在于避免运行针对不需要被着色的对象(例 如被遮挡的元素)的着色器。为了建立这种顺序,当真实的着色器正在处理当前的一组元 素时,剔除着色器在将要被着色的下一组元素上运行剔除测试。因此,到真实的着色器开始 在U-管道上处理此下一组元素时,已经可以从V-管道得到该着色器的组剔除测试的结果。将工作在较高级图元上的标量代码与工作在较低级图元上的矢量代码交错在一 起的概念完全地利用了可用的硬件。例如,几何着色器与像素着色器也能够使用并行操作。 几何着色器工作在作为较高级图元的三角形上,而像素着色器工作在作为较低级图元的像 素上。从概念上讲,当像素着色器正工作在前一个三角形的像素上时,能够基于下一个三角 形对几何着色器进行交错。一般来讲,高频率的操作可以被映射到U-管道上的高吞吐量的部分上,而具有低 吞吐量的低频率的操作可以在V-管道上操作。对代码进行交错并且将操作的频率映射到 矢量处理单元可以被一般化。如果机器本文档来自技高网...
【技术保护点】
一种方法,包括:在图形管线的第一管道上执行第一操作;与所述第一操作同时地,在图形管线的第二管道上执行第二操作,所述第一操作和第二操作是同一指令流的组成部分,并且所述第一操作以低于所述第二操作的频率来执行。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:TG阿克宁穆勒,RP萨特,
申请(专利权)人:英特尔公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。