(57)【特許請求の範囲】
【請求項１】
マルチＣＰＵ制御で使用される複数のＣＰＵユニットを備え、上記各々のＣＰＵユニットは、
デバイスデータを扱うためのデバイスメモリと、
自他ＣＰＵユニットから読み書きできる自ＣＰＵユニット用データ格納エリアのみ有する２ポートメモリでなる共有メモリと、
データ転送の手順が記述されたＯＳと、
上記ＯＳに記述された手順に基づいて他ＣＰＵユニットと自ＣＰＵユニットの間でのデータ転送を行うマイクロプロセッサとを有し、
各々の上記マイクロプロセッサは、上記デバイスメモリに記憶された上記デバイスデータを自共有メモリの上記自ＣＰＵユニット用データ格納エリアに書き込むと共に、他ＣＰＵユニットの上記共有メモリに記憶されたデバイスデータを自ＣＰＵユニットの上記デバイスメモリに他の記憶手段を介在することなしに直接読込む
ことを特徴とするマルチＣＰＵユニット。
【請求項２】
上記デバイスメモリは、自ＣＰＵユニット用デバイスデータエリアおよび他ＣＰＵユニット数分の他ＣＰＵユニット用デバイスデータエリアを有し、
各々の上記マイクロプロセッサは、他ＣＰＵユニットの上記共有メモリに記憶されたデバイスデータを自デバイスメモリの上記他ＣＰＵユニット用デバイスデータエリアに直接読込む
ことを特徴とする請求項１記載のマルチＣＰＵユニット。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は産業機器等で使用されるプログラマブルコントローラＣＰＵユニットであって、マルチＣＰＵ制御で使用される複数のＣＰＵユニットを有するマルチＣＰＵユニットに関し、特にメモリ容量の軽減をすることができ、また処理速度の向上をすることができるマルチＣＰＵユニットに関するものである。
【０００２】
【従来の技術】
図１１は従来のマルチＣＰＵユニットの構成図であり、また図１２は図１１のデバイスメモリおよびＣＰＵユニット間通信用２ポートメモリの詳細を示した図である。図１１において、ＣＰＵユニット１Ａは、ＯＳプログラムを解読した情報に従いデータの転送を行うマイクロプロセッサ２Ａ、デバイスメモリと通信用２ポートメモリ間のデータ転送を行うＯＳ２６Ａ、このＣＰＵユニットＡで処理されるプログラムでＤ０，Ｄ１といったデバイステータを扱うためのデバイスメモリ３Ａ、およびマルチＣＰＵ制御においてＣＰＵユニット間で通信を行うためのＣＰＵユニット間通信用２ポートメモリ２４Ａを有している。
【０００３】
そして、ＣＰＵユニット１Ａと同様の構成であるＣＰＵユニット１Ｂは、ＯＳプログラムを解読した情報に従いデータの転送を行うマイクロプロセッサ２Ｂ、デバイスメモリと通信用２ポートメモリ間のデータ転送を行うＯＳ２６Ｂ、このＣＰＵユニットＢで処理されるプログラムでＤＯ，Ｄ１といったデバイステータを扱うためのデバイスメモリ３Ｂ、およびマルチＣＰＵ制御においてＣＰＵユニット間で通信を行うためのＣＰＵユニット間通信用２ポートメモリ２４Ｂを有している。
【０００４】
さらに、ＣＰＵユニット１Ａと同様の構成であるＣＰＵユニット１Ｃは、ＯＳプログラムを解読した情報に従いデータの転送を行うマイクロプロセッサ２Ｃ、デバイスメモリと通信用２ポートメモリ間のデータ転送を行うＯＳ２６Ｃ、このＣＰＵユニットＣで処理されるプログラムでＤＯ，Ｄ１といったデバイステータを扱うためのデバイスメモリ３Ｃ、マルチＣＰＵ制御においてＣＰＵユニット間で通信を行うためのＣＰＵユニット間通信用２ポートメモリ２４Ｃを有している。
【０００５】
図１２において、デバイスメモリ３Ａは、ＣＰＵユニット１Ａ用デバイスデータエリア１０Ａ、ＣＰＵユニット１Ｂ用デバイスデータエリア１１Ａ、およびＣＰＵユニット１Ｃ用デバイスデータエリア１２Ａを有している。また、ＣＰＵユニット間通信用２ポートメモリ２４Ａは、ＣＰＵユニット１Ｂ用データ格納エリア３０ＡおよびＣＰＵユニット１Ｃ用データ格納エリア３１Ａを有している。
【０００６】
一方、デバイスメモリ３Ｂは、ＣＰＵユニット１Ａ用デバイスデータエリア１０Ｂ、ＣＰＵユニット１Ｂ用デバイスデータエリア１１Ｂ、およびＣＰＵユニット１Ｃ用デバイスデータエリア１２Ｂを有している。また、ＣＰＵユニット間通信用２ポートメモリ２４Ａは、ＣＰＵユニット１Ａ用データ格納エリア３０ＢおよびＣＰＵユニット１Ｃ用データ格納エリア３１Ｂを有している。
【０００７】
さらに、デバイスメモリ３Ｃは、ＣＰＵユニット１Ａ用デバイスデータエリア１０Ｃ、ＣＰＵユニット１Ｂ用デバイスデータエリア１１Ｃ、およびＣＰＵユニット１Ｃ用デバイスデータエリア１２Ｃを有している。また、ＣＰＵユニット間通信用２ポートメモリ２４Ｃは、ＣＰＵユニット１Ａ用データ格納エリア３０ＣおよびＣＰＵユニット１Ｂ用データ格納エリア３１Ｃを有している。
【０００８】
図１３および図１４は、各ＣＰＵユニットのＯＳ２６Ａ，２６Ｂ，２６Ｃに組み込まれているデバイスメモリと通信用２ポート間のデータ転送に関するソフトウエアを示すフローチャートである。図１３においては、まず、ＣＰＵユニット番号判別のためｎに１をいれ（ステップＳ２２０２）、そのｎが自ＣＰＵユニットのＣＰＵユニット番号と一致するかのチェックをおこない（ステップＳ２２０３）、異なっていれば、その番号が示すＣＰＵユニットのＣＰＵユニット間通信用２ポートメモリに接続し（ステップＳ２２０４）、さらにその番号によってデバイステータを書込むＣＰＵユニット間通信用２ポートメモリのブロック位置を算出する（ステップＳ２２０５，Ｓ２２０６およびＳ２２０７）。そしてそのＣＰＵユニット間通信用２ポートメモリにデータを書込んだ後、そのＣＰＵユニットのＣＰＵユニット間通信用２ポートメモリを切り離し（ステップＳ２２０８）、次の番号を取得し（ステップＳ２２０９）マルチＣＰＵ制御で用いているＣＰＵユニットが、さらに存在するかどうかをチェックする（ステップＳ２２１０）。なければ完了となり（ステップＳ２２１１）あるならば再び一連の動作を繰り返す（ステップＳ２２０３〜Ｓ２２１０）。
【０００９】
ここで、従来の技術を手順に沿って説明する。
図１１に示される様にＣＰＵユニット１Ａ，１Ｂおよび１Ｃの３ユニットによってマルチＣＰＵユニットが構成されている。それぞれのＣＰＵユニット１Ａ，１Ｂおよび１Ｃには、図１１に示される様にＣＰＵユニット１Ａ，１Ｂ，１Ｃ用のデバイスデータエリアを有するデバイスメモリ３Ａ，３Ｂ，３Ｃと、自ＣＰＵユニット以外の他の２つのＣＰＵユニットと通信を行うためのＣＰＵユニット間通信用２ポートメモリ２４Ａ，２４Ｂ，２４Ｃを有している。
【００１０】
そして、それぞれのＣＰＵユニット１Ａ，１Ｂおよび１Ｃは、それぞれの持つＯＳ２６Ａ，２６Ｂ，２６Ｃに記載された番号によって、自ＣＰＵユニットのＣＰＵユニット番号を決められている。このＣＰＵユニット番号は、マルチＣＰＵ制御において自ＣＰＵユニットが何番のＣＰＵユニットかを知るものである。ここで、ＣＰＵユニット１ＡのＣＰＵユニット番号を１，ＣＰＵユニット１ＢのＣＰＵユニット番号を２，ＣＰＵユニット１ＣのＣＰＵユニット番号を３とする。
【００１１】
まず、ＣＰＵユニット１Ａのデバイスデータエリア１０Ａの内容をＣＰＵユニット１Ｂに伝達するために、ＯＳ２６Ａが通信路７Ｂを通してＣＰＵユニット１ＡをＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリ２４Ｂに接続する。そして、ＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリ２４ＢのどこにＣＰＵユニット１Ａ用のデバイスデータエリア１０Ａの内容を書くかをＣＰＵユニット番号より算出する。算出方法は、自ＣＰＵユニットのＣＰＵユニット番号と書込もうとしている相手のＣＰＵユニット番号を比較して、小さければ自ＣＰＵユニットのＣＰＵユニット番号の箇所（１ならば１番目）に書く。大きければ自ＣＰＵユニットのＣＰＵユニット番号から１を引いた箇所（２なら２−１となり１番目）に書く。ＣＰＵユニット１ＡのＣＰＵユニット番号は１でありＣＰＵユニット１ＢのＣＰＵユニット番号は２であるため、ＣＰＵユニット１ＡのＣＰＵユニット番号の方が小さい、よってＣＰＵユニット間通信用２ポートメモリ２４Ｂの１番目にあるＣＰＵユニット１Ａ用データ格納手リア３０ＢにＣＰＵユニット１Ａの通信路５Ａ，ＣＰＵユニット１Ｂの通信路７Ｂを通ってＣＰＵユニット１ＡのＯＳ２６Ａが書く。
【００１２】
同様の方法を用いてＣＰＵユニット１ＣのＣＰＵユニット間通信用２ポートメモリ２４ＣのＣＰＵユニット１Ａ用データ格納エリア３０ＣにＣＰＵユニット１Ａのデバイスメモリ３ＡのＣＰＵユニット１Ａ用デバイスデータエリア１０ＡのデータをＣＰＵユニット１Ａの通信路５Ａ，ＣＰＵユニット１Ｃの通信路７Ｃを通ってＣＰＵユニット１ＡのＯＳ２６Ａが書く。
【００１３】
同様の手順を用いてＣＰＵユニット１Ｂのデバイスメモリ３ＢのＣＰＵユニット１Ｂ用デバイスデータエリア１１ＢのデータをＣＰＵユニット１ＡのＣＰＵユニット間通信用２ポートメモリ２４ＡのＣＰＵユニット１Ｂ用データ格納エリア３０ＡにＣＰＵユニット１ＢのＯＳ２６ＢがＣＰＵユニット１Ｂの通信路５Ｂ，ＣＰＵユニット１Ａの通信路７Ａを通って書く。また、ＣＰＵユニット１ＣのＣＰＵユニット間通信用２ポートメモリ２４ＣのＣＰＵユニット１Ｂ用データ格納エリア３１ＣにＣＰＵユニット１Ｂの通信路５Ｂ，ＣＰＵユニット１Ｃの通信路７Ｃを通ってＣＰＵユニット１ＢのＯＳ２６Ｂが書く。
【００１４】
同様の手順を用いてＣＰＵユニット１Ｃのデバイスメモリ３ＣのＣＰＵユニット１Ｃ用デバイスデータエリア１１ＣのデータをＣＰＵユニット１ＡのＣＰＵユニット間通信用２ポートメモリ２４ＡのＣＰＵユニット１Ｃ用データ格納エリア３１ＡにＣＰＵユニット１ＣのＯＳ２６ＣがＣＰＵユニット１Ｃの通信路５Ｃ，ＣＰＵユニット１Ａの通信路７Ａを通って書く。また、ＣＰＵユニット１ＢのＣＰＵユニット閻通信用２ポートメモリ２４ＢのＣＰＵユニット１Ｃ用データ格納エリア３１ＢにＣＰＵユニット１Ｃの通信路５Ｃ，ＣＰＵユニット１Ｂの通信路７Ｂを通ってＣＰＵユニット１ＣのＯＳ２６Ｃが書く。これにより、各々のＣＰＵユニットのＣＰＵユニット間通信用２ポートメモリには他ＣＰＵユニットのデバイステータが書かれていることになる。
【００１５】
こうして各ＣＰＵユニットのＣＰＵユニット間通信用２ポートメモリに書込まれたデバイステータを、各デバイスメモリに転送する。ＣＰＵユニット１Ａのユニット番号とＣＰＵユニット１Ｂのユニット番号よりＣＰＵユニット間通信用２ポートメモリ２４ＡにあるＣＰＵユニット１Ｂ用データ格納エリアのブロック３０Ａを算出する。一方、ＣＰＵユニット１Ｂのユニット番号からデバイスメモリ３ＡのＣＰＵユニット１Ｂ用デバイスデータエリア１１Ａを算出する。ＣＰＵユニット１Ａのデバイスメモリ３ＡのＣＰＵユニット１Ｂ用デバイスデータエリア１１Ａに、ＣＰＵユニット１ＡのＣＰＵユニット間通信用２ポートメモリ２４ＡのＣＰＵユニット１Ｂ用データ格納エリア３０ＡからＣＰＵユニット１ＡのＯＳ２６Ａが転送する。
【００１６】
同様にＣＰＵユニット１Ｃのユニット番号より、デバイスメモリ３ＡのＣＰＵユニット１Ｃ用デバイスデータエリア１２Ａ，ＣＰＵユニット間通信用２ポートメモリ２４ＡのＣＰＵユニット１Ｃ用データ格納エリア３１Ａを算出し、ＣＰＵユニット１Ｃ用データ格納エリア３１Ａの内容をＣＰＵユニット１Ｃ用デバイスデータエリア１２ＡにＣＰＵユニット１ＡのＯＳ２６Ａが転送する。これによりＣＰＵユニット１Ａのデバイスメモリ３ＡにはＣＰＵユニット１Ａ用デバイステータ、ＣＰＵユニット１Ｂ用デバイステータ、ＣＰＵユニット１Ｃ用デバイステータが存在することになる。
【００１７】
ＣＰＵユニット１ＡでのＣＰＵユニット間通信用２ポートメモリ２４Ａからデバイスメモリ３Ａへの転送と同様の手順を用いて、ＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリ２４ＢのＣＰＵユニット１Ａ用データ格納エリア３０Ｂ，ＣＰＵユニット１Ｃ用データ格納エリア３１Ｂの内容をデバイスメモリ３ＢのＣＰＵユニット１Ａ用デバイスデータエリア１０Ｂ，ＣＰＵユニット１Ｃ用デバイスデータエリア１２ＢにＣＰＵユニット１ＢのＯＳ２６Ｂが転送する。
【００１８】
ＣＰＵユニット１ＡでのＣＰＵユニット間通信用２ポートメモリ２４Ａからデバイスメモリ３Ａへの転送と同様の手順を用いて、ＣＰＵユニット１ＣのＣＰＵユニット間通信用２ポートメモリ２４ＣのＣＰＵユニット１Ａ用データ格納エリア３０Ｃ，ＣＰＵユニット１Ｂ用データ格納エリア３１Ｃの内容をデバイスメモリ３ＣのＣＰＵユニット１Ａ用デバイスデータエリナ１０Ｃ，ＣＰＵユニット１Ｂ用デバイスデータエリア１１ＣにＣＰＵユニット１ＣのＯＳ２６Ｃが転送する。
【００１９】
このＣＰＵユニット間通信用２ポートメモリからデバイスメモリへの転送動作を図１４に示す。まず、ｎにＣＰＵユニット番号の初期値１を代入し（ステップＳ２３０２）、ｎが自ＣＰＵユニットの番号かどうかを判別する（ステップＳ２３０３）。違うなら他のＣＰＵユニットの番号のためその番号が自ＣＰＵユニットのＣＰＵユニット番号よりも小さいか大きいかを判別する（ステップＳ２３０４）。
【００２０】
小さければＣＰＵユニット間通信用２ポートメモリのｎブロック目からデバイスメモリのｎブロック目に転送する（ステップＳ２３０５）。大きければＣＰＵユニット間通信用２ポートメモリの（ｎ−１）ブロック目からデバイスメモリのｎブロック目に転送する（ステップＳ２３０６）。
【００２１】
ＣＰＵユニット番号ｎに１を足して次のＣＰＵユニット番号を算出し（ステップＳ２３０７）、その番号がマルチＣＰＵ制御のＣＰＵユニットに存在するかを判別する（ステップＳ２３０８）。存在しなければ完了（ステップＳ２３０９）、存在すれば続いて一連の動作を行う（ステップＳ２３０３〜ステップＳ２３０８）。
【００２２】
【発明が解決しようとする課題】
このような構成のマルチＣＰＵ制御におけるデバイステータの交信方法においては、各ＣＰＵ１Ａ，１Ｂ，１ＣにマルチＣＰＵ制御を構成している自ＣＰＵユニット以外の他のＣＰＵユニット用のデータ格納エリアをＣＰＵ間通信用２ポートメモリ２４，２４Ｂ，２４Ｃに持ち、自ＣＰＵユニットのデバイスデータを、他のＣＰＵユニットの数分だけ、それぞれのＣＰＵユニットのＣＰＵ間通信用２ポートメモリのデータ格納エリアに書く処理が必要である。そして、マルチＣＰＵ制御を構成している自ＣＰＵユニット以外のＣＰＵユニットの数分のＣＰＵ間通信用２ポートメモリの接続、開放の処理が必要である。これは、マルチＣＰＵを構成するＣＰＵユニットが増えるとその分ＣＰＵ間通信用２ポートメモリの接続、開放回数が増え処理時間が増えるので、本来の制御を処理する時間の割合が減ってしまい制御のレスポンスが悪くなる。
【００２３】
また、マルチＣＰＵ制御を構成するＣＰＵユニットが増えると各ＣＰＵユニットのＣＰＵ間通信用２ポ一トメモリ内のデータ格納エリアがマルチＣＰＵ制御を構成する自ＣＰＵユニット以外のＣＰＵユニット分だけ必要になり大きな容量のＣＰＵ間通信用２ポートメモリが必要になりコスト面で高くなる。
【００２４】
本発明では、従来のＣＰＵユニットが持っていたＣＰＵ問通信用２ポートメモリのデータ格納エリアの構成を変えることにより、マルチＣＰＵ制御でのＣＰＵユニットにおいてデバイステータの交信処理を短縮するとともにメモリの節約をすることができるマルチＣＰＵユニットを得ることを目的とする。
【００２５】
【課題を解決するための手段】
この発明に係るマルチＣＰＵユニットにおいては、マルチＣＰＵ制御で使用される複数のＣＰＵユニットを備え、各々のＣＰＵユニットは、デバイスデータを扱うためのデバイスメモリと、自他ＣＰＵユニットから読み書きできる自ＣＰＵユニット用データ格納エリアのみ有する２ポートメモリでなる共有メモリと、データ転送の手順が記述されたＯＳと、ＯＳに記述された手順に基づいて他ＣＰＵユニットと自ＣＰＵユニットの間でのデータ転送を行うマイクロプロセッサとを有し、各々のマイクロプロセッサは、デバイスメモリに記憶されたデバイスデータを自共有メモリの自ＣＰＵユニット用データ格納エリアに書き込むと共に、他ＣＰＵユニットの共有メモリに記憶されたデバイスデータを自ＣＰＵユニットのデバイスメモリに他の記憶手段を介在することなしに直接読込む。
【００２６】
また、デバイスメモリは、自ＣＰＵユニット用デバイスデータエリアおよび他ＣＰＵユニット数分の他ＣＰＵユニット用デバイスデータエリアを有し、各々のマイクロプロセッサは、他ＣＰＵユニットの共有メモリに記憶されたデバイスデータを自デバイスメモリの他ＣＰＵユニット用デバイスデータエリアに直接読込む。
【００２８】
【発明の実施の形態】
以下、この発明の各実施の形態について、図面に基づき説明する。
実施の形態１．
図１は本発明のマルチＣＰＵユニットの構成図であり、また図２は図１のデバイスメモリおよびＣＰＵユニット間通信用２ポートメモリの詳細を示した図である。図１において、ＣＰＵユニット１Ａは、ＯＳプログラムを解読した情報に従いデータの転送を行うマイクロプロセッサ２Ａ、デバイスメモリと通信用２ポートメモリ間のデータ転送を行うＯＳ６Ａ、このＣＰＵユニットＡで処理されるプログラムでＤ０，Ｄ１といったデバイステータを扱うためのデバイスメモリ３Ａ、マルチＣＰＵ制御においてＣＰＵユニット間で通信を行うためのＣＰＵユニット間通信用２ポートメモリ４Ａを有している。
【００２９】
同様に、ＣＰＵユニット１Ｂは、ＯＳプログラムを解読した情報に従いデータの転送を行うマイクロプロセッサ２Ｂ、デバイスメモリと通信用２ポートメモリ間のデータ転送を行うＯＳ６Ｂ、このＣＰＵユニットＢで処理されるプログラムでＤ０，Ｄ１といったデバイステータを扱うためのデバイスメモリ３Ｂ、マルチＣＰＵ制御においてＣＰＵユニット間で通信を行うためのＣＰＵユニット間通信用２ポートメモリ４Ｂを有している。
【００３０】
同様に、ＣＰＵユニット１Ｃは、ＯＳプログラムを解読した情報に従いデータの転送を行うマイクロプロセッサ２Ｃ、デバイスメモリと通信用２ポートメモリ間のデータ転送を行うＯＳ６Ｃ、このＣＰＵユニットＣで処理されるプログラムでＤ０，Ｄ１といったデバイステータを扱うためのデバイスメモリ３Ｃ、マルチＣＰＵ制御においてＣＰＵユニット間で通信を行うためのＣＰＵユニット間通信用２ポートメモリ４Ｃを有している。
【００３１】
図２において、デバイスメモリ３Ａは、ＣＰＵユニット１Ａ用デバイスデータエリア１０Ａ，ＣＰＵユニット１Ｂ用デバイスデータエリア１１Ａ，ＣＰＵユニット１Ｃ用デバイスエリア１２Ａを有している。また、ＣＰＵユニット間通信用２ポートメモリ４Ａは、ＣＰＵユニット１Ａ用データ格納エリア１３Ａを有している。
【００３２】
一方、デバイスメモリ３Ｂは、ＣＰＵユニット１Ａ用デバイスデータエリア１０Ｂ，ＣＰＵユニット１Ｂ用デバイスデータエリア１１Ｂ，ＣＰＵユニット１Ｃ用デバイスエリア１２Ｂを有している。また、ＣＰＵユニット間通信用２ポートメモリ４Ｂは、ＣＰＵユニット１Ｂ用データ格納エリア１３Ｂを有している。
【００３３】
さらに、デバイスメモリ３Ｃは、ＣＰＵユニット１Ａ用デバイスデータエリア１０Ｃ，ＣＰＵユニット１Ｂ用デバイスデータエリア１１Ｃ，ＣＰＵユニット１Ｃ用デバイスエリア１２Ｃを有している。また、ＣＰＵユニット間通信用２ポートメモリ４Ｃは、ＣＰＵユニット１Ａ用データ格納エリア１３Ｃを有している。
【００３４】
図３、図４は本実施の形態の処理フローである。図１に示される様に本実施の形態のマルチＣＰＵユニットは、ＣＰＵユニット１Ａ，１Ｂ，および１Ｃの３個のユニットからなる構成とされている。各々のＣＰＵユニット１Ａ，１Ｂ，および１Ｃには、図２に示される様にＣＰＵユニット１Ａ，１Ｂ，１Ｃ用のデバイスデータエリアを有するデバイスメモリ３Ａ，３Ｂ，３Ｃと、自ＣＰＵユニット以外の他の２つのＣＰＵユニットと通信を行うためのＣＰＵユニット間通信用２ポートメモリ４Ａ，４Ｂ，４Ｃを有している。
【００３５】
そして、それぞれのＣＰＵユニット１Ａ，１Ｂおよび１Ｃは、それぞれの持つＯＳ６Ａ，６Ｂ，６Ｃに記載された番号によって、自ＣＰＵユニットのＣＰＵユニット番号を決められている。このＣＰＵユニット番号は、マルチＣＰＵ制御において自ＣＰＵユニットが何番のＣＰＵユニットかを知るものである。ここで、ＣＰＵユニット１ＡのＣＰＵユニット番号を１，ＣＰＵユニット１ＢのＣＰＵユニット番号を２，ＣＰＵユニット１ＣのＣＰＵユニット番号を３とする。
【００３６】
本実施の形態においては、まず、ＣＰＵユニット１Ａのデバイスデータエリア１０Ａの内容を、ＣＰＵユニット１ＡのＯＳ６ＡがＣＰＵユニット１ＡのＣＰＵユニット間通信用２ポートメモリの１ブロック目に書き、また、ＣＰＵユニット１Ｂのデバイスデータエリア１１Ｂの内容を、ＣＰＵユニット１ＢのＯＳ６ＢがＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリの１ブロック目に書き、さらに、ＣＰＵユニット１Ｃのデバイスデータエリア１２Ｃの内容をＣＰＵユニット１ＣのＯＳ６ＣがＣＰＵユニット１ＣのＣＰＵユニット間通信用２ポートメモリの１ブロック目に書く。
【００３７】
これを図４の処理フローで表すと（ステップＳ４０２）となる。これにより全ＣＰＵユニットのＣＰＵユニット間通信用２ポートメモリに自ＣＰＵユニットのデバイステータが格納されたことになる。
【００３８】
さらに、ＣＰＵユニット１Ａの処理を説明する。ＣＰＵユニット１Ｂのデバイステータを得るために、ＣＰＵユニット１ＡはＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリ４Ｂに接続される。図３のフローで表すと（ステップＳ３０４）となる。そして、ＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリ４Ｂの１ブロック目１３ＢのデータをＣＰＵユニット１Ａのデバイスメモリ３Ａに読込む。このとき、デバイスメモリ３Ａの読込む先のブロックは、ＣＰＵユニット番号から算出される。図３のフローでは（ステップＳ３０３）となる。
【００３９】
読み出そうとするＣＰＵユニット１ＢのＣＰＵユニット番号は２のため、ＣＰＵユニット１Ａのデバイスメモリ３Ａの２ブロック目１１Ａに読込むことになる。このようにして、ＣＰＵユニット１ＡのＭＰＵ２Ａによって通信路５Ａ，７Ｂを通してＣＰＵユニット１Ａのデバイスメモリ３ＡのＣＰＵユニットＢ用デバイスデータエリア１１Ａに書きこまれる。図３のフローでは（ステップＳ３０５）である。
【００４０】
その後、ＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリ４Ｂとの接続を切ることにより、ＣＰＵユニット１Ｂのデバイステータの交信を完了する、図３のフローでは（ステップＳ３０６）となる。
【００４１】
次に、ＣＰＵユニット１Ｃのデバイステータを得るために、ＣＰＵユニット１ＡがＣＰＵユニット１ＣのＣＰＵユニット間通信用２ポートメモリ４Ｃに接続される。図３のフローでは（ステップＳ３０４）となる。そして、ＣＰＵユニット１ＣのＣＰＵユニット間通信用２ポートメモリ４Ｃの１ブロック目１３ＣのデータをＣＰＵユニット１Ａのデバイスメモリ３Ａに読込む。このとき、デバイスメモリ３Ａの読込む先のブロックは、ＣＰＵユニット番号から算出される。図３のフローでは（ステップＳ３０３）となる。読みたそうとするＣＰＵユニット１ＣのＣＰＵユニット番号は３のため、ＣＰＵユニット１Ａのデバイスメモリ３Ａの３ブロック目１２Ａに読込むことになる。このようにして、ＣＰＵユニット１ＡのＭＰＵ２Ａによって通信路５Ａ，７Ｃを通してＣＰＵユニット１Ａのデバイスメモリ３ＡのＣＰＵユニットＣ用デバイスデータエリア１２Ａに書きこまれる。図３のフローでは（ステップＳ３０５）となる。
【００４２】
その後、ＣＰＵユニット１ＣのＣＰＵユニット間通信用２ポートメモリ４Ｃとの接続を切ることにより、ＣＰＵユニット１Ｃのデバイステータの交信を完了する。図３のフローでは（ステップＳ３０６）となる。
【００４３】
上述の処理により、ＣＰＵユニット１ＡとＣＰＵユニット１Ｂ，ＣＰＵユニット１Ｃとのデータ交信が完了となる。図３のフローでは（ステップＳ３０８）となる。
【００４４】
同様にして、ＣＰＵユニット１ＢとＣＰＵユニット１Ａ，ＣＰＵユニット１Ｃとのデータ交信、ＣＰＵユニット１ＣとＣＰＵユニット１Ａ，ＣＰＵユニット１Ｂとのデータ交信が行われる。
【００４５】
その後、各々のＣＰＵユニット１Ａ，１Ｂ，１Ｃは、自ＣＰＵユニットのＣＰＵユニット間通信用２ポートメモリ４Ａ，４Ｂ，４Ｃの他の自ＣＰＵユニットのデータ格納エリア内容を、自デバイスメモリ３Ａ，３Ｂ，３Ｃの他のＣＰＵユニット用デバイスデータエリアに転送する。
【００４６】
このように構成されたマルチＣＰＵユニットにおいては、マルチＣＰＵ制御を構成する各々のＣＰＵユニット１Ａ，１Ｂ，１ＣのＣＰＵユニット間通信用２ポートメモリ４Ａ，４Ｂ，４Ｃに自ＣＰＵユニットのＣＰＵユニット用データ格納エリアだけを設ければ良いのでメモリ容量の軽減をすることができる。また、マルチＣＰＵ制御を構成しているＣＰＵユニットの数が増えた場合でもＣＰＵユニット間通信用２ポートメモリにデバイステータを書く回数は一度でよいため、処理速度の軽減を図ることができる。
【００４７】
実施の形態２．
図５は本発明のマルチＣＰＵユニットの他の例を示すデバイスメモリおよびＣＰＵユニット間通信用２ポートメモリの詳細を示した図である。図５において、デバイスメモリ３Ａは、ＣＰＵユニット１Ａ用デバイスデータエリア１０Ａ，ＣＰＵユニット１Ｂ用デバイスデータエリア１１Ａ，ＣＰＵユニット１Ｃ用デバイスエリア１２Ａを有している。また、ＣＰＵユニット間通信用２ポートメモリ４Ａは、ＣＰＵユニット１Ａ用データ格納エリア１４Ａ，ＣＰＵユニット１Ｂ用データ格納エリア１５Ａ，ＣＰＵユニット１Ｃ用データ格納エリア１６Ａを有してている。
【００４８】
一方、デバイスメモリ３Ｂは、ＣＰＵユニット１Ａ用デバイスデータエリア１０Ｂ，ＣＰＵユニット１Ｂ用デバイスデータエリア１１Ｂ，ＣＰＵユニット１Ｃ用デバイスエリア１２Ｂを有している。また、ＣＰＵユニット間通信用２ポートメモリ４Ｂは、ＣＰＵユニット１Ａ用データ格納エリア１４Ｂ，ＣＰＵユニット１Ｂ用データ格納エリア１５Ｂ，ＣＰＵユニット１Ｃ用データ格納エリア１６Ｃを有している。
【００４９】
さらに、デバイスメモリ３Ｃは、ＣＰＵユニット１Ａ用デバイスデータエリア１０Ｃ，ＣＰＵユニット１Ｂ用デバイスデータエリア１１Ｃ，ＣＰＵユニット１Ｃ用デバイスエリア１２Ｃを有している。また、ＣＰＵユニット間通信用２ポートメモリ４Ｃは、ＣＰＵユニット１Ａ用データ格納エリア１４Ｃ，ＣＰＵユニット１Ｂ用データ格納エリア１５Ｃ，ＣＰＵユニット１Ｃ用データ格納エリア１６Ｃを有している。その他の構成は、実施の形態１と同様である。
【００５０】
図６、図７は本実施の形態の処理フローである。それぞれのＣＰＵユニット１Ａ，１Ｂ，１ＣのＯＳ６Ａ，６Ｂ，６Ｃは、自ＣＰＵユニット番号から隣のＣＰＵユニット番号を認識している。
【００５１】
本実施の形態においては、まず、ＣＰＵユニット１Ａのデバイスメモリ３ＡのＣＰＵユニット１Ａ用デバイスデータエリア１０Ａの内容を、ＣＰＵユニット１ＡのＣＰＵユニット間通信用２ポートメモリ４ＡのＣＰＵユニット１Ａ用データ格納エリア１４Ａに書込む。
【００５２】
同様に、ＣＰＵユニット１Ｂのデバイスメモリ３ＢのＣＰＵユニット１Ｂ用デバイスデータエリア１１Ｂの内容をＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリ４ＢのＣＰＵユニット１Ｂ用データ格納エリ大１５Ｂに書き込む。
【００５３】
同様に、ＣＰＵユニット１Ｃのデバイスメモリ３ＣのＣＰＵユニット１Ｃ用デバイスデータエリア１２Ｃの内容をＣＰＵユニット１ＣのＣＰＵユニット間通信用２ポートメモリ４ＣのＣＰＵユニット１Ｂ用データ格納エリ大１６Ｃに書き込む。
【００５４】
ＣＰＵユニット１Ｂの隣は、ＣＰＵユニット１Ｃと認識しているとするとＣＰＵユニット１ＢのＯＳ６Ｂにより、隣のＣＰＵユニット１ＣのＣＰＵユニット間通信用２ポートメモリ４Ｃに接続しＣＰＵユニット１Ｃ用データ格納エリア１６Ｃの内容をＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリ４ＢのＣＰＵユニット１Ｃ用データ格納エリア１６Ｂに書き込む。ＣＰＵユニット間通信用２ポートメモリのエリアは従来例と同様にＣＰＵユニット番号から算出される。
【００５５】
上述処理後の状態でＣＰＵユニット１Ａを基準として説明する。ＣＰＵユニット１Ａの隣のＣＰＵユニットをＣＰＵユニット１ＢとＯＳ６Ａが認識する。そして、ＯＳ６Ａは、隣のＣＰＵユニット１ＢのＣＰＵ間通信用２ポートに接続する。図６のフローでは（ステップＳ６０２）となる。ＣＰＵユニット番号ｎと自ＣＰＵユニットのＣＰＵユニット番号とを比較する。図６のフローでは（ステップＳ６０４）となる。接続しているＣＰＵユニット１ＢのＣＰＵ間通信用２ポートメモリ４Ｂのｎブロック目の内容をＣＰＵユニット１ＡのＣＰＵユニット間通信用２ポートメモリ４Ａのｎブロック目にＯＳ６Ａが転送する。図６のフローでは（ステップＳ６０５）となる。この場合、ＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリ４ＢのＣＰＵユニット１Ｂ用データ格納エリア１５Ｂの内容をＣＰＵユニット１ＡのＣＰＵユニット間通信用２ポートメモリ４ＡのＣＰＵユニット１Ｂ用データ格納エリア１５Ａに転送することとなる。その転送されたＣＰＵユニット１Ｂ用データ格納エリア１５Ａにあるデバイステータの内容をＣＰＵユニット１Ａのデバイスメモリ３ＡのＣＰＵユニット１用デバイスデータエリア１１Ａに転送する。図６のフローでは（ステップＳ６０６）となる。デバイスメモリのエリアはＣＰＵユニット番号Ｎによって算出される。この場合、Ｎは２ということから２ブロック目のＣＰＵユニットＢ用デバイスデータエリア１１Ａとなる。このＣＰＵユニット番号ｎをマルチＣＰＵ制御を構成しているＣＰＵユニットの数分だけインクリメントしていき、ＣＰＵユニット分が完了するまで同様の処理を行う。図６のフローでは（ステップＳ６０７，Ｓ６０８）となる。この場合、ＣＰＵユニット１ＣがあるのでＣＰＵユニット１ＡのＣＰＵユニット間通信用２ポートメモリ４ＡのＣＰＵユニット１Ｃ用データ格納エリア１６Ａの内容をデバイスメモリ３ＡのＣＰＵユニット１Ｃ用デバイスエリア１２Ａに転送することとなる。ＣＰＵユニット分の転送が完了した後、ＣＰＵユニット１ＡのＯＳ６ＡがＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリとの切り離しをする、これで、ＣＰＵユニット１Ａのデータ交信処理が完了する。図６のフローでは（ステップＳ６０９）となる。
【００５６】
このような構成のマルチＣＰＵユニットにおいては、マルチＣＰＵ制御を構成する各々のＣＰＵユニット１Ａ，１Ｂ，１ＣのＣＰＵユニット間通信用２ポートメモリ４Ａ，４Ｂ，４ＣにマルチＣＰＵ制御を構成するすべてのＣＰＵユニット分のデータ格納エリアを設け、自ＣＰＵユニットの隣のＣＰＵユニットという認識を各ＣＰＵユニットに与えることにより、隣のＣＰＵユニットのＣＰＵユニット間通信用２ポートメモリからマルチＣＰＵ制御を構成する全てのＣＰＵユニット分のデバイステータを読むことから、ＣＰＵユニット通信用２ポートメモリへの接続、開放を一度とすることができ、データ交信処理の時間短縮が図れる。また、請求項１と同様にマルチＣＰＵ制御を構成するＣＰＵユニットが増えた場合でも、自らのデバイスメモリから自らのＣＰＵユニット間通信用２ポートメモリに書く回数は一度でよくなり、さらなるデータ交信処理の時間短縮が図れる。
【００５７】
実施の形態３．
図８は本発明のマルチＣＰＵユニットの他の例を示すユニット番号指定転送命令である。図８において、８０１は命令名、８０２は直接書込むＣＰＵユニットの番号を指定する箇所である。ユニット番号指定転送命令８０１は、自ＣＰＵユニットのデバイスメモリのデバイスデータを指定されたＣＰＵユニットのＣＰＵユニット通信用２ポートメモリに直接書き込む。
【００５８】
図９は上述のユニット番号指定転送命令の実際の例である。９０ＡはＣＰＵユニット１Ａに、９０ＢはＣＰＵユニット１Ｂに、９０ＣはＣＰＵユニット１Ｃにそれぞれ対応している。９１Ａ，９１Ｂ，９１Ｃは命令名である。
【００５９】
すなわち、９２ＡはＣＰＵユニット番号２のＣＰＵユニット間通信用２ポートメモリにデバイスデータを書くことを示しており、９２ＢはＣＰＵユニット番号１のＣＰＵユニット間通信用２ポートメモリにデバイスデータを書くことを示しており、９２ＣはＣＰＵユニット番号１のＣＰＵユニット間通信用２ポートメモリにデバイスデータを書くことを示している。
【００６０】
図１０は上記命令実行時のフローチャートである。このユニット番号指定転送命令を用いてマルチＣＰＵ制御におけるデータ交信を行う。ＣＰＵユニット１Ａを基準として説明する。
【００６１】
ＣＰＵユニット１Ａが直接書くことができるＣＰＵユニットをＣＰＵユニット１Ｂと指定（図９の９２Ａ）、ＣＰＵユニット１Ｂが直接書くことができるＣＰＵユニットをＣＰＵユニット１Ａと指定（図９の９２Ｂ）、ＣＰＵユニット１Ｃが直接書くことができるユニットをＣＰＵユニット１Ａと指定（図９の９２Ｃ）とする。これを図１０の処理フローで表すと（ステップＳ１００１〜Ｓ１００４）となる。この設定によりＣＰＵユニット１ＢのＣＰＵユニット間通信用２ポートメモリ４ＢのＣＰＵユニット１Ａ用データ格納エリア１４Ｂに、ＣＰＵユニット１Ａのデバイスメモリのデータが格納される。
【００６２】
また、ＣＰＵユニット１ＡのＣＰＵユニット間通信用２ポートメモリ４ＡのＣＰＵユニット１Ｂ用データ格納エリア１５Ａ、ＣＰＵユニット１Ｃ用データ格納エリア１６Ａには、それぞれユニット１Ｂ、ＣＰＵユニット１Ｃのデバイスデータが格納される。図１０の処理フローでは（ステップＳ１００５〜Ｓ１００９）となる。
【００６３】
ＣＰＵユニット間通信用２ポートメモリ４Ａへの格納ブロックは、従来例と同様にＣＰＵユニット番号から算出される。ＣＰＵユニット１Ａは、自ＣＰＵユニットのＣＰＵユニット間通信用２ポートメモリ４ＡのＣＰＵユニット１Ｂ用データ格納エリア１５Ａの内容とＣＰＵユニット１Ｃ用データ格納エリア１６Ａの内容を、デバイスメモリ３ＡのＣＰＵユニットＢ用デバイスデータエリア１１Ａ、ＣＰＵユニット１Ｃ用デバイスデータエリア１２Ａに転送することによりマルチＣＰＵ制御でのデータ交信が行われる。
【００６４】
このような構成のマルチＣＰＵユニットにおいては、マルチＣＰＵ制御を構成している自ＣＰＵユニット以外のどのＣＰＵユニットのＣＰＵユニット間通信用２ポートメモリに書くかを命令で指定して、その指定されたＣＰＵユニットのＣＰＵユニット間通信用２ポートメモリに書くことにより、図１０に示される転送のフローチャートにおいて、ｎをインクリメントしながらループする個所がなくなりプログラムが単純化する。また、データ転送をしないＣＰＵユニットの指定も容易に行える。
【００６５】
【発明の効果】
この発明に係るマルチＣＰＵユニットにおいては、マルチＣＰＵ制御で使用される複数のＣＰＵユニットを備え、各々のＣＰＵユニットは、デバイスデータを扱うためのデバイスメモリと、自他ＣＰＵユニットから読み書きできる自ＣＰＵユニット用データ格納エリアのみ有する２ポートメモリでなる共有メモリと、データ転送の手順が記述されたＯＳと、ＯＳに記述された手順に基づいて他ＣＰＵユニットと自ＣＰＵユニットの間でのデータ転送を行うマイクロプロセッサとを有し、各々のマイクロプロセッサは、デバイスメモリに記憶されたデバイスデータを自共有メモリの自ＣＰＵユニット用データ格納エリアに書き込むと共に、他ＣＰＵユニットの共有メモリに記憶されたデバイスデータを自ＣＰＵユニットのデバイスメモリに他の記憶手段を介在することなしに直接読込む。そのため、共有メモリには、自ＣＰＵユニットの格納エリアだけを設ければ良いのでメモリ容量の軽減をすることができる。また、マルチＣＰＵ制御を構成しているＣＰＵユニットの数が増えた場合でも共有メモリにデバイステータを書く回数は一度でよいため、処理速度の軽減を図ることができる。
【００６６】
また、デバイスメモリは、自ＣＰＵユニット用デバイステータエリアおよび他ＣＰＵユニット数分の他ＣＰＵユニット用デバイステータエリアを有し、各々のマイクロプロセッサは、他ＣＰＵユニットの共有メモリに記憶されたデバイスデータを自デバイスメモリの他ＣＰＵユニット用デバイステータエリアに直接読込む。そのため、共有メモリには、自ＣＰＵユニットの格納エリアだけを設ければ良いのでメモリ容量の軽減をすることができる。また、マルチＣＰＵ制御を構成しているＣＰＵユニットの数が増えた場合でも共有メモリにデバイステータを書く回数は一度でよいため、処理速度の軽減を図ることができる。
【図面の簡単な説明】
【図１】  本発明のマルチＣＰＵユニットの構成図である。
【図２】  デバイスメモリおよびＣＰＵユニット間通信用２ポートメモリの詳細を示した図である。
【図３】  データ転送に関するソフトウエアを示すフローチャートである。
【図４】  データ転送に関するソフトウエアを示すフローチャートである。
【図５】  本発明のマルチＣＰＵユニットの他の例を示すデバイスメモリおよびＣＰＵユニット間通信用２ポートメモリの詳細を示した図である。
【図６】  データ転送に関するソフトウエアを示すフローチャートである。
【図７】  データ転送に関するソフトウエアを示すフローチャートである。
【図８】  本発明のマルチＣＰＵユニットの他の例を示すユニット番号指定転送命令を示した図である。
【図９】  ユニット番号指定転送命令の実際の例を示した図である。
【図１０】  ユニット番号指定転送命令実行時のフローチャートである。
【図１１】  従来のマルチＣＰＵユニットの構成図である。
【図１２】  デバイスメモリおよびＣＰＵユニット間通信用２ポートメモリの詳細を示した図である。
【図１３】  デバイスメモリと通信用２ポート間のデータ転送に関するソフトウエアを示すフローチャートである。
【図１４】  デバイスメモリと通信用２ポート間のデータ転送に関するソフトウエアを示すフローチャートである。
【符号の説明】
１Ａ，１Ｂ，１Ｃ  ＣＰＵユニット、２Ａ，２Ｂ，２Ｃ  マイクロプロセッサ、３Ａ，３Ｂ，３Ｃ  デバイスメモリ、４Ａ，４Ｂ，４Ｃ  共有メモリ（２ポートメモリ）、６Ａ，６Ｂ，６Ｃ  ＯＳ。
【図１】
0003938471.tif 000002
【図２】
0003938471.tif 000003
【図３】
0003938471.tif 000004
【図４】
0003938471.tif 000005
【図５】
0003938471.tif 000006
【図６】
0003938471.tif 000007
【図７】
0003938471.tif 000008
【図８】
0003938471.tif 000009
【図９】
0003938471.tif 000010
【図１０】
0003938471.tif 000011
【図１１】
0003938471.tif 000012
【図１２】
0003938471.tif 000013
【図１３】
0003938471.tif 000014
【図１４】
0003938471.tif 000015