CN115335851A - 多租户图形处理单元的动态透明重新配置 - Google Patents

多租户图形处理单元的动态透明重新配置 Download PDF

Info

Publication number
CN115335851A
CN115335851A CN202180016534.1A CN202180016534A CN115335851A CN 115335851 A CN115335851 A CN 115335851A CN 202180016534 A CN202180016534 A CN 202180016534A CN 115335851 A CN115335851 A CN 115335851A
Authority
CN
China
Prior art keywords
subset
application
physical paths
processing unit
circuits
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.)
Granted
Application number
CN202180016534.1A
Other languages
English (en)
Other versions
CN115335851B (zh
Inventor
雷克斯·埃尔登·麦克拉里
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN115335851A publication Critical patent/CN115335851A/zh
Application granted granted Critical
Publication of CN115335851B publication Critical patent/CN115335851B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • 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/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

本发明提供一种处理单元(105),该处理单元包括着色器引擎(140,141,142,143)和前端(FE)电路(150,151)。该FE电路的子集被配置为调度命令以在该着色器引擎的对应子集上执行。该处理单元还包括物理路径集合(330,310‑317,340),该物理路径集合被配置为将信息经由该着色器引擎从该FE电路传送到存储器。该物理路径的子集被分配给该FE电路的该子集和该着色器引擎的该对应子集。该处理单元还包括调度器(680),该调度器被配置为接收重新配置请求并基于该重新配置请求来修改该物理路径集合。在一些情况下,该重新配置请求由中央处理单元(CPU)(605)提供,该中央处理单元基于生成该命令的应用程序(620)的特性来请求该修改。

Description

多租户图形处理单元的动态透明重新配置
背景技术
图形处理单元(GPU)上的处理通常由中央处理单元(CPU)处理的应用程序编程接口(API)调用(例如,绘制调用)来发起。绘制调用是由CPU生成并传输到CPU以指示CPU在帧中渲染对象(或对象的一部分)的命令。绘制调用包括定义纹理、状态、着色器、渲染对象、缓冲区等的信息,GPU使用这些信息来渲染对象或其部分。响应于接收到绘图调用,GPU渲染对象以产生提供给显示器的像素值,显示器使用这些像素值来显示表示渲染对象的图像。
游戏和其他图形密集型应用程序是GPU的物理资源的贪婪消费者,该GPU包括用于实现图形流水线作为用户定义的可重新配置的虚拟流水线的着色器引擎和固定功能硬件单元。例如,用于处理三维(3-D)图形的常规图形流水线由可编程着色器所支持的固定功能硬件块布置的序列形成。这些布置通常经由图形应用程序编程接口(API)来配置,诸如由Microsoft DX 11/12、Khronos Group、OpenGL、Vulkan等定义的API。游戏通常在控制台(诸如Xbox和PlayStation 4)和个人计算机(PC)上玩,该控制台和PC被优化以处理游戏的图形处理要求。然而,控制台和游戏PC是昂贵的,并且一些游戏仅以游戏格式中的一种游戏格式可用。云游戏通过将图形处理移动到云服务器中的GPU来克服这些缺点,该GPU将所渲染的图形流式传输到用户,从而降低用户的硬件要求并允许用户以多种格式玩游戏。
附图说明
通过参考附图,本公开被更好地理解,并且其许多特征和优点对于本领域技术人员是显而易见的。在不同附图中使用相同的附图标记表示类似或相同的项目。
图1是根据一些实施方案的在多租户图形处理单元(GPU)中实现空间分区的处理系统的框图。
图2是根据一些实施方案的使用灵活空间分区来改进硬件利用的GPU的框图。
图3是根据一些实施方案的包括被配置用于空间分区的命令总线的GPU的一部分的框图。
图4是根据一些实施方案的包括可用于空间分区的高速缓冲存储器的GPU的一部分的框图。
图5是根据一些实施方案的包括可用于空间分区的存储器信道集合的GPU的一部分的框图。
图6是根据一些实施方案的包括执行应用程序以向GPU提供命令的中央处理单元(CPU)的处理系统的框图。
图7是根据一些实施方案的包括以第一配置实现第一路径集合的GPU的处理系统的框图。
图8是根据一些实施方案的包括以第二配置实现第二路径集合的GPU的处理系统的框图。
图9是根据一些实施方案的执行GPU的动态透明重新配置的方法的流程图。
具体实施方式
云服务器中的图形处理单元(GPU)包括前端(FE)硬件以处理任务,诸如获取命令、处理抖动、执行几何操作以及执行光线跟踪。FE硬件通常包括命令获取器,诸如用以保存所获取的命令的先进先出(FIFO)缓冲区之类的队列,以及调度来自命令缓冲区的命令以在GPU中的着色器引擎上执行的调度器。使用一个或多个处理器和一个或多个算术逻辑单元(ALU)来实现着色器引擎以执行由FE硬件提供的命令。由着色器产生的结果(诸如着色像素的值)被输出到一个或多个高速缓冲存储器,该高速缓冲存储器存储也存储在对应存储器中的频繁使用的信息。因此,GPU包括存储器或寄存器以保存结果、高速缓冲存储器、端口以及这些实体之间的接口。信息经由路径从FE硬件流到存储器,该路径包括用以将命令从FE硬件载送到着色器引擎的命令总线,用以存储来自着色器引擎的输出的高速缓冲存储器,以及用以将高速缓存的信息传送到存储器的存储器信道。因此,GPU的资源包括用于通过命令总线将命令和数据传送到着色器引擎的带宽,存储由着色器引擎产生的结果的高速缓冲存储器,以及在高速缓冲存储器和存储器之间传送信息的存储器信道。
云服务器中的GPU集合执行不同应用程序的动态变化的混合。例如,云服务器可以在第一时间间隔期间执行四个简单的游戏(具有相对较低的资源消耗),在第二时间间隔期间执行两个中等的游戏(具有中等资源消耗),以及在第三时间间隔期间执行单个复杂的游戏(具有相对较高的资源消耗)。GPU集合无法确定提供命令以在GPU集合上执行的应用程序的要求,因为这些命令是由中央处理器(CPU)针对应用程序生成的,然后提供给GPU集合以供执行。
图1至图9公开了被透明地重新配置为执行由一个或多个应用程序响应于从正在执行该一个或多个应用程序的CPU所接收的分组(诸如应用程序编程接口(API)分组)而生成的命令的GPU的实施方案。GPU响应于GPU完成对由一个或多个应用程序生成的命令的执行而生成分组。例如,如果GPU正在并发执行针对第一应用程序和第二应用程序的命令,则GPU可向GPU传输指示针对第一应用程序的命令已完成执行的消息。作为响应,CPU将第三应用程序调度到GPU并生成API分组,该API分组指示GPU修改其配置以支持第一应用程序和第三应用程序的并发执行。GPU的一些实施方案包括:多个前端(FE)电路:命令总线,该命令总线实现通道集合;着色器引擎集合;高速缓冲存储器,该高速缓冲存储器由着色器引擎共享;和数据结构,该数据结构支持高速缓冲存储器与存储器之间的存储器信道集合。因此,修改GPU的配置包括:修改FE电路的分配,这些FE电路调度命令以在着色器引擎的子集上执行;以及修改命令总线的通道、高速缓冲存储器以及存储器信道集合在正在GPU上并发执行的应用程序之间的分区。GPU的配置基于GPU中的寄存器的值来确定。在一些实施方案中,寄存器包括:第一寄存器集合,该第一寄存器集合指示FE电路到着色器引擎的映射;第二寄存器集合,该第二寄存器集合指示命令总线的通道的分区;第三寄存器集合,该第三寄存器集合用于对高速缓冲存储器进行分区;和第四寄存器集合,该第四寄存器集合用于对存储器信道集合进行分区。这些寄存器是基于API分组中包含的信息来编程的。
图1是根据一些实施方案的在多租户图形处理单元(GPU)105中实现空间分区的处理系统100的框图。处理系统100包括一个或多个中央处理单元(CPU)110、111。尽管图1中示出了两个CPU 110、111,但是处理系统100的一些实施方案包括更多或更少的CPU。可缩放数据结构(SDF)115支持处理系统100内的端点之间的数据流。SDF 115的一些实施方案支持连接点(诸如外围部件接口(PCI)物理层、存储器控制器、通用串行总线(USB)集线器、包括GPU105和CPU 110、111的计算和执行单元、以及其他端点)之间的数据流。在所示实施方案中,SDF 115连接到输入/输出(I/O)集线器120,该集线器继而连接到PCI express(PCI-E)总线125和北向接口(NBIF)130。处理系统100还包括可缩放控制结构(SCF)135,该可缩放控制结构是在处理系统100内传送系统控制信号的控制通信平面。系统控制信号的示例是用于支持热和功率管理、测试、安全性等的控制信号。
GPU 105包括着色器引擎(SE)140、141、142、143(在本文中统称为″SE 140-143″)的集合,其用于并发或并行执行命令。SE 140-143的一些实施方案是使用从CPU 110、111中的一者接收到的绘图调用中的信息来配置的,以对表示场景模型的图元的顶点进行着色。SE 140-143还对基于着色图元生成的像素进行着色,并且例如经由I/O集线器120向显示器提供着色像素以呈现给用户。尽管图1中示出了四个着色器引擎,但是GPU 105的一些实施方案包括更多或更少的着色器引擎。SE 140-143连接到存储频繁使用的数据和指令的图形级2(L2)高速缓冲存储器145。在一些实施方案中,L2高速缓冲存储器145连接到在SE 140-143中实现的一个或多个级1(L1)高速缓冲存储器以及在处理系统100中实现的一个或多个L3高速缓冲存储器(或其他最后一级高速缓冲存储器)。高速缓冲存储器形成包括L2高速缓冲存储器145的高速缓冲存储器层级。为了清楚起见,在图1中未示出高速缓冲存储器层级中的其他高速缓冲存储器。
GPU 105中的前端(FE)电路获取几何工作负载的图元,执行对几何工作负载的调度以在着色器引擎上执行,并且在一些情况下,处理图元的串行同步、状态更新、绘图调用、高速缓存活动和镶嵌。GPU 105中的FE电路包括FE电路150、151,但FE电路的一些实施方案被分区为包括附加FE电路,如本文所讨论的。FE电路还包括共享资源153(或具有对该共享资源的访问权限),该共享资源由FE电路150、151共享(并且在该FE电路之间进行分区)。例如,当FE电路150、151均是活动的并且执行不同的线程或应用程序时,共享资源153被分区为分别分配给FE电路150、151的两个部分。对于另一个示例,如果FE电路150、151中的仅一者是活动的或者如果FE电路150、151的组合资源用于支持单个线程或应用程序,则共享资源153都被分配给单个FE电路。共享资源153包括高速缓冲存储器、算术逻辑单元(ALU)等。FE电路150、151接收命令缓冲区以在SE 140-143上执行,并经由总线155向SE 140-143提供经调度的命令。总线155的一些实施方案被实现为图形寄存器总线管理器(GRBM),其充当用于支持多个主机和多个从装置的寄存器读取和写入操作的集线器。GPU 105和CPU 110、111经由SDF 115与存储器160通信。
CPU 110、111执行一个或多个应用程序,该一个或多个应用程序生成命令以在GPU105上执行。CPU 110、111的一些实施方案使用应用程序编程接口(API)调用(例如,绘图调用)来在GPU上发起命令的执行,这些调用被传输到GPU 105以指示GPU 105例如通过在帧中渲染对象(或对象的一部分)来执行命令。GPU 105以不同的空间分区模式操作。GPU 105的一些实施方案支持第一空间分区模式和第二空间分区模式。在第一模式下,FE电路150调度命令,诸如SE 140-143的几何工作负载。在第二模式下,FE电路150针对SE 140-143的第一子集调度来自第一应用程序的命令,并且FE电路150针对SE 140-143的第二子集调度针对第二应用程序的命令。第一子集包括SE 140、141并且第二子集包括SE 142、143,但在一些实施方案中也使用SE 140-143的其他分组子集。
GPU 105支持可重新配置的物理路径,以经由SE 140-143将信息从FE电路150、151传送到存储器160。物理路径的子集被分配给FE电路150、151的子集和140-143的对应子集。例如,在上述第二模式下,第一物理路径被分配给FE电路150和SE 140、141。第二物理路径被分配给FE电路150、151和SE 142、143。因此,GPU 105能够使用第一路径和第二路径针对第一应用程序和第二应用程序并发执行命令。GPU 105的物理路径的分配和配置的分配由GPU 105和正在执行应用程序的CPU 110、111协同执行。在一些实施方案中,CPU 110、111基于应用程序的特性或应用程序的特性的变化来请求重新配置。确定GPU 105的重新配置的特性的示例包括在CPU 110、111上执行的应用程序的数量、应用程序的复杂性、应用程序的图形分辨率等。CPU 110、111向GPU 105传输重新配置请求,该GPU基于重新配置请求来修改物理路径,如下文所讨论的。
图2是根据一些实施方案的使用灵活空间分区来改进硬件利用的GPU 200的框图。GPU 200用于实现图1所示的GPU 105的一些实施方案。GPU 200包括FE电路201、202、203的集合,这些FE电路在本文中统称为″FE电路201-203″。如本文所用,短语″FE电路集合″是指根据需要接通或关断的不同物理部件,以及利用多线程FE电路的不同线程。如本文所讨论的,FE电路201-203执行前端功能,包括用于在对应SE 205、206、207(其在本文中统称为″SE205-207″)上执行的调度命令缓冲区。FE电路201-203选择性地连接到通过在空间上对GPU200的资源进行分区而形成的不同路径。在所示实施方案中,FE电路201-203使用开关电路215选择性地连接到物理路径211、212、213。尽管开关电路215在图2中表示为解复用器,但是开关电路215还可包括一个或多个开关、数据结构、路由器、复用器、解复用器等。开关电路215以及在空间上分区的路径的其他部分基于存储在配置寄存器(为了清楚起见,在图2中未示出)中的值来配置。
在空间上分区的路径211-213提供了从FE电路201-203经由SE 205-207流到存储器的命令和数据的路径。在所示实施方案中,存储器被分区为存储器分区221、222、223,其在本文中统称为″存储器分区221-223″。GPU 200的资源包括命令总线,该命令总线具有多个通道以在FE电路201-203与SE 205-207之间传送信息。因此,在空间上分区的路径包括命令总线的通道的子集231、232、233,其在本文中统称为″通道子集231-233″。GPU 200的资源还包括将由SE 205-207产生的信息传送到存储器的存储器信道的集合。因此,在空间上分区的路径包括存储器信道的子集241、242、243,其在本文中统称为″存储器信道子集241-243″。
GPU 200基于从正在执行一个或多个应用程序的CPU所接收的请求来配置或重新配置在空间上分区的路径211-213,该一个或多个应用程序生成命令以在GPU 200上执行。如本文所讨论的,GPU 200接收来自CPU的请求并基于请求中包括的信息来修改在空间上分区的路径211-213的资源的分配。CPU基于正在生成命令以在GPU 200上执行的应用程序的特性来生成请求。FE电路201-203、SE 205-207和在空间上分区的路径211-213的资源的分配被确定为使得当执行不同数量的应用程序或线程时,GPU 200的资源被完全利用。例如,如果单个线程正在GPU 200上执行,则FE电路201-203、SE 205-207和在空间上分区的路径211-213的资源被分配给单个线程。对于另一个示例,如果多个线程正在GPU 200上执行,则FE电路201-203、SE 205-207和在空间上分区的路径211-213的资源在多个线程之间被分区和共享,如本文所讨论的。
在一些实施方案中,GPU 200的配置在寄存器集合中指示(为清楚起见,在图2中未示出)。在所示实施方案中,开关电路215将FE电路201-203中的每一者映射到路径211-213中的对应一者。然而,开关电路215还选择性地且可重新配置地将FE电路201-203的子集映射到物理路径211-213的子集或组合。此外,在一些实施方案中,路径211-213包括多个SE205-207和GPU 200的对应资源,如本文所讨论的。
图3是根据一些实施方案的包括被配置用于空间分区的命令总线305的GPU的一部分300的框图。部分300用于实现图1所示的GPU 105的一些实施方案。命令总线305包括在FE电路320、321的集合和SE 325、326、327、328(其在本文中统称为″SE 325-328″)的集合之间独立地传送信息的通道310、311、312、313、314、315、316、317(在本文中统称为″通道310-317″)。
部分300包括开关电路330,该开关电路选择性地将FE电路320、321的子集连接到通道310-317的对应子集。在一些实施方案中,开关电路330基于存储在一个或多个寄存器335中的信息来配置。部分300还包括开关电路340,该开关电路选择性地将通道310-317的子集连接到SE 325-328的子集。提供了通道310-317的相互排斥的子集以在FE电路320、321的子集与SE 325-328的对应子集之间传送信息,这对于与不同物理路径相关联的不同分配提供由GPU的部分300处理的命令之间的隔离。
开关电路340是响应于从正在执行应用程序的CPU所接收的请求来配置(或重新配置),这些应用程序生成命令以供GPU执行。在一些实施方案中,开关电路340基于存储在一个或多个寄存器345中的信息来配置。存储在寄存器335、345中的信息基于将FE电路320、321的子集与SE 325-328的对应子集相关联的映射来确定。GPU的资源(包括通道310-317)被分配给FE电路320、321的子集和SE 325-328的对应子集的每个组合。开关电路330、340使用存储在寄存器335、345中的信息来对通道310-317进行分区以在FE电路320、321的子集与SE 325-328的对应子集之间形成物理路径。如本文所讨论的,寄存器335、345基于在来自CPU的请求中所接收的信息来编程。
图4是根据一些实施方案的包括可用于空间分区的高速缓冲存储器405的GPU的一部分400的框图。部分400用于实现图1所示的GPU 105的一些实施方案。高速缓冲存储器405被选择性地分区为将部分410、411、412、413(在本文中统称为″高速缓冲存储器部分410-413″)分配给与不同应用程序和FE电路子集相关联的不同物理路径。GPU的部分400还包括开关电路415,该开关电路选择性地将SE 420、421、422、423(在本文中统称为″SE 420-423″)的子集连接到高速缓冲存储器部分410-413。在所示实施方案中,高速缓冲存储器405被分区为使得高速缓冲存储器部分410-413是不同物理路径的部分。开关电路415将SE 420连接到高速缓冲存储器部分410,将SE 421连接到高速缓冲存储器部分411,将SE 422连接到高速缓冲存储器部分412,并且将SE 423连接到高速缓冲存储器部分413。因此,SE 420-423具有对其对应的高速缓冲存储器部分410-413的独占访问,并且由SE 420-423存储在高速缓冲存储器部分410-413中的信息与由其他SE 420-423存储在其他高速缓冲存储器部分410-413中的信息隔离。
开关电路415是响应于从正在执行应用程序的CPU所接收的请求来配置(或重新配置),这些应用程序生成命令以供GPU执行。在一些实施方案中,开关电路415基于存储在寄存器425中的信息来配置。存储在寄存器425中的信息将SE 420-423与对应的高速缓冲存储器部分410-413相关联,以形成将SE 420-423链接到存储器的路径的一部分(为清楚起见,在图4中未示出)。寄存器425基于从正在执行应用程序的CPU所接收的请求中的信息来编程,这些应用程序生成命令以供GPU执行。GPU的资源(包括高速缓冲存储器部分410-413)被分配给SE 420-423的子集,以用于存储频繁使用的信息。因此,高速缓冲存储器部分410-413是用于经由SE 420-423将信息从FE电路传送到存储器的物理路径的部分。
图5是根据一些实施方案的包括可用于空间分区的存储器信道集合的GPU的一部分500的框图。GPU的部分500用于实现图1所示的GPU 105的一些实施方案。存储器信道501、502、503、504(在本文中统称为″存储器信道501-504″)用于提供可用于分区为部分511、512、513、514(在本文中统称为″高速缓冲存储器部分511-514″)的高速缓冲存储器510和存储器520之间的路径。开关电路525选择性地将高速缓冲存储器部分511-514的子集连接到存储器520以形成物理路径,该物理路径是包括FE电路和SE的物理路径的部分,如本文所讨论的。开关电路525使用存储在寄存器530中的信息来配置。在一些实施方案中,寄存器530基于从正在执行应用程序的CPU所接收的请求中的信息来编程,这些应用程序生成命令以供GPU执行。在所示实施方案中,高速缓冲存储器部分511-514中的每一者由开关电路525独立地连接到存储器520。在一些实施方案中,高速缓冲存储器部分511-514被映射到存储器520的不同部分,例如,通过将信息写入由不同基地址以及存储器步幅指示的存储器位置。
图6是根据一些实施方案的包括执行应用程序以向GPU 610提供命令的CPU 605的处理系统600的框图。处理系统600用于实现图1所示的处理系统100的一些实施方案。
操作系统615在CPU 105上实现以管理用于实现处理系统600的硬件和处理系统600的软件资源。一个或多个应用程序620由CPU 605使用CPU 105的硬件、固件或软件资源来执行。在一些实施方案中,应用程序620生成提供给GPU 610以供执行的命令(或命令缓冲区)。例如,应用程序620可包括提供图形命令以使GPU 610针对游戏应用程序渲染图形(或执行其他通用计算)的游戏应用程序。如本文所讨论的,由多个应用程序620生成的命令可在GPU 610上并发执行。
在一些实施方案中,应用程序620利用应用程序编程接口(API)625来调用用户模式驱动器630或其他GPU驱动器。用户模式驱动器630向GPU 610发出一个或多个命令(或命令缓冲区)。如果应用程序620发出图形命令,则图形命令指示GPU 610将一个或多个图形图元渲染成可显示的图形图像。基于由应用程序620向用户模式驱动器630发出的图形指令,用户模式驱动器630制定一个或多个图形命令,该一个或多个图形命令指定GPU 610为渲染图形而执行的一个或多个操作。在一些实施方案中,用户模式驱动器630是在CPU 605上执行的应用程序620中的一个或多个程序的一部分。例如,在CPU 605上运行的游戏应用程序可实现用户模式驱动器630。类似地,操作系统615的一些实施方案实现内核模式驱动器635,该内核模式驱动器在CPU 605在系统或内核模式下操作时执行。
GPU 610实现多个可重新配置的路径,用于并发执行与不同应用程序(诸如在CPU605上执行的应用程序620)相关联的命令。在所示实施方案中,GPU 610包括前端(FE)电路640、641、642集合(在本文中统称为″FE电路640-642″)、开关电路645、SE集合650、651、652(在本文中统称为″SE 650-652″)和共享高速缓冲存储器655,该共享高速缓冲存储器被分区为部分660、661、662(在本文中统称为″高速缓冲存储器部分660-662″)。GPU 610还提供包括具有多个通道的命令总线和将高速缓冲存储器655与存储器670互连的存储器信道集合的资源,但为了清楚起见,图6中未示出GPU 610的这些方面。尽管图6中示出了三个独立路径,但GPU 610可重新配置为支持更多或更少的路径,如本文所讨论的。
寄存器集合675存储用于配置GPU 610中的多个路径的信息。集合675的一些实施方案包括图3所示的寄存器335、345、图4所示的寄存器425和图5所示的寄存器530。调度器680从CPU 605接收命令(或命令缓冲区)并调度这些命令(或命令缓冲区)以供SE 650-652在对应路径中执行。调度器680还使用用于配置和重新配置从FE电路640-642经由SE 650-652到存储器670的路径的信息对寄存器集合675进行编程。
CPU 605生成用于配置或重新配置GPU 610中的路径的参数。在一些实施方案中,调度器680提供中断685(或其他消息)以通知CPU 605由应用程序620中的一个应用程序提供的命令(或命令缓冲区)已完成在对应路径中的执行。响应于接收到或检测中断685,CPU605确定参数以重新配置GPU 610中的路径。这些参数基于应用程序620的特性、应用程序620的特性的变化、在CPU 605上并发执行的应用程序620的数量或类型的变化等来确定。在一些实施方案中,这些特性包括应用程序620的数量、应用程序620的复杂性、应用程序620的图形分辨率等。例如,应用程序620中的一些应用程序是需要高分辨率(诸如8K分辨率)的高复杂性应用程序,应用程序620中的一些应用程序是需要中等分辨率(诸如4K分辨率)的中等复杂性应用程序,并且这些应用程序中的一些应用程序是需要低分辨率(诸如1080p分辨率)的低复杂性应用程序。高、中等、低复杂性/分辨率应用程序的数量和组合随时间而变化。CPU 605向GPU 610提供参数690。
响应于接收到参数690,GPU 610基于所提供的参数690来确定如何重新配置路径。调度器680的一些实施方案基于所提供的参数690来对寄存器集合675进行编程。然后,基于寄存器集合675中的更新值来重新配置路径。例如,如果参数690的值指示少量较高复杂性应用程序620正在生成命令,则调度器680对寄存器集合675进行编程以配置GPU 610以实现较少数量的路径,包括用于每个路径的附加SE 650-652。对于另一示例,如果参数690的值指示大量较低复杂性应用程序620正在生成命令,则调度器680对寄存器集合675进行编程以配置GPU以实现更大数量的路径,包括用于每个路径的较少SE 650-652。寄存器集合675还用于修改支持路径的其他资源的分配,诸如命令总线的通道、高速缓冲存储器的部分和存储器信道。
图7是根据一些实施方案的包括以第一配置实现第一路径集合的GPU 705的处理系统700的框图。处理系统700用于实现图1所示的处理系统100和图6所示的处理系统600的一些实施方案。在所示实施方案中,GPU 705包括FE电路710、711、712、713(在本文中统称为″FE电路710-713″)、开关电路715、SE集合720、721、722、723(在本文中统称为″SE 720-723″)和共享高速缓冲存储器725,该共享高速缓冲存储器被分区为部分730、731、732、733(在本文中统称为″高速缓冲存储器部分730-733″)。高速缓冲存储器部分730-733保存也存储在存储器735中的频繁使用的信息的副本。GPU 705使用存储在由调度器745编程的寄存器集合740中的信息来配置。
在所示实施方案中,GPU 705在空间上分区以支持两个路径750、751。由路径750、751执行的命令由对应的FE电路710、712调度。如虚线框所示,路径750、751不使用其他FE电路711、713。寄存器集合740中的信息将开关电路715(以及GPU 705的其他资源)配置为将第一路径750中的FE电路710连接到SE 720、721并将第二路径751中的FE电路712连接到SE722、723。在一些实施方案中,寄存器集合740中的信息还用于分别在第一路径750中的SE720、721与第二路径751中的SE 722、723之间建立连接760、761。连接760、761用于支持SE间通信,诸如I/O操作的协调、切换等。第一路径750包括高速缓冲存储器部分730、731并且第二路径751包括高速缓冲存储器部分732、733。
图8是根据一些实施方案的包括以第二配置实现第二路径集合的GPU 705的处理系统800的框图。处理系统800用于实现图1所示的处理系统100和图6所示的处理系统600的一些实施方案。在所示实施方案中,GPU 705包括FE电路710、711、712、713(在本文中统称为″FE电路710-713″)、开关电路715、SE集合720、721、722、723(在本文中统称为″SE 720-723″)和共享高速缓冲存储器725,该共享高速缓冲存储器被分区为部分730、731、732、733(在本文中统称为″高速缓冲存储器部分730-733″)。高速缓冲存储器部分730-733保存也存储在存储器735中的频繁使用的信息的副本。GPU 705使用存储在由调度器745编程的寄存器集合740中的信息来配置。
在所示实施方案中,GPU 705在空间上分区以支持四个路径801、802、803、804,其在本文中统称为″路径801-804″。由路径801-804执行的命令由FE电路710-713中的对应一个FE电路调度。寄存器集合740中的信息将开关电路715(以及GPU 705的其他资源)配置为将第一路径801中的FE电路710连接到SE 720,将第二路径802中的FE电路711连接到SE721,将第三路径803中的FE电路712连接到SE 722,以及将第四路径804中的FE电路713连接到SE 723。在一些实施方案中,寄存器集合740中的信息还用于分别断开第一路径750中的SE 720、721与第二路径751中的SE 722、723之间的连接760、761。例如,如果GPU 705先前处于图7所示的第一配置,则基于寄存器集合740中的信息重新配置GPU 705导致连接760、761的删除。第一路径801包括高速缓冲存储器部分730,第二路径802包括高速缓冲存储器部分731,第三路径803包括高速缓冲存储器部分732,并且第四路径804包括高速缓冲存储器部分733。
尽管图7和图8示出了其中SE 720-723和高速缓冲存储器725在FE电路710-713的多个子集之间分区的实施方案,但在一些实施方案中,FE电路710-713的子集包括FE电路710-713中的单个FE电路,或者FE电路710-713被聚合成单个实体。例如,如果GPU 705正在执行单个线程或应用程序,则分配包括FE电路710-713中的一个FE电路或聚合的FE电路710-713的单个实体来处理单个线程或应用程序。在这种情况下,FE电路710-713的子集包括单个电路并且SE 720-723和高速缓冲存储器725的资源被分配给单个电路,使得GPU 705的资源被充分利用,而不管FE电路710-713的子集的数量如何。
图9是根据一些实施方案的执行GPU的动态透明重新配置的方法900的流程图。在图1所示的处理系统100和图6中所示的处理系统600的一些实施方案中实现方法900。
在框905处,GPU响应于完成与正在对应CPU上执行的应用程序相关联的命令或命令缓冲区而生成中断(或其他消息)。在一些实施方案中,应用程序正在GPU上与其他应用程序并发执行,这些其他应用程序也正在生成命令或命令缓冲区以在GPU上执行。
在框910处,CPU检测到指示命令或命令缓冲区已在GPU上完成执行的中断(或接收其他消息)。响应于检测到中断,CPU可改变正在并发执行的应用程序的组合。例如,CPU可添加一个或多个附加应用程序以供并发执行或从并发执行中删除一个或多个应用程序。在一些实施方案中,在CPU上并发执行的应用程序的特性响应于GPU完成对命令或命令缓冲区的执行而改变。具有较高复杂性或图形分辨率要求的应用程序可开始执行,具有较低复杂性或图形分辨率要求的应用程序可开始执行,或者并发执行的应用程序的特性可能发生其他变化。
在决策框915处,CPU确定是否经由SE修改从GPU中的FE电路到存储器的路径,该SE执行CPU提供给GPU的命令或命令缓冲区。该确定是基于在CPU上并发执行并针对CPU生成命令或命令缓冲区的应用程序的特性或特性的变化而做出的。如果CPU确定不需要修改,则方法900进行到框920。如果CPU确定需要修改,则方法900进行到框925。
在框920处,CPU发送指示GPU中的路径配置无变化的API分组。另选地,CPU在框920处不能采取任何行动,这也导致GPU保持其当前路径配置。
在框925处,CPU发送请求修改GPU中的路径的API分组。API分组的一些实施方案包括识别正在CPU上并发运行的应用程序的信息,以及指示应用程序的特性的信息。另选地,API分组可包括请求将分配给并发应用程序的多个路径的信息。在任一种情况下,GPU都负责基于API分组中的信息来确定如何重新配置路径。
在框930处,GPU修改用于配置GPU中的路径的配置寄存器。GPU的一些实施方案包括调度器,该调度器基于在API分组中从CPU所接收的信息来确定如何将修改配置寄存器中的条目的值。然后,调度器使用所确定的值来对配置寄存器进行编程。
在框935处,GPU确定是否应修改GPU中的SE之间的通信。例如,如果存在一个或多个互连以支持SE间通信,则如果作为重新配置的一部分,经由连接进行通信的SE被分配到不同路径,则断开一个或多个连接。对于另一示例,如果作为重新配置的一部分,两个或更多个SE被分配到同一路径,则建立连接以支持SE间通信。
计算机可读存储介质包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂态存储介质或非暂态存储介质的组合。此类存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓冲存储器)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)、或基于微机电系统(MEMS)的存储介质。计算机可读存储介质的一些实施方案嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者经由有线或无线网络(例如,网络可访问存储装置(NAS))耦接到计算机系统。
在一些实施方案中,上述技术的某些方面由执行软件的处理系统的一个或多个处理器实现。软件包括可执行指令的一个或多个集合,该可执行指令存储在或以其他方式有形地体现在非暂态计算机可读存储介质上。软件可包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括例如磁盘或光盘存储装置、固态存储装置诸如闪存存储器、高速缓冲存储器、随机存取存储器(RAM)或其他一个或多个非易失性存储器装置等。存储在非暂态计算机可读存储介质上的可执行指令是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或以其他方式执行的其他指令格式。
应当注意,并非以上在一般描述中描述的所有活动或元件都是必需的,特定活动或装置的一部分可能不是必需的,并且可执行一个或多个另外的活动,或者除了所描述的那些之外还包括元件。更进一步地,列出活动的顺序不一定是执行它们的顺序。另外,已经参考具体实施方案描述了这些概念。然而,本领域普通技术人员理解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有此类修改旨在被包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及导致任何益处、优点或解决方案出现或变得更显著的任何特征不应被解释为任何或所有权利要求的关键的、必需的或基本的特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文中的教导内容的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了以下权利要求书中所描述的之外,不旨在对本文所示的构造或设计的细节进行限制。因此,显而易见的是,可以改变或修改上文公开的特定实施方案,并且所有此类变化被认为是在所公开的主题的范围内。因此,本文寻求的保护如以下权利要求中所阐述。

Claims (23)

1.一种设备,包括:
着色器引擎集合;
前端(FE)电路集合,其中所述FE电路集合的子集被配置为调度命令以在所述着色器引擎集合的对应子集上执行;
物理路径集合,所述物理路径集合被配置为经由所述着色器引擎集合将信息从所述FE电路集合传送到存储器,其中所述物理路径集合的子集被分配给所述FE电路集合的所述子集和所述着色器引擎集合的所述对应子集;以及
调度器,所述调度器被配置为接收重新配置请求并基于所述重新配置请求来修改所述物理路径集合。
2.根据权利要求1所述的设备,其中所述调度器被配置为在来自中央处理单元(CPU)的第一分组中接收所述重新配置请求,所述中央处理单元正在执行至少一个第一应用程序以生成所述命令以在所述着色器引擎集合的所述对应子集上执行。
3.根据权利要求2所述的设备,其中所述调度器被配置为传输指示所述命令中的至少一个命令的执行完成的第二分组,并且其中所述调度器被配置为响应于传输所述第二分组而接收所述第一分组。
4.根据权利要求3所述的设备,其中所述重新配置请求包括由所述CPU基于所述至少一个第一应用程序和至少一个第二应用程序的特性而生成的信息,所述至少一个第二应用程序随后将由所述着色器引擎集合中的至少一个着色器引擎执行。
5.根据前述权利要求中任一项所述的设备,所述设备还包括:
寄存器集合,所述寄存器集合被配置为存储配置所述物理路径集合的信息,其中所述调度器被配置为基于所述重新配置请求来对所述寄存器集合进行编程。
6.根据权利要求5所述的设备,所述设备还包括:
命令总线,所述命令总线实现通道集合,其中所述调度器被配置为将所述通道集合的子集分配给所述物理路径集合的所述子集;
高速缓冲存储器,所述高速缓冲存储器由所述着色器引擎集合共享,其中所述调度器被配置为将所述高速缓冲存储器分区为分配给所述物理路径集合的所述子集的部分;以及
数据结构,所述数据结构支持所述高速缓冲存储器与所述存储器之间的存储器信道集合,其中所述调度器被配置为将所述存储器信道集合的子集分配给所述物理路径集合的所述子集。
7.根据权利要求6所述的设备,其中所述寄存器集合包括:
所述寄存器集合的第一子集,所述第一子集被配置为存储指示所述FE电路的所述子集到所述着色器引擎的所述对应子集的映射的信息;
所述寄存器集合的第二子集,所述第二子集被配置为存储指示所述命令总线的所述通道集合的所述子集到所述物理路径集合的所述子集的所述分配的信息;
所述寄存器集合的第三子集,所述第三子集用于存储指示所述高速缓冲存储器的所述部分到所述物理路径集合的所述子集的所述分配的信息;以及
所述寄存器集合的第四子集,所述第四子集用于存储指示所述存储器信道集合的所述子集到所述物理路径的所述子集的所述分配的信息。
8.根据权利要求7所述的设备,其中所述调度器被配置为基于所述重新配置请求来修改所述通道集合的所述子集的分配、所述高速缓冲存储器的所述部分和所述存储器信道集合的所述子集的分配。
9.一种方法,包括:
接收重新配置请求,所述重新配置请求指示对物理路径集合的修改,所述物理路径将信息经由着色器引擎集合从前端(FE)电路集合传送到存储器,其中所述FE电路集合的子集被配置为调度命令以在所述着色器引擎集合的对应子集上执行;
修改所述物理路径集合到正在生成所述命令以在所述着色器引擎集合的所述对应子集上执行的应用程序的分配;以及
经由所述物理路径集合的所述修改的分配将所述命令从所述FE电路集合的所述子集分派到所述着色器引擎集合的所述对应子集。
10.根据权利要求9所述的方法,其中接收所述重新配置请求包括在来自中央处理单元(CPU)的第一分组中接收所述重新配置请求,所述中央处理单元正在执行所述应用程序以生成所述命令以在所述着色器引擎集合的所述对应子集上执行。
11.根据权利要求10所述的方法,所述方法还包括:
传输指示所述命令中的至少一个命令的执行完成的第二分组;以及
响应于传输所述第二分组而接收所述第一分组。
12.根据权利要求11所述的方法,所述方法还包括:
在与所述物理路径集合的第一子集相关联的所述着色器引擎集合的第一子集上执行针对第一应用程序的第一命令,并在与所述物理路径集合的至少一个第二子集相关联的所述着色器引擎集合的至少一个第二子集上执行针对至少一个第二应用程序的第二命令;
响应于所述着色器引擎集合的所述第一子集完成对所述第一命令的执行而传输所述第二分组;以及
接收所述第一分组,所述第一分组包括指示对所述物理路径集合的所述分配的修改以支持所述至少一个第二应用程序和至少一个第三应用程序的信息。
13.根据权利要求12所述的方法,所述方法还包括:
将所述物理路径集合的所述分配从针对所述第一应用程序和所述至少一个第二应用程序的第一分配修改为针对所述至少一个第二应用程序和所述至少一个第三应用程序的第二分配。
14.根据权利要求13所述的方法,其中所述第一分组包括由所述CPU基于所述至少一个第二应用程序和所述至少一个第三应用程序的特性而生成的信息。
15.根据权利要求9至14中任一项所述的方法,其中修改所述物理路径集合的所述分配包括基于所述重新配置请求对被配置为存储配置所述物理路径集合的信息的寄存器集合进行编程。
16.根据权利要求15所述的方法,其中对所述寄存器集合进行编程包括:
对所述寄存器集合的第一子集进行编程,所述第一子集被配置为存储将所述FE电路的所述子集映射到所述着色器引擎的所述对应子集的信息;
对所述寄存器集合的第二子集进行编程,所述第二子集被配置为存储指示命令总线的通道集合的子集到所述物理路径集合的所述子集的分配的信息;
对所述寄存器集合的第三子集进行编程,所述第三子集用于存储指示高速缓冲存储器的部分到所述物理路径集合的所述子集的分配的信息;以及
对所述寄存器集合的第四子集进行编程,所述第四子集用于存储指示存储器信道集合的子集到所述物理路径的所述子集的分配的信息。
17.一种第一处理单元,所述第一处理单元包括:
至少一个应用程序,以生成命令以在第二处理单元上执行,所述第二处理单元包括:
着色器引擎集合,
前端(FE)电路集合,其中所述FE电路集合的子集被配置为调度命令以在所述着色器引擎集合的对应子集上执行;和
物理路径集合,所述物理路径集合被配置为经由所述着色器引擎集合将信息从所述FE电路集合传送到存储器,其中所述物理路径集合的子集被分配给所述FE电路集合的所述子集和所述着色器引擎集合的所述对应子集;
操作系统(OS),所述操作系统被配置为响应于所述至少一个应用程序中的变化来确定所述第二处理单元中的所述物理路径集合的重新配置;以及
应用程序编程接口(API),所述应用程序编程接口被配置为传输对所述第二处理单元的所述重新配置的请求。
18.根据权利要求17所述的第一处理单元,其中所述API被配置为接收第一分组,所述第一分组包括指示所述第二处理单元已完成对所述命令中的至少一个命令的执行的信息。
19.根据权利要求18所述的第一处理单元,其中所述OS被配置为响应于接收到所述第一分组来确定所述物理路径集合的所述重新配置。
20.根据权利要求19所述的第一处理单元,其中所述至少一个应用程序包括第一应用程序和至少一个第二应用程序,并且其中所述第一分组指示所述第二处理单元已完成对针对所述第一应用程序的命令的执行。
21.根据权利要求20所述的第一处理单元,其中所述OS被配置为响应于接收到所述第一分组而选择至少一个第三应用程序以在所述第二处理单元上与所述至少一个第二应用程序并发执行。
22.根据权利要求21所述的第一处理单元,其中所述OS被配置为基于所述至少一个第二应用程序和所述至少一个第三应用程序的特性来确定所述物理路径集合的所述重新配置。
23.根据权利要求22所述的第一处理单元,其中所述API被配置为在所述第二处理单元上发起针对所述至少一个第二应用程序和所述至少一个第三应用程序的命令的并发执行之前传输对所述第二处理单元的所述重新配置的所述请求。
CN202180016534.1A 2020-02-28 2021-02-26 多租户图形处理单元的动态透明重新配置 Active CN115335851B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/804,345 2020-02-28
US16/804,345 US11403729B2 (en) 2020-02-28 2020-02-28 Dynamic transparent reconfiguration of a multi-tenant graphics processing unit
PCT/US2021/019855 WO2021173959A1 (en) 2020-02-28 2021-02-26 Dynamic transparent reconfiguration of a multi-tenant graphics processing unit

Publications (2)

Publication Number Publication Date
CN115335851A true CN115335851A (zh) 2022-11-11
CN115335851B CN115335851B (zh) 2024-04-02

Family

ID=77463845

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180016534.1A Active CN115335851B (zh) 2020-02-28 2021-02-26 多租户图形处理单元的动态透明重新配置

Country Status (6)

Country Link
US (1) US11403729B2 (zh)
EP (1) EP4111409A4 (zh)
JP (1) JP7490791B2 (zh)
KR (1) KR20220148229A (zh)
CN (1) CN115335851B (zh)
WO (1) WO2021173959A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240184623A1 (en) * 2022-12-01 2024-06-06 Ati Technologies Ulc Job limit enforcement for improved multitenant quality of service
US20240193844A1 (en) * 2022-12-08 2024-06-13 Advanced Micro Devices, Inc. Configurable multiple-die graphics processing unit

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5884090A (en) * 1997-07-17 1999-03-16 International Business Machines Corporation Method and apparatus for partitioning an interconnection medium in a partitioned multiprocessor computer system
US20080074433A1 (en) * 2006-09-21 2008-03-27 Guofang Jiao Graphics Processors With Parallel Scheduling and Execution of Threads
US20100123717A1 (en) * 2008-11-20 2010-05-20 Via Technologies, Inc. Dynamic Scheduling in a Graphics Processor
US20110080415A1 (en) * 2009-10-06 2011-04-07 Duluk Jr Jerome F Inter-shader attribute buffer optimization
US20110115802A1 (en) * 2009-09-03 2011-05-19 Michael Mantor Processing Unit that Enables Asynchronous Task Dispatch
CN103729167A (zh) * 2012-10-12 2014-04-16 辉达公司 用于改进多线程处理单元中的性能的技术
CN105830026A (zh) * 2013-11-27 2016-08-03 英特尔公司 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
US20180114290A1 (en) * 2016-10-21 2018-04-26 Advanced Micro Devices, Inc. Reconfigurable virtual graphics and compute processor pipeline

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8111260B2 (en) 2006-06-28 2012-02-07 Microsoft Corporation Fast reconfiguration of graphics pipeline state
US9142057B2 (en) 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
US20130155077A1 (en) 2011-12-14 2013-06-20 Advanced Micro Devices, Inc. Policies for Shader Resource Allocation in a Shader Core
US9142004B2 (en) 2012-12-20 2015-09-22 Vmware, Inc. Dynamic allocation of physical graphics processing units to virtual machines

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5884090A (en) * 1997-07-17 1999-03-16 International Business Machines Corporation Method and apparatus for partitioning an interconnection medium in a partitioned multiprocessor computer system
US20080074433A1 (en) * 2006-09-21 2008-03-27 Guofang Jiao Graphics Processors With Parallel Scheduling and Execution of Threads
US20100123717A1 (en) * 2008-11-20 2010-05-20 Via Technologies, Inc. Dynamic Scheduling in a Graphics Processor
US20110115802A1 (en) * 2009-09-03 2011-05-19 Michael Mantor Processing Unit that Enables Asynchronous Task Dispatch
CN102640115A (zh) * 2009-09-03 2012-08-15 先进微装置公司 包括具有多缓冲区以使在着色器核心上不同类型工作能够异步并行分派的指令处理器的图形处理单元
US20110080415A1 (en) * 2009-10-06 2011-04-07 Duluk Jr Jerome F Inter-shader attribute buffer optimization
CN103729167A (zh) * 2012-10-12 2014-04-16 辉达公司 用于改进多线程处理单元中的性能的技术
CN105830026A (zh) * 2013-11-27 2016-08-03 英特尔公司 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
US20180114290A1 (en) * 2016-10-21 2018-04-26 Advanced Micro Devices, Inc. Reconfigurable virtual graphics and compute processor pipeline

Also Published As

Publication number Publication date
KR20220148229A (ko) 2022-11-04
US20210272229A1 (en) 2021-09-02
US11403729B2 (en) 2022-08-02
JP2023514998A (ja) 2023-04-12
EP4111409A4 (en) 2023-12-06
CN115335851B (zh) 2024-04-02
EP4111409A1 (en) 2023-01-04
JP7490791B2 (ja) 2024-05-27
WO2021173959A1 (en) 2021-09-02

Similar Documents

Publication Publication Date Title
US10664942B2 (en) Reconfigurable virtual graphics and compute processor pipeline
JP7522204B2 (ja) 計算ノードと計算ノードのアレイの中のストレージサーバとの間でのpciエクスプレスファブリックによる高速ストレージアクセスを提供するネットワークアーキテクチャ
JP5170782B2 (ja) ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ
EP2549382B1 (en) Virtual GPU
WO2018119952A1 (zh) 一种设备虚拟化方法、装置、系统及电子设备、计算机程序产品
US10217183B2 (en) System, method, and computer program product for simultaneous execution of compute and graphics workloads
US9063793B2 (en) Virtual server and virtual machine management method for supporting zero client by providing host interfaces from classified resource pools through emulation or direct connection modes
US9292965B2 (en) Accelerated data structure positioning based upon view orientation
US20110063285A1 (en) Rendering of stereoscopic images with multithreaded rendering software pipeline
CN115335851B (zh) 多租户图形处理单元的动态透明重新配置
JP4443474B2 (ja) コマンド転送制御装置およびコマンド転送制御方法
Xie et al. OO-VR: NUMA friendly object-oriented VR rendering framework for future NUMA-based multi-GPU systems
WO2024123775A1 (en) Configurable multiple-die graphics processing unit
US20220237851A1 (en) Spatial partitioning in a multi-tenancy graphics processing unit
WO2024006501A1 (en) Dynamic memory reconfiguration
US12051144B2 (en) Fully utilized hardware in a multi-tenancy graphics processing unit
CN114402302A (zh) 灵活的多用户图形架构
US9098383B1 (en) Consolidated crossbar that supports a multitude of traffic types
CN117453386A (zh) 多实体系统中的存储器带宽分配

Legal Events

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