JP5146444B2 - マルチプロセッサシステム及びその制御方法 - Google Patents

マルチプロセッサシステム及びその制御方法 Download PDF

Info

Publication number
JP5146444B2
JP5146444B2 JP2009505042A JP2009505042A JP5146444B2 JP 5146444 B2 JP5146444 B2 JP 5146444B2 JP 2009505042 A JP2009505042 A JP 2009505042A JP 2009505042 A JP2009505042 A JP 2009505042A JP 5146444 B2 JP5146444 B2 JP 5146444B2
Authority
JP
Japan
Prior art keywords
data transfer
execution
data
dependency
multiprocessor system
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.)
Expired - Fee Related
Application number
JP2009505042A
Other languages
English (en)
Other versions
JPWO2008114443A1 (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 JPWO2008114443A1 publication Critical patent/JPWO2008114443A1/ja
Application granted granted Critical
Publication of JP5146444B2 publication Critical patent/JP5146444B2/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/54Interprogram communication

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)

Description

本発明は、マルチコア型マイクロプロセッサ等のマルチプロセッサシステム、マルチプロセッサシステムの制御方法、マルチプロセッサシステムにその制御方法を実行させるコンピュータプログラムに関する。
複数のCPUコアを備えたマイクロプロセッサ等のマルチプロセッサシステムが普及しつつある。複数のCPUコアによりプログラムを並列実行することにより、システムの処理性能を飛躍的に向上させることができる。
かかるマルチプロセッサシステムにおけるプログラムの実行を効率化するために、サーバ・クライアント型のコンピュータシステムにおいてクライアントからサーバに手続(関数)呼び出しの形式で処理を依頼する手法である遠隔手続呼び出しを応用することができる。さらに、遠隔手続呼び出しでは、クライアントは、サーバに処理を依頼した後、サーバによる処理の終了を待つ必要があるため、クライアントがサーバの処理の終了を待たずに処理を継続できる手法である非同期の遠隔手続呼び出しを応用することができる。すなわち、図1に示すように、1つのプロセッサから他の複数のプロセッサに対して非同期の手続呼び出しを行うことで、プログラムを並列処理することができる。
図1は、非同期遠隔手続呼び出しを用いたプログラムの並列処理を説明するための図である。手続要求側プロセッサが手続実行側プロセッサに対して指定された手続(関数)の実行を指示する疑似命令として「start」を用い、指定された手続の完了を待つことを指示する疑似命令として「wait」を用いる。図1において、手続要求側プロセッサは、非同期の遠隔手続呼び出しを利用して、(手続実行側)プロセッサ1に手続(関数)Aを実行させ、プロセッサ2に手続Bを実行させ、プロセッサ3に手続Cを実行させている。また、手続要求側プロセッサは自分で手続Dを実行する。これにより、このマルチプロセッサシステムは4つの手続を並列に実行することができる。
非同期の遠隔手続呼び出しを利用して並列処理を実行する場合、待ち順番が問題となる。図2は、非同期の遠隔手続呼び出しを利用して並列処理した場合の待ち順番の問題を説明するための図である。図2において、手続要求側プロセッサは、(手続実行側)プロセッサ1に手続(関数)AとCを実行させ、プロセッサ2に手続BとDを実行させる。このとき、プロセッサ1による手続Aの実行がプロセッサ2による手続Bの実行よりも先に終了すると想定して、手続AとBを起動した後、プロセッサ1による手続Aの終了を待って、プロセッサ1による手続Cを起動し、その後、プロセッサ2による手続Bの終了を待って、プロセッサ2による手続Dを起動するようにプログラムされている。
しかし、実際に各手続を実行したところ、プロセッサ2による手続Bの実行がプロセッサ1による手続Aの実行より先に終了した場合、手続Bが終了しても手続Aが終了するまでプロセッサ2による手続Dは起動できず、プロセッサ2に無駄な待ち時間が生じることとなる。
かかる問題を解決する手段として、図3に示したように、手続実行側プロセッサにおいて実行をキューイングすることができる。キューイングとは、例えば手続実行側プロセッサ1に対して手続要求側プロセッサから予め手続Cの実行を命令しておくが、手続Aの終了を条件として設定しておくことである。手続実行側プロセッサは、手続要求側プロセッサから指定された手続を実行するためのプログラム(手続呼出プログラム)を有し、ここで手続呼び出しの要求をキューイングすることで、手続要求側プロセッサは、例えば手続実行側プロセッサ1に対して、先行する手続Aの完了を待たずに次の手続Cの実行を要求できるようになる。これにより待ち順番の問題が解消し、無駄な待ち時間を削減することができる。
なお、いくつかの実行ユニットと、それら実行ユニットの少なくとも1つに処理を発行するようにスケジューラを含むマイクロプロセッサにおいて、投機的実行であるかを判断するための情報をスケジューラがオペランド毎に付加する技術が提案されている(例えば、特許文献1参照)。
また、プロセッサ毎にキャッシュメモリを有するマルチプロセッサシステムにおいて主記憶とのトランザクションを減少させるメモリシステム制御装置が提案されている(例えば、特許文献2参照)。
特表2005−537567号公報 特開2006−48406号公報
非同期の遠隔手続呼び出しを利用したマルチプロセッサシステムにおいて、図4のような制御構造を有するプログラムを実行する場合を考える。このような制御構造は、次のようなプログラムに対応している。
Y=A();
If (k) {
Y=B()
}
Z=C(Y)
ここで、条件kが成立した場合、プログラムブロックCにおいて、プログラムブロックBの処理結果B()が使用される。一方、条件kが成立しない場合、プログラムブロックCにおいて、プログラムブロックAの処理結果A()がそのまま使用される。こうして、処理の制御の流れが確定する。
上記のプログラムでは、プログラムブロックAにおいて変数Yに値A()を書き込む。条件分岐kがあり、条件が成立した場合、ブロックBにおいて変数Yの値が別の値B()で上書きされる。条件が成立しない場合、変数Yの値はそのままプログラムブロックAにおいて書き込まれた値のままとなる。この変数Yの値は、プログラムブロックCで使用される。
マルチプロセッサシステムでは、プログラムの各ブロックを複数のプロセッサに分散して実行するため、プログラムブロックA、B、Cが異なるプロセッサにより実行されると仮定する。この場合、各プログラムブロックの処理が終了したら、その処理結果を使用するプログラムブロックに処理結果をデータ転送することが必要となるが、プログラムブロックAとプログラムブロックBとの間に依存関係がなければ、この2つのプログラムブロックが実行される順序は特に制約されず、どちらのプログラムブロックの処理が先に終了するか分からない。このため、何の制約もせずにプログラムブロックの処理が終わり次第データ転送をするようにしたのでは、条件kが成立しプログラムブロックBの結果をプログラムブロックCで使用する場合であっても、プログラムブロックAが後に終了した場合、プログラムブロックCは、プログラムブロックBの処理結果を使用すべきであるにもかかわらず、プログラムブロックAの処理結果を使用してしまうこととなる。
この場合に生じる問題を説明するため、さらに図5を参照する。図5は、データ転送時に生じる問題を説明するための図である。図5は、手続実行側プロセッサ1が関数(プログラムブロック)Aを実行し、手続実行側プロセッサ2が関数Bを実行し、手続実行側プロセッサ3が関数Cを実行することを示している。
手続要求側プロセッサは、図5の左端に示したプログラムに従って、手続実行側プロセッサ1、2、3に各関数(プログラムブロック)の実行を命令する。なお、ここでは、説明を容易にするため、次のような疑似命令を使用してプログラムを表している。例えば、「start A()」は、手続実行側プロセッサ1に実行させる関数Aの実行登録を指示する疑似命令である。「start A→C'」は、関数Aの処理結果の関数Cへのデータ転送を実行登録することを指示する疑似命令である。「dep(A→C',A)」は、関数Aの処理結果の関数Cへのデータ転送が、関数Aの処理が終了してから実行されるべきことを示す依存関係を指示する疑似命令である。「wait(C')」は、プログラムブロックCへのデータ転送の完了を待つことを指示する疑似命令である。
手続要求側プロセッサのプログラムに対応して、手続実行側プロセッサ1、2、3の手続呼び出しプログラムは、図5に示したように実行キューを登録する。すなわち、手続要求側プロセッサの「start A()」に対応して、プロセッサ1の実行キュー(A; NULL)が生じる。ここで、図5では、この実行キュー(A; NULL)を、2段ボックスの上段のボックスに実行されるべき関数Aを入れて表し、下段のボックスにその依存関係、すなわち前提として完了しているべき処理NULLを表している。ここで、NULLは、特に依存関係はないことを示す。同様に、「start B()」に対応して、プロセッサ2の実行キュー(B; NULL)が生じ、「wait(C')」と「start C()」に対応して、プロセッサ3の実行キュー(C; C')が生じる。ここで、プロセッサ3実行キューの下段ボックスのC'は、プログラムブロックCに対するデータ転送が完了しているべきとの依存関係を示している。同様に、「start A→C'」と「dep(A→C', A)」に対応して、転送1実行キュー(A→C'; A)が生じる。「start B→C'」と「dep(B→C', B)」に対応して、転送2実行キュー(B→C'; B)が生じる。ここで、図3では、各手続実行側プロセッサについて手続呼び出しプログラムを示したが、図5では、図示を容易にするため、各手続実行側プロセッサの手続呼び出しプログラムを1つにまとめて示している点に注意を要する。
次に、手続実行側プロセッサの動作を説明する。手続実行側プロセッサ1は、手続呼び出しプログラムのプロセッサ1実行キューに従って、関数Aを実行する。転送エンジン1は、手続呼び出しプログラムの転送1実行キューに従って、手続実行側プロセッサ1により関数Aの処理が完了すると、Aの処理結果をAから関数Cに転送する。一方、手続実行側プロセッサ2は、分岐条件kが成立すると、手続呼び出しプログラムのプロセッサ2実行キューに従って、関数Bを実行する。転送エンジン2は、手続呼び出しプログラムの転送2実行キューに従って、手続実行側プロセッサ2によりBの処理が完了すると、Bの処理結果をBから関数Cに転送する。
この時、転送エンジン1によるAの処理結果のCへの転送が、転送エンジン2によるBの処理結果のCへの転送が完了した後に完了した場合、分岐条件kが成立しているにもかかわらず、関数Cにおいて、Aの処理結果が使われるという問題が生じる。この状況を、転送エンジン2から手続実行側プロセッサ3への矢印に×印を付すことにより示した。
かかる問題を解消するため、図6に示したように、先行するデータ転送(この場合、A→C')が終了してから、後続のデータ転送(この場合、B→C')を開始すれば、関数Cは確実にAの処理結果を使用することができる。これは、手続要求側プロセッサの手続要求プログラムにおいて、「start B→C'」の依存関係として、「dep(B→C', B)」に「dep(B→C', A→C')」を追加することにより実現できる。
この場合、まず、関数Aが終了したら、AからCにデータ転送を行う。分岐条件kの成否が確定したところで、Cにおいて使用する処理結果がAのものかBのものかが確定する。分岐条件kが成立しなければ、Aの処理結果を使うので、AからCへのデータ転送を継続し、それが完了したら、関数Cを実行する。分岐条件kが成立した場合、Bの処理結果を使い、Aの処理結果は使われないので、Bが終了したところで、AからCへのデータ転送がまだ終了していなければ、その終了を待ち、それが終了してから、BからCへのデータ転送を開始する。BからCへのデータ転送が終了してから、Cを実行する。
しかし、この場合、分岐条件kが成立してBの処理結果が使われるとき、Bの処理が終了していても、AからCへの転送が終了していない場合には、BからCへのデータ転送が行えず、結果として関数Cの実行が遅れるという問題がある。
図5を参照して説明した問題を解消するもう1つの方法は、図7に示したように、Cで使う処理結果がAかBか確定してから、それに応じて処理結果のデータ転送A→C'またはB→C'を開始すればよい。これは、手続要求側プロセッサの手続要求プログラムにおいて、分岐条件kが成立した場合にのみ「start A→C'; dep (A→C', A)」を実行することにより実現することができる。
この場合、Aが終了してもAからCへのデータ転送を開始しない。そして、分岐条件kの成否が確定し、Cで使う処理結果がAかBか確定するまで待つ。分岐条件kが成立しない場合、Aの処理結果を使うことが確定するので、AからCへのデータ転送を開始する。一方、分岐条件kが成立した場合、Bの処理結果を使うことが確定するので、AからCへのデータ転送は行わず、BからCへのデータ転送のみを開始する。
しかし、この場合、分岐条件kが成立せずBの処理結果が使われるとき、Aが終了していても、AからCへのデータ転送が行われず、分岐条件kの成否か確定するまで待つので、結果としてCの実行が遅れるという問題がある。
本発明の目的の1つは、プログラムに条件分岐が含まれる場合であっても、データ転送に係わる待ち時間を減少し、プログラムの実行時間を短縮することができるマルチプロセッサシステム、マルチプロセッサシステムの制御方法、この制御方法を実現するマルチプロセッサシステムのためのコンピュータプログラム、および、このコンピュータプログラムを記憶したコンピュータ読み取り可能記憶媒体に関する。
本発明の一態様によるマルチプロセッサシステムは、複数のプロセッサと、前記複数のプロセッサによる処理及び前記複数のプロセッサ間のデータ転送を制御する実行制御部と、前記データ転送の状態を示すデータ依存関係情報を含む内部データ記憶部と、を有し、前記実行制御部は、先行するデータ転送が実行登録された後に、前記プロセッサによる前記処理に対する制御の流れが確定し、前記先行するデータ転送と同一の転送先への別のデータ転送が必要となったとき、前記データ依存関係情報に基づき前記先行するデータ転送をキャンセルすることを特徴とする。
本発明の他の態様によると、複数のプロセッサと、前記複数のプロセッサ間のデータ転送の状態を示すデータ依存関係情報を含む内部データ記憶部とを有するマルチプロセッサシステムの制御方法であって、先行するデータ転送を実行登録し、前記複数のプロセッサによる処理に対する制御の流れが確定したか判定し、前記制御の流れが確定し、前記先行するデータ転送と同一の転送先への別のデータ転送が必要となったとき、前記データ依存関係情報に基づき前記先行するデータ転送をキャンセルすることを特徴とする。
本発明のさらに他の態様によると、複数のプロセッサと、前記複数のプロセッサ間のデータ転送の状態を示すデータ依存関係情報を含む内部データ記憶部とを有するマルチプロセッサシステムを制御するコンピュータプログラムであって、前記複数のプロセッサのうちの少なくとも1つのプロセッサに、先行するデータ転送を実行登録し、前記複数のプロセッサによる処理に対する制御の流れが確定したか判定し、前記制御の流れが確定し、前記先行するデータ転送と同一の転送先への別のデータ転送が必要となったとき、前記データ依存関係情報に基づき前記先行するデータ転送をキャンセルすることを、実行させることを特徴とする。
命令の依存関係に基づいてデータ転送を制御するので、処理に対する制御の流れが変わる場合であっても、データ転送に係わる待ち時間を減少し、プログラムの実行時間を短縮することができる。
非同期手続呼び出しを用いた並列処理を示す図である。 待ち順番の問題を示す図である。 待ち順番の問題のキューイングによる解決を示す図である。 マルチプロセッサシステムにより実行される想定プログラムを示す図である。 条件分岐がある場合の問題点を示す図である。 従来の解決方法による問題点を示す図である。 従来の解決方法による別の問題点を示す図である。 本発明の一実施形態による集中型マルチプロセッサシステムを示す図である。 本発明による先行するデータ転送のキャンセルを示す図である。 従来のマルチプロセッサシステムの構成を示すブロック図である。 本発明の第1の実施形態によるマルチプロセッサシステムの構成を示すブロック図である。 図12A〜Gは、本発明の第1の実施形態によるマルチプロセッサシステムの動作例1を示す図である。 本発明の第1の実施形態によるマルチプロセッサシステムの動作例1を時系列で示す図である。 図14A〜Dは、本発明の第1の実施形態によるマルチプロセッサシステムの動作例2を示す図である。 本発明の第1の実施形態によるマルチプロセッサシステムの動作例2を時系列で示す図である。 図16A〜Eは、本発明の第1の実施形態によるマルチプロセッサシステムの動作例3を示す図である。 本発明の第1の実施形態によるマルチプロセッサシステムの動作例3を時系列で示す図である。 図18A〜Cは、本発明の第1の実施形態によるマルチプロセッサシステムの動作を示す動作フロー図である。 本発明の第1の実施形態によるマルチプロセッサシステムの、分岐条件が成立しない場合の動作を時系列で示す図である。 本発明の第2の実施形態によるマルチプロセッサシステムの構成を示すブロック図である。 図21A〜Bは、本発明の第2の実施形態によるマルチプロセッサシステムの動作を示す動作フロー図である。 本発明の第2の実施形態によるマルチプロセッサシステムの動作例を時系列で示す図である。 本発明の第3の実施形態によるマルチプロセッサシステムの動作を示す動作フロー図である。 本発明の第3の実施形態によるマルチプロセッサシステムの動作例を時系列で示す図である。 本発明の第4の実施形態によるマルチプロセッサシステムの構成を示すブロック図である。 本発明の他の実施形態による分散型マルチプロセッサシステムを示す図である。
符号の説明
100 集中型マルチプロセッサシステム
101、102、103 プロセッサ
111 メモリ
121、122 データ転送装置
150 システムバス
200 分散型マルチプロセッサシステム
201、202、203 プロセッサ
211、212、213 メモリ
221、222、223 データ転送装置
231、232、233 通信装置
251、252、253 システムバス
300 マルチプロセッサシステム
310 (プログラム)メモリ
320 実行制御部
321 実行登録部
322 依存関係チェック・実行開始部
323 実行完了部
330 内部データ
331 実行待ち情報
332 実行パラメータ情報
340 データ転送装置
350 プロセッサ
400、500、600 マルチプロセッサシステム
410、510、610 (プログラム)メモリ
420、520、620 実行制御部
421、521、621 実行登録部
422、522、622 依存関係チェック・実行開始部
423、523、623 実行完了部
430、530、630 内部データ
431、531、631 実行待ち情報
432、532、632 実行パラメータ情報
433、533、633 データ依存関係情報
440、540 データ転送装置
450、550、650 プロセッサ
525 キャンセル制御部
まず、本発明によるマルチプロセッサシステムのハードウェア面を説明する。図8は、本発明の並列プログラム実行装置の一実施形態のハードウェアである、集中型マルチプロセッサシステムを示すブロック図である。図8に示した集中型マルチプロセッサシステム100は、複数のプロセッサ101、102、103等、メモリ111等、データ転送装置121、122等を含み、これらの構成要素は、共通のシステムバス150を介して命令、アドレス情報、データをやりとりすることができるように構成されている。各プロセッサ101、102、103は、与えられたプログラムを実行して、例えばメモリ111から読み出したデータを処理して他のプロセッサ101、102、103に転送したり、メモリ111に書き込んだりすることができる。メモリ111は、プロセッサ101、102、103等が実行するプログラムを記憶し、またプロセッサ101、102、103等が処理するデータやその処理結果のデータを記憶する。データ転送装置121、122等は、集中型マルチプロセッサシステム100のプロセッサ101、102、103等の間、またはそれらが管理するメモリ111等の記憶領域の間におけるデータ転送を制御する。データ転送装置は、例えばDMAコントローラである。
次に、本発明のマルチプロセッサシステムについて説明する。図9は、本発明の一実施形態による、マルチプロセッサシステムの制御動作を説明するための図である。図9には、左から順に、手続要求側プロセッサ(における手続き要求プログラム)、(この手続き要求プログラムに対応する)手続き呼び出しプログラム、この手続き呼び出しプログラムに対応する手続実行側プロセッサ1、2、3のそれぞれの動作を示している。また、手続実行側プロセッサ1と2の動作の間に、転送エンジン1によるデータ転送が示され、さらに、手続実行側プロセッサ2と3の動作の間に、転送エンジン2によるデータ転送が示されている。手続実行側プロセッサ1、2、3は、例えば図8に示したプロセッサ101、102、103にそれぞれ対応している。また、転送エンジン1、2は、例えば図8に示したデータ転送装置121、122にそれぞれ対応している。また、手続実行側プロセッサ1、2、3と転送エンジン1、2の動作は、時間が図の上から下に進行するように描かれている。手続要求側プロセッサは、手続実行側プロセッサであるプロセッサ101、102、103のいずれかであってもよいし、マルチプロセッサシステム100に設けられたその他のプロセッサ(図8には図示せず)であってもよい。
手続要求側プロセッサのプログラムステップstart A()に対応して、手続呼び出しプログラムのプロセッサ1実行キュー(A; NULL)が生成される。ここで、NULLは、手続(関数)Aの実行に伴う依存関係はないことを意味している。このプロセッサ1実行キューに従って、手続実行側プロセッサ1は関数A()を実行する。なお、図9では、プロセッサ1実行キュー(A; NULL)は、2階建てのブロックとして示され、上段に実行すべき処理(この場合はプログラムブロックA)が示され、下段にその処理の依存関係(この場合はNULL)が示されている。その他の実行キューについても同様である。
次に、手続要求側プロセッサのプログラムステップstart A→C'とそれに続くdep(A→C', A)に対応して、手続呼び出しプログラムの転送1実行キュー(A→C'; A)が生成される。これは、Aの実行が終了した後、関数A()を実行したプロセッサ1からそのデータを使用する関数C()を実行するプロセッサ3にデータ転送A→Cを行うべきことを示している。この転送1実行キューに従って、手続実行側プロセッサ1による関数A()の実行が終了すると、転送エンジン1は、プロセッサ1によるA()の処理結果を、関数C()を使用するプロセッサ3に転送するデータ転送を実行する。なお、データ転送は、例えば、プロセッサ1、3にキャッシュメモリ等が備えられている場合、そのキャッシュメモリ間で行われてもよく、プロセッサ1、3に割り当てられているメモリ111(図8参照)の記憶領域間で行われてもよい。あるいは、キャッシュメモリとメモリ111の記憶領域との間で行われてもよい。また、関数A()を実行したプロセッサ1とそのデータを使用して関数C()を実行するプロセッサ3の間のデータ転送を、単に関数A()とC()の間のデータ転送と言うこともあり、A()→C()及びA→C'等の記号で示すこともある。また、関数C()を実行するプロセッサ3へのデータ転送を単にC'と示すこともある。
次に、If(k)文の中を説明する。分岐条件kが成立すると、プログラムステップcancel(A→C')により、転送エンジン1による関数A()の処理結果の関数C()へのデータ転送をキャンセルする。
次に、プログラムステップstart B()に対応して、手続呼び出しプログラムのプロセッサ2実行キュー(B; NULL)が生成される。これにより、分岐条件kが成立すると、手続実行側プロセッサ2は、プロセッサ2実行キューに従って、Bを実行する。
start B→C'とそれに続くdep(B→C'; B)に対応して、手続呼び出しプログラムの転送2実行キュー(B→C'; B, A→C')が生成される。転送エンジン2は、手続実行側プロセッサ2によるBの実行が終了し、かつ転送エンジン1によるデータ転送A→C'が終了すると、データ転送B→C'を実行する。ここで、依存条件A→C'は、手続要求側プロセッサの手続要求プログラムでは図示を省略した。
If(k)文の後を説明する。手続要求側プロセッサのwait(C')とそれに続くstart C()に対応して、手続呼び出しプログラムのプロセッサ3実行キュー(C; C')が生成される。手続実行側プロセッサ3は、データ転送C'が終了すると、関数C()を実行する。
このように、分岐条件kの成否が確定した時にデータ転送A→C'をキャンセルすることができるので、分岐条件kの成否の確定を待たずに転送エンジン1によるデータ転送A→C'を実行できる。その結果、図7を参照して説明した、分岐条件kの成否が確定するまでデータ転送A→C'の実行を待たねばならないという問題を解消することができる。また、データ転送A→C'を開始した後に分岐条件kが成立した時には、データ転送A→C'がキャンセルされるので、手続実行側プロセッサ2による関数B()の実行が終了しだい転送エンジン2によるデータ転送B→C'を実行することができる。その結果、図6を参照して説明した転送エンジン1によるデータ転送A→C'の終了を待たねばならないという問題も解消することができる。ここで、データ転送のキャンセルとは、データ転送の実行登録の削除と実行中のデータ転送の中止の両方を含むものとする。
次に、図5、6、7を参照して説明した従来のマルチプロセッサシステムの構成を説明し、その後に本発明によるマルチプロセッサシステムの構成を説明する。図10は、従来のマルチプロセッサシステム300を示す図である。図10には、(手続要求側プロセッサの)プログラム310を記憶するメモリ、実行制御部320、内部データ330、データ転送装置340、プロセッサ350が示されている。実行制御部320は、実行登録部321、相互関係チェック・実行開始部322、実行完了部323を有する。また、内部データは、実行待ち情報331と実行パラメータ情報332とを有する。
図10において、次のようなプログラムを実行するものと仮定する:
Y=A();
Z=C(Y);
このプログラムを手続要求側プロセッサのプログラム(疑似コード、以下同様である)として記述したものが、プログラム310である。なお、プログラム310では、手続の依存関係は省略している。
プログラム310に従って、実行制御部320の実行登録部321は、内部データ330の実行待ち情報331と実行パラメータ情報332とを実行登録する。実行待ち情報331は、手続(関数、データ転送等、以下同様である)とその依存関係情報が実行単位ごとに登録されている。図10では、実行待ち情報331の上段に手続を示し、下段にその依存関係情報を示した。また、実行依存情報には、下で説明する実行パラメータ情報332へのポインタ(図10では、実行待ち情報331から実行パラメータ情報への矢印で示した)を有している。ここでは、手続A()が依存関係情報なし(NULL)として登録されている。また、手続move Y from A(関数Aの処理結果の変数Yへのデータ転送、すなわちA→C')がその依存関係情報A()とともに登録されている。また、手続C()がその依存関係情報move Y from A(A→C')とともに登録されている。さらに、手続move Z from Cがその依存関係情報C()とともに登録されている。
実行パラメータ情報332にはデータ転送の実行に必要なパラメータ(転送先・転送元アドレス、転送データサイズ等)が、データ転送の依頼毎に記憶される。ここでは、関数Aの結果を変数Yに転送するmove Y from Aに関するパラメータと、関数Cの結果を変数Zに転送するmove Z from Cに関するパラメータとが記憶されている。
実行制御部320の依存関係チェック・実行開始部322は、プログラム310のdispatch ()命令により、各手続について実行待ち情報331の依存関係をチェックして、各手続の依存関係が満たされているかどうか判断して、実行可能な手続を見つけ、その手続の実行をデータ転送装置340またはプロセッサ350に依頼する。この処理がデータ転送である場合、依存関係チェック・実行開始部323は、内部データ330の実行パラメータ情報332として記憶されているパラメータ情報を参照して、そのデータ転送処理に係わるパラメータをデータ転送装置340に設定する。処理が終了すると、その処理を実行したデータ転送装置340またはプロセッサ350は、処理が終了したことを実行完了部323に通知する。その通知を受けて、実行完了部323は、実行待ち情報331と実行パラメータ情報を更新する。
[第1の実施形態]
図11は、本発明の第1の実施形態によるマルチプロセッサシステム400を示す図である。マルチプロセッサシステム400は、図10に示した従来のマルチプロセッサシステム300と同様に、プログラム410を記憶するメモリ、実行制御部420、内部データ430、データ転送装置440、プロセッサ450を有している。実行制御部420は、図10の実行制御部と同様に、実行登録部421、依存関係チェック・実行開始部422、実行完了部423を有しているが、実行登録部421は、実行制御及びデータ依存関係更新の点で、図10に示した実行登録部321と異なる。依存関係チェック・実行開始部422は、依存関係更新の点で、図10に示した依存関係チェック・実行開始部322と異なる。また、実行完了部423も、依存関係更新の点で、図10に示した実行完了部323と異なる。
内部データ430は、図10の内部データと同様に、実行待ち情報431と実行パラメータ情報432とを有しており、これらは、図10に示した実行待ち情報331、実行パラメータ情報332と基本的に同じである。マルチプロセッサシステム400は、これらに加えて、データ依存関係情報433を有する。このデータ依存関係情報433は、未登録、未実行、実行中、実行完了のデータ転送の状態をデータ転送先のデータ毎に示している。同一の転送先データ(ここではデータY)については、同一の情報が参照される。また、データ依存関係情報433は、実行パラメータ情報432へのポインタを有している(データ依存関係情報433から実行パラメータ情報432への矢印で示した)。さらに、データ依存関係情報433は、(未実行、実行完了のものも含めて)実行待ち情報431のデータ転送に係わる依頼情報へのポインタを有する(データ依存関係情報433から実行待ち情報431への矢印で示した)。
実行登録部421は、データ転送登録時に、データ依存関係情報433を参照して、以下の動作をする。データ依存関係情報433として記録された状態が「実行中」の場合、実行パラメータ情報を参照して、データ転送チャネルを特定し、実行しているデータ転送を中止して、そのデータ転送に係わる実行パラメータ情報を削除する。一方、データ依存関係情報433として記録された状態が「未実行」の場合、そのデータ転送に係わる実行登録をキャンセルして、実行パラメータ情報を削除する。その後、いずれの場合にも、実行パラメータ情報を設定して、実行登録部421は、データ依存関係情報433として記録されている状態を「未実行」に設定する。
依存関係チェック・実行開始部422は、データ転送開始時にそのデータ転送に係わる実行登録を削除し、そのデータ転送に係わるデータ依存関係情報433の状態を「実行中」に設定する。そして、データ転送装置440にデータ転送を依頼する。
実行完了部424は、データ転送完了時に、実行パラメータ情報を削除し、データ依存関係情報の状態を「実行完了」に設定する。
これらの実行制御部420と内部データ430とを有することにより、本発明の一実施形態であるマルチプロセッサシステム400は、先行するデータ転送をキャンセルすることができるので、プログラムに条件分岐が含まれる場合であっても、その分岐条件の成否にかかわらず、データ転送に係わる待ち時間をなくし、または少なくして、プログラムの実行時間を短縮することができる。
以下、実行例を参照して、本発明の一実施形態によるマルチプロセッサシステム400の動作をさらに詳しく説明する。
まず、実行例1は、先行するデータ転送の実行が完了した後に分岐条件kの成立が確定し、後続のデータ転送を実行する場合である。この場合は、分岐条件の成立時に先行するデータ転送は完了しているので、特に先行するデータ転送をキャンセルすることなく、後続のデータ転送を実行することができる。
次に、実行例2は、先行するデータ転送が登録されているが未実行である時に分岐条件kの成立が確定し、後続のデータ転送を実行する場合である。この場合は、分岐条件の成立時に、先行するデータ転送の実行登録を削除する。
最後に、実行例3は、先行するデータ転送が実行中である時に分岐条件kの成立が確定し、後続のデータ転送を実行する場合である。この場合は、分岐条件の成立時に、先行するデータ転送を中止する必要がある。
[実行例1]
実行例1は、先行するデータ転送が実行完了後に、後続のデータ転送を登録する場合である。
図12Aは、本発明の一実施形態によるマルチプロセッサシステム400の動作を説明するための、実行例1の実行開始前の状態を示す図である。以下、実行例1−3を通して、マルチプロセッサシステム400において次のプログラムを例として説明する。
Y=A();
If (k) {
Y=B();
}
Z=C(Y);
これを実行制御プログラムで表したものがプログラム410である。プログラムの実行開始前には、内部データ430の実行待ち情報431、実行パラメータ情報432には情報が登録されておらず、データ依存関係情報433も「未登録」状態となっている。
図12Bは、実行例1において、プログラム410のプログラムステップstart A(); move Y from A;が実行登録された状態を示す図である。ここで、プログラムステップstart A();は、関数A()を実行待ち情報431に実行登録するための命令である。プログラムステップmove Y from A;は、関数A()の実行結果の変数Yとしてのデータ転送を実行待ち情報431に実行登録するとともに、実行パラメータ情報432にパラメータ登録するための命令である。実行登録部421は、これらのプログラムステップを読み、実行待ち情報431と実行パラメータ情報432に登録をする。ここで、move Y from Aはデータ転送の要求であるが、まだ実行されていないから、実行登録部421は、プログラムステップmove Y from Aに係わる実行パラメータ情報を設定し、データ依存関係情報433の状態を「未実行」に設定する。
次のプログラムステップdispatch ();は、依存関係チェック・実行開始部422に対して、実行登録された処理の依存関係情報をチェックして、依存関係が満たされたものを実行することを要求する命令である。
まず、依存関係を持たない関数A()の実行が開始されると、関数A()の実行待ち情報は削除される。関数A()の実行が完了すると、依存関係チェック・実行開始部422は、実行待ち情報421の依存関係をチェックして、手続move Y from Aの依存関係が満たされているかどうか判断し、満たされていれば、次にデータ転送move Y from Aが実行され、実行待ち情報431のmove Y from Aは削除される(図12C参照)。この時、依存関係チェック・実行開始部422は、実行待ち情報431を削除するとともに、データYのデータ依存関係情報433の状態を「実行中」に設定する。実行パラメータ情報432はデータ転送move Y from Aが完了するか、中止されるまで残っている。そして、依存関係チェック・実行開始部422は、データ転送装置440にデータ転送を実行させる。
データ転送装置440によるデータ転送の実行が完了すると(図12D参照)、実行完了部423は、データ転送装置440からデータ転送が完了したとの通知を受け、実行(データ転送)パラメータ情報を削除する。また、データ依存関係情報433の状態を「実行完了」に設定する。
次に、分岐条件kが成立すると、プログラム410のstart B(); move Y from B;が実行待ち情報431に登録される(図12E参照)。move Y from Bはデータ転送の要求であるから、実行登録部421は、データ依存関係情報433を参照する。登録前、データ依存関係情報433の状態は、「実行完了」となっている(図12Dに示したデータ依存関係情報433参照)。そこで、実行登録部421は、実行パラメータ情報を設定し、データ依存関係情報433の状態を「未実行」に設定する(図12Eに示したデータ依存関係情報433を参照)。次の命令dispatch ()に基づき、依存関係チェック・実行開始部422は、実行待ち情報431の依存関係情報をチェックして、実行できる処理(この場合は関数B())を実行する。
関数B()の実行が完了すると(図12F参照)、依存関係チェック・実行開始部422は、データ転送move Y from Bの依存関係が満たされたと判断する。その判断に基づき、依存関係チェック・実行開始部422は、データ転送move Y from Bの実行登録を削除し、データYに係わるデータ依存関係情報433の状態を「実行中」に設定し、データ転送装置440にデータ転送を実行させる。データ転送move Y from Bに係わる実行パラメータ情報432は残っている。
データ転送装置440は、データ転送が完了すると(図12G参照)、それを実行完了部423に通知する。この通知を受けて、実行完了部423は、実行(データ転送)パラメータ情報432を削除し、データ依存関係情報433の状態を「実行完了」に設定する。
以上のプロセスにより、データYに対する関数B()の実行結果のデータ転送が完了する。それ以降のプログラムステップwait Y; start C(); move Z from C; dispatch ()が同様に実行されて、プログラム410の実行が完了する。
図13は、以上の並列実行制御部(実行制御部420と内部データ430、以下同様)における制御依存関係、(データYの)データ依存関係、及び各プロセッサとデータ転送装置の動作を時系列でまとめたものである。図13においては、時間は図の上から下に向かって経過するように示している。プログラムのプログラムステップstart A(); move Y from Aが実行登録されると、関数A()の実行と、その実行が完了してからのデータ転送A→Cの実行とが、制御依存関係(実行待ち情報)として登録される。dispatch ()命令により、依存関係が満たされたものから実行される。プロセッサ1は、関数A()の実行開始を指示されると、A()を実行する。Yデータ依存関係は、データ転送A→Cが「未実行」であることを示している。プロセッサ1が関数A()の実行を完了すると、A()が完了してからデータ転送A→Cを実行するとの制御依存関係が満たされる。これにより、データ転送装置がデータ転送A→Cの実行を開始する。Yデータ依存関係は、データ転送A→Cの状態が実行中であることを示している。データ転送装置によるデータ転送A→Cが完了すると、Yデータ依存関係は、データ転送A→Cが実行完了したことを示す。
次に、分岐条件kが成立して、プログラム中のプログラムステップstart B(); move Y from Bが実行登録されると、関数B()が実行されてからデータ転送B→Cが実行されるという制御依存関係が登録される。dispatch ()命令により、依存関係が満たされたものから実行される。プロセッサ2は、手続B()の実行開始を指示されると、手続B()を実行する。Yデータ依存関係の状態は、データ転送B→Cが「未実行」であることを示す。プロセッサ2が関数B()の実行を完了すると、B()が完了してからデータ転送B→Cを実行するとの制御依存関係が満たされる。これにより、データ転送装置がデータ転送B→Cの実行を開始する。Yデータ依存関係は、データ転送B→Cの状態は実行中であることを示している。データ転送装置によるデータ転送B→Cが完了すると、Yデータ依存関係がデータ転送B→Cが完了したことを示す。
次に、プログラムステップwait Yに従ってデータYへのデータ転送が終わるまで待ち、プログラム中のプログラムステップstart C(); move Z from C;が実行登録されると、関数(手続)C()が制御依存関係として登録される。dispatch ()命令により、依存関係が満たされたものから実行される。プロセッサ2は、手続C()の実行開始を指示されると、手続C()を実行する。ここで処理されるプログラムステップmove Z from Cは、データZに関するものであるから、Yデータ依存関係には何も影響がなく、データ転送B→Cが実行完了したことを引き続き示していることに注意を要する。
このように、実行例1においては、先行するデータ転送(move Y from A)が実行完了後に後続のデータ転送(move Y from B)が登録されるため、特に先行するデータ転送(move Y from A)をキャンセルする必要はないことが分かる。
[実行例2]
実行例2は、先行するデータ転送が未実行のときに、後続のデータ転送を登録する場合である。初期状態は、実行例1について図12Aを参照して説明した状態と同じである。図14Aは、実行例2において、プログラム410のstart A(); move Y from Aが実行登録された状態を示す図である。実行登録部421は、該当するプログラムステップを読み、実行待ち情報431と実行パラメータ情報432に登録をする。ここで、move Y from Aはデータ転送の要求であるが、これ以前に登録されている実行待ち情報421はないから、実行登録部421は、プログラムステップmove Y from Aに対応する実行パラメータ情報を設定し、データ依存関係情報433の状態を「未実行」に設定する。dispatch ()命令により、依存関係が満たされたものから実行される。
まず、依存関係を持たない関数(手続)A()が実行される。A()の実行が開始されると、A()は実行待ち情報431から削除される。A()を実行中に分岐条件kが成立すると、分岐条件成立時のプログラムステップstart B(); move Y from Bが実行待ち情報として登録される(図14B参照)。この後続のデータ転送move Y from Bを登録する時、実行登録部421は、データ依存関係情報433を参照して、先行するデータ転送move Y from Aに係わる状態が「未実行」であるから、実行待ち情報を参照して、先行するデータ転送(この場合move Y from A)の登録を削除(キャンセル)し、その実行パラメータ情報を削除する。そして、後続のデータ転送(この場合move Y from B)の実行パラメータ情報432を設定し、データ依存関係情報433を「未実行」に設定する(図14C参照)。ここで、データ依存関係情報433の実行待ち情報431及び実行パラメータ情報432へのポインタは、move Y from Aからmove Y from Bに置き換えられる。dispatch ()命令により、依存関係が満たされたものから実行される。
依存関係チェック・実行開始部422は、関数(手続)B()が実行可能であると判断し、プロセッサ450にB()の実行を依頼する。B()が完了すると、実行待ち情報431に登録されている手続move Y from Bの依存関係(B()の実行完了)が満たされる。依存関係チェック・実行開始部422は手続move Y from Bが実行可能であると判断して、その実行登録を削除し、データ依存関係情報433を「実行中」に設定する。そして、データ転送装置440にデータ転送move Y from Bを実行させる(図14D参照)。
データ転送装置440によるデータ転送move Y from Bが完了すると、その通知を受けた実行完了部423は、データ転送move Y from Bに係わる実行パラメータ情報432を削除して、データ依存関係情報433の状態を「実行完了」に設定する(図示せず)。その後のプログラムステップも同様に進行する。
図15は、以上の並列実行制御部における制御依存関係、(データYの)Yデータ依存関係、及び各プロセッサとデータ転送装置の動作を時系列でまとめたものである。図15においては、時間は図の上から下に向かって経過するように示している。プログラムのプログラムステップstart A(); move Y from Aの各プログラムステップが実行登録されると、A()の実行と、その実行が完了してからのデータ転送A→Cの実行とが制御依存関係(実行待ち情報)として登録される。プロセッサ1は、A()の実行開始を指示されると、A()を実行する。Yデータ依存関係は、データ転送A→Cが「未実行」であることを示している。プロセッサ1が手続(関数)A()の実行を完了する前に分岐条件kの成立が確定すると、プログラムのstart B(); move Y from Bの各プログラムステップが実行登録される。この時点で、データ転送move Y from Aは、制御依存関係から削除される。プロセッサ2はB()の実行を開始する。プロセッサ2によるB()の実行が完了すると、データ転送move Y from Bに係わる依存関係B()が満たされるので、データ転送装置によりデータ転送B→Cが実行される。この時点で、制御依存関係は削除され、Yデータ依存関係は、データ転送B→Cが実行中であることを示す。プログラムステップwait Yに従ってデータ転送装置によるデータ転送B→Cが完了して、データYへのデータ転送が終わると、プログラム中のプログラムステップstart C(); move Z from Cが実行登録される。手続(関数)C()が制御依存関係として登録される。プロセッサ2は、手続C()の実行開始を指示されると、手続C()を実行する。ここで処理されるプログラムステップmove Z from Cは、データZに関するものであるから、Yデータ依存関係には何も影響がなく、データ転送B→Cが実行完了したことを引き続き示していることに注意を要する。
このように、実行例2においては、先行するデータ転送(move Y from A)が実行前に後続のデータ転送(move Y from B)が登録されるため、特に先行するデータ転送(move Y from A)の実行登録が削除(キャンセル)され、後続のデータ転送が遅れることはない。
[実行例3]
実行例3は、先行するデータ転送が実行中のときに、後続のデータ転送を登録する場合である。初期状態は、実行例1について図12Aを参照して説明した状態と同じである。図16Aは、実行例3において、プログラム410のstart A(); move Y from Aが実行登録され、A()の実行が完了し、A→Cが実行されている時の状態を示す図である。実行待ち情報431のデータ転送A→Cは削除され、データ依存関係情報433は「実行中」に設定されている。データ転送装置440はデータ転送A→Cを実行中である。
データ転送A→Cを実行中に分岐条件kが成立すると、分岐条件成立時のプログラムステップstart B(); move Y from Bが実行待ち情報として登録される(図16B参照)。この後続のデータ転送move Y from Bを登録する時、実行登録部421は、データ依存関係情報433を参照して、その状態が「実行中」であるから、実行(データ転送)パラメータ情報を参照して、実行チャネル(この場合A→C)を特定して実行しているデータ転送を中止(キャンセル)する(図16C参照)。図中、データ依存関係情報433、実行パラメータ情報432、データ転送装置440を結ぶ矢印は、実行登録部421によるデータ参照の順序を表している。次いで、実行パラメータ情報(この場合、move Y from A)を削除する。そして、後続のデータ転送(この場合move Y from B)の実行パラメータ情報432を設定し、データ依存関係情報433を「未実行」に設定する(図16D参照)。ここで、データ依存関係情報の実行パラメータ情報432及び実行待ち情報431へのポインタは、move Y from Aからmove Y from Bに変更される。dispatch ()命令により、依存関係が満たされたものから実行される。
手続B()が完了すると、実行待ち情報431に登録されている手続move Y from Bの依存関係(B()の実行完了)が満たされる。依存関係チェック・実行開始部422は手続move Y from Bが実行可能であると判断し、実行登録(この場合、move Y from B)を削除し、データYに係わるデータ依存関係情報433を「実行中」に設定する。そして、データ転送装置440にデータ転送move Y from Bを実行させる(図16E参照)。
データ転送装置440によるデータ転送move Y from Bが完了すると、その通知を受けた実行完了部423は、データ転送move Y from Bに係わる実行(データ転送)パラメータ情報432を削除して、データ依存関係情報433の状態を「実行完了」に設定する(図示せず)。その後のプログラムステップも同様である。
図17は、以上の並列実行制御部における制御依存関係、(データYの)Yデータ依存関係、及び各プロセッサとデータ転送装置の動作を時系列でまとめたものである。図17においては、時間は図の上から下に向かって経過するように示している。プログラムのstart A(); move Y from Aの各プログラムステップが並列実行制御の制御依存関係に実行登録されると、A()の実行と、その実行が完了してからのデータ転送A→Cの実行とが制御依存関係(実行待ち情報)として登録される。プロセッサ1は、手続A()の実行開始を指示されると、A()を実行する。Yデータ依存関係は、データ転送A→Cが「未実行」であることを示している。dispatch ()命令により、依存関係が満たされたものから実行される。A()が実行可能と判断され、プロセッサ1が手続(関数)A()の実行を依頼される。プロセッサ1はA()を実行する。
プロセッサ1でA()の実行が終了し、依存関係情報が更新される。依存関係がチェックされ、A()からC()へのデータ転送が実行可能と判断され、データ転送装置にA()からC()へのデータYの転送の実行開始を依頼する。データ転送装置はデータ転送A→Cの実行開始要求を受けてデータ転送A→Cを実行する。データYのデータ依存関係情報の状態を、データ転送A→Cが実行中であることを示すように変更する。
このデータ転送中に分岐条件kの成立が確定すると、プログラムのstart B(); move Y from Bの各プログラムステップが並列実行制御の制御依存関係に実行登録される。この時、実行制御部は、Yデータの依存関係を確認し、その状態が実行中であるので、データ転送A→Cを中止し、Yデータの依存関係を未実行に変更する。また、実行パラメータを削除し、実行パラメータをBからCへの転送パラメータに設定する。
依存関係がチェックされ、B()が実行可能と判断されると、プロセッサ2は、B()の実行を依頼される。プロセッサ2によるB()の実行が完了すると、依存関係情報が更新される。依存関係がチェックされ、データ転送move Y from Bに係わる依存関係B()が満たされるので、データ転送装置によりデータ転送B→Cが実行される。この時点で、制御依存関係B→Cは削除され、Yデータ依存関係は、データ転送B→Cが実行中であることを示す。データ転送装置によるデータ転送B→Cが完了すると、プログラムステップwait Yに従ってデータYへのデータ転送が終わり、プログラム中のプログラムステップstart C(); move Z from Cが実行登録されると、手続(関数)C()が制御依存関係として登録される。プロセッサ2は、手続C()の実行開始を指示されると、手続C()を実行する。ここで処理されるプログラムステップmove Z from Cは、データZに関するものであるから、Yデータ依存関係には何も影響がなく、データ転送B→Cが実行完了したことを示していることに注意を要する。
このように、実行例3においては、先行するデータ転送(move Y from A)が実行中に後続のデータ転送(move Y from B)が登録されるため、特に先行するデータ転送(move Y from A)が中止(キャンセル)され、後続のデータ転送が遅れることはない。
図18Aから図18Cは、ここまで説明してきたマルチプロセッサシステム400の実行制御部420による動作フローを示す図である。図18Aは、プログラムステップの内部データへの登録実行のプロセスを示している。
ステップS100において、プログラムを読み出す。ステップS102において、データ依存関係情報を参照する。
ステップS104において、先行するデータ転送が実行中である場合、ステップS106において、実行パラメータ情報を参照して、実行チャネルを特定した上で、実行しているデータ転送を中止(キャンセル)する。そして、ステップS108において、中止したデータ転送の実行パラメータ情報を削除する。そして、ステップS110に進む。
ステップS104において、先行するデータ転送が実行中でない場合は、そのままステップS110に進む。
ステップS110において、先行するデータ転送が未実行である場合、ステップS112において、実行待ち情報を参照して、先行するデータ転送の実行登録をキャンセルする。ステップS114において、先行するデータ転送の実行パラメータ情報を削除する。ステップS116に進む。
ステップS110において、先行するデータ転送が未実行でない場合は、そのままステップS116に進む。
ステップS116において、新しく登録したデータ転送の実行パラメータ情報を設定する。次に、ステップS118において、データ依存情報を「未実行」に設定する。最後に、ステップS120において、実行待ち情報とその中の依存関係情報を登録する。
図18Bは、依存関係チェック及び実行開始に係わるプロセスを示している。なお、以下の説明では、処理されるプログラムステップは、データ転送に係わるものであるとする。
ステップS130において、実行待ち、依存関係を読み出す。ステップS132において、依存関係がないか、依存関係が満たされていて実行可能な処理があるか判断する。実行可能な処理があれば、ステップ134において、その実行可能な手続の実行登録を削除し、ステップ136において、データ依存情報を「実行中」に設定する。ステップS138において、データ転送装置またはプロセッサに実行開始を指示する。
図18Cは、実行制御部420による実行完了に係わる処理を示している。ステップS140において、実行完了したデータ転送の実行パラメータを削除する。ステップS142において、データ転送したデータのデータ依存関係情報を「実行完了」に設定する。次に、ステップS144において、実行登録情報の依存関係を更新して、処理を終了する。
図19は、本発明の第1の実施形態によるマルチプロセッサシステム400において、分岐条件が成立しない場合を示す図である。プログラムのプログラムステップstart A(); move Y from Aに基づき、制御依存関係とYデータ依存関係が実行登録される。これに応じて、プロセッサ1は、A()を実行する。この時、Yデータ依存関係は、データ転送A→Cが未実行であることを示している。プロセッサ1によるA()の実行が完了すると、データ転送装置はデータ転送A→Cを実行する。この時、Yデータ依存関係は、データ転送A→Cが実行中であることを示している。プログラムには、プログラムステップwait Yが含まれているので、データ転送A→Cが完了するのを待つ。データ転送装置によるデータ転送A→Cが完了すると、Yデータ依存関係はデータ転送A→Cの実行完了を示す。プログラムのプログラムステップstart C(); move Z from Cが実行登録されると、プロセッサ2がC()を実行する。
以上説明した第1の実施形態では、先行するデータ転送をキャンセルすることを明示的に指定せず、実行登録時にデータ依存関係情報を参照し、同じデータを転送先とするデータ転送がないかチェックするものである。このようにすることで、先行するデータ転送のキャンセル動作を指定しなくてもよいので、従来使用していたプログラム資産をそのまま使用することができる。
[第2の実施形態]
以下に説明する第2の実施形態は、プログラム中に、先行するデータ転送をキャンセルすることを明示的に指定するものである。分岐条件の成立が確定した後、プログラム中に明示的にキャンセル動作を指定する。このようにすることで、実行制御部での処理が簡単になり、システム開発やメンテナンスに要するコストを削減することができる。
以下、第1の実施形態と異なる部分に重点を置いて説明する。
第1の実施形態では、実行制御部は、実行登録時にデータ依存関係を参照し、同じデータへのデータ転送がないかチェックしていたが、第2の実施形態ではチェックしない。第1の実施形態では、処理を登録するたびに、キャンセルすべきデータ転送がないか判断していたが、第2の実施形態では、その判断がなくなる替わりに、プログラムステップcancel()が要求されたときに、データ依存関係情報を参照して、同じデータへのデータ転送をチェックし、その前に登録されたデータ転送を必要に応じてキャンセルするものである。プログラム中にcancel()命令を挿入する場所を見つけるのは容易であり、プログラム開発の工数は増えないが、実行制御部の動作が簡単になるメリットがある。
図20は、本発明の第2の実施形態によるマルチプロセッサシステム500を示す図である。マルチプロセッサシステム500は、プログラム510を格納するメモリ、実行制御部520、内部データ530(実行制御部520と内部データ530とを併せて並列実行制御部と呼ぶ)、データ転送装置540、プロセッサ550(データ転送装置540とプロセッサ550を併せて実行ユニットと呼ぶ)を有する。実行制御部520は、実行登録部521、依存関係チェック・実行開始部522、実行完了部523を有し、さらにキャンセル制御部525を有している。内部データ530は、実行待ち情報/制御依存関係情報531、実行パラメータ情報532、データ依存関係情報533を有する。マルチプロセッサシステム500においては、上で説明したように、プログラム510のif (k)文に、Yへのデータ転送をキャンセルする旨の命令cancel Yが含まれている。
図21A及び21Bは、マルチプロセッサシステム500の実行制御部の動作フローを示す図である。
図21Aは、プログラムステップの実行登録のプロセスを示している。ステップS200において、プログラムを読み出す。そして、ステップS202において、実行待ち情報とその中の依存関係情報を登録して、処理を終了する。
図21Bは、キャンセル制御のプロセスを示す。ステップS210において、データ依存関係情報を参照する。
ステップS212において、先行するデータ転送が実行中である場合、ステップS214において、実行パラメータ情報を参照して、実行チャネルを特定した上で、実行しているデータ転送を中止(キャンセル)する。そして、ステップS216において、中止したデータ転送の実行パラメータ情報を削除する。そして、ステップS218に進む。
ステップS212において、先行するデータ転送が実行中でない場合は、そのままステップS218に進む。
ステップS218において、先行するデータ転送が未実行である場合、ステップS220において、実行(データ転送)待ち情報を参照して、先行するデータ転送の実行(データ転送)登録をキャンセルする。次に、ステップS222において、先行するデータ転送の実行パラメータ情報を削除する。そして、ステップS224に進む。
ステップS218において、先行するデータ転送が未実行でない場合は、そのままステップS224に進む。
ステップS224において、新しく登録したデータ転送の実行(データ転送)パラメータ情報を設定する。次に、ステップS226において、データ依存情報を「未実行」に設定する。
これ以降、依存関係のチェックから実行完了までのプロセスは、図18BのステップS130−S138、及び図18CのステップS140−144と同一であるから、説明を省略する。
このように、第2の実施形態によるマルチプロセッサシステム500の実行制御部520の動作フローは、図18に示した実行登録のステップS102−S118を、キャンセル制御プロセスとして独立させたものである。
図22は、分岐条件kが成立する場合における、並列実行制御部の制御依存関係、(データYの)Yデータ依存関係、及び各プロセッサとデータ転送装置の動作を時系列でまとめたものである。図22においては、時間は図の上から下に向かって経過するように示している。
プログラムのstart A(); move Y from A;の各プログラムステップが実行登録されると、手続(関数)A()の実行と、その実行が完了してからのデータ転送A→Cの実行とが制御依存関係として登録される。プロセッサ1は、手続A()の実行開始を指示されると、手続A()を実行する。Yデータ依存関係は、データ転送A→Cが「未実行」であることを示している。dispatch ()命令により、依存関係が満たされたものから実行される。
依存関係がチェックされ、A()が実行可能と判断され、プロセッサ1へA()の実行が依頼される。プロセッサ1はA()の実行を開始する。
プロセッサ1がA()の実行を完了すると、依存関係情報が更新される。再度依存関係がチェックされ、A()からC()のデータ転送が実行可能と判断されると、データ転送装置はデータ転送A→Cの実行開始要求を受けてデータ転送A→Cを実行する。データYのデータ依存関係情報の状態をA→C実行中に変更する。
このデータ転送中に分岐条件kの成立が確定すると、B()の実行、及びB()からC()へのデータYのデータ転送が、並列実行制御の制御依存関係に登録される。次にプログラムステップcancel ()を読み出す。先行するデータ転送A→Cに係わるデータYのデータ依存情報が参照され(図21BのステップS210参照)、データ転送が実行中であるから(同ステップS212参照)、データ転送装置によるデータ転送A→Cの実行が中止される(同ステップS214参照)。そして、データ転送A→Cに係わる実行パラメータが削除される(同ステップS216参照)。次に、新しいデータ転送B→Cに係わる実行パラメータが設定され(同ステップS224参照)、Yデータ依存情報が未実行に設定される(同ステップS226参照)。
依存関係がチェックされ、B()が実行可能と判断され、プロセッサ2へB()の実行が依頼される。プロセッサ2はB()の実行を開始する。
プロセッサ2によるB()の実行が完了すると、依存関係情報が更新される。依存関係がチェックされ、データ転送move Y from Bに係わる依存関係B()が満たされるので、データ転送装置によりデータ転送B→Cが実行される。この時点で、制御依存関係B→Cは削除され、Yデータ依存関係は、データ転送B→Cが実行中であることを示すように変更される。データ転送装置によるデータ転送B→Cが完了すると、プログラムステップwait Yに従ってデータYへのデータ転送が終わり、プログラム中のプログラムステップstart C(); move Z from Cが実行登録されると、関数C()が制御依存関係として登録される。プロセッサ2は、手続C()の実行開始を指示されると、手続C()を実行する。ここで処理されるプログラムステップmove Z from Cは、データZに関するものであるから、Yデータ依存関係には何も影響がなく、データ転送B→Cが実行完了したことを示していることに注意を要する。
[第3の実施形態]
この実施形態では、分岐条件kが成立して、先行するデータ転送が実行中であるが上書きされることが分かった場合、先行するデータ転送が終了するまで後続のデータ転送を待たせる。
実行中の先行するデータ転送を中断するためには、データ転送に関するパラメータをデータ転送が完了するまで保持しておかなければならず、記憶容量を消費するし実行制御も複雑になってしまう。そこで、実行中のデータ転送はキャンセルしなくても、実行前のデータ転送だけをキャンセルすることにより、データ転送に係る待ち時間を大幅に削減することができる。本実施形態では、転送開始前のデータ転送をキャンセルするものである。
第3の実施形態を第1の実施形態と比較しつつ説明する。並列実行制御装置及びデータ構造は第1の実施形態と基本的に同一であるが、実行制御部の動作フローが異なっている。
本実施形態の実行制御部の動作フローを図23に示す。
ステップ300において、プログラムを読み出す。ステップS302において、データ依存関係情報を参照する。
ステップS304において、先行するデータ転送が実行中である場合、ステップS320に進み、実行待ち情報とその中の依存関係情報を登録して処理を終了する。
ステップS304において、先行するデータ転送が実行中でない場合は、ステップS310に進み、先行するデータ転送が未実行であるか判断する。先行するデータ転送が未実行である場合、ステップS312において、実行待ち情報を参照して、先行するデータ転送の実行登録をキャンセルする。そして、ステップS314において、先行するデータ転送の実行パラメータ情報を削除する。ステップS316に進む。
ステップS310において、先行するデータ転送が未実行でない場合は、そのままステップS316に進む。
ステップS316において、新しく登録したデータ転送の実行パラメータ情報を設定する。次に、ステップS318において、データ依存情報を「未実行」に設定する。最後に、ステップS320において、実行待ち情報とその中の依存関係情報を登録して処理を終了する。
これ以降の動作フローは、図18B、図18Cを参照して説明した第1の実施形態の動作フローと同じである。
分岐条件が成立した場合の処理を図24に示す。
プログラムのstart A(); move Y from A; dispatch ();により、関数A()と、A()からC()へのデータYのデータ転送とが、並列実行制御の制御依存関係に登録される。また、データYのデータ依存関係情報として、Yの転送状態を未実行に設定する。制御依存関係をチェックして、A()が実行可能と判断され、関数A()の実行がプロセッサ1に要求される。プロセッサ1は関数A()を実行する。
プロセッサ1でA()の実行が終了すると、依存関係情報が更新される。依存関係がチェックされA()からC()へのデータ転送が実行可能であると判断されると、そのデータ転送がデータ転送装置に要求される。データYのデータ依存関係情報を、データ転送A→Cが実行中であることを示すように設定する。
A()からC()への転送終了前に、分岐条件kが確定すると、関数B()と、B()からC()へのデータYのデータ転送とが、並列実行制御の制御依存関係に登録される。このとき、実行制御部はYデータの依存関係を確認し、その状態が未実行である場合は、A()からC()へのデータ転送の実行登録を削除する。実行中である場合は、そのまま実行を継続させる。
制御依存関係をチェックし、関数B()が実行可能と判断されると、プロセッサ2に関数B()の実行を要求する。プロセッサ2はB()を実行する。
プロセッサ2で関数B()の実行が終了すると、依存関係情報が更新される。この時点までにA()からC()へのデータ転送が終了していれば、依存関係をチェックしてB()からC()へのデータ転送が実行可能であると判断される。データ転送装置にB()からC()へのデータYのデータ転送の開始を要求する。A()からC()へのデータ転送が終了していなければ、B()からC()へのデータ転送は、A()からC()へのデータ転送が終了するまで待つ(このため、制御依存関係として、データ転送B→Cの依存関係としてデータ転送A→Cの完了を予め登録しておけばよい)。
B()からC()へのデータYの転送が終了したあと、依存関係情報が更新され、依存関係チェック後、C()が実行される。
[第4の実施形態]
図25は、本発明の第4の実施形態による、マルチプロセッサシステム600を示す図である。本実施形態のマルチプロセッサシステム600は、実行ユニット中にプロセッサ650を有するが、データ転送を行う専用のデータ転送装置を持たない点で、上記の実施形態と異なる。データ転送は、プロセッサ650により行うことができる。
本願発明は、このような構成を採用することにより、専用のデータ転送装置がないハードウェアでも実施することができる。マルチプロセッサシステム600の動作フロー及び各処理ステップは、上記の第1の実施形態から第3の実施形態で説明したものと同じである。
[第5の実施形態]
図26は、本発明の並列プログラム実行装置の一実施形態のハードウェアを示す、分散型マルチプロセッサシステムを示すブロック図である。図26に示した分散型マルチプロセッサシステム200は、複数のプロセッサ201、202、203等、メモリ211、212、213等、データ転送装置221、222、223等、通信装置231、232、233等、を含み、これらの構成要素は、それぞれ共通のシステムバス251、252、253等を介して命令、アドレス情報、データをやりとりすることができるように構成されている。すなわち、プロセッサ201、メモリ211、データ転送装置221、通信装置231がシステムバス251を介して命令、アドレス情報、データをやりとりすることができるように構成され、1つのサブシステムを構成している。プロセッサ202、メモリ212、データ転送装置222、通信装置232がシステムバス252を介して命令、アドレス情報、データをやりとりすることができるように構成され、1つのサブシステムを構成している。さらに、プロセッサ203、メモリ213、データ転送装置223、通信装置233がシステムバス253を介して命令、アドレス情報、データをやりとりすることができるように構成され、1つのサブシステムを構成している。これらのサブシステムは、共通の通信路260を介して通信することができる。
例えばプロセッサ201を含むサブシステムにおいて、プロセッサ201は、与えられたプログラムを実行して、例えばメモリ211から読み出したデータを処理して、その結果をメモリ211に書き込んだりすることができる。メモリ211は、プロセッサ201が実行するプログラムを記憶し、また、プロセッサ201が処理するデータを記憶する。データ転送装置221は、分散型マルチプロセッサシステム200の外部にある装置とメモリ211との間のデータ転送を制御する。通信装置231は、通信路260を介して、プロセッサ202、203等を含む他のサブシステムとの通信を制御する。他のサブシステムについても同様である。これらの構成要素は、本発明の並列プログラム実行装置の動作に係る部分を除いて、当業者の間で周知であるから、これ以上の説明は要しない。
このようにプロセッサ、データ転送装置、及びメモリを有する各サブシステムが、通信装置により共通の通信路を介して通信する構成を採用した分散型マルチプロセッサシステム200においても、本発明の並列プログラム実行装置を実施できることは明らかである。
以上、本発明の実施の形態について詳述したが、本発明は特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形及び変更が可能である。
本発明により、プログラムに条件分岐が含まれる場合であっても、その分岐条件の成否にかかわらず、データ転送に係わる待ち時間をなくし、または少なくして、プログラムの実行時間を短縮することができるマルチプロセッサシステムを提供することができる。

Claims (8)

  1. マルチプロセッサシステムであって、
    複数のプロセッサと、
    前記複数のプロセッサによる処理及び前記複数のプロセッサ間のデータ転送を制御する実行制御部と、
    前記データ転送の状態を示すデータ依存関係情報を含む内部データ記憶部と、
    を有し、
    前記実行制御部は、先行するデータ転送が実行登録された後に、前記プロセッサによる前記処理に対する制御の流れが確定し、前記先行するデータ転送と同一の転送先への別のデータ転送が必要となったとき、前記データ依存関係情報に基づき前記先行するデータ転送をキャンセルすることを特徴とするマルチプロセッサシステム。
  2. 請求項1に記載のマルチプロセッサシステムであって、
    前記実行制御部は、前記先行するデータ転送が実行可能となったとき、前記制御の流れが確定する前であっても前記先行するデータ転送の実行を開始することを特徴とするマルチプロセッサシステム。
  3. 請求項1又は2に記載のマルチプロセッサシステムであって、
    前記実行制御部は、前記データ依存関係情報に基づき前記先行するデータ転送をキャンセルするときに、該キャンセルされるデータ転送が未実行である場合該未実行のデータ転送の実行登録を削除することを特徴とするマルチプロセッサシステム。
  4. 請求項1又は2に記載のマルチプロセッサシステムであって、
    前記実行制御部は、前記データ依存関係情報に基づき前記先行するデータ転送をキャンセルするときに、該キャンセルされるデータ転送が実行中である場合該実行中のデータ転送を中止することを特徴とするマルチプロセッサシステム。
  5. 請求項1乃至4のいずれか一つに記載のマルチプロセッサシステムであって、
    前記内部データ記憶部は、実行されるデータ転送が登録される実行待ち情報と、前記実行されるデータ転送に係わる実行パラメータが登録される実行パラメータ情報とをさらに含むことを特徴とするマルチプロセッサシステム。
  6. 請求項1乃至5のいずれか一つに記載のマルチプロセッサシステムであって、
    前記複数のプロセッサ間のデータ転送を実行する少なくとも1つのデータ転送装置を有することを特徴とするマルチプロセッサシステム。
  7. 複数のプロセッサと、前記複数のプロセッサ間のデータ転送の状態を示すデータ依存関係情報を含む内部データ記憶部とを有するマルチプロセッサシステムの制御方法であって、
    先行するデータ転送を実行登録し、
    前記複数のプロセッサによる処理に対する制御の流れが確定したか判定し、
    前記制御の流れが確定し、前記先行するデータ転送と同一の転送先への別のデータ転送が必要となったとき、前記データ依存関係情報に基づき前記先行するデータ転送をキャンセルする
    ことを特徴とする制御方法。
  8. 複数のプロセッサと、前記複数のプロセッサ間のデータ転送の状態を示すデータ依存関係情報を含む内部データ記憶部とを有するマルチプロセッサシステムを制御するコンピュータプログラムであって、前記複数のプロセッサのうちの少なくとも1つのプロセッサに、
    先行するデータ転送を実行登録し、前記複数のプロセッサによる処理に対する制御の流れが確定したか判定し、前記制御の流れが確定し、前記先行するデータ転送と同一の転送先への別のデータ転送が必要となったとき、前記データ依存関係情報に基づき前記先行するデータ転送をキャンセルすることを、
    実行させることを特徴とするコンピュータプログラム。
JP2009505042A 2007-03-20 2007-03-20 マルチプロセッサシステム及びその制御方法 Expired - Fee Related JP5146444B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/055743 WO2008114443A1 (ja) 2007-03-20 2007-03-20 マルチプロセッサシステム及びその制御方法

Publications (2)

Publication Number Publication Date
JPWO2008114443A1 JPWO2008114443A1 (ja) 2010-07-01
JP5146444B2 true JP5146444B2 (ja) 2013-02-20

Family

ID=39765564

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009505042A Expired - Fee Related JP5146444B2 (ja) 2007-03-20 2007-03-20 マルチプロセッサシステム及びその制御方法

Country Status (3)

Country Link
US (1) US7953962B2 (ja)
JP (1) JP5146444B2 (ja)
WO (1) WO2008114443A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2520941T3 (es) * 2009-05-18 2014-11-12 Amadeus S.A.S. Método y sistema para gestionar el orden de mensajes
WO2013140518A1 (ja) * 2012-03-19 2013-09-26 富士通株式会社 スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法
US9110963B2 (en) * 2012-04-10 2015-08-18 Dell Inc Transparent adaptive file transform
JP2015210791A (ja) * 2014-04-30 2015-11-24 富士通株式会社 分散処理装置、分散処理システム、および分散処理プログラム

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04181460A (ja) * 1990-11-16 1992-06-29 Hitachi Ltd マルチプロセッサシステム
JPH08255144A (ja) * 1995-03-16 1996-10-01 Fujitsu Ltd データ転送システム
JPH1115803A (ja) * 1997-06-19 1999-01-22 Hitachi Ltd 並列計算機におけるデータ送受信方法
JP2000056971A (ja) * 1998-08-04 2000-02-25 Fujitsu Ltd 高速演算処理装置および記録媒体
JP3035108B2 (ja) * 1993-04-02 2000-04-17 株式会社東芝 並列演算処理装置
JP2000181711A (ja) * 1998-12-18 2000-06-30 Hitachi Ltd 命令フェッチのキャンセル方式
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3035108U (ja) 1996-08-26 1997-03-11 有限会社カンタム 微弱電磁波放射装置
US6202089B1 (en) * 1998-06-30 2001-03-13 Microsoft Corporation Method for configuring at runtime, identifying and using a plurality of remote procedure call endpoints on a single server process
JP2000099332A (ja) * 1998-09-25 2000-04-07 Hitachi Ltd 遠隔手続き呼び出し最適化方法とこれを用いたプログラム実行方法
US7577834B1 (en) * 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US6950925B1 (en) * 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
JP4673585B2 (ja) 2004-08-05 2011-04-20 富士通株式会社 メモリシステム制御装置およびメモリシステム制御方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04181460A (ja) * 1990-11-16 1992-06-29 Hitachi Ltd マルチプロセッサシステム
JP3035108B2 (ja) * 1993-04-02 2000-04-17 株式会社東芝 並列演算処理装置
JPH08255144A (ja) * 1995-03-16 1996-10-01 Fujitsu Ltd データ転送システム
JPH1115803A (ja) * 1997-06-19 1999-01-22 Hitachi Ltd 並列計算機におけるデータ送受信方法
JP2000056971A (ja) * 1998-08-04 2000-02-25 Fujitsu Ltd 高速演算処理装置および記録媒体
JP2000181711A (ja) * 1998-12-18 2000-06-30 Hitachi Ltd 命令フェッチのキャンセル方式
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム

Also Published As

Publication number Publication date
WO2008114443A1 (ja) 2008-09-25
JPWO2008114443A1 (ja) 2010-07-01
US7953962B2 (en) 2011-05-31
US20100070739A1 (en) 2010-03-18

Similar Documents

Publication Publication Date Title
US8145820B2 (en) Multiprocessor system and computer program product
US9329911B2 (en) Driver initialization for a process in user mode
US11055132B2 (en) Multicore page fault processing
JP5146444B2 (ja) マルチプロセッサシステム及びその制御方法
JP4019073B2 (ja) キャッシュ可能なdma
JP5213485B2 (ja) マルチプロセッサシステムにおけるデータ同期方法及びマルチプロセッサシステム
JP2001333137A (ja) 自主動作通信制御装置及び自主動作通信制御方法
JPH04284548A (ja) データベース排他制御方式
JP4856413B2 (ja) 演算処理装置、情報処理装置、及び演算処理装置の制御方法
JP5168800B2 (ja) マルチプロセッサシステム
JPH04186453A (ja) ファイル転送方式
JP2003108513A (ja) ハードウェア・チェーン・プル
JP2001188745A (ja) 制御装置及び制御方法
JPH0895810A (ja) バッチジョブ実行方式
JP6940283B2 (ja) Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム
JP2020086807A (ja) 車両制御装置およびプログラム実行方法
JP5555514B2 (ja) プロセッサシステム
JP2022078486A (ja) 記憶制御システム、及び、記憶制御方法
KR102280241B1 (ko) 메모리 액세스 제어 시스템, 메모리 액세스 제어 장치 및 이를 이용한 메모리 액세스 제어 방법
JP4618240B2 (ja) オブジェクト指向型車両用制御システム及びプログラム搭載支援システム
JP4426321B2 (ja) ホットスタンバイシステム、ホストコンピュータ、i/o処理方法、および、コンピュータ読取り可能なプログラム
JPS62177653A (ja) 共有メモリ制御方式
JP2006048163A (ja) ストアデータ制御装置およびストアデータ制御方法
JPH01137359A (ja) プロセッサの制御方法
JPH0728703A (ja) 排他制御可能なマルチプロセッサシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120723

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: 20121030

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121112

R150 Certificate of patent or registration of utility model

Ref document number: 5146444

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20151207

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees