JPH11306149A - 並列演算処理装置およびその方法 - Google Patents
並列演算処理装置およびその方法Info
- Publication number
- JPH11306149A JPH11306149A JP10106755A JP10675598A JPH11306149A JP H11306149 A JPH11306149 A JP H11306149A JP 10106755 A JP10106755 A JP 10106755A JP 10675598 A JP10675598 A JP 10675598A JP H11306149 A JPH11306149 A JP H11306149A
- Authority
- JP
- Japan
- Prior art keywords
- synchronization
- task
- instruction
- arithmetic processing
- count value
- 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
Landscapes
- Multi Processors (AREA)
Abstract
(57)【要約】
【課題】 複数のタスクを発生した場合の同期待ちを高
速かつ柔軟に解決できる並列演算処理装置を提供する。 【解決手段】 プロセッサエレメントPE12がPE1
3〜15に対してパイプカウンタを特定して複数のタス
クを呼び出し、同期待ち命令で同期待ちを行う。アービ
タ556は、タスク呼び出しが発生すると、当該タスク
呼び出しを発生したプロセッサエレメントの番号とパイ
プカウンタの番号とから、タスク管理テーブルのエント
リィを特定し、当該エントリィのカウント値を増加し、
そのタスクが終了すると当該エントリィのカウント値を
減少させる。プロセッサエレメントPE12は、同期待
ち命令に含まれるカウント値と、アービタ156の対応
するエントリィのカウント値とが一致した場合に同期待
ちを解除する。
速かつ柔軟に解決できる並列演算処理装置を提供する。 【解決手段】 プロセッサエレメントPE12がPE1
3〜15に対してパイプカウンタを特定して複数のタス
クを呼び出し、同期待ち命令で同期待ちを行う。アービ
タ556は、タスク呼び出しが発生すると、当該タスク
呼び出しを発生したプロセッサエレメントの番号とパイ
プカウンタの番号とから、タスク管理テーブルのエント
リィを特定し、当該エントリィのカウント値を増加し、
そのタスクが終了すると当該エントリィのカウント値を
減少させる。プロセッサエレメントPE12は、同期待
ち命令に含まれるカウント値と、アービタ156の対応
するエントリィのカウント値とが一致した場合に同期待
ちを解除する。
Description
【0001】
【発明の属する技術分野】本発明は、複数のタスクを発
生した場合の同期待ちを高速かつ柔軟に解決できる並列
演算処理装置およびその方法に関する。
生した場合の同期待ちを高速かつ柔軟に解決できる並列
演算処理装置およびその方法に関する。
【0002】
【従来の技術】例えば、複数のプロセッサエレメント
(Processor Element:PE)が独立したプログラムカウ
ンタを持ち、共通バスを介して相互に通信を行いながら
処理を実行するMIMD(Multiple Instruction Multip
le Datastream)型のマルチプロセッサシステムが知られ
ている。このようなマルチプロセッサシステムは、コン
カレント(並行)マルチタスクを行うことを前提として
おり、タスクを生成しようとしているメインプログラム
を実行しているプロセッサエレメントと、新たなタスク
が生成されるプロセッサエレメントとの間で通信を行
う。このとき、タスクを呼んだ(生成した)プログラム
が、呼ばれた(生成された)タスクが終了するまで同期
待ちを行う場合がある。
(Processor Element:PE)が独立したプログラムカウ
ンタを持ち、共通バスを介して相互に通信を行いながら
処理を実行するMIMD(Multiple Instruction Multip
le Datastream)型のマルチプロセッサシステムが知られ
ている。このようなマルチプロセッサシステムは、コン
カレント(並行)マルチタスクを行うことを前提として
おり、タスクを生成しようとしているメインプログラム
を実行しているプロセッサエレメントと、新たなタスク
が生成されるプロセッサエレメントとの間で通信を行
う。このとき、タスクを呼んだ(生成した)プログラム
が、呼ばれた(生成された)タスクが終了するまで同期
待ちを行う場合がある。
【0003】図23は、一般的なマルチプロセッサシス
テム1の全体構成図である。図23に示すように、マル
チプロセッサシステム1は、4つのプロセッサエレメン
トPE12,PE13,PE14,PE15と、タスク
の同期を管理するアービタ16とが共通バス11を介し
て接続されている。共通バス11は、プロセッサエレメ
ントPE12〜15の相互間でコマンドなどの制御信号
を送受信するための制御線として機能する。
テム1の全体構成図である。図23に示すように、マル
チプロセッサシステム1は、4つのプロセッサエレメン
トPE12,PE13,PE14,PE15と、タスク
の同期を管理するアービタ16とが共通バス11を介し
て接続されている。共通バス11は、プロセッサエレメ
ントPE12〜15の相互間でコマンドなどの制御信号
を送受信するための制御線として機能する。
【0004】また、マルチプロセッサシステム1では、
プロセッサエレメントPE12,PE13,PE14,
PE15と共有メモリ17とがメインバス19を介して
接続されている。共有メモリ17は、外部端子18を介
して、外部メモリ(メインメモリ)に接続されている。
なお、マルチタスクの同期を実現するマルチプロセッサ
システムの構成としては、図23に示す構成以外にも種
々のものがある。例えば、図23に示す例では、アービ
タ16でタスクの同期が集中管理される場合を示した
が、例えば、アービタ16を設けずに、個々のプロセッ
サエレメントPE12〜15にタスクの同期を管理する
機能を持たせてもよい。
プロセッサエレメントPE12,PE13,PE14,
PE15と共有メモリ17とがメインバス19を介して
接続されている。共有メモリ17は、外部端子18を介
して、外部メモリ(メインメモリ)に接続されている。
なお、マルチタスクの同期を実現するマルチプロセッサ
システムの構成としては、図23に示す構成以外にも種
々のものがある。例えば、図23に示す例では、アービ
タ16でタスクの同期が集中管理される場合を示した
が、例えば、アービタ16を設けずに、個々のプロセッ
サエレメントPE12〜15にタスクの同期を管理する
機能を持たせてもよい。
【0005】図24は、タスクを生成するプログラム
(メインプログラム25)が同期待ちを行う手法を説明
するための図である。図24に示す例では、プロセッサ
エレメントPE12上で動作するメインプログラム25
が、プロセッサエレメントPE13上にタスク26を生
成している。プロセッサエレメントPE12および13
は、個々のプロセッサ固有のマシン語(機械語)で記述
された命令を実行して動作する。なお、タスクの生成な
らびに同期の解決は、ハードウエアによる順序回路を用
いても可能である。なお、本明細書では、命令によって
同期機能の実現する場合を主に説明する。
(メインプログラム25)が同期待ちを行う手法を説明
するための図である。図24に示す例では、プロセッサ
エレメントPE12上で動作するメインプログラム25
が、プロセッサエレメントPE13上にタスク26を生
成している。プロセッサエレメントPE12および13
は、個々のプロセッサ固有のマシン語(機械語)で記述
された命令を実行して動作する。なお、タスクの生成な
らびに同期の解決は、ハードウエアによる順序回路を用
いても可能である。なお、本明細書では、命令によって
同期機能の実現する場合を主に説明する。
【0006】
【発明が解決しようとする課題】ところで、従来のマル
チプロセッサシステムでは、以下に示す理由により、図
24に示すメインプログラム25から複数のタスクを任
意の数だけ生成することが困難であった。すなわち、マ
ルチプロセッサシステムは、コンカレントマルチタスク
を実行するが、このマルチタスク方式では、複数のプロ
グラム(タスク)を複数のプロセッサエレメントPEに
割り当てる必要がある。ここで、シングルプロセッサを
前提としたマルチタスクでは、TSS(Time Sharing S
ystem )方式のように、一つのプロセッサエレメントP
Eに対して時分割で複数のタスクを割り当てることが最
も一般的である。従って、一つのプロセッサエレメント
PEを中心としてタスク管理テーブルを一組だけ用意す
ればよい。このTSS方式を採用する多くの場合、それ
らタスクの切り替え機構を持つUnix(商標名)など
のOS(Operating System)を用いることになる。
チプロセッサシステムでは、以下に示す理由により、図
24に示すメインプログラム25から複数のタスクを任
意の数だけ生成することが困難であった。すなわち、マ
ルチプロセッサシステムは、コンカレントマルチタスク
を実行するが、このマルチタスク方式では、複数のプロ
グラム(タスク)を複数のプロセッサエレメントPEに
割り当てる必要がある。ここで、シングルプロセッサを
前提としたマルチタスクでは、TSS(Time Sharing S
ystem )方式のように、一つのプロセッサエレメントP
Eに対して時分割で複数のタスクを割り当てることが最
も一般的である。従って、一つのプロセッサエレメント
PEを中心としてタスク管理テーブルを一組だけ用意す
ればよい。このTSS方式を採用する多くの場合、それ
らタスクの切り替え機構を持つUnix(商標名)など
のOS(Operating System)を用いることになる。
【0007】通常、プロセッサエレメントPEは、マル
チタスクを特に意識した同期命令を用意していないこと
が多い。同期命令を用いるよりも、タイマなどの外部割
り込みイベントを通じて例外処理を発生させ、その結
果、タスクの切り替えを行う方式を採用することが多
い。また、タスクの切り替えをより高速に実行するため
に、プロセッサエレメントPE内でハードウエアによる
サポートを行っていることが多いが、基本的にはソフト
ウエアによってタスク切り替え機能が実現される。
チタスクを特に意識した同期命令を用意していないこと
が多い。同期命令を用いるよりも、タイマなどの外部割
り込みイベントを通じて例外処理を発生させ、その結
果、タスクの切り替えを行う方式を採用することが多
い。また、タスクの切り替えをより高速に実行するため
に、プロセッサエレメントPE内でハードウエアによる
サポートを行っていることが多いが、基本的にはソフト
ウエアによってタスク切り替え機能が実現される。
【0008】これに対して、マルチプロセッサシステム
では、前述したTSS方式を採用する場合、複数のタス
ク管理テーブルを用意することが必要になる。また、そ
れら複数のタスク管理テーブルを総合的に管理するプロ
グラムを、個々のプロセッサエレメントPEを管理する
プログラムの一階層上に用意する必要があり、かなり複
雑なOSになる。そのため、従来のマルチプロセッサシ
ステムでは、図24に示すメインプログラム25から複
数のタスクを任意の数だけ生成することが困難であっ
た。なお、マルチプロセッサシステムに実装するOS
は、通常、そのマルチプロセッサシステムを使うサイド
(ユーザ)が決定する。
では、前述したTSS方式を採用する場合、複数のタス
ク管理テーブルを用意することが必要になる。また、そ
れら複数のタスク管理テーブルを総合的に管理するプロ
グラムを、個々のプロセッサエレメントPEを管理する
プログラムの一階層上に用意する必要があり、かなり複
雑なOSになる。そのため、従来のマルチプロセッサシ
ステムでは、図24に示すメインプログラム25から複
数のタスクを任意の数だけ生成することが困難であっ
た。なお、マルチプロセッサシステムに実装するOS
は、通常、そのマルチプロセッサシステムを使うサイド
(ユーザ)が決定する。
【0009】ところで、マルチタスクの実現方法は、T
SS方式の他にも存在する。例えば、特定のプロセッサ
エレメントPEをコプロセッサとして用いるなどのやや
特殊用途への応用が考えられる。その他にも、特定のプ
ロセッサエレメントPEをコプロセッサとして固定しな
いまでも、コプロセッサで実行するプログラムを常駐さ
せることも、ある分野では非常に有効である。いずれに
しても、マルチプロセッサシステムには、タスクの同期
機構が必要である。
SS方式の他にも存在する。例えば、特定のプロセッサ
エレメントPEをコプロセッサとして用いるなどのやや
特殊用途への応用が考えられる。その他にも、特定のプ
ロセッサエレメントPEをコプロセッサとして固定しな
いまでも、コプロセッサで実行するプログラムを常駐さ
せることも、ある分野では非常に有効である。いずれに
しても、マルチプロセッサシステムには、タスクの同期
機構が必要である。
【0010】研究試作段階のマルチプロセッサシステム
では、一般的に、個々のプロセッサエレメントPE毎に
シングルプロセッサと同じOSを搭載している。そし
て、これらプロセッサエレメントPE間の通信を行うこ
とにより、全体としてマルチタスクを達成していること
が多い。この場合、プロセッサエレメントPE相互の通
信の機能の一部に同期機構が用いられる。あるいは、セ
マフォアなどのメモリを介した同期機構も採用可能であ
る。
では、一般的に、個々のプロセッサエレメントPE毎に
シングルプロセッサと同じOSを搭載している。そし
て、これらプロセッサエレメントPE間の通信を行うこ
とにより、全体としてマルチタスクを達成していること
が多い。この場合、プロセッサエレメントPE相互の通
信の機能の一部に同期機構が用いられる。あるいは、セ
マフォアなどのメモリを介した同期機構も採用可能であ
る。
【0011】しかしながら、タスクの生成とそのタスク
の同期待ちに関しては、いずれの場合にも最終的にはソ
フトウエアによる処理を行っているのでレスポンスが悪
く、せいぜい粗粒度並列プログラムを実行する場合に応
用されるのが現状である。また、仮に、複数のタスクを
生成することが十分可能なシステムであっても、それら
のタスクの終了を待つ(同期待ち)方式に決定的な解決
手段がない。
の同期待ちに関しては、いずれの場合にも最終的にはソ
フトウエアによる処理を行っているのでレスポンスが悪
く、せいぜい粗粒度並列プログラムを実行する場合に応
用されるのが現状である。また、仮に、複数のタスクを
生成することが十分可能なシステムであっても、それら
のタスクの終了を待つ(同期待ち)方式に決定的な解決
手段がない。
【0012】メインプログラムから生成された複数のタ
スクのうちどのタスクを待つかなどの条件設定は、ソフ
トウエアによるプログラム記述によれば全ての組み合わ
せが可能であるが、それらの条件判定に費やす時間のオ
ーバーヘッドもかなり大きくなり、高速に同期をとるこ
とができない。一方、このような設定条件を、ハードウ
エアによって決定するものがある。例えば、米国のイン
テル社が開発したマイクロプロセッサ8086とそのプ
ロセッサ専用に設計されたコプロセッサ8087との間
では、ハンドシェークによる同期待ちシステムが確立さ
れている。プロセッサ8086上のメインプログラムの
数値演算用の命令を実行すると、自動的にコプロセッサ
8087はその命令を解釈して演算を始める。通常、数
値演算の実行には複数のクロックサイクルが必要とされ
ていた。従って、その間、プロセッサ8086では当該
命令の次の命令を順次実行する。
スクのうちどのタスクを待つかなどの条件設定は、ソフ
トウエアによるプログラム記述によれば全ての組み合わ
せが可能であるが、それらの条件判定に費やす時間のオ
ーバーヘッドもかなり大きくなり、高速に同期をとるこ
とができない。一方、このような設定条件を、ハードウ
エアによって決定するものがある。例えば、米国のイン
テル社が開発したマイクロプロセッサ8086とそのプ
ロセッサ専用に設計されたコプロセッサ8087との間
では、ハンドシェークによる同期待ちシステムが確立さ
れている。プロセッサ8086上のメインプログラムの
数値演算用の命令を実行すると、自動的にコプロセッサ
8087はその命令を解釈して演算を始める。通常、数
値演算の実行には複数のクロックサイクルが必要とされ
ていた。従って、その間、プロセッサ8086では当該
命令の次の命令を順次実行する。
【0013】メインプログラムには、タスクの発生命令
から適当な命令数を経た後に同期命令が記述される。そ
して、その同期命令が実行される前に当該数値演算が終
了していれば、プロセッサ8086は数値演算が同期さ
れているものとみなしそのまま命令実行を進める。ま
た、その同期命令が実行される前に当該数値演算が終了
していなければ、コプロセッサ8087の演算が終了す
るまで同期待ちをする。この同期待ちシステムは、簡単
なプロトコルによるハンドシェーク信号を用いており、
きわめて簡単な構成で高速に同期をとることができる。
しかしながら、複数のコプロセッサ8087をひとつの
プロセッサ8086に接続することができず、複数のタ
スクを生成した場合の同期待ちを解決できないという問
題がある。
から適当な命令数を経た後に同期命令が記述される。そ
して、その同期命令が実行される前に当該数値演算が終
了していれば、プロセッサ8086は数値演算が同期さ
れているものとみなしそのまま命令実行を進める。ま
た、その同期命令が実行される前に当該数値演算が終了
していなければ、コプロセッサ8087の演算が終了す
るまで同期待ちをする。この同期待ちシステムは、簡単
なプロトコルによるハンドシェーク信号を用いており、
きわめて簡単な構成で高速に同期をとることができる。
しかしながら、複数のコプロセッサ8087をひとつの
プロセッサ8086に接続することができず、複数のタ
スクを生成した場合の同期待ちを解決できないという問
題がある。
【0014】また、近年、プログラムの大規模化に伴
い、プログラムを複数のモジュールに分割してモジュー
ル単位で開発を行うことが多い。このとき場合に、プロ
グラム相互間で用いられるシステムのリソースに制約が
課せられると、プログラマは当該制約を意識してプログ
ラムを記述する必要があり、プログラマの負担が大きい
と共に、プログラムにバグが発生する可能性が高くな
る。
い、プログラムを複数のモジュールに分割してモジュー
ル単位で開発を行うことが多い。このとき場合に、プロ
グラム相互間で用いられるシステムのリソースに制約が
課せられると、プログラマは当該制約を意識してプログ
ラムを記述する必要があり、プログラマの負担が大きい
と共に、プログラムにバグが発生する可能性が高くな
る。
【0015】本発明は上述した従来技術に鑑みてなさ
れ、複数のタスクを発生した場合の同期待ちを高速かつ
柔軟に解決できる並列演算処理装置およびその方法を提
供することを目的とする。また、本発明は、プログラム
を複数のモジュールに分けて開発した場合におけるプロ
グラマの負担を軽減し、プログラムに発生するバグを抑
制できる並列演算処理装置およびその方法を提供するこ
とを目的とする。
れ、複数のタスクを発生した場合の同期待ちを高速かつ
柔軟に解決できる並列演算処理装置およびその方法を提
供することを目的とする。また、本発明は、プログラム
を複数のモジュールに分けて開発した場合におけるプロ
グラマの負担を軽減し、プログラムに発生するバグを抑
制できる並列演算処理装置およびその方法を提供するこ
とを目的とする。
【0016】
【課題を解決するための手段】すなわち、本発明の並列
演算処理装置は、カウント手段を特定するカウント手段
特定データをそれぞれ含む単数または複数のタスク呼び
出し命令を実行した後に、カウント手段特定データと同
期解除条件を満たすカウント値とを含む同期待ち命令で
必要に応じて同期待ちを行う単数または複数の第1の演
算処理手段と、前記第1の演算処理手段から呼び出され
たタスクを実行し、当該呼び出されたタスクが終了した
ときにタスク終了命令を実行する単数または複数の第2
の演算処理手段と、前記カウント手段の識別子と前記第
1の演算手段の識別子とで特定されるエントリィにカウ
ント値を記憶する同期管理手段とを有する。
演算処理装置は、カウント手段を特定するカウント手段
特定データをそれぞれ含む単数または複数のタスク呼び
出し命令を実行した後に、カウント手段特定データと同
期解除条件を満たすカウント値とを含む同期待ち命令で
必要に応じて同期待ちを行う単数または複数の第1の演
算処理手段と、前記第1の演算処理手段から呼び出され
たタスクを実行し、当該呼び出されたタスクが終了した
ときにタスク終了命令を実行する単数または複数の第2
の演算処理手段と、前記カウント手段の識別子と前記第
1の演算手段の識別子とで特定されるエントリィにカウ
ント値を記憶する同期管理手段とを有する。
【0017】ここで、前記第1の演算処理手段による前
記タスク呼び出し命令の実行に応じて、当該タスク呼び
出し命令に含まれるカウント手段特定データが示す前記
カウント手段の識別子と、当該タスク呼び出し命令を実
行した第1の演算処理手段の識別子とから前記同期管理
手段のエントリィを特定し、当該特定したエントリィの
カウント値を増加し、前記第2の演算処理手段の前記タ
スク終了命令の実行に応じて、その終了したタスクを呼
び出したタスク呼び出し命令のカウント手段特定データ
が示す前記カウント手段の識別子と、当該タスク呼び出
し命令を実行した第1の演算処理手段の識別子とから、
前記同期管理手段のエントリィを特定し、当該特定した
エントリィのカウント値を減少する。また、前記第1の
演算処理手段は、前記同期待ち命令に含まれるカウント
値と、当該同期待ち命令に含まれるカウント手段特定デ
ータが示す前記カウント手段の識別子と当該同期待ち命
令を実行した第1の演算処理手段の識別子とから特定し
た前記同期管理手段のエントリィのカウント値とを比較
し、当該比較の結果に応じて同期待ちを解除するか否か
を決定する。
記タスク呼び出し命令の実行に応じて、当該タスク呼び
出し命令に含まれるカウント手段特定データが示す前記
カウント手段の識別子と、当該タスク呼び出し命令を実
行した第1の演算処理手段の識別子とから前記同期管理
手段のエントリィを特定し、当該特定したエントリィの
カウント値を増加し、前記第2の演算処理手段の前記タ
スク終了命令の実行に応じて、その終了したタスクを呼
び出したタスク呼び出し命令のカウント手段特定データ
が示す前記カウント手段の識別子と、当該タスク呼び出
し命令を実行した第1の演算処理手段の識別子とから、
前記同期管理手段のエントリィを特定し、当該特定した
エントリィのカウント値を減少する。また、前記第1の
演算処理手段は、前記同期待ち命令に含まれるカウント
値と、当該同期待ち命令に含まれるカウント手段特定デ
ータが示す前記カウント手段の識別子と当該同期待ち命
令を実行した第1の演算処理手段の識別子とから特定し
た前記同期管理手段のエントリィのカウント値とを比較
し、当該比較の結果に応じて同期待ちを解除するか否か
を決定する。
【0018】本発明の並列演算処理装置は、好ましく
は、前記第1の演算処理手段は、前記同期待ち命令に含
まれるカウント値と、当該同期待ち命令に含まれるカウ
ント手段特定データが示す前記カウント手段の識別子と
当該同期待ち命令を実行した第1の演算処理手段の識別
子とから特定した前記同期管理手段のエントリィのカウ
ント値とが一致したときに、同期待ちを解除する。
は、前記第1の演算処理手段は、前記同期待ち命令に含
まれるカウント値と、当該同期待ち命令に含まれるカウ
ント手段特定データが示す前記カウント手段の識別子と
当該同期待ち命令を実行した第1の演算処理手段の識別
子とから特定した前記同期管理手段のエントリィのカウ
ント値とが一致したときに、同期待ちを解除する。
【0019】また、本発明の並列演算処理装置は、好ま
しくは、前記同期待ち命令に含まれるカウント値は、当
該同期待ち命令と同じカウント手段特定データを含むタ
スク呼び出し命令によって呼び出されたタスクの数に比
べて小さい。
しくは、前記同期待ち命令に含まれるカウント値は、当
該同期待ち命令と同じカウント手段特定データを含むタ
スク呼び出し命令によって呼び出されたタスクの数に比
べて小さい。
【0020】また、本発明の並列演算処理装置は、好ま
しくは、前記単数または複数の第1の演算処理手段にお
ける処理および前記単数または複数の第2の演算処理手
段における処理とは相互に独立して行われる。
しくは、前記単数または複数の第1の演算処理手段にお
ける処理および前記単数または複数の第2の演算処理手
段における処理とは相互に独立して行われる。
【0021】また、本発明の並列演算処理装置は、好ま
しくは、前記同期管理手段の各エントリィには、当該エ
ントリィのカウント値が有効であるか否かを示す有効ビ
ットが設けられている。
しくは、前記同期管理手段の各エントリィには、当該エ
ントリィのカウント値が有効であるか否かを示す有効ビ
ットが設けられている。
【0022】また、本発明の並列演算処理装置は、好ま
しくは、前記同期管理手段は、前記カウント手段の識別
子として、前記タスク呼び出し命令のカウント手段特定
データによって特定可能なカウント手段の数に相当する
ビット数を有し、各ビットが所定のカウント手段に対応
したデータを保持し、前記第1の演算処理手段の識別子
として、前記第1の演算処理手段の数に相当するビット
数を有し、各ビットが所定の第1の演算処理手段に対応
したデータを保持する。
しくは、前記同期管理手段は、前記カウント手段の識別
子として、前記タスク呼び出し命令のカウント手段特定
データによって特定可能なカウント手段の数に相当する
ビット数を有し、各ビットが所定のカウント手段に対応
したデータを保持し、前記第1の演算処理手段の識別子
として、前記第1の演算処理手段の数に相当するビット
数を有し、各ビットが所定の第1の演算処理手段に対応
したデータを保持する。
【0023】また、本発明の並列演算処理装置は、好ま
しくは、前記同期管理手段は、前記カウント手段の識別
子として、前記タスク呼び出し命令のカウント手段特定
データによって特定可能なカウント手段の数に相当する
ビット数を有すると共に各ビットが所定のカウント手段
に対応したデータをエンコードしたデータを保持し、前
記第1の演算処理手段の識別子として、前記第1の演算
処理手段の数に相当するビット数を有すると共に各ビッ
トが所定の第1の演算処理手段に対応したデータをエコ
ードしたデータを保持する。
しくは、前記同期管理手段は、前記カウント手段の識別
子として、前記タスク呼び出し命令のカウント手段特定
データによって特定可能なカウント手段の数に相当する
ビット数を有すると共に各ビットが所定のカウント手段
に対応したデータをエンコードしたデータを保持し、前
記第1の演算処理手段の識別子として、前記第1の演算
処理手段の数に相当するビット数を有すると共に各ビッ
トが所定の第1の演算処理手段に対応したデータをエコ
ードしたデータを保持する。
【0024】さらに、本発明の並列演算処理方法は、単
数または複数の第1の演算処理手段において、複数のカ
ウント手段のうち一のカウント手段を特定するカウント
手段特定データをそれぞれ含む単数または複数のタスク
呼び出し命令を実行し、カウント手段特定データと同期
解除条件を満たすカウント値とを含む同期待ち命令で必
要に応じて同期待ちを行い、単数または複数の第2の演
算処理手段において、前記第1の演算処理から呼び出さ
れたタスクを実行し、当該呼び出されたタスクが終了し
たときにタスク終了命令を実行し、前記第1の演算処理
手段による前記タスク呼び出し命令の実行に応じて、当
該タスク呼び出し命令に含まれるカウント手段特定デー
タが示す前記カウント手段の識別子と、当該タスク呼び
出し命令を実行した第1の演算処理手段の識別子とから
同期管理テーブルのエントリィを特定し、当該特定した
エントリィのカウント値を増加し、前記第2の演算処理
手段の前記タスク終了命令の実行に応じて、その終了し
たタスクを呼び出したタスク呼び出し命令のカウント手
段特定データが示す前記カウント手段の識別子と、当該
タスク呼び出し命令を実行した第1の演算処理手段の識
別子とから、前記同期管理テーブルのエントリィを特定
し、当該特定したエントリィのカウント値を減少し、前
記同期待ち命令に含まれるカウント値と、当該同期待ち
命令に含まれるカウント手段特定データが示す前記カウ
ント手段の識別子と当該同期待ち命令を実行した第1の
演算処理手段の識別子とから特定した前記同期管理テー
ブルのエントリィのカウント値との比較結果に応じて、
前記第1の演算処理手段が同期待ちを解除するか否かを
決定する。
数または複数の第1の演算処理手段において、複数のカ
ウント手段のうち一のカウント手段を特定するカウント
手段特定データをそれぞれ含む単数または複数のタスク
呼び出し命令を実行し、カウント手段特定データと同期
解除条件を満たすカウント値とを含む同期待ち命令で必
要に応じて同期待ちを行い、単数または複数の第2の演
算処理手段において、前記第1の演算処理から呼び出さ
れたタスクを実行し、当該呼び出されたタスクが終了し
たときにタスク終了命令を実行し、前記第1の演算処理
手段による前記タスク呼び出し命令の実行に応じて、当
該タスク呼び出し命令に含まれるカウント手段特定デー
タが示す前記カウント手段の識別子と、当該タスク呼び
出し命令を実行した第1の演算処理手段の識別子とから
同期管理テーブルのエントリィを特定し、当該特定した
エントリィのカウント値を増加し、前記第2の演算処理
手段の前記タスク終了命令の実行に応じて、その終了し
たタスクを呼び出したタスク呼び出し命令のカウント手
段特定データが示す前記カウント手段の識別子と、当該
タスク呼び出し命令を実行した第1の演算処理手段の識
別子とから、前記同期管理テーブルのエントリィを特定
し、当該特定したエントリィのカウント値を減少し、前
記同期待ち命令に含まれるカウント値と、当該同期待ち
命令に含まれるカウント手段特定データが示す前記カウ
ント手段の識別子と当該同期待ち命令を実行した第1の
演算処理手段の識別子とから特定した前記同期管理テー
ブルのエントリィのカウント値との比較結果に応じて、
前記第1の演算処理手段が同期待ちを解除するか否かを
決定する。
【0025】
【発明の実施の形態】以下、本発明の実施形態に係わる
マルチプロセッサシステムを説明する。第1実施形態 図1は、本実施形態のマルチプロセッサシステム51の
構成図である。図1に示すように、マルチプロセッサシ
ステム51は、4つのプロセッサエレメントPE12,
PE13,PE14,PE15と、タスクの同期を管理
するアービタ56とが共通バス11を介して接続されて
いる。また、マルチプロセッサシステム51では、プロ
セッサエレメントPE12,PE13,PE14,PE
15と共有メモリ17とがメインバス19を介して接続
されている。共有メモリ17は、外部端子18を介し
て、外部メモリ(メインメモリ)に接続されている。
マルチプロセッサシステムを説明する。第1実施形態 図1は、本実施形態のマルチプロセッサシステム51の
構成図である。図1に示すように、マルチプロセッサシ
ステム51は、4つのプロセッサエレメントPE12,
PE13,PE14,PE15と、タスクの同期を管理
するアービタ56とが共通バス11を介して接続されて
いる。また、マルチプロセッサシステム51では、プロ
セッサエレメントPE12,PE13,PE14,PE
15と共有メモリ17とがメインバス19を介して接続
されている。共有メモリ17は、外部端子18を介し
て、外部メモリ(メインメモリ)に接続されている。
【0026】図1において、図23と同じ符号を付した
プロセッサエレメントPE12,PE13,PE14,
PE15、共通バス11、メインバス19、共有メモリ
17および外部端子18は、前述した図23に示す構成
要素と同じである。すなわち、マルチプロセッサシステ
ム51は、アービタ56におけるタスク同期の管理方法
に特徴を有する。アービタ56は、カウンタを備え、例
えば、プロセッサエレメントPE12が子タスクの生成
を伴う命令を実行したときに、カウンタのカウント値を
1だけ増加し、子タスクが終了したときにカウントのカ
ウント値を1だけ減少させる。
プロセッサエレメントPE12,PE13,PE14,
PE15、共通バス11、メインバス19、共有メモリ
17および外部端子18は、前述した図23に示す構成
要素と同じである。すなわち、マルチプロセッサシステ
ム51は、アービタ56におけるタスク同期の管理方法
に特徴を有する。アービタ56は、カウンタを備え、例
えば、プロセッサエレメントPE12が子タスクの生成
を伴う命令を実行したときに、カウンタのカウント値を
1だけ増加し、子タスクが終了したときにカウントのカ
ウント値を1だけ減少させる。
【0027】マルチプロセッサシステム51は、プロセ
ッサエレメントPE12〜15が、他のプロセッサエレ
メントPEに対して任意に子タスクを生成することがで
きる。子タスクはそのプログラムの終了時に、当該子タ
スクを呼び出した親のプログラムに対して、子タスクの
終了を示すメッセージを送信する。このメッセージは、
図1の共通バス11を用いて行われるものとするが、そ
の形態はいかなるものであってもよい。プロセッサ間通
信を厳密に規定してもよいし、単に信号線を通じて知ら
せてもよい。
ッサエレメントPE12〜15が、他のプロセッサエレ
メントPEに対して任意に子タスクを生成することがで
きる。子タスクはそのプログラムの終了時に、当該子タ
スクを呼び出した親のプログラムに対して、子タスクの
終了を示すメッセージを送信する。このメッセージは、
図1の共通バス11を用いて行われるものとするが、そ
の形態はいかなるものであってもよい。プロセッサ間通
信を厳密に規定してもよいし、単に信号線を通じて知ら
せてもよい。
【0028】なお、説明の都合上、子タスクとして生成
されるプログラムのアドレス(メインメモリ上の番地)
は予めメインプログラムの記述のなかで設定されている
ものとする。また、子タスクは、プロセッサエレメント
PE12以外のプロセッサエレメントPE13〜15上
に生成されるものとする。具体的にどのプロセッサエレ
メントPEに生成するかは図1に示すアービタ56が自
動的に決定する。本実施形態では、子タスクの割り当て
方法について触れない。
されるプログラムのアドレス(メインメモリ上の番地)
は予めメインプログラムの記述のなかで設定されている
ものとする。また、子タスクは、プロセッサエレメント
PE12以外のプロセッサエレメントPE13〜15上
に生成されるものとする。具体的にどのプロセッサエレ
メントPEに生成するかは図1に示すアービタ56が自
動的に決定する。本実施形態では、子タスクの割り当て
方法について触れない。
【0029】子タスクを生成する命令(タスク呼び出し
命令)としては、例えば、「gen」命令を用いるが、
その名前は任意である。従って、「gen」命令がプリ
ミティブなマシン語ではなく、アセンブラ言語のマクロ
命令であっても良い。子タスクのプログラムの中で、タ
スク生成やその同期、終了に関するもの以外の通常の命
令を「inst1」、「inst2」と記述する。これ
も前記と同様に、それら命令の名前や構成方法は任意で
ある。また、子タスクの終了命令を「end」とする。
この命令によって、子タスクを呼んだプロセッサエレメ
ントPEに対して、タスクの終了を示すメッセージを自
動的に送る。子タスクで作成したデータその他の情報
は、適当に処理するものとする。また、メインプログラ
ムにおいて、同期待ち命令を「wait」とする。後述
するが、この「wait」命令には引数を設定する事が
できる。
命令)としては、例えば、「gen」命令を用いるが、
その名前は任意である。従って、「gen」命令がプリ
ミティブなマシン語ではなく、アセンブラ言語のマクロ
命令であっても良い。子タスクのプログラムの中で、タ
スク生成やその同期、終了に関するもの以外の通常の命
令を「inst1」、「inst2」と記述する。これ
も前記と同様に、それら命令の名前や構成方法は任意で
ある。また、子タスクの終了命令を「end」とする。
この命令によって、子タスクを呼んだプロセッサエレメ
ントPEに対して、タスクの終了を示すメッセージを自
動的に送る。子タスクで作成したデータその他の情報
は、適当に処理するものとする。また、メインプログラ
ムにおいて、同期待ち命令を「wait」とする。後述
するが、この「wait」命令には引数を設定する事が
できる。
【0030】以下、マルチプロセッサシステム51の動
作を説明する。単数の子タスクのみを生成する場合 図2はマルチプロセッサシステム51において一つの子
タスクを生成する場合のプロセッサエレメントPE上で
動作するプログラムを説明するための図、図3は図2に
示す場合におけるタスク発生および同期待ち解除のタイ
ミングを説明するための図である。ここで、メインプロ
グラム25の「wait」命令は、アービタ56のカウ
ンタのカウント値が「0」になることを同期解除条件と
している。例えば、図3に示すタイミング「r1」で、
プロセッサエレメントPE12において、図2に示すメ
インプログラム25に含まれる「gen」命令が実行さ
れ、タイミング「n1」でプロセッサエレメントPE1
3上にタスク26が生成される。このとき、アービタ5
6のカウント値が「1」に設定される。そして、プロセ
ッサエレメントPE13において、タスク26の「in
st1」および「inst2」などの命令が実行され
る。また、プロセッサエレメントPE12において、メ
インプログラム25の「gen」命令以降の命令が実行
される。そして、図3に示すタイミング「s1」で、プ
ロセッサエレメントPE12において、図2に示す「w
ait」命令が実行される。このとき、アービタ56の
カウント値が「1」であるため、プロセッサエレメント
PE12は、同期条件が満たされていないと判断し、同
期待ち状態になる。
作を説明する。単数の子タスクのみを生成する場合 図2はマルチプロセッサシステム51において一つの子
タスクを生成する場合のプロセッサエレメントPE上で
動作するプログラムを説明するための図、図3は図2に
示す場合におけるタスク発生および同期待ち解除のタイ
ミングを説明するための図である。ここで、メインプロ
グラム25の「wait」命令は、アービタ56のカウ
ンタのカウント値が「0」になることを同期解除条件と
している。例えば、図3に示すタイミング「r1」で、
プロセッサエレメントPE12において、図2に示すメ
インプログラム25に含まれる「gen」命令が実行さ
れ、タイミング「n1」でプロセッサエレメントPE1
3上にタスク26が生成される。このとき、アービタ5
6のカウント値が「1」に設定される。そして、プロセ
ッサエレメントPE13において、タスク26の「in
st1」および「inst2」などの命令が実行され
る。また、プロセッサエレメントPE12において、メ
インプログラム25の「gen」命令以降の命令が実行
される。そして、図3に示すタイミング「s1」で、プ
ロセッサエレメントPE12において、図2に示す「w
ait」命令が実行される。このとき、アービタ56の
カウント値が「1」であるため、プロセッサエレメント
PE12は、同期条件が満たされていないと判断し、同
期待ち状態になる。
【0031】そして、図3に示すタイミング「s2」
で、プロセッサエレメントPE13においてタスク26
の「end」命令が実行されると、タスク26が終了す
ると共に、アービタ56がカウント値が1だけ減算され
て「0」になる。これにより、同期条件が成立し、プロ
セッサエレメントPE12は、メインプログラム25の
「wait」命令以降の命令を実行する。なお、図2お
よび図3に示す場合において、プロセッサエレメントP
E12が、メインプログラム25に含まれる「wai
t」命令が実行される前に、プロセッサエレメントPE
がタスク26の「end」命令を実行した場合には、プ
ロセッサエレメントPE12は同期待ち状態にならな
い。
で、プロセッサエレメントPE13においてタスク26
の「end」命令が実行されると、タスク26が終了す
ると共に、アービタ56がカウント値が1だけ減算され
て「0」になる。これにより、同期条件が成立し、プロ
セッサエレメントPE12は、メインプログラム25の
「wait」命令以降の命令を実行する。なお、図2お
よび図3に示す場合において、プロセッサエレメントP
E12が、メインプログラム25に含まれる「wai
t」命令が実行される前に、プロセッサエレメントPE
がタスク26の「end」命令を実行した場合には、プ
ロセッサエレメントPE12は同期待ち状態にならな
い。
【0032】複数の子タスクを生成する場合(その1) 図4はマルチプロセッサシステム51において複数のタ
スクを生成し、全てのタスクの終了を同期待ちの条件と
した場合の各プロセッサエレメントPE上で動作するプ
ログラムを説明するための図、図5は図4に示す場合に
おけるタスク発生および同期待ち解除のタイミングを説
明するための図である。図4および図5に示す例では、
図4に示すメインプログラム75の「wait」命令が
示す同期待ち解除条件がカウント値「0」となってい
る。この場合には、図5に示すタイミング「r1」で、
プロセッサエレメントPE12において、図4に示すメ
インプログラム75に含まれる「gen1」命令が実行
され、タイミング「r2」でプロセッサエレメントPE
13上にタスク76が生成される。このとき、アービタ
56のカウント値が「1」に設定される。また、図5に
示すタイミング「r2」で、プロセッサエレメントPE
12において、図4に示すメインプログラム75に含ま
れる「gen2」命令が実行され、タイミング「r3」
でプロセッサエレメントPE14上にタスク77が生成
される。このとき、アービタ56のカウント値が「2」
に設定される。また、図5に示すタイミング「r3」
で、プロセッサエレメントPE12において、図4に示
すメインプログラム75に含まれる「gen3」命令が
実行され、タイミング「n1」でプロセッサエレメント
PE15上にタスク78が生成される。このとき、アー
ビタ56のカウント値が「3」に設定される。
スクを生成し、全てのタスクの終了を同期待ちの条件と
した場合の各プロセッサエレメントPE上で動作するプ
ログラムを説明するための図、図5は図4に示す場合に
おけるタスク発生および同期待ち解除のタイミングを説
明するための図である。図4および図5に示す例では、
図4に示すメインプログラム75の「wait」命令が
示す同期待ち解除条件がカウント値「0」となってい
る。この場合には、図5に示すタイミング「r1」で、
プロセッサエレメントPE12において、図4に示すメ
インプログラム75に含まれる「gen1」命令が実行
され、タイミング「r2」でプロセッサエレメントPE
13上にタスク76が生成される。このとき、アービタ
56のカウント値が「1」に設定される。また、図5に
示すタイミング「r2」で、プロセッサエレメントPE
12において、図4に示すメインプログラム75に含ま
れる「gen2」命令が実行され、タイミング「r3」
でプロセッサエレメントPE14上にタスク77が生成
される。このとき、アービタ56のカウント値が「2」
に設定される。また、図5に示すタイミング「r3」
で、プロセッサエレメントPE12において、図4に示
すメインプログラム75に含まれる「gen3」命令が
実行され、タイミング「n1」でプロセッサエレメント
PE15上にタスク78が生成される。このとき、アー
ビタ56のカウント値が「3」に設定される。
【0033】そして、プロセッサエレメントPE13に
おいて、タイミング「r2」から、タスク76に含まれ
る「inst1」および「inst2」などの命令が実
行される。また、プロセッサエレメントPE14におい
て、タイミング「r3」から、タスク77に含まれる
「inst1」および「inst2」などの命令が実行
される。また、プロセッサエレメントPE15におい
て、タイミング「n1」から、タスク78に含まれる
「inst1」および「inst2」などの命令が実行
される。
おいて、タイミング「r2」から、タスク76に含まれ
る「inst1」および「inst2」などの命令が実
行される。また、プロセッサエレメントPE14におい
て、タイミング「r3」から、タスク77に含まれる
「inst1」および「inst2」などの命令が実行
される。また、プロセッサエレメントPE15におい
て、タイミング「n1」から、タスク78に含まれる
「inst1」および「inst2」などの命令が実行
される。
【0034】そして、図5に示すタイミング「e1」
で、プロセッサエレメントPE13においてタスク76
の「end」命令が実行されると、タスク76が終了す
ると共に、アービタ56のカウント値が1だけ減算され
て「2」になる次に、図5に示すタイミング「s1」
で、プロセッサエレメントPE12において、図4に示
す「wait」命令が実行される。このとき、アービタ
56のカウント値が「2」であることから、同期待ち解
除条件を満たさず、プロセッサエレメントPE12は同
期待ち状態になる。
で、プロセッサエレメントPE13においてタスク76
の「end」命令が実行されると、タスク76が終了す
ると共に、アービタ56のカウント値が1だけ減算され
て「2」になる次に、図5に示すタイミング「s1」
で、プロセッサエレメントPE12において、図4に示
す「wait」命令が実行される。このとき、アービタ
56のカウント値が「2」であることから、同期待ち解
除条件を満たさず、プロセッサエレメントPE12は同
期待ち状態になる。
【0035】次に、図5に示すタイミング「e2」で、
プロセッサエレメントPE15においてタスク78の
「end」命令が実行されると、タスク78が終了する
と共に、アービタ56がカウント値が1だけ減算されて
「1」になる次に、図5に示すタイミング「s2」で、
プロセッサエレメントPE14においてタスク77の
「end」命令が実行されると、タスク77が終了する
と共に、アービタ56がカウント値が1だけ減算されて
「0」になるこれにより、メインプログラム75の「w
ait」命令が示す同期待ち解除条件が満たされ、プロ
セッサエレメントPE12の同期待ちが解除される。
プロセッサエレメントPE15においてタスク78の
「end」命令が実行されると、タスク78が終了する
と共に、アービタ56がカウント値が1だけ減算されて
「1」になる次に、図5に示すタイミング「s2」で、
プロセッサエレメントPE14においてタスク77の
「end」命令が実行されると、タスク77が終了する
と共に、アービタ56がカウント値が1だけ減算されて
「0」になるこれにより、メインプログラム75の「w
ait」命令が示す同期待ち解除条件が満たされ、プロ
セッサエレメントPE12の同期待ちが解除される。
【0036】複数の子タスクを生成する場合(その2) 図6はマルチプロセッサシステム51において複数のタ
スクを生成し、2つのタスクの終了を同期待ちの条件と
した場合の各プロセッサエレメントPE上で動作するプ
ログラムを説明するための図、図7は図6に示す場合に
おけるタスク発生および同期待ち解除のタイミングを説
明するための図である。図6および図7に示す例では、
図6に示すメインプログラム85の「wait」命令が
示す同期待ち解除条件がカウント値「1」となってい
る。この場合には、図7に示すタイミング「r1」で、
プロセッサエレメントPE12において、図6に示すメ
インプログラム85に含まれる「gen1」命令が実行
され、タイミング「r2」でプロセッサエレメントPE
13上にタスク86が生成される。このとき、アービタ
56のカウント値が「1」に設定される。また、図7に
示すタイミング「r2」で、プロセッサエレメントPE
12において、図6に示すメインプログラム85に含ま
れる「gen2」命令が実行され、タイミング「r3」
でプロセッサエレメントPE14上にタスク87が生成
される。このとき、アービタ56のカウント値が「2」
に設定される。また、図7に示すタイミング「r3」
で、プロセッサエレメントPE12において、図6に示
すメインプログラム85に含まれる「gen3」命令が
実行され、タイミング「n1」でプロセッサエレメント
PE15上にタスク88が生成される。このとき、アー
ビタ56のカウント値が「3」に設定される。
スクを生成し、2つのタスクの終了を同期待ちの条件と
した場合の各プロセッサエレメントPE上で動作するプ
ログラムを説明するための図、図7は図6に示す場合に
おけるタスク発生および同期待ち解除のタイミングを説
明するための図である。図6および図7に示す例では、
図6に示すメインプログラム85の「wait」命令が
示す同期待ち解除条件がカウント値「1」となってい
る。この場合には、図7に示すタイミング「r1」で、
プロセッサエレメントPE12において、図6に示すメ
インプログラム85に含まれる「gen1」命令が実行
され、タイミング「r2」でプロセッサエレメントPE
13上にタスク86が生成される。このとき、アービタ
56のカウント値が「1」に設定される。また、図7に
示すタイミング「r2」で、プロセッサエレメントPE
12において、図6に示すメインプログラム85に含ま
れる「gen2」命令が実行され、タイミング「r3」
でプロセッサエレメントPE14上にタスク87が生成
される。このとき、アービタ56のカウント値が「2」
に設定される。また、図7に示すタイミング「r3」
で、プロセッサエレメントPE12において、図6に示
すメインプログラム85に含まれる「gen3」命令が
実行され、タイミング「n1」でプロセッサエレメント
PE15上にタスク88が生成される。このとき、アー
ビタ56のカウント値が「3」に設定される。
【0037】そして、プロセッサエレメントPE13に
おいて、タイミング「r2」から、タスク86に含まれ
る「inst1」および「inst2」などの命令が実
行される。また、プロセッサエレメントPE14におい
て、タイミング「r3」から、タスク87に含まれる
「inst1」および「inst2」などの命令が実行
される。また、プロセッサエレメントPE14におい
て、タイミング「n1」から、タスク88に含まれる
「inst1」および「inst2」などの命令が実行
される。
おいて、タイミング「r2」から、タスク86に含まれ
る「inst1」および「inst2」などの命令が実
行される。また、プロセッサエレメントPE14におい
て、タイミング「r3」から、タスク87に含まれる
「inst1」および「inst2」などの命令が実行
される。また、プロセッサエレメントPE14におい
て、タイミング「n1」から、タスク88に含まれる
「inst1」および「inst2」などの命令が実行
される。
【0038】そして、図7に示すタイミング「e1」
で、プロセッサエレメントPE13においてタスク86
の「end」命令が実行されると、タスク86が終了す
ると共に、アービタ56のカウント値が1だけ減算され
て「2」になる次に、図7に示すタイミング「s1」
で、プロセッサエレメントPE12において、図6に示
す「wait」命令が実行される。このとき、アービタ
56のカウント値が「2」であることから、同期待ち解
除条件を満たさず、プロセッサエレメントPE12は同
期待ち状態になる。
で、プロセッサエレメントPE13においてタスク86
の「end」命令が実行されると、タスク86が終了す
ると共に、アービタ56のカウント値が1だけ減算され
て「2」になる次に、図7に示すタイミング「s1」
で、プロセッサエレメントPE12において、図6に示
す「wait」命令が実行される。このとき、アービタ
56のカウント値が「2」であることから、同期待ち解
除条件を満たさず、プロセッサエレメントPE12は同
期待ち状態になる。
【0039】次に、図5に示すタイミング「e2」で、
プロセッサエレメントPE15においてタスク88の
「end」命令が実行されると、タスク88が終了する
と共に、アービタ56がカウント値が1だけ減算されて
「1」になる。これにより、メインプログラム75の
「wait」命令が示す同期待ち解除条件が満たされ、
プロセッサエレメントPE12の同期待ちが解除され
る。
プロセッサエレメントPE15においてタスク88の
「end」命令が実行されると、タスク88が終了する
と共に、アービタ56がカウント値が1だけ減算されて
「1」になる。これにより、メインプログラム75の
「wait」命令が示す同期待ち解除条件が満たされ、
プロセッサエレメントPE12の同期待ちが解除され
る。
【0040】このように、図6および図7に示す例で
は、図6に示すメインプログラム85が生成した3つの
子タスク86,87,88のうち2つの子タスクの終了
を「wait」命令の引数に記述する。その結果、タス
ク86および88が終了すると、タスク87の終了を待
たずに同期待ち状態が解除できる。ここで、タスク87
としては、例えば、仮想記憶をサポートするタスクなど
の長期的に存在するタスクが適用される。
は、図6に示すメインプログラム85が生成した3つの
子タスク86,87,88のうち2つの子タスクの終了
を「wait」命令の引数に記述する。その結果、タス
ク86および88が終了すると、タスク87の終了を待
たずに同期待ち状態が解除できる。ここで、タスク87
としては、例えば、仮想記憶をサポートするタスクなど
の長期的に存在するタスクが適用される。
【0041】以上説明したように、マルチプロセッサシ
ステム51によれば、マルチタスクを実現する場合で
も、OSなどによる複雑な管理を行うことなく、複数の
タスクを発生したプログラムの同期待ちを解決すること
ができる。
ステム51によれば、マルチタスクを実現する場合で
も、OSなどによる複雑な管理を行うことなく、複数の
タスクを発生したプログラムの同期待ちを解決すること
ができる。
【0042】しかしながら、上述したマルチプロセッサ
システム51では、例えば、図6に示すように、タスク
87の終了を待たずに、タスク86および88が終了し
た時点でメインプログラム85の「wait」命令によ
る同期待ちを解除したい場合に、プログラマは、「wa
it」命令の引数となるカウント値を設定するために、
タスク86および88の双方が終了した時点でタスク8
7が終了しているか否かを知らなければならない。その
ため、メインプログラム85を開発する際のプログラマ
の負担が大きく、開発期間が長期化するという問題があ
る。また、「wait」命令の引数となるカウント値の
設定するために複数のタスクの終了タイミングを判断す
る作業は煩雑であり、間違えも発生しやすいという問題
がある。特に、特にタスクの数が多い場合や、複数のタ
スクの相互間で特性が異なる場合には、当該終了タイミ
ングの判断は非常に困難である。
システム51では、例えば、図6に示すように、タスク
87の終了を待たずに、タスク86および88が終了し
た時点でメインプログラム85の「wait」命令によ
る同期待ちを解除したい場合に、プログラマは、「wa
it」命令の引数となるカウント値を設定するために、
タスク86および88の双方が終了した時点でタスク8
7が終了しているか否かを知らなければならない。その
ため、メインプログラム85を開発する際のプログラマ
の負担が大きく、開発期間が長期化するという問題があ
る。また、「wait」命令の引数となるカウント値の
設定するために複数のタスクの終了タイミングを判断す
る作業は煩雑であり、間違えも発生しやすいという問題
がある。特に、特にタスクの数が多い場合や、複数のタ
スクの相互間で特性が異なる場合には、当該終了タイミ
ングの判断は非常に困難である。
【0043】第2実施形態 本実施形態のマルチプロセッサシステムは、上述した第
1実施形態のマルチプロセッサシステム51の問題点を
解決するものであり、アービタを除いて、基本的に、前
述した図1に示すマルチプロセッサシステム51と同じ
構成をしている。図8は、本実施形態のマルチプロセッ
サシステム151の構成図である。図8に示すように、
マルチプロセッサシステム151は、4つのプロセッサ
エレメントPE12,PE13,PE14,PE15
と、タスクの同期を管理するアービタ156とが共通バ
ス11を介して接続されている。また、マルチプロセッ
サシステム151では、プロセッサエレメントPE1
2,PE13,PE14,PE15と共有メモリ17と
がメインバス19を介して接続されている。共有メモリ
17は、外部端子18を介して、外部メモリ(メインメ
モリ)に接続されている。
1実施形態のマルチプロセッサシステム51の問題点を
解決するものであり、アービタを除いて、基本的に、前
述した図1に示すマルチプロセッサシステム51と同じ
構成をしている。図8は、本実施形態のマルチプロセッ
サシステム151の構成図である。図8に示すように、
マルチプロセッサシステム151は、4つのプロセッサ
エレメントPE12,PE13,PE14,PE15
と、タスクの同期を管理するアービタ156とが共通バ
ス11を介して接続されている。また、マルチプロセッ
サシステム151では、プロセッサエレメントPE1
2,PE13,PE14,PE15と共有メモリ17と
がメインバス19を介して接続されている。共有メモリ
17は、外部端子18を介して、外部メモリ(メインメ
モリ)に接続されている。
【0044】図8において、図1と同じ符号を付したプ
ロセッサエレメントPE12,PE13,PE14,P
E15、共通バス11、メインバス19、共有メモリ1
7および外部端子18は、前述した図1に示す構成要素
と同じである。すなわち、マルチプロセッサシステム1
51は、アービタ156におけるタスク同期の管理方法
に特徴を有する。アービタ156は、図9に示すよう
に、m(mは2以上の整数)個のパイプカウンタp0 〜
pm-1 を備えている。各パイプカウンタp0 〜pm-1 の
機能は、基本的に、前述した第1実施形態のアービタ5
6のカウンタ機能と同じである。ここで、メインプログ
ラムのタスク生成命令「gen」は、パイプカウンタp
0 〜pm-1 を指定する識別子を含んでいる。
ロセッサエレメントPE12,PE13,PE14,P
E15、共通バス11、メインバス19、共有メモリ1
7および外部端子18は、前述した図1に示す構成要素
と同じである。すなわち、マルチプロセッサシステム1
51は、アービタ156におけるタスク同期の管理方法
に特徴を有する。アービタ156は、図9に示すよう
に、m(mは2以上の整数)個のパイプカウンタp0 〜
pm-1 を備えている。各パイプカウンタp0 〜pm-1 の
機能は、基本的に、前述した第1実施形態のアービタ5
6のカウンタ機能と同じである。ここで、メインプログ
ラムのタスク生成命令「gen」は、パイプカウンタp
0 〜pm-1 を指定する識別子を含んでいる。
【0045】各パイプカウンタp0 〜pm-1 は、例え
ば、図10に示すように、メインプログラム160のタ
スク生成命令「gen」が実行され、当該タスク生成命
令「gen」が自分自身を指定している場合に、カウン
ト値を1だけ増加し、当該タスク生成命令「gen」に
よって生成された子タスク161が終了したときにカウ
ント値を1だけ減少させる。また、各パイプカウンタp
0 〜pm-1 は、メインプログラム160が初期化命令を
実行したときに、カウント値をリセットする。また、各
パイプカウンタp0〜pm-1 は、カウント値を戻り値と
してメインプログラム160に出力する。
ば、図10に示すように、メインプログラム160のタ
スク生成命令「gen」が実行され、当該タスク生成命
令「gen」が自分自身を指定している場合に、カウン
ト値を1だけ増加し、当該タスク生成命令「gen」に
よって生成された子タスク161が終了したときにカウ
ント値を1だけ減少させる。また、各パイプカウンタp
0 〜pm-1 は、メインプログラム160が初期化命令を
実行したときに、カウント値をリセットする。また、各
パイプカウンタp0〜pm-1 は、カウント値を戻り値と
してメインプログラム160に出力する。
【0046】また、メインプログラムに記述される同期
命令である「wait」命令は、同期条件を満たすカウ
ント値の他に、パイプカウンタを指定する識別子を含ん
でいる。プロセッサエレメントPEは、「wait」命
令を実行したときに、当該「wait」命令で指定され
るパイプカウンタp0 〜pm-1 のカウント値を戻り値と
して入力し、当該入力したカウント値と、当該「wai
t」命令に含まれるカウント値とが一致したときに同期
条件が満たされたと判断する。
命令である「wait」命令は、同期条件を満たすカウ
ント値の他に、パイプカウンタを指定する識別子を含ん
でいる。プロセッサエレメントPEは、「wait」命
令を実行したときに、当該「wait」命令で指定され
るパイプカウンタp0 〜pm-1 のカウント値を戻り値と
して入力し、当該入力したカウント値と、当該「wai
t」命令に含まれるカウント値とが一致したときに同期
条件が満たされたと判断する。
【0047】以下、図8に示すマルチプロセッサシステ
ム151の動作について説明する。図11はマルチプロ
セッサシステム151におけるプロセッサエレメントP
E12上で動作するメインプログラム210およびプロ
セッサエレメントPE13〜15上で動作するタスク2
11〜213を説明するための図、図12は図11に示
す場合におけるタスク発生および同期待ち解除のタイミ
ングを説明するための図である。図11において、プロ
セッサエレメントPE12で実行されるメインプログラ
ム210には、タスク生成命令「gen1」,「gen
2」,「gen3」および同期待ち命令「wait」が
記述されている。ここで、タスク生成命令「gen1」
は、プロセッサエレメントPE13にタスク211を発
生させる命令であり、パイプカウンタp0 を指定してい
る。また、タスク生成命令「gen2」は、プロセッサ
エレメントPE14にタスク212を発生させる命令で
あり、パイプカウンタp1 を指定している。また、タス
ク生成命令「gen3」は、プロセッサエレメントPE
15にタスク213を発生させる命令であり、パイプカ
ウンタp0 を指定している。また、「wait」命令
は、パイプカウンタp0 のカウント値が「0」になるこ
とを同期解除条件として指定している。
ム151の動作について説明する。図11はマルチプロ
セッサシステム151におけるプロセッサエレメントP
E12上で動作するメインプログラム210およびプロ
セッサエレメントPE13〜15上で動作するタスク2
11〜213を説明するための図、図12は図11に示
す場合におけるタスク発生および同期待ち解除のタイミ
ングを説明するための図である。図11において、プロ
セッサエレメントPE12で実行されるメインプログラ
ム210には、タスク生成命令「gen1」,「gen
2」,「gen3」および同期待ち命令「wait」が
記述されている。ここで、タスク生成命令「gen1」
は、プロセッサエレメントPE13にタスク211を発
生させる命令であり、パイプカウンタp0 を指定してい
る。また、タスク生成命令「gen2」は、プロセッサ
エレメントPE14にタスク212を発生させる命令で
あり、パイプカウンタp1 を指定している。また、タス
ク生成命令「gen3」は、プロセッサエレメントPE
15にタスク213を発生させる命令であり、パイプカ
ウンタp0 を指定している。また、「wait」命令
は、パイプカウンタp0 のカウント値が「0」になるこ
とを同期解除条件として指定している。
【0048】図11に示すメインプログラム210をプ
ロセッサエレメントPE12上で実行すると、図12に
示すタイミング「r1」で、プロセッサエレメントPE
12において、図11に示すメインプログラム210の
「gen1」命令が実行され、タイミング「r2」でプ
ロセッサエレメントPE13上にタスク211が生成さ
れる。このとき、「gen1」命令がパイプカウンタp
0 を指定していることから、パイプカウンタp0 のカウ
ント値が増加されて「1」に設定される。また、図12
に示すタイミング「r2」で、プロセッサエレメントP
E12において、図11に示すメインプログラム210
に含まれる「gen2」命令が実行され、タイミング
「r3」でプロセッサエレメントPE14上にタスク2
12が生成される。このとき、「gen2」命令がパイ
プカウンタp1 を指定していることから、アービタ15
6のパイプカウンタp1 のカウント値が増加されて
「1」に設定される。
ロセッサエレメントPE12上で実行すると、図12に
示すタイミング「r1」で、プロセッサエレメントPE
12において、図11に示すメインプログラム210の
「gen1」命令が実行され、タイミング「r2」でプ
ロセッサエレメントPE13上にタスク211が生成さ
れる。このとき、「gen1」命令がパイプカウンタp
0 を指定していることから、パイプカウンタp0 のカウ
ント値が増加されて「1」に設定される。また、図12
に示すタイミング「r2」で、プロセッサエレメントP
E12において、図11に示すメインプログラム210
に含まれる「gen2」命令が実行され、タイミング
「r3」でプロセッサエレメントPE14上にタスク2
12が生成される。このとき、「gen2」命令がパイ
プカウンタp1 を指定していることから、アービタ15
6のパイプカウンタp1 のカウント値が増加されて
「1」に設定される。
【0049】また、図12に示すタイミング「r3」
で、プロセッサエレメントPE12において、図11に
示すメインプログラム210に含まれる「gen3」命
令が実行され、タイミング「n1」でプロセッサエレメ
ントPE15上にタスク213が生成される。このと
き、「gen3」命令がパイプカウンタp0 を指定して
いることから、アービタ156のパイプカウンタp0 の
カウント値が増加されて「2」に設定される。
で、プロセッサエレメントPE12において、図11に
示すメインプログラム210に含まれる「gen3」命
令が実行され、タイミング「n1」でプロセッサエレメ
ントPE15上にタスク213が生成される。このと
き、「gen3」命令がパイプカウンタp0 を指定して
いることから、アービタ156のパイプカウンタp0 の
カウント値が増加されて「2」に設定される。
【0050】そして、プロセッサエレメントPE13に
おいて、タイミング「r2」から、タスク211に含ま
れる「inst1」および「inst2」などの命令が
実行される。また、プロセッサエレメントPE14にお
いて、タイミング「r3」から、タスク212に含まれ
る「inst1」および「inst2」などの命令が実
行される。また、プロセッサエレメントPE15におい
て、タイミング「n1」から、タスク213に含まれる
「inst1」および「inst2」などの命令が実行
される。
おいて、タイミング「r2」から、タスク211に含ま
れる「inst1」および「inst2」などの命令が
実行される。また、プロセッサエレメントPE14にお
いて、タイミング「r3」から、タスク212に含まれ
る「inst1」および「inst2」などの命令が実
行される。また、プロセッサエレメントPE15におい
て、タイミング「n1」から、タスク213に含まれる
「inst1」および「inst2」などの命令が実行
される。
【0051】そして、図12に示すタイミング「e1」
で、プロセッサエレメントPE13においてタスク21
1の「end」命令が実行されると、タスク211が終
了すると共に、パイプカウンタp0 のカウント値が1だ
け減算されて「1」になる。次に、図12に示すタイミ
ング「s1」で、プロセッサエレメントPE12におい
て、図11に示す「wait」命令が実行される。この
とき、アービタ156のパイプカウンタp0 のカウント
値が「1」であり、「wait」命令の同期解除条件で
あるパイプカウンタp0 のカウント値「0」を満たして
いないため、プロセッサエレメントPE12は同期待ち
状態になる。
で、プロセッサエレメントPE13においてタスク21
1の「end」命令が実行されると、タスク211が終
了すると共に、パイプカウンタp0 のカウント値が1だ
け減算されて「1」になる。次に、図12に示すタイミ
ング「s1」で、プロセッサエレメントPE12におい
て、図11に示す「wait」命令が実行される。この
とき、アービタ156のパイプカウンタp0 のカウント
値が「1」であり、「wait」命令の同期解除条件で
あるパイプカウンタp0 のカウント値「0」を満たして
いないため、プロセッサエレメントPE12は同期待ち
状態になる。
【0052】次に、図5に示すタイミング「e2」で、
プロセッサエレメントPE15においてタスク213の
「end」命令が実行されると、タスク213が終了す
ると共に、パイプカウンタp0 のカウント値が1だけ減
算されて「0」になる。これにより、メインプログラム
210の「wait」命令が示す同期待ち解除条件が満
たされ、プロセッサエレメントPE12の同期待ちが解
除される。
プロセッサエレメントPE15においてタスク213の
「end」命令が実行されると、タスク213が終了す
ると共に、パイプカウンタp0 のカウント値が1だけ減
算されて「0」になる。これにより、メインプログラム
210の「wait」命令が示す同期待ち解除条件が満
たされ、プロセッサエレメントPE12の同期待ちが解
除される。
【0053】このように、図11および図12に示す例
では、タスク211および213が終了すると、タスク
212の終了を待たずにメインプログラム210の同期
待ち状態が解除できる。
では、タスク211および213が終了すると、タスク
212の終了を待たずにメインプログラム210の同期
待ち状態が解除できる。
【0054】また、マルチプロセッサシステム151
は、図12に示す動作と同じ動作を行うために、例え
ば、図13に示すように、タスク生成命令「gen
1」,「gen2」および「gen3」の全てがパイプ
カウンタp0 を指定し、同期命令「wait」における
同期解除条件をパイプカウンタp0 のカウント値「1」
に設定してもよい。
は、図12に示す動作と同じ動作を行うために、例え
ば、図13に示すように、タスク生成命令「gen
1」,「gen2」および「gen3」の全てがパイプ
カウンタp0 を指定し、同期命令「wait」における
同期解除条件をパイプカウンタp0 のカウント値「1」
に設定してもよい。
【0055】以上説明したように、マルチプロセッサシ
ステム151によれば、例えば、図11に示すメインプ
ログラム210の「gen1」および「gen3」が発
生したタスク211および213が終了したときに、
「gen3」によって生成されたタスク212の終了を
待たずに、メインプログラム210の同期命令「wai
t」による同期待ちを解除したい場合に、「gen1」
および「gen3」においてパイプカウンタp0 を指定
し、同期命令「wait」においてパイプカウンタp0
のカウント値が「0」になることを同期解除条件とすれ
ば良く、タスク212の終了タイミングを考慮せずに、
同期命令「wait」を記述できる。そのため、マルチ
プロセッサシステム151によれば、プログラマがメイ
ンプログラム210を記述する際の負担を軽減でき、プ
ログラム開発期間を短縮できると共に、ミスの少ない高
品質なプログラムを開発できる。
ステム151によれば、例えば、図11に示すメインプ
ログラム210の「gen1」および「gen3」が発
生したタスク211および213が終了したときに、
「gen3」によって生成されたタスク212の終了を
待たずに、メインプログラム210の同期命令「wai
t」による同期待ちを解除したい場合に、「gen1」
および「gen3」においてパイプカウンタp0 を指定
し、同期命令「wait」においてパイプカウンタp0
のカウント値が「0」になることを同期解除条件とすれ
ば良く、タスク212の終了タイミングを考慮せずに、
同期命令「wait」を記述できる。そのため、マルチ
プロセッサシステム151によれば、プログラマがメイ
ンプログラム210を記述する際の負担を軽減でき、プ
ログラム開発期間を短縮できると共に、ミスの少ない高
品質なプログラムを開発できる。
【0056】上述したマルチプロセッサシステム151
では、例えば、図14に示すように、一人のプログラマ
が記述したメインプログラム400のタスク生成命令
が、パイプカウンタp0 〜pm-1 を用いて複数の子タス
ク401を生成する場合には問題はない。しかしなが
ら、マルチプロセッサシステム151では、例えば、図
15に示すように、メインプログラム405および40
6が異なるプログラマによって記述された場合に、プロ
グラマ相互間でパイプカウンタの割り当てを行っていな
い場合には、メインプログラム405および406のタ
スク呼び出し命令が共通のパイプカウンタp0 を用いて
子タスク407を生成する場合がある。なお、マルチプ
ロセッサシステム151では、パイプカウンタp0 〜p
m-1 のカウント値は、例えば、図16に示すように、メ
モリの記憶領域におけるパイプカウンタp0 〜pm-1 の
それぞれに対応するエントリにカウント値のみが記憶さ
れている。
では、例えば、図14に示すように、一人のプログラマ
が記述したメインプログラム400のタスク生成命令
が、パイプカウンタp0 〜pm-1 を用いて複数の子タス
ク401を生成する場合には問題はない。しかしなが
ら、マルチプロセッサシステム151では、例えば、図
15に示すように、メインプログラム405および40
6が異なるプログラマによって記述された場合に、プロ
グラマ相互間でパイプカウンタの割り当てを行っていな
い場合には、メインプログラム405および406のタ
スク呼び出し命令が共通のパイプカウンタp0 を用いて
子タスク407を生成する場合がある。なお、マルチプ
ロセッサシステム151では、パイプカウンタp0 〜p
m-1 のカウント値は、例えば、図16に示すように、メ
モリの記憶領域におけるパイプカウンタp0 〜pm-1 の
それぞれに対応するエントリにカウント値のみが記憶さ
れている。
【0057】さらに具体例を挙げると、例えば、図17
に示すような場合が考えられる。すなわち、プロセッサ
エレメントPE450上で動作するメインプログラム4
60がプログラマAによって作成され、プロセッサエレ
メントPE453上で動作するメインプログラム463
がプログラマBによって作成されている。大規模なプロ
グラムは、このように、プログラムを複数のモジュール
に分けて、各モジュールが異なるプログラマによって作
成されることが多い。しかしながら、図16に示す例で
は、メインプログラム460のタスク生成命令「gen
1」と、メインプログラム453のタスク生成命令「g
en4」とが共にパイプカウンタp0 を用いている。こ
の場合には、メインプログラム460および463にバ
グが存在することとなり、メインプログラム460およ
び463におけるパイプカウンタp0 を用いた同期待ち
を適切に実行することができない。
に示すような場合が考えられる。すなわち、プロセッサ
エレメントPE450上で動作するメインプログラム4
60がプログラマAによって作成され、プロセッサエレ
メントPE453上で動作するメインプログラム463
がプログラマBによって作成されている。大規模なプロ
グラムは、このように、プログラムを複数のモジュール
に分けて、各モジュールが異なるプログラマによって作
成されることが多い。しかしながら、図16に示す例で
は、メインプログラム460のタスク生成命令「gen
1」と、メインプログラム453のタスク生成命令「g
en4」とが共にパイプカウンタp0 を用いている。こ
の場合には、メインプログラム460および463にバ
グが存在することとなり、メインプログラム460およ
び463におけるパイプカウンタp0 を用いた同期待ち
を適切に実行することができない。
【0058】すなわち、プログラムを複数のモジュール
に分けて開発する場合には、同期命令に上述したような
共通リソースであるパイプカウンタを特定する記述を含
めると、上述したようなバグの原因になる可能性が高く
なる。このような問題を解決するために、各プログラマ
に使用可能なパイプカウンタを予め割り当てる方法も考
えられるが、その場合には、メインプログラム(プログ
ラムモジュール)の数に応じた多数のパイプカウンタを
設ける必要があり、プログラムを大規模化させてしま
う。また、プログラマは、自らに割り当てられたパイプ
カウンタを意識してプログラムを作成する必要があり、
バグの発生原因ともなり得る。
に分けて開発する場合には、同期命令に上述したような
共通リソースであるパイプカウンタを特定する記述を含
めると、上述したようなバグの原因になる可能性が高く
なる。このような問題を解決するために、各プログラマ
に使用可能なパイプカウンタを予め割り当てる方法も考
えられるが、その場合には、メインプログラム(プログ
ラムモジュール)の数に応じた多数のパイプカウンタを
設ける必要があり、プログラムを大規模化させてしま
う。また、プログラマは、自らに割り当てられたパイプ
カウンタを意識してプログラムを作成する必要があり、
バグの発生原因ともなり得る。
【0059】第3実施形態 本実施形態は、上述した第2実施形態のマルチプロセッ
サシステム151の問題点を解決するものであり、プロ
グラムを複数のプログラマがモジュール単位で開発した
場合でも、パイプカウンタを共用することに伴うバグの
発生をシステムが自動的に回避する。図18は、本実施
形態のマルチプロセッサシステム551の構成図であ
る。図18に示すように、マルチプロセッサシステム5
51は、6つのプロセッサエレメントPE512,PE
513,PE514,PE515,PE516,PE5
17と、タスクの同期を管理するアービタ556とが共
通バス11を介して接続されている。また、マルチプロ
セッサシステム151では、プロセッサエレメントPE
512,PE513,PE514,PE515,PE5
16,PE517と共有メモリ17とがメインバス19
を介して接続されている。共有メモリ17は、外部端子
18を介して、外部メモリ(メインメモリ)に接続され
ている。
サシステム151の問題点を解決するものであり、プロ
グラムを複数のプログラマがモジュール単位で開発した
場合でも、パイプカウンタを共用することに伴うバグの
発生をシステムが自動的に回避する。図18は、本実施
形態のマルチプロセッサシステム551の構成図であ
る。図18に示すように、マルチプロセッサシステム5
51は、6つのプロセッサエレメントPE512,PE
513,PE514,PE515,PE516,PE5
17と、タスクの同期を管理するアービタ556とが共
通バス11を介して接続されている。また、マルチプロ
セッサシステム151では、プロセッサエレメントPE
512,PE513,PE514,PE515,PE5
16,PE517と共有メモリ17とがメインバス19
を介して接続されている。共有メモリ17は、外部端子
18を介して、外部メモリ(メインメモリ)に接続され
ている。
【0060】すなわち、マルチプロセッサシステム55
1は、アービタ556におけるタスク同期の管理方法に
特徴を有する。アービタ556は、図19に示すタスク
管理テーブル560を有し、メインプログラムとタスク
との間の同期を解決する。タスク管理テーブル560
は、複数のメインプログラムからのタスク呼び出し命令
において、同一の番号のパイプカウンタが同一の期間内
に重複して使用された場合でも、同期待ちが適切に実行
されることを保証する。
1は、アービタ556におけるタスク同期の管理方法に
特徴を有する。アービタ556は、図19に示すタスク
管理テーブル560を有し、メインプログラムとタスク
との間の同期を解決する。タスク管理テーブル560
は、複数のメインプログラムからのタスク呼び出し命令
において、同一の番号のパイプカウンタが同一の期間内
に重複して使用された場合でも、同期待ちが適切に実行
されることを保証する。
【0061】本実施形態でも、前述した第2実施形態の
場合と同様に、メインプログラムのタスク生成命令「g
en」は、パイプカウンタp0 〜pm-1 を指定する識別
子を含んでいる。また、メインプログラムに記述される
同期命令である「wait」命令は、同期条件を満たす
カウント値の他に、パイプカウンタを指定する識別子を
含んでいる。プロセッサエレメントPEは、「wai
t」命令を実行したときに、当該プロセッサエレメント
PEの番号と当該「wait」命令で指定されるパイプ
カウンタの番号を用いて、タスク管理テーブル560か
ら対応するカウント値を戻り値として入力し、当該入力
したカウント値と、当該「wait」命令に含まれるカ
ウント値とが一致したとき、あるいは、当該入力したカ
ウント値の方が小さいときに同期条件が満たされたと判
断する。図19に示すように、タスク管理テーブル56
0は、「0」〜「m−1」のm個のエントリィを持ち、
各エントリィは、有効ビット561、親プロセッサ番号
562、パイプカウンタ番号563およびカウント値5
64を持つ。有効ビット561は、対応するエントリィ
が現在使用されているか否かを示す。具体的には、使用
されている場合には「1」になっており、使用されてい
ない場合には「0」になっている。
場合と同様に、メインプログラムのタスク生成命令「g
en」は、パイプカウンタp0 〜pm-1 を指定する識別
子を含んでいる。また、メインプログラムに記述される
同期命令である「wait」命令は、同期条件を満たす
カウント値の他に、パイプカウンタを指定する識別子を
含んでいる。プロセッサエレメントPEは、「wai
t」命令を実行したときに、当該プロセッサエレメント
PEの番号と当該「wait」命令で指定されるパイプ
カウンタの番号を用いて、タスク管理テーブル560か
ら対応するカウント値を戻り値として入力し、当該入力
したカウント値と、当該「wait」命令に含まれるカ
ウント値とが一致したとき、あるいは、当該入力したカ
ウント値の方が小さいときに同期条件が満たされたと判
断する。図19に示すように、タスク管理テーブル56
0は、「0」〜「m−1」のm個のエントリィを持ち、
各エントリィは、有効ビット561、親プロセッサ番号
562、パイプカウンタ番号563およびカウント値5
64を持つ。有効ビット561は、対応するエントリィ
が現在使用されているか否かを示す。具体的には、使用
されている場合には「1」になっており、使用されてい
ない場合には「0」になっている。
【0062】親プロセッサ番号562は、タスク生成命
令を発生したメインプログラムが動作するプロセッサエ
レメントPEの番号を示すエンコードされたデータであ
る。パイプカウンタ番号563は、タスク生成命令で指
定したパイプカウンタの番号を示すエンコードされたデ
ータである。カウント値564は、対応する親プロセッ
サ番号562が示すプロセッサエレメントPEが、対応
するパイプカウンタ番号563が示すパイプカウンタを
指定したタスク生成命令「gen」を実行したときに1
だけ増加し、当該タスク生成命令「gen」によって生
成したタスクが終了したときに1だけ減少するカウント
値を示している。なお、カウント値564の初期値は
「0」である。
令を発生したメインプログラムが動作するプロセッサエ
レメントPEの番号を示すエンコードされたデータであ
る。パイプカウンタ番号563は、タスク生成命令で指
定したパイプカウンタの番号を示すエンコードされたデ
ータである。カウント値564は、対応する親プロセッ
サ番号562が示すプロセッサエレメントPEが、対応
するパイプカウンタ番号563が示すパイプカウンタを
指定したタスク生成命令「gen」を実行したときに1
だけ増加し、当該タスク生成命令「gen」によって生
成したタスクが終了したときに1だけ減少するカウント
値を示している。なお、カウント値564の初期値は
「0」である。
【0063】タスク管理テーブル560は、プロセッサ
エレメントPEでメインプログラムに含まれるタスク生
成命令「gen」が実行されたときに、有効ビット56
1が有効(「1」)を示し、親プロセッサ番号562が
当該タスク生成命令「gen」を出したプロセッサエレ
メントPEの番号を示し、パイプカウンタ番号563が
当該タスク生成命令「gen」が指定したパイプカウン
タの番号を示すエントリィが存在するか否かを判断す
る。そして、このようなエントリィが存在する場合に
は、そのエントリィのカウント値564を1だけ増加す
る。一方、このようなエントリィが存在しない場合に
は、有効ビット561が無効(「0」)を示すエントリ
ィのうち一のエントリィを選択し、この選択したエント
リィの有効ビット561を有効(「1」)に設定し、親
プロセッサ番号562を当該タスク生成命令「gen」
を出したプロセッサエレメントPEの番号に設定し、パ
イプカウンタ番号563を当該タスク生成命令「ge
n」が指定したパイプカウンタの番号に設定する。この
とき、カウント値564は初期値「0」になる。
エレメントPEでメインプログラムに含まれるタスク生
成命令「gen」が実行されたときに、有効ビット56
1が有効(「1」)を示し、親プロセッサ番号562が
当該タスク生成命令「gen」を出したプロセッサエレ
メントPEの番号を示し、パイプカウンタ番号563が
当該タスク生成命令「gen」が指定したパイプカウン
タの番号を示すエントリィが存在するか否かを判断す
る。そして、このようなエントリィが存在する場合に
は、そのエントリィのカウント値564を1だけ増加す
る。一方、このようなエントリィが存在しない場合に
は、有効ビット561が無効(「0」)を示すエントリ
ィのうち一のエントリィを選択し、この選択したエント
リィの有効ビット561を有効(「1」)に設定し、親
プロセッサ番号562を当該タスク生成命令「gen」
を出したプロセッサエレメントPEの番号に設定し、パ
イプカウンタ番号563を当該タスク生成命令「ge
n」が指定したパイプカウンタの番号に設定する。この
とき、カウント値564は初期値「0」になる。
【0064】また、タスク管理テーブル560は、プロ
セッサエレメントPEにおいて、命令「end」が実行
され、呼び出されたタスクが終了したときに、当該タス
クを呼び出したプロセッサエレメントPEの番号と、当
該タスクを呼び出したタスク生成命令「gen」が示す
パイプカウンタの番号とから対応するエントリィを特定
し、この特定したエントリィののカウント値564を1
だけ減算する。なお、カウント値564が「0」になっ
たとき、そのエントリィの有効ビット561を「0」に
設定する。
セッサエレメントPEにおいて、命令「end」が実行
され、呼び出されたタスクが終了したときに、当該タス
クを呼び出したプロセッサエレメントPEの番号と、当
該タスクを呼び出したタスク生成命令「gen」が示す
パイプカウンタの番号とから対応するエントリィを特定
し、この特定したエントリィののカウント値564を1
だけ減算する。なお、カウント値564が「0」になっ
たとき、そのエントリィの有効ビット561を「0」に
設定する。
【0065】以下、図18に示すマルチプロセッサシス
テム551の動作について説明する。ここでは、図20
に示すように、プロセッサエレメントPE450上で動
作するメインプログラム460でタスク生成命令「ge
n1」および「gen2」が実行され、プロセッサエレ
メントPE453上で動作するメインプログラム463
でタスク生成命令「gen3」および「gen4」が実
行される場合について説明する。
テム551の動作について説明する。ここでは、図20
に示すように、プロセッサエレメントPE450上で動
作するメインプログラム460でタスク生成命令「ge
n1」および「gen2」が実行され、プロセッサエレ
メントPE453上で動作するメインプログラム463
でタスク生成命令「gen3」および「gen4」が実
行される場合について説明する。
【0066】先ず、図20に示すメインプログラム57
2のタスク生成命令「gen1」がプロセッサエレメン
トPE512上で実行される。このとき、タスク生成命
令「gen1」は、パイプカウンタp0 を指定してい
る。当該タスク生成命令「gen1」が実行されると、
図21に示すタスク管理テーブル560のエントリィ
「0」が選択され、エントリィ「0」の有効ビット56
1が「1」に設定され、親プロセッサ番号562がプロ
セッサエレメントPE512を示す「0」に設定され、
パイプカウンタ番号563がパイプカウンタp0 を示す
「0」に設定され、カウント値564が「1」に設定さ
れる。
2のタスク生成命令「gen1」がプロセッサエレメン
トPE512上で実行される。このとき、タスク生成命
令「gen1」は、パイプカウンタp0 を指定してい
る。当該タスク生成命令「gen1」が実行されると、
図21に示すタスク管理テーブル560のエントリィ
「0」が選択され、エントリィ「0」の有効ビット56
1が「1」に設定され、親プロセッサ番号562がプロ
セッサエレメントPE512を示す「0」に設定され、
パイプカウンタ番号563がパイプカウンタp0 を示す
「0」に設定され、カウント値564が「1」に設定さ
れる。
【0067】次に、図20に示すメインプログラム57
2のタスク生成命令「gen2」がプロセッサエレメン
トPE512上で実行される。このとき、タスク生成命
令「gen2」は、パイプカウンタp1 を指定してい
る。当該タスク生成命令「gen2」が実行されると、
図21に示すタスク管理テーブル560のエントリィ
「1」が選択され、エントリィ「1」の有効ビット56
1が「1」に設定され、親プロセッサ番号562がプロ
セッサエレメントPE512を示す「0」に設定され、
パイプカウンタ番号563がパイプカウンタp1 を示す
「1」に設定され、カウント値564が「1」に設定さ
れる。
2のタスク生成命令「gen2」がプロセッサエレメン
トPE512上で実行される。このとき、タスク生成命
令「gen2」は、パイプカウンタp1 を指定してい
る。当該タスク生成命令「gen2」が実行されると、
図21に示すタスク管理テーブル560のエントリィ
「1」が選択され、エントリィ「1」の有効ビット56
1が「1」に設定され、親プロセッサ番号562がプロ
セッサエレメントPE512を示す「0」に設定され、
パイプカウンタ番号563がパイプカウンタp1 を示す
「1」に設定され、カウント値564が「1」に設定さ
れる。
【0068】次に、図20に示すメインプログラム57
5のタスク生成命令「gen3」がプロセッサエレメン
トPE515上で実行される。このとき、タスク生成命
令「gen3」は、パイプカウンタp2 を指定してい
る。当該タスク生成命令「gen3」が実行されると、
図21に示すタスク管理テーブル560のエントリィ
「2」が選択され、エントリィ「2」の有効ビット56
1が「1」に設定され、親プロセッサ番号562がプロ
セッサエレメントPE515を示す「3」に設定され、
パイプカウンタ番号563がパイプカウンタp2 を示す
「2」に設定され、カウント値564が「1」に設定さ
れる。
5のタスク生成命令「gen3」がプロセッサエレメン
トPE515上で実行される。このとき、タスク生成命
令「gen3」は、パイプカウンタp2 を指定してい
る。当該タスク生成命令「gen3」が実行されると、
図21に示すタスク管理テーブル560のエントリィ
「2」が選択され、エントリィ「2」の有効ビット56
1が「1」に設定され、親プロセッサ番号562がプロ
セッサエレメントPE515を示す「3」に設定され、
パイプカウンタ番号563がパイプカウンタp2 を示す
「2」に設定され、カウント値564が「1」に設定さ
れる。
【0069】次に、図20に示すメインプログラム57
5のタスク生成命令「gen4」がプロセッサエレメン
トPE515上で実行される。このとき、タスク生成命
令「gen4」は、パイプカウンタp2 を指定してい
る。当該タスク生成命令「gen4」が実行されると、
図21に示すタスク管理テーブル560のエントリィ
「3」が選択され、エントリィ「3」の有効ビット56
1が「1」に設定され、親プロセッサ番号562がプロ
セッサエレメントPE515を示す「3」に設定され、
パイプカウンタ番号563がパイプカウンタp0 を示す
「0」に設定され、カウント値564が「1」に設定さ
れる。
5のタスク生成命令「gen4」がプロセッサエレメン
トPE515上で実行される。このとき、タスク生成命
令「gen4」は、パイプカウンタp2 を指定してい
る。当該タスク生成命令「gen4」が実行されると、
図21に示すタスク管理テーブル560のエントリィ
「3」が選択され、エントリィ「3」の有効ビット56
1が「1」に設定され、親プロセッサ番号562がプロ
セッサエレメントPE515を示す「3」に設定され、
パイプカウンタ番号563がパイプカウンタp0 を示す
「0」に設定され、カウント値564が「1」に設定さ
れる。
【0070】次に、プロセッサエレメントPE513上
で実行されている図20に示すタスク573が終了し、
「end」命令が実行されると、タスク573を呼び出
したプロセッサエレメントPE512の番号と、タスク
生成命令「gen」が指定したパイプカウンタp0 の番
号とを用いて、タスク管理テーブル560のエントリィ
「0」が特定され、エントリィ「0」のカウント値56
4が1だけ減算されて「0」になる。
で実行されている図20に示すタスク573が終了し、
「end」命令が実行されると、タスク573を呼び出
したプロセッサエレメントPE512の番号と、タスク
生成命令「gen」が指定したパイプカウンタp0 の番
号とを用いて、タスク管理テーブル560のエントリィ
「0」が特定され、エントリィ「0」のカウント値56
4が1だけ減算されて「0」になる。
【0071】次に、図20に示すメインプログラム57
5の同期命令「wait」がプロセッサエレメントPE
515上で実行される。このとき、同期命令「wai
t」は、パイプカウンタp0 が「0」であることを同期
待ち解除条件としている。図20に示すメインプログラ
ム575の同期命令「wait」が実行されると、当該
同期命令「wait」に含まれるパイプカウンタp0 の
番号と、プロセッサエレメントPE512の番号とを用
いて、タスク管理テーブル560のエントリィ「0」が
特定され、プロセッサエレメントPE512はエントリ
ィ「0」のカウント値564である「0」が得られる。
このとき、プロセッサエレメントPE512によって、
同期命令「wait」の同期待ち条件が満たされている
と判断され、同期待ちが解除される。
5の同期命令「wait」がプロセッサエレメントPE
515上で実行される。このとき、同期命令「wai
t」は、パイプカウンタp0 が「0」であることを同期
待ち解除条件としている。図20に示すメインプログラ
ム575の同期命令「wait」が実行されると、当該
同期命令「wait」に含まれるパイプカウンタp0 の
番号と、プロセッサエレメントPE512の番号とを用
いて、タスク管理テーブル560のエントリィ「0」が
特定され、プロセッサエレメントPE512はエントリ
ィ「0」のカウント値564である「0」が得られる。
このとき、プロセッサエレメントPE512によって、
同期命令「wait」の同期待ち条件が満たされている
と判断され、同期待ちが解除される。
【0072】以上説明したように、マルチプロセッサシ
ステム551によれば、メインプログラム572と57
5とが異なるプログラマによって作成され、メインプロ
グラム572と575とで同一のパイプカウンタが使用
されている場合でも、パイプカウンタを適切に機能させ
て、メインプログラムとタスクとの間の同期を適切に解
決できる。
ステム551によれば、メインプログラム572と57
5とが異なるプログラマによって作成され、メインプロ
グラム572と575とで同一のパイプカウンタが使用
されている場合でも、パイプカウンタを適切に機能させ
て、メインプログラムとタスクとの間の同期を適切に解
決できる。
【0073】また、マルチプロセッサシステム551に
よれば、メインプログラム572および575を作成す
る際に、各プログラマにパイプカウンタを割り当てない
ことから、プログラマにプログラム記述上の制限が無く
なり、プログラマの負担を軽減できると共に、バグの発
生を効果的に抑制できる。
よれば、メインプログラム572および575を作成す
る際に、各プログラマにパイプカウンタを割り当てない
ことから、プログラマにプログラム記述上の制限が無く
なり、プログラマの負担を軽減できると共に、バグの発
生を効果的に抑制できる。
【0074】また、あるシステムで開発したメインプロ
グラムを、さらに機能拡張したシステムに転用する場合
などにおいて、メインプログラムの上位互換性を保つこ
とが要求されることがある。マルチプロセッサシステム
551によれば、例えば、少ない数のパイプカウンタを
前提として記述されたメインプログラムを、パイプカウ
ンタの数が増えた新しいシステム上で駆動する場合に、
メインプログラムの記述を変更する必要がない。
グラムを、さらに機能拡張したシステムに転用する場合
などにおいて、メインプログラムの上位互換性を保つこ
とが要求されることがある。マルチプロセッサシステム
551によれば、例えば、少ない数のパイプカウンタを
前提として記述されたメインプログラムを、パイプカウ
ンタの数が増えた新しいシステム上で駆動する場合に、
メインプログラムの記述を変更する必要がない。
【0075】また、マルチプロセッサシステム551に
よれば、同期待ち命令である「wait」命令に引数を
記述することにより、メインプログラムと、当該メイン
プログラムが生成した子タスクとの間の同期条件を柔軟
に設定できる。
よれば、同期待ち命令である「wait」命令に引数を
記述することにより、メインプログラムと、当該メイン
プログラムが生成した子タスクとの間の同期条件を柔軟
に設定できる。
【0076】本発明は上述した実施形態には限定されな
い。上述した第3実施形態では、図18に示すように、
6個のプロセッサエレメントPEを設けた場合を例示し
たが、プロセッサエレメントPEの数は任意である。
い。上述した第3実施形態では、図18に示すように、
6個のプロセッサエレメントPEを設けた場合を例示し
たが、プロセッサエレメントPEの数は任意である。
【0077】上述した第3実施形態では、図18に示す
アービタ556にタスク同期機能を持たせた場合を例示
したが、タスク同期機能をその他の構成要素に持たせて
もよい。
アービタ556にタスク同期機能を持たせた場合を例示
したが、タスク同期機能をその他の構成要素に持たせて
もよい。
【0078】また、上述した第3実施形態では、タスク
管理テーブル560の親プロセッサ番号562およびパ
イプカウンタ番号563としてエンコードした値を用い
た場合を例示したが、親プロセッサ番号562のフィー
ルドに例えばプロセッサエレメントPE512〜517
の個数に相当する6ビットを割り当て、各ビットがそれ
ぞれプロセッサエレメントPE512〜517を示すよ
うにしてもよい。また、パイプカウンタ番号563のフ
ィールドに、例えばシステムが提供するパイプカウンタ
の数に相当するビット数を割り当て、各ビットがそれぞ
れ特定のパイプカウンタを示すようにしてもよい。この
ようにすることで、タスク管理テーブル560へのアク
セスに伴うエンコードおよびデコードを不要とし、高速
性が実現できる。
管理テーブル560の親プロセッサ番号562およびパ
イプカウンタ番号563としてエンコードした値を用い
た場合を例示したが、親プロセッサ番号562のフィー
ルドに例えばプロセッサエレメントPE512〜517
の個数に相当する6ビットを割り当て、各ビットがそれ
ぞれプロセッサエレメントPE512〜517を示すよ
うにしてもよい。また、パイプカウンタ番号563のフ
ィールドに、例えばシステムが提供するパイプカウンタ
の数に相当するビット数を割り当て、各ビットがそれぞ
れ特定のパイプカウンタを示すようにしてもよい。この
ようにすることで、タスク管理テーブル560へのアク
セスに伴うエンコードおよびデコードを不要とし、高速
性が実現できる。
【0079】また、本発明は、例えば、図22に示すよ
うに、コンピュータ102,103,104,105を
ネットワーク101を介して接続して分散処理を行う並
列分散処理システムにも適用できる。この場合に、例え
ば、コンピュータ102がメインプログラムを実行する
場合には、コンピュータ102内にアービタ106が設
けられる。アービタ106の機能は、前述した図18に
示すアービタ556と同じである。
うに、コンピュータ102,103,104,105を
ネットワーク101を介して接続して分散処理を行う並
列分散処理システムにも適用できる。この場合に、例え
ば、コンピュータ102がメインプログラムを実行する
場合には、コンピュータ102内にアービタ106が設
けられる。アービタ106の機能は、前述した図18に
示すアービタ556と同じである。
【0080】
【発明の効果】以上説明したように、本発明の並列演算
処理装置によれば、第1の演算処理手段が複数のタスク
を呼び出した場合の同期待ちを高速かつ柔軟に解決でき
る。また、本発明の並列演算処理装置によれば、第1の
演算処理手段で実行されるプログラムを作成する際のプ
ログラの負担を軽減でき、ミスの少ない高品質なプログ
ラムの作成を可能にする。また、本発明の並列演算処理
方法によれば、第1の演算処理が複数のタスクを呼び出
した場合の同期待ちを高速かつ柔軟に解決できる。ま
た、本発明の並列演算処理方法によれば、第1の演算処
理のプログラムを作成する際のプログラの負担を軽減で
き、ミスの少ない高品質なプログラムの作成を可能にす
る。
処理装置によれば、第1の演算処理手段が複数のタスク
を呼び出した場合の同期待ちを高速かつ柔軟に解決でき
る。また、本発明の並列演算処理装置によれば、第1の
演算処理手段で実行されるプログラムを作成する際のプ
ログラの負担を軽減でき、ミスの少ない高品質なプログ
ラムの作成を可能にする。また、本発明の並列演算処理
方法によれば、第1の演算処理が複数のタスクを呼び出
した場合の同期待ちを高速かつ柔軟に解決できる。ま
た、本発明の並列演算処理方法によれば、第1の演算処
理のプログラムを作成する際のプログラの負担を軽減で
き、ミスの少ない高品質なプログラムの作成を可能にす
る。
【図1】図1は、本発明の第1実施形態のマルチプロセ
ッサシステムの構成図である。
ッサシステムの構成図である。
【図2】図2は、図1に示すマルチプロセッサシステム
において一つの子タスクを生成する場合のプロセッサエ
レメントPE上で動作するプログラムを説明するための
図である。
において一つの子タスクを生成する場合のプロセッサエ
レメントPE上で動作するプログラムを説明するための
図である。
【図3】図3は、図2に示す場合におけるタスク発生お
よび同期待ち解除のタイミングを説明するための図であ
る。
よび同期待ち解除のタイミングを説明するための図であ
る。
【図4】図4は、図1に示すマルチプロセッサシステム
において複数のタスクを生成し、全てのタスクの終了を
同期待ちの条件とした場合の各プロセッサエレメントP
E上で動作するプログラムを説明するための図である。
において複数のタスクを生成し、全てのタスクの終了を
同期待ちの条件とした場合の各プロセッサエレメントP
E上で動作するプログラムを説明するための図である。
【図5】図5は、図4に示す場合におけるタスク発生お
よび同期待ち解除のタイミングを説明するための図であ
る。
よび同期待ち解除のタイミングを説明するための図であ
る。
【図6】図6は、図1に示すマルチプロセッサシステム
において複数のタスクを生成し、2つのタスクの終了を
同期待ちの条件とした場合の各プロセッサエレメントP
E上で動作するプログラムを説明するための図である。
において複数のタスクを生成し、2つのタスクの終了を
同期待ちの条件とした場合の各プロセッサエレメントP
E上で動作するプログラムを説明するための図である。
【図7】図7は、図6に示す場合におけるタスク発生お
よび同期待ち解除のタイミングを説明するための図であ
る。
よび同期待ち解除のタイミングを説明するための図であ
る。
【図8】図8は、本発明の第2実施形態のマルチプロセ
ッサシステムの構成図である。
ッサシステムの構成図である。
【図9】図9は、図8に示すアービタの構成図である。
【図10】図10は、図9に示すパイプカウンタの機能
を説明するための図である。
を説明するための図である。
【図11】図11は、図8に示すマルチプロセッサシス
テムにおけるプロセッサエレメントPE上で動作するメ
インプログラムおよびタスクを説明するための図であ
る。
テムにおけるプロセッサエレメントPE上で動作するメ
インプログラムおよびタスクを説明するための図であ
る。
【図12】図12は、図11に示す場合におけるタスク
発生および同期待ち解除のタイミングを説明するための
図である。
発生および同期待ち解除のタイミングを説明するための
図である。
【図13】図13は、図8に示すマルチプロセッサシス
テムにおけるプロセッサエレメントPE上で動作するメ
インプログラムおよびタスクのその他の例を説明するた
めの図である。
テムにおけるプロセッサエレメントPE上で動作するメ
インプログラムおよびタスクのその他の例を説明するた
めの図である。
【図14】図14は、単数のメインプログラムから複数
のパイプカウンタを用いて複数の子タスクを呼び出す場
合を説明するための図である。
のパイプカウンタを用いて複数の子タスクを呼び出す場
合を説明するための図である。
【図15】図15は、複数のメインプログラムにおい
て、パイプカウンタを重複して使用しながら子タスクを
呼び出す場合を説明するための図である。
て、パイプカウンタを重複して使用しながら子タスクを
呼び出す場合を説明するための図である。
【図16】図16は、図8に示すアービタにおけるパイ
プカウンタのカウント値の記憶状態を説明するための図
である。
プカウンタのカウント値の記憶状態を説明するための図
である。
【図17】図17は、複数のメインプログラムにおい
て、パイプカウンタを重複して使用しながら子タスクを
呼び出すその他の場合を説明するための図である。
て、パイプカウンタを重複して使用しながら子タスクを
呼び出すその他の場合を説明するための図である。
【図18】図18は、本発明の第3実施形態のマルチプ
ロセッサシステムの構成図である。
ロセッサシステムの構成図である。
【図19】図19は、図18に示すアービタに備えられ
たタスク管理テーブルを説明するための図である。
たタスク管理テーブルを説明するための図である。
【図20】図20は、図18に示すマルチプロセッサシ
ステムの動作を説明するための図である。
ステムの動作を説明するための図である。
【図21】図21は、図19に示すタスク管理テーブル
の使用例を説明するための図である。
の使用例を説明するための図である。
【図22】図21は、本発明を適用した並列分散処理シ
ステムの構成図である。
ステムの構成図である。
【図23】図23は、一般的なマルチプロセッサシステ
ムの全体構成図である。
ムの全体構成図である。
【図24】図24は、タスクを生成するプログラムが同
期待ちを行う手法を説明するための図である。
期待ちを行う手法を説明するための図である。
1,51,551…マルチプロセッサシステム、11…
共通バス、16,56,156,556…アービタ、1
7…共有メモリ、19…メインバス、12〜15…プロ
セッサエレメントPE、18…外部端子、p0 〜pm-1
…パイプカウンタ、100…並列分散処理システム、1
02〜105…コンピュータ、560…タスク管理テー
ブル
共通バス、16,56,156,556…アービタ、1
7…共有メモリ、19…メインバス、12〜15…プロ
セッサエレメントPE、18…外部端子、p0 〜pm-1
…パイプカウンタ、100…並列分散処理システム、1
02〜105…コンピュータ、560…タスク管理テー
ブル
Claims (17)
- 【請求項1】カウント手段を特定するカウント手段特定
データをそれぞれ含む単数または複数のタスク呼び出し
命令を実行した後に、カウント手段特定データと同期解
除条件を満たすカウント値とを含む同期待ち命令で必要
に応じて同期待ちを行う単数または複数の第1の演算処
理手段と、 前記第1の演算処理手段から呼び出されたタスクを実行
し、当該呼び出されたタスクが終了したときにタスク終
了命令を実行する単数または複数の第2の演算処理手段
と、 前記カウント手段の識別子と前記第1の演算手段の識別
子とで特定されるエントリィにカウント値を記憶する同
期管理手段とを有し、 前記第1の演算処理手段による前記タスク呼び出し命令
の実行に応じて、当該タスク呼び出し命令に含まれるカ
ウント手段特定データが示す前記カウント手段の識別子
と、当該タスク呼び出し命令を実行した第1の演算処理
手段の識別子とから前記同期管理手段のエントリィを特
定し、当該特定したエントリィのカウント値を増加し、
前記第2の演算処理手段の前記タスク終了命令の実行に
応じて、その終了したタスクを呼び出したタスク呼び出
し命令のカウント手段特定データが示す前記カウント手
段の識別子と、当該タスク呼び出し命令を実行した第1
の演算処理手段の識別子とから、前記同期管理手段のエ
ントリィを特定し、当該特定したエントリィのカウント
値を減少し、 前記第1の演算処理手段は、前記同期待ち命令に含まれ
るカウント値と、当該同期待ち命令に含まれるカウント
手段特定データが示す前記カウント手段の識別子と当該
同期待ち命令を実行した第1の演算処理手段の識別子と
から特定した前記同期管理手段のエントリィのカウント
値とを比較し、当該比較の結果に応じて同期待ちを解除
するか否かを決定する並列演算処理装置。 - 【請求項2】前記第1の演算処理手段は、前記同期待ち
命令に含まれるカウント値と、当該同期待ち命令に含ま
れるカウント手段特定データが示す前記カウント手段の
識別子と当該同期待ち命令を実行した第1の演算処理手
段の識別子とから特定した前記同期管理手段のエントリ
ィのカウント値とが一致したときに、同期待ちを解除す
る請求項1に記載の並列演算処理装置。 - 【請求項3】前記同期待ち命令に含まれるカウント値
は、当該同期待ち命令と同じカウント手段特定データを
含むタスク呼び出し命令によって呼び出されたタスクの
数に比べて小さい請求項2に記載の並列演算処理装置。 - 【請求項4】前記単数または複数の第1の演算処理手段
における処理および前記単数または複数の第2の演算処
理手段における処理とは相互に独立して行われる請求項
1に記載の並列演算処理装置。 - 【請求項5】前記同期待ち命令は、カウント手段特定デ
ータと同期解除条件を満たすカウント値とを引数として
持つ請求項1に記載の並列演算処理装置。 - 【請求項6】前記同期管理手段の各エントリィには、当
該エントリィのカウント値が有効であるか否かを示す有
効ビットが設けられている請求項1に記載の並列演算処
理装置。 - 【請求項7】前記同期管理手段は、前記カウント手段の
識別子として、前記タスク呼び出し命令のカウント手段
特定データによって特定可能なカウント手段の数に相当
するビット数を有し、各ビットが所定のカウント手段に
対応したデータを保持し、前記第1の演算処理手段の識
別子として、前記第1の演算処理手段の数に相当するビ
ット数を有し、各ビットが所定の第1の演算処理手段に
対応したデータを保持する請求項1に記載の並列演算処
理装置。 - 【請求項8】前記同期管理手段は、前記カウント手段の
識別子として、前記タスク呼び出し命令のカウント手段
特定データによって特定可能なカウント手段の数に相当
するビット数を有すると共に各ビットが所定のカウント
手段に対応したデータをエンコードしたデータを保持
し、前記第1の演算処理手段の識別子として、前記第1
の演算処理手段の数に相当するビット数を有すると共に
各ビットが所定の第1の演算処理手段に対応したデータ
をエコードしたデータを保持する請求項1に記載の並列
演算処理装置。 - 【請求項9】前記第1の演算処理手段および前記単数ま
たは複数の第2の演算処理手段は、共通のバスを介して
接続されている請求項1に記載の並列演算処理装置。 - 【請求項10】単数または複数の第1の演算処理手段に
おいて、複数のカウント手段のうち一のカウント手段を
特定するカウント手段特定データをそれぞれ含む単数ま
たは複数のタスク呼び出し命令を実行し、カウント手段
特定データと同期解除条件を満たすカウント値とを含む
同期待ち命令で必要に応じて同期待ちを行い、 単数または複数の第2の演算処理手段において、前記第
1の演算処理から呼び出されたタスクを実行し、当該呼
び出されたタスクが終了したときにタスク終了命令を実
行し、 前記第1の演算処理手段による前記タスク呼び出し命令
の実行に応じて、当該タスク呼び出し命令に含まれるカ
ウント手段特定データが示す前記カウント手段の識別子
と、当該タスク呼び出し命令を実行した第1の演算処理
手段の識別子とから同期管理テーブルのエントリィを特
定し、当該特定したエントリィのカウント値を増加し、
前記第2の演算処理手段の前記タスク終了命令の実行に
応じて、その終了したタスクを呼び出したタスク呼び出
し命令のカウント手段特定データが示す前記カウント手
段の識別子と、当該タスク呼び出し命令を実行した第1
の演算処理手段の識別子とから、前記同期管理テーブル
のエントリィを特定し、当該特定したエントリィのカウ
ント値を減少し、 前記同期待ち命令に含まれるカウント値と、当該同期待
ち命令に含まれるカウント手段特定データが示す前記カ
ウント手段の識別子と当該同期待ち命令を実行した第1
の演算処理手段の識別子とから特定した前記同期管理テ
ーブルのエントリィのカウント値との比較結果に応じ
て、前記第1の演算処理手段が同期待ちを解除するか否
かを決定する並列演算処理方法。 - 【請求項11】前記同期待ち命令に含まれるカウント値
と、当該同期待ち命令に含まれるカウント手段特定デー
タが示す前記カウント手段の識別子と当該同期待ち命令
を実行した第1の演算処理手段の識別子とから特定した
前記同期管理テーブルのエントリィのカウント値とが一
致したときに、前記第1の演算処理手段が同期待ちを解
除する請求項10に記載の並列演算処理方法。 - 【請求項12】前記同期待ち命令に含まれるカウント値
は、当該同期待ち命令と同じカウント手段特定データを
含むタスク呼び出し命令によって呼び出されたタスクの
数に比べて小さい請求項11に記載の並列演算処理方
法。 - 【請求項13】前記単数または複数の第1の演算処理手
段における処理および前記単数または複数の第2の演算
処理手段における処理とは相互に独立して行われる請求
項10に記載の並列演算処理方法。 - 【請求項14】前記同期待ち命令は、カウント手段特定
データと同期解除条件を満たすカウント値とを引数とし
て持つ請求項10に記載の並列演算処理方法。 - 【請求項15】前記同期管理テーブルの各エントリィに
は、当該エントリィのカウント値が有効であるか否かを
示す有効ビットが設けられている請求項10に記載の並
列演算処理方法。 - 【請求項16】前記同期管理テーブルは、前記カウント
手段の識別子として、前記タスク呼び出し命令のカウン
ト手段特定データによって特定可能なカウント手段の数
に相当するビット数を有し、各ビットが所定のカウント
手段に対応したデータを保持し、前記第1の演算処理手
段の識別子として、前記第1の演算処理手段の数に相当
するビット数を有し、各ビットが所定の第1の演算処理
手段に対応したデータを保持する請求項10に記載の並
列演算処理方法。 - 【請求項17】前記同期管理テーブルは、前記カウント
手段の識別子として、前記タスク呼び出し命令のカウン
ト手段特定データによって特定可能なカウント手段の数
に相当するビット数を有すると共に各ビットが所定のカ
ウント手段に対応したデータをエンコードしたデータを
保持し、前記第1の演算処理手段の識別子として、前記
第1の演算処理手段の数に相当するビット数を有すると
共に各ビットが所定の第1の演算処理手段に対応したデ
ータをエコードしたデータを保持する請求項10に記載
の並列演算処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10106755A JPH11306149A (ja) | 1998-04-16 | 1998-04-16 | 並列演算処理装置およびその方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10106755A JPH11306149A (ja) | 1998-04-16 | 1998-04-16 | 並列演算処理装置およびその方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH11306149A true JPH11306149A (ja) | 1999-11-05 |
Family
ID=14441739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10106755A Pending JPH11306149A (ja) | 1998-04-16 | 1998-04-16 | 並列演算処理装置およびその方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH11306149A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100853457B1 (ko) | 2006-12-04 | 2008-08-21 | 한국전자통신연구원 | 고속의 대량 데이터를 수신하기 위한 데이터 수신 모듈의처리 방법 |
JP2009059310A (ja) * | 2007-09-03 | 2009-03-19 | Panasonic Corp | プログラム制御装置 |
JP2009075948A (ja) * | 2007-09-21 | 2009-04-09 | Mitsubishi Electric Corp | マルチコアプロセッサ |
CN101625637A (zh) * | 2008-07-08 | 2010-01-13 | 索尼株式会社 | 处理器 |
JP2018521427A (ja) * | 2015-07-30 | 2018-08-02 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 可変レーンアーキテクチャのためのシステムおよび方法 |
-
1998
- 1998-04-16 JP JP10106755A patent/JPH11306149A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100853457B1 (ko) | 2006-12-04 | 2008-08-21 | 한국전자통신연구원 | 고속의 대량 데이터를 수신하기 위한 데이터 수신 모듈의처리 방법 |
JP2009059310A (ja) * | 2007-09-03 | 2009-03-19 | Panasonic Corp | プログラム制御装置 |
US8413163B2 (en) | 2007-09-03 | 2013-04-02 | Panasonic Corporation | Program control device including per-timeslot switching of thread execution |
JP2009075948A (ja) * | 2007-09-21 | 2009-04-09 | Mitsubishi Electric Corp | マルチコアプロセッサ |
CN101625637A (zh) * | 2008-07-08 | 2010-01-13 | 索尼株式会社 | 处理器 |
JP2010020363A (ja) * | 2008-07-08 | 2010-01-28 | Sony Corp | 演算処理装置 |
US8245015B2 (en) | 2008-07-08 | 2012-08-14 | Sony Corporation | Processor monitoring execution of a synchronization instruction issued to execution sections to detect completion of execution of preceding instructions in an identified thread |
JP2018521427A (ja) * | 2015-07-30 | 2018-08-02 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 可変レーンアーキテクチャのためのシステムおよび方法 |
US10691463B2 (en) | 2015-07-30 | 2020-06-23 | Futurewei Technologies, Inc. | System and method for variable lane architecture |
US10884756B2 (en) | 2015-07-30 | 2021-01-05 | Futurewei Technologies, Inc. | System and method for variable lane architecture |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6718294B1 (en) | System and method for synchronized control of system simulators with multiple processor cores | |
US7984448B2 (en) | Mechanism to support generic collective communication across a variety of programming models | |
US5056000A (en) | Synchronized parallel processing with shared memory | |
JP2882475B2 (ja) | スレッド実行方法 | |
TWI407373B (zh) | 用於管理多核心架構之資源的方法和設備 | |
WO2001046804A1 (en) | System of reusable software parts for implementing concurrency and hardware access, and methods of use | |
JP2005284749A (ja) | 並列処理コンピュータ | |
JPH03230225A (ja) | プロセス分散方法 | |
WO2020186836A1 (zh) | 任务调度 | |
JP2007219816A (ja) | マルチプロセッサシステム | |
CN113946445A (zh) | 一种基于asic的多线程模块及多线程控制方法 | |
US6581089B1 (en) | Parallel processing apparatus and method of the same | |
JPH11306149A (ja) | 並列演算処理装置およびその方法 | |
JPS6334490B2 (ja) | ||
JP3644042B2 (ja) | マルチタスク処理装置 | |
JPH11306038A (ja) | 並列演算処理装置およびその方法 | |
JPH11306037A (ja) | 並列演算処理装置およびその方法 | |
Socci et al. | A timed-automata based middleware for time-critical multicore applications | |
US10261817B2 (en) | System on a chip and method for a controller supported virtual machine monitor | |
WO2021036421A1 (zh) | 多核架构的同步信号产生电路、芯片和同步方法及装置 | |
JP3006676B2 (ja) | マルチプロセッサ | |
CN108958904B (zh) | 嵌入式多核中央处理器的轻量级操作系统的驱动程序框架 | |
US7320044B1 (en) | System, method, and computer program product for interrupt scheduling in processing communication | |
JP2780623B2 (ja) | 情報処理装置 | |
JP2001022720A (ja) | マルチプロセッサシステム |