CN1910554A - 多处理器***中处理器任务迁移的方法与装置 - Google Patents
多处理器***中处理器任务迁移的方法与装置 Download PDFInfo
- Publication number
- CN1910554A CN1910554A CNA2005800029511A CN200580002951A CN1910554A CN 1910554 A CN1910554 A CN 1910554A CN A2005800029511 A CNA2005800029511 A CN A2005800029511A CN 200580002951 A CN200580002951 A CN 200580002951A CN 1910554 A CN1910554 A CN 1910554A
- Authority
- CN
- China
- Prior art keywords
- processing unit
- sub
- processor tasks
- priority
- processor
- 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
-
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用于在多处理***上执行处理器任务的方法与装置,所述多处理***包括可以访问共享存储器的多个子处理单元和主处理器单元。每个子处理单元包括独立于共享存储器的片上局部存储器。所述方法与装置考虑到:规定把处理器任务从共享存储器拷贝于子处理单元的局部存储器中,以执行这些处理器任务,并且禁止从共享存储器执行处理器任务,以及把至少一个处理器任务从一个子处理单元迁移到另一个子处理单元。
Description
技术领域
本发明涉及管理多处理***中管理处理器任务的方法与装置,具体地讲,本发明涉及在实质上自己支配(sel governing)基础上调度和执行多处理***的子处理单元之间处理器任务的方法与装置。
背景技术
实时、多媒体应用正变得越来越为重要。这些应用要求极快的处理速度,例如每秒数千兆比特的数据。尽管单个子处理单元能够具有很快的处理速度,但它们通常不能与多处理器体系结构的处理速度相比。实际上,在多处理器***中,多个子处理器可以并行(至少协同)运行以达到所希望的处理结果。
可以利用多处理技术的计算机和计算设备的类型是相当广泛的。除了个人计算机(PC)和服务器外,这些计算设备还包括蜂窝电话、移动计算机、个人数字助手(PDA)、机顶盒、数字电视以及许多其它设备。
实时、多媒体软件应用由处理代码例如处理指令和数据构成。至少某些处理指令和/或处理数据的集合可以被称为一处理器任务。尽管多处理***中可以顺序地执行一处理器任务中的程序语句,但可以在不同的处理器上并行地执行不同的处理器任务。因此,可以考虑让软件应用包含由多处理***执行的处理器任务。
多处理***中的设计关注点在于如何管理***的哪些子处理单元执行哪些处理器任务。在某些多处理***中,处理器任务指定子处理单元中的哪些将进行该执行。这方案的缺点是,程序员可能没有优化子处理单元之间处理器任务的分配。例如,一或多个处理器任务可以同时指定相同的子处理单元。这要求把某些处理器任务挂起,直至所指定的子处理单元变得可用,由此延迟了它们的执行。不幸的是,关于处理器任务的执行,这还导致了无法预测的延迟。
其它***提出了一个管理部件与子处理单元进行通信并且在它们之间调度处理器任务。因此,必须采用通信协议以促进这样的通信。不幸的是,通信协议通常导致管理部件和子处理单元之间的消息延迟。实际上,这样的协议可能要求对存储器映像的I/O空间(使用存储器映像的寄存器)的使用,这样的协议通常是较慢的。另外,管理部件(它们可能本身为***的处理器)可能利用多个分区领域(partition domain),这些分区领域可能要求显著的时间(例如700us)进行改变。这些特征也延迟了对处理器任务的执行,从而导致了不可预测的延迟。因此,牺牲了多处理***的总处理器吞吐量和效率,从而可能导致对***用户的实时与/或多媒体体验的显著影响。
因此,在本技术领域中,需要新的方法与装置,以实现减轻硬处理器错误负面影响的高效多处理。
发明内容
根据本发明的一或多个方面,考虑了一种在多处理***上执行处理器任务的方法。所述多处理***包括可以访问共享存储器的多个子处理单元和主处理单元。每个子处理单元包括独立于共享存储器的片上局部存储器。该方法包括:规定把处理器任务从共享存储器拷贝到子处理单元的局部存储器中以执行之,并禁止从共享存储器执行处理器任务;以及把至少一个处理器任务从一个子处理单元迁移到另一个子处理单元。
该至少一个处理器任务的迁移基于某条件。所述条件可以基于与处理器任务相关联的相应的优先级水平。
在本发明的一或多个实施例中,该条件的满足和迁移的启动不基于抢占动作。优选地,该方法还包括:要求子处理单元基于处理器任务的优先级水平从共享存储器中选择处理器任务以供执行。该方法还可以包括:要求子处理单元在从共享存储器中选择较低优先级的处理器任务之前,选择较高优先级的处理器任务。
较佳的做法是令该方法还包括从共享存储器选择第一优先级水平的第一处理器任务,供第一子处理单元加以执行;从共享存储器选择第二优先级水平的第二处理器任务,供第二子处理单元加以执行;以及把第一子处理单元让与第三优先级水平的第三处理器任务,第三处理器任务被选择,这是因为其优先级水平高于就绪待执行的任何其它处理器任务。
该方法还可以包括:从第一子处理单元的局部存储器把第一处理器任务写回共享存储器。优选地,该方法包括:把第二子处理单元让与第一处理器任务,第一处理器任务被选择,这是因为其优先级水平高于局部存储器中就绪待执行的任何其它处理器任务,由此非抢占地把第一处理器任务从第一子处理单元迁移至第二子处理单元。该方法还可以包括:把第二处理器任务从第二子处理单元的局部存储器写回共享存储器。
该方法还考虑,运行在子处理单元之一上的较低优先级的处理器任务可为较高优先级的处理器任务抢占性地取代。该方法还可以包括:要求子处理单元在从共享存储器中选择较低优先级的处理器任务之前,选择较高优先级的处理器任务。
优选地,该方法还包括:从共享存储器中选择相关联的优先级水平的多个处理器任务,以供多个子处理单元执行;使得共享存储器中具有给定优先级水平的第n处理器任务变为就绪待执行的;以及判断该给定优先级水平是否高于所述多个处理器任务的优先级水平中的任何一个。优选地,子处理单元中的至少一个可操作来执行所述判断。该方法还可以包括抢占性地用第n处理器任务取代具有比该给定优先级水平低的优先级水平的多个处理器任务中的一个。
子处理单元中的一或多个可以可操作来至少启动所述取代,并且使得所述多个子处理单元中的所述一个让与较低优先级水平的处理器任务的执行。该方法可以包括:规定该启动子处理单元向该让与子处理单元发布中断,以启动对较低优先级水平的处理器任务的取代。优选地,该方法还包括:规定该让与子处理单元把较低优先级的处理器任务从其局部存储器写回共享存储器。
根据本发明的一或多个进一步的方面,该方法优选地包括:规定子处理单元可以判断共享存储器中的具有给定优先级水平的第n处理器任务是否高于所述多个处理器任务的优先级水平中任何一个。
优选地,在判断该第n处理器任务是否具有比所述多个处理器任务高的优先级水平过程中,子处理单元使用共享任务优先级表。该共享任务优先级表可以包括关于子处理单元标识符和处理器任务优先级标识符的表项,而且每个表项可以包括子处理单元标识符和优先级标识符对儿,其指示了运行在相关联的子处理单元上的给定处理器任务的优先级水平。
试图判断第n处理器任务是否具有比所述多个处理器任务高的优先级水平的子处理单元搜寻共享任务优先级表以找到指示较低优先级水平的表项对儿。优选地,该较低的优先级水平是共享任务优先级表的最低优先级水平。子处理单元优选地修改共享任务优先级表,使得表项对儿为当前的。
根据本发明的一或多个进一步的方面,一种方法包括:规定把处理器任务从共享存储器拷贝到子处理单元的局部存储器中以执行之,并且禁止从共享存储器执行处理器任务;规定子处理单元基于处理器任务的优先级水平,从共享存储器中选择处理器任务以供执行;以及响应于一给定子处理单元所接收的中断,把运行在该给定子处理单元上的较高优先级的处理器任务迁移到正在运行较低优先级的处理器任务的另一子处理单元。
该方法还可以包括:从共享存储器选择相关联的优先级水平的多个处理器任务,以供多个子处理单元加以执行;在该给定子处理单元处接收中断;以及判断运行在多个子处理单元上的所述多个处理器任务中的哪个具有比运行在该给定子处理单元上的处理器任务的优先级水平低的最低优先级水平。该给定子处理单元可操作来执行该判断。
较佳的做法是令该方法还包括:把给定处理器任务迁移至正在运行具有最低优先级水平的处理器任务的子处理单元,并且取代该处理器任务。该给定子处理单元可以操作来至少启动该迁移,并且使得正在运行具有最低优先级水平的处理器任务的子处理单元把执行让与较高优先级水平的该给定处理器任务。该给定子处理单元优选地向该让与子处理单元发布中断,以便启动对最低优先级水平的处理器任务的取代。
该让与的子处理单元可以把较低优先级的处理器任务从其局部存储器写回到共享存储器中。该让与子处理单元还可以把较高优先级的给定处理器任务从给定子处理单元的局部存储器拷贝到其局部存储器中,以供执行。
在判断哪个处理器任务具有最低优先级水平的过程中,该给定子处理单元优选地使用共享任务优先级表。该共享任务优先级表可以包括关于子处理单元标识符和处理器任务优先级标识符的表项,而且每个表项可以包括一个子处理单元标识符和优先级标识符对儿,其指示了运行在相关联的子处理单元上的给定处理器任务的优先级水平。该给定子处理单元可以搜寻共享任务优先级表,以找出指示最低优先级水平的表项对儿。子处理单元优选地修改共享任务优先级表,使得表项对儿为当前的。
根据本发明的一或多个进一步的方面,一种多处理器装置包括:多个子处理单元,每个子处理单元包括其中执行处理器任务的片上局部存储器;以及共享存储器,可操作来存储就绪待执行的处理器任务。把这些处理器任务从共享存储器拷贝到子处理单元的局部存储器,以执行之,并且不从共享存储器执行这些处理器任务,以及把至少一个处理器任务从一个子处理单元迁移到另一个子处理单元。
根据本发明的一或多个进一步的方面,该装置的子处理单元可操作来执行以上所讨论的方法步骤。
根据此处结合附图所进行的描述,这一领域中的熟练技术人员将会明显意识到本发明的其它方面、特征以及优点。
附图说明
为了便于说明,图中描述了当前较佳的几种形式,但应该认识到,本发明并不局限于所示出的精确配置与安装。
图1是说明根据本发明的一或多个方面的多处理***的结构的图。
图2是方框图,说明了共享存储器中处理器任务的存储。
图3是说明根据本发明的处理器元件(PE)的优选结构的图。
图4是说明根据本发明的示范性子处理单元(SPU)的结构的图。
图5说明根据本发明的一或多个方面可以使用的处理器任务表的例子。
图6是图5的任务表所建立的处理器任务的链接列表的状态图。
图7说明可以与图5的任务表结合用来管理处理器任务的执行的任务队列的例子。
图8是一流程图,说明了根据本发明的一或多个方面可以由多处理***执行的过程步骤。
图9是一流程图,说明了根据本发明可以由多处理***执行的进一步的过程步骤。
图10是一流程图,说明了根据本发明可以由多处理***所执行的再进一步的过程步骤。
图11是一流程图,说明了根据本发明的各个方面可以由多处理***执行的用于启动共享存储器中的处理器任务的过程步骤。
图12为一状态图,说明了根据本发明的一或多个方面的处理器任务的不同状况状态。
图13为一方框图,说明了根据本发明的一或多个方面如何可从共享存储器拷贝处理器任务以及如何可把处理器任务写回共享存储器。
图14为时序图,说明了与图13的拷贝和写回技术相关联的处理延迟。
图15为一方框图,说明了根据本发明的一或多个进一步的方面如何可从共享存储器拷贝处理器任务以及如何可把处理器任务写回共享存储器。
图16为一时序图,说明了与图15的拷贝和写回技术相关联的处理延迟。
图17为一方框图,说明了根据本发明的一或多个进一步的方面如何可从共享存储器拷贝处理器任务以及如何可把处理器任务写回共享存储器。
图18为一时序图,说明了与图17的拷贝和写回技术相关联的处理延迟。
图19为一方框图,说明了根据本发明的一或多个进一步的方面如何可从共享存储器拷贝处理器任务以及如何可把处理器任务写回共享存储器。
图20为一方框图,说明了本发明的某些方面的非抢占处理器任务迁移特征。
图21为一方框图,说明了本发明的某些方面的进一步的非抢占处理器任务迁移特征。
图22为一方框图,说明了本发明的某些方面的再进一步的非抢占处理器任务迁移特征。
图23为一方框图,说明了本发明的某些方面的抢占多任务特征。
图24为一方框图,说明了本发明的某些方面的进一步的抢占多任务处理特征。
图25为一方框图,说明了本发明的某些方面的抢占处理器任务迁移特征。
图26为一方框图,说明了本发明的某些方面的进一步的抢占处理器任务迁移特征。
图27为说明了根据本发明的一或多个方面的某些处理器中断技术的部分方框图和部分流程图。
图28为说明了根据本发明的一或多个方面的进一步的处理器中断技术的部分方框图和部分流程图。
图29为说明了根据本发明的一或多个方面的再进一步的处理器中断技术的部分方框图和部分流程图。
图30说明了根据本发明的一或多个方面的、包括一个以上的子处理单元的处理***的结构。
图31为根据本发明的一或多个方面的分布式多处理***的***图。
图32为可结合本发明的多处理单元一起使用的软件包特征的方框图。
具体实施方式
参照这些图,其中以相同的数字指示相同的图元,图1中示出了根据本发明的一或多个方面的多处理***100。多处理***100包括通过总线108耦接到诸如DRAM的共享存储器106的多个(可以使用任何数目)处理器102。应该加以注意的是,共享存储器106不必为DRAM,实际上,可以使用任何已知的或今后所开发的技术形成共享存储器106。
优选地,处理器102中的一个为主处理单元,例如处理单元102A。优选地,其它的处理单元102为子处理单元(SPU),例如处理单元102B、102C、102D等。可以使用任何已知的或今后所开发的计算机体系结构实现子处理单元102。不必使用相同的体系结构实现所有的子处理单元102,实际上,它们可以为异构的或同构的配置。应该注意的是,可以相对子处理单元102B~D本地布置主处理单元102A,例如,在同一芯片中、同一包装中、同一电路板上、同一产品中等。作为替代,也可以把主处理单元102A远离子处理单元102B~D加以放置,例如,在不同的产品中,可以通过总线、通信网络(例如因特网)等将它们耦接。类似地,也可以把子处理单元102B~D互相局部地或远程地加以放置。
主处理单元102A可用于调度和协调子处理单元102B~D对数据和应用的处理,使得子处理单元102B~D以并行和独立的方式执行对这些数据和应用的处理。然而,根据本发明的某些方面,在子处理单元之间调度处理器任务的执行的过程中,主处理单元102并不起核心作用。相反,优选地把这样的调度留给各SPU本身。
图1中各个处理器102的作用和功能的指派是灵活的。例如,处理器102中的任何一个可以为主处理器单元或子处理单元。
参照图2,主处理单元102A优选地承担对于子处理单元102B~F的服务处理器的角色,特别当其调度和管理SPU之间的处理器任务时。根据本发明的某些方面,主处理单元102A可以评估包含在软件应用中的处理器任务,并且参与共享存储器106的分配、SPU的分配、以及共享存储器106中处理器任务110的初始存储。关于共享存储器106的分配,主处理单元102A优选地判断应该把多少存储器空间分配给给定数目的处理器任务110。为此,主处理单元102A可以分配共享存储器106的第一区域106A用于某些处理器任务110的存储,并且可以分配共享存储器106的第二区域106B用于其它处理器任务110的存储。主处理单元102A也可以针对共享存储器106的各区域106A和106B中的数据同步建立规则。
根据本发明的一或多个进一步的方面,共享存储器106的各区域106A和106B仅可由规定数目的子处理单元102访问,例如,仅可由那些被分配执行存储在共享存储器106的给定区域中的特定处理器任务110的子处理单元102访问。例如,优选地,仅子处理单元102B~D是被准许访问共享存储器106的第一区域106A中的处理器任务110的SPU。类似地,优选地,仅子处理单元102E~F是被准许访问共享存储器106的第二区域106B中的处理器任务110的SPU。可在专利号6526491名为“MEMORY PROTECTIONSYSTEM AND METHOD FOR COMPUTER ARCHITECTURE FORBROADBAND NETWORKS(宽带网络计算机体系结构的存储器保护***与方法)”的美国专利中查阅到有关保护共享存储器106的各区域106A和106B的技术的细节,这一专利的全部公开并入此处,以作参考。
根据本发明的一或多个进一步的方面,一旦处理器任务110被布置在共享存储器106中,以及子处理单元102被分配来执行这些任务,则优选地主处理单元102A不参与对处理器任务110执行的调度与管理。而把这些责任留给所涉及的特定子处理单元102。
在讨论本发明各个实施例的处理器任务管理特征的细节之前,将讨论用于实现多处理***的优选计算机体系结构的描述。为此,现参照图3,图3为基本处理模块或处理器元件(processor element,PE)200的一个方框图。根据该计算机体系结构,从公共计算模块(或包(cell))构造多处理计算机***的所有子处理器。该公共计算模块具有一致的结构,并且优选地利用相同的指令集结构。在本发明的替代性实施例中,子处理单元可以为异构配置。多处理计算机***可以由一或多个客户机、服务器、PC、移动计算机、游戏机、PDA、机顶盒、家用电器、数字电视以及其它使用计算机处理器的设备构成。
基本处理模块为处理器元件(PE)。如图3所示,PE 200包含I/O接口202、处理单元(PU)204、直接存储器访问控制器(DMAC)206以及多个子处理单元208,即子处理单元208A、子处理单元208B、子处理单元208C以及子处理单元208D。一条局部(或内部)PE总线212在PU 204、子处理单元208、DMA206、存储器接口210之间传输数据与应用。局部PE总线212可以具有例如传统体系结构,或者可以被实现为分组交换网络。作为分组交换网络的实现尽管要求更多的硬件,但增加了可用带宽。
可以使用各种实现数字逻辑的方法构造PE 200。然而,PE 200优选地被构造为使用硅衬底上的互补金属氧化物半导体(CMOS)的单个集成电路。衬底的可选材料包括砷化镓、镓铝砷以及其它使用各种掺杂物的所谓的III-B化合物。也可以使用超导材料,例如使用快单通量量子(RSFQ)逻辑实现PE 200。
通过高带宽存储器连接216将PE 200与动态随机存取存储器(DRAM)214紧密关联。DRAM 214用作PE 200的主(或共享)存储器。尽管DRAM214优选地是动态随机存取存储器,但也可以使用其它部件诸如静态随机存取存储器(SRAM)、磁随机存取存储器(MRAM)、光存储器、全息存储器等实现DRAM 214。DMAC 206和存储器接口210有助于DRAM 214与PE 200的子处理单元208和PU 204之间的数据传送。应该注意的是,DMAC 206与/或存储器接口210可以相对子处理单元208和PU 204被集成地或独立地加以布置。实际上,可以取代图中所示的独立配置,把DMAC 206功能与/或存储器接口210功能与PU 204和子处理单元208的一或多个(优选地为全部)集成起来。
PU 204可以是例如能够独立处理数据与应用的标准处理器。子处理单元208优选地是单指令多数据(SIMD)处理器。子处理单元208优选地以并行并独立的方式执行数据与应用的处理。DMAC 206控制PU 204和子处理单元208对存储在共享DRAM 214中的数据与应用(例如,处理器任务110)的访问。应该注意的是,PU 204可以由发挥主处理单元作用的子处理单元208之一来实现。
根据该模块化结构,具体计算机***所使用的PE 200的数目基于该***所要求的处理能力。例如,一个服务器可以使用4个PE 200,一个工作站可以使用2个PE 200,以及一个PDA可以使用1个PE 200。被分配用于处理某特定软件包的PE的子处理单元的数目取决于该软件包中程序和数据的复杂程度及数量。
图4说明了子处理单元208的优选结构与功能。子处理单元208包括局部存储器250、寄存器252、一或多个浮点单元254、一或多个整数单元256。然而,同样,依据所要求的处理能力,可以使用更多或更少数目的浮点单元254和整数单元256。浮点单元254优选地按每秒320亿(32billion)浮点运算(32GFLOPS)的速度运行,以及整数单元256优选地按每秒320亿操作(32GOPS)的速度运行。
在优选实施例中,局部存储器250包含256K字节的存储量,寄存器252的容量为128×128个比特。应该注意的是,处理器任务110不是使用共享存储器214执行的。而是处理器任务110被拷贝到给定子处理单元208的局部存储器250中,并且被局部地执行。
局部存储器250可以是,也可以不是高速缓冲存储器。局部存储器250优选地被构造为一个静态随机存取存储器(SRAM)。PU 204可能要求对PU204所启动的直接存储器存取的超高速缓存相关性支持(cache coherencysupport)。然而,对于子处理单元208所启动的直接存储器访问或者对于从外部设备的访问和向外部设备的访问,不要求高速缓存相关性支持。
子处理单元208还包括总线接口(I/F)258,用于向/从子处理单元208传送应用和数据。在一个优选实施例中,总线I/F 258耦接到DMAC 206,DMAC 206被以虚线示出以指示可以把DMAC 206如图所示集成地布置在子处理单元208中或外部地加以布置(如图3所示)。一对总线268A,268B在总线I/F 258和局部存储器250之间相互连接DMAC 206。总线268A、268B优选地为256比特宽。
子处理单元208还包括内部总线260、262以及264。在一个优选实施例中,总线260具有256比特的宽度,并且提供了局部存储器250和寄存器252之间的通信。总线262和264分别提供了寄存器252与浮点单元254之间以及寄存器252与整数单元256之间的通信。在优选实施例中,从寄存器252到浮点或整数单元的总线264和262的宽度为384个比特,从浮点单元254或整数单元256到寄存器252的总线264和262的宽度为128个比特。与从浮点单元254或整数单元256到寄存器252的总线宽度比,从寄存器252到这些单元的这些总线越宽,则容纳处理期间来自寄存器252的数据流越大。每个计算最多需要3个字。然而每一计算的结果通常仅为一个字。
再次转向本发明各种处理器任务管理特征,并且参照图2,优选地,子处理单元102利用任务表,以判断处理器任务110中的哪个应该被从共享存储器106拷贝出来并且被拷贝到SPU 102的局部存储器之一中,以供运行。为此,现在参照图5,图5是根据本发明的各个方面的、可以利用的任务表280的概念性说明。任务表280优选地被存储在共享存储器106中(以下将讨论如何初始化任务表280的细节)。任务表280优选地包括多个任务表表项T1、T2、T3等。优选地使每个任务表表项与处理器任务110之一相关联(图2),例如,通过相关寻址或用于把任务表表项与处理器任务110相关联的其它手段。
在一优选实施例中,每个任务表表项可以包括状态指示(STAT)、优先级指示(PRI)以及一对指针(PREV,NEXT)中的至少一个。STAT优选地提供关于与给定任务表表项相关联的处理器任务是否READY(就绪)由一或多个子处理单元执行(或正在一个或多个子子处理单元上RUNNING(运行))的指示。PRI优选地提供关于相关联的处理器任务110的优先级水平的指示。可以存在与处理器任务110相关的许多优先级水平,其可以由软件程序员建立或者以后通过软件应用的执行建立。在任何情况下,都可以利用处理器任务110的优先级水平来建立执行处理器任务的次序。PREV值优选地是指向所链接的任务表表项的有序列表(或处理器任务列表)中的前一任务表表项(或前一处理器任务110)的指针。NEXT值优选地是指向所链接的任务表表项(或处理器任务)的有序列表中的下一任务表表项(或处理器任务)的指针。
根据本发明的一或多个方面,优选地由子处理单元102利用任务表280,以确定从共享存储器106拷贝处理器任务110以供执行的次序。例如,为了在多处理***100或200上适当地执行一软件应用,可能需要按某一特定的次序,或者最终按一般的次序,比如按T1、T8、T6以及T9的次序执行确定的处理器任务110。为了反映处理器任务次序的这一说明性的例子,任务表280优选地包含创建任务表表项的链接列表的任务表表项的相应PREV和NEXT部分中的指针,并且通过扩展处理器任务。根据上述例子的特征,任务表表项T1包括指向任务表表项T8的NEXT值。任务表表项T8包括指向任务表表项T1的PREV值,并且包括指向任务表表项T6的NEXT值。任务表表项T6包括指向任务表表项T8的PREV值,并且包括一个指向任务表表项T9的NEXT值。任务表表项T9包括指向任务表表项T6的PREV值。
参照图6,可以把上述例子的任务表表项的链接列表概念性地图示为一状态图,其中,从与任务表表项T1相关联的特定处理器任务的转移导致了对与任务表表项T8相关联的另一处理器任务的选择与执行。从与任务表表项T8相关联的处理器任务的转移导致了对与任务表表项T6相关联的处理器任务的选择与执行,等等。通过确保第一,即头部任务表表项T1包括一指向任务表表项T9的PREV值,以及确保任务表表项T9包括一指向任务表表项T1的NEXT值,可以获得任务表表项(与/或处理器任务本身)的环形关联。
在操作期间,被分配来执行共享存储器106的处理器任务110池(优选地位于给定区域106A或106B中)的各子处理单元102首先访问任务表280,以判断接下来将选取哪个处理器任务110来执行。为了有助于标识链接列表的第一(即头部)表项,子处理单元102优选地还访问一任务队列282,图7中概念性地图示了任务队列282。任务队列282优选地包括针对相关联的处理器任务110的每一优先级水平的表项。每一表项优选地包括HEAD指针和TALL指针中的至少一个。
进一步参照图6,所图示的示范性链接列表的状态图代表了具有优先级水平1的处理器任务110。实际上,针对表项T1、T8、T6、T9的每一任务表表项(图5)均包括PRI值1。
与优先级水平1相关联的任务队列表项的HEAD指针和TAIL指针包含分别指向任务表表项T1和任务表表项T9的指针。也把任务队列282的其它表项与针对其它链接列表的其它优先级水平的HEAD和TAIL指针相关联。在这一方式下,认为本发明的各种实施例可以包括任务表表项的多个链接列表(并且通过延伸处理器任务),其中每一链接列表包含相同的或至少相类似的优先级水平的表项。各处理单元102优选地利用任务表280和任务队列282来判断应从共享存储器106拷贝哪一处理器任务110以供执行。如果适当地创建和维护各链接列表,则可以按适当的次序执行处理器任务110,以在整个软件应用的执行过程中达到希望的结果。
根据本发明的各个方面,在软件应用的执行期间,子处理单元102维护和修改任务表280和任务队列282。为此,现在参照图8~10,图8~10为流程图,图示了适合于实现本发明的一或多个希望的特征的处理流程。在动作300处,调用特定的子处理单元102以启动处理器任务110从共享存储器106至其局部存储器的拷贝。在动作302处,子处理单元102锁定并且复制任务队列282到其局部存储器中。接下来,搜索任务队列282以寻找最高优先级就绪任务(动作304)。使用图7所示例子,任务队列282包括一指向任务队列表项T1的HEAD指针,任务队列表项T1与一最高优先级诸如优先级水平1的处理器任务相关联。由于与任务表表项T1相关联的处理器任务是待执行的目标,所以子处理单元102优选地修改任务队列282,以除去到该处理器任务的引用(动作306)。根据一优选实施例,这引起把指向任务表表项T1的HEAD指针修改为指向另一任务表表项,该另一任务表表项将成为指明下一应予以执行的处理器任务的新的第一(即头部)任务表表项。特别地,任务表表项T1的NEXT指针用作优先级水平1的新HEAD指针。实际上,如图6中所示,一旦在执行(运行)与任务表表项T1相关联的处理器任务,则其不再处于READY状态,从而应将其从状态图中去除。这将使任务表表项T8成为状态图的头部表项。当任务表表项T1将不再为READY状态图的一部分时,可以把任务表表项T8的PREV指针修改为指向任务表表项T9。于是,在动作308处,标记任务表,并且将其拷贝到SPU 102的局部存储器,以便可以对其进行修改。类似地,可以把任务表表项T9的NEXT指针修改为指向任务表表项T8。
根据本发明的优选方面,SPU 102优选地把任务表表项T1的STAT值从READY修改成RUNNING(图9,动作310)。如动作312,优选地判断在调用SPU 102(动作300)来引用(invoke)下一任务时,SPU 102是否正在运行前一任务。当一个正运行在SPU 102上的前一任务让与(yield to)另一任务时,可能会出现这一情况。对于本例,假定前一任务既没有让与下一处理器任务110,也没有被下一处理器任务110抢夺(usurp),并且这样假定动作312处判断的结果为否定的。因此,处理流优选地前进到动作318,在动作318处SPU102把经修改的任务队列282和经修改的任务表280写回到共享存储器106中。此时,已经更新了任务表280和任务队列282,然后根据优选的同步技术,将任务表280和任务队列282解锁,以便其它子处理单元102可以对它们拷贝和修改。
如果动作312处的判断结果为肯定的,例如,将是前一处理器任务110让与下一处理器任务以执行的情况,则处理流优选地前进到动作314。在动作314处,SPU优选地把与做出让与的处理器任务相关联的任务表表项的STAT值从RUNNING修改为READY。另外,SPU然后可以修改各任务表表项(包括与做出让与的处理器任务相关联的任务表表项)的PREV和NEXT指针,以便把做出让与的处理器任务重新导入适当的链接列表。优选地,这是通过参照反映在相关联的任务表表项的PRI值中的做出让与的处理器任务110的优先级水平来实现的。在动作316处,可以把做出让与的处理器任务写回到共享存储器106中,以便其可以在晚些时候被取出。接下来,处理流前进到动作318,在动作318处,把任务队列282和任务表280写回到共享存储器106中。
在动作320处(图10),子处理单元102把下一处理器任务110(例如与任务表表项T8相关联的处理器任务)从共享存储器106拷贝于其局部存储器。在动作322处,子处理单元102优选地恢复与/或更新其寄存器(例如,利用与新处理器任务相关的数据),以在执行新的处理器任务110的过程中所用。最后,在动作324处,由子处理单元102执行该新的处理器任务110。
应该加以注意的是,以上的动作序列仅作为示例给出,本领域技术人员应该认识到,在不背离本发明的构思与范围的情况下,可以对这些动作序列进行修改。例如,如本说明书以下将加以讨论的,可以修改从共享存储器106拷贝处理器任务和把处理器任务写回到共享存储器106中的次序以及利用任务表和任务队列282的次序,以达到所希望的结果。
如以上所描述的,优选地在***的初始化阶段期间利用主处理单元102A,以便把该***置于其中可以由子处理单元102处理处理器任务110的执行与管理的状态。子处理单元102也优选地进行一初始化例程,以便首先创建任务表280和任务队列282。图11的流程图中说明了这些初始化处理。
在动作350处,服务处理器(例如主处理单元102)评估要在***上执行的软件应用,并且分配多个子处理单元102以运行处理器任务110。处理流优选地前进到动作352,在动作352处,服务处理器评估软件应用,并且分配共享存储器106的一或多个部分以接收处理器任务110。在动作354处,根据在动作352处所执行的任何存储器分配,把处理器任务110加载到共享存储器106中。在初始化处理的这一阶段,优选地在子处理单元102之间的处理器任务的维护与/或分配过程中不再涉及服务处理器。
处理流优选地前进至动作356,在动作356处,子处理单元102互相初始化,以判断哪个SPU将首先准备任务表280和任务队列282。在动作358处,负责创建任务表280和任务队列282的子处理单元102准备这样的信息,并且将其存储在共享存储器106中。作为示例,优选地通过使每一SPU内核执行初始任务来执行任务表280和任务队列282的初始化。以下所复制的程序init.c,是每个SPU所执行的初始任务的优选例子:
#include<spurs.h> #include"task_instance.h" int main() { spurs_begin_init(); if(spurs_get_spu_id()==0){ spurs_create_task(melchior); spurs_create_task(balthasar); spurs_create_task(caspar); spurs_start_task(melchior); spurs_start_task(balthasar); spurs_start_task(caspar); } spurs_end_init(); return 0; }<br/>
在该程序中,`(melchior)`、`(balthasar)`以及`(caspar)`为最开始的几个任务的名字,它们为典型的启动任务。所有的SPU内核都执行该初始任务,init.c,但仅一个SPU——具有ID0的SPU——执行这些任务,如代码行:if(spurs_get_spu_id()==0)所指定的。所有其它SPU,例如那些具有不同ID的SPU,在spurs_end_init()处等待。于是,每一SPU内核都执行该初始任务,而且在这一初始任务完成之后,SPU内核开始寻找下一任务,如此处所描述的。
注意,如以上所讨论的,用作服务处理器的主处理单元102可以指定一或多个处理器任务110为处于一组中。优选地在初始化阶段期间进行此操作。例如,两或两个以上的处理器任务110可能互相密切通信,因此,如果把它们分组在一个任务组中,则可以更有效地执行它们。加密程序是可能含有某些需要密切通信的处理器任务的应用的例子,如果把这些处理器任务形成为一或多个任务组,将可更有效地对它们加以执行。
可以利用本发明的处理器任务管理特征来帮助主处理单元102A将设备驱动程序推卸(off-load)给某一特定的子处理单元102或子处理单元102的组。作为示例,诸如千兆Ethernet处理器的网络接口可以占用高达80%的CPU能力。如果仅通过主处理单元子102A执行网络接口,则主处理单元102A可能不可用于其它面向服务的处理任务。因此,主处理单元102A把网络接口程序推卸给一或多个子处理单元102可能是有益的。主处理单元102A可以通过下述操作达成此结果:把网络接口的处理任务置于共享存储器106中,并且分配一或多个子处理单元102以执行该处理任务。作为响应,这些SPU可以形成适合于管理和调度这样的处理器任务的执行的任务表280和任务队列282。有利的是,主处理单元102A因此可以投入更多的CPU能力来执行其它任务。主处理单元102A还可以推卸其它设备驱动程序,例如数字电视设备驱动程序。作为推卸给SPU的良好候选的其它设备驱动程序是那些具有大协议栈的设备驱动程序。例如,用于诸如HDD记录器的实时高速存取设备的驱动程序可以有利地予以推卸。可以推卸的任务的其它例子包括用于虚拟专用网络和IP上的多媒体(例如,VOIP)应用的网络分组加密/解密任务。
现在,参照图12,图12为处理器任务状态的状态图示例。可以把任务状态划分为5类:RUNNING(运行)状态、READY(就绪)状态、BLOCKED(阻塞)状态、DORMANT(睡眠)状态以及NON-EXISTENT(不存在)状态。当处理器任务当前正在执行时,其处于RUNNING状态。在某些情况下,甚至无任务(non-task)的情境下,例如在中断期间,处理器任务也可以维持在RUNNING状态下。当一个处理器任务准备好待执行,但由于一或多个具有较高优先性的处理器任务已正在运行并且无子处理单元不可用于取出(takeup)该任务时,该处理器任务处于READY状态。一旦在共享存储器106中的READY任务池中该READY处理器的优先级水平足够高时,则一子处理单元可以取出该处理器任务并执行之。因此,当分派(dispatch)一处理器任务时,该任务的状态可以从READY状态改变为RUNNING状态。相反,如果一个RUNNING任务在其执行期间被抢占(preemp)或被抢夺(usurp),则这样的任务的任务状态可以改变为READY状态。上文中结合一个处理器任务让与另一个处理器任务讨论了处理器任务的抢占的例子。
BLOCKED状态范畴可以包括WAITING(等待)状态、SUSPENDED(挂起)状态以及WAITING-SUSPENDED(等待挂起)状态。当由于援引下述服务调用而导致阻塞一处理器任务的执行时,这样的处理器任务处于WAITING状态,上述服务调用指定在该处理器任务执行继续之前必须满足某些条件。这样,基于援引一服务调用,一RUNNING任务的状态可以改变至WAITING状态。当没有满足所指定的条件时,可以把处于WAITING状态的处理器任务释放为READY状态,由此使得该处理器任务能够其后由一子处理单元102取出。当一处理器任务被迫中止(任务本身可以援引此)时,该任务可从RUNNING状态进入SUSPENDED状态。类似地,一处于READY状态的处理器任务可以通过强制的动作进入SUSPENDED状态。当释放对一SUSPENDED处理器任务的强制中止时,这样的处理器任务可以被恢复,并且进入READY状态。当一处理器任务既在等待满足某条件时而且当其又已被强制挂起时,该任务处于WAITING-SUSPENDED状态。因此,当强制挂起一WAITING-SUSPENDED处理器任务时,该处理器任务可以进入WAITING状态,其中该处理器任务将等待条件的满足。
当还没有执行一处理器任务,或者已经完成了其执行时,该任务处于DORMANT状态。一DORMANT处理器任务可以在适当的情况下进入READY状态。NON-EXISTENT状态是所谓的虚拟状态,其中任务不存在于***中,例如由于还没有对其加以创建,或者由于其已经被删除。
如果某一已经移至READY状态的任务具有比一处于RUNNING状态的任务高的优先性(或优先级),则优选地把该较低优先性的任务移至READY状态,以及优选地分派较高优先级的任务,并且将其移至RUNNING状态。在这种情况下,该较低优先级的任务已被该较高优先级的任务抢占。
根据赋予处理器任务的优先级,进行非抢占的、基于优先级的任务调度。如果存在具有相同优先级的多个任务,则基于先来先服务(first-come,first-served,FCFS)进行调度。可以基于任务优先级利用任务之间的优先性来定义该任务调度规则。如果存在可运行的任务时,至多与所分配的子处理单元102的数目相同的高优先性任务将处于RUNNING状态。其余的可运行任务将处于READY状态。在具有不同优先级的任务之中,具有最高优先级的任务具有较高的优先性。在具有相同优先级的任务之中,最早进入可运行(运行或就绪)状态的处理器任务具有较高的优先性。然而,由于对某些服务调用的援引,相同优先级的任务之间的优先性可能改变。当给予某一处理器任务高于其它处理器任务的优先性时,优选的是分派立即发生,并且把该任务移至RUNNING状态。
现在,参照图13~14,图13~14说明了根据本发明的某些方面的抢占特征。如以上所描述的,某一处于RUNNING状态的处理器任务(例如任务A)可以被抢占,或者让与另一处于READY状态的处理器任务(例如,任务B)。如图13~14中所说明的,在子处理单元102上执行任务A直至让与点。在该点处,SPU的内核操作来把任务A拷贝回共享存储器106(保存任务A)。接下来,把任务B从共享存储器106拷贝到SPU的局部存储器(恢复任务B)。SPU然后执行任务B。尽管该技术就局部存储器利用量和高带宽而言,具有相对高的性能,但是存在从让与点到任务B的执行的任务执行延迟,其没有被最优化。
参照图15~16,图15~16图示了根据本发明的进一步的方面的一可选方案。在这一情况下,在把任务A从局部存储器拷贝至共享存储器106之前,可以把任务B从共享存储器106拷贝到子处理单元102的局部存储器。关于此,子处理单元102可以执行任务A,而同时执行标识并且从共享存储器106中检索任务B的步骤。这可能需要把任务表280和任务队列282从共享存储器106拷贝至子处理单元102A的局部存储器,并且使用任务表280和任务队列282标识下一READY任务,即任务B。在让与点处,子处理单元102A的内核把任务A从局部存储器拷贝于共享存储器106,这可能需要修改任务表280和任务队列282,如以上所描述的。接下来,子处理单元102可开始任务B的执行。与图13~14中所说明的技术相比,该技术显著减小了让与和任务B的执行之间的延迟。
参照图17和18,根据本发明的一或多个进一步的方面,可以进一步减小让与和任务B的执行之间的延迟。具体地,子处理单元102可以按与以上参照图15和16所讨论的基本相同的方式操作,直至让与点。然而,在让与之后,子处理单元102优选地启动任务B的执行。在基本相同的时间点,子处理单元102的内核优选地把任务A从子处理单元102的局部存储器拷贝到共享存储器106。由于在让与之后很快执行任务B,所以与图14~16中所图示的方案相比,显著地减小了延迟。
根据本发明的一或多个进一步的方面,子处理单元102可以在局部存储器中维持多个处理器任务以供执行。图19中图示了这一点。局部存储器包括多个页和页表,以便管理多个处理器任务的执行。该方案的优点在于,可以进一步减小延迟,不过一个缺点是,处理器任务的执行将独占局部存储器中显著更多的空间。
现在参照图20~22,图20~22说明了根据本发明的一或多个方面的处理器任务迁移。这些图说明了如何可以把一个处理器任务例如任务B从一个子处理单元SPU1迁移至另一个子处理单元SPU2。迁移可以是基于某一条件的,例如与相应处理器任务相关联的相应优先级水平。根据本发明的某些方面,处理器任务从一个子处理单元向另一个子处理单元的迁移可以不是抢占性的。换句话说,处理器任务的迁移可以作为优先级条件和时序的结果自然地流动,而不是基于导致这一迁移的某种决策。
可以通过以下的例子说明该非抢占迁移。假设利用任务表从共享存储器106中选择了处理器任务B,该任务表指示了就绪待执行的处理器任务的优先级次序。任务B正运行在子处理单元SPU1上。类似地,假设根据任务表从共享存储器106中选择了处理器任务C,而且处理器任务C正运行在子处理单元SPU2上。在选择处理器任务B和处理器任务C时,假设具有较高优先级水平的处理器任务A没有准备好待执行,因此,未被选择供执行。然而,在处理器任务B和处理器任务C正在运行期间,假设处理器任务A变为就绪待执行的。
参照图21,处理器任务B可以让出子处理单元SP1。处理器任务B的此让与动作可能由于程序员已决定让与将对软件应用的总体执行有益而发生。在任何情况下,子处理单元SP1通过把处理器任务B写回到共享存储器106并且更新任务表来响应此让与。子处理单元SP1还访问任务表以判断应拷贝和执行共享存储器106中的多个处理器任务中的哪个。在本例中,根据任务表,处理器任务A具有最高优先级,因此,子处理单元SP1把处理器任务A从共享存储器106拷贝到其局部存储器以供执行。此时,子处理单元SP1执行处理器任务A,以及子处理单元SP2继续执行处理器任务C。
进一步参照图22,处理器任务C可以把子处理单元SP2让与另一个处理器任务。同样,可以通过程序指令与/或处理器任务C的条件援引该让与。在任何情况下,子处理单元SP2把处理器任务C写回到共享存储器106中,并且相应地更新任务表。子处理单元SP2还访问任务表,以判断应该拷贝就绪待执行的处理器任务中的哪个。在本例中,处理器任务B就绪待执行,并且在多个就绪待执行的处理器任务之中具有最高优先级。因此,子处理单元SP2把处理器任务B从共享存储器106拷贝于其局部存储器以供执行。
图20中所图示的处理条件和图22中所图示的处理条件的比较揭示:处理器任务B已从子处理单元SPU1迁移到子处理单元SP2。
现在参照图23~24,图23~24说明了本发明的抢占多任务处理方面。本发明的这些方面规定:可以由一较高优先级的处理器任务例如处理器任务A抢占地取代运行在子处理单元之一例如子处理单元SP2上的较低优先级的处理器任务。更具体地讲,处理器任务B可以正运行在子处理单元SPU1上,而处理器任务C可以正运行在子处理单元SPU2上(图23)。接下来,一较高优先级的任务,任务A,可以变为就绪待执行的。这可能由于***的另一个子处理单元的某一动作而发生。
出于讨论的目的,假设由于执行处理器任务B,子处理单元SPU1把处理器任务A的状态改为RUNNING状态。因此,子处理单元SPU1优选地判断处理器任务A的优先级水平是否高于正运行在其它子处理单元上的处理器任务的优先级水平中的任何一个。在这一简化的情况中,子处理单元SPU1判断处理器任务A的优先级水平是否高于处理器任务C的优先级水平。如果高于,则子处理单元SPU1至少启动以处理器任务A对处理器任务C的取代。换句话说,子处理单元SP1优选地使得处理器任务C把子处理单元SPU2让与处理器任务A。关于此,子处理单元SP1的内核向子处理单元SPU2的内核发布一中断。响应此中断,子处理单元SPU2可以把处理器任务C写回到共享存储器106,并且更新任务表(图24)。子处理单元SPU2还可以把处理器任务A从共享存储器拷贝至其局部存储器以供执行。
现在参照图25~26,图25~26说明了本发明的某些直接迁移方面。这些方面规定:可以把运行在一子处理单元上的较高优先级的一处理器任务迁移到运行一较低优先级的处理器任务的另一子处理单元上。这一迁移可以是响应于运行较高优先级处理器任务的子处理单元所接收的直接中断。参照图25,子处理单元SPU1可以接收一指示其必须执行其它任务的中断。该中断还可以导致子处理单元SPU1判断是否***的任何其它子处理单元正在执行较低优先级的处理任务。如果是,则这样的子处理单元可以为了该较高优先级处理任务而让与处理器任务的执行。更具体地,如果子处理单元SP1断定子处理单元SP2正在运行优先级低于处理器任务A的处理器任务,例如处理器任务B,则子处理单元SP1的内核优选地向子处理单元SPU2的内核发布中断。响应于该中断,子处理单元SP2优选地把处理器任务B从其局部存储器写回到共享存储器106,并且更新任务表。子处理单元SP2同样优选地处理器任务A从子处理单元SP1的局部存储器拷贝(或转移)至其局部存储器,以供执行。
图27图示了根据本发明的一个方面处理单元(“PU”)如何可以处理中断。在第一步骤中,PU接收中断。然后,PU判断哪一子处理单元(在这一情况下,从SPU0、SPU1以及SPU2构成的组中)具有最低优先级。然后,PU向具有最低优先级的SPU发送中断。在图27的情况中,SPU2具有最低优先级,因此PU将向SPU2发送中断。
根据本发明的一或多个进一步的方面,可以按多种方式处理从一个子处理单元到另一个子处理单元的中断。现在参照图28,图28说明了在本发明的一个实施例中,如何可以指定一个子处理单元管理到***中任何其它子处理单元的中断。所指定的子处理单元接收所有这样的任务迁移中断,并且或者自身处理这些中断,或者判断是否把中断传送给另一个子处理单元。例如,如果中断针对的是所指定的子处理单元,则所指定的子处理单元可以自己处理该中断。作为替代,如果中断并非针对所指定的子处理单元,则所指定的子处理单元可以向正在执行具有最低优先级的处理器任务的、组中的子处理单元发送中断。
图29说明了一种其中可以采用分布式中断处理方案的替代性途径。根据该技术,把相应的中断赋予每一子处理单元,例如,可以把中断A赋予子处理单元SPU0。可以把中断B、C赋予子处理单元SPU1,可以把中断D、E、F赋予子处理单元SPU2。
以上针对图23~26的讨论需要子处理单元能够确定运行在***的其它子处理单元上的处理器任务的优先级水平。根据本发明的一个实施例,在判断正在运行任务的优先级水平的过程中,子处理单元可以利用共享任务优先级表。共享任务优先级表可以被放置在共享存储器中,并且可以包括多个针对子处理单元标识符和处理器任务优先级标识符的表项。例如,子处理单元标识符可以为子处理单元特有的数字与/或字母数字代码。处理器任务优先级标识符优选地指示正被执行的特定处理器任务的优先级水平。共享任务优先级表中的每个表项优选地包括子处理单元标识符和优先级标识符对儿(pair),指示运行在相关联的子处理单元上的给定处理器任务的优先级水平。这样,试图确定正在运行的处理器任务的优先级水平的子处理单元可以访问共享任务优先级表,以找到正在运行较低优先级处理器任务的子处理单元。优选地,正在运行最低优先级处理器任务的子处理单元被标识出来以让与较高优先级水平处理器任务。
本发明的其它实施例可以规定:子处理单元利用共享变量,该共享变量指示哪个子处理单元正在运行最低优先级的处理器任务。优选地通过微少更新处理(atomic update process)实现对共享变量的使用,以便能够保证优先级水平的准确指示。一种替代的途径可以利用串行地从一个子处理单元传送到另一个子处理单元的串行化的消息。可以利用较低优先级水平处理器任务的优先级水平和子处理单元标识符更新该消息。
参照图30,本发明的一替代实施例考虑这样一种情况:可以通过把多个处理器元件200结合起来而增加被分配来执行处理器任务110的子处理单元208的数目,以提供增强的处理能力。例如,可以把两或两个以上的处理器元件200A,200B包装或结合起来,例如,在一或多个芯片包装中,形成一组多处理器单元。可以把这一装置称为宽带引擎(broadband engine,BE)。宽带引擎290包含通过总线212互相连接用于数据通信的两个处理器元件200A,200B。优选地提供附加的数据总线216,以允许处理器元件200A、200B以及共享DRAM 214之间的通信。一或多个输入/输出(I/O)接口202A和202B以及外部总线(未示出),提供了宽带引擎290和任何外部部件之间的通信。宽带引擎290的处理器元件200A和200B的每个以并行和独立的方式处理数据和应用,类似于以上参照图3所讨论的子处理部件208所执行的对应用和数据的并行和独立的处理。根据本发明的各个方面,BE可以包括单个处理器元件或多个处理器元件。另外,也可以由多个BE形成一个BE。
现在参照图31。此处,可以把独立的多处理元件208或BE 290(多处理元件集合)分布于形成多处理***500的多个产品之中。多处理***500的各元件或成员(被实现为计算机与/或计算设备)优选地通过网络504进行通信。网络504可以为局域网(LAN)、全球网例如因特网、或者任何其它计算机网络。
连接到网络504的成员包括,例如客户机计算机506、服务器计算机508、个人数字助手(PDA)510、数字电视(DTV)512以及其它有线或无线计算机和计算设备。例如,客户机506A可以为由一或多个PE 200构造的膝上型计算机或其它合适的多处理***。客户机506B可以为由一或多个PE 200构造的台式机(或机顶盒)或其它合适的多处理***。另外,服务器506A可以是一种管理实体(使用数据库能力),其优选地也是由一或多个PE 200等构造的。
于是,多处理***500的能力可以依赖于本地配置(例如,一个产品)或远程配置(例如,在多个产品中)的多个处理器元件200。关于此,参照图32,图32为根据本发明的一或多个方面的整个计算机网络的方框图。同样,PE 200与/或宽带引擎280(由多个PE构成)可以用于实现计算机***500的总体分布式体系结构。
由于***500的服务器508执行比客户机多的应用和数据的处理,所以服务器508比客户机506包含更多的计算模块(例如,PE 200)。另一方面,在本例中,PDA 510执行最小量的处理。因此,PDA 510包含最小数目的PE200,例如单个PE 200。DTV 512执行处理的水平基本上处于客户机506和服务器508执行处理的水平之间。因此,DTV 512包括的处理器元件数目在客户机506和服务器508处理器元件数目之间。
现在,将提供有关分布式多处理***500的细节。***500的同构配置有助于提供更好的适应性、处理速度、以及处理效率。由于***500的每一成员均使用同一计算模块例如处理器元件200的一或多个(或某一部分)进行处理,所以执行数据与/或应用处理的具体的计算机或计算设备并不重要,因为可以在网络的成员之间共享这样的应用和数据的处理。通过唯一地标识包括***500所处理的数据和应用的软件包,可以把处理结果传输于请求该处理的计算机或计算设备,而不管其中这一处理发生于何处。因为执行这一处理的模块具有共同的体系结构,并且使用了共同的指令集结构,所以避免了为实现处理器之间的兼容性的、所添加的额外软件层的计算负担。这一体系结构和编程模型有助于提高执行诸如实时、多媒体应用所需的处理速度。
为了更充分地利用***500促进的处理速度与处理效率,可以把这一***所处理的应用和数据包装成唯一标识的、统一格式的软件包502。每个软件包502包含或者可以包含应用和数据两者。每个软件包还包含用于在整个网络504和***500上全局标识软件包的ID。软件包的结构的此统一性,以及在整个网络上的软件包的唯一标识,有助于在网络504的任一计算机或计算设备上的应用和数据的处理。例如,客户机506可以构建(formulate)软件包502,但由于客户机506的处理能力有限,所以把软件包502传送到服务器508以处理。因此,软件包502可以基于网络504上的处理资源的可用性在整个网络504上迁移以进行处理。
***500的处理器和软件包502的同构结构还避免了当今异构网络的许多问题。例如,避免了试图允许在使用任何指令集的任何ISA例如诸如Java虚拟机的虚拟机上处理应用的低效率编程模块。因此,***500可以实现远比传统网络更有效和更高效的宽带处理(broadband processing)。
特将共同转让的序号为10-783,246、题为“METHODS AND APPARATUSFOR TASK MANAGEMENT IN A MULTI-PROCES SOR SYSTEM多处理器***中任务管理的方法与装置)”、律师记录书编号为SCEI 1.0-1856、与本申请同日提交于美国专利与商标局的美国专利申请的全部内容并入此处,已作参考。
尽管此处已参照具体的实施例描述了本发明,但应该认识到,这些实施例仅说明性地描述了本发明的原理与应用。因此,应该理解,在不背离所附权利要求的构思与范围的情况下,可以对这些说明性实施例进行众多修改,并且可以设计其它的配置。
产业上的可利用性
本发明适用于在多处理***的子处理单元之间调度和执行处理器任务的技术。
Claims (55)
1.一种在多处理***上执行处理器任务的方法,该多处理***包括可以访问共享存储器的多个处理单元,所述方法包括:
规定从共享存储器拷贝所选择的处理器任务,并且由一或多个处理单元执行;以及
把至少一个处理器任务从一个处理单元迁移到另一个处理单元。
2.根据权利要求1所述的方法,还包括禁止从共享存储器执行处理器任务。
3.根据权利要求1所述的方法,其中,所述多个处理单元包括主处理器单元和多个子处理单元,所述多个子处理单元中的每个子处理单元具有局部存储器,而且其中,把处理器任务拷贝于局部存储器,并且在局部存储器中执行。
4.根据权利要求1所述的方法,其中,所述至少一个处理器任务的迁移是基于某条件的。
5.根据权利要求4所述的方法,其中,所述条件基于与处理器任务相关联的相应的优先级水平。
6.根据权利要求5所述的方法,其中,所述条件的满足和迁移的启动不基于抢占动作。
7.根据权利要求5所述的方法,还包括:要求子处理单元基于处理器任务的优先级水平从共享存储器中选择处理器任务以供执行。
8.根据权利要求3所述的方法,还包括:要求子处理单元在从共享存储器中选择较低优先级的处理器任务之前,选择较高优先级的处理器任务。
9.根据权利要求3所述的方法,还包括:
从共享存储器选择第一优先级水平的第一处理器任务,以供第一子处理单元执行;
从共享存储器选择第二优先级水平的第二处理器任务,以供第二子处理单元执行;以及
把第一子处理单元让与第三优先级水平的第三处理器任务,第三处理器任务被选择,这是因为其优先级水平高于就绪待执行的任何其它处理器任务。
10.一种在多处理***上执行处理器任务的方法,该多处理***包括可以访问共享存储器的多个处理单元,所述方法包括:
规定从共享存储器拷贝所选择的处理器任务,并且由一或多个处理单元执行;
规定处理单元基于处理器任务的优先级水平从共享存储器中选择处理器任务以供执行;以及
规定可以由较高优先级的处理器任务抢占性地取代正运行在处理单元之一上的较低优先级的处理器任务。
11.根据权利要求10所述的方法,还包括禁止从共享存储器执行处理器任务。
12.根据权利要求10所述的方法,其中,所述多个处理单元包括主处理器单元和多个子处理单元,所述多个子处理单元中的每个子处理单元具有局部存储器,而且其中,把处理器任务拷贝于局部存储器,并且在局部存储器中执行。
13.根据权利要求12所述的方法,还包括:要求子处理单元在从共享存储器中选择较低优先级的处理器任务之前,选择较高优先级的处理器任务。
14.根据权利要求12所述的方法,还包括:
从共享存储器中选择相关联的优先级水平的多个处理器任务,以供多个子处理单元执行;
使得共享存储器中具有给定优先级水平的第n处理器任务变为就绪待执行的;以及
判断该给定优先级水平是否高于该多个处理器任务的优先级水平中的任何一个。
15.根据权利要求14所述的方法,其中,子处理单元中的至少一个可操作来执行所述判断。
16.根据权利要求14所述的方法,还包括:抢占性地用第n处理器任务取代具有比该给定优先级水平低的优先级水平的多个处理器任务中的一个。
17.根据权利要求16所述的方法,其中,所述子处理单元中的一个或多个可操作来至少启动所述取代并且使得所述多个子处理单元中的所述一个让与较低优先级水平的处理器任务的执行。
18.根据权利要求17所述的方法,还包括:规定该启动子处理单元向该让与子处理单元发布中断,以启动对该较低优先级水平的处理器任务的取代。
19.根据权利要求17所述的方法,还包括:规定该让与子处理单元把该较低优先级的处理器任务从其局部存储器写回到共享存储器。
20.根据权利要求17所述的方法,还包括:规定该让与子处理单元把该较高优先级的第n处理器任务从共享存储器拷贝到其局部存储器中以供执行。
21.一种在多处理***上执行处理器任务的方法,该多处理***包括可以访问共享存储器的多个子处理单元和一主处理单元,每个子处理单元包括独立于共享存储器的片上局部存储器,所述方法包括:
规定把处理器任务从共享存储器拷贝到子处理单元的局部存储器中以执行之,并且禁止从共享存储器执行处理器任务;
从共享存储器选择相关联的优先级水平的多个处理器任务,以供多个子处理单元执行;
规定子处理单元可以判断共享存储器中的具有给定优先级水平的第n处理器任务是否高于所述多个处理器任务的优先级水平中任何一个。
22.根据权利要求21所述的方法,还包括:规定可以由较高优先级的处理器任务抢占性地取代正运行在子处理单元之一上的较低优先级的处理器任务。
23.根据权利要求21所述的方法,还包括:规定在判断该第n处理器任务是否具有比所述多个处理器任务高的优先级水平过程中,子处理单元使用共享任务优先级表。
24.根据权利要求23所述的方法,其中:
该共享任务优先级表包括关于子处理单元标识符和处理器任务优先级标识符的表项;以及
每个表项包括子处理单元标识符和优先级标识符对儿,其指示了运行在相关联的子处理单元上的给定处理器任务的优先级水平。
25.根据权利要求21所述的方法,还包括:规定试图判断第n处理器任务是否具有比所述多个处理器任务高的优先级水平的子处理单元搜寻共享任务优先级表以找到指示较低优先级水平的表项对儿。
26.一种在多处理***上执行处理器任务的方法,所述多处理***包括可以访问共享存储器的多个子处理单元和主处理单元,每个处理单元包括独立于共享存储器的片上局部存储器,该方法包括:
规定把处理器任务从共享存储器拷贝到子处理单元的局部存储器中以执行之,并且禁止从共享存储器执行处理器任务;
规定子处理单元基于处理器任务的优先级水平,从共享存储器中选择处理器任务以供执行;以及
响应于一给定子处理单元所接收的中断,把正运行在该给定子处理单元上的较高优先级的处理器任务迁移到正在运行较低优先级的处理器任务的另一子处理单元。
27.一种多处理器装置,包括:
多个处理单元,每个处理单元包括在其中执行处理器任务的局部存储器;以及
共享存储器,可操作来存储就绪待执行的处理器任务,其中:
把处理器任务从共享存储器拷贝到处理单元的局部存储器以执行之,以及
把至少一个处理器任务从一个处理单元迁移到另一个处理单元。
28.根据权利要求27所述的装置,还包括禁止从共享存储器执行处理器任务。
29.根据权利要求27所述的方法,其中,所述多个处理单元包括主处理器单元和多个子处理单元,所述多个子处理单元中的每个具有局部存储器,而且其中,把处理器任务拷贝于局部存储器,并且在局部存储器中执行。
30.根据权利要求29所述的装置,其中,所述至少一个处理器任务的迁移是基于某条件的。
31.根据权利要求30所述的装置,其中,所述条件基于与处理器任务相关联的相应的优先级水平。
32.根据权利要求31所述的装置,其中,所述条件的满足和迁移的启动不基于抢占动作。
33.根据权利要求31所述的装置,其中,所述子处理单元可操作来基于处理器任务的优先级水平从共享存储器中选择处理器任务以供执行。
34.根据权利要求29所述的装置,其中,所述子处理单元可操作来在从共享存储器中选择较低优先级的处理器任务之前,选择较高优先级的处理器任务。
35.根据权利要求29所述的装置,其中:
第一子处理单元可操作来从共享存储器选择第一优先级水平的第一处理器任务以供执行;
第二子处理单元可操作来从共享存储器选择第二优先级水平的第二处理器任务,以供执行;以及
第一子处理单元可操作来让与第三优先级水平的第三处理器任务,第三处理器任务被选择,这是因为其优先级水平高于就绪待执行的任何其它处理器任务。
36.根据权利要求29所述的装置,其中,所述子处理单元可操作来:
从共享存储器选择相关联优先级水平的多个处理器任务以供执行;以及
判断共享存储器中已变为就绪待执行的、具有给定优先级水平的第n处理器任务是否具有比所述多个处理器任务的优先级水平中的任何一个高的优先级水平。
37.根据权利要求36所述的装置,其中,所述子处理单元中的至少一个可操作来执行所述判断。
38.根据权利要求36所述的装置,其中,所述子处理单元中的至少一个可操作来抢占性地用该第n处理器任务取代具有比该给定优先级水平低的优先级水平的多个处理器任务中的一个。
39.根据权利要求38所述的装置,其中,所述子处理单元中的一个或多个可操作来至少启动所述取代并且使得所述多个子处理单元中的所述一个让与较低优先级水平的处理器任务的执行。
40.根据权利要求39所述的装置,其中,该启动子处理单元可操作来向该让与子处理单元发布中断,以便启动对该较低优先级水平的处理器任务的取代。
41.根据权利要求39所述的装置,其中,该让与子处理单元可操作来把较低优先级的处理器任务从其局部存储器写回到共享存储器。
42.根据权利要求39所述的装置,其中,该让与的子处理单元可操作来把该较高优先级的第n处理器任务从共享存储器拷贝到其局部存储器中以供执行。
43.一种多处理器装置,包括:
多个子处理单元,每个子处理单元包括在其中执行处理器任务的片上局部存储器;以及
共享存储器,可操作来存储就绪待执行的处理器任务,其中:
把处理器任务从共享存储器拷贝到子处理单元的局部存储器中以执行之,
子处理单元可操作来基于处理器任务的优先级水平从共享存储器中选择处理器任务以供执行,以及
子处理单元中的至少一个可操作来响应于一给定子处理单元所接收的中断,把运行在该给定子处理单元上的较高优先级的处理器任务迁移到正在运行较低优先级的处理器任务的另一子处理单元。
44.根据权利要求43所述的装置,其中,所述子处理单元可操作来在从共享存储器中选择较低优先级的处理器任务之前,选择较高优先级的处理器任务。
45.根据权利要求43所述的装置,其中,所述子处理单元可操作来:
从共享存储器选择相关联的优先级水平的多个处理器任务以供执行;以及
判断运行在子处理单元上的多个处理器任务中的哪个具有比运行在该给定子处理单元上的处理器任务的优先级水平低的最低优先级水平。
46.根据权利要求45所述的装置,其中,所述给定子处理单元可操作来执行所述判断。
47.根据权利要求45所述的装置,其中,所述给定处理器任务被迁移到运行该具有最低优先级水平的处理器任务的子处理单元,并取代该处理器任务。
48.根据权利要求47所述的装置,其中,所述给定子处理单元可操作来至少启动所述迁移并且使得运行具有最低优先级水平的处理器任务的子处理单元把执行让与具有较高优先级水平的该给定处理器任务。
49.根据权利要求48所述的装置,其中,所述给定子处理单元可操作来向该让与子处理单元发布中断,以便启动对该最低优先级水平的处理器任务的取代。
50.根据权利要求48所述的装置,其中,所述让与子处理单元可操作来把较低优先级的处理器任务从其局部存储器写回共享存储器。
51.根据权利要求45所述的装置,其中,所述让与子处理单元可操作来把该较高优先级的给定处理器任务从该给定子处理单元的局部存储器拷贝到其局部存储器中,以供执行。
52.根据权利要求43所述的装置,其中,所述给定子处理单元可操作来在判断哪个处理器任务具有最低优先级水平的过程中使用共享任务优先级表。
53.根据权利要求52所述的装置,其中,
该共享任务优先级表包括关于子处理单元标识符和处理器任务优先级标识符的表项;以及
每个表项包括子处理单元标识符和优先级标识符对儿,其指示了运行在相关联的子处理单元上的给定处理器任务的优先级水平。
54.根据权利要求53所述的装置,其中,所述给定子处理单元可操作来搜寻共享任务优先级表,以找到指示最低优先级水平的表项对儿。
55.根据权利要求53所述的装置,其中,所述给定子处理单元可操作来修改共享任务优先级表,使得表项对儿为当前的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/783,238 US7565653B2 (en) | 2004-02-20 | 2004-02-20 | Methods and apparatus for processor task migration in a multi-processor system |
US10/783,238 | 2004-02-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1910554A true CN1910554A (zh) | 2007-02-07 |
Family
ID=34861181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005800029511A Pending CN1910554A (zh) | 2004-02-20 | 2005-02-18 | 多处理器***中处理器任务迁移的方法与装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7565653B2 (zh) |
EP (1) | EP1769347A2 (zh) |
JP (1) | JP2005235229A (zh) |
KR (1) | KR20060132852A (zh) |
CN (1) | CN1910554A (zh) |
TW (1) | TWI291656B (zh) |
WO (1) | WO2005081104A2 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102105866A (zh) * | 2009-05-25 | 2011-06-22 | 松下电器产业株式会社 | 多处理器***、多处理器控制方法、以及多处理器集成电路 |
WO2011103825A3 (zh) * | 2011-04-18 | 2012-03-15 | 华为技术有限公司 | 多处理器***负载均衡的方法和装置 |
CN104657222A (zh) * | 2015-03-13 | 2015-05-27 | 浪潮集团有限公司 | 一种面向smp调度***的优化方法 |
CN104754647A (zh) * | 2013-12-29 | 2015-07-01 | ***通信集团公司 | 一种负载迁移的方法和设备 |
CN105359098A (zh) * | 2013-05-17 | 2016-02-24 | 相干逻辑公司 | 多处理器嵌入式***上应用的动态重新配置 |
CN105630593A (zh) * | 2014-11-24 | 2016-06-01 | 三星电子株式会社 | 用于处理中断的方法 |
CN106201711A (zh) * | 2016-06-29 | 2016-12-07 | 联想(北京)有限公司 | 一种任务处理方法及服务器 |
Families Citing this family (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7392524B2 (en) * | 2004-04-06 | 2008-06-24 | International Business Machines Corporation | Method, system, and storage medium for managing computer processing functions |
US20060265703A1 (en) * | 2005-04-21 | 2006-11-23 | Holt John M | Computer architecture and method of operation for multi-computer distributed processing with replicated memory |
US7788668B2 (en) * | 2005-06-09 | 2010-08-31 | Lockheed Martin Corporation | System and method for implementing distributed priority inheritance |
US8849968B2 (en) * | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
US8037474B2 (en) * | 2005-09-27 | 2011-10-11 | Sony Computer Entertainment Inc. | Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution |
US7522168B2 (en) * | 2005-09-27 | 2009-04-21 | Sony Computer Entertainment Inc. | Cell processor task and data management |
US20070055852A1 (en) * | 2005-09-06 | 2007-03-08 | Alcatel | Processing operation management systems and methods |
US8316220B2 (en) * | 2005-09-27 | 2012-11-20 | Sony Computer Entertainment Inc. | Operating processors over a network |
US7734827B2 (en) * | 2005-09-27 | 2010-06-08 | Sony Computer Entertainment, Inc. | Operation of cell processors |
US7506123B1 (en) * | 2005-09-27 | 2009-03-17 | Sony Computer Entertainment Inc. | Method and system for performing memory copy function on a cell processor |
US8141076B2 (en) * | 2005-09-27 | 2012-03-20 | Sony Computer Entertainment Inc. | Cell processor methods and apparatus |
US7975269B2 (en) * | 2005-09-27 | 2011-07-05 | Sony Computer Entertainment Inc. | Parallel processor methods and apparatus |
US8074231B2 (en) * | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US20070094495A1 (en) * | 2005-10-26 | 2007-04-26 | Microsoft Corporation | Statically Verifiable Inter-Process-Communicative Isolated Processes |
US8595747B2 (en) * | 2005-12-29 | 2013-11-26 | Sony Computer Entertainment Inc. | Efficient task scheduling by assigning fixed registers to scheduler |
US9870267B2 (en) * | 2006-03-22 | 2018-01-16 | Intel Corporation | Virtual vector processing |
JP4557949B2 (ja) * | 2006-04-10 | 2010-10-06 | 富士通株式会社 | 資源ブローカリングプログラム、該プログラムを記録した記録媒体、資源ブローカリング装置、および資源ブローカリング方法 |
JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
US8032898B2 (en) * | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
US7647483B2 (en) * | 2007-02-20 | 2010-01-12 | Sony Computer Entertainment Inc. | Multi-threaded parallel processor methods and apparatus |
US8789063B2 (en) * | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
KR20090005921A (ko) | 2007-07-10 | 2009-01-14 | 삼성전자주식회사 | 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치 |
US8589943B2 (en) | 2007-08-15 | 2013-11-19 | Sony Computer Entertainment Inc. | Multi-threaded processing with reduced context switching |
TWI419074B (zh) * | 2007-10-29 | 2013-12-11 | Mstar Semiconductor Inc | 數位電視之處理裝置及處理方法 |
KR101366075B1 (ko) | 2007-12-20 | 2014-02-21 | 삼성전자주식회사 | 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치 |
KR101400286B1 (ko) * | 2008-01-22 | 2014-05-26 | 삼성전자주식회사 | 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치 |
US9058206B2 (en) * | 2008-06-19 | 2015-06-16 | Freescale emiconductor, Inc. | System, method and program product for determining execution flow of the scheduler in response to setting a scheduler control variable by the debugger or by a processing entity |
WO2009153621A1 (en) * | 2008-06-19 | 2009-12-23 | Freescale Semiconductor, Inc. | A system, method and computer program product for scheduling processor entity tasks in a multiple-processing entity system |
WO2009153620A1 (en) * | 2008-06-19 | 2009-12-23 | Freescale Semiconductor, Inc. | A system, method and computer program product for scheduling a processing entity task |
US8296773B2 (en) * | 2008-06-30 | 2012-10-23 | International Business Machines Corporation | Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance |
TWI383617B (zh) * | 2008-10-31 | 2013-01-21 | Ind Tech Res Inst | 具排列架構之無線通訊方法及系統 |
JP5214537B2 (ja) * | 2009-05-25 | 2013-06-19 | 株式会社東芝 | マルチプロセッサシステム |
JP4871373B2 (ja) * | 2009-06-19 | 2012-02-08 | 任天堂株式会社 | 情報処理システムおよび情報処理装置 |
JP5674296B2 (ja) | 2009-09-09 | 2015-02-25 | 任天堂株式会社 | 情報処理システムおよび情報処理装置 |
TWI395437B (zh) * | 2009-12-31 | 2013-05-01 | Htc Corp | 資料網路傳輸之通訊方法、通訊裝置及其電腦可讀取記錄媒體 |
KR101697937B1 (ko) | 2010-01-08 | 2017-02-01 | 삼성전자주식회사 | 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템 |
KR101662030B1 (ko) | 2010-01-14 | 2016-10-14 | 삼성전자주식회사 | 태스크 이동 시스템 및 그 방법 |
KR101651114B1 (ko) * | 2010-02-18 | 2016-09-05 | 삼성전자주식회사 | 로드 밸런싱 장치 |
US10678744B2 (en) * | 2010-05-03 | 2020-06-09 | Wind River Systems, Inc. | Method and system for lockless interprocessor communication |
JP2011250874A (ja) | 2010-05-31 | 2011-12-15 | Nintendo Co Ltd | 情報処理プログラム、情報処理装置、情報処理システム及び情報処理方法 |
JP5593566B2 (ja) | 2010-06-10 | 2014-09-24 | 任天堂株式会社 | 情報処理システム、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム |
JP5507350B2 (ja) * | 2010-06-11 | 2014-05-28 | 任天堂株式会社 | 携帯型情報端末、携帯型情報端末制御プログラム、携帯型情報システム、および、携帯型情報端末制御方法 |
JP2012018657A (ja) | 2010-06-11 | 2012-01-26 | Nintendo Co Ltd | 情報処理端末、情報処理システム、情報処理プログラム |
JP5677811B2 (ja) | 2010-06-11 | 2015-02-25 | 任天堂株式会社 | 携帯型情報端末、携帯情報システム、携帯型情報端末制御プログラム |
US8413158B2 (en) | 2010-09-13 | 2013-04-02 | International Business Machines Corporation | Processor thread load balancing manager |
JP4999213B2 (ja) * | 2010-09-17 | 2012-08-15 | 任天堂株式会社 | 情報処理プログラム、携帯端末装置、システム、情報処理方法及び通信システム |
GB2484904A (en) * | 2010-10-21 | 2012-05-02 | Bluwireless Tech Ltd | Data processing system with a plurality of data processing units and a task-based scheduling scheme |
GB2484899A (en) * | 2010-10-21 | 2012-05-02 | Bluwireless Tech Ltd | Data processing system with a plurality of data processing units and a task-based scheduling scheme |
GB2484905B (en) * | 2010-10-21 | 2014-07-16 | Bluwireless Tech Ltd | Data processing systems |
GB2484907B (en) * | 2010-10-21 | 2014-07-16 | Bluwireless Tech Ltd | Data processing systems |
JP4882022B1 (ja) | 2010-12-28 | 2012-02-22 | 任天堂株式会社 | 通信システム、情報処理プログラム、情報処理方法、情報処理装置、情報処理システム |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US8561078B2 (en) | 2011-09-27 | 2013-10-15 | Throughputer, Inc. | Task switching and inter-task communications for multi-core processors |
GB2490766B (en) * | 2011-04-16 | 2013-04-24 | Mark Henrik Sandstrom | Task switching and inter-task communications for multi-core processors |
US9262181B2 (en) * | 2011-05-10 | 2016-02-16 | International Business Machines Corporation | Process grouping for improved cache and memory affinity |
JP5667000B2 (ja) * | 2011-06-28 | 2015-02-12 | 株式会社富士通アドバンストエンジニアリング | プロセス優先制御システム,プロセス優先制御方法およびプロセス優先制御プログラム |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
WO2013162589A1 (en) * | 2012-04-27 | 2013-10-31 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
US8874805B2 (en) * | 2012-11-19 | 2014-10-28 | International Business Machines Corporation | Offloading input/output (I/O) completion operations |
US9146777B2 (en) * | 2013-01-25 | 2015-09-29 | Swarm Technology Llc | Parallel processing with solidarity cells by proactively retrieving from a task pool a matching task for the solidarity cell to process |
JP6740210B2 (ja) * | 2014-07-24 | 2020-08-12 | アリフォンソ イニゲス, | 動的に構成可能な先回りコプロセッシングセルを用いる並列処理のためのシステムおよび方法 |
US10552205B2 (en) * | 2016-04-02 | 2020-02-04 | Intel Corporation | Work conserving, load balancing, and scheduling |
JP7322797B2 (ja) * | 2020-04-28 | 2023-08-08 | 株式会社デンソー | リアルタイム演算処理装置 |
JP7331768B2 (ja) * | 2020-04-28 | 2023-08-23 | 株式会社デンソー | リアルタイム演算処理装置 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5841538B2 (ja) * | 1975-12-04 | 1983-09-13 | 株式会社東芝 | マルチプロセツサシステム ノ ユウセンセイギヨホウシキ |
US4394727A (en) * | 1981-05-04 | 1983-07-19 | International Business Machines Corporation | Multi-processor task dispatching apparatus |
US4837688A (en) * | 1986-07-25 | 1989-06-06 | International Business Machines Corporation | Multi-channel shared resource processor |
US5109512A (en) | 1990-05-31 | 1992-04-28 | International Business Machines Corporation | Process for dispatching tasks among multiple information processors |
US5452452A (en) * | 1990-06-11 | 1995-09-19 | Cray Research, Inc. | System having integrated dispatcher for self scheduling processors to execute multiple types of processes |
US5469571A (en) * | 1991-07-15 | 1995-11-21 | Lynx Real-Time Systems, Inc. | Operating system architecture using multiple priority light weight kernel task based interrupt handling |
US5630128A (en) * | 1991-08-09 | 1997-05-13 | International Business Machines Corporation | Controlled scheduling of program threads in a multitasking operating system |
US5379428A (en) * | 1993-02-01 | 1995-01-03 | Belobox Systems, Inc. | Hardware process scheduler and processor interrupter for parallel processing computer systems |
JP2809962B2 (ja) * | 1993-03-02 | 1998-10-15 | 株式会社東芝 | 資源管理方式 |
US6105053A (en) | 1995-06-23 | 2000-08-15 | Emc Corporation | Operating system for a non-uniform memory access multiprocessor system |
JPH09237256A (ja) | 1996-02-29 | 1997-09-09 | Mitsubishi Electric Corp | 並列計算機における動的負荷分散方法 |
US5826081A (en) * | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
US6321308B1 (en) * | 1997-03-21 | 2001-11-20 | Emc Corporation | Method and apparatus for managing access requests from a plurality of devices using dual level queue locking scheme and a doubly-linked circular queue |
FI108478B (fi) * | 1998-01-21 | 2002-01-31 | Nokia Corp | Sulautettu jõrjestelmõ |
JP2002007364A (ja) * | 2000-06-22 | 2002-01-11 | Fujitsu Ltd | 並列計算機システムのジョブスケジューリングを行うスケジューリング装置 |
JP3472540B2 (ja) | 2000-09-11 | 2003-12-02 | 日本電信電話株式会社 | サーバ選択装置、サーバ選択方法、及びサーバ選択プログラムを記録した記録媒体 |
US6904483B2 (en) * | 2001-03-20 | 2005-06-07 | Wind River Systems, Inc. | System and method for priority inheritance |
US7233998B2 (en) | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
JP3884990B2 (ja) | 2002-04-26 | 2007-02-21 | 富士通株式会社 | マルチプロセッサ装置 |
US7389508B2 (en) * | 2003-09-25 | 2008-06-17 | International Business Machines Corporation | System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment |
-
2004
- 2004-02-20 US US10/783,238 patent/US7565653B2/en active Active
-
2005
- 2005-02-18 EP EP05710665A patent/EP1769347A2/en not_active Withdrawn
- 2005-02-18 KR KR1020067012780A patent/KR20060132852A/ko not_active Application Discontinuation
- 2005-02-18 CN CNA2005800029511A patent/CN1910554A/zh active Pending
- 2005-02-18 TW TW094105113A patent/TWI291656B/zh active
- 2005-02-18 WO PCT/JP2005/003064 patent/WO2005081104A2/en not_active Application Discontinuation
- 2005-02-21 JP JP2005044875A patent/JP2005235229A/ja active Pending
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102105866B (zh) * | 2009-05-25 | 2014-02-26 | 松下电器产业株式会社 | 多处理器***、多处理器控制方法、以及多处理器集成电路 |
CN102105866A (zh) * | 2009-05-25 | 2011-06-22 | 松下电器产业株式会社 | 多处理器***、多处理器控制方法、以及多处理器集成电路 |
US9032407B2 (en) | 2009-05-25 | 2015-05-12 | Panasonic Intellectual Property Corporation Of America | Multiprocessor system, multiprocessor control method, and multiprocessor integrated circuit |
CN102834807B (zh) * | 2011-04-18 | 2015-09-09 | 华为技术有限公司 | 多处理器***负载均衡的方法和装置 |
US8739167B2 (en) | 2011-04-18 | 2014-05-27 | Huawei Technologies Co., Ltd. | Method and device for balancing load of multiprocessor system by sequencing migration priorities based on memory size and calculated execution time |
CN102834807A (zh) * | 2011-04-18 | 2012-12-19 | 华为技术有限公司 | 多处理器***负载均衡的方法和装置 |
WO2011103825A3 (zh) * | 2011-04-18 | 2012-03-15 | 华为技术有限公司 | 多处理器***负载均衡的方法和装置 |
US11726812B2 (en) | 2013-05-17 | 2023-08-15 | Coherent Logix, Incorporated | Dynamic reconfiguration of applications on a multi-processor embedded system |
US11023272B2 (en) | 2013-05-17 | 2021-06-01 | Coherent Logix, Incorporated | Dynamic reconfiguration of applications on a multi-processor embedded system |
CN105359098A (zh) * | 2013-05-17 | 2016-02-24 | 相干逻辑公司 | 多处理器嵌入式***上应用的动态重新配置 |
CN105359098B (zh) * | 2013-05-17 | 2019-07-02 | 相干逻辑公司 | 用于在多处理器***中执行应用交换的方法、介质和*** |
CN104754647B (zh) * | 2013-12-29 | 2018-06-22 | ***通信集团公司 | 一种负载迁移的方法和设备 |
CN104754647A (zh) * | 2013-12-29 | 2015-07-01 | ***通信集团公司 | 一种负载迁移的方法和设备 |
CN105630593A (zh) * | 2014-11-24 | 2016-06-01 | 三星电子株式会社 | 用于处理中断的方法 |
CN104657222B (zh) * | 2015-03-13 | 2017-11-21 | 浪潮集团有限公司 | 一种面向smp调度***的优化方法 |
CN104657222A (zh) * | 2015-03-13 | 2015-05-27 | 浪潮集团有限公司 | 一种面向smp调度***的优化方法 |
CN106201711A (zh) * | 2016-06-29 | 2016-12-07 | 联想(北京)有限公司 | 一种任务处理方法及服务器 |
CN106201711B (zh) * | 2016-06-29 | 2019-07-26 | 联想(北京)有限公司 | 一种任务处理方法及服务器 |
Also Published As
Publication number | Publication date |
---|---|
TWI291656B (en) | 2007-12-21 |
TW200540705A (en) | 2005-12-16 |
EP1769347A2 (en) | 2007-04-04 |
US7565653B2 (en) | 2009-07-21 |
WO2005081104A2 (en) | 2005-09-01 |
US20050188372A1 (en) | 2005-08-25 |
WO2005081104A8 (en) | 2005-11-24 |
WO2005081104A3 (en) | 2006-03-30 |
JP2005235229A (ja) | 2005-09-02 |
KR20060132852A (ko) | 2006-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1910554A (zh) | 多处理器***中处理器任务迁移的方法与装置 | |
JP4526412B2 (ja) | マルチプロセッサシステムにおけるタスク管理方法および装置 | |
US8028292B2 (en) | Processor task migration over a network in a multi-processor system | |
JP6381734B2 (ja) | グラフィックス計算プロセススケジューリング | |
US9996401B2 (en) | Task processing method and virtual machine | |
JP5597196B2 (ja) | プロセス内のスケジューラインスタンス | |
JP6449872B2 (ja) | ネットワーク環境における効率的なパケット処理モデルおよびパケット処理のための最適化されたバッファ利用をサポートするためのシステムおよび方法 | |
JP5770721B2 (ja) | 情報処理システム | |
JP6086868B2 (ja) | ユーザモードからのグラフィックス処理ディスパッチ | |
WO2006059543A1 (ja) | スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム | |
JP2013546097A (ja) | グラフィックス処理計算リソースのアクセシビリティ | |
WO2007020739A1 (ja) | スケジューリング方法およびスケジューリング装置 | |
TW200525428A (en) | System and method for loading software on a plurality of processors | |
JP4183712B2 (ja) | マルチプロセッサシステムにおいてプロセッサタスクを移動するデータ処理方法、システムおよび装置 | |
WO2023082389A1 (zh) | 任务处理方法、设备、存储介质及程序产品 | |
CN1945541A (zh) | 处理操作信息传送控制***和方法 | |
US20130141447A1 (en) | Method and Apparatus for Accommodating Multiple, Concurrent Work Inputs | |
Wu et al. | ABP scheduler: Speeding up service spread in docker swarm | |
US20140215475A1 (en) | System and method for supporting work sharing muxing in a cluster | |
CN100336019C (zh) | 基于服务体/执行流结构的操作*** | |
WO2023116910A1 (zh) | 一种计算资源和缓存资源调度方法、装置及*** | |
Wang et al. | Hierarchical budget management in the RED-Linux scheduling framework | |
Huang et al. | Efficient virtual machine deployment in large scale resource environment | |
CN110333899A (zh) | 数据处理方法、装置和存储介质 | |
JPH10340198A (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 |