处理系统调度的制作方法

文档序号:6419245阅读:171来源:国知局
专利名称:处理系统调度的制作方法
技术领域
本发明涉及具有共享一个存储器的多个处理器的处理系统,尤其是涉及这种系统中的作业调度。
提高处理系统的处理能力,尤其在不改变应用软件条件下,通常的方法是使用所谓的超标量处理器,其探测在相邻指令之间所发现的细粒状的并行性。在超标量处理器中,处理器内部的功能单元可进行安排来同时并行执行几个指令。有时这可以被称为指令级并行性(ILP)。
提高处理能力的另一种方法是将处理系统建成为一个多处理器系统,即一个有多个处理器并行操作的处理系统。某些处理系统通过一种公知的对称多处理器(SMP)体系结构获得了高性能的处理能力。与通过超标量处理器获得的细粒度并行性相对比,SMP体系结构利用粗粒度并行性,它或者是在依据并发程序原则设计的程序中明确指定,或者是从设计用来在单处理器系上连续执行的程序在编译期间内提取得到。在SMP体系结构中,几个任务中的每一个是各自在几个处理器中的某一个上执行的。这些任务是相互并发的进程或者线程在1995年意大利Ligure Santa Margherita召开的第22届计算机体系结构的国际专题讨论年会上,由Sohi、Breach和Vijaykumar提出的“多标量处理器”文章中描述了一种所谓的多标量处理器。在多标量执行模型中,将一种表示关注控制相关性的静态程序的控制流图表(CFG)划分成多个任务,且多标量处理器可采取任务尺寸大小的步骤,推测性地途经CFG,而不会暂停检查一个任务中的任何指令。通过将任务的初始程序计数器传递到处理单元,从而将一个任务分配给处理单元集合中的一个进行执行。那么多任务可以在处理单元上并行执行,这会产生一个每周期多指令总计执行速率。多标量硬件的功能是途经CFG,向处理单元分配任务并以连续执行的方式来执行这些任务。还提供附加的硬件以保持推测的存储器操作、探测违反存储器相关性、以及在需要时的初始化纠正动作。由于在开头的任务是唯一一个确保非推测的任务,除开头部分以外的所有单元进行的存储器操作都是推测性的。
在处理器系统中,外部事件是大多数初始作业的起源,作业的出现是非常随机的,并在处理器系统内部创建一个异步作业流。在这样的系统中,一种有效的作业处理是尤其难以获得的。仍然有普遍的需要更为有效的处理系统。
日本专利6276198的摘要披露了一种包交换,其中提供了多个处理器单元,而且包的交换处理可以用相互独立的单元执行。
日本专利4100449A的摘要披露了一种通过STM-多路复用ATM信道在ATM交换和信号处理器阵列(SPA)之间分配信号单元的ATM通信系统。处理负荷的分散是通过STM交换信号单元来实现的,其中STM基于用路由标记加法器增加到每个虚拟信道上的SPA数量。
日本专利5274279的摘要披露了一种用于并行处理的设备,它形成一套分层的处理器,其中处理器单元组负责并行和流水线处理。概述因此本发明的一般目的是提供一种处理系统,其能够提供作业的有效并行执行。本发明的另一目的是提供安排用于有效地并行处理作业的共享存储器的处理器。本发明还有一个目的是提高处理系统中用于并行作业执行的调度有效性。本发明更深入的目的是在多处理器系统复用现存的用于单处理器系统中的应用软件。
由本发明实现的这些和其他目的如随后的权利要求书定义所示。
依据本发明的第一个方面,一种处理系统包含多个共享存储器的处理器,安排用来实现作业的并行处理;和数据一致性装置,用来保证数据的一致性。处理系统包含一个调度器,用来依据第一算法调度作业在处理器上的执行,它使用作业的局部/并发来提高执行效率。依据本发明的处理系统进一步使用用来以第二算法给出的顺序退出作业的装置。第二算法与第一算法不同。更可取的是,第二算法依据先进先出的原则进行操作,其中可保持如创建顺序等的全局顺序。对使用的特定系统可以调整第一算法,并且可以把对特定处理器的调度建立在如源、目标、通信信道或是为讨论的作业创建处理器基础之上。处理系统使用一个通用的作业队列,而且更为可取的是调度可以适应性地执行。而且更可取的是调度程序和用于退出的装置是分布式单元。
依据本发明的第二方面,电信系统包含一个上述的处理系统。
依据本发明的第三方面,用于这样一个系统的作业处理方法包含以下步骤以通常作业队列的形式存储作业;在共享存储器的并行处理器上执行作业;以及当处理器对共享存储器中的全局数据进行操作时确保数据的一致性。该方法还进一步包含步骤依据第一算法对在通用队列中的作业进行调度以使其在处理器上执行;以及依据与第一算法不同的第二算法退出作业。更为可取地,第二算法依据先进先出的原则进行操作,并可保持如创建顺序等的全局顺序。第一算法可以被进行调整到使用的特定系统,并且可以把对特定处理器的调度建立在如源、目标、通信信道或是为讨论的作业创建处理器基础之上。更为可取地,对要执行的作业的调度适应于特定的应用特征、操作相位、和/或系统的硬件体系结构。
在共享存储器的系统中,全部的应用程序和数据都可以被系统中所有共享存储器的处理器进行访问。因此,当处理器对全局数据进行操作时必须确保数据一致性(顺序以及原子访问相关)。
依据本发明,数据一致性能够由作业的推测性并行执行来保证,这里可以探测作业之间的相关性冲突,并在探测到有相关性冲突时退回和重新开始推测性执行的作业。相关性冲突或者是在变量标记的基础上进行探测,或者是基于对读和写地址的比较进行探测。
通过对较大区域而不是个别数据进行标记,可以实现更粗的粒度相关性冲突检测。
依据本发明的解决方案能够在实质上增加处理系统的吞吐量。
通过使用共享存储器的多处理器和提供合适的用于确保数据一致性的装置,已经存在的用于单处理器系统的应用软件可以复用。在使用标准非定制微处理器实现多处理器的情况下,所有的应用软件都能够通过自动转换应用软件和为支持多处理器而可能进行的系统虚拟机/操作系统修改来实现复用。另一方面,如果多处理器以专有设计的专用硬件来实现,应用软件能够直接迁移到多处理器环境中。两种情况都可以,与从头设计应用软件相比,节约宝贵的时间,并减少程序设计成本。
本发明通过使用固有的作业局部性/并发性来有效地调度用于并行执行的作业,提供了增加吞吐量的优点。本系统更进一步容易软件适应于硬件体系结构,应用特征和操作模式,即它普遍地适用于几乎全部的处理系统,尤其是基于事件的处理系统。此外,尤其在面向块/对象设计的情况下,本发明还允许对已经存在应用软件的复用。根据阅读本发明的实施例的详细描述可以使本发明所提供的其他优点变得明显。
详细描述在整个附图中,对相应的或是类似的元件采用了相同的标记符号。


图1为依据本发明的处理系统的原理图。依据本发明的一种增加吞吐量的有效方法包括使用多个共享存储器的处理器10a-e。更为可取的是,多个共享存储器的处理器10a-e是以基于标准微处理器的多处理器系统的形式实现。本发明中的术语-“多个共享存储器的处理器”还包含逻辑上相似的实现,如在同一芯片上实现的多个共享存储器的处理单元。所有的处理器10a-e共享一个通用的存储器,即所谓的共享存储器11。一般来说,外部事件以作业信号的形式首先到达一个输入/输出(I/O)单元15,然后从这里被传送到一作业队列16。通常作业队列中的项实际上并不是作业本身,而是作业信号或是作业的任何其它表示。然而,在整个描述中,“作业”也将用来互换地表示“作业表示”的出现。与作业队列中的项有关的作业将被进行调度用以在处理器10a-e之一上执行。还可以对作业进行调度,使其以一定的顺序,一个确认的顺序退出。退出包括确认在作业执行期间内对存储器所作的改变完成;在通用队列中插入内部产生的作业;和向外部单元等发送输出信号等等。调度器17在作业进入作业队列16的人口处或者是稍候的场合执行调度。下面将给出实际调度更为详细的描述。
根据调度,作业被分配到不同的处理器进行执行。由于处理器为共享存储器的处理器,指令和数据存储在共享存储器11中。在不同处理器上并行执行的作业有一定的相互关联,这是有一定可能性的。有可能发生有关全局数据的并行的情况。为了确保数据是一致的,提供了用来确保数据一致性的装置14。确保数据一致性的装置14通常涉及不同处理器10a-e以及共享存储器11的功能,因此一般以分布式的形式构造,如图1中的虚线所示。下面将对确保数据一致性的装置14进行更深入的描述。
当一个作业执行完成时,该作业就必须退出或提交。由提交器18依据调度的提交次序执行这样的退出过程。因此,提交器18与共享存储器11、作业队列16相结合以一种合适的方式执行退出过程。下面将对提交器18和提交次序展开更深入的讨论。一个作业的执行可以导致共享存储器中储存的数据的改变,但是也可引起新的作业或消息。这些内部创建的作业或消息目的为了外部单元或是当前系统的处理器。目的为了外部单元的作业和消息被传送到输入/输出(I/O)单元15,以便更进一步传送到向右边接收器。内部作业也可以指向沿该路径,或者直接进入作业队列,或者甚至直接进入某个处理器。
对基于事件的系统的计算一般可以模拟为状态机,其中从外部世界输入的作业会改变系统的状态,并可产生一输出作业。如果一独立的/不相交的状态机能够处理每一作业阶段,在各种状态机之间就不会有任何的数据共享。但是考虑到存在用全局状态表示的全局资源,通常对一个给定全局状态的操作不得不仅仅对于一个处理器是“原子”的,该处理器执行部分系统状态机,并一次访问一个给定的全局状态。在通用队列中的作业之间甚至可能会有顺序相关性。在一个共享存储器的系统中,共享存储器内全部的程序空间和数据空间对所有的处理器来说都是可以访问的。因此,当处理器需要对所有或者至少不只一个处理器所共用的全局数据进行操作时,就必须确保数据的一致性。这可以由数据一致性方法来完成。
在那些软件基于顺序编程的处理器系统中,对作业以正确的顺序退出是很重要的。这允许对作业之间的顺序相关性进行检查和校正。在每一优先级中最重要的逻辑退出次序是遵循先进先出(FIFO)的原则,即最早的作业最先退出。发生于不同源的作业也能够互相相关,则可以把如创建次序等的全局次序用作为提交次序。异步作业可以在执行后立即退出,因此可以给定一个缺省的全局次序。因此,提交调度通常是依据作业队列FIFO的次序执行的。
对要执行的作业进行调度的最简单的方式也是依据FIFO的次序。也就是说,在作业队列16中有一队作业被执行,分布这些作业的次序以便按与它们进入作业队列16的相同次序执行。只要在系统中有可用的处理器,就会将最早可用的作业顺序调度到不同的处理器中。当一个处理器可用时,就会将最早的作业导引到该处理器中。一旦执行这些作业,则就通过退出过程保存该全局次序。
这个设计在或多或少全部地由程序次序所指定的作业次序的基础上,将作业调度到处理器中。然而,还有其它的几个考虑在多处理器系统中调度作业时也是很重要的。例如,由不同处理器执行的作业可以对相同的数据进行操作,这会导致数据的不一致/冲突,接下来会导致回退或拖延,从而降低整体的处理速度。使用高速缓存从而利用数据在时间和空间上的局部性的优越性。也存在一个相应的作业局部性,其可用于以更有效的方式来调度作业。同样,在异步配置中,所有的处理器没有执行所有任务所需要的能力,且作业将不得不等待一个具有正确能力的处理器可用。
因此,依据本发明,执行调度是依照第一算法执行的,且提交调度是依照第二算法执行的。第二算法与第一算法不同,而且更可取地它是一FIFO类型,并保持如创建次序等的全局次序。第一算法,即在其之后执行执行调度的规则,能更好地适应特殊处理系统。因此,可以对算法进行调整以适合于特定应用的特征、操作阶段和处理系统的硬件结构体系。这样的调节可以在安装或修改系统的基础上执行,但是也可以在操作期间内周期性地或间歇性地执行。
第一算法使用那些试图最优化整个系统性能的规则和试探法。一种考虑是为了减少并行操作的情形和/或在当地处理器高速缓存中优化高速缓存命中率,尽可能地保持那些对相同的数据进行操作的作业在同一处理器上。另外考虑是为了在所有时间保持所有的处理器忙碌,而平衡处理器之间的负载。第三个考虑是避免资源缺乏和满足实时的要求。所有的作业必须保证在一定的时间期间内被调度到一个处理器。
图2表示了依据本发明的处理系统1的另一个实施例。这儿,用来确保数据一致性的装置14是一个对所有处理器10a-e的公用装置,但是与处理器10a-e的实际作业执行部分相分开。这是为了说明一种情况,作业在处理器10a-e上推测性地执行,用来确保数据一致性的装置14包含如一个回写存储区和相关性检查装置。处理器10a-e可以从例如存储器11内的一个程序存储12中读出程序指令,而用来确保数据一致性的装置14主要针对存储器11中的一个数据存储13进行操作。
作业队列16是一个用于并行处理的关键部分,这是因为它包含所有执行作业所必需的信息。图3a是一个依据本发明的作业队列16的一个实施例原理说明。在接下来的例子中,为了便于描述,在处理系统中只有3个并行处理器。在图3a中作业队列16安排为作业的一个FIFO缓冲区。作业队列16中的每一入口20与图中的一条线相对应,而且包含多个位置21-24,在其中键入作业的相关信息。作业说明21或者其它任何的表示,与关联信息22如作业的起始地点、作业类型分类、作业的期望目标、执行的数据等一起都是可用的。作业队列16还包括两个标志符以保持执行情况的径迹。开始标志23表示那个特定入口的作业是否已经开始了它在处理器10a-e中任何一个上的执行。“1”表示作业开始了,“0”表示它仍然在等待执行。相似地,就绪标志24表示一个作业是否已经完成了执行,并等待退出。这儿“1”表示作业已经准备好了。作业队列16的这样一种简单结构是可能和本发明一起使用的。
由于作业队列是一个FIFO的队列,因此提交次序是由队列中的作业次序来定义的。指针25与提交次序相关联,并指示作业队列中最先进入的作业。当指示的作业退出以后,指针25就在作业队列16中向上移动一步从而指示要退出的下一个作业。第二算法的一个简单的FIFO特性是由FIFO队列和指针25的使用创建的。
在说明中,将调度器和提交器用单个单元表示。然而事实上,这种装置的天生特征是以分布式的方式实现它们。因此部分调度器或它的功能可以在不同的处理器和共享存储器中出现或执行。以同样的方式,提交器最好也作为一个分布式的装置来实现。
图3a的实施例中,由于作业队列自身中没有存储执行调度信息,当一个处理器10a-e变得可用时就必须执行执行调度。在这种情况下,处理器通知调度器有关的空闲执行容量,且调度器搜索作业队列以向该处理器提供一个合适的作业。然后依据前面所描述的第一算法选择这个合适的作业。被选择的作业然后在空闲的处理器上执行。当一个处理器变得可用时,实际的调度就会执行了,而且不会提前进行,这种过程的一个优点是一个不平衡的负载分布能够很容易地通过使算法搜索几个不同的优先选择来进行补偿。依据第一优先权用于某个处理器的作业,如果没有开始打算对那个处理器可用的作业时,它就可以在其它的处理器上执行。因此就会分布有暂时不平衡的负载。
然而,由于当一个处理器变得可用时就会发生调度,而且调度本身需要过多的处理器容量,由于处理器必须等待调度的执行,因此在某些应用中这种方法就会很缓慢。
图3b说明了依据本发明的作业队列16的一个可选实施例。以与前面相同的方式发生提交调度,但是在这个实施例中的作业队列16每一入口包含一个额外的字段。调度执行标志26包含有关当前作业的最优选处理器的信息。当一个新作业进入队列时,调度器17基于如作业本身信息21和相关信息22来执行一个执行调度。调度器17查找一个合适的处理器,并在执行标志26中存储一个指示。当一个处理器变得可用时,就搜索执行标志以获得该可用处理器的指示,然后开始执行。
由于调度是提前进行的,因此开始执行一个新作业的过程是很快的。然而,在没有为特定的处理器调度作业的情况下,空闲的处理器容量就不能直接使用。然而在这种情况下一个可能的解决方案是可以将某些已经调度给其它处理器的等待作业重新调度到空闲处理器。
在图3c中说明了本发明中使用的作业队列的另一个实施例。这儿,提交调度可以通过对作业队列中的每一个入口引入提交标志27来执行。提交标志27是依据第二算法在作业进入作业队列16时进行设置的,用来指示作业的全局次序。对这样的一个作业队列,由于提交标志27保持了该次序的径迹,不同作业的位置不必是一FIFO的次序。在退出时,提交器18搜索具有已经准备好退出的作业相对应的最低提交标志的作业。
图3d说明了本发明中使用的作业队列的其它解决方案。作业队列16被分成三个部分28,每一个对应于一个特定的处理器。当一个新的作业进入作业队列时,调度程序17就依据作业的全局次序设置提交标志27。然而,调度程序17依据第一算法确定作业队列中的位置。如果一个作业被调度到第一处理器,该作业就进入作业队列的第一部分,如果一个作业被调度到第二处理器,该作业就进入作业队列的第二部分,而且如果一个作业被调度到第三处理器中,则该作业就进入作业队列的第三部分。当一个处理器变得可用时,就选择与特定处理器相对应的部分28中第一作业来执行。在退出时,提交标志27用来确保退出的执行是以正确的全局次序进行的。这允许向处理器提供并行相关/耦合的队列。
上面所描述的公用的作业队列是以一个单元的形式实现的。这儿,公用的作业队列还可以用不同存储器单元的存储器部分构成,彼此之间相互关联。这种耦合的队列可以包含上面所描述的队列设计中的任何一个。使用相关的存储区,其对不同的处理器会出现不同的访问次数,这也是可能的。
对于本领域的任何一个技术人员来说,上面所描述的四个作业队列的实施例仅仅是作业队列如何能够被实现的例子。在维持关于分开执行调度和提交次序的基本构思的同时,可以进行许多的变化和修改。
在优化系统性能时执行调度是非常重要的。如上所述,调度必须进行调整以适应于它将被用于的特定系统。图4a是一个依据本发明的第一实施例的处理系统的框图。处理系统包含多个共享存储器的处理器10a-10e、一个共享的存储器11、一个I/O单元15、一个调度器17、数据一致性装置14和一个公用的作业队列16。
I/O单元15接收进入的外部作业,并输出外出作业。调度器17调度进入的作业用于执行和提交,并在作业队列16中安排作业。每一处理器从公用的作业队列16中读取或接收作业用来进行处理。该读取是依据第一算法的调度和依据一个合适的优先权执行的。
一般情况下作业是以信号消息的形式,其中每一消息有一个标题和一个信号主体。这个信号主体包含执行一个软件任务所必需的参数。在整个本发明中,术语“任务”和“作业”可以互相交换使用。通常,信号主体包含一个隐式或显式的指针指向共享存储器中的软件代码/数据以及所要求的输入操作数。因此,处理器独立地读取和处理作业从而并行执行相应的软件任务或作业。
在并行任务执行期间,处理器需要对共享存储器中的全局数据进行操作。为了避免数据的不一致性,这是指几个处理器对同一全局数据进行访问和操作,或者是以不正确的次序对数据进行操作(在一个作业或任务的生命周期内,即直到作业退出为止),数据一致性装置14一定必须在任何时候都确保数据的一致性。本发明为确保数据的一致性使用了冲突检测和退回过程。
软件任务可以推测性地并行执行,对相关性冲突进行检测,从而使那些被检测出存在相关性冲突的推测性执行的任务能够退回并重新开始。通常标记方法或者地址比较方法能实现冲突检测。在标记方法中,每一处理器包含用来对共享存储器中变量的使用加以标记的装置,然后就可以基于这些标记检测出变量访问冲突。通常由于退回(导致无用处理)而造成冲突检测存在损失。应注意到在使用之前锁定源可以和冲突检测一起使用从而减少由于退回而造成的损失。
通常情况下,作业信号包含一个指针,隐式或显式的,指向存储器中存储的应用软件内的指令,以及这些指令执行时需要的操作数。从这个意义上来说,作业信号在定义相应的作业上是完全自我包含的。
由协议控制信息流的系统的通用要求是某些相关事件必须以接收的次序进行处理(必须满足给定的系统协议所施加的次序要求)。不管系统是如何实现的,这对系统来说是不变的。通常,作业之间的退出次序是由处理核心的到达/创建来定义的,而且一般不会发生改变。然而,在一个处理不同优先权等级的作业信号的处理系统中,先退出具有较高优先权等级的作业信号,然后退出具有较低优先权等级的作业信号,这是很有用的。一般来说,同一优先权等级的作业以与它们到达/被创建的相同的次序退出。
稍后将对冲突检测和确保数据一致性的装置进行更为详细地描述。调度实例基于通信源的映射举例来说,一个分层结构处理系统包含一个中央高级处理器节点和一些被称为区域处理器的低级处理器,其中每一个区域处理器轮流为一些硬件设备服务。在这样的系统中,源于硬件设备的事件和来自为一组设备服务的区域处理器的事件满足由给定协议所定义的管理需求所设定的条件(除错误条件以外,该条件由在一个较高级的处理来保护)。这样来自特定设备/区域处理器的任务形成一组任务,通常它们相对于其他这样的组而言是独立的(一直到顺序相关性开始)。在每一个这样的组中,作业更可能访问同样的数据(在相关的时间尺度上),因此很可能提高缓存点击率。此外,在来自不同区域处理器的作业之间几乎不存在顺序相关性。为了保持这些特性,每一个设备/区域处理器必须总是把它的作业送给同样的处理器10a-e。举例来说,在电信应用中,接受自用户的一连串数字,或者某个中继设备所接收的一连串ISDN用户部分信息必须以接收的顺序进行处理。然而,从两个独立的中继设备接收的一连串信息可以以任意的顺序处理,而只要保持每个中继设备的信息顺序。
在图4a中可以看出,来自一个预定源如一个特定的硬件设备或通讯信道等的作业31被调度给预定的处理器10e,来自另一个预定源如一个特定的区域处理器的作业32被调度给另一个预定的处理器10b。由于源的数量一般远远超过共享存储器的处理器的数量,通常每个处理器被分配了多个源。在典型的电信/数据通信应用中,可能有1024个区域处理器和一个中央处理器结点连接。以负载平衡的方式将区域处理器映射到在中央结点的多个共享存储器的处理器,这意味着每一个共享存储器的处理器大约连接205个区域处理器(假定在中央结点有5个处理器,所有区域处理器产生同样的负载)。然而实际上,具有一个更细的粒状理论(finer granularity),将来自诸如信号设备、用户终端等硬件设备的作业调度给中央节点处理器,这是有益的。这通常会使它更容易获得负载平衡。电信网中的每一区域处理器可以控制几百个硬件设备。所以依据本发明的解决方案是将来自硬件设备的作业调度给在中央节点的多个共享存储器的处理器,而不是由一个中央节点处理器来处理10000个或者更多的硬件设备,它当然是以共享时间的方式来处理负载。
一个诸如Telefonaktiebolaget LM Ericsson的AXE数字交换系统之类的系统,用由处理器-到-处理器(CP-to-CP)的信号、或者所谓的内部作业相连接的片段,处理一个外部作业,该系统在实施由协议所要求的调度需求外,还可能需要实施自己的调度需求。通常这些CP-to-CP信号不得不以它们产生的顺序进行处理(除非被在执行的最近一个片段所产生的更高优先级的信号所取代)。如果每一个CP-to-CP信号(内部作业)在产生它的处理器上面处理,就可以满足附加的调度需求。这如图4b所示,虚线37从处理器10a到作业队列16,然后又返回同一处理器10a。同样的,由处理器10e创建的内部作业,如线30所示,返回到同一处理器10e。这样,由返馈它们来控制内部作业返回到产生它们的同一处理器或处理器集-因此就保证它们以与它们的产生顺序相同的顺序进行处理。这种调度即可以提高缓存点击率,又可以减少相关性。基于软件功能/数据,目标/源的映射如上所述,一些系统以由内部作业(例如,CP-to-CP缓冲信号)相连的“片段”方式来处理外部作业。执行调度可以以这样的方式执行,其中多个共享存储器的处理器的集合以多处理器流水线的方式运行,每一个外部作业以相当于一连串作业的片段方式处理,该作业在流水线的不同处理器阶段执行。这意味着第一算法会将由流水线中第一处理器创建的内部作业调度到它本身或者其他特定的处理器执行。因此该调度和前面图4b描述的调度不同。只要所有由一个阶段产生的信号以与它们产生的顺序相同的顺序送到下面的处理器阶段,以信号创建的顺序来处理信号的顺序需求将会得到满足。对该准则的任何偏离都会导致竞争,其结果是相关性冲突和退回从而降低系统的吞吐量。如果对一给定片段的执行会导致不只一个信号,那么这些信号都不得不以和它们产生相同的顺序送到下面的处理器阶段。或者,如果信号分布到两个或者更多的处理器上,就有必要确认产生的竞争可能性将会比较难以避免退回。
图4b中的处理系统也可以用来说明这种可能性。由一个作为多处理器流水线的一部分的处理器如10a所产生的内部作业,并没有依据粗的虚线37所示返回到同一处理器,而是依据细虚线38所示返回到另一个处理器10d。在流水线中处理器的逻辑顺序是串行的,而不是并行的,即使物理布局是并行的。
可以理解的是,当在多处理器流水线中的一个处理器级已经执行了一个属于第一作业链的作业,并把产生的内部作业信号发送给下一个处理器级,通常它可以自由地开始处理来自下一个作业链中的作业,因此可以提高系统的吞吐能力。
从总的来看,“流水线”执行会减少访问全局数据的冲突原子的数量,然而在例如基于通信源的作业执行中,会提高缓存点击率和减少顺序相关性。因此一种最有利的情况是二者的结合,其中表示对于原子访问难度来说具有高风险的流可以在流水线中进行处理,而能够以类别之间很少或者没有顺序相关性进行类别分类的流被并行处理。集群的使用图5是一个简化的共享存储器的多处理器系统的简图,该系统具有一个共享存储器软件的面向对象设计。共享存储器11内的软件具有面向对象/块的设计,并被组织成一个块或类B1到Bn的集合,其中每一块都负责执行某一或某些功能。一般地,每个块都分为两个主要的段一个程序段用来存储代码,和一个数据段用来存储数据。在一个块的程序段中的代码只能对属于同一块的数据进行访问和操作。数据段最好同样也分为两段,第一段“全局”数据包含多个全局变量GV1到GVn,和第二段包含如“私有”数据,诸如记录R1到Rn等,其中每一记录一般包含多个记录变量RV1到RVn,如记录Rx所示。
一般来说,一个信号进入一个块时启动块内数据的处理过程。当接收到作业时,不论是外部的还是内部的,每个处理器执行由作业信号指示的块中的代码,并操作该块中的全局变量和记录变量,这样就执行一个软件任务。在图5中,对软件任务的执行用每一个处理器中的波浪线指示。
在图5的示例中,第一处理器10a执行在软件块B88中的代码。多个指令被执行,其中只显示了指令I20到I23,且每一个指令对块内的一个或多个变量进行操作。例如,指令I20对记录R1中的记录变量RV28进行操作,指令I21对记录R5中的记录变量RV59进行操作,指令I22操作全局变量GV43,以及指令I23操作全局变量GV67。相应地,处理器10b执行块B1中的代码并对该块中的变量进行操作,处理器10c执行块B5中的代码并对该块中的变量进行操作,以及处理器10d执行块B2中的代码并对该块中的变量进行操作。
一个面向块的软件示例是Telefonaktiebolaget LM Ericsson的PLEX(用于交换的编程语言)软件,其中整个软件是由块组织而成的。Java应用软件是真实面向对象设计的实例。
在面向对象的软件设计中,共享存储器中的软件是由如上所述的块或类组织而成的,而且当接收到一个外部作业(指向某个特定块)时,相应的处理器执行在该块/对象中的代码,并且可以产生一个内部作业形式的结果送给另一个块/对象。当开始执行这个内部作业时,它在指定的块/对象上执行,并可能产生另一个内部作业送给某些其他的决/对象。该链一般会在几个内部作业以后消失。例如,在电信应用中,每个外部作业一般产生5-10个内部作业。
为面向对象软件设计而定制的流水线执行调度是将软件块/类的集群分配在处理器上,并在目标块的基础上调度作业。一个集群分配给一个处理器,而另一个集群分配给另一个处理器。以这样的方式,每一个共享存储器内的块/类集群都分配给一个预定的处理器,且该分配方案由例如调度器内的查询表和共享存储器内的查询表来实现。该查询表在例如作业ID等的基础上把一个目标块和每个作业相链接,同时将每一个目标块和一个预定的块集群关联。调度器依据查询表内的信息将外部作业分配给处理器。共享存储器内的查询表可以为所有的处理器所用,从而将内部作业分配给处理器。换句话说,当一个处理器产生一个内部作业时,它将参考该查询表来决定i)基于作业ID的相应目标块,ii)确定的目标决所属的集群,及iii)该确定的集群所分配的处理器,然后将内部作业信号送到恰当的处理器。很重要的是要注意到通常每一块属于一个且仅此一个集群,虽然一种具有重叠集群的分配方案可以以一个稍微复杂一点的方式,通过使用除作业ID以外的例如执行状态信息来实现。
图4c说明了一个基于作业目标块39a到c的执行调度算法。共享存储器11中的一个具有特定目标块39a的作业被调度给特定的处理器10e执行,如实线路径34所示。共享存储器11中的另一个具有另一目标块39c的作业被调度在特定处理器10b内执行,如虚线路径33所示。
而图4d说明基于数据源的作业执行调度。一个作业执行块/类39a中的代码,且该作业依据基于源的调度算法调度到处理器10d。该输入数据沿实线35而行。另一个任务,执行另一个块/类39b中的代码,被调度给处理器10b。该输入数据沿虚线36而行。
为了最大的收益,对处理器的调度必须做到所有的处理器是平均负载的。因此,块/类集群是依据一个“平均负载”的准则进行划分的(花费在每一个集群上的时间总量可以通过例如在一个单独的处理器上运行一个相似的应用来获知或者通过监视系统性能来收集,以便重调划分)。
不管实际上的执行调度是如何实现的,还是可能会发生这样的情况,不同的处理器上的负载暂时或长期是不均衡的。这样的情况可能会导致不同作业的延迟时间会有相当的不同。为了阻止这种情况的发生,最好是不时地调整第一算法。一个用来实现自适应负载均衡的简单过程是将某些原先调度给具有最高负载的处理器的作业重新调度给其他的预定处理器。这样的重新调度可以周期性地进行,或者当检测到在一个严重不均匀的作业分布的时候间歇性地进行。这样的过程不仅能够处理负载分布的临时变化同样也可以处理负载分布的长时间变化。
现在,下面将对冲突检测进行描述。在一个用冲突检测来确保数据一致性装置的系统里,软件任务(作业)由多个处理器推测性地并行执行,而且对相关性冲突进行检测从而使那些检测到存在相关性冲突的推测性执行的任务能够以正确的顺序退回和重新开始。
退回的基本原理是返回到涉及导致冲突的一个或者两个作业的开始处。直到该点执行中所做的所有改变都被取消,退回的作业稍后会以保证进度的效率不受影响这样的方式,或者这样的延迟之后,重新开始。这一般意味着该方案不允许导致重现退回。实际退回的决定将取决于如冲突作业创建的全局顺序。
更可取的是,为实现冲突检测,每一个处理器在执行任务时会对共享存储器中变量的使用加以标记,这就能使变量访问冲突被检测到。在其非常基本的层次中,标记方法包含对使用在共享存储器里的单个变量做标记。然而,通过标记更大的区域而不是单独数据,就可以实现一个更经历粒状(course-grained)相关性的冲突检测。一种实现更经历粒状相关性检测的方法是使用包含分页的标准内存管理技术。另一种方法是标记组群变量,而且可以发现标记包含记录中的所有记录变量的整个记录,而不是标记单个记录变量,要有效的多。然而,以这样的方式——如果一个作业使用一给定的数据区,则某些其他作业使用同一区域的可能性会非常低,来选择“数据区”是重要的。否则,更大范围的数据区标记实际上可能会导致更高的回退频率。
图7说明了在面向对象软件设计中使用变量标记来检测相关性冲突。如上所述,共享存储器11由块/类B1到Bn组织而成,且多个处理器10a到10c和共享存储器11相连。图7中更详细地显示了两个块,块B2和块B4。在该标记方法的特定实现中,块中的每一个全局变量GV1到GVn和每一个记录R1到Rn都与一个标记字段相关连,如图7所示。
标记字段有和每一个与共享存储器系统连接的处理器对应的一位,因此在这个例子中,每一个标记字段都有三位(可用于读,写和执行态)。所有的位在开始时重置,每一个处理器在访问(读或写)变量或记录之前设置自己所对应的位,然后再读取整个标记字段用于计算。如果在标记字段中有其他任何位已经被设置,则冲突已经临近,处理器退回正执行的任务,取消在执行中直到那点的所有改变,包括重置所有对应的标记位。反之,如果没有其他的位被设置,则处理器继续执行任务。每个处理器记录在执行中访问的每个变量的地址,并在它被退回/被提交时用它来重置其在每一个相应的标记字段内的对应位。为了在冲突被检测到时能够进行退回,必须在每个作业的执行期间保持所有修改了的变量(如在修改之前的变量状态)和它们地址的备份。
在图7中,处理器10b需要访问全局变量GV1,并设置它在和GV1相关的标记字段第二位置的所有位,然后读取整个标记字段。在这种情况下,字段(110)包含一个由处理器10a设置的位和一个由处理器10b设置的位,因此随即就检测到变量访问冲突。处理器10b退回正在执行的任务。相应的,如果处理器10b需要访问纪录R2,它设置在第二位置的所有位,然后读取整个标记字段。字段(011)包含一个由10b设置的位和一个由10c设置的位,因此会检测到记录访问冲突。同样在这种情况下处理器10b回退其正执行的任务。当处理器10c需要访问记录R1时,它首先在相关标记字段的第三位置设置其所有位,然后读取整个字段用于计算。在该情况下,没有其他的位被设置,所以允许处理器10c访问记录用来读或写。注意,当退回一个检测到冲突的作业时,同样也必须依据全局顺序如创建顺序来退回与之发生冲突的作业。
一个更可取的标记字段方法是为每个处理器提供两位,而不是上述的单个位。一位用于写而一位用于读。由于绝大多数的数据仅仅被读取,因此这种方法可以最小化退回。同样为每个作业而不是每个处理器提供标记字段也是可能的。
另一种冲突检测的方法可以被称为地址比较方法,其中在任务结束时比较读和写的地址。和标记方法相比最大的不同之处在于在任务开始执行期间一般不检测其他处理器的访问,而仅仅在退出时。在我们的国际专利申请W088/02513中已经描述了一种实现地址比较方法的相关性检测单元的特定类型的例子。
已有的顺序编程应用软件一般表示大量的投资,而且对于单处理器系统来说已经存在成千上万行的软件代码。在利用标准的现成供应的微处理器来实现多处理器的情况下,可以通过对应用软件的自动转化和对虚拟机/操作系统的可能修改来使用所有现存的软件。这样的自动转化最好是通过重新编译和相应的方式来实现。在多个处理器上执行应用软件时虚拟机/操作软件的修改会支持数据的一致性装置。另一方面,如果多处理器是用专门设计的专用硬件来实现的话,应用软件能够直接移植到多处理器环境中,这样所有的软件代码可以移植到多处理器环境中并在多处理器环境中重新使用,因此就节省了时间和金钱。
在现有技术中,单处理器系统可以用一个分层视图来说明。在最底层,可以发现诸如标准微处理器等的处理器。在下一层中包含操作系统,然后是虚拟机,它用来解释位于最顶层的应用软件。
多处理器系统也同样可以用一个分层试图来说明。在底层,可以发现多个共享存储器的处理器。然后是操作系统。虚拟机,例如可能是一个在SUN工作站上运行的APZ仿真器、一个编译的高性能仿真器如SIMAX或者众知的java虚拟机,被进行修改以用于多处理器支持和数据一致性的相关支持。接下来的程序应用软件一般可以通过简单添加和数据一致性相关支持的代码、重新编译已经编译的块/类、和修改已经解释的解释器、或者在合适的位置插入用于数据一致性支持的指令来后处理对象代码,来进行转化。
在基于变量标记的冲突检测情况下,要执行下面的步骤从而将为单处理器系统编写的应用软件移植到多处理器环境中。在每次对一个变量的写访问之前,在应用软件中插入用于储存该变量地址和原有状态的代码从而允许正确的退回。在每次读和写访问一个变量之前,要在软件中插入用于设置标记字段中的标记位、检查标记字段和存储该变量地址的代码。然后应用软件进行重新编译、重新解释或者后处理。硬件/操作系统/虚拟机同样要进行修改从而提供冲突检测相关支持,实现退回和重新设置标记字段。相应地,如果在执行用于检查标记字段的代码时检测到冲突,控制一般迁移给硬件/操作系统/虚拟机,它使用存储的修改变量拷贝来执行回退。除此之外,当一个作业退出时,硬件/操作系统/虚拟机一般要接管,并重新设置每一个标记字段中的相关位,该字段由那些被该作业访问的变量的存储地址所给定。
已有的在单处理器系统上执行的应用软件能够象它原来运行那样被移植到多处理器系统上,然后可以对该软件进行连续的修改,每次一步,通过尽可能使软件更加“并行”来获得越来越多的性能。
当然,应用软件可以从头开始设计,例如,对于全新的应用来说,可以通过设计一个多线程软件或者通过在某一编程语言中使用并行结构来实现。
图8是一个说明表示依据本发明的作业处理方法的主要特征的流程图。过程从步骤40开始,在步骤41中,作业被存储在一个公用的作业队列中。依据第一算法在步骤42中执行执行调度。步骤43中,作业在他们被调度去的处理器中进行处理。步骤44中,利用诸如数据冲突检测来解决任何的数据相关性。在步骤45中,根据和第一算法不同的第二算法来最后退出和提交作业。过程在步骤46结束。如上所述,不同的步骤能够以不同的顺序执行。例如,实际的提交调度能够在作业队列中存储的作业上执行。执行调度能够和存储步骤连着执行,也可以恰恰在实际作业执行之前执行。
图6是一个通讯系统的原理图,其中实现了依据本方面的一个或者更多处理系统。通讯系统2可以支持诸如PSTN(公共交换电话网络),PLMN(公共陆地移动网络),ISDN(集成服务数字网络)和ATM(异步传输模式)网络等不同框架服务网络。通讯系统2基本上包含多个交换/路由结点50-1到50-6,它们之间用物理连接互相连接一般来说组成主干道组。交换/路由结点50-1到50-4具有接入终止到的接入点,象电话51-1到51-4和计算机52-1到52-4通过本地交换(没有显示)连接到入口点。交换/路由结点50-5和移动交换中心(MSC)53相连。MSC53和两个基站控制器(BSC)54-1和54-2,及一个标识位置寄存器(HLR)结点55相连。第一BSC54-1和多个基站56-1和56-2相连,基站又和一个或者更多移动单元57-1和57-2进行通讯。相似地,第二BSC54-2和多个基站56-3和56-4相连,基站又和一个或者更多移动单元57-3进行通讯。交换/路由结点50-6和提供数据库系统(DBS)的主计算机58相连。用户终端和系统2相连,例如计算机52-1到52-4,就可以从在主机58中的数据库系统请求数据库服务。服务器59,如java服务器和交换/路由结点50-4相连。私有网络如商业网络(没有显示)也可以和图6所示的通讯系统相连。
通讯系统2为和网络相连的用户提供了多种不同的服务。这些服务的例子如在PSTN和PLMN中的一般电话呼叫,消息服务,LAN互连接,智能网络(IN)服务,ISDN服务,CTI(计算机电话集成)服务,视频会议,文件传输,连接所谓的Internet,寻呼服务,视频点播服务等等。
依据本发明,系统2中的每一个交换结点50都最好提供依据本发明的处理系统1-1到1-6。例如一个电话设置需要处理系统执行一连串作业。该串作业在处理器层上定义了电话设置服务。一个依据本发明的处理系统最好同样布局在通讯系统2的每一个MSC53,BSCs54-1和54-2,HLR结点55,主机58和服务器59上。
例如,一个操作Internet协议(IP)包的服务器包含一个依据本发明的处理系统。该处理系统的调度器可以安排调度属于同一传输控制协议(TCP)对话的IP包给同一处理器。
术语基于事件的系统包含但不局限于电信,数据通讯和面向传输的系统。
术语“共享存储器处理器”不局限于标准的现货供应的微处理器,而包括所有类型的处理单元如对称多处理器和专用硬件,使用应用软件和可被所有处理单元所访问的数据来操作共享存储器。这同样包括一些系统,其中共享存储器分布在几个内存单元中,且访问不是对称的,因此不同的处理器访问分散的共享存储器的不同部分的次数是不同的。
上述实施例仅仅是一个例子,必须理解本发明并不仅仅局限于此。在下面披露和要求的基本原理以内的更进一步的修改、改变和改进都在本方面的范围和精神以内。
权利要求
1.一种处理系统(1;1-1-1-12)包含一个用来输入作业的作业队列(16);多个共享存储器的处理器(10a-10e),用来并行执行作业;一个调度器(17),依据第一算法调度上述作业使之由上述处理器执行;装置(14),当上述共享存储器(11)中的数据被处理器(10a-10e)进行操作时,确保并行作业之间数据一致性;依据与上述第一算法不同的第二算法退出上述作业的装置(18)。
2.权利要求1所述的处理系统,其特征在于上述退出装置(18)和上述调度器(17)都是分布式装置。
3.如权利要求1或2所述的处理系统,其特征在于上述退出装置(18)是依据先进先出的原则进行操作的。
4.权利要求3所述的处理系统,其特征在于上述退出装置(18)是依据作业的一个全局程序退出作业的,其中最先进入的作业最先退出。
5.权利要求1到4中的任何一个所述的处理系统,其特征在于上述第一算法能永久或间歇地调整以适于特定应用特征、操作阶段、和/或处理系统(1;1-1-1-12)的硬件结构。
6.如权利要求1到5中任何一个所述的处理系统,其特征在于上述调度器(17)安排用来将由预定源产生的作业调度到一个相同的处理器。
7.如权利要求6所述的处理系统,其特征在于源是在输入端口、外部处理器、和/或硬件设备之间进行选择的。
8.如权利要求1到7中任何一个所述的处理系统,其特征在于所述的调度器(17)安排用来将上述处理器中的第一个所产生的作业调度到所述的第一处理器。
9.如权利要求1到5中任何一个所述的处理系统,其特征在于所述的调度器(17)将指向一个预定目标的作业调度到一个相同的处理器。
10.如权利要求1到5中任何一个所述的处理系统,其特征在于作业需要来自共享存储器(11)的不同数据区(39a-c)中的输入数据,而且所述的调度器将那些需要来自给数据区的数据的作业调度到一个相同的处理器。
11.如权利要求1到5中任何一个所述的处理系统,其特征在于共享存储器中的软件包含多个软件块,每一个作业至少指向一个软件块,而且为实现基于目标的调度,所述调度器将一个块集群分配到每一个处理器。
12.如权利要求1到5中任何一个所述的处理系统,其特征在于所述的调度器(17)将在同一通信信道上到达的作业调度到一个相同的处理器。
13.如权利要求1到12中任何一个所述的处理系统,其特征在于所述的调度器(17)将那些已经被调度到具有最高负载的处理器的作业定期重新调度到其它预定的处理器。
14.如权利要求1到13中任何一个所述的处理系统,其特征在于所述的第一算法是基于静态作业分类和相关性分析的。
15.如权利要求1到14中任何一个所述的处理系统,其特征在于处理器(10a-10e)安排用来推测性地并行执行多个作业,而且确保数据一致性的装置(14)包含用于检测相关性的装置;以及对于一个被探测到了相关性冲突的作业,用来取消和重新开始推测性执行该作业的装置。
16.如权利要求15所述的处理系统,其特征在于每一个处理器(10a-10e)包含用来对共享存储器(11)中变量使用加以标记的装置,用来检测相关性的装置包含基于标记的检测变量访问冲突的装置。
17.如权利要求16所述的处理系统,其特征在于标记装置对多组变量加以标记。
18.如权利要求15所述的处理系统,其特征在于共享存储器(11)中的软件包含多个软件块,每一作业与一个软件块相关联,而且每一处理器(10a-10e)包含用来对块内变量的使用加以标记的装置,相关性探测装置包含用来基于标记的检测变量访问冲突的装置。
19.如权利要求1到18中任何一个所述的处理系统,其特征在于所述作业队(16)中的每一个作业包含用来指示依据所述第一算法是由哪个处理器执行该作业的信息(26,28)。
20.如权利要求1到19中任何一个所述的处理系统,其特征在于所述作业队列(16)中的每一个作业与依据所述第二算法用来指示退出作业的次序的信息(25,27)相关联。
21.如权利要求1到20中任何一个所述的处理系统,其特征在于所述作业队列(16)是成段的,每一作业存储在一个特定的、取决于依据所述第一算法执行作业的处理器的部分(28)。
22.如权利要求1到21中任何一个所述的处理系统,其特征在于所述的作业队列(16)包含物理分离的部分,彼此之间互相关联。
23.如权利要求22所述的处理系统,其特征在于对所述处理器(10a-10e)中的第一个的所述分离部分访问次数,与所述处理器(10a-10e)的第二个的所述分离部分的访问次数不同。
24.一种带有处理系统(1;1-1-1-12)的通信系统(2),所述的处理系统包含一个用于输入作业的作业队列(16);多个共享存储器的处理器(10a-10e),用来并行执行作业;一个调度器(17),调度上述作业使之由上述处理器(10a-10e)依据第一算法进行执行;装置(14),当上述共享存储器(11)中的数据被处理器(10a-10e)进行操作时,确保并行作业之间数据一致性;和依据与上述第一算法不同的第二算法退出上述作业的装置(18)。
25.权利要求24所述的通信系统,其特征在于上述退出装置(18)和上述调度器(17)都是分布式装置。
26.如权利要求24或25所述的通信系统,其特征在于上述退出装置(18)是依据先进先出的原则进行操作的。
27.权利要求24、25或26所述的通信系统,其特征在于上述第一算法能永久或间歇地调整以适于特定应用特征、操作阶段、和/或通信系统(2)的硬件结构。
28.如权利要求24到27中任何一个所述的通信系统,其特征在于所述的调度器(17)将上述处理器中的第一个所产生的作业调度到所述的第一处理器。
29.如权利要求24到27中任何一个所述的通信系统,其特征在于所述的调度器(17)将由一个预定源产生的作业调度到一个相同的处理器。
30.如权利要求29所述的通信系统,其特征在于所述的处理系统(1-12)包含在一个对国际协议(IP)包进行操作的服务器(59)中,所述的调度器(17)将那些属于一个相同的传输控制协议(TCP)会话的IP包调度到一个相同的处理器。
31.如权利要求24到27中任何一个所述的通信系统,其特征在于所述的调度器(17)将指向一个预定目标的作业调度到一个相同的处理器。
32.如权利要求24到27中任何一个所述的通信系统,其特征在于所述的调度器(17)将在同一通信信道上到达的作业调度到一个相同的处理器。
33.如权利要求24到32中任何一个所述的通信系统,其特征在于所述的调度器(17)将那些已经调度到具有最高负载的处理器的作业定期调度到其它预定处理器。
34.如权利要求24到33中任何一个所述的通信系统,其特征在于所述的第一算法是基于静态作业分类和相关性分析的。
35.一种在由多个共享存储器的处理器(10a-10e)并行执行作业的处理器系统(1;1-1-1-12)中处理作业的方法,包含以下步骤在作业队列(16)中存储输入的作业;依据第一算法将所述作业队列(16)中的作业调度到所述的处理器(10a-10e);在上述的处理器(10a-10e)上执行上述的作业;当所述共享存储器(11)中的数据被处理器(10a-10e)进行操作时,确保并行作业之间的数据一致性;和依据与所述第一算法不同的第二算法退出所述作业。
36.如权利要求35所述的处理作业的方法,其特征在于所述的第二算法是依据先进先出的原则进行操作的。
37.如权利要求36所述的处理作业的方法,其特征在于所述的依据所述第二算法的退出步骤是基于作业的全局次序的,其中作业队列中最先进入的作业最先退出。
38.如权利要求35到37中的任意一个所述的处理作业的方法,其特征在于还包含一个使上述第一算法永久或间歇地适于特定应用特征、操作状态、和/或处理系统(1;1-1-1-12)的硬件结构的另一步骤。
39.如权利要求35到38中的任意一个所述的处理作业的方法,其特征在于所述的调度步骤包含将由所述处理器的第一个所产生的作业调度到所述第一处理器的步骤。
40.如权利要求35到38中的任意一个所述的处理作业的方法,其特征在于所述的调度步骤包含将由一预定源产生的作业调度到一个相同处理器的步骤。
41.如权利要求35到38中的任意一个所述的处理作业的方法,其特征在于所述的调度步骤包含将指向一预定目标的作业调度到一个相同处理器的步骤。
42.如权利要求35到38中的任意一个所述的处理作业的方法,其特征在于作业需要从共享存储器(11)中不同数据区(39a-c)输入数据,而且所述的调度步骤包含将需要来自该数据区的数据的作业调度到一个相同处理器的步骤。
43.如权利要求35到38中的任意一个所述的处理作业的方法,其特征在于共享存储器(11)中的软件包含多个软件块,每一个作业目标为至少指向一个软件块,而且所述的调度步骤包含将一块集群分配到每一处理器从而执行基于目标的调度的步骤。
44.如权利要求35到38中的任意一个所述的处理作业的方法,其特征在于所述的调度步骤包含将在同一通信信道上到达的作业调度到一个相同处理器的步骤。
45.如权利要求35到44中的任意一个所述的处理作业的方法,其特征在于所述的调整所述第一算法的步骤包含将已经调度到具有最高负载的处理器的作业间歇性地重新调度到其它预定处理器的步骤。
46.如权利要求35到45中的任意一个所述的处理作业的方法,其特征在于所述的调度步骤包含基于静态作业分类和相关性分析的作业调度步骤。
47.如权利要求35到46中的任意一个所述的处理作业的方法,其特征在于所述的执行作业包含推测性并行执行作业的步骤,所述的确保数据一致性的步骤包含以下步骤检测相关性冲突;以及取消和重新开始推测性地执行已经检测出存在相关性冲突的作业。
48.如权利要求47所述的处理作业的方法,其特征在于还进一步包含每一处理器(10a-10e)对共享存储器(11)中的变量使用加以标记的步骤,而且所述的检测数据冲突的步骤包含基于标记的检测变量访问冲突的步骤。
49.如权利要求48所述的处理作业的方法,其特征在于所述的标记步骤包含对多组变量加以标记。
50.如权利要求35到49中的任意一个所述的处理作业的方法,其特征在于执行所述的调度步骤和新作业进入所述作业队列(16)的入口相连。
51.如权利要求50所述的处理作业的方法,其特征在于所述的调度步骤进一步包含在所述作业队列(16)中设置一执行标志(26)的步骤,所述的执行标志(26)指示作业由哪一个处理器执行。
52.如权利要求50所述的处理作业的方法,其特征在于所述的调度步骤进一步包含在所述作业队列的一部分(28)中存储一作业的步骤,所述的部分(28)取决于执行该作业的处理器。
53.如权利要求35到49中的任意一个所述的处理作业的方法,其特征在于执行所述调度步骤与所述处理器其中之一变得空闲从而开始执行一个新作业相连。
54.如权利要求35到53中的任意一个所述的处理作业的方法,其特征在于还进一步包含退出调度的步骤,依据所述第二算法确定作业退出的次序,其中退出步骤包含依据所述的退出调度退出作业的步骤。
55.如权利要求54所述的处理作业的方法,其特征在于所述的退出调度进一步包含在所述作业队列中设置一个退出标志(27)的步骤,所述的退出标志(27)指示作业退出的次序。
56.如权利要求35到55中的任意一个所述的处理作业的方法,其特征在于还进一步包含将用于单处理器系统的应用软件迁移到多个共享存储器的处理器(10a-10e)中用于执行的另一步骤。
全文摘要
本发明提出了一种处理系统(1),它包含:共享存储器的多个处理器(10a-e),用来并行处理作业;数据一致性装置(14),用来确保数据的一致性。处理系统(1)包含一个调度器(17),依据第一算法调度作业在处理器(10a-e)上执行。依据本发明的处理系统(1)还使用了退出作业装置(18),退出以第二算法给出的次序进行,更为可取的是依据一个创建的全局次序进行。第二算法与第一算法不同。第一算法可以进行调整以适应于所使用的特定系统,并且可以将对特定处理器的调度建立在如源、目标、通信信道、或者是为正讨论的作业创建处理器的基础上。处理系统(1)使用一公用的作业队列(16),而且更可取地是调度能调整执行。
文档编号G06F9/52GK1326567SQ9981332
公开日2001年12月12日 申请日期1999年11月12日 优先权日1998年11月16日
发明者P·A·霍姆贝里, L·-O·克林, S·E·约翰松, M·索霍尼, N·蒂克卡 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1