JPH11306038A - 並列演算処理装置およびその方法 - Google Patents

並列演算処理装置およびその方法

Info

Publication number
JPH11306038A
JPH11306038A JP10675698A JP10675698A JPH11306038A JP H11306038 A JPH11306038 A JP H11306038A JP 10675698 A JP10675698 A JP 10675698A JP 10675698 A JP10675698 A JP 10675698A JP H11306038 A JPH11306038 A JP H11306038A
Authority
JP
Japan
Prior art keywords
task
synchronization
instruction
count value
arithmetic processing
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
Application number
JP10675698A
Other languages
English (en)
Inventor
Yoshihiko Imamura
義彦 今村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP10675698A priority Critical patent/JPH11306038A/ja
Priority to US09/292,331 priority patent/US6581089B1/en
Publication of JPH11306038A publication Critical patent/JPH11306038A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 複数のタスクを発生した場合の同期待ちを高
速かつ柔軟に解決できる並列演算処理装置を提供する。 【解決手段】 プロセッサエレメントPE12がPE1
3〜15に対して複数のタスクを呼び出し、同期待ち命
令で必要に応じて同期待ちを行う。アービタ56は、タ
スク呼び出しが発生するとカウント値を増加し、そのタ
スクが終了するとカウント値を減少させる。プロセッサ
エレメントPE12は、同期待ち命令を実行したとき
に、同期待ち命令に含まれるカウント値と、アービタ5
6のカウント値とを比較し、一致した場合に同期待ちを
解除し、一致しない場合に同期待ちとなる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のタスクを発
生した場合の同期待ちを高速かつ柔軟に解決できる並列
演算処理装置およびその方法に関する。
【0002】
【従来の技術】例えば、複数のプロセッサエレメント
(Processor Element:PE)が独立したプログラムカウ
ンタを持ち、共通バスを介して相互に通信を行いながら
処理を実行するMIMD(Multiple Instruction Multip
le Datastream)型のマルチプロセッサシステムが知られ
ている。このようなマルチプロセッサシステムは、コン
カレント(並行)マルチタスクを行うことを前提として
おり、タスクを生成しようとしているメインプログラム
を実行しているプロセッサエレメントと、新たなタスク
が生成されるプロセッサエレメントとの間で通信を行
う。このとき、タスクを呼んだ(生成した)プログラム
が、呼ばれた(生成された)タスクが終了するまで同期
待ちを行う場合がある。
【0003】図9は、一般的なマルチプロセッサシステ
ム1の全体構成図である。図9に示すように、マルチプ
ロセッサシステム1は、4つのプロセッサエレメントP
E12,PE13,PE14,PE15と、タスクの同
期を管理するアービタ16とが共通バス11を介して接
続されている。共通バス11は、プロセッサエレメント
PE12〜15の相互間でコマンドなどの制御信号を送
受信するための制御線として機能する。
【0004】また、マルチプロセッサシステム1では、
プロセッサエレメントPE12,PE13,PE14,
PE15と共有メモリ17とがメインバス19を介して
接続されている。共有メモリ17は、外部端子18を介
して、外部メモリ(メインメモリ)に接続されている。
なお、マルチタスクの同期を実現するマルチプロセッサ
システムの構成としては、図9に示す構成以外にも種々
のものがある。例えば、図9に示す例では、アービタ1
6でタスクの同期が集中管理される場合を示したが、例
えば、アービタ16を設けずに、個々のプロセッサエレ
メントPE12〜15にタスクの同期を管理する機能を
持たせてもよい。
【0005】図10は、タスクを生成するプログラム
(メインプログラム25)が同期待ちを行う手法を説明
するための図である。図10に示す例では、プロセッサ
エレメントPE12上で動作するメインプログラム25
が、プロセッサエレメントPE13上にタスク26を生
成している。プロセッサエレメントPE12および13
は、個々のプロセッサ固有のマシン語(機械語)で記述
された命令を実行して動作する。なお、タスクの生成な
らびに同期の解決は、ハードウエアによる順序回路を用
いても可能である。なお、本明細書では、命令によって
同期機能の実現する場合を主に説明する。
【0006】
【発明が解決しようとする課題】ところで、従来のマル
チプロセッサシステムでは、以下に示す理由により、図
10に示すメインプログラム25から複数のタスクを任
意の数だけ生成することが困難であった。すなわち、マ
ルチプロセッサシステムは、コンカレントマルチタスク
を実行するが、このマルチタスク方式では、複数のプロ
グラム(タスク)を複数のプロセッサエレメントPEに
割り当てる必要がある。ここで、シングルプロセッサを
前提としたマルチタスクでは、TSS(Time Sharing S
ystem )方式のように、一つのプロセッサエレメントP
Eに対して時分割で複数のタスクを割り当てることが最
も一般的である。従って、一つのプロセッサエレメント
PEを中心としてタスク管理テーブルを一組だけ用意す
ればよい。このTSS方式を採用する多くの場合、それ
らタスクの切り替え機構を持つUnix(商標名)など
のOS(Operating System)を用いることになる。
【0007】通常、プロセッサエレメントPEは、マル
チタスクを特に意識した同期命令を用意していないこと
が多い。同期命令を用いるよりも、タイマなどの外部割
り込みイベントを通じて例外処理を発生させ、その結
果、タスクの切り替えを行う方式を採用することが多
い。また、タスクの切り替えをより高速に実行するため
に、プロセッサエレメントPE内でハードウエアによる
サポートを行っていることが多いが、基本的にはソフト
ウエアによってタスク切り替え機能が実現される。
【0008】これに対して、マルチプロセッサシステム
では、前述したTSS方式を採用する場合、複数のタス
ク管理テーブルを用意することが必要になる。また、そ
れら複数のタスク管理テーブルを総合的に管理するプロ
グラムを、個々のプロセッサエレメントPEを管理する
プログラムの一階層上に用意する必要があり、かなり複
雑なOSになる。そのため、従来のマルチプロセッサシ
ステムでは、図10に示すメインプログラム25から複
数のタスクを任意の数だけ生成することが困難であっ
た。なお、マルチプロセッサシステムに実装するOS
は、通常、そのマルチプロセッサシステムを使うサイド
(ユーザ)が決定する。
【0009】ところで、マルチタスクの実現方法は、T
SS方式の他にも存在する。例えば、特定のプロセッサ
エレメントPEをコプロセッサとして用いるなどのやや
特殊用途への応用が考えられる。その他にも、特定のプ
ロセッサエレメントPEをコプロセッサとして固定しな
いまでも、コプロセッサで実行するプログラムを常駐さ
せることも、ある分野では非常に有効である。いずれに
しても、マルチプロセッサシステムには、タスクの同期
機構が必要である。
【0010】研究試作段階のマルチプロセッサシステム
では、一般的に、個々のプロセッサエレメントPE毎に
シングルプロセッサと同じOSを搭載している。そし
て、これらプロセッサエレメントPE間の通信を行うこ
とにより、全体としてマルチタスクを達成していること
が多い。この場合、プロセッサエレメントPE相互の通
信の機能の一部に同期機構が用いられる。あるいは、セ
マフォアなどのメモリを介した同期機構も採用可能であ
る。
【0011】しかしながら、タスクの生成とそのタスク
の同期待ちに関しては、いずれの場合にも最終的にはソ
フトウエアによる処理を行っているのでレスポンスが悪
く、せいぜい粗粒度並列プログラムを実行する場合に応
用されるのが現状である。また、仮に、複数のタスクを
生成することが十分可能なシステムであっても、それら
のタスクの終了を待つ(同期待ち)方式に決定的な解決
手段がない。
【0012】メインプログラムから生成された複数のタ
スクのうちどのタスクを待つかなどの条件設定は、ソフ
トウエアによるプログラム記述によれば全ての組み合わ
せが可能であるが、それらの条件判定に費やす時間のオ
ーバーヘッドもかなり大きくなり、高速に同期をとるこ
とができない。一方、このような設定条件を、ハードウ
エアによって決定するものがある。例えば、米国のイン
テル社が開発したマイクロプロセッサ8086とそのプ
ロセッサ専用に設計されたコプロセッサ8087との間
では、ハンドシェークによる同期待ちシステムが確立さ
れている。プロセッサ8086上のメインプログラムの
数値演算用の命令を実行すると、自動的にコプロセッサ
8087はその命令を解釈して演算を始める。通常、数
値演算の実行には複数のクロックサイクルが必要とされ
ていた。従って、その間、プロセッサ8086では当該
命令の次の命令を順次実行する。
【0013】メインプログラムには、タスクの発生命令
から適当な命令数を経た後に同期命令が記述される。そ
して、その同期命令が実行される前に当該数値演算が終
了していれば、プロセッサ8086は数値演算が同期さ
れているものとみなしそのまま命令実行を進める。ま
た、その同期命令が実行される前に当該数値演算が終了
していなければ、コプロセッサ8087の演算が終了す
るまで同期待ちをする。この同期待ちシステムは、簡単
なプロトコルによるハンドシェーク信号を用いており、
きわめて簡単な構成で高速に同期をとることができる。
しかしながら、複数のコプロセッサ8087をひとつの
プロセッサ8086に接続することができず、複数のタ
スクを生成した場合の同期待ちを解決できないという問
題がある。
【0014】本発明は上述した従来技術に鑑みてなさ
れ、複数のタスクを発生した場合の同期待ちを高速かつ
柔軟に解決できる並列演算処理装置およびその方法を提
供することを目的とする。
【0015】
【課題を解決するための手段】本発明は、前述した従来
の同期待ち機構に改良を加えて、マルチタスクシステム
の全体的な性能を向上させるものである。先に記述した
マルチプロセッサシステムにおける同期機構において、
メインプログラムから生成されたタスク(以下、子タス
クとも記す)の終了を認識する際に要する時間が長いと
いう問題があったが、これは、従来のマルチプロセッサ
システムが汎用性を重視するあまり、ソフトウエアによ
る解決方法を選択したことに原因がある。
【0016】本発明は、タスクの生成とその同期に伴う
汎用性をある程度制限している。タスクの生成はほぼ自
由に任意の数分を許すものとし、それら子タスクの稼動
状況/終了を自動的に数値(カウント値)に換算する。
メインプログラムでは、同期命令の実行条件(成立条
件)にその数値を含める。そして、子タスクの数値化さ
れた稼動状況と同期命令を組み合わせて用いる。これ
は、複数のタスクの生成を可能とする。また、同期命令
は、子タスクの終了をハードウエアによって認識させる
方法を採用し、レスポンスの高速化を図る。
【0017】ここで、本発明を実現する手段として、子
タスクを生成する毎にメインプログラムを実行している
プロセッサエレメントは、生成した子タスクの数を記憶
しておくことを提案する。これは、単にレジスタと加減
算器とを組み合わせてもよいし、カウンタを用意するだ
けでもよい。カウンタを例にとると、初期値として0を
セットしておき、子タスクを生成する毎に1だけインク
リメント(増加)させていく。そして、子タスクが終了
すると、しかるべき手続きを経てメインプログラムを実
行しているプロセッサエレメントPEにその旨を通知し
て、先のカウント値を1だけ減ずる。
【0018】メインプログラムのなかの同期命令を実行
するプロセッサエレメントは、同期命令の実行時に前述
したカウント値とその同期命令に付加された引数の値と
を比較する。比較の結果、カウント値のほうが小さいか
あるいは同じ値であれば同期条件が成立したものとみな
し、メインプログラムはその同期命令以降の命令実行に
進む。もし、そうでなければ(カウント値のほうが大き
ければ)、同期条件を満たすまで同期待ちする。
【0019】同期命令実行後は、次に子タスクの生成に
備えて0に初期化をすることにしてもよい。また、そう
しなくてもよい。これはそのシステムを使用する利用者
の課題である。また、カウンタを設ける位置は特に限定
されない。例えば、メインプログラムを実行するプロセ
ッサエレメント内に存在させるか、あるいは、アービタ
モジュール内に存在させてもよい。
【0020】従来の同期機構では、仮に複数の子タスク
を生成したときには、ソフトウエアによりすべての詳細
な同期条件を記述するか、あるいは、ハードウエアによ
りすべての子タスクの終了を待つかの方法を採用してい
た。これに対して、本発明は、子タスクの終了をハード
ウエアによって認識させるわけであるが、同期待ち命令
に伴う同期条件に制限を付加して、単に同期させるべき
子タスクの数のみを設定する。これにより、同期機構に
ある程度の柔軟性を持たせながら論理回路の規模削減を
図ることができる。
【0021】すなわち、本発明の並列演算処理装置は、
単数または複数のタスク呼び出し命令を実行した後に、
同期待ち命令で必要に応じて同期待ちを行う第1の演算
処理手段と、前記第1の演算処理手段から呼び出された
タスクを実行し、当該呼び出されたタスクが終了したと
きにタスク終了命令を実行する単数または複数の第2の
演算処理手段と、前記第1の演算処理手段による前記タ
スク呼び出し命令の実行に応じてカウント値を増加し、
前記第2の演算処理手段の前記タスク終了命令の実行に
応じてカウント値を減少するカウント手段とを有し、前
記第1の演算処理手段は、前記同期待ち命令に含まれる
カウント値と、前記カウント手段のカウント値とを比較
し、当該比較の結果に応じて同期待ちを解除するか否か
を決定する。
【0022】また、本発明の並列演算処理装置は、好ま
しくは、前記第1の演算処理手段は、前記同期待ち命令
に含まれるカウント値と、前記カウント手段のカウント
値とが一致したときに、同期待ちを解除する。
【0023】また、本発明の並列演算処理装置は、好ま
しくは、前記同期待ち命令に含まれるカウント値は、前
記第1の演算処理手段から呼び出されているタスクの数
に比べて小さい。
【0024】さらに、本発明の並列演算処理方法は、第
1の演算処理において、単数または複数のタスク呼び出
し命令を実行し、単数または複数の第2の演算処理にお
いて、前記第1の演算処理から呼び出されたタスクを実
行し、当該呼び出されたタスクが終了したときにタスク
終了命令を実行し、前記第1の演算処理による前記タス
ク呼び出し命令の実行に応じて第1のカウント値を増加
し、前記第2の演算処理の前記タスク終了命令の実行に
応じて前記第1のカウント値を減少し、前記第1の演算
処理において、同期待ち命令が実行されたときに、前記
同期待ち命令に含まれる第2のカウント値と、前記第1
のカウント値とを比較し、当該比較の結果に応じて同期
待ちを解除するか否かを決定する。
【0025】
【発明の実施の形態】以下、本発明の実施形態に係わる
マルチプロセッサシステムを説明する。図1は、本実施
形態のマルチプロセッサシステム51の構成図である。
図1に示すように、マルチプロセッサシステム51は、
4つのプロセッサエレメントPE12,PE13,PE
14,PE15と、タスクの同期を管理するアービタ5
6とが共通バス11を介して接続されている。また、マ
ルチプロセッサシステム51では、プロセッサエレメン
トPE12,PE13,PE14,PE15と共有メモ
リ17とがメインバス19を介して接続されている。共
有メモリ17は、外部端子18を介して、外部メモリ
(メインメモリ)に接続されている。
【0026】図1において、図9と同じ符号を付したプ
ロセッサエレメントPE12,PE13,PE14,P
E15、共通バス11、メインバス19、共有メモリ1
7および外部端子18は、前述した図9に示す構成要素
と同じである。すなわち、マルチプロセッサシステム5
1は、アービタ56におけるタスク同期の管理方法に特
徴を有する。アービタ56は、カウンタを備え、例え
ば、プロセッサエレメントPE12が子タスクの生成を
伴う命令を実行したときに、カウンタのカウント値を1
だけ増加し、子タスクが終了したときにカウントのカウ
ント値を1だけ減少させる。
【0027】マルチプロセッサシステム51は、プロセ
ッサエレメントPE12〜15が、他のプロセッサエレ
メントPEに対して任意に子タスクを生成することがで
きる。子タスクはそのプログラムの終了時に、当該子タ
スクを呼び出した親のプログラムに対して、子タスクの
終了を示すメッセージを送信する。このメッセージは、
図1の共通バス11を用いて行われるものとするが、そ
の形態はいかなるものであってもよい。プロセッサ間通
信を厳密に規定してもよいし、単に信号線を通じて知ら
せてもよい。
【0028】なお、説明の都合上、子タスクとして生成
されるプログラムのアドレス(メインメモリ上の番地)
は予めメインプログラムの記述のなかで設定されている
ものとする。また、子タスクは、プロセッサエレメント
PE12以外のプロセッサエレメントPE13〜15上
に生成されるものとする。具体的にどのプロセッサエレ
メントPEに生成するかは図1に示すアービタ56が自
動的に決定する。本実施形態では、子タスクの割り当て
方法について触れない。
【0029】子タスクを生成する命令としては、例え
ば、「gen」命令を用いるが、その名前は任意であ
る。従って、「gen」命令がプリミティブなマシン語
ではなく、アセンブラ言語のマクロ命令であっても良
い。子タスクのプログラムの中で、タスク生成やその同
期、終了に関するもの以外の通常の命令を「inst
1」、「inst2」と記述する。これも前記と同様
に、それら命令の名前や構成方法は任意である。また、
子タスクの終了命令を「end」とする。この命令によ
って、子タスクを呼んだプロセッサエレメントPEに対
して、タスクの終了を示すメッセージを自動的に送る。
子タスクで作成したデータその他の情報は、適当に処理
するものとする。また、メインプログラムにおいて、同
期待ちのための命令を「wait」とする。後述する
が、この「wait」命令には引数を設定する事ができ
る。
【0030】以下、マルチプロセッサシステム51の動
作を説明する。単数の子タスクのみを生成する場合図2
はマルチプロセッサシステム51において一つの子タス
クを生成する場合のプロセッサエレメントPE上で動作
するプログラムを説明するための図、図3は図2に示す
場合におけるタスク発生および同期待ち解除のタイミン
グを説明するための図である。ここで、メインプログラ
ム25の「wait」命令は、アービタ56のカウンタ
のカウント値が「0」になることを同期解除条件として
いる。例えば、図3に示すタイミング「r1」で、プロ
セッサエレメントPE12において、図2に示すメイン
プログラム25に含まれる「gen」命令が実行され、
タイミング「n1」でプロセッサエレメントPE13上
にタスク26が生成される。このとき、アービタ56の
カウント値が「1」に設定される。そして、プロセッサ
エレメントPE13において、タスク26の「inst
1」および「inst2」などの命令が実行される。ま
た、プロセッサエレメントPE12において、メインプ
ログラム25の「gen」命令以降の命令が実行され
る。そして、図3に示すタイミング「s1」で、プロセ
ッサエレメントPE12において、図2に示す「wai
t」命令が実行される。このとき、アービタ56のカウ
ント値が「1」であるため、プロセッサエレメントPE
12は、同期条件が満たされていないと判断し、同期待
ち状態になる。
【0031】そして、図3に示すタイミング「s2」
で、プロセッサエレメント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」に設定される。
【0033】そして、プロセッサエレメントPE13に
おいて、タイミング「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は同
期待ち状態になる。
【0035】次に、図5に示すタイミング「e2」で、
プロセッサエレメント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」に設定される。
【0037】そして、プロセッサエレメントPE13に
おいて、タイミング「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は同
期待ち状態になる。
【0039】次に、図5に示すタイミング「e2」で、
プロセッサエレメント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
としては、例えば、仮想記憶をサポートするタスクなど
の長期的に存在するタスクが適用される。
【0041】以上説明したように、マルチプロセッサシ
ステム51によれば、マルチタスクを実現する場合で
も、OSなどによる複雑な管理を行うことなく、複数の
タスクを発生したプログラムの同期待ちを解決すること
ができる。マルチプロセッサシステム51によるタスク
管理は、ソフトウエアによるタスクの管理と比べてやや
汎用性に制限が付くものの、同期待ち機構をハードウエ
アで実現することがきわめて容易になる。これは、タス
ク終了の事実を高速に知るための方法として有効であ
り、また、回路規模が小さく実現できるなどの効果があ
る。
【0042】また、同期待ち命令である「wait」命
令に引数を記述することにより、メインプログラムと、
当該メインプログラムが生成した子タスクとの間の同期
条件を柔軟に設定できる。例えば、マルチプロセッサシ
ステム51は、図6において、プロセッサエレメントP
E14上に生成される子タスク87が他の子タスク8
6,88に比べてプログラムが終了するまでの時間が極
めて大きくなることが事前に知ることができていて、な
おかつ、プロセッサエレメントPE12上の同じメイン
プログラム85で子タスクを生成する必要性にせまられ
たときなどは特に有効である。
【0043】本実施形態では、意図的に極端な場合を想
定している。しかし、タスクの処理時間に大小の差が存
在することは一般的にいえることである。マルチプロセ
ッサシステム上でマルチタスクを実現するためには、何
らかの方法でプロセッサ資源と各々のスレッド(OS上
の概念でタスクの断片のこと)とを対応づけすることが
求められる。プロセッサ資源を有効に使用するために
は、システム上のプロセッサ稼動状況を的確に把握する
必要があり、また、ある特定のプロセッサの動作状況に
よってシステム全体が影響を受けることはあまり望まし
くはない。従来の技術を用いてマルチプロセッサシステ
ム上にマルチタスクを実現する場合には、前述したよう
に、プロセッサ資源を有効に使用することが困難にな
る。つまり、ソフトウェアによる制御では稼動していな
いプロセッサに対して新たなタスクを割り当てることが
可能であるが、その判断を下すまでに多くの時間を費や
すことになる。結果的に、システム全体が遅く動作する
ことになる。
【0044】これに対して、マルチプロセッサシステム
51によれば、同期待ちの解決手段として、カウンタを
用いるのみで、複雑なソフトウェアを用いたないため、
同期待ちを高速に解決でき、リアルタイム性を向上でき
る。また、ハードウエアによる従来の技術では、子タス
クの生成とその同期機構を高速にかつ簡単に構成するこ
とができる一方で、複数のタスクを生成することが困難
になっている。仮に、複数のタスクが生成できたとして
も、それまでに生成したタスクをすべて待つことにな
る。これに対して、マルチプロセッサシステム51によ
れば、「wait」命令に同期待ちを行うタスクの数を
引数として設定することで、多様かつ柔軟な同期待ちを
実現できる。
【0045】OSを実装する上で、新たなタスクを生成
する際にはそれまで生成されているタスクのうちいくつ
までが終了しているかなどを把握し、かつ、それらのタ
スクがどのプロセッサエレメントPEに割り当てられて
いるかを知る必要がある。裏を返せば、すべてのタスク
の終了を待っていては、新たなタスクのプロセッサエレ
メントPEへの割り当てができないことになるか、ある
いは、相当の困難を伴うことになるだろう。従って、上
述したマルチプロセッサシステム51のように、タスク
を生成するべきメインプログラム内でタスクの終了状態
を監視しておきその値を同期機構に反映させることがで
きれば、マルチプロセッサのシステムを向上させること
ができる。
【0046】本発明は上述した実施形態には限定されな
い。上述した実施形態では、図1に示すプロセッサエレ
メントPE12がタスク生成命令である「gen」命令
を実行する場合を例示したが、その他のプロセッサエレ
メントPE13〜15が「gen」命令を実行してもよ
い。また、図1に示す例では、4個のプロセッサエレメ
ントPE12〜15を設けた場合を例示したが、2以上
であればプロセッサエレメントPEの数は任意である。
【0047】上述した実施形態では、アービタ56にタ
スク同期機能を持たせた場合を例示したが、タスク同期
機能をその他の構成要素に持たせてもよい。
【0048】また、本発明は、例えば、図8に示すよう
に、コンピュータ102,103,104,105をネ
ットワーク101を介して接続して分散処理を行う並列
分散処理システムにも適用できる。この場合に、例え
ば、コンピュータ102がメインプログラムを実行する
場合には、コンピュータ102内にアービタ106が設
けられる。アービタ106の機能は、前述した図1に示
すアービタ56と同じである。
【0049】
【発明の効果】以上説明したように、本発明の並列演算
処理装置によれば、第1の演算処理手段が複数のタスク
を呼び出した場合の同期待ちを高速かつ柔軟に解決でき
る。また、本発明の並列演算処理方法によれば、第1の
演算処理が複数のタスクを呼び出した場合の同期待ちを
高速かつ柔軟に解決できる。
【図面の簡単な説明】
【図1】図1は、本発明のマルチプロセッサシステムの
構成図である。
【図2】図2は、図1に示すマルチプロセッサシステム
において一つの子タスクを生成する場合のプロセッサエ
レメントPE上で動作するプログラムを説明するための
図である。
【図3】図3は、図2に示す場合におけるタスク発生お
よび同期待ち解除のタイミングを説明するための図であ
る。
【図4】図4は、図1に示すマルチプロセッサシステム
において複数のタスクを生成し、全てのタスクの終了を
同期待ちの条件とした場合の各プロセッサエレメントP
E上で動作するプログラムを説明するための図である。
【図5】図5は、図4に示す場合におけるタスク発生お
よび同期待ち解除のタイミングを説明するための図であ
る。
【図6】図6は、図1に示すマルチプロセッサシステム
において複数のタスクを生成し、2つのタスクの終了を
同期待ちの条件とした場合の各プロセッサエレメントP
E上で動作するプログラムを説明するための図である。
【図7】図7は、図6に示す場合におけるタスク発生お
よび同期待ち解除のタイミングを説明するための図であ
る。
【図8】図8は、本発明を適用した並列分散処理システ
ムの構成図である。
【図9】図9は、一般的なマルチプロセッサシステムの
全体構成図である。
【図10】図10は、タスクを生成するプログラムが同
期待ちを行う手法を説明するための図である。
【符号の説明】
1,51…マルチプロセッサシステム、11…共通バ
ス、16,56,156…アービタ、17…共有メモ
リ、19…メインバス、12〜15…プロセッサエレメ
ントPE、18…外部端子、100…並列分散処理シス
テム、102〜105…コンピュータ

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】単数または複数のタスク呼び出し命令を実
    行した後に、同期待ち命令で必要に応じて同期待ちを行
    う第1の演算処理手段と、 前記第1の演算処理手段から呼び出されたタスクを実行
    し、当該呼び出されたタスクが終了したときにタスク終
    了命令を実行する単数または複数の第2の演算処理手段
    と、 前記第1の演算処理手段による前記タスク呼び出し命令
    の実行に応じてカウント値を増加し、前記第2の演算処
    理手段の前記タスク終了命令の実行に応じてカウント値
    を減少するカウント手段とを有し、 前記第1の演算処理手段は、前記同期待ち命令に含まれ
    るカウント値と、前記カウント手段のカウント値とを比
    較し、当該比較の結果に応じて同期待ちを解除するか否
    かを決定する並列演算処理装置。
  2. 【請求項2】前記第1の演算処理手段は、前記同期待ち
    命令に含まれるカウント値と、前記カウント手段のカウ
    ント値とが一致したときに、同期待ちを解除する請求項
    1に記載の並列演算処理装置。
  3. 【請求項3】前記同期待ち命令に含まれるカウント値
    は、前記第1の演算処理手段から呼び出されているタス
    クの数に比べて小さい請求項2に記載の並列演算処理装
    置。
  4. 【請求項4】前記第1の演算処理手段における処理およ
    び前記単数または複数の第2の演算処理手段における処
    理とは相互に独立して行われる請求項1に記載の並列演
    算処理装置。
  5. 【請求項5】前記同期待ち命令は、前記カウント値を引
    数として持つ請求項1に記載の並列演算処理装置。
  6. 【請求項6】前記第1の演算処理手段および前記単数ま
    たは複数の第2の演算処理手段は、共通のバスを介して
    接続されている請求項1に記載の並列演算処理装置。
  7. 【請求項7】第1の演算処理において、単数または複数
    のタスク呼び出し命令を実行し、 単数または複数の第2の演算処理において、前記第1の
    演算処理から呼び出されたタスクを実行し、当該呼び出
    されたタスクが終了したときにタスク終了命令を実行
    し、 前記第1の演算処理による前記タスク呼び出し命令の実
    行に応じて第1のカウント値を増加し、前記第2の演算
    処理の前記タスク終了命令の実行に応じて前記第1のカ
    ウント値を減少し、 前記第1の演算処理において、同期待ち命令が実行され
    たときに、前記同期待ち命令に含まれる第2のカウント
    値と、前記第1のカウント値とを比較し、当該比較の結
    果に応じて同期待ちを解除するか否かを決定する並列演
    算処理方法。
  8. 【請求項8】前記第1の演算処理は、前記同期待ち命令
    に含まれる第2のカウント値と、前記第1のカウント値
    とが一致したときに、同期待ちを解除する請求項7に記
    載の並列演算処理方法。
  9. 【請求項9】前記同期待ち命令に含まれる第2のカウン
    ト値は、前記第1の演算処理から呼び出されているタス
    クの数に比べて小さい請求項8に記載の並列演算処理方
    法。
  10. 【請求項10】前記第1の演算処理における処理および
    前記単数または複数の第2の演算処理における処理とは
    相互に独立して行われる請求項7に記載の並列演算処理
    方法。
  11. 【請求項11】前記同期待ち命令は、前記カウント値を
    引数として持つ請求項7に記載の並列演算処理方法。
JP10675698A 1998-04-16 1998-04-16 並列演算処理装置およびその方法 Pending JPH11306038A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP10675698A JPH11306038A (ja) 1998-04-16 1998-04-16 並列演算処理装置およびその方法
US09/292,331 US6581089B1 (en) 1998-04-16 1999-04-15 Parallel processing apparatus and method of the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10675698A JPH11306038A (ja) 1998-04-16 1998-04-16 並列演算処理装置およびその方法

Publications (1)

Publication Number Publication Date
JPH11306038A true JPH11306038A (ja) 1999-11-05

Family

ID=14441768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10675698A Pending JPH11306038A (ja) 1998-04-16 1998-04-16 並列演算処理装置およびその方法

Country Status (1)

Country Link
JP (1) JPH11306038A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005038113A (ja) * 2003-07-18 2005-02-10 Nec Corp シングルプロセッサ向けosによる並列処理システムにおけるセキュリティ管理システム
US7418703B2 (en) 2002-03-20 2008-08-26 Nec Corporation Parallel processing system by OS for single processor
US7526673B2 (en) 2003-03-31 2009-04-28 Nec Corporation Parallel processing system by OS for single processors and parallel processing program
WO2012001777A1 (ja) * 2010-06-29 2012-01-05 富士通株式会社 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
WO2012124078A1 (ja) * 2011-03-16 2012-09-20 富士通株式会社 同期方法、マルチコアプロセッサシステム、および同期システム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418703B2 (en) 2002-03-20 2008-08-26 Nec Corporation Parallel processing system by OS for single processor
US7526673B2 (en) 2003-03-31 2009-04-28 Nec Corporation Parallel processing system by OS for single processors and parallel processing program
JP2005038113A (ja) * 2003-07-18 2005-02-10 Nec Corp シングルプロセッサ向けosによる並列処理システムにおけるセキュリティ管理システム
US7516323B2 (en) 2003-07-18 2009-04-07 Nec Corporation Security management system in parallel processing system by OS for single processors
WO2012001777A1 (ja) * 2010-06-29 2012-01-05 富士通株式会社 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
JP5354102B2 (ja) * 2010-06-29 2013-11-27 富士通株式会社 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
US9223641B2 (en) 2010-06-29 2015-12-29 Fujitsu Limited Multicore processor system, communication control method, and communication computer product
WO2012124078A1 (ja) * 2011-03-16 2012-09-20 富士通株式会社 同期方法、マルチコアプロセッサシステム、および同期システム
US9558152B2 (en) 2011-03-16 2017-01-31 Fujitsu Limited Synchronization method, multi-core processor system, and synchronization system

Similar Documents

Publication Publication Date Title
TWI407373B (zh) 用於管理多核心架構之資源的方法和設備
US5056000A (en) Synchronized parallel processing with shared memory
US5666523A (en) Method and system for distributing asynchronous input from a system input queue to reduce context switches
US8572626B2 (en) Symmetric multi-processor system
EP1224544A1 (en) System of reusable software parts for implementing concurrency and hardware access, and methods of use
JPH02238553A (ja) マルチプロセツサ・システム
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
US7103631B1 (en) Symmetric multi-processor system
US6581089B1 (en) Parallel processing apparatus and method of the same
US20080178180A1 (en) Computer System and Method For Processing Data Using Continuous Processing Task
JPH11306038A (ja) 並列演算処理装置およびその方法
JP3644042B2 (ja) マルチタスク処理装置
JPH11306037A (ja) 並列演算処理装置およびその方法
JPH11306149A (ja) 並列演算処理装置およびその方法
JP2780623B2 (ja) 情報処理装置
US7320044B1 (en) System, method, and computer program product for interrupt scheduling in processing communication
JP3006676B2 (ja) マルチプロセッサ
JP2708172B2 (ja) 並列処理方法
US20230305872A1 (en) Efficient central processing unit overcommit for virtual machines with symmetric multi-processing
Cataldo et al. Subutai: Speeding Up Legacy Parallel Applications Through Data Synchronization
JP2018147126A (ja) 並列プロセス実行方法
Verhulst The rationale for distributed semantics as a topology independent embedded systems design methodology and its implementation in the virtuoso rtos
JPH10260850A (ja) 仮想計算機システム
JPH0318958A (ja) マルチプロセッサシステム
CN112395095A (zh) 一种基于cpoc的进程同步方法