CN117882107A - 用于图形处理器的逻辑插槽到硬件插槽映射 - Google Patents

用于图形处理器的逻辑插槽到硬件插槽映射 Download PDF

Info

Publication number
CN117882107A
CN117882107A CN202280055282.8A CN202280055282A CN117882107A CN 117882107 A CN117882107 A CN 117882107A CN 202280055282 A CN202280055282 A CN 202280055282A CN 117882107 A CN117882107 A CN 117882107A
Authority
CN
China
Prior art keywords
graphics
slots
slot
logical
jobs
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
CN202280055282.8A
Other languages
English (en)
Inventor
A·M·哈维尔
S·菲舍威克
D·A·哥特沃尔特
B·鲍曼
R·C·泰勒
M·L·贝莱斯
M·怀尔德
A·拉巴尼兰科希
F·W·麦克加里
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.)
Apple Inc
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Priority claimed from PCT/US2022/037716 external-priority patent/WO2023018529A1/en
Publication of CN117882107A publication Critical patent/CN117882107A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/5044Allocation 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 hardware capabilities
    • 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/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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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
    • 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/5055Allocation 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 software capabilities, i.e. software resources associated or available to the machine
    • 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5014Reservation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

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

Abstract

所公开的技术涉及图形处理器中的工作分配。在一些实施方案中,一种装置包括实现多个逻辑插槽的电路以及各自实现多个分布式硬件插槽的图形处理器子单元的集合。该电路可确定用于图形工作的第一集合和图形工作的第二集合的不同分配规则,并且基于这些分配规则来将逻辑插槽映射到分布式硬件插槽。在各种实施方案中,所公开的技术可有利地针对各种大小的图形启动跨分布式着色器处理器高效地分配工作。

Description

用于图形处理器的逻辑插槽到硬件插槽映射
背景
技术领域
本公开整体涉及图形处理器,并且更具体地涉及用于在具有多个复制的处理元件的图形处理器中分配图形工作的技术。
背景技术
鉴于图形处理单元(GPU)不断增长的计算能力,它们现在正被广泛用于大规模工作负载。例如,工作负载可包括顶点着色器、片段着色器和计算任务。诸如Metal和OpenCL的API为软件开发人员提供了一个接口,以便为他们的应用程序而访问GPU的计算能力。最近,软件开发人员一直在将他们的应用程序的很大一部分转移到使用GPU。
随着处理技术缩小并且GPU变得更强大,其可能包含大量着色器核心。软件或固件可提供要执行的工作单元,称为“启动”。数据主控器电路(例如,计算数据主控器、顶点数据主控器和像素数据主控器)可例如通过通信结构将来自这些启动的工作分配到多个复制的着色器核心。随着着色器的数量按比例调节,工作分配和调度技术可能显著影响性能和功率消耗。
附图说明
图1A是示出根据一些实施方案的示例性图形处理操作的概述的图示。
图1B是示出根据一些实施方案的示例性图形单元的框图。
图2是示出根据一些实施方案的被配置为将逻辑插槽映射到分布式硬件插槽的示例性主控制电路的框图。
图3是示出根据一些实施方案的主控制电路以及GPU硬件子单元的示例性组的框图。
图4是示出根据一些实施方案的用于将逻辑插槽映射到分布式硬件插槽的三个示例性分配模式的图示。
图5是示出根据一些实施方案的使用不同分配模式的多个逻辑插槽到分布式硬件的示例性映射的图示。
图6是示出根据一些实施方案的主控制电路的详细示例性元件的框图。
图7是示出根据一些实施方案的示例性分布式插槽状态和内核驻留信息的图示。
图8是示出根据一些实施方案的用于将逻辑插槽映射到分布式mGPU硬件插槽的示例性方法的流程图。
图9是示出根据一些实施方案的示例性软件覆盖字段的图示。
图10A至图10C是示出根据一些实施方案的用于基于不同示例性分配模式的硬件插槽状态来选择硬件插槽的示例性技术的流程图。
图11A是示出根据一些实施方案的示例性逻辑插槽保持状况值的图示。
图11B是示出根据一些实施方案的用于回收硬件插槽的示例性技术的流程图。
图12是示出根据一些实施方案的示例性软件控制的硬件插槽保留过程的流程图。
图13是示出根据一些实施方案的mGPU中用于较高优先级逻辑插槽的示例性预留硬件插槽的图示。
图14A示出了根据一些实施方案的对无条件字段进行编码的示例性高速缓存刷新无效命令,并且图14B示出了根据一些实施方案的示例性刷新控制电路。
图15是示出根据一些实施方案的由图形工作的集合指示的示例性亲和力映射的框图。
图16是示出根据一些实施方案的用于基于亲和力的调度的示例性内核遍历器电路的框图。
图17是示出根据一些实施方案的基于软件指示的亲和力的内核的示例性迭代的图示。
图18是示出根据一些实施方案的示例性工作共享控制电路的框图。
图19A是示出根据一些实施方案的具有依赖性跟踪和状况电路的示例性逻辑插槽管理器的框图,并且图19B示出了根据一些实施方案的示例性跟踪和状况字段。
图20是示出根据一些实施方案的用于启动插槽管理器的示例性寄存器预取缓冲器的图示。
图21是示出根据一些实施方案的用于由启动插槽管理器处理的顶部插槽的示例性状态机的图示。
图22至图25是示出根据一些实施方案的示例性方法的流程图。
图26是根据一些实施方案的示出一种示例性计算设备的框图。
图27是示出根据一些实施方案的所公开的系统和设备的示例性应用的图示。
图28是示出根据一些实施方案的一种存储电路设计信息的示例性计算机可读介质的框图。
具体实施方式
本公开涵盖涉及逻辑启动插槽以及从逻辑启动插槽到分布式硬件的工作分配的各种技术。图1A至图1B提供了图形处理器的概述。图2至图8提供了用于将逻辑插槽映射到分布式硬件插槽以用于图形处理的技术的概述。图9示出了可能影响映射的示例性软件覆盖。图10至图14示出了用于在逻辑插槽映射的上下文中实施分配模式、回收硬件插槽、保留硬件插槽、提供逻辑插槽优先级以及处理高速缓存刷新操作的示例性技术。图15至图18示出了用于基于亲和力的调度的示例性技术。图19至图21示出了与软件交接并且配置逻辑插槽的启动插槽管理器。其余附图示出了示例性方法、系统、应用等。在各种实施方案中,所公开的技术相对于传统技术可有利地改进图形处理器的性能或减少图形处理器的功率消耗,如下文详细解释。
图形处理概述
参见图1A,其示出了示出用于处理图形数据的示例性处理流程100的流程图。在一些实施方案中,变换和照明过程110可涉及基于限定的光源位置、反射率等处理从应用程序接收的顶点的照明信息,将顶点组装成多边形(例如,三角形),以及基于三维空间中的位置来将多边形转换为正确的大小和取向。剪辑过程115可涉及丢弃在可视区域之外的多边形或顶点。光栅化过程120可涉及在每个多边形内限定片段并且例如基于多边形顶点的纹理坐标来为每个片段分配初始色值。片段可指定它们重叠的像素的属性,但可基于组合多个片段(例如,在帧缓冲器中)、忽略一个或多个片段(例如,如果它们被其他对象覆盖)或两者来确定实际像素属性。着色过程130可涉及基于照明、阴影、隆起映射、半透明度等来改变像素分量。可将着色像素组装在帧缓冲器135中。现代GPU通常包括允许应用开发者定制着色和其他处理过程的可编程着色器。因此,在各种实施方案中,图1A的示例性元件可以各种顺序执行,并行执行或省略。还可实施另外的处理过程。
现在参见图1B,示出了根据一些实施方案的例示图形单元150的简化框图。在例示的实施方案中,图形单元150包括可编程着色器160、顶点管185、片段管175、纹理处理单元(TPU)165、图像写入单元170、和存储器接口180。在一些实施方案中,图形单元150被配置为使用可编程着色器160来处理顶点数据和片段数据两者,该可编程着色器可被配置为使用多个执行流水线或实例来并行处理图形数据。
在图示实施方案中,顶点管185可包括被配置为处理顶点数据的各种固定功能硬件。顶点管185可被配置为与可编程着色器160通信,以便协调顶点处理。在图示实施方案中,顶点管185被配置为将经处理的数据发送至片段管175或可编程着色器160以用于进一步处理。
在图示实施方案中,片段管175可包括被配置为处理像素数据的各种固定功能硬件。片段管175可被配置为与可编程着色器160通信,以便协调片段处理。片段管175可被配置为在来自顶点管185或可编程着色器160的多边形上执行光栅化以生成片段数据。顶点管185和片段管175可耦接到存储器接口180(未示出耦接)以便访问图形数据。
在图示实施方案中,可编程着色器160被配置为接收来自顶点管185的顶点数据和来自片段管175和TPU 165的片段数据。可编程着色器160可被配置为对顶点数据执行顶点处理任务,该顶点处理任务可包括顶点数据的各种变换和调整。在例示的实施方案中,可编程着色器160还被配置为对像素数据执行片段处理任务,诸如像纹理和着色处理。可编程着色器160可包括用于并行处理数据的多组多个执行流水线。
在一些实施方案中,可编程着色器包括被配置为并行执行一个或多个不同SIMD组的流水线。每个流水线可包括被配置为在给定时钟循环中执行操作(诸如提取、解码、发出、执行等)的各种阶段。处理器“流水线”的概念很好理解,并且是指将处理器对指令执行的“工作”分成多个阶段的概念。在一些实施方案中,指令的解码、分派、执行(即,履行)和撤回可以是不同流水线阶段的示例。许多不同的流水线架构可能具有不同的元件/部分排序。各种流水线阶段在一个或多个处理器时钟循环期间对指令执行此类步骤,然后将指令或与指令相关联的操作传递到其他阶段以供进一步处理。
术语“SIMD组”旨在根据其熟知的含义来解释,其包括线程集合,针对该线程集合,处理硬件使用针对不同线程的不同输入数据并行处理相同指令。各种类型的计算机处理器可包括被配置为执行SIMD指令的流水线的集合。例如,图形处理器通常包括可编程着色器核心,该可编程着色器核心被配置为以SIMD方式执行针对相关线程的集合的指令。可用于SIMD组的名称的其他示例包括:波前、clique或warp。SIMD组可以是较大线程组的一部分,其可以基于计算机的并行处理能力被拆分成多个SIMD组。在一些实施方案中,每个线程被分配给硬件流水线,该硬件流水线获取该线程的操作数并且与线程的集合的其他流水线并行地执行指定操作。需注意,处理器可具有大量流水线,使得多个单独的SIMD组也可并行执行。在一些实施方案中,每个线程例如在寄存器文件中具有私有操作数存储装置。因此,从寄存器文件读取特定寄存器可为SIMD组中的每个线程提供寄存器的版本。
在一些实施方案中,多个可编程着色器单元160被包括在GPU中。在这些实施方案中,全局控制电路可将工作分配给GPU的不同子部分,该GPU的不同子部分继而可将工作分配给着色器核心以由着色器流水线处理。
在例示的实施方案中,TPU 165被配置为调度来自可编程着色器160的片段处理任务。在一些实施方案中,TPU 165被配置为预取纹理数据并将初始颜色分配给片段以供可编程着色器160进一步处理(例如,经由存储器接口180)。TPU 165可被配置为提供例如在规格化整数格式或浮点格式的片段分量。在一些实施方案中,TPU 165被配置为提供呈2x2格式的四个一组(“片段四元组”)的片段,该片段由可编程着色器160中的一组四个执行流水线处理。
在一些实施方案中,图像写入单元(IWU)170被配置为存储图像的处理后图块,并且可在将其传输以用于显示或传输给存储器用于存储之前对渲染后图像执行操作。在一些实施方案中,图形单元150被配置为执行分块式延迟渲染(TBDR)。在分块式渲染中,可单独处理屏幕空间的不同部分(例如,像素的正方形或矩形)。在各种实施方案中,存储器接口180可促进与各种存储器分级结构中的一个或多个的通信。
如上文所讨论,图形处理器通常包括被配置为执行计算系统所请求的某些图形处理操作的专用电路。例如,这可包括固定功能顶点处理电路、像素处理电路或纹理采样电路。图形处理器还可执行可使用GPU着色器核心但可不使用固定功能图形硬件的非图形计算任务。作为一个示例,机器学习工作负载(其可包括推断、训练或两者)通常由于GPU的并行处理能力而指派到GPU。因此,由GPU执行的计算内核可包括指定机器学习任务(诸如实现神经网络层或要由GPU着色器执行的机器学习模型的其他方面)的程序指令。在一些情形中,非图形工作负载还可将专用图形电路例如用于与最初预期不同的目的。
另外,在其他实施方案中,本文参考图形处理器所讨论的各种电路和技术可在其他类型的处理器中实现。其他类型的处理器可包括通用处理器诸如CPU或具有专用并行处理能力的机器学习或人工智能加速器。这些其他类型的处理器可不被配置为执行图形指令或执行图形操作。例如,其他类型的处理器可不包括典型GPU中所包括的固定功能硬件。机器学习加速器可包括用于某些操作(诸如实现神经网络层或机器学习模型的其他方面)的专用硬件。一般来讲,在存储器要求、计算能力、功率消耗和机器学习加速器的可编程性之间可存在设计折衷。因此,不同具体实施可集中于不同性能目标。开发人员可从给定机器学习应用的多个潜在硬件目标中进行选择,例如从通用处理器、GPU和不同专用机器学习加速器中进行选择。
工作分配和逻辑插槽的概述
图2是示出根据一些实施方案的示例性主控制电路和图形处理器子单元的框图。在例示的实施方案中,图形处理器包括主单元210和子单元220A至220N。
例如,主控制电路210可以是计算数据主控器、顶点数据主控器或像素数据主控器。因此,在一些实施方案中,图形处理器包括主控制电路210的多个实例,其将不同类型的工作发送到相同的子单元的集合。主控制电路210可经由接口从软件、固件或两者接收启动。如本文所用,术语“软件”广泛地指可执行程序指令并且例如涵盖固件、操作系统和第三方应用程序。因此,应当理解,本文对软件的各种引用可另选地或附加地应用于固件。在例示的实施方案中,主控制电路210包括逻辑插槽到分布式硬件插槽映射控制电路215。控制电路215可将工作从逻辑插槽(其可称为“启动插槽”)分配到图形处理器的全部或一部分上的分布式硬件插槽(例如,根据下文参考图4讨论的不同分配模式)。
本文将各种电路描述为控制逻辑插槽。术语“逻辑”意指将工作指派到逻辑插槽并不暗示哪个硬件将实际执行所指派的工作的图形指令。控制电路可包括维持逻辑插槽的信息并且将工作从逻辑插槽指派到硬件插槽以供实际执行的硬件。因此,在初始指派到逻辑插槽时,将执行工作的集合的硬件插槽是未知的。如下文所详细讨论,当调度图形具体地在具有多个着色器核心的图形处理器中工作时,逻辑插槽可在性能和功率消耗方面提供各种优点。
可以执行多个“启动”以渲染图形数据帧。在一些实施方案中,启动是来自单个上下文的工作单元,其可包括要执行的多个线程(并且可能潜在包括未由着色器执行的其他类型的图形工作)。启动可能不提供关于线程之间的存储器同步(除线程本身指定的之外)、线程之间的并发性或线程之间的启动顺序的任何保证。在一些实施方案中,可以根据另一个启动的结果来识别启动,这可以允许存储器同步而不需要硬件存储器一致性支持。通常,在将工作发送到流水线以进行处理之前,图形固件或硬件程序配置为每个启动注册。通常,一旦开始启动,它就不会访问超过某个级别的存储器分级结构,直到启动完成(此时可将结果写入分级结构中的另一级别)。给定启动的信息可包括完成对应图形操作所需的状态信息、要执行的着色器程序的位置、缓冲器信息、纹理数据的位置、可用地址空间等。例如,当启动完成时,图形固件或硬件可以安排启动并检测中断。在一些实施方案中,图形单元的各部分被配置为一次在单个启动上工作。如本文所详细讨论,跟踪插槽(也称为“顶部插槽”)和逻辑启动插槽可用于在将启动指派到着色器硬件之前控制启动。启动可包括一个或多个渲染命令的集合,其可包括用于绘制过程式几何结构的命令、用于设置阴影采样方法的命令、用于绘制网格的命令、用于检索纹理的命令、用于执行生成计算的命令等。可以在帧渲染期间的各个阶段中的一个阶段执行启动。渲染阶段的示例包括但不限于:相机渲染、光渲染、投影、纹理化、片段着色等。例如,可以为计算工作、顶点工作或像素工作调度启动。
在一些实施方案中,子单元220是可被复制以增加GPU的处理能力的缩放单元。每个GPU子单元220可能够独立地处理图形程序的指令。在例示的实施方案中,子单元220包括实现相应分布式硬件插槽230的电路。这些硬件插槽在本文中也可称为“dSlot”。每个子单元可包括多个硬件插槽230。子单元在本文中也可称为“mGPU”。在一些实施方案中,主控制电路210将工作从逻辑插槽指派到每个子单元220中的至多一个分布式硬件插槽。在一些实施方案中,每个子单元包括片段生成器电路、被配置为执行着色器程序的着色器核心电路、存储器系统电路(其可包括一个或多个高速缓存和存储器管理单元)、几何处理电路和分布式工作负载分配电路(其可与主控制电路210协调以将工作分配到着色器流水线)。
每个分布式硬件插槽可包括被配置为处理所指派的启动或其一部分的各种电路,包括配置寄存器、工作队列、被配置为迭代通过队列中的工作(例如,计算工作项的批次)的电路、对上下文加载/存储进行排序的电路,以及工作分配跟踪电路。每个子单元220可包括多个着色器,这些着色器从子单元中的分布式插槽接受工作并且使用流水线来执行工作。例如,每个着色器可包括用于每个分布式硬件插槽的队列并且可基于工作优先级从队列中选择工作。
在一些实施方案中,给定子单元220包括图1的多个可编程着色器160。
如下文所详细讨论,逻辑插槽到分布式硬件插槽映射控制电路215可基于各种参数、软件控制输入等来跨子单元220分配启动。
图3是示出根据一些实施方案的主控制电路和分组的处理器子单元的更详细示例的框图。在例示的实施方案中,主控制电路210与启动插槽管理器(KSM)350通信,并且包括配置寄存器312。这些配置寄存器可包括设置寄存器和执行寄存器两者。设置阶段寄存器可以是与用于执行启动的分布式硬件无关的全局结构,而执行寄存器可以是每子单元结构。一般来讲,尽管在主控制电路210中示出,但配置寄存器可包括在各种适当的电路中(例如,在分布式控制电路340中)并且可具有不同范围(例如,一些寄存器可被引导范围化,一些寄存器与逻辑插槽相关联,并且一些寄存器与分布式插槽相关联)。一些配置寄存器可被共享并且将相同值编程到全局寄存器电路和每子单元寄存器电路两者中。配置寄存器数据可以定义的格式存储在存储器中,并且被检索和解包以填充用于给定启动的物理配置寄存器。
在例示的实施方案中,mGPU 320A-320N被分组,并且主控制电路210与多个此类组通信。mGPU是子单元220的示例。在例示的实施方案中,mGPU的每个组305共享高速缓存360。例如,在每个mGPU 320维持1级高速缓存的实施方案中,这可以是2级高速缓存。该共享高速缓存可用于存储指令、数据或两者。如下文所详细讨论,将具有数据亲和力属性的工作调度到相同组305对于高速缓存效率可能是有益的。在一些实施方案中,例如在多管芯具体实施中,在相同的管芯或半导体基板上实现mGPU的每个组305。
在例示的实施方案中,每个mGPU 320包括分布式控制电路,该分布式控制电路可从主控制电路210接收工作,在mGPU内指派工作,并且将工作完成报告回主控制电路210(例如,经由通信结构)。指派工作的信号可不包括要执行的实际指令或要对其操作的数据,但是可标识要执行的程序指令的位置。
在例示的实施方案中,启动插槽管理器350被配置为从软件/固件接口接收启动并且将启动传送到主控制电路210以用于指派到逻辑插槽。下文参考图6详细讨论了启动插槽管理器350和控制电路之间的示例性通信,并且下文参考图19讨论了启动插槽管理器350的详细示例性实施方案。
下文详细讨论的图4和图5提供了根据一些实施方案的由控制电路215的实施方案实现以从逻辑插槽分配工作的技术的示例。
图4是示出根据一些实施方案的三种示例性分配模式的图示。一般来讲,分配模式指示分配的广度。在例示的示例中,每个mGPU实现三个分布式硬件插槽(DS0至DS2)并且两个组(组0和组1)各自包括两个mGPU(mGPU0和mGPU1)。需注意,在各个实施方案中,可实现每个mGPU的各种数量的硬件插槽、每个组的各种数量的mGPU和每个图形处理器的各种数量的组。具有不同特定示例性数量的元件的实施方案是出于解释的目的而在本文中讨论的,但这些示例并不旨在限制本公开的范围。
如上文所讨论,在所有三个示例性模式下,允许逻辑插槽占用给定mGPU的至多一个硬件插槽。在图4中使用斜线阴影示出了从逻辑插槽向其分配工作的硬件插槽。需进一步注意,在某些情况下,控制电路215可动态地调整逻辑到硬件插槽映射。逻辑插槽将工作分配到mGPU中的分布式控制电路,其中它被指派有硬件插槽。然后,分布式控制电路可将工作分配到其在mGPU内的着色器。
在例示的示例中,模式A是单mGPU分配模式。在该模式下,控制电路215将工作从逻辑插槽指派到单个mGPU上的单个硬件插槽。
在例示的示例中,模式B是单组分配模式。在该模式下,控制电路215将工作从逻辑插槽指派到mGPU的组(在该示例中为组0)中的每个mGPU上的插槽。
在例示的示例中,模式C是较大的多组分配模式。在该模式下,控制电路215将工作从逻辑插槽指派到mGPU的多个组(例如,在一些实施方案中,图形处理器上的每一组)中的每个mGPU中的插槽。
控制电路215可基于下文详细讨论的各种考虑因素来确定逻辑插槽(或者例如,对于内核而言,指派到逻辑插槽的启动的一部分)的分配模式。一般来讲,控制电路215可基于主控制电路在特定时间管理的工作量、基于工作集合的大小、或基于这两者来选择分配模式。另外,软件覆盖功能可允许软件或固件调整启动中的工作的分配。仍进一步地,优先级、动态重新映射和回收技术可影响逻辑到硬件插槽映射。
控制电路215可向启动插槽管理器350报告硬件插槽配给和解除配给,这可允许软件或固件查询关于当前逻辑插槽映射(例如,分配模式、特定映射等)的信息。
需注意,组织的组/mGPU/硬件插槽级别是出于解释的目的而包括的,但并不旨在限制本公开的范围。在一些实施方案中,可省略组织的“组”级别,这可导致仅两种分配模式:单mGPU或多mGPU。在一些实施方案中,可实现组织的附加级别,其可与附加分配模式(例如,群组的组,除了单mGPU模式和单组模式之外,这可导致单组群组模式和多组群组模式)相关联。
图5是示出根据一些实施方案的从多个逻辑插槽对可用硬件插槽的示例性填充的图示。在例示的示例中,控制电路215使用多个分配模式来将九个逻辑插槽510A至510I映射到(四组四个mGPU中的)四十八个分布式插槽。
在例示的示例中,电路215针对逻辑插槽510A、510D、510G和510I使用单mGPU分配模式。例如,逻辑插槽510A在组0的mGPU 0中接收单个分布式插槽DS0。
电路215针对逻辑插槽510B、510E和510H使用单组分配模式。例如,逻辑插槽510B在组1的每个mGPU上接收分布式插槽DS0。
电路215针对逻辑插槽510C和510F使用多组分配模式。例如,逻辑插槽510C在每个例示的mGPU上接收分布式插槽。
需注意,可并非总是指派所有硬件插槽,但一般来讲填充可用插槽可改进性能。当指派到逻辑插槽的启动已完成时,可将另一启动指派到该逻辑插槽,并且可将逻辑插槽重新映射到物理插槽。
示例性控制电路
图6是示出根据一些实施方案的详细示例性控制电路的框图。在例示的实施方案中,启动插槽管理器与映射控制电路215通信,在例示的实施方案中,该映射控制电路包括:dSlot资源配给器620、控制流处理器(CSP)630A至630N、内核处理器640A至640N、mGPU指派电路650A至650N以及启动插槽仲裁器660。在一些实施方案中,由处理器支持的每个逻辑插槽具有元件630、640和650的指派集合。需注意,虽然图6的某些细节与计算工作相关,但类似技术可用于其他类型的工作,诸如顶点和像素着色。
在例示的实施方案中,启动插槽管理器350将启动指派到逻辑插槽并且将启动信息发送到对应控制流处理器630。控制流处理器630可在启动已经完成处理时通知启动插槽管理器350。
在例示的实施方案中,控制流处理器630管理其启动插槽的定序、提取并执行控制流以用于启动,并且跟踪启动完成。控制流处理器630可在内核粒度下操作(可从控制流提取内核以用于启动)。控制流处理器630可与dSlot资源配给器620通信以获得用于其逻辑插槽的dSlot资源。控制流处理器630被配置为确定内核的分配模式并且将具有其分配模式和分布式插槽指派的内核发送到内核处理器640。
在一些实施方案中,dSlot资源配给器620包括被配置为从多个逻辑插槽接收请求并且处理请求以将dSlot指派到内核的电路。在一些实施方案中,dSlot资源配给器620选择分配模式并为启动的各部分指派dSlot(例如,在内核粒度下),尽管也设想了其他粒度。在一些实施方案中,dSlot资源配给器620首先基于启动优先级来指派逻辑插槽,并且然后基于启动年龄来指派,如下文进一步详细讨论。例如,DRA 620可为来自具有大于阈值的优先级级别的启动的内核预留一些分布式插槽。
在例示的实施方案中,内核处理器640被包括在主计算数据主控器中。内核处理器640被配置为创建来自内核的工作组的批次,并且将具有其分配模式和分布式插槽指派的批次发送到mGPU指派电路650。内核处理器640可基于亲和力、负载平衡或两者来选择用于分配的批次,如下文所详细讨论。内核处理器640可接收所指派的dSlot的指示和目标掩模,该目标掩模指示允许哪些mGPU成为内核的目标。
如本文所用,图形上下文中的术语“计算内核”旨在根据其熟知的含义来解释,其包括针对加速硬件诸如图形处理器编译的例程。例如,内核可由单独的程序语言诸如OpenCL C指定,可以着色语言诸如OpenGL编写为计算着色器,或者以高级语言嵌入应用程序代码中。计算内核通常包括多个工作组,这些工作组继而包括多个工作项(也称为线程)。需注意,本文参考计算内核讨论的各种技术可应用于其他类型的工作,诸如顶点或像素处理任务。
在例示的实施方案中,mGPU指派电路650接收批次并且将批次发送到目标mGPU。电路650可接收批次以及可允许mGPU目标的掩模,这可随分配模式而变化。使用该掩模,电路650可基于负载平衡来选择mGPU目标。
在例示的实施方案中,启动插槽仲裁器660从可用批次中进行选择以发送到目标mGPU。例如,启动插槽仲裁器660可选择一个或多个逻辑启动插槽以在每个周期发送一个批次。所选择的批次(以及与执行状况相关联的返回信息)可经由通信结构来传输。结构可专用于控制信令,例如,如在2021年1月26日提交的名称为“Shared Control Bus forGraphics Processors”的美国专利申请17/158,943号中所讨论。
下文详细讨论了由图6的电路执行的各种附加功能,例如,在讨论特定功能诸如动态映射、软件覆盖、优先级、保留技术、回收技术、高速缓存刷新和亲和力的部分中。
按照内核映射技术
在一些实施方案中,在执行计算启动(compute kick)期间的按照内核映射可提供动态配给,其在启动粒度下将是困难的(可能难以在执行启动之前确定启动应当占用多少个分布式插槽)。如上文简要讨论的,控制流处理器630和dSlot资源配给器620可促进这些技术。
图7是示出根据一些实施方案的示例性分布式插槽状态和内核驻留信息的图示。该信息可促进动态映射。
在例示的示例中,针对每个dSlot维持dslot_status并且该dslot_status指示dSlot为无效、正在运行、清空、正在刷新还是保留。无效状态指示dSlot不为任何逻辑插槽所拥有。正在运行状态指示dSlot为逻辑插槽所拥有并且当前正在执行。清空状态指示dSlot为逻辑插槽所拥有并且已完成执行。正在刷新状态指示dSlot在处于高速缓存刷新(例如,与存储器分级结构的刷新-无效)过程中时为逻辑插槽所拥有。保留状态指示dSlot为逻辑插槽所拥有并且在内核完成之后(例如,在内核结束高速缓存刷新无效之后)被保留,例如以保存性能数据。需注意,这些状态是出于解释的目的而包括的,但在其他实施方案中,可实现其他状态,可省略状态,或者可实现两种情况。
在例示的示例中,针对每个dSlot维持dslot_owner状态并且该dslot_owner状态指示拥有dSlot的逻辑插槽。该字段与无效状态无关,因为无逻辑插槽拥有无效dSlot。
在例示的示例中,针对每个内核和每个mGPU维持per_kernel_residency状态,并且该per_kernel_residency状态指示内核是否被指派到mGPU。需注意,按照内核维持用于计算工作的各种信息可类似地针对启动或启动的部分维持用于不利用内核的其他类型的工作。
图8是示出根据一些实施方案的用于映射启动的内核的示例性方法的流程图。
在810处,在例示的实施方案中,控制电路等待直到内核依赖性已清除并且指派到启动的逻辑插槽具有空闲内核处理器。这允许前一内核在开始下一内核进行启动之前完成迭代。
在820处,在例示的实施方案中,CSP确定分配模式并且将具有分配模式的请求发送到DRA 620。
在830处,DRA 620以分布式插槽配给做出响应。下文详细讨论了示例性DRA仲裁算法。
在840处,在例示的示例中,主控制电路执行若干活动。首先,它将分布式插槽开始消息发送到在其上针对内核配给了dSlot的所有mGPU。接下来,它将寄存器写入命令发送到包括用于指示哪些dSlot受到影响的dSlot掩模的寄存器复制单元。寄存器复制单元针对内核写入分布式插槽范围控制寄存器。(寄存器复制单元可能已经写入逻辑插槽范围控制寄存器以用于启动。)最后,主控制电路将工作发送到所指示的mGPU。需注意,工作可被隔离,直到寄存器复制单元的所有寄存器写入完成。
主控制电路还可跟踪其分配的每个内核的完成状况。例如,它可检测内核正在其上执行的dSlot何时已经全部从正在运行转变为清空。
示例性软件覆盖技术
在一些实施方案中,软件可提供覆盖内核的默认分配模式的各种指示。例如,这可允许软件将重要工作并行化,而不是冒着将其指派到单个mGPU的风险。另外,这可允许软件将内核指派到mGPU的特定组。
图9是示出示例性软件覆盖字段的图示。软件或固件可调整这些字段以控制内核分配。在例示的实施方案中,mGPU掩模字段指示该启动可使用哪些mGPU。例如,掩模可包括一位每mGPU。这可允许软件指示针对启动避免某些mGPU或将其视作目标。分配模式字段允许软件选择分配模式。默认值可允许逻辑插槽的控制流处理器630选择分配模式。其他值可指定分配模式,该分配模式可由控制流处理器630实现而不管其原本会选择的模式(至少在启用软件覆盖的操作模式下)。在默认模式下,mGPU指派电路650可基于负载平衡根据由CSP选择的分配模式灵活地选择dSlot,而在其他模式下,mGPU指派电路可遵循由软件覆盖指定的限制。
力组字段允许软件选择要在其上执行启动的组。例如,这可结合单mGPU或单组分配模式来指定。策略字段允许软件指定用于单mGPU或单组分配的调度策略。在例示的示例中,软件可指定“选择第一选项”策略(其可为默认值)或循环策略。选择第一选项策略可根据第一可用元素(例如,mGPU或组)的索引来选择第一可用元素,这可避免片段化并且为其他切片留出更多连续dSlot。循环策略可随机化资源的使用,这可避免所选择的资源的位置引起显著的性能差异,但可在多个组上散布小的切片。在其他实施方案中,可指定各种策略。下文讨论了考虑软件覆盖字段的仲裁的详细示例。
示例性仲裁技术
图10A至图10C是示出根据一些实施方案的用于相应不同分配模式的硬件插槽仲裁的示例性技术的流程图。需注意,所公开的技术通常可广泛地将连续内核分配在相同的逻辑插槽中(例如,使得如果内核A是被配给mGPU0中的dSlot的单mGPU内核,则也是单mGPU内核的内核B将被指派到mGPU1中的dSlot,这可优先完成逻辑插槽的执行,同时允许较少的逻辑插槽同时运行)。
在一些实施方案中,DRA 620尽可能长久地使dSlot处于清空状态,例如以允许来自相同的逻辑插槽的后续内核使用dSlot。这可减少高速缓存-刷新无效和新配给的dSlot的执行配置寄存器的写入。在一些实施方案中,为另一逻辑插槽所拥有的处于清空状态的dSlot必须经历回收过程(下文参考图11所讨论)并且在被指派到新逻辑插槽之前转变为无效。
一般来讲,如下文所详述,DRA 620使用以下优先级方案来为内核选择dSlot。最高优先级是已经为逻辑插槽所拥有的清空dSlot。这些dSlot使其控制寄存器被写入,并且是空闲的以供立即执行。中间优先级是无效dSlot,其是新配给的并且可能需要控制寄存器写入,但是空闲的以供立即执行。最低优先级是已经为分布式插槽所拥有的正在运行的dSlot。这些dSlot使其控制寄存器被写入,但可能需要在另一内核之后等待。
图10A示出了用于单mGPU分配模式的仲裁方法。在1010处,在例示的实施方案中,DRA 620基于其力组和mGPU掩模字段来确定内核的可允许mGPU的集合。该集合可省略未被软件选择的mGPU的任何组。
在1012处,在例示的实施方案中,DRA 620挑选mGPU,其中内核的逻辑插槽已经拥有处于清空状态的dSlot。需注意,在元素1012、1016和1018并列的情况下,DRA 620使用所确定的策略(例如,在一些实施方案中,默认的、软件指定的、或单一类型的策略)来选择硬件资源。例如,如果存在满足元素1012的多个mGPU,则DRA 620可应用策略来选择mGPU。如果一个或多个mGPU满足这些标准,则选择它们中的一者,并且结束针对该逻辑插槽的仲裁,直到内核完成。否则,流程继续前进。
在1014处,在例示的实施方案中,DRA 620挑选具有至少一个无效dSlot的mGPU,其中逻辑插槽尚未拥有dSlot。如果一个或多个mGPU满足这些标准,则选择它们中的一者,并且结束针对该逻辑插槽的仲裁,直到内核完成。否则,流程继续前进。
在1016处,在例示的实施方案中,DRA 620挑选具有最多无效插槽的mGPU。如果一个或多个mGPU满足这些标准,则选择它们中的一者,并且结束针对该逻辑插槽的仲裁,直到内核完成。否则,流程继续前进。
在1018处,在例示的实施方案中,DRA 620挑选mGPU,其中逻辑插槽已经拥有处于正在运行状态的硬件插槽。如果一个或多个mGPU满足这些标准,则选择它们中的一者,并且结束针对该逻辑插槽的仲裁,直到内核完成。否则,流程继续前进。
在1020处,在例示的实施方案中,DRA 620尝试回收过程。下面参考图11更详细地讨论这种过程的示例。如果回收不成功,则流程继续前进。
在1022处,在例示的实施方案中,DRA 620重启配给机并且重新仲裁。对于各种分配模式,可进行重新仲裁直到足够数量的硬件插槽可用于满足分配模式。
图10B示出了用于单组分配模式的仲裁方法。在1030处,在例示的实施方案中,DRA620确定可允许mGPU的集合,类似于图10A的元素1010。
在1032处,在例示的实施方案中,DRA 620挑选组,其中组中的所有mGPU具有为内核的逻辑插槽所拥有的处于清空或无效状态的dSlot。在并列的情况下,DRA 620挑选具有最少无效dSlot的组。如果一个或多个组满足这些标准,则选择它们中的一者,并且结束针对该逻辑插槽的仲裁,直到内核完成。否则,流程继续前进。
在1034处,在例示的实施方案中,DRA 620挑选组,其中组中的所有mGPU具有为逻辑插槽所拥有的处于正在运行、无效或清空状态的dSlot。在并列的情况下,DRA 620挑选具有带有处于正在运行状态的插槽的最少mGPU的组。如果仍然存在并列,则DRA 620可应用策略。如果一个或多个组满足这些标准,则选择它们中的一者,并且结束针对该逻辑插槽的仲裁,直到内核完成。否则,流程继续前进。
在1038和1040处,dRA 620尝试回收,并且然后重启配给机并且重新仲裁,类似于上文所讨论的元素1020和1022。
图10C示出了用于多组分配模式的仲裁方法。在1050处,在例示的实施方案中,DRA620基于mGPU掩模(而不是基于力组命令,因为在该示例中使用了所有组)来确定可允许mGPU的集合。
在1052处,在例示的实施方案中,DRA 620针对可允许mGPU的集合中的每个目标mGPU执行元素1054至元素1058的操作。在1054处,DRA挑选已经为内核的逻辑插槽所拥有的处于清空或正在运行状态的dSlot。如果一个或多个dSlot满足这些标准,则选择它们中的一者,并且结束针对该逻辑插槽的仲裁,直到内核完成。否则,流程继续前进。
在1056处,在例示的实施方案中,DRA 620挑选无效dSlot。如果一个或多个dSlot满足这些标准,则选择它们中的一者,并且结束针对该逻辑插槽的仲裁,直到内核完成。否则,流程继续前进。在1058处,在例示的实施方案中,DRA 620尝试回收。
如果元素1052的操作在针对内核配给每个mGPU中的dSlot时不成功,则流程前进到1060,并且DRA 620重启配给机并且重新仲裁。
需注意,虽然上文讨论的各种技术考虑软件覆盖字段,但在其他实施方案中,在某些操作模式下,软件覆盖可能不被实现或可能被禁用。在该情况下,DRA可如上文所讨论的那样操作,但省略软件覆盖考虑。
插槽回收
在一些实施方案中,控制电路被配置为允许逻辑插槽回收被指派到另一逻辑插槽的硬件插槽。在一些实施方案中,仅允许较高优先级逻辑插槽从其他逻辑插槽回收硬件插槽。下文讨论了用于实施逻辑插槽优先级的示例性技术,但通常可由软件来指示优先级。在一些实施方案中,仅处于清空状态的硬件插槽有资格被另一逻辑插槽回收。
一般来讲,控制电路可尝试使硬件插槽尽可能长久地保持处于清空状态。这可避免在将硬件插槽切换到新逻辑插槽时执行高速缓存刷新无效和写入配置寄存器的开销(因为使硬件插槽保持处于清空状态可允许相同逻辑插槽从相同启动发送另一内核以使用硬件插槽,这避免了该开销)。然而,由于这一点,允许其他重要的逻辑插槽采用此类硬件插槽可改进性能。
图11A是示出根据一些实施方案的用于硬件插槽回收的保持信号的示例性值的图示。保持信号也可称为持续信号。每个CSP 630可将保持信号发送到DRA 620,该保持信号指示其想要保持到其硬件插槽上的程度(例如,根据CSP 630执行其启动的程度)。
在例示的示例中,保持信号具有三个值中的一个值,但在其他实施方案中设想值的其他集合。低值指示逻辑插槽已达到用于启动的控制流终止信号并且在要处理的内核队列中不留存任何内核。在这种情况下,逻辑插槽将不需要另一硬件插槽用于启动。中值指示逻辑插槽尚未达到控制流终止,但当前不存在准备好请求硬件插槽以用于执行的任何内核。高值指示逻辑插槽具有请求硬件插槽以用于执行的内核。
在一些实施方案中,DRA 620被配置为仅在可回收足够的硬件插槽以满足请求的情况下才回收插槽。否则,回收尝试可能失败。一旦回收成功,则DRA 620重启其状态机并且重新仲裁逻辑插槽。DRA 620可针对任何回收的插槽发起与存储器分级结构的高速缓存刷新无效。这可将那些插槽转变为刷新状态,但一旦它们完成刷新并且转变为无效状态,那些插槽就可变得可用于仲裁。
图11B是示出根据一些实施方案的用于回收当前被指派到另一逻辑插槽的一个或多个硬件插槽的示例性技术的流程图。在1110处,在例示的实施方案中,DRA 620找到处于正在刷新状态的所有dSlot。其可生成指示flushing_set中的dSlot的集合的数据结构。如果这些dSlot足以服务于内核的请求,则DRA 620取消回收并且等待刷新完成。如果否,则流程继续前进。
在1120处,在例示的实施方案中,DRA 620找到被清空并且为(a)未进行上下文存储并且(b)不具有任何刷新dSlot的逻辑插槽所拥有的所有dSlot。其可生成指示该allowed_set中的dSlot的集合的数据结构。如果allowed_set中具有低保持值的dSlot与flushing_set中的dSlot组合并且足以服务于请求,则DRA 620回收那些dSlot并且开始针对那些dSlot的高速缓存刷新无效。如果否,则流程继续前进。
在1130处,在例示的实施方案中,DRA 620首先确定请求是针对低优先级逻辑插槽并相应地进行操作还是针对高优先级逻辑插槽并相应地进行操作。需注意,在其他实施方案中可支持优先级的其他粒度。对于低优先级请求器,DRA 620生成插槽的do_set,这些插槽是为低优先级逻辑插槽所拥有的在allowed_set中具有中等保持值的插槽。DRA 620在flushing_set和do_set两者中找到dSlot。如果这些dSlot足以服务于请求,则DRA 620回收那些dSlot并且开始针对那些dSlot的高速缓存刷新无效。如果否,则流程继续前进。
对于高优先级请求器,DRA 620生成插槽的do_set,这些插槽是为高优先级逻辑插槽所拥有的在allowed_set中具有中等保持值的插槽。DRA 620在flushing_set和do_set两者中找到dSlot。如果这些dSlot足以服务于请求,则DRA 620回收那些dSlot并且开始针对那些dSlot的高速缓存刷新无效。如果否,则流程继续前进。
在1140处,在例示的实施方案中,DRA 620将在allowed_set中具有高保持值并且属于具有较低优先级和较低年龄的逻辑插槽的插槽添加到do_set。DRA 620在flushing_set和更新的do_set两者中找到dSlot。如果这些dSlot足以服务于请求,则DRA 620回收那些dSlot并且开始针对那些dSlot的高速缓存刷新无效。如果否,则其可取消回收并且重新开始仲裁。
在各种实施方案中,所公开的技术可有利地在针对当前逻辑插槽使硬件插槽保持清空(以避免开销)同时在某些场景下仍允许那些硬件插槽被其他逻辑插槽回收之间提供平衡。
插槽保留
在一些实施方案中,控制电路被配置为为逻辑插槽保留硬件插槽,直到被指示释放插槽(例如,通过软件)。这可允许软件查询各种启动信息,诸如性能寄存器、存储器或受启动执行影响的其他数据。在一些实施方案中,每个启动包括retain_slots字段(例如,位),其指示针对逻辑插槽映射的硬件插槽是否应当等待被解除配给。
在一些实施方案中,如果保留有插槽的启动被指派到逻辑插槽,则不管优先级如何,其他插槽不能从该逻辑插槽回收资源。
图12是示出根据一些实施方案的由主控制电路执行以处理保留有插槽的启动的示例性方法的流程图。过程可在与KSM 350通信时执行,以便允许软件通信。在1210处,在例示的示例中,主控制电路210发起设置有retain_slots字段的启动,从而指示应保留插槽硬件插槽。
在1220处,在例示的示例中,启动完成其工作,并且设备执行内核结束刷新处理。硬件插槽保持映射。
在1230处,主控制电路210将kick_done信号发送到KSM 350。其还将dSlot转变为保留状态。
在1240处,软件或固件可查询受启动影响的性能寄存器、存储器等。在1250处,KSM350发送release_slots信号(例如,基于指示查询完成的软件指令)。
在1260处,主控制电路210完成对硬件插槽解除配给的过程,这些硬件插槽转变为无效状态并且现在可用于另一逻辑插槽。在1270处,主控制电路210将解除配给消息发送到KSM 350,通知其解除配给完成。
在一些实施方案中,为了避免挂起条件,维持有插槽的启动总是使用多组分配模式并且不能被阻止完成。因此,当在具有保留的逻辑插槽和没有保留的逻辑插槽之间进行仲裁时,具有保留的逻辑插槽可总是具有优先级。另外,KSM 350可仅调度多达阈值数量(例如,对应于每mGPU的dSlot的数量)的设置有保留的逻辑插槽。在一些实施方案中,设置有保留的所有逻辑插槽被提升到高优先级。
用于高优先级启动的预留插槽
如上文简要讨论的,不同逻辑插槽可具有例如由软件指定的不同优先级级别。在一些实施方案中,在给定mGPU上,为满足阈值优先级的逻辑插槽(例如,具有两个优先级级别的系统中的较高优先级插槽)预留硬件插槽的子集。
图13是示出mGPU的多个硬件插槽的框图。在一些实施方案中,一个或多个dSlot(在图13中以实心黑色示出)被预留用于高优先级逻辑插槽,并且一个或多个dSlot(在图13中以水平阴影示出)可用于所有逻辑插槽(并且是可用于低优先级逻辑插槽的唯一硬件插槽)。
在一些实施方案中,高优先级逻辑插槽在尝试使用其他插槽之前首先尝试使用mGPU的预留硬件插槽。在其他实施方案中,高优先级逻辑插槽可例如使用循环技术来尝试均等地使用mGPU的所有硬件插槽。
在一些实施方案中,不允许低优先级逻辑插槽从高优先级逻辑插槽回收硬件插槽,除非不存在高优先级逻辑插槽将使用它们的机会。
在各种实施方案中,所公开的优先级技术可有利地允许软件影响重要工作的分配以减少来自较不重要工作的阻碍。
刷新技术
如上文所讨论,每当将硬件插槽指派到新逻辑插槽时,可执行高速缓存刷新无效(CFI)。另外,主控制电路210必须执行包括在控制流中的任何CFI以用于计算启动。然而,由于可在内核级别动态地映射硬件插槽,因此要针对控制流CFI刷新的硬件插槽的集合可能不是确定性的。以下讨论提供了用于处理该现象的技术。具体地,引入“无条件”CFI,其刷新所有相关mGPU(例如,在一些具体实施中,图形处理器中的所有mGPU)。
图14A是示出根据一些实施方案的具有无条件字段的示例性高速缓存刷新无效命令的图示。在该示例中,每个CFI包括“无条件”字段。标准(非无条件)CFI应用于在发布标准CFI时为逻辑插槽所拥有的所有硬件插槽。无条件CFI被发送到所有mGPU,即使逻辑插槽在一些mGPU中不拥有任何硬件插槽。
图14B是示出根据一些实施方案的被配置为处理无条件CFI的dSlot资源配给器的实施方案的框图。在例示的示例中,DRA 620包括内核结束刷新控制寄存器1330和解除配给刷新控制寄存器1340。在一些实施方案中,主控制电路210实现状态机,使得在任何给定时间至多一个无条件CFI可以是未完成的。逻辑插槽可对该资源进行仲裁。
内核结束刷新控制寄存器1330可维持指示在内核结束时要刷新哪些mGPU的位的集合。解除配给刷新控制寄存器1340可维持指示在于启动的中间进行dSlot解除配给时要刷新哪些mGPU的位的集合(需注意,这可以是由内核结束刷新指定的位的子集)。
当dSlot被解除配给时,DRA 620可实现以下过程。首先,如果dSlot不在具有针对逻辑插槽配给的dSlot的组中的最后一个mGPU中,则DRA 620使用解除配给刷新控制寄存器1340,其可潜在地使较小数量的高速缓存(例如,由该组共享的一个或多个L1高速缓存而不是L2高速缓存)刷新无效。如果dSlot在组的最后一个mGPU中,则DRA 620使用内核结束刷新控制寄存器1330来确定要刷新哪个高速缓存。
在各种实施方案中,所公开的技术可有利地避免非确定性刷新行为,提高高速缓存效率,或者实现两种情况。
基于亲和力的分配
在多个GPU子单元(例如,组305的mGPU 320A至320N)共享高速缓存的实施方案中,控制电路可将内核的访问相同存储器区域的部分调度到共享高速缓存的子单元。这可提高高速缓存效率,特别是在相同启动的内核之间。
在一些实施方案中,主控制电路210定义亲和力区域的集合,其可对应于共享资源(诸如高速缓存)的硬件的集合。在一些实施方案中,在亲和力区域和mGPU的目标组之间存在固定关系(尽管关系可根据内核的维度而变化)。主控制电路210可包括存储多个亲和力映射的控制寄存器。每个亲和力映射可指定内核部分和亲和力区域之间的关系。以此方式,每个内核可引用反映其存储器访问的亲和力映射(例如,如所确定的并且由软件确定,该软件可配置亲和力映射并且为每个内核指定亲和力映射)。因此,软件可使用配置寄存器来对潜在亲和力模式进行编程,这些配置寄存器也可在多个数据主控器之间共享。在启动内,可根据不同亲和力映射来分配不同内核。
图15是示出根据一些实施方案的用于图形工作的集合(例如,计算内核)的示例性亲和力技术的图示。在例示的实施方案中,图形工作的集合(例如,内核)包括指定亲和力映射1520的亲和力映射指示符1515。例如,指示符可以是指向亲和力映射表的指针或索引。亲和力映射指示针对内核的N个部分的mGPU的对应目标组305。需注意,内核的“部分”可能实际上不是亲和力映射中的字段,而是可基于条目的索引来暗示。例如,亲和力映射中的第三条目可对应于内核的第3/N部分。设备可包括可配置为指定多个不同亲和力映射的配置寄存器。另外,给定亲和力映射可由多个内核引用。
在一些实施方案中,不是将图形工作的集合的部分直接映射到目标组,而是亲和力映射可使用将图形工作的集合的部分映射到亲和力区域然后将亲和力区域映射到硬件的集合(例如,映射到mGPU的组)的间接映射。
控制电路可基于所指示的亲和力映射来分配图形工作的集合。可将图形工作的集合1510的将相同组视作目标的多个部分指派到相同组/亲和力区域(并且因此可共享由该组的mGPU共享的高速缓存,这可提高高速缓存效率)。
需注意,尽管所公开的实施方案在mGPU的组的粒度下指定亲和力,但亲和力可在各种适当粒度中的任一种粒度下指定和实现,例如,利用存储器分级结构中的各种级别处的共享高速缓存。所公开的实施方案是出于说明的目的而包括的,但并不旨在限制本公开的范围。
图16是示出根据一些实施方案的被配置为基于亲和力来分配来自内核的工作组的批次的示例性电路的框图。在例示的实施方案中,用于一个逻辑插槽的控制电路包括:控制流处理器630、主内核遍历器1610、组遍历器1620A至1620N、组遍历器仲裁器1630、mGPU指派电路650、启动插槽仲裁器660和通信结构1660。可针对设备支持的每个逻辑插槽来实例化类似的电路。需注意,元件1610、1630和1640可被包括在上文所讨论的内核处理器640中,并且类似编号的元件可如上文参考图6所描述而配置。
每个内核可被组织成多个维度(通常是三个维度)中的工作组。这些工作组继而可包括多个线程(也称为工作项)。在例示的实施方案中,主内核遍历器1610被配置为根据所指定的亲和力映射来迭代通过内核以提供亲和力子内核,这些亲和力子内核包括内核的将mGPU的组视作目标的部分。主内核遍历器1610可使用子内核的初始工作组的坐标来指示指派到给定组遍历器1620的子内核。需注意,在图16的元件之间发送的各种内核数据可不包括实际工作,而是可以是例如使用与内核的坐标来指示要指派的工作的位置的控制信令。
对于具有不同维度的内核,主内核遍历器1610可将内核划分成N个亲和力区域。例如,在每个亲和力映射具有N个亲和力区域的实施方案中,主内核遍历器1610可将所有N个区域用于一维内核。对于二维内核,主内核遍历器1610可将内核划分成亲和力区域的网格。对于三维内核,主内核遍历器1610可将内核划分成矩形亲和力区域(作为一示例,亲和力区域的跨越整个z维度的/>乘/>网格)。
在例示的实施方案中,组遍历器1620被配置为独立地遍历相应亲和力子内核并且生成批次,其中每个批次包括一个或多个工作组。批次可以是计算工作在其下被分派到mGPU的粒度。需注意,可将给定亲和力子内核划分成多个线程受限的遍历次序子内核,如下文参考图17所详细讨论。在2020年9月11日提交的美国专利申请17/018,913号中讨论了用于控制内核遍历次序的各种技术,并且组遍历器1620可使用这些技术来遍历亲和力子内核。
在例示的实施方案中,组遍历器仲裁器1630被配置为在可用批次之间进行仲裁,并且mGPU指派电路650被配置为将所选择的批次指派到mGPU。
指派电路650可使用mGPU掩模和负载平衡来指派mGPU,服从于任何软件覆盖。启动插槽仲裁器660在准备好的批次之间进行仲裁,并且经由通信结构1660将它们发送到目标mGPU。通信结构1660可以是工作负载指派共享总线(WDSB),其被配置为发送指示所指派的工作的属性的控制信令以及指示工作完成的跟踪信令,例如,如上文引用的'943专利申请中所讨论。
在一些实施方案中,设备可例如基于软件控制或在某些条件下使用控制电路来关闭基于亲和力的调度。在该情况下,主内核遍历器1610可将整个内核指派到单组遍历器1620。
mGPU中的分布式控制电路340的每个实例可包括输入队列和批次执行队列,以在将工作组指派到着色器流水线以供执行之前存储所接收的批次。
图17是示出根据一些实施方案的示例性内核迭代的图示。在例示的实施方案中,内核1710包括多个部分(一个维度中的M个部分以及另一维度中的X个部分)。这些部分中的每个部分可称为亲和力子内核并且可被映射到亲和力区域(需注意,多个亲和力子内核可被映射到相同的亲和力区域)。
在例示的示例中,部分A0包括多个线程受限的子内核部分A至N。在每个亲和力子内核内,组遍历器1620A可使用如在'913申请中阐述的受限的迭代。如图所示,线程受限的子内核部分A被划分成多个批次,这些批次可经由通信结构1660来分配(其中批次中的每个方块表示工作组)。在所公开的实施方案中,来自部分A0的所有批次可被指派到mGPU的相同组(并且需注意,内核1710的其他部分也可将mGPU的该组视作目标)。在各种实施方案中,所公开的亲和力技术可有利地提高高速缓存效率。
在一些实施方案中,基于亲和力的调度可在某些情况下(例如,对于非同质内核)临时降低性能。例如,mGPU的一些组在其他组已经完成内核的较不复杂部分时可能仍在复杂部分上工作。因此,在一些实施方案中,图形处理器实现工作窃取技术以例如在内核结束时覆盖基于亲和力的调度。在这些实施方案中,空闲以供内核使用的mGPU的组可从仍在该内核上工作的组中取得工作,这可有利地减少内核的总执行时间。
在一些实施方案中,控制电路选择mGPU的一个或多个供体组(例如,具有最多剩余工作的组)并且选择处于某些状态(例如,已完成其针对内核的所有工作或至少其工作的阈值量)的mGPU的其他组作为工作受体组。工作受体组可从指派到供体组的亲和力子内核接收批次,从而在某些情况下覆盖亲和力技术。
图18是示出根据一些实施方案的被配置为促进工作共享的示例性电路的框图。在例示的实施方案中,主内核遍历器1610包括电路1810A至1810N,其被配置为跟踪内核的将mGPU的每个组视作目标的剩余部分(例如,亲和力子内核)。例如,如果给定组被七个亲和力子内核视作目标并且已经接收到四个亲和力子内核,则针对该组剩余三个亲和力子内核。
在例示的实施方案中,工作共享控制电路1820被配置为基于由电路1810维持的信息来选择工作供体组和受体组。在例示的实施方案中,在电路1830和1840中维持标识这些组的信息。在一些实施方案中,只有在组与内核的亲和力映射中的亲和力区域相关联的情况下,该组才有资格工作。在一些实施方案中,一旦组已针对内核分派其(经由亲和力映射指派的)所指派的工作中的所有所指派的工作,该组就变得有资格为内核工作。
在一些实施方案中,工作供体组是最靠后(具有最多数量的剩余部分要分派)的组。当组变得有资格接收工作时,它们可锁定到供体组。如图所示,主内核遍历器1610可发送状态信息(例如,亲和力子内核的坐标基础信息)以用于此类受体组的同步。
用于供体的组内核遍历器(在该示例中为1620A)产生工作组的批次,以发送到其对应组中的mGPU或工作受体组中的任何工作受体组的mGPU。例如,合格的mGPU的集合可由来自组遍历器1620A的mGPU掩模指定,使得mGPU指派电路650可基于负载平衡来从合格的mGPU的集合中进行选择。
在一些实施方案中,一旦供体组完成针对其当前部分(例如,亲和力子内核)的分派,则受体变为解锁并且可选择新供体,并且过程可继续直到整个内核被分派。
示例性启动插槽管理器电路
图19A是示出根据一些实施方案的示例性启动插槽管理器的框图。在例示的实施方案中,启动插槽管理器350实现软件接口,并且包括寄存器复制引擎1910和依赖性跟踪和状况电路1920(例如,记分板)。在例示的实施方案中,启动插槽管理器350与存储器接口1930、控制寄存器接口1940和主控制电路210通信。
在一些实施方案中,启动插槽管理器350实现多个“顶部插槽”,软件能够将启动指派到该多个“顶部插槽”。这些顶部插槽在本文中也称为“跟踪插槽”。然后,启动插槽管理器350可处理启动之间的软件指定依赖性,将启动从跟踪插槽映射到主控制电路210中的逻辑插槽,跟踪启动执行状况,并且将状况信息提供到软件。在一些实施方案中,相对于软件控制的具体实施,专用启动插槽管理器电路可有利地减少启动到启动转变时间。
在一些实施方案中,寄存器复制引擎1910被配置为经由存储器接口1930从存储器检索寄存器数据(例如,用于启动配置寄存器)并且经由接口1940对配置寄存器进行编程以用于启动。在一些实施方案中,寄存器复制引擎1910被配置为在为启动配给着色器资源之前将配置寄存器数据预取到内部缓冲器(图19A中未明确示出)中。在各种实施方案中,当发起新启动时,这可减少启动到启动转变时间。寄存器复制引擎1910可经由存储器接口1930访问控制寄存器数据,并且可经由控制寄存器接口1940写入控制寄存器。
在一些实施方案中,寄存器复制引擎1910被配置为按优先级次序预取用于启动的数据并且可在请求附加数据之前不等待检索最初请求的寄存器数据(这可吸收与读取寄存器数据相关联的存储器等待时间)。在一些实施方案中,寄存器复制引擎1910例如基于mGPU掩模来支持掩模广播寄存器编程,使得适当的分布式插槽被编程。在一些实施方案中,使用寄存器复制引擎1910对控制寄存器进行编程可从主固件处理器卸载工作。
在一些实施方案中,启动插槽管理器350被配置为调度启动并且在编程用于启动的所有配置寄存器之前将工作指派信息发送到主控制电路210。一般来讲,初始启动调度可被流水线化。这可包括设置阶段寄存器编程、主控制电路标识分布式插槽、寄存器复制引擎1910与主控制电路对工作进行排队并行地对控制寄存器进行编程、以及一旦最终控制寄存器已被写入就开始排队后的工作。在一些实施方案中,这可允许下游电路接收工作指派并对其进行排队,并且一旦配置寄存器被写入就快速开始处理,从而进一步减少启动到启动转变时间。具体地,相对于等待对工作进行排队直到所有控制寄存器被编程,这可节省与多个控制总线遍历相关联的等待时间。
依赖性跟踪和状况电路1920可存储从软件接收到的信息并且经由软件接口将状况信息提供到软件,如下文所详细讨论。在一些实施方案中,跟踪插槽由多种类型的主控制电路(例如,计算、像素和顶点控制电路)共享。在其他实施方案中,可为某些类型的主控制电路预留某些跟踪插槽。
图19B是示出根据一些实施方案的每跟踪插槽的示例性跟踪和状况数据的图示。在例示的实施方案中,电路1920针对每一跟踪插槽维持以下信息:标识符、状况、数据标识、依赖性、运行数据和配置。下文详细讨论了这些示例性字段中的每个字段。在一些实施方案中,状况和运行数据字段是由软件只读的,而其他字段是可软件配置的。
每个跟踪插槽可被指派唯一的ID。因此,启动插槽管理器350可支持最大数量的跟踪插槽。在各种实施方案中,可选择所支持的跟踪插槽的数量,使得可并行调度足够小的非依赖启动以使用所有可用跟踪插槽是相当罕见的。在一些实施方案中,所支持的跟踪插槽的数量大于所支持的逻辑插槽的数量。
在一些实施方案中,状况字段指示插槽的当前状态以及插槽是否有效。如果适用的话,该字段还可指示逻辑插槽和指派到跟踪插槽的任何分布式插槽。在一些实施方案中,状况字段支持以下状况值:清空、编程完成、寄存器提取开始、等待父进程、等待资源、等待分布式插槽、运行、停止请求、解除配给、由启动插槽管理器退出队列、由主控制电路退出队列、上下文存储、以及完成。在其他实施方案中,状况字段可支持其他状态、所描述状态的子集等。下文参考图21的状态机详细讨论了示例性状态。
在一些实施方案中,数据标识字段指示用于启动的控制寄存器数据的位置。例如,这可被指定为初始寄存器地址和多个配置寄存器。它还可包括寄存器上下文标识符。在一些实施方案中,数据标识字段还指示启动所使用的其他资源,诸如采样器或存储器孔。在某些情况下,这些资源中的一些资源可以是硬资源,使得启动在它们可用之前不能继续前进,而其他资源可以是软资源,并且启动可在没有它们的情况下或者仅利用所请求的资源的一部分来继续前进。作为一个示例,存储器孔可被认为是软资源,并且可允许启动继续前进,即使它们的软资源不可用(潜在地具有发送到请求软件的通知)。
在一些实施方案中,依赖性字段指示插槽对其他插槽中的启动的任何依赖性。作为一个示例,电路1920可实现NxN矩阵(其中N为跟踪插槽的数量),其中每个插槽包括用于每一其他插槽的条目,该条目指示插槽是否取决于其他插槽。当来自其他插槽的启动完成时,可清除条目。在其他实施方案中,可使用其他技术对依赖性进行编码。启动插槽管理器350可根据所指示的依赖性将跟踪插槽指派到逻辑插槽(例如,通过等待将启动指派到逻辑插槽,直到其取决于的所有跟踪插槽已完成)。将依赖性跟踪从软件/固件控制移动到专用硬件可允许更高效地使用逻辑插槽并且可减少启动到启动转变。
在一些实施方案中,运行数据字段提供关于启动的运行状况的信息。例如,该字段可提供用于当启动开始在分布式插槽上运行时以及当启动完成时将启动指派到逻辑插槽的时间戳。也可指示各种其他性能或调试信息。在一些实施方案中,为设置有保留字段的插槽保留各种跟踪插槽信息,并且也不释放它们的映射硬件资源(潜在地允许在逻辑插槽级别、分布式插槽级别或两者处访问状况寄存器)。
在一些实施方案中,配置字段指示控制插槽的主控制电路的类型(例如,计算、像素或顶点)、插槽的优先级、保留插槽指示、力启动结束中断指示或它们的任何组合。例如,该配置字段可能够由软件编程以指示插槽的配置并且提供某些软件覆盖信息。内核结束中断可被全局地设置,或者可被设置为每次启动触发(或者在阈值数量的启动之后触发)。这可有利地减少处理中断所花费的固件时间(通过在某些情况下省略中断),同时在需要时仍保留中断功能。
在各种实施方案中,所公开的跟踪电路可允许软件并行地处理多个启动(例如,能够开始、停止、查询和修改这些启动的执行)。
图20是示出根据一些实施方案的示例性寄存器预取缓冲器组织的图示。在例示的实施方案中,按类型组织寄存器(例如,在该示例中,所有设置寄存器在缓冲器的开始处并且执行寄存器在缓冲器的结束处)。一般而言,设置寄存器用于在其开始之前配置启动,并且执行寄存器用于启动的分布式执行。在例示的实施方案中,缓冲器指示寄存器所处的配置寄存器空间内的偏移及其有效载荷。
预取的寄存器数据的该组织可有利地允许先前寄存器的重写,例如,用于启动到启动缓冲器重用,同时仍然允许在给定类型的寄存器块的开始或结束处保存新寄存器。在各种实施方案中,两个或更多个不同类型的寄存器可按类型分组在一起以促进此类技术。在一些实施方案中,寄存器预取缓冲器是SRAM。在其他实施方案中,寄存器预取缓冲器是高速缓存并且可在需要附加空间时(例如,根据最近最少使用的算法或另一适当的驱逐算法)驱逐条目。
图21是示出根据一些实施方案的示例性启动插槽管理器状态的状态机图示。从清空状态2110,控制电路被配置为使插槽有效以将插槽配给用于启动。当已对插槽的数据(例如,上文参考图19B讨论的依赖性和配置)进行编程时,状态转变为“编程完成”状态2112。在寄存器复制引擎1910已接受提取请求之后,状态转变为寄存器提取开始2114(需注意,在例示的实施方案中,这是在将资源配给到跟踪插槽之前的预取)。在寄存器复制引擎1910已指示提取完成之后,状态转变为“等待父进程”状态2116。一旦满足跟踪插槽的所有依赖性,则状态转变为“等待资源”状态2118。
如图所示,如果在状态2110至2118中的任一个状态中请求停止,则状态转变为“从KSM退出队列”2126。一旦插槽被重置,则状态转变回清空状态2110。需注意,状态2116可能需要比下文详细讨论的其他停止状态少得多的解除配给操作,例如,因为资源尚未配给到插槽。
一旦资源被配给,则状态转变为“等待dSlot状态”2120,并且KSM在2124处等待(例如,来自主控制电路的)控制响应。一旦dSlot被配给,则状态转变为正在运行状态2122。如果在这些状态中请求停止(在2128处示出),则KSM在2130处等待控制响应。如果在停止请求之后或从正在运行状态2122进行启动,则在2132处对插槽解除配给,并且在2138处完成启动。
如果在状态2120或2122中请求停止并且控制响应2130指示逻辑插槽被存储,则状态转变为解除配给状态2134并且在重置插槽之前在2140处等待上下文被存储。如果2130处的控制响应指示出退出队列,则状态转变为解除配给2136并且然后在重置插槽之前“从主控制电路退出队列”2142(相对于状态2134和2140,这可以是不需要逻辑插槽的上下文存储的更优雅的退出队列)。一般来讲,所公开的技术可有利地允许主控制电路暂停多级别工作的调度并允许固件以安全的方式与硬件交互。
一旦插槽从状态2138、2140或2142被重置,则启动插槽管理器确定是否设置了保留字段并且如果否则转变回清空状态2110。如果设置了保留字段,则在2148处,KSM等待任何指派的逻辑插槽被解除指派(例如,基于软件控制)。一般来讲,跟踪插槽可自动地循环,除非它们被明确地保留。
如上文所讨论,依赖性跟踪和状况电路1920可将每个插槽的当前状态提供到软件。
在一些实施方案中,启动插槽管理器350可例如通过允许所支持的跟踪插槽的数量的变化跨多个GPU大小进行缩放。所公开的跟踪插槽(通过固件或软件)然后逻辑插槽(通过主控制电路)再然后分布式插槽的动态分级调度可有利地提供具有跨分级级别分配的调度智能的高效分配。
在一些实施方案中,启动插槽管理器350被配置为基于跟踪插槽来执行一个或多个功率控制操作。例如,控制电路可降低一个或多个电路的功率状态(例如,通过时钟门控、功率门控等)。在具有大量跟踪插槽的一些实施方案中,控制电路可降低其他电路的功率状态,即使当该其他电路具有在跟踪插槽中排队的工作时。例如,控制电路可以降低像素数据主控器的功率状态,即使当它在跟踪插槽中具有启动时。
在一些实施方案中,对于调度的跟踪插槽,如果其处于低于期望的功率状态,则该调度的跟踪插槽的第一动作是增加任何相关联电路的功率状态。例如,控制电路可通过写入用于像素数据主控器的通电寄存器来开始像素启动。一般来讲,设备可对各种类型的逻辑(例如,高速缓存、过滤逻辑、光线跟踪电路等)进行功率门控,并且在跟踪插槽将使用该逻辑时接通那些逻辑块。在一些实施方案中,启动插槽管理器350针对每个跟踪插槽维持一个或多个标志,这些标志指示指派到跟踪插槽的启动是否使用一种或多种类型的电路。启动插槽管理器350可响应于那些跟踪插槽的调度而致使那些类型的电路满足所要求的功率状态。
示例性方法
图22是示出根据一些实施方案的用于使用逻辑插槽来分配图形工作的示例性方法的流程图。图22所示的方法可结合本文所公开的计算机电路、系统、设备、元件或部件等中的任一者来使用。在各种实施方案中,所示的方法元素中的一些可按与所示次序不同的次序并发执行,或者可被省去。也可根据需要执行附加的方法元素。
在2210处,在例示的实施方案中,控制电路将图形工作的第一集合和图形工作的第二集合指派到第一逻辑插槽和第二逻辑插槽。在一些实施方案中,电路实现多个逻辑插槽,并且图形处理器子单元的集合各自实现多个分布式硬件插槽。在一些实施方案中,图形处理器子单元被组织成多个子单元的多个组,其中相同组中的子单元共享高速缓存。在一些实施方案中,在相同物理管芯上实现给定组的子单元。在一些实施方案中,子单元包括各自的:片段生成器电路、着色器核心电路、包括数据高速缓存和存储器管理单元的存储器系统电路、几何处理电路以及分布式工作负载分配电路。在一些实施方案中,分布式硬件插槽包括各自的:配置寄存器、批次队列电路和批次迭代电路。在各种实施方案中,子单元中的着色器电路被配置为从其多个分布式硬件插槽接收工作并且执行该工作。
表述“图形处理器子单元的集合各自实现多个分布式硬件插槽”意味着图形处理器子单元的集合包括至少两个子单元,子单元中的每个子单元实现多个分布式硬件插槽。在一些实施方案中,设备可具有不一定实现多个分布式硬件插槽的(不在该集合中的)附加图形处理器子单元。因此,短语“图形处理器子单元的集合各自实现多个分布式硬件插槽”不应被解释为意味着在所有情况下,设备中的所有子单元实现多个分布式硬件插槽,其仅提供这可能在一些情况下而非在其他情况下属实的可能性。类似的解释旨在用于本文本使用术语“每个”的其他表述。
在2220处,在例示的实施方案中,控制电路确定用于图形工作的第一集合的分配规则,该分配规则指示分配到集合中的图形处理器子单元中的所有图形处理器子单元。
在2230处,在例示的实施方案中,控制电路确定用于图形工作的第二集合的分配规则,该分配规则指示分配到集合中的图形处理器子单元中的少于所有的图形处理器子单元。在一些实施方案中,所确定的用于图形工作的第二集合的分配规则指示将图形工作的第一集合分配到子单元的单个组。另选地,所确定的用于图形工作的第二集合的分配规则可指示将图形工作的第二集合分配到单个子单元。
控制电路可基于图形工作的第一集合和图形工作的第二集合中的工作的量来选择第一分配规则和第二分配规则。控制电路可基于由正执行的图形程序发信号通知的一个或多个软件覆盖来确定第一分配规则。这些软件覆盖可包括以下类型的示例性软件覆盖的任何适当组合:掩模信息,该掩模信息指示哪些子单元可用于工作的第一集合;指定分配规则;组信息,该组信息指示应当在其上部署工作的第一集合的子单元的组;以及策略信息,该策略信息指示调度策略。在一些实施方案中,控制电路确定多个逻辑插槽中的插槽的相应保持值,其中保持值指示逻辑插槽的内核的状况。控制电路可允许具有第一优先级级别的逻辑插槽基于相应保持值中的一个或多个保持值来回收指派到具有较低的第二优先级级别的逻辑插槽的硬件插槽。
图形工作的第一集合和图形工作的第二集合可以是启动。图形工作的第一集合和图形工作的第二集合可以是在相同启动中或在不同启动中的计算内核。因此,在一些实施方案中,图形工作的第一集合是指派到第一逻辑插槽的计算启动的第一内核,其中计算启动包括至少一个其他内核,并且其中装置被配置为针对至少一个其他内核选择与针对第一内核不同的分配规则。
在2240处,在例示的实施方案中,控制电路基于第一分配规则来确定第一逻辑插槽和一个或多个分布式硬件插槽的第一集合之间的映射。
在2250处,在例示的实施方案中,控制电路基于第二分配规则来确定第二逻辑插槽和一个或多个分布式硬件插槽的第二集合之间的映射
在2260处,在例示的实施方案中,控制电路根据所确定的映射将图形工作的第一集合和图形工作的第二集合分配到图形处理器子单元中的一个或多个图形处理器子单元。
在一些实施方案中,用于逻辑插槽的控制电路包括:控制流处理器(例如,CSP630),该控制流处理器被配置为确定第一分配规则和第二分配规则;内核处理器(例如,电路640),该内核处理器被配置为生成计算工作组的批次;子单元指派电路(例如,电路650),该子单元指派电路被配置为将计算工作组的批次指派到子单元。在一些实施方案中,控制电路包括:硬件插槽资源配给器电路(例如,电路620),该硬件插槽资源配给器电路被配置为基于所指示的分配规则来将硬件插槽配给到控制流处理器;以及逻辑插槽仲裁器电路(例如,电路660),该逻辑插槽仲裁器电路被配置为在来自不同逻辑插槽的批次之间进行仲裁以供分配到所指派的子单元。在一些实施方案中,硬件插槽资源配给器电路被配置为基于硬件插槽的状态来配给硬件插槽。例如,不同硬件插槽的状态可至少包括:无效、正在运行、清空和正在刷新。
在一些实施方案中,设备被配置为执行多种类型的高速缓存刷新无效操作,这些高速缓存刷新无效操作可包括:第一类型的高速缓存刷新无效操作,该第一类型的高速缓存刷新无效操作仅针对内核被指派到的一个或多个子单元来刷新高速缓存并且使其无效;以及无条件类型的高速缓存刷新无效操作,该无条件类型的高速缓存刷新无效操作在一个或多个高速缓存级别处针对图形处理器子单元的集合刷新所有高速缓存并且使其无效。
图23是示出根据一些实施方案的用于对逻辑插槽进行优先级排序的示例性方法的流程图。图23所示的方法可结合本文所公开的计算机电路、系统、设备、元件或部件等中的任一者来使用。在各种实施方案中,所示的方法元素中的一些可按与所示次序不同的次序并发执行,或者可被省去。也可根据需要执行附加的方法元素。
在2310处,在例示的实施方案中,控制电路接收软件指定的图形工作的第一集合和用于图形工作的第一集合的软件指示的优先级信息。
在2320处,在例示的实施方案中,控制电路将图形工作的第一集合指派到由设备实现的多个逻辑插槽中的第一逻辑插槽。
在2330处,在例示的实施方案中,控制电路确定逻辑插槽和由设备的图形子单元实现的分布式硬件插槽之间的映射,其中映射针对优先级超过阈值优先级级别的逻辑插槽在每个子单元中预留阈值数量的硬件插槽。在一些实施方案中,逻辑插槽的第一子集是高优先级插槽,并且剩余的逻辑插槽是低优先级插槽。在这些实施方案中,控制电路可基于软件指示的优先级信息来将图形工作的第一集合指派到第一逻辑插槽。在其他实施方案中,可使用各种其他技术来对优先级进行编码和跟踪优先级。
在2340处,在例示的实施方案中,控制电路根据映射中的一个映射将图形工作的第一集合分配到图形处理器子单元中的一个或多个图形处理器子单元。
在一些实施方案中,控制电路(例如,分布式插槽资源配给器电路)被配置为执行回收过程,该回收过程允许具有第一软件指示的优先级级别的逻辑插槽回收被指派到具有较低的第二优先级级别的逻辑插槽的硬件插槽。
在一些实施方案中,基于图形工作的第一集合的软件输入(例如,保留插槽命令),控制电路被配置为在完成图形工作的第一集合的处理之后维持用于第一逻辑插槽的分布式硬件插槽的映射。在一些实施方案中,控制电路仅在指示释放映射的分布式插槽的软件输入之后将用于图形工作的第一集合的映射的分布式硬件插槽指派到另一逻辑插槽。
在一些实施方案中,控制电路将状况信息提供到用于图形工作的第一集合的软件。控制电路可支持各种状况状态,包括但不限于:等待依赖性、等待图形工作的第一集合的配置数据、等待指派分布式插槽、等待硬件资源、清空、编程完成、等待逻辑插槽、解除配给以及上下文存储。例如,状况信息可标识第一逻辑插槽、标识所指派的分布式硬件插槽、或指示与图形工作的第一集合的执行相关联的时间戳信息。
除了优先级信息之外或代替优先级信息,控制电路可支持各种软件控制或覆盖功能,包括但不限于:指定分配规则,该指定分配规则指示是分配到集合中的图形处理器子单元的仅一部分还是分配到集合中的图形处理器子单元中的所有图形处理器子单元;组信息,该组信息指示应在其上部署图形工作的第一集合的子单元的组;掩模信息,该掩模信息指示哪些子单元可用于图形工作的第一集合;以及策略信息,该策略信息指示调度策略。
在一些实施方案中,设备包括:控制流处理器电路,该控制流处理器电路被配置为确定用于映射的分配规则;以及分布式插槽资源配给器电路,该分布式插槽资源配给器电路被配置为基于以下各项来确定映射:软件输入、来自控制流处理器电路的所确定的分配规则、分布式插槽状态信息。
图24是示出根据一些实施方案的用于基于亲和力的调度的示例性方法的流程图。图24所示的方法可结合本文所公开的计算机电路、系统、设备、元件或部件等中的任一者来使用。在各种实施方案中,所示的方法元素中的一些可按与所示次序不同的次序并发执行,或者可被省去。也可根据需要执行附加的方法元素。
在2410处,在例示的实施方案中,控制电路(例如,内核遍历器电路)接收图形工作的软件指定的集合(例如,计算内核)以及图形工作的集合的部分到图形处理器子单元的组的软件指示的映射。子单元的第一组可共享第一高速缓存并且子单元的第二组可共享第二高速缓存。需注意,映射可标识或不标识图形子单元的特定组。相反,映射可指定应将计算内核的多个部分指派到图形处理器子单元的相同组,但可允许硬件确定实际上指派图形处理器子单元的哪一组。
在2420处,在例示的实施方案中,控制电路基于映射来将图形工作的集合的第一子集指派到图形子单元的第一组并且将图形工作的集合的第二子集指派到图形子单元的第二组。
控制电路可被配置为在配置寄存器中存储图形工作的集合的部分到图形处理器子单元的组的多个映射。
内核遍历器电路可包括:主内核遍历器电路(例如,图16的元件1610),该主内核遍历器电路被配置为确定计算内核的部分;第一组遍历器电路(例如,图16的元件1620),该第一组遍历器电路被配置为迭代计算内核的指派到图形子单元的第一组的部分以确定工作组的批次;以及第二组遍历器电路,该第二组遍历器电路被配置为迭代计算内核的指派到图形子单元的第二组的部分以确定工作组的批次。内核遍历器电路还可包括:组遍历器仲裁电路(例如,图16的元件1630),该组遍历器仲裁电路被配置为从由第一组遍历器电路和第二组遍历器电路确定的工作组的批次中进行选择;以及子单元指派电路(例如,mGPU指派电路650),该子单元指派电路被配置为将由组遍历器仲裁电路选择的批次指派到子单元的组中对应于所选择的组遍历器电路的一个或多个图形子单元。
在一些实施方案中,设备包括工作共享控制电路,该工作共享控制电路被配置为:确定子单元的一个或多个其他组的集合,该子单元的一个或多个其他组的集合已针对计算内核分派其所指派的部分中的所有所指派的部分;并且将计算内核的由映射指示为将子单元的第一组视作目标的至少第一部分指派到子单元的一个或多个其他组中的组。
在一些实施方案中,控制电路在一个或多个操作模式下禁用基于亲和力的工作分配。控制电路可支持针对包括单维内核、二维内核和三维内核的多个维度的计算内核将计算内核的部分映射到图形处理器子单元亲和力映射的组。
在一些实施方案中,一种在其上存储指令的非暂态计算机可读介质,这些指令可由计算设备执行以执行包括下述操作的操作:接收计算内核以及计算内核的部分到图形处理器子单元的组的对应映射,其中计算内核和映射由指令指定并且映射指示计算内核的映射到图形处理器子单元的给定组的部分的集合的高速缓存亲和力;以及基于映射,将计算内核的第一子集指派到图形子单元的第一组,并且将计算内核的第二子集指派到图形子单元的第二组。
图25是示出根据一些实施方案的用于启动插槽管理器操作的示例性方法的流程图。图25所示的方法可以结合本文所公开的计算机电路、系统、设备、元件或部件等中的任一者来使用。在各种实施方案中,所示的方法元素中的一些可按与所示次序不同的次序并发执行,或者可被省去。也可根据需要执行附加的方法元素。
在2510处,在例示的实施方案中,控制电路(例如,插槽管理器电路)使用跟踪插槽电路的条目来存储用于图形工作的集合的软件指定的信息,其中信息包括:工作的类型、对图形工作的其他集合的依赖性以及用于图形工作的集合的数据的位置
在一些实施方案中,跟踪插槽电路是软件可访问的,以查询与图形工作的集合相关联的各种信息。这可包括例如图形工作的集合的状况、与图形工作的集合的执行相关联的时间戳信息、指示逻辑主插槽的信息、以及指示一个或多个分布式硬件插槽的信息。在一些实施方案中,跟踪插槽电路支持至少指示图形工作的集合的以下状况状态的状况值:清空、发起寄存器提取、等待图形工作的一个或多个其他集合、等待逻辑插槽资源、等待分布式硬件插槽资源以及正在运行。
在2520处,在例示的实施方案中,控制电路从该位置并且在为图形工作的集合配给着色器核心资源之前预取用于图形工作的集合的配置寄存器数据。需注意,预取可在配置用于图形工作的集合的跟踪插槽之后但在控制电路确定开始图形工作的集合之前(例如,在已满足其所有依赖性之前)发生。控制电路可利用各种标准来确定何时开始预取。预取可从共享存储器(其可在控制电路的多个实例之间共享、与非GPU处理器共享或两者)执行到插槽管理器电路的SRAM存储器元件中。
在一些实施方案中,在完成对配置寄存器的编程之前,控制电路将图形工作的集合的部分发送到指派到图形工作的集合的硬件插槽。硬件插槽可包括用于图形工作的集合的所接收的部分的队列电路。
在2530处,在例示的实施方案中,控制电路使用预取数据来对用于图形工作的集合的配置寄存器进行编程。配置寄存器可指定图形工作的集合的属性、用于图形工作的集合的数据的位置、用于处理图形工作的集合的参数等。配置寄存器可不同于存储要由图形工作的集合处理的数据的数据寄存器。
在2540处,在例示的实施方案中,控制电路根据依赖性发起图形处理器电路对图形工作的集合的处理。控制电路可将图形工作的集合指派到逻辑主插槽(并且配置寄存器数据的至少一部分可用于逻辑主插槽的配置寄存器)并且将逻辑插槽指派到一个或多个分布式硬件插槽(并且配置寄存器数据的至少一部分可用于一个或多个分布式硬件插槽的配置寄存器)。
在一些实施方案中,控制电路被配置为结合从跟踪插槽电路的条目发起图形工作的集合并且基于关于图形工作的集合的信息来发起与图形工作的集合相关联的一个或多个电路从较低功率模式到较高功率模式的增加。
在一些实施方案中,图形指令指定存储图形工作的集合的信息(例如,指示工作的类型、对图形工作的其他集合的依赖性、以及用于图形工作的集合的数据的位置)并且查询跟踪插槽电路以确定图形工作的集合的状况信息(例如,来自以下各项中的状况:清空、发起寄存器提取、等待图形工作的一个或多个其他集合、等待逻辑插槽资源、等待分布式硬件插槽资源、以及正在运行、与图形工作的集合的执行相关联的时间戳信息、指示所指派的逻辑主插槽的信息、以及指示所指派的分布式硬件插槽的信息)。
在一些实施方案中,响应于用于图形工作的集合的停止命令,控制电路被配置为根据跟踪插槽的当前状况来执行不同操作。例如,控制电路可响应于确定尚未指派逻辑主插槽而重置跟踪插槽电路的条目。作为另一示例,控制电路可响应于确定已指派逻辑主插槽而对逻辑主插槽解除配给并且重置跟踪插槽电路的条目。作为又一示例,控制电路可响应于确定已指派一个或多个分布式硬件插槽而执行一个或多个上下文切换操作、对一个或多个分布式硬件插槽解除配给、对逻辑主插槽解除配给并且重置跟踪插槽电路的条目。
示例性设备
现在参考图26,其示出了例示设备2600的示例性实施方案的框图。在一些实施方案中,可将设备2600的元件包括在片上系统内。在一些实施方案中,可将设备2600包括在可以是电池供电的移动设备中。因此,设备2600的功率消耗可能是重要的设计考虑因素。在例示的实施方案中,设备2600包括结构体2610、计算复合体2620、输入/输出(I/O)桥接部2650、高速缓存/存储器控制器2645、图形单元2675和显示单元2665。在一些实施方案中,除所示的部件之外或代替所示的部件,设备2600可包括其他部件(未示出),诸如视频处理器编码器和解码器、图像处理或识别元件、计算机视觉元件等。
结构体2610可以包括各种互连器、总线、MUX、控制器等,并且可以被配置为促进设备2600的各种元件之间的通信。在一些实施方案中,结构体2610的部分可被配置为实现各种不同的通信协议。在其他实施方案中,结构体2610可实现单个通信协议,并且耦接到结构体2610的元件可在内部从单个通信协议转换到其他通信协议。
在例示的实施方案中,计算复合体2620包括总线接口单元(BIU)2625、高速缓存2630和内核2635和2640。在各种实施方案中,计算复合体2620可包括各种数量的处理器、处理器核心和高速缓存。例如,计算复合体2620可以包括1个、2个或4个处理器内核,或任何其他合适的数量。在一个实施方案中,高速缓存2630是一组关联L2高速缓存。在一些实施方案中,核心2635和2640可包括内部指令和数据高速缓存。在一些实施方案中,结构体2610、高速缓存2630或设备2600中的其他地方的一致性单元(未示出)可被配置为维持设备2600的各个高速缓存之间的一致性。BIU 2625可被配置为管理计算复合体2620和设备2600的其他元件之间的通信。处理器内核诸如内核2635和2640可被配置为执行可包括操作系统指令和用户应用指令的特定指令集架构(ISA)的指令。
高速缓存/存储器控制器2645可被配置为管理结构体2610与一个或多个高速缓存和存储器之间的数据传输。例如,可将高速缓存/存储器控制器2645耦接到L3高速缓存,继而可将该L3高速缓存耦接到系统存储器。在其他实施方案中,可将高速缓存/存储器控制器2645直接耦接到存储器。在一些实施方案中,高速缓存/存储器控制器2645可包括一个或多个内部高速缓存。
如本文所用,术语“耦接到”可指示元件之间的一个或多个连接,并且耦接可包括中间元件。例如,在图26中,图形单元2675可被描述为通过结构体2610和高速缓存/存储器控制器2645“耦接到”存储器。相比之下,在图26的例示的实施方案中,图形单元2675“直接耦接”到结构体2610,因为不存在中间元件。
图形单元2675可包括一个或多个处理器,例如,一个或多个图形处理单元(GPU)。例如,图形单元2675可接收面向图形的指令,诸如Metal或/>指令。图形单元2675可基于所接收的面向图形的指令来执行专用GPU指令或执行其他操作。图形单元2675通常可被配置为并行地处理大块数据并且可在帧缓冲器中构建图像以输出到显示器,该显示器可包括在设备中或可以是单独的设备。图形单元2675可包括在一个或多个图形处理流水线中的变换、照明、三角形和渲染引擎。图形单元2675可输出用于显示图像的像素信息。在各种实施方案中,图形单元2675可包括可编程着色器电路,该可编程着色器电路可包括被配置为执行图形程序的高度并行的执行核心,这些图形程序可包括像素任务、顶点任务和计算任务(其可以是图形相关的或可以不是图形相关的)。
在一些实施方案中,图形单元2675包括实现跟踪插槽、逻辑插槽、分布式硬件插槽等的各种所公开的电路。
显示单元2665可被配置为从帧缓冲器读取数据并且提供像素值流以用于显示。在一些实施方案中,显示单元2665可被配置为显示流水线。另外,显示单元2665可被配置为将多个帧混合以产生输出帧。此外,显示单元2665可以包括用于耦接到用户显示器(例如,触摸屏或外部显示器)的一个或多个接口(例如,或嵌入式显示端口(eDP))。
I/O桥接部2650可包括被配置为实现例如通用串行总线(USB)通信、安全性、音频和低功率永远在线功能的各种元件。I/O桥接部2650还可包括例如诸如脉冲宽度调制(PWM)、通用输入/输出(GPIO)、串行外围接口(SPI)和内部集成电路(I2C)的接口。可将各种类型的外围设备和设备经由I/O桥接部2650耦接到设备2600。
在一些实施方案中,设备2600包括网络接口电路(未明确示出),该网络接口电路可连接到结构体2610或I/O桥接部2650。网络接口电路可被配置为经由各种网络进行通信,这些网络可以是有线网络、无线网络或两者。例如,网络接口电路可被配置为经由有线局域网、无线局域网(例如,经由WiFi)或广域网(例如,互联网或虚拟专用网络)进行通信。在一些实施方案中,网络接口电路被配置为经由使用一种或多种无线电接入技术的一个或多个蜂窝网络进行通信。在一些实施方案中,网络接口电路被配置为使用设备到设备通信(例如,蓝牙或WiFi Direct)等进行通信。在各种实施方案中,网络接口电路可为设备2600提供与各种类型的其他设备和网络的连接。
示例性应用
现在转到图27,示出了可包括上文所述的电路、设备或系统中的任一者的各种类型的系统。可结合或以其他方式利用本文所述技术中的一种或多种的系统或设备2700可用于广泛的领域。例如,系统或设备2700可用作诸如台式计算机2710、膝上型计算机2720、平板电脑2730、蜂窝或移动电话2740或电视2750(或耦接到电视的机顶盒)的系统的硬件的一部分。
类似地,所公开的元件可用于可穿戴设备2760,诸如智能手表或健康监测设备。在许多实施方案中,智能手表可实现多种不同的功能—例如,对电子邮件、蜂窝服务、日历、健康监测等的访问。可穿戴设备还可被设计成仅执行健康监测功能,诸如监测用户的生命体征、执行流行病学功能诸如接触跟踪、向紧急医疗服务提供通信等。还设想了其他类型的设备,包括佩戴在颈部上的设备、可植入人体中的设备、被设计成提供计算机生成现实体验的眼镜或头盔,诸如基于增强现实和/或虚拟现实的那些等。
系统或设备2700也可在各种其他环境中使用。例如,系统或设备2700可在服务器计算机系统(诸如专用服务器)的上下文中或在实现基于云的服务2770的共享硬件上使用。更进一步地,系统或设备2700可在广泛范围的专用日常设备中实现,包括家中常见的设备2780,诸如冰箱、恒温器、安全相机等。此类设备的互连通常被称为“物联网”(IoT)。元件也可以各种运输模式来实现。例如,系统或设备2700可以用于各种类型的车辆2790的控制系统、引导系统、娱乐系统等。
图27中所示的应用仅仅是示例性的,并非旨在限制所公开的系统或设备的潜在未来应用。其他示例性应用包括但不限于:便携式游戏设备、音乐播放器、数据存储设备、无人航空载具等。
示例性计算机可读介质
本公开已经在上文中详细描述了各种示例性电路。意图在于本公开不仅涵盖包括此类电路的实施方案,而且还涵盖包括指定此类电路的设计信息的计算机可读存储介质。因此,本公开旨在支持不仅涵盖包括所公开的电路的装置而且还涵盖以被配置为产生包括所公开电路的硬件(例如,集成电路)的制造系统所识别的格式指定电路的存储介质的权利要求。对此类存储介质的权利要求旨在涵盖例如生成电路设计但本身不制造该设计的实体。
图28是示出根据一些实施方案的存储电路设计信息的示例性非暂态计算机可读存储介质的框图。在例示的实施方案中,半导体制造系统2820被配置为处理存储于非暂态计算机可读介质2810上的设计信息2815并基于该设计信息2815来制造集成电路2830。
非暂态计算机可读存储介质2810可以包括各种适当类型的存储器设备或存储设备中的任一个。非暂态计算机可读存储介质2810可以是安装介质,例如CD-ROM、软盘或磁带设备;计算机系统存储器或随机存取存储器诸如DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM等;非易失性存储器诸如闪存、磁介质,例如,硬盘驱动器或光学存储装置;寄存器、或其他类似类型的存储器元件等。非暂态计算机可读存储介质2810可包括其他类型的非暂态存储器或它们的组合。非暂态计算机可读存储介质2810可包括可驻留于不同位置例如通过网络连接的不同计算机系统中的两个或更多个存储器介质。
设计信息2815可使用各种适当的计算机语言中的任何语言来指定,包括硬件描述语言诸如但不限于:VHDL、Verilog、SystemC、SystemVerilog、RHDL、M、MyHDL等。设计信息2815可以能被半导体制造系统2820用来制造集成电路2830的至少一部分。设计信息2815的格式可被至少一个半导体制造系统2820所识别。在一些实施方案中,设计信息2815还可包括指定集成电路2830的综合、布局或两者的一个或多个单元库。在一些实施方案中,设计信息整体或部分地以指定单元库元素及其连接性的网表的形式来指定。单独获取的设计信息2815可包括或可以不包括用于制造对应集成电路的足够信息。例如,设计信息2815可以指定要制造的电路元件,但不指定它们的物理布局。在这种情况下,设计信息2815可能需要与布局信息组合以实际制造指定的电路。
在各种实施方案中,集成电路2830可以包括一个或多个定制宏单元,诸如存储器、模拟或混合信号电路等。在这种情况下,设计信息2815可包括与包括的宏单元相关的信息。此类信息可以包括但不限于电路图捕获数据库、掩模设计数据、行为模型以及设备或晶体管级网表。如本文所用,掩模设计数据可根据图形数据系统(GDSII)或任何其他合适的格式来格式化。
半导体制造系统2820可包括被配置为制造集成电路的各种适当元件中的任何元件。这可包括例如用于(例如在可包括掩模的晶片上)沉积半导体材料、移除材料、改变所沉积材料的形状、(例如通过掺杂材料或使用紫外处理来修改介电常数)对材料进行改性等的元件。半导体制造系统2820还可被配置为针对正确操作执行所制造电路的各种测试。
在各种实施方案中,集成电路2830被配置为根据由设计信息2815所指定的电路设计来操作,这可包括执行本文所描述功能中的任何功能。例如,集成电路2830可包括图1B、图2至图3、图6、图14B、图16、图18、图19A和图26所示的各种元件中的任何元件。另外,集成电路2830可被配置为执行本文结合其他部件所描述的各种功能。另外,本文所述的功能性可由多个连接的集成电路来执行。
示例性实施方案
以下编号的条款列出了本文所公开的各种非限制性实施方案:
集合A A1.一种装置,包括:
实现多个逻辑插槽的电路;
图形处理器子单元的集合,图形处理器子单元的所述集合各自实现多个分布式硬件插槽;以及
控制电路,所述控制电路被配置为:
将图形工作的第一集合和图形工作的第二集合指派到第一逻辑插槽和第二逻辑插槽;
确定用于图形工作的所述第一集合的第一分配规则,所述第一分配规则指示分配到所述集合中的所述图形处理器子单元中的所有图形处理器子单元;
确定用于图形工作的所述第二集合的第二分配规则,所述第二分配规则指示分配到所述集合中的所述图形处理器子单元中的少于所有的图形处理器子单元;
基于所述第一分配规则来确定所述第一逻辑插槽和一个或多个分布式硬件插槽的第一集合之间的映射;
基于所述第二分配规则来确定所述第二逻辑插槽和一个或多个分布式硬件插槽的第二集合之间的映射;以及根据所确定的映射将图形工作的所述第一集合和图形工作的所述第二集合分配到所述图形处理器子单元中的一个或多个图形处理器子单元。
A2.根据集合A内的任何前述条款所述的装置,其中所述图形处理器子单元被组织成多个子单元的多个组,其中相同组中的子单元共享高速缓存;并且
其中所述第二分配规则指示将图形工作的所述第二集合分配到子单元的单个组。
A3.根据集合A内的任何前述条款所述的装置,其中给定组的所述子单元在相同物理管芯上实现。
A4.根据集合A内的任何前述条款所述的装置,其中所述第二分配规则指示将图形工作的所述第二集合分配到单个子单元。
A5.根据集合A内的任何前述条款所述的装置,其中所述控制电路被配置为基于图形工作的所述第一集合和图形工作的所述第二集合中的工作的量来选择所述第一分配规则和所述第二分配规则。
A6.根据集合A内的任何前述条款所述的装置,其中图形工作的所述第一集合是指派到所述第一逻辑插槽的计算启动的第一内核,其中所述计算启动包括至少一个其他内核,并且其中所述装置被配置为针对所述至少一个其他内核选择与针对所述第一内核不同的分配规则。
A7.根据集合A内的任何前述条款所述的装置,其中所述控制电路被配置为基于由正执行的图形程序发信号通知的一个或多个软件覆盖来确定所述第一分配规则。
A8.根据集合A内的任何前述条款所述的装置,其中所述装置被配置为基于以下类型的软件覆盖来选择所述第一分配规则:
掩模信息,所述掩模信息指示哪些子单元能用于图形工作的所述第一集合;
指定分配规则;
组信息,所述组信息指示应在其上部署图形工作的所述第一集合的子单元的组;和
策略信息,所述策略信息指示调度策略。
A9.根据集合A内的任何前述条款所述的装置,其中所述图形处理器子单元包括各自的:
片段生成器电路;
着色器核心电路;
存储器系统电路,所述存储器系统电路包括数据高速缓存和存储器管理单元;
几何处理电路;和
分布式工作负载分配电路。
A10.根据集合A内的任何前述条款所述的装置,其中所述分布式硬件插槽包括各自的:
配置寄存器;
批次队列电路;和
批次迭代电路;并且
其中子单元中的着色器电路被配置为从其多个分布式硬件插槽接收工作并且执行所述工作。
A11.根据集合A内的任何前述条款所述的装置,其中用于逻辑插槽的控制电路包括:
控制流处理器,所述控制流处理器被配置为确定所述第一分配规则和所述第二分配规则;
内核处理器,所述内核处理器被配置为生成计算工作组的批次;
子单元指派电路,所述子单元指派电路被配置为将计算工作组的批次指派到子单元;
其中所述控制电路包括:
硬件插槽资源配给器电路,所述硬件插槽资源配给器电路被配置为基于指示的分配规则来将硬件插槽配给到控制流处理器;和
逻辑插槽仲裁器电路,所述逻辑插槽仲裁器电路被配置为在来自不同逻辑插槽的批次之间进行仲裁以供分配到指派的子单元。
A12.根据集合A内的任何前述条款所述的装置,其中所述硬件插槽资源配给器电路被配置为基于硬件插槽的状态来配给硬件插槽,其中不同硬件插槽的所述状态至少包括:无效、正在运行、清空和正在刷新。
A13.根据集合A内的任何前述条款所述的装置,其中所述装置被配置为执行:
第一类型的高速缓存刷新无效操作,所述第一类型的高速缓存刷新无效操作仅针对内核被指派到的一个或多个子单元来刷新高速缓存并且使其无效;以及
无条件类型的高速缓存刷新无效操作,所述无条件类型的高速缓存刷新无效操作在一个或多个高速缓存级别处针对图形处理器子单元的所述集合刷新所有高速缓存并且使其无效。
A14.根据集合A内的任何前述条款所述的装置,其中所述控制电路被进一步配置为:
确定所述多个逻辑插槽中的插槽的相应保持值,其中所述保持值指示逻辑插槽的内核的状况;以及
允许具有第一优先级级别的逻辑插槽基于所述相应保持值中的一个或多个保持值来回收指派到具有较低的第二优先级级别的逻辑插槽的硬件插槽。
A15.根据集合A内的任何前述条款所述的装置,其中所述控制电路被进一步配置为:
在完成对所述第一逻辑插槽的配置寄存器的编程之前,将图形工作的所述第一集合的部分发送到指派到图形工作的所述第一集合的分布式硬件插槽,其中所述分布式硬件插槽包括用于图形工作的所述第一集合的接收的部分的队列电路。
A16.一种方法,包括根据集合A内的任何前述条款所述的装置被配置为执行的操作的任何组合。
A17.一种在其上存储设计信息的非暂态计算机可读存储介质,所述设计信息以半导体制造系统识别的格式指定硬件集成电路的至少一部分的设计,所述半导体制造系统被配置为使用所述设计信息来根据所述设计生产所述电路,其中所述设计信息指定所述电路包括:
条款A1至A15所述的元素的任何组合。
集合B B1.一种装置,包括:
实现多个逻辑插槽的电路;
图形处理器子单元的集合,图形处理器子单元的所述集合各自实现多个分布式硬件插槽;以及
控制电路,所述控制电路被配置为:
接收软件指定的图形工作的第一集合和用于图形工作的所述第一集合的软件指示的优先级信息;
将图形工作的所述第一集合指派到第一逻辑插槽;
确定逻辑插槽和分布式硬件插槽之间的映射,其中所述映射针对优先级超过阈值优先级级别的逻辑插槽在每个子单元中预留阈值数量的硬件插槽;以及根据所述映射中的一个映射将图形工作的所述第一集合分配到所述图形处理器子单元中的一个或多个图形处理器子单元。
B2.根据集合B内的任何前述条款所述的装置,其中,基于图形工作的所述第一集合的软件输入,所述控制电路被配置为:
在完成图形工作的所述第一集合的处理之后维持用于所述第一逻辑插槽的分布式硬件插槽的所述映射;以及
仅在指示释放所述映射的分布式插槽的软件输入之后将用于图形工作的所述第一集合的所述映射的分布式硬件插槽指派到另一逻辑插槽。
B3.根据集合B内的任何前述条款所述的装置,其中逻辑插槽的第一子集为高优先级插槽并且剩余的逻辑插槽为低优先级插槽,并且其中所述控制电路被配置为基于所述软件指示的优先级信息来将图形工作的所述第一集合指派到所述第一逻辑插槽。
B4.根据集合B内的任何前述条款所述的装置,其中所述控制电路被配置为将状况信息提供到用于图形工作的所述第一集合的软件。
B5.根据集合B内的任何前述条款所述的装置,其中所述控制电路至少支持以下状况状态:
等待依赖性;
等待图形工作的所述第一集合的配置数据;以及
等待指派分布式插槽。
B6.根据集合B内的任何前述条款所述的装置,其中所述状况信息包括:
所述第一逻辑插槽的标识;
所指派的分布式硬件插槽的标识;以及
与图形工作的所述第一集合的执行相关联的时间戳信息。
B7.根据集合B内的任何前述条款所述的装置,其中所述控制电路被配置为基于以下类型的软件覆盖来确定所述映射:
指定分配规则,所述指定分配规则指示是分配到所述集合中的所述图形处理器子单元的仅一部分还是分配到所述集合中的所述图形处理器子单元中的所有图形处理器子单元;和
组信息,所述组信息指示应在其上部署图形工作的所述第一集合的子单元的组。
B8.根据集合B内的任何前述条款所述的装置,其中所述控制电路被配置为基于以下附加类型的软件覆盖来确定所述映射:
掩模信息,所述掩模信息指示哪些子单元能用于图形工作的所述第一集合;和
策略信息,所述策略信息指示调度策略。
B9.根据集合B内的任何前述条款所述的装置,还包括:
控制流处理器电路,所述控制流处理器电路被配置为确定用于所述映射的分配规则;和
分布式插槽资源配给器电路,所述分布式插槽资源配给器电路被配置为基于以下各项来确定所述映射:
软件输入;
来自所述控制流处理器电路的所确定的分配规则;和分布式插槽状态信息。
B10.根据集合B内的任何前述条款所述的装置,其中所述分布式插槽资源配给器电路被配置为执行回收过程,所述回收过程允许具有第一软件指示的优先级级别的逻辑插槽回收被指派到具有较低的第二优先级级别的逻辑插槽的硬件插槽。
B11.一种方法,包括根据集合B内的任何前述条款所述的装置被配置为执行的操作的任何组合。
B12.一种在其上存储设计信息的非暂态计算机可读存储介质,所述设计信息以半导体制造系统识别的格式指定硬件集成电路的至少一部分的设计,所述半导体制造系统被配置为使用所述设计信息来根据所述设计生产所述电路,其中所述设计信息指定所述电路包括:
条款B1至B10所述的元素的任何组合。
集合C C1.一种装置,包括:
图形处理器子单元的第一组和图形处理器子单元的第二组,其中子单元的所述第一组共享第一高速缓存并且子单元的所述第二组共享第二高速缓存;以及
分配电路,所述分配电路被配置为:
接收图形工作的软件指定的集合以及图形工作的所述集合的部分到图形处理器子单元的组的软件指示的映射;
以及
基于所述映射,将图形工作的所述集合的第一子集指派到图形子单元的所述第一组,并且将图形工作的所述集合的第二子集指派到图形子单元的所述第二组。
C2.根据集合C内的任何前述条款所述的装置,其中所述装置包括控制电路,所述控制电路被配置为在配置寄存器中存储图形工作的集合的部分到图形处理器子单元的组的多个映射。
C3.根据集合C内的任何前述条款所述的装置,其中图形工作的所述集合是计算内核。
C4.根据集合C内的任何前述条款所述的装置,其中所述分配电路包括:
主内核遍历器电路,所述主内核遍历器电路被配置为确定所述计算内核的所述部分;
第一组遍历器电路,所述第一组遍历器电路被配置为迭代所述计算内核的指派到图形子单元的所述第一组的部分以确定工作组的批次;和
第二组遍历器电路,所述第二组遍历器电路被配置为迭代所述计算内核的指派到图形子单元的所述第二组的部分以确定工作组的批次。
C5.根据集合C内的任何前述条款所述的装置,其中所述分配电路电路还包括:
组遍历器仲裁电路,所述组遍历器仲裁电路被配置为从由所述第一组遍历器电路和所述第二组遍历器电路确定的工作组的批次中进行选择;和
子单元指派电路,所述子单元指派电路被配置为将由所述组遍历器仲裁电路选择的批次指派到子单元的所述组中对应于所选择的组遍历器电路的一个或多个图形子单元。
C6.根据集合C内的任何前述条款所述的装置,还包括:
工作共享控制电路,所述工作共享控制电路被配置为:
确定子单元的一个或多个其他组的集合,子单元的一个或多个其他组的所述集合已针对图形工作的所述集合分派其所指派的部分中的所有所指派的部分;以及将图形工作的所述集合的由所述映射指示为将子单元的所述第一组视作目标的至少第一部分指派到子单元的所述一个或多个其他组中的组。
C7.根据集合C内的任何前述条款所述的装置,其中所述装置支持针对包括单维、二维和三维的多个维度将图形工作的集合的部分映射到图形处理器子单元亲和力映射的组。
C8.根据集合C内的任何前述条款所述的装置,还包括:
实现多个逻辑插槽的电路,其中所述第一组和所述第二组中的子单元的集合各自实现多个分布式硬件插槽;以及
控制电路,所述控制电路被配置为:
将图形工作的所述集合指派到第一逻辑插槽;
确定用于图形工作的所述集合的分配规则,所述分配规则指示是分配到所述集合中的所述图形处理器子单元中的所有图形处理器子单元还是分配到所述图形处理器子单元的仅一部分;以及
基于所述分配规则并且基于图形工作的所述集合的部分到图形处理器子单元的组的所述映射来确定第一逻辑插槽和一个或多个分布式硬件插槽的相应集合之间的映射。C9.一种在其上存储指令的非暂态计算机可读介质,所述指令可由计算设备执行以执行包括下述操作的操作:
接收图形工作的集合
以及图形工作的所述集合的部分到图形处理器子单元的组的对应映射,其中图形工作的所述集合和所述映射由所述指令指定并且所述映射指示图形工作的所述集合的映射到图形处理器子单元的给定组的部分的集合的高速缓存亲和力;以及
基于所述映射,将图形工作的所述集合的第一子集指派到图形子单元的第一组,并且将图形工作的所述集合的第二子集指派到图形子单元的第二组。
C10.根据集合C内的任何前述条款所述的非暂态计算机可读介质,
其中所述操作还包括:在一个或多个操作模式下禁用基于亲和力的工作分配。
C11.根据集合C内的任何前述条款所述的非暂态计算机可读介质,
其中所述操作包括:基于多个不同映射来将图形工作的集合的子集指派到图形子单元的组,其中所述多个不同映射包括用于至少两个维度的图形工作的集合的映射。
C12.根据集合C内的任何前述条款所述的非暂态计算机可读介质,
其中所述计算设备包括实现多个逻辑插槽的图形电路,其中所述第一组和所述第二组中的所述子单元各自实现多个分布式硬件插槽,其中所述操作还包括:指定一个或多个软件覆盖以至少部分地控制逻辑插槽和用于图形工作的所述集合的一个或多个分布式硬件插槽的相应集合之间的映射。
C13.根据集合C内的任何前述条款所述的非暂态计算机可读介质,
其中所述一个或多个软件覆盖包括以下各项中的至少一项:
掩模信息,所述掩模信息指示哪些子单元能用于图形工作的所述集合;
指定分配规则,所述指定分配规则指示分配广度;
组信息,所述组信息指示应在其上部署图形工作的所述集合的子单元的组;和
策略信息,所述策略信息指示调度策略。
C14.一种方法,包括根据集合C内的任何前述条款所述的操作的任何组合。
C15.一种在其上存储设计信息的非暂态计算机可读存储介质,所述设计信息以半导体制造系统识别的格式指定硬件集成电路的至少一部分的设计,所述半导体制造系统被配置为使用所述设计信息来根据所述设计生产所述电路,其中所述设计信息指定所述电路包括:
条款C1至C8所述的元素的任何组合。
集合D D1.一种装置,包括:
图形处理器电路;
跟踪插槽电路,所述跟踪插槽电路实现多个跟踪插槽的条目;
插槽管理器电路,所述插槽管理器电路被配置为:
使用所述跟踪插槽电路的条目来存储用于图形工作的集合的软件指定的信息,其中所述信息包括:工作的类型、对图形工作的其他集合的依赖性以及用于图形工作的所述集合的数据的位置;
从所述位置并且在为图形工作的所述集合配给着色器核心资源之前预取用于图形工作的所述集合的配置寄存器数据;
控制电路,所述控制电路被配置为:
使用所述预取数据对图形工作的所述集合的配置寄存器进行编程;以及
根据所述依赖性发起所述图形处理器电路对图形工作的所述集合的处理。
D2.根据集合D内的任何前述条款所述的装置,其中所述控制电路被进一步配置为:
在完成对所述配置寄存器的编程之前,将图形工作的所述集合的部分发送到指派到图形工作的所述集合的硬件插槽,其中所述硬件插槽包括用于图形工作的所述集合的接收的部分的队列电路。
D3.根据集合D内的任何前述条款所述的装置,其中所述压缩电路被配置为:
将图形工作的所述集合指派到逻辑主插槽,其中所述配置寄存器数据的至少一部分用于所述逻辑主插槽的配置寄存器;
以及
将所述逻辑插槽指派到一个或多个分布式硬件插槽,其中所述配置寄存器数据的至少一部分用于所述一个或多个分布式硬件插槽的配置寄存器。
D4.根据集合D内的任何前述条款所述的装置,其中,响应于用于图形工作的所述集合的停止命令,所述插槽管理器电路被配置为:
响应于确定尚未指派逻辑主插槽,重置所述跟踪插槽电路的所述条目;
响应于确定已指派逻辑主插槽,对所述逻辑主插槽解除配给并且重置所述跟踪插槽电路的所述条目;
响应于确定已指派一个或多个分布式硬件插槽,执行一个或多个上下文切换操作、对所述一个或多个分布式硬件插槽解除配给、对所述逻辑主插槽解除配给并且重置所述跟踪插槽电路的所述条目。
D5.根据集合D内的任何前述条款所述的装置,其中所述跟踪插槽电路中的所述条目是软件可访问的,以查询:
图形工作的所述集合的状况;
与图形工作的所述集合的执行相关联的时间戳信息;
指示所述逻辑主插槽的信息;以及
指示所述一个或多个分布式硬件插槽的信息。
D6.根据集合D内的任何前述条款所述的装置,其中所述跟踪插槽电路支持至少指示图形工作的所述集合的以下状况状态的状况值:清空、发起寄存器提取、等待图形工作的一个或多个其他集合、等待逻辑插槽资源、等待分布式硬件插槽资源以及正在运行。
D7.根据集合D内的任何前述条款所述的装置,其中所述插槽管理器电路被配置为结合从所述跟踪插槽电路的条目发起图形工作的集合并且基于关于图形工作的所述集合的信息来发起与图形工作的所述集合相关联的一个或多个电路从较低功率模式到较高功率模式的增加。
D8.根据集合D内的任何前述条款所述的装置,其中所述预取从共享存储器执行到所述插槽管理器电路的SRAM存储器元件中。
D9.根据集合D内的任何前述条款所述的装置,其中所述预取从共享存储器执行到高速缓存中。
D10.根据集合D内的任何前述条款所述的装置,其中所述插槽管理器电路被配置为确定图形工作的所述集合使用第一共享资源和第二共享资源;
其中对于所述第一共享资源,所述插槽管理器电路被配置为暂停图形工作的所述集合直到所述第一共享资源变得可用;
并且
其中对于所述第二共享资源,所述插槽管理电路被配置为允许图形工作的所述集合在所述第二共享资源变得可用之前继续前进,并且报告图形工作的所述集合在所述第二共享资源变得可用之前继续前进。
D11.一种方法,包括根据集合D内的任何前述条款所述的装置被配置为执行的操作的任何组合。
D12.一种在其上存储设计信息的非暂态计算机可读存储介质,所述设计信息以半导体制造系统识别的格式指定硬件集成电路的至少一部分的设计,所述半导体制造系统被配置为使用所述设计信息来根据所述设计生产所述电路,其中所述设计信息指定所述电路包括:
条款D1至D10所述的元素的任何组合。
如本文所用,形式为“指定被配置为…的电路的设计的设计信息”的短语并不暗示为了满足该元素就必须制造所涉及的电路。相反,该短语表明设计信息描述了一种电路,该电路在被制造时将被配置为执行所指示的动作或者将包括所指定的部件。
***
本公开包括对“实施方案”或“实施方案”的组(例如,“一些实施方案”或“各种实施方案”)的引用。实施方案是所公开概念的不同具体实施或实例。提及“实施方案”、“一个实施方案”、“特定实施方案”等并不一定是指相同的实施方案。设想了大量可能的实施方案,包括具体公开的那些,以及落入本公开的实质或范围内的修改或替代。
本公开可讨论可由所公开的实施方案产生的潜在优点。并非所有这些实施方案的具体实施都将必然表现出任何或所有潜在优点。特定具体实施是否实现了优点取决于许多因素,其中一些因素在本公开的范围之外。事实上,存在许多原因导致落入权利要求范围内的具体实施可能不表现出任何所公开的优点中的一些或全部。例如,特定具体实施可包括在本公开的范围之外的其他电路,结合所公开的实施方案中的一个实施方案,该其他电路否定或减弱一个或多个所公开的优点。此外,特定具体实施(例如,具体实施技术或工具)的次优设计执行也可能否定或减弱所公开的优点。即使假设有技术的具体实施,优点的实现仍可取决于其他因素,诸如部署具体实施的环境情况。例如,提供给特定具体实施的输入可防止本公开中解决的一个或多个问题在特定场合发生,结果可能无法实现其解决方案的益处。考虑到本公开外部的可能因素的存在,本文所述的任何潜在优点都不应理解为是为了证明侵权行为而必须满足的权利要求限制。相反,此类潜在优点的识别旨在示出受益于本公开的设计者可用的一种或多种改进类型。永久性地描述此类优点(例如,陈述特定优点“可能出现”)并非旨在传达关于此类优点实际上是否可被实现的疑问,而是认识到此类优点的实现通常取决于附加因素的技术现实。
除非另行指出,否则实施方案是非限制性的。也就是说,所公开的实施方案并非旨在限制基于本公开起草的权利要求的范围,即使仅针对特定特征描述单个示例的情况下也是如此。本发明所公开的实施方案旨在为示例性的而非限制性的,而无需在本公开中进行任何相反的陈述。因此本申请意在允许涵盖所公开实施方案的权利要求、以及此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
例如,本申请中的特征可以任何合适的方式组合。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地讲,参照所附权利要求,从属权利要求的特征在适当的情况下可与其他从属权利要求的特征组合,包括从属于其他独立权利要求的权利要求。类似地,在适当的情况下,可组合来自相应独立权利要求的特征。
因此,虽然所附从属权利要求可撰写成使得每个从属权利要求从属于单个其他权利要求,但也可设想附加从属关系。可设想符合本公开的从属特征的任何组合,并且这些组合可在本专利申请或另一专利申请中受权利要求书保护。简而言之,组合不限于所附权利要求中具体列举的那些。
在适当的情况下,还预期以一种格式或法定类型(例如,装置)起草的权利要求旨在支持另一种格式或法定类型(例如,方法)的对应权利要求。
***
因为本公开是法律文件,所以各种术语和短语可受到管理和司法解释的约束。特此给出公告,以下段落以及贯穿本公开提供的定义将用于确定如何解释基于本公开起草的权利要求。
除非上下文另有明确规定,否则对单数形式的项目的引用(即,前面有“一个”、“一种”或“该”的名词或名词短语)旨在表示“一个或多个”。因此,在不伴随上下文的情况下,对权利要求中的“项目”的引用并不排除该项目的附加实例。“多个”项目是指两个或更多个项目的集合。
词语“可”在本文中在允许的意义上(即,具有潜在可能的,能够的)进行使用,而不是在强制意义上(即,必须)进行使用。
术语“包含”和“包括”及其形式是开放式的,并且意指“包括但不限于”。
当在本公开中相对于选项列表使用术语“或”时,除非上下文另有提供,否则一般将理解为以包含性意义使用。因此,表述“x或y”等同于“x或y,或两者”,因此涵盖1)x但不是y,2)y但不是x,以及3)x和y两者。另一方面,短语诸如“x或y中的任一者,但不是两者都”使得清楚“或”以排他性意义使用。
表述“w、x、y或z,或它们的任何组合”或“...w、x、y和z中的至少一者”旨在涵盖涉及最多至该集合中元件总数的单个元件的所有可能性。例如,给定集合[w,x,y,z],这些短语涵盖集合中的任何单个元素(例如,w但不是x、y或z)、任何两个元素(例如,w和x,但不是y或z)、任何三个元素(例如,w、x和y,但不是z)以及所有四个元素。短语“...w、x、y和z中的至少一者”因此是指集合[w,x,y,z]中的至少一个元素,从而涵盖该元素列表中的所有可能的组合。该短语不应被解释为要求存在w的至少一个实例、x的至少一个实例、y的至少一个实例和z的至少一个实例。
在本公开中,各种“标签”可先于名词或名词短语。除非上下文另有提供,否则用于特征(例如,“第一电路”、“第二电路”、“特定电路”、“给定电路”等)的不同标签是指特征的不同实例。除此之外,除非另有说明,否则标签“第一”、“第二”和“第三”在应用于特征时并不暗示任何类型的排序(例如,空间、时间、逻辑等)。
短语“基于”或用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。此短语也旨在覆盖A仅基于B来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
短语“响应于”和“响应”描述了触发效应的一个或多个因素。该短语不排除附加因素可影响或以其他方式触发效应的可能性,这些因素与指定因素联合使用或独立于指定因素。也就是说,效果可以仅仅响应于这些因素,或者可以响应于指定的因素以及其他未指定的因素。考虑短语“响应于B执行A”。该短语指定B是触发A的执行或触发A的特定结果的因素。该短语不排除执行A也可能响应于某些其他因素,诸如C。该短语也不排除执行A可响应于B和C而联合执行。此短语也旨在覆盖A仅响应于B而执行的实施方案。如本文所用,短语“响应”与短语“至少部分地响应于”是同义的。类似地,短语“响应于”与短语“至少部分地响应于”是同义的。
***
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被说成“被配置为”执行某个任务,即使该结构当前并非正被操作。因此,被描述或表述为“被配置为”执行某个任务的实体指代用于实施该任务的物理的事物,诸如设备、电路、具有处理器单元的系统和存储有可执行程序指令的存储器等。此短语在本文中不被用于指代无形的事物。
在一些情况下,各种单元/电路/部件在本文中可被描述为执行一组任务或操作。应当理解,这些实体“被配置为”执行那些任务/操作,即使没有具体指出。
术语“被配置为”并不旨在意指“可配置为”。例如,未编程的FPGA不会被认为是“被配置为”执行特定功能。然而,该未编程的FPGA可以“可配置为”执行该功能。在适当编程之后,FPGA然后可认为“被配置为”执行特定功能。
出于基于本公开的美国专利申请的目的,在权利要求中陈述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求元素不援引35U.S.C.§112(f)。如果申请人在基于本公开的美国专利申请的申请过程中想要援引112(f)部分,则其将使用“用于[执行功能]的装置”结构来表述权利要求的元素。
在本公开中可描述不同的“电路”。这些电路或“电路(circuitry)”构成硬件,该硬件包括各种类型的电路元件,诸如组合逻辑、时钟存储设备(例如,触发器、寄存器、锁存器等)、有限状态机、存储器(例如,随机存取存储器、嵌入式动态随机存取存储器)、可编程逻辑阵列等。电路可以是定制设计的,或取自标准库。在各种具体实施中,电路可以视情况包括数字部件、模拟部件或两者的组合。某些类型的电路可通常被称为“单元”(例如,解码单元、算术逻辑单元(ALU)、功能单元、存储器管理单元(MMU)等)。此类单元也指电路(circuit)或电路(circuitry)。
因此,在附图中示出并在本文中描述的所公开的电路/单元/部件和其他元件包括硬件元件,诸如前面段落中描述的那些硬件元件。在许多情况下,硬件元件在特定电路中的内部布置可通过描述该电路的功能来指定。例如,特定的“解码单元”可被描述为执行“处理指令的操作码并将该指令路由到多个功能单元中的一个或多个”的功能,这意味着解码单元“被配置为”执行该功能。对于计算机领域的技术人员而言,该功能规范足以暗示用于电路的一组可能的结构。
在各种实施方案中,如前面段落中所述,电路、单元和其他元件可由其被配置为实施的功能或操作来限定。相对于彼此的布置和此类电路/单元/部件以及它们进行交互的方式形成硬件的微架构定义,该硬件最终在集成电路中制造或被编程到FPGA中以形成微架构定义的物理具体实施。因此,微架构定义被本领域的技术人员认为是可导出许多物理具体实施的结构,所有这些物理具体实施均落入由微架构定义所描述的更广泛的结构中。即,具有根据本公开提供的微架构定义的技术人员可在没有过度实验的情况下并且利用普通技术人员的应用,通过以硬件描述语言(HDL)诸如Verilog或VHDL编码电路/单元/部件的描述来实现该结构。HDL描述常常以可显现为功能性的方式来表达。但是对于本领域的技术人员而言,该HDL描述是用于将电路、单元或部件的结构转换为下一级具体实施细节的方式。此类HDL描述可采用以下形式:行为代码(其通常为不可合成的)、寄存器传输语言(RTL)代码(其与行为代码相比通常为可合成的)、或结构代码(例如,指定逻辑门及其连接性的网表)。可针对为给定集成电路制造技术设计的单元库来顺序地合成HDL描述,并可出于定时、功率和其他原因而被修改,以获得被传输到工厂以生成掩模并最终产生集成电路的最终的设计数据库。一些硬件电路或其部分也可在示意图编辑器中被定制设计并且与合成电路一起被捕获到集成电路设计中。该集成电路可包括晶体管和其他电路元件(例如,无源元件,诸如电容器、电阻器、电感器等),以及晶体管和电路元件之间的互连件。一些实施方案可实现耦接在一起的多个集成电路,以实现硬件电路,和/或可在一些实施方案中使用离散元件。另选地,HDL设计可被合成为可编程逻辑阵列诸如现场可编程门阵列(FPGA),并且可在FPGA中实现。一组电路的设计与这些电路的后续低级具体实施之间的这种解耦通常导致这样的情形:其中电路或逻辑设计者从来不指定超出对电路被配置为做什么的描述的用于低级具体实施的一组特定结构,因为该过程是在电路实施过程的不同阶段执行的。
可使用电路元件的许多不同低级组合来实现电路的相同规格的事实导致该电路的大量等效结构。如所指出的那样,这些低级电路具体实施可根据制造技术、被选择用于制造集成电路的铸造厂、为特定项目提供的单元库等的变化而变化。在许多情况下,通过不同设计工具或方法进行的产生这些不同具体实施的选择可以是任意的。
此外,对于给定实施方案,电路的特定功能规范的单个具体实施通常包括大量设备(例如,数百万个晶体管)。因此,该信息的剪切体积使得提供用于实现单个实施方案的低级结构的完整叙述是不切实际的,更不用说大量等同的可能具体实施。为此,本公开描述了使用工业中常用的功能简写的电路的结构。

Claims (20)

1.一种装置,包括:
实现多个逻辑插槽的电路;
图形处理器子单元的集合,图形处理器子单元各自实现多个分布式硬件插槽;以及
控制电路,所述控制电路被配置为:
将图形工作的第一集合和图形工作的第二集合指派到第一逻辑插槽和第二逻辑插槽;
确定用于图形工作的所述第一集合的第一分配规则,所述第一分配规则指示分配到所述集合中的所述图形处理器子单元中的所有图形处理器子单元;
确定用于图形工作的所述第二集合的第二分配规则,所述第二分配规则指示分配到所述集合中的所述图形处理器子单元中的少于所有的图形处理器子单元;
基于所述第一分配规则来确定所述第一逻辑插槽和一个或多个分布式硬件插槽的第一集合之间的映射;
基于所述第二分配规则来确定所述第二逻辑插槽和一个或多个分布式硬件插槽的第二集合之间的映射;以及
根据所确定的映射将图形工作的所述第一集合和图形工作的所述第二集合分配到所述图形处理器子单元中的一个或多个图形处理器子单元。
2.根据权利要求1所述的装置,其中所述图形处理器子单元被组织成多个子单元的多个组,其中相同组中的子单元共享高速缓存;并且
其中所述第二分配规则指示将图形工作的所述第二集合分配到子单元的单个组。
3.根据权利要求2所述的装置,其中给定组的所述子单元在相同物理管芯上实现。
4.根据权利要求1所述的装置,其中所述第二分配规则指示将图形工作的所述第二集合分配到单个子单元。
5.根据权利要求1所述的装置,其中所述控制电路被配置为基于图形工作的所述第一集合和图形工作的所述第二集合中的工作的量来选择所述第一分配规则和所述第二分配规则。
6.根据权利要求1所述的装置,其中图形工作的所述第一集合是指派到所述第一逻辑插槽的计算启动的第一内核,其中所述计算启动包括至少一个其他内核,并且其中所述装置被配置为针对所述至少一个其他内核选择与针对所述第一内核不同的分配规则。
7.根据权利要求1所述的装置,其中所述控制电路被配置为基于由正执行的图形程序发信号通知的一个或多个软件覆盖来确定所述第一分配规则。
8.根据权利要求7所述的装置,其中所述装置被配置为基于以下类型的软件覆盖来选择所述第一分配规则:
掩模信息,所述掩模信息指示哪些子单元能用于图形工作的所述第一集合;
指定分配规则;
组信息,所述组信息指示应在其上部署图形工作的所述第一集合的子单元的组;和
策略信息,所述策略信息指示调度策略。
9.根据权利要求1所述的装置,其中所述图形处理器子单元包括各自的:
片段生成器电路;
着色器核心电路;
存储器系统电路,所述存储器系统电路包括数据高速缓存和存储器管理单元;
几何处理电路;和
分布式工作负载分配电路。
10.根据权利要求1所述的装置,其中所述分布式硬件插槽包括各自的:
配置寄存器;
批次队列电路;和
批次迭代电路;并且
其中子单元中的着色器电路被配置为从其多个分布式硬件插槽接收工作并且执行所述工作。
11.根据权利要求1所述的装置,其中用于逻辑插槽的控制电路包括:
控制流处理器,所述控制流处理器被配置为确定所述第一分配规则和所述第二分配规则;
内核处理器,所述内核处理器被配置为生成计算工作组的批次;
子单元指派电路,所述子单元指派电路被配置为将计算工作组的批次指派到子单元;
其中所述控制电路包括:
硬件插槽资源配给器电路,所述硬件插槽资源配给器电路被配置为基于指示的分配规则来将硬件插槽配给到控制流处理器;和
逻辑插槽仲裁器电路,所述逻辑插槽仲裁器电路被配置为在来自不同逻辑插槽的批次之间进行仲裁以供分配到指派的子单元。
12.根据权利要求11所述的装置,其中所述硬件插槽资源配给器电路被配置为基于硬件插槽的状态来配给硬件插槽,其中不同硬件插槽的所述状态至少包括:无效、正在运行、清空和正在刷新。
13.根据权利要求1所述的装置,其中所述装置被配置为执行:
第一类型的高速缓存刷新无效操作,所述第一类型的高速缓存刷新无效操作仅针对内核被指派到的一个或多个子单元来刷新高速缓存并且使其无效;以及
无条件类型的高速缓存刷新无效操作,所述无条件类型的高速缓存刷新无效操作在一个或多个高速缓存级别处针对图形处理器子单元的所述集合刷新所有高速缓存并且使其无效。
14.根据权利要求1所述的装置,其中所述控制电路被进一步配置为:
确定所述多个逻辑插槽中的插槽的相应保持值,其中所述保持值指示逻辑插槽的内核的状况;以及
允许具有第一优先级级别的逻辑插槽基于所述相应保持值中的一个或多个保持值来回收指派到具有较低的第二优先级级别的逻辑插槽的硬件插槽。
15.根据权利要求1所述的装置,其中所述控制电路被进一步配置为:
在完成对所述第一逻辑插槽的配置寄存器的编程之前,将图形工作的所述第一集合的部分发送到指派到图形工作的所述第一集合的分布式硬件插槽,其中所述分布式硬件插槽包括用于图形工作的所述第一集合的接收的部分的队列电路。
16.一种在其上存储设计信息的非暂态计算机可读存储介质,所述设计信息以半导体制造系统识别的格式指定硬件集成电路的至少一部分的设计,所述半导体制造系统被配置为使用所述设计信息来根据所述设计生产所述电路,其中所述设计信息指定所述电路包括:
实现多个逻辑插槽的电路;
图形处理器子单元的集合,图形处理器子单元的所述集合各自实现多个分布式硬件插槽;以及
控制电路,所述控制电路被配置为:
将图形工作的第一集合和图形工作的第二集合指派到第一逻辑插槽和第二逻辑插槽;
确定用于图形工作的所述第一集合的第一分配规则,所述第一分配规则指示分配到所述集合中的所述图形处理器子单元中的所有图形处理器子单元;
确定用于图形工作的所述第二集合的第二分配规则,所述第二分配规则指示分配到所述集合中的所述图形处理器子单元中的少于所有的图形处理器子单元;
基于所述第一分配规则来确定所述第一逻辑插槽和一个或多个分布式硬件插槽的第一集合之间的映射;
基于所述第二分配规则来确定所述第二逻辑插槽和一个或多个分布式硬件插槽的第二集合之间的映射;以及
根据所确定的映射将图形工作的所述第一集合和图形工作的所述第二集合分配到所述图形处理器子单元中的一个或多个图形处理器子单元。
17.根据权利要求16所述的非暂态计算机可读存储介质,其中所述图形处理器子单元被组织成多个子单元的多个组,其中相同组中的子单元共享高速缓存;并且
其中所述第二分配规则指示将图形工作的所述第二集合分配到子单元的单个组。
18.根据权利要求16所述的非暂态计算机可读存储介质,其中所述控制电路被配置为基于由正执行的图形程序发信号通知的一个或多个软件覆盖来确定所述第一分配规则,其中所述电路被配置为基于以下类型的软件覆盖来选择所述第一分配规则:
掩模信息,所述掩模信息指示哪些子单元能用于图形工作的所述第一集合;
指定分配规则;
组信息,所述组信息指示应在其上部署图形工作的所述第一集合的子单元的组;和
策略信息,所述策略信息指示调度策略。
19.一种方法,包括:
由图形处理器的控制电路将图形工作的第一集合和图形工作的第二集合指派到实现多个逻辑插槽的电路的第一逻辑插槽和第二逻辑插槽;
由所述控制电路确定用于图形工作的所述第一集合的第一分配规则,所述第一分配规则指示分配到各自实现多个分布式硬件插槽的图形处理器子单元的集合中的所有图形处理器子单元;
由所述控制电路确定用于图形工作的所述第二集合的第二分配规则,所述第二分配规则指示分配到所述集合中的所述图形处理器子单元中的少于所有的图形处理器子单元;
由所述控制电路基于所述第一分配规则来确定所述第一逻辑插槽和一个或多个分布式硬件插槽的第一集合之间的映射;
由所述控制电路基于所述第二分配规则来确定所述第二逻辑插槽和一个或多个分布式硬件插槽的第二集合之间的映射;以及
由所述控制电路根据所确定的映射将图形工作的所述第一集合和图形工作的所述第二集合分配到所述图形处理器子单元中的一个或多个图形处理器子单元。
20.根据权利要求19所述的方法,还包括:
确定所述多个逻辑插槽中的插槽的相应保持值,其中所述保持值指示逻辑插槽的内核的状况;以及
允许具有第一优先级级别的逻辑插槽基于所述相应保持值中的一个或多个保持值来回收指派到具有较低的第二优先级级别的逻辑插槽的硬件插槽。
CN202280055282.8A 2021-08-11 2022-07-20 用于图形处理器的逻辑插槽到硬件插槽映射 Pending CN117882107A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US17/399,711 2021-08-11
US17/399,759 2021-08-11
US17/399,759 US20230051906A1 (en) 2021-08-11 2021-08-11 Software Control Techniques for Graphics Hardware that Supports Logical Slots
PCT/US2022/037716 WO2023018529A1 (en) 2021-08-11 2022-07-20 Logical slot to hardware slot mapping for graphics processors

Publications (1)

Publication Number Publication Date
CN117882107A true CN117882107A (zh) 2024-04-12

Family

ID=85176857

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280055282.8A Pending CN117882107A (zh) 2021-08-11 2022-07-20 用于图形处理器的逻辑插槽到硬件插槽映射

Country Status (2)

Country Link
US (1) US20230051906A1 (zh)
CN (1) CN117882107A (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088779A (en) * 1996-12-30 2000-07-11 Fujitsu Limited System and method for execution management of computer programs
US6519678B1 (en) * 2001-09-10 2003-02-11 International Business Machines Corporation Virtualization of data storage drives of an automated data storage library
US8115773B2 (en) * 2007-06-07 2012-02-14 Apple Inc. Serializing command streams for graphics processors
US9727385B2 (en) * 2011-07-18 2017-08-08 Apple Inc. Graphical processing unit (GPU) implementing a plurality of virtual GPUs
CN110764901B (zh) * 2019-09-17 2021-02-19 创新先进技术有限公司 基于gpu资源的数据处理方法、电子设备及系统

Also Published As

Publication number Publication date
US20230051906A1 (en) 2023-02-16

Similar Documents

Publication Publication Date Title
US10324726B1 (en) Providing instruction characteristics to graphics scheduling circuitry based on decoded instructions
CN114092614B (zh) 带有并行光线测试的光线相交电路
EP3907621B1 (en) Cache memory with limits specified according to a class of service
US12086644B2 (en) Logical slot to hardware slot mapping for graphics processors
JP7560700B2 (ja) グラフィックスプロセッサのための論理スロットからハードウェアスロットへのマッピング
US20230051906A1 (en) Software Control Techniques for Graphics Hardware that Supports Logical Slots
US20230048951A1 (en) Kickslot Manager Circuitry for Graphics Processors
US20230047481A1 (en) Affinity-based Graphics Scheduling
US9378139B2 (en) System, method, and computer program product for low latency scheduling and launch of memory defined tasks
US12039368B2 (en) Priority inversion mitigation techniques
US20230075531A1 (en) Quality of Service Techniques in Distributed Graphics Processor
US20240273667A1 (en) Geometry Kick Distribution in Graphics Processor
US20240272961A1 (en) Logical Slot to Distributed Hardware Slot Scheduling for Graphics Work
US11947462B1 (en) Cache footprint management
US12026098B1 (en) Hardware-assisted page pool grow operation
US20240354249A1 (en) Page Pool Descriptor Cache
WO2023038759A1 (en) Quality of service techniques in distributed graphics processor
US11954492B1 (en) Fence enforcement techniques based on stall characteristics
US20240095176A1 (en) Preemption Techniques for Memory-Backed Registers
US20240289282A1 (en) Cache Control to Preserve Register Data
US20240095031A1 (en) Thread Channel Deactivation based on Instruction Cache Misses
US20240095065A1 (en) Multi-stage Thread Scheduling
US20220374359A1 (en) Multi-block Cache Fetch Techniques
KR20230079353A (ko) 하나 이상의 차원들에서 제한들을 갖는 컴퓨트 커널 파싱

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