数据处理系统的制作方法

文档序号:35290964发布日期:2023-09-01 13:14阅读:26来源:国知局
数据处理系统的制作方法

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


背景技术:

1、许多数据处理系统包括处理资源,例如图形处理器(图形处理单元(gpu)),处理资源可以为例如在数据处理系统的例如主(例如主机)处理器(cpu)上执行的应用执行处理任务。

2、通过向处理资源提供要由处理资源执行的命令(指令)流,可以使处理资源(例如图形处理器)执行应用的处理任务。例如,处理资源的驱动器可准备包含将由处理资源执行的命令(指令)的命令流,并将命令流提供给处理资源(例如图形处理器),然后处理资源执行命令流中的命令(由命令指示的操作)。

3、例如,命令流可以包含设置用于处理任务的参数的命令(指令),以及执行处理任务的命令(指令)。处理资源然后将在命令流中工作,例如依次执行命令流中的命令(指令)。

4、然而,申请人相信,对于向数据处理系统的处理资源(例如图形处理器)提交用于执行的处理任务,仍然存在改进的范围。


技术实现思路

1、根据本发明的第一方面,提供了一种操作数据处理系统的方法,该方法包括:

2、主机处理器;以及

3、处理资源,其可操作以执行用于在所述主机处理器上执行的应用程序的数据处理任务;

4、该方法包括:

5、响应于来自在所述主机处理器上执行的应用程序的对将由所述处理资源执行的数据处理的请求,在所述主机处理器上准备命令流布局,所述命令流布局指示用于由所述处理资源执行的命令流的命令序列,以致使所述处理资源执行用于所述应用程序的处理任务;

6、其中准备所述命令流布局进一步包括:

7、所述主机处理器生成要由所述处理资源执行的命令流生成工作的一个或多个指示符,以填充对应于所述命令流布局的所述命令流用于执行,所述指示符将触发所述处理资源执行命令流生成工作,以生成用于包括在对应于所述命令流布局的所述命令流中的命令流数据;

8、该方法进一步包括:

9、主机处理器向处理资源提供命令流布局和命令流生成工作的一个或多个指示符;

10、所述处理资源将对应于命令流布局的命令流存储在命令流缓冲器中用于执行;以及

11、所述处理资源执行来自所述命令流缓冲器内的所述命令流中的所述命令以执行用于所述应用的处理任务;

12、其中所述处理资源在所述命令流缓冲器中存储与所述命令流布局相对应的命令流包括:

13、响应于由所述处理资源针对对应于所述命令流布局的所述命令流执行的命令流生成工作的指示符:

14、所述处理资源执行所指示的命令流生成工作以生成用于包括在所述命令流中的命令流数据;以及

15、将所生成的命令流数据写入到所述命令流缓冲器中的所述命令流中以供所述处理资源执行。

16、根据本发明的第二方面,提供了一种数据处理系统,包括:

17、主机处理器;以及

18、处理资源,其可操作以执行用于在所述主机处理器上执行的应用程序的数据处理任务;

19、所述主机处理器包括命令流生成电路,所述命令流生成电路经配置以响应于来自在所述主机处理器上执行的应用程序的对将由所述处理资源执行的数据处理的请求而准备命令流布局,所述命令流布局指示用于由所述处理资源执行的命令流的命令序列,以致使所述处理资源执行用于所述应用程序的处理任务;

20、其中准备所述命令流布局进一步包括:

21、所述主机处理器生成要由所述处理资源执行的命令流生成工作的一个或多个指示符,以填充对应于所述命令流布局的所述命令流用于执行,所述指示符将触发所述处理资源执行命令流生成工作,以生成用于包括在对应于所述命令流布局的所述命令流中的命令流数据;

22、所述主机处理器还包括处理电路,所述处理电路被配置为向所述处理资源提供所述命令流布局和所述命令流生成工作的一个或多个指示符;

23、所述处理资源包括:

24、命令流缓冲器,用于存储与由主机处理器提供的用于执行的命令流布局相对应的命令流;

25、处理电路,其被配置为响应于由所述主机处理器提供的命令流生成工作的指示符,由所述处理资源执行以填充对应于命令流布局的命令流:

26、执行所述指示的命令流生成工作以生成命令流数据以包括在对应于所述命令流布局的命令流中;以及

27、将所生成的命令流数据写入命令流缓冲器中的命令流,以供处理资源执行;以及

28、命令流执行电路,其被配置为执行来自所述命令流缓冲器内的所述命令流中的命令,以执行所述应用的处理任务。

29、本发明涉及处理资源(例如图形处理器)可操作以执行命令流中的命令(指令)以执行在主机处理器上执行的应用程序的处理任务的布置。

30、在本发明中,不是由主机处理器准备命令流中的命令(指令)并完全汇编命令流,而是由处理资源简单地执行命令流中的命令,如在更传统的布置中可能的情况,使处理资源(例如图形处理器)执行命令流汇编本身中的至少一些。

31、即,根据本发明,命令流的整体准备仍然在主机处理器的控制下执行,主机处理器准备并向处理资源提供命令流布局。由主机处理器提供的命令流布局指示定义由处理资源执行的命令流的命令序列。因此,命令流布局优选地识别应包括在“完整”命令流(将被执行以使处理资源执行应用程序的数据处理任务的命令流)中的命令的次序。

32、然而,在本发明中提供给处理资源的命令流(布局)还没有被完全填充(例如,存在一些“空”命令,例如其状态或参数还没有被设置,或者在命令流布局中指示的间隙,其中命令应当由处理资源生成并被插入到命令流中以供执行)。

33、因此,在本发明中,除了为将由处理资源执行的命令流准备和提供命令流布局之外,主机处理器还生成命令流生成工作的适当指示符,并将其提供给处理资源,该指示符将使得(触发)处理资源执行命令流生成工作,以填充与用于执行的命令流布局相对应的命令流。当命令流布局被提供给处理资源,并且使得处理资源将对应于命令流布局的命令流存储在适当的命令流缓冲器中(然后从该缓冲器执行命令流中的命令)时,还使得处理资源执行进一步的命令流生成工作,以填充对应于命令流布局的'完整'命令流用于执行。

34、换言之,在本发明中,主机处理器准备并提供命令流布局,在优选实施方案中,该命令流布局实际上是全命令流的“框架”,然后,该命令流布局至少部分地填充有由处理资源生成的命令流数据,从而组装最终的全命令流用于执行。

35、在一些实施方案中,对应于命令流布局的命令流可以完全由处理资源填充。即,主机处理器可以仅准备骨架命令流布局,例如,指示用于处理资源的命令流中的一组命令应该具有的顺序,但是用于填充命令流中的可执行命令的实际命令流数据完全由处理资源生成。

36、然而,在优选实施方案中,对应于由主机处理器提供的命令流布局的命令流还包含至少一些由主机处理器完全准备的可执行命令,例如以可由处理资源立即执行的形式,例如以正常方式。在这种情况下,除了指示由主机处理器完全准备的任何这种“正常”命令的序列之外,命令流布局优选地还指示一些间隙或“空”命令,这些间隙或“空”命令将在运行时间期间由处理资源用期望的命令流数据填充。因此,在优选实施方案中,对应于命令流布局的命令流包括由主机处理器完全生成的命令(例如,以正常方式)和由处理资源生成的命令(根据本发明)的混合。

37、在这点上,各种布置是可能的,并且本发明的技术通常可以用于根据需要组装任何合适的命令流,例如包括任何合适的命令序列。

38、因此,由主机处理器提供的命令流布局可由处理资源用于识别组合命令流应包含的命令序列(次序)。然而,由于本发明中的命令流的最终组装在运行时间期间至少部分地由处理资源本身来执行,因此由主机处理器提供的命令流布局可能不(在其被提供给处理资源的点处)包括用于执行以执行处理任务的完整命令流所需的所有数据(例如,对于为其提供布局的命令流中的至少一些命令,可能存在丢失的状态数据,参数等)。

39、有各种方式可以控制处理资源的命令流组合,这将在下面进一步解释。

40、本技术人已经发现,其中至少一些命令流组件由处理资源本身而不是主机处理器执行的这种方法可以提供整体上更有效的安排,用于向数据处理系统的处理资源提交用于执行的处理任务。

41、例如,在更传统的布置中,命令流将由主机处理器(例如由处理资源的驱动器)完整地准备和组装,然后提供给处理资源以供执行。这是因为处理资源传统上不具有足够的应用程序知识来在运行时组装命令流本身。

42、然而,本技术人认识到,如在更传统的布置中所进行的,尝试在主机处理器处完全准备命令流可能引入显著的等待时间,以及需要更高的主机处理器处理负载和更高的带宽来将命令流的数据传送到处理资源/从处理资源传送命令流的数据。

43、本技术人还认识到,这样的传统配置可能因此不太适合于需要较低等待时间的应用,这是许多现代处理应用的情况,例如游戏的图形处理或vr/ar应用,其中需要(接近)实时显示。

44、最近,主机处理器还可能在将被提交给处理资源的命令流内包括命令(例如,所谓的“间接绘制”命令),这些命令能够从本地驻存在处理资源的缓冲器取得其输入自变量,而不是由主机处理器作为命令流的一部分提供的输入自变量。然而,在该情况下,仍由主机处理器执行命令流组装,仅是这些命令中的一些在从命令缓冲器执行时能够访问本地缓冲器。

45、相比之下,如上所述,本发明提供了一种改进的方法,其中至少一些命令流生成工作被卸载到处理资源本身,使得整个命令流的最终组装由处理资源执行(而不是由主机处理器完全准备和组装(以及提前)命令流然后提供给处理资源用于执行)。

46、因此,本发明提供了一种用于组装数据处理系统的处理资源的命令流的更有效的方法,例如,并且优选地,具有减少的等待时间。因此,本发明可特别适用于需要较低等待时间的应用。

47、为了便于实现这一点,根据本发明,主机处理器生成作为由主机处理器执行的整个命令流(布局)准备的一部分,并向处理资源提供要由处理资源执行的命令流生成工作的适当指示符,该指示符将使得处理资源根据需要来执行命令流生成工作,从而以用于执行的期望格式用(完全)可执行命令填充命令流(以使得处理资源执行在主机处理器上执行的应用程序的期望处理操作)。命令流生成指示符因此可以由主机处理器连同指示用于相应命令流的命令序列的相关联命令流布局一起适当地提供给处理资源,以使得处理资源执行所需的命令流生成工作,以组装完整的命令流用于执行。

48、因此,在本发明中,主机处理器向处理资源提供指示符,指示符指示将执行命令流生成工作以使处理资源生成用于填充命令流的命令流数据。主机处理还向处理资源提供关于由处理资源生成的结果命令流数据应包括在对应于命令流布局的整个命令流中的位置的信息(命令流布局)。

49、因此,在本发明中,提供给处理资源的信息(命令流布局)不是(还)以期望的可执行格式用于执行为命令流准备的应用的数据处理任务。特别地,可能至少有一些空的或不完整的命令需要用处理资源本身生成的命令流数据填充。因此,由处理资源执行的命令流生成工作可(例如且通常确实)涉及以所需(例如,可执行的)格式生成命令流数据以包括在命令流中,以生成可执行命令,所述可执行命令由处理资源执行以用于命令流正准备用于的应用程序的所需处理操作(使得执行包括由处理资源生成的命令流数据的命令的处理资源将致使处理资源执行主机处理器的应用程序的所需处理操作)。

50、这样,包括命令流内的命令的总体布局和顺序的总体命令流准备仍然由主机处理器控制(而不是试图将整个命令流准备卸载到处理资源),使得命令流中的命令序列由主机处理器例如基于应用的处理要求(其本身不为处理资源所知)来确定。然而,由主机处理器准备并提供给处理资源的命令流(布局)不是完整的命令流(例如,它没有准备好立即执行),并且最终组装的命令流(由处理资源执行的命令流)中的至少一些命令流数据由处理资源本身生成。

51、命令流生成工作到处理资源的分配可以根据需要以各种方式来控制,例如取决于所讨论的应用和处理资源。

52、命令流布局和命令流生成工作的指示符可以根据需要采取任何适当的形式。

53、在一些实施方案中,可以将指示符提供为命令流布局的一部分,使得命令流布局包括指示符。在这种情况下,命令流布局中指示符的存在指示需要命令流生成工作,并且指示符的位置优选地指示由处理资源生成的结果命令流数据应当被包括在命令流中的何处。

54、例如,在一些优选实施方案中,命令流布局类似于并且实际上是'正常'命令流(并且优选地,它还包括至少一些正常命令,即,已经由主机处理器以正常方式准备的命令),除了命令流中的一些项是命令“模板”,该命令“模板”表示“空”或“不完整”命令,这些命令需要(并且不完整)由处理资源填充命令流数据以便组装命令流中的完整命令以供执行。

55、因此,在实施方案中,命令流布局包括至少一些已由主机处理器例如以正常方式准备的命令,以及至少一些命令“模板”,其表示需要用由处理资源生成的命令流数据填充的命令。因此,命令流布局本身可以包括由处理资源存储在命令流缓冲器中用于执行的部分命令流,优选地包括已经由主机处理器完全准备的一个或多个命令以及表示要由处理资源填充(生成)的命令的一个或多个命令模板。

56、因此,命令“模板”(在本文中也称为命令“令牌”)可连同可能已由主机处理器(完全)准备的任何其它命令一起适当地包括在命令流(布局)中,其中每一命令模板包含用于将由处理资源执行的命令流生成工作的模板。

57、因此,在优选实施方案中,命令“模板”被包括在提供给处理资源的命令流布局中。然后可以由处理资源解析命令流布局,以例如通过参考命令“模板”来标识要由处理资源执行的命令流生成工作的示例。在这种情况下,命令“模板”在由命令流布局指示的整个命令序列内的位置优选地指示由处理资源生成的结果命令流数据(即,完全填充的命令)应当被包括在对应于命令流布局的命令流中的位置。因此,相应的空间(例如占位符命令)可以被包括在命令流缓冲器中,在相应的命令流布局中指示的命令模板的相应位置处,然后可以用由处理资源生成的命令流数据填充该命令流缓冲器。

58、因此,在实施方案中,包括在命令流布局中的命令模板本身充当命令流生成工作的相应指示符,并且该方法包括处理资源解析命令流布局以标识需要执行命令流生成工作的示例。

59、也是可能的,并且在一些优选实施方案中,例如通过提供命令流布局的单独描述符(或至少命令“模板”在命令流布局内的位置的描述符),命令“模板”在命令流布局所指示的整个命令序列内的位置被明确地指示给处理资源,所述描述符可以被相应地读取以识别命令流中对应于命令流布局的哪些命令需要由处理资源执行命令流生成工作。在这种情况下,命令流布局的描述符可以被包括在例如命令流队列的头部,以根据需要触发命令流生成工作来填充或生成用于命令流的相应命令。

60、因此,在实施方案中,命令流生成工作的一个或多个指示符指示对应于命令流布局的命令模板在命令流中的存在和位置。例如,在实施方案中,该指示符可以包括命令流布局的描述符,该描述符用于确定由处理资源生成的命令流数据应该被包括在命令流缓冲器中的何处以供执行。

61、在这点上,各种其它布置也是可能的。

62、因此,根据本发明的命令“模板”(“令牌”)优选地是包括必要信息的数据结构,以生成用于包括在命令流中的适当命令流数据。

63、因此,并且优选地,命令模板可以包括至少一些静态数据(状态,参数等),所述静态数据在执行命令流生成工作时由处理资源使用。例如,命令模板可以包括处理资源已经可用的数据(值)或资源(例如着色器程序)的适当描述符,并且当执行命令流生成工作时处理资源可以使用该描述符(并且当生成不同命令时重新使用该描述符)。

64、命令模板(令牌)还包括一些空的或不完整的数据段,这些数据段需要在所生成的命令可以从命令流执行之前由处理资源填充。例如,这些数据段可以是加载有默认(例如,零)值的数据段,这些数据段需要用命令的适当数据值来重写以包括在命令流中。

65、因此,与要被包括在与由主机处理器提供的命令流布局相对应的命令流中的特定命令有关的命令模板(令牌)可以并且优选地包括以下中的一个或多个:要执行以填充命令的命令流生成类型的指示(命令流生成任务);指示在执行命令流生成以填充命令时要使用的数据的描述符集合;以及将由处理资源填充的命令的一组默认或空值。

66、因此,在实施方案中,命令流布局指示表示命令流中要由处理资源生成的命令的一个或多个命令模板。因此,命令模板优选地包括一组空数据段,其将用由处理资源生成的命令流数据来填充。命令模板优选地还包括在生成命令流数据时要使用的处理资源可用的数据和/或资源的一组描述符。

67、然后可以触发处理资源来执行所需的命令流生成工作,以填充命令流模板,从而生成“完整”命令(以期望的可执行格式),以包括在命令流中以供执行。一旦命令已由处理资源生成且因此包含到命令缓冲器中,便可从命令缓冲器正常地执行命令。

68、要由处理资源执行的命令流生成(以及组装)工作能够以任何适当的方式触发。

69、优选地,当命令流布局被提供给处理资源时,它被触发,因为命令流被存储在处理资源上。

70、例如,在一些优选实施方案中,命令流生成工作的指示符包括上述类型的命令流令牌,其被包括在命令流布局内的适当位置处。

71、因此,在实施方案中,命令流生成工作的指示符被提供为命令流(布局)的一部分,例如并且优选地以命令“模板”的形式,如上所述。在这种情况下,处理资源可以被配置为解析由主机处理器提供的命令流布局,以识别任何这种命令模板(指示符)的存在,然后执行所需的命令流生成工作,用于相应地填充命令模板。

72、命令流布局内的命令模板(指示符)的这种解析和标识可以由处理资源的任何适当元素来完成。例如,处理资源优选地包括包含可操作来处理命令流(如将在下面进一步描述的)的监管器(控制器)的命令流处理电路(命令流前端),并且在优选是实施方案中,正是在命令流处理电路(命令流前端)内的该监管器(控制器)识别这种命令模板(指示符)的存在,并相应地触发命令流生成工作。

73、也就是说,在实施方案中,处理资源包括命令流处理电路(命令流前端),其可操作以将处理工作调度到处理资源的执行单元,并且其中命令流处理电路包括控制器,其可操作以接收命令流布局以及由主机处理器提供的命令流生成工作的一个或多个指示符。在该情况下,在实施方案中,该方法包括(并且处理资源被配置为使得)当命令流处理电路内的控制器识别将由处理资源执行的命令流生成工作的指示符时:控制器触发处理资源执行命令流生成工作以生成命令流数据以供包含到对应于所提供的命令流布局的命令流中。

74、因此,根据实施方案,命令生成是由命令流处理电路内的控制器基于该控制器识别命令流生成工作的指示符而(直接)触发的,而不必执行来自命令缓冲器的已由主机处理器提交的命令。以此方式,在实施方案中,独立于来自命令缓冲器的命令的执行来执行命令流生成工作的触发(例如,而非通过执行用于执行此类工作的命令来触发命令流生成工作),而主机处理器不必提前组装命令缓冲器来实现这一点。这意味着命令流组装可与命令执行分开执行,并且因此在实施方案中相对较早地执行,以进一步减少等待时间。例如,这还可以避免必须建立专用于执行命令流生成工作的命令缓冲器。这可显著减少主机处理器上的负担,因为主机处理器本身不需要执行所有命令流生成和组装,而是其可以简单地将减少的信息提供给处理资源以触发处理资源执行其自身的命令流组装。

75、例如,在优选实施方案中,在命令流处理电路(命令流前端)内的命令流处理电路(命令流前端)(例如,监管器(控制器))被配置为执行命令流汇编程序,该命令流汇编程序解析命令流(布局)和指示符以确定要执行的命令流生成工作。然后相应地执行命令流生成工作(由监管器(控制器)或处理资源内的另一处理电路执行,其可以为着色器核心,或者可以为针对此目的而提供的专用命令流组装电路。如下面将进一步解释的),然后将得到的命令流数据写入命令流缓冲器中的命令流中的适当位置。也就是说,在实施方案中,处理资源的命令流处理电路(命令流前端)被配置为(且确实)执行命令流组装程序,该命令流组装程序可操作以确定需要由处理资源执行的命令流生成工作并且接着相应地组装可执行命令以供包含到命令缓冲器中。以此方式组装的命令缓冲器接着可被适当地存储,且接着以正常方式从命令缓冲器执行相应命令,例如,如同命令缓冲器已由主机处理器提交一样。

76、因此,在实施方案中,根据本发明的命令流生成工作的指示符包括命令“模板”(“令牌”),其被包括在命令流(布局)中并且包括将由处理资源填充的一个或多个“空”或默认数据段的集合。在这样的实施方案中,处理资源(管理程序(控制器))优选地可操作用于从命令流(布局)内识别命令流生成工作的任何指示符,然后相应地触发命令流生成工作。

77、然而,其它布置也是可能的。例如,在一些实施方案中,除了命令流布局之外,命令流生成工作的指示符可以单独提供,例如作为单独的侧信道信息,并且优选地直接提供给处理资源的适当处理电路。例如,在这种情况下,指示符可以由主机处理器直接提供给控制命令流生成工作的处理元件(例如,监管器(控制器))。在这种情况下,向其提供指示符的处理资源然后可以执行所指示的命令流生成工作,并且将所得到的命令流数据包括到命令流中与正在执行命令流生成工作的命令流布局相对应的适当位置中。

78、因此,在一些实施方案中,除了提供命令流布局(优选地包括标识命令流中应当包括由处理资源生成的命令流数据的位置的命令模板)之外,主机处理器还向处理资源提供命令流生成工作的单独和附加指示符,其触发处理资源执行所指示的命令流生成工作以填充命令流中的命令模板(而不是处理资源解析命令流布局以标识需要命令流生成工作的示例)。同样,以此方式,由处理资源执行的命令生成(命令流组装)独立于来自命令缓冲器的命令的执行,并且因此可相对较早地例如在命令流前端内执行。

79、在这种情况下,适当的命令模板优选地仍被包括在命令流布局中,以充当占位符来标识由处理资源执行的命令流生成工作所生成的命令流数据应当被包括在哪里,但是需要命令流生成工作的指示符被附加地并且独立于命令模板提供给处理资源。例如,在这种情况下,指示符可以包括命令流布局的描述符,该指示符指示对应于命令流布局的命令流中的哪些命令需要由处理资源执行命令流生成工作(并且然后触发处理资源以根据需要执行命令流生成工作,例如并且优选地通过使用包括在命令流布局中的命令模板来确定要执行的命令流生成工作的类型)。所得到的命令流数据然后可以被包括在对应于命令流布局的命令流内的适当位置处,例如,如由命令流布局所指示的。或者,可以提供单独的指示符,其本身包括建立命令所必需的所有信息。

80、当然,各种其它布置也是可能的。

81、由处理资源执行的命令流生成工作的类型可以是任何合适和期望类型的命令流生成工作。

82、在一些优选实施方案中,处理资源可操作来执行多个预置命令流生成任务。例如,处理资源可以被配置为执行某些类型的命令流生成任务,例如最常遇到的,并且因此可以由处理资源本身有效地执行。

83、在这种情况下,每当命令流生成工作的指示符被提供给处理资源时,可以使处理资源总是相应地执行(相同的)预置命令流生成任务。

84、然而,优选地,存在关于响应于指示符来执行哪个命令流生成任务的附加控制。例如,在处理资源被配置为能够执行多个预设命令流生成任务的情况下,指示符还可以指示要响应于该指示符而执行的一个或多个命令流生成任务的子集。

85、例如,在一些优选实施方案中,如上所述,指示符可以包括命令模板(令牌),其包括要执行的命令流生成工作的类型的适当描述符。因此,命令模板可以包括一个或多个数据字段,其指示为了填充命令模板而应当执行的某些类型的命令流生成工作,例如某些预设任务。命令模板可以根据需要以任何适当的方式来指示这一点。

86、因此,在各实施方案中,处理资源被配置成执行一组一个或多个预置命令流生成任务以生成命令流数据,并且其中响应于指示符,处理资源被配置成执行一个或多个预置命令流生成任务。优选地,该指示符指示要响应于该指示符而执行的一个或多个预置命令流生成任务的子集。

87、处理资源然后可以执行所指示的任务,以生成必要的命令流数据以包括在命令流中。

88、然而,其它布置也是可能的。例如,在一些实施方案中,指示符可以包括逐位掩码,掩码中的位位置被相应地设置以指示要执行的命令流生成工作的类型(例如,预设)。

89、因此,指示符可(且优选地指示)指示将由处理资源执行的命令流生成工作的类型。

90、如上所述,指示符(例如命令模板)优选地还包括执行命令流生成工作可能需要的任何其它资源(例如数据或属性)的描述符。例如,通常情况下,在命令流中执行数据处理任务的给定命令可以重新使用已经对处理资源可用的数据或资源,例如因为它先前已经由处理资源生成,或者为处理资源预设。

91、这可能特别是用于图形处理的情况,其中经常是在图形处理期间生成的中间数据然后被用于随后的图形处理步骤,但是一旦图形处理完成就丢弃该中间数据的情况。

92、举例来说,在一示例中,指示符(命令模板)可涉及用于整个图形处理操作内的几何处理任务的命令。在这种情况下,几何处理任务可能需要顶点属性。因此,由处理资源(例如,在此情况下为图形处理器)执行的命令流生成工作可涉及获得顶点属性(其中指示符优选地包括所需顶点属性的适当描述符)。然后,可以相应地处理所获得的顶点属性(例如,通过在处理资源上执行适当的(预设的)几何命令生成程序),以生成适当的命令流数据(命令),用于包括在命令流中。

93、类似地,在另一示例中,指示符(命令模板)可涉及用于整个图形处理操作内的片段处理任务的命令,例如,片段着色命令。在这种情况下,片段处理任务可能需要纹理数据。因此,由处理资源执行的命令流生成工作可以涉及获得所需的纹理数据,然后相应地对其进行处理(例如,通过执行适当的(预设的)片段命令生成程序),以生成适当的命令流数据(命令),以包括在命令流中。

94、另一示例可为指示符(命令模板)致使处理资源再使用在处理资源处可用的着色器程序或着色器资源以便生成命令流数据的情况。同样,这可以通过在要使用的着色器程序/资源的指示符(命令模板)内包括适当的描述符来指示。

95、在这方面,各种其它布置也是可能的。

96、因此,在实施方案中,由处理资源执行的命令流生成工作是重新使用处理资源已经可用的数据和/或资源的命令流生成工作。

97、实际上,该命令模板方法的益处在于,因为最终命令流组合由处理资源本身执行,所以当执行其命令流生成工作时,处理资源能够重新使用现有资源(例如,数据,程序)来填充不同的命令。因此,例如与在主机处理器处完全准备命令流的传统方法相比,本发明的方法可以提供进一步的效率,例如进一步减少等待时间,使得仅在处理资源处可用的任何信息必须被传送回主机处理器以便生成命令。

98、如上所述,主机处理器还需要向处理资源提供关于由处理资源生成的命令流数据应该被写入总命令流(缓冲器)的位置的信息(总命令流布局)。因此,指示符还可以(并且优选地指示)指示整个命令流中应该包括命令流生成工作的结果的位置。

99、在一些优选实施方案中,这通过在命令流布局中包括适当的数据结构(例如命令模板(令牌))来隐含地完成,如上所述,命令流布局中的数据结构(命令模板(令牌))的位置用作指示结果命令流数据应当被包括在何处的指示符。

100、然而,其它布置也是可能的。例如,不是简单地使用对应于命令流的整个命令流布局内的命令“模板”的位置来确定结果命令流数据应包括在命令流中的何处,而是可以将命令流布局的单独和附加描述符提供给用于此目的的处理资源。在这种情况下,与提供给处理资源的命令流布局相对应的命令流优选地仍然包括命令模板,但是这些命令模板现在用作要写入的命令流数据的命令流中的占位符(例如空存储器地址),并且命令流布局的单独描述符被提供给处理资源,以指示由处理资源生成的命令流数据应该被包括在何处(例如通过指示与命令流布局相对应的命令流中的哪些命令包括需要由处理资源填充的命令“模板”)。

101、指示符本身还可以例如通过参考命令流的命令序列中的另一命令来明确地指示结果命令流数据应该被包括在命令流中的何处。在这方面,各种布置是可能的。

102、如上所述,在本发明中,命令流生成工作的指示符由主机处理器生成,并相应地提供给处理资源,以使处理资源执行命令流生成工作。

103、实际命令流生成工作本身可以由处理资源以任何适当的方式来执行。

104、例如,这可以由为此目的而提供的专用(例如硬件)电路来执行,或者可以是另一处理电路(处理器),该另一处理电路(处理器)根据需要被重新设置用于命令流生成工作。优选地,如上所述,在管理命令流操作的管理程序(控制器)的控制下执行命令流生成工作。因此,在实施方案中,命令流生成工作可以由监管器(控制器)执行,或者由监管器(控制器)触发处理资源内的另一处理电路(处理器)来执行命令流生成工作。

105、在这种情况下,执行命令流生成工作的处理电路(处理器)可以是任何合适的处理电路(处理器)。因此,这可以是为此目的而提供的专用(例如硬件)电路,或者可以是根据需要重新用于命令流生成工作的另一处理电路(处理器)。

106、例如,在图形处理器的情况下,可以通过执行适当的计算着色器程序来执行命令流生成工作。举例来说,在处理资源是图形处理器的情况下,处理资源可(且优选地包括)可操作以执行着色器程序的可编程执行单元(着色器核心)。响应于命令流生成工作将被执行的指示符,命令流管理器(控制器)可因此经配置以致使可编程执行单元执行适当着色器程序以执行命令流生成工作。

107、在这点上,各种其它布置也是可能的。

108、因此,根据本发明,主机处理器被布置为生成指示命令流的命令序列的命令流布局,然后将命令流布局相应地提供给处理资源。

109、同时,主机处理器还生成命令流生成工作的一个或多个指示符,该一个或多个指示符也被提供给处理资源(在命令流布局内,或单独地),并使得(触发)处理资源执行命令流生成工作以生成命令流数据来填充与命令流布局相对应的命令流以便执行。即,提供给处理资源的命令流布局尚未完成,并且用于执行的命令流的至少一些最终组合由处理资源本身执行。

110、因此,这可以提供用于向处理资源提交用于执行的处理任务的总体改进的,例如更有效的(较低等待时间)布置。

111、此外,可以以本发明的方式实现操作和命令流准备以及处理任务执行,而不需要显著的主(主机)处理器开销,并且例如不需要用于处理资源的显著更复杂的驱动器操作。

112、因此,与其它方法相比,本发明可以提供各种益处。

113、(完全组装的)命令流中的命令(指令)然后可以从命令流缓冲器中执行,以使处理资源例如以正常方式执行数据处理任务。即,一旦命令流已经被适当地组装以便以上述方式执行,则命令流可以例如正常地执行。

114、本发明还扩展到准备命令流本身的操作,并且相应地扩展到执行命令流本身的处理资源。

115、因此,根据本发明的另一方面,提供了一种操作数据处理系统的主机处理器的方法,所述主机处理器包括可操作以执行数据处理系统的应用程序的主机处理器,以及可操作以执行在主机处理器上执行的应用程序的处理任务的处理资源;

116、该方法包括:

117、响应于来自在所述主机处理器上执行的应用程序的对将由所述处理资源执行的数据处理的请求,在所述主机处理器上准备命令流布局,所述命令流布局指示用于由所述处理资源执行的命令流的命令序列,以致使所述处理资源执行用于所述应用程序的处理任务;

118、其中准备所述命令流布局进一步包括:

119、所述主机处理器生成要由所述处理资源执行的命令流生成工作的一个或多个指示符,以填充对应于所述命令流布局的所述命令流用于执行,所述指示符将触发所述处理资源执行命令流生成工作,以生成用于包括在对应于所述命令流布局的所述命令流中的命令流数据;

120、该方法进一步包括:

121、主机处理器向处理资源提供命令流布局和命令流生成工作的一个或多个指示符。

122、根据本发明的另一方面,提供了一种用于数据处理系统的主机处理器,该主机处理器可操作以执行数据处理系统的应用程序,并且包括:

123、命令流生成电路,其经配置以响应于来自在所述主机处理器上执行的应用程序的对将由所述处理资源执行的数据处理的请求而准备命令流布局,所述命令流布局指示用于由所述处理资源执行的命令流的命令序列,以致使所述处理资源执行用于所述应用程序的处理任务;

124、其中准备所述命令流布局进一步包括:

125、所述主机处理器生成要由所述处理资源执行的命令流生成工作的一个或多个指示符,以填充对应于所述命令流布局的所述命令流用于执行,所述指示符将触发所述处理资源执行命令流生成工作,以生成用于包括在对应于所述命令流布局的所述命令流中的命令流数据;

126、所述主机处理器进一步包括处理电路,所述处理电路经配置以向所述处理资源提供所述命令流布局和所述命令流生成工作的一个或一个以上指示符。

127、根据本发明的另一方面,提供了一种操作数据处理系统的处理资源的方法,该处理资源可操作以执行在数据处理系统的主机处理器上执行的应用程序的处理任务;

128、该方法包括:

129、所述处理资源从所述数据处理系统的主机处理器接收命令流布局,所述命令流布局指示用于命令流的命令序列,所述命令流由所述处理资源执行以使所述处理资源执行用于所述应用的处理任务;

130、所述处理资源还从主机处理器接收要由处理资源执行以填充对应于命令流布局的命令流的命令流生成工作的一个或多个指示符;

131、所述处理资源将对应于命令流布局的命令流存储在命令流缓冲器中用于执行;以及

132、所述处理资源执行来自所述命令流缓冲器内的所述命令流中的命令以执行用于所述应用的处理任务;

133、其中所述处理资源在所述命令流缓冲器中存储与所述命令流布局相对应的命令流包括:

134、响应于由所述处理资源针对对应于所述命令流布局的所述命令流执行的命令流生成工作的指示符:

135、所述处理资源执行所指示的命令流生成工作以生成用于包括在所述命令流中的命令流数据;以及

136、将所生成的命令流数据写入到所述命令流缓冲器中的所述命令流中以供所述处理资源执行。

137、根据本发明的另一方面,提供了一种用于数据处理系统的处理资源,所述处理资源可操作以执行用于在所述数据处理系统的主机处理器上执行的应用的处理任务,并且包括:

138、命令流缓冲器,用于存储与从主机处理器接收的用于执行的命令流布局相对应的命令流;

139、处理电路,其被配置为响应于由所述主机处理器提供的命令流生成工作的指示符,由所述处理资源执行以填充对应于命令流布局的命令流:

140、执行所述指示的命令流生成工作以生成命令流数据以包括在对应于所述命令流布局的命令流中;以及

141、将生成的命令流数据写入命令流缓冲器中的命令流,以供处理资源执行;以及

142、命令流执行电路,其被配置为执行来自所述命令流缓冲器内的所述命令流中的命令,以执行所述应用的处理任务。

143、根据这些另外的方面的本发明可以具有以上关于第一和第二方面描述的任何和所有特征,至少达到它们不互相排斥的程度。也就是说,根据这些进一步方面的主机处理器和处理资源可具有关于先前方面的主机处理器和处理资源而描述的任何任选和优选特征,且可以相同优选方式操作。

144、处理资源可以是可操作以执行应用的处理任务的任何合适的处理资源。

145、在优选实施方案中,处理资源是图形处理器(图形处理单元(gpu))。因此,在优选实施方案中,处理资源(图形处理器)可操作以执行在主机处理器上执行的应用程序的图形处理任务(且另外经配置以用上述方式执行命令流生成工作)。在这种情况下,命令流生成工作优选地生成用于存储在命令流缓冲器中的可执行命令,该可执行命令在由图形处理器执行时将使图形处理器执行图形处理任务。

146、本发明尤其适用于图形处理应用,因为这些应用通常需要较低的等待时间。例如,对于游戏和vr/ar应用的实时呈现尤其如此。

147、然而,本发明同样可以应用于其它合适的数据处理系统,其中主机处理器为处理资源准备命令流,并且其中期望较低的等待时间。

148、要由处理资源执行的处理可以是所讨论的处理资源可以执行的任何合适和期望的处理。因此,这可以并且优选地取决于处理资源的性质。

149、在图形处理器的情况下,要执行的处理优选地包括适当的图形处理,例如生成图形处理输出,例如用于显示和/或用于其它目的(例如渲染到纹理操作)的渲染帧(图像)。

150、要由应用的处理资源执行的数据处理任务可以是所讨论的处理资源可以执行的任何合适和期望的处理任务。因此,它们可以并且优选地取决于处理资源的性质,并且取决于将由处理资源执行的特定处理。

151、在图形处理器的情况下,处理任务优选地包括适当的图形处理操作,例如用于生成图形处理输出,例如用于显示和/或用于其它目的(例如渲染到纹理操作)的渲染帧(图像)。

152、可以为处理资源准备任何期望数量的命令流(或命令流布局)。在一些优选实施方案中,多个(例如两个)命令流由处理资源执行,相应的多个命令流布局由此由主机处理器准备,但是在其他实施方案中,可以仅有单个命令流。该命令流或每个命令流可以涉及任何合适和期望的处理任务。

153、该命令流或每个命令流应当并且优选地确实包括一个或多个并且优选地多个命令(指令)。该命令流或每个命令流可以包括任何适当的和期望的命令(指令),以使处理资源执行期望的处理任务,例如并且优选地,根据数据处理系统和所讨论的处理资源的命令流操作。因此,命令流优选地可以并且优选地确实包括以下中的一个或多个或全部:设置用于处理任务的参数的命令(指令),执行处理任务的命令(指令),等待处理任务完成的命令(指令)等。

154、在存在多个(例如,两个)命令流的情况下,所述命令流还可包含等待命令,所述等待命令致使一个命令流的执行等待所述(或另一)命令流的执行待决。在美国专利no.10861125(arm limited)中描述了这种机制的一个示例,其内容在此全部引入,并且其也可以应用于本发明的命令流。

155、主机处理器可以响应于来自应用的处理资源要以任何适当和期望的方式执行的处理请求,为处理资源准备命令流(布局)。优选地,主机处理器将如上所述的各个命令或命令“模板”添加到各个命令流(布局),以使处理资源执行期望的处理任务。主机处理器应例如根据所需的处理任务将命令适当地添加到给定命令流,如上文所论述。例如,在存在多个命令流的情况下,处理器可以将用于特定类型的处理任务的命令添加到一个命令流,并且将用于不同类型的处理任务的命令添加到另一命令流。

156、例如,在图形处理器的情况下,在特别优选的实施方案中,主机处理器将准备一个命令流(布局),其包括使图形处理器执行几何任务(作业)的命令序列,以及另一个命令流(布局),其包括使图形处理器执行计算任务(计算作业)的命令序列,优选地,计算要执行棋盘形布置操作的作业。

157、在特别优选的实施方案中,当准备命令流时,主机处理器可操作来针对正在准备的命令流(以及针对每个命令流)跟踪在命令流中已经到达的当前位置(即添加到命令流的最新命令)。这优选地通过维护跟踪命令流中已包括多少命令(或至少特定类型的命令)的进度计数器来完成。因此,主机处理器优选地在其将例如特定命令添加到命令流中时递增进度计数器(且优选地针对其正在准备的每一命令流进行此操作)。

158、因此,在优选实施方案中,主机处理器将向(和每个)命令流(布局)渐进地添加命令或命令“模板”等,以使处理资源为应用执行期望的处理任务,并且在这样做的同时,对于每个命令流(布局),保持跟踪已经到达的命令流中的当前位置(优选地通过维持命令流的进度计数器值)。因此,当将适当的命令(模板)添加到命令流布局时,主机处理器还将适当地递增对应于命令流布局的命令流的进度计数器值,以跟踪在该命令流中已到达的当前位置。

159、主机处理器对命令流(或命令流布局)的准备可以由主机处理器的任何适当和期望的元件和组件来执行。在优选实施方案中,所讨论的处理资源的驱动器准备命令流(并因此以本发明的方式操作)。因此,在优选实施方案中,命令流生成电路包括可编程处理电路,该可编程处理电路可以被编程(例如并且优选地操作为用于处理资源的驱动器)以便以期望的方式准备命令流。

160、指示符(例如命令“模板”)可同时生成,优选地由主机处理器的相同元件生成,例如且优选地由操作为处理资源的驱动器的相同命令流生成电路生成。

161、因此,根据本发明的另一方面,提供了一种用于数据处理系统的处理资源的驱动器,其可操作以执行在数据处理系统的主机处理器上执行的应用程序的处理任务,该驱动器可操作以:

162、响应于来自在所述主机处理器上执行的应用程序的对将由所述处理资源执行的数据处理的请求,准备命令流布局,所述命令流布局指示用于由所述处理资源执行的命令流的命令序列,以致使所述处理资源执行用于所述应用程序的处理任务;

163、其中准备所述命令流布局进一步包括:

164、生成将由所述处理资源执行的命令流生成工作的一个或一个以上指示符以填充对应于所述命令流布局的所述命令流以供执行,所述指示符将触发所述处理资源执行命令流生成工作以生成用于包含在对应于所述命令流布局的所述命令流中的命令流数据。

165、一旦主机处理器准备好命令流(布局),就将命令流提供给处理资源(例如图形处理器)以供执行,且处理资源(例如图形处理器)接着将适当地执行命令流。

166、可以以任何适当和期望的方式将命令流布局提供给处理资源,例如图形处理器。

167、命令流布局一旦提供给处理资源,则用于构建命令流。所得到的命令流最初由处理资源以“命令流缓冲器”的形式存储在适当的命令流存储器中,处理资源可以从该存储器中适当地读取命令以供执行。根据需要,命令流缓冲器可以采用任何适当的形式。在实施方案中,它包括环形缓冲器。

168、如上所述,作为命令流的初始建立和存储的一部分,处理资源优选地被触发以执行所需的命令流生成工作,以填充命令流用于执行。

169、在这方面应当理解,处理资源可以在命令流被完全填充之前开始执行命令流中的命令。即,由主机处理器执行以填充命令流的命令流生成工作的步骤可以并且优选地与命令流的执行并行地执行。

170、可以以任何适当和期望的方式来配置和实现处理资源对命令流的执行。例如,处理资源可以包括适当的监督控制器,例如微控制器(mcu),其可操作来处理命令流在处理资源的硬件执行资源上的调度(并且在优选实施方案中,情况就是这样)。当然,其它布置也是可能的。

171、相应地,在优选实施方案中,处理资源的硬件执行资源包括一个或多个,并且优选地多个命令流执行单元,该命令流执行单元可操作来执行(并且执行)命令流中的命令,以执行应用的处理任务。

172、处理资源,例如图形处理器,可以以任何适当和期望的方式相应地执行命令流。例如,多个命令流(在提供的情况下)的执行优选地与处理资源(例如图形处理器)同时开始,然后依次适当地处理每个命令流中的命令(并且在处理资源具有进行该处理的能力并且该处理资源是适当的情况下是并行的)(并且根据并且基于包括在命令流中的任何等待命令)。

173、因此,在特别优选的实施方案中,处理资源将依次(并且按顺序)执行命令流中的命令,并且对于它正在执行的(并且对于每个)命令流,这样做将跟踪它通过(沿着)命令流的进度(它当前在命令流中已经到达的位置),例如,并且优选地,通过保持命令流的进度计数,当执行增加进度计数器的命令流命令时,该进度计数(优选地)自动增加。当前命令流位置(进程计数)可以例如被保持在处理资源的适当寄存器中或可由处理资源访问。

174、本发明可以用于数据处理系统的处理资源可以用来生成的所有形式的输出。例如,在图形处理的情况下,图形处理器可以生成用于显示的帧,再现纹理输出等。然而,图形处理器也可用于通用图形处理。来自处理的输出数据值优选地被输出到外部存储器,例如主存储器,用于存储和使用,例如在图形处理的情况下,输出到帧缓冲器用于显示。

175、在一些实施方案中,数据处理系统包括和/或与一个或多个存储器和/或存储设备通信,所述存储器和/或存储设备存储这里描述的数据,和/或存储用于执行这里描述的过程的软件。数据处理系统还可以包括用于显示基于由数据处理系统生成的数据的图像的显示器或与显示器通信。

176、本发明适用于处理器或数据处理系统的任何适当形式或配置。在特别优选的实施方案中,本发明的各种功能在生成和输出数据的单个数据处理平台上执行。

177、然而,本发明还可以在基于云的系统中找到效用,例如在主机处理器驻留在云中并且控制本地处理资源(例如本地显示器)的情况下,以及在等待时间也可能是问题的情况下。例如,本发明可以用于云客户端渲染,在这种情况下,渲染命令可以在运行时在客户端侧或在云端组装,这取决于渲染资源位于何处。

178、在这点上,各种布置是可能的。

179、本发明可以在任何适当的系统中实现,例如适当配置的基于微处理器的系统。在优选实施方案中,本发明在基于计算机和/或微处理器的系统中实现。

180、本发明的各种功能可以以任何期望的和适当的方式实现。例如,本发明的功能可以根据需要在硬件或软件中实现。因此,例如,除非另外指明,否则本发明的各种功能元件,级,电路/电路和“装置”可包括可操作以执行各种功能等的合适的一个或多个处理器,一个或多个控制器,功能单元,电路/电路,处理逻辑,微处理器布置等,诸如可被编程为以所需方式操作的适当专用硬件元件和/或可编程硬件元件。

181、这里还应当注意,如本领域技术人员所理解的,本发明的各种功能等可以在给定处理器上并行复制和/或执行。同样,如果需要,各个处理级可以共享处理电路/电路等。

182、除了执行上述特定功能所需的任何硬件之外,数据处理系统还可以包括数据处理系统所包括的任何一个或多个或所有通常的功能单元等。

183、本领域技术人员还将理解,本发明的所有描述的方面和实施方案可以,并且优选地确实,适当地包括在此描述的优选的和可选的特征中的任何一个或多个或全部。

184、根据本发明的方法可以至少部分地使用软件例如计算机程序来实现。因此可以看出,当从其它方面来看时,本发明提供了特别适合于当安装在数据处理装置上时执行这里描述的方法的计算机软件,包括当程序单元在数据处理装置上运行时用于执行这里描述的方法的计算机软件代码部分的计算机程序单元,以及包括当程序在数据处理系统上运行时适合于执行这里描述的方法的所有步骤的代码单元的计算机程序。数据处理器可以是微处理器系统,可编程fpga(现场可编程门阵列)等。

185、本发明还扩展到包括这样的软件的计算机软件载体,当该软件用于操作包括数据处理器的处理器,再现器或微处理器系统时,使所述处理器,再现器或微处理器系统结合所述数据处理器执行本发明的方法的步骤。这种计算机软件载体可以是诸如rom芯片、cdrom、ram、闪存或磁盘之类的物理存储介质,或者可以是诸如有线电信号,光信号或诸如到卫星等的无线电信号之类的信号。

186、还应当理解,不是本发明的方法的所有步骤都需要由计算机软件来执行,因此从另一个广义的方面来说,本发明提供了计算机软件和安装在计算机软件载体上的用于执行本文所述方法的至少一个步骤的这种软件。

187、因此,本发明可以适当地实现为与计算机系统一起使用的计算机程序产品。这样的实现可以包括一系列计算机可读指令,这些计算机可读指令固定在有形的非瞬态介质上,诸如计算机可读介质,例如磁盘、cd-rom、rom、ram、闪存或硬盘。它还可以包括一系列计算机可读指令,这些指令可以经由调制解调器或其他接口设备,通过有形介质(包括但不限于光学或模拟通信线路)或无形地使用无线技术(包括但不限于微波,红外或其他传输技术)传输到计算机系统。该系列计算机可读指令实现了本文先前描述的全部或部分功能。

188、本领域的技术人员将理解,这种计算机可读指令可以用多种编程语言来编写,以用于许多计算机体系结构或操作系统。此外,这些指令可以使用当前或未来的任何存储器技术来存储,包括但不限于半导体,磁或光,或者使用当前或未来的任何通信技术来传输,包括但不限于光,红外或微波。可以设想,这样的计算机程序产品可以作为带有附带的打印或电子文档的可移动介质来分发,例如,在系统rom或固定盘上预装有计算机系统的收缩包装软件,或者通过网络(例如,因特网或万维网)从服务器或电子公告板分发。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1