CN104951358B - 基于优先级的上下文抢占 - Google Patents

基于优先级的上下文抢占 Download PDF

Info

Publication number
CN104951358B
CN104951358B CN201510088772.XA CN201510088772A CN104951358B CN 104951358 B CN104951358 B CN 104951358B CN 201510088772 A CN201510088772 A CN 201510088772A CN 104951358 B CN104951358 B CN 104951358B
Authority
CN
China
Prior art keywords
context
priority
pipeline
port
module
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.)
Active
Application number
CN201510088772.XA
Other languages
English (en)
Other versions
CN104951358A (zh
Inventor
H·C·纳鲁利
A·纳瓦勒
P·L·多伊尔
M·拉玛多斯
B·韦姆布
J·S·博尔斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104951358A publication Critical patent/CN104951358A/zh
Application granted granted Critical
Publication of CN104951358B publication Critical patent/CN104951358B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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
    • 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

Abstract

方法和装置可以对通过单独的高优先级和低优先级上下文提交端口提交至处理单元的高优先级和低优先级上下文的处理进行优先级排序。根据一个实施例,向所述低优先级端口提交上下文使正在进行中的上下文被抢占,而向所述高优先级端口提交上下文使正在进行中的上下文暂停。

Description

基于优先级的上下文抢占
背景技术
计算机硬件体系结构一般以某个预定序列来处理工作量。然而,该序列可以被抢占。这样的抢占可能引发大量的延迟时间,使系统慢下来。所述延迟影响在例如图形处理之类的这样的处理器密集型活动中可能是尤其明显的,并且在三维(3D)渲染中更加明显。
附图说明
对本领域的技术人员而言,实施例的各种优点将通过阅读以下说明和所附权利要求书,以及通过参考以下附图而变得显而易见,在附图中:
图1是根据实施例的图像处理体系结构的示例的框图;
图2是根据实施例的管线的示例的框图;
图3是根据实施例的对上下文流进行优先级排序的示例的框图;
图4是根据实施例的处理高优先级和低优先级上下文提交的方法的示例的流程图;
图5是根据实施例的处理高优先级和低优先级上下文提交的方法的附加示例的流程图;
图6是根据实施例的逻辑体系结构的示例的框图;
图7是根据实施例的系统的框图;以及
图8是根据实施例的具有小规格因子的系统的示例的框图。
具体实施方式
在适当高水平的计算机系统处,应用可以将工作量提交至驱动器,驱动器继而可以将相对应的上下文(也称为“任务”)提交至硬件。在给定的计算机系统上,可以存在使用计算机硬件的多个正在进行中的上下文-工作量。操作系统可以管理所述多个上下文,从而使用计算机及其操作系统的分时能力为每一个上下文提供硬件时间窗口。这些上下文被处理的速度至少部分地限定了计算机系统的效率。
提高效率的一种方法曾经是使一些上下文抢占更低优先级的上下文。这可能出现在低优先级上下文工作量执行期间,例如,当操作系统(OS)检测到鼠标或者其他定点设备的移动时,生成图形用户界面(GUI)上下文,所述图形用户界面(GUI)上下文通常在微处理器级别处理中与其他上下文相比被给出更高的优先级。由于GUI工作量直接并且即时地影响终端用户体验,因此可以给予GUI工作量高优先级。
虽然可以要求计算机处理许多不同类型的上下文,但是其中计算需求最高的是那些针对3D图形渲染的上下文。现代游戏和其他视频密集型程序可能重视图形,而终端用户自身可以容易地判断这些图形的质量。在渲染图像中有效而快速的系统与缓慢而无效的系统相比,可能是更令人期望的。
本文的实施例包括:可以在硬件前端命令流操作器上作为硬件实现的高优先级端口。如下面将进一步发展的,这些实施例允许高优先级上下文暂停,而不是抢占低优先级上下文。实施例可以包括内置到3D管线图像芯片中以保存并且恢复暂停的低优先级上下文的状态和工作量的专用片上存储装置。实施例还可以包括:用于处理仍然可以优先于特定正在进行中的工作量的低优先级上下文的低优先级端口。
本文所呈现的实施例可以专注于三种等级的工作流上下文,此处根据其优先级从低到高排列:
a.基线工作流(本文还称为低优先级上下文工作量或者LPCW);
b.优先于基线工作流的低优先级上下文;以及
c.优先于a和b的高优先级上下文。
图1示出了可以用于实施例的示例的图形处理单元(GPU)101的示例的框图。所示出的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。
所示出的图形子系统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阵列来操作。
3D渲染过程常常特别密集地使用循环时间,正因为如此,这向寻求优化速度和吞吐效率二者的设计者呈现出了挑战。虽然按照在3D上下文中提出的要求示出了本文的实施例,但是实施例对于优化速度和吞吐效率的其他工作量情况具有广泛的适用性。
图2呈现了3D管线115的更详细视图。此处,可以看见的是,管线115包括用于处理基本原始图像处理功能以便处理3D图像的多个阶段。所示出的管线115包括:图形硬件前端(HWFE)115a、输入汇编器115b、预光栅化着色器115c、光栅器115d、像素着色器115e、以及输出合并器115f。不同的硬件实现可以具有附加的或者更少的阶段。这些阶段中的每一个均可以被链接至用于存储暂停的低优先级上下文状态和工作项的专用片上存储器116。如下面进一步所论述的,这样的对在存储装置中的这些对象的迅速存取可以减少延迟时间。
图3中的框图示出了根据一个实施例的上下文流的示例。在该示例中,操作系统(OS)306正在运行如图中所描绘的若干应用:地图应用302、浏览器304以及图形用户界面(GUI)308。OS 306可以包括除了其他事物之外,支持低优先级队列311和高优先级队列312的内核模式驱动器310(KMD)。高优先级队列312可以通过图形微控制器316从触摸设备314(例如,鼠标或者触控板)接收上下文。还可以运行其他硬件和软件;此处所示出的硬件和软件是通常生成大量具有不同优先级的上下文的共同使用的硬件和软件的示例。
在图3中,低优先级队列311包含虽然被指定为具有“低优先级”但是仍可能优先于其他上下文的上下文,以及占一般低优先级上下文工作量的主要部分的低时效上下文。换言之,虽然在该应用中将队列311标注为“低优先级”,但是其上下文的优先级仍可能比它可以抢占的其他上下文更高。可以将具有的优先级比在低优先级队列311中的上下文的优先级更高的上下文引导至高优先级队列312。高优先级队列312可从各种源接收上下文,尽管在图中这些上下文均被示为经由图像微控制器316在触摸设备314上发起的触摸命令。低优先级队列311和高优先级队列312二者均可以通过软件或者硬件二者中的一个来实现。
由软件调度器318将在所示出的队列311和312中的上下文分配至两个端口中的一个,软件调度器318在给定时间内可以处理超出成百或者成千个上下文。这些端口中的第一端口是从低优先级队列311接收低优先级上下文的低优先级上下文提交端口320。高优先级上下文提交端口322从高优先级队列312接收高优先级上下文。在一个实施例中,这两个端口320、322二者均可以是在硬件中实现的。然后可以将到这些端口的提交传递至硬件调度器328。
所示出的硬件调度器328在向低优先级上下文提交端口320提交的低优先级上下文和向高优先级上下文提交端口322提交的高优先级上下文当中进行仲裁,并且如下面进一步所阐释的,可以暂停这样的低优先级上下文。硬件调度器328可以确定使这些上下文中的哪一个上下文成为有效的上下文330,并且转发所述有效的上下文330以用于在管线332上执行。在进行该确定时,选择的优先级是首先选择高优先级上下文,然后选择已经暂停的任何低优先级上下文,然后选择其他低优先级上下文。所示出的硬件调度器328转发状态和工作量的详细情况,例如,用于处理在管线中运行的有效上下文330的存储器表面、存储器对象119以及顶点缓冲区117(图1),而上下文工作量在管线332上以用于处理。管线332可以包括3D和/或媒体管线,例如,已经相对于本发明的一个实施例论述过的3D和媒体管线115、113(图1)。当更高优先级上下文正等待处理时,硬件调度器328还可以负责使有效上下文330暂停,继而使管线332暂停。这样的暂停可能发生在已经将高优先级上下文发送至高优先级上下文提交端口322时。这使任何正在进行的低优先级上下文在适当的逻辑边界处停止,并且将其状态和待办的工作量以及工作项复制到存储器中。
当暂停较低的优先级上下文时,对其状态进行保存。在该示例中,“状态”可以指包括处理特定工作量/上下文所需的管线的每一个阶段的硬件配置,并且可以进一步包括辅助软件指令。(例如,上下文是否由三角形或者矩形以及需要在三角形或者矩形上执行的原始硬件操作组成。)还可以存储任何部分地处理的上下文,即,待办的、未完成的工作。在本示例中,将暂停的低优先级上下文的状态和部分地处理的工作的存储装置提供作为专用管芯上存储器333。因为当与使用主存储器相比时,在相同管芯上本地性地提供该机构作为GPU或者CPU本地可以提供更快(快了若干个数量级)的存取时间,从而使已经暂停的低优先级上下文的后续处理更快。
响应于低优先级上下文由于高优先级上下文的到达所导致的暂停,所示出的管线332向硬件调度器328发送信号,通知管线已经使低优先级上下文暂停,并且管线处于可以接受高优先级上下文的状态。所示出的硬件调度器328将暂停的低优先级上下文从有效上下文330状态移至低优先级(LP)暂停的上下文334状态,并且可以开始处理高优先级上下文。硬件还可以记住低优先级上下文已经暂停,并且稍后在随后的高优先级上下文执行完成之后,并且在任何其他低优先级上下文可能被占据之前,可以重新提交以用于执行。
在不涉及任何高优先级上下文的场合由低优先级上下文抢占的情况下,一旦低优先级上下文由另一低优先级上下文抢占,软件调度器318被更新并且知道所述低优先级上下文已经被抢占并且被驱逐出管线。同样,可以将有关抢占的低优先级上下文状态的一些信息保存至存储器,例如,当抢占的低优先级上下文恢复在管线中的处理时使用的软件指令。存储器可以是主存储器、大容量存储器,或者例如可以被分配用于存储图形上下文的DDR(双数据速率)存储器。软件调度器318可以保留抢占的低优先级上下文的标识,从而低优先级上下文可以在稍后的时间点被重新提交或者被丢弃。
现转向图4,示出了提供用于低优先级上下文的高优先级上下文抢占的方法400的一个示例的流程图。方法400可以在可执行软件中被实现为:存储在存储器的机器可读存储介质或者计算机可读存储介质中的逻辑指令的集合,所述存储器例如是随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪速存储器等;存储在可配置逻辑中的逻辑指令的集合,所述可配置逻辑例如是例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD);存储在使用电路技术的固定功能逻辑硬件中的逻辑指令的集合,所述固定功能逻辑硬件例如是应用专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或者晶体管-晶体管逻辑(TTL)技术、或者其任何组合。
首先转向流程图的左半边,首先考虑的是不存在要处理的高优先级上下文的情况。在最简单的情况下,计算机可能处于处理3D渲染的工作流之中。这可能意味着,例如,图像是利用成千个三角形元素生成的,所述成千个三角形元素穿过具有图2所示的各种阶段的3D图像管线,使管线充满上下文。该上下文可以是普通的、低优先级上下文工作量。在所示出的框404处开始执行,如在这种简单的情况下,在框403处可能不存在从存储器恢复的低优先级上下文状态,以及当在框406处考虑不存在抢占或者暂停时,则执行可以在框408处完成。作为好的管理和设计,在框410处可以将完成的、现已执行的上下文保存至存储器以便将来在其他地方使用。所述存储器可以是主存储器或者在GPU上的DDR存储器或者便于存储完成的上下文的任何其他存储器。同样,在410处,可以通知软件调度器:上下文已经完成,并且该过程在412处结束。
可能常见的情况是,在包括一般工作流程的上下文流中存在必须被给出第一优先级测量的一些上下文流。这样的上下文的示例各不相同。例如,在媒体上下文中,实施例可能涉及显示电影或者片段,而通用图形处理单元(GPGPU)工作量则可能正在后台工作,正在执行类似于N-体重力仿真的数学密集型计算。在该示例中,媒体将被给出比GPGPU工作量的优先级更高。在其他实施例中,情况可能相反。
虽然在本文中可能相对于高优先级上下文将给定的上下文称为“低优先级”,但是所述给定的上下文具有的优先级仍可能比在工作流中的其他上下文更高。这样的相对优先需求并非总是如此,这是因为一个上下文(例如,鼠标移动)使用的自动优先级比另一个上下文(例如,数学计算)更高。例如,在另一实施例中,可能存在在操作系统中实现以及通过软件调度器318(图3)运行的算法,所述软件调度器318旨在给出对所有上下文的硬件存取的平衡共享,从而导致不一定遵循提供优先级比其他上下文更高的GPU上下文的范例的抢占。
然后考虑处理具有的优先级比一般工作流高的低优先级上下文的情况。在开始框434处,可以通过框432在低优先级上下文提交端口处提交低优先级上下文。如上所提到的,如此指定的上下文具有的优先级比基线工作流更高,并且它们可以具有的优先级比在过程中其他之前提交的低优先级上下文更高。由此,在框436处,该方法可以指示不是高优先级上下文的管线中的任何上下文将被抢占,所述任何上下文包括之前在过程中提交的低优先级上下文。此处的抢占意味着停止流至3D管线的工作量,并且驱逐出已经在管线中的上下文(即,允许在站处完成执行,例如如图2所示)。所述驱逐出管线的过程可能不是瞬时的—取决于管线的深度以及存储在其站的内部高速缓冲存储器中的工作的量,可以占用成千个时钟周期。例如,在图形处理中,其中,将三角形用作3D对象的渲染的原语,在管线中的每一个站可以具有包含成千个三角形的高速缓存。驱逐出管线的过程可以使工作在管线中的这些三角形上完成,从而在等待管线清除时引发大量的延迟,如框438所示出的。
一旦管线已经清除,在框440处,软件调度器可以从指示已经接受新的低优先级上下文的硬件调度器接收状态更新。在框442处,低优先级上下文开始在框402处在管线中执行的过程,其在框444处标记提交阶段结束。执行首先开始从在框403处的存储器中提取之前存储在存储器中的任何可用的状态数据,以及,在所示出的框404处,硬件可以开始执行工作量。在执行工作量时,在框406处,管线监测系统由于低优先级上下文或者高优先级上下文提交所引起的任何新的抢占或者暂停。在框406处的执行期间,可能存在另一低优先级上下文经由框451到达以抢占上下文的情况或者高优先级上下文已经触发了上下文中的暂停的情况。如果不存在进一步的抢占或者暂停,则在框412处结束之前,在框408处,上下文完成并且在框410处被保存至存储器如之前以用于任何将来的使用。
另一方面,可以在框406处检测即将到来的低优先级上下文或者高优先级上下文,在这种情况下,低优先级上下文不在框408处完成,但是也不被暂停或者被抢占。在框414处,如果不存在指示的暂停,则在框415处低优先级上下文被抢占。在框420处进行是否存在暂停的进一步测试,如果不存在,则继续抢占,以及在框422处将低优先级上下文状态保存至存储器,并且硬件调度器可以通知软件调度器:低优先级上下文已经被抢占。
在框446处针对指定的高优先级上下文的提交来提供高优先级上下文端口。在该示例中,高优先级上下文可以通过鼠标、触控板触摸以及对其而言及时执行十分重要的其他GUI命令来生成。在其他实施例中,其他操作可能会产生可以被指定为具有高优先级的其他上下文。在该实施例中,在框446处的高优先级上下文提交端口是在硬件中实现的,但是在其他实施例中它可以是在软件中实现的。
通过软件调度器或者操作系统的其他部分来检测高优先级上下文。如果检测到高优先级上下文,则在所示出的框450处,启动在管线中的任何上下文的暂停并且可以经由框451至框406发送该上下文的指示,而不是抢占任何在管线中的低优先级上下文,这会引起对驱逐出管线的较高延迟处罚。与驱逐出管线相反,允许在管线中的任何上下文在可以到达的最近逻辑点处停止,例如在完成飞行中的操作或者进行中的事务之后,停在其可能位于的站处。例如,在上下文由在管线中的每一个站处的成千个三角形的图形处理构成的情况下,可以允许完成对在站处的正在进行的任何独立的三角形的处理,但是然后针对该上下文暂停管线,以及将上下文的状态和在管线中的待办/中间数据复制到存储器/片上存储装置中。根据流程图400,上下文可以被保存至存储器的若干位置处,包括框410、框422、框426、以及框450。由暂停管线所引发的延迟可能基本上小于在驱逐出管线时所引发的延迟。
一旦在框452处暂停完成或者优先上下文已经结束执行,则在框454处,可以通知软件调度器已经接受高优先级上下文。高优先级上下文执行然后可以开始于框456处。在框460处,可以读取任何之前存储的有关可能可选地已经放置于存储器中的高优先级上下文的状态信息,以恢复该高优先级上下文状态,以及开始执行高优先级上下文。在框462处,完成执行。在框464处,可以将已经完成的高优先级上下文的状态保存至存储器以便将来使用,以及可以通知软件调度器高优先级上下文已经完成。在框466处,可以重新开始任何待办的暂停的低优先级上下文,或者,在468处可以结束整个过程。
再次转向方法400的左侧,考虑处理高优先级上下文的进一步方面。在框406处,暂停的指示(高优先级上下文的标记)到达,以及在框414处暂停的指示被确认。然后,在框424处,任何有效的低优先级上下文(此处,这可能指不是高优先级的任何上下文)均被暂停。在框426处,将暂停的低优先级上下文的状态及其已经生成的中间数据的任何保存至存储器,例如,片上存储装置。同样,通知软件调度器低优先级上下文已经被暂停。框426可以从框466接收可以重新开始在暂停的低优先级上下文上工作的指示,在这种情况下,在框430处,通知软件调度器可以重新开始在暂停的上下文上工作,这在框402处开始。
现转向图5,提供对更低优先级上下文的高优先级上下文抢占的方法的另一示例经由流程图500示出。首先考虑的是在框504处将高优先级上下文提交至高优先级端口的情况。如果在框506处考虑不存在正在进行的低优先级上下文,然后在框512处高优先级上下文被发送至管线并且被执行。如果,另一方面,在管线中已经存在低优先级上下文,则在框508处暂停该低优先级上下文,并且在框510处将其状态和未完成的工作保存至存储器(可以是专用管芯上存储装置)。此外,可以将任何完成的上下文处理存储在主图形存储器或者DDR图形存储器中。
在框512处完成高优先级上下文之后,在514处,系统对任何暂停的低优先级上下文进行轮询。如果不存在任何暂停的低优先级上下文,则在框518处系统进一步被轮询以确定是否存在待处理的任何其他低优先级上下文。如果不存在,则工作流结束。如果存在待处理的其他低优先级上下文,则其在框520处对其处理,并且然后当处理完成时,该工作流结束。
应该在框514处确定剩余待处理的暂停低优先级上下文,然后在框516处将其状态和任何部分地完成的工作从存储器恢复,并且在框517处在管线中处理这些低优先级上下文,其后,控制传递至框518并且如上面所述的继续。
在框532处可以将低优先级上下文提交至低优先级端口。在这种情况下,通过流程图500,在条件框534处确定是否已将高优先级上下文提交至高优先级端口。如果已经提交,则流程控制传递至框506以进行之前的处理。如果未提交,则在框536处进一步确定在管线中是否存在任何更久的低优先级上下文。如果没有,则将低优先级上下文提交至管线并且在538处执行完成,以及工作量在540处结束。另一方面,如果另一低优先级上下文已经位于管线中,则在框542处将其抢占以及在框544处执行更新的低优先级上下文。在完成之后,在框546处更久的、抢占的低优先级上下文被重新载入并且被执行。
图6呈现了根据实施例的逻辑体系结构600的示例。逻辑体系结构600包括图形管线602、低优先级上下文端口604以及高优先级上下文端口606。高优先级上下文检测模块614可以检测向高优先级端口606提交高优先级上下文。如果在低优先级上下文为在管线602中的有效上下文时检测到这样的上下文,然后低优先级上下文暂停模块616可以使低优先级上下文暂停,并且其状态和任何部分完成的工作可以由暂停的上下文保存模块618保存至管芯上存储装置620。在已经对高优先级上下文进行处理之后,暂停上下文的状态和任何部分完成的工作由暂停上下文恢复模块622从管芯上存储装置620恢复至管线,以及恢复在暂停低优先级上下文上工作。
可能不存在待处理的高优先级上下文。在这种情况下,低优先级上下文检测模块626检测向低优先级端口604提交低优先级上下文。如果在另一低优先级上下文为在管线602中的有效上下文时检测到这样的上下文,然后低优先级上下文抢占模块628抢占该低优先级上下文,并且其状态的某些方面以及任何完成的工作可以由抢占上下文保存模块630保存至存储器632,存储器632可以是主存储器或者DDR存储器。在已经处理低优先级上下文之后,正如可能已经被保存的这样的状态信息和抢占的低优先级上下文由抢占上下文恢复模块622恢复至管线,以及恢复在抢占的低优先级上下文上工作。
图7示出了系统700的实施例。在实施例中,系统700可以是媒体系统,尽管系统700不限于该上下文。例如,系统700可以被并入个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板计算机、触摸板、便携式计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板或者智能电视)、移动互联设备(MID)、消息传送设备、数据通信设备等。由此,系统700可以用于如本文所描述的渲染图像。
在实施例中,系统700包括:耦合至显示器720的平台702。平台702可以从内容设备接收视频比特流内容,所述内容设备例如是内容服务设备730或者内容传送设备740或者其他相似的内容源。包括一个或者多个导航特征的导航控制器750可以用于与例如平台702和/或者显示器720进行交互。下面将更详细地描述这些部件中的每一个部件。
在实施例中,平台702可以包括芯片集705、处理器710、存储器712、存储装置714、图形子系统715、应用716和/或者无线装置718的任何组合。芯片集705可以在处理器710、存储器712、存储装置714、图形子系统715、应用716和/或者无线装置718之间提供互相通信。例如,芯片集705可以包括能够提供与存储装置714互相通信的存储适配器(未描绘)。
处理器710可以被实现为:复杂指令集计算机(CISC)或者精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核或者任何其他微处理器或者中央处理单元(CPU)。在实施例中,处理器710可以包括双核处理器、双核移动处理器等。
存储器712可以被实现为易失性存储器设备,例如但不限于:随机存取存储器(RAM)、动态随机存取存储器(DRAM)、或者静态RAM(SRAM)。
存储装置714可以被实现为非易失性存储设备,例如但不限于:磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附加存储设备、闪速存储器、电池备份SDRAM(同步DRAM)、和/或网络存取存储设备。在实施例中,例如,当包括多个硬驱动时,存储装置714可以包括增加针对有价值的数字媒体的存储性能增强型保护的技术。
图形子系统715可以执行对图像(例如,静态或者视频)的处理,以用于显示。图形子系统715可以是例如图形处理单元(GPU)或者视觉处理单元(VPU)。图形子系统715因此可以包括已经论述过的GPU 101(图1)。另外,处理器710可以被配置为作为CPU经由从存储器712、存储装置714或者其他适当的源获得的指令来工作。模拟或者数字接口可以用于通信地耦合图形子系统715和显示器720。例如,该接口可以是高清多媒体接口、显示端口、无线HDMI、和/或无线HD兼容技术中的任何。图形子系统715可以被集成到处理器710或芯片集705中。图形子系统715可以是通信地耦合至芯片集705的独立卡。
本文所描述的图形和/或视频处理技术可以是在各种硬件体系结构中实现的。例如,图形和/或视频功能可以集成在芯片集内。可替代的,可以使用分立的图形和/或视频处理器。作为另一实施例,图形和/或视频功能可以通过通用处理器(包括多核处理器)实现。在进一步的实施例中,该功能可以是在消费性电子设备中实现的。
无线装置718可以包括能够使用各种适当的无线通信技术发送并且接收信号的一个或者多个无线装置。这样的技术可以涉及在一个或者多个无线网络上通信。示例性无线网络包括(但不限于):无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络以及卫星网络。在这样的网络上通信,无线装置718可以根据任何版本中的一种或多种适用标准而工作。
在实施例中,显示器720可以包括任何电视类型的监视器或显示器。显示器720可以包括:例如,计算机显示屏、触屏显示器、视频监视器、电视型设备、和/或电视。显示器720可以是数字的和/或模拟的。在实施例中,显示器720可以是全息显示器。同样,显示器720可以是可以接收视觉投影的透明表面。这样的投影可以传递各种形式的信息、图像和/或对象。例如,这样的投影可以是移动增强现实(MAR)应用的视觉叠加。在一个或者多个软件应用716的控制下,平台702可以在显示器720上显示用户界面722。
在实施例中,内容服务设备730可以由任何国内的、国际的和/或独立的服务托管,并且由此可以经由例如互联网访问平台702。内容服务设备730可以耦合至平台702和/或显示器720。平台702和/或内容服务设备730可以耦合至网络760向和从网络760传递(例如,发送和/或接收)媒体信息。内容传送设备740还可以耦合至平台702和/或显示器720。
在实施例中,内容服务设备730可以包括:有线电视盒、个人计算机、网络、电话、启用互联网的设备或能够传送数字信息和/或内容的用具、以及能够经由网络760或者直接在内容提供商与平台702和/或显示器720之间单向地或双向地传递内容的任何其他相似的设备。要意识到,内容可以经由网络760向和从内容提供商和系统700的部件中的任何一个单向地和/或双向地传递。内容的示例可以包括任何媒体信息,这样的媒体信息包括:例如,视频、音乐、医疗和游戏信息等。
内容服务设备730接收内容,例如,有线电视节目,其包括:媒体信息、数字信息、和/或其他内容。内容提供商的示例可以包括:任何有线或者卫星电视或者无线装置或者互联网内容提供商。所提供的示例不意在限制实施例。
在实施例中,平台702可以从具有一个或者多个导航特征的导航控制器750接收控制信号。控制器750的导航特征可以用于与例如用户界面722进行交互。在实施例中,导航控制器750可以是定点设备,其可以是允许用户将空间(例如,连续的和多维的)数据输入到计算机中的计算机硬件部件(特别是人机界面设备)。许多系统(例如,图形用户界面(GUI)、电视、以及监视器)允许用户使用身体姿势来控制数据并且将数据提供至计算机或者电视。
控制器750的导航特征的移动可以通过指针、游标、聚焦环或者显示在显示器上的其他视觉指示器的移动在显示器(例如,显示器720)上进行回显。例如,在软件应用716的控制下,可以将位于导航控制器750上的导航特征映射至例如显示在用户界面722上的虚拟导航特征。在实施例中,控制器750可以不是单独的部件,而是集成到平台702和/或显示器720中。然而,实施例不限于在本文中示出或者描述的元件或者上下文。
在实施例中,驱动器(未示出)可以包括:使用户能够立即打开和关闭平台702的技术,例如,在启用时,像电视那样在初始启动之后触摸按钮便能立即打开和关闭。当“关闭”平台时,程序逻辑可以允许平台702将内容流送至媒体适配器或者其他内容服务设备730或者内容传送设备740。另外,芯片集705可以包括:例如,支持5.1环绕立体声和/或高清晰7.1环绕立体声的硬件和/或软件。驱动器可以包括用于集成的图形平台的图形驱动器。在实施例中,图形驱动器可以包括快速外围部件互连(PCI)图形卡。
在各种实施例中,可以集成系统700中示出的任何一个或者多个部件。例如,可以集成平台702和内容服务设备730;或者可以集成平台702和内容传送设备740;或者可以集成平台702、内容服务设备730以及内容传送设备740。在各种实施例中,平台702和显示器720可以是集成单元。例如,可以集成显示器720和内容服务设备730;或者可以集成显示器720和内容传送设备740。这些示例均不意在限制实施例。
在各种实施例中,系统700可以被实现为无线系统、有线系统或者这两者的组合。当被实现为无线系统时,系统700可以包括:适用于在无线共享介质上通信的部件和接口,例如,一根或者多根天线、发射机、接收器、收发器、放大器、滤波器、控制逻辑等。无线共享介质的示例可以包括诸如RF频谱等之类的无线频谱的部分。当被实现为有线系统时,系统700可以包括:适用于在有线通信介质上通信的部件和接口,例如,输入/输出(I/O)适配器、连接I/O适配器与相对应的有线通信介质的物理连接器、网络接口卡(NIC)、盘控制器、视频控制器、音频控制器等。有线通信介质的示例可以包括:线路、电缆、金属引线、印刷电路板(PCB)、底板、交换结构、半导体材料、双绞线、同轴电缆、光纤等。
平台702可以建立用于传递信息的一个或者多个逻辑或者物理信道。所述信息可以包括媒体信息和控制信息。媒体信息可以指表示用于用户的内容的任何数据。内容的示例可以包括:例如,来自语音对话、视频会议、流视频、电子邮件(“email”)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等的数据。来自语音对话的数据可以是:例如,语音信息、静默时间段、背景噪声、舒适噪声、音调等。控制信息可以指表示用于自动系统的命令、指令或者控制字的任何数据。例如,控制信息可以用于通过系统按照指定路径传送媒体信息或者指示节点按照预定方式来处理媒体信息。然而,实施例不限于如图7示出或者描述的元件或者上下文。
如上面所描述的,系统700可以被具体体现为不同的物理风格或者规格因子。图8示出了在其中可以具体体现系统700的小规格设备800的实施例。在实施例中,例如,设备800可以被实现为具有无线能力的移动计算设备。例如,移动计算设备可以指具有处理系统和移动电源或者电源(例如,一个或者多个电池)的任何设备。
如上面所描述的,移动计算设备的示例可以包括:个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板计算机、触摸板、便携式计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视、智能设备(例如,智能电话、智能平板或者智能电视)、移动互联设备(MID)、消息传送设备、数据通信设备等。
移动计算设备的示例还可以包括:被配置为由人穿戴的计算机,例如,腕上计算机、手指计算机、戒指计算机、眼镜计算机、皮带夹计算机、臂章计算机、鞋计算机、服装计算机以及其他可穿戴计算机。在实施例中,例如,移动计算设备可以被实现为能够执行计算机应用以及语音通信和/或数据通信的智能电话。虽然某些实施例作为示例可以利用被实现为智能电话的移动计算设备来进行描述,但是可以意识到,还可以使用其他无线移动计算设备来实现其他实施例。实施例不限于该上下文。
如图8所示,设备800可以包括:壳体802、显示器804、输入/输出(I/O)设备806、以及天线808。设备800还可以包括导航特征812。显示器804可以包括用于显示适用于移动计算设备的信息的任何适当的显示单元。I/O设备806可以包括用于将信息键入移动计算设备的任何适当的I/O设备。I/O设备806的示例可以包括:字母数字键盘、数字小键盘、触摸板、输入键、按钮、开关、摇杆开关、麦克风、扬声器、语音识别设备和软件等。信息还可以通过麦克风被键入设备800。这样的信息可以由语音识别设备来进行数字化。实施例不限于该上下文。
附加注释及示例:
示例1可以包括一种系统,其具有:处理器;管线;接收具有第一优先级的上下文的第一端口;接收具有比第一优先级更高的第二优先级的上下文的第二端口;检测在第二端口处接收具有第二优先级的上下文的第二优先级上下文检测模块;以及在第二优先级上下文检测模块已经检测到在第二端口处接收到具有第二优先级的上下文之后暂停管线中的上下文的暂停模块。
示例2可以包括示例1的系统,其进一步包括:存储上下文中的至少一个的状态的管芯上存储装置,其中,管芯上存储装置和处理器位于公共管芯上。
示例3可以包括示例2的系统,其进一步包括:在具有第二优先级的上下文已经完成之后恢复暂停的上下文的恢复模块。
示例4可以包括示例3的系统,其中,模块中的至少一个是在软件中实现的。
示例5可以包括示例1的系统,其中,暂停模块是在硬件中实现的。
示例6可以包括示例1或2的系统,其进一步包括:在已经将上下文提交至第一端口之后抢占在管线中的上下文的抢占模块。
示例7可以包括前述示例中的任何的系统,其进一步包括:可以恢复已经被抢占的上下文的抢占恢复模块。
示例8可以包括示例1、2、4或5中的任何的系统,其进一步包括:可以恢复已经被暂停的上下文的暂停恢复模块。
示例9可以包括前述示例中的任何的系统,其进一步包括三维(3D)图形处理器。
示例10可以包括一种方法,其包括:将第一上下文提交至专用于具有第一优先级的上下文的第一端口;将第一上下文提交至管线;将第二上下文提交至专用于具有第二优先级的上下文的第二端口;以及在第一上下文在管线中完成之前暂停第一上下文。
示例11可以包括示例10的方法,其进一步包括:检测向第二端口提交上下文。
示例12可以包括示例10的方法,其进一步包括:将第一上下文的状态和未完成的工作复制至管芯上存储装置,并且然后将第二上下文提交至管线。
示例13可以包括示例12的方法,其进一步包括:在完成第二上下文之后重新开始第一上下文。
示例14可以包括示例10-13中的任何的方法,其进一步包括:在已经将上下文提交至第一端口之后抢占在管线中的上下文。
示例15可以包括至少一个计算机可读存储介质,其包括:指令的集合,当指令的集合由计算设备执行时,使计算设备:将第一上下文提交至专用于具有第一优先级的上下文的第一端口;将第一上下文提交至管线;将第二上下文提交至专用于具有第二优先级的上下文的第二端口;以及在第一上下文在管线中完成之前暂停第一上下文。
示例16可以包括示例15的至少一个计算机可读存储介质,其中,当执行指令时,使计算设备检测向第二端口提交上下文。
示例17可以包括示例15的至少一个计算机可读存储介质,其中,如果执行指令,则使计算设备将第一上下文的状态和未完成的工作复制至管芯上存储装置,并且然后将第二上下文提交至管线。
示例18可以包括示例15-17中的任何的至少一个计算机可读存储介质,其中,如果执行指令,则使计算设备在第二上下文已经完成之后重新开始第一上下文。
示例19可以包括示例15-17中的任何的至少一个计算机可读存储介质,其中,如果执行指令,则使计算设备在已经将上下文提交至第一端口之后抢占在管线中的上下文。
示例20可以包括一种装置,其包括:接收第一优先级的上下文的第一端口;接收第二优先级的上下文的第二端口;处理上下文的管线;检测向端口提交上下文的上下文检测模块;将上下文发送至管线的调度模块;以及有利于在第二端口接收到的上下文而暂停在第一端口处接收到的上下文的管线处理的暂停模块。
示例21可以包括示例20的装置,其进一步包括:存储上下文的至少一个的状态的管芯上存储器。
示例22可以包括示例20的装置,其进一步包括:使上下文恢复至管线的恢复模块。
示例23可以包括示例20或21中任一示例的装置,其进一步包括:存储关于上下文的状态信息的存储器。
示例24可以包括示例20的装置,其进一步包括图形处理单元。
示例25可以包括示例20-22中任何的装置,其进一步包括:在提交至第二端口的上下文完成之后重新开始暂停的上下文的暂停上下文恢复模块。
示例26可以包括一种装置,其包括:管线;用于提交具有第一优先级的上下文的第一端口;用于提交具有第二优先级的上下文的第二端口;用于检测向第二端口提交上下文的模块;以及在已经检测到向第二端口提交上下文之后用于暂停在管线中的上下文的模块。
示例27可以包括示例26的装置,其中,用于暂停上下文的模块是在软件中实现的。
示例28可以包括示例26的装置,其中,用于暂停上下文的模块是在硬件中实现的。
示例29可以包括示例26的装置,其进一步包括:在其中存储具有第一优先级的上下文的状态的管芯上存储器。
示例30可以包括示例26或29的装置,其进一步包括:在其中存储具有第二优先级的上下文的状态的存储器。
示例31可以包括示例26的装置,其进一步包括:用于存储提交至端口中的一个的上下文的状态的存储器,以及用于使暂停的上下文重新开始的模块。
示例32可以包括示例26-29中任何的装置,其进一步包括:在已经将上下文提交至第一端口之后抢占在管线中的上下文的模块。
示例33可以包括示例32的装置,其进一步包括:恢复已经被抢占的上下文的模块。
示例34可以包括示例26的装置,其进一步包括:恢复已经暂停的上下文的模块。
示例35可以包括示例26的装置,其进一步包括多个管线。
示例36可以包括一种方法,该方法对由处理器处理的任务进行优先排序,所述任务包括提供分别与具有处理优先级的低级别和高级别的任务相对应的第一和第二端口;将提交至第一端口的低优先级任务转发至管线;当任务被提交至第一端口时,通过将可能位于管线中的任何这样的低优先级任务驱逐出管线来抢占当前在管线中执行的任何低优先级任务,并且在其位置提交已经被提交至第一端口的任务;以及当任务被提交至第二端口时,暂停可能位于管线中的任何低优先级任务,并且在其位置提交已经提交至第二端口的任务。
示例37可以包括示例36的方法,其中,提交至第二端口的任务包括图形。
各种实施例均可以使用硬件元件、软件元件或二者组合进行实现。硬件元件的示例可以包括:处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片集等。软件的示例可以包括:软件部件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或者其任何组合。确定实施例是否是使用硬件元件和/或软件元件实现的可以根据任何众多因素有所变化,所述任何众多因素例如是,所需的计算速率、功率等级、耐热性、处理周期预算、输入数据率、输出数据率、存储器资源、数据总线速度、以及其他设计或者性能限制。
至少一个实施例的一个或者多个方面可以由存储在机器可读介质上的代表指令实现,所述机器可读介质表示在处理器内的各种逻辑,当指令由机器读取时,使机器制作逻辑以执行本文所描述的技术。可以将这样的表示(称为“IP核”)存储在有形的机器可读介质上,并且将其提供给各种消费者或者生产设施,以载入到实际上制作逻辑或者处理器的制作机器。
实施例适用于与各种类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于:处理器、控制器、芯片集部件、可编程门阵列(PLA)、存储器芯片、网络芯片等。另外,在一些附图中,信号导线线路用线表示。一些线路可能不同用于指示更多的组成信号路径,用标号来指示大量的组成信号路径,和/或在一端或者多端用箭头来指示主要信息流向。然而,不应该以限制性的方式被解释。确切地说,这样的添加的细节可以与一个或者多个示例性实施例结合使用,从而有助于更容易地理解电路。任何所表示的信号线路,不论是否具有附加的信息,均可以实际上包括一个或者多个信号,所述一个或者多个信号可以在多个方向上穿行,并且可以用任何适当类型的信号方案来进行实现,所述任何适当类型的信号方案例如是,利用差分对实现的数字或者模拟线路、光纤线路、和/或单端线路。
可能已经给出了示例大小/型号/值/范围,但是实施例不限于此。由于制造技术(例如,光刻法)随着时间成熟,期望的是可以制造出更小尺寸的设备。另外,为了简化示出和论述,以及为了不使实施例的某些方面难以理解,公知的至IC芯片和其他部件的电源/接地连接可以或者可以不在图中示出。进一步地,布置可以以框图的形式示出,以便避免使实施例难以理解,以及同样因为相对于这样的框图布置的实施高度取决于实现实施例的平台的具体情况,即,本领域的技术人员应该很好地预先考虑到这样的具体情况。其中,阐述了具体细节(例如,电路)以便描述示例实施例,在具有这些具体细节的变型或者不具有这些具体细节的变型的情况下,均可以实践实施例,这对本领域的技术人员而言是显而易见的。由此,本说明应被视为是示出性的而非限制性的。
某些实施例可以例如使用可以存储指令或者指令的集合的机器或者有形计算机可读介质或者制品来进行实现。如果所述指令或者指令的集合由机器执行,则可以使机器执行根据实施例的方法和/或操作。这样的机器可以包括例如,任何适当的处理平台、计算平台、计算设备、处理设备、计算系统、处理系统、计算机、处理器等,以及可以使用硬件和/或软件的任何适当的组合来实现所述机器。机器可读介质或者制品可以包括例如,任何适当类型的存储器单元、存储器设备、存储器制品、存储器介质、存储设备、存储制品、存储介质和/或存储单元,例如,存储器、可移动或者不可移动介质、可擦除或者不可擦除介质、可写或者可重写介质、数字或者模拟介质、硬盘、软盘、光盘只读存储器(CD-ROM)、可刻录光盘(CD-R)、可重写光盘(CD-RW)、光碟、磁介质、磁光介质、可移动存储卡或者盘、各种类型的数字化通用盘(DVD)、磁带、盒式磁带等。指令可以包括使用任何适当的高级、低级、面向对象的、视觉、编译的和/或解释的编程语言实现的任何适当类型的代码,例如,源代码、编译的代码、解释的代码、可执行代码、静态代码、动态代码、加密代码等。
除非另有特别说明,否则可以意识到的是,例如“处理”、“计算”、“运算”、“确定”之类的术语是指:计算机或者计算系统或者相似的电子计算设备的动作和/或处理,计算机或者计算系统或者相似的电子计算设备将在计算系统的寄存器和/或存储器内的物理量(例如,电子)所表示的数据操纵和/或变换为相似地表示为在计算系统的存储器、寄存器或者其他这样的信息存储装置、传输或者显示设备内的物理量的其他数据。实施例不限于该上下文。
术语“耦合”在本文中可以用于指在所论述部件之间的任何类型的直接或者间接的关系,并且可以应用于电气、机械、流体、光学、电磁、机电或者其他连接。另外,术语“第一”、“第二”等在本文中可以仅用于方便论述,而不携带任何特殊的时间或者顺序意义,除非另有指示。
本领域的技术人员根据前述说明应当意识到,实施例的广泛技术可以按照各种形式来实现。因此,虽然已经结合其特定示例对实施例进行了描述,但是实施例的真实范围不应该限于此,因为对于熟练的技术人员而言,在研究附图、说明和以下的权利要求书之后,其他修改将会变得显而易见。

Claims (23)

1.一种用于计算机中的基于优先级的系统,其包括:
处理器;
管线;
第一端口,用于接收具有第一优先级的上下文;
第二端口,用于接收具有比所述第一优先级更高的第二优先级的上下文;
上下文检测模块,用于检测在所述第二端口处接收到具有所述第二优先级的上下文;
抢占模块,用于抢占在所述管线中的具有所述第一优先级的上下文,其中,抢占在所述管线中的具有所述第一优先级的上下文包括:当所述第一端口接收到具有所述第一优先级的另一上下文时,通过允许已经在所述管线中的具有所述第一优先级的上下文完成执行来驱逐出所述管线;
暂停模块,用于在所述上下文检测模块已经检测到在所述第二端口处接收到具有所述第二优先级的上下文之后,在具有所述第一优先级的上下文在所述管线中完成之前并且在不驱逐出所述管线的情况下,暂停在所述管线中的具有所述第一优先级的上下文;以及
管芯上存储装置,用于存储暂停的上下文的状态。
2.根据权利要求1所述的系统,其中,所述管芯上存储装置和所述处理器位于公共管芯上。
3.根据权利要求2所述的系统,其进一步包括:恢复模块,用于在具有所述第二优先级的上下文已经被完成之后恢复暂停的上下文。
4.根据权利要求3所述的系统,其中,所述模块中的至少一个模块是用软件实现的。
5.根据权利要求1所述的系统,其中,所述暂停模块是用硬件实现的。
6.根据权利要求1至5中的任一项所述的系统,其进一步包括:抢占恢复模块,用于恢复已经被抢占的上下文。
7.根据权利要求1、2、4或者5中的任一项所述的系统,其进一步包括:暂停恢复模块,用于恢复已经被暂停的上下文。
8.根据权利要求1所述的系统,其包括三维(3D)图形处理器。
9.一种用于计算机中的基于优先级的方法,其包括:
将第一上下文提交至专用于具有第一优先级的上下文的第一端口;
将所述第一上下文提交至管线;
当另一上下文被提交至所述第一端口时,通过驱逐出管线以允许已经在所述管线中的所述第一上下文完成执行来抢占在所述管线中的所述第一上下文;
将第二上下文提交至专用于具有第二优先级的上下文的第二端口,其中,所述第二优先级高于所述第一优先级;
响应于将所述第二上下文提交至所述第二端口,在所述第一上下文在所述管线中完成之前,暂停已经在所述管线中的所述第一上下文,其中,所述管线没有被驱逐出;以及
保存暂停的上下文的状态。
10.根据权利要求9所述的方法,其进一步包括:检测向所述第二端口提交所述第二上下文。
11.根据权利要求9所述的方法,其进一步包括:将所述第一上下文的状态和未完成的工作复制至管芯上存储装置,并且然后将所述第二上下文提交至所述管线。
12.根据权利要求11所述的方法,其进一步包括:在所述第二上下文已经被完成之后重新开始所述第一上下文。
13.一种用于计算机中的基于优先级的装置,其包括:
存储器,其上存储有指令;以及
处理器,其与所述存储器能够通信地耦合,所述指令在由所述处理器执行时使得所述处理器执行根据权利要求9-12中的任意一项所述的方法。
14.一种用于计算机中的基于优先级的装置,其包括:
用于将第一上下文提交至专用于具有第一优先级的上下文的第一端口的单元;
用于将所述第一上下文提交至管线的单元;
用于当另一上下文被提交至所述第一端口时,通过驱逐出管线以允许已经在所述管线中的所述第一上下文完成执行来抢占在所述管线中的所述第一上下文的单元;
用于将第二上下文提交至专用于具有第二优先级的上下文的第二端口的单元,其中,所述第二优先级高于所述第一优先级;
用于响应于将所述第二上下文提交至所述第二端口,在所述第一上下文在所述管线中完成之前,暂停已经在所述管线中的所述第一上下文的单元,其中,所述管线没有被驱逐出;以及
用于保存暂停的上下文的状态的单元。
15.根据权利要求14所述的装置,其进一步包括:用于检测向所述第二端口提交所述第二上下文的单元。
16.根据权利要求14所述的装置,其进一步包括:用于将所述第一上下文的状态和未完成的工作复制至管芯上存储装置,并且然后将所述第二上下文提交至所述管线的单元。
17.根据权利要求16所述的装置,其进一步包括:用于在所述第二上下文已经被完成之后重新开始所述第一上下文的单元。
18.一种计算机可读存储介质,其上存储有指令,所述指令在被处理器执行时使得所述处理器执行根据权利要求9-12中的任意一项所述的方法。
19.一种用于计算机中的基于优先级的装置,其包括:
第一端口,用于接收具有第一优先级的上下文;
第二端口,用于接收具有第二优先级的上下文;
管线,用于处理上下文;
上下文检测模块,用于检测向所述端口提交上下文;
调度模块,用于将上下文发送至所述管线;
抢占模块,用于抢占在所述管线中的具有所述第一优先级的上下文,其中,抢占在所述管线中的具有所述第一优先级的上下文包括:当所述第一端口接收到具有所述第一优先级的另一上下文时,通过允许已经在所述管线中的具有所述第一优先级的上下文完成执行来驱逐出所述管线;
暂停模块,用于当在所述第二端口处接收到具有所述第二优先级的上下文时,在具有所述第一优先级的上下文在所述管线中完成之前并且在不驱逐出所述管线的情况下,暂停所述管线处理具有所述第一优先级的上下文,其中,所述第二优先级高于所述第一优先级;以及
管芯上存储装置,用于存储暂停的上下文中的至少一个上下文的状态。
20.根据权利要求19所述的装置,其进一步包括:恢复模块,用于使上下文恢复至所述管线。
21.根据权利要求19所述的装置,其进一步包括:存储器,用于存储关于上下文的状态信息。
22.根据权利要求19所述的装置,其进一步包括图形处理单元。
23.根据权利要求19或20所述的装置,其进一步包括:暂停上下文恢复模块,用于在提交至所述第二端口的上下文完成之后重新开始暂停的上下文。
CN201510088772.XA 2014-03-27 2015-02-26 基于优先级的上下文抢占 Active CN104951358B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/227,692 US9396032B2 (en) 2014-03-27 2014-03-27 Priority based context preemption
US14/227,692 2014-03-27

Publications (2)

Publication Number Publication Date
CN104951358A CN104951358A (zh) 2015-09-30
CN104951358B true CN104951358B (zh) 2019-01-22

Family

ID=54166027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510088772.XA Active CN104951358B (zh) 2014-03-27 2015-02-26 基于优先级的上下文抢占

Country Status (5)

Country Link
US (1) US9396032B2 (zh)
KR (1) KR101666416B1 (zh)
CN (1) CN104951358B (zh)
DE (1) DE102015002365A1 (zh)
TW (1) TWI546737B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9927784B2 (en) * 2014-12-04 2018-03-27 At&T Intellectual Property I, L.P. Ubiquitous computing methods and apparatus
US9842376B2 (en) * 2015-09-29 2017-12-12 Qualcomm Incorporated Graphics processing unit preemption with pixel tile level granularity
US10134103B2 (en) 2015-10-23 2018-11-20 Qualcomm Incorporated GPU operation algorithm selection based on command stream marker
US10176548B2 (en) * 2015-12-18 2019-01-08 Ati Technologies Ulc Graphics context scheduling based on flip queue management
US10210593B2 (en) * 2016-01-28 2019-02-19 Qualcomm Incorporated Adaptive context switching
US10163184B2 (en) * 2016-08-17 2018-12-25 Adobe Systems Incorporated Graphics performance for complex user interfaces
US10929944B2 (en) * 2016-11-23 2021-02-23 Advanced Micro Devices, Inc. Low power and low latency GPU coprocessor for persistent computing
US10026145B2 (en) 2016-12-13 2018-07-17 Qualcomm Incorporated Resource sharing on shader processor of GPU
US10373287B2 (en) * 2017-08-18 2019-08-06 Apple Inc. Fast GPU context switch
US11609791B2 (en) * 2017-11-30 2023-03-21 Advanced Micro Devices, Inc. Precise suspend and resume of workloads in a processing unit
CN109936604B (zh) * 2017-12-18 2022-07-26 北京图森智途科技有限公司 一种资源调度方法、装置和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1072788A (zh) * 1991-11-27 1993-06-02 国际商业机器公司 动态多方式并行处理器阵列体系结构的计算机系统
US5592678A (en) * 1991-07-23 1997-01-07 International Business Machines Corporation Display adapter supporting priority based functions
CN102346689A (zh) * 2000-01-21 2012-02-08 英特尔公司 用于暂停处理器中执行过程的方法和装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100214644B1 (ko) * 1996-12-31 1999-08-02 구자홍 프로세서의 메모리 다중 액세스 회로
US6738675B2 (en) * 2000-12-30 2004-05-18 Intel Corporation Method, apparatus, and system to reduce microprocessor power dissipation
US6915414B2 (en) * 2001-07-20 2005-07-05 Zilog, Inc. Context switching pipelined microprocessor
US7434223B2 (en) * 2003-05-22 2008-10-07 Agere Systems Inc. System and method for allowing a current context to change an event sensitivity of a future context
US8547339B2 (en) 2008-01-04 2013-10-01 Tactus Technology, Inc. System and methods for raised touch screens
EP2356567A2 (en) * 2008-12-08 2011-08-17 Kpit Cummins Infosystems Ltd. Method for reorganizing tasks for optimization of resources
US8949838B2 (en) * 2009-04-27 2015-02-03 Lsi Corporation Multi-threaded processing with hardware accelerators
US8352689B2 (en) * 2009-11-30 2013-01-08 Lsi Corporation Command tag checking in a multi-initiator media controller architecture
US8578138B2 (en) * 2009-08-31 2013-11-05 Intel Corporation Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
US20130019052A1 (en) * 2011-07-14 2013-01-17 Vinay Ashok Somanache Effective utilization of flash interface
US20130070513A1 (en) * 2011-09-16 2013-03-21 Advanced Micro Devices, Inc. Method and apparatus for direct backup of memory circuits
US8719507B2 (en) * 2012-01-04 2014-05-06 International Business Machines Corporation Near neighbor data cache sharing
US9524263B2 (en) * 2012-06-29 2016-12-20 Intel Corporation Method and apparatus for bus lock assistance
US9104421B2 (en) * 2012-07-30 2015-08-11 Nvidia Corporation Training, power-gating, and dynamic frequency changing of a memory controller
US9710874B2 (en) * 2012-12-27 2017-07-18 Nvidia Corporation Mid-primitive graphics execution preemption
US9703708B2 (en) * 2013-09-27 2017-07-11 Intel Corporation System and method for thread scheduling on reconfigurable processor cores
US10026714B2 (en) * 2014-02-14 2018-07-17 Nxp Usa, Inc. Integrated circuit device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592678A (en) * 1991-07-23 1997-01-07 International Business Machines Corporation Display adapter supporting priority based functions
CN1072788A (zh) * 1991-11-27 1993-06-02 国际商业机器公司 动态多方式并行处理器阵列体系结构的计算机系统
CN102346689A (zh) * 2000-01-21 2012-02-08 英特尔公司 用于暂停处理器中执行过程的方法和装置

Also Published As

Publication number Publication date
TW201537459A (zh) 2015-10-01
DE102015002365A1 (de) 2015-10-15
TWI546737B (zh) 2016-08-21
CN104951358A (zh) 2015-09-30
US20150277981A1 (en) 2015-10-01
KR101666416B1 (ko) 2016-10-14
US9396032B2 (en) 2016-07-19
KR20150112771A (ko) 2015-10-07

Similar Documents

Publication Publication Date Title
CN104951358B (zh) 基于优先级的上下文抢占
CN110582785B (zh) 配置用于执行层描述符列表的具有功率效率的深度神经网络模块
US11615284B2 (en) Efficient transferring of human experiences to robots and other autonomous machines
US10796397B2 (en) Facilitating dynamic runtime transformation of graphics processing commands for improved graphics performance at computing devices
US20220284539A1 (en) Method and apparatus for efficient loop processing in a graphics hardware front end
CN104952033B (zh) 分布式图形处理器分级中的系统一致性
CN110045960B (zh) 基于芯片的指令集处理方法、装置及存储介质
CN104951263B (zh) 避免向显示器发送未改变的区域
CN104704469B (zh) 动态地重新平衡图形处理器资源
US20160364829A1 (en) Facilitating efficient graphics command generation and execution for improved graphics performance at computing devices
US20170069054A1 (en) Facilitating efficient scheduling of graphics workloads at computing devices
CN104781845B (zh) 处理视频内容
CN107004253A (zh) 用于增强的图像处理并行性的具有等价类的基于图形的应用程序编程接口架构
CN104035540B (zh) 在图形渲染期间降低功耗
WO2017107118A1 (en) Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment
US20170169537A1 (en) Accelerated touch processing in computing environments
CN108352052A (zh) 用于在计算设备处高效处理图形数据的三重缓冲常量缓冲器
CN104346224B (zh) 使用组页面错误描述符来处理上下文切换和进程终止
US10297002B2 (en) Virtual touch pad method and apparatus for controlling an external display
US20160364827A1 (en) Facilitating configuration of computing engines based on runtime workload measurements at computing devices
US10410311B2 (en) Method and apparatus for efficient submission of workload to a high performance graphics sub-system
CN107408293A (zh) 支持计算装置处的图形命令流中对命令缓冲器的多级嵌套
CN116206042A (zh) 空间哈希一致采样
CN114627234A (zh) 用于渲染逼真光照的自适应时间图像滤波
CN110050243A (zh) 通过使用自主机器中的中间层特征的增强神经回归进行相机重新定位

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant