用于图形处理的每个着色器的前置码制造技术

技术编号:19878822 阅读:19 留言:0更新日期:2018-12-22 18:09
一种用于在图形处理单元中处理数据的方法包含:接收对着色器的线程的多个群组共用的指令的代码块;执行对所述着色器的线程的所述多个群组共用的指令的所述代码块通过线程的所述多个群组的线程的一个群组产生结果;在可由线程的所述多个群组中的每一个存取的芯片上随机存取存储器RAM中存储对所述着色器的线程的所述多个群组共用的指令的所述代码块的所述结果;以及在确定已经完成存储对所述着色器的线程的所述多个群组共用的指令的所述代码块的所述结果之后,从芯片上RAM传回对所述着色器的线程的所述多个群组共用的指令的所述代码块的所述结果。

【技术实现步骤摘要】
【国外来华专利技术】用于图形处理的每个着色器的前置码
本专利技术涉及数据处理,且更明确地说,涉及用于图形处理的着色器前置码的产生和执行。
技术介绍
单指令多数据(SIMD)处理系统是包含在多个数据段上执行相同指令的多个处理元件的一种类型的并行计算系统。SIMD系统可以是独立计算机或计算系统的子系统。举例来说,一或多个SIMD执行单元可用于图形处理单元(GPU)中以实施支持可编程着色的可编程着色单元。SIMD处理系统允许程序的多个执行线程以用并行方式在多个处理元件上同步执行,由此增加需要在多个数据段上执行相同集合的操作的程序的处理量。在特定SIMD处理元件上执行的特定指令被称作线程或纤程。线程的群组可被称作波或线程束。例如GPU的处理单元包含处理元件和存储数据以用于指令的执行的通用寄存器(GPR)。在一些实例中,处理元件执行用于处理一项数据的指令,并且相应的处理元件在GPR中存储这项数据或者来自处理的所述项的所得数据。数据项可以是发生处理的基本单位。举例来说,在图形处理中,图元的顶点是项的一个实例,且像素是项的另一实例。存在与每个顶点和像素相关联的图形数据(例如,坐标、色彩值等)。处理元件的处理器核心内可存在多个处理元件,从而允许指令的并行执行(例如,多个处理元件同时执行相同指令)。着色器是可以利用并行处理环境(例如,着色器处理器)且已经用于在图形处理管线的各个阶段在两维和三维模型上执行图形渲染技术的计算机程序。着色器的实例包含:像素(或片段)着色器,其用于计算像素(或片段)的色彩和其它属性;顶点着色器,其用于控制位置、移动、照明和色彩,或顶点;几何着色器,其用于产生图形图元;曲面细分(tessellation)相关着色器(例如,当将顶点数据的补丁细分成较小图元时使用的外壳着色器和/或域着色器);以及计算着色器,其用于计算其它信息(例如,非图形数据)。
技术实现思路
一般来说,本专利技术描述了当在GPU的着色器处理器上执行着色器程序时用于减少冗余操作的技术。在一个实例中,本专利技术描述了技术借此在着色器的所有并行处理元件(例如,线程)当中产生相同结果的指令经识别和调度以执行每个着色器和/或每个命令(例如,绘制或分派命令)一次。编译程序可以识别冗余指令并且将冗余指令分组到被称作每个着色器的前置码的代码块中。GPU系统随后执行每个着色器前置码一次并且将每个着色器前置码的冗余指令的结果保存在芯片上存储器中。在着色器处理器的处理元件上执行的着色器的每个后续线程可以随后重新使用所述结果而无需再次计算相同结果。此外,数据可以经由每个着色器前置码从系统存储器预加载到芯片上随机存取存储器(RAM)和/或芯片上状态高速缓冲存储器/缓冲器中。在本专利技术的一个实例中,操作图形处理单元(GPU)的方法包括:通过GPU从着色器编译程序接收包括前置码代码块和主要着色器代码块的着色器程序,所述前置码代码块可执行以产生一或多个结果,所述一或多个结果对于执行着色器程序的线程的多个群组中的每一个是相同的一或多个结果;通过GPU在线程的多个群组的线程的第一群组上执行前置码代码块以产生一或多个结果;通过GPU存储前置码代码块的一或多个结果,前置码代码块的一或多个结果可由线程的多个群组中的每一个存取;以及在确定已经完成存储前置码代码块的一或多个结果中的所有的之后,通过GPU使用通过执行前置码代码块产生的一或多个结果执行用于线程的多个群组中的线程的一个群组的每个线程的主要着色器代码块。在另一实例中,一种用于处理数据的设备,所述设备包括:图形处理单元(GPU),所述GPU包括常数存储器和着色器核心,所述着色器核心包括控制单元、多个处理元件和常数存储器,其中所述控制单元经配置以进行以下操作:从着色器编译程序接收包括前置码代码块和主要着色器代码块的着色器程序,所述前置码代码块可执行以产生一或多个结果,所述一或多个结果对于执行着色器程序的线程的多个群组中的每一个是相同的一或多个结果;引导所述多个处理元件中的至少一个在线程的多个群组的线程的第一群组上执行前置码代码块以产生一或多个结果;在常数存储器中存储前置码代码块的一或多个结果,前置码代码块的一或多个结果可由线程的多个群组中的每一个存取;以及在确定已经完成存储前置码代码块的一或多个结果中的所有的之后,使用通过执行前置码代码块产生的一或多个结果引导所述多个处理元件中的至少一个执行用于线程的多个群组中的线程的一个群组的每个线程的主要着色器代码块。在另一实例中,一种经配置以操作图形处理单元(GPU)的设备,所述设备包括:用于从着色器编译程序接收包括前置码代码块和主要着色器代码块的着色器程序的装置,所述前置码代码块可执行以产生一或多个结果,所述一或多个结果对于执行着色器程序的线程的多个群组中的每一个是相同的一或多个结果;用于在线程的多个群组的线程的第一群组上执行前置码代码块以产生一或多个结果的装置;用于存储前置码代码块的一或多个结果的装置,前置码代码块的一或多个结果可由线程的多个群组中的每一个存取;以及用于在确定已经完成存储前置码代码块的一或多个结果中的所有的之后使用通过执行前置码代码块产生的一或多个结果执行用于线程的多个群组中的线程的一个群组的每个线程的主要着色器代码块的装置。在另一实例中,一种包含存储在其上的指令的非暂时性计算机可读存储媒体,当执行所述指令时,使得至少一个处理器进行以下操作:从着色器编译程序接收包括前置码代码块和主要着色器代码块的着色器程序,所述前置码代码块可执行以产生一或多个结果,所述一或多个结果对于执行着色器程序的线程的多个群组中的每一个是相同的一或多个结果;在线程的多个群组的线程的第一群组上执行前置码代码块以产生一或多个结果;在常数存储器中存储前置码代码块的一或多个结果,前置码代码块的一或多个结果可由线程的多个群组中的每一个存取;以及在确定已经完成存储前置码代码块的一或多个结果中的所有的之后,使用通过执行前置码代码块产生的一或多个结果执行用于线程的多个群组中的线程的一个群组的每个线程的主要着色器代码块。在附图和以下描述中阐述了一或多个实例的细节。其它特征、目标和优点将从所述描述、图式以及权利要求书中显而易见。附图说明图1是说明根据本专利技术中所描述的一或多个实例技术的用于处理数据的实例装置的框图。图2是更详细地说明图1中所说明的装置的组件的框图。图3是说明指令集的实例的概念图。图4是说明在GPU的着色器核心的通用寄存器(GPR)中的数据存储的实例的概念图。图5是图1的GPU的实例着色器核心的更详细框图。图6是说明在GPU中处理数据的实例技术的流程图。图7是说明编译着色器程序的实例技术的流程图。具体实施方式例如经配置以并行地执行许多操作(例如,同时或大体上同时)的图形处理单元(GPU)的并行处理单元包含执行一或多个程序的指令的一或多个处理器核心(例如,用于GPU的着色器核心)。为易于描述,本专利技术中所描述的技术是相对于经配置以执行图形处理应用程序和/或通用GPU(GPGPU)应用程序的GPU进行描述的。然而,本专利技术中所描述的技术可以扩展到未必是GPU或GPGPU的并行处理单元,以及非并行处理单元(例如,未特定地经配置以用于并行处理的非并行处理单元)。可以用单指令、多数据(SIMD)结构设计GPU。在SIMD结构中,着色本文档来自技高网
...

【技术保护点】
1.一种操作图形处理单元GPU的方法,其包括:通过所述GPU从着色器编译程序接收包括前置码代码块和主要着色器代码块的着色器程序,所述前置码代码块可执行以产生一或多个结果,所述一或多个结果对于执行所述着色器程序的线程的多个群组中的每一个是相同的一或多个结果;通过所述GPU在线程的所述多个群组的线程的第一群组上执行所述前置码代码块以产生所述一或多个结果;通过所述GPU存储所述前置码代码块的所述一或多个结果,所述前置码代码块的所述一或多个结果可由线程的所述多个群组中的每一个存取;以及在确定已经完成存储所述前置码代码块的所述一或多个结果中的所有结果之后,通过所述GPU使用通过执行所述前置码代码块产生的所述一或多个结果执行用于线程的所述多个群组中的线程的一个群组的每个线程的所述主要着色器代码块。

【技术特征摘要】
【国外来华专利技术】2016.05.23 US 15/162,2721.一种操作图形处理单元GPU的方法,其包括:通过所述GPU从着色器编译程序接收包括前置码代码块和主要着色器代码块的着色器程序,所述前置码代码块可执行以产生一或多个结果,所述一或多个结果对于执行所述着色器程序的线程的多个群组中的每一个是相同的一或多个结果;通过所述GPU在线程的所述多个群组的线程的第一群组上执行所述前置码代码块以产生所述一或多个结果;通过所述GPU存储所述前置码代码块的所述一或多个结果,所述前置码代码块的所述一或多个结果可由线程的所述多个群组中的每一个存取;以及在确定已经完成存储所述前置码代码块的所述一或多个结果中的所有结果之后,通过所述GPU使用通过执行所述前置码代码块产生的所述一或多个结果执行用于线程的所述多个群组中的线程的一个群组的每个线程的所述主要着色器代码块。2.根据权利要求1所述的方法,其进一步包括:通过在处理器上运行的所述着色器编译程序识别可执行以产生对于执行所述着色器程序的线程的多个群组中的每一个是相同的一或多个结果的所述一或多个结果的指令的代码块;以及通过在所述处理器上运行的所述着色器编译程序将指令的所述代码块分组到所述着色器程序的所述前置码代码块中。3.根据权利要求2所述的方法,其中所述识别指令的所述代码块包括识别被评估为常数的指令。4.根据权利要求1所述的方法,其进一步包括:基于识别着色器前置码起点指令识别所述前置码代码块。5.根据权利要求1所述的方法,其进一步包括:追踪所述前置码代码块是否已经由允许所述GPU执行线程的所述多个群组的线程的后续群组的线程的所述第一群组执行。6.根据权利要求1所述的方法,其进一步包括:追踪线程的所述多个群组的线程的任何群组是否已经在线程的所述第一群组之前被执行以至少部分确定先前是否已经执行所述前置码代码块。7.根据权利要求1所述的方法,其进一步包括:追踪所述前置码代码块是否已经被执行以至少部分确定是否执行所述前置码代码块。8.根据权利要求1所述的方法,其中所述执行所述前置码代码块是通过在所述GPU上的标量处理器执行的。9.根据权利要求1所述的方法,其中所述存储所述一或多个结果是在可写入缓冲器管理的高速缓冲存储器上。10.根据权利要求1所述的方法,其中所述存储所述一或多个结果可由着色器处理器的所有处理元件存取。11.根据权利要求1所述的方法,其中所述前置码代码块被评估为一或多个常数结果。12.根据权利要求1所述的方法,其进一步包括:通过所述GPU将来自随机存取存储器RAM的所述前置码代码块的所述一或多个结果加载到常数存储器中。13.一种用于处理数据的设备,所述设备包括:图形处理单元GPU,所述GPU包括存储器和着色器核心,所述着色器核心包括控制单元、多个处理元件和常数存储器,其中所述控制单元经配置以进行以下操作:从着色器编译程序接收包括前置码代码块和主要着色器代码块的着色器程序,所述前置码代码块可执行以产生一或多个结果,所述一或多个结果对于执行所述着色器程序的线程的多个群组中的每一个是相同的一或多个结果;引导所述多个处理元件中的至少一个在线程的所述多个群组的线程的第一群组上执行所述前置码代码块以产生所述一或多个结果;在所述常数存储器中存储所述前置码代码块的所述一或多个结果,所述前置码代码块的所述一或多个结果可由线程的所述多个群组中的每一个存取;以及在确定已经完成存储所述前置码代码块的所述一或多个结果中的所有结果之后,使用通过执行所述前置码代码块产生的所述一或多个结果引导所述多个处理元件中的至少一个执行用于线程的所述多个群组中的线程的一个群组的每个线程的所述主要着色器代码块。14.根据权利要求13所述的设备,其进一步包括处理器,其中所述处理器经配置以进行以下操作:识别可执行以产生对于执行所述着色器程序的线程的多个群组中的每一个是相同的一或多个结果的所述一或多个结果的指令的代码块;以及将指令的所述代码块分组到所述着色器程序的所述前置码代码块中。15.根据权利要求14所述的设备...

【专利技术属性】
技术研发人员:陈林杜云A·E·格鲁贝尔焦国方于春D·R·加西亚·加西亚
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1