JP2000132529A - 並列処理装置、並列処理方法および記録媒体 - Google Patents
並列処理装置、並列処理方法および記録媒体Info
- Publication number
- JP2000132529A JP2000132529A JP10302679A JP30267998A JP2000132529A JP 2000132529 A JP2000132529 A JP 2000132529A JP 10302679 A JP10302679 A JP 10302679A JP 30267998 A JP30267998 A JP 30267998A JP 2000132529 A JP2000132529 A JP 2000132529A
- Authority
- JP
- Japan
- Prior art keywords
- program
- processing
- instruction
- execution
- standby
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
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
(57)【要約】
【課題】 並列に実行されるプログラム相互間で、多様
な形態の同期をとることができる並列処理装置を提供す
る。 【解決手段】 プロセッサエレメント614 は、ユーザ
プログラムPrg_dにおいて待機命令「sleep」
を実行したときに処理を中断して待機状態になり、プロ
セッサエレメント611 による待機解除命令「cont
(Prg_d)の実行に基づいて前記待機状態を解除し
て処理を再開し、プロセッサエレメント611 は、待機
解除命令「cont(Prg_d)を実行後、処理を中
断することなく次の命令を実行する
な形態の同期をとることができる並列処理装置を提供す
る。 【解決手段】 プロセッサエレメント614 は、ユーザ
プログラムPrg_dにおいて待機命令「sleep」
を実行したときに処理を中断して待機状態になり、プロ
セッサエレメント611 による待機解除命令「cont
(Prg_d)の実行に基づいて前記待機状態を解除し
て処理を再開し、プロセッサエレメント611 は、待機
解除命令「cont(Prg_d)を実行後、処理を中
断することなく次の命令を実行する
Description
【0001】
【発明の属する技術分野】本発明は、並列処理装置、並
列処理方法および当該方法の手順をコンピュータで読み
取り可能に記録した記録媒体に関する。
列処理方法および当該方法の手順をコンピュータで読み
取り可能に記録した記録媒体に関する。
【0002】
【従来の技術】例えば、Unix(商標名)などのOS
(Operating System)を搭載したシングルプロセッサで
は、マルチタスク環境でのプログラムの実行に際してロ
ーカルメモリに同時に存在する複数個のプログラムの進
行を管理する機能が必要であり、当該機能において「プ
ログラム」という言葉を明確な対象概念とするために
「プロセス」という概念が用いられている。プロセス
は、独立したプログラムの実行単位であり、当該プログ
ラムが独自にアクセスできるメモリ空間(ユーザメモリ
空間)をローカルメモリに設定する。また、プログラム
の実行はプロセスの起動を意味し、プログラムの終了は
プロセスの消滅を意味する。また、プロセスは、他のプ
ロセスを起動および消滅させたり、他のプロセスと通信
を行うことができる。
(Operating System)を搭載したシングルプロセッサで
は、マルチタスク環境でのプログラムの実行に際してロ
ーカルメモリに同時に存在する複数個のプログラムの進
行を管理する機能が必要であり、当該機能において「プ
ログラム」という言葉を明確な対象概念とするために
「プロセス」という概念が用いられている。プロセス
は、独立したプログラムの実行単位であり、当該プログ
ラムが独自にアクセスできるメモリ空間(ユーザメモリ
空間)をローカルメモリに設定する。また、プログラム
の実行はプロセスの起動を意味し、プログラムの終了は
プロセスの消滅を意味する。また、プロセスは、他のプ
ロセスを起動および消滅させたり、他のプロセスと通信
を行うことができる。
【0003】ところで、シングルプロセッサでは、CP
U(Central Processing Unit) が1個であるため、起動
できるプロセスは、任意の時刻で最大1個である。従っ
て、シングルプロセッサでは、独立した複数のプログラ
ムにユーザメモリ空間を同時に割り当て、時分割(Time
Sharing)方式で当該複数のプログラムを交互に実行して
複数のプロセスを交互に起動することで、マルチタスク
環境を実現している。このとき、一のプロセスが起動状
態にある場合に、他のプロセスは待機状態になってい
る。
U(Central Processing Unit) が1個であるため、起動
できるプロセスは、任意の時刻で最大1個である。従っ
て、シングルプロセッサでは、独立した複数のプログラ
ムにユーザメモリ空間を同時に割り当て、時分割(Time
Sharing)方式で当該複数のプログラムを交互に実行して
複数のプロセスを交互に起動することで、マルチタスク
環境を実現している。このとき、一のプロセスが起動状
態にある場合に、他のプロセスは待機状態になってい
る。
【0004】上述したマルチタスク環境下では、複数の
プロセス相互間でのメッセージ通信を以下に示すよう行
う。すなわち、シングルプロセッサでは、前述したよう
に、任意の時刻で起動状態になるプロセスは最大1個で
あるため、メッセージを送信する一のプロセスが起動状
態にあるときには、当該メッセージを受信する他のプロ
セスは待機状態になっている。従って、メッセージを送
信する起動状態のプロセスは、O/Sのカーネル内のプ
ロセス管理タスクを呼び出し、当該メッセージを受信す
るプロセスが前回待機状態に遷移する直前の起動状態を
記憶しているメモリ上のテーブル(通常、スレッドのコ
ンテキストを保存しているテーブル)にメッセージを送
信する旨を書き込む。そして、メッセージ受信するプロ
セスが、次に起動状態に遷移すると、当該テーブルを参
照することで、メッセージを受信したことを知り、それ
に応じた処理を行う。一方、例えば、メッセージを受信
するプロセスが当該メッセージの受信を条件に次の処理
に進むものであり、起動状態に遷移してテーブルを参照
したときにメッセージの受信の事実が無いと判断した場
合には、当該プロセスは待機状態になる。そして、当該
プロセスは、メッセージの受信を確認した後に、起動状
態に遷移する。
プロセス相互間でのメッセージ通信を以下に示すよう行
う。すなわち、シングルプロセッサでは、前述したよう
に、任意の時刻で起動状態になるプロセスは最大1個で
あるため、メッセージを送信する一のプロセスが起動状
態にあるときには、当該メッセージを受信する他のプロ
セスは待機状態になっている。従って、メッセージを送
信する起動状態のプロセスは、O/Sのカーネル内のプ
ロセス管理タスクを呼び出し、当該メッセージを受信す
るプロセスが前回待機状態に遷移する直前の起動状態を
記憶しているメモリ上のテーブル(通常、スレッドのコ
ンテキストを保存しているテーブル)にメッセージを送
信する旨を書き込む。そして、メッセージ受信するプロ
セスが、次に起動状態に遷移すると、当該テーブルを参
照することで、メッセージを受信したことを知り、それ
に応じた処理を行う。一方、例えば、メッセージを受信
するプロセスが当該メッセージの受信を条件に次の処理
に進むものであり、起動状態に遷移してテーブルを参照
したときにメッセージの受信の事実が無いと判断した場
合には、当該プロセスは待機状態になる。そして、当該
プロセスは、メッセージの受信を確認した後に、起動状
態に遷移する。
【0005】一方、例えば共有バスを介して接続された
複数のCPUが相互に独立した複数のプログラムを並列
に実行するマルチプロセッサでは、通常、1個のCPU
において任意の時刻で最大1個のプロセスが起動状態と
なり、相互に異なるCPU上で複数のプロセスが同時に
起動状態となり得る。そして、プロセス相互間での通信
は、ユーザプログラム(アプリケーションプログラム)
内に明示された命令コードに基づいて、例えば、送信側
のプロセスが共有バスにメッセージを流し、共有バスを
監視しているアービタが受信側のプロセスに当該メッセ
ージを通知して行われる。従って、プロセス相互間でメ
ッセージ通信を実現するには、メッセージの送信側のプ
ロセスと受信側のプロセスとの双方が起動状態である必
要がある。このように、通常、マルチプロセッサでは、
前述したシングルプロセッサのようなプロセス管理タス
クを用いたメッセージ通信は行われていない。すなわ
ち、マルチプロセッサでは、プロセス管理タスクという
ものが存在しない。
複数のCPUが相互に独立した複数のプログラムを並列
に実行するマルチプロセッサでは、通常、1個のCPU
において任意の時刻で最大1個のプロセスが起動状態と
なり、相互に異なるCPU上で複数のプロセスが同時に
起動状態となり得る。そして、プロセス相互間での通信
は、ユーザプログラム(アプリケーションプログラム)
内に明示された命令コードに基づいて、例えば、送信側
のプロセスが共有バスにメッセージを流し、共有バスを
監視しているアービタが受信側のプロセスに当該メッセ
ージを通知して行われる。従って、プロセス相互間でメ
ッセージ通信を実現するには、メッセージの送信側のプ
ロセスと受信側のプロセスとの双方が起動状態である必
要がある。このように、通常、マルチプロセッサでは、
前述したシングルプロセッサのようなプロセス管理タス
クを用いたメッセージ通信は行われていない。すなわ
ち、マルチプロセッサでは、プロセス管理タスクという
ものが存在しない。
【0006】ところで、マルチプロセッサでは、並列に
動作する複数のプロセス相互間で同期をとる必要がある
場合に、上述したメッセージ通信を用いて同期を実現し
ている。以下、マルチプロセッサにおける従来のプロセ
ス相互間の同期方法について説明する。先ず、一般的な
マルチプロセッサの構成について説明する。図5は、一
般的なマルチプロセッサ1の構成図である。図5に示す
ように、マルチプロセッサ1は、共有バス17を介して
例えば4個のプロセッサエレメント111 〜114 を接
続した構成をしている。また、共有バス17には、共有
メモリ15およびアービタ16が接続されている。
動作する複数のプロセス相互間で同期をとる必要がある
場合に、上述したメッセージ通信を用いて同期を実現し
ている。以下、マルチプロセッサにおける従来のプロセ
ス相互間の同期方法について説明する。先ず、一般的な
マルチプロセッサの構成について説明する。図5は、一
般的なマルチプロセッサ1の構成図である。図5に示す
ように、マルチプロセッサ1は、共有バス17を介して
例えば4個のプロセッサエレメント111 〜114 を接
続した構成をしている。また、共有バス17には、共有
メモリ15およびアービタ16が接続されている。
【0007】ここで、プロセッサエレメント111 は、
例えば、図6に示すように、プロセッサコア31および
ローカルメモリ32を有し、共有バス17を介して共有
メモリ15から読み出したユーザプログラムをローカル
メモリ32に記憶し、ローカルメモリ32に記憶してい
るユーザプログラムの命令コードをプロセッサコア31
に順次に供給して実行する。プロセッサエレメント11
2 〜114 は、例えば、プロセッサエレメント111 と
同じ構成をしている。
例えば、図6に示すように、プロセッサコア31および
ローカルメモリ32を有し、共有バス17を介して共有
メモリ15から読み出したユーザプログラムをローカル
メモリ32に記憶し、ローカルメモリ32に記憶してい
るユーザプログラムの命令コードをプロセッサコア31
に順次に供給して実行する。プロセッサエレメント11
2 〜114 は、例えば、プロセッサエレメント111 と
同じ構成をしている。
【0008】また、アービタ16は、プロセッサエレメ
ント111 〜114 の実行状態(処理の負荷など)を監
視し、当該実行状態に基づいて、共有メモリ15に記憶
されているソフトウェアリソースをハードウェアリソー
スであるプロセッサエレメント111 〜114 に割り当
てる。具体的には、アービタ16は、共有メモリ15に
記憶されているユーザプログラムをプロセッサエレメン
ト111 〜114 の図6に示すローカルメモリ32に読
み込む。アービタ16は、例えば、図7に示すように、
ユーザプログラムであるメインプログラムPrg_Aお
よびサブプログラムPrg_B,Prg_C,Prg_
D,Prg_Eを、同時刻あるいは異なる時刻に、図7
中矢印で示すプロセッサエレメント111 〜114 のロ
ーカルメモリ32に読み込む。
ント111 〜114 の実行状態(処理の負荷など)を監
視し、当該実行状態に基づいて、共有メモリ15に記憶
されているソフトウェアリソースをハードウェアリソー
スであるプロセッサエレメント111 〜114 に割り当
てる。具体的には、アービタ16は、共有メモリ15に
記憶されているユーザプログラムをプロセッサエレメン
ト111 〜114 の図6に示すローカルメモリ32に読
み込む。アービタ16は、例えば、図7に示すように、
ユーザプログラムであるメインプログラムPrg_Aお
よびサブプログラムPrg_B,Prg_C,Prg_
D,Prg_Eを、同時刻あるいは異なる時刻に、図7
中矢印で示すプロセッサエレメント111 〜114 のロ
ーカルメモリ32に読み込む。
【0009】次に、図5に示すマルチプロセッサ1にお
ける従来のプログラム(プロセス)相互間での同期方法
について説明する。先ず、共有メモリ15に記憶されて
いるメインプログラムPrg_Aが、アービタ16によ
って、プロセッサエレメント111 のローカルメモリ3
2に読み込まれ、図8に示すように、メインプログラム
Prg_Aに記述された命令コードがプロセッサエレメ
ント111 で順次に実行される。そして、プロセッサエ
レメント111 において、命令コード「gen(Prg
_B)」が実行されると、その旨を示すメッセージが共
有バス17を介してアービタ16に通知される。そし
て、アービタ16によって、プロセッサエレメント11
1 〜114 の実行状態に基づいて、共有メモリ15に記
憶されているサブプログラムPrg_Bが、プロセッサ
エレメント112 のローカルメモリ32に読み込まれ、
サブプログラムPrg_Bに記述された命令コードがプ
ロセッサエレメント112 で順次に実行される。
ける従来のプログラム(プロセス)相互間での同期方法
について説明する。先ず、共有メモリ15に記憶されて
いるメインプログラムPrg_Aが、アービタ16によ
って、プロセッサエレメント111 のローカルメモリ3
2に読み込まれ、図8に示すように、メインプログラム
Prg_Aに記述された命令コードがプロセッサエレメ
ント111 で順次に実行される。そして、プロセッサエ
レメント111 において、命令コード「gen(Prg
_B)」が実行されると、その旨を示すメッセージが共
有バス17を介してアービタ16に通知される。そし
て、アービタ16によって、プロセッサエレメント11
1 〜114 の実行状態に基づいて、共有メモリ15に記
憶されているサブプログラムPrg_Bが、プロセッサ
エレメント112 のローカルメモリ32に読み込まれ、
サブプログラムPrg_Bに記述された命令コードがプ
ロセッサエレメント112 で順次に実行される。
【0010】その後、プロセッサエレメント111 にお
いて、命令コード「gen(Prg_C)」が実行され
ると、その旨を示すメッセージが共有バス17を介して
アービタ16に通知される。そして、アービタ16によ
って、プロセッサエレメント111 〜114 の実行状態
に基づいて、共有メモリ15に記憶されているサブプロ
グラムPrg_Cが、プロセッサエレメント113 のロ
ーカルメモリ32に読み込まれ、サブプログラムPrg
_Cに記述された命令コードがプロセッサエレメント1
13 で順次に実行される。
いて、命令コード「gen(Prg_C)」が実行され
ると、その旨を示すメッセージが共有バス17を介して
アービタ16に通知される。そして、アービタ16によ
って、プロセッサエレメント111 〜114 の実行状態
に基づいて、共有メモリ15に記憶されているサブプロ
グラムPrg_Cが、プロセッサエレメント113 のロ
ーカルメモリ32に読み込まれ、サブプログラムPrg
_Cに記述された命令コードがプロセッサエレメント1
13 で順次に実行される。
【0011】その後、プロセッサエレメント111 にお
いて、命令コード「gen(Prg_D)」が実行され
ると、その旨を示すメッセージが共有バス17を介して
アービタ16に通知される。そして、アービタ16によ
って、プロセッサエレメント111 〜114 の実行状態
に基づいて、共有メモリ15に記憶されているサブプロ
グラムPrg_Dが、プロセッサエレメント114 のロ
ーカルメモリ32に読み込まれ、サブプログラムPrg
_Dに記述された命令コードがプロセッサエレメント1
14 で順次に実行される。
いて、命令コード「gen(Prg_D)」が実行され
ると、その旨を示すメッセージが共有バス17を介して
アービタ16に通知される。そして、アービタ16によ
って、プロセッサエレメント111 〜114 の実行状態
に基づいて、共有メモリ15に記憶されているサブプロ
グラムPrg_Dが、プロセッサエレメント114 のロ
ーカルメモリ32に読み込まれ、サブプログラムPrg
_Dに記述された命令コードがプロセッサエレメント1
14 で順次に実行される。
【0012】その後、プロセッサエレメント111 にお
いて、命令コード「wait(Prg_D」が実行され
ると、プロセッサエレメント111 の処理が同期待ち状
態になる。
いて、命令コード「wait(Prg_D」が実行され
ると、プロセッサエレメント111 の処理が同期待ち状
態になる。
【0013】その後、プロセッサエレメント114 にお
いて、サブプログラムPrg_Dの最後の命令コード
「end」が実行されると、サブプログラムPrg_D
の終了を示すメッセージが、例えばアービタ16を介し
てプロセッサエレメント111に通知される。これによ
り、プロセッサエレメント111 は、同期待ち状態を解
除して、次の命令コードを実行する。
いて、サブプログラムPrg_Dの最後の命令コード
「end」が実行されると、サブプログラムPrg_D
の終了を示すメッセージが、例えばアービタ16を介し
てプロセッサエレメント111に通知される。これによ
り、プロセッサエレメント111 は、同期待ち状態を解
除して、次の命令コードを実行する。
【0014】その後、プロセッサエレメント111 にお
いて、命令コード「wait(Prg_C」が実行され
ると、プロセッサエレメント111 の処理が同期待ち状
態になる。
いて、命令コード「wait(Prg_C」が実行され
ると、プロセッサエレメント111 の処理が同期待ち状
態になる。
【0015】その後、プロセッサエレメント113 にお
いて、サブプログラムPrg_Cの最後の命令コード
「end」が実行されると、サブプログラムPrg_C
の終了を示すメッセージが、例えばアービタ16を介し
てプロセッサエレメント111に通知される。これによ
り、プロセッサエレメント111 は、同期待ち状態を解
除して、次の命令コードを実行する。
いて、サブプログラムPrg_Cの最後の命令コード
「end」が実行されると、サブプログラムPrg_C
の終了を示すメッセージが、例えばアービタ16を介し
てプロセッサエレメント111に通知される。これによ
り、プロセッサエレメント111 は、同期待ち状態を解
除して、次の命令コードを実行する。
【0016】その後、プロセッサエレメント111 にお
いて、命令コード「gen(Prg_E)」が実行され
ると、その旨を示すメッセージが共有バス17を介して
アービタ16に通知される。そして、アービタ16によ
って、プロセッサエレメント111 〜114 の実行状態
に基づいて、共有メモリ15に記憶されているサブプロ
グラムPrg_Eが、例えばプロセッサエレメント11
4 のローカルメモリ32に読み込まれ、サブプログラム
Prg_Cに記述された命令コードがプロセッサエレメ
ント114 で順次に実行される。
いて、命令コード「gen(Prg_E)」が実行され
ると、その旨を示すメッセージが共有バス17を介して
アービタ16に通知される。そして、アービタ16によ
って、プロセッサエレメント111 〜114 の実行状態
に基づいて、共有メモリ15に記憶されているサブプロ
グラムPrg_Eが、例えばプロセッサエレメント11
4 のローカルメモリ32に読み込まれ、サブプログラム
Prg_Cに記述された命令コードがプロセッサエレメ
ント114 で順次に実行される。
【0017】その後、プロセッサエレメント111 にお
いて、再び、命令コード「gen(Prg_D)」が実
行されると、その旨を示すメッセージが共有バス17を
介してアービタ16に通知される。そして、アービタ1
6によって、プロセッサエレメント111 〜114 の実
行状態に基づいて、共有メモリ15に記憶されているサ
ブプログラムPrg_Dが、プロセッサエレメント11
3 のローカルメモリ32に読み込まれ、サブプログラム
Prg_Dに記述された命令コードがプロセッサエレメ
ント113 で順次に実行される。
いて、再び、命令コード「gen(Prg_D)」が実
行されると、その旨を示すメッセージが共有バス17を
介してアービタ16に通知される。そして、アービタ1
6によって、プロセッサエレメント111 〜114 の実
行状態に基づいて、共有メモリ15に記憶されているサ
ブプログラムPrg_Dが、プロセッサエレメント11
3 のローカルメモリ32に読み込まれ、サブプログラム
Prg_Dに記述された命令コードがプロセッサエレメ
ント113 で順次に実行される。
【0018】
【発明が解決しようとする課題】上述したように、従来
のマルチプロセッサ1では、異なるプロセッサエレメン
ト上で実行されるプログラム(プロセス)相互間での同
期は、一のプロセッサエレメントによる命令コード「w
ait」の実行で発生した同期待ち状態を、他のプロセ
ッサエレメントにおけるプログラムの実行終了を示す命
令コード「end」の実行に基づいて解除するという単
純なものである。すなわち、一のプログラムに基づいた
プロセッサエレメントの同期待ち状態は、他のプロセッ
サエレメントおけるプログラムの実行が終了しなれば解
除できない。従って、異なるプロセッサエレメント上で
実行する異なるプログラム相互間で、例えば、プログラ
ムの途中に記述された命令コード相互間で同期をとるな
どの多様な形態の同期を実現することができないという
問題がある。
のマルチプロセッサ1では、異なるプロセッサエレメン
ト上で実行されるプログラム(プロセス)相互間での同
期は、一のプロセッサエレメントによる命令コード「w
ait」の実行で発生した同期待ち状態を、他のプロセ
ッサエレメントにおけるプログラムの実行終了を示す命
令コード「end」の実行に基づいて解除するという単
純なものである。すなわち、一のプログラムに基づいた
プロセッサエレメントの同期待ち状態は、他のプロセッ
サエレメントおけるプログラムの実行が終了しなれば解
除できない。従って、異なるプロセッサエレメント上で
実行する異なるプログラム相互間で、例えば、プログラ
ムの途中に記述された命令コード相互間で同期をとるな
どの多様な形態の同期を実現することができないという
問題がある。
【0019】また、上述した実施形態では、アービタ1
6は、例えば、プロセッサエレメント111 が図8に示
すメインプログラムPrg_Aを実行中に、メインプロ
グラムPrg_Aによって将来的にどのサブプログラム
の呼び出しが行われるかを知ることができない。そのた
め、図8に示すように、プロセッサエレメント111 に
おける命令コード「gen(Prg_D)」の最初の実
行時と2回目の実行時とで、アービタ16によって、サ
ブプログラムPrg_Dが異なるプロセッサエレメント
113 ,114 に割り当てられてしまう可能性がある。
この場合には、サブプログラムPrg_Dが比較的短い
時間間隔で実行されるにも係わらず、2回目の実行時に
おいて、共有メモリ15からプロセッサエレメント11
3 にサブプログラムPrg_Dを読み込む必要があり、
プロセッサエレメント113 の待ち時間を長引かせてい
る。このような事態は、図6に示すローカルメモリ32
のメモリ容量と読み込みを行うプログラムの容量とが同
じオーダーである場合に特に頻繁に発生し、マルチプロ
セッサ1の性能を大幅に低下させる要因となっている。
6は、例えば、プロセッサエレメント111 が図8に示
すメインプログラムPrg_Aを実行中に、メインプロ
グラムPrg_Aによって将来的にどのサブプログラム
の呼び出しが行われるかを知ることができない。そのた
め、図8に示すように、プロセッサエレメント111 に
おける命令コード「gen(Prg_D)」の最初の実
行時と2回目の実行時とで、アービタ16によって、サ
ブプログラムPrg_Dが異なるプロセッサエレメント
113 ,114 に割り当てられてしまう可能性がある。
この場合には、サブプログラムPrg_Dが比較的短い
時間間隔で実行されるにも係わらず、2回目の実行時に
おいて、共有メモリ15からプロセッサエレメント11
3 にサブプログラムPrg_Dを読み込む必要があり、
プロセッサエレメント113 の待ち時間を長引かせてい
る。このような事態は、図6に示すローカルメモリ32
のメモリ容量と読み込みを行うプログラムの容量とが同
じオーダーである場合に特に頻繁に発生し、マルチプロ
セッサ1の性能を大幅に低下させる要因となっている。
【0020】本発明は上述した従来技術の問題点に鑑み
てなされ、並列に実行されるプログラム相互間で、多様
な形態の同期をとることができる並列処理装置、並列処
理方法および当該方法の手順をコンピュータで読み取り
可能に記録した記録媒体を提供することを目的とする。
また、本発明は、プロセッサエレメントのローカルメモ
リと共有メモリとの間でのユーザプログラムの入れ替え
に伴うプロセッサエレメントの待ち時間を短縮できる並
列処理装置を提供することを目的とする。
てなされ、並列に実行されるプログラム相互間で、多様
な形態の同期をとることができる並列処理装置、並列処
理方法および当該方法の手順をコンピュータで読み取り
可能に記録した記録媒体を提供することを目的とする。
また、本発明は、プロセッサエレメントのローカルメモ
リと共有メモリとの間でのユーザプログラムの入れ替え
に伴うプロセッサエレメントの待ち時間を短縮できる並
列処理装置を提供することを目的とする。
【0021】
【課題を解決するための手段】上述した従来技術の問題
点を解決し、上述した目的を達成するために、本発明の
第1の観点の並列処理装置は、プログラムに記述された
命令に基づいて相互に並列に処理を行い、相互間で通信
可能な複数の処理手段を有する並列処理装置であって、
一の前記処理手段は、待機命令を実行したときに前記プ
ログラムに基づいた処理を中断して待機状態になり、他
の前記処理手段による待機解除命令の実行に基づいて前
記待機状態を解除して前記プログラムに基づいた処理を
再開し、前記他の処理手段は、前記待機解除命令を実行
後、処理を中断することなく次の命令を実行する。
点を解決し、上述した目的を達成するために、本発明の
第1の観点の並列処理装置は、プログラムに記述された
命令に基づいて相互に並列に処理を行い、相互間で通信
可能な複数の処理手段を有する並列処理装置であって、
一の前記処理手段は、待機命令を実行したときに前記プ
ログラムに基づいた処理を中断して待機状態になり、他
の前記処理手段による待機解除命令の実行に基づいて前
記待機状態を解除して前記プログラムに基づいた処理を
再開し、前記他の処理手段は、前記待機解除命令を実行
後、処理を中断することなく次の命令を実行する。
【0022】本発明の第1の観点の並列処理装置では、
一の処理手段と他の処理手段との間で、双方ともプログ
ラムの実行途中で、プログラム内の待機命令および待機
解除命令を用いて、命令レベルで同期がとられる。すな
わち、一方のプログラムの実行終了を伴うことなく、プ
ログラム相互間で同期をとることができる。
一の処理手段と他の処理手段との間で、双方ともプログ
ラムの実行途中で、プログラム内の待機命令および待機
解除命令を用いて、命令レベルで同期がとられる。すな
わち、一方のプログラムの実行終了を伴うことなく、プ
ログラム相互間で同期をとることができる。
【0023】また、本発明の第1の観点の並列処理装置
は、好ましくは、前記他の処理手段は、同期待ち命令を
実行して同期待ち状態になり、前記一の処理手段による
前記同期待ち命令に対応する前記待機命令の実行に基づ
いて前記同期待ち状態を解除する。これにより、前記他
の処理手段における前記待機解除命令の実行より前に前
記一の処理手段において待機命令が実行されることが回
避される。
は、好ましくは、前記他の処理手段は、同期待ち命令を
実行して同期待ち状態になり、前記一の処理手段による
前記同期待ち命令に対応する前記待機命令の実行に基づ
いて前記同期待ち状態を解除する。これにより、前記他
の処理手段における前記待機解除命令の実行より前に前
記一の処理手段において待機命令が実行されることが回
避される。
【0024】また、本発明の第2の観点の並列処理装置
は、プログラムに記述された命令に基づいて相互に並列
に処理を行い、相互間で通信可能な複数の処理手段を有
する並列処理装置であって、一の前記処理手段は、待機
命令を実行すると前記プログラムに基づいた処理を中断
して待機状態になり、他の前記処理手段による待機解除
命令の実行に基づいて前記待機状態を解除して前記プロ
グラムに基づいた処理を再開し、前記他の処理手段は、
前記待機解除命令を実行したときに、前記一の処理手段
が前記待機状態になっていない場合に、前記一の処理手
段が前記待機状態になるまで同期待ち状態になる。
は、プログラムに記述された命令に基づいて相互に並列
に処理を行い、相互間で通信可能な複数の処理手段を有
する並列処理装置であって、一の前記処理手段は、待機
命令を実行すると前記プログラムに基づいた処理を中断
して待機状態になり、他の前記処理手段による待機解除
命令の実行に基づいて前記待機状態を解除して前記プロ
グラムに基づいた処理を再開し、前記他の処理手段は、
前記待機解除命令を実行したときに、前記一の処理手段
が前記待機状態になっていない場合に、前記一の処理手
段が前記待機状態になるまで同期待ち状態になる。
【0025】すなわち、本発明の第2の観点の並列処理
装置では、前記一の処理手段と前記他の処理手段との間
で、プログラム内の待機命令および待機解除命令を用い
て、命令レベルで同期がとられる。すなわち、一方のプ
ログラムの実行終了を伴うことなく、プログラム相互間
で同期をとることができる。また、前記他の処理手段で
処理されるプログラム内に、待機解除命令に対応する同
期待ち命令が記述されていなくても、前記一の処理手段
が前記待機状態になっていない場合には、前記他の処理
手段が前記待機状態になるまで同期待ち状態になる。
装置では、前記一の処理手段と前記他の処理手段との間
で、プログラム内の待機命令および待機解除命令を用い
て、命令レベルで同期がとられる。すなわち、一方のプ
ログラムの実行終了を伴うことなく、プログラム相互間
で同期をとることができる。また、前記他の処理手段で
処理されるプログラム内に、待機解除命令に対応する同
期待ち命令が記述されていなくても、前記一の処理手段
が前記待機状態になっていない場合には、前記他の処理
手段が前記待機状態になるまで同期待ち状態になる。
【0026】また、本発明の第3の並列処理装置は、プ
ログラムに記述された命令に基づいて相互に並列に処理
を行い、相互間で通信可能な複数の処理手段と、前記プ
ログラムを記憶する第1の記憶手段と、前記複数の処理
手段にそれぞれ対応して設けられ、対応する処理手段で
実行されるプログラムを前記第1の記憶手段から読み込
み、当該読み込んだプログラムに記述された命令を前記
処理手段に供給し、前記第1の記憶手段に比べてアクセ
ス速度が速い第2の記憶手段とを有する並列処理装置で
あって、前記処理手段は、待機命令を実行したときに前
記プログラムに基づいた処理を中断して待機状態にな
り、他の前記処理手段による待機解除命令の実行に基づ
いて前記待機状態を解除して前記プログラムに基づいた
処理を再開し、前記第2の記憶手段は、対応する前記処
理手段が前記待機状態であるとき、当該待機状態になる
前に当該処理手段に供給していた前記プログラムを継続
して記憶する。
ログラムに記述された命令に基づいて相互に並列に処理
を行い、相互間で通信可能な複数の処理手段と、前記プ
ログラムを記憶する第1の記憶手段と、前記複数の処理
手段にそれぞれ対応して設けられ、対応する処理手段で
実行されるプログラムを前記第1の記憶手段から読み込
み、当該読み込んだプログラムに記述された命令を前記
処理手段に供給し、前記第1の記憶手段に比べてアクセ
ス速度が速い第2の記憶手段とを有する並列処理装置で
あって、前記処理手段は、待機命令を実行したときに前
記プログラムに基づいた処理を中断して待機状態にな
り、他の前記処理手段による待機解除命令の実行に基づ
いて前記待機状態を解除して前記プログラムに基づいた
処理を再開し、前記第2の記憶手段は、対応する前記処
理手段が前記待機状態であるとき、当該待機状態になる
前に当該処理手段に供給していた前記プログラムを継続
して記憶する。
【0027】本発明の第3の観点の並列処理装置では、
一の前記処理手段が、待機命令を実行したときに前記プ
ログラムに基づいた処理を中断して待機状態になり、他
の前記処理手段による待機解除命令の実行に基づいて前
記待機状態を解除して前記プログラムに基づいた処理を
再開する場合に、当該一の処理手段に対応する第2の記
憶手段には、前記一の処理手段に供給していたプログラ
ムが継続して記憶される。すなわち、当該プログラムの
実行を再開する際に、当該プログラムを再び前記第1の
記憶手段から前記第2の記憶手段に読み込む必要がな
い。
一の前記処理手段が、待機命令を実行したときに前記プ
ログラムに基づいた処理を中断して待機状態になり、他
の前記処理手段による待機解除命令の実行に基づいて前
記待機状態を解除して前記プログラムに基づいた処理を
再開する場合に、当該一の処理手段に対応する第2の記
憶手段には、前記一の処理手段に供給していたプログラ
ムが継続して記憶される。すなわち、当該プログラムの
実行を再開する際に、当該プログラムを再び前記第1の
記憶手段から前記第2の記憶手段に読み込む必要がな
い。
【0028】また、本発明の第1の観点の並列処理方法
は、プログラムに記述された命令に基づいて少なくとも
第1の処理および第2の処理を相互に並列に行う並列処
理方法であって、前記第1の処理は、待機命令の実行に
よって前記プログラムに基づいた処理を中断して待機状
態になり、第2の処理における待機解除命令の実行に基
づいて前記待機状態を解除して前記プログラムに基づい
た処理を再開し、前記第2の処理は、前記待機解除命令
を実行後、処理を中断することなく次の命令を実行す
る。
は、プログラムに記述された命令に基づいて少なくとも
第1の処理および第2の処理を相互に並列に行う並列処
理方法であって、前記第1の処理は、待機命令の実行に
よって前記プログラムに基づいた処理を中断して待機状
態になり、第2の処理における待機解除命令の実行に基
づいて前記待機状態を解除して前記プログラムに基づい
た処理を再開し、前記第2の処理は、前記待機解除命令
を実行後、処理を中断することなく次の命令を実行す
る。
【0029】また、本発明の第2の観点の並列処理方法
は、プログラムに記述された命令に基づいて少なくとも
第1の処理および第2の処理を相互に並列に行う並列処
理方法であって、前記第1の処理は、待機命令の実行に
よって前記プログラムに基づいた処理を中断して待機状
態になり、第2の処理における待機解除命令の実行に基
づいて前記待機状態を解除して前記プログラムに基づい
た処理を再開し、前記第2の処理は、前記待機解除命令
の実行時に、前記第1の処理が前記待機状態になってい
ない場合に、前記第1の処理が前記待機状態になるまで
同期待ち状態になる。
は、プログラムに記述された命令に基づいて少なくとも
第1の処理および第2の処理を相互に並列に行う並列処
理方法であって、前記第1の処理は、待機命令の実行に
よって前記プログラムに基づいた処理を中断して待機状
態になり、第2の処理における待機解除命令の実行に基
づいて前記待機状態を解除して前記プログラムに基づい
た処理を再開し、前記第2の処理は、前記待機解除命令
の実行時に、前記第1の処理が前記待機状態になってい
ない場合に、前記第1の処理が前記待機状態になるまで
同期待ち状態になる。
【0030】また、本発明の第1の観点の記録媒体は、
プログラムに記述された命令に基づいて相互に並列に行
われる第1の処理および第2の処理の手順をコンピュー
タで読み取り可能に記録した記録媒体であって、前記第
1の処理は、待機命令の実行によって前記プログラムに
基づいた処理を中断して待機状態になり、第2の処理に
おける待機解除命令の実行に基づいて前記待機状態を解
除して前記プログラムに基づいた処理を再開する処理で
あり、前記第2の処理は、前記待機解除命令を実行後、
処理を中断することなく次の命令を実行する処理であ
る。
プログラムに記述された命令に基づいて相互に並列に行
われる第1の処理および第2の処理の手順をコンピュー
タで読み取り可能に記録した記録媒体であって、前記第
1の処理は、待機命令の実行によって前記プログラムに
基づいた処理を中断して待機状態になり、第2の処理に
おける待機解除命令の実行に基づいて前記待機状態を解
除して前記プログラムに基づいた処理を再開する処理で
あり、前記第2の処理は、前記待機解除命令を実行後、
処理を中断することなく次の命令を実行する処理であ
る。
【0031】さらに、本発明の第2の観点の記録媒体
は、プログラムに記述された命令に基づいて相互に並列
に行われる第1の処理および第2の処理の手順をコンピ
ュータで読み取り可能に記録した記録媒体であって、前
記第1の処理は、待機命令の実行によって前記プログラ
ムに基づいた処理を中断して待機状態になり、第2の処
理における待機解除命令の実行に基づいて前記待機状態
を解除して前記プログラムに基づいた処理を再開する処
理であり、前記第2の処理は、前記待機解除命令の実行
時に、前記第1の処理が前記待機状態になっていない場
合に、前記第1の処理が前記待機状態になるまで同期待
ち状態になる処理である。
は、プログラムに記述された命令に基づいて相互に並列
に行われる第1の処理および第2の処理の手順をコンピ
ュータで読み取り可能に記録した記録媒体であって、前
記第1の処理は、待機命令の実行によって前記プログラ
ムに基づいた処理を中断して待機状態になり、第2の処
理における待機解除命令の実行に基づいて前記待機状態
を解除して前記プログラムに基づいた処理を再開する処
理であり、前記第2の処理は、前記待機解除命令の実行
時に、前記第1の処理が前記待機状態になっていない場
合に、前記第1の処理が前記待機状態になるまで同期待
ち状態になる処理である。
【0032】
【発明の実施の形態】以下、本発明の実施形態に係わる
マルチプロセッサについて説明する。第1実施形態 図1は、本実施形態のマルチプロセッサ51の構成図で
ある。図1に示すように、マルチプロセッサ51は、例
えば、共有バス17、処理手段および第2の記憶手段と
してのプロセッサエレメント611 〜614 、第1の記
憶手段としての共有メモリ65およびプログラム割り付
け手段としてのアービタ66を有する。マルチプロセッ
サ51は、例えば、共有バス17を介して、プロセッサ
エレメント611 〜614 、共有メモリ65およびアー
ビタ66を相互に接続したバス結合のアーキテクチャを
採用しており、これらの構成要素が単体の半導体チップ
内に組み込まれている。
マルチプロセッサについて説明する。第1実施形態 図1は、本実施形態のマルチプロセッサ51の構成図で
ある。図1に示すように、マルチプロセッサ51は、例
えば、共有バス17、処理手段および第2の記憶手段と
してのプロセッサエレメント611 〜614 、第1の記
憶手段としての共有メモリ65およびプログラム割り付
け手段としてのアービタ66を有する。マルチプロセッ
サ51は、例えば、共有バス17を介して、プロセッサ
エレメント611 〜614 、共有メモリ65およびアー
ビタ66を相互に接続したバス結合のアーキテクチャを
採用しており、これらの構成要素が単体の半導体チップ
内に組み込まれている。
【0033】〔構成要素の概要〕先ず、マルチプロセッ
サ51と前述した図5に示すマルチプロセッサ1との共
通点および相違点について説明する。共有バス17は、
前述した図5に示す従来のマルチプロセッサ1の共有バ
ス17と同じである。また、プロセッサエレメント61
1 〜614 は、前述した図5に示すプロセッサエレメン
ト111 〜114 と比べて、図6に示すようにプロセッ
サコア31およびローカルメモリ32を有するというハ
ードウェア構成は同じであるが、前述した従来のマルチ
プロセッサ1では用意されていないプログラム(プロセ
ス)相互間の同期確立のための新たな命令コードを実行
するため、当該命令コードの実行に伴う動作が異なる。
また、共有メモリ65は、図5に示す共有メモリ15と
比べて、ハードウェア構成は同じであるが、記憶してい
るユーザプログラムの内容が異なる。さらに、アービタ
56は、プロセッサエレメント511 〜514 の実行状
態(処理の負荷など)を監視し、当該実行状態に基づい
て、共有メモリ55に記憶されているソフトウェアリソ
ースをハードウェアリソースであるプロセッサエレメン
ト511 〜514 に割り当てる点は、図5に示すアービ
タ16と同様である。但し、アービタ56は、プロセッ
サエレメント611 〜614 において前述した新たな命
令コードが実行されたときに、図5に示すアービタ16
とは異なる種々の同期確立のための処理およびプロセッ
サエレメント611 〜614 へのユーザプログラムの割
り当て処理を行う。
サ51と前述した図5に示すマルチプロセッサ1との共
通点および相違点について説明する。共有バス17は、
前述した図5に示す従来のマルチプロセッサ1の共有バ
ス17と同じである。また、プロセッサエレメント61
1 〜614 は、前述した図5に示すプロセッサエレメン
ト111 〜114 と比べて、図6に示すようにプロセッ
サコア31およびローカルメモリ32を有するというハ
ードウェア構成は同じであるが、前述した従来のマルチ
プロセッサ1では用意されていないプログラム(プロセ
ス)相互間の同期確立のための新たな命令コードを実行
するため、当該命令コードの実行に伴う動作が異なる。
また、共有メモリ65は、図5に示す共有メモリ15と
比べて、ハードウェア構成は同じであるが、記憶してい
るユーザプログラムの内容が異なる。さらに、アービタ
56は、プロセッサエレメント511 〜514 の実行状
態(処理の負荷など)を監視し、当該実行状態に基づい
て、共有メモリ55に記憶されているソフトウェアリソ
ースをハードウェアリソースであるプロセッサエレメン
ト511 〜514 に割り当てる点は、図5に示すアービ
タ16と同様である。但し、アービタ56は、プロセッ
サエレメント611 〜614 において前述した新たな命
令コードが実行されたときに、図5に示すアービタ16
とは異なる種々の同期確立のための処理およびプロセッ
サエレメント611 〜614 へのユーザプログラムの割
り当て処理を行う。
【0034】〔命令コード〕マルチプロセッサ51は、
以下に示す命令コードを採用している。具体的には、マ
ルチプロセッサ51は、命令コードとして、プログラム
実行指示命令としての「gen(ユーザプログラム
名)」、同期待ち命令としての「wait(ユーザプロ
グラム名)」、待機解除命令としての「cont(ユー
ザプログラム名)」、待機命令としての「sleep」
およびプログラム終了命令としての「end」を有す
る。なお、マルチプロセッサ51は、その他にも、例え
ば、汎用のマルチプロセッサにおいて用意さている種々
の命令コードを有する。ここで、命令コード「gen
(ユーザプログラム名)」、「wait(ユーザプログ
ラム名)」および「end」は前述した図5に示すマル
チプロセッサ1が採用している同一名の命令コードと同
じであり、命令コード「cont(ユーザプログラム
名)」および「sleep」はマルチプロセッサ51が
独自に採用している命令コードである。なお、命令コー
ド「gen(ユーザプログラム名)」、「wait(ユ
ーザプログラム名)」および「cont(ユーザプログ
ラム名)」は、ユーザプログラム名を引数としている。
なお、引数の数は任意である。
以下に示す命令コードを採用している。具体的には、マ
ルチプロセッサ51は、命令コードとして、プログラム
実行指示命令としての「gen(ユーザプログラム
名)」、同期待ち命令としての「wait(ユーザプロ
グラム名)」、待機解除命令としての「cont(ユー
ザプログラム名)」、待機命令としての「sleep」
およびプログラム終了命令としての「end」を有す
る。なお、マルチプロセッサ51は、その他にも、例え
ば、汎用のマルチプロセッサにおいて用意さている種々
の命令コードを有する。ここで、命令コード「gen
(ユーザプログラム名)」、「wait(ユーザプログ
ラム名)」および「end」は前述した図5に示すマル
チプロセッサ1が採用している同一名の命令コードと同
じであり、命令コード「cont(ユーザプログラム
名)」および「sleep」はマルチプロセッサ51が
独自に採用している命令コードである。なお、命令コー
ド「gen(ユーザプログラム名)」、「wait(ユ
ーザプログラム名)」および「cont(ユーザプログ
ラム名)」は、ユーザプログラム名を引数としている。
なお、引数の数は任意である。
【0035】命令コード「gen(ユーザプログラム
名)」は、他のプロセッサエレメント511 〜51
4 に、引数「ユーザプログラム名」で指定したユーザプ
ログラムの実行を開始することを指示する命令コードで
ある。命令コード「wait(ユーザプログラム名)」
は、引数「ユーザプログラム名」で指定したユーザプロ
グラムが、命令コード「sleep」あるいは「en
d」を実行するまで、同期待ちを行うことを指示する命
令コードである。命令コード「cont(ユーザプログ
ラム名)」は、他のプロセッサエレメント511 〜51
4 で実行されている引数「ユーザプログラム名」で指定
されたユーザプログラムが待機状態になっているとき
に、当該待機状態を解除することを指示する命令コード
である。命令コード「sleep」は、ユーザプログラ
ムの実行を一時的に停止して待機状態となる命令コード
である。命令コード「end」は、ユーザプログラムの
実行を終了する命令コードである。
名)」は、他のプロセッサエレメント511 〜51
4 に、引数「ユーザプログラム名」で指定したユーザプ
ログラムの実行を開始することを指示する命令コードで
ある。命令コード「wait(ユーザプログラム名)」
は、引数「ユーザプログラム名」で指定したユーザプロ
グラムが、命令コード「sleep」あるいは「en
d」を実行するまで、同期待ちを行うことを指示する命
令コードである。命令コード「cont(ユーザプログ
ラム名)」は、他のプロセッサエレメント511 〜51
4 で実行されている引数「ユーザプログラム名」で指定
されたユーザプログラムが待機状態になっているとき
に、当該待機状態を解除することを指示する命令コード
である。命令コード「sleep」は、ユーザプログラ
ムの実行を一時的に停止して待機状態となる命令コード
である。命令コード「end」は、ユーザプログラムの
実行を終了する命令コードである。
【0036】なお、上述した命令コードは、プログラマ
がユーザプログラム作成時に、ユーザプログラム内に明
示して記述してもよいし、コンパイラが必要に応じて自
動的に挿入してもよい。
がユーザプログラム作成時に、ユーザプログラム内に明
示して記述してもよいし、コンパイラが必要に応じて自
動的に挿入してもよい。
【0037】〔各構成要素の詳細〕プロセッサエレメン
ト611 は、図5に示すように、処理手段としてのプロ
セッサコア31および第2の記憶手段としてのローカル
メモリ32を有する。なお、本実施形態では、プロセッ
サエレメント611 〜614 が相互に同じ構成である場
合を例示するが、本発明では、プロセッサエレメント6
11 〜614は同じ構成をしている必要はなく、例え
ば、プロセッサコア31の実行速度やローカルメモリ3
2の記憶容量などが異なっていてもよい。
ト611 は、図5に示すように、処理手段としてのプロ
セッサコア31および第2の記憶手段としてのローカル
メモリ32を有する。なお、本実施形態では、プロセッ
サエレメント611 〜614 が相互に同じ構成である場
合を例示するが、本発明では、プロセッサエレメント6
11 〜614は同じ構成をしている必要はなく、例え
ば、プロセッサコア31の実行速度やローカルメモリ3
2の記憶容量などが異なっていてもよい。
【0038】ローカルメモリ32は、共有バス17を介
して共有メモリ15から読み出されたユーザプログラム
を記憶する。
して共有メモリ15から読み出されたユーザプログラム
を記憶する。
【0039】プロセッサコア31は、ローカルメモリ3
2に記憶されているユーザプログラムの命令コードを順
次に読み出して実行する。また、プロセッサコア31
は、命令コード「gen(ユーザプログラム名)」を実
行すると、引数「ユーザプログラム名」によって特定さ
れるユーザプログラムの実行指示を、図1に示す共有バ
ス17を介してアービタ66に出力する。また、プロセ
ッサコア31は、命令コード「wait(ユーザプログ
ラム名)」を実行すると、同期待ち状態となり、図1に
共有バス17を介してアービタ66から、引数「ユーザ
プログラム名」によって特定されたユーザプログラムの
命令コード「end」あるいは「sleep」が実行さ
れたことを示す通知を入力すると、同期待ち状態を解除
して次の命令コードを実行する。
2に記憶されているユーザプログラムの命令コードを順
次に読み出して実行する。また、プロセッサコア31
は、命令コード「gen(ユーザプログラム名)」を実
行すると、引数「ユーザプログラム名」によって特定さ
れるユーザプログラムの実行指示を、図1に示す共有バ
ス17を介してアービタ66に出力する。また、プロセ
ッサコア31は、命令コード「wait(ユーザプログ
ラム名)」を実行すると、同期待ち状態となり、図1に
共有バス17を介してアービタ66から、引数「ユーザ
プログラム名」によって特定されたユーザプログラムの
命令コード「end」あるいは「sleep」が実行さ
れたことを示す通知を入力すると、同期待ち状態を解除
して次の命令コードを実行する。
【0040】また、プロセッサコア31は、命令コード
「cont(ユーザプログラム名)」を実行すると、引
数「ユーザプログラム名」によって特定されるユーザプ
ログラムの実行の待機状態を解除する指示を共有バス1
7を介してアービタ66に出力し、処理を中断すること
なく次の命令コードを実行する。また、プロセッサコア
31は、命令コード「sleep」を実行すると、当該
命令コードを実行したことを共有バス17を介してアー
ビタ66に通知すると共に、待機状態となり、その後、
共有バス17を介してアービタ66から待機状態を解除
する指示を入力したときに待機状態を解除して次の命令
コードを実行する。また、プロセッサコア31は、命令
コード「end」を実行すると、当該命令コードを実行
したことを共有バス17を介してアービタ66に通知す
ると共に、プログラムの実行を終了する。
「cont(ユーザプログラム名)」を実行すると、引
数「ユーザプログラム名」によって特定されるユーザプ
ログラムの実行の待機状態を解除する指示を共有バス1
7を介してアービタ66に出力し、処理を中断すること
なく次の命令コードを実行する。また、プロセッサコア
31は、命令コード「sleep」を実行すると、当該
命令コードを実行したことを共有バス17を介してアー
ビタ66に通知すると共に、待機状態となり、その後、
共有バス17を介してアービタ66から待機状態を解除
する指示を入力したときに待機状態を解除して次の命令
コードを実行する。また、プロセッサコア31は、命令
コード「end」を実行すると、当該命令コードを実行
したことを共有バス17を介してアービタ66に通知す
ると共に、プログラムの実行を終了する。
【0041】共有メモリ65は、前述したような命令コ
ード「gen(ユーザプログラム名)」、「wait
(ユーザプログラム名)」、「cont(ユーザプログ
ラム名)」、「sleep」および「end」を含む種
々の命令コードを記述した例えばユーザプログラムPr
g_a,Prg_b,Prg_c,Prg_d,Prg
_eを記憶している。
ード「gen(ユーザプログラム名)」、「wait
(ユーザプログラム名)」、「cont(ユーザプログ
ラム名)」、「sleep」および「end」を含む種
々の命令コードを記述した例えばユーザプログラムPr
g_a,Prg_b,Prg_c,Prg_d,Prg
_eを記憶している。
【0042】アービタ66は、共有バス17を介してプ
ロセッサエレメント611 〜614から、ユーザプログ
ラムの実行指示を入力すると、当該実行指示によって特
定されるユーザプログラムを、共有メモリ65から、プ
ロセッサエレメント611 〜614 の実行状態に基づい
て例えば負荷が最も小さいプロセッサエレメント611
〜614 のローカルメモリ32に読み込む。また、アー
ビタ66は、ユーザプログラムの実行の待機状態を解除
する指示を入力すると、当該指示によって特定されるユ
ーザプログラムを実行しているプロセッサエレメント6
11 〜614 に、共有バス17を介して、待機状態の解
除を示す指示を出力する。
ロセッサエレメント611 〜614から、ユーザプログ
ラムの実行指示を入力すると、当該実行指示によって特
定されるユーザプログラムを、共有メモリ65から、プ
ロセッサエレメント611 〜614 の実行状態に基づい
て例えば負荷が最も小さいプロセッサエレメント611
〜614 のローカルメモリ32に読み込む。また、アー
ビタ66は、ユーザプログラムの実行の待機状態を解除
する指示を入力すると、当該指示によって特定されるユ
ーザプログラムを実行しているプロセッサエレメント6
11 〜614 に、共有バス17を介して、待機状態の解
除を示す指示を出力する。
【0043】また、アービタ66は、命令コード「sl
eep」および「end」を実行したことを示す通知を
プロセッサエレメント611 〜614 から入力すると、
当該命令コードを含むプログラムの実行指示を出力した
プロセッサエレメント611〜614 に、当該通知を入
力したことを通知する。
eep」および「end」を実行したことを示す通知を
プロセッサエレメント611 〜614 から入力すると、
当該命令コードを含むプログラムの実行指示を出力した
プロセッサエレメント611〜614 に、当該通知を入
力したことを通知する。
【0044】以下、図1に示すマルチプロセッサ51の
プロセッサエレメント611 〜614 におけるユーザプ
ログラムの実行過程を追いながら、マルチプロセッサ5
1の動作を説明する。ここでは、図2に示すように、プ
ロセッサエレメント611 ,612 ,613,614 に
おいて、ユーザプログラムPrg_a,Prg_b,P
rg_c,Prg_d,Prg_eが実行される場合を
例示する。なお、ユーザプログラムPrg_a,Prg
_b,Prg_c,Prg_d,Prg_eは、例え
ば、磁気ディスク、磁気テープ、光ディスクおよび光磁
気ディスクなどのコンピュータによって読み取り可能な
記録媒体から図1に示す共有バス17に読み込まれてい
る。
プロセッサエレメント611 〜614 におけるユーザプ
ログラムの実行過程を追いながら、マルチプロセッサ5
1の動作を説明する。ここでは、図2に示すように、プ
ロセッサエレメント611 ,612 ,613,614 に
おいて、ユーザプログラムPrg_a,Prg_b,P
rg_c,Prg_d,Prg_eが実行される場合を
例示する。なお、ユーザプログラムPrg_a,Prg
_b,Prg_c,Prg_d,Prg_eは、例え
ば、磁気ディスク、磁気テープ、光ディスクおよび光磁
気ディスクなどのコンピュータによって読み取り可能な
記録媒体から図1に示す共有バス17に読み込まれてい
る。
【0045】先ず、アービタ66によって、共有メモリ
65からプロセッサエレメント611 のローカルメモリ
32に、図2に示すユーザプログラムPrg_aが読み
込まれる。そして、プロセッサエレメント611 のプロ
セッサコア31において、ユーザプログラムPrg_a
に記述された命令コードが順次に実行される。具体的に
は、プロセッサエレメント611 のプロセッサコア31
において、先ず、命令コード「gen(Prg_b)」
が実行され、当該命令コードの引数で特定されるユーザ
プログラムPrg_bの実行指示が、図1に示す共有バ
ス17を介してアービタ66に出力される。そして、ア
ービタ66によって、共有メモリ65から共有バス17
を介してプロセッサエレメント612 のローカルメモリ
32に、ユーザプログラムPrg_bが読み込まれる。
その後、プロセッサエレメント612 において、ローカ
ルメモリ32に記憶されたユーザプログラムPrg_b
に記述された命令コードが順次に読み出されて実行され
る。
65からプロセッサエレメント611 のローカルメモリ
32に、図2に示すユーザプログラムPrg_aが読み
込まれる。そして、プロセッサエレメント611 のプロ
セッサコア31において、ユーザプログラムPrg_a
に記述された命令コードが順次に実行される。具体的に
は、プロセッサエレメント611 のプロセッサコア31
において、先ず、命令コード「gen(Prg_b)」
が実行され、当該命令コードの引数で特定されるユーザ
プログラムPrg_bの実行指示が、図1に示す共有バ
ス17を介してアービタ66に出力される。そして、ア
ービタ66によって、共有メモリ65から共有バス17
を介してプロセッサエレメント612 のローカルメモリ
32に、ユーザプログラムPrg_bが読み込まれる。
その後、プロセッサエレメント612 において、ローカ
ルメモリ32に記憶されたユーザプログラムPrg_b
に記述された命令コードが順次に読み出されて実行され
る。
【0046】次に、プロセッサエレメント611 のプロ
セッサコア31において、命令コード「gen(Prg
_c)」および「gen(Prg_d)」が順次に実行
され、前述した命令コード「gen(Prg_a)」の
場合と同様の処理を経て、プロセッサエレメント613
および614 のプロセッサコア31において、ユーザプ
ログラムPrg_cおよびPrg_dの実行がそれぞれ
開始する。
セッサコア31において、命令コード「gen(Prg
_c)」および「gen(Prg_d)」が順次に実行
され、前述した命令コード「gen(Prg_a)」の
場合と同様の処理を経て、プロセッサエレメント613
および614 のプロセッサコア31において、ユーザプ
ログラムPrg_cおよびPrg_dの実行がそれぞれ
開始する。
【0047】次に、プロセッサエレメント611 のプロ
セッサコア31において、命令コード「wait(Pr
g_d)」が実行され、同期待ち状態となる。
セッサコア31において、命令コード「wait(Pr
g_d)」が実行され、同期待ち状態となる。
【0048】その後、プロセッサエレメント614 にお
いて、ユーザプログラムPrg_dに記述された命令コ
ード「sleep」が実行され、プロセッサエレメント
614 が待機状態になる。また、プロセッサエレメント
614 において命令コード「sleep」が実行された
ことが、共有バス17を介してアービタ66に通知され
る。そして、アービタ66に当該通知が入力されると、
ユーザプログラムPrg_dの実行指示を出力したプロ
セッサエレメント611 に、当該通知を入力したことが
アービタ66から通知される。そして、プロセッサエレ
メント611 がアービタ66から当該通知を入力する
と、同期待ち状態が解除され、プロセッサエレメント6
11 において次の命令コードが実行される。
いて、ユーザプログラムPrg_dに記述された命令コ
ード「sleep」が実行され、プロセッサエレメント
614 が待機状態になる。また、プロセッサエレメント
614 において命令コード「sleep」が実行された
ことが、共有バス17を介してアービタ66に通知され
る。そして、アービタ66に当該通知が入力されると、
ユーザプログラムPrg_dの実行指示を出力したプロ
セッサエレメント611 に、当該通知を入力したことが
アービタ66から通知される。そして、プロセッサエレ
メント611 がアービタ66から当該通知を入力する
と、同期待ち状態が解除され、プロセッサエレメント6
11 において次の命令コードが実行される。
【0049】次に、プロセッサエレメント611 のプロ
セッサコア31において、命令コード「wait(Pr
g_c)」が実行され、同期待ち状態となる。
セッサコア31において、命令コード「wait(Pr
g_c)」が実行され、同期待ち状態となる。
【0050】その後、プロセッサエレメント613 にお
いて、ユーザプログラムPrg_cの最後に記述された
命令コード「end」が実行され、プロセッサエレメン
ト613 におけるユーザプログラムPrg_cの実行が
終了する。また、プロセッサエレメント613 において
命令コード「end」が実行されたことが、共有バス1
7を介してアービタ66に通知される。そして、アービ
タ66に当該通知が入力されると、ユーザプログラムP
rg_cの実行指示を出力したプロセッサエレメント6
11 に、当該通知を入力したことがアービタ66から通
知される。そして、プロセッサエレメント611 がアー
ビタ66から当該通知を入力すると、同期待ち状態が解
除され、プロセッサエレメント611 において次の命令
コードが実行される。なお、アービタ66は、前述した
ように、プロセッサエレメント613 において命令コー
ド「end」が実行されたことを示す通知を入力する
と、その後、プロセッサエレメント613 の負荷はなく
なったと判断し、プロセッサエレメント613 のローカ
ルメモリ32を開放する。
いて、ユーザプログラムPrg_cの最後に記述された
命令コード「end」が実行され、プロセッサエレメン
ト613 におけるユーザプログラムPrg_cの実行が
終了する。また、プロセッサエレメント613 において
命令コード「end」が実行されたことが、共有バス1
7を介してアービタ66に通知される。そして、アービ
タ66に当該通知が入力されると、ユーザプログラムP
rg_cの実行指示を出力したプロセッサエレメント6
11 に、当該通知を入力したことがアービタ66から通
知される。そして、プロセッサエレメント611 がアー
ビタ66から当該通知を入力すると、同期待ち状態が解
除され、プロセッサエレメント611 において次の命令
コードが実行される。なお、アービタ66は、前述した
ように、プロセッサエレメント613 において命令コー
ド「end」が実行されたことを示す通知を入力する
と、その後、プロセッサエレメント613 の負荷はなく
なったと判断し、プロセッサエレメント613 のローカ
ルメモリ32を開放する。
【0051】次に、プロセッサエレメント611 のプロ
セッサコア31において、命令コード「gen(Prg
_e)」が実行され、前述した命令コード「gen(P
rg_a)」の場合と同様の処理を経て、前述したよう
に開放されたプロセッサエレメント613 のローカルメ
モリ32にユーザプログラムPrg_eが読み込まれ、
プロセッサエレメント613 のプロセッサコア31にお
いてユーザプログラムPrg_eが実行される。
セッサコア31において、命令コード「gen(Prg
_e)」が実行され、前述した命令コード「gen(P
rg_a)」の場合と同様の処理を経て、前述したよう
に開放されたプロセッサエレメント613 のローカルメ
モリ32にユーザプログラムPrg_eが読み込まれ、
プロセッサエレメント613 のプロセッサコア31にお
いてユーザプログラムPrg_eが実行される。
【0052】次に、プロセッサエレメント611 におい
て、命令コード「cont(Prg_d)」が実行さ
れ、ユーザプログラムPrg_dの実行の待機状態を解
除する指示が、共有バス17を介してアービタ66に出
力される。そして、アービタ66によって、ユーザプロ
グラムPrg_dを実行しているプロセッサエレメント
614 に、共有バス17を介して、待機状態の解除を示
す指示が出力される。そして、プロセッサエレメント6
14 がアービタ66から当該指示を入力すると、待機状
態が解除され、プロセッサエレメント614 において次
の命令コードが実行される。なお、プロセッサエレメン
ト611 では、命令コード「cont(Prg_d)」
の実行後に、処理を中断することなく、次の命令コード
が実行される。
て、命令コード「cont(Prg_d)」が実行さ
れ、ユーザプログラムPrg_dの実行の待機状態を解
除する指示が、共有バス17を介してアービタ66に出
力される。そして、アービタ66によって、ユーザプロ
グラムPrg_dを実行しているプロセッサエレメント
614 に、共有バス17を介して、待機状態の解除を示
す指示が出力される。そして、プロセッサエレメント6
14 がアービタ66から当該指示を入力すると、待機状
態が解除され、プロセッサエレメント614 において次
の命令コードが実行される。なお、プロセッサエレメン
ト611 では、命令コード「cont(Prg_d)」
の実行後に、処理を中断することなく、次の命令コード
が実行される。
【0053】次に、プロセッサエレメント611 のプロ
セッサコア31において、命令コード「wait(Pr
g_d)」が実行され、同期待ち状態となる。
セッサコア31において、命令コード「wait(Pr
g_d)」が実行され、同期待ち状態となる。
【0054】その後、プロセッサエレメント614 にお
いて、ユーザプログラムPrg_dの最後に記述された
命令コード「end」が実行され、プロセッサエレメン
ト614 におけるユーザプログラムPrg_dの実行が
終了する。また、プロセッサエレメント614 において
命令コード「end」が実行されたことが、共有バス1
7を介してアービタ66に通知される。そして、アービ
タ66に当該通知が入力されると、ユーザプログラムP
rg_dの実行指示を出力したプロセッサエレメント6
11 に、当該通知を入力したことがアービタ66から通
知される。そして、プロセッサエレメント611 がアー
ビタ66から当該通知を入力すると、同期待ち状態が解
除され、プロセッサエレメント611 において次の命令
コードが実行される。なお、アービタ66は、前述した
ように、プロセッサエレメント614 において命令コー
ド「end」が実行されたことを示す通知を入力する
と、その後、プロセッサエレメント614 の負荷はなく
なったと判断し、プロセッサエレメント614 のローカ
ルメモリ32を開放する。
いて、ユーザプログラムPrg_dの最後に記述された
命令コード「end」が実行され、プロセッサエレメン
ト614 におけるユーザプログラムPrg_dの実行が
終了する。また、プロセッサエレメント614 において
命令コード「end」が実行されたことが、共有バス1
7を介してアービタ66に通知される。そして、アービ
タ66に当該通知が入力されると、ユーザプログラムP
rg_dの実行指示を出力したプロセッサエレメント6
11 に、当該通知を入力したことがアービタ66から通
知される。そして、プロセッサエレメント611 がアー
ビタ66から当該通知を入力すると、同期待ち状態が解
除され、プロセッサエレメント611 において次の命令
コードが実行される。なお、アービタ66は、前述した
ように、プロセッサエレメント614 において命令コー
ド「end」が実行されたことを示す通知を入力する
と、その後、プロセッサエレメント614 の負荷はなく
なったと判断し、プロセッサエレメント614 のローカ
ルメモリ32を開放する。
【0055】次に、プロセッサエレメント611 のプロ
セッサコア31において、命令コード「wait(Pr
g_e)」が実行され、同期待ち状態となる。
セッサコア31において、命令コード「wait(Pr
g_e)」が実行され、同期待ち状態となる。
【0056】その後、プロセッサエレメント613 にお
いて、ユーザプログラムPrg_eの最後に記述された
命令コード「end」が実行され、プロセッサエレメン
ト613 におけるユーザプログラムPrg_eの実行が
終了する。また、プロセッサエレメント613 において
命令コード「end」が実行されたことが、共有バス1
7を介してアービタ66に通知される。そして、アービ
タ66に当該通知が入力されると、ユーザプログラムP
rg_eの実行指示を出力したプロセッサエレメント6
11 に、当該通知を入力したことがアービタ66から通
知される。そして、プロセッサエレメント611 がアー
ビタ66から当該通知を入力すると、同期待ち状態が解
除され、プロセッサエレメント611 において次の命令
コードが実行される。なお、アービタ66は、前述した
ように、プロセッサエレメント613 おいて命令コード
「end」が実行されたことを示す通知を入力すると、
その後、プロセッサエレメント613 の負荷はなくなっ
たと判断し、プロセッサエレメント613 のローカルメ
モリ32を開放する。
いて、ユーザプログラムPrg_eの最後に記述された
命令コード「end」が実行され、プロセッサエレメン
ト613 におけるユーザプログラムPrg_eの実行が
終了する。また、プロセッサエレメント613 において
命令コード「end」が実行されたことが、共有バス1
7を介してアービタ66に通知される。そして、アービ
タ66に当該通知が入力されると、ユーザプログラムP
rg_eの実行指示を出力したプロセッサエレメント6
11 に、当該通知を入力したことがアービタ66から通
知される。そして、プロセッサエレメント611 がアー
ビタ66から当該通知を入力すると、同期待ち状態が解
除され、プロセッサエレメント611 において次の命令
コードが実行される。なお、アービタ66は、前述した
ように、プロセッサエレメント613 おいて命令コード
「end」が実行されたことを示す通知を入力すると、
その後、プロセッサエレメント613 の負荷はなくなっ
たと判断し、プロセッサエレメント613 のローカルメ
モリ32を開放する。
【0057】以上説明したように、マルチプロセッサ5
1によれば、プログラムの終了を示す命令コード「en
d」の他に、プログラムの実行の待機状態を指示する命
令コード「sleep」と、当該待機状態を解除する命
令コード「cont」とを用いることで、異なるプロセ
ッサエレメント611 〜614 上で実行されているプロ
グラムの命令コード相互間で同期をとることができる。
そのため、マルチプロセッサ51によれば、命令コード
相互間で同期とる記述を含むプログラムに基づいた多様
な処理を行うことが可能になる。すなわち、従来のマル
チプロセッサ1のように、命令コード「end」による
ユーザプログラムの実行終了を伴わずに、ユーザプログ
ラム相互間で同期をとることが可能になる。
1によれば、プログラムの終了を示す命令コード「en
d」の他に、プログラムの実行の待機状態を指示する命
令コード「sleep」と、当該待機状態を解除する命
令コード「cont」とを用いることで、異なるプロセ
ッサエレメント611 〜614 上で実行されているプロ
グラムの命令コード相互間で同期をとることができる。
そのため、マルチプロセッサ51によれば、命令コード
相互間で同期とる記述を含むプログラムに基づいた多様
な処理を行うことが可能になる。すなわち、従来のマル
チプロセッサ1のように、命令コード「end」による
ユーザプログラムの実行終了を伴わずに、ユーザプログ
ラム相互間で同期をとることが可能になる。
【0058】また、マルチプロセッサ51によれば、図
2に示すように、ユーザプログラムPrg_aにおい
て、命令コード「cont(Prg_d)」の記述の前
に、命令コード「wait(Prg_d)」が記述され
ているため、ユーザプログラムPrg_dの命令コード
「sleep」の実行前に、ユーザプログラムPrg_
aの命令コード「cont(Prg_d)」が実行され
てしまうことを回避できる。これにより、命令コード
「sleep」によるプロセッサエレメント614の待
機状態が、プロセッサエレメント611 における命令
コード「cont(Prg_d)」の実行によって確実
に解除される。
2に示すように、ユーザプログラムPrg_aにおい
て、命令コード「cont(Prg_d)」の記述の前
に、命令コード「wait(Prg_d)」が記述され
ているため、ユーザプログラムPrg_dの命令コード
「sleep」の実行前に、ユーザプログラムPrg_
aの命令コード「cont(Prg_d)」が実行され
てしまうことを回避できる。これにより、命令コード
「sleep」によるプロセッサエレメント614の待
機状態が、プロセッサエレメント611 における命令
コード「cont(Prg_d)」の実行によって確実
に解除される。
【0059】また、マルチプロセッサ51によれば、命
令コード「sleep」が実行された場合に、当該命令
コード「sleep」を実行したことを示す通知をアー
ビタ66が入力することで、当該命令コード「slee
p」を実行したプロセッサエレメント611 〜614 に
おいて当該命令コード「sleep」を含むユーザプロ
グラムの実行が将来再び再開されることをアービタ66
が知ることができる。そのため、アービタ66によっ
て、当該ユーザプログラムが他のユーザプログラムと入
れ替えられてしまうことを回避することが可能になり、
ユーザプログラムの読み込み動作の回数を削減して処理
時間の短縮が図れる。具体的には、図2に示す例におい
て、共有メモリ65からプロセッサエレメント614 の
ローカルメモリ32に、ユーザプログラムPrg_dを
1回のみ読み込めばよく、ユーザプログラムPrg_d
の読み込みによるプロセッサエレメント614 の待ち時
間を短くできる。また、ユーザプログラムPrg_dの
実行を再開するときには、プロセッサエレメント611
における命令コード「cont(Prg_d)」の実行
によって、その旨がプロセッサエレメント614 に瞬時
に通知されることから、高速な応答が要求されるリアル
タイム性が問われるユーザプログラムを実行する場合に
は特に有効である。すなわち、図8を用いて前述したよ
うな、プロセッサエレメント111 における命令コード
「gen(Prg_D)」の2回目の実行時に、ユーザ
プログラムPrg_Dを再びローカルメモリ32に読み
込むという無駄な動作の発生を回避できる。
令コード「sleep」が実行された場合に、当該命令
コード「sleep」を実行したことを示す通知をアー
ビタ66が入力することで、当該命令コード「slee
p」を実行したプロセッサエレメント611 〜614 に
おいて当該命令コード「sleep」を含むユーザプロ
グラムの実行が将来再び再開されることをアービタ66
が知ることができる。そのため、アービタ66によっ
て、当該ユーザプログラムが他のユーザプログラムと入
れ替えられてしまうことを回避することが可能になり、
ユーザプログラムの読み込み動作の回数を削減して処理
時間の短縮が図れる。具体的には、図2に示す例におい
て、共有メモリ65からプロセッサエレメント614 の
ローカルメモリ32に、ユーザプログラムPrg_dを
1回のみ読み込めばよく、ユーザプログラムPrg_d
の読み込みによるプロセッサエレメント614 の待ち時
間を短くできる。また、ユーザプログラムPrg_dの
実行を再開するときには、プロセッサエレメント611
における命令コード「cont(Prg_d)」の実行
によって、その旨がプロセッサエレメント614 に瞬時
に通知されることから、高速な応答が要求されるリアル
タイム性が問われるユーザプログラムを実行する場合に
は特に有効である。すなわち、図8を用いて前述したよ
うな、プロセッサエレメント111 における命令コード
「gen(Prg_D)」の2回目の実行時に、ユーザ
プログラムPrg_Dを再びローカルメモリ32に読み
込むという無駄な動作の発生を回避できる。
【0060】上述したような共有メモリ65からローカ
ルメモリ32へのユーザプログラムの無駄な読み込みを
回避することによる効果は、ローカルメモリ32のメモ
リ容量と読み込みを行うユーザプログラムの容量とが同
じオーダーである場合に特に顕著である。
ルメモリ32へのユーザプログラムの無駄な読み込みを
回避することによる効果は、ローカルメモリ32のメモ
リ容量と読み込みを行うユーザプログラムの容量とが同
じオーダーである場合に特に顕著である。
【0061】第2実施形態 本実施形態のマルチプロセッサは、基本的には、前述し
た第1実施形態のマルチプロセッサ51と同じである
が、上述した命令コード「cont」の代わりに、待機
解除命令として以下に示す命令コード「cont_a」
を用いる点がマルチプロセッサ51とは異なる。すなわ
ち、前述した第1実施形態の命令コード「cont」
は、一のプロセッサエレメントにおける命令コード「c
ont」の実行が、他のプロセッサエレメントにおける
当該命令コード「cont」に対応する命令コード「s
leep」の実行よりも遅いと当該命令コード「sle
ep」による当該他のプロセッサエレメントの待機状態
を解除できない。このような事態を回避するために、第
1実施形態では、例えば、図2に示すように、ユーザプ
ログラムPrg_aには、命令コード「cont(Pr
g_d)」の記述より前に、ユーザプログラムPrg_
dの命令コード「sleep」の実行によって同期待ち
が解除される命令コード「wait(Prg_d)」を
記述する必要があった。
た第1実施形態のマルチプロセッサ51と同じである
が、上述した命令コード「cont」の代わりに、待機
解除命令として以下に示す命令コード「cont_a」
を用いる点がマルチプロセッサ51とは異なる。すなわ
ち、前述した第1実施形態の命令コード「cont」
は、一のプロセッサエレメントにおける命令コード「c
ont」の実行が、他のプロセッサエレメントにおける
当該命令コード「cont」に対応する命令コード「s
leep」の実行よりも遅いと当該命令コード「sle
ep」による当該他のプロセッサエレメントの待機状態
を解除できない。このような事態を回避するために、第
1実施形態では、例えば、図2に示すように、ユーザプ
ログラムPrg_aには、命令コード「cont(Pr
g_d)」の記述より前に、ユーザプログラムPrg_
dの命令コード「sleep」の実行によって同期待ち
が解除される命令コード「wait(Prg_d)」を
記述する必要があった。
【0062】本実施形態では、第1実施形態の命令コー
ド「cont」の代わりに、新たな命令コード「con
t_a」を用いて、それ以前に命令コード「wait」
を記述することを不要にしている。命令コード「con
t_a」は、命令コード「cont」と同様に、引数と
してユーザプログラム名を指定する。すなわち、命令フ
ォーマットは「cont_a(ユーザプログラム名)」
となる。また、図1に示すプロセッサエレメント611
〜614 のプロセッサコア31は、命令コード「con
t_a(ユーザプログラム名)」を実行すると、引数
「ユーザプログラム名」によって特定されるユーザプロ
グラムの実行の待機状態を解除する指示を図1に示す共
有バス17を介してアービタ66に出力する。プロセッ
サコア31は、命令コード「cont_a(ユーザプロ
グラム名)」を実行すると、その後、処理を中断するこ
となく、次の命令コードを実行する。また、プロセッサ
エレメント611 〜614 は、アービタ66から逆同期
待ち指示を入力すると、その後、アービタ66から逆同
期待ち状態を解除する指示を入力するまで逆同期待ち状
態となる。
ド「cont」の代わりに、新たな命令コード「con
t_a」を用いて、それ以前に命令コード「wait」
を記述することを不要にしている。命令コード「con
t_a」は、命令コード「cont」と同様に、引数と
してユーザプログラム名を指定する。すなわち、命令フ
ォーマットは「cont_a(ユーザプログラム名)」
となる。また、図1に示すプロセッサエレメント611
〜614 のプロセッサコア31は、命令コード「con
t_a(ユーザプログラム名)」を実行すると、引数
「ユーザプログラム名」によって特定されるユーザプロ
グラムの実行の待機状態を解除する指示を図1に示す共
有バス17を介してアービタ66に出力する。プロセッ
サコア31は、命令コード「cont_a(ユーザプロ
グラム名)」を実行すると、その後、処理を中断するこ
となく、次の命令コードを実行する。また、プロセッサ
エレメント611 〜614 は、アービタ66から逆同期
待ち指示を入力すると、その後、アービタ66から逆同
期待ち状態を解除する指示を入力するまで逆同期待ち状
態となる。
【0063】アービタ66は、ユーザプログラムの実行
の待機状態を解除する指示を入力すると、当該ユーザプ
ログラムが待機状態である否かを判断し、待機状態であ
ると判断した場合に、当該待機状態のユーザプログラム
が割り当てられたプロセッサエレメント611 〜614
に、共有バス17を介して、待機状態の解除を示す指示
を出力する。一方、アービタ66は、上記判断におい
て、当該ユーザプログラムが待機状態ではないと判断し
た場合には、ユーザプログラムの実行の待機状態を解除
する指示を出力したプロセッサエレメント611 〜61
4 に逆同期待ち指示を出力する。その後、アービタ66
は、当該ユーザプログラムから、命令コード「slee
p」を実行したことの通知を受けると、上記逆同期待ち
状態となっているプロセッサエレメント611 〜614
に、逆同期待ち解除を示す指示を出力すると共に、当該
命令コード「sleep」を実行したプロセッサエレメ
ント611 〜614 に、共有バス17を介して待機状態
を解除する指示を出力する。
の待機状態を解除する指示を入力すると、当該ユーザプ
ログラムが待機状態である否かを判断し、待機状態であ
ると判断した場合に、当該待機状態のユーザプログラム
が割り当てられたプロセッサエレメント611 〜614
に、共有バス17を介して、待機状態の解除を示す指示
を出力する。一方、アービタ66は、上記判断におい
て、当該ユーザプログラムが待機状態ではないと判断し
た場合には、ユーザプログラムの実行の待機状態を解除
する指示を出力したプロセッサエレメント611 〜61
4 に逆同期待ち指示を出力する。その後、アービタ66
は、当該ユーザプログラムから、命令コード「slee
p」を実行したことの通知を受けると、上記逆同期待ち
状態となっているプロセッサエレメント611 〜614
に、逆同期待ち解除を示す指示を出力すると共に、当該
命令コード「sleep」を実行したプロセッサエレメ
ント611 〜614 に、共有バス17を介して待機状態
を解除する指示を出力する。
【0064】以下、図1に示すプロセッサエレメント6
11 〜614 におけるユーザプログラムの実行過程を追
いながら、本実施形態のマルチプロセッサの動作を説明
する。ここでは、図3に示すように、図1に示すプロセ
ッサエレメント611 ,612 ,613 ,614 におい
て、ユーザプログラムPrg_aa,Prg_b,Pr
g_c,Prg_d,Prg_eが実行される場合を例
示する。図3に示すユーザプログラムPrg_aaは、
図2に示す命令コード「cont(Prg_d)」およ
びその前の命令コード「wait(Prg_d)」の代
わりに命令コード「cont_a(Prg_d)」を記
述している点が前述したユーザプログラムPrg_aと
は異なる。また、図3に示すユーザプログラムPrg_
b,Prg_c,Prg_d,Prg_eは、それぞれ
図2に示すユーザプログラムPrg_b,Prg_c,
Prg_d,Prg_eと同じである。
11 〜614 におけるユーザプログラムの実行過程を追
いながら、本実施形態のマルチプロセッサの動作を説明
する。ここでは、図3に示すように、図1に示すプロセ
ッサエレメント611 ,612 ,613 ,614 におい
て、ユーザプログラムPrg_aa,Prg_b,Pr
g_c,Prg_d,Prg_eが実行される場合を例
示する。図3に示すユーザプログラムPrg_aaは、
図2に示す命令コード「cont(Prg_d)」およ
びその前の命令コード「wait(Prg_d)」の代
わりに命令コード「cont_a(Prg_d)」を記
述している点が前述したユーザプログラムPrg_aと
は異なる。また、図3に示すユーザプログラムPrg_
b,Prg_c,Prg_d,Prg_eは、それぞれ
図2に示すユーザプログラムPrg_b,Prg_c,
Prg_d,Prg_eと同じである。
【0065】先ず、図3に示すように、プロセッサエレ
メント611 において、ユーザプログラムPrg_aa
に記述された命令コード「gen(Prg_b)」,
「gen(Prg_c)」,「gen(Prg_
d)」,「wait(Prg_c)」が順に実行され
る。これらの処理は、図2を用いて前述した同一名の命
令コードの処理と同じである。
メント611 において、ユーザプログラムPrg_aa
に記述された命令コード「gen(Prg_b)」,
「gen(Prg_c)」,「gen(Prg_
d)」,「wait(Prg_c)」が順に実行され
る。これらの処理は、図2を用いて前述した同一名の命
令コードの処理と同じである。
【0066】そして、命令コード「wait(Prg_
c)」による同期待ち状態が解除されると、プロセッサ
エレメント611 のプロセッサコア31において、命令
コード「cont_a(Prg_d)」が実行される。
これにより、ユーザプログラムPrg_dの実行の待機
状態を解除する指示が、図1に示す共有バス17を介し
てプロセッサエレメント611 からアービタ66に出力
される。そして、アービタ66において、プロセッサエ
レメント614 で実行されているユーザプログラムPr
g_dが待機状態である否かが判断され、この場合に
は、待機状態となっていないので、プロセッサエレメン
ト611 に逆同期待ち指示が出力される。そして、当該
逆同期待ち指示を入力したプロセッサエレメント611
は、逆同期待ち状態となる。その後、プロセッサエレメ
ント614 において、ユーザプログラムPrg_dの命
令コード「sleep」が実行され、当該命令コード
「sleep」を実行したことを示す通知が、共有バス
17を介してプロセッサエレメント614 からアービタ
66に出力される。そして、当該通知に基づいて、共有
バス17を介してアービタ66からプロセッサエレメン
ト611 に、逆同期待ち状態を解除する指示が出力さ
れ、プロセッサエレメント611 の逆同期待ちが解除さ
れる。次に、プロセッサエレメント611 において、ユ
ーザプログラムPrg_aaの命令コード「gen(P
rg_e)」,「wait(Prg_d)」,「wai
t(Prg_e)」が実行される。当該実行による処理
は、図2を用いて前述した場合と同じである。
c)」による同期待ち状態が解除されると、プロセッサ
エレメント611 のプロセッサコア31において、命令
コード「cont_a(Prg_d)」が実行される。
これにより、ユーザプログラムPrg_dの実行の待機
状態を解除する指示が、図1に示す共有バス17を介し
てプロセッサエレメント611 からアービタ66に出力
される。そして、アービタ66において、プロセッサエ
レメント614 で実行されているユーザプログラムPr
g_dが待機状態である否かが判断され、この場合に
は、待機状態となっていないので、プロセッサエレメン
ト611 に逆同期待ち指示が出力される。そして、当該
逆同期待ち指示を入力したプロセッサエレメント611
は、逆同期待ち状態となる。その後、プロセッサエレメ
ント614 において、ユーザプログラムPrg_dの命
令コード「sleep」が実行され、当該命令コード
「sleep」を実行したことを示す通知が、共有バス
17を介してプロセッサエレメント614 からアービタ
66に出力される。そして、当該通知に基づいて、共有
バス17を介してアービタ66からプロセッサエレメン
ト611 に、逆同期待ち状態を解除する指示が出力さ
れ、プロセッサエレメント611 の逆同期待ちが解除さ
れる。次に、プロセッサエレメント611 において、ユ
ーザプログラムPrg_aaの命令コード「gen(P
rg_e)」,「wait(Prg_d)」,「wai
t(Prg_e)」が実行される。当該実行による処理
は、図2を用いて前述した場合と同じである。
【0067】なお、例えば、図4に示すように、プロセ
ッサエレメント614 における命令コード「slee
p」が、プロセッサエレメント611 における「con
t_a(Prg_d)」の実行より早いタイミングで行
われた場合には、プロセッサエレメント614 は、命令
コード「sleep」を実行してから待機状態となり、
プロセッサエレメント611 における命令コード「co
nt_a(Prg_d)」の実行に基づいた待機解除指
示をアービタ66から入力したときに、当該待機状態を
解除する。
ッサエレメント614 における命令コード「slee
p」が、プロセッサエレメント611 における「con
t_a(Prg_d)」の実行より早いタイミングで行
われた場合には、プロセッサエレメント614 は、命令
コード「sleep」を実行してから待機状態となり、
プロセッサエレメント611 における命令コード「co
nt_a(Prg_d)」の実行に基づいた待機解除指
示をアービタ66から入力したときに、当該待機状態を
解除する。
【0068】以上説明したように、本実施形態のマルチ
プロセッサによれば、上述したような命令コード「co
nt_a」を用いることで、例えば、図2に示す第1実
施形態のように、命令コード「cont」の記述より前
に命令コード「sleep」の実行によって同期待ちが
解除される命令コード「wait」を記述する必要がな
い。すなわち、例えば、図2に示す場合に、ユーザプロ
グラムPrg_dの命令コード「sleep」の実行
が、命令コード「cont_a(Prg_d)」より前
のタイミングで実行された場合でも、プロセッサエレメ
ント611 が逆同期待ちになり、ユーザプログラムPr
g_aaとPrg_dとの間の同期が保証される。その
ため、プログラマはユーザプログラムPrg_dの命令
コード「sleep」の実行タイミングを意識せずにユ
ーザプログラムPrg_aaを記述でき、プログラマの
負担を軽減できる。
プロセッサによれば、上述したような命令コード「co
nt_a」を用いることで、例えば、図2に示す第1実
施形態のように、命令コード「cont」の記述より前
に命令コード「sleep」の実行によって同期待ちが
解除される命令コード「wait」を記述する必要がな
い。すなわち、例えば、図2に示す場合に、ユーザプロ
グラムPrg_dの命令コード「sleep」の実行
が、命令コード「cont_a(Prg_d)」より前
のタイミングで実行された場合でも、プロセッサエレメ
ント611 が逆同期待ちになり、ユーザプログラムPr
g_aaとPrg_dとの間の同期が保証される。その
ため、プログラマはユーザプログラムPrg_dの命令
コード「sleep」の実行タイミングを意識せずにユ
ーザプログラムPrg_aaを記述でき、プログラマの
負担を軽減できる。
【0069】本発明は上述した実施形態には限定されな
い。例えば、上述した実施形態では、プロセッサエレメ
ント611 〜612 が、命令コード「cont」および
「cont_a」の実行に応じて出力した待機状態を解
除する指示を、アービタ66を介して、待機状態のユー
ザプログラムを実行しているプロセッサエレメント61
1 〜614 に出力する場合を例示したが、待機状態のユ
ーザプログラムを実行しているプロセッサエレメント6
11 〜614が共有バス17を監視し、待機状態を解除
する指示をアービタ66を介さずに入力するようにして
もよい。また、同様に、プロセッサエレメント611
〜614 から出力された命令コード「sleep」およ
び「end」を実行したことを示す通知を、アービタ6
6を介さずに、共有バス17を監視している対応するプ
ロセッサエレメント611〜614 が直接入力するよう
にしてもよい。
い。例えば、上述した実施形態では、プロセッサエレメ
ント611 〜612 が、命令コード「cont」および
「cont_a」の実行に応じて出力した待機状態を解
除する指示を、アービタ66を介して、待機状態のユー
ザプログラムを実行しているプロセッサエレメント61
1 〜614 に出力する場合を例示したが、待機状態のユ
ーザプログラムを実行しているプロセッサエレメント6
11 〜614が共有バス17を監視し、待機状態を解除
する指示をアービタ66を介さずに入力するようにして
もよい。また、同様に、プロセッサエレメント611
〜614 から出力された命令コード「sleep」およ
び「end」を実行したことを示す通知を、アービタ6
6を介さずに、共有バス17を監視している対応するプ
ロセッサエレメント611〜614 が直接入力するよう
にしてもよい。
【0070】また、上述した実施形態では、ユーザプロ
グラムPrg_a,Prg_aaのみに、命令コード
「gen」,「cont」および「cont_a」が記
述されている場合を例示したが、これらの命令コードは
ユーザプログラムPrg_b,Prg_c,Prg_d
にも記述されていてもよい。また、複数のユーザプログ
ラムに、命令コード「sleep」が記述されていても
よい。
グラムPrg_a,Prg_aaのみに、命令コード
「gen」,「cont」および「cont_a」が記
述されている場合を例示したが、これらの命令コードは
ユーザプログラムPrg_b,Prg_c,Prg_d
にも記述されていてもよい。また、複数のユーザプログ
ラムに、命令コード「sleep」が記述されていても
よい。
【0071】また、上述した実施形態では、4個の同一
構成のプロセッサエレメントを有するマルチプロセッサ
を例示したが、プロセッサエレメントの数は2以上であ
れば任意であり、複数のプロセッサエレメントの構成が
異なっていてもよい。
構成のプロセッサエレメントを有するマルチプロセッサ
を例示したが、プロセッサエレメントの数は2以上であ
れば任意であり、複数のプロセッサエレメントの構成が
異なっていてもよい。
【0072】また、上述した実施形態では、図1に示す
構成要素が同一半導体チップ内に組み込まれている場合
を例示したが、本発明は、例えば、図1に示すプロセッ
サエレメント611 〜614 が、ネットワークを介して
接続された相互に異なるコンピュータ内にそれぞれ組み
込まれた分散処理システムにも適用できる。
構成要素が同一半導体チップ内に組み込まれている場合
を例示したが、本発明は、例えば、図1に示すプロセッ
サエレメント611 〜614 が、ネットワークを介して
接続された相互に異なるコンピュータ内にそれぞれ組み
込まれた分散処理システムにも適用できる。
【0073】
【発明の効果】以上説明したように、本発明の並列処理
装置によれば、複数の処理手段で並列に実行されるプロ
グラム相互間で、多様な形態の同期をとることができ
る。また、本発明の並列処理方法および記録媒体によれ
ば、並列に行われる複数の処理の相互間で、多様な形態
の同期をとることができる。また、本発明の並列処理装
置によれば、処理手段が待機命令を実行することで、当
該処理手段に対応する第2の記憶手段への第1の記憶手
段からのプログラムの読み込みを制御でき、第1の記憶
手段から第2の記憶手段へのプログラムの読み込み動作
の回数を削減し、処理手段の待ち時間を短縮できる。
装置によれば、複数の処理手段で並列に実行されるプロ
グラム相互間で、多様な形態の同期をとることができ
る。また、本発明の並列処理方法および記録媒体によれ
ば、並列に行われる複数の処理の相互間で、多様な形態
の同期をとることができる。また、本発明の並列処理装
置によれば、処理手段が待機命令を実行することで、当
該処理手段に対応する第2の記憶手段への第1の記憶手
段からのプログラムの読み込みを制御でき、第1の記憶
手段から第2の記憶手段へのプログラムの読み込み動作
の回数を削減し、処理手段の待ち時間を短縮できる。
【図1】図1は、本発明の第1実施形態のマルチプロセ
ッサの構成図である。
ッサの構成図である。
【図2】図2は、図1に示す本発明の第1実施形態のマ
ルチプロセッサの動作を説明するための図である。
ルチプロセッサの動作を説明するための図である。
【図3】図3は、本発明の第2実施形態のマルチプロセ
ッサの動作を説明するための図である。
ッサの動作を説明するための図である。
【図4】図3は、本発明の第2実施形態のマルチプロセ
ッサのその他の動作を説明するための図である。
ッサのその他の動作を説明するための図である。
【図5】図5は、一般的なマルチプロセッサの構成図で
ある。
ある。
【図6】図6は、図1および図5に示すプロセッサエレ
メントの内部構成図である。
メントの内部構成図である。
【図7】図7は、図5に示すマルチプロセッサの各プロ
セッサエレメントへのプログラムの割り付けを説明する
ための図である。
セッサエレメントへのプログラムの割り付けを説明する
ための図である。
【図8】図8は、図5に示す一般的なマルチプロセッサ
の動作を説明するための図である。
の動作を説明するための図である。
17…共有バス、31…プロセッサコア、32…ローカ
ルメモリ、51…マルチプロセッサ、611 〜614 …
プロセッサエレメント、65…共有メモリ、66…アー
ビタ
ルメモリ、51…マルチプロセッサ、611 〜614 …
プロセッサエレメント、65…共有メモリ、66…アー
ビタ
Claims (22)
- 【請求項1】プログラムに記述された命令に基づいて相
互に並列に処理を行い、相互間で通信可能な複数の処理
手段を有する並列処理装置において、 一の前記処理手段は、待機命令を実行したときに前記プ
ログラムに基づいた処理を中断して待機状態になり、他
の前記処理手段による待機解除命令の実行に基づいて前
記待機状態を解除して前記プログラムに基づいた処理を
再開し、 前記他の処理手段は、前記待機解除命令を実行後、処理
を中断することなく次の命令を実行する並列処理装置。 - 【請求項2】前記他の処理手段は、同期待ち命令を実行
して同期待ち状態になり、前記一の処理手段による前記
同期待ち命令に対応する前記待機命令の実行に基づいて
前記同期待ち状態を解除する請求項1に記載の並列処理
装置。 - 【請求項3】前記プログラムを記憶する第1の記憶手段
と、 前記複数の処理手段にそれぞれ対応して設けられ、対応
する処理手段で実行されるプログラムを前記第1の記憶
手段から読み込み、当該読み込んだプログラムに記述さ
れた命令を前記処理手段に供給し、前記第1の記憶手段
に比べてアクセス速度が速い第2の記憶手段とをさらに
有し、 前記第2の記憶手段は、対応する前記処理手段が前記待
機状態であるとき、当該待機状態になる前に当該処理手
段に供給していた前記プログラムの記憶を継続する請求
項1に記載の並列処理装置。 - 【請求項4】前記第2の記憶手段は、対応する前記処理
手段がプログラムの終了を示すプログラム終了命令を実
行するまで、前記プログラムの記憶を継続する請求項3
に記載の並列処理装置。 - 【請求項5】前記処理手段は、前記第1の記憶手段に記
憶されているプログラムを他の前記処理手段で実行させ
ることを指示するプログラム実行指示命令を実行し、 当該他の処理手段に対応する前記第2の記憶手段は、前
記プログラム実行指示命令によって実行が指示されたプ
ログラムを前記第1の記憶手段から読み込んで記憶する
請求項1に記載の並列処理装置。 - 【請求項6】前記処理手段による前記プログラム実行指
示命令に基づいて、当該プログラム実行指示命令によっ
て実行が指示されたプログラムを実行させる前記処理手
段を決定し、当該プログラム実行指示命令によって実行
が指示されたプログラムを前記第1の記憶手段から前記
決定した処理手段に対応する前記第2の記憶手段に読み
込むプログラム実行割り付け手段をさらに有する請求項
5に記載の並列処理装置。 - 【請求項7】前記プログラム実行指示命令によって実行
が指示されたプログラムに記述された前記待機命令に基
づいて前記他の処理手段が待機状態になったときに、前
記プログラム実行指示命令を実行した前記処理手段が前
記同期解除命令を実行する請求項5に記載の並列処理装
置。 - 【請求項8】前記プログラム実行指示命令によって実行
が指示されたプログラムに記述された前記待機命令に基
づいて前記他の処理手段が待機状態になったときに、前
記プログラム実行指示命令を実行した前記処理手段以外
の前記処理手段が前記同期解除命令を実行する請求項5
に記載の並列処理装置。 - 【請求項9】前記複数の処理手段と、 当該複数の処理手段を接続する共有バスとが単体の半導
体チップ内に組み込まれている請求項1に記載の並列処
理装置。 - 【請求項10】プログラムに記述された命令に基づいて
相互に並列に処理を行い、相互間で通信可能な複数の処
理手段を有する並列処理装置において、 一の前記処理手段は、待機命令を実行すると前記プログ
ラムに基づいた処理を中断して待機状態になり、他の前
記処理手段による待機解除命令の実行に基づいて前記待
機状態を解除して前記プログラムに基づいた処理を再開
し、 前記他の処理手段は、前記待機解除命令を実行したとき
に、前記一の処理手段が前記待機状態になっていない場
合に、前記一の処理手段が前記待機状態になるまで同期
待ち状態になる並列処理装置。 - 【請求項11】前記他の処理手段は、前記待機解除命令
を実行したときに、前記一の処理手段が前記待機状態に
なっている場合に、前記待機解除命令を実行後、処理を
中断することなく次の命令を実行する請求項10に記載
の並列処理装置。 - 【請求項12】前記プログラムを記憶する第1の記憶手
段と、 前記複数の処理手段にそれぞれ対応して設けられ、対応
する処理手段で実行されるプログラムを前記第1の記憶
手段から読み込み、当該読み込んだプログラムに記述さ
れた命令を前記処理手段に供給し、前記第1の記憶手段
に比べてアクセス速度が速い第2の記憶手段とをさらに
有し、 前記第2の記憶手段は、対応する前記処理手段が前記待
機状態であるとき、当該待機状態になる前に当該処理手
段に供給していた前記プログラムの記憶を継続する請求
項10に記載の並列処理装置。 - 【請求項13】前記第2の記憶手段は、対応する前記処
理手段がプログラムの終了を示すプログラム終了命令を
実行するまで、前記プログラムの記憶を継続する請求項
12に記載の並列処理装置。 - 【請求項14】プログラムに記述された命令に基づいて
相互に並列に処理を行い、相互間で通信可能な複数の処
理手段と、 前記プログラムを記憶する第1の記憶手段と、 前記複数の処理手段にそれぞれ対応して設けられ、対応
する処理手段で実行されるプログラムを前記第1の記憶
手段から読み込み、当該読み込んだプログラムに記述さ
れた命令を前記処理手段に供給し、前記第1の記憶手段
に比べてアクセス速度が速い第2の記憶手段とを有する
並列処理装置において、 前記処理手段は、待機命令を実行したときに前記プログ
ラムに基づいた処理を中断して待機状態になり、他の前
記処理手段による待機解除命令の実行に基づいて前記待
機状態を解除して前記プログラムに基づいた処理を再開
し、 前記第2の記憶手段は、対応する前記処理手段が前記待
機状態であるとき、当該待機状態になる前に当該処理手
段に供給していた前記プログラムの記憶を継続する並列
処理装置。 - 【請求項15】前記第2の記憶手段は、対応する前記処
理手段がプログラムの終了を示すプログラム終了命令を
実行するまで、前記プログラムの記憶を継続する請求項
14に記載の並列処理装置。 - 【請求項16】前記処理手段は、前記第1の記憶手段に
記憶されているプログラムを他の前記処理手段で実行さ
せることを指示するプログラム実行指示命令を実行し、 当該他の処理手段に対応する前記第2の記憶手段は、前
記プログラム実行指示命令によって実行が指示されたプ
ログラムを前記第1の記憶手段から読み込んで記憶する
請求項14に記載の並列処理装置。 - 【請求項17】前記処理手段による前記プログラム実行
指示命令に基づいて、当該プログラム実行指示命令によ
って実行が指示されたプログラムを実行させる前記処理
手段を決定し、当該プログラム実行指示命令によって実
行が指示されたプログラムを前記第1の記憶手段から前
記決定した処理手段に対応する前記第2の記憶手段に読
み込むプログラム実行割り付け手段をさらに有する請求
項16に記載の並列処理装置。 - 【請求項18】プログラムに記述された命令に基づいて
少なくとも第1の処理および第2の処理を相互に並列に
行う並列処理方法において、 前記第1の処理は、待機命令の実行によって前記プログ
ラムに基づいた処理を中断して待機状態になり、第2の
処理における待機解除命令の実行に基づいて前記待機状
態を解除して前記プログラムに基づいた処理を再開し、 前記第2の処理は、前記待機解除命令を実行後、処理を
中断することなく次の命令を実行する並列処理方法。 - 【請求項19】前記第2の処理は、同期待ち命令の実行
によって同期待ち状態になり、前記第1の処理における
前記同期待ち命令に対応する前記待機命令の実行に基づ
いて前記同期待ち状態を解除する請求項18に記載の並
列処理方法。 - 【請求項20】プログラムに記述された命令に基づいて
少なくとも第1の処理および第2の処理を相互に並列に
行う並列処理方法において、 前記第1の処理は、待機命令の実行によって前記プログ
ラムに基づいた処理を中断して待機状態になり、第2の
処理における待機解除命令の実行に基づいて前記待機状
態を解除して前記プログラムに基づいた処理を再開し、 前記第2の処理は、前記待機解除命令の実行時に、前記
第1の処理が前記待機状態になっていない場合に、前記
第1の処理が前記待機状態になるまで同期待ち状態にな
る並列処理方法。 - 【請求項21】プログラムに記述された命令に基づいて
相互に並列に行われる第1の処理および第2の処理の手
順をコンピュータで読み取り可能に記録した記録媒体で
あって、 前記第1の処理は、待機命令の実行によって前記プログ
ラムに基づいた処理を中断して待機状態になり、第2の
処理における待機解除命令の実行に基づいて前記待機状
態を解除して前記プログラムに基づいた処理を再開する
処理であり、 前記第2の処理は、前記待機解除命令を実行後、処理を
中断することなく次の命令を実行する処理である記録媒
体。 - 【請求項22】プログラムに記述された命令に基づいて
相互に並列に行われる第1の処理および第2の処理の手
順をコンピュータで読み取り可能に記録した記録媒体で
あって、 前記第1の処理は、待機命令の実行によって前記プログ
ラムに基づいた処理を中断して待機状態になり、第2の
処理における待機解除命令の実行に基づいて前記待機状
態を解除して前記プログラムに基づいた処理を再開する
処理であり、 前記第2の処理は、前記待機解除命令の実行時に、前記
第1の処理が前記待機状態になっていない場合に、前記
第1の処理が前記待機状態になるまで同期待ち状態にな
る処理である記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10302679A JP2000132529A (ja) | 1998-10-23 | 1998-10-23 | 並列処理装置、並列処理方法および記録媒体 |
US09/420,798 US7032099B1 (en) | 1998-10-23 | 1999-10-19 | Parallel processor, parallel processing method, and storing medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10302679A JP2000132529A (ja) | 1998-10-23 | 1998-10-23 | 並列処理装置、並列処理方法および記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000132529A true JP2000132529A (ja) | 2000-05-12 |
Family
ID=17911889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10302679A Pending JP2000132529A (ja) | 1998-10-23 | 1998-10-23 | 並列処理装置、並列処理方法および記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7032099B1 (ja) |
JP (1) | JP2000132529A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2428838B (en) * | 2005-08-03 | 2011-06-22 | Agilent Technologies Inc | Multisided synchronization of execution in a wireless test environment |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US20050228967A1 (en) * | 2004-03-16 | 2005-10-13 | Sony Computer Entertainment Inc. | Methods and apparatus for reducing power dissipation in a multi-processor system |
US8224639B2 (en) * | 2004-03-29 | 2012-07-17 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processing task scheduling |
JP5079988B2 (ja) * | 2005-06-13 | 2012-11-21 | オリンパス株式会社 | 分散処理システム、分散処理方法及びプログラム |
JP2008097498A (ja) * | 2006-10-16 | 2008-04-24 | Olympus Corp | プロセッシング・エレメント、コントロール・ユニット、及びこれらを備える処理システム、分散処理方法 |
JP2010033555A (ja) * | 2008-06-30 | 2010-02-12 | Olympus Corp | コントロール・ユニット、分散処理システム及び分散処理方法 |
US8364481B2 (en) | 2008-07-02 | 2013-01-29 | Google Inc. | Speech recognition with parallel recognition tasks |
US8719551B2 (en) * | 2009-04-22 | 2014-05-06 | Panasonic Corporation | Processor with arbiter sending simultaneously requested instructions from processing elements in SIMD / MIMD modes |
JP5430319B2 (ja) * | 2009-09-24 | 2014-02-26 | キヤノン株式会社 | 印刷データ処理装置、印刷データ処理方法、プログラム |
JP5900606B2 (ja) * | 2012-03-30 | 2016-04-06 | 富士通株式会社 | データ処理装置 |
US9928110B2 (en) * | 2014-03-31 | 2018-03-27 | Cfph, Llc | Resource allocation based on processor assignments |
FR3021433B1 (fr) * | 2014-05-21 | 2016-06-24 | Kalray | Systeme de synchronisation inter-processeurs |
US10030986B2 (en) * | 2016-06-29 | 2018-07-24 | Whp Workflow Solutions, Inc. | Incident response analytic maps |
US10353766B2 (en) * | 2016-09-09 | 2019-07-16 | International Business Machines Corporation | Managing execution of computer tasks under time constraints |
CN113641621A (zh) * | 2021-07-20 | 2021-11-12 | 北京百度网讯科技有限公司 | 数据处理方法、装置、处理器芯片、电子设备和介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0353819B1 (en) * | 1988-08-02 | 1997-04-09 | Koninklijke Philips Electronics N.V. | Method and apparatus for synchronizing parallel processors using a fuzzy barrier |
US6038584A (en) * | 1989-11-17 | 2000-03-14 | Texas Instruments Incorporated | Synchronized MIMD multi-processing system and method of operation |
EP0509055A4 (en) * | 1990-01-05 | 1994-07-27 | Maspar Computer Corp | Parallel processor memory system |
DE69130630T2 (de) * | 1990-09-14 | 1999-09-09 | Hitachi | Synchrones Verfahren und Gerät für Prozessoren |
JP3285629B2 (ja) * | 1992-12-18 | 2002-05-27 | 富士通株式会社 | 同期処理方法及び同期処理装置 |
JPH07129418A (ja) * | 1993-11-08 | 1995-05-19 | Fanuc Ltd | マルチタスク環境でのプログラム制御方式 |
JP3573546B2 (ja) * | 1995-10-27 | 2004-10-06 | 富士通株式会社 | 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置 |
EP0925540B1 (de) * | 1996-09-04 | 2000-05-03 | Siemens Nixdorf Informationssysteme AG | Synchronisationsverfahren |
JP3636871B2 (ja) * | 1997-09-16 | 2005-04-06 | 株式会社日立製作所 | 並列プロセッサシステム |
US6581089B1 (en) * | 1998-04-16 | 2003-06-17 | Sony Corporation | Parallel processing apparatus and method of the same |
-
1998
- 1998-10-23 JP JP10302679A patent/JP2000132529A/ja active Pending
-
1999
- 1999-10-19 US US09/420,798 patent/US7032099B1/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2428838B (en) * | 2005-08-03 | 2011-06-22 | Agilent Technologies Inc | Multisided synchronization of execution in a wireless test environment |
Also Published As
Publication number | Publication date |
---|---|
US7032099B1 (en) | 2006-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6715016B1 (en) | Multiple operating system control method | |
JP2000132529A (ja) | 並列処理装置、並列処理方法および記録媒体 | |
KR100708952B1 (ko) | 병렬 처리 시스템, 병렬 처리 프로그램을 기록하는 컴퓨터 판독가능한 기록 매체 및 병렬 처리 방법 | |
JP3636871B2 (ja) | 並列プロセッサシステム | |
US5666523A (en) | Method and system for distributing asynchronous input from a system input queue to reduce context switches | |
US6769121B1 (en) | Program execution device and process migrating method thereof and storage medium which stores process migration control program | |
JP2561801B2 (ja) | プロセス・スケジューリングの管理方法およびシステム | |
JP2009265963A (ja) | 情報処理システム及びタスクの実行制御方法 | |
JP2005339500A (ja) | データ処理装置及び共用資源へのアクセス制御方法 | |
JP2008541215A (ja) | データ処理装置内でのデータ・エンジンの使用 | |
EP1162536A1 (en) | Multiple operating system control method | |
JP2004288162A (ja) | 同期タスクを利用したオペレーティングシステムアーキテクチャ | |
US9652299B2 (en) | Controlling the state of a process between a running and a stopped state by comparing identification information sent prior to execution | |
KR20080013993A (ko) | 데이터 처리장치 내의 데이터 엔진의 사용 | |
US20030018682A1 (en) | Computer system and computer-readable record medium | |
JP2006519432A (ja) | 複数の処理要素を有するデータ処理システム、複数の処理要素を有するデータ処理システムを制御する方法 | |
JP2006085428A (ja) | 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム | |
JP2002297556A (ja) | マルチプロセッサシステム,マルチプロセッサ制御方法,マルチプロセッサ制御プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体 | |
US7320044B1 (en) | System, method, and computer program product for interrupt scheduling in processing communication | |
JP2013522710A (ja) | Itシステムの構成方法、そのコンピュータプログラムおよびitシステム | |
JP2001290637A (ja) | コンポーネントの動的置換装置及びコンピュータ読み取り可能な記憶媒体 | |
JP2008276322A (ja) | 情報処理装置、情報処理システムおよび情報処理方法 | |
JPH02244371A (ja) | マルチプロセツサシステムの排他制御方法 | |
JPH0588933A (ja) | デバツグ機能を有する並列処理システム | |
JPH0997173A (ja) | 制御プログラムの保守管理システム |