与图形相关的工作负荷上的功率节省的技术的制作方法

文档序号:6539908阅读:148来源:国知局
与图形相关的工作负荷上的功率节省的技术的制作方法
【专利摘要】一种与图形相关的工作负荷上的功率节省的技术。概括地说,各个实施例涉及一种装置、方法和其它技术,其用于:由图形驱动器监测图形处理单元(GPU)的任务;确定任务是否完成;如果任务没有完成,则确定任务的平均任务完成时间;并且如果平均任务完成时间大于休眠状态时间,则使处理电路的休眠状态能够持续休眠状态时间那么长。
【专利说明】与图形相关的工作负荷上的功率节省的技术

【技术领域】
[0001]概括地说,本文中描述的实施例涉及计算设备上的图形处理。具体地说,实施例涉及在与图形相关的操作、过程或任务的处理期间使能休眠状态时段。

【背景技术】
[0002]许多应用需要计算机系统中的图形处理单元(GPU)对图形密集型过程或操作进行处理。GPU通常是被优化以执行与图形相关的操作的任意处理单元以及视频解码器引擎和帧相关引擎。应用可以发送这些与图形相关的操作并且等待这些与图形相关的操作的完成和结果。应用可以通过应用编程接口(API)函数调用来向GPU发送与图形相关的操作,然后核查与图形相关的操作的状态。应用可以循环地核查状态,直到与图形相关的操作完成为止。让应用循环地核查与图形相关的操作的完成状态会消耗大量功率,并且由于处理电路与GPU之间的功率节流还会影响性能。本文中描述的实施例是关于这些和其它考虑的。

【专利附图】

【附图说明】
[0003]图1示出了第一系统的实施例。
[0004]图2示出了第二系统的实施例。
[0005]图3示出了第一逻辑流程的实施例。
[0006]图4示出了第二逻辑流程的实施例。
[0007]图5示出了第一信号图的实施例。
[0008]图6示出了第三逻辑流程的实施例。
[0009]图7示出了第一计算体系结构的实施例。

【具体实施方式】
[0010]在各个实施例中,一个或多个应用可以向GPU发送与图形相关的操作或任务来进行处理。与图形相关的操作或任务可以通过API被发送到GPU,并且由图形驱动器监测。一个或多个应用可以等待处理的完成,并且当任务在等待被处理或者正在由GPU处理时,可以请求任务的完成状态。在各个实施例中,一个或多个应用可以循环地或者自旋循环(spinloop)地经由API从图形驱动器请求任务的完成状态,以便确定特定的任务是否完成。一个或多个应用可以使用该技术来确定发送到GPU来进行处理的任意与图形相关的操作或任务的完成状态。例如,应用可以使用该技术来确定特定的绘制调用在3维(3D)场景中是否是完全封闭的,或者GPU是否完成了处理3D操作(诸如事件查询)。实施例不局限于此,并且在本公开内容中会预料到可以由GPU处理的任何与图形相关的操作。
[0011]如同之前讨论的,让应用循环地核查与图形相关的操作的完成状态会消耗大量功率,这是因为设备和/或处理电路不能进入休眠状态并且总是以满处理功率来进行处理。此外,由于处理电路与GPU之间的功率节流,让应用循环地核查完成状态还会会影响性能。各个实现涉及解决这些和其它问题。
[0012]在各个实现中,可以指示图形驱动器监测每个与图形相关的操作或任务的完成时间,并且基于平均完成时间为处理电路增加休眠时间。例如,如果GPU平均用10毫秒来完成与图形相关的操作或任务,那么图形驱动器可以提供指令来以I毫秒的间隔将处理电路置于休眠,直到与图形相关的操作或任务完成为止。通过以I毫秒的间隔将处理电路置于休眠状态,处理电路可以在不降低性能的前提下在最大量的时间期间处于休眠状态。此外,应用可以继续并行地处理其它任务或工作。启用处理电路的休眠状态通过在处于休眠状态时不对操作进行处理来节省功率。在各个实施例中,可以仅在长自旋循环期间(例如,当处理电路功率更多地浪费在执行自旋循环上时)将处理电路置于休眠状态。这确保了在不影响应用的性能的前提下可以节省最大量的功率。
[0013]在各个实施例中,可以主动地向图形驱动器通知与图形相关的操作或任务完成。例如,当任务完成时,内核模式驱动程序可以经由操作系统事件通知主动向用户模式驱动器进行通知。添加的特征具有以下益处:通过在休眠周期完成之前唤醒用户模式驱动器和处理电路,来降低当任务在休眠状态中间完成时引起的任何性能损失。在本文中进一步详细讨论了各个实施例和实现。
[0014]使用对本文中使用的符号和术语的一般参考,下面的【具体实施方式】可以从在计算机或计算机网络上执行的程序过程的方面来呈现。本领域的技术人员使用这些程序性的描述和表示来向本领域的其它技术人员最有效地传达他们工作的实质。
[0015]过程在这里并且通常被设想为导致期望结果的前后一致的操作序列。这些操作是需要对物理量进行物理处理的操作。这些量通常(虽然不一定)采取能够被存储、传输、组合、比较以及以其它方式处理的电、磁或光信号的形式。主要是为了通用的原因,将这些信号称为比特、值、元件、符号、字符、术语、数字等有时证明是方便的。然而,应当注意的是,所有这些以及类似术语要与适当的物理量相关联,并且仅是应用于那些量的方便标签。
[0016]此外,执行的处理通常指的是诸如加、比较之类的术语,其通常与操作人员执行的智力操作相关联。本文中描述的在形成一个或多个实施例的一部分的操作中的任何一个操作中,在多数情况下,操作人员的这种能力不是必要的或者期望的。而是,这些操作是机器操作。用于执行各个实施例的操作的有用机器包括通用数字计算机或类似的设备。
[0017]各个实施例还涉及用于执行这些操作的装置或系统。该装置可以针对所需的目的来专门构建,或者其可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。本文中呈现的过程并不固有地涉及特定的计算机或其它装置。各种通用机器可以与按照本文中的教导所书写的程序一起使用,或可以证明构建更加专用的装置来执行所需的方法步骤是便利的。根据所给出的描述,用于各种这些机器的所需结构将是明显的。
[0018]现在参照附图,其中贯穿全文使用相同的参考数字来表示相同的元件。在下面的描述中,出于解释的目的,阐述了大量的具体细节以便提供对其的彻底理解。然而,显而易见的是,可以在不使用这些具体细节的情况下来实现这些新颖的实施例。在其它实例中,为了便于描述这些实施例,以框图的形式示出了公知的结构和设备。意图是覆盖与所要求保护的主题相一致的所有的修改、等价物和替代物。
[0019]图1示出了计算系统(具体而言,计算系统105)的一个实施例。在各个实施例中,计算系统105可以代表适于与本文中描述的一个或多个实施例(诸如图3的逻辑流程300、图4的逻辑流程400和/或图6的逻辑流程600) —起使用的计算系统。实施例不局限于。
[0020]如图1中所示,计算系统105可以包括多个元件。根据给定的一组设计或性能约束的需要,可以使用一个或多个电路、组件、寄存器、处理器、软件子例程、模块或它们的任意组合来实现一个或多个元件。虽然图1通过示例的方式以某种拓扑结构示出了有限数量的元件,但可以明白的是,根据给定的实现的需要,可以在计算系统105中使用任何合适的拓扑结构中的更多或更少的元件。实施例不局限于该上下文。
[0021]在各个实施例中,计算系统105可以包括处理电路102。处理电路102可以是任意类型的计算元件中的一个或多个,诸如但不限于:微处理器、处理器、中央处理单元、数字信号处理单元、双核处理器、移动设备处理器、台式处理器、单核处理器、片上系统(SoC)设备、复杂指令集计算(Cl SC )微处理器、精简指令集(RI SC )微处理器、超长指令字(VLIW )微处理器、或单个芯片或集成电路上的任何其它类型的处理器或处理电路。处理电路102可以经由互连125 (诸如,一个或多个总线、控制线和数据线)连接到或者与计算系统的其它元件进行通信。
[0022]在一个实施例中,计算系统105可以包括耦接到处理电路102的存储器单元104。根据给定的实现的需要,存储器单元104可以经由互连125,或者通过处理电路102与存储器单元104之间的专用通信总线耦接到处理电路102。可以使用能够存储数据的任意机器可读或计算机可读介质(包括易失性和非易失性存储器)来实现存储器单元104。在一些实施例中,机器可读或计算机可读介质可以包括非临时性介质。实施例不局限于该上下文。
[0023]存储器单元104可以瞬间地、暂时地或永久地存储数据。存储器单元104为计算系统105存储指令和数据。当处理电路102执行指令时,存储器单元104还可以存储临时变量或其它中间信息。存储器单元104不局限于存储上面所讨论的数据;存储器单元104可以存储任意类型的数据。
[0024]在各个实施例中,计算系统105可以包括显示单元106。显示单元106可以构成能够显示从处理电路102接收到的信息的任意显示设备。例如,显示单元106可以包括下列各项中的至少一种:液晶显示器(IXD )、薄膜晶体管-1XD (TFT-1XD )、有机发光二极管(OLED )、柔性显示器、三维(3D)显示器和投影仪。显示单元106可以显示与控制计算系统105的功能相关联的用户接口(UI)或图形用户接口(GUI)。根据各个实施例,计算机设备可以包括两个或更多个显示单元。例如,在一个实施例中,计算设备可以包括两个IXD显示器。
[0025]在各个实现中,计算系统105可以包括电池108。电池108可以是用于为计算系统105存储电力的任何类型的电池,包括但不限于:锂离子电池、镍镉电池、氯化锌电池等。电池可以是可再充电的。在一些实施例中,计算系统105可以具有超过一个的电池。在一些实施例中,电池可以是可拆卸的。在其它实施例中,电池可以是固定的。
[0026]在各个实施例中,计算系统105可以包括存储器110。存储器110可以实现为非易失性存储设备,诸如但不限于:磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附加存储设备、闪存、电池备份的SDRAM (同步DRAM)和/或网络可访问的存储设备。在实施例中,例如,当包括多个硬盘驱动器时,存储器110可以包括用于针对宝贵的数字媒体增加存储性能加强保护的技术。存储器110的其它示例可以包括:硬盘、软盘、压缩盘只读存储器(CD-ROM)、可记录压缩盘(⑶-R)、可重写压缩盘(⑶-RW)、光盘、磁介质、磁光介质、可移动存储卡或盘、各种类型的DVD设备、磁带设备、盒式磁带设备等。实施例不局限于该上下文。
[0027]在一些实施例中,计算系统105可以包括一个或多个I/O适配器112。I/O适配器112的示例可以包括:通用串行总线(USB)端口 /适配器、IEEE1394火线端口 /适配器等。实施例不局限于该上下文。
[0028]在各个实施例中,计算系统105可以包括收发机114。收发机114可以包括能够使用各种合适的无线通信技术来发送和接收信号和信息的一个或多个无线电单元。这些技术可以涉及跨越一个或多个无线网络的通信。示例性无线网络包括(但不限于)无线局域网(WLAN)、无线个人域网(WPAN)、无线城域网(WMAN)、蜂窝网络和卫星网络。在跨越这些网络的通信中,收发机114可以根据任意版本的一个或多个可适用标准来进行操作。实施例不局限于该上下文。
[0029]在各个实施例中,计算系统105可以包括图形处理单元(GPU)116。GPU116可以包括被优化以执行与图形相关的操作的任意处理单元、逻辑单元或电路以及视频解码器引擎和帧相关引擎。GPU116可以用于为各种应用(诸如视频游戏、图形、计算机辅助设计(CAD)、仿真和可视化工具、成像等)渲染2维(2-D)和/或3维(3-D)图像。各个实施例不局限于此;GPU116可以处理任意类型的图形数据(诸如图片、视频、程序、动画、3D、2D等)。
[0030]图2示出了用于为应用处理图形的系统200的第一框图。如图2中所示,系统200可以包括用于处理图形和与图形相关的操作的多个模块和元件。在各个实施例中,系统200可以包括应用202、应用编程接口(API)模块204、图形驱动器206、图形处理单元(GPU)208和GPU工作队列210。在各个实施例中,GPU工作队列210可以存储要由GPU208完成或处理的一个或多个任务212。系统200的模块和元件可以经由一个或多个软件和/或硬件互连220 (诸如一个或多个总线、迹线、通路、等等)来互相通信。各个模块和元件可以经由任意软件通信方法(诸如消息、HTML消息、XML消息、呼叫、函数调用、中间件、通用对象请求代理体系结构(CORBA)等)来互相传递信息。
[0031]系统200可以不局限于图2中所示的这些具体的模块和元件。例如,系统200可以包括用于处理图形和与图形相关的操作的任意数量的模块和元件。在各个实施例中,系统200的某些模块和元件可以操作在计算系统105上或者结合计算系统105来操作。例如,系统200的模块和元件可以存储在存储器104中并且由处理电路102来处理。
[0032]应用202可以是任何类型的应用或软件。在各个实施例中,应用202可以是企业软件、会计软件、办公套件、绘图软件、游戏软件、媒体软件、基于Web的应用、计算机系统软件、教育软件、仿真软件、内容访问软件、媒体开发软件、产品工程软件等。应用202不局限于此;应用202可以是用于在计算系统上处理数据的任意类型的应用或软件。
[0033]应用编程接口(API)模块204可以是用于在系统202的模块和元件之间处理图形信息的任意类型的API。例如,在各个实施例中,API模块204在应用202与图形驱动器模块206之间提供抽象层,从而使得应用和图形驱动器模块可以在彼此之间进行通信。API模块204可以通过各种消息或调用(诸如函数调用)启用系统200的模块和元件之间的通信。在各个实施例中,API模块204可以是诸如Direct3D?或OpenGL?之类的的图形API。
[0034]图形驱动器模块206可以是提供在系统200上操作的图形硬件与软件之间的接口的任意类型的图形驱动器软件。例如,图形驱动器模块206可以为图形处理单元208与系统200的其它模块和元件之间的接口使能用它们之间的通信。然而,图形驱动器模块206不局限于此。例如,图形驱动器模块206可以使能图形处理单元208与在系统200上操作的操作系统(未示出)之间的通信。在各个实施例中,图形驱动器模块206可以从在计算系统105上执行的应用202接收函数调用。图形驱动器模块206还可以将函数调用路由到GPU208,从而使得图形可以由GPU208呈现。在各个实施例中,图形驱动器模块206可以存储在存储器104中,并且由处理电路102来处理。然而,图形驱动器模块206不局限于此。图形驱动器模块206可以存储在任何类型的存储设备中,并且可以由任何类型的处理设备来处理。
[0035]在各个实施例中,图形驱动器模块206可以是用户模式驱动器。用户模式驱动器运行在非特权处理器模式中,在非特权处理器模式中执行其它应用代码(包括受保护的子系统代码)。除了通过调用API (诸如API204),用户模式驱动器不能访问系统数据。然后,API调用系统服务。然而,各个实施例不局限于此;图形驱动器模块206可以是工作在一起的用户模式驱动器与内核模式驱动器的结合。内核模式驱动器作为操作系统的决策指令(executive)的一部分来运行,其是支持一个或多个受保护的子系统的底层操作系统组件。
[0036]图形处理单元(GPU)208可以是用于处理图形的任何类型的处理电路。GPU208可以包含并发地执行独立操作的多个处理单元。GPU208可以实现用于对从应用接收的任务进行处理的多个图形原始操作。在各个实施例中,GPU208可以处理任何类型的图形任务,包括但不限于:绘制、纹理化、渲染3维(3-D)图形、渲染2维(2-D)图形、矩阵计算和向量计算。
[0037]在各个实施例中,GPU208可以渲染帧数据。例如,GPU208可以从一个或多个应用(诸如应用202)接收帧数据。GPU208接收(例如,全部或部分由运行在处理电路102上的应用生成的)帧数据。然后,GPU208可以渲染帧数据以便生成可以提供给显示设备(诸如显示单元106)的经渲染的帧(例如,与视频帧或图形相对应的数字像素信息文件)。然而,GPU208不局限于此。GPU208可以处理从应用或操作系统接收的任何类型的图形信息。
[0038]GPU工作队列210可以是用于存储要由GPU208完成的任务的任何类型的缓冲器或存储器。在一些实施例中,GPU工作队列210可以是用于存储任务的任何种类的数据结构,诸如环形缓冲器、比特数组、动态数组、哈希表、哈希数组树、稀疏数组等。GPU工作队列210可以是处理电路102留出的用于存储要由GPU208完成的任务的存储器单元104的任意部分。在其它实施例中,GPU工作队列210可以是用于存储GPU任务的单独的存储器(未示出)。在一些实例中,GPU工作队列210可以是超过一个的存储器或缓冲器。
[0039]GPU工作队列210可以存储要由GPU208获取的任务。通常,图形驱动器模块206将任务插入工作队列210。然而,各个实施例不局限于此。任务可以经由计算系统的其它元件(诸如操作系统)插入GPU工作队列210。
[0040]在各个实施例中,GPU208可以从GPU工作队列210异步地获取接下来要处理的任务。接下来要处理的任务的选择可以基于由处理电路102规定的优先级排序。在一些实例中,处理电路102可以针对每一个任务来规定优先级。在其它实例中,处理电路102可以规定与存储器相关联的优先级,并且在该存储器中排队的任何任务将具有与该存储器相关联的优先级。
[0041]任务212可以是要由GPU208完成的任何类型的任务。在各个实施例中,任务212可以是任何类型的与图形相关的任务,包括但不限于:绘制任务、纹理化任务、光栅化任务、像素处理任务、阴影化任务、渲染3维(3-D)图像或图形、渲染2维(2-D)图像和图形、矩阵计算、向量计算等。
[0042]在各个实施例中,可以从应用202接收任务212来由GPU208进行处理。任务212可以是GPU208经由API204接收的。可以向任务212分配用于处理的优先级并将其插入要被处理的GPU工作队列212。例如,可以将任务212插入GPU工作队列210,从而使得在处理任务212之前必须对5个其它任务212进行处理。在其它实施例中,可以立即处理任务。
[0043]各个模块和元件可以经由互连220来互相通信。例如在各个实施例中,应用202可以向API204发送函数调用,以便确定由GPU208处理的任务212的完成状态。然后,API204可以经由另一个函数调用与图形驱动器206通信,以便获取该特定任务212的完成状态。图形驱动器模块206可以确定任务212的状态,并且向API208返回该完成状态,API208进而向应用202返回该完成状态。应用202可以连续地或者以特定的间隔循环地请求完成状态,直到该状态指示任务212完成为止。特定的间隔可以是由应用202和/或图形处理模块206定义的任意间隔。下面将参照图3对该实施例和其它实施例进行更详细的讨论。
[0044]图3示出了用于由GPU处理任务的第一逻辑流程300。为了清楚的目的,参照图1和图2的系统100和系统200来讨论该逻辑流程。在框305处,应用编程接口(API)204可以从应用202接收对任务212的完成状态的请求。如同之前所讨论的,任务212可以是从应用202发送到GPU208来进行处理的任意与图形相关的任务。API204可以以查询对象的形式通过函数调用从应用202接收对完成状态的请求。API204可以向图形驱动器模块206传送该请求,以便确定任务212的完成状态。API204可以从图形驱动器模块206接收完成或没有完成的结果,并且向应用202返回该结果。在各个实施例中,图形驱动器模块206可以向API204返回没有完成的结果,直到任务212由GPU208完全处理为止。然后,API204可以向应用202返回该结果。在该示例中,对图形驱动器模块线程和请求完成状态线程进行处理的处理电路102仍然在自旋循环中,直到任务212被处理并且完成结果被返回为止。下面将对该实施例和替换的实施例进行更详细的讨论。
[0045]在框310处,图形驱动器模块206确定任务212是否完成。图形驱动器模块206可以经由互连220与GPU208通信,以便确定GPU208是否已经处理了任务212。图形驱动器模块206可以以任意方式(诸如通过函数调用或低级指令)与GPU208通信。此外,图形驱动器模块206可以直接地或者经由操作系统(未示出)与GPU208通信。图形驱动器模块206不局限于此。图形驱动器模块206可以通过任意数量的互连以任意方式与GPU208通信,以便接收任务212的完成状态。图形驱动器模块206可以从GPU208接收指示任务212完成或没有完成的结果的信息。然后,可以基于从GPU208接收到的信息将完成或没有完成的结果发送到API204和应用202。
[0046]如果完成了任务212,那么在框315处确定任务完成时间和平均任务完成时间。在各个实施例中,图形驱动器模块206可以计算任务完成时间和平均任务完成。然而,在其它实施例中,该确定可以是由处理电路、控制器、不同的模块做出的。例如,在各个实施例中,任务完成时间和平均任务完成可以由GPU208来确定或计算。各个实施例不局限于此。
[0047]可以基于所确定的任务开始时间来计算任务完成时间。如同下面参照框325进一步讨论的,可以在图形驱动器模块206第一次确定任务212没有完成时保存任务开始时间。除了确定任务开始时间以外,图形驱动器模块206和/或GPU208可以确定任务结束时间。可以通过确定任务开始时间和任务结束时间之间的差来计算任务完成时间。在各个实施例中,随后可以将任务完成时间保存在存储器或存储设备中,并且用于进一步的处理。任务完成时间还可以用于确定平均任务完成时间。
[0048]平均任务完成时间可以是由GPU208处理的所有任务的任务完成时间的移动平均(running average)。例如,图形驱动器模块206可以确定并保持由GPU208完成的所有任务的平均任务完成时间。在一些实施例中,不同类型任务的完成时间可能需要不同的时间量。因此,也可以针对相似任务或任务类型中的每一个确定并保持平均任务完成时间。例如,图形驱动器模块206可以确定并保持GPU208处理的不同任务或任务类型(诸如绘制任务、纹理化任务、光栅化任务、像素处理任务、阴影化任务、渲染3维(3-D)图像或图形、渲染2维(2-D)图像和图形、矩阵计算、向量计算)的平均任务完成时间。各个实施例不局限于此。图形驱动器模块206和/或GPU208可以确定并保持任意数量的平均任务完成时间。
[0049]如果在框310处没有完成任务212,那么在框320处,图形驱动器模块208确定是否这是任务212被确定没有完成的第一实例。如同之前所讨论的,完成状态可以被请求一次或多次,并且图形驱动器模块206可以确定或查询GPU208来确定任务212是否完成。如果图形驱动器模块206确定这是任务212被确定没有完成的第一实例,那么在框325处,图形驱动器模块206将任务开始时间保存在存储器或存储设备中。
[0050]如果图形驱动器模块206确定这不是任务212被确定没有完成的第一实例,那么在框330处,图形驱动器模块206确定任务212的平均任务完成时间是否大于休眠状态时间。在各个实施例中,平均任务完成时间可以是所有之前完成的任务的平均任务完成时间。然而,在其它实施例或同一个实施例中,平均任务完成时间可以是任务或特定的任务类型(诸如绘制任务、纹理化任务、光栅化任务、像素处理任务、阴影化任务、渲染3维(3-D)图像或图形、渲染2维(2-D)图像和图形、矩阵计算、向量计算等)的平均任务完成时间。例如,图形驱动器模块206可以确定正被处理的任务类型,并且使用该特定类型任务的平均任务完成时间来进行比较。
[0051]在一些实例中,休眠状态时间可以是预定的。休眠状态时间可以基于特定任务的平均任务完成时间的分数。例如,如果平均任务完成时间为10毫秒(ms),那么休眠状态时间可以被设置为Ims或者百分之10。可以设置休眠状态时间,从而使得其在不影响系统性能的前提下通过节省处理电路功率而有利于系统。在各个实施例中,休眠状态时间可以在毫秒数量级上进行设置。然而,在各个实施例中,休眠状态时间受限于此。可以以任何时间来设置休眠状态时间,从而使得其在不影响系统性能的前提下通过节省处理电路功率而有利于系统。
[0052]如果在框330处,图形驱动器模块206确定平均任务完成时间大于休眠状态时间,那么在框335处,图形驱动器模块206可以指示或使得处理电路102能够在休眠状态时间内进行休眠。在休眠状态时间期间,处理电路102可以进入休眠或低功率状态。当处理电路102处于休眠状态时,处理电路可以将正在被处理电路102处理的各个线程置于休眠。例如,处理电路102可以将用于监测或确定任务212的完成状态的图形驱动器模块线程置于休眠。
[0053]在各个实施例中,系统可以将处理电路102置于由高级配置和功率接口(ACPI)规范定义的休眠状态中的一种。例如,可以将处理电路置于功率状态C1-C6中的一种。ACPI将Cl定义为:处理电路没有执行指令但基本上可以瞬间返回到执行状态的一种状态,将C2定义为:处理电路保持所有的软件可见状态但可能需要较长时间苏醒的一种状态,并将C3定义为:处理电路不需要保持其高速缓存一致,但保持其它状态信息的一种状态。C4-C6功率状态将处理电路置于甚至更深的功率状态。在一些实施例中,C4-C6逐渐减小施加到处理电路的电压功率。在C6功率状态中,电压功率可以降低到O伏特。各个实施例不局限于C状态休眠状态。例如,可以将处理电路102置于任何休眠状态,从而使得其在不影响系统性能的前提下通过节省处理电路功率而有利于系统。
[0054]如果图形驱动器模块206确定平均任务完成时间不大于休眠状态时间,那么在框340处,图形驱动器模块206可以不将处理电路102置于休眠状态,并且可以返回完成状态。可以经由API204将完成状态返回给应用202。在各个实施例中,图形驱动器模块206可以返回查询对象的完成状态。例如,图形驱动器模块206将确定针对一任务创建的查询对象的完成状态,并且向应用返回该完成状态。图形驱动器模块206将基于由图形驱动器模块206做出的确定返回完成或没有完成的完成状态。在各个实施例中,应用202和API204可以继续请求完成状态,直到返回的完成状态指示任务212完成为止。可以重复框305到340中描述的过程,直到任务212完成为止,并且可以多次在预定的休眠状态时间期间将处理电路置于休眠状态。
[0055]图4示出了具有任务完成通知的、用于由GPU208处理任务212的第二逻辑流程。为了清楚的目的,参照图1和图2的系统100和系统200来讨论该逻辑流程。在框402处,应用202向图形驱动器模块206发送由GPU208处理的任务以及监测任务212的请求。应用202可以以请求创建查询对象的形式来进行请求。查询对象可以是所生成的用于监测要由GPU208处理的任务的任意对象。应用202可以经由API204向图形驱动器模块206发送该请求。
[0056]在框404处,图形驱动器模块206可以创建针对任务212的完成状态的通知。该通知可以是响应于接收到用于监测的请求而创建的事件通知。在各个实施例中,事件通知可以与由GPU208处理的任务212相关联。该通知可以由图形驱动器模块206通过计算系统的操作系统来创建。如同下面将进一步详细讨论的,事件通知可以指示任务212是何时完成的,并且可以由操作系统的内核模式驱动器发送到图形驱动器模块206。
[0057]在框406处,应用第一次发起对完成状态的请求。例如,应用202可以向图形驱动器模块206发送对任务212的完成状态的请求。该请求可以与图3的框305中讨论的请求相似。在各个实施例中,该请求可以是在动态存储器地址(DMA)缓冲器中向图形驱动器模块206提交的查询对象。可以将包含查询对象的DMA缓冲器发送到图形驱动器模块206。图形驱动器模块206可以接收对完成状态的请求,并且在框408处,可以将该通知与任务212相关联。例如,图形驱动器模块206将事件通知与任务212或查询对象关联,并且当任务212完成时,向内核模式驱动器提交对通知的请求。如同之前所讨论的,内核模式驱动器可以向图形驱动器模块206发送该通知,从而指示任务212的完成。
[0058]在框410处,可以将任务212发送到GPU208进行处理。在各个实施例中,可以在DMA缓冲器中将任务212作为一组要该GPU208执行的查询操作而发送给GPU208。在框412处,GPU208可以接收任务212并处理任务212或该组查询操作。如果GPU208有多个要完成的任务,那么如同上面参照图2所讨论的,可以将任务212置于GPU工作队列210中。GPU工作队列210可以是环形缓冲器,并且GPU208可以基于先来先服务或先进先出(FIFO)来处理任务212。在其它实施例中,任务212可以具有优先级水平,并且GPU208可以基于优先级水平来处理任务212。具有高优先级的任务将在具有低优先级的任务之前被处理。例如,如果任务212具有高的或最高的优先级,那么可以将任务212插入GPU工作队列210以便接下来对其进行处理。
[0059]在框414处,任务212由GPU208处理,并且GPU208发送指示任务212的完成的中断。在各个实施例中,中断可以发送给内核模式驱动器,从而在DMA缓冲器中指示任务212的完成。当处理电路102处于休眠状态时,任务212可以由GPU异步地处理。在各个实施例中,GPU208可以在处理电路102解除休眠状态之前结束处理任务212。
[0060]在框416处,向操作系统发送指示任务212的处理完成的通知。如果处理电路仍然处于休眠状态,那么操作系统可以唤醒该处理电路102。例如,内核模式驱动器可以向操作系统发送与任务212相关联的事件通知,并且操作系统可以将处理电路102从休眠状态唤醒。当接收到指示任务212完成的中断时,内核模式驱动器发送事件通知。在这种情况下,处理电路102没有完成休眠周期,而是在休眠状态时间期满之前苏醒。然后,处理电路102可以更早处理信息,而不是等待休眠状态时间期满以及休眠周期完成。
[0061]在各个实例中,当任务212在等待被GPU208处理时或正在被GPU208处理期间,操作系统可以唤醒一个或多个被置于休眠的线程。虽然不受限于此,但一个或多个线程可以包括监测任务212的图形驱动器模块线程。一个或多个线程还可以包括当任务212在等待被GPU208处理或正在被GPU208处理时可以被置于休眠的任何其它线程。
[0062]在框418处,将任务结果返回给应用。在各个实施例中,图形驱动器模块206发送任务212完成的指示,并且经由API204向应用202返回任务212的结果。任务212的结果可以是由GPU208处理的任何信息,包括但不限于下列各项的结果:图形任务、绘制任务、纹理化任务、光栅化任务、像素处理任务、阴影化任务、渲染3维(3-D)图像或图形、渲染2维(2-D)图像和图形、矩阵计算、向量计算等。一旦应用202接收到这些结果,那么在框420处,该应用就可以继续使用这些结果来处理信息。
[0063]应用202可以继续循环地请求任务212的完成状态,并且与上面参照图3讨论的类似,处理电路102可以在休眠时间期间置于休眠状态。在框422处,应用可以发送对任务212的完成状态的请求。在各个实施例中,API204可以从应用202接收对任务212的完成状态的请求。任务212可以是任何从应用发送到GPU208来进行处理的与图形相关的任务。API204可以通过函数调用从应用202接收对完成状态的请求。API204可以向图形驱动器模块206传送该请求,以便确定任务212的完成状态。
[0064]在判定框424处,图形驱动器模块206确定应用202是否循环地请求完成状态。例如,应用202可以连续地或以特定的间隔来请求任务212的完成状态,直到完成状态指示任务212完成和/或结果被返回给该应用为止。如果在判定框424处,图形驱动器模块206没有检测到循环,那么在框432处,图形驱动器模块206向应用202返回没有完成的完成状态。如同之前所讨论的,图形驱动器模块206可以经由API204向应用202返回完成状态。
[0065]如果在判定框424处,图形驱动器模块206的确检测到了循环,那么在框426处,图形驱动器模块206确定延迟时间是否大于(或等于)任务212的平均任务完成时间。在各个实施例中,延迟时间可以是Ims或保持直到平均任务完成时间的剩余时间。如同之前所讨论的,平均任务完成时间可以是由GPU208处理的所有任务的任务完成时间的移动平均。例如,图形驱动器模块206可以确定并保持由GPU208完成的所有任务的平均任务完成时间。在一些实施例中,不同任务或任务类型的完成时间可能需要不同的时间量。因此,也可以针对相似任务或任务类型中的每一个确定并保持平均任务完成时间。例如,图形驱动器模块206可以确定并保持GPU208处理的不同类型任务(诸如绘制任务、纹理化任务、光栅化任务、像素处理任务、阴影化任务、渲染3维(3-D)图像或图形、渲染2维(2-D)图像和图形、矩阵计算、向量计算等)的平均任务完成时间。
[0066]如果在判定框426处,图形驱动器模块206确定延迟大于(或等于)平均任务完成时间,那么在框432处,图形驱动器模块206向该应用返回没有完成的完成状态。在该示例中,因为预期到GPU208要迫切地结束处理任务212,所以没有将处理电路102置于休眠状态。通过启用处理电路102的休眠状态,系统200避免了任务212可能在休眠状态时间期满之前结束的情况。然而,如果当任务212完成时处理电路102处于休眠状态,那么如同上面参照框410-416所讨论的,可以唤醒该处理电路。
[0067]如果在判定框426处,图形驱动器模块确定延迟不大于平均任务完成时间,那么在框428处,图形驱动器模块206可以指示处理电路102在休眠状态时间期间进行休眠。如同之前所讨论的,可以设置休眠状态时间,从而使得其在不影响系统性能的前提下通过节省处理电路功率而有利于系统,并且休眠状态时间可以在毫秒数量级上进行设置。在休眠状态时间期间,处理电路102可以进入低功率状态。当处理电路102处于休眠状态时,处理电路102可以将正在被处理电路102处理的各个线程置于休眠。例如,处理电路102可以将针对任务212正被处理的图形驱动器模块线程置于休眠。在各个实施例中,如同之前所讨论的,系统可以将处理电路102置于由高级配置和功率接口(ACPI)规范定义的休眠状态中的一种。
[0068]当休眠状态时间期间的休眠状态完成时,在框430处,图形驱动器模块206确定任务212完成还是没有完成。图形驱动器模块206可以经由互连220与GPU208通信,以便确定GPU208是否已经处理了任务212。如同之前所讨论的,图形驱动器模块206可以通过任意数量的互连以任意方式与GPU208通信,以便接收任务212的完成状态。图形驱动器模块206可以接收指示任务212完成或没有完成的结果的信息。然后,可以基于从GPU208接收到的信息将完成或没有完成的结果发送到API204和应用202。
[0069]如果在框430处,图形驱动器模块206确定任务212没有完成,那么在框432处,图形驱动器模块206向应用102返回没有完成的完成状态。
[0070]如果在框430处,图形驱动器模块206确定任务212完成,那么在框434处,图形驱动器模块206向应用102返回完成的完成状态。然后,该过程进行到框418,并且任务212的结果被返回给应用202。在各个实施例中,图形驱动器模块206发送任务212完成的指示,并且经由API204向应用202返回任务212的结果。任务的结果可以是由GPU208处理的任何信息,包括但不限于下列各项的结果:图形任务、绘制任务、纹理化任务、光栅化任务、像素处理任务、阴影化任务、渲染3维(3-D)图像或图形、渲染2维(2-D)图像和图形、矩阵计算、向量计算等。一旦应用202接收到这些结果,那么在框420处,该应用可以继续使用这些结果来处理信息。
[0071]图5不出了用于由图形处理单兀(GPU)处理任务212的第一信号图的实施例。在线条502处,应用202向图形驱动器模块206发送任务212用于由GPU208进行处理。如同之前所讨论的,可以经由API204向图形驱动器模块206发送任务212。在线条504处,图形驱动器模块206可以接收任务212,并将任务212发送到GPU208来进行处理。GPU208可以立即处理任务212,或者可以将任务212放入GPU工作队列210中以便稍后处理。对于该示例来说,稍后对任务212进行处理。
[0072]在线条506处,应用202向图形驱动器模块208发送对任务212的完成状态的第一请求。如同之前所讨论的,应用202可以经由API204发送第一请求。图形驱动器模块208接收该请求并且可以保存任务212的任务开始时间。在各个实施例中,当图形驱动器模块208接收到对完成状态的第一请求时,其可以不保存任务212的任务开始时间。在其它实施例中,当在线条502处图形驱动器模块208接收到任务212时,其可以保存任务212的任务开始时间。
[0073]在线条508处,图形处理模块208向GPU208发送请求来确定任务212的完成状态。在线条510处,GPU208返回任务212的完成状态。在该示例中,在线条510处,GPU208向图形驱动器模块206返回没有完成的完成状态。图形处理模块206从GPU208接收完成状态,并且在线条512处通过API204向应用202发送完成状态。
[0074]线条514-522与线条506-512类似。在线条514处,应用202向图形驱动器模块206发送对任务212的完成状态的第二请求。然而,一旦图形驱动器模块206接收到对完成状态的第二请求,在线条516处,图形驱动器模块206可以在睡眠状态时间期间一直将处理电路102置于休眠状态。如同之前在上面参照图3和图4所讨论的,处理电路102可以在休眠状态时间期间一直休眠。各个实例不局限于此。例如,在线条506处,当图形驱动器模块206接收到对完成状态的第一请求时,其可以在睡眠状态时间期间一直将处理电路102置于休眠状态。
[0075]在线条518处,图形处理模块208向GPU208发送请求来确定任务212的完成状态。在该示例中,在线条520处,GPU208返回任务212没有完成的完成状态。图形处理模块206从GPU208接收完成状态,并且在线条522处通过API204向应用202发送完成状态。在该示例中,在第二请求的完成状态循环期间,任务212的处理没有完成。然而,各个实施例不局限于此。例如,任务212的处理可以完成,并且完成的完成状态可以在任何时刻返回给应用 202。
[0076]例如,线条524-532与线条512-522类似。然而,在线条532处,GPU208已经结束处理任务212,并且完成的完成状态返回给了应用202。除了返回完成的完成状态之外,在线条534处,GPU向图形驱动器模块206发送任务212的结果。可以在向图形驱动器模块206发送完成状态的同时发送该结果。例如,GPU208可以在与完成状态相同的消息中向图形驱动器模块206发送该结果,从而使得在图形模块206和应用202中在接收任务212的结果方面没有延迟。然而,在各个实施例中,可以在与完成状态不同的时刻在不同的消息中向图形模块206发送该结果。
[0077]在线条536处,图形驱动器模块206接收任务212的结果,并且向应用202发送将该结果。可以通过API204将结果发送到应用202。然后,应用可以进行对GPU208完成的任务212的结果的处理。
[0078]在上述示例中,在完成结果连同任务212的结果返回之前,应用202发送三个对任务212的完成状态的请求。此外,图形驱动器模块206两次在睡眠状态时间期间将处理电路102置于休眠状态。然而,各个实施例不局限于此。在一些实例中,任务212可以由GPU208比上述示例更早或更晚地完成。此外,可以发送任意数量的请求,并且可以进入任意数量的休眠状态。在各个实施例中,图形驱动器模块206可以不将处理电路102置于休眠状态。例如,如同上面参照框330所讨论的,图形驱动器模块206可以确定平均任务212完成时间不大于休眠状态时间,并且图形驱动器模块206可以不将处理电路102置于休眠状态。在本文中讨论和描述了其它实施例。
[0079]图6示出了第三逻辑流程600的实施例。逻辑流程600可以代表由本文中描述的一个或多个实施例执行的操作中的一些或全部。例如,逻辑流程600可以示出由系统100和200执行的操作。
[0080]在图6中示出的所描绘的实施例中,逻辑流程600可以包括:在框605处,由图形驱动器监测图形处理单元(GPU)的任务。任务可以是供GPU处理的任何任务,包括但不限于:图形任务、绘制任务、纹理化任务、光栅化任务、像素处理任务、阴影化任务、渲染3维(3-D)图像或图形、渲染2维(2-D)图像和图形、矩阵计算、向量计算等。在框610处,一个或多个元件、电路、软件模块等可以确定任务是否完成。
[0081]在框615处,如果任务没有完成,那么确定任务的平均任务完成时间。平均任务完成时间可以是由GPU处理的所有任务的任务完成时间的移动平均。例如,一个或多个元件、电路、模块等可以确定并保持由GPU完成的所有任务的平均任务完成时间。在一些实施例中,不同任务或任务类型的完成时间可能需要不同的时间量。因此,如同之前所讨论的,也可以针对相似任务或任务类型中的每一个确定并保持平均任务完成时间。
[0082]在框620处,如果平均任务完成时间大于休眠状态时间,那么使处理电路的休眠状态持续休眠状态时间。休眠状态时间可以是预定的,并且可以基于特定任务的平均任务完成时间的分数。例如,如果平均任务完成时间为10毫秒(ms),那么休眠状态时间可以设置为Ims或者百分之10。可以设置休眠状态时间,从而使得其在不影响系统性能的前提下通过节省处理电路功率而有利于系统。
[0083]图7示出了适合于实现如前所述各个实施例的示例性计算体系结构700的实施例。在一个实施例中,计算体系结构700可以包括或实现为腕带110和/或计算设备115的一部分。
[0084]如同本申请中所使用的,术语“系统”和“组件”意在指代计算机相关的实体(不管是硬件、硬件和软件的组合、软件、还是执行中的软件),其示例由示例性计算体系结构700提供。例如,组件可以是,但不限于是:处理器上运行的过程、处理器、硬盘驱动器、(光和/或磁存储介质的)多个存储驱动器、对象、可执行程序、执行的线程、程序和/或计算机。通过说明的方式,在服务器上运行的应用和该服务器二者都可以是组件。一个或多个组件可以位于执行的进程和/或线程中,并且组件可以位于一个计算机上和/或分布在两个或更多个计算机之间。此外,组件可以通过各种类型的通信介质通信地互相耦接来协调操作。协调可以涉及信息的单向或双向交换。例如,组件可以以在通信介质上传送的信号的形式来传送信息。信息可以实现为分配给各种信号线的信号。在这样的分配中,每个消息是信号。然而,其它实施例可以替换地使用数据消息。可以跨越各种连接来发送这些数据消息。示例性连接包括并行接口、串行接口和总线接口。
[0085]计算体系结构700包括各种常见的计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/o)组件、电源等。然而,实施例不局限于计算体系结构700的实现。
[0086]如图7中所示,计算体系结构700包括处理单元704、系统存储器706和系统总线708。处理单元704可以是各种市售的处理器中的任意一种,诸如参照图1中所示的处理器130所描述的那些。
[0087]系统总线708为系统组件(包括但不限于系统存储器706)提供到处理单元704的接口。系统总线708可以是若干类型的总线结构中的任意一种,其可以使用各种市售的总线体系结构中的任意一种进一步互连到存储器总线(带有或没有存储器控制器)、外围总线和局部总线。接口适配器可以经由时隙体系结构连接到系统总线708。示例时隙体系结构可以包括但不限于:加速图形端口(AGP)、卡总线、(扩展)工业标准体系结构((E) ISA)、微通道体系结构(MCA)、NuBus、外围组件互连(扩展)(PCI (X))、高速PC1、个人计算机存储卡国际协会(PCMCIA)等。
[0088]计算体系结构700可以包括或实现各种制品。一件制品可以包括用于存储逻辑的计算机可读存储介质。计算机可读存储介质的示例可以包括能够存储电子数据的任意有形介质,其包括:易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。逻辑的示例可以包括使用任何合适类型的代码(诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象的代码、可视代码等)实现的可执行计算机程序指令。实施例还可以至少部分地实现为包含在非临时性计算机可读介质中或其上的指令,指令可以由一个或多个处理器读取并执行以便能够执行本文中描述的操作。
[0089]系统存储器706可以包括一种或多种较高速度存储器单元形式的各种类型的计算机可读存储介质,诸如只读存储器(ROM)、随机存取存储器(RAM)、动态RAM (DRAM)、双数据速率 DRAM (DDRAM)、同步 DRAM (SDRAM)、静态 RAM (SRAM)、可编程 ROM (PR0M)、可擦除可编程ROM (EPROM)、电可擦除可编程ROM (EEPR0M)、闪存、诸如铁电聚合物存储器之类的聚合物存储器、奥氏存储器、相变或铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、磁卡或光卡,诸如独立磁盘冗余阵列(RAID)驱动器之类的设备阵列、固态存储器设备(例如,USB存储器、固态驱动器(SSD))和适于存储信息的任何其它类型的存储介质。在图7中示出的所描绘的实施例中,系统存储器706可以包括非易失性存储器710和/或易失性存储器712。基本输入/输出系统(B1S)可以存储在非易失性存储器710中。
[0090]计算机702可以包括一种或多种较低速度存储器单元形式的各种类型的计算机可读存储介质,包括内部(或外部)硬盘驱动器(HDD) 714、用于从可移动磁盘718读取或向可移动磁盘718写入的磁性软盘驱动器(FDD) 716,以及用于从可移动光盘722 (例如,CD-ROM或DVD)读取或向可移动光盘722写入的光盘驱动器720。HDD714、FDD716和光盘驱动器720可以分别由HDD接口 724、FDD接口 726和光盘驱动器接口 728连接到系统总线708。用于外部驱动器实现的HDD接口 724可以包括通用串行总线(USB)和IEEE1394接口技术中的至少一个或其二者。
[0091]驱动器和相关联的计算机可读介质提供数据、数据结构、计算机可执行指令等的易失性和/或非易失性存储。例如,多个程序模块可以存储在驱动器和存储器单元710、712中,所述多个程序模块包括操作系统730、一个或多个应用程序732、其它程序模块734和程序数据736。在一个实施例中,例如,一个或多个应用程序732、其它程序模块734和程序数据736可以包括系统100的各种应用和/或组件。
[0092]用户可以通过一个或多个有线/无线输入设备(例如,键盘738和诸如鼠标740之类的指示设备)将命令和信息输入到计算机702。其它输入设备可以包括麦克风、红外(IR)遥控器、射频(RF)遥控器、游戏板、手写笔、读卡器、加密狗、指纹读取器、手套、图形输入板、游戏杆、键盘、视网膜读取器、触摸屏(例如,电容的、电阻的等)、跟踪球、跟踪板、传感器、指示笔等。这些和其它输入设备通常通过耦接到系统总线708的输入设备接口 742连接到处理单元704,但可以通过其它接口(诸如并行端口、IEEE1394串行端口、游戏端口、USB端口、IR接口等)进行连接。
[0093]监视器744或其它类型的显示装置也经由诸如视频适配器746之类的接口连接到系统总线708。监视器744可以在计算机702内部或外部。除了监视器744之外,计算机通常包括诸如扬声器、打印机等的其它外围输出设备。
[0094]计算机702可以经由与一个或多个远程计算机(诸如远程计算机748)进行的有线和/或无线通信,使用逻辑连接操作在联网环境中。远程计算机748可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其它常见的网络节点,并且通常包括相对于计算机702描述的元件中的许多或所有元件,尽管为简明起见,仅示出了存储器/存储设备750。描述的逻辑连接包括到局域网(LAN) 752和/或更大的网络(例如,广域网(WAN)754)的有线/无线连接。这种LAN和WAN网络连接环境常见于办公室和公司,并且方便企业范围的计算机网络(诸如内联网),所有这些网络都可以连接到全球通信网络(例如,互联网)。
[0095]当在LAN网络连接环境中使用时,计算机702通过有线和/或无线通信网络接口或适配器756连接到LAN752。适配器756可以方便与LAN752的有线和/或无线通信,LAN752还可以包括用于与适配器756的无线功能单元进行通信的置于其上的无线接入点。
[0096]当在WAN网络连接环境中使用时,计算机702可以包括调制解调器758,或连接到WAN754上的通信服务器,或者具有用于在WAN754上建立通信(诸如通过互联网的方式)的其它模块。调制解调器758 (其可以是内置或外置以及有线和/或无线设备)经由输入设备接口 742连接到系统总线708。在联网的环境中,相对于计算机702描述的程序模块或者其一部分可以存储在远程存储器/存储设备750中。将明白的是:示出的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它模块。
[0097]计算机702可用于与使用IEEE802标准族的有线和无线设备或实体(诸如在操作上置于无线通信(例如,IEEE802.11空中调制技术)中的无线设备)进行通信。除了其它的之外,这至少包括W1-Fi (或无线保真)、WiMax以及蓝牙?无线技术。因此,就传统网络而言,通信可以是预定的结构或者仅仅是至少两个设备之间的自组织通信。W1-Fi网络使用被称为IEEE802.1lx (a、b、g、n等)的无线电技术来提供安全、可靠、快速的无线连接。W1-Fi网络可以用于将计算机彼此连接,将计算机连接到互联网以及连接到有线网络(其使用与IEEE802.3相关的介质和功能)。
[0098]之前参照图1-7描述的触摸手势识别系统100的各个元件可以包括各种硬件元件、软件元件或两者的组合。硬件元件的示例可以包括器件、逻辑器件、组件、处理器、微处理器、电路、处理器、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或它们的任意组合。然而,根据给定实现的需要,确定是否使用硬件元件和/或软件元件实现实施例可能根据任意数量的因素而变化,诸如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其它设计或性能约束。
[0099]现在【具体实施方式】转向提供与另外的实施例有关的示例。下面提供的示例I至46(1-46)旨在是示例性的而非限制性的。
[0100]在第一示例中,一种装置可以包括:存储器、耦接到该存储器的处理电路、以及耦接到处理电路和存储器的用于处理与图形相关的任务的图形处理单元(GPU)。该装置还可以包括图形驱动器模块,其用于监测GPU的任务、确定任务何时完成、当任务没有完成时确定任务的平均任务完成时间、并且在平均任务完成时间大于休眠状态时间时,使处理电路的休眠状态能够持续休眠状态时间。
[0101]在第二示例中,装置可以包括图形驱动器模块,其用于在休眠状态时间期满时,或者在任务完成时,禁用处理电路的休眠状态。
[0102]在第三示例中,装置可以包括图形驱动器模块,用于当任务没有完成时存储任务开始时间。
[0103]在第四示例中,装置可以包括图形驱动器模块,用于当任务完成时,基于任务开始时间确定该任务的任务完成时间。
[0104]在第五示例中,装置可以包括图形驱动器模块,用于基于一个或多个任务的一个或多个任务完成时间的平均来确定平均任务完成。
[0105]在第六示例中,装置可以包括图形驱动器模块,用于从应用接收对任务的完成状态的请求,并且基于完成状态向该应用发送指示该任务完成还是没完成的响应。
[0106]在第七示例中,装置可以包括图形驱动器模块,用于生成针对任务的事件通知、接收指示任务完成的事件通知、并且当接收到该事件通知时禁用处理电路的休眠状态。
[0107]在第八示例中,装置可以包括图形驱动器模块,用于生成针对任务的事件通知、接收指示任务完成的事件通知、并且当接收到该事件通知时禁用处理电路的休眠状态,其中,该事件通知是由图形驱动器产生的,并且是基于所接收的中断的。
[0108]在第九示例中,装置可以包括应用和图形驱动器模块,当任务完成时图形驱动器模块向处理电路返回针对应用的任务结果。
[0109]在第十示例中,装置可以包括图形驱动器模块,其用于接收创建针对任务的查询对象的请求,并且创建用于监测GPU上的任务的查询对象。
[0110]在第^^一示例中,装置可以包括图形驱动器模块,其用于确定任务的查询对象何时完成,从而指示GPU上的任务的完成。
[0111]在第十二示例中,其中,任务是下列各项中的至少一项:计算机图形任务、3维(3D)图形任务和2维(2D)图形任务。
[0112]在第十三示例中,计算机实现的方法可以包括:由图形驱动器监测图形处理单元(GPU)的任务;确定任务何时完成;当任务没有完成时确定任务的平均任务完成时间;并且当平均任务完成时间大于休眠状态时间时,使处理电路的休眠状态能够持续休眠状态时间。
[0113]在第十四示例中,计算机实现的方法可以包括:当休眠状态时间期满时,或者当任务完成时,禁用处理电路的休眠状态。
[0114]在第十五示例中,计算机实现的方法可以包括:当任务没有完成时存储任务开始时间。
[0115]在第十六示例中,计算机实现的方法可以包括:当任务完成时,基于任务开始时间确定该任务的任务完成时间。
[0116]在第十七示例中,计算机实现的方法可以包括:基于一个或多个任务的一个或多个任务完成时间的平均来确定平均任务完成。
[0117]在第十八示例中,计算机实现的方法可以包括:从应用接收针对任务的完成状态的请求,并且基于完成状态向该应用发送指示该任务完成还是没完成的响应。
[0118]在第十九示例中,计算机实现的方法可以包括:生成针对任务的事件通知、接收指示任务完成的事件通知、并且当接收到该事件通知时禁用处理电路的休眠状态。
[0119]在第二十示例中,计算机实现的方法可以包括:生成针对任务的事件通知、接收指示任务完成的事件通知、并且当接收到该事件通知时禁用处理电路的休眠状态,其中,该事件通知是由图形驱动器产生的并且是基于所接收的中断的。
[0120]在第二十一示例中,计算机实现的方法可以包括:当任务完成时,向处理电路返回任务结果。
[0121]在第二十二示例中,计算机实现的方法可以包括:接收创建任务的查询对象的请求,并且创建查询对象以监测GPU上的任务。
[0122]在第二十三示例中,计算机实现的方法可以包括:确定任务的查询对象何时完成,从而指示GPU上的任务的完成。
[0123]在第二十四示例中,计算机实现的方法可以包括:是下列各项中的至少一项的任务:计算机图形任务、3维(3D)图形任务和2维(2D)图形任务。
[0124]在第二十五示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时,使得处理电路能够通过图形驱动器监测图形处理单元(GPU)的任务;确定任务何时完成;当任务没有完成时确定任务的平均任务完成时间;以及当平均任务完成时间大于休眠状态时间时,使处理电路的休眠状态能够持续休眠状态时间。
[0125]在第二十六示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时,使得处理电路在休眠状态时间期满时或者在任务完成时能够禁用处理电路的休眠状态。
[0126]在第二十七示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时使得处理电路能够从应用接收针对任务的完成状态的请求,并且基于完成状态向该应用发送指示该任务完成还是没完成的响应。
[0127]在第二十八示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时使得处理电路能够生成针对任务的事件通知、接收指示任务完成的事件通知、并且当接收到该事件通知时禁用处理电路的休眠状态。
[0128]在第二十九示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时使得处理电路能够生成针对任务的事件通知、接收指示任务完成的事件通知、并且当接收到该事件通知时禁用处理电路的休眠状态,其中,该事件通知是由图形驱动器产生的并且是基于所接收的中断的。
[0129]在第三十示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时使得处理电路能够在任务完成时向该处理电路返回任务结果。
[0130]在第三十一示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时使得处理电路能够在任务没有完成时存储任务开始时间。
[0131]在第三十二示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时使得处理电路能够在任务完成时,基于任务开始时间来确定任务的任务完成时间。
[0132]在第三十三示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时使得处理电路能够基于一个或多个任务的一个或多个任务完成时间的平均来确定平均任务完成。
[0133]在第三十四示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时使得处理电路能够接收创建针对任务的查询对象的请求,并且创建查询对象来监测GPU上的任务。
[0134]在第三十五示例中,制品可以包括包含多个指令的计算机可读存储介质,多个指令在被执行时使得处理电路能够确定任务的查询对象何时完成,从而指示GPU上的任务的完成。
[0135]在第三十六示例中,其中,任务是下列各项中的至少一项:计算机图形任务、3维(3D)图形任务和2维(2D)图形任务。
[0136]在第三十七示例中,装置可以包括:用于监测图形处理单元(GPU)的任务的模块;用于确定任务何时完成的模块;用于当任务没有完成时确定任务的平均任务完成时间的模块;以及用于当平均任务完成时间大于休眠状态时间时,使处理电路的休眠状态能够持续休眠状态时间的模块。
[0137]在第三十八示例中,装置可以包括:用于当休眠状态时间期满时,或者当任务完成时,禁用处理电路的休眠状态的模块。
[0138]在第三十九示例中,装置可以包括:用于当任务没有完成时存储任务开始时间的模块。
[0139]在第四十示例中,装置可以包括:用于当任务完成时,基于任务开始时间确定该任务的任务完成时间的模块。
[0140]在第四十一示例中,装置可以包括:用于基于一个或多个任务的一个或多个任务完成时间的平均来确定平均任务完成的模块。
[0141]在第四十二示例中,装置可以包括:用于从应用接收针对任务的完成状态的请求的模块,以及用于基于完成状态向该应用发送指示该任务完成还是没完成的响应的模块。
[0142]在第四十三示例中,装置可以包括:用于生成针对任务的事件通知的模块、用于接收指示任务完成的事件通知的模块;以及用于当接收到该事件通知时禁用处理电路的休眠状态的模块。
[0143]在第四十四示例中,装置可以包括:用于生成针对任务的事件通知的模块;用于接收指示任务完成的事件通知的模块;以及用于当接收到该事件通知时禁用处理电路的休眠状态的模块,其中,该事件通知是由图形驱动器产生的,并且是基于所接收的中断的。
[0144]在第四十五示例中,装置可以包括:用于当任务完成时,向处理电路返回任务结果的模块。
[0145]在第四十六示例中,装置可以包括:用于确定任务的查询对象何时完成,从而指示GPU上的任务完成的模块。
[0146]可以使用表述“一个实施例”或“实施例”连同它们的派生词来描述一些实施例。这些术语意味着结合该实施例描述的特定的特征、结构或特性包括在至少一个实施例中。在本说明书中的各个地方出现短语“在一个实施例中”并不一定全部指的是相同的实施例。此外,可以使用了表述“耦接”或“连接”连同它们的派生词来描述一些实施例。这些术语不一定旨在作为彼此的同义词。例如,可以使用术语“耦接”和/或“连接”来描述一些实施例,以便指示两个或更多个元件彼此直接物理接触或电接触。然而,术语“耦接”还可以意味着两个或更多个元件没有彼此直接接触,但仍然彼此协同操作或交互。
[0147]需要强调的是:提供本公开的摘要以使得读者能够快速地确定本技术公开内容的性质。提交摘要,并且应当理解其将不会被用来解释或限制权利要求的范围或含义。此外,在前面的【具体实施方式】中,可以看到:出于精简本公开内容的目的,在单个实施例中将各种特征组合在一起。本公开内容的方法不应该被解释为反映了以下意图,即:所要求保护的实施例需要比明确记载于每一项权利要求中的特征更多的特征。而是如同后面的权利要求所反映的,发明主题在于少于单个所公开的实施例的所有特征。因此,在此将后面的权利要求并入【具体实施方式】,其中每一项权利要求作为单独的实施例代表其自己。在所附的权利要求书中,术语“包括”和“在其中”分别用作相应的术语“包括”和“其中”的通俗易懂的英语等同物。此外,术语“第一”、“第二”、“第三”等等仅仅用作标号,并且不旨在对其对象施加数字要求。
[0148]上面已经描述的内容包括所公开的体系结构的示例。当然,不可能描述组件和/或方法的每个可预料到的组合,但是本领域的普通技术人员可以认识到:许多另外的组合和排列是可能的。因此,该新颖体系结构旨在涵盖落入所附权利要求的精神和范围内的所有此类更改、修改和变化。
【权利要求】
1.一种装置,包括: 存储器; 处理电路,其耦接到所述存储器; 图形处理单元(GPU),其耦接到所述处理电路和所述存储器,用于处理与图形相关的任务;以及 图形驱动器模块,其用于监测所述GPU的任务,确定所述任务何时完成,当所述任务没有完成时确定所述任务的平均任务完成时间,以及当所述平均任务完成时间大于休眠状态时间时,使所述处理电路的休眠状态能够持续所述休眠状态时间那么长。
2.根据权利要求1所述的装置,所述图形驱动器模块用于在所述休眠状态时间期满时,或者在所述任务完成时,禁用所述处理电路的所述休眠状态。
3.根据权利要求1所述的装置,所述图形驱动器模块用于在所述任务没有完成时存储任务开始时间。
4.根据权利要求3所述的装置,所述图形驱动器模块用于在所述任务完成时,基于所述任务开始时间确定所述任务的任务完成时间。
5.根据权利要求1所述的装置,所述图形驱动器模块用于基于一个或多个任务的一个或多个任务完成时间的平均来确定平均任务完成。
6.根据权利要求1所述的装置,所述图形驱动器模块用于从应用接收对所述任务的完成状态的请求,并且基于所述完成状态向所述应用发送指示所述任务完成还是没完成的响应。
7.根据权利要求1所述的装置,所述图形驱动器模块用于生成所述任务的事件通知、接收指示所述任务完成的所述事件通知、以及在接收到所述事件通知时禁用所述处理电路的所述休眠状态。
8.根据权利要求7所述的装置,其中,所述事件通知是由所述图形驱动器生成的,并且是基于接收到的中断的。
9.根据权利要求1所述的装置,包括: 应用;以及 所述图形驱动器模块,其用于在所述任务完成时向所述处理电路返回针对所述应用的任务结果。
10.根据权利要求1所述的装置,所述图形驱动器模块用于接收创建所述任务的查询对象的请求,并且创建所述查询对象用以监测所述GPU上的所述任务。
11.根据权利要求10所述的装置,所述图形驱动器模块用于确定所述任务的所述查询对象何时完成,从而指示所述GPU上的所述任务的完成。
12.根据权利要求1所述的装置,其中,所述任务是下列各项中的至少一项:计算机图形任务、3维(3D)图形任务和2维(2D)图形任务。
13.—种计算机实现的方法,包括: 由图形驱动器监测图形处理单元(GPU)的任务; 确定所述任务何时完成; 当所述任务没有完成时确定所述任务的平均任务完成时间;以及 当所述平均任务完成时间大于休眠状态时间时,使处理电路的休眠状态能够持续所述休眠状态时间那么长。
14.根据权利要求13所述的计算机实现的方法,包括: 在所述休眠状态时间期满时,或者在所述任务完成时,禁用所述处理电路的所述休眠状态。
15.根据权利要求13所述的计算机实现的方法,包括: 当所述任务没有完成时,存储任务开始时间。
16.根据权利要求15所述的计算机实现的方法,包括: 当所述任务完成时,基于所述任务开始时间确定所述任务的任务完成时间。
17.根据权利要求13所述的计算机实现的方法,包括: 基于一个或多个任务的一个或多个任务完成时间的平均来确定平均任务完成。
18.根据权利要求13所述的计算机实现的方法,包括: 从应用接收对所述任务的完成状态的请求;以及 基于所述完成状态向所述应用发送指示所述任务完成还是没完成的响应。
19.根据权利要求1 3所述的计算机实现的方法,包括: 生成所述任务的事件通知; 接收指示所述任务完成的所述事件通知;以及 在接收到所述事件通知时禁用所述处理电路的所述休眠状态。
20.根据权利要求19所述的计算机实现的方法,其中,所述事件通知是由所述图形驱动器生成的,并且是基于接收到的中断的。
21.根据权利要求13所述的计算机实现的方法,包括: 在所述任务完成时,向所述处理电路返回任务结果。
22.根据权利要求13所述的计算机实现的方法,包括: 接收创建所述任务的查询对象的请求;以及 创建所述查询对象用以监测所述GPU上的所述任务。
23.根据权利要求22所述的计算机实现的方法,包括: 确定所述任务的所述查询对象何时完成,从而指示所述GPU上的所述任务的完成。
24.根据权利要求13所述的计算机实现的方法,其中,所述任务是下列各项中的至少一项:计算机图形任务、3维(3D)图形任务和2维(2D)图形任务。
25.至少一种机器可读介质,其包括多个指令,所述多个指令响应于在处理电路上被执行而使得所述处理电路执行根据权利要求13至24中任意一项权利要求所述的方法。
【文档编号】G06F9/48GK104049711SQ201410084557
【公开日】2014年9月17日 申请日期:2014年3月10日 优先权日:2013年3月12日
【发明者】S·帕内尔, T·A·托马斯, T·T·施鲁斯勒, A·Z·利贝尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1