应用单处理器操作系统的并行处理系统中的处理器间通信系统及其程序的制作方法

文档序号:6541644阅读:99来源:国知局
专利名称:应用单处理器操作系统的并行处理系统中的处理器间通信系统及其程序的制作方法
技术领域
本发明涉及一种多处理器并行处理系统中的处理器间通信系统,更具体地,涉及一种并行处理系统中应用单处理器操作系统的处理器间通信系统,其在多处理器上操作单处理器OS及现有应用程序,从而使应用程序能够实现多处理器的并行处理。
背景技术
在诸如包括蜂窝电话和便携式PC的便携式终端等数据处理设备中,目前的实际情况是基本上在单处理器上执行针对单处理器的操作系统(此后称为单处理器OS)和单处理器应用程序(此后简称为应用程序)。
在这样的环境下,当不进行修改地、以多处理器为基础来使用上述应用程序时,应当在多处理器OS而不是上述单处理器OS上来执行所述应用程序。
在控制多处理器OS和应用程序在多处理器系统上的上述执行的系统中,如日本专利未审公开(Kokai)No.Heisei 3-257652和日本专利未审公开(Kokai)No.Heisei 3-113563中所公开的传统技术。
日本专利未审公开(Kokai)No.Heisei 3-257652(参考文献1)公开了一种在由多个处理器元件构成的多处理器系统中控制处理器元件之间的中断的方法。
日本专利未审公开(Kokai)No.Heisei 3-113563(参考文献2)公开了一种调度要分配给多处理器系统中的多个处理器的处理的方法。
另一方面,日本专利未审公开(Kokai)No.2003-058515(参考文献3)公开了一种在多个处理器元件中执行单个处理的方法。
但是,当在多处理器OS上操作如现有技术中那样操作现有应用程序时,即使在应用程序只使用多个处理器中的一个时,多处理器OS仍然提供针对多处理器的服务,或者即使在没有其他应用程序进行操作时,仍然继续与其他处理器互斥的处理,从而额外的处理引起了开销,而且修改上述应用程序从而用于多处理器需要巨大的人力和费用。
尤其是,当在如包括蜂窝电话和便携式PC的便携式终端等小型数据处理设备中实现多处理器并行处理系统时,多处理器OS的处理开销和应用程序的修改成为阻碍。
在这样的环境下,当使用应用程序而不对现有的单处理器OS进行修改时,需要以单处理器OS来实现并行处理系统,其能够无需修改地在多处理器上操作现有应用程序,例如,已经提出了应用单处理器OS的并行处理系统,本发明的申请人已经递交了有关其的专利申请,并在日本专利未审公开No.2003-345614(参考文献4)中公开。
此外,在应用多处理器OS的传统多处理器系统中,通过使用UNIX域套接字来实现相同处理器中的任务之间的通信,而通过使用TCP/IP协议来实现在各个处理器上进行操作的任务之间的通信。换句话说,通过使用不同的通信系统来不同地实现相同处理器中和处理器间的任务之间的数据通信。
基本上,允许在其上单处理器OS进行操作的处理器上所执行的应用程序利用该OS中所提供的专用通信系统在相同的处理器内进行通信。
因此,为了在多处理器系统上的不同处理器间操作这种应用程序以实现类似于应用多处理器OS的多处理器系统的处理器间的数据传送,需要对应用程序进行修改,以具有实现处理器间的数据通信的功能。
当在如包括蜂窝电话和便携式PC的便携式终端等小型数据处理设备中实现在多处理器中的每个处理器上操作单处理器OS的并行处理系统时,上述对应用程序的修改的需要成为系统实现的瓶颈。
在这样的环境下,需要在多处理器中的每一个上操作单处理器OS并且能够不需要修改针对单处理器OS的应用程序地实现应用程序的处理器间通信的并行处理系统。

发明内容
本发明的目的是提供一种处理器间通信系统,能够在应用单处理器OS的并行处理系统上实现,其在多处理器上操作单处理器OS和现有应用程序,而无需对其进行修改,从而使现有应用程序能够实现多处理器的并行处理、应用程序的处理器间数据传送。
根据本发明的一个方面,一种应用单处理器OS的并行处理系统中的处理器间通信系统,其中在多处理器上操作单处理器OS和应用程序的并行处理系统上,将多处理器逻辑上分为两组,第一处理器侧和第二处理器侧,以及控制在第一处理器侧的处理器上进行操作并能够在应用程序内并行化为第二处理器侧的处理器上的新工作单元的工作单元,从而针对应用程序,执行多处理器的并行处理,每个处理器包括通信代理单元,通过代理在散布在处理器上的工作单元之间传送数据。
在优选结构中,其中传输侧工作单元进行操作的处理器上的通信代理单元保持与处理器上接收侧工作单元的地址有关的信息,以作为接收侧工作单元的代理,接收从传输侧工作单元传送过来的数据。
在另一优选结构中,通过组播向其他处理器上的通信代理单元传送其中接收侧工作单元进行操作的处理器的地址信息和包含与处理器中的工作单元的路径有关的信息的处理信息,以及其他处理器上的通信代理单元接收处理信息,以便进入作为接收侧工作单元的代理来接收数据的状态。
在另一优选结构中,其中传输侧工作单元进行操作的处理器上的通信代理单元响应来自传输侧工作单元的请求,作为接收侧工作单元的代理,接收从单处理器OS传输过来的数据,并通过执行处理器间的通信的预定数据传送单元,将所接收到的数据传输到接收侧处理器上的通信代理单元,并且已经接收到数据的接收侧处理器上的通信代理单元请求接收侧处理器上的单处理器OS向工作单元传送数据。
在另一优选结构中,通信代理单元通过利用套接字的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送。
在另一优选结构中,通信代理单元通过利用消息队列或FIFO的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送。
在另一优选结构中,处理器间通信系统包括OS代理单元,其钩住(hook)由接收侧工作单元做出的对绑定处理功能的调用,以请求单处理器OS的代理绑定处理,其中OS代理单元通过广播向其他处理器的通信代理单元通知包含接收侧工作单元的路径信息的绑定处理信息。
在另一优选结构中,通信代理单元基于只能实现单元所属的处理器内的通信的进程间通信系统,与单元所属的处理器中的工作单元进行通信。
在另一优选结构中,只能实现单元所属的处理器内的通信的进程间通信系统是UNIX域套接字。
根据本发明的另一方面,一种应用单处理器OS的并行处理系统中的处理器间通信系统,其中在多处理器上操作单处理器OS和应用程序,以及控制在一个处理器上进行操作并能够在应用程序内并行化为其他处理器上的新工作单元的工作单元,从而针对应用程序,执行多处理器的并行处理,的并行处理系统上,每个处理器包括通信代理单元,通过代理在散布在处理器上的工作单元之间传送数据。
在优选结构中,其中传输侧工作单元进行操作的处理器上的通信代理单元保持与处理器上接收侧工作单元的地址有关的信息,以作为接收侧工作单元的代理,接收从传输侧工作单元传送过来的数据。
在另一优选结构中,通过组播向其他处理器上的通信代理单元传送其中接收侧工作单元进行操作的处理器的地址信息和包含与处理器中的工作单元的路径有关的信息的处理信息,以及其他处理器上的通信代理单元接收处理信息,以便进入作为接收侧工作单元的代理来接收数据的状态。
在另一优选结构中,其中传输侧工作单元进行操作的处理器上的通信代理单元响应来自传输侧工作单元的请求,作为接收侧工作单元的代理,接收从单处理器OS传输过来的数据,并通过执行处理器间的通信的预定数据传送单元,将所接收到的数据传输到接收侧处理器上的通信代理单元,并且已经接收到数据的接收侧处理器上的通信代理单元请求接收侧处理器上的单处理器OS向工作单元传送数据。
在另一优选结构中,通信代理单元通过利用套接字的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送。
在另一优选结构中,通信代理单元通过利用消息队列或FIFO的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送。
根据本发明的另一方面,一种应用单处理器OS的并行处理系统中的处理器间通信系统,其中在多处理器上操作单处理器OS和工作单元作为任务的并行处理系统上,每个处理器包括通信代理单元,通过代理在散布在处理器上的工作单元之间传送数据。
在优选结构中,其中传输侧工作单元进行操作的处理器上的通信代理单元保持与处理器上接收侧工作单元的地址有关的信息,以作为接收侧工作单元的代理,接收从传输侧工作单元传送过来的数据。
在另一优选结构中,通过组播向其他处理器上的通信代理单元传送其中接收侧工作单元进行操作的处理器的地址信息和包含与处理器中的工作单元的路径有关的信息的处理信息,以及其他处理器上的通信代理单元接收处理信息,以便进入作为接收侧工作单元的代理来接收数据的状态。
在另一优选结构中,其中传输侧工作单元进行操作的处理器上的通信代理单元响应来自传输侧工作单元的请求,作为接收侧工作单元的代理,接收从单处理器OS传输过来的数据,并通过执行处理器间的通信的预定数据传送单元,将所接收到的数据传输到接收侧处理器上的通信代理单元,并且已经接收到数据的接收侧处理器上的通信代理单元请求接收侧处理器上的单处理器OS向工作单元传送数据。
在另一优选结构中,通信代理单元通过利用套接字的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送。
在另一优选结构中,通信代理单元通过利用消息队列或FIFO的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送。
根据本发明的另一方面,一种应用单处理器OS的并行处理系统中的处理器间通信程序,其中在并行处理系统上,在多处理器上操作单处理器OS和应用程序,将多处理器逻辑上分为两组,第一处理器侧和第二处理器侧,以及控制在第一处理器侧的处理器上进行操作并能够在应用程序内并行化为第二处理器侧的处理器上的新工作单元的工作单元,从而针对应用程序,执行多处理器的并行处理,每个处理器执行通过代理在散布在处理器上的工作单元之间传送数据的通信代理功能。
通过以下所给出的详细描述,本发明的其他目的、特征和优点将变得更加清楚。


通过以下所给出的详细描述及本发明优选示例的附图,本发明将得到更为全面的理解,但是,这些描述和附图并不应当被作为对本发明的限制,而只是为了解释和理解的目的。
附图中图1是示出了根据本发明第一示例的并行处理系统的结构的方框图;图2是用于解释在根据第一示例的并行处理系统中、由并行处理单元激活并行处理的操作的示意图;图3是示出了用于在并行处理系统的并行处理单元的并行处理激活中进行请求的消息的结构的示意图;图4是用于解释在根据第一示例的并行处理系统中、响应来自第二处理器侧的任务的文件访问请求而执行的OS服务单元的操作的示意图;图5是用于解释响应来自第一处理器侧的顺序任务的文件访问请求而执行的操作的示意图;图6是示出了根据第一示例的并行处理系统中的控制处理中继单元的内部结构的方框图;图7是用于解释在根据第一示例的并行处理系统中、控制处理中继单元的处理操作的示意图;图8是用于解释在根据第一示例的并行处理系统中、代理单元的信号通知处理操作的示意图;图9是示出了根据第一示例的并行处理系统中、用于实现第二处理器侧的任务之间的协作操作的结构的方框图;图10是用于解释在根据第一示例的并行处理系统中、第二处理器侧的任务之间的协作操作的示意图;图11是用于解释作为并行处理系统的应用程序的示例、在多处理器移动终端上操作应用程序的情况的示意图;图12是示出了根据应用本发明的第二示例的并行处理系统的结构的方框图;图13是用于解释在根据第二示例的并行处理系统中、同步激活进程的并行处理的操作的示意图;图14是用于解释在根据第二示例的并行处理系统中、异步激活进程的并行处理的操作的示意图;图15是示出了根据第二示例的并行处理系统中的控制处理中继单元的内部结构的方框图;图16是用于解释在根据第二示例的并行处理系统中、控制处理中继单元的处理操作的示意图;图17是示出了根据应用本发明的第三示例的并行处理系统的结构的方框图;图18是用于解释在根据第三示例的并行处理系统中、当处理器中的进程通过进程间通信单元、利用信号量系统(semaphore system)进行信号量增加或减小时所执行的操作的示意图;图19是用于解释在根据第三示例的并行处理系统中、当处理器中的进程通过进程间通信单元、利用信号量系统进行信号量减小时所执行的操作的示意图;图20是用于解释在根据第三示例的并行处理系统中、当通过进程间通信单元、利用信号量系统在相同处理器中的进程间进行信号量增加时所执行的操作的示意图;图21是用于解释在根据第三示例的并行处理系统中、当通过进程间通信单元、利用信号量系统在不同处理器中的进程间进行信号量增加时所执行的操作的示意图;图22是用于解释在根据第三示例的并行处理系统中、当处理器中的进程通过进程间通信单元、利用消息队列系统接收消息时所执行的操作的示意图;图23是用于解释在根据第三示例的并行处理系统中、当处理器中的进程通过进程间通信单元、利用消息队列系统接收消息时所执行的操作的示意图;图24是用于解释在根据第三示例的并行处理系统中、当处理器中的进程通过进程间通信单元、利用消息队列系统发送消息时所执行的操作的示意图;图25是用于解释在根据第三示例的并行处理系统中、当通过进程间通信单元、利用消息队列系统在相同处理器中的进程间进行消息发送和接收时所执行的操作的示意图;图26是用于解释在根据第三示例的并行处理系统中、当通过进程间通信单元、利用消息队列系统在不同处理器中的进程间进行消息发送和接收时所执行的操作的示意图;图27是用于解释在根据第三示例的并行处理系统中、利用信号量系统和消息队列系统的进程间通信的特定示例的示意图;图28是用于解释在图27所示的特定示例中、浏览器屏幕上的显示内容的示意图;图29是示出了根据应用本发明的第四示例的并行处理系统的结构的方框图;图30是示出了根据本发明第一示例的并行处理系统的处理器间通信系统的结构的方框图;图31是用于解释根据本发明第一实施例的绑定处理的操作的示意图;图32是示出了为了进行本发明第一实施例中的处理器间数据传送而在任务上执行的程序的轮廓的示意图;图33是示出了由本发明第一实施例中的绑定处理传送的绑定处理信息的结构示例的示意图;图34是用于解释本发明第一实施例中的处理器内的数据传送操作的示意图;图35是用于解释本发明第一实施例中的处理器间的数据传送操作的示意图;图36是示出了在本发明第一实施例中的处理器之间的数据传送中传输的数据传送信息的结构示例的示意图;图37是用于解释根据本发明第一实施例的结束处理的操作的示意图;图38是示出了在本发明第一实施例中的结束处理中传送的结束信息的结构示例的示意图。
具体实施例方式
此后,将参照附图,详细讨论本发明的优选示例。在以下的描述中,阐述了大量的特定细节,以便提供对本发明的透彻理解。但是,对于本领域的普通技术人员而言,显而易见的是,可以实现本发明而无需这些特定的细节。在其他情况下,并未示出公知的结构,以防止给本发明造成不必要的模糊。
首先,将对应用本发明的处理器间通信系统的单处理器OS并行处理系统进行描述。在以下描述的并行处理系统中,通过添加要求多个处理器进行处理的机制或添加在向多个处理器提供OS服务中保护关键部分的机制,在多处理器上执行并行处理,而无需对传统的单处理器OS进行任何修改。
图1是示出了作为第一示例的并行处理系统的结构的方框图。
如图1所示,第一示例的并行处理系统包括由通过系统总线91相连的多个处理器(CPU)P0到Pn(n是不小于1的整数)组成的多处理器,将其逻辑上分为两个组,第一处理器侧10和第二处理器侧20,安装有单处理器OS 30,其在第一处理器侧10的处理器P0上进行操作,以及将用于执行并行处理的并行处理单元40P0到40Pn和用于处理OS服务的OS服务单元50P0到50Pn分别安装在第一处理器侧10的处理器P0和第二处理器侧20的处理器P1到Pn上。作为由各个处理器P0到Pn共享的共享存储器的主存储设备92和如盘设备等外部存储设备93与系统总线91相连。
可以构建上述多处理器,不仅包括相同类型的多个处理器,而且可以包括不同类型的多个处理设备,如DSP和安全引擎等。
在第一处理器侧10和第二处理器侧20之间,设置控制处理中继单元60,用于发送和接收控制信号和数据,以及将代理单元70设置在第一处理器侧10,单处理器OS 30通过其与在第二处理器侧20执行的任务进行通信。
上述第一处理器侧10的处理器不必作为单一处理器存在,也可以作为多个处理器存在。例如,可以在第一处理器侧10设置两个处理器,每一个安装不同的单处理器OS。
用作由第一处理器侧10的处理器激活的单处理器OS 30的是现有OS。例如,使用实时OS和UNIX OS,而无需进行修改。
此说明书中所使用的任务表示用于在UNIX OS上执行进程和线程的并行处理的工作单元、实时OS系统上的任务等。
在本示例的并行处理系统中,应用程序在第一处理器侧10的单处理器OS上和应用程序的工作单元之间进行操作,由第一处理器侧10的处理器P0处理不能并行化的任务(顺序任务),将应用程序内能够并行化的任务看作第二处理器侧20的新任务,并进行并行处理。
并行处理单元40P0和并行处理单元40P1到40Pn具有执行任务的创建、激活、停止、终止和删除以及与任务有关的其他控制的功能。这里,第一处理器侧10的并行处理单元40P0通过针对第二处理器侧20的各个处理器P1到Pn的并行处理单元40P1到40Pn的控制处理中继单元60来执行如任务的创建、激活、停止、终止和删除等处理。对于信号通知,由并行处理器单元40P0和并行处理单元40P1到40Pn双向处理。
OS服务单元50P0和OS服务单元50P1到50Pn具有以下功能作为用于对外部设备进行多种访问和控制的接口、和用于对任务间共享的资源进行多种访问和控制的接口。
控制处理中继单元60是用于在第一处理器侧10和第二处理器侧20之间传输和接收控制信号和数据、并用在由多个处理器彼此并行处理的多个任务之间的控制中的单元。
代理单元70与在第二处理器侧20执行的任务(部分或全部任务)相关联,并安装用于第二处理器侧20的任务与单处理器OS 30之间的信号通知(用于控制任务的多种控制信号的通知)。
以下,将参照附图,对这样构成的第一示例并行处理系统的操作进行详细描述。
这里假设,应用程序在第一处理器侧10的单处理器OS上和应用程序的工作单元之间进行操作,将要由第一处理器侧10上的处理器P0处理的单元定义为顺序任务ST,并且将作为在应用程序内可以并行化并由第二处理器侧20作为任务PT-1到PT-n并行处理的单元定义为并行化任务PT。
首先,将参考图2和3,描述由并行处理单元40P0和40P1到40Pn激活并行处理的操作。
(1)在激活第一处理器侧10的并行化任务PT作为第二处理器侧20的任务PT-1到PT-n中的任一个的情况下,命令并行处理单元P40创建任务PT-1到PT-n中的任一个,作为要在第二处理器侧20的激活的工作单元。
来自并行处理单元40P0和并行处理单元40P1到40Pn的命令包括诸如,创建(任务创建)、删除(任务删除)、激活(任务激活)、终止(任务终止)、信号(信号命令)等。在这些命令中,创建(任务创建)、删除(任务删除)、激活(任务激活)和终止(任务终止)是从第一处理器侧10发送到第二处理器侧20的命令,而信号(信号命令)同时从第一处理器侧10和第二处理器侧20双向地发送。
这些命令由图3所示的消息来实现。更具体地,通过向并行处理单元40P0传送由表示请求内容(在这种情况下的任务创建)的请求内容201、用于指定将处理该任务的第二处理器侧20上的处理器P1~Pn的处理器号202、表示要新创建的任务PT-1~PT-n的任务号、以及表示请求任务创建的并行化任务PT的原始任务号构成的消息,请求任务创建。对于任务创建之外的其他任务,将根据图3所示的消息来发送所述命令。
(2)并行处理单元40P0作为响应,激活与要创建的PT-1~PT-n相对应的代理单元70。激活所述代理单元70,以便防止任务的管理内容在第一处理器侧10和第二处理器侧20之间共享,并且完成在第一处理器侧10上的专门处理。此时,将任务PT-1~PT-n的任务号保存在代理单元70中。
(3)并行处理单元40P0还设置诸如上述任务号和请求内容的任务创建(在第二处理器侧20的处理器P1到Pn的任务创建)时所需的数据以及用于在控制处理中继单元60指定“并行处理”的通信理由信息(communication reason information)。
该处理造成了针对控制处理中继单元60,进行稍后将要描述的要传送到主存储设备92(共享存储器)上的内容的设置、以及处理器间中断的处理。
这里,通信理由信息表示传送到控制处理中继单元60的数据的接受者(接受方),并且在上述情况下,在控制处理中继单元60中设置的数据将由指定处理器P1~Pn的并行处理单元40P1~40Pn获得。
(4)在第二处理器侧20的指定处理器P1~Pn上的并行处理单元40P1~40Pn获得具有来自控制处理中继单元60的、作为通信理由信息的“并行处理”的请求内容(任务控制所需的数据)。
(5)然后,并行处理单元40P1~40Pn根据所获得的请求内容,在处理器P1~Pn上创建和激活任务PT-1~PT-n。
前述的处理使作为在第一处理器侧10的单处理器OS上运行的应用程序的工作单元的并行化任务PT的工作单元能够在第二处理器侧20上作为任务PT-1~PT-n被并行处理。
虽然已经针对并行处理单元40P1到40Pn根据所获得的请求内容在处理器P1到Pn上创建和激活任务PT-1到PT-n的情况,描述了前述的操作,但是,可以提前创建第一处理器侧10上的并行化任务PT作为第二处理器侧20上的任务PT-1到PT-n中的任一个,并且并行化处理单元40P1到40Pn可以根据所获得的请求内容,激活处理器P1到Pn上的任务PT1到PTn。
接下来,将描述由OS服务单元50P0和50P1到50Pn所进行的OS服务处理操作。
OS服务单元50P0和50P1~50Pn具有根据来自在第二处理器侧20的处理器P1到Pn上创建的任务PT-1到PT-n的命令,提供与对外部设备的各种访问及其控制、和对由其他任务共享的资源的各种访问及其控制相关的服务,所述服务是由单处理器OS 30所提供的服务。由单处理器OS 30提供的主要服务等价于由普通OS提供的系统调用和API。
将参考图4,描述响应来自第二处理器侧20的处理器P1到Pn上的任务PT-1到PT-n的文件访问(例如,针对外部存储设备93上的文件的各种处理)命令,OS服务单元50P0和50P1到50Pn的操作。
这里,文件访问包括诸如以下的处理打开(打开文件)、关闭(关闭文件)、读取(读取文件)、写入(写入文件)、查找(移动文件写入位置)、删除(删除文件)和更名(改变文件的名字)。
(1)当在第二处理器20上的任务PT-1到PT-n中产生了对文件访问处理的需要时,任务PT1到PTn请求第二处理器侧20上的OS服务单元50P1到50Pn提供文件访问的服务。例如,由该文件访问服务命令所调用的是定义为由OS服务单元50P1到50Pn对文件进行写入处理的写入功能、以及定义为文件读取处理的读取功能。
这里,OS服务单元50P1到50Pn设置在第一处理器侧10上的处理(由单处理器OS 30所进行的文件访问处理)所需的数据。这里,所需数据包括诸如以下的信息请求内容(例如,写入请求)、要访问的文件的描述符(文件描述符)、指向字符串的指针、字符串的长度和任务号。
(2)利用设置为“OS服务”的通信理由信息,通过在控制处理中继单元60处设置包含请求内容的所需数据,OS服务单元50P1~50Pn向第一处理器侧10发布文件访问命令。
之后,已经发布了文件访问的服务命令的任务PT-1~PT-n进入等待状态,并且在相应的处理器P1~Pn中,由并行处理单元40P1~40Pn将处理切换到其他任务(任务切换)。
(3)在第一处理器侧10上的OS服务单元50P0从控制处理中继单元60中获得具有作为通信理由信息的“OS服务”的上述文件访问命令。
(4)在第一处理器侧10上的OS服务单元50P0根据所获得的请求内容,从单处理器OS 30中请求文件访问。
(5)结果,单处理器OS 30根据命令对外部存储设备93进行文件访问(写入、读取等)。利用单处理器OS 30最初具有的文件访问服务来执行该文件访问处理而无需修改。
(6)在完成所请求的文件访问处理之后,单处理器OS 30将针对文件访问命令的返回值发送回OS服务单元50P0,以便返回处理。
(7)此外,OS服务单元50P0在具有作为通信理由信息的“OS服务”的控制中继单元60处,设置通信内容,即,包括已经请求文件访问的任务PT-1~PT-n的返回值和任务号的数据,从而通知第二处理器侧20上的处理器P1~Pn该文件访问的完成。
(8)由此,相应处理器P1~Pn的OS服务单元50P1~50Pn从控制处理中继单元60接收所设置的返回值和完成通知。
(9)然后,第二处理器侧20上的OS服务单元50P1~50Pn要求并行处理单元40P1~40Pn激活已经给出文件访问命令的任务PT-1~PT-n。
结果,处理切换到处于等待状态的任务PT-1~PT-n。
(10)由并行处理单元40P1~40Pn激活的任务PT-1~PT-n从OS服务单元50P1~50Pn中接收文件访问的返回值,以继续处理。
前述的处理使在第二处理器侧20上的任务PT-1~PT-n能够进行文件访问,而无需在第二处理器侧20上提供单独的文件访问的处理单元,同时,利用了单处理器OS 30的服务,而无需进行修改。此外,利用该布置,在第一处理器侧10上完成针对文件访问的互斥处理,从而可以实现并行处理,而没有如同在运行多处理器的OS上的应用程序那样由这样的互斥处理所引起的开销。
在第二处理器侧20的处理器P1~Pn上的任务PT-1~PT-n对外部存储设备93的只读数据进行文件访问的情况下,可以从每一个处理器P1~Pn对外部存储设备93进行直接访问,而无需如前面所描述的由OS服务单元50P1~50Pn进行这样的处理。
这里,对于来自第一处理器侧的处理器P0上的顺序任务ST的文件访问命令,由单处理器OS 30直接进行处理,而无需使用OS服务单元。下面,将参考图5来描述该处理。
(1)在处理器P0上的顺序任务ST请求单处理器OS 30进行文件访问。
(2)结果,单处理器OS 30根据命令,对外部存储设备93等进行文件访问(写入、读取等)。利用单处理器OS 30最初所具有的没有修改的文件访问服务来执行文件访问处理。
(3)当完成文件访问处理时,单处理器OS 30将针对文件访问命令的返回值发送回顺序任务ST,以返回处理。
由于响应来自顺序任务ST的OS服务命令,不需要互斥控制等,将不会产生任何额外的开销。
将参考图6和7来描述控制处理中继单元60所进行的处理操作。
首先,图6中示出了控制处理中继单元60的结构。如图所示,控制处理中继单元60包括与各个处理器P0到Pn相对应的中断控制设备61P0到61Pn、以及与各个处理器P0到Pn相对应的通信区域62P0到62Pn。这里,在主存储设备92中确保了通信区域62P0到62Pn。
中断设备61P0到61Pn的每一个还包括中断指示单元61a,用于指示其他处理器中断;中断状态保存单元61b,用于保存响应中断指示而进行的中断的信息;以及中断取消单元61c,用于清除中断。
通信区域62P0到62Pn的每一个包括通信理由保存区域62a,用于保存来自作为通信源的处理器的通信理由信息;通信数据保存区域62b,用于保存要通信的通信数据;以及互斥控制区域62c,用于锁定通信区域以确保通信。
在这个时刻,在通信数据保存区域62b中,将存储指向主存储设备92的指针,其中存储了要通信的通信数据(包括请求内容的所需数据)。
将参考图7,针对作为示例的从第一处理器侧10上的并行处理单元40P0到第二处理器侧20上的处理器P1的通信的处理,对操作进行描述。
(1)并行处理单元40P0锁定针对处理器P1的通信区域62P1的互斥控制区域62c。更具体地,通过使在互斥控制区域62c中存储的锁定变量变为锁定状态,防止当前针对处理器P1的通信区域62P1由其他处理器使用。
当该区域已经由其他处理器锁定时,等待该锁定的释放。
(2)当得到了通信区域62P1的锁定时,并行处理单元40P0分别在通信区域62P1的通信理由保存区域62a和通信数据保存区域62b中存储通信理由信息和通信数据(包括请求内容的所需数据)。
在如上所述的创建任务的通信处理的情况下,要存储的通信理由信息是表示“并行处理”的信息(例如,对应于并行处理预定的诸如数值的数据)。
(3)并行处理单元40P0指示其自身的中断控制设备61P0的中断指示单元61a中断处理器P1。
(4)中断控制设备61P0的中断指示单元61a在对应于处理器P1的中断控制设备61P1的中断状态保存单元61b处,设置表示中断的信息。这使处理器P1进入中断状态。
(5)处理器P1的并行处理单元40P1根据在控制处理中继单元60中的中断控制设备61P1的中断状态保存单元61b中的状态,确定中断被设置。
(6)处理器P1的并行处理单元40P1通过清除在控制处理中继单元60中的其自身的中断状态保存单元61b的中断信息,从终端状态中释放它自己。
(7)处理器P1的并行处理单元40P1分别从控制处理中继单元60的通信理由保存区域62a和通信数据保存区域62b中获得通信理由信息和通信数据(包括请求内容的所需数据)。
(8)当允许其接收下一个通信时,处理器P1的并行处理单元40P1释放其自身通信区域62P1的互斥控制区域62c的锁定。更具体地,通过使互斥控制区域62c中的锁定变量变为未锁定状态,释放处理器P1的通信区域62P1,以使其可以由其他处理器使用。
因此,利用控制处理中继单元60,实现了第一处理器侧10和第二处理器侧20之间的控制信号和数据的传送和接收。
将参考图8来描述由代理单元70所进行的信号通知处理的操作。
代理单元70具有使单处理器OS 30能够利用信号(控制信号)与第二处理器侧20上产生的任务PT-1~PT-n进行通信的功能。将相应任务的PT-1~PT-n的任务号保存在代理单元70中。
代理单元70可以与多个任务PT-1~PT-n中的每一个一对一地关联,或者多个任务PT-1~PT-n可以与一个代理单元70关联。
(1)第一处理器侧10上的顺序任务ST从单处理器OS 30请求信号通知服务。由信号通知所传达的信号是由单处理器OS 30最初具有的服务功能控制在第二处理器侧20的各个处理器P1到Pn上激活的任务PT-1到PT-n的控制信号。
(2)单处理器OS 30将信号通知给相应的代理单元70。
(3)通过控制处理中继单元60,代理单元70将所通知的信号通知给其相应的处理器P1~Pn,其中,任务PT-1存在于第二处理器侧20。此时,设置“并行处理”作为通信理由信息。
(4)由于去往通信处理中继单元60的通信理由是“并行处理”,在第二处理器侧20上的相应处理器的并行处理单元40P1~40Pn从控制处理中继单元60获得信号通知命令。
(5)已经获得信号通知命令的并行处理单元40P1~40Pn向相应的任务PT-1~PT-n通知所述信号(控制信号)。
因此,由于代理单元70在第一处理器侧10利用任务号与第二处理器侧20的处理器P0~Pn上的任务PT-1~PT-n关联,可以针对任务PT-1~PT-n来执行由单处理器OS 30所进行的信号通知服务。
最后,将参考图9和10来描述在第二处理器侧20的任务间协同操作。
图9示出了用于获得任务间的协同的并行处理单元40P1到40Pn的结构。如图所示,并行处理单元40P1到40Pn设置有互斥(mutualexclusion)单元41P1到41Pn。
主存储设备92还包括互斥控制区域43和任务管理内容保存区域44,以便获得任务协作。
(1)在处理器P1上的任务PT-1从其自身的并行处理单元40P1上请求所需的并行处理。
(2)处理器P1的并行处理单元40P1从互斥单元41P1中请求获得锁定,以便确保用于并行处理的资源。
(3)互斥单元41P1利用主存储设备92的互斥控制区域43来获得锁定。
(4)互斥单元41P1通知并行处理单元40P1已经获得了锁定。
(5)并行处理单元40P1在任务管理内容保存区域44中保存已经请求处理器P1上的并行处理的任务PT-1的管理内容(请求内容、任务号和其他所需数据)。
(6)并行处理单元40P1中断正在执行低优先级任务的其他处理器P2~Pn。这里假设处理器Pn被中断。
(7)并行处理单元40P1要求互斥单元41P1释放如上所述的所确保的锁定。
(8)互斥单元41P1对主存储设备92的互斥控制区域43进行解锁。
(9)互斥单元41P1向并行处理单元40P1通知解锁的完成。
(10)并行处理单元40P1将处理返回到任务PT-1。
(11)处理器Pn的并行处理单元40Pn从互斥单元41Pn中请求获得锁定,以确保用于并行处理的资源。
(12)互斥单元41Pn利用主存储设备92的互斥控制区域43来获得锁定。
(13)互斥单元41Pn向并行处理单元40Pn通知锁定获取的完成。
(14)并行处理单元40Pn获得在任务管理内容保存区域44中所存储的任务管理内容。
(15)并行处理单元40Pn根据任务管理内容来创建和激活新的任务。
(16)并行处理单元40Pn从互斥单元41Pn中请求如上所述的所确保的锁定的释放。
(17)互斥单元41Pn对主存储设备92的互斥控制区域43进行解锁。
(18)互斥单元41Pn向并行处理单元40Pn通知解锁的完成。
如上所述的这样的任务协同操作允许在特定处理器P1~Pn上激活的任务PT-1~PT-n使其自身的工作单元由其他处理器来并行处理。
作为应用于这样构造的并行处理系统的示例,将对在多处理器的移动终端上运行应用程序的情况进行描述。
这里,将参考图11来进行描述,假设以下情况应用程序具有在移动终端上同时再现图像(运动图像)和声音的功能,并且将声音输出处理定义为顺序任务A,而图像输出处理定义为并行化任务B,应用程序运行于第一处理器侧10的处理器P0上。
由上述并行处理单元将并行化任务B创建和激活为在第二处理器侧20的处理器P1到Pn的任一个上的任务C。
创建的任务C通过OS服务单元的文件访问处理,在屏幕上输出图像。
关于由顺序任务A输出的声音,由单处理器OS 30的服务来输出声音。
为了周期性地同步声音和图像,通过经由代理单元70所进行的信号通知操作在顺序任务A和任务C之间提供信号通知来达到同步。
此外,当执行在任务C中的编辑图像处理时,由任务协同处理将编辑处理创建和激活为其他处理器上的任务D。
当完成了由任务C所进行的图像输出处理时,任务C通过文件访问操作,向单处理器OS通知该终止。
在本并行处理系统中,作为模块设置的并行处理单元40P0到40Pn、OS服务单元50P0到50Pn、控制处理中继单元60和代理单元70使单处理器OS 30和应用程序能够在没有多处理器系统上的开销的情况下操作,而无需修改单处理器OS 30和在处理器P0上运行的应用程序,同时收到由多处理器进行并行处理的好处。
接下来,将参考图12和随后的附图来描述应用了本发明的第二示例的并行处理系统。图12是示出了根据第二示例的并行处理系统的结构的方框图,其中,与图1相同的组件由相同的参考符号表示。图12所示的第二示例中示出了其中第一示例中的并行处理单元40P0到40Pn分别由并行处理通信单元400P0到400Pn和控制代理单元500P0到500Pn形成的情况。
如图12所示,本示例的并行处理系统与第一示例的相同之处在于将由通过系统总线91连接的多个处理器(CPU)P0到Pn(n是不小于1的整数)形成的多处理器逻辑上划分为两个组,即,第一处理器侧100和第二处理器侧200。
在第二示例中,实现了在第一处理器侧100的处理器P0上和在第二处理器侧200的各个处理器(CPU)P0到Pn上运行的单处理器OS 300P0到300Pn。
此外,用于并行处理的并行处理通信单元400P0到400Pn和控制代理单元500P0到500Pn分别安装在第一处理器侧100的处理器P0上和第二处理器侧200的处理器P1到Pn上。作为在各个处理器P0到Pn间共享的主存储设备92和诸如盘设备的外部存储设备93等与系统总线91相连。
同时,惟一地设置控制处理中继单元600,用于传送和接收第一处理器侧100和第二处理器侧200之间的控制信号和数据。
由于关于通过其在第一处理器侧100上的单处理器OS 300P0与第二处理器侧200上执行的进程进行通信的第一示例所示的代理单元70,该单元在本示例执行与第一示例中完全相同的功能,这里为了简便,将不再对其进行任何描述。
虽然在第一示例中,已经描述了响应来自第二处理器侧20的处理器P1到Pn上的任务的文件访问命令来进行任务切换,然而,同时,在本示例中,也能够进行来自第二处理器侧200的文件访问,并且由第二处理器侧200上的单处理器OS 300P1到300Pn来进行第二处理器侧200上的进程PP-1到PPn的切换。
对于安装在各个处理器P0到Pn上的单处理器OS 300P0到300Pn,这些单处理器OS与第一示例的不同在于不仅可以使用诸如实时OS之类实现了存储器保护功能的无虚拟存储器机制的OS,而且可以使用作为现有OS的如Linux和Windows之类具有虚拟存储机制的OS,并且可以在所有和部分处理器P0到Pn上实现存储器保护机制。
此外,单处理器OS 300P0到300Pn不必是相同种类的OS,而可以是彼此不同种类的OS。
在本示例中,作为进行并行处理的工作单元的任务是在处理器之间受到存储器保护的,并且在这种意义上,称之为与第一示例中的任务区别的进程。
在根据本示例的并行处理系统中,在运行于第一处理器侧100的单处理器OS 300P0上的应用程序的工作单元中,不能够并行化的那些进程(顺序进程SP)由第一处理器侧100上的处理器P0来处理,而将能够在应用程序内并行化的那些任务创建为第二处理器侧200上的新的进程PP-1到PP-n,并且进行并行处理。
并行处理通信单元400P0和并行处理通信单元400P1到400Pn具有传送和接收与进程创建、激活、停止、终止和删除有关的信息、与进程和单处理器OS 300P0到300Pn之间的处理有关的其他控制的功能。
这里,将与任务的创建、激活、停止、终止、删除等有关的控制信息和数据通过控制处理中继单元600,在第一处理器侧100和第二处理器侧200之间传送和接收。
此外,控制代理单元500P0和控制代理单元500P1到500Pn具有从单处理器OS 300P0~300Pn中获得对进程的处理命令,并且激活该进程。
控制处理中继单元600是用于传送和接收第一处理器侧10和第二处理器侧20之间的控制信号和数据的单元,并且用于控制由多个处理器并行处理的多个进程。
下面,将参考附图详细描述根据第二示例构造的并行处理系统的操作。
这里假设应用程序运行于第一处理器侧100的单处理器OS 300P0上,并且在应用程序的工作单元中,将要由第一处理器侧100上的处理器P0处理的工作单元定义为顺序进程SP,而将作为可以在应用程序内并行化的进程和由第二处理器侧200作为任务PP-1到PP-n并行处理的工作单元定义为并行化进程PP。
在第二示例的并行处理系统中,在激活特定进程(任务)之后,其中在调用侧作为进程(任务)的并行化进程PP等待已激活进程PP-1~PP-n的终止的并行处理的同步激活、以及其中在调用侧作为进程(任务)的并行化进程PP不必等待已激活进程PP-1~PP-n的终止的并行处理的异步激活都是可行的。
首先,将参考图13来描述进程的并行处理的同步激活的操作。
这里假设在第二处理器侧200的处理器Pk(1≤k≤n)中,事先将第一处理器侧100的并行化进程PP创建为作为要在第二处理器侧200激活的工作单元的进程PP-k。
(1)在第二处理器侧200的处理器Pk(1≤k≤n)上的进程PP-k在并行处理通信单元400Pk中登记与属于其自身的进程的处理有关的信息。结果,进程PP-k进入待机状态。
(2)并行处理通信单元400Pk通过单处理器OS 300Pk,请求访问在主存储设备92(共享存储器)上的所需数据。
(3)结果,将与属于进程PP-k的处理有关的信息存储在主存储设备92上(共享存储器)。
(4)处理器P0上的进程PP从并行处理通信单元400P0中请求同步处理。因此,进程PP进入待机状态。
(5)已经接收到请求的并行处理通信单元400P0通过单处理器OS300P0,请求访问主存储设备92(共享存储器)上的数据。
(6)由单处理器OS 300P0对主存储器设备92(共享存储器)进行访问。
(7)并行处理通信单元400P0从主存储设备92(共享存储器)中获得与属于进程PP-k的处理有关的信息。因此,获得了处理器号和用于执行处理PP-k的进程号。
(8)并行处理通信单元400P0根据通过单处理器OS 300P0从主存储设备92(共享存储器)中获得的信息来进行通信请求。
(9)单处理器OS 300P0设置在控制处理中继单元600的通信所需的信息。
(10)结果,将处理命令从控制处理中继单元600发送到处理器Pk的单处理器OS 300Pk。
(11)处理器Pk的控制代理单元500Pk获得通过单处理器OS 300Pk发送的处理命令。
(12)然后,控制代理单元500Pk根据所获得的处理命令来激活进程PP-k。
(13)结果,处于待机状态的进程PP-k执行所述处理。
(14)在完成处理之后,进程PP-k向并行处理通信单元400Pk通知取得该效果的信息。
(15)已经接收到通知的并行处理通信单元400Pk根据通过单处理器OS 300Pk通知的信息来进行通信请求。
(16)单处理器OS 300Pk在控制处理中继单元600处,设置通信所需的信息。
(17)结果,将处理命令从控制处理中继单元600发送到处理器P0中的单处理器OS 300P0。
(18)处理器P0的控制代理单元500P0获得通过单处理器OS 300P0发送的处理命令。
(19)然后,控制代理单元500P0根据所获得的处理命令来激活进程PP。
因此,在第一处理器侧100的处理器P0上的进程PP和第二处理器侧200的进程PP-k之间,实现了同步处理。
接下来,将参考图14来描述对进程的并行处理的异步激活的操作。
这里还假设在第二处理器侧200上的处理器Pk(1≤k≤n)中,事先将第一处理器侧100上的并行化进程PP创建为作为要在第二处理器侧200上激活的工作单元的进程PP-k。
(1)正在第二处理器侧200的处理器Pk((1≤k≤n)上执行处理的进程PP-k在并行处理通信单元400Pk中,登记与属于其自身的进程的处理有关的信息。结果,进程PP-k输入待机状态。
(2)并行处理通信单元400Pk通过单处理器OS 300Pk,请求访问主存储设备92(共享存储器)上所需的数据。
(3)结果,将与属于进程PP-k的处理有关的信息存储在主存储设备92(共享存储器)中。
(4)在处理器P0上的进程PP从并行处理通信单元400P0中请求异步处理。在这种情况下,之后,进程PP继续处理,而不进入待机状态。
(5)已经接收到该请求的并行处理通信单元400P0通过单处理器OS 300P0,请求在主存储设备92(共享存储器)上的数据。
(6)由单处理器OS 300P0对主存储设备92(共享存储器)进行访问。
(7)并行处理通信单元400P0从主存储设备92(共享存储器)中获得与属于进程PP-k的处理有关的信息。因此,获得了处理器号和用于执行进程PP-k的进程号。
(8)并行处理通信单元400P0根据通过单处理器OS 300P0从主存储设备92(共享存储器)中获得的信息来进行通信请求。
(9)单处理器OS 300P0在控制处理中继单元600处,设置通信所需的信息。
(10)因此,将处理命令从控制处理中继单元600发送到处理器Pk的单处理器OS 300Pk。
(11)处理器Pk的控制代理单元500Pk获得通过单处理器OS 300Pk发送的处理命令。
(12)然后,控制代理单元500Pk根据所获得的处理命令来激活进程PP-k。
(13)因此,处于待机状态的进程PP-k执行所述处理。
按照上述方式,在第一处理器侧100的处理器P0上的进程PP和第二处理器侧200的进程PP-k之间,实现了异步处理。
下面,将参考图15和16来描述在根据第二示例的并行处理系统中,由控制处理中继单元600所进行的处理操作。
首先,在图15中示出了控制处理中继单元600的结构。如图所示,对控制处理中继单元600进行构造,以使其包括与各个处理器P0到Pn相对应的中断控制设备601P0到601Pn、以及与各个处理器P0到Pn相对应的通信区域602P0到602Pn。这里,在主存储设备92中确保了通信区域602P0到602Pn。
中断控制设备601P0到601Pn的每一个具有与图6所示的根据第一示例的控制处理中继单元60中的结构相同的结构,并且由中断指示单元601a、中断状态保存单元601b和中断取消单元601c组成。
同时,通信区域602P0到602Pn的每一个基本上具有与图6所示的第一示例中的结构相同的结构,并且由作为图6所示的通信理由保存区域62a和通信数据保存区域62b的组合的通信队列602a和互斥控制区域602c形成。
作为示例,将参考图16来描述从第一处理器侧100的并行处理通信单元400P0到第二处理器侧200的处理器Pn的通信处理操作。
(1)并行处理通信单元400P0锁定针对处理器Pn的通信区域602Pn的互斥控制区域602b。更具体地,使在互斥控制区域602b中的锁定变量变为锁定状态以防止当前针对处理器Pn的通信区域602Pn被其他处理器使用。
(2)并行处理通信单元400P0将通信理由信息和通信数据(包括请求内容的所需数据)存储在通信区域602Pn的通信队列602a。
作为要存储的通信理由信息,在如上所述的针对进程创建/激活的通信处理的情况下,存储表示“进程激活”的信息(例如,诸如与并行处理相对应的预定数值的数据)。
(3)在(1)的时刻,如果通信区域602Pn的通信队列602a是空的,并行处理通信单元400P0指示其自身的中断控制设备601P0的中断指示单元601a中断处理器Pn。
(4)处理器P0的并行处理通信单元400P0使针对处理器Pn的通信区域602Pn的互斥控制区域602b进入未锁定状态。如果在(1)的时刻,通信区域602Pn的通信队列602a不是空的,则由于不需要中断,处理在该时刻终止。
(5)中断控制设备601P0的中断指示单元601a在与处理器Pn相对应的中断控制设备601Pn的中断状态保持单元601b处设置表示中断的信息。结果,处理器Pn进入中断状态。
(6)处理器Pn的单处理器OS 300Pn根据针对处理器Pn的中断控制设备601Pn的中断状态保持单元601b的条件来接受中断。
(7)处理器Pn中的单处理器OS 300Pn通过利用中断控制设备601Pn中的中断取消单元601c清除其自身中断状态保持单元601b中的中断信息,释放其中断状态。
(8)处理器Pn中的单处理器OS 300Pn激活其自身控制代理单元500Pn。
(9)处理器Pn的控制代理单元500Pn在其自身通信区域602Pn的互斥控制区域602b处设置锁定。
(10)处理器Pn的控制代理单元500Pn还从其自身通信区域602Pn的通信队列602a中删除通信理由信息和通信数据。
(11)处理器Pn的控制代理单元500Pn对处理器Pn的通信区域602Pn的互斥控制区域602b进行解锁。这使处理器Pn的通信区域602Pn不能够由其他处理器使用。
因此,通过使用控制处理中继单元600,实现了第一处理器100侧和第二处理器200侧之间的控制信号和数据的传送和接收。
接下来,下面将参考图17来描述应用了本发明的第三示例的并行处理系统。图17是示出了根据第三示例的并行处理系统的结构的方框图,在图中,与图13所示相同的组件由相同的参考符号表示。
在第二示例的上述同步处理中,需要重复检查在进程之间,一个进程是否使其在主存储设备92上的数据被其他进程更新,造成了涉及与重复同样多的额外处理,同时,本示例能够实现进程之间的高性能同步和数据传送和接收,其中不需要任何这样的额外处理。
如图17所示,与第二示例相似,根据第三示例的并行处理系统包括通过系统总线91连接的多个处理器(CPU)P0到Pn(n是不小于1的整数)构成的多处理器,将所述多个处理器逻辑上划分为第一处理器侧100和第二处理器侧200,其中,安装了运行在第一处理器侧100的处理器P0上和第二处理器侧200的处理器(CPU)P1到Pn上的单处理器OS 300P0到300Pn。
第三示例的特征在于除了用于在第一处理器侧100上的处理器P0和第二处理器侧200上的处理器P1到Pn上进行并行处理的并行处理通信单元400P0~400Pn,以及控制代理单元500P0和500Pn之外,还包括用于实现在第一处理器侧100的处理器P0和第二处理器侧200的处理器P1到Pn上执行各个进程之间的通信的进程间通信单元1000P0到1000Pn。
换句话说,本示例使传统上安装在多处理器的OS上的进程间通信功能能够在运行单处理器OS和多处理器的应用程序的、单处理器OS所进行的并行处理系统上实现,从而能够在用户级提供进程间通信功能。
此外,由于在本示例中,第一处理器侧100上的单处理器OS 300P0与要在如第一示例所示的第二处理器侧200上执行的进程进行通信所使用的代理单元70完全执行与第一示例相同的功能,为了简便,不再对其进行描述。
由于除了上述进程间通信单元1000P0到1000Pn之外的其他组件的结构和操作与第二示例的上述结构和操作完全相同,因此将只对进程间通信单元1000P0到1000Pn进行描述。
进程间通信单元1000P0到1000Pn利用如信号量(semaphore)或消息队列之类的系统,实现在处理器P1到Pn上执行的进程之间的通信。
这里,将针对进程间单元1000P0到1000Pn利用信号量系统进行进程间通信的情况来进行描述。
如图18所示,将对以下情况进行描述当进程PP-m和进程PP-n分别在第二处理器侧200的处理器Pm和处理器Pn上执行时,进程PP-m和进程PP-n通过进程间通信单元1000Pm和1000Pm利用信号量系统进行通信。
信号量(semaphore)是一种用于多个进程在同时执行多个进程的多任务OS上相互通信和同步的系统,并且是一种共享标记(计数器),相互同步的进程注意着该计数器,以根据计数器的改变进行处理,从而实现通信(同步)。
首先,参考图18,将描述增加或减小主存储设备92的信号量信息区域(共享标记)的处理器Pm上的进程PP-m的操作。这里假设信号量增加(semaphore-up)是递增信号量信息区域的计数器值,而信号量减小(semaphore-down)是递减信号量信息的计数器值。当不允许信号量增加时,当前的进程休眠以进入等待状态,并且由信号量减小来唤醒。
(1)当处理器Pm上的进程PP-m增加或减小信号量(信号量计数器)时,该进程PP-m请求作用于进程间通信单元1000Pm。
(2)已经接收到请求的进程间通信单元1000Pm访问信号量信息区域#N(确保了与由系统预定的数量同样多的信号量信息区域),作为可由主存储设备92中所确保的信号量数可区分的共享标记,以确定是否可以增加或减小所述信号量。
接下来,参考图19,将描述处理器Pm上的进程PP-m增加信号量(信号量标记)的情况。
(1)处理器Pm上的进程PP-m请求进程间通信单元1000Pm减小信号量(信号量标记)。
(2)已经接收到请求的进程间通信单元1000Pm访问在主存储设备92中所确保的信号量信息区域#N。这里,在信号量信息区域#N处设置了初始值“0”作为信号量的计数器值,并且事先固定,即使尝试也不能减小。因此,确定不能够减小该信号量。
(3)进程间通信单元1000Pm利用系统调用,请求单处理器OS300Pm使进程PP-m休眠。
(4)单处理器OS 300Pm利用系统调用,使进程PP-m休眠,以从运行队列(run queue)中取出该进程。
换句话说,在上述情况下,不允许减小信号量,进程PP-m休眠。
此外,参考图20,将描述当在如上所述进程PP-m休眠的情况下,相同处理器Pm上的进程PP-m1增加信号量时所执行的操作。
(1)进程PP-m1请求进程间通信单元1000Pm增加信号量。
(2)进程间通信单元1000Pm访问在主存储设备92中确保的信号量信息区域#N,以确定存在等待信号量的进程PP-m。
(3)进程间通信单元1000Pm还向控制处理中继单元600传送消息(控制消息),以请求唤醒进程PP-m。
(4)控制代理单元500Pm从控制处理中继单元600接收消息。根据参考图15和16所述的操作,由控制处理中继单元600进行消息中继。
(5)控制代理单元500Pm从消息中确定进行了唤醒等待信号量的进程的请求,以便利用系统调用,向单处理器OS 300Pm提供用于唤醒处于等待状态的进程PP-m的请求。
(6)单处理器OS 300Pm利用系统调用来唤醒所请求的进程PP-m,以将其连接到运行队列。在这种情况下,唤醒的进程PP-m再次尝试减小信号量。
利用单处理器OS 300Pm的通信功能而不使用上述处理(3)和(4)所述的通过控制处理器中继单元600进行的控制消息中继来从进程间通信单元1000Pm到控制代理单元500Pm直接请求进程PP-m的唤醒造成了处理(3)和(4)的取消,从而能够高速处理。
参考图21,将描述在当处理器Pm的进程PP-m如上所述休眠时其他处理器Pn上的进程PP-n增加信号量的情况下所进行的操作。
(1)处理器Pn上的进程PP-n从其自身的处理器Pn的进程间通信单元1000Pn请求信号量增加。
(2)进程间通信单元1000Pn访问在主存储设备92中所确保的信号量信息区域#N,以确定存在等待信号量的进程PP-m。
(3)进程间通信单元1000Pn还向控制处理中继单元600传送消息(控制消息),以请求唤醒进程PP-m。
(4)随后,处理器Pm的控制代理单元500Pm从控制处理中继单元600接收消息。根据参考图15和16所述的操作来由控制处理中继单元600进行消息中继。
(5)控制代理单元500Pm从该消息中确定进行了唤醒等待信号量的进程的请求,以利用系统调用,向单处理器OS 300Pm提供用于唤醒处于等待状态的进程PP-m的请求。
(6)处理器的OS 300Pm利用系统调用唤醒所请求的进程PP-m,以将其连接到运行队列。在这种情况下,所唤醒的进程PP-m再次尝试减小信号量。
接下来,如图22所示,将描述以下情况当进程PP-m和进程PP-n在第二处理器侧200的处理器Pm和处理器Pn上执行时,进程PP-m和进程PP-n通过进程间通信单元1000Pm和1000Pn利用消息队列系统相互通信。
作为多个进程之间的通信方法的消息队列系统,是一个创建以其名称字面所表示的“队列”并将消息(在进程间传送和接收的处理数据)作为信息存储在队列中的系统。在消息队列系统中,允许接收器侧按照任意顺序接收消息。当进程中的任一个接收到消息时,该消息从队列中消失。
参考图22,将描述处理器Pm上的进程PP-m利用消息队列系统接收消息的情况。在这种情况下,要获得的消息存在于可由主存储设备92中确保的队列信号区分的队列消息区域#N(确保了与预定数量同样多的队列信息区域)。
(1)为了接收消息,在处理器Pm上的进程PP-m从进程间通信单元1000Pm中请求接收。
(2)已经接收到请求的进程间通信单元1000Pm访问在主存储设备92中所确保的队列信息区域#N以接收消息。
(3)然后,进程间通信单元1000Pm将接收到的消息拷贝到请求源进程PP-m上。此时,将当前的消息从主存储设备92中所确保的队列信息区域#N中删除。
接下来,参考图23,将描述当在处理器Pm上的进程PP-m通过消息队列系统接收消息时所执行的第二操作。在这种情况下,要获取的消息未能存在于主存储设备92所确保的队列信息区域#N中。
(1)为了接收消息,在处理器Pm上的进程PP-m请求作用于进程间通信单元1000Pm。
(2)已经接收到该请求的进程间通信单元1000Pm访问在主存储设备92中所确保的队列信息区域#N。在这种情况下,确定要获得的消息未能存在于所确保的队列信息区域#N,而不能接收消息。
(3)进程间通信单元1000Pm利用系统调用,请求单处理器OS300Pm使进程PP-m休眠。
(4)单处理器OS 300Pm利用系统调用来使进程PP-m休眠以从运行队列中断开所述进程。
换句话说,不允许进程PP-m接收消息,从而在上述情况下,该进程休眠。
参考图24,将描述当处理器Pm上的进程PP-m通过消息队列系统传送消息时所执行的操作。在这种情况下,不存在正在等待要传送的消息的任何进程,并且只进行向主存储设备92中所确保的队列信息区域#N的消息传送。
(1)为了传送消息,在处理器Pm的进程PP-m请求作用于进程间通信单元1000Pm。
(2)已经接收到该请求的进程间通信单元1000Pm访问在主存储设备92中所确保的队列信息区域#n,以存储来自进程PP-m的消息。
还将描述如图25所示,当处理器Pm上的进程通过消息队列系统传送消息时所执行的操作。在这种情况下,存在等待要传送的消息的进程。换句话说,这是如图23的示例所示,当进程PP-m不能够接收消息并休眠时从进程PP-m1发送消息的情况。
(1)进程PP-m1从进程间通信单元1000Pm请求消息传送。
(2)进程间通信单元1000Pm访问在主存储设备92中所确保的队列信息区域#N,以存储来自进程PP-m1的消息。这里,确定存在等待消息的进程PP-m。
(3)进程间通信单元1000Pm还向控制处理中继单元600传送控制消息,以请求唤醒进程PP-m。
(4)控制代理单元500Pm从控制处理中继单元600接收控制消息。
(5)控制代理单元500Pm从控制消息中确定命令用于唤醒等待消息的进程,并且利用系统调用,请求单处理器OS 300Pm唤醒处于等待状态的上述进程PP-m。
(6)单处理器OS 300Pm利用系统调用唤醒所请求的进程PP-m,以将进程连接到运行队列。
在这种情况下,所唤醒的进程PP-m再次尝试接收消息。结果,来自进程PP-m1的消息由进程PP-m接收。
利用单处理器OS 300Pm的通信功能而不利用如上述处理(3)和(4)所示的通过控制处理中继单元600所进行的控制消息中继来从进程间通信单元1000Pm向控制代理单元500Pm直接请求进程PP-m的唤醒造成了处理(3)和(4)的消除,从而能够实现高速处理。
参考图26,将描述在当处理器Pm上的进程PP-m休眠以等待消息时,在其他处理器Pn上的进程PP-n如图23所示传送消息的情况下所进行的操作。
(1)处理器Pn上的进程PP-n请求其自身处理器Pn的进程间通信单元1000Pn传送消息。
(2)进程间通信单元1000Pn访问在主存储设备92中所确保的队列信息区域#N,以存储来自进程PP-n的消息。这里确定了存在等待消息的进程PP-m。
(3)进程间通信单元1000Pn控制处理中继单元600传送控制消息,以请求唤醒进程PP-m。
(4)随后,处理器Pm的控制代理单元500Pm从控制处理中继单元600接收控制消息。
(5)控制代理单元500Pm从控制消息中确定命令用于唤醒等待消息的进程,并且利用系统调用,向单处理器OS 300Pm提供用于唤醒处于等待状态的上述进程PP-m的请求。
(6)单处理器OS 300Pm利用系统调用唤醒所请求的进程PP-m,以将进程连接到运行队列。
在这种情况下,所唤醒的进程PP-m再次尝试接收消息。结果,来自进程PP-n的消息由进程PP-m接收,以执行在不同处理器间的进程间通信。
根据本示例,按照前述的方式,利用信号量系统或消息队列系统,通过进程间通信单元1000P0到Pn在相同处理器内或不同处理器间的进程(同步或消息传送和接收)之间的通信,能够实现诸如进程切换和数据传送和接收之类的进程控制。
虽然在相同处理器中的进程之间有限制地进行利用单处理器OS的进程间通信,并且不同处理器间的进程间通信应该利用具有较重处理负载等的网络来进行,但是,由其处理速度快于网络通信速度的控制处理中继单元600和进程间通信单元1000P0到Pn使用信号量系统和消息队列系统实现了在安装有单处理器OS的多处理器系统中也具有高处理速度的进程间通信。
对于相同处理器内的进程间通信,通过单处理器OS,可以获得几乎等价于从进程的休眠到唤醒所需要的处理性能的性能。
另外的优点在于与多处理器的OS不同,即使安装有随每一个处理器而改变的单处理器OS,处理器间的进程间通信也是可行的。
接下来,将参考图27来描述通过进程间通信单元1000P0到1000P利用信号量系统和消息队列系统的上述进程间通信的具体示例。
在图27中,进程PP-0、进程PP-j和进程PP-k分别在处理器P0、处理器Pj和处理器Pk上执行。这里,进程PP-0作为浏览器进行操作,进程PP-j作为Java小应用程序进行操作,以及进程PP-k作为MPEG4应用程序进行操作,并且如图28所示,在嵌入在利用进程PP-0的浏览器1100中的窗口内,相互同步地显示利用进程PP-j的Java小应用程序内容1200和利用进程PP-k的MPEG4图像内容1300。
在该示例中,在第一处理器侧100的单处理器OS 300P0上运行的应用程序的工作单元中,进程PP-0运行在处理器P0上,进程PP-j和进程PP-k,即能够在应用程序内并行化的进程,在第二处理器侧200上的处理器Pj和处理器Pk中并行处理。
在图27中,当激活了Java小应用程序(进程PP-j)和MPEG4应用程序(进程PP-k)时,两个应用程序都等待从浏览器(进程PP-0)中接收Java小应用程序数据和MPEG4图像数据(步骤S101和S201)。
这里,从处理器P0的进程PP-0中,通过进程间通信单元1000P0利用消息传送,将Java小应用程序数据和MPEG4图像数据作为消息传送,并且由Java小应用程序(进程PP-j)和MPEG4应用程序(进程PP-k)接收。
结果,启动了由Java小应用程序(进程PP-j)所进行的操作(步骤S102),以开始由MPEG4应用程序(进程PP-k)所进行的解码处理(步骤S202)。
在该示例中,由于事先清楚由Java小应用程序(进程PP-j)所进行的操作结束得比由MPEG4应用程序(进程PP-k)所进行的解码处理要早,因此,将信号量计数器的初始值设置为“0”,从而在完成操作之后,Java小应用程序(进程PP-j)等待由MPEG4应用程序(进程PP-k)所进行的处理的完成,从而防止已经较早完成操作的Java小应用程序(进程PP-j)减小信号量。此外,定义MPEG4应用程序(进程PP-k),以便在完成处理之后增加信号量。
虽然Java小应用程序(进程PP-j)尝试增加信号量(步骤S103),但是由于计数器的初始值为“0”,因此其不能够减小信号量,从而使其进入休眠以等待信号量。
当MPEG4应用程序(进程PP-k)结束处理(步骤S203)之后,该应用程序请求信号量增加(步骤S204)。结果,等待信号量的Java小应用程序(进程PP-j)被唤醒并允许其减小信号量。
对每一个帧重复前述操作导致了将利用进程PP-j的Java小应用程序的内容1200和利用进程PP-k的MPEG4图像内容1300相互同步地显示在嵌入于利用进程PP-0的浏览器1100的窗口内。
接下来,将参考图29来描述根据本发明第四示例的并行处理系统。图29是示出了根据第四示例的并行处理系统结构的方框图,其中,与图13所示的组件相同的组件由相同的参考符号表示。
如图29所示,根据第四示例的并行处理系统包括通过系统总线91连接的多个处理器(CPU)P1~Pn(n是不小于2的整数)构成的多处理器,所述多个处理器安装有运行于各个处理器P1到Pn上的单处理器OS300P1到300Pn。
更具体地,本示例与第一到第三示例的不同在于不将多处理器逻辑上划分为第一处理器侧和第二处理器侧两组。
与上述第三示例相似,第四示例的特征在于除了用于进行处理器P1到Pn的并行处理的并行处理通信单元400P1到400Pn,以及控制代理单元500P1到500Pn之外,还包括用于实现在处理器P1到Pn上执行的各个进程之间的通信的进程间通信单元1000P1到1000Pn。
另一方面,可以进行每一个处理器P1到Pn上的进程控制,而没有第一示例中所设置的OS服务单元50P1到50Pn以及在第一到第三示例中所设置的并行处理通信单元400P1到400Pn。在各个处理器P1到Pn上的单处理器OS 300P1到300Pn不需要是相同的OS,而可以相互不同。
换句话说,本示例还使传统上安装在多处理器的OS上的进程间通信功能能够在由运行单处理器OS和多处理器上的应用程序的单处理器OS所进行的并行处理系统上实现,从而能够在用户级提供进程间通信功能。
进行每一个处理器P1到Pn中的每一个进程的执行,而不需要与其他处理器的互斥控制。
如第三示例中所述,通过进程间通信单元1000P1到1000Pn,利用信号量系统和消息排队系统,进行各个处理器P1~Pn内的进程间通信和处理器之间的进程间通信,以执行进程之间的同步处理和数据传送和接收。
将参照图30,对可应用于上述应用单处理器OS的并行处理系统的、根据本发明的处理器间通信系统进行描述。本发明的处理器间通信系统可应用于如第一到第四示例所描述的任何并行处理系统。
尽管前述第三和第四示例的并行处理系统是利用信号量系统和消息队列系统来实现进程间的同步和数据传输和接收的进程间通信系统,其中利用作为共享存储器的主存储设备中所确保的队列信息区来发送和接收数据,本发明的处理器间通信系统的特征在于利用由单处理器OS的API所提供的通信功能在其他处理器上的任务间实现处理器间数据传送,而无需使用这种共享存储器,也无需修改应用程序。
在安装在单处理器OS上的API中,作为复杂API提供的通信功能包括如网络(TCP/IP)等,作为简单API提供的通信功能包括如信号量和消息队列系统等。
允许本发明的处理器间通信系统使用任何通信功能。
这里,将对其中将本发明的处理器间通信系统应用于如图17中的第三示例所示的并行处理系统的第一实施例进行描述。
如图30所示,构建根据第一实施例的处理器间通信系统,包括分别位于如图17所示的并行处理系统的处理器P0和处理器P1~Pn中的OS代理单元2000P0~2000Pn和通信代理单元3000P0~3000Pn、以及数据传送单元700。
这里,将只对根据本实施例的处理器间通信所需的组件进行描述,而为了方便起见,将省略对图17所示的剩余组件的描述。
安装每个OS代理单元2000P0~2000Pn,作为在单处理器OS上和处理器P0上执行的模块(库),并具有以下功能从其处理器上的任务接收用于绑定处理功能的调用,以作为代理,请求单处理器OS进行绑定处理;以及响应来自其自身处理器上的任务的用于绑定处理功能的调用,通过数据传送单元700向其他处理器上的通信代理单元传送绑定处理信息。
安装每个通信代理单元3000P0~3000Pn,作为在单处理器OS和处理器P0上执行的模块(任务),并具有以下功能作为代理,执行由处理器上的任务进行的处理器间数据传送处理;以及针对代理接收,请求其自身处理器的单处理器OS进行绑定处理。
例如,由作为使其自身处理器内的任务能够只在其自身的处理器内部进行通信的进程间通信系统的UNIX域套接字来实现每个通信代理单元3000P0~3000Pn。
提供通信代理单元3000P0~3000Pn使得每个处理器上的任务能够通过与处理器内的任务间的输出传送的处理操作相同的处理操作来进行与其他处理器上的任务之间的处理器间数据传送。
在OS代理单元2000P0~2000Pn和通信代理单元3000P0~3000Pn,事先设置每个处理器P0~Pn的地址信息(例如IP地址等)。
数据传送单元700具有在处理器的通信代理单元之间传送数据的功能,并能够通过如TCP/IP的INET域和消息队列等通信系统来实现。
在本实施例中,安装OS代理单元2000P0~2000Pn和通信代理单元3000P0~3000Pn使得处理器间的数据传送能够在如UNIX等中实现,而无需修改UNIX域通信系统中所描述的应用程序。
更具体地,由任务(应用程序)只是作为库来链接OS代理单元3000P0~3000Pn实现了处理器间的通信,而无需修改应用程序。
下面,将描述根据本实施例的处理器间通信系统中的进程间数据传送的操作。
这里,将对以下情况下的操作进行描述从处理器Pn上的任务PT-B向处理器P0上的任务PT-A进行处理器间数据传送。
在这种情况下,在处理器P0上的任务PT-A和处理器Pn上的任务PT-B的每一个中,执行如图32所示的程序。
所执行的是作为数据传送的输入/输出单元来设置地址信息以作为处理器的处理器号(地址)和端口号的组合的套接字产生、绑定处理、向/从所产生的套接字传输和接收数据、以及结束处理。
在任务PT-A和任务PT-B上执行上述程序导致了套接字的产生,然后是每个任务PT-A的绑定处理的执行。
将参照图31,对处理器P0的任务PT-A的绑定处理进行描述。
这里,绑定处理表示用于将通信套接字与处理器地址(处理器号)相关的处理,其由任务通过调用用于使用单处理器OS所具有的通信功能(如利用UNIX域套接字的通信功能)的绑定处理功能来执行。
例如,绑定处理是通常在利用UNIX域套接字的任务间通信中执行的处理。
(1)处理器P0的任务PT-A调用绑定处理功能。
(2)处理器P0的OS代理单元2000P0钩住对绑定处理功能的上述调用,以作为代理,请求处理器P0的单处理器OS 300P0进行绑定处理。
(3)处理器P0的OS代理单元2000P0利用数据传送单元700向其他处理器传送绑定处理信息800。结果,通过向除处理器P0以外的其他处理器P1~Pn的通信代理单元3000P0~3000Pn广播来传送绑定处理信息800。
(4)处理器Pn的通信代理单元3000Pn接收绑定处理信息800,以准备作为任务PT-A的代理来接收去往处理器P0的任务PT-A的数据。
(5)为了代理接收,处理器Pn的通信代理单元3000Pn请求处理器Pn的单处理器OS 300Pn执行绑定处理,并进入数据接收状态。
在绑定处理器中传送的绑定处理信息800的结构示例如图33所示。在图33中,绑定处理信息800由代理数据接收准备请求800A、请求源处理器号800B和路径信息800C构成。
代理数据接收准备请求800A表示请求作为代理执行数据接收的信息。
请求源处理器号800B是作为将在处理器间数据传送中请求的处理器的地址信息的号码。用作此号码的是可以在系统上惟一识别处理器的号码。
路径信息800C是表示去往由处理器中的单处理器OS管理的每个任务(数据输入/输出路径)的路径的信息。例如,用作路径信息800C的是由任务处理的文件名。在相同的处理器中,路径信息800C对应于接收通过相关路径发送的数据的每个任务。
在前面的描述中,接收绑定处理信息800的处理器Pn的通信代理单元3000Pn通过识别包括在绑定处理信息中的路径信息800C,准备接收去往任务PT-A的数据。
这里,在描述处理器间数据传送之前,将参照图34来描述本实施例的系统中、相同处理器内的任务间的数据传送。
对于在处理器中的任务间传送数据的处理,将执行与通常所执行的相同的处理。
这里假设任务PT-A按照上述处于数据接收状态的方式来执行绑定处理。
(1)处理器P0的任务PT-C向处理器P0的单处理器OS 300P0请求传送与由任务PT-A所保持的路径信息相关的数据。
(2)处理器P0的单处理器OS 300P0根据数据传送请求将数据从任务PT-C传送到任务PT-A。
接下来,将参照图35来描述处理器间的数据传送处理。
在处理器间的数据传送中,通信代理单元3000P0~3000Pn作为每个任务的代理来中继数据传送,以便在处理器间执行从任务PT-B到任务PT-A的数据传送。
(1)处理器Pn的任务PT-B向处理器Pn的单处理器OS 300Pn请求与任务PT-A的路径信息相关的数据传送。
(2)处理器Pn的单处理器OS 300Pn向处理器Pn的通信代理单元3000Pn传送数据,通信代理单元3000Pn作为代理接收要传送到任务PT-A的数据。换句话说,单处理器OS 300Pn将通信代理单元3000Pn当作任务PT-A来传送数据。
(3)处理器Pn的通信代理单元3000Pn通过数据传送单元700向作为由绑定处理信息800中的请求源处理器号800B所指示的请求源的处理器P0的通信代理单元3000P0传送数据传送信息810。
(4)处理器P0的通信代理单元3000P0接收从数据传送单元800发送过来的数据传送信息810。
(5)处理器P0的通信代理单元3000P0向处理器P0的单处理器OS300P0请求传送与任务PT-A的路径信息有关的数据。
(6)处理器P0的单处理器OS 300P0传送请求向任务PT-A进行数据传送的数据。
在上述处理器间数据传送中传输的数据传送信息810的结构示例如图36所示。在图36中,数据传送信息810由代理数据传送请求810A、路径信息810B、数据尺寸810C和数据810D构成。
代理数据传送请求810A表示请求数据传送的信息。
路径信息810B指定了向其传送数据的传送目的地的任务的路径信息。在上述示例中,指定了由上述绑定处理信息800通知的任务PT-A的路径信息。
数据尺寸810C指定了包含在信息中的数据的尺寸。数据810D是根据信息而传送的数据的主体。
在完成上述数据传送处理之后,执行结束处理。将参照图37来描述结束处理。
这里,结束处理表示关闭在数据传送之前而产生的通信套接字的处理。
(1)处理器P0的任务PT-A调用结束处理功能。
(2)处理器P0的OS代理单元2000P0钩住对结束处理功能的调用,并作为代理,请求处理器P0的单处理器OS 300P0进行结束处理。
(3)当请求用于关闭通信套接字的结束处理时,处理器P0的OS代理单元2000P0通过数据传送单元700传递结束处理信息820。结果,通过向除处理器P0以外的其他处理器的通信代理单元3000P1~3000Pn广播,来传送结束处理信息820。
(4)处理器Pn的通信代理单元3000Pn接收结束处理信息820,以准备结束处理器P0的任务PT-A的代理处理。结果,放弃由上述绑定处理所通知的、与任务PT-A有关的路径信息。
(5)为了结束代理处理,处理器Pn的通信代理单元3000Pn请求处理器Pn的单处理器OS 300Pn进行结束处理。结果,关闭所产生的套接字。
在上述结束处理中传送的结束处理信息的结构示例如图38所示。在图38中,结束处理信息820由代理接收结束请求820A和路径信息820B构成。
代理接收结束请求820A表示请求结束处理的信息。路径信息820B指定了要结束其代理接收的路径信息。在上述情况下,将指定任务PT-A的路径信息。
通过前述操作,完成从处理器Pn上的任务PT-B到处理器P0上的任务PT-A的处理器间数据传送。
由于对于每个处理器上的任务,存在于其中执行作为其通信对方的任务的处理器中的通信代理单元3000P0~3000Pn作为其自身的代理来进行处理器间数据传送,即使在处理器间进行,仍然能够通过与处理器内的任务间的数据传送相同的处理、以其他处理器上的任务来实现数据传送。
因此,通过使用作为单处理器OS的功能而提供的处理器中的任务间的通信,作为在单处理器OS上操作的任务的应用程序能够与其他处理器上的任务一起实现处理器间数据传送。换句话说,作为在单处理器OS上操作的任务的应用程序不需要为了进行处理器间的数据传送而进行修改。
尽管在上述实施例中,已经对通过利用套接字(如UNIX域套接字)的通信来进行进程间数据传送的情况进行了描述,也可以在如图22所示的第三示例的并行处理系统中使用通过消息队列的通信。
当利用通过消息队列的通信时,可以通过以任务的路径信息代替密钥(数字值)、以msgget处理代替绑定处理、以及以msgctl处理代替结束处理来实现相同的处理。
还可以使用通过FIFO系统的通信,在这种情况下,可以通过以路径信息代替文件名(字符串)、以mkfifo处理代替绑定处理、以及以关闭处理代替结束处理来实现相同的处理。
通过具有并行处理单元、OS服务单元、控制处理中继单元、代理单元和进程间通信单元的各自功能的并行处理程序,可以实现根据各个示例的上述并行处理系统,以及通过具有OS代理单元和通信代理单元的功能的程序,可以实现处理器间通信系统。将这些程序存储在如磁盘或半导体存储器等记录介质中,并且将其从记录介质中加载到计算机处理设备上,以控制计算机处理设备的操作,从而实现上述的各个功能。
虽然已经针对前述的优选示例和实施例描述了本发明,但是本发明并不局限于上述方面,并且可以按照其技术思想的范围内的变体的形式实现。
根据本发明的处理器间通信系统,可以实现如下所述的优异效果。
第一,由于对于每个处理器上的任务,存在于其中执行作为其通信对方的任务的处理器中的通信代理单元作为其自身的代理来进行处理器间数据传送,即使在处理器间进行,仍然能够通过与处理器内的任务间的数据传送相同的处理、以其他处理器上的任务来实现数据传送。
因此,通过使用作为单处理器OS的功能而提供的处理器中的任务间的通信,作为在单处理器OS上操作的任务的应用程序能够与其他处理器上的任务一起实现处理器间数据传送。换句话说,作为在单处理器OS上操作的任务的应用程序不需要为了进行处理器间的数据传送而进行修改。
如上所述,消除了修改应用程序的需要导致了修改和维护所需成本的消除。
虽然已经针对典型示例示出和描述了本发明,本领域的技术人员应该理解,在不脱离本发明的精神和范围的情况下,可以进行前述和各种其他的改变、省略和添加。因此,本发明不应该被理解为限定于以上所述的特定示例,而是可以包括针对所附权利要求所提出的特征所涵盖的范围及其等价物内能够具体实现的所有可能的示例。
权利要求
1.一种在应用单处理器OS的并行处理系统中的处理器间通信系统,其中在并行处理系统上,在多处理器上操作单处理器OS和应用程序,将所述多处理器逻辑上分为两组,第一处理器侧和第二处理器侧,以及控制在所述第一处理器侧的处理器上进行操作并能够在所述应用程序内并行化为所述第二处理器侧的处理器上的新工作单元的工作单元,从而由所述多处理器针对所述应用程序执行并行处理,每个所述处理器包括通信代理单元,通过代理在散布在所述处理器上的工作单元之间传送数据。
2.根据权利要求1所述的处理器间通信系统,其特征在于其中传输侧工作单元进行操作的处理器上的所述通信代理单元保持与处理器上所述接收侧工作单元的地址有关的信息,以作为所述接收侧工作单元的代理,接收从所述传输侧工作单元传送过来的数据。
3.根据权利要求1所述的处理器间通信系统,其特征在于通过组播向其他处理器上的所述通信代理单元传送其中接收侧工作单元进行操作的处理器的地址信息和包含与处理器中的所述工作单元的路径有关的信息的处理信息,以及所述其他处理器上的所述通信代理单元接收所述处理信息,以便进入作为所述接收侧工作单元的代理来接收数据的状态。
4.根据权利要求1所述的处理器间通信系统,其特征在于其中传输侧工作单元进行操作的处理器上的通信代理单元响应来自所述传输侧工作单元的请求,作为所述接收侧工作单元的代理,接收从所述单处理器OS传输过来的数据,并通过执行处理器间的通信的预定数据传送单元,将所接收到的数据传输到所述接收侧处理器上的所述通信代理单元,并且已经接收到所述数据的接收侧处理器上的所述通信代理单元请求接收侧处理器上的所述单处理器OS向所述工作单元传送数据。
5.根据权利要求1所述的处理器间通信系统,其特征在于所述通信代理单元通过利用套接字的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送。
6.根据权利要求1所述的处理器间通信系统,其特征在于所述通信代理单元通过利用消息队列或FIFO的通信系统、利用代理来处理散布在处理器上的工作单元之间的数据传送。
7.根据权利要求5所述的处理器间通信系统,其特征在于包括OS代理单元,其钩住由接收侧工作单元做出的对绑定处理功能的调用,以请求所述单处理器OS的代理绑定处理,其中所述OS代理单元通过广播向其他处理器的所述通信代理单元通知包含所述接收侧工作单元的路径信息的绑定处理信息。
8.根据权利要求5所述的处理器间通信系统,其特征在于所述通信代理单元基于只能实现所述单元所属的处理器内的通信的进程间通信系统,与所述单元所属的处理器中的工作单元进行通信。
9.根据权利要求8所述的处理器间通信系统,其特征在于只能实现所述单元所属的处理器内的通信的所述进程间通信系统是UNIX域套接字。
10.一种在应用单处理器OS的并行处理系统中的处理器间通信系统,其中在并行处理系统上,在多处理器上操作单处理器OS和应用程序,以及控制在一个处理器上进行操作并能够在所述应用程序内并行化为其他处理器上的新工作单元的工作单元,从而由所述多处理器针对所述应用程序执行并行处理,每个所述处理器包括通信代理单元,通过代理在散布在所述处理器上的工作单元之间传送数据。
11.根据权利要求10所述的处理器间通信系统,其特征在于其中传输侧工作单元进行操作的处理器上的所述通信代理单元保持与处理器上所述接收侧工作单元的地址有关的信息,以作为所述接收侧工作单元的代理,接收从所述传输侧工作单元传送过来的数据。
12.根据权利要求10所述的处理器间通信系统,其特征在于通过组播向其他处理器上的所述通信代理单元传送其中接收侧工作单元进行操作的处理器的地址信息和包含与处理器中的所述工作单元的路径有关的信息的处理信息,以及所述其他处理器上的所述通信代理单元接收所述处理信息,以便进入作为所述接收侧工作单元的代理来接收数据的状态。
13.根据权利要求10所述的处理器间通信系统,其特征在于其中传输侧工作单元进行操作的处理器上的通信代理单元响应来自所述传输侧工作单元的请求,作为所述接收侧工作单元的代理,接收从所述单处理器OS传输过来的数据,并通过执行处理器间的通信的预定数据传送单元,将所接收到的数据传输到所述接收侧处理器上的所述通信代理单元,并且已经接收到所述数据的接收侧处理器上的所述通信代理单元请求接收侧处理器上的所述单处理器OS向所述工作单元传送数据。
14.根据权利要求10所述的处理器间通信系统,其特征在于所述通信代理单元通过利用套接字的通信系统、利用代理来处理散布在处理器上的工作单元之间的数据传送。
15.根据权利要求10所述的处理器间通信系统,其特征在于所述通信代理单元通过利用消息队列或FIFO的通信系统、利用代理来处理散布在处理器上的工作单元之间的数据传送。
16.根据权利要求14所述的处理器间通信系统,其特征在于包括OS代理单元,其钩住由接收侧工作单元做出的对绑定处理功能的调用,以请求所述单处理器OS的代理绑定处理,其中所述OS代理单元通过广播向其他处理器的所述通信代理单元通知包含所述接收侧工作单元的路径信息的绑定处理信息。
17.根据权利要求14所述的处理器间通信系统,其特征在于所述通信代理单元基于只能实现所述单元所属的处理器内的通信的进程间通信系统,与所述单元所属的处理器中的工作单元进行通信。
18.根据权利要求17所述的处理器间通信系统,其特征在于只能实现所述单元所属的处理器内的通信的所述进程间通信系统是UNIX域套接字。
19.一种在应用单处理器OS的并行处理系统中的处理器间通信系统,其中在多处理器上操作单处理器OS和工作单元作为任务的并行处理系统上,每个所述处理器包括通信代理单元,通过代理在散布在所述处理器上的工作单元之间传送数据。
20.根据权利要求19所述的处理器间通信系统,其特征在于其中传输侧工作单元进行操作的处理器上的所述通信代理单元保持与处理器上所述接收侧工作单元的地址有关的信息,以作为所述接收侧工作单元的代理,接收从所述传输侧工作单元传送过来的数据。
21.根据权利要求19所述的处理器间通信系统,其特征在于通过组播向其他处理器上的所述通信代理单元传送其中接收侧工作单元进行操作的处理器的地址信息和包含与处理器中的所述工作单元的路径有关的信息的处理信息,以及所述其他处理器上的所述通信代理单元接收所述处理信息,以便进入作为所述接收侧工作单元的代理来接收数据的状态。
22.根据权利要求19所述的处理器间通信系统,其特征在于其中传输侧工作单元进行操作的处理器上的通信代理单元响应来自所述传输侧工作单元的请求,作为所述接收侧工作单元的代理,接收从所述单处理器OS传输过来的数据,并通过执行处理器间的通信的预定数据传送单元,将所接收到的数据传输到所述接收侧处理器上的所述通信代理单元,并且已经接收到所述数据的接收侧处理器上的所述通信代理单元请求接收侧处理器上的所述单处理器OS向所述工作单元传送数据。
23.根据权利要求19所述的处理器间通信系统,其特征在于所述通信代理单元通过利用套接字的通信系统、利用代理来处理散布在处理器上的工作单元之间的数据传送。
24.根据权利要求19所述的处理器间通信系统,其特征在于所述通信代理单元通过利用消息队列或FIFO的通信系统、利用代理来处理散布在处理器上的工作单元之间的数据传送。
25.根据权利要求23所述的处理器间通信系统,其特征在于包括OS代理单元,其钩住由接收侧工作单元做出的对绑定处理功能的调用,以请求所述单处理器OS的代理绑定处理,其中所述OS代理单元通过广播向其他处理器的所述通信代理单元通知包含所述接收侧工作单元的路径信息的绑定处理信息。
26.根据权利要求23所述的处理器间通信系统,其特征在于所述通信代理单元基于只能实现所述单元所属的处理器内的通信的进程间通信系统,与所述单元所属的处理器中的工作单元进行通信。
27.根据权利要求26所述的处理器间通信系统,其特征在于只能实现所述单元所属的处理器内的通信的所述进程间通信系统是UNIX域套接字。
28.一种在应用单处理器OS的并行处理系统中的处理器间通信程序,其中在并行处理系统上,在多处理器上操作单处理器OS和应用程序,将所述多处理器逻辑上分为两组,第一处理器侧和第二处理器侧,以及控制在所述第一处理器侧的处理器上进行操作并能够在所述应用程序内并行化为所述第二处理器侧的处理器上的新工作单元的工作单元,从而由所述多处理器针对所述应用程序执行并行处理,每个所述处理器执行通过代理在散布在所述处理器上的工作单元之间传送数据的通信代理功能。
29.根据权利要求28所述的处理器间通信程序,其特征在于所述通信代理功能具有通过利用套接字的通信系统、利用代理来处理散布在处理器上的工作单元之间的数据传送的功能。
30.根据权利要求28所述的处理器间通信程序,其特征在于所述通信代理功能通过利用消息队列或FIFO的通信系统、利用代理来处理散布在处理器上的工作单元之间的数据传送。
31.根据权利要求28所述的处理器间通信程序,其特征在于包括OS代理功能,钩住由接收侧工作单元做出的对绑定处理功能的调用,以请求所述单处理器OS的代理绑定处理,其中所述OS代理功能通过广播向其他处理器的所述通信代理功能通知包含所述接收侧工作单元的路径信息的绑定处理信息。
32.根据权利要求29所述的处理器间通信程序,其特征在于所述通信代理功能基于只能实现所述单元所属的处理器内的通信的进程间通信系统,与所述单元所属的处理器中的工作单元进行通信。
33.根据权利要求32所述的处理器间通信程序,其特征在于只能实现所述单元所属的处理器内的通信的所述进程间通信系统是UNIX域套接字。
34.一种在应用单处理器OS的并行处理系统中的处理器间通信程序,其中在并行处理系统上,在多处理器上操作单处理器OS和应用程序,以及控制在一个处理器上进行操作并能够在所述应用程序内并行化为其他处理器上的新工作单元的工作单元,从而由所述多处理器针对所述应用程序执行并行处理,每个所述处理器执行通过代理在散布在所述处理器上的工作单元之间传送数据的通信代理功能。
35.根据权利要求34所述的处理器间通信程序,其特征在于所述通信代理功能具有通过利用套接字的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送的功能。
36.根据权利要求34所述的处理器间通信程序,其特征在于所述通信代理功能通过利用消息队列或FIFO的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送。
37.根据权利要求35所述的处理器间通信程序,其特征在于包括OS代理功能,钩住由接收侧工作单元做出的对绑定处理功能的调用,以请求所述单处理器OS的代理绑定处理,其中所述OS代理功能通过广播向其他处理器的所述通信代理功能通知包含所述接收侧工作单元的路径信息的绑定处理信息。
38.根据权利要求35所述的处理器间通信程序,其特征在于所述通信代理功能基于只能实现所述单元所属的处理器内的通信的进程间通信系统,与所述单元所属的处理器中的工作单元进行通信。
39.根据权利要求38所述的处理器间通信程序,其特征在于只能实现所述单元所属的处理器内的通信的所述进程间通信系统是UNIX域套接字。
40.一种在应用单处理器OS的并行处理系统中的处理器间通信系统,其中在多处理器上操作单处理器OS和工作单元作为任务的并行处理系统上,每个所述处理器执行通过代理在散布在所述处理器上的工作单元之间传送数据的通信代理功能。
41.根据权利要求40所述的处理器间通信程序,其特征在于所述通信代理功能具有通过利用套接字的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送的功能。
42.根据权利要求40所述的处理器间通信程序,其特征在于所述通信代理功能通过利用消息队列或FIFO的通信系统、通过代理来处理散布在处理器上的工作单元之间的数据传送。
43.根据权利要求41所述的处理器间通信程序,其特征在于包括OS代理功能,钩住由接收侧工作单元做出的对绑定处理功能的调用,以请求所述单处理器OS的代理绑定处理,其中所述OS代理功能通过广播向其他处理器的所述通信代理功能通知包含所述接收侧工作单元的路径信息的绑定处理信息。
44.根据权利要求41所述的处理器间通信程序,其特征在于所述通信代理功能基于只能实现所述单元所属的处理器内的通信的进程间通信系统,与所述单元所属的处理器中的工作单元进行通信。
45.根据权利要求44所述的处理器间通信程序,其特征在于只能实现所述单元所属的处理器内的通信的所述进程间通信系统是UNIX域套接字。
全文摘要
在应用单处理器OS的并行处理系统上,在多处理器上操作单处理器OS和现有应用程序,以便针对应用程序,实现多处理器的并行处理,每个处理器包括通信代理单元,通过代理在散布在处理器上的工作单元之间传送数据,以及其中传输侧任务进行操作的处理器上的通信代理单元保持与处理器上接收侧任务的地址有关的信息,以作为接收侧任务的代理,接收从传输侧任务传送过来的数据。
文档编号G06F15/163GK1670721SQ20051005630
公开日2005年9月21日 申请日期2005年3月16日 优先权日2004年3月17日
发明者井上浩明, 酒井淳嗣, 阿部刚, 枝广正人 申请人:日本电气株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1