CN116894764A - 三维图形渲染的存储器分配 - Google Patents

三维图形渲染的存储器分配 Download PDF

Info

Publication number
CN116894764A
CN116894764A CN202310323503.1A CN202310323503A CN116894764A CN 116894764 A CN116894764 A CN 116894764A CN 202310323503 A CN202310323503 A CN 202310323503A CN 116894764 A CN116894764 A CN 116894764A
Authority
CN
China
Prior art keywords
core
memory
processing
pim
cores
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
CN202310323503.1A
Other languages
English (en)
Inventor
M·J·利维斯利
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN116894764A publication Critical patent/CN116894764A/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/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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

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

Abstract

本申请涉及三维图形渲染的存储器分配。提供了一种在包括多个核(101,111)的三维图形渲染系统(100)中为几何处理分配存储器的方法和装置。几何处理工作被分成离散的工作包,该工作包形成有序序列。向核指派不同的工作包以进行处理,并发出存储器分配请求以使存储器能够存储处理结果。与序列中当前最早的未完成工作包相关的存储器分配请求与其他请求被不同地对待,并且可以被优先化。

Description

三维图形渲染的存储器分配
技术领域
本申请涉及三维图形渲染的存储器分配。
背景技术
在计算机图形中,“渲染”是将描述虚拟场景的3D模型转换为表示来自特定视点(或若干视点)的场景的视图的一个或多个2D图像的过程。由于这是一个计算密集的过程,对于典型的虚拟场景,通常提供专门进行必要计算的硬件加速器。这种硬件加速器在本领域中称为图形处理单元(GPU)。
不同的GPU可能具有不同的硬件架构,反映了执行3D渲染所需的计算的不同策略。一种示例性GPU使用“基于图块的延迟渲染”(TBDR)流水线。
这种方法将渲染过程分为两个不同的阶段。这两个阶段中的第一个阶段——几何处理阶段(或简称为“几何处理”)包括处理描述场景三维模型的几何数据。基于要渲染的特定视点,几何数据从三维空间变换成图像的二维坐标。这一阶段的输出是变换后的几何结构,该几何结构存储在所谓的“图元块”中的“参数缓冲区”中。几何处理阶段有时简单地简称为“几何处理”。
几何阶段中的基本操作是计算出哪些图元形状落入每个图块内。图元最常见的是三角形。这些三角形连接在一起形成对象。三角形是根据它们的顶点(角点)来描述的。每个顶点包括位置信息(顶点的位置)并且可以包括附加信息,例如颜色。
当GPU接收到来自应用程序驱动程序的绘制调用时,渲染操作的几何阶段开始。绘制调用包含几何处理任务的指令(具体地说,绘制什么三角形)和执行几何处理所需的所有信息。
在称为“片段处理”的第二阶段,从参数缓冲区读取变换后的几何数据并进行光栅化,即映射到像素。片段处理阶段通过光栅化过程将图元转换成片段。作为此过程的一部分,执行深度测试以确定哪些片段在每个像素(或者每个样本位置,如果样本位置与像素之间没有一一对应关系)处实际可见。“延迟渲染”指的是这样一个事实,即只有当系统已经确定了哪些片段是可见的,GPU才会继续对可见的像素运行“片段着色器”程序。着色器程序检索相关可视片段的纹理数据(包含颜色信息)。像素着色器程序基于可见片段的检索到的纹理数据来确定像素值。
“基于图块”是指将要渲染的图像细分成多个矩形块或“图块”的事实。更具体地说,在几何处理阶段,可以将变换后的几何结构一个图块接一个图块地拆分,以创建指示每个图块中存在哪些图元的一组图块列表。接着可由片段着色阶段大体上彼此独立地处理图块。对每个单独的图块执行片段着色,针对该图块中的像素块产生像素(颜色)值。
基于图块的方法有助于提高数据局部性。每个图块中的几何片段集合通常是整个片段集合的小子集。因此,与在一次通过中处理整个图像相比,可以用小得多的存储器分配来执行该处理。
平铺也可以在一定程度上促进并行处理。具体地说,因为纹理化/着色可针对不同图块独立执行,所以在多核架构中,可将不同图块的片段着色分配给单独的GPU核。
为了减少渲染时间,需要使用多核GPU并行处理渲染任务,包括几何处理和片段处理任务。为了并行处理绘制调用,包含在绘制调用内的渲染任务必须被拆分成可以在多核系统的每个核上处理的更小的任务组。
然而,由于图形渲染计算的特殊性质,并行实现渲染任务带来了重大的新挑战。具体地说,GPU需要遵守由应用程序驱动程序提供渲染工作的顺序。这是因为,对于某些类型的图形内容,最终渲染的图像将取决于对象渲染的顺序。换句话说,如果对象不按序列渲染,最终渲染的图像将是不正确的。
这对于单个渲染流水线来说不是问题。工作将始终按照其进入流水线的相同顺序退出流水线;不按序列完成工作没有危险。然而,在并行实现中,这种固有的排序丢失了。当在核之间分发工作时,通常不可能准确预测每个核完成每项工作需要多长时间。当核以并行方式处理最初按所定义序列提供的工作时,工作可能会不按原始序列完成。
期望在多核GPU上以高效的方式并行实现渲染任务,并且还遵守以应用程序驱动程序提供图元的顺序渲染图元的要求。
发明内容
提供本发明内容是为了以简化形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用以限制所要求保护的主题的范围。
提供了一种在包括多个核的三维图形渲染系统中为几何处理分配存储器的方法和装置。几何处理工作被分成离散的工作包,该工作包形成有序序列。向核指派不同的工作包以进行处理,并发出存储器分配请求以使存储器能够存储处理结果。与序列中当前最早的未完成工作包相关的存储器分配请求与其他请求被不同地对待,并且可以被优先化。
根据一个方面,提供了一种在包括多个核的三维图形渲染系统中为几何处理分配存储器的方法,所述方法包括:
获得描述在所述多个核当中分发的几何处理工作包序列的信息,其中对于每个工作包,所述信息包括所述序列中的所述工作包的索引,以及所述工作包当前正在被处理还是已经完成的指示;
识别最早活动工作包,所述最早活动工作包是所述序列中当前正由所述核中的任一个核处理的最早工作包;
从所述核中的一个核接收为几何处理分配存储器的请求,以及
至少部分地基于所述请求是否是从处理所述最早活动工作包的所述核接收到的来确定是否分配所请求的存储器。
该方法可以包括根据确定的结果分配(或不分配)所请求的存储器。
所述方法可以包括:如果所述请求是从处理所述最早活动工作包的所述核接收到的,则分配所述存储器;以及如果所述请求是从任何其他核接收到的,则限制所述存储器的所述分配。限制所请求的存储器的分配可以包括在分配所请求的存储器之前强加附加条件。
所述限制可以是至少部分地基于已经分配给所述核的存储器量。
所述限制可以是至少部分地基于已经分配给所述核的不可恢复存储器量,其中如果所述存储器存储所述序列中在所述最早活动工作包之后的工作包的几何处理的输出,则所述存储器是不可恢复的。
所述方法限制可以是至少部分地基于可用于所述几何处理的剩余空闲存储器池的大小。
所述限制可以是基于已经分配给所述核的所述不可恢复存储器量与所述剩余空闲存储器池的所述大小之间的比较。
所述限制可以是基于已经分配给所述核的所述不可恢复存储器量与固定阈值之间的比较。
所述限制可以是基于已经分配给所述核的所述不可恢复存储器量与动态阈值之间的比较。
所述动态阈值可以是至少部分地基于所述剩余空闲存储器池的所述大小。
所述动态阈值可以是至少部分地基于用于几何处理的最小可操作存储器量。
所述动态阈值可以是至少部分地基于所述剩余空闲存储器池的所述大小除以所述系统中核的数量。
描述在所述多个核中分发的所述几何处理工作包序列的所述信息可以在每个核的寄存器阵列中维护。寄存器阵列可以实现内容可寻址存储器(CAM)。
每个核的所述寄存器阵列可选地包括指派给所述核的每个工作包的条目,每个条目可选地包括“有效”标志、“完成”标志、所述工作包的所述索引以及当前分配给所述工作包的所述存储器量的指示。
“有效”标志指示相应的条目是否在使用中,换句话说,在计算不可恢复存储器量时是否需要考虑该条目。“完成”标志指示相应工作包的几何处理是否已完成。
该方法可以包括当该工作包的几何处理完成时,更新条目的“完成”标志。该方法可以包括当最早活动工作包的几何处理完成时,更新条目的“有效”标志。具体地说,当(当前)最早活动工作包的几何处理完成时,该方法可以包括针对索引低于(刚完成的)最早活动工作包的索引的每个条目更新“有效”标志。当最早活动工作包的几何处理完成时,该方法可以包括更新该条目的“完成”标志和“有效”标志。当(当前)最早活动工作包的几何处理完成时,该方法可以还包括识别新的最早活动工作包。
当寄存器阵列实现CAM时,CAM可以由“完成”标志和“有效”标志来索引。以这种方式,通过查询CAM,该方法可以快速识别那些可渲染的工作包和那些不可渲染的工作包(并且其分配的存储器因此当前是不可恢复的)。
还提供了一种核,所述核被配置为在包括多个核的三维图形渲染系统中为几何处理分配存储器,所述核包括参数管理主控单元,所述参数管理主控单元被配置为:
获得描述在所述多个核当中分发的几何处理工作包序列的信息,其中对于每个工作包,所述信息包括所述序列中的所述工作包的索引,以及所述工作包当前正在被处理还是已经完成的指示;
识别最早活动工作包,所述最早活动工作包是所述序列中当前正由所述核中的任一个核处理的最早工作包;
从所述核中的一个核接收为几何处理分配存储器的请求,并且
至少部分地基于所述请求是否是从处理所述最早活动工作包的所述核接收到的来确定是否分配所请求的存储器。
参数管理(PM)主控单元可以根据确定的结果将所请求的存储器分配给请求核。
核可以还包括以下各项中的一项或两项:几何从属单元,该几何从属单元被配置为执行几何处理;以及片段从属单元,该片段从属单元被配置为执行片段处理。
核还可以包括以下各项中的一项或两项:几何主控单元,该几何主控单元被配置为在多个核当中分发几何处理工作包;以及片段主控单元,该片段主控单元被配置为在多个核当中分发片段处理工作包。几何主控单元可以被配置为将几何处理工作包分发到核的几何从属单元。这些几何从属单元可以包括几何主控单元所驻留在的核的几何从属单元。片段主控单元可以被配置为将片段处理工作包分发到核的片段从属单元。这些片段从属单元可以包括片段主控单元所驻留在的核的片段从属单元。
请求存储器分配的核可以是PM主控单元所驻留在的同一个核,或者该核也可以是另一个核。
分配存储器的请求可以由请求存储器的核的几何从属单元做出。
所述参数管理主控单元可以被配置为:如果所述请求是从处理所述最早活动工作包的所述核接收到的,则分配所请求的存储器;并且如果所述请求是从任何其他核接收到的,则限制所述所请求的存储器的所述分配。
如果请求是从除了处理最早活动工作包的核之外的任何核接收到的,则参数管理主控单元可以被配置为至少部分地基于已经分配给请求核的存储器量(可选地,不可恢复存储器量)来限制所请求的存储器的分配。
如果请求是从除了处理最早活动工作包的核之外的任何核接收到的,则参数管理主控单元可以被配置为至少部分地基于已经分配给请求核的存储器量与固定或动态阈值之间的比较来限制所请求的存储器的分配。
动态阈值可以是至少部分地基于可用于几何处理的剩余空闲存储器池的大小。
核可以还包括多个核中的每个核的寄存器阵列,其中参数管理主控单元被配置为将描述几何处理工作包序列的信息存储在寄存器阵列中。
因此,例如,如果系统包括三个执行几何处理工作的核,则核将包括三个寄存器阵列,该核中的每个核一个寄存器阵列。
对于每个核,寄存器阵列可以具有指派给该核的每个工作包的条目。每个条目可以包括“有效”标志、“完成”标志、工作包的索引以及当前为该工作包分配的存储器量的指示。
还提供了一种图形渲染系统,所述图形渲染系统包括:
根据权利要求14至权利要求19中任一项所述的第一核;
至少一个第二核;以及
存储器;
其中所述第一核的所述参数管理主控单元被配置为将所述存储器的部分分配给所述至少一个第二核以进行几何处理工作。
第一核的参数管理主控单元还可以被配置为将存储器的部分分配给第一核以进行几何处理工作。每个核中的几何从属单元可以请求存储器分配,并且可以执行几何处理工作。
还提供了一种图形处理系统,该图形处理系统包括如上所述的核或图形渲染系统,并且/或者被配置为执行如上所述的方法。所述图形处理系统可以用集成电路上的硬件来体现。
还提供了一种使用集成电路制造系统来制造如上概述的图形处理系统的方法。
还提供了一种使用集成电路制造系统制造如上概述的图形处理系统的方法,该方法包括:使用布局处理系统对图形处理系统的计算机可读描述进行处理,以生成体现图形处理系统的集成电路的电路布局描述;以及使用集成电路生成系统,根据电路布局描述来制造图形处理系统。
还提供了一种计算机可读代码,该计算机可读代码被配置为使得当代码被运行时执行如上概述的方法。计算机可读代码可以被配置为当代码在图形处理系统上运行时,控制如上所述的图形处理系统执行该方法。还提供了一种计算机可读存储介质(可选地是非暂时性的),在其上编码有所述计算机可读代码。
还提供了集成电路定义数据集,当在集成电路制造系统中进行处理时,该集成电路定义数据集配置集成电路制造系统以制造如上概述的图形处理系统。
还提供了一种计算机可读存储介质(可选地是非暂时性的),该计算机可读存储介质上存储有如上概述的图形处理系统的计算机可读描述,该计算机可读描述在集成电路制造系统中处理时使集成电路制造系统制造体现该图形处理系统的集成电路。
还提供了一种计算机可读存储介质(可选地是非暂时性的),该计算机可读存储介质上存储有如上概述的图形处理系统的计算机可读描述,该计算机可读描述在集成电路制造系统中处理时使集成电路制造系统执行以下运算:使用布局处理系统对图形处理系统的计算机可读描述进行处理,以生成体现该图形处理系统的集成电路的电路布局描述;并且使用集成电路生成系统根据电路布局描述来制造图形处理系统。
还提供了一种集成电路制造系统,该集成电路制造系统被配置为制造如上概述的图形处理系统。
还提供了一种集成电路制造系统(可选地是非暂时性的),包括:计算机可读存储介质,该计算机可读存储介质上存储有如上概述的图形处理系统的计算机可读描述;布局处理系统,该布局处理系统被配置为处理计算机可读描述,以生成体现该图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置为根据电路布局描述来制造图形处理系统。
布局处理系统可以被配置为确定从集成电路描述导出的电路的逻辑部件的位置信息,以生成包含该图形处理系统的集成电路的电路布局描述。
可以提供用于执行本文中所描述的方法中的任一种方法的计算机程序代码。可提供非暂时性计算机可读存储介质,其上存储有计算机可读指令,当在计算机系统处执行时,所述计算机可读指令促使所述计算机系统执行本文中所描述的方法中的任一种方法。
如对本领域的技术人员将显而易见,上述特征可以适当地组合,并且可与本文中所描述的示例的各方面中的任一方面进行组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1是示出根据一个示例的多核图形渲染系统的框图;
图2A示出了工作包在两个核之间的分发;
图2B示出了几何处理工作包的输出被重新组合成用于片段处理的控制流;
图3A至图3C示出了在根据一个示例的方法执行期间内容可寻址存储器的内容;
图4是示出根据一个示例的分配存储器的方法的流程图;
图5是示出更新描述在核当中分发的几何处理工作包的信息的方法的流程图;
图6示出其中实现图形处理系统的计算机系统;并且
图7示出用于生成包含图形处理系统的集成电路的集成电路制造系统。
附图示出了各种示例。技术人员将了解,附图中所示出的元件边界(例如框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。
具体实施方式
借助于示例呈现以下描述,以使得本领域的技术人员能够制造和使用本发明。本发明不限于本文中所描述的实施方案,并且对所公开实施方案的各种修改对于本领域的技术人员将显而易见。
现在将仅借助于示例来描述实施方案。
乍一看,似乎不需要将按顺序渲染图元的要求应用于几何处理阶段。重要的是渲染完成的顺序;因此,原则上,如果片段着色以正确的序列进行,将遵守正确的排序。
然而,在实践中,以限定的序列处理片段着色工作的要求也对几何处理工作有影响。
根据一个示例性架构,使用“流水线交织标记”(PIM)将输入几何流分解成用于并行处理的多项工作。这些是用于根据由应用程序驱动程序提供的原始流中的位置来标记每项几何工作的标签。PIM将用于片段着色阶段,从而以正确的顺序处理图元。将每项工作简单地称为“PIM”是很方便的,因为每项工作都唯一地对应于一个标记。不同的PIM可以分配给不同的核,然后这些核独立地针对不同的PIM执行几何处理工作。由给定核对PIM的几何处理产生一组控制流,每图块一个控制流(也称为“图块控制列表”)。
如上所述,片段着色也是并行实现的,通常通过将不同图块分配给不同的核来实现。
所有核都可以访问共享存储器,该核从该共享存储器中读取输入数据和写入输出数据。由核在几何处理期间产生的图块控制列表形成片段处理阶段的输入。
在示例性架构中,存储器由“参数管理”(PM)主控单元动态分配给几何处理工作,之所以这样称呼是因为该PM主控单元为参数缓冲区分配存储器。PM主控有一定的存储器空闲池,可以分配给由不同核执行的几何工作。该核使用分配的存储器来写入控制流和图元块。空闲池的最大大小将取决于所讨论的特定图形处理系统的规格,但该最大大小不可避免地是有限的。通常,在进行几何处理之前,不可能预测需要多少存储器来包含与给定PIM相关联的图块控制流和链接的图元块结构。即使每个PIM包含相同数量的图元,也是如此。影响PIM的存储器需求的因素可以包括图块中图元的覆盖范围和图元的复杂性(特别是与每个顶点相关联的数据)。
发明人已经认识到,随着空闲池剩余大小的减少,可能会出现问题。在最坏的情况下,GPU会达到不可恢复的死锁状态。这个问题源于并行处理与外部对渲染操作序列的限制之间的紧张关系。
参考一个示例,这个问题最容易理解。在双核系统中,让我们假设PIM0、PIM2、PIM5和PIM6的几何处理已分配给核0,并且PIM1、PIM3和PIM4的几何处理已分配给核1。每个核独立处理每个PIM,从而每图块产生单独的控制流。
由核针对每个图块写入的每个控制流包括PIM标记。这些用于将来自同一图块(来自每个核的一个图块)的多个控制流的PIM部分按照PIM顺序拼接到主控制流中,并删除所有PIM信息。对图块的控制流的每个更新包含到图元块结构的链接,该图元块结构包含关于图元在其3D空间顶点方面的更详细信息,以及在片段处理期间所需的其他信息,诸如统一和纹理值,以及固定功能处理单元的状态。为了完整性,注意到图元块可以包含不同图块的图元。每个控制流识别与参数缓冲区中的图元块结构内的图块相关联的图元。
对于片段着色工作,每个图块将被分配给两个核中的一个核。为了处理给定图块的片段着色,核(具体来说,核内的片段着色从属单元)将把两个图块控制流拼接在一起——一个图块控制流由核0产生,并且另一个图块控制流由核1产生。在此拼接过程中,PIM标记用于保持正确的排序。
现在考虑如果几何处理工作不按序列完成会发生什么。例如,假设核1已经处理了PIM1,并且正在处理PIM3。同时,核0已经完成了所有的几何处理工作。这意味着参数缓冲区包含PIM0、PIM1、PIM2、PIM5和PIM6的图块控制流(以及PIM3的部分完成的图块控制流)。让我们假设,随着核1继续处理PIM3,空闲池开始耗尽。
恢复参数缓冲区中使用的存储器的一种方法是执行“部分渲染”,其中将目前处理的图元提交用于片段处理。一旦由执行片段处理的核读取了存储器的相关部分,就可以释放这些部分,以便可以由PM主控重新分配这些部分,用于更多的几何处理工作。
在我们上面的示例中,部分渲染可以包括PIM0、PIM1、PIM2以及PIM3的一部分,该PIM0、PIM1、PIM2以及PIM3的一部分的几何处理到目前为止已经完成。(注意,图元序列保存在每个PIM中;因此,PIM的部分渲染是可能的。)分配给渲染后的PIM的存储器可以被释放和重新分配。请注意,PIM5-PIM6无法渲染,因为这将打破排序限制——这些PIM的片段处理必须延迟到PIM3(和PIM 4)的片段处理完成之后。这意味着在参数缓冲区中为PIM5-PIM6分配的存储器不能被释放和重用。
取决于由核请求的后续存储器分配是什么,核1可能仍无法完成其对PIM3的几何处理工作。例如,假设与此同时,PIM7、PIM8和PIM9的几何处理工作已被分配给核0,因为该核处于空闲状态。如果核0被分配了作为部分渲染的结果而被释放的存储器,以便继续该核的几何处理工作,那么我们可能会达到这样的情况,其中PIM5-PIM9的几何处理已经完成,并且所产生的图块控制流正在占用存储器中的空间,但是这些PIM不能被渲染,因为核1由于缺少存储器而仍然不能完成PIM3。这可能导致死锁,即没有办法释放足够的存储器来“疏通”流水线。
根据本公开的示例解决了这种死锁风险。
在根据本公开的示例中,将存储器分配给每个核以进行几何处理工作至少部分地取决于该核是否正在处理最低活动PIM——即,在当前正在处理的所有PIM中具有最低编号的PIM(因此是原始几何序列中的最早位置)。发明人已经认识到,总是希望将存储器分配给最低活动PIM(在上面的简单示例中为PIM3)的处理。一方面,如果无法完成对该PIM的几何处理,该PIM可能会“阻塞”流水线。另一方面,为这个PIM分配附加存储器总是安全的,因为部分渲染总是保证可以恢复这个存储器。根据定义,序列中比最低活动PIM更早的所有PIM已经被处理;因此,所有PIM(直到并包括最低活动PIM)都可以包括在部分渲染中。
因此,存储器可以无限制地分配给当前处理最低活动PIM的核。
在示例中,根据本公开,如果核没有正在处理最低活动PIM,则限制向该核分配用于几何处理工作的存储器。具体地说,可以至少部分地基于已经分配给这种核的当前不可恢复存储器量来限制向该核分配存储器。这里,不可恢复存储器指的是与当前不可渲染的PIM的图块控制流相关联的存储器。该存储器是不可渲染的,因为其与最低活动PIM“之上”(即序列中较晚)的PIM相关。
还可以至少部分地基于空闲存储器池的剩余大小来限制存储器的分配。
在一些示例中,可以特别基于已经分配给核的不可恢复存储器与阈值之间的比较来限制存储器的分配(分配给除了处理最低活动PIM的核之外的核)。
在一些示例中,阈值可以是固定阈值。在其他示例中,该阈值可以被动态调整。在动态调整策略的一个示例中,阈值可以基于空闲存储器池的剩余大小来设定。可选地,剩余大小可以除以系统中核的数量,以给出可以安全地分配(在不可恢复的意义上)给每个核的存储器的“公平”份额的指示。阈值还可以考虑参数缓冲区的最小可操作大小,以更准确地估计可以安全地分配给每个核的可用参数缓冲存储器的量。
如果分配给核的不可恢复存储器量超过阈值,则PM主控将不会再分配更多存储器给该核,直到该核的不可渲染(不可恢复)存储器量减少或阈值增加。
PM主控每核仅为一个(当前活动的)PIM分配存储器。然而,存储器可能已经分配给了核中先前处理过的PIM,该PIM还不能被渲染(因为它们不属于直到并包括当前最低活动PIM的“可渲染范围”的一部分)。
在当前的具体实现中,为了支持存储器的条件分配,PM主控维护每个核中几何处理的当前状态的记录,包括正在使用的不可恢复存储器量。
对于分配给每个核的每个PIM,记录包括:PIM编号,以及指示该PIM是否已经完成的标志。“有效”标志指示是否需要考虑此条目以用于计算不可恢复存储器。记录还包括由PIM当前占用的存储器量(表示为页数)。
在当前的具体实现中,PM主控针对每个相应的核在内容可寻址存储器(CAM)中维护记录。每个CAM包含固定数量的条目,该条目对应于在任何给定时间可以分配给核的PIM的最大数量(GPU的设计参数)。
当PIM被分配给核时,PM主控设定相关CAM条目的“有效”标志。“完成”标志最初被清除。每次核完成PIM的处理时,PM主控都会更新相关的CAM条目,以设定“完成”标志。当PIM已经完成并被确定为可渲染时,清除“有效”标志。
每次(当前)最低活动PIM的处理完成时,PM主控都会重新评估当前分配给核的其他PIM的状态。PIM编号低于新的最低活动PIM(也就是说,高于旧的最低活动PIM)的已完成PIM被无效,即,该已完成PIM的“有效”标志被清除。这些PIM可以通过片段处理阶段(如果必要,通过部分渲染)渲染;因此,如果需要的话,这些PIM的存储器是可以恢复的。因此,与这些PIM相关联的存储器并不重要。
在任何时候,PM主控都可以计算由每个核使用的不可恢复存储器量。通过在CAM中搜索设定了“有效”标志的条目,可以识别不可恢复的存储器。这些PIM将具有比最低活动PIM更大的PIM编号(作为上述更新规则的结果)。换句话说,这些PIM与当前最低活动PIM之外的(已完成和未完成)PIM相关(即具有更高PIM编号)。当PM主控找到这样的条目时,该PM主控从CAM中检索条目的存储器页数。这些页数的总和指示该核的不可恢复存储器。
CAM结构表示维护记录的一种快速有效的方式。CAM条目由“有效”和“完成”标志来索引。它们返回PIM编号和被占用的页数。然而,应该理解,也可以使用其他存储器结构来查找相关的页数信息。
图1是示出根据一个示例的多核图形渲染系统100的框图。在这个示例中,系统100包括两个核——第一核101和第二核111。应当理解,一般来说,该系统可以包括任意数量的核。第一核101包括:参数管理主控单元102;几何处理主控单元104;以及片段着色主控单元106。该第一核还可以包括一个或多个附加主控单元108。几何处理主控单元104负责在各种核当中拆分、指派和分发几何处理工作包。片段着色主控单元106负责在各种核当中拆分、指派和分发片段着色工作包。参数管理主控单元102被配置为针对由核执行的活动分配存储器,特别是针对几何处理分配存储器。
第一核101还包括几何处理从属单元105和片段着色从属单元107。几何处理从属单元105被配置为执行指派给第一核101的几何处理工作的份额。片段着色从属单元107被配置为执行指派给第一核101的片段着色工作的份额。
根据本示例,第二核111被配置为类似于第一核。核101和111被设计和实例化为相同的部件,因为从设计和验证的角度来看这更方便,还因为这促进了可扩展性。每个核被设计为使得其可在给定图形渲染系统中单独实例化,或与任何数目的类似核一起实例化。因此,第二核111包括参数管理主控单元112;几何处理主控单元114;以及片段着色主控单元116。然而,在图形渲染系统100中只需要每个主控单元的一个实例;因此,每个主控单元只有一个实例是活动的。在本示例中,不失一般性,将假设第一核101的主控单元是活动的,而第二核111的主控单元是非活动的。然而,应当理解,这并不限制本公开的范围。任何给定的活动主控单元都可以驻留在多核系统的核中的任何核中。
第二核111还包括几何处理从属单元115和片段着色从属单元117。应当理解,几何处理从属单元105和115两者都是活动的,并且几何处理工作由几何处理主控单元104在该几何处理从属单元之间划分。同样,片段着色从属单元107和117两者都是活动的,并且片段处理工作由片段处理主控单元106在该片段着色从属单元之间划分。
系统100还包括在核101、111之间共享的存储器120。核101、111和存储器120通过总线130或其他合适的互连线来连接。对存储器120的共享存取促进了由核对几何处理和片段着色的并行处理。几何处理从属单元105和115在其执行几何处理时,将控制流和图元块写入到存储器120。片段着色从属单元107和117接着能够读取这些控制流和图元块,作为片段着色阶段的输入。如上所述,每个几何处理从属单元产生一组控制流——每图块一个控制流。每个片段着色从属单元被配置为一次处理一个图块。当处理给定图块时,片段着色从属单元读取该图块的N个控制流(其中N为核的数目,或更具体来说,为具有活动几何处理从属单元的核的数目)。片段着色从属单元将这些个别控制流组装成用于图块的单个主控制流,并且基于此主控制流执行片段着色。
图2A示出了工作包在两个核之间的分发。绘制调用的内容示出为块序列。这些块中的每个块代表一个工作包,并且每个工作包由其“流水线交织标记”(PIM)来标识。PIM是几何处理工作包序列中工作包的索引。每个工作包包括需要几何处理的图元组。PIM编号以连续递增的顺序被指派给块(工作包),以便该块捕获在绘制调用中从应用程序驱动程序接收的图元的排序。图元的排序也保留在每个块中。几何处理主控单元104负责将绘制调用拆分成这些工作包,并为每个包指派PIM编号。几何处理主控单元104还负责将各种工作包指派给可用于进行几何处理工作的核。工作包的一种可能分发如图2A所示。几何处理主控单元104将PIM0、PIM2、PIM5和PIM 6指派给第一核101(核0),并将PIM1、PIM3和PIM4指派给第二核111(核1)。几何处理主控单元104通常试图拆分几何处理工作,使得每个核被近似相等地利用。例如,如果核是相同的,并且具有相同的工作能力,那么几何处理主控单元104将设法给每个核指派相同的工作量。例如,几何处理主控单元104可以分发几何处理工作,使得每个核被指派近似相同数量的图元以进行处理。然而,不可能预先准确预测在处理一组给定的图元时将涉及多少计算工作。因此,几乎不可避免的是,不同核的工作负荷的不平衡将会出现(尽管几何处理主控单元104尽了最大努力来平衡这些工作负荷)。因此,几乎不可避免的是,几何处理从属单元105、115对PIM的处理将不按序列完成。
PIM用于将原始序列重新施加到图元上。图2B示出了几何处理工作包的输出被重新组合成用于片段处理的主控制流。让我们假设片段着色从属单元117已被指派帧的单个图块“图块(0,0)”执行片段着色的任务。第一核101(核0)提供用于图块(0,0)的第一控制流201,该第一控制流包含落入图块内的图元PIM0、PIM2、PIM5和PIM6;第二核111(核1)提供包含落入图块内的图元PIM1、PIM3和PIM4的控制流211。注意,表示不同PIM的块在图2B中以不同的宽度示出,从而指示在几何处理阶段处理不同PIM所花费的可变时间长度。
片段着色从属单元117将两个控制流(一个来自核0,一个来自核1)组装成单个主控制流220。这是通过读取每个控制流201、211中的PIM标记并根据PIM的PIM编号以正确的顺序将PIM拼接在一起来完成的。注意,纯粹为了简单起见,我们已假设片段着色从属单元117正处理单个图块。一般来说,片段着色从属单元107、117可一次被指派多于一个图块以进行处理。如果该片段着色从属单元被指派多于一个图块,那么片段着色从属单元117将针对每一图块将相应控制流拼接在一起,以产生用于每个图块的主控制流。片段着色工作到不同片段着色从属单元107、117的拆分和指派由片段着色主控单元106处理。
从图2B中可以理解,一般来说,如果对于给定PIM,几何处理还没有完成,那么在片段着色阶段,该PIM或序列中在给定PIM之后的任何PIM都不能被处理。(如上所述,这种情况有一个例外——到目前为止由几何处理阶段完成的最低活动PIM部分可以在片段着色阶段通过部分渲染进行处理。)主控制流只能在几何处理工作已经完成的程度上拼接在一起。为了执行几何处理工作,几何处理从属单元105、115需要分配存储器,该几何处理从属单元可以将其工作的输出(控制流和相关联图元块)写入该存储器。同样,实际上不可能预测针对给定PIM执行几何处理工作的计算复杂度,也实际上不可能预测处理该PIM所需的存储器。因此,存储器分配是动态处理的。如上所述,核101、111共享对存储器120的访问。为了以所需的方式共享访问权限,该核需要对什么内容存储在哪里有一致的了解。根据本具体实现,这是通过提供对存储器分配的集中控制来实现的。每当几何处理从属单元105、115中的一者需要附加存储器时,该几何处理从属单元就从参数管理主控单元102请求该附加存储器。参数管理主控单元102从为几何处理保留的可用空闲栈中分配存储器。当执行片段着色时,由几何处理从属单元105、115写入到存储器120的数据由片段着色从属单元107、117消耗。一旦在片段着色期间消耗了控制流和图元块数据,就可由参数管理主控单元102解除分配对应的存储器并将该存储器返回到空闲栈。
如上所述,如果不小心将存储器分配给几何处理从属单元105、115,则会出现死锁情况。如果分配了过多的存储器来存储序列中后面PIM的几何处理输出,则空闲栈上可能没有足够的存储器来完成序列中前面PIM的几何处理。尽管可触发部分渲染,以迫使对尽可能多的图元执行片段着色,但由图元的原始序列强加的限制意味着这可能无法提供足以总是避免死锁的适当解决方案。只能对已经完成几何处理的连续图元序列执行部分渲染。例如,前面给出了一个示例,其中PIM3的几何处理没有完成。在这种情况下,只能对PIM 0、PIM1、PIM2和PIM3中到目前为止已经完成的部分进行部分渲染。
如果没有参数管理主控单元102对存储器分配的仔细控制,可能会出现部分渲染无法释放足够的存储器来完成“阻塞”流水线的未完成PIM的几何处理的情况。根据本公开的示例实现了有助于防止这种死锁情况出现的存储器分配机制。首先,这可以通过区分正在处理当前最低活动PIM的核与正在进行几何处理工作的其他核来实现。“最低活动PIM”是几何处理正在进行的具有最低编号(索引)的PIM。根据定义,指数低于最低活动PIM的所有PIM都已经完成。当前描述的存储器分配机制的一个见解是,当请求处理最低活动PIM时,总是希望分配存储器。这是因为分配给最低活动PIM的存储器可以通过触发部分渲染来恢复。当除处理最低活动PIM的核之外的核请求分配存储器时,在分配存储器之前会应用更多限制性条件。这些更具限制性的条件试图在为每个核“公平”分配存储器以允许该核继续进行几何处理工作与在空闲栈上保留足够存储器的需求之间取得平衡。取决于空闲栈的剩余大小,通过对处理最低活动PIM的核的存储器分配进行优先化,以及通过限制对其他核的存储器分配,根据本公开的示例可以降低出现死锁情况的可能性。
为了实现根据本公开的示例的存储器分配机制,参数管理主控单元102维护迄今为止为处理每个PIM而分配的存储器的记录,以及每个PIM的当前处理状态的记录。具体地说,根据下面描述的示例,参数管理主控单元102维护允许其在任何给定时间确定当前分配给核的不可恢复存储器量的记录。这里,“不可恢复”指的是不能通过触发部分渲染来恢复的已分配存储器。将参照图3A至图3C描述根据此示例保持的记录。
图3A至图3C示出了根据一个示例的方法的执行期间一组寄存器阵列310、320、330的内容。如图所示,在这个示例中,每个寄存器阵列实现内容可寻址存储器(CAM);然而,这并不是在所有的示例中必不可少的。一般而言,其内容可以通过任何合适的方式被检查的任何寄存器阵列都可以被参数管理主控单元102用来存储期望的存储器分配记录。以下描述中对CAM的引用应该在这种上下文中理解。
图3A至图3C的示例是与图2A和图2B中的示例不同并且稍微更复杂的示例。在图3A至图3C的示例中,有三个核执行几何处理。参数管理主控单元针对这些核中的每个核维护相应CAM(寄存器阵列)。每个CAM的大小取决于可以同时分配给每个核的PIM的最大数量。在本示例中,假设在任何给定时间,可以由几何处理主控单元将多达四个PIM分配给每个核(即,每个几何处理从属单元)。因此,每个CAM具有四个条目。维护核0的记录的CAM 310具有条目311、312、313和314。维护核1的记录的CAM 320具有条目321、322、323和324。同样,维护核2的记录的CAM 330具有条目331、332、333和334。每个条目包含“有效”标志;PIM编号;“完成”标志;和页数。“完成”标志指示PIM的几何处理是否已经完成。“有效”标志指示是否需要考虑该条目以用于计算不可恢复存储器。页数是当前分配给条目所属的PIM的存储器量(以页为单位)。PIM编号指示该条目所属的PIM。
每个核按照指派给它的PIM的PIM编号的顺序处理该PIM。每个核一次只处理一个PIM,因此一次只为一个PIM请求存储器分配。
在图3A所示的状态中,六个PIM已经被分发给核用于几何处理。核0已经被指派了PIM 2、3和5;核1已经被指派了PIM 1;并且核2已经被指派了PIM 4和6。当前分配给PIM 1-6中的每个PIM的存储器被记录在CAM 310、32、330中的一者中的相应条目322、313、312、333、311和334中。为这些条目中的每个条目设定“有效”位(标志)(有效=1)。其余条目当前未被使用,并且它们的“有效”位被清除(有效=0)。PIM 2、3和4的几何处理已经完成。相应条目的“完成”位(标志)因此被设定(完成=1)。核0当前正在处理PIM 5;核1当前正在处理PIM1;并且核2当前正在处理PIM 6。相应条目的“完成”位因此被清除(完成=0)。最低活动PIM为PIM 1。从这些记录中可以推断出:核0有两个已完成但不可渲染的PIM(PIM 2和3);核1正在处理最低活动PIM并且核2具有一个已完成但不可渲染的PIM(PIM 4)。分配给每个核的不可恢复存储器量由该核的总不可渲染页数指示。核0的总不可渲染页数为100个页。这是条目311、312和313中页数的总和。核0的不可渲染总页数为0,因为该核正在处理最低活动PIM——当前分配给此PIM的44个页将可以在部分渲染中恢复。核2的不可渲染总页数为44——条目333和334的页数的总和。条目333涉及PIM 4,该PIM已经完成但还不能被渲染,因为该PIM的PIM编号高于最低活动PIM。条目334涉及当前正在处理的PIM 6,并且由于同样的原因还不能被渲染。
图3B示出了当核1完成处理PIM 1时的情况。设定相关联条目322的“完成”标志(完成=1)。由于PIM 1的几何处理完成,其他几个PIM的状态改变。PIM 1、2、3和4现在都是可渲染的。新的最低活动PIM是PIM 5,该PIM(仍然)由核0处理。核2继续处理PIM 6。响应于PIM 1的几何处理的完成,参数管理主控单元102更新CAM条目,如图3C所示。由于PIM 1-4是可渲染的,相应CAM条目322、313、312和333的“有效”标志被清除(有效=0)。为这些PIM分配的存储器仍然被占用,但现在可以恢复(经由部分渲染),因此不再需要跟踪来计算不可恢复存储器。这意味着不可恢复存储器总量已经减少。具体地说,与核1相关联的不可恢复存储器量从100个页减少到0个页。因此,当几何处理主控单元将下一个PIM(PIM 7)指派给核1,并且核1的几何处理从属单元请求用于此几何处理的存储器分配时,参数管理主控单元通过分配存储器的所请求的4个页来响应。核1相应地开始PIM 7的几何处理。
注意,在为每个条目清除“有效”标志之后(一旦对应的PIM变得可渲染),该条目保留在寄存器阵列中。“有效”标志已被清除的条目可供重用。当新的PIM到达PM主控单元102时,有效=0的条目将被重写。以这种方式,在几何阶段的处理期间,可以多次重用CAM条目。这可能是有益的,因为几何处理阶段中的PIM数量可能比PM主控单元被配置为支持的条目数量多得多。请注意,不需要显式删除或清除CAM的内容——清除“有效”标志以标记该CAM以便重用就足够了。这有助于使功耗最小化。有效=0的条目被视为无效,并且不会被读取。在几何阶段结束时,所有的PIM都应该是可渲染的;因此,所有CAM条目应该显示有效=0和完成=1。
图4是示出根据一个示例的由参数管理主控单元102执行的分配存储器的方法的流程图。在描述这种方法时,我们将再次参考图1的双核示例。在步骤410中,主控单元102获得描述在核101、111之间分发的几何处理工作包的信息。这个步骤涉及填充寄存器阵列(CAM),如图3A至图3C所示的CAM,其中有将PIM指派给核的信息,以及当前为处理每个PIM分配的存储器页的数量的信息。在步骤420中,主控单元102识别最低活动PIM和处理该PIM的核。在步骤430中,主控单元102从核101、111中的一者的几何处理从属单元105、115接收对存储器分配的请求。
主控单元102基于请求是否来自处理最低活动PIM的核来确定是否分配所请求的存储器。如果主控单元102在步骤440中确定请求存储器分配的核当前正在处理最低活动PIM,则该主控单元无任何限制地分配存储器(在步骤450中)。即,主控单元102在这种情况下分配存储器,而不应用任何进一步的条件。如果主控单元102在步骤440中确定该请求是由除了处理最低活动PIM的核之外的核做出的,则存在对存储器分配的限制。也就是说,主控单元102在潜在地分配所请求的存储器之前评估进一步的条件。具体地说,在本示例中,主控单元计算当前分配给请求核的不可恢复存储器总量。如上面针对图3A至图3C的示例所解释的,使用寄存器阵列的内容来实现这一点。如果当前分配给请求核的不可恢复存储器低于阈值(见步骤460),则主控单元102分配存储器(步骤450)。否则,该主控单元拒绝存储器分配请求(步骤470)。
在步骤460中应用于不可恢复存储器分配的阈值可以用多种方式来确定。在本示例中,使用以下公式,基于空闲栈的当前可用剩余大小来计算阈值:
顾名思义,“空闲栈大小”是参数管理主控单元102可用于分配给参数缓冲区的空闲栈的剩余大小。当存储器被分配给参数缓冲区时,空闲栈的大小会减小。“最小参数缓冲区大小”表示在所有情况下都应该保留的存储器量,以使图形渲染系统100能够继续正确运行。例如,可以考虑成功执行部分渲染的存储器需求。最小参数缓冲区大小通常取决于系统的配置参数,诸如核数量和每核的处理单元数量。暂停进一步存储器分配的阈值等于空闲栈大小与最小参数缓冲区大小的差除以多核系统中的核数量。这是为了让每个核独占“公平”(也就是平等)数量的不可恢复存储器页。如果核具有比此阈值更多的不可恢复存储器页,则该核的任何进一步的存储器分配请求将被参数管理主控单元102拒绝。
注意,阈值是动态的;因此,一般来说,核可以以两种方式超过阈值:或者通过参数管理主控单元102向该核分配更多的存储器(在步骤450中),或者通过降低阈值。每当主控单元102将存储器分配给核101、111中的任何一者用于几何处理时,阈值都减小,因为这减小了剩余的空闲栈大小。这由图4的方法中的步骤480反映出来:在分配了存储器之后(在步骤450中),该方法进行到步骤480,其中主控单元102基于空闲栈大小的新值来更新暂停阈值。
当然,暂停阈值也可以增加。这可能(i)在片段处理阶段中,在占据存储器的数据已被片段着色从属单元107、117消耗之后,通过解除分配存储器并将其释放回空闲栈,或(ii)通过由系统将附加存储器分配给空闲栈而发生。为了简单起见,这些步骤没有反映在图4的流程图中。
图5是示出更新存储在图3A至图3C的示例中所示的寄存器阵列(CAM)中的记录的方法的流程图。如上所述,这些记录存储了描述几何处理工作包如何在核当中分发以及为该几何处理工作包分配了什么存储器的信息。在步骤510中,几何处理从属单元105、115中的一者完成处理PIM。作为响应,在步骤520中,参数管理主控单元102在该PIM的相应寄存器阵列条目中设定“完成”标志。接下来,在步骤530中,主控单元102检查新完成的PIM是否是最低活动PIM。如果不是,则不需要进一步更新记录,并且该方法终止。如果新完成的PIM是最低活动PIM,则需要进一步更新。在步骤540,主控单元102识别现在在可渲染范围中的PIM(作为最低活动PIM完成的结果)。这些PIM是可识别的,因为其PIM编号低于最低活动PIM。主控单元102清除这些(现在)可渲染PIM的“有效”标志(步骤550),因为分配给该PIM的存储器不再是不可恢复的。在步骤550之后,主控单元102前进到步骤420,在该步骤中,该主控单元识别新的最低活动PIM。
应当理解,参考图1至图5,上述示例是示例性的,本公开的范围不限于这些示例。
例如,用于几何处理的核的存储器分配不需要被记录在与图3A至图3C所示的相同的存储器结构中。基于以上描述,本领域技术人员将能够设计用于存储此信息的合适的替代结构。
类似地,上述动态自适应暂停阈值(用于将存储器分配限制到除了处理最低活动PIM的核之外的核)可以用另一个阈值来代替或增加。在一些示例中,可以定义固定阈值,例如,选择该阈值,使得分配给核的不可恢复存储器总数不超过系统为参数缓冲区分配的存储器总量的某个标称“安全”比例。如果保守地选择这样一个固定阈值,通过确保有足够的可用存储器(空闲的或可恢复的),系统可以通过执行部分渲染来避免死锁,仍然能够避免死锁情况。在其他示例中,可以使用不同于以上示例中描述的阈值的动态阈值。
在一些示例中,系统可以允许应用程序驱动程序具有覆盖存储器分配机制的能力。如果被应用程序驱动程序覆盖,则参数管理主控单元可以按照核的请求分配存储器,而没有限制。如果应用程序负责可能出现的任何死锁情况,则由应用程序驱动程序覆盖可能是合适的。
在上面的示例中,为几何处理的输出分配的存储器量是以页为单位测量的。这是有益的,因为在那些示例中,存储器的分配是根据页来量化的。因此,测量的粒度与存储器分配的粒度相匹配。然而,本领域技术人员将会理解,可以使用任何其他合适的存储器大小单位(诸如位、字节、千字节或兆字节)来代替对页进行计数。
在上面的示例中,参考了“最低”活动PIM——这是在原始几何序列中具有最早位置的活动PIM。在这方面,应该理解,术语“最低”不是限制性的。将最早活动PIM标记为“最低”的PIM取决于以连续增加的PIM编号进行编号。在替代具体实现中,可以指派PIM编号,使得该PIM编号遵循递减序列。在这种替代具体实现中,最早活动PIM将是“最高”活动PIM。前面的(完整的)PIM将具有更高的PIM编号;随后的PIM将具有较低的PIM编号。
如上所述,核101或三维图形渲染系统100可以被实现为图形处理系统的一部分。图6示出其中可以实现这种图形处理系统的计算机系统。计算机系统包括CPU 902、GPU904、存储器906和其他设备914,诸如显示器916、扬声器918和相机919。处理块910(对应于核101和111以及总线/互连线130)在GPU 904上实现。在其他示例中,处理块910可以在CPU902上实现。计算机系统的部件可经由通信总线920彼此进行通信。存储装置912(对应于存储器120)被实施为存储器906的一部分。
虽然图6示出图形处理系统的一个具体实现,但将理解,可针对人工智能加速器系统绘制类似框图——例如通过用神经网络加速器(NNA)替换CPU 902或GPU 904,或通过添加NNA作为额外单元。在此类情况下,处理块910可在NNA中实施。
图1的核101、111和图形渲染系统100被示为包括多个功能块。这仅是示意性的,并且不旨在限定这类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应当理解,由核或图形渲染系统形成的本文所描述的中间值不需要由核或图形渲染系统在任何时间点物理地生成,并且可以仅表示方便地描述由核或图形渲染系统在其输入与输出之间执行的处理的逻辑值。
本文中所描述的核和图形渲染系统可以在集成电路上的硬件中实现。本文中所描述的核和图形渲染系统可以被配置为执行本文中所描述的任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或它们的任何组合中实现。本文中可以使用术语“模块”、“功能性”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或它们的任何组合。在软件具体实现的情况下,模块、功能性、部件、元件、单元、块或逻辑表示程序代码,当在处理器上被执行时,所述程序代码执行指定任务。本文中所描述的算法和方法可由执行代码的一个或多个处理器执行,所述代码促使处理器执行算法/方法。计算机可读存储介质的示例包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器,以及可使用磁性、光学和其他技术来存储指令或其他数据并且可由机器访问的其他存储器设备。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、或OpenCL等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由该代码指定的任务。
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或它们的具有处理能力以使得其可执行指令的集合或部分。处理器可以是任何种类的通用或专用处理器,诸如CPU、GPU、NNA、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可包括一个或多个处理器。
该计算机或计算机系统还旨在涵盖限定如本文中所描述的硬件的配置的软件,诸如HDL(硬件描述语言)软件,如用于设计集成电路或用于配置可编程芯片以实现所需功能。也就是说,可以提供一种其上编码有集成电路定义数据集形式的计算机可读程序代码的计算机可读存储介质,当在集成电路制造系统中处理(即,运行)时,该计算机可读程序代码将该系统配置为制造被配置为执行本文中所描述的任何方法的核、图形渲染系统或图形处理系统,或者制造包括本文所述任何装置的核、图形渲染系统或图形处理系统。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文中所描述的核、图形渲染系统或图形处理系统的方法。此外,可以提供一种集成电路定义数据集,当在集成电路制造系统中处理时,该集成电路定义数据集使得执行制造核、图形渲染系统或图形处理系统的方法。
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可在计算机系统处进行处理,所述计算机系统被配置为用于在软件环境的上下文中产生集成电路的制造定义,所述软件环境包括电路元件的定义以及用于组合这些元件以便产生由所述表示法如此定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将关于图7描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置为制造核、图形渲染系统或图形处理系统的示例。
图7示出了集成电路(IC)制造系统1002的示例,该集成电路制造系统被配置为制造如本文任何示例中描述的核、图形渲染系统或图形处理系统。具体地说,IC制造系统1002包括布局处理系统1004和集成电路生成系统1006。IC制造系统1002被配置为接收IC定义数据集(例如,定义如本文任何示例中描述的核、图形渲染系统或图形处理系统)、处理IC定义数据集以及根据IC定义数据集来生成IC(例如,该IC包含如本文任何示例中所述的核、图形渲染系统或图形处理系统)。IC定义数据集的处理将IC制造系统1002配置为制造体现如本文任何示例中所述的核、图形渲染系统或图形处理系统的集成电路。
布局处理系统1004被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可涉及合成RTL代码以确定待产生电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1004已经确定电路布局时,其可将电路布局定义输出到IC产生系统1006。电路布局定义可以是例如电路布局描述。
如本领域中所已知,IC产生系统1006根据电路布局定义来产生IC。例如,IC产生系统1006可实施用以产生IC的半导体设备制造工艺,所述半导体设备制造工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,掩模可在光刻工艺中用于根据电路定义来产生IC。可替代地,提供给IC产生系统1006的电路布局定义可呈计算机可读代码的形式,IC产生系统1006可使用所述计算机可读代码来形成用于产生IC的合适的掩模。
由IC制造系统1002执行的不同过程可全部在一个位置例如由一方来实施。替代地,IC制造系统1002可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些可以在不同位置以及/或者由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成待生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可以将该系统配置为在不处理IC定义数据集以确定电路布局的情况下制造核、图形渲染系统或图形处理系统。例如,集成电路定义数据集可以定义可重新配置的处理器诸如FPGA的配置,并且对所述数据集的处理可以将IC制造系统配置为(例如,通过将配置数据加载到FPGA)生成具有所述定义的配置的可重新配置的处理器。
在一些实施方案中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可以使集成电路制造系统产生如本文中所描述的设备。例如,通过集成电路制造定义数据集以上文参考图7描述的方式对集成电路制造系统进行配置,可以制造出如本文描述的设备。
在一些示例中,集成电路定义数据集可包括在于数据集处定义的硬件上运行的软件,或与在数据集处定义的硬件组合运行的软件。在图7中所示的示例中,IC产生系统还可由集成电路定义数据集配置为在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上,或另外向集成电路提供用于与集成电路一起使用的程序代码。
与已知的实现方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实现方式可以引起性能改进。性能改进可包括计算性能提高、等待时间减少、吞吐量增大和/或功耗减小中的一者或多者。在制造这类设备、装置、模块和系统(例如在集成电路中)期间,可在性能提高与物理具体实现之间进行权衡,从而改进制造方法。例如,可在性能改进与布局面积之间进行权衡,从而匹配已知具体实现的性能,但使用更少的硅。例如,这可以通过以串行方式重用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,本申请中所阐述的带来设备、装置、模块和系统的物理具体实现的改进(诸如硅面积减小)的概念可与性能提高进行权衡。这可以例如通过在预定义面积预算内制造模块的多个实例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

Claims (20)

1.一种在包括多个核(101,111)的三维图形渲染系统(100)中为几何处理分配存储器的方法,所述方法包括:
获得(410)描述在所述多个核(101,111)当中分发的几何处理工作包序列的信息,其中对于每个工作包,所述信息包括所述序列中的所述工作包的索引,以及所述工作包当前正在被处理还是已经完成的指示;
识别(420)最早活动工作包,所述最早活动工作包是所述序列中当前正由所述核中的任一个核处理的最早工作包;
从所述核中的一个核接收(430)为几何处理分配存储器的请求,以及
至少部分地基于所述请求是否是从处理所述最早活动工作包的所述核接收到的来确定(440,460)是否分配所请求的存储器。
2.如权利要求1所述的方法,所述方法包括:
如果所述请求是从处理所述最早活动工作包的所述核接收到的,则分配(450)所述存储器;以及
如果所述请求是从任何其他核接收到的,则限制(460,470)所述存储器的所述分配。
3.如权利要求2所述的方法,其中所述限制(460,470)是至少部分地基于已经分配给所述核的存储器量。
4.如权利要求3所述的方法,其中所述限制(460,470)是至少部分地基于已经分配给所述核的不可恢复存储器量,其中如果所述存储器存储所述序列中在所述最早活动工作包之后的工作包的几何处理的输出,则所述存储器是不可恢复的。
5.如权利要求2至权利要求4中任一项所述的方法,其中所述限制(460,470)是至少部分地基于可用于所述几何处理的剩余空闲存储器池的大小。
6.如权利要求5所述的方法,其中所述限制(460,470)是基于已经分配给所述核的所述不可恢复存储器量与所述剩余空闲存储器池的所述大小之间的比较。
7.如权利要求2至权利要求6中任一项所述的方法,其中所述限制(460,470)是基于已经分配给所述核的所述不可恢复存储器量与固定阈值之间的比较。
8.如权利要求2至权利要求6中任一项所述的方法,其中所述限制(460,470)是基于已经分配给所述核的所述不可恢复存储器量与动态阈值之间的比较。
9.如权利要求8所述的方法,其中所述动态阈值是至少部分地基于所述剩余空闲存储器池的所述大小。
10.如权利要求8或权利要求9所述的方法,其中所述动态阈值是至少部分地基于用于几何处理的最小可操作存储器量。
11.如权利要求8至权利要求10中任一项所述的方法,其中所述动态阈值是至少部分地基于所述剩余空闲存储器池的所述大小除以所述系统中核(101,111)的数量。
12.如前述权利要求中任一项所述的方法,其中描述在所述多个核中分发的所述几何处理工作包序列的所述信息在每个核的寄存器阵列(310,320,330)中维护。
13.如权利要求12所述的方法,其中每个核的所述寄存器阵列(310,320,330)包括指派给所述核的每个工作包的条目,每个条目包括“有效”标志、“完成”标志、所述工作包的所述索引以及当前分配给所述工作包的所述存储器量的指示。
14.一种核(101),所述核被配置为在包括多个核(101,111)的三维图形渲染系统(100)中为几何处理分配存储器,所述核包括参数管理主控单元(102),所述参数管理主控单元被配置为:
获得(410)描述在所述多个核当中分发的几何处理工作包序列的信息,其中对于每个工作包,所述信息包括所述序列中的所述工作包的索引,以及所述工作包当前正在被处理还是已经完成的指示;
识别(420)最早活动工作包,所述最早活动工作包是所述序列中当前正由所述核中的任一个核处理的最早工作包;
从所述核(101,111)中的一个核接收(430)为几何处理分配存储器的请求,并且
至少部分地基于所述请求是否是从处理所述最早活动工作包的所述核接收到的来确定(440,460)是否分配所请求的存储器。
15.如权利要求14所述的核(101),其中所述参数管理主控单元(102)被配置为:
如果所述请求是从处理所述最早活动工作包的所述核接收到的,则分配(450)所请求的存储器;并且
如果所述请求是从任何其他核接收到的,则限制(460,470)所述所请求的存储器的所述分配。
16.一种图形渲染系统(100),所述图形渲染系统包括:
根据权利要求14至权利要求15中任一项所述的第一核(101);
至少一个第二核(111);以及
存储器(120);
其中所述第一核的所述参数管理主控单元(102)被配置为将所述存储器(120)的部分分配给所述至少一个第二核(111)以进行几何处理工作。
17.一种图形处理系统,所述图形处理系统包括如权利要求14至权利要求16中任一项所述的核或图形渲染系统,和/或被配置为执行如权利要求1至权利要求13中任一项所述的方法。
18.一种方法,所述方法使用集成电路制造系统来制造如权利要求17所述的图形处理系统。
19.一种计算机可读代码,所述计算机可读代码被配置为使得在运行所述代码时执行如权利要求1至权利要求13中任一项所述的方法。
20.一种集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中处理时将所述集成电路制造系统配置为制造如权利要求17所述的图形处理系统。
CN202310323503.1A 2022-03-30 2023-03-29 三维图形渲染的存储器分配 Pending CN116894764A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB2204511.6A GB2611377B (en) 2022-03-30 2022-03-30 Memory allocation for 3-D graphics rendering
GB2204511.6 2022-03-30

Publications (1)

Publication Number Publication Date
CN116894764A true CN116894764A (zh) 2023-10-17

Family

ID=81449560

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310323503.1A Pending CN116894764A (zh) 2022-03-30 2023-03-29 三维图形渲染的存储器分配

Country Status (4)

Country Link
US (1) US11934878B2 (zh)
EP (1) EP4254309A1 (zh)
CN (1) CN116894764A (zh)
GB (1) GB2611377B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074224B1 (en) * 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor
CN105261066A (zh) * 2015-10-20 2016-01-20 华中师范大学 一种三维地理信息系统实时绘制多线程分配与控制方法
US20170236244A1 (en) * 2016-02-12 2017-08-17 Arm Limited Graphics processing systems
CN109978751A (zh) * 2017-12-28 2019-07-05 辉达公司 多gpu帧渲染
CN112862661A (zh) * 2019-11-27 2021-05-28 Arm有限公司 处理图形图元的方法、图形处理系统和存储介质
US20220083384A1 (en) * 2019-09-30 2022-03-17 Sony Interactive Entertainment LLC System and method for multi-tenant implementation of graphics processing unit

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4851049B2 (ja) 2000-06-08 2012-01-11 イマジネイション テクノロジーズ リミテッド 三次元イメージレンダリングのためのタイリング及び圧縮
GB0723536D0 (en) 2007-11-30 2008-01-09 Imagination Tech Ltd Multi-core geometry processing in a tile based rendering system
US8760455B2 (en) 2009-10-05 2014-06-24 Nvidia Corporation Restart index that sets a topology
GB201004675D0 (en) 2010-03-19 2010-05-05 Imagination Tech Ltd Memory management system
US10388056B2 (en) 2017-01-26 2019-08-20 Advanced Micro Devices, Inc. Split frame rendering
GB2560709B (en) 2017-03-14 2021-02-24 Imagination Tech Ltd Graphics processing method and system for processing sub-primitives
GB2572404B (en) 2018-03-29 2020-04-15 Imagination Tech Ltd Method and system for controlling processing
US10733690B2 (en) 2018-05-17 2020-08-04 Intel Corporation GPU mixed primitive topology type processing
US10838725B2 (en) 2018-09-26 2020-11-17 Apple Inc. Low latency fetch circuitry for compute kernels
GB2587224B (en) 2019-09-19 2021-09-15 Imagination Tech Ltd Methods and tiling engines for hierarchially tiling primitives in a graphics processing system
US11507527B2 (en) 2019-09-27 2022-11-22 Advanced Micro Devices, Inc. Active bridge chiplet with integrated cache
US11120522B2 (en) 2020-02-03 2021-09-14 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by subdividing geometry
GB2591802B (en) 2020-02-07 2022-03-23 Imagination Tech Ltd Graphics processing method and system for rendering items of geometry based on their size

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074224B1 (en) * 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor
CN105261066A (zh) * 2015-10-20 2016-01-20 华中师范大学 一种三维地理信息系统实时绘制多线程分配与控制方法
US20170236244A1 (en) * 2016-02-12 2017-08-17 Arm Limited Graphics processing systems
CN109978751A (zh) * 2017-12-28 2019-07-05 辉达公司 多gpu帧渲染
US20220083384A1 (en) * 2019-09-30 2022-03-17 Sony Interactive Entertainment LLC System and method for multi-tenant implementation of graphics processing unit
CN112862661A (zh) * 2019-11-27 2021-05-28 Arm有限公司 处理图形图元的方法、图形处理系统和存储介质
GB2594764A (en) * 2019-11-27 2021-11-10 Advanced Risc Mach Ltd Graphics processing systems

Also Published As

Publication number Publication date
GB202204511D0 (en) 2022-05-11
US20230333895A1 (en) 2023-10-19
GB2611377A (en) 2023-04-05
EP4254309A1 (en) 2023-10-04
US11934878B2 (en) 2024-03-19
GB2611377B (en) 2023-11-01

Similar Documents

Publication Publication Date Title
US9466091B2 (en) Atomic memory update unit and methods
US9244629B2 (en) Method and system for asymmetrical processing with managed data affinity
US11656908B2 (en) Allocation of memory resources to SIMD workgroups
US11887240B2 (en) Multi-rendering in graphics processing units using render progression checks
US20230334748A1 (en) Control stream stitching for multicore 3-d graphics rendering
US11880925B2 (en) Atomic memory update unit and methods
US20240045603A1 (en) Methods and allocators for allocating portions of a storage unit using virtual partitioning
EP4050481A1 (en) Allocation of resources to tasks
EP4254309A1 (en) Memory allocation for 3-d graphics rendering
CN116894755A (zh) 图形处理中的多核状态缓存
GB2572248A (en) Resource allocation
GB2595025A (en) Rendering tasks using render progression checks
CN116894765A (zh) 多核三维图形渲染的存储器管理
CN116894898A (zh) 用于多核3-d图形渲染的存储器管理
CN116894763A (zh) 用于多核3-d图形渲染的存储器管理
EP4050478A1 (en) Allocation of resources to tasks
US20240185501A1 (en) Atomic memory update unit and methods
GB2599041A (en) Methods for managing virtual partitionings of a storage unit
CN116894754A (zh) 多核绘制拆分
GB2578998A (en) Resource allocation
CN117882057A (zh) 基于亲和力的图形调度
CN116894756A (zh) 多核主/从通信
CN117882107A (zh) 用于图形处理器的逻辑插槽到硬件插槽映射
GB2520603A (en) Atomic memory update unit and methods
JPH04257067A (ja) 図形演算処理方式

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