JPWO2007108133A1 - マルチプロセッシング方法及びマルチプロセッサシステム - Google Patents

マルチプロセッシング方法及びマルチプロセッサシステム Download PDF

Info

Publication number
JPWO2007108133A1
JPWO2007108133A1 JP2008506135A JP2008506135A JPWO2007108133A1 JP WO2007108133 A1 JPWO2007108133 A1 JP WO2007108133A1 JP 2008506135 A JP2008506135 A JP 2008506135A JP 2008506135 A JP2008506135 A JP 2008506135A JP WO2007108133 A1 JPWO2007108133 A1 JP WO2007108133A1
Authority
JP
Japan
Prior art keywords
procedure
program
execution
server
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.)
Granted
Application number
JP2008506135A
Other languages
English (en)
Other versions
JP5003673B2 (ja
Inventor
鈴木 貴久
貴久 鈴木
真紀子 伊藤
真紀子 伊藤
三宅 英雄
英雄 三宅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2007108133A1 publication Critical patent/JPWO2007108133A1/ja
Application granted granted Critical
Publication of JP5003673B2 publication Critical patent/JP5003673B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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

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)

Abstract

依存関係のある手続(プログラムユニット)を実行する場合に、順番待ちによる無駄な待ち時間を削減できるマルチプロセッシング方法及びマルチプロセッサシステムが記載されており、逐次実行プログラムにおける複数のプログラムユニットの実行順及び複数のプログラムユニットの依存関係を登録し、登録した依存関係に基づいて複数のプログラムユニットの実行状態を管理し、実行可能なプログラムユニットを判定して、順次サーバプロセッサに割当てて実行する。

Description

本発明は、マルチプロセッシング方法及びマルチプロセッサシステムに関し、特にクライアントプロセッサが、逐次実行プログラムに順に記憶された複数のプログラムユニットを、サーバプロセッサに割当てることにより、実行するマルチプロセッシング方法及びマルチプロセッサシステムに関する。
複数のプロセッサを通信経路で相互に接続し、処理を分担して実行するマルチプロセッサシステムが知られている。マルチプロセッサシステムには、各プロセッサが対等であるシステムと、プロセッサの1つがクライアントプロセッサ(マシン)で、他のプロセッサがサーバプロセッサ(マシン)で、クライアントプロセッサが各サーバプロセッサに処理を割当て、その結果をまとめる処理を行うクライアント・サーバ方式のシステムとがある。本発明は、クライアント・サーバ方式のマルチプロセッサシステムに関する。
マルチプロセッサシステムにおけるプロセッサ間の通信方式として各種の方式が提案されているが、代表的なものに共有メモリ方式がある。図1は、共有メモリ方式のマルチプロセッサシステムの概略構成を示す図である。図1に示すように、このシステムは、共有バス2と、供給バス2に接続される複数のプロセッサ1−0、1−1、1−2、…、1−N及び共有メモリ3とを有する。データを送信する時には、各プロセッサは、送信するデータを共有メモリ3に書き込み、書き込み位置などの情報を送信先のプロセッサに通知する。通知を受けたプロセッサは共有メモリ3にアクセスして書き込まれたデータを得る。本発明は、図1に示したような共有メモリを有する方式に限定されず、プロセッサ間で通信を行えるシステムであればどのようなマルチプロセッサシステムにも適用可能である。
また、マルチプロセッサシステムで実行するプログラムの形式も各種あるが、本発明は、実行するプログラムユニットを順に記憶した逐次実行プログラムを処理するマルチプロセッサシステムを対象とする。
クライアント・サーバ方式のマルチプロセッサシステムでは、クライアントプロセッサからサーバプロセッサに対して手続呼出の形式で処理を依頼する。この手法を遠隔手続呼出と称する。
遠隔手続呼出では、クライアントプロセッサは、サーバプロセッサに処理を依頼した後、サーバプロセッサでの処理が終了し、それが通知されるまで待つ必要があるが、クライアントプロセッサがサーバプロセッサでの処理の終了を待たずに他の処理を継続できる方法として非同期の遠隔手続呼出がある。
マルチプロセッサシステムでは、この非同期の遠隔手続呼出を利用して、クライアントプロセッサから複数のサーバプロセッサに対して非同期の遠隔手続呼出を行うことにより並列処理を行う。図2は、非同期の遠隔手続呼出を使った並列処理を説明する図である。ここで、クライアントプロセッサは、”start”で手続(プログラムユニット)を実行する側のサーバプロセッサに対して指定された手続の起動を指示し、”wait”で指定した手続の完了を待つ。図2では、サーバプロセッサ1−1に手続(プログラムユニット)Aを、サーバプロセッサ1−2に手続(プログラムユニット)Bを、サーバプロセッサ1−3に手続(プログラムユニット)Cを、非同期の遠隔手続呼出を利用して割当てて実行させ、この間に手続要求側のクライアントプロセッサ1−0は、手続(プログラムユニット)Dを実行する。これにより、4つの処理を並列に行うことができる。
非同期の遠隔手続呼出を利用して並列処理を行った場合に問題になるのが、順番待ちの問題である。図3はこの問題を説明する図である。図3では、サーバプロセッサ1−1で手続AとCを、サーバプロセッサ1−2で手続BとDを実行する。この際、手続呼出側のクライアントプロセッサ1−0では、手続Aが先に完了すると想定して手続AとBを起動した後、先に手続Aの完了を待って手続Cを起動し、その後手続Bの完了を待って手続Dを起動する。しかし、実際に実行したところ、手続Bが先に完了した場合、手続Bが完了しても手続Aが完了するまで手続Dを起動できず、この間サーバプロセッサ1−2に無駄な待ち時間が生じる。
上記のような問題を解決するために、図4に示すようなキューイングによる解決法が考えられている。図4に示した構成によれば、手続要求側のクライアントプロセッサ1−0は、逐次実行プログラムから実行するプログラムユニットA、B、C、Dを順次実行リスト5に読み出す。クライアントプロセッサ1−0は、実行リスト5に読み出された手続(プログラムユニット)をサーバプロセッサに割当てる処理を行う手続要求プログラム6を有する。手続実行側のサーバプロセッサ1−1、1−2は、手続(プログラムユニット)を実行するために呼び出す処理を行う手続呼出プログラム7−1、7−2を有する。手続実行側のサーバプロセッサ1−1、1−2は、手続要求側のクライアントプロセッサ1−0から指定された手続を実行するための手続呼出プログラム7−1、7−2内に実行キュー8−1、8−2を有するため、ここで手続呼出の要求をキューイングすることで、手続要求側のクライアントプロセッサ1−0は先行の手続の完了を待たずに次の手続の呼出を要求できるようになる。これにより、順番待ちの問題が解消され、無駄な待ち時間を削減できる。
特許文献1:特開平5−290003号公報
非特許文献1:"Communication in the Mercury System" IEEE TH0212-1/88/0000/0178$01.00
非特許文献2:"Asynchronous Remote Operation Execution in Distributed Systems" IEEE CH2878-7/90/0000/0253$01.00
しかしながら、図4に示すように単純にキューイングしただけでは、図5に示したような手続間で依存があるプログラムユニットを異なるプロセッサに割当てた場合、手続の完了を待つ必要があり、順番待ちの問題により無駄な待ち時間が発生する。図6は、この問題を説明する図であり、図5に示したプログラムユニットを実行する場合を示す。
図6では、図5に示したプログラムユニットを非同期の手続呼出を利用して並列化している。ここで、手続A、B、Cの間には依存関係がないため、3つのサーバプロセッサ1−1〜1−3で並列に実行することが可能である。手続Dは手続Aのみに依存関係があるため、サーバプロセッサ1−1にキューイングすればよい。手続Eは手続AとBに依存関係があるため、手続Bが完了した後さらに手続Aの完了を待ってからサーバプロセッサ1−2にキューイングする必要がある。同様に、手続Fは手続Bの完了を待ってからサーバプロセッサ1−3にキューイングする。ここで、手続AとBの完了待ちの順番が問題になる。図6では、手続Aが手続Bよりも先に完了すると仮定して先に手続Aの完了を待っているが、実際には手続Bが先に完了してしまったため、手続Fの実行時に無駄な待ち時間が発生する。
本発明は、上記のような依存関係のある手続(プログラムユニット)を実行する場合に、順番待ちによる無駄な待ち時間を削減できるマルチプロセッシング方法及びマルチプロセッサシステムの実現を目的とする。
本発明によれば、逐次実行プログラムにおける複数のプログラムユニットの実行順及び複数のプログラムユニットの依存関係を登録し、登録した依存関係に基づいて複数のプログラムユニットの実行状態を管理し、実行可能なプログラムユニットを判定して、順次サーバプロセッサに割当てて実行する。
具体的には、手続(プログラムユニット)の呼出をキューイングしておく実行キューを拡張して、実行キューが手続とその手続に対する依存関係を保持するようにし、保持している依存関係を参照して実行可能な手続を判定して実行する。
実行キューは、クライアントプロセッサの手続要求プログラム内に生成することも、サーバプロセッサの手続呼出プログラム内に生成することもできる。
クライアントプロセッサの手続要求プログラムが実行キューを有する場合には、サーバプロセッサの手続呼出プログラムは、割当てられた手続の完了を手続要求プログラムに通知する。
サーバプロセッサの手続呼出プログラムが実行キューを有する場合には、手続呼出プログラムは、割当てられた手続の完了を、他のすべてのクライアントプロセッサ又は依存関係のある手続を実行する他のクライアントプロセッサに通知する。なお、複数の手続(プログラムユニット)の実行状態を管理する手続実行状態テーブルを設けて、手続呼出プログラムは、プログラムユニットの実行完了に応じて手続実行状態テーブルを更新し、さらに手続実行状態テーブルを参照して実行可能なプログラムユニットを判定することも可能である。
本発明によれば、マルチプロセッシング方法及びマルチプロセッサシステムにおいて、依存関係のある手続(プログラムユニット)を実行する場合に、順番待ちによる無駄な待ち時間を削減できる。
図1は、本発明が対象とするマルチプロセッサシステムの一例の概略構成を示す図である。 図2は、非同期呼出を使った並列処理を示す図である。 図3は、並列処理における順番待ちの問題を説明する図である。 図4は、図3の順番待ちの問題のキューイングによる解決法を示す図である。 図5は、依存関係のある手続(プログラムユニット)を示す図である。 図6は、従来手法での問題を説明する図である。 図7は、本発明の第1実施例の並列処理を示す図である。 図8は、第1実施例の並列処理における手続起動要求 (dispatch)後の手続要求処理を示すフローチャートである。 図9は、第1実施例の手続呼出処理を示すフローチャートである。 図10は、第1実施例の手続要求側の終了通知処理を示すフローチャートである。 図11は、本発明の第2実施例の並列処理を示す図である。 図12は、第2実施例の並列処理における手続起動要求 (dispatch)後の手続要求処理を示すフローチャートである。 図13は、本発明の第3実施例の並列処理を示す図である。 図14は、第3実施例の並列処理における手続起動要求 (dispatch)後の手続要求処理を示すフローチャートである。 図15は、本発明の第4実施例の並列処理を示す図である。 図16は、第4実施例の並列処理における手続起動要求 (dispatch)後の手続要求処理を示すフローチャートである。 図17は、第4実施例の並列処理における手続呼出処理を示すフローチャートである。 図18は、第4実施例の並列処理における終了通知処理を示すフローチャートである。 図19は、本発明の第5実施例の並列処理を示す図である。 図20は、本発明の第6実施例の並列処理における手続起動要求 (dispatch)後の手続要求処理を示すフローチャートである。 図21は、第6実施例の並列処理における手続呼出処理を示すフローチャートである。 図22は、本発明の第7実施例の並列処理を示す図である。 図23は、第7実施例の並列処理における手続起動要求 (dispatch)後の手続要求処理を示すフローチャートである。 図24は、本発明の第8実施例の並列処理を示す図である。
符号の説明
1−0 クライアントプロセッサ
1−1、1−2、1−3、1−n サーバプロセッサ
6 手続要求プログラム
7−1、7−2、7−3 手続呼出プログラム
8−0、8−1、8−2、8−3 実行キュー
以下、本発明の実施例を説明する。以下の実施例では、図5のプログラムユニットを有する逐次実行プログラムを、図6の1個のクライアントプロセッサと3個のサーバプロセッサで構成されるマルチプロセッサシステムで実行するものとする。
図7は、本発明の第1実施例のマルチプロセッサシステムにおける並列処理を説明する図である。第1実施例のマルチプロセッサシステムは、例えば、図1に示すような共有メモリを有するシステムであるが、クライアント・サーバ方式で、逐次実行プログラムを実行するマルチプロセッサシステムであれば、どのようなシステムでもよい。
図7に示すように、第1実施例のマルチプロセッサシステムは、クライアントプロセッサ1−0と、3個のサーバプロセッサ1−1、1−2、1−3と、を備えるが、サーバプロセッサの個数は2個以上であればよい。手続要求側のクライアントプロセッサ1−0は、逐次実行プログラムから実行するプログラムユニット(手続)A、B、C、D、E、Fを実行リスト5に読み出す。逐次実行プログラムには、手続の依存関係も記載されており、それらも合わせて実行リスト5に読み出す。
手続要求側のクライアントプロセッサ1−0は、サーバプロセッサに手続を割当てる処理を行う手続要求プログラム6を有する。手続実行側のサーバプロセッサ1−1、1−2、1−3は、クライアントプロセッサ1−0から指定された手続(プログラムユニット)を実行するために呼び出す処理を行う手続呼出プログラム7−1、7−2、7−3を有する。
実行リスト5では、実行する手続を順番に読み出し”start”が付加され、依存関係がある場合には、その後に”dep”で依存関係を記載する。図示の例では、手続A、B、Cは依存関係はないが、手続Dは手続Aの処理結果を使用する依存関係があり、手続Eは手続AとBの処理結果を使用する依存関係があり、手続Fは手続BとCの処理結果を使用する依存関係がある。実行リスト5の作成が完了すると、”dispatch”で実行開始を指示する。従来は、”start”で手続の記載を行うと、直ちに実行開始が指示されたが、本実施例では、手続を記載しただけでは依存関係が記載されないため、”start”及び”dep”の記載がすべて完了した後、”dispatch”で実行開始を指示する。
クライアントプロセッサ1−0の手続要求プログラム6は、1つの実行キュー8−0を有する。手続要求プログラム6は、実行リスト5に、実行する手続(プログラムユニット)及びその依存関係が記載されると、実行キュー8−0にそれらの情報を登録すると共に、さらに各手続を実行するサーバプロセッサを決定して、それらの情報を実行キュー8−0に登録する。図示の例では、実行する手続、その依存関係に加えて、手続A及びDはサーバプロセッサ1−1で、手続BとEはサーバプロセッサ1−2で、手続CとFはサーバプロセッサ1−3で実行されることが登録される。
手続要求プログラム6は、実行リスト5に”dispatch”が入ると、実行キュー8−0も登録された手続を各サーバプロセッサ1−1、1−2、1−3に割当てる処理を行う。
図8は、”dispatch”が出された後の手続要求プログラム6の処理(以下dispatch後処理)を示すフローチャートである。また、図9は手続要求プログラム6から手続起動要求がされた後のサーバプロセッサ1−1、1−2、1−3の手続呼出プログラム7−1、7−2、7−3の処理を示すフローチャートであり、図10は手続呼出プログラム7−1、7−2、7−3から手続完了の通知を受けた後の手続要求プログラム6の処理を示すフローチャートである。
手続要求プログラム6は、ステップ101で、実行キュー8−0から実行可能な手続を探す。ステップ102で、実行可能な手続が無いかを判定し、無ければ終了する。終了した後は、ここに記載していない他の処理を行うことができる。実行可能な手続がある時には、ステップ103で、実行キュー8−0において実行可能な手続を行うことが規定されている対象サーバプロセッサが手続を実行中であるかを判定する。実行中であれば、ステップ101に戻り、実行中でなければ、ステップ104に進み、対象サーバプロセッサにその手続の起動を指示する。そして、ステップ105で、対象サーバプロセッサの状態を実行中に変更してステップ101に戻る。
最初の手続Aであれば、対象サーバプロセッサ1−1は実行中でないので、サーバプロセッサ1−1に手続Aの起動を指示する。以下、サーバプロセッサ1−2に手続Bの起動を、サーバプロセッサ1−3に手続Cの起動を指示する。
手続Cの起動指示を行った後は、3つのサーバプロセッサはすべて手続を実行中であるので、ステップ103での判定がYesとなり、ステップ101に戻った後、ステップ102で実行可能な手続無し、と判定されるので、終了する。クライアントプロセッサ1−0は、後述するように終了通知を割り込みで受けるので、それまで他の処理を行う。
一方、手続起動要求を受けたサーバプロセッサ1−1、1−2、1−3は、その手続呼出プログラム7−1、7−2、7−3がそれぞれ図9の処理を行う。手続起動要求を受けると、ステップ111で、要求された手続を起動し、ステップ112で手続を実行する。手続の完了を待ち、手続が完了すると、ステップ113で手続要求側のクライアントプロセッサ1−0の手続要求プログラム6に手続完了を通知する。そして、次の起動要求が来るのを待つ。
手続要求プログラム6は、手続呼出プログラムから手続完了の通知を割込み処理により受けると、図10に示すように、ステップ121で、完了した手続を実行状態から完了に変更するように実行キュー8−0を更新する。そして、ステップ122で、その手続を実行したサーバプロセッサの状態を実行完了、すなわち空き状態に変更する。ステップ123では、図8の”dispatch”処理を行う。もし、図8の”dispatch”処理が終了すると、割り込み前の状態に復帰する。
図7及び図8に戻ると、手続要求プログラム6は、手続A、B、Cの起動要求を指示した後、ステップ101と103の間をループしている。3つの手続のうち、最初にサーバプロセッサ1−2の手続Bの処理が完了して、完了通知を受け、図10の処理を行う。残っている手続Dは手続Aに依存し、手続Eは手続A、Bに依存し、手続Fは手続B、Cに依存しているので、図8のステップ102では実行できる手続はないと判定される。次に、サーバプロセッサ1−3の手続Cの処理が完了して、完了通知を受ける。同様に図10の処理を行い、手続Fが実行可能になり、サーバプロセッサ1−3が空き状態になるので、サーバプロセッサ1−3に対して手続Fの起動要求を行う。さらに、サーバプロセッサ1−1の手続Aの処理が完了して、完了通知を受けると、同様に手続D及びEが実行可能になり、サーバプロセッサ1−1が空き状態になり、サーバプロセッサ1−2は既に空き状態であるので、サーバプロセッサ1−1に対して手続Dの起動要求を、サーバプロセッサ1−2に対して手続Eの起動要求を行う。
手続D及びEの起動要求を行うと、実行する手続が残っていないので、図8のステップ102で、実行可能な手続は無い、と判定されるので、終了する。以下、手続D、E、Fの処理が完了すると、同様に図10の処理を行い、実行する手続が残っていないので終了する。
図6と図7を比較して明らかなように、従来例では、サーバプロセッサ1−3において、手続Cが完了した後、手続Fを起動するまで無駄な待ち時間WTがあったが、第1実施例では、手続Cが完了した後、手続Fが直ぐに起動されている。
図11は、本発明の第2実施例のマルチプロセッサシステムにおける並列処理を説明する図である。第2実施例のマルチプロセッサシステムは、手続要求プログラム6の実行キュー8−0で、各手続を実行するサーバプロセッサが規定されておらず、処理状況に応じて各手続を実行するサーバプロセッサが動的に決定される点が、第1実施例と異なり、他は第1実施例と同じである。各手続を実行するサーバプロセッサを動的に決定するため、手続要求プログラム6が、図8の処理の代わりに、図12のdispatch後処理を行う。
図12の第2実施例のdispatch後処理は、第1実施例のステップ101及び102と同じステップ131及び132を行う。ステップ132で、実行可能な手続があると判定されると、ステップ133で、実行可能なサーバプロセッサを探し、ステップ134で、実行可能なサーバプロセッサが無いかを判定し、無ければ終了し、あればステップ135に進む。ステップ135及び136は、第1実施例のステップ104及び105と同じである。
図11に示すように、第2実施例では、手続BとCが完了すると、手続Fが実行可能であり、サーバプロセッサ1−2と1−3が空き状態にあるので、サーバプロセッサ1−2に対して手続Fを起動する。
図13は、本発明の第3実施例のマルチプロセッサシステムにおける並列処理を説明する図である。第3実施例のマルチプロセッサシステムは、手続要求プログラム6が、3個のサーバプロセッサに対応して3個の実行キュー8−0−1、8−0−2、8−0−3を有する点が第1実施例と異なり、他は第1実施例と同じである。手続要求プログラム6は、図8の処理の代わりに、図14のdispatch後処理を行う。
図14の第3実施例のdispatch後処理によれば、”dispatch”を受けると、ステップ141で、実行可能なサーバプロセッサ、すなわち空き状態のサーバプロセッサを探す。ステップ142で、実行可能なサーバプロセッサが無いかを判定する。実行可能なサーバプロセッサが無ければ、新たに手続の起動は行えないので、終了する。実行可能なサーバプロセッサがあれば、ステップ143で、実行キュー8−0−1、8−0−2、8−0−3のうちそのサーバプロセッサに対応する実行キューから実行可能な手続を探す。ステップ144で、実行可能な手続が無いか判定し、無ければステップ141に戻り、あればステップ145に進む。ステップ145及び146は、第1実施例のステップ104及び105と同じである。
図15は、本発明の第4実施例のマルチプロセッサシステムにおける並列処理を説明する図である。第4実施例のマルチプロセッサシステムは、サーバプロセッサの手続呼出プログラム7−1、7−2、7−3がそれぞれ実行キュー8−1、8−2、8−3を有する点が第1実施例と異なり、他は同じである。なお、クライアントプロセッサ1−0の手続要求プログラム6は、実行する手続及びそれを実行するサーバプロセッサを記載した実行キュー8−0を有し、全体の実行状態を管理する。
この実施例では、逐次実行プログラムに、各手続(プログラムユニット)にどのサーバプロセッサで実行するかが規定されており、実行リスト5に実行する手続、実行するサーバプロセッサ及び依存関係が記載されると、クライアントプロセッサ1−0の手続要求プログラム6は、対応するサーバプロセッサにその情報を通知する。これに応じて、各サーバプロセッサは、実行する手続及び依存関係を各実行キューに登録する。
図16は、第4実施例のdispatch後処理を示す図である。クライアントプロセッサ1−0の手続要求プログラム6は、”dispatch”を受けると、すべてのサーバプロセッサ1−1、1−2、1−3に”dispatch”を通知する。
図17は、”dispatch”通知を受けた後のサーバプロセッサの手続呼出プログラムの処理を示す図である。各手続呼出プログラムは、”dispatch”通知を受けた後、ステップ161で、各実行キューから実行可能な手続を探し、ステップ162で、実行可能な手続が無いか判定する。実行可能な手続があれば、ステップ163に進んで手続を実行する。そして、手続の実行が完了すると、ステップ164で、すべてのサーバプロセッサ1−1、1−2、1−3に完了を通知し、ステップ165で、実行キューの手続の実行状態を完了に変更して更新し、ステップ161に戻る。
ステップ162で、実行可能な手続が無いと判定された場合には、ステップ166で、実行キューに実行する手続が残っているかを判定し、残っていればステップ161に戻る。残っていなければ、ステップ167に進んで、クライアントプロセッサ1−0の手続要求プログラム6に起動の要求された、すなわち割当てられた手続が完了したことを通知し、次のdispatchを待つ状態になる。
図18は、クライアントプロセッサ1−0の手続要求プログラム6が、サーバプロセッサの手続呼出プログラムから手続が完了したことを通知された時の処理を示す図である。完了通知を受けると、ステップ171で、実行キュー8−0において完了した手続に対して実行状態を完了に更新する。
図19は、本発明の第5実施例のマルチプロセッサシステムにおける並列処理を説明する図である。第5実施例のマルチプロセッサシステムは、手続呼出プログラム7−1、7−2、7−3の実行キュー8−1、8−2、8−3に、実行する手続の結果に影響され且つ他のサーバプロセッサで実行される手続については、他のサーバプロセッサの情報を登録する点が第4実施例と異なり、他は同じである。
実行した手続の結果に影響され且つ他のサーバプロセッサで実行される手続が分かるので、そのサーバプロセッサに実行の完了を通知すればよい。
第1実施例のマルチプロセッサシステムでは、サーバプロセッサからの手続の完了通知を割り込みで受信していたが、これをポーリングで行うことも可能である。本発明の第6実施例のマルチプロセッサシステムは、第1実施例のマルチプロセッサシステムにおいて、手続の完了通知の受信をポーリングで行うようにした点が異なり、他は同じである。
手続の完了通知の受信をポーリングで行うために、第6実施例のマルチプロセッサシステムでは、クライアントプロセッサの手続要求プログラムが図20のdispatch後処理を行い、サーバプロセッサの手続呼出プログラムが図21の手続呼出処理を行う。
図20のdispatch後処理は、” dispatch”を受けた後、ステップ181で、実行キュー8−0から実行可能な手続を探す。ステップ182で、実行可能な手続が無いかを判定する。実行可能な手続がある時には、ステップ183で、対象サーバプロセッサが手続を実行中であるかを判定する。実行中であれば、ステップ181に戻り、実行中でなければ、ステップ184に進み、対象サーバプロセッサにその手続の起動を指示する。そして、ステップ185で、対象サーバプロセッサの状態を実行中に変更してステップ181に戻る。
ステップ182で、実行可能な手続が無いと判定された時には、ステップ186で、すべてのサーバプロセッサ1−1、1−2、1−3の実行状況を調査し、ステップ187で、手続が完了したサーバプロセッサがあるかを判定する。無ければステップ186に戻り、いずれかのサーバプロセッサが手続を完了するまでステップ186と187を繰り返す。手続が完了したサーバプロセッサがある時には、ステップ188で、実行キュー8−0の待ち状態を変更し、ステップ189で、そのサーバプロセッサの状態を終了に変更して、ステップ190で、すべての登録された手続が完了したかを判定する。完了していれば終了し、完了していなければステップステップ181に戻る。
図21の手続呼出処理では、クライアントプロセッサ1−0から手続起動要求を受けると、サーバプロセッサの手続呼出プログラムは、ステップ201で、要求された手続を起動し、ステップ202で手続を実行する。手続が完了しても完了の通知は行わず、ステップ203で、クライアントプロセッサ1−0の手続要求プログラム6からの完了確認要求が来るまで待ち、完了確認要求が来たら完了を通知して、次の起動要求を待つ。
なお、第6実施例のポーリング処理の利用は、第2及び第3実施例にも適用可能である。
図22は、本発明の第7実施例のマルチプロセッサシステムにおける並列処理を説明する図である。第7実施例のマルチプロセッサシステムは、第4実施例のように手続完了後に他のサーバプロセッサに対して割込みで完了を通知するのではなく、プロセッサ同士が、共有メモリ3内に互いに読み出し及び書き込み可能な領域を有しており、その領域に手続の実行状態を記載した実行状態テーブル9を設ける点が、第4実施例と異なる。各サーバプロセッサは、割当てられた手続が完了すると、実行状態テーブル9を更新する。各サーバプロセッサは、実行状態テーブル9を参照することで、どの手続が完了したかを知ることができる。
実行状態テーブル9事態は、クライアントプロセッサ1−0の手続要求プログラム6により用意される。手続要求プログラム6は、手続呼出プログラム7−1、7−2、7−3での手続の登録を行って実行キュー8−1、8−2、8−3を作成する時に、手続が完了した時に更新する実行状態テーブル9の位置を指定する。このため、手続要求プログラム6は、図16のdispatch後処理を実行する。
また、手続呼出プログラムは、図23に示す手続呼出処理を実行する。図23の手続呼出処理は、図17の処理に類似しており、図17の処理でステップ164を削除した処理である。
図24は、本発明の第8実施例のマルチプロセッサシステムにおける並列処理を説明する図である。第8実施例のマルチプロセッサシステムは、逐次実行プログラムに依存関係も一緒に記載されており、実行リスト5を作成すると依存関係も一緒に含まれ、実行キュー8−0に実行する手続を登録すると、自動的に依存関係も一緒に登録される点が第1実施例と異なり、他は第1実施例と同じである。従って、依存関係を登録するまで待つ必要はなく、”dispatch”は不要であり、実行キュー8−0に手続と依存関係を登録する時に、”dispatch”と同様の処理を行う。この処理方法は、第2から第5実施例にも適用可能である。
以上、本発明の実施例を説明したが、各種の変形例が可能であるのはいうまでもない。

Claims (10)

  1. クライアントプロセッサと、複数のサーバプロセッサと、前記クライアントプロセッサと前記複数のサーバプロセッサ間のデータ通信が可能なように接続する通信経路と、を備えるマルチプロセッサシステムにおいて、前記クライアントプロセッサが、複数のプログラムユニットを順に記憶した逐次実行プログラムの前記プログラムユニットを前記サーバプロセッサに割当てることにより、実行するマルチプロセッシング方法であって、
    前記逐次実行プログラムにおける、前記複数のプログラムユニットの実行順及び前記複数のプログラムユニットの依存関係を登録し、
    登録した前記依存関係に基づいて前記複数のプログラムユニットの実行状態を管理し、実行可能なプログラムユニットを判定して、順次サーバプロセッサに割当てて実行することを特徴とするマルチプロセッシング方法。
  2. 前記クライアントプロセッサは、前記サーバプロセッサに前記プログラムユニットを割当てる処理を行う手続要求プログラムを実行し、
    前記サーバプロセッサは、前記プログラムユニットを実行するために呼び出す処理を行う手続呼出プログラムを実行する請求項1に記載のマルチプロセッシング方法。
  3. 前記手続要求プログラムは、前記複数のプログラムユニットの実行順及び前記依存関係を登録する実行キューを生成し、
    前記手続要求プログラムは、前記実行キューに基づいて前記複数のプログラムユニットの実行状態を管理し、実行可能なプログラムユニットを判定して、順次サーバプロセッサを呼び出し、
    前記手続呼出プログラムは、割当てられたプログラムユニットの実行完了を前記手続要求プログラムに通知する請求項2に記載のマルチプロセッシング方法。
  4. 前記実行キューは、各プログラムユニットの実行を割当てるサーバプロセッサに関するサーバ割当情報を有し、
    前記手続要求プログラムは、前記実行キューに従って、実行可能なプログラムユニットを前記サーバプロセッサに割当てる請求項3に記載のマルチプロセッシング方法。
  5. 前記実行キューは、各サーバプロセッサに対応して生成される請求項4に記載のマルチプロセッシング方法。
  6. 前記手続要求プログラムは、前記複数のサーバクライアントの空き状態を管理し、実行可能なプログラムユニットを空き状態のサーバクライアントに割当てる請求項3に記載のマルチプロセッシング方法。
  7. 前記手続呼出プログラムは、当該クライアントプロセッサに割当てられたプログラムユニットの実行順及び前記依存関係情報を含む実行キューを生成し、前記実行キューに基づいて前記プログラムユニットの実行状態を管理し、実行可能なプログラムユニットを判定して、順次プログラムユニットを実行する請求項2に記載のマルチプロセッシング方法。
  8. 前記手続呼出プログラムは、前記プログラムユニットの実行完了を他のクライアントプロセッサに通知する請求項7に記載のマルチプロセッシング方法。
  9. 前記手続呼出プログラムは、前記プログラムユニットの実行完了を、当該プログラムユニットに依存関係のあるプログラムユニットを実行する他のクライアントプロセッサに通知する請求項7に記載のマルチプロセッシング方法。
  10. クライアントプロセッサと、複数のサーバプロセッサと、前記クライアントプロセッサと前記複数のサーバプロセッサ間のデータ通信が可能なように接続する通信経路と、を備え、複数の手続プログラムユニットを順に記憶した逐次実行プログラムを、前記クライアントプロセッサが、前記サーバプロセッサを非同期に呼び出す呼出手続を行なって前記プログラムユニットをサーバプロセッサに割当てることにより、実行するマルチプロセッサシステムであって、
    前記逐次実行プログラムから、前記複数のプログラムユニットの実行順及び前記複数のプログラムユニットの依存関係を登録する実行キューを備え、
    前記実行キューに登録された前記依存関係に基づいて前記複数のプログラムユニットの実行状態を管理し、実行可能なプログラムユニットを判定して、順次サーバプロセッサに割当てて実行することを特徴とするマルチプロセッサシステム。
JP2008506135A 2006-03-23 2006-03-23 マルチプロセッシング方法及びマルチプロセッサシステム Expired - Fee Related JP5003673B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/305867 WO2007108133A1 (ja) 2006-03-23 2006-03-23 マルチプロセッシング方法及びマルチプロセッサシステム

Publications (2)

Publication Number Publication Date
JPWO2007108133A1 true JPWO2007108133A1 (ja) 2009-08-06
JP5003673B2 JP5003673B2 (ja) 2012-08-15

Family

ID=38522173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008506135A Expired - Fee Related JP5003673B2 (ja) 2006-03-23 2006-03-23 マルチプロセッシング方法及びマルチプロセッサシステム

Country Status (3)

Country Link
US (1) US20090019259A1 (ja)
JP (1) JP5003673B2 (ja)
WO (1) WO2007108133A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150082314A1 (en) * 2012-04-18 2015-03-19 Nec Corporation Task placement device, task placement method and computer program
JP5921306B2 (ja) * 2012-04-18 2016-05-24 三菱電機株式会社 情報処理装置および情報処理方法およびプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58117054A (ja) * 1981-12-29 1983-07-12 Fujitsu Ltd 処理装置の選択方式
JP2002073576A (ja) * 2000-08-31 2002-03-12 Toshiba Corp バッチジョブ制御システム
JP2004013235A (ja) * 2002-06-03 2004-01-15 Nec Corp ジョブスケジュール変更支援装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4581736A (en) * 1983-03-01 1986-04-08 Communications Satellite Corporation Multiple downlink data aggregator and system
US5974522A (en) * 1990-01-24 1999-10-26 Cornell Research Foundation, Inc. Machine for processing interrupted out-of-order instructions
JP2945498B2 (ja) * 1991-04-12 1999-09-06 富士通株式会社 システム間通信方式
JP2001027951A (ja) * 1999-07-14 2001-01-30 Fujitsu Ltd マルチプロセッサ構成の情報処理システムにおけるファイルロード装置と記録媒体
US7072936B2 (en) * 2000-12-13 2006-07-04 Riskspan, Inc. System and method for aggregating data having data and application dependencies
US6865631B2 (en) * 2000-12-14 2005-03-08 International Business Machines Corporation Reduction of interrupts in remote procedure calls
US7246353B2 (en) * 2002-06-12 2007-07-17 Microsoft Corporation Method and system for managing the execution of threads and the processing of data
US7243352B2 (en) * 2002-11-27 2007-07-10 Sun Microsystems, Inc. Distributed process runner
US20050223101A1 (en) * 2004-03-22 2005-10-06 International Business Machines Corporation Computer-implemented method, system and program product for resolving prerequisites for native applications utilizing an open service gateway initiative ( OSGi) framework
US9038070B2 (en) * 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
US20060112388A1 (en) * 2004-11-22 2006-05-25 Masaaki Taniguchi Method for dynamic scheduling in a distributed environment
US20070226226A1 (en) * 2006-03-23 2007-09-27 Elta Systems Ltd. Method and system for distributing processing of computerized tasks
DE602007006467D1 (de) * 2006-03-27 2010-06-24 Coherent Logix Inc Programmierung eines multiprozessorsystems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58117054A (ja) * 1981-12-29 1983-07-12 Fujitsu Ltd 処理装置の選択方式
JP2002073576A (ja) * 2000-08-31 2002-03-12 Toshiba Corp バッチジョブ制御システム
JP2004013235A (ja) * 2002-06-03 2004-01-15 Nec Corp ジョブスケジュール変更支援装置

Also Published As

Publication number Publication date
WO2007108133A1 (ja) 2007-09-27
US20090019259A1 (en) 2009-01-15
JP5003673B2 (ja) 2012-08-15

Similar Documents

Publication Publication Date Title
JP5191062B2 (ja) ストレージ制御システム、ストレージ制御システムに関する操作方法、データ・キャリア及びコンピュータ・プログラム
US7316017B1 (en) System and method for allocatiing communications to processors and rescheduling processes in a multiprocessor system
US20090165003A1 (en) System and method for allocating communications to processors and rescheduling processes in a multiprocessor system
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
WO2009113381A1 (ja) マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
JP2008084009A (ja) マルチプロセッサシステム
JPH0533410B2 (ja)
TW200540705A (en) Methods and apapratus for processor task migration in a multi-processor system
US9201691B2 (en) Method, apparatus and system for coordinating execution of tasks in a computing system having a distributed shared memory
JP2009294695A (ja) トランザクション並行制御方法、データベース管理システム、およびプログラム
KR101091325B1 (ko) 철강 공정 제어를 위한 미들웨어 및 그 미들웨어에서의 서비스 제공 방법
US20170366612A1 (en) Parallel processing device and memory cache control method
US9336049B2 (en) Method, system, and program for scheduling jobs in a computing system
JP5003673B2 (ja) マルチプロセッシング方法及びマルチプロセッサシステム
JP2001306341A (ja) コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
JP6368452B2 (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
JP3576437B2 (ja) マルチプロセッサタスク制御方法及びタスク制御装置
JP2002163117A (ja) タスクスケジューリング装置
KR20220010036A (ko) 메모리 관리 방법 및 관련 제품
JP2005327007A (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
JP2021060707A (ja) 同期制御システムおよび同期制御方法
JP2004054562A (ja) ネットワークファイルシステム用入出力制御方法
JP7350807B2 (ja) メッセージ送受信方法およびオペレーティングシステム
JP2014102692A (ja) 演算処理システム、実行制御装置、実行制御方法及び実行制御プログラム
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110830

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111019

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120424

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120507

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150601

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees