多处理器系统中的任务分配方法和多处理器系统.pdf

上传人:1** 文档编号:647098 上传时间:2018-03-01 格式:PDF 页数:53 大小:2.40MB
返回 下载 相关 举报
摘要
申请专利号:

CN200310116307.X

申请日:

2003.11.19

公开号:

CN1503150A

公开日:

2004.06.09

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

G06F15/16; G06F9/22

主分类号:

G06F15/16; G06F9/22

申请人:

株式会社东芝

发明人:

吉井谦一郎; 矢野浩邦; 前田诚司; 金井达德

地址:

日本东京都

优先权:

2002.11.19 JP 335632/2002

专利代理机构:

中国国际贸易促进委员会专利商标事务所

代理人:

付建军

PDF下载: PDF下载
内容摘要

具有第一处理器(它具有第一指令集)和第二处理器(它具有第二指令集)的一个多处理器系统中的一种任务分配方法。一项任务或者分配给第一处理器,或者分配给第二处理器。该任务对应于具有一种执行效率的一个程序。该程序包括一个程序模块,或者由第一指令集描述,或者由第二指令集描述。在本方法中,由第一指令集描述的程序模块对应的任务分配给第一处理器。如果为该任务分配的目标从第一处理器变为第二处理器,就判断是否改善了程序的执行效率。如果改善了程序的执行效率,为该任务分配的目标就变为第二处理器。

权利要求书

1: 一种任务分配方法,将一项任务有选择地分配给一个多处理 器系统中的第一处理器和第二处理器,第一处理器具有第一指令集, 第二处理器具有第二指令集,该任务对应于具有一种执行效率的一个 程序,该方法包括: 把与第一指令集描述的一个程序模块对应的一项任务分配给第 一处理器; 判断如果为该任务分配的目标从第一处理器改变为第二处理 器,该程序的执行效率是否改善;以及 如果程序的执行效率改善了,就把为该任务分配的目标改变为 第二处理器。
2: 根据权利要求1的方法,进一步包括: 估计该任务分配给第一处理器的情况下该程序的第一执行时 间,以及估计该任务分配给第二处理器的情况下该程序的第二执行时 间;以及 判断第二执行时间是否短于第一执行时间,以便判断该程序的 执行效率是否改善了。
3: 根据权利要求1的方法,进一步包括: 估计该任务分配给第一处理器的情况下该任务在单位时间之内 可处理的第一数据量,以及估计该任务分配给第二处理器的情况下该 任务在单位时间之内可处理的第二数据量;以及 判断第二数据量是否大于第一数据量,以便判断该程序的执行 效率是否改善了。
4: 根据权利要求1的方法,进一步包括: 估计该任务分配给第一处理器的情况下该任务在单位时间之内 可处理的第一数据量,以及估计该任务分配给第二处理器的情况下该 任务在单位时间之内可处理的第二数据量; 估计第一数据量和第二数据量之间的数据量增量;以及 判断该增量是否大于一个预设的阈值,以便判断该程序的执行 效率是否改善了。
5: 根据权利要求1的方法,进一步包括: 在为该任务分配的目标从第一处理器改变为第二处理器的情况 下,估计第二处理器上的负载;以及 判断第二处理器上的负载是否超载,以便判断该程序的执行效 率是否改善了。
6: 根据权利要求1的方法,进一步包括: 估计该任务分配给第一处理器的情况下该程序中处理器间通信 传递的第一数据量,以及估计该任务分配给第二处理器的情况下该程 序中处理器间通信传递的第二数据量;以及 判断第二数据量是否小于第一数据量,以便判断该程序的执行 效率是否改善了。
7: 根据权利要求1的方法,进一步包括: 估计该任务分配给第一处理器的情况下该程序中单位时间之内 处理器间通信传递的第一数据量,估计该任务分配给第二处理器的情 况下该程序中单位时间之内处理器间通信传递的第二数据量;以及 判断单位时间之内第二数据量是否小于单位时间之内第一数据 量,以便判断该程序的执行效率是否改善了。
8: 根据权利要求1的方法,进一步包括: 通过把第一指令集描述的程序模块中的第一指令,替换为第二 指令集的第二指令,获得由第二指令集描述的一个程序模块,以便执 行与第一指令相同的处理,在产生要分配给第二处理器的一个任务时 需要该程序模块。
9: 根据权利要求1的方法,进一步包括: 通过利用第二处理器所用的一个编译器,编译第一指令集描述 的程序模块的源程序,获得由第二指令集描述的一个程序模块,在产 生要分配给第二处理器的一个任务时需要该程序模块。
10: 根据权利要求1的方法,进一步包括: 从一个文件系统或者一个网络,获得第二指令集描述的一个程 序模块。
11: 根据权利要求1的方法,其特征在于,该程序模块是一个程 序模块复合体,包括第一处理器所用之第一指令集描述的第一程序模 块,以及第二处理器所用之第二指令集描述的第二程序模块,其中所 述任务是使用第一程序模块和第二程序模块中的一个产生的。
12: 根据权利要求1的方法,进一步包括: 对为任务分配的目标改变为第二处理器进行响应,更新存放着 任务分配信息的一个任务分配表。
13: 一种多处理器系统,具有使用第一指令集的第一处理器和使 用第二指令集的第二处理器,该系统包括: 一个任务分配单元,配置为把与包括第一指令集描述的一个程 序模块的程序对应的一项任务分配给第一处理器,该程序具有一种执 行效率; 一个判断单元,配置为判断如果为该任务分配的目标从第一处 理器改变为第二处理器,该程序的执行效率是否改善;以及 一个任务分配控制单元,配置为如果程序的执行效率改善了, 就把为该任务分配的目标改变为第二处理器。
14: 根据权利要求13的系统,进一步包括: 一个估计单元,配置为估计该任务分配给第一处理器的情况下 该程序的第一执行时间,以及估计该任务分配给第二处理器的情况下 该程序的第二执行时间;以及 一个判断单元,配置为判断第二执行时间是否短于第一执行时 间,以便判断该程序的执行效率是否改善了。
15: 根据权利要求13的系统,进一步包括: 一个估计单元,配置为估计该任务分配给第一处理器的情况下 该任务单位时间之内可处理的第一数据量,以及估计该任务分配给第 二处理器的情况下该任务单位时间之内可处理的第二数据量;以及 一个判断单元,配置为判断第二数据量是否大于第一数据量, 以便判断该程序的执行效率是否改善了。
16: 根据权利要求13的系统,进一步包括: 一个估计单元,配置为估计该任务分配给第一处理器的情况下 该任务单位时间之内可处理的第一数据量,以及估计该任务分配给第 二处理器的情况下该任务单位时间之内可处理的第二数据量,从而估 计第一数据量和第二数据量之间数据量的增量;以及 一个判断单元,配置为判断数据量增量是否大于一个预设的阈 值,以便判断该程序的执行效率是否改善了。
17: 根据权利要求13的系统,进一步包括: 一个估计单元,配置为在为该任务分配的目标从第一处理器改 变为第二处理器的情况下,估计第二处理器上的负载;以及 一个判断单元,配置为判断第二处理器上的负载是否超载,以 便判断该程序的执行效率是否改善了。
18: 根据权利要求13的系统,进一步包括: 一个估计单元,配置为估计该任务分配给第一处理器的情况下 该程序中处理器间通信传递的第一数据量,以及估计该任务分配给第 二处理器的情况下该程序中处理器间通信传递的第二数据量;以及 一个判断单元,配置为判断第二数据量是否小于第一数据量, 以便判断该程序的执行效率是否改善了。
19: 根据权利要求13的系统,进一步包括: 一个估计单元,配置为估计该任务分配给第一处理器的情况下 该程序中单位时间之内处理器间通信传递的第一数据量,以及估计该 任务分配给第二处理器的情况下该程序中单位时间之内处理器间通信 传递的第二数据量;以及     一个判断单元,配置为判断单位时间之内第二数据量是否小于 单位时间之内第一数据量,以便判断该程序的执行效率是否改善了。
20: 根据权利要求13的系统,进一步包括: 一个获取单元,配置为通过把第一指令集描述的程序模块中的 第一指令,替换为第二指令集的第二指令,获得由第二指令集描述的 一个程序模块,以便执行与第一指令相同的处理,在产生要分配给第 二处理器的一个任务时需要该程序模块。
21: 根据权利要求13的系统,进一步包括: 一个获取单元,配置为通过利用第二处理器所用的一个编译 器,编译第一指令集描述的程序模块的源程序,获得由第二指令集描 述的一个程序模块,该程序模块在产生要分配给第二处理器的一个任 务时需要。
22: 根据权利要求13的系统,进一步包括: 一个获取单元,配置为从一个文件系统或者一个网络,获得第 二指令集描述的一个程序模块。
23: 根据权利要求13的系统,其特征在于,该程序模块是一个 程序模块复合体,包括第一处理器所用之第一指令集描述的第一程序 模块,以及第二处理器所用之第二指令集描述的第二程序模块,其中 所述任务是使用第一程序模块和第二程序模块中的一个产生的。
24: 根据权利要求13的系统,进一步包括: 一个任务分配表,对为该任务分配的目标改变为第二处理器进 行响应,存放任务分配信息。

说明书


多处理器系统中的任务 分配方法和多处理器系统

    【相关申请的交叉引用】

    本申请基于2002年11月19日提交的、2002-335632号现有日本专利申请,并要求以其做为优先权基础,其全部内容在此引用作为参考。

    【技术领域】

    本发明涉及一种多处理器系统中的一种任务分配方法和一种多处理器系统,该系统具有不同种类的处理器,它们具有不同的指令集。

    背景技术

    多处理器系统是一种计算机系统,它使用多个处理器(CPU)来执行一个程序。这种系统的介绍,可以参见David A.Patterson、John L.Hennessy所著的“Computer Organization and Design:TheHardware/Software Interface”第9章,日文版由Mitsuaki Narita翻译,Nikkei BP出版,书号ISBN 4-8222-8057-8。

    各个处理器由处理器间的连接单元进行连接,比如总线或纵横开关。一个共享内存和一个I/O控制单元也连接到处理器间的连接单元。在许多情况下,每个处理器具有一个高速缓存。有一种公知的多处理器系统,它不配备共享内存,而是每个处理器都有一个本机内存。

    有一种广泛使用的方法,用于开发在多处理器系统中执行的程序。按照这种方法,根据任务之间的依赖关系(后文中称为”任务间依赖关系”)来描述程序。一个程序实现一组处理,而一项任务就是该程序的一个执行单位。任务间依赖关系是指任务之间的数据传递或者控制传递,或者兼而有之。每项任务都配备了一个必要的程序模块,用于在该处理器上真正执行该任务。这种程序开发方法具有一种特性:在每项任务中,都能够以程序模块为单位重复使用程序。因而提高了程序开发的效率,而且能够利用过去已经开发的许多优秀程序模块的资源。

    在多处理器系统中执行所述根据任务间依赖关系描述的一个程序时,需要一个过程来确定哪个任务由哪个处理器来执行,从而将若干任务分配到各个处理器。进行这种任务分配过程是为了提高执行效率。“提高执行效率”是指例如整个程序的执行时间短、单位时间内处理地数据量大、每个处理器的负担小以及处理器间通信的数据量小(或者处理器间通信的次数少)。

    处理器(CPU)具有其自身特定的指令集,这取决于处理器的种类。指令集就是该处理器能够理解的一组指令。普通的多处理器系统包括相同种类的处理器(每个处理器具有相同的指令集),除此以外还有一种多处理器系统,它包括不同种类的处理器,它们具有不同的指令集(后文中称为“异型多处理器系统”)。异型多处理器系统执行的程序,是由若干程序模块作为任务组合而形成的,这些模块是由不同种类处理器的多个指令集描述的。

    当然,如同在包括相同种类处理器的普通多处理器系统中,在异型多处理器系统中分配任务也是为了提高程序执行效率。不过,即使在异型多处理器系统中应用了普通多处理器系统中使用的任务分配方法,仅仅如此还是不能获得足够高的程序执行效率。

    在普通的多处理器系统中,一项单独的任务分配给一个处理器,它具有的指令集与描述这个任务的程序模块所用的指令集相同。如果在异型多处理器系统中进行任务分配,使用普通多处理器系统中的任务分配方法作为判断标准,由于任务间的依赖关系,换言之,由于任务执行的次序,将会频繁发生处理器间的通信。由于这种频繁的处理器间通信产生的经常开销,在异型多处理器系统中会发生一个严重的问题,即程序执行效率降低。

    本发明致力于多处理器系统中的一种任务分配方法,该系统具有不同种类的处理器,它们具有不同的指令集,本方法能够提高程序执行效率。本发明也致力于一种任务分配程序产品和一种多处理器系统。

    【发明内容】

    依据本发明的若干实施例,在具有第一处理器(它具有第一指令集)和第二处理器(它具有第二指令集)的一个多处理器系统中,提供了一种任务分配方法。一项任务或者分配给第一处理器,或者分配给第二处理器。该任务对应于具有一种执行效率的一个程序。该程序包括一个程序模块,或者由第一指令集描述,或者由第二指令集描述。在本方法中,由第一指令集描述的程序模块对应的任务分配给第一处理器。如果为该任务分配的目标从第一处理器变为第二处理器,就判断是否改善了程序的执行效率。如果改善了程序的执行效率,则目标就变为第二处理器。

    附图简要说明

    图1是一幅框图,显示了依据本发明若干实施例的一个多处理器系统的结构;

    图2显示了实现任务分配程序的第一个实例;

    图3显示了实现任务分配程序的第二个实例;

    图4显示了实现任务分配程序的第三个实例;

    图5显示了实现任务分配程序的第四个实例;

    图6显示了一个程序的实例,它是根据多处理器系统执行的任务之间的依赖关系描述的;

    图7A显示了任务执行状态的一个实例;

    图7B显示了任务执行状态的另一个实例;

    图7C显示了任务执行状态的再一个实例;

    图8是一幅框图,显示了一个任务分配系统的功能配置;

    图9是一幅框图,显示了图8所示之优化执行判断部件25的详细结构;

    图10显示了一个程序的实例,它是根据任务之间依赖关系描述的,其特征在于,根据多个不同指令集描述的程序模块来产生任务;

    图11显示了一个实例,其中采用描述这些程序模块所用的指令集作为判断分配的标准,把图10的程序分配给若干处理器;

    图12是一种分配方案的实例,其中图11所示的分配视为“暂时分配”,再恰当地改变暂时分配目标以确定最终分配目标;

    图13是一幅流程图,展示了任务分配过程的一个实例;

    图14是一幅流程图,展示了图13的流程图中暂时分配过程的一个实例;

    图15是一幅流程图,展示了图13的流程图中判断过程的一个实例;

    图16是一个实例,显示了图15中判断过程的预处理过程;

    图17是一幅流程图,展示了图13中分配目标处理器改变过程的一个实例;

    图18是一幅流程图,展示了图13中分配目标处理器改变过程的另一个实例;

    图19是一幅流程图,展示了图13中分配目标处理器改变过程的再一个实例;

    图20是一幅流程图,展示了任务分配过程的另一个实例;

    图21是一幅流程图,展示了任务分配过程的再一个实例;

    图22A显示了一个程序模块复合体的一个实例,它与依据本发明若干实施例的任务分配过程有关;

    图22B显示了该程序模块复合体的另一个实例;

    图22C显示了该程序模块复合体的再一个实例;

    图23是一幅流程图,展示了暂时分配过程的一个实例;

    图24是一幅流程图,展示了分配目标处理器改变过程的一个实例;

    图25是一幅流程图,展示了分配目标处理器改变过程的另一个实例;

    图26是一幅流程图,展示了分配目标处理器改变过程的再一个实例;

    【具体实施方式】

    符合本发明的实施例都包括一种异型多处理器。这种多处理器包括多种处理器,它们具有不同的指令集。要执行多个任务时,多处理器对任务进行选择和改变分配,以便更恰当地分配给具有不同指令集的处理器。从而提高整个系统的程序执行效率。

    本发明提供了一种方法,在一个多处理器系统中把多个任务分配给多个处理器。这些任务对应于要执行的一个程序。该系统包括至少一个第一处理器(它具有第一指令集)和一个第二处理器(它具有第二指令集)。在这些任务中,以第一指令集描述的任务分配给第一处理器。在分配给第一处理器的任务中,选择至少一个作为目标任务,并且通过改变目标任务的分配目标,分配给具有第二指令集的第二处理器,判断程序执行效率是否有改善。如果判断结果表明执行效率有改善,那么就将目标任务分配给第二处理器。

    确切地说,多处理器系统执行的任务是根据程序模块产生的,这些模块中的每一个,无不是以各个处理器的不同指令集中的一个来描述的。

    符合本发明的实施例提供了一种方法和装置,其特征在于,对应于一个程序的任务,先暂时分配给具有相同指令集的处理器,其指令集用于描述这些程序模块,然后通过改变分配目标处理器,判断程序执行效率是否有改善。如果判断结果表明,有必要改变分配目标处理器,那么就要改变目标任务的分配目标处理器,以便进行最终的分配。

    下面将参考附图,介绍本发明的若干实施例。

    (多处理器系统的整体结构)

    图1是一个实例,显示了依据本发明一个实施例的多处理器系统的基本结构。这个系统是所谓的异型多处理器系统。一个处理器间的连接单元7,比如总线或纵横开关,连接着具有指令集A、B和C的多个处理器1至3,一个共享内存4以及一个I/O控制单元5。一个大容量存储单元,比如一个磁盘驱动器6,连接到I/O控制单元5。一个任务分配系统8连接到处理器间的连接单元7,图1仅仅在概念上展示了系统8。

    虽然没有在图1中展示,但是处理器1至3可以具有高速缓存或本机内存。这个多处理器系统可以没有共享内存。图1显示了三个处理器1至3,但是处理器的数目也可以是两个,或者多于三个。在这个异型多处理器系统中包括的所有处理器,不必都具有相互不同的指令集。两个或更多的处理器可以具有相同的指令集。简而言之,这个异型多处理器系统可以包括至少两种处理器,它们具有不同的指令集。

    在处理器1至3上真正执行任务所需的程序模块——它们对应于这个多处理器系统执行的程序——存放在连接着I/O控制单元5的磁盘驱动器6中,或者存放在共享内存4中。如果一个多处理器系统没有共享内存,而是在处理器中具有本机内存,程序模块就存放在本机内存中。在程序模块中,执行有关任务所需的指令以一个特定的指令集来描述。

    (任务分配系统的实施实例)

    任务分配系统8的功能是恰当地把要在多处理器系统中执行的一个程序的任务分配给处理器1至3。确切地说,任务分配系统8体现为一个程序(后文中称为“任务分配程序”)。任务分配程序可以是任务分配专用的程序、一种操作系统的一部分或者操作系统以外的一个主程序。图2至图5显示了任务分配程序的若干实施实例。

    在图2所示的实例中,任务分配程序12表现为一个操作系统(OS)11的一部分,该操作系统在一个特定的处理器1上运行。任务分配程序12控制着一个任务分配过程,用于所有处理器1至3,包括操作系统11(它包括任务分配程序12)在其中运行的处理器1。

    在图3所示的实例中,任务分配程序12表现为操作系统11中每一个的一部分,这些操作系统在多处理器系统中包括的所有处理器1至3上运行。图3的系统中的任务分配过程可以在两种模式下执行。在一种模式下,任务分配程序12——它们是处理器1至3上运行的操作系统11的一部分——在一个完全平等的基础上协作。

    在图3所示任务分配过程的另一种模式下,任务分配程序——它是在处理器1至3中特定的一个上运行的操作系统11的一部分——用作一个主程序。若干任务分配程序——它们是在其它处理器上运行的操作系统11的一部分——用作子程序。这些主程序和子程序协作执行任务分配过程。

    在图4所示的实例中,除了多处理器系统中的主处理器1至3以外,还配备了一个管理处理器9。任务分配程序12表现为管理处理器9上运行的操作系统13的一部分。多处理器系统执行的程序中,没有任务分配给管理处理器9。

    在图5显示的实例中,结合了图3和图4中的架构。任务分配程序12——它是在管理处理器9上运行的操作系统13的一部分——用作任务分配程序的主程序。任务分配程序12——它是在处理器1至3上运行的操作系统11的一部分——用作任务分配程序的子程序。这些子程序与主程序协作执行任务分配过程。

    在图2至图5所示的实例中,如上所述,任务分配程序是操作系统的一部分。不过,任务分配程序同样可以实施为主程序的一部分或者任务分配的一个专用程序。

    (多处理器系统执行的程序)

    如图6所示,多处理器系统执行的程序是由多个任务T1至T6以及任务T1至T6之间的依赖关系描述的。如上所述,任务T1至T6中的每一个都是程序的一个执行单位,该程序实现一组处理功能。任务T1至T6之间的依赖关系是指任务T1至T6之间的数据传递,或者控制传递,或者兼而有之。在图6中,从任务到任务的数据或控制传递由箭头表示。执行任务的程序模块时,数据在任务之间传递,如箭头所表示。

    (程序任务的执行实例)

    图7A至图7C显示任务执行状态的实例。

    图7A所示的实例涉及单输入/单输出任务的执行。这种任务的执行包括三个步骤:从输入端任务接收处理所需的数据,对数据进行处理,以及最后将处理后的数据发送到一个输出端任务。

    图7B的实例涉及双输入/双输出任务的执行。这种任务的执行包括从所有输入端任务接收数据,处理收到的数据,以及将处理后的数据发送到输出端任务。

    在图7C所示的实例中,与图7A和图7B不同,输入数据不是一次接收。在图7C的任务执行中,从输入端任务断续地接收数据。例如,在一个给定的单位时间收到的数据受到处理,处理后的数据发送到一个输出端任务,这种过程连续进行。

    在任务执行期间,任务之间的数据接收/发送成本相对较高,尽管它取决于多处理器系统的配置。

    如果多处理器系统具有图1所示的共享内存4,那么无论发送数据的任务和接收数据的任务是分配给同一处理器还是不同的处理器,数据发送都是由将数据写入共享内存4来实现,而数据接收都是由从共享内存4读出数据来实现。一般说来,写入共享内存4和从共享内存4读取的成本也不低。

    相反,如果多处理器系统中的处理器具有高速缓存,那么数据发送的任务和数据接收的任务分配给同一处理器时,任务之间的数据发送/接收就是通过该处理器的高速缓存来进行。正常情况下,存取高速缓存比存取共享内存快。因此,如果对任务加以注意,处理后数据的发送和处理所需数据的接收就是通过写入高速缓存和从高速缓存读取来实现,降低了数据发送/接收的明显成本。不过,高速缓存中的内容需要与内存中的内容保持一致,实际上还是要进行数据写入共享内存的操作。

    如果数据发送的任务和数据接收的任务分配给不同的处理器,那么数据发送是通过数据写入共享内存来实现,数据接收是通过从共享内存读出来实现,尽管数据发送/接收的模式可能不同,这取决于高速缓存的体系结构。因此实现了任务之间的数据发送/接收。在这种情况下通过共享内存进行数据发送/接收,成本也不低。

    如果多处理器系统中的处理器具有本机内存,数据发送的任务和数据接收的任务分配给同一处理器时,任务之间的数据发送/接收就是使用这些处理器中的本机内存来进行。正常情况下,存取本机内存要快于存取共享内存。不过,如果数据发送的任务和数据接收的任务是分配给不同的处理器,那么任务间的数据发送/接收,就是从发送端任务分配之处理器的本机内存,到接收端任务分配之处理器的本机内存,通过数据传递来实现的。正常情况下,本机内存之间的通信成本不低,如同存取共享内存的情况。

    如上所述,在多处理器系统中,处理器间通信的成本不低。因此将任务分配给若干处理器时,需要对处理器间的通信进行全面的考虑。

    在现有技术的任务分配方案中,一个任务分配的处理器,具有的指令集与描述该任务执行所需之程序模块所用的指令集相同。如果这种分配方法应用于异型多处理器系统,将会频繁地发生处理器间的数据通信,降低程序执行效率。

    在常规分配方案中,一个任务分配的处理器,具有的指令集与描述该任务执行所需之程序模块所用的指令集相同,为了缓解上段所述问题,给予常规分配方案“暂时分配”的状态。“暂时分配”完成之后,改变和优化任务分配的处理器,以提高程序执行效率。

    (任务分配系统的细节)

    图8显示了图1所示之任务分配系统的结构实例。如上所述,任务分配系统8可以是一个专用的任务分配系统,一个操作系统的一部分,或者不同于操作系统的一个主程序。在图8中,为了便于理解,任务分配系统8的功能由方框描述。

    在图8中,一个任务的暂时分配部件21进行前述的“暂时分配”。换言之,任务的暂时分配部件21对一个任务分配的处理器,具有的指令集与描述该任务执行所需之程序模块所用的指令集相同。每项任务的暂时分配所涉及的信息,存放在例如图1所示的磁盘驱动器6中,或者存放在一个暂时分配任务的存储部件22中,后者是共享内存4的一部分。一个暂时分配任务的读出部件23,读出每项任务的暂时分配所涉及的信息。

    暂时分配任务的读出部件23读出的信息,输入到将要优化之任务的判断部件24。对于多处理器系统执行的每个程序对应的所有任务,将要优化之任务的判断部件24通过优化过程,判断改变分配目标是否更好。对于已经判定为将要优化之任务的一个任务,一个优化执行判断部件25通过优化过程,判断该任务分配的处理器是否应当真正改变。

    已经确定通过优化过程来改变任务分配目标处理器时,一个优化执行部件26真正执行该任务的分配目标改变过程。无论分配目标是否已经改变,一个分配任务的写入部件27都要把所有任务最终分配目标的信息,写入例如图1所示的磁盘驱动器6中,或者一个分配任务的存储部件28中,后者是共享内存4的一部分。

    如图9所示,优化执行判断部件25包括例如一个执行时间的估计部件31、一个单位时间内可处理之数据量的估计部件32、一个处理负载的估计部件33和一个处理器间通信数据量的估计部件34,作为估计程序执行效率的装置。

    执行时间的估计部件31估计目标任务分配给一个暂时分配目标而不改变的情况下,以及改变分配目标的情况下,任务的执行时间。单位时间内可处理之数据量的估计部件32估计目标任务分配给一个暂时分配目标而不改变以及改变分配目标的情况下,每个单位时间内程序可处理的数据量。处理负载的估计部件33估计目标任务分配目标改变的情况下,分配目标处理器上的负载。处理器间通信数据量的估计部件34估计目标任务分配给一个暂时分配目标而不改变以及改变分配目标的情况下,程序的处理器间通信数据量。

    一个执行效率的判断部件36,根据估计方法的选择部件35选定之估计部件的估计结果,判断程序执行效率。确切地说,执行效率的判断部件36判断,通过改变任务分配目标,程序执行效率是否提高了,这种判断是根据(a)通过改变分配目标,执行时间的估计部件31估计的执行时间是否缩短,(b)通过改变分配目标,单位时间内可处理之数据量的估计部件32估计的可处理之数据量是否增加,或者通过改变分配目标,估计的可处理之数据量是否增加到超过一个预定的阈值,(c)处理负载的估计部件33估计的处理器上的负载是否变为超载,以及(d)通过改变分配目标,处理器间通信数据量的估计部件34估计的处理器间通信数据量是否减少。

    如果估计方法的选择部件35已经选定了多个估计部件,那么执行效率的判断部件36就全面地考察这些估计部件的估计结果,并最终判断执行效率是否提高了。判断执行效率的具体方法将在后面详细讲解。

    执行效率的判断部件36已经判定“通过改变任务分配目标,提高了程序执行效率”时,一个处理器分配目标的确定部件37就确定该任务的一个新的处理器分配目标。相反,执行效率的判断部件36已经判定“通过改变任务分配目标,没有提高程序执行效率”时,暂时分配的处理器就确定为该任务最终分配的处理器。

    图10是一个程序的实例,其中以不同处理器的多个指令集描述的程序模块组合成任务T1至T9。描述任务T1至T9之程序模块的指令集,由括号()中的字母A、B和C表示。图10所示的程序包括任务T1、T5和T9(其程序模块以指令集A描述),任务T2和T6(其程序模块以指令集B描述),以及任务T3、T4、T7和T8(其程序模块以指令集C描述)。

    按照常规的任务分配方法,图10所示程序中的任务分配的处理器,其指令集就是描述相关程序模块的指令集,如图11所示。确切地说,任务T1、T5和T9分配给具有指令集A的处理器1,任务T2和T6分配给具有指令集B的处理器2,任务T3、T4、T7和T8分配给具有指令集C的处理器3。

    如上所述,给予图11所示的任务分配“暂时分配”的状态。经过暂时分配之后的优化,能够改变分配的处理器,例如图12所示的情况。因而,需要处理器间通信的任务间数据发送/接收的次数,从图11所示的七次,大幅度减少到图12所示的两次。简而言之,处理器间通信产生的开销降低了,显著地改善了程序执行效率。

    (任务分配处理过程1)

    现在将参考若干流程图,介绍一个任务分配处理的过程。图13展示了一个任务分配过程实例的基本流程。图13所示的过程被称为任务分配处理过程1。

    (图8所示的)任务的暂时分配部件21将程序的所有任务暂时分配给各个处理器(步骤S11)。每项任务的暂时分配所涉及的信息保存在(图8所示的)暂时分配任务的存储部件22中。暂时分配任务的读出部件23从暂时分配任务的存储部件22中,读出暂时分配所涉及的信息。读出的信息传递到将要优化之任务的判断部件24。

    将要优化之任务的判断部件24从程序的所有任务中确定一个目标任务(将要优化的任务),通过改变分配目标处理器,该任务将可能提高程序执行效率。对于确定的目标任务,优化执行判断部件25判断,通过改变分配目标处理器是否提高了程序执行效率(步骤S12)。

    若是认为通过改变分配目标处理器,在步骤S12中已经确定的任务没有提高程序执行效率,通过把步骤S11中获取的暂时分配的处理器设置为最终分配的处理器,结束本过程。相反,若是通过改变分配目标处理器,已经确定的任务提高了程序执行效率,就确定一个新分配的处理器。

    下一步,把已经确定通过改变分配目标处理器而提高了程序执行效率的、任务分配的处理器,改变为确定的新分配的处理器(步骤S13)。确切地说,改变分配目标处理器意味着对于目标任务,获得以新分配的处理器具有的指令集描述的程序模块。图13所示的过程完成之后,程序的所有任务都已分配给了恰当的处理器。因而,多处理器系统就能够高效地执行本程序。

    下面详细介绍图13中步骤S11至S13组成的过程。

    图14显示了图13中步骤S11之处理的细节。确定指令集(步骤S101),它描述将要分配之目标任务的程序模块。目标任务分配给具有判定指令集的处理器(步骤S102)。例如参考图10所示的程序,在这个暂时分配步骤中,图10所示程序的任务就是分配给这些处理器,如图11所示。

    图15是一幅流程图,展示了图13中步骤S12的处理细节。图15指的是一项目标任务的过程,但是实际上所有任务都进行相同的处理。这个过程能够两次或更多次应用于同一目标任务。例如,有可能对所有的任务执行图15的过程,通过优化对某些任务改变分配,然后再次对组合的任务执行同一过程。从而获得一个较好的优化结果。

    暂时分配任务的读出部件23读出的任务暂时分配涉及的信息,传送到将要优化之任务的判断部件24。将要优化之任务的判断部件24判断,紧邻在步骤S11中经过暂时分配的所关注之目标任务前后出现的一项任务分配目标处理器,其指令集是否不同于目标任务暂时分配的处理器(步骤S201)

    例如在图10的程序中,任务T1、T2、T4和T5中的每一个,都没有任务紧靠其前。在这种情况下,一个伪任务定义为“紧靠其前的任务”。该伪任务是例如这样一项任务:其估计执行时间为“0”,要向目标任务发送的数据为“0”,而且对处理器的负载没有影响。同样,对目标任务比如图10中的任务T9,没有任务紧随其后,也定义了一项“紧随其后的任务”。

    如果步骤S201的结果为“是”,目标任务——要被优化的任务——涉及的信息就传送到将要优化之任务的判断部件24,并且执行步骤S202中的处理。相反,如果步骤S201的结果为“否”,换言之,如果紧邻在目标任务前后的任务暂时分配给与目标任务相同的处理器,对于这个目标任务就没有必要改变分配目标处理器。换言之,即使改变了分配目标处理器,也不会改善程序执行效率。所以,这种判断结果就发送到分配任务的写入部件27,任务暂时分配涉及的信息就写入分配任务的存储部件28中。本过程至此结束。

    在步骤S202中,优化执行判断部件25估计在两种情况下的程序执行效率,一种情况为在步骤S201中判定为要被优化的任务不改变而分配给该任务已经暂时分配的处理器,另一种情况为在步骤S201中判定为要被优化的任务分配给一个改变分配目标的候选处理器。在这种环境下,用于改变分配目标的候选处理器,是与所关注的、要被优化的任务暂时分配的处理器不同的处理器中的任何一个,并且是紧随所关注的、要被优化的任务前后的任务暂时分配的处理器中的任何一个。

    随后,优化执行判断部件25判断,要被优化的目标任务分配目标处理器改变为候选处理器之后,是否提高了程序执行效率(步骤S203)。如果步骤S203的结果为“是”,优化执行判断部件25就判定用于改变分配目标的候选处理器是最终分配的处理器(步骤S204),并且附加一个标记,它指明对于要被优化的目标任务,分配目标处理器要改变为判定的处理器分配目标(步骤S205)。至此,本过程结束。如果步骤S203的结果为“否”,本过程结束而不进行进一步的处理。

    (任务的组合)

    程序或许不像图10所示般简单。如果是具有许多任务的大规模程序,具有复杂的任务间依赖关系的程序,或者同时具有许多任务和复杂的任务间依赖关系的程序,那么将要优化之任务的判断部件24和优化执行判断部件25中的处理就极有可能变得复杂。

    图16展示了一个过程,用于对程序的任务进行组合,从而简化复杂程序的任务分配过程。这个过程是作为图15中步骤S201的例如一个预处理。任务的组合能够简化任务暂时分配,所以简化了图15所示的过程。图16显示了一项任务的过程作为实例,但是实际上对于所有的任务都执行同一过程。

    图16中的处理流程介绍如下。一开始,判断是否有任务紧随所关注的目标任务之后(步骤S211)。如果步骤S211的结果为“是”,就判断紧随目标任务之后的所有任务是否分配给与目标任务相同的处理器(步骤S212)。

    如果步骤S212的结果为“是”,就选择紧随目标任务之后而且前面仅有目标任务的任务(步骤S213)。选定的任务与目标任务进行组合(步骤S214),而且这个组合作为单一的目标任务处理。这个组合传送到图15中的步骤S201。通过这种组合,即使是复杂的程序,也容易进行任务分配过程。

    (优化执行判断)

    下一步,介绍图13中的判断步骤S12的过程,确切地说,图15的步骤S202和S203中的过程。(图8所示的)优化执行判断部件25——其结构细节如图9所示——单独使用或者组合使用以下的执行效率判断标准,执行这个过程。

    [执行效率的判断标准1]

    判断分配目标处理器改变之后,程序执行时间(执行若干任务所需的时间)是否缩短。

    从任务执行所需程序模块中描述的指令序列,能够估计执行任务所需的时间。同样,也能够估计在改变分配目标的候选处理器中执行任务所需的时间。

    按照执行效率的判断标准1,如果目标任务分配给改变分配目标的候选处理器后,执行目标任务所需执行时间的估计结果,短于目标任务分配给暂时分配的处理器而不改变时,执行目标任务所需执行时间的估计结果,那么目标任务就判定为是要被优化的任务,即其分配的处理器应当由优化而改变的任务。

    有可能在多个改变分配目标的候选处理器中,执行目标任务的执行时间估计结果,都短于在暂时分配的处理器中执行目标任务所需执行时间的估计结果。在这种情况下,可以选择执行时间估计结果最短的处理器作为分配改变目标处理器。不然,也可以按照执行效率的判断标准1,选择多个处理器作为改变分配目标的候选处理器,然后再根据另一种执行效率的判断标准来确定最终的分配改变后的处理器。

    [执行效率的判断标准2]

    判断分配目标处理器改变之后,单位时间之内该任务可处理的数据量是否增加。

    单位时间之内该任务可处理的数据量,表明该任务在单位时间之内可以从前一个任务接收的数据量。所关注的目标任务和每个前面任务是暂时分配给同一处理器还是分配给不同的处理器,会影响单位时间之内通过任务间通信可以从前一个任务接收的数据量。其原因在于,不同处理器之间的通信,其成本比同一处理器之内的通信高得多。

    按照执行效率的判断标准2,在两种情况下,即目标任务分配给暂时分配的处理器而不改变的一种情况下,以及目标任务分配给每个改变分配目标的候选处理器的一种情况下,估计在单位时间之内通过任务间通信可以从所有前面任务接收的数据量。

    如果在任何一个改变分配目标的候选处理器中,单位时间之内可以接收的数据量大于当前的暂时分配的处理器中单位时间之内可以接收的数据量,就判定所关注的目标任务暂时分配的处理器应当改变为改变分配目标的候选处理器。

    有可能在所关注的目标任务分配给多个改变分配目标的候选处理器后,单位时间之内可以接收的数据量都大于所关注的目标任务分配给当前的暂时分配的处理器而不改变时,单位时间之内可以接收的数据量。在这样一种情况下,就选择目标任务在单位时间之内可以接收的数据量最大的处理器,作为改变分配目标的处理器。

    在执行效率的判断标准2中,可以采用以下方法。也就是,选择多个处理器作为改变分配目标的候选处理器,考虑一种情况,例如,在多个改变分配目标的候选处理器中,目标任务在单位时间之内可以接收的数据量相同,并且都大于暂时分配的处理器中,目标任务在单位时间之内可以接收的数据量。那么,根据另一种执行效率的判断标准来选择最终分配的处理器。

    [执行效率的判断标准3]

    在分配目标处理器发生改变和分配目标处理器没有发生改变两种情形之间,判断单位时间之内该任务可处理的数据量是否大于一个预设的阈值。

    执行效率的判断标准3基本上与执行效率的判断标准2相同。在判断标准3中,分配给暂时分配之处理器的、所关注的目标任务在单位时间之内可以接收的数据量,与分配给改变分配目标的候选处理器的、所关注的目标任务在单位时间之内可以接收的数据量进行对比之时,使用一个阈值。确切地说,对于单位时间之内可以接收的数据量,采用选择开始之前预设的一个静态阈值,或者在选择期间动态设置的一个动态阈值。

    如果分配给改变分配目标的候选处理器的、所关注的目标任务在单位时间之内可以接收的数据量,大于分配给暂时分配之处理器的、所关注的目标任务在单位时间之内可以接收的数据量,并且也大于阈值,就判定目标任务的处理器分配目标应当改变为改变分配目标的候选处理器。

    [执行效率的判断标准4]

    判断改变分配目标的处理器是否由于改变了处理器分配目标改变而变为超载。

    即使处理器分配目标已经从暂时分配的处理器发生了改变,如果在改变分配目标的处理器中发生了超载,也就没有改善整个程序的执行效率。

    在所关注的任务分配给暂时分配的处理器而没有改变的情况下,估计所有处理器上的负载。另外,在所关注的任务分配给任何一个改变分配目标的候选处理器的情况下,估计所有处理器上的负载。如果改变了分配目标,并且在改变分配目标的候选处理器中没有发生超载,就判定处理器分配目标应当由优化而改变。

    有可能有多个改变分配目标的候选处理器,并且在这些处理器上都没有发生超载,即使分配目标改变到任何一个候选处理器。在这样一种情况下,可以采用以下方法。也就是,选择使负载变化最小的一个改变分配目标的候选处理器。不然,就选择即使所关注的目标任务的分配目标已经改变,也使负载变化最小的一个改变分配目标的候选处理器。此外,在执行效率的判断标准4中,可能会选择多个处理器作为改变分配目标的候选处理器,而根据另一种执行效率的判断标准来选择最终分配的处理器。

    [执行效率的判断标准5]

    判断分配目标处理器改变之后,整个程序的处理器间通信数据量是否减小。

    多处理器系统中程序执行效率改善的关键是处理器间通信数据量。注意到这一点,所以规定了一个判断标准,在目标任务分配给暂时分配的处理器而不改变时,以及在目标任务分配给改变分配目标的候选处理器时,整个程序中处理器之间传递的数据量是否减小。

    确切地说,在所关注的目标任务分配的处理器不改变的情况下,以及在目标任务分配的处理器改变为任何一个改变分配目标的候选处理器的情况下,估计整个程序中处理器间通信传递的数据量。如果目标任务分配的处理器改变为任何一个改变分配目标的候选处理器之后,减小了整个程序中处理器间通信传递的数据量,就判定目标任务分配的处理器应当改变为改变分配目标的候选处理器。

    在目标任务的分配目标改变为多个改变分配目标的候选处理器的情况下,整个程序中处理器间通信传递的数据量的估计结果,有可能都小于在目标任务分配给暂时分配的处理器而不改变的情况下,整个程序中处理器间通信传递的数据量的估计结果。在这样一种情况下,就选择一个改变分配目标的候选处理器——它需要的整个程序中处理器间通信传递的数据量最小——作为改变分配的处理器。不然,在执行效率的判断标准5中,也可以选择多个处理器作为改变分配目标的候选处理器,而根据另一种执行效率的判断标准来选择最终分配的处理器。

    [执行效率的判断标准6]

    判断分配目标处理器改变之后,单位时间之内整个程序的处理器间通信数据量是否减小。

    执行效率的判断标准6基本上与执行效率的判断标准5相同。在判断标准6中,在所关注的目标任务分配给暂时分配的处理器而不改变的情况下,以及在目标任务暂时分配的处理器改变为任何一个改变分配目标的候选处理器的情况下,估计单位时间内处理器间传递的数据量。如果在目标任务暂时分配的处理器改变为任何一个改变分配目标的候选处理器的情况下,单位时间内整个程序中处理器间通信传递的数据量,小于目标任务分配给暂时分配的处理器而不改变的情况下,单位时间内整个程序中处理器间通信传递的数据量,就判定目标任务分配的处理器应当改变为改变分配目标的候选处理器。

    (任务分配过程的实例)

    讲解以上介绍的任务分配处理过程时,参考了特定程序的实例。

    在以下的说明中,详细讲解图10所示程序的任务T1至T9之分配目标——它们暂时分配成如图11所示——的优化过程。图10所示的程序包括任务T1、T5和T9(其程序模块以指令集A描述),任务T2和T6(其程序模块以指令集B描述),以及任务T3、T4、T7和T8(其程序模块以指令集C描述)。

    在图10所示程序中任务的暂时分配中,任务T1、T5和T9分配给具有指令集A的处理器1,任务T2和T6分配给具有指令集B的处理器2,任务T3、T4、T7和T8分配给具有指令集C的处理器3。

    在以下介绍的任务分配过程实例中,仅仅使用执行效率的判断标准1和5来判断分配的处理器是否要改变,以及判断选择哪个处理器作为分配的处理器。假设给予执行效率的判断标准5的优先级高于执行效率的判断标准1。看来这些假设是合理的,因为在实际的多处理器系统中,由于系统配置等因素,难以准备以上介绍的全部执行效率的判断标准1至6。

    [任务T1分配目标的优化]

    <步骤1-1>读出任务T1。

    <步骤1-2>因为仅仅把一个伪任务呈现紧靠任务T1之前,所以能够忽略紧靠其前的任务。

    <步骤1-3>把任务T2和T3呈现在紧随任务T1之后,并且把任务T2和T3暂时分配给处理器2和3,它们不同于任务T1暂时分配的处理器1。因此判断任务T1的分配目标是否要改变。

    <步骤1-4>把任务T1的分配目标从处理器1改变为处理器2、3之后,判断整个程序每单位时间处理器间通信的数据量是否减小。

    <步骤1-5>计算在任务T1由处理器1执行而不改变的情况下,需要的执行时间的估计结果,以及在任务T1由改变分配目标的候选处理器2、3执行的情况下,需要的执行时间的估计结果。

    <步骤1-6>假设步骤1-4的结果表明,分配目标改变前后程序的处理器间通信的数据量没有变化,并且假设步骤1-5的结果表明,在任务T1在处理器1上执行的情况下,需要的执行时间的估计结果较短。

    <步骤1-7>根据步骤1-6的结果,就判定任务T1分配目标处理器不改变。

    [任务T2分配目标的优化]

    <步骤2-1>读出任务T2。

    <步骤2-2>把任务T1呈现在紧靠任务T2之前。

    <步骤2-3>把任务T3呈现在紧随任务T2之后,并且把任务T1和T3暂时分配给处理器1和3,它们不同于任务T2暂时分配的处理器2。因此判断任务T2的分配目标是否要改变。

    <步骤2-4>把任务T2的分配目标从处理器2改变为处理器1、3之后,估计整个程序处理器间通信的数据量是否减小。

    <步骤2-5>计算在任务T2由处理器2执行而不改变的情况下,需要的执行时间的估计结果,以及在任务T2由改变分配目标的候选处理器1、3执行的情况下,需要的执行时间的估计结果。

    <步骤2-6>假设步骤2-4的结果表明,分配目标改变前后程序的处理器间通信的数据量没有变化,并且假设步骤2-5的结果表明,在任务T2在处理器1上执行的情况下,需要的执行时间的估计结果较短。

    <步骤2-7>根据步骤2-6的结果,就判定任务T2分配目标处理器改变为处理器1。

    [任务T3分配目标的优化]

    <步骤3-1>读出任务T3。

    <步骤3-2>把任务T1和T2呈现在紧靠任务T3之前。

    <步骤3-3>把任务T7呈现在紧随任务T3之后,并且把任务T1和T2分配给处理器1,它不同于任务T3暂时分配的处理器3。把任务T7暂时分配给处理器3。因为T1和T2暂时分配给了处理器1,因此判断任务T3的分配目标是否要改变。

    <步骤3-4>把任务T3的分配目标改变为处理器1之后,判断整个程序处理器间通信的数据量是否减小。

    <步骤3-5>计算在任务T3由处理器3执行而不改变的情况下,需要的执行时间的估计结果,以及在任务T3由改变分配目标的候选处理器1执行的情况下,需要的执行时间的估计结果。

    <步骤3-6>假设步骤3-4的结果表现出,因为任务T1和T2已经分配给处理器1,在任务T3的分配目标改变为处理器1之后,整个程序的处理器间通信的数据量减小了。此外,假设步骤3-5的结果表明,即使在任务T3在处理器1上执行的情况下,需要的执行时间的估计结果也基本上相同。

    <步骤3-7>根据步骤3-6的结果,就判定任务T3分配目标处理器改变为处理器1。

    [任务T4分配目标的优化]

    <步骤4-1>读出任务T4。

    <步骤4-2>因为仅仅把一个伪任务呈现紧靠任务T4之前,所以能够忽略紧靠其前的任务。

    <步骤4-3>把任务T6呈现在紧随任务T4之后,并且把任务T6暂时分配给处理器2,它不同于任务T4暂时分配的处理器3。因此判断任务T4的分配目标是否要改变。

    <步骤4-4>把任务T4的分配目标改变为处理器2之后,判断整个程序处理器间通信的数据量是否减小。

    <步骤4-5>计算在任务T4由处理器3执行而不改变的情况下,需要的执行时间的估计结果,以及在任务T4由改变分配目标的候选处理器2执行的情况下,需要的执行时间的估计结果。

    <步骤4-6>假设步骤4-4的结果表现出,在任务T4的分配目标改变为处理器2之后,整个程序的处理器间通信的数据量减小了。此外,假设步骤4-5的结果表明,即使在任务T4在处理器2上执行的情况下,需要的执行时间的估计结果也基本上相同。

    <步骤4-7>根据步骤4-6的结果,就判定任务T4分配目标处理器改变为处理器2。

    [任务T5分配目标的优化]

    <步骤5-1>读出任务T5。

    <步骤5-2>因为仅仅把一个伪任务呈现紧靠任务T5之前,所以能够忽略紧靠其前的任务。

    <步骤5-3>把任务T6呈现在紧随任务T5之后,并且把任务T6暂时分配给处理器2,它不同于任务T5暂时分配的处理器1。那么判断任务T5的分配目标是否要改变。

    <步骤5-4>把任务T5的分配目标改变为处理器2之后,估计整个程序处理器间通信的数据量是否减小。

    <步骤5-5>计算在任务T5由处理器1执行而不改变的情况下,需要的执行时间的估计结果,以及在任务T5由改变分配目标的候选处理器2执行的情况下,需要的执行时间的估计结果。

    <步骤5-6>假设步骤5-4的结果表明,在任务T5的分配目标改变为处理器2之后,整个程序的处理器间通信的数据量减小了。同时假设步骤5-5的结果表明,如果在任务T5在处理器2上执行,需要的执行时间的估计结果延长。

    <步骤5-7>根据步骤5-6的结果以及过程开始之前预设的优先级,就判定任务T5分配目标处理器改变为处理器2。

    [任务T6分配目标的优化]

    <步骤6-1>读出任务T6。

    <步骤6-2>把任务T4和T5呈现在紧靠任务T6之前。因为任务T4和T5都分配给与任务T6相同的处理器3,所以能够忽略这些任务。

    <步骤6-3>把任务T8呈现在紧随任务T6之后,并且把任务T8暂时分配给处理器3,它不同于任务T6暂时分配的处理器。因此判断任务T6的分配目标是否要改变。

    <步骤6-4>把任务T6的分配目标改变为处理器3之后,判断整个程序处理器间通信的数据量是否减小。

    <步骤6-5>计算在任务T6由处理器2执行而不改变的情况下,需要的执行时间的估计结果,以及在任务T6由改变分配目标的候选处理器3执行的情况下,需要的执行时间的估计结果。

    <步骤6-6>假设步骤6-4的结果表现出,如果任务T6的分配目标改变为处理器3,整个程序的处理器间通信的数据量增大了。此外,假设步骤6-5的结果表明,如果在任务T6在处理器3上执行,需要的执行时间的估计结果延长。

    <步骤6-7>根据步骤6-6的结果,就判定任务T6分配目标处理器不改变。

    [任务T7分配目标的优化]

    <步骤7-1>读出任务T7。

    <步骤7-2>把任务T3呈现在紧靠任务T7之前。任务T3分配的处理器不同于任务T7分配的处理器3。

    <步骤7-3>把任务T8呈现在紧随任务T7之后,并且把任务T8分配给与任务T7相同的处理器3。不过,由于紧靠任务T7之前的任务T3分配给处理器1,它不同于任务T7分配的处理器3,所以判断任务T7的分配目标是否要改变。

    <步骤7-4>把任务T7的分配目标改变为处理器1之后,判断整个程序处理器间通信的数据量是否减小。

    <步骤7-5>计算在任务T7由处理器3执行而不改变的情况下,需要的执行时间的估计结果,以及在任务T7由改变分配目标的候选处理器1执行的情况下,需要的执行时间的估计结果。

    <步骤7-6>假设步骤7-4的结果表现出,如果任务T7的分配目标改变为处理器1,整个程序的处理器间通信的数据量增大了。此外,假设步骤7-5的结果表明,如果在任务T7在处理器1上执行,需要的执行时间的估计结果延长。

    <步骤7-7>根据步骤7-6的结果,就判定任务T7分配目标处理器不改变。

    [任务T8分配目标的优化]

    <步骤8-1>读出任务T8。

    <步骤8-2>把任务T6和T7呈现在紧靠任务T8之前。任务T6分配的处理器不同于任务T8分配的处理器3。

    <步骤8-3>把任务T9呈现在紧随任务T8之后,并且把任务T9分配给处理器1,它不同于任务T8分配的处理器3。因此判断任务T8的分配目标是否要改变。

    <步骤8-4>把任务T8的分配目标改变为处理器1、2之后,判断整个程序处理器间通信的数据量是否减小。

    <步骤8-5>计算在任务T8由处理器3执行而不改变的情况下,需要的执行时间的估计结果,以及在任务T8由改变分配目标的候选处理器1、2执行的情况下,需要的执行时间的估计结果。

    <步骤8-6>假设步骤8-4的结果表现出,即使任务T8的分配目标改变为处理器1、2,整个程序的处理器间通信的数据量也不改变。此外,假设步骤8-5的结果表明,如果在任务T8在处理器3上执行而不改变,需要的执行时间的估计结果是最短的。

    <步骤8-7>根据步骤8-6的结果,就判定任务T8分配目标处理器不改变。

    [任务T9分配目标的优化]

    <步骤9-1>读出任务T9。

    <步骤9-2>把任务T8呈现在紧靠任务T9之前。把任务T8分配给处理器3,它不同于任务T9分配的处理器1。

    <步骤9-3>因为仅仅把一个伪任务呈现紧随任务T9之后,所以能够忽略它。不过,由于紧靠任务T9之前的任务T8分配给处理器3,它不同于任务T9分配的处理器1,所以判断任务T9的分配目标是否要改变。

    <步骤9-4>把任务T9的分配目标改变为处理器3之后,判断整个程序处理器间通信的数据量是否减小。

    <步骤9-5>计算在任务T9由处理器1执行而不改变的情况下,需要的执行时间的估计结果,以及在任务T9由改变分配目标的候选处理器3执行的情况下,需要的执行时间的估计结果。

    <步骤9-6>假设步骤9-4的结果表现出,任务T9的分配目标改变为处理器1之后,整个程序的处理器间通信的数据量减小了。此外,假设步骤9-5的结果表明,如果在任务T9在处理器3上执行,需要的执行时间的估计结果变短。

    <步骤9-7>根据步骤9-6的结果,就判定任务T9分配目标处理器改变为处理器3。

    作为以上任务分配过程的结果,暂时分配为如图11所示的(图10所示之)程序的任务分配,就优化为如图12所示。

    (获得分配目标处理器的程序模块)

    下面说明在图8所示的优化执行部件(处理器分配目标改变部件)中,获得分配改变后处理器之程序模块的过程。

    对于以上介绍的过程改变了分配目标处理器的任务,执行时需要通过某种方法来获得所分配之处理器的程序模块。任务分配目标处理器改变时,执行该任务所需的程序模块,还是由暂时分配的处理器具有的指令集来描述的。这个指令集不同于分配改变后的处理器具有的指令集。

    在本实例中,使用图17至图19所示的三个过程中的任何一个,来获得执行该任务的程序模块,并且是由分配改变后的处理器具有的指令集来描述的。图17至图19详细地展示了图13中步骤S13的过程。

    在图17所示的过程中,暂时分配的处理器具有的指令集(用于描述目标任务原始具有的程序模块)特有的指令,替换为以分配改变后之处理器的指令集执行同一过程的指令。因而,获得了由分配改变后的处理器具有的指令集描述的程序模块。

    一开始,就判断目标任务(其分配目标已经确定改变了)的程序模块中的指令,是否在分配目标处理器中没有(步骤S301)。如果步骤S301的结果为“是”,这些指令就替换为以所分配之处理器的指令集执行同一过程的指令,从而产生所分配之处理器的程序模块(步骤S302)。如果步骤S301的结果为“否”,就没有必要获得一个新的程序模块,本过程结束。重复步骤S301和S302中的处理,直到在步骤S303中确定所有指令的处理完成。

    图18展示了替代图17中步骤S302的一个过程。这个处理过程使用一个编译器,它能够根据目标任务原始具有的程序模块的源代码,产生以分配改变后的处理器具有的指令集描述的程序模块。因而,获得了由分配改变后的处理器具有的指令集描述的程序模块。

    图19也展示了替代图17中步骤S302的一个过程。在这个处理过程中,通过搜索文件系统或网络,获得以分配改变后的处理器具有的指令集描述的、目标任务的程序模块。

    (任务分配处理过程2)

    下一步,介绍任务分配处理过程的另一个实例。图20展示了任务分配处理过程2的流程。

    在图13所示的任务分配处理过程1中,所有任务都暂时分配给各个处理器(步骤S11)。通过改变分配目标处理器,判断程序执行效率是否提高(步骤S12)。改变目标任务分配目标处理器——通过改变分配的处理器,已经确定它提高了程序执行效率(步骤S13)。

    另一方面,在图20所示的任务分配处理过程2中,选择若干任务中的一项(步骤S21)。选定的任务接受图13中步骤S11至S13对应的处理(步骤S22至S24)。重复步骤S22至S24中的处理,直到确定把所有任务分配给处理器的分配过程完成了。

    如果图20所示的过程已完成,该程序的所有任务就都已恰当地分配给若干处理器。所以,多处理器系统就能够高效地执行该程序。

    (任务分配处理过程3)

    图21展示了任务分配过程的再一个流程。在这个任务分配处理过程3中,所有任务的暂时分配如同图13中的步骤S11,随后开始程序的执行(步骤S31和S32)。所以,在程序执行期间,只有当步骤S33中预定的条件满足时,才进行图13中步骤S12和S13对应的处理(步骤S34和S35)。重复步骤S33至S35中的步骤,直到在步骤S36中确定程序执行已完成。

    步骤S33中“预定条件”的某些实例如下。

    [条件1]以规则间隔传来的系统计时器发生一个中断。

    [条件2]一个特定处理器已经发出一个通知,表明可能的超载。

    [条件3]一个闲置状态下的处理器已经发生一个中断。

    [条件4]已经从一个特定的处理器发出一个通知,表明该特定处理器已经发出一个输入/输出指令,并为该输入/输出指令初始化了一种执行完成等待状态。

    [条件5]一个特定处理器已经发出一个通知,表明一项任务的执行已经完成。

    除了条件1至5以外,还可能有其它的实例。

    (程序模块复合体)

    现在将要介绍本发明的其它实施例。

    在以上介绍的实施例中,异型多处理器系统执行的程序都是根据任务间依赖关系描述的一个程序。另外,如图10所示,每项任务都是仅仅根据程序模块产生的,该程序模块是由一个特定处理器的指令集描述。

    不过,异型多处理器系统执行之程序的每项任务都是一个单一的程序模块,这没有必要。在所有任务中,至少一项任务可以是基于一个复合体创建的,该复合体包括两种或更多处理器具有的指令集描述的多个程序模块(后文中称为“程序模块复合体”)。

    例如,图22A所示的一个程序模块复合体40A,包括指令集A、B和C描述的程序模块41、42和43。图22B所示的一个程序模块复合体40B,包括指令集A和B描述的程序模块41和42。

    程序的任务中的每一个,都呈现为图22A或图22B所示的程序模块复合体,或者图22C所示的单一程序模块41,这取决于例如任务的内容或者任务产生者的意图。

    程序的所有任务都可以呈现为程序模块复合体,每一个都包括多个普通指令集描述的多个程序模块。换言之,任务中的每一个都可以基于一个程序模块复合体而创建,例如图22A所示者。

    如果在任务中应用以上介绍的程序模块复合体的结构,除了前述的执行效率的判断标准以外,最好是设置一个判断标准“由分配的处理器具有的指令集描述的一个程序模块,呈现在目标任务的程序模块复合体中”,作为一个首要必备的标准。其理由是,除非以改变分配目标的候选处理器具有的指令集描述的程序模块呈现在目标任务的程序模块复合体中,即使改变了分配的处理器,目标任务也不能在改变分配的处理器上执行。

    下一步,说明在至少任务之一是根据以上介绍之程序模块复合体的情况下,图13的步骤S11和S13中的处理。

    图23详细展示了图13的步骤S11对应的过程。确定指令集,它用于描述要分配之目标任务的程序模块复合体中的程序模块(步骤S111)。将目标任务分配给具有确定之指令集的处理器(步骤S112)。

    参考图24至图26,介绍图13的步骤S13对应的处理过程的某些实例。

    在图24所示的处理过程中,判断图13的步骤S12中确定的分配目标处理器是否为这样一个处理器,它使用目标任务的程序模块复合体中包括之程序模块的指令集中的任何一个(步骤S311)。如果步骤S311的结果为“是”,就从程序模块复合体中获得该指令集描述的程序模块(步骤S312)。

    相反,如果步骤S311的结果为“否”,则选择目标任务的程序模块复合体中包括的程序模块中给定的一个(步骤S313)。然后,如同图17中的步骤S302,在步骤S313中选定之指令集描述的、该任务的程序模块中的指令,替换为分配目标处理器的指令集中执行相同过程的指令,从而为分配的处理器产生一个程序模块(步骤S314)。

    在图25的处理过程中,步骤S321至S323中的处理与步骤S311至S313中的处理相同。只有步骤S324中的处理不同。如果步骤S321的结果为“否”,就选择目标任务的程序模块复合体中包括的程序模块中给定的一个(步骤S323)。

    如同图18所示的过程,使用一个编译器,它能够根据步骤S323中选定的程序模块的源代码,产生以分配改变后的处理器具有的指令集描述的程序模块。因而,获得了由分配改变后的处理器具有的指令集描述的程序模块。

    在图26的处理过程中,步骤S331和S322中的处理与步骤S311和S312中的处理相同。只有步骤S334中的处理不同。如果步骤S331的结果为“否”,控制就进至步骤S334,通过搜索文件系统或网络,获得目标任务的程序模块,以改变后的分配目标处理器具有的指令集描述。

    正如以上已经介绍的,即使在根据程序模块复合体来产生任务的情况下,依据本发明实施例的任务分配也是有效的。

    对于本领域的技术人员,不难设想出其它的优点和修改。所以,从广义上来说,本发明并不限于本文所示和介绍的特定细节和代表性实施例。因此,可以作出多种修改,而不脱离一般发明概念中的实质和范围,如附带的权利要求书及其等价内容所定义。

多处理器系统中的任务分配方法和多处理器系统.pdf_第1页
第1页 / 共53页
多处理器系统中的任务分配方法和多处理器系统.pdf_第2页
第2页 / 共53页
多处理器系统中的任务分配方法和多处理器系统.pdf_第3页
第3页 / 共53页
点击查看更多>>
资源描述

《多处理器系统中的任务分配方法和多处理器系统.pdf》由会员分享,可在线阅读,更多相关《多处理器系统中的任务分配方法和多处理器系统.pdf(53页珍藏版)》请在专利查询网上搜索。

具有第一处理器(它具有第一指令集)和第二处理器(它具有第二指令集)的一个多处理器系统中的一种任务分配方法。一项任务或者分配给第一处理器,或者分配给第二处理器。该任务对应于具有一种执行效率的一个程序。该程序包括一个程序模块,或者由第一指令集描述,或者由第二指令集描述。在本方法中,由第一指令集描述的程序模块对应的任务分配给第一处理器。如果为该任务分配的目标从第一处理器变为第二处理器,就判断是否改善了程。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1