基于优先级的上下文抢占的制作方法
【专利说明】
【背景技术】
[0001]计算机硬件体系结构一般以某个预定序列来处理工作量。然而,该序列可以被抢占。这样的抢占可能引发大量的延迟时间,使系统慢下来。所述延迟影响在例如图形处理之类的这样的处理器密集型活动中可能是尤其明显的,并且在三维(3D)渲染中更加明显。
【附图说明】
[0002]对本领域的技术人员而言,实施例的各种优点将通过阅读以下说明和所附权利要求书,以及通过参考以下附图而变得显而易见,在附图中:
[0003]图1是根据实施例的图像处理体系结构的示例的框图;
[0004]图2是根据实施例的管线的示例的框图;
[0005]图3是根据实施例的对上下文流进行优先级排序的示例的框图;
[0006]图4是根据实施例的处理高优先级和低优先级上下文提交的方法的示例的流程图;
[0007]图5是根据实施例的处理高优先级和低优先级上下文提交的方法的附加示例的流程图;
[0008]图6是根据实施例的逻辑体系结构的示例的框图;
[0009]图7是根据实施例的系统的框图;以及
[0010]图8是根据实施例的具有小规格因子的系统的示例的框图。
【具体实施方式】
[0011]在适当高水平的计算机系统处,应用可以将工作量提交至驱动器,驱动器继而可以将相对应的上下文(也称为“任务”)提交至硬件。在给定的计算机系统上,可以存在使用计算机硬件的多个正在进行中的上下文-工作量。操作系统可以管理所述多个上下文,从而使用计算机及其操作系统的分时能力为每一个上下文提供硬件时间窗口。这些上下文被处理的速度至少部分地限定了计算机系统的效率。
[0012]提高效率的一种方法曾经是使一些上下文抢占更低优先级的上下文。这可能出现在低优先级上下文工作量执行期间,例如,当操作系统(OS)检测到鼠标或者其他定点设备的移动时,生成图形用户界面(GUI)上下文,所述图形用户界面(GUI)上下文通常在微处理器级别处理中与其他上下文相比被给出更高的优先级。由于⑶I工作量直接并且即时地影响终端用户体验,因此可以给予GUI工作量高优先级。
[0013]虽然可以要求计算机处理许多不同类型的上下文,但是其中计算需求最高的是那些针对3D图形渲染的上下文。现代游戏和其他视频密集型程序可能重视图形,而终端用户自身可以容易地判断这些图形的质量。在渲染图像中有效而快速的系统与缓慢而无效的系统相比,可能是更令人期望的。
[0014]本文的实施例包括:可以在硬件前端命令流操作器上作为硬件实现的高优先级端口。如下面将进一步发展的,这些实施例允许高优先级上下文暂停,而不是抢占低优先级上下文。实施例可以包括内置到3D管线图像芯片中以保存并且恢复暂停的低优先级上下文的状态和工作量的专用片上存储装置。实施例还可以包括:用于处理仍然可以优先于特定正在进行中的工作量的低优先级上下文的低优先级端口。
[0015]本文所呈现的实施例可以专注于三种等级的工作流上下文,此处根据其优先级从低到尚排列:
[0016]a.基线工作流(本文还称为低优先级上下文工作量或者LPCW);
[0017]b.优先于基线工作流的低优先级上下文;以及
[0018]c.优先于a和b的高优先级上下文。
[0019]图1示出了可以用于实施例的示例的图形处理单元(GPU)1l的示例的框图。所示出的GPU 101包括命令流操作器111 (“CS”,在文献中还被称为硬件前端)。可以将来自命令流操作器111的数据应用于媒体管线113。命令流操作器111还可以耦合至3D固定功能管线115。所示出的命令流操作器111通过在管线之间切换并且将命令流转发至有效的管线来管理3D和媒体管线115、113的使用。3D管线115可以提供专门的原始处理功能,而媒体管线113可以提供更通用的功能性。为了进行3D渲染,3D管线115由顶点缓冲区117馈送,而媒体管线113可以由一组单独的存储对象119馈送。将来自3D和媒体管线115、113的中间结果以及来自命令流操作器111的命令馈送至直接耦合至管线和命令流操作器111的图形子系统121。
[0020]所示出的图形子系统121包含耦合至图形处理核125的阵列的统一返回缓冲区(URB) 123。统一返回缓冲区123可以包含:在各种功能之间进行共享以允许线程返回稍后将被其他功能或者线程所消耗的数据的存储器。核125的阵列处理来自3D和媒体管线115、113的值以最终产生目的表面127。核阵列可以访问采样器功能129、数学功能131、线程间通信133、色彩计算器(CC) 135以及用于缓存最终渲染的表面的渲染缓存137。可以将源表面139的集合应用于图形子系统121,并且在所有这些功能129、131、135、137、139由核阵列应用之后,可能产生目的表面127的集合。出于通用计算的目的,所示出的命令流操作器111用于取决于特定实现,通过核125阵列来操作。
[0021]3D渲染过程常常特别密集地使用循环时间,正因为如此,这向寻求优化速度和吞吐效率二者的设计者呈现出了挑战。虽然按照在3D上下文中提出的要求示出了本文的实施例,但是实施例对于优化速度和吞吐效率的其他工作量情况具有广泛的适用性。
[0022]图2呈现了 3D管线115的更详细视图。此处,可以看见的是,管线115包括用于处理基本原始图像处理功能以便处理3D图像的多个阶段。所示出的管线115包括:图形硬件前端(HWFE) 115a、输入汇编器115b、预光栅化着色器115c、光栅器115d、像素着色器115e、以及输出合并器115f。不同的硬件实现可以具有附加的或者更少的阶段。这些阶段中的每一个均可以被链接至用于存储暂停的低优先级上下文状态和工作项的专用片上存储器116。如下面进一步所论述的,这样的对在存储装置中的这些对象的迅速存取可以减少延迟时间。
[0023]图3中的框图示出了根据一个实施例的上下文流的示例。在该示例中,操作系统
(OS)306正在运行如图中所描绘的若干应用:地图应用302、浏览器304以及图形用户界面(⑶I) 308。OS 306可以包括除了其他事物之外,支持低优先级队列311和高优先级队列312的内核模式驱动器310(KMD)。高优先级队列312可以通过图形微控制器316从触摸设备314(例如,鼠标或者触控板)接收上下文。还可以运行其他硬件和软件;此处所示出的硬件和软件是通常生成大量具有不同优先级的上下文的共同使用的硬件和软件的示例。
[0024]在图3中,低优先级队列311包含虽然被指定为具有“低优先级”但是仍可能优先于其他上下文的上下文,以及占一般低优先级上下文工作量的主要部分的低时效上下文。换言之,虽然在该应用中将队列311标注为“低优先级”,但是其上下文的优先级仍可能比它可以抢占的其他上下文更高。可以将具有的优先级比在低优先级队列311中的上下文的优先级更高的上下文引导至高优先级队列312。高优先级队列312可从各种源接收上下文,尽管在图中这些上下文均被示为经由图像微控制器316在触摸设备314上发起的触摸命令。低优先级队列311和高优先级队列312 二者均可以通过软件或者硬件二者中的一个来实现。
[0025]由软件调度器318将在所示出的队列311和312中的上下文分配至两个端口中的一个,软件调度器318在给定时间内可以处理超出成百或者成千个上下文。这些端口中的第一端口是从低优先级队列311接收低优先级上下文的低优先级上下文提交端口 320。高优先级上下文提交端口 322从高优先级队列312接收高优先级上下文。在一个实施例中,这两个端口 320、322 二者均可以是在硬件中实现的。然后可以将到这些端口的提交传递至硬件调度器328。
[0026]所示出的硬件调度器328在向低优先级上下文提交端口 320提交的低优先级上下文和向高优先级上下文提交端口 322提交的高优先级上下文当中进行仲裁,并且如下面进一步所阐释的,可以暂停这样的低优先级上下文。硬件调度器328可以确定使这些上下文中的哪一个上下文成为有效的上下文330,并且转发所述有效的上下文330以用于在管线332上执行。在进行该确定时,选择的优先级是首先选择高优先级上下文,然后选择已经暂停的任何低优先级上下文,然后选择其他低优先级上下文。所示出的硬件调度器328转发状态和工作量的详细情况,例如,用于处理在管线中运行的有效上下文330的存储器表面、存储器对象119以及顶点缓冲区117 (图1),而上下文工作量在管线332上以用于处理。管线332可以包括3D和/或媒体管线,例如,已经相对于本发明的一个实施例论述过的3D和媒体管线115、113(图1)。当更高优先级上下文正等待处理时,硬件调度器328还可以负责使有效上下文330暂停,继而使管线332暂停。这样的暂停可能发生在已经将高优先级上下文发送至高优先级上下文提交端口 322时。这使任何正在进行的低优先级上下文在适当的逻辑边界处停止,并且将其状态和待办的工作量以及工作项复制到存储器中。
[0027]当暂停较低的优先级上下文时,对其状态进行保存。在该示例中,“状态”可以指包括处理特定工作量/上下文所需的管线的每一个阶段的硬件配置,并且可以进一步包括辅助软件指令。(例如,上下文是否由三角形或者矩形以及需要在三角形或者矩形上执行的原始硬件操作组成。)还可以存储任何部分地处理的上下文,即,待办的、未完成的工作。在本示例中,将暂停的低优先级上下文的状态和部分地处理的工作的存储装置提供作为专用管芯上存储器333。因为当与使用主存储器相比时,在相同管芯上本地性地提供该机构作为GPU或者CPU本地可以提供更快(快了若干个数量级)的存取时间,从而使已经暂停的低优先级上下文的后续处理更快。
[0028]响应于低优先级上下文由于高优先级上下文的到达所导致的暂停,所示出的管线332向硬件调度器328发送信号,通知管线已经使低优先级上下文暂停,