数据处理系统和在数据处理系统中进行任务调度的方法

文档序号:6484912阅读:158来源:国知局
数据处理系统和在数据处理系统中进行任务调度的方法
【专利摘要】数据处理系统(10)包括被布置成调度多个任务的任务调度设备(12);以及多个处理单元(16、18、20),其中至少一些适于执行所述多个任务的一个或多个分配的任务,并且对于每个分配任务,至少给所述任务调度设备提供指示所述分配的任务的执行何时完成的任务状态事件;其中所述任务调度设备包括任务调度器控制器单元(24),所述任务调度器控制器单元(24)被布置成响应于接收与一个或多个先前分配的任务相关联的所述任务状态事件中的一个或多个,将所述多个任务的一个或多个分别分配到所述处理单元的适于执行所分配的任务的对应处理单元。
【专利说明】数据处理系统和在数据处理系统中进行任务调度的方法
【技术领域】
[0001]本发明涉及数据处理系统、用于在数据处理系统内进行任务调度的方法以及计算机程序产品。
【背景技术】
[0002]用于执行现代数据处理应用的数据处理系统或设备使用复杂的处理算法来处理大量数据。用于执行视频处理应用的高级视频处理系统或设备例如可以提供宽范围的处理能力,例如,视频编码和解码、运动补偿帧速率转换、3D视频处理等等,以便提供高端视频体验。在这个方面,“处理数据”可以包括将数据从一种表示转换成不同的表示,例如,将压缩视频数据流转换成非压缩视频帧序列。例如,它也可以指的是提取包含在数据中的部分信息,诸如从多媒体数据中提取音频信息或检测视频序列中的对象,仅举几例。
[0003]数据处理系统包含用于提供所需要的高性能处理能力的一个或多个处理设备。数据处理系统可以例如作为例如位于印刷电路板(PCB )上的片上系统(SoC )或电路被提供,包含一个或多个集成电路设备。例如,移动设备中的数据处理系统,诸如便携式计算机、智能电话等等或是汽车装置的一部分,诸如车辆等等,可以提供有限的处理能力,从而需要有效地利用。
[0004]数据处理应用可以例如是通信网络相关的应用,诸如视频或多媒体传输、因特网业务路由、或协议转换的应用。其它数据处理应用可以提供例如视频内容或组合多媒体数据的内容,诸如图像、视频、文本信息、音频或3D动画图形。用于执行这些应用的数据处理系统可以例如被布置成以高于与特定应用相关联的低处理速度的处理速度来处理大量数据,诸如无差错解码和在压缩数据格式中接收到的视频序列的不间断显示,仅举几例。所接收的数据可以在预定连续处理阶段的序列中被处理。
[0005]数据处理系统可能能够依序或同时地处理属于相同或不同应用的数据。对于每个应用,数据可以以认为适合于特定应用的服务质量(QoS)被处理。QoS参数可以例如是必需的比特率或图像分辨率、抖动、延迟或误码率,仅举几例。
[0006]代替处理通用处理器上的专用数据,专门数据处理系统可以被使用,其中,例如,采用了硬件加速引擎,即优化用于加速执行专用任务的处理设备。为了执行在优化用于处理专用任务的可用处理设备上的数据集的不同处理阶段,多级处理算法和方法被分成多个任务,其中每个任务提供了全部数据集所需的总处理的一部分。任务可以对应于处理阶段或处理阶段的一部分。例如,在图形板或作为SoC被实现的视频处理系统可以包括被布置成实现例如视频编码和解码、或运动补偿帧速率转换功能的硬件加速引擎,并且可以有助于实现带有降低的硬件复杂度和处理延时的高视频质量。尽可能有效地将任务分配到专用处理设备通常包含执行全面搜索任务之间的依赖关系,以便实现取决于彼此的任务的有效管线处理。

【发明内容】
[0007]如所附权利要求中所描述的,本发明提供了一种数据处理系统、一种在数据处理系统内进行任务调度的方法以及一种计算机程序产品。
[0008]本发明的具体实施例在从属权利要求中被阐明。
[0009]参照下文中描述的实施例,本发明的这些或其它方面将会显而易见并且被阐述。【专利附图】

【附图说明】
[0010]参照附图,仅仅通过举例的方式,本发明的进一步细节、方面和实施例将被描述。在附图中,类似的附图标记被用于表示相同的或功能相似的元素。为了简便以及清晰图示了附图中的元素,并且附图中的元素不一定按比例绘制。
[0011]图1示意性地示出了数据处理系统的第一实施例的例子的图。
[0012]图2示意性地示出了第一流链的例子的图。
[0013]图3示意性地示出了数据处理系统的第二实施例的例子的图。
[0014]图4示意性地示出了数据处理系统的第三实施例的例子的图。
[0015]图5示意性地示出了第二流链的例子的图。
[0016]图6示意性地示出了图示当处理视频数据的时候的控制流层级。
[0017]图7示意性地示出了共享缓冲器的例子的图。
[0018]图8示意性地示出了第三流链和关联缓冲器的例子的图。
[0019]图9示意性地示出了缓冲器分类逻辑的例子的图。
[0020]图10示意性地示出了任务调度器控制器单元的性能的例子的流程图。
[0021]图11示意性地示出了搜索下一个任务以检查任务调度器控制器单元的模块的例子的图。
[0022]图12示意性地示出了用于在数据处理系统内进行任务调度的方法的实施例的例子的图。
【具体实施方式】
[0023]由于本发明说明的实施例可能大部分是使用本领域所属技术人员所熟知的电子元件和电路被实施,所以将不会在比上述所说明的认为有必要的程度大的任何程度上解释细节,以用于对本发明基本概念的理解以及为了不混淆或偏离本发明所教之内容。
[0024]参照图1,图1示意性地示出了数据处理系统的第一实施例的例子的图。数据处理系统10包括被布置成调度多个任务的任务调度设备12 ;以及多个处理单元16、18、20,所述处理单元中的至少一些适于执行所述多个任务的一个或多个分配的任务,并且对于每个分配任务,至少给所述任务调度设备12提供指示所述分配的任务的执行何时完成的任务状态事件。所述任务调度设备12包括任务调度器控制器单元24,所述任务调度器控制器单元24被布置成响应于接收与一个或多个先前分配任务相关联的所述任务状态事件中的一个或多个,将所述多个任务的一个或多个分别分配到所述处理单元16、18、20的适于执行所述分配的任务的对应的处理单元。
[0025]使用事件驱动任务调度方法的数据处理系统可以提供快速的资源节约任务搜索和释放并可以避免常规的全面搜索。
[0026]所示的数据处理系统10的任务调度设备12可以被布置成将任务分配到处理单元16,18,20并且在处理单元16、18、20之间分发任务分配。任务可以是包括可以被处理单元加载和执行的指令的处理算法。处理单元16、18、20可以是数据处理系统10的处理设备。处理单元16、18、20可以例如是微处理器、微控制器单元(MCU)、图形处理单元(GPU)或被布置成执行任何或专用任务的程序指令的任何其它电路。处理单元可以例如是硬件加速引擎,即优化用于加速执行专门任务的处理设备。给处理单元分配任务可以指的是给分配的任务以及要处理的数据分配处理资源,即处理单元和输入输出缓冲器。
[0027]调度可以指的是分配任务以在可用处理单元上运行的方式。任务调度设备12可以被布置成接收任务,并决定何时以及向处理单元16、18、20中的哪个分配哪个任务,以便增加处理单元16、18、20的使用和改进数据处理系统10的性能。数据处理系统10的性能可以例如通过提高任务的吞吐量,即单位时间内完成的任务数目,而得到改进,或通过减少每个任务的等待时间和响应时间而得到改进。
[0028]接收任务可以例如指的是接收特定任务的任务描述符。任务描述符可以例如是包含地址或到任务标识符的指针、任务数据和关联的输入和输出缓冲器的一组信息。任务可以例如是由关联到任务的处理单元的标识符数目和到关联的输入缓冲器的指针或地址定义的,以用于接收接下来要处理的数据,或者是输入缓冲器表(IBL)和关联的输出缓冲器,以用于接收处理过的数据,或输出缓冲器列表(0BL)。
[0029]接收任务也可以指的是仅接收任务标识符或到任务描述符的指针,或者它可以指的是接收与特定任务有关的所有数据。类似地,分配任务也可以指的是分配任务标识符或任务描述符或任何其它信息以用于使得所选择的处理单元能够执行任务。被布置成存储多个任务的任务寄存器14可以例如是任何寄存器、缓冲器或被布置成存储例如任务数据、任务标识符和/或任务描述符的其它存储器设备。新任务可以被动态添加到任务寄存器。
[0030]所示的数据处理系统10可以包括流链缓冲器单元22,所述流链缓冲器单元22被布置成存储定义了所述多个任务中的一个或多个的一个或多个处理流的一个或多个任务参数表和一个或多个关联的流链,每个所述流链可以包括所述多个处理单元中的一个或多个。所述任务调度设备12可以包括被布置成存储所述多个任务的任务寄存器14,所述多个任务中的每个与所述一个或多个处理流相关联。所述任务调度器控制器单元24可以被布置成根据所述一个或多个处理流中的对应的处理流来分配所述多个任务中的所述一个或多个。
[0031]在任务参数表中定义的任务的处理流可以例如是链接列表或当处理一组数据的时候限定了所需连续任务之间的依赖关系的其它信息源。仅举一个例子,压缩的视频数据可以首先被解压缩,然后大型化,色空间转换和显示增强可以在显示解码的视频内容之前被应用于视频数据。任务的处理流可以被关联或映射到一个或多个关联的流链。流链缓冲器单元22可以例如是包含链接列表的共享存储器缓冲器。所述任务调度设备可以管理根据链接列表执行一个或几个处理流。流链可以包括多个处理单元16、18、20中的一个或多个,即流链可以包括如何使用数据处理系统10的一个或多个处理单元来执行任务的处理流的信息。例如,当流链包括特定处理单元的指针或其它标识符时,流链可以被视为包括特定处理单元。这可以允许处理流的任务被映射到适于执行分配的任务的处理单元16、18、20,而在任务分配和对任何外部存储器的高访问速率的时候不需要全面搜索任务之间的依赖关系,从而减少了等待时间和改进了数据处理系统10的QoS。[0032]处理单元16、18、20可以被连接到任务调度设备12,并且可以接收任务以进行处理,并生成指示任务的执行何时完成的任务状态事件。任务状态事件可以给任务调度设备12发送信号,并且可以允许任务调度设备12给特定处理单元分配更多任务。
[0033]任务调度设备12可以被布置成分析任务状态条件以用于重复处理相同任务,并且可以例如给相同或另一个处理单元16、18、20分配相同任务。此外或替代地,任务调度设备12可以被布置成分析任务状态条件以用于处理与完成的任务共享数据缓冲器的任务。任务调度设备12可以被布置成将另一个任务分配到相同处理单元。
[0034]例如,接收的任务状态事件可以允许任务调度设备12继续进行被先前完成的任务所处理的数据的处理流,即给关联的流链的适当后续处理单元分配处理流的后续任务,其可以是与所述多个处理单元16、18、20相同或不同的处理单元。处理流和流链可以是事件驱动的。任务调度设备12可以在完全模块化的基础上选择处理单元流链以用于处理任务流,而不是在预定义的允许流链之间进行选择。
[0035]任务调度可以由任务调度设备12进行管理,而不受例如可以托管所描述的数据处理系统10的计算机的中央处理单元的干扰。
[0036]任务调度设备12的任务调度器控制器单元24可以例如是处理设备或连接到适于或被配置成执行分配的任务的处理单元16、18、20中的对应的处理单元的逻辑电路,所述逻辑电路用于响应于对应的处理流而分配任务以及用于接收与一个或多个先前分配的任务相关联的任务状态事件。
[0037]图1中所示的数据处理系统10可以例如是视频处理系统。它可以是高级视频处理系统或设备,并且可以例如提供广泛的处理能力和作为处理单元16、18、20的硬件加速引擎以用于执行所需任务。每个任务可以专用于处理视频或图像帧的某个部分。所示的数据处理系统可以提供一种有效的方式以进行任务切换和视频应用的复用,从而引发最小功率和复杂度以及每个任务的最大吞吐量和QoS。所示的系统10可以允许处理多个视频算法。它可能只需要小的区域,例如任务调度设备12的小管芯面积,而所示的系统可以被认为是高度可扩展的,因为更多的硬件加速单元可以允许例如执行更复杂的处理流,但也可以用相同任务调度设备12进行管理。
[0038]任务调度设备12可以经由数据信道被连接到任务寄存器单元24并且可以被布置成接收任务。任务可以是离线任务,即非实时任务,并且任务调度设备12的任务调度器控制器单元24可以例如被布置成最大化任务的吞吐量或最小化任务处理的等待时间,或可以适于优化数据处理系统10的相对于旨在吞吐量和等待时间之间的折衷的服务质量。数据处理系统10可以还包括可连接以接收任务数据的输入26。任务数据可以包括实时任务数据并且任务调度设备12可以被布置成接收和调度一个或多个实时任务。例如,视频处理系统可以被布置成接收视频流或支持通信网络上的现场视频通信。其它实时环境可以例如是用于自动控制的移动设备,例如,机器人。实时任务的特征是从事件到系统响应的操作截止期限。可以在对数据处理系统10的响应时间的严格约束内执行实时任务。任务调度设备12可以允许使用多个处理单元16、18、20以用于以一种有效方式对输入数据执行不同离线和实时任务操作,其中带有最小存储器带宽、开销以及最大化效率以满足高输出数据速率,并提供闻QoS0
[0039]任务调度设备12的任务调度器控制器单元24可以包括输入队列,并且任务调度设备12可以包括被布置成接收所述任务状态事件以及将所述任务状态事件插入所述输入队列中的仲裁单元28。仲裁单元28或仲裁器可以例如经由处理单元16、18、20和仲裁单元28之间的控制通道被连接以至少接收由处理单元16、18、20生成的任务状态事件。它可以接收或也可以不接收其它事件。仲裁单元28可以将任务状态事件或对应的任务或识别来自任务寄存器14的对应的任务的其它数据插入任务调度器控制器单元24的输入队列中。仲裁单元28也可以可连接到输入26以用于接收实时任务或用于插入到任务调度器控制器单元24的输入队列中的其它新任务。在任务调度器控制器单元24的输入队列中具有条目的每个任务可能已分配了优先级标识符,它可以例如被仲裁单元28使用以将该条目插入在队列中的反映了其处理优先级的位置。在数据处理系统10的另一个实施例中,优先级信息可以由任务调度器控制器单元24而不是仲裁单元28进行评估。输入队列可以被包括在任务调度器控制器单元24内,或者它可以被实现为连接到任务调度器控制器单元24的单独单元。
[0040]对于将任务管线状分配到处理设备,任务调度设备12可以被布置成将任务分配到所述多个处理单元16、18、20的不同的处理单元以至少部分并行执行所述任务。任务可以例如与一个或多个处理流相关联。所述一个或多个处理流可以例如是相同处理流,即,构成相同处理流的任务可以分布于可用处理单元16、18、20上。另外或替代地,处理流可以例如是不同处理流,即,与不同处理流相关联的任务可以被分配到可用处理单元16、18、20。换句话说,属于不同处理流的任务可以在所述多个处理单元上被并行执行。
[0041]假使处理流的某些任务的连续处理不是强制性的,属于相同处理流的任务可以也在可用处理单元16、18、20上被并行执行。一个或多个处理单元16、18、20可以例如被布置成以时间复用模式执行单个和多个处理流的任务。处理单元16、18、20可以并行操作或任务的时间复用专用于处理相同处理流的或不同处理流的不同分段。任务的至少部分并行执行可以是在任务的总处理时间的至少一部分内任务的并行执行。处理单元16、18、20中的一些可以例如是至少部分地提供相同功能性,并且可以被布置成提供多线程支持。
[0042]任务调度设备12可以包括多个任务输出队列30、32、34,每个都可连接到所述多个处理单元16、18、20中的对应处理单元。所述任务调度器控制器单元24可以被布置成通过将一个或多个所述多个任务插入一个或多个所述任务输出队列30、32、34而将一个或多个所述多个任务分配到所述多个处理单元的被布置成执行分配的任务的相应处理单元。给处理单元16、18、20中的每个提供专用任务输出队列可能有助于避免线端阻塞瓶颈和性能下降,并且可以实现高任务吞吐量和响应时间,并且从而增强QoS,提高实时应用的适用性。给每个处理单元16、18、20提供任务输出队列可以实现任务的并行队列、处理单元的多线程和并行计算。
[0043]任务调度设备可以包括连接到所述多个任务输出队列30、32、34的多个队列控制单元36、38、40,所述多个队列控制单元中的每个被布置成响应于对应的处理单元的可用性信息,将任务从连接的任务输出队列30、32、34分配到对应的处理单元16、18、20。可用性信息可以被包括在或导出于由特定处理单元用信号通知的任务状态事件,或者它可以例如被包括在例如直接用信号通知对应的队列控制单元的专用事件中。新任务可以例如在先前任务完成之后被分配一个时钟周期,从而实现了处理单元的充分利用。
[0044]队列控制单元或队列发动机(QLM)可以例如是实现了队列状态机的任何逻辑电路或处理设备,其中所述队列状态机被布置成管理对应的连接任务输出队列中的任务并将下一个分配的任务分配到所连接的处理单元。
[0045]在数据处理系统10的实施例中,所述多个队列控制单元36、38、40的至少一个可以被布置成响应于所述任务的优先级,将任务从连接的任务输出队列30、32、34分配到对应的处理单元16、18、20,即任务调度器控制器单元24和仲裁单元28可以提供有降低的复杂度,并且例如只有管理任务的任务分配并且可以使用优先级信息的队列控制单元36、38、40可以提供有用于评估优先级信息的电路。降低的复杂度仲裁单元28和任务调度控制器24可以分别允许非常快的仲裁和任务调度。在每个任务输出队列30、32、34中,队列控制单元36、38、40可以选择相对于任务优先级在连接的处理单元16、18、20中运行的下一个任务。与该任务相关联的优先级可以例如响应于所述共享存储器缓冲器的可用性、任务输出队列中的等待时间或任务所属的处理流的静态优先级而被动态地调整。
[0046]数据处理系统10可以包括一个或多个存储器缓冲器单元。所述一个或多个存储器缓冲器单元可以例如是可配置的以包括被分配到处理单元16、18、20的每个任务的输入缓冲器和输出缓冲器。所述一个或多个存储器缓冲器单元可以例如是共享存储器缓冲器单元,即数据处理系统10可以包括一个或多个共享存储器缓冲器单元42、44、46、48。
[0047]共享存储器可以是可以被执行多个任务的多个处理单元16、18、20访问的存储器,以例如在它们之间提供通信或避免冗余副本。例如,由第一处理单元16执行的第一任务的输出缓冲器可以被改变成由第二处理单元18执行的第二任务的输入缓冲器,所述第二处理单元18可以将第一处理单元16的处理结果接收为输入以进一步处理,而不复制或移动数据。不同任务之间的内部存储器共享缓冲器可以减少存储器负荷以及对访问外部存储设备以为了中间结果的需要。所示的数据处理系统10可以减少存储器负荷和功耗,同时提供可扩展的体系结构以用于添加附加图像或视频处理加速器或其它处理单元。
[0048]数据处理系统10可以包括切换单元50,切换单元50被布置成将所述多个处理单元16、18、20连接到所述一个或多个共享存储器缓冲器单元42、44、46、48。切换单元50可以例如是叉线式开关或被布置成将所述处理单元16、18、20连接到一个或多个共享存储器缓冲器单元42、44、46、48的任何其它切换设备或多路复用器。
[0049]参照图2,图2示意性地示出了第一流链的第一例子的图。所示的流链可以例如包括视频处理系统的处理单元。它可以例如包括视频直接存储器存取单元52(VDMA)、尺寸调整和增强过滤器单元54 (REF)、小波编码/解码单元(WCD)以及压缩数据直接存储器存取单元56(CDMA)。用于执行其它任务的其它处理单元,例如,其它图像或视频编码和解码、运动补偿帧速率转换或3D视频处理可以被用于视频处理系统中的流链,例如,图像直接存储器存取单元(IDMAC)或实时直接存储器存取单元(RDMA)。
[0050]参照图3,图3示意性地示出了数据处理系统的第二实施例的例子的图。仅将详细描述不同于图1中所示的数据处理系统的块。所示的数据处理系统60可以被布置成执行任务的处理流,例如,使用图2中所示的流链。任务调度可以由例如精简指令集控制器单元(未示出)的控制器单元启用。任务迭代可以由具有输入队列62的任务调度器控制器单元启用。
[0051]当使用图2中所示的流链执行处理流的时候,第一任务可以被添加到任务输出队列64以用于由VDMA处理单元52的执行。处理单元52、54、56、58、61可以经由切换单元80被连接到共享存储器缓冲器74、76、80以进行读和写访问。在完成关联处理流的第一任务的时候,任务状态事件可以被发送到仲裁单元66,仲裁单元66可以将处理流的下一个任务添加到任务调度器控制器输入队列62。任务调度器控制器单元可以将下一个任务分配到任务输出队列68以由处理单元54进行处理。在完成任务以及生成对应的任务状态事件之后,仲裁单元66可以迭代地将处理流的下一个任务添加到任务调度器控制器输入队列62,其然后可以被添加到任务输出队列70。任务然后可以被分配到被连接到任务输出队列70的两个处理单元58、61的处理单元58。使用任务输出队列72和处理单元56,另一个任务迭代可紧随其后。属于其它处理流的其它任务可以在所描述的任务的调度之间或之后的任何时间被调度。
[0052]参照图4,图4示意性地示出了数据处理系统的第三实施例的例子的图。将仅详细描述不同于图1中所示的数据处理系统的块。所示的数据处理系统90可以是视频处理系统,其包括任务调度设备92、可以是共享存储器缓冲器单元的多个内部存储器缓冲器单元94、96、98、100、102、104、可以被布置成编码或解码接收的输入视频数据或将视频编码算法提供给任务调度设备92的处理单元的视频编码单元106、以及被布置成提供专用图形处理,例如,用于创建视频帧的图形叠加的图形处理单元108(GPU)。任务调度设备92可以例如包括任务调度器控制器单元110或第一控制器单元,任务调度器控制器单元110或第一控制器单元被布置成将任务分配到多个处理单元112、114、116、118、120、122、124。处理单元可以例如包括VDMA单元112、CDMA单元120、IDMAC单元122和RDMA单元124。为了接收输入视频数据,数据处理设备90可以例如包括输入数据接口 126,诸如可连接到相机传感器的相机传感器接口。它可以包括可连接到诸如监视器或其它显示屏幕的显示单元的数据输出控制器和接口 128,诸如显示控制器和接口。处理单元112、114、116、118、120、122、124可以经由例如是叉线式开关(CBS)的切换单元130可连接到数据处理系统90的内部存储器缓冲器单元94、96、98、100、102、104。数据处理系统90可以通过外部存储器接口 134(EMI)可连接到外部存储设备132。共享存储器单元可以例如经由一个或多个处理单元被连接到外部存储器设备132。
[0053]数据处理系统90可以被布置成将任务的处理流应用于通过数据输入接口 126接收的输入数据。例如,如果需要,接收的输入视频数据可以被小型化并进行压缩。压缩的视频帧可以例如被存储在位于外部存储器设备132内的压缩视频帧缓冲器136。为了压缩和解压,视频编解码器106可以使用位于外部存储器132内的参考缓冲器138。GPU可以例如被连接以使用共享存储器缓冲器104以用于提供可以被视频内容覆盖的图形。位于外部存储器132内的图形帧缓冲器140可以被连接以接收图形内容。压缩的视频数据可以受到时间插值。专用于显示视频内容的处理流可以包括使用CDMA处理单元102访问来自存储器的压缩的视频数据并且应用解码和大型化。用于显示的视频然后可以例如进行色彩空间转换(CSC)并且可以与例如由GPU108提供的并保持在图形帧缓冲器136内的图形叠加组合。在应用进一步显示增强之后,内容,即,解码的视频和组合的图形,可以被递送到显示控制器和接口 128。
[0054]任务调度可以例如由任务调度器控制器单元110或外部处理设备启动,或任务调度设备92可以包括被布置成发起所述一个或多个处理流的第二控制器单元142。所述第二控制器单元还可以被布置成终止处理流。所述第二控制器单元142可以例如是提供高性能和高速操作的精简指令集计算(RISC)设备,或者其可以是另一个处理设备或微控制器设备。
[0055]参照图5,图5示意性地示出了第二流链的例子的图。流链可以例如由图4所示的数据处理系统90实现。粗箭头可以指的是被处理的内容数据,诸如视频数据,而细箭头可以指的是由任务调度器控制器单元110接收以及提供的信号和事件。可以例如是RISC设备的第二控制器单元142可以被布置成配置某一任务的任务参数,并将其释放到仲裁单元(未示出)。仲裁单元可以将可以被认为是主要任务的任务释放到任务调度器控制器单元110 (TSC)0任务调度器控制器单元110可以被布置成检查当前主要任务的输入和输出缓冲器的可用性,并且将通过共同缓冲器关联的相关任务标记为次要任务。当缓冲器是可用的时候,任务调度器控制器单元110可以被布置成将主要任务释放到与能够处理该任务的处理单元相关联的任务输出队列。假使发现任务已经在队列中,它可以被标记为在“排队中”以用于未来的分类。仲裁单元可以将下一个任务释放到任务调度器控制器单元110。
[0056]所示的流链可以是事件驱动的。在由第二控制器单元142接收初始命令之后,TSCllO可以接收要被处理的数据在外部存储器132中是可用的信息以及来自内部存储器缓冲器94的缓冲器可用性信息。假使数据和处理单元是可用的,TSCllO可以将任务分配到处理单元,例如直接存储器存取单元,诸如VDMAl 12以用于执行。VDMA112可以被布置成在完成任务之后向TSCllO用信号通知任务状态事件。一旦接收到VDMA任务状态事件,则TSCllO可以被布置成检查输入和输出缓冲器的可用性,其中充当了用于VDMA112的输出缓冲器的缓冲器94现在可以是将要被下一个处理单元114处理的数据保持在流链中的输入缓冲器。处理单元114的输出缓冲器可以例如是缓冲器单元96。假使输入和输出缓冲器94,96是可用的,TSCllO可以将被处理的流链中的下一个处理分配到处理单元114。在从处理单元114接收到用信号通知任务处理的完成的任务状态事件之后,TSCllO可以再次检查缓冲器96和缓冲器98的缓冲器可用性,缓冲器96现在可以充当处理设备116的输入缓冲器,并且然后可以被布置成将处理流的下一个任务分配到处理单元116。在从处理单元接收到用信号通知所分配的任务已成功完成的任务状态事件时,TSCllO可以再次检查缓冲器98的可用性,将处理流的下一个任务分配到流链中的下一个处理单元120。在所示的示例中,处理单元120可以是被布置成给外部存储器132提供处理的输出数据的直接存储器存取单元。一旦接收到指示成功完成处理流的最后任务的任务状态事件,TSCllO可以给可以被布置成终止处理流的第二控制器单元142提供指示。
[0057]在所描述的方法的情况下,可以减小由选择下一个任务的程序引起的处理开销。可以通过使用共享存储器缓冲器减少或避免缓冲器之间的处理数据的复制。当处理处理流链时,可能不需要外部存储器副本,除了在流链开始处加载要被处理的数据以及在流链的末端处将处理结果输出到外部存储器132。可以增加数据处理系统的任务吞吐量。由所示的流链执行的处理流可以是可以至少部分地并行执行的众多处理流中的一个。处理流可以是管线的。TSCllO可以从不同流链的处理单元接收任务状态事件。利用很少的开销搜索要分配的下一个任务是可能的,因为只有事件相关任务可以被检查。
[0058]数据处理系统的响应时间例如由于快的任务仲裁和多线程架构而可以很快。这可以有助于减少处理瓶颈,降低等待时间和避免线端阻塞。
[0059]参照图6,图6示意性地示出了图示当处理视频数据时的控制流层级。仅举一个例子,示出了视频序列的一组图像帧144。诸如微控制器或RISC处理器的第二控制单元可以执行帧的调度,即决定接下来将哪个帧分配到数据处理系统的任务调度设备。流参数可以在帧间基础上被调整。例如,当使用例如根据MPEG (运动图像专家组)标准的编码或解码,例如MPEG-1、MPEG-2或MPEG-4的时候,帧组或图象组可以没有被连续编码和解码,并且第二控制器单元可以被布置成选择下一个帧以发送到任务处理设备。
[0060]由任务调度设备执行的帧内级调度可以例如被应用到单一视频或图像帧146,其可以被划分成块或页面以进行进一步处理。页面可以是由运行的一个任务处理的视频帧的一部分。
[0061]页内级调度和处理可以被应用于帧的页面148,并且可以由专用加速引擎或数据处理系统的其它处理单元执行。
[0062]参照图7,图7示意性地示出了共享缓冲器单元的例子的图。在流链中,可以通过共享缓冲器在由流链的处理单元执行的任务之间传递数据。共享缓冲器单元可以例如是桶形移位器BS,桶形移位器BS包括例如被第一处理单元上执行的任务设置的写指针WP和例如被流链中的继第一处理单元之后的第二处理单元设置的读指针RP。缓冲器架构可以例如是单输入单输出(SISO)缓冲器架构。读阈值R_THR可以取决于在单一读访问中读取的数据量。写阈值W_THR可以取决于在单一写访问中要写入到缓冲器的数据量。如果WP-RP>R_THR被发现为真,则缓冲器BS可以被认为是自由读取。如果BS- (WP-RP?ff_THR被发现为真,则缓冲器BS可以被认为是自由写入。其它可能的缓冲器架构可以包括单输入多输出(SMO)缓冲器架构,其中一个写指针和多个读指针可以被使用,并且不同的任务可以被允许设置它们的读指针。
[0063]参照图8,图8示意性地示出了第三流链150和关联缓冲器的例子的图。在所示的例子中,流链可以由被连接在因果链中的处理单元REF、WCD、CDMA和IDMAC组成,其中所述流可以指示在馈送了 CDMA和IDMAC以推断流链的WCD之后第一处理单元是REF。流链中由其加速器数AN标识的每个处理单元或加速器单元可以分配由其任务数TN标识的任务,并且每个任务可以具有关联的输入缓冲器IB和输出缓冲器0B,每个都具有缓冲器号BN ;关联的读和写指针R_P、W_P ;读和写阈值THR_I^P THR_W,并且将任务输入到缓冲IT和将任务输出到缓冲0T。所示的箭头可以指示所示的任务描述符152中的哪个可以对应于由特定处理单元执行的任务,以及缓冲器描述符154中的哪个可以标识关联的任务描述符的输入和输出缓冲器。
[0064]参照图9,图9示意性地示出了缓冲器分类逻辑的例子的图。缓冲器分类逻辑可以是队列控制单元或任务调度设备的任务调度器控制器单元的一部分,并且可以被布置成提供缓冲器可用性信息。它可以提供缓冲器当前是否是自由读取的信息以及可以是任务输入缓冲器或自由写入,并且可能充当任务输出缓冲器,其中该信息可以取决于一种类型的缓冲器使用,无论是带有一个读指针R_P的SISO或带有三个读指针R_P的SM0。所示的缓冲器分类逻辑可以包括第一输出缓冲器156、第二输出缓冲器158和第三输出缓冲器160的分类电路,其中每个分类电路可以接收其对应的读指针R_P、写指针W_P、读阈值THR_R、写阈值THR_W和整体缓冲器大小BUFF_SIZE输入参数,并可以提供对应的“自由读取缓冲器”和“自由写入缓冲器”信息。
[0065]参照图10,图10示意性地示出了任务调度器控制器单元(TSC)的性能的例子的流程图,其中CT可以是当前被TSC调度的当前任务,EOF (文件的结束)可以指的是处理流的最后任务,TPBN可以指的是任务参数缓冲器数,FLW_NUM可以指的是流数,DB可以指的是任务参数的数据库以及BD可以指的是缓冲器描述符。当有任何主要或次要任务被检查的时候,即当被调度的任务处于“检查中(0N_CHECK)”状态的时候,TSC可以被激活。在这种情况下,TSC还没有作出如何处理该任务的决定。当TSC输入队列是空的并且没有任务被检查的时候,TSC可以处于空闲状态。当在队列中找到任务的时候,可以检查与当前任务相关联的缓冲器是否可用。如果它们可用,则可以通过将各自任务的状态标记为“排队中(IN_QUEUE)”将任务添加到任务输出队列。在缓冲器准备好检查之后,TSC可以更新关联到共享共同缓冲器的当前任务的其它任务。然后,TSC可以被布置成检查是否有任务处于停用模式。停用模式意味着由于内部处理的原因,任务执行已被处理单元暂停。如果发现任务处于停用模式,则它的指针的读取操作是通过TSC执行的并且被更新到对应的处理单元或加速器。否则,TSC可以切换到空闲模式。
[0066]参照图11,图11示意性地示出了搜索下一个任务以检查任务调度器控制器单元的模块的例子。所示的模块可以例如对应于如图10的部分所示的“搜索下一个要检查的任务”块。所示的TSC的模块可以提供选择逻辑的示例实现以用于选择在当前运行中要检查的任务。可以执行对数搜索。BS可以指的是桶形移位器缓冲器存储器,以及RT_Task可以指的是与每个任务相关联的比特,指不该任务是否是实时任务。当实时任务存在于“检查中”模式的时候,TSC可以提供最大QoS。如果发现任务是实时任务,则它可以在其它任务可以接收调度服务之前首先被服务。
[0067]参照图12,图12示意性地示出了用于在数据处理系统内进行任务调度的方法的实施例的例子的图。图12中所示的方法允许将所描述的数据处理系统的优点和特性实现为用于在数据处理系统内进行任务调度的方法的一部分。所述方法是一种用于在数据处理系统内进行任务调度的方法,包括带有任务调度控制器单元的任务调度设备;以及多个处理单元,所述处理单元中的至少一些适于执行多个任务的一个或多个分配的任务。所述方法包括给所述任务调度设备提供所述多个任务162 ;将所述多个任务的任务分配到所述多个处理单元164 ;对于每个分配的任务,至少给所述任务调度设备提供指示所述分配的任务的执行何时完成的任务状态事件166 ;以及响应于接收与一个或多个先前分配的任务相关联的一个或多个所述任务状态事件,由所述任务调度器控制器单元将所述多个任务的一个或多个分配到所述处理单元的适于执行所述分配的任务的对应的处理单元168。
[0068]所述方法可以包括在流链缓冲器单元中存储定义了一个或多个处理流和一个或多个关联流链的一个或多个任务参数表,每个流链包括所述多个处理单元中的一个或多个。所述方法可以进一步包括在任务寄存器中存储所述多个任务,所述多个任务中的每个与一个或多个所述多个任务的一个或多个处理流相关联。
[0069]可编程装置可以被提供用于至少部分地执行所示方法的步骤。计算机程序产品可以包括当在可编程装置上运行的时候,执行如上所述的方法步骤的代码部分。
[0070]本发明也可以在用于在计算机系统上运行的计算机程序中被实现,至少包括用于当在诸如计算机系统的可编程的装置上运行时用于执行根据本发明的方法,或使得可编程的装置能够执行根据本发明的设备或系统的功能的代码部分。
[0071]计算机程序是一系列指令,诸如特定应用程序和/或操作系统。计算机程序可以例如包括以下中的一个或多个:子例程、函数、程序、对象方法、对象实现、可执行的应用、小程序、小服务程序、源代码、对象代码、共享库/动态装载库和/或设计用于在计算机系统上的执行的其它指令序列。
[0072]计算机程序可以在计算机可读存储介质上被内部地存储或经由计算机可读传输介质传输到计算机系统。所有或者一些计算机程序可以被永久地、可移除地提供在计算机可读介质上或远程地耦合到信息处理系统。计算机可读介质可以包括,例如但不限于任何数目的以下:包括磁盘和磁带存储介质的磁存储介质;光学存储介质,诸如光盘介质(例如,CD-ROM、CD-R等等)以及数字视盘存储介质;非易失性存储器存储介质,包括基于半导体存储器单元,诸如FLASH存储器、EEPR0M、EPR0M、R0M ;铁磁数字存储器;MRAM ;易失性存储介质,包括寄存器、缓冲器或缓存、主存储器、RAM、等等;以及数字传输介质,包括计算机网络、点对点电信设备、以及载波传输介质,仅举几例。
[0073]计算机过程通常地包括执行(运行)程序或程序的部分,现有的程序值和状态信息,以及通过操作系统用于管理过程的执行的资源。操作系统(OS)是管理一台计算机的资源共享以及提供给程序员用于访问这些资源的界面的软件。操作系统过程系统数据和用户输入,以及通过配置和管理任务以及内部系统资源作为系统对用户和程序员的一项服务响应。
[0074]计算机系统可以例如包括至少一个处理单元、关联存储器和大量的输入/输出(I/O)设备。当执行计算机程序时,计算机系统根据计算机程序处理信息并且经由I/O设备产生所得到的输出信息。
[0075]在前面的说明中,参照本发明实施例的特定示例已经对本发明进行了描述。然而,将明显的是,在不脱离如所附权利要求中阐述的本发明的更宽范围的情况下,可在其中做出各种修改和变化。
[0076]如在此讨论的连接可以是适于例如经由中间设备传输来自或去往相应的节点、单元或设备的信号的任何类型的连接。因此,除非暗示或另外表明,所述连接例如可以是直接连接或间接连接。所述连接可以被图示或描述为涉及单一连接、多个连接、单向连接、或双向连接。然而,不同实施例可以改变连接的实现。例如,可以使用单独单向连接而不是双向连接,并且反之亦然。而且,多个连接可以被替换为连续地或以时间复用方式传输多个信号的单一连接。同样地,携带多个信号的单一连接可以被分离成携带这些信号的子集的各种不同的连接。因此,存在用于传输信号的许多选项。
[0077]本发明所描述的每个信号可以被设计为正逻辑或负逻辑。在负逻辑信号的情况下,在所述逻辑真状态对应于逻辑电平O时,所述信号是低有效。在正逻辑信号的情况下,在所述逻辑真状态对应于逻辑电平I时,所述信号是高有效。注意,在此描述的任何信号可以被设计为负逻辑信号或正逻辑信号。因此,在替代实施例中,那些被描述为正逻辑信号的信号可以被实现为负逻辑信号,以及那些被描述为负逻辑信号的信号可以被实现为正逻辑信号。
[0078]本领域所属技术人员将认识到逻辑块之间的界限仅仅是说明性的并且替代实施例可以合并逻辑块或电路元件或在各种逻辑块或电路元件上强加替代的分解功能。因此,应了解在此描述的架构仅仅是示例性的,并且事实上实现相同功能的很多其它架构可以被实现。例如,任务调度器控制器单元24、仲裁单元28以及任务输出队列控制器单元36、38、40可以被提供为不同电路或设备或集成在单一设备中。或者,流链缓冲器单元22可以被提供连接到或集成在任务调度设备12中。
[0079]为了实现相同功能的组件的任何布置是有效地“关联”使得所需的功能得以实现。因此,在此组合以实现特定功能的任何两个元件可以被看作彼此“相关联”使得所需的功能得以实现,而不论架构或中间组件。同样地,如此关联的任何两个组件还可以被认为是彼此被“可操作连接”或“可操作耦合”以实现所需的功能。
[0080]此外,本领域所属技术人员将认识到上述描述的操作之间的界限只是说明性的。多个操作可以组合成单一的操作,单一的操作可以分布在附加操作中,并且操作可以至少在时间上部分重叠被执行。而且,替代实施例可以包括特定操作的多个实例,并且操作的顺序在各种其它实施例中可以更改。
[0081 ] 又如,在一个实施例中,说明的例子可以被实现为位于单一集成电路上的电路或在相同设备内的电路。例如,数据处理系统10在单一集成电路中可以作为片上系统被提供。替代地,例子可以被实现为以适当的方式彼此互联的任何数目的单独集成电路或单独设备。例如,任务调度设备12和处理单元16、18、20可以作为单独集成电路被提供。
[0082]又如,示例或其一部分可以诸如以任何合适类型的硬件描述语言被实现为物理电路的软或代码表示,或被实现为能够转化成物理电路的逻辑表示的软或代码表示。
[0083]而且,本发明不限于在非程序化硬件中实现的物理设备或单元,但也可以应用在可编程的设备或单元中,这些设备或单元通过按照合适的程序代码操作能够执行所期望的设备功能,诸如主机、微型计算机、服务器、工作站、个人计算机、笔记本、个人数字助理、电子游戏、汽车和其它嵌入式系统、手机和各种其它无线设备,在本申请中通常表示为“计算机系统”。
[0084]然而,其它修改、变化和替代也是可能的。说明书和附图相应地被认为是从说明性的而不是严格意义上来讲的。
[0085]在权利要求中,放置在括号之间的任何参照符号不得被解释为限制权利要求。单词“包括”不排除除了权利要求中列出的那些之外的其它元件或步骤的存在。此外,如在此使用的词语“一”或“一个”被定义为一个或不止一个。而且,即使当同一权利要求包括介绍性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”的不定冠词时,在权利要求中诸如“至少一个”以及“一个或多个”的介绍性短语的使用也不应该被解释成暗示通过不定冠词“一”或“一个”引入的其它权利要求元素将包括这样介绍的权利要求元素的任何特定权利要求限制成仅包含这样的元素的发明。对于定冠词的使用也是如此。除非另有说明,使用诸如“第一”以及“第二”的术语来任意地区分这样的术语描述的元素。因此,这些术语不一定旨在指示这样的元素的时间或其它优先次序。在相互不同的权利要求中记载某些措施的事实并不指示这些措施的组合不能被用于获取优势。
[0086]虽然结合特定装置在上面描述了本发明原理,但是应清楚了解该描述仅仅是通过例子进行的,而非限定本发明的范围。
【权利要求】
1.一种数据处理系统(10),包括: 任务调度设备(12),所述任务调度设备(12)被布置成调度多个任务;以及 多个处理单元(16、18、20),所述多个处理单元(16、18、20)中的至少一些适于执行所述多个任务的一个或多个分配的任务,并且对于每个分配的任务,至少给所述任务调度设备(12)提供指示所述分配的任务的执行何时完成的任务状态事件; 其中所述任务调度设备包括任务调度器控制器单元(24),所述任务调度器控制器单元(24)被布置成响应于接收与一个或多个先前分配的任务相关联的所述任务状态事件中的一个或多个,将所述多个任务的一个或多个分别分配到所述处理单元的适于执行所述分配的任务的对应的处理单元。
2.根据权利要求1所述的数据处理系统(10),包括流链缓冲器单元(22),所述流链缓冲器单元(22)被布置成存储定义了所述多个任务中的一个或多个的一个或多个处理流的一个或多个任务参数表,所述流链中的每个包括所述多个处理单元中的一个或多个;其中所述任务调度设备包括被布置成存储所述多个任务的任务寄存器(14),所述多个任务中的每个与所述一个或多个处理流相关联;并且其中所述任务调度器控制器单元被布置成根据所述一个或多个处理流中的对应的处理流来分配所述多个任务中的所述一个或多个。
3.根据权利要求1或2所述的数据处理系统,其中所述数据处理系统是视频处理系统。
4.根据任何前述权利要求所述的数据处理系统,其中所述任务调度设备被布置成接收和调度一个或多个实时任务。
5.根据任何前述权利要求所述的数据处理系统,其中所述任务调度器控制器单元包括输入队列,并且所述任务调度设备包括仲裁单元(28),所述仲裁单元(28)被布置成接收所述任务状态事件以及将所述任务状态事件插入所述输入队列中。
6.根据任何前述权利要求所述的数据处理系统,其中所述任务调度设备被布置成将任务分配到所述多个处理单元的不同的处理单元以用于至少部分并行执行所述任务。
7.根据任何前述权利要求所述的数据处理系统,其中所述任务调度设备包括多个任务输出队列(30、32、34),每个都能连接到所述多个处理单元的对应的处理单元,并且其中所述任务调度器控制器单元被布置成通过将所述多个任务中的一个或多个插入所述任务输出队列的一个或多个中,将所述多个任务中的所述一个或多个分配到所述多个处理单元的适于执行所述分配的任务的所述对应的处理单元。
8.根据权利要求7所述的数据处理系统,其中所述任务调度设备包括连接到所述多个输出队列的多个队列控制单元(36、38、40),所述多个队列控制单元中的每个被布置成响应于对应的处理单元的可用性信息,将任务从连接的任务输出队列分配到所述对应的处理单元。
9.根据权利要求8所述的数据处理系统,其中所述多个队列控制单元中的至少一个被布置成响应于所述任务的优先级,将任务从连接的任务输出队列分配到对应的处理单元。
10.根据任何前述权利要求所述的数据处理系统,包括一个或多个共享存储器缓冲器单元(42、44、46、48)。
11.根据权利要求10所述的数据处理系统,包括切换单元(50),所述切换单元(50)被布置成将所述多个处理单元连接到所述一个或多个共享存储器缓冲器单元。
12.根据任何前述权利要求所述的数据处理系统,其中所述任务调度设备包括第二控制器单元(142),所述第二控制器单元(142)被布置成发起所述一个或多个处理流。
13.一种用于在数据处理系统中进行任务调度的方法,所述数据处理系统包括带有任务调度控制器单元的任务调度设备;以及多个处理单元,所述多个处理单元中的至少一些适于执行多个任务的一个或多个分配的任务;所述方法包括: 给所述任务调度设备提供所述多个任务(162); 将所述多个任务的任务分配到所述多个处理单元(164); 对于每个分配的任务,至少给所述任务调度设备提供指示所述分配的任务的执行何时完成的任务状态事件(166);以及 响应于接收与一个或多个先前分配的任务相关联的所述任务状态事件中的一个或多个,由所述任务调度器控制器单元将所述多个任务中的一个或多个分配到所述处理单元的适于执行所述分配的任务的对应的处理单元(168)。
14.一种 计算机程序产品,包括当在可编程装置上运行的时候,执行根据权利要求13所述的方法步骤的代码部分。
【文档编号】G06F1/00GK103765384SQ201180073164
【公开日】2014年4月30日 申请日期:2011年9月2日 优先权日:2011年9月2日
【发明者】什洛莫·比尔-金戈尔德, 埃兰·魏因加滕, 迈克尔·扎鲁宾斯基 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1