执行并行着色操作的制作方法

文档序号:6335399阅读:305来源:国知局
专利名称:执行并行着色操作的制作方法
执行并行着色操作
背景技术
本发明总体上涉及基于处理器的系统,并更加具体地,涉及进行图形处理的基于 处理器的系统。在图形处理中,可以操纵电子数据以呈现用于显示在计算机显示器上的图 形图像。剔除算法被用在计算机图形学中以避免执行不必要的工作。例如,可编程的剔除 消除了实际永远不会在最终的描绘中出现的图形元素所需要的处理。被其它元素遮挡的图 形元素永远不会出现在实际的最终描绘中,然而对那些元素的处理却可能消耗处理带宽并 对性能产生不利影响。对不在视锥体中的对象不需要进行处理。类似地,对不显示在图形 描绘中的表面上的特征不需要进行处理。剔除着色器针对多个元素(例如像素或顶点)而自动生成,并针对每组图元而被 读取一次以确定是否剔除一个组中的所有元素。例如,可以做出是否一次性剔除多个像素 的决定。在被称为图块的像素组上执行剔除测试,这样如果一个图块被剔除,那么在该图块 中没有像素需要被着色或者在该图块中的每个像素都可以执行更短且更有效的着色器。为 了剔除面片(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-管道上操作。对代码进行交错并且将操作的频率映射到 矢量处理单元可以被一般化。如果机器已经具有任意给定数量的管道,则能够对代码进行 交错以使得以最少频率执行的代码被映射到标量代码而以最多频率执行的代码被映射到 最宽的矢量单元。工作量也可以从V-管道上的管线的固定功能组件(诸如交错的固定功能剔除,例 如视锥体、背面等等)与U-管道上的光栅化(其是单指令、多数据(SIMD)指令)进行组合。 将可编程的着色器与剔除着色器进行交错以及将固定功能的单指令、多数据操作与固定功 能剔除操作进行交错能够使每个组合在该组合内使用相同的编译器。可以使用传统的C++ 编译器来编译用于所有固定功能的编译器的代码,而可以使用着色器语言编译器来编译用 于着色器的代码。由于编译器是相同的,因此除了为帮助实现交错而有可能需要的其它编 译器优化(诸如循环展开)之外,每个编译器皆完全地控制如何最佳地对标量代码与矢量 代码进行交错。在一些实施例中,由于剔除着色器可以与顶点着色或像素着色并行地执行而导致 剔除算法可能成本极低。为了得到足够的空闲时隙,有可能需要将循环在绘图调用中的顶 点上展开。即使有可能难以收集足够的图块或绘图调用以在U-管道上执行剔除着色器, 也有可能存在剔除着色器与像素着色器之间的一对一的关系,从而使得当使用矢量指令在 U-管道上执行像素着色器时,在像素的图块上使用标量执行剔除着色器。这样可以简化一 些实施例中的光栅化和剔除代码。类似地,当U-管道在绘图调用中的顶点上进行循环并估计出一次针对16个顶点 的顶点着色器时,U-管道能够针对下一次绘图调用而在V-管道上的空闲指令时隙中计算 出包围盒(bounding box)。因此,参照图3,并行剔除与着色序列50具有第一并行路径52,其为V-管道路径 及剔除着色器56。第二并行路径M包括像素着色器及U-管道58。剔除着色器或V-管道 路径处理下一个图块n+1、图块η以及图块η-1等等。U-管道路径滞后一个图块,在图块η、 η-1和η-2上进行操作。
因此,在一个实施例中,当U-管道实际上正在通过使用矢量指令进行着色时, V-管道正在通过使用标量管道进行剔除。由于V-管道的操作正在使用原本未被使用的时 隙,因此即使当不能进行任何剔除时,也不会遭受性能的下降。计算机系统130,如图4所示,可以包括硬盘驱动器134和可移除介质136,它们通 过总线124与芯片组核心逻辑110相耦合。核心逻辑可以通过总线105与图形处理器112 相耦合,并在一个实施例中与主或主机处理器122相耦合。图形处理器112还可以通过总 线126与帧缓冲器114相耦合。帧缓冲器114可以通过总线107与显示屏幕118相耦合, 显示屏幕118又通过总线1 与传统组件,例如键盘或鼠标120相耦合。在软件实现的情况下,相关的代码可以被存储在任何合适的半导体存储器、磁性 存储器或光学存储器中,包括主存储器132。因此,在一个实施例中,代码139(其执行图3 的序列),可以被存储在机器或计算机可读介质中,例如存储器132,以由处理器(例如处理 器122或图形处理器11 所执行。在一个实施例中,核心30是图形处理器112的一部分。可以在各种硬件体系结构中实现本文所描述的图形处理技术。例如,图形功能可 以集成在芯片组内部。可选择地,可以使用分立的图形处理器。再如另一个实施例,可以通 过通用处理器(包括多核处理器)来实现图形功能。贯穿整个说明书的对“ 一个实施例,,或“实施例”的引用的意思是结合该实施例 而描述的特定的特征、结构或特性被包括在了至少一个包含在本发明内的实现方式中。因 此,本说明书中出现的用语“一个实施例”或“实施例”不一定指代同一实施例。此外,这些 特定的特征、结构或特性可以以除所图示说明的特定的实施例外的其它合适的形式实现, 并且所有这些形式皆可以被包括在本申请的权利要求内。尽管已经参照数量有限的实施例描述了本发明,但是本领域技术人员将从中意识 到许多修改和变型。所附权利要求书意图涵盖落入本发明的实质精神和范围内的所有这种 修改和变型。
权利要求
1.一种方法,包括在图形管线的第一管道上执行第一操作;与所述第一操作同时地,在图形管线的第二管道上执行第二操作,所述第一操作和第 二操作是同一指令流的组成部分,并且所述第一操作以低于所述第二操作的频率来执行。
2.根据权利要求1所述的方法,包括执行剔除着色器作为所述第一操作。
3.根据权利要求2所述的方法,包括执行像素着色器作为所述第二操作。
4.根据权利要求1所述的方法,包括执行几何着色器作为所述第一操作,以及执行像 素着色器作为所述第二操作。
5.根据权利要求1所述的方法,包括执行固定功能剔除作为所述第一操作,以及执行 光栅化作为所述第二操作。
6.根据权利要求1所述的方法,包括对较低频率的操作使用未被使用的时隙来进行 对所述第一操作的所述执行,所述第一操作为所述第二操作提供数据。
7.根据权利要求6所述的方法,其中,所述第一操作是剔除操作,所述第二操作是着色 操作。
8.根据权利要求6所述的方法,包括通过对循环进行展开来找到未被使用的时隙。
9.根据权利要求1所述的方法,包括在所述第二操作在一图块上运行之前,在所述图 块上执行所述第一操作。
10.根据权利要求1所述的方法,其中,所述第一操作是标量操作,并且所述第二操作是矢量操作。
11.一种计算机可读介质,其存储了指令,所述指令由处理器所执行以用于 在图形管线上并行地运行两个不同频率的操作;以及将一个操作的结果用于另一个操作中。
12.根据权利要求11所述的介质,还存储用于以下的指令执行剔除着色器作为所述 操作中的一个操作,以及执行像素着色器作为所述操作中的另一个操作。
13.根据权利要求11所述的介质,还存储用于以下的指令执行几何着色器作为所述 操作中的一个操作,以及执行像素着色器作为所述操作中的另一个操作。
14.根据权利要求11所述的介质,还存储用于以下的指令执行固定功能剔除作为一 个操作,以及执行光栅化作为另一个操作。
15.根据权利要求11所述的介质,还存储用于以下的指令通过对循环进行展开来找 到未被使用的时隙。
16.一种装置,包括第一图形处理管道,其执行第一操作;第二图形管道,其以与所述第一操作的频率不同的频率执行第二操作,所述第一操作 和第二操作是同一指令流的组成部分,并且所述第一操作以低于所述第二操作的频率来执 行。
17.根据权利要求16所述的装置,其中,所述第一操作是剔除着色器,并且所述第二操作是像素着色器。
18.根据权利要求16所述的装置,其中,所述第一操作是几何着色器,并且所述第二操作是像素着色器。
19.根据权利要求16所述的装置,在所述第二操作在一图块上执行之前,所述第一管 线在所述图块上执行。
20.根据权利要求比所述的装置,其中,所述第一管道是标量管道,并且所述第二管道是矢量管道。
全文摘要
图形处理管线可以包括至少两个或更多个管道,以使得可以在一个管道上执行较低频率的操作而同时在另一个管道上执行同一个指令流内的较高频率的操作。在一些情况下,较低频率的操作的结果可以被保持以供稍后结合在一不同管道上执行的较高频率的操作来使用。特别是,当未被使用的时隙可以被用于此较低频率的操作时,可以提高效率。
文档编号G06T1/20GK102054265SQ201010535140
公开日2011年5月11日 申请日期2010年11月3日 优先权日2009年11月4日
发明者R·P·萨特, T·G·阿克宁-穆勒 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1