JPH0425960A - マルチプロセッサシステムにおける相互通信方法 - Google Patents
マルチプロセッサシステムにおける相互通信方法Info
- Publication number
- JPH0425960A JPH0425960A JP2131098A JP13109890A JPH0425960A JP H0425960 A JPH0425960 A JP H0425960A JP 2131098 A JP2131098 A JP 2131098A JP 13109890 A JP13109890 A JP 13109890A JP H0425960 A JPH0425960 A JP H0425960A
- Authority
- JP
- Japan
- Prior art keywords
- queue
- processor
- data
- read
- pointer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004891 communication Methods 0.000 title claims abstract description 39
- 230000015654 memory Effects 0.000 claims abstract description 51
- 238000000034 method Methods 0.000 claims description 27
- 230000008901 benefit Effects 0.000 abstract description 2
- 239000000872 buffer Substances 0.000 description 40
- 230000008569 process Effects 0.000 description 20
- 230000004044 response Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 2
- 241000282887 Suidae Species 0.000 description 1
- 125000001246 bromo group Chemical group Br* 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/06—Indexing scheme relating to groups G06F5/06 - G06F5/16
- G06F2205/067—Bidirectional FIFO, i.e. system allowing data transfer in two directions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99948—Application of database or data structure, e.g. distributed, multimedia, or image
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Information Transfer Systems (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[産業上の利用分野]
本発明は複数のプロセッサ間でメ・ソセージを相互に交
換するためのマルチブロモ・ソサシステムにおける相互
通信方式に関する。
換するためのマルチブロモ・ソサシステムにおける相互
通信方式に関する。
[従来の技術]
第9図はマルチプロセッサシステムの一例を概略的に示
す図である。同図において、システムノ(ス111には
複数のプロセッサ112および主共有メモリ113が接
続されており、各ブロモ・ソサ112は中央処理装置(
CPU)1.14、およびローカルメモリ115をそれ
ぞれ有する。主共用メモリ113は各プロセッサ112
により共用されるものであり、システムバス111を通
じて各プロセッサ112からアクセスされる。
す図である。同図において、システムノ(ス111には
複数のプロセッサ112および主共有メモリ113が接
続されており、各ブロモ・ソサ112は中央処理装置(
CPU)1.14、およびローカルメモリ115をそれ
ぞれ有する。主共用メモリ113は各プロセッサ112
により共用されるものであり、システムバス111を通
じて各プロセッサ112からアクセスされる。
第10図はマルチプロセッサの他の例を概略的に示す図
であり、各プロセッサ112には副共有メモリ116が
それぞれ与えられている。この場合、各プロセッサ11
2は自己が所有する副共有メモリ116をシステムバス
111を介さずにそれぞれアクセスすることができるの
で、高速処理が可能となる。勿論、各プロセッサ112
はシステムバス111を通じて主共有メモリ113をそ
れぞれアクセスしたり、他のプロセッサ112が所有す
る副共有メモリ116を相互にアクセスすることができ
る。
であり、各プロセッサ112には副共有メモリ116が
それぞれ与えられている。この場合、各プロセッサ11
2は自己が所有する副共有メモリ116をシステムバス
111を介さずにそれぞれアクセスすることができるの
で、高速処理が可能となる。勿論、各プロセッサ112
はシステムバス111を通じて主共有メモリ113をそ
れぞれアクセスしたり、他のプロセッサ112が所有す
る副共有メモリ116を相互にアクセスすることができ
る。
ここで、両者のマルチプロセッサを比較すると、後者に
おいて各プロセッサ112に副共有メモリ1]6がそれ
ぞれ割当てられているという違いはあるものの、これら
の副共有メモリ1コロが主共有メモリ113と同様に各
プロセッサ112からそれぞれアクセスされるのである
から、両者の論理的な構成は等価である。
おいて各プロセッサ112に副共有メモリ1]6がそれ
ぞれ割当てられているという違いはあるものの、これら
の副共有メモリ1コロが主共有メモリ113と同様に各
プロセッサ112からそれぞれアクセスされるのである
から、両者の論理的な構成は等価である。
さて、このようなマルチプロセッサシステムにおいて2
つのプロセッサ間で通信を行う場合は、共有メモリが利
用される。
つのプロセッサ間で通信を行う場合は、共有メモリが利
用される。
例えば、第11図に示されるように第1のプロセッサ1
21から第2のプロセッサ122にデータを通信すると
きには、第1のブロモ・ソサ12〕は通信すべきデータ
を共有メモリ123内のノ(・ソファ124に書込み、
データがバッファ124に書込まれたことを指示するた
めに共有メモリ123内のフラッグ125をセットする
。第2のプロセッサ122はフラッグ125がセットさ
れると、バッファ]24からデータを読出してフラッグ
125をリセットする。したがって、第1のプロセッサ
121から第2のプロセッサ122にデータが転送され
る毎に、フラッグ125のセットおよびリセットが繰返
されることとなる。しかしながら、このようにフラッグ
を用いて各プロセッサ間のデータ通信を行う場合は、双
方のプロセッサが共存メモリ内のフラッグを定期的に監
視せねばならず、効率が悪い。
21から第2のプロセッサ122にデータを通信すると
きには、第1のブロモ・ソサ12〕は通信すべきデータ
を共有メモリ123内のノ(・ソファ124に書込み、
データがバッファ124に書込まれたことを指示するた
めに共有メモリ123内のフラッグ125をセットする
。第2のプロセッサ122はフラッグ125がセットさ
れると、バッファ]24からデータを読出してフラッグ
125をリセットする。したがって、第1のプロセッサ
121から第2のプロセッサ122にデータが転送され
る毎に、フラッグ125のセットおよびリセットが繰返
されることとなる。しかしながら、このようにフラッグ
を用いて各プロセッサ間のデータ通信を行う場合は、双
方のプロセッサが共存メモリ内のフラッグを定期的に監
視せねばならず、効率が悪い。
そこで、フラッグを用いる代りに、割込みを発生させる
という方法がある。すなわち、第1のプロセッサがバッ
ファにデータを書込んだときには第1のプロセッサから
第2のプロセッサへの割込みが行われ、第2のプロセッ
サはこの割込みに応してバッファからデータを読出ずと
いうものである。しかしながら、1つのデータを伝える
毎に、割込みを発生せねばならないので、あまり効率は
改善されない。
という方法がある。すなわち、第1のプロセッサがバッ
ファにデータを書込んだときには第1のプロセッサから
第2のプロセッサへの割込みが行われ、第2のプロセッ
サはこの割込みに応してバッファからデータを読出ずと
いうものである。しかしながら、1つのデータを伝える
毎に、割込みを発生せねばならないので、あまり効率は
改善されない。
[発明が解決しようとする課題]
このように従来のマルチプロセッサにおいては2つのプ
ロセッサのうちの一方が共有メモリ内のバッファにデー
タを書込み、他方がバッファからデータを読み出すとい
う通信を行う毎に、フラッグをセット・リセットするか
、または割込みを発生せねばならず、このためにデータ
通信を良好な効率で行うことができないという問題点が
あった。
ロセッサのうちの一方が共有メモリ内のバッファにデー
タを書込み、他方がバッファからデータを読み出すとい
う通信を行う毎に、フラッグをセット・リセットするか
、または割込みを発生せねばならず、このためにデータ
通信を良好な効率で行うことができないという問題点が
あった。
また、このようなデータ通信方式を用いていたのでは複
数のプロセッサの相互間でデータを通信しようとしても
、2つのプロセッサ間の一方向通信毎にデータ通信が独
立しているため、相互通信を系統的に管理することは困
難であった。
数のプロセッサの相互間でデータを通信しようとしても
、2つのプロセッサ間の一方向通信毎にデータ通信が独
立しているため、相互通信を系統的に管理することは困
難であった。
そこで、本発明は複数のプロセッサの相互間で効率良く
データ通信を行いうるマルチプロセッサシステムにおけ
る相互通信方式を提供することを目的とする。
データ通信を行いうるマルチプロセッサシステムにおけ
る相互通信方式を提供することを目的とする。
[課題を解決するための手段]
本発明では複数の部分データ待ち行列を連結した連結デ
ータ待ち行列を共有メモリ内に形成し、前記各部分デー
タ待ち行列はデータの書込み位置を示しかつデータが書
込まれる毎に繰上げられる書込みポインタ、およびデー
タの読出し位置を示しかつデータが読出される毎に前記
書込みポインタに追従して繰上げられる読出しポインタ
をそれぞれ有し、前記連結待ち行列は前記各部分データ
待ち行列のうちの1つの部分データ待ち行列の読出しポ
インタと引続く他の1つの部分データ待ち行列の書込み
ポインタとを兼用することにより連結され、各プロセッ
サは予め割当てられた読出しポインタおよび書込みポイ
ンタにアクセスしてデータの読出しおよび書込みをそれ
ぞれ行うようにしている。
ータ待ち行列を共有メモリ内に形成し、前記各部分デー
タ待ち行列はデータの書込み位置を示しかつデータが書
込まれる毎に繰上げられる書込みポインタ、およびデー
タの読出し位置を示しかつデータが読出される毎に前記
書込みポインタに追従して繰上げられる読出しポインタ
をそれぞれ有し、前記連結待ち行列は前記各部分データ
待ち行列のうちの1つの部分データ待ち行列の読出しポ
インタと引続く他の1つの部分データ待ち行列の書込み
ポインタとを兼用することにより連結され、各プロセッ
サは予め割当てられた読出しポインタおよび書込みポイ
ンタにアクセスしてデータの読出しおよび書込みをそれ
ぞれ行うようにしている。
また、他の本発明ではデータ待ち行列を共有メモリ内に
形成するとともに、各プロセッサには少なくとも1つの
前記データ待ち行列かそれぞれ与えられ、前記各プロセ
ッサ毎に、該プロセッサに与えられた前記データ待ち行
列を管理するための管理テーブルを前記共有メモリ内に
形成し、前記管理テーブルには管理の対象となるデータ
待ち行列の読出しポインタ、書込みポインタおよびデー
タ待ち行列の読出しポインタからデータを読出すために
待機している受取り側を示す識別子が少なくとも登録さ
れる。
形成するとともに、各プロセッサには少なくとも1つの
前記データ待ち行列かそれぞれ与えられ、前記各プロセ
ッサ毎に、該プロセッサに与えられた前記データ待ち行
列を管理するための管理テーブルを前記共有メモリ内に
形成し、前記管理テーブルには管理の対象となるデータ
待ち行列の読出しポインタ、書込みポインタおよびデー
タ待ち行列の読出しポインタからデータを読出すために
待機している受取り側を示す識別子が少なくとも登録さ
れる。
さらに、別の本願発明では各プロセッサ毎の管理テーブ
ルのアドレスをそれぞれ予め登録したポインタテーブル
を共有メモリ内に形成している。
ルのアドレスをそれぞれ予め登録したポインタテーブル
を共有メモリ内に形成している。
[作用]
本発明によれば、連結データ待ち行列における1つの部
分データ待ち行列の読出しポインタと引続く他の1つの
部分データ待ち行列の書込みポインタが兼用されている
ので、これらの読出しポインタと書込みポインタは同時
にアクセスされて繰上げられる。ここで、例えば第1の
プロセッサが前者の部分データ待ち行列の書込みポイン
タにアクセスしてデータを書込むと、第2のプロセッサ
がこの部分データ待ち行列の読出しポインタから該デー
タを読出すことができる。このとき、この読出しポイン
タの繰上げに伴って引続く後者の部分データ待ち行列の
書込みポインタが繰上げられるので、これにより該デー
タは前者の部分データ待ち行列から後者の部分データ待
ち行列へと引き渡される。この後、第1のプロセッサが
後者の部分データ待ち行列の読出しポインタから該デー
タを読出せば、結果として該データは第]のプロセッサ
と第2のプロセッサ間を往復したこととなり、第1のプ
ロセッサと第2のプロセッサ間の相互通信が成立する。
分データ待ち行列の読出しポインタと引続く他の1つの
部分データ待ち行列の書込みポインタが兼用されている
ので、これらの読出しポインタと書込みポインタは同時
にアクセスされて繰上げられる。ここで、例えば第1の
プロセッサが前者の部分データ待ち行列の書込みポイン
タにアクセスしてデータを書込むと、第2のプロセッサ
がこの部分データ待ち行列の読出しポインタから該デー
タを読出すことができる。このとき、この読出しポイン
タの繰上げに伴って引続く後者の部分データ待ち行列の
書込みポインタが繰上げられるので、これにより該デー
タは前者の部分データ待ち行列から後者の部分データ待
ち行列へと引き渡される。この後、第1のプロセッサが
後者の部分データ待ち行列の読出しポインタから該デー
タを読出せば、結果として該データは第]のプロセッサ
と第2のプロセッサ間を往復したこととなり、第1のプ
ロセッサと第2のプロセッサ間の相互通信が成立する。
また、他の本発明によれば、複数のプロセッサが少なく
とも1つのデータ待ち行列をそれぞれ所有し、これらの
データ待ち行列が該各プロセッサ毎の管理テーブルによ
りそれぞれ管理される。これらの管理テーブルは共有メ
モリに格納されるとともに、管理の対象となるデータ待
ち行列の複数の読出しポインタ、書込みポインタおよび
該データ待ち行列の読出しポインタからデータを読出す
ために待機している受取り側を示す識別子をそれぞれ登
録している。このため、プロセッサは他のプロセッサが
所有しているデータ待ち行列を該他のプロセッサの管理
テーブルに基づいてアクセスすることができる。
とも1つのデータ待ち行列をそれぞれ所有し、これらの
データ待ち行列が該各プロセッサ毎の管理テーブルによ
りそれぞれ管理される。これらの管理テーブルは共有メ
モリに格納されるとともに、管理の対象となるデータ待
ち行列の複数の読出しポインタ、書込みポインタおよび
該データ待ち行列の読出しポインタからデータを読出す
ために待機している受取り側を示す識別子をそれぞれ登
録している。このため、プロセッサは他のプロセッサが
所有しているデータ待ち行列を該他のプロセッサの管理
テーブルに基づいてアクセスすることができる。
さらに、別の本発明によれば、共有メモリ内のポインタ
テーブルには各プロセッサ毎の管理テーブルのアドレス
がそれぞれ登録されているので、プロセッサは所望のプ
ロセッサの管理テーブルをポインタテーブルに基づいて
アクセスすることができる。
テーブルには各プロセッサ毎の管理テーブルのアドレス
がそれぞれ登録されているので、プロセッサは所望のプ
ロセッサの管理テーブルをポインタテーブルに基づいて
アクセスすることができる。
[実施例]
まず、本発明に係わるマルチプロセッサシステムにおけ
る相互通信方式の原理を第1図に従い順を追って述べる
。
る相互通信方式の原理を第1図に従い順を追って述べる
。
第1図(a)はデータ待ち行列を利用して行われる1つ
のプロセッサから他のプロセッサへの一方向通信を示す
図である。同図(a)において、第1のプロセッサ1は
第2のプロセッサ2に伝送すべき各データA、B、Cを
共有メモリ3に順次書込み、これによりデータ待ち行列
(以下キューと称する)、4を形成する。ここで、第1
のプロセッサ1から第2のプロセッサ2への割り込みが
行われると、第2のプロセッサ2はキュー4から各デー
タA、B、Cを順次読出す。したがって、このキュー4
を共有メモリ3内に形成すれば、複数のデータを1回の
割り込みだけで第1のプロセッサ]から第2のプロセッ
サ2へと伝送することができる。なお、このような一方
向通信のための技術は本願発明の出願人が先に出願した
特願平161、735に開示されている。
のプロセッサから他のプロセッサへの一方向通信を示す
図である。同図(a)において、第1のプロセッサ1は
第2のプロセッサ2に伝送すべき各データA、B、Cを
共有メモリ3に順次書込み、これによりデータ待ち行列
(以下キューと称する)、4を形成する。ここで、第1
のプロセッサ1から第2のプロセッサ2への割り込みが
行われると、第2のプロセッサ2はキュー4から各デー
タA、B、Cを順次読出す。したがって、このキュー4
を共有メモリ3内に形成すれば、複数のデータを1回の
割り込みだけで第1のプロセッサ]から第2のプロセッ
サ2へと伝送することができる。なお、このような一方
向通信のための技術は本願発明の出願人が先に出願した
特願平161、735に開示されている。
しかしながら、キュー4を用いれば1つのデータの伝送
毎に割り込みを発生させる必要がなくなるものの、第1
のプロセッサ1から第2のプロセッサ2への一方向のデ
ータ通信を行うことができるのみてあり、逆方向のデー
タ通信を行うためには他のキューを共有メモリ3内に形
成する必要がある。このため、多数のプロセッサの相互
間でブタ通信を行うことを想定すると、キューの数が膨
大となってしまう。
毎に割り込みを発生させる必要がなくなるものの、第1
のプロセッサ1から第2のプロセッサ2への一方向のデ
ータ通信を行うことができるのみてあり、逆方向のデー
タ通信を行うためには他のキューを共有メモリ3内に形
成する必要がある。このため、多数のプロセッサの相互
間でブタ通信を行うことを想定すると、キューの数が膨
大となってしまう。
そこで、本発明に係わる相互通信方式では第1図(b)
に示すように第1の部分キュー11および第2の部分キ
ュー12からなる連結キュー13を共有メモリ3内に形
成し、第1のプロセッサ1から第2のプロセッサ2への
データ伝送を第1の部分キュー11を介して行うととも
に、第2のプロセッサ12から第1のプロセッサ11へ
のデータ伝送を第2の部分キュー12を介して行うよう
にしている。すなわち、第1のプロセッサ1は各データ
A、B、・・・、Fを共有メモリ3に順次書込み、これ
により連結キュー13を形成する。そして、第1のプロ
セッサ1がら第2のプロセッサ2への割り込みが行われ
ると、第2のプロセッサ2は連結キュー13から各デー
タA、B、・・・を順次読出す。ここで、例えば第2の
プロセッサ2が各データA、B、・・・、FのうちのA
、B、Cを順次読出したとすると、連結キュー]−3は
各データD。
に示すように第1の部分キュー11および第2の部分キ
ュー12からなる連結キュー13を共有メモリ3内に形
成し、第1のプロセッサ1から第2のプロセッサ2への
データ伝送を第1の部分キュー11を介して行うととも
に、第2のプロセッサ12から第1のプロセッサ11へ
のデータ伝送を第2の部分キュー12を介して行うよう
にしている。すなわち、第1のプロセッサ1は各データ
A、B、・・・、Fを共有メモリ3に順次書込み、これ
により連結キュー13を形成する。そして、第1のプロ
セッサ1がら第2のプロセッサ2への割り込みが行われ
ると、第2のプロセッサ2は連結キュー13から各デー
タA、B、・・・を順次読出す。ここで、例えば第2の
プロセッサ2が各データA、B、・・・、FのうちのA
、B、Cを順次読出したとすると、連結キュー]−3は
各データD。
E、Fからなる第1の部分キュー11と、各データA、
、B、Cからなる第2の部分キュー12とに分れる。つ
まり、第2の部分キュー12は第2のプロセッサ2によ
って連結キュー20から読出された各データからなり、
第1の部分キュー11からデータが与えられるようにし
て形成される。そして、この第2の部分キュー12を形
成する各データA、B、Cは第2のプロセッサ2がら第
1のプロセッサlへの割込みが行われると、第1のプロ
セッサ1によって順次読出される。このように第1の部
分キュー11および第2の部分キュー12からなる連結
キュー13を形成した場合は、第1のプロセッサ1から
第2のプロセッサ2ヘデータが伝送された後、該データ
は第2のプロセッサ2から第1のプロセッサ1へと返送
されることとなる。したがって、1つの連結キュー13
のみを共有メモリ3内に形成するだけで、第1のプロセ
ッサ1と第2のプロセッサ2間の相互通信が可能となる
。しかも、第1のプロセッサ1は第1の部分キュー11
と第2の部分キュー12間の分割位置を判別することに
より、第2のプロセッサ2へのデータ伝送状況を監視す
ることができる。
、B、Cからなる第2の部分キュー12とに分れる。つ
まり、第2の部分キュー12は第2のプロセッサ2によ
って連結キュー20から読出された各データからなり、
第1の部分キュー11からデータが与えられるようにし
て形成される。そして、この第2の部分キュー12を形
成する各データA、B、Cは第2のプロセッサ2がら第
1のプロセッサlへの割込みが行われると、第1のプロ
セッサ1によって順次読出される。このように第1の部
分キュー11および第2の部分キュー12からなる連結
キュー13を形成した場合は、第1のプロセッサ1から
第2のプロセッサ2ヘデータが伝送された後、該データ
は第2のプロセッサ2から第1のプロセッサ1へと返送
されることとなる。したがって、1つの連結キュー13
のみを共有メモリ3内に形成するだけで、第1のプロセ
ッサ1と第2のプロセッサ2間の相互通信が可能となる
。しかも、第1のプロセッサ1は第1の部分キュー11
と第2の部分キュー12間の分割位置を判別することに
より、第2のプロセッサ2へのデータ伝送状況を監視す
ることができる。
なお、ここでは第2のプロセッサ2は第1の部分キュー
11を介して各データA、B、・・・ Fを受は取って
も、これらのデータを処理せずにそのまま第2の部分キ
ュー12を介して第1のプロセッサ1に返送しているが
、該各データを更新してから返送してもかまわない。こ
の場合、第2のプロセッサ2は受は取った各データA、
B、 ・・・ Fを処理し、これにより形成された各デ
ータAB 、・・、Foを第2の部分キュー12を介し
て第1のプロセッサ1に返送することとになる。
11を介して各データA、B、・・・ Fを受は取って
も、これらのデータを処理せずにそのまま第2の部分キ
ュー12を介して第1のプロセッサ1に返送しているが
、該各データを更新してから返送してもかまわない。こ
の場合、第2のプロセッサ2は受は取った各データA、
B、 ・・・ Fを処理し、これにより形成された各デ
ータAB 、・・、Foを第2の部分キュー12を介し
て第1のプロセッサ1に返送することとになる。
第1図(c)には3つの部分キューに分割される連結キ
ュー2oが示されており、この連結キュー20は第1の
部分キュー21、第2の部分キュ22、および第3の部
分キュー23からなる。
ュー2oが示されており、この連結キュー20は第1の
部分キュー21、第2の部分キュ22、および第3の部
分キュー23からなる。
この場合、第1のプロセッサ1がら第2のプロセッサ2
へのデータ伝送を第1の部分キュー21を介して行い、
また第2のプロセッサ2における第1のタスク2−1か
ら第2のタスク2−2へのデータ伝送を第2の部分キュ
ー22を介して行い、さらに第2のプロセッサ2から第
1のプロセッサへのデータ伝送を第3の部分キュー23
を介して行う。すなわち、第1のプロセッサ1は各デー
タA、B、・・・、■を共有メモリ3に順次書込み、こ
れにより連結キュー20を形成する。そして、第1のプ
ロセッサ1から第2のプロセッサ2における第1のタス
ク2−1への割り込みが行われると、第2のプロセッサ
2における第1のタスク2−1は連結キュー20から各
データA、B、・・・を順次読出ず。また、第2のプロ
セッサ2における第1のタスク2−1から第2のタスク
2−2への割り込みが行われると、第2のプロセッサ2
における第2のタスク2−2は連結キュー20から各デ
ータA、B、・・・を順次読出す。ここで、例えば第2
のプロセッサ2における第1のタスク2−1が各データ
A、B、・・・、■のうちのA、B、・・・ Fを順次
読出すとともに、第2のプロセッサ2おける第2のタス
ク2−2が各データA、B、・・・、■のうちのA、B
、Cを順次読出したとすると、連結キュー20は各デー
タH,I、Jからなる第1の部分キュー21と、各デー
タD、E、Fからなる第2の部分キュー22と、各デー
タA、B、Cからなる第3の部分キュー23とに分れる
。つまり、第2の部分キュー22は第2のプロセッサ2
における第1のタスク2−1によって連結キュー20か
ら読み出された各データがらなり、第1の部分キュー2
1からデータが与えられるようにして形成される。また
、第3の部分キュー23は第2のプロセッサ2における
第1のタスク2−1により形成された第2の部分キュー
22がら第2のタスク2−2が読出した各データがらな
り、第2部分キュー22からデータが与えられるように
して形成される。そして、この第3の部分キュー23を
形成する各データA、B、Cは第1のプロセッサ1によ
って順次読出される。このように3つの部分キューから
なる連結キュー20を形成した場合は、第1のプロセッ
サ1がら第2のプロセッサ2ヘデータが伝送された後、
該データが第2のプロセッサ2における第1のタスク2
−1および第2のタスク2−2により順次読出され、さ
らに該データが第2のプロセッサ2から第1のプロセッ
サ1へと返送されることとなる。したがって、第1のプ
ロセッサ1と第2のプロセッサ2間の相互通信が可能と
なるばかりでなく、第2のプロセッサ2における第1の
タスク2−1および第2のタスク2−2にデータを順次
与えることが可能となる。
へのデータ伝送を第1の部分キュー21を介して行い、
また第2のプロセッサ2における第1のタスク2−1か
ら第2のタスク2−2へのデータ伝送を第2の部分キュ
ー22を介して行い、さらに第2のプロセッサ2から第
1のプロセッサへのデータ伝送を第3の部分キュー23
を介して行う。すなわち、第1のプロセッサ1は各デー
タA、B、・・・、■を共有メモリ3に順次書込み、こ
れにより連結キュー20を形成する。そして、第1のプ
ロセッサ1から第2のプロセッサ2における第1のタス
ク2−1への割り込みが行われると、第2のプロセッサ
2における第1のタスク2−1は連結キュー20から各
データA、B、・・・を順次読出ず。また、第2のプロ
セッサ2における第1のタスク2−1から第2のタスク
2−2への割り込みが行われると、第2のプロセッサ2
における第2のタスク2−2は連結キュー20から各デ
ータA、B、・・・を順次読出す。ここで、例えば第2
のプロセッサ2における第1のタスク2−1が各データ
A、B、・・・、■のうちのA、B、・・・ Fを順次
読出すとともに、第2のプロセッサ2おける第2のタス
ク2−2が各データA、B、・・・、■のうちのA、B
、Cを順次読出したとすると、連結キュー20は各デー
タH,I、Jからなる第1の部分キュー21と、各デー
タD、E、Fからなる第2の部分キュー22と、各デー
タA、B、Cからなる第3の部分キュー23とに分れる
。つまり、第2の部分キュー22は第2のプロセッサ2
における第1のタスク2−1によって連結キュー20か
ら読み出された各データがらなり、第1の部分キュー2
1からデータが与えられるようにして形成される。また
、第3の部分キュー23は第2のプロセッサ2における
第1のタスク2−1により形成された第2の部分キュー
22がら第2のタスク2−2が読出した各データがらな
り、第2部分キュー22からデータが与えられるように
して形成される。そして、この第3の部分キュー23を
形成する各データA、B、Cは第1のプロセッサ1によ
って順次読出される。このように3つの部分キューから
なる連結キュー20を形成した場合は、第1のプロセッ
サ1がら第2のプロセッサ2ヘデータが伝送された後、
該データが第2のプロセッサ2における第1のタスク2
−1および第2のタスク2−2により順次読出され、さ
らに該データが第2のプロセッサ2から第1のプロセッ
サ1へと返送されることとなる。したがって、第1のプ
ロセッサ1と第2のプロセッサ2間の相互通信が可能と
なるばかりでなく、第2のプロセッサ2における第1の
タスク2−1および第2のタスク2−2にデータを順次
与えることが可能となる。
しかも、第1のプロセッサ1は第1の部分キュー21と
第2の部分キュー22間の分割位置を判別することによ
り第2のプロセッサ2における第1のタスク2−1での
データ処理状況を監視するとともに、第2の部分キュー
22と第3の部分キュー23間の分割位置を判別するこ
とにより第2のプロセッサ2における第2のタスク2−
2でのデータ処理状況を監視することができる。
第2の部分キュー22間の分割位置を判別することによ
り第2のプロセッサ2における第1のタスク2−1での
データ処理状況を監視するとともに、第2の部分キュー
22と第3の部分キュー23間の分割位置を判別するこ
とにより第2のプロセッサ2における第2のタスク2−
2でのデータ処理状況を監視することができる。
なお、ここでは第2のプロセッサ2における第1のタス
ク2−1および第2のタスク2−2にて各データA、B
、・・・、■を更新していないが、これらのデータに対
する処理を勿論行っても良い。
ク2−1および第2のタスク2−2にて各データA、B
、・・・、■を更新していないが、これらのデータに対
する処理を勿論行っても良い。
例えば第2のプロセッサ2における第1のタスク2−1
は第1のプロセッサ1から第1の部分キュー21を介し
て受は取った各データA、B、・・・■を処理し、これ
により形成された各データAB 、・・・、■“を第2
の部分キュー22を介して第2のタスク2−2に伝送す
る。第2のタスク2−2は第1のタスク2−1から受は
取った各データA’、B’、・・・、■゛を処理し、こ
れにより形成された各データA ”、 B ”、・・
・、I°゛を第3の部分キュー23を介して第1のプロ
セッサ]に返送する。この場合、第1のプロセッサ1は
各データA、B、・・・、Iを出力することにより、各
データA、B’”、・・・、I°゛を得ることができる
。
は第1のプロセッサ1から第1の部分キュー21を介し
て受は取った各データA、B、・・・■を処理し、これ
により形成された各データAB 、・・・、■“を第2
の部分キュー22を介して第2のタスク2−2に伝送す
る。第2のタスク2−2は第1のタスク2−1から受は
取った各データA’、B’、・・・、■゛を処理し、こ
れにより形成された各データA ”、 B ”、・・
・、I°゛を第3の部分キュー23を介して第1のプロ
セッサ]に返送する。この場合、第1のプロセッサ1は
各データA、B、・・・、Iを出力することにより、各
データA、B’”、・・・、I°゛を得ることができる
。
また、第1のプロセッサ、第2のプロセッサにおける第
1のタスクおよび第2のタスクを例示しているが、これ
らの代りに第1.第2.第3のプロセッサを適用するこ
とができる。この場合は、第1のプロセッサから連結キ
ューに書込まれたデータは第2のプロセッサ→第3のプ
ロセッサ→第1のプロセッサという順序で読出されるこ
ととなる。
1のタスクおよび第2のタスクを例示しているが、これ
らの代りに第1.第2.第3のプロセッサを適用するこ
とができる。この場合は、第1のプロセッサから連結キ
ューに書込まれたデータは第2のプロセッサ→第3のプ
ロセッサ→第1のプロセッサという順序で読出されるこ
ととなる。
このように2つ以上の部分キューからなる連結キューを
形成すれば、1つの部分キューから次の部分キューへと
データを与える毎に該データが1つのプロセッサから他
のプロセッサへと与えられるので、複数のプロセッサ間
の相互通信が可能となる。なお、複数のデータを部分キ
ューに書込み、この後に通信相手のプロセッサもしくは
タスクに割り込みをかけるようにしても良いし、また1
つのデータを部分キューに書込む毎に、この書込みの直
前に該部分キューが空であったかどうかを判定し、空で
あったときにのみ通信相手に割り込みをかけるようにし
ても良い。後者の場合、書込み直前に部分キューが空で
なければ、通信相手が該部分キューからのデータの読出
しを続行しているとみなすので、改めて割り込みを行う
必要がない。
形成すれば、1つの部分キューから次の部分キューへと
データを与える毎に該データが1つのプロセッサから他
のプロセッサへと与えられるので、複数のプロセッサ間
の相互通信が可能となる。なお、複数のデータを部分キ
ューに書込み、この後に通信相手のプロセッサもしくは
タスクに割り込みをかけるようにしても良いし、また1
つのデータを部分キューに書込む毎に、この書込みの直
前に該部分キューが空であったかどうかを判定し、空で
あったときにのみ通信相手に割り込みをかけるようにし
ても良い。後者の場合、書込み直前に部分キューが空で
なければ、通信相手が該部分キューからのデータの読出
しを続行しているとみなすので、改めて割り込みを行う
必要がない。
次に、第1図に示したそれぞれのキューの構造を述べる
。
。
第1図(a)に示した一方向通信のためのキュー4は第
2図(a)に示すようなテーブル上で形成される。この
テーブルは複数のデータを順次格納するキュー領域31
と、キュー領域31の開始位置を示すキュー開始アドレ
ス32と、キュー領域31の終了位置を示すキュー終了
アドレス33と、データの書込み位置を示す書込みポイ
ンタ34と、データの読出し位置を示す読出しポインタ
35とを備えている。書込みポインタ34は第1のプロ
セッサ1によって該書込みポインタ34の位置にデータ
が書込まれる毎に1つずつ繰り上げられるものであり、
キュー終了アドレス33に達して、ここにデータが書き
込まれるとキュー開始アドレスに戻る。読出しポインタ
35は第2のプロセッサ2によって該読出しポインタ3
5の位置からデータが読出される毎に1つ繰上げられる
ものであり、書込みポインタ34に追従し、がっ書込み
ポインタ34を追い越すことはできない。ここで、書込
みポインタ34の1つ後から続出しポインタ35までが
キュー4となる。
2図(a)に示すようなテーブル上で形成される。この
テーブルは複数のデータを順次格納するキュー領域31
と、キュー領域31の開始位置を示すキュー開始アドレ
ス32と、キュー領域31の終了位置を示すキュー終了
アドレス33と、データの書込み位置を示す書込みポイ
ンタ34と、データの読出し位置を示す読出しポインタ
35とを備えている。書込みポインタ34は第1のプロ
セッサ1によって該書込みポインタ34の位置にデータ
が書込まれる毎に1つずつ繰り上げられるものであり、
キュー終了アドレス33に達して、ここにデータが書き
込まれるとキュー開始アドレスに戻る。読出しポインタ
35は第2のプロセッサ2によって該読出しポインタ3
5の位置からデータが読出される毎に1つ繰上げられる
ものであり、書込みポインタ34に追従し、がっ書込み
ポインタ34を追い越すことはできない。ここで、書込
みポインタ34の1つ後から続出しポインタ35までが
キュー4となる。
なお、書込みポインタ34によって示される位置と読出
しポインタ35によって示される位置とが同一である場
合は、キュー領域31に1つもデータが書込まれておら
ず、つまり空の状態である。
しポインタ35によって示される位置とが同一である場
合は、キュー領域31に1つもデータが書込まれておら
ず、つまり空の状態である。
また、読出しポインタ35によって示される位置が書込
みポインタ34によって示される位置の1つ前である場
合は、キュー領域31に新たなブタを書込むことができ
ず、つまり満杯の状態である。
みポインタ34によって示される位置の1つ前である場
合は、キュー領域31に新たなブタを書込むことができ
ず、つまり満杯の状態である。
第2図(b)は本発明に係わる相互通信方式のための第
1図(b)に示した連結キュー13を形成するためのテ
ーブルを示しており、第2図(a)に示したテーブルに
おける書込みポインタ34と読出しポインタ35間に読
出し兼書込みポインタ36を付設している。なお、第2
図(b)において第2図(a)と同様の作用を果たす部
位には説明の便宜上同じ符号を付す。
1図(b)に示した連結キュー13を形成するためのテ
ーブルを示しており、第2図(a)に示したテーブルに
おける書込みポインタ34と読出しポインタ35間に読
出し兼書込みポインタ36を付設している。なお、第2
図(b)において第2図(a)と同様の作用を果たす部
位には説明の便宜上同じ符号を付す。
ここでは、書込みポインタ34および読出しポインタ3
5は第1のプロセッサ1によるデータの読出しおよび書
込みが行われるそれぞれの位置を示しており、データの
読出しおよび書き込みが行われる毎にそれぞれ1つ繰上
がる。
5は第1のプロセッサ1によるデータの読出しおよび書
込みが行われるそれぞれの位置を示しており、データの
読出しおよび書き込みが行われる毎にそれぞれ1つ繰上
がる。
また、読出し兼書込みポインタ36は第2のプロセッサ
2によるデータの読出し並びに書込みが行われる位置を
示しており、この位置からデータが読出されると1つ繰
上かり、このときに書込みによるデータの更新もなしう
る。ただし、書込みポインタ34を追い越すことはなく
、かつ読出しポインタ35に追い越されることもない。
2によるデータの読出し並びに書込みが行われる位置を
示しており、この位置からデータが読出されると1つ繰
上かり、このときに書込みによるデータの更新もなしう
る。ただし、書込みポインタ34を追い越すことはなく
、かつ読出しポインタ35に追い越されることもない。
書込みポインタ34の1つ後から読出し兼書込みポイン
タ36までが第1の部分キュー1]に該当し、また読出
し兼書込みポインタ36の1つ後から読出しポインタ3
5までが第2の部分キュ12に該当する。
タ36までが第1の部分キュー1]に該当し、また読出
し兼書込みポインタ36の1つ後から読出しポインタ3
5までが第2の部分キュ12に該当する。
これらの第1の部分キュー11と第2の部分キュー12
とを連結したものが連結キュー13であり、また読出し
兼書込みポインタ36は第1の部分キュー11の後側に
あるデータの読出し位置く読出しポインタ)と第2の部
分キュー12の前側にあるデータの書込み位置(書込み
ポインタ)とを兼ねている。
とを連結したものが連結キュー13であり、また読出し
兼書込みポインタ36は第1の部分キュー11の後側に
あるデータの読出し位置く読出しポインタ)と第2の部
分キュー12の前側にあるデータの書込み位置(書込み
ポインタ)とを兼ねている。
ここで、第2のプロセッサ2によるデータの読出しが行
われると読出し兼書込みポインタ36が1つ繰り上げら
れるので、第1の部分キュー11から第2の部分キュー
12へデータが1つ与えられることとなり、第1の部分
キュー11が短くなるとともに第2の部分キュー12が
長くなる。また、連結キュー13の長さは第1の部分キ
ュー11の長さと第2の部分キュー12の長さとの和で
あり、読出しポインタ35が繰り上げられる毎に短くな
る。
われると読出し兼書込みポインタ36が1つ繰り上げら
れるので、第1の部分キュー11から第2の部分キュー
12へデータが1つ与えられることとなり、第1の部分
キュー11が短くなるとともに第2の部分キュー12が
長くなる。また、連結キュー13の長さは第1の部分キ
ュー11の長さと第2の部分キュー12の長さとの和で
あり、読出しポインタ35が繰り上げられる毎に短くな
る。
なお、読出し兼書込みポインタ36が書込みポインタ3
4と同一の位置を示しているときには第1の部分キュー
11が空の状態であり、読出し兼書込みポインタ36並
びに読出しポインタ35が書込みポインタ34と同一の
位置を共に示しているときには第1の部分キュー11並
びに第2の部分キュー12が共に空の状態である。また
、読出し兼書込みポインタ36並びに読出しポインタ3
5が書込みポインタ34よりも1つ前の位置を共に示し
ているときには第1の部分キュー11が満杯の状態であ
り、かつ第2の部分キュー12が空の状態である。
4と同一の位置を示しているときには第1の部分キュー
11が空の状態であり、読出し兼書込みポインタ36並
びに読出しポインタ35が書込みポインタ34と同一の
位置を共に示しているときには第1の部分キュー11並
びに第2の部分キュー12が共に空の状態である。また
、読出し兼書込みポインタ36並びに読出しポインタ3
5が書込みポインタ34よりも1つ前の位置を共に示し
ているときには第1の部分キュー11が満杯の状態であ
り、かつ第2の部分キュー12が空の状態である。
第2図(c)は第1図(c)に示した連結キュー20を
形成するためのテーブルを示しており、第2図(a)に
示したテーブルに第1の読出し兼書込みポインタ37お
よび第2の読出し兼書込みポインタ38を付設したもの
である。なお、第2図(c)において第2図(a)と同
様の作用を果たす部位には説明の便宜上同じ符号を付す
。
形成するためのテーブルを示しており、第2図(a)に
示したテーブルに第1の読出し兼書込みポインタ37お
よび第2の読出し兼書込みポインタ38を付設したもの
である。なお、第2図(c)において第2図(a)と同
様の作用を果たす部位には説明の便宜上同じ符号を付す
。
ここでは、書込みポインタ34および読出しポインタ3
5は第1のプロセッサ1によるデータの読出しおよび書
込みが行われるそれぞれの位置を示しており、データの
読出しおよび書き込みが行われる毎にそれぞれ1つ繰上
がる。
5は第1のプロセッサ1によるデータの読出しおよび書
込みが行われるそれぞれの位置を示しており、データの
読出しおよび書き込みが行われる毎にそれぞれ1つ繰上
がる。
また、第1の読出し兼書込みポインタ37は第2のプロ
セッサ2における第1のタスク2−1によるデータの読
出し並びに書込みが行われる位置を示しており、この位
置がらデータが読出されると1つ繰上かり、このときに
書込みによるデータの更新もなしうる。さらに、第2の
読出し兼書込みポインタ38は第2のプロセッサ2にお
ける第2のタスク2−1によるデータの読出し並びに書
込みが行われる位置を示しており、データの読出し毎に
1つ繰上り、同時にデータの更新もなしつる。勿論、第
1の読出し兼書込みポインタ37が書込みポインタ34
を追い越すことはなく、第2の読出し書込みポインタ3
8が第1の読出し兼書込みポイン・り37を追い越すこ
とはなく、読出しポインタ35が第2の読出し兼書込み
ポインタ38を追い越すことはない。
セッサ2における第1のタスク2−1によるデータの読
出し並びに書込みが行われる位置を示しており、この位
置がらデータが読出されると1つ繰上かり、このときに
書込みによるデータの更新もなしうる。さらに、第2の
読出し兼書込みポインタ38は第2のプロセッサ2にお
ける第2のタスク2−1によるデータの読出し並びに書
込みが行われる位置を示しており、データの読出し毎に
1つ繰上り、同時にデータの更新もなしつる。勿論、第
1の読出し兼書込みポインタ37が書込みポインタ34
を追い越すことはなく、第2の読出し書込みポインタ3
8が第1の読出し兼書込みポイン・り37を追い越すこ
とはなく、読出しポインタ35が第2の読出し兼書込み
ポインタ38を追い越すことはない。
書込みポインタ34の1つ後から第1の読出し兼書込み
ポインタ37までが第1の部分キュー21に該当し、ま
た第1の読出l、兼書込みポインタ37の1つ後から第
2の読出し兼書込みポインタ38までが第2の部分キュ
ー22に該当し、さらに第2の読出し兼書込みポインタ
38の1つ後から読出しポインタ35までが第3の部分
キュー23に該当する。
ポインタ37までが第1の部分キュー21に該当し、ま
た第1の読出l、兼書込みポインタ37の1つ後から第
2の読出し兼書込みポインタ38までが第2の部分キュ
ー22に該当し、さらに第2の読出し兼書込みポインタ
38の1つ後から読出しポインタ35までが第3の部分
キュー23に該当する。
これらの第1の部分キュー21と第2の部分キュー22
と第3の部分キュー23とを連結したものが連結キュー
20であり、また第1の読出し兼書込みポインタ37は
第1の部分キュー21の後側にあるデータの読出し位置
(読出しポインタ)と第2の部分キュー22の前側にあ
るデータの書き込み位置(書込みポインタ)とを兼ねて
おり、さらに第2の読出し書込みポインタ38は第2の
部分キュー22の後側にあるデータの読出し位置(読出
しポインタ)と第3の部分キュー23の前側にあるデー
タの書込み位置(書込みポインタ)とを兼ねている。
と第3の部分キュー23とを連結したものが連結キュー
20であり、また第1の読出し兼書込みポインタ37は
第1の部分キュー21の後側にあるデータの読出し位置
(読出しポインタ)と第2の部分キュー22の前側にあ
るデータの書き込み位置(書込みポインタ)とを兼ねて
おり、さらに第2の読出し書込みポインタ38は第2の
部分キュー22の後側にあるデータの読出し位置(読出
しポインタ)と第3の部分キュー23の前側にあるデー
タの書込み位置(書込みポインタ)とを兼ねている。
ここで、第2のプロセッサ2における第1のタスク2−
1によるデータの読出しが行われると第1の読出し兼書
込みポインタ37が1つ繰り上げられるので、第1の部
分キュー21から第2の部分キュー22へデータが1つ
与えられる。また、第2のプロセッサ2における第2の
タスクによるデータの読出しが行われると第2の読出し
兼書込みポインタ38が1つ繰り上げられるので、第2
の部分キュー22から第3の部分キュー23へデータが
1つ与えられる。
1によるデータの読出しが行われると第1の読出し兼書
込みポインタ37が1つ繰り上げられるので、第1の部
分キュー21から第2の部分キュー22へデータが1つ
与えられる。また、第2のプロセッサ2における第2の
タスクによるデータの読出しが行われると第2の読出し
兼書込みポインタ38が1つ繰り上げられるので、第2
の部分キュー22から第3の部分キュー23へデータが
1つ与えられる。
なお、第1の読出し兼書込みポインタ37、第2の読出
し兼書込みポインタ38および読出しポインタ35が書
込みポインタ34と同一の位置を共に示しているときに
は第1の部分キュー21、第2の部分キュー22および
第3の部分キュー23が共に空の状態である。また、第
1の読出し兼書込みポインタ37、第2の読出し兼書込
みポインタ38および読出しポインタ35が書込みポイ
ンタ34よりも1つ前の位置を共に示しているときには
第1の部分キュー21が満杯の状態であり、第2の部分
キュー22および第3の部分キュー23が共に空の状態
である。
し兼書込みポインタ38および読出しポインタ35が書
込みポインタ34と同一の位置を共に示しているときに
は第1の部分キュー21、第2の部分キュー22および
第3の部分キュー23が共に空の状態である。また、第
1の読出し兼書込みポインタ37、第2の読出し兼書込
みポインタ38および読出しポインタ35が書込みポイ
ンタ34よりも1つ前の位置を共に示しているときには
第1の部分キュー21が満杯の状態であり、第2の部分
キュー22および第3の部分キュー23が共に空の状態
である。
次に、第2図(b)に示した連結キュー13を利用して
第1図(C)に示した第1のプロセッサ1と第2のプロ
セッサ2間でバッファ内のメツセージを交換するときの
動作を第3図を参照して述べる。
第1図(C)に示した第1のプロセッサ1と第2のプロ
セッサ2間でバッファ内のメツセージを交換するときの
動作を第3図を参照して述べる。
まず、第1のプロセッサ1は共有メモリ3内のキュー領
域31に各データA、B、・・・1 Fを書込みポイン
タ34に従って書込むことにより連結キ二一13を形成
するに際し、各データA、B、C。
域31に各データA、B、・・・1 Fを書込みポイン
タ34に従って書込むことにより連結キ二一13を形成
するに際し、各データA、B、C。
D、E、Fとして共有メモリ3内の各バッファ41、A
、41B、41C,41D、41E、4]、Fのアドレ
スをそれぞれ書き込む。そして、第1のプロセッサ1は
第2のプロセッサ2に対して割り込みを行う。なお、第
1のプロセッサ1は第2のプロセッサ2に伝送すべきそ
れぞれのメツセージを該各バッファに予め書込んでおく
。
、41B、41C,41D、41E、4]、Fのアドレ
スをそれぞれ書き込む。そして、第1のプロセッサ1は
第2のプロセッサ2に対して割り込みを行う。なお、第
1のプロセッサ1は第2のプロセッサ2に伝送すべきそ
れぞれのメツセージを該各バッファに予め書込んでおく
。
第2のプロセッサ2は第1のプロセッサ1がらの割り込
みに応答して、連結キュー13の読出し兼書込みポイン
タ36の位置からデータAを読出し、このデータAっま
りバッファ4 ]、 Aのアドレスに基づいてバッファ
41Aをアクセスし、このバッファからメツセージを読
出す。こうして第1のプロセッサ1からのメツセージを
バッファ41Aから読出すと、第2のプロセッサ2は該
メツセージに対する応答メツセージをバッファ41Aに
書込み、バッファ41A内の記憶内容を更新する。
みに応答して、連結キュー13の読出し兼書込みポイン
タ36の位置からデータAを読出し、このデータAっま
りバッファ4 ]、 Aのアドレスに基づいてバッファ
41Aをアクセスし、このバッファからメツセージを読
出す。こうして第1のプロセッサ1からのメツセージを
バッファ41Aから読出すと、第2のプロセッサ2は該
メツセージに対する応答メツセージをバッファ41Aに
書込み、バッファ41A内の記憶内容を更新する。
このとき、読出し兼書込みポインタ36は1つ繰り上げ
られてデータBの位置を示し、また読出しポインタ34
はデータAの位置を示す。したがって、第1の部分キュ
ー11は各データB、C,DEFからなり、また第2の
部分キュー12はデータAからなる。
られてデータBの位置を示し、また読出しポインタ34
はデータAの位置を示す。したがって、第1の部分キュ
ー11は各データB、C,DEFからなり、また第2の
部分キュー12はデータAからなる。
引続き、第2のプロセッサ2は読出し兼書込みポインタ
36の位置からデータBを読出し、このデータBつまり
バッファ41 Bのアドレスに基づいてバッファ41B
をアクセスし、このバッファからメツセージを読出すと
ともに、該バッファに応答メツセージを書込んで記憶内
容を更新する。
36の位置からデータBを読出し、このデータBつまり
バッファ41 Bのアドレスに基づいてバッファ41B
をアクセスし、このバッファからメツセージを読出すと
ともに、該バッファに応答メツセージを書込んで記憶内
容を更新する。
このとき、読出し兼書込みポインタ36は1つ繰り上げ
られてデータCの位置を示し、また読出しポインタ35
はデータAの位置を示す。したがって、第1の部分キュ
ー11は各データC,D、EFからなり、また第2の部
分キュー12はデータA、Bからなる。
られてデータCの位置を示し、また読出しポインタ35
はデータAの位置を示す。したがって、第1の部分キュ
ー11は各データC,D、EFからなり、また第2の部
分キュー12はデータA、Bからなる。
以降同様に、第2のプロセッサ2は読出し兼書込みポイ
ンタ36に従って各データC,D、EFを順次読出し、
これらのデータつまりそれぞれのアドレスに基づいて各
バッファ41C,41D。
ンタ36に従って各データC,D、EFを順次読出し、
これらのデータつまりそれぞれのアドレスに基づいて各
バッファ41C,41D。
41E、41Fを順次アクセスし、これらのバッファか
らそれぞれのメツセージを順次読出すとともに、該各バ
ッファにそれぞれの応答メツセージを順次書込んでいく
。これに伴い、読出し兼書込みポインタ36は順次繰り
上げられ、書込みポインタ34と同一の位置に達する。
らそれぞれのメツセージを順次読出すとともに、該各バ
ッファにそれぞれの応答メツセージを順次書込んでいく
。これに伴い、読出し兼書込みポインタ36は順次繰り
上げられ、書込みポインタ34と同一の位置に達する。
このとき、第2のプロセッサ2は連結キュー13からの
データの読出しを終了する。
データの読出しを終了する。
一方、読出し兼書込みポインタ36が1つ繰り上げられ
る毎に、読出しポインタ35に従ってデータの読出しか
順次可能になるので、第1のプロセッサ1は第2の部分
キュー2から読出しポインタ35に従って各データA、
B、・・・を順次読出す。
る毎に、読出しポインタ35に従ってデータの読出しか
順次可能になるので、第1のプロセッサ1は第2の部分
キュー2から読出しポインタ35に従って各データA、
B、・・・を順次読出す。
そして、第1のプロセッサ1は各データA、 B・・
つまりそれぞれのアドレスに基づいて各バッファA、B
、 ・・・を順次アクセスし、これらのバッファからそ
れぞれの応答メツセージを順次読出す。
つまりそれぞれのアドレスに基づいて各バッファA、B
、 ・・・を順次アクセスし、これらのバッファからそ
れぞれの応答メツセージを順次読出す。
すなわち、連結キュー13に書込まれる各データA、B
、・・・とじて各バッファ41A、41B。
、・・・とじて各バッファ41A、41B。
・・のアドレスを設定すれば、第1のプロセッサlによ
って各バッファに書込まれたそれぞれのメツセージを第
2のプロセッサ2に順次伝送するとともに、第2のプロ
セッサ2によって該各バッファに書込まれたそれぞれの
応答メツセージを第1のプロセッサ1に順次返送するこ
とができる。しかも、このメツセージ交換は第1のプロ
セッサ1から第2のプロセッサ2への割り込み、および
第2のプロセッサ2から第1のプロセッサ1への割り込
みをそれぞれ1回行うだけで遂行され、またメツセージ
交換に際して連結キュー13に書込まれた各アドレスを
更新する必要がない。
って各バッファに書込まれたそれぞれのメツセージを第
2のプロセッサ2に順次伝送するとともに、第2のプロ
セッサ2によって該各バッファに書込まれたそれぞれの
応答メツセージを第1のプロセッサ1に順次返送するこ
とができる。しかも、このメツセージ交換は第1のプロ
セッサ1から第2のプロセッサ2への割り込み、および
第2のプロセッサ2から第1のプロセッサ1への割り込
みをそれぞれ1回行うだけで遂行され、またメツセージ
交換に際して連結キュー13に書込まれた各アドレスを
更新する必要がない。
また、第2図(c)に示したような3つの部分キューか
らなる連結キュー20においても第1のプロセッサ1は
各データとして各バッファのアドレスを書込むことがで
きる。この場合、第2のプロセッサ2における第1のタ
スク2−1は第1のプロセッサ1からの割り込みに応答
して第1の読出し兼書込みポインタ37からデータとし
て1つのアドレスを読出すと、このアドレスに基づいて
バッファをアクセスしてメツセージを読出し、該メツセ
ージに対して処理を施すことにより第1の応答メツセー
ジを形成する。そして、第1のタスク2−1は第1の応
答メツセージを該バッファに書込み、第2のタスク2−
2に対する割り込みを行う。第2のタスク2−2は第1
のタスク2−1からの割り込みに応答して第2の読出し
兼書込みポインタ38から該バッファのアドレスを読出
し、このバッファにアクセスして第1の応答メツセージ
を読出す。そして、第2のタスク2−2は第1の応答メ
ツセージに対して処理を施すことにより第2の応答メツ
セージを形成し、この第2の応答メツセージを該バッフ
ァに書込んで第1のプロセッサ]に割込みをかける。最
後に、第1のプロセッサ1はこの割込みに応答して読出
しポインタ35から該バッファのアドレスを読出し、こ
のバッファにアクセスして第2の応答メツセージを読出
す。このような一連の処理は複数のバッファのアドレス
を連結キュー20に順次書込めば、第1のプロセッサ1
から第2のプロセッサ2における第1のタスク2−1へ
の割り込みを一回行うだけで、各アドレス毎に順次行わ
れる。したがって、第1のプロセッサ1はメツセージを
書込んだバッファのアドレスを連結キュー20に順次書
込んでいくことにより、一連の処理を施された第2の応
答メツセージを順次得ることができ、第2のプロセッサ
2における第1のタスク2−1および第2のタスク2−
2による処理をパイプラインと見なすことができる°。
らなる連結キュー20においても第1のプロセッサ1は
各データとして各バッファのアドレスを書込むことがで
きる。この場合、第2のプロセッサ2における第1のタ
スク2−1は第1のプロセッサ1からの割り込みに応答
して第1の読出し兼書込みポインタ37からデータとし
て1つのアドレスを読出すと、このアドレスに基づいて
バッファをアクセスしてメツセージを読出し、該メツセ
ージに対して処理を施すことにより第1の応答メツセー
ジを形成する。そして、第1のタスク2−1は第1の応
答メツセージを該バッファに書込み、第2のタスク2−
2に対する割り込みを行う。第2のタスク2−2は第1
のタスク2−1からの割り込みに応答して第2の読出し
兼書込みポインタ38から該バッファのアドレスを読出
し、このバッファにアクセスして第1の応答メツセージ
を読出す。そして、第2のタスク2−2は第1の応答メ
ツセージに対して処理を施すことにより第2の応答メツ
セージを形成し、この第2の応答メツセージを該バッフ
ァに書込んで第1のプロセッサ]に割込みをかける。最
後に、第1のプロセッサ1はこの割込みに応答して読出
しポインタ35から該バッファのアドレスを読出し、こ
のバッファにアクセスして第2の応答メツセージを読出
す。このような一連の処理は複数のバッファのアドレス
を連結キュー20に順次書込めば、第1のプロセッサ1
から第2のプロセッサ2における第1のタスク2−1へ
の割り込みを一回行うだけで、各アドレス毎に順次行わ
れる。したがって、第1のプロセッサ1はメツセージを
書込んだバッファのアドレスを連結キュー20に順次書
込んでいくことにより、一連の処理を施された第2の応
答メツセージを順次得ることができ、第2のプロセッサ
2における第1のタスク2−1および第2のタスク2−
2による処理をパイプラインと見なすことができる°。
このようなパイプラインとしての処理は第2のプロセ
ッサにおける一連の各タスクだけに限られるものでなく
、第2のプロセッサ。
ッサにおける一連の各タスクだけに限られるものでなく
、第2のプロセッサ。
第3のプロセッサ、・・・というような一連の各プロセ
ッサにおいてもなしうる。
ッサにおいてもなしうる。
なお、第2図に示したそれぞれのキュー、および第3図
に示したバッファは第9図に示したマルチプロセッサシ
ステムにおいては主共有メモリ113内に形成され、第
10図に示したマルチプロセッサシステムにおいては主
共有メモリ113または副共有メモリ116内に形成さ
れることはいうまでもない。
に示したバッファは第9図に示したマルチプロセッサシ
ステムにおいては主共有メモリ113内に形成され、第
10図に示したマルチプロセッサシステムにおいては主
共有メモリ113または副共有メモリ116内に形成さ
れることはいうまでもない。
ところで、多数のプロセッサの相互間で様々なデータ通
信を行う場合は、各データ通信のためのそれぞれのキュ
ーを逐一形成する必要があり、データ通信の種類か膨大
になれば、キューの数も膨大となる。例えば第1.第2
のプロセッサ相互間のデータ通信を行うための連結キュ
ーζ第3.第4、第5のプロセッサ相互間のデータ通信
を行うための連結キュー、第1と第5のプロセッサ相互
間のデータ通信を行うための連結キュー等、数多くの連
結キューを必要とする場合がある。このため、本発明に
係わるマルチプロセッサシステムにおいては複数のキュ
ーを管理するようにしている。
信を行う場合は、各データ通信のためのそれぞれのキュ
ーを逐一形成する必要があり、データ通信の種類か膨大
になれば、キューの数も膨大となる。例えば第1.第2
のプロセッサ相互間のデータ通信を行うための連結キュ
ーζ第3.第4、第5のプロセッサ相互間のデータ通信
を行うための連結キュー、第1と第5のプロセッサ相互
間のデータ通信を行うための連結キュー等、数多くの連
結キューを必要とする場合がある。このため、本発明に
係わるマルチプロセッサシステムにおいては複数のキュ
ーを管理するようにしている。
第4図はキューを管理するためのキュー管理テーブルの
構造を示している。このキュー管理テーブルは例えば第
10図に示した各プロセッサ112にそれぞれ与えられ
、これらのプロセッサ112はそれぞれが所有するキュ
ー管理テーブルをそれぞれの副共有メモリ116に格納
する。このキュー管理テーブルには1つのプロセッサ1
]2が自己の副共有メモリ1]6内に所有する複数のキ
ューについてのそれぞれの管理データを登録することが
可能である。
構造を示している。このキュー管理テーブルは例えば第
10図に示した各プロセッサ112にそれぞれ与えられ
、これらのプロセッサ112はそれぞれが所有するキュ
ー管理テーブルをそれぞれの副共有メモリ116に格納
する。このキュー管理テーブルには1つのプロセッサ1
]2が自己の副共有メモリ1]6内に所有する複数のキ
ューについてのそれぞれの管理データを登録することが
可能である。
このキュー管理テーブルにおいては、複数のキューに与
えられたそれぞれの名称#1〜#nカ(登録されており
、これらのキューのうちの例え:fキュー#〕が連結キ
ューであるならば、キュー#]の管理データとしてキュ
ーの連結数m1つまり部分キューの数、複数の受取り手
の識別子81〜Sm1つまり読出しポインタおよび複数
の読出し兼書込みポインタからデータを読出すそれぞれ
の受取り手(プロセッサまたはプロセッサ内のタスク等
)を示す各識別子、連結キューの開始アドレス並びに終
了アドレスつまり共有メモリ内での連結キューの位置、
連結キューの書込みポインタ、および前記各識別子に対
応する複数の読出し兼書込みポインタR1〜RmL−1
と読出しポインタRmlが登録されている。ここで、キ
ュー#1が第2図(C)に示したような3つの部分キュ
ーからなる連結キューであるとすると、キュー#1の管
理データとしてキューの連結数ml= 3.3つの受取
り手の識別子5l−33、共有メモリ内の該連結キュー
の位置、書込みポインタ、および3つの受取り手がデー
タをそれぞれ読出す位置を示す2つの読出し兼書込みポ
インタR1〜R2と読出しポインタR3を登録すること
となる。たたし、各受取り手の識別子は後述するように
受取り手が所望時に登録するものである。
えられたそれぞれの名称#1〜#nカ(登録されており
、これらのキューのうちの例え:fキュー#〕が連結キ
ューであるならば、キュー#]の管理データとしてキュ
ーの連結数m1つまり部分キューの数、複数の受取り手
の識別子81〜Sm1つまり読出しポインタおよび複数
の読出し兼書込みポインタからデータを読出すそれぞれ
の受取り手(プロセッサまたはプロセッサ内のタスク等
)を示す各識別子、連結キューの開始アドレス並びに終
了アドレスつまり共有メモリ内での連結キューの位置、
連結キューの書込みポインタ、および前記各識別子に対
応する複数の読出し兼書込みポインタR1〜RmL−1
と読出しポインタRmlが登録されている。ここで、キ
ュー#1が第2図(C)に示したような3つの部分キュ
ーからなる連結キューであるとすると、キュー#1の管
理データとしてキューの連結数ml= 3.3つの受取
り手の識別子5l−33、共有メモリ内の該連結キュー
の位置、書込みポインタ、および3つの受取り手がデー
タをそれぞれ読出す位置を示す2つの読出し兼書込みポ
インタR1〜R2と読出しポインタR3を登録すること
となる。たたし、各受取り手の識別子は後述するように
受取り手が所望時に登録するものである。
なお、例えばキュー#2が第2図(a)に示したような
1つの読出しポインタのみを有するキューであるならば
、キュー#2の管理データとしてキューの連結散気1−
1.1つの受取り手の識別子S1、共有メモリ内の該キ
ューの位置、書込みポインタ、および1つの受取り手が
データを読出す位置を示す読出しポインタ)?mlが登
録されることとなる。
1つの読出しポインタのみを有するキューであるならば
、キュー#2の管理データとしてキューの連結散気1−
1.1つの受取り手の識別子S1、共有メモリ内の該キ
ューの位置、書込みポインタ、および1つの受取り手が
データを読出す位置を示す読出しポインタ)?mlが登
録されることとなる。
こうしてプロセッサ毎のキュー管理テーブルを第10図
に示した各副共有メモリ116内にそれぞれ形成した場
合、これらのキュー管理テーブルをいずれのプロセッサ
からもアクセスしうるようにしなければ、該各キュー管
理テーブルによって管理される多数のキューを充分に活
用することはできない。そこで、該各キュー管理テーブ
ルの位置を登録した第5図に示すようなポインタテーブ
ルを第10図に示した主共有メモリ113内に形成する
。
に示した各副共有メモリ116内にそれぞれ形成した場
合、これらのキュー管理テーブルをいずれのプロセッサ
からもアクセスしうるようにしなければ、該各キュー管
理テーブルによって管理される多数のキューを充分に活
用することはできない。そこで、該各キュー管理テーブ
ルの位置を登録した第5図に示すようなポインタテーブ
ルを第10図に示した主共有メモリ113内に形成する
。
このポインタテーブルには各プロセッサ112に与えら
れたそれぞれの名称#P1−〜# P n−、これらの
プロセッサ#P1〜#Pnが所有する各キュー管理テー
ブルの位置を示すそれぞれのポインタ、および該各キュ
ー管理テーブルによって管理されるそれぞれのキューの
数が登録されている。
れたそれぞれの名称#P1−〜# P n−、これらの
プロセッサ#P1〜#Pnが所有する各キュー管理テー
ブルの位置を示すそれぞれのポインタ、および該各キュ
ー管理テーブルによって管理されるそれぞれのキューの
数が登録されている。
なお、このポインタテーブルは初期化に際して予め定め
られた情報が1度書込まれれば、内容の変降を頻繁に行
う必要がないので、システムの中心となる1つのプロセ
ッサが他のプロセッサに先んじて該初期化を1度行えば
済む。
られた情報が1度書込まれれば、内容の変降を頻繁に行
う必要がないので、システムの中心となる1つのプロセ
ッサが他のプロセッサに先んじて該初期化を1度行えば
済む。
このように第5図に示したポインタテーブルを第10図
に示した主共用メモリ113内に形成するとともに、第
4図に示したキュー管理テーブルを第10図に示した各
プロセッサ112毎の副共用メモリ116内に形成して
おけば、プロセッサ112は主共用メモリ113内のポ
インタテーブルをアクセスして該ポインタテーブルに基
づき他のプロセッサが所有するキュー管理テーブルをア
クセスすることができ、更に該キュー管理テーブルに基
づき所望のキューにアクセスすることができる。すなわ
ち、各プロセッサ1]2はシステムにおける全てのキュ
ーに対してそれぞれアクセスすることができ、これによ
り多数のキューを活用することが可能となる。
に示した主共用メモリ113内に形成するとともに、第
4図に示したキュー管理テーブルを第10図に示した各
プロセッサ112毎の副共用メモリ116内に形成して
おけば、プロセッサ112は主共用メモリ113内のポ
インタテーブルをアクセスして該ポインタテーブルに基
づき他のプロセッサが所有するキュー管理テーブルをア
クセスすることができ、更に該キュー管理テーブルに基
づき所望のキューにアクセスすることができる。すなわ
ち、各プロセッサ1]2はシステムにおける全てのキュ
ーに対してそれぞれアクセスすることができ、これによ
り多数のキューを活用することが可能となる。
さて、マルチプロセッサにおいて多数のキュを利用して
通信を行っている場合には、第4図に示したキュー管理
テーブルおよび第5図に示したポインタテーブルを参照
して通信を遂行していく必要があり、このための動作を
次に述べる。
通信を行っている場合には、第4図に示したキュー管理
テーブルおよび第5図に示したポインタテーブルを参照
して通信を遂行していく必要があり、このための動作を
次に述べる。
まず、第6図のフローチャートに従って所定のキューか
らデータを読出ずときの動作を述べる。
らデータを読出ずときの動作を述べる。
いま、例えば第1図(C)に示した第2のプロセッサ2
における第1のタスク2−1が処理を実行しているに際
し、第1のプロセッサ1が所有するキューからのデータ
読出し命令が発生すると、まず第2のプロセッサ2は第
5図に示したポインタテーブルをアクセスする。
における第1のタスク2−1が処理を実行しているに際
し、第1のプロセッサ1が所有するキューからのデータ
読出し命令が発生すると、まず第2のプロセッサ2は第
5図に示したポインタテーブルをアクセスする。
第2のプロセッサ2はポインタテーブルをアクセスする
と、前記読出し命令に伴って与えられたキュー識別子に
よって示される第1のプロセッサ1がポインタテーブル
に登録されているか否かを判別する(ステップ101)
。ただし、このキュー識別子は所定のプロセッサばかり
でなく、該プロセッサが所有する所定のキューおよび該
キューにおける所定の読出し兼書込みポインタをも示し
ている。
と、前記読出し命令に伴って与えられたキュー識別子に
よって示される第1のプロセッサ1がポインタテーブル
に登録されているか否かを判別する(ステップ101)
。ただし、このキュー識別子は所定のプロセッサばかり
でなく、該プロセッサが所有する所定のキューおよび該
キューにおける所定の読出し兼書込みポインタをも示し
ている。
ここで、前記キュー識別子に応じた第1のプロセッサ1
の登録がなければ(ステップ102.NO)、この処理
を終了する(ステップ103)。
の登録がなければ(ステップ102.NO)、この処理
を終了する(ステップ103)。
また、このキュー識別子に応じた第1のプロセッサ1の
登録があれば(ステップ102.YES)、第2のプロ
セッサ2は第1のプロセッサ1のキュー管理テーブルの
ポインタをポインタテーブルから読出し、このポインタ
に基づいて第1のプロセッサ]のキュー管理テーブルを
アクセスする(ステップ104)。
登録があれば(ステップ102.YES)、第2のプロ
セッサ2は第1のプロセッサ1のキュー管理テーブルの
ポインタをポインタテーブルから読出し、このポインタ
に基づいて第1のプロセッサ]のキュー管理テーブルを
アクセスする(ステップ104)。
第1のプロセッサ1のキュー管理テーブルとして第4図
に示したキュー管理テーブルがアクセスされ、前記キュ
ー識別子が第1のプロセッサ1と共にキュー#]および
読出し兼書込ろポインタ旧を示しているとすると、第2
のプロセッサ2は該キュー管理テーブルおけるキュー#
1のキュー開始アドレスと終了アドレス、および読出し
兼書込みポインタR1等を参照し、これらに基づいてキ
ュー#1−をアクセスする。
に示したキュー管理テーブルがアクセスされ、前記キュ
ー識別子が第1のプロセッサ1と共にキュー#]および
読出し兼書込ろポインタ旧を示しているとすると、第2
のプロセッサ2は該キュー管理テーブルおけるキュー#
1のキュー開始アドレスと終了アドレス、および読出し
兼書込みポインタR1等を参照し、これらに基づいてキ
ュー#1−をアクセスする。
ここで、キュー#1が第2図(c)に示したような連結
キュー20であり、読出し兼書込みポインタR1が第1
の読出し兼書込みポインタ37であるとすると、第2の
プロセッサ2は第1の読出し兼書込みポインタ37が書
込みポインタ34に一致するか否かにより連結キュー2
0における第1の部分キュー21が空か否かを判定する
(ステップ105)。そして、第]の読出し兼書込みポ
インタ37が書込みポインタ34に一致しており、よっ
て第1の部分キュー21が空であるならば(ステップ1
05.YES)、この処理を終了する(ステップ106
)。
キュー20であり、読出し兼書込みポインタR1が第1
の読出し兼書込みポインタ37であるとすると、第2の
プロセッサ2は第1の読出し兼書込みポインタ37が書
込みポインタ34に一致するか否かにより連結キュー2
0における第1の部分キュー21が空か否かを判定する
(ステップ105)。そして、第]の読出し兼書込みポ
インタ37が書込みポインタ34に一致しており、よっ
て第1の部分キュー21が空であるならば(ステップ1
05.YES)、この処理を終了する(ステップ106
)。
また、第1の読出し兼書込みポインタ37が書込みポイ
ンタ34に一致しておらず、よって第1の部分キュー2
1が空でなければ(ステップ105、NO) 、第2の
プロセッサ2における第1のタスク2−1は第]の読出
し兼書込みポインタ37からデータを読出す(ステップ
107)。このとき、第1の読出し兼書込みポインタ3
7が1つ繰上げられるが、これにより第1の読出し兼書
込みポインタ37が書込みポインタ34に達しなければ
、第1の部分キュー21からのデータの読出しを順次行
い、第1の読出し兼書込みポインタ37と書込みポイン
タ34が一致すると読出しを終了する。
ンタ34に一致しておらず、よって第1の部分キュー2
1が空でなければ(ステップ105、NO) 、第2の
プロセッサ2における第1のタスク2−1は第]の読出
し兼書込みポインタ37からデータを読出す(ステップ
107)。このとき、第1の読出し兼書込みポインタ3
7が1つ繰上げられるが、これにより第1の読出し兼書
込みポインタ37が書込みポインタ34に達しなければ
、第1の部分キュー21からのデータの読出しを順次行
い、第1の読出し兼書込みポインタ37と書込みポイン
タ34が一致すると読出しを終了する。
こうして第1の部分キュー37からのデータの読出しを
終了すると、第2のプロセッサ2はキュー管理テーブル
において読出し兼書込みポインタR1(第1の読出し兼
書込みポインタ37)に引き続く読出し兼書込みポイン
タR2に対応する受取り手の識別子S2が第1のプロセ
ッサ1のキュー管理テーブルに登録されているか否かを
判定する(ステップ108)。ここで、受取り手の識別
子S2か登録されていなければ(ステップ108.NO
)、第2のプロセッサ2における第1のタスク2−1か
らキュー#1へのアクセスを終了する(ステップ]09
)。また、受取り手の識別子S2が登録されていれば(
ステップ108.YES)、第2のプロセッサ2は受取
り手の識別子S2に基づいて読出し兼書込みポインタR
2からデータを読出すために待機しているプロセッサお
よび該プロセッサに対する割込ろの種類を判別し、この
プロセッサに対して該種類の割込みを行う(ステップ1
]O)。
終了すると、第2のプロセッサ2はキュー管理テーブル
において読出し兼書込みポインタR1(第1の読出し兼
書込みポインタ37)に引き続く読出し兼書込みポイン
タR2に対応する受取り手の識別子S2が第1のプロセ
ッサ1のキュー管理テーブルに登録されているか否かを
判定する(ステップ108)。ここで、受取り手の識別
子S2か登録されていなければ(ステップ108.NO
)、第2のプロセッサ2における第1のタスク2−1か
らキュー#1へのアクセスを終了する(ステップ]09
)。また、受取り手の識別子S2が登録されていれば(
ステップ108.YES)、第2のプロセッサ2は受取
り手の識別子S2に基づいて読出し兼書込みポインタR
2からデータを読出すために待機しているプロセッサお
よび該プロセッサに対する割込ろの種類を判別し、この
プロセッサに対して該種類の割込みを行う(ステップ1
]O)。
例えば読出し兼書込みポインタR2(第2の読出し兼書
込みポインタ38)からデータを読出すために待機して
いるプロセッサとして第2のプロセッサ2が、および割
込みの種類として第2のタスク2−2への割込みが受取
り手の識別子S2として登録されていたならば、第2の
プロセッサ2は第2のタスク2−2への割込みを行うこ
ととなる。この後、第2のプロセッサ2における第1の
タスクは前記ステップ109に移って処理を終了する。
込みポインタ38)からデータを読出すために待機して
いるプロセッサとして第2のプロセッサ2が、および割
込みの種類として第2のタスク2−2への割込みが受取
り手の識別子S2として登録されていたならば、第2の
プロセッサ2は第2のタスク2−2への割込みを行うこ
ととなる。この後、第2のプロセッサ2における第1の
タスクは前記ステップ109に移って処理を終了する。
このような第6図に示したフローチャートの処理はプロ
セッサにおけるタスクがプログラムの実行中にキューを
アクセスし、該キューからデータを直ちに得ることがで
きたものであり、プロセッサにおけるタスクへの割込み
を伴わずに遂行される。
セッサにおけるタスクがプログラムの実行中にキューを
アクセスし、該キューからデータを直ちに得ることがで
きたものであり、プロセッサにおけるタスクへの割込み
を伴わずに遂行される。
なお、キュー管理テーブルにおける受取り手識別子は受
取り手(タスク)が属しているプロセッサ、および該受
取り手に割込みをかけるための割込みの種類を示す情報
を含んでいる。すなわち、受取り手識別子はいずれのプ
ロセッサにどのような割込みをかければ良いかを一意に
決定する。このため、1つのプロセッサ内の受取り手の
数に相当する割込みの種類を用意する必要があるが、割
込みの種類をハードウェアで区別して用意しても良いし
、また割込みの種類を識別するためのフラグを割込みの
種類に応じた数たけ共有メモリ内に予め設定しておき、
これらのフラッグと1種類のハードウェアによる割込み
とを組合わせて各側込みを区別しうるようにしても良い
。後者のようにフラッグを用いる場合、割込みをかける
側はまずフラグをセットしてからハードウェアの割込み
を発生し、割込みを受ける側は予め設定された割込み処
理ルーチンにより該フラッグを参照して割込みの種類を
区別し、この種類に対応する受けとり側に割込みが発生
するようにする。ただし、複数のフラッグがセットされ
ていれば、複数の割込みが発生したものとして処理する
。
取り手(タスク)が属しているプロセッサ、および該受
取り手に割込みをかけるための割込みの種類を示す情報
を含んでいる。すなわち、受取り手識別子はいずれのプ
ロセッサにどのような割込みをかければ良いかを一意に
決定する。このため、1つのプロセッサ内の受取り手の
数に相当する割込みの種類を用意する必要があるが、割
込みの種類をハードウェアで区別して用意しても良いし
、また割込みの種類を識別するためのフラグを割込みの
種類に応じた数たけ共有メモリ内に予め設定しておき、
これらのフラッグと1種類のハードウェアによる割込み
とを組合わせて各側込みを区別しうるようにしても良い
。後者のようにフラッグを用いる場合、割込みをかける
側はまずフラグをセットしてからハードウェアの割込み
を発生し、割込みを受ける側は予め設定された割込み処
理ルーチンにより該フラッグを参照して割込みの種類を
区別し、この種類に対応する受けとり側に割込みが発生
するようにする。ただし、複数のフラッグがセットされ
ていれば、複数の割込みが発生したものとして処理する
。
次に、割込みの発生に伴ってキューをアクセスするとき
の処理を第7図のフローチャー1・に従って述べる。
の処理を第7図のフローチャー1・に従って述べる。
いま、例えば第1図(c)に示した第2のプロセッサ2
における第2のタスク2−2が処理を実行しているに際
し、第1のプロセッサ1が所有するキューからのデータ
読出し命令が発生すると、まず第2のプロセッサ2は第
5図に示したポインタテーブルをアクセスし、前記読出
し命令に伴って与えられたキュー識別子によって示され
る第]のプロセッサ1がポインタテーブルに登録されて
いるか否かを判別する(ステップ201)。ここで、こ
のキュー識別子に応じた第1のプロセッサ1の登録がな
ければ(ステップ202.No)、処理を終了する(ス
テップ203)。また、このキュー識別子に応じた第1
のプロセッサ】の登録があれば(ステップ202.YE
S)、第2のプロセッサ2は第1のプロセッサ1のキュ
ー管理テーブルのポインタをポインタテーブルから読出
し、このポインタに基づいて第1のプロセッサ1のキュ
ー管理テーブルをアクセスする(ステップ2゜4)。な
お、第2のプロセッサ2は先に述べた第1のタスク2−
1についての処理に際し、既に検索した第1のプロセッ
サ1のキュー管理テーブルのポインタを記憶していれば
、第1のプロセッサ1のキュー管理テーブルのポインタ
が変更されることはないので、前記各ステップ201,
202を省略することができる。
における第2のタスク2−2が処理を実行しているに際
し、第1のプロセッサ1が所有するキューからのデータ
読出し命令が発生すると、まず第2のプロセッサ2は第
5図に示したポインタテーブルをアクセスし、前記読出
し命令に伴って与えられたキュー識別子によって示され
る第]のプロセッサ1がポインタテーブルに登録されて
いるか否かを判別する(ステップ201)。ここで、こ
のキュー識別子に応じた第1のプロセッサ1の登録がな
ければ(ステップ202.No)、処理を終了する(ス
テップ203)。また、このキュー識別子に応じた第1
のプロセッサ】の登録があれば(ステップ202.YE
S)、第2のプロセッサ2は第1のプロセッサ1のキュ
ー管理テーブルのポインタをポインタテーブルから読出
し、このポインタに基づいて第1のプロセッサ1のキュ
ー管理テーブルをアクセスする(ステップ2゜4)。な
お、第2のプロセッサ2は先に述べた第1のタスク2−
1についての処理に際し、既に検索した第1のプロセッ
サ1のキュー管理テーブルのポインタを記憶していれば
、第1のプロセッサ1のキュー管理テーブルのポインタ
が変更されることはないので、前記各ステップ201,
202を省略することができる。
第1のプロセッサ1のキュー管理テーブルとして第4図
に示したキュー管理テーブルがアクセスされ、前記キュ
ー識別子が第1のプロセッサ1と共にキュー#1および
読出し兼書込ろポインタR2を示しているとすると、第
2のプロセッサ2は該キュー管理テーブルにおけるキュ
ー#1のキュー開始アドレスと終了アドレス、および読
出し兼書込みポインタR2等を参照し、これらに基づい
てキュー#1をアクセスする。
に示したキュー管理テーブルがアクセスされ、前記キュ
ー識別子が第1のプロセッサ1と共にキュー#1および
読出し兼書込ろポインタR2を示しているとすると、第
2のプロセッサ2は該キュー管理テーブルにおけるキュ
ー#1のキュー開始アドレスと終了アドレス、および読
出し兼書込みポインタR2等を参照し、これらに基づい
てキュー#1をアクセスする。
ここで、キュー#1が第2図(C)に示すような構造を
有する連結キュー20であり、読出し兼書込みポインタ
R2が第2の読出し兼書込みポインタ38を示している
とすると、第2のプロセッサ2は第2の読出し兼書込み
ポインタ38が第1の読出し書込みポインタ37に一致
するが否かにより連結キュー20における第2の部分キ
ュー22が空か否かを判定する(ステップ2o5)。そ
して、第2の部分キュー22が空てなければ(ステップ
205.NO) 、第2のプロセッサ2における第2の
タスクは第2の読出し兼書込みポインタ38が第1の読
出し兼書込みポインタ37に達するまで第2の読出し兼
書込みポインタ38からデ−夕を読出す(ステップ20
6)。
有する連結キュー20であり、読出し兼書込みポインタ
R2が第2の読出し兼書込みポインタ38を示している
とすると、第2のプロセッサ2は第2の読出し兼書込み
ポインタ38が第1の読出し書込みポインタ37に一致
するが否かにより連結キュー20における第2の部分キ
ュー22が空か否かを判定する(ステップ2o5)。そ
して、第2の部分キュー22が空てなければ(ステップ
205.NO) 、第2のプロセッサ2における第2の
タスクは第2の読出し兼書込みポインタ38が第1の読
出し兼書込みポインタ37に達するまで第2の読出し兼
書込みポインタ38からデ−夕を読出す(ステップ20
6)。
また、前記ステップ205で第2の部分キュー22が空
であると判定されると(ステップ205゜YES) 、
第2のプロセッサ2における第2のタスク2−2は第1
のプロセッサ1のキュー管理テーブルにおけるキュー#
1の読出し兼書込みポインタR2に対応する受取り手の
識別子S2として当該第2のタスク2−2の識別子を登
録し、割込みがあるまで待機する(ステップ207)。
であると判定されると(ステップ205゜YES) 、
第2のプロセッサ2における第2のタスク2−2は第1
のプロセッサ1のキュー管理テーブルにおけるキュー#
1の読出し兼書込みポインタR2に対応する受取り手の
識別子S2として当該第2のタスク2−2の識別子を登
録し、割込みがあるまで待機する(ステップ207)。
したがって、この処理においてはアクセスしたキューが
空であれば、自己の識別子を相手のキュー管理テーブル
に登録し、この後刻込みがあるまで待機することとなる
。
空であれば、自己の識別子を相手のキュー管理テーブル
に登録し、この後刻込みがあるまで待機することとなる
。
ここで、例えば第2のプロセッサ2における第1のタス
ク2−1がキュー#1にアクセスし、第1の読出し兼書
込みポインタ37からデータを読出したとすると、第1
の読出し兼書込みポインタ37が繰上げられるので、第
1の読出し兼書込みポインタ37の1つ後から第2の読
出し兼書込みポインタ38まで、の第2の部分キュー2
2は空でなくなる。そして、第1のタスク2−1による
データの読出しが終了すると、第2のプロセッサ2は第
2の読出し兼書込みポインタ38(読出し兼書込みポイ
ンタR2)に対応する受取り手の識別子S2がキュー管
理テーブルに登録されているか否かを判定する。ここで
は、この受取り手の識別子S2として第2のタスク2−
2の識別子を先に登録しておいたので、第2のプロセッ
サ2は第2タスク2−2の識別子に対応する種類の割込
みを当該第2のプロセッサ2で発生することとなる。
ク2−1がキュー#1にアクセスし、第1の読出し兼書
込みポインタ37からデータを読出したとすると、第1
の読出し兼書込みポインタ37が繰上げられるので、第
1の読出し兼書込みポインタ37の1つ後から第2の読
出し兼書込みポインタ38まで、の第2の部分キュー2
2は空でなくなる。そして、第1のタスク2−1による
データの読出しが終了すると、第2のプロセッサ2は第
2の読出し兼書込みポインタ38(読出し兼書込みポイ
ンタR2)に対応する受取り手の識別子S2がキュー管
理テーブルに登録されているか否かを判定する。ここで
は、この受取り手の識別子S2として第2のタスク2−
2の識別子を先に登録しておいたので、第2のプロセッ
サ2は第2タスク2−2の識別子に対応する種類の割込
みを当該第2のプロセッサ2で発生することとなる。
第2のプロセッサ2は該割込みを割込み処理ルーチンで
受け(ステップ301)、この割込みの種類に応じて第
2のタスク2−2に割込みをかけ(ステップ302)、
割込み処理を終了する(ステップ303)。
受け(ステップ301)、この割込みの種類に応じて第
2のタスク2−2に割込みをかけ(ステップ302)、
割込み処理を終了する(ステップ303)。
第2のプロセッサ2における第2のタスク22は当該第
2のタスク2−2の識別子を受取り手識別子S2として
キュー管理テーブルに登録した後に待機していたが、前
記割込みを受けると該識別子をキュー管理テーブルから
消去する(ステップ208)。
2のタスク2−2の識別子を受取り手識別子S2として
キュー管理テーブルに登録した後に待機していたが、前
記割込みを受けると該識別子をキュー管理テーブルから
消去する(ステップ208)。
そして、第2のプロセッサ2における第2のタスク2−
2はキュー#1に再びアクセスし、第2の部分キュー2
2が空になるまで第2の読出し兼書込みポインタ38か
らデータを読出す(ステップ206)。
2はキュー#1に再びアクセスし、第2の部分キュー2
2が空になるまで第2の読出し兼書込みポインタ38か
らデータを読出す(ステップ206)。
こうして第2の部分キュー22からのデータの読出しを
終了すると、第2のプロセッサ2は第2の読出し兼書込
みポインタ38に引き続く他の読出し兼書込みポインタ
に対応する受取り手の識別子がキュー管理テーブルに登
録されているか否かを判定しくステップ209)、登録
されていなければ(ステップ209.No) 、第2の
タスク2−2によるキュー#1へのアクセスを終了する
(ステップ210)。また、受取り手の識別子が登録さ
れていれば(ステップ209.YES)、第2のプロセ
ッサ2は該識別子に応じた割込みを発生しくステップ2
11)、この処理を終了する(ステップ210)。
終了すると、第2のプロセッサ2は第2の読出し兼書込
みポインタ38に引き続く他の読出し兼書込みポインタ
に対応する受取り手の識別子がキュー管理テーブルに登
録されているか否かを判定しくステップ209)、登録
されていなければ(ステップ209.No) 、第2の
タスク2−2によるキュー#1へのアクセスを終了する
(ステップ210)。また、受取り手の識別子が登録さ
れていれば(ステップ209.YES)、第2のプロセ
ッサ2は該識別子に応じた割込みを発生しくステップ2
11)、この処理を終了する(ステップ210)。
なお、第2の読出し兼書込みポインタ38にりき続く他
の読出し兼書込みポインタに対応する受取り手の識別子
として、第2図(C)に示した読出しポインタ35を有
する第1のプロセッサ1の識別子をキュー管理テーブル
に登録することができる。この場合、第1のプロセッサ
1が読出しポインタ35に対応する受取り手の識別子と
して自己の識別子をキュー管理テーブルに登録し、この
後に第1のプロセッサ1は第2のプロセッサ2からの割
込みを待機する。そして、第1のプロセッサ1は該割込
みを受けると、第3の部分キュー23が空になるまで続
出しポインタ35からデータを読出す。
の読出し兼書込みポインタに対応する受取り手の識別子
として、第2図(C)に示した読出しポインタ35を有
する第1のプロセッサ1の識別子をキュー管理テーブル
に登録することができる。この場合、第1のプロセッサ
1が読出しポインタ35に対応する受取り手の識別子と
して自己の識別子をキュー管理テーブルに登録し、この
後に第1のプロセッサ1は第2のプロセッサ2からの割
込みを待機する。そして、第1のプロセッサ1は該割込
みを受けると、第3の部分キュー23が空になるまで続
出しポインタ35からデータを読出す。
このような第7図に示したフローチャー1・の処理はプ
ロセッサにおけるタスクかキューからブタを得ることが
できなくても、プロセッサにおけるタスクの識別子をキ
ュー管理テーブルに登録して割込みを待機すれば、該キ
ューからデータを得ることができるというものである。
ロセッサにおけるタスクかキューからブタを得ることが
できなくても、プロセッサにおけるタスクの識別子をキ
ュー管理テーブルに登録して割込みを待機すれば、該キ
ューからデータを得ることができるというものである。
次に、第8図のフローチャートに従ってキューにデータ
を書込むときの動作を述べる。
を書込むときの動作を述べる。
いま、例えば第1図(c)に示した第1のプロセッサ1
が処理を実行しているに際し、所定のプロセッサが所有
するキューへの書込み命令が発生すると、まず第1のプ
ロセッサ]は第5図に示したポインタテーブルをアクセ
スし、前記読出し命令に伴って与えられたキュー識別子
によって示される所定のプロセッサがポインタテーブル
に登録されているか否かを判別する(ステップ401)
。
が処理を実行しているに際し、所定のプロセッサが所有
するキューへの書込み命令が発生すると、まず第1のプ
ロセッサ]は第5図に示したポインタテーブルをアクセ
スし、前記読出し命令に伴って与えられたキュー識別子
によって示される所定のプロセッサがポインタテーブル
に登録されているか否かを判別する(ステップ401)
。
ここで、このキュー識別子に応じた所定のプロセッサの
登録がなければ(ステップ402.No)、処理を終了
する(ステップ403)。また、このキュー識別子に応
じた所定のプロセッサの登録があれば(ステップ402
.YES) 、第1のプロセッサ]は所定のプロセッサ
のキュー管理テーブルのポインタをポインタテーブルか
ら読出し、このポインタに基づいて所定のプロセッサの
キュー管理テーブルをアクセスする(ステップ404)
。
登録がなければ(ステップ402.No)、処理を終了
する(ステップ403)。また、このキュー識別子に応
じた所定のプロセッサの登録があれば(ステップ402
.YES) 、第1のプロセッサ]は所定のプロセッサ
のキュー管理テーブルのポインタをポインタテーブルか
ら読出し、このポインタに基づいて所定のプロセッサの
キュー管理テーブルをアクセスする(ステップ404)
。
なお、第1のプロセッサ1が自己のキューをアクセスす
る場合は、自己のキュー管理テーブルのポインタを検索
する必要がないので、前記各ステップ401..402
を省略することができる。
る場合は、自己のキュー管理テーブルのポインタを検索
する必要がないので、前記各ステップ401..402
を省略することができる。
第1のプロセッサ1が自己のキュー管理テーブルをアク
セスしたとし、このキュー管理テーブルが第4図に示し
たキュー管理テーブルであって、前記キュー識別子がキ
ュー#]および書込みポインタを示しているとすると、
第1のプロセッサ1は該キュー管理テーブルにおけるキ
ュー#]のキュー開始アドレスと終了アドレス、および
書込みポインタ等を参照し、これらに基づいてキュー#
1をアクセスする。
セスしたとし、このキュー管理テーブルが第4図に示し
たキュー管理テーブルであって、前記キュー識別子がキ
ュー#]および書込みポインタを示しているとすると、
第1のプロセッサ1は該キュー管理テーブルにおけるキ
ュー#]のキュー開始アドレスと終了アドレス、および
書込みポインタ等を参照し、これらに基づいてキュー#
1をアクセスする。
ここで、キュー#1が第2図(C)に示すような連結キ
ュー20であり、前記キュー識別子が書込みポインタ3
4を示しているとすると、第1のプロセッサ1は書込み
ポインタ34の1つ前に読出しポインタ35が位置する
か否かにより連結キュー20が満杯か否かを判定する(
ステップ405)。ここで、連結キュー20が満杯であ
れば(ステップ405.YES) 、連結キュー20に
データを書込むことができないので、この処理を終了す
る(ステップ406)。また、連結キュー20が満杯で
なければ(ステップ405.No)、第1のプロセッサ
1は書込みポインタ34にデータを書込む(ステップ4
06)。このとき、書込みポインタ34が1つ繰上げら
れるが、これにより書込みポインタ34が読出しポイン
タ35の1一つ前の位置に達していなければ、引き続い
て第1のプロセッサ1はデータを書込みポインタ34に
従い書込んでいくことができる。
ュー20であり、前記キュー識別子が書込みポインタ3
4を示しているとすると、第1のプロセッサ1は書込み
ポインタ34の1つ前に読出しポインタ35が位置する
か否かにより連結キュー20が満杯か否かを判定する(
ステップ405)。ここで、連結キュー20が満杯であ
れば(ステップ405.YES) 、連結キュー20に
データを書込むことができないので、この処理を終了す
る(ステップ406)。また、連結キュー20が満杯で
なければ(ステップ405.No)、第1のプロセッサ
1は書込みポインタ34にデータを書込む(ステップ4
06)。このとき、書込みポインタ34が1つ繰上げら
れるが、これにより書込みポインタ34が読出しポイン
タ35の1一つ前の位置に達していなければ、引き続い
て第1のプロセッサ1はデータを書込みポインタ34に
従い書込んでいくことができる。
こうして連結キュー20へのデータの書込みが終了する
と、第1のプロセッサ1は書込みポインタ34に引き続
く読出し兼書込みポインタ旧に対応する受取り手の識別
子S1がキュー管理テーブルに登録されているか否かを
判定しくステップ407)、登録されていなければ(ス
テップ407゜NO)、キュー#1へのアクセスを終了
する(ステップ408)。また、受取り手の識別子S1
として第2のプロセッサ2の第1のタスクの識別子が登
録されていれば、第1のプロセッサ1は該識別子に基づ
いて第2のプロセッサ2における第1のタスクに割込み
を・かけ(ステップ409)、この処理を終了する(ス
テップ408)。
と、第1のプロセッサ1は書込みポインタ34に引き続
く読出し兼書込みポインタ旧に対応する受取り手の識別
子S1がキュー管理テーブルに登録されているか否かを
判定しくステップ407)、登録されていなければ(ス
テップ407゜NO)、キュー#1へのアクセスを終了
する(ステップ408)。また、受取り手の識別子S1
として第2のプロセッサ2の第1のタスクの識別子が登
録されていれば、第1のプロセッサ1は該識別子に基づ
いて第2のプロセッサ2における第1のタスクに割込み
を・かけ(ステップ409)、この処理を終了する(ス
テップ408)。
なお、書込みポインタ34への書込みばかりでなく、読
出し兼書込みポインタへの書込みも行いうる。例えば第
2のプロセッサ2における第1のタスク2−1はポイン
タテーブルを通じて第1のプロセッサ1のキュー#1に
おける第1の読出し兼書込みポインタ37にアクセスし
、第1の読出し兼書込みポインタ37からのデータの読
出しに伴い該データを更新することにより書込みを行う
。
出し兼書込みポインタへの書込みも行いうる。例えば第
2のプロセッサ2における第1のタスク2−1はポイン
タテーブルを通じて第1のプロセッサ1のキュー#1に
おける第1の読出し兼書込みポインタ37にアクセスし
、第1の読出し兼書込みポインタ37からのデータの読
出しに伴い該データを更新することにより書込みを行う
。
この場合、第2の部分キュー22にデータの書込みを行
うこととなるが、第1の読出し兼書込みポインタ37が
書込みポインタ34に達するまでデータを順次書込むこ
とが可能であり、第1の読出し兼書込みポインタ37と
書込みポインタ34とが一致しているときには第2の部
分キュー22が満杯であると判定し、第2の部分キュー
22への書込みを行うことはできない。同様に、第2の
プロセッサ2における第2のタスクはキュー#1の第2
の読出し兼書込みポインタ38にアクセスし、第2の読
出し兼書込みポインタ38が第1の続出し兼書込みポイ
ンタ37に達するまで、第2の読出し兼書込みポインタ
38からの読出しに伴い該データを更新することにより
データの書込みを行うことができる。
うこととなるが、第1の読出し兼書込みポインタ37が
書込みポインタ34に達するまでデータを順次書込むこ
とが可能であり、第1の読出し兼書込みポインタ37と
書込みポインタ34とが一致しているときには第2の部
分キュー22が満杯であると判定し、第2の部分キュー
22への書込みを行うことはできない。同様に、第2の
プロセッサ2における第2のタスクはキュー#1の第2
の読出し兼書込みポインタ38にアクセスし、第2の読
出し兼書込みポインタ38が第1の続出し兼書込みポイ
ンタ37に達するまで、第2の読出し兼書込みポインタ
38からの読出しに伴い該データを更新することにより
データの書込みを行うことができる。
このような第8図のフローチャートの処理はプロセッサ
がプログラムの実行中にキューをアクセスし、データを
該キューの書込みポインタまたは読出し兼書込みポイン
タに書込むことができるというものである。
がプログラムの実行中にキューをアクセスし、データを
該キューの書込みポインタまたは読出し兼書込みポイン
タに書込むことができるというものである。
このように本実施例では複数の部分キューを連結した連
結キューを用いて複数のプロセッサ間の相互通信を可能
にするとともに、このような連結キューを含むキューを
管理するためのキュー管理テーブルを該各プロセッサ毎
に形成して、いずれのキューであっても所定のキュー管
理テーブルを通じればアクセスしうるようにしたので、
マルチプロセッサシステムにおける複雑な相互通信を効
率良く、かつ系統的に行える。特にプロセッサの数が非
常に多い状況、システムバスの制限により多種類の割込
みを扱うのが困難な状況、プロセッサ間で種々のデータ
を複雑に受渡しする状況に対しては有効である。
結キューを用いて複数のプロセッサ間の相互通信を可能
にするとともに、このような連結キューを含むキューを
管理するためのキュー管理テーブルを該各プロセッサ毎
に形成して、いずれのキューであっても所定のキュー管
理テーブルを通じればアクセスしうるようにしたので、
マルチプロセッサシステムにおける複雑な相互通信を効
率良く、かつ系統的に行える。特にプロセッサの数が非
常に多い状況、システムバスの制限により多種類の割込
みを扱うのが困難な状況、プロセッサ間で種々のデータ
を複雑に受渡しする状況に対しては有効である。
また、第10図に示したようなマルチプロセッサシステ
ムにおいては、各プロセッサ112が所有するキュー管
理テーブル並びにキューをそれぞれの副共有メモリ11
6に格納することができるので、プロセッサ間の相互通
信を行うに際し、いずれか一方のプロセッサは自己の副
共有メモリ116を使用することとなり、このプロセッ
サからシステムバスを通ぜずにキュー管理テーブル並び
にキューをアクセスすることが可能になる。この場合は
、該プロセッサによるシステムバスの占有時間が短縮さ
れるため、システム全体としての効率を高めることがで
きる。さらに、各プロセッサはそれぞれが所有するキュ
ーをそれぞれ独自に設定するとともに、これらのキュー
をそれぞれのキュー管理テーブルにより分散管理するた
め、システムの設計自由度が大幅に増す。
ムにおいては、各プロセッサ112が所有するキュー管
理テーブル並びにキューをそれぞれの副共有メモリ11
6に格納することができるので、プロセッサ間の相互通
信を行うに際し、いずれか一方のプロセッサは自己の副
共有メモリ116を使用することとなり、このプロセッ
サからシステムバスを通ぜずにキュー管理テーブル並び
にキューをアクセスすることが可能になる。この場合は
、該プロセッサによるシステムバスの占有時間が短縮さ
れるため、システム全体としての効率を高めることがで
きる。さらに、各プロセッサはそれぞれが所有するキュ
ーをそれぞれ独自に設定するとともに、これらのキュー
をそれぞれのキュー管理テーブルにより分散管理するた
め、システムの設計自由度が大幅に増す。
「発明の効果〕
以上説明したように本発明に係わるマルチプロセッサシ
ステムにおける相互通信方式によれば、複数の部分キュ
ーを連結した連結キューを用いて複数のプロセッサ間の
相互通信を可能にするとともに、このような連結キュー
を含むキューを管理するためのキュー管理テーブルを該
各ブロセッザ毎に形成して、いずれのキューであっても
所定のキュー管理テーブルを通じればアクセスしうるよ
うにしたので、マルチプロセッサシステムにおける複雑
な相互通信を効率良く、かつ系統的に行いうるという利
点がある。
ステムにおける相互通信方式によれば、複数の部分キュ
ーを連結した連結キューを用いて複数のプロセッサ間の
相互通信を可能にするとともに、このような連結キュー
を含むキューを管理するためのキュー管理テーブルを該
各ブロセッザ毎に形成して、いずれのキューであっても
所定のキュー管理テーブルを通じればアクセスしうるよ
うにしたので、マルチプロセッサシステムにおける複雑
な相互通信を効率良く、かつ系統的に行いうるという利
点がある。
第1図は本発明に係わるマルチプロセッサシステムにお
ける相互通信方式の原理を説明するために用いられた図
、第2図は1方向通信のためのキュー、および相互通信
のための本実施例における2つの連結キューを例示する
図、第3図は第2図に示した連結キューを利用してなさ
れる2つのプロセッサ間のメツセージ交換を説明するた
めに用いられた図、第4図は本実施例におけるキュー管
理テーブルを示す9図、第5図は本実施例におけるポイ
ンタテーブルを示す図、第6図は本実施例における連結
キューからの読出し動作の1例を説明するために用いら
れたフローチャート、第7図は本実施例における連結キ
ューからの読出し動作の他の例を説明するために用いら
れたフローチャート、第8図は本実施例における連結キ
ューへの書込み動作を説明するために用いられたフロー
チャート、第9図はマルチプロセッサシステムの】例を
概略的に示すブロック図、第10図はマルチプロセッサ
システムの他の例を概略的に示すブロック図、第11図
はマルチプロセッサシステムにおける従来の通信方式を
例示する図である。 1・・・第1のプロセッサ、2・・・第2のプロセッサ
、3・・・共有メモリ、4・・・キュー 11..21
・・・第1の部分キュー 12.22・・第2の部分キ
ュー13.20・・連結キュー 23・・・第3の部分
キュ31・・・キュー領域、32・・・キュー開始アド
レス、33・・キュー終了アドレス、34・・書込みポ
インタ、35・・・読出しポインタ、36・・・続出し
兼書込みポインタ、37・・・第1の読出しポインタ兼
書込みポインタ、38・・・第2の読出し兼書込みポイ
ンタ、41A、41B、41C,41D、41E、41
F・・・バッファ。 第3図 キュー管理テーブル 第4図 第5図 第6図
ける相互通信方式の原理を説明するために用いられた図
、第2図は1方向通信のためのキュー、および相互通信
のための本実施例における2つの連結キューを例示する
図、第3図は第2図に示した連結キューを利用してなさ
れる2つのプロセッサ間のメツセージ交換を説明するた
めに用いられた図、第4図は本実施例におけるキュー管
理テーブルを示す9図、第5図は本実施例におけるポイ
ンタテーブルを示す図、第6図は本実施例における連結
キューからの読出し動作の1例を説明するために用いら
れたフローチャート、第7図は本実施例における連結キ
ューからの読出し動作の他の例を説明するために用いら
れたフローチャート、第8図は本実施例における連結キ
ューへの書込み動作を説明するために用いられたフロー
チャート、第9図はマルチプロセッサシステムの】例を
概略的に示すブロック図、第10図はマルチプロセッサ
システムの他の例を概略的に示すブロック図、第11図
はマルチプロセッサシステムにおける従来の通信方式を
例示する図である。 1・・・第1のプロセッサ、2・・・第2のプロセッサ
、3・・・共有メモリ、4・・・キュー 11..21
・・・第1の部分キュー 12.22・・第2の部分キ
ュー13.20・・連結キュー 23・・・第3の部分
キュ31・・・キュー領域、32・・・キュー開始アド
レス、33・・キュー終了アドレス、34・・書込みポ
インタ、35・・・読出しポインタ、36・・・続出し
兼書込みポインタ、37・・・第1の読出しポインタ兼
書込みポインタ、38・・・第2の読出し兼書込みポイ
ンタ、41A、41B、41C,41D、41E、41
F・・・バッファ。 第3図 キュー管理テーブル 第4図 第5図 第6図
Claims (3)
- (1)複数のプロセッサと、これらのプロセッサにより
共用される共有メモリとを備えたマルチプロセッサシス
テムにおいて、 複数の部分データ待ち行列を連結した連結データ待ち行
列を前記共有メモリ内に形成し、 前記各部分データ待ち行列はデータの書込み位置を示し
かつデータが書込まれる毎に繰上げられる書込みポイン
タ、およびデータの読出し位置を示しかつデータが読出
される毎に前記書込みポインタに追従して繰上げられる
読出しポインタをそれぞれ有し、 前記連結待ち行列は前記各部分データ待ち行列のうちの
1つの部分データ待ち行列の読出しポインタと引続く他
の1つの部分データ待ち行列の書込みポインタとを兼用
することにより連結され、前記各プロセッサは予め割当
てられた読出しポインタおよび書込みポインタにアクセ
スしてデータの読出しおよび書込みをそれぞれ行うこと
を特徴とするマルチプロセッサシステムにおける相互通
信方式。 - (2)複数のプロセッサと、これらのプロセッサにより
共用される共有メモリとを備えたマルチプロセッサシス
テムにおいて、 データ待ち行列を前記共有メモリ内に形成するとともに
、前記各プロセッサには少なくとも1つの前記データ待
ち行列がそれぞれ与えられ、前記各プロセッサ毎に、該
プロセッサに与えられた前記データ待ち行列を管理する
ための管理テーブルを前記共有メモリ内に形成し、 前記管理テーブルには管理の対象となるデータ待ち行列
の読出しポインタ、書込みポインタおよびデータ待ち行
列の読出しポインタからデータを読出すために待機して
いる受取り側を示す識別子が少なくとも登録されること
を特徴とするマルチプロセッサシステムにおける相互通
信方式。 - (3)各プロセッサ毎の管理テーブルのアドレスをそれ
ぞれ予め登録したポインタテーブルを共有メモリ内に形
成したことを特徴とする請求項(2)記載のマルチプロ
セッサシステムにおける相互通信方式。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13109890A JPH0619759B2 (ja) | 1990-05-21 | 1990-05-21 | マルチプロセッサシステムにおける相互通信方法 |
US08/265,393 US5418913A (en) | 1990-05-21 | 1994-06-24 | System of two-way communication between processors using a single queue partitioned with pointers and limited overwrite privileges |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13109890A JPH0619759B2 (ja) | 1990-05-21 | 1990-05-21 | マルチプロセッサシステムにおける相互通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0425960A true JPH0425960A (ja) | 1992-01-29 |
JPH0619759B2 JPH0619759B2 (ja) | 1994-03-16 |
Family
ID=15049933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13109890A Expired - Lifetime JPH0619759B2 (ja) | 1990-05-21 | 1990-05-21 | マルチプロセッサシステムにおける相互通信方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5418913A (ja) |
JP (1) | JPH0619759B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002312310A (ja) * | 2001-04-17 | 2002-10-25 | Sony Corp | 情報通信方法 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0628322A (ja) * | 1992-07-10 | 1994-02-04 | Canon Inc | 情報処理装置 |
AU4219693A (en) * | 1992-09-30 | 1994-04-14 | Apple Computer, Inc. | Inter-task buffer and connections |
US6163793A (en) * | 1994-08-05 | 2000-12-19 | Intel Corporation | Method and apparatus for using a driver program executing on a host processor to control the execution of code on an auxiliary processor |
US5548728A (en) * | 1994-11-04 | 1996-08-20 | Canon Information Systems, Inc. | System for reducing bus contention using counter of outstanding acknowledgement in sending processor and issuing of acknowledgement signal by receiving processor to indicate available space in shared memory |
US5671365A (en) * | 1995-10-20 | 1997-09-23 | Symbios Logic Inc. | I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events |
US5907679A (en) * | 1996-08-19 | 1999-05-25 | Visiontek | Hard drive upgrade system |
US5938747A (en) * | 1997-03-13 | 1999-08-17 | Adapter, Inc. | Hardware command block delivery queue for host adapters and other devices with onboard processors |
US5999969A (en) * | 1997-03-26 | 1999-12-07 | Unisys Corporation | Interrupt handling system for message transfers in network having mixed hardware and software emulated modules |
US5983266A (en) * | 1997-03-26 | 1999-11-09 | Unisys Corporation | Control method for message communication in network supporting software emulated modules and hardware implemented modules |
US5944788A (en) * | 1997-03-26 | 1999-08-31 | Unisys Corporation | Message transfer system and control method for multiple sending and receiving modules in a network supporting hardware and software emulated modules |
JP3529588B2 (ja) | 1997-05-30 | 2004-05-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 計算機ネットワーク・システム、計算機、一時保管用計算機及びこれらにおける方法 |
US6385704B1 (en) * | 1997-11-14 | 2002-05-07 | Cirrus Logic, Inc. | Accessing shared memory using token bit held by default by a single processor |
US6314501B1 (en) | 1998-07-23 | 2001-11-06 | Unisys Corporation | Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory |
US6160560A (en) * | 1998-08-10 | 2000-12-12 | Diamond Multimedia Systems, Inc. | Graphic request management system |
US6385603B1 (en) | 1999-06-14 | 2002-05-07 | International Business Machines Corporation | Joined table expression optimization by query transformation |
US6738840B1 (en) * | 1999-08-31 | 2004-05-18 | Koninklijke Philips Electronics N.V. | Arrangement with a plurality of processors having an interface for a collective memory |
JP2001116551A (ja) * | 1999-10-18 | 2001-04-27 | Matsushita Electric Ind Co Ltd | 角速度センサ |
US6560657B1 (en) * | 1999-12-23 | 2003-05-06 | Intel Corporation | System and method for controlling peripheral devices |
US7093260B1 (en) * | 2000-05-04 | 2006-08-15 | International Business Machines Corporation | Method, system, and program for saving a state of a task and executing the task by a processor in a multiprocessor system |
JP3706008B2 (ja) * | 2000-08-01 | 2005-10-12 | 富士通株式会社 | プロセッサ間データ通信装置、プロセッサ間データ通信方法およびデータ処理装置 |
JP4394298B2 (ja) * | 2001-02-20 | 2010-01-06 | 日本電気株式会社 | マルチプロセッサシステムとその共有メモリ制御方法、及び共有メモリ制御プログラム |
TW573254B (en) * | 2002-01-07 | 2004-01-21 | Via Tech Inc | Message transmission queue and operation method thereof |
US7543303B2 (en) * | 2002-03-29 | 2009-06-02 | International Business Machines Corporation | Use of multiple queues in coupling facility to provide zoning capability in a parallel sysplex environment |
JP4408692B2 (ja) * | 2003-12-19 | 2010-02-03 | 富士通株式会社 | 通信装置管理プログラム |
DE102004012516A1 (de) * | 2004-03-15 | 2005-10-13 | Infineon Technologies Ag | Computersystem zur elektronischen Datenverarbeitung |
JP2007088522A (ja) * | 2005-09-16 | 2007-04-05 | Ricoh Co Ltd | 画像処理装置 |
US7493468B2 (en) * | 2006-06-01 | 2009-02-17 | International Business Machines Corporation | Method for broadcasting instructions/data to a plurality of processors in a multiprocessor device via aliasing |
US8799213B2 (en) * | 2007-07-31 | 2014-08-05 | Oracle International Corporation | Combining capture and apply in a distributed information sharing system |
US7801852B2 (en) * | 2007-07-31 | 2010-09-21 | Oracle International Corporation | Checkpoint-free in log mining for distributed information sharing |
US9230002B2 (en) | 2009-01-30 | 2016-01-05 | Oracle International Corporation | High performant information sharing and replication for single-publisher and multiple-subscriber configuration |
US8073995B2 (en) | 2009-10-19 | 2011-12-06 | Research In Motion Limited | Efficient low-latency buffer |
EP2312433B1 (en) * | 2009-10-19 | 2016-12-07 | BlackBerry Limited | Bi-directional low-latency buffer |
US9352944B2 (en) | 2012-03-19 | 2016-05-31 | Gray Manufacturing Company, Inc. | Control and communication system for a wireless vehicle lift system |
US9298504B1 (en) * | 2012-06-11 | 2016-03-29 | Amazon Technologies, Inc. | Systems, devices, and techniques for preempting and reassigning tasks within a multiprocessor system |
CN110832473B (zh) * | 2017-06-21 | 2023-01-13 | 华为技术有限公司 | 日志结构管理系统及方法 |
US10977046B2 (en) * | 2019-03-05 | 2021-04-13 | International Business Machines Corporation | Indirection-based process management |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4449182A (en) * | 1981-10-05 | 1984-05-15 | Digital Equipment Corporation | Interface between a pair of processors, such as host and peripheral-controlling processors in data processing systems |
US4604500A (en) * | 1981-12-02 | 1986-08-05 | At&T Bell Laboratories | Multiprocessing interrupt arrangement |
US4646294A (en) * | 1985-08-02 | 1987-02-24 | Gte Laboratories Incorporated | High-speed queue sequencer for a burst-switching communications system |
US5133062A (en) * | 1986-03-06 | 1992-07-21 | Advanced Micro Devices, Inc. | RAM buffer controller for providing simulated first-in-first-out (FIFO) buffers in a random access memory |
US4949301A (en) * | 1986-03-06 | 1990-08-14 | Advanced Micro Devices, Inc. | Improved pointer FIFO controller for converting a standard RAM into a simulated dual FIFO by controlling the RAM's address inputs |
US4835738A (en) * | 1986-03-31 | 1989-05-30 | Texas Instruments Incorporated | Register stack for a bit slice processor microsequencer |
US4991972A (en) * | 1986-07-14 | 1991-02-12 | Minolta Camera Kabushiki Kaisha | Control apparatus for a printer |
EP0273083B1 (en) * | 1986-12-30 | 1993-10-06 | International Business Machines Corporation | Non-locking queueing mechanism |
FR2625392B1 (fr) * | 1987-12-24 | 1993-11-26 | Quinquis Jean Paul | Circuit de gestion de pointeurs d'ecriture de files tampons notamment pour commutateur temporel de paquets auto-acheminables |
US5053945A (en) * | 1988-10-06 | 1991-10-01 | Alphatronix | System and method for performing a multi-file transfer operation |
US5202972A (en) * | 1988-12-29 | 1993-04-13 | International Business Machines Corporation | Store buffer apparatus in a multiprocessor system |
US5036459A (en) * | 1989-03-09 | 1991-07-30 | U.S. Philips Corporation | Multi-processor computer system with distributed memory and an interprocessor communication mechanism, and method for operating such mechanism |
CA2045756C (en) * | 1990-06-29 | 1996-08-20 | Gregg Bouchard | Combined queue for invalidates and return data in multiprocessor system |
DE69127936T2 (de) * | 1990-06-29 | 1998-05-07 | Digital Equipment Corp | Busprotokoll für Prozessor mit write-back cache |
US5265229A (en) * | 1990-07-02 | 1993-11-23 | Digital Equipment Corporation | Single load, multiple issue queue with error recovery capability |
-
1990
- 1990-05-21 JP JP13109890A patent/JPH0619759B2/ja not_active Expired - Lifetime
-
1994
- 1994-06-24 US US08/265,393 patent/US5418913A/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002312310A (ja) * | 2001-04-17 | 2002-10-25 | Sony Corp | 情報通信方法 |
Also Published As
Publication number | Publication date |
---|---|
JPH0619759B2 (ja) | 1994-03-16 |
US5418913A (en) | 1995-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0425960A (ja) | マルチプロセッサシステムにおける相互通信方法 | |
JP3661761B2 (ja) | 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム | |
JP3644587B2 (ja) | 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム | |
US5900020A (en) | Method and apparatus for maintaining an order of write operations by processors in a multiprocessor computer to maintain memory consistency | |
US6971098B2 (en) | Method and apparatus for managing transaction requests in a multi-node architecture | |
JP2820752B2 (ja) | 密結合マルチプロセッサシステムにおけるキャッシュメモリ一致制御方法 | |
KR100324975B1 (ko) | 잠재적인 제3 노드 트랜잭션을 버퍼에 기록하여 통신 대기시간을 감소시키는 비균일 메모리 액세스(numa) 데이터 프로세싱 시스템 | |
US7529893B2 (en) | Multi-node system with split ownership and access right coherence mechanism | |
JPH11282820A (ja) | スイッチをベースとするマルチプロセッサシステムに使用するための順序サポート機構 | |
JPH06259384A (ja) | マルチプロセッサ | |
JPH07210520A (ja) | メモリアクセス機構 | |
JPH0944424A (ja) | 遠隔情報処理システム間のメッセージ伝送方法 | |
US20050010615A1 (en) | Multi-node computer system implementing memory-correctable speculative proxy transactions | |
US20050044174A1 (en) | Multi-node computer system where active devices selectively initiate certain transactions using remote-type address packets | |
US20050027947A1 (en) | Multi-node computer system including a mechanism to encode node ID of a transaction-initiating node in invalidating proxy address packets | |
US6904465B2 (en) | Low latency inter-reference ordering in a multiple processor system employing a multiple-level inter-node switch | |
US7225298B2 (en) | Multi-node computer system in which networks in different nodes implement different conveyance modes | |
US8024526B2 (en) | Multi-node system with global access states | |
JP3751741B2 (ja) | マルチプロセッサシステム | |
US7606978B2 (en) | Multi-node computer system implementing global access state dependent transactions | |
US7360029B2 (en) | Multi-node computer system in which interfaces provide data to satisfy coherency transactions when no owning device present in modified global access state node | |
US8010749B2 (en) | Multi-node computer system with proxy transaction to read data from a non-owning memory device | |
US7814278B2 (en) | Multi-node system with response information in memory | |
US20040260886A1 (en) | Multi-node system with interface intervention to satisfy coherency transactions transparently to active devices | |
US20050005075A1 (en) | Multi-node computer system employing multiple memory response states |