多并行处理器的计算机图形系统的制作方法

文档序号:6456351阅读:156来源:国知局
专利名称:多并行处理器的计算机图形系统的制作方法
技术领域
本发明涉及计算机中图形指令的处理。更具体地,本发明的优选实施方 式公开了在计算机中使用的加速图形处理子系统,该加速图形处理子系统使 用多个现有的视频卡并指派每个视频卡交替生成用于绘制显示画面的指令, 其中每个所述视频卡具有其一个或多个图形处理单元(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是由华盛
7顿州雷蒙德市的微软公司提供销售的DirectX ,和由计算机硬件和软件兴趣 协会(consortium of computer hardware and software interests)提供销售的 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-mounted display)或者其混 合的其他可视输出装置显示给用户。
本发明的基本组件是(1)软件图形命令复制器(GCR)模±央;(2)多 个视频卡,每个视频卡至少装备有一个GPU; (3)用于确保多个视频卡的视 频信号输出同步的机构;以及(4)视频合并中心("VMH")硬件/软件组件。
总的来说,本发明通过拦截(intercept)计算机应用发出的图形命令和 通过GCR模块将这些命令复制到多个图形命令流中来进行操作。命令流的 数量对应于系统中存在的视频卡的数量。由GCR模块生成的每个图形命令 流指示每个视频卡只为屏幕的特定部分生成图像。通过本领域技术人员公知 的多个可用机构中的一个来将多个视频卡同步成相同的视频帧。来自多个视 频卡的生成的视频信号然后在VMH处被收集并被结合成完整的屏幕,该完 整的屏幕然后由监视器或者其他视频输出装置显示。本领域的技术人员会注意到以及通过实验会注意到,通过使用多个视频 卡,每个视频卡只处理屏幕的一部分,图形子系统的总吞吐量与视频卡的数
量成比例地增加。然而,由于GCR模块引入至少最小量的处理开销,该处 理开销也与视频卡的数量成比例地增加,所以吞吐量不是可无限扩大的。
因此,在一个实施方式中,本发明包括加速图形处理子系统,该加速图 形处理子系统包括图形命令复制器(GCR),该GCR由拦截应用发出的图形 命令和生成多个修改的图形命令流的软件模块组成;多个视频卡,每个视频 卡装备有一个或多个GPU,其中多个修改的图形命令流的数量等于多个视频 卡的数量;用于同步由多个视频卡输出的信号的机构;以及包括视频开关、 视频开关控制器、微控制器和视频输出端的视频合并中心;其中图形命令复 制器(GCR)生成多个修改的图形命令流,从而使得多个修改的图形命令流 中的每一个包括用于只绘制图形屏幕的一部分的命令;多个修改的图形命令
流的每一个被从多个视频卡中所选择的单个视频卡接收;来自多个视频卡的 输出信号被视频开关接收以及输出信号的所选择部分被顺序地 (sequentially)传递到视频输出端并被显示在可视输出装置上;以及视频开 关控制器通过以合适的时间间隔触发传递开关(routing switch)来控制视频 开关,所述时间间隔由来自多个视频卡的输出信号的垂直刷新率和垂直分辨 率以及分配给多个视频卡中的每个卡的负载平衡比来确定。
还公开了一种用于通过使用多个视频卡来加速计算机上的图形指令处 理的方法,该方法包括以下步骤拦截由应用发出的图形命令和生成多个修 改的图形命令流,其中多个修改的图形命令流的数量等于多个视频卡的数 量;同步由多个视频卡输出的信号;通过使用视频合并中心将来自多个视频 卡的输出信号结合成单个图形输出信号,所述视频合并中心包括视频开关、 视频开关控制器、微控制器和视频输出端;以及在可视输出装置上显示单个 图形输出信号;其中多个修改的图形命令流中的每一个包括只绘制图形屏幕
10的一部分的命令;多个修改的图形命令流中的每一个被从多个视频卡中所选 择的单个视频卡接收;来自多个视频卡的输出信号被视频开关接收以及输出 信号的所选择部分被继续传递到视频输出端并被显示在可视输出装置上;以 及视频开关控制器通过以合适的时间间隔触发传递开关来控制视频开关,所 述时间间隔由来自多个视频卡的输出信号的垂直刷新率和垂直分辨率以及 分配给多个视频卡中的每个卡的负载平衡比来确定。
所以,本发明的实施方式提供了一种在计算机中使用的加速图形处理子 系统,该加速图形处理子系统结合多个视频卡的处理能力,每个视频卡具有 一个或多个GPU,以及该加速图形处理子系统指派每个视频卡处理用于绘制 屏幕的预定部分的指令,所述屏幕的预定部分通过监视器或者其他可视输出 装置显示给用户。本发明的实施方式提供了一种能够在不进行实质修改的情 况下通过结合多个现有视频卡来加速视频图形输出的图形处理子系统。本发 明的其他实施方式提供了一种在视频卡之间不需要高带宽连接的图形处理 子系统。
在另一个实施方式中,本发明通过多个视频卡(或GPU)来组织视频处 理,从而使得每个视频卡在不同的时间周期期间负责视频处理。例如,两个 视频卡可以合作以轮流给显示器提供视频数据,其中第一视频卡在某一时间 周期控制显示以及第二视频卡在随后的周期继续承担视频处理任务。该配置 提供了这样的优点,即在一个视频卡提供所处理的视频数据的情况下,第二 视频卡在下一个时间周期执行其处理,由于在接下来的时间周期开始之前视 频数据的处理可以被完成从而使延迟最小化。


根据接下来的对优选和可选择的实施方式的详细描述并参考附图和权 利要求,可以更清楚的理解和明白本发明的这些和其他方面、特征和优点。
ii图1显示了通常的(现有技术)单个视频卡图形子系统的框图2和图6显示了本发明的实施方式的多视频卡图形子系统的框图3显示了由本发明的图形命令复制器生成的多个命令流的应用的图
示;
图4-图5和图7-图8显示了本发明的实施方式的视频合并中心的操作的 示意图。
具体实施例方式
在下面将参考附图更全面地描述本发明,在附图中显示了本发明的优选 实施方式,可以理解在接下来的描述开始时合适领域的技术人员可以修改在 此描述的发明同时仍然达到本发明的良好效果。因此,接下来的描述要被理 解为是针对合适领域技术人员的概括性、教导性的公开,而不作为对本发明
的限制。
图l是示出了没有本发明的在通常配置的计算机内的现代图形子系统以 及其用于生成图像而与通常的个人计算机软件进行的交互的框图。
在通常情况下,诸如游戏、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£、 Yj:延伸到 右下脚254的Xs、 YT。以最简单的示例方式,如果使用两个视频卡来实施 本发明,则屏幕可以被分成上半部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右、YT (254)限定的矩形内的那些像素。
"多个命令流"的修改可以通过本领域中公知的各种技术来完成,对此 的详细讨论超出了本发明的范围。作为示例, 一种用于生成多个命令流的方 法是对每个流插入唯一的"2D剪切"或"3D剪切"命令,该"2D剪切" 或"3D剪切"命令指示分配给该流的视频卡只"绘制"包括在分配给该卡 的屏幕的特定矩形邻近区域内的那些像素。例如,在双卡系统中,其中给第 一个卡分配屏幕的上部以及给第二个卡分配屏幕的下部,对应于第一个卡的 流接收整个屏幕的视频流,但也接收指示该卡"剪切"(即不绘制)不在屏 幕上部内的任何像素的2D或3D剪切命令。相反,第二卡也接收整个屏幕 的视频流,但也接收指示该卡"剪切"不在屏幕的下部内的任何像素的2D 或3D剪切命令。
GCR 204也能够动态地修改各种命令流从而使得每个视频卡接收只关 于屏幕的特定部分的视频命令。简而言之,每个视频卡不必要接收整个命令 流来描绘整个图像。例如,在双视频卡系统中,其中每个卡负责屏幕的百分 之五十(即上/下),GCR 204会接收、解释和处理来自计算机应用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所需 的数据(诸如纹理数据、颜色査找表等)、以及用于存储可执行程序代码等
15等。对于视频卡218、 220上的每个图形存储器,可以提供存储器接口来控 制对各个图形存储器的访问。存储器接口可以与各个GPU或存储器集成, 或者存储器接口可以被实施为单独的集成电路装置。在一种已知的实施方式 中,源于GPU的所有的存储器访问请求被发送到存储器接口。如果请求的 目标地址对应于在GPU存储器中的位置,则存储器接口可以访问合适的位 置。同步器232确保多个视频卡是同步的以在同时生成相同的视频输出的视 频数据。对于本领域的技术人员来说有多种已知的方法来实现这种类型的同 步,但这种类型的同步的讨论在本专利范围以外。作为示例, 一种实现同步 的方式是通过使用同步锁相(genlock,其全称为generator lock)机构。总的 来说,同步锁相机构将多个装置同步到特定的定时信号。用来实现多个视频 卡之间的同步的另一种方法是在视频卡中的一个视频卡内指定定时调节装 置为主定时调节装置以及修改其他卡中的电路从而使得这些卡中的定时调 整装置用作主定时调节装置的从属装置。定时调节装置通常使用压电晶体、 可编程晶体、振荡器或可编程振荡器作为定时参考源。使用该方法,从属卡 可以被主晶体周期性地复位从而使得在系统操作期间它们的定时可以实质 上同步。图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到达VMH 226时,其视频数据成分308、 310被 传递到视频开关322。接下来,视频开关322被视频开关控制器320控制, 该视频开关控制器320接收同步成分312、 314。在每个屏幕刷新循环期间, 视频开关322以此种方式智能地以及顺序地传递来自各个视频信号222、224 的视频数据成分,以将单个无缝结合的视频信号228和同步成分312、 314 一起从VMH 226的视频输出端330传送到显示装置168,所述同步成分312、 314基本上"穿过"视频开关控制器320。如上所述,视频开关通过其多个输入顺序地循环以产生单个无缝输出。 从一个视频信号到下一个视频信号的转换的定时是关键的以及必须在正好 正确的时刻被完成以使结合的视频信号228看起来是无缝的。在双视频卡系 统中,例如先前用作图2中示例的系统,在屏幕刷新循环的开始,来自被分 配用于绘制屏幕的上半部256的视频卡218的视频数据成分被视频开关传递 到VMH 226的视频输出端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 X1200的垂直分辨率操作的视频卡具有1200个扫描行(scanline)的垂直分 辨率。这表示在每个帧中有1200个视频数据的扫描行。视频开关控制器320使用的第三数据元素是被分配给每个视频卡218、 220的屏幕的百分比。在某些情况下,可能需要在视频卡之间等分屏幕。在 其他情况下,例如当一个视频卡比其他视频卡更强大时,可能需要给视频卡 中的一个或多个视频卡分配屏幕的更大比例。该元素被称为"负载平衡比", 其通过软件和可选择地通过用户输入来分配,以及由微控制器316从计算机 数据总线110获得。接下来,负载平衡比由视频开关控制器320从VMH微 控制器316获得。本领域的技术人员会认识到使用简单的测试反馈环路程序能够使结合 的GPU的吞吐量最大化,所述测试反馈环路以动态或者一帧接一帧的方式 基于每个视频卡的负载动态地调整负载平衡比。通常,测试反馈环路程序在 GCR模块204和VHM 226之间交互,所述GCR模块204将图形处理分配 分成分开的API命令流207、 209,所述VMH226合并来自视频卡218、 220 的生成的所处理的视频信号222、 224。特别地,反馈环路程序可以监控每个 视频卡的相对处理能力以及动态地调整被分配给每个视频卡的所分配屏幕 部分的大小以最大化总的视频处理吞吐量。一旦视频开关控制器320知道了垂直刷新率、垂直分辨率和负载平衡比, 可以容易地计算用于生成结合的视频信号228的触发时间间隔。以示例的方 式,在以50Hz操作(即绘制整个屏幕需要20毫秒)的具有1200的垂直分 辨率的双视频卡系统中,其中指派用于绘制屏幕的上半部和下半部的视频卡 分别占25%和75%的负载平衡比,开关顺序如下(l)在屏幕刷新循环的开始,视频开关322把来自上部视频卡218的视频数据成分308导向VMH 226 的视频输出端330; (2)在300个扫描行(1200个扫描行的25%)之后开关 被控制器320触发以及开始将来自下部视频卡220的视频数据成分310导向 VMH 226的视频输出端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配对,就像隔行显示中使用的 那样,在隔行显示中投影的图像在每个图像的奇数行和偶数行之间快速地交 替。例如,在标准的空中下载电视广播中,只有来自每个帧的一半行在我们 所知的扫描场中被发送, 一个扫描场(奇数场)只包括奇数行,而下一个扫描场(偶数场)只包括偶数行。在本发明的上述实施方式中,可以看到VMH 226采用并结合了来自多 个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。"奇周期"视频卡 会接收需要用来只绘制与视频屏幕显示的奇周期(周期l、 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,其全称为generator lock)机构。总的来说,同步锁 相机构将多个装置同步到特定的定时信号。用来实现多个视频卡之间的同步 的另一种方法是指定在视频卡中的一个视频卡内的定时调节装置为主定时 调节装置以及修改其他卡中的电路从而使得这些卡中的定时调整装置用作 主定时调节装置的从属装置。定时调节装置通常使用压电晶体、可编程晶体、 振荡器或可编程振荡器作为定时参考源。使用该方法,从属卡中的定时晶体 可以被主晶体周期性地复位从而使得在系统操作期间它们的定时可以实质上同步。这样,视频卡中的一个视频卡可以产生指示剩余的视频卡的操作的 同步信号,从而使得任何定时不规则性可以在随后的计算中被迅速补偿。由各种视频卡生成的多个视频信号444、 444被发送到视频合并中心 (VMH) 426,该视频合成中心将它们合并成由显示装置168接收的单个输 出视频信号428。图7显示了详细表示本发明的一个实施方式中VMH 426的操作的示意 图。VMH426的主要组件是视频开关522、视频开关控制器520、微控制器 516和视频输出端530。通常,被VMH426接收的每个视频信号包括视频数 据成分508、 510以及同步成分512、 514。视频数据成分518、 510包括在特 定时间被绘制的像素的红、绿和蓝(RGB)(或像素颜色的一些其他表示) 值。同步成分512、 514包括时间同步信号(T同步),该时间同步信号(T同步) 确定与视频数据成分508、 510相关的像素的特定时间。当视频信号422、 424到达VMH 426时,其视频数据成分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传递到VMH 426的视频输出端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和VHM 426之间交互,所述图形模块404将图形处理分配分成分 开的API命令流407、 409,所述VMH 426合并来自视频卡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然后从VMH 426的视频输出端530传送到显示装置168。可替换地,视频缓冲器540可以使用同步数据512、 514存储无序形式的视频数据成分508、 510,从而使得缓冲器访问应用542在不做进一步处理 的情况下能够只访问已经有序的视频数据成分508、 510以形成连续的视频 输出530,其中所述连续的视频输出530结合由每个视频卡418、 420处理的 各种时间周期。
因此,要理解的是以示例的方式公开了本发明的优选实施方式,以及对 于本领域的技术人员来说可以在不脱离所附权利要求的范围和精神的情况 下对本发明做出其他的修改和变换。
权利要求
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所述的图形处理系统,其中所述图形驱动器模块 进一步被配置成在负载系数高于上限阈值或者低于下限阈值的情况下检测 不平衡。
全文摘要
一种加速图形处理子系统结合了多个图形处理单元(GPU)或视频卡的处理能力。通过时间划分来组织多个视频卡的视频处理,从而使得每个视频卡在不同的时间周期期间负责视频数据处理。例如,两个视频卡可以轮流操作,其中第一视频卡控制某个时间周期的显示以及随后第二视频卡承担随后的周期的视频处理任务。以这种方式,在一个视频卡管理一个时间周期的显示的时候,第二视频卡处理下一个时间周期的视频数据,从而允许在下一个时间周期开始之前大量处理视频数据。本发明可以进一步结合负载平衡从而使得每个视频卡的处理时间周期的持续时间被动态地修改以最大化复合的视频处理。
文档编号G06F15/76GK101548277SQ200780040141
公开日2009年9月30日 申请日期2007年9月18日 优先权日2006年9月18日
发明者H·奥加维德斯, J·H·奥加维德斯, N·冈萨雷斯 申请人:外星人实验室公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1