CN101548277B - 多并行处理器的计算机图形系统 - Google Patents

多并行处理器的计算机图形系统 Download PDF

Info

Publication number
CN101548277B
CN101548277B CN200780040141.4A CN200780040141A CN101548277B CN 101548277 B CN101548277 B CN 101548277B CN 200780040141 A CN200780040141 A CN 200780040141A CN 101548277 B CN101548277 B CN 101548277B
Authority
CN
China
Prior art keywords
video
process unit
graphic process
video card
frame
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
CN200780040141.4A
Other languages
English (en)
Other versions
CN101548277A (zh
Inventor
N·冈萨雷斯
H·奥加维德斯
J·H·奥加维德斯
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.)
Dell Marketing LP
Original Assignee
Alienware Labs 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 Alienware Labs Corp filed Critical Alienware Labs Corp
Publication of CN101548277A publication Critical patent/CN101548277A/zh
Application granted granted Critical
Publication of CN101548277B publication Critical patent/CN101548277B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/42Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of patterns using a display memory without fixed position correspondence between the display memory contents and the display position on the screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/02Addressing, scanning or driving the display screen or processing steps related thereto
    • G09G2310/0224Details of interlacing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/12Overlay of images, i.e. displayed pixel being the result of switching between the corresponding input pixels
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2352/00Parallel handling of streams of display data
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/123Frame memory handling using interleaving
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/12Synchronisation between the display unit and other units, e.g. other display units, video-disc players
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)

Abstract

一种加速图形处理子系统结合了多个图形处理单元(GPU)或视频卡的处理能力。通过时间划分来组织多个视频卡的视频处理,从而使得每个视频卡在不同的时间周期期间负责视频数据处理。例如,两个视频卡可以轮流操作,其中第一视频卡控制某个时间周期的显示以及随后第二视频卡承担随后的周期的视频处理任务。以这种方式,在一个视频卡管理一个时间周期的显示的时候,第二视频卡处理下一个时间周期的视频数据,从而允许在下一个时间周期开始之前大量处理视频数据。本发明可以进一步结合负载平衡从而使得每个视频卡的处理时间周期的持续时间被动态地修改以最大化复合的视频处理。

Description

多并行处理器的计算机图形系统
相关申请的交叉引用
本申请部分延续2003年7月15日提交的、序号为10/620150的美国非临时专利申请,其实质内容被全部合并于此作为参考。
技术领域
本发明涉及计算机中图形指令的处理。更具体地,本发明的优选实施方式公开了在计算机中使用的加速图形处理子系统,该加速图形处理子系统使用多个现有的视频卡并指派每个视频卡交替生成用于绘制显示画面的指令,其中每个所述视频卡具有其一个或多个图形处理单元(GPU)。在公开的本发明中使用的视频卡不需要以任何实质方式做出修改。
背景技术
甚至在开始广泛使用个人电脑之前,计算机图形学就成为了计算的最有前途和最有挑战性的方面之一。为大众市场开发的第一个图形个人电脑依靠主要的计算机处理单元(CPU)来控制图形输出的各个方面。图形板或者视频卡在早期系统中用作CPU和显示装置之间的简单接口,而它们自己不进行任何处理。换句话说,这些早期的视频卡简单地将CPU发出的低级硬件命令翻译成模拟信号,该模拟信号被显示装置转换成屏幕上的图像。因为所有的处理都由CPU进行,图形密集型应用有可能过多使用处理循环并阻碍CPU执行其他任务。这导致整体反应迟钝和下降的系统性能。
为了降低CPU的图形工作量,硬件开发者引入了图形处理子系统来实时显现逼真的动画图像,诸如以每秒30个或更多个帧。这些子系统最通常被实现在扩展卡上,所述扩展卡可以被插入计算机系统的主板上的适当配置的槽中,以及这些子系统通常包括一个或多个专用图形处理单元(GPU)和专用图形存储器。GPU能够接收高级图形命令并且在内部将这些高级图形命令处理成显示装置所需要的视频信号。通常的GPU是被最优化以执行图形计算(例如矩阵转换、扫描变换和/或其他光栅化技术、纹理混合等)并将结果写入图形存储器的高度复杂的集成电路装置。GPU是响应于从在“主”处理器上执行的驱动器程序接收到的命令来进行操作的“从”处理器,所述“主”处理器通常是系统的中央处理单元(CPU)。通过极简单的示例的方式,如果应用需要在屏幕上绘制三角形,不需要CPU指示视频卡在屏幕上的什么位置绘制单个像素(即低级硬件命令),而是应用可以简单地发送“绘制三角形”的命令和某些参数(例如三角形的顶点的位置)到视频卡,GPU可以将这种高级命令处理成视频信号。在这种方式中,之前由CPU执行的图形处理现在由GPU执行。本发明使CPU能够更有效地处理非图形相关的任务。
早期的基于GPU的视频卡的主要缺点是没有GPU可以翻译然后处理的各种高级命令的“语言”的标准。所以,试图使用基于GPU的视频卡的高级功能的每个应用需要专用软件,该专用软件通常被称为驱动器,该驱动器可以理解GPU的语言。利用市场上成百上千的各种基于GPU的视频卡,应用开发者会陷于编写这些专用驱动器的困境中。实际上,特别流行的软件程序包括成百上千的视频卡驱动器及其可执行代码的现象并不罕见。这大大地减慢了新软件的开发和采用。
在现代计算机操作系统中,通过采用视频卡接口技术的标准方法解决所述语言问题。诸如Windows操作系统(由华盛顿州雷蒙德市的微软公司销售)的现代操作系统只需要为视频卡编写单个硬件驱动器。各种软件应用、CPU和视频卡之间的交互以称为应用编程接口(API或API模块)的中间软件层作为中介。全部所需要的是视频驱动器和应用能够解释(interpret)常见的图形API。在现在的个人电脑中使用的两个最常见的图形API是由华盛顿州雷蒙德市的微软公司提供销售的DirectX,和由计算机硬件和软件兴趣协会(consortiumofcomputerhardwareandsoftwareinterests)提供销售的OpenGL
由于基于GPU的图形处理子系统的出现,非常自然地将竭力提高对个人电脑图形子系统的吞吐量(即使子系统更快地处理信息)调整成竭力生产更多强大和复杂的GPU以及最优化和提高其相应的API性能。
硬件开发者寻求的用来提高图形子系统吞吐量的另一个方法是通过在单个视频卡上使用多个GPU从而并行处理图形信息。在不需要显著提升GPU设计的情况下,并行操作提高了每秒钟能够执行的显现操作的数量。最小化GPU之间的资源冲突,通常给每个GPU提供了自己的专用存储器区域,包括提供显示缓冲器,其中GPU向所述显示缓冲器写入GPU所显现的像素数据。例如,众所周知,使用多个GPU处理来自诸如DirectX或OpenGL的API的视频命令信号。一个GPU被指定为主GPU,而另一个GPU被指定为副GPU。尽管两个GPU独立地处理从API获得的图形命令,副GPU仍然必须通过主GPU传递其处理的信息(即对于分配给副GPU的屏幕部分的数字表示),接着,主GPU将单个结合的输出视频信号传送到视频显示装置。该系统的一个明显和重大的缺点是在两个GPU之间必须存在高带宽渠道。
没有已知的装置、系统或方法提供在计算机系统中使用的结合多个现有视频卡的处理能力和指派每个视频卡处理用于绘制屏幕的预定部分的指令的图形处理子系统,其中每个视频卡具有一个或多个GPU,所述屏幕的预定部分通过监视器或者其他的可视输出装置显示给用户。另外,上述装置没有一个描述了能够在不对视频卡进行实质修改的情况下结合多个现有视频卡的图形处理子系统。
所以,在现有技术中,需要一种用于在计算机中使用的图形处理子系统,该图形处理子系统结合了多个视频卡的处理能力并指派每个视频卡处理用于绘制屏幕的预定部分的指令,其中每个视频卡具有一个或多个GPU,所述屏幕的预定部分通过监视器或者其他的可视输出装置显示给用户。
在现有技术中,还需要一种能够在不对视频卡进行实质修改的情况下结合多个现有视频卡的图形处理子系统。
在现有技术中,还需要一种能够结合多个视频卡的处理能力和在视频卡之间不需要高带宽连接的图形处理子系统。
发明内容
本发明通过提供一种在计算机中使用的图形处理子系统来解决上述需要和问题,该图形处理子系统在不进行实质修改的情况下结合多个现有视频卡的处理能力,每个视频卡具有一个或多个GPU,以及该图形处理子系统指派每个视频卡处理用于绘制屏幕的预定部分的指令,所述屏幕的预定部分通过监视器或者诸如阴极射线管显示器、液晶显示器、等离子屏幕显示器、投影显示器、OLED显示器、头盔式显示器(head-mounteddisplay)或者其混合的其他可视输出装置显示给用户。
本发明的基本组件是:(1)软件图形命令复制器(GCR)模块;(2)多个视频卡,每个视频卡至少装备有一个GPU;(3)用于确保多个视频卡的视频信号输出同步的机构;以及(4)视频合并中心(“VMH”)硬件/软件组件。
总的来说,本发明通过拦截(intercept)计算机应用发出的图形命令和通过GCR模块将这些命令复制到多个图形命令流中来进行操作。命令流的数量对应于系统中存在的视频卡的数量。由GCR模块生成的每个图形命令流指示每个视频卡只为屏幕的特定部分生成图像。通过本领域技术人员公知的多个可用机构中的一个来将多个视频卡同步成相同的视频帧。来自多个视频卡的生成的视频信号然后在VMH处被收集并被结合成完整的屏幕,该完整的屏幕然后由监视器或者其他视频输出装置显示。
本领域的技术人员会注意到以及通过实验会注意到,通过使用多个视频卡,每个视频卡只处理屏幕的一部分,图形子系统的总吞吐量与视频卡的数量成比例地增加。然而,由于GCR模块引入至少最小量的处理开销,该处理开销也与视频卡的数量成比例地增加,所以吞吐量不是可无限扩大的。
因此,在一个实施方式中,本发明包括加速图形处理子系统,该加速图形处理子系统包括图形命令复制器(GCR),该GCR由拦截应用发出的图形命令和生成多个修改的图形命令流的软件模块组成;多个视频卡,每个视频卡装备有一个或多个GPU,其中多个修改的图形命令流的数量等于多个视频卡的数量;用于同步由多个视频卡输出的信号的机构;以及包括视频开关、视频开关控制器、微控制器和视频输出端的视频合并中心;其中图形命令复制器(GCR)生成多个修改的图形命令流,从而使得多个修改的图形命令流中的每一个包括用于只绘制图形屏幕的一部分的命令;多个修改的图形命令流的每一个被从多个视频卡中所选择的单个视频卡接收;来自多个视频卡的输出信号被视频开关接收以及输出信号的所选择部分被顺序地(sequentially)传递到视频输出端并被显示在可视输出装置上;以及视频开关控制器通过以合适的时间间隔触发传递开关(routingswitch)来控制视频开关,所述时间间隔由来自多个视频卡的输出信号的垂直刷新率和垂直分辨率以及分配给多个视频卡中的每个卡的负载平衡比来确定。
还公开了一种用于通过使用多个视频卡来加速计算机上的图形指令处理的方法,该方法包括以下步骤:拦截由应用发出的图形命令和生成多个修改的图形命令流,其中多个修改的图形命令流的数量等于多个视频卡的数量;同步由多个视频卡输出的信号;通过使用视频合并中心将来自多个视频卡的输出信号结合成单个图形输出信号,所述视频合并中心包括视频开关、视频开关控制器、微控制器和视频输出端;以及在可视输出装置上显示单个图形输出信号;其中多个修改的图形命令流中的每一个包括只绘制图形屏幕的一部分的命令;多个修改的图形命令流中的每一个被从多个视频卡中所选择的单个视频卡接收;来自多个视频卡的输出信号被视频开关接收以及输出信号的所选择部分被继续传递到视频输出端并被显示在可视输出装置上;以及视频开关控制器通过以合适的时间间隔触发传递开关来控制视频开关,所述时间间隔由来自多个视频卡的输出信号的垂直刷新率和垂直分辨率以及分配给多个视频卡中的每个卡的负载平衡比来确定。
所以,本发明的实施方式提供了一种在计算机中使用的加速图形处理子系统,该加速图形处理子系统结合多个视频卡的处理能力,每个视频卡具有一个或多个GPU,以及该加速图形处理子系统指派每个视频卡处理用于绘制屏幕的预定部分的指令,所述屏幕的预定部分通过监视器或者其他可视输出装置显示给用户。本发明的实施方式提供了一种能够在不进行实质修改的情况下通过结合多个现有视频卡来加速视频图形输出的图形处理子系统。本发明的其他实施方式提供了一种在视频卡之间不需要高带宽连接的图形处理子系统。
在另一个实施方式中,本发明通过多个视频卡(或GPU)来组织视频处理,从而使得每个视频卡在不同的时间周期期间负责视频处理。例如,两个视频卡可以合作以轮流给显示器提供视频数据,其中第一视频卡在某一时间周期控制显示以及第二视频卡在随后的周期继续承担视频处理任务。该配置提供了这样的优点,即在一个视频卡提供所处理的视频数据的情况下,第二视频卡在下一个时间周期执行其处理,由于在接下来的时间周期开始之前视频数据的处理可以被完成从而使延迟最小化。
附图说明
根据接下来的对优选和可选择的实施方式的详细描述并参考附图和权利要求,可以更清楚的理解和明白本发明的这些和其他方面、特征和优点。
图1显示了通常的(现有技术)单个视频卡图形子系统的框图;
图2和图6显示了本发明的实施方式的多视频卡图形子系统的框图;
图3显示了由本发明的图形命令复制器生成的多个命令流的应用的图示;
图4-图5和图7-图8显示了本发明的实施方式的视频合并中心的操作的示意图。
具体实施方式
在下面将参考附图更全面地描述本发明,在附图中显示了本发明的优选实施方式,可以理解在接下来的描述开始时合适领域的技术人员可以修改在此描述的发明同时仍然达到本发明的良好效果。因此,接下来的描述要被理解为是针对合适领域技术人员的概括性、教导性的公开,而不作为对本发明的限制。
图1是示出了没有本发明的在通常配置的计算机内的现代图形子系统以及其用于生成图像而与通常的个人计算机软件进行的交互的框图。
在通常情况下,诸如游戏、3D图形应用或其他程序的计算机应用150会生成用于各种图形的API命令152,所述各种图形需要被显示在显示装置168上。发出API命令152从而使得API命令152可以依照安装在计算机上的诸如DirectX或OpenGL的一些可用的API之一而被解释。合适的API模块154接收由应用发出的API命令152,以及接下来会处理驱动器命令156和发送驱动器命令156到视频卡驱动器158。视频卡驱动器158接下来发出GPU命令160到视频卡162。视频卡162然后会接收GPU命令160以及会通过其内部电路将命令翻译成视频信号164,该视频信号164被显示装置168接收并显示给用户。
图2是示出了根据本发明配置的图形子系统及其用于生成图像而与通常的个人计算机软件进行的交互的框图。只为了说明的目的,图2示出了装备有两个视频卡的系统,每个视频卡具有单个GPU。然而,本领域的技术人员可以理解,可以对系统增加另外的视频卡来提高其效率。通过并入多个视频卡可以达到附加效果,其中每个视频卡具有多于一个的GPU,和/或通过包括视频卡的混合可以达到附加效果,其中一些视频卡具有单个GPU以及一些视频卡具有多个GPU。
在本发明的情况下,GCR模块204是位于计算机应用和API模块203、205的多个实例之间的软件程序。在由应用200发出的命令到达API模块实例203、205之前GCR识别和拦截由应用200发出的API命令202。一旦被拦截,GCR模块204生成多个修改的API命令流206、208。修改的API命令流206、208被API模块实例203、205接收,接下来该API模块实例203、205每个生成多个命令流207、209,该多个命令流207、209被它们所分配的视频卡驱动器210、212接收和处理。在该示例中是2个API模块的情况下,修改的API命令流206、208的数量和API模块203、205的实例的数量等于在系统中使用的视频卡的数量。API流以此种方式被生成,以使得每个视频卡仅生成包括在分配给该视频卡的屏幕的特定区域内的像素。
为了更好地理解所述“多个命令流”的概念,图3示出了该多个命令流如何被应用到本发明中。如图3中所示,完整的图形屏幕250包括多个像素。所述像素排列在X-Y格中,并且屏幕中的每个像素可以使用其唯一的X、Y坐标被编址。整个屏幕的坐标的范围从显示器左上角252的X、Y延伸到右下脚254的X、Y。以最简单的示例方式,如果使用两个视频卡来实施本发明,则屏幕可以被分成上半部256和下半部258。屏幕上半部的像素坐标范围从X、Y(252)到X、Y(260),以及屏幕下半部的像素坐标范围从X、Y(262)到X、Y(254)。
因此,回到图2,对应于被指派以绘制屏幕的上部的视频卡218的命令流207可以指示视频卡只处理和绘制在由坐标X、Y(252)和X、Y(260)限定的矩形内的那些像素。相似地,对应于被指派以绘制屏幕的下部的视频卡220的命令流209可以指示视频卡只处理和绘制在由坐标X、Y(262)和X、Y(254)限定的矩形内的那些像素。
“多个命令流”的修改可以通过本领域中公知的各种技术来完成,对此的详细讨论超出了本发明的范围。作为示例,一种用于生成多个命令流的方法是对每个流插入唯一的“2D剪切”或“3D剪切”命令,该“2D剪切”或“3D剪切”命令指示分配给该流的视频卡只“绘制”包括在分配给该卡的屏幕的特定矩形邻近区域内的那些像素。例如,在双卡系统中,其中给第一个卡分配屏幕的上部以及给第二个卡分配屏幕的下部,对应于第一个卡的流接收整个屏幕的视频流,但也接收指示该卡“剪切”(即不绘制)不在屏幕上部内的任何像素的2D或3D剪切命令。相反,第二卡也接收整个屏幕的视频流,但也接收指示该卡“剪切”不在屏幕的下部内的任何像素的2D或3D剪切命令。
GCR204也能够动态地修改各种命令流从而使得每个视频卡接收只关于屏幕的特定部分的视频命令。简而言之,每个视频卡不必要接收整个命令流来描绘整个图像。例如,在双视频卡系统中,其中每个卡负责屏幕的百分之五十(即上/下),GCR204会接收、解释和处理来自计算机应用200的API命令202并发出两组修改的API命令流206、208。“上部”视频卡会接收需要用来只绘制与视频屏幕的上部相关的那些像素的命令。“下部”视频卡会接收需要用来只绘制与视频屏幕的下部相关的那些像素的命令。
本领域的技术人员可以理解,分配给每个视频卡的屏幕的不同部分不需要大小相等,也不是必须给每个卡分配视频屏幕的邻近部分。在大部分但不是所有情况下,要确保屏幕的每部分都安排和分配给视频卡。然而,在自始至终保持图形上静止的屏幕区域处可以容易地预见情况,从而如果该区域被绘制一次然后被留着不分配可以增加图形吞吐量。
继续图2,命令流207、209的每一个然后由其所分配的视频卡驱动器210、212处理,接下来该视频卡210、212发出GPU命令214、216到各自的视频卡218、220。每个视频卡218、220生成对应于屏幕的各自部分的视频信号222、224。由各个视频卡生成的多个视频信号222、224被发送到视频合并中心(VMH)226,该视频合并中心(VMH)226将所述多个视频信号222、224合并成由显示装置168接收的单个输出视频信号228。
每个视频卡218、220通常包括一个或多个GPU,该一个或多个GPU被配置成响应于通过系统总线接收的指令(命令)执行各种显现功能。在一些实施方式中,显现功能对应于图形处理渠道中的各个步骤,通过所述图形处理渠道描述场景的集合数据被转换成用于在显示装置168上显示的像素数据。这些功能可以例如包括光照转换、坐标转换、将几何要素进行扫描变换成光栅化数据(rasterizeddata)、明暗处理计算、阴影显现、纹理混合等等。显现功能的许多实施方式在本领域中是公知的并且可以在视频卡218、220上被GPU实施。在视频卡218、220上的每个GPU具有相关的图形存储器,该图形存储器可以使用一个或多个一般传统设计的集成电路存储器装置来实施。图形存储器可以包括各种物理或逻辑分部,诸如显示缓冲器和命令缓冲器。显示缓冲器存储图像(或图像的一部分)的像素数据,该数据被读取和发送到显示装置168用于显示。如上所述,可以根据由应用150生成的场景数据来生成像素数据。在一些实施方式中,显示缓冲器能够两倍缓冲从而使得当第一图像的数据从前缓冲器被读取用于显示的同时,第二图像的数据能够被写入后缓冲器而不影响当前显示的图像。如下所述,视频卡218、220上的命令缓冲器被用于给命令排队以用于在视频卡218、220上分别执行。视频卡218、220上的图形存储器的其他部分可以被用于存储各个GPU所需的数据(诸如纹理数据、颜色查找表等)、以及用于存储可执行程序代码等等。对于视频卡218、220上的每个图形存储器,可以提供存储器接口来控制对各个图形存储器的访问。存储器接口可以与各个GPU或存储器集成,或者存储器接口可以被实施为单独的集成电路装置。在一种已知的实施方式中,源于GPU的所有的存储器访问请求被发送到存储器接口。如果请求的目标地址对应于在GPU存储器中的位置,则存储器接口可以访问合适的位置。
同步器232确保多个视频卡是同步的以在同时生成相同的视频输出的视频数据。对于本领域的技术人员来说有多种已知的方法来实现这种类型的同步,但这种类型的同步的讨论在本专利范围以外。作为示例,一种实现同步的方式是通过使用同步锁相(genlock,其全称为generatorlock)机构。总的来说,同步锁相机构将多个装置同步到特定的定时信号。用来实现多个视频卡之间的同步的另一种方法是在视频卡中的一个视频卡内指定定时调节装置为主定时调节装置以及修改其他卡中的电路从而使得这些卡中的定时调整装置用作主定时调节装置的从属装置。定时调节装置通常使用压电晶体、可编程晶体、振荡器或可编程振荡器作为定时参考源。使用该方法,从属卡可以被主晶体周期性地复位从而使得在系统操作期间它们的定时可以实质上同步。
图4显示了详细表示VMH226的操作的示意图。VMH226的主要组件是视频开关322、视频开关控制器320、微控制器316和视频输出端330。通常,被VMH226接收的每个视频信号包括视频数据成分308、310以及同步成分312、314。视频数据成分308、310包括在特定时间被绘制的像素的红、绿和蓝(RGB)(或像素颜色的一些其他表示)值。同步成分312、314包括垂直和水平同步信号(V同步和H同步),该垂直和水平同步信号(V同步和H同步)确定在特定时间被绘制的像素的垂直和水平位置(即坐标)。因为视频卡的输出被同步(如上所述),来自各个视频信号222、224的同步成分312、314在所有时间是完全一样的。
当视频信号222、224到达VMH226时,其视频数据成分308、310被传递到视频开关322。接下来,视频开关322被视频开关控制器320控制,该视频开关控制器320接收同步成分312、314。在每个屏幕刷新循环期间,视频开关322以此种方式智能地以及顺序地传递来自各个视频信号222、224的视频数据成分,以将单个无缝结合的视频信号228和同步成分312、314一起从VMH226的视频输出端330传送到显示装置168,所述同步成分312、314基本上“穿过”视频开关控制器320。
如上所述,视频开关通过其多个输入顺序地循环以产生单个无缝输出。从一个视频信号到下一个视频信号的转换的定时是关键的以及必须在正好正确的时刻被完成以使结合的视频信号228看起来是无缝的。在双视频卡系统中,例如先前用作图2中示例的系统,在屏幕刷新循环的开始,来自被分配用于绘制屏幕的上半部256的视频卡218的视频数据成分被视频开关传递到VMH226的视频输出端330。然后,就在屏幕的下半部开始被第二视频卡220绘制的时间点,视频开关322被激活或“触发”,并且然后视频输出端330开始接收来自被分配以绘制屏幕的下半部258的视频卡220的视频数据成分。屏幕的下半部被完成时,屏幕刷新循环重新开始,视频开关322再次被触发,以及视频输出端330再次开始接收来自“上部”视频卡218的视频数据。该循环被持续重复以实现无缝结合的视频信号228。
视频开关322被视频开关控制器320控制,该视频开关控制器320确定在视频开关“触发”之间应该是多长的时间间隔。控制器320使用三个数据元素确定触发时间间隔。第一数据元素是视频卡操作的垂直刷新率。垂直刷新率以赫兹(Hz)或循环每秒表示。例如,以50Hz的垂直刷新率操作的视频卡每秒重新绘制整个屏幕50次。换种方式说,以50Hz操作的视频卡绘制整个屏幕要20毫秒。视频开关控制器320动态地计算其从多个视频卡信号222、224接收的同步成分312、314的V同步部分的垂直刷新率。
第二数据元素是垂直分辨率。一种用于确定垂直分辨率的方法是计算每帧(基于刷新率计算帧持续时间)的水平同步脉冲的数量。例如,以1600×1200的垂直分辨率操作的视频卡具有1200个扫描行(scanline)的垂直分辨率。这表示在每个帧中有1200个视频数据的扫描行。
视频开关控制器320使用的第三数据元素是被分配给每个视频卡218、220的屏幕的百分比。在某些情况下,可能需要在视频卡之间等分屏幕。在其他情况下,例如当一个视频卡比其他视频卡更强大时,可能需要给视频卡中的一个或多个视频卡分配屏幕的更大比例。该元素被称为“负载平衡比”,其通过软件和可选择地通过用户输入来分配,以及由微控制器316从计算机数据总线110获得。接下来,负载平衡比由视频开关控制器320从VMH微控制器316获得。
本领域的技术人员会认识到使用简单的测试反馈环路程序能够使结合的GPU的吞吐量最大化,所述测试反馈环路以动态或者一帧接一帧的方式基于每个视频卡的负载动态地调整负载平衡比。通常,测试反馈环路程序在GCR模块204和VHM226之间交互,所述GCR模块204将图形处理分配分成分开的API命令流207、209,所述VMH226合并来自视频卡218、220的生成的所处理的视频信号222、224。特别地,反馈环路程序可以监控每个视频卡的相对处理能力以及动态地调整被分配给每个视频卡的所分配屏幕部分的大小以最大化总的视频处理吞吐量。
一旦视频开关控制器320知道了垂直刷新率、垂直分辨率和负载平衡比,可以容易地计算用于生成结合的视频信号228的触发时间间隔。以示例的方式,在以50Hz操作(即绘制整个屏幕需要20毫秒)的具有1200的垂直分辨率的双视频卡系统中,其中指派用于绘制屏幕的上半部和下半部的视频卡分别占25%和75%的负载平衡比,开关顺序如下:(1)在屏幕刷新循环的开始,视频开关322把来自上部视频卡218的视频数据成分308导向VMH226的视频输出端330;(2)在300个扫描行(1200个扫描行的25%)之后开关被控制器320触发以及开始将来自下部视频卡220的视频数据成分310导向VMH226的视频输出端330;(3)在另外900个扫描行(1200个扫描行的75%)之后,视频开关322被触发到其初始位置以开始新的屏幕刷新循环。为了避免将任何伪像引入到最终图像,对各种视频卡之间的所有开关进行定时以使其在在视频信号的水平空白周期期间发生。
所以,可以看到本发明的实施方式提供了在单个视频卡上的多个GPU或者同时操作以共享视频处理任务的多个视频卡218、220,并且具体公开了将显示区域250划分成两个或多个离散区域256、258,其中视频卡218、220中的一个专用于处理每个离散区域256、258,诸如一些基于光栅的显示的一些行。通过以合适的顺序从每个GPU或视频卡的显示缓冲器中读出像素数据来显示图像。为了保持所显示图像的内部连贯性(“帧连贯”),防止每个GPU显示随后的帧直到其他的GPU也完成了当前的帧,从而使得所显示的图像的两部分在相同的扫描输出路径中被更新。
当本发明的上述讨论描述公开了显示区域被划分成两个分开的区域256、258的时候,可以理解,可以使用不同的技术划分显示区域250以及两个或多个视频卡218、220同时操作以通过处理不同的区域来共享视频处理任务。例如,显示区域250可以被划分成4个区域,每个视频卡218、220处理两个分开的区,或者视频卡218、220中的一个处理四个显示区域中的三个显示区域以用于负载平衡。同样地,通过使每个视频卡218、220分别处理奇和偶显示行来将视频显示卡218、220配对,就像隔行显示中使用的那样,在隔行显示中投影的图像在每个图像的奇数行和偶数行之间快速地交替。例如,在标准的空中下载电视广播中,只有来自每个帧的一半行在我们所知的扫描场中被发送,一个扫描场(奇数场)只包括奇数行,而下一个扫描场(偶数场)只包括偶数行。
在本发明的上述实施方式中,可以看到VMH226采用并结合了来自多个GPU或视频卡218、220的并发视频信号输出222、224,以及使用同步数据312、314将分离的视频数据308、310组织成连贯的视频输出330以控制开关322的操作,所述开关322选择性地接收视频数据308、310以得到视频输出330。现在参考图5,在本发明的可替换的实施方式中,VMH226还包括接收和存储分离的视频数据308、310的视频缓冲器340。特别地,视频缓冲器340存储无序的视频数据308、310,该视频数据308、310从视频卡218、220被接收。然后根据需要用来形成连贯的视频输出330的同步数据312、314,缓冲器访问应用342选择性地访问视频存储缓冲器。特别地,在每个屏幕刷新循环期间,缓冲器访问应用342智能地访问包括视频数据成分308、310的视频缓冲器340从而然后使得单个无缝结合的视频信号228和同步成分312、314一起从VMH226的视频输出端330被传送到显示装置168,所述同步成分312、314本质上“穿过”缓冲访问应用342。
可替换地,根据有序形式的同步数据312、314,视频缓冲器340可以存储视频数据成分308、310,从而使得在每个屏幕刷新循环期间,缓冲访问应用342只能够访问已经有序的视频数据成分308、310,该视频数据成分308、310需要被用于形成复合视频输出330,该复合视频输出330结合了由每个视频卡218、220处理的各种显示区。
应该理解,在本发明中可以使用用于组织视频数据以显示的其他方法,其中每个视频卡218、220负责视频数据流的分开的部分而不负责显示区域250的分开的部分。例如,两个视频卡218、220可以协作来轮流提供视频数据到显示器,其中第一视频卡218在某一时间周期控制显示以及使第二视频卡220在该周期的末尾继续承担视频处理任务。该配置提供了这样的优点,即在一个视频卡218提供所处理的视频数据的情况下,第二视频卡220在下一个时间周期完成其下一个视频数据的处理。
现在参考图6,详细公开了通过时间划分由多个GPU或视频卡处理视频信号。图6是示出了根据本发明配置的图形子系统及其为了生成图像而使用多个视频卡或位于单个卡上的多个GPU与通常的个人计算机软件进行的交互的框图。只为了示例的目的,图6示出了装备有两个视频卡418、420的系统,每个视频卡具有单个GPU。然而,本领域的技术人员可以理解,可以向系统增加附加的视频卡或者具有多个独立GPU的卡,从而增加其效率。同样地,通过合并多个视频卡可以达到附加效果,其中每个视频卡具有多于一个GPU,和/或通过具有视频卡的混合可以达到附加效果,其中一些视频卡具有单个GPU以及一些视频卡具有多个GPU。
在本发明中,图形模块404是位于计算机应用和API模块403、405的多个实例之间的软件程序。GCR识别和拦截由应用400发出的API命令402。一旦被拦截,GCR模块404通常通过操作一些类型的信号开关来生成多个修改的API命令流406、408,所述信号开关根据诸如与API命令402相关的时间戳的各种标准来选择性地在API模块403、405之间传递API命令402。修改的API命令流406、408被API模块实例403、405接收,其中每个修改的API命令流表示API命令402的离散部分,接下来所述API模块实例403、405分别生成命令流407、409,该命令流407、409被它们所分别分配的视频卡驱动器410、414接收和处理。修改的API命令流406、408和API模块403、405的实例的数量等于在系统中使用的视频卡或GPU的数量,在该示例中是2个API模块。命令流406、408以此种方式被生成以使得每个视频卡418、420生成包括在时间周期期间内分配给各自的视频卡的显示屏幕内的像素。将API命令流402进行时间划分而成为多个分开的命令流可以通过本领域中公知的各种技术来完成,对此的详细讨论超出了本发明的范围。
如上所述,图形模块404能够动态地分配各种命令流,从而使得每个视频卡接收只属于显示的特定时间分段的视频命令。简而言之,每个视频卡418、420接收需要用于在离散时间周期期间描绘整个图像的整个命令流。例如,在双视频卡系统中,其中每个卡负责诸如奇和偶时间周期的百分之五十的离散时间周期,图形模块404可以接收、解释和处理来自计算机应用400的API命令402并发出两组修改的API命令流406、408。“奇周期”视频卡会接收需要用来只绘制与视频屏幕显示的奇周期(周期1、3、5等)相关的那些像素的命令。“偶周期”视频卡会接收需要用来只绘制与视频屏幕显示的偶周期(周期2、4、6等)相关的那些像素的命令。本领域的技术人员可以理解,被分配给每个视频卡的屏幕显示的不同的时间周期不需要大小相等,也不必给每个卡分配视频显示的邻近时间周期。
每个命令流407、409然后被其所分配的视频卡驱动器410、414处理,接下来该视频卡驱动器410、414分别发出GPU命令414、416到各自的视频卡418、420。接下来每个视频卡418、420生成分别与用于管理视频显示屏幕168的输出的各自的时间周期相对应的视频信号422、424。
同步器434确保多个视频卡418、420协同生成视频数据,该视频数据结合以形成无缝呈现来自不同的时间周期的视频数据的可视显示168。对于本领域的技术人员来说有多种已知的方法来实现这种类型的同步,但这种类型的同步的讨论在本专利范围以外。作为示例,一种实现同步的方式是通过使用同步锁相(genlock,其全称为generatorlock)机构。总的来说,同步锁相机构将多个装置同步到特定的定时信号。用来实现多个视频卡之间的同步的另一种方法是指定在视频卡中的一个视频卡内的定时调节装置为主定时调节装置以及修改其他卡中的电路从而使得这些卡中的定时调整装置用作主定时调节装置的从属装置。定时调节装置通常使用压电晶体、可编程晶体、振荡器或可编程振荡器作为定时参考源。使用该方法,从属卡中的定时晶体可以被主晶体周期性地复位从而使得在系统操作期间它们的定时可以实质上同步。这样,视频卡中的一个视频卡可以产生指示剩余的视频卡的操作的同步信号,从而使得任何定时不规则性可以在随后的计算中被迅速补偿。
由各种视频卡生成的多个视频信号444、444被发送到视频合并中心(VMH)426,该视频合并中心将它们合并成由显示装置168接收的单个输出视频信号428。
图7显示了详细表示本发明的一个实施方式中VMH426的操作的示意图。VMH426的主要组件是视频开关522、视频开关控制器520、微控制器516和视频输出端530。通常,被VMH426接收的每个视频信号包括视频数据成分508、510以及同步成分512、514。视频数据成分518、510包括在特定时间被绘制的像素的红、绿和蓝(RGB)(或像素颜色的一些其他表示)值。同步成分512、514包括时间同步信号(T同步),该时间同步信号(T同步)确定与视频数据成分508、510相关的像素的特定时间。
当视频信号422、424到达VMH426时,其视频数据成分508、510被传递到视频开关522。接下来,视频开关522被视频开关控制器520控制,该视频开关控制器520接收同步成分512、514。视频开关522以此种方式智能地并顺序地传递来自各个视频信号422、424的视频数据成分,以使得之后将单个无缝结合的视频信号428和同步成分512、514一起从VMH426的视频输出端530传送到显示装置168,所述同步成分512、514实质上“穿过”视频开关控制器520。
如上所述,视频开关522通过其多个输入顺序地循环以产生单个无缝输出。在正确的时刻的从一个视频信号到下一个视频信号的转换的定时使结合的视频信号428看起来是无缝的;即,显示装置168不会同时接收不同的指令,并且在一个视频数据流的结尾和下一个视频数据流的开始之间没有停顿。在诸如先前用作图6中示例的系统的双视频卡系统中,来自在某个时间周期期间被分配用于绘制屏幕的视频卡418的视频数据成分在同步数据指出的合适时间周期期间被视频开关422传递到VMH426的视频输出端530。然后,在第一视频卡418的时间周期结束和第二视频卡420的时间周期开始的时间点处,视频开关522被激活,然后视频输出端530开始从其他的视频卡420接收视频数据成分。当第二视频卡420的时间周期完成时,循环重新开始,其中视频开关522再次操作从而使视频输出端530现在从第一周期视频卡418接收视频数据。所述循环不断被重复以实现无缝结合的视频信号428.
视频开关522被视频开关控制器520控制,该视频开关控制器520确定在视频开关触发之间应该是多长的时间间隔。控制器520使用在多个视频卡信号422、424内接收的同步成分512、514确定触发时间间隔。视频开关控制器520使用的主要元素是分配给每个视频卡418、420的时间周期的持续时间。在某些情况下,需要在视频卡之间等分时间周期。在其他情况下,诸如当一个视频卡比其他视频卡更强大或者处理相对更大的带宽连接时,需要给视频卡中的一个视频卡分配更长的时间周期。该负载平衡比通过软件或者可选择地通过用户输入而被分配,以及由微控制器516从计算机的数据总线110获得。接下来,负载平衡比由视频开关控制器520从微控制器516获得。
本领域的技术人员会认识到使用简单的测试反馈环路程序能够使结合的GPU的吞吐量最大化,所述测试反馈环路以动态或者按周期的方式基于每个视频卡的负载动态地调整负载平衡比。通常,测试反馈环路程序在图形模块404和VHM426之间交互,所述图形模块404将图形处理分配分成分开的API命令流407、409,所述VMH426合并来自视频卡418、420的生成的所处理的视频信号422、424。特别地,反馈环路程序可以监控每个视频卡418、420的相对可用处理能力以及动态地调整被分配给每个视频卡418、420的时间周期的大小,以通过最小化视频卡418、420的空闲率来最大化总的视频处理吞吐量。
因此,可以看到本发明的实施方式提供了在单个视频卡上的多个GPU或者多个视频卡或者同时操作以共享视频处理任务的多个视频卡418、420,并且具体公开了将显示区域450的时间周期划分成两个或多个离散的时间周期,其中每个视频卡418、420特别专用于处理分开的时间周期。通过以合适的顺序从每个GPU或视频卡的显示缓冲器中读出像素数据来显示图像。为了保持所显示图像的内部连贯性,防止每个GPU显现出随后的显示直到其他的GPU完成了当前的显示。
通过使每个视频卡418、420分别处理奇和偶显示行能够将视频卡418、420配对,就像隔行显示中使用的那样,在隔行显示中投影的图像在每个图像的奇数行和偶数行之间快速地交替。例如,在标准的空中下载电视广播中,只有来自每个帧的一半行在我们所知的扫描场中被发送,一个扫描场(奇数场)只包括奇数行,而下一个扫描场(偶数场)只包括偶数行。
现在参考图8,在本发明的可替换的实施方式中,VMH426还包括用来接收和存储分离的视频数据508、510的视频缓冲器540。视频缓冲器540存储无序的视频数据508、510,该视频数据508、510从视频卡418、420被接收。然后根据在与每个视频卡418、420相关的时间周期内需要用来形成视频输出530的同步数据512、514,缓冲器访问应用542选择性地访问视频存储缓冲器。例如,应当理解为每个视频卡418、420同时流动用于不同时间周期的所处理的数据。缓冲器540可以存储所述被接收的处于无组织状态的数据,该数据根据需要用于生成有序的视频数据流的同步数据512、514而被选择性地访问。特别地,在每个所分配的周期期间,缓冲器访问应用542以该方式智能地访问包括来自各个视频信号422、424的视频数据成分508、510的视频缓冲器540,从而使得单个无缝结合的视频信号428然后从VMH426的视频输出端530传送到显示装置168。
可替换地,视频缓冲器540可以使用同步数据512、514存储无序形式的视频数据成分508、510,从而使得缓冲器访问应用542在不做进一步处理的情况下能够只访问已经有序的视频数据成分508、510以形成连续的视频输出530,其中所述连续的视频输出530结合由每个视频卡418、420处理的各种时间周期。
因此,要理解的是以示例的方式公开了本发明的优选实施方式,以及对于本领域的技术人员来说可以在不脱离所附权利要求的范围和精神的情况下对本发明做出其他的修改和变换。

Claims (17)

1.一种加速图形处理系统,该加速图形处理系统包括:
图形API模块,该图形API模块从计算机应用接收命令,其中所述图形API模块将所述命令划分成包括与第一时间周期相关的第一API命令和与第二时间周期相关的第二API命令的多个API命令;
多个图形处理单元,该多个图形处理单元适于从所述图形API模块接收所述第一API命令和所述第二API命令,其中所述多个图形处理单元包括第一图形处理单元和第二图形处理单元,其中所述第一图形处理单元接收所述第一API命令以及所述第二图形处理单元接收所述第二API命令,其中所述第一图形处理单元处理所述第一API命令以生成第一视频信号,该第一视频信号包括与所述第一时间周期相关的第一视频数据和使所述第一视频数据与所述第一时间周期相关联的第一同步数据,以及其中第二图形处理单元处理所述第二API命令以生成第二视频信号,该第二视频信号包括与所述第二时间周期相关的第二视频数据和使所述第二视频数据与所述第二时间周期相关联的第二同步数据;以及
视频合并中心,该视频合并中心适于从所述多个图形处理单元接收所述第一视频信号和所述第二视频信号,其中所述视频合并中心分析所述第一同步数据和所述第二同步数据,并在所述第一时间周期期间将所述第一视频数据转发到显示装置和在所述第二时间周期期间将所述第二视频数据转发到显示装置。
2.根据权利要求1所述的加速图形处理系统,其中所述第一图形处理单元位于第一视频卡上以及所述第二图形处理单元位于第二视频卡上,其中所述第一视频卡和所述第二视频卡耦合到计算机。
3.根据权利要求1所述的加速图形处理系统,其中所述视频合并中心包括视频开关、视频开关控制器、微控制器以及视频输出端。
4.根据权利要求3所述的加速图形处理系统,其中所述视频开关从所述多个图形处理单元接收所述第一视频数据和所述第二视频数据,以及将所述第一视频数据和所述第二视频数据顺序地传递到所述视频输出端。
5.根据权利要求4所述的加速图形处理系统,其中所述视频开关由所示视频开关控制器控制,以及其中所述视频开关控制器通过以对应于所述第一时间周期和所述第二时间周期的合适时间间隔来触发传递开关以控制所述视频开关。
6.根据权利要求1所述的加速图形处理系统,其中所述第一时间周期和所述第二时间周期由负载平衡比限定,其中所述负载平衡比由对每个所述图形处理单元上的处理负载进行测量的测试反馈回路程序动态地调节。
7.一种用于被配置成并行操作的多个图形处理器的负载平衡的方法,该方法包括:提供包括帧序列的显示区域,所述帧序列包括N个帧,所述N个帧包括将被所述多个图形处理器中的第一图形处理器显现的K个帧以及将被所述多个图形处理器中的第二图形处理器显现的剩余的N-K个帧,其中比例K/(N-K)是所述第一图形处理器和所述第二图形处理器的负载平衡比;指示所述多个图形处理器显现所述帧,其中所述第一图形处理器和所述第二图形处理器分别执行对所述K个帧和所述N-K个帧的显现;从所述第一图形处理器和所述第二图形处理器接收所述帧的反馈数据,所述反馈数据反映所述第一图形处理器和所述第二图形处理器的各自的显现时间;基于所述反馈数据确定所述第一图形处理器和所述第二图形处理器的各自的负载之间是否存在不平衡;以及在不平衡存在的情况下:基于所述反馈数据识别所述第一图形处理器和所述第二图形处理器中哪个负载更重,以及通过选择新的K值来减少由所述第一图形处理器和所述第二图形处理器中负载更重的图形处理器显现的帧的数量从而调节所述负载平衡比。
8.根据权利要求7所述的方法,其中所述减少由所述第一图形处理器和所述第二图形处理器中负载更重的图形处理器显现的帧的数量的步骤还包括选择新的N值以调节所述负载平衡比。
9.根据权利要求7所述的方法,其中接收所述反馈数据的步骤包括接收多个帧中的每个帧的反馈数据。
10.根据权利要求7所述的方法,该方法还包括:生成所述第一图形处理器和所述第二图形处理器中的每个图形处理器的命令流,所述命令流包括用于所述帧的一组显现命令;以及根据该组显现命令将写入通告程序命令插入用于所述第一图形处理器和所述第二图形处理器中的每个图形处理器的命令流中,其中所述第一图形处理器和所述第二图形处理器中的每个图形处理器通过将所述反馈数据发送到存储位置来响应所述写入通告程序命令。
11.根据权利要求7所述的方法,其中所述N个帧中的每个帧由所述第一图形处理器和所述第二图形处理器中的每个图形处理器交替显现。
12.一种图形处理系统,该图形处理系统包括:图形驱动器模块;以及多个图形处理器,该多个图形处理器被配置成并行操作来显现帧序列中的各自组的帧,并将反馈数据提供到所述图形驱动器模块,所述图形驱动器模块进一步被配置成基于所述反馈数据检测所述多个图形处理器中的两个图形处理器各自的负载之间的不平衡,并且响应于检测到不平衡来减少由所述两个图形处理器中的负载更重的图形处理器显现的第一组帧的大小和增加由所述两个图形处理器中的另一个图形处理器显现的第二组帧的大小。
13.根据权利要求12所述的图形处理系统,该图形处理系统还包括多个图形存储器,每个图形存储器耦合到所述图形处理器中各自的图形处理器以及存储由所耦合到的图形处理器显现的帧的像素数据。
14.根据权利要求12所述的图形处理系统,其中所述图形驱动器模块进一步被配置成生成用于所述多个图形处理器的命令流,该命令流包括用于帧的一组显现命令以及使所述两个图形处理器中每个图形处理器发送反馈数据的指令,所述反馈数据包含发送该反馈数据的处理器已执行该组显现命令的指示。
15.根据权利要求12所述的图形处理系统,其中所述反馈数据包括所述两个图形处理器中哪个最后完成显现各自组的帧的指示。
16.根据权利要求15所述的图形处理系统,其中所述反馈数据包括所述两个图形处理器中最后完成的那个图形处理器的数字标识符,以及所述图形驱动器模块进一步被配置成根据多个帧上的所述数字标识符来计算负载系数。
17.根据权利要求16所述的图形处理系统,其中所述图形驱动器模块进一步被配置成在负载系数高于上限阈值或者低于下限阈值的情况下检测不平衡。
CN200780040141.4A 2006-09-18 2007-09-18 多并行处理器的计算机图形系统 Active CN101548277B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/522,525 US20080211816A1 (en) 2003-07-15 2006-09-18 Multiple parallel processor computer graphics system
US11/522,525 2006-09-18
PCT/US2007/020125 WO2008036231A2 (en) 2006-09-18 2007-09-18 Multiple parallel processor computer graphics system

Publications (2)

Publication Number Publication Date
CN101548277A CN101548277A (zh) 2009-09-30
CN101548277B true CN101548277B (zh) 2015-11-25

Family

ID=39201050

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200780040141.4A Active CN101548277B (zh) 2006-09-18 2007-09-18 多并行处理器的计算机图形系统

Country Status (6)

Country Link
US (1) US20080211816A1 (zh)
CN (1) CN101548277B (zh)
BR (1) BRPI0716969B1 (zh)
DE (1) DE112007002200T5 (zh)
GB (1) GB2455249B (zh)
WO (1) WO2008036231A2 (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047040B2 (en) * 2007-06-25 2015-06-02 International Business Machines Corporation Method for running computer program on video card selected based on video card preferences of the program
US9047123B2 (en) 2007-06-25 2015-06-02 International Business Machines Corporation Computing device for running computer program on video card selected based on video card preferences of the program
US8330763B2 (en) * 2007-11-28 2012-12-11 Siemens Aktiengesellschaft Apparatus and method for volume rendering on multiple graphics processing units (GPUs)
US7995003B1 (en) * 2007-12-06 2011-08-09 Nvidia Corporation System and method for rendering and displaying high-resolution images
US8537166B1 (en) * 2007-12-06 2013-09-17 Nvidia Corporation System and method for rendering and displaying high-resolution images
US8477143B2 (en) 2008-03-04 2013-07-02 Apple Inc. Buffers for display acceleration
US8289333B2 (en) 2008-03-04 2012-10-16 Apple Inc. Multi-context graphics processing
US8514215B2 (en) * 2008-11-12 2013-08-20 International Business Machines Corporation Dynamically managing power consumption of a computer with graphics adapter configurations
US8482114B2 (en) * 2009-09-10 2013-07-09 Nxp B.V. Impedance optimized chip system
US20110063305A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation Co-processing techniques on heterogeneous graphics processing units
KR101598374B1 (ko) * 2009-09-21 2016-02-29 삼성전자주식회사 영상 처리 장치 및 방법
US9041719B2 (en) * 2009-12-03 2015-05-26 Nvidia Corporation Method and system for transparently directing graphics processing to a graphical processing unit (GPU) of a multi-GPU system
EP2513860B1 (en) * 2009-12-16 2018-08-01 Intel Corporation A graphics pipeline scheduling architecture utilizing performance counters
US9830889B2 (en) 2009-12-31 2017-11-28 Nvidia Corporation Methods and system for artifically and dynamically limiting the display resolution of an application
US20110212761A1 (en) * 2010-02-26 2011-09-01 Igt Gaming machine processor
US20110298816A1 (en) * 2010-06-03 2011-12-08 Microsoft Corporation Updating graphical display content
US20120001925A1 (en) * 2010-06-30 2012-01-05 Ati Technologies, Ulc Dynamic Feedback Load Balancing
US8274422B1 (en) * 2010-07-13 2012-09-25 The Boeing Company Interactive synthetic aperture radar processor and system and method for generating images
JP6027739B2 (ja) * 2011-12-15 2016-11-16 キヤノン株式会社 映像処理装置、映像処理方法、映像処理システムおよびプログラム
WO2013097210A1 (zh) * 2011-12-31 2013-07-04 华为技术有限公司 基于云应用的在线渲染方法和离线渲染方法及相关装置
EP2801029A1 (en) * 2012-01-06 2014-11-12 Aselsan Elektronik Sanayi ve Ticaret Anonim Sirketi Distributed image generation system
WO2013154522A2 (en) 2012-04-09 2013-10-17 Empire Technology Development Llc Processing load distribution
US20140195594A1 (en) * 2013-01-04 2014-07-10 Nvidia Corporation Method and system for distributed processing, rendering, and displaying of content
KR20140111736A (ko) * 2013-03-12 2014-09-22 삼성전자주식회사 디스플레이장치 및 그 제어방법
US20160163280A1 (en) * 2013-07-16 2016-06-09 Norman Weyrich Image layer composition
US9497358B2 (en) * 2013-12-19 2016-11-15 Sony Interactive Entertainment America Llc Video latency reduction
KR101855311B1 (ko) * 2014-02-20 2018-05-09 인텔 코포레이션 그래픽 처리 유닛을 위한 작업 부하 일괄 제출 메커니즘
GB201506328D0 (en) * 2015-04-14 2015-05-27 D3 Technologies Ltd A system and method for handling video data
EP3188013B1 (en) 2015-12-29 2022-07-13 Dassault Systèmes Management of a plurality of graphic cards
EP3188014B1 (en) * 2015-12-29 2022-07-13 Dassault Systèmes Management of a plurality of graphic cards
CN105786523B (zh) * 2016-03-21 2019-01-11 北京信安世纪科技股份有限公司 数据同步系统及方法
EP3465605B1 (en) * 2016-05-27 2021-01-20 Analog Way S.A.S. A computer-implemented method for reducing video latency of a computer video processing system and computer program product thereto
CN110235438B (zh) * 2016-12-01 2021-12-28 Lg 电子株式会社 图像显示设备和包含该图像显示设备的图像显示系统
CN106686352B (zh) * 2016-12-23 2019-06-07 北京大学 多gpu平台的多路视频数据的实时处理方法
US10204394B2 (en) * 2017-04-10 2019-02-12 Intel Corporation Multi-frame renderer
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10452868B1 (en) * 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US11170461B2 (en) * 2020-02-03 2021-11-09 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis while rendering
US11508110B2 (en) 2020-02-03 2022-11-22 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering
US12112394B2 (en) 2020-02-03 2024-10-08 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using configurable shaders
US11514549B2 (en) 2020-02-03 2022-11-29 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase
CN112132915B (zh) * 2020-08-10 2022-04-26 浙江大学 一种基于生成对抗机制的多样化动态延时视频生成方法
CN115129483B (zh) * 2022-09-01 2022-12-02 武汉凌久微电子有限公司 一种基于显示区域划分的多显卡协同显示方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1393000A (zh) * 2000-10-10 2003-01-22 索尼计算机娱乐公司 数据处理系统和方法、计算机程序和记录介质

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821209A (en) * 1986-01-21 1989-04-11 International Business Machines Corporation Data transformation and clipping in a graphics display system
JP2770598B2 (ja) * 1990-06-13 1998-07-02 株式会社日立製作所 図形表示方法およびその装置
DE69132796T2 (de) * 1990-11-30 2002-04-25 Sun Microsystems Inc Verfahren und gerät zur darstellung von grafischen bildern
US5774133A (en) * 1991-01-09 1998-06-30 3Dlabs Ltd. Computer system with improved pixel processing capabilities
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
JP3098342B2 (ja) * 1992-11-26 2000-10-16 富士通株式会社 並列処理装置における処理順序指定方式
US5560034A (en) * 1993-07-06 1996-09-24 Intel Corporation Shared command list
US5460093A (en) * 1993-08-02 1995-10-24 Thiokol Corporation Programmable electronic time delay initiator
JPH07152693A (ja) * 1993-11-29 1995-06-16 Canon Inc 情報処理装置
EP0693737A3 (en) * 1994-07-21 1997-01-08 Ibm Method and apparatus for managing tasks in a multiprocessor system
US5668594A (en) * 1995-01-03 1997-09-16 Intel Corporation Method and apparatus for aligning and synchronizing a remote video signal and a local video signal
US5799204A (en) * 1995-05-01 1998-08-25 Intergraph Corporation System utilizing BIOS-compatible high performance video controller being default controller at boot-up and capable of switching to another graphics controller after boot-up
US5638531A (en) * 1995-06-07 1997-06-10 International Business Machines Corporation Multiprocessor integrated circuit with video refresh logic employing instruction/data caching and associated timing synchronization
US5784075A (en) * 1995-08-08 1998-07-21 Hewlett-Packard Company Memory mapping techniques for enhancing performance of computer graphics system
US6025840A (en) * 1995-09-27 2000-02-15 Cirrus Logic, Inc. Circuits, systems and methods for memory mapping and display control systems using the same
KR100269106B1 (ko) * 1996-03-21 2000-11-01 윤종용 멀티프로세서 그래픽스 시스템
US6064672A (en) * 1996-07-01 2000-05-16 Sun Microsystems, Inc. System for dynamic ordering support in a ringlet serial interconnect
US5961623A (en) * 1996-08-29 1999-10-05 Apple Computer, Inc. Method and system for avoiding starvation and deadlocks in a split-response interconnect of a computer system
US5790842A (en) * 1996-10-11 1998-08-04 Divicom, Inc. Processing system with simultaneous utilization of multiple clock signals
US6006289A (en) * 1996-11-12 1999-12-21 Apple Computer, Inc. System for transferring data specified in a transaction request as a plurality of move transactions responsive to receipt of a target availability signal
US5818469A (en) * 1997-04-10 1998-10-06 International Business Machines Corporation Graphics interface processing methodology in symmetric multiprocessing or distributed network environments
US6157395A (en) * 1997-05-19 2000-12-05 Hewlett-Packard Company Synchronization of frame buffer swapping in multi-pipeline computer graphics display systems
US5937173A (en) * 1997-06-12 1999-08-10 Compaq Computer Corp. Dual purpose computer bridge interface for accelerated graphics port or registered peripheral component interconnect devices
US5892964A (en) * 1997-06-30 1999-04-06 Compaq Computer Corp. Computer bridge interfaces for accelerated graphics port and peripheral component interconnect devices
US6429903B1 (en) * 1997-09-03 2002-08-06 Colorgraphic Communications Corporation Video adapter for supporting at least one television monitor
US5914727A (en) * 1997-09-09 1999-06-22 Compaq Computer Corp. Valid flag for disabling allocation of accelerated graphics port memory space
US6205119B1 (en) * 1997-09-16 2001-03-20 Silicon Graphics, Inc. Adaptive bandwidth sharing
US6008821A (en) * 1997-10-10 1999-12-28 International Business Machines Corporation Embedded frame buffer system and synchronization method
US6141021A (en) * 1997-12-12 2000-10-31 Intel Corporation Method and apparatus for eliminating contention on an accelerated graphics port
US5956046A (en) * 1997-12-17 1999-09-21 Sun Microsystems, Inc. Scene synchronization of multiple computer displays
US6412031B1 (en) * 1998-02-10 2002-06-25 Gateway, Inc. Simultaneous control of live video device access by multiple applications via software locks and in accordance with window visibility of applications in a multiwindow environment
US6304244B1 (en) * 1998-04-24 2001-10-16 International Business Machines Corporation Method and system for dynamically selecting video controllers present within a computer system
US6088043A (en) * 1998-04-30 2000-07-11 3D Labs, Inc. Scalable graphics processor architecture
US6157393A (en) * 1998-07-17 2000-12-05 Intergraph Corporation Apparatus and method of directing graphical data to a display device
US6329996B1 (en) * 1999-01-08 2001-12-11 Silicon Graphics, Inc. Method and apparatus for synchronizing graphics pipelines
US6549963B1 (en) * 1999-02-11 2003-04-15 Micron Technology, Inc. Method of configuring devices on a communications channel
US6753878B1 (en) * 1999-03-08 2004-06-22 Hewlett-Packard Development Company, L.P. Parallel pipelined merge engines
JP3169933B2 (ja) * 1999-03-16 2001-05-28 四国日本電気ソフトウェア株式会社 並列描画装置
US6545683B1 (en) * 1999-04-19 2003-04-08 Microsoft Corporation Apparatus and method for increasing the bandwidth to a graphics subsystem
US6323875B1 (en) * 1999-04-28 2001-11-27 International Business Machines Corporation Method for rendering display blocks on display device
US6275240B1 (en) * 1999-05-27 2001-08-14 Intel Corporation Method and apparatus for maintaining load balance on a graphics bus when an upgrade device is installed
US6477603B1 (en) * 1999-07-21 2002-11-05 International Business Machines Corporation Multiple PCI adapters within single PCI slot on an matax planar
US6384833B1 (en) * 1999-08-10 2002-05-07 International Business Machines Corporation Method and parallelizing geometric processing in a graphics rendering pipeline
US6560659B1 (en) * 1999-08-26 2003-05-06 Advanced Micro Devices, Inc. Unicode-based drivers, device configuration interface and methodology for configuring similar but potentially incompatible peripheral devices
US6228700B1 (en) * 1999-09-03 2001-05-08 United Microelectronics Corp. Method for manufacturing dynamic random access memory
US6473086B1 (en) * 1999-12-09 2002-10-29 Ati International Srl Method and apparatus for graphics processing using parallel graphics processors
US6557065B1 (en) * 1999-12-20 2003-04-29 Intel Corporation CPU expandability bus
US6760031B1 (en) * 1999-12-31 2004-07-06 Intel Corporation Upgrading an integrated graphics subsystem
US6748457B2 (en) * 2000-02-03 2004-06-08 Realtime Data, Llc Data storewidth accelerator
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US6924807B2 (en) * 2000-03-23 2005-08-02 Sony Computer Entertainment Inc. Image processing apparatus and method
US20020154214A1 (en) * 2000-11-02 2002-10-24 Laurent Scallie Virtual reality game system using pseudo 3D display driver
US6621500B1 (en) * 2000-11-17 2003-09-16 Hewlett-Packard Development Company, L.P. Systems and methods for rendering graphical data
JP2002328818A (ja) * 2001-02-27 2002-11-15 Sony Computer Entertainment Inc 情報処理装置、統合型情報処理装置、実行負荷計測方法、コンピュータプログラム
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US7436850B2 (en) * 2001-10-30 2008-10-14 Texas Instruments Incorporated Ultra-wideband (UWB) transparent bridge
US6898766B2 (en) * 2001-10-30 2005-05-24 Texas Instruments Incorporated Simplifying integrated circuits with a common communications bus
US20030112248A1 (en) * 2001-12-19 2003-06-19 Koninklijke Philips Electronics N.V. VGA quad device and apparatuses including same
US6683614B2 (en) * 2001-12-21 2004-01-27 Hewlett-Packard Development Company, L.P. System and method for automatically configuring graphics pipelines by tracking a region of interest in a computer graphical display system
US6920618B2 (en) * 2001-12-21 2005-07-19 Hewlett-Packard Development Company, L.P. System and method for configuring graphics pipelines in a computer graphical display system
US6919896B2 (en) * 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US6894692B2 (en) * 2002-06-11 2005-05-17 Hewlett-Packard Development Company, L.P. System and method for sychronizing video data streams
US7802049B2 (en) * 2002-10-30 2010-09-21 Intel Corporation Links having flexible lane allocation
US6943804B2 (en) * 2002-10-30 2005-09-13 Hewlett-Packard Development Company, L.P. System and method for performing BLTs
US7119808B2 (en) * 2003-07-15 2006-10-10 Alienware Labs Corp. Multiple parallel processor computer graphics system
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1393000A (zh) * 2000-10-10 2003-01-22 索尼计算机娱乐公司 数据处理系统和方法、计算机程序和记录介质

Also Published As

Publication number Publication date
WO2008036231A3 (en) 2008-11-27
DE112007002200T5 (de) 2009-07-23
WO2008036231A2 (en) 2008-03-27
BRPI0716969B1 (pt) 2018-12-18
GB0904650D0 (en) 2009-04-29
GB2455249B (en) 2011-09-21
BRPI0716969A8 (pt) 2017-08-15
BRPI0716969A2 (pt) 2013-11-05
GB2455249A (en) 2009-06-10
US20080211816A1 (en) 2008-09-04
CN101548277A (zh) 2009-09-30

Similar Documents

Publication Publication Date Title
CN101548277B (zh) 多并行处理器的计算机图形系统
US7119808B2 (en) Multiple parallel processor computer graphics system
US9405586B2 (en) Method of dynamic load-balancing within a PC-based computing system employing a multiple GPU-based graphics pipeline architecture supporting multiple modes of GPU parallelization
KR100830286B1 (ko) 비디오 데이터 처리 시스템 및 방법
US6747654B1 (en) Multiple device frame synchronization method and apparatus
US7342588B2 (en) Single logical screen system and method for rendering graphical data
US6621500B1 (en) Systems and methods for rendering graphical data
US6882346B1 (en) System and method for efficiently rendering graphical data
US6844879B2 (en) Drawing apparatus
KR101973985B1 (ko) 고해상도 디스플레이를 위한 분산 병렬 처리 방식의 영상 렌더링 시스템 및 그 방법
US6680739B1 (en) Systems and methods for compositing graphical data
CN110402462A (zh) 无用户感知情况下的低延时断裂
WO2007055067A1 (ja) 情報処理装置、グラフィックプロセッサ、制御用プロセッサおよび情報処理方法
US6791553B1 (en) System and method for efficiently rendering a jitter enhanced graphical image
CN118200660A (zh) 一种云原生的融合渲染系统
CN118741225A (zh) 多屏显示方法、系统以及电子设备
JP2005181637A (ja) 同期表示システム、クライアント、サーバ、プログラム及び同期表示方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant