并行且矢量化的gilbert-johnson-keerthi图形处理的制作方法

文档序号:6340961阅读:229来源:国知局
专利名称:并行且矢量化的gilbert-johnson-keerthi图形处理的制作方法
技术领域
本发明一般地涉及图形处理。
背景技术
图形处理是为了将电子数据显示在诸如计算机监视器或电视之类的显示屏上而 对电子数据所作的处理。Gilbert-Johnson-Keerthi(GJK)算法是由 Elmer G. Gilbert,Daniel W.Johnson、 和S. Sathiya Keerthi在1988年发明的。参见Gilbert,E. G.等人的“用于计算三维空 间中复杂对象之间的距离的快速过程(A Fast Procedure for Computing the Distance Between Complex Objects in Three Dimensional Space) ”,IEEE机器人学及自动化期刊, 1988年4月,第4卷第2期,199-203页。GJK算法确定两个凸集之间的最小距离。凸集本质上是对对象的描绘。GJK算法 使用这两个凸形的Minkowski和。平滑算法改进获得两个凸集A和B的最近的一对点。


图1是对本发明的一个实施例的示意性描绘。图2是对根据一个实施例使用的数据格式的描绘。图3是对两个对象以及向这些对象应用GJK算法的描绘。图4是本发明的一个实施例的流程图;以及图5是一个实施例的系统描绘。
具体实施例方式参照图1,图形处理器核30可包括U管线32和V管线38。U管线32被耦合至 矢量处理单元(VPU) 34和算术逻辑单元(ALU)36。矢量处理单元34被耦合至通用寄存器 (GPR) 42 (例如,16个通用寄存器乘以4个线程)和矢量寄存器(VXX) 40 (例如,32个矢量寄 存器乘以4个线程)。在一些实施例中,硬件寄存器无需大到足以捕捉整个数据结构。V管线38被耦合至算术逻辑单元36和16个通用寄存器42的32个矢量寄存器 40。U管线32和V管线38的输入来自数据高速缓存47和对指令取出及挑选单元44进行 馈给的指令高速缓存45。数据高速缓存47接收来自各种处理单元34和36的输出,并在双向总线上向2级 或即L2高速缓存48提供数据。L2高速缓存48通过环形总线46耦合至主存储器。时钟 (CLX)单元49向数据高速缓存与L2高速缓存之间的总线以及L2高速缓存与环形总线之间 的总线提供时钟信号。图1中所示的处理器核30是单指令多数据(SIMD)处理器。它使用SIMD加载/存 储指令。由于该操作是基于512位或即16个元素的SIMD宽度,所以它在如果数据被矢量 化或对准以使得数据结构的起始地址在作为SIMD宽度的倍数的地址开始的情况下运行最为高效。因此,在上述具有32个矢量寄存器的示例中,SIMD宽度是16个元素或即512位。 由此希望数据结构的地址以4、16、以及最优地以64的倍数开始。有利地,SIMD处理器核30用矢量化或经对准数据来工作。在一些实施例中,该处 理器通过高效地利用SIMD硬件以开发利用数据级并行性来改善性能。因此,“经对准的、 矢量化的”数据是指对于并行SIMD架构而言高效的数据结构,因为它们的起始地址是执行 SIMD处理器的宽度的倍数。在一个实施例中,这些寄存器是512位宽的SIMD寄存器。参照图2,描绘了在SIMD宽度为16个元素的一个实施例中使用的数据结构。当 然,可以利用其他宽度,但可使用类似原理来使数据与SIMD宽度对准。图2中所示的数据存 储结构包含用于支持映射函数、局部坐标系的位置和旋转的初始分开的轴、凸集中的点数、 以及每个点的位置。然而,本发明并不限于被表示为顶点集的凸包的凸形。图2中所示的数据结构试图以经对准的、矢量化的方式来布局必要信息。第一行 中的N是指每一列中的对象A和B中的顶点数目,而X、Y、和Z是三维空间中表示对象A和 B的顶点坐标元组。第2、3、和4行中的Χ1-Χ16、Υ1-Υ16、和Ζ1-Ζ16变量代表分开的轴,它 们构成关于局部坐标系的方向矢量。自第5行往后涉及16个对象的顶点。每个顶点使用 其X、Y和Z坐标值来表示。X、Y和Z元组的数目与对象中顶点的数目相同。在SIMD宽度 为16的情况下,这些数据结构在此实施例中为16个元素宽。参照图3,描绘了记为A和B的两个对象。这些对象包围凸集(未示出),该凸集 可以是定义起来比实为围绕凸集的有效限界框的对象更复杂的结构。在图中指出了对象A 与对象B之间的最小距离。“凸”是指由图3中的对象A和B所描绘的边界以内的物体的实际形状。每个顶点 的由X、Y、和Z坐标构成的点集包围该凸对象。根据一些实施例,GJK算法被适配成对适用于诸如图1中所描绘的多核并行处理 器的经对准的、矢量化的数据进行操作。就这点而言,数据是关于此类处理器的SIMD宽度 来矢量化或对准的。图4中示出了根据一个实施例的用于应用GJK算法的序列。序列139可在软件、 硬件、或固件中实现。在软件实现的实施例中,该序列可由存储在诸如磁、光学、或半导体存 储设备之类的计算机可读介质中的指令实现。这些指令可由合适的处理器、控制器或计算 机执行,包括图1中所示类型的图形处理器核、或包括使用单指令多数据架构并行地对多 个线程进行操作的能力的通用处理器。因此,如在框10处所示,最初,制备经对准的、矢量化的数据。接着,使用迭代的矢 量化GJK算法处理该数据以计算这两个对象A与B之间的最小距离。该矢量化支持映射是 在完全矢量化的GJK实现的上下文中实现的。这些指令使得能够通过被掩操作的帮助来实 现分支避免。在一个实施例中,任何“if-else”语句都能使用被掩操作被表达为线性代码。在一个实施例中,矢量化GJK算法仅包含两个循环。在框12所指示的第一循环支 持映射函数。此循环处理给定集合中所有的点。在框14中指示的第二循环重复该算法直 至算法中的最优点(即,对象之间的最短距离)被标识出来。该算法的伪代码使用对象A和B的A和B集合的Minkowski和。因此,这两个对象 的和得到它们的组合。即,A+B = {a+b 对于A中的a,B中的b}。A和B集合的Minkowski 差是新集合A-B= {a-b 对于A中的a,B中的b} =A+(_B)。CH(S)标示S个顶点的凸包。
该算法的输入是集合A和B的Minkowski差的凸包,即M。首先,从M中选取任意 的单形体Q。然后,计算Q顶点的凸包中离原点最近的点P。若P就是该原点,则退出。在 这样的情形中,返回零。否则,Q被约化至Q的使得P落在Q'顶点的凸包中的最小子集Q'。然后V等于 对沿给定的-P方向上最远的顶点的支持映射计算(Sc),该最远顶点就是方向-P上的支持 点。如果V在方向-P上不再比ρ自身更极端,则可退出并返回ι IPI |。接着,将ν添加到Q 并随后返回以计算Q顶点的凸包中离原点最近的点P。在一些实施例中,此矢量化办法使得能够采用SIMD单元并同时使用多线程处理 器能力来处理集合对。在一些实施例中,可在多核处理器中实现显著的性能提高。通过处理 具有相同点数的集合可以实现最大的性能提升。在此情形中,存储器利用率最为有效。对 于游戏,这是最有可能的估计,因为即使是复杂体也不过有几十个顶点。图5中所示的计算机系统130可包括由总线104耦合到芯片组核心逻辑110的硬 盘驱动器134和可移动介质136。键盘和鼠标120、或其他常规组件可经由总线108耦合 至该芯片组核心逻辑。在一个实施例中,该核心逻辑可以经由总线105耦合到图形处理器 112,并且耦合到主处理器或主机处理器100。图形处理器112还可以通过总线106耦合到 帧缓冲器114。帧缓冲器114可通过总线107耦合至显示屏118。在一个实施例中,图形处 理器112可以是使用SIMD架构的多线程多核并行处理器。在软件实现的情况下,有关代码可以存储在任何合适的半导体、磁性或光学存储 器中,包括主存储器132或图形处理器内的任何可用存储器。因此,在一个实施例中,用于 执行图4的序列139的代码可被存储在诸如存储器132或图形处理器112之类的机器或计 算机可读介质中,并且在一个实施例中可由处理器100或图形处理器112执行。在一个实 施例中,核心30是图形处理器112的部分。本文描述的技术适用于包括两维、三维、和更高维表面的任何凸对象。尽管在上述 实施例中使用线性时间算法来计算支持映射,但也可使用其他算法。此处所描述的图形处理技术可以在各种硬件架构中实现。例如,图形功能可以集 成在芯片组中。另选地,可以使用分立的图形处理器。作为另一实施例,图形功能可以由通 用处理器、包括多核处理器来实现。在本说明书通篇中对“一个实施例”或“实施例”的引用意味着结合该实施例描述 的特定特征、结构或特性包括在本发明内所涵盖的至少一个实现中。因此,短语“一个实施 例”或“在实施例中”的出现不一定引用相同实施例。此外,这些特定特征、结构、或特性可 以不同于所解说的特定实施例的其他合适形式来施行,并且所有这样的形式都可被涵盖在 本申请的权利要求之内。尽管本发明参照有限的几个实施例予以描述,但是本领域的技术人员将会从其中 意识到许多改变和变型。所附权利要求旨在覆盖所有此类改变和变型,只要其落于本发明 的实质精神和范围内。
权利要求
1.一种方法,包括在运行于处理器上的Gilbert-Johnson-Keerthi算法中使用经对准的、矢量化的数据结构。
2.如权利要求1所述的方法,其特征在于,包括使用单指令多数据处理器。
3.如权利要求2所述的方法,其特征在于,包括将所述数据结构与单指令多数据处理 器宽度对准。
4.如权利要求3所述的方法,其特征在于,包括将所述数据结构布局成矩阵,其中第一 行包括顶点数目,第二、第三和第四行指示分开的轴,并且其余的行指示等于所述单指令多 数据宽度的数目个对象的顶点。
5.如权利要求1所述的方法,其特征在于,包括执行第一循环以支持映射函数。
6.如权利要求1所述的方法,其特征在于,包括重复应用所述算法直至找到最优点。
7.如权利要求1所述的方法,其特征在于,包括在多核并行处理器上运行所述算法。
8.如权利要求7所述的方法,其特征在于,所述处理器是分立的图形处理器。
9.一种存储指令的计算机可读介质,所述指令使计算机在Gilbert-Johnson-Keerthi算法中使用经对准的、矢量化的数据结构。
10.如权利要求9所述的介质,其特征在于,还存储在单指令多数据处理器上运行的指令。
11.如权利要求10所述的介质,其特征在于,还存储用于将所述数据结构与单指令多 数据处理器宽度对准的指令。
12.如权利要求11所述的介质,其特征在于,还存储用于将所述数据结构布局成矩阵 的指令,其中第一行包括顶点数目,第二、第三和第四行包括分开的轴,并且其余的行指示 等于所述单指令多数据宽度的数目个对象的顶点。
13.如权利要求9所述的介质,其特征在于,还存储用于执行第一循环以支持映射函数 的指令。
14.如权利要求9所述的介质,其特征在于,还存储用于重复应用所述算法直至找到最 优点的指令。
15.一种装置,包括单指令多数据处理器,用于在Gilbert-Johnson-Keerthi算法中使用经对准的、矢量 化的数据结构;以及耦合至所述处理器的存储。
16.如权利要求15所述的装置,其特征在于,所述处理器是多核并行处理器。
17.如权利要求15所述的装置,其特征在于,所述处理器用于执行第一循环以支持映 射函数。
18.如权利要求17所述的装置,其特征在于,所述处理器重复应用所述算法直至找到 最优点。
19.如权利要求15所述的装置,其特征在于,所述处理器用于将所述数据结构布局成 矩阵,其中第一行包括顶点数目,第二、第三和第四行指示分开的轴。
20.如权利要求15所述的装置,其特征在于,所述处理器用于将所述数据结构布局成 矩阵,其中其余的行指示等于所述处理器的所述单指令多数据宽度的数目个对象的顶点。
全文摘要
可以在应用Gilbert-Johnson-Keerthi算法的单指令多数据处理器中使用并行且矢量化的数据结构。因此,在一些情形中可以增强多核处理器进行图形处理的性能。
文档编号G06T1/20GK102110283SQ201010618118
公开日2011年6月29日 申请日期2010年12月22日 优先权日2009年12月23日
发明者A·A·白德, J·查乌加尼, M·斯密尔安斯基 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1