具有命令处理器的图形处理单元的制作方法
【专利摘要】本发明的方面涉及一种控制图形处理单元的方法。在一实例中,所述方法包含从主机处理器接收一个或一个以上任务,以及从所述主机处理器独立地调度所述一个或一个以上任务以由着色器处理器和一个或一个以上固定功能硬件单元选择性地执行,其中所述着色器处理器经配置以并行执行多个指令,且所述一个或一个以上固定功能硬件单元经配置以再现图形数据。
【专利说明】具有命令处理器的图形处理单元
【技术领域】
[0001 ] 本发明的方面涉及图形处理。
【背景技术】
[0002]图形处理单元(GPU)通常经实施以再现三维(3D)图形内容以供在二维视觉显示器上呈现。举例来说,GPU可经实施以再现表示显示器上的3D内容的像素。GPU可执行图形处理以当再现场景时产生显示器的每一像素的像素值。
[0003]一些GPU可一次再现整个场景。或者,GPU可在场景的较小部分(通常称为场景的“瓦片”)中再现图形。举例来说,GPU可将场景再分为多个瓦片,且个别地再现瓦片的每一者。GPU可接着通过组合经再现瓦片的每一者而重建场景。瓦片可经设定大小使得与特定瓦片相关联的数据可在再现期间存储在本地GPU存储器资源中。
【发明内容】
[0004]一般来说,本发明描述用于控制图形处理单元(GPU)的技术。更特定来说,本发明描述用于使用集成处理单元管理GPU的资源的技术。即,举例来说,代替于从CPU接收指示将如何利用GPU的资源的命令流,GPU的集成处理单元可接收通常界定待由GPU执行的工作的计算任务。GPU的集成处理单元可接着确定所述任务如何由GPU的资源执行。举例来说,GPU的集成处理单元可接收任务且独立地向特定GPU资源调度所述任务,借此控制执行任务的GPU的资源。
[0005]在一实例中,图形处理单元包括着色器处理器、一个或一个以上固定功能硬件单元,以及命令处理器。着色器处理器经配置以并行执行多个指令。所述一个或一个以上固定功能硬件单元经配置以再现图形数据。命令处理器单元经配置以从主机处理器接收一个或一个以上任务且独立地调度所述一个或一个以上任务以由着色器处理器和所述一个或一个以上固定功能硬件单元选择性地执行。
[0006]在另一实例中,一种用于控制图形处理单元的方法包括从主机处理器接收一个或一个以上任务,以及从主机处理器独立地调度所述一个或一个以上任务以由着色器处理器和一个或一个以上固定功能硬件单元选择性地执行,其中所述着色器处理器经配置以并行执行多个指令,且所述一个或一个以上固定功能硬件单元经配置以再现图形数据。
[0007]在另一实例中,一种用于控制图形处理单元的设备包括用于从主机处理器接收一个或一个以上任务的装置,以及用于从主机处理器独立地调度所述一个或一个以上任务以由着色器处理器和一个或一个以上固定功能硬件单元选择性地执行的装置,其中所述着色器处理器经配置以并行执行多个指令,且所述一个或一个以上固定功能硬件单元经配置以再现图形数据。
[0008]在另一实例中,一种包括计算机可读媒体的计算机程序产品,所述计算机可读媒体包括存储在其上的指令,所述指令当执行时致使一个或一个以上处理器从主机处理器接收一个或一个以上任务,且从主机处理器独立地调度所述一个或一个以上任务以由着色器处理器和一个或一个以上固定功能硬件单元选择性地执行,其中所述着色器处理器经配置以并行执行多个指令,且所述一个或一个以上固定功能硬件单元经配置以再现图形数据。
[0009]本发明的一个或一个以上方面的细节在附图和以下描述中陈述。本发明的其它特征、目标和优点将从所述描述和图式且从权利要求书变得显而易见。
【专利附图】
【附图说明】
[0010]图1是说明具有可实施本发明的技术的图形处理单元的计算装置的框图。
[0011]图2是说明实例图形再现管线的框图。
[0012]图3是更详细说明图1所示的实例的图形处理单元的框图。
[0013]图4是说明根据本发明的方面命令处理器的实例操作的流程图。
[0014]图5是说明根据本发明的方面命令处理器的另一实例操作的流程图。
【具体实施方式】
[0015]一般来说,本发明描述用于控制图形处理单元(GPU)的技术。更特定来说,本发明描述用于使用集成处理单元管理GPU的资源的技术。即,举例来说,代替于从CPU接收指示将如何利用GPU的资源的命令流,GPU的集成处理单元可接收通常界定待由GPU执行的工作的计算任务。GPU的集成处理单元可接着确定所述任务如何由GPU的资源执行。举例来说,GPU的集成处理单元可接收任务且独立地向特定GPU资源调度所述任务,借此控制执行任务的GPU的资源。
[0016]图1是说明根据本发明的方面可实施用于管理GPU的资源的技术的计算装置20的框图。如图1所示,计算装置20包含主机处理器24、存储装置28、存储器32、网络模块36、用户接口 40和显示器44。计算装置20还包含图形处理单元(GPU)48,其具有一个或一个以上着色器处理器52、一个或一个以上固定功能单元54和命令处理器56。计算装置20可在一些实例中包含便携式或移动计算装置(例如,移动电话、上网本、膝上型计算机、平板计算机、数字媒体播放器、游戏装置,或其它便携式计算装置)或为其一部分。或者,计算装置20可配置为静止计算装置,例如桌上型计算机、服务器、电视机、电视机机顶盒、游戏控制台等。
[0017]图1的所说明的计算装置20仅为一个实例。用于管理GPU(例如,GPU48)的资源的技术可由具有其它组件的多种其它计算装置实行。在一些实例中,计算装置20可包含图1为简洁起见未图示的额外组件。举例来说,计算装置20可包含用于在计算装置20的组件之间传递数据的一个或一个以上通信桥。此外,图1所示的计算装置20的组件可能并非在计算装置20的每个实例中均为必要的。举例来说,在计算装置20为桌上型计算机的实例中,用户接口 40和显示器44可在计算装置20外部。
[0018]主机处理器24可包含微处理器、控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或等效离散或集成逻辑电路的任一者或一者以上。另夕卜,在本发明中,属于主机处理器24的功能可体现为软件、固件、硬件或其任何组合。
[0019]主机处理器24处理指令以供在计算装置20内执行。主机处理器24可能够处理存储在存储装置28上的指令或存储在存储器32中的指令。主机处理器24可使用驱动器(例如,其可实施在由主机处理器24执行的软件中)产生命令流以供由GPU48执行。S卩,主机处理器24可产生界定待由GPU48执行的操作的命令流。
[0020]主机处理器24可产生待由GPU48执行的命令流,其致使在显示器44上显示可检视内容。举例来说,主机处理器24可产生提供针对GPU48的指令以再现图形数据的命令流。在此实例中,主机处理器24可产生由图形再现管线(例如,参看图2展示和描述的管线)执行的命令流。
[0021]另外或作为替代,主机处理器24可产生待由GPU48执行的命令流,其致使GPU48执行其它操作。举例来说,在一些例子中,主机处理器24可产生用于将GPU48用作通用图形处理单元(GPGPU)的命令流。举例来说,GPU48可实行传统上由主机处理器24实行的多种通用计算功能。实例包含多种图像处理功能,包含视频解码和后处理(例如,解块、噪声减小、颜色校正等)以及其它专用图像处理功能(例如,面部检测/辨识、图案辨识、小波变换等)。在一些实例中,GPU48可与主机处理器24协作以执行此类GPGPU应用。举例来说,主机处理器24可通过向GPU48提供命令流以供由GPU48执行而将某些功能卸载到GPU48。
[0022]存储装置28可包含一个或一个以上计算机可读存储媒体。存储装置28可经配置用于信息的长期存储。在一些实例中,存储装置28可包含非易失性存储元件。此类非易失性存储元件的实例可包含磁硬盘、光盘、软盘、快闪存储器,或电可编程存储器(EPROM)或电可擦除且可编程(EEPROM)存储器的形式。存储装置28可在一些实例中视为非暂时性存储媒体。术语“非暂时性”可指示存储媒体不体现在载波或所传播信号中。然而,术语“非暂时性”不应解释为表示存储装置28为非可移动的。作为一个实例,存储装置28可从计算装置20移除且移动到另一装置。作为另一实例,大体类似于存储装置28的存储装置可插入到计算装置20中。存储装置28可存储指令以供由主机处理器24或GPU48执行一个或一个以上应用程序。
[0023]存储器32可经配置以在操作期间将信息存储在计算装置20内。在一些实例中,存储器32为临时存储器,意味着存储器32的主要目的不是长期存储。存储器32可在一些实例中描述为计算机可读存储媒体。因此,存储器32也可视为“非暂时性”,尽管存储可随时间改变的数据。存储器32还可在一些实例中描述为易失性存储器,意味着当计算机切断时存储器32不维持所存储内容。易失性存储器的实例包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM),以及此项技术中已知的其它形式的易失性存储器。
[0024]在一些实例中,存储器32可用于存储程序指令以供由主机处理器24或GPU48执行。存储器32可由在计算装置20上运行的软件或应用程序使用以临时存储程序执行期间的信息。如此,存储器32可由计算装置20的其它组件(例如,主机处理器24和GPU48)存取。
[0025]根据本发明的一些方面,存储器32可实施为在数据由显示器44显示之前存储像素数据(例如,视频数据帧、计算机产生的图形图像、静态图像等)的显示缓冲器。举例来说,GPU48可在像素数据由显示器44显示之前将像素数据解析到存储器32。
[0026]计算装置20可利用网络模块36经由一个或一个以上网络(例如,一个或一个以上无线网络)与外部装置通信。网络模块36可为网络接口卡,例如以太网卡、光学收发器、射频收发器,或可发送和接收信息的任何其它类型的装置。在一些实例中,计算装置20可利用网络模块36以无线方式与例如服务器、移动电话或其它联网计算装置等外部装置通?目。
[0027]计算装置20还包含用户接口 40。用户接口 40的实例包含(但不限于)跟踪球、鼠标、键盘和其它类型的输入装置。用户接口 40还可包含作为显示器44的一部分并入的触敏屏幕。显示器44可包括液晶显示器(LCD)、有机发光二极管(OLED)显示器、等离子体显示器,或另一类型的显示装置。
[0028]计算装置20的GPU48可为具有用于再现图形和执行GPGPU应用程序的固定功能且可编程组件的专门硬件单元。举例来说,根据图1所示的实例,GPU48包含可编程着色器处理器52、固定功能单元54 (其可包含固定功能硬件组件)和命令处理器56。GPU48还可包含DSP、通用微处理器、ASIC、FPGA或其它等效集成或离散逻辑电路。GPU48还可包含其它组件,例如专门GPU存储器,如参看图3-4更详细描述。
[0029]另外,尽管图1中展示为单独组件,但在一些实例中,GPU48可形成为主机处理器24的一部分。GPU48可经配置以利用根据多种应用编程接口(API)的处理技术。举例来说,用户可使用可在多个平台、操作系统和硬件上运行的标准软件接口对待由GPU48执行的应用程序编程。
[0030]在一些实例中,GPU48可经配置以利用使用OpenGL平台(包含针对内嵌式系统的0penGL(2007年3月发布且公开可用的“OpenGL ES”))产生的应用程序。其它实例API包含计算统一装置架构(由NVI DIA公司开发的“CUDA”,2010年9月17日发布的版本3.2)和DirectX(由微软公司开发,2009年10月27日发布的版本11)。一般来说,API包含由相关联硬件执行的一组预定标准化命令。API命令允许用户指示GPU的硬件组件在用户不知道硬件组件的细节的情况下执行命令。
[0031]虽然图1的实例将着色器处理器52展示为单一块,但着色器处理器52可包含一个或一个以上着色器处理单元,且可通常称为“统一着色器处理器”。即,举例来说,着色器处理器52可执行几何、顶点、像素或其它着色操作(例如,参考图2的实例中展示的着色器级描述的操作)以再现图形。在另一实例中,着色器处理器52可执行通用计算。即,着色器处理器52可执行与GPGPU应用程序相关联的指令。GPGPU应用程序通常包含一个或一个以上内核,其界定可用于分析或修改多种输入数据的功能。实例包含用于并行处理相对大数值数据集的功能。在图像处理上下文中,功能可包含例如颜色校正算法、面部检测算法,或用于实行经扩增现实应用程序的功能。其它实例包含变换功能、用于射线追踪的功能,或多种其它功能。
[0032]着色器处理器52可通常经配置以并行执行多个指令。举例来说,着色器处理器52可包含并行执行指令的处理单元(例如,比如算术逻辑单元(“ALU”))的阵列。因此,着色器处理器52可包含图3未特定展示的一个或一个以上组件,例如用于取得和解码指令的组件、用于负载平衡的组件,以及用于实行计算的一个或一个以上ALU或其它计算单元。着色器处理器52还可包含一个或一个以上存储器、高速缓冲存储器或寄存器(例如,比如参看图3的实例展示和描述的着色器处理器存储器60)。
[0033]固定功能单元54可包含一个或一个以上单元,例如固定功能硬件组件,用于再现图形数据。举例来说,固定功能单元54可包含用于执行图形数据的初始输入汇编以准备图形数据(三角形、线和点)用于再现的单元。在另一实例中,固定功能单元54可包含用于执行光栅化的单元。即,固定功能单元54可准备图元用于在光栅化期间着色。固定功能单元54还可执行与再现图形数据和/或执行其它操作相关联的多种其它操作。
[0034]如上所述,GPU48可再现图形以供在显示器44上显示。举例来说,GPU48可使用着色器处理器52和/或固定功能单元54来执行与图形再现管线(例如,图2所示的实例管线)的级相关联的操作。根据本发明的一些方面,GPU48可实施基于瓦片的再现架构。举例来说,代替于再现像素数据的整个场景(例如,视频数据的帧、计算机产生的图形图像、静态图像等),GPU48可将场景分解为多片(例如,“瓦片”),且个别地再现所述瓦片。GPU48可将经再现瓦片的每一者写入到缓冲器,例如存储器32中包含的显示缓冲器。在将场景的所有瓦片写入到存储器32后,计算装置20可即刻汇编经再现瓦片且在显示器44上显示场景。[0035]当实施为GPGPU时,GPU48可执行着色器程序,本文称为内核。举例来说,如参看图3更详细描述,着色器处理器52可执行内核以执行多种通用计算功能,例如图像处理功能和其它功能。内核可由用户使用API (例如上文描述的实例API)来界定。内核可包括分组为工作群组的个别工作项目(例如,GPU中的基本工作单元)。在一些实例中,GPU48可在执行GPGPU命令流时以特定序列执行内核。即,着色器处理器52可在移动到下一内核之前并行执行同一内核的多个例项。在其它实例中,GPU48可同时执行多个内核。
[0036]一般来说,如上所述,GPU48从主机处理器(例如,主机处理器24)接收命令流。所述命令流通常由正由主机处理器24执行的软件驱动器产生,且控制着色器处理器52和固定功能单元54的操作。举例来说,命令流通常控制GPU48的哪些组件执行命令流中界定的操作。
[0037]归因于一些GPU的配置强加的约束和命令流的限制,例如GPU48等GPU可通常一次执行单一任务。举例来说,GPU48可串行执行命令流中包含的每一操作。因此,GPU48的某些资源可在其它资源正根据命令流处理指令时闲置。即,GPU48的着色器处理器52可在固定功能单元54闲置时根据命令流执行操作。
[0038]在一些实例中,多任务可由主机处理器24通过在适宜时间在一个以上命令流之间切换而模拟。然而,命令流切换可相对时间密集且可使得难以有效共享GPU资源来实行多个任务。举例来说,可存在与从一个命令流到另一命令流的切换相关联的相对高等待时间。因此,在各个再现操作与其它操作(例如,通用操作(例如,图像处理、射线追踪等))之间切换可能低效。另外,归因于关于何时将执行任务的不确定性,经由命令流向GPU48指派高优先级时间要求严格的任务(例如,多媒体处理任务,比如音频处理)可能低效。举例来说,包含在命令流中的操作的执行时间可难以确定且可依据正由GPU48执行的现有命令而显著变化。
[0039]根据本发明的方面,命令处理器56可在本地控制GPU资源而无主机处理器(例如,主机处理器24或另一主机处理单元(例如,中央处理单元(CPU)))的干预。举例来说,根据本发明的方面,GPU48的命令处理器56可从主机处理器24接收一个或一个以上“任务”。命令处理器56可独立地调度所述任务由GPU48的资源(包含(例如)着色器处理器52和固定功能单元54)执行。即,代替于从主机处理器24接收指示如何利用GPU资源的命令流,命令处理器56可接收通常界定待由GPU执行的工作的一个或一个以上较高级任务。此类任务可界定待由GPU48执行的操作,而不指示GPU48的哪些资源将用于执行所述操作。
[0040]命令处理器56可独立地确定何时执行所述任务和/或哪些资源执行所述任务。即,本发明的方面可提及命令处理器56独立地确定何时执行所述任务和/或哪些资源执行所述任务,这可通常指代命令处理器56在无来自主机处理器24的干预(例如,无从例如主机处理器24产生的命令流提供的干预)的情况下控制任务的执行的能力。如下文更详细描述,此类确定可基于资源可用性和/或任务优先级以及其它潜在考虑而作出。命令处理器56还可独立地控制GPU48的各个资源之间的数据流。
[0041]命令处理器56可同时控制多个任务,包含独立且选择性地向GPU48的不同资源(例如,着色器处理器52和/或固定功能单元54)分配任务。即,命令处理器56可控制任务的执行而无来自主机处理器24的干预,且选择GPU48的哪些资源执行每一任务而非GPU48的所有资源必须专用于执行单一任务。在实例中,命令处理器56可调度图形再现任务由GPU48的固定功能单元54执行,同时还选择性地调度计算任务由GPU48的着色器处理器52同时执行。以此方式,命令处理器56可使GPU48能够并行执行多个任务,而不必等待主机处理器24切换命令流。事实上,主机处理器24可将多个任务发送到命令处理器56,且命令处理器56可控制任务的执行。
[0042]GPU48在本地控制GPU资源而无来自主机处理器24的干预的能力可提供增加的灵活性且促进GPU资源的有效管理。举例来说,如上文描述,主机处理器24传统上将命令流发射到GPU48,GPU48以管线方式使用GPU48的资源循序执行所述命令流。单一操作通常由GPU48在给定时间执行,使得GPU的一些资源可闲置,同时等待其它资源完成执行特定命令流。即,在出于说明的目的的实例中,某些固定功能单元54可正执行图形再现操作,同时着色器处理器52保持闲置。
[0043]根据本发明的方面,命令处理器56可通过减小GPU48的资源闲置的时间量而有效增加。举例来说,代替于将GPU资源视为可仅一次处理一个命令流的一系列互连组件,命令处理器56可个别且选择性地控制GPU48的资源。在上文提供的实例中,命令处理器56可向GPU48的固定功能单元54调度图形再现任务,同时还向GPU48的着色器处理器52调度不同计算任务。因此,命令处理器56通过选择性地向GPU48的不同资源调度任务而非使GPU48的所有资源一次执行一个任务来潜在地减小GPU资源闲置的时间量。
[0044]图2说明图形再现管线80。一般来说,图形再现管线80可用于以GPU(例如,GPU48(图1))再现图形。应理解,管线80仅出于阐释的目的提供,且较少、额外或替代级可包含在管线80中。
[0045]图形再现管线80通常包含可编程级(例如,以圆形隅角说明)和固定功能级(例如,以正方形隅角说明)。举例来说,与图形再现管线80的某些级相关联的图形再现操作通常由可编程着色器处理器(例如,着色器处理器52)执行,而与图形再现管线80的其它级相关联的其它图形再现操作通常由非可编程固定功能硬件单元(例如,固定功能单元54)执行。由着色器处理器52执行的图形再现级可通常称为“可编程”级,而由固定功能单元54执行的级可通常称为固定功能级。
[0046]输入汇编器级82在图2的实例中展示为固定功能级且通常负责将图形数据(三角形、线和点)供应到图形再现管线80。举例来说,输入汇编器级82可收集高阶表面、图元等的顶点数据,且将顶点数据和属性输出到顶点着色器级84。
[0047]顶点着色器级84可处理所接收顶点数据和属性。举例来说,顶点着色器级84可执行例如变换、皮肤设定、顶点移位和计算每顶点材料属性等每顶点处理。在一些实例中,顶点着色器级84可产生纹理坐标、顶点颜色、顶点照明、雾因数等。顶点着色器级84通常取单一输入顶点且输出单一经处理输出顶点。
[0048]镶嵌的过程可通常由外壳着色器级(hull shader stage) 86、镶嵌器级(tessellator stage)88 和域着色器级(domain shader stage)90 执行。举例来说,外壳着色器级86可产生镶嵌因数以传递到镶嵌器级88。在一实例中,外壳着色器级86可将界定低阶表面的输入数据变换为组成斑的控制点。斑可包含一起指定对象的表面的相对小部分的某些特性(例如,比如几何形状)的多个节点的每一者的数据。镶嵌器级88可为固定功能级,其使用来自外壳着色器级86的镶嵌因数将斑镶嵌(或再分)为多个三角形或四边形图元。从镶嵌器级88产生的每一顶点可输出到域着色器级90。域着色器级90可评估每一顶点处的表面表示。域着色器级90可将每一顶点的完整数据(例如,位置、纹理坐标等)发送到几何着色器92。
[0049]几何着色器级92可接收顶点数据(例如,三角形的三个顶点、线的两个顶点,或点的单一顶点)界定的图元且进一步处理所述图元。举例来说,几何着色器级92可执行例如轮廓边缘检测和阴影体积挤出等每图元处理,以及其它可能的处理操作。
[0050]光栅器级94通常为负责修剪和准备像素着色器级96的图元的固定功能级。举例来说,光栅器级94可产生若干碎片以供像素着色器96进行阴影处理。像素着色器级96从光栅器级94接收碎片且产生例如颜色等每像素数据。像素着色器级96还可执行例如纹理混合和照明模型计算等每像素处理。输出合并器级98通常负责组合各种类型的输出数据(例如,像素着色器值、深度和模版信息)以产生最终结果。
[0051]如上所述,图形再现管线80通常包含可编程级(例如,以圆形隅角说明)和固定功能级(例如,以正方形隅角说明)。因此,图形再现管线80的一些级通常由例如着色器处理器(例如,图1的实例中展示的着色器处理器52)等可编程组件执行,而图形再现管线80的其它级通常由非可编程固定功能硬件单元(例如,图1的实例中展示的固定功能单元54)执行。
[0052]根据本发明的方面,命令处理器(例如,图1的实例中展示的命令处理器56)可用于独立地控制图形再现管线80的级的每一者。举例来说,代替于数据由管线80的每一级循序处理,根据本发明的方面,命令处理器56可独立地控制管线80的级。S卩,命令处理器56可向输入汇编器82,分配第一计算任务,且向着色器级的一者(其使用着色器处理器52)分配第二计算任务。在此实例中,第二计算任务经由输入汇编器82路由或执行,如管线处理中通常将发生。因此,输入汇编器82可正执行图形再现功能,而着色器处理器52正执行另一任务(例如,GPGPU操作)。
[0053]图3是更详细说明GPU48的框图,GPU48可经实施以实行本发明的技术。在图3所示的实例中,GPU48包含着色器处理器52、固定功能单元54和命令处理器56。另外,在图3所示的实例中,GPU包含着色器处理器存储器60 (其展示为与着色器处理器52合并入在一起)和存储器复制引擎62。应理解,图3的某些模块和/或单元可高度集中,但出于概念目的单独说明。此外,某些模块可出于概念目的相对于单一模块描述,但可包含一个或一个以上功能和/或结构单元。
[0054]还应理解,图3仅提供作为可利用本发明中描述的技术的GPU的一个实例。相对于本发明描述的技术可由具有其它组件的多种其它GPU实行。S卩,在其它实例中,GPU48还可包含与再现图像、分析图像和/或执行其它计算有关的多种其它组件和模块。举例来说,GPU48可包含纹理单元、调度单元、算术逻辑单元(ALU),或图3中为简洁起见未展示的其它GPU组件。
[0055]如相对于上文图1的实例所述,着色器处理器52可包含可执行图形再现和/或其它通用操作的一个或一个以上着色器处理单元。即,举例来说,着色器处理器52可执行几何形状、顶点、像素或其它阴影处理操作以再现图形。在其它实例中,着色器处理器52可执行通用计算。
[0056]固定功能单元54可通常包含一个或一个以上单元,例如固定功能硬件组件,用于再现图形数据。举例来说,固定功能单元54可包含用于执行图形数据的初始输入汇编以准备图形数据(三角形、线和点)用于再现的单元。在另一实例中,固定功能单元54可包含用于执行光栅化的单元。即,固定功能单元54可准备图元用于光栅化期间的阴影处理。固定功能单元54还可执行与再现图形数据和/或执行其它操作相关联的多种其它操作。
[0057]命令处理器56可包含微处理器、控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或等效离散或集成逻辑电路的任一者或一者以上。另夕卜,属于命令处理器56的功能可在一些实例中体现为软件、固件、硬件或其任何组合。虽然所展示的命令处理器56展示为与着色器处理器52分离的单元,但在一些实例中,命令处理器56可与着色器处理器52集成。
[0058]如上文参看图1所述,命令处理器56可在本地控制GPU资源而无主机处理器24或其它处理单元的干预。举例来说,根据本发明的方面,GPU48的命令处理器56可从主机处理器24接收一个或一个以上“任务”。命令处理器56可独立地调度所述任务由GPU48的资源(包含(例如)着色器处理器52和固定功能单元54)执行。即,代替于从主机处理器24接收指示如何利用GPU资源的命令流,命令处理器56可接收通常界定待由GPU执行的工作的一个或一个以上较高级任务。此类任务可界定待由GPU48执行的操作,而不指示GPU48的哪些资源将用于执行所述操作。GPU48可独立地确定何时执行任务和/或哪些资源执行任务。
[0059]GPU存储器58可类似于图1所示的存储器32。即,在一些实例中,GPU存储器58可为临时计算机可读存储媒体。GPU存储器58的实例包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM),和此项技术中已知的其它形式的寄存器和存储器。在GPU48形成为另一处理器(例如,主机处理器24)的一部分的实例中,GPU存储器58可由除GPU48外的组件存取。通常,GPU存储器58存储GPU48执行的操作中使用的数据。在一些实例中,GPU存储器58可从另一存储器单元(例如,计算装置20的存储器32)接收数据。即,计算装置20可将数据从存储器32传递到GPU存储器58使得数据可由GPU48存取。
[0060]在图3所示的实例中,着色器处理器52包含着色器处理器存储器60 ( “SP存储器”)。如下文相对于存储器复制引擎62更详细描述,数据可在SP存储器60与GPU存储器58之间交换。举例来说,SP存储器60可接收和存储来自GPU存储器58的未经处理数据以供由着色器处理器52执行。S卩,SP存储器60可在数据经处理之前存储数据,例如通过着色器处理器52的ALU。另外,SP存储器可在将经处理数据传递到GPU存储器58之前存储经处理数据。SP存储器60可由着色器处理器52内的单元相对快速存取。然而,SP存储器60与GPU存储器58之间的数据传递可消耗一个或一个以上时钟循环,在所述时钟循环期间着色器处理器52可不处理其它数据。
[0061]根据本发明的方面,GPU48还包含存储器复制引擎62,其与GPU48的一个或一个以上存储器单元通信。举例来说,如图3所示,存储器复制引擎62可与存储器32、GPU存储器58和/SP存储器60通信。在一些实例中,存储器复制引擎62可促进存储器32 (例如,系统存储器)与SP存储器60之间的数据传递。举例来说,根据本发明的方面,存储器复制引擎62可从命令处理器56接收识别待在存储器32与SP存储器60之间(且反之亦然)传递的数据的指令。另外,存储器复制引擎62可从命令处理器56接收识别何时在存储器32与SP存储器60之间(且反之亦然)传递数据的指令。在从命令处理器56接收指令后,存储器复制引擎62可实行存储器32与SP存储器60之间的数据传递。在其它实例中,存储器复制引擎62还可负责GPU48的其它存储器单元之间(例如,GPU存储器58与SP存储器60之间)的数据传递。
[0062]在一些实例中,根据本发明的方面,GPU48的某些单元(例如,比如着色器处理器52、SP存储器60、存储器32和/或GPU存储器58)可“不知晓”存储器复制引擎62的操作。即,存储器复制引擎62可独立于正将数据复制到其中以及从中复制数据的单元进行操作。在出于说明的目的的实例中,代替于着色器处理器52将数据从存储器32复制到SP存储器60 (且使用相关联资源和时钟循环来促进数据传递),此数据传递可由存储器复制引擎62处置。即,存储器复制引擎62可将数据从存储器32复制到SP存储器60以供着色器处理器52使用。因此,着色器处理器52可利用存储在SP存储器60中的数据而不必等待在SP存储器60与存储器32之间传递数据。以此方式,存储器复制引擎62可视需要向着色器处理器52提供数据,且着色器处理器52可继续执行对数据的操作而不利用时钟循环进行数据传递。举例来说,命令处理器56可使存储器复制引擎62与正由命令处理器56调度的任务同步,使得当执行特定任务时向SP存储器60供应适当数据。如上所述,存储器复制引擎62还可负责在GPU存储器58与SP存储器60之间传递经处理数据。另外或作为替代,存储器复制引擎62可往来于固定功能单元54和/或GPU48的其它组件传递数据。
[0063]在操作中,根据本发明的方面,主机处理器24可产生包含待由GPU48实行的一个或一个以上任务的命令流。所述任务可陈述待由GPU48进行的多种工作,例如执行图形再现和/或其它通用操作。GPU48的命令处理器56可接收命令流并促进命令流中包含的任务的每一者的执行。
[0064]根据本发明的方面,命令处理器56可初始解析所接收命令流且识别待由GPU48执行的每一任务。除了从命令流解析任务外,命令处理器56还可维持用于组织任务的每一者由GPU48的组件执行的命令队列。举例来说,命令处理器56可使用命令队列调度任务由GPU48的组件(例如,着色器处理器52和/或固定功能单元54)执行。在一些实例中,命令队列可为固定功能硬件单元(例如,前进先出(FIFO)寄存器等)。在其它实例中,命令队列可为一般存储器或寄存器单元。
[0065]命令处理器56还可维持用于控制与GPU48相关联的其它功能的命令队列。举例来说,命令处理器56可维持用于组织与主机处理器(例如,中央处理单元(CPU))的数据交换的命令队列。在其它实例中,命令处理器56可维持用于组织与数字信号处理器(DSP)和其它计算组件(例如,多媒体单元)的数据交换的命令队列。[0066]在一些实例中,命令处理器56可基于GPU资源48的可用性调度任务。举例来说,命令处理器56可基于正可用的输入/输出接口调度任务。在另一实例中,命令处理器56可基于正执行的数据是否准备好进行处理而调度任务。在另一实例中,命令处理器56可基于存储器(例如,GPU存储器58)中是否有空间可用于存储任务的结果而调度任务。
[0067]根据本发明的一些方面,命令处理器56可对命令队列中的任务区分优先级。在一些实例中,负责产生任务的组件(例如,主机处理器24)可负责指示任务的优先级。在其它实例中,命令处理器56可基于命令队列中包含的任务确定优先级。举例来说,命令处理器56可识别比命令队列中的其它任务更加时间敏感的任务,且可对命令队列中的高优先级任务区分优先级使得所述任务在其它任务之前调度和执行。
[0068]在一些实例中,命令处理器56还可维持正由GPU48的组件执行的有效任务的列表,以及跟踪负责执行任务的组件。有效任务列表可用于例如跟踪任务的状态。通过跟踪任务的状态,命令处理器56可确定GPU48的哪些资源可用于调度任务。即,如果任务当前正由GPU资源执行(例如,任务“有效”),那么所述资源可直到有效任务完成才可用。在一些实例中,命令处理器56可负责识别GPU48的哪些组件正有效执行任务(例如,通过轮询或以其它方式确定组件正忙)。在其它实例中,命令处理器56可接收特定任务已由负责执行任务的组件或通过监视正写入到GPU存储器58的数据完成的指示。
[0069]在一实例中,命令处理器52可起始由着色器处理器52执行任务。命令处理器56可接着将任务添加到当前正由着色器处理器52执行的有效任务的列表。使用有效任务列表,命令处理器56可跟踪当前正执行任务的资源,同时还识别当前不在执行任务的可用资源。
[0070]使用优先级信息和/或有效任务的列表,如果较高优先级任务添加到命令队列且所述较高优先级任务准备好被执行(例如,与任务相关联的数据准备好执行),那么命令处理器56可先占正由GPU48的组件执行的任务。即,如果较高优先级任务准备好被执行,那么命令处理器56可停止执行较低优先级任务以便执行较高优先级任务。命令处理器56可在完成较高优先级任务的执行之后重新开始较低优先级任务。
[0071]以此方式,命令处理器56可独立地向GPU48的不同资源(例如,着色器处理器52和/或固定功能单元54)分配任务,而无主机处理器的干预。在出于说明的目的的实例中,包含GPU48的计算装置20可为数码相机(例如,包含数码相机的移动装置)。在此实例中,数码相机的GPU48可正再现图像以供在取景器中显示。数码相机的用户可选择图像处理功能以在所显示图像上执行(例如,图像锐化、噪声减小等)。GPU48可从再现图像切换到执行(通用)图像处理功能。在此实例中,GPU48的功能之间的切换可由命令处理器56独立地促进。
[0072]GPU48在本地控制GPU资源而无主机处理器24的干预的能力可提供增加的灵活性且促进GPU资源的有效管理。举例来说,根据本发明的方面,命令处理器56可减少GPU48的资源闲置的时间量。在上文提供的实例中,命令处理器56可向GPU48的固定功能单元54调度图形再现任务,同时还向GPU48的着色器处理器52调度计算任务。即,举例来说,相对于上文描述的数码相机实例,命令处理器56可调度图形再现任务(例如,再现图像以供在取景器中显示),同时还调度计算任务(例如,图像处理)。因此,命令处理器56潜在地减少GPU资源闲置的时间量。[0073]根据本发明的方面,来自主机处理器24的“任务”可由用户(例如,应用程序开发者)使用API界定。举例来说,如上所述,例如DirectX和OpenGL等API允许用户开发用于再现图形或以GPU48执行其它操作的应用程序。然而,传统API可限于固定(例如,管线式)数据流,其可适于一种类型的图形再现但可不能有效适应其它任务(例如,比如射线追踪或射线投射)。即,使用传统API开发的应用程序可循序路由数据经过再现管线(例如,图2的实例中展示的图形再现管线80)的每一级,而不管每一级是否需要实行特定操作。
[0074]本发明的方面涉及用户可应用以产生具有相对高级计算任务的应用程序的API。举例来说,所述API可允许用户界定通常描述待由GPU执行的工作的任务。S卩,任务可界定待由GPU48执行的操作,而不指示GPU48的哪些资源将用于执行操作。在一些实例中,多种任务可包含在API中且暴露于应用程序开发者。使用API,应用程序开发者可产生应用程序,所述应用程序当执行时利用定制管线(例如,相对于传统API的图形管线)。在一实例中,应用程序开发者可产生应用程序,所述应用程序使用经优化用于执行特定再现操作(例如,射线追踪或射线投射)的定制图形管线。
[0075]然而,可不需要API来执行本发明的技术。举例来说,根据一些方面,编译器(例如,编译程序,比如C/C++编译器)可映射程序代码的待由GPU48的组件执行的部分。即,编译器可识别GPU48的适当组件以执行程序代码的给定部分,以及指定包含代码的给定部分的任务。命令处理器56可接着接收代码的所映射部分且相应地调度任务。
[0076]图4是说明根据本发明的方面可由命令处理器执行的实例方法100的流程图。即,举例来说,图4所示的方法可由图1和3展示的命令处理器56执行。然而,虽然图4的实例中的方法相对于命令处理器56描述,但应理解,其它计算装置的其它图形处理单元可执行属于命令处理器56的一些或所有功能。
[0077]在图4的实例方法100中,命令处理器56初始例如从比如主机处理器24等主机处理器接收一个或一个以上任务(102)。举例来说,命令处理器56可接收命令处理器,其包含界定待由GPU48的组件执行的工作的一个或一个以上任务。命令处理器56可解析命令流以识别命令流中包含的每一任务(104)。
[0078]命令处理器56还可确定任务优先级(106)。举例来说,根据本发明的一些方面,命令处理器56可维持一个或一个以上命令队列,其可确定所接收任务的每一者何时将由GPU48的组件执行。命令处理器56可基于任务优先级组织所述一个或一个以上命令队列,使得在其它任务之前执行时间要求较严格和/时间较敏感的任务。在一些实例中,负责产生任务的组件(例如,主机处理器24)可负责指示任务的优先级。在其它实例中,命令处理器56可基于包含在命令队列中的任务确定优先级。
[0079]命令处理器56还可确定资源可用性(108)。举例来说,命令处理器56可确定负责执行任务的组件是否可用(例如,不在执行另一任务)。此外,命令处理器56可确定与任务相关联的数据是否可用。
[0080]除了基于任务优先级组织所述一个或一个以上命令队列外或代替于基于任务优先级组织所述一个或一个以上命令队列,命令处理器56可基于资源可用性组织所述一个或一个以上命令队列。即,举例来说,命令处理器56可不调度任务由GPU48的组件执行,除非所述组件可用于执行所述任务。此外,命令处理器56可不调度任务由GPU48的组件执行,除非与任务相关联的数据可用。即,命令处理器56可等待直到与特定任务相关联的数据在调度任务以供执行之前已由存储器复制引擎62移动到SP存储器60为止。此外,命令处理器56可确保与特定任务相关联的数据在调度任务之前不由GPU48的任何其它组件修改。
[0081]命令处理器56可接着调度任务以供由GPU48的组件的一者或一者以上执行
(110)。在一些实例中,根据本发明的方面,命令处理器56可独立地管理任务使得GPU48的组件可并行执行不同任务。举例来说,命令处理器56可调度任务由着色器处理器52与待由固定功能单元54执行的任务并行执行。
[0082]在调度任务后,命令处理器56可更新有效任务的列表(112),即有效任务列表。举例来说,命令处理器56可维持正由GPU48的组件执行的有效任务的列表,以及跟踪负责执行任务的组件。有效任务列表可用于例如跟踪任务的状态。通过跟踪任务的状态,命令处理器56可确定GPU48的哪些资源可用于调度任务,以及GPU48的哪些资源正忙于执行任务。即,如果任务当前正由GPU资源执行(例如,任务“有效”),那么所述资源可直到有效任务完成才可用。在一实例中,在起始由着色器处理器52执行任务之后,命令处理器56将任务添加到正由着色器处理器52执行的有效任务的列表。在一些实例中,命令处理器56可负责识别GPU48的哪些组件正有效执行任务(例如,通过轮询或以其它方式确定组件正忙)。在其它实例中,命令处理器56可接收特定任务已由负责执行任务的组件或通过监视正写入到GPU存储器58的数据完成的指示。
[0083]还应理解,参看图4展示和描述的步骤仅提供作为一个实例。即,图4的方法的步骤不一定需要以图4所示的次序执行,且可执行较少、额外或替代步骤。举例来说,图4展示在确定资源可用性之前确定的任务优先级。在另一实例中,可在确定任务优先级之前执行确定资源可用性。
[0084]图5是说明根据本发明的方面可由命令处理器(例如,命令处理器56)执行的实例方法120的流程图。即,举例来说,图5所示的方法可由图1和3展示的命令处理器56执行。然而,虽然图5的实例中展示的方法相对于命令处理器56描述,但应理解,其它计算装置的其它图形处理单元可执行属于命令处理器56的一些或所有功能。
[0085]在一些实例中,可代替于图4的实例中展示的方法100或与之结合执行方法120。举例来说,图5的实例中展示的方法可在调度任务以供执行(例如,图4所示的步骤110)时执行。
[0086]命令处理器56初始确定执行当前任务所需的一个或一个以上资源(例如,包含数据、输入/输出接口、存储器,和/或处理单元)是否可用(122)。如果资源可用(步骤122的是分支),那么命令处理器56可指示数据复制引擎62视需要将适当数据从GPU存储器58复制到SP存储器60 (124)。另外,命令处理器56可起始任务执行(126)。S卩,命令处理器56可调度任务由GPU48的适当组件执行。
[0087]如果用于执行当前任务的资源不可用(步骤122的否分支),那么命令处理器56可确定当前任务是否为针对执行任务所需的资源的最高优先级任务(128)。如果当前任务是最高优先级任务(步骤128的是分支),那么命令处理器56可先占当前正由资源执行的任务(130)。即,命令处理器56可中断执行任务所需的资源的操作使得可执行当前任务(例如,执行任务不需要的GPU资源可继续执行其它任务)。在先占当前正执行的任务之后,命令处理器56可执行步骤124到126以执行当前任务,如上文描述。在一些实例中,被先占任务的状态可经存储(例如,存储到GPU存储器58)以允许在已执行当前任务之后重新开始所述任务。
[0088]如果当前任务不是针对执行任务所需的资源的最高优先级任务(步骤128的否分支),那么命令处理器56可等待当前正由资源执行的任务完成执行(132)。在资源完成任务(步骤134的是分支)后,命令处理器可例如通过执行如上文描述的步骤124和126而执行当前任务。
[0089]还应理解,参看图5展示和描述的步骤仅提供作为一个实例。即,图5的方法的步骤不需要一定以图5所示的次序执行,且可执行较少、额外或替代步骤。
[0090]另外,应理解,依据实例,本文描述的方法的任一者的某些动作或事件可以不同序列执行,可添加、合并、或一起去除(例如,并非所有所描述的动作或事件对于所述方法的实践均是必要的)。此外,在某些实例中,可同时(例如,通过多线程处理、中断处理或多个处理器)而非循序地执行动作或事件。
[0091]此外,在一个或一个以上实例中,本文描述的功能可实施在硬件、软件、固件,或其任何组合中。如果实施在软件中,那么所述功能可作为一个或一个以上指令或代码存储在计算机可读媒体上或经由计算机可读媒体发射,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于例如数据存储媒体等有形媒体,或包含促进例如根据通信协议将计算机程序从一处传递到另一处的任何媒体的通信媒体。
[0092]以此方式,计算机可读媒体通常可对应于(I)非暂时性有形计算机可读存储媒体,或(2)例如信号或载波等通信媒体。数据存储媒体可为可由一个或一个以上计算机或一个或一个以上处理器存取以检索指令、代码和/或数据结构以供实施本发明中描述的技术的任何可用媒体。计算机程序产品可包含计算机可读媒体。
[0093]借助实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM,或其它光盘存储装置、磁盘存储装置,或其它磁性存储装置、快闪存储器,或可用于存储指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。并且,任何连接适当地称为计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源发射指令,那么同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波等无线技术包含在媒体的定义中。
[0094]然而,应理解,计算机可读存储媒体和数据存储媒体不包含连接、载波、信号或其它瞬时媒体,而是针对非瞬时有形存储媒体。如本文中所使用,磁盘和光盘包含紧密光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘使用激光以光学方式再现数据。上文的组合也应包含在计算机可读媒体的范围内。
[0095]可由例如一个或一个以上数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一个或一个以上处理器来执行指令。因此,如本文中所使用的术语“处理器”可指代上述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文描述的功能性可提供在经配置用于编码和解码的专门硬件和/或软件模块内,或并入在组合式编解码器中。并且,可将所述技术完全实施于一个或一个以上电路或逻辑元件中。
[0096]本发明的技术可实施在广泛多种装置或设备(包含无线手持机、集成电路(IC)或IC组(例如,芯片组))中。本发明中描述各种组件、模块或单元以强调经配置以执行所揭示的技术的装置的功能方面,但不一定需要由不同硬件单元实现。而是,如上文描述,各个单元可组合在编解码器硬件单元中或由互操作硬件单元的集合(包含如上文描述的一个或一个以上处理器)结合适宜的软件和/或固件提供。
[0097]已描述了各个实例。这些和其它实例在所附权利要求书的范围内。
【权利要求】
1.一种图形处理单元,其包括: 着色器处理器,其经配置以并行执行多个指令; 一个或一个以上固定功能硬件单元,其经配置以再现图形数据;以及 命令处理器单元,其经配置以从主机处理器接收一个或一个以上任务且独立地调度所述一个或一个以上任务以由所述着色器处理器和所述一个或一个以上固定功能硬件单元选择性地执行。
2.根据权利要求1所述的图形处理单元,其中所述命令处理器经配置以维持所接收的所述一个或一个以上任务的命令队列,其中所述命令队列包括待由所述图形处理单元执行的任务的列表。
3.根据权利要求1所述的图形处理单元,其中所述命令处理器经配置以确定所述一个或一个以上任务的相应优先级且基于所述一个或一个以上任务的所述相应优先级调度所述一个或一个以上任务。
4.根据权利要求1所述的图形处理单元,其中所述命令处理器经配置以从主机处理器接收所述一个或一个以上任务的相应优先级的指示,且基于所述一个或一个以上任务的所述相应优先级调度所述一个或一个以上任务。
5.根据权利要求1所述的图形处理单元,其中所述命令处理器经配置以维持有效任务的列表,其中有效任务是当前正由所述着色器处理器和所述一个或一个以上固定功能硬件单元中的至少一者执 行的任务。
6.根据权利要求1所述的图形处理单元,其中所述命令处理器经配置以停止执行所述一个或一个以上任务的第一任务,且开始执行所述一个或一个以上任务的第二任务。
7.根据权利要求1所述的图形处理单元,其进一步包括经配置以将数据从所述图形处理单元的存储器复制到所述着色器处理器的存储器的存储器复制引擎。
8.根据权利要求7所述的图形处理单元,其中所述命令处理器控制所述存储器复制引擎的操作。
9.一种用于控制图形处理单元的方法,其包括: 从主机处理器接收一个或一个以上任务;以及 从所述主机处理器独立地调度所述一个或一个以上任务以由着色器处理器和一个或一个以上固定功能硬件单元选择性地执行,其中所述着色器处理器经配置以并行执行多个指令,且所述一个或一个以上固定功能硬件单元经配置以再现图形数据。
10.根据权利要求9所述的方法,其进一步包括维持所接收的所述一个或一个以上任务的命令队列,其中所述命令队列包括待由所述图形处理单元执行的任务的列表。
11.根据权利要求9所述的方法,其进一步包括确定所述一个或一个以上任务的相应优先级且基于所述一个或一个以上任务的所述相应优先级调度所述一个或一个以上任务。
12.根据权利要求9所述的方法,其进一步包括维持有效任务的列表,其中有效任务是当前正由所述着色器处理器和所述一个或一个以上固定功能硬件单元中的至少一者执行的任务。
13.根据权利要求9所述的方法,其进一步包括中断执行所述一个或一个以上任务的第一任务,且开始执行所述一个或一个以上任务的第二任务。
14.根据权利要求9所述的方法,其进一步包括在执行所述一个或一个以上任务之前将数据从所述图形处理单元的存储器复制到所述着色器处理器的存储器。
15.一种用于控制图形处理单元的设备,其包括: 用于从主机处理器接收一个或一个以上任务的装置;以及 用于从所述主机处理器独立地调度所述一个或一个以上任务以由着色器处理器和一个或一个以上固定功能硬件单元选择性地执行的装置,其中所述着色器处理器经配置以并行执行多个指令,且所述一个或一个以上固定功能硬件单元经配置以再现图形数据。
16.根据权利要求15所述的设备,其进一步包括用于维持所接收的所述一个或一个以上任务的命令队列的装置,其中所述命令队列包括待由所述图形处理单元执行的任务的列表。
17.根据权利要求15所述的设备,其进一步包括用于确定所述一个或一个以上任务的相应优先级且基于所述一个或一个以上任务的所述相应优先级调度所述一个或一个以上任务的装置。
18.根据权利要求15所述的设备,其进一步包括用于维持有效任务的列表的装置,其中有效任务是当前正由所述着色器处理器和所述一个或一个以上固定功能硬件单元中的至少一者执行的任务。
19.根据权利要求15所述的设备,其进一步包括用于中断执行所述一个或一个以上任务的第一任务且开始执行所述一个或一个以上任务的第二任务的装置。
20.根据权利要求15所述的设备,其进一步包括用于在执行所述一个或一个以上任务之前将数据从所述图形处理单元的存储器复制到所述着色器处理器的存储器的装置。
21.一种包括计算机可读媒体的计算机程序产品,所述计算机可读媒体包括存储在其上的指令,所述指令当执行时致使一个或一个以上处理器: 从主机处理器接收一个或一个以上任务;以及 从所述主机处理器独立地调度所述一个或一个以上任务以由着色器处理器和一个或一个以上固定功能硬件单元选择性地执行,其中所述着色器处理器经配置以并行执行多个指令,且所述一个或一个以上固定功能硬件单元经配置以再现图形数据。
22.根据权利要求21所述的计算机程序产品,其进一步包括存储在其上的指令,所述指令当执行时致使一个或一个以上处理器维持所接收的所述一个或一个以上任务的命令队列,其中所述命令队列包括待由所述图形处理单元执行的任务的列表。
23.根据权利要求21所述的计算机程序产品,其进一步包括存储在其上的指令,所述指令当执行时致使一个或一个以上处理器确定所述一个或一个以上任务的相应优先级且基于所述一个或一个以上任务的所述相应优先级调度所述一个或一个以上任务。
24.根据权利要求21所述的计算机程序产品,其进一步包括存储在其上的指令,所述指令当执行时致使一个或一个以上处理器维持有效任务的列表,其中有效任务是当前正由所述着色器处理器和所述一个或一个以上固定功能硬件单元中的至少一者执行的任务。
25.根据权利要求21所述的计算机程序产品,其进一步包括存储在其上的指令,所述指令当执行时致使一个或一个以上处理器中断执行所述一个或一个以上任务的第一任务且开始执行所述一个或一个以上任务的第二任务。
26.根据权利要求21所述的计算机程序产品,其进一步包括存储在其上的指令,所述指令当执行时致使一个或一个以上处理器在执行所述一个或一个以上任务之前将数据从所述图形 处理单元的存储器复制到所述着色器处理器的存储器。
【文档编号】G06T1/20GK103999128SQ201280061006
【公开日】2014年8月20日 申请日期:2012年11月20日 优先权日:2011年12月15日
【发明者】彼得里·奥拉维·努德隆德, 尤卡-佩卡·阿尔沃, 罗伯特·J·辛普森 申请人:高通股份有限公司