(57)【要約】【課題】マルチプロセッサシステムの処理能力の向上を図る。【解決手段】本システムは、ＳＰＩ通信のスレーブプロセッサ２、ＳＰＩ通信のマスタプロセッサ２、両プロセッサをつなぐＳＰＩケーブル５、両プロセッサの間をつなぐＳＣＩケーブル４、を有する。スレーブプロセッサ２は、データの送信及び受信のうち少なくとも一方を要求する通信要求コマンドを、ＳＣＩケーブル４を介してマスタプロセッサ３に送信するコマンド通信部２２０を有し、マスタプロセッサ３は、スレーブプロセッサ２からの通信要求コマンドに応じて、スレーブプロセッサとの通信を開始し、ＳＰＩケーブル５を介してデータを送受信するデータ通信部３１０を有する。【選択図】  図４
2004272386.tif 000002
【特許請求の範囲】
【請求項１】
スレーブプロセッサと、
前記スレーブプロセッサにつながれた第一通信路と、
前記第一通信路につながれ、当該第一通信路を介した、前記スレーブプロセッサとの通信を開始するマスタプロセッサと、
前記スレーブプロセッサと前記マスタプロセッサとの間をつなぐ、前記第一通信路よりも通信速度が低速な第二通信路と、
を有し、
前記スレーブプロセッサは、
データの送信及び受信のうち少なくとも一方を要求する通信要求コマンドを、前記第二通信路を介して前記マスタプロセッサに送信するコマンド通信手段を有し、
前記マスタプロセッサは、
前記スレーブプロセッサからの前記通信要求コマンドに応じて、前記第一通信路を介した、前記スレーブプロセッサとの、前記データの通信を開始するデータ通信手段を有することを特徴とするマルチプロセッサシステム。
【請求項２】
マスタにしたがうスレーブと定められた第１シングルマスタ型双方向通信インタフェースユニットと、前記第１シングルマスタ型双方向通信インタフェースユニットよりも通信速度の小さな第１マルチマスタ型双方向通信インタフェースユニットとを有するスレーブプロセッサと、
前記スレーブとの通信を開始するマスタと定められた第シングルマスタ型双方向通信インタフェースユニットと、前記第２シングルマスタ型双方向通信インタフェースユニットよりも通信速度の小さな第２マルチマスタ型双方向通信インタフェースユニットとを有するマスタプロセッサと、
前記第１シングルマスタ型双方向通信インタフェースユニットと前記第２シングルマスタ型双方向通信インタフェースユニットとをつなぐ第１通信ケーブルと、
前記第１マルチマスタ型双方向通信インタフェースユニットと前記第２マルチマスタ型双方向通信インタフェースユニットとをつなぐ第２通信ケーブルと、
を有し、
前記スレーブプロセッサは、
データの通信開始を前記マスタプロセッサに要求する通信要求コマンドを、前記第１マルチマスタ型双方向通信インタフェースユニットから、前記第２通信ケーブルを介して前記マスタプロセッサに送信する第１コマンド通信手段を有し、
前記マスタプロセッサは、
前記第２マルチマスタ型双方向通信インタフェースが受信した前記通信要求コマンドに応じて、前記シングルマスタ双方向通信インタフェースユニットとの通信を前記第２シングルマスタ型双方向通信インタフェースに開始させ、前記第１通信ケーブルを介して前記スレーブプロセッサに前記データを送信するデータ通信手段を有することを特徴とするマルチプロセッサシステム。
【請求項３】
請求項２記載のマルチプロセッサシステムであって、
前記第１シングルマスタ型双方向通信インタフェースユニット及び前記第２シングルマスタ型双方向通信インタフェースユニットは、ＳＰＩ（Ｓｅｒｉａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ）ユニットであることを特徴とするコントローラ。
【請求項４】
請求項２記載のマルチプロセッサシステムであって、
前記第１マルチマスタ型双方向通信インタフェースユニット及び前記第２マルチマスタ型双方向通信インタフェースユニットは、シリアル通信インタフェースユニット及びＩＥＥＥ１３９４インタフェースユニットのうちのいずれか一方であることを特徴とするマルチプロセッサシステム。
【請求項５】
請求項２記載のマルチプロセッサシステムであって、
前記マスタプロセッサは、
入力装置が接続され、前記入力装置の出力データを受け付ける入力手段を有し、
前記スレーブプロセッサは、
前記入力装置の出力データを用いた演算を行うプログラムを有し、
前記第１コマンド通信手段は、前記プログラムの要求に応じて、前記入力装置の出力データの送信を要求する第１通信要求コマンドを、前記第１マルチマスタ型双方向通信インタフェースユニットから前記マスタプロセッサに送信し、
前記データ通信手段は、前記第２マルチマスタ型双方向通信インタフェースユニットが前記第１通信要求コマンドを受信した場合には、当該第１通信要求コマンドに応じて、前記第１シングルマスタ型双方向通信インタフェースユニットからの、前記入力装置の出力データの受信を前記第２シングルマスタ型双方向通信インタフェースユニットに開始させることを特徴とするマルチプロセッサシステム。
【請求項６】
請求項５記載のマルチプロセッサシステムであって、
前記マスタプロセッサは、
前記入力装置に対応付けられ、当該入力装置の出力データが格納される第１入力ページを含む記憶手段を有し、
前記スレーブプロセッサは、
前記第１入力ページに対応付けられた第２入力ページを含む記憶手段を有し、
前記第１コマンド通信手段は、前記第１入力ページの指定を含む前記第１通信要求コマンドを送信し、
前記データ通信手段は、前記第１通信要求コマンドに含まれる指定が示す前記第１入力ページに格納されたデータの受信を前記第２シングルマスタ型双方向通信インタフェースユニットに開始させ、当該データを前記第２入力ページに格納することを特徴とするマルチプロセッサシステム。
【請求項７】
請求項２記載のマルチプロセッサシステムであって、
前記マスタプロセッサは、
出力装置が接続され、前記出力装置に入力データを入力する出力手段を有し、
前記スレーブプロセッサは、
前記入力データを算出するプログラムを有し、
前記第１コマンド通信手段は、前記プログラムの要求に応じて、前記入力データの受信を要求する第２通信要求コマンドを、前記第１マルチマスタ型双方向通信インタフェースユニットから前記マスタプロセッサに送信し、
前記データ通信手段は、前記第２マルチマスタ型双方向通信インタフェースユニットが前記第２通信要求コマンドを受信した場合には、当該第２通信要求コマンドに応じて、前記第１シングルマスタ型双方向通信インタフェースユニットへの、前記出力装置の入力データの送信を前記第２シングルマスタ型双方向通信インタフェースユニットに開始させることを特徴とするマルチプロセッサシステム。
【請求項８】
請求項７記載のマルチプロセッサシステムであって、
前記スレーブプロセッサは、
前記出力装置に対応付けられ、当該出力装置の入力データが前記プログラムにより格納される第１出力ページを含む記憶手段を有し、
前記第１コマンド通信手段は、前記第１出力ページの指定を含む前記第２通信要求コマンドを送信し、
前記データ通信手段は、前記第２通信要求コマンドに含まれる指定が示す前記第１出力ページに格納された前記入力データの送信を前記第２シングルマスタ型双方向通信インタフェースユニットに開始させ、
前記マスタプロセッサは、
前記第１出力ページに対応付けられた第２出力ページを含む記憶手段と、
前記第２シングルマスタ型双方向通信インタフェースユニットが前記第２通信要求コマンドに応じて送信したデータを、前記第２出力ページに格納するデータ通信手段と、
を有することを特徴とするマルチプロセッサシステム。
【請求項９】
請求項２記載のマルチプロセッサシステムであって、
前記マスタプロセッサは、第１プログラムを有し、
前記スレーブプロセッサは、前記第１プログラムと協動する第２プログラムを有し、
前記第１コマンド通信手段は、前記第２プログラムの要求に応じて、前記第１プログラムの出力データの送信を要求する第１通信要求コマンド及び前記第２プログラムの出力データの受信を要求する第２通信要求コマンドを、前記第１マルチマスタ型双方向通信インタフェースユニットから前記マスタプロセッサに送信し、
前記データ通信手段は、前記第２マルチマスタ型双方向通信インタフェースユニットが前記第１通信要求コマンドを受信した場合には、当該第１通信要求コマンドに応じて、前記第２シングルマスタ型双方向通信インタフェースユニットに、前記第１シングルマスタ型双方向通信インタフェースユニットへの、前記第１プログラムの出力データの送信を開始させ、前記第２マルチマスタ型双方向通信インタフェースユニットが前記第２通信要求コマンドを受信した場合には、当該第２通信要求コマンドに応じて、前記第１シングルマスタ型双方向通信インタフェースユニットへの、前記第２プログラムの出力データの受信を前記第２シングルマスタ型双方向通信インタフェースユニットに開始させることを特徴とするマルチプロセッサシステム。
【請求項１０】
請求項２記載のマルチプロセッサシステムであって、
前記第１マルチマスタ型双方向通信インタフェースユニットと前記第２マルチマスタ型双方向通信インタフェースユニットとに接続された第３通信ケーブルを有し、
前記マスタプロセッサは、
前記スレーブプロセッサに対するコマンドを、前記第２マルチマスタ型双方向通信インタフェースユニットから、前記第３通信ケーブルを介して前記スレーブプロセッサに送信する第２コマンド通信手段を有し、
当該第２コマンド通信手段は、
前記第２マルチマスタ型双方向通信インタフェースユニットが、前記第２通信ケーブルを介して前記通信要求コマンドを受信した場合には、前記第２マルチマスタ型双方向通信インタフェースユニットから、前記第２通信ケーブルを介して確認メッセージを前記スレーブプロセッサに送信し、
前記第１コマンド通信手段は、前記第２マルチマスタ型双方向通信インタフェースユニットが、前記第３通信ケーブルを介して前記コマンドを受信した場合には、前記第３通信ケーブルを介して確認メッセージを前記マスタプロセッサに送信することを特徴とするマルチプロセッサシステム。
【請求項１１】
請求項２記載のマルチプロセッサシステムであって、
前記第１マルチマスタ型双方向通信インタフェースユニットは、前記スレーブプロセッサの内部または外部に設けられ、前記第２マルチマスタ型双方向通信インタフェースユニットは、前記マスタプロセッサの内部または外部に設けられることを特徴とするマルチプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチプロセッサシステムにおけるプロセッサ間通信技術に関する。
【０００２】
【従来の技術】
処理能力向上のため、自動車制御用のコントローラ等にはマルチプロセッサシステムが採用されることがある。コストパフォーマンス向上等の観点から、通常のマルチプロセッサシステムでは、複数のプロセッサが、それぞれのプロセッサに内蔵されたシリアル通信インタフェース（ＳＣＩ：Ｓｅｒｉａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ）で接続されている。ＳＣＩの通信速度は、プロセッサの機種にも依存するが最大毎秒５００Ｋ〜１Ｍビット程度である。
【０００３】
一方、ＳＣＩよりも高速なシリアル通信インタフェースとして、周辺装置用通信インタフェース（ＳＰＩ：Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）が知られている。このＳＰＩは、プロセッサの機種にも依存するが最大毎秒４Ｍ〜１０Ｍビット程度の通信速度でデータを伝送可能であるが、周辺回路との接続を行うためのシングルマスタ型の全二重双方向通信であるため、送信を開始できるマスタをシリアル線上に１つしか存在させることができない。
【０００４】
例えば、こようなのＳＰＩを利用したシステムとして、マイクロコンピュータとマイクロコンピュータのメモリデータをモニタする外部装置との間をＳＣＩケーブル及びＳＰＩケーブルで接続したシステムが特開平９−２９３０４７号公報（特許文献１）に記載されている。このシステムにおいて、ＳＣＩケーブルは、外部装置がマイクロコンピュータにメモリデータ上位アドレスを送信するために利用され、ＳＰＩケーブルは、外部装置がマイクロコンピュータにメモリデータ下位アドレスを送信するため及びマイクロコンピュータからメモリデータを受信するために利用される。
【特許文献１】
特開平９−２９３０４７号公報
【０００５】
【発明が解決しようとする課題】
ところで、マルチプロセッサシステムには、一層の処理能力の向上が望まれている。例えば、電気自動車、ハイブリッド自動車、電磁駆動弁を用いたエンジン等の登場に伴い、自動車制御用のマルチプロセッサシステムには、より多くの制御対象及びセンサを接続する必要が生じ、プロセッサ間通信速度をより高速化する必要も生じている。
【０００６】
そこで、本発明は、マルチプロセッサシステムの処理能力を向上させることを目的とする。
【０００７】
【課題を解決するための手段】
本発明においては、
スレーブプロセッサと、
前記スレーブプロセッサにつながれた第一通信路と、
前記第一通信路につながれ、当該第一通信路を介した通信を開始する第二プロセッサと、
前記スレーブプロセッサと前記マスタプロセッサとの間をつなぐ、前記第一通信路よりも通信速度が低速な第二通信路と、
を有し、
前記スレーブプロセッサは、
データの送信及び受信のうち少なくとも一方を要求するコマンドを、前記第二通信路を介して前記マスタプロセッサに送信するコマンド通信手段を有し、
前記マスタプロセッサは、
前記スレーブプロセッサからの前記コマンドに応じて、前記第一通信路を介した、前記スレーブプロセッサとの、前記データの通信を開始するデータ通信手段を有することを特徴とするマルチプロセッサシステムを提供する。
【０００８】
【発明の実施の形態】
以下、添付図面を参照しながら、本発明に係る実施の形態について説明する。
【０００９】
まず、図１により、本実施の形態に係るマルチプロセッサシステムのハードウエア構成について説明する。なお、ここでは、マルチプロセッサシステムの一例として、自動車制御用のコントロールユニット１の内部システムを挙げることとする。
【００１０】
本実施の形態に係るコントロールユニット１は、互いに異なる通信速度でデータを伝送する２種類の通信ケーブル４，  ５、２種類の通信ケーブル４，５で接続された２つのプロセッサ２，３を有する。
【００１１】
２種類の通信ケーブル４，５のうち、一方の通信ケーブル４は、２本の信号線を含むＳＣＩケーブルであり、他方の通信ケーブル５は、３本の信号線を含むＳＰＩケーブルである。ＳＣＩケーブル４の２本の信号線は、一方のプロセッサ２が有するＳＣＩユニット（後述）のＴＸポートと他方のプロセッサ３が有するＳＣＩユニット（後述）のＲＸポートとの間、及び、一方のプロセッサ２が有するＳＣＩユニットのＲＸポートと他方のプロセッサ３が有するＳＣＩユニットのＴＸポートとの間をつないでいる。一方、ＳＰＩケーブル５の信号線のうち、１本の信号線は、２つのプロセッサ２，３が有するＳＰＩユニット（後述）のＣＬＫポート間をつなぎ、他の２本の信号線は、一方のプロセッサ２が有するＳＰＩユニットのＭＩポートと他方のプロセッサ３が有するＳＰＩユニットのＳＯポートとの間、及び、一方のプロセッサ２が有するＳＰＩユニットのＭＯポートと他方のプロセッサ３が有するＳＰＩユニットのＳＩポートとの間をつないでいる。
【００１２】
一方、各プロセッサ２，３は、自動車の制御に関する処理が定義されたプログラム等の各種データを保持する内蔵メモリ（ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、Ｆｌａｓｈメモリ等）２２，３２、内蔵メモリ２２，３２等からフェッチした命令を実行する演算ユニット２１，３１、ＳＣＩケーブル４が接続されるとともにクロック同期式または調歩同期式の全二重シリアル通信を実現するＳＣＩユニット２３，３３、ＳＰＩケーブル５が接続されるとともにクロック同期式の全二重シリアル通信を実現するＳＰＩユニット２４，３４、制御対象となる１つ以上の出力装置（例えば、アクチュエータ、リレー）８ａ，８ｂにデータを入力する出力ユニット（例えば、Ｉ／Ｏポート、ＡＤコンバータ）２６，３６、制御対象の状態に相関する情報を検知する１つ以上の入力装置（例えば、センサ類）９ａ，９ｂの出力を受け付ける入力ユニット（例えば、Ｉ／Ｏポート、ＡＤコンバータ）２５，３５、これらのユニットを相互に接続する内部バス２８，３８、を有している。なお、図１には、２つのプロセッサ２，３の入力ユニット２５，３５及び出力ユニット２６，３６に入力装置９ａ，９ｂ及び出力装置８ａ，８ｂが接続された構成を例示しているが、いずれか一方のプロセッサの入力ユニット及び出力ユニットだけに入力装置及び出力装置が接続されることもある。
【００１３】
ＳＣＩユニット２３，３３は、２つのプロセッサ２，３のいずれからでも通信（以下、ＳＣＩ通信）を開始できるマルチマスタ型通信インタフェースである。ＳＣＩは基本的には１ｂｙｔｅ単位のデジタル入出力であるが、例えば８ｂｙｔｅ程度の送受信バッファをＳＣＩユニット内に設ければ、連続して数ｂｙｔｅのデータを送受信可能である。
【００１４】
ＳＰＩユニット２４，３４は、マスタプロセッサと定められた１つのプロセッサ（本実施の形態ではプロセッサ３）からのみ他のプロセッサ（スレーブプロセッサ）との通信（以下、ＳＰＩ通信）を開始できるシングルマスタ型の通信インタフェースである。これらのＳＰＩユニット２４，３４は、ＳＰＩケーブル５を介して他方のＳＰＩユニットから転送されたデータを保持するための数十ｂｙｔｅ程度の受信バッファ２４Ａ，３４Ａ、及び、ＳＰＩケーブル５を介して他方のＳＰＩユニットに転送されるデータを保持するための数十ｂｙｔｅ程度の送信バッファ２４Ｂ，３４Ｂを有している。マスタプロセッサ３がＣＳ（Ｃｈｉｐ  Ｓｅｌｅｃｔ）信号によって宛先スレーブプロセッサ２を指定すると、マスタプロセッサ３のＳＰＩユニット（マスタ）３４の送信バッファ３４Ｂ内のデータが、マスタの生成するクロック信号と同期して、スレーブプロセッサ２のＳＰＩユニット（スレーブ）２４の受信バッファ２４Ａに転送されるとともに、スレーブの送信バッファ２４Ｂ内のデータがマスタの受信バッファ３４Ａへ転送される。
【００１５】
なお、以上述べたハードウエア構成は、一例であり、必要に応じて、適宜の変更を加えることができる。例えば、内蔵メモリのみではメモリ容量が不足する場合、または、書換え回数の少ないＦｌａｓｈメモリが内蔵メモリとして用いられている場合には、内蔵メモリのメモリ容量または書換え回数を補うため、図１に破線で示したように、外部バス６ａ，６ｂを介してプロセッサ２，３に外部メモリ（ＲＡＭ、Ｆｌａｓｈメモリ等）７ａ，７ｂを接続することが望ましい。また、図１に示した構成では、ＳＣＩユニット及びＳＰＩユニットがプロセッサに内蔵されているが、例えばプロセッサ２，３として比較的低機能な小型のものを用いる場合には、ＳＣＩユニット及びＳＰＩユニットをプロセッサ外部に設けてもよい。
【００１６】
このようなハードウエア構成を有するマルチプロセッサシステムによれば、自動車制御のための機能を２つのプロセッサ２，３に分散する機能分散システム、及び、自動車制御に伴う負荷を２つのプロセッサ２，３に分散する負荷分散システムのいずれも実現することができる。ここでは、入出力プロセッサ３の入力ユニット３５及び出力ユニット３６にだけ入力装置及び出力装置を１つ以上ずつ接続して、出力装置に関する制御処理（制御プログラム）をスレーブプロセッサ（以下、制御プロセッサ）２に割り当て、各外部装置（入力装置、出力装置）との入出力処理（入出力ドライバ）及び制御プロセッサ２上の制御プログラムによる演算結果の判定処理（アプリケーションプログラム）をマスタプロセッサ（以下、入出力プロセッサ）３に割り当てることによって実現した機能分散システムを例として、以下、２つのプロセッサ２，３の内蔵メモリ２２，２３のバッファ領域及びソフトウエア構成を説明する。
【００１７】
２つのプロセッサ２，３の内蔵メモリ２２，３２（外部メモリ６，７が設けられている場合には、内蔵メモリ２２，３２または外部メモリ６，７）の記憶領域には、ＳＰＩユニットを介して送信するデータ及びＳＰＩユニットを介して受信したデータを保持するためのバッファ領域が含まれる。それらのバッファ領域は、図２に示すように、固定長の固定記憶領域であるページ単位で管理され、それぞれのページには、ページＩＤとしてページ番号Ｐ１，    ＰＮが割り当てられている。
【００１８】
入出力プロセッサ３のページ群には、複数の入力ページ３Ｃ、複数の出力ページ３Ｄが含まれ、制御プロセッサ２のページ群には、入出力プロセッサ３の各入力ページ３Ｃと同じページ番号が与えられた複数の入力ページ２Ｃ、入出力プロセッサ３の各出力ページ３Ｄと同じページ番号が与えられた複数の出力ページ２Ｄが含まれる。入出力プロセッサ３の各入力ページ３Ｃには、自身に対応付けられた入力装置の出力データが入出力ドライバによって格納され、制御プロセッサ２の各入力ページ２Ｃには、自身と同じページ番号の入力ページ３Ｃのデータがコピーされる。一方、制御プロセッサ２の各出力ページ２Ｄには、自身に対応付けられた出力装置への入力が制御プログラムによって格納され、入出力プロセッサ３の各出力ページ３Ｄには、自身と同じページ番号の出力ページ２Ｄのデータがコピーされる。このため、制御プロセッサ２上の制御プログラムは、制御プロセッサ２の入力ページ２Ｃからデータをリードすることによって、入出力プロセッサ２側の入力装置の出力を取得することができ、入出力プロセッサ３上の入出力ドライバは、入出力プロセッサ３の出力ページ３Ｄからデータをリードすることによって、制御プロセッサ２上の制御プログラムの出力（出力装置への入力データ）を取得することができる。
【００１９】
さらに、入出力プロセッサ３のページ群には、複数のライトオンリページ３Ａと複数のリードオンリページ３Ｂとを有する共有メモリページが含まれ、制御プロセッサ２のページ群には、入出力プロセッサ３の各リードオンリページ３Ｂと同じページ番号が与えられた複数のライトオンリページ２Ｂと入出力プロセッサ３の各ライトオンリページ３Ａと同じページ番号が与えられた複数のリードオンリページ２Ａとを有する共有メモリページが含まれる。
【００２０】
入出力プロセッサ３の各ライトオンリページ３Ａには、自身に対応付けられたアプリケーションプログラムの出力が格納され、制御プロセッサ２の各リードオンリページ２Ａには、自身と同じページ番号のライトオンリページ３Ａのデータがコピーされる。一方、制御プロセッサ２の各ライトオンリページ２Ｂには、自身に対応付けられた制御プログラムの出力が格納され、入出力プロセッサ３の各リードオンリページ３Ｂには、自身と同じページ番号のライトオンリページ２Ｂのデータがコピーされる。る。このため、制御プロセッサ２上の制御プログラムは、制御プロセッサ２のリードオンリページ２Ａのデータをリードすることによって、入出力プロセッサ３上のアプリケーションプログラムの出力データを取得することができ、入出力プロセッサ３上のアプリケーションプログラムは、入出力プロセッサ３のリードオンリページ３Ｂのデータをリードすることによって、制御プロセッサ２上の制御プログラムの出力データを取得することができる。
【００２１】
なお、ＳＰＩユニットを介して送受信される通信データには、図３に示すように、これらのページに格納されるデータの格納領域Ｄ１の他、ページ番号の格納領域Ｄ２、パッドの格納領域（本実施の形態では未使用）Ｄ３、チェックサムの格納領域Ｄ４、チェックサムの１の補数の格納領域Ｄ５が設けられる。このため、これらのページのサイズは、ＳＰＩユニット２４，３４の受信バッファ及び送信バッファの容量よりも４バイト小さくしてある。ただし、これらの格納領域Ｄ２〜Ｄ５を通信データに設けない場合には、ページのサイズを、ＳＰＩユニット２４，３４の受信バッファ及び送信バッファの容量と同じにしてもよい。
【００２２】
図４に、２つのプロセッサ２，３のソフトウエア構成を示す。
【００２３】
制御プロセッサ２の内蔵メモリ２２に格納されたソフトウエアのなかには、出力装置に関する制御処理（エンジン制御、トルク制御、パワートレイン系制御、ボディ制御、ハイブリッド自動車及び電気自動車の場合にはさらにバッテリー制御等）ごとに準備された制御プログラム２００Ａ〜２００Ｍ、ＳＣＩ通信を行うコマンド通信部２２０を実現するプログラム群、ＳＰＩ通信を行うデータ通信部２１０を実現するプログラム群が含まれている。これらの概要は、以下の通りである。
【００２４】
各制御プログラム２００Ａ〜２００Ｍは、自身に対応付けられた入力装置の出力データを用いて制御処理を実行し、それにより、自身に対応付けられた出力装置に与えるための制御データを生成する。これら各制御プログラムは、コマンド通信部２２０が提供する機能により、自身に対応付けられた入力装置９ｂの出力を入出力プロセッサ３から取得し、かつ、自身に対応付けられた出力装置８ｂに入出力プロセッサ３から制御データを入力させる。
【００２５】
コマンド通信部２２０のプログラム群には、入出力プロセッサ３に対するコマンドを制御プログラム２００Ａ〜２００Ｍの要求に応じて生成する通信クライアント群、制御プログラム２００Ａ〜２００Ｍと通信クライアント群とのアプリケーションインタフェースを実現するインタフェースプログラム２２１、ＳＣＩ通信を制御する通信マネージャ２２３、入出力プロセッサ３からのコマンドを実行する通信サーバ（共有メモリサーバ）２２４、ＳＣＩユニット２３を制御するＳＣＩドライバ２２５が含まれている。
【００２６】
通信クライアント群には、出力ページ２Ｄのデータ受信を入出力プロセッサ３に要求する受信要求コマンド（ＲＥＣＶ＿ＯＵＴ）を生成する出力クライアント２２２Ｂ、入力ページ３Ｃのデータ送信を入出力プロセッサ３に要求する送信要求コマンド（ＸＭＩＴ＿ＩＮ）を生成する入力クライアント２２２Ｃ、ライトオンリページ２Ｂ，３Ａのデータ交換を入出力プロセッサ３に要求する送受信要求コマンド（ＳＹＮＣ＿ＰＡＧＥ）を生成する共有メモリクライアント２２２Ａが含まれる。これらの通信クライアント２２２Ａ〜２２２Ｃが生成したコマンドを入出力プロセッサ３に送信するためのコマンドメッセージには、図５に示すように、ＳＣＩコネクションの確立及び切断を要求するＳＣＩコマンド７１、コマンドメッセージの識別に用いられる１ビット以上のシーケンシャルビットデータ７２、通信クライアントが生成したコマンドに応じて提供されるサービスのＩＤ７３、通信クライアントが生成したコマンド（コマンド名、サービスごとにコマンドに割りふられたコマンドＩＤ）７４、通信クライアントが生成したコマンドの引数７５が含まれている。以下においてコマンドメッセージに格納する、サービスＩＤ、コマンド名、コマンドＩＤ及び引数の例を、図６の項目（１）〜（３）に示す。
【００２７】
インタフェースプログラム２２１には、制御プログラム２００Ａ〜２００Ｍの要求に応じて通信クライアント２２２Ａ〜２２２Ｃをコールする下記関数が含まれている。
（Ａ）ｉｎｐｕｔ＿ｓｙｎｃ（ｔｏｐ，ｎｕｍ）
第一引数ｔｏｐ：受信ページの先頭ページ番号、第二引数ｎｕｍ：受信ページ数
この入力関数は、入出力プロセッサ３の入力ページ３Ｃのデータをリードするためのインタフェースを、制御プロセッサ２上の制御プログラム群２００に提供する。具体的には、第一引数ｔｏｐが示す入力ページ３Ｃを先頭とする、第二引数ｎｕｍに相当するページ数分の一連の入力ページ３Ｃから、それらと同じページ番号の入力ページ３Ｃにデータが転送されるように、入力クライアント２２２Ｃをコールする。
（Ｂ）ｏｕｔｐｕｔ＿ｓｙｎｃ（ｔｏｐ，ｎｕｍ）
第一引数ｔｏｐ：送信ページの先頭ページ番号、第二引数ｎｕｍ：送信ページ数
この出力関数は、入出力プロセッサ３の出力ページ３Ｄにデータをライトするためのインタフェースを、制御プロセッサ２上の制御プログラム群２００に提供する。具体的には、第一引数ｔｏｐが示す出力ページ２Ｄを先頭とする、第二引数ｎｕｍに相当するページ数分の一連の出力ページから、それらと同じページ番号の出力ページ３Ｄにデータが転送されるように、出力クライアント２２２Ｂをコールする。
（Ｃ）ｒｅａｄ＿ｗｒｉｔｅ＿ｓｙｎｃ（ｒ＿ｐａｇｅ，ｗ＿ｐａｇｅ）
第一引数ｒ＿ｐａｇｅ：受信ページ番号、第二引数ｗ＿ｐａｇｅ：送信ページ番号
この共有メモリ関数は、制御プロセッサ２のライトオンリページ２Ｂのデータ及び入出力プロセッサ３のライトオンリページ３Ａのデータを交換するためのインタフェースを、制御プロセッサ２上の制御プログラム群２００及び入出力プロセッサ３上のアプリケーションプログラム群３００に提供する。具体的には、第二引数ｗ＿ｐａｇｅが示すライトオンリページ２Ｂから、そのライトオンリページと同じページ番号のリードオンリページ３Ｂにデータが転送され、かつ、第一引数ｒ＿ｐａｇｅ  が示すライトオンリページ３Ａから、そのライトオンリページと同じページ番号のリードオンリページ２Ａにデータが転送されるように、共有メモリクライアント２２２Ａをコールする。
【００２８】
共有メモリサーバ２２４は、入出力プロセッサ３からのコマンドのうち、送受信要求コマンド（ＳＹＮＣ＿ＰＡＧＥ）及び後述のリード要求コマンド（ＲＥＡＤ＿ＰＡＧＥ）を解釈及び実行し、それぞれのコマンドの実行結果を表す応答コマンド（正常終了を表すＡＣＫ、異常終了を表すＮＡＫ）を生成する。この応答コマンドを入出力プロセッサ３に送信するための応答メッセージのフォーマットは、通信クライアントが生成するコマンドメッセージのフォーマット（図５参照）と同じである。但し、データ領域７５には、サービスＩＤの代わりに、コマンドに対する応答であること示す応答ＩＤが格納される。以下において応答メッセージに格納する、応答ＩＤ、コマンド名、コマンドＩＤ及び引数の一例を、図６の項目（４）に示す。
【００２９】
通信マネージャ２２３は、通信クライアント２２２Ａ〜２２２Ｃ及び通信サーバ２２４が生成したメッセージの送信をＳＣＩドライバ２２５に依頼するとともに、ＳＣＩドライバ２２５が受信した、入出力プロセッサ３からのメッセージを、通信サーバ２２４またはコマンド発行元通信クライアントに渡す。また、通信マネージャ２２３は、複数のサービスが通信マネージャ２２３を同時使用しないように、通信マネージャを使用中のサービスのサービスＩＤを保持するクライアント使用権及びサーバ使用権を管理する。これにより通信マネージャ２２３の競合使用が防止されるため、例えば通信マネージャ２２３のコマンド保持用バッファが１コマンド分のサイズでよくなる。このため、通信マネージャ２２３が簡素化される。また、後述するように、通信マネージャ２２３は、クライアント使用権の参照により、入出力プロセッサ３からの応答メッセージの宛先クライアントを、通信クライアント２２２Ａ〜２２２Ｃのなかから特定することができるため、上述したように、応答メッセージにはサービスＩＤが加えられている必要がない。このため、低速なＳＣＩ通信のオーバヘッドを低減することができる。
【００３０】
ＳＣＩドライバ２２５は、初期化処理（ＳＣＩユニット２３の割込み設定、ボーレート設定等）、通信マネージャ２２３から渡されたメッセージをＳＣＩユニット２３から送信する送信処理、ＳＣＩユニット２３でメッセージを受信してそれを通信マネージャ２２３に渡す受信処理を実行する。なお、ＳＣＩドライバ２２５は、ＳＣＩレベルのエラー（パリティエラー、フレーミングエラー）を送信処理で検出したときにはメッセージ再送処理を実行し、ＳＣＩレベルのエラーを受信処理で検出したときには受信パケットを破棄する。また、必要に応じて、通信マネージャ、制御プログラム等にエラーの種別を通知する。
【００３１】
データ通信部２１０のソフトウエア群には、ページ管理プログラム２１１、ＳＰＩユニット２４を制御するＳＰＩドライバ２１２が含まれている。
【００３２】
ページ管理プログラム２１１は、外部からの通信クライアント２２２Ａ〜２２２Ｃ及び共有メモリサーバ２２４からの要求に応じて、出力ページ２Ｄまたはライトオンリページ２ＢからＳＰＩユニット２４の送信バッファ２４Ｂに、または、ＳＰＩユニット２４の受信バッファ２４Ａから入力ページ２Ｃまたはリードオンリページ２Ａにデータをページ単位で転送する。
【００３３】
ＳＰＩドライバ２２５は、ＳＰＩユニット２４の初期化処理（スレーブモード設定、ＳＰＩ通信完了後の割込み禁止設定）、コマンドメッセージ送信直前の通信クライアントの要求に応じてＳＰＩユニット２４をイネーブルにする送受信開始処理を実行する。また、ＳＰＩドライバ２２５は、送受信中のメッセージ化けを検出するため、送信前には、ＳＰＩユニット２４の送信バッファ２４Ｂのチェックサムを計算して、チェックサムと１の補数をコマンドメッセージにライトし、受信後には、ＳＰＩユニット２４の受信バッファ２４Ａのチェックサムを計算し、チェックサムと１の補数が正しいか否かをチェックする。なお、本実施の形態では、応答メッセージによってＳＰＩ通信の終了が通知されるようにするため、初期化処理で、ＳＰＩ通信完了後の割込みを禁止に設定しているが、応答メッセージの代わりに、ＳＰＩ通信完了時に割込みを発生させるようにする場合には、初期化処理で割込みを設定すればよい。
【００３４】
一方、入出力プロセッサ３の内蔵メモリ３２に格納されたソフトウエアのなかには、制御プロセッサ２の制御プログラムに対応付けて準備されたアプリケーションプログラム３００Ａ〜３００Ｍ、ＳＣＩ通信を行うコマンド通信部３２０を実現するプログラム群、ＳＰＩ通信を行うデータ通信部３１０を実現するプログラム群、入力装置９ｂの出力データ取込み及び出力装置８ｂへのデータ入力を実行する入出力ドライバ３５０が含まれる。これらの概要は、以下の通りである。なお、入出力プロセッサ２上のソフトウエアのうち、制御プロセッサ３上の同一名のソフトウエアと同様な処理を実行するものについては、詳細な説明を省略する。
【００３５】
各アプリケーションプログラム３００Ａ〜３００Ｍは、制御プロセッサ２上の制御プログラム２００Ａ〜２００Ｍの演算結果を判定するため、制御プロセッサ２上の制御プログラム２００Ａ〜２００Ｍと同様の処理を実行し、その結果と、制御プロセッサ２上の制御プログラム２００Ａ〜２００Ｍの演算結果とを比較する。これらの各アプリケーションプログラムは、コマンド通信部３２０が提供する機能によって、制御プロセッサ２上の制御プログラムの演算結果の判定のために必要なデータを、制御プロセッサ２上の制御プログラムと交換する。
【００３６】
コマンド通信部３２０のプログラム群には、アプリケーションプログラム３００Ａ〜３００Ｍの要求に応じたコマンドを生成する通信クライアント（共有メモリクライアント）３２２、アプリケーションプログラム群３００と共有メモリクライアント３２２とのアプリケーションインタフェースを実現するインタフェースプログラム３２１、制御プロセッサ２上の通信マネージャと同様なＳＣＩ通信を制御する通信マネージャ３２３、制御プロセッサ２からのコマンドに応じたサービスを提供する通信サーバ群３２４、制御プロセッサ２上のＳＣＩドライバ２２５と同様な処理によってＳＣＩユニット３３を制御するＳＣＩドライバ３２５が含まれている。
【００３７】
通信クライアントには、共有メモリクライアント３２２が少なくとも含まれる。共有メモリクライアント３２２がは、ライトオンリページ２Ｂ，３Ａのデータ交換を制御プロセッサ２に要求する送受信要求コマンド（ＳＹＮＣ＿ＰＡＧＥ）を生成するとともに受信バッファ２４Ａからのデータリードを制御プロセッサ２に要求する送受信要求コマンド（ＳＹＮＣ＿ＰＡＧＥ）を生成する要求する。
【００３８】
インタフェースプログラム３２１には、制御プロセッサ２上のインタフェースプログラム２２２の共有メモリ関数ｒｅａｄ＿ｗｒｉｔｅ＿ｓｙｎｃ（）と同じ共有メモリ関数ｒｅａｄ＿ｗｒｉｔｅ＿ｓｙｎｃ（）が少なくとも含まれる。
【００３９】
データ通信部３１０のプログラム群には、制御プロセッサ２上のページ管理プログラム２１１と同様な処理を実行するページ管理部プログラム３１１、ＳＰＩマネージャ３１２、ＳＰＩユニット２４を制御するＳＰＩドライバ３１３が含まれている。
【００４０】
ＳＰＩマネージャ３１２は、複数のサービスがＳＰＩユニットを排他的に使用するように、ＳＰＩユニットを使用中のサービスのサービスＩＤを記録するＳＰＩ使用権を管理する。なお、本実施の形態では、サーバ使用権の管理によって、複数のサービスにＳＰＩユニットを排他的に使用させることができているため、必ずしもＳＰＩマネージャ３１２を設ける必要はない。
【００４１】
ＳＰＩドライバ３２５は、ＳＰＩユニット３４の初期化処理（マスタモード設定、ＳＰＩ通信完了後の割込み許可設定）、通信サーバ群３２４の指示に応じてＳＰＩ通信を開始させる送受信開始処理を実行する。送受信開始処理では、ＳＰＩドライバ３２５は、ＳＰＩユニット３４のレジスタを用いてＳＰＩ通信を開始させる。ＳＰＩ通信では、ＳＰＩユニット３４が、ＣＬＫを発信しながら、そのＣＬＫに同期させて送信バッファ３４Ｂのデータを制御プロセッサ２のＳＰＩユニット２４の受信バッファ２４Ａに転送させるとともに、制御プロセッサ２のＳＰＩユニット２４の送信バッファ２４Ｂのデータを受信バッファ３４Ａに転送させる。そして、ＳＰＩ通信完了後の割込みに応じて、ＳＰＩドライバ３２５は、通信マネージャ３２３を起動した通信サーバを通信マネージャ３２３にコールさせる。
【００４２】
通信サーバ群３２４には、共有メモリサーバ３２４Ａ、入力サーバ３２４Ｃ、出力サーバ３２４Ｂが含まれている。共有メモリサーバ３２４Ａは、制御プロセッサ２からのコマンドのうち、送受信要求コマンド（ＳＹＮＣ＿ＰＡＧＥ）を解釈及び実行し、その実行結果を表す応答コマンド（ＡＣＫ、ＮＡＫ）を生成する。入力サーバ３２４Ｃは、制御プロセッサ２からのコマンドのうち、送信要求コマンド（ＸＭＩＴ＿ＩＮ）を解釈及び実行し、その実行結果を示す応答コマンド（ＡＣＫ、ＮＡＫ）を生成する。出力サーバ３２４Ｂは、制御プロセッサ２からのコマンドのうち、受信要求コマンド（ＲＥＣＶ＿ＯＵＴ）を解釈及び実行し、その実行結果を示す応答コマンド（ＡＣＫ、ＮＡＫ）を生成する。これらの応答コマンドを制御プロセッサ２に送信するための応答メッセージのフォーマットは、制御プロセッサ２の共有メモリサーバ２２４が生成する応答メッセージと同じである。
【００４３】
入出力ドライバ３５０は、通信サーバ３２４Ａ〜３２４Ｃの要求に応じて、入力装置９からのデータ取込み及び出力装置８へデータ書込みを実行する。
【００４４】
なお、本実施の形態では、入出力プロセッサ３の入力ユニット３５及び出力ユニット３６にだけ入力装置９ｂ及び出力装置８ｂが接続しているため、入出力プロセッサのインタフェースプログラム３２１には入力関数ｉｎｐｕｔ＿ｓｙｎｃ（）及び出力関数ｏｕｔｐｕｔ＿ｓｙｎｃ（）が含まれず、入出力プロセッサ３の通信クライアントには入力クライアント及び出力クライアントが含まれていない。また、制御プロセッサの通信サーバには入力サーバ及び出力サーバが含まれていない。しかし、制御プロセッサ２の入力ユニット２５及び出力ユニット２６にも入力装置９ａ及び出力装置８ｂが接続され、かつ、入出力プロセッサ３上のアプリケーションプログラムが、その入力装置９ａ及び出力装置８ａとデータをやりとりする必要がある場合には、入出力プロセッサ３の通信クライアントに入力クライアント及び出力クライアントを含め、かつ、入出力プロセッサ３のインタフェースプログラム３２１に入力関数ｉｎｐｕｔ＿ｓｙｎｃ（）及び出力関数ｏｕｔｐｕｔ＿ｓｙｎｃ（）を含める必要がある。また、制御プロセッサの通信サーバには入力サーバ及び出力サーバを含める必要がある。
【００４５】
また、本実施の形態に係る機能分散システムでは、出力装置に関する制御処理を制御プロセッサにのみ割り当てているため、制御プログラムが制御プロセッサにだけインストールされているが、例えば、出力装置に関する制御処理の一部が入出力プロセッサ３に割り当てられてもよい。また、上記の処理以外の処理が各プロセッサに割り当てられてもよい。
【００４６】
つぎに、以上のようなソフトウエア構成を有するマルチプロセッサシステムにおいて実行される４種類の処理について説明する。
（１）制御プロセッサ２上の制御プログラム２００Ａ〜２００Ｍのうち、いずれかの制御プログラム（ここでは、制御プログラム２００Ｋとする）が入出力プロセッサ３側の入力装置９ｂの出力を取得する場合には、図７に示した処理が実行される。具体的には、以下の通りである。
【００４７】
制御プログラム２００Ｋは、自身に対応付けられた複数の入力装置の出力が格納される一連の入力ページ３Ｃの先頭ページ番号及びページ数ｎｕｍを第一引数ｔｏｐ及び第二引数として、インタフェースプログラム２２１の入力関数ｉｎｐｕｔ＿ｓｙｎｃ（）をコールする。なお、制御プログラム２００Ｋに対応付けられた入力装置の出力が格納される入力ページ３Ｃが１ページである場合には、その入力ページのページ番号及びページ数「１」を第一引数ｔｏｐ及び第二引数ｎｕｍとして入力関数ｉｎｐｕｔ＿ｓｙｎｃ（）がコールされる。
【００４８】
その後、入力関数ｉｎｐｕｔ＿ｓｙｎｃ（）によりコールされた入力クライアント２２２Ｃは、入出力プロセッサ３の入力サーバ３２４Ｃに要求する入力サービスのサービスＩＤ「０」の登録を通信マネージャ２２３に要求する。これにより、入力サービスのサービスＩＤ「０」がクライアント使用権に登録され、入力クライアント２２２Ｃは、クライアント使用権を獲得する（１１０１）。
【００４９】
さらに、入力クライアント２２２Ｃは、起動時に渡された第一引数ｔｏｐ及び終了フラグ（ｎｕｍが１の場合、最終ページの送信要求コマンドであることを示す値「１」、ｎｕｍが複数の場合、「０」）を引数とする送信要求コマンドメッセージ（ＸＭＩＴ＿ＩＮ）を生成し、それを通信マネージャ２２３に渡す。通信マネージャ２２３が、その送信要求コマンドメッセージの送信をＳＣＩドライバ２２５に依頼すると、その送信要求コマンドメッセージが、ＳＣＩケーブル４を介して入出力プロセッサ３に送信される（１１０２）。
【００５０】
入出力プロセッサ３では、ＳＣＩドライバ３２５が、制御プロセッサ２からのメッセージを受信すると、それが通信マネージャ３２３に渡される。通信マネージャ３２３は、それがコマンドメッセージであることを確認すると、そのコマンドメッセージを、そのコマンドメッセージに含まれていたサービスＩＤにより定まる入力サーバ３２４Ｃに渡す。入力サーバ３２４Ｃは、そのコマンドメッセージを解釈し、その解釈結果に基づき以下の処理を実行させる（１１０３）。
【００５１】
入力サーバ３２４Ｃは、コマンドメッセージに含まれていたサービスＩＤの登録を通信マネージャ３２３及びＳＰＩマネージャ３１２に要求する。これにより、入力サーバ３２４Ｃが提供する入力サービスのサービスＩＤ「０」がサーバ使用権及びＳＰＩ使用権に登録され、入力サーバ３２４Ｃは、サーバ使用権及びＳＰＩ使用権を獲得する。さらに、入力サーバ３２４Ｃは、入力ページ３ＣからＳＰＩユニット３４へのデータ転送をページ管理プログラム３１１に依頼する。このとき、ページ管理プログラム３１１には、コマンドメッセージが引数として含むページ番号（転送元ページのページ番号）、入力ページに対する処理内容（リード）、転送先アドレス（送信バッファ３４Ｂのアドレス）が渡される。これに応じて、ページ管理プログラム３１１は、入力ドライバ３５０を介して、すべての入力装置の出力をリードし、すべての入力ページ３Ｃのデータを、それぞれのページに対応付けられた入力装置の出力で更新する（１１０４）。さらに、ページ管理プログラム３１１は、転送元ページからデータをリードし、それを、転送先アドレスが示す、送信バッファ３４Ｂの記憶領域にライトする（１１０５）。送信バッファ３４Ｂへのデータ転送が終了すると、入力サーバ３２４Ｃの指示に応じて、通信マネージャ３２３が、ＳＰＩドライバ３１３に送信開始を指示する。これにより、メッセージコマンドに引数として含まれていたページ番号の入力ページ３Ｃのデータ、即ち、入力装置の出力が、ＳＰＩケーブル５を介して制御プロセッサ２に送信される（１１０６）。
【００５２】
１ページ分の入力ページのデータ送信が正常終了し、入出力プロセッサ３で割込みが発生すると、入力サーバ３２４Ｃは、応答ＩＤ「７」及び実行結果ＡＣＫ等を含む応答メッセージを作成し、それを通信マネージャ３２３に渡す。通信マネージャ３２３が、その応答メッセージの送信をＳＣＩドライバ３２５に依頼すると、その応答メッセージが、ＳＣＩケーブル４を介して制御プロセッサ２に送信される。
【００５３】
また、入力サーバ３２４Ｃは、コマンドメッセージに引数として含まれていた終了フラグの値が「１」であるか否かを判断する。その結果、入力サーバ３２４Ｃは、終了フラグの値が「１」であれば、通信マネージャ３２３及びＳＰＩマネージャ３１２にサーバ使用権及ＳＰＩ使用権を開放させ、終了フラグの値が「１」でなければ、次の入力ページの送信要求コマンドメッセージ（ＸＭＩＴ＿ＩＮ）を待つ（１１０７）。
【００５４】
制御プロセッサ２では、ＳＣＩドライバ２２５が、入出力プロセッサ３からのメッセージを受信すると、それを通信マネージャ３２３に渡す。通信マネージャ３２３は、そのメッセージが応答ＩＤ「７」を含めば、それを、クライアント使用権に登録されたサービスＩＤに対応する入力クライアント２２２Ｃに応答メッセージとして渡す。入力クライアント２２２Ｃは、応答メッセージがＡＣＫを含むこと、即ちＳＰＩ通信の正常終了を確認すると、ＳＰＩユニット２４Ａから入力ページ２Ｃへのデータ転送をページ管理プログラム２１１に依頼する。このとき、ページ管理プログラム２１１には、処理１１０２で送信要求コマンドメッセージの引数としたページ番号（転送先ページ番号）、転送ページに対する処理内容（ライト）、転送元アドレス（受信バッファ２４Ａのアドレス）が渡される。
【００５５】
これに応じて、ページ管理プログラム２１１は、転送元アドレスが示す、受信バッファ２４Ａの記憶領域からデータをリードし、それを、転送先ページにライトする。受信バッファ２４Ａからのデータ転送が終了すると、入力クライアント２２２Ｃは、起動時にｉｎｐｕｔ＿ｓｙｎｃ（）から渡された第二引数ｎｕｍの示すページ数分のデータの受信が終了したか否かを判断する。
【００５６】
その結果、起動時に渡された第二引数ｎｕｍが示すページ数分のデータの受信が終了していれば、入力クライアント２２２Ｃは、通信マネージャ２２３にクライアント使用権を開放させる（１１０８）。一方、起動時に渡された第二引数ｎｕｍが示すページ数分のデータの受信が終了していなければ、そのページ数分のデータの受信が終了するまで、以下の処理１１０９〜１１１３が繰り返し実行される。
【００５７】
制御プロセッサ２では、次の入力ページのページ番号及び終了フラグ（次の入力ページが最終ページであれば「１」、次の入力ページが最終ページでなければ「０」）を引数として、処理１１０２と同様な処理が実行される。これにより、次の入力ページの送信要求コマンドメッセージ（ＸＭＩＴ＿ＩＮ）が入出力プロセッサ３に送信される（１１０９）。
【００５８】
入出力プロセッサ３では、その送信要求コマンドメッセージに応じて、処理１１０３及び処理１１０５と同様な処理が実行される（１１１０）。さらに、処理１１０６及び処理１１０７と同様な処理が実行される（１１１１，１１１３）。これにより、処理１１１０で新たに受信した送信要求コマンドメッセージの引数が示すページ番号の入力ページ３Ｃのデータが、ＳＰＩケーブル５を介して制御プロセッサ２に送信され、さらに、応答メッセージが、ＳＣＩケーブル４を介して制御プロセッサ２に送信される。
【００５９】
その後、制御プロセッサ２では、処理１１０８と同様な処理が実行され、ＳＰＩユニット２４の受信バッファ２４Ａの記憶領域のデータが、つぎのページ番号の入力ページ２Ｃにライトされる（１１１２）。
【００６０】
以上の処理により、制御プロセッサ２では、制御プログラム２００Ｋが入力関数ｉｎｐｕｔ＿  ｓｙｎｃ（）に渡した第一引数ｔｏｐが示す入力ページ３Ｃから、制御プログラム２００Ｋが入力関数ｉｎｐｕｔ＿  ｓｙｎｃ（）に渡した第二引数ｎｕｍが示すページ数分の入力ページまでの各ページに、それぞれ、データがライトされる。その結果、制御プログラム２００Ｋは、それらの入力ページ３Ｃからデータをリードすることによって、自身に対応付けられた入力装置の出力データを取得することができる。（２）制御プロセッサ２上の制御プログラム２００Ａ〜２００Ｍのうち、いずれかの制御プログラム（ここでは、制御プログラム２００Ｋとする）が入出力プロセッサ３側の出力装置８ｂにデータを入力する場合には、図８に示した処理が実行される。具体的には、以下の通りである。
【００６１】
制御プログラム２００Ｋは、自身に対応付けられた一連の出力ページ２Ｄにデータをライトしてから、それら一連の出力ページ２Ｄの先頭ページ番号ｔｏｐ及びページ数ｎｕｍを第一引数及び第二引数として、インタフェースプログラム２２１の出力関数ｏｕｔｐｕｔ＿ｓｙｎｃ（）をコールする。なお、制御プログラム２００Ｋに対応付けられた出力ページが１ページである場合には、その出力ページのページ番号及びページ数「１」を第一引数ｔｏｐ及び第二引数ｎｕｍとして入力関数ｉｎｐｕｔ＿ｓｙｎｃ（）がコールされる。
【００６２】
その後、ｏｕｔｐｕｔ＿ｓｙｎｃ（）によりコールされた出力クライアント２２２Ｂは、入出力プロセッサ３の出力サーバ２３４Ｂに要求する出力サービスのサービスＩＤ「１」の登録を通信マネージャ２２３に要求し、クライアント使用権を獲得する（１２０１）。
【００６３】
さらに、出力クライアント２２２Ｂは、起動時に渡された第一引数ｔｏｐが示す出力ページ２ＤからＳＰＩユニット２４へのデータ転送をページ管理プログラム２１１に依頼する。このとき、ページ管理プログラム２１１には、転送元ページのページ番号、転送元ページに対する処理内容（リード）、転送先アドレス（送信バッファ３４Ｂのアドレス）が渡される。これに応じて、ページ管理プログラム２１１は、転送元ページのデータをリードし、それを、転送先アドレスが示す、送信バッファ２４Ｂの記憶領域にライトする。送信バッファ２４Ｂへのデータ転送が終了すると、出力クライアント２２２Ｂは、起動時に渡された第一引数ｔｏｐ及び終了フラグ（ｎｕｍが１の場合は「１」、ｎｕｍが複数の場合は「０」）を引数とする受信要求コマンドメッセージ（ＲＥＣＶ＿ＯＵＴ）を生成し、それを通信マネージャ２２３に渡す。通信マネージャ２２３が、その受信要求コマンドメッセージの送信をＳＣＩドライバ２２５に依頼すると、その受信要求コマンドメッセージが、ＳＣＩケーブル４を介して入出力プロセッサ３に送信される（１２０２）。
【００６４】
入出力プロセッサ３では、ＳＣＩドライバ３２５が、制御プロセッサ２からのメッセージを受信すると、それが通信マネージャ３２３に渡される。通信マネージャ３２３は、それがコマンドメッセージであることを確認すると、そのコマンドメッセージを、そのコマンドメッセージに含まれていたサービスＩＤにより定まる出力サーバ３２４Ｂに渡す。出力サーバ３２４Ｂは、そのコマンドメッセージを解釈して、その解釈結果に基づき以下の処理を実行させる（１２０３）。
【００６５】
出力サーバ３２４Ｂは、コマンドメッセージに含まれていたサービスＩＤの登録を通信マネージャ３２３及びＳＰＩマネージャ３１２に要求することにより、サーバ使用権及びＳＰＩ使用権を獲得する（１２０４）。その後、通信マネージャ３２３は、出力サーバ３２４Ｂの指示に応じてＳＰＩドライバ３１３に受信開始を指示する。これにより、メッセージコマンドに引数として含まれていたページ番号の出力ページ２Ｄのデータ、即ち、出力装置への入力データが、ＳＰＩケーブル５を介して入出力プロセッサ３に送信される（１２０５）。
【００６６】
１ページ分の出力ページのデータ送信が終了し、入出力プロセッサ３で割込みが発生すると、出力サーバ３２４Ｂは、ＳＰＩユニット３４からのデータ転送をページ管理プログラム３１１に依頼する。このとき、ページ管理プログラム３１１には、コマンドメッセージが引数として含むページ番号（転送先ページ番号）、転送先ページに対する処理内容（ライト）、転送元アドレス（受信バッファ３４Ａのアドレス）が渡される。これに応じて、ページ管理プログラム３１１は、転送元アドレスが示す、受信バッファ３４Ａの記憶領域からデータをリードし、それを転送先ページ３Ｄにライトする。受信バッファ３４Ａからのデータ転送が正常終了すると、出力サーバ３２４Ｂは、応答ＩＤ「７」及び実行結果ＡＣＫ等を含む応答メッセージを作成する。通信マネージャ２２３が、その応答メッセージの送信をＳＣＩドライバ３２５に依頼すると、その応答メッセージが、ＳＣＩケーブル４を介して制御プロセッサ２に送信される。
【００６７】
また、出力サーバ３２４Ｂは、コマンドメッセージに引数として含まれていた終了フラグの値が「１」であるか否かを判断する。その結果、出力サーバ３２４Ｂは、終了フラグの値が「１」であれば、通信マネージャ及びＳＰＩマネージャにサーバ使用権及ＳＰＩ使用権を開放させ、終了フラグの値が「１」でなければ、次の出力ページの受信要求コマンドメッセージ（ＲＥＣＶ＿ＯＵＴ）を待つ（１２０６）。
【００６８】
制御プロセッサ２では、ＳＣＩドライバ２２５が、入出力プロセッサ３からのメッセージを受信すると、それが通信マネージャ２２３に渡される。通信マネージャ２２３は、そのメッセージに応答ＩＤ「７」が含まれれば、それを、クライアント使用権に登録されたサービスＩＤ「１」に対応する出力クライアント２２２Ｂに応答メッセージとして渡す。出力クライアント２２２Ｂは、応答メッセージがＡＣＫを含むこと、即ち、ＳＰＩ通信の正常終了を確認すると、起動時にｏｕｔｐｕｔ＿ｓｙｎｃ（）から渡された第二引数ｎｕｍの示すページ数分のデータの送信が終了したか否かを判断する。
【００６９】
その結果、起動時に渡された第二引数ｎｕｍが示すページ数分のデータの送信が終了していれば、出力クライアント２２２Ｂは、通信マネージャ２２３にクライアント使用権を開放させる（１２０７）。一方、起動時に渡された第二引数ｎｕｍが示すページ数分のデータの送信が終了していなければ、そのページ数分のデータ送信が終了するまで、以下の処理１２０８〜１２１３が繰り返し実行される。
【００７０】
制御プロセッサ２では、次の出力ページのページ番号及び終了フラグ（最終ページであれば「１」、最終ページでなければ「０」）を引数として、処理１２０２と同様な処理が実行される。これにより、受信要求コマンドメッセージ（ＲＥＣＶ＿ＯＵＴ）が入出力プロセッサに送信される（１２０８）。
【００７１】
入出力プロセッサ３では、その受信要求コマンドメッセージに応じて、処理１２０３と同様な処理が実行され（１２０９）、さらに、処理１２０５及び処理１２０６と同様な処理が実行される（１２１０，１２１１）。これにより、受信要求コマンドメッセージの引数が示すページ番号の出力ページ２Ｄから、それと同じページ番号の出力ページ３Ｄへ、ＳＰＩケーブル５を介してデータが転送され、さらに、ＳＣＩケーブル４を介して制御プロセッサ２に応答メッセージが送信される。
【００７２】
制御プロセッサ２では、入出力プロセッサ３からの応答メッセージを受信すると、処理１２１１と同様な処理が実行される（１２１２）。
【００７３】
以上の処理により、入出力プロセッサ３では、制御プログラム２００Ｋが出力関数ｏｕｔｐｕｔ＿ｓｙｎｃ（）に渡した第一引数ｔｏｐが示すページ番号の出力ページ３Ｄから、制御プログラム２００Ｋが出力関数ｏｕｔｐｕｔ＿ｓｙｎｃ（）に渡した第二引数ｎｕｍが示すページ数分の出力ページ３Ｄまでの各ページに、それぞれ、データがライトされる。その結果、入出力ドライバ３５０は、それらの出力ページ３Ｄのデータをリードすることにより、それらの出力ページ３Ｄに対応付けられた出力装置への入力を取得することができる。
（３）  制御プロセッサ２上の制御プログラム２００Ａ〜２００Ｍのうち、いずれかの制御プログラム（ここでは、制御プログラム２００Ｋとする）が、入出力プロセッサ３上のアプリケーションプログラム３００Ｋにデータ交換を要求する場合には、図９に示した処理が実行される。具体的には、以下の通りである。
【００７４】
制御プログラム２００Ｋは、アプリケーションプログラム３００Ｋに対応付けられたライトオンリページ２Ｂにデータをライトしてから、アプリケーションプログラム３００Ｋに対応付けられたライトオンリページ２Ｂ及びリードオンリページ２Ａの各ページ番号を第一引数ｒ＿ｐａｇｅ及び第二引数ｗ＿ｐａｇｅとして、インタフェースプログラム２２１のリードライト関数ｒｅａｄ＿ｗｒｉｔｅ＿ｓｙｎｃ（）をコールする。その後、リードライト関数ｒｅａｄ＿ｗｒｉｔｅ＿ｓｙｎｃ（）によりコールされた共有メモリクライアント２２２Ａは、入出力プロセッサ３の共有メモリサーバ３２４Ａに要求する共有メモリサービスのサービスＩＤ「２」の登録を通信マネージャ２２３に要求し、クライアント使用権を獲得する。
【００７５】
さらに、共有メモリクライアント２２２Ａは、起動時に渡された第二引数ｗ＿ｐａｇｅが示すライトオンリページ２ＢからＳＰＩユニット２４へのデータ転送をページ管理プログラム２１１に依頼する。このとき、ページ管理プログラム２１１には、転送元ページのページ番号ｗ＿ｐａｇｅ、ライトオンリページに対する処理内容（リード）、転送先アドレス（送信バッファ２４Ｂのアドレス）が渡される。これに応じて、ページ管理プログラム２１１は、転送元ページのデータをリードし、それを、転送先アドレスが示す、送信バッファ２４Ｂの記憶領域に転送するとともに、送信バッファの６１バイト目（図３のＤ２）に、転送元ページのページ番号ｗ＿ｐａｇｅをライトする。送信バッファ２４Ｂへのデータ転送が終了すると、共有メモリクライアント２２２Ａは、起動時に渡された第一引数ｒ＿ｐａｇｅを引数とする送受信要求コマンドメッセージ（ＳＹＮＣ＿ＰＡＧＥ）を生成し、それを通信マネージャ２２３に渡す（１３０１）。通信マネージャ２２３が、その送受信要求コマンドメッセージの送信をＳＣＩドライバ２２５に依頼すると、その送受信要求コマンドメッセージが、ＳＣＩケーブル４を介して入出力プロセッサ３に送信される（１３０２）。
【００７６】
入出力プロセッサ３では、ＳＣＩドライバ３２５が、制御プロセッサ２からのメッセージを受信すると、それが通信マネージャ３２３に渡される。通信マネージャ３２３は、それがコマンドメッセージであることを確認すると、そのコマンドメッセージを、そのコマンドメッセージに含まれていたサービスＩＤにより定まる共有メモリサーバ３２４Ａに渡す。共有メモリサーバ３２４Ａは、そのコマンドメッセージを解釈して、その解釈結果に基づき以下の処理を実行させる。
【００７７】
共有メモリサーバ３２４Ａは、コマンドメッセージに含まれているサービスＩＤ「２」の登録を通信マネージャ３２３及びＳＰＩマネージャ３１２に要求することによりサーバ使用権及びＳＰＩ使用権を獲得すると、さらに、起動時に渡された引数ｒ＿ｐａｇｅが示すライトオンリページ３ＡからＳＰＩユニット３４へのデータ転送をページ管理プログラム３１１に依頼する。このとき、ページ管理プログラム３１１には、転送元ページのページ番号ｒ＿ｐａｇｅ、転送元ページに対する処理内容（リード）、送信バッファ３４Ｂのアドレス（転送先アドレス）が渡される。これに応じて、ページ管理プログラム３１１は、転送元ページのデータをリードし、それを、転送先アドレスが示す、送信バッファ３４Ｂの記憶領域に転送する（１３０３）。
【００７８】
送信バッファ３４Ｂへのデータ転送が終了すると、通信マネージャ３２３は、共有メモリサーバ３２４Ａの指示に応じて、ＳＰＩドライバ３１３に送受信開始を指示する。これにより、制御プロセッサ２上の制御プログラム２００Ｋの出力が、ＳＰＩケーブル５を介して入出力プロセッサ３に送信されるとともに、入出力プロセッサ３上のアプリケーションプログラム３００Ｋの出力が、ＳＰＩケーブル５を介して制御プロセッサ２に送信される（１３０４）。
【００７９】
共有メモリページのデータ交換が終了し、入出力プロセッサ３で割込みが発生すると、共有メモリサーバ３２４Ａは、受信バッファ３４Ａの６１バイト目のデータをリードし、そのデータが示すページ番号のリードオンリページ３Ｂへのデータ転送をページ管理プログラム３１１に依頼する。このとき、ページ管理プログラム３１１には、転送先ページ番号（６１バイト目のデータ）、転送先ページに対する処理内容（ライト）、転送元アドレス  （受信バッファ３４Ａのアドレス）が渡される。これに応じて、ページ管理プログラム３１１は、転送元アドレスが示す、受信バッファ３４Ａの記憶領域からデータをリードし、それを転送先ページ３Ｂにライトする。転送先ページへのデータ転送が正常終了すると、共有メモリサーバ３２４Ａは、応答ＩＤ「７」及び実行結果ＡＣＫ等を含む応答メッセージを作成し、それを通信マネージャ３２３に渡す。通信マネージャ２２３が、その応答メッセージの送信をＳＣＩドライバ３２５に依頼すると、その応答メッセージが、ＳＣＩケーブル４を介して制御プロセッサ２に送信される。さらに、共有メモリサーバ３２４Ａは、通信マネージャ及びＳＰＩマネージャにサーバ使用権及ＳＰＩ使用権を開放させる（１３０５）。
【００８０】
制御プロセッサ２では、ＳＣＩドライバ２２５が入出力プロセッサ３からのメッセージを受信すると、それが通信マネージャ２２３に渡される。通信マネージャ２２３は、そのメッセージが応答ＩＤ「７」を含めば、それを、クライアント使用権に登録されたサービスＩＤに対応する共有メモリクライアントに応答メッセージとして渡す。共有メモリクライアント２２２Ａは、応答メッセージがＡＣＫを含むこと、即ちＳＰＩ通信の正常終了を確認すると、起動時に渡された第一引数ｒ＿ｐａｇｅが示すリードオンリページ２Ａへのデータ転送をページ管理プログラム２１１に依頼する。このとき、ページ管理プログラム２１１には、転送先ページ番号ｒ＿ｐａｇｅ、転送先ページに対する処理内容（ライト）、ＳＰＩユニット２４の受信バッファ２４Ａのアドレス（転送元アドレス）が渡される。これに応じ、ページ管理プログラム２１１は、転送元アドレスが示す、受信バッファ２４Ａの記憶領域からデータをリードし、それを転送先ページ２Ａにライトする。転送先ページへのデータ転送が終了すると、共有メモリクライアント２２２Ａは、通信マネージャ２２３にクライアント使用権を開放させる（１３０６）。
【００８１】
以上の処理により、入出力プロセッサ３のライトオンリページ３Ａから、そのライトオンリページと同じページ番号の、制御プロセッサ２のリードオンリページ２Ａにデータが転送される。その結果、制御プロセッサ２上の制御プログラムは、それらのリードオンリページ２Ａのデータをリードすることによって、自身に対応付けられた、入出力プロセッサ３上のアプリケーションプログラムの出力を取得することができる。その一方で、制御プロセッサ２のライトオンリページ２Ｂから、そのライトオンリページと同じページ番号の、入出力プロセッサ３のリードオンリページ３Ｂに転送される。その結果、入出力プロセッサ３上のアプリケーションプログラムは、それらのリードオンリページ３Ｂのデータをリードすることによって、自身に対応付けられた、制御プロセッサ２上の制御プログラムの出力を取得することができる。これにより、制御プロセッサ２上の制御プログラムと入出力プロセッサ３上のアプリケーションプログラムとの協調動作が可能となる。
（４）  入出力プロセッサ３のアプリケーションプログラム３００Ａ〜３００Ｍのうち、いずれかのアプリケーションプログラム（ここでは、アプリケーションプログラム３００Ｋとする）が、制御プロセッサ２上の制御プログラム２００Ｋにデータ交換を要求する場合には、図１０に示した処理が実行される。具体的には、以下の通りである。
【００８２】
アプリケーションプログラム３００Ｋは、制御プログラム２００Ｋに対応付けられたライトオンリページ３Ａにデータをライトしてから、その制御プログラム２００Ｋに対応付けられたライトオンリページ３Ａ及びリードオンリページ３Ｂの各ページ番号を第一引数ｒ＿ｐａｇｅ及び第二引数ｗ＿ｐａｇｅとして、インタフェースプログラム３２１のリードライト関数ｒｅａｄ＿ｗｒｉｔｅ＿ｓｙｎｃ（）をコールする。その後、リードライト関数ｒｅａｄ＿ｗｒｉｔｅ＿ｓｙｎｃ（）によってコールされた共有メモリクライアント３２２は、制御プロセッサ２の共有メモリサーバ２２４に要求する共有メモリサービスのサービスＩＤ「２」の登録を通信マネージャ３２３及びＳＰＩマネージャ３１２に要求し、クライアント使用権及びＳＰＩ使用権を獲得する。
【００８３】
さらに、共有メモリクライアント３２２は、起動時に渡された第二引数ｗ＿ｐａｇｅが示すライトオンリページ３ＡからＳＰＩユニット３４へのデータ転送をページ管理プログラム３１１に依頼する。このとき、ページ管理プログラム３１１には、転送元ページ番号ｗ＿ｐａｇｅ、転送元ページに対する処理内容（リード）、転送先アドレス（送信バッファ３４Ｂのアドレス）が渡される。これに応じ、ページ管理プログラム３１１は、転送元ページのデータをリードし、それを、転送先アドレスが示す、送信バッファ３４Ｂの記憶領域に転送するとともに、送信バッファの６１バイト目（図３のＤ２）に転送元ページ番号ｗ＿ｐａｇｅをライトする。送信バッファ３４Ｂへのデータ転送が終了すると、共有メモリクライアント３２２は、起動時に渡された第一引数ｒ＿ｐａｇｅを引数とする送受信要求コマンドメッセージ（ＳＹＮＣ＿ＰＡＧＥ）を生成し、それを通信マネージャ２２３に渡す（１４０１）。通信マネージャ３２３が、その送受信要求コマンドメッセージの送信をＳＣＩドライバ３２５に依頼すると、その送受信要求コマンドメッセージが、ＳＣＩケーブル４を介して制御プロセッサ２に送信される（１４０２）。
【００８４】
制御プロセッサ２では、ＳＣＩドライバ２２５が、入出力プロセッサ３からのメッセージを受信すると、それが通信マネージャ２２３に渡される。通信マネージャ２２３は、それがコマンドメッセージであることを確認すると、そのコマンドメッセージを、そのコマンドメッセージに含まれていたサービスＩＤにより定まる共有メモリサーバ２２４に渡す。共有メモリサーバ２２４は、そのコマンドメッセージを解釈して、その解釈の結果に基づき以下の処理を実行させる。
【００８５】
共有メモリサーバ２２４は、コマンドメッセージに含まれているサービスＩＤ「２」の登録を通信マネージャ３２３及びＳＰＩマネージャ３１２に要求することによりサーバ使用権及びＳＰＩ使用権を獲得すると、起動時に渡された引数ｒ＿ｐａｇｅが示すライトオンリページ２ＢからＳＰＩユニット２４へのデータ転送をページ管理プログラム２１１に依頼する。このとき、ページ管理プログラム２１１には、転送元ページ番号ｒ＿ｐａｇｅ、転送元ページに対する処理内容（リード）、転送先アドレス（送信バッファ２４Ｂのアドレス）が渡される。これに応じて、ページ管理プログラム２１１は、転送元ページのデータをリードし、それを、転送先アドレスが示す、送信バッファ２４Ｂの記憶領域にライトする。送信バッファ２４Ｂへのデータ転送が正常終了すると、共有メモリサーバ２２４は、応答ＩＤ「７」及び実行結果ＡＣＫ等を含む応答メッセージを作成し、それを通信マネージャ２２３に渡す。通信マネージャ２２３が、その応答メッセージの送信をＳＣＩドライバ２２５に依頼すると、その応答メッセージが、ＳＣＩケーブル４を介して入出力プロセッサ３に送信される（１４０３）。
【００８６】
入出力プロセッサ３では、ＳＣＩドライバ３２５が、制御プロセッサ２からのメッセージを受信すると、それが通信マネージャ３２３に渡される。通信マネージャ３２３は、そのメッセージが応答ＩＤ「７」を含めば、そのメッセージを、クライアント使用権に登録されたサービスＩＤに対応する共有メモリクライアント３２２に応答メッセージとして渡す。応答メッセージがＡＣＫを含むこと、即ち、制御プロセッサ２側においてＳＰＩユニット２４へのデータ転送が正常終了していることが、共有メモリクライアント３２２により確認されると（１４０４）、通信マネージャ３２３は、共有メモリクライアント３２２の指示に応じ、ＳＰＩドライバ３１３に送受信開始を指示する。これにより、入出力プロセッサ３のライトオンリページ３Ａのデータ（即ち、入出力プロセッサ３上のアプリケーションプログラム３００Ｋの出力）が、ＳＰＩケーブル５を介して制御プロセッサ２に送信されるとともに、制御プロセッサ２のライトオンリページ２Ｂのデータ（即ち、制御プロセッサ２上の制御プログラム２００Ｋの出力）が、ＳＰＩケーブル５を介して入出力プロセッサ３に送信される（１４０５）。
【００８７】
共有メモリページのデータ交換が正常終了し、入出力プロセッサ３で割込みが発生すると、共有メモリクライアント３２２は、起動に渡された第一引数ｒ＿ｐａｇｅが示すページ番号のリードオンリページ３Ｂへのデータ転送をページ管理プログラム３１１に依頼する。このとき、ページ管理プログラム３１１には、転送先ページ番号ｒ＿ｐａｇｅ、転送先ページに対する処理内容（ライト）、転送元アドレス  （ＳＰＩユニット３４の受信バッファ３４Ａのアドレス）が渡される。これに応じて、ページ管理プログラム３１１は、転送元アドレスが示す、受信バッファ３４Ａの記憶領域からデータをリードし、そのデータを転送先ページ３Ｂにライトする。
【００８８】
転送先ページへのデータ転送が終了すると、共有メモリサーバ３２４Ａは、リード要求コマンドメッセージ（ＲＥＡＤ＿ＰＡＧＥ）を作成し、それを通信マネージャ３２３に渡す。通信マネージャ２２３が、そのリード要求コマンドメッセージの送信をＳＣＩドライバ３２５に依頼すると、そのリード要求コマンドメッセージが、ＳＣＩケーブル４を介して制御プロセッサ２に送信される（１４０６）。
【００８９】
制御プロセッサ２では、ＳＣＩドライバ２２５が、入出力プロセッサ３からのメッセージを受信すると、それが通信マネージャ２２３に渡される。通信マネージャ２２３は、それがコマンドメッセージであることを確認すると、そのコマンドメッセージを、そのコマンドメッセージに含まれるサービスＩＤにより定まる共有メモリサーバ２２４に渡す。共有メモリサーバ２２４は、そのコマンドメッセージを解釈し、受信バッファ２４Ａの６１バイト目のデータ（ｗ＿ｐａｇｅ）が示すリードオンリページ２Ａへのデータ転送をページ管理プログラム２１１に依頼する。このとき、ページ管理プログラム２１１には、転送先ページ番号（６１バイト目のデータ）、転送先ページに対する処理内容（ライト）、転送元アドレス  （受信バッファ３４Ａのアドレス）が渡される。
【００９０】
これに応じて、ページ管理プログラム２１１は、転送元アドレスが示す、受信バッファ２４Ａの記憶領域からデータをリードし、そのデータを転送先ページ２Ａにライトする。受信バッファ２４Ａからのデータ転送が正常終了すると、共有メモリサーバ２２４は、応答ＩＤ「７」及び実行結果ＡＣＫ等を含む応答メッセージを作成し、それを通信マネージャ２２３に渡す。通信マネージャ２２３は、その応答メッセージの送信をＳＣＩドライバ２２５に依頼すると、その応答メッセージが、ＳＣＩケーブル４を介して入出力プロセッサ３に送信される。さらに、共有メモリサーバ２２４は、通信マネージャ２２３にサーバ使用権を開放させる（１４０７）。
【００９１】
入出力プロセッサ３では、制御プロセッサ２からのメッセージをＳＣＩドライバ３２５が受信すると、それが通信マネージャ３２３に渡される。通信マネージャ３２３は、そのメッセージが応答ＩＤ「７」を含めば、それを、クライアント使用権に登録されたサービスＩＤに対応する共有メモリクライアント３２２に応答メッセージとして渡す。応答メッセージがＡＣＫを含むこと、即ち、制御プロセッサ２とのデータ交換の正常終了が共有メモリクライアント３２２により確認されると、通信マネージャ３２３及びＳＰＩマネージャは、共有メモリクライアント３２２の指示に応じて、メモリクライアント使用権及びＳＰＩ使用権を解放する（１４０８）。
【００９２】
以上の処理により、制御プロセッサ２のライトオンリページ２Ｂから、そのライトオンリページと同じページ番号の、入出力プロセッサ３のリードオンリページ３Ｂにデータが転送される。その結果、入出力プロセッサ３上のアプリケーションプログラムは、それらのリードオンリページ３Ｂのデータをリードすることによって、自身に対応付けられた、制御プロセッサ２上の制御プログラムの出力を取得することができる。その一方で、入出力プロセッサ３のライトオンリページ３Ａから、そのライトオンリページと同じページ番号の、制御プロセッサ２のリードオンリページ２Ａにデータが転送される。その結果、制御プロセッサ２上の制御プログラムは、それらのリードオンリページ２Ａのデータをリードすることによって、自身に対応付けられた、入出力プロセッサ３上のアプリケーションプログラムの出力を取得することができる。これにより、制御プロセッサ２上の制御プログラムと入出力プロセッサ３上のアプリケーションプログラムとの協調動作が可能となる。
【００９３】
なお、本実施の形態では、入力プロセッサのライトオンリページから制御プロセッサへのリードオンリページへのデータ転送と、制御プロセッサのライトオンリページから入力プロセッサへのリードオンリページへのデータ転送とが、制御プログラムからの１の要求に応じて実行されるようにしているが、制御プログラムからの個別の要求に応じて個別のタイミングで実行されるようにしてもよい。
【００９４】
以上述べたように、本実施の形態に係るソフトウエア構成によれば、２つのプロセッサのＳＰＩユニットをあたかもマルチマスタ型通信インタフェースであるかのように利用して、２つのプロセッサ間でデータを双方向にやりとりすることができる。このため、ＳＣＩのみを利用したプロセッサ間通信より高速なプロセッサ間通信を実現することができる。そして、このようにプロセッサ間通信の高速化が図られたことにより、外部装置との入出力を専用プロセッサに実行させることが可能となり、制御対象及びセンサの増加にも対応可能となる。これらのことから、本実施の形態によれば、マルチプロセッサシステムの処理能力の向上を図ることができる。
【００９５】
また、プロセッサの外部バスを共有するバス結合型マルチプロセッサシステムとは異なり、プロセッサ間通信のための外付け調停回路が不要であるため、安価なマルチプロセッサシステムを実現することができる。
【００９６】
なお、本実施の形態では、入力プロセッサの入力ページから制御プロセッサへの入力ページへのデータ転送（ｉｎｐｕｔ＿ｓｙｎｃ（）による処理）と、制御プロセッサの出力ページから入力プロセッサへの出力ページへのデータ転送（ｏｕｔｐｕｔ＿ｓｙｎｃ（）による処理）とが、制御プログラムからの個別の要求に応じて個別のタイミングで実行されるようにしているが、制御プログラムからの１の要求に応じて両データ転送が実行されるようにしてもよい。このようにする場合には、例えば、入力クライアント２２２Ｃ及び出力クライアント２２２Ｂの代わりに入出力クライアントを制御プロセッサ２にインストールしておき、入出力クライアントをコールする関数がコールされたら、入出力クライアントが、制御プログラムの指定した入力ページのデータを送信バッファにコピーし、制御プログラムの指定した出力ページ番号を引数とするコマンドメッセージを送信するようにすればよい。一方、入出力プロセッサ３には、入力サーバ３２４Ｃ及び出力サーバ３２４Ｂの代わりに入出力サーバをインストールしておき、入出力サーバが、入出力クライアントからのコマンドメッセージを受信したら、そのコマンドメッセージで指定された出力ページのデータを送信バッファにコピーし、ＳＰＩ通信開始を通信マネージャ３２３に指示するようにすればよい。そして、ＳＰＩ通信によるデータ交換が終了したら、ＳＰＩユニットから出力ページへのデータ転送が入出力プロセッサで行われ、かつ、ＳＰＩユニットから入力ページへのデータ転送が制御プロセッサで行われるようにすればよい。このようにすれば、入力プロセッサの入力ページから制御プロセッサの入力ページへのデータ転送と制御プロセッサの出力ページから入力プロセッサの出力ページへのデータ転送とが個別に実行される上述の場合と比較して、入力装置からのデータ取得及び出力装置へのデータ入力に要する時間をほぼ半減させることができる。
【００９７】
また、本実施の形態では、制御プロセッサのＳＰＩユニットをスレーブ、入出力プロセッサのＳＰＩユニットをマスタとしたが、制御プロセッサのＳＰＩユニットをマスタ、入出力プロセッサのＳＰＩユニットをスレーブとしてもよい。このようにする場合、ＳＰＩマネージャを制御プロセッサにおくとともに、入力サービス及び出力サービスにおけるＳＰＩ通信開始タイミングを以下のように変更する必要がある。
【００９８】
入力サービスでは、例えば、入出力プロセッサ上の入力サーバは、制御プロセッサからのＸＭＩＴ＿ＩＮコマンドメッセージに応じて入力ページを送信バッファにコピーした段階で応答メッセージを返し、制御プロセッサ上の入力クライアントは、入出力プロセッサからの応答メッセージに応じてＳＰＩ通信を開始して、ＳＰＩ通信が終了したら、受信バッファから入力ページにデータを転送させる。
【００９９】
出力サービスでは、例えば、制御プロセッサ上の出力クライアントは、ＲＥＣＶ＿ＯＵＴコマンドメッセージの送信前にＳＰＩ通信を開始し、入出力プロセッサ上の出力サーバは、制御プロセッサからのＲＥＣＶ＿ＯＵＴコマンドメッセージに応じて、受信バッファのデータを出力ページに転送させる。
【０１００】
また、本実施の形態では、１本のＳＣＩケーブルと１本のＳＰＩケーブルとで２つのプロセッサ間を接続しているが、２つのプロセッサ間の２種類のケーブルの本数の組み合わせは、必ずしも、この通りである必要はない。例えば、２つのプロセッサ間を接続するＳＰＩケーブルを複数本設けることによって、複数のサービスが、それぞれ、個別のＳＰＩケーブルを介して提供されるようにしてもよい。また、２つのプロセッサ間を接続するＳＣＩケーブルを複数本設けてもよい。図１２に、２つのプロセッサ間を２本のＳＣＩケーブル４，４’と１本のＳＰＩケーブル５とで接続した場合の構成例を示す。ＳＣＩドライバは、メッセージを受信すると、そのメッセージの送信完了確認のために、ＳＣＩコマンド領域（図５の７１）を用いてＡＣＫまたはＮＡＫを返すことがあるが、ＳＣＩケーブル上でメッセージが化けると、そのメッセージが、プロセッサのメッセージ（コマンド、応答）なのか、ＳＣＩドライバの確認メッセージ（ＡＣＫ、ＮＡＫ）なのか判定できない。上述のように、２つのプロセッサ２，３間のＳＣＩケーブルを２本にすれば、一方のＳＣＩケーブル４を、制御プロセッサのメッセージ送信及び確認受信用、他方のＳＣＩケーブル４’を、入出力プロセッサのメッセージ送信及び確認受信用に割り当てることができる。このようにすることにより、コマンドメッセージが化けてしまっても、ＳＣＩドライバのエラーなのか通信サーバ及び通信クライアントのエラーなのかを判定し、エラーを切り分けることができる。このため、速やかにエラー処理を行うことができる。
【０１０１】
また、本実施の形態ではＳＰＩを用いているが、他のシングルマスタ型シリアル通信インタフェース、マルチマスタ型シリアル通信インタフェースを用いてももよい。
【０１０２】
また、本実施の形態ではＳＣＩを用いているが、他のマルチマスタ型双方向シリアル通信インタフェース、パラレル通信インタフェースを用いてもよい。例えば、ＩＥＥＥ１３９４を用いる場合には、メッセージをＩＥＥＥ１３９４データパケットに入れて送受信する。また、図１４に示したようにＤＩ，ＤＯを用いる場合には、１本以上のＤＩを用いて、それぞれの信号線にコマンドを割り当て、８本ずつのＤＩ及びＤＯを用いて、それぞれの信号線に引数の１バイトのデータを割り当てる。
【０１０３】
以上においては、マルチプロセッサシステムにより機能分散システムを実現する場合を説明したが、前述したように、同様なハードウエアを有するマルチプロセッサシステムによって負荷分散システムを実現することもできる。負荷分散システムを実現する場合には、２つのプロセッサにほぼ均等な負荷がかかるように、２つのプロセッサにジョブを分担させるようにすればよい。
【０１０４】
また、以上においては、自動車制御用のコントローラを例に挙げたが、本実施の形態に係るマルチプロセッサシステムは、自動車制御用のコントローラに限らず、例えば、ファクトリオートメーションのコントローラ等として用いることもできる。
【０１０５】
【発明の効果】
本発明によれば、マルチプロセッサシステムの処理能力の向上が図られる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るマルチプロセッサシステムのハードウエア構成図である。
【図２】本発明の実施の一形態に係る２つのプロセッサのバッファのページ構成を概念的に示した図である。
【図３】ＳＰＩ通信データのフォーマットを概念的に示した図である。
【図４】本発明の一実施形態に係るマルチプロセッサシステムのソフトウエア構成図である。
【図５】コマンドメッセージのフォーマットを概念的に示した図である。
【図６】コマンドメッセージに含ませるデータの一例を示した図である。
【図７】本発明の一実施形態に係る入力サービスを説明するための図である。
【図８】本発明の一実施形態に係出力サービスを説明するための図である。
【図９】本発明の一実施形態に係共有メモリサービスを説明するための図である。
【図１０】本発明の一実施形態に係共有メモリサービスを説明するための図である。
【図１１】本発明の一実施形態に係るマルチプロセッサシステムのハードウエアの概略構成図である。
【図１２】本発明の一実施形態に係るマルチプロセッサシステムのハードウエアの概略構成図である。
【符号の説明】
１…自動車制御用のコントローラ、２，３…プロセッサ、４…ＳＣＩケーブル、５…ＳＰＩケーブル、８…出力装置、９…入力装置、２１，３１…演算ユニット、２２，３２…内蔵メモリ、２３，３３…ＳＣＩユニット、２４，３４…ＳＰＩユニット、２５，３５…入力ユニット、２６，３６…出力ユニット、２００Ａ〜２００Ｍ…制御プログラム、２１０…データ通信部、２２０…コマンド通信部、３００Ａ〜３００Ｍ…アプリケーションプログラム、３１０…データ通信部、３２０…コマンド通信部、２１２，３１３…ＳＰＩドライバ、２２５，３２５…ＳＣＩドライバ、３５０…入出力ドライバ
【図１】
2004272386.tif 000003
【図２】
2004272386.tif 000004
【図３】
2004272386.tif 000005
【図４】
2004272386.tif 000006
【図５】
2004272386.tif 000007
【図６】
2004272386.tif 000008
【図７】
2004272386.tif 000009
【図８】
2004272386.tif 000010
【図９】
2004272386.tif 000011
【図１０】
2004272386.tif 000012
【図１１】
2004272386.tif 000013
【図１２】
2004272386.tif 000014