CN102077172A - 使用运行时间任务调度的多处理器电路 - Google Patents

使用运行时间任务调度的多处理器电路 Download PDF

Info

Publication number
CN102077172A
CN102077172A CN2009801255414A CN200980125541A CN102077172A CN 102077172 A CN102077172 A CN 102077172A CN 2009801255414 A CN2009801255414 A CN 2009801255414A CN 200980125541 A CN200980125541 A CN 200980125541A CN 102077172 A CN102077172 A CN 102077172A
Authority
CN
China
Prior art keywords
task
dependence
matrix
pattern
tasks
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
Application number
CN2009801255414A
Other languages
English (en)
Inventor
吉亚斯·阿尔-卡迪
安德利·谢尔盖耶维奇·特雷克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN102077172A publication Critical patent/CN102077172A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)

Abstract

在具有主处理器核(10)和多个从处理器核(12)的多处理系统中执行任务。主处理器核(10)执行程序,定义任务的矩阵以及适用于多个任务且相对于位置定义的任务依赖性模式,其中任务处于矩阵中相应位置处。每一依赖性模式针对矩阵中的多个位置定义相对依赖性,而非针对单独位置使用单独依赖性。响应于程序,主处理器核(10)在依赖性模式存储器中动态存储当前任务依赖性模式的定义。硬件任务调度器根据关于任务已经完成的位置以及适用于这些任务的任务依赖性模式,来在运行时间计算准备就绪供执行的任务的位置。将已被计算为准备就绪供执行的任务分配给从处理器核(12)。

Description

使用运行时间任务调度的多处理器电路
技术领域
本发明涉及一种多处理器系统以及一种使用多处理器系统执行多个任务的方法。
背景技术
美国专利No.5,832,262描述了使用实时硬件调度来将任务分配到多处理器系统的不同处理器。该系统包括调度处理器以及充当从设备以执行由调度处理器所调度的任务的多个处理器。调度处理器标识要执行的任务,并将其放入可执行任务队列中。可用从设备在实时硬件调度器(scheduler)的控制之下,执行来自队列的任务。
美国专利No.5,832,262并没有说明调度处理器如何选择要放入队列中的任务,但是已知为此目的可以使用任务图(task graph)。任务图表达任务之间的关系,针对每一任务指示在该任务可被执行之前必须已经完成哪些先导(predecessor)任务。因此,在检测到任务图中规定的先导任务已经完成执行时,可以将任务放入队列中供执行。美国专利No.5,832,262使用基于对任务的相对紧急度进行定义的优先权,而并非基于数据依赖性(dependency)的预编译调度。
常规上,任务图由编程者或编译者通过标识任务中使用的变量并回溯至产生这些变量的任务来准备。对于大任务集,任务图可能变得极大。此外,利用了静态任务图。必须按照任务之间不出现动态可变依赖性的方式,来对任务进行系统表达(formulate)。因此,例如在图像处理应用中,除了总体上以对图像的相关性(dependence)来表达依赖性之外,由于可变运动向量,排除了实现静态任务图来处理可变依赖性。
发明内容
除了其他目的之外,本发明的目的在于在多处理系统中对任务进行调度,而不需要静态任务图。
提供了根据权利要求1的多处理系统。在此,从处理器核执行由主处理器核执行的程序所定义的任务。任务由组织矩阵中的位置来标识。主处理器核定义适用于矩阵中多个位置的相对依赖性模式。依赖性模式可以适用于这多个位置中的每一个位置,以获得该多个位置中所述一个位置处的任务所依赖的任务的相应其他位置的集合。任务依赖性模式例如可以包括指向矩阵中左方和上方邻居的向量。在实施例中,任务依赖性模式可以取决于运行时间变量数据。在图像处理示例中,矩阵中的位置对应于图像中的位置。
在使用硬件任务调度器的实施例中,已经发现该方法实现了与软件任务调度相比7倍的任务调度增速,以及总体降低15%的H.264视频编码任务。
硬件任务调度器使用程序定义的任务依赖性模式来调度从处理器核上的任务。使用依赖性模式存储器来向硬件任务调度器提供任务依赖性模式以应用于不同位置。
在实施例中,可同时有多个任务依赖性模式可用,分别适用于不同的任务组或者矩阵中任务的位置组。因此例如,可以为接近矩阵边沿的位置以及远离边沿的位置提供不同的依赖性模式,或者根据图像的类型(例如,MPEG图像处理任务中的I、P或B帧)为不同图像提供不同的依赖性模式。在该实施例中,硬件任务调度器根据计算所针对的任务或位置的组,来从同时有多个任务依赖性模式激活的存储器中选择任务依赖性模式。
在实施例中,硬件任务调度器接收已经完成任务的位置的标识,且响应于接收到标识,应用适用于已经完成任务的位置的任务依赖性模式的逆。这样,硬件任务调度器生成候选任务,随后可以根据任务依赖性模式来筛选这些候选任务,以确定它们是否准备就绪供执行。
矩阵可以具有二维或更多维。当使用二维矩阵时,任务依赖性模式可以用在所述至少两个维度上具有非零分量的相对依赖性向量来表达。当使用三维或更高维矩阵时,任务依赖性模式可以用在三个或更多维度上具有非零分量的相对依赖性向量来表达。
附图说明
根据使用附图对示例性实施例的描述,这些以及其他目的和有利方面将变得清楚。
图1示出了多处理系统。
图2示出了二维依赖性模式。
图3示出了硬件任务调度器。
图4示出了任务生成的流程图。
具体实施方式
图1示出了多处理系统,该多处理系统包括主处理器核10、多个从处理器核12、硬件任务调度器14和共享存储器16。共享存储器16耦接至主处理器核10、多个从处理器核12以及硬件任务调度器14。硬件任务调度器14耦接至主处理器核10以及多个从处理器核12。
在工作中,主处理器核10执行指令程序,包括发起由从处理器核12执行任务集的指令。集合中的任务数目可以超出可用从处理器核12的数目,从而至少一个从处理器核12可能各自需要执行该集合中的多个任务。硬件任务调度器14充当主处理器核10与从处理器核12之间的中介(intermediary)。发起执行任务集的指令使主处理器核10向硬件任务调度器14发送信号,该指令标识集合中的任务,针对集合中一组(class)位置的、任务之间的重复依赖性模式(repetitive dependency pattern),以及可选的针对集合中另一组位置的边界依赖性模式(boundary dependency pattern)和/或任务参数。在实施例中,重复依赖性模式可以动态改变。
图2示出了任务集20以及任务之间的依赖性模式22、24a-d。任务20以位置的二维矩阵来表示,其中任务由其位置来标识。可以按这种方式标识的任务的例子是与二维图像中相应像素或像素块相关联的图像处理任务,其中用于执行任务的程序对于每一像素或像素块可以相同。依赖性模式22、24a-d分别由从生成数据的任务至使用所生成数据的单个任务的线条来图示。尽管并未示出,但是应当理解,每一依赖性模式适用于多个位置。
矩阵中的每一任务可以由任务程序及其在矩阵中的位置来标识。不同位置处的任务程序可以相同。依赖性模式22、24a-24d的平移(translated)版本适用于彼此不同位置处的多个任务。例如,第一依赖性模式22的平移版本适用于任务矩阵的二维子矩阵(阴影所示)中各位置处的任务所使用数据的生成,该子矩阵中任务的位置与矩阵的特定边界相距多于阈值距离的预定行数和列数。第二和第三依赖性模式24a-b的平移版本适用于位置沿着矩阵第一边界的任务所使用数据的生成。第四和第五依赖性模式24c-d的平移版本适用于位置沿着矩阵第二边界的任务所使用数据的生成。
某些任务可能不依赖于集合中其他任务所生成的数据。例如,这可以适用于矩阵左上角位置处的任务。这可以被称作直接(trivial)依赖性模式(图中未示出),而不具备线段。
虽然作为示例示出了二维矩阵,但是应当理解,可以使用较高或较低维的矩阵,同时具有相应的较高或较低维的依赖性模式。
图3示出了硬件任务调度器14的实施例。在该实施例中,硬件任务调度器14包括控制单元30、依赖性模式存储器32、任务准备电路34和任务缓冲器36。依赖性模式存储器32也可以位于硬件任务调度器14外部。控制单元30具有耦接至主处理器核10(未示出)以及任务缓冲器36的输入。控制单元30具有耦接至主处理器核10、从处理器核12以及共享存储器16(未示出)的接口。控制单元30具有耦接至依赖性模式存储器32以及任务准备电路34的输出,以及耦接至任务缓冲器36的输入。任务准备电路34具有耦接至依赖性模式存储器32的输入,以及耦接至任务缓冲器36的输出。
在工作中,硬件任务调度器14用来控制何时允许从处理器核12执行针对矩阵中相应位置处的所标识任务的实例。在其与主处理器核10的接口处,控制单元30从主处理器核10(未示出)接收任务标识,该任务标识伴随有任务的重复依赖性模式以及可选的一个或多个边界依赖性模式的规定、任务参数以及初始位置指示。
任务标识可以实现为针对用于实现任务的指令程序的指针。重复依赖性模式的规定可以实现为对与依赖性模式22、24a-d的箭头相对应的向量的x和y分量进行定义的操作数(operand)。另外,可以提供信息来将各个依赖性模式链接至相对于矩阵边界定义的相应位置集合。
在接收时,控制单元30将接收到的任务之间的重复依赖性模式以及可选的边界依赖性模式的规定写入依赖性模式存储器32。此外,控制单元30向从处理器核12(未示出)发信号通知准备执行所标识的任务,而并不指定必须执行的任务在矩阵中的位置。作为响应,从处理器核12加载用于执行所标识任务的指令程序。对于每一从处理器核12而言加载的程序可以相同。
可以注意到,在一些实施例中,部分依赖性可能不需要写入依赖性模式存储器32。在图2的示例中,其中模式22包括依赖性(-1,0),(0,-1),(-1,-1),(-2,-1)和(-1,-2),可以看出,相对位置(-1,0),(0,-1)处的任务只有在其他相对位置(-1,-1),(-2,-1)和(-1,-2)处的任务完成后才能开始。因此,为了运行时间调度的目的,后面的依赖性不需要写入依赖性模式存储器32。主处理器核10可以被配置为筛选(screen)对于调度目的而言冗余的依赖性,且仅将非冗余的依赖性写入依赖性模式存储器32。当使用数据相关的依赖性时,可以在每次生成新的依赖性时,使用数据相关的筛选,然后将依赖性写入依赖性模式存储器32。
接着,从处理器核12开始向控制单元30提供请求信号,以请求分配矩阵中的位置以及针对该位置开始执行的许可。为进行这些处理,从处理器核12可以包括任务独立外壳(shell)程序。一旦从处理器核12接收到了对矩阵中位置的分配以及针对该位置开始执行的许可,从处理器核12执行程序。在执行期间,从处理器核12可以从共享存储器16和/或从硬件任务调度器14加载参数和/或由其他任务生成的数据。类似地,从处理器核12可以向共享存储器和/或硬件任务调度器14写入由所执行的任务生成的数据。当从处理器核12完成时,其向硬件任务调度器14发信号通知。
硬件任务调度器14或从处理器核12可以在存储区中记录完成。该存储区可以实现在硬件任务调度器14中的任务位置映射存储器中,或者该存储器例如可以是共享存储器16的一部分。该存储区可以包含标记阵列(flag array),阵列位置对应于矩阵中的位置。在这种情况下,矩阵中的位置可以用作在该存储区中的阵列中相应位置处写入完成标记的索引(index)。
可选地,可以在存储区中存储波前码(wavefront code)。这节省了空间。当依赖性包括对阵列中直接相邻元素的依赖性时,确保了存在波前,即,矩阵中将完成位置和未完成位置分开的轮廓线(contour)或表面。在这种情况下,并不存在被未完成位置包围的隔离完成位置,或者反之亦然。在这种情况下,存储区存储矩阵中任务已经完成的位置与任务尚未完成的位置之间边沿处的位置的路径或表面的波前码表示。在二维矩阵的情况下,路径表示可以包括一系列代码,这些代码表示沿着路径的连续步骤方向。每当完成某一位置的任务时,更新路径,例如通过修改与该位置相关的步骤的代码来进行更新。随后,通过测试相对于波前的位置,来测试某一位置的任务是否已经完成。
在实施例中,控制单元30通过从任务缓冲器36中取出来自矩阵中位置的标识,向从处理器核12之一提供确认(acknowledge)信号并标识位置,来响应来自从处理器核12的请求信号。最初,控制单元30可以取出矩阵中的初始位置,例如左上处的位置,并通过向从处理器核12之一提供确认信号并标识该位置,来响应来自该处理器核12的请求信号。
任务准备电路34在先前位置的任务执行完成时,在任务缓冲器36中添加新的任务位置,这些新的任务位置取决于先前位置的结果。图4示出了任务准备电路34的工作实施例的流程图。在该实施例中,控制单元30检测已经由从处理器核12完成的任务的位置,并向任务准备电路34发信号通知这些位置。在第一步骤41中,任务准备电路34接收已经完成的任务的位置指示。在第二步骤42中,任务准备电路34使用依赖性模式存储器32中依赖性的向量的逆(inverse),来标识依赖于已完成任务的候选任务的位置。因此,例如如果依赖性模式规定了向量(-1,0),(-1,-1)和(0,-1),则位置(x,y)的任务完成将导致标识出候选位置(x+1,y),(x+1,y+1)和(x,y+1)。
在第三步骤43中,任务准备电路34选择候选任务。在第四步骤44中,任务准备电路34使用依赖性模式存储器32中依赖性模式的向量,来标识所选候选任务的先导任务的位置。在第五步骤45中,任务准备电路34测试这些位置处的先导任务是否已经全部完成。如果全部完成,则任务准备电路34执行第六步骤46,将该候选任务的位置指示放入任务缓冲器36中。在第六步骤46之后,或者如果先导任务尚未全部完成则在第五步骤45之后,任务准备电路34执行第七步骤47,确定是否已经考虑了所有候选任务。如果没有考虑所有候选任务,则处理从第三步骤43开始重复。否则,任务准备电路34返回第一步骤41,等待已经完成的另一任务的位置标识。
作为该处理的备选方案,任务准备电路34可以重复扫描矩阵中尚未开始执行的所有任务,使用这些任务作为候选任务来确定所有先导任务已经完成的任务的位置且将这些任务的位置指示放入任务缓冲器36中。这需要比图4中的处理更多的时间。当使用波前码来表示完成任务和未完成任务之间的边界时,这种扫描可以替换为选择波前所表示的边界上的任意位置。
控制单元30在检测到从处理器核12请求新任务时,查阅任务缓冲器36。控制单元30将来自任务缓冲器的任务位置指示发送至发出请求的从处理器核12,并从任务缓冲器36中去除该位置。
在实施例中,控制单元30在每次检测到任务完成时,在任务位置映射存储器中进行写入,以针对该任务的位置指示该位置的任务已经完成。在该实施例中,任务准备电路34可以从任务位置映射存储器中进行读取,以确定所选位置的任务是否已经完成。当使用波前码时,第五步骤45包括测试先导任务的位置是否在与已完成任务相对应的波前一侧。针对用来生成候选的位置(第一步骤41中接收到的位置)的波前码更新位置可以用作这种确定的起始点。这使得不必为此目的扫描整个波前码。
在实施例中,各个不同重复依赖性模式可以用于相应的不同位置组处的任务。因此,例如第一依赖性模式集合可以用于位置在矩阵第一边界上(非角落处的位置)的任务,第二依赖性模式集合可以用于位置在矩阵第二边界上(非角落处的位置)的任务,以及第三依赖性模式集合可以用于位置并非在第一和第二边界上的任务。
在一个实施例中,这通过使用矩阵中的多个依赖性模式集合来予以支持。可选地,可以使用多个矩阵。在使用相同矩阵中多个依赖性模式集合的实施例中,这通过根据由主处理器核10提供的信息,针对矩阵中相应的位置组,在依赖性模式存储器32中存储多个依赖性模式集合来予以支持。另外,主处理器核10提供将位置组与相应依赖性模式集合链接的信息。该信息被发送至任务准备电路34。任务准备电路34被配置为标识每一候选任务的组,以选择适用于该位置的依赖性模式集合,并使用选择的该依赖性模式集合来测试该候选任务的所有先导任务是否已经完成。标识候选任务的组例如可以包括检测其位置是否位于矩阵的边界上,或者确定从该任务的位置到边界的行和/或列数并根据该数目来选择依赖性模式集合。
当提供多个依赖性模式集合时,所有集合可以用于在第二步骤42中生成候选任务的位置。通过考虑候选的组并且如果该候选并不属于与已经用于生成该候选的依赖性模式集合相对应的组则去除该候选,可以减少所生成的候选的数目。
在大多数实施例中,一个依赖性模式集合导致这样的候选任务位置,所述候选任务位置包括可从其他依赖性模式集合得到的所有候选任务位置。在这些实施例中,可以向任务准备电路34提供信息来标识这一个依赖性模式集合,任务准备电路34被配置为在第二步骤42中仅使用所标识的这一个依赖性模式集合来生成候选任务。
可选地,可以针对已完成任务定义其他组,所述其他组耦接至相应的依赖性模式的逆,任务准备电路34被配置为在第二步骤42中标识已完成任务的其他组,并使用该其他组的逆来生成候选任务位置。
在实施例中,从处理器核12和任务准备电路34可以被配置为忽略指向矩阵外任务的依赖性。在这种情况下,对于整个矩阵而言可能单独的依赖性模式就足矣,而无需针对边界附近位置的专门依赖性模式。
控制单元30被配置为检测所有任务是否已经完成。这例如可以如下来实现:维护表示未完成任务的计数器值,每当完成任务时递减计数器值,并测试计数器值是否已经达到零。在检测到所有任务完成时,控制单元30向主处理器核10发信号通知完成,之后主处理器核10可以继续其程序,执行后续的指令以及可选地开始新的任务矩阵。
在另一实施例中,主处理器核10被配置为在执行开始执行任务矩阵的指令之后一直执行其程序,直至矩阵中的所有任务已经完成。在这种情况下,主处理器核10可以在随后的阶段中执行测试完成的指令。
主处理器核10的程序可以包含在前一矩阵中的所有任务执行之前发起执行另一任务矩阵的指令。当从处理器核12中针对该另一矩阵中任务的程序代码与针对前一矩阵的程序代码相同时,这可以通过在矩阵中位置标识之外使用矩阵标识以标识任务来实现。针对各矩阵的相应依赖性模式集合可以一起存储在依赖性模式存储器32中。在这种情况下,任务准备电路34被配置为使用矩阵的标识以及该矩阵中任务的位置标识来从依赖性模式存储器32中选择适用的依赖性模式集合。
在另一实施例中,依赖性模式可以包括不同矩阵之间的依赖性。因此,例如依赖性模式(0,0,-1)表示当前矩阵中某一位置处的任务对于前一矩阵(以“-1”表示)中相应位置的依赖性。在该实施例中,任务准备电路34被配置为针对每一任务使用矩阵的标识以及该矩阵中任务的位置标识来从依赖性模式存储器32中选择适用的依赖性模式集合,以测试所有先导任务是否已经完成,以及可选地生成候选任务。
这种实施例可以用于对边界给出专门处理。在这种情况下,任务矩阵可以从主处理器核10以指令表示为一系列矩阵,这些矩阵分别表示上边界处的行、左边界处的列以及其他子矩阵。在这种情况下,主处理器核10可以针对行矩阵、列矩阵和其他矩阵连续执行开始任务的指令,向硬件任务调度器14发信号通知这些矩阵内以及这些矩阵之间的依赖性模式。
在一个实施例中,从处理器核12的程序代码针对所有矩阵中所有位置处的任务相同,应理解,在该程序代码内,取决于矩阵或矩阵中的位置,可以存在向代码不同部分的跳转或者在代码不同部分之间跳转。因此,从处理器核12可以按照快速连续方式针对不同位置和矩阵执行任务。这可以通过组合针对不同矩阵和不同位置的程序来建立代码从而来实现。这样,所有从处理器核12可用于执行所有矩阵以及矩阵中所有位置的任务。备选地,一些从处理器核12可以临时或永久地专用于特定位置组或者特定矩阵,但是在这种情况下,控制单元30必须根据请求任务的从处理器核12,从任务缓冲器36中选择任务。这可以通过为各种类型的从处理器核12提供多个任务缓冲器36来支持。
在依赖性模式存储器32中存储多个矩阵的依赖性模式的实施例中,可以使用该存储器的存储管理,以在相应的矩阵中所有位置的任务都已经完成时释放依赖性模式占据的存储器。可以定义矩阵的顺序,由于依赖性,矩阵将按照该顺序依次完成。在这种情况下,可以使用FIFO存储器管理,每次在相应的矩阵中所有位置的任务都已经完成时丢弃存储的第一依赖性模式集合。
在实施例中,动态选择依赖性模式的至少一部分。这例如可以适用于图像解码或编码任务,其中使用数据相关运动向量或者数据相关参考图像。在该实施例中,主处理器核10可以根据运行时间变量数据,动态选择数据依赖性模式,并使选择的数据依赖性模式存储在依赖性模式存储器32中供任务准备电路34使用。例如,主处理器核10可以动态设置相对于另一矩阵的依赖性,和/或动态设置整个矩阵的依赖性模式。
在另一实施例中,主处理器核10可以动态定义矩阵内的位置组,针对每一组具有依赖性模式,并使所选的数据依赖性模式存储在依赖性模式存储器32中供任务准备电路34使用。
任务准备电路34可实现为可编程电路,存储有用于执行所述功能的程序。备选地,可以使用专用电路来执行这些功能,使用算术电路来根据其他任务位置和依赖性模式来计算任务位置。
尽管作为示例已经示出了单个主处理器核10,但是应当理解,可以使用多个主处理器核。可选地,从处理器核中的一个或多个可以兼作主处理器核。
本领域技术人员在实施所要求保护的本发明时,根据对附图、公开和所附权利要求的研究,可以理解和做出对所公开实施例的其他变动。在权利要求中,词语“包括”不排除其他元件或步骤,以及不定冠词不排除多数。单个处理器或其他单元可以满足权利要求中所列出的若干项的功能。在彼此不同的从属权利要求中列举特定措施的事实并不表示这些措施不能有利地组合使用。计算机程序可以存储/分发在合适的介质上,如与其他硬件一起提供或者作为其他硬件一部分的光存储介质或固态介质,但是也可以以其他形式分发,例如通过互联网或者其他有线或无线电信系统。权利要求中的附图标记不应理解为限制范围。

Claims (11)

1.一种多处理系统,包括:
-多个从处理器核(12),被配置为执行至少部分地由矩阵中的位置来标识的任务;
-依赖性模式存储器(32);
-主处理器核(10),被配置为执行包括如下指令的程序,所述指令定义任务、矩阵以及适用于多个任务中每一任务的任务依赖性模式,该主处理器核(10)被配置为使任务依赖性模式存储在依赖性模式存储器(32)中;
-硬件任务调度器(14),耦接至主处理核(10)、从处理器核(12)和依赖性模式存储器(32),该硬件任务调度器(14)被配置为将准备就绪供执行的任务分配给从处理器核(12),该硬件任务调度器(14)被配置为根据关于任务已经完成的另外位置以及适用于这些另外位置的任务依赖性模式的信息,来在运行时间计算准备就绪供执行的任务的位置。
2.根据权利要求1所述的多处理系统,其中,依赖性模式存储器(32)被配置为同时存储适用于相应的不同任务组或者适用于矩阵中相应的任务位置组的多个任务依赖性模式,硬件任务调度器(14)被配置为根据计算所针对的任务组或位置组,来从依赖性模式存储器(32)中选择任务依赖性模式以在运行时间计算准备就绪供执行的任务的位置。
3.根据权利要求2所述的多处理系统,其中,硬件任务调度器(14)被配置为至少根据从组中的位置到矩阵边沿的距离,来区分不同位置组。
4.根据权利要求1所述的多处理系统,其中,主处理器核(10)被配置为根据运行时间变量数据,选择任务依赖性模式。
5.根据权利要求1所述的多处理系统,其中,硬件任务调度器(14)被配置为:接收已经完成任务的位置的标识;响应于接收到标识,使用适用于已经完成任务的所述另外位置的任务依赖性模式的逆,来生成候选任务;以及通过根据任务依赖性模式,筛选候选任务,来标识准备就绪供执行的任务。
6.根据权利要求1所述的多处理系统,其中,矩阵具有至少三个维度,任务依赖性模式包括在所述至少三个维度上具有非零分量的相对依赖性向量。
7.根据权利要求1所述的多处理系统,包括用于表示矩阵中将已完成任务的位置与未完成任务的位置相分开的位置的波前码的存储区。
8.一种在多处理系统中执行任务的方法,所述多处理系统具有主处理器核(10)和多个从处理器核(12),该方法包括:
-在主处理器核(10)中执行程序,定义任务的矩阵,其中任务处于矩阵中相应位置处,以及定义适用于多个任务且相对于位置定义的任务依赖性模式;
-根据关于任务已经完成的位置以及适用于这些任务的任务依赖性模式的信息,来在运行时间计算准备就绪供执行的任务的位置;
-将已经计算为准备就绪供执行的任务分配给从处理器核(12)。
9.根据权利要求8所述的方法,其中,主处理器核中的程序根据运行时间变量数据,定义任务依赖性模式。
10.根据权利要求8所述的方法,其中,主处理器核中的程序针对相应的不同任务组或者矩阵中任务的位置组,定义多个任务依赖性模式,所述在运行时间计算包括根据计算所针对的任务组或位置组,来从依赖性模式存储器在运行时间计算准备就绪供执行的任务的位置。
11.根据权利要求8所述的方法,其中,矩阵为至少三维的矩阵,针对至少一组位置的任务依赖性模式包括在所述至少三个维度上具有非零分量的相对依赖性向量。
CN2009801255414A 2008-07-02 2009-07-02 使用运行时间任务调度的多处理器电路 Pending CN102077172A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP08159471.5 2008-07-02
EP08159471 2008-07-02
PCT/IB2009/052880 WO2010001353A1 (en) 2008-07-02 2009-07-02 A multiprocessor circuit using run-time task scheduling

Publications (1)

Publication Number Publication Date
CN102077172A true CN102077172A (zh) 2011-05-25

Family

ID=41134639

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801255414A Pending CN102077172A (zh) 2008-07-02 2009-07-02 使用运行时间任务调度的多处理器电路

Country Status (4)

Country Link
US (1) US8607246B2 (zh)
EP (1) EP2297637A1 (zh)
CN (1) CN102077172A (zh)
WO (1) WO2010001353A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508704A (zh) * 2011-11-10 2012-06-20 上海市共进通信技术有限公司 计算机软件系统中实现任务分解和并行处理控制的方法
CN102831012A (zh) * 2011-06-16 2012-12-19 日立(中国)研究开发有限公司 多节点分布式系统中的任务调度装置和任务调度方法
CN105593818A (zh) * 2014-10-03 2016-05-18 数据梅尔公司 用于调度分布式工作流程任务的装置和方法
CN110569122A (zh) * 2018-06-05 2019-12-13 三星电子株式会社 多处理器系统、多核处理设备及其操作方法
CN110663051A (zh) * 2017-05-26 2020-01-07 甲骨文国际公司 解决车辆调度中的跨车辆依赖性的计算机化系统和方法
WO2022257898A1 (zh) * 2021-06-10 2022-12-15 华为技术有限公司 一种任务调度的方法、系统和硬件任务调度器
CN110569122B (zh) * 2018-06-05 2024-06-07 三星电子株式会社 多处理器系统、多核处理设备及其操作方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011148920A1 (ja) * 2010-05-26 2011-12-01 日本電気株式会社 マルチプロセッサシステム、実行制御方法、実行制御プログラム
JP5613547B2 (ja) * 2010-12-14 2014-10-22 株式会社スクウェア・エニックス タスクベースの並列プログラミング言語
CN102681894A (zh) * 2011-03-09 2012-09-19 中兴通讯股份有限公司 一种多任务并发调度方法及系统
US8875146B2 (en) 2011-08-01 2014-10-28 Honeywell International Inc. Systems and methods for bounding processing times on multiple processing units
US8621473B2 (en) 2011-08-01 2013-12-31 Honeywell International Inc. Constrained rate monotonic analysis and scheduling
US9207977B2 (en) 2012-02-06 2015-12-08 Honeywell International Inc. Systems and methods for task grouping on multi-processors
US9612868B2 (en) 2012-10-31 2017-04-04 Honeywell International Inc. Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors
GB2522057B (en) * 2014-01-13 2021-02-24 Advanced Risc Mach Ltd A data processing system and method for handling multiple transactions
US9442760B2 (en) * 2014-10-03 2016-09-13 Microsoft Technology Licensing, Llc Job scheduling using expected server performance information
US9910469B2 (en) 2014-12-18 2018-03-06 The Boeing Company DC-based peer-to-peer network for aircraft
US9529643B2 (en) 2015-01-26 2016-12-27 Qualcomm Incorporated Method and system for accelerating task control flow
CN105159706A (zh) * 2015-08-07 2015-12-16 北京思特奇信息技术股份有限公司 一种流程化程序页面配置的执行方法及系统
WO2018136852A1 (en) * 2017-01-21 2018-07-26 Schlumberger Technology Corporation Scalable computation and communication methods for domain decomposition of large-scale numerical simulations
US11372711B2 (en) 2019-06-29 2022-06-28 Intel Corporation Apparatus and method for fault handling of an offload transaction
US11182208B2 (en) * 2019-06-29 2021-11-23 Intel Corporation Core-to-core start “offload” instruction(s)
US11321144B2 (en) 2019-06-29 2022-05-03 Intel Corporation Method and apparatus for efficiently managing offload work between processing units

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1879092A (zh) * 2003-11-12 2006-12-13 松下电器产业株式会社 高速缓冲存储器及其控制方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL93239A (en) 1990-02-01 1993-03-15 Technion Res & Dev Foundation High flow-rate synchronizer/schedular apparatus for multiprocessors
US5265203A (en) 1990-09-14 1993-11-23 Hughes Aircraft Company Hardware multiprocess scheduler in a graphics rendering processor
JPH04184556A (ja) 1990-11-20 1992-07-01 Mitsubishi Electric Corp 多重処理システムおよび多重処理システムの同期制御方法
US5832262A (en) 1995-09-14 1998-11-03 Lockheed Martin Corporation Realtime hardware scheduler utilizing processor message passing and queue management cells
US20020184291A1 (en) 2001-05-31 2002-12-05 Hogenauer Eugene B. Method and system for scheduling in an adaptable computing engine
US7533382B2 (en) 2002-10-30 2009-05-12 Stmicroelectronics, Inc. Hyperprocessor
US7353517B2 (en) * 2003-09-25 2008-04-01 International Business Machines Corporation System and method for CPI load balancing in SMT processors
EP1763748A1 (en) 2004-05-27 2007-03-21 Koninklijke Philips Electronics N.V. Signal processing apparatus

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1879092A (zh) * 2003-11-12 2006-12-13 松下电器产业株式会社 高速缓冲存储器及其控制方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
COR MEENDERINCK 等: "Parallel Scalability of Video Decoders", 《J SIGN PROCESS SYST》 *
MAGNUS SJÄLANDER: "Efficient And Flexible Embedded Systems And Datapath Components - Chapter G – A Look-Ahead Task Management Unit for Embedded Multi-Core Architectures", 《THESIS FOR THE DEGREE OF DOCTOR OF PHILOSOPHY》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102831012A (zh) * 2011-06-16 2012-12-19 日立(中国)研究开发有限公司 多节点分布式系统中的任务调度装置和任务调度方法
CN102508704A (zh) * 2011-11-10 2012-06-20 上海市共进通信技术有限公司 计算机软件系统中实现任务分解和并行处理控制的方法
CN105593818A (zh) * 2014-10-03 2016-05-18 数据梅尔公司 用于调度分布式工作流程任务的装置和方法
CN105593818B (zh) * 2014-10-03 2020-09-18 数据梅尔公司 用于调度分布式工作流程任务的装置和方法
CN110663051A (zh) * 2017-05-26 2020-01-07 甲骨文国际公司 解决车辆调度中的跨车辆依赖性的计算机化系统和方法
CN110663051B (zh) * 2017-05-26 2023-11-24 甲骨文国际公司 解决车辆调度中的跨车辆依赖性的计算机化系统和方法
CN110569122A (zh) * 2018-06-05 2019-12-13 三星电子株式会社 多处理器系统、多核处理设备及其操作方法
CN110569122B (zh) * 2018-06-05 2024-06-07 三星电子株式会社 多处理器系统、多核处理设备及其操作方法
WO2022257898A1 (zh) * 2021-06-10 2022-12-15 华为技术有限公司 一种任务调度的方法、系统和硬件任务调度器

Also Published As

Publication number Publication date
US8607246B2 (en) 2013-12-10
EP2297637A1 (en) 2011-03-23
US20110107345A1 (en) 2011-05-05
WO2010001353A1 (en) 2010-01-07

Similar Documents

Publication Publication Date Title
CN102077172A (zh) 使用运行时间任务调度的多处理器电路
KR102356705B1 (ko) 커널 퓨징, 리사이징 및 인터리빙 자동 연산 방법
US8990827B2 (en) Optimizing data warehousing applications for GPUs using dynamic stream scheduling and dispatch of fused and split kernels
CN102016926B (zh) 具有混合精度指令执行的可编程串流处理器
EP2711839A1 (en) Parallel processing device, parallel processing method, optimization device, optimization method, and computer program
KR20190043643A (ko) 높은 성능, 전력 효율, 프로그램 가능 이미지 처리 프로세싱을 위한 아키텍처
CN101299194B (zh) 基于可配置处理器的异构多核系统线程级动态调度方法
CN101802789A (zh) 多处理器上的并行运行时执行
CN103460188A (zh) 用于基于活跃分析的再具体化以减少寄存器不足并提高并行度的技术
US20110161939A1 (en) Apparatus for displaying the result of parallel program analysis and method of displaying the result of parallel program analysis
US10884715B2 (en) Method for generating source code
KR20120070215A (ko) 멀티미디어 아키텍처 패턴 결정 방법, 싱글코어에서 멀티코어 기반으로의 아키텍처 전환 장치 및 방법
JP2020519979A (ja) 設定可能な数のアクティブなコアを有する画像処理プロセッサおよびサポートする内部ネットワーク
US10353591B2 (en) Fused shader programs
US10310823B2 (en) Program development support system and program development support software
CN104011682A (zh) 应用级推测性处理
JP4898365B2 (ja) 組み込み用プログラム開発装置、及びプログラム自動生成方法
US20150026702A1 (en) Data processing system, method and program product of creating program information, and program information display system
JP2007080049A (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
US8095806B2 (en) Method of power simulation and power simulator
CN114119661A (zh) 一种目标追踪处理器、目标追踪方法及装置
Jantz et al. Eliminating false phase interactions to reduce optimization phase order search space
JP2013161219A (ja) コード生成装置、及びコード生成プログラム
KR101062258B1 (ko) 실시간 이벤트 패턴 처리기를 이용한 전사적 자원 관리 업무 프로그램 개발 방법
JP6790488B2 (ja) 評価装置、評価方法および評価プログラム

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

Application publication date: 20110525