用于图形处理的存储器高速缓存管理

文档序号:1694449 发布日期:2019-12-10 浏览:10次 >En<

阅读说明:本技术 用于图形处理的存储器高速缓存管理 (Memory cache management for graphics processing ) 是由 M·伊姆布罗格诺 R·D·施密特 于 2019-05-28 设计创作,主要内容包括:本发明题为“用于图形处理的存储器高速缓存管理”。描述了管理用于图形处理的存储器高速缓存的系统、方法和计算机可读介质。处理器为多个图形应用程序接口(API)资源创建资源组。该处理器随后在命令缓冲区内编码引用该资源组的设置命令,并将数据集标识符(DSID)分配给资源组。该处理器还编码以下命令:该命令缓冲区内的写入命令,该写入命令使图形处理器在高速缓存行内写入数据并用该DSID标记写入的高速缓存行;读取命令,该读取命令使图形处理器读取写入资源组中的数据;以及删除命令,该删除命令使图形处理器通知存储器高速缓存在不清空到存储器的情况下删除存储在高速缓存行内的数据。(the invention provides memory cache management for graphics processing. Systems, methods, and computer-readable media for managing memory cache for graphics processing are described. The processor creates a resource group for a plurality of graphics Application Program Interface (API) resources. The processor then encodes a set command referencing the resource group within the command buffer and assigns a Data Set Identifier (DSID) to the resource group. The processor also encodes the following commands: a write command in the command buffer, the write command causing the graphics processor to write data within a cache line and marking the cache line written with the DSID; a read command that causes the graphics processor to read data in the set of write resources; and a delete command that causes the graphics processor to notify the memory cache to delete data stored within the cache line without flushing to memory.)

用于图形处理的存储器高速缓存管理

技术领域

本公开整体涉及图形处理领域。更具体地讲,但不作为限制,本公开涉及具有图形处理器诸如图形处理单元(GPU)、通过标记和删除与高速缓存行相关联的数据集标识符(DSID)来管理存储器高速缓存。

背景技术

计算机、移动设备和其他计算系统通常具有至少一个可编程处理器,诸如中央处理单元(CPU)和专用于执行某些过程或功能(例如,图形处理)的其他可编程处理器。专用于执行图形处理操作的可编程处理器的示例包括但不限于GPU、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、和/或模拟GPU的CPU。GPU具体地讲包括被设计用于在并行数据流上执行相同指令的多个执行核心(也被称为着色器核心),使得它们对于并行处理大数据块的操作比通用处理器更有效。例如,CPU充当主机并且将专门的并行任务交给GPU。具体地讲,CPU可以执行包括与视频帧相关联的图形数据的存储在系统存储器中的应用。不是处理图形数据,CPU而是将图形数据转发给GPU以进行处理;由此,释放CPU来与GPU处理图形数据同时地执行其他任务。

GPU处理(诸如渲染到纹理传递)通常从存储器高速缓存中进行写入和读取,以提高性能和节省功率。例如,渲染到纹理传递将帧渲染到纹理资源,稍后可以将该纹理资源重新传递到着色器以供进一步处理。通过这样做,可以在利用纹理资源完成GPU之前将GPU写入纹理资源和/或从纹理资源读取GPU。在此时间段内可在存储器高速缓存内访问纹理资源可以提高GPU性能。然而,存储器高速缓存可能不知道何时利用纹理资源完成GPU。在某些情况下,当GPU仍然使用纹理资源时,存储器高速缓存可将数据保存到系统存储器(例如,DRAM),从而导致GPU性能降低。

发明内容

在一个具体实施中,公开了一种将DSID与写入命令相关联并且随后使用DSID从高速缓存中删除写入的数据(如果有的话)的方法。该示例性方法为多个图形应用程序接口(API)资源创建资源组,其中每个图形API资源对应于用于存储图形处理器可访问的数据的存储器分配。该示例性方法编码在命令缓冲区内引用资源组的设置命令。设置命令将DSID分配给资源组。命令缓冲区内的写入命令使图形处理器在高速缓存行内写入数据。写入命令还能够使写入的高速缓存行与DSID相关联。读取命令使图形处理器读取写入资源组中的数据。删除命令使图形处理器通知存储器高速缓存在不清空到存储器的情况下删除存储在与DSID相关联的写入高速缓存行内的数据。处理器然后提交包括设置命令、写入命令、读命令和删除命令的一个或多个命令缓冲区,以在图形处理器上执行。

在另一个具体实施中,公开了一种用于利用写入命令和删除命令的系统,其中该系统包括存储器以及可操作以与存储器交互的处理器。处理器能够在命令缓冲区内编码引用资源组的设置命令。设置命令将DSID分配给包括多个图形API资源的资源组。处理器还能够在命令缓冲区内编码写入命令,该写入命令使图形处理器在高速缓存行内写入数据。写入命令还使DSID被标记为写入的高速缓存行。删除命令被编码以使图形处理器通知存储器高速缓存在不逐出到存储器的情况下删掉存储在用DSID标记的写入高速缓存行中的数据。处理器然后提交包括设置命令、写入命令和删除命令的一个或多个命令缓冲区,以在图形处理器上执行。

在又一个具体实施中,公开了一种用于将DSID与写入命令相关联并且随后使用DSID从高速缓存行中删除写入的数据(如果有的话)的系统。该系统包括存储器以及可操作以与存储器交互的图形处理器。图形处理器从一个或多个命令缓冲区获取写入命令和删除命令,这两者均与DSID相关联。图形处理器执行写入命令以在高速缓存行中写入数据,从而在存储器高速缓存中生成脏高速缓存行。DSID对应于包括多个图形API资源的资源组,并且写入命令将DSID标记为脏高速缓存行。之后,图形处理器在写入命令之后执行删除命令,以通知存储器高速缓存删除脏高速缓存行中的写入数据。数据被删除,而不会将脏高速缓存行清空到主存储器。

在又一个具体实施中,上述每一种方法及其变型都可被实现为一系列计算机可执行指令。此类指令可以使用任何一种或多种方便的编程语言。此类指令可以被收集到引擎和/或程序中,并且可以被存储在计算机系统或其他可编程控制设备可读和可执行的任何介质中。

附图说明

虽然将结合本文所示的例示性具体实施来描述某些具体实施,但本公开并不限于那些具体实施。相反,所有替代形式、修改形式和等同形式被包括在由权利要求限定的本公开的精神和范围内。在不按比例绘制的附图中,对于具有相同结构的部件和元件,在整个说明书和附图中使用相同的附图标号,并且对于具有与具有相同不带撇附图标号的那些部件和元件类似的功能和构造的部件和元件,使用带撇的附图标号。

图1是本公开的具体实施可在其中操作的图形处理路径的示意图。

图2是本公开的具体实施可在其中操作的系统的框图。

图3是用于在分配、关联和删除资源组的DSID时管理存储器高速缓存的存储器虚拟化架构的框图。

图4是包括引用所创建的资源组的DSID命令的命令缓冲区的具体实施。

图5是跨命令队列内的多个命令缓冲区引用所创建的资源组的具体实施。

图6是跨多个命令队列引用所创建的资源组的具体实施。

图7描绘了示出用于管理用于图形处理的存储器高速缓存的图形处理操作的流程图。

图8是本公开的具体实施可在其中操作的计算系统的框图。

图9是本公开的具体实施可在其中操作的软件层和架构的具体实施的框图。

图10是本公开的具体实施可在其中操作的软件层和架构的另一具体实施的框图。

具体实施方式

本公开包括将资源组分配给DSID、在写入资源组时将DSID关联到高速缓存行以及随后在应用程序不再需要访问资源组中的内容时删除DSID的各种示例性具体实施。在一个具体实施中,图形API(例如, (OPENGL是SiliconGraphics,Inc.的注册商标;DIRECT3D是Microsoft Corporation的注册商标;并且METAL是Apple Inc.公司的注册商标))允许开发者和/或应用程序创建包括一个或多个资源(例如,缓冲区和纹理)的资源组。图形API还允许中央处理单元(CPU)在命令缓冲区内生成一个或多个设置命令以获取用于所创建的资源组的DSID。命令缓冲区还可包括在将数据写入资源组中时用DSID标记和/或更新存储器高速缓存内的特定高速缓存行的一个或多个写入命令、用于从资源组读取数据的一个或多个读取命令以及/或者用于删除与DSID相关联的特定高速缓存行的一个或多个删除命令。在CPU向GPU呈现和提交命令缓冲区用于执行之后,图形驱动器调度所提交的命令缓冲区内的设置命令、写入命令、读取命令和/或删除命令用于GPU执行。当GPU执行与DSID相关联的删除命令时,GPU向存储器高速缓存提供删除提示,以用于删除存储在高速缓存行中对应于DSID的数据,而不将内容清空到系统存储器。图形API还允许CPU编码跨不同命令缓冲区和/或跨不同命令队列为资源组分配和/或删除DSID的命令。

在以下描述中,为了解释的目的,阐述了很多具体细节,以便提供对发明构思的彻底理解。作为本说明书的一部分,本公开的附图中的一些附图以框图形式表示结构和设备,以避免使所公开的原理复杂难懂。为了清晰起见,未对实际的具体实施的所有特征进行描述。此外,本公开中所使用的语言已主要被选择用于可读性和指导性目的,并且可能没有被选择为划定或限定本发明的主题,从而诉诸于所必需的权利要求以确定此类发明主题。在本公开中对“一个具体实施”或“具体实施”的提及意指结合该具体实施所述的具体特征、结构或特性被包括在本公开的至少一个具体实施中,并且对“一个具体实施”或“具体实施”的多次提及不应被理解为一定全部是指同一具体实施。

除非明确限定,否则术语“一个”、“一种”和“该”并非旨在指代单数实体,而是包括其特定示例可以被用于举例说明的一般性类别。因此,术语“一个”或“一种”的使用可以意指至少一个的任意数目,包括“一个”、“一个或多个”、“至少一个”和“一个或不止一个”。术语“或”意指可选项中的任意者以及可选项的任何组合,包括所有可选项,除非可选项被明确指示是相互排斥的。短语“中的至少一者”在与项目列表组合时是指列表中的单个项目或列表中项目的任何组合。所述短语并不要求所列项目的全部,除非明确如此限定。

如本文所用,本公开中的术语“内核”是指通常与相对较高或最高的安全级别相关联的操作系统(例如,Mac OSXTM)的核心层的一部分的计算机程序。“内核”能够执行某些任务,诸如管理硬件交互(例如,硬件驱动器的使用)和处理操作系统的中断。为了防止用户空间内的应用程序或其他进程干扰“内核”,“内核”的代码通常被加载到存储器的单独的受保护区域中。在这个上下文内,术语“内核”在本公开通篇可以与术语“操作系统内核”互换。

本公开还使用术语“计算内核”,其具有另一含义,并且不应与术语“内核”或“操作系统内核”混淆。具体地讲,术语“计算内核”是指用于图形处理器(例如GPU、DSP或FPGA)的程序。在图形处理操作的上下文中,用于图形处理器的程序被分类为“计算内核”或“着色器”。术语“计算内核”是指执行一般计算操作(例如,计算命令)的图形处理器的程序,术语“着色器”是指执行图形操作(例如,渲染命令)的图形处理器的程序。

如本文所用,本公开中的术语“命令”是指在数据结构诸如命令缓冲区或命令列表内编码的图形API命令。术语“命令”可以是指图形处理器能够执行的渲染命令(例如,用于绘制调用)和/或计算命令(例如,用于分派调用)。与本公开相关的有关管理存储器高速缓存的命令的示例包括:获取用于所创建的资源组的DSID的“设置命令”、将DSID关联到写入的高速缓存行以便写入资源组的“写入命令”(例如,渲染命令)、从资源组读取的“读取命令”(例如,渲染命令)以及用于通知(例如,删除提示)存储器高速缓存其能够删除与DSID相关联的写入高速缓存行的“删除命令”(例如,渲染命令)。

对于本公开的目的,术语“处理器”是指能够处理来自一个或多个数据源诸如存储器的数据的可编程硬件设备。一种类型的“处理器”是未被定制用于执行特定操作(例如,过程、计算、功能、或任务)、而是被构建用于执行一般计算操作的通用处理器(例如,CPU)。其他类型的“处理器”是被定制用于执行特定操作(例如,过程、计算、功能、或任务)的专用处理器。专用处理器的非限制性示例包括GPU、浮点处理单元(FPU)、DSP、FPGA、专用集成电路(ASIC)、和嵌入式处理器(例如通用串行总线(USB)控制器)。

如本文所用,术语“图形处理器”是指用于执行图形处理操作的专用处理器。“图形处理器”的示例包括但不限于GPU、DSP、FPGA和/或模拟GPU的CPU。在一个或多个具体实施中,图形处理器也能够执行通用处理器能执行的非特定操作。如前所述,这些一般计算操作的示例是与计算内核相关联的计算命令。

如本文所用,术语“资源”是指用于存储图形处理器诸如GPU可基于图形API访问的数据的存储器空间的分配。出于本公开的目的,术语“资源”是同义的,并且也可以被称为“图形API资源”。图形API资源的示例包括缓冲区和纹理。缓冲区表示可以包含数据(诸如,顶点、着色器和计算状态数据)的非格式化存储器的分配。纹理表示用于存储格式化图像数据的存储器的分配。术语“资源组”是指包含在过渡时间段内在逻辑上被分组在一起的资源列表的数据结构。在一个具体实施中,资源组是一个不可变的资源列表,其中一旦应用程序创建资源组,就不能向该资源组添加资源或从该资源组删除资源。

图1是本公开的具体实施可在其中操作的图形处理路径100的示意图。图1示出了其中图形处理路径100利用处理器资源110和图形处理器资源112的示例。处理器资源110包括一个或多个通用处理器(例如CPU),其中每个处理器具有一个或多个核心。处理器资源110也可以包含存储器、微控制器和/或处理器可用来处理供图形处理器资源112执行的命令的任何其他硬件资源,并且/或者与存储器、微控制器和/或处理器可用来处理供图形处理器资源112执行的命令的任何其他硬件资源通信。图形处理器资源112包括一个或多个图形处理器(例如GPU),其中每个图形处理器具有一个或多个执行核心和用于执行图形和/或一般计算操作的其他计算逻辑。换句话讲,图形处理器资源112也可涵盖存储器(例如,存储器高速缓存108)和/或用于执行程序的其他硬件资源诸如着色器或计算内核,并且/或者与存储器(例如,存储器高速缓存108)和/或用于执行程序的其他硬件资源诸如着色器或计算内核通信。例如,图形处理器资源112能够利用渲染流水线来处理着色器并且利用计算流水线来处理计算内核。

图1示出了应用101为了编码用于图形处理器资源112执行的命令的目的而生成图形API调用。为了生成图形API调用,应用101包括以图形API编写的代码。图形API(例如,)表示定义应用101能够以图形处理器具有的功能和/或其他操作的所发布和/或标准化的图形库和框架。例如,图形API允许应用101能够控制渲染和计算命令的组织、处理和提交,以及那些命令的相关数据和资源的管理。

在一个或多个具体实施中,应用101是调用图形API传送图形场景的描述的图形应用。具体地讲,用户空间驱动器102接收来自应用101的图形API调用,并将图形API调用映射到图形处理器资源112所理解且能执行的操作。例如,在被传输给内核驱动器103之前,用户空间驱动器102可以将API调用转换成在命令缓冲区内编码的命令。转换操作可以涉及用户空间驱动器102将着色器和/或计算内核编译成能被图形处理器资源112执行的命令。命令缓冲区然后被发送给内核驱动器103以准备命令缓冲区用于在图形处理器资源112上执行。例如,内核驱动器103可以执行要被发送给图形处理器资源112的命令缓冲区的存储器分配和调度。出于本公开的目的并且为了便于描述和解释,除非另外指明,否则用户空间驱动器102和内核驱动器103统称为图形驱动器。

图1示出了图形处理器固件104获取处理器资源110提交用于执行的命令缓冲区。图形处理器固件104可以执行用于管理图形处理器硬件105的多种操作,包括使图形处理器硬件105上电和/或调度图形处理器硬件105接收用于执行的命令的顺序。参考图1为例,图形处理器固件104可以由执行图形处理器固件104的微控制器来实现。具体地,微控制器可以与图形处理器资源112内的图形处理器被嵌入在同一封装中,并设置用于预处理图形处理器的命令。在其他具体实施中,微控制器与图形处理器物理地分开。

在调度命令之后,在图1中,图形处理器固件104向图形处理器硬件105发送命令流。图形处理器硬件105于是根据图形处理器硬件105接收命令的顺序来执行命令流内的命令。图形处理器硬件105包括多个(例如,众多)执行核心,并且因此可以并行地执行多个所接收的命令。图形处理器硬件105然后将所渲染的帧输出给帧缓冲区106。在一个具体实施中,帧缓冲区106是包含驱动显示器107的位图的存储器的一部分诸如存储器缓冲区。显示器107随后访问帧缓冲区106并且(例如,利用显示控制器)将所渲染的帧(例如,位图)转换成视频信号以用于显示。

在一个或多个具体实施中,图形处理路径100还能够支持创建资源组、向所创建的资源组分配DSID、用写入命令将DSID关联到高速缓存行,以及删除所创建的资源组的DSID。在图1中,应用程序101可生成图形API调用以创建资源组,该资源组在一定时间段内对资源(例如,缓冲区和纹理)进行逻辑分组。图形API还允许处理器资源110在命令缓冲区内生成设置命令,以获取并分配所创建的资源组的DSID。命令缓冲区还可包括用DSID标记以将数据写入资源组的写入命令、从资源组读取数据的读取命令以及/或者用于删除与所分配的DSID相关联的高速缓存行的删除命令。

在处理器资源110将命令缓冲区提交给图形处理器资源112之后,图形驱动器调度设置命令、写入命令、读取命令和/或删除命令以供执行。当图形处理器资源112执行引用DSID的删除命令时,图形处理器硬件105通知存储器高速缓存108存储器高速缓存108不再需要将内容存储在给定高速缓存行中。因此,存储器高速缓存108可以删除给定高速缓存行中对应于DSID的内容。当存储器高速缓存108删除高速缓存行中的内容时,存储器高速缓存108使存储在高速缓存行中的内容无效,使得不会将高速缓存行的内容清空到映射到存储器高速缓存(例如,主存储器)的存储器。

在一个或多个具体实施中,存储器高速缓存108包括访问存储器高速缓存的实际块的高速缓存控制器(图1中未示出)。图形处理器硬件105发送到存储器高速缓存108的删除通知充当删除提示。如果存储器高速缓存108仍存储存储在对应高速缓存行中的内容并且先前未将该内容逐出系统存储器,则高速缓存控制器删除该内容。在一些情况下,在从图形处理器硬件105接收删除提示之前,存储器高速缓存108已逐出存储在高速缓存行中的内容。当发生这种情况时,高速缓存控制器响应于接收到删除通知而不删除存储在存储器高速缓存108中的内容。出于本公开的目的,术语“清空”在整个本公开中也可以被称为“存留”或“逐出”。

用户空间驱动器102被配置为管理DSID并将DSID分配给资源组。DSID表示最终与高速缓存行相关联的一组虚拟标识符。当用户空间驱动器102接收到API调用以设置资源组时,用户空间驱动器102获取DSID并将其分配给所创建的资源组。例如,用户空间驱动器102最初可具有总共约64,000个可用DSID以分配给所创建的资源组。用户空间驱动器102获取可用DSID中的一个(例如,未分配给另一个资源组的DSID)并将该可用DSID分配给所创建的资源组。如图1所示,用户空间驱动器102然后将与设置命令内的资源组相关联的DSID产生到内核驱动器103。

在一个或多个具体实施中,在从用户空间驱动器102接收到设置命令之后,内核驱动器103将从用户空间驱动器102接收的DSID分配给硬件DSID。因此,用户空间驱动器102分配给所创建的资源组的DSID充当内核驱动器103随后映射到硬件DSID的虚拟标识符。内核驱动器103还可维护分配给其他资源组的其他硬件DSID和其他DSID之间的其他映射。内核驱动器103还可跟踪提交给利用硬件DSID的图形处理器资源112的工作(例如,踢动)。内核驱动器103将硬件DSID和工作跟踪信息提供给图形处理器固件104。图形处理器固件104可利用硬件DSID和工作跟踪信息来管理图形处理器硬件105和存储器高速缓存108之间的操作。例如,图形处理器固件104可指示图形处理器硬件105何时访问给定硬件DSID的存储器高速缓存108,并管理何时向给定硬件DSID的存储器高速缓存108发起删除通知。

在设置命令将所创建的资源组分配给DSID和硬件DSID之后,应用程序101通过在命令缓冲区中的其他命令(例如,写入命令和读取命令)内标记DSID来引用所创建的资源组。用户空间驱动器102随后将用DSID标记的其他命令传递到内核驱动器103。对于写入命令,用户空间驱动器102还可用DSID来标记地址范围。在一个或多个具体实施中,地址范围可具有长度为约128字节的范围开始地址和结束地址。用户空间驱动器102负责确保每个DSID的地址范围不重叠。之后,内核驱动器103确定映射到DSID的硬件DSID并将被标记的命令与硬件DSID一起转发到图形处理器资源112。图形处理器资源112然后使用硬件DSID执行被标记的命令。

当应用程序101发出资源组的写入命令时,存储资源组的写入内容的存储器高速缓存108中的一个或多个高速缓存行变为与DSID和硬件DSID相关联。硬件DSID表示以下标识符:图形处理器硬件105将其用于生成到存储器高速缓存108的通知,以删除对应高速缓存行内的内容。高速缓存行是技术人员理解的术语,是指传输到存储器高速缓存108或从存储器高速缓存108传输的存储器块。当将数据传输到存储器高速缓存108或从存储器高速缓存传输数据时,高速缓存行可具有固定的数据大小。例如,可以将高速缓存行设置为包括多个字节和/或数据字,其中在数据传输期间读取或写入整个高速缓存行。硬件DSID可对应于或者作为标记、索引或用于识别高速缓存行的其他地址信息的一部分。

当利用资源组完成应用程序101时,应用程序101可发起删除命令,以便通知存储器高速缓存108可以从存储器高速缓存108中删除(例如,删掉或标记为可覆盖)存储在高速缓存行中的内容,而不将内容逐出到主存储器中的映射存储器位置。在用户空间驱动器102接收给定DSID的删除命令之后,用户空间驱动器102可包括与可以从存储器高速缓存108中删除的DSID列表内的删除命令相关联的给定DSID。用户空间驱动器102随后将DSID列表发送到内核驱动器103。内核驱动器103和图形处理器固件104管理和调度DSID列表的删除操作,使得直到图形处理器资源112完成与给定DSID相关联的写入和读取命令,才会发生删除操作。一旦图形处理器资源112完成删除操作,用户空间驱动器102和内核驱动器103就能够分别释放并重新使用给定的DSID和映射的硬件DSID,以用于新的设置命令。

虽然图1示出了图形处理路径100的特定具体实施,但本公开并不限于图1所示的特定具体实施。例如,图形处理路径100可以包括图1中未具体示出的其他框架、API和/或应用层服务。例如,应用101可以具有对核心动画的访问以动画化应用101的视图和/或用户界面。图1也没有示出图形处理路径100可利用的所有硬件资源和/或部件(例如,电源管理单元或存储器资源,诸如系统存储器)。除此之外或另选地,尽管图1示出了处理器资源110和图形处理器资源112是分开的设备,但是其他具体实施可以将处理器资源110和图形处理器资源112集成在单个设备(例如片上系统)上。图1的使用和讨论仅仅是便于描述和解释的示例。

图2是本公开的具体实施可在其中操作的系统200的框图。具体地讲,系统200能够实现图1所示的图形处理路径100。图2示出了包括处理器资源110和图形处理器资源112的系统200。图2示出了处理器线程204A和204B。处理器线程204A负责利用命令编码器206A和206B,并且处理器线程204B负责利用命令编码器206C和206D。命令编码器206A和206B在命令缓冲区208A内编码命令,并且命令编码器206C和206D在命令缓冲区208B内编码命令。在其他具体实施中可以包括与图2的示例中所示的两个处理器线程和四个命令编码器相比不同数量的处理器线程和命令编码器。命令编码器206A-206D表示将命令编码到命令缓冲区208A和208B中以供图形处理器资源112执行的编码器。命令编码器类型的示例包括但不限于Blit命令编码器(例如,图形API资源复制和图形API资源同步命令)、计算命令编码器(例如,计算命令)、和渲染命令编码器(例如,渲染命令)。

也被称为“命令列表”的命令缓冲区208A和208B表示存储用于图形处理器资源112执行的被编码命令的序列的数据结构。当一个或多个图形API调用呈现和提交命令缓冲区208A和208B给图形驱动器(例如,图1所示的用户空间驱动器102)时,处理器资源110将命令缓冲区208A和208B组织到命令队列210中。命令队列210组织命令缓冲区208被发送给图形处理器资源112用于执行的顺序。以图2为例,命令队列210包含命令缓冲区208C-208N,其中命令缓冲区208C位于命令队列210的顶部,并且是要被发送到图形处理器资源112用于执行的下一命令缓冲区208C。当处理器资源110提交命令缓冲区208A和208B用于执行时,处理器资源110不能将任何附加命令编码到命令缓冲区208A和208B中。在提交命令缓冲区208之后,命令缓冲区变得可用于图形处理器资源112以供执行。

图2的示例还示出了处理器资源110和图形处理器资源112与存储器控制器202进行双边通信。存储器控制器202管理去往系统存储器212和来自系统存储器212的信息流动,并且有时负责维护系统存储器本身(例如,取决于存储器的类型的刷新或其他功能)。如图2所示,单个存储器控制器202对处理器资源110和图形处理器资源112两者执行存储器控制。在另一个具体实施中,存储器控制器202包括单独的存储器控制器,即用于处理器资源110的一个存储器控制器以及用于图形处理器资源112的另一个存储器控制器。存储器控制器202与系统存储器212双边通信,该系统存储器可被分成处理器资源存储器214和图形处理器资源存储器216。系统存储器212的一些具体实施针对处理器资源110和图形处理器资源112中的每一者使用物理或逻辑上独立的存储器,而其他具体实施要求在物理或逻辑基础上共享系统存储器212。

以图2为例,处理器资源110能够在命令缓冲区208(例如,208C)内生成设置命令,以获取所创建的资源组的DSID。同一命令缓冲区208(例如,208C)还可包括用DSID标记的用于将数据写入资源组的写入命令、用于从资源组读取数据的读取命令以及/或者用于删除与DSID相关联的高速缓存行的删除命令。在另一个具体实施中,不同命令缓冲区208(例如,208C、208D和/或208E)可包括引用同一DSID的写入命令、读取命令和删除命令。在处理器资源110将命令缓冲区208提交给图形处理器资源112之后,图形驱动器调度DSID命令以在图形处理器资源112上执行。

当图形处理器资源112执行与DSID相关联的删除命令时,图形处理器硬件105通知存储器高速缓存108其能够使存储在对应高速缓存行中的内容失效,使得高速缓存行内容不需要被逐出到系统存储器212。图形处理器硬件105不保证存储器高速缓存内的内容实际上被删除,而是向存储器高速缓存108提供用DSID识别的内容完成应用程序的删除提示。例如,在存储器高速缓存108从图形处理器硬件105接收到删除提示之后,如果存储器高速缓存108仍然包含对应于DSID的内容,则存储器高速缓存108删除高速缓存行(例如,脏高速缓存行)而不将内容清空到系统存储器212。在一些情况下,当存储器高速缓存108已经将高速缓存行存留到系统存储器212(或具体为图形处理器资源存储器216)时,存储器高速缓存108无法删除对应于DSID的高速缓存行。“脏高速缓存行”是指在映射到存储器高速缓存的存储器(例如,主存储器或系统存储器212)中未修改的已修改高速缓存行。换句话讲,存储在高速缓存行中的数据与其存储在系统存储器212中的配对数据不同。

具有支持创建资源组、将DSID分配给资源组、将DSID与引用资源组的写入命令相关联以及删除引用资源组的DSID的图形API可提供性能和功率益处。具体地讲,将存储器高速缓存管理暴露于应用程序以进行图形处理可减少带宽使用。例如,使图形处理器连续访问存储器高速缓存108而不是系统存储器212以执行渲染到纹理传递减少了运行应用程序的带宽使用。带宽使用的总体减少转化为带宽绑定类型操作的性能的增加并降低了功率消耗。在将高速缓存内容存留存储到系统存储器之前向存储器高速缓存108发出删除提示以删掉该内容还提供了额外的功率节省。消耗较少的功率还从系统200产生较少的热量。在一个具体实施中,系统200经受热减轻操作,其减少了到系统200的频率和功率。通过这样做,热减轻操作使得系统200进入降低的性能状态。

尽管图2示出了系统200将DSID与写入命令相关联并且随后使用DSID从存储器高速缓存108中删除写入的数据(如果有的话)的特定具体实施,但本公开不限于图2中所示的特定具体实施。例如,虽然图2示出了单个命令队列210;但本领域的普通技术人员知道,命令缓冲区208可以被置于图2中未示出的其他命令队列210中。图2的使用和讨论仅仅是便于描述和解释的示例。

图3是用于在分配、标记和删除资源组的DSID时管理存储器高速缓存的存储器虚拟化架构300的框图。图3示出了应用程序101创建包括一个或多个资源的资源组302。资源组302内的一个或多个资源还可属于应用程序101先前创建的其他资源组302。在创建资源组302之后,应用程序101可发送图形API调用以将资源组302设置到用户空间驱动器102。响应于图形API调用,用户空间驱动器102向资源组302分配DSID 304。例如,用户空间驱动器102最初可具有总共约64,000个可用于分配给资源组302的DSID。基于用于设置资源组302的图形API调用,用户空间驱动器102将可用DSID中的一者(例如,未分配给另一个资源组的DSID)分配给资源组302。

内核驱动器103然后将DSID 304映射到硬件DSID 306。通过这样做,DSID 304充当内核驱动器103随后映射到硬件DSID 306的虚拟标识符。具有将DSID 304映射到硬件DSID306的存储器虚拟化架构300允许管理和分配DSID 304的图形API架构是单独的并且独立于用于管理和分配硬件DSID 306的硬件架构。例如,如果用于管理和分配用于图形处理器的硬件DSID 306的架构由于图形处理器中的重新设计的硬件而改变,则可能不需要对图形API架构进行大量修改。

如前所述,内核驱动器103还可维护分配给其他资源组302的其他硬件DSID 306和其他DSID 304之间的其他映射。图形处理器固件104可从内核驱动器103接收硬件DSID以管理图形处理器和存储器高速缓存108之间的操作。例如,图形处理器固件104可确定何时向给定硬件DSID的存储器高速缓存108发起删除通知。基于图形处理器固件104,图形处理器能够与存储器高速缓存108通信以访问与硬件DSID 306相关联的高速缓存行308。例如,图形处理器可从与硬件DSID 306相关联的高速缓存行中读取、写入和/或删除内容。回顾硬件DSID 306可对应于或者作为标记、索引或用于识别高速缓存行的其他地址信息的一部分。

在执行设置命令之后,基于用于资源组302的写入命令,DSID 304和硬件DSID 306可变得与高速缓存行308相关联。应用程序101可生成将数据写入资源组302的写入命令。如果写入命令使得资源组302的至少一些数据被写入高速缓存行308内,则写入命令还能够将DSID 304和硬件DSID 306关联到写入高速缓存行308。换句话讲,可以使用DSID 304和硬件DSID 306来标记用针对资源组302的写入命令更新的高速缓存行308。在一个或多个具体实施中,DSID 304和硬件DSID 306可以与不止一个相关高速缓存行308相关联。之后,可以稍后使用DSID 304和硬件DSID 306来删除与两个标识符相关联的任何高速缓存行。

在一个或多个具体实施中,用户空间驱动器102和/或内核驱动器103可分别分配默认DSID 304和/或默认硬件DSID 306(例如,DSID 304和/或硬件DSID 306的值零)。默认DSID 304和默认硬件DSID 306各自表示指示图形处理器将资源组302视为存储器高速缓存108内的正常高速缓存行的标识符。换句话讲,分配有默认DSID 304和/或默认硬件DSID306的资源组302不受益于先前参考图1和图2所讨论的标签和删除操作。当用户空间驱动器102和/或内核驱动器103在接收到设置命令之后不具有任何可用的DSID 304和/或硬件DSID 306时,出现使用默认DSID 304和/或默认硬件DSID 306的情况。除此之外或另选地,当一个或多个资源属于多个资源组302时,默认硬件DSID 306可能是有用的。在存储器虚拟化架构300内,应用程序101在一些情况下可无意地设置具有至少一个公共资源的两个资源组302。图形处理器可将设置两个资源组302分类为编程错误,并将两个资源组302的硬件DSID 306设置为默认硬件DSID 306,而不是让图形处理器将不同的硬件DSID 306分配给每个资源组302。

图4是包括引用所创建的资源组的一个或多个设置命令408、一个或多个写入命令410、一个或多个读取命令412以及一个或多个删除命令414的命令缓冲区208的具体实施。回顾通用处理器(例如,CPU)呈现并提交命令缓冲区208用于在图形处理器上执行。在通用处理器提交命令缓冲区208之后,通用处理器不能将附加命令编码到命令缓冲区208中。图4示出了命令缓冲区208包括引用所创建的资源组302的设置命令408A和408B、写入命令410A和410B、读取命令412A以及删除命令414A。命令缓冲区208包括三个不同部分402、404和406。部分402表示命令编码器对命令缓冲区208进行编码命令;部分404表示不同的命令编码器(例如,渲染命令编码器)对命令缓冲区208进行编码的命令;并且部分406表示另一个命令编码器对命令缓冲区208进行编码的命令。每个命令编码器都可与用于在命令缓冲区208的每个部分402、404和406内编码命令的特定图形API资源(例如,缓冲区和纹理)以及状态(例如,模板状态和流水线状态)相关联。

参考图4,设置命令408A允许开发者和/或应用程序指示命令缓冲区208的至少一部分将在所引用的资源组302上操作。在部分402和404内,命令缓冲区208包括将DSID(例如,DSID#1)分配给所创建的资源组302的设置命令408A、将数据写入所引用的资源组302的写入命令410A、从所引用的资源组302读取数据的读取命令,以及删除与资源组302相关联的DSID的删除命令。将命令编码到部分402中的命令编码器用所分配的DSID(例如,DSID#1)和资源组302的地址范围标记写入命令410A。后续命令编码器也继承DSID状态信息并将DSID(例如,DSID#1)标记为引用资源组302的命令。例如,还用DSID#1标记读取命令412A以识别资源组302。具有用所分配的DSID标记的读取命令214A可以防止由于硬件级别相同命令缓冲区的并行性而访问被删除的数据。编码命令到命令缓冲区208的命令编码器继承DSID状态信息,直到执行删除命令414。

命令缓冲区208可以包括来自所创建的资源组302的多个写入和读取。在一个具体实施中,在删除命令414之后,如果应用程序和/或开发者希望写入和读取回同一资源组302,则应用程序和/或开发者发出另一API调用以再次设置资源组302。以图4为例,由于删除命令414A,在部分406内编码命令的命令编码器不继承设置命令408A建立的DSID状态。相反,在删除命令414A之后,命令编码器对第二设置命令408B进行编码,该第二设置命令将新的DSID(例如,DSID#2)分配给资源组302。命令编码器使用对应于第二设置命令408B的相同DSID状态信息,并用写入命令410B标记新的DSID(例如,DSID#2)。

图5是跨命令队列210内的多个命令缓冲区208A、208B和208C引用所创建的资源组的具体实施。多个命令缓冲区208可包括引用相同创建的资源组的DSID命令。在图5中,因为DSID状态信息不会跨命令缓冲区被继承,所以每个命令缓冲区208在实现引用资源组的其他命令之前包括设置命令408。类似于图4,命令缓冲区的至少一部分继承与设置命令408相关联的DSID状态信息。与图4相比,图5示出了写入命令410A、读取命令412A和删除命令414A分别位于不同命令缓冲区208A、208B和208C上,而不是位于单个命令缓冲区208上。

如图5所示,每个命令缓冲区208A、208B和208C分别包括其自身的设置命令408A、408B和408C,因为DSID状态信息不会跨命令缓冲区208被继承。具体地讲,在命令缓冲区208A内,设置命令408A将DSID(例如,DSID#1)分配给所创建的资源组,并且用所分配的DSID(例如,DSID#1)标记在设置命令408A之后发生的写入命令410A以写入到资源组中。图形处理器随后在执行命令缓冲区208A之后执行的命令缓冲区208B包括将DSID(例如,DSID#1)分配给所创建的资源组的设置命令408B。用所分配的DSID(例如,DSID#1)标记读取命令412A以写入到资源组中。图形处理器在执行命令缓冲区208B之后执行的命令缓冲区208C包括将DSID(例如,DSID#1)分配给所创建的资源组的设置命令408C。删除命令414A引用所分配的DSID(例如,DSID#1),用于向存储器高速缓存提供删除提示以删除高速缓存行内对应于所分配的DSID的内容。

图6是跨多个命令队列210引用所创建的资源组的具体实施。与图5相比,图6示出了写入命令410A位于命令队列210A内的命令缓冲区208A中,并且删除命令414A位于不同命令队列210B中的不同命令缓冲区208O中。如图所示6,每个命令缓冲区208A和208O包括其自身的设置命令408A和408B,因为不同的命令缓冲区不继承DSID状态信息。命令编码器在命令缓冲区208A内的写入命令410A之后放置栅栏更新命令602,因为读取命令412A位于不同的命令队列210中。在命令缓冲区208O中,在读取命令412A和删除命令414A之前放置栅栏等待命令604,指示命令队列210A中的写入命令410A在执行位于命令队列210B中的读取命令412A之前执行。

在图6中,应用程序可***栅栏更新命令602和栅栏等待命令604以跨命令队列210跟踪和管理资源依赖关系。资源依赖关系在资源由不同命令产生和使用时产生,而与这些命令是编码到同一命令队列210还是不同命令队列210无关。栅栏等待命令604捕获图处理器在特定时间点之前的工作。当图形处理器遇到栅栏等待命令604时,图形处理器一直等待,直到相关捕获的工作完成(例如,接收到对应的栅栏更新命令602),然后继续执行。

尽管图4至图6示出了包括DSID命令的命令缓冲区208的特定具体实施,但本公开不限于图4至图6的特定具体实施。例如,虽然图4示出了两个设置命令408A和408B,但命令缓冲区208的其他具体实施可包括不止两个设置命令408或者引用资源组302的单个设置命令408。对于图5,命令缓冲区208A、208B和208C的其他具体实施可各自包括不止一个设置命令408、写入命令410、读取命令412或删除命令414。图4至图6的使用和讨论仅仅是便于描述和解释的示例。

图7描绘了示出用于管理用于图形处理的存储器高速缓存的图形处理操作700的流程图。要管理存储器高速缓存,操作700能够生成跨多个命令缓冲区或跨多个命令队列在单个命令缓冲区内引用资源组的DSID命令。在一个具体实施中,操作700可由图1和图2所示的处理器资源110来实现。具体地讲,操作700内的框可由图1所示的用户空间驱动器102和/或内核驱动器103来实现。图7的使用和讨论仅仅是便于解释的示例,并不旨在将本公开限制于该具体示例。例如,框702可以是可选的,使得每当操作700为所引用的资源组分配、标记和删除DSID时,操作700可不执行框702。

操作700可开始于框702并创建资源组。操作能够使用各种操作来创建资源组,这些操作包括但不限于创建新的资源组、复制现有资源组或执行现有资源组的可变副本。操作700然后移动到框704并生成将DSID分配给所创建的资源组的设置命令。使用图4至图6,设置命令可发生在写入命令之前、读取命令之前和/或删除命令之前。在一个或多个具体实施中,操作700先前可能已在另一个命令缓冲区(例如,同一命令队列或不同命令队列内)中生成了设置命令。如先前在图3中所述,基于设置命令,操作700可利用存储器虚拟化架构来将DSID映射到硬件DSID。具有将DSID304映射到硬件DSID 306的存储器虚拟化架构允许管理和分配DSID 304的图形API架构是单独的并且独立于用于管理和分配硬件DSID 306的硬件架构。

在框706处,操作700在命令缓冲区内生成引用DSID以写入资源组的写入命令。如前所述,在框704处,操作700将DSID分配给资源组。基于DSID分配,如果写入命令使得资源组的至少一些数据被写入一个或多个高速缓存行中,则操作700将DSID关联到高速缓存行。操作700然后移动到框708并生成引用DSID以从资源组进行读取的读取命令。在读取命令位于与设置命令相同的命令缓冲区上的具体实施中,读取命令从设置命令继承DSID状态信息。在读取命令位于不同命令缓冲区上的情况下,操作700可在不同命令缓冲区内生成读取命令之前生成附加设置命令(图7中未示出)。除此之外,对于在块706中生成的写入命令位于与块708中生成的读取命令不同的命令队列中的情况,操作700可在读取命令之前生成栅栏等待命令。

在完成框708之后,操作700然后可移动到框710并生成引用所创建的DSID的删除命令。删除命令生成通知存储器高速缓存从映射到DSID的高速缓存行中删除内容的删除提示。换句话讲,操作700不保证删除命令使得存储器高速缓存删除所识别的高速缓存行内的内容,而是通知存储器高速缓存利用DSID识别的内容完成应用程序。例如,在存储器高速缓存从操作700接收到删除提示之后,如果存储器高速缓存仍然包含对应于DSID的内容,则存储器高速缓存删除高速缓存行(例如,脏高速缓存行)而不将内容清空到系统存储器。另选地,在存储器高速缓存已将高速缓存行存留到系统存储器的情况下,内存高速缓存不会删除高速缓存行内对应于DSID的内容。一旦图形处理器完成执行删除命令,DSID就可用于重新分配给后续设置命令。

示例性硬件和软件

本公开可在各式各样的电子设备中以及相对于各式各样的电子设备有所涉及和使用,包括单处理器和多处理器计算系统和包含单处理或多处理计算系统的直立式设备(例如,相机、游戏系统、电器等)。本文的讨论是参照多种不同电子计算设备(例如,计算机、膝上型计算机、移动设备等)的常见计算配置来进行的。这个常见计算配置可以具有包括一个或多个微处理器的CPU资源和包括一个或多个GPU的图形处理资源。具有其它(现在或未来)已知或常见硬件配置的其它计算系统也完全被设想和预期。虽然一些具体实施的关注点涉及采用最小化GPU的移动系统,但是硬件配置也可以例如存在于服务器、工作站、膝上型计算机、平板计算机、台式计算机、游戏平台(不管是否是便携式的)、电视机、娱乐系统、智能电话、电话、或任何其它计算设备(不管是移动式的还是固定式的、直立式的还是通用的)中。

参见图8,所公开的具体实施可以由代表性计算系统800来执行。例如,代表性计算机系统可以充当最终用户设备或生成或显示图形的任何其它设备。例如,计算系统800可在电子设备中实施,诸如通用计算机系统、电视机、机顶盒、媒体播放器、多媒体娱乐系统、图像处理工作站、手持式设备、或可与本文所述显示器或展示设备耦接或者可包含本文所述显示器或展示设备的任何设备。计算系统800可包括一个或多个处理器805、存储器810(810A和810B)、一个或多个存储设备815以及图形硬件820(例如,包括一个或多个图形处理器)。计算系统800还可具有设备传感器825,其以包括以下中的一者或多者:深度传感器(诸如,深度相机)、3D深度传感器、成像设备(诸如,固定和/或支持视频的图像捕捉单元)、RGB传感器、接近传感器、环境光传感器、加速度计、陀螺仪、任何类型的静止或视频相机、LIDAR设备、SONAR设备、麦克风、CCD(或其他图像传感器)、红外传感器、温度计等。这些及其他传感器可与适当编程一起结合一个或多个GPU、DSP或传统微处理器工作,使得传感器输出可被正确地解释和/或组合并解释。

返回图8,系统800也可以包括通信接口830、用户接口适配器835、和显示器适配器840,所有这些都可以经由系统总线、背板、织物或网络845耦接。存储器810可以包括处理器805和图形硬件820使用的一种或多种不同类型的非暂态介质(例如固态、DRAM、光学、磁等)。例如,存储器810可以包括存储器高速缓存、只读存储器(ROM)、和/或随机存取存储器(RAM)。存储装置815可以包括一个或多个非暂态存储介质,包括例如磁盘(固定盘、软盘和可移除盘)和磁带、光学介质诸如CD-ROM和数字视频光盘(DVD)、以及半导体存储器设备诸如电可编程只读存储器(EPROM)、固态存储设备、和电可擦除可编程只读存储器(EEPROM)。存储器810和存储装置815可以被用于保持媒体数据(例如音频、图像、和视频文件)、偏好信息、设备配置文件信息、被组织成一个或多个模块且以任何期望的计算机编程语言编写的计算机程序指令、和任何其他合适的数据。当由处理器805和/或图形硬件820执行时,此类计算机程序代码可实现本文所述的一个或多个操作或过程。此外,系统可以采用微控制器(未示出),微控制器也可以执行此类计算机程序代码以实现本文所示的操作或计算机可读介质权利要求中的一者或多者。在一些具体实施中,微控制器可以作为图形处理器或通用处理器资源的陪伴而操作。

通信接口830可以包括基于半导体的电路,并且可以被用于将计算系统800连接到一个或多个网络。示例性网络包括但不限于:本地网络,诸如USB网络;商业局域网;以及广域网络诸如互联网,并且可使用任何合适的技术(例如,有线或无线)。可实施的通信技术包括基于蜂窝的通信(例如,LTE、CDMA、GSM、HSDPA等)或其它通信(Apple lightning、以太网、USB、等)。(WIFI是Wi-Fi AllianceCorporation的注册商标。BLUETOOTH是Bluetooth Sig,Inc.的注册商标,THUNDERBOLT和FIREWIRE是Apple Inc.的注册商标)。用户接口适配器835可用于连接键盘850、麦克风855、指针设备860、扬声器865和其他用户接口设备,诸如触摸板和/或触摸屏(未示出)。显示器适配器840可以被用于连接一个或多个显示器870。

处理器805可执行实施或控制由计算系统800执行的许多功能(例如,评估、转换、数学计算或图形程序编译等)的操作所必要的指令。处理器805可例如驱动显示器870并且可从用户接口适配器835或由系统实施的任何其他用户接口接收用户输入。用户接口适配器835例如可以呈现多种形式诸如按钮、小键盘、触摸板、鼠标、拨号盘、点击轮、键盘、显示屏和/或触摸屏。此外,处理器805可以基于精简指令集计算机(RISC)或复杂指令集计算机(CISC)架构或任何其他合适的架构,并且可以包括一个或多个处理核心。图形硬件820可以是用于处理图形和/或辅助处理器805执行计算任务的专用计算硬件。在一些具体实施中,图形硬件820可以包括CPU集成的图形和/或一个或多个独立的可编程GPU。计算系统800(实现本文所讨论的一个或多个具体实施)可以允许一个或多个用户通过用户活动来控制相同系统(例如,计算系统800)或另一系统(例如,另一计算机或娱乐系统),所述用户活动可以包括音频指令、自然活动、和/或预先确定的手势诸如手部手势。

本公开内的各种具体实施可以使用传感器诸如相机。相机和类似的传感器系统可以包括自动对焦系统,以准确地捕捉最终被用于各种应用诸如照片应用、増强现实应用、虚拟现实应用和游戏的视频或图像数据。处理图像以及在通过相机传感器(或以其它方式)接收的图像上执行识别可以在主机设备上本地地执行,或者与网络可访问资源(例如,通过互联网访问的云服务器)组合来执行。

返回图8,设备传感器825可捕捉情景和/或环境现象,诸如时间;位置信息;设备相对于光、重力和磁北极的状态;甚至还有静态和视频图像。此外,网络能够访问的信息诸如天气信息也可用作上下文的一部分。所捕捉的所有情景和环境现象可用于为用户活动或关于用户活动的信息提供情景。例如,在访问用户的手势或表情或情绪中,情景信息可以被用作为分析的一部分,分析可以利用本文所讨论的技术来执行。

来自设备传感器825的输出可至少部分地由处理器805和/或图形硬件820以及/或者结合在计算系统800内或没有计算系统800的专用图像处理单元来处理。如此捕捉的信息可以被存储在存储器810和/或存储装置815和/或在所附接的网络上能访问的任何存储装置中。存储器810可以包括由处理器805、图形硬件820和设备传感器825用于执行设备功能的一种或多种不同类型的介质。存储装置815可以存储数据,诸如媒体(例如音频、图像和视频文件);媒体的元数据;计算机程序指令;图形编程指令和图形资源;以及其它软件,包括数据库应用((例如存储角色帧的数据库)、偏好信息、设备配置文件信息和任何其它合适的数据。存储器810和存储装置815可以被用于保持经编译形式的或者以任何期望的计算机编程语言编写的被组织成一个或多个模块的计算机程序指令或代码。当由例如微控制器、GPU或处理器805执行时,此类计算机程序代码可以实现本文描述的一个或多个动作或功能(例如,解释和响应包括命令和/或手势的用户活动)。

如上所示,本公开内的具体实施包括软件。因此,如图9中的层图中所表述提供常见计算软件架构的描述。与硬件示例类似,这里讨论的软件架构并不旨在以任何方式是排他性的,相反是例示性的。这对于层类型图尤其如此,软件开发者往往会以略微不同的方式对层类型图进行表述。在这种情况下,该描述开始于层以例示硬件层940的基本硬件层995开始,其可包括存储器、通用处理器、图形处理器、微控制器或者其他处理和/或计算机硬件,诸如存储器控制器和专用硬件。在硬件层上方是将一个示例示为操作系统内核945的操作系统内核层990,其是可以执行存储器管理、设备管理和系统调用的内核软件。操作系统内核层990是硬件驱动器诸如图形处理器驱动器的典型位置。这里采用的标记一般性地旨在说明层中所示的软件元素使用来自下面的层的资源并为上面的层提供服务。然而在实践中,特定软件元素的所有部件可能并不完全按该方式作用。

返回图9,操作系统服务层985由操作系统服务950来例示。操作系统服务950可以在受保护环境中提供核心操作系统功能。此外,操作系统服务层985中所示的操作系统服务可以包括951、等、952、用户空间驱动器953和软件光栅器954的框架。(OPENGL是Silicon Graphics International Corporation的注册商标。OPENCL是Apple Inc.的注册商标,CUDA是NVIDIA Corporation的注册商标)。虽然这些示例中的大多数均涉及图形处理器处理或图形和/或图形库,但是通过改变本公开的具体实施设想了其他类型的服务。这些具体示例还表示可在框架的较低等级中操作的图形框架/库,使得开发者可使用着色和基元和/或获得对图形硬件的相当紧密耦接的控制。此外,图9中指定的具体示例还可将其工作产物传递给硬件或硬件驱动器,诸如图形处理器驱动器,用于显示相关材料或计算操作。

再次参见图9,951表示熟知的用于图形处理器计算操作和图形渲染(包括2D和3D图形)的库和应用编程接口的示例。952还表示所发布的图形库和框架,但其通常被认为比OpenGL/OpenCL 951低的层级,从而支持组织、处理和提交图形和计算命令以及管理那些命令的相关联数据和资源的细粒度低层级控制。用户空间驱动器953是与由于通常与特定设备或功能相关的原因而在用户空间中存在的硬件的控制有关的软件。在许多具体实施中,用户空间驱动器953与内核驱动器和/或固件协同工作以执行硬件驱动器的总体功能。软件光栅器954一般是指用于在没有专门的图形硬件(例如只利用CPU)的情况下生成图形信息诸如像素的软件。在操作系统服务层985内示出的这些库或框架仅仅是示例性的,并且旨在用于展示层的一般层级以及其在样本布置中如何与其它软件有关(例如,内核操作通常在下面,并且高层级应用服务960通常在上面)。另外,可能有用的是要注意,952表示本领域开发人员已知的Apple Inc.的所发布框架/库。此外,951可表示Apple Inc.所发布软件的当前版本中存在的框架/库。

在操作系统服务层985上方有应用服务层980,其包括Sprite Kit 961、Scene Kit962、核心动画963、核心图形964和其他应用服务960。操作系统服务层985表示通常被应用程序直接访问的高层级框架。在本公开的一些具体实施中,操作系统服务层985包括图形有关的框架,其是高层级,因为其对下面的图形库(诸如参考操作系统服务层985讨论的那些)是不可知的。在此类具体实施中,这些高层级图形框架意在以用户/开发者更加友好的方式为开发者提供对图形功能性的访问并允许开发者免除与着色和基元的工作。以举例的方式,Sprite Kit 961是Apple Inc.提供的图形渲染和动画基础结构。Sprite Kit 961可以被用于将纹理图像或“子图形”动画化。Scene Kit 962是来自Apple Inc.的3D渲染框架,其支持在比具有类似能力的框架诸如OpenGL高的层级导入、操纵和渲染3D资产。核心动画963是Apple Inc.提供的图形渲染和动画基础结构。核心动画963可以被用于将视图以及应用的其它视觉元素动画化。核心图形964是来自Apple Inc.的二维绘制引擎,其提供应用的2D渲染。

在应用服务层980上方有应用层975,其可以包括任何类型的应用程序。以举例的方式,图9示出了三个特定应用:照片971(照片管理、编辑和分享程序)、972(财务管理程序)和973(电影制作和分享程序)。(QUICKEN是Intuit Inc.的注册商标,IMOVIE是Apple Inc.的注册商标)。应用层975还示出了两个一般性应用970和974,其表示存在任何其他应用可以与本文所公开的发明具体实施交互或可以是本文所公开的发明具体实施的一部分。一般来讲,本公开的一些具体实施采用生成可显示和/或可查看内容或生成适于GPU处理的计算操作的应用和/或与该应用交互。

在评估操作系统服务层985和应用服务层980中,可能有用的是认识到不同框架具有较高或较低层级应用程序接口,即使框架被表示在图9示意图的相同层中也是如此。图9的例示用于提供一般性指导以及提出后面可能要讨论的示例性框架。此外,本公开的一些具体实施可以表明,应用服务层980中的框架利用操作系统服务层985中表示的库。因此,图9提供用于这些示例的知识强化。重要地,图9并非意图限制可以任何特定方式或在任何特定具体实施中使用的框架或库的类型。一般来讲,本公开的许多具体实施涉及层975中的应用或层980或985中的框架将长的连续图形处理器任务划分为较小块的能力。此外,本公开的许多具体实施涉及操作系统内核层990中的图形处理器(例如,GPU)驱动器软件和/或体现为硬件层995中的微控制器固件;此类驱动器执行用于图形处理器资源(例如GPU)的调度功能。

图10示出了与图9中所示的标准架构类似的软件架构。作为区别,图10的架构示出了:用户空间图形驱动器1005A和1005B;操作系统内核945中的内核图形驱动器1010A和1010B;伴有微控制器固件1020的微控制器1015,包括硬件层940中的图形驱动器固件1025;以及硬件层940中的执行核心1030。图形驱动器的多个实例(用户空间图形驱动器1005A和1005B、内核图形驱动器1010A和1010B以及微控制器固件1020中的图形驱动器固件1025)的存在指示用于实现图形驱动器的各种选项。作为技术可能性,所示的这三个驱动器中的任意者可以独立地作为唯一的图形驱动器操作。在本公开的一些具体实施中,总体图形驱动器以内核图形驱动器1010A和1010B以及图形驱动器固件1025(例如,分别在操作系统内核945和微控制器固件1020中)的组合实现。在其他具体实施中,总体图形驱动器可通过所有三个所示驱动器1005A和1005B、1010A和1010B以及1025的组合努力来实现。

公开了至少一个具体实施,并且本领域的普通技术人员所做的所述具体实施和/或所述具体实施的特征的变型、组合和/或修改在本公开的范围内。由组合、集成和/或省略具体实施的特征而得到的另选具体实施也在本公开的范围内。在明确说明数值范围或限制的情况下,此类表述范围或限制可以被理解为包括落入明确指出的范围或限制内的类似量值的迭代范围或限制(例如,从约1至约10包括2、3、4等;大于0.10包括0.11、0.12、0.13等)。除非另外指明,否则术语“约”的使用是指后面数的±10%。

在仔细研究以上描述时,许多其他具体实施对于本领域的技术人员而言将是显而易见的。因此,应当参考所附权利要求以及赋予此类权利要求的等同形式的完整范围来确定本发明的范围。在所附权利要求书中,术语“包括(including)”和“其中(in which)”被用作相应术语“包括(comprising)”和“其中(wherein)”的通俗英语等同形式。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据缓存方法、数据处理方法、计算机设备、存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类