多媒体处理器中的无序命令执行的制作方法

文档序号:6484437阅读:194来源:国知局
多媒体处理器中的无序命令执行的制作方法
【专利摘要】本发明描述用于对命令进行重排序以改善至少一个命令流可执行的速度的技术。在将所述至少一个命令流中的命令分配到多个管线之前,多媒体处理器分析任何管线间相依性且确定所述管线的当前执行状态。所述处理器可基于此信息通过将缺乏任何当前相依性且因此可由适当管线立即执行的命令区分优先来对所述至少一个命令流进行重排序。所述至少一个命令流中的命令的此无序执行可通过增加所述命令流执行的速率来增加所述多媒体处理器的处理量。
【专利说明】多媒体处理器中的无序命令执行
【技术领域】
[0001]本申请案涉及命令流内的命令的处理。
【背景技术】
[0002]高级多媒体处理器使用并行处理架构,借此多个专用处理管线执行命令流的各种指令。举例来说,多媒体处理器可包含用于音频处理、数据移动、视频处理和3D图形处理的管线,其对应于这些媒体相关的功能。由于软件的多任务化和/或多线程化,以及可能快速连续地采用多个媒体相关功能的程序,用于多媒体处理器的命令流是用于处理管线中的一者或一者以上的指令的交错、有序的组合。
[0003]例如在视频上的3D图形覆盖等混合媒体应用经常需要多个处理管线以用于有效的执行。在此类实例中,所需的多个处理管线必须保持同步并且同时执行,以便实现既定的混合媒体效果。由处理器驱动器产生且指定在特定命令可自身执行之前必须执行的任何命令的命令相依性指明了命令流内的同步问题。因为相依性可能遍及混合媒体应用中的多个管线,所以导致了低效率,因为在管线的头部处的相依指令被阻挡而等待另一管线中的指令的完成。

【发明内容】

[0004]大体上,本发明描述用于重排序命令以改善至少一个命令流可执行的速度的技术。在将所述命令分配到管线之前,多媒体处理器分析任何管线间相依性且确定所述管线的当前命令执行进展。所述处理器可基于此信息而通过将缺乏任何当前相依性且因此可由适当管线立即执行的命令区分优先来重排序所述至少一个命令流。所述至少一个命令流内的命令的此无序执行可通过增加所述至少一个命令流执行的速率而增加所述多媒体处理器的处理量。
[0005]预处理逻辑可执行命令分配与同步以实现命令流重排序。对于每一管线,预处理器可维持分级区域,所述分级区域将用于所述管线的若干命令排队。预处理器可另外以相依性掩码的形式将每一命令的相依性信息相关到管线的执行状态。用于管线的分级区域中的每一命令可因此与管线中的每一者的单独相依性掩码相关联。在多处理器执行命令时,预处理器修改相依性掩码以反映对已执行命令的任何相依性的满足。当一命令的所有相依性掩码都被清除时,预处理器可将所述命令分配到其适当的管线。
[0006]在一个实例中,一种方法包含:接收包含命令间相依性信息的至少一个命令流,其中所述至少一个命令流包括第一、第二和第三命令,其中所述第二和第三命令具有在所述至少一个命令流中的第一次序以使得所述第二命令在所述第三命令之前。所述方法进一步包括:基于所述命令间相依性信息而确定所述第二命令依赖于所述第一命令的先前执行;以及确定所述第一命令与多个处理管线中的第一处理管线相关联且所述第二命令和第三命令与所述多个处理管线中的不同的第二处理管线相关联。所述方法进一步包括:将所述第三命令分配到所述多个处理管线中的所述第二处理管线;以及在将所述第三命令分配到所述多个处理管线中的所述第二处理管线之后,将所述第二命令分配到所述多个处理管线中的所述第二处理管线以使得所述第二命令和第三命令以不同于所述第一次序的第二次序执行。
[0007]在另一实例中,一种设备包含命令分配与同步处理器,所述命令分配与同步处理器经配置以:接收包含命令间相依性信息的至少一个命令流,其中所述至少一个命令流包括第一、第二和第三命令,其中所述第二和第三命令具有在所述至少一个命令流中的第一次序以使得所述第二命令在所述第三命令之前。所述命令分配与同步处理器进一步经配置以:基于所述命令间相依性信息而确定所述第二命令依赖于所述第一命令的先前执行;以及确定所述第一命令与多个处理管线中的第一处理管线相关联且所述第二命令和第三命令与所述多个处理管线中的不同的第二处理管线相关联。所述命令分配与同步处理器进一步经配置以:将所述第三命令分配到所述多个处理管线中的所述第二处理管线;以及在将所述第三命令分配到所述多个处理管线中的所述第二处理管线之后,将所述第二命令分配到所述多个处理管线中的所述第二处理管线以使得所述第二命令和第三命令以不同于所述第一次序的第二次序执行。
[0008]在另一实例中,一种装置包含:用于接收包含命令间相依性信息的至少一个命令流的装置,其中所述至少一个命令流包括第一、第二和第三命令,其中所述第二和第三命令具有在所述至少一个命令流中的第一次序以使得所述第二命令在所述第三命令之前。所述装置进一步包括:用于基于所述命令间相依性信息而确定所述第二命令依赖于所述第一命令的先前执行的装置;以及用于确定所述第一命令与多个处理管线中的第一处理管线相关联且所述第二命令和第三命令与所述多个处理管线中的不同的第二处理管线相关联的装置。所述装置进一步包括:用于将所述第三命令分配到所述多个处理管线中的所述第二处理管线的装置;以及用于在将所述第三命令分配到所述多个处理管线中的所述第二处理管线之后将所述第二命令分配到所述多个处理管线中的所述第二处理管线以使得所述第二命令和第三命令以不同于所述第一次序的第二次序执行的装置。
[0009]在另一实例中,一种计算机可读存储媒体经编码有用于致使可编程处理器进行以下操作的指令:接收包含命令间相依性信息的至少一个命令流,其中所述至少一个命令流包括第一、第二和第三命令,其中所述第二和第三命令具有在所述至少一个命令流中的第一次序以使得所述第二命令在所述第三命令之前。所述指令进一步致使所述可编程处理器进行以下操作:基于所述命令间相依性信息而确定所述第二命令依赖于所述第一命令的先前执行;以及确定所述第一命令与多个处理管线中的第一处理管线相关联且所述第二命令和第三命令与所述多个处理管线中的不同的第二处理管线相关联。所述指令进一步致使所述可编程处理器进行以下操作:将所述第三命令分配到所述多个处理管线中的所述第二处理管线;以及在将所述第三命令分配到所述多个处理管线中的所述第二处理管线之后,将所述第二命令分配到所述多个处理管线中的所述第二处理管线以使得所述第二命令和第三命令以不同于所述第一次序的第二次序执行。
[0010]在附图和下文的描述中陈述一个或一个以上方面的细节。从描述和图式,且从权利要求书将明白本发明的其它特征、目的和优点。
【专利附图】

【附图说明】[0011]图1是说明多媒体装置的实例的框图,所述多媒体装置包含多媒体处理器和命令分配与同步处理器。
[0012]图2是说明具有命令分配与同步处理器的示范性多媒体处理器的框图,所述命令分配与同步处理器以与本文描述的原理一致的方式实施命令流重排序。
[0013]图3是说明具有用于多个处理管线的交错指令的命令流的子集的实例的框图。
[0014]图4是说明与本发明一致的示范性命令分配与同步块的框图。
[0015]图5是说明与本发明一致的处于特定操作状态的示范性同步模块的框图。
[0016]图6是说明处于未来操作状态的图5的同步模块的框图。
[0017]图7是说明一类型特定的命令流的示范性子集和所述类型特定的命令流的示范性滑动窗口的框图。
[0018]图8是说明实施无序命令执行的命令分配与同步处理器的实例操作模式的流程图。
[0019]图9是说明图4的示范性命令分配与同步块以与本发明一致的方式进行的示范性无序执行操作的流程图。
【具体实施方式】
[0020]图1是说明示范性多媒体装置2的组件的框图,所述示范性多媒体装置2包含多媒体处理器10和命令分配与同步处理器12。多媒体装置2可包括独立装置或可为较大系统的一部分。举例来说,多媒体装置2可包括以下各项或为以下各项的一部分:无线媒体通信装置(例如无线通信装置手持机)、数字电视(TV)、视频电话、数字多媒体播放器、个人数字助理(PDA)、视频游戏控制台、个人计算机或膝上型装置,或其它视频装置。多媒体装置2也可包含在一个或一个以上集成电路或芯片内,其可用于上文描述的装置中的一些或全部装置中。
[0021]示范性多媒体装置2包含系统总线7,其耦合了装置存储器8、主处理器6 (说明为“CPU6”)和多媒体处理器10。装置存储器8可存储程序指令和/或数据供CPU6和多媒体处理器10用于执行多媒体装置2的应用。举例来说,装置存储器8可存储用于多媒体处理器10的经编译指令,用于在显示器上再现图形场景,以及存储顶点阵列、纹理、显示列表和类似物以用于再现计算。在一些情况下,装置存储器8还可包含用于显示器15的帧缓冲器。装置存储器8可包含存储器控制器且可包括以下各项中的一者或一者以上:随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器和类似存储器。
[0022]主处理器6通过执行例如存储在装置存储器8中的操作系统和一个或一个以上应用程序来控制多媒体装置2的操作。主处理器6可通过多任务化和多线程化方法来执行多个程序或程序线程,其准许主处理器6在程序或线程上下文之间快速切换。在某些实例中,在主处理器6上执行的应用程序可包括或参考可由多媒体处理器10执行的指令。举例来说,在此类实例中,主处理器6可调用存储在装置存储器8中的用于多处理器10的装置驱动器的例程,其中所调用的装置驱动器例程包含用于供多媒体处理器10执行的指令。
[0023]多媒体处理器10包含一个或一个以上专用处理器,其增强了用于多媒体装置2的媒体相关工作负载的性能,所述工作负载例如视频和音频译码/解码、压缩、图形再现、视频和音频信号处理和类似者。大体上,多媒体处理器的特征在于高水平的并行性和实时处置音频和视频信号的能力。多媒体处理器10因此可具有专用于处理与多媒体装置2的特定媒体相关功能相关联的命令的多个媒体相关处理区域。多媒体处理器10可存在于用于多媒体装置2的卡(例如,视频卡)上,且因此与主处理器6分离,但仍经由系统总线7耦合。在多媒体装置2的一些实例中,多媒体处理器10可与主处理器6 —起嵌入或嵌入在主处理器6中。
[0024]多媒体装置2还包含扬声器17 (说明为“扬声器17”)和显示器15,其分别从多媒体处理器10接收音频或视频信号以输出给用户(未图示)。扬声器17可为一个或一个以上音频输出装置。在一些方面中,扬声器17可耦合到扬声器控制器,所述扬声器控制器基于从多媒体处理器10接收的信号而产生音频信号。显示器15可为标准监视器、电视机、移动装置液晶显示器(“LCD”)或其它显示装置。在一些方面中,显示器15可耦合到显示器控制器,所述显示器控制器基于从多媒体处理器10接收的信号而产生视频信号。
[0025]多媒体装置2还包含视频编解码器14、3D图形处理器16和音频编解码器18,用以分别转换图像、3D图形和音频信号以在多媒体处理器10与通信模块19之间交换。通信模块19可为准许多媒体装置2与其它装置之间的通信(例如,无线通信)的网络接口或其它组件。
[0026]多媒体处理器10可将视频、3D图形和/或音频信号分别发送到视频编解码器14、3D图形处理器16和音频编解码器18以用于压缩和/或编码,之后由多媒体装置2将经转换信号经由通信模块19传输到另一装置。在一些方面中,视频编解码器14、3D图形处理器16和音频编解码器18可将经压缩和/或经编码信号发送到装置存储器8或其它存储媒体进行存储。多媒体处理器10可经由一个或一个以上通信总线以通信方式耦合到视频编解码器14、3D图形处理器16和音频编解码器18。在一些实例中,多媒体处理器10、视频编解码器14、3D图形处理器16和音频编解码器18包含用于经由所述一个或一个以上通信总线进行通信的定制接口。
[0027]多媒体装置2还可经由通信模块19从其它装置接收视频、3D图形和/或音频信号。在此类实例中,通信模块19可将所接收的信号发送到视频编解码器14、3D图形处理器16和音频编解码器18中的适当一者以用于解压缩和/或解码。视频编解码器14、3D图形处理器16和音频编解码器18可随后将经转换信号发送到多媒体处理器10以用于进一步处理或发送到装置存储器8以进行存储。
[0028]视频编解码器14、3D图形处理器16和音频编解码器18各自可实施为一个或一个以上微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任一组合。视频编解码器14、3D图形处理器16和音频编解码器18中的一者或一者以上也可集成为多媒体处理器10的一部分。举例来说,多媒体处理器10可为包含视频编解码器14、3D图形处理器16和音频编解码器18的单个处理器核心。在一些实例中,3D图形处理器16可包括图形处理单元(“GPU”)。
[0029]多媒体处理器10接收呈由主处理器6产生的命令流的形式的命令。装置存储器8可存储命令流且在被请求时将命令流提供到多媒体处理器10。在一些实例中,多媒体处理器10可经由系统总线7直接从主处理器6接收命令流。命令流包括供多媒体处理器10执行的命令(即,指令)的有序列表。由于在主处理器6上运行的操作系统和程序的多任务化和/或多线程化,以及可能接二连三采用多个媒体相关功能的程序的缘故,主处理器6 可将命令流产生为若干命令类型的交错组合,其中每一命令类型与多媒体处理器10的多 个不同媒体相关处理区域中的一者相关联。
[0030]举例来说,主处理器6可调用视频相关的子例程且随后调用音频相关的子例程。 如果这两个子例程将在多媒体处理器10上执行,那么命令流将含有视频命令和跟随其后 的音频命令。视频命令与多媒体处理器10的视频处理区域相关联,而音频命令与多媒体处 理器10的音频处理区域相关联。
[0031]命令流中的一个或一个以上特定命令的执行经常是命令流中的较晚命令的执行 的必要条件。因此,存在命令间相依性,其中较晚的命令依赖于一个或一个以上先前的命 令。因此除了命令之外,命令流还包含针对命令中的每一者的相依性信息。相依性信息通 过指定命令流中所述命令所依赖的命令(如果存在)来映射针对命令的相依性。
[0032]在混合媒体情形中,用于特定媒体相关功能(例如,视频)的命令可依赖于用于另 一媒体相关功能(例如,3D图形)的命令。此功能间命令相依性导致多媒体处理器10的不 同媒体相关处理区域之间的相依性。
[0033]根据本发明中描述的原理,多媒体处理器10含有命令分配与同步处理器12(“⑶S 处理器12”),其有效地将命令流中的每一命令分配到多媒体处理器10的相关联媒体相关 的处理区域。
[0034]如下文详细描述,⑶S处理器12通过如下方式将命令分配到多媒体处理器10的 不同的媒体相关处理区域:分析命令流中的命令的相依性信息,确定命令的相依性是否已 得到满足(即,执行),且如果是这样,那么重排序命令流以迅速执行相依性已得到满足的 命令。⑶S处理器12在这样做时还考虑由相依性信息指定的同步要求。通过以此方式分配 和同步命令,CDS处理器12使多处理器10能够实现较高的命令执行速率。
[0035]本文描述的技术可具有某些优点。举例来说,依赖于资源的指令可能具有高等待 时间,其造成较长的管线阻塞,这影响了按命令流次序在所述依赖于资源的指令之后的所 有指令。通过以所描述的方式分配和同步命令,CDS处理器12可通过在依赖于资源的指令 之前执行受影响的指令来避免阻塞受影响的指令。以此方式增加管线处理量趋于增加整个 命令流的一般执行速率,进而使多媒体处理器10能够实现较高的命令执行速率。
[0036]图2是说明根据本发明的技术配置的实例多媒体处理器10的框图。用于多媒体 处理器12的媒体相关处理区域包含呈视频管线20、3D图形管线22和音频管线24的形式 的指令管线。命令管线趋于通过将命令处理划分为多个级而增加命令处理量,其中每一级 实行执行任一特定命令所需的过程的一个方面。在一些实例中,多媒体处理器10可具有额 外管线,所述额外管线与各种其它媒体相关功能相关联或复制所说明的管线(例如,视频 管线20)中的一者或一者以上。在一些实例中,多媒体处理器12可具有较少管线,或可使 用非基于管线的逻辑来执行命令。
[0037]命令流26是用于供多媒体处理器10执行的命令的列表或序列。命令流中的每一 命令与多媒体处理器12的一特定管线相关联。在多媒体处理器10的实例中,视频类型的 命令与视频管线20相关联。同样,3D图形命令与3D图形管线22相关联。最后,音频命令 与音频管线24相关联。
[0038]命令流26是有序的,即,命令流26中的每一命令之前是所述命令所依赖的所有命令。如上所述,命令流26可为用于各种命令类型(例如,视频、音频、3D图形)的命令集合的交错组合。集合是零个或零个以上命令的总集。举例来说,一视频命令集合中的命令可在命令流26中与一音频命令集中的命令交错。在一些实例中,命令流26表示多个命令子流,其各自对应于所述多个命令类型中的一者且包括用于对应命令类型的命令集合。也就是说,在这些实例中,命令流26将不会如所示那样交错。在这些实例中,多处理器10可同时处理若干子流。子流可具有不同的相关联优先级,使得多处理器10根据相对优先级值来处理子流。多处理器10还可基于与这些子流相关联的优先级而读取一个子流比读取另一子流更多或更频繁。子流中的每一者中的命令仍可具有唯一识别符,使得一个子流中的命令可依赖于另一子流中的命令。大体上,多处理器10能够处理一个或一个以上命令流(包含子流)。任一给定流中的命令可依赖于同一流或另一流中的命令。
[0039]除了命令之外,命令流26可针对每一命令包含任意长度的相依性列表,其指定命令流26中所述命令所依赖的命令(如果存在)。另一命令所依赖的命令在下文中称为相依性。用于命令流26中的特定命令的相依性列表可指定具有与所述特定命令的类型不同的类型的相依性。举例来说,视频命令可具有类型为3D图形的相依性。
[0040]因为管线中的命令的执行的完成经常不仅依赖于其它命令,而且依赖于各种装置资源(例如,装置存储器)的响应性,所以命令执行的速率是不确定的。举例来说,视频管线20可能在系统资源方面经历与另一管线或与图1的装置2的另一组件(例如,主处理器6)的冲突。在此类实例中,视频管线20可能被迫进入等待装置直到系统资源再次变为可用为止。从多媒体处理器10的观点来看,命令流26中的每一命令的执行时间可因此为不确定的且在运行时间之前不可被确定。在命令流26到达多媒体处理器10时命令流26的排序可能是次最优的,因为针对一命令的相依性可能处于等待状态,而命令流26中的其它后续命令可能已使其相依性得到满足且准备好在多媒体处理器10管线中的一者中执行。
[0041]为了增加命令流26的命令执行的速率,实例多媒体处理器10进一步包含命令分配与同步处理器12 ( “⑶S处理器12”),其接收命令流26内的用于多媒体处理器10的命令且有效地将命令分配到视频管线20、3D图形管线22和音频管线24。CDS处理器12在一些情况中可实施为一个或一个以上微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任一组合。在各种方面中,CDS处理器12实施为与多媒体处理器10分离的组件,例如,实施为单独的中央处理单元、微处理器或DSP。
[0042]与本发明的原理一致,⑶S处理器12在将命令流26的命令分配到视频管线20、3D图形管线22和音频管线24之前对其进行重排序。⑶S处理器12通过分析先前分配到管线的命令的执行状态来重排序所述命令,且将此状态与尚未分配到管线供执行的命令的相依性信息进行比较。当特定命令类型的命令尚未满足管线中的一者或一者以上中的相依性时,CDS处理器12可将来自命令流26的所述命令类型的其它后续命令区分优先以用于分配。⑶S处理器12实际上重排序命令流26,从而准许某些命令无序地执行,同时还考虑由命令流26的相依性信息指定的同步要求。
[0043]图3说明命令28——图2的命令流26的示范性子集。命令28以从左到右的既定执行次序与六个命令交错,所述六个命令各自具有两个类型中的一者:视频或3D图形。一命令可依赖于命令流26中在其之前的任一其它命令。命令28中的某些具有由相依性箭头29A到29E说明的相依性(统称为“相依性29”)。举例来说,相依性箭头29D说明3D图形命令#3依赖于3D图形命令#2。在一些实例中,具有一个类型的命令可依赖于具有另一类型的命令。举例来说,相依性箭头29B说明视频命令#1依赖于3D图形命令#1。因为命令流26是有序的,所以命令无法依赖于后续命令。
[0044]图4是更详细说明图2的示范性⑶S处理器12的框图。⑶S处理器12包含分配模块30,其接收命令流26且基于命令类型将其中的命令分配到同步模块34A到34C (统称为“同步模块34”)中的一者。举例来说,分配模块30将音频命令分配到同步模块中的与音频命令类型相关联的一者。
[0045]同步模块34针对相关联命令类型中的每一者结合分配模块30和相依性掩码模块44而执行本文描述的命令重排序功能。同步模块34中的每一者与一特定命令类型相关联且因此与多媒体处理器10的一特定管线相关联。举例来说,同步模块34A可与视频命令相关联且可因此还与视频管线20(图4中未图示)相关联。在各种方面中,依赖于管线的数目,CDS处理器12可具有较多或较少的同步模块。在图4的实例中,同步模块34是大体上类似的,但为了简单性而将同步模块34A展示为比同步模块30B到30C更详细。
[0046]在分配模块30将命令分配到同步模块34时,分配模块30有效地将交错的命令流26多路分用为三个命令类型特定的流,其各自与同步模块34中的特定一者相关联。因此,举例来说,分配模块30产生命令类型特定的命令流,其含有具有与同步模块34A相关联的类型的命令(即,视频命令)。每一命令类型特定的命令流保持命令在命令流26中出现的次序。在其中命令流26表示各自对应于所述多个命令类型中的一者的多个命令子流的实施例中,分配模块30可将每一子流中对应于一命令类型的命令分配到同步模块34中用于所述命令类型的相关联一者。
[0047]同步模块34A包含分级区域36A、命令计数器38A和作用中窗口掩码40A,同步模块34A使用它们来分析命令间相依性信息且基于分析的结果来重排序命令。分级区域36A包含存储命令信息的寄存器,所述命令信息包含从分配模块30接收的命令数据和优先级信息以及相依性掩码。分级区域36A包含经界定数目的槽464到46A4 (统称为“槽46A”),其中槽46A中的每一者存储一特定命令的命令信息。
[0048]在各种方面中,同步模块34可包含具有比同步模块34A的分级区域36A更多或更少的槽的分级区域36。也就是说,分级区域36不限于四个槽。在一些方面中,同步模块34中的不同者可具有不同数目的槽。举例来说,同步模块34A可具有四个槽,而同步模块34B可具有八个槽。在一些方面中,同步模块34的槽的数目是可变的,以便优化CDS处理器12的某些应用的性能。
[0049]同步模块34A将由分配模块30产生的类型特定的命令流的头部处的命令转移到槽46A中的可用一者中。如果没有槽46A可用,那么同步模块34A可阻挡所述类型特定的命令流直到槽46A中的一者变为可用为止。如下文详细描述,同步模块34A随后基于相依性分析对分级区域36的槽46A中的命令的执行次序进行重排序。在由分级区域36存储的命令已使其相依性得到满足的情况下,同步模块34A将这些命令发送到相关联管线(即,视频管线20)供执行。因为类型特定的命令流中的每一命令在理论上可依赖于命令流26中在所述命令之前的任一其它命令,所以同步模块34A存储针对同步模块34A接收且卸载以供执行的每个命令的完成信息。
[0050]虽然由于存储针对每个先前执行的命令的完成信息的需要,完成信息可能潜在为大量的,但是命令计数器38A和作用中窗口掩码40A将完成信息压缩为两个值。命令计数 器38A和作用中窗口掩码40A的值界定“滑动窗口 ”,其针对与同步模块34A相关联的命令 (即,视频命令)维持命令完成信息。首先,命令计数器38A界定滑动窗口的起始位置,其对 应于没有先前命令保持未执行的类型特定的命令流中的命令数目。也就是说,从类型特定 的命令流中的第一命令开始计数,在到达未执行命令之前所计数的命令数目。参考具有小 于命令计数器38A的命令计数的命令的所有相依性均已执行且因此得到满足。
[0051]另外,分级区域36A中的槽46A的数目界定滑动窗口的大小。在图4的实例中,在 分级区域36A中存在四个槽46A。用于同步模块34A的滑动窗口因此在此实例中涵盖四个 命令,其对应于由槽46A保持的四个命令。因为命令计数器38A将滑动窗口的起始位置界 定于没有先前未执行命令的类型特定的命令流中的最近命令的命令计数,所以滑动窗口涵 盖紧跟随所述最近命令的那些命令。槽464保持滑动窗口中的第一命令,槽46A2保持第二 命令,依此类推。在一些方面中,槽46A可以非顺序次序保持命令且额外逻辑将命令映射到 各个槽。
[0052]通过同步模块34A的命令重排序可导致由槽46A保持的一些命令无序执行。举例 来说,在命令流26中跟随由槽464保持的命令的由槽46A2保持的命令仍可较早地执行。 为了使同步模块34A能够确定依赖于所述命令的命令是否由滑动窗口涵盖,作用中窗口掩 码40A跟踪分级区域36A中的命令的完成信息。作用中窗口掩码40A具有等于滑动窗口大 小的位长度。这等效于用于分级区域36A中的槽46A保持的每一命令的一个位。作用中窗 口掩码40A的最低有效位(“LSB”)指示由槽46Ai保持的命令的完成状态。次最低有效位 指示由槽46A2保持的命令的完成状态,依此类推。“I”的位值指示对应命令已执行。
[0053]举例来说,假定槽46Ai到46A4分别保持视频命令#10、#11、#12和#13。如上所述, 由命令计数器38A和作用中窗口掩码40A界定的滑动窗口跟踪处于或先前已处于同步模块 34A的界限内的所有命令的完成。在此实例中,命令计数器38A将具有10的值,因为这是 没有先前命令保持未执行的类型特定的命令流中的命令数目(即,视频命令#0到#9)。进 一步假定视频命令#11和视频命令#12已执行,而视频命令#10和视频命令#13尚未执行。 因此,作用中窗口掩码40A具有0x6的掩码值,或以二进制表示,具有OllOb的掩码值。
[0054]视频命令#10的完成清空槽46Ap因此,同步模块34A将视频命令#11、#12和#13 推进到槽464到463且将视频命令#14 (当前处于由分配模块30产生的类型特定的命令流 的头部)转移到新清空的槽46A4。另外,同步模块34A通过改变命令计数器38A和作用中 窗口掩码40A中的值来推进滑动窗口。特定来说,命令计数器38A接收11的值,而作用中 窗口掩码接收0x3 ( 二进制OOllb)的掩码值,以便指示视频命令#11和#12已执行,而视频 命令#13和#14尚未执行。
[0055]在一些方面中,槽46A可以非顺序次序保持命令且额外逻辑将命令映射到各个 槽。在此类方面中,同步模块34A无需推进命令以便打开槽46A4,且映射确保了作用中窗口 掩码40A的位位置保持与对应命令一致。
[0056]上文相对于同步模块34A描述的技术可类似地适用于同步模块34B到34C。因此, 同步模块34针对由分配模块30产生的三个类型特定的命令流中的每一者维持命令完成信 息。在此实例中,同步模块34A针对与视频管线20相关联的视频命令维持命令完成信息。 同步模块34B针对与3D图形管线22相关联的3D图形命令维持命令完成信息。最后,同步模块34C针对与音频管线24相关联的音频命令维持命令完成信息。
[0057]⑶S处理器12进一步包含相依性掩码模块44,用以产生和维持相依性掩码以表示 由分级区域36A中的槽46A保持的命令的相依性。因为命令流26中具有特定命令类型的 命令可能依赖于任一命令类型的一个或一个以上其它命令,所以每一命令与针对命令类型 中的每一者的一个相依性掩码相关联。因此,槽46A保持同步模块34中的每一者的相依性 掩码。在图1的实例中,槽46A中的一者中的每一命令与三个相依性掩码相关联,同步模块 34中的每一者一个相依性掩码。
[0058]—命令的每个相依性掩码因此对应于同步模块34中的一者。相依性掩码可具有 与同步模块34中的对应一者的作用中窗口掩码的位长度相等的位长度。这等效于用于同 步模块34中的对应一者的分级区域36中的槽46保持的每一命令一个位。相依性掩码中 “I”的位值指示对由槽46中的一者保持的对应命令的相依性。
[0059]对于与对应于例如同步模块34A的相依性掩码相关联的命令,相依性掩码具有位 长度4,其等于作用中窗口掩码40A的位长度和分级区域36A中的槽46A的数目。相依性掩 码的LSB指示与相依性掩码相关联的命令和由槽464保持的命令的相依性关系。相依性掩 码的次最低有效位指示与相依性掩码相关联的命令和由槽46A2保持的命令的相依性关系, 依此类推。举例来说,如果相依性掩码具有0x9 ( 二进制1001b)的值,那么相依性掩码的相 关联命令依赖于由槽46Ai和46A4保持的命令。
[0060]相依性掩码模块44在命令进入用于同步模块34中的一者的分级区域36时产生 用于每个命令的相依性掩码。在一些方面中,在CDS处理器12外部的软件驱动器或其它逻 辑执行相依性掩码模块44的功能。参考同步模块34A,当槽46A中的一者在用于同步模块 34A的滑动窗口推进之后变得可用时,同步模块34A可将类型特定的命令流的头部处的命 令转移到分级区域36A中的槽46A中的可用的一者(例如,槽46A4)。如上所述,命令流进 一步提供所述命令的相依性列表。相依性列表指定命令流26中所述命令所依赖的其它命 令(如果存在)。相依性列表中的条目通过命令计数值来参考类型特定的命令流中的命令, 所述命令计数值表示类型特定的命令流中所述命令的先前命令的数目。举例来说,视频命 令#0是视频命令流中的第一视频命令,视频命令#1是视频命令流中的第二视频命令,依此 类推。
[0061]相依性掩码模块44从分配模块30接收将由同步模块34A转移到分级区域36A的 命令的相依性列表。对于每一命令,相依性掩码模块44将相关联的相依性列表中的每一条 目与由用于同步模块34中的每一者的命令计数器38和作用中窗口掩码40界定的滑动窗 口进行比较。如果相依性条目参考了具有小于同步模块34中与所参考命令相关联的一者 的命令计数器38的值的命令计数值的命令,那么相依性列表得到满足,因为所参考命令已 经执行。
[0062]相比之下,如果相依性条目参考了当前由用于同步模块34中的一者的分级区域 36保持的命令,那么所参考命令在用于同步模块34中的所述一者的滑动窗口内。相依性 掩码模块44因此评估用于同步模块34中的所述一者的作用中窗口掩码40,以便确定所参 考命令是否已执行。如果所参考命令尚未执行,那么对于适当的相依性掩码,相依性掩码模 块44将“I”位放置于对应于槽46中保持所参考命令的一者的位位置中。因此,相依性掩 码指示相依性仍未得到满足。[0063]举例来说,参考同步模块34A,如果相依性条目参考了由槽46A2保持的命令且作用中窗口掩码40A在对应于槽46A2的位位置中具有“I”的值,那么相依性掩码模块44将“I”位放置于与同步模块34A相关联的相依性掩码中对应于槽46A2的位位置中。由槽46A中的一者保持的具有一个或一个以上具有非零值的相依性掩码的命令可不执行,直到所述命令的其余一个或一个以上相依性被执行为止。
[0064]在一些实例中,一传入命令的相依性条目参考了超越同步模块34中的适当一者的滑动窗口的另一命令。也就是说,既尚未执行也不落在滑动窗口内的所参考命令。在此类实例中,相依性掩码模块44引导与传入命令相关联的同步模块34以阻挡(B卩,推迟)将类型特定的命令流的头部处的传入命令转移到分级区域36。一旦足够数目的命令执行以推进滑动窗口而涵盖所参考命令,则同步模块34中的阻挡模块将解除阻挡。
[0065]相依性掩码模块44以如上所述的方式评估一传入命令的相依性列表中的所参考命令中的每一者,且进而针对同步模块34中的每一者产生所述传入命令的相依性掩码。在产生相依性掩码后,相依性掩码模块44将相依性掩码发送到同步模块34中将把所述传入命令保持在分级区域36中的相关联一者。同步模块34中的所述相关联一者确认传入命令从分配模块30中的类型特定的命令流的头部到分级区域36中的槽46中的一者转移。
[0066]视频管线20、3D图形管线22和音频管线24向相应的相关联同步模块34报告命令的完成。同步模块34(例如,同步模块34A)在从相关联管线接收到命令完成指示后,即刻确定槽46A中保持完成的命令的一者和对应于所述槽的位位置。同步模块34A随后通过修改作用中窗口掩码40A以设定对应于所述完成的命令的位位置处的位(即,将位值改变为“I”)来更新滑动窗口。另外,同步模块34A向相依性掩码模块44通知命令完成,且提供位位置值。所述通知可包括信号、数据结构、消息、位掩码、值或另一机制。由同步模块34保持的每个命令具有对应于同步模块34A的相关联相依性掩码。因此,在接收到通知后,相依性掩码模块44即刻修改同步模块34A到34C中的每一者内对应于同步模块34A的所有相依性掩码,以便清除适当位位置中的位(即,设定为“O”值)。清除适当位位置中的位表明了对与对应于所述位位置的命令相关的任何相依性的满意。
[0067]当完成的命令对应于用于同步模块34中的相关联一者的作用中窗口掩码40的LSB时,所述相关联同步模块34通过递增命令计数器38且将作用中窗口掩码40右移一位(右移将作用中窗口掩码40的最高有效位设定为O)而推进滑动窗口。因为作用中窗口掩码40右移一位,所以相依性掩码模块44同样地将对应于所述相关联同步模块34的所有相依性掩码右移一位。以此方式,相依性掩码的位位置中的位值保持与滑动窗口中用于所述相关联同步模块34的命令的位置一致。
[0068]由于上文描述的过程,每一命令的相依性掩码准确地表不命令的相依性完成状态。当一命令的相依性掩码被清除(即,具有位值O)时,所述命令没有剩余的未被满足的相依性。因此,同步模块34中与所述命令相关联的一者将所述命令转移到适当管线供执行。
[0069]命令完成可导致相依性掩码模块44清除正被清除的特定分级区域36中的一个以上命令的相依性掩码。在此类实例中,两个命令均准备好执行。命令流26中的命令与由分配模块30连同命令数据一起转移到同步模块34的优先级信息相关联。优先级信息是指定一特定命令与任一其它命令的优先级相比的相对优先级的数字或其它识别符。同步模块34的分级区域36维持优先级信息。参考例如同步模块34A,分级区域36A维持槽46A中的命令的相关联优先级信息。因此,槽46A中的每一者针对一特定命令保持命令数据、所述命令的优先级信息以及所述命令的相依性掩码。优先级信息可与在多媒体装置2上运行的包含相关联命令、命令类型(例如,依赖于资源、复合)或其它因素的应用程序相关。
[0070]当同步模块34A中的两个或两个以上命令准备好执行时,所述命令的相对优先级决定执行次序。较高优先级命令具有执行优先。如果命令的相对优先级是相等的,那么同步模块34A可使用另一方法来确定优先(例如,循环法、随机选择、先入先出(FIFO))。
[0071]某一命令可能不具有相依性或可能具有比命令流26中在所述命令之前的其它命令的相依性更早被满足的相依性。同步模块34的使用准许CDS处理器12在命令相依性的满足后即刻执行命令,而不是阻挡命令直到先前的命令本身执行为止。因此,命令流26中的命令可无序地执行,从而带来命令流26的较高的总体执行速率。
[0072]图5是更详细地且在特定操作状态下展示图4的同步模块34A的一个实例的框图。图5扩展了槽46A的描绘以说明用于槽464到46A4的命令数据列47、优先级列48和相依性掩码列50A到50C,以及提供槽46A中的这些各种列的可能值的实例。相依性掩码列 50A到50C对应于图4的⑶S处理器12的同步模块34A到34C。因此举例来说,相依性列 50A中的相依性掩码对应于由同步模块34A保持的命令。
[0073]在所说明的操作状态中,槽464到46A4分别保持视频命令#3到#6。保持视频命令#3的槽46仏的相依性掩码B (相依性掩码列50B)具有值0010b。因为第二位位置具有“I”值,所以这表示对同步模块34B的分级区域36B的第二槽中的对应第二命令的相依性。作为另一实例,保持视频命令#6的槽46A4的相依性掩码A(相依性掩码列50A)具有值0001b。这表示对同步模块34A的槽46Ai中的命令(即,视频命令#3)的相依性。
[0074]命令计数器38A和作用中窗口掩码40A表示同步模块34A的滑动窗口状态。命令计数器38A的值指示视频管线20已完成前三个视频命令。作用中窗口掩码40A的值指示与同步模块34A相关联的视频管线20已另外完成槽46A2和46A3中的命令(即,视频命令 #4和视频命令#5)。
[0075]优先级列48指定槽46A中的命令的优先级。如上所述,当同步模块34中的两个或两个以上命令变为准备好在相似时间执行(例如通过使其相依性被清除)时,具 有较高相对优先级的命令具有执行优先。举例来说,优先级值为I的视频命令#6具有比优先级值为3的视频命令#3高的相对优先级。
[0076]图6是说明在视频管线20执行视频命令#3之后在未来操作状态下的图5的同步模块34A的框图。同步模块34A响应于视频命令#3的执行而在推进槽中的其它命令之后将类型特定的命令流的头部处的命令(视频命令#3)转移到槽46A4。另外,同步模块34A 通过递增命令计数器38A且将作用中窗口掩码40A右移一位来推进滑动窗口。
[0077]最后,因为图5中的视频命令#3对应于作用中窗口掩码40A的LSB,所以相依性掩码模块44将所有相依性掩码A(相依性掩码列50A)右移一位。因此,视频命令#6的相依性掩码A被清除。然而,因为视频命令#6的对应于同步模块34B的相依性掩码(相依性掩码列50B)仍指定相依性,所以视频命令#6尚不可转移到视频管线20供执行。
[0078]图7是说明命令70、类型特定的命令流的子集和所述类型特定的命令流的示范性滑动窗口的框图。命令70是3D图形命令。相依性72A到72D说明各种命令间相依性。举例来说,相依性72A表示3D图形命令#16对3D图形命令#15的相依性。命令计数器80展示滑动窗口 82的起始位置。在此实例中,命令计数器80具有值16,其指示由与3D图形命令相关联的3D图形管线(图7中未图示)完成3D图形命令流中的前16个3D图形命令。因为命令计数器80的值大于3D图形命令#15的命令计数,所以相依性72A得到满足。
[0079]滑动窗口 82涵盖了跟随命令计数器80的四个命令。因此,相关联同步模块中的槽保持3D图形命令#15到#19 (图7中未图示)。滑动窗口 82展示图形命令#17是滑动窗口中已完成的仅有命令。滑动窗口所涵盖的最早命令(在此实例中,3D图形命令#15)的执行状态由作用中窗口掩码84的LSB表示。表示与3D图形命令相关联的同步模块(图7中未图示)中的滑动窗口 82的作用中窗口掩码84因此具有值0010b。
[0080]图8是说明图4的CDS处理器12的实例操作模式的流程图,其实施本发明中描述的无序执行技术。
[0081]⑶S处理器12作为命令流的部分而接收具有相依性列表的命令(100)。相依性列表含有条目,其中每一条目指定命令流中将在所接收命令可自身被执行之前执行的命令。CDS处理器12通过将相依性列表中的每一条目与同由所述条目指定的命令类型相关联的适当同步模块的滑动窗口进行比较来单独地处理条目(102)。
[0082]首先,⑶S处理器12确定用于适当同步模块的管线是否已执行由条目指定的命令。如果条目命令的命令计数小于同步模块的命令计数(104的“是”分支),那么条目命令已执行且⑶S处理器丢弃相依性(116)。否则(104的“否”分支),⑶S处理器12接着将条目命令的命令计数与同步模块的命令计数和作用中窗口掩码的长度进行比较以确定条目命令是否超越滑动窗口(106)。如果是这样(106的“是”分支),那么⑶S处理器12阻挡所接收的命令(118)。所述阻挡将继续直到用于条目命令的适当同步模块执行足够数目的命令以推进滑动窗口而涵盖所述条目命令为止。
[0083]如果条目命令由滑动窗口涵盖(106的“否”分支),那么⑶S处理器12读取适当同步模块的作用中窗口掩码中对应于所述条目命令的位位置中的位。如果所述位是空的(即,具有值“O”),那么作用中窗口掩码指示所述条目命令已执行(108的“是”分支)。因此,⑶S处理器12丢弃相依性(120)。
[0084]然而如果所述位被设定(即,具有值“I”),那么所述条目命令尚未执行且相依性保留(108的“否”分支)。CDS处理器12设定用于所接收的命令的适当相依性掩码中对应于所述条目命令的位(110)。
[0085]⑶S处理器12接着确定是否有任何条目保留在相依性列表中,且如果是这样,那么针对下一条目应用条目过程(112的“是”分支)。一旦⑶S处理器12已处理所有条目(112的“否”分支),则CDS处理器12将所接收的命令和通过分析相依性列表所产生的相依性掩码转移到与所接收命令相关联的同步模块的分级区域中的槽。
[0086]图9是说明实施本发明中描述的无序执行技术的图4的CDS处理器12的示范性无序执行操作的流程图。
[0087]⑶S处理器12的同步模块34A从相关联管线接收通知,所述通知向同步模块34A建议所述管线完成由用于同步模块34A的分级区域保持的命令(200)。如果完成的命令对应于用于同步模块34A的作用中窗口掩码40A的最低有效位(LSB) (202的“是”分支),那么同步模块34A通过递增命令计数器38A且将作用中窗口掩码40A右移一位来推进滑动窗口(204)。另外,⑶S处理器12的相依性掩码模块44将同步模块34中的每一者中对应于同步模块34A的所有相依性掩码右移一位(204)。
[0088]如果完成的命令不对应于用于同步模块34A的作用中窗口掩码40A的最低有效位 (LSB) (202的“否”分支),那么相依性掩码模块44针对适当的相依性掩码清除对应于完成 的命令的位位置中的位(206)。
[0089]相依性掩码模块44已管理相依性掩码之后,同步模块34中的每一者确定由分级 区域36保持的一个或一个以上命令的相依性掩码是否新近被清除(208)。如果不是这样, 那么同步模块等待从相关联管线接收额外的命令完成通知(208的“否”分支)。然而如果 一个或一个以上命令的相依性掩码新近被清除,那么所述命令的相依性已得到满足且所述 命令可执行(208的“是”分支)。用于就绪命令的同步模块34将命令转发到适当的管线供 执行(210)。以此方式,具有在另外一个或一个以上命令的相依性之前得到满足的相依性的 命令(所述另外一个或一个以上命令在命令流中在所述命令之前)可无序地执行,即,在先 前命令之前执行。
[0090]本发明中所描述的技术可实施于通用微处理器、数字信号处理器(DSP)、专用集成 电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑装置(PLD)或其它等效逻辑装置中的 一者或一者以上内。因此,如本文使用的术语“处理器”或“控制器”可指代上述结构中的 任一者或一者以上或者适用于实施本文描述的技术的任一其它结构。
[0091]本文说明的各种组件可通过硬件、软件、固件或其任一组合的任一合适组合来实 现。在图中,将各种组件描绘为单独的单元或模块。然而,参看这些图描述的各种组件中的 所有或若干组件可集成到常用硬件、固件及/或软件内的经组合单元或模块中。此外,本文 描述的个别模块、单元或组件可实施为提供多种所描述特征或功能性的一个或一个以上子 模块、子单元或子组件。因此,为了易于说明,将特征表示为组件、单元或模块意在强调特定 功能特征,且未必需要通过单独的硬件、固件或软件组件来实现这些特征。在一些情况下, 可将各种单元实施为由一个或一个以上处理器执行的可编程过程。
[0092]本文描述为模块、装置或组件的任何特征均可一起实施于集成逻辑装置中或单独 实施为离散但可互操作的逻辑装置。在各种方面中,此类组件可至少部分地形成为可被总 称为集成电路装置(例如集成电路芯片或芯片组)的一个或一个以上集成电路装置。此电 路可提供于单一集成电路芯片装置中或多个可互操作的集成电路芯片装置中,且可用于多 种图像、显示、音频或其它多重多媒体应用及装置中的任一者中。在一些方面中,例如,这些 组件可形成例如无线通信装置手持机(例如,移动电话手持机)等移动装置的一部分。
[0093]如果以软件来实施,则所述技术可至少部分地由包括具有指令的代码的计算机可 读数据存储媒体来实现,当由一个或一个以上处理器执行时,所述指令执行上述方法中的 一者或一者以上。计算机可读存储媒体可形成计算机程序产品的一部分,计算机程序产品 可包含封装材料。计算机可读媒体可包括例如同步动态随机存取存储器(SDRAM)的随机存 取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只 读存储器(EEPROM)、嵌入式动态随机存取存储器(eDRAM)、静态随机存取存储器(SRAM)、快 闪存储器、磁性或光学数据存储媒体。软件可由一个或一个以上处理器执行,所述处理器例 如一个或一个以上DSP、通用微处理器、ASIC、FPGA或者其它等效的集成或离散逻辑电路。
[0094]本发明中已描述各种方面。这些和其它方面处于所附权利要求书的范围内。
【权利要求】
1.一种方法,其包括: 接收包含命令间相依性信息的至少一个命令流,其中所述至少一个命令流包括第一、第二和第三命令,其中所述第二和第三命令具有在所述至少一个命令流中的第一次序以使得所述第二命令在所述第三命令之前; 基于所述命令间相依性信息而确定所述第二命令依赖于所述第一命令的先前执行;确定所述第一命令与多个处理管线中的第一处理管线相关联且所述第二命令和第三命令与所述多个处理管线中的不同的第二处理管线相关联; 由处理器将所述第三命令分配到所述多个处理管线中的所述第二处理管线;以及在将所述第三命令分配到所述多个处理管线中的所述第二处理管线之后,由所述处理器将所述第二命令分配到所述多个处理管线中的所述第二处理管线以使得所述第二命令和第三命令以不同于所述第一次序的第二次序执行。
2.根据权利要求1所述的方法,其进一步包括: 维持第一滑动窗口以表示与所述多个处理管线中的所述第一处理管线相关联的命令的完成状态;以及 维持第二滑动窗口以表示与所述多个处理管线中的所述第二处理管线相关联的命令的完成状态。
3.根据权利要求2所述的方法, 其中所述至少一个命令流包括与所述多个处理管线中的所述第一处理管线相关联的第一组有序命令和与所述多 个处理管线中的所述第二处理管线相关联的第二组有序命令,且 其中所述第一滑动窗口包括表示所述第一滑动窗口的起始位置的命令计数器,其中所述起始位置对应于所述第一组有序命令中没有先前命令保持未由所述多个处理管线中的所述第一处理管线执行的最后一个命令。
4.根据权利要求2所述的方法,其中所述第一滑动窗口包括作用中窗口掩码,所述作用中窗口掩码具有表不所述第一命令的完成状态的第一位。
5.根据权利要求2所述的方法,其进一步包括基于所述命令间相依性信息而产生所述第二命令的相依性掩码,其中所述相依性掩码中的位指示所述第一滑动窗口中的对应命令的完成状态。
6.根据权利要求5所述的方法,其中产生所述第二命令的所述相依性掩码包括: 确定所述第一命令的完成状态;以及 当所述第一命令尚未执行时设定所述第二命令的所述相依性掩码中的位,其中所述位对应于所述第一命令。
7.根据权利要求6所述的方法, 其中所述第一滑动窗口包括作用中窗口掩码,所述作用中窗口掩码具有表不所述第一命令的所述完成状态的第一位,且 其中确定所述第一命令的所述完成状态包括评估所述作用中窗口掩码的所述第一位。
8.根据权利要求5所述的方法,其进一步包括: 从所述多个处理管线中的所述第一处理管线接收所述第一命令已执行的通知; 响应于所述通知,清除所述第二命令的所述相依性掩码中的位,其中所述位对应于所述第一命令。
9.根据权利要求5所述的方法,其进一步包括: 从所述多个处理管线中的所述第一处理管线接收所述第一命令完成的通知;以及响应于所述通知,当所述第一命令对应于所述相依性掩码中的最低有效位时将所述相依性掩码右移一个位。
10.根据权利要求5所述的方法,其中将所述第二命令分配到所述多个处理管线中的所述第一处理管线包括: 确定所述相依性掩码中的对应于所述第一命令的位是否是空的;以及仅当所述相依性掩码中的对应于所述第一命令的所述位是空的时,将所述第二命令分配到所述多个处理管线中的所述第一处理管线。
11.根据权利要求2所述的方法,其进一步包括: 从所述多个处理管线中的所述第一处理管线接收所述第一命令完成的通知;以及响应于所述通知,推进所述第一滑动窗口。
12.根据权利要求1所述的方法, 其中所述至少一个命令流进一步包括第四命令, 其中所述第二命令具有优先级值且所述第四命令具有优先级值,且其中所述方法进一步包括: 基于所述命令间相依性信息而确定所述第四命令依赖于所述第一命令的先前执行; 确定所述第四命令与所述多个处理管线中的所述第二处理管线相关联;以及以基于所述第二命令和所述第四命令的所述优先级值的次序将所述第二命令和所述第四命令分配到所述多个处理管线中的所述第二处理管线。
13.—种设备,其包括: 命令分配与同步处理器, 其中所述命令分配与同步处理器经配置以: 接收包含命令间相依性信息的至少一个命令流,其中所述至少一个命令流包括第一、第二和第三命令,其中所述第二和第三命令具有在所述至少一个命令流中的第一次序以使得所述第二命令在所述第三命令之前; 基于所述命令间相依性信息而确定所述第二命令依赖于所述第一命令的先前执行;确定所述第一命令与多个处理管线中的第一处理管线相关联且所述第二命令和第三命令与所述多个处理管线中的不同的第二处理管线相关联; 将所述第三命令分配到所述多个处理管线中的所述第二处理管线;以及在将所述第三命令分配到所述多个处理管线中的所述第二处理管线之后,将所述第二命令分配到所述多个处理管线中的所述第二处理管线以使得所述第二命令和第三命令以不同于所述第一次序的第二次序执行。
14.根据权利要求13所述的设备,其中所述命令分配与同步处理器进一步经配置以: 维持第一滑动窗口以表示与所述多个处理管线中的所述第一处理管线相关联的命令的完成状态;以及 维持第二滑动窗口以表示与所述多个处理管线中的所述第二处理管线相关联的命令的完成状态。
15.根据权利要求14所述的设备, 其中所述至少一个命令流包括与所述多个处理管线中的所述第一处理管线相关联的第一组有序命令和与所述多个处理管线中的所述第二处理管线相关联的第二组有序命令,且 其中所述第一滑动窗口包括表示所述第一滑动窗口的起始位置的命令计数器,其中所述起始位置对应于所述第一组有序命令中没有先前命令保持未由所述多个处理管线中的所述第一处理管线执行的最后一个命令。
16.根据权利要求14所述的设备,其中所述第一滑动窗口包括作用中窗口掩码,所述作用中窗口掩码具有表示所述第一命令的完成状态的第一位。
17.根据权利要求14所述的设备,其中所述命令分配与同步处理器进一步经配置以基于所述命令间相依性信息而产生所述第二命令的相依性掩码,其中所述相依性掩码中的位指示所述第一滑动窗口中的对应命令的完成状态。
18.根据权利要求17所述的设备,其中为了产生所述第二命令的所述相依性掩码,所述命令分配与同步处理器进一步经配置以: 确定所述第一命令的完成状态;以及 当所述第一命令尚未执行时设定所述第二命令的所述相依性掩码中的位,其中所述位对应于所述第一命令。
19.根据权利要求18所述的设备, 其中所述第一滑动窗口包括作用中窗口掩码,所述作用中窗口掩码具有表不所述第一命令的所述完成状态的第一位,且 其中为了确定所述第一命令的所述完成状态,所述命令分配与同步处理器进一步经配置以评估所述作用中窗口掩码的所述第一位。
20.根据权利要求17所述的设备,其中所述命令分配与同步处理器进一步经配置以: 从所述多个处理管线中的所述第一处理管线接收所述第一命令已执行的通知; 响应于所述通知,清除所述第二命令的所述相依性掩码中的位,其中所述位对应于所述第一命令。
21.根据权利要求17所述的设备,其中所述命令分配与同步处理器进一步经配置以: 从所述多个处理管线中的所述第一处理管线接收所述第一命令完成的通知;以及 响应于所述通知,当所述第一命令对应于所述相依性掩码中的最低有效位时将所述相依性掩码右移一个位。
22.根据权利要求17所述的设备,其中为了将所述第二命令分配到所述多个处理管线中的所述第一处理管线,所述命令分配与同步处理器进一步经配置以: 确定所述相依性掩码中的对应于所述第一命令的位是否是空的;以及 仅当所述相依性掩码中的对应于所述第一命令的所述位是空的时,将所述第二命令分配到所述多个处理管线中的所述第一处理管线。
23.根据权利要求14所述的设备,其中所述命令分配与同步处理器进一步经配置以: 从所述多个处理管线中的所述第一处理管线接收所述第一命令完成的通知;以及响应于所述通知,推进所述第一滑动窗口。
24.根据权利要求13所述的设备,其中所述至少一个命令流进一步包括第四命令, 其中所述第二命令具有优先级值且所述第四命令具有优先级值,且 其中所述命令分配与同步处理器进一步经配置以: 基于所述命令间相依性信息而确定所述第四命令依赖于所述第一命令的先前执行;确定所述第四命令与所述多个处理管线中的所述第二处理管线相关联;以及以基于所述第二命令和所述第四命令的所述优先级值的次序将所述第二命令和所述第四命令分配到所述多个处理管线中的所述第二处理管线。
25.根据权利要求13所述的设备,其中所述设备包括无线通信装置手持机。
26.根据权利要求13所述的设备,其中所述设备包括一个或一个以上集成电路装置。
27.一种装置,其包括: 用于接收包含命令间相依性信息的至少一个命令流的装置,其中所述至少一个命令流包括第一、第二和第三命令,其中所述第二和第三命令具有在所述至少一个命令流中的第一次序以使得所述第二命令在所述第三命令之前; 用于基于所述命令间相依性信息而确定所述第二命令依赖于所述第一命令的先前执行的装置; 用于确定所述第一命令与多个处理管线中的第一处理管线相关联且所述第二命令和第三命令与所述多个处理管线中的不同的第二处理管线相关联的装置; 用于将所述第三命令分配到所述多个处理管线中的所述第二处理管线的装置;以及用于在将所述第三命令分配 到所述多个处理管线中的所述第二处理管线之后将所述第二命令分配到所述多个处理管线中的所述第二处理管线以使得所述第二命令和第三命令以不同于所述第一次序的第二次序执行的装置。
28.根据权利要求27所述的装置,其进一步包括: 用于维持第一滑动窗口以表示与所述多个处理管线中的所述第一处理管线相关联的命令的完成状态的装置;以及 用于维持第二滑动窗口以表示与所述多个处理管线中的所述第二处理管线相关联的命令的完成状态的装置。
29.根据权利要求28所述的装置, 其中所述至少一个命令流包括与所述多个处理管线中的所述第一处理管线相关联的第一组有序命令和与所述多个处理管线中的所述第二处理管线相关联的第二组有序命令,且 其中所述第一滑动窗口包括表示所述第一滑动窗口的起始位置的命令计数器,其中所述起始位置对应于所述第一组有序命令中没有先前命令保持未由所述多个处理管线中的所述第一处理管线执行的最后一个命令。
30.根据权利要求28所述的装置,其中所述第一滑动窗口包括作用中窗口掩码,所述作用中窗口掩码具有表示所述第一命令的完成状态的第一位。
31.根据权利要求28所述的装置,其进一步包括用于基于所述命令间相依性信息而产生所述第二命令的相依性掩码的装置,其中所述相依性掩码中的位指示所述第一滑动窗口中的对应命令的完成状态。
32.根据权利要求31所述的装置,其中所述用于产生所述第二命令的相依性掩码的装置进一步包括: 用于确定所述第一命令的完成状态的装置;以及 用于当所述第一命令尚未执行时设定所述第二命令的所述相依性掩码中的位的装置,其中所述位对应于所述第一命令。
33.根据权利要求32所述的装置, 其中所述第一滑动窗口包括作用中窗口掩码,所述作用中窗口掩码具有表不所述第一命令的所述完成状态的第一位,且 其中确定所述第一命令的所述完成状态包括评估所述作用中窗口掩码的所述第一位。
34.根据权利要求31所述的装置,其进一步包括: 用于从所述多个处理管线中的所述第一处理管线接收所述第一命令已执行的通知的装置; 用于响应于所述通知而清除所述第二命令的所述相依性掩码中的位的装置,其中所述位对应于所述第一命令。
35.根据权利要求31所述的装置,其进一步包括: 用于从所述多个处理管线中的所述第一处理管线接收所述第一命令完成的通知的装置;以及 用于响应于所述通知而当所述第一命令对应于所述相依性掩码中的最低有效位时将所述相依性掩码右移一个位的装置。
36.根据权利要求31所述的装置,其中所述用于将所述第二命令分配到所述多个处理管线中的所述第一处理管线的装置进一步包括: 用于确定所述相依性掩码中的对应于所述第一命令的位是否是空的的装置;以及用于仅当所述相依性掩码中的对应于所述第一命令的所述位是空的时将所述第二命令分配到所述多个处理管线中的所述第一处理管线的装置。
37.根据权利要求28所述的装置,其进一步包括: 用于从所述多个处理管线中的所述第一处理管线接收所述第一命令完成的通知的装置;以及 用于响应于所述通知而推进所述第一滑动窗口的装置。
38.根据权利要求27所述的装置, 其中所述至少一个命令流进一步包括第四命令, 其中所述第二命令具有优先级值且所述第四命令具有优先级值,且 其中所述装置进一步包括: 用于基于所述命令间相依性信息而确定所述第四命令依赖于所述第一命令的先前执行的装置; 用于确定所述第四命令与所述多个处理管线中的所述第二处理管线相关联的装置;以及 用于以基于所述第二命令和所述第四命令的所述优先级值的次序将所述第二命令和所述第四命令分配到所述多个处理管线中的所述第二处理管线的装置。
39.一种计算机可读存储媒体,其包括用于致使可编程处理器进行以下操作的指令: 接收包含命令间相依性信息的至少一个命令流,其中所述至少一个命令流包括第一、第二和第三命令,其中所述第二和第三命令具有在所述至少一个命令流中的第一次序以使得所述第二命令在所述第三命令之前; 基于所述命令间相依性信息而确定所述第二命令依赖于所述第一命令的先前执行; 确定所述第一命令与多个处理管线中的第一处理管线相关联且所述第二命令和第三命令与所述多个处理管线中的不同的第二处理管线相关联; 将所述第三命令分配到所述多个处理管线中的所述第二处理管线;以及 在将所述第三命令分配到所述多个处理管线中的所述第二处理管线之后,将所述第二命令分配到所述多个处理管线中的所述第二处理管线以使得所述第二命令和第三命令以不同于所述第一次序的第二次序执行。
40.根据权利要求39所述的计算机可读存储媒体,其进一步包括用以致使所述可编程处理器进行以下操作的指令: 维持第一滑动窗口以表示与所述多个处理管线中的所述第一处理管线相关联的命令的完成状态;以及 维持第二滑动窗口以表示与所述多个处理管线中的所述第二处理管线相关联的命令的完成状态。
41.根据权利要求40所述的计算机可读存储媒体, 其中所述至少一个命令流包括与所述多个处理管线中的所述第一处理管线相关联的第一组有序命令和与所述多个处理管线中的所述第二处理管线相关联的第二组有序命令,且 其中所述第一滑动窗口包括表示所述第一滑动窗口的起始位置的命令计数器,其中所述起始位置对应于所述第一组有序命令中没有先前命令保持未由所述多个处理管线中的所述第一处理管线执行的最后一个命令。
42.根据权利要求40所述的计算机可读存储媒体,其中所述第一滑动窗口包括作用中窗口掩码,所述作用中窗口掩码具有表不所述第一命令的完成状态的第一位。
43.根据权利要求40所述的计算机可读存储媒体,其进一步包括用以致使所述可编程处理器进行以下操作的指令:基于所述命令间相依性信息而产生所述第二命令的相依性掩码,其中所述相依性掩码中的位指示所述第一滑动窗口中的对应命令的完成状态。
44.根据权利要求43所述的计算机可读存储媒体,其中为了产生所述第二命令的所述相依性掩码,所述计算机可读存储媒体进一步包括用以致使所述可编程处理器进行以下操作的指令: 确定所述第一命令的完成状态;以及 当所述第一命令尚未执行时设定所述第二命令的所述相依性掩码中的位,其中所述位对应于所述第一命令。
45.根据权利要求44所述的计算机可读存储媒体, 其中所述第一滑动窗口包括作用中窗口掩码,所述作用中窗口掩码具有表不所述第一命令的所述完成状态的第一位,且 其中为了确定所述第一命令的所述完成状态,且 其中所述计算机可读存储媒体进一步包括用以致使所述可编程处理器进行以下操作的指令:评估所述作用中窗口掩码的所述第一位。
46.根据权利要求43所述的计算机可读存储媒体,其进一步包括用以致使所述可编程处理器进行以下操作的指令: 从所述多个处理管线中的所述第一处理管线接收所述第一命令已执行的通知; 响应于所述通知,清除所述第二命令的所述相依性掩码中的位,其中所述位对应于所述第一命令。
47.根据权利要求43所述的计算机可读存储媒体,其进一步包括用以致使所述可编程处理器进行以下操作的指令: 从所述多个处理管线中的所述第一处理管线接收所述第一命令完成的通知;以及响应于所述通知,当所述第一命令对应于所述相依性掩码中的最低有效位时将所述相依性掩码右移一个位。
48.根据权利要求43所述的计算机可读存储媒体,其中为了将所述第二命令分配到所述多个处理管线中的所述第一处理管线,所述计算机可读存储媒体进一步包括用以致使所述可编程处理器进行以下操作的指令: 确定所述相依性掩码中的对应于所述第一命令的位是否是空的;以及仅当所述相依性掩码中的对应于所述第一命令的所述位是空的时将所述第二命令分配到所述多个处理管线中的所述第一处理管线。
49.根据权利要求40所述的计算机可读存储媒体,其进一步包括用以致使所述可编程处理器进行以下操作的指令: 从所述多个处理管线中的所述第一处理管线接收所述第一命令完成的通知;以及 响应于所述通知,推进所述第一滑动窗口。
50.根据权利要求39所述的计算机可读存储媒体, 其中所述至少一个命令流进一步包括第四命令, 其中所述第二命令具有优先级值且所述第四命令具有优先级值,且其中所述计算机可读存储媒体进一步包括用以致使所述可编程处理器进行以下操作的指令: 基于所述命令间相依性信息而确定所述第四命令依赖于所述第一命令的先前执行; 确定所述第四命令与所述多个处理管线中的所述第二处理管线相关联;以及以基于所述第二命令和所述第四命令的所述优先级值的次序将所述第二命令和所述第四命令分配到所述多个处理管线中的所述第二处理管线。
【文档编号】G06T1/20GK103534680SQ201180041049
【公开日】2014年1月22日 申请日期:2011年7月15日 优先权日:2010年7月16日
【发明者】阿列克谢·V·布尔德, 焦国方 申请人:高通股份有限公司, 焦国方
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1