KR1020230048339A 审中 具有可选两级装箱功能的图形处理单元
技术领域 [0001] 图形 处理装置技术领域本发明涉及图形处理装置。 背景技术 [0002] 计算机处理系统通常采用图形处理单元(GPU)来执行诸如纹理映射、渲染、顶点变换等图形操作。 GPU 的性能要求或规格可能因所涉及的电子设备类型而异。 例如,用于移动设备或其他电池供电设备的 GPU 的功能和要求可能与其他非电池供电平台有很大差异。 性能、电池寿命和热量是电池供电设备平台的重要指标,这些平台通常具有理想的持续性能以及低空闲功耗和温度。 然而,在电池供电的设备中,GPU 性能和电池寿命/热量之间通常需要权衡。 解决问题的手段 [0003] 使用本文描述的技术,GPU基于GPU的性能特征选择原始合并模式(本文有时称为“合并模式”)。 分箱模式决定了如何将图像帧划分为区域以及如何将图元分配给对应于每个区域的分箱。 通过选择基于性能特征的binning模式,GPU根据电子设备的运行情况调整binning过程,从而提升用户体验。 附图简要说明 [0004] 附图说明本领域技术人员通过参照附图可以更好地理解本发明,其许多特征和优点将变得显而易见。 在不同附图中使用相同的附图标记表示相似或相同的项目。 图1是根据一些实施例的用于基于GPU性能数据选择性地设置基元合并模式的示例性装置的框图。 图2是图示根据一些实施例的用于基于GPU性能数据选择性地设置合并模式的方法的流程图。 图3是图示根据一些实施例的用于在基于确定的合并模式将命令缓冲区提交给GPU之前选择性地修补待决命令缓冲区的方法的流程图。 图4示出了基于两步合并模式是否启用,在命令缓冲区被提交给GPU之后和GPU执行命令缓冲区之前的两步合并模式或非两步合并模式。对一些实施例来说,流程图说明了一种用于在合并模式下选择性地执行命令缓冲区工作负载的方法。 实施发明的具体细节 [0005] 使用本文描述的技术,GPU基于GPU的性能特征选择原始合并模式(本文有时称为“合并模式”)。 分箱模式决定了如何将图像帧划分为区域以及如何将图元分配给对应于每个区域的分箱。 通过选择基于性能特征的binning模式,GPU根据电子设备的运行情况调整binning过程,从而提升用户体验。 [0006] 为了说明,将有关三维 (3D) 对象的信息转换为可以显示的二维 (2D) 图像帧称为渲染,并且在某些情况下执行渲染以利用大量处理能力和内存资源。需要设备那个 图像帧内的像素是通过渲染图形对象来创建的,以确定每个像素的颜色值。 示例性图形对象包括点、线、多边形和三维 (3D) 高阶曲面。 点、线和多边形代表渲染图元,它们是大多数 3D 渲染命令的基础。 更复杂的结构,例如 3D 对象,是由这些图元或网格的组合形成的。 为了使用传统渲染技术显示特定场景,GPU 在每个图元的基础上确定包含在每个图元边缘内的像素,并获得与每个像素对应的图元的属性,从而渲染场景和各个渲染图元与 相关联的潜在贡献像素。 [0007] 在其他情况下,GPU 使用分箱过程渲染图元,其中 GPU 将图像帧划分为区域,识别与给定区域相交的图元,并将识别的图元放入对应于给定区域的箱中。 因此,帧的每个区域都与一个对应的仓相关联,该仓与关联的仓相交,连同包含图元或图元的一部分的仓。 GPU 通过渲染与 bin 对应的帧区域相交的图元像素,以 per-bin 为基础渲染帧。 这允许 GPU 更有效地渲染帧,至少在某些情况下,通过需要更少的内存访问、增加缓存使用等。 [0008] 分箱过程的一个示例是图元批量分箱 (PBB),其中 GPU 接收一系列图元并机会性地将图元划分为时间相关的图元批次。 连续图元被捕获,直到满足预定条件,例如批缓冲条件、状态存储缓冲条件,或确定对先前呈现的图元的依赖性。 执行 PBB 时,显示渲染图元的屏幕空间被分成几个块。 每个屏幕空间块都与相应的容器相关联。 批处理中接收到的图元序列中的每个图元都与一个或多个区间相交。 对于批次中的每个接收到的图元,计算初始仓截距,初始仓截距是图元相交的屏幕的左上角仓。 在批次关闭后,识别第一个用于处理的容器。 处理拦截已识别 bin 的基元。 对于识别为截取一个 bin 的每个图元,识别下一个 bin 片段,并且发送被识别的 bin 包围的图元中包含的像素以进行详细光栅化。 下一个 bin 截距是已处理图元相交的光栅顺序中的下一个左上角 bin。 [0009] 在一些实施例中,GPU实施不同的合并技术,在本文中称为合并模式或原始合并模式,并且不同的合并模式包括每个容器的不同区域大小、不同数量的合并步骤等对应于相同的 例如,在一些实施例中,GPU包括单步和两步合并模式。 在单步合并模式(也称为原始批量合并 (PBB) 模式)中,GPU 将图像帧划分为指定数量的区域,并如上所述渲染每个区域。 [0010] 在两步合并模式中,执行两种类型的合并:粗步合并和细步合并。 在一些实施例中,粗步装箱使用大箱(例如,总共32个箱以覆盖整个显示区域),这减少了装箱开销。 每个粗体箱的可见性信息在渲染第一个粗体箱(即,粗体箱 0)期间生成,并用于渲染其他粗体箱。 在粗级别分箱之后,依次对每个粗级别分箱执行细级别分箱。 在一些实施例中,精细分箱将每个粗分箱划分为更小的“精细”分箱,例如通过在基于 PBB 的细分箱期间将每个粗分箱进一步分箱为精细分箱的 64 x 64 阵列。它包括执行原始批处理装箱 (PBB) 这样做。 然后使用为相应的粗分箱生成的诸如原始可见性信息之类的渲染信息来渲染每个细分箱。 在一些实施例中,两步合并在图形处理流水线的顶部,这与出现在图形处理流水线中间(例如,在顶点处理之后和像素着色之前)的单步仅 PBB 合并模式相反).(例如在顶点处理和光栅化之前)。 [0011]在某些情况下,不同的装箱模式适用于不同的设备条件。 例如,在某些情况下,单级或 PBB 合并模式(其中仅使用 PBB,而没有上述粗略和精细阶段合并的组合)提供比两级合并更好的性能,但会增加设备的功耗。和更高的工作温度。 相比之下,在某些情况下,两级合并支持以性能下降为代价降低功耗。 [0012] 为了根据设备条件调整装箱模式,在一些实施例中,GPU 采用可选的两步装箱架构,支持渲染模式的运行时选择。 例如,在一些实施例中,实现选择性两步合并架构的装置实现默认渲染模式和两步合并模式之一的运行时选择,例如仅执行PBB的PBB渲染模式。 合并模式的选择基于许多性能标准,例如热特性、功率特性(例如,电池寿命)等。 例如,在一些实施例中,诸如用户模式驱动程序(UMD)或内核模式驱动程序(KMD)的驱动程序接收诸如传感器数据和性能计数器数据的性能数据并且基于性能数据选择装箱模式。 [0013] 本文描述的技术是这样的,取决于这些未决指令缓冲区是否启用了两阶段合并模式,指令缓冲区的一个或多个工作负载当前处于两阶段合并模式或非两阶段合并模式,例如PBB 渲染模式。允许通过修补配置为根据合并模式运行的命令缓冲区进行修改。 这里的Command buffer patching是指由CPU或GPU执行的驱动程序或其他模块对命令缓冲区中的数据进行修改,可以在CPU或GPU上进行。 [0014] 图1图示了根据一些实施例的包括并行处理器并且特别是GPU 102的装置100的示例。 设备100实施两步合并架构,其允许运行时选择用于渲染图像数据的渲染模式。 除了GPU 102之外,设备100还包括CPU 104、存储器控制器105、系统存储器106、传感器108和电池111。 在一些实施例中,GPU 102、CPU 104、存储器控制器105和传感器108经由总线126通信地耦合在一起。 存储器控制器105管理由GPU 102、CPU 104和传感器108服务的存储器访问请求以访问系统存储器106。 [0015] 在图形处理操作期间,系统存储器106中的应用程序将图像数据渲染到系统存储器106内的定义位置以用于随后在设备100的电子显示器(未示出)上的图像帧中显示。生成指令以指示GPU 102这样做。 应用程序输出的命令由运行在CPU 104上的UMD 110写入命令缓冲器114。 给定的命令缓冲器114包含一个或多个工作负载命令,每个工作负载被配置为以两阶段装箱模式、非两阶段装箱模式运行,或被配置为可在任一模式下执行。 在UMD 110向命令缓冲区114写入命令完成后,KMD 112将命令缓冲区114提交给GPU 102,命令缓冲区114被发送到GPU 102的环。它安装在缓冲器 120。 GPU 102 的一个或多个命令处理器 122 从环形缓冲区 120 中检索对应于特定命令缓冲区 114 的命令,例如从系统存储器 106 中检索图像数据,并检索检索到的图像。它通过指示着色器、计算单元来执行那些指令,和其他图形处理电路(未显示)来呈现数据。 在图1的示例中,GPU 102以两步分箱模式和PBB模式(本文有时称为“单步PBB模式”或“单步PBB-only”(称为作为“合并模式”)在单步合并模式中。 在一些实施例中,GPU 102 分别基于存储在系统存储器 106 中的一个或多个状态位或基于存储在 GPU 存储器 124 中的一个或多个补丁使能位(如下所述)进行配置。命令缓冲区 114 的工作负载 在一些实施例中,GPU 102可以使GPU 102检查状态位或补丁使能位以确定对应于指令缓冲器114的工作量的执行使用哪个装箱模式。当执行命令缓冲器114的对应逻辑时,装箱模式根据状态位或补丁使能位选择。 在一些实施例中,CPU 104 基于设备 100 的识别性能特征(这里有时称为“性能数据”)选择性地设置状态位和补丁启用位的值。 在一些实施例中,单个命令缓冲区 114 使得命令缓冲区 114 内的一些工作负载以单级合并模式执行,而同一命令缓冲区 114 中的其他工作负载以两级合并模式执行。它包括 例如,一些工作负载仅使用单步装箱是可行的,因此命令缓冲器114确定即使满足两步装箱条件并且两步装箱模式被激活,这些工作负载也是单步装箱。配置为在装箱模式下运行。 在一些实施例中,工作负载由 UMD 110 写入命令缓冲区 114 以在单步合并模式和两步合并模式下执行,并且执行这些工作负载的模式稍后由 GPU 拾取当它运行时。 [0016] 通常,操作系统的驱动程序在用户模式或内核模式下运行。 UMD,例如UMD 110,在非特权处理器模式下运行,在该模式下执行其他应用程序代码,包括受保护的子系统代码。 UMD 无法访问系统数据或硬件,除非调用应用程序编程接口 (API),而应用程序编程接口 (API) 又会调用系统服务。 KMD,例如 KMD 112,作为操作系统的一部分运行并支持一个或多个受保护的子系统。 UMD 和 KMD 具有不同的结构、不同的入口点和不同的系统接口。 KMD 可以执行某些受保护的任务,并且可以访问 UMD 无法访问的系统结构。 在一个示例中,UMD 110 将应用程序生成的图元写入一个或多个命令缓冲区,并且 KMD 112 将一个或多个命令缓冲区传输到图元的后续渲染或一个或多个命令缓冲区 114。提交给 GPU 102对于其他存储指令。 命令处理器122使图像数据根据特定渲染模式渲染,例如两步装箱模式或非两步装箱模式例如PBB渲染模式。 在一些实施例中,命令处理器122通过确定两步合并模式是激活还是去激活来选择使用哪种渲染模式来渲染与特定命令缓冲器114相关联的图像数据。 在一些实施例中,命令处理器122通过检查存储在GPU存储器124或系统存储器106中的一个或多个状态位来确定两步合并模式是激活还是去激活。 [0017] 在一些实施例中,CPU 104可以发送从存储在系统存储器106中的性能计数器116接收的性能计数器数据、由传感器108存储在系统存储器106中的传感器数据118,或者基于包括两者的性能数据激活或停用两步合并模式. 在一些实施例中,CPU 104的UMD 110或KMD 112接收性能数据并处理性能数据以确定是激活还是停用两步合并模式。 [0018] 在一些实施例中,由传感器108生成的传感器数据118包括温度、电压、电流、瞬时功率、峰值功率或其他适用的传感器数据中的一项或多项。 在一些实施例中,传感器108包括一个或多个温度传感器、电流传感器、电压传感器或功率传感器。 [0019]在一些实施例中,性能计数器116是GPU 102的电池111、CPU 104、环形缓冲区120、一级(L1)高速缓存、二级(L2)高速缓存或着色器。跟踪设备的各种模块中的活动,例如作为 在一些实施例中,性能计数器数据包括高速缓存访​​问、高速缓存命中率、高速缓存未命中率、内存访问、GPU 102 的利用率、CPU 104 的利用率、供给 GPU 102 的电流、供给 CPU 104 的一个或多个相应量的提供的电流、GPU 102 的电压、CPU 104 的电压、GPU 102 的频率和/或 CPU 104 的频率。 [0020] 在一些实施例中,性能数据可以包括设备100的平均温度、设备100的平均温度的变化率(RoC)、设备100在给定时间段内的峰值瞬时功耗、 (100) 的平均功耗、设备 100 的平均功耗 RoC 或电池 111 的充电状态 (SoC)(即,电池 111 的剩余电量占充电容量的百分比)电池 111) 所示),从传感器数据 118 或性能计数器 116 生成的性能计数器数据导出的一个或多个参数。 如本文所用,根据各种实施例,设备100的“平均温度”是指设备上的各种位置(例如,CPU 104、GPU 102、电池111或其组合)、平均值、中值或模式在定义的时间段内在设备的不同位置测量的瞬时温度,在定义的时间段内在设备的不同位置测量的瞬时温度的平均值、中值或模式,由性能计数器生成 116 指的是平均值,基于性能计数器数据从估计功耗导出的设备100的估计温度的中值或众数。 如本文所用,根据各种实施例,设备100的“平均功耗”是指电池111在定义的时间段或定义的时间段内测量的瞬时功耗的平均值、中值或众数。基于性能计数器116随时间生成的性能计数器数据估计的瞬时功耗的平均值、中值或众数。 [0021] UMD 110 或 KMD 112 用于确定用于激活两级装箱模式的一个或多个预定义条件(有时在本文中称为“两级装箱条件”)是否已经发生。监控性能数据。 在一些实施例中,激活或停用两步合并模式可以使 UMD 110 或 KMD 112 在系统存储器 106 或 GPU 102 中指示两步合并模式是否激活,一个或多个。这包括设置值状态位。 在一些实施例中,两步合并条件包括设备的平均温度高于预定义的温度阈值、设备的平均温度的 RoC 高于预定义的 RoC 阈值,以及温度高于预定义的温度阈值。在正在播放的设备的指定位置,当地温度下的 RoC 高于预定义的 RoC 阈值,设备的峰值瞬时功耗高于预定义阈值,并且设备高于预定义阈值的平均功耗为 , RoC设备的平均功耗高于预定义阈值、电池 SoC 低于预定义 SoC 阈值或其组合。 在一些实施例中,在满足两步合并条件并且由UMD 110或KMD 112激活两步合并模式之后,基于性能数据的变化确定两步合并条件。应当理解,如果稍后确定这不再满足,设备将停用两步装箱模式。 然而,在一些实施例中,其他可检测条件(有时在本文中称为“否定条件”)否定两步合并条件的检测。 例如,如果UMD 110或KMD 112确定设备100满足两步合并条件,但确定满足插入的无效条件(例如,如果确定电池处于插入状态) “充电”状态),两步装箱模式被停用。 在一些实施例中,替代的或附加的无效,例如确定设备100的平均功耗已经下降到阈值以下或确定GPU 102或CPU 104不再热节流。设置条件(例如,可以基于GPU 102 或 CPU 104 的时钟频率增加到阈值之上)。 [0022] 在一些实施例中,当写入命令缓冲器114时,UMD 110基于存储在系统存储器106中的相应状态位来确定两步合并模式是激活还是去激活。给定的工作负载将不同地写入命令缓冲器114。 例如,在激活两级合并模式时,UMD 110 写入所有后续命令缓冲区 114 可根据两级合并模式执行,至少直到再次停用两级合并模式。 在一些实施例中,在禁用两级装箱模式后,UMD 110将所有后续指令缓冲器写入可根据单级装箱模式执行,例如非两级或单级PBB模式。 在一些实施例中,UMD 110确定当每个工作负载由UMD 110写入时是否激活两步合并模式,并且在一些情况下,给定的工作负载给定命令缓冲区114内的多个工作负载中的每一个的合并模式是单独的根据是否可以在合并模式下执行来确定。 [0023] 例如,在一些实施例中,UMD 110被配置为在默认情况下以单步装箱模式将工作负载写入命令缓冲器114,并且当满足两步装箱条件时将工作负载写入GPU 102,并修改待定命令缓冲器的一个或多个工作负载114 在提交给 . 在其他实施例中,UMD 110被配置为默认以两步合并模式将工作负载写入指令缓冲器114,并在满足两步合并条件时提交给GPU 102,并修改待处理命令的一个或多个工作负载缓冲区 114 在单步装箱模式之前执行。 [0024] 在一些情况下,两步合并模式的状态(即,启用/禁用)是在UMD 110写入或开始写入一个或多个命令缓冲器114之后,在这种情况下被称为“待定命令缓冲器”。,但是挂起的命令缓冲区在被 GPU 102 执行之前发生了变化。 在一些实施例中,这些未决命令缓冲区通过命令缓冲区提取被修改以根据两级合并模式或非两级合并模式执行,这取决于两级合并模式是否被启用。 这里的命令缓冲区获取是指由CPU 104或GPU 102执行的驱动程序或其他模块对命令缓冲区中的数据的修改,并且在CPU 104或GPU 102上执行。 [0025] 在一个示例中,当两步装箱模式激活时写入的未决命令缓冲器 114 指示 CPU 104 或 GPU 自开始写入未决命令缓冲器 114 以来一直处于非活动状态。响应于 102 的确定,它是由CPU 104或GPU 102通过指令缓冲区修补修改以根据非两级合并模式执行。 在另一示例中,当禁用两级合并模式时写入的待定命令缓冲器114指示CPU 104或GPU自开始写入待定命令缓冲器114以来一直处于活动状态。响应于102的确定,它是由CPU 104或GPU 102通过命令缓冲区获取修改以根据两步合并模式执行。 [0026] 对于在CPU 104中执行命令缓冲区提取的一些实施例,UMD 110在命令缓冲区写入过程接近尾声时执行命令缓冲区提取。 在一些实施例中,当在 CPU 104 中执行指令缓冲区提取时,UMD 被配置为在未决指令缓冲区 114 被配置为执行一次或多次(在写入指令缓冲区 114 时已知)时并发执行。预定义条件),在命令缓冲器114提交给GPU 102之前立即执行命令缓冲器提取。 [0027]在包括 CPU 端指令缓冲区提取的一些实施例中,UMD 110 存储每个工作负载的元数据,其中为工作负载分配给定的一组渲染目标、深度模板目标或两者。它被定义为一系列操作或图形图片的 在一些实施例中,为每个工作负载存储的元数据包括一个或多个令牌和一个或多个偏移量。 每个偏移定义了命令缓冲器114内的一个位置,该位置在激活两步合并模式时将被修改。 每个令牌定义了当激活两步合并模式时命令缓冲器114中的代码应该如何在相应偏移处定义的位置处被修改。 在一个示例中,元数据的令牌使UMD 110修改命令缓冲器114内描述图元可见性的代码。 在一些实施例中,仅当激活两级装箱模式时才需要命令缓冲区提取,并且UMD 110可以最初(即,默认情况下)在这样的实施例中的每个工作负载是非两级装箱的。写入命令缓冲区114以模式运行,在过程结束时做出决定之前或在提交命令缓冲区114之前立即关于是否修补命令缓冲区114以在两步装箱模式下运行。记录之前 如上所述,在一些实施例中,UMD 110 在命令缓冲器 114 中分配每个工作负载以两步合并模式运行,对于至少那些能够以两步合并模式运行的工作负载。 -two-step binning mode,根据是否激活two-step binning模式,在某些情况下根据是否满足预定义的失效条件来决定是否修改一个或多个工作负载运行。 [0028] 在 GPU 102 中,基于存储在 GPU 存储器 124 中的一个值或一组值执行指令缓冲区提取,这里称为“补丁激活值”。 在一些实施例中,每个补丁激活值是对应于每个未​​决命令缓冲器114的单个布尔值。 在一些实施例中,KMD 112基于存储在系统存储器106中的相应状态位或基于对性能数据的分析来确定两步合并模式是否被激活,并且接下来,KMD 112允许根据是否激活补丁激活值来设置补丁激活值。在执行命令缓冲器114之前,GPU 102激活两步合并模式。 对于执行 GPU 侧命令缓冲区提取的一些实施例,UMD 110 必须写入命令缓冲区 114 以在两级合并模式和非两级合并模式下执行;命令处理器 122 必须确定基于对应的补丁激活值执行命令缓冲器114的模式。 [0029] 在一些实施例中,补丁激活值反而由 UMD 110 在写入期间确定,当 GPU 102 执行给定的命令缓冲区 114 时,UMD 110 检查每个工作负载的一个或多个补丁激活值。可以是基于命令缓冲区的补丁激活命令缓冲区 114 中存储的值。 在这些实施例中,命令缓冲器114在GPU 102执行命令缓冲器114期间基于基于命令缓冲器的补丁激活值被配置为两步装箱模式或非两步装箱模式。它本身将命令缓冲器114上的一个或多个工作负载修改为可执行的。 例如,在一些实施例中,如果需要GPU侧指令缓冲器提取,则GPU 102的指令处理器或GPU 102的着色器核心修改指令缓冲器114,这如上所述。它基于存储在中的补丁使能位来确定GPU存储器124或存储在系统存储器106中的状态位。 [0030] 图2是根据一些实施例的基于从性能计数器或传感器获得的性能数据以第一合并模式或第二合并模式选择性地执行命令缓冲器的示例性方法200,示出了处理流程。 在一些实施例中,第一合并模式是两步合并模式并且第二合并模式是单步合并模式,例如PBB模式。 方法200是关于图1的装置100及其组成部分和模块中的示例性实现来描述的。 [0031] 在块202,UMD 110或KMD 112接收性能数据。 在一些实施例中,性能数据包括由传感器108生成的传感器数据118。 在一些实施例中,性能数据包括由性能计数器116生成的性能计数器数据。 在一些实施例中,性能数据包括性能计数器数据和传感器数据118。 在一些实施例中,由传感器108生成的传感器数据118包括温度、电压、电流、瞬时功率、峰值功率或其他适用的传感器数据中的一项或多项。 在一些实施例中,性能数据存储在诸如电池111、CPU 104、环形缓冲区120、一级(L1)高速缓存、二级(L2)高速缓存或GPU 102的着色器的设备中。高速缓存访​​问、高速缓存命中率、高速缓存未命中率、存储器访问、GPU 102 的利用率、CPU 104 的利用率、供应给 GPU 102 的电流,分别对应于发生在 100 的一个或多个模块中的活动。供应给 CPU 104 的电流、GPU 102 处的电压, CPU 104 的电压、GPU 102 的频率和/或 CPU 104 的频率。包括 在一些实施例中,性能数据包括:设备的平均温度、设备的平均温度的变化率(RoC)、设备在给定时间段内的峰值瞬时功耗、平均功耗设备在给定时间段内的平均功率,设备传感器数据 118 或性能计数器 116 的平均功率,例如消耗的 RoC,或电池的充电状态 (SoC)(即电池的剩余电量,在某些情况下实施例,表示为电池充电容量的百分比。包含一个或多个参数,这些参数源自由 在一些实施例中,导出参数由UMD 110或KMD 112计算。 [0032] 在框204,UMD 110或KMD 112基于性能数据确定是否已经满足合并条件。 例如,在一些实施例中,装箱条件包括设备的平均温度高于预定义的温度阈值、设备的平均温度的 RoC 高于预定义的 RoC 阈值、预定义的温度阈值、设备的定义位置处的局部温度超过预定义的 RoC 阈值,该局部温度的 RoC 超过预定义的阈值,设备的最大瞬时功耗超过预定义的阈值,单级或两级装箱条件,包括一个或多个设备的平均功耗,RoC设备的平均功耗高于预定义的阈值,电池 SoC 低于预定义的 SoC 阈值,或其组合。 如果UMD 110或KMD 112确定已满足合并条件,则方法200进行到块206。 否则,如果UMD 110或KMD 112确定没有满足合并条件,则方法200进行到块214。 [0033] 在框206,UMD 110或KMD 112基于性能数据确定是否已经满足无效条件。 例如,无效条件可以包括一个或多个设备100进入电池111被充电的充电条件,设备100的平均温度下降到预定阈值以下,以及设备100下降到预定阈值以下。)的平均温度。 RoC 或其组合。 如果UMD 110或KMD 112确定未满足无效条件,则方法200进行到块208。 否则,如果UMD 110或KMD 112确定已经满足无效条件,则方法200进行到块214。 [0034]在框208,UMD 110或KMD 112为新创建的命令缓冲区激活第一合并模式。 在一些实施例中,第一合并模式是两步合并模式。 例如,为了激活第一合并模式,UMD 110或KMD 112设置系统存储器106内的状态位值以指示第一合并模式被激活。 在一些实施例中,当写入后续命令缓冲区时,UMD 110 检查状态位值并确定命令缓冲区应该被写入以在第一合并模式下运行。 [0035] 在框210,CPU 104或GPU 102获取待处理指令缓冲器中的工作负载以使得能够以第一合并模式执行这些工作负载。 在一些实施例中,UMD 110获取由CPU 104给定的挂起指令缓冲器的工作负载以在对挂起指令缓冲器的工作负载的写入过程结束时以第一合并模式运行。 在一些实施例中,UMD 110由CPU 104给予保持以在完成写入之后和在将命令缓冲区提交给GPU 102之前(例如,就在之前)以第一合并模式运行。获取正在进行的命令缓冲区的工作负载。 在一些实施例中,GPU 102 被配置为在基于存储在 GPU 存储器 124 中的一个或多个补丁激活值之前(例如,紧接在之前)以第一合并模式执行。给定挂起的命令缓冲区。 [0036] 在框212,命令缓冲器以第一合并模式在GPU 102上执行。 [0037] 在块214,UMD 110或KMD 112为新创建的命令缓冲区停用第一合并模式。 例如,为了禁用第一合并模式,UMD 110或KMD 112设置系统存储器106内的状态位值以指示第一合并模式被禁用。 在一些实施例中,当写入后续命令缓冲区时,UMD 110 检查状态位值,并且如果适用,确定命令缓冲区中的工作负载应该被写入以在第二合并模式下运行。 在一些实施例中,第二合并模式是PBB模式。 [0038] 在块216,UMD 110或KMD 112停用用于未决命令缓冲器的第一合并模式。 对于UMD 110默认写入命令缓冲器的工作负载以在第二合并模式下运行的实施例,块216包括修改块214中的状态位以禁用第一合并模式。它被省略是因为除此之外不需要进一步的动作。 在执行GPU端命令缓冲区提取的一些实施例中,KMD 112在GPU存储器124中设置一个或多个补丁禁用值以指示第一合并模式对于未决命令缓冲区是禁用的。禁用第一合并模式。 [0039] 在块218,命令缓冲器以第二合并模式在GPU 102上执行。 [0040] 图3示出了根据一些实施例的用于选择性地修补CPU中的指令缓冲器以在两步装箱模式或非两步装箱模式下可执行的方法300的示例过程流程。 关于图1的装置100及其组成部分和模块的示例性实现来描述方法300。 在一些实施例中,方法300结合图2的框210执行。 [0041] 在方框 302,UMD 110 在给定命令缓冲区 114 中写入每个工作负载的元数据(即,“每个工作负载元数据”),因为它将工作负载写入命令缓冲区 114。 在一些实施例中,为每个工作负载存储的元数据包括一个或多个令牌和一个或多个偏移量。 每个偏移量定义命令缓冲器114内的位置,当激活两步合并模式时必须修改该位置以便执行相应命令缓冲器114的工作量。 每个令牌定义当激活两步装箱模式时应如何修改命令缓冲器114中由相应偏移量定义的位置处的代码。 在一个示例中,元数据中的令牌导致UMD 110修改命令缓冲器114中的代码,该代码描述当激活两步合并模式时图元的可见性。 [0042] 在方框304,UMD 110确定在向命令缓冲器114的写入过程结束时或接近结束时是否激活两步合并模式。 在一些实施例中,UMD 110检查存储在系统存储器106中的一个或多个状态位的值以确定两步合并模式是否被激活。 如果确定两步合并模式是活动的,则该方法进行到块310。 如果确定两步合并模式被禁用,则方法300进行到块306。 [0043] 在块306,UMD 110写入命令缓冲器114并且之前(例如,就在之前)将命令缓冲器114提交给GPU 102。确定它是否被激活。 在一些实施例中,UMD 110检查存储在系统存储器106中的一个或多个状态位的值以确定两步合并模式是否被激活。 如果确定两步合并模式是活动的,则该方法进行到块312。 如果确定两步合并模式被禁用,则方法300前进到块308。 [0044] 在框308,KMD 112向GPU 104提交命令缓冲器114。 [0045] 在块310,UMD 110,在命令缓冲器114的写入期间(例如,接近写入过程的结束),基于每个工作负载元数据以两步合并模式输出一个或多个命令缓冲器。获取命令缓冲器114使 114 的工作负载可执行。 通常,UMD 110获取命令缓冲器114的方式取决于设备100的硬件实现。 [0046] 在一个示例中,两步分箱本质上使用缓冲区(即“可见性信息缓冲区”)的可见性信息作为确定哪些图元在哪个分箱中可见的基础。 在此示例中,UMD 110 将工作负载写入指令缓冲区 114 以使用单步分箱执行,并且 UMD 不包含为 GPU 绑定此可见性信息缓冲区的指令,而工作负载必须包含此指令,如果工作负载已由 UMD 110 编写,使用两步分箱执行。 因此,UMD 110 提供元数据,包括指示命令缓冲区 114 内的位置的偏移量和令牌,如果绑定可见性信息缓冲区的命令在两步合并模式中执行,则需要包括在工作负载中。 以此方式,当在将命令缓冲区114提交给GPU 102之前激活两步合并模式时,UMD 110或KMD 112负责在元数据中指示的位置处绑定可见性信息缓冲区。获取工作负载命令缓冲区 114 的名称以包含命令。 [0047] 在另一个示例中,GPU 102 通常需要接收二进制信息,指示存在多少二进制、那些二进制的大小和/或如果二进制在两步二进制合并模式下运行,则二进制应该被处理的顺序。是。 在此示例中,UMD 110 为写入命令缓冲区 114 的每个工作负载写入元数据,包括指示仓的数量、每个仓的大小以及仓应被处理的顺序的装箱信息。运行工作负载需要装箱信息在两步装箱模式。 以此方式,当在将命令缓冲器114提交给GPU 102之前激活两步装箱模式时,UMD 110或KMD 112包括在命令缓冲器(114)的元数据中指示的装箱信息以修补工作负载。 [0048]在块312,UMD执行一个或多个命令缓冲区((获取命令缓冲区114以使114的工作负载可执行。 [0049] 图4示出了根据一些实施例的在两步装箱模式或非两步装箱模式下在CPU上选择性地执行指令缓冲器的工作负载的方法400的示例处理流程。 在一些实施例中,GPU基于UMD生成的相应元数据执行命令缓冲区的命令缓冲区提取以使工作负载在两阶段合并模式或非两阶段合并模式下可执行。 方法400是关于图1的装置100中的示例性实现及其组件和模块来描述的。 在一些实施例中,方法400结合图2的块210执行。 [0050] 在框402,UMD 110写入命令缓冲器114以包含一个或多个工作负载。 在一些实施例中,UMD 110 写入工作负载以在没有修补的情况下以两步装箱模式或非两步装箱模式运行。 在一些其他实施例中,UMD 110 默认写入工作负载以在非两步分箱模式下运行,并且 GPU 102 在必要时进行修改以在两步分箱模式下运行工作负载。(即,如果两步分箱模式在工作负载已经被写入命令缓冲器114之后并且在它们被GPU 102执行之前被激活)。 [0051] 在一个示例中,UMD 110写入命令缓冲器114以包括关于命令缓冲器114中的一个或多个工作负载的条件语句,这些条件语句导致GPU 102在GPU存储器124中使用,并且以2级合并模式执行一个或多个工作负载或non-2-stage binning mode 根据存储在寄存器中的patch enable值的值。 在一些实施例中,补丁启用值是存储在GPU存储器124内的寄存器的单个位中的布尔值。 在一些实施例中,补丁激活值由UMD 110或KMD 112设置。 [0052] 在块404,KMD 112向GPU 104提交命令缓冲器114。 在一些实施例中,在提交给GPU 102时,命令缓冲器114被添加到环形缓冲器120。 [0053] 在块406,GPU 102确定两步合并模式是否被激活。 在一些实施例中,GPU 102检查存储在系统存储器124中的一个或多个补丁激活值以确定两步合并模式是否激活。 在一些实施例中,KMD 112根据相应的性能数据确定两步合并模式是否被激活,并相应地在GPU存储器124中设置补丁激活值。 如果GPU 102确定两步合并模式被激活,则方法400进行到框408。 否则,如果GPU 102确定两步合并模式被禁用,则方法400前进到框410。 [0054] 在方框408,GPU 102以双层合并模式执行指令缓冲器114的一个或多个工作负载。 在一些实施例中,GPU 102被配置为响应于确定指示那些工作负载应该以两步合并模式执行的补丁激活值而以两步合并模式加载命令缓冲器114,如上所述。它利用生成的元数据由 UMD 110 在写入命令缓冲区 114 期间修补一个或多个工作负载以供执行。 在一些其他实施例中,UMD 110 将可能能够以两步合并模式运行的每个工作负载记录为能够以两步合并模式或非两步合并模式运行,并且 GPU 102 被配置为运行那些工作负载在基于补丁激活值的两步分箱模式或非两步分箱模式中选择的一种。 [0055] 在方框410,GPU 102以非两步合并模式执行指令缓冲器114的一个或多个工作负载。 在一些实施例中,非两步合并模式是PBB渲染模式。 [0056] 如本文所公开的,在一些实施例中,一种方法可以包括基于性能数据确定已经满足装箱条件; 响应于确定已经满足装箱条件,获取待决命令缓冲器以在与装箱条件相关联的装箱模式下执行; 图形处理单元(GPU)以合并模式执行待处理命令缓冲区。 一方面,合并条件是两步合并条件,合并模式是两步合并模式。 在另一方面,两步装箱条件包括包括 GPU 的设备的平均温度高于第一预定义温度阈值的第一变化率、设备的平均温度高于第二预定义阈值、设备的局部温度设备的定义位置高于第三预定义阈值,设备的局部温度的第二变化率高于第四预定义阈值,第五预定义阈值高于设备的平均功耗,高于设备的峰值瞬时功耗第六预定义阈值,或低于第七预定义阈值的电池充电状态。 [0057] 在一个方面,性能数据包括包括GPU的设备的平均温度、设备平均温度的第一变化率、设备的平均功耗、平均功耗的第二变化率、峰值瞬时功率设备或设备电池的消耗包括一个或多个充电状态 在另一方面,一种方法包括在写入待决命令缓冲区时收集针对待决命令缓冲区的每工作负载元数据,其中修补未决命令缓冲区包括:基于每工作负载元数据;被执行 在另一方面,基于性能数据确定已经满足两阶段装箱条件发生在写入待决命令缓冲区期间,并且修补未决命令缓冲区包括写入待决命令缓冲区发生在该阶段期间。 在另一方面,基于性能数据确定已经满足两阶段合并条件发生在写入待决命令缓冲器之后并且在待决命令缓冲器被提交给GPU之前。 并且修补挂起命令缓冲区发生在写入挂起命令缓冲区之后和挂起命令缓冲区被提交给GPU之前。 [0058] 一方面,修补待决命令缓冲器以在两步装箱模式中执行包括,利用 GPU,基于存储在 GPU 的存储器中的至少一个修补激活值来修补两步装箱模式中的待决命令缓冲器. 它包括修补以便可以执行。 在另一方面,以两步分箱模式执行待决命令缓冲器包括:将与待决命令缓冲器相关联的图像帧划分为多个粗体分箱; 对于多个粗仓中的每个粗仓,将粗仓划分为多个细仓; 将与未决指令缓冲器相关联的多个基元分割成时间相关的基元批次; 并且对于每个粗分箱,基于图元如何截取该粗分箱的多个精细分箱,渲染成批时间相关图元中的图元。 [0059]在一些实施例中,设备:基于指示设备的温度或功耗的性能数据确定已经满足装箱条件,并且响应于确定已经满足装箱条件,将未决命令缓冲器移动到第二个与分箱条件相关联。1中央处理单元(CPU)被配置为在分箱模式下执行补丁,图形处理单元(GPU)被配置为在第一分箱模式和第二种装箱模式。 一方面,分箱条件为两步分箱条件,第一分箱模式为两步分箱模式,第二分箱模式为原始批次分箱模式。 在另一方面,CPU被配置为在写入挂起命令缓冲区时收集挂起命令缓冲区的每个工作负载元数据,其中基于每个工作负载元数据执行修补挂起命令缓冲区;,每个工作负载元数据包含offset 标识代码在指令缓冲区中的位置,以通过两步合并模式中的修补进行修改,以及标识代码在两步合并模式中如何修改的令牌。 [0060] 一方面,CPU被配置为在写入待处理命令缓冲区的步骤期间基于性能数据确定已经满足两步合并条件,并且在写入待处理命令的步骤期间获取待处理命令缓冲区缓冲。 另一方面,CPU根据写入待处理命令缓冲区之后和待处理命令缓冲区被提交给GPU之前的性能数据确定已经满足两步分箱条件,写入待处理命令缓冲区被配置为取在该步骤之后和在将挂起命令缓冲区提交给 GPU 之前的挂起命令缓冲区。 在另一方面,GPU被配置为通过以下方式以两步分箱模式划分待决命令缓冲器:将与待决命令缓冲器相关联的图像帧划分成多个粗体分箱; 对于多个粗仓中的每个粗仓,将粗仓划分为多个细仓; 将与未决指令缓冲器相关联的多个基元分割成时间相关的基元批次; 并且对于每个粗分箱,基于图元如何拦截该粗分箱的多个精细分箱,以时间相关的分批渲染图元。 [0061] 在一些实施例中,设备基于指示设备的温度或功耗的性能数据确定已经满足装箱条件,并且响应于确定已经满足装箱条件,指示与装箱相关联的装箱模式condition has been activated. 根据配置为设置一个或多个补丁激活值的中央处理器(CPU)和补丁激活值来确定激活分箱模式; 获取挂起的命令缓冲区以在合并模式下执行; 包括一个图形处理单元 (GPU),配置为在合并模式下执行待处理的命令缓冲区。 一方面,合并条件是两步合并条件,合并模式是两步合并模式。 在另一方面,一种设备包括第一传感器,其被配置为生成指示该设备的温度的温度数据; 第二传感器被配置为生成指示设备的功耗的功耗数据,其中CPU被配置为基于至少一个温度数据或功耗数据来计算性能数据。 [0062] 一方面,一种设备包括至少一个性能计数器,其被配置为生成指示发生在该设备上的活动的性能计数器数据,并且CPU被配置为基于该性能计数器数据来计算性能数据。 在另一方面,GPU被配置为:通过以下方式在两步装箱模式中划分待处理命令缓冲器:将与待处理命令缓冲器相关联的图像帧划分为多个粗体箱; 对于多个粗仓中的每个粗仓,将粗仓划分为多个细仓; 将与未决指令缓冲器相关联的多个基元分割成时间相关的基元批次; 并且对于每个粗分箱,基于图元如何拦截该粗分箱的多个精细分箱,以时间相关的分批渲染图元。 [0063] 在一些实施例中,上述设备和技术可以包括一个或多个集成电路(例如设备100,包括上文参考图1描述的GPU 102、CPU 104和系统存储器106。IC)设备(也称为作为集成电路封装或微芯片)。 电子设计自动化 (EDA) 和计算机辅助设计 (CAD) 软件工具可用于设计和制造这些 IC 设备。 这些设计工具通常由一个或多个软件程序代表。 一个或多个软件程序可由计算机系统执行以操作计算机系统以对表示一个或多个IC器件的电路的代码进行操作以执行用于设计或调整制造系统以制造电路的过程的至少一部分。代码 此类代码可能包含指令、数据或指令和数据的组合。 代表设计工具或制造工具的软件指令通常存储在计算系统可访问的计算机可读存储介质上。 类似地,表示IC器件的设计或制造中的一个或多个步骤的代码可以存储在相同的计算机可读存储介质或不同的计算机可读存储介质上并从中访问。 [0064] 计算机可读存储介质可以包括在用于向计算机系统提供指令和/或数据时可由计算机系统访问的任何非暂时性存储介质或非暂时性存储介质的组合。 这样的存储介质可以包括光学介质(例如,压缩盘(CD)、数字通用盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如、随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存)或基于微机电系统(MEMS)的存储介质。然而,其不限于此。 计算机可读存储介质可以嵌入到计算系统中(例如,系统 RAM 或 ROM),固定地附接到计算系统(例如,磁性硬盘驱动器),或可移除地附接到计算系统(例如,例如,光盘或基于通用串行总线 (USB) 的闪存),或通过有线或无线网络(例如,网络可访问存储 (NAS))耦合到计算机系统。 [0065] 在一些实施例中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器来实现。 软件包括存储在非暂时性计算机可读存储介质中或以其他方式有形体现的一组或多组可执行指令。 该软件可包括指令和特定数据,当由一个或多个处理器执行时,这些指令和特定数据使该一个或多个处理器执行上述技术的一个或多个方面。 非暂时性计算机可读存储介质可以包括例如固态存储设备,例如磁盘或光盘存储、闪存、高速缓存、随机存取存储器(RAM)或其他非易失性存储设备。 存储在非暂时性计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码或由一个或多个处理器解释或以其他方式可执行的其他指令格式。 [0066] 应该注意的是,在一般描述中并非需要上述所有活动或元素,某些活动或某些设备可能不需要,并且可以执行一项或多项附加活动,或者可以执行一项或多项附加元素除了所描述的之外,还包括在内。注意 此外,列出活动的顺序不一定是它们执行的顺序。 此外,已经参考特定实施例描述了概念。 然而,本领域的技术人员理解,在不脱离如所附权利要求所阐明的本公开的范围的情况下,可以进行各种修改和改变。 因此,说明书和附图应被视为说明性而非限制性意义,并且所有此类修改旨在包括在本公开的范围内。 [0067]好处、其他优点和问题的解决方案已经在上面关于特定实施例进行了描述。 然而,利益、优势、问题的解决方案,以及可能导致或使任何利益、优势或解决方案出现或变得明显的任何特征是必不可少的、必需的,或者在任何或所有权利要求中。它不应该是解释为一个基本特征。 此外,以上公开的具体实施例仅是说明性的,因为对于受益于本文教导的本领域技术人员而言,可以以不同但等效的方式修改和实践所公开的主题。 除了下面的权利要求中所描述的之外,不旨在限制此处所示的构造或设计的细节。 因此很明显,上面公开的具体实施例可以改变或修改,并且所有这样的修改都被认为在所公开的主题的范围内。 因此,本文寻求的保护如以下权利要求中所述。
现在,一起体验智慧芽的产品和服务
自动注册,无需人工审核,即可立即开始查询专利
立即注册
澳门正版图库

AI助手