负载均衡的制作方法

文档序号:6656814阅读:168来源:国知局
专利名称:负载均衡的制作方法
技术领域
本发明涉及在例如(举例而言)协处理器之间进行负载均衡。
背景技术
计算机图形是一广泛的领域,在过去的大约二十年中在该领域中进行了大量的硬件及软件开发。例如,参见“计算机图形原理及实践(Computer GraphicsPrinciplesand Practice)”(Foley、Van Dam、Feiner及Hughes著,1997年由Addison-Wesley出版)。通常,在计算机平台或其他类似计算装置中,采用专用图形硬件来渲染图形图像,例如(举例而言)与计算机游戏结合使用的那些图形图像。对于此类系统而言,专用图形硬件可在有可能影响图形质量的多个方面(包括硬件灵活性及/或其渲染功能)受到限制。
在图形中,通常,标准计算平台将包括中央处理器(CPU)及图形处理单元(GPU)。随着GPU不断变得更加复杂及能够承担更大量的计算任务,处理器之间的负载均衡处理技术就变得更为人们所需要。

发明内容
本文阐述用于对例如(举例而言)用于图形及/或视频处理的两个处理器进行负载均衡的方法、设备、装置及/或系统的实施例。根据一实施例,一种用于在可编程GPU与CPU之间进行负载均衡的方法包括下列内容。由各自能够至少部分地由所述GPU及所述CPU处理的单独工作单元形成双端队列。所述GPU及所述CPU通过使所述GPU及CPU从所述队列的各个端选择工作单元来处理工作单元。


在说明书的结束部分中具体指出并明确请求本发明的标的物。然而,可通过结合附图阅读下文详细说明来最好地了解所请求的关于组织与操作方法两方面的标的物连同其目的、特征及优点,在图式中图1为显示典型图形管线的一实施例的方块图;图2为一包括例如可编程GPU等专用图形硬件的计算机平台的一实施例的示意图;图3为一显示一种负载均衡方法的一实施例的流程图;图4为一显示典型可编程顶点着色器的一实施例的方块图;图5为一显示典型可编程片段处理级的一实施例的方块图;图6为一显示带有限制图形对象的框的二维网格的一实施例的示意图;图7为一流程图的一部分,其显示一种负载均衡方法的另一实施例的一部分;图8为一显示计算机平台的另一实施例的示意图。
具体实施例方式
在下文详细说明中,陈述大量具体细节,以便实现对所请求标的物的透彻了解。然而,所属领域的技术人员将了解,在没有这些具体细节的情况下也可实施所请求的标的物。在其他情况下,未对众所周知的方法、程序、组件及/或电路加以详细阐述以免淡化所请求的标的物。
计算机图形是一广泛的领域,在过去的大约二十年中在该领域中进行了大量的硬件及软件开发。例如,参见“计算机图形原理及实践(Computer GraphicsPrinciplesand Practice)”(Foley、Van Dam、Feiner及Hughes著,1997年由Addison-Wesley出版)。通常,在计算机平台或其他类似计算装置中,采用专用图形硬件来渲染图形图像,例如(举例而言)与计算机游戏结合使用的那些图形图像。对于此类系统而言,专用图形硬件可在有可能影响图形质量的多个方面(包括硬件灵活性及/或其渲染功能)受到限制。但是,随着技术及市场的不断发展,不断需要更高质量的图形。因此,用于扩展现有硬件在可产生高质量图形方面的能力的信号处理技术及/或其他技术仍属于要研究的领域。
如前面所述,专用图形硬件可在其功能(例如其图形渲染功能及/或其灵活性功能)方面受到限制。此限制可至少部分地例如归因于提供改良能力的硬件的成本相对于对此种硬件的需求。但是,尽管如此,近年来,在目前技术水平计算机平台及/或类似计算系统上所提供的专用图形硬件的功能已得到改良且仍在不断改良。例如,固定功能管线已被可编程顶点及片段处理级所代替。就在6年之前,大多数消费者三维(3D)图形操作还基本是在CPU上进行计算,且图形卡还主要以帧缓冲器的形式来显示结果。然而,专用图形硬件已发展成包括上千万个晶体管的图形管线。目前,可编程图形处理单元(GPU)能够不只是简单地进行前馈三角形渲染。如在下文中所更详细阐述,目前技术水平的图形芯片(例如(举例而言)NVIDIA GeForce 4及ATI Radon 9000)以可编程的级代替固定功能顶点及片段处理级。如在下文中所将更详细阐述,这些可编程的顶点及片段处理级具有执行程序的功能,从而能够对着色及/或纹理计算进行控制。
与CPU架构相似,GPU可分解成若干管线级。但是,CPU包含用于执行任意程序的通用设计,而GPU却构造成处理原始几何数据并最终以像素形式将该信息呈现在显示器(例如(举例而言)监视器)上。图1为一典型图形管线的概念的方块图。
通常,对于所要绘制的目标,此种管线执行下列操作1.在CPU上执行的应用程序可指令GPU在哪里查找位于存储器一部分内的顶点数据,例如105。
2.顶点级110可将所述顶点数据从模型空间变换至剪辑空间并可实施照明计算等等。
3.顶点级110可根据数学公式来产生纹理座标。
4.可将图元(例如三角形、点、四角形等等)光栅化成片段。
5.可通过由片段处理级180处理片段来确定片段颜色,片段处理级180也可特别是实施纹理存储器查找。
6.可实施某些测试来判定是否应丢弃片段。
7.可至少部分地根据片段颜色及通常涉及片段或像素的α通道的其他运算来计算像素颜色。
8.可将像素信息提供至帧缓冲器160。
9.可例如由显示器170来显示像素。
如图1的方块115所示,在图形管线的几何处理阶段的初期进行更高阶表面镶嵌。更高阶表面使用数学公式及/或函数来呈现三维(3D)表面。其实例包括非均匀有理B样条(NURB)、贝齐尔(Bezier)曲线、N补片(N-patches)及更多其他公式及/或函数。对所传送的数据进行镶嵌以产生更复杂的模型。因此,GPU动态地产生或将来自应用程序的原始模型数据镶嵌成更加详细及复杂的几何结构。
如方块120所示及前面所提到,图形管线通常将实施变换及照明(T&L)运算及类似运算。方块120描绘一固定功能单元;然而,这些运算正越来越多地被也称作顶点着色器的可编程顶点单元(例如130)代替。顶点着色器130对顶点流应用顶点程序。因此,所述程序处理顶点级的数据。大多数运算均在一个循环中实施,虽然不必应用此种限制。典型的顶点程序处于一百个或更多个指令的数量级。图4为一显示典型可编程顶点着色器的一实施例的方块图。如图所示,顶点属性410应用于顶点程序420。所述属性存储于寄存器中且所述程序包括用于处理寄存器中的数据的一系列指令。所得到的处理数据-其在图4中显示为顶点输出数据430-也存储在寄存器中。通常,当所述程序执行时,其将获得由图4中的450所示的程序参数,且其将利用由图4中的460所示的临时寄存器。
如同顶点级一样,片段处理级也已经历了从例如方块140所示的固定功能单元到例如方块150所示的可编程单元的进化。因此,先前使用固定功能状态机或类似硬件实施纹理化、过滤及混合。如同顶点着色器一样,像素着色器(例如150,也称作可编程片段处理级)允许对编程控制进行定制。因此,程序师能够逐一像素地计算颜色等等,以产生所期望的定制视觉效果。图5为一显示典型像素着色器或片段处理级的实施例的方块图。与其在顶点级中的对应物相似,实施例500包括片段输入数据510、片段程序520及片段输出数据530。同样地,该级包括纹理存储器540及临时寄存器550。在此上下文中,纹理存储器是指作为片段处理级的一部分所包含的GPU的存储器部分,其通常为高速缓冲存储器,在执行顶点处理及类似处理后,可在其中加载特定像素值以供进行额外处理,例如过滤、着色、及/或类似处理,例如(举例而言)通常与形成所要渲染的目标的可视表面的外观相关联的处理。
图形管线的这些可编程性趋势已改变了图形处理单元(GPU)及其潜在应用。因此,此种处理器或处理单元的一潜在应用是实现高质量图形处理,例如针对各种各样的不同情形(例如(举例而言)针对形成动画等)可能需要的处理。更具体而言,近年来,图形硬件的性能已比中央处理器(CPU)的性能得到更快提高。如前面所示,CPU设计通常旨在对顺序代码进行高性能处理。因此,使用增多的晶体管来改良处理性能正变得越发具有挑战性。相比之下,如刚才所示,可编程图形硬件则设计用于并行地处理顶点及片段级代码。因此,GPU能够比CPU更有效地使用增多的晶体管来形成处理性能的改良。因此,随着半导体制造技术的不断进步,GPU会提供维持处理性能改良的潜力。
当然,可编程性是相对新的创新。此外,在“可编程性”的意义内包含一系列不同的功能。为了阐述此具体实施例,将着重于GPU的片段处理级而不是顶点级,但当然,所请求的标的物在范围上不仅限于这一方面。因此,在一个实施例中,可编程GPU可包括具有简单指令集的片段处理级。片段程序数据类型可主要包括定点输入纹理。输出帧缓冲器颜色可通常每一颜色分量包括八位。同样地,一个级通常可具有有限数量的数据输入元件及数据输出元件、有限数量的现用纹理及有限数量的相关纹理。此外,单个程序的寄存器数量及指令数量可相对较短。硬件可能只允许仅在程序内的某些点处具有用于计算纹理地址的某些指令。硬件可能在给定的一遍中只允许将单个颜色值写入至帧缓冲器,且程序可不环回或执行条件转移指令。在此上下文中,具有此种功能水平或类似功能水平的GPU的实施例应称作定点可编程GPU。
与此相反,更先进的专用图形处理器或专用图形硬件可包括更先进的特征。片段处理级可使用例如浮点指令及/或寄存器来编程。同样地,可具有浮点纹理帧缓冲器格式。片段程序可由一组能够执行各种操纵的汇编语言级指令形成。此类程序可相对较长,例如处于数百个指令或以上的数量级。可允许在片段程序内进行纹理查找,而在一些实施例中可不存在对程序内纹理提取数量或纹理相关级数量的限制。片段程序可具有直接写入至纹理存储器及/或模版缓冲器的功能,且可具有将浮点矢量写入至帧缓冲器(例如RGBA)的功能。在此上下文中,具有此种功能水平或类似功能水平的GPU的实施例可称作浮点可编程GPU。
同样地,专用图形硬件的第三实施例或示例在此处应称作可编程流式处理器。可编程流式处理器包括处理器,其中将数据流应用至所述处理器且所述处理器对所述数据流的各元素执行类似的计算或处理。因此,所述系统可通过下述方式来执行程序或核心将所述程序或核心应用至所述流的元素并通过在输出流中提供处理结果。同样地,在此上下文中,主要着重于处理片段流的可编程流式处理器包括可编程流式片段处理器。在此种处理器中,可提供完整的指令集及更大的数据类型。然而,应注意,甚至在流式处理器中,在没有源自于专用图形硬件外部(例如来自CPU)的干预的情况下,通常也不能执行环回及条件转移。同样,在此上下文中,具有此功能水平或类似水平的GPU的实施例包括可编程流式处理器。
图2为一显示实施例200的示意图,实施例200包括可采用专用图形硬件(例如(举例而言)GPU 210)的系统。应注意,为了易于阐述及图解说明,图2为一简化图。因此,已省略了例如存储器控制器/仲裁器、用于执行标准接口协议(例如AGP及/或PCI)的接口单元、显示装置、输入装置等方面,以免不必要地淡化本说明。
在此具体实施例中,GPU 210可包括可编程GPU的任一示例,例如(举例而言)前面所述的三个实施例中的一个实施例,但为了便于进行本说明,假定GPU 210包括可编程浮点GPU。同样地,当然应了解,所请求的标的物在范围上并不仅限于前面所述的这三种类型的GPU。这三种类型仅供作为对典型可编程GPU的举例说明。当前已知或以后要开发的所有其他类型的可编程GPU均包括在所请求的标的物范围内。例如,虽然图2显示离散图形硬件,但另一选择为,图形硬件也可与CPU一起集成于IC上且仍属于所请求的标的物范围内。同样地,一系统实施例-例如(举例而言)图2中所示的实施例-的应用包括许多可能的应用,例如在下列设备内或上的应用桌上型计算平台、移动计算平台、手持式装置、工作站、游戏控制台、机顶盒、母板、图形卡及其他设备。
同样地,对于此简化的实施例而言,系统200包括CPU 230及GPU 210。在此具体实施例中,存储器240包括随机存取存储器或RAM,但所请求的标的物在范围上并不仅限于这一方面。可采用当前已知或要开发的各种存储器类型中的任何一种。应注意,在此具体实施例中,存储器240包括帧缓冲器250,但同样地,所请求的标的物在范围上并不仅限于这一方面。例如,图8显示一实施例,其中相同的参考编号表示对应的方面。然而,在实施例600中,帧缓冲器650并不驻存于存储器640内。如在图2中进一步显示,在此具体实施例中,各种系统元件之间的通信是通过总线220来进行的。
值得重复的是,图2仅供用于举例说明目的,而决非打算限制所请求的标的物的范围。包括GPU及CPU的系统可具有大量架构,且所请求的标的物打算涵盖所有这些架构。虽然所请求的标的物在范围上并不仅限于刚才所述的图2所示实施例,但应注意,此具体实施例包括采用两个协处理器(CPU 230及GPU 210)的系统。因此,在至少此方面中,此实施例代表目前技术水平的计算平台。因此,如前面所述,需要具有采用此种系统来实施高质量图形处理的功能。然而,同样应注意,所请求的标的物并不仅限于高质量图形。例如,将显而易见,所请求的标的物的实施例可证明在计算机游戏及/或其他更低端应用中较佳。
在图形中,一种典型且频繁的计算称作“光线跟踪”。在图形中,以多种方式采用光线跟踪,例如用于模拟照明效果(包括阴影、反射、及/或折射)以及其他用途。通常,光线跟踪是指一种过程,其通过跟踪从观察者眼睛到景物中的目标的假想光线来确定存在于特定图形图像中的表面的可见性。例如,参见“计算机图形(ComputerGraphics)”,第15.10节,第701-718页。
光线跟踪的困难之一在于其通常是所要实施的最耗时的图形操作之一。此外,光线跟踪通常在CPU上而不是在GPU上实施,这至少部分地归因于所涉及的计算复杂度。然而,最近,已开始将可编程GPU用于计算过程的工作。例如,在Timothy Purcell等人的“对可编程图形硬件进行光线跟踪(Ray Tracing on Programmable GraphicsHardware)”(ACM图形学报(ACM Transactions On Graphics),2002年)中,探讨了存储及/或存取数据以在GPU上进行通用计算的有趣方法。然而,Purcell等人所提出的方法的一个问题在于,在实施计算的同时存储整个景物需要具有大存储量功能。在Nathan Carr等人的另一最新论文“光线引擎(The Ray Engine)”(图形硬件(GraphicsHardware),2002年)中,提出一种其中采用GPU来计算光线-三角形交叉的方法。此方法的困难在于每次一个三角形地在GPU上计算光线-三角形交叉。因此,此种方法可能耗时且可能未充分利用通过可编程GPU可得到的并行处理功能。因此,需要具有使用可编程GPU来对图形处理实施光线跟踪的其他技术。
虽然光线跟踪是耗时的操作,但至少对于某些计算而言,可能花费在确定图像中不需要利用光线跟踪的部分上的时间多于花费在实际实施及计算光线-图元交叉上的时间。因此,如在下文中将变得更加显而易见,可通过下述方式来获得处理优点应用可编程GPU来通过确定图像中不需要进行光线跟踪的那些部分而减少所要完成或实施的光线-图元交叉计算的数量。
例如,图3为一种用于使用所提出的可编程GPU来进行光线跟踪的方法的一实施例的流程图。虽然此具体实施例具有各种各样的实施细节,但在高层次上,采用可编程GPU来计算多个光线(此处称作一批)与一经构造以在特定图像中对目标进行限界的表面层次之间的交叉。此将有助于消除图像中要实施光线跟踪的部分,因为,如果所述表面不交叉,则由所述表面限界的图元也将不交叉。
此具体实施例的另一方面是采用GPU的并行处理功能。具体而言,使多个光线与一限界表面层次交叉意味着可有可能在GPU上有效地实施重复计算。下文说明着重于由GPU本身所进行的处理及GPU如何与CPU交互作用以实施负载均衡及计算光线-图元交叉。因此,此具体实施例的再一方面涉及在GPU与CPU之间进行负载均衡。
现在参见图3,方块310描绘针对此具体实施例将图像细分成工作单元以帮助实施光线跟踪。如前面所示,采用可编程GPU来计算多个光线与分级限界一组图形目标的一组表面之间的交叉。然而,在开始时,使用环绕目标的非重叠表面来划分图像。因此,在此实施例中,至少部分地根据限界目标(不管目标形状如何)用一表面来划分图像,以便在空间上将各目标分开。在此具体实施例中,目标包括一四边形图元网格,但是,当然,所请求的标的物在范围上并不仅限于此方面。在此上下文中,图元可包括任一多边形。
应注意,限界表面的形状可呈任一形式。例如,限界表面的形状可包括球形、正方形、矩形、凸状表面或其他类型的表面。对于此具体实施例而言,限界表面包括框,在此处称作限界框。采用框的一个优点在于实施起来快且容易。在此上下文中,限界框也应称作体元或体积。至少部分地由于此处使用限界框,如(举例而言)在图6中所示及下文中所述,对图像的划分是大致上基于网格。如所提出,网格方法具有包括简单、易于实施及计算速度在内的优点。然而,此方法的缺点在于,作为一种用于确定图元的光线交叉的方法,其相对粗糙。此处,一种解决此缺点的方式是如下文所将更详细阐述,采用一限界框层次来提供更高的精度。
如前面所提到,图6为一提供网格方法的简单二维表示形式的示意图,但此处的网格中的框具有不同的尺寸。网格610具有位于行1、列1、行2、列2、及行3列3处的框中的目标。在此具体实施例中,所述目标分别标记为620、630及640。当然,所请求的标的物在范围上并不仅限于网格方法或此例示性实例。
在此具体实施例中,如图6中所示,由像素表示光线。因此,在可编程GPU上,可渲染一像素四边形,例如660,其实际上表示如图6中用图形方式所标记的指向网格610的成批光线,例如650。光线650及像素660由一侧视图表示在图6中。图6中未明确显示,沿着在垂直指向页平面的方向上所显示的像素对齐的是毗邻的其他像素串,其同样具有对应的光线。虽然在图6中未按比例精确描绘,但一目了然,限界框因环绕不同的图形目标而占据不同的部分或体积。当然,图6也仅是为便于进行图解说明而提供的对网格的过分简单化的二维表示形式。
由于在空间上划分图像,因此可至少部分地根据与周边交叉的光线的数量(此处称作一批光线)来对体元进行分等。此处应注意,对于此种特定技术的此特定应用而言,光线大致相干。因此,至少部分地根据与其周边交叉的光线的数量,限界框或体元在此上下文中表示要由处理器实施的工作量,此处称作工作项目或工作单元。要对一特定工作单元或工作项目实施的工作量至少部分地相关于与所述特定限界框的周边交叉的光线的数量。另外,限界框内是一系列附加限界框或一层次。因此,例如图6中显示于行1、列1处的特定限界框将进一步细分成连续的限界框层次。然而,在所述过程的此阶段中,如图3中的方块320所示,在此处使用批大小来形成“双边”队列。具体而言,为了更充分地利用GPU的并行处理功能,需要对那些在一批中具有相对大光线的数量的体元应用GPU。同样地,还需要使用CPU来处理那些具有相对小的批的体元。
如图3所示的方块330处所描绘,CPU及GPU自所述队列的相应端开始处理各单独的工作单元。如下文中所将更详细地阐述,对工作单元进行公式化的方式使工作单元能够至少部分地由GPU或CPU来处理。因此,这时,需要着重于由GPU进行的处理并阐述GPU与CPU之间的负载均衡。在此上下文中,负载均衡是指一种隐式或显式的机制,其允许特定处理器在处理器之间分配处理负载,以便比在通过偶然事件或通过随机化分配来分配处理负载的情况下完成更多的处理。
一旦GPU开始处理一工作单元,例如(举例而言)标记为网格610的行1、列1的工作单元,其便能够使用一种在一个循环中处理十个光线及八个限界框的技术来处理该体元,但当然,所请求的标的物在范围上并不仅限于此方面。但是,在一个GPU循环中要处理的光线及限界框的数量可因多种因素而异。还应注意,在此实施例中,应用相同的十个光线。此外,对于此具体实施例而言,八个框包括在层次上连续的框,但当然,所请求的标的物在范围上并不仅限于采用在层次上连续的框。因此,如下文所将更详细地阐述,如果此处一特定光线与所有八个限界框交叉,则此会提供某些将用于进一步图形处理的信息。
用来在一个循环中处理十个光线及八个限界框的机制涉及利用包括如前面所述的可编程像素着色器级的GPU架构。因此,例如,用于在GPU上进行处理的光线的数量可至少部分地因应用及特定情形而异。其也可至少部分地因例如(举例而言)特定GPU、其特定架构、被处理的特定图像等其他因素而异。同样地,类似的变化形式也可适用于在一个循环中所要处理的限界框的数量。
如前面所解释,像素着色器执行所谓“片段程序”。因此,在GPU的片段级(例如(举例而言)片段级180)中,为像素着色器(例如(举例而言)150)提供呈所要执行的指令形式的片段程序。同样地,指定需要对其执行片段程序的特定像素。当执行此种程序时,GPU通常产生或输出值至特定像素的特定位置。因此,在此实施例中,为了实施并行计算(例如在一循环中计算八个限界框),将特定光线/像素计算的结果写入至特定位置,在此具体实施例中,写入至模版缓冲器。更具体而言,对于由像素着色器处理的像素而言,通常GPU计算其颜色(例如红、缘、蓝)、α(例如覆盖范围)、深度、及特定片段程序可特有的其他附加值。对于此具体实施例而言,模版缓冲器包括用于存储那些其他附加值的字节或八个位。因此,对于此具体实施例而言,在一个循环中处理八个各自利用所述模版字节的一位的限界框。同样,所请求的标的物在范围上并不仅限于此特定方面。例如,可改为以深度形式、以颜色形式、或以GPU具有其特定缓冲位置的某一其他属性形式来存储计算结果。此处,如所显示,模版缓冲器中的每一位均表示特定光线与特定限界框之间的交叉的计算结果。因此,采用模版缓冲器的一个优点在于从输入/输出观点来看,因屏蔽模版缓冲器的其他位而相对容易读出特定的计算结果。
如前面所述,在此特定实施例中,在一个循环中处理十个光线。在此特定实施例中,此处理是以2×5像素阵列的形式来进行的,但是,所请求的标的物在范围上并不仅限于此方面。通常,为有效地利用GPU,需要使用维数为2的倍数的阵列,。当然,所请求的标的物在范围上并不仅限于采用2×N阵列,其中N为任一正整数。因此,在此特定实施例中,为了获得并行处理的效率,对于此特定实施例而言,在一个循环中处理十个光线。
在此特定实施例中,限界框表示为X的范围、Y的范围及Z的范围。因此,可写入片段程序来为十个像素确定与那些像素相关联的光线是否与此一限界框交叉。如果出现交叉,则可在模版缓冲器中为所述特定像素设定一位。同样地,如前面所述,通过使用片段程序,在一个循环中计算八个限界框能利用GPU的硬件架构。
采用GPU时的一个问题是确定处理何时停止。为了对此进行确定,CPU询问GPU。然而,此种询问在一定程度上牵涉到效率。询问GPU会使GPU停止其处理,以便其能够向CPU提供数据。因此,可能不希望太频繁地询问,因为此可导致处理效率低下。然而,同样地希望不要太不频繁地询问,因为GPU一旦停止,其就可能处于空闲状态,从而意味着浪费处理时间。
对于此特定实施例而言,如前面所述,双边队列提供一种均衡这些考虑因素的机制,如在下文中所将更详细地阐述。在此上下文内,如所提到,CPU询问GPU机制的频率可影响GPU的处理效率。因此,根据所述特定实施方案或实施例,可能需要改变此频率。
如前面所述,GPU及CPU首先如图3的方块330所示开始单独的工作单元。因此,对于此实施例而言,CPU及GPU计算多个光线与一组用于限制一个或多个图形目标的表面之间的交叉。然而,应注意,在此上下文中,图形目标包括一组图元。对于此特定实施例而言,虽然所请求的标的物在范围上并不仅限于此方面,且如图3的方块340所进一步显示,CPU是否及何时完成其工作单元是判决点。在此上下文中,完成工作单元是指停止处理所述特定工作单元,且如果有的话,则开始处理另一工作单元。如果CPU尚未停止或完成处理,则CPU与GPU二者继续进行处理,如在方块370中所示。然而,一旦CPU已结束处理,其便如图3中的方块350所描绘询问GPU关于所述GPU是否已停止处理。如果GPU具有对其所开始的最新工作单元的附加处理,则GPU继续进行。如果附加工作单元仍在队列中,则已完成处理的CPU从所述队列的端部拉取另一工作单元。然后,如前所述,CPU继续进行,直至其完成其工作单元为止,且随后其再次询问GPU。如果这时GPU已停止处理,则GPU将信息提供回至CPU,例如如果已发生“命中”或交叉。如果尚未发生命中,则此指示所述光线均未与GPU所处理的体元或工作单元的限界框交叉。因此,因无光线与图元交叉,此工作单元完成。如果存在其他工作单元,则GPU及CPU接受其他工作单元且此种循环继续进行。此由包括方块385、335、365及355的循环在图3中说明。当然,应注意,对于此特定实施例而言,如例如方块386所示,一旦不再存在更多的工作单元且一旦CPU及GPU不存在对其各自工作单元的附加处理,则所述过程结束。
然而,如果替代地GPU已揭示命中,则此意味着一些光线与所述特定体元的限界框交叉。GPU通过将关于发生此种交叉处的光线的数据提供回至CPU,来帮助CPU确定仍保持“现用”于进一步处理的光线的数量。此信息使CPU能够将另一工作单元安排于前面所述的双边队列中。CPU进行的此种安排确定对此特定体元的附加处理将由GPU还是由CPU来实施。
然而,在某一时刻,所述层次中不再存在其他限界框。一旦出现此种情况,假定GPU已揭示“命中”,则此指示实施计算来确定所述一个或多个光线是否与由所述限界框限界的图元交叉。在此特定实施例中,此后一种计算是由CPU而不是GPU实施的。因此,CPU至少部分地根据GPU所实施的计算来计算一个或多个光线与一个或多个图形目标之间的交叉。CPU通过确定所述一个或多个光线是否与任何图元交叉来完成针对特定工作单元的此种处理。此由方块375及371在图3中说明。如图3中所描绘,在方块380处,一旦CPU完成对工作单元的光线-图元交叉计算,CPU及GPU二者便均选择另一工作单元(如果有)。如前所述,此由包括方块335、365及355的循环描绘。
光线有可能与两个或三个目标交叉。为了解决此问题,使用z缓冲器来对光线与图元之间的交叉进行高速缓存及分类,以确定哪个图元为第一或最接近的交叉者。
当然,应注意,所请求的标的物在范围上并不仅限于此特定实施例,例如并不仅限于CPU询问GPU的特定时间。作为一个实例,CPU可以大致预定的时间间隔询问GPU。或者,在一种自适应方法中,CPU可至少部分地根据GPU要对GPU所开始的最新工作单元进行的处理量来进行询问。如所提到,CPU询问GPU的方式可影响GPU的处理效率。因此,打算将CPU可用以询问GPU的任何及所有方式均包括在所请求的标的物的范围内。应清楚地看出,希望使GPU及CPU处理短暂重合或重叠。通常,这两个处理器并行进行处理的时间量越大,处理量就越大。因此,希望CPU对GPU进行的询问以一种使这些处理器的短暂处理重叠尽可能广的方式来进行。当然,如前面所示,有效达到此目的方式可随特定实施方式而变化。如同样在前面所提到,在此具体实施例中,GPU因此用来通过帮助CPU确定那些在其中不希望试图计算光线-图元交叉的体元来加快处理。
为了显示GPU在任一时刻的询问,图7为一流程图的一部分,其显示图3所示方法实施例的一替代形式。可将图7直接与图3相比较。具体而言,图7适合处于图3所示的方块330与方块375之间并替换方块340至360。因此,图7中所描绘的流程图与图3所示的流程图;然而,如上文所提到,差别在于GPU未必一定询问CPU何时完成一工作单元。此例如由方块740显示。具体而言,此判决块表示CPU对GPU进行的询问。然而,无论CPU是否询问GPU,一分别位于745或765处的判决块均判定CPU是否已完成对一工作单元的处理。如果未完成,则如分别由方块780及791所示,GPU及CPU继续进行处理。但如果相反,CPU已完成其处理,则如分别于方块785及795处所示,作出一关于是否具有其他工作单元的判定。
在此特定实施例中,如上文所提到,当受到询问时,如果处理已停止,则GPU向CPU提供关于限界框是否已与所述特定体元中的一个或多个目标交叉或所述一个或多个光线是否已错过所述特定体元中的一个或多个目标的信息。命中或与限界框交叉意味着需要进行附加处理;但如果未命中或与限界框交叉,则同样地,由框所限界的图元将不交叉。当然,应注意,所需信息不仅仅在于光线已与图元交叉,而且还在于所述交叉出现在何处、哪个是最接近的光线-图元交叉、等等。这就是一旦所述层次中不再有更多限界框便让CPU完成由GPU所开始的过程的原因。实质上,GPU用于确定何时希望让CPU计算一特定胞或体元的光线-图元交叉。然而,采用GPU来不时地“在所述层次中移动”的优点包括GPU可与CPU并行实施计算且GPU可比CPU更有效地实施某些计算。
总之,在此特定实施例中,采用一组分级次的体元或限界框。通过限界框层次来迭代各批大致相干的光线。在体元完成其处理后,将所述一批光线向前移动至下一组体元。在此过程中,采用体元中所包含的光线数量来通过双边队列以隐式方式确定为实现负载均衡目的而较佳由GPU还是由CPU实施计算。如前面所示,希望在GPU上处理大批光线并在CPU上处理小批光线,以利用这些相应处理器的特定功能。
当然,至少部分地根据前述内容,现在应了解,可形成能够形成所期望的图形处理的软件。当然还应了解,虽然本文刚才阐述了特定实施例,但所请求的标的物在范围上并不仅限于特定实施例或实施方式。例如,一实施例可呈硬件形式,例如(举例而言)经构建以在前面所述的装置或装置组合上运行,而另一实施例可呈软件形式。同样地,一实施例可例如以固件或以硬件、软件、及/或固件的任一组合形式来构建。同样地,虽然所请求的标的物在范围上并不仅限于此方面,但一实施例可包括一个或多个物件,例如一个或多个存储媒体。此存储媒体(例如(举例而言)一个或多个CD-ROM及/磁盘)上可存储有指令,所述指令在由系统(例如(举例而言)计算机系统、计算平台、GPU、CPU、另一装置或系统、或其组合)执行时,可产生一种根据所正执行的所请求标的物的方法的一实施例,例如(举例而言)前面所述的实施例之一。作为一潜在的实例,计算平台可包括一个或多个处理单元或处理器、一个或多个输入/输出装置(例如显示器)、键盘及/或鼠标、及/或一个或多个存储器(例如静态随机存取存储器、动态随机存取存储器、闪速存储器、及/硬盘驱动器),但同样地,所请求的标的物在范围上并不仅限于此实例。
在前述说明中,已对所请求的标的物的各个方面进行了阐述。为便于进行解释,列出了具体数字、系统及/或配置以实现对所请求的标的物的透彻了解。然而,所属领域的技术人员通过此揭示内容应易知,在没有所述具体细节的情况下也可实施所请求的标的物。在其他情况下,省略及/或简化了众所周知的特征以免淡化所请求的标的物。虽然本文中已显示及/或阐述了某些特征,但所属领域的技术人员现在将会联想到诸多修改、替换、改动及/或等效形式。因此,应了解,随附权利要求书打算涵盖属于所请求标的物的真正精神范围内的所有此类修改及/或改动。
权利要求
1.一种用于在一可编程GPU与一CPU之间进行负载均衡的方法,其包括形成各自能够至少部分地由所述GPU与所述CPU处理的单独工作单元的一双端队列;及通过使所述GPU及所述CPU从所述队列的各自端选择工作单元来处理所述工作单元。
2.如权利要求1所述的方法,其中处理包括所述CPU询问所述GPU。
3.如权利要求2所述的方法,其中所述CPU以大致预定的时间间隔询问所述GPU。
4.如权利要求2所述的方法,其中所述CPU在一至少部分地基于对所述GPU所开始的最新工作单元的处理量的时间处询问所述GPU。
5.如权利要求2所述的方法,其中所述CPU在不同的时间处询问所述GPU。
6.如权利要求1所述的方法,其中至少部分地根据所述GPU及所述CPU中的一者有效地处理各自的工作单元的能力来对所述双端队列进行排序。
7.如权利要求6所述的方法,其中至少部分地根据所述特定各自的工作单元的一批光线的尺寸来测定所述GPU及所述CPU中的一者处理所述各自工作单元的能力。
8.如权利要求2所述的方法,其中当所述CPU完成一工作单元后,所述CPU询问所述GPU。
9.如权利要求8所述的方法,其中在所述询问的结果指示所述GPU尚未停止处理所述GPU所开始的最新工作单元的情况下,则所述CPU开始另一工作单元。
10.如权利要求8所述的方法,其中在所述询问的结果指示所述GPU已停止处理所述GPU所开始的最新工作单元的情况下,则所述GPU及CPU分别开始另一工作单元。
11.如权利要求8所述的方法,其中在所述询问结果指示所述GPU已完成所述GPU所开始的最新工作单元的情况下,则所述GPU开始另一工作单元。
12.如权利要求2所述的方法,其中对于所述GPU所处理的所述工作单元中的至少一些单元,处理是由所述CPU完成的。
13.如权利要求2所述的方法,其中对于所述GPU所处理的所述工作单元中的至少一些单元,所述CPU计算光线图元交叉。
14.如权利要求1所述的方法,其中由所述GPU及所述CPU实施的所述处理至少部分地短暂重合。
15.一种物件,其包括上面存储有指令的一存储媒体,所述指令在被执行时促成实施一种在一可编程GPU与一CPU之间进行负载均衡的如下方法形成各自能够至少部分地由所述GPU及所述CPU处理的单独工作单元的一双端队列;及通过使所述GPU及所述CPU从所述队列的各自端选择工作单元来处理所述工作单元。
16.如权利要求15所述的物件,其中所述指令在被执行时进一步促成所述CPU在所述处理期间询问所述GPU。
17.如权利要求16所述的物件,其中所述指令在被执行时进一步促成所述CPU以大致预定的时间间隔询问所述GPU。
18.如权利要求16所述的物件,其中所述指令在被执行时进一步促成所述CPU在一至少部分地基于对所述GPU所开始的最新工作单元的处理量的时间处询问所述GPU。
19.如权利要求16所述的物件,其中所述指令在被执行时进一步促成所述CPU在不同的时间处询问所述GPU。
20.如权利要求15所述的物件,其中所述指令在被执行时进一步促成至少部分地根据所述GPU及所述CPU中的一者有效地处理所述各自工作单元的能力对所述双端队列进行排序。
21.如权利要求20所述的物件,其中所述指令在被执行时进一步促成至少部分地根据所述特定各自工作单元的一批光线的尺寸来测定所述GPU及所述CPU中的一者处理所述各自工作单元的能力。
22.如权利要求16所述的物件,其中所述指令在被执行时进一步促成当所述CPU完成一工作单元后,所述CPU询问所述GPU。
23.如权利要求22所述的物件,其中所述指令在被执行时进一步促成在所述询问的结果指示所述GPU尚未停止处理所述GPU所开始的最新工作单元的情况下,则所述CPU开始另一工作单元。
24.如权利要求22所述的物件,其中所述指令在被执行时进一步促成在所述询问的结果指示所述GPU已停止处理所述GPU所开始的最新工作单元的情况下,则所述GPU及CPU分别开始另一工作单元。
25.如权利要求22所述的物件,其中所述指令在被执行时进一步促成在所述询问的结果指示所述GPU已完成所述GPU所开始的最新工作单元的情况下,则所述GPU开始另一工作单元。
26.如权利要求16所述的物件,其中所述指令在被执行时进一步促成对于所述GPU所处理的所述工作单元中的至少一些单元,处理是由所述CPU完成的。
27.如权利要求16所述的物件,当所述指令被执行时进一步促成对于所述GPU所处理的所述工作单元中的至少一些单元,所述CPU计算光线图元交叉。
28.如权利要求15所述的物件,其中所述指令在被执行时进一步促成所述GPU与所述CPU所实施的所述处理至少部分地短暂重合。
29.一种设备,其包括一CPU及一可编程GPU;所述CPU及GPU适于形成各自能够至少部分地由所述GPU及所述CPU处理的单独工作单元的一双端队列;所述GPU及所述CPU进一步适于从所述队列的各自端选择工作单元。
30.如权利要求29所述的设备,其中所述CPU进一步适于询问所述GPU。
31.如权利要求30所述的设备,其中所述CPU适于以大致预定的时间间隔询问所述GPU。
32.如权利要求30所述的设备,其中所述CPU适于在一至少部分地基于对所述GPU所开始的最新工作单元的处理量的时间处询问所述GPU。
33.如权利要求30所述的设备,其中所述CPU适于在不同的时间处询问所述GPU。
34.如权利要求30所述的设备,其中所述CPU适于在所述CPU完成一工作单元后询问所述GPU。
35.如权利要求34所述的设备,其中所述CPU适于在所述询问的结果指示所述GPU尚未停止处理所述GPU所开始的最新工作单元的情况下开始另一工作单元。
36.如权利要求34所述的设备,其中所述GPU及CPU分别适于在所述询问的结果指示所述GPU已停止处理所述GPU所开始的最新工作单元的情况下开始另一工作单元。
37.如权利要求34所述的设备,其中所述GPU适于在所述询问的结果指示所述GPU已完成所述GPU所开始的最新工作单元的情况下开始另一工作单元。
38.如权利要求30所述的设备,其中所述CPU适于计算所述GPU所处理的所述工作单元中的至少一些单元的光线图元交叉。
39.如权利要求29所述的设备,其中所述可编程GPU被并入下列系统中的至少一者中一桌上型计算机、一移动式计算机、一游戏控制台、一手持式装置、一无线通信装置、一联网装置、一显示系统、一母板、一图形卡及一集成电路芯片。
40.一种设备,其包括一第一处理装置,其耦接至一第二处理装置,所述第二处理装置包括一图形处理装置;所述第一装置及所述第二装置适于形成各自能够至少部分地由所述第一装置及所述第二装置处理的单独工作单元的一双端队列;所述第一及第二装置进一步适于从所述队列的各自端选择工作单元。
41.如权利要求40所述的设备,其中所述第一装置进一步适于询问所述第二装置。
42.如权利要求41所述的设备,其中所述第一装置适于以大致预定的时间间隔询问所述第二装置。
43.如权利要求41所述的设备,其中所述第一装置适于在某一至少部分地基于对所述第二装置所开始的最新工作单元的处理量的时间处询问所述第二装置。
44.如权利要求41所述的设备,其中所述第一装置适于在不同的时间处询问所述第二装置。
45.如权利要求41所述的设备,其中所述第一装置适于在所述第一装置完成一工作单元后询问所述第二装置。
46.如权利要求45所述的设备,其中所述第一装置适于在所述询问的结果指示所述第二装置尚未停止处理所述第二装置所开始的最新工作单元的情况下开始另一工作单元。
47.如权利要求45所述的设备,其中所述第一及第二装置分别适于在所述询问的结果指示所述第二装置已停止处理所述第二装置所开始的最新工作单元的情况下开始另一工作单元。
48.如权利要求45所述的设备,其中所述第二装置适于在所述询问的结果指示所述第二装置已完成所述第二装置所开始的最新工作单元的情况下开始另一工作单元。
49.如权利要求41所述的设备,其中所述第一装置适于计算所述第二装置所处理的所述工作单元中的至少一些单元的光线图元交叉。
50.如权利要求40所述的设备,其中所述第二装置包括一可编程GPU。
51.如权利要求50所述的设备,其中所述可编程GPU被并入下列系统中的至少一者一桌上型计算机、一移动式计算机、一游戏控制台、一手持式装置、一无线通信装置、一联网装置、一显示系统、一母板、一图形卡及一集成电路芯片。
52.一种使用一可编程GPU来减少光线图元交叉计算数量的方法,其包括在所述可编程GPU上计算多个光线与限界至少一个图形目标的一组表面之间的交叉。
53.如权利要求52所述的方法,其中所述至少一个图形目标包括多个图形目标。
54.如权利要求53所述的方法,其中并行实施所述计算。
55.如权利要求54所述的方法,其中由一可编程像素着色器实施所述并行计算。
56.如权利要求55所述的方法,其中所述可编程像素着色器使用其中维数中的一者为二的倍数的一像素阵列来计算所述交叉。
57.如权利要求53所述的方法,其中所述限界表面中的至少一些表面包括凸状表面。
58.如权利要求57所述的方法,其中所述一组限界凸状表面中的至少一些表面包括一限界框。
59.如权利要求53所述的方法,其中所述一组限界表面是分级的。
60.如权利要求53所述的方法,且进一步包括在一CPU上至少部分地根据所述CPU所计算的交叉而计算所述多个光线中的至少一些光线与所述多个图形目标中的至少一些图形目标之间的交叉。
61.如权利要求60所述的方法,且进一步包括在所述GPU计算与所述CPU计算之间进行负载均衡。
62.如权利要求53所述的方法,且进一步包括在所述CPU上计算另外多个光线与另外多个图形目标之间的交叉;及在所述GPU计算与所述CPU计算之间进行负载均衡。
63.如权利要求52所述的方法,其中光线的数量为二的倍数。
64.如权利要求63所述的方法,其中光线的数量为10且限界表面的数量为8。
65.如权利要求52所述的方法,其中所述至少一个图形目标包括一组图元,且其中所述图元各自包括一四边形。
66.一种物件,其包括上面存储有指令的一存储媒体,所述指令在被执行时促成按下述方式实施一种通过使用一可编程GPU减少光线图元交叉计算的数量来进行光线跟踪的方法在所述可编程GPU上计算多个光线与限界至少一个图形目标的一组表面之间的交叉。
67.如权利要求66所述的物件,其中所述至少一个图形目标包括多个图形目标。
68.如权利要求67所述的物件,其中所述指令在被执行时进一步促成并行实施计算。
69.如权利要求68所述的物件,其中所述并行计算由一可编程像素着色器实施。
70.如权利要求69所述的物件,其中所述指令在被执行时进一步促成所述可编程像素着色器使用其中维数中的一者为二的倍数的一像素阵列来计算所述交叉。
71.如权利要求67所述的物件,其中所述指令在被执行时进一步促成所述限界表面中的至少一些表面包括凸状表面。
72.如权利要求71所述的物件,其中所述指令在被执行时进一步促成所述一组限界凸状态表面中的至少一些表面包括一限界框。
73.如权利要求67所述的物件,其中所述指令在被执行时进一步促成所述一组限界表面为分级的。
74.如权利要求67所述的物件,其中所述指令在被执行时进一步促成在一GPU上至少部分地根据所述GPU所计算的交叉来计算所述多个光线中的至少一些光线与所述多个图形目标中的至少一些图形目标之间的交叉。
75.如权利要求74所述的物件,其中所述指令在被执行时进一步促成在所述GPU计算与所述GPU计算之间进行负载均衡。
76.如权利要求67所述的物件,其中所述指令在被执行时进一步促成在所述CPU上计算另外多个光线与另外多个图形目标之间的交叉;及在所述GPU计算与所述CPU计算之间进行负载均衡。
77.如权利要求66所述的物件,其中所述指令在被执行时进一步促成光线的数量为二的倍数。
78.如权利要求77所述的物件,其中所述指令在被执行时进一步促成光线的数量为10且限界表面的数量为8。
79.如权利要求66所述的物件,其中所述至少一个图形目标包括一组图元,且其中所述图元各自包括一四边形。
80.一种设备,其包括一图形管线;所述图形管线适于通过在所述图形管线上计算多个光线与限界至少一个图形目标的一组表面之间的交叉来减少用于光线跟踪的光线图元交叉计算的数量。
81.如权利要求80所述的设备,其中所述图形管线被并入一可编程GPU中。
82.如权利要求81所述的设备,其中所述至少一个图形目标包括多个图形目标。
83.如权利要求82所述的设备,其中所述可编程GPU适于并行实施所述计算。
84.如权利要求83所述的设备,其中所述可编程GPU适于使用一可编程像素着色器来实施所述并行计算。
85.如权利要求84所述的设备,其中所述可编程像素着色器适于使用其中维数中的一者为二的倍数的一像素阵列凭借一片段程序来计算所述交叉。
86.如权利要求82所述的设备,其中所述可编程GPU适于使所述限界表面中的至少一些表面包括凸状表面。
87.如权利要求86所述的设备,其中所述可编程GPU适于使所述一组限界凸状表面中的至少一些表面包括一限界框。
88.如权利要求82所述的设备,其中所述可编程GPU适于使所述一组限界表面为分级的。
89.如权利要求82所述的设备,其进一步包括CPU;其中所述CPU适于至少部分地根据所述GPU所计算的交叉来计算所述多个光线中的至少一些光线与所述多个图形目标中的至少一些图形目标之间的交叉。
90.如权利要求89所述的设备,其中所述处理器适于在GPU计算与CPU计算之间进行负载均衡。
91.如权利要求82所述的设备,且进一步包括一CPU;其中所述CPU适于计算另外多个光线与另外多个图形目标之间的交叉;且其中所述处理器适于在GPU计算与CPU计算之间进行负载均衡。
92.如权利要求81所述的设备,其中所述可编程GPU适于使光线的数量为二的倍数。
93.如权利要求92所述的设备,其中所述可编程GPU适于使光线的数量为10且限界表面的数量为8。
94.如权利要求82所述的设备,其中所述可编程GPU被并入下列系统中的至少一者中一桌上型计算平台、一移动式计算机、一游戏控制台、一手持式装置、一无线通信装置、一联网装置、一显示系统、一母板、一图形卡及一集成电路芯片。
95.一种设备,其包括一第一处理装置,其耦接至一第二处理装置,所述第二处理装置包括一图形处理装置;所述第二图形处理装置进一步适于通过在所述图形处理装置上计算多个光线与限界至少一个图形目标的一组表面之间的交叉来减少用于光线跟踪的光线图元交叉计算的数量。
96.如权利要求95所述的设备,其中所述图形处理装置被并入一可编程GPU中。
97.如权利要求95所述的设备,其中所述至少一个图形目标包括多个图形目标。
98.如权利要求97所述的设备,其中所述图形处理装置适于并行实施所述计算。
99.如权利要求98所述的设备,其中所述图形处理装置适于使用一可编程像素着色器来实施所述并行计算。
100.如权利要求99所述的设备,其中所述可编程像素着色器适于使用其中所述维数中的一者为二的倍数的一像素阵列凭借一片段程序来计算所述交叉。
101.如权利要求97所述的设备,其中所述图形处理装置适于使所述限界表面中的至少一些表面包括凸状表面。
102.如权利要求101所述的设备,其中所述图形处理装置适于使所述一组限界凸状表面中的至少一些表面包括限界框。
103.如权利要求97所述的设备,其中所述图形处理装置适于使所述一组限界表面为分级的。
104.如权利要求97所述的设备,其中所述第一处理装置包括一CPU;其中所述CPU适于至少部分地根据所述图形处理装置所计算的交叉来计算所述多个光线中的至少一些光线与所述多个图形目标中的至少一些图形目标之间的交叉。
105.如权利要求104所述的设备,其中所述图形处理装置包括一可编程GPU,且其中所述处理器适于在GPU计算与CPU计算之间进行负载均衡。
106.如权利要求96所述的设备,其中所述第一处理装置包括一CPU;其中所述CPU适于计算另外多个光线与另外多个图形目标之间的交叉;且其中所述处理器适于在GPU计算与CPU计算之间进行负载均衡。
107.如权利要求96所述的设备,其中所述可编程GPU适于使光线的数量为二的倍数。
108.如权利要求107所述的设备,其中所述可编程GPU适于使光线的数量为10且限界表面的数量为8。
109.如权利要求96所述的设备,其中所述可编程GPU被并入下列系统中的至少一者中一桌上型计算平台、一移动式计算机、一游戏控制台、一手持式装置、一无线通信装置、一联网装置、一显示系统、一母板、一图形卡及一集成电路芯片。
全文摘要
本文阐述用于对两个处理器,例如对用于图形及/或视频处理的两个处理器进行负载均衡的方法、设备、装置及/或系统的实施例。
文档编号G06F15/16GK101091175SQ200580031001
公开日2007年12月19日 申请日期2005年9月16日 优先权日2004年9月16日
发明者丹尼尔·埃利奥特·韦克斯勒, 拉里·I·格里茨, 埃里克·B·恩德尔顿, 卡斯·W·埃弗里特 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1