首页 / 专利库 / 专利权 / 实施例 / 用于经实施例化的几何结构的更有效的光线跟踪方法和装置

用于经实施例化的几何结构的更有效的光线跟踪方法和装置

阅读:238发布:2020-05-11

专利汇可以提供用于经实施例化的几何结构的更有效的光线跟踪方法和装置专利检索,专利查询,专利分析的服务。并且公开了有关对经实例化的几何结构进行更有效地 光线 跟踪 的方法和装置。在 实施例 中,通过不对整个对象进行实例化,而是对对象的多个子BVH 节点 进行实例化,重叠示例被解编织,这通过减少BVH节点的重叠而改善了 渲染 性能。还公开并要求保护其他实施例。,下面是用于经实施例化的几何结构的更有效的光线跟踪方法和装置专利的具体信息内容。

1.一种装置,包括:
存储器,用于存储对应于两级包围体层级(BVH)结构的信息;
处理器,被耦合到所述存储器,用于在经实例化的几何结构上构建和遍历所述两级BVH结构,
其中所述两级BVH结构的顶级的每个叶节点用于存储变换和对几何BVH的节点的引用。
2.如权利要求1所述的装置,其特征在于,其中所述处理器用于执行通过以下方式减少经实例化的BVH节点的列表中的空间重叠的操作:将一个或多个经实例化的节点重复替换为它们的子节点的实例化,直到满足某些终止标准。
3.如权利要求1-2中任一项所述的装置,其特征在于,所述处理器用于执行以下操作作为预处理步骤:生成所述经实例化的BVH节点的列表作为给BVH构建过程的输入。
4.如权利要求1-3中任一项所述的装置,其特征在于,所述处理器用于执行以下操作:
拆分现有顶级BVH的叶节点,随后是改善所述BVH的顶级的步骤。
5.如权利要求1-4中任一项所述的装置,其特征在于,所述处理器用于在自上而下的BVH构建过程期间将所述操作应用于构建基元的列表。
6.如权利要求1-5中任一项所述的装置,其特征在于,所述处理器用于,在所述基元的生成改进了在基元生成期间使用的拆分启发法的成本时,将所述操作用于构建基元。
7.如权利要求1-6中任一项所述的装置,其特征在于,所述处理器用于修改所述BVH结构以允许所述BVH结构的所述顶级中的一个或多个叶节点引用一个或多个BVH子树,其中,所述顶级BVH的每个叶节点对应于一对实例标识符和子树标识符。
8.如权利要求1-7中任一项所述的装置,其特征在于,所述实例标识符对应于变换操作。
9.如权利要求1-8中任一项所述的装置,其特征在于,对应于所述变换操作的信息将被高速缓存。
10.如权利要求1-9中任一项所述的装置,其特征在于,所述处理器将一个或多个节点添加到所述BVH结构,其中,所述一个或多个节点能够直接指向经实例化对象的一个或多个位置,以允许更有效地遍历所述BVH结构。
11.如权利要求1-10中任一项所述的装置,其特征在于,所述处理器将一个或多个节点添加到所述BVH结构的顶级,其中,所述一个或多个节点能够直接指向经实例化对象的一个或多个位置。
12.如权利要求1-11中任一项所述的装置,其特征在于,所述处理器包括以下各项中的一项或多项:图形处理单元(GPU)和处理器核。
13.如权利要求1-12中任一项所述的装置,其特征在于,所述GPU包括一个或多个图形处理核。
14.如权利要求1-13中任一项所述的装置,其特征在于,所述处理器包括一个或多个处理器核。
15.如权利要求1-14中任一项所述的装置,其特征在于,所述处理器包括所述存储器的至少一部分。
16.如权利要求1-15中任一项所述的装置,其特征在于,所述处理器和所述存储器在单个集成电路管芯上。
17.一种方法,包括:
将对应于两级包围体层级(BVH)结构的信息存储在存储器中;以及
在处理器处,在经实例化的几何结构上构建和遍历所述两级BVH结构,
其中所述两级BVH结构的顶级的每个叶节点存储变换和对几何BVH的节点的引用。
18.如权利要求17所述的方法,进一步包括,所述处理器执行通过以下方式减少经实例化的BVH节点的列表中的空间重叠的操作:将一个或多个经实例化的节点重复替换为它们的子节点的实例化,直到满足某些终止标准。
19.如权利要求17-18中任一项所述的方法,进一步包括,所述处理器执行以下操作作为预处理步骤:生成所述经实例化BVH节点的列表作为给BVH构建过程的输入。
20.如权利要求17-19中任一项所述的方法,进一步包括,所述处理器执行以下操作:拆分现有顶级BVH的叶节点,随后是改善所述BVH的顶级的步骤。
21.如权利要求17-20中任一项所述的方法,进一步包括,所述处理器在自上而下的BVH构建过程期间,对被递归地处理的构建基元的列表执行所述操作。
22.如权利要求17-21中任一项所述的方法,进一步包括,当所述基元的生成改善了在所述基元的生成期间使用的拆分启发法的成本时,所述处理器将所述操作用于构建基元。
23.一种包括一个或多个指令的计算机可读介质,所述指令在处理器上被执行时将所述处理器配置成执行如权利要求1至22中任一项所述的一个或多个操作。
24.一种设备,包括用于执行如权利要求1至22中任一项所述的方法的装置。

说明书全文

用于经实施例化的几何结构的更有效的光线跟踪方法和装置

技术领域

[0001] 本公开总体涉及电子学领域。更具体地,一些实施例涉及用于经实例化几何结构的更有效光线跟踪的技术。

背景技术

[0002] 在数字图像处理中,渲染通常是指与从二维(2D)或三维(3)模型生成图像相关联的过程。2D/3D模型可以包括具有不同几何结构的各种对象。一种渲染技术可以利用光线跟踪来模拟光的自然流动。然而,光线跟踪是高度计算密集型的任务,它消耗大量的计算周期(特别是在涉及每秒多个图像的电影制作中),并且通常只能在非常高端的计算系统上实现,例如,利用大规模渲染计算场。附图说明
[0003] 参考所附附图提供详细描述。在附图中,附图标记最左边的数字标识该附图标记首次出现在其中的附图。相同的附图标记在不同附图中的使用指示类似或相同的项。
[0004] 图1、3、4、13和15示出计算系统的实施例的框图,这些计算系统可用于实现本文中所讨论的各实施例。
[0005] 图2A示出了框图,其中多个经变换引用用于将同一目标放置在场景层级结构中。
[0006] 图2B示出了可以在一些实现中使用的两级包围体层级结构(BVH)技术的框图。
[0007] 图2C示出了根据实施例的经修改的BVH结构的框图。
[0008] 图2D示出了根据实施例的方法的流程图
[0009] 图5-9和11示出了根据一些实施例的处理器的各种部件。
[0010] 图10示出了根据一些实施例的图形核指令格式。
[0011] 图12A至图12B分别示出了根据一些实施例的图形处理器命令格式和序列。
[0012] 图14示出了根据实施例的IP核开发的图。

具体实施方式

[0013] 在下面的描述中,阐述了很多特定细节以提供对各实施例的全面理解。然而,在没有这些特定细节的情况下,也可实践各实施例。在其他实例中,未详细描述公知的方法、过程、部件和电路以免使特定实施例变得模糊。此外,各实施例的各方面可使用各种手段来执行,诸如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)或硬件与软件的某种组合。出于本公开的目的,对“逻辑”的引用应当意味着硬件、软件、固件或它们的某种组合。
[0014] 如上所述,虽然光线跟踪是数字图像处理中的有用技术,但它的使用仅在能够访问非常高端的计算场时才是可能的,例如利用数千个高端计算机服务器。此外,当处理复杂的电影内容时,可以使用一种技术来减少存储器消耗(称为“实例化”),其中在场景中多次出现的某些对象(诸如,某种类型的汽车色)只被存储一次。然后可以在同一场景中的不同位置多次重复使用所存储的(多个)对象。因此,不是存储同一对象的多个副本,而是实例化允许仅存储对象一次,其中多个(例如,经变换的)引用用于将(多个)对象放置在场景层级结构中的不同位置处。
[0015] 为此,一些实施例提供了用于经实例化几何结构的更有效光线跟踪的方法和装置。在一个实施例中,使用可以显著改善使用几何结构的实例化的场景的光线跟踪性能的方法和数据结构。
[0016] 进一步地,可在包括一个或多个处理器(例如,具有一个或多个处理器核)的计算系统中应用一些实施例,这些计算系统诸如参考图1-15所讨论的那些,包括例如移动计算设备,例如智能电话、平板、UMPC(超级移动个人计算机)、膝上型计算机、超极本TM计算设备、可穿戴设备(诸如智能手表或智能眼镜)等等。更具体地,图1例示出了根据实施例的计算系统100的框图。系统100可包括一个或多个处理器102-1至102-N(在本文中统称为“多个处理器102”或“处理器102)。”在各种实施例中,处理器102可以包括通用CPU和/或GPU。处理器102可经由互连或总线104来通信。每个处理器可包括各种部件,出于清楚起见,参照处理器
102-1仅讨论这些部件中的一些。因此,其余处理器102-2至102-N中的每一个可包括参照处理器102-1所讨论的相同或类似的部件。
[0017] 在实施例中,处理器102-1可包括一个或多个处理器核106-1至106-M(在本文中称为“多个核106”或“核106”)、高速缓存108、和/或路由器110。处理器核106可在单个集成电路(IC)芯片上实现。此外,芯片可包括一个或多个共享和/或私有高速缓存(诸如高速缓存108)、总线或互连(诸如总线或互连112)、图形和/或存储器控制器(诸如参照图3-15讨论的)、或其他部件。
[0018] 在一个实施例中,路由器110可被用来在处理器102-1和/或系统100的各个部件之间进行通信。此外,处理器102-1可包括不止一个路由器110。此外,多个路由器110可进行通信以实现处理器102-1的内部或外部的各个部件之间的数据路由。
[0019] 高速缓存108可存储供处理器102-1中的诸如核106之类的一个或多个部件使用的数据(例如,包括指令)。例如,高速缓存108可对存储在存储器114中的数据进行本地地高速缓存,以便供处理器102的部件进行更快速的访问(例如,供核106进行更快速的访问)。如图1中所示的,存储器114可经由互连104与处理器102通信。在实施例中,高速缓存108(其可被共享)可以是中级高速缓存(MLC)、末级高速缓存(LLC)等。而且,核106中的每一个可包括1级(L1)高速缓存(116-1)(在本文中统称为“L1高速缓存116”)或诸如2级(L2)高速缓存之类的其他级高速缓存。此外,处理器102-1的各个部件可通过总线(例如,总线112)和/或存储器控制器或中枢来与高速缓存108直接通信。
[0020] 如图1中所示,处理器102可进一步包括图形逻辑140(例如,其可以包括一个或多个图形处理单元(GPU)核,诸如参考图3-15所讨论的那些),以执行各种图形和/或通用计算相关的操作,诸如,本文中所讨论的。逻辑140可以访问本文中所讨论的一个或多个存储设备(诸如,视频(或图像、图形等)存储器、高速缓存108、L1高速缓存116、存储器114、(多个)寄存器150、或系统100中的另一存储器),从而存储与逻辑140的操作有关的信息,所述信息诸如,与本文中处所讨论的系统100的各种部件进行通信的信息。如本文中所讨论的,寄存器150可以被组织成(多个)寄存器堆,其中每个寄存器堆可以包括要由CPU或GPU访问的寄存器的阵列。而且,虽然逻辑140和寄存器150被示出在处理器102内部(或耦合到互连104),但是在各种实施例中它们可以位于系统100中的其他位置。例如,逻辑140可以替换核106中的一个,可以被直接耦合到互连112等。而且,寄存器150可以被直接耦合到互连112等。
[0021] 图2A示出了框图,其中多个经变换引用用于将同一目标放置在场景层级结构中。图2B示出了可以在一些实现中使用的两级包围体层级结构(Bounding Volume Hierarchy,BVH)技术的框图。图2C示出了根据实施例的经修改的BVH结构的框图。参照图1或3-15所讨论的一个或多个部件(诸如,图形逻辑140和/或GPU/核)可以用于执行参照图2C和/或2D所讨论的一个或多个操作。
[0022] 参见图2A,示出了具有两级BVH的实例化。主(“顶级”或“TL”)场景指的是经变换对象(其中“A:X1”表示对象A由矩阵X1变换,等等)。对象和顶级各自具有BVH,并且顶级BVH中的基元指代整个(例如,经变换的)对象。如图2A中所示,不是存储同一对象的多个副本,而是实例化允许仅存储对象一次,其中多个(例如,经变换的)引用用于将(多个)对象放置在场景层级结构中的不同位置处。
[0023] 参见图2B,用于处理光线跟踪器中的实例化的一些实现包括构建两级层级结构,其中一个级别的加速结构(例如,BVH)在每个基础对象(例如,给定类型的汽车)上,并且另一级别(“顶级”BVH)在所有实例上,其中每个顶级基元指代整个对象(以及关联的变换)。在追踪光线时,首先通过顶级BVH(例如,图2A中的节点TL、TL0和TL1)追踪光线,然后在多个叶处(例如,图2A中的节点A:X0,A:X1,B:X2,A:X3),光线被变换到相应实例的对象空间,在那里光线遍历对象BVH(参见例如图2A中的对象A和对象B)。
[0024] 图2A的方法的一个问题是,当不同的实例在世界空间(或整个场景)中重叠时,则需要多次遍历相同的空间区域(每个重叠实例一次),这导致显著的开销(例如,消耗更多的计算周期)。因此,虽然对于减少存储器占用(footprint)至关重要,但是使用这种方法的实例化通常会带来显著的性能损失,这可能使得数次渲染经实例化场景与没有实例化(在整个几何结构上使用单个大型BVH))一样昂贵(例如,在计算周期方面)。
[0025] 相比之下,一些实施例(诸如图2C中所示)修改BVH结构以跳过实例BVH中将导致重叠实例的那些节点,并且代之以将能够直接指向经实例化对象BVH的合适位置中的新的和/或更好的节点引入顶级BVH。这最终导致引用不具有(或至少更少)重叠的实例子树的顶级树。
[0026] 更具体地,实施例包括:(a)新颖的两级BVH类型,其中顶级BVH的叶不是指整个实例(而是指经实例化对象的各个BVH子树(每个都具有实例的原始变换矩阵));和/或(b)用于确定如何构建这种新的BVH数据结构(例如,用于确定哪组子树引用顶级BVH)的技术。
[0027] 图2D示出了根据一些实施例的用于跳过将导致重叠的实例的BVH结构的一个或多个节点的方法250的流程图。本文中参照图1、3-15所讨论的一个或多个部件(包括,例如,图形逻辑140和/或GPU/核)可以用于执行参照图2D所讨论的一个或多个操作。
[0028] 参见图1-2D,在操作252处,存储对应于BVH结构的信息(例如,如图2C中所示)。然后在操作254处分析所存储的信息(例如,通过诸如本文中所讨论的那些的逻辑140和/或GPU/核)。在操作256处,确定所存储的操作252的信息是否标识一个或多个重叠实例(例如,按照操作254的分析)。并且,如果在操作256处检测到重叠,则操作258修改的BVH结构,诸如本文中所讨论的(例如,跳过将导致重叠实例的一个或多个节点)。
[0029] 作为示例,考虑图2C的框图,其中虚线和交叉阴影框表示用于如图2B所示的设置的两级BVH。数据结构将避免引用强重叠区域(A和B,以及A0和B0),并将通过引入引用更合适的节点(A00,B00,A01,B01,A1和B1,如图2C中所示)的新的顶级节点(T0...T01)来“跳过”这些“坏”节点。这些新节点被认为更适合,部分原因是它们会导致可以被更有效地遍历的更好的树。
[0030] 在实施例中,在空间重叠实例的情况下,显著减少了重叠。不是顺序地遍历整个层级结构,而是这种编织的(braided)顶级BVH能够在先前应该已经重叠的实例中跳过(全部或大部分)节点,并且直接遍历不重叠(或者至少,显著更少重叠)的适当子树。这产生了显著更高的性能,特别是对于大量使用实例化的模型,诸如当许多这样的实例重叠时。因此,在一些实施例中,至少一些方法和/或(多个)数据结构可以在这些情况下显著加速对实例的渲染或光线跟踪,并且可以几乎与渲染复制的(即非实例化)几何结构一样快速地进行实例化(例如,在较高的存储器消耗中可能以适中的成本)。
[0031] 在一个实施例中,基本数据结构在结构上类似于两级BVH,其利用修改以允许顶级BVH中的基元不引用实例,而是引用特定实例-BVH子树。此外,顶级BVH中的每个叶基元将是一对(实例ID(标识符),子树ID),其中实例ID允许确定对象BVH应该经历的变换,以及第二参数(子树ID)所引用的对象BVH。
[0032] 根据一些实施例,遍历这样的结构将是简单的。更具体地,光线首先遍历顶层BVH,并且当到达叶时,光线被变换到实例的坐标系,并且向右跳转到对顶层基元引用的实例的相应子树进行遍历。为了避免使用相同的变换矩阵对光线进行重复变换,可以(但不是必需)高速缓存该变换的结果(例如,高速缓存在诸如参考图1和/或3-15所讨论的那些存储器/高速缓冲中)。与常规BVH的遍历类似的利用SIMD(单指令,多数据)或向量指令的遍历的扩展是可能的,并且这些实施例也可以扩展到其他加速结构,例如多分支BVH,八叉树,k维(kd)树、网格等
[0033] 在一些实施例中,所描述的构造算法假设已经针对经实例化的每个对象构建了一些BVH。此方法独立于用于构建这些逐对象的层级结构的算法。
[0034] 此外,为了构建数据结构,存在各种选择。例如,一个选项是首先执行对所有对象BVH的先验“解编织(un-braiding)”直至特定级别,或者直至每子树的特定大小的三角形、每子树的(世界-空间)边界框的区域等等;这导致一组(实例ID,子树ID)对,可以在其上随后构建顶级BVH。计算每个这样的基元的(世界-空间)边界框可以通过将相应实例的子树的边界框变换到世界空间(例如,使用实例的变换矩阵)来完成;或者可能通过查看实例的子框或基元中的一些并变换它们来完成。一旦顶级基元的适当边界框可用,就可以使用任何现有的BVH构建器,包括但不限于基于表面区域启发法(SAH)、基于分级(bining)、基于莫顿代码等的BVH构建器。
[0035] 另一种选择是在自上而下构造顶级BVH期间按需进行解编织。标准BVH构建器以构建基元(在我们的情况中,是变换和来自对象BVH的BVH节点的对)的列表开始。使用一些空间标准(诸如,表面区域启发法)将此构建基元的列表拆分成两个列表。然后,构建器创建一个节点,并使用较小的构建基元列表进行递归以构建子节点。当在拆分构建基元列表之前执行一些解编织时,可以减少子节点的框之间的重叠,以改善渲染性能。一个进一步的选择是将解编织结合到拆分启发法的评估中,以便在其改善启发法时仅对构建基元进行解编织。
[0036] 在一个实施例中,解编织可如下进行操作:
[0037] (1)创建所有顶级实例的列表;也就是说,在所有对(G,X)上创建列表,其中G是要被实例化的对象,并且X是要利用其进行实例化的变换。
[0038] (2)对于每个(G,X),生成(G,R(G),X),其中R(G)是G的对象BVH的根节点。现在每个三元组(G,N,X)指的是要被实例化的对象的(子)树。
[0039] (3)定义一个合适的函数f(G,N,X)来计算对一个给定子树(G,N,X)进行解编织的重要性。f的有用示例将是子树N的世界空间边界框的表面区域,区域(边界(X(N))。
[0040] (4)从可以被解编织的给定的(G,N,X)列表中,挑选具有最高优先级函数的那个(G,N,X)。对于并行实现,这种挑选也可以近似地完成。
[0041] (5)从列表中移除挑选的(G,N,X),并将(G,C0(N),X),(G,C1(N),X)等插入到列表中,其中C0(N)、C1(N)等是节点N的子节点。
[0042] (6)迭代步骤4-5,直到达到某个终止标准–诸如,例如,执行了总数量的拆分。
[0043] (7)在该列表中的所有(G,N,X)上构建顶级BVH。
[0044] 在各种实施例中可以使用其他变型。对于构造变型,可以使用以下各项中的一个或多个:
[0045] (a)对于终止标准,还可以考虑所生成的新节点的相对数量、所执行的拆分数量、总的或相对的存储器开销、每输入基元的经解编织的BVH节点的目标分数、每实例化的输入基元的经解编织的BVH节点的目标分数,等。
[0046] (b)优先级函数还可以考虑子节点的表面区域、子树中的基元的数量、对象BVH中节点的深度、当对节点解编织时区域增益的减少等。
[0047] (c)优先级函数还可以考虑该节点与其他节点的重叠
[0048] (d)解编织可以作为现有顶级BVH的后处理步骤来执行。例如,以现有的顶级BVH开始,构建算法可以尝试查找重叠节点,并通过将新节点插入顶级树中来进行解编织。
[0049] (e)仅在与其他实例具有至少一些重叠的那些实例上执行解编织可能会有所帮助。
[0050] (f)可以执行后优化,该后优化重新合并具有相同变换矩阵的顶级BVH中的子节点。
[0051] 在各种实施例中,遍历变体可包括以下各项中的一项或多项:
[0052] (i)对同一对象BVH的不同子树的顶级引用可以(例如,全部)在遍历期间使用同一光线变换。为了避免利用同一变换的重复变换,可以将光线变换的结果高速缓存在存储器/高速缓存(诸如参考图1和/或3-15所讨论的那些)中。
[0053] (ii)如果变换类型被存储在顶级BVH的每个实例节点中,则遍历可以优化特殊类型的变换。然后,遍历可以检查此类型并为以下各项中的一项或多项实现特殊代码路径:身份变换、翻译、旋转、缩放变换等。
[0054] 在一些实施例中,本文中所讨论的部件中的一个或多个可被具体化为芯片上系统(SOC)设备。图3示出了根据实施例的SOC封装的框图。如图3中所示,SOC 302包括一个或多个中央处理单元(CPU)核320(其可以与图1的核106相同或相似)、一个或多个图形处理器单元(GPU)核330(其可以与图1的图形逻辑140相同或类似)、输入/输出(I/O)接口340、和存储器控制器342。可将SOC封装302的各种部件耦合至诸如本文中参考其他附图所讨论的互连或总线。同样,SOC封装302可包括更多或更少的部件,诸如本文中参考其他附图所讨论的那些部件。此外,SOC封装320的每一部件都可包括一个或多个其他组件部件,例如,如参考本文中的其他附图所讨论的部件。在一个实施例中,在一个或多个集成电路(IC)管芯上提供SOC封装302(以及其部件),例如,该一个或多个集成电路管芯被封装到单个半导体设备中。
[0055] 如图3中所示,SOC封装302经由存储器控制器342被耦合到存储器360(其可以与本文中参考其他附图所讨论的存储器(诸如,图1的系统存储器114)类似或相同)。在实施例中,存储器360(或其部分)可以被集成在SOC封装302上。
[0056] I/O接口340可例如经由诸如本文中参考其他附图所讨论的互连和/或总线被耦合到一个或多个I/O设备370。(多个)I/O设备370可包括键盘鼠标触摸板、显示器、图像/视频捕捉设备(诸如相机或摄像机/视频录像机)、触摸屏、扬声器等中的一个或多个。此外,在实施例中,SOC封装302可以包括/集成逻辑140和/或寄存器150(或寄存器150的一部分)。替换地,可以在SOC封装302的外部(即,作为分立逻辑)来提供逻辑140和/或寄存器150(或寄存器150的一部分)。
[0057] 图4是根据实施例的处理系统400的框图。在各实施例中,系统400包括一个或多个处理器402以及一个或多个图形处理器408(诸如图1的图形逻辑140),并且可以是单处理器台式机系统、多处理器工作站系统或具有大量处理器402(诸如图1的处理器102)或处理器核407(诸如图1的核106)的服务器系统。在一个实施例中,系统400是被纳入到用于在移动设备、手持式设备或嵌入式设备中使用的芯片上系统(SoC)集成电路内的处理平台。
[0058] 系统400的实施例可以包括或并入基于服务器的游戏平台、游戏控制台,包括游戏与媒体控制台、移动游戏控制台、手持式游戏控制台、或在线游戏控制台。在一些实施例中,系统400是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统400还可包括可穿戴设备(诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备、或虚拟现实设备)、与所述可穿戴设备耦合、或者集成在所述可穿戴设备中。在一些实施例中,数据处理系统400是电视或机顶盒设备,所述电视或机顶盒设备具有一个或多个处理器402以及由一个或多个图形处理器408生成的图形界面。
[0059] 在一些实施例中,一个或多个处理器402每个包括用于处理指令的一个或多个处理器核407,所述指令在被执行时执行系统和用户软件的操作。在一些实施例中,一个或多个处理器核407中的每个处理器核被配置成用于处理特定的指令集409。在一些实施例中,指令集409可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。多个处理器核407可以各自处理不同的指令集409,所述指令集可以包括用于促进对其他指令集进行仿真的指令。处理器核407还可以包括其他处理设备,如数字信号处理器(DSP)。
[0060] 在一些实施例中,处理器402包括高速缓存存储器404。取决于架构,处理器402可以具有单个内部高速缓存或内部高速缓存的多个级。在一些实施例中,在处理器402的各部件当中共享高速缓存存储器。在一些实施例中,处理器402还使用外部高速缓存(例如,3级(L3)高速缓存或末级高速缓存(LLC))(未示出),可以使用已知的高速缓存一致性技术来在处理器核407当中共享外部高速缓存。另外地,寄存器堆406包括在处理器402中,所述处理器可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器、和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器402的设计。
[0061] 在一些实施例中,处理器402耦合至处理器总线410,所述处理器总线用于在处理器402与系统400内的其他部件之间传输通信信号,例如地址、数据、或控制信号。在一个实施例中,系统400使用示例性‘中枢’系统架构,包括存储器控制器中枢416和输入输出(I/O)控制器中枢430。存储器控制器中枢416促进存储器设备与系统400的其他部件之间的通信,而I/O控制器中枢(ICH)430经由本地I/O总线提供与I/O设备的连接。在一个实施例中,存储器控制器中枢416的逻辑集成在处理器内。
[0062] 存储器设备420可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储器设备、或具有合适的性能用作处理存储器的某个其他存储器设备。在一个实施例中,存储器设备420可作为系统400的系统存储器进行操作,以存储数据422和指令421,以供在一个或多个处理器402执行应用或进程时使用。存储器控制器中枢416还与可选的外部图形处理器412耦合,所述可选的外部图形处理器可以与处理器402中的一个或多个图形处理器408通信,从而执行图形和媒体操作。
[0063] 在一些实施例中,ICH 430使得外围部件经由高速I/O总线连接至存储器设备420和处理器402。I/O外围装置包括但不限于:音频控制器446、固件接口428、无线收发机426(例如,Wi-Fi、蓝牙)、数据存储设备424(例如,硬盘驱动器、闪存等)、以及用于将传统(例如,个人系统2(PS/2))设备耦合至所述系统的传统I/O控制器440。一个或多个通用串行总线(USB)控制器442连接多个输入设备,例如键盘和鼠标444组合。网络控制器434还可以耦合至ICH 430。在一些实施例中,高性能网络控制器(未示出)耦合至处理器总线410。应当理解,所示出的系统400是示例性的而非限制性的,因为还可以使用以不同方式配置的其他类型的数据处理系统。例如,I/O控制器中枢430可以集成在一个或多个处理器402内,或者存储器控制器中枢416和I/O控制器中枢430可以集成在分立式外部图形处理器(诸如外部图形处理器412)内。
[0064] 图5是处理器500的实施例的框图,所述处理器具有一个或多个处理器核502A至502N、集成存储器控制器514、以及集成图形处理器508。处理器500可以与参照图1所讨论的处理器102类似或相同。图5的具有与此处任何其他附图中的元件相同的参考号(或名称)的那些元件可采用与在本文中其他地方描述的方式相类似的任何方式进行操作或起作用,但不限于这些。处理器500可包括多达且包括由虚线框表示的附加核502N的附加核。处理器核
502A至502N各自包括一个或多个内部高速缓存单元504A至504N。在一些实施例中,每个处理器核还可以访问一个或多个共享的高速缓存单元506。
[0065] 内部高速缓存单元504A至504N和共享高速缓存单元506表示处理器500内部的高速缓存存储器层级结构。高速缓存存储器层级结构可以包括每个处理器核内的至少一级指令和数据高速缓存以及一级或多级共享中级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)、或其他级的高速缓存,其中,最高级的高速缓存在外部存储器之前被分类为LLC。在一些实施例中,高速缓存一致性逻辑维持各高速缓存单元506与504A至504N之间的一致性。
[0066] 在一些实施例中,处理器500还可以包括一组一个或多个总线控制器单元516和系统代理核510。一个或多个总线控制器单元516管理一组外围总线,诸如一个或多个外围部件互连总线(例如,PCI、PCI Express)。系统代理核510提供对各处理器部件的管理功能。在一些实施例中,系统代理核510包括一个或多个集成存储器控制器514用于管理对各外部存储器设备(未示出)的访问。
[0067] 在一些实施例中,处理器核502A至502N中的一个或多个包括对同步多线程的支持。在这种实施例中,系统代理核510包括用于在多线程处理过程中协调和操作核502A至502N的部件。另外,系统代理核510还可以包括功率控制单元(PCU),所述功率控制单元包括用于调节处理器核502A至502N的功率状态的逻辑和部件以及图形处理器508。
[0068] 在一些实施例中,另外,处理器500还包括用于执行图形处理操作的图形处理器508。在一些实施例中,图形处理器508耦合至共享高速缓存单元506集以及系统代理核510,所述系统代理核包括一个或多个集成存储器控制器514。在一些实施例中,显示控制器511与图形处理器508耦合以便将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器511可以是经由至少一个互连与图形处理器耦合的单独模,或者可以集成在图形处理器508或系统代理核510内。
[0069] 在一些实施例中,基于环的互连单元512用于耦合处理器500的内部部件。然而,可以使用替代性互连单元,比如点到点互连、切换式互连、或其他技术,包括本领域众所周知的技术。在一些实施例中,图形处理器508经由I/O链路513与环形互连512耦合。
[0070] 示例性I/O链路513表示多个I/O互连中的多个品种中的至少一种,包括促进各处理器部件与高性能嵌入式存储器模块518(比如eDRAM(或嵌入式DRAM)模块)之间的通信的封装体I/O互连。在一些实施例中,处理器核502A至502N中的每个处理器核以及图形处理器508将嵌入式存储器模块518用作共享末级高速缓存。
[0071] 在一些实施例中,处理器核502A至502N是执行相同指令集架构的均质核。在另一实施例中,处理器核502A至502N在指令集架构(ISA)方面是异构的,其中,处理器核502A-502N中的一者或多者执行第一指令集,而其他核中的至少一者执行所述第一指令集的子集或不同的指令集。在一个实施例中,处理器核502A至502N就微架构而言是同质的,其中,具有相对较高功耗的一个或多个核与具有较低功耗的一个或多个功率核耦合。另外,处理器
500可以实现在一个或多个芯片上或者被实现为具有除其他部件之外的所展示的部件的SoC集成电路。
[0072] 图6是图形处理器600的框图,所述图形处理器可以是分立式图形处理单元、或者可以是与多个处理核集成的图形处理器。图形处理器600可以与参照图1所讨论的图形逻辑140类似或相同。在一些实施例中,图形处理器经由到图形处理器上的寄存器的映射I/O接口并且利用被放置在处理器存储器中的命令与存储器进行通信。在一些实施例中,图形处理器600包括用于访问存储器的存储器接口614。存储器接口614可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和/或到系统存储器的接口。
[0073] 在一些实施例中,图形处理器600还包括显示控制器602,所述显示控制器用于将显示输出数据驱动到显示设备620。显示控制器602包括用于显示器的一个或多个重叠平面的硬件以及多层视频或用户接口元件的组成。在一些实施例中,图形处理器600包括用于编码、解码、或者向、从或在一个或多个媒体编码格式之间进行媒体代码转换的视频编解码器引擎606,包括但不限于:运动图像专家组(MPEG)(诸如MPEG-2)、高级视频编码(AVC)格式(诸如H.264/MPEG-4AVC)、以及电影&电视工程师协会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式(诸如JPEG、以及运动JPEG(MJPEG)格式)。
[0074] 在一些实施例中,图形处理器600包括用于执行二维(2D)光栅化器操作包括例如位边界块传递的块图像传递(BLIT)引擎604。然而,在一个实施例中,使用图形处理引擎(GPE)610的一个或多个部件执行2D图形操作。在一些实施例中,图形处理引擎610是用于执行图形操作的计算引擎,所述图形操作包括三维(3D)图形操作和媒体操作。
[0075] 在一些实施例中,GPE 610包括用于执行3D操作的3D流线612,比如使用作用于3D图元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线612包括可编程且固定的功能元件,所述可编程且固定的功能元件在到3D/媒体子系统615的元件和/或生成的执行线程内执行各种任务。虽然3D流水线612可以用于执行媒体操作,但是GPE 
610的实施例还包括媒体流水线616,所述媒体流水线具体地用于执行媒体操作,诸如视频后处理和图像增强。
[0076] 在一些实施例中,媒体流水线616包括固定功能或可编程逻辑单元以便代替、或代表视频编解码器引擎606来执行一种或多种专的媒体操作,比如视频解码加速、视频解交织、以及视频编码加速。在一些实施例中,另外,媒体流水线616还包括线程生成单元以便生成用于在3D/媒体子系统615上执行的线程。所生成的线程对3D/媒体子系统615中所包括的一个或多个图形执行单元执行对媒体操作的计算。
[0077] 在一些实施例中,3D/媒体子系统615包括用于执行3D流水线612和媒体流水线616生成的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统615发送线程执行请求,所述3D/媒体子系统包括用于仲裁并将各请求分派到可用的线程执行资源的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元阵列。在一些实施例中,3D/媒体子系统
615包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,所述子系统还包括共享存储器(包括寄存器和可寻址存储器)以便在线程之间共享数据并用于存储输出数据。
[0078] 图7是根据一些实施例的图形处理器的图形处理引擎710的框图。在一个实施例中,GPE 710是图6中示出的GPE 610的版本。图7具有与本文中的任意其他附图的元件相同的附图标记(或名称)的元件可以以类似于本文中其他地方描述的任何方式操作或运行,但不限于此。
[0079] 在一些实施例中,GPE 710与命令流转化器(command streamer)703耦合,所述命令流转化器703将命令流提供至GPE 3D和媒体流水线712、716。在一些实施例中,命令流转化器703耦合至存储器,所述存储器可以是系统存储器、或者内部高速缓存存储器和共享高速缓存存储器中的一个或多个。在一些实施例中,命令流转化器703从存储器接收命令,并且将这些命令发送至3D流水线712和/或媒体流水线716。这些命令是从环形缓冲器中取出的指令,该环形缓冲器存储用于3D和媒体流水线712、716的命令。在一个实施例中,环形缓冲器可以附加地包括存储批量的多个命令的批量命令缓冲器。3D和媒体流水线712、716通过以下方式来处理命令:经由相应流水线内的逻辑来执行操作;或将一个或多个执行线程分派给执行单元阵列714。在一些实施例中,执行单元阵列714是可缩放的,使得该阵列包括基于GPE 710的目标功率和性能水平的可变数量的执行单元。
[0080] 在一些实施例中,采样引擎730与存储器(例如,高速缓存存储器或系统存储器)以及执行单元阵列714耦合。在一些实施例中,采样引擎730提供用于执行单元阵列714的存储器访问机制,所述存储器访问机制允许执行阵列714从存储器读取图形和媒体数据。在一些实施例中,采样引擎730包括用于为媒体执行专业图像采样操作的逻辑。
[0081] 在一些实施例中,采样引擎730中的专业媒体采样逻辑包括去噪/去隔行模块732、运动估计模块734以及图像缩放和过滤模块736。在一些实施例中,去噪/去隔行模块732包括用于对经解码的视频数据执行去噪或去隔行中的一者或多者的逻辑。去隔行逻辑将隔行的(interlaced)视频内容的交替场(alternating field)组合为单个视频。去噪逻辑降低或去除来自视频和图像数据的数据噪声。在一些实施例中,去噪逻辑和去隔行逻辑是运动自适应的,并且基于在视频数据中检测到的运动量来使用空间或时间上的过滤。在一些实施例中,去噪/去隔行模块732包括专用运动检测逻辑(例如,在运动估计引擎734内)。
[0082] 在一些实施例中,运动估计引擎734通过对视频数据执行视频加速功能(诸如,运动向量估计和预测)来提供对视频操作的硬件加速。运动估计引擎确定运动向量,所述运动向量描述图像数据在连续的视频帧之间的变换。在一些实施例中,图形处理器媒体编解码器(codec)使用视频运动估计引擎734以在宏块层级上对视频执行操作,所述在宏块层级上对视频的操作否则可能会是太过计算密集的以致不能利用通用处理器来执行。在一些实施例中,运动估计引擎734一般可用于图形处理器部件以辅助视频解码和处理功能,所述视频解码和处理功能对视频数据内的运动的方向或幅度是敏感的或自适应于视频数据内的运动的方向或幅度。
[0083] 在一些实施例中,图像缩放和过滤模块736执行图像处理操作以增强所生成的图像和视频的视觉质量。在一些实施例中,缩放和过滤模块736在将数据提供至执行单元阵列714之前的采样操作期间处理图像和视频数据。
[0084] 在一些实施例中,GPE 710包括数据端口744,所述数据端口744为图形子系统提供访问存储器的附加机制。在一些实施例中,数据端口744促进用于操作的存储器访问,所述操作包括渲染目标写入、恒定缓冲器读取、抓取存储器空间读取/写入,以及媒体表面访问。在一些实施例中,数据端口744包括用于对存储器的访问进行高速缓存的高速缓存存储器空间。高速缓存存储器可以是单个数据高速缓存,或者可被分离成用于经由数据端口来访问存储器的多个子系统的多个高速缓存(例如,渲染缓冲器高速缓存、恒定缓冲器高速缓存,等等)。在一些实施例中,在执行单元阵列714中的执行单元上执行的线程通过经由数据分配互连交换消息来与数据端口通信,所述数据分配互连耦合GPE 710的子系统中的每一个。
[0085] 图8是图形处理器800的另一个实施例的框图。图8的具有与此处任何其他附图中的元件相同的参考号(或名称)的那些元件可采用与在本文中其他地方描述的方式相类似的任何方式进行操作或起作用,但不限于这些。
[0086] 在一些实施例中,图形处理器800包括环形互连802、流水线前端804、媒体引擎837、以及图形核880A至880N。在一些实施例中,环形互连802将图形处理器耦合至其他处理单元,包括其他图形处理器或者一个或多个通用处理器核。在一些实施例中,图形处理器是集成在多核处理系统内的多个处理器之一。
[0087] 在一些实施例中,图形处理器800经由环形互连802接收多批命令。传入命令由流水线前端804中的命令流转化器803来解译。在一些实施例中,图形处理器800包括用于经由(多个)图形核880A至880N执行3D几何处理和媒体处理的可缩放执行逻辑。对于3D几何处理命令,命令流转化器803将命令供应至几何流水线836。针对至少一些媒体处理命令,命令流转化器803将命令供应至视频前端834,所述视频前端与媒体引擎837耦合。在一些实施例中,媒体引擎837包括用于视频和图像后处理的视频质量引擎(VQE)830以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)833引擎。在一些实施例中,几何流水线836和媒体引擎837各自生成执行线程,所述执行线程用于由至少一个图形核880A提供的线程执行资源。
[0088] 在一些实施例中,图形处理器800包括可扩展线程执行资源表征模块核880A至880N(有时被称为核分片),各个可扩展线程执行资源表征模块核具有多个子核850A至
850N、860A至860N(有时被称为核子分片)。在一些实施例中,图形处理器800可以具有任意数量的图形核880A至880N。在一些实施例中,图形处理器800包括图形核880A,所述图形核至少具有第一子核850A和第二核子核860A。在其他实施例中,图形处理器是具有单个子核(例如,850A)的低功率处理器。在一些实施例中,图形处理器800包括多个图形核880A至
880N,所述图形核各自包括一组第一子核850A至850N和一组第二子核860A至860N。所述一组第一子核850A至850N中的每个子核至少包括第一组执行单元852A至852N和媒体/纹理采样器854A至854N。所述一组第二子核860A至860N中的每个子核至少包括第二组执行单元
862A至862N和采样器864A至864N。在一些实施例中,每个子核850A至850N、860A至860N共享一组共享资源870A至870N。在一些实施例中,所述共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源也可以包括在图形处理器的各实施例中。
[0089] 图9展示了线程执行逻辑900,所述线程执行逻辑包括在GPE的一些实施例中采用的处理元件阵列。图9的具有与此处任何其他附图中的元件相同的参考号(或名称)的那些元件可采用与在本文中其他地方描述的方式相类似的任何方式进行操作或起作用,但不限于这些。
[0090] 在一些实施例中,线程执行逻辑900包括像素着色器902、线程分派器904、指令高速缓存906、包括多个执行单元908A-908N的可缩放执行单元阵列、采样器910、数据高速缓存912和数据端口914。在一个实施例中,所包括的部件经由互连结构被互连,所述互连结构链接至部件中的每一个。在一些实施例中,线程执行逻辑900包括通过指令高速缓存906、数据端口914、采样器910和执行单元阵列908A-908N中的一者或多者而至存储器(诸如,系统存储器或高速缓存存储器)的一个或多个连接。在一些实施例中,每一个执行单元(例如,908A)是能够为每一个线程并行地执行多个同时的线程并处理多个数据元素的单独的向量处理器。在一些实施例中,执行单元阵列908A-908N包括任何数量的单独执行单元。
[0091] 在一些实施例中,执行单元阵列908A-908N主要用于执行“着色器”程序。在一些实施例中,阵列908A-908N中的执行单元执行包括对许多标准的3D图形着色器指令的原生支持的指令集,使得以最少的转换来执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器片段着色器)和通用处理(例如,计算和媒体着色器)。
[0092] 执行单元阵列908A至908N中的每个执行单元在数据元素阵列上进行操作。数据元素的数量是“执行大小”、或指令的信道数。执行通道是执行数据元素访问、掩蔽、和指令内的流控制的逻辑单元。通道的数量可以与针对特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量无关。在一些实施例中,执行单元908A至908N支持整数和浮点数据类型。
[0093] 执行单元指令集包括单指令多数据(SIMD)指令。各种数据元素可作为压缩数据类型存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,当在256位宽的向量上进行操作时,所述256位的向量存储在寄存器中,并且所述执行单元作为四个单独64位压缩数据元素(四倍字长(QW)大小的数据元素)、八个单独32位压缩数据元素(双倍字长(DW)大小的数据元素)、十六个单独16位压缩数据元素(字长(W)大小的数据元素)、或三十二个单独8位数据元素(字节(B)大小的数据元素)在所述向量上进行操作。然而,不同的向量宽度和寄存器大小是可能的。
[0094] 一个或多个内部指令高速缓存(例如,906)包括在所述线程执行逻辑900中以便高速缓存所述执行单元的线程指令。在一些实施例中,一个或多个数据高速缓存(例如,912)被包括用于高速缓存在线程执行过程中的线程数据。在一些实施例中,采样器910被包括用于为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器910包括专门的纹理或媒体采样功能,以便在向执行单元提供采样数据之前在采样过程中处理纹理或媒体数据。
[0095] 在执行期间,图形和媒体流水线经由线程繁衍和分派逻辑而将线程发起请求发送至线程执行逻辑900。在一些实施例中,线程执行逻辑900包括本地线程分派器904,所述本地线程分派器904仲裁来自图形和媒体流水线的线程发起请求,并且在一个或多个执行单元908A-908N上实例化所请求的线程。例如,几何流水线(例如,图8的836)将顶点处理、曲面细分(tessellation)或几何处理线程分派给线程执行逻辑900(图9)。在一些实施例中,线程分派器904也可处理来自执行着色器程序的运行时线程繁衍请求。
[0096] 一旦一组几何对象已被处理并光栅化成像素数据,就调用像素着色器902,以进一步计算输出信息并使结果被写入输出表面(例如,颜色缓冲器、深度缓冲器、模板印刷(stencil)缓冲器等)。在一些实施例中,像素着色器902计算将跨光栅化的对象而被内插的各种顶点属性的值。在一些实施例中,像素着色器902随后执行应用编程接口(API)供应的像素着色器程序。为了执行像素着色器程序,像素着色器902经由线程分派器904而将线程分派给执行单元(例如,908A)。在一些实施例中,像素着色器902使用采样器910中的纹理采样逻辑来访问存储在存储器中的纹理映射中的纹理数据。对纹理数据和输入几何数据的算术操作计算用于每一个几何片段的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
[0097] 在一些实施例中,数据端口914提供存储器访问机制,供线程执行逻辑900将经处理的数据输出至存储器以便在图形处理器输出流水线上进行处理。在一些实施例中,数据端口914包括或耦合至一个或多个高速缓存存储器(例如,数据高速缓存912)从而经由数据端口高速缓存数据以供存储器访问。
[0098] 图10是展示了根据一些实施例的图形处理器指令格式1000的框图。在一个或多个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框展示了通常包括在执行单元指令中的部件,而虚线包括可选的部件或仅包括在指令子集中的部件。在一些实施例中,所描述和展示的指令格式1000是宏指令,因为它们是供应至执行单元的指令,这与从指令解码产生的微操作相反(一旦所述指令被处理)。
[0099] 在一些实施例中,图形处理器执行单元原生地支持采用128位格式1010的指令。64位紧凑指令格式1030可用于基于所选指令、多个指令选项和操作数数量的一些指令。原生128位格式1010提供对所有指令选项的访问,而一些选项和操作限制在64位格式1030中。64位格式1030中可用的原生指令根据实施例而不同。在一些实施例中,使用索引字段1013中的一组索引值将指令部分地压缩。执行单元硬件基于索引值来参考一组压缩表,并使用压缩表输出来重构采用128位格式1010的原生指令。
[0100] 针对每种格式,指令操作码1012限定执行单元要执行的操作。执行单元跨每个操作数的多个数据元素来并行地执行每条指令。例如,响应于添加指令,执行单元跨每个颜色通道执行同步添加操作,所述颜色通道表示纹理元素或图片元素。默认地,执行单元跨操作数的所有数据通道执行每条指令。在一些实施例中,指令控制字段1014使能控制某些执行选项,诸如通道选择(例如,预测)以及数据通道排序(例如,混合)。针对128位指令1010的,执行大小字段1016限制了将并行执行的数据通道的数量。在一些实施例中,执行大小字段1016不可用于64位紧凑指令格式1030。
[0101] 一些执行单元指令具有多达三个操作数,包括两个源操作数(src0 1022、src1 1022)和一个目的地1018。在一些实施例中,执行单元支持双目的地指令,其中这些目的地之一是隐式的。数据操作指令可以具有第三源操作数(例如,SRC2 1024),其中,指令操作码
1012确定源操作数的数量。指令的最后的源操作数可以是利用所述指令传递的即时(例如,硬编码)值。
[0102] 在一些实施例中,128位指令格式1010包括访问/地址模式信息1026,所述访问/地址模式信息例如限定了是使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,直接由指令1010中的位来提供一个或多个操作数的寄存器地址。
[0103] 在一些实施例中,128位指令格式1010包括访问/地址模式字段1026,所述访问/地址模式字段指定指令的地址模式和/或访问模式。在一个实施例中,访问模式用于限定针对指令的数据访问对齐。一些实施例支持访问模式,包括16字节对齐访问模式和1字节对齐访问模式,其中,访问模式的字节对齐确定了指令操作数的访问对齐。例如,当在第一模式中时,指令1010可以使用字节对齐寻址以用于源操作数和目的地操作数,并且当在第二模式中时,指令1010可以使用16字节对齐寻址以用于所有的源操作数和目的地操作数。
[0104] 在一个实施例中,访问/地址模式字段1026的地址模式部分确定指令是使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令1010中的位直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可以基于指令中的地址寄存器值和地址立即数字段来计算一个或多个操作数的寄存器地址。
[0105] 在一些实施例中,基于操作码1012位字段对指令进行分组从而简化操作码解码1040。针对8位的操作码,第10、11、和12位允许执行单元确定操作码的类型。所示出的精确操作码分组仅是示例性的。在一些实施例中,移动和逻辑操作码组1042包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动和逻辑组1042共享五个最高有效位(MSB),其中移动(mov)指令采用0000xxxxb的形式,而逻辑指令采用0001xxxxb的形式。流控制指令组1044(例如,调用(call)、跳(jmp))包括采用0010xxxxb形式(例如,0x20)的指令。混杂指令组1046包括指令的混合,包括采用0011xxxxb形式(例如,0x30)的同步指令(例如,等待(wait)、发送(send))。并行数学指令组1048包括采用0100xxxxb形式(例如,
0x40)的按分量的算术指令(例如,加(add)、乘(mul))。并行数学组1048跨数据通道并行地执行算术运算。向量数学组1050包括采用0101xxxxb形式(例如,0x50)的算术指令(例如,dp4)。向量数学组对向量操作数执行算术运算,诸如点积运算。
[0106] 图11是图形处理器1100的另一个实施例的框图。图11的具有与此处任何其他附图中的元件相同的参考号(或名称)的那些元件可采用与在本文中其他地方描述的方式相类似的任何方式进行操作或起作用,但不限于这些。
[0107] 在一些实施例中,图形处理器1100包括图形流水线1120、媒体流水线1130、显示引擎1140、线程执行逻辑1150、以及渲染输出流水线1170。在一些实施例中,图形处理器1100是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器受到至一个或多个控制寄存器(未示出)的寄存器写入的控制或者经由环形互连1102经由发布至图形处理器1100的命令被控制。在一些实施例中,环形互连1102将图形处理器1100耦合至其他处理部件,比如其他图形处理器或通用处理器。来自环形互连1102的命令通过命令流转化器1103被解译,所述命令流转化器将指令供应至图形流水线1120或媒体流水线1130的单独部件。
[0108] 在一些实施例中,命令流转化器1103引导顶点获取器1105的操作,所述顶点获取器从存储器读取顶点数据并执行由命令流转化器1103所提供的顶点处理命令。在一些实施例中,顶点获取器1105将顶点数据提供给顶点着色器1107,所述顶点着色器对每个顶点执行坐标空间变换和照明操作。在一些实施例中,顶点获取器1105和顶点着色器1107通过经由线程分派器1131向执行单元1152A至1152B分派执行线程来执行顶点处理指令。
[0109] 在一些实施例中,执行单元1152A至1152B是具有用于执行图形和媒体操作的指令集的向量处理器阵列。在一些实施例中,执行单元1152A至1152B具有附接的L1高速缓存1151,所述高速缓存专用于每个阵列或在阵列之间共享。高速缓存可以被配置为数据高速缓存、指令高速缓存、或单个高速缓存,所述单个高速缓存被分区为包含不同分区中的数据和指令。
[0110] 在一些实施例中,图形流水线1120包括用于执行3D对象的硬件加速曲面细分的曲面细分部件。在一些实施例中,可编程的外壳着色器1111配置曲面细分操作。可编程域着色器1117提供对曲面细分输出的后端评估。曲面细分器1113在外壳着色器1111的方向上进行操作并且包含专用逻辑,所述专用逻辑用于基于粗糙几何模型来生成详细的几何对象集合,所述粗糙几何模型作为输入被提供至图形流水线1120。在一些实施例中,如果未使用曲面细分,则可以对曲面细分部件1111、1113、1117进行旁路。
[0111] 在一些实施例中,完整的几何对象可以由几何着色器1119经由被分派至所述执行单元1152A至1152B的一个或多个线程来处理、或者可以直接行进至剪辑器1129。在一些实施例中,几何着色器在整个几何对象(而非顶点或者如图形流水线的先前级中的顶点补片)上进行操作。如果禁用曲面细分,则几何着色器1119从顶点着色器1107接收输入。在一些实施例中,几何着色器1119可由几何着色器程序编程以便在曲面细分单元被禁用时执行几何曲面细分。
[0112] 在光栅化之前,剪辑器1129处理顶点数据。剪辑器1129可以是固定功能的剪辑器或者具有剪辑和几何着色器功能的可编程剪辑器。在一些实施例中,渲染输出流水线1170中的光栅化器/深度1173分派像素着色器以将几何对象转换成其每像素表示。在一些实施例中,像素着色器逻辑包括在线程执行逻辑1150中。在一些实施例中,应用可对光栅化器1173进行旁路并且经由流出单元1123访问未光栅化的顶点数据。
[0113] 图形处理器1100具有互连总线、互连结构、或某个其他的互连机制,所述互连机制允许数据和消息在所述图形处理器的主要部件之中传递。在一些实施例中,执行单元1152A至1152B和(多个)相关联的高速缓存1151、纹理和媒体采样器1154、以及纹理/采样器高速缓存1158经由数据端口1156进行互连,以便执行存储器访问并且与处理器的渲染输出流水线部件进行通信。在一些实施例中,采样器1154、高速缓存1151、1158以及执行单元1152A至1152B各自具有单独的存储器访问路径。
[0114] 在一些实施例中,渲染输出流水线1170包含光栅化器和深度测试部件1173,所述光栅化器和深度测试部件将基于顶点的对象转换为相关联的基于像素的表示。在一些实施例中,光栅化器逻辑包括用于执行固定功能三角形和线光栅化的窗口器/掩蔽器单元。相关联的渲染高速缓存1178和深度高速缓存1179在一些实施例中也是可用的。像素操作部件1177对数据进行基于像素的操作,然而在一些实例中,与2D操作(例如,利用混合的位块图像传递)相关联的像素操作由2D引擎1141执行、或者在显示时间由显示控制器1143使用重叠显示平面来代替。在一些实施例中,共享的L3高速缓存1175可用于所有的图形部件,从而允许在无需使用主系统存储器的情况下共享数据。
[0115] 在一些实施例中,图形处理器媒体流水线1130包括媒体引擎1137和视频前端1134。在一些实施例中,视频前端1134从命令流转化器1103接收流水线命令。在一些实施例中,媒体流水线1130包括单独的命令流转化器。在一些实施例中,视频前端1134在将所述命令发送至媒体引擎1137之前处理媒体命令。在一些实施例中,媒体引擎1137包括用于生成线程以用于经由线程分派器1131分派至线程执行逻辑1150的线程生成功能。
[0116] 在一些实施例中,图形处理器1100包括显示引擎1140。在一些实施例中,显示引擎1140在处理器1100外部并且经由环形互连1102、或某个其他互连总线或机构与图形处理器耦合。在一些实施例中,显示引擎1140包括2D引擎1141和显示控制器1143。在一些实施例中,显示引擎1140包含能够独立于3D流水线而操作的专用逻辑。在一些实施例中,显示控制器1143与显示设备(未示出)耦合,所述显示设备可以是系统集成显示设备(如在膝上型计算机中)、或者经由显示设备连接器附接的外部显示设备。
[0117] 在一些实施例中,图形流水线1120和媒体流水线1130可被配置成用于基于多个图形和媒体编程接口执行操作并且并非专用于任何一种应用编程接口(API)。在一些实施例中,图形处理器的驱动器软件将专用于特定图形或媒体库的API调度转换成可由图形处理器处理的命令。在一些实施例中,为来自Khronos Group的开放图形库(OpenGL)和开放计算语言(OpenCL)提供了支持,或者可向OpenGL和D3D两者提供支持。在一些实施例中,可以支持这些库的组合。还可以为开源计算机视觉库(OpenCV)提供支持。如果可做出从未来API的流水线到图形处理器的流水线的映射,则具有兼容3D流水线的未来API也将受到支持。
[0118] 图12A是展示了根据一些实施例的图形处理器命令格式1200的框图。图12B是展示了根据实施例的图形处理器命令序列1210的框图。图12A中的实线框展示了通常包括在图形命令中的部件,而虚线包括是可选的或者仅包括在所述图形命令的子集中的部件。图12A的示例性图形处理器命令格式1200包括用于标识命令的目标客户端1202、命令操作代码(操作码)1204、以及用于命令的相关数据1206的数据字段。一些命令中还包括子操作码1205和命令大小1208。
[0119] 在一些实施例中,客户端1202限定了处理命令数据的图形设备的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段以便调整对命令的进一步处理并将命令数据路由至合适的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元、和媒体单元。每个客户端单元具有对命令进行处理的相应处理流水线。一旦命令被客户端单元接收到,客户端单元就读取操作码1204以及子操作码1205(如果存在的话)从而确定要执行的操作。客户端单元使用数据字段
1206内的信息来执行命令。针对一些命令,期望显式地的命令大小1208来限定命令的大小。
在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的大小。
在一些实施例中,经由双倍字长的倍数对命令进行对齐。
[0120] 图12B中的流程图示出了示例性图形处理器命令序列1210。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示出的命令序列的版本来启动、执行并终止图形操作集合。仅出于示例性目的示出并描述了样本命令序列,如实施例并不限于这些特定命令或者此命令序列。而且,所述命令可以作为一批命令以命令序列被发布,从而使得图形处理器将以至少部分同时的方式处理命令序列。
[0121] 在一些实施例中,图形处理器命令序列1210可以以流水线转储清除命令1212开始以便使得任一活跃图形流水线完成针对所述流水线的当前未决命令。在一些实施例中,3D流水线1222和媒体流水线1224不同时进行操作。执行流水线转储清除以使得活动图形流水线完成任何未决命令。响应于流水线转储清除,用于图形处理器的命令解析器将停止命令处理直到活跃绘画引擎完成未决操作并且使得相关的读高速缓存失效。可选地,渲染高速缓存中被标记为‘脏’的任何数据可以被转储清除到存储器中。在一些实施例中,流水线转储清除命令1212可以用于流水线同步或者用在将图形处理器置于低功率状态之前。
[0122] 在一些实施例中,当命令序列需要图形处理器在流水线之间显式地地切换时,使用流水线选择命令1213。在一些实施例中,在发布流水线命令之前在执行情境中仅需要一次流水线选择命令1213,除非所述情境要发布针对两条流水线的命令。在一些实施例中,在经由流水线选择命令1213的流水线切换之前正好需要流水线转储清除命令1212。
[0123] 在一些实施例中,流水线控制命令1214配置用于操作的图形流水线并且用于对3D流水线1222和媒体流水线1224进行编程。在一些实施例中,流水线控制命令1214配置活跃流水线的流水线状态。在一个实施例中,流水线控制命令1214用于流水线同步并且用于在处理一批命令之前清除来自活跃流水线内的一个或多个高速缓存存储器中的数据。
[0124] 在一些实施例中,返回缓冲器状态命令1216用于配置返回缓冲器的集合以供相应的流水线写入数据。一些流水线操作需要分配、选择、或配置一个或多个返回缓冲器,在处理过程中所述操作将中间数据写入所述一个或多个返回缓冲器中。在一些实施例中,图形处理器还使用一个或多个返回缓冲器以便存储输出数据并且执行跨线程通信。在一些实施例中,返回缓冲器状态1216包括选择返回缓冲器的大小和数量以用于流水线操作集合。
[0125] 命令序列中的剩余命令基于用于操作的活跃流水线而不同。基于流水线判定1220,所述命令序列被定制用于以3D流水线状态1230开始的3D流水线1222、或者在媒体流水线状态1240处开始的媒体流水线1224。
[0126] 用于3D流水线状态1230的命令包括用于顶点缓冲器状态、顶点元素状态、常量颜色状态、深度缓冲器状态、以及有待在处理3D图元命令之前配置的其他状态变量的3D状态设置命令。这些命令的值至少部分地基于使用中的特定3D API来确定。在一些实施例中,3D流水线状态1230命令还能够选择性地禁用或旁路掉特定流水线元件(如果将不使用那些元件的话)。
[0127] 在一些实施例中,3D图元1232命令用于提交待由3D流水线处理的3D图元。经由3D图元1232命令传递给图形处理器的命令和相关联参数将被转发到所述图形流水线中的顶点获取功能。顶点获取功能使用3D图元1232命令数据来生成多个顶点数据结构。所述顶点数据结构被存储在一个或多个返回缓冲器中。在一些实施例中,3D图元1232命令用于经由顶点着色器对3D图元执行顶点操作。为了处理顶点着色器,3D流水线1222将着色器执行线程分派至图形处理器执行单元。
[0128] 在一些实施例中,经由执行1234命令或事件触发3D流水线1222。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的‘前进’(‘go’)或‘拣选’(‘kick’)命令来触发执行。在一个实施例中,使用流水线同步命令来触发命令执行以便通过图形流水线转储清除命令序列。3D流水线将针对3D图元来执行几何处理。一旦完成操作,则对所产生的几何对象进行光栅化,并且像素引擎对所产生的像素进行着色。对于这些操作,还可以包括用于控制像素着色和像素后端操作的附加命令。
[0129] 在一些实施例中,当执行媒体操作时,图形处理器命令序列1210跟随在媒体流水线1224路径之后。一般地,针对媒体流水线1224进行编程的具体用途和方式取决于待执行的媒体或计算操作。在媒体解码过程中,特定的媒体解码操作可以被卸载到所述媒体流水线。在一些实施例中,还可对媒体流水线进行旁路,并且可使用由一个或多个通用处理核提供的资源来整体地或部分地执行媒体解码。在一个实施例中,媒体流水线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中,所述图形处理器用于使用计算着色器程序来执行SIMD向量运算,所述计算着色器程序与渲染图形图元不是显式地相关的。
[0130] 在一些实施例中,以与3D流水线1222相似的方式对媒体流水线1224进行配置。将一组媒体流水线状态命令1240分派或放置到命令队列中,在媒体对象命令1242之前。在一些实施例中,媒体流水线状态命令1240包括用于配置媒体流水线元件的数据,所述媒体流水线元件将用于处理媒体对象。这包括用于在媒体流水线内配置视频解码和视频编码逻辑的数据,诸如编码或解码格式。在一些实施例中,媒体流水线状态命令1240还支持将一个或多个指针用于包含一批状态设置的“间接”状态元件。
[0131] 在一些实施例中,媒体对象命令1242将指针供应至媒体对象以用于由媒体流水线进行处理。媒体对象包括存储器缓冲器,所述存储器缓冲器包含待处理的视频数据。在一些实施例中,在发布媒体对象命令1242之前,所有的媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对象命令1242被排队,则经由执行1244命令或等效的执行事件(例如,寄存器写入)来触发媒体流水线1224。然后可以通过由3D流水线1222或媒体流水线1224提供的操作对来自媒体流水线1224的输出进行后处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
[0132] 图13展示了根据一些实施例的数据处理系统1300的示例性图形软件架构。在一些实施例中,软件架构包括3D图形应用1310、操作系统1320、以及至少一个处理器1330。在一些实施例中,处理器1330包括图形处理器1332以及一个或多个通用处理器核1334。图形应用1310和操作系统1320各自在数据处理系统的系统存储器1350中执行。
[0133] 在一些实施例中,3D图形应用1310包含一个或多个着色器程序,所述一个或多个着色器程序包括着色器指令1312。着色器语言指令可以采用高级着色器语言,诸如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。所述应用还包括可执行指令1314,所述可执行指令采用适合用于由通用处理器核1334执行的机器语言。所述应用还包括由顶点数据限定的图形对象1316。
[0134] 在一些实施例中,操作系统1320是来自微软公司的 操作系统、专用UNIX式操作系统、或使用Linux内核变体的开源UNIX式操作系统。当Direct3D API正在使用时,操作系统1320使用前端着色器编译器1324以将HLSL中的任何着色器指令
1312编译成较低级的着色器语言。所述编译可以是即时(JIT)编译,或者所述应用可执行着色器预编译。在一些实施例中,在对3D图形应用1310进行编译的过程中,将高级着色器编译成低级着色器。
[0135] 在一些实施例中,用户模式图形驱动器1326包含后端着色器编译器1327,所述后端着色器编译器用于将着色器指令1312转换成硬件专用的表示。当在使用OpenGL API时,将采用GLSL高级语言的着色器指令1312传递至用户模式图形驱动器1326以用于编译。在一些实施例中,用户模式图形驱动器1326使用操作系统内核模式功能1328来与内核模式图形驱动器1329进行通信。在一些实施例中,内核模式图形驱动器1329与图形处理器1332进行通信以便分派命令和指令。
[0136] 至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性代码实现,所述机器可读介质表示和/或限定集成电路诸如处理器内的逻辑。例如,机器可读介质可以包括表示处理器内的各个逻辑的指令。当由机器读取时,所述指令可以使机器制造用于执行本文所述的技术的逻辑。这类表示(称为“IP核”)是集成电路的逻辑的可重复使用单元,所述可重复使用单元可以作为对集成电路的结构进行描述的硬件模型而存储在有形、机器可读介质上。可以将硬件模型供应至在制造集成电路的制造机器上加载硬件模型的各消费者或制造设施。可以制造集成电路,从而使得电路执行与本文所述的实施例中的任一实施例相关联地描述的操作。
[0137] 图14是展示了根据实施例的可以用于制造集成电路以执行操作的IP核开发系统1400的框图。IP核开发系统1400可以用于生成可并入到更大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复使用设计。设计设施1430可采用高级编程语言(例如,C/C++)生成对IP核设计的软件仿真1410。软件仿真1410可用于设计、测试并验证IP核的行为。然后可由仿真模型1400来创建或合成寄存器传输级(RTL)设计。RTL设计1415是对硬件寄存器之间的数字信号的流动进行建模的集成电路(包括使用建模的数字信号执行的相关联逻辑)的行为的抽象。除了RTL设计1415之外,还可以创建、设计或合成逻辑电平或晶体管电平处的较低层次设计。由此,初始设计和仿真的具体细节可以发生变化。
[0138] 可以由设计设施将RTL设计1415或等效方案进一步合成为硬件模型1420,所述硬件模型可以采用硬件描述语言(HDL)或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证IP核设计。可使用非易失性存储器1440(例如,硬盘、闪存、或任何非易失性存储介质)来存储IP核设计以用于递送至第3方制造设施1465。可替代地,可以通过有线连接1450或无线连接1460来传输(例如,经由互联网)IP核设计。制造设施1465然后可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可被配置用于执行根据本文所述的至少一个实施例的操作。
[0139] 图15是展示了根据实施例的可以使用一个或多个IP核来制造的示例性芯片上系统集成电路1500的框图。示例性集成电路包括一个或多个应用处理器1505(例如,CPU)、至少一个图形处理器1510,并且另外还可以包括图像处理器1515和/或视频处理器1520,其中的任一项都可以是来自相同或多个不同设计设施的模块化IP核。集成电路包括外围或总线逻辑,包括USB控制器1525、UART控制器1530、SPI/SDIO控制器1535和I2S/I2C控制器1540。另外,集成电路还可以包括显示设备1545,所述显示设备耦合至高清晰度多媒体接口(HDMI)控制器1550和移动行业处理器接口(MIPI)显示界面1555中的一项或多项。可以由闪存子系统1560(包括闪存和闪存控制器)来提供存储。可以经由存储器控制器1565来提供存储器接口以访问SDRAM或SRAM存储器设备。另外,一些集成电路还包括嵌入式安全引擎1570。
[0140] 此外,集成电路1500的处理器中可以包括其他逻辑和电路,包括附加的图形处理器/核、外围接口控制器或通用处理器核。
[0141] 以下示例涉及进一步的实施例。示例1包括一种装置,所述装置包括:存储器,用于存储对应于两级包围体层级(BVH)结构的信息;处理器,耦合到存储器,用于在经实例化的几何结构上构建和遍历两级BVH结构,其中两级BVH结构的顶级的每个叶节点用于存储变换和对几何结构BVH的节点的引用。示例2可选地包括示例1或本文所讨论的任何其他示例的装置,其中处理器用于执行通过以下方式减少经实例化的BVH节点的列表中的空间重叠的操作:将一个或多个经实例化的节点重复替换为它们的子节点的实例化,直到满足某些终止标准。示例3可选地包括示例1-2中任一项或本文所讨论的任何其他示例的装置,其中,处理器用于执行以下操作作为预处理步骤:生成经实例化BVH节点的列表作为给BVH构建过程的输入。示例4可选地包括示例1-3中的任一项或本文所讨论的任何其他示例的装置,其中,处理器用于执行以下操作:拆分现有顶级BVH的叶节点,随后是改善BVH的顶级的步骤。示例5可选地包括示例1-4中的任一项或本文所讨论的任何其他示例的装置,其中,处理器用于在自上而下的BVH构建过程期间用于将所述操作应用于构建基元的列表。示例6可选地包括示例1-5中的任一项或本文所讨论的任何其他示例的装置,其中,处理器用于,当基元的生成改善了在基元生成期间使用的拆分启发法的成本时,将所述操作用于构建基元。示例7可选地包括示例1-6中的任一项或本文所讨论的任何其他示例的装置,其中,处理器用于修改BVH结构以允许BVH结构的顶级中的一个或多个叶节点引用一个或多个BVH子树,其中,顶级BVH的每个叶节点对应于一对实例标识符和子树标识符。示例8可选地包括示例1-7中任一项或本文所讨论的任何其他示例的装置,其中实例标识符对应于变换操作。示例9可选地包括示例1-8中任一项或本文所讨论的任何其他示例的装置,其中对应于变换操作的信息将被高速缓存。示例10可选地包括示例1-9中任一项或本文所讨论的任何其他示例的装置,其中,处理器用于将一个或多个节点添加到BVH结构,其中,一个或多个节点能够直接指向经实例化对象的一个或多个位置,以允许更有效地遍历BVH结构。示例11可选地包括示例1-10中任一项或本文所讨论的任何其他示例的装置,其中,处理器用于将一个或多个节点添加到BVH结构的顶级,其中,一个或多个节点能够直接指向经实例化对象的一个或多个位置。
示例12可选地包括示例1-11中任一项或本文所讨论的任何其他示例的装置,其中,处理器包括以下各项中的一项或多项:图形处理单元(GPU)和处理器核。示例13可选地包括示例1-
12中任一项或本文所讨论的任何其他示例的装置,其中,GPU包括一个或多个图像处理核。
示例14可选地包括示例1-13中任一项或本文所讨论的任何其他示例的装置,其中,处理器包括一个或多个处理器核。示例15可选地包括示例1-14中任一项或本文所讨论的任何其他示例的装置,其中,处理器包括存储器的至少一部分。示例16可选地包括示例1-16中任一项或本文所讨论的任何其他示例的装置,其中,处理器和存储器在单个集成电路管芯上。
[0142] 示例17可选地包括一种方法,该方法包括:将对应于两级包围体层级(BVH)结构的信息存储在存储器中;以及在处理器处,在经实例化的几何结构上构建和遍历两级BVH结构,其中两级BVH结构的顶级的每个叶节点存储变换和对几何结构BVH的节点的引用。示例18可选地包括示例17或本文所讨论的任何其他示例的方法,进一步包括,处理器执行通过以下方式减少经实例化的BVH节点的列表中的空间重叠的操作:将一个或多个经实例化的节点重复替换为它们的子节点的实例化,直到满足某些终止标准。示例19可选地包括示例
17-18中任一项或本文所讨论的任何其他示例的方法,进一步包括,处理器执行以下操作作为预处理步骤:生成经实例化BVH节点的列表作为给BVH构建过程的输入。示例20可选地包括示例17-19中的任何一项或本文所讨论的任何其他示例的方法,进一步包括,处理器执行以下操作:拆分现有顶级BVH的叶节点,随后是改善BVH的顶级的步骤。示例21可选地包括示例17-20中任一项或本文所讨论的任何其他示例的方法,进一步包括,处理器在自上而下的BVH构建过程期间,对被递归地处理的构建基元的列表执行所述操作。示例22可选地包括示例17-21中的任一项或本文所讨论的任何其他示例的方法,进一步包括,当基元的生成提高了在基元生成期间使用的拆分启发法的成本时,处理器执行所述操作以构建基元。
[0143] 示例23可选地包括一种或多种计算机可读介质,其包括一个或多个指令,所述指令当在至少一个处理器上执行时,配置所述至少一个处理器执行一个或多个操作以:将对应于两级包围体层级(BVH)结构的信息存储在存储器中;以及在经实例化的几何结构上构建和遍历两级BVH结构,其中两级BVH结构的顶级的每个叶节点存储变换和对几何结构BVH的节点的引用。示例24可选地包括示例23或本文所讨论的任何其他示例的计算机可读介质,进一步包括一个或多个指令,所述指令当在所述至少一个处理器上执行时,配置所述至少一个处理器执行一个或多个操作,以使得所述处理器通过用其子节点的实例化重复替换一个或多个经实例化节点直到满足某些终止标准,来执行减少经实例化BVH节点列表中的空间重叠的操作。示例25可选地包括示例23-24中任一示例或本文所讨论的任何其他示例的计算机可读介质,进一步包括一个或多个指令,所述指令当在至少一个处理器上执行时,配置所述至少一个处理器执行一个或多个操作,以使处理器执行以下操作作为预处理步骤:生成经实例化BVH节点的列表作为给BVH构建过程的输入。
[0144] 示例26可选地包括一种系统,所述系统包括:存储器,用于存储对应于两级包围体层级(BVH)结构的信息;处理器,耦合到存储器,用于在经实例化的几何结构上构建和遍历两级BVH结构,以及显示设备,用于显示对应于两级BVH结构的一个或多个图像,其中两级BVH结构的顶级的每个叶节点用于存储变换和对几何BVH的节点的引用。示例27可选地包括示例26或本文所讨论的任何其他示例的系统,其中处理器用于通过用其子节点的实例化重复替换一个或多个经实例化的节点直到满足某些终止标准,来执行用于减少经实例化的BVH节点的列表中的空间重叠的操作。示例28可选地包括示例26-27中任一项或本文所讨论的任何其他示例的系统,其中,处理器用于执行以下操作作为预处理步骤:生成经实例化BVH节点的列表作为给BVH构建过程的输入。
[0145] 示例29可选地包括一种设备,其包括用以执行前述任何示例中所阐述的方法的装置。示例30包括机器可读存储设备,其包括机器可读指令,当执行该机器可读指令时,该机器可读指令实现前述任何一示例中所阐述的方法或设备。
[0146] 在各实施例中,本文中(例如,参考图1-15)所讨论的操作可实现为硬件(例如,逻辑电路)、软件、固件、或其组合,其可被作为计算机程序产品提供,例如,包括有形的(例如,非易失性的)机器可读或计算机可读介质,其在其上存储有指令(或软件程序),这些指令(或软件程序)用于对计算机编程以执行本文中所讨论的进程。机器可读介质可包括存储设备,诸如参考图1-15所讨论的那些存储设备。
[0147] 此外,这种计算机可读介质可作为计算机程序产品来下载,其中该程序可经由通信链路(例如,总线、调制解调器或网络连接)作为在载波或其它传播介质中提供的数据信号从远程计算机(例如,服务器)传输到作出请求的计算机(例如,客户端)。
[0148] 在本说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构和/或特性可被包括在至少一个实现中。在本说明书各处出现的短语“在一个实施例中”可以或可不全指代同一实施例。
[0149] 并且,在说明书和权利要求书中,可使用术语“耦合”和“连接”以及它们的派生词。在一些实施例中,可以使用“连接的”来指示两个或更多个元件彼此直接物理和/或电气接触。“耦合”可意味着两个或更多个元件直接物理或电气接触。然而,“耦合”还可意味着两个或更多个元件彼此不直接接触,但仍彼此相互配合和/或相互作用。
[0150] 如此,尽管已经用对结构特征和/或方法动作专用的语言描述了各实施例,但可以理解,所要求保护的主题可以不受限于所描述的特定特征或动作。相反,特定特征和动作作为实现所要求保护的主题的样本形式被公开。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈