一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于射线跟踪的相干性聚集的制作方法

2022-02-24 10:30:41 来源:中国专利 TAG:


1.本发明涉及用于射线跟踪的相干性聚集。


背景技术:

2.射线跟踪系统可以模拟射线(例如射线)与场景相互作用的方式。例如,射线跟踪技术可以用于被配置成从3-d场景描述产生图像的图形渲染系统中。图像可以是具有照片真实感的,或实现其他目标。例如,动画电影可以使用3-d渲染技术来制作。3d场景的描述通常包括定义场景中的几何形状的数据。这种几何结构数据通常根据图元来定义,图元通常是三角形图元,但有时也可以是其他形状,例如其他多边形、线或点。
3.射线跟踪模仿光与场景中的对象的自然交互,并且复杂的渲染特征可以自然地从射线跟踪3-d场景中产生。射线跟踪可以在逐个像素的级别上相对容易地并行化,因为像素通常彼此独立。然而,在诸如环境遮挡、反射、焦散线等的情况下,由于3-d场景中射线的分布的和不同的位置和行进方向,难以将射线跟踪中涉及的处理流水线化。射线跟踪允许渲染逼真的图像,但通常需要高水平的处理能力和大的工作存储器,使得射线跟踪可能难以实施以用于实时渲染图像(例如,用于游戏应用),特别是在可能对硅面积、成本和功耗具有严格限制的设备上,例如在移动装置(例如,智能电话、平板计算机、膝上型计算机等)上。
4.在非常广泛的层面上,射线跟踪涉及:(i)标识场景中的射线与几何形状(例如,图元)之间的相交,及(ii)响应于标识相交而执行某些处理(例如,通过执行着色器程序)以确定所述相交对正被渲染的图像有何贡献。着色器程序的执行可致使将另外的射线发射到场景中。这些另外的射线可以被称为“次级射线”。
5.在标识场景中的射线和几何形状之间的相交时涉及许多处理。在非常简单的方法中,可以针对场景中的每个图元来测试每条射线,然后当已经确定了所有的相交命中时,可以标识出最接近的相交。对于可能具有数百万或数十亿个图元的场景,其中要处理的射线的数量也可能是数百万,这种方法是不实际的。因此,射线跟踪系统通常使用加速结构,所述加速结构以能够减少相交测试所需的工作的方式来表征场景中的几何形状。然而,即使利用现有技术的加速结构,也难以以适合于实时渲染图像(例如,用于游戏应用)的速率执行相交测试,特别是在对硅面积、成本和功耗具有严格限制的设备上,例如在移动装置(例如,智能电话、平板计算机、膝上型计算机等)上。
6.现代射线跟踪架构通常使用基于边界体积分层结构-特别是边界框分层结构的加速结构。将图元一起分组到包围所述图元的边界框中。这些边界框又被分组在一起成为包围它们的较大边界框。相交测试于是变得更容易,因为如果射线未命中边界框,则不需要针对该边界框的任何子节点来测试它。
7.在典型的分层方法中,可以标识两种类型的加速结构:底层加速结构(blas);以及顶层加速结构(tlas)。blas将图元分组在一起,即blas具有作为对象图元的叶节点(通常为三角形,但其他几何形状也是可能的)。blas的顶层是单根节点。例如,blas可用于描述场景中的单个对象。tlas描述高层的场景,从顶层的根节点开始,并终止于最低层的blas。
8.通过遍历分层结构来进行相交测试。如果给定射线“命中”边界框(节点),则需要针对该边界框(节点)的每个子节点来测试该射线。这继续向下通过分层结构,直到射线未命中节点的所有子节点,或者命中了至少一个图元。针对节点测试射线需要从存储器中检索(i)对射线的描述(通常由原点和方向定义)和(ii)对节点的几何形状的描述(边界框坐标或图元的坐标)。


技术实现要素:

9.提供本发明内容是为了以简化的形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
10.提供了一种用于在射线跟踪系统中对射线进行相干性聚集的系统和方法。所述射线跟踪系统使用包括多个节点的分层加速结构,所述多个节点包括上层节点和下层节点。对于其中下层节点之一是上层节点之一的子节点的每个实例,定义实例变换,指定上层节点的第一坐标系与下层节点的所述实例的第二坐标系之间的关系。所述系统提供了实例变换高速缓存,用于在进行相交测试时存储多个这些实例变换。
11.根据一个方面,提供了一种相干性聚集方法。
12.每个下层节点可以是上层节点中的至少一个的后代(子节点、孙节点等)。下层节点可以包括根下层节点。根下层节点可以具有作为上层节点的父节点,其中在分层结构中在所述父节点上面的所有节点(即,其祖先节点,例如祖父节点)都是上层节点。根下层节点可以具有至少一个作为下层节点的子节点,其中在分层结构中在所述子节点下面的所有节点都是下层节点。
13.可以存在至少一个根下层节点,其是两个或更多上层节点的后代(例如孙节点)。即,根下层节点可以由两个(或更多个)不同的上层节点实例化两次(或更多次)。替代地或另外地,可以存在由单个上层节点实例化两次(或更多次)的至少一个根下层节点。
14.第一坐标系可以是全局坐标系(也称为“世界空间”)。第二坐标系可以是与blas相关联的局部坐标系。给定根下层节点的所有后代节点的几何结构信息可以在同一本地坐标系中定义。
15.所述方法还可以包括在提交所选择的射线组以用于相交测试的步骤之前,检索所选择的下层节点的几何结构信息。所述方法还可以包括检索所选择的射线组的射线信息。检索几何结构信息可以包括从存储器检索该几何结构信息。检索射线信息可以包括从射线存储装置检索该射线信息。检索实例变换可包括从存储器检索该实例变换。提交所选择的组可以包括使用实例变换来变换射线信息。
16.可以为根下层节点和根下层节点的所有后代节点定义实例变换。根下层节点及其后代可以形成blas,并且可表示对象的模型。对象通常是刚性对象,使得实例变换同样地应用于对象的所有部分。
17.定义每条射线的射线信息可以包括全局坐标系中的位置和方向。方向是射线的方向。位置可以是射线的原点。射线信息还可以包括射线的最小路径长度和最大路径长度。
18.每个上层节点的几何结构信息可以包括边界体积,诸如边界框,例如,轴对准边界框。边界体积(或边界框)可以是包围所讨论的节点的所有子节点的体积。每个下层节点的
几何结构信息可以包括边界体积(类似于上层节点),或者它可以包括对一个或多个几何图元的描述。图元可以是几何形状,例如三角形。
19.当在实例变换缓存中未找到实例变换时,检索实例变换可以包括:请求(724)所述实例变换;监测所述实例变换是否已被返回;以及在检测到实例变换已被返回之后,继续提交所选择的射线组以用于相交测试。
20.请求实例变换可以包括从存储器请求所述实例变换(可选地通过加速结构高速缓存)。当所请求的实例变换(从存储器,可选地经由加速结构高速缓存)返回时,可以满足所述请求。
21.所述方法可以继续请求第二实例变换,同时等待满足对第一实例变换的请求。请求可以以与它们被请求的顺序不同的顺序被满足(即,实例变换可以被返回)。例如,所述方法可以包括请求第一实例变换,随后请求第二实例变换;监测这些实例变换是否已被返回;检测第二实例变换已被返回;提交与第二实例变换相关联的射线组以用于相交测试;随后检测第一实例变换已被返回;以及提交与第一实例变换相关联的射线组以用于相交测试。
22.还提供了一种相交测试方法,包括上述相干性聚集方法,所述方法还包括针对所述下层节点的所述实例对所选择的射线组的每条射线进行相交测试。
23.还提供了一种射线跟踪方法,包括相交测试方法,并且还包括调用着色器程序来计算射线和(图元)节点之间的相交效果。
24.根据另一方面,提供了一种用于在射线跟踪系统中对射线进行相干性聚集的系统。
25.相干性聚集单元可以被配置成检索被选择进行测试的下层节点的几何结构信息。所述系统还可以包括调度器单元,所述调度器单元被配置成从射线存储装置检索所选择的射线组的射线信息。所述系统可以在固定功能电路系统中实现。
26.所述系统还可以包括实例变换单元,所述实例变换单元被配置成使用实例变换来变换射线信息,并且其中相干性聚集单元被配置成当提交所选择的射线组以用于相交测试时,将射线和相关联的实例变换提交给实例变换单元。
27.如果所述系统还包括调度器单元,则实例变换单元可以是调度器单元的部件。
28.当在实例变换高速缓存中未找到实例变换时,所述相干性聚集单元可被配置成通过以下操作来检索实例变换:请求所述实例变换;监测所述实例变换是否已被返回;以及在检测到实例变换已被返回之后,继续提交所选择的射线组以用于相交测试。
29.相干性聚集单元可被配置成将所选的射线组提交给调度器单元(见下文)以用于相交测试。
30.所述系统还可以包括一个或多个测试器单元,其被配置成执行相交测试。
31.加速结构中的节点可以包括图元节点和边界框节点。测试器单元可以包括:一个或多个框测试器单元,用于对边界框节点进行相交测试;以及一个或多个图元测试器单元,用于对图元节点进行相交测试。
32.实例转换高速缓存可包括内容可寻址存储器(以下称为cam)和随机存取存储器(以下称为ram)。
33.cam可以是相干性聚集单元的部件。所述系统还可以包括调度器单元,其中ram和可选的实例变换单元是调度器单元的部件。
34.cam可以被配置成针对每个实例变换存储参考计数器,该参考计数器记录当前正在被测试的引用该实例变换的射线组的数目。
35.相干性聚集单元可以被配置成当提交使用相应实例变换的节点(和相关联的射线组)以增大用于相交测试时使参考计数器。它可以被配置成当对使用实例变换的节点(和射线组)完成相交测试时减小参考计数器。
36.cam可以被配置成针对实例变换高速缓存中的每个实例变换存储有效性标志,该有效性标志指示该实例变换当前是否有效。
37.射线存储装置和存储器可以在单独的硬件单元中提供。射线存储装置可以在相干性聚集单元的本地。存储器可以在相干性聚集单元的外部。(它也可以在调度器单元和一个或多个测试器单元的外部)加速结构高速缓存可以充当相干性聚集单元和存储器之间的中介。
38.相干性聚集单元可以被配置成当在实例变换高速缓存中存储实例变换时,将实例变换存储在其有效性标志指示其当前无效的索引位置中。如果有效性标志指示所有索引位置当前都有效,则相干性聚集单元可以被配置成将实例变换存储在索引位置,对于该索引位置,引用计数器指示实例变换不被当前正在测试的任何射线组引用。
39.还提供一种图形处理系统,所述处理系统被配置成执行如上概述的方法。
40.还提供了一种图形处理系统,包括如上概述的用于相干性聚集的系统。
41.相干性聚集系统、射线跟踪系统或图形处理系统可以用集成电路上的硬件来体现。
42.根据另一方面,提供了一种使用集成电路制造系统制造如上概述的系统或图形处理系统的方法。
43.还提供了一种使用集成电路制造系统制造如上所述的相干性聚集系统、射线跟踪系统或图形处理系统的方法,所述方法包括:使用布局处理系统处理所述相干性聚集系统、射线跟踪系统或图形处理系统的计算机可读描述,以生成体现所述相干性聚集系统、射线跟踪系统或图形处理系统的集成电路的电路布局描述;以及使用集成电路生成系统,根据电路布局描述来制造所述相干性聚集系统、射线跟踪系统或图形处理系统。
44.还提供了一种计算机可读代码,该计算机可读代码被配置成在代码运行时使如上概述的方法得以执行;以及在上面对所述计算机可读代码进行编码的计算机可读存储介质。存储介质可以是非暂时性计算机可读存储介质。计算机可读代码当在计算机系统上执行时可以使计算机系统执行本文中描述的任何方法。
45.还提供了一种计算机可读存储介质,其上编码有集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中被处理时,配置所述集成电路制造系统以制造如上概述的图形处理系统。
46.还提供了一种非暂时性计算机可读存储介质,其上存储有如上所述的相干性聚集系统、射线跟踪系统或图形处理系统的计算机可读描述,当在集成电路制造系统中处理时,所述计算机可读描述使所述集成电路制造系统制造体现所述相干性聚集系统、射线跟踪系统或图形处理系统的集成电路。
47.还提供了一种非暂时性计算机可读存储介质,其上存储有如上概述的相干性聚集系统、射线跟踪系统或图形处理系统的计算机可读描述,当在集成电路制造系统中处理时,
所述计算机可读描述使所述集成电路制造系统:使用布局处理系统处理所述相干性聚集系统、射线跟踪系统或图形处理系统的计算机可读描述,以生成体现所述相干性聚集系统、射线跟踪系统或图形处理系统的集成电路的电路布局描述;以及使用集成电路生成系统,根据电路布局描述来制造所述相干性聚集系统、射线跟踪系统或图形处理系统。
48.还提供了一种集成电路制造系统,所述集成电路制造系统被配置成制造如上概述的图形处理系统。
49.所述集成电路制造系统可以包括:非暂时性计算机可读存储介质,其上存储有如上概述的相干性聚集系统、射线跟踪系统或图形处理系统的计算机可读描述;布局处理系统,所述布局处理系统被配置成所述处理计算机可读描述,以生成体现所述相干性聚集系统、射线跟踪系统或图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,所述集成电路生成系统被配置成根据电路布局描述来制造所述相干性聚集系统、射线跟踪系统或图形处理系统。所述布局处理系统可被配置成确定从集成电路描述导出的电路的逻辑部件的位置信息,以生成体现所述相干性聚集系统、射线跟踪系统或图形处理系统的集成电路的电路布局描述。
50.如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
51.现在将参考附图详细描述示例,在附图中:
52.图1a示出了根据边界体积结构划分的场景;
53.图1b表示用于图1a中所示的边界体积结构的分层加速结构;
54.图2示出了根据一个示例的包括顶层节点和底层节点的分层加速结构;
55.图3是根据一个示例的用于对射线进行相干性聚集的系统的简化框图;
56.图4更详细地示出了图3的系统;
57.图5是可由图3的系统实现的相干性聚集方法的流程图;
58.图6是根据一个示例的更详细的处理流程图,其示出了用于检索几何结构信息和实例变换的程序;
59.图7a和图7b示出了根据一个示例的示出实例变换的高速缓存的过程流程图;
60.图8示出了根据一个示例的存储在实例变换高速缓存中的数据结构;
61.图9示出其中实现图形处理系统的计算机系统;并且
62.图10示出用于生成体现图形处理系统的集成电路制造系统。
63.附图示出了各种示例。技术人员将理解,附图中所示的元件边界(例如,框、框的组,或其它形状)表示边界的一个示例。在一些示例中,情况可能是一个元素可以被设计为多个元素,或者多个元素可以被设计为一个元素。在适当的情况下,贯穿各附图使用共同附图标记来指示相似特征。
具体实施方式
64.通过举例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施例,并且对所公开的实施例的各种修改对于所属领域的技
术人员而言将是显而易见的。
65.现在仅通过示例的方式来描述实施例。
66.在典型的硬件架构中,存储器访问是相对昂贵的操作(在时间和/或能量消耗方面)。希望最小化从存储器读取数据的请求中的任何冗余。因此,将需要针对分层结构的相同部分测试的射线聚集和分组在一起是有益的。这在此被称为相干性聚集。它可以允许几何结构信息被读取一次,并且针对多个射线进行测试。这也便于并行实现,例如,使用单指令多数据(simd)模型,由此单独的硬件单元针对相同的几何结构信息并行处理(同一组的)不同射线。本文公开的示例可以使用相干性聚集来促进用于射线跟踪的更有效的相交测试。特别地,期望提高blas节点的相交测试的效率。
67.tlas在世界空间中定义,即,场景的全局坐标系。全局坐标系是第一坐标系的示例。射线也在世界空间中定义。
68.因为对象可出现在场景中的多个不同位置和取向,所以表示该对象的blas可被多次实例化。例如,描述汽车车轮的blas可以被实例化四次,每个车轮一次。例如,该blas可具有1,000至10,000个节点的分层结构。车轮模型在每种情况下都是相同的,但是每个车轮位于场景中的不同位置,并且前轮可以与后轮不同地定向。
69.尽管这可以通过在存储器中创建“车轮”blas的四个单独副本(其中每个车轮的几何结构信息定义在世界空间中)来处理,但是这导致存储器的使用相对低效。相反,tlas可以多次引用(实例)该模型的单个副本(blas)。采用后一种方法,每个blas在“实例空间
”‑
所描述对象的局部坐标系中定义其几何结构信息。局部坐标系是第二坐标系的示例。在汽车示例中,在局部坐标系(实例空间)内,每个车轮是相同的。可以以任何方便的方式定义局部坐标系的原点和轴。例如,局部坐标系的原点可以被设定为对象的质心,或者对象的末端。局部坐标系中的轴的取向可以基于对象的一个或多个主轴来定义,或者它们可以基本上任意地选择。该对象在blas内分层描述。例如,描述座椅的blas可包括描述座椅底部、座椅靠背和支腿的节点。给定blas中的所有节点使用相同的局部坐标系。
[0070]“世界到实例变换”(或简称为“实例变换”)定义blas的每一实例在所述场景内的位置和取向。通过这种方法,blas的几何结构信息被存储一次(在实例空间中),并且为每个实例存储实例变换,即,对blas的每个单独引用。实例变换将blas的局部(实例空间)几何结构信息与世界空间相关联,用于blas的每个实例。这具有显著降低几何结构信息的存储要求的潜力。
[0071]
例如,描述汽车的tlas可能对“车轮”blas(以及许多其他blas,以表示汽车的其他部分)进行四次引用。边界框和描述车轮的图元的几何结构信息被存储一次。在tlas内,“车轮”blas的每个实例(即,参考实例)blas与不同的实例变换相关联,该实例变换在世界空间中定位和定向该特定车轮。
[0072]
为了针对特定blas实例的几何形状测试射线,需要将射线变换到该实例的实例空间中。(可选地,几何结构信息可以被转换为世界空间)实例变换应用于blas中的所有节点;因此,如果射线击中blas内的父节点,则需要再次应用相同的实例变换以针对该父节点的子节点测试该射线。通常,变换可以由控制软件应用程序以实例到世界变换的形式提供。这可以由射线跟踪系统反演以获得世界到实例变换。在射线被变换到实例空间的情况下,需要重复地应用世界到实例变换(即,对于每个相交测试);因此,以这种形式存储变换是有意
义的。相反,如果几何结构信息要被变换到世界空间以便执行相交测试,则存储实例到世界的变换是有意义的。
[0073]
发明人已经认识到,相干性聚集算法能够高效地处理blas实例将是合乎需要的。不是根据将要针对其进行测试的blas节点来聚集射线,而是应当根据需要针对其进行测试的blas节点的特定实例来聚集射线。换句话说,射线相干性聚集应当是实例感知的。通过根据每个blas节点的每个特定实例聚集射线,系统可安排共享相同变换以及相同blas节点的射线组一起被调度用于测试。因此,需要最多一个存储器请求来检索用于对给定射线组进行相交测试的变换。根据示例,这通过使用实例变换高速缓存来进一步促进。当第一次需要实例变换时,将其加载到实例变换高速缓存中。下一次相同的实例变换被用于相交测试时,可以预期,可以从实例变换高速缓存中检索该实例变换,而不需要从外部存储器中加载该实例变换。这减少了存储器访问开销。
[0074]
当针对同一节点测试其他射线时,可能发生实例变换的稍后重用。或者它可以在针对分层结构内的子节点(和孙节点等)测试给定射线时发生。如上所述,相同的实例变换适用于blas的给定实例中的所有节点,并且可能存在数千个这样的节点;因此,在遍历单个blas实例的分层结构时,实例变换可被重用多次。
[0075]
在详细解释相干性聚集系统的示例之前,解释所使用的加速结构的示例将是有用的。图1a和图1b涉及具有边界体积结构的分层结构。图1a示出了包括三个对象402、404和406的场景400。图1b示出了分层加速结构的节点,其中根节点410表示整个场景400。图1a所示场景中的区域具有与图1b所示分层结构中的相应节点的参考相匹配的参考,但是图1a中的区域的参考包括附加的撇号(')。分析场景中的对象以便构建分层结构,并且在节点410内定义两个节点4121和4122,这两个节点界定包含对象的区域。在该示例中,边界体积分层结构中的节点表示轴对准边界框(aabb),但是在其他示例中,节点可以表示采取其他形式的区域,例如球形或其他简单形状。节点4121表示覆盖对象404和406的框4121’
。节点4122表示覆盖对象402的框4122’
。节点4121被细分为两个节点4141和4142,它们表示分别界定对象404和406的aabb(4141'和4142')。用于确定用于构建分层结构的节点的aabb的方法在本领域中是已知的,并且可以以自顶向下的方式(例如,在根节点处开始并且沿分层结构向下工作)执行,或者可以以自底向上的方式(例如,在叶节点处开始并且沿分层结构向上工作)执行。在图1a和图1b所示的示例中,对象不跨越多于一个叶节点。
[0076]
分层结构的叶节点是对象图元。在该示例中的对象(圆形404、三角形406和正方形402)是简单的几何形状;因此,可以使用单个图元来描述它们中的每一个。更复杂的对象可以由多个图元来描述。如本领域技术人员所公知的,三角形图元在图形应用中是常见的。然而,本公开的范围不限于三角形图元。从图1a和图1b中可以清楚地看出,可以在表示边界框的节点(“框”节点)和表示对象图元的(叶)节点(“图元”节点)之间进行区分。
[0077]
在此上下文中,blas由原始叶节点和描述直到根节点的分层结构所需的框构成。blas节点在此也称为“下层节点”,并且blas的根节点称为“根下层节点”。tlas引用至少一个blas,并且通常将多个blas分层结构聚集在一起以供遍历。blas可在tlas结构中通过不同的实例变换被多次引用。这允许分层构造器写入一次blas,但在不同角度/位置引用它多次而不重写它,从而节省存储器带宽和开销。tlas节点在这里也被称为“上层节点”。
[0078]
图2中示出了使用blas和tlas结构的示例分层结构。根节点(tlas根框)210具有两
个子节点,即tlas框2121和2122。tlas框2121具有两个子节点,即tlas实例格式块2141和2142。每个实例格式块定义不同的世界到实例变换。blas根框2161被引用两次,每个tlas实例格式块2141和2142引用一次。也就是说,存在blas根框2161的两个“实例”。blas根框2161具有两个子节点,即blas框2181和2182。blas框2181具有作为图元节点的子节点,即三角形201和三角形202。类似地,框2182具有作为三角形203和三角形205的图元子节点。返回到根节点210,其另一子节点tlas框2122具有作为实例格式块2143的单个子节点。该实例格式块2143引用blas根框2162。因此,blas根框2162仅被实例化一次。blas根框2162具有两个子节点节点-blas框2183和2184。这些具有作为程序图元206和207的相应子节点。程序图元206和207具有程序定义的形状,这允许更大的灵活性。例如,可以使用程序图元,其中地形或波模型可以被数学地表示并被直接评估,从而避免生成大量几何结构数据的需要。因此,将理解,节点的几何结构信息可以包括边界体积,或者它可以包括一个或多个图元的描述。
[0079]
图3示出了根据一个示例的用于在射线跟踪系统中对射线进行相干性聚集的系统100的框图。将理解,该框图是射线跟踪系统的一部分,其其他部件在本公开的范围之外。系统100包括射线存储装置(rs)110;以及外部存储器112;加速结构高速缓存(asc)114;相干性聚集单元(cgu)120;以及辑框/图元调度器单元(bps)130。在该示例中,射线存储装置110在射线跟踪系统本地,并且存储器112在射线跟踪系统的外部。例如,存储器可以在与射线跟踪系统分离的半导体管芯上。射线存储装置110可以与射线跟踪系统在同一半导体管芯上,并且特别地,与图3中所示的其余部件在同一半导体管芯上。这使得更快和更容易地检索射线信息。bps 130包括bps框单元131,用于调度框节点的相交测试;以及bps图元单元135,用于调度图元节点的相交测试。bps图元单元135被配置成与一个或多个图元测试单元(ptu)145通信,用于图元节点的相交测试。bps框单元131被配置成与一个或多个框测试单元(btu)141通信,用于框节点相交测试。bps 130被配置成与射线存储装置110通信,以检索射线信息。cgu 120被配置成与asc 114通信,以经由asc从外部存储器112检索几何结构信息和实例变换。asc 114被配置成与外部存储器112进行通信。通常,几何结构信息和实例变换将包括太大的数据量,以至于不能将它们整体存储在射线跟踪系统内。cgu 120提供有初始射线id,其标识要被测试的射线。这些射线的射线信息被存储在射线存储装置110中。cgu 120执行相干性聚集-聚集射线,以便针对相应节点(具体地,针对blas节点的给定实例)一起测试。任何合适的数据结构可以用于将聚集的射线与它们各自的节点相关联。在该示例中,射线被聚集成分组。分组包含要针对同一节点测试的射线。此外,还可以维护与特定节点相关联的分组的列表。分组可以包含8条射线,并且是可以被调度用于测试的最小单元。在其他示例中,可以使用其他分组大小(例如,1、4、6或16条射线)。bps 130被配置成与cgu 120通信,以便bps调度对聚集的射线分组的测试。
[0080]
图4是图3的框图的更详细版本。具体地,图4示出了实例变换高速缓存的元件。实例转换高速缓存包括内容可寻址存储器(cam)和随机存取存储器(ram)。在本示例中,cam被包括在cgu 120中。其以两个部分提供:实例cam 122及实例cam 126。ram也以两个部分提供:实例ram 132被包括在bps框单元131中,而实例ram 136被包括在bps图元单元135中。实例cam 122和实例ram 132形成用于框节点的实例变换高速缓存。实例cam 126和实例ram 136形成用于图元节点的实例变换高速缓存。bps框单元131还包括实例变换单元(itu)133和几何结构ram 134。类似地,bps图元单元135还包括itu 137和几何结构ram 138。每个实
例ram 132、136包含例如当前用于相交测试的变换的变换系数。在相交测试期间,将在分层结构中在框下面的图元之前测试框;因此,单独地高速缓存用于框和图元的实例变换(如在此示例中所做的)可以是有益的。给定的实例变换对于框测试将比它对于图元测试更早地需要。同样,在图元测试已完成实例变换之前,框测试将完成实例变换。每一实例cam 122、126用作相应实例ram 132、136的索引。每个itu 133、137从射线存储装置110接收射线信息,并从相应的实例ram 132、136接收实例变换系数。itu使用变换系数将射线从世界空间变换到实例空间。对于框节点,itu 133使用来自实例ram 132的变换系数来将从射线存储装置110接收的射线变换到实例空间。从itu 133到btu 141提供变换射线。btu 141还从几何结构ram 134接收被相交测试的框节点的几何结构信息。对于图元节点,itu 137使用来自实例ram 136的变换系数来将从射线存储装置110接收的射线变换到实例空间。经变换的射线由itu 137提供给ptu 145。ptu 145还从几何结构ram 138接收被相交测试的图元节点的几何结构信息。每个几何结构ram 134、138中的几何结构信息由几何结构id索引。
[0081]
在本示例中,图4中所示的每个单元以硬件中的固定功能逻辑来实现。这允许每个单元在进行的基础上执行其功能,而同时其他单元也继续执行其功能。这允许并行的流水线实现。所述系统被设计成管理通过各个单元的数据流,以便最小化其中任何单元工作过载或数据缺乏以进行处理的情况。
[0082]
图5是图示了根据一个示例的由图3和图4的系统执行的方法的流程图。定义了多条射线,每条射线具有与其相关联的射线信息,该射线信息包括在世界空间中定义的射线原点和射线方向。还定义了分层加速结构,包括多个上层(tlas)节点和多个下层(blas)节点。每个节点具有与其相关联的几何结构信息。如上所述,在tlas节点的世界空间中以及在blas节点的实例空间中定义该几何结构信息。对于blas节点之一是tlas节点之一的子节点的每个实例,定义了世界到实例的变换。
[0083]
在步骤710中,系统将射线信息存储在(内部)射线存储装置110中。在步骤712中,系统将几何结构信息和实例变换存储在外部存储器112中。在步骤714中,cgu 120执行多条射线的相干性聚集,其中每条射线需要针对分层结构的相应节点进行交点测试。相干性聚集可通过维护射线列表(例如,通过在cgu中形成累积射线分组的列表)来执行,当射线穿过分层加速结构时,需要针对相应节点来测试这些射线列表。可以以任何顺序遍历该分层结构。各种遍历策略在本领域中是已知的,并且在本公开的范围之外。
[0084]
在步骤716中,cgu 120选择一个或多个累积射线分组以形成用于测试的射线组。通常,cgu 120将选择节点,然后将从与该节点相关联的一个或多个射线分组形成射线组。在一些情况下,cgu将从与所选节点相关联的所有分组(即,整个分组列表)形成射线组。通常,tlas节点和blas节点的实例将随时间选择用于测试。然而,为了本示例的目的,我们将假设选择了blas节点的实例。根据该示例,当节点被从cgu 120“逐出”时,选择该节点用于相交测试。节点可以在以下条件中的任何一个条件下被逐出:
[0085]
·
当为节点聚集的射线的数目超过第一阈值(例如,列表中与节点相关联的分组的数目超过阈值)时;
[0086]
·
当cgu维护的所有分组中的射线的总数目超过第二阈值(以避免用完cgu中用于存储列表的存储器)时;
[0087]
·
当测试器单元(btu 141和/或ptu 145)空闲时,指示它们具有空闲容量来执行
相交测试(以避免计算资源的利用不足)。
[0088]
在步骤718中,cgu 120检索已被选择用于测试的blas节点的几何结构信息。这涉及cgu 120向asc 114请求几何结构信息。asc 114是射线跟踪系统的本地存储器,其用于对原本需要从外部存储器112读取的几何结构信息和实例变换进行高速缓存。当cgu 120请求几何结构信息时,asc 114检查该几何结构信息是否已经存在于高速缓存中。如果存在,则asc将其提供给cgu 120,而不需要从外部存储器112读取它。如果不存在,则asc 114在将其提供给cgu 120之前从外部存储器112读取它。这样,asc 114充当cgu 120和外部存储器112之间的中介。其目的是通过减少从外部存储器重复读取的次数来减少所需的存储器带宽。
[0089]
在步骤720中,cgu 120在实例变换缓存中搜索与当前选择的blas节点实例关联的实例变换。这将在下文更详细地描述。然而,简言之,cgu 120在相关实例cam 122或126中搜索所需实例变换的地址。如果节点是框节点,则cgu在实例cam 122中搜索;如果节点是图元节点,则cgu在实例cam 126中搜索。如果实例变换已经存储在实例变换高速缓存中,则实例cam 122或126返回索引,该索引指示实例变换系数在相应实例ram 132或136中的位置。如果实例变换存在于高速缓存中(见步骤722),则cgu进行到提交所选择的射线组以进行相交测试(在步骤726中)。如果所需的实例变换不存在于高速缓存中,则在步骤724中cgu 120检索实例变换,并且在步骤725中将其加载到高速缓存中。在检索步骤724中,cgu 120通过向asc 114请求实例变换来检索该实例变换。asc 114以与处理几何结构信息请求(如上所述)基本相同的方式处理该请求。如果实例变换已经存在于asc 114中,则将其提供给cgu 120,而不需要从外部存储器112读取任何内容。如果实例变换不存在于asc 114中,则asc在将其提供给cgu 120之前从外部存储器112读取它。在加载步骤725中,cgu 120将所检索的实例变换加载到实例变换高速缓存中。特别地,它将实例变换的存储器地址存储在相关实例cam 122或126中,并且它将实例变换的变换系数存储在相应的实例ram 132或136中。(如果所讨论的节点是框节点,则系数被存储在实例ram 132中;如果节点是图元节点,则系数被存储在实例ram 136中。)在本实例中,首先遍历blas中的方框;因此,给定的变换将首先被存储在实例ram 132中。随后,当遍历第一叶(图元)节点时,将从asc 114检索相同的变换并将其加载到实例ram 136中,以准备进行图元相交测试。
[0090]
在步骤726中,cgu 120提交所选择的射线组以进行相交测试。具体地,cgu 120将射线组提交到bps 130。为此,cgu 120将包括选定射线组和选定blas节点的几何结构信息的一个或多个分组传递到bps 130。根据所讨论的节点是框节点还是图元节点,几何结构信息被存储在bps框单元131的几何结构ram 134或bps图元单元135的几何结构ram 138中。在步骤729中,bps 130从射线存储装置110请求所选择的一个或多个射线分组的射线信息。bps 130调度对测试器单元(btu 141和ptu 145)的相交测试。在步骤730中,由测试器单元(btu 141和ptu 145)执行相交测试。
[0091]
如上所述,在提交射线分组用于测试时,cgu 120已经确保所需的实例变换系数存在于相关实例ram 132/136中。这意味着所需的系数在本地可用,具有最小的等待时间,并且没有在外部存储器读取操作中涉及的功耗和延迟。这可以帮助加速针对节点调度和测试射线分组的过程。它还可以帮助避免为了多次读取相同的变换系数而对外部存储器的重复的、冗余的访问。几何结构信息也在相关的几何结构ram 134、138中准备好。注意,在步骤720(搜索实例变换高速缓存)之前执行步骤718(请求几何结构信息)不是必需的。在一些示
例中,首先搜索实例变换高速缓存(步骤720)。如果实例变换在高速缓存中,则仅检索几何结构信息;同时,如果实例变换不在高速缓存中,则检索几何结构信息和实例变换两者。
[0092]
原则上,可以提供几何结构cam来索引几何结构ram,类似于使用实例cam来索引实例ram。然而,这在本示例中没有实现。这是因为,在典型场景中,存在比实例变换多得多的节点—每个blas根节点存在一个实例变换,但在该根节点下方通常将存在大量节点。给定大量的节点,给定节点的几何结构信息在下次被请求时仍然在几何结构ram中的可能性相对较低。因此,在(相对小的)几何结构ram中高速缓存几何结构信息的益处是有限的。asc已经提供了对几何结构数据的相对快速的访问。
[0093]
bps单元调度相交测试。为此,itu 133、137获取由射线存储装置110提供的射线信息,并使用从实例ram 132、136读取的变换系数来变换射线。为了执行相交测试(步骤730),测试器单元(btu 141和ptu 145)取得由itu 133、137提供的变换射线,并取得从几何结构ram 134、138读取的节点几何结构,并测试变换射线是否与相关节点相交。因此,相交测试的方法对于本领域技术人员来说是已知的,并且在本公开的范围之外。
[0094]
相交测试的结果被返回到bps 130和cgu 120。对于分组中的每条射线,结果指示该射线是否与所讨论的blas节点相交。根据结果,将执行进一步的处理。如果blas节点是框节点,并且射线与其相交,则cgu将射线添加到正由cgu为相交的框节点的子节点维护的射线分组。这将意味着射线最终针对这些子节点被测试(当相关分组被选择用于测试时,例如当子节点被从cgu 120逐出时)。或者,如果blas节点是图元节点,并且射线与其相交,则记录该事实(例如,在射线存储装置中),并且系统继续遍历分层结构。最后,根据需要,可以调用着色器程序(在步骤740中),以确定相交对射线的影响,例如,确定射线是否被对象图元反射、折射、吸收等。例如,在反射或折射的情况下,可以发射新的射线。在这种情况下,该新射线的射线信息将被写入射线存储装置110。
[0095]
系统的操作以这种方式进行,直到针对分层结构中的所有必要节点测试了所有射线。
[0096]
图6是解释根据一个示例的如何检索几何结构信息和实例变换的更详细的过程流程图。
[0097]
cgu跟踪所有节点的当前状态,对于这些节点,已经从asc 114请求了几何结构信息和(如果必要的话)实例变换。asc 114可以乱序返回数据。即,asc 114可以以与请求数据的顺序不同的顺序返回数据。这可能发生,特别是因为一些数据已经存在于asc中,因此可以被快速返回,而其他数据当前没有存储在asc中,并且在它可以被返回之前必须从外部存储器112中检索。该其他数据可能返回得更慢。
[0098]
与射线分组(直接或间接)相关联的信息包括实例地址,其是实例变换的存储器地址。在本示例中,实例地址被存储用于每个节点,并且由此间接地与关联于该节点的一个或多个分组相关联。或者,可以为每个分组显式地存储实例地址,即,直接与分组相关联。请求器模块306检查实例cam 122/126以确定实例地址是否与变换id相关联,换句话说,确定实例变换是否已经存储在实例变换高速缓存中。如果实例地址不与变换id相关联(即,实例变换不存在于高速缓存中),则请求器模块306分配新的变换id,并用实例地址更新该变换id的cam条目。(如果没有变换id可自由使用,则系统必须在该点停转并等待直到一个变换id可用为止)请求器模块306然后向asc 114请求实例变换系数。它在“请求的变换列表”312中
设置与变换id相关联的标志位。所请求的变换列表312中的标志位指示已经从asc 114请求了变换系数,但是还没有返回。cgu 120监测所请求的变换列表312以检测何时已经返回实例变换系数。这可以通过周期性地检查所请求的变换列表312来完成。
[0099]
在稍后的某个时间,asc 114返回所请求的变换系数,该变换系数由响应模块316接收。响应模块316将变换系数存储在实例ram 132/136中。响应模块316还清除所请求的变换列表312的相关标志位。这指示变换系数已被返回,并且现在可以进行该节点和一个或多个射线分组的相交测试(以及可能已经被排队的也取决于该实例变换的任何其他节点)。请求器模块306还从asc 114请求几何结构信息。这由asc 114返回给响应模块316,然后由响应模块316写入几何结构ram 134/138。另一过程(未示出)跟踪何时几何结构信息已被返回。
[0100]
当所需的实例变换和几何结构数据可用时,cgu 120将分组释放到bps单元130。即,响应于检测到asc 114已经返回了实例变换和几何结构信息,cgu继续将一个或多个分组(以及相关联的节点)提交到bps 130以进行测试。如上所述,这不需要以与请求数据相同的顺序发生。通过跟踪数据的可用性,并且当数据可用时释放分组(无论其被请求的顺序如何),系统有助于最大化cgu 130和测试器单元141、145的利用。
[0101]
图7a和图7b的处理流程图以及图8中所示的数据结构示出了实例变换的高速缓存。在步骤606中,读取节点地址和实例地址。在步骤608中,请求器模块306检查实例地址是否是特殊实例地址十六进制零地址,在该示例中“h0”用作特殊地址。特殊实例地址“h0”指示该节点是没有相关联的实例数据的tlas节点;因此,不需要查询实例cam 122/126。在这种情况下,过程进行到步骤610,在步骤612中分配相应的特殊变换id并仅向asc 114请求几何结构数据。在该示例中,十六进制零“h0”被用作由所有tlas节点使用的特殊变换id。变换id h0的实例cam入口总是包含实例地址h0,并且实例ram 132/136中的地址h0处的变换系数总是单位(或空)矩阵的那些。如果在步骤608中确定实例地址不是“h0”,则方法进行到步骤614,其中请求器模块306使用实例地址检查实例cam 122/126。如果存在高速缓存命中-即,如果实例地址存在于实例cam(根据节点类型的实例cam 122或实例cam 126)中-则实例cam 122或126将返回变换id,该变换id指示实例ram 132/136中存储变换系数的槽。方法进行到步骤616。这里,增大与实例cam 122/126返回的变换id关联的称为“inflightcount”的引用计数器。该参考计数器记录当前“飞行中”(即,当前正在进行相交测试)的节点的数量,并且依赖于该实例变换。从步骤616,所述方法进行到步骤612,其中仅向asc 114请求几何结构数据。
[0102]
如果在步骤614中确定实例地址不存在于实例cam 122/126中(即,如果存在高速缓存未命中),则所述方法进行到步骤618。这里,由请求器模块306分配新的变换id(如果变换id可用,如果不可用,则该节点在该点停止)。接下来,在步骤620中,请求器模块306将实例变换的实例地址写入实例cam 122/126,在对应于新分配的变换id的槽中。增大(在步骤621中)用于该变换id的引用计数器“inflightcount”,指示当前正被测试的一个节点(以及相关联的一个或多个射线分组)正在使用该实例变换。最后,在步骤622中,请求器模块306从asc 114请求几何结构数据和实例变换系数。
[0103]
图8展示在本实例中的实例cam 122、126和实例ram 132、136中使用的数据结构。每个实例cam具有数量为s的变换id的槽801
0-801
s-1
,并且槽由变换id索引。在两个相应的
cam 122、126中使用变换id的单独范围。每个槽存储一个实例地址和两个附加数据段。第一个是与实例变换相关联的引用计数器“inflightcount”,并且第二个是“有效”标志位,指示该变换id当前是否有效。
[0104]
当首先初始化实例cam 122、126时,将变换id=0的“有效”位设定为1,将其实例地址设定为“h0”,并且将其“inflightcount”设定为0。所有其他“有效”位被设定为0,指示相应的变换id是无效的和未使用的。当实例cam 122、126填充有实例地址时,相应“有效”标志位被设定为1,从而指示相应变换是有效的。通过维持标志位以及参考计数器,系统能够在实例变换高速缓存中的(迄今为止)为空的槽(valid=0)与包含数据(valid=1)但数据当前未被使用的槽(计数器=0)之间进行区分。这允许系统优先分配对应于尚未被使用的槽的变换id。只有当所有槽都“有效”时,系统才会采取重新分配有效但当前未被飞行中的节点使用的变换id。这有助于将实例变换尽可能长地保持在实例变换高速缓存中,从而增加高速缓存命中的可能性,并且因此减少对asc 114和/或外部存储器112的不必要的访问。
[0105]
实例ram 132、136具有与相应实例cam 122、126相同数量的槽802
0-802
s-1
,并且它们类似地由变换id索引。每个槽存储与相应变换id相关联的世界到实例变换的变换系数。cam中的条目以与ram中的条目相同的顺序组织。因此,例如,如果特定实例变换的地址被存储在cam中的第5个条目(变换id=4)中,则该实例变换的变换系数被存储在ram中的第5个条目(变换id=4)中。
[0106]
在此上下文中,将高速缓存分离成cam及ram有助于使其比常规高速缓存更有效。利用传统的关联高速缓存,数据(即,变换系数)将被存储在高速缓存本身中,与实例地址相关联。在高速缓存命中的情况下,在用该地址查询高速缓存时,该数据将由该高速缓存返回,并被存储在测试器单元将从其访问该数据的其他存储器中。
[0107]
通过使用cam ram布置,当测试器正在执行相交测试时,不需要查询高速缓存。系统经由参考计数器保证测试器所需的所有变换数据存在于实例变换ram中。bps简单地具有索引(变换id),并且它可以通过直接访问ram来调度测试,而无需查询cam,并且不需要高速缓存和测试器之间的附加存储。
[0108]
图7b示出了图7a的过程流程图的剩余部分。当在步骤630中解除分配几何结构id时,这指示已经为节点完成了相交测试。因此,用于相应实例变换(由变换id标识)的引用计数器(“inflightcount”)减一。这指示少一个节点(和相关联的射线分组)当前正在使用该实例变换。在步骤632中,请求器模块306检查用于该变换id的减小后的参考计数器现在是否等于零。如果是,则这指示没有飞行中的节点正在使用该实例变换。因此,如果请求器模块306需要分配新的变换id并且不存在空闲的变换id,则可以重新分配变换id(在步骤634中)。另一方面,如果在步骤632中确定减小后的参考计数器不等于零,则这指示变换id仍然在使用中(参见步骤636),并且还不能被重新分配。
[0109]
当没有空闲的变换id时,请求器模块306必须等待分配变换id,直到一个变得可用(即,直到参考计数器之一已经减小到零,因此没有飞行中的节点使用相应的变换id)。
[0110]
根据本公开的相干性聚集系统可被提供为射线跟踪系统的一部分。射线跟踪系统可以包括用于相干性聚集的一个或多个系统、用于相交测试的一个或多个测试器单元,并且可以实现一个或多个着色器程序。射线跟踪系统可以作为图形处理系统的一部分来提供。
[0111]
应当理解,本公开的范围不限于上述示例。各种可能的修改现在对于本领域技术人员将是显而易见的。例如,尽管是图4中的实例分别使用单独的实例cam122、126和实例ram132、136用于框节点和图元节点。在其他实施方式中,可以仅有单个实例ram和单个实例cam,它们用于存储框节点和图元节点的实例变换。在其他示例中,可以有多于两个cam和多于两个ram。
[0112]
图9示出其中可以实现这种图形处理系统的计算机系统。计算机系统包括cpu902、gpu 904、存储器906和其它装置914,诸如显示器916、扬声器918和相机919。处理框910(对应于相干性聚集系统100)在gpu 904上实现。在其他示例中,处理块910可以在cpu 902上实现。计算机系统的部件可经由通信总线920彼此进行通信。存储装置912(与存储器112相对应)被实现为存储器906的一部分。
[0113]
图3至图4的相干性聚集系统被示出为包括许多功能块。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,由相干性聚集系统形成的本文所述的中间值不需要由相干性聚集系统在任何时间点物理地生成,并且可以仅表示方便地描述由相干性聚集系统在其输入与输出之间执行的处理的逻辑值。
[0114]
本文中描述的相干性聚集系统(以及结合了它们的射线跟踪系统和/或图形处理系统)可以用集成电路上的硬件来体现。本文所描述的系统可配置成执行本文所描述的任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行码的一个或多个处理器执行,所述码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(ram)、只读存储器(rom)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或其它数据并且可以由机器存取的其它存储器装置。
[0115]
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如c、或opencl等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其它软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。
[0116]
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如cpu、gpu、神经网络加速器(nna)、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等。计算机或计算机系统可以包括一个或多个处理器。
[0117]
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(hdl)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。也就是说,可以提
供一种其上编码有集成电路定义数据集形式的计算机可读程序代码的计算机可读存储介质,当在集成电路制造系统中处理(即,运行)时,该计算机可读程序代码将所述系统配置成制造被配置成执行本文所述任何方法的相干性聚集系统(或射线跟踪系统或图形处理系统),或者制造包括本文所述任何装置的相干性聚集系统(或射线跟踪系统或图形处理系统)。集成电路定义数据集可以是例如集成电路描述。
[0118]
因此,可以提供一种在集成电路制造系统中制造如本文所述的相干性聚集系统(或射线跟踪系统或图形处理系统)的方法。此外,可以提供一种集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集使制造相干性聚集系统(或射线跟踪系统或图形处理系统)的方法得以执行。
[0119]
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(rtl)代码,作为高级电路表示法(诸如verilog或vhdl),以及作为低级电路表示法(诸如oasis(rtm)和gdsii)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如rtl)可以在计算机系统上处理,所述计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,所述软件环境包括电路元件的定义和用于组合这些元件以生成由所述表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
[0120]
现在将参考图10描述在集成电路制造系统处处理集成电路定义数据集以便将所述系统配置成制造相干性聚集系统(或射线跟踪系统或图形处理系统)的示例。
[0121]
图10示出了集成电路(ic)制造系统1002的示例,所述集成电路制造系统被配置成制造如本文任何示例中描述的相干性聚集系统(或射线跟踪系统或图形处理系统)。特别地,ic制造系统1002包括布局处理系统1004和集成电路生成系统1006。ic制造系统1002被配置成接收ic定义数据集(例如,限定如本文的任何示例中所述的相干性聚集系统),处理ic定义数据集,并且根据ic定义数据集(例如,其体现如本文的任何示例中所述的相干性聚集系统)来生成ic。通过对ic定义数据集的处理,将ic制造系统1002配置成制造体现如本文任何示例中描述的相干性聚集系统(或射线跟踪系统或图形处理系统)的集成电路。
[0122]
布局处理系统1004被配置成接收和处理ic定义数据集以确定电路布局。根据ic定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成rtl代码以确定待生成的电路的门级表示,例如就逻辑部件(例如,nand、nor、and、or、mux和flip-flop部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1004已经确定电路布局时,其可将电路布局定义输出到ic生成系统1006。电路布局定义可以是例如电路布局描述。
[0123]
如本领域中已知的,ic生成系统1006根据电路布局定义来生成ic。例如,ic生成系统1006可实施生成ic的半导体设备制造工艺,该半导体设备制造工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,掩模可以在光刻工艺中用于根据电路定义来生成ic。替代地,提供
给ic生成系统1006的电路布局定义可呈计算机可读代码的形式,ic生成系统1006可使用该计算机可读代码来形成用于生成ic的合适掩模。
[0124]
由ic制造系统1002执行的不同过程可全部在一个位置例如由一方来实施。替代地,ic制造系统1002可以是分布式系统,使得一些过程可在不同位置执行,并且可由不同方来执行。例如,以下阶段中的一些可以在不同位置以及/或者由不同方来执行:(i)合成表示ic定义数据集的rtl代码,以形成待生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
[0125]
在其他示例中,在集成电路制造系统中对集成电路定义数据集的处理可以将所述系统配置成在不处理ic定义数据集以确定电路布局的情况下制造相干性聚集系统(或射线跟踪系统或图形处理系统)。例如,集成电路定义数据集可以定义可重新配置的处理器诸如fpga的配置,并且对该数据集的处理可以将ic制造系统配置成(例如,通过将配置数据加载到fpga)生成具有该定义的配置的可重新配置的处理器。
[0126]
在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文所述的设备。例如,通过集成电路制造定义数据集,以上面参考图10描述的方式对集成电路制造系统进行配置,可以制造出如本文所述的设备。
[0127]
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图10中所示的示例中,ic生成系统还可以由集成电路定义数据集进一步配置,以在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到该集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
[0128]
与已知的实现方式相比,在本技术中阐述的概念在设备、装置、模块和/或系统中(以及在本文中实施的方法中)的实现方式可以引起性能改进。性能改进可以包括计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一种或多种。在制造此类设备、装置、模块和系统(例如,在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,在本技术中阐述的引起设备、装置、模块和系统的物理实现方式的改进(诸如硅面积减小)的概念可以与性能提高之间进行权衡。这可以例如通过在预定义面积预算内制造模块的多个实例来完成。
[0129]
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献