对图形硬件实施调度操作的制作方法

文档序号:6534299阅读:169来源:国知局
对图形硬件实施调度操作的制作方法【专利摘要】本文描述了一种用于对图形硬件实施调度操作的计算设备。该计算设备包括配置为执行应用的中央处理单元(CPU)。计算设备还包括图形调度器,其配置为独立于CPU而操作。该图形调度器配置为接收与来自在CPU上执行的应用的工作负荷有关的工作队列,并且基于工作队列对多个图形引擎中的任一个图形引擎实施调度操作。【专利说明】对图形硬件实施调度操作【
技术领域
】[0001]本发明总地涉及对图形引擎实施调度操作。更具体地,本发明涉及经由图形调度器独立于中央处理单元(CPU)对计算设备的图形引擎实施调度操作。【
背景技术
】[0002]计算设备中的图形子系统硬件通常包括多个独立的图形引擎。称为图形调度器的软件可用来调度图形引擎以执行在硬件上执行的图形工作负荷。然而,根据目前的技术,通过计算设备的中央处理单元(CPU)来执行图形调度器。在CPU上执行图形调度器会由于图形引擎和CPU之间的通信延迟而强加显著的时延开销,其中图形引擎和CPU经由中断和基于存储器映射输入/输出(MIMO)的编程来进行通信。另外,CPU与图形引擎之间的这种通信可产生大量的功耗,因为为了实施调度操作,CPU被迫从低功率状态间断地切换到高功率状态。【专利附图】【附图说明】[0003]图1是可依照实施例使用的计算设备的框图;[0004]图2是计算设备的框图,包括计算设备的图形子系统的内部组件;[0005]图3是示出计算设备的图形调度器的运作的框图;[0006]图4是示出调度和执行工作队列的方法的过程流程图;[0007]图5是可依照实施例使用的示例性地址空间的框图;[0008]图6是示出工作负荷的多种可能状态的流程图;[0009]图7是示出用于对图形硬件实施调度操作的方法的过程流程图;[0010]图8是示出存储有用于对图形硬件实施调度操作的代码的有形的、非暂态计算机可读介质的框图;[0011]图9是用于实现图形子系统的示例性系统的框图;以及[0012]图10是可以具体实现图9的系统的小形状因数设备的示意图。[0013]在本公开全文以及附图中使用相同的标记来指代相似的组件和特征。100系列的标记指代原始记载于图1中的特征,200系列的标记指代原始记载于图2中的特征;等等。【具体实施方式】[0014]如上文所述,本文所描述的实施例涉及经由图形调度器独立于中央处理单元(CPU)对计算设备的图形引擎实施调度操作。图形调度器可以包括图形微控制器,其能够基于从在计算设备的CPU上执行的一个或多个应用接收到的工作负荷来实施调度操作。例如,图形调度器可以动态地确定用于执行每个特定工作负荷的适当的图形引擎。另外,图形调度器可以确定为每个图形引擎执行工作负荷的顺序。然后,图形调度器可以将工作负荷以及执行工作负荷的顺序转发给恰当的图形引擎以便进行执行。在各个实施例中,图形调度器几乎不借助来自计算设备的CPU的输入来执行这样的调度操作。[0015]在下面的说明书和权利要求书中,可使用术语“耦合”和“连接”及其衍生词。应当理解的是,这些术语不意在彼此为同义词。相反,在特定的实施例中,“连接”可用来指示两个以上的元件彼此直接的物理或电接触。“耦合”可以意指两个以上的元件直接物理或电接触。但是,“耦合”还可以意指两个以上的元件彼此不直接接触,但是仍彼此合作或相互作用。[0016]一些实施例可以通过硬件、固件和软件之一或组合来实现。一些实施例还可以实现为存储在计算机可读介质上的指令,其可以通过计算平台来读取和执行以便实施本文所描述的操作。机器可读介质可以包括任何用于存储或传输机器(如计算机)可读形式的信息的机构。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备;或电、光、声或其他形式的传播信号,例如,载波、红外信号、数字信号或者发送和/或接收信号的接口,等等。[0017]实施例是实现方式或示例。在说明书中提到“实施例”、“一个实施例”、“一些实施例”、“各个实施例”、或“其他实施例”意指结合实施例所描述的特定的特征、结构或特性包含在本发明的至少一些实施例中,而不一定包含在本发明的全部实施例中。出现的各种表述“实施例”、“一个实施例”、或“一些实施例”不一定都指同一实施例。[0018]并不是在本文中描述和图示说明的全部的组件、特征、结构或特性等都包含在特定的一个或多个实施例中。比如,如果说明书表明“可以”、“可能”、“能够”或者“可”包括组件、特征、结构或特性,则不要求包含该特定的组件、特征、结构或特性。如果说明书或权利要求书提到“一(a或an)”元件,则不意味着仅存在一个所述元件。如果说明书或权利要求书提到“附加”元件,则不排除存在多于一个的所述附加元件。[0019]值得注意的是,虽然参考特定实现方式描述了一些实施例,但根据一些实施例,其他实现方式是可能的。另外,图中所图示的和/或本文所描述的电路元件或其他特征的布置和/或顺序无需按图示和描述的特定方式来布置。根据一些实施例,许多其他布置是可能的。[0020]在图中所示的各系统中,一些情况下元件可各自具有相同的附图标记或不同的附图标记以表明所表示的元件可以是不同的和/或相似的。然而,元件可以足够灵活而具有不同的实现方式以及与图示的或者本文描述的一些或全部的系统一起工作。图中所示的各个元件可以是相同或不同的。哪一个元件称为第一元件以及哪一个元件称为第二元件是任意的。[0021]图1是可依照实施例使用的计算设备100的框图。计算设备100可以是例如膝上型计算机、台式计算机、平板式计算机、移动设备、或服务器以及其他的设备。计算设备100可以包括:CPU102,其适于执行所存储的指令;以及存储器设备104,其存储能够由CPU102执行的指令。CPU102可以控制和协调计算设备100的总体操作。CPU102可以是单核处理器、多核处理器、计算集群或任意数量的其他配置。[0022]存储器设备104可以包括计算设备100的主存储器。另外,存储器设备104可以包括任意形式的随机存取存储器(RAM)、只读存储器(ROM)、闪存等。例如,存储器设备104可以是一排或多排存储器芯片或集成电路。CPU102可以通过总线106直接访问存储器设备104。[0023]CPU102执行的指令可用来执行驻存在计算设备100的存储设备110内的多个应用108中的任一个应用。应用108可以是任意类型的将图形、图形对象、图形图像、图形帧、视频等显示给计算设备100的用户的应用或程序。CPU102可以通过总线106连接到存储设备110。存储设备110可以包括硬盘驱动器、光盘驱动器、拇指驱动器、驱动器阵列或其任意组合。[0024]CPU102还可以通过总线106与图形调度器112链接。图形调度器112可配置为对在CPU102上执行的应用108实施调度操作。图形调度器112可以包括图形微控制器114。图形微控制器114可配置为对图形硬件116实施调度操作。[0025]在各个实施例中,图形微控制器114经由中介层(shimlayer)118与图形硬件116接口。中介层118可配置为截断来自图形硬件116的中断和其他消息,并且将这些中断和其他消息转发给图形微控制器114。这可使得几乎不借助来自CPU102的输入来对应用108所请求的任务或工作队列进行直接调度。因此,调度图形任务所需的延迟和功耗比在先技术相关联的延迟和功耗低,这有赖于在CPU102上执行的用于调度图形任务的调度算法和决策。[0026]在各个实施例中,图形微控制器114包括图形调度软件115。图形调度软件115可以紧接计算设备100的启动阶段之后经由图形驱动器(未示出)装载到计算设备100的硬件中。图形驱动器可以包含在计算设备100的图形子系统内,并且可以包括系统软件。[0027]应当理解的是,图1的框图不意在表示计算设备100要包含图1所示的全部的组件。此外,计算设备100可以包括图1中未示出的任意数量的附加组件,这取决于具体的实现方式。[0028]图2是计算设备100的框图,包括计算设备100的图形子系统202的内部组件。标记相似的项目如结合图1所描述。在各个实施例中,图形子系统202包括图形调度器112和图形硬件116。如上文所述,图形调度器112可以包括用于对图形硬件116实施调度操作的图形微控制器114,以及充当图形微控制器114与图形硬件116之间的接口的中介层118。[0029]图形微控制器114可以是驻存在计算设备100的图形子系统202内的通用核心,并且可以以类似于图形子系统202的典型频率的频率工作,例如达到大约1.4千兆赫。另夕卜,图形微控制器114可以包括高速缓冲存储器204。高速缓冲存储器可以较小,例如大约8千字节,并且可用于存储与从任意应用108接收到的工作队列有关的数据以及与对图形硬件116的调度操作有关的信息。[0030]图形微控制器114还可以包括本地高级可编程中断控制器(LAPIC)206。LAPIC206可用来处理来自诸如应用108、CPU102和图形硬件116的各种源的中断。在各个实施例中,中断经由驻存在中介层118内的中断集合器208来从各种源收集且发送到LAPIC206。[0031]图形微控制器114可以经由前侧总线(FSB)接口210与中介层118接口。中介层118可以经由消息信道接口212与图形子系统202的其余组件通信。数据可以通过存储器在图形微控制器114与在CPU102上执行的应用108之间传输。在一些实施例中,地址解码器214可以充当数据传输的流量路由器。此外,消息信道接口212可配置为处理图形微控制器114与图形子系统202的其余组件之间的消息或通知的传输。例如,一个应用108可以将命令和数据写入图形子系统202内的一个或多个存储器单元,以向图形硬件请求工作队列的提交。作为响应,包含在图形硬件116内的图形变换(GT)门铃单元216可以监控改变的存储器单元以检测新工作队列的到达,并且经由消息信道接口212将消息发送到图形微控制器114。消息可以包含关于中断原因的信息。图形微控制器随后可以读取消息队列以确定待执行的图形工作负荷的细节。[0032]如图2所示,图形硬件116包括多个图形引擎218。每个图形引擎218都可配置为实施具体的图形任务,或者执行具体类型的工作负荷。另外,图形硬件116可以包括显示引擎220,其配置为经由显示设备222向计算设备100的用户显示数据。所显示的数据可以包括例如由一个或多个图形引擎218所呈现的数据。此外,图形引擎218和显示引擎220可配置为将关于执行工作负荷的事件通知发送到图形微控制器114。例如,显示引擎220可以将关于典型同步事件(例如,翻转(flip)或Vsync)的通知发送给图形微控制器114。在一些实施例中,这些事件通知是以中断的形式发送的,这表示特定的工作负荷或特定的硬件设备正在请求关注。[0033]图形硬件116还可以包括图形存储器224。在一些实施例中,图形存储器224是计算设备100的主存储器(例如存储器设备104)的专用于存储图形数据的部分。例如,图形存储器224可以包括用于调度程序的数据结构。图形调度器112可以经由驻存在中介层118内的图形存储器接口226来访问图形存储器224。中介层118还可以包括直接存储器访问(DMA)引擎228,其配置为允许图形子系统202的一些组件(如图形微控制器114)独立于CPU102而高效地访问特定的存储器区域,例如存储器设备104或图形存储器224。[0034]图形硬件116还可以包括输入/输出存储器管理单元(1MMU)230。1MMU230可配置为将图形虚拟存储器地址(例如,在来自一个应用108的指令或工作队列中所包含的图形虚拟地址(GVA))变换成物理存储器地址(例如,主机物理地址(ΗΡΑ))。这可以通过例如多级页表移动(pagetablewalk)来实现,其中包含在页表移动中的级数取决于要支持的地址空间的大小。[0035]用于实现本文所描述的调度程序的代码可以存储在中介层118内的静态随机存取存储器(SRAM)232中。SRAM232内的代码可用于引导图形微控制器114的运作。在一些实施例中,代码经由DMA引擎228装载到SRAM232中。另外,中介层118可以包括标准加密验证块234,其配置为在执行前认证SRAM232内的代码以确保代码未被修改。[0036]在一些实施例中,图形硬件116包括功率管理(PM)单元236。PM单元236可配置为监控图形微控制器114的活动。在一些实施例中,当所有的图形引擎218空闲时,PM单元236可以使图形设备掉电。另外,定时器238可用于跟踪调度时间线。[0037]如上文所述,在一些实施例中,紧接计算设备100的启动阶段之后,图形调度器112经由图形驱动器(未示出)装载到计算设备100的硬件中。在这些实施例中,图形调度器112的初始化代码包含在启动只读存储器(bootR0M)240中。该初始化代码可用于验证SRAM232中所包含的调度代码。例如,调度代码可以复制到隔离的存储器区域中,且在调度程序执行之前利用初始化代码进行验证。[0038]应当理解的是,图2的框图不意在表示计算设备100包括图2所示的全部组件。此外,计算设备100可以包括图2中没有示出的任意数量的附加组件,这取决于具体实现方式。[0039]图3是示出计算设备100的图形调度器112的运作的框图。标记相似的项目如结合图1和图2所描述的。在各个实施例中,应用108将包括数个图形工作负荷的工作队列发送到GT门铃单元216,如箭头300所指示的。GT门铃单元216随后可以将与工作队列有关的信息发送到图形调度器112。与工作队列有关的信息可由图形调度器112使用来用于调度程序。另外,与工作队列有关的任何信息可以存储在SRAM232内以便未来使用。[0040]在各个实施例中,图形调度器112还使用从多个源中的任一个源接收到的中断来实施调度程序。例如,中断可从CPU102接收,如箭头302所指示的;从显示引擎220接收,如箭头304所指示的;或者从任意图形引擎218接收,如箭头306所指示的。中断可以包括与请求关注的事件有关的信息。这些中断可以收集在中断集合器208中。在一些实施例中,中断集合器208基于任意数量的因素来按优先次序排列中断。该优先化使得图形调度器112将比从应用108接收到的中断更高的优先级分配给从图形引擎218中已经完成之前的任务且准备好接受下一任务的一个图形引擎接收到的中断。例如,如果图形调度器112正在读取存储器中的应用工作负荷,则图形调度器112会由表明图形引擎218空闲的高优先级中断所中断。这使得图形调度器112中止应用工作负荷处理,将等待工作负荷提交给图形引擎218,然后返回到应用工作负荷处理。[0041]此外,中断可以发送到CPU102,例如,主机。在一些实施例中,这些中断经由显示引擎220发送,如箭头307所指示。然而,中断还可以独立于显示引擎220而发送到CPU102。中断可以发送到CPU102,从而将调度程序的状态(例如,调度程序是否已成功完成、挂起或失败)通知给在CPU102上运行的图形驱动器。中断还可以将工作队列内每个工作负荷的状态(例如,工作负荷的执行是否已经成功地完成、挂起或者失败)通知给CPU102。[0042]根据本文所公开的实施例,图形调度器112用来为图形引擎218或显示引擎220中任一者或者其任意组合来调度工作负荷。例如,响应于来自图形微控制器114的输入,图形调度器112可以将运行列表308提交给任意图形引擎218。运行列表308可以包括待由每个图形引擎218实施的具体工作负荷。[0043]在一些实施例中,每个图形引擎218包括命令流送器310,其配置为指向包含与待完成工作负荷有关的指令/命令的特定存储器单元,以及从存储器单元取得指令/命令。例如,运行列表308可以包括与特定存储器单元有关的多个工作负荷,并且命令流送器310可以包括运行列表端口寄存器(未示出),其包括基于运行列表308从其取得命令的特定存储器单元。图形调度器112可以通过将运行列表308写入相应的图形引擎的运行列表端口寄存器来提交运行列表308。[0044]此外,在各个实施例中,每个图形引擎218配置为实施与图形任务有关的具体工作负荷。例如,呈现图像引擎218A可配置为访问存储在图形存储器224中的图形数据,以及呈现这样的图形数据。在一些实施例中,呈现图像引擎218A包括呈现数据路径,其包括用于将GVA转换成HPA的变换表。MFX图形引擎218B可配置为实施视频解码图形任务,VE盒图形引擎218C可配置为实施视频编码图形任务。另外,WD盒图形引擎218D可配置为提供无线显示功能,而位块传送器图形引擎218E可配置为提供块图传输功能。[0045]根据本文所描述的实施例,一旦运行列表308已经提交给图形引擎218且由相应的命令流送器310处理,图形引擎218可以执行其各自的工作负荷。另外,可以生成中断以表明,例如,已经成功地完成了特定的工作负荷,或者在特定工作负荷执行期间发生了问题。[0046]显示引擎220还可以将事件传送给图形调度器112以在图形引擎218上能够调度新任务。例如,显示引擎220可以实施页面翻转,用于切换显示屏正显示的页面。显示引擎220可配置为在工作负荷完成时将例如“翻转完成”消息的完成消息发送到图形调度器112,如箭头304所指示。[0047]在各个实施例中,1MMU230配置为将GVA变换成HPA,如上所述。另外,1MMU230可用来访问工作负荷所请求的特定的存储器单元或页面。然而,在一些实施例中,因为页表移动器(walker)会发现GVA不具有到HPA的有效变换,或者试图访问的类型不被页表属性允许,例如对标记为只读的页面进行写访问,所以这种对存储器的访问会失败。这会使1MMU230生成页面错误事件,以通知系统软件内的1MMU驱动器(未示出)。1MMU驱动器随后可以固定页表以允许访问继续,例如页面故障结束,或者向1MMU230表明页面故障不能被服务。1MMU可以将页面故障结束或者没有结束的消息传送给图形调度器112。图形调度器112可利用这些信息来确定对图形引擎218的调度的可能的变化。例如,图形调度器可以决定对进展受页面故障阻碍的运行任务进行先占,且调度能够在图形引擎218上取得更好进展的不同的任务。[0048]图4是示出用于调度和执行工作队列的方法的过程流程图。上文参考图1、图2和图3所论述的图形调度器112可用来调度工作队列,图形引擎218可用来执行工作队列。[0049]方法开始于框402,在图形调度器处从应用接收工作队列。应用可以在图形调度器所在的计算设备上执行。工作队列可以包括待由也驻留在计算设备中的图形引擎执行的多个工作负荷。[0050]在框404中,经由图形调度器为每个图形引擎确定包含多个工作队列的运行列表。可以根据每个图形引擎所能够执行的工作队列的类型来确定运行列表。运行列表可以规定待由每个图形引擎执行的具体的工作队列以及工作队列的适当执行顺序。[0051]在框406中,图形调度器将每个运行列表提交给相应的图形引擎,其中图形引擎配置为执行运行列表内的工作队列。在一些实施例中,图形引擎立即执行工作队列。在其他实施例中,图形引擎等待规定时间,或者直至之前的运行列表执行完成,才执行工作队列。[0052]在框408中,从每个相应的图形引擎接收表明是否已经成功完成运行列表内的工作队列的消息。图形调度器可以使用该消息来判定调度程序是否已经成功完成。例如,如果任意运行列表内的工作队列执行失败,则图形调度器可以重新调度工作队列。[0053]在框410中,消息被转发给启动工作队列的应用和/或计算设备的CPU。在一些实施例中,如果消息表明工作队列已经成功完成,则应用和/或CPU可以访问由相应的图形引擎生成的工作队列的结果或输出。[0054]应当理解的是,图4的过程流程图不意在表明方法400的框是按任何特定顺序执行,或者在每种情况下都包含全部的框。此外,图4中未示出的任意数量的附加框可包含在方法400内,这取决于具体实现方式。[0055]图5是可以依照实施例使用的示例性地址空间500的框图。相似标记的部件如参考图1和图2所描述的。地址空间可以包括图形存储器映射输入/输出(MM1)502和LAPICMM1504,其提供图形子系统202内的各个设备和CPU102之间的输入和输出。地址空间500还包括SRAM232和bootROM240的部分,例如,SRAM232和bootROM240的地址空间400相关的特定工作负荷所引用的部分。[0056]地址空间500还可以包括图形虚拟存储器地址,例如GVA506,其与计算设备100的物理存储器(例如存储器设备104或图形存储器224)内的特定物理存储器地址(例如ΗΡΑ508)有关。[0057]在各个实施例中,驻存在例如1MMU230内的图形变换(GT)存储器接口510可用于将GVA506转换成HPA508。这可以响应于来自图形微控制器114的关于要实施某种动作的输入而实施。一旦已经获得HPA508,就可以访问驻存在相应的物理存储器地址处的具体的数据结构。[0058]可以经由多级页表移动来实施变换程序,其中包含在页表移动中的级数取决于要支持的地址空间的大小。页表移动可以基于例如图形变换表(GTT)或用于DMA设备的虚拟技术(VtD),以及其他。GTT可以用来将GVA506变换成HPA508。另外,可以在计算设备100内的应用108的装载或执行期间,通过图形驱动器来创建GTT。[0059]图6是示出工作负荷的多种可能状态的流程图600。标记相似的部件如参考图1和图2所描述的。当图形调度器112将工作负荷提交给图形引擎218之一时,工作负荷进入提交状态602。一旦工作负荷进入提交状态602,就可以尝试工作负荷的正常完成。如果接收到工作负荷正常完成的指示604,则工作负荷进入完成状态606。图形引擎218随后可以将表明工作负荷已经执行的通知发送给图形调度器112或者启动工作负荷的应用108。[0060]如果在第一次尝试时没有成功地完成工作负荷,而是遇到了在继续进行之前等待事件的通知608,则工作负荷进入等待状态610。事件可以是例如显示引擎220已经结束显示缓冲器(例如,翻转)或者已经发生页面故障的通知。工作负荷可以保留在等待状态,直到接收到已经完成翻转或者已经结束故障的指示612。一旦已经完成翻转或者已经结束故障,工作负荷进入就绪状态614。从就绪状态614,工作负荷可以重新进入提交状态602。[0061]如果接收到差错616的指示,则工作负荷可以进入差错状态618。另外,如果接收到差错的指示620(例如,故障结束差错)而工作负荷处于等待状态610,则工作负荷可以进入差错状态618。在一些实施例中,如果工作负荷进入差错状态618,则图形调度器112被通知执行特定工作负荷失败。图形调度器随后可以将该通知传达给应用108。[0062]图7是示出用于对图形硬件实施调度操作的方法700的过程流程图。方法700可以通过上文参考图1、图2和图3描述的计算设备100来实施。[0063]方法开始于框702,其中接收来自应用的与工作负荷有关的工作队列。可以从在计算设备的CPU上执行的应用来接收工作队列。每个工作队列可以包括多个工作负荷,其中工作负荷与待实施的图形任务有关。示例性图形任务包括呈现图形数据以产生图形图像,或者将图形图像显示给计算设备的用户。该图形图像可以包括像素图像、编码图像、视频图像或帧、静态图像、照片图像或动画图像,以及其他。[0064]在框704中,基于工作队列来实施对图形引擎的调度操作。在各个实施例中,经由图形调度器独立于CPU来实施调度操作。对图形引擎实施调度操作可包括:确定执行各工作负荷的图形引擎,以及确定为每个图形引擎执行工作负荷的顺序。为每个图形引擎执行工作负荷的顺序可以根据任何类型的优先化策略来确定。图形调度器可以通过写每个图形引擎的命令流送器内的运行列表端口寄存器来将确定的执行工作负荷的顺序通知给图形引擎。[0065]在一些实施例中,图形调度器可以通过将图形虚拟存储器地址变换成相应的物理存储器地址来访问与任何工作队列有关的物理存储器空间。访问这样的物理存储器空间可通过为图形调度器提供关于每个工作队列的更多的信息来辅助调度程序。例如,图形调度器可以通过分析与每个工作负荷有关的内容来确定特定工作队列内的工作负荷的大小和复杂度。[0066]可以从CPU、显示引擎或任何图形引擎或其任意组合来接收与调度操作有关的中断。可将这些中断收集到图形调度器的中断集合器内。中断随后可由图形调度器使用来实施调度操作。[0067]应当理解的是,图7的过程流程图不意在表示方法700的框应按任何特定顺序来执行或是在每种情况都包含所有的框。此外,可以在方法700内包含任何数量的附加框,这取决于具体实现方式。[0068]在一些实施例中,方法700还包括:在相应的图形引擎成功完成工作负荷时,通知应用。当图形引擎完成特定工作负荷时,图形引擎可以经由内部消息传送系统通知图形调度器:工作负荷已进入完成状态。图形调度器随后可以通知应用或主机(例如,CPU本身):工作负荷已经成功完成。此外,在一些实施例中,图形引擎可通知图形调度器:工作负荷是否已进入等待状态或差错状态。图形调度器随后可以通知应用或主机:图形引擎尚未完成工作负荷,或者完成工作负荷失败。[0069]图8是示出存储用于对图形硬件实施调度操作的代码的有形的、非暂态计算机可读介质800的框图。处理器802可以经由计算机总线804来访问有形的、非暂态计算机可读介质800。而且,有形的、非暂态计算机可读介质800可以包括配置为引导处理器802实施本文所描述的方法的代码。[0070]本文所论述的各软件组件可以存储在有形的计算机可读介质800上,如图8所示。例如,图形调度模块806可以配置为对图形硬件实施调度操作。另外,中断控制模块808可配置为分析从图形硬件或CPU接收到的中断,且对这些中断做出响应。[0071]图9是用于实现图形子系统202的示例性系统900的框图。相似标记的部件如参考图1和图2所描述。在一些实施例中,系统900是媒体系统。另外,系统900可以并入个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板电脑、触摸板、便携式计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视机、智能设备(例如,智能手机、智能平板电脑或智能电视机)、移动互联网设备(MID)、消息传送设备、数据通信设备等等。[0072]在各实施例中,系统900包括与显示器904耦合的平台902。平台902可以从诸如内容服务设备906或内容输送设备908的内容设备或其他类似的内容源接收内容。包括一个或多个导航特征的导航控制器910可用来与例如平台902和/或显示器904交互。这些组件中的每个组件将在下文进行详述。[0073]平台902可以包括芯片组912、处理器914、存储器设备916、存储设备918、图形子系统202、应用108和无线电设备920的任意组合。芯片组912可以提供处理器914、存储器设备916、存储设备918、图形子系统202、应用108和无线电设备920之间的相互通信。例如,芯片组912可以包括存储适配器(未示出),其能够提供与存储设备918的相互通信。[0074]处理器914可实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核、或任何其他微处理器或中央处理单元(CPU)。在一些实施例中,处理器914包括双核处理器、双核移动处理器等。[0075]存储器设备916可以实现为易失性存储器设备,例如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。存储设备918可以实现为非易失性存储设备,例如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附接的存储设备、闪存、电池备份SDRAM(同步DRAM)、和/或网络可存取存储设备。在一些实施例中,当例如包括多个硬盘驱动器时,存储设备918包括提高对有价值数字媒体的存储性能增强保护的技术。[0076]图形子系统202可以实施如静像或视频的图像的处理以便显示。图形子系统202可以包括例如图形处理单元(GPU)或视觉处理单元(VPU)。模拟或数字接口可用于将图形子系统202和显示器904通信耦合。例如,接口可以是高清晰多媒体接口、显示端口(DisplayPort)、无线HDMIjP/或无线HD兼容技术中的任一者。图形子系统202可集成到处理器914或芯片组912中。可选地,图形子系统202可以是与芯片组912通信耦合的独立卡。[0077]本文所述的图形和/或视频处理技术可在各种硬件体系结构中实现。例如,图形和/或视频功能可以集成在芯片组912内。可选地,可以使用离散的图形和/或视频处理器。作为又一实施例,图形和/或视频功能可以由包括多核处理器的通用处理器来实现。在另一实施例中,该功能可实现于消费者电子设备中。[0078]无线电设备920可以包括一个或多个能够利用各种适合的无线通信技术来发送和接收信号的无线电设备。这些技术可以涉及到跨越一个或多个无线网络的通信。示例性的无线网络包括无线局域网(WLAN)、无线个域网(WPAN)、无线城域网(WMAN)、蜂窝网络、卫星网络等。在跨越这些网络通信时,无线电设备920可以依照任何版本的一种或多种适用标准来工作。[0079]显示器904可以包括任何电视机类型的监控器或显示器。例如,显示器904可以包括计算机显示屏、触摸屏显示器、视频监控器、电视机等。显示器904可以是数字的和/或模拟的。在一些实施例中,显示器904是全息显示器。而且,显示器904可以是透明表面,其可以接收视觉投影。这种投影可以传送各种形式的信息、图像、物体等。例如,这种投影可以是用于移动增强现实(MAR)应用的视觉覆盖图。在一个或多个应用108的控制下,平台902可以将用户接口922显示在显示器904上。[0080]内容服务设备906可由任何国内的、国际的或独立的服务来掌管,因此可由平台902经由例如因特网来访问。内容服务设备906可以与平台902和/或显示器904耦合。平台902和/或内容服务设备908可以与网络924耦合,以与网络924进行媒体信息的通信(例如,发送和/或接收)。内容输送设备908还可以与平台902和/或显示器904耦八口ο[0081]内容服务设备906可以包括有线电视盒、个人计算机、网络、电话或能够输送数字信息的因特网启用设备。另外,内容服务设备906可以包括能够经由网络924或者直接地在内容提供商与平台902或显示器904之间进行单向或双向内容通信的任何其他类似设备。应理解的是,可经由网络924与系统900中的任一个组件和内容提供商进行内容的单向和/或双向通信。内容的示例可以包括任何媒体信息,例如包括视频、音乐、医疗和游戏信息,坐坐寸寸ο[0082]内容服务设备906可以接收诸如包括媒体信息、数字信息或其他内容的有线电视机节目的内容。内容提供商的示例可以包括任何电缆或卫星电视或无线电或因特网内容提供商,以及其他。[0083]在一些实施例中,平台902接收来自包括一个或多个导航特征的导航控制器910的控制信号。导航控制器910的导航特征可用来与例如用户接口922交互。导航控制器910可以是定点设备,其可以是允许用户将空间(例如,连续的和多维的)数据输入到计算机中的计算机硬件组件(具体为人机接口设备)。诸如图形用户接口(GUI)和电视机以及监控器的许多系统允许用户利用身体姿势来控制且提供数据给计算机或电视机。[0084]导航控制器910的导航特征的移动可通过指针、光标、聚焦环或者显示在显示器904上的其他可视化指示器的移动而反映在显示器904上。例如,在应用108的控制下,位于导航控制器910上的导航特征可以映射到用户接口922所显示的虚拟导航特征上。在一些实施例中,导航控制器910可以不是单独的组件,而是可以集成到平台902和/或显示器904中。[0085]系统900可以包括驱动器(未示出),驱动器包括例如在启用时使在初始启动之后用户能够通过触摸按钮来立即打开和关闭平台902的技术。当平台“关闭”时,程序逻辑可允许平台902将内容流送到媒体适配器或其他内容服务设备906或者内容输送设备908。另外,芯片组912可以包括支持例如5.1环绕声音频和/或高清晰7.1环绕声音频的硬件和/或软件。驱动器可以包括用于集成图形平台的图形驱动器。在一些实施例中,图形驱动器包括高速外围部件互连(PCIe)图形卡。[0086]在各实施例中,系统900中所示的任意一个或多个组件可以集成。例如,平台902和内容服务设备906可以集成;平台902和内容输送设备908可以集成;或者平台702、内容服务设备906和内容输送设备908可以集成。在一些实施例中,例如,平台902和显示器904是集成单元。显示器904和内容服务设备906可以集成,或者显示器904和内容输送设备908可以集成。[0087]系统900可以实现为无线系统或有线系统。当实现为无线系统时,系统900可以包括适合于通过无线共享媒体通信的组件和接口,例如一个或多个天线、发射器、接收器、收发器、放大器、滤波器、控制逻辑等等。无线共享媒体的示例可以包括无线频谱的部分,例如RF频谱。当实现为有线系统时,系统900可以包括适合通过有线通信介质通信的组件和接口,例如输入/输出(I/O)适配器、将I/O适配器与相应的有线通信介质连接的物理连接器、网络接口卡(NIC)、磁盘控制器、视频控制器、音频控制器等。有线通信介质的示例可包括电线、线缆、金属导线、印刷电路板(PCB)、底板、交换结构、半导体材料、双绞线、同轴电缆、光纤等。[0088]平台902可以建立用来进行信息通信的一个或多个逻辑或物理信道。信息可以包括媒体信息和控制信息。媒体信息可指代表专用于用户的内容的任何数据。内容的示例可以包括例如来自语音对话的数据、视频会议、流送视频、电子邮件(email)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等。来自语音对话的数据可以是例如语音信息、沉默期间、背景噪声、舒适噪音、音调等。控制信息可以指专用于自动化系统的代表命令、指令或控制字的任何数据。例如,控制信息可用来路由媒体信息通过系统,或者指示节点以预定方式处理媒体信息。然而,实施例不限于图9所示或所描述的要素或背景。[0089]图10是可以具体实现图9的系统900的小形状因数设备1000的示意图。相似标记的部件如参考图9所描述。在一些实施例中,例如,设备1000实现为具有无线能力的移动计算设备。移动计算设备可指具有处理系统以及诸如一个或多个电池的移动电源或电力供应的任何设备。[0090]如上所述,移动计算设备的示例可以包括个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板式电脑、触摸板、便携式计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视机、智能设备(例如,智能手机、智能平板电脑或智能电视机)、移动互联网设备(MID)、消息传送设备、数据通信设备,等等。[0091]移动计算设备的示例还可以包括布置成可由人穿戴的计算机,例如腕式计算机、手指计算机、环型计算机、眼镜计算机、带夹计算机、臂带计算机、鞋计算机、衣物计算机或任何其他适合类型的可穿戴计算机。例如,移动计算设备可以实现为能够执行计算机应用以及语音通信和/或数据通信的智能手机。虽然通过举例的方式用实现为智能手机的移动计算设备描述了一些实施例,但可以理解,同样可以利用其他的无线移动计算设备来实现其他实施例。[0092]如图10所示,设备1000可以包括壳体1002、显示器1004、输入/输出(I/O)设备1006和天线1008。设备1000还可以包括导航特征1010。显示器1004可以包括用于显示适合于移动计算设备的信息的任何适合的显示单元。I/o设备1006可以包括用于将信息输入移动计算设备的任何适合的I/O设备。例如,I/O设备1006可以包括字母数字键盘、数字键区、触摸板、输入键、按钮、开关、摇杆开关、麦克风、扬声器、语音识别设备和软件,等等。信息还可以通过麦克风输入到设备1000。这种信息可通过语音识别设备来数字化。[0093]示例I[0094]此处描述了一种计算设备。计算设备包括:中央处理单元(CPU),其配置为执行应用;以及图形调度器,其配置为独立于CPU操作。图形调度器配置为从将要在CPU上执行的应用接收与工作负荷有关的工作队列,且基于该工作队列对多个图形引擎中的任一个图形引擎实施调度操作。[0095]图形调度器可以包括图形微控制器和中介层。图形微控制器可以经由中介层与图形引擎接口。图形调度器可配置为通过写图形引擎的运行列表端口寄存器来对图形引擎实施调度操作。另外,每个图形引擎可配置为执行特定类型的工作负荷。[0096]图形调度器可配置为访问与任何工作队列有关的物理存储器空间。为访问与任意工作队列有关的物理存储器空间,图形调度器可配置为经由输入/输出存储器管理单元(1MMU)将图形虚拟存储器地址变换成相应的物理存储器地址。图形调度器还可配置为基于工作队列对显示引擎实施调度操作。另外,图形调度器可配置为经由中断集合器从图形引擎、CPU或显示引擎中的任一者或者其任意组合来收集中断,并且利用中断来实施调度操作。[0097]计算设备可以包括无线电设备,其中无线电设备与CPU通信地耦合。计算设备还可以包括显示器,其中显示器与CPU通信地耦合。另外,图形调度器可配置为独立于CPU的功率状态而操作。[0098]示例2[0099]此处描述了对图形硬件实施调度操作的方法。该方法包括:在计算设备的图形调度器处,从在计算设备的中央处理单元(CPU)上执行的应用接收与工作负荷有关的工作队列。该方法还包括:基于工作队列对多个图形引擎中的任一个图形引擎实施调度操作,其中调度操作是经由图形调度器独立于CPU而实施的。[0100]对图形引擎实施调度操作可以包括:确定图形引擎执行工作负荷的顺序。确定图形引擎执行工作负荷的顺序可以包括写图形引擎的运行列表端口寄存器。[0101]在一些实施例中,通过将图形虚拟存储器地址变换成相应的物理存储器地址,可以访问与任何工作队列有关的物理存储器空间。另外,在一些实施例中,可对显示引擎实施调度操作。[0102]可以从CPU、显示引擎或任何图形引擎或者其任意组合来接收与调度操作有关的中断。中断可用来实施调度操作。另外,在一些实施例中,在相应的图形引擎成功完成工作负荷时,可以通知应用。[0103]示例3[0104]此处描述了其中存储有指令的至少一种非暂态机器可读介质。响应于在计算设备上执行,指令使计算设备在图形调度器处从在中央处理单元(CPU)上执行的应用接收与工作负荷有关的工作队列。指令还使计算设备基于工作队列对多个图形引擎中的任一个实施调度操作,其中经由图形调度器独立于CPU来实施调度操作。[0105]实施调度操作可以包括确定执行多个工作负荷中的每一个工作负荷的图形引擎。另外,对图形引擎实施调度操作可以包括确定图形引擎执行工作负荷的顺序。此外,在一些实施例中,指令可在相应的图形引擎成功完成工作负荷时使得计算设备通知应用。[0106]应当理解,上述示例中的细节可以在一个或多个实施例中的任何地方使用。例如,上述的计算设备的全部任选特征还可以结合本文所描述的方法或计算机可读介质来实现。此外,虽然此处使用了流程图和/或状态图来描述实施例,但是本发明不限于此处的那些图或者相应的描述。例如,无需精确地按照如图所示和此处所描述的相同的顺序来使流程移过每个图示的框或状态。[0107]本发明不限于本文所列出的特定细节。事实上,从本公开获益的本领域技术人员将理解到,可以在本发明的范围内实现前述说明和附图的许多其他的变型例。相应地,下面的权利要求书包含了限定本发明范围的任何修改。【权利要求】1.一种计算设备,包括:中央处理单元(CPU),所述CPU配置为执行应用;图形调度器,其配置为独立于所述CPU操作,所述图形调度器配置为:接收来自在所述CPU上执行的所述应用的与工作负荷有关的工作队列;以及基于所述工作队列对多个图形引擎中的任一个图形引擎实施调度操作。2.如权利要求1所述的计算设备,其中,所述图形调度器包括图形微控制器和中介层。3.如权利要求2所述的计算设备,其中,所述图形微控制器经由所述中介层与所述多个图形引擎接口。4.如权利要求1所述的计算设备,其中,所述图形调度器配置为通过对图形引擎的运行列表端口寄存器进行写入来对该图形引擎实施调度操作。5.如权利要求1所述的计算设备,其中,所述图形引擎中的每一个均配置为执行特定类型的工作负荷。6.如权利要求1所述的计算设备,其中,所述图形调度器配置为访问与任意所述工作队列有关的物理存储器空间。7.如权利要求6所述的计算设备,其中,为访问与任意所述工作队列有关的所述物理存储器空间,所述图形调度器配置为经由输入/输出存储器管理单元(1MMU)将图形虚拟存储器地址变换成相应的物理存储器地址。8.如权利要求1所述的计算设备,其中,所述图形调度器配置为基于所述工作队列而对显示引擎实施调度操作。9.如权利要求8所述的计算设备,其中,所述图形调度器配置为:经由中断集合器来收集来自所述多个图形引擎、所述CPU或所述显示引擎或其任意组合中的任一者的中断;以及利用所述中断来实施所述调度操作。10.如权利要求1所述的计算设备,包括无线电设备,其中所述无线电设备与所述CPU通信地耦合。11.如权利要求1所述的计算设备,包括显示器,其中所述显示器与所述CPU通信地耦口O12.如权利要求1所述的计算设备,其中,所述图形调度器配置为独立于所述CPU的功率状态而操作。13.一种对图形硬件实施调度操作的方法,包括:在计算设备的图形调度器处接收来自在所述计算设备的中央处理单元(CPU)上执行的应用的与工作负荷有关的工作队列;以及基于所述工作队列而对多个图形引擎中的任一个图形引擎实施调度操作,其中所述调度操作是经由所述图形调度器独立于所述CPU而执行的。14.如权利要求13所述的方法,其中,对图形引擎实施调度操作包括:确定所述图形引擎执行工作负荷的顺序。15.如权利要求14所述的方法,其中,确定所述图形引擎执行工作负荷的顺序包括:对所述图形引擎的运行列表端口寄存器进行写入。16.如权利要求13所述的方法,包括:通过将图形虚拟存储器地址变换成相应的物理存储器地址,来访问与任意所述工作队列有关的物理存储器空间。17.如权利要求13所述的方法,包括:从所述CPU或所述多个图形引擎中的任一个图形引擎或者其任意组合接收与所述调度操作有关的中断。18.如权利要求17所述的方法,包括:利用所述中断来实施所述调度操作。19.如权利要求13所述的方法,包括:在相应的图形引擎成功完成工作负荷时,通知所述应用。20.至少一种非暂态机器可读介质,其中存储有指令,响应于在计算设备上执行,所述指令使所述计算设备:在图形调度器处接收来自在中央处理单元(CPU)上执行的应用的与工作负荷有关的工作队列;以及基于所述工作队列对多个图形引擎中的任意一个图形引擎实施调度操作,其中所述调度操作是经由所述图形调度器独立于所述CPU来执行的。21.如权利要求20所述的至少一种非暂态机器可读介质,其中,实施调度操作包括:确定执行多个工作负荷中的每一个工作负荷的图形引擎。22.如权利要求20所述的至少一种非暂态机器可读介质,其中,对图形引擎实施调度操作包括:确定所述图形引擎执行工作负荷的顺序。23.如权利要求22所述的至少一种非暂态机器可读介质,其中,确定所述图形引擎执行工作负荷的顺序包括:对所述图形引擎的运行列表端口寄存器进行写入。24.如权利要求20所述的至少一种非暂态机器可读介质,其中,所述指令使所述计算设备在相应的图形引擎成功完成工作负荷时通知所述应用。【文档编号】G06F9/46GK104380258SQ201380032147【公开日】2015年2月25日申请日期:2013年6月25日优先权日:2012年7月18日【发明者】B·韦姆布,A·纳瓦勒,M·拉玛多斯,D·I·斯坦德林,K·巴拉申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1