CN118679492A - 动态波配对 - Google Patents

动态波配对 Download PDF

Info

Publication number
CN118679492A
CN118679492A CN202380020669.4A CN202380020669A CN118679492A CN 118679492 A CN118679492 A CN 118679492A CN 202380020669 A CN202380020669 A CN 202380020669A CN 118679492 A CN118679492 A CN 118679492A
Authority
CN
China
Prior art keywords
gpu
wave
workloads
slots
workload
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202380020669.4A
Other languages
English (en)
Inventor
杜云
A·E·格鲁贝尔
Z·应
C·胡
B·杨
Y·夏
钟刚
于春
E·德默斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN118679492A publication Critical patent/CN118679492A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)

Abstract

本公开内容提供了用于动态波配对的系统、设备、装置和方法,包括编码于存储介质上的计算机程序。图形处理器可以将一个或多个GPU工作负载分配给多个波时隙中的一个或多个波时隙。所述图形处理器可以选择多个执行时隙中的第一执行时隙以用于执行所述一个或多个GPU工作负载。所述选择可以基于多个粒度中的一个粒度。所述图形处理器可以在所选择的第一执行时隙处以所述多个粒度中的所述一个粒度执行所述一个或多个GPU工作负载。

Description

动态波配对
相关申请的交叉引用
本申请要求标题为"DYNAMIC WAVE PAIRING"并且于2022年2月24日提交的美国专利申请序列号17/652,478的权益,其全部内容通过引用明确地并入本文。
技术领域
本公开内容总体上涉及处理系统,并且更具体地涉及用于图形处理的一种或多种技术。
背景技术
计算设备通常执行图形和/或显示处理(例如,利用图形处理单元(GPU)、中央处理单元(CPU)、显示处理器等)以渲染和显示视觉内容。这样的计算设备可以包括例如计算机工作站、诸如智能手机的移动电话、嵌入式系统、个人计算机、平板计算机和视频游戏控制台。GPU被配置为执行图形处理管线,该图形处理管线包括一个或多个处理阶段,该一个或多个处理阶段一起操作以执行图形处理命令以及输出帧。中央处理单元(CPU)可以通过向GPU发出一个或多个图形处理命令来控制对GPU的操作。现代的CPU通常能够并发地执行多个应用,多个应用中的每个应用在执行期间可能需要利用GPU。显示处理器可以被配置为将从CPU接收的数字信息转换为模拟值,并且可以向显示面板发出命令以便显示视觉内容。提供用于在显示器上的视觉呈现的内容的设备可以利用CPU、GPU和/或显示处理器。
当前技术可能无法解决GPU的编译器无法总是基于着色器和性能统计找到最佳波大小的问题。需要改进波执行粒度的灵活性的技术。
发明内容
下文给出一个或多个方面的简化的概述,以便提供对这些方面的基本的理解。此概述不是对所有预期的方面的广泛的概述,以及旨在既不识别出所有方面的关键的或决定性的元素,也不划定任何或所有方面的范围。其唯一的目的是以简化的形式给出一个或多个方面的一些概念,作为稍后所给出的更详细的描述的序言。
在本公开内容的一个方面中,提供了一种方法、计算机可读介质和装置。所述装置可以将一个或多个GPU工作负载分配给多个波时隙中的一个或多个波时隙。所述装置可以选择多个执行时隙中的第一执行时隙以用于执行所述一个或多个GPU工作负载。所述选择可以基于多个粒度中的一个粒度。所述装置可以在所选择的第一执行时隙处以所述多个粒度中的所述一个粒度执行所述一个或多个GPU工作负载。
为了完成上述以及相关目的,一个或多个方面包括下文充分描述的以及在权利要求书中特别地指出的特征。下面的描述和附图详细地阐述一个或多个方面的某些说明性的特征。然而,这些特征是示意性的示出各个方面的原理可以采用的各种方式中的仅仅少数几个方式,并且该描述旨在包括所有这些方面和其等效物。
附图说明
图1是示出了根据本公开内容的一个或多个技术的示例内容生成系统的框图。
图2示出了根据本公开内容的一种或多种技术的示例GPU。
图3示出了根据本公开内容的一种或多种技术的示例GPU
图4是示出了根据本公开内容的一种或多种技术的波时隙和GPR的分配的示意图。
图5是示出了根据本公开内容的一种或多种技术的GPR布局的示意图。
图6示出了根据本公开内容的一种或多种技术的示例GPU。
图7是示出了根据本公开内容的一种或多种技术的波时隙和GPR的分配的示意图。
图8是示出了根据本公开内容的一种或多种技术的GPR布局的示意图。
图9是根据本公开内容的一种或多种技术的图形处理的示例方法的通信流程的示意图。
图10是根据本公开内容的一种或多种技术的图形处理的示例方法的流程图。
图11是根据本公开内容的一种或多种技术的图形处理的示例方法的流程图。
具体实施方式
系统、装置、计算机程序产品和方法的各个方面是参照附图在下文中更充分地描述的。然而,本公开内容可以以许多不同的形式来体现,以及不应当解释为限于贯穿本公开内容所给出的任何特定的结构或功能。相反,提供这些方面以便本公开内容将是详尽的和完整的,以及将向本领域技术人员充分地传达本公开内容的范围。基于本文中的教导,本领域技术人员应当领会的是,本公开内容的范围旨在覆盖本文中所公开的系统、装置、计算机程序产品和方法的任何方面,无论是独立于本公开内容的其他方面来实现的还是与本公开内容的其他方面结合来实现的。例如,可以使用本文中所阐述的任意数量的方面来实现装置或实践方法。此外,本公开内容的范围旨在覆盖如下的装置或方法:使用其他结构、功能、或除了或不同于本文中所阐述的公开内容的各个方面的结构和功能来实践的装置或方法。本文中所公开的任何方面可以通过权利要求的一个或多个元素来体现。
虽然本文中描述了各个方面,但是这些方面的许多变体和排列落在本公开内容的范围内。虽然提到本公开内容的各方面的一些潜在利益和优势,但是本公开内容的范围不旨在受限于特定的利益、用途或目标。相反,本公开内容的各方面旨在广泛地适用于不同的无线技术、系统配置、处理系统、网络和传输协议,其中的一些是在图中和在下文的描述中以示例的方式进行示出的。具体实施方式和附图仅仅是对本公开内容的说明而不是限制,本公开内容的范围是通过所附的权利要求以及其等效物来限定的。
若干方面是参照各种装置和方法来给出的。这些装置和方法是在下文的具体实施方式中进行描述的,以及在附图中通过各种框、组件、电路、过程、算法等(统称为“元素”)进行示出的。这些元素可以是使用电子硬件、计算机软件或其任何组合来实现的。至于这样的元素是实现为硬件还是软件,则取决于对整个系统施加的特定的应用和设计约束。
通过举例的方式,元素、或元素的任何部分、或元素的任何组合可以实现为包括一个或多个处理器(其还可以称为处理单元)的“处理系统”。处理器的示例包括微处理器、微控制器、图形处理单元(GPU)、通用GPU(GPGPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上系统(SOC)、基带处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑、分立硬件电路和被配置为执行贯穿本公开内容所描述的各种功能的其他适合的硬件。处理系统中的一个或多个处理器可以执行软件。软件可以广泛地解释为意指指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用、软件应用、软件封装、例程、子例程、对象、可执行文件、执行线程、过程、功能等,无论是称为软件、固件、中间件、微码、硬件描述语言还是其他。
术语“应用”可以指的是软件。如本文中描述的,一个或多个技术可以指的是被配置为执行一个或多个功能的应用(例如,软件)。在这样的示例中,应用可以被存储在存储器中(例如,处理器的片上存储器、系统存储器或任何其他存储器)。本文中描述的硬件(诸如处理器)可以被配置为执行应用。例如,应用可以被描述为包括代码,所述代码当通过硬件执行时使得硬件执行本文中描述的一个或多个技术。作为示例,硬件可以从存储器存取代码以及执行从存储器存取的代码,以执行本文中描述的一个或多个技术。在一些示例中,本公开内容中标识了组件。在这样的示例中,组件可以是硬件、软件或其组合。组件可以是单独的组件或单个组件的子组件。
在本文中描述的一个或多个示例中,所描述的功能可以是在硬件、软件或其任何组合中实现的。如果是在软件中实现的,则功能可以被存储在计算机可读介质上或被编码为在计算机可读介质上的一个或多个指令或代码。计算机可读介质包括计算机存储介质。存储介质可以是可以由计算机存取的任何可用的介质。以示例而非限制的方式,这样的计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘存储、磁盘存储、其他磁存储设备、计算机可读介质的上述类型的组合、或可以用于以可以由计算机存取的指令或数据结构的形式存储计算机可执行代码的任何其他介质。
如本文中使用的,术语“内容”的实例可以是指“图形内容”、“图像”等,而不管术语是否用作形容词、名词或其他词性。在一些示例中,如本文中使用的,术语“图形内容”可以是指由图形处理管线的一个或多个过程产生的内容。在另外的示例中,如本文中使用的,术语“图形内容”可以是指由被配置为执行图形处理的处理单元产生的内容。在另外的示例中,如本文中使用的,术语“图形内容”可以是指由图形处理单元产生的内容。
编译器可以基于着色器类型和性能统计来选择波大小(例如,1x或2x),并且可以与驱动器通信以设置流式处理器(SP)波大小背景寄存器。然而,因为着色器执行是高度动态的,所以可能难以总是选择最佳波大小(例如,与更短的总执行时间相关联的波大小)。在一个或多个方面中,可以消除编译器在选择波大小中的作用,可以使用GPR分配中的统一1x波粒度,可以在执行时间期间每个指令动态地改变波大小。因此,由于可以针对两个或更多个不同波执行单个指令,所以指令提取可以更高效。由于可以对紧邻的单个区域中的成对或成组波执行纹理处理和加载/存储操作,因此存储器和高速缓存利用可以更高效。
图1是示出被配置为实现本公开内容的一个或多个技术的示例内容生成系统100的框图。内容生成系统100包括设备104。设备104可以包括用于执行本文中描述的各种功能的一个或多个组件或电路。在一些示例中,设备104的一个或多个组件可以是SOC的组件。设备104可以包括被配置为执行本公开内容的一个或多个技术的一个或多个组件。在所示的示例中,设备104可以包括处理单元120、内容编码器/解码器122和系统存储器124。在一些方面中,设备104可以包括多个可选的组件(例如,通信接口126、收发器132、接收器128、发射器130、显示处理器127和一个或多个显示器131)。显示器131可以指的是一个或多个显示器131。例如,显示器131可以包括单个显示器或多个显示器,所述显示器可以包括第一显示器和第二显示器。第一显示器可以是左眼显示器,以及第二显示器可以是右眼显示器。在一些示例中,第一显示器和第二显示器可以接收用于在其上呈现的不同的帧。在其他示例中,第一显示器和第二显示器可以接收用于在其上呈现的相同的帧。在进一步的示例中,图形处理的结果可能不被显示在设备上,例如,第一显示器和第二显示器可能不接收用于在其上呈现的任何帧。反而,帧或图形处理结果可以被转移到另一设备。在一些方面中,这可以称为分割渲染。
处理单元120可以包括内部存储器121。处理单元120可以被配置为使用图形处理管线107来执行图形处理。内容编码器/解码器122可以包括内部存储器123。在一些示例中,设备104可以包括处理器,该处理器可以被配置为在由一个或多个显示器131显示帧之前对由处理单元120生成的一个或多个帧执行一个或多个显示处理技术。虽然示例内容生成系统100中的处理器被配置为显示处理器127,但是应当理解,显示处理器127是处理器的一个示例,并且其他类型的处理器、控制器等可以用作用于显示处理器127的替代。显示处理器127可以被配置为执行显示处理。例如,显示处理器127可以被配置为对由处理单元120生成的一个或多个帧执行一个或多个显示处理技术。一个或多个显示器131可以被配置为显示或另外呈现由显示处理器127处理的帧。在一些示例中,一个或多个显示器131可以包括以下各项中的一个或多个:液晶显示器(LCD)、等离子体显示器、有机发光二极管(OLED)显示器、投影显示设备、增强现实显示设备、虚拟现实显示设备、头戴式显示器或任何其他类型的显示设备。
在处理单元120和内容编码器/解码器122之外的存储器(诸如系统存储器124)可以是对于处理单元120和内容编码器/解码器122而言可存取的。例如,处理单元120和内容编码器/解码器122可以被配置为从外部存储器(诸如系统存储器124)读取和/或写入该外部存储器。处理单元120可以通过总线通信地耦合到系统存储器124。在一些示例中,处理单元120和内容编码器/解码器122可以通过总线或经由不同的连接通信地耦合到内部存储器121。
内容编码器/解码器122可以被配置为从诸如系统存储器124和/或通信接口126的任何源接收图形内容。系统存储器124可以被配置为存储所接收的编码或解码的图形内容。内容编码器/解码器122可以被配置为例如从系统存储器124和/或通信接口126以经编码的像素数据的形式接收经编码的或解码的图形内容。内容编码器/解码器122可以被配置为对任何图形内容进行编码或解码。
内部存储器121或系统存储器124可以包括一个或多个易失性或非易失性存储器或存储设备。在一些示例中,内部存储器121或系统存储器124可以包括RAM、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、可擦除可编程ROM(EPROM)、EEPROM、闪存、磁性数据介质或光存储介质或任何其他类型的存储器。根据一些示例,内部存储器121或系统存储器124可以是非暂时性存储介质。术语“非暂时性”可以指示存储介质不体现在载波或传播的信号中。然而,术语“非暂时性”不应当被解释为意指内部存储器121或系统存储器124是不可移动的或其内容是静态的。作为一个示例,可以将系统存储器124从设备104中移除以及移动到另一设备。作为另一示例,系统存储器124可以不是从设备104可移除的。
处理单元120可以是CPU、GPU、GPGPU或可以被配置为执行图形处理的任何其他处理单元。在一些示例中,可以将处理单元120集成到设备104的主板中。在进一步的示例中,处理单元120可以存在于安装在设备104的主板的端口中的显卡上,或可以另外并入被配置为与设备104互操作的外围设备内。处理单元120可以包括一个或多个处理器(诸如一个或多个微处理器)、GPU、ASIC、FPGA、算术逻辑单元(ALU)、DSP、分立逻辑、软件、硬件、固件、其他等效的集成或分立的逻辑电路、或其任何组合。如果所述技术是在软件中部分地实现的,则处理单元120可以将针对软件的指令存储在适合的、非暂时性计算机可读存储介质(例如,内部存储器121)中,以及可以使用一个或多个处理器来执行硬件中的指令,以执行本公开内容的技术。上述内容中的任何内容(包括硬件、软件、硬件和软件的组合等)可以被认为是一个或多个处理器。
内容编码器/解码器122可以是被配置为执行内容解码的任何处理单元。在一些示例中,内容编码器/解码器122可以集成到设备104的主板中。内容编码器/解码器122可以包括一个或多个处理器,诸如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)算术逻辑单元(ALU)、数字信号处理器(DSP)、视频处理器、离散逻辑、软件、硬件、固件、其他等效集成或离散逻辑电路,或其任何组合。如果技术是部分地以软件实现的,则内容编码器/解码器122可以将用于软件的指令存储于合适的、非暂时性计算机可读存储介质(例如,内部存储器123)中,并且可以使用一个或多个处理器来执行硬件中的指令以执行本公开内容的技术。上述内容中的任何内容(包括硬件、软件、硬件和软件的组合等)可以被认为是一个或多个处理器。
在一些方面中,内容生成系统100可以包括通信接口126。通信接口126可以包括接收器128和发射器130。接收器128可以被配置为执行本文中相对于设备104描述的任何接收功能。此外,接收器128可以被配置为接收来自另一设备的信息,例如眼睛或头部位置信息、渲染命令和/或位置信息。发射器130可以被配置为执行本文中相对于设备104描述的任何发送功能。例如,发射器130可以被配置为向另一设备发送信息,所述信息可以包括针对内容的请求。可以将接收器128和发射器130组合成收发器132。在这样的示例中,收发器132可以被配置为执行本文中相对于设备104描述的任何接收功能和/或发送功能。
再次参考图1,在某些方面中,处理单元120可以包括调度器198,该调度器198被配置为将一个或多个GPU工作负载分配给多个波时隙中的一个或多个波时隙。调度器198可以被配置为选择多个执行时隙中的第一执行时隙以用于执行一个或多个GPU工作负载。该选择可以基于多个粒度中的一个。调度器198可以被配置为在所选择的第一执行时隙处以多个粒度中的一个粒度执行一个或多个GPU工作负载。尽管以下描述可以集中于图形处理,但是本文描述的概念可以适用于其他类似的处理技术。
设备(诸如设备104)可以指的是被配置为执行本文中描述的一个或多个技术的任何设备、装置或系统。例如,设备可以是服务器、基站、用户设备、客户端设备、站、接入点、计算机,诸如个人计算机、台式计算机、膝上型计算机、平板计算机,计算机工作站、或大型计算机、最终产品、装置、电话、智能电话、服务器、视频游戏平台或控制台、诸如便携式视频游戏设备或个人数字助理(PDA)的手持设备、诸如智能手表的可穿戴计算设备、增强现实设备、或虚拟现实设备、非可穿戴设备、显示器或显示设备、电视机、电视机顶盒、中间网络设备、数字媒体播放器、视频流送设备、内容流送设备、车载式计算机、任何移动设备、被配置为生成图形内容的任何设备、或被配置为执行本文中描述的一个或多个技术的任何设备。本文中的过程可以描述为由特定的组件(例如,GPU)来执行的,但是在其他实施例中,本文中的过程可以是使用符合所公开的实施例的其他组件(例如,CPU)来执行的。
GPU可以在GPU管线中处理多种类型的数据或数据分组。例如,在一些方面,GPU可以处理两种类型的数据或数据分组,例如背景寄存器分组和绘制调用数据。背景寄存器分组可以是一组全局状态信息,例如关于全局寄存器、着色程序或常数数据的信息,其可以调节将如何处理图形背景。例如,背景寄存器分组可以包括关于颜色格式的信息。在背景寄存器分组的一些方面中,可以存在指示哪个工作负载属于背景寄存器的位。此外,可以存在同时和/或并行运行的多个功能或编程。例如,功能或编程可以描述某个操作,例如色彩模式或色彩格式。因此,背景寄存器可定义GPU的多个状态。
背景状态可以用于确定个体处理单元(例如,顶点提取器(VFD)、顶点着色器(VS)、着色器处理器或几何处理器)如何起作用,和/或处理单元在什么模式下起作用。为了这样做,GPU可以使用背景寄存器和编程数据。在一些方面中,GPU可以基于模式或状态的背景寄存器定义而在管线中生成工作负载(例如,顶点或像素工作负载)。某些处理单元(例如,VFD)可以使用这些状态来确定某些功能,例如,如何组装顶点。由于这些模式或状态可以改变,因此GPU可能需要改变对应的背景。另外,对应于模式或状态的工作负载可以遵循改变的模式或状态。
图2示出了根据本公开内容的一种或多种技术的示例GPU 200。如图2中所示,GPU200包括命令处理器(CP)210、绘制调用分组212、VFD 220、VS222、顶点高速缓存(VPC)224、三角形设置引擎(TSE)226、光栅化器(RAS)228、Z过程引擎(ZPE)230、像素内插器(PI)232、片段着色器(FS)234、渲染后端(RB)236、L2高速缓存(UCHE)238和系统存储器240。尽管图2显示GPU 200包括处理单元220-238,但是GPU 200可以包括多个另外的处理单元。另外,处理单元220-238仅仅是示例,并且根据本公开内容的GPU可以使用处理单元的任何组合或顺序。GPU 200还包括命令缓冲器250、背景寄存器分组260和背景状态261。
如图2所示,GPU可以利用CP(例如CP 210)或硬件加速器来将命令缓冲器解析为背景寄存器分组(例如背景寄存器分组260)和/或绘制调用数据分组(例如绘制调用分组212)。CP 210然后可以通过单独的路径将背景寄存器分组260或绘制调用数据分组212发送到GPU中的处理单元或块。此外,命令缓冲器250可以交替背景寄存器和绘制调用的不同状态。例如,命令缓冲器可以以以下方式构造:背景N的背景寄存器、背景N的(一个或多个)绘制调用、背景N+1的背景寄存器和背景N+1的(一个或多个)绘制调用。例如,如果命令缓冲器包括3个绘制,那么命令缓冲器可以按此次序包括以下数据:绘制#0背景寄存器、绘制调用#0、绘制#1背景寄存器、绘制调用#1、绘制#2背景寄存器和绘制调用#2。
本文描述的方面可涉及多线程流式处理器(例如,也被称作流式处理器),其可以是设备(例如,GPU)中的一种类型的处理器或可以包括于处理器中。在一个或多个配置中,流式处理器可以被配置为获得并调度与线程相关联的指令的执行,并且可以包括一组寄存器(例如,通用寄存器(GPR))或具有对一组寄存器(例如,通用寄存器(GPR))的访问。GPR可以包括一个或多个寄存器(例如GPR块、GPR空间、GPR覆盖区等),其可以存储(例如临时存储)与指令的执行相关联的数据,并且可以是易失性或非易失性存储器。另外,流式处理器可以包括用于执行计算的一个或多个执行单元(例如,算术逻辑单元(ALU))、与存储器操作相关联的一个或多个单元等。
流式处理器可以执行多个线程。在一些实例中,这些线程可以根据特定代码(例如,指令)分组在一起,并且分组的线程可以并行执行。例如,一组线程(例如,线程束、波前、波等,在下文中称为波)可以包括特定数量的线程,其中,每个线程重复执行代码的相同部分,诸如着色器(例如,与以特定的唯一方式渲染图像相关联的指令)或内核(例如,计算内核)。流式处理器可以并行地执行(1)多个线程和/或(2)多个线程组,并且可以在任何情况下应用本文描述的技术。作为示例,流式处理器可以执行多个线程组,其中,每个线程组对应于代码的相应部分的执行。例如,流式处理器可以在线程组之间交织,使得每个组可以被执行。作为另一示例,流式处理器可以执行多个线程,其中,每个线程对应于代码的相应部分的执行。为了方便,线程在本文中可以被称为特定线程或一组线程,两者都与代码的特定部分的执行相关联。
在流式处理器中,纹理操作可能具有相对长的延迟。延迟可以是图形处理器的性能的重要方面。可以通过使更多线程在GPU上执行来减轻此类延迟,使得一些线程可以执行ALU操作而其他线程等待纹理操作完成。这可以被称为“延迟隐藏”。另外,波时隙可以是由流式处理器用来调度EU(例如,ALU)的工作的物理存储设备。“波”可以表示EU的经调度的工作的最小单元,并且可以包括多个线程(例如,64个线程)。
图3示出了根据本公开内容的一种或多种技术的示例GPU 300。更具体地,图3示出了GPU 300中的流式处理器系统。如图3所示,GPU 300包括高级定序器(HLSQ)302、纹理处理器(TP)306、UCHE 308和RB 310。GPU 300还包括流式处理器320、定序器324、波调度器和背景寄存器328、纹理单元(TEX)或负载控制器330、指令高速缓存332、EU 334、通用寄存器(GPR)336和分发器338。波调度器和背景寄存器328还可以包括一个或多个波时隙。
如图3所示,流式处理器320可以包括功能单元或块,例如,EU 334或定序器324。EU334可以执行或处理GPU的一些功能。定序器324可以分配资源和本地存储器,以及存储本地存储器。此外,定序器324可以分配波时隙和任何相关联的GPR 336空间。例如,当HLSQ 302向流式处理器320发出像素区块工作负载时,定序器324可以分配波时隙或GPR 336空间。在一些方面中,波调度器328可以执行像素着色器,或向EU 334发出指令。EU 334还可以包括ALU和/或基本功能单元(EFU)。此外,TEX或负载控制器330可以被认为是执行单元。
另外,TEX或负载控制器330可以对应于一个或多个单元。例如,TEX 330可以执行纹理提取和/或负载控制器330可以执行存储器提取。在一些方面中,指令高速缓存332可以存储待执行的工作负载或程序。如图3中进一步所示,流式处理器320可以与外部块(例如,HLSQ 302、TP 306、UCHE 308和RB 310)接口连接。这些块302、306、308和310可以利用用户提供的输入,和/或流式处理器可以向这些块或存储器输出结果(例如,元数据,诸如由流式处理器基于用户提供的输入生成的纹理缓冲器)。此外,在一些示例中,流式处理器可以从存储器取回合适或适当的数据。
如图3所示,GPU 300中的每个单元或块可以向其他块发送数据或信息。例如,HLSQ302可以向定序器324发送顶点线程、顶点属性、像素线程和/或像素属性。TP 306可以向TEX330发送纹理数据。TP 306还可以从TEX 330接收纹理请求。此外,TP 306可以向UCHE 308发送请求并从UCHE 308接收纹理元素。UCHE 308还可以向TEX 330发送存储器和从TEX 330接收存储器,以及向RB 310发送存储器和从RB 310接收存储器。此外,RB 310可以例如经由分发器338从GPR 336接收以颜色形式的输出。VPC 312也可以例如经由分发器338从GPR 336接收以顶点形式的输出。GPR 336也可以将临时数据发送到EU 334和从EU 334接收临时数据。此外,EU 334可以向波调度器328发送地址或谓词信息(谓词信息可以与谓词相关,谓词可以是其结果可以影响控制流的条件)。TEX或负载控制器330也可以向GPR 336发送数据/从GPR 336接收数据。此外,TEX或负载控制器330可以将信息更新到指令高速缓存332。TEX或负载控制器330也可以从定序器324接收属性数据和从波调度器328接收同步信息。此外,波调度器328可以接收来自指令高速缓存332的解码信息(例如,从指令解码的指令类型,其可以通知SP(特别地,波调度器)关于向其发出指令的执行单元)和来自定序器324的线程数据。
如上所述,GPU 300可以处理工作负载,例如像素或顶点工作负载。在一些方面,这些工作负载可以对应于或被称为波或波形成。例如,每个工作负载或操作可以使用一组顶点或像素作为波。例如,每个波可以包括多个不同的组件(线程、光纤)来执行工作负载或操作,例如64或128个组件(线程、光纤)。在一些实例中,GPU 300可以将波形成(例如,像素或顶点工作负载)发送到波形调度器328以供执行。对于顶点工作负载,GPU可执行顶点变换。对于像素工作负载,GPU可以执行像素着色或照明。
如上所述,上述过程或工作负载(例如,流式处理器320中的过程或工作负载)中的每一个可以包括波形成。例如,在顶点工作负载期间,多个顶点(例如,三个顶点)可以形成三角形或图元。GPU然后可以执行这些顶点的变换,使得顶点可以变换成波。为了执行该变换,GPU可以利用多个波时隙,例如,以帮助将顶点变换成波。此外,为了执行工作负载或程序,GPU还可以分配GPR空间,例如,包括用于存储任何临时数据的临时寄存器。另外,定序器324可以分配GPR 336空间和一个或多个波时隙以便执行波。例如,可以在发出像素或顶点工作负载时分配GPR 336空间和一个或多个波时隙。
在一些方面中,波调度器328可以处理像素工作负载和/或向各种执行单元(例如,EU 334)发出指令。波调度器328还可以帮助确保指令之间的数据依赖性,例如,由于管线延迟导致的ALU操作数之间的数据依赖性和/或基于同步机制的纹理样本返回数据依赖性。另外,波调度器328可以具有负载引用计数器(LRC)以对向TP 306或UCHE 308发出的未完成的纹理或存储器请求以及对应的数据返回请求进行计数。在一些方面中,如果LRC值大于零,则这可以指示存在未完成的数据。因此,依赖于未完成的数据的返回的指令可能不能够执行直到LRC值减小到零。在着色器处理完成之后,流式处理器320可以将处理结果发送到下游块(例如,RB 310)。
图4是示出波时隙和GPR的分配的示意图400。图4示出了由图3中的定序器324进行的GPR空间和波时隙分配的示例。可以利用两个波大小选项。根据第一选项的波(其可以被称为1x波)可以包括每个波64个光纤(线程、组件)。根据第二选项的波(其可以被称为2x波)可以包括每个波128个光纤(线程、组件)。顶点工作负载可以利用1x波,而像素工作负载可以利用2x波。编译器可以基于着色器类型和性能统计来选择波大小(例如,1x或2x),并且可以与驱动器通信以设置SP波大小背景寄存器。
如图4所示,定序器可以基于波大小来构建GPR时隙映射。在一个或多个配置中,硬件波时隙(H波时隙)和GPR可以被划分为多个集群。例如,H波时隙和GPR可以被划分为2个集群、3个集群、4个集群等。图4示出了这样的示例集群,其可以包括属于H波队列#0(例如,H波#0、H波#2、…、H波#14)中的波时隙和GPR组#0中的GPR。另外的集群可以包括另外的H波队列和GPR组。波时隙和GPR组或集合可以基于着色器(例如,顶点着色器(VS)或片段着色器(FS))被静态地一对一地绑定。换句话说,每个波时隙可以对应于一组GPR。具体地,用于1x波(例如,用于VS)的波时隙可以被绑定到具有1x GPR覆盖区的GPR集合,并且用于2x波(例如,用于FS)的波时隙可以被绑定到具有2x GPR覆盖区的GPR集合。在中间,2x波(例如,像素工作负载波)可能不利用GPR 5-15(即,11个GPR空间)。波时隙和GPR集合的每个集群可以与ALU相关联。在一个或多个示例中,每个ALU可以每周期执行64个全精度ALU操作(例如,32位操作)或128个半精度ALU操作(例如,32位操作)。图4中所示出的波时隙和GPR的特定配置是示例性的,并不限制本公开内容。尽管示出了一个H波队列、一个GPR组和一个ALU,但本公开内容不限于此。例如,可以提供两个H波队列、两个GPR组和两个ALU。在其他不同配置中,可以提供多于两个H波队列、多于两个GPR组和多于两个ALU。
图5是示出示例GPR布局的示意图500。如图5中所示,1x波的波时隙及2x波的波时隙可以与不同寻址方案和布局相关联。可以执行指令,例如加法f16 HR0.0、HR0.1、HR1.1(浮动16格式数据加法,其中,HR0.0(目的地操作数)=HR0.1(源操作数0或src0)+HR1.1(源操作数1或src1))。HR可以是指半精度寄存器(其可以保存16位数据)。P可以代表像素。例如,P0-3可以对应于像素0至3,并且P32-35可以对应于像素32至35。在图5中,HR0.1和HR1.1可以在同一物理GPR库中。如果GPR库具有2个读取端口,那么硬件可以提供用于P0-3 src0(源0)(HR0.1)读取的一个读取端口和用于P0-3 src1(源1)(HR1.1)读取的一个读取端口。因此,当以2x速率对2x波执行半精度ALU操作时,可以避免GPR库冲突。如果P32-35使用与P0-3相同的GPR库,那么除非为GPR库提供4个读取端口,否则P0-3和P32-35可能不会在一个周期中执行。图5中所示出的特定GPR布局是示例性的,并且不限制本公开内容。尽管示出了1x波布局和2x波布局,但是本公开内容不限于此。例如,还可以提供用于其他大小的波的GPR布局。在一些配置中,可以提供一个GPR布局或组。在其他不同配置中,可以提供多于两个GPR布局或组。
示例1x波和2x波之间的比较可以概述在下面的表1中。
1x波 2x波
每个波的光纤 n 2n
全ALU速率 1x 1x
半ALU速率 1x 2x
每个波的GPR分配 1x 2x
指令高速缓存提取频率 2x 1x
每个uSPTP的最大光纤容量 1x 2x
执行发散性 更少
延迟隐藏能力 更好
TPL1未命中率 更低
GPR空间浪费 更少
表1
如表中所示,对于半(单)精度ALU操作,GPU可以在一个周期中以1x波执行一个指令,并且可以在两个周期中以2x波执行一个指令。吞吐量可以相同。主要区别在于每个集群可以对128个半精度ALU操作并行化,因此,1x波可以利用每次发出50%的ALU单元或ALU吞吐量,而2x波可以利用100%的ALU单元或ALU吞吐量。
对于GPR分配,1x波可以与比2x波更少的分段相关联。对于从指令高速缓存的提取,对于1x波可以执行的提取是对于2x波执行的提取的两倍。在每个微SP(uSPTP)内可以最多有16个物理波时隙。2x波可以保持高达1x波的两倍的像素。
与2x波相比,1x波可以与更少的执行发散性相关联(例如,与2x波相比,1x波可能不太可能与“if”块和“else”块两者相关联)。因此,1x波可以适用于复杂着色器(例如,光线追踪遍历着色器)。另一方面,2x波可以适用于隐藏延迟,因为可以利用2x波发出更多像素(与1x波相比)以隐藏更长的存储器获取延迟。
与2x波相比,1x波可以与更低的TPL1高速缓存(TPL1)未命中率相关联,因为波区块大小在1x波中比在2x波中更小。此外,与2x波相比,1x波可以与更少的GPR空间浪费相关联,因为与在2x波中相比,1x波与更少的分段相关联。对1x波和2x波的引用是示例性的,并且不限制本公开内容。本文中与1x波和2x波相关联的描述可以更一般地应用于例如更小的波和更大的波。
如上所述,编译器可以基于着色器统计来选择波大小。然而,因为着色器执行是高度动态的,所以可能难以总是选择最优波大小(例如,与更短的总执行时间相关联的波大小)。在利用常用着色器进行的一次模拟中,编译器可以选择大约60%的时间的最优波大小。此外,着色器执行对于复杂着色器可能变得甚至更动态,并且最优波大小可以每指令或每波改变。例如,在分支块、样本(纹理)块等处使用1x波并且在其他情况下使用2x波可以是有益的。
图6示出了根据本公开内容的一种或多种技术的示例GPU 600。如图6所示,GPU600包括多个执行单元,例如流程控制分支612、EFU 614、ALU 616、TEX 618和负载存储设备(LDST)620。GPU 600可以包括多个附加执行单元,因为执行单元612-620仅仅是示例,并且本文中GPU可以使用执行单元的任何组合或顺序。GPU 600还可以包括数据交叉开关630,其也可以称为多波管理器630。此外,GPU 600包括多个波时隙(H波时隙),例如,波时隙650。为了便于示出,在图6中没有为波时隙分配个体附图标记。GPU 600可以包括任何数量的不同波时隙,如波时隙650。GPU 600还可以包括多个执行时隙(E波时隙),例如,执行时隙635。在图6中没有为执行时隙分配个体附图标记。GPU 600可以包括多个不同的执行时隙,因为执行时隙635仅仅是示例。通常,GPU 600可以包括比波时隙650更少的执行时隙635。在一些方面中,执行时隙635和波时隙650可以是波调度器的一部分。
如图6所示,GPU 600中的每个组件可以与多个其他组件通信。例如,执行单元612-620中的每一个可以向数据交叉开关630发送或从数据交叉开关630接收数据或指令(例如,请求或授权)。执行时隙635中的每一个可以向数据交叉开关630发送或从数据交叉开关630接收数据或指令(例如,请求或授权)。此外,在集群内,执行时隙中的每一个可以经由交换机(例如,16至4交换机)向波时隙发送或从波时隙接收数据或指令(例如,包括背景状态或值的背景寄存器)。例如,执行时隙635中的每一个可以经由16至4交换机640向波时隙650发送或从波时隙650接收数据或指令。执行单元612到620中的每一个(例如,流程控制分支612、EFU 614、ALU 616、TEX 618和LDST 620)也可以向执行时隙635发送或从执行时隙635接收数据或指令。
执行时隙635和波时隙650可以形成分层结构。可以首先将GPU工作负载波加载到波时隙650中。可以例如基于优先级选择波时隙650中的波以供执行。可以将经选择以供执行的波从对应波时隙复制到执行时隙635中的一个或多个。特别地,可以将包括背景状态或值的相关联背景寄存器从对应波时隙复制到执行时隙635中的一个或多个。基于指令,可以选择适当的EU以对执行时隙635中的波执行操作。一旦执行完成或暂停,就可以将波从对应的执行时隙635复制回到波时隙650中的一个或多个。特别地,可以将包括背景状态或值的相关联的背景寄存器从对应的执行时隙复制回到波时隙650中的一个或多个。
如上所述,图6示出了SP调度流程。在波调度器内部,等待波队列可以存储在波时隙650中,其可以构成波时隙层级的底层。可以在波时隙650处执行输入和存储器数据累积。在一个或多个示例中,在使用1x和2x波大小两者的配置中,每个波时隙可以物理地容纳128个光纤,并且在运行时可以基于由编译器提供的波大小设置来保持64个光纤(即,1x波)或128个光纤(即,2x波)。在一种配置中,每个集群可以包括8个波时隙。执行时隙可以在层级中位于波时隙上方。在一种配置中,每个集群可以包括4个执行时隙,每个执行时隙还可以物理地容纳128个光纤。执行时隙可以被配置为从1级(L1)指令高速缓存提取指令并向EU发出指令。在同一集群内,交换机可以位于波时隙和执行时隙之间并且连接到波时隙和执行时隙。交换机可以包括切换逻辑,用于将波移入和/或移出执行时隙。在一种配置中,每个SP可以包括两个这样的集群以独立地服务于两个ALU/ALU集群。尽管在图6中示出了一个集群,但是本公开内容不限于此。在一些配置中,可以提供多于一个集群。每个集群可以包括对应的一组波时隙、对应的交换机、对应的一组执行时隙和对应的ALU。
在一种新颖的配置中,可以利用均匀的波大小。例如,均匀的波大小可以对应于64个光纤(例如,等同于1x波)。因此,每个波时隙可以物理地容纳64个光纤,并且在运行时可以保持64个光纤。利用如上所述的现有背景存储设备,每个集群可以包括16个而不是8个波时隙。执行时隙可以保持相同。换句话说,每个集群可以包括4个执行时隙,每个执行时隙可以物理地容纳128个光纤。图6中所示出的波时隙和执行时隙的特定配置是示例性的,并且不限制本公开内容。
图7是示出根据本公开内容的一种或多种技术的波时隙和GPR的示例分配的示意图700。在一些配置中,硬件波时隙和GPR可以被划分为多个集群。例如,硬件波时隙和GPR可以被划分为2个集群、3个集群、4个集群等。图7示出了这样的示例集群,其可以包括属于H波队列#0(例如,H波#0、H波#2、…、H波#30)中的波时隙和GPR组#0中的GPR。波时隙和GPR集合的每个集群可以与ALU相关联。在一个或多个示例中,每个ALU可以每周期执行64个全精度ALU操作或128个半精度ALU操作。因为所有波时隙都是1x波时隙,所以可以减少浪费的GPR空间(在所示示例中,GPR 5-9)。在每个集群内,波时隙和对应的GPR可以被划分为偶数(第一)和奇数(第二)波时隙和GPR。因此,传入波可以以交替的偶数(第一)和奇数(第二)模式顺序地填充波时隙和GPR。图7中所示出的波时隙、GPR和ALU的特定配置是示例性的,并不限制本公开内容。尽管示出了一个H波队列、一个GPR组和一个ALU,但本公开内容不限于此。例如,可以提供两个H波队列、两个GPR组和两个ALU。在其他不同配置中,可以提供多于两个H波队列、多于两个GPR组和多于两个ALU。
图8是示出根据本公开内容的一种或多种技术的示例GPR布局的示意图800。在一个或多个示例中,定序器可以将标记添加到传入波以将两个连续(背对背)传入波指示为波对。波对中的波可以存储在连续或非连续波时隙中。如上文所描述,波对可以采用第一(#0)GPR布局和第二(#1)GPR布局,这可以有助于避免GPR端口冲突,并且可以允许以2x速率执行半精度ALU操作。SP(特别地,波调度器)可以基于该指令动态地选择是将单个波还是波对复制到每个执行时隙以供执行。关于是否复制单个波或波对的决定可以对应于关于工作负载执行粒度的决定。将单个波复制到每个执行时隙以供执行可以对应于第一(更小)粒度。将波对复制到每个执行时隙以供执行(其可以称为超级波模式执行)可以对应于第二(更大)粒度。当波与纹理(样本)块或分支块相关联时,SP(特别是波调度器)可以选择第一粒度,并且当波不与纹理(样本)块或分支块相关联时,可以选择第二粒度。因此,在一种配置中,SP(特别地,波调度器)可以开始以第二粒度(即,在波对/超波模式下)执行波。当遇到分支块或纹理(样本)块时,SP(特别地,波调度器)可以切换到以第一粒度(即,在单波模式下)执行波。纹理块或分支块可以是指程序段或一组指令,其中,纹理块可以是指一组样本指令,并且分支块可以指“if-then-else”程序块。特别地,利用第一粒度,SP可以在一个执行时隙中顺序地执行单波,或可以在单独的(例如,两个)执行时隙中并行地执行波,其中,单个波在每个执行时隙中执行。在分支块或纹理(样本)块完成之后,SP(特别是波调度器)可以切换回以第二粒度(即,在波对/超级波模式下)执行剩余波。在图8中,两个GPR布局可以涉及逻辑GPR到物理GPR库的映射。例如,GPR布局#0的HR0.0和GPR布局#1的HR0.2可以使用相同的GPR库以避免GPR库冲突。特别地,当执行与同一半ALU指令(例如,add.f16 HR0.0、HR0.1、HR1.1)相关联的波对,并且该波对中的一个波使用GPR布局#0并且另一个波使用GPR布局#1时,可以避免GPR库冲突,因为可以分别经由端口src0和src1读取所述波。图8中所示出的特定GPR布局是示例性的,并且不限制本公开内容。尽管示出了两个GPR布局,但是本公开内容不限于此。例如,可以提供一个GPR布局或组。在其他不同配置中,可以提供多于两个的GPR布局或组。波的分组和相关联的粒度可以对应于可以提供的GPR布局的数量,例如,代替被分组为波对,传入波可以被分组为波组,每个波组可以包括3个波、4个波、5个波等。每个波组中的波的数量可以对应于可以提供的GPR布局的数量。
在上述配置中,每个执行时隙的容量与每个波时隙的容量之间的比率是2:1(例如,128个光纤:64个光纤)。因此,两个波执行粒度是可能的:在每个执行时隙中执行单个波的第一粒度,以及在每个执行时隙中执行波对的第二粒度。在另外的配置中,可以使用每个执行时隙的容量与每个波时隙的容量之间的各种比率。例如,比率可以是4:1、8:1、16:1等。随着比率增加,可能的波执行粒度的数量也可以增加。例如,如果每个执行时隙的容量与每个波时隙的容量之间的比率是4:1(例如,128个光纤:32个光纤),则四个波执行粒度是可能的。四个波执行粒度可以分别对应于在每个执行时隙中执行一个、两个、三个或四个波。本文已经描述的比率仅仅是示例。可以利用每个执行时隙的容量和每个波时隙的容量之间的任何合适的比率。
图9是示出根据本公开内容的一种或多种技术的图形处理的示例方法的通信流程900的示意图。GPU组件902可以对应于图3中的波调度器328。在920处,GPU组件902可以在运行时从至少一个GPU组件904接收一个或多个GPU工作负载922。
在一种配置中,一个或多个GPU工作负载922中的每个GPU工作负载可以包括统一数量的光纤。
在930处,GPU组件902可以将一个或多个GPU工作负载922分配给多个波时隙中的一个或多个波时隙。
在一种配置中,多个波时隙可以包括多个第一波时隙和多个第二波时隙。可以基于多个第一波时隙和多个第二波时隙来分配一个或多个GPU工作负载。
在一种配置中,一个或多个GPU工作负载922中的第一GPU工作负载可以被分配给多个第一波时隙中的第一波时隙。一个或多个GPU工作负载922中的第二GPU工作负载可以被分配给多个第二波时隙中的第二波时隙。在一种配置中,第一GPU工作负载和第二GPU工作负载可以在序列中是连续的。在一种配置中,第一GPU工作负载和第二GPU工作负载可以与同一指令相关联。
在一种配置中,多个波时隙中的每个波时隙可以与多个GPR中的一组GPR相关联。
在940处,GPU组件902可以基于一个或多个GPU工作负载922是与纹理块还是分支块相关联或者与其不相关联来选择多个粒度中的一个粒度。
在一种配置中,当一个或多个GPU工作负载922与纹理块或分支块相关联时,可以选择第一粒度作为多个粒度中的一个粒度。在一种配置中,当一个或多个GPU工作负载922与纹理块或分支块不相关联时,可以选择第二粒度作为多个粒度中的一个粒度。第一粒度可以小于第二粒度。
在950处,GPU组件902可以选择多个执行时隙中的第一执行时隙以用于执行一个或多个GPU工作负载922。该选择可以基于多个粒度中的一个粒度。
在960处,GPU组件902可以将用于一个或多个GPU工作负载922的背景寄存器复制到第一执行时隙。
在一种配置中,用于一个或多个GPU工作负载的背景寄存器可以与一个或多个GPU工作负载的背景状态相关联。
在970处,GPU组件902可以在所选择的第一执行时隙处以多个粒度中的一个粒度执行一个或多个GPU工作负载922。
在980处,GPU组件902可以将一个或多个GPU工作负载的背景寄存器复制到一个或多个波时隙。
图10是根据本公开内容的一种或多种技术的图形处理的示例方法的流程图1000。该方法可以由如结合图1-3和6-8的方面使用的装置(诸如用于图形处理的装置、GPU、CPU、无线通信设备等)执行。
在1002处,装置可以将一个或多个GPU工作负载分配给多个波时隙中的一个或多个波时隙,如结合图3和6-8中的示例所描述的。参考图9,在930处,GPU组件902可以将一个或多个GPU工作负载922分配给多个波时隙中的一个或多个波时隙。此外,图1中的处理单元120可以执行操作1002。
在1004处,装置可以选择多个执行时隙中的第一执行时隙以用于执行一个或多个GPU工作负载,如结合图3和6-8中的示例所描述的。该选择可以基于多个粒度中的一个粒度。参考图9,在950处,GPU组件902可以选择多个执行时隙中的第一执行时隙以用于执行一个或多个GPU工作负载922。此外,图1中的处理单元120可以执行操作1004。
在1006处,装置可以在所选择的第一执行时隙处以多个粒度中的一个粒度执行一个或多个GPU工作负载,如结合图3和6-8中的示例所描述的。参考图9,在970处,GPU组件902可以在所选择的第一执行时隙处以多个粒度中的一个粒度执行一个或多个GPU工作负载922。此外,图1中的处理单元120可以执行操作1006。
图11是根据本公开内容的一种或多种技术的图形处理的示例方法的流程图1100。该方法可以由如结合图1-3和6-8的方面使用的装置(诸如用于图形处理的装置、GPU、CPU、无线通信设备等)执行。
在1102处,装置可以在运行时从至少一个GPU组件接收一个或多个GPU工作负载,如结合图3和6-8中的示例所描述的。参考图9,在920处,GPU组件902可以在运行时从至少一个GPU组件904接收一个或多个GPU工作负载922。此外,图1中的处理单元120可以执行操作1102。
在一种配置中,一个或多个GPU工作负载中的每个GPU工作负载可以包括统一数量的光纤。
在1104处,装置可以将一个或多个GPU工作负载分配给多个波时隙中的一个或多个波时隙,如结合图3和6-8中的示例所描述。参考图9,在930处,GPU组件902可以将一个或多个GPU工作负载922分配给多个波时隙中的一个或多个波时隙。此外,图1中的处理单元120可以执行操作1104。
在一种配置中,多个波时隙可以包括多个第一波时隙和多个第二波时隙。可以基于多个第一波时隙和多个第二波时隙来分配一个或多个GPU工作负载。
在一种配置中,一个或多个GPU工作负载中的第一GPU工作负载可以被分配给多个第一波时隙中的第一波时隙。一个或多个GPU工作负载中的第二GPU工作负载可以被分配给多个第二波时隙中的第二波时隙。在一种配置中,第一GPU工作负载和第二GPU工作负载可以在序列中是连续的。在一种配置中,第一GPU工作负载和第二GPU工作负载可与同一指令相关联。
在一种配置中,多个波时隙中的每个波时隙可以与多个GPR中的一组GPR相关联。
在1106处,装置可以基于一个或多个GPU工作负载是与纹理块还是分支块相关联或者与其不相关联来选择多个粒度中的一个粒度,如结合图3和6-8中的示例所描述的。参考图9,在940处,GPU组件902可以基于一个或多个GPU工作负载922是与纹理块还是分支块相关联还是与其不相关联来选择多个粒度中的一个粒度。此外,图1中的处理单元120可以执行操作1106。
在一种配置中,当一个或多个GPU工作负载与纹理块或分支块相关联时,可以选择第一粒度作为多个粒度中的一个粒度。在一种配置中,当一个或多个GPU工作负载与纹理块或分支块不相关联时,可以选择第二粒度作为多个粒度中的一个粒度。第一粒度可以小于第二粒度。
在1108处,装置可以选择多个执行时隙中的第一执行时隙以用于执行一个或多个GPU工作负载,如结合图3和6-8中的示例所描述的。该选择可以基于多个粒度中的一个粒度。参考图9,在950处,GPU组件902可以选择多个执行时隙中的第一执行时隙以用于执行一个或多个GPU工作负载922。此外,图1中的处理单元120可以执行操作1108。
在1110处,装置可以将一个或多个GPU工作负载的背景寄存器复制到第一执行时隙,如结合图3和6-8中的示例所描述的。参考图9,在960处,GPU组件902可以将一个或多个GPU工作负载922的背景寄存器复制到第一执行时隙。此外,图1中的处理单元120可以执行操作1110。
在一种配置中,用于一个或多个GPU工作负载的背景寄存器可以与一个或多个GPU工作负载的背景状态相关联。
在1112处,装置可以在所选择的第一执行时隙处以多个粒度中的一个粒度执行一个或多个GPU工作负载,如结合图3和6-8中的示例所描述的。参考图9,在970处,GPU组件902可以在所选择的第一执行时隙处以多个粒度中的一个粒度执行一个或多个GPU工作负载922。此外,图1中的处理单元120可以执行操作1112。
在1114处,装置可以将一个或多个GPU工作负载的背景寄存器复制到一个或多个波时隙,如结合图3和6-8中的示例所描述。参考图9,在980处,GPU组件902可以将一个或多个GPU工作负载的背景寄存器复制到一个或多个波时隙。此外,图1中的处理单元120可以执行操作1114。
在配置中,提供了一种用于图形处理的方法或装置。所述装置可以是GPU、CPU或可以执行图形处理的某一其他处理器。在方面中,所述装置可以是设备104内的处理单元120,或者可以是设备102或另一设备内的一些其他硬件。所述装置可以包括用于将一个或多个GPU工作负载分配给多个波时隙中的一个或多个波时隙的单元。所述装置还可以包括用于选择多个执行时隙中的第一执行时隙以用于执行所述一个或多个GPU工作负载的单元。所述装置还可以包括用于在所选择的第一执行时隙处以所述多个粒度中的所述一个粒度执行所述一个或多个GPU工作负载的单元。所述装置还可以包括用于将所述多个波时隙划分为多个第一波时隙和多个第二波时隙的单元。所述装置还可以包括用于从至少一个GPU组件接收所述一个或多个GPU工作负载的单元。所述装置还可以包括用于基于所述一个或多个GPU工作负载是与纹理块还是分支块相关联还是与其不相关联而选择所述多个粒度中的所述一个粒度的单元。所述装置还可以包括用于将所述一个或多个GPU工作负载的背景寄存器复制到所述第一执行时隙的单元。所述装置还可以包括用于将所述一个或多个GPU工作负载的背景寄存器复制到所述一个或多个波时隙的单元。
返回参考图3和6-10,图形处理器可以将一个或多个GPU工作负载分配给多个波时隙中的一个或多个波时隙。图形处理器可选择多个执行时隙中的第一执行时隙以用于执行所述一个或多个GPU工作负载。该选择可以基于多个粒度中的一个粒度。图形处理器可以在所选择的第一执行时隙处以多个粒度中的一个粒度执行一个或多个GPU工作负载。因此,可以消除编译器在选择波大小方面的作用。可以使用GPR分配中的统一的1x波粒度。该技术可以是简单且鲁棒的,并且可以以1x波粒度实现GPR时隙的乱序(OoO)退出。当超级波模式中的一个波被终止时,可以释放GPR时隙。当超级波模式中的一个波上完成执行时,可以实现OoO退出(这对于常规的2x波可能是不可能的)。在执行时间期间,可以按指令动态地改变波大小。因此,由于可以针对两个不同的波执行单个指令,所以指令提取可以更有效。由于可以在成对的波上对紧邻的单个区域执行纹理处理和加载/存储操作,所以存储器和高速缓存利用可以更有效。例如,与以128个光纤(例如,8x 16个区块)处理波相比,以64个光纤(例如8x 8区块)处理波更不可能引起L1数据高速缓存中的数据脱粒。当波配对时,16位操作可以以2x速率执行,因为在单个周期中,指令可以跨2个波发出。以GPU面积的小增加为代价,本文描述的技术可以递送相对显著的GPU性能增加。
应理解在本文公开的过程、流程图和/或调用流程图中的框/步骤的特定顺序或层级是对示例方法的说明。基于设计偏好,应理解过程、流程图和/或调用流程图中的框/步骤的特定顺序或层级可以重新排列。进一步地,可以组合和/或省略一些框/步骤。也可以添加其他框/步骤。随附的方法权利要求以样本顺序给出各个框/步骤的元素,并且不意味着限于所给出的特定顺序或层级。
提供前面的描述以使得本领域中的任何技术人员能够实践本文中描述的各个方面。对这些方面的各种修改对于本领域技术人员而言将是显而易见的,以及本文中所定义的一般原理可以应用于其他方面。因此,本权利要求书不旨在受限于本文中所示出的各方面,而是要符合与权利要求书所表述的内容相一致的全部范围,其中,除非明确地声明如此,否则提及单数形式的元素不旨在意指“一个和仅仅一个”,而是“一个或多个”。词语“示例性”在本文中用于意指“用作示例、实例或说明”。本文中描述为“示例性”的任何方面不一定解释为优选于其他方面或比其他方面有优势。
除非以其他方式明确地声明,否则术语“一些”指的是一个或多个,以及术语“或”可以解释为“和/或”,其中,背景不指定其他方式。诸如“A、B或C中的至少一个”、“A、B或C中的一个或多个”、“A、B和C中的至少一个”、“A、B和C中的一个或多个”和“A、B、C或其任何组合”的组合包括A、B和/或C的任何组合,以及可以包括倍数的A、倍数的B或倍数的C。特别地,诸如“A、B或C中的至少一个”、“A、B或C中的一个或多个”、“A、B和C中的至少一个”、“A、B和C中的一个或多个”和“A、B、C或其任何组合”的组合可以是仅A、仅B、仅C、A和B、A和C、B和C、或A和B和C,其中,任何这样的组合可以包含A、B或C的一个或多个成员或多个成员。遍及本公开内容所描述的各个方面的元素的、对于本领域中的普通技术人员而言已知或稍后将知的所有结构的和功能的等效物以引用方式明确地并入本文中,以及旨在通过权利要求书来被包含。此外,本文中所公开的内容中没有内容是想要奉献给公众的,不管这样的公开内容是否明确记载在权利要求书中。词语“模块”、“机制”、“元素”、“设备”等可能不是针对词语“单元”的代替。照此,没有权利要求元素要被解释为功能模块,除非元素是明确地使用短语“用于……的单元”来记载的。
在一个或多个示例中,本文中描述的功能可以是在硬件、软件、固件或其任何组合中实现的。例如,尽管术语“处理单元”已经遍及本公开内容被使用,但是这样的处理单元可以是在硬件、软件、固件或其任何组合中实现的。如果本文中描述的任何功能、处理单元、技术或其他模块是在软件中实现的,则本文中描述的功能、处理单元、技术或其他模块可以被存储在计算机可读介质上或作为一个或多个指令或代码通过计算机可读介质被发送。
计算机可读介质可以包括计算机数据存储介质或通信介质,其包括促进对计算机程序从一个地方转移到另一个地方的传送的任何介质。以这种方式,计算机可读介质通常可以对应于:(1)有形的计算机可读存储介质,其是非暂时性的;或(2)诸如信号或载波的通信介质。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器存取以取回用于对在本公开内容中描述的技术的实现的指令、代码和/或数据结构的任何可用的介质。通过举例而非限制的方式,这样的计算机可读存储介质可以包括RAM、ROM、EEPROM、光盘只读存储器(CD-ROM)或其他光盘存储、磁盘存储或其他磁存储设备。磁盘和光盘,如本文中使用的,包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘通常利用激光来光学地复制数据。上述组合也应当被包括在计算机可读介质的范围内。计算机程序产品可以包括计算机可读介质。
本公开内容的技术可以是在各种各样的设备或装置中实现的,包括无线手持设备、集成电路(IC)或一组IC(例如,芯片集)。在本公开内容中描述各种组件、模块或单元,以强调被配置为执行所公开的技术的设备的功能的方面,但是不一定需要由不同的硬件单元来实现。相反,如上所述,各种单元可以是组合在任何硬件单元中的,或是由包括如上所述的一个或多个处理器的一批互操作硬件单元结合适合的软件和/或固件来提供的。相应地,如本文中使用的术语“处理器”可以指的是上述结构中的任何结构或适用于对本文中描述的技术的实现的任何其他结构。此外,所述技术可以是在一个或多个电路或逻辑元件中完全地实现的。
以下方面仅是说明性的,并且可以与本文描述的其他方面或教导组合,但不限于此。
方面1是一种用于图形处理的装置,包括至少一个处理器,所述至少一个处理器耦合到存储器,并且被配置为将一个或多个GPU工作负载分配给多个波时隙中的一个或多个波时隙;选择多个执行时隙中的第一执行时隙以用于执行所述一个或多个GPU工作负载,所述选择基于多个粒度中的一个粒度;以及在所选择的第一执行时隙处以所述多个粒度中的所述一个粒度执行所述一个或多个GPU工作负载。
方面2是根据方面1所述的装置,其中,所述多个波时隙包括多个第一波时隙和多个第二波时隙,所述一个或多个GPU工作负载是基于所述多个第一波时隙和所述多个第二波时隙来分配的,以及所述一个或多个GPU工作负载的第一GPU工作负载被分配给所述多个第一波时隙中的第一波时隙,并且所述一个或多个GPU工作负载的第二GPU工作负载被分配给所述多个第二波时隙中的第二波时隙。
方面3是根据方面2所述的装置,其中,所述第一GPU工作负载和所述第二GPU工作负载在序列中是连续的。
方面4是根据方面2和3中任一项所述的装置,其中,所述第一GPU工作负载和所述第二GPU工作负载与同一指令相关联。
方面5是根据方面1-4中任一项所述的装置,所述至少一个处理器还被配置为:在运行时从至少一个GPU组件接收所述一个或多个GPU工作负载。
方面6是根据方面1-5中任一项所述的装置,所述至少一个处理器还被配置为:基于所述一个或多个GPU工作负载与纹理块或分支块相关联还是与纹理块或分支块不相关联来选择所述多个粒度中的所述一个粒度。
方面7是根据方面6所述的装置,其中,当所述一个或多个GPU工作负载与所述纹理块或所述分支块相关联时,选择第一粒度作为所述多个粒度中的所述一个粒度。
方面8是根据方面7所述的装置,其中,当所述一个或多个GPU工作负载与所述纹理块或所述分支块不相关联时,选择第二粒度作为所述多个粒度中的所述一个粒度,所述第一粒度小于所述第二粒度。
方面9是方面1-8中任一项的装置,所述至少一个处理器还被配置为:将用于所述一个或多个GPU工作负载的背景寄存器复制到所述第一执行时隙,其中,用于所述一个或多个GPU工作负载的所述背景寄存器与所述一个或多个GPU工作负载的背景状态相关联。
方面10是根据方面1-9中任一项所述的装置,所述至少一个处理器还被配置为:将用于所述一个或多个GPU工作负载的背景寄存器复制到所述一个或多个波时隙。
方面11是方面1-10中任一项的装置,其中,所述一个或多个GPU工作负载中的每个GPU工作负载包括统一数量的光纤。
方面12是根据方面1-11中任一项所述的装置,其中,所述多个波时隙中的每个波时隙与多个GPR中的一组GPR相关联。
方面13是根据方面1-12中任一项所述的装置,其中,所述装置是无线通信设备。
方面14是一种用于实现方面1-13中的任一方面的无线通信的方法。
方面15是一种用于图形处理的装置,包括用于实现如方面1-13中任一项所述的方法的单元。
方面16是一种存储计算机可执行代码的计算机可读介质,所述计算机可执行代码在由至少一个处理器执行时引起所述至少一个处理器实现根据方面1-13中任一项所述的方法。
本文中已经描述了各个方面。这些示例和其他方面在所附权利要求书的范围内。

Claims (30)

1.一种用于图形处理的装置,包括:
存储器;以及
至少一个处理器,所述至少一个处理器耦合到所述存储器,并且被配置为:
将一个或多个图形处理单元(GPU)工作负载分配给多个波时隙中的一个或多个波时隙;
选择多个执行时隙中的第一执行时隙以用于执行所述一个或多个GPU工作负载,所述选择是基于多个粒度中的一个粒度的;以及
在所选择的第一执行时隙处以所述多个粒度中的所述一个粒度执行所述一个或多个GPU工作负载。
2.根据权利要求1所述的装置,其中,所述多个波时隙包括多个第一波时隙和多个第二波时隙,所述一个或多个GPU工作负载是基于所述多个第一波时隙和所述多个第二波时隙而被分配的,以及所述一个或多个GPU工作负载的第一GPU工作负载被分配给所述多个第一波时隙中的第一波时隙,并且所述一个或多个GPU工作负载的第二GPU工作负载被分配给所述多个第二波时隙中的第二波时隙。
3.根据权利要求2所述的装置,其中,所述第一GPU工作负载和所述第二GPU工作负载在序列中是连续的。
4.根据权利要求2所述的装置,其中,所述第一GPU工作负载和所述第二GPU工作负载与同一指令相关联。
5.根据权利要求1所述的装置,所述至少一个处理器还被配置为:
在运行时从至少一个GPU组件接收所述一个或多个GPU工作负载。
6.根据权利要求1所述的装置,所述至少一个处理器还被配置为:
基于所述一个或多个GPU工作负载与纹理块或分支块相关联还是与纹理块或分支块不相关联来选择所述多个粒度中的所述一个粒度。
7.根据权利要求6所述的装置,其中,当所述一个或多个GPU工作负载与所述纹理块或所述分支块相关联时,选择第一粒度作为所述多个粒度中的所述一个粒度。
8.根据权利要求7所述的装置,其中,当所述一个或多个GPU工作负载与所述纹理块或所述分支块不相关联时,选择第二粒度作为所述多个粒度中的所述一个粒度,所述第一粒度小于所述第二粒度。
9.根据权利要求1所述的装置,所述至少一个处理器还被配置为:
将用于所述一个或多个GPU工作负载的背景寄存器复制到所述第一执行时隙,其中,用于所述一个或多个GPU工作负载的所述背景寄存器与所述一个或多个GPU工作负载的背景状态相关联。
10.根据权利要求1所述的装置,所述至少一个处理器还被配置为:
将用于所述一个或多个GPU工作负载的背景寄存器复制到所述一个或多个波时隙。
11.根据权利要求1所述的装置,其中,所述一个或多个GPU工作负载中的每个GPU工作负载包括统一数量的光纤。
12.根据权利要求1所述的装置,其中,所述多个波时隙中的每个波时隙与多个通用寄存器(GPR)中的一组GPR相关联。
13.根据权利要求1所述的装置,其中,所述装置是无线通信设备。
14.一种图形处理的方法,包括:
将一个或多个图形处理单元(GPU)工作负载分配给多个波时隙中的一个或多个波时隙;
选择多个执行时隙中的第一执行时隙以用于执行所述一个或多个GPU工作负载,所述选择基于多个粒度中的一个粒度;以及
在所选择的第一执行时隙处以所述多个粒度中的所述一个粒度执行所述一个或多个GPU工作负载。
15.根据权利要求14所述的方法,其中,所述多个波时隙包括多个第一波时隙和多个第二波时隙,所述一个或多个GPU工作负载是基于所述多个第一波时隙和所述多个第二波时隙而被分配的,以及所述一个或多个GPU工作负载的第一GPU工作负载被分配给所述多个第一波时隙中的第一波时隙,并且所述一个或多个GPU工作负载的第二GPU工作负载被分配给所述多个第二波时隙中的第二波时隙。
16.根据权利要求15所述的方法,其中,所述第一GPU工作负载和所述第二GPU工作负载在序列中是连续的。
17.根据权利要求15所述的方法,其中,所述第一GPU工作负载和所述第二GPU工作负载与同一指令相关联。
18.根据权利要求14所述的方法,还包括:
从至少一个GPU组件接收所述一个或多个GPU工作负载。
19.根据权利要求14所述的方法,还包括:
基于所述一个或多个GPU工作负载与纹理块或分支块相关联还是与纹理块或分支块不相关联来选择所述多个粒度中的所述一个粒度。
20.根据权利要求19所述的方法,其中,当所述一个或多个GPU工作负载与所述纹理块或所述分支块相关联时,选择第一粒度作为所述多个粒度中的所述一个粒度。
21.根据权利要求20所述的方法,其中,当所述一个或多个GPU工作负载与所述纹理块或所述分支块不相关联时,选择第二粒度作为所述多个粒度中的所述一个粒度,所述第一粒度小于所述第二粒度。
22.根据权利要求14所述的方法,还包括:
将用于所述一个或多个GPU工作负载的背景寄存器复制到所述第一执行时隙,其中,用于所述一个或多个GPU工作负载的所述背景寄存器与所述一个或多个GPU工作负载的背景状态相关联。
23.根据权利要求14所述的方法,还包括:
将用于所述一个或多个GPU工作负载的背景寄存器复制到所述一个或多个波时隙。
24.根据权利要求14所述的方法,其中,所述一个或多个GPU工作负载中的每个GPU工作负载包括统一数量的光纤。
25.根据权利要求14所述的方法,其中,所述多个波时隙中的每个波时隙与多个通用寄存器(GPR)中的一组GPR相关联。
26.一种存储计算机可执行代码的计算机可读介质,所述计算机可执行代码在由至少一个处理器执行时,引起所述至少一个处理器用于:
将一个或多个图形处理单元(GPU)工作负载分配给多个波时隙中的一个或多个波时隙;
选择多个执行时隙中的第一执行时隙以用于执行所述一个或多个GPU工作负载,所述选择基于多个粒度中的一个粒度;以及
在所选择的第一执行时隙处以所述多个粒度中的所述一个粒度执行所述一个或多个GPU工作负载。
27.根据权利要求26所述的计算机可读介质,其中,所述多个波时隙包括多个第一波时隙和多个第二波时隙,所述一个或多个GPU工作负载是基于所述多个第一波时隙和所述多个第二波时隙而被分配的,以及所述一个或多个GPU工作负载的第一GPU工作负载被分配给所述多个第一波时隙中的第一波时隙,并且所述一个或多个GPU工作负载的第二GPU工作负载被分配给所述多个第二波时隙中的第二波时隙。
28.根据权利要求27所述的计算机可读介质,其中,所述第一GPU工作负载和所述第二GPU工作负载在序列中是连续的。
29.根据权利要求27所述的计算机可读介质,其中,所述第一GPU工作负载和所述第二GPU工作负载与同一指令相关联。
30.根据权利要求26所述的计算机可读介质,其中,所述代码还引起所述至少一个处理器用于:
从至少一个GPU组件接收所述一个或多个GPU工作负载。
CN202380020669.4A 2022-02-24 2023-02-10 动态波配对 Pending CN118679492A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/652,478 2022-02-24
US17/652,478 US11954758B2 (en) 2022-02-24 2022-02-24 Dynamic wave pairing
PCT/US2023/012847 WO2023163863A1 (en) 2022-02-24 2023-02-10 Dynamic wave pairing

Publications (1)

Publication Number Publication Date
CN118679492A true CN118679492A (zh) 2024-09-20

Family

ID=85685395

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202380020669.4A Pending CN118679492A (zh) 2022-02-24 2023-02-10 动态波配对

Country Status (5)

Country Link
US (1) US11954758B2 (zh)
KR (1) KR20240130826A (zh)
CN (1) CN118679492A (zh)
TW (1) TW202341063A (zh)
WO (1) WO2023163863A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190278605A1 (en) * 2017-02-22 2019-09-12 Advanced Micro Devices, Inc. Software-controlled variable wavefront size execution at gpu
US11094103B2 (en) 2019-03-26 2021-08-17 Qualcomm Incorporated General purpose register and wave slot allocation in graphics processing
US11055808B2 (en) * 2019-06-27 2021-07-06 Qualcomm Incorporated Methods and apparatus for wave slot management
US11755501B2 (en) * 2020-03-27 2023-09-12 Intel Corporation Efficient data sharing for graphics data processing operations
US11204765B1 (en) 2020-08-26 2021-12-21 Qualcomm Incorporated Deferred GPR allocation for texture/load instruction block
US20230102843A1 (en) * 2021-09-27 2023-03-30 Nvidia Corporation User-configurable memory allocation

Also Published As

Publication number Publication date
US11954758B2 (en) 2024-04-09
WO2023163863A1 (en) 2023-08-31
KR20240130826A (ko) 2024-08-29
US20230267567A1 (en) 2023-08-24
TW202341063A (zh) 2023-10-16

Similar Documents

Publication Publication Date Title
US12056804B2 (en) Fast incremental shared constants
US11763419B2 (en) GPR optimization in a GPU based on a GPR release mechanism
EP3991131B1 (en) Methods and apparatus for wave slot management
US11954758B2 (en) Dynamic wave pairing
JP2023547433A (ja) 計算ワークロードのラスタライゼーションのための方法および装置
US12056790B2 (en) Methods and apparatus to facilitate a dedicated bindless state processor
US12067666B2 (en) Run-time mechanism for optimal shader
US11657471B2 (en) Methods and apparatus for constant data storage
US11087431B2 (en) Methods and apparatus for reducing draw command information
US20220357983A1 (en) Methods and apparatus for wave slot retirement procedures
US20240046543A1 (en) Runtime mechanism to optimize shader execution flow
CN117136375A (zh) 用于图元批次的几何处理的可缩放图元速率结构
CN117616446A (zh) 基于图块的架构中的深度和阴影通道渲染的优化

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination