专利名称:使用多个处理器处理视频和/或图形数据而不丢失状态信息的方法、系统及装置的制作方法
技术领域:
本公开涉及使用多个处理器处理视频和/或图形数据的方法、系统及装置,尤其涉及使用第一图形处理电路和第二图形处理电路的结合来处理视频和/或图形数据。
背景技术:
在典型的计算机架构中,待由处理器上运行的应用程序处理的视频和/或图形数据可通过集成图形处理电路、离散图形处理电路或集成和离散图形处理电路的某种组合来处理。集成图形处理电路通常集成到桥接电路中,桥接电路与主处理器系统总线连接,也称为“北桥(Northbridge)”。另ー方面,离散图形处理电路通常为利用诸如AGP、PCI、PCIExpress或任何其它适合的标准等互连标准经由互连件与北桥连接的外部图形处理单元。通常,离散图形处理电路提供优于集成图形处理电路的性能,但是也消耗更多的功率。因此,为了使性能最优化或者使功耗最小化,公知的是在集成处理电路和离散处理电路之间切换视频和/或图形处理任务。图I表示现有技木,一般描绘了能够在集成处理电路和离散处理电路之间切换视频和/或图形处理任务的计算系统100。如图所示,诸如CPU或任何其它处理器件等至少ー个主处理器102经由主处理器系统总线106与北桥电路104连接,并且经由系统总线124与系统存储器122连接。在一些实施例中,可根据需要设有多个主处理器102。此外,在一些实施例中,系统存储器可与北桥104连接,而不是与主处理器102连接。主处理器102可以包括多个无序执行单元108,诸如例如X86执行单元。诸如在主处理器102中实现的架构的无序架构鉴别能够并行执行的独立指令。主处理器102可操作以执行包括软件驱动程序110的各种软件程序。软件驱动程序110在主处理器102与集成和离散图形处理单元112、114之间接ロ。例如,软件驱动程序110可以接收用于在显示器116上绘制对象的信息,计算与该对象相关联的ー些基本參数,并且将这些參数提供给集成和离散图形处理单元112、114以进行进ー步处理。北桥104包括可操作以处理视频和/或图形数据(例如,渲染像素)的集成图形处理单元112并且与显示器116相连接。使用集成图形处理单元的已知北桥电路的示例是由Advanced Micro Devices, Inc.出售的AMD’ s780系列芯片组。集成GPU 112包括多个着色器単元118。来自多个着色器単元118的每个着色器単元是负责对视频和/或图形数据执行诸如例如顶点着色、几何形状着色或像素着色等特殊着色功能的可编程着色器。系统存储器122包括与集成GPU 112相关联的帧缓冲器120。帧缓冲器120是整个系统存储器122的存储表示待显示在显示器116屏幕上的每个像素的颜色值的数据的分配量的存储器。在一个实施例中,主CPU 102和北桥104可以集成到单个封装件/管芯126上。北桥104通过例如独占总线130与南桥128连结。南桥128是控制计算系统100的全部输入/输出功能的桥接电路。离散GPU 114通过诸如例如PCI Express总线的适当总线132与北桥104 (或集成的封装件/管芯126)连结。离散的GPU 114包括多个着色器単元119并且与非系统存储器136相连接。非系统存储器136 (例如,“视频”或“本地”存储器)包括与离散GPU 114相关联的帧缓冲器121且经由不同于系统总线124的总线被访问。非系统存储器136可相对于离散GPU114为在芯片上或在芯片外。与离散GPU 121相关联的帧缓冲器具有与和集成GPU 120相关联的帧缓冲器相似的架构和操作,但是存在于非系统存储器136的分配量的存储器中。位于离散GPU 119上的着色器单元与上文讨论的位于集成GPU 118上的着色器单元操作相似。然而,在一些实施例中,在离散GPU 114上具有比集成GPU 112上更多的着色器单元119,这容许离散GPU 114例如比集成GPU 112更快地处理视频和/或图形数据。本领域技术人员将理解的是,在该示例性构造中呈现为离散部件的结构和功能可以实现为组合的结构或部件。可构思其它变型例、修改和添加。在运算中,计算系统100可利用集成GPU 112、离散GPU 114或集成和离散 GPU112,114的某种组合来完成图形数据处理。例如,在一个实施例(下文称为“集成运算(operational)模式”)中,集成GPU 112可用于完成计算系统100的所有图形数据处理。该实施例通过切断离散GPU114并且依靠低功率成本的集成GPU 112来完成图形数据处理而使得功耗最小化。在另ー实施例(下文称为“离散运算模式”)中,离散GPU 114可用于完成计算系统100的全部图形数据处理。该实施例通过仅依靠更大功率的离散GPU 114来完成全部图形处理任务而使图形处理性能高于集成运算模式。最后,在一个实施例(下文称为“协作运算模式”)中,集成和离散GPU 112、114可同时用来完成图形处理。该实施例通过依靠集成GPU 112和离散GPU 114这两者来完成图形处理任务而使图形数据处理性能高于离散运算模式。采用类似于计算系统100的平台设计的商业系统的示例包括来自AdvancedMicro Devices, Inc.的 ATI Hybrid CrossFireX 技术和 ATIPowerXpress 技术以及来自NVIDIA 公司的Hybrid SLI_ 技术。然而,采用与计算系统100中描绘的设计相似的设计的现有计算系统遭遇多种缺陷。例如,当计算系统00从ー种运算模式(例如,集成运算模式)转变到另ー种运算模式(例如,离散运算模式)时,这些设计可能导致状态信息丢失。状态信息是指由例如着色器単元使用的控制每个着色器単元如何处理视频和/或图形数据流的任何信息。例如,由例如像素着色器使用的状态信息可以包括像素着色器程序、像素着色器常数、渲染器目标信息、图形运算參数等。此外,状态信息包括关于GPU的标识信息,诸如计算系统存储器空间中的GPU物理地址和/或用于处理视频和/或图形数据的GPU的模型。当现有的计算系统100从ー种运算模式转变到另ー种运算模式时,状态信息通常被破坏。因此,现有的计算系统100通常需要特定的软件支持来重新创建该状态信息,以便当视频和/或图形处理任务在GPU之间切换时应用程序正确地操作。状态信息的这种破坏和重新创建不必要地利用了计算系统的处理资源并且使从ー种运算模式到另ー种运算模式的切換延迟。例如,现有计算系统100从ー种运算模式(例如,集成运算模式)切换到另一种运算模式(例如,离散运算模式)可能要花费几秒。在运算模式之间切换的这种延迟还会造成显示器屏幕116上的非期望闪烁。当配置为协作运算模式时,现有的计算系统100也不能使图形处理优化。例如,在这些计算系统内,为了在两个GTO之间进行并行的图形和/或视频处理,通常需要将较大功率的离散GPU 114的处理能力限制为较小功率的集成GPU 112的处理能力。这表示“最小公分母”方法,其中严重地未充分利用离散GPU 114的全部处理能力。因此,对于能够在集成、离散和协作运算模式之间切换而不丢失状态信息且不延长切换时间的改进计算系统存在需求。此外,对于能够在协作运算模式下使得离散GPU的处理能力最大化的计算系统存在需求。
通过结合下面附图的如下说明书将更易于理解本发明,并且其中,相似的附图标记表示相似的元件,其中图I是大概描绘出包括集成的和离散的视频和/或图形处理电路的常规计算系统 的示例的框图。图2是大概描绘出依照本公开阐述的一个示例的计算系统的框图。图3是大概描绘出依照本公开阐述的一个示例的通用型执行单元的框图。图4是示出在使用多个处理器的计算系统中处理视频和/或图形数据而不丢失状态信息的方法的一个示例的流程图。图5是示出在使用多个处理器的计算系统中处理视频和/或图形数据而不丢失状态信息的方法的另ー示例的流程图。
具体实施例方式通常,所公开的方法、系统和装置提供了,在第一和第二图形处理电路之间转移处理的同时,使用第一图形处理电路和第二图形处理电路的组合对视频和/或图形数据进行处理而不丢失状态信息。待处理的视频和/或图形数据可以由例如在诸如主处理器等处理器上运行的应用程序提供。在一个示例中,装置包括至少ー个GPU,该GPU包括多个单指令多数据(SMD)执行单元。GPU可操作以执行本地功能代码模块。所述装置还包括至少第二GPU,该第二 GPU包括具有与第一 GPU上的多个SMD执行单元相同的程序模型的多个SMD执行单元。此外,第一和第二 GPU可操作以执行相同的本地功能代码模块。本地代码功能模块使得第一 GPU响应于来自诸如主处理器等第一处理器的通知而提供用于至少第二 GPU的状态信息,从当前运算模式转变到期望运算模式是期望的(例如,ー个GPU停止,而另ー个GPU启动)。第二 GPU可操作以获得由第一 GPU提供的状态信息并且经由相同的本地功能代码模块使用状态信息以继续第一 GPU已停止的处理。在一个示例中,所公开的GPU为单指令多数据(SMD)处理器的形式的向量处理器,这与采用扩展指令集的标量处理器相反。所公开的GPU可以包括多个SMD引擎和用于存储用于SMD处理器的状态信息的通用型SMD寄存器组。如本领域所公知,相同的指令可以在不同的SMD引擎上执行。如本领域所公知,所公开的GPU可以为在本地执行C++的类型。在另ー示例中,计算系统包括与至少ー个GPU和至少第二 GPU连结的诸如ー个或多个主CPU等处理器。在该示例中,存在显示器,该显示器可操作以同时显示由至少ー个GPU、至少第二 GPU或者由至少ー个GPU和至少第二 GPU两者生成的像素。在另ー示例中,与至少第二 GPU相关联的本地功能代码模块可操作以通过在至少第二 GPU上的多个SMD执行单元上均匀地分布像素渲染指令来优化能够由至少第二 GPU渲染的像素数量。在另ー示例中,与至少ー个GPU相关联的本地功能代码模块可操作以通过在至少ー个GPU上的多个通用型执行单元上均匀地分布像素渲染指令来优化能够由至少ー个GPU渲染的像素数量。在一个示例中,与至少第二 GPU相关联的本地功能代码模块从至少ー个GPU上的多个SMD执行单元中的通用型寄存器组获取状态信息以用于在至少第二 GPU上的多个SIMD执行单元上执行。在另ー示例中,与至少ー个GPU相关联的本地功能代码模块从至少第二 GPU上的多个SMD执行单元中的通用型寄存器组获取状态信息以用于在至少ー个GPU上的多个SMD执行单元上执行。如本文所使用的,获取状态信息可以包括取回状态信息或者被提供状态信息。在另ー示例中,主处理器可操作以执行控制驱动程序,以使计算系统从集成运算模式转变到离散运算模式,并且反之亦然。在一个示例中,控制驱动程序主张处理器中断(例如,主CPU中断)以开始从当前运算模式到期望运算模式的转变,并且反之亦然。在又一示例中,使计算系统从当前运算模式转变到期望运算模式包括将状态信息从与当前运算 模式相关联的GPU上的多个SMD执行单元中的通用型寄存器组转移到存储器中的可由在与期望运算模式相关联的GPU上执行的本地功能代码模块访问的位置。本公开还提供一种在计算系统中使用多个处理器来处理视频和/或图形数据的方法。在一个示例中,所述方法包括使与当前运算模式相关联的第一 GPU停止像素的渲染,以及将与当前运算模式相关联的状态信息保存在可由第二 GPU访问的位置。在该示例中,所述方法进ー步包括利用保存的状态信息使与期望运算模式相关联的至少第二 GPU恢复像素的渲染。在一个示例中,通过在与特定运算模式相关联的多个通用型执行单元上均匀地分布像素渲染指令来优化在特定运算模式下能够渲染的像素数量。在另ー示例中,所述方法包括判定计算系统应当从当前运算模式转变到期望运算模式。在另ー示例中,响应于第一 GPU停止渲染像素而将状态信息保存在与当前运算模式相关联的通用型寄存器组中。在又一示例中,所述方法还包括将保存的状态信息从与当前运算模式相关联的通用型寄存器组复制到存储器位置;以及随后从该存储器位置获取该保存的状态信息。在另ー示例中,计算系统应当从当前运算模式转变到期望运算模式的判定基于用户输入、计算功耗要求、和/或图形性能要求。本公开还提供包括可执行指令的计算机可读介质,当执行所述可执行指令吋,使得一个或多个处理器实施本公开的方法。在一个示例中,包括可执行指令的计算机可读介质可由集成制造系统执行以制成本公开的装置。本公开还提供包括图形处理单元(GPU)的集成电路,所述图形处理单元可操作以停止与当前运算模式相关联的像素渲染。在该示例中,GPU还可操作以将与当前运算模式相关联的状态信息保存在可由第二 GPU访问而使用的位置处。在一个示例中,上述GPU可操作以利用由第二 GPU保存的状态信息并且响应于从当前运算模式到期望运算模式的转变而恢复之前由第二 GPU渲染的像素的渲染。在其它优势中,所公开的方法、系统和装置提供了在集成运算模式、离散运算模式和协作运算模式之间的切換,而不丢失状态信息且不延长切换时间。所公开的方法、系统和装置还缓解了在运算模式切換期间显示器屏幕上的非期望闪烁的现象。此外,所公开的方法、系统和装置使得在协作运算模式下离散GPU的处理能力最大化。本领域技术人员将理解其它优势。下面对实施例的描述本质上仅为示例性的,而绝不g在限制公开内容、其应用或使用。图2示出了计算系统200的ー个示例,诸如但不限于服务器计算机、工作站、桌面式PC、笔记本PC、个人数字助理、照相机、蜂窝电话或任何其它适当的图像显示系统中的计算系统。计算系统200包括一个或多个处理器202(例如,共享、专用或分组的处理器,诸如但不限于微处理器、DSP、或中央处理单元)。至少ー个处理器202 (例如,“主处理器”或“主CPU”)经由系统总线206与桥接电路204连接,桥接电路204通常为北桥。主处理器202还经由系统总线224与系统存储器222连接。系统存储器222可以为例如诸如只读存储器(ROM)、随机存取存储器(RAM)、电可擦除可编程只读存储器(EE-PROM)或任何其它适当的数字存储介质等易失性/非易失性存储器部件的任意組合。系统存储器222可操作以存储状态信息228并且包括与GPU 210相关联的帧缓冲器218。帧缓冲器218为整个系统存储器222的存储表示待显示于显示器238屏幕上的每个像素的颜色值的数据的分配量的存储器。在一个实施例中,主处理器202和北桥204可以集成到单个封装件/管芯226上。
主处理器202 (例如,基于AMD 64或X86的处理器)可操作以执行包括控制驱动程序208的各种软件程序。控制驱动程序208在主处理器202与集成和离散图形处理单元210,212之间接ロ。如下面更加详细讨论的,控制驱动程序208可操作以通过例如主张主处理器中断来发出从一种运算模式转变到另一种运算模式的信号。控制驱动程序208还将待由主处理器202上运行的应用程序处理的视频和/或图形数据分布到第一 GPU和/或第二GPU以进行进ー步处理。仅通过举例而言,将使用集成GPU和离散GPU的示例,但是GPU可以为独立式芯片,可以与其它功能组合,或者可以为所期望的任何适当的形式。图2示出了集成GPU 210和离散GPU 212。在该示例中,北桥204包括配置为处理诸如从主处理器202上运行的应用程序接收到的数据等视频和/或图形数据的集成图形处理单元210,并且与显示器238连接。处理视频和/或图形数据可以包括例如渲染像素以便在显示器238屏幕上显示。如本领域所公知的,显示器238可以包括集成或外部显示器,诸如阴极射线管(CRT)、液晶显示器(IXD)、发光二极管(LED)显示器或任何其它适合的显示器。无论如何,显示器238可操作以显示由GPU 210、离散GPU 212或集成和离散GPU 210、212两者生成的像素。本领域技术人员将进ー步理解的是,术语“GPU”可以包括具有一个或多个离散或集成核(例如,集成到与主处理器相同的衬底上)的图形处理单元。GPU 210包括本地功能代码模块214和多个通用型执行单元216。本地功能代码模块214为例如由至少ー个通用型执行单元216 (例如,SMD执行单元中的a)在GPU 210上执行的所存储的可执行指令数据。在尽可能多的其它通用型执行单元216可用于对视频和/或图形数据实施着色操作时,本地功能代码模块214使执行单元300动态平衡。本地功能代码模块214通过如下过程使得执行单元300实现该功能分析引入的工作负荷(即,从例如主处理器202上运行的应用程序得到的待处理的视频和/或图形数据),分析哪些通用型执行单元可供用于处理引入的工作负荷,并且在可供使用的通用型执行单元中分布引入的工作负荷。例如,当少于全部通用型执行单元216可供用于处理吋,工作负荷在可供用于处理的那些通用型执行单元中均匀地分布。然后,随着额外的通用型执行单元216变得可供使用(例如,因为它们已经结束对之前分配的工作负荷的处理),执行本地功能代码模块214的执行单元300将工作负荷在较大的通用型执行单元集合中分配工作负荷,从而使能够由GPU 210渲染的像素数量最优化。此外,因为待处理的视频和/或图形数据除包含众多其它指令外,还包括像素渲染指令,本地功能代码模块214通过在GPU 210 (或离散GPU 212)上的多个通用型执行单元216中均匀地分布像素渲染指令而使能够由GPU 210 (或者在另一示例中为离散GPU 212)渲染的像素数量最优化。通用型执行单元216是可编程执行单元,在一个实施例中,其具有单指令多数据(SIMD)处理器。这些通用型执行单元216可操作以执行诸如操纵顶点和纹理等着色功能。此外,通用型执行单元216可操作以执行本地功能代码模块214。通用型执行单元216还共用类似的寄存器和编程模型,诸如例如AMD64编程模型。因此,通用型执行单元216能够使用相同的指令集语言,诸如例如C++。然而,本领域技术人员将理解,同样可以采用其它适合的编程模型和/或指令集语言。现在參照图3,提供了多个通用型执行单元216中的单个通用型执行单元300的示例性描述。例如,图3示出了通用型执行单元#I的详细视图。通用型执行单元#s 2-N与 通用型执行单元#I共用相同的架构,因此,通用型执行单元#I的详细视图同样适用于通用型执行单元#s 2-N。此外,多个通用型执行单元216可以包含尽可能多的単独的通用型执行单元300。然而,在一个实施例中,在GPU 210上存在比GPU 212上较少的单个的通用型执行单元300。尽管如此,离散GPU 212上的通用型执行单元216将共用与GPU 210上的通用型执行单元216相同的寄存器和编程模型以及指令集语言,并且同样可操作以执行相同的本地功能代码模块214。每个通用型执行单元300包括与SMD引擎304通信的指令指针302。每个SMD引擎304与通用型寄存器组308通信。每个通用型寄存器组308可操作以存储诸如例如状态信息228等数据以及地址。状态信息可以包括例如在数据指令之后写出到例如通用型寄存器组308中的数据值。例如,状态信息228可以指由通用型执行单元216使用的控制每个通用型执行单元300如何处理视频和/或图形数据流的任何信息。例如,由执行像素着色的通用型执行单元300所使用的状态信息可以包括像素着色器程序、像素着色器常数、渲染目标信息、图形运算參数等。此外,状态信息228包括关于GPU (例如,GPU 210或离散GPU 212)的标识信息,诸如计算系统存储器空间中的GPU物理地址和/或用于处理视频和/或图形数据的GPU模型。每个通用型执行单元300内的SMD引擎304包括多个逻辑单元,诸如例如ALU306。每个ALU 306可操作以对其接收到的视频和/或图形数据执行各种数学运算。指令指针302可操作以确定存储器中的定位有状态信息228(例如,待对视频和/或图形数据执行的指令)的位置,以使本地功能代码模块214能够获取状态信息228并且相应地将视频和/或图形处理任务分配给通用型执行单元216。參照图2,北桥204 (或者在一个实施例中为集成的单个封装件/管芯226)通过例如独占总线234与南桥232连结。北桥204通过诸如例如PCIExpress总线等适当总线236与离散GPU 212进ー步连结。离散GPU 212包括与GPU 210上的本地功能代码模块214相同的本地功能代码模块214。此外,离散GPU 212包括与GPU 210上的通用型执行单元216共用相同的寄存器和编程模型(诸如例如AMD64)和指令集语言(例如,C++)。然而,如之前所述,在一个实施例中,在离散GPU 212上存在比GPU 210上更多的单个的通用型执行单元300。因此,在该实施例中,离散GPU 212将比GPU210更快地处理工作负荷,因为本地功能代码模块214能够在离散GPU 212上的更大数量的单个通用型执行单元300上分配工作负荷。离散GPU 212进ー步与非系统存储器230连接。非系统存储器230可操作以存储诸如存储在系统存储器222中的状态信息228等状态信息228,并且包括与上述帧缓冲器218类似操作的帧缓冲器219。非系统存储器230可以为例如诸如只读存储器(ROM)、随机存取存储器(RAM)、电可擦除可编程只读存储器(EE-PROM)或任何其它适合的数字存储介质等易失性/非易失性存储器部件的任意組合。图4示出了使用多个处理器处理视频和/或图形数据而不丢失状态信息的方法的ー个示例。在步骤400中,对计算系统200应当从当前运算模式转变到期望运算模 式进行判定。该判定可以基于例如请求运算模式变化的用户输入、计算系统功耗要求、图形性能要求或其它适合的因素。在一个示例中,在控制驱动程序208控制下的主处理器202进行所述判定。然而,该操作可由任何适当的部件来执行。当前运算模式和期望运算模式可以包括例如集成运算模式、离散运算模式或协作运算模式。在步骤402中,停止由与当前运算模式相关联的第一 GPU实现的像素渲染,并且将状态信息保存在与当前运算模式相关联的通用型寄存器组中。如本文所使用的,渲染可以包括例如处理视频或基于来自应用程序的绘制命令来生成用于显示的像素。状态信息228可以保存在例如与当前运算模式相关联的第一 GPU上的多个通用型执行单元216中的通用型寄存器组308中。可通过下面的示例进ー步解释步骤402的操作。如果当前运算模式为集成运算模式(即,图形处理仅在GPU 210上实现),则状态信息228将保存在GPU 210上的通用型执行单元216的通用型寄存器组308中。如果当前运算模式为离散运算模式,则状态信息228将保存在离散GPU 212上的通用型执行单元216的通用型寄存器组308中。此夕卜,与当前运算模式相关联的GPU执行的像素渲染的停止可由主张对主处理器202中断的控制驱动程序208发起。通过这种方式,控制驱动程序208可用于发起计算系统200从ー种运算模式到另ー种运算模式的转变。在步骤404处,保存在与当前运算模式相关联的通用型寄存器组中的状态信息228被复制到存储器位置。例如,当从集成运算模式转变到离散运算模式时,状态信息228将从GPU 210上的通用型执行单元216的通用型寄存器组308复制到非系统存储器230。相反,当从离散运算模式转变到集成运算模式时,状态信息228将从GPU 212上的通用型执行単元216的通用型寄存器组308复制到系统存储器222。主处理器202可操作以执行状态信息228从与当前运算模式相关联的通用型寄存器组到存储器的转移(例如,复制)。通过这种方式转移状态信息228避免了如例如图I所示的计算系统100等常规计算系统所要求的对于破坏和重新创建状态信息的需要。与当前运算模式相关联的通用型寄存器组与期望运算模式的通用型寄存器组在共用相同寄存器组配置(例如,寄存器在两个GPU组中相同)的意义上相对应。在步骤406中,保存的状态信息228是从存储器位置获取的。这可以通过例如从系统存储器222或非系统存储器230请求状态信息228或者设有来自系统存储器222或非系统存储器230的状态信息228的本地功能代码模块214来实现。例如,当从集成运算模式转变到离散运算模式时,在步骤406中,在GPU 212上执行的本地功能代码模块将从非系统存储器获取状态信息228 (该状态信息228转移自GPU 210上的通用型执行单元216的通用型寄存器组308)。在步骤408中,与期望运算模式相关联的至少第二 GPU恢复像素的渲染。与期望运算模式相关联的至少第二 GPU将在与前一运算模式相关联的第一 GPU停止的确切地点继续进行像素的渲染。该本质上无缝转变是可行的,因为离散GPU 212和GPU 210这两者上的通用型执行单元216共用相同的寄存器和编程模型以及指令集语言,并且执行相同的本地功能代码模块214。图5示出了在计算系统中使用多个处理器处理视频和/或图形数据的方法的另ー示例。在该示例中,状态信息不保存在通用型寄存器组中。在步骤500中,与当前运算模式相关联的第一 GPU进行的像素渲染停止,并且与当前运算模式相关联的状态信息被保存在可由第二 GPU访问的位置处。在该示例中,状态信息可保存在在芯片上或芯片外的任何适合的存储器中,包括但不限于专用寄存器组、系统存储器、非系统存储器、帧缓冲器存储器等。在步骤502中,与期望运算模式相关联的至少第二 GPU利用所保存的状态信息来恢复 像素的渲染。換言之,在一个示例中,GPU (例如,GPU 210)可操作以停止与当前运算模式相关联的像素渲染,并且将与当前运算模式相关联的状态信息228保存在可由第二 GPU (例如,离散GPU 212)访问而使用的位置处。例如,响应于从当前运算模式到期望运算模式的转变,GPU (例如,GPU210)可操作以将状态信息保存在可由位于芯片外的另ー GPU (例如,GPU212)访问的位置处。从例如GPU 212的角度看,该操作也是可应用的。除了其它优势外,所公开的方法、系统和装置特别提供了在集成运算模式、离散运算模式和协作运算模式之间的切換,而不丢失状态信息且不延长切换时间。所公开的方法、系统和装置还缓解了在运算模式切換期间显示器屏幕上的非期望闪烁的现象。此外,所公开的方法、系统和装置使得在协作运算模式下离散GPU的处理能力最大化。本领域技术人员将理解其它优势。而且,已知基于存储在诸如但不限于⑶ROM、RAM、ROM的其它形式、硬盘驱动器、分布式存储器等计算机可读存储器上的可执行指令来创建集成电路的集成电路设计系统(例如,工作姑)。该指令可由诸如但不限于硬件描述符语言或其它适合的语言等任何适合的语言表示。因此,本文所述的电路也可以个这种系统制造为集成电路。例如,可利用存储在计算机可读介质上的指令来创建集成电路,当执行指令时,使得集成电路设计系统来创建集成电路,所述集成电路可操作以判定计算系统应当从当前运算模式转变到期望运算模式,停止与当前运算模式相关联的第一 GPU进行的像素渲染,并且将状态信息保存在与当前运算模式相关联的通用型寄存器组中,以及将保存的状态信息从与当前运算模式相关联的通用型寄存器组复制到可由与期望运算模式相关联的至少第二 GPU访问的存储器位置处。还可以适当地制成具有执行本文所述的其它操作的逻辑电路的集成电路。仅为了举例说明和描述的目的而不是通过限制的方式提供了本文描述的上面的详述和示例。因此,可构思的是,本公开覆盖落在上面公开且此处要求权利的基本原理的主旨和范围内的任意以及全部的改进、变型例或等同方案。
权利要求
1.ー种计算系统,包括 第一处理器; 至少第一 GPU,其与所述第一处理器可操作地连结,包括第一多个单指令多数据(SIMD)执行单元,所述至少第一 GPU可操作以执行本地功能代码模块,所述本地功能代码模块使所述至少第一 GPU响应于来自所述第一处理器的期望从当前运算模式转变到期望运算模式的通知而为至少第二 GPU提供状态信息; 所述至少第二 GPU,其与所述第一处理器可操作地连结,包括第二多个单指令多数据(SIMD)执行单元,所述第二 SMD执行单元具有与所述至少第一 GPU上的所述多个SMD执行単元相同的编程模型,所述至少第二 GPU可操作以执行与所述至少第一 GPU相同的本地功能代码模块并且可操作以获取由所述至少第一 GPU提供的所述状态信息以及经由所述相同的本地功能代码模块使用所述状态信息以继续处理。
2.如权利要求I所述的计算系统,其中,与所述至少第二GPU相关联的所述本地功能代码模块可操作以通过在所述至少第二 GPU上的所述多个SMD执行单元上均匀地分布像素渲染指令而使得能够由所述至少第二 GPU渲染的像素数量最优化。
3.如权利要求I所述的计算系统,其中,与所述至少第一GPU相关联的所述本地功能代码模块可操作以通过在所述至少第一 GPU上的所述多个SMD执行单元上均匀地分布像素渲染指令而使得能够由所述至少第一 GPU渲染的像素数量最优化。
4.如权利要求I所述的计算系统,其中,与所述至少第二GPU相关联的所述本地功能代码模块从所述至少第一 GPU上的所述多个SMD执行单元中的通用型寄存器组获取状态信息,以用于在所述至少第二 GPU上的所述多个SMD执行单元上执行。
5.如权利要求I所述的计算系统,其中,与所述至少第一GPU相关联的所述本地功能代码模块从所述至少第二 GPU上的所述多个SMD执行单元中的通用型寄存器组获取状态信息,以用于在所述至少第一 GPU上的所述多个SMD执行单元上执行。
6.如权利要求I所述的计算系统,其中,所述主处理器可操作以执行控制驱动程序,从而使所述计算系统从当前运算模式转变到期望运算模式,并且反之亦然。
7.如权利要求6所述的计算系统,其中,所述控制驱动程序主张处理器中断以发起从所述当前运算模式到所述期望运算模式的转变,并且反之亦然。
8.如权利要求6所述的计算系统,其中,使所述计算系统从当前运算模式转变到期望运算模式包括将状态信息 从与所述当前运算模式相关联的所述GPU上的所述多个SMD执行单元中的通用型寄存器组转移到存储器中的可由在与所述期望运算模式相关联的所述GPU上执行的所述本地功能代码模块访问的位置处。
9.如权利要求I所述的计算系统,其中,所述主处理器和所述至少第一GPU均实施在如下至少ー个上 相同的芯片封装件;或者 相同的管芯。
10.如权利要求I所述的计算系统,其中,每个SIMD执行单元包括 指令指针,其可操作以指向存储器中的存储状态信息的位置; SIMD引擎,其包括至少ー个ALU,所述至少ー个ALU可操作以执行从存储器中的所述位置取得的状态信息;以及 至少ー个通用型寄存器组,其可操作以存储状态信息。
11.如权利要求I所述的计算系统,进一歩包括至少ー个显示器,所述至少一个显示器可操作以显示由所述至少第一或第二 GPU中的任ー个或两个生成的像素。
12.—种在计算系统中使用多个处理器处理视频和/或图形数据的方法,所述方法包括 使与当前运算模式相关联的第一 GPU停止像素的渲染,并且将与所述当前运算模式相关联的状态信息保存到可由第二 GPU访问的位置处;以及 利用所述保存的状态信息使与期望运算模式相关联的至少第二 GPU恢复像素的渲染。
13.如权利要求12所述的方法,进ー步包括 通过在与特定运算模式相关联的多个通用型执行单元上均匀地分布像素渲染指令而使能够由所述特定运算模式渲染的像素数量最优化。
14.如权利要求12所述的方法,进ー步包括 判定所述计算系统应当从当前运算模式转变到期望运算模式。
15.如权利要求12所述的方法,其中,所述状态信息响应于第一GPU停止渲染像素而被保存在与所述当前运算模式相关联的通用型寄存器组中。
16.如权利要求15所述的方法,进ー步包括 将所保存的所述状态信息从与所述当前运算模式相关联的所述通用型寄存器组复制到存储器位置;以及 从所述存储器位置获取所保存的所述状态信息。
17.如权利要求12所述的方法,其中,所述计算系统应当从当前运算模式转变到期望运算模式的所述判定基于如下至少ー项 用户输入; 计算系统功耗要求;或者 图形性能要求。
18.如权利要求12所述的方法,其中,与所述当前运算模式相关联的所述GPU停止像素的渲染是通过向主处理器主张中断而发起的。
19.ー种装置,包括 至少第一 GPU,其包括第一多个通用型执行单元,所述至少第一 GPU可操作以执行本地功能代码模块,所述本地功能代码模块使所述至少第一 GPU为至少第二 GPU提供状态信息;以及 至少第二 GPU,其包括第二多个通用型执行单元,所述第二多个通用型执行单元具有与所述至少第一 GPU上的所述多个通用型执行单元相同的编程模型,所述至少第二 GPU可操作以执行与所述至少第一 GPU相同的本地功能代码模块并且可操作以获取由所述至少第一 GPU提供的所述状态信息,并且经由所述相同的本地功能代码模块使用所述状态信息以继续处理。
20.如权利要求19所述的装置,进ー步包括第一处理器,所述第一处理器与所述至少第一 GPU和所述至少第二 GPU可操作地连结,并且其中,所述第一处理可操作以控制保存的状态信息从与所述至少第一 GPU或所述至少第二 GPU的当前运算模式相关联的所述多个通用型执行单元中的通用型寄存器组复制到可由在与所述期望运算模式相关联的所述至少第一 GPU或所述至少第二 GPU上执行的所述本地功能代码模块访问的存储器位置。
21.ー种包括可执行指令的计算机可读介质,当执行所述可执行指令时,使得一个或多个处理器 判定计算系统应当从当前运算模式转变到期望运算模式; 使与所述当前运算模式相关联的第一 GPU停止像素的渲染,并且将状态信息保存在与所述当前运算模式相关联的通用型寄存器组中; 将所保存的所述状态信息从与所述当前运算模式相关联的所述通用型寄存器组复制到可由与所述期望运算模式相关联的至少第二 GPU访问的存储器位置。
22.ー种包括可执行指令的计算机可读介质,当由集成电路制造系统执行所述可执行指令时,使得所述集成电路制造系统制成 至少第一 GPU,其包括多个单指令多数据(SIMD)执行单元,每个SMD执行单元可操作以执行本地功能代码模块;以及 至少第二 GPU,其包括具有与所述至少第一 GPU上的所述多个SMD执行单元相同的编程模型的多个单指令多数据(SMD)执行单元,所述至少第二 GPU可操作以执行与所述至少第一 GPU相同的本地功能代码模块。
23.一种集成电路,包括 图形处理单元(GPU),其可操作以停止与当前运算模式相关联的像素渲染,并且将与所述当前运算模式相关联的状态信息保存在可由第二 GPU访问以使用的位置处。
24.如权利要求23所述的集成电路,其中,所述GPU可操作以响应于从当前运算模式到期望运算模式的转变而利用由第二 GPU保存的状态信息恢复之前由所述第二 GPU渲染的像素的渲染。
全文摘要
方法、系统和装置提供了使用第一图形处理电路和第二图形处理电路的组合来处理视频和/或图形数据,在第一和第二图形处理电路之间转移处理的同时,不丢失状态信息。待处理的视频和/或图形数据可以例如由在诸如主处理器等处理器上运行的应用程序提供。在一个示例中,装置包括至少一个GPU,所述至少一个GPU包括多个单指令多数据(SEVID)执行单元。GPU可操作以执行本地功能代码模块。所述装置还包括至少第二GPU,所述至少第二GPU包括具有与第一GPU上的多个SEVID执行单元相同的编程模型的多个SEVID执行单元。此外,第一和第二GPU可操作以执行相同的本地功能代码模块。本地功能代码模块使第一GPU响应于来自诸如主处理器等第一处理器的期望从当前运算模式转变到期望运算模式的通知而为至少第二GPU提供状态信息(例如,一个GPU停止,而另一个GPU启动)。第二GPU可操作以获取由第一GPU提供的状态信息并且经由相同的本地功能代码模块使用状态信息以在第一GPU停止的位置处继续处理。第一处理器可操作地连结到至少第一GPU和至少第二GPU。
文档编号G06F9/50GK102834808SQ201180012379
公开日2012年12月19日 申请日期2011年3月3日 优先权日2010年3月4日
发明者保罗·布林勒 申请人:Ati科技无限责任公司