CN1602467A - 具有多个处理器的数据处理系统、用于具有多个处理器的数据处理系统的任务调度程序及用于任务调度的对应方法 - Google Patents
具有多个处理器的数据处理系统、用于具有多个处理器的数据处理系统的任务调度程序及用于任务调度的对应方法 Download PDFInfo
- Publication number
- CN1602467A CN1602467A CN02824739.6A CN02824739A CN1602467A CN 1602467 A CN1602467 A CN 1602467A CN 02824739 A CN02824739 A CN 02824739A CN 1602467 A CN1602467 A CN 1602467A
- Authority
- CN
- China
- Prior art keywords
- task
- processor
- stream
- data
- budget
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/485—Resource constraint
Abstract
本发明基于在具有多个处理器的数据处理系统中提供分布式任务调度的思想。因此,提供了一种数据处理系统,包括用于处理数据对象流的第一和至少一个第二处理器、通信网络及存储器,其中所述第一处理器将来自数据对象流的数据对象传送到第二处理器。所述第二处理器是能够交叉处理第一和第二任务的多任务处理器,其中所述第一和第二任务分别处理第一和第二数据对象流。所述数据处理系统还包括每个所述第二处理器一个的任务调度装置,其中所述任务调度装置可操作布置在所述第二处理器和所述通信网络之间,并控制所述第二处理器的任务调度。
Description
本发明涉及具有多个处理器的数据处理系统、用于具有多个处理器的数据处理系统的任务调度程序及用于任务调度的对应方法。
用于高性能、数据相关的媒体处理,如高清晰MPEG解码,的异质多处理器体系结构是公知的。媒体处理应用可以描述为一组仅通过单向数据流交换信息的并发执行任务。G.Kahn在1974年就已经介绍了一种此类应用的正式模型,Proc.of the IFIP congress 74,8月5-10日,Stockholm,Sweden,North-Holland publ.Co,1974,pp.471-475上的“The Semantics of a Simple Language for ParallelProgramming”,随后还有Kahn和MacQueen于1977年在InformationProcessing 77,B.Gilchhirst(Ed.),North-Holl and publ.1977,pp.993-998所著“Co-routines and Networks of ParallelProgramming”的可操作性描述。这种正式模型现在一般称为Kahn过程网络。
一个应用是一组可并发执行的任务。信息只能通过单向数据流在任务之间交换。任务应当只确定性地通过对预定数据流的读写动作通信。数据流以FIFO特性为基础进行缓冲。由于进行了缓冲,因此通过一个流进行通信的两个任务不必在单个读或写动作时同步。
在流处理过程中,对一个数据流的连续操作是由不同的处理器执行的。例如,第一个流可能包括一幅图象的象素值,这些值由第一处理器处理,以产生8×8象素块的DCT(离散余弦变换)系数块的第二个流。第二处理器可以处理该DCT系数块,以便为每个DCT系数块产生经过选择和压缩的系数块。
图1示出了对根据现有技术得知的将应用映射到处理器的说明。为了实现数据流处理,提供了多个处理器,其中每个处理器都能够重复执行一个特定的操作,每次操作都是利用来自数据对象流中下一个数据对象的数据和/或产生这个数据流中的下一个数据对象。流从一个处理器传送到另一个,从而由第一处理器产生的流可以由第二处理器进行处理,等等。从第一到第二处理器传送数据的一种机制是通过将由第一处理器产生的数据块写到存储器中。
网络中的数据流进行了缓冲。每个缓冲器都实现为FIFO,明确地具有一个写入装置和一个或多个读取装置。由于这种缓冲,写入装置和读取装置不需要手动地同步通道上的单个读写动作。从没有足够可用数据的通道读取使得读取任务阻塞。处理器可以是只具有弱可编程性的专用硬件功能单元。所有处理器都并行运行并执行它们各自的控制线程。它们一起执行Kahn类型应用,其中每个任务都映射到单个处理器。处理器允许多任务,即多个Kahn任务可以映射到单个处理器。
本发明的一个目的是改进Kahn类型数据处理系统的操作。
这个目的是通过根据权利要求1的数据处理系统、根据权利要求19的任务调度程序及根据权利要求32用于任务调度的对应方法解决的。
本发明基于在具有多个处理器的数据处理系统中提供分布式任务调度的思想。因此,提供了一种包括用于处理数据对象流的第一和至少一个第二处理器及通信网络的数据处理系统,其中所述第一处理器将来自数据对象流的数据对象传送到第二处理器。所述第二处理器是能够交叉处理第一和第二任务的多任务处理器,其中所述第一和第二任务分别处理第一和第二数据对象流。所述数据处理系统还包括每个所述第二处理器一个的任务调度装置,其中所述任务调度装置可操作布置在所述第二处理器和所述通信网络之间,并控制所述第二处理器的任务调度。
由于它使得第二处理器可以自治,因此每个第二处理器都具有其自己的任务调度程序的分布式任务调度是有利的,其中自治是可升级系统的先决条件。
在本发明的一方面,所述任务调度装置在从所述第二处理器接收到请求后立即确定将由所述第二处理器处理的下一个任务,并将所述下一任务的标识转发到所述第二处理器。所述第二处理器以预定的时间间隔请求下一个任务,其中所述时间间隔代表所述第二处理器的处理步骤。因此可以实现无优先权的任务调度。
在本发明优选的一方面,所述任务调度装置包括流表和任务表。所述流表用于存储与映射到所关联处理器上任务关联的每个数据流的参数,其中所述参数包括用于读取的有效数据量、用于写入的可用空间量、关于运行任务是否在读或写所述流时阻塞的信息和/或将所述流关联到任务的配置信息。所述任务表用于管理关联到所述第二处理器的不同任务,其中所述任务表包含指示哪个流关联到所述任务的流表索引、每个任务一个表示是否允许任务运行的使能标志和/或表示每个任务可用处理预算的预算计数器。在与第二处理器关联的任务调度装置中提供流表和任务表提高了数据处理系统的局部控制和管理能力。
在本发明的另一方面,所述任务调度装置检查所述流表中的所有流并确定哪个所述流允许任务前进。如果a)该流具有可读的有效数据或可写的可用空间,b)任务未请求比该流中可用数据或空间更多的有效数据或空间和/或c)选项a)、b)配置成与任务前进无关,则流允许前进。
在本发明的另一方面,所述任务调度装置检查所述任务表中的任务并确定允许哪个所述任务运行。如果与所述任务关联的所有流都允许运行且设置了所述任务的使能标志,则允许该任务运行。
在本发明的另一方面,当从所述第二处理器接收到请求后所述任务调度装置立即选择当前任务之后接下来要处理的任务,其中如果当前任务仍然允许运行且所述任务表中的预算计数器非0,则允许当前任务继续运行。否则,由所述任务调度装置确定的下一个任务将被选作当前任务,并复位预算计数器。从而保证每个映射到第二处理器的任务都能有规律地获得在第二处理器上执行的机会。
在本发明的另一方面,在所述第二处理器请求下一任务之前所述任务调度装置选择下一个要处理的任务,从而所选下一任务的标识可以立即返回所述第二处理器。因此,数据处理系统的处理速度提高了。
在本发明的另一方面,所述任务调度装置包括用于控制当前任务预算计数器的预算计数器装置。为每个任务提供一个预算计数器确保在处理不同任务过程中公平的实现。
本发明还涉及用于数据处理系统的任务调度程序。所述系统包括用于处理数据对象流的第一和至少一个第二处理器、通信网络及存储器,其中所述第一处理器布置成将来自数据对象流的数据对象传送到第二处理器。任务调度程序关联到所述第二处理器中的一个,可操作布置在所述第二处理器和所述通信网络之间;并控制所述关联第二处理器的任务调度。
本发明还涉及在数据处理系统中用于任务调度的方法。所述系统包括用于处理数据对象流的第一和至少一个第二处理器、通信网络及存储器,其中所述第一处理器布置成将来自数据对象流的数据对象传送到第二处理器。所述系统对每个所述第二处理器都包括一个任务调度程序。任务调度程序控制所述第二处理器的任务调度。
在本发明的一方面,任务调度程序在可编程的第二处理器上实现。
本发明的其它实施方案在附加权利要求中描述。
参考附图,对本发明的这些和其它方面进行更详细的描述;附图示出:
图1是对根据现有技术将应用映射到处理器的说明;
图2是基于流的处理系统的体系结构示意方框图;
图3是根据优选实施方案的任务切换过程的流程图;
图4是对图2系统中同步操作和I/O操作的说明;及
图5是根据图2更新每个外壳中局部空间值的机制。
图2示出了根据本发明一种优选实施方案用于处理数据对象流的处理系统。该系统可以分成不同的层,即计算层1、通信支持层2和通信网络层3。计算层1包括CPU 11和两个处理器或协处理器12a、12b。这仅仅是为了示例,很显然,更多的处理器可以包括在系统中。通信支持层2包括关联到CPU 11的外壳21和分别关联到处理器12a、12b的外壳22a、22b。通信网络层3包括通信网络31和存储器32。
处理器12a、12b优选地是专用处理器,每个都专用于执行有限范围的流处理。每个处理器都布置成重复地将相同的处理操作应用到连续的流数据对象。处理器12a、12b可以每个都执行不同的任务或功能,例如变长解码、运转周期解码、运动补偿、图象缩放或执行DCT变换。在运行过程中,每个处理器12a、12b都对一个或多个数据流执行操作。操作可以包括例如接收流并产生另一个流、或者接收流但不产生新的流、或者不需要接收流或修改所接收到的流就可以产生流。处理器12a、12b能够处理由另一处理器12b、12a或由CPU 11产生的数据流、甚至是它们自己产生的数据流。流包括通过所述存储器32在处理器12a、12b之间来回传输的一连串数据对象。
外壳22a、22b包括面向作为通信层的通信网络层的第一接口。这一层对所有外壳是统一的或通用的。此外,外壳22a、22b还包括面向处理器12a、12b的第二接口,其中外壳22a、22b分别关联到处理器12a、12b。第二接口是任务级接口,并且为了能够管理所述处理器12a、12b的特殊需求而定制成面向所关联的处理器12a、12b。因此,外壳22a、22b具有作为第二接口的处理器专用接口,但为了方便在整个系统体系结构中外壳的重用,外壳的整体体系结构对所有处理器是通用和统一的,同时还允许对特定应用的参数化和采用。
外壳22a、22b包括用于数据传输的读/写单元、同步单元和任务切换单元。这三个单元利用所关联的处理器按主/从原则进行通信,其中处理器充当主机。因此,这三个单元分别由来自处理器的请求初始化。优选地,为了传递自变量值并等待所请求的值返回,处理器和这三个单元之间的通信是由请求-应答握手机制实现的。因此,通信是阻塞的,即各控制线程要等待它们的完成。
读/写单元优选地实现两种不同的操作,即使得处理器12a、12b能够从存储器读取数据对象的读操作和使得处理器12a、12b能够将数据对象写入存储器32的写操作。每个任务都具有预定的一组与数据流附着点对应的端口。这些操作的自变量是各端口的ID“port_id”、读/写将发生的偏移量“offset”及数据对象的可变长度“n_bytes”。端口是由“port_id”自变量选择的。该自变量是一个只对当前任务具有局部作用范围的小非负数。
同步单元实现两种同步操作来管理从空FIFO中读取或写入满FIFO时的局部阻塞情况。第一种操作,即getspace操作,是在实现为FIFO的存储器中请求空间,而第二种操作,即putspace操作,是请求释放FIFO中的空间。这些操作的自变量是“port_id”和可变长度“n_bytes”。
getspace操作和putspace操作是以同步的线性带或FIFO顺序执行的,同时在由所述操作获得的窗口内还支持随机存取读/写动作。
任务切换单元实现作为gettask操作的处理器任务切换。这些操作的自变量是“blocked”、“error”和“task_info”。
自变量“blocked”是一个布尔值,如果由于输入端口或输出端口上的getspace调用返回false而使得最后一个处理步不能成功完成,则该自变量设置为true。因此,任务调度单元很快就会得到通知:这个任务最好不要再次调度,除非新的“space”消息到达阻塞的端口。这个自变量值被视为一种不仅改进调度而且决不会影响功能性的建议。自变量“error”是一个布尔值,如果在最后一个处理步中处理器内部发生致命错误,则该自变量设置为true。例如,mepg解码的例子是出现未知的变长代码或非法的运动向量。如果这样,则外壳清除任务表使能标志以防止进一步调度,并且有一个中断发送到主CPU来修复系统状态。无疑,当前任务在CPU通过软件相互作用之前不会被调度。
关于外壳22和处理器12之间的任务级接口,外壳22和处理器12之间的边界是考虑以下观点绘制的:外壳允许对所有处理器重用其微型体系结构。外壳没有关于特定功能问题的语义知识。外壳构成关于整个通信系统的抽象概念。从处理器的观点看,不同的任务彼此是不知道的。
上面刚刚描述的操作是由来自处理器的读调用、写调用、getspace调用、putspace调用或gettask调用初始化的。
根据图2的系统体系结构支持多任务,这意味着几个应用任务可以映射到一个处理器。对于配置大范围的应用并在数据处理系统中的不同地方重新应用相同的硬件处理器,在实现体系结构的灵活性时多任务支持是很重要的。很清楚,多任务意味着当处理时需要一个任务调度单元来决定在哪个时间点哪个任务处理器必须执行以获得正确的应用前进。优选实施方案的数据处理系统目标在于无规律的数据依赖流处理和动态工作负荷,任务调度不是离线而是在线执行的,以便能够考虑实际情况。相对于固定的编译时调度,该任务调度是在运行时执行的。
优选地,处理器12显式地决定任务执行过程中它可以中断运行任务的时刻。因此,硬件体系结构不必在任意时间点都提供保存环境。处理器可以继续处理,直到它几乎没有或完全没有状态的点。这些就是处理器可以最容易地执行任务的时刻。
在这些时刻,处理器12向外壳22询问它接下来应当处理哪个任务。这种查询是通过gettask调用完成的。这种查询之间的时间间隔被视为处理步。通常,处理步包括读入一个或多个数据包、对获得的数据执行某些操作及写出一个或多个数据包。
任务调度单元驻留在外壳22中,实现gettask功能。处理器12在每个处理步之前都执行gettask调用。返回值是任务ID,一个表示任务环境的小非负数。从而,根据处理器12的请求,调度程序向处理器12提供下一个最合适的任务。这种结构可以看作是具有由处理器12提供的切换点的无优先权调度。调度单元不能中断处理器12;它等待处理器12完成一个处理步,然后请求新任务。
对于具有动态工作负荷、对临时超载情况的可预测特性、几个时钟周期内的下一任务选择及算法简单性、适于在每个外壳中用低成本硬件实现的应用,根据本发明的任务调度算法应当显示其有效性。
多任务应用是通过将适当的任务初始化(instantiating)到一个多任务处理器来实现的。任何一个任务的行为都不能对共享同一处理器的其它任务的行为造成负面影响。因此,调度程序防止需要比分配给其资源更多资源的任务妨碍其它任务的前进。
在典型情况下,所有任务工作负荷的总和优选地不超过处理器的计算能力,以允许媒体数据流的实时吞吐量。对于具有数据依赖行为的任务,临时超载情况可能发生在最坏的情况下。
假定处理步的短周期,由于它确保每个任务都能以足够高的频率得到服务,因此循环(round-robin)型任务选择适合我们的实时性能要求。
系统设计者在配置时将这种资源预算分配给每个任务。任务调度单元必须支持管辖(policing)策略以确保预算保护。调度程序通过将预算关联到任务的精确执行时间来实现资源预算的管制。调度程序利用时间片作为测量单位,即预定的固定个数的周期,通常大约是一个处理步的长度。任务预算以多个时间片给出。任务调度程序将运行预算初始化为新选择任务的预算。外壳在每个时间片将活动任务替换的运行预算递减。因此,预算与处理步的长度无关,并且调度程序将活动任务限定到由其预算给出的时间片个数。
这种每任务预算的实现有两方面的用途:共享一个处理器的任务的相对预算值控制任务对计算资源的划分,而绝对预算值控制会影响状态保存与恢复的相对开销的任务切换频率。
当活动任务阻塞通信时,运行预算被放弃。当阻塞任务返回调度预算时,下一个任务立即启动。因此,通过更频繁地消耗它们的预算,具有足够工作负荷的任务可以利用多余的计算时间。
处理器中任务的绝对预算决定这些任务的运行时间,从而决定处理器的任务切换率。反过来,处理器的任务切换率又与其所有流的缓冲大小有关。任务切换率越低意味着任务睡眠时间越长,从而导致更大的缓冲要求。因此,任务切换率优选地应当比较高,从而基本任务切换时间是不可接受的。理想地,处理器的任务切换时间应当比单个处理步短,从而允许每一次的任务切换。这将允许分配最低的绝对预算和最小的流缓冲。
根据本发明的任务具有动态工作负荷。它们可以是依赖于执行时间、流选择和/或包大小的数据。由于它不能预先确定任务是否可以前进,因此这种数据依赖性影响调度程序的设计。执行“最佳猜想”的调度单元作为根据本发明的一种实施方案进行了描述。通过在大多数情况下选择正确的任务,而在其它情况下恢复时只有有限的恶化,这种类型的调度程序是有效的。调度程序的目的是提高处理器的利用率,并进行调度使任务能够尽可能多地前进。由于任务的数据依赖性操作,因此它不能保证所选择的任务可以完成一个处理步。
如果一个任务至少有一些可用的工作负荷,则该任务是可运行的。如果任务配置成在配置时激活,则设置任务使能标志。调度标志也是一个配置参数,对每个流显示调度程序是否必须考虑这个流对于任务运行性的可用空间。空间参数保留流中的可用数据或空间,通过putspace操作在运行时被更新。可选地,如果任务的最后一个getspace查询没有得到足够的空间,则阻塞标志在运行时设置。
如果任务由于没有足够的空间而不能前进,则关于其一个流的getspace查询必定返回false。外壳22a、22b为每个流都保持一个阻塞标志,不包括最后一个getspace查询的结果值:
当出现这样一个阻塞标志时,任务就不能再运行,而且任务调度单元不会在后续的gettask请求时再次发出这个任务,直到其阻塞标志复位。这种机制帮助任务调度单元选择在处理器流I/O选择或包大小是数据依赖的且不能由调度程序预测的情况下仍能够前进的任务。
应当指出,在一次getspace请求失败后,活动任务可以发出第二次更少字节数的getspace查询,从而复位阻塞标志。当外部“putspace”增加阻塞流的空间时,外壳清除阻塞标志。
任务的运行性基于任务的可用工作负荷。所有与任务关联的流都必须有足够的输入数据或输出空间以允许至少一个处理步的完成。外壳,包括任务调度单元,不会解释媒体数据,也不明白数据包。每个任务的数据包大小可以不同,而且包大小可以是数据依赖的。因此,由于它不明白任务打算在哪个流请求多少空间,所以调度程序没有足够的信息来保证getspace动作的成功。
无须考虑有多少空间可用于任务执行或者是任务执行所要求的,通过选择至少对所有关联流都有一些可用工作负荷(即,空间>0)的任务,调度单元发出“最佳猜想”。不管足以完成单个处理步的量是多少,检查缓冲中是否有一些数据或空间可用,情况是:消耗和产生任务以相同的粒度大小同步。因此,如果数据或空间可用,那么这至少是执行一个处理步所需的数据或空间量。消耗和产生任务以相同的操作逻辑单位,即相同的处理步粒度,工作。例如,如果缓冲中有一些数据但不够,那么这表示产生任务当前是活动的,而且缺少的数据将足够快地达到,使得消耗任务等待而不是执行任务切换。
输入或输出流的选择可以依赖于要处理的数据。这意味着即使对于任务的有些关联流空间=0,只要它不访问这些流,任务就仍然可以运行。因此,调度程序要考虑每个流的调度标志。false调度标志表示不清楚任务是否打算访问这个流,而且调度程序必须跳过对这个流的“空间>0”运行性测试。但是,如果已选择任务并随后由于这个流中不可用的数据或空间而阻塞,则设置阻塞标志。设置阻塞标志确保调度单元不会再次选择这个任务,直到该阻塞流至少有一些可用的空间。
对于可升级系统,处理器应当尽可能自治。为此,采用未同步的分布式任务调度单元,其中每个处理器外壳都有其自己的任务调度单元。处理器是松耦合的,这意味着在时间片内缓冲器可以桥接,一个处理器中任务的调度独立于另一处理器中任务的瞬间调度。在一个比缓冲器可桥接大的时间片上,由于共享缓冲器中的数据流同步,不同处理器中的任务调度是耦合的。
根据图2的系统体系结构支持相对高性能、高数据吞吐量的应用。由于包含流式FIFO缓冲器的芯片上存储器的有限尺寸,因此需要高数据同步和任务切换率。无须优先权调度的中断驱动任务切换,处理步的周期必须保持小到允许足够良好颗粒的任务切换。处理器-外壳接口允许非常高的任务切换率以满足这些需求,而且能够本地自治实现,而不需要来自主CPU的干涉。优选地,对应于微秒级的处理步周期,gettask调用以每十个至一千个时钟周期一次的速率执行。
图3示出了根据以根据图2数据处理系统为基础的优选实施方案的任务调度过程的流程图。但是,在这种实施方案中外壳22中读/写单元和同步单元的存在不是必须的。
任务调度过程在步骤S1由处理器12a执行针对所述处理器12a外壳22a中调度单元的gettask调用初始化。外壳22a的调度单元接收gettask调用并启动任务选择。在步骤S2中,任务调度单元确定当前任务是否仍然可以运行,即能够运行。当输入流中有可用数据且输出流中有可用空间时,任务可以运行。任务调度单元还确定当前任务的运行预算是否大于0。在步骤S3中,如果当前任务可运行且其运行预算大于0,则任务调度单元将当前任务的task_ID返回到所关联的处理器12a,表示处理器12a打算继续处理该当前任务。处理器12a将继续处理该当前任务,直到发出下一个gettask调用。
但是,如果运行预算为0或者如果当前任务不可运行,例如由于输入流中缺少数据,则流程跳到步骤S4。在这里,任务调度单元必须选择下一个将由处理器12a处理的任务。任务调度单元从可运行任务列表中按round-robin顺序选择下一个任务。在步骤S5中,下一个任务的运行预算设置为任务表的对应设置参数,而在步骤S6中,这个任务的task_ID返回到处理器12a。然后,处理器12a将启动下一个任务的处理,直到发出下一个gettask调用。
接下来将更加详细地描述对下一个任务的实际选择。这种任务选择可以在调度单元一接收到gettask调用后就立即执行,或者调度单元也可以在接收下一个gettask调用之前开始选择过程,从而当调度单元接收到gettask调用时,选择结果,即下一个任务,已经在附近了,从而处理器不必等待其gettask调用的返回。由于处理器12a以有规律的时间间隔发出gettask调用,因此这变得有可能,其中所述时间间隔是处理步。
优选地,外壳22a、22b的调度单元包括流表和任务表。调度单元利用任务表配置和管理映射到其关联处理器12a、12b的不同任务。这些局部表允许快速访问。该表对每个任务都包含一行字段。该表优选地包含流表中关联到任务的第一数据流的索引、表示是否允许任务运行并具有需要的可用资源的使能位及参数化任务调度单元并保证任务中的处理公平性的预算字段。
任务调度单元一个接一个地重复检查流表中的所有流,以确定它们是否可以运行。如果它包含非0空间或者如果其调度标志未设置且其阻塞标志也未设置,则一个流被视为允许运行,即可运行的。然后,任务调度单元一个接一个地检查任务表中的所有任务,看它们是否可以运行。如果其关联的所有流都可运行且设置了任务使能标志,则一个任务被视为可以运行。任务调度单元的下一个步骤是从所述任务表中选择下一个将由处理器12a处理的可运行任务。
单独的过程每个时间片都消耗由外壳22a、22b中时钟分割器定义的运行预算。
由于对软件实现来说任务切换率太高了,因此外壳在专用硬件中实现任务调度单元。任务调度单元必须在几个时钟周期内提供对gettask请求的答复。
任务调度单元还可以在后台过程中为新任务准备建议,以便当gettask请求达到时该建议立即可用。此外,它对“运行预算”计数器保持跟踪,以控制在处理器中调度的每个任务保持的周期。
相对于缓冲器的实际状态,任务选择允许滞后。只有活动任务减少流缓冲器中的空间,而所有外部同步putspace消息都增加缓冲器中的空间。因此,准备好运行的任务保持可运行,而外部同步消息更新缓冲器的空间值。因此,调度程序可以实现为拉机制(pull mechanism),其中不考虑即将到来的同步消息,调度程序周期性地在流表中循环并更新每个任务的运行性标志。这种调度与同步之间的分离允许调度程序的较小时间关键实现,同时又最小化了同步命令的等待时间。
gettask请求还可以包含一个“active_blocked”标志,当处理步由于阻塞数据而过早终止时该标志由处理器激活。这个标志使活动任务的“可运行”状态被立即清除。这种快速反馈对调度过程中的等待时间进行补偿,并允许调度程序立即对不同的任务作出响应。
对于在一组结合了实时和动态行为的媒体应用上重用计算硬件,根据本发明优选实施方案的系统体系结构提供成本有效且可以升级的解决方案。每个处理器外壳中的任务调度单元观测可用的工作负荷并识别数据依赖行为,同时保证每个任务最小化的计算预算和最大化的睡眠时间。非常高的任务切换率利用外壳的硬件实现来支持。调度是分布式的。每个处理器的任务是由它们各自的外壳独立调度的。
图4说明了读写过程及其关联的同步操作。从处理器的角度看,数据流看起来就象是具有当前访问点的无限数据带。从处理器发出的getspace调用请求允许访问由图4a中小箭头所示当前访问点之前的特定数据空间。如果这种许可被授权,则处理器可以在所请求的空间,即图4b的加框窗口,内利用由n_bytes自变量表示的变长数据和由offset自变量表示的任意访问位置执行读写动作。
如果许可未被授权,则调用返回false。在一个或多个getspace调用及可选地几个读/写动作后,处理器可以确定它是否完成了处理或数据空间的一部分,并发出putspace调用。这种调用使访问点提前了确定的几个字节,即图4d中的n_bytes2,其中这个大小受先前准许的空间限制。
图4描述了循环FIFO存储器。交换数据流需要优选地具有有限且恒定大小的FIFO缓冲。优选地,它在存储器中是预先分配的,为了在线性存储器地址范围内有正确的FIFO行为,应用循环寻址机制。
图4中心的旋转箭头50表示来自处理器的getspace调用确认读/写准许窗口的方向,这与putspace调用向前移动访问点的方向是同一个方向。小箭头51、52表示任务A和B的当前访问点。在这个例子中,A是写入装置,从而留下正确的数据,而B是读取装置,留下空闲的空间(或无意义的垃圾)。每个访问点之前的阴影区域(A1、B1)表示通过getspace操作获得的访问窗口。
由于多任务,任务A和B可以不同的速度前进,和/或在有些时间周期内得不到服务。外壳22a、22b提供任务A和B在其上利用消息运行的处理器12a、12b,以确保A和B的访问点保持它们各自的顺序,或者更严格地说,确保准许的访问窗口决不会重叠。利用由外壳22a、22b提供的信息是处理器12a、12b的责任,从而实现全局的功能正确性。例如,外壳22a、22b有时候可以对来自处理器的getspace请求回答false,例如由于缓冲器中没有足够的可用空间。然后,根据被拒绝的访问请求,处理器应当避免访问缓冲器。
外壳22a、22b是分布式的,从而每个外壳都可以在与其关联的处理器12a、12b附近实现。每个外壳都局部包括附属于映射到其处理器的任务的流配置数据,并局部实现所有正确管理该数据的控制逻辑。因此,局部流表在为每个流,或者换句话说为每个访问点,都包含一行字段的外壳22a、22b中实现。
为了管理图4的结构,任务A与B的处理器外壳22a、22b的流表每个都包含这样一行,保留一个包含(可能是悲观的)这个缓冲中从其自己访问点到另一访问点的距离的“空间”字段及表示具有这个缓冲中该另一访问点任务和端口的远程外壳的ID。另外,为了支持所提到的地址增量,所述局部流表还可以包含一个对应于缓冲器基地址和缓冲器大小的当前访问点和编码的存储器地址。
这些流表优选地是映射到每个所述外壳22的小存储器,如寄存器文件,中的存储器。因此,通过将所请求的大小与局部存储的可用空间进行比较,getspace调用可以立即、局部地得到回答。当putspace调用后,这个局部空间字段立即减少所指示的量,并且有一个putspace消息发送到保留先前访问点的另一个外壳以增加其空间值。相应地,当从远程源接收到这种put消息后,外壳22立即增加该局部字段。由于消息在外壳之间传输需要时间,因此在不需要将这两个空间字段相加达到整个缓冲大小但可能瞬间包含悲观值的地方,有可能发出现问题。但是,这不会妨碍同步安全性。这甚至有可能发生在多个消息同时处于到达其目的地的途中及它们未能按顺序得到服务的意外情况下,但即使在这种情况下,同步仍然保持正确。
图5示出了更新每个外壳中局部空间值并发送“putspace”消息的机制。在这种结构中,通过将所请求的大小与局部存储的空间信息进行比较,来自处理器12a、12b的getspace请求,即getspace调用,可以立即、局部地在所关联的外壳22a、22b中得到回答。当收到putspace调用后,局部外壳22a、22b立即将其空间字段减少所指示的量,并将putspace消息发送到远程外壳。远程外壳,即另一处理器的外壳,保留另一个访问点并增加其空间值。相应地,当从远程源接收到这种putspace消息后,局部外壳立即增加其空间字段。
属于访问点的空间字段通过两个源修改:当本地putspace调用后立即减少,而当接收到putspace消息后立即增加。如果这种增加或减少未实现为原子操作,则这样做会导致错误的结果。在这种情况下,单独的本地空间和远程空间字段可以使用,每个字段都只由单个源更新。当本地getspace调用后,这些值立即减小。外壳22始终控制其自己局部表的更新并以原子方式执行这些操作。很清楚,这只是一个外壳实现的问题,它对其外部功能性是不可见的。
如果getpsace调用返回false,则处理器可以自由决定如何反应。可能性有,a)处理器可以发出带有更小n_bytes自变量的新getspace调用,b)处理器可以等一会儿,然后再试,或者c)处理器可以停止当前任务并允许该处理器上的另一任务继续。
这使得任务切换决定可以依赖于更多数据的期望到达时间和具有关联状态保存成本的内部累计状态的量。对于不可编程的专用硬件处理器,这种决定是体系结构设计过程的一部分。状态保存和恢复是处理器而不是任务调度程序的责任。处理器可以各种方式实现状态保存和恢复,例如:
-处理器对于每个局部属于该处理器的任务都具有显式的状态存储器。
-处理器利用getspace、读、写和putspace原语将状态保存并恢复到共享存储器中。
-处理器通过独立于处理器-外壳接口的接口将状态保存并恢复到外部存储器中。
尽管特定实例可能会造成这些差别,但外壳22的实现和操作不会在读写端口之间造成差别。由外壳22实现的操作有效地隐藏实现细节,如FIFO缓冲器的大小、它在存储器中的位置、存储界限循环FIFO的地址环绕机制、高速缓存策略、高速缓存一致性、全局I/O排列限制、数据总线宽度、存储器排列限制、通信网络结构及存储器组织。
优选地,外壳22a、22b以未格式化的字节序列进行工作。在交换数据流的写入装置与读取装置所使用同步包的大小之间不需要任何关联。数据内容的语义解释留给处理器。任务不知道应用图形关联(graphincidence)结构,例如它与哪些其它任务通信,以及这些任务映射到哪些处理器,或者哪些其它任务映射到同一处理器。
在外壳22的高性能实现中,读调用、写调用、getspace调用、putspace调用可以通过外壳22a、22b的读/写单元和同步单元并行发出。作用在外壳22不同端口上的调用没有任何共同的排序约束,而作用在外壳22同一端口上的调用必须根据调用任务或处理器进行排序。对于这些情况,在软件实现中通过功能调用的返回,而在硬件实现中通过提供应答信号,当前一个调用返回时,来自处理器的下一个调用可以发布。
为了在由port_ID和offset自变量表示的位置执行将数据从存储器预取到外壳高速缓存的任务,读调用中大小自变量,即n_bytes,的0值可以保留。这种操作可用于由外壳执行的自动预取。类似地,尽管自动高速缓存的转储清除是外壳的责任,但对于高速缓存的转储清除请求,写调用中的0值可以保留。
可选地,所有5种操作都接收附加的最后一个task_ID自变量。这通常是一个作为结果值从前面gettask调用获得的小正数。对于不是任务专用但关于处理器控制的调用,该自变量的0值保留。
在基于根据图2和图3优选实施方案的另一实施方案中,特定功能的专用处理器可以由可编程处理器代替,而优选实施方案的其它特征保持不变。根据在可编程处理器上实现的程序,每个处理器都专用于执行有限范围的流处理。根据其程序设计,每个处理器都布置成将相同的处理操作重复应用到连续的流数据对象。优选地,任务调度程序也用可以在关联处理器上运行的软件实现。
Claims (47)
1、一种数据处理系统,包括:
-用于处理数据对象流的第一和至少一个第二处理器,所述第一处理器布置成将来自数据对象流的数据对象传送到第二处理器,所述第二处理器是能够交叉处理第一和第二任务的多任务处理器,其中所述第一和第二任务分别处理第一和第二数据对象流;
-通信网络;及
-每个所述第二处理器的一个任务调度装置,所述任务调度装置以操作方式布置在所述第二处理器和所述通信网络之间;
其中每个所述第二处理器的任务调度装置控制该第二处理器的任务调度。
2、如权利要求1所述的数据处理系统,其中:
所述第二处理器布置成管理每个任务的多个入站和出站流和/或多个流。
3、如权利要求1所述的数据处理系统,其中:
所述任务调度装置适于当从所述第二处理器接收到请求后立即确定将由所述第二处理器处理的下一任务,并将所述下一任务的标识转发到所述第二处理器,
其中所述第二处理器以连续的时间间隔请求下一任务;所述时间间隔代表所述第二处理器的处理步。
4、如权利要求1所述的数据处理系统,其中:
所述第二处理器及其关联的任务调度装置之间的通信是主/从通信,所述第二处理器充当主控装置。
5、如权利要求1所述的数据处理系统,其中:
所述第二处理器是执行一组参数化流处理功能的特定功能专用处理器。
6、如权利要求1所述的数据处理系统,其中所述任务调度装置包括:
-用于存储与映射到关联处理器的任务关联的每个流参数的流表,所述流表包含每个流的各种管理数据,和/或
-管理关联到所述第二处理器的不同任务的任务表,所述任务表包含表示哪个流关联到所述任务的流表索引、每个任务一个表示是否允许任务执行的使能标志和/或表示每个任务可用处理预算的预算计数器。
7、如权利要求6所述的数据处理系统,其中:
所述流表包含用于读取的有效数据量、用于写入的可用空间量、关于运行任务是否在读或写所述流时阻塞的信息和/或将所述流关联到任务的配置信息。
8、如权利要求6所述的数据处理系统,其中:
所述任务调度装置适于检查所述流表中的所有流并确定哪个所述流允许任务前进,
其中如果a)该流具有可读的有效数据或可写的可用空间,b)任务未请求比该流中可用数据或空间更多的有效数据或空间和/或c)选项a)、b)配置成与任务前进无关,则流允许前进。
9、如权利要求6或8所述的数据处理系统,其中:
所述任务调度装置适于检查所述任务表中的所有任务并确定允许哪个所述任务运行,
其中如果与所述任务关联的所有流都允许任务前进且任务配置成可运行,则允许任务运行。
10、如权利要求6、7、8或9所述的数据处理系统,其中:
所述任务调度装置适于从多个作为接下来要处理的任务的配置任务中选择一个任务。
11、如权利要求1或9所述的数据处理系统,其中:
所述任务调度装置包括用于控制当前任务资源预算的预算计数器装置。
12、如权利要求1或11所述的数据处理系统,其中:
所述任务调度装置适于利用每个任务的资源预算参数,其中所述资源预算参数限制处理器被相关任务连续占用的时间。
13、如权利要求12所述的数据处理系统,其中:
所述任务调度装置适于当从所述第二处理器接收到请求后立即选择在当前任务之后要处理的下一个任务,
其中如果当前任务仍然允许运行并且其资源预算未耗尽,则当前任务允许继续运行;
其中不然的话则由所述任务调度装置确定的下一任务被选作新的当前任务。
14、如权利要求13所述的数据处理系统,其中:
所述任务调度装置适于选择允许以循环顺序运行的下一任务。
15、如权利要求1所述的数据处理系统,其中:
所述任务调度装置适于在所述第二处理器接请求下一个任务之前选择接下来要处理的任务,从而所选下一任务的标识可以立即返回到所述第二处理器。
16、如权利要求12、13或14所述的数据处理系统,其中:
所述预算计数器是由事件根据实时时钟更新的。
17、如权利要求12、13或14所述的数据处理系统,其中:
所述任务调度装置适于当其被选择成为当前任务时补充下一任务的预算。
18、如权利要求1所述的数据处理系统,其中:
所述第二处理器是执行一组可编程参数化流处理功能的可编程处理器。
19、用于数据处理系统的任务调度程序,所述系统包括用于处理数据对象流的第一和至少一个第二处理器、通信网络及存储器,所述第一处理器布置成将来自数据对象流的数据对象传送到第二处理器,其中:
-任务调度程序适于关联到一个所述第二处理器,
-任务调度程序适于操作性布置在所述第二处理器和所述通信网络之间;及
-任务调度程序适于控制所述关联第二处理器的任务调度。
20、如权利要求19所述的任务调度程序,其中:
所述任务调度程序适于当从所述第二处理器接收到请求后立即确定将由该第二处理器处理的下一任务,并将所述下一任务的标识转发到所述第二处理器,
其中所述第二处理器以预定的时间间隔请求下一任务;所述时间间隔代表所述第二处理器的处理步。
21、如权利要求19所述的任务调度程序,还包括:
-用于存储与映射到关联处理器的任务关联的每个流参数的流表,所述流表包含每个流的各种管理数据,和/或
-管理关联到所述第二处理器的不同任务的任务表,所述任务表包含表示哪个流关联到所述任务的流表索引、每个任务一个表示是否允许任务执行的使能标志和/或表示每个任务可用处理预算的预算计数器。
22、如权利要求19所述的任务调度程序,其中:
所述流表包含用于读取的有效数据量、用于写入的可用空间量、关于运行任务是否在读或写所述流时阻塞的信息和/或将所述流关联到任务的配置信息。
23、如权利要求21所述的任务调度程序,
适于检查所述流表中的所有流并确定哪个所述流允许任务前进,
其中如果a)该流具有可读的有效数据或可写的可用空间,b)任务未请求比该流中可用数据或空间更多的有效数据或空间和/或c)选项a)、b)配置成与任务前进无关,则流允许前进。
24、如权利要求21或23所述的任务调度程序,
适于检查所述任务表中的所有任务并确定允许哪个所述任务运行,
其中如果与所述任务关联的所有流都允许任务前进且任务配置成可运行,则允许任务运行。
25、如权利要求24所述的任务调度程序,
适于当从所述第二处理器接收到请求后立即选择在当前任务之后要处理的下一个任务;
其中如果当前任务仍然允许运行并且所述任务表中的预算计数器非0,则当前任务允许继续运行,
其中不然的话则由所述任务调度装置确定的下一任务被选作新的当前任务并复位预算计数器。
26、如权利要求21、22、23或24所述的任务调度程序,
适于从多个作为接下来要处理的任务的配置任务中选择一个任务。
27、如权利要求19或24所述的任务调度程序,包括:
用于控制当前任务资源预算的预算计数器装置。
28、如权利要求19或27所述的任务调度程序,
适于利用每个任务的资源预算参数,其中所述资源预算参数限制处理器被相关任务连续占用的时间。
29、如权利要求28所述的任务调度程序,
适于当从所述第二处理器接收到请求后立即选择在当前任务之后要处理的下一个任务,
其中如果当前任务仍然允许运行并且其资源预算未耗尽,则当前任务允许继续运行;
其中不然的话则由所述任务调度装置确定的下一任务被选作新的当前任务。
30、如权利要求29所述的任务调度程序,
所述任务调度装置适于选择允许以循环顺序运行的下一任务。
31、如权利要求28、29或30所述的任务调度程序,
适于当其被选择成为当前任务时补充下一任务的预算。
32、在数据处理系统中用于任务调度的方法,所述系统包括用于处理数据对象流的第一和至少一个第二处理器及通信网络,所述第一处理器布置成将来自数据对象流的数据对象传送到第二处理器,所述系统对每个所述第二处理器都具有一个任务调度程序;由此
任务调度程序控制所述第二处理器的任务调度。
33、如权利要求32所述用于任务调度的方法,还包括步骤:
-当从所述第二处理器接收到请求后立即确定将由所述第二处理器处理的下一任务,及
-将所述下一任务的标识转发到所述第二处理器,
其中所述第二处理器以连续的时间间隔请求下一任务;所述时间间隔代表所述第二处理器的处理步。
34、如权利要求32所述用于任务调度的方法,其中:
所述第二处理器及其关联的任务调度装置之间的通信是主/从通信,所述第二处理器充当主控装置。
35、如权利要求32所述用于任务调度的方法,还包括步骤:
-存储与映射到关联处理器的任务关联的每个流参数,所述流表包含每个流的各种管理数据,和/或
-管理关联到所述第二处理器的不同任务,所述任务表包含表示哪个流关联到所述任务的流表索引、每个任务一个表示是否允许任务执行的使能标志和/或表示每个任务可用处理预算的预算计数器。
36、如权利要求35所述用于任务调度的方法,其中:
所述流表包含用于读取的有效数据量、用于写入的可用空间量、关于运行任务是否在读或写所述流时阻塞的信息和/或将所述流关联到任务的配置信息。
37、如权利要求35所述用于任务调度的方法,还包括步骤:
检查所述流表中的所有流并确定哪个所述流允许任务前进,其中:
如果a)该流具有可读的有效数据或可写的可用空间,b)任务未请求比该流中可用数据或空间更多的有效数据或空间和/或c)选项a)、b)配置成与任务前进无关,则流允许前进。
38、如权利要求35或37所述用于任务调度的方法,还包括步骤:
检查所述任务表中的所有任务并确定允许哪个所述任务运行,
其中如果与所述任务关联的所有流都允许任务前进且任务配置成可运行,则允许任务运行。
39、如权利要求35、36、37或38所述用于任务调度的方法,还包括步骤:
从多个作为接下来要处理的任务的配置任务中选择一个任务。
40、如权利要求32或39所述用于任务调度的方法,还包括步骤:
控制当前任务的资源预算。
41、如权利要求32或40所述用于任务调度的方法,还包括步骤:
利用每个任务的资源预算参数,其中所述资源预算参数限制处理器被相关任务连续占用的时间。
42、如权利要求41所述用于任务调度的方法,还包括步骤:
当从所述第二处理器接收到请求后立即选择在当前任务之后要处理的下一个任务,
其中如果当前任务仍然允许运行并且其资源预算未耗尽,则当前任务允许继续运行;
其中不然的话则由所述任务调度装置确定的下一任务被选作新的当前任务。
43、如权利要求42所述用于任务调度的方法,还包括步骤:
选择允许以循环顺序运行的下一任务。
44、如权利要求32所述用于任务调度的方法,还包括步骤:
在所述第二处理器接请求下一个任务之前选择接下来将要处理的任务,从而所选下一任务的标识可以立即返回到所述第二处理器。
45、如权利要求41、42或43所述用于任务调度的方法,还包括步骤:
由事件根据实时时钟更新所述预算计数器。
46、如权利要求41、42或43所述用于任务调度的方法,还包括步骤:
当其被选择成为当前任务时补充下一任务的预算。
47、如权利要求1所述用于任务调度的方法,还包括步骤:
在可编程的第二处理器上实现任务调度程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP01204882.3 | 2001-12-14 | ||
EP01204882 | 2001-12-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1602467A true CN1602467A (zh) | 2005-03-30 |
Family
ID=8181429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN02824739.6A Pending CN1602467A (zh) | 2001-12-14 | 2002-12-05 | 具有多个处理器的数据处理系统、用于具有多个处理器的数据处理系统的任务调度程序及用于任务调度的对应方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20050081200A1 (zh) |
EP (1) | EP1459179A2 (zh) |
JP (1) | JP2006515690A (zh) |
CN (1) | CN1602467A (zh) |
AU (1) | AU2002353280A1 (zh) |
WO (1) | WO2003052597A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794239A (zh) * | 2010-03-16 | 2010-08-04 | 浙江大学 | 一种基于数据流模型的多处理器任务调度管理方法 |
CN102111451A (zh) * | 2011-03-02 | 2011-06-29 | 上海市共进通信技术有限公司 | 基于反应堆模式的分布式多任务协作处理网络系统及方法 |
CN101349974B (zh) * | 2007-07-16 | 2011-07-13 | 中兴通讯股份有限公司 | 一种分布式系统中提高多核cpu处理能力的方法 |
CN104484228A (zh) * | 2014-12-30 | 2015-04-01 | 成都因纳伟盛科技股份有限公司 | 基于Intelli-DSC的分布式并行任务处理系统 |
CN104932946A (zh) * | 2009-07-28 | 2015-09-23 | 瑞典爱立信有限公司 | 用于处理电信网络中的事件的设备和方法 |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7861246B2 (en) * | 2004-06-17 | 2010-12-28 | Platform Computing Corporation | Job-centric scheduling in a grid environment |
WO2006016283A2 (en) * | 2004-08-06 | 2006-02-16 | Koninklijke Philips Electronics N.V. | Task scheduling using context switch overhead table |
US8091088B2 (en) * | 2005-02-22 | 2012-01-03 | Microsoft Corporation | Method and system for hierarchical resource management involving hard and soft resource limits |
US9361156B2 (en) | 2005-03-14 | 2016-06-07 | 2236008 Ontario Inc. | Adaptive partitioning for operating system |
US8387052B2 (en) | 2005-03-14 | 2013-02-26 | Qnx Software Systems Limited | Adaptive partitioning for operating system |
US8245230B2 (en) | 2005-03-14 | 2012-08-14 | Qnx Software Systems Limited | Adaptive partitioning scheduler for multiprocessing system |
CA2538503C (en) | 2005-03-14 | 2014-05-13 | Attilla Danko | Process scheduler employing adaptive partitioning of process threads |
EP1891787B1 (en) * | 2005-06-15 | 2010-03-24 | Solarflare Communications Incorporated | Data processing system |
US7877750B2 (en) * | 2005-07-27 | 2011-01-25 | Sap Ag | Scheduled job execution management |
US8130841B2 (en) * | 2005-12-29 | 2012-03-06 | Harris Corporation | Method and apparatus for compression of a video signal |
US8234623B2 (en) | 2006-09-11 | 2012-07-31 | The Mathworks, Inc. | System and method for using stream objects to perform stream processing in a text-based computing environment |
CN101236513B (zh) * | 2007-01-30 | 2012-07-18 | 阿里巴巴集团控股有限公司 | 一种分布式任务系统和分布式任务管理方法 |
US8413064B2 (en) * | 2007-02-12 | 2013-04-02 | Jds Uniphase Corporation | Method and apparatus for graphically indicating the progress of multiple parts of a task |
JP2008242948A (ja) * | 2007-03-28 | 2008-10-09 | Toshiba Corp | 情報処理装置および同装置の動作制御方法 |
US7853950B2 (en) * | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
US8555282B1 (en) * | 2007-07-27 | 2013-10-08 | Dp Technologies, Inc. | Optimizing preemptive operating system with motion sensing |
US20090125706A1 (en) * | 2007-11-08 | 2009-05-14 | Hoover Russell D | Software Pipelining on a Network on Chip |
US8261025B2 (en) | 2007-11-12 | 2012-09-04 | International Business Machines Corporation | Software pipelining on a network on chip |
US7873701B2 (en) * | 2007-11-27 | 2011-01-18 | International Business Machines Corporation | Network on chip with partitions |
US8574393B2 (en) * | 2007-12-21 | 2013-11-05 | Tsinghua University | Method for making touch panel |
US8725992B2 (en) | 2008-02-01 | 2014-05-13 | International Business Machines Corporation | Programming language exposing idiom calls to a programming idiom accelerator |
US8250396B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8788795B2 (en) * | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8880853B2 (en) * | 2008-02-01 | 2014-11-04 | International Business Machines Corporation | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock |
US8312458B2 (en) * | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
US8516484B2 (en) * | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8341635B2 (en) * | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
US8171476B2 (en) * | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8612977B2 (en) * | 2008-02-01 | 2013-12-17 | International Business Machines Corporation | Wake-and-go mechanism with software save of thread state |
US8640141B2 (en) * | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8225120B2 (en) * | 2008-02-01 | 2012-07-17 | International Business Machines Corporation | Wake-and-go mechanism with data exclusivity |
US8452947B2 (en) | 2008-02-01 | 2013-05-28 | International Business Machines Corporation | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms |
US8316218B2 (en) * | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8145849B2 (en) | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Wake-and-go mechanism with system bus response |
US8127080B2 (en) | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8732683B2 (en) * | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8386822B2 (en) * | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8276143B2 (en) * | 2008-03-10 | 2012-09-25 | Oracle America, Inc. | Dynamic scheduling of application tasks in a distributed task based system |
US8102552B2 (en) * | 2008-04-03 | 2012-01-24 | Sharp Laboratories Of America, Inc. | Performance monitoring and control of a multifunction printer |
US8392924B2 (en) * | 2008-04-03 | 2013-03-05 | Sharp Laboratories Of America, Inc. | Custom scheduling and control of a multifunction printer |
US8423715B2 (en) | 2008-05-01 | 2013-04-16 | International Business Machines Corporation | Memory management among levels of cache in a memory hierarchy |
US9720729B2 (en) * | 2008-06-02 | 2017-08-01 | Microsoft Technology Licensing, Llc | Scheduler finalization |
US8438578B2 (en) | 2008-06-09 | 2013-05-07 | International Business Machines Corporation | Network on chip with an I/O accelerator |
US8996332B2 (en) | 2008-06-24 | 2015-03-31 | Dp Technologies, Inc. | Program setting adjustments based on activity identification |
US8250579B2 (en) * | 2008-06-27 | 2012-08-21 | Oracle America, Inc. | Method for stage-based cost analysis for task scheduling |
US8082315B2 (en) * | 2009-04-16 | 2011-12-20 | International Business Machines Corporation | Programming idiom accelerator for remote update |
US8886919B2 (en) * | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
US8230201B2 (en) * | 2009-04-16 | 2012-07-24 | International Business Machines Corporation | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system |
US8145723B2 (en) * | 2009-04-16 | 2012-03-27 | International Business Machines Corporation | Complex remote update programming idiom accelerator |
DK2460072T3 (en) * | 2009-07-28 | 2019-03-25 | Ericsson Telefon Ab L M | Device and method for handling incidents in a telecommunications network |
EP2320327A1 (en) * | 2009-11-09 | 2011-05-11 | Imec | A data transferring device |
US9547528B1 (en) * | 2010-03-29 | 2017-01-17 | EMC IP Holding Company LLC | Pizza scheduler |
US9098331B2 (en) * | 2011-06-29 | 2015-08-04 | Telefonaktiebolaget L M Ericsson (Publ) | Joint scheduling of multiple processes on a shared processor |
CN102591623B (zh) * | 2012-01-20 | 2014-04-02 | 周超勇 | 分布式模块间通信方法 |
US9229847B1 (en) * | 2012-04-18 | 2016-01-05 | Open Invention Network, Llc | Memory sharing for buffered macro-pipelined data plane processing in multicore embedded systems |
CN102750182A (zh) * | 2012-06-12 | 2012-10-24 | 苏州微逸浪科技有限公司 | 一种基于自定义任务调度的主动采集的处理方法 |
CN104216785B (zh) * | 2014-08-26 | 2017-10-10 | 烽火通信科技股份有限公司 | 通用策略任务系统及其实现方法 |
CN105528243B (zh) * | 2015-07-02 | 2019-01-11 | 中国科学院计算技术研究所 | 一种利用数据拓扑信息的优先级分组调度方法及系统 |
US9940169B2 (en) * | 2015-07-23 | 2018-04-10 | Pearson Education, Inc. | Real-time partitioned processing streaming |
FI127266B (en) * | 2016-07-08 | 2018-02-28 | Sarokal Test Systems Oy | A system for processing data stream messages |
CN113407633A (zh) * | 2018-09-13 | 2021-09-17 | 华东交通大学 | 一种分布式数据源异构同步的方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1394431A (en) * | 1971-06-24 | 1975-05-14 | Plessey Co Ltd | Multiprocessor data processing system |
US4245306A (en) * | 1978-12-21 | 1981-01-13 | Burroughs Corporation | Selection of addressed processor in a multi-processor network |
US4905145A (en) * | 1984-05-17 | 1990-02-27 | Texas Instruments Incorporated | Multiprocessor |
US4816993A (en) * | 1984-12-24 | 1989-03-28 | Hitachi, Ltd. | Parallel processing computer including interconnected operation units |
US5517656A (en) * | 1993-06-11 | 1996-05-14 | Temple University Of The Commonwealth System Of Higher Education | Multicomputer system and method |
US5689431A (en) * | 1995-04-18 | 1997-11-18 | Leading Edge Technologies, Inc. | Golf course yardage and information system |
US5826081A (en) * | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
US6243735B1 (en) * | 1997-09-01 | 2001-06-05 | Matsushita Electric Industrial Co., Ltd. | Microcontroller, data processing system and task switching control method |
US6438678B1 (en) * | 1998-06-15 | 2002-08-20 | Cisco Technology, Inc. | Apparatus and method for operating on data in a data communications system |
-
2002
- 2002-12-05 JP JP2003553417A patent/JP2006515690A/ja not_active Withdrawn
- 2002-12-05 EP EP02788301A patent/EP1459179A2/en not_active Withdrawn
- 2002-12-05 CN CN02824739.6A patent/CN1602467A/zh active Pending
- 2002-12-05 US US10/498,298 patent/US20050081200A1/en not_active Abandoned
- 2002-12-05 WO PCT/IB2002/005199 patent/WO2003052597A2/en not_active Application Discontinuation
- 2002-12-05 AU AU2002353280A patent/AU2002353280A1/en not_active Abandoned
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101349974B (zh) * | 2007-07-16 | 2011-07-13 | 中兴通讯股份有限公司 | 一种分布式系统中提高多核cpu处理能力的方法 |
CN104932946A (zh) * | 2009-07-28 | 2015-09-23 | 瑞典爱立信有限公司 | 用于处理电信网络中的事件的设备和方法 |
CN101794239A (zh) * | 2010-03-16 | 2010-08-04 | 浙江大学 | 一种基于数据流模型的多处理器任务调度管理方法 |
CN101794239B (zh) * | 2010-03-16 | 2012-11-14 | 浙江大学 | 一种基于数据流模型的多处理器任务调度管理方法 |
CN102111451A (zh) * | 2011-03-02 | 2011-06-29 | 上海市共进通信技术有限公司 | 基于反应堆模式的分布式多任务协作处理网络系统及方法 |
CN102111451B (zh) * | 2011-03-02 | 2014-03-19 | 上海市共进通信技术有限公司 | 基于反应堆模式的多任务处理方法 |
CN104484228A (zh) * | 2014-12-30 | 2015-04-01 | 成都因纳伟盛科技股份有限公司 | 基于Intelli-DSC的分布式并行任务处理系统 |
CN104484228B (zh) * | 2014-12-30 | 2017-12-29 | 成都因纳伟盛科技股份有限公司 | 基于Intelli‑DSC的分布式并行任务处理系统 |
Also Published As
Publication number | Publication date |
---|---|
US20050081200A1 (en) | 2005-04-14 |
EP1459179A2 (en) | 2004-09-22 |
WO2003052597A3 (en) | 2004-05-13 |
AU2002353280A8 (en) | 2003-06-30 |
JP2006515690A (ja) | 2006-06-01 |
AU2002353280A1 (en) | 2003-06-30 |
WO2003052597A2 (en) | 2003-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1602467A (zh) | 具有多个处理器的数据处理系统、用于具有多个处理器的数据处理系统的任务调度程序及用于任务调度的对应方法 | |
US10545789B2 (en) | Task scheduling for highly concurrent analytical and transaction workloads | |
US6223208B1 (en) | Moving data in and out of processor units using idle register/storage functional units | |
TWI386814B (zh) | 具動態工作管理能力之多處理器界面及其程式載卸方法 | |
CN112463709A (zh) | 可配置的异构人工智能处理器 | |
US20070150895A1 (en) | Methods and apparatus for multi-core processing with dedicated thread management | |
Yang et al. | Making openvx really" real time" | |
CN1311348C (zh) | 数据处理系统 | |
JP2009515246A (ja) | 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム | |
US8321874B2 (en) | Intelligent context migration for user mode scheduling | |
CN1867891A (zh) | 用于实时多线程处理的方法和装置 | |
US7565659B2 (en) | Light weight context switching | |
Hsiu et al. | Task synchronization and allocation for many-core real-time systems | |
KR20200014378A (ko) | 직무 관리 | |
CN1295609C (zh) | 数据处理系统、通信装置和处理数据的方法 | |
CN1928811A (zh) | 处理操作管理系统和方法 | |
Yang et al. | Optimal GEDF-based schedulers that allow intra-task parallelism on heterogeneous multiprocessors | |
Vaidehi et al. | Multicore applications in real time systems | |
CN111258655A (zh) | 融合计算方法及可读存储介质 | |
US11392388B2 (en) | System and method for dynamic determination of a number of parallel threads for a request | |
CN114816777A (zh) | 命令处理装置、方法、电子设备以及计算机可读存储介质 | |
CN102609306B (zh) | 多核处理芯片对视频处理任务的处理方法及其系统 | |
CN1602469A (zh) | 用在多处理器数据处理系统中的数据处理方法和相应的数据处理系统 | |
Schor et al. | Reliable and Efficient Execution of Multiple Streaming Applications on Intel’s SCC Processor | |
KR101084044B1 (ko) | 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |