用多个图形处理单元进行视频处理的制作方法

文档序号:2613611阅读:215来源:国知局
专利名称:用多个图形处理单元进行视频处理的制作方法
技术领域
本发明的实施例一般涉及视频处理,且更特定来说涉及使用多个图形处理单元进行视频处理。
背景技术
通常,在显示视频数据之前必须对视频数据进行处理。有多种视频处理程序可应用于视频数据。考虑到(例如)在渐进式显示器上显示来自数字视频盘(DVD)的数据。如果已以交错的格式对DVD上的内容进行编码,那么在视频数据可显示在渐进式显示器上之前需要被解交错。并且,DVD一般含有字幕信息。如果用户希望显示字幕信息,那么需要从视频数据中提取字幕文本并接着将其混合到视频图片中。解交错和字幕产生仅是视频处理程序的两个实例。有许多可应用于视频数据的视频处理程序,例如边缘增强、图片缩放、色彩空间转换等。此外,视频处理程序一般不是互斥的。举例来说,如果用户想要在渐进式显示器上显示来自DVD的视频数据并同时显示字幕,那么可对视频数据应用解交错和字幕产生程序。然而,因为是对相同的基本组的视频数据执行每个程序,所以通常以串行方式而不是并行方式将不同的视频处理程序应用于视频数据。
视频图像包含一序列的视频帧,其中每个帧包含两个视频栏。用于显示视频帧的典型的帧速率是每秒三十帧(30Hz)。因此,对一帧的视频数据执行视频处理程序的时间必须少于显示一帧视频数据所需的时间(约33毫秒)。如果处理一帧视频数据所需的时间多于显示一帧视频数据所需的时间,那么就不能显示经处理的视频数据。作为替代,常展示先前的视频数据来取代当前的视频数据。这个现象通常被称作“掉”视频帧,而且是很不如人意的,因为这导致人眼可觉察到的运动流畅度的缺乏,从而导致较差的视频质量。
图形处理单元(GPU)可经配置以在视频处理系统内提供视频处理功能。举例来说,GPU可经配置以使用三维(3D)像素着色器来提供对视频数据的边缘增强。类似地,GPU可经配置以实施其它视频处理程序。每个处理任务需要有限量的时间来完成。因为如上所述,帧速率限制用于处理每个帧的时间量,且一般串行实施视频处理程序,所以限制了在单个GPU上执行的视频处理程序的数目和复杂性。一个事实使这个问题加剧,即高清晰度视频图像需要处理比标准清晰度图像多高达六倍的像素。增加像素数增加了执行每个处理程序所需的时间量,进而进一步限制单个GPU在不超过视频帧时间预算的情况下可应用于一帧视频数据的视频处理程序的数目,因而增加了掉视频帧的机率。
如上文所说明,此项技术中所需的是一种增加视频处理系统的视频处理量的方式,使得可在不增加掉帧的发生率的情况下对包括高清晰度视频数据的视频数据实施更多的处理程序。

发明内容
本发明的一个实施例陈述用于处理视频数据的系统。所述系统包括一主机处理器、一耦合到一第一帧缓冲器的第一媒体处理装置和一耦合到一第二帧缓冲器的第二媒体处理装置。所述第一帧缓冲器经配置以存储视频数据,且所述第一媒体处理装置经配置以处理所述视频数据的第一部分。所述第二帧缓冲器经配置以处理所述视频数据的副本,且所述第二媒体处理装置经配置以处理所述视频数据的第二部分。所述两个媒体处理装置经由可缩放总线耦合在一起。所述可缩放总线将由所述第二媒体处理装置处理的视频数据的第二部分载运到所述第一媒体处理装置,其中所述数据与由所述第一媒体处理装置处理的所述视频数据的第一部分组合以产生一经处理的视频帧。
所揭示系统的一个优势在于其提供一种多媒体处理环境,所述多媒体处理环境能够比现有技术单个GPU视频处理系统更有效地处理视频数据。因此,相对于现有技术系统来说,可以实质上较少的时间来处理视频帧,且相对于现有技术系统来说,可基本上增加使用所揭示系统所执行的视频处理命令的数目和复杂性。


通过参考实施例,可以获得一种方式,即可以上文简明概括的本发明的详细的、更具体的描述来理解本发明的上述特征,某些实施例在附图中说明。然而应注意,附图仅说明本发明的典型实施例,且因此不应认为在限制本发明的范围,因为本发明许可其它等效的实施例。
图1是根据本发明的一个实施例,当使用多个媒体处理装置来处理视频数据帧时视频处理系统所实施的功能步骤的原理说明;图2是经配置以实施本发明的一个或一个以上方面的计算装置的原理图;
图3是根据本发明的一个实施例,图2的计算装置的更详细的图;图4是根据本发明的一个实施例,当处理视频数据帧时由图2和图3的计算装置实施的方法步骤的流程图;图5A是根据本发明的一个实施例,说明用于实施图4的步骤402的命令序列的原理图;图5B是根据本发明的一个实施例,说明用于实施图4的步骤403的命令序列的原理图;和图5C是根据本发明的一个实施例,说明用于实施图4的步骤410的命令序列的原理图。
具体实施例方式
其中本文所述的本发明使得可在视频处理系统中实施两个或两个以上媒体处理装置来处理视频数据帧。通过使用多个媒体处理装置来处理视频帧,可增加视频处理量,这允许在不增加掉帧的发生率的情况下向视频数据应用更多的视频处理程序和/或更多的复杂程序。相反,如果使用多个媒体处理装置向视频数据应用相同数目的视频处理程序,那么将会减小掉帧的发生率。
图1是根据本发明的一个实施例,当使用多个媒体处理装置处理视频数据帧时视频处理系统所实施的功能步骤的原理说明。所属领域的技术人员将认识到,任何经配置来以任何次序执行这些功能步骤的系统都在本发明的范畴内。具体来说,本文所揭示的视频处理系统的实施例将图形处理单元描绘成系统内的媒体处理装置。然而,在替代实施例中,可实施任何类型的视频或媒体加速器。举例来说,可使用具有没有任何特定图形处理能力的一个或一个以上视频处理引擎的装置来实施本文所述的视频处理系统。
第一功能步骤是步骤102,其中主GPU接收解码的视频数据。在具有两个GPU的多GPU系统中,第一GPU被指定为主GPU,且第二GPU被指定为从属GPU。可从例如调谐器、解码器、存储装置或类似物的来源接收视频数据。通常一次接收一帧视频数据,且存储在与主GPU关联的帧缓冲器中。众所周知,帧缓冲器是GPU存储器的一部分。可有许多方式将视频数据接收到主GPU的帧缓冲器中,例如通过直接存储器存取(DMA)或通过CPU将视频数据直接写入到帧缓冲器中。
在步骤106中,从属GPU的帧缓冲器与主GPU的帧缓冲器同步,从而使得主GPU和从属GPU同时处理其各自的帧缓冲器中的视频数据。在步骤107中,主GPU和从属GPU的帧缓冲器被划分成第一和第二部分。每个GPU接着经配置以处理仅驻存在其各自帧缓冲器的指定部分中的视频数据以提高操作效率。举例来说,如果第一部分是每个帧缓冲器的上部分,且第二部分是每个帧缓冲器的下部分,那么主GPU可经配置以仅处理驻存在主帧缓冲器的第一部分内的视频数据,而从属GPU可经配置以仅处理驻存在从属帧缓冲器的第二部分内的视频数据。在步骤108中,GPU提供颠倒的电视电影处理。通常,视频数据来自电影,电影的帧速率为每秒二十四帧。如果以每秒三十帧的帧速率显示视频数据,那么将一般称为“三二下拉”的过程应用于电影数据,使得来自较低帧速率的电影图像可以较高帧速率显示为视频图像。这个过程会加入不需要的视觉假象,尤其当显示装置不需要三二下拉过程时,即渐进式显示器的情况。在这种情况下,颠倒的电视电影处理步骤使视频数据返回到原始的电影帧速率。如本文进一步详细描述,当(在这个步骤中并在其它步骤中)GPU处理视频数据时,每个GPU仅处理其帧缓冲器中的数据的部分,进而基本上增加视频处理系统的处理效率。
在步骤110中,GPU提供解交错处理。解交错是众所周知的过程,其将交错的视频数据转变为适合在渐进式显示装置上显示的视频数据。有许多众所周知的方法用于实施解交错功能,例如垂直内插(一般称为“BOB”)和同时显示两个场(一般称为“WEAVE”)。所属领域的技术人员将认识到,还可在GPU上实施其它更先进的解交错方案。在步骤112中,GPU提供子图片处理。子图片处理通常用于将字幕和DVD菜单插入视频数据中。字幕和DVD信息是从视频数据中提取的,且接着被混合到视频数据的可视部分中。在步骤114中,GPU提供边缘增强处理。有时已使用使视频帧中的物体的边缘显得比较柔和的方式处理了视频数据。边缘增强处理一般用于增加边缘的视觉外观。在步骤116中,GPU提供图片缩放处理。在这个步骤中,视频数据可被缩放到较大或较小的分辨率。通常在视频显示的分辨率不同于视频数据源的分辨率时执行这个程序。在步骤118中,GPU提供色彩空间转换处理。显示装置的色彩空间要求不同于视频数据的色彩空间呈现。举例来说,视频数据常呈现在YUV色彩空间中;然而,典型的显示装置在RGB色彩空间中操作。在步骤120中,GPU提供LCD过驱动处理以补偿不需要的LCD显示特性。
一旦已处理完视频数据,就组合驻存在每个GPU帧缓冲器中的经处理数据以供显示。在步骤122中,因为GPU会在不同的时间完成视频处理,所以使GPU同步。如本文进一步详细描述,主GPU和从属GPU通过读取和写入信号量的过程而同步。在步骤124中,软件驱动器交换帧缓冲器。通常以称为双缓冲的众所周知的技术来执行视频处理。双缓冲使用两个帧缓冲器来存储和处理视频数据。GPU使用第一帧缓冲器来处理当前帧的视频数据,同时从第二帧缓冲器中读取先前处理的视频数据,并将其传输到显示器。在将第二帧缓冲器的最后的像素传输到显示器后,两个帧缓冲器经“交换”以使得可读取来自第一帧缓冲器的经处理数据并将其传输到显示装置,同时GPU处理第二帧缓冲器中的新的视频数据帧。最终,在步骤126中,在显示器上显示视频数据。
下文结合图4进一步详细描述这些功能步骤的各个方面。替代实施例可包括其它视频处理步骤,例如噪声过滤、色彩增强等。其它实施例可省略某些视频处理步骤。举例来说,如果不在LCD显示器上显示视频数据,那么可跳过LCD过驱动处理步骤120。所属领域的技术人员将了解,上文在步骤124中描述的双缓冲原理可扩展到三缓冲,其中使用三个缓冲器来取代两个缓冲器。三缓冲在执行视频解码时尤其有用。在这些情况下,一个缓冲器通常用于解码,一个缓冲器用于后处理,且第三个缓冲器用于显示,其中所有三个功能同时运行。
图2是经配置以实施本发明的一个或一个以上方面的计算装置200的原理图。计算装置200包括(但不限于)中央处理单元(CPU)202、系统存储器204、第一图形子系统208和第二图形子系统210。CPU 202耦合到系统存储器204,所述系统存储器204用于存储数据和程序,例如可配置图形子系统208和210以提供所需的视频处理功能的驱动器206第一图形子系统208包括耦合到第一GPU存储器214的第一GPU 212,所述第一GPU存储器214经配置以存储GPU指令和数据,例如视频数据。如上所述,视频数据存储在包括第一帧缓冲器215和第二帧缓冲器216的双缓冲型帧缓冲器中。仅出于讨论目的,假设当前视频帧的一部分正在第一帧缓冲器215中处理,且正从第二帧缓冲器216中读取当前正传输到显示装置的所述视频帧的一部分。第一GPU 212还包括数字模拟转换器(DAC)218,其用于将经处理的视频传输到显示器。如图所示,第一GPU 212被指定为主GPU。通常,主GPU 212显示经处理的视频数据。在替代实施例中,可经由第一GPU 212中包括的其它显示接口(例如,最小转换差分信号(TMDS)接口、串行数字接口(SDI)或类似物)传输视频数据。
第二图形子系统210包括第二GPU 222和第二GPU存储器224。在一个实施例中,第二图形子系统210基本上类似于第一图形子系统208。第二GPU 222耦合到第二GPU存储器224,所述第二GPU存储器224经配置以存储GPU指令和数据(例如,视频数据)。同样,视频数据存储在包括第三帧缓冲器225和第四帧缓冲器226的双缓冲帧缓冲器中。仅为了说明的目的,假定当前视频帧的一部分正在第三帧缓冲器225中处理,且正从第四帧缓冲器226读取当前正传输到显示装置的视频帧的一部分。如图所示,将第二GPU222指定为从属GPU。由于从属GPU 222通常不用于将经处理的视频数据传输到显示器,所以从属GPU 222内的DAC 220可保持未连接。
第一GPU 212通过GPU总线250耦合到第二GPU 222。GPU总线250是由第二GPU222用以将经处理的视频数据传输到第一GPU 212的可缩放总线。举例来说,在一个实施例中,可使用NVIDIA SLITM多GPU技术来实施GPU总线250。此外,如本文先前所述,可使用任何类型的视频或媒体加速器来实施计算装置200。因此,在替代实施例中,GPU总线250可为在媒体处理装置之间传输经处理的视频数据的任何类型的技术上可行的可缩放总线。
操作中,驱动器206产生称为“推进缓冲器(push buffer)”的命令流。当被执行时,推进缓冲器中的命令使得能够对存储在第一GPU 212和第二GPU 222的帧缓冲器中的视频数据进行多GPU处理。首先,将视频数据从第一帧缓冲器215复制到第三帧缓冲器225。第二,如上所述,将帧缓冲器划分为第一和第二部分(这有效地将视频数据划分为第一和第二部分),且配置第一GPU 212以便处理视频数据的第一部分(即,驻存在第一帧缓冲器215的第一部分中的视频数据),且配置第二GPU 222以便仅处理视频数据的第二部分(即,驻存在第三帧缓冲器225的第二部分中的视频数据)。第三,处理驻存在第一帧缓冲器215的第一部分和第三帧缓冲器225的第二部分中的视频数据。第四,处理视频数据之后,使第一GPU 212与第二GPU 222同步,且接着第一帧缓冲器215和第三帧缓冲器225分别与第二帧缓冲器216和第四帧缓冲器226交换。第五,将经处理的视频数据从第三帧缓冲器225的第二部分传输到第一GPU 212。此数据与来自第一帧缓冲器215的第一部分的经处理的视频数据相组合以产生经处理的视频帧,接着传输所述经处理的视频帧以供显示。下文结合图4更详细地描述这些操作。
在替代实施例中,计算装置200中可使用两个以上图形子系统。在此配置中,存在单个主GPU和两个或两个以上从属GPU。从属GPU通过GPU总线250耦合到主GPU。由从属GPU处理的视频数据通过GPU总线250传输到主GPU。主GPU将组合的经处理的视频数据传输到显示装置。
图3是根据本发明一个实施例图2的计算装置200的更详细的图。明确地说,本文更详细地描述主GPU 212和从属GPU 222以及GPU存储器214和224。如图所示,主GPU 212包括(但不限于)视频处理器310、三维(3-D)处理器314、二维(2-D)处理器318、主机接口302、存储器接口330和GPU总线接口340。主机接口302耦合到视频处理器310、3-D处理器314和2-D处理器318。主机接口302从CPU 202(和驱动器206)接收推进缓冲器命令,且配置视频处理器310、3-D处理器314和2-D处理器318以根据推进缓冲器命令来处理视频数据。视频处理器310、3-D处理器314和2-D处理器318进一步耦合到存储器接口330。存储器接口330使得视频处理器310、3-D处理器314和2-D处理器318能够存取存储在GPU存储器214中的视频数据。
类似地,从属GPU 220包括(但不限于)视频处理器312、3-D处理器316、2-D处理器320、主机接口304、存储器接口332和GPU总线接口342。同样,主机接口304耦合到视频处理器312、3-D处理器316和2-D处理器320。主机接口304从CPU 202(和驱动器206)接收推进缓冲器命令,且配置视频处理器312、3-D处理器316和2-D处理器320以根据推进缓冲器命令来处理视频数据。视频处理器312、3-D处理器316和2-D处理器320进一步耦合到存储器接口332。存储器接口332使得视频处理器312、3-D处理器316和2-D处理器320能够存取存储在GPU存储器224中的视频数据。
由主GPU 212和从属GPU 220内的处理单元来提供视频处理功能,这存在许多众所周知的方式。举例来说,视频处理器310和312可经配置以提供例如图片缩放的视频处理功能。3-D处理器314和316可经配置以使用所包括的像素着色器来提供例如边缘增强的视频处理功能。2-D处理器318和320可经配置以提供例如存储器位块传输(memoryblit)的视频处理功能,以便将视频数据从主GPU存储器214复制到从属GPU存储器224。存储器位块传输是常见的2-D处理,其将存储器块的内容从一个位置复制到另一位置。
同样如图所示,GPU存储器214包括第一帧缓冲器215和第二帧缓冲器216,且GPU存储器224包括第三帧缓冲器225和第四帧缓冲器226。同样,仅为了说明的目的,假定主GPU 212和220正处理驻存在第一和第三帧缓冲器215、225中的视频数据,而先前处理的视频数据驻存在第二和第四帧缓冲器216、226中。由于(如前文图1中所述)将解码视频写入到主GPU 212的第一帧缓冲器215中,所以驱动器206配置主GPU 212以便将第一帧缓冲器215的内容复制到第三帧缓冲器225。驱动器206还提供命令以使主GPU 212与从属GPU 222同步,使得可同时处理第一帧缓冲器215和第三帧缓冲器225中的视频数据。在视频数据被复制且GPU同步之后,驱动器206将帧缓冲器215和225每一者中的视频数据划分为第一部分和第二部分。主GPU 212和从属GPU 222的每一者处理其各自帧缓冲器中的视频数据的部分。举例来说,驱动器206可配置主GPU 212以便处理驻存在第一帧缓冲器215的第一部分350中的视频数据。类似地,驱动器206可配置从属GPU 220以便处理驻存在第三帧缓冲器225的第二部分354中的视频数据。处理当前视频帧之后,第一帧缓冲器215与第二帧缓冲器216交换,且第三帧缓冲器225与第四帧缓冲器226交换。接着,当处理下一视频帧时,主GPU 212处理驻存在第二帧缓冲器216的第一部分352中的视频数据,且从属GPU 222处理驻存在第四帧缓冲器226的第二部分356中的视频数据。由于每一GPU仅处理视频数据包含视频帧的部分,所以处理效率提高。
在主GPU 212和从属GPU 222完成对于视频数据的视频处理程序之后,但在交换帧缓冲器之前,驱动器206使主GPU 212与从属GPU 222同步。通过使GPU 212与222同步,驱动器206确保主GPU 212和从属GPU 222两者在交换帧缓冲器之前均已完成处理其各自的视频数据。此同步步骤很重要,因为(尤其)如果所述GPU的一者在系统试图交换帧缓冲器并组合视频数据时尚未完成处理其视频数据部分,那么正被处理的视频帧可能被丢掉。
GPU总线接口340和342使得两个或两个以上GPU能够通过GPU总线250而耦合在一起。同样,如本文所述,在替代实施例中,GPU总线250可为用于在实施于计算装置200中的任何类型媒体处理装置之间传输经处理的视频数据的任何类型的技术上可行的可缩放总线。因此,GPU总线接口340和342的替代实施例可为针对用于在媒体处理装置之间传输经处理的视频数据的可缩放总线的任何技术上可行的接口。从属GPU 222的GPU总线接口342耦合到存储器接口332和DAC 220。主GPU 212的GPU总线接口340也耦合到存储器接口332和DAC 218。驱动器206配置从属GPU 222的GPU总线接口342以便将经处理的视频数据从第三和第四帧缓冲器225和226的相关部分(例如,第二部分354和第二部分356)传输到主GPU 212。同样,驱动器206配置主GPU 212的GPU总线接口340以便从从属GPU 220接收经处理的视频数据,并将经处理的视频数据传输到DAC 218。
主GPU 212的DAC 218耦合到存储器接口330并且还耦合到显示装置(未图示)或存储有显示之前的经处理视频帧的存储器元件(未图示)。从属GPU的DAC 220以类似方式耦合到存储器接口332,但通常从属GPU 222的DAC 220不连接到任何显示器或有关的存储器元件。主GPU 212的DAC 218经配置以组合分别在第一与第二帧缓冲器215和216的相关部分(例如,第一部分350与第一部分352)内的经处理的视频数据,利用由GPU总线接口340从从属GPU 222接收到的经处理的视频数据来产生经处理的视频帧。DAC 218进一步经配置以视情况将经处理的视频帧传输到显示装置或有关的存储器元件。
图4是根据本发明一个实施例,当处理视频数据的帧时由图2和图3的计算装置实施的方法步骤的流程图。所属领域的技术人员将了解,任何经配置来以任何次序执行所述方法步骤的系统均在本发明的范畴内。此外,可针对将要处理的每一帧视频数据重复本文描述的方法。
所述方法开始于步骤402,其中驱动器206配置主GPU 212以便将视频数据从主GPU212的第一帧缓冲器215复制到从属GPU 222的第三帧缓冲器225。仅为了说明的目的,假定主GPU 212和从属GPU 220正分别处理第一和第三帧缓冲器215和225中的当前视频帧,且正从第二和第四帧缓冲器216和226传输先前处理的视频帧以供显示。接着通过推进缓冲器中的数个系列的信号量命令使主GPU 212与从属GPU 222同步。信号量命令防止从属GPU 222在主GPU 212将视频数据从第一帧缓冲器215复制到第三帧缓冲器225时执行后续的推进缓冲器命令。有效地迫使从属GPU 222“等待”主GPU 212完成复制视频数据。一旦已经复制了视频数据,主GPU 212和从属GPU 222两者均能够重新开始执行推进缓冲器中的命令,且因此而同步。下文结合图5A更详细地描述此复制和同步步骤。
步骤403中,驱动器206配置主GPU 212和从属GPU 222以便将驻存在第一帧缓冲器215和第三帧缓冲器225中的视频数据划分为第一和第二部分。接着配置主GPU 212和从属GPU 222以便处理视频数据的不同部分。举例来说,主GPU 212可经配置以便处理驻存在第一帧缓冲器215的第一部分350中的视频数据,且从属GPU 222可经配置以便处理驻存在第三帧缓冲器225的第二部分354中的视频数据。因此,主GPU 212和从属GPU 222共享对当前视频帧的处理,进而提高计算装置200的处理效率。下文结合图5B更详细地描述将视频数据划分为不同部分的步骤。
步骤404中,驱动器206配置视频处理器310和312。此配置可(例如)配置视频处理器310和312以便调整视频数据的比例。步骤406中,驱动器206配置3-D处理器314和316。此配置可(例如)配置3-D处理器314和316以便提供解交错功能、边缘增强或其它视频处理功能。步骤408中,驱动器206配置2-D处理器318和320。此配置可(例如)配置2-D处理器318和320以便插入字幕信息或提供DVD应用程序中典型的菜单屏幕。在其它实施例中,主GPU 212和从属GPU 222可经配置以提供比步骤404、406和408中所描述的更多或更少量的视频处理,或不同类型的视频处理。
步骤410中,驱动器206使主GPU 212与从属GPU 222同步。由于每一GPU可以不同速率处理视频数据,所以此步骤确保两个GPU在交换帧缓冲器并组合经处理的视频数据以产生经处理的视频帧之前均已完成处理帧缓冲器215和225中的视频数据。同样,如下文结合图5C更详细地描述,使用推进缓冲器中的一系列信号量命令使主GPU 212与从属GPU 222同步。
步骤412中,驱动器206交换帧缓冲器。继续步骤402中陈述的实例,在显示来自第二帧缓冲器216的第一部分352和第四帧缓冲器226的第二部分356的每一者的最后像素之后,驱动器206交换第一帧缓冲器215与第二帧缓冲器216以及第三帧缓冲器225与第四帧缓冲器226,使得可将第一帧缓冲器215的第一部分350和第三帧缓冲器225的第二部分354中的经处理的视频数据传输到DAC 218以供显示。接着将将要处理的下一帧视频数据存储在第二帧缓冲器216和第四帧缓冲器226中。
步骤414中,将经处理的视频数据组合成经处理的视频帧,并通过DAC 218传输到显示装置(或有关的存储器元件)。同样,继续所述实例,通过DAC 218来组合来自第一帧缓冲器215的第一部分350和第三帧缓冲器225的第二部分354的经处理的视频数据以便产生经处理的视频帧。
图5A是根据本发明一个实施例说明用于实施图4的步骤402的命令502序列的原理图。如图所示,命令502形成推进缓冲器的一部分,其由驱动器206安装以配置主GPU 212和从属GPU 222来处理视频数据。明确地说,命令502促使主GPU 212将驻存在第一帧缓冲器215中的视频数据复制到第三帧缓冲器225,并且还促使主GPU 212与从属GPU222同步,从而使得主GPU 212和从属GPU 222能够同时处理驻存在第一帧缓冲器215和第三帧缓冲器225中的视频数据的部分。
设定子装置掩码(SSDM)命令504将子装置掩码设定为01,从而只允许主GPU 212能够执行推进缓冲器中的后续命令。对于SSDM命令的争论确定配置哪一GPU来执行推进缓冲器中的后续命令。在一个实施例中,所述争论是二位位字段,其中位字段内的每一位对应于两个GPU之一。如果(例如)第一位对应于主GPU 212且第二位对应于从属GPU 222,那么SSDM 01命令将配置主GPU 212以便执行推进缓冲器命令中的后续命令,而从属GPU 222忽略后续命令。SSDM 11命令将配置主GPU 212和从属GPU 222以便执行推进缓冲器中的后续命令。下一命令是复制命令506,其引导主GPU 212将第一帧缓冲器215的内容复制到第三帧缓冲器225。此命令的执行为主GPU 212和从属GPU 222提供对相同视频数据的存取。
释放信号量命令508促使主GPU 212释放信号量。驱动器使用信号量使主GPU 212与从属GPU 222同步,以便使得GPU能够同时处理第一帧缓冲器215和第三帧缓冲器225中的视频数据的部分。信号量是对系统存储器中特定地址的指示符。可释放或获取信号量。当GPU执行释放信号量命令时,GPU将特定值写入到与信号量相关联的存储器位置。当GPU执行获取信号量命令时,GPU读取与信号量相关联的存储器位置并将所述存储器位置的值与获取信号量命令中反映的值进行比较。这两个值不匹配指示尚未释放与获取信号量命令相关联的信号量。如果不存在匹配,那么执行获取信号量命令的GPU继续读取与信号量相关联的存储器位置直到发现匹配为止。因此,执行获取信号量命令的GPU在发现匹配之前不执行任何额外的推进缓冲器命令。举例来说,假定引导第一GPU释放值为42的信号量,且接着引导第二GPU获取所述值为42的信号量。第二GPU将继续读取与信号量相关联的系统存储器位置直到所述存储器位置的值为42为止。重要的是,第二GPU在所述存储器位置的值为42之前将不执行下一推进缓冲器命令,且只有当第一GPU释放值为42的信号量时存储器的值才会是42。
SSDM命令510将子装置掩码设定为10,从而使得仅从属GPU 222能够执行推进缓冲器中的后续命令。获取信号量命令512将引导从属GPU 222获取由主GPU 212释放的信号量以响应于释放信号量命令508。如上所述,由于从属GPU 222在主GPU 212释放信号量之前将不执行任何额外的推进缓冲器命令,且主GPU 212在已完全执行复制命令506之前不释放信号量,所以从属GPU 222被迫在执行任何额外的推进缓冲器命令之前“等待”主GPU 212将视频数据从第一帧缓冲器215复制到第三帧缓冲器225。因此,一旦主GPU 212释放信号量且从属GPU 222获取所述信号量,主GPU 212与从属GPU222“同步”。SSDM命令514将子装置掩码设定为11,从而使得两个GPU均能够执行推进缓冲器中的下一命令。
图5B是根据本发明一个实施例说明用于实施图4的步骤403的命令530序列的原理图。如图所示,命令530形成推进缓冲器的一部分,其由驱动器206安装以配置主GPU 212和从属GPU 222来处理视频数据。明确地说,命令530将视频数据划分为第一部分和第二部分。主GPU 212处理视频数据的第一部分,且从属GPU 222处理视频数据的第二部分。因此,主GPU 212和从属GPU 222能够同时处理视频数据,从而相对于现有技术系统来说导致处理效率增强。
SSDM命令538将子装置掩码设定为01,从而使得仅主GPU 212能够执行推进缓冲器中的后续命令。设定剪裁矩形(set clip rectangle)命令540为主GPU 212设定剪裁矩形。驱动器206使用设定剪裁矩形命令来界定每一GPU处理的视频数据的部分。在一个实施例中,设定剪裁矩形命令通过指定耦合到特定GPU的帧缓冲器的四个角来界定所述GPU处理的视频数据部分的边界。接着配置GPU以便处理驻存在帧缓冲器的那四个角内的视频数据。举例来说,如果驱动器206将帧缓冲器大约分成了两半,那么帧缓冲器的上部分可由设定剪裁矩形命令用角像素坐标(0,0)、(w,0)、(h/2,0)和(h/2,w)未指定,其中h是帧缓冲器的高度,且w是帧缓冲器的宽度。帧缓冲器的下部分可由设定剪裁矩形命令用角像素坐标(h/2,0)、(h/2,w)、(h,0)和(h,w)来指定。因此,剪裁矩形命令540指定帧缓冲器215的四个角。这四个角内的视频数据组成由主GPU 212处理的视频数据的部分。
由于较大的剪裁矩形与小剪裁矩形相比包括相对较多视频数据,所以驱动器206可通过控制指定的剪裁矩形中的视频数据量来控制由每一GPU执行的处理量。在替代实施例中,给定GPU拥有的视频数据部分可由帧内的像素位置指定,由行编号指定,或由任何其它技术上可行的方法指定。
SSDM命令542将子装置掩码设定为10,从而使得仅从属GPU 222能够执行推进缓冲器中的后续命令。设定剪裁矩形命令544通过指定帧缓冲器225的四个角为从属GPU222设定剪裁矩形。这四个角内的视频数据组成由从属GPU 222处理的视频数据的部分。SSDM命令546将子装置掩码设定为11,从而使得主GPU 212和从属GPU 222两者均能够执行推进缓冲器中的后续命令。如本文先前所述,如果推进缓冲器中的下一命令是视频处理命令,那么主GPU 212对在设定剪裁矩形命令540中指定的剪裁矩形内的第一帧缓冲器215中的视频数据部分执行所述命令。同样,从属GPU 222对在设定剪裁矩形命令544中指定的剪裁矩形内的第三帧缓冲器225中的视频数据部分执行所述命令。
图5C是根据本发明一个实施例说明用于实施图4的步骤410的命令560序列的原理图。如图所示,命令560形成推进缓冲器的一部分,其由驱动器206安装以配置主GPU 212和从属GPU 222来处理视频数据。明确地说,命令560使主GPU 212与从属GPU 222在已处理完第一帧缓冲器215和第三帧缓冲器225中的视频数据之后同步。如上文在图5B中所述,在多GPU系统中,主GPU 212和从属GPU 222处理视频数据的不同部分。因此,主GPU 212和从属GPU 222可在稍微不同的时间处完成处理其各自的视频数据部分。使主GPU 212与从属GPU 222同步确保在将由从属GPU 222处理的视频数据传输到主GPU 212并与由主GPU 212处理的视频数据相组合以产生经处理的视频帧之前,每一GPU已完成处理分别在第一帧缓冲器215和第三帧缓冲器225中的视频数据。此同步步骤很重要,因为其中如果所述GPU的一者在系统试图组合视频数据时尚未完成处理其视频数据部分,那么所述视频帧可能被丢掉。
SSDM命令564将子装置掩码设定为01,从而使得仅主GPU 212能够响应于推进缓冲器中的后续命令。获取信号量命令566引导主GPU获取信号量。SSDM命令568将子装置掩码设定为10,从而使得仅从属GPU 222能够执行推进缓冲器中的后续命令。释放信号量命令570引导从属GPU 222释放获取信号量命令566中指定的信号量。如本文先前所述,由于主GPU 212在从属GPU 222释放信号量之前不执行任何额外的推进缓冲器命令,所以当从属GPU 222释放信号量且主GPU 212获取信号量后,所述GPU同步,因为此时两个GPU均能够执行推进缓冲器中的下一命令。SSDM命令572将子装置掩码设定为11,从而使得两个GPU均能够执行推进缓冲器中的后续命令。
所属领域的技术人员将了解,上述命令可用于配置主GPU 212和从属GPU 222使得所述GPU中仅一者对其各自的视频数据部分执行某些处理命令。举例来说,如果需要将字幕添加到视频帧的底部,那么可使用SSDM命令来启用一个GPU,同时停用另一GPU。启用的GPU将是负责处理视频数据的底部部分的GPU。所述GPU接着将执行添加所需字幕所需的处理命令。由于另一GPU将被停用,所以当添加字幕时将不会对视频数据的上部分执行处理。
所揭示的系统和方法的一个优点是,其提供一种与现有技术单个GPU系统相比更有效地处理视频数据的多GPU视频处理系统。因此,与现有技术系统相比,可在实质上较少的时间内处理视频帧,且相对于现有技术系统来说,使用所揭示的系统执行的视频处理命令的数目和复杂性可实质上得到提高。
虽然以上内容针对本发明的实施例,但可在不脱离本发明基本范围的情况下设计出本发明的其它和进一步的实施例,且本发明范围由所附权利要求书确定。
权利要求
1.一种用于处理视频数据的系统,所述系统包含一主机处理器;一第一媒体处理装置,其耦合到一第一帧缓冲器,其中所述第一帧缓冲器经配置以存储视频数据,且所述第一媒体处理装置经配置以处理所述视频数据的一第一部分;一第二媒体处理装置,其耦合到一第二帧缓冲器,其中所述第二帧缓冲器经配置以存储所述视频数据的一副本,且所述第二媒体处理装置经配置以处理所述视频数据的一第二部分;其中所述第一媒体处理装置经由一可缩放总线耦合到所述第二媒体处理装置。
2.根据权利要求1所述的系统,其中所述第一媒体处理装置是一主媒体处理装置,且所述第二媒体处理装置是一从属媒体处理装置。
3.根据权利要求2所述的系统,其中一驱动器产生一推进缓冲器,所述推进缓冲器包含复数个用于处理所述视频数据的命令。
4.根据权利要求3所述的系统,其中所述复数个命令包括用于将存储在所述第一帧缓冲器中的所述视频数据复制到所述第二帧缓冲器的命令。
5.根据权利要求4所述的系统,其中所述复数个命令包括一第一组子装置掩码(SSDM)命令,其配置所述第一媒体处理装置和所述第二媒体处理装置,使得仅所述第一媒体处理装置执行所述推进缓冲器中的后续命令,一复制命令,其使所述第一媒体处理装置将存储在所述第一帧缓冲器中的所述视频数据复制到所述第二帧缓冲器,一释放信号量命令,其使所述第一媒体处理装置释放一信号量,一第二SSDM命令,其配置所述第一媒体处理装置和所述第二媒体处理装置,使得仅所述第二媒体处理装置执行所述推进缓冲器中的后续命令,一获取信号量命令,其使所述第二媒体处理装置获取由所述第一媒体处理装置释放的所述信号量,和一第三SSDM命令,其配置所述第一媒体处理装置和所述第二媒体处理装置,使得所述第一媒体处理装置和所述第二媒体处理装置两者执行所述推进缓冲器中的后续命令。
6.根据权利要求5所述的系统,其中在所述第二媒体处理装置获取由所述第一媒体处理装置释放的所述信号量后,所述第一媒体处理装置与所述第二媒体处理装置同步。
7.根据权利要求3所述的系统,其中所述复数个命令包括用于界定所述视频数据的所述第一部分和所述视频数据的所述第二部分的命令。
8.根据权利要求7所述的系统,其中所述复数个命令包括一第一SSDM命令,其配置所述第一媒体处理装置和所述第二媒体处理装置,使得仅所述第一媒体处理装置执行所述推进缓冲器中的后续命令,一第一设定剪裁矩形命令,其界定所述视频数据的所述第一部分,一第二SSDM命令,其配置所述第一媒体处理装置和所述第二媒体处理装置,使得仅所述第二媒体处理装置执行所述推进缓冲器中的后续命令,一第二设定剪裁矩形命令,其界定所述视频数据的所述第二部分,和一第三SSDM命令,其配置所述第一媒体处理装置和所述第二媒体处理装置,使得所述第一媒体处理装置和所述第二媒体处理装置两者执行所述推进缓冲器中的后续命令。
9.根据权利要求8所述的系统,其中所述复数个命令包括至少一个视频处理命令,所述第一媒体处理装置对所述视频数据的所述第一部分执行所述至少一个视频处理命令,且所述第二媒体处理装置对所述视频数据的所述第二部分执行所述至少一个视频处理命令。
10.根据权利要求3所述的系统,其中所述复数个命令包括当已处理完所述视频数据时用于使所述第一媒体处理装置与所述第二媒体处理装置同步的命令。
11.根据权利要求10所述的系统,其中所述复数个命令包括一第一SSDM命令,其配置所述第一媒体处理装置和所述第二媒体处理装置,使得仅所述第一媒体处理装置执行所述推进缓冲器中的后续命令,一获取信号量命令,其使所述第一媒体处理装置获取由所述第二媒体处理装置释放的一信号量,一第二SSDM命令,其配置所述第一媒体处理装置和所述第二媒体处理装置,使得仅所述第二媒体处理装置执行所述推进缓冲器中的后续命令,一释放信号量命令,其使所述第二媒体处理装置释放所述信号量,和一第三SSDM命令,其配置所述第一媒体处理装置和所述第二媒体处理装置,使得所述第一媒体处理装置和所述第二媒体处理装置两者执行所述推进缓冲器中的后续命令。
12.根据权利要求11所述的系统,其中在所述第一媒体处理装置获取由所述第二媒体处理装置释放的所述信号量后,所述第一媒体处理装置与所述第二媒体处理装置同步。
13.根据权利要求1所述的系统,其中由所述第二媒体处理装置处理的所述视频数据的所述第二部分经由所述可缩放总线传输到所述第一媒体处理装置,并与由所述第一媒体处理装置处理的所述视频数据的所述第一部分相组合以产生一经处理的视频帧。
14.根据权利要求13所述的系统,其中在经由所述可缩放总线将所述视频数据的所述第二部分传输到所述第一媒体处理装置之前,所述第一帧缓冲器和所述第二帧缓冲器中的每一者与另一帧缓冲器进行交换。
15.根据权利要求1所述的系统,其中所述第一媒体处理装置和所述第二媒体处理装置中的每一者是一图形处理单元。
16.一种用于使用多个媒体处理装置处理视频数据的方法,所述方法包含将存储在耦合到一主媒体处理装置的一第一帧缓冲器中的视频数据复制到耦合到一从属媒体处理装置的一第二帧缓冲器;界定所述视频数据的一第一部分和一第二部分;对存储在所述第一帧缓冲器中的所述视频数据的所述第一部分执行至少一个视频处理命令;对存储在所述第二帧缓冲器中的所述视频数据的所述第二部分执行至少一个视频处理命令;和将在所述第一帧缓冲器中处理的所述视频数据的所述第一部分经由一可缩放总线传输到所述主媒体处理装置。
17.根据权利要求16所述的方法,其进一步包含在传输所述视频数据的所述第一部分之前使所述主媒体处理装置与所述从属媒体处理装置同步的步骤。
18.根据权利要求17所述的方法,其中所述同步步骤包含执行一第一SSDM命令,其配置所述主媒体处理装置和所述从属媒体处理装置,使得仅所述主媒体处理装置执行一推进缓冲器中的后续命令,执行一获取信号量命令,其使所述主媒体处理装置获取由所述从属媒体处理装置释放的一信号量,执行一第二SSDM命令,其配置所述主媒体处理装置和所述从属媒体处理装置,使得仅所述从属媒体处理装置执行所述推进缓冲器中的后续命令,执行一释放信号量命令,其使所述从属媒体处理装置释放所述信号量,和执行一第三SSDM命令,其配置所述主媒体处理装置和所述从属媒体处理装置,使得所述主媒体处理装置和所述从属媒体处理装置两者执行所述推进缓冲器中的后续命令。
19.根据权利要求16所述的方法,其进一步包含在传输所述视频数据的所述第一部分之前将所述第一帧缓冲器和所述第二帧缓冲器中的每一者与另一帧缓冲器进行交换的步骤。
20.根据权利要求16所述的方法,其中所述复制步骤包含执行一第一组子装置掩码SSDM命令,其配置所述主媒体处理装置和所述从属媒体处理装置,使得仅所述主媒体处理装置执行一推进缓冲器中的后续命令,执行一复制命令,其使所述主媒体处理装置将存储在所述第一帧缓冲器中的所述视频数据复制到所述第二帧缓冲器,执行一释放信号量命令,其使所述主媒体处理装置释放一信号量,执行一第二SSDM命令,其配置所述主媒体处理装置和所述从属媒体处理装置,使得仅所述从属媒体处理装置执行所述推进缓冲器中的后续命令,执行一获取信号量命令,其使所述从属媒体处理装置获取由所述主媒体处理装置释放的所述信号量,和执行一第三SSDM命令,其配置所述主媒体处理装置和所述从属媒体处理装置,使得所述主媒体处理装置和所述从属媒体处理装置两者执行所述推进缓冲器中的后续命令。
21.根据权利要求16所述的方法,其中所述界定一第一部分和一第二部分的步骤包含执行一第一SSDM命令,其配置所述主媒体处理装置和所述从属媒体处理装置,使得仅所述主媒体处理装置执行一推进缓冲器中的后续命令,执行一第一设定剪裁矩形命令,其界定所述视频数据的所述第一部分,执行一第二SSDM命令,其配置所述主媒体处理装置和所述从属媒体处理装置,使得仅所述从属媒体处理装置执行所述推进缓冲器中的后续命令,执行一第二设定剪裁矩形命令,其界定所述视频数据的所述第二部分,和执行一第三SSDM命令,其配置所述主媒体处理装置和所述从属媒体处理装置,使得所述主媒体处理装置和所述从属媒体处理装置两者执行所述推进缓冲器中的后续命令。
22.根据权利要求16所述的方法,其中所述第一媒体处理装置和所述第二媒体处理装置中的每一者是一图形处理单元。
全文摘要
一视频处理器的一个实施例包括一耦合到一第一存储器的第一媒体处理装置和一耦合到一第二存储器的第二媒体处理装置。所述第二媒体处理装置经由一可缩放总线耦合到所述第一媒体处理装置。一软件驱动器配置所述媒体处理装置以提供视频处理功能。所述可缩放总线将由所述第二媒体处理装置处理的视频数据载运到所述第一媒体处理装置,其中所述数据与由所述第一媒体处理装置处理的视频数据相组合以产生一经处理的视频帧。所述第一媒体处理装置将所述组合的视频数据传输到一显示装置。每一媒体处理装置经配置以处理所述视频数据的独立部分,进而使所述视频处理器比一单个GPU视频处理器更快地处理视频数据。
文档编号G09G5/00GK1960438SQ20061015288
公开日2007年5月9日 申请日期2006年11月6日 优先权日2005年11月4日
发明者哈桑·S·阿扎尔, 弗兰克·R·迪亚尔 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1