基于多个命令执行视频处理的方法及相关视频处理电路的制作方法

文档序号:6348266阅读:149来源:国知局
专利名称:基于多个命令执行视频处理的方法及相关视频处理电路的制作方法
技术领域
本发明有关于利用多个硬件模块进行视频处理,更具体地,本发明有关于一种基于多个命令执行视频处理的方法,以及相关视频处理电路。
背景技术
根据现有技术实施的传统系统中,一般会采用例如图像处理单元(GraphicsProcessing Unit, GPU)的传统图像处理硬件模块,从传统系统的微处理器卸载(offloading)描绘(rendering)的三维或二维图像。更具体地,传统系统可为嵌入式系统、个人电脑(PC)或工作站。举例来说,当传统系统为PC时,例如GPU的传统图像处理硬件模块可存在于PC的主板上。一般地,当传统系统需要利用传统的图像处理硬件模块时,传统系统的微处理器可直接发送命令给传统图像处理硬件模块,且传统图像处理硬件模块执行由上述传统系统的微处理器分配的上述命令。可是,考虑到未来于系统内实施新架构的可能性,如此直接的·结构可能并不能保证系统的效率。因此,便需要一种新方法来恰当地控制装备新架构的系统。

发明内容
本发明是要提供一种基于多个命令来执行视频处理的方法,以及提供一种相应的视频处理电路,以达到最佳性能。本发明提供一种基于多个命令执行视频处理的方法,上述方法用于视频处理电路中,上述基于多个命令执行视频处理的方法包含将命令分组进多个命令链中,其中命令链具有各自的从属关系;以及利用视频处理电路的多个硬件模块以分别执行命令链。举例来说,当命令被分组进命令链时,多个命令链中一命令链的每一命令都独立于多个命令链中另一命令链的任一命令。具体讲,多个命令链包含第一命令链与第二命令链,其中第一命令链的命令具有第一从属关系,以及第二命令链的命令具有第二从属关系。本发明另提供一种视频处理电路,包含多个硬件模块,用以基于多个命令执行视频处理;以及控制器,用以将命令分组进多个命令链,其中多个命令链具有各自的从属关系;其中控制器利用硬件模块来分别执行多个命令链。举例来说,当命令被分组进命令链时,多个命令链中一命令链的每一命令都独立于多个命令链中另一命令链的任一命令。具体讲,多个命令链包含第一命令链与第二命令链,其中第一命令链的命令具有第一从属关系,以及第二命令链的命令具有第二从属关系。本领域内的技术人员在阅读了以下实施方式的具体描述以及各个实施方式的附图之后,本发明的上述以及其他目的对于本领域的技术人员会变得显而易见。


图I显示根据本发明的第一实施方式的视频处理电路100的示意图。
图2显示根据本发明的实施方式的基于多个命令的执行视频处理方法的流程图。图3A-3D显示根据本发明各实施方式的利用如图2所示的视频处理方法采用的一些视频处理操作。图4显示根据本发明的实施方式的如图2所示的方法的一些实施细节。
具体实施例方式在说明书及权利要求书当中使用了某些词汇来称呼特定的元件。本领域的技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个元件。本说明书及权利要求书并不以名称的差异来作为区分元件的方式,而是以元件在功能上的差异来作为区分的准贝U。在通篇说明书及权利要求书当中所提及的“包含”是开放式的用语,故应解释成“包含但不限定于”。此外,“耦接”一词在此是包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可直接电气连接于第二装置,或通过其 它装置或连接手段间接地电气连接到第二装置。请参考图I,其显示根据本发明的第一实施方式的视频处理电路100的示意图。如
图I所示,视频处理电路100包含控制器110以及多个硬件模块120-1,120-2,......以及
120-N(在图I中分别标示为“HWM”),其中N表示自然数。根据本实施方式,控制器110可接收命令S。(其可包含多个命令),控制器110的一个命令列(command queue) IlOK被用来临时储存命令S。及/或相关的代表值(representatives)。举例来说,视频处理电路100可被实施于例如嵌入式系统中、PC或工作站中,且系统可包含一个微处理器(图未示)。硬件模
块120-1,120-2,.......以及120-N的至少一部分(例如硬件模块120-1,120-2,......以
及120-N中的一部分或所有)中每一硬件模块可为例如图像处理单元(GPU)的图像处理硬件,其中GPU—般用来从系统的微处理器处卸载描绘的三维或二维图像。具体地,控制器110可用独立元件(individual component)实施,而非上述的微处理器。这仅为描述所用,并非限制本发明之意。根据本实施方式的一个变化例,上述的微处理器可被整合进控制器110内,其中本变化例的命令S。可由控制器110自己产生,而不是从控制器110外接收而来。根据本实施方式,硬件模块120-1,120-2,......以及120-N用来基于命令S。执
行视频处理。更具体地,控制器Iio用来将命令S。分组进命令链(command chains) S。。,其中各命令链S。。具有各自的从属关系(dependence relationship)。另外,控制器110可分
别利用硬件模块120-1,120-2,......以及120-N来执行命令链S。。。举例来说,命令链Scc
可包含第一命令链Src(I)以及第二命令链SrcO ,其中第一命令链S。。⑴的命令具有第一从属关系,而第二命令链S。。(2)的命令具有第二从属关系。于另一实施方式中,命令链S。。
可包含命令链Scc(I) >SCC(2) >SCC(3),......等等,其中,这些命令链中的一个命令链的命令
都与另一命令链中的命令独立。请注意,标注ST(1),St⑵,......及St(N)用来代表不同的命令链组(set),其
中&(1),St(2),......及St(N)中的一个命令链组可包含一个或多个命令链,以及一个
命令链可包含至少一命令(例如一或更多个命令)。本实施方式中,控制器110分配命令链S。。进多个命令链组,使得命令链S。。中多个命令链组(例如前述的命令链组St(I),
St⑵,......及St(N))分别对应硬件模块120-1,120-2,......以及120-N,以分别利用
硬件模块120-1,120-2,......以及120-N来执行命令链的各命令链组。因此,控制器110将命令链Src分配为几个命令链组St(I),St (2),......及St (N)来优化视频处理电路100
的性能。基于第一实施方式的架构,视频处理电路100能够适当地控制视频处理电路100
内的硬件模块120-1,120-2,......以及120-N的视频处理操作。因此,装备视频处理电路
100的任何系统能够高效操作。更进一步的实施细节会根据图2加以描述。图2显示根据本发明的实施方式的基于例如命令S。的执行视频处理方法910的流程图。如图2所示的视频处理方法910可应用于如图I所示的视频处理电路100中。下面介绍上述方法。
在步骤912中,控制器110将命令S。分组进命令链,例如前述的命令链S。。(其可包含多个命令链),其中命令链S。。中多个命令链具有各自的从属关系。具体地,当命令S。被分组进命令链S。。时,命令链S。。其中之一命令链的每一命令都独立于命令链S。。中另一命令链中的任一命令。在步骤914中,控制器110分别利用硬件模块120-1,120-2,......以及120-N来
执行命令链S。。。具体地,控制器110分配命令链Scc进多个命令链组,例如前述的命令链组
St(I),St(2),......及St(N),以分别利用硬件模块120-1,120-2,......以及120-N,来执
行各命令链组。在本实施方式中,控制器110分配命令链S。。进几个命令链组St⑴,
St(2),......及St(N),来优化视频处理电路100的性能。举例来说,控制器110可根据命
令链组的各自估计的执行时间分配命令链进各命令链组St(1),St(2),......及St(N)。这
仅为说明本发明的目的,并非限制本发明之意。根据本实施方式的变化例,硬件模块120-1,
120-2,......以及120-N中至少两个的处理能力(processing capabilities)并不相等,
且控制器110可根据硬件模块120-1,120-2,......以及120-N各自的处理能力分配命令
链 Scc 进命令链组 ST(1), St (2),......及 St (N)。图3A-3D显示根据本发明各实施方式的利用如图2所示的视频处理方法910采用的一些视频处理操作。在这些实施方式中,图3A-3D中所示的一些视频处理命令“Fill_Rect”,“Bitblt”及“Draw_img”是作为命令S。的例子。这里,视频处理命令Fill Rect代表用一种颜色填充一个矩形的视频处理操作,视频处理命令Bitblt代表粘贴一个表面的一部分至另一表面的视频处理操作,视频处理命令Drawjmg代表画一图形的视频处理操作。请参考图3A,本实施方式的命令S。包含命令Se(Il), 3。(12),及\(13),其中上述多个命令分别为视频处理命令Fill_Rect,Bitblt (A, B),及Fill_Rect。当命令Se(Il),S。(12),及S。(13)在命令列IlOK中,而且是按命令S。的索引指示的顺序排列(例如索引11,12,及13)时,控制器110分析命令Sc(ll),Sc(12)以及Sc(13)来执行步骤912。命令Sc(Il)表不用一种特定颜色在表面A上填充一个矩形的视频处理操作,命令Se(12)表不将表面A的一部分粘贴至表面B的视频处理操作。另外,命令Se(13)表示用一种特定颜色在表面C上填充一个矩形的视频处理操作。因为命令Se(Il)与命令Se(12)之间存在的从属关系,也因为命令Sc(13)独立于命令Sc(Il)及命令Sc(12),控制器110将命令Sc(Il)与命令Se(12)分组进同样的命令链Src(Il),并进一步将命令Se(13)分组进不同的命令链Src(12)。结果,两个命令链Src(Il)与See(12)可以在不同硬件模块内执行,例如硬件模块120-1,120-2,......以及120-N中的两个。具体地,基于图I所示的架构,命令Sc(13)的执行时间可比命令Sc(Il)与Sc(12)的执行时间早。请参考图3B,本实施方式的命令S。包含命令S。(21),S。(22),及S。(23),其分别代表 Fill Rect, Bitblt (A, B)与 Draw img 的视频处理命令。当命令 Sc(21),Sc(22) % Sc(23)位于命令列IlOK中,并且按照由命令S。的索引指示的顺序(例如索引21,22,及23)排列时,控制器110分析命令SC(21),SC(22)与Sc(23),以执行步骤912。命令Sc(21)表示用一种特定颜色在表面A上填充一个矩形的视频处理操作,以及命令S。(22)表示将表面A的至少一部分粘贴至表面B的视频处理操作。另外,命令Se(23)表示画一图形,例如在表面B上画一个三角形的视频处理操作。可侦测到,在表面B上,由命令&(23)产生的三角形以及由命令Sc(22)产生的矩形不重叠。因为命令\(21)与\(22)之间存在的从属关系,以及命令Sc(23)独立于命令Sc (21)及Sc (22),控制器110将命令Sc (21)与Sc(22)分组进同一命令链S。。(21),更进一步将命令S。(23)分组进不同的命令链S。。(22)。结果,两个命令链S。。(21)
与See(22)可在不同硬件模块内执行,例如硬件模块120-1,120-2,......以及120-N中的
两个。具体地,基于图I的架构,命令Se(23)的执行时间可比命令Se(21)与Se(22)的执行 时间早。请参考图3C,本实施方式的命令S。包含命令S。(31),S。(32)与S。(33),其中分别为视频处理命令 Fill_Rect,Bitblt (A,B)以及 Draw_img。当命令 Sc (31),Sc(32),以及 Sc(33)在命令列IlOK中,并且按照命令S。的索引指示的顺序排列时(例如索引31,32,及33),控制器110分析命令\(31),SC(32),&SC(33),以执行步骤912。命令Sc(31)表示用一种特定颜色在表面A上填充一个矩形的视频处理操作,而命令S。(32)表示将表面A的至少一部分粘贴至表面B上的视频处理操作。另外,命令Sc(33)表示在表面B上画一个图形的视频处理操作,例如画一个三角形。可侦测到,在表面B上,由命令\(33)产生的三角形会被画在由命令Sc(32)产生的矩形上。因为命令\(31),Sc(32),及Sc(33)之间存在的从属关系,控制器110将命令Sc(31),S。(32),及S。(33)分组进同一命令链Src(30)。结果,命令链Scc(30)中的命令S。(31),S。(32)及Sc(33)应在同一硬件模块内执行,例如硬件模块120-1,
120-2,......以及120-N中的一个,其中命令Sc(33)应在命令Sc (31)与\(32)执行后执行。请参考图3D,本实施方式的命令S。包含命令S。(41),Sc (42),Sc (43),Sc(44)及Sc(45),其分别为视频处理命令 Fill_Rect,Bitblt (A, B),Bitblt (B,D),Draw_img,以及Bitblt (C,D)。当命令 Sc (41),Sc (42),Sc (43),Sc (44),及 Sc (45)都在命令列 IIOK 中,并且按照命令S。的索引指示的顺序排列(例如索引41,42,43,44,及45),控制器110分析命令Sc(41),Sc (42),Sc (43),Sc(44),及 Sc(45),以执行步骤 912。命令 Sc (41)表示用一种特定颜色在表面A填充一个矩形的视频处理操作,命令S。(42)表示将表面A的至少一部分粘贴至表面B上的视频处理操作,而命令Se(43)表示将表面B的至少一部分粘贴至表面D上的视频处理操作。另外,命令Sc(44)表示在表面C上画一图形的视频处理操作,例如画一个三角形,以及命令S。(45)表示将表面C的至少一部分粘贴至表面D上的视频处理操作。举例来说,可侦测到,在表面D上,由命令\(45)产生的三角形与由命令\(43)产生的矩形不应重叠。因为命令Sc(41),Sc(42),及Sc(43)之间存在的从属关系,以及命令Sc(44)与\(45)之间存在的从属关系,以及因为命令\(44)与\(45)独立于命令Sc(41),Sc(42),及Sc(43),控制器110将命令S。(41),Sc(42),及Sc (43)分组进同一命令链S。。(41),并进一步将命令Sc(44)与\(45)分组进不同的命令链Scc(42)。结果,两个命令链Src(41) ^Scc(42)可于不
同硬件模块内执行,例如硬件模块120-1,120-2,......以及120-N中的两个。具体地,基
于如图I所示的架构,命令Sc(44) ^Sc(45)的执行时间可比命令SC(41),SC(42),&SC(43)的执行时间早。如图3D所示的实施方式中,控制器110能分析命令S。(43)与S。(45)之间是否存在从属关系。这仅为说明之用,并非限制本发明之意。因为要分析命令Se(43)与Se(45)之间是否存在从属关系较复杂,根据本实施方式的变化例,控制器110可简单将所有命令Sc(41),Sc(42),Sc(43),Sc(44)以及Sc(45)分组进同一命令链Scc(40),以减少分析命令Sc的相应处理量。结果,命令链S。。(40)中的命令Sc(41),Sc (42),Sc (43),Sc(44),及Sc (45)应
在同一硬件模块中执行,例如硬件模块120-1,120-2,......以及120-N其中之一,其中命
令S。(44)的执行应该在命令S。(41),Sc(42)及S。(43)执行后执行,而命令S。(45)应该在命令S。(44)执行后执行。图4显示根据本发明的实施方式的如图2所示的方法的一些实施细节。举例来说,前述的命令S。可被作为如图4所示的命令410的部分,且现在处于控制器110的命令列IlOK中,其中图4所示的标示“Fill”用来简要表示上述的视频处理命令Fill_Rect。根据本实施方式,控制器110可将命令S。分组进命令链420中,例如分别是命令链See(I),
Scc (2), Scc (3), ^ Scc (4)。请注意,硬件模块120-1,120-2,......以及120-N中每一硬件模
块120-n都可用来执行至少一命令链,其中n = 1,2,......或N。实作中,为了要利用硬
件模块120-n来执行上述的至少一个命令链,控制器110可发送上述至少一个命令链进硬件模块120-n的命令列中。在本实施方式中,假定N = 2,且上述的硬件模块120-n可表示硬件模块120_1或硬件模块120-2。因此,控制器110分配命令链S。。(2)与See(4)进对应硬件模块120-1的命令链组St⑴,且更进一步将命令链S。。⑴及S。。(3)分配进对应硬件模块120-2的命令链组St(2),以优化视频处理电路100的性能。另外,控制器110发送命令链Scc(2)与Scc(4)进硬件模块120-1的命令列432,以利用硬件模块120-1来执行命令链Src(2)与Scc(4)。另夕卜,为了利用硬件模块120-2来执行命令链S。。⑴与S。。(3),控制器110将命令链S。。⑴与Scc (3)送进硬件模块120-2的命令列434。结果,硬件模块120-1的处理量可与硬件模块120-2的处理量相等或相近,当命令列432与434其中之一的所有命令的操作都完成了,命令列432与434其中的另一的所有命令也几乎同时完成。本实施方式其他类似描述此处不再重复。本发明的优点是,基于上面揭露的实施方式/变化例的架构,可实现在视频处理电路中维持硬件模块(例如GPU)的平衡的目的。当有很多命令时,本发明的方法及相应视频处理电路可恰当轻松地处理这种情况。另外,因为例如前述的硬件模块的硬件资源在大多数时间内可被完全利用,所以不会浪费时间。本领域中技术人员应能理解,在不脱离本发明的精神和范围的情况下,可对本发明做许多更动与改变。因此,上述本发明的范围具体应以后附的权利要求界定的范围为准。权利要求
1.一种基于多个命令执行视频处理的方法,用于视频处理电路中,上述基于多个命令执行视频处理的方法包含 将上述多个命令分组进多个命令链中,其中上述多个命令链具有各自的从属关系;以及 利用上述视频处理电路的多个硬件模块以分别执行上述多个命令链。
2.如权利要求I所述的基于多个命令执行视频处理的方法,其特征在于,当上述多个命令被分组进上述多个命令链时,上述多个命令链中一命令链的每一命令都独立于上述多个命令链中另一命令链的任一命令。
3.如权利要求I所述的基于多个命令执行视频处理的方法,其特征在于,上述多个命令链包含第一命令链与第二命令链;以及上述第一命令链的多个命令具有第一从属关系,且上述第二命令链的多个命令具有第二从属关系。
4.如权利要求I所述的基于多个命令执行视频处理的方法,其特征在于,利用上述视频处理电路的多个硬件模块以执行上述多个命令链的步骤更包含 分配上述多个命令链进分别对应上述多个硬件模块的多个命令链组,以分别利用上述多个硬件模块执行上述多个命令链组。
5.如权利要求4所述的基于多个命令执行视频处理的方法,其特征在于,利用上述视频处理电路的多个硬件模块以执行上述多个命令链的步骤更包含 分配上述多个命令链进上述多个命令链组以优化上述视频处理电路的性能。
6.如权利要求4所述的基于多个命令执行视频处理的方法,其特征在于,利用上述视频处理电路的多个硬件模块以执行上述多个命令链的步骤更包含 根据执行上述多个命令链的上述多个命令链组的各自估计时间,分配上述多个命令链进上述多个命令链组。
7.如权利要求4所述的基于多个命令执行视频处理的方法,其特征在于,利用上述视频处理电路的多个硬件模块以执行上述多个命令链的步骤更包含 根据上述多个硬件模块各自的处理能力,分配上述多个命令链进上述多个命令链组。
8.如权利要求I所述的基于多个命令执行视频处理的方法,其特征在于,每一上述多个硬件模块被用来执行至少一命令链。
9.如权利要求8所述的基于多个命令执行视频处理的方法,其特征在于,更包含 将上述至少一命令链送进上述硬件模块的一命令列,以利用上述硬件模块来执行上述至少一命令链。
10.如权利要求I所述的基于多个命令执行视频处理的方法,其特征在于,上述多个硬件模块中至少两个硬件模块的处理能力是互不相等的。
11.一种视频处理电路,包含 多个硬件模块,用以基于多个命令执行视频处理;以及 控制器,用以将上述多个命令分组进多个命令链,其中上述多个命令链具有各自的从属关系; 其中上述控制器利用上述多个硬件模块来分别执行上述多个命令链。
12.如权利要求11所述的视频处理电路,其特征在于,当上述多个命令被分配进上述多个命令链时,上述多个命令链其中之一的命令链中的每一命令都独立于上述多个命令链的另一命令链的任一命令。
13.如权利要求11所述的视频处理电路,其特征在于,上述多个命令链包含第一命令链与第二命令链;以及上述第一命令链的多个命令具有第一从属关系,且上述第二命令链的多个命令具有第二从属关系。
14.如权利要求11所述的视频处理电路,其特征在于,上述控制器分配上述多个命令链进分别对应上述多个硬件模块的多个命令链组,以分别利用上述多个硬件模块执行上述多个命令链组。
15.如权利要求14所述的视频处理电路,其特征在于,上述控制器分配上述多个命令链进上述多个命令链组,以优化上述视频处理电路的性能。
16.如权利要求14所述的视频处理电路,其特征在于,上述控制器根据执行上述多个命令链的上述多个命令链组的各自估计时间,分配上述多个命令链进上述多个命令链组。
17.如权利要求14所述的视频处理电路,其特征在于,上述控制器根据上述多个硬件模块的各自处理能力,分配上述多个命令链进上述多个命令链组。
18.如权利要求11所述的视频处理电路,其特征在于,每一上述多个硬件模块用来执行至少一命令链。
19.如权利要求18所述的视频处理电路,其特征在于,上述控制器发送上述至少一命令链进上述硬件模块的命令列,以利用上述硬件模块来执行上述至少一命令链。
20.如权利要求11所述的视频处理电路,其特征在于,上述多个硬件模块中的至少两个的处理能力互相不等。
全文摘要
本发明提供一种基于多个命令执行视频处理的方法,上述方法用于视频处理电路中,上述基于多个命令执行视频处理的方法包含将命令分组进多个命令链中,其中命令链具有各自的从属关系;以及利用视频处理电路的多个硬件模块以分别执行命令链。举例来说,当命令被分组进命令链时,多个命令链中一命令链的每一命令都独立于多个命令链中另一命令链的任一命令。具体讲,多个命令链包含第一命令链与第二命令链,其中第一命令链的命令具有第一从属关系,以及第二命令链的命令具有第二从属关系。本发明同时提供一种相关的视频处理电路。
文档编号G06F9/38GK102754070SQ201080006762
公开日2012年10月24日 申请日期2010年9月26日 优先权日2010年9月26日
发明者李国平, 高仕嵘 申请人:联发科技(新加坡)私人有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1