JP3970786B2 - マルチプロセッサシステム - Google Patents
マルチプロセッサシステム Download PDFInfo
- Publication number
- JP3970786B2 JP3970786B2 JP2003059060A JP2003059060A JP3970786B2 JP 3970786 B2 JP3970786 B2 JP 3970786B2 JP 2003059060 A JP2003059060 A JP 2003059060A JP 2003059060 A JP2003059060 A JP 2003059060A JP 3970786 B2 JP3970786 B2 JP 3970786B2
- Authority
- JP
- Japan
- Prior art keywords
- communication
- page
- processor
- input
- interface unit
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0421—Multiprocessor system
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/22—Pc multi processor system
- G05B2219/2231—Master slave
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/25—Pc structure of the system
- G05B2219/25178—Serial communication, data, also repeater
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Information Transfer Systems (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明は、マルチプロセッサシステムにおけるプロセッサ間通信技術に関する。
【0002】
【従来の技術】
処理能力向上のため、自動車制御用のコントローラ等にはマルチプロセッサシステムが採用されることがある。コストパフォーマンス向上等の観点から、通常のマルチプロセッサシステムでは、複数のプロセッサが、それぞれのプロセッサに内蔵されたシリアル通信インタフェース(SCI:Serial Communication Interface)で接続されている。SCIの通信速度は、プロセッサの機種にも依存するが最大毎秒500K〜1Mビット程度である。
【0003】
一方、SCIよりも高速なシリアル通信インタフェースとして、周辺装置用通信インタフェース(SPI:Serial Peripheral Interface)が知られている。このSPIは、プロセッサの機種にも依存するが最大毎秒4M〜10Mビット程度の通信速度でデータを伝送可能であるが、周辺回路との接続を行うためのシングルマスタ型の全二重双方向通信であるため、送信を開始できるマスタをシリアル線上に1つしか存在させることができない。
【0004】
例えば、こようなのSPIを利用したシステムとして、マイクロコンピュータとマイクロコンピュータのメモリデータをモニタする外部装置との間をSCIケーブル及びSPIケーブルで接続したシステムが特開平9−293047号公報(特許文献1)に記載されている。このシステムにおいて、SCIケーブルは、外部装置がマイクロコンピュータにメモリデータ上位アドレスを送信するために利用され、SPIケーブルは、外部装置がマイクロコンピュータにメモリデータ下位アドレスを送信するため及びマイクロコンピュータからメモリデータを受信するために利用される。
【特許文献1】
特開平9−293047号公報
【0005】
【発明が解決しようとする課題】
ところで、マルチプロセッサシステムには、一層の処理能力の向上が望まれている。例えば、電気自動車、ハイブリッド自動車、電磁駆動弁を用いたエンジン等の登場に伴い、自動車制御用のマルチプロセッサシステムには、より多くの制御対象及びセンサを接続する必要が生じ、プロセッサ間通信速度をより高速化する必要も生じている。
【0006】
そこで、本発明は、マルチプロセッサシステムの処理能力を向上させることを目的とする。
【0007】
【課題を解決するための手段】
本発明においては、
スレーブプロセッサと、
前記スレーブプロセッサにつながれた第一通信路と、
前記第一通信路につながれ、当該第一通信路を介した通信を開始する第二プロセッサと、
前記スレーブプロセッサと前記マスタプロセッサとの間をつなぐ、前記第一通信路よりも通信速度が低速な第二通信路と、
を有し、
前記スレーブプロセッサは、
データの送信及び受信のうち少なくとも一方を要求するコマンドを、前記第二通信路を介して前記マスタプロセッサに送信するコマンド通信手段を有し、
前記マスタプロセッサは、
前記スレーブプロセッサからの前記コマンドに応じて、前記第一通信路を介した、前記スレーブプロセッサとの、前記データの通信を開始するデータ通信手段を有することを特徴とするマルチプロセッサシステムを提供する。
【0008】
【発明の実施の形態】
以下、添付図面を参照しながら、本発明に係る実施の形態について説明する。
【0009】
まず、図1により、本実施の形態に係るマルチプロセッサシステムのハードウエア構成について説明する。なお、ここでは、マルチプロセッサシステムの一例として、自動車制御用のコントロールユニット1の内部システムを挙げることとする。
【0010】
本実施の形態に係るコントロールユニット1は、互いに異なる通信速度でデータを伝送する2種類の通信ケーブル4, 5、2種類の通信ケーブル4,5で接続された2つのプロセッサ2,3を有する。
【0011】
2種類の通信ケーブル4,5のうち、一方の通信ケーブル4は、2本の信号線を含むSCIケーブルであり、他方の通信ケーブル5は、3本の信号線を含むSPIケーブルである。SCIケーブル4の2本の信号線は、一方のプロセッサ2が有するSCIユニット(後述)のTXポートと他方のプロセッサ3が有するSCIユニット(後述)のRXポートとの間、及び、一方のプロセッサ2が有するSCIユニットのRXポートと他方のプロセッサ3が有するSCIユニットのTXポートとの間をつないでいる。一方、SPIケーブル5の信号線のうち、1本の信号線は、2つのプロセッサ2,3が有するSPIユニット(後述)のCLKポート間をつなぎ、他の2本の信号線は、一方のプロセッサ2が有するSPIユニットのMIポートと他方のプロセッサ3が有するSPIユニットのSOポートとの間、及び、一方のプロセッサ2が有するSPIユニットのMOポートと他方のプロセッサ3が有するSPIユニットのSIポートとの間をつないでいる。
【0012】
一方、各プロセッサ2,3は、自動車の制御に関する処理が定義されたプログラム等の各種データを保持する内蔵メモリ(RAM、ROM、EEPROM、Flashメモリ等)22,32、内蔵メモリ22,32等からフェッチした命令を実行する演算ユニット21,31、SCIケーブル4が接続されるとともにクロック同期式または調歩同期式の全二重シリアル通信を実現するSCIユニット23,33、SPIケーブル5が接続されるとともにクロック同期式の全二重シリアル通信を実現するSPIユニット24,34、制御対象となる1つ以上の出力装置(例えば、アクチュエータ、リレー)8a,8bにデータを入力する出力ユニット(例えば、I/Oポート、ADコンバータ)26,36、制御対象の状態に相関する情報を検知する1つ以上の入力装置(例えば、センサ類)9a,9bの出力を受け付ける入力ユニット(例えば、I/Oポート、ADコンバータ)25,35、これらのユニットを相互に接続する内部バス28,38、を有している。なお、図1には、2つのプロセッサ2,3の入力ユニット25,35及び出力ユニット26,36に入力装置9a,9b及び出力装置8a,8bが接続された構成を例示しているが、いずれか一方のプロセッサの入力ユニット及び出力ユニットだけに入力装置及び出力装置が接続されることもある。
【0013】
SCIユニット23,33は、2つのプロセッサ2,3のいずれからでも通信(以下、SCI通信)を開始できるマルチマスタ型通信インタフェースである。SCIは基本的には1byte単位のデジタル入出力であるが、例えば8byte程度の送受信バッファをSCIユニット内に設ければ、連続して数byteのデータを送受信可能である。
【0014】
SPIユニット24,34は、マスタプロセッサと定められた1つのプロセッサ(本実施の形態ではプロセッサ3)からのみ他のプロセッサ(スレーブプロセッサ)との通信(以下、SPI通信)を開始できるシングルマスタ型の通信インタフェースである。これらのSPIユニット24,34は、SPIケーブル5を介して他方のSPIユニットから転送されたデータを保持するための数十byte程度の受信バッファ24A,34A、及び、SPIケーブル5を介して他方のSPIユニットに転送されるデータを保持するための数十byte程度の送信バッファ24B,34Bを有している。マスタプロセッサ3がCS(Chip Select)信号によって宛先スレーブプロセッサ2を指定すると、マスタプロセッサ3のSPIユニット(マスタ)34の送信バッファ34B内のデータが、マスタの生成するクロック信号と同期して、スレーブプロセッサ2のSPIユニット(スレーブ)24の受信バッファ24Aに転送されるとともに、スレーブの送信バッファ24B内のデータがマスタの受信バッファ34Aへ転送される。
【0015】
なお、以上述べたハードウエア構成は、一例であり、必要に応じて、適宜の変更を加えることができる。例えば、内蔵メモリのみではメモリ容量が不足する場合、または、書換え回数の少ないFlashメモリが内蔵メモリとして用いられている場合には、内蔵メモリのメモリ容量または書換え回数を補うため、図1に破線で示したように、外部バス6a,6bを介してプロセッサ2,3に外部メモリ(RAM、Flashメモリ等)7a,7bを接続することが望ましい。また、図1に示した構成では、SCIユニット及びSPIユニットがプロセッサに内蔵されているが、例えばプロセッサ2,3として比較的低機能な小型のものを用いる場合には、SCIユニット及びSPIユニットをプロセッサ外部に設けてもよい。
【0016】
このようなハードウエア構成を有するマルチプロセッサシステムによれば、自動車制御のための機能を2つのプロセッサ2,3に分散する機能分散システム、及び、自動車制御に伴う負荷を2つのプロセッサ2,3に分散する負荷分散システムのいずれも実現することができる。ここでは、入出力プロセッサ3の入力ユニット35及び出力ユニット36にだけ入力装置及び出力装置を1つ以上ずつ接続して、出力装置に関する制御処理(制御プログラム)をスレーブプロセッサ(以下、制御プロセッサ)2に割り当て、各外部装置(入力装置、出力装置)との入出力処理(入出力ドライバ)及び制御プロセッサ2上の制御プログラムによる演算結果の判定処理(アプリケーションプログラム)をマスタプロセッサ(以下、入出力プロセッサ)3に割り当てることによって実現した機能分散システムを例として、以下、2つのプロセッサ2,3の内蔵メモリ22,23のバッファ領域及びソフトウエア構成を説明する。
【0017】
2つのプロセッサ2,3の内蔵メモリ22,32(外部メモリ6,7が設けられている場合には、内蔵メモリ22,32または外部メモリ6,7)の記憶領域には、SPIユニットを介して送信するデータ及びSPIユニットを介して受信したデータを保持するためのバッファ領域が含まれる。それらのバッファ領域は、図2に示すように、固定長の固定記憶領域であるページ単位で管理され、それぞれのページには、ページIDとしてページ番号P1, PNが割り当てられている。
【0018】
入出力プロセッサ3のページ群には、複数の入力ページ3C、複数の出力ページ3Dが含まれ、制御プロセッサ2のページ群には、入出力プロセッサ3の各入力ページ3Cと同じページ番号が与えられた複数の入力ページ2C、入出力プロセッサ3の各出力ページ3Dと同じページ番号が与えられた複数の出力ページ2Dが含まれる。入出力プロセッサ3の各入力ページ3Cには、自身に対応付けられた入力装置の出力データが入出力ドライバによって格納され、制御プロセッサ2の各入力ページ2Cには、自身と同じページ番号の入力ページ3Cのデータがコピーされる。一方、制御プロセッサ2の各出力ページ2Dには、自身に対応付けられた出力装置への入力が制御プログラムによって格納され、入出力プロセッサ3の各出力ページ3Dには、自身と同じページ番号の出力ページ2Dのデータがコピーされる。このため、制御プロセッサ2上の制御プログラムは、制御プロセッサ2の入力ページ2Cからデータをリードすることによって、入出力プロセッサ2側の入力装置の出力を取得することができ、入出力プロセッサ3上の入出力ドライバは、入出力プロセッサ3の出力ページ3Dからデータをリードすることによって、制御プロセッサ2上の制御プログラムの出力(出力装置への入力データ)を取得することができる。
【0019】
さらに、入出力プロセッサ3のページ群には、複数のライトオンリページ3Aと複数のリードオンリページ3Bとを有する共有メモリページが含まれ、制御プロセッサ2のページ群には、入出力プロセッサ3の各リードオンリページ3Bと同じページ番号が与えられた複数のライトオンリページ2Bと入出力プロセッサ3の各ライトオンリページ3Aと同じページ番号が与えられた複数のリードオンリページ2Aとを有する共有メモリページが含まれる。
【0020】
入出力プロセッサ3の各ライトオンリページ3Aには、自身に対応付けられたアプリケーションプログラムの出力が格納され、制御プロセッサ2の各リードオンリページ2Aには、自身と同じページ番号のライトオンリページ3Aのデータがコピーされる。一方、制御プロセッサ2の各ライトオンリページ2Bには、自身に対応付けられた制御プログラムの出力が格納され、入出力プロセッサ3の各リードオンリページ3Bには、自身と同じページ番号のライトオンリページ2Bのデータがコピーされる。る。このため、制御プロセッサ2上の制御プログラムは、制御プロセッサ2のリードオンリページ2Aのデータをリードすることによって、入出力プロセッサ3上のアプリケーションプログラムの出力データを取得することができ、入出力プロセッサ3上のアプリケーションプログラムは、入出力プロセッサ3のリードオンリページ3Bのデータをリードすることによって、制御プロセッサ2上の制御プログラムの出力データを取得することができる。
【0021】
なお、SPIユニットを介して送受信される通信データには、図3に示すように、これらのページに格納されるデータの格納領域D1の他、ページ番号の格納領域D2、パッドの格納領域(本実施の形態では未使用)D3、チェックサムの格納領域D4、チェックサムの1の補数の格納領域D5が設けられる。このため、これらのページのサイズは、SPIユニット24,34の受信バッファ及び送信バッファの容量よりも4バイト小さくしてある。ただし、これらの格納領域D2〜D5を通信データに設けない場合には、ページのサイズを、SPIユニット24,34の受信バッファ及び送信バッファの容量と同じにしてもよい。
【0022】
図4に、2つのプロセッサ2,3のソフトウエア構成を示す。
【0023】
制御プロセッサ2の内蔵メモリ22に格納されたソフトウエアのなかには、出力装置に関する制御処理(エンジン制御、トルク制御、パワートレイン系制御、ボディ制御、ハイブリッド自動車及び電気自動車の場合にはさらにバッテリー制御等)ごとに準備された制御プログラム200A〜200M、SCI通信を行うコマンド通信部220を実現するプログラム群、SPI通信を行うデータ通信部210を実現するプログラム群が含まれている。これらの概要は、以下の通りである。
【0024】
各制御プログラム200A〜200Mは、自身に対応付けられた入力装置の出力データを用いて制御処理を実行し、それにより、自身に対応付けられた出力装置に与えるための制御データを生成する。これら各制御プログラムは、コマンド通信部220が提供する機能により、自身に対応付けられた入力装置9bの出力を入出力プロセッサ3から取得し、かつ、自身に対応付けられた出力装置8bに入出力プロセッサ3から制御データを入力させる。
【0025】
コマンド通信部220のプログラム群には、入出力プロセッサ3に対するコマンドを制御プログラム200A〜200Mの要求に応じて生成する通信クライアント群、制御プログラム200A〜200Mと通信クライアント群とのアプリケーションインタフェースを実現するインタフェースプログラム221、SCI通信を制御する通信マネージャ223、入出力プロセッサ3からのコマンドを実行する通信サーバ(共有メモリサーバ)224、SCIユニット23を制御するSCIドライバ225が含まれている。
【0026】
通信クライアント群には、出力ページ2Dのデータ受信を入出力プロセッサ3に要求する受信要求コマンド(RECV_OUT)を生成する出力クライアント222B、入力ページ3Cのデータ送信を入出力プロセッサ3に要求する送信要求コマンド(XMIT_IN)を生成する入力クライアント222C、ライトオンリページ2B,3Aのデータ交換を入出力プロセッサ3に要求する送受信要求コマンド(SYNC_PAGE)を生成する共有メモリクライアント222Aが含まれる。これらの通信クライアント222A〜222Cが生成したコマンドを入出力プロセッサ3に送信するためのコマンドメッセージには、図5に示すように、SCIコネクションの確立及び切断を要求するSCIコマンド71、コマンドメッセージの識別に用いられる1ビット以上のシーケンシャルビットデータ72、通信クライアントが生成したコマンドに応じて提供されるサービスのID73、通信クライアントが生成したコマンド(コマンド名、サービスごとにコマンドに割りふられたコマンドID)74、通信クライアントが生成したコマンドの引数75が含まれている。以下においてコマンドメッセージに格納する、サービスID、コマンド名、コマンドID及び引数の例を、図6の項目(1)〜(3)に示す。
【0027】
インタフェースプログラム221には、制御プログラム200A〜200Mの要求に応じて通信クライアント222A〜222Cをコールする下記関数が含まれている。
(A)input_sync(top,num)
第一引数top:受信ページの先頭ページ番号、第二引数num:受信ページ数
この入力関数は、入出力プロセッサ3の入力ページ3Cのデータをリードするためのインタフェースを、制御プロセッサ2上の制御プログラム群200に提供する。具体的には、第一引数topが示す入力ページ3Cを先頭とする、第二引数numに相当するページ数分の一連の入力ページ3Cから、それらと同じページ番号の入力ページ3Cにデータが転送されるように、入力クライアント222Cをコールする。
(B)output_sync(top,num)
第一引数top:送信ページの先頭ページ番号、第二引数num:送信ページ数
この出力関数は、入出力プロセッサ3の出力ページ3Dにデータをライトするためのインタフェースを、制御プロセッサ2上の制御プログラム群200に提供する。具体的には、第一引数topが示す出力ページ2Dを先頭とする、第二引数numに相当するページ数分の一連の出力ページから、それらと同じページ番号の出力ページ3Dにデータが転送されるように、出力クライアント222Bをコールする。
(C)read_write_sync(r_page,w_page)
第一引数r_page:受信ページ番号、第二引数w_page:送信ページ番号
この共有メモリ関数は、制御プロセッサ2のライトオンリページ2Bのデータ及び入出力プロセッサ3のライトオンリページ3Aのデータを交換するためのインタフェースを、制御プロセッサ2上の制御プログラム群200及び入出力プロセッサ3上のアプリケーションプログラム群300に提供する。具体的には、第二引数w_pageが示すライトオンリページ2Bから、そのライトオンリページと同じページ番号のリードオンリページ3Bにデータが転送され、かつ、第一引数r_page が示すライトオンリページ3Aから、そのライトオンリページと同じページ番号のリードオンリページ2Aにデータが転送されるように、共有メモリクライアント222Aをコールする。
【0028】
共有メモリサーバ224は、入出力プロセッサ3からのコマンドのうち、送受信要求コマンド(SYNC_PAGE)及び後述のリード要求コマンド(READ_PAGE)を解釈及び実行し、それぞれのコマンドの実行結果を表す応答コマンド(正常終了を表すACK、異常終了を表すNAK)を生成する。この応答コマンドを入出力プロセッサ3に送信するための応答メッセージのフォーマットは、通信クライアントが生成するコマンドメッセージのフォーマット(図5参照)と同じである。但し、データ領域75には、サービスIDの代わりに、コマンドに対する応答であること示す応答IDが格納される。以下において応答メッセージに格納する、応答ID、コマンド名、コマンドID及び引数の一例を、図6の項目(4)に示す。
【0029】
通信マネージャ223は、通信クライアント222A〜222C及び通信サーバ224が生成したメッセージの送信をSCIドライバ225に依頼するとともに、SCIドライバ225が受信した、入出力プロセッサ3からのメッセージを、通信サーバ224またはコマンド発行元通信クライアントに渡す。また、通信マネージャ223は、複数のサービスが通信マネージャ223を同時使用しないように、通信マネージャを使用中のサービスのサービスIDを保持するクライアント使用権及びサーバ使用権を管理する。これにより通信マネージャ223の競合使用が防止されるため、例えば通信マネージャ223のコマンド保持用バッファが1コマンド分のサイズでよくなる。このため、通信マネージャ223が簡素化される。また、後述するように、通信マネージャ223は、クライアント使用権の参照により、入出力プロセッサ3からの応答メッセージの宛先クライアントを、通信クライアント222A〜222Cのなかから特定することができるため、上述したように、応答メッセージにはサービスIDが加えられている必要がない。このため、低速なSCI通信のオーバヘッドを低減することができる。
【0030】
SCIドライバ225は、初期化処理(SCIユニット23の割込み設定、ボーレート設定等)、通信マネージャ223から渡されたメッセージをSCIユニット23から送信する送信処理、SCIユニット23でメッセージを受信してそれを通信マネージャ223に渡す受信処理を実行する。なお、SCIドライバ225は、SCIレベルのエラー(パリティエラー、フレーミングエラー)を送信処理で検出したときにはメッセージ再送処理を実行し、SCIレベルのエラーを受信処理で検出したときには受信パケットを破棄する。また、必要に応じて、通信マネージャ、制御プログラム等にエラーの種別を通知する。
【0031】
データ通信部210のソフトウエア群には、ページ管理プログラム211、SPIユニット24を制御するSPIドライバ212が含まれている。
【0032】
ページ管理プログラム211は、外部からの通信クライアント222A〜222C及び共有メモリサーバ224からの要求に応じて、出力ページ2Dまたはライトオンリページ2BからSPIユニット24の送信バッファ24Bに、または、SPIユニット24の受信バッファ24Aから入力ページ2Cまたはリードオンリページ2Aにデータをページ単位で転送する。
【0033】
SPIドライバ225は、SPIユニット24の初期化処理(スレーブモード設定、SPI通信完了後の割込み禁止設定)、コマンドメッセージ送信直前の通信クライアントの要求に応じてSPIユニット24をイネーブルにする送受信開始処理を実行する。また、SPIドライバ225は、送受信中のメッセージ化けを検出するため、送信前には、SPIユニット24の送信バッファ24Bのチェックサムを計算して、チェックサムと1の補数をコマンドメッセージにライトし、受信後には、SPIユニット24の受信バッファ24Aのチェックサムを計算し、チェックサムと1の補数が正しいか否かをチェックする。なお、本実施の形態では、応答メッセージによってSPI通信の終了が通知されるようにするため、初期化処理で、SPI通信完了後の割込みを禁止に設定しているが、応答メッセージの代わりに、SPI通信完了時に割込みを発生させるようにする場合には、初期化処理で割込みを設定すればよい。
【0034】
一方、入出力プロセッサ3の内蔵メモリ32に格納されたソフトウエアのなかには、制御プロセッサ2の制御プログラムに対応付けて準備されたアプリケーションプログラム300A〜300M、SCI通信を行うコマンド通信部320を実現するプログラム群、SPI通信を行うデータ通信部310を実現するプログラム群、入力装置9bの出力データ取込み及び出力装置8bへのデータ入力を実行する入出力ドライバ350が含まれる。これらの概要は、以下の通りである。なお、入出力プロセッサ2上のソフトウエアのうち、制御プロセッサ3上の同一名のソフトウエアと同様な処理を実行するものについては、詳細な説明を省略する。
【0035】
各アプリケーションプログラム300A〜300Mは、制御プロセッサ2上の制御プログラム200A〜200Mの演算結果を判定するため、制御プロセッサ2上の制御プログラム200A〜200Mと同様の処理を実行し、その結果と、制御プロセッサ2上の制御プログラム200A〜200Mの演算結果とを比較する。これらの各アプリケーションプログラムは、コマンド通信部320が提供する機能によって、制御プロセッサ2上の制御プログラムの演算結果の判定のために必要なデータを、制御プロセッサ2上の制御プログラムと交換する。
【0036】
コマンド通信部320のプログラム群には、アプリケーションプログラム300A〜300Mの要求に応じたコマンドを生成する通信クライアント(共有メモリクライアント)322、アプリケーションプログラム群300と共有メモリクライアント322とのアプリケーションインタフェースを実現するインタフェースプログラム321、制御プロセッサ2上の通信マネージャと同様なSCI通信を制御する通信マネージャ323、制御プロセッサ2からのコマンドに応じたサービスを提供する通信サーバ群324、制御プロセッサ2上のSCIドライバ225と同様な処理によってSCIユニット33を制御するSCIドライバ325が含まれている。
【0037】
通信クライアントには、共有メモリクライアント322が少なくとも含まれる。共有メモリクライアント322がは、ライトオンリページ2B,3Aのデータ交換を制御プロセッサ2に要求する送受信要求コマンド(SYNC_PAGE)を生成するとともに受信バッファ24Aからのデータリードを制御プロセッサ2に要求する送受信要求コマンド(SYNC_PAGE)を生成する要求する。
【0038】
インタフェースプログラム321には、制御プロセッサ2上のインタフェースプログラム222の共有メモリ関数read_write_sync()と同じ共有メモリ関数read_write_sync()が少なくとも含まれる。
【0039】
データ通信部310のプログラム群には、制御プロセッサ2上のページ管理プログラム211と同様な処理を実行するページ管理部プログラム311、SPIマネージャ312、SPIユニット24を制御するSPIドライバ313が含まれている。
【0040】
SPIマネージャ312は、複数のサービスがSPIユニットを排他的に使用するように、SPIユニットを使用中のサービスのサービスIDを記録するSPI使用権を管理する。なお、本実施の形態では、サーバ使用権の管理によって、複数のサービスにSPIユニットを排他的に使用させることができているため、必ずしもSPIマネージャ312を設ける必要はない。
【0041】
SPIドライバ325は、SPIユニット34の初期化処理(マスタモード設定、SPI通信完了後の割込み許可設定)、通信サーバ群324の指示に応じてSPI通信を開始させる送受信開始処理を実行する。送受信開始処理では、SPIドライバ325は、SPIユニット34のレジスタを用いてSPI通信を開始させる。SPI通信では、SPIユニット34が、CLKを発信しながら、そのCLKに同期させて送信バッファ34Bのデータを制御プロセッサ2のSPIユニット24の受信バッファ24Aに転送させるとともに、制御プロセッサ2のSPIユニット24の送信バッファ24Bのデータを受信バッファ34Aに転送させる。そして、SPI通信完了後の割込みに応じて、SPIドライバ325は、通信マネージャ323を起動した通信サーバを通信マネージャ323にコールさせる。
【0042】
通信サーバ群324には、共有メモリサーバ324A、入力サーバ324C、出力サーバ324Bが含まれている。共有メモリサーバ324Aは、制御プロセッサ2からのコマンドのうち、送受信要求コマンド(SYNC_PAGE)を解釈及び実行し、その実行結果を表す応答コマンド(ACK、NAK)を生成する。入力サーバ324Cは、制御プロセッサ2からのコマンドのうち、送信要求コマンド(XMIT_IN)を解釈及び実行し、その実行結果を示す応答コマンド(ACK、NAK)を生成する。出力サーバ324Bは、制御プロセッサ2からのコマンドのうち、受信要求コマンド(RECV_OUT)を解釈及び実行し、その実行結果を示す応答コマンド(ACK、NAK)を生成する。これらの応答コマンドを制御プロセッサ2に送信するための応答メッセージのフォーマットは、制御プロセッサ2の共有メモリサーバ224が生成する応答メッセージと同じである。
【0043】
入出力ドライバ350は、通信サーバ324A〜324Cの要求に応じて、入力装置9からのデータ取込み及び出力装置8へデータ書込みを実行する。
【0044】
なお、本実施の形態では、入出力プロセッサ3の入力ユニット35及び出力ユニット36にだけ入力装置9b及び出力装置8bが接続しているため、入出力プロセッサのインタフェースプログラム321には入力関数input_sync()及び出力関数output_sync()が含まれず、入出力プロセッサ3の通信クライアントには入力クライアント及び出力クライアントが含まれていない。また、制御プロセッサの通信サーバには入力サーバ及び出力サーバが含まれていない。しかし、制御プロセッサ2の入力ユニット25及び出力ユニット26にも入力装置9a及び出力装置8bが接続され、かつ、入出力プロセッサ3上のアプリケーションプログラムが、その入力装置9a及び出力装置8aとデータをやりとりする必要がある場合には、入出力プロセッサ3の通信クライアントに入力クライアント及び出力クライアントを含め、かつ、入出力プロセッサ3のインタフェースプログラム321に入力関数input_sync()及び出力関数output_sync()を含める必要がある。また、制御プロセッサの通信サーバには入力サーバ及び出力サーバを含める必要がある。
【0045】
また、本実施の形態に係る機能分散システムでは、出力装置に関する制御処理を制御プロセッサにのみ割り当てているため、制御プログラムが制御プロセッサにだけインストールされているが、例えば、出力装置に関する制御処理の一部が入出力プロセッサ3に割り当てられてもよい。また、上記の処理以外の処理が各プロセッサに割り当てられてもよい。
【0046】
つぎに、以上のようなソフトウエア構成を有するマルチプロセッサシステムにおいて実行される4種類の処理について説明する。
(1)制御プロセッサ2上の制御プログラム200A〜200Mのうち、いずれかの制御プログラム(ここでは、制御プログラム200Kとする)が入出力プロセッサ3側の入力装置9bの出力を取得する場合には、図7に示した処理が実行される。具体的には、以下の通りである。
【0047】
制御プログラム200Kは、自身に対応付けられた複数の入力装置の出力が格納される一連の入力ページ3Cの先頭ページ番号及びページ数numを第一引数top及び第二引数として、インタフェースプログラム221の入力関数input_sync()をコールする。なお、制御プログラム200Kに対応付けられた入力装置の出力が格納される入力ページ3Cが1ページである場合には、その入力ページのページ番号及びページ数「1」を第一引数top及び第二引数numとして入力関数input_sync()がコールされる。
【0048】
その後、入力関数input_sync()によりコールされた入力クライアント222Cは、入出力プロセッサ3の入力サーバ324Cに要求する入力サービスのサービスID「0」の登録を通信マネージャ223に要求する。これにより、入力サービスのサービスID「0」がクライアント使用権に登録され、入力クライアント222Cは、クライアント使用権を獲得する(1101)。
【0049】
さらに、入力クライアント222Cは、起動時に渡された第一引数top及び終了フラグ(numが1の場合、最終ページの送信要求コマンドであることを示す値「1」、numが複数の場合、「0」)を引数とする送信要求コマンドメッセージ(XMIT_IN)を生成し、それを通信マネージャ223に渡す。通信マネージャ223が、その送信要求コマンドメッセージの送信をSCIドライバ225に依頼すると、その送信要求コマンドメッセージが、SCIケーブル4を介して入出力プロセッサ3に送信される(1102)。
【0050】
入出力プロセッサ3では、SCIドライバ325が、制御プロセッサ2からのメッセージを受信すると、それが通信マネージャ323に渡される。通信マネージャ323は、それがコマンドメッセージであることを確認すると、そのコマンドメッセージを、そのコマンドメッセージに含まれていたサービスIDにより定まる入力サーバ324Cに渡す。入力サーバ324Cは、そのコマンドメッセージを解釈し、その解釈結果に基づき以下の処理を実行させる(1103)。
【0051】
入力サーバ324Cは、コマンドメッセージに含まれていたサービスIDの登録を通信マネージャ323及びSPIマネージャ312に要求する。これにより、入力サーバ324Cが提供する入力サービスのサービスID「0」がサーバ使用権及びSPI使用権に登録され、入力サーバ324Cは、サーバ使用権及びSPI使用権を獲得する。さらに、入力サーバ324Cは、入力ページ3CからSPIユニット34へのデータ転送をページ管理プログラム311に依頼する。このとき、ページ管理プログラム311には、コマンドメッセージが引数として含むページ番号(転送元ページのページ番号)、入力ページに対する処理内容(リード)、転送先アドレス(送信バッファ34Bのアドレス)が渡される。これに応じて、ページ管理プログラム311は、入力ドライバ350を介して、すべての入力装置の出力をリードし、すべての入力ページ3Cのデータを、それぞれのページに対応付けられた入力装置の出力で更新する(1104)。さらに、ページ管理プログラム311は、転送元ページからデータをリードし、それを、転送先アドレスが示す、送信バッファ34Bの記憶領域にライトする(1105)。送信バッファ34Bへのデータ転送が終了すると、入力サーバ324Cの指示に応じて、通信マネージャ323が、SPIドライバ313に送信開始を指示する。これにより、メッセージコマンドに引数として含まれていたページ番号の入力ページ3Cのデータ、即ち、入力装置の出力が、SPIケーブル5を介して制御プロセッサ2に送信される(1106)。
【0052】
1ページ分の入力ページのデータ送信が正常終了し、入出力プロセッサ3で割込みが発生すると、入力サーバ324Cは、応答ID「7」及び実行結果ACK等を含む応答メッセージを作成し、それを通信マネージャ323に渡す。通信マネージャ323が、その応答メッセージの送信をSCIドライバ325に依頼すると、その応答メッセージが、SCIケーブル4を介して制御プロセッサ2に送信される。
【0053】
また、入力サーバ324Cは、コマンドメッセージに引数として含まれていた終了フラグの値が「1」であるか否かを判断する。その結果、入力サーバ324Cは、終了フラグの値が「1」であれば、通信マネージャ323及びSPIマネージャ312にサーバ使用権及SPI使用権を開放させ、終了フラグの値が「1」でなければ、次の入力ページの送信要求コマンドメッセージ(XMIT_IN)を待つ(1107)。
【0054】
制御プロセッサ2では、SCIドライバ225が、入出力プロセッサ3からのメッセージを受信すると、それを通信マネージャ323に渡す。通信マネージャ323は、そのメッセージが応答ID「7」を含めば、それを、クライアント使用権に登録されたサービスIDに対応する入力クライアント222Cに応答メッセージとして渡す。入力クライアント222Cは、応答メッセージがACKを含むこと、即ちSPI通信の正常終了を確認すると、SPIユニット24Aから入力ページ2Cへのデータ転送をページ管理プログラム211に依頼する。このとき、ページ管理プログラム211には、処理1102で送信要求コマンドメッセージの引数としたページ番号(転送先ページ番号)、転送ページに対する処理内容(ライト)、転送元アドレス(受信バッファ24Aのアドレス)が渡される。
【0055】
これに応じて、ページ管理プログラム211は、転送元アドレスが示す、受信バッファ24Aの記憶領域からデータをリードし、それを、転送先ページにライトする。受信バッファ24Aからのデータ転送が終了すると、入力クライアント222Cは、起動時にinput_sync()から渡された第二引数numの示すページ数分のデータの受信が終了したか否かを判断する。
【0056】
その結果、起動時に渡された第二引数numが示すページ数分のデータの受信が終了していれば、入力クライアント222Cは、通信マネージャ223にクライアント使用権を開放させる(1108)。一方、起動時に渡された第二引数numが示すページ数分のデータの受信が終了していなければ、そのページ数分のデータの受信が終了するまで、以下の処理1109〜1113が繰り返し実行される。
【0057】
制御プロセッサ2では、次の入力ページのページ番号及び終了フラグ(次の入力ページが最終ページであれば「1」、次の入力ページが最終ページでなければ「0」)を引数として、処理1102と同様な処理が実行される。これにより、次の入力ページの送信要求コマンドメッセージ(XMIT_IN)が入出力プロセッサ3に送信される(1109)。
【0058】
入出力プロセッサ3では、その送信要求コマンドメッセージに応じて、処理1103及び処理1105と同様な処理が実行される(1110)。さらに、処理1106及び処理1107と同様な処理が実行される(1111,1113)。これにより、処理1110で新たに受信した送信要求コマンドメッセージの引数が示すページ番号の入力ページ3Cのデータが、SPIケーブル5を介して制御プロセッサ2に送信され、さらに、応答メッセージが、SCIケーブル4を介して制御プロセッサ2に送信される。
【0059】
その後、制御プロセッサ2では、処理1108と同様な処理が実行され、SPIユニット24の受信バッファ24Aの記憶領域のデータが、つぎのページ番号の入力ページ2Cにライトされる(1112)。
【0060】
以上の処理により、制御プロセッサ2では、制御プログラム200Kが入力関数input_ sync()に渡した第一引数topが示す入力ページ3Cから、制御プログラム200Kが入力関数input_ sync()に渡した第二引数numが示すページ数分の入力ページまでの各ページに、それぞれ、データがライトされる。その結果、制御プログラム200Kは、それらの入力ページ3Cからデータをリードすることによって、自身に対応付けられた入力装置の出力データを取得することができる。(2)制御プロセッサ2上の制御プログラム200A〜200Mのうち、いずれかの制御プログラム(ここでは、制御プログラム200Kとする)が入出力プロセッサ3側の出力装置8bにデータを入力する場合には、図8に示した処理が実行される。具体的には、以下の通りである。
【0061】
制御プログラム200Kは、自身に対応付けられた一連の出力ページ2Dにデータをライトしてから、それら一連の出力ページ2Dの先頭ページ番号top及びページ数numを第一引数及び第二引数として、インタフェースプログラム221の出力関数output_sync()をコールする。なお、制御プログラム200Kに対応付けられた出力ページが1ページである場合には、その出力ページのページ番号及びページ数「1」を第一引数top及び第二引数numとして入力関数input_sync()がコールされる。
【0062】
その後、output_sync()によりコールされた出力クライアント222Bは、入出力プロセッサ3の出力サーバ234Bに要求する出力サービスのサービスID「1」の登録を通信マネージャ223に要求し、クライアント使用権を獲得する(1201)。
【0063】
さらに、出力クライアント222Bは、起動時に渡された第一引数topが示す出力ページ2DからSPIユニット24へのデータ転送をページ管理プログラム211に依頼する。このとき、ページ管理プログラム211には、転送元ページのページ番号、転送元ページに対する処理内容(リード)、転送先アドレス(送信バッファ34Bのアドレス)が渡される。これに応じて、ページ管理プログラム211は、転送元ページのデータをリードし、それを、転送先アドレスが示す、送信バッファ24Bの記憶領域にライトする。送信バッファ24Bへのデータ転送が終了すると、出力クライアント222Bは、起動時に渡された第一引数top及び終了フラグ(numが1の場合は「1」、numが複数の場合は「0」)を引数とする受信要求コマンドメッセージ(RECV_OUT)を生成し、それを通信マネージャ223に渡す。通信マネージャ223が、その受信要求コマンドメッセージの送信をSCIドライバ225に依頼すると、その受信要求コマンドメッセージが、SCIケーブル4を介して入出力プロセッサ3に送信される(1202)。
【0064】
入出力プロセッサ3では、SCIドライバ325が、制御プロセッサ2からのメッセージを受信すると、それが通信マネージャ323に渡される。通信マネージャ323は、それがコマンドメッセージであることを確認すると、そのコマンドメッセージを、そのコマンドメッセージに含まれていたサービスIDにより定まる出力サーバ324Bに渡す。出力サーバ324Bは、そのコマンドメッセージを解釈して、その解釈結果に基づき以下の処理を実行させる(1203)。
【0065】
出力サーバ324Bは、コマンドメッセージに含まれていたサービスIDの登録を通信マネージャ323及びSPIマネージャ312に要求することにより、サーバ使用権及びSPI使用権を獲得する(1204)。その後、通信マネージャ323は、出力サーバ324Bの指示に応じてSPIドライバ313に受信開始を指示する。これにより、メッセージコマンドに引数として含まれていたページ番号の出力ページ2Dのデータ、即ち、出力装置への入力データが、SPIケーブル5を介して入出力プロセッサ3に送信される(1205)。
【0066】
1ページ分の出力ページのデータ送信が終了し、入出力プロセッサ3で割込みが発生すると、出力サーバ324Bは、SPIユニット34からのデータ転送をページ管理プログラム311に依頼する。このとき、ページ管理プログラム311には、コマンドメッセージが引数として含むページ番号(転送先ページ番号)、転送先ページに対する処理内容(ライト)、転送元アドレス(受信バッファ34Aのアドレス)が渡される。これに応じて、ページ管理プログラム311は、転送元アドレスが示す、受信バッファ34Aの記憶領域からデータをリードし、それを転送先ページ3Dにライトする。受信バッファ34Aからのデータ転送が正常終了すると、出力サーバ324Bは、応答ID「7」及び実行結果ACK等を含む応答メッセージを作成する。通信マネージャ223が、その応答メッセージの送信をSCIドライバ325に依頼すると、その応答メッセージが、SCIケーブル4を介して制御プロセッサ2に送信される。
【0067】
また、出力サーバ324Bは、コマンドメッセージに引数として含まれていた終了フラグの値が「1」であるか否かを判断する。その結果、出力サーバ324Bは、終了フラグの値が「1」であれば、通信マネージャ及びSPIマネージャにサーバ使用権及SPI使用権を開放させ、終了フラグの値が「1」でなければ、次の出力ページの受信要求コマンドメッセージ(RECV_OUT)を待つ(1206)。
【0068】
制御プロセッサ2では、SCIドライバ225が、入出力プロセッサ3からのメッセージを受信すると、それが通信マネージャ223に渡される。通信マネージャ223は、そのメッセージに応答ID「7」が含まれれば、それを、クライアント使用権に登録されたサービスID「1」に対応する出力クライアント222Bに応答メッセージとして渡す。出力クライアント222Bは、応答メッセージがACKを含むこと、即ち、SPI通信の正常終了を確認すると、起動時にoutput_sync()から渡された第二引数numの示すページ数分のデータの送信が終了したか否かを判断する。
【0069】
その結果、起動時に渡された第二引数numが示すページ数分のデータの送信が終了していれば、出力クライアント222Bは、通信マネージャ223にクライアント使用権を開放させる(1207)。一方、起動時に渡された第二引数numが示すページ数分のデータの送信が終了していなければ、そのページ数分のデータ送信が終了するまで、以下の処理1208〜1213が繰り返し実行される。
【0070】
制御プロセッサ2では、次の出力ページのページ番号及び終了フラグ(最終ページであれば「1」、最終ページでなければ「0」)を引数として、処理1202と同様な処理が実行される。これにより、受信要求コマンドメッセージ(RECV_OUT)が入出力プロセッサに送信される(1208)。
【0071】
入出力プロセッサ3では、その受信要求コマンドメッセージに応じて、処理1203と同様な処理が実行され(1209)、さらに、処理1205及び処理1206と同様な処理が実行される(1210,1211)。これにより、受信要求コマンドメッセージの引数が示すページ番号の出力ページ2Dから、それと同じページ番号の出力ページ3Dへ、SPIケーブル5を介してデータが転送され、さらに、SCIケーブル4を介して制御プロセッサ2に応答メッセージが送信される。
【0072】
制御プロセッサ2では、入出力プロセッサ3からの応答メッセージを受信すると、処理1211と同様な処理が実行される(1212)。
【0073】
以上の処理により、入出力プロセッサ3では、制御プログラム200Kが出力関数output_sync()に渡した第一引数topが示すページ番号の出力ページ3Dから、制御プログラム200Kが出力関数output_sync()に渡した第二引数numが示すページ数分の出力ページ3Dまでの各ページに、それぞれ、データがライトされる。その結果、入出力ドライバ350は、それらの出力ページ3Dのデータをリードすることにより、それらの出力ページ3Dに対応付けられた出力装置への入力を取得することができる。
(3) 制御プロセッサ2上の制御プログラム200A〜200Mのうち、いずれかの制御プログラム(ここでは、制御プログラム200Kとする)が、入出力プロセッサ3上のアプリケーションプログラム300Kにデータ交換を要求する場合には、図9に示した処理が実行される。具体的には、以下の通りである。
【0074】
制御プログラム200Kは、アプリケーションプログラム300Kに対応付けられたライトオンリページ2Bにデータをライトしてから、アプリケーションプログラム300Kに対応付けられたライトオンリページ2B及びリードオンリページ2Aの各ページ番号を第一引数r_page及び第二引数w_pageとして、インタフェースプログラム221のリードライト関数read_write_sync()をコールする。その後、リードライト関数read_write_sync()によりコールされた共有メモリクライアント222Aは、入出力プロセッサ3の共有メモリサーバ324Aに要求する共有メモリサービスのサービスID「2」の登録を通信マネージャ223に要求し、クライアント使用権を獲得する。
【0075】
さらに、共有メモリクライアント222Aは、起動時に渡された第二引数w_pageが示すライトオンリページ2BからSPIユニット24へのデータ転送をページ管理プログラム211に依頼する。このとき、ページ管理プログラム211には、転送元ページのページ番号w_page、ライトオンリページに対する処理内容(リード)、転送先アドレス(送信バッファ24Bのアドレス)が渡される。これに応じて、ページ管理プログラム211は、転送元ページのデータをリードし、それを、転送先アドレスが示す、送信バッファ24Bの記憶領域に転送するとともに、送信バッファの61バイト目(図3のD2)に、転送元ページのページ番号w_pageをライトする。送信バッファ24Bへのデータ転送が終了すると、共有メモリクライアント222Aは、起動時に渡された第一引数r_pageを引数とする送受信要求コマンドメッセージ(SYNC_PAGE)を生成し、それを通信マネージャ223に渡す(1301)。通信マネージャ223が、その送受信要求コマンドメッセージの送信をSCIドライバ225に依頼すると、その送受信要求コマンドメッセージが、SCIケーブル4を介して入出力プロセッサ3に送信される(1302)。
【0076】
入出力プロセッサ3では、SCIドライバ325が、制御プロセッサ2からのメッセージを受信すると、それが通信マネージャ323に渡される。通信マネージャ323は、それがコマンドメッセージであることを確認すると、そのコマンドメッセージを、そのコマンドメッセージに含まれていたサービスIDにより定まる共有メモリサーバ324Aに渡す。共有メモリサーバ324Aは、そのコマンドメッセージを解釈して、その解釈結果に基づき以下の処理を実行させる。
【0077】
共有メモリサーバ324Aは、コマンドメッセージに含まれているサービスID「2」の登録を通信マネージャ323及びSPIマネージャ312に要求することによりサーバ使用権及びSPI使用権を獲得すると、さらに、起動時に渡された引数r_pageが示すライトオンリページ3AからSPIユニット34へのデータ転送をページ管理プログラム311に依頼する。このとき、ページ管理プログラム311には、転送元ページのページ番号r_page、転送元ページに対する処理内容(リード)、送信バッファ34Bのアドレス(転送先アドレス)が渡される。これに応じて、ページ管理プログラム311は、転送元ページのデータをリードし、それを、転送先アドレスが示す、送信バッファ34Bの記憶領域に転送する(1303)。
【0078】
送信バッファ34Bへのデータ転送が終了すると、通信マネージャ323は、共有メモリサーバ324Aの指示に応じて、SPIドライバ313に送受信開始を指示する。これにより、制御プロセッサ2上の制御プログラム200Kの出力が、SPIケーブル5を介して入出力プロセッサ3に送信されるとともに、入出力プロセッサ3上のアプリケーションプログラム300Kの出力が、SPIケーブル5を介して制御プロセッサ2に送信される(1304)。
【0079】
共有メモリページのデータ交換が終了し、入出力プロセッサ3で割込みが発生すると、共有メモリサーバ324Aは、受信バッファ34Aの61バイト目のデータをリードし、そのデータが示すページ番号のリードオンリページ3Bへのデータ転送をページ管理プログラム311に依頼する。このとき、ページ管理プログラム311には、転送先ページ番号(61バイト目のデータ)、転送先ページに対する処理内容(ライト)、転送元アドレス (受信バッファ34Aのアドレス)が渡される。これに応じて、ページ管理プログラム311は、転送元アドレスが示す、受信バッファ34Aの記憶領域からデータをリードし、それを転送先ページ3Bにライトする。転送先ページへのデータ転送が正常終了すると、共有メモリサーバ324Aは、応答ID「7」及び実行結果ACK等を含む応答メッセージを作成し、それを通信マネージャ323に渡す。通信マネージャ223が、その応答メッセージの送信をSCIドライバ325に依頼すると、その応答メッセージが、SCIケーブル4を介して制御プロセッサ2に送信される。さらに、共有メモリサーバ324Aは、通信マネージャ及びSPIマネージャにサーバ使用権及SPI使用権を開放させる(1305)。
【0080】
制御プロセッサ2では、SCIドライバ225が入出力プロセッサ3からのメッセージを受信すると、それが通信マネージャ223に渡される。通信マネージャ223は、そのメッセージが応答ID「7」を含めば、それを、クライアント使用権に登録されたサービスIDに対応する共有メモリクライアントに応答メッセージとして渡す。共有メモリクライアント222Aは、応答メッセージがACKを含むこと、即ちSPI通信の正常終了を確認すると、起動時に渡された第一引数r_pageが示すリードオンリページ2Aへのデータ転送をページ管理プログラム211に依頼する。このとき、ページ管理プログラム211には、転送先ページ番号r_page、転送先ページに対する処理内容(ライト)、SPIユニット24の受信バッファ24Aのアドレス(転送元アドレス)が渡される。これに応じ、ページ管理プログラム211は、転送元アドレスが示す、受信バッファ24Aの記憶領域からデータをリードし、それを転送先ページ2Aにライトする。転送先ページへのデータ転送が終了すると、共有メモリクライアント222Aは、通信マネージャ223にクライアント使用権を開放させる(1306)。
【0081】
以上の処理により、入出力プロセッサ3のライトオンリページ3Aから、そのライトオンリページと同じページ番号の、制御プロセッサ2のリードオンリページ2Aにデータが転送される。その結果、制御プロセッサ2上の制御プログラムは、それらのリードオンリページ2Aのデータをリードすることによって、自身に対応付けられた、入出力プロセッサ3上のアプリケーションプログラムの出力を取得することができる。その一方で、制御プロセッサ2のライトオンリページ2Bから、そのライトオンリページと同じページ番号の、入出力プロセッサ3のリードオンリページ3Bに転送される。その結果、入出力プロセッサ3上のアプリケーションプログラムは、それらのリードオンリページ3Bのデータをリードすることによって、自身に対応付けられた、制御プロセッサ2上の制御プログラムの出力を取得することができる。これにより、制御プロセッサ2上の制御プログラムと入出力プロセッサ3上のアプリケーションプログラムとの協調動作が可能となる。
(4) 入出力プロセッサ3のアプリケーションプログラム300A〜300Mのうち、いずれかのアプリケーションプログラム(ここでは、アプリケーションプログラム300Kとする)が、制御プロセッサ2上の制御プログラム200Kにデータ交換を要求する場合には、図10に示した処理が実行される。具体的には、以下の通りである。
【0082】
アプリケーションプログラム300Kは、制御プログラム200Kに対応付けられたライトオンリページ3Aにデータをライトしてから、その制御プログラム200Kに対応付けられたライトオンリページ3A及びリードオンリページ3Bの各ページ番号を第一引数r_page及び第二引数w_pageとして、インタフェースプログラム321のリードライト関数read_write_sync()をコールする。その後、リードライト関数read_write_sync()によってコールされた共有メモリクライアント322は、制御プロセッサ2の共有メモリサーバ224に要求する共有メモリサービスのサービスID「2」の登録を通信マネージャ323及びSPIマネージャ312に要求し、クライアント使用権及びSPI使用権を獲得する。
【0083】
さらに、共有メモリクライアント322は、起動時に渡された第二引数w_pageが示すライトオンリページ3AからSPIユニット34へのデータ転送をページ管理プログラム311に依頼する。このとき、ページ管理プログラム311には、転送元ページ番号w_page、転送元ページに対する処理内容(リード)、転送先アドレス(送信バッファ34Bのアドレス)が渡される。これに応じ、ページ管理プログラム311は、転送元ページのデータをリードし、それを、転送先アドレスが示す、送信バッファ34Bの記憶領域に転送するとともに、送信バッファの61バイト目(図3のD2)に転送元ページ番号w_pageをライトする。送信バッファ34Bへのデータ転送が終了すると、共有メモリクライアント322は、起動時に渡された第一引数r_pageを引数とする送受信要求コマンドメッセージ(SYNC_PAGE)を生成し、それを通信マネージャ223に渡す(1401)。通信マネージャ323が、その送受信要求コマンドメッセージの送信をSCIドライバ325に依頼すると、その送受信要求コマンドメッセージが、SCIケーブル4を介して制御プロセッサ2に送信される(1402)。
【0084】
制御プロセッサ2では、SCIドライバ225が、入出力プロセッサ3からのメッセージを受信すると、それが通信マネージャ223に渡される。通信マネージャ223は、それがコマンドメッセージであることを確認すると、そのコマンドメッセージを、そのコマンドメッセージに含まれていたサービスIDにより定まる共有メモリサーバ224に渡す。共有メモリサーバ224は、そのコマンドメッセージを解釈して、その解釈の結果に基づき以下の処理を実行させる。
【0085】
共有メモリサーバ224は、コマンドメッセージに含まれているサービスID「2」の登録を通信マネージャ323及びSPIマネージャ312に要求することによりサーバ使用権及びSPI使用権を獲得すると、起動時に渡された引数r_pageが示すライトオンリページ2BからSPIユニット24へのデータ転送をページ管理プログラム211に依頼する。このとき、ページ管理プログラム211には、転送元ページ番号r_page、転送元ページに対する処理内容(リード)、転送先アドレス(送信バッファ24Bのアドレス)が渡される。これに応じて、ページ管理プログラム211は、転送元ページのデータをリードし、それを、転送先アドレスが示す、送信バッファ24Bの記憶領域にライトする。送信バッファ24Bへのデータ転送が正常終了すると、共有メモリサーバ224は、応答ID「7」及び実行結果ACK等を含む応答メッセージを作成し、それを通信マネージャ223に渡す。通信マネージャ223が、その応答メッセージの送信をSCIドライバ225に依頼すると、その応答メッセージが、SCIケーブル4を介して入出力プロセッサ3に送信される(1403)。
【0086】
入出力プロセッサ3では、SCIドライバ325が、制御プロセッサ2からのメッセージを受信すると、それが通信マネージャ323に渡される。通信マネージャ323は、そのメッセージが応答ID「7」を含めば、そのメッセージを、クライアント使用権に登録されたサービスIDに対応する共有メモリクライアント322に応答メッセージとして渡す。応答メッセージがACKを含むこと、即ち、制御プロセッサ2側においてSPIユニット24へのデータ転送が正常終了していることが、共有メモリクライアント322により確認されると(1404)、通信マネージャ323は、共有メモリクライアント322の指示に応じ、SPIドライバ313に送受信開始を指示する。これにより、入出力プロセッサ3のライトオンリページ3Aのデータ(即ち、入出力プロセッサ3上のアプリケーションプログラム300Kの出力)が、SPIケーブル5を介して制御プロセッサ2に送信されるとともに、制御プロセッサ2のライトオンリページ2Bのデータ(即ち、制御プロセッサ2上の制御プログラム200Kの出力)が、SPIケーブル5を介して入出力プロセッサ3に送信される(1405)。
【0087】
共有メモリページのデータ交換が正常終了し、入出力プロセッサ3で割込みが発生すると、共有メモリクライアント322は、起動に渡された第一引数r_pageが示すページ番号のリードオンリページ3Bへのデータ転送をページ管理プログラム311に依頼する。このとき、ページ管理プログラム311には、転送先ページ番号r_page、転送先ページに対する処理内容(ライト)、転送元アドレス (SPIユニット34の受信バッファ34Aのアドレス)が渡される。これに応じて、ページ管理プログラム311は、転送元アドレスが示す、受信バッファ34Aの記憶領域からデータをリードし、そのデータを転送先ページ3Bにライトする。
【0088】
転送先ページへのデータ転送が終了すると、共有メモリサーバ324Aは、リード要求コマンドメッセージ(READ_PAGE)を作成し、それを通信マネージャ323に渡す。通信マネージャ223が、そのリード要求コマンドメッセージの送信をSCIドライバ325に依頼すると、そのリード要求コマンドメッセージが、SCIケーブル4を介して制御プロセッサ2に送信される(1406)。
【0089】
制御プロセッサ2では、SCIドライバ225が、入出力プロセッサ3からのメッセージを受信すると、それが通信マネージャ223に渡される。通信マネージャ223は、それがコマンドメッセージであることを確認すると、そのコマンドメッセージを、そのコマンドメッセージに含まれるサービスIDにより定まる共有メモリサーバ224に渡す。共有メモリサーバ224は、そのコマンドメッセージを解釈し、受信バッファ24Aの61バイト目のデータ(w_page)が示すリードオンリページ2Aへのデータ転送をページ管理プログラム211に依頼する。このとき、ページ管理プログラム211には、転送先ページ番号(61バイト目のデータ)、転送先ページに対する処理内容(ライト)、転送元アドレス (受信バッファ34Aのアドレス)が渡される。
【0090】
これに応じて、ページ管理プログラム211は、転送元アドレスが示す、受信バッファ24Aの記憶領域からデータをリードし、そのデータを転送先ページ2Aにライトする。受信バッファ24Aからのデータ転送が正常終了すると、共有メモリサーバ224は、応答ID「7」及び実行結果ACK等を含む応答メッセージを作成し、それを通信マネージャ223に渡す。通信マネージャ223は、その応答メッセージの送信をSCIドライバ225に依頼すると、その応答メッセージが、SCIケーブル4を介して入出力プロセッサ3に送信される。さらに、共有メモリサーバ224は、通信マネージャ223にサーバ使用権を開放させる(1407)。
【0091】
入出力プロセッサ3では、制御プロセッサ2からのメッセージをSCIドライバ325が受信すると、それが通信マネージャ323に渡される。通信マネージャ323は、そのメッセージが応答ID「7」を含めば、それを、クライアント使用権に登録されたサービスIDに対応する共有メモリクライアント322に応答メッセージとして渡す。応答メッセージがACKを含むこと、即ち、制御プロセッサ2とのデータ交換の正常終了が共有メモリクライアント322により確認されると、通信マネージャ323及びSPIマネージャは、共有メモリクライアント322の指示に応じて、メモリクライアント使用権及びSPI使用権を解放する(1408)。
【0092】
以上の処理により、制御プロセッサ2のライトオンリページ2Bから、そのライトオンリページと同じページ番号の、入出力プロセッサ3のリードオンリページ3Bにデータが転送される。その結果、入出力プロセッサ3上のアプリケーションプログラムは、それらのリードオンリページ3Bのデータをリードすることによって、自身に対応付けられた、制御プロセッサ2上の制御プログラムの出力を取得することができる。その一方で、入出力プロセッサ3のライトオンリページ3Aから、そのライトオンリページと同じページ番号の、制御プロセッサ2のリードオンリページ2Aにデータが転送される。その結果、制御プロセッサ2上の制御プログラムは、それらのリードオンリページ2Aのデータをリードすることによって、自身に対応付けられた、入出力プロセッサ3上のアプリケーションプログラムの出力を取得することができる。これにより、制御プロセッサ2上の制御プログラムと入出力プロセッサ3上のアプリケーションプログラムとの協調動作が可能となる。
【0093】
なお、本実施の形態では、入力プロセッサのライトオンリページから制御プロセッサへのリードオンリページへのデータ転送と、制御プロセッサのライトオンリページから入力プロセッサへのリードオンリページへのデータ転送とが、制御プログラムからの1の要求に応じて実行されるようにしているが、制御プログラムからの個別の要求に応じて個別のタイミングで実行されるようにしてもよい。
【0094】
以上述べたように、本実施の形態に係るソフトウエア構成によれば、2つのプロセッサのSPIユニットをあたかもマルチマスタ型通信インタフェースであるかのように利用して、2つのプロセッサ間でデータを双方向にやりとりすることができる。このため、SCIのみを利用したプロセッサ間通信より高速なプロセッサ間通信を実現することができる。そして、このようにプロセッサ間通信の高速化が図られたことにより、外部装置との入出力を専用プロセッサに実行させることが可能となり、制御対象及びセンサの増加にも対応可能となる。これらのことから、本実施の形態によれば、マルチプロセッサシステムの処理能力の向上を図ることができる。
【0095】
また、プロセッサの外部バスを共有するバス結合型マルチプロセッサシステムとは異なり、プロセッサ間通信のための外付け調停回路が不要であるため、安価なマルチプロセッサシステムを実現することができる。
【0096】
なお、本実施の形態では、入力プロセッサの入力ページから制御プロセッサへの入力ページへのデータ転送(input_sync()による処理)と、制御プロセッサの出力ページから入力プロセッサへの出力ページへのデータ転送(output_sync()による処理)とが、制御プログラムからの個別の要求に応じて個別のタイミングで実行されるようにしているが、制御プログラムからの1の要求に応じて両データ転送が実行されるようにしてもよい。このようにする場合には、例えば、入力クライアント222C及び出力クライアント222Bの代わりに入出力クライアントを制御プロセッサ2にインストールしておき、入出力クライアントをコールする関数がコールされたら、入出力クライアントが、制御プログラムの指定した入力ページのデータを送信バッファにコピーし、制御プログラムの指定した出力ページ番号を引数とするコマンドメッセージを送信するようにすればよい。一方、入出力プロセッサ3には、入力サーバ324C及び出力サーバ324Bの代わりに入出力サーバをインストールしておき、入出力サーバが、入出力クライアントからのコマンドメッセージを受信したら、そのコマンドメッセージで指定された出力ページのデータを送信バッファにコピーし、SPI通信開始を通信マネージャ323に指示するようにすればよい。そして、SPI通信によるデータ交換が終了したら、SPIユニットから出力ページへのデータ転送が入出力プロセッサで行われ、かつ、SPIユニットから入力ページへのデータ転送が制御プロセッサで行われるようにすればよい。このようにすれば、入力プロセッサの入力ページから制御プロセッサの入力ページへのデータ転送と制御プロセッサの出力ページから入力プロセッサの出力ページへのデータ転送とが個別に実行される上述の場合と比較して、入力装置からのデータ取得及び出力装置へのデータ入力に要する時間をほぼ半減させることができる。
【0097】
また、本実施の形態では、制御プロセッサのSPIユニットをスレーブ、入出力プロセッサのSPIユニットをマスタとしたが、制御プロセッサのSPIユニットをマスタ、入出力プロセッサのSPIユニットをスレーブとしてもよい。このようにする場合、SPIマネージャを制御プロセッサにおくとともに、入力サービス及び出力サービスにおけるSPI通信開始タイミングを以下のように変更する必要がある。
【0098】
入力サービスでは、例えば、入出力プロセッサ上の入力サーバは、制御プロセッサからのXMIT_INコマンドメッセージに応じて入力ページを送信バッファにコピーした段階で応答メッセージを返し、制御プロセッサ上の入力クライアントは、入出力プロセッサからの応答メッセージに応じてSPI通信を開始して、SPI通信が終了したら、受信バッファから入力ページにデータを転送させる。
【0099】
出力サービスでは、例えば、制御プロセッサ上の出力クライアントは、RECV_OUTコマンドメッセージの送信前にSPI通信を開始し、入出力プロセッサ上の出力サーバは、制御プロセッサからのRECV_OUTコマンドメッセージに応じて、受信バッファのデータを出力ページに転送させる。
【0100】
また、本実施の形態では、1本のSCIケーブルと1本のSPIケーブルとで2つのプロセッサ間を接続しているが、2つのプロセッサ間の2種類のケーブルの本数の組み合わせは、必ずしも、この通りである必要はない。例えば、2つのプロセッサ間を接続するSPIケーブルを複数本設けることによって、複数のサービスが、それぞれ、個別のSPIケーブルを介して提供されるようにしてもよい。また、2つのプロセッサ間を接続するSCIケーブルを複数本設けてもよい。図12に、2つのプロセッサ間を2本のSCIケーブル4,4'と1本のSPIケーブル5とで接続した場合の構成例を示す。SCIドライバは、メッセージを受信すると、そのメッセージの送信完了確認のために、SCIコマンド領域(図5の71)を用いてACKまたはNAKを返すことがあるが、SCIケーブル上でメッセージが化けると、そのメッセージが、プロセッサのメッセージ(コマンド、応答)なのか、SCIドライバの確認メッセージ(ACK、NAK)なのか判定できない。上述のように、2つのプロセッサ2,3間のSCIケーブルを2本にすれば、一方のSCIケーブル4を、制御プロセッサのメッセージ送信及び確認受信用、他方のSCIケーブル4'を、入出力プロセッサのメッセージ送信及び確認受信用に割り当てることができる。このようにすることにより、コマンドメッセージが化けてしまっても、SCIドライバのエラーなのか通信サーバ及び通信クライアントのエラーなのかを判定し、エラーを切り分けることができる。このため、速やかにエラー処理を行うことができる。
【0101】
また、本実施の形態ではSPIを用いているが、他のシングルマスタ型シリアル通信インタフェース、マルチマスタ型シリアル通信インタフェースを用いてももよい。
【0102】
また、本実施の形態ではSCIを用いているが、他のマルチマスタ型双方向シリアル通信インタフェース、パラレル通信インタフェースを用いてもよい。例えば、IEEE1394を用いる場合には、メッセージをIEEE1394データパケットに入れて送受信する。また、図14に示したようにDI,DOを用いる場合には、1本以上のDIを用いて、それぞれの信号線にコマンドを割り当て、8本ずつのDI及びDOを用いて、それぞれの信号線に引数の1バイトのデータを割り当てる。
【0103】
以上においては、マルチプロセッサシステムにより機能分散システムを実現する場合を説明したが、前述したように、同様なハードウエアを有するマルチプロセッサシステムによって負荷分散システムを実現することもできる。負荷分散システムを実現する場合には、2つのプロセッサにほぼ均等な負荷がかかるように、2つのプロセッサにジョブを分担させるようにすればよい。
【0104】
また、以上においては、自動車制御用のコントローラを例に挙げたが、本実施の形態に係るマルチプロセッサシステムは、自動車制御用のコントローラに限らず、例えば、ファクトリオートメーションのコントローラ等として用いることもできる。
【0105】
【発明の効果】
本発明によれば、マルチプロセッサシステムの処理能力の向上が図られる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るマルチプロセッサシステムのハードウエア構成図である。
【図2】本発明の実施の一形態に係る2つのプロセッサのバッファのページ構成を概念的に示した図である。
【図3】SPI通信データのフォーマットを概念的に示した図である。
【図4】本発明の一実施形態に係るマルチプロセッサシステムのソフトウエア構成図である。
【図5】コマンドメッセージのフォーマットを概念的に示した図である。
【図6】コマンドメッセージに含ませるデータの一例を示した図である。
【図7】本発明の一実施形態に係る入力サービスを説明するための図である。
【図8】本発明の一実施形態に係出力サービスを説明するための図である。
【図9】本発明の一実施形態に係共有メモリサービスを説明するための図である。
【図10】本発明の一実施形態に係共有メモリサービスを説明するための図である。
【図11】本発明の一実施形態に係るマルチプロセッサシステムのハードウエアの概略構成図である。
【図12】本発明の一実施形態に係るマルチプロセッサシステムのハードウエアの概略構成図である。
【符号の説明】
1…自動車制御用のコントローラ、2,3…プロセッサ、4…SCIケーブル、5…SPIケーブル、8…出力装置、9…入力装置、21,31…演算ユニット、22,32…内蔵メモリ、23,33…SCIユニット、24,34…SPIユニット、25,35…入力ユニット、26,36…出力ユニット、200A〜200M…制御プログラム、210…データ通信部、220…コマンド通信部、300A〜300M…アプリケーションプログラム、310…データ通信部、320…コマンド通信部、212,313…SPIドライバ、225,325…SCIドライバ、350…入出力ドライバ
Claims (11)
- マスタにしたがうスレーブと定められた第1シングルマスタ型双方向通信インタフェースユニットと、前記第1シングルマスタ型双方向通信インタフェースユニットよりも通信速度の小さな第1マルチマスタ型双方向通信インタフェースユニットとを有するスレーブプロセッサと、
前記スレーブとの通信を開始するマスタと定められた第2シングルマスタ型双方向通信インタフェースユニットと、前記第2シングルマスタ型双方向通信インタフェースユニットよりも通信速度の小さな第2マルチマスタ型双方向通信インタフェースユニットとを有するマスタプロセッサと、
前記第1シングルマスタ型双方向通信インタフェースユニットと前記第2シングルマスタ型双方向通信インタフェースユニットとをつなぐ第1通信ケーブルと、
前記第1マルチマスタ型双方向通信インタフェースユニットと前記第2マルチマスタ型双方向通信インタフェースユニットとをつなぐ第2通信ケーブルと、
を有し、
前記スレーブプロセッサは、
データの通信開始を前記マスタプロセッサに要求する通信要求コマンドを、前記第1マルチマスタ型双方向通信インタフェースユニットから、前記第2通信ケーブルを介して前記マスタプロセッサに送信する第1コマンド通信手段を有し、
前記マスタプロセッサは、
前記第2マルチマスタ型双方向通信インタフェースが受信した前記通信要求コマンドに応じて、前記第1シングルマスタ双方向通信インタフェースユニットとの通信を前記第2シングルマスタ型双方向通信インタフェースに開始させ、前記第1通信ケーブルを介して前記スレーブプロセッサに前記データを送信するデータ通信手段を有することを特徴とする
マルチプロセッサシステム。 - 請求項1記載のマルチプロセッサシステムであって、
前記第1シングルマスタ型双方向通信インタフェースユニット及び前記第2シングルマスタ型双方向通信インタフェースユニットは、SPI(Serial Peripheral Interface)ユニットであることを特徴とするマルチプロセッサシステム。 - 請求項1記載のマルチプロセッサシステムであって、
前記第1マルチマスタ型双方向通信インタフェースユニット及び前記第2マルチマスタ型双方向通信インタフェースユニットは、シリアル通信インタフェースユニット及びIEEE1394インタフェースユニットのうちのいずれか一方であることを特徴とするマルチプロセッサシステム。 - 請求項1記載のマルチプロセッサシステムであって、
前記マスタプロセッサは、
入力装置が接続され、前記入力装置の出力データを受け付ける入力手段を有し、
前記スレーブプロセッサは、
前記入力装置の出力データを用いた演算を行うプログラムを有し、
前記第1コマンド通信手段は、前記プログラムの要求に応じて、前記入力装置の出力データの送信を要求する第1通信要求コマンドを、前記第1マルチマスタ型双方向通信インタフェースユニットから前記マスタプロセッサに送信し、
前記データ通信手段は、前記第2マルチマスタ型双方向通信インタフェースユニットが前記第1通信要求コマンドを受信した場合には、当該第1通信要求コマンドに応じて、前記第1シングルマスタ型双方向通信インタフェースユニットからの、前記入力装置の出力データの受信を前記第2シングルマスタ型双方向通信インタフェースユニットに開始させることを特徴とするマルチプロセッサシステム。 - 請求項4記載のマルチプロセッサシステムであって、
前記マスタプロセッサは、
前記入力装置に対応付けられ、当該入力装置の出力データが格納される第1入力ページを含む記憶手段を有し、
前記スレーブプロセッサは、
前記第1入力ページに対応付けられた第2入力ページを含む記憶手段を有し、
前記第1コマンド通信手段は、前記第1入力ページの指定を含む前記第1通信要求コマンドを送信し、
前記データ通信手段は、前記第1通信要求コマンドに含まれる指定が示す前記第1入力ページに格納されたデータの受信を前記第2シングルマスタ型双方向通信インタフェースユニットに開始させ、当該データを前記第2入力ページに格納することを特徴とするマルチプロセッサシステム。 - 請求項1記載のマルチプロセッサシステムであって、
前記マスタプロセッサは、
出力装置が接続され、前記出力装置に入力データを入力する出力手段を有し、
前記スレーブプロセッサは、
前記入力データを算出するプログラムを有し、
前記第1コマンド通信手段は、前記プログラムの要求に応じて、前記入力データの受信を要求する第2通信要求コマンドを、前記第1マルチマスタ型双方向通信インタフェースユニットから前記マスタプロセッサに送信し、
前記データ通信手段は、前記第2マルチマスタ型双方向通信インタフェースユニットが前記第2通信要求コマンドを受信した場合には、当該第2通信要求コマンドに応じて、前記第1シングルマスタ型双方向通信インタフェースユニットへの、前記出力装置の入力データの送信を前記第2シングルマスタ型双方向通信インタフェースユニットに開始させることを特徴とするマルチプロセッサシステム。 - 請求項6記載のマルチプロセッサシステムであって、
前記スレーブプロセッサは、
前記出力装置に対応付けられ、当該出力装置の入力データが前記プログラムにより格納される第1出力ページを含む記憶手段を有し、
前記第1コマンド通信手段は、前記第1出力ページの指定を含む前記第2通信要求コマンドを送信し、
前記データ通信手段は、前記第2通信要求コマンドに含まれる指定が示す前記第1出力ページに格納された前記入力データの送信を前記第2シングルマスタ型双方向通信インタフェースユニットに開始させ、
前記マスタプロセッサは、
前記第1出力ページに対応付けられた第2出力ページを含む記憶手段と、
前記第2シングルマスタ型双方向通信インタフェースユニットが前記第2通信要求コマンドに応じて送信したデータを、前記第2出力ページに格納するデータ通信手段と、
を有することを特徴とするマルチプロセッサシステム。 - 請求項1記載のマルチプロセッサシステムであって、
前記マスタプロセッサは、第1プログラムを有し、
前記スレーブプロセッサは、前記第1プログラムと協動する第2プログラムを有し、
前記第1コマンド通信手段は、前記第2プログラムの要求に応じて、前記第1プログラムの出力データの送信を要求する第1通信要求コマンド及び前記第2プログラムの出力データの受信を要求する第2通信要求コマンドを、前記第1マルチマスタ型双方向通信インタフェースユニットから前記マスタプロセッサに送信し、
前記データ通信手段は、前記第2マルチマスタ型双方向通信インタフェースユニットが前記第1通信要求コマンドを受信した場合には、当該第1通信要求コマンドに応じて、前記第2シングルマスタ型双方向通信インタフェースユニットに、前記第1シングルマスタ型双方向通信インタフェースユニットへの、前記第1プログラムの出力データの送信を開始させ、前記第2マルチマスタ型双方向通信インタフェースユニットが前記第2通信要求コマンドを受信した場合には、当該第2通信要求コマンドに応じて、前記第1シングルマスタ型双方向通信インタフェースユニットへの、前記第2プログラムの出力データの受信を前記第2シングルマスタ型双方向通信インタフェースユニットに開始させることを特徴とするマルチプロセッサシステム。 - 請求項1記載のマルチプロセッサシステムであって、
前記第1マルチマスタ型双方向通信インタフェースユニットと前記第2マルチマスタ型双方向通信インタフェースユニットとに接続された第3通信ケーブルを有し、
前記マスタプロセッサは、
前記スレーブプロセッサに対するコマンドを、前記第2マルチマスタ型双方向通信インタフェースユニットから、前記第3通信ケーブルを介して前記スレーブプロセッサに送信する第2コマンド通信手段を有し、
当該第2コマンド通信手段は、
前記第2マルチマスタ型双方向通信インタフェースユニットが、前記第2通信ケーブルを介して前記通信要求コマンドを受信した場合には、前記第2マルチマスタ型双方向通信インタフェースユニットから、前記第2通信ケーブルを介して確認メッセージを前記スレーブプロセッサに送信し、
前記第1コマンド通信手段は、前記第2マルチマスタ型双方向通信インタフェースユニットが、前記第3通信ケーブルを介して前記コマンドを受信した場合には、前記第3通信ケーブルを介して確認メッセージを前記マスタプロセッサに送信することを特徴とするマルチプロセッサシステム。 - 請求項1記載のマルチプロセッサシステムであって、
前記第1マルチマスタ型双方向通信インタフェースユニットは、前記スレーブプロセッサの内部または外部に設けられ、前記第2マルチマスタ型双方向通信インタフェースユニットは、前記マスタプロセッサの内部または外部に設けられることを特徴とするマルチプロセッサシステム。 - 請求項1記載のマルチプロセッサシステムであって、
前記マスタプロセッサは、前記スレーブプロセッサから前記通信要求コマンドを受信した後、サーバの使用権または前記第1通信ケーブルの使用権を確保することを特徴とするマルチプロセッサシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003059060A JP3970786B2 (ja) | 2003-03-05 | 2003-03-05 | マルチプロセッサシステム |
US10/642,755 US7836233B2 (en) | 2003-03-05 | 2003-08-19 | Multi-processor system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003059060A JP3970786B2 (ja) | 2003-03-05 | 2003-03-05 | マルチプロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004272386A JP2004272386A (ja) | 2004-09-30 |
JP3970786B2 true JP3970786B2 (ja) | 2007-09-05 |
Family
ID=32923577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003059060A Expired - Fee Related JP3970786B2 (ja) | 2003-03-05 | 2003-03-05 | マルチプロセッサシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7836233B2 (ja) |
JP (1) | JP3970786B2 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5038589B2 (ja) * | 2004-10-04 | 2012-10-03 | 株式会社日立製作所 | ディスクアレイ装置及びその負荷分散方法 |
US7570078B1 (en) * | 2006-06-02 | 2009-08-04 | Lattice Semiconductor Corporation | Programmable logic device providing serial peripheral interfaces |
US7925711B1 (en) * | 2006-12-15 | 2011-04-12 | The Research Foundation Of State University Of New York | Centralized adaptive network memory engine |
CN100541374C (zh) * | 2007-08-01 | 2009-09-16 | 暨南大学 | 一种多轴联动运动控制器 |
DE102008062865B4 (de) * | 2008-05-30 | 2016-09-22 | Continental Teves Ag & Co. Ohg | Serial-Peripheral-Interface-Schnittstelle mit verminderter Verbindungsleitungsanzahl |
DE112009001700B4 (de) * | 2008-07-22 | 2019-02-07 | Toyota Jidosha Kabushiki Kaisha | Multikernsystem, fahrzeugseitige elektronische Steuerungseinheit und Aufgabenumschaltverfahren |
GB201102594D0 (en) * | 2011-02-15 | 2011-03-30 | Nordic Semiconductor Asa | Serial interface |
JP5681006B2 (ja) * | 2011-03-14 | 2015-03-04 | 富士通コンポーネント株式会社 | Kvmスイッチ及びプログラム |
WO2013045174A1 (en) * | 2011-08-18 | 2013-04-04 | Abb Technology Ag | Distributing data in a control system of a power converter |
US9128726B2 (en) | 2011-12-14 | 2015-09-08 | General Electric Company | Systems and methods for interfacing master and slave processors |
ITRM20130151A1 (it) * | 2013-03-13 | 2013-06-12 | Arma Dei Carabinieri | Lettore e decodificatore portatile di circuiti integrati di memoria non volatile dotato di interfaccia a schermo tattile |
WO2015176040A1 (en) * | 2014-05-15 | 2015-11-19 | Adesto Technologies Corporation | Memory devices and methods having instruction acknowledgement |
FR3026515B1 (fr) * | 2014-09-26 | 2017-12-01 | Valeo Systemes Thermiques | Transmission de donnees synchrones par l'intermediaire d'un bus de donnees serie, notamment un bus spi |
CN104331008B (zh) * | 2014-10-23 | 2017-03-15 | 安徽四创电子股份有限公司 | 基于dbf的多普勒天气雷达的小型化高速处理板的处理方法 |
WO2018058862A1 (zh) | 2016-09-29 | 2018-04-05 | 华为技术有限公司 | 一种基于spi的数据传输方法及装置 |
KR102438319B1 (ko) * | 2018-02-07 | 2022-09-01 | 한국전자통신연구원 | 공통 메모리 인터페이스 장치 및 방법 |
GB2594250A (en) * | 2020-04-20 | 2021-10-27 | Continental Automotive Gmbh | Electronic device and method of responding to a trigger to wake up |
CN114116559B (zh) * | 2022-01-20 | 2022-05-17 | 浙江中控技术股份有限公司 | 一种适用于plc应用的高速总线方法 |
TWI812194B (zh) * | 2022-04-27 | 2023-08-11 | 凌通科技股份有限公司 | 序列周邊介面相容性擴展切換方法與使用其之嵌入式系統 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4739323A (en) * | 1986-05-22 | 1988-04-19 | Chrysler Motors Corporation | Serial data bus for serial communication interface (SCI), serial peripheral interface (SPI) and buffered SPI modes of operation |
JPH0888668A (ja) * | 1994-09-20 | 1996-04-02 | Nippondenso Co Ltd | 通信装置 |
JPH09293047A (ja) | 1996-04-25 | 1997-11-11 | Denso Corp | マイクロコンピュータのデータ転送装置 |
US5878234A (en) * | 1996-09-10 | 1999-03-02 | Sierra Wireless, Inc. | Low power serial protocol translator for use in multi-circuit board electronic systems |
US7020790B2 (en) * | 2001-02-08 | 2006-03-28 | Honeywell International Inc. | Electric load management center including gateway module and multiple load management modules for distributing power to multiple loads |
EP1237090A1 (en) * | 2001-02-28 | 2002-09-04 | Alcatel | Serial peripheral interface master device, a serial peripheral interface slave device and a serial peripheral interface |
US20040098519A1 (en) * | 2001-03-16 | 2004-05-20 | Hugo Cheung | Method and device for providing high data rate for a serial peripheral interface |
US6687769B2 (en) * | 2001-03-16 | 2004-02-03 | Texas Instruments Incorporated | Serial peripheral interface with high performance buffering scheme |
-
2003
- 2003-03-05 JP JP2003059060A patent/JP3970786B2/ja not_active Expired - Fee Related
- 2003-08-19 US US10/642,755 patent/US7836233B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004272386A (ja) | 2004-09-30 |
US20040176857A1 (en) | 2004-09-09 |
US7836233B2 (en) | 2010-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3970786B2 (ja) | マルチプロセッサシステム | |
KR101720134B1 (ko) | 버스 브리지 장치 | |
US8301821B2 (en) | Communication module for connecting a serial bus to a plurality of system buses | |
US7058744B2 (en) | Cluster system, computer and program | |
JPS63255759A (ja) | 制御システム | |
US20070204073A1 (en) | Method for improving flexibility of direct memory access channels | |
EP3644192B1 (en) | Master chip, slave chip, and dma transfer system between chips | |
KR20180071967A (ko) | 데이터 처리 | |
JPH04114203A (ja) | 車輌用電子制御システム | |
US5928326A (en) | Programmable, multi-buffer device and method for exchanging messages between peer-to-peer network nodes | |
CN112347015A (zh) | 芯片片上系统异构多处理器间的通信装置及方法 | |
EP0814408B1 (en) | Bus bridge apparatus | |
JP4920036B2 (ja) | メモリチャネル上の応答のスケジューリング | |
JP2022123826A (ja) | データ処理装置及びデータ処理システム | |
CN112463680B (zh) | 数据搬运方法及装置 | |
JP2570872B2 (ja) | ワンチップマイクロコンピュータ | |
US6128689A (en) | System for exchanging data through data memory area of common memory in synchronous and asynchronous modes | |
JP4104939B2 (ja) | マルチプロセッサシステム | |
JP4856413B2 (ja) | 演算処理装置、情報処理装置、及び演算処理装置の制御方法 | |
US20040230717A1 (en) | Processing device | |
JP2008502977A (ja) | バス・コントローラのための割り込み方式 | |
JP3562566B2 (ja) | データ転送システム及びバスプロトコル変換器 | |
JP3016788B2 (ja) | 装置間通信・キャッシュ一致処理方式 | |
EP1990725B1 (en) | Central processing unit, central processing unit control method, and information processing system | |
JP3799741B2 (ja) | バスコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070206 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070406 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070508 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070606 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100615 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100615 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100615 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110615 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110615 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120615 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120615 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130615 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |