图形处理中的多核状态缓存的制作方法

未命名 10-25 阅读:58 评论:0

图形处理中的多核状态缓存
1.相关申请的交叉引用
2.本技术要求各自于2022年3月30日提交的英国专利申请gb 2204508.2和gb 2204510.8的优先权,所述英国专利申请以全文引用的方式并入本文中。
技术领域
3.本发明涉及图形处理。具体来说,本发明涉及使用多核图形处理单元的图形处理。


背景技术:

4.在计算机图形中,“渲染”是将描述虚拟场景的3d模型转换为表示来自特定视点(或若干视点)的场景的视图的一个或多个2d图像的过程。由于这是一个计算密集的过程,对于典型的虚拟场景,通常提供专门进行必要计算的硬件加速器。这种硬件加速器在本领域中称为图形处理单元(gpu)。
5.不同的gpu可以具有不同的硬件架构,反映用于执行3d渲染所必需的计算的不同策略。一个示例性gpu使用“基于图块的延迟渲染”流水线。
6.此方法将渲染过程分成两个不同的阶段。这两个阶段中的一个——几何处理阶段(或简称为几何阶段)——涉及处理描述场景的3d模型的几何数据。基于要渲染的特定视点将几何数据从3d空间转换成图像的2d坐标。该阶段的输出是经转换的几何形状,其存储在“参数缓冲区”中。
7.几何阶段的基本操作是弄清每个图块内有哪些图元形状。图元最常见的是三角形。这些三角形连接在一起以形成对象。三角形是以其顶点(角点)来描述的。每个顶点包括位置信息(顶点的位置),并且可以包括附加信息,例如颜色。顶点信息存储在顶点缓冲区中。每个顶点在缓冲区中的位置是其索引号。换句话说,索引是指向相应顶点的指针。索引列表存储在索引缓冲区中。两个相关联的顶点(或索引)形成线图元。关联三个顶点(或索引)形成三角形图元。在创建图元时,处理索引而不是顶点通常更高效,因为索引(在存储器中)较小。
8.当gpu从应用程序驱动程序接收到绘制调用时,渲染操作的几何阶段开始。绘制调用包含用于几何处理任务(特别是要绘制哪些三角形)的指令以及执行几何处理所需的所有信息。绘制调用包括索引缓冲区的基础地址。索引缓冲区中包含的索引依次指向顶点缓冲区中的顶点。绘制调用还定义解释索引所需的附加信息——例如拓扑信息。拓扑定义如何解释索引——例如,它们是定义各个三角形、一次定义三个顶点还是定义三角形“条”,其中每个索引向该条的末端添加新三角形。
9.应理解,几何处理任务并非图像渲染中涉及的唯一类型的任务。其他类型的任务的示例包括计算任务和片段任务。这些任务统称为图像渲染任务。为了减少渲染时间,期望使用多核gpu并行处理图像渲染任务。


技术实现要素:

10.如上所述,一组几何处理任务通常在绘制调用中提供给gpu。更一般地,各组图像渲染任务可以由应用程序驱动程序提供给gpu,或者可以由gpu内部触发。通常,每组图像渲染任务仅由一种类型的任务组成。例如,一组图像渲染任务可以仅由几何处理任务组成。为了(例如)并行处理该组几何处理任务,必须将绘制调用内包含的该组几何处理任务分成较小组任务,这些较小组任务可以在多核系统的每个核上处理。在根据比较示例的一个示例性解决方案中,中央集线器负责将绘制调用拆分成各组任务并将这些任务指派给多核系统的各核。多核系统中的每个核由专用通信链路直接连接到中央集线器。中央集线器通过这些专用链路向核提供指令,从而为核提供处理任务。
11.提供本发明内容是为了以简化形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
12.本发明提供了一种多核图形处理单元(gpu)和一种操作gpu的方法。gpu至少包括第一核和第二核。多核gpu中的至少一个核包括主单元,所述主单元被配置成在至少第一核与第二核之间分配图像渲染任务和状态信息。
13.根据一个方面,提供了一种包括多个核的图形处理单元,其中所述多个核中的一个核包括第一主单元,所述第一主单元被配置成:
14.接收一组图像渲染任务和状态信息,其中所述状态信息包括处理所述图像渲染任务所需的状态信息的元素;
15.将所述状态信息存储在存储器中;
16.将所述一组图像渲染任务拆分成至少第一子集任务和第二子集任务;
17.将所述第一子集任务指派给所述多个核中的第一核;
18.将所述第二子集任务指派给所述多个核中的第二核;
19.将所述状态信息的至少第一部分的指示传输到所述第一核;
20.将所述状态信息的至少第二部分的指示传输到所述第二核;
21.将所述第一子集任务的指示传输到所述第一核;
22.将所述第二子集任务的指示传输到所述第二核;并且
23.其中所述多个核中的每个核包括被配置成执行图像渲染任务的从单元。
24.第一主单元可以仅将状态信息发送至第一核和第二核(并且不发送至多个核中的任何其它核)。在gpu包括多于两个核的情况下,第一主单元可以被配置成选择多个核中的至少两个核来执行图像渲染任务。主单元可以仅将子集任务指派给它已选择的核。第一主单元可以仅将状态信息发送至其已将子集任务指派给的核。具体地说,多个核可包括未被选择以执行图像渲染任务的第三核,且第一主单元可被配置成不将状态信息发送至第三核。
25.在一些示例中,第一核和第二核中的一个可包括第一主单元。在其它示例中,另一核,例如第三核,可包括第一主单元。
26.为了处理图像渲染任务,核需要状态信息的一个或多个元素,告知其如何执行任务。例如,任务可包括曲面细分。为了执行曲面细分,核需要曲面细分状态信息告知其要使用哪个曲面细分程序。类似地,如果任务涉及着色,则核需要着色器状态信息告知其要使用
哪个着色器程序。通过仅将状态信息发送至子集任务已指派给的核,可以避免核之间的不必要的传输。
27.第一主单元可以被配置成:识别处理第一子集任务所需的状态信息的第一元素;以及识别处理第二子集任务所需的状态信息的第二元素,其中状态信息的第一部分由状态信息的第一元素组成,且状态信息的第二部分由状态信息的第二元素组成。
28.状态信息的第一元素和状态信息的第二元素可以重叠。也就是说,状态信息的一些元素可以被识别为第一元素和第二元素两者。状态信息的第一元素和第二元素可以相同,因为它们的每个第一元素也是第二元素,反之亦然。或者,状态信息的第一元素和第二元素可能并不相同,因为它们可能不共享所有元素。至少一些第一元素可以不同于第二元素,和/或至少一些第二元素可以不同于第一元素。换句话说,状态信息的第一元素可以包括与状态信息的第二元素不同的状态信息的元素。在一些示例中,子集之间可以不存在重叠。也就是说,第一子集和第二子集可以不具有共同的状态信息的元素。
29.具体参考状态信息,第一主单元可以仅向第一核传输状态信息的第一元素,并且仅向第二核传输状态信息的第二元素。换句话说,第一主单元可以仅向第一核传输处理第一子集任务所需的状态信息的元素,并且仅向第二核传输处理第二子集任务所需的状态信息的元素。
30.以此方式,为了进一步减少核之间的信息的不必要传输,每个核可能仅被发送它处理被指派的子集任务所需的状态信息。在示例中,第一子集任务包括第一顶点着色任务,但不包括几何着色任务,并且第二子集任务包括几何着色任务和第二顶点着色任务(第二顶点着色任务不同于第一顶点着色任务)。因此,第一主单元将向第一核发送与第一顶点着色任务(第一顶点着色器状态)有关的状态信息的元素,但不发送与几何着色(几何着色器状态)或第二顶点着色任务(第二顶点着色器状态)有关的元素。第一主单元将向第二核发送几何着色器状态和第二顶点着色器状态,但不发送第一顶点着色器状态。
31.状态信息的元素的示例包括:绘制状态;索引缓冲区位置;顶点着色器;外壳着色器;域着色器;几何着色器;均匀着色器;索引缓冲区拓扑信息;以及曲面细分状态。
32.通过仅向核传输处理指派给该核的图像渲染任务所需的状态信息的元素,可以减少在核之间传输的数据的总量。
33.所述第一主单元可被配置成不将除所述状态信息的第一元素以外的状态信息的任何元素传输到所述第一核;并且不将除所述状态信息的第二元素以外的状态信息的任何元素传输到所述第二核。
34.换句话说,第一主单元可能仅在状态信息被识别为状态信息的第一元素时才将该信息传输到第一核,并且可能仅在状态信息被识别为状态信息的第二元素时才将该信息传输到第二核。
35.在一些示例中,此规则可调整为:第一主单元可被配置成将状态信息的累积元素识别为处理任何/每个子集图像渲染任务所必需的。这意味着,状态信息的累积元素可能总是被识别为状态信息的第一/第二元素,因此,可以给已指派子集任务的核提供状态信息的累积元素(即使在处理该子集任务实际上并不需要状态信息的累积元素的情况下)。
36.在一些示例中,特别是在gpu包括一个或多个未指派子集任务的核的示例中,第一主单元仍可以被配置成将状态信息的累积元素传输到这些一个或多个核。换句话说,第一
主单元可以被配置成将状态信息的累积元素传输到多个核中的每个核。
37.第一主单元可以被配置成维护状态信息的每个元素已传输到其的那些核的记录,并且在每次状态信息的元素被传输到核中的一个时更新该记录。
38.例如,第一主单元可以存储列出状态信息的各个元素的表格,并且对于每个核,存储指示状态是否已传输到核的一个位。这使得第一主单元能够持续跟踪哪些核已接收到状态信息的各个元素。
39.所述第一主单元可被配置成:
40.接收附加状态信息,其中所述附加状态信息包括以下各项中的一者或多者:
41.(a)—状态信息的新元素,其中,所述主单元被配置成:
42.存储状态信息的新元素;以及
43.更新所述记录以包括所述状态信息的新元素,并且指示所述新元素尚未被传输到所述核中的任一个;或者
44.(b)—状态信息的更新元素,其中,所述主单元被配置成:
45.用状态信息的更新元素替换存储器中存储的状态信息的元素;以及
46.更新所述记录以指示所述更新元素尚未被传输到所述核中的任一个,
47.接收与所述附加状态信息相关联的附加的一组图像渲染任务;
48.将所述附加的一组图像渲染任务拆分成至少第三子集任务和第四子集任务;
49.将所述第三子集任务指派给所述第一核;
50.基于所述记录识别状态信息的第三元素,其中所述状态信息的第三元素是处理所述第三子集任务所需的且尚未传输到所述第一核的状态信息的元素;
51.将状态信息的第三元素的指示传输到所述第一核;以及
52.将第三子集任务的指示传输到所述第一核。
53.例如,可以针对引用不同索引缓冲区的新的一组任务更新索引缓冲区拓扑信息。先前存储的拓扑状态信息可以(例如,通过被重写)被新的拓扑状态信息替换,并且可以清除拓扑状态信息已传输到其的那些核的记录。第一主单元将新拓扑状态信息传输到第一核,因为在已检查所述记录之后,主单元可以确定第一核尚未接收到拓扑状态信息(即使第一核已接收到旧拓扑状态信息)。
54.第一主单元可仅向第一核传输状态信息的第三元素。这里指的是与第三子集任务相关联的传输到第一核的唯一状态信息可以是状态信息的第三元素。应当记住,在一些示例中,第一主单元被配置成将状态信息的累积元素识别为处理任何/每个图像渲染任务所必需的,并且因此第三元素可以包括状态信息的新累积元素。
55.状态信息可以包括状态信息的累积元素,并且第一主单元可以被配置成将状态信息的累积元素传输到图形处理单元中的每个核。
56.状态信息的累积元素,如几何状态信息,是通过将附加信息添加/附加到旧信息而不是替换旧信息来更新的元素。因此,在渲染场景的过程中,由于多个状态信息更新,状态信息的累积元素可能变得比状态信息的其它元素大得多。第一主单元可以被配置成将状态信息的累积元素识别为与每个/任何子集任务相关。
57.第一主单元可以被配置成接收状态信息的新累积元素,并将新累积元素传输到多个核中的每个核。
58.如果在渲染场景期间的某个点,核需要累积元素来执行指派给其的子集任务,并且第一主单元没有被配置成将状态信息的累积元素传输到gpu的核,则第一主单元将需要存储所有累积元素,并且必须将所有这些元素传输到核。这可能消耗大量的时间和带宽,并延迟核之间的其他重要通信。通过在每次接收到新元素时将新累积元素传输到所有核,只需要在任何给定时间将少量信息传输到每个核。
59.多个核中的一个核可包括第二主单元。第二主单元可以被配置成:接收第二组图像渲染任务和第二状态信息,其中所述第二状态信息包括处理所述第二组图像渲染任务所需的第二状态信息的元素;将所述第二状态信息存储在第二存储器中;将第二组图像渲染任务拆分成至少第五子集任务和第六子集任务;将第五子集任务指派给所述第一核;将所述第二状态信息的至少一部分的指示传输到所述第一核;并将第五子集任务传输到所述第一核。
60.第二组图像渲染任务可以由与第一组不同类型的任务组成。例如,第一组可以由片段处理任务组成,并且第二组可以由几何处理任务组成。第一状态信息和第二状态信息可能不共享任何信息,这意味着未在第二状态信息中也发现在第一状态信息中发现的信息。以此方式,可以分离不同类型的图像渲染任务的管理,其中一个主单元仅与一种类型的任务和该任务的状态信息交互。
61.第二主单元可以与第一主单元相同的方式维护第二状态信息的哪些元素已被传输到每个核的记录。
62.第一核可以是包括第一主单元和/或第二主单元的核。或者,第二核可以是包括第一主单元和/或第二主单元的核。不同于第一核和第二核两者的另一核可包括第一主单元和/或第二主单元。包括第一主单元的核还可包括第二主单元。
63.第二主单元可以与第一主单元相同的方式运行。针对第一主单元描述的任何方法步骤或特征都可适用于第二主单元,且更一般地适用于gpu中的任何主单元。
64.多个核可由被配置成在所述核之间传送寄存器写入命令的寄存器总线连接。第一主单元可以被配置成输出至少第一寄存器写入命令和第二寄存器写入命令,其中第一寄存器写入命令被寻址到第一核并且包括处理第一子集任务所需的状态信息的元素的指示;并且第二寄存器写入命令被寻址到第二核并且包括处理第二子集任务所需的状态信息的元素的指示。
65.第一主单元可以将寄存器写入命令直接输出到寄存器总线,或者可以将它们输出到第一主单元所驻留的并且与寄存器总线相接的核中的另一硬件单元。应理解,当主单元驻留在特定核内时,主单元可内部传输寻址到其驻留的核的任何指示。“内部传输”意指不经由寄存器总线传输指示,而是通过允许核内的硬件部件之间通信的链路传输指示。换句话说,当主单元将指示传输到其不驻留的核时,主单元可经由寄存器总线传输该指示。然而,当主单元将指示传输到其驻留的核时,其可能不会通过寄存器总线传输该指示,而是可以将指示传输到核内的另一硬件单元,例如传输到该核的从单元。
66.第一寄存器写入命令可以包含处理存储器中的第一子集任务所需的状态信息的元素的地址的指示。第二寄存器写入命令可以包含处理存储器中的第二子集任务所需的状态信息的元素的地址的指示。状态信息的元素的指示可以包括状态信息的元素。第一主单元还可以将第一子集任务和第二子集任务的指示作为寄存器写入命令进行传输。
67.第一核可包括被配置成处理图像渲染任务的多个处理单元。第一核的从单元可以被配置成:接收第一子集图像渲染任务和所述状态信息的第一部分;将第一子集图像渲染任务拆分成第七子集任务和第八子集任务;将所述第七子集发送至第一处理单元;将所述第八子集发送至第二处理单元;将所述状态信息的第一部分转发到所述第一处理单元;以及将所述状态信息的第一部分转发到所述第二处理单元。
68.第二核还可包括一个或多个处理单元和至少一个从单元。第二核的从单元可以与上文针对第一核所述的相同方式拆分指派给其的子集任务。第一核和第二核中的处理单元的数目可以相同。
69.与第一主单元不同的是,第一主单元仅将状态信息的元素传输到需要该元素来处理任务的核,第一核的从单元可以将状态信息的第一元素转发至其所有处理单元。第一主单元和从单元可以这些不同的方式操作,因为从单元与其处理单元之间的连接可以是专用连接,意味着不存在使用连接的竞争,因此无需尝试减少发送到每个核的数据量。
70.相比之下,gpu的核可由被配置成传送寄存器写入命令的寄存器总线来链接。寄存器总线可能只能一次传送单个通信,并且能够传送到单个接收核。因此,使用寄存器总线可能存在大量的竞争,从而激励减少发送到每个核的数据量。
71.还提供了一种在包括多个核的图形处理单元中分配一组图像渲染任务和状态信息的方法,所述方法包括:由所述多个核中的一个核中的第一主单元接收所述一组图像渲染任务和所述状态信息,其中所述状态信息包括处理所述图像渲染任务所需的状态信息的元素;由第一主单元将所述状态信息存储在存储器中;由第一主单元将所述一组图像渲染任务拆分成至少第一子集任务和第二子集任务;由主单元将所述第一子集任务指派给所述第一核;由主单元将所述第二子集任务指派给所述第二核;由主单元向第一核传输所述状态信息的至少第一部分;由主单元向第二核传输所述状态信息的至少第二部分;由主单元向第一核传输所述第一子集任务;以及由主单元向第二核传输所述第二子集任务。
72.第一主单元在将相关状态信息传输到核之前将子集指派给核。第一主单元可以在将处理第一子集任务所需的至少状态信息的元素传输到第一核之前或之后将第一子集任务传输到第一核。类似地,第一主单元可以在将处理第二子集任务所需的至少状态信息的元素传输到第二核之前或之后将第二子集任务传输到第二核。
73.所述方法还可包括:由第一主单元识别处理第一子集任务所需的状态信息的第一元素;以及由第一主单元识别处理第二子集任务所需的状态信息的第二元素。状态信息的第一部分可以由状态信息的第一元素组成,并且状态信息的第二部分可以由状态信息的第二元素组成。
74.主单元可能不将除状态信息的第一元素以外的状态信息的任何元素传输到第一核;并且可能不将除状态信息的第二元素以外的状态信息的任何元素传输到第二核。
75.所述方法还可包括由第一主单元维护状态信息的每个元素已传输到其的那些核的记录;以及由第一主单元在每次状态信息的元素被传输到核中的一个时更新所述记录。
76.所述方法还可包括:
77.由所述第一主单元接收附加状态信息,其中所述附加状态信息包括以下各项中的一者或多者:
78.(a)

状态信息的新元素,其中所述方法还包括:
79.由所述主单元存储状态信息的新元素;以及
80.由所述主单元更新所述记录以包括状态信息的新元素,并且指示所述新元素尚未被传输到所述核中的任一个;或者
81.(b)

状态信息的更新元素,其中所述方法还包括:
82.由所述主单元用所述状态信息的更新元素替换所述存储器中存储的状态信息的元素;以及
83.由所述主单元更新所述记录以指示所述更新元素尚未被传输到所述核中的任一个,
84.由所述第一主单元接收(314b)与所述附加状态信息相关联的附加的一组图像渲染任务;
85.由所述第一主单元将所述附加的一组图像渲染任务拆分成至少第三子集任务和第四子集任务;
86.由所述第一主单元将所述第三子集任务指派给所述第一核;
87.基于所述记录识别状态信息的第三元素,其中所述状态信息的第三元素是处理所述第三子集任务所需的且尚未传输到所述第一核的状态信息的元素;
88.由所述第一主单元向所述第一核传输所述状态信息的第三元素的指示;以及
89.由所述第一主单元将所述第三子集任务的指示传输到所述第一核。
90.状态信息可以包括状态信息的累积元素,并且所述方法还可以包括由第一主单元将状态信息的累积元素传输到图形处理单元中的每个核。
91.所述方法还可包括:由第一主单元接收状态信息的新累积元素;以及由第一主单元将状态信息的新累积元素传输到多个核中的每个核。
92.所述方法还可包括:由第一核的从单元接收第一子集任务和状态信息的第一部分;由从单元将第一子集任务拆分成第五子集任务和第六子集任务;由从单元将第五子集任务发送至第一核的第一处理单元;由从单元将第六子集任务发送至第一核的第二处理单元;由从单元将状态信息的第一部分转发至第一处理单元;以及由从单元将状态信息的第一部分转发至第二处理单元。
93.所述方法还可包括:由所述多个核中的一个核中的第二主单元接收第二组图像渲染任务和第二状态信息,其中所述第二状态信息包括处理所述第二组图像渲染任务所需的第二状态信息的元素;由第二主单元将所述第二状态信息存储在第二存储器中;由第二主单元将所述第二组图像渲染任务拆分成至少第七子集任务和第八子集任务;由第二主单元将第七子集任务指派给所述第一核;由所述第二主单元向所述第一核传输所述第二状态信息的至少一部分;以及由第二主单元将第七子集任务传输到所述第一核。
94.第一核和第二核中的一个可包括第二主单元。包括第二主单元的核可以与包括第一主单元的核为相同核或不同核。
95.第二状态信息可以由第二主单元以与第一主单元管理状态信息的方式相同的方式管理。第二主单元可以将第八子集任务指派给第一核、第二核或多个核中的任何其它核。
96.还提供了一种包括如上概述的gpu的图形处理系统;以及一种被配置成执行如上概述的方法的图形处理系统。所述图形处理系统可包含在集成电路上的硬件中。
97.还提供了一种使用集成电路制造系统制造如上概述的图形处理系统或gpu的方
法。所述方法可包括:使用布局处理系统处理图形处理系统或gpu的计算机可读描述,以便生成包含该图形处理系统的集成电路的电路布局描述;以及使用集成电路生成系统,根据电路布局描述制造图形处理系统或gpu。
98.还提供了一种计算机可读代码,该计算机可读代码被配置为在代码运行时使如上概述的方法得以执行;以及一种在其上对所述计算机可读代码进行编码的计算机可读存储介质。该计算机可读存储介质可以是非暂时性计算机可读存储介质。
99.还提供了一种集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中被处理时,将集成电路制造系统配置为制造如上概述的图形处理系统或gpu。
100.还提供了一种计算机可读存储介质(任选地为非暂态的),该计算机可读存储介质上存储有如上概述的图形处理系统或gpu的计算机可读描述,该计算机可读描述当在集成电路制造系统中处理时使集成电路制造系统制造包含该图形处理系统或gpu的集成电路。
101.还提供了一种计算机可读存储介质(任选地为非暂态的),该计算机可读存储介质上存储有如上概述的图形处理系统或gpu的计算机可读描述,该计算机可读描述当在集成电路制造系统中处理时使集成电路制造系统执行以下操作:使用布局处理系统对图形处理系统或gpu的计算机可读描述进行处理,以便生成包含该图形处理系统或gpu的集成电路的电路布局描述;以及使用集成电路生成系统根据电路布局描述来制造图形处理系统或gpu。
102.还提供了一种集成电路制造系统,该集成电路制造系统被配置成制造如上概述的图形处理系统或gpu。集成电路制造系统可包括:计算机可读存储介质(任选地为非暂态的),该计算机可读存储介质上存储有如上概述的图形处理系统或gpu的计算机可读描述;布局处理系统,该布局处理系统被配置成处理计算机可读描述,以便生成包含该图形处理系统或gpu的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置成根据电路布局描述来制造图形处理系统或gpu。
103.gpu可体现在集成电路上的硬件中。可提供一种在集成电路制造系统处制造gpu的方法。可以提供一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中被处理时将该系统配置为制造gpu或图形处理系统。可提供一种其上存储有gpu或图形处理系统的计算机可读描述的非暂态计算机可读存储介质,该计算机可读描述当在集成电路制造系统中被处理时使集成电路制造系统制造包含gpu或图形处理系统的集成电路。
104.如对本领域的技术人员将显而易见,上述特征可以适当地组合,并且可与本文中所描述的示例的各方面中的任一方面进行组合。
附图说明
105.现在将参考附图详细描述示例,在附图中:
106.图1是根据示例的gpu的框图;
107.图2是根据另一示例的gpu的框图;
108.图3是示出了根据示例的方法的流程图;
109.图4a至图4c是图3的流程图的续图;
110.图5示出了在其中实现图形处理系统的计算机系统;以及
111.图6示出了用于生成包含图形处理系统的集成电路的集成电路制造系统。
112.附图示出了各种示例。技术人员将了解,附图中所示出的元件边界(例如框、框的
组或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
113.借助于示例呈现以下描述,以使得本领域的技术人员能够制造和使用本发明。本发明不限于本文中所描述的实施例,并且对所公开实施例的各种修改对于本领域的技术人员将显而易见。
114.现在将仅借助于示例来描述实施例。
115.如上所述,绘制调用包括用于几何处理任务的指令以及处理这些任务所需的信息。处理一组任务所需的信息将在本文中称为状态信息。绘制调用可以包含状态信息的多个不同元素。状态信息的一些元素可能与绘制调用的所有任务相关,因为状态信息的这些元素是处理任何/所有任务所必需的。状态信息的其它元素可能仅与任务的子集相关。应该记住,几何处理任务仅仅是图像渲染任务的一个示例,并且也要给其他类型的图像渲染任务提供状态信息。
116.现在,我们回到中央集线器的比较示例。在中央集线器的一些可能实施方案中,在接收到绘制调用之后,中央集线器可以将绘制调用内包含的所有状态信息传输到gpu中的每个核。这确保每个核都能够执行绘制调用中包含的任何几何处理任务。然而,如上所述,仅需要状态信息的一些元素来处理任何给定几何处理任务。中央集线器可以拆分几何处理任务,使得至少一个核从不需要状态信息的一些元素。事实上,一些核可能不被发送几何处理任务来执行。换句话说,在一些示例中,将状态信息的某些元素传输到核是多余的。
117.中央集线器系统具有许多缺点。其中一个缺点是,中央集线器与每个核之间的专用通信链路占用芯片空间,而没有直接对图像渲染任务的处理作出贡献。该问题的一个解决方案是用将所有核连接在一起的通信链路替换专用连接。利用已存在的通信链路,例如寄存器总线/xpu总线可能特别有益。另外,中央集线器本身也可以被移除,并且其功能由gpu的核中的一个承担。
118.由于中央集线器系统的每个核由专用通信链路链接到中央集线器,所以核之间不存在与中央集线器通信的竞争。然而,当利用诸如寄存器总线的通信链路时,可能产生使用寄存器总线的竞争。在示例中,gpu的核由用于将状态信息以及用于处理图像渲染任务的指令传送到核的寄存器总线来连接。在此示例中,寄存器总线可能仅能够在任何时间传送寻址到单个地址的单个通信。例如,当寄存器总线将一组图像渲染任务或状态信息的指示传送到gpu中的核时,寄存器总线不能将任何其它通信传送到任何其它地址。这包括寻址到gpu中的其他核的图像渲染任务的指示,以及由寄存器总线传送的标准寄存器读写命令。换句话说,gpu的核竞争使用寄存器总线。这种竞争可能导致核变得闲置,因为负责发送指令和状态信息的核正在等待访问总线。这可以降低gpu的整体性能。
119.需要减少状态信息的冗余传输。这将有助于减少(不必要的)使用总线的竞争,进而使系统整体更高效。
120.在以下描述中,术语“第一”、“第二”、“第三”等用于描述gpu和方法的各个元素。除非另外明确说明,否则这些术语仅是标签,并且不暗示元素之间的特定顺序或重要等级。
121.现在将参考附图描述示例。
122.根据本公开的示例提供了一种gpu。gpu包括多个核。多个核中的至少一个包括主单元,所述主单元被配置成从应用程序驱动程序或从gpu内的另一硬件单元接收图像渲染任务和状态信息,并且在至少第一核与第二核之间分配所述图像渲染任务和状态信息。
123.图1中描绘了示例性gpu。gpu 100包括第一核110和第二核120。第一核110包括主单元111、从单元112、第一处理单元113和第二处理单元114。从单元112与主单元111和两个处理单元113、114通信。主单元111包括高速缓存115。第二核120包括主单元121、从单元122、第一处理单元123和第二处理单元124。从单元122与主单元121和两个处理单元123、124通信。处理单元被配置成处理图像渲染任务。在其它示例中,每个核可仅包含单个处理单元,或多于两个处理单元。在一些示例中,每个核的从单元可包括一个或多个处理单元,或被配置成处理图像渲染任务的其它硬件。
124.第一核110和第二核120由寄存器总线101连接,并且彼此通信,使得信息可以经由寄存器总线101在核110、120之间发送。该信息包括图像渲染任务的指示和状态信息的指示。第一核110和第二核120与存储器140通信。
125.在本示例中,仅第一核的主单元111处于活动状态。第二核的主单元121不活动,如图1中的此单元的阴影所指示。第一核110的主单元111在本文中被称为活动主单元。在本示例中,活动主单元111是几何主单元,这意味着其被配置成从应用程序驱动程序接收一组几何处理任务,以及执行几何处理任务所需的状态信息。在此示例中,状态信息包括以下元素:绘制状态;索引缓冲区位置;顶点着色器;外壳着色器;域着色器;几何着色器;均匀着色器;几何状态和索引缓冲区拓扑信息。应理解,在其它示例中,状态信息可仅包括状态信息的这些元素中的一些,和/或可包括上文未列出的其它元素。
126.活动主单元111被配置成将状态信息缓存(存储)在高速缓存115中,并且创建和维护状态信息的哪些元素已被传输至每个核的记录。活动主单元111被配置成将状态信息的任何累积元素的指示传输到gpu 100的每个核。更具体地,活动主单元111被配置成将状态信息的累积元素传输到第一核110的从单元112,且传输到第二核120的从单元122。状态信息的累积元素是通过将附加信息添加到现有状态信息,而不是替换状态信息的元素而更新的累积元素。在本示例中,几何状态是累积的。
127.活动主单元111被配置成根据需要将传入的几何处理任务拆分成子集任务,并将子集指派给特定核110、120。在本示例中,活动主单元111将该组几何处理任务拆分成第一子集任务和第二子集任务。活动主单元111将第一子集几何处理任务指派给第一核110,并将第二子集几何处理任务指派给第二核120。在gpu 100包括两个以上核的示例中,活动主单元111可以选择至少两个核来执行几何处理任务,并且仅将子集任务指派给所选择的核。
128.活动主单元111被配置成识别处理每个子集任务所需的状态信息的元素,并将相关状态信息的指示传输到子集任务所指派给的核。在本示例中,活动主单元111识别处理第一子集任务所需的状态信息的元素,本文中称为状态信息的第一元素。活动主单元111将状态信息的第一元素的指示传输到第一核110。更具体地,在图1的示例中,活动主单元111在第一核110内将状态信息的第一元素内部传输到第一核110的从单元112。活动主单元111还识别处理第二子集任务所需的状态信息的元素,本文中称为状态信息的第二元素。活动主单元111将状态信息的第二元素的指示传输到第二核120。在本示例中,活动主单元111将状
态信息的第二元素通过寄存器总线101传输到第二核120的从单元122。活动主单元111被配置成仅向每个相应核传输该相应核处理其子集任务所需的状态信息的元素。在本示例中,活动主单元111仅向第一核110传输处理第一子集任务所需的状态信息的元素。活动主单元111还仅向第二核120传输处理第二子集任务所需的状态信息的元素。换句话说,活动主单元111被配置成仅向第一核110传输识别为第一元素的状态信息的元素,且仅向第二核120传输识别为第二元素的状态信息的元素。以此方式,可以减少信息在核之间的不必要传输。
129.活动主单元111被配置成将指派给核的子集任务的指示传输到该特定核。在本示例中,活动主单元111将第一子集任务的指示传输到第一核110,并将第二子集任务的指示传输到第二核120。
[0130]“传输指示”意指活动主单元111传输:所讨论的数据;或使得接收核能够获得所需数据的信息。如上所述,活动主单元111将第一子集任务的指示传输到第一核。在本示例中,此指示是第一子集任务在存储器140中的地址。(在其它示例中,可以使用不同的指示。)利用该信息,第一核110接着可从存储器140检索将在执行第一子集任务中处理的数据。在本示例中,活动主单元111将状态信息的元素传输到核,而不是传输状态信息的元素的存储器地址(或另一种指示)。在其它示例中,活动主单元111可以将状态信息的所需元素在存储器中的地址传输到核,和/或可以将子集任务传输到核(而不是传输子集任务的存储器地址)。在另外其它示例中,活动主单元111可以将状态信息的某些类型的元素在存储器中的地址传输到核,而对于状态信息的其它类型的元素,活动主单元111可以传输状态信息本身的元素。
[0131]
活动主单元111被配置成在每次活动主单元111将状态信息的元素传输到核时更新记录。这样,该记录可以准确地指示状态信息的每个元素被传输到哪个核。
[0132]
活动主单元111被配置成从应用程序驱动程序接收附加状态信息,以及附加的一组几何处理任务。在本示例中,附加状态信息包括状态信息的新元素—曲面细分状态信息,以及状态信息的更新元素—更新的拓扑信息。
[0133]
活动主单元111被配置成将曲面细分状态信息存储在高速缓存115中。活动主单元111被配置成更新记录以包括曲面细分状态信息,并指示曲面细分状态信息尚未传输到任何核。
[0134]
活动主单元111被配置成用更新的拓扑信息替换高速缓存115中存储的拓扑信息(例如,通过用更新的拓扑信息重写高速缓存115中存储的拓扑信息),并更新记录以指示拓扑信息尚未被传输到任何核。
[0135]
活动主单元111被配置成根据需要将附加的一组任务拆分成(另外的)子集任务,并将子集指派给特定核110、120。在本示例中,活动主单元111将附加的一组任务拆分成第三子集任务和第四子集任务,并将第三子集指派给第一核110。活动主单元111被配置成识别处理每个(另外的)子集任务所需的且尚未传输到子集任务已指派给的核的状态信息(包括附加状态信息)的元素,如记录所指示的。在本示例中,活动主单元111识别处理第三子集任务所需的且尚未传输到第一核110的状态信息(包括附加状态信息)的元素,如记录所指示的。状态信息的这些所需元素被称为状态信息的第三元素,并且活动主单元111被配置成将第三元素的指示传输到第一核110。
[0136]
活动主单元111被配置成从应用程序驱动程序接收状态信息的新累积元素。活动
主单元111被配置成将状态信息的新累积元素的指示传输到gpu 100中的每个核。这样,确保所有核始终具有最新的累积状态信息。以这种方式管理累积状态信息是优选的,因为在图像渲染操作的过程中,状态信息的累积元素可以增长以消耗大量的存储器。如果在图像渲染操作的后期阶段需要将状态信息的累积元素整体传输到核,那么它可能在相当长的时间段内阻挡寄存器总线101。
[0137]
从单元在核中的作用是管理主单元分配给该核的图像渲染任务的执行。通常,从单元将管理单一类型的图像渲染任务的执行。在本示例中,这意味着管理几何处理任务的执行。第一核110的从单元112被配置成接收由活动主单元111传输到第一核110的第一子集任务的指示和状态信息的第一元素的指示。从单元112被配置成在第一核110中的处理单元113、114中指派其接收到的任务,且相应地将这些任务发送至其被指派给的处理单元113、114。在本示例中,从单元112将第一子集任务拆分成两个另外的子集任务,其将被称为第五子集任务和第六子集任务。从单元112将第五子集任务指派给第一处理单元113,并将第六子集任务指派给第二处理单元114。从单元112将第五子集任务发送至第一处理单元113,并将第六子集任务发送至第二处理单元114。以此方式,核110的处理单元可用于并行地处理任务。与活动主单元111相比,从单元112被配置成将状态信息的第一元素发送至第一处理单元113和第二处理单元114两者,即使每个处理单元仅需要状态信息的第一元素的子集来执行其相应的子集任务。从单元112以此方式操作可能是有益的,因为从单元112和处理单元113、114由专用连接链接。使用这些专用连接不存在竞争,因此,花费识别和仅向处理单元发送它们处理其子集任务所需的状态信息的元素所需的时间和计算资源几乎没有益处。相反,简单地将所有状态信息发送至每个处理单元是更快速的。
[0138]
在图1的示例中,gpu 100中只有一个主单元是活动的。一个活动主单元能够在gpu的核之间分配一种类型的图像渲染任务。各类型的图像渲染任务的示例包括几何处理任务、片段处理任务和计算任务。在图1中,为了简单起见,仅示出了用于处理一种类型的图像渲染任务(几何处理任务)的组件,并且因此图中仅明确示出了一个活动主单元(几何主单元)。然而,应理解,gpu通常将被配置成处理多于一种类型的图像渲染任务,因此将包括用于处理其它类型的图像渲染任务的附加组件(例如,当gpu被配置成处理计算任务时,gpu将包括计算主单元和计算从单元)。在一些示例中,第一核110和第二核120可包含这些附加组件。在一些示例中,附加组件可构成图1中未示出的其它核的一部分。
[0139]
示例gpu可包括用于gpu被配置成处理的每种类型的图像渲染任务的一个活动主单元。在gpu被配置成处理几何处理任务、计算任务和片段任务的示例中,gpu包括活动几何主单元、活动计算主单元和活动片段主单元。活动主单元可全部驻留在同一核中,或者它们可驻留在不同核中。在一些示例中,核可包括一些但不是全部活动主单元。
[0140]
类似地,对于gpu被配置成处理的每种类型的图像渲染任务,gpu的每个核可包括一个从单元,该从单元被配置成处理该类型的图像渲染任务,使得每个核能够处理任何类型的图像渲染任务。继续gpu被配置成处理几何处理任务、计算任务和片段处理任务的示例,每个核包括几何从单元、计算从单元和片段从单元。为了简化设计、开发和测试,gpu的核优选地全部相同。这意味着每个核可以包括相同组的主单元、从单元和处理单元(即使每种类型的主单元中只有一个是活动的)。
[0141]
图2描绘了gpu 200,其包括多于一种类型的主单元和多于两个核。gpu 200可被视
为图1的gpu 100的示例,其中示出了上述附加硬件中的一些。gpu 200包括第一核210、第二核220和第三核230。第一核210包括几何主单元111a、几何从单元112a、计算主单元111b、计算从单元112b、第一处理单元113和第二处理单元114。第二核220包括几何主单元121a、几何从单元122a、计算主单元121b、计算从单元122b、第一处理单元123和第二处理单元124。第三核230包括几何主单元131a、几何从单元132a、计算主单元131b、计算从单元132b、第一处理单元133和第二处理单元134。
[0142]
如上文解释的,几何主单元是被配置成从应用程序驱动程序接收几何处理任务和处理几何处理任务所需的状态信息的主单元。几何主单元负责将几何处理任务拆分成子集任务,将子集指派给gpu内的核,以及将子集任务的指示和处理这些子集所需的状态信息的元素的指示传输到它们已被指派给的核。几何从单元是被配置成从几何主单元接收子集几何处理任务的指示以及处理该子集所需的状态信息的元素的指示的从单元。核的几何从单元管理该核的处理单元对几何处理任务的执行。
[0143]
类似地,计算主单元是被配置成从应用程序驱动程序接收计算处理任务,并接收处理计算任务所需的状态信息的主单元。计算主单元负责将计算任务拆分为子集任务,将子集指派给gpu内的核,以及将子集任务的指示和处理这些子集所需的状态信息的元素的指示传输给它们已被指派给的核。计算从单元是被配置成从计算主单元接收子集计算处理任务的指示和处理该子集所需的状态信息的元素的指示的从单元。核的计算从单元管理该核的处理单元对计算任务的执行。
[0144]
在图2的示例中,gpu 200被配置成处理几何处理任务和计算处理任务。因此,gpu 200有两个活动主单元—第一核210的几何主单元111a和第二核220的计算主单元121b。应当理解,任何几何主单元和任何计算主单元都可以被选择为两个活动主单元。gpu 200中的所有其他主单元都是不活动的,如图2中的阴影表示的。几何主单元111a包括第一高速缓存(图2中未示出)。计算主单元121b包括第二高速缓存(图2中未示出)。
[0145]
几何主单元111a被配置成从应用程序驱动程序接收几何处理任务和处理这些任务所需的状态信息。计算主单元121b被配置成从应用程序驱动程序接收计算任务和处理这些任务所需的状态信息。几何主单元111a被配置成在第一高速缓存中缓存(存储)发送给它的状态信息,计算主单元121b被配置成在第二高速缓存中缓存(存储)发送给它的状态信息。与图1的活动主单元111一样,几何主单元111a维护其已发送至核的状态信息的元素的记录,计算主单元121b维护其已发送至核的状态信息的元素的记录。
[0146]
在gpu包括两个以上核的示例,例如图2的示例中,活动几何主单元111a选择gpu 200的一个或多个核以执行几何处理任务。类似地,活动计算主单元121b选择gpu 200的一个或多个核以执行计算任务。每个活动主单元可以选择相同数目的核或不同数目的核。每个活动主单元可以选择相同的核或不同的核。核中的一些可由多于一个活动主单元选择。在考虑状态信息的管理时,特别值得注意的情况是活动主单元选择gpu 200的两个或更多个核来执行任务。
[0147]
在图2的示例中,我们假设活动几何主单元111a选择第一核210和第二核220来执行几何处理任务。应注意,由于几何主单元111a不选择第三核230来执行几何处理任务,所以几何主单元111a发送至第三核230的状态信息的唯一元素是状态信息的累积元素(因为根据本实施方案,这些元素被发送至所有核)。
[0148]
在图2的示例中,活动计算主单元121b选择第一核210和第三核230来执行计算任务(在其它示例中,活动计算主单元121b可选择不同的核组合)。因为计算主单元121b不选择第二核220来执行计算处理任务,所以计算主单元121b发送到第二核220(更具体地,发送到计算从单元122b)的状态信息的唯一元素是状态信息的累积元素。计算主单元121b将该组计算任务拆分成至少第七子集任务和第八子集任务。计算主单元121b将第七子集任务指派给第一核210,并将第八子集任务指派给第三核230。计算主单元121b识别处理第七子集任务所需的状态信息的元素(本文称为第七元素),且识别处理第八子集任务所需的状态信息的元素(本文称为第八元素)。计算主单元121b将第七子集任务的指示传输到第一核210,并将第七元素的指示传输到第一核210。计算主单元121b将第八子集任务的指示传输到第三核230,并将第八元素的指示传输到第三核230。
[0149]
与图1的活动主单元111一样,几何主单元111a在已向任何核传输状态信息后更新其记录,计算主单元121b在已向任何核传输状态信息后更新其记录。
[0150]
计算主单元121b可以被配置成以与上文针对图1的活动主单元111描述的方式相同的方式管理附加计算任务和相关联状态信息的附加元素。gpu 200的计算从单元可以与图1的gpu 100的从单元112相同的方式配置。更一般地,除了活动主单元管理不同类型的任务和状态信息之外,gpu内的两个活动主单元的操作可以基本上相同,并且可以选择不同的核来执行这些任务。
[0151]
现在将参考图3解释由图1的gpu 100执行的示例性方法300。
[0152]
在步骤301中,活动主单元111接收一组图像渲染任务和处理图像渲染任务所需的状态信息。状态信息包括状态信息的累积元素。在步骤302中,活动主单元111将状态信息存储在高速缓存115中。在步骤303中,活动主单元111将状态信息的累积元素的指示传输到第一核110和第二核120。在本示例中,活动主单元111将状态信息的累积元素(而不是状态信息在存储器中的地址)传输到核。然而,在其它示例中,活动主单元111将状态信息的累积元素在存储器中的地址传输到核。
[0153]
在步骤304中,活动主单元111将一组图像渲染任务拆分成第一子集任务和第二子集任务。在步骤305中,活动主单元111将第一子集任务指派给第一核110。在步骤306中,活动主单元111将第二子集任务指派给第二核120。
[0154]
在步骤307中,活动主111单元识别状态信息的第一元素。在步骤308中,活动主单元111识别状态信息的第二元素。在一个示例中,核可能需要状态信息的所有元素来处理第一子集任务和第二子集任务中的一个。因此,活动主单元111将状态信息的所有元素识别为状态信息的第一元素和第二元素两者。
[0155]
在步骤309中,活动主单元111将第一子集任务的指示传输到第一核110。在步骤310中,活动主单元111将第二子集任务的指示传输到第二核120。在步骤311中,活动主单元111将状态信息的一部分的指示传输到第一核110。更具体地,在本示例中,活动主单元111将第一元素传输到第一核110的从单元112。在步骤312中,活动主单元111将状态信息的一部分的指示传输到第二核120。更具体地,在本示例中,活动主单元111将第二元素传输到第二核120的从单元122。如先前所述,活动主单元111仅向第一核发送状态信息的第一元素(第一核处理第一子集任务所需的元素)的指示,并且仅向第二核120发送第二元素(第二核处理第二子集任务所需的元素)的指示。在上述示例中,状态信息的元素的所有指示被发送
至第一核110和第二核120,因为状态信息的所有元素被识别为是处理第一子集任务和第二子集任务所必需的。
[0156]
在步骤313中,活动主单元111更新状态信息的记录,以反映第一元素已被传输到第一核110且第二元素已被传输到第二核120的事实。在步骤314a中,活动主单元111接收附加状态信息。在步骤314b中,活动主单元111接收附加的一组几何处理任务。在本示例中,附加状态信息包括状态信息的新元素和状态信息的更新元素。状态信息的更新元素取代存储在高速缓存115中并在记录中表示的状态信息的现有元素。
[0157]
在步骤315中,活动主单元111将状态信息的新元素存储在高速缓存115中。在步骤316中,活动主单元更新记录以包括状态信息的新元素,并指示状态信息的该元素尚未传输到任何核。在步骤317中,活动主单元111通过替换被更新元素取代的状态信息的元素来将状态信息的更新元素存储在高速缓存115中。在步骤318中,活动主单元111更新记录以指示状态信息的元素尚未传输到任何核。
[0158]
在本示例中,状态信息的更新元素是拓扑信息。高速缓存115中存储的拓扑信息被更新拓扑信息替换,并且记录被更新以指示没有核接收到拓扑信息。
[0159]
我们现在转到图4a,该图是图3的方法300的延续,从步骤316和318继续。在步骤319中,活动主单元111将附加的一组任务拆分成第三子集任务和第四子集任务。在步骤320中,活动主单元111将第三子集任务指派给第一核110。在步骤321中,活动主单元111识别状态信息的第三元素。如上文解释的,状态信息的第三元素是处理第三子集任务所需的且尚未传输到第一核110的状态信息的元素。活动主单元111通过将处理第三子集任务所需的状态信息的元素与状态信息的记录进行比较来识别第三元素。
[0160]
在步骤322中,活动主单元111将第三子集任务的指示传输到第一核110。在步骤323中,活动主单元111将状态信息的第三元素的指示传输到第一核110。
[0161]
我们现在转到图4b,该图也是图3的方法300的延续,在步骤313之后开始。在步骤324中,活动主单元111接收状态信息的新累积元素。在步骤325中,活动主单元111将新累积元素的指示传输到gpu 100中的每个核。
[0162]
我们现在转向图4c,该图也是图3的方法300的延续,从步骤311开始。在步骤326中,从单元112接收第一子集任务的指示和状态信息的第一元素的指示。因为从单元112和活动主单元111在同一核中,所以第一子集任务的指示和状态信息的第一元素的指示可以在不离开核的情况下直接从活动主单元111传输到从单元112。
[0163]
在步骤327中,从单元112将第一子集任务拆分成第五子集任务和第六子集任务。在步骤328中,从单元112将第五子集任务发送至第一处理单元113。在步骤329中,从单元112将第六子集任务发送至第二处理单元114。在步骤330中,从单元112将状态信息的第一元素转发到第一处理单元113。在步骤331中,从单元112将状态信息的第一元素转发到第二处理单元114。通过将第一元素整体转发到两个处理单元113、114,从单元112确保每个处理单元能够处理第一组任务中的任何任务。
[0164]
具有对应于步骤326-331的步骤的类似方法可由第二核的从单元122执行。由于从单元122与活动主单元111不在同一核中,所以活动主单元111通过链接第一核110和第二核120的寄存器总线101传输指示。在一些示例中,从单元122可以直接从寄存器总线接收此数据。在其它示例中,第二核120的另一硬件单元(接口单元)可与寄存器总线相接并将数据转
发到从单元122。
[0165]
在gpu包括附加活动主单元的示例(例如,图2的示例)中,附加活动主单元可以执行与上文针对活动主单元111描述的那些方法步骤(步骤301-325)对应的但用于不同类型的图像渲染任务的方法步骤。例如,gpu 200的计算主单元121b可以接收一组计算任务和处理计算任务所需的状态信息,并将该组计算任务拆分成第七子集任务和第八子集任务。
[0166]
在一些示例中,一组图像渲染任务中包含的多个子集任务需要状态信息的相同元素可用,以便处理这些任务。(在本示例中,状态信息的此类元素被称为“共享元素”。)在这些示例中,一旦核已接收到所有共享元素,它就能够处理多个子集任务中的任何/全部。优选地,为了减少寄存器总线上的不必要的数据传输,活动主单元仅将共享元素的指示传输到核一次。活动主单元可以接着将多个子集中的一些/全部的指示传输到核,而不需要将任何另外的状态信息传输到核。换句话说,活动主单元可以将状态信息的一部分传输到核(一次),但可以将多个子集任务的指示传输到该核,这依赖于该状态信息。在一些示例中,活动主单元可优先将子集任务指派给记录显示已具有处理这些子集任务所需的状态信息的核。
[0167]
用于几何处理任务的特殊类型的状态信息是绘制状态。对于一组几何处理任务,绘制状态是通用的,因为需要绘制状态的元素来处理(一组几何处理任务中的)所有几何处理任务。换句话说,一组几何处理任务可以包含许多子集任务,但仅具有一个绘制状态。活动几何主单元将绘制状态传输到已被指派子集几何处理任务的核中的每个核。优选地,为了避免数据在核之间的冗余传输,活动几何主单元针对一组任务仅将绘制状态传输给核一次。如果核需要状态信息的另外元素来处理特定子集几何处理任务,则活动主单元使用记录确定这一点并将另外元素传输到核,但不将绘制状态重新传输到核。换句话说,活动几何主单元可以将一组几何处理任务拆分成多个子集任务,并且可以将许多子集任务传输到核,但它仅将绘制状态传输到核一次。
[0168]
更一般地,活动主单元优选地不将已发送到核的状态信息的元素(如记录指示的)重新发送到该核。
[0169]
应当理解,本公开的范围不限于上面的示例。许多变化是可能的,包括但不限于以下所述。
[0170]
在图1的示例中,主单元111是被配置成接收和分配几何处理任务和几何状态信息的几何处理主单元。然而,在其它示例中,主单元111实际上可以是另一种类型的主单元—例如,被配置成接收和分配计算任务和计算类型状态信息,或片段任务和片段类型状态信息,或任何其他类型的图像渲染任务和相关联状态信息。
[0171]
在图1和图2的示例中,活动主单元将状态信息存储在所述主单元内包含的高速缓存中。然而,在其它示例中,活动主单元可以将状态信息存储在主单元外部的高速缓存或其它存储装置中。当高速缓存在主单元外部时,其仍可以位于与所讨论主单元相同的核内,或至少在gpu内。在一些示例中,活动主单元111可以被配置成将状态信息存储在存储器140中。在一些示例中,gpu中的每个主单元可以具有其自身的高速缓存,其包含在主单元内或与该主单元处于同一核中。
[0172]
在图1的示例中,活动主单元111将第一子集任务在存储器140中的地址传输到第一核,并将状态信息的第一元素传输到第一核。应理解,在其它示例中,可使用不同的指示组合。此外,在gpu包括多个不同类型的活动主单元的情况下,两个活动主单元可以使用不
同的指示将子集任务和/或状态信息的元素传输到核。例如,活动主单元可以在将子集任务的指示(或状态信息的元素的指示)传输到其驻留的核(更具体地,传输到该核的从单元)时将子集元素传输到核。然而,当活动主单元将指示传输到gpu的不同核时,它可以传输子集或元素在存储器中的地址,以便减少通过寄存器总线发送的数据量。
[0173]
在上述示例中,活动主单元仅向核传输已被活动主单元识别为是处理指派给该核的子集任务所需的状态信息的元素。在一些示例中,除了状态信息的所需元素之外,活动主单元还可以将处理指派给核的任务不需要的状态信息的附加元素传输到该核。然而,除了在指派给核的子集任务需要所有状态信息的情况下之外,为了处理该子集任务,活动主单元不将所有状态信息传输到核可能是有利的。换句话说,活动主单元至少向核传输处理指派给该核的子集任务所需的状态信息的一部分,但在可能的情况下,避免传输所有状态信息。更一般地,当将状态信息发送至核时,活动主单元可以将状态信息的一些但并非全部元素传输到该核。
[0174]
在一些示例中,多于一个核需要状态信息的元素。因此,状态信息的第一元素和状态信息的第二元素可以包含一些相同元素。
[0175]
在上述示例中,由活动主单元接收的附加状态信息包括状态信息的新元素和状态信息的更新元素两者。然而,在一些示例中,附加状态信息可仅包括状态信息的新元素或仅包括状态信息的更新元素。
[0176]
在图1的示例中,活动主单元111被配置成将第三子集任务和第三元素指派给并传输到第一核110。在一些示例中,活动主单元111可以改为将第三子集任务指派给第二核(或在gpu包含两个以上核时,指派给gpu中存在的任何其它核)。在这种情况下,第三元素的确定是基于哪些元素先前已被传输到第二(或其它)核。更一般地,应理解,仅在相应的子集任务已指派给核之后才识别状态信息的第一/第二/第三等元素,且所述元素的识别基于状态信息的哪些元素已被传输到子集被指派给的核。
[0177]
活动主单元111可以将第四子集任务指派给gpu 100的任何核。活动主单元111可以识别第三元素的相同方式识别状态信息的第四元素。活动主单元111可以向第四子集被指派给的核传输第四元素的指示和第四子集任务的指示。在一些示例中,活动主单元111可以将第三子集和第四子集指派给同一核。
[0178]
在一些示例中,gpu的每个核包括与核的主单元和从单元以及寄存器总线101通信的接口单元。核的接口单元被配置成将通信从所述核中的主单元转发到寄存器总线,并且被配置成将通信从寄存器总线转发到核的从单元。在其它示例中,核的主单元和从单元与寄存器总线直接相接。
[0179]
在图1的示例中,第一核110和第二核120各自包括单个主单元和单个从单元。然而,在一些示例中,gpu的每个核可以包括两个或更多个主单元和对应数目的从单元。尽管核可以包括多个主单元,但核中的每个主单元可以被配置成接收和解析不同类型的图像渲染任务。例如,核通常不包含多个几何主单元或多个计算主单元。在一些示例中,gpu的一些(但并非全部)核可能不包括主单元。例如,在一些示例中,gpu 100的第二核120可能不包括主单元121。更一般地,任何在gpu中不活动的主单元可能反而根本不存在于gpu中。
[0180]
在图1和图2的示例中,每个核包括两个处理单元。然而,在一些示例中,每个核可能仅包含一个处理单元,或可能包含多于两个处理单元。在一些示例中,第一核和第二核可
包括不同数目的处理单元。
[0181]
在图2的示例中,gpu 200的每个核210、220、230包括几何主单元和几何从单元,以及计算主单元和计算从单元。然而,在一些示例中,每个核可包括被配置成管理不同于图2所论述的那些的图像渲染任务的类型(或类型的组合)的主单元和从单元。例如,每个核可以包括片段主单元和片段从单元,以及几何主单元和几何从单元。
[0182]
在图2的示例中,两个活动主单元111a、121b驻留在不同核中。然而,在一些示例中,单个核可包括两个/全部活动主单元。
[0183]
在图2的示例中,几何主单元111a选择第一核210和第二核220来执行几何处理任务。计算主单元121b选择第一核210和第三核230来执行计算任务。然而,可以做出其它选择。gpu 200中的每个活动主单元可以选择gpu 200的任何一个或多个核来执行图像渲染任务。主单元选择的核的数目及其选择的核可取决于许多不同因素。例如,与接收包含较小数目的任务的一组图像渲染任务的活动主单元相比,接收包含大数目的任务的一组图像渲染任务的活动主单元可选择更多核来处理这些任务。可能影响核选择的另一因素是负载平衡。活动主单元可以优先选择空闲核,或者选择远未达到全容量的核,而不是选择更接近全容量的较繁忙的核。在一些示例中,可暂时保留核以处理仅一种类型的图像渲染任务,例如,几何处理任务。gpu的活动几何主单元可以优先将子集任务指派给此保留核,而所有其他活动主单元可以避免将子集任务指派给该核。
[0184]
在上述示例中,活动主单元将一组任务拆分成第一子集任务和第二子集任务。更一般地,活动主单元可以将一组任务拆分成两个或更多个子集任务。
[0185]
在图3的示例中,方法300被描绘为具有各种路径。这方面的一个例子是从步骤301延伸的三种路径。方法300将三种方式拆分成步骤302、步骤303和步骤304。应理解,这种拆分并不意味着这三种路径是三个替代步骤。相反,其旨在显示每个不同路径之间没有特定的时间关系,因为没有一个步骤需要先于(或跟随)另一个步骤。例如,步骤302可以在步骤304之前或之后发生。所有三个步骤可同时执行,或者以任何顺序执行。除非另外明确说明,否则图3中描绘的所有路径一般都是如此。这方面的另一示例是步骤305和306,这两个步骤都在单独的路径上从步骤304延伸。这旨在显示,虽然步骤305和306都被执行,但它们可以任何顺序执行,包括同时执行。
[0186]
应理解,方法步骤303、307-308和步骤313-331是任选的。在一些示例中,可省略这些步骤中的一些或全部。
[0187]
在图4a的示例中,第三子集任务被指派给第一核110。然而,在其它示例中,第三子集任务可以被指派给不同的核。换句话说,第三子集任务可以被指派给gpu的任何核。应理解,虽然图4a中未描绘,但活动主单元111可执行对应于第四子集任务的步骤320-323的方法步骤。活动主单元111可以将第四子集任务指派给并传输到与第三子集任务相同的核,或传输到不同的核。
[0188]
在上述示例中,核由寄存器总线101链接。然而,在其它示例中,核可以通过其它通信装置,例如通过xpu总线来链接。xpu总线可以使用行业标准axi协议。在一些示例中,核可以与用于承载核之间的通信的专用连接来连接。如上文所解释的,在一些示例中,当活动主单元将子集任务的指示和状态信息的元素的指示传输到活动主单元驻留的核中的从单元时,活动主单元可以将该信息直接传输到从单元,且不通过寄存器总线101(或链接核的其
它通信装置)传输。在此类示例中,活动主单元可优先将子集任务指派给其驻留的核。这是因为在核内传输信息并不会促成对使用寄存器总线的竞争。
[0189]
上文描述且在图中描绘的示例涉及gpu包括两个或三个核的示例。然而,应理解,本公开可应用于包括多于三个核的gpu。例如,gpu可以包括四个核。
[0190]
在上述示例中,gpu的核被设计且示例化为相同组件。从设计和验证的角度来看,这更方便,并且有利于扩展性。但是,情况不一定如此。在一些示例中,核可以不同,因为非活动主单元可能不存在于gpu中。换句话说,仅包括活动主单元的核才完全包括任何主单元。
[0191]
虽然以上示例主要集中在第一核110上,但应理解,针对第一核110描述的特征可以推广为适用于gpu中的任何核。例如,图4c的方法可以应用于第二核120的从单元122,以管理第二子集任务和状态信息的第二元素。
[0192]
在图1的示例中,第一核110包括活动主单元111。然而,在其它示例中,第一核110的主单元111可以是非活动的,并且第二核120的主单元121可以是活动的。应注意,当gpu中存在至少三个核时,活动主单元可能将或可能不将子集任务指派给其驻留的核。
[0193]
图5示出了可以在其中实现本文所述的图形处理系统的计算机系统。计算机系统包括cpu 902、gpu 904、存储器906和其他装置914,例如显示器916、扬声器918和相机919。处理块910(对应于核110、120或210、220、230和寄存器总线101)在gpu 904上实施。在其他示例中,处理块910可以在cpu 902上实施。计算机系统的部件可经由通信总线920彼此进行通信。存储装置912(对应于存储器140)被实施为存储器906的一部分。
[0194]
图1至图2的gpu被示出为包括若干功能块。这仅是示意性的,并且不旨在限定这类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式来提供。应理解,在本文中被描述为由gpu形成的中间值不需要由所述gpu在任何时间点物理地生成,并且可以仅仅表示方便地描述由所述gpu在其输入和输出之间执行的处理的逻辑值。
[0195]
本文所描述的gpu可体现在集成电路上的硬件中。本文所描述的gpu可配置成执行本文所描述的任一方法。一般来说,上文所描述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如固定逻辑电路系统)或它们的任何组合中实施。本文中可以使用术语“模块”、“功能性”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或它们的任何组合。在软件实施方式的情况下,模块、功能性、部件、元件、单元、块或逻辑表示程序代码,当在处理器上被执行时,所述程序代码执行指定任务。本文中所描述的算法和方法可由执行代码的一个或多个处理器执行,所述代码促使处理器执行算法/方法。计算机可读存储介质的示例包括随机访问存储器(ram)、只读存储器(rom)、光盘、闪存存储器、硬盘存储器,以及可使用磁性、光学和其他技术来存储指令或其他数据并且可由机器访问的其他存储器装置。
[0196]
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如c、或opencl等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行
由该代码指定的任务。
[0197]
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或它们的具有处理能力以使得其可执行指令的集合或部分。处理器可以是任何种类的通用或专用处理器,诸如cpu、gpu、nna、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等。计算机或计算机系统可包括一个或多个处理器。
[0198]
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(hdl)软件,用于设计集成电路或用于配置可编程芯片以实现所需功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中被处理(即运行)时,该计算机可读程序代码将该系统配置成制造被配置成执行本文中所描述的任何方法的gpu或图形处理系统,或者制造包括本文中所描述的任何设备的gpu或图形处理系统。集成电路定义数据集可以是例如集成电路描述。
[0199]
因此,可提供一种在集成电路制造系统处制造如本文中所描述的gpu或图形处理系统的方法。此外,可提供一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中被处理时,使得制造gpu或图形处理系统的方法得以执行。
[0200]
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包含作为寄存器传输级(rtl)代码,作为高级电路表示法(例如verilog或vhdl),以及作为低级电路表示法(例如oasis(rtm)和gdsii)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(例如rtl)可在计算机系统处进行处理,所述计算机系统被配置成用于在软件环境的上下文中产生集成电路的制造定义,所述软件环境包括电路元件的定义以及用于组合这些元件以便产生由所述表示法如此定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
[0201]
现在将参照图6描述在集成电路制造系统处处理集成电路定义数据集以便将该系统配置为制造gpu或图形处理系统的示例。
[0202]
图6示出了集成电路(ic)制造系统1002的示例,该集成电路制造系统被配置为制造如本文任何示例中描述的gpu或图形处理系统。特别地,ic制造系统1002包括布局处理系统1004和集成电路生成系统1006。ic制造系统1002被配置为接收ic定义数据集(例如,定义如本文任何示例中描述的gpu或图形处理系统)、处理ic定义数据集,以及根据ic定义数据集生成ic(例如,其包含如本文任何示例中描述的gpu或图形处理系统)。对ic定义数据集的处理将ic制造系统1002配置成制造包含如本文任何示例中描述的gpu或图形处理系统的集成电路。
[0203]
布局处理系统1004被配置为接收和处理ic定义数据集以确定电路布局。根据ic定义数据集确定电路布局的方法在本领域中是已知的,并且例如可涉及合成rtl代码以确定待生成电路的门级表示,例如就逻辑部件(例如,nand、nor、and、or、mux和flip-flop部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1004已经确定电路布局时,其可将电路布局定义输出到ic生成系统1006。电路布局定义可以是例如电路布局描
述。
[0204]
如本领域中所已知,ic生成系统1006根据电路布局定义来生成ic。例如,ic生成系统1006可实施用以生成ic的半导体装置制造工艺,所述半导体装置制造工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,掩模可在光刻工艺中用于根据电路定义来生成ic。可替代地,提供给ic生成系统1006的电路布局定义可呈计算机可读代码的形式,ic生成系统1006可使用所述计算机可读代码来形成用于生成ic的合适的掩模。
[0205]
由ic制造系统1002执行的不同过程可全部在一个位置例如由一方来实施。替代地,ic制造系统1002可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些可以在不同位置和/或由不同各方来执行:(i)合成表示ic定义数据集的rtl码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
[0206]
在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可将该系统配置成在不处理ic定义数据集以确定电路布局的情况下制造gpu或图形处理系统。例如,集成电路定义数据集可以定义可重新配置的处理器诸如fpga的配置,并且对所述数据集进行的处理可以将ic制造系统配置成(例如,通过将配置数据加载到fpga)生成具有所述定义的配置的可重新配置的处理器。
[0207]
在一些实施例中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可使集成电路制造系统产生如本文中所描述的装置。例如,通过集成电路制造定义数据集,以上文参考图6所述的方式对集成电路制造系统进行配置,可以使得制造如本文所述的装置。
[0208]
在一些示例中,集成电路定义数据集可以包含在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图6中所示出的示例中,ic生成系统还可由集成电路定义数据集配置成在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。
[0209]
与已知的实施方式相比,在本技术中阐述的概念在装置、设备、模块和/或系统中(以及本文中实现的方法中)的实现可以带来性能改进。性能改进可包括计算性能提高、等待时间减少、吞吐量增大和/或功耗降低中的一者或多者。在(例如在集成电路中)制造这类装置、设备、模块和系统期间,可在性能改进与物理实现之间进行权衡,从而改进制造方法。例如,可在性能改进与布局面积之间进行权衡,从而匹配已知实施方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,本技术中所阐述的带来装置、设备、模块和系统的物理实现的改进(例如硅面积减小)的概念可与性能提高进行权衡。这可以例如通过在预定义面积预算内制造模块的多个实例来完成。
[0210]
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

技术特征:
1.一种包括多个核的图形处理单元(100),其中所述多个核中的一个核包括第一主单元,所述第一主单元被配置成:接收一组图像渲染任务和状态信息,其中所述状态信息包括处理所述图像渲染任务所需的状态信息的元素;将所述状态信息存储在存储器中;将所述一组图像渲染任务拆分成至少第一子集任务和第二子集任务;将所述第一子集任务指派给所述多个核中的第一核(110);将所述第二子集任务指派给所述多个核中的第二核(120);将所述状态信息的至少第一部分的指示传输到所述第一核(110);将所述状态信息的至少第二部分的指示传输到所述第二核(120);将所述第一子集任务的指示传输到所述第一核(110);将所述第二子集任务的指示传输到所述第二核(120);并且其中所述多个核中的每个核包括被配置成执行图像渲染任务的从单元。2.根据权利要求1所述的图形处理单元(100),其中所述第一主单元还被配置成:识别处理所述第一子集任务所需的所述状态信息的第一元素;以及识别处理所述第二子集任务所需的所述状态信息的第二元素,其中所述状态信息的第一部分由所述状态信息的第一元素组成,并且所述状态信息的第二部分由所述状态信息的第二元素组成。3.根据前述权利要求中任一项所述的图形处理单元(100),其中所述多个核中的一个核包括第二主单元,所述第二主单元被配置成:接收第二组图像渲染任务和第二状态信息,其中所述第二状态信息包括处理所述第二组图像渲染任务所需的第二状态信息的元素;将所述第二状态信息存储在第二存储器中;将所述第二组图像渲染任务拆分成至少第五子集任务和第六子集任务;将所述第五子集任务指派给所述第一核(110);将所述第二状态信息的至少一部分的指示传输到所述第一核(110);以及将所述第五子集任务传输到所述第一核(110)。4.根据前述权利要求中任一项所述的图形处理单元(100),其中:所述多个核由寄存器总线(101)连接,所述寄存器总线被配置成在所述核之间传送寄存器写入命令;所述第一主单元被配置成输出至少第一寄存器写入命令和第二寄存器写入命令;所述第一寄存器写入命令寻址到所述第一核,并且包括处理所述第一子集任务所需的状态信息的元素的指示;并且所述第二寄存器写入命令寻址到所述第二核,并且包括处理所述第二子集任务所需的状态信息的元素的指示。5.根据前述权利要求中任一项所述的图形处理单元(100),其中所述第一核(110)包括被配置成处理图像渲染任务的多个处理单元(113、114),并且其中所述第一核的从单元(112)被配置成:接收第一子集图像渲染任务和所述状态信息的第一部分;
将所述第一子集图像渲染任务拆分成第七子集任务和第八子集任务;将所述第七子集发送至第一处理单元(113);将所述第八子集发送至第二处理单元(114);将所述状态信息的第一部分转发到所述第一处理单元(113);以及将所述状态信息的第一部分转发到所述第二处理单元(114)。6.一种在包括多个核的图形处理单元(100)中分配一组图像渲染任务和状态信息的方法(300),所述方法包括:由所述多个核中的一个核中的第一主单元接收(301)所述一组图像渲染任务和所述状态信息,其中所述状态信息包括处理所述图像渲染任务所需的状态信息的元素;由所述第一主单元将所述状态信息存储(302)在存储器中;由所述第一主单元将所述一组图像渲染任务拆分(304)成至少第一子集任务和第二子集任务;由所述主单元将所述第一子集任务指派(305)给所述第一核(110);由所述主单元将所述第二子集任务指派(306)给所述第二核(120);由所述主单元向所述第一核传输(311)所述状态信息的至少第一部分;由所述主单元向所述第二核(120)传输(312)所述状态信息的至少第二部分;由所述主单元向所述第一核(110)传输(309)所述第一子集任务;以及由所述主单元向所述第二核(120)传输(310)所述第二子集任务。7.根据权利要求6所述的方法(300),还包括:由所述第一主单元识别(307)处理所述第一子集任务所需的状态信息的第一元素;以及由所述第一主单元识别(308)处理所述第二子集任务所需的状态信息的第二元素,其中所述状态信息的第一部分由所述状态信息的第一元素组成,并且所述状态信息的第二部分由所述状态信息的第二元素组成。8.根据权利要求7所述的方法(300),其中所述第一主单元:不向所述第一核(110)传输除所述状态信息的第一元素之外的状态信息的任何元素;并且不向所述第二核(120)传输除所述状态信息的第二元素之外的状态信息的任何元素。9.根据权利要求6至8中任一项所述的方法(300),还包括:由所述第一主单元维护状态信息的每个元素已被传输到其的那些核的记录;以及在每次将状态信息的元素传输到所述核中的一个核时由所述第一主单元更新(313)所述记录。10.根据权利要求9所述的方法(300),还包括:由所述第一主单元接收(314a)附加状态信息,其中所述附加状态信息包括以下各项中的一者或多者:(a)

状态信息的新元素,其中所述方法还包括:由所述主单元存储(315)所述状态信息的新元素;以及由所述主单元更新(316)所述记录以包括所述状态信息的新元素并且指示所述新元素尚未传输到所述核中的任一个;或
(b)

状态信息的更新元素,其中所述方法还包括:由所述主单元用所述状态信息的更新元素替换(317)所述存储器中存储的状态信息的元素;以及由所述主单元更新(318)所述记录以指示所述更新元素尚未传输到所述核中的任一个,由所述第一主单元接收(314b)与所述附加状态信息相关联的附加的一组图像渲染任务;由所述第一主单元将所述附加的一组图像渲染任务拆分(319)成至少第三子集任务和第四子集任务;由所述第一主单元将所述第三子集任务指派(320)给所述第一核;基于所述记录识别(321)状态信息的第三元素,其中所述状态信息的第三元素是处理所述第三子集任务所需的并且尚未传输到所述第一核(110)的状态信息的元素;由所述第一主单元向所述第一核(110)传输(323)所述状态信息的第三元素的指示;以及由所述第一主单元将所述第三子集任务的指示传输(322)到所述第一核(110)。11.根据权利要求6至10中任一项所述的方法(300),其中:所述状态信息包括状态信息的累积元素;并且所述方法还包括由所述第一主单元将所述状态信息的累积元素传输(303)到所述图形处理单元中的每个核。12.根据权利要求11所述的方法(300),还包括:由所述第一主单元接收(324)状态信息的新累积元素;以及由所述第一主单元将所述状态信息的新累积元素传输(325)到所述多个核中的每个核。13.根据权利要求6至12中任一项所述的方法(300),还包括:由所述第一核(110)的从单元(112)接收(326)所述第一子集任务和所述状态信息的第一部分;由所述从单元(112)将所述第一子集任务拆分(327)成第五子集任务和第六子集任务;由所述从单元(112)将所述第五子集任务发送(328)到所述第一核(110)的第一处理单元(113);由所述从单元(112)将所述第六子集任务发送(329)到所述第一核(110)的第二处理单元(114);由所述从单元(112)将所述状态信息的第一部分转发(330)到所述第一处理单元(113);以及由所述从单元(112)将所述状态信息的第一部分转发(331)到所述第二处理单元(114)。14.根据权利要求6至13中任一项所述的方法(300),还包括:由所述多个核中的一个核中的第二主单元接收第二组图像渲染任务和第二状态信息,其中所述第二状态信息包括处理所述第二组图像渲染任务所需的第二状态信息的元素;由所述第二主单元将所述第二状态信息存储在第二存储器中;
由所述第二主单元将所述第二组图像渲染任务拆分成至少第七子集任务和第八子集任务;由所述第二主单元将所述第七子集任务指派给所述第一核;由所述第二主单元向所述第一核传输所述第二状态信息的至少一部分;以及由所述第二主单元将所述第七子集任务传输到所述第一核。15.一种使用集成电路制造系统制造根据权利要求1至5中任一项所述的图形处理单元的方法,所述方法包括:使用布局处理系统处理所述图形处理单元的计算机可读描述,以便生成包含所述图形处理单元的集成电路的电路布局描述;以及使用集成电路生成系统,根据所述电路布局描述制造所述图形处理单元。16.一种计算机可读存储介质,其上存储有计算机可读代码,所述计算机可读代码被配置成在运行所述代码时使得根据权利要求6至14中任一项所述的方法得以执行。17.一种计算机可读存储介质,其上存储有根据权利要求1至5中任一项所述的图形处理单元的计算机可读描述,所述计算机可读描述当在集成电路制造系统中被处理时,使所述集成电路制造系统执行以下操作:使用布局处理系统处理所述图形处理单元的计算机可读描述,以便生成包含所述图形处理单元的集成电路的电路布局描述;以及使用集成电路生成系统,根据所述电路布局描述制造所述图形处理单元。18.一种集成电路制造系统,包括:非暂态计算机可读存储介质,其上存储有根据权利要求1至5中任一项所述的图形处理单元的计算机可读描述;布局处理系统,其配置成处理所述计算机可读描述,以便生成包含所述图形处理单元的集成电路的电路布局描述;以及集成电路生成系统,其配置成根据所述电路布局描述制造所述图形处理单元。

技术总结
本申请涉及图形处理中的多核状态缓存。本发明提供了一种多核图形处理单元(GPU)和一种操作GPU的方法。GPU至少包括第一核和第二核。多核GPU中的至少一个核包括主单元,所述主单元被配置成在至少第一核与第二核之间分配图像渲染任务和状态信息。像渲染任务和状态信息。像渲染任务和状态信息。


技术研发人员:I
受保护的技术使用者:想象技术有限公司
技术研发日:2023.03.29
技术公布日:2023/10/19
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐