会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 电脑零配件 / 数据处理系统 / 数据处理系统

数据处理系统

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

IPRDB可以提供数据处理系统专利检索,专利查询,专利分析的服务。并且数据处理系统。在数据处理系统的处理资源将执行在主处理器上运行的应用的处理任务时,主处理器准备使得处理资源执行处理任务的多个命令流(70、71)。在要对命令(70)流添加的处理任务(72)与将在另一命令流(71)中包括的处理任务(74)具有依赖关系时,向要包括对在另一命令流(71)中包括的处理任务(74)具有依赖关系的处理任务(72)的命令流(70)添加等待命令(73),以使得处理资源延迟运行在等待命令(73)之后的、命令流(70)中的随后命令,直到处理资源在另一命令流(71)中到达特定位置。,下面是数据处理系统专利的具体信息内容。

1.一种操作数据处理系统的方法,该数据处理系统包括:主处理器,该主处理器能够操作以运行所述数据处理系统的应用;和处理资源,该处理资源能够操作以执行在所述主处理器上运行的应用的处理任务;

所述方法包括以下步骤:

响应于来自应用的、对待由所述处理资源执行的处理的请求,在所述主处理器上准备使得所述处理资源执行所述应用的处理任务的多个命令流,各命令流包括使得所述处理资源执行处理任务的命令的序列;

其中,准备所述命令流的步骤包括:

在要对所述多个命令流中的命令流添加的处理任务与将在所述多个命令流中的另一命令流中包括的处理任务具有依赖关系时:在要包括对将在另一命令流中包括的处理任务具有依赖关系的处理任务的所述命令流中,包括等待命令,该等待命令将使得所述处理资源延迟运行包括所述等待命令的命令流中的随后命令,直到所述处理资源到达所述另一命令流中的特定位置;

所述方法还包括以下步骤:

所述主处理器向所述处理资源提供所述多个命令流;以及所述处理资源运行所述多个命令流中的命令,以运行所述应用的处理任务;

由所述处理资源执行所述命令流中的命令的步骤包括:在命令流包括等待命令时,所述处理资源不运行包括所述等待命令的命令流中的随后命令,直到所述处理资源对于所述等待命令到达了所述另一命令流中的所述特定位置;并且在所述处理资源对于所述等待命令到达了所述另一命令流中的所述特定位置时,所述处理资源运行包括所述等待命令的命令流中的在所述等待命令之后的随后命令。

2.根据权利要求1所述的方法,所述方法包括以下步骤:准备与在被运行时较完全地使用所述处理资源中的处理资源的处理任务有关的一个命令流;和与在被运行时较不完全地使用所述处理资源中的处理资源的处理任务有关的另一命令流。

3.根据权利要求1所述的方法,其中,

所述处理资源是图形处理器;

并且所述方法包括以下步骤:准备

与所述图形处理器的计算任务有关的一个命令流;和与所述图形处理器的非计算任务有关的另一命令流。

4.根据权利要求3所述的方法,其中,图形计算任务包括要执行镶嵌的计算任务,并且所述非计算任务包括图形几何处理任务。

5.根据前述权利要求中任一项所述的方法,所述方法包括以下步骤:在准备命令流时使用与该命令流关联的进展计数器来跟踪沿着该命令流到达的位置;

和/或

在运行命令流时使用与该命令流关联的进展计数器来跟踪沿着该命令流到达的位置。

6.根据权利要求5所述的方法,包括以下步骤:仅在对于命令流添加或运行了特定命令时,增大命令流的所述进展计数器。

7.根据权利要求1至4中任一项所述的方法,所述方法包括以下步骤:在要对所述多个命令流中的命令流添加的处理任务与将在所述多个命令流中的另一命令流中包括的处理任务具有依赖关系时,所述主处理器:在所述另一命令流中,在所述另一命令流中的特定处理任务的命令之前,也包括等待命令,以一旦所述处理资源到达包括与所述另一命令流中的处理任务具有依赖关系的处理任务的所述命令流中的特定位置,则触发所述另一命令流中的该处理任务的运行,其中该特定处理任务为包括与所述另一命令流中的处理任务具有依赖关系的处理任务的所述命令流中的处理任务所依赖于的处理任务。

8.根据权利要求7所述的方法,其中,

包括与要针对所述另一命令流中的等待命令而包括到所述另一命令流中的处理任务具有依赖关系的处理任务的所述命令流中的所述特定位置,是包括与将在另一命令流中包括的处理任务具有依赖关系的处理任务的所述命令流中的、与所述另一命令流中的处理任务具有依赖关系的处理任务的一个或更多个处理任务之前的位置。

9.根据权利要求1至4中任一项所述的方法,其中,所述处理资源包括:多个命令流运行单元,该多个命令流运行单元能够操作以执行命令流中的命令,以运行应用的处理任务;和控制器,该控制器能够操作以控制由所述命令流运行单元对命令流的运行;

所述方法还包括以下步骤:

各命令流运行单元对于正在运行的命令流维持当前在该命令流中到达的位置的记录、以及另一命令流正在等待的命令流中的位置的记录;

以及

在命令流运行单元在正在运行的命令流中遇到等待命令时,所述命令流运行单元通告所述控制器;并且所述控制器响应于来自所述命令流运行单元的所述信号:识别所述命令流运行单元遇到等待命令;

根据所述等待命令,识别所述命令流的运行所要等待的所述另一命令流,以及使包括所述等待命令的所述命令流的运行继续所要到达的所述另一命令流中的所述特定位置;

确定在所述另一命令流中是否到达了所述特定位置;并且在已经到达所述另一命令流中的所述特定位置时,通告所述命令流运行单元继续运行包括所述等待命令的命令流中的命令。

10.根据权利要求9所述的方法,所述方法还包括以下步骤:所述控制器在尚未到达所述另一命令流中的所述特定位置时:对于所述另一命令流,将另一命令流正在等待的位置的记录设置成使包括所述等待命令的所述命令流的运行继续所要到达的所述特定位置;并且将正在运行所述另一命令流的所述命令流运行单元配置为在到达所述另一命令流中的所设置位置时通告所述控制器,其中包含所述等待命令的所述命令流的运行所要等待该另一命令流;

所述方法还包括以下步骤:

对于所述另一命令流,所述命令流运行单元在运行所述另一命令流时到达所设置位置时,通告所述控制器;以及响应于该信号,所述控制器识别对于哪个等待命令到达了另一命令流中的所述特定位置,并且通告所述命令流运行单元对于到达了特定位置的包括所述等待命令的所述命令流,重新开始包括所述等待命令的所述命令流的运行。

11.根据权利要求1至4中任一项所述的方法,其中,所述处理资源包括:多个命令流运行单元,该多个命令流运行单元能够操作以执行命令流中的命令,以运行应用的处理任务;和控制器,该控制器能够操作以控制由所述命令流运行单元对命令流的运行;

所述方法还包括以下步骤:

各命令流运行单元对于正在运行的命令流维持当前在该命令流中到达的位置的记录;

以及

在命令流运行单元在正在运行的命令流中遇到等待命令时,所述命令流运行单元:根据所述等待命令,识别所述命令流的运行所要等待的所述另一命令流,以及使包括所述等待命令的所述命令流的运行继续所要到达的所述另一命令流中的所述特定位置;

根据正在运行所识别的另一命令流的所述命令流运行单元维持的当前在所述命令流中到达的位置的记录,确定是否在所述另一命令流中到达了所述特定位置;并且在已经到达所述另一命令流中的所述特定位置时,继续运行包括所述等待命令的命令流中的命令;

在尚未到达所述另一命令流中的所述特定位置时,停止运行包括所述等待命令的所述命令流,直到到达所述另一命令流中的所述特定位置。

12.根据权利要求11所述的方法,所述方法还包括以下步骤:当根据正在运行所识别的另一命令流的所述命令流运行单元维持的当前在所述命令流中到达的位置的记录,确定尚未到达所述另一命令流中的所述特定位置时,遇到正在运行的所述命令流中的所述等待命令的所述命令流运行单元:向能够操作以控制由所述命令流运行单元进行的命令流的运行的所述控制器通告包括所述等待命令的所述命令流的运行已停止。

13.根据权利要求11所述的方法,所述方法还包括以下步骤:在尚未到达所述另一命令流中的所述特定位置时,在正运行的所述命令流中遇到了所述等待命令的所述命令流运行单元:响应于发生了特定事件,重新尝试根据正在运行所识别的另一命令流的所述命令流运行单元维持的当前在所述命令流中到达的位置的记录,确定是否在所述另一命令流中到达了所述特定位置。

14.根据权利要求1至4中任一项所述的方法,其中,所述处理资源是图形处理器。

15.一种用于数据处理系统的主处理器,所述主处理器能够操作以运行所述数据处理系统的应用,并且包括:命令流生成电路,该命令流生成电路能够操作以响应于来自应用的、对待由所述数据处理系统的处理资源执行的处理的请求,准备使得所述处理资源执行所述应用的处理任务的多个命令流,各命令流包括使得所述处理资源执行处理任务的命令的序列;

其中,所述命令流生成电路还能够操作以:

在要对所述多个命令流中的命令流添加的处理任务与将在所述多个命令流中的另一命令流中包括的处理任务具有依赖关系时:在要包括对将在另一命令流中包括的处理任务具有依赖关系的处理任务的所述命令流中,包括等待命令,该等待命令将使得所述处理资源延迟运行包括所述等待命令的命令流中的随后命令,直到所述处理资源到达所述另一命令流中的特定位置;

所述主处理器还包括:

处理电路,该处理电路能够操作以向所述处理资源提供所述多个命令流。

16.根据权利要求15所述的主处理器,其中,所述命令流生成电路能够操作以准备:与在被运行时较完全地使用所述处理资源中的处理资源的处理任务有关的一个命令流;和与在被运行时较不完全地使用所述处理资源中的处理资源的处理任务有关的另一命令流。

17.根据权利要求15所述的主处理器,其中,

所述处理资源是图形处理器;

并且,所述命令流生成电路能够操作以准备:

与所述图形处理器的计算任务有关的一个命令流;和与所述图形处理器的非计算任务有关的另一命令流。

18.根据权利要求15至17中任一项所述的主处理器,其中,所述等待命令指示要等待的所述另一命令流和要等待的该另一命令流中的特定位置这两者。

19.根据权利要求15至17中任一项所述的主处理器,其中,所述命令流生成电路能够操作以:在要对所述多个命令流中的命令流添加的处理任务与将在所述多个命令流中的另一命令流中包括的处理任务具有依赖关系时:在所述另一命令流中,在所述另一命令流中的特定处理任务的命令之前,也包括等待命令,以一旦所述处理资源到达包括与所述另一命令流中的处理任务具有依赖关系的处理任务的所述命令流中的特定位置,则触发所述另一命令流中的该处理任务的运行,其中该特定处理任务为包括与所述另一命令流中的处理任务具有依赖关系的处理任务的所述命令流中的处理任务所依赖于的处理任务。

20.一种用于数据处理系统的处理资源,所述处理资源能够操作以执行应用的处理任务,所述应用在所述数据处理系统的主处理器上执行,并且该处理资源包括:执行电路,该执行电路能够操作以执行从主处理器接收的多个命令流中的命令,以执行在所述主处理器上执行的应用的处理任务,各命令流包括使得所述处理资源执行处理任务的命令的序列;

其中,所述执行电路被配置为:

响应于包括等待命令的命令流,不执行包括所述等待命令的命令流中的随后命令,直到所述处理资源到达另一命令流中对于所述等待命令指示的特定位置,其中该等待命令将使得所述处理资源延迟执行包括所述等待命令的命令流中的随后命令,直到所述处理资源到达另一命令流中的特定位置;

并且

在所述处理资源到达针对所述等待命令的、所述另一命令流中的所述特定位置时,执行包括所述等待命令的命令流中的在所述等待命令之后的随后命令。

21.根据权利要求20所述的处理资源,包括:

进展跟踪电路,该进展跟踪电路被配置为在执行命令流时使用与所述命令流关联的进展计数器来跟踪沿着所述命令流到达的位置。

22.根据权利要求20至21中任一项所述的处理资源,其中,所述执行电路包括:多个命令流执行单元,该多个命令流执行单元能够操作以执行命令流中的命令,以执行应用的处理任务;和控制器,该控制器能够操作以控制所述命令流执行单元对命令流的执行;

各命令流执行单元能够操作以:

对于正在执行的命令流维持当前在所述命令流中到达的位置的记录、以及另一命令流正在等待的所述命令流中的位置的记录;

并且

在命令流执行单元在正在执行的命令流中遇到等待命令时,通告所述控制器;

并且

所述控制器能够操作以:

响应于来自所述命令流执行单元的所述信号:

识别所述命令流执行单元遇到等待命令;

根据所述等待命令,识别所述命令流的执行所要等待的所述另一命令流以及使包括所述等待命令的所述命令流的执行继续所要到达的所述另一命令流中的所述特定位置;

确定在所述另一命令流中是否到达了所述特定位置;并且在已经到达所述另一命令流中的所述特定位置时,通告所述命令流执行单元继续执行包括所述等待命令的命令流中的命令。

23.根据权利要求22所述的处理资源,其中,

所述控制器能够操作以在尚未到达所述另一命令流中的所述特定位置时:对于所述另一命令流,将另一命令流正在等待的位置的所述记录设置成使包括所述等待命令的所述命令流的运行继续所要到达的所述特定位置;并且将在运行所述另一命令流的所述命令流运行单元配置为在到达所述另一命令流中的所设置位置时向所述控制器通告,包含所述等待命令的所述命令流的运行所要等待该另一命令流;

并且还能够操作以:

响应于来自命令流运行单元的、正在其运行其命令流中到达所设置位置的信号,识别对于哪个等待命令到达另一命令流中的所述特定位置,并且针对包括特定位置到达的所述等待命令的所述命令流,用通告所述命令流运行单元重新开始包括所述等待命令的所述命令流的运行。

24.根据权利要求20至21中任一项所述的处理资源,其中,所述运行电路包括:多个命令流运行单元,该多个命令流运行单元能够操作以执行命令流中的命令,以运行应用的处理任务;和控制器,该控制器能够操作以控制由所述命令流运行单元对命令流的运行;

各命令流运行单元还能够操作以:

对于正在运行的命令流维持当前在所述命令流中到达的位置的记录;

并且

当在正在运行的命令流中遇到等待命令时:

根据所述等待命令,识别所述命令流的运行所要等待的所述另一命令流以及为了使包括所述等待命令的所述命令流的运行继续所要到达的所述另一命令流中的所述特定位置;

根据正在运行所识别的另一命令流的所述命令流运行单元维持的当前在所述命令流中到达的位置的所述记录,确定在所述另一命令流中是否到达了所述特定位置;

并且

在已经到达所述另一命令流中的所述特定位置时,继续运行其包括所述等待命令的命令流中的命令;

在尚未到达所述另一命令流中的所述特定位置时,停止运行其包括所述等待命令的命令流,直到到达所述另一命令流中的所述特定位置。

25.根据权利要求24所述的处理资源,其中,各命令流运行单元还能够操作以:当在正在运行的命令流中遇到等待命令并且根据正在运行所识别的另一命令流的所述命令流运行单元维持的当前在所述命令流中到达所述位置的所述记录,确定尚未到达所述另一命令流中的所述特定位置时:向能够操作以控制由所述命令流运行单元进行的命令流的运行的所述控制器通告包括所述等待命令的所述命令流的运行已停止。

26.根据权利要求24所述的处理资源,其中,各命令流运行单元还能够操作以:当正在运行的命令流中遇到等待命令并且尚未到达所述另一命令流中的所述特定位置时:响应于发生了特定事件,重新尝试根据正在运行所识别的另一命令流的所述命令流运行单元维持的当前在所述命令流中到达的位置的所述记录,确定在所述另一命令流中是否到达了所述特定位置。

27.根据权利要求20所述的处理资源,其中,所述处理资源是图形处理器。

28.一种数据处理系统,该数据处理系统包括:

根据权利要求15至17中任一项所述的主处理器;和根据权利要求20、21或27中任一项所述的处理资源。

29.一种用于数据处理系统的处理资源的驱动器,该处理资源能够操作以执行应用的处理任务,这些应用在所述数据处理系统的主处理器上运行,所述驱动器能够操作以:响应于来自应用的、对待由所述处理资源执行的处理的请求,准备使得所述处理资源执行所述应用的处理任务的多个命令流,各命令流包括使得所述处理资源执行处理任务的命令的序列;

其中,准备所述命令流的处理包括:

在要对所述多个命令流中的命令流添加的处理任务与将在所述多个命令流中的另一命令流中包括的处理任务具有依赖关系时:在要包括对将在另一命令流中包括的处理任务具有依赖关系的所述处理任务的所述命令流中,包括等待命令,该等待命令将使得所述处理资源延迟运行包括所述等待命令的命令流中的随后命令,直到所述处理资源到达所述另一命令流中的特定位置。

30.一种计算机可读存储介质,该计算机可读存储介质存储计算机程序,所述计算机程序在数据处理装置上执行时执行根据权利要求1至14中任一项所述的方法。

说明书全文

数据处理系统

技术领域

[0001] 本发明涉及数据处理系统,具体涉及向数据处理系统的处理资源(诸如图形处理器)提交处理任务。

背景技术

[0002] 许多数据处理系统包括处理资源,处理资源诸如可以执行用于例如应用的处理任务的图形处理器(图形处理单元(GPU)),这些应用在数据处理系统的主要(例如,主)处理器(CPU)上运行。
[0003] 通过向处理资源提供要由处理资源执行的命令(指令)的流,可以使得处理资源(例如图形处理器)运行应用的处理任务。例如,用于处理资源的驱动器可以准备包含要由处理资源运行的命令(指令)的命令流,并且向处理资源(例如,图形处理器)提供命令流,处理资源然后执行命令流中的命令(由命令指示的操作)。命令流可以例如包含设置用于处理任务的参数的命令(指令)、以及执行处理任务的命令(指令)。处理资源然后将以其自身的方式工作遍历命令流,这依次运行命令流中的命令(指令)。
[0004] 申请人已经认识到,在一些情况下,要由处理资源执行的任务在它们之间可以具有依赖关系,使得例如它们需要按特定顺序运行。这一点的示例是用于图形处理器的几何任务,其中,在几何任务之间通常可以存在连续依赖关系,因为它们必须以与API(应用程序接口)绘制调用(calldraw)相同的顺序来运行。这可以通过在被提供给图形处理器的命令流中适当排序几何任务来直接实现。
[0005] 申请人还认识到,可以是以下这种情况:要由处理资源执行的给定处理任务就其本身而言无法完全使用处理资源的所有可用资源。图形处理器中的这一点的示例可以是需要镶嵌的情况,因为这种镶嵌可能需要多个连续依赖的镶嵌任务(其后是单个几何任务),但这些镶嵌任务通常将不单独需要图形处理器的所有处理资源来完成(例如,因为它们将不包含完全使用图形处理器的处理资源来处理的足够工作项)。而且,这种镶嵌任务会运行较长时间。
[0006] 在这点上将可以简单地在命令流中按顺序包括这种较小(例如,镶嵌)任务。在这种情况下,这种“简化的”处理任务(例如,镶嵌任务)将被简单地添加到正在准备的现有命令流的末端。然而,这然后无法以最高效的方式使用处理资源(例如,图形处理器)的资源。
[0007] 另选地可以通过例如以下方式来实现处理资源在这种情况下的较大使用(由此实现较大效率):修改现有命令流,以将较小(例如,镶嵌)任务插在命令流中的较早的点处,使得这些任务然后可以在需要它们的结果之前例如在处理资源(例如,图形处理器)上与其他处理任务并行地运行。
[0008] 然而,这种操作将需要更复杂的驱动器操作,因此可能引起用于驱动器操作的显著主处理器加载和开销,例如这两者因为将需要修改先前准备的命令流,还因为将需要跟踪现有命令流中的适当“修改”(例如,任务“插入”)点。此外,会需要始终进行这种“跟踪”,因为何时可能需要修改现有命令流是不可能预先预测的。
[0009] 因此,申请人相信还存在针对用于运行的处理任务到数据处理系统的处理资源(诸如图形处理器)的提交的改进的范围。

发明内容

[0010] 根据本发明的第一方面,提供了一种操作数据处理系统的方法,该数据处理系统包括:
[0011] 主处理器,该主处理器可操作以运行数据处理系统的应用;和
[0012] 处理资源,该处理资源可操作以执行在主处理器上运行的应用的处理任务;
[0013] 方法包括以下步骤:
[0014] 响应于来自应用的、对待由处理资源执行的处理的请求,在主处理器上准备使得处理资源执行应用的处理任务的多个命令流,各命令流包括使得处理资源执行处理任务的命令的序列;
[0015] 其中,准备命令流的步骤包括:
[0016] 在要对多个命令流中的命令流添加的处理任务与将在多个命令流中的另一命令流中包括的处理任务具有依赖关系时:
[0017] 在要包括对将在另一命令流中包括的处理任务具有依赖关系的处理任务的命令流中,包括等待命令,该等待命令将使得处理资源延迟运行包括等待命令的命令流中的随后命令,直到处理资源到达另一命令流中的特定位置;
[0018] 方法还包括以下步骤:
[0019] 主处理器向处理资源提供多个命令流;以及
[0020] 处理资源运行多个命令流中的命令,以执行应用的处理任务;
[0021] 由处理资源运行命令流中的命令的步骤包括:
[0022] 在命令流包括等待命令时,处理资源不运行包括等待命令的命令流中的随后命令,直到处理资源对于等待命令到达了另一命令流中的特定位置;并且
[0023] 在处理资源对于等待命令到达了另一命令流中的特定位置时,处理资源运行包括等待命令的命令流中的在等待命令之后的随后命令。
[0024] 根据本发明的第二方面,提供了一种数据处理系统,该数据处理系统包括:
[0025] 主处理器,该主处理器可操作以运行数据处理系统的应用;和
[0026] 处理资源,该处理资源可操作以执行在主处理器上运行的应用的处理任务;
[0027] 其中,主处理器包括:
[0028] 命令流生成电路,该命令流生成电路可操作以响应于来自应用的、对待由处理资源执行的处理的请求,准备使得处理资源执行应用的处理任务的多个命令流,各命令流包括使得处理资源执行处理任务的命令的序列;
[0029] 其中,命令流生成电路还可操作以:
[0030] 在要对多个命令流中的命令流添加的处理任务与将在多个命令流中的另一命令流中包括的处理任务具有依赖关系时:
[0031] 在要包括对将在另一命令流中包括的处理任务具有依赖关系的处理任务的命令流中,包括等待命令,该等待命令将使得处理资源延迟运行包括等待命令的命令流中的随后命令,直到处理资源到达另一命令流中的特定位置;
[0032] 主处理器还包括:
[0033] 处理电路,该处理电路可操作以向处理资源提供多个命令流;和
[0034] 处理资源,该处理资源包括:
[0035] 运行电路,该运行电路可操作以运行多个命令流中的命令,以执行应用的处理任务;
[0036] 其中,运行电路被配置为:
[0037] 响应于命令流包括等待命令,不运行包括等待命令的命令流中的随后命令,直到处理资源到达对于等待命令指示的、另一命令流中的特定位置;并且
[0038] 在处理资源对于等待命令到达了另一命令流中的特定位置时,运行包括等待命令的命令流中的在等待命令之后的随后命令。
[0039] 本发明涉及诸如图形处理器的处理资源可操作以运行命令流中的命令(指令)结构,该命令流执行在主处理器上运行的应用的处理任务。
[0040] 然而,在本发明中,除了向处理资源简单地提供用于运行的单个命令流之外,还准备多个命令流并向处理资源提供这些命令流以运行。此外,命令流可以包括“等待”命令,该等待命令使得处理资源延迟运行命令流中的随后命令,直到处理资源到达另一(不同)命令流中的特定位置。换言之,命令流可以包括“进展等待”命令,该进展等待命令使得处理资源延迟运行命令流中的随后命令,直到处理资源到达另一(不同)命令流中的特定位置(在另一(不同)命令流中进行所指示量的进展)。
[0041] 如下面将进一步讨论的,如与例如仅使用单个命令流的结构相比,该结构然后促进对彼此有依赖关系的处理任务的运行的较直接同步,并且以可以较完全且较高效地使用处理资源的资源的方式。
[0042] 此外,以本发明的方式进行的操作以及命令流准备和处理任务运行可以在不需要显著的主要(主)处理器(CPU)开销的情况下且在不例如需要用于处理资源的显著更复杂驱动器操作的情况下实现。
[0043] 本发明还扩展到准备命令流本身的操作并且对应地扩展到处理资源运行命令流本身。
[0044] 由此,根据本发明的另外方面,提供了一种操作数据处理系统的主处理器的方法,该数据处理系统包括可操作以运行数据处理系统的应用的主处理器和可操作以执行在主处理器上运行的应用的处理任务的处理资源。
[0045] 方法包括以下步骤:
[0046] 响应于来自应用的、对待由处理资源执行的处理的请求,在主处理器上准备使得处理资源执行应用的处理任务的多个命令流,各命令流包括使得处理资源执行处理任务的命令的序列;
[0047] 其中,准备命令流的步骤包括:
[0048] 在要对多个命令流中的命令流添加的处理任务与将在多个命令流中的另一命令流中包括的处理任务具有依赖关系时:
[0049] 在要包括对将在另一命令流中包括的处理任务具有依赖关系的处理任务的命令流中,包括等待命令,该等待命令将使得处理资源延迟运行包括等待命令的命令流中的随后命令,直到处理资源到达另一命令流中的特定位置;
[0050] 方法还包括以下步骤:
[0051] 主处理器向处理资源提供多个命令流以运行。
[0052] 根据本发明的另外方面,提供了一种用于数据处理系统的主处理器,主处理器可操作以执行数据处理系统的应用,并且包括:
[0053] 命令流生成电路,该命令流生成电路可操作以响应于来自应用的、对待由数据处理系统的处理资源执行的处理的请求,准备使得处理资源执行应用的处理任务的多个命令流,各命令流包括使得处理资源执行处理任务的命令的序列;
[0054] 其中,命令流生成电路还可操作以:
[0055] 在要对多个命令流中的命令流添加的处理任务与将在多个命令流中的另一命令流中包括的处理任务具有依赖关系时:
[0056] 在要包括对将在另一命令流中包括的处理任务具有依赖关系的处理任务的命令流中,包括等待命令,该等待命令将使得处理资源延迟运行包括等待命令的命令流中的随后命令,直到处理资源到达另一命令流中的特定位置;
[0057] 主处理器还包括:
[0058] 处理电路,该处理电路可操作以向处理资源提供多个命令流。
[0059] 根据本发明的另外方面,提供了一种操作数据处理系统的处理资源的方法,处理资源可操作以执行应用的处理任务,这些应用在数据处理系统的主处理器上运行;
[0060] 方法包括以下步骤:
[0061] 处理资源从数据处理系统的主处理器接收使得处理资源运行在主处理器上执行的应用的处理任务的多个命令流,各命令流包括使得处理资源执行处理任务的命令的序列,并且命令流中的至少一个包括等待命令,该等待命令将使得处理资源延迟运行包括等待命令的命令流中的随后命令,直到处理资源到达另一命令流中的特定位置;
[0062] 并且
[0063] 处理资源运行多个命令流中的命令,以执行应用的处理任务;
[0064] 由处理资源运行命令流中的命令的步骤包括:
[0065] 在命令流包括等待命令时,处理资源不运行包括等待命令的命令流中的随后命令,直到处理资源对于等待命令到达了另一命令流中的特定位置;并且
[0066] 在处理资源对于等待命令到达了另一命令流中的特定位置时,处理资源运行包括等待命令的命令流中的在等待命令之后的随后命令。
[0067] 根据本发明的另外方面,提供了一种用于数据处理系统的处理资源,处理资源可操作以执行应用的处理任务,这些应用在数据处理系统的主处理器上运行,并且处理资源包括:
[0068] 运行电路,该运行电路可操作以执行从主处理器接收的多个命令流中的命令,以运行在主处理器上运行的应用的处理任务,各命令流包括使得处理资源执行处理任务的命令的序列;
[0069] 其中,运行电路被配置为:
[0070] 响应于包括等待命令(该等待命令将使得处理资源延迟运行包括等待命令的命令流中的随后命令,直到处理资源到达另一命令流中的特定位置)的命令流,不运行包括等待命令的命令流中的随后命令,直到处理资源到达对于等待命令指示的、另一命令流中的特定位置;
[0071] 并且
[0072] 在处理资源对于等待命令到达了另一命令流中的特定位置时,运行包括等待命令的命令流中的在等待命令之后的随后命令。
[0073] 处理资源可以是可操作以执行应用的处理任务的任意合适的处理资源。在优选实施方式中,处理资源是图形处理器(图形处理单元(GPU))。在另一优选实施方式中,处理资源是视频处理器和/或图像处理器。
[0074] 要由处理资源执行的处理可以是关注的处理资源可以执行的任意合适且期望的处理。这因此可以且优选地的确依赖处理资源的性质。
[0075] 在图形处理器的情况下,要执行的处理优选地包括适当的图形处理,诸如生成图形处理输出,诸如渲染用于显示的帧(图像)和/或用于其他目的(例如,渲染到纹理操作)。
[0076] 在一个优选实施方式中,在图形处理器的情况下,要执行的处理包括几何处理,并且具体为可能需要镶嵌的几何处理(其中,可能或将需要产生并处理某一已镶嵌的几何结构(几何处理将包括镶嵌步骤/阶段))。
[0077] 在另一优选实施方式中,在图形处理器的情况下,要执行的处理是交织渲染操作,即,其中,多个渲染轮次各被分成许多任务,任务然后跨(多个)渲染轮次交织(例如,以减少保持中间结果所需的缓存的量)。
[0078] 在另一优选实施方式中,在图形处理器的情况下,要执行的处理涉及图形着色器处理和操作,并且具体涉及要运行一个或更多个“向导(pilot)”着色器(如例如在申请人的较早的美国专利No.9189881中描述)(其后是运行非向导着色器程序)的结构。
[0079] 要由处理资源执行的处理任务可以是关注的处理资源可以执行的任意合适且期望的处理。它们因此可以且优选地的确依赖处理资源的性质,并且依赖要由处理资源执行的特定处理。
[0080] 设想到本发明在以下情况下特别有用:可以存在要由处理资源执行的不同类型的处理任务,特别是在处理任务具有处理资源的不同等级的使用且互相依赖彼此的情况下。由此,在一个特别优选的实施方式中,要由处理资源执行的处理任务包括:在被执行时将较完全(例如,完全)使用处理资源的处理任务;和在被执行时将较不完全(和不完全)使用处理资源的资源(并且例如且优选地因此可以在处理资源上与其他处理任务并行执行)的处理任务。最优选地,较完全地使用处理资源的处理任务中的一个或更多个依赖将较不完全使用处理资源的处理任务中的一个或更多个(例如,需要来自其的结果)。
[0081] 这一点的示例将是包括镶嵌操作的图形几何处理,在这种情况下,“正常”图形几何处理可以且通常将较完全地使用图形处理器的处理,但依赖以其本身而言将不如此完全地使用图形处理器的镶嵌处理任务(例如,计算作业)。
[0082] 然而,还将可以的是使本发明用于处理任务大致相等地使用处理资源(但再次对彼此具有互相依赖)的情形。这一点的示例将是交织渲染,其中,不同的渲染轮次实际上将使用相同的处理任务(并且因此具有图形处理器的类似使用),但将互相依赖。
[0083] 在图形处理器的情况下,处理任务优选地包括适当的图形处理操作,诸如用于生成图形处理输出,诸如渲染用于显示的帧(图像)和/或用于其他目的(例如,渲染到纹理操作)。
[0084] 在一个优选实施方式中,要在图形处理器的情况下执行的处理任务包括以下各项中的一个或更多个:除了(不是)图形计算任务之外的图形处理任务;和图形计算任务(其中,图形处理器充当执行计算处理(计算作业)的通用图形处理器(GPGPU))。
[0085] 在优选的这种实施方式中,图形计算任务包括要执行镶嵌的计算任务和/或非计算任务包括图形几何处理任务(几何作业)。最优选地,处理任务包括几何处理任务和镶嵌计算任务。因此,在这种情况下,处理任务将与所镶嵌几何的产生和处理有关。
[0086] 在这种结构中,特别是在基于块的图形处理的情况下,几何处理任务可以且优选地的确包括处理图形顶点并为稍后的基于块的片段渲染任务准备结果的几何处理。几何处理可以由例如计算顶点坐标、计算各顶点的属性以及将图元分类为块构成。计算任务可以包括例如一般计算任务或可以例如与块分类集成(例如,根据块分类按需运行的少量计算任务),这些一般计算任务不使用将图元分类成块或读取用于各块的图元列表所需的特定硬件。还可以存在渲染用于应用于各块的图元的片段的片段任务。
[0087] 在另一优选实施方式中,存在与向导着色器处理有关的一个或更多个处理任务以及然后与“完全”(或至少在向导着色器操作之后剩余的)着色器操作有关。在这种情况下,“完全”着色器操作处理任务可以依赖“向导”着色器操作和处理任务。
[0088] 可以为处理资源准备任意期望数量的(多个)命令流。在一个优选实施方式中,仅准备两个命令流,并且在其他实施方式中,准备多于两个命令流。
[0089] 各命令流可以与任意合适且期望的处理任务有关。
[0090] 在一个优选实施方式中,各命令流与不同类型的处理任务有关。例如且优选地,一个(或更多个)命令流可以与在被运行时较完全(例如,完全)使用处理资源中的资源的处理任务有关,另一命令流与在被运行时较不完全(除了完全之外(不完全))使用处理资源中的处理资源的处理任务有关。
[0091] 在这种结构中,在图形处理器的情况下,在一个实施方式中,一个(或更多个)命令流因此优选地与用于图形处理器的计算任务有关,其他(或另一)命令流与非计算任务(除了计算任务之外的任务)有关。在特别优选的这种结构中,一个(或更多个)命令流与用于图形处理器的几何任务(几何作业)有关,并且另一命令流与用于图形处理器的计算任务(计算作业)(且最优选地为镶嵌计算任务)有关。
[0092] 在另一实施方式中,在图形处理器的情况下,一个(或更多个)命令流与用于图形处理器的向导着色器任务有关,其他(或另一)命令流与用于图形处理器的其他非向导着色器任务有关。
[0093] 在其他实施方式中,各个或至少多个命令流与同一类型的任务有关。在图形处理器的情况下,例如在执行交织渲染时可能特别是这种情况,在这种情况下,可以存在多个命令流,各命令流包括相应的渲染任务,但与例如要对于交织渲染操作执行的渲染轮次的序列的不同渲染轮次有关。
[0094] 各命令流应当且优选地的确包括一个或更多个(并且优选地为多个)命令(指令)。除了(在适当且期望的情况下)以本发明的方式包括(进展)等待命令(指令)之外,命令流还可以另外包括任意合适且期望的命令(指令),这些命令(指令)使得处理资源执行期望处理任务,例如且优选地根据关注的数据处理系统和处理资源的命令流操作。由此,命令流优选地可以且优选地的确包括以下命令中的一个或更多个或全部:设置用于处理任务的参数的命令(指令)、运行处理任务的命令(指令)、等待处理任务完成的命令(指令)等。
[0095] 在特别优选的实施方式中,命令流可以且优选地的确包括(至少)命令(指令),这些命令(指令)使得停止(阻止)关注的命令流的随后运行,直到完成用于关注的命令流的之前发布处理任务的(例如且优选地为所指示的)集合或子集。因此,这种命令将使得延迟命令流中的命令的随后运行,直到完成关注的命令流中的之前命令(并且具体为处理任务)。因此,这种机制可以用于确保命令流中的命令的运行将等待,直到在运行命令流中的随后命令(指令)之前完成用于该命令流的特定处理任务。(这应与本发明的“进展等待”命令区分,进展等待命令具有延迟命令流中的命令的运行直到在另一不同的命令流中到达特定点的效果。)
[0096] 由此,在特别优选的实施方式中,命令流可以且优选地的确包括(至少)指示何时开始和完成处理任务的命令,诸如触发处理任务的运行的命令以及确定/指示(等待)处理任务的完成的命令。
[0097] 根据本发明可以被包括在命令流中的“另一命令流”进展等待命令可以采取任意合适且期望的形式,该形式将使得处理资源延迟运行命令流中的随后命令,直到处理资源在另一命令流中到达特定位置(即,将使得处理资源不运行关注的命令流中在等待命令之后的命令,直到处理资源在另一命令流中到达特定位置)。
[0098] 在特别优选的实施方式中,等待命令指示要等待的另一命令流(例如,且优选地为用于该命令流的标识符)和要等待的该另一命令流中的特定位置(即,在处理资源将运行包括等待命令的命令流中的随后命令之前在另一命令流中必须到达的位置)这两者。在特别优选的实施方式中,等待命令指示要等待的一个(且仅一个)其他命令流。(在期望能够指示要等待的多个命令流的情况下,那么这可以例如且优选地通过在命令流中例如连续地包括多个“进展等待”命令来进行。)
[0099] 要等待的命令流中的特定位置(以及该位置在命令流中何时到达的确定)可以以任意何时且期望的方式来指示(并确定)。特定位置优选地对应于关注的命令流中的特定命令,并且最优选地对应于另一命令流的特定(优选地为所选的)处理任务的完成。
[0100] 要等待的命令流中的位置的指示优选地指示在继续运行包括等待命令的命令流中的命令之前在另一命令流中到达的最小位置。
[0101] 在特别优选的实施方式中,跟踪沿着命令流(和各命令流)的进展,并且要等待的特定位置鉴于在命令流中到达的进展点来指示。最优选地,命令流(和各命令流)具有与其关联的进展计数器,该进展计数器可以(并且是)随着增加/运行关注的命令流中的命令而增大,进展等待命令对应地指示要等待的特定进展计数器值(并且优选地为要等待的最小进展计数器值)。
[0102] 用于命令流的进展计数器优选地在(优选地为仅在)向命令流添加/对于命令流运行特定(优选地为所选的,优选地为预定的)命令(例如,多个特定(优选地为所选的,优选地为预定的)命令的组的命令)时增大。由此,优选地,仅一些(但不是全部)可以(且的确)包括在命令流中的命令将增大命令流的进展计数。
[0103] 触发进展计数器增大的特定命令优选地是较“重大的”命令,诸如且优选地为指示处理资源工作(例如,处理任务)的开始或完成的命令,诸如且优选地为以下命令中的一个或更多个且优选地为全部:向处理资源提交处理任务以运行的命令和等到处理任务完成的命令。在这些结构中,每当特定命令中的一个完成时,进展计数器将增大。
[0104] 在特别优选的实施方式中,命令流中的命令可以指示进展计数器是否响应于该命令(例如,完成)将增大。这然后将允许选择性地指示哪些命令将增大命令流的进展计数器。这种指示可以根据期望提供,例如通过在命令流中编码的命令中包括指示进展计数器是否将增大的标记(位)来提供。
[0105] 在特别优选的实施方式中,进展计数操作(及其增大)在准备命令流(使得随着向命令流添加命令,用于命令流的进展计数器适当增大且随着命令流被准备而跟踪用于命令流的进展计数器的当前值)和对应地在处理资源运行命令流(使得用于命令流的进展计数器在处理资源运行命令流时适当增大,以跟踪处理资源在运行命令流时到达的命令流中的位置)这两者时使用。
[0106] 主处理器可以以任意合适且期望的方式响应于来自应用的、对待由处理资源执行的处理的请求,准备用于处理资源的多个命令流。优选地,主处理器向各命令流添加各命令,以使得处理资源执行期望的处理任务。如上面讨论的,主处理器应适当(例如,依赖所需的处理任务)向给定命令流添加命令。例如,处理器可以向一个命令流添加用于特定类型的处理任务的命令,并且向另一命令流添加用于不同类型的处理任务的命令。
[0107] 例如,在图形处理器的情况下,在优选实施方式中,主处理器将准备:包括使得图形处理器执行几何任务(作业)的命令的序列的一个命令流;和包括使得图形处理器执行计算任务(计算作业)(优选地为要执行镶嵌操作的计算作业)的命令的序列的另一命令流。
[0108] 如上面讨论的,在特别优选的实施方式中,主处理器随着它准备命令流而可操作以对于(且对于各)被准备的命令流,跟踪在命令流中到达的位置(即,被添加到命令流的最新命令)。如上面讨论的,这优选地通过维持进展计数器来进行,该进展计数器跟踪多少命令(或至少特定类型的命令)被包括在命令流中。由此,主处理器优选地将进展计数器增大为犹如它向命令流添加例如特定命令(并且优选地对于它准备的各命令流进行这一点)。
[0109] 由此,在优选实施方式中,主处理器将向用于使得处理资源执行应用的期望处理任务的命令流(和各命令流)逐步添加命令,并且在这样做的同时,对于各命令流,主处理器保持跟踪到达的命令流中的当前位置(优选地通过维持用于命令流的进展计数器值来进行)。由此,在向命令流添加适当命令时,主处理器还将适当增大命令流的进展计数器值,以保持跟踪在该命令流中到达的当前位置。
[0110] 除了向使得处理资源执行期望处理任务的不同命令流适当添加命令,如上面讨论的,主处理器还能够在以下情况下在命令流中包括适当的等待命令:一个命令流中的处理任务对将在另一不同命令流中包括的处理任务具有依赖关系(即,在存在命令流间依赖关系时)。这种依赖关系可以且在优选实施方式中的确在一个命令流中的处理任务在它可以被执行之前需要来自另一命令流中的处理任务的结果时、和/或在期望延迟开始处理任务(即使对数据没有严格依赖关系)例如以降低由来自从缓存逐出的任务产生的数据的风险时产生。
[0111] 由此,在特别优选的实施方式中,主处理器可操作以(并且方法包括以下步骤)确定要添加到命令流的处理任务是否与将在另一命令流中包括的处理任务具有依赖关系,并且在确定要添加到命令流的处理任务与将在另一命令流中包括的处理任务具有依赖关系(即,命令流间依赖关系存在)时,在包括对另一命令流中的处理任务具有依赖关系的处理任务的命令流中包括适当的“进展”等待命令。主处理器可以例如识别任意依赖关系本身,或者这些依赖关系例如还可以或相反由需要关注的处理的应用来指定。
[0112] 申请人在这点上认识到,在一个(第一)命令流中的处理任务对另一命令流中的处理任务具有依赖关系时,那么将例如必须在可以运行第一命令流中的处理任务之前完成另一命令流中的处理任务。因此,在这种情况下,在用于依赖另一命令流中的处理任务的处理任务的命令之前(并且优选地为紧接之前)向第一命令流添加“进展”等待命令,该进展等待命令将使得处理资源延迟运行第一命令流中的任意另外命令,直到处理资源完成关注的另一命令流中的处理任务。
[0113] 如上面讨论的,“进展”等待命令应且优选地的确识别包括第一命令流中的任务依赖的处理任务的另一命令流、以及该另一命令流中在第一命令流中的处理任务依赖的、另一命令流中的处理任务之后(例如且优选地为紧接之后)的位置(例如且优选地为适当的进展计数器值)(即,以延迟第一命令流中的依赖处理任务的运行,直到完成另一命令流的所需处理任务)。
[0114] (包括等待命令的)第一命令流应等待的另一命令流中的位置可以以任意合适且期望的方式来识别。例如,如果该命令流中已经包括另一命令流中的处理任务,那么已经到达(和/或在关注的处理任务的结束时)的、用于该另一命令流的进展计数器的值(如果该值被跟踪)可以用于等待命令。
[0115] 另选或另外地,主处理器可以操作为在向第一命令流添加“进展”等待命令之前,向另一命令流添加执行第一命令流中的处理任务依赖的处理任务的适当命令(同时跟踪该另一命令流中的位置(例如,进展计数器值)),以确定一旦完成另一命令流中的相关处理任务则在另一命令流中将到达(从而对于“进展”等待命令应指示)的、另一命令流中的位置(例如,进展计数器值)。
[0116] 在特别优选的实施方式中,等待完成另一命令流中的处理任务的命令被包括在用于运行处理任务的命令之后的另一命令流中,使得一旦运行该“完成等待”命令,则将知道,(明确地)完成第一命令流中的处理任务依赖的另一命令流中的处理任务。第一命令流将等待的位置然后可以(且优选地)被指示为在运行“完成等待”命令之后的位置(进展计数)。这然后将允许较容易地确定另一命令流中的处理任务的完成(并且一旦完成这些任务,则将到达该命令流中的位置)。
[0117] 因此,在这种情况下,以本发明的方式进行的“进展等待”命令将连同将用于使用于(另一)命令流的进展计数器增大的“完成等待”命令一起使用,以确保“进展等待”命令将正确地等待在运行包括“进展等待”命令的命令流中的依赖任务之前完成另一命令流中的任务。
[0118] 申请人还认识到,在一个命令流中的处理任务依赖另一命令流中的一个或更多个处理任务(的完成)的情况下,如果可以,则将期望尝试确保另一命令流中的处理任务在依赖它们(例如,需要它们的结果)的第一命令流中的处理任务之前(但优选地不在其之前太久)完成。这是为了尝试确保例如另一命令流中的处理任务的结果在要执行第一命令流中的处理任务时可用,但同样地确保这些结果优选地存在于处理资源的较多本地存储器(诸如缓存)中(与例如写到主存储器中并因此需要在可以使用它们之前从主存储器取回到较多的本地存储器相反)。
[0119] 由此,申请人认识到,将优选的是相对于依赖另一命令流依赖的处理任务(例如,需要其结果)的处理任务,控制另一命令流中的该处理任务的执行的触发,例如且优选地,使得另一命令流中的处理任务的结果在要运行依赖该处理任务(例如,需要这些结果)的处理任务时仍然存在于(且可用于)处理资源的本地存储器中。
[0120] 申请人还认识到,这还可以通过以下方式来实现:在要包括第一命令流中的处理任务所依赖的处理任务的另一命令流中包括适当“进展等待”命令,以在依赖另一命令流中的处理任务的第一命令流中的处理任务之前的适当点触发这些处理任务的完成。
[0121] 由此,在特别优选的实施方式中,在要添加到(第一)命令流的处理任务与另一命令流中的处理任务具有依赖关系(即,存在命令流间依赖关系)时,在另一命令流中也包括“进展等待”命令,该命令将使得处理资源延迟运行另一命令流中(在等待命令之后)的随后命令,直到处理资源在包括处理任务的(第一命令流)中到达特定位置,该处理任务对另一命令流中的处理任务具有依赖关系。另一命令流中的进展等待命令应且优选地被包括在用于执行处理任务的命令之前的另一命令流中,第一命令流中的处理任务依赖该处理任务。
[0122] 由此,在特别优选的实施方式中,主处理器还将在用于第一命令流中的处理任务所依赖的另一命令流中的处理任务的命令之前、在另一命令流中包括本发明的进展等待命令,以(仅)一旦处理资源在包括依赖另一命令流中的处理任务的处理任务的第一命令流中到达特定位置,则触发另一命令流中的处理任务的运行。
[0123] 这然后将使得延迟第一命令流中的处理任务所依赖的处理任务的运行,直到处理资源在该第一命令流中到达特定位置(并且由其触发)。这样,可以较容易且较高效地同步依赖处理任务的运行。
[0124] 由此,在特别优选的实施方式中,在要添加到多个命令流中的命令流的处理任务与将在多个命令流中的另一命令流中包括的处理任务具有依赖关系时,主处理器除了在要包括对将在另一命令流中包括的处理任务具有依赖关系的处理任务的命令流中包括“进展等待”命令之外,在另一命令流中也包括这种“进展等待”命令,该另一命令流包括第一命令流对其具有依赖关系的处理任务,该进展等待命令将使得处理资源延迟运行另一命令流中的随后命令,直到处理资源在第一命令流中到达特定位置,该第一命令流包括对将在另一命令流中包括的处理任务具有依赖关系的处理任务。
[0125] 对应地,在特别优选的实施方式中,本发明的方法包括以下步骤(并且主处理器可操作以):
[0126] 确定要对多个命令流中的第一命令流添加的处理任务与将在多个命令流中的另一命令流中包括的处理任务具有依赖关系;
[0127] 以及响应于此:
[0128] 在第一命令流中包括等待命令,该等待命令使得处理资源延迟运行用于第一命令流中的处理任务的随后命令,直到处理资源到达另一命令流中的特定位置;以及[0129] 在另一命令流中包括等待命令,该等待命令使得处理资源延迟运行另一命令流中的随后命令,直到处理资源到达第一命令流中的特定位置。
[0130] 另一命令流中的(进展)等待命令指示的第一命令流中的特定位置应且优选地是在依赖另一命令流中的处理任务的第一命令流中的处理任务之前的、第一命令流中的位置。最优选地,要等待的第一命令流中的特定位置为是在依赖另一命令流中的处理任务的第一命令流中的处理任务的一个或更多个处理任务之前的位置,以允许要在到达依赖另一命令流中的处理任务的第一命令流中的处理任务之前完成另一命令流中的处理任务的时间。
[0131] 依赖另一命令流中的处理任务的处理任务在另一命令流中的处理任务之前多久触发可以根据期望来确定,例如,基于预定(例如,根据测试和基准)处理任务时刻和运行条件以及用于关注的数据处理系统的参数来确定。通常,优选的是使处理任务在依赖另一命令流中的处理任务的处理任务之前一些(例如,一个或两个)处理任务触发。
[0132] 要等待的第一命令流中的位置的确定以及该位置的指示可以以任意合适且期望的方式来实现。这例如且优选地可以通过以下方式来实现:从用于第一命令流的进展计数器的当前值减去特定(例如预定,优选地为所选的)值,以在第一命令流中到达的当前位置之前触发另一命令流中的处理任务的运行。
[0133] 在特别优选的实施方式中,在要对多个命令流中的(第一)命令流添加的处理任务与将在多个命令流中的另一命令流中包括的处理任务具有依赖关系时,方法包括以下步骤(并且主处理器被配置为):
[0134] 向另一命令流添加等待命令,该等待命令将使得处理资源延迟运行随后命令,直到处理资源到达第一命令流中的特定位置,该另一命令流将包括第一命令流中的处理任务所依赖的处理任务;
[0135] 向等待命令之后的另一命令流,添加运行第一命令流中的处理任务依赖的另一命令流中的处理任务的一个或更多个命令,优选地其后是识别第一命令流中的处理任务所依赖的另一命令流中的处理任务的完成的命令;
[0136] 向第一命令流添加等待命令,该等待命令将使得处理资源延迟运行第一命令流中的随后命令,直到处理资源完成第一命令流中的处理任务所依赖的另一命令流中的处理任务;以及
[0137] 向该等待命令之后的第一命令流,添加一个或更多个命令,该一个或更多个命令使得处理资源执行依赖另一命令流中的处理任务的处理任务。
[0138] 由此,在特别优选的实施方式中,在图形处理器和镶嵌应用的情况下,主处理器准备(至少)两个命令流(几何任务命令流和计算任务命令流),并且优选地识别镶嵌绘制调用何时发生,并且在该情况下:
[0139] 向(镶嵌)计算任务命令流添加等待几何任务命令流中的特定位置的等待命令;
[0140] 然后向等待命令之后的计算任务命令流,添加运行镶嵌计算任务的命令,并且优选地其后添加识别镶嵌计算任务的完成的指令;
[0141] 在向几何任务命令流添加镶嵌几何任务之前向几何任务命令流添加等待命令,以使得推迟几何任务命令流中的镶嵌几何任务,直到完成计算任务命令流镶嵌计算任务。
[0142] 上面具体讨论了在存在命令流间依赖关系时的命令流的准备。还可以是以下这种情况:在同一命令流中包括的处理任务对彼此具有依赖关系(即,存在命令流内依赖关系)。这种结构可以且优选地通过在关注的命令流中按适当顺序对处理任务(和用于处理任务的命令)排序来解决。
[0143] 由主处理器准备命令流可以由主处理器的任意合适且期望的元件和部件来执行。在优选实施方式中,用于关注的处理资源的驱动器准备命令流(并因此以本发明的方式操作)。由此,在优选实施方式中,命令流生成电路包括可编程处理电路,该可编程处理电路可以被编程(例如且优选地作为用于处理资源的驱动器操作)为以期望方式准备命令流。
[0144] 由此,根据本发明的另外方面,提供了一种用于数据处理系统的处理资源的驱动器,处理资源可操作以执行应用的处理任务,这些应用在数据处理系统的主处理器上运行,该驱动器可操作以:
[0145] 响应于来自应用的、对待由处理资源执行的处理的请求,准备使得处理资源执行应用的处理任务的多个命令流,各命令流包括使得处理资源执行处理任务的命令的序列;
[0146] 其中,准备命令流的处理包括:
[0147] 在要对多个命令流中的命令流添加的处理任务与将在多个命令流中的另一命令流中包括的处理任务具有依赖关系时:
[0148] 在要包括对将在另一命令流中包括的处理任务具有依赖关系的处理任务的命令流中,包括等待命令,该等待命令将使得处理资源延迟运行包括等待命令的命令流中的随后命令,直到处理资源到达另一命令流中的特定位置。
[0149] 一旦由主处理器准备包括任意适当(进展)等待命令的命令流,则向处理资源(例如,图形处理器)提供命令流以运行,并且处理资源(例如,图形处理器)然后将适当运行命令流。
[0150] 命令流可以以任意合适且期望的方式提供给处理资源,例如图形处理器。例如,它们可以存储在适当的命令流储存器(诸如缓冲器)中,从该储存器,可以由处理资源适当读取命令以运行。其他结构当然会是可能的。
[0151] 由处理资源运行命令流可以以任意合适且期望的方式来配置并实施。例如,处理资源可以包括适当的监督控制器,诸如微控制器,该监督控制器可操作以在处理资源的硬件运行资源上处理命令流的调度(并且在优选实施方式中,是这种情况)。其他结构当然会是可能的。
[0152] 对应地,在优选实施方式中,处理资源的硬件运行资源包括多个命令流运行单元,这些命令流运行单元可操作以执行(和这些命令流运行单元运行)命令流中的命令,以运行应用的处理任务。
[0153] 处理资源(例如,图形处理器)可以对应地以任意合适且期望的方式运行命令流。多个命令流的运行优选地用处理资源(例如,图形处理器)同时地开始,然后依次(并且在处理资源具有适当处理各命令流中的命令的能力且适当的情况下为并行)(并且根据和基于在命令流中包括的任意等待命令)适当处理各命令流中的命令。
[0154] 由此,在特别优选的实施方式中,处理资源将依次(和按顺序)运行命令流中的命令,并且随着它这样做,它将对于它在运行的命令流(和对于各命令流),跟踪其穿过(沿着)命令流(它当前在命令流中到达的位置)的进展,例如且优选地,这通过维持用于命令流的进展计数进行,该进展计数(优选地)在运行要使进展计数器增大的命令流命令时自动增大。当前命令流位置(进展计数)例如可以维持在处理资源的或处理资源可访问的适当寄存器中。
[0155] 对应地,在处理资源在正在运行的命令流中的遇到(进展)等待命令时,处理资源将从(进展)等待命令识别当前命令流的运行等待的另一命令流、以及命令流为了继续运行当前命令流而必须到达的特定位置(例如且优选地为进展计数)。
[0156] 响应于这种等待命令,处理资源因此优选地操作为确定是否在另一命令流中已经到达所指示的特定位置,并且如果是这样,则处理资源简单地继续运行当前命令流中的命令。另一方面,如果尚未到达另一命令流中的所指示位置,那么停止当前命令流的运行,直到到达另一命令流中的所指示位置。
[0157] 是否以及何时到达针对(进展)等待命令的、另一命令流中的所指示位置的确定可以以任意合适且期望的方式来执行。
[0158] 在一个优选实施方式中,除了对于命令流(和各命令流)维持当前在该命令流中到达的位置的指示(例如,进展计数)之外,还维持另一命令流正在等待的命令流中的任意位置的记录。
[0159] 因此,在这种情况下,将存在对于被运行的命令流(和各命令流)维持(例如且优选地在寄存器中)的两个“位置”(“进展计数”):第一位置(进展计数),该第一位置跟踪在命令流中到达的位置;和第二“比较”位置(进展计数),该第二比较位置指示对于等待关注的命令流继续其运行的另一命令流到达的、命令流中的位置(进展计数)。因此,“比较”位置(进展计数)优选地能够在使用中被设置到且优选地在使用中被设置到在另一命令流中的(进展)等待命令中指示的适当位置(例如,进展计数值)(响应于另一命令流中的(进展)等待命令)。
[0160] 在这些结构中,在对于命令流设置“比较”位置(进展计数值)时,那么该“比较”位置优选地定期且连续地与在命令流中到达的位置进行比较,直到确定在命令流中到达“比较”位置(进展计数)(在这种情况下,操作然后进行到重新开始等待命令流中的命令的运行)。
[0161] 用于在到达另一命令流中的适当位置时重新开始命令流运行的实际机制可以根据期望来实施并配置。例如,这可以在监督控制器(微控制器)的控制下进行,例如在对于命令流到达当前“比较”位置(进展计数值)时生成对控制器的中断,控制器响应于这种中断然后(例如,在软件控制下)识别遇到哪个(进展)等待命令,并且在(进展)等待命令之后的下一命令时重新开始对应命令流的运行。
[0162] 由此,在优选实施方式中,处理资源包括:
[0163] 多个命令流运行单元,该多个命令流运行单元可操作以执行命令流中的命令,以运行应用的处理任务;和
[0164] 控制器,该控制器可操作以控制由命令流运行单元进行的命令流的运行;
[0165] 并且方法还包括以下步骤(并且命令流运行单元和控制器可操作以):
[0166] 各命令流运行单元对于它在运行的命令流维持当前在命令流中到达的位置的记录、以及另一命令流正在等待的命令流中的位置的记录;
[0167] 以及
[0168] 在命令流运行单元在正在运行的命令流中遇到等待命令时,命令流运行单元向控制器通告;并且
[0169] 控制器响应于来自命令流运行单元的信号:
[0170] 识别命令流运行单元遇到等待命令;
[0171] 从等待命令,识别命令流的运行所要等待的另一命令流以及使包括等待命令的命令流的运行继续要到达的另一命令流中的特定位置;
[0172] 确定在另一命令流中是否到达了特定位置;并且
[0173] 在已经到达另一命令流中的特定位置时,通告命令流运行单元继续运行包括等待命令的命令流中的命令。
[0174] 在优选的这种实施方式中,控制器在尚未到达另一命令流中的特定位置时:
[0175] 对于为了继续运行包括等待命令的命令流而必须到达特定位置的另一命令流,将该另一命令流正在等待的位置的记录设置到为了继续运行包括等待命令的命令流而在该另一命令流中要到达的特定位置;并且
[0176] 将在运行另一命令流的命令流运行单元配置为在到达另一命令流中的所设位置时向控制器通告,包含等待命令的命令流的运行所要等待该另一命令流;
[0177] 并且用于另一命令流的命令流运行单元当它在其运行另一命令流中到达设置位置时,向控制器通告;以及
[0178] 响应于该信号,控制器识别对于哪个等待命令到达了另一命令流中的特定位置,并且通告命令流执行单元以对于到达了特定位置的包括等待命令的命令流,重新开始包括等待命令的所述命令流的运行。
[0179] 在这些结构中,命令流监督控制器(例如,微控制器)还可以用于处理操作的例外,诸如在要等待的命令流当前未在硬件运行资源上调度时和/或超过一个命令流在等待同一命令流的情况。
[0180] 在另一优选实施方式中,不是对于各命令流维持“比较”位置(进展计数),而是当在命令流中遇到(进展)等待命令时,将(进展)等待命令中的所指示等待位置与对于要等待的该另一命令流到达的当前位置(例如,进展计数值)进行比较,并且如果用于另一命令流的当前位置大于或等于对于(进展)等待命令指示的位置,那么继续包括(进展)等待命令的命令流的运行,但如果不,则停止包括(进展)等待命令的命令流的运行。
[0181] 由此,在优选实施方式中,处理资源包括:
[0182] 多个命令流运行单元,该多个命令流运行单元可操作以执行命令流中的命令,以运行应用的处理任务;和
[0183] 控制器,该控制器可操作以控制由命令流运行单元进行的命令流的运行;
[0184] 并且方法还包括以下步骤(并且命令流运行单元可操作以):
[0185] 各命令流运行单元对于它在运行的命令流维持当前在命令流中到达的位置的记录;
[0186] 并且
[0187] 在命令流运行单元在正在运行的命令流中遇到等待命令时,命令流运行单元:
[0188] 从等待命令,识别命令流的运行所要等待的另一命令流以及使包括等待命令的命令流的运行继续要到达的另一命令流中的特定位置;
[0189] 根据正在运行所识别的另一命令流的命令流运行单元维持的当前在命令流中到达的位置的记录,确定在另一命令流中是否到达了特定位置;并且
[0190] 在已经到达另一命令流中的特定位置时,继续运行包括等待命令的命令流中的命令;
[0191] 在尚未到达另一命令流中的特定位置时,停止运行包括等待命令的命令流,直到到达另一命令流中的特定位置。
[0192] 在这种情况下,可以再次定期重新尝试(例如,以特定间隔)(进展)等待命令(以及所等待的命令流的当前位置的检查),但在特别优选的实施方式中,(进展)等待命令仅响应于特定(优选地为所选的,优选地为预定的)事件发生来重新尝试。
[0193] 由此,在优选实施方式中,在尚未到达另一命令流中的特定位置时,在正在运行的命令流中遇到等待命令的命令流运行单元:
[0194] 响应于发生了特定事件,重新尝试根据正在运行所识别的另一命令流的命令流运行单元维持的当前在命令流中到达的位置的记录,确定在另一命令流中是否到达了特定位置。
[0195] 在一个优选实施方式中,对在所等待的命令流中到达的当前位置的检查(仅)在更新(增大)用于命令流的当前位置(例如,进展计数)时重新尝试。在这种情况下,(进展)等待命令可以在更新用于任意命令流的位置(进展计数)时再次检查,或者操作可以为使得(进展)等待命令仅在更新用于所等待的特定命令流的位置(进展计数)时再次尝试(进展)等待命令。
[0196] 在优选实施方式中,(进展)等待命令还在存在被处理资源运行的命令流的身份的变化的情况下重新尝试。这可以特别适用于以下情形:处理资源(例如,图形处理器)仅可以并行运行比已经准备且要运行的命令流的总数少的命令流。在这种情况下,命令流运行调度可以改变当前被运行(例如,用于调度目的)的命令流,从而改变当前被运行的命令流的组。在这种情况下,可以的是使所等待的命令流有效(在它之前未被运行时),反之亦然(使无效)。至少在前者的情况下,如果现在在所等待的命令流之前未被运行时运行该命令流,则将适当的是重新尝试等待该命令流的命令流中的(进展)等待命令,因为现在将存在所等待的命令流中的运行的进展。
[0197] 为了促进该操作(以及其他方面),在特别优选的实施方式中,除了维持在被运行的命令流中到达的当前位置(进展计数)的记录,该位置指示(进展计数)还与用于关注的命令流的标识符关联(该标识符应且优选地的确匹配将在(进展)等待命令中用于识别所等待的命令流的标识符)。在这种情况下,当在命令流中遇到(进展)等待命令时,处理优选地首先操作为确定是否存在具有与用于在(进展)等待命令中指示要等待的命令流的标识符相同的命令流标识符的任意当前有效的命令流。这然后将允许识别所等待的命令流。
[0198] 如果当遇到(进展)等待命令时,确定所等待的命令流当前未被运行,那么应且优选地停止包括(进展)等待命令的命令流的运行。最优选地,在该结构中,发布到命令流运行监督器(例如,微控制器)的适当信号(例如,中断),以允许适当处理特殊情况(例外)(例如通过调度等待现在运行的命令流)。
[0199] 在优选实施方式中,在因为命令流的运行在等待另一命令流而停止运行时,这一点的指示(例如,中断)优选地发送到命令流运行监督器(例如,微控制器),以指示关注的命令流当前“被阻止”。这然后将允许例如命令流运行监督器代替“被阻止的”命令流调度另选命令流运行,例如在处理资源仅能够并行运行比要运行的命令流的总数少的命令流的结构中。这种指示可以被配置例如为仅在第一次尝试(进展)等待命令时生成(如果期望)。
[0200] 由此,在优选实施方式中,当根据正在运行所识别的另一命令流的命令流运行单元维持的当前在命令流中到达位置的记录,确定尚未到达另一命令流中的特定位置时,在正在运行的命令流中遇到等待命令的命令流运行单元:
[0201] 向可操作以控制由命令流运行单元进行的命令流的运行的控制器通告包括等待命令的命令流的运行已停止。
[0202] 以上具体描述了在存在命令流间依赖关系时的、以本发明的方式进行的操作。在一些情况下,还将可以的是对于处理资源要执行的处理操作没有命令流间依赖关系(例如,在没有要运行的、具有互相依赖关系的不同类型的处理任务的情况下)。在这种情况下,将不存在以本发明的方式使用进展等待命令的任何需要,并且例如,将可以仅准备并运行单个命令流(如果期望)。
[0203] 本发明可以用于数据处理系统的处理资源可以用于生成的所有形式的输出。例如,在图形处理的情况下,图形处理器可以生成用于显示的帧、渲染到纹理输出等。来自处理的输出数据值优选地输出到外部(例如,主)存储器,以存储,并且(诸如在图形处理的情况下)用于显示器的帧缓冲器。
[0204] 在一些实施方式中,数据处理系统包括一个或更多个存储器和/或存储装置和/或与该存储器和/或存储装置通信,该存储器和/或存储装置存储这里描述的数据,和/或存储用于执行这里描述的处理的软件。数据处理系统还可以包括与用于基于由数据处理系统生成的数据显示图像的显示器或与其通信。
[0205] 本发明适用于任意合适形式或配置的处理器或数据处理系统。它特别适用于基于块的图形处理器和图形处理系统。由此,在优选实施方式中,数据处理系统和处理资源分别是基于块的图形处理系统和处理器。
[0206] 在特别优选的实施方式中,本发明的各种功能在生成并输出数据的单个数据处理平台上运行进行。
[0207] 本发明可以在任意合适的系统中实现,诸如基于合适配置的微处理器的系统。在优选实施方式中,本发明实施在计算机和/或基于微处理器的系统中。
[0208] 本发明的各种功能可以以任意期望且合适的方式运行。例如,本发明的功能可以实施在硬件或软件中(根据期望)。由此,例如,除非以其他方式指示,否则这里所描述的技术的各种功能元件、阶段以及“装置”可以包括合适的处理器、控制器、功能单元、电路、处理逻辑、微处理器结构等,它们可操作以执行各种功能等,诸如适当专用硬件元件和/或可以被编程为以期望方式操作的可编程硬件元件。
[0209] 这里还应当注意的是,如本领域技术人员将理解的,本发明的各种功能等可以在给定处理器上重复和/或并行运行。等同地,各种处理阶段可以共享处理电路等(如果期望)。
[0210] 受制于必须运行上面讨论的特定功能的任意硬件,数据处理系统和流水线可以以其他方式包括数据处理系统和流水线包括的通常功能单元等中的任一个或更多个或所有。
[0211] 本领域技术人员还将理解,本发明的所有描述的方面和实施方式可以(且优选地的确)酌情包括这里描述的优选和可选特征中的任一个或更多个或所有。
[0212] 根据本发明的方法至少部分地可以使用软件(例如,计算机程序)实施。由此将看到,当从另外的方面看时,本发明提供计算机软件,该计算机软件当安装在数据处理装置上时专门适用于运行这里描述的方法;计算机程序元件,该计算机程序元件包括计算机软件代码部,用于在程序元件在数据处理装置上运行时执行这里描述的方法;和计算机程序,该计算机程序包括代码装置,该代码装置当程序在数据处理系统上运行时适用于执行这里描述的方法的所有步骤。数据处理器可以是微处理器系统、可编程FPGA(现场可编程门阵列)等。
[0213] 本发明还扩展到计算机软件载体,该计算机软件载体包括这种软件,这种软件当用于操作处理器时与所述数据处理器结合使所述处理器、渲染器或微处理器系统运行本发明的方法的步骤。这种计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM、RAM、闪存、或磁盘,或可以是信号,诸如电线上的电信号、诸如到卫星的光信号或无线电信号等。
[0214] 还将理解的是,不是本发明的方法的所有步骤都需要由计算机软件运行,由此根据更宽方面,本发明提供了计算机软件并且这种软件安装在计算机软件载体上,用于运行这里阐述的方法的步骤中的至少一个。
[0215] 本发明可以因此适当地具体实施为用于与计算机系统一起使用的计算机程序产品。这种实现可以包括一系列计算机可读指令,该一系列计算机可读指令固定在有形、永久介质上,诸如计算机可读介质,例如,磁盘、CD-ROM、ROM、RAM、闪存或硬盘。还可以包括一系列计算机可读指令,在有形介质(包括但不限于,光学或模拟通信线)上,或无形地使用无线技术(包括但不限于,微波、红外或其他传输技术),这些指令经由调制解调器或其他接口装置可发送到计算机系统。该系列计算机可读指令具体实施这里之前描述的功能的所有或一部分。
[0216] 本领域技术人员将理解,这种计算机可读指令可以以多种编程语言来写,用于与许多计算机架构或操作系统一起使用。进一步地,这种指令可以使用任意存储技术来存储(存储技术现在或将来包括但不限于半导体、磁或光),或使用任意通信技术来发送(通信技术现在或将来包括但不限于光学、红外或微波)。预期的是,这种计算机程序产品可以作为可去除介质来分发,附有已打印的文档或电子文档,例如,现成软件;例如在系统ROM或固定盘上预加载有计算机系统;或在网络(例如,因特网或万维网)上从服务器或电子公告栏分发。

附图说明

[0217] 现在将仅以示例的方式并参照附图来描述本发明的多个优选实施方式,附图中:
[0218] 图1示出了示例性图形处理系统;
[0219] 图2示意性示出了可以以本发明的方式操作的图形处理器;
[0220] 图3示意性示出了用于由图形处理器运行的命令流;
[0221] 图4、图5以及图6示意性示出了在本发明的实施方式中的、用于由图形处理器运行的命令流的准备;
[0222] 图7示出了在本发明的实施方式中准备的示例性命令流;
[0223] 图8和图9示意性示出了在本发明的实施方式中的、由图形处理器进行的命令流的运行;以及
[0224] 图10和图11示意性示出了在本发明的另一实施方式中的、由图形处理器进行的命令流的运行。
[0225] 类似的附图标记在附图中适当的情况下用于类似的部件。

具体实施方式

[0226] 现在将在用于显示的计算机图形的处理的背景下描述本发明的多个实施方式。然而,将理解,这里描述的用于同步处理任务的运行的技术也可以用于非图形背景下。
[0227] 图1示出了示例性图形处理系统。在主处理器1上运行的应用2(诸如游戏)将需要要由所关联图形处理单元(图形处理器)3执行的图形处理操作。为此,该应用将生成由图形处理器3的驱动器4解释的API(应用编程接口)调用,该驱动器在主处理器1上运行,以生成对图形处理器3的适当命令,以生成应用2所需的图形输出。为了促进这一点,一组“命令”将响应于来自用于图形输出(例如,以生成要显示的帧)的主系统1上运行的应用2的命令,提供给图形处理器3。
[0228] 在本实施方式中,用于执行应用2所需的处理任务的适当命令和数据以一个或更多个命令流的形式提供给图形处理器3,各命令流包括使得图形处理器执行期望处理任务的命令(指令)的序列。
[0229] 命令流由主处理器1上的驱动器4准备,并且例如可以存储在适当的命令流缓冲器中,从这些缓冲器,然后可以由图形处理器3读取命令流以运行。各命令流将包含设置用于图形处理器任务的参数的命令(指令)、以及运行任务的命令(指令)等。
[0230] 为了促进该操作,图形处理器3如图2所示的包括命令流前端20,该命令流前端包括命令流监督器(控制器)21(为微控制器的形式),该命令流监督器可操作以向各命令流运行单元22调度并发布来自命令流的命令。命令流运行单元22然后运行各命令流中的命令,以触发图形处理器的处理运行单元23(在本示例中被示出为多个着色器核心,但其他结构当然会是可能的)执行期望的处理任务。
[0231] 现在将具体参照图形处理器3上的镶嵌几何的处理来描述以本发明的方式进行的命令流准备和运行的实施方式。
[0232] 在这些实施方式中,假定普通图形绘制调用(没有镶嵌)引起用于图形处理器3的单个几何任务。另一方面,具有镶嵌的绘制调用将引起生成镶嵌几何的多个(例如,大约10个)连续依赖计算任务,然后是处理这样生成的镶嵌几何的单个几何任务。由于几何任务必须以与图形API绘制调用相同的顺序运行,所以它们之间通常还将存在连续依赖关系。
[0233] 图3例示了这一点,并且示出了来自非镶嵌绘制调用的几何任务的链30和包括镶嵌绘制调用的几何任务的链31这两者。在存在镶嵌绘制调用的后者情况下可以看到,除了包括镶嵌几何任务33的几何任务的链31之外,还将存在需要在镶嵌几何任务33之前完成的镶嵌计算作业的对应链32。
[0234] 在存在一些镶嵌处理要进行的这种结构中,然后镶嵌计算任务32可以简单地按期望顺序包括在整个几何任务链31中。然而,这由于图形处理器3上的低加载而可能导致降低的吞吐量,因为镶嵌几何任务通常不具有完全使用图形处理器且可以运行较长时间的足够工作项。
[0235] 本实施方式通过以下方式来解决这一点:将第二命令流用于镶嵌计算任务,并且使用“进展等待”命令同步两个命令流的运行。
[0236] 由此,在本实施方式中,在存在将需要镶嵌的可能性时,驱动器4准备用于图形处理器3的几何任务的几何命令流、以及用于镶嵌计算任务的单独计算任务命令流。
[0237] 各命令流具有关联的进展计数器,该进展计数器用于跟踪在相应命令流中到达的位置。在本实施方式中,进展计数器当向命令流添加/在命令流中完成“显著”命令(诸如向图形处理器提交任务的命令和确定完成图形处理器任务的命令)时增大。增大命令流的进展计数器的“显著”命令的编码包括指示是否要增大进展计数器的位。
[0238] 另外,驱动器还可以在命令流中包括“progress_wait”命令,该命令使得包括该命令的命令流的运行等待另一不同命令流。进展等待命令取得两个参数:要等待的另一命令流的身份以及用于要等待的该命令流的进展计数器的最小值(即,在继续运行包括进展等待命令的命令流之前必须到达的该另一命令流中的位置)。这些进展等待命令如下面将进一步讨论的促进同步不同命令流中的命令和处理任务的运行。
[0239] 由此,在本实施方式中,在应用需要处理没有镶嵌的绘制调用时,图形处理器驱动器4将向几何命令流添加用于绘制调用的适当命令,但在存在具有镶嵌的绘制调用时,驱动器4将向计算任务命令流添加用于镶嵌计算任务的命令,并且向几何命令流添加用于绘制调用的几何处理。
[0240] 图4例示了这一点,并且示出了驱动器4对于没有镶嵌40的绘制调用向几何命令流添加绘制调用,但对于具有镶嵌的绘制调用,向计算任务命令流添加镶嵌任务,并且向几何命令流41添加绘制调用。(如图4所示,一旦完成了关注的渲染轮次,则向图形处理器3提交42所生成的命令流以运行。)
[0241] 在没有镶嵌的绘制调用的情况下,驱动器将在适当更新用于几何命令流的进展计数器的同时向该命令流简单地添加绘制调用。图5例示了这一点,并且示出了在驱动器从应用接收没有镶嵌的绘制调用时(步骤50),它然后将向几何命令流添加用于绘制调用的适当命令(步骤51),因此同时更新用于几何命令流的进展计数器(以保持跟踪驱动器在该命令流中到达哪里)(步骤52),然后返回到应用(步骤53),以等待下一绘制调用。
[0242] 在具有镶嵌的绘制调用的情况下,如上面讨论的,驱动器将向计算任务命令流添加镶嵌计算任务并向几何命令流添加对应的几何处理任务。而且,驱动器将使用在两个命令流中的进展等待命令来同步几何命令流中的镶嵌计算任务和独立镶嵌几何几何处理任务的运行。
[0243] 图6是较详细地示出了该操作的流程图。
[0244] 如图6所示,在驱动器接收具有镶嵌的绘制调用时(步骤60),它首先向计算任务命令流添加进展等待指令,该进展等待指令指示该命令流中的随后命令的运行应等待,直到图形处理器在几何命令流中到达特定位置(步骤61)。这然后将使得计算任务命令流中的随后镶嵌计算任务的运行(仅)在到达几何命令流中的特定位置时触发。
[0245] 要等待的几何命令流中的特定位置被确定为是在该几何命令流中在几何命令流中的当前位置之前特定时段的位置(例如基于基准测试),以在将处理镶嵌计算任务(依赖镶嵌计算任务)的(镶嵌)几何任务之前足够久(但不太久)触发镶嵌计算任务的运行。要等待的该位置例如可以通过从用于几何命令流的进展计数器值减去特定(例如预定的)值来确定。
[0246] 驱动器然后向进展等待命令之后的计算任务命令流添加提交镶嵌计算任务的命令(指令),然后是等待镶嵌计算任务完成的命令(指令)(步骤62)。然后在将完成关注的镶嵌任务时将用于镶嵌命令流的进展计数器值(位置)更新到期望的计数值(步骤63)。
[0247] 驱动器然后向几何命令流添加进展等待命令,以使得进展等待命令等待镶嵌计算任务在运行进展等待命令之后的、几何命令流中的命令之前完成(步骤64)。在这种情况下,对于进展等待命令设置的计算任务(镶嵌)命令流中的位置(进展计数)与在完成镶嵌计算任务时的、用于计算任务(镶嵌)命令流的进展计数器的所确定期望值(如在步骤63中确定的)对应。
[0248] 几何命令流中的该进展等待命令将因此确保在开始镶嵌几何任务之前完成计算命令流镶嵌计算任务。
[0249] 驱动器然后向几何命令流添加用于镶嵌几何任务的几何处理的指令(步骤65),因此然后更新用于几何命令流的进展计数器值(步骤66),并且返回到应用(步骤67)。
[0250] 图7示出了这样生成的示例性几何命令流70和计算命令流71。
[0251] 由此,如图7所示,几何命令流70包括几何处理任务的序列,但在用于镶嵌几何的几何处理任务72之前,存在等待计算命令流71到达特定位置(进展计数器值)m的进展等待命令73。
[0252] 对应地,计算任务命令流71在将产生镶嵌几何的镶嵌计算任务74之前,包括进展等待命令75,该进展等待命令将操作为在几何命令流70到达在镶嵌几何任务72之前的进展计数n+1时触发镶嵌计算任务74的开始。
[0253] 这然后将允许镶嵌计算任务74在图形处理器上在需要这些镶嵌计算任务74的结果的镶嵌几何任务72之前与其他几何工作并行运行,从而促进图形处理器3上的较高加载。而且,这样使用进展等待命令意味着在不使用镶嵌的情况下不添加额外的驱动器开销。
[0254] 一旦准备了命令流,则向图形处理器3提供该命令流以运行。这可以以任意合适且期望的方式来进行。例如,驱动器4可以建立然后从圆形命令缓冲器(环形缓冲器)调用的命令流缓冲器,图形处理器运行硬件然后在对命令流缓冲器的调用之后运行圆形命令缓冲器。其他结构当然会是可能的。
[0255] 在运行命令流时,监督微控制器21在图形处理器3的硬件运行资源(着色器核心)23上处理命令流的调度。
[0256] 在本实施方式中,几何任务和计算任务命令流的运行同时开始,图形处理器按顺序(并且根据酌情经由监督微控制器21进行的、如不同命令流的命令和任务之间的适当调度)运行各命令流中的命令。
[0257] 在运行命令流时,用于关注的命令流的进展计数根据被指示为在运行命令流时使进展计数增大的命令来自动增大。
[0258] 图8和图9较详细地示出了第一实施方式中的命令流的运行。
[0259] 如图8所示,假定由驱动器4准备的多个命令流81适当存储在存储器80中,在监督微控制器21的控制下,从存储器读取命令,然后由图形处理器3的各命令流运行单元22运行。
[0260] 在这种情况下,为了运行命令流中的任意进展等待指令,如图8所示,运行命令流的各命令流运行单元22具有一组控制和状态寄存器82,这些寄存器尤其包括充当用于关注的命令流的进展计数器的progress_counter_live值寄存器83。该寄存器在运行要使进展计数增大的命令流命令时自动增大。
[0261] 各命令流运行单元22还维持单独的progress_counter_compare寄存器84,如下面将进一步讨论的,该寄存器用于存储另一命令流在等待的关注的命令流的进展计数的值(位置)(若有的话)。在progress_counter_live值大于或等于progress_counter_compare值时,对微控制器21生成中断,以指示到达在命令流中所等待的位置(进展计数)。
[0262] 图9示出了当命令流运行单元在命令流中遇到进展等待命令时的该实施方式中的操作。
[0263] 如图9所示,当在命令流中遇到进展等待命令(指令)时(步骤90),停止命令流运行,并且对微控制器21生成中断。微控制器将接收中断并识别进展等待命令(步骤91),然后检查在所等待的命令流中是否到达了所需的进展计数(位置)(步骤92)。如果是,则微控制器将重新开始包括进展等待命令的命令流(步骤93)。如果否,则微控制器21因此将对于所等待的命令流设置progress_counter_compare寄存器,并且在遇到等待位置时启用中断(步骤94)。
[0264] 微控制器21然后将从中断返回,并且将继续当前不等待的任何命令流的命令流运行。
[0265] 然后,当在所等待的命令流中到达针对该命令流的progress_counter_compare位置(进展计数)时,将对微控制器21生成中断,该微控制器然后将操作为识别现在遇到哪个进展等待命令,因此在下一命令时重新开始包括进展等待命令的命令流(并从中断返回)(步骤95)。
[0266] 命令流的运行然后将继续,直到如遇到另一进展等待命令的这种时间。
[0267] 该实施方式使用监督微控制器21来处理进展等待操作。这提供允许较简单硬件的优点,而且为监督微控制器21提供与命令流何时等待有关的信息,从而促进例如进行用于硬件运行资源的较佳调度决策。
[0268] 微控制器还可以用于处理“例外”情况,诸如当在硬件运行资源上当前未调度要等待的命令流(该命令流当前未驻留在硬件运行资源上)时。这可以发生在例如用于运行命令流的硬件资源仅能够同时支持比全部将可以运行更少的命令流的运行的结构中。为了允许该可能性,微控制器21可以被配置为还初始地检查要等待的命令流是否驻留在图形处理器的硬件运行资源23上(如果期望)。
[0269] 监督微控制器21还可以用于处理超过一个进展等待指令(来自不同命令流)等待同一命令流的情况(在这种情况下,例如,微控制器可以且优选地的确将用于所等待的命令流的进展计数器比较值配置为所等待的最低值)。
[0270] 图10和图11较详细地示出了另一实施方式中的命令流的运行。
[0271] 该实施方式提供用于进展计数器和进展等待命令机制的较完全硬件实施方案,因此可以减少微控制器21在进展计数器和进展等待命令操作中的涉及(这因此可以例如减少或避免可能与这种微控制器21操作关联的任意时延)。
[0272] 如图10所示,在该实施方式中,各命令流运行单元再次维持一组控制和状态寄存器82,这些寄存器尤其包括progress_counter_live值寄存器83,该寄存器充当用于关注的命令流的进展计数器(并且在运行关注的命令流中的适当命令时再次自动增大)。
[0273] 然而,不是对于各命令流运行单元(对于被运行的各命令流)都维持progress_counter_compare寄存器。相反,如图10所示,在硬件资源上运行的各命令流标记有(唯一)标识符,该标识符与将在进展等待命令中用于识别命令流的标识符对应,该命令流标识符存储在关注的命令流运行单元的command_stream_ID寄存器100中。
[0274] 在图11中示出了在该实施方式中当命令流运行单元在命令流中遇到进展等待命令时的操作。
[0275] 如图11所示,当在命令流中遇到进展等待命令(指令)时(步骤110),首先检查要等待的命令流(如由进展等待命令中的命令流ID指示的)是否匹配对于当前在硬件运行资源上运行(当前存在于命令流运行单元中)的一个(且仅一个)命令流存储的命令流ID(步骤111)。该检查允许确定所等待的命令流当前是否驻留在硬件运行资源上(以及诸如都具有相同ID的、驻留在硬件运行资源上的两个命令流的某一其他故障是否存在)。
[0276] 如果没有与驻留在硬件运行资源上的命令流的身份匹配,那么这指示当前不运行所要等待的命令流。在这种情况下,如图11所示,停止包括进展等待命令的命令流的运行,并且对微控制器21生成中断,从而微控制器21然后处理当前不运行所等待的命令流的情形(步骤112)。
[0277] 另一方面,如果存在与当前在硬件运行资源上运行的命令流的匹配(即,要等待的命令流当前在硬件运行资源上运行),那么处理操作为检查用于该另一命令流的、要等待的进展计数器值(如在进展等待命令中指示的)是否小于或等于所识别命令流的当前progress_counter_live值(步骤113)。如果是,则继续包括进展等待命令的命令流的运行(步骤114)。
[0278] 另一方面,如果用于该另一命令流的、要等待的进展计数器值(如在进展等待命令中指示的)不小于或等于所识别命令流的当前progress_counter_live值(除了小于或等于之外),那么停止包括进展等待命令的命令流的运行(步骤115)。
[0279] 如图11所示,此时,将可以对监督微控制器21生成中断,以指示包括进展等待命令的命令流当前被阻止(等待)。这在调度命令流以运行时可以辅助微控制器21(例如,允许它在需要时重新调度硬件运行资源)。用于引起该中断的条件例如可以将是否是第一次尝试进展等待命令或是否已经重新尝试进展等待命令考虑在内(例如,以仅在第一次尝试进展等待命令时生成中断)。
[0280] 然后在发生更新所等待的命令流(或任意命令流)的progress_counter_live寄存器的事件(并且可选地,在更新任意命令流运行单元的命令流ID寄存器(从而指示存在驻留在硬件运行资源上的命令流的变化)时)调度进展等待命令调度以重新尝试,(步骤116)。
[0281] 在适当“重新尝试”事件发生时,重新尝试进展等待命令,因此处理返回117到步骤113,再次检查要等待的进展等待命令是否小于或等于所等待的命令流的progress_counter_live值。
[0282] 在该实施方式中,微控制器21仅可以涉及在当要等待的命令流未驻留在硬件运行资源上时或在存在在命令流被阻止时运行的搁置命令流时的处理中。因此,这将提供用于进展计数器的增大和等待进展计数器这两者的较快路径。
[0283] 虽然上面已经具体参照图形处理系统中的镶嵌的执行描述了本发明,但本发明的技术同样可以用于其他图形处理操作(诸如交织渲染以及使用向导着色器时)和在非图形处理结构中使用(根据期望)。
[0284] 从上述内容可以看到,本发明至少在其优选实施方式中提供一种机制,该机制用于在不同的处理任务之间且以不应显著增加命令流准备开销的方式较高效地处理依赖关系。这至少在本发明的优选实施方式中通过以下方式来实现:准备例如与不同类型的处理任务有关的多个命令流,并且将适当配置的等待命令用于同步不同命令流中的任务的运行。
高效检索全球专利

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

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

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用