多核主/从通信的制作方法

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

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


背景技术:

4.在计算机图形中,“渲染”是将描述虚拟场景的3d模型转换为表示来自特定视点(或若干视点)的场景的视图的一个或多个2d图像的过程。由于这是一个计算密集的过程,对于典型的虚拟场景,通常提供专门进行必要计算的硬件加速器。这种硬件加速器在本领域中称为图形处理单元(gpu)。
5.不同的gpu可以具有不同的硬件架构,反映用于执行3d渲染所必需的计算的不同策略。一个示例性gpu使用“基于图块的延迟渲染”流水线。
6.此方法将渲染过程分成两个不同的阶段。首先,处理描述场景的3-d模型的几何形状数据,以基于要渲染的特定视点将其从3-d空间转换成图像的2-d坐标。这将被称为几何处理阶段(或简称为“几何处理”)。这个阶段的输出是经转换的几何形状,其存储在所称的“参数块”中的“参数缓冲区”中。
7.参数缓冲区中的经转换几何形状将用于确定“片段”。因此,第二阶段被称为片段着色或片段处理阶段。它也可以被称为“3d”阶段,或者简称为“片断处理”。
8.在第二阶段中,从参数缓冲区读取经转换的几何形状数据并对其进行光栅化,这意味着变换为片段并映射到像素。作为这个过程的一部分,执行深度测试以确定每个像素(或样本位置,如果样本位置与像素之间不存在一对一对应关系)实际可见的片段。在延迟渲染系统中,仅在系统已确定可见哪些片段时,gpu才继续检索相关可见片段的纹理数据(包含颜色信息)。对于每个可见片段运行着色器程序,并且着色片段用于确定要显示的像素值。
9.在过去,通过将多核系统中的核(经由单独的专用连接)连接到中央集线器,对多个核并行地执行渲染工作。中央集线器将工作指派给每个核,并包括所有核可访问的共享缓存。例如,当每个核上的处理能力变得可用时,中央集线器将渲染任务分配给多核系统的核,以协调它们以便并行地处理渲染任务。
10.由于现代图形处理单元的速度和带宽增加,中央集线器系统不再是能够实施并行处理的实用手段。中央集线器系统面临的一个问题是芯片空间问题——中央集线器与核之间的专用连接并不直接促成对渲染任务的处理。然而,它们占据可用于另一核的芯片空间。
11.另一个相关问题是可扩展性问题。虽然可以向多核系统添加额外核以提高其性能,但这也会增加所需的专用连接的数目和芯片布局的复杂性。
12.需要开发一种多核gpu,其更高效地利用芯片空间并且可以实现更高程度的并行
化。


技术实现要素:

13.提供本发明内容是为了以简化形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
14.本发明提供了一种多核图形处理单元(gpu)和一种操作gpu的方法。gpu至少包括第一核和第二核。多核gpu中的至少一个核包括主单元,所述主单元被配置成接收一组图像处理任务,将第一子集任务指派给第一核并将第二子集任务指派给第二核,将第一子集传输到第一核并将第二子集传输到第二核。
15.根据一个方面,提供了一种图形处理单元,下文称为gpu,其包括多个核,其中所述多个核中的每个核包括被配置成管理在所述核内对图像渲染任务的执行的从单元,并且其中所述多个核中的至少一个核还包括主单元,所述主单元被配置成:
16.接收一组图像渲染任务;
17.将第一子集图像渲染任务指派给所述多个核中的第一核;
18.将第二子集图像渲染任务指派给所述多个核中的第二核;
19.将所述第一子集图像渲染任务传输到所述第一核的从单元;以及
20.将所述第二子集图像渲染任务传输到所述第二核的从单元。
21.主单元负责向至少第一核和第二核指派和分配工作。主单元可以从应用程序驱动程序接收所述一组图像渲染任务。
22.第一核或第二核可包括主单元。或者,第三核可包括主单元。主单元可以将子集图像渲染任务指派给其处于的核。当主单元处于第三核中时,主单元可以将第三子集图像渲染任务指派给第三核。
23.第一子集图像渲染任务由与图像渲染任务的第二子集不同的任务组成。换句话说,指派给一个核的任务不也指派给另一个核。
24.多个核中的每一个可以是相同的。这意味着每个核可包含相同的部件——特别是相同的主单元和从单元,这意味着核中的每个从单元和每个主单元具有在其它核中的每一个中相同的对应单元。当核相同时,除一个核之外的所有核的主单元都可以是不活动的。
25.每个核可以包括多于一个主单元和至少相同数目的从单元。在每个核中,每个活动主单元负责向一个从单元指派工作。在核中,没有两个活动主单元会向同一从单元指派工作。例如,第一主单元可以将第一组任务的子集指派给每个核的第一从单元,并且第二主单元可以将第二组任务的子集指派给每个核的第二从单元,所述第二组任务具有与所述第一组任务不同类型的任务。在示例中,第一组任务可以是片段处理任务,而第二组任务可以是几何处理任务。在每个核包括两个主单元的示例中,其中一个核的两个主单元可能是活动的,而其它核的主单元可能是不活动的。或者,核中只有一个主单元可能与另一核的一个主单元一起是活动的,而所有剩余主单元均是不活动的。或者,核可各自包括单个主单元,并且每个核可至少包括与图形处理系统中存在的活动主单元相同数目的从单元。例如,如果第一核和第二核包括活动主单元,则每个核可以包括两个从单元(每个核中的第一从单元和第二从单元)。第一核的主单元可以将工作指派给核中的第一从单元,并且第二核的主
单元可以将工作指派给核中的第二从单元。
26.第一核的从单元可以被配置成当第一子集图像渲染任务中的任务已被处理时向主单元传输第一信用通知。第二核的从单元还可以被配置成当第二子集图像渲染任务中的任务已被处理时向主单元传输第二信用通知。主单元可以被配置成:存储所述第一核和所述第二核中的每一个的信用数字;当所述主单元将所述第一子集图像渲染任务指派给所述第一核时,对于所述第一子集图像渲染任务中的每个任务按第一量调整所述第一核的信用数字;当所述主单元将所述第二子集图像渲染任务指派给所述第二核时,对于所述第二子集图像渲染任务中的每个任务按所述第一量调整所述第二核的信用数字;当所述主单元接收到所述第一信用通知时,按第二量调整所述第一核的信用数字;并且当主单元接收到所述第二信用通知时,按所述第二量调整所述第二核的信用数字,其中所述第一量和所述第二量中的一个是正的,另一个是负的。
27.通过对于指派给每个核的每个任务按设定量改变该核的信用数字,主单元可以跟踪其已分配给每个核的任务数量,以及通过扩展,哪个核被指派了最多任务。通过对于核报告为完成的每个任务以相反的方式改变核的信用数字,主单元可以跟踪每个核在当前的繁忙程度。
28.第一值和第二值的大小可以相等。例如,在第一值是正整数的情况下,第二值可以是该整数的负值。取决于第一量是正的还是负的,高信用数字表示核忙碌,低信用数字表示核不忙碌(或反之亦然)。例如,当第一量是正的时,具有更大正信用数字的核比具有较小正信用数字的核更繁忙。
29.当gpu包括两个以上核时,主单元可以相同的方式为这些额外核维护信用数字。
30.主单元可以被配置成:基于每个核的信用数字,将后续图像渲染任务指派给当前被指派最少工作的核的从单元;按第一量调整已被指派后续图像渲染任务的核的信用数字;并且将后续图像渲染任务传输至其已被指派给的核的从单元。
31.如果第一量是正的,则具有最大负信用数字的核是当前被指派最少工作的核。如果第一量是负的,则具有最大正信用数字的核是当前被指派最少工作的核。
32.通过将新任务指派给如核的信用数字所指示具有最少待处理任务的核,主单元可以避免在一个核处理完工作并且可能变得空闲时给另一个核加载工作。相反,主单元可以将更多工作指派给处理完工作的核,从而防止其变得空闲,并维护核之间的更好工作平衡。此负载平衡有助于较长时间保持图像渲染任务的并行处理,从而提高图形处理单元的性能。每个核的信用数字可以用同一值进行初始化。
33.当每个核具有多于一个从单元,并且图形处理单元包括用于核中的每个从单元的一个活动主单元时,每个活动主单元可以在每个核中针对从单元中的一个存储信用数字。每个主单元可以针对不同从单元存储信用数字。
34.第一核可包括被配置成执行渲染操作的第一数目的可用处理单元(在本文中称为pu),且第二核可包括被配置成执行渲染操作的第二数目的可用pu。主单元可以将与第一数目和第二数目的可用pu直接相关的图像渲染任务指派给第一核和第二核。
35.主单元可以将与每个核中的可用pu的数目成比例的图像渲染任务指派给该核。主单元可以基于第一数目和第二数目的可用pu来加权第一核和第二核的信用数字。主单元可以与第一数目和第二数目的可用pu成比例地对第一核和第二核的信用数字进行加权。主单
元可以对信用数字进行加权,使得当每个核具有与其具有的可用pu相同数目的待处理任务时,第一核和第二核的信用数字是相同的。例如,具有八个可用pu(每个可用pu被指派一个任务)的核可以具有+8的信用数字。具有四个pu(每个pu被指派一个任务)的第二核也可以具有+8的加权信用数字。更一般地,可以与核中的可用pu的数目成比例地对每个核的信用数字进行加权以反映该核的繁忙程度。
36.当主单元基于每个核中的可用pu的数目对该核的信用数字进行加权时,主单元可以将后续图像渲染任务指派给如核的信用数字所指示具有最少工作的核。
37.当主单元不对每个核的信用数字进行加权以考虑第一和第二数目的可用pu,并且每个核的信用数字相同时,主单元可以将后续图像渲染任务指派给具有较大数目的可用pu的核。
38.第一核和第二核的从单元可以在主单元将任何渲染任务指派给核之前通知主单元第一和第二数目的可用pu。可用pu的数目可以由应用程序配置,并且可以小于核中的pu的数目。可用pu的数目可在图像渲染过程中改变。核可在其可用pu的数目改变时更新主单元,并且主单元可相应地调整核的信用数字。
39.第一子集图像渲染任务可包括第一任务,其中第一任务是依赖任务所依赖的任务。主单元可以被配置成在第一子集图像渲染任务中并且在第一任务之后包括任务完成更新命令。第一核的从单元可以被配置成在第一核处理任务完成更新命令时向主单元发送第一任务完成更新。主单元可以被配置成仅在主单元已接收到第一任务完成更新之后,将第一任务的依赖任务指派给并传输到第一核和第二核的从单元中的一个。第一任务的依赖任务是依赖于第一任务的结果的任务。
40.同样,如果图像渲染任务的第二子集包括第一任务(依赖任务所依赖的任务),则主单元可以在第二子集中并且在第一任务之后包括任务完成更新命令。第二核的从单元可以被配置成当其处理任务完成更新命令时发送第二任务完成更新。
41.第一任务的依赖任务是仅在较早的第一任务已完成时才可以被正确处理的任何图像渲染任务。例如,当依赖任务需要第一任务的输出作为输入时,可能会发生这种情况。图像渲染任务的第一和/或第二子集中的任务中的任何一个或多个可以是第一任务,并且术语“第一任务”不指任务在图像渲染任务的第一或第二子集中的位置。
42.任务完成更新通知主单元子集任务中的任务完成更新命令之前的所有任务都已执行。通过在第一任务之后包括任务完成更新命令,任务完成更新通知主单元已完成第一任务,这意味着现在可以处理依赖任务。任务完成更新命令可以紧跟在第一任务之后,使得核将在其处理第一任务之后且在其处理任何其他任务之前立即处理任务完成更新命令。
43.任务完成更新命令的一个示例是工作围栏命令。在处理工作围栏命令时,该核内的从单元可以将围栏更新传输到将工作指派给该核的活动主单元。
44.任务完成更新可以与从单元传输的信用通知不同。例如,核的从单元可以被配置成在每次核完成任务时发送信用通知。相比之下,当核处理任务完成更新命令时,从单元可以仅发送任务完成更新。
45.主单元可以被配置成在第一任务之后且任选地在任务完成更新命令之前,在第一子集图像渲染任务中包括存储器刷新命令。第一核的从单元可以被配置成当第一核处理存储器刷新命令时,将第一核中存储的所有经处理的工作写入共享存储器。
46.同样,如果图像渲染任务的第二子集包括第一任务(依赖任务所依赖的任务),则主单元可在第一任务之后和任务完成更新命令之前在图像处理任务的第二子集中包括存储器刷新命令。第二核的从单元可以被配置成当第二核的从单元处理存储器刷新命令时,将第二核中存储的所有经处理的工作写入共享存储器。
47.通过在第一任务之后跟随存储器刷新命令,通过处理第一任务生成的数据(第一任务的输出)通过写入(刷新)到共享存储器而对所有核可用。这使得任何核能够处理第一任务的依赖任务,因为它们都可以访问第一任务的输出数据。第一核和第二核可写入同一共享存储器。
48.通过在任务完成更新命令之前放置刷新命令,任务完成更新不仅用于通知主单元已完成第一任务,还用于通知已完成刷新。
49.多个核中的每个核可包括第二从单元,所述第二从单元被配置成管理由核对第二类型图像渲染任务的执行。核中的一个可包括第二主单元,所述第二主单元被配置成:接收第二类型的第二组图像渲染任务;将第二组图像渲染任务的第一子集指派给多个核中的第一核;将第二组图像渲染任务的第二子集指派给多个核中的第二不同核;将第二组图像渲染任务的第一子集传输到多个核中的第一核的第二从单元;以及将第二组图像渲染任务的第二子集传输到多个核中的第二核的第二从单元。
50.第二组图像渲染任务由不同于第一组图像渲染任务的类型的图像渲染任务组成。例如,第一组图像渲染任务可以是计算任务,第二组图像渲染任务可以是几何任务。
51.当核包括第一主单元和第二主单元两者时,第一主单元和第二主单元可以实施为核中的两个物理上分开的单元。
52.在一些示例中,不同核可包含第一主单元和第二主单元。例如,第一核可包括第一主单元,并且第二核可包括第二主单元。第二主单元可以将第二组图像渲染任务的第一子集指派给并传输到第一核的第二从单元,并且将第二组图像渲染任务的第二子集指派给并传输到第二核的第二从单元。
53.在一些示例中,多个核中的每一个可包括第一主单元和第二主单元。然而,在这种情况下,可能只有第一主单元和第二主单元中的一个是活动的。
54.与活动第一主单元可以为其已将图像渲染任务指派给的每个核维护信用数字一样,活动第二主单元也可以为其已将任务指派给的核维护信用数字。特别地,第一主单元可以为(其已将工作指派给的)核的第一从单元中的每一个维护信用数字,并且第二主单元可以为(其已将工作指派给的)核的第二从单元中的每一个维护信用数字。当第一主单元将图像渲染任务指派给核时,其可以按第一量调整该核的信用数字,如上文所述。第一主单元仅响应于其已指派给每个核的任务并且响应于该核通知其已完成这些任务中的一个任务针对所述核调整其信用得分,第二主单元仅响应于其已指派给每个核的任务并且响应于该核通知其已完成这些任务中的一个任务针对该核调整其信用得分。以此方式,可为每个核维护两个不同的信用数字。
55.主单元可以被配置成输出第一寄存器写入命令和第二寄存器写入命令。第一寄存器写入命令可以寻址到第一核,并且可以包括第一子集图像渲染任务的指示。第二寄存器写入命令可以寻址到第二核,并且可以包括第二子集图像渲染任务的指示。多个核可由被配置成在所述核之间传送寄存器写入命令的寄存器总线连接。
56.多核系统可包括寄存器总线,所述寄存器总线连接每个核,从而使得能够在核之间传送寄存器信息。通过使用此寄存器总线在核之间传送图像渲染任务,可以消除对核之间的专用连接的需要,从而节省芯片上的空间。
57.主单元可以将寄存器写入命令寻址到其已将每个子集图像渲染任务指派给的核。当主单元将子集任务指派给其驻留的核时,主单元可将包含这些任务的指示的寄存器写入命令寻址到该核。
58.主单元可以将寄存器写入命令直接传输到各种核,或者可以将寄存器写入命令输出到包括主单元的核中的另一单元以进行传输。在每个核包括多个从单元时,寄存器写入命令可寻址到特定核中的特定从单元。寄存器写入命令可以包含存储器中的地址,其中从单元可以获得处理图像渲染任务的必要数据。
59.当核的从单元被配置成传输信用通知和/或任务完成更新时,这些信用通知和/或任务完成更新可以呈寻址到主单元(或寻址到包括主单元的核)的寄存器写入命令的形式,或呈寻址到主单元(或寻址到包括主单元的核)的寄存器读取命令的形式。
60.包括主单元的核还可包括与核的主单元和从单元通信的仲裁单元。仲裁单元可以被配置成:从主单元接收寄存器写入命令;并且对于每个寄存器写入命令:如果所述寄存器写入命令寻址到包括主单元的核,则将所述寄存器写入命令传递到包括主单元的核的从单元;并且如果所述寄存器写入命令不寻址到包括主单元的核,则转发所述寄存器写入命令以通过寄存器总线进行传输。
61.换句话说,仲裁单元可以被配置成将(由主单元)指派给包括主单元的核的从单元的任务路由到从单元,而不通过寄存器总线传输任务。指派给除了包括主单元的核之外的任何核的子集任务不被路由到包括主单元的核的从单元。而是,它们由仲裁单元转发以通过寄存器总线进行传输。这可能意味着它们被转发到包括主单元的核中的另一硬件单元以通过寄存器总线传输到相关核,或者它们被直接发送到寄存器总线并传输到相关核。
62.在每个核包括多个从单元的示例中,包括主单元的核的仲裁单元可以与包括主单元的核的每个从单元通信,并且可以将指派给包括主单元的核的从单元中的任何一个的任务路由到该从单元。主单元可以通过使用与特定从单元相关联的特定寄存器地址将任务寻址到该从单元。
63.每个核可包括如上所述的仲裁单元,其与该核的所有主单元和从单元通信。当核通过寄存器总线接收寻址到该核的从单元的寄存器写入命令时,该核中的仲裁单元可以将寄存器写入命令路由到寄存器写入命令寻址到的从单元。以此方式,从单元接收指派给其的子集工作。
64.当核的从单元被配置成传输信用通知、cfi通知和任务完成更新中的一者或多者时,第一核和第二核的相应仲裁单元可以被配置成将cfi通知、任务完成更新和/或信用通知转发至寄存器总线,通过寄存器总线它们可各自传输至主单元,或者当存在多个活动主单元时传输到相关活动主单元。包括主单元的核可以被配置成从核的从单元接收信用通知、任务完成更新或cfi通知。包括主单元的核的仲裁单元可以被配置成将信用通知、任务完成更新或cfi通知发送至主单元。信用通知、任务完成更新或cfi通知可以呈寻址到包括主单元的核的寄存器读取命令或寄存器写入命令的形式。寄存器读取/写入命令可以包含使得主单元能够识别哪个核发送了命令的信息。在一个示例中,这可以是使用与包括主单
元的核相关联的特定寄存器地址。第一核和第二核的仲裁单元可以将待由第一/第二核发送到主单元的通信转发至寄存器总线(如果主单元在另一个核中)。第一/第二核的仲裁单元可以确定信用通知、任务完成更新或cfi通知是否寻址到其自身核,在这种情况下,其可将信用通知、任务完成更新或cfi通知发送至其主单元。如上文所解释的,转发以进行传输可以意指转发至核中的另一硬件单元或直接转发至寄存器总线以通过寄存器总线传输到相关核。
65.多个核可各自包括与寄存器总线通信的接口单元。包括主单元的核的接口单元可以被配置成:接收第一寄存器写入命令和第二寄存器写入命令;并且通过寄存器总线将第一寄存器写入命令传输至第一核并将第二寄存器写入命令传输至第二核。
66.第一核的接口单元可以被配置成:经由寄存器总线接收第一寄存器写入命令;并且将第一寄存器写入命令转发到第一核的从单元。
67.第二核的接口单元可以被配置成:经由寄存器总线接收第二寄存器写入命令;并且将第二寄存器写入命令转发到第二核的从单元。
68.每个接口单元可以是片上系统接口(socif)。包括主单元的核的接口单元可以从同一核的从单元(或通过寄存器总线从另一核)接收寄存器读取写入命令形式的信用通知、cfi通知和任务完成更新中的一者,并且可以将其(直接或通过仲裁单元)传递给主单元。
69.将寄存器写入命令转发至从单元可以意味着将其直接发送至其寻址到的从单元,或通过核内的另一单元或若干单元(例如仲裁单元)发送。
70.第一核的接口单元可以被配置成:确定第一寄存器写入命令是否寻址到第一预留寄存器地址;并且如果第一寄存器写入命令寻址到第一预留寄存器地址,则将第一寄存器写入命令转发至第一核的从单元。第二核的接口单元可以被配置成:确定第二寄存器写入命令是否寻址到第二预留寄存器地址;并且如果第二寄存器写入命令寻址到第二预留寄存器地址,则将第二寄存器写入命令转发到第二核的从单元。
71.预留寄存器地址是核的接口单元已被配置成仅用于主-从通信的寄存器地址。当接口单元接收到寻址到预留寄存器地址的寄存器读取/写入命令时,而不是简单地从寄存器读取数据和/或向寄存器写入数据,它将根据地址视情况将数据传送给核的主单元或从单元。如果寄存器读取/写入命令不使用预留寄存器地址,则接口单元将其视为常规寄存器读取/写入命令(意味着其不会被转发到核的从单元)。以此方式,接口单元可以区分常规寄存器读取/写入命令与主-从通信。
72.每个核可具有与其相关联的多于一个预留寄存器地址。例如,第一核可以与第一核中的从单元的第一预留寄存器地址和主单元的第二寄存器地址相关联。一般来说,每个核中的每个从单元可以与唯一预留寄存器地址相关联。同样地,每个核中的每个主单元可以与唯一预留寄存器地址相关联。
73.从从单元发送的通信,例如信用通知和任务完成更新,也可以寻址到预留寄存器地址,并且如果这些通信寻址到与主单元相关联的预留寄存器地址,则包括主单元的核的接口单元只能将这些通信发送到主单元。
74.将寄存器写入命令转发至从单元可能意味着将其直接转发至该从单元,或者经由另一硬件单元,例如仲裁单元将其间接转发至该从单元。
75.多个核可各自包括相同数目的主单元,且可各自包括相同数目的从单元。
76.图形处理系统的核在物理上可以是相同的,意味着它们包括相同的部件——特别是,每个核中的主部件可以是相同的,并且每个核中的从部件可以是相同的。核能够在单个核系统或配置中独立地操作,因为每个核具有从单元和主单元。
77.第一核或第二核可包括主单元。
78.根据另一方面,提供了一种在包括多个核的图形处理单元中传输图像渲染任务的方法,所述方法包括:
79.由所述多个核中的核的主单元接收一组图像渲染任务;
80.由所述主单元将第一子集图像渲染任务指派给所述多个核中的第一核;
81.由所述主单元将第二子集图像渲染任务指派给所述多个核中的第二核;
82.由所述主单元将图像渲染任务的第一子集传输到所述第一核的从单元;以及
83.由所述主单元将图像渲染任务的第二子集传输到所述第二核的从单元。
84.所述方法还可包括:由主单元存储第一核和第二核中的每一个的信用数字;由主单元对于第一子集图像渲染任务中的每个任务按第一量调整第一核的信用数字;以及由主单元对于第二子集图像渲染任务中的每个任务按第一量调整第二核的信用数字;由第一核的从单元在第一子集图像渲染任务中的任务已被处理时向主单元传输第一信用通知;由第二核的从单元在第二子集图像渲染任务中的任务已被处理时向主单元传输第二信用通知;由主单元在主单元接收到第一信用通知时按第二量调整第一核的信用数字;以及由主单元在主单元接收到第二信用通知时按第二量调整第二核的信用数字,其中,第一量和第二量中的一者是正的,另一者是负的。
85.所述方法还可包括:由主单元基于每个核的信用数字将后续图像渲染任务指派给当前被指派最少工作的核的从单元;由主单元按第一量调整已被指派后续图像渲染任务的核的信用数字;以及由主单元将后续图像渲染任务传输到其已被指派给的核的从单元。
86.所述方法还可包括:将与第一数目的本文称为pu的可用处理单元和第二数目的可用pu直接相关的图像渲染任务指派给第一核和第二核,其中可用pu的第一数目是第一核中的可用pu的数目,并且可用pu的第二数目是第二核中的可用pu的数目。
87.所述方法还可包括由主单元基于可用pu的第一数目对第一核的信用数字进行加权,以及基于可用pu的第二数目对第二核的信用数字进行加权。
88.所述方法还可包括:由主单元在第一子集图像渲染任务中在第一任务之后包括任务完成更新命令;由第一核处理第一任务;由第一核处理任务完成更新命令;以及由第一核的从单元将任务完成更新传输到主单元;由主单元将第一任务的依赖任务指派给第一核和第二核的从单元中的一个;以及由主单元将依赖任务传输到其已被指派给的核。
89.以相同方式,所述方法可包括(由主单元)在第二子集图像渲染任务中并且在第一任务之后包括任务完成更新命令,以及在第二核的从单元处理任务完成更新命令时(由第二核的从单元)传输任务完成更新。
90.所述方法还可包括:由主单元在第一子集图像渲染任务中在第一任务之后并且任选地在任务完成更新命令之前包括存储器刷新命令;由第一核处理存储器刷新命令;以及由第一核的从单元将第一核中存储的所有输出数据写入共享存储器。
91.以相同方式,所述方法可包括(由主单元)在第二子集图像渲染任务中且在第一任务之后(以及任选地在任务完成更新命令之前)包括存储器刷新命令,以及(由第二核的从
单元)将第二核中存储的所有经处理的存储器写入共享存储器。第一核和第二核可以写入同一共享存储器,或写入不同的共享存储器。
92.所述方法还可包括:由多个核中的任意一个核中的第二主单元接收第二类型的第二组图像渲染任务;由第二主单元将第二组图像渲染任务的第一子集指派给第一核;由第二主单元将第二组图像渲染任务的第二子集指派给第二核;由第二主单元将第二组图像渲染任务的第一子集传输到第一核的第二从单元;以及由第二主单元将第二组图像渲染任务的第二子集传输到第二核的第二从单元。
93.第一子集和第二子集的传输可包括由主单元输出第一寄存器写入命令和第二寄存器写入命令。第一寄存器写入命令可以寻址到第一核,并且可以包括第一子集图像渲染任务的指示。第二寄存器写入命令可以寻址到第二核,并且可以包括第二子集图像渲染任务的指示。多个核可由寄存器总线连接以在所述核之间传送寄存器写入命令。
94.传输还可包括:由包括主单元的核的仲裁单元从主单元接收多个寄存器写入命令;并且对于每个寄存器写入命令:如果寄存器写入命令寻址到包括主单元的核,则由仲裁单元将寄存器写入命令发送至包括主单元的核的从单元;以及如果寄存器写入命令未寻址到包括主单元的核,则由仲裁单元将寄存器写入命令转发到寄存器总线。
95.如果寄存器写入命令未寻址到包括主单元的核,则仲裁单元可以将寄存器写入命令转发到包括主单元的核中的另一硬件单元,以通过寄存器总线向前传输到相关其它核。或者,仲裁单元可以将命令直接转发至寄存器总线以传输至相关核。
96.传输还可包括:由包括主单元的核的接口单元接收第一寄存器写入命令和第二寄存器写入命令;由包括主单元的核的接口单元通过寄存器总线将第一寄存器写入命令传输到第一核,并将第二寄存器写入命令传输到第二核;由第一核的接口单元接收第一寄存器写入命令;由第一核的接口单元将第一寄存器写入命令转发到第一核的从单元;由第二核的接口单元接收第二寄存器写入命令;以及由第二核的接口单元将第二寄存器写入命令转发到第二核的从单元。
97.将寄存器写入命令转发至从单元可以意味着将其直接发送至其寻址到的从单元,或通过核内的另一单元或若干单元(例如仲裁单元)发送。
98.所述方法还可包括:由第一核的接口单元确定第一寄存器写入命令是否寻址到第一预留寄存器地址;以及如果第一寄存器写入命令寻址到第一预留寄存器地址,将第一寄存器写入命令转发到第一核的从单元;由第二核的接口单元确定第二寄存器写入命令是否寻址到第二预留寄存器地址;以及如果第二寄存器写入命令寻址到第二预留寄存器地址,则将第二寄存器写入命令转发到第二核的从单元。
99.每个核以及可选地每个从单元和每个核内的从单元可以与不同的预留寄存器地址相关联。
100.还提供一种图形处理系统,所述图形处理系统包括如上文概述的和/或被配置成执行如上概述的方法的gpu。所述图形处理系统可包含在集成电路上的硬件中。
101.还提供了一种使用集成电路制造系统来制造如上概述的图形处理系统的方法。
102.还提供了一种使用集成电路制造系统制造如上概述的图形处理系统的方法,该方法包括:使用布局处理系统对图形处理系统的计算机可读描述进行处理,以生成包含图形处理系统的集成电路的电路布局描述;以及使用集成电路生成系统,根据电路布局描述来
制造图形处理系统。
103.还提供了一种计算机可读代码,该计算机可读代码被配置为使得当代码被运行时执行如上概述的方法。还提供了一种计算机可读存储介质(可选地为非暂时性的),在其上编码有所述计算机可读代码。
104.还提供了一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中处理时将该集成电路制造系统配置为制造如上文概述的图形处理系统。
105.还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有如上概述的图形处理系统的计算机可读描述,该计算机可读描述在集成电路制造系统中处理时使集成电路制造系统制造包含该图形处理系统的集成电路。
106.还提供了一种计算机可读存储介质(可选地为非暂时性的),其上存储有如上概述的图形处理系统的计算机可读描述,该计算机可读描述在集成电路制造系统中处理时使集成电路制造系统:使用布局处理系统处理图形处理系统的计算机可读描述,以便生成包含图形处理系统的集成电路的电路布局描述;以及使用集成电路生成系统,根据电路布局描述制造图形处理系统。
107.还提供了一种集成电路制造系统,所述集成电路制造系统被配置成制造如上概述的图形处理系统。
108.还提供了一种集成电路制造系统,该集成电路制造系统包括:
109.计算机可读存储介质(可选地为非暂时性的),其上存储有如上概述的图形处理系统的计算机可读描述;
110.布局处理系统,其配置成处理所述计算机可读描述以生成包含所述图形处理系统的集成电路的电路布局描述;以及
111.集成电路生成系统,所述集成电路生成系统被配置成根据所述电路布局描述制造所述图形处理系统。
112.布局处理系统可被配置为确定从集成电路描述导出的电路的逻辑部件的位置信息,以便生成包含所述图形处理系统的集成电路的电路布局描述。
113.如对本领域的技术人员将显而易见,上述特征可以适当地组合,并且可与本文中所描述的示例的各方面中的任一方面进行组合。
附图说明
114.现在将参考附图详细描述示例,在附图中:
115.图1是根据示例的gpu的框图;
116.图2是示出了根据示例的方法的流程图;
117.图3示出了根据示例的gpu的框图;
118.图4是示出了根据示例的方法的流程图;
119.图5是示出了根据示例的方法的流程图;
120.图6是示出了根据示例的方法的流程图;
121.图7是根据示例的gpu的框图;
122.图8是示出了根据示例的方法的流程图;
123.图9是根据示例的gpu的框图;
124.图10是示出了根据示例的方法的流程图;
125.图11是根据示例的gpu的框图;
126.图12是示出了根据示例的方法的流程图;
127.图13是根据示例的gpu的框图;
128.图14a是示出了根据示例的方法的流程图;
129.图14b是示出了根据示例的方法的流程图;
130.图15是根据示例的gpu的框图;
131.图16是示出了根据示例的方法的流程图;
132.图17是示出了根据示例的方法的流程图;
133.图18示出了在其中实现图形处理系统的计算机系统;以及
134.图19示出了用于生成包含图形处理系统的集成电路的集成电路制造系统。
135.附图示出了各种示例。技术人员将了解,附图中所示出的元件边界(例如框、框的组或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
136.借助于示例呈现以下描述,以使得本领域的技术人员能够制造和使用本发明。本发明不限于本文中所描述的实施例,并且对所公开实施例的各种修改对于本领域的技术人员将显而易见。
137.现在将仅借助于示例来描述实施例。
138.上文所描述的并行处理系统的替代方案,依赖于中央集线器,是使用工作与核的固定映射的并行处理系统。在固定映射系统中,没有中央集线器。代替中央集线器分配渲染任务,使用固定映射在核之间分配任务——由此以预定方式将渲染任务指派给核。这在双核系统中的一个简单示例是围绕竖直轴线将场景对半拆分。可以给一个核指派场景的左半部的图像渲染任务,而给另一个核指派场景的右半部的任务。
139.虽然此固定映射系统解决了与中央集线器相关联的一些问题,但它受到核之间的偏斜影响,这降低了gpu的并行化程度。偏斜是指核之间的处理时间的差异。当一个核在另一个核之前完成其被指派的任务并且变得空闲时,就产生偏斜。偏斜越大,gpu的某些核空闲的时间就越多,并且gpu的核并行处理任务的时间就越少。为了实现最大程度的并行化,应最小化偏斜。
140.偏斜是不同图像渲染任务具有不同计算要求且花费不同时间进行处理的事实的结果。不可能事先确定每个任务花费多长时间进行处理,这意味着虽然可以容易地配置固定映射,以确保向所有核都提供相同数目的任务,但不可以根据固定映射分配任务,使得每个核同时完成其工作。这意味着,尽管gpu最初并行处理任务,但随着核通过其工作负荷的进展,某些核不可避免地在其它核之前完成并且变得空闲。随着更多核变得空闲,并行化程度降低且gpu的任务处理速率降低。
141.偏斜的另一原因是核内的争夺。当核已被指派竞争该核的资源的多项任务时,就会在核内发生争夺。例如,考虑第一核被指派了几何处理任务和片段处理任务两者,而第二
核仅被指派了几何处理任务。第二核能够处理其几何处理任务,然而,如果指派给第一核的片段处理任务已被指出为是高优先级的,则第一核在处理几何任务之前将优先处理这些任务。第一核中的几何处理任务与片段处理任务之间的这种竞争延迟了几何处理任务的完成,这可能导致沿着图像处理管道进一步向下的延迟。
142.期望解决芯片空间和偏斜的问题,以便实现高性能多核gpu。
143.根据本公开的示例提供了一种gpu。gpu包括多个核。多个核中的一个核包括负责在所述核之间分配任务的主单元。
144.图1中描绘了示例性gpu。
145.gpu 100包括第一核110、第二核120和第三核130。第一核、第二核和第三核中的每一个包括从单元111、121、131。另外,在此示例中,第三核包括主单元140。
146.第一核和第二核(以及可选地第三核)可各自包括一个或多个处理单元(pu)199。核中的每个处理单元199可以与该核的从单元通信。处理单元199可负责处理图像渲染任务。在一些示例中,从单元可各自包括一个或多个处理单元。一个或多个处理单元可包括被配置成执行特定类型的图像渲染任务的专用硬件。例如,处理单元可包括被配置成处理几何处理任务的专用硬件。然而,一个或多个处理单元不需要专门执行特定类型的图像渲染任务。而是,它们可能能够执行多种不同类型的图像渲染任务。在一些示例中,可以共享一个或多个处理单元,因为它们由核内的处理不同工作类型的不同从单元指派工作。
147.主单元140被配置成接收一组图像渲染任务。主单元140被配置成将第一子集图像渲染任务指派给第一核110,并将第二子集图像渲染任务指派给第二核120。主单元140被配置成将第一子集传输到第一核110的从单元111,并将第二子集传输到第二核120的从单元121。主单元140还可以将第三子集图像渲染任务指派给并传输到第三核130的从单元131。
148.核的从单元111、121、131被配置成接收由主单元140指派给并和传输到它们的图像渲染任务。从单元111、121、131可以将接收到的图像渲染任务分配给其核内的处理单元199以供处理。
149.图2是描绘由gpu 100执行的示例性方法200的流程图。在步骤210,第三核130的主单元140接收一组图像渲染任务。在步骤220,主单元140将第一子集指派给第一核110,在步骤240,主单元140将第一子集传输到第一核的从单元111。类似地,在步骤230,主单元140将第二子集指派给第二核120,在步骤250,主单元140将第二子集传输到第二核120的从单元121。虽然步骤240必须总是在步骤220之后发生,且步骤250必须在步骤230之后发生,但图2的流程图的左分支(步骤220和240)与右分支(步骤230和250)之间并无任何特定关系。
150.主单元140负责在gpu的核之间指派和分配任务。换句话说,主单元140使得其所属的核(在此示例中,即第三核130)能够承担中央集线器的工作分配功能。然而,与不能够执行图像渲染任务的中央集线器不同,第三核130是全功能性核,并且能够执行与第一核110和第二核120相同类型的图像渲染任务。如上所述,在图1的gpu 100的一些示例中,主单元140可以将第三子集指派给并传输到第三核130。
151.在上述示例中,gpu的第三核130包括主单元,并且第一核110和第二核120处理任务。但是,情况并非总是如此。例如,图3描绘了gpu 300,其中第一核310除了包括从单元311之外还包括主单元340。主单元340被配置成将第一子集指派给第一核310(将第一子集指派给其自身核),且将第二子集指派给第二核320。主单元340被配置成将第一子集传输到第一
核310的从单元311,并将第二子集传输到第二核320的从单元321。
152.在这些方面,gpu 100/300的一个核不仅可以承担中央集线器的工作分配功能,还可以主动处理图像渲染任务,从而提高gpu性能并更高效地利用芯片空间。
153.该组图像渲染任务可以由主单元140/340从客户端驱动程序/应用程序驱动程序,或从gpu 100/300中的另一硬件单元接收。
154.如上文所解释的,为了考虑图像渲染任务的复杂性的不可预测变化(每个任务涉及多少“工作”)并减少偏斜,任务被动态地指派给核。任务的动态指派意味着当偏斜开始在核之间出现时,可以通过向正在更快速地处理其任务的核提供额外任务来校正偏斜。然而,为了对核进行负载平衡,主单元140需要它可以在稍后指派给最不忙碌的核的额外任务。因此,当首先将任务指派给gpu的核时,主单元140可以不指派一些任务,从而保留它们用于负载平衡。换句话说,可以在给定时间将总任务的仅一部分指派给核。在图1的示例中,主单元140可以将该组任务中的小于50%的任务指派给第一核110,并且将小于50%的任务指派给第二核120。在一些示例中,主单元140可以在给定时间将基本上小于50%的任务指派给任何一个核,例如在任何给定时间将该组任务中的1%或小于1%的任务指派给任何一个核。
155.可以在核完成其任务时将未指派的任务指派给核以补偿偏斜。此过程实现负载平衡。负载平衡旨在增加核同时处理图像渲染任务花费的时间量,并由此减少总处理时间。换句话说,负载平衡试图防止一个核完成其任务并变得空闲,而另一个核仍在处理任务。这也可以被认为是确保为每个核提供与其处理能力成比例的待处理的相同工作量。当每个核具有相同的处理能力时,这意味着为核提供相同工作量。这是我们将更详细地探讨的示例。
156.如上所述,不可能事先确定每个任务涉及多少工作,因此很难为核提供相同工作量。然而,通过将额外任务指派给最不繁忙的核,主单元仍可朝着使当前指派给每个核的工作量相等的方向发展。通过在图像渲染过程内继续此过程,主单元继续使核朝向具有相同工作量发展,这意味着核总体上已处理了相同工作量,并且因此在相同时间内是活动的,从而增加并行化。
157.在一些示例中,基于信用的系统可用于负载平衡。在图1的gpu 100的上下文中,在核具有相同处理能力的示例中将更详细地解释信用系统的示例性实施方式。不管gpu中的核的数目如何,也不管哪个核包括活动主单元,下文所描述的原理均适用。
158.主单元140可以被配置成存储其被配置成将任务指派给的每个核110、120、130的信用数字。信用数字通常全部用相同值(例如,零值)初始化,然而,初始值的量值并不重要,且可具有任意大小。主单元140可以被配置成在将任务指派给核时按第一量(例如,通过递增一)调整该核的信用数字。从单元111、121、131中的每一个可以被配置成在其核完成图像渲染任务时向主单元140发送信用通知。信用通知可包括识别发送信用通知的从单元的信息,使得主单元140知道哪个核已完成任务。在接收到信用通知时,主单元140可以被配置成按第二量(例如,通过递减一)调整发送信用通知的核的信用数字。通过对于指派给核的每个任务在一个方向上按设定量调整该核的信用数字,并且通过对于核的从单元发送的每个信用通知在相反方向上调整核的信用数字,主单元140维护已指派给每个核的未完成任务的数目的运行计数。信用数字表示核的繁忙程度(忙于由特定主单元指派的工作),且两个或多个核的信用数字之间的差是一个核不比另一个核更忙碌(忙于该类型的工作)的指示。通过为核存储和维护信用数字,主单元140跟踪每个核在整个图像渲染过程中的繁忙程度,
从而使得主单元能够对核进行负载平衡。这将参考图4以及针对图1的示例性gpu 100更详细地解释(尽管对应方法适用于其它gpu,例如图3的gpu 300)。
159.与图2的方法200一样,在步骤210中,第三核130的主单元140接收一组图像渲染任务。在主单元140将任务指派给核之前,它首先存储400每个可用核的信用数字。可用核是当前被配置成处理图像渲染任务的核。在本示例中,第一核110和第二核120是可用核。然后,主单元140将一组图像渲染任务的第一子集指派220给第一核110,并且对于指派给第一核110的每个任务(对于第一子集中的每个任务)按第一量调整410第一核110的信用数字。在步骤240,主单元140将第一子集传输到第一核110的从单元111。类似地,主单元140向第二核120指派230一组图像渲染任务的第二子集,并且对于第二子集中的每个任务按第一量调整420第二核120的信用数字。主单元140接着将第二子集传输250至第二核的从单元121。
160.在第一核110处理第一子集中的任务之后,第一核的从单元111向主单元140传输430第一信用通知。主单元140在接收到第一信用通知时按第二量调整450第一核110的信用数字。类似地,在第二核120处理第二子集中的任务之后,从单元121向主单元140传输440第二信用通知,且主单元140在接收到第二信用通知时按第二量调整460第二核120的信用数字。第一核的从单元111在每次第一核110完成任务时传输430第一信用通知,并且第二核120的从单元121在每次第二核120完成任务时传输440第二信用通知。当第三核130也被指派任务时,第三核130的从单元131可以在第三核130处理任务时传输第三信用通知,并且主单元140可以在接收到第三信用通知时按第二量调整第三核130的信用数字。
161.如图5中所描绘的,在主单元140已响应于信用通知而调整一个核的信用数字之后,主单元140可将后续一个或若干图像渲染任务指派500给最不繁忙的核(如由每个可用核的信用数字所指示的)。在步骤510中,主单元140按第一量调整已被指派后续任务的核的信用数字,并在步骤520中,将任务传输至其已被指派给的核。通过将额外任务指派给最不繁忙的核,防止该核变得空闲。这有助于减少偏斜,从而维持图像渲染任务的并行处理。通过调整已被指派额外任务的核的信用数字,主单元140确保信用数字保持最新,并真实反映每个核的繁忙程度。
162.所述方法可以循环,如图5中所描绘。通过循环所述方法,持续维持核的负载平衡,从而确保在尽可能长时间内的最大程度的并行化。应注意,每个从单元111、121、131能够缓冲有限数目的图像渲染任务。这是可由主单元140在任何时间指派给核的任务的最大数目。在实践中,渲染图像通常涉及大于每个核的缓冲区大小的数量级的许多图像渲染任务。通过在核处理图像渲染任务时持续对核进行负载平衡,对于至少大部分图像渲染任务核可以并行处理任务。
163.尽管图5呈现了后续任务的指派在主单元接收到从单元完成任务子集的一个或多个通知之后发生,但应理解,这不是分配后续任务的要求。例如,如果主单元(例如,基于各个从单元的信用数字)获知从单元具有比当前可分配的工作更大的容量,则其可以立即将新收到的工作分配给该从单元,而不管该从单元是否已完成先前分配的工作。换句话说,工作的分配取决于可用于分配的工作以及从单元的能力。
164.当将第一子集和第二子集指派220、230给第一核110和第二核120时,主单元140可以选择第一子集和第二子集的大小(每个子集中包含的任务的数目),使得它们完全填充从单元111、121的缓冲区。以此方式,在第一子集和第二子集已被指派之后的第一核110和第
二核120的信用数字可以表示最繁忙的核。指示核中的一个核不比其初始状态更繁忙的任何信用数字意指核具有接受额外任务的能力。如果核的信用数字为初始值,则其处于最大容量,且主单元不会给其指派任何额外工作。
165.第一量和第二量可以具有任何量值,但具有相反符号,使得按第一量和第二量中的一者来更改信用数字会增加信用数字,而按第一量和第二量中的另一者来更改信用数字会减少信用数字。量的量值并不重要,因为是信用数字之间的差而不是数字本身的量值向主单元140指示哪个核更繁忙。在一些示例中,第一量是正的且第二量是负的。在此类示例中,核的正信用数字越大,它被指派的待处理任务就越多,它就越繁忙。相反,如果第一量是负的且第二量是正的,则核的负信用数字越大,核就越繁忙。在一些示例中,第一量和第二量具有相同量值。
166.当确定哪个核最不繁忙以便对核进行负载平衡时,主单元140可以比较信用数字,并将具有最小正信用数字(或最小负信用数字,这取决于第一和第二量的符号)的核识别为最不繁忙的核。
167.在缓解偏斜时,要考虑的一个有用因素是每个核处理任务的能力。在核内,从单元可负责将指派给该核的任务分配给核内的pu 199。pu 199可以处理图像渲染任务。在一些示例中,gpu的每个核可以是相同的。也就是说,所有核可具有相同数目的主单元(下文进一步详细考虑)、从单元和pu,并且核中的每个主单元和从单元具有在其它核中的每一个中的相同的对应单元。但是,情况不一定如此。在一些示例中,核可以不同(例如,不同之处是核可以具有不同数目的主单元、从单元和/或pu)。当两个核具有不同数目的pu 199时,它们具有不同的处理任务的能力。例如,在所有其他情况相同的情况下,具有两个pu 199的核可以一次处理两倍于仅具有单个pu 199的核的任务。
168.即使核在物理结构上相同,它们仍可被配置成具有不同的处理能力。例如,核可以被分区——核的pu 199的一半可以保留用于几何处理任务,而另一半保留用于计算处理任务。与具有相同总数目的pu 199的非分区核相比,此核有一半的有效处理能力用于几何处理。可用于执行特定类型的图像渲染任务的核中的pu 199的数目被称为该核中的可用pu 199的数目。
169.每个核可以将关于其可用pu 199的数目的信息发送至主单元140。当向核指派220、230、500任务时,主单元可以考虑每个核中的可用pu 199的数目之间的任何差异,从而将与每个核中的可用pu 199的数目直接相关的任务指派给核。换句话说,主单元140可以考虑每个核的信用数字(指示该核有多繁忙)和该核具有的可用pu 199的数目(其完成任务的整体能力)。例如,在第一核110具有两个可用pu 199且第二核120具有四个可用pu 199的情况下,主单元140可以最初将两倍于第一核110的任务指派给第二核120(将两个核填充到最大容量),并且将第一核110的信用数字视为指示核110实际具有的未处理任务的数目的两倍。以此方式,主单元140通过对第一核110的信用数字进行加权,来考虑每个核之间的处理能力的差异,从而更好地平衡核并减少偏斜。或者,主单元140可以基于从单元的缓冲区大小最初将相同数目的任务指派给每个核,如上文所提及的。虽然这最初意味着每个核的工作量与其处理能力不成比例,但在图像处理过程中,负载平衡可以补偿这种情况以减少/消除偏斜。
170.加权不是主单元140可以考虑核中的不同数目的pu 199的唯一方式。例如,主单元
140可以被偏置以将工作分配给具有更多可用pu 199的核,使得当具有不同数目的pu 199的两个核具有相同的信用数字时,主单元140优先将任务指派给具有较大数目的可用pu 199的核。
171.在并行处理任务时可能需要考虑的一个复杂因素是任务依赖性。一些任务(在本文中称为依赖任务)依赖于较早任务(在本文中称为第一任务)的完成。“第一任务”指另一项任务所依赖的任务。任务依赖性的一个示例是需要第一任务的输出作为输入的依赖任务。如果在处理第一任务之前就处理了依赖任务,则它就不会正确处理,且最终图像将包含错误。通常,以应用程序希望对一组任务进行处理的顺序向主单元140提供该组任务,使得总是在第一任务的依赖任务之前处理第一任务。这是因为图像渲染应用程序可能不知道它们正在多核gpu上运行,并因此提供适合由单个核处理的单个控制流。
172.当在核之间拆分任务时,依赖任务可以被发送到核进行处理,并且在其所依赖的任务已被处理之前被处理。为了保持最终图像的完整性,必须防止这种情况发生。一个解决方案是确保始终按要求的顺序将第一任务及其依赖任务指派给同一核,使得核始终在第二任务之前处理第一任务。然而,此解决方案限制了可并行处理任务的程度,且可能影响gpu的性能。当依赖任务依赖于多个第一任务时情况尤其如此。这些第一任务理想地将并行处理,大幅减少整体处理时间,但上述解决方案将禁止这种情况,而是要求在单个核上处理所有任务。
173.参考图6解释使得能够维持较高程度的并行化的解决方案,并且该解决方案利用任务完成更新命令。任务完成更新命令是这样一种命令,其在由核处理时使该核的从单元向主单元140传输任务完成更新。任务完成更新命令的一个示例是工作围栏命令。当核处理工作围栏命令时,其使该核的从单元将围栏更新传输到向核指派工作围栏命令的主单元。
174.在本示例中,任务完成更新和信用通知的不同之处在于信用通知仅指示任务已由核处理,而任务完成更新具体指示任务完成更新命令已被处理。在一些示例中,信用通知还可用于任务完成更新的目的。例如,信用通知可以包括已完成哪个任务的指示。备选地,主单元140可以基于在主单元将特定任务指派给核时该核的信用数字来确定在已从核接收到特定信用数字后特定任务已被处理。例如,如果主单元140在第二核已具有信用数字九时将任务指派给第二核120,则主单元140可确定一旦其已从第二核接收到十个信用通知,任务就已被处理。
175.图6是描绘示例性方法的流程图,通过所述示例性方法图1的gpu 100可以使用任务完成更新命令。为了简洁起见,接收210任务和指派220、230子集的初始步骤未示出,但如图2所示执行。在紧随步骤220之后且在步骤240之前的步骤600处,主单元140在第一子集中在第一任务之后(优选紧接着第一任务之后)包括任务完成更新命令。第一子集(包括任务完成更新命令)接着被传输240到第一核110的从单元111。在第一核110已处理610第一任务之后,其处理620任务完成更新命令。在处理620命令时,从单元111将任务完成更新传输630至主单元140。此更新通知主单元140第一任务已由第一核110处理。然后,主单元140能够将依赖任务指派给任何核,而不会面临在第一任务之前处理依赖任务的任何风险。例如,主单元140可以将依赖任务指派给640并传输650至第二核120。优选地,主单元140将向具有如上文解释的如信用数字所指示的最少工作的核指派依赖任务,以便继续对核进行负载平衡。
176.此方法允许并行处理任务,而不会有在依赖任务所依赖的任务之前处理依赖任务
的风险。当第一子集或第二子集包含依赖任务时,主单元140可避免将这些任务传输到核,直到主单元140接收到依赖任务所依赖的第一任务的任务完成更新。依赖任务本身可能是其他依赖任务的第一任务,因此可以伴有任务完成更新命令。
177.在一些示例中,当核处理任务时,其将所得数据(任务的输出)存储在本地存储器(例如,高速缓存)中,所述本地存储器只能由该核访问(并且可以位于核内)。核可以定期将此数据写入所有核可访问的共享存储器。然而,这可能导致另一依赖性问题——在依赖任务的第一任务全部被处理的情况下,该经处理的数据可以存储在处理依赖任务的核不可访问的本地存储器内。如果发生这种情况,则无法获得该依赖任务的至少一部分输入数据,且该依赖任务将不会被正确处理。例如,如果第一核110尚未将第一任务的输出写入到所有核可访问的共享存储器,则第二核120将不能正确地处理依赖任务,即使第一任务已被处理。为了解决此问题,除了任务完成更新命令外,还可以使用存储器刷新命令。当由核处理时,存储器刷新命令使核将本地存储器中存储的所有数据写入所有核可访问的共享存储器。在图7中描绘了包括共享存储器710的示例性gpu 700。下文参考图8解释利用存储器刷新命令的示例性方法。与图6一样,步骤210-230在流程图未示出,但存在于该方法中。另外,步骤640和650未示出(但仍存在于该方法中)。
178.除了在第一任务之后包括600任务完成更新命令之外,主单元140还可以在第一任务之后(并且优选地在任务完成更新命令之前)包括800存储器刷新命令。当第一核110(在处理610第一任务之后)处理810存储器刷新命令时,其将第一核110的本地存储器(未示出)中存储的所有输出数据写入820共享存储器710。通过将输出数据写入共享存储器710,输出数据可由所有其他核访问,这些核中的任一个接着可以处理依赖任务。
179.优选的是在任务完成更新命令之前包括存储器刷新命令,因为然后由从单元111传输的任务完成更新用于通知主单元140第一任务已被处理,并且第一任务的输出数据在共享存储器710中可用。
180.可与子集一起传输的另一有用类型的命令是缓存刷新无效(cfi)命令。cfi命令可以被广播到gpu中的所有核。更具体地,主单元可以将cfi发送至其已将工作指派给的所有核。与存储器刷新命令类似,cfi命令使处理它的任何核将核内存储的所有数据写入共享存储器710。通常,当主单元140接收的一组任务已全部被处理时,使用cfi命令。换句话说,当主单元140没有另外的任务从该组任务指派给核时,它可以广播cfi命令。这使核准备好从新的一组任务接收新任务。cfi是有用的,因为它阻止了外部进程(例如,gpu固件或在外部主机上运行的软件)必须指示核刷新其存储器,这较慢,并且增加了gpu完成一个工作量与被发出另一工作量之间的空闲时间,从而降低了性能。在核执行cfi之后,核的从单元可以将cfi通知传输至主单元,通知其cfi已完成。在一些示例中,从单元111、121、131可以被配置成自动执行cfi并发送cfi通知。例如,从单元可以被配置成在其核没有另外的任务要处理时执行cfi。
181.到目前为止,多核系统已描述为仅包括单个主单元。但是,情况不一定如此。在一些示例中,每个核可包括除了从单元之外的主单元,或多个主单元和从单元。在上文提供的任何示例中,每个核可包括主单元和从单元,但可能只有一个主单元是活动的。
182.如上文已提及的,图像渲染任务可以包括多个不同类型的任务,例如片段、几何和计算任务,并且对于每种类型的任务,gpu可以包括用于执行该特定类型的任务的专用硬
件。通常,提供给gpu的一组任务将仅包括这些类型的任务中的一种。这些任务的管理可以分开,使得一个主单元和一组从单元至少在任何给定时间仅与一种类型的任务交互。因此,并行处理两种类型的任务以及针对每种类型对核进行负载平衡可能需要多核系统中的至少两个活动主单元和每个核的至少两个从单元。被配置成仅接收、指派和传输几何任务的主单元可被称为几何主单元,且其从单元被称为几何从单元。以相同方式配置但被配置成用于片段处理任务的主单元和从单元可被称为片段主单元和片段从单元。图9描绘了包括几何和片段主单元和从单元的gpu 900的一个示例。
183.在gpu 900中,第三核930包括片段主单元941和片段从单元931,以及几何主单元942和几何从单元932。第一核910和第二核920各自包括片段从单元911、921和几何从单元912、922。在一些示例中,第一核910和第二核920还可各自包括片段主单元和几何主单元,使得三个核相同,然而为了简单起见,我们将仅考虑第三核930包括主单元的示例。
184.如上文所解释的,片段主单元941被配置成接收片段处理任务,而几何主单元942被配置成接收几何处理任务。多核gpu 900可以执行上述方法中的任何一个。片段主单元和片段从单元可以与几何主单元和几何从单元同时但独立于几何主单元和几何从单元执行上述方法中的任何一个。例如,片段主单元941可以为核维护信用数字,而同时几何主单元942也独立于片段主单元为核维护信用数字。更具体地,片段主单元941可以为其将工作指派给的核的每个片段从单元911、921、931维护信用数字,并且几何主单元942可以为其将工作指派给的核的每个几何从单元912、922、932维护信用数字。当片段主单元941将片段处理任务指派给核时,其可以按第一量调整该核的信用数字,如参考图4和/或5所描述的。然而,几何主单元942将仅响应于核被指派几何处理任务并且响应于核通知其这些任务中的一个已完成而调整该核的信用数字。相应地,对于片段主单元941也是如此,其仅响应于片段任务的指派而调整其信用数字。以此方式,可以为每个核维护两个不同的信用数字。一个信用数字仅涉及核忙于片段处理任务的程度,而另一个信用数字仅涉及核忙于几何处理任务的程度。通过如上所述独立地对每个核进行负载平衡,主单元941、942都有助于减少核之间的偏斜。尤其优选的是,两个/所有活动主单元都进行负载平衡,因为这使得能够补偿核内的争夺。例如,如果第一核910被指派一组高优先级的片段处理任务,那么这可能延迟对指派给第一核910的任何几何处理任务的处理,并且第一核910的几何信用数字将保持较高。这意味着主单元942不会给第一核910指派额外几何处理任务,这仅会导致可能导致偏斜的任务的不断积压。虽然主单元和从单元已在上文描述为几何单元和片段单元,但它们可转而被配置成处理其它类型的任务。最一般来说,它们可以简单地描述为被配置成处理第一/第二类型的任务的第一主/从单元和第二主/从单元。
185.在一些示例中,多个活动主单元可以协作进行负载平衡。主单元可以为每个核维护共享信用数字,该共享信用数字表示当前指派给该核的所有类型的任务的总数。使用将额外任务指派给最不繁忙核的相同负载平衡原则,可以再次防止核之间的偏斜。在一些示例中,单个主单元可以接收异构的一组(包含任务类型组合的一组)任务,并且可以在核之间拆分这些任务,从而如上所述为每个核维护单个信用数字。
186.尽管在图9的示例中,第三核930包括两个活动主单元,但不一定如此。例如,第一核910可以包括一个活动主单元,而第三核包括另一个。在一些示例中,第一核可包括所有活动主单元。在一些示例中,可以没有第三核930,并且gpu可以仅包括两个核。优选地,每个
核包括与从单元相同数目的主单元,并且每个核相同,因为核中的每个主单元和每个从单元在其它核中的每一个中具有相同的对应物。这也适用于多核系统中仅存在一个活动主单元的情况,例如图1或图3的示例。通过使核相同,即使这可由于不活动的主单元而产生冗余,核能够如上所述并行且独立地操作,其中每个核中的至少一个主单元是活动的且向该核的相应从单元提供工作。此外,使用包含主单元和从单元两者的相同核使gpu架构更容易扩展,也就是说,通过添加(或移除)核而不破坏整体布局来设计较大(或较小)gpu变得更加简单,并且由于整体上存在更少的不同单元,具有不同数目的核的设计更容易验证正确性。由于主单元的片上尺寸相对较小,所以包括不活动主单元不会用尽大量的芯片空间,并且如果另一核中的主单元产生故障,则还提供冗余。
187.在一些示例中,寄存器总线101链接核。寄存器总线101的主要功能是在核之间传送必要寄存器信息,从而使用寄存器写入命令设置配置寄存器,并使用寄存器读取命令访问寄存器信息。然而,还可以利用寄存器总线101以允许主单元与其从单元之间通信——例如,允许主单元140将任务传输到从单元111、121,并且允许从单元111、121将信用通知和任务完成更新传输到主单元140。以此方式使用寄存器总线101消除了对核之间的专用连接的需要,从而节省了芯片空间。由于这些通信的大小较小,因此可以利用寄存器总线101进行主-从通信。例如,当主单元140将子集任务传输到核而不是在寄存器写入命令中编码处理任务所需的所有信息时,主单元140可以替代地仅向从单元提供足够信息以寻址必要的信息。这方面的一个示例是将待处理数据在存储器中的地址传输到从单元。
188.为了利用寄存器总线101进行主-从通信,主单元传输240、250第一子集和第二子集可以包括输出(步骤1000)第一和第二寄存器写入命令,其中第一寄存器写入命令包括第一子集任务的指示,并且第二寄存器写入命令包括第二子集任务的指示(参见图10)。主单元还可输出包括后续被指派任务的指示的后续寄存器写入命令。输出1000可包括经由寄存器总线101将寄存器写入命令直接传输到从单元,或将命令输出到第三核130中的其它硬件单元以进行传输。
189.主单元140可以将寄存器写入命令寻址到主单元已将写入命令中包含的子集任务指派给的核。换句话说,主单元140可以输出第一寄存器写入命令以及第二寄存器写入命令,所述第一寄存器写入命令寻址到第一核并且包括第一子集任务的指示,所述第二寄存器写入命令寻址到第二核并且包括第二子集任务的指示。取决于每个子集中的任务的数目,可能需要多于一个寄存器写入命令来传输子集。在某些情况下,例如传输后续任务,寄存器写入命令可以包括仅单个任务的指示。在任何情况下,每个寄存器写入命令通过寄存器总线101传输,并由其寻址到的核接收。核110、120可以转而将数据传递至从单元111、121,而不是像通常发生的那样将命令中的数据写入寄存器。在每个核包括多个从单元时,寄存器写入命令可寻址到特定核中的特定从单元,且接收核可将命令内包含的数据传递到所述命令寻址到的从单元。以此方式,可以维持第一和第二主单元和从单元(如上所述)中的第一和第二类型的任务的分离。
190.当核的从单元被配置成传输信用通知、任务完成更新和/或cfi通知时,这些内容可以呈寻址到活动主单元的寄存器写入命令或寄存器读取命令的形式。当有多个活动主单元时,每个从单元可以将通信传输至该从单元从其接收任务的主单元。类似地,主单元可以将通信寻址到特定核内的特定从单元。
191.当利用寄存器总线101来传送主-从通信时,预留一系列寄存器地址以进行主-从通信可能是有用的。预留寄存器地址是核被配置成不用于常规寄存器读取/写入命令(旨在实际访问寄存器的命令)的寄存器地址。因此,当核接收到寻址到预留寄存器地址的寄存器读取/写入命令时,不是简单地从寄存器读取数据/向寄存器写入数据,其可以确定这是主-从通信,并将数据传递到核的主单元或从单元。每个核可以与至少一个预留寄存器地址相关联,使得地址指示通信寻址到哪个核(以及可选地该核中的哪个从单元),并且是主从通信,而不是正常寄存器读取或写入命令。如果寄存器读取/写入命令不使用预留寄存器地址,那么核可以将其视为常规寄存器读/写命令,并从/向寄存器读取/写入数据。从从单元发送的通信,例如信用通知和任务完成更新,也可以寻址到预留寄存器地址,并且在这些通信寻址到预留寄存器地址时第三核130可以仅将这些通信发送到主单元140。通过从单元将信用通知和/或任务完成更新寻址到不同预留寄存器地址,主单元140可以知道哪个核(以及该核中的哪个从单元)发送信用通知和/或任务完成更新。
192.在一些示例中,包括活动主单元的核(或包括活动主单元的每个核)可包括仲裁单元。在图11中描绘了这方面的一个示例,其中gpu 1100的第三核130包括活动主单元140以及与主单元140和从单元131通信的仲裁单元1130。在图12中描绘了由gpu 1100执行的示例性方法。仲裁单元1130可以接收1200由主单元140输出1000的寄存器写入命令,并且如果写入命令寻址到包含主单元的核(在此示例中,是第三核130)的从单元131,则将写入命令(或其中包含的数据)发送1210至包含主单元的核的从单元131。如果寄存器写入命令未寻址到包括主单元的核中的从单元,则仲裁单元1130可将写入命令转发1220至寄存器总线101,以传输到命令寻址到的核。这可意指将命令直接转发到寄存器总线101,或经由包含主单元的核中的另一单元将其间接地转发到寄存器总线101。
193.在核包括多个主单元和/或多个从单元的情况下,其仲裁单元可以与这些主单元和从单元中的每一个通信。例如,如果图9的gpu 900的第三核930包括仲裁单元,则其可以从两个主单元941、942接收寄存器写入命令,并且将任何命令(或其中包含的数据)发送至核930内的适当从单元,或在其不寻址到第三核930的任一从单元时将该命令转发至寄存器总线101。
194.类似地,第一核110和第二核120(以及更一般地,不包括活动主单元的核)可各自包括仲裁单元,该仲裁单元可接收由具有活动主单元的核发送的寄存器写入命令。在每个核中,仲裁单元可以将接收到的寄存器写入命令(或其中包含的数据)发送至写入命令寻址到的从单元。在从单元被配置成传输信用通知、任务完成更新或cfi通知的情况下,此通信(任选地呈寄存器读取/写入命令的形式)可输出到核的仲裁单元。仲裁单元可以将命令转发到寄存器总线101以传输至相关活动主单元,或者如果相关活动主单元与仲裁单元处于相同核,则可以将读取/写入命令直接发送至相关活动主单元。当仲裁单元将读取/写入命令转发至寄存器总线101时,其可以直接将命令转发至寄存器总线101,或经由核中的另一单元间接转发至寄存器总线101。替代地,从单元可以通过寄存器总线101直接传输通信。
195.包括活动主单元的核的仲裁单元1130可以被配置成接收由核的从单元传输的寄存器读取/写入命令,并将所述命令发送至活动主单元。
196.如图13中所描绘的,gpu 1300的第一核110、第二核120和第三核130可各自包括接口单元1310、1320、1330。每个接口单元连接到寄存器总线101,并且可以与其核的主单元和
从单元通信。接口单元被配置成从核内的硬件单元接收寄存器读取/写入命令,并通过寄存器总线101传输这些命令。类似地,它们还被配置成从寄存器总线101接收寄存器读取/写入命令,并将其转发到核内的主单元或从单元。将参考图14a解释由gpu 1300执行的示例性方法。
197.该方法的初始阶段(210-230)与图2所解释的那些阶段相同。第三核130的接口单元1330可以接收1400由主单元140输出1000的寄存器写入命令,并将第一命令传输1410至第一核110,并将第二命令传输至第二核130。第一核110的接口单元1310接收1420第一寄存器写入命令,第二核120的接口单元1320接收1430第二寄存器写入命令。第一核110的接口单元1310将第一寄存器写入命令转发1440到从单元111,并且第二核120的接口单元1320将第二寄存器写入命令转发1450到从单元121。转发至从单元可意味着直接发送至从单元,或经由另一硬件单元(例如经由仲裁单元)间接发送至从单元。
198.接口单元1310、1320可各自在接收到寄存器写入命令时,确定1425、1435寄存器写入命令是寻址到预留寄存器地址还是寻址到未预留寄存器地址(参见图14b)。如果寄存器写入命令寻址到预留寄存器地址,则接口单元可以识别这是主-从通信,并且将寄存器写入命令转发1440、1450到核的从单元。否则,接口单元将把寄存器写入命令视为将数据写入核中的寄存器的常规命令。
199.在一些示例中,第一核110、第二核120和第三核130(以及更一般地,gpu的所有核)各自包括接口单元和仲裁单元两者。图15中示出了这一方面的示例。在图15中,gpu 1500的每个核110、120、130包括:主单元140、141、142;从单元131、132、133;仲裁单元1110、1120、1130和接口单元1310、1320、1330。每个接口单元1310、1320、1330连接到寄存器总线101和其核的仲裁单元1110、1120、1130。每个仲裁单元1110、1120、1130与其核的从单元111、121、131和其核的主单元140、141、142通信。如上文所解释的,因为每个核仅包括单个从单元,所以gpu 1500中仅一个主单元是活动的。在此示例中,它是第三核130的主单元140。第一核110和第二核120的主单元141、142的不活动性由对角线阴影表示。
200.图16是描绘了由图15的gpu 1500执行的示例性方法的流程图。出于此示例的目的,假设传输240、250第一子集和第二子集之前的方法步骤与图2相同。
201.在步骤1000中,主单元140输出1000第一寄存器写入命令和第二寄存器写入命令。在步骤1200中,仲裁单元1130接收第一寄存器写入命令和第二寄存器写入命令。由于命令均未寻址到第三核130内的从单元,因此仲裁单元1130转发1220第一寄存器写入命令和第二寄存器写入命令,从而将它们发送至第三核130的接口单元1330。接口单元1330通过寄存器总线101将第一寄存器写入命令传输1410至第一核110,并且将第二寄存器写入命令传输至第二核120。第一核130的接口单元1310接收1420第一寄存器写入命令,并且在确定1425其寻址到预留寄存器地址时,将第一寄存器写入命令转发1440至仲裁单元1110。仲裁单元1110将第一寄存器写入命令(或其中包含的数据)转发1600到第一核110的从单元111(其寻址到的从单元)。类似地,第二核120的接口单元1320接收1430第二寄存器写入命令,并且在确定1435其寻址到预留寄存器地址时,将第二寄存器写入命令转发1450到仲裁单元1120。仲裁单元1120继而转发1610第二寄存器写入命令(或其中包含的数据),从而将其发送到第二核120的从单元。
202.由第一核110或第二核120的从单元111、121发送的任何通信可以类似方式发送至
主单元140。通过示例,由从单元发送的通信可包括信用通知、任务完成更新和cfi通知。通信可以呈寄存器读取或写入命令的形式,并且可以寻址到与主单元140相关联的预留寄存器地址。例如,第一核110的从单元111可以在第一核110完成任务时输出信用通知。仲裁单元1110可以接收此信用通知,并且在确定其未寻址到第一核110的主单元141时,可以将信用通知转发至接口单元1310。接口单元1310可以将信用通知传输至主单元140。第三核130的接口单元1330可以接收信用通知,并且在确定其寻址到预留寄存器地址时,可以将其转发到仲裁单元1130。仲裁单元1130接着可将信用通知转发至主单元140。
203.当第三核130的从单元131传输寻址到同一核的主单元140的通信时,此通信可由仲裁单元1130路由到主单元140,而不被转发到接口单元1330或寄存器总线101。
204.应理解,正如可以组合图12和14a的方法以产生图15中描绘的方法一样,上文公开的其它方法的任何组合也是有效的。例如,图17描绘了包括图5、8和15的步骤的复合方法,并且该复合方法可以在图16的gpu上执行,或在缺少主单元141和142的类似gpu上执行。
205.应注意,描绘为重叠的一些方法步骤由附图标记之间的斜线指示。例如,步骤500和640重叠。这意味着指派给具有最少工作的核的后续任务(步骤500)也可以是步骤640中提到的依赖任务。
206.在一些示例中,步骤500中指派的后续任务是第一任务。在这种情况下,主单元140可以插入任务完成更新命令和存储器刷新命令,如上文关于第一任务所描述的。这通过用虚线箭头循环方法来描绘。
207.应理解,传输520/650可包括与传输240或250相同的所有步骤。
208.图17中描绘的方法可由gpu执行,遵循所示的各个循环,直到没有后续任务要指派和传输为止。
209.在上述任何示例中,gpu的每个核可以是相同的。这意味着每个核可以包括相同数目的主单元和从单元,以及仲裁单元和接口单元。此外,每个主单元可以相同,每个从单元可以相同,每个仲裁单元可以相同,并且每个接口单元可以相同。
210.上文描述的大多数示例已参考包括至少三个核的gpu,其中第三核包括活动主单元。然而,应理解,这些示例中描述的特征可以推广到具有两个或更多个核的其它gpu,并且其中第一核和第二核中的一个包括活动主单元。
211.图18示出了可以在其中实现本文所述的图形处理系统的计算机系统。计算机系统包括cpu 1902、gpu 1904、存储器1906和其他装置1914,例如显示器1916、扬声器1918和相机1919。处理块1910(对应于核110、120、130和寄存器总线101)在gpu 1904上实施。在其他示例中,处理块1910可以在cpu 1902上实施。计算机系统的部件可经由通信总线1920彼此进行通信。
212.图1、图3、图7、图9、图11、图13和图15的gpu被示出为包括许多功能块。这仅是示意性的,并且不旨在限定这类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式来提供。应理解,在本文中被描述为由gpu形成的中间值不需要由所述gpu在任何时间点物理地生成,并且可以仅仅表示方便地描述由所述gpu在其输入和输出之间执行的处理的逻辑值。
213.本文所描述的gpu可体现在集成电路上的硬件中。本文所描述的gpu可配置成执行本文所描述的任一方法。一般来说,上文所描述的功能、方法、技术或部件中的任一者可在
软件、固件、硬件(例如固定逻辑电路系统)或它们的任何组合中实施。本文中可以使用术语“模块”、“功能性”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或它们的任何组合。在软件实施方式的情况下,模块、功能性、部件、元件、单元、块或逻辑表示程序代码,当在处理器上被执行时,所述程序代码执行指定任务。本文中所描述的算法和方法可由执行代码的一个或多个处理器执行,所述代码促使处理器执行算法/方法。计算机可读存储介质的示例包括随机访问存储器(ram)、只读存储器(rom)、光盘、闪存存储器、硬盘存储器,以及可使用磁性、光学和其他技术来存储指令或其他数据并且可由机器访问的其他存储器装置。
214.如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网表),以及用诸如c、java或opencl等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由该代码指定的任务。
215.处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或它们的具有处理能力以使得其可执行指令的集合或部分。处理器可以是任何种类的通用或专用处理器,诸如cpu、gpu、nna、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等。计算机或计算机系统可包括一个或多个处理器。
216.本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(hdl)软件,用于设计集成电路或用于配置可编程芯片以实现所需功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中被处理(即运行)时,该计算机可读程序代码将该系统配置成制造被配置成执行本文中所描述的任何方法的gpu或图形处理系统,或者制造包括本文中所描述的任何设备的gpu或图形处理系统。集成电路定义数据集可以是例如集成电路描述。
217.因此,可提供一种在集成电路制造系统处制造如本文中所描述的gpu或图形处理系统的方法。此外,可提供一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中被处理时,使得制造gpu或图形处理系统的方法得以执行。
218.集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包含作为寄存器传输级(rtl)代码,作为高级电路表示法(例如verilog或vhdl),以及作为低级电路表示法(例如oasis(rtm)和gdsii)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(例如rtl)可在计算机系统处进行处理,所述计算机系统被配置成用于在软件环境的上下文中产生集成电路的制造定义,所述软件环境包括电路元件的定义以及用于组合这些元件以便产生由所述表示法如此定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
219.现在将参照图19描述在集成电路制造系统处处理集成电路定义数据集以便将该
系统配置为制造gpu或图形处理系统的示例。
220.图19示出了集成电路(ic)制造系统2002的示例,该集成电路制造系统被配置为制造如本文任何示例中描述的gpu或图形处理系统。特别地,ic制造系统2002包括布局处理系统2004和集成电路生成系统2006。ic制造系统2002被配置为接收ic定义数据集(例如,定义如本文任何示例中描述的gpu或图形处理系统)、处理ic定义数据集,以及根据ic定义数据集生成ic(例如,其包含如本文任何示例中描述的gpu或图形处理系统)。对ic定义数据集的处理将ic制造系统2002配置成制造包含如本文任何示例中描述的gpu或图形处理系统的集成电路。
221.布局处理系统2004被配置为接收和处理ic定义数据集以确定电路布局。根据ic定义数据集确定电路布局的方法在本领域中是已知的,并且例如可涉及合成rtl代码以确定待生成电路的门级表示,例如就逻辑部件(例如,nand、nor、and、or、mux和flip-flop部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1004已经确定电路布局时,其可将电路布局定义输出到ic生成系统1006。电路布局定义可以是例如电路布局描述。
222.如本领域中所已知,ic生成系统2006根据电路布局定义来生成ic。例如,ic生成系统2006可实施用以生成ic的半导体装置制造工艺,所述半导体装置制造工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,掩模可在光刻工艺中用于根据电路定义来生成ic。可替代地,提供给ic生成系统2006的电路布局定义可呈计算机可读代码的形式,ic生成系统2006可使用所述计算机可读代码来形成用于生成ic的合适的掩模。
223.由ic制造系统2002执行的不同过程可全部在一个位置例如由一方来实施。替代地,ic制造系统2002可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些可以在不同位置和/或由不同各方来执行:(i)合成表示ic定义数据集的rtl码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
224.在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可将该系统配置成在不处理ic定义数据集以确定电路布局的情况下制造gpu或图形处理系统。例如,集成电路定义数据集可以定义可重新配置的处理器诸如fpga的配置,并且对所述数据集进行的处理可以将ic制造系统配置成(例如,通过将配置数据加载到fpga)生成具有所述定义的配置的可重新配置的处理器。
225.在一些实施例中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可使集成电路制造系统产生如本文中所描述的装置。例如,通过集成电路制造定义数据集,以上文参考图19所述的方式对集成电路制造系统进行配置,可以使得制造如本文所述的装置。
226.在一些示例中,集成电路定义数据集可以包含在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图19中所示出的示例中,ic生成系统还可由集成电路定义数据集配置成在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上,或者以其他方式向集成电路提供与集成电路一起
使用的程序代码。
227.与已知的实施方式相比,在本技术中阐述的概念在装置、设备、模块和/或系统中(以及本文中实现的方法中)的实现可以带来性能改进。性能改进可包括计算性能提高、等待时间减少、吞吐量增大和/或功耗降低中的一者或多者。在(例如在集成电路中)制造这类装置、设备、模块和系统期间,可在性能改进与物理实现之间进行权衡,从而改进制造方法。例如,可在性能改进与布局面积之间进行权衡,从而匹配已知实施方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,本技术中所阐述的带来装置、设备、模块和系统的物理实现的改进(例如硅面积减小)的概念可与性能提高进行权衡。这可以例如通过在预定义面积预算内制造模块的多个实例来完成。
228.申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

技术特征:
1.一种包括多个核的图形处理单元(100),其中所述多个核中的每个核包括被配置成管理在所述核内对图像渲染任务的执行的从单元(111、121、131),并且其中所述多个核中的至少一个核还包括主单元(140),所述主单元被配置成:接收一组图像渲染任务;将第一子集图像渲染任务指派给所述多个核中的第一核(110);将第二子集图像渲染任务指派给所述多个核中的第二核(120);将所述第一子集图像渲染任务传输到所述第一核(110)的从单元(111);以及将所述第二子集图像渲染任务传输到所述第二核(120)的从单元(121),其中:所述第一核(110)的从单元(111)被配置成当所述第一子集图像渲染任务中的任务已被处理时向所述主单元(140)传输第一信用通知;所述第二核(120)的从单元(121)被配置成当所述第二子集图像渲染任务中的任务已被处理时向所述主单元(140)传输第二信用通知;并且所述主单元(140)被配置成:存储所述第一核和所述第二核(110、120)中的每一个的信用数字;当所述主单元(140)将所述第一子集图像渲染任务指派给所述第一核(110)时,对于所述第一子集图像渲染任务中的每个任务,按第一量调整所述第一核(110)的信用数字;当所述主单元(140)将所述第二子集图像渲染任务指派给所述第二核(120)时,对于所述第二子集图像渲染任务中的每个任务,按所述第一量调整所述第二核(120)的信用数字;当所述主单元(140)接收到所述第一信用通知时,按第二量调整所述第一核(110)的信用数字;以及当所述主单元(140)接收到所述第二信用通知时,按所述第二量调整所述第二核(120)的信用数字,其中所述第一量和所述第二量中的一个是正的,另一个是负的。2.根据权利要求1所述的图形处理单元(100),其中所述主单元(140)被配置成:基于所述核中的每一个的信用数字,将后续图像渲染任务指派给当前被指派最少工作的核的从单元;按所述第一量调整已被指派所述后续图像渲染任务的核的信用数字;以及将所述后续图像渲染任务传输到其已被指派给的核的从单元。3.根据前述权利要求中任一项所述的图形处理单元(100),其中所述多个核中的每个核包括第二从单元,所述第二从单元被配置成管理由所述核对第二类型的图像渲染任务的执行,并且其中所述核中的一个核包括第二主单元,所述第二主单元被配置成:接收所述第二类型的第二组图像渲染任务;将所述第二组图像渲染任务的第一子集指派给所述多个核中的第一核;将所述第二组图像渲染任务的第二子集指派给所述多个核中的第二不同核;将所述第二组图像渲染任务的第一子集传输到所述多个核(110、120、130)中的第一核的第二从单元;以及将所述第二组图像渲染任务的第二子集传输到所述多个核中的第二核的第二从单元。4.根据前述权利要求中任一项所述的图形处理单元(100),其中:所述主单元(140)被配置成输出第一寄存器写入命令和第二寄存器写入命令;
所述第一寄存器写入命令寻址到所述第一核(110),并且包括所述第一子集图像渲染任务的指示,并且所述第二寄存器写入命令寻址到所述第二核(120),并且包括所述第二子集图像渲染任务的指示;并且所述多个核由被配置成在所述核之间传送寄存器写入命令的寄存器总线(101)连接。5.根据权利要求4所述的图形处理单元(1110),其中至少包括所述主单元(140)的核还包括与所述核的主单元(140)和从单元(131)通信的仲裁单元(1110),其中所述仲裁单元(1110)被配置成:从所述主单元(140)接收所述寄存器写入命令;以及对于每个寄存器写入命令:如果所述寄存器写入命令寻址到包括所述主单元的核,则将所述寄存器写入命令传递到包括所述主单元的核的从单元(131);以及如果所述寄存器写入命令未寻址到包括所述主单元的核,则转发所述寄存器写入命令以通过所述寄存器总线(101)传输。6.根据权利要求4和5中任一项所述的图形处理单元(1300),其中所述多个核各自包括与所述寄存器总线(101)通信的接口单元(1310、1320、1330),其中包括所述主单元的核的接口单元(1330)被配置成:接收所述第一寄存器写入命令和所述第二寄存器写入命令;以及通过所述寄存器总线(101)将所述第一寄存器写入命令传输到所述第一核(110),并且将所述第二寄存器写入命令传输到所述第二核(120),其中所述第一核(110)的接口单元(1310)被配置成:经由所述寄存器总线(101)接收所述第一寄存器写入命令;以及将所述第一寄存器写入命令转发到所述第一核(110)的从单元(111),并且其中所述第二核(120)的接口单元(1320)被配置成:经由所述寄存器总线(101)接收所述第二寄存器写入命令;以及将所述第二寄存器写入命令转发到所述第二核(120)的从单元(121)。7.根据权利要求6所述的图形处理单元(1300),其中所述第一核(110)的接口单元(1310)被配置成:确定所述第一寄存器写入命令是否寻址到第一预留寄存器地址;以及如果所述第一寄存器写入命令寻址到所述第一预留寄存器地址,则将所述第一寄存器写入命令转发到所述第一核(110)的从单元(111),并且其中所述第二核(120)的接口单元(1320)被配置成:确定所述第二寄存器写入命令是否寻址到第二预留寄存器地址;以及如果所述第二寄存器写入命令寻址到所述第二预留寄存器地址,则将所述第二寄存器写入命令转发到所述第二核(120)的从单元(121)。8.一种在包括多个核的图形处理单元(100)中传输图像渲染任务的方法(200),所述方法包括:由所述多个核中的一个核中的主单元(140)接收(210)一组图像渲染任务;由所述主单元(140)将第一子集图像渲染任务指派(220)给所述多个核中的第一核(110);
由所述主单元(140)将第二子集图像渲染任务指派(230)给所述多个核中的第二核(120);由所述主单元(140)将所述第一子集图像渲染任务传输(240)到所述第一核(110)的从单元(111);由所述主单元(140)将所述第二子集图像渲染任务传输(250)到所述第二核(120)的从单元(121);由所述主单元(140)存储(400)所述第一核和所述第二核(110、120)中的每一个的信用数字;由所述主单元(140)对于所述第一子集图像渲染任务中的每个任务按第一量调整(410)所述第一核(110)的信用数字;以及由所述主单元(140)对于所述第二子集图像渲染任务中的每个任务按所述第一量调整(420)所述第二核(120)的信用数字;由所述第一核(110)的从单元(111)在所述第一子集图像渲染任务中的任务已被处理时向所述主单元(140)传输(430)第一信用通知;由所述第二核(120)的从单元(121)在所述第二子集图像渲染任务中的任务已被处理时向所述主单元(140)传输(440)第二信用通知;由所述主单元(140)在所述主单元(140)接收到所述第一信用通知时按第二量调整(450)所述第一核(110)的信用数字;以及由所述主单元(140)在所述主单元(140)接收到所述第二信用通知时按所述第二量调整(460)所述第二核(120)的信用数字,其中所述第一量和所述第二量中的一个是正的,另一个是负的。9.根据权利要求8所述的方法,还包括:由所述主单元(140)基于所述核中的每一个的信用数字将后续图像渲染任务指派(500)给当前被指派最少工作的核的从单元;由所述主单元(140)按所述第一量调整(510)已被指派所述后续图像渲染任务的核的信用数字;以及由所述主单元(140)将所述后续图像渲染任务传输(520)到其已被指派给的核的从单元。10.根据权利要求8至9中任一项所述的方法,其中所述方法包括:由所述主单元(140)在所述第一子集图像渲染任务中在第一任务之后包括(600)任务完成更新命令;由所述第一核(110)处理(610)所述第一任务;由所述第一核(110)处理(620)所述任务完成更新命令;以及由所述第一核(110)的从单元(111)将任务完成更新传输(630)到所述主单元(140);由所述主单元(140)将所述第一任务的依赖任务指派(640)给所述第一核和所述第二核(110、120)的从单元(111、121、131)中的一个;以及由所述主单元(140)将所述依赖任务传输(650)到其已被指派给的核。11.根据权利要求10所述的方法,还包括:由所述主单元(140)在所述第一子集图像渲染任务中在所述第一任务之后以及可选地
在所述任务完成更新命令之前包括(800)存储器刷新命令;由所述第一核(110)处理(810)所述存储器刷新命令;以及由所述第一核(110)的从单元(111)将所述第一核(110)中存储的所有输出数据写入(820)共享存储器(710)。12.一种使用集成电路制造系统制造根据权利要求1至7中任一项所述的图形处理单元的方法,所述方法包括:使用布局处理系统处理所述图形处理单元的计算机可读描述,以便生成包含所述图形处理单元的集成电路的电路布局描述;以及使用集成电路生成系统,根据所述电路布局描述制造所述图形处理单元。13.一种计算机可读存储介质,其上存储有计算机可读代码,所述计算机可读代码被配置成在运行所述代码时使得根据权利要求8至11中任一项所述的方法得以执行。14.一种计算机可读存储介质,其上存储有根据权利要求1至7中任一项所述的图形处理单元的计算机可读描述,所述计算机可读描述当在集成电路制造系统中被处理时,使所述集成电路制造系统执行以下操作:使用布局处理系统处理所述图形处理单元的计算机可读描述,以便生成包含所述图形处理单元的集成电路的电路布局描述;以及使用集成电路生成系统,根据所述电路布局描述制造所述图形处理单元。15.一种集成电路制造系统,包括:非暂时性计算机可读存储介质,其上存储有根据权利要求1至7中任一项所述的图形处理单元的计算机可读描述;布局处理系统,其被配置成处理所述计算机可读描述,以便生成包含所述图形处理单元的集成电路的电路布局描述;以及集成电路生成系统,其被配置成根据所述电路布局描述制造所述图形处理单元。

技术总结
本申请涉及多核主/从通信。本发明提供了一种多核图形处理单元(GPU)和一种操作GPU的方法。GPU至少包括第一核和第二核。多核GPU中的至少一个核包括主单元,所述主单元被配置成接收一组图像处理任务,将第一子集任务指派给第一核并将第二子集任务指派给第二核,将第一子集传输到第一核并将第二子集传输到第二核。子集传输到第一核并将第二子集传输到第二核。子集传输到第一核并将第二子集传输到第二核。


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

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

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

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

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

分享:

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

评论

相关推荐