(57)【特許請求の範囲】
【請求項１】
２つの中央処理装置（CPU:Central Processing Unit）の双方から書き込み・読み出しが可能なデュアルポートメモリを介して上記２つのＣＰＵ間でデータ交換を行うＣＰＵ間通信システムであって、
特定のアドレスに書き込みを行うとそのアドレスに対応した割り込みを発生するデュアルポートメモリと、
上記デュアルポートメモリの上記特定のアドレスを介して割り込み詳細情報を伝送することにより他方のＣＰＵにデータの読み出しを開始させる読み出し要求を出力する割り込み手段と、上記割り込みに関する状態遷移を管理し、上記割り込み手段が上記読み出し要求を出力した際に他方のＣＰＵも同時に読み出し要求を出力している場合に割り込み要求キャンセルプロセスを行い、上記キャンセルプロセス終了後、再度上記割り込み手段に割り込み要求を行わせるステートマシーンと、をそれぞれ有する第１及び第２のＣＰＵと
を備え、上記割り込み詳細情報に応じた割り込み処理を行うことを特徴とするＣＰＵ間通信システム。
【請求項２】
上記第１及び第２のＣＰＵはそれぞれ、ポート番号に対応したキューを有し、かつ、パケット内のフィールドを解釈して指定されたキューに書き込む機能を備え、送信ポート番号、受信ポート番号、データ長及びデータの各フィールドで構成されるパケットを用いてデータの送受信を行うことを特徴とする請求項１記載のＣＰＵ間通信システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デュアルポートメモリを用いた中央処理装置（ＣＰＵ）間通信システムに関する。
【０００２】
【従来の技術】
近年、機器の多機能化・複雑化が進んでおり、また、それらの機能をソフトウエアにより実現される場合が多くなってきている。それに伴い、器機内に複数のＣＰＵを組み込みマルチＣＰＵシステムとすることにより演算処理能力を向上させて、それらのソフトウエアによる各種機能を実行するようにしている。
【０００３】
従来、機器内に組み込まれた２つの中央処理装置（ＣＰＵ）間でメッセージを交換は、２つのＣＰＵの双方から書き込み・読み出しが可能なデュアルポートメモリ(DPR:Dual Port RAM(Random Access Memory))などのメモリデバイスを介して行われている。
【０００４】
そして、従来のＣＰＵ間通信システムでは、例えば、メッセージの伝達方向によって、ＤＰＲの書き込みエリアを分割して利用し、エリア内の特定の場所にマジックナンバーを書き込み、定期的に相手の書き込んだマジックナンバーを読み出すことにより、リクエストを受信するようにして、メッセージが正確に相手に伝わるようにしていた。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述の如き従来のＣＰＵ間通信システムでは、次のような問題があった。
【０００６】
すなわち、定期的に相手の書き込んだマジックナンバーを読み出すことにより、リクエストを受信するようにしていたので、書き込んだデータがすぐに読み出されない。また、メッセージの伝達方向によって、ＤＰＲの書き込みエリアを分割して利用していたので、書き込みエリアの分割によってデバイスが有効に利用されない。また、双方で送信リクエストが発生した場合、混乱が発生する。さらに、一つの仕組みを多数のアプリケーションで利用できない。
【０００７】
そこで、本発明の目的は、上述の如き従来の問題点に鑑み、衝突回避機能のある確実な双方向通信を行うことのできるＣＰＵ間通信システムを提供することのある。
【０００８】
【課題を解決するための手段】
本発明は、２つの中央処理装置（CPU:Central Processing Unit）の双方から書き込み・読み出しが可能なデュアルポートメモリを介して上記２つのＣＰＵ間でデータ交換を行うＣＰＵ間通信システムであって、特定のアドレスに書き込みを行うとそのアドレスに対応した割り込みを発生するデュアルポートメモリと、上記デュアルポートメモリの上記特定のアドレスを介して割り込み詳細情報を伝送することにより他方のＣＰＵにデータの読み出しを開始させる読み出し要求を出力する割り込み手段と、上記割り込みに関する状態遷移を管理し、上記割り込み手段が上記読み出し要求を出力した際に他方のＣＰＵも同時に読み出し要求を出力している場合に割り込み要求キャンセルプロセスを行い、上記キャンセルプロセス終了後、再度上記割り込み手段に割り込み要求を行わせるステートマシーンと、をそれぞれ有する第１及び第２のＣＰＵとを備え、上記割り込み詳細情報に応じた割り込み処理を行うことを特徴とする。
【０００９】
本発明に係るＣＰＵ間通信システムにおいて、上記第１及び第２のＣＰＵはそれぞれ、各ポート番号に対応したキューを有し、かつ、パケット内のフィールドを解釈して指定されたキューに書き込む機能を備え、送信ポート番号・受信ポート番号・データ長及びデータの各フィールドで構成されるパケットを用いてデータの送受信を行う。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００１３】
本発明は、例えば図１に示すようなハードウエア構成のデュアルＣＰＵシステム１００に適用される。
【００１４】
このデュアルＣＰＵシステム１００は、第１及び第２の中央処理装置（CPU:Central Processing Unit）１０，２０の双方から書き込み・読み出しが可能なデュアルポートメモリ(DPR:Dual Port RAM(Random Access Memory))３０を介して上記第１及び第２のＣＰＵ１０，２０間でデータ交換を行うものであって、上記第１及び第２のＣＰＵ１０，２０のアドレスバス及びデータバスには、第１及び第２のリードオンリーメモリ（ROM:Read Only Memory）１１，２２や第１及び第２のランダムアクセスメモリ（RAM:Random Access Memory)１２，２２が接続されているとともに上記ＤＰＲ３０が接続されている。
【００１５】
このデュアルＣＰＵシステム１００において、上記ＤＰＲ３０は、第１のＣＰＵ１０が特定のアドレス例えばアドレス０ｘ７ＦＥへ書き込みを行うと、第２のＣＰＵ２０に対して割り込みを発生させることができる。この割り込みは、第２のＣＰＵ２０がアドレス０ｘ７ＦＥを読み出すことによって解除される。また、第２のＣＰＵ２０が、特定のアドレス例えばアドレス０ｘ７ＦＦへ書き込みを行うと、第１のＣＰＵ１０に対して割り込みを発生させることができる。同様に、この割り込みは、第１のＣＰＵ１０がアドレス０ｘ７ＦＦを読み出すことによって解除される。
【００１６】
割り込みを発生させるために書き込むデータには、次の表１に示すような意味が与えられている。この値によって割り込みの詳細情報を伝えることが可能になっている。上記割り込みの詳細情報は、データ送受信の状態遷移に利用される。
【００１７】
【表１】
0003963123.tif 000002
【００１８】
また、このデュアルＣＰＵシステム１００では、図２に示すように、送信ポート番号、受信ポート番号、データ長、データの４フィールドからなるパケットを利用してデータが送受信される。
【００１９】
ここで、各フィールドの意味を表２に示してある。
【００２０】
【表２】
0003963123.tif 000003
【００２１】
すなわち、送信ポート番号は、データ送信元のポート番号を示すフィールドである。また、受信ポート番号は、データ送信先のポート番号を示すフィールドである。また、データ長は、データの長さを示すフィールドである。さらに、データは、送受信されるデータが格納されているフィールドである。
【００２２】
上記各ＣＰＵ１０，２０は、各ポート番号に対応したキューを有し、かつ、パケット内のフィールドを解釈して指定されたキューに書き込む機能を備え、送信ポート番号・受信ポート番号・データ長及びデータの各フィールドで構成されるパケットを用いてデータの送受信を行う。このように、第１及び第２のＣＰＵ１０，２０間のデータ交換において、送信ポート・受信ポートを指定することにより、多くのアプリケーションが、データ送受信機能を利用することができる。ここで、ポート番号に対応したキューの配置例として、ユーザインターフェース側として用いられる第１のＣＰＵ１０における送信キューＴＸＱ１０及び受信キューＲＸＱ１０、システム側として用いられる第２のＣＰＵ２０における送信キューＴＸＱ２０及び受信キューＲＸＱ２０を図３に示す。
【００２３】
次に、このデュアルＣＰＵシステム１００において、データ送受信で利用する状態遷移を図４に示す。
【００２４】
すなわち、このデュアルＣＰＵシステム１００における第１及び第２のＣＰＵ１０，２０は、電源が投入されて動作を開始すると、アイドル（IDLE）状態ＳＴ０となる。
【００２５】
アイドル状態ＳＴ０のＣＰＵは、内部アプリケーションから送信要求（SEND REQUEST）を受信すると、読み出し要求（READ REQUEST）を送信して、書き込み応答（WRITE ACK）待ち状態ＳＴ１に遷移する。また、このアイドル状態ＳＴ０のＣＰＵは、他方のＣＰＵから読み出し要求（READ REQUEST）を受信すると、書き込み応答（WRITE ACK）を送信して、書き込み完了（WRITE COMPLETE）状態ＳＴ４に遷移する。さらに、このアイドル状態ＳＴ０のＣＰＵは、他方のＣＰＵからリセット要求（RESET REQUEST）を受信すると、リセット確認（RESET CONFIRM）を送信して、アイドル状態ＳＴ０を継続する。
【００２６】
書き込み応答（WRITE ACK）待ち状態ＳＴ１のＣＰＵは、他方のＣＰＵから読み出し要求（READ REQUEST）とキャンセル要求（CANCEL REQUEST）を受信すると、キャンセル確認（CANCEL CONFIRM）を送信して、アイドル状態ＳＴ０に遷移する。また、この書き込み応答待ち状態ＳＴ１のＣＰＵは、他方のＣＰＵから書き込み応答（WRITE ACK）を受信すると、書き込み動作を行い、書き込み完了（WRITE COMPLETE）を送信して、読み出し完了（READ COMPLETE）待ち状態ＳＴ２に遷移する。さらに、この書き込み応答待ち状態ＳＴ１のＣＰＵは、他方のＣＰＵから読み出し要求（READ REQUEST）を受信すると、キャンセル要求（CANCEL REQUEST）を送信して、キャンセル確認（CANCEL CONFIRM）待ち状態ＳＴ３に遷移する。
【００２７】
読み出し完了（READ COMPLETE）待ち状態ＳＴ２のＣＰＵは、他方のＣＰＵから読み出し完了（READ COMPLETE）を受信すると、送信要求（SEND REQUEST）をリセットして、アイドル状態ＳＴ０に遷移する。また、この読み出し完了待ち状態ＳＴ２のＣＰＵは、他方のＣＰＵから読み出し完了（READ COMPLETE）と読み出し要求（READ REQUEST）を受信すると、送信要求（SEND REQUEST）をリセットして、書き込み応答（WRITE ACK）を送信して、書き込み完了（WRITE COMPLETE）状態ＳＴ４に遷移する。
【００２８】
キャンセル確認（CANCEL CONFIRM）待ち状態ＳＴ３のＣＰＵは、他方のＣＰＵからキャンセル要求（CANCEL REQUEST）を受信すると、キャンセル確認（CANCEL CONFIRM）を送信して、キャンセル確認待ち状態ＳＴ３を維持する。また、このキャンセル確認待ち状態ＳＴ３のＣＰＵは、他方のＣＰＵからキャンセル確認（CANCEL CONFIRM）を受信すると、何もせずにアイドル状態ＳＴ０に遷移する。また、このキャンセル確認待ち状態ＳＴ３のＣＰＵは、他方のＣＰＵからキャンセル要求（CANCEL REQUEST）とキャンセル確認（CANCEL CONFIRM）を受信すると、キャンセル確認（CANCEL CONFIRM）を送信して、アイドル状態ＳＴ０に遷移する。さらに、このキャンセル確認待ち状態ＳＴ３のＣＰＵは、他方のＣＰＵからキャンセル確認（CANCEL CONFIRM）と書き込み要求（WRITE REQUEST）を受信すると、キャンセル確認（CANCEL CONFIRM）と書き込み応答（WRITE ACK）を送信して、書き込み完了（WRITE COMPLETE）状態ＳＴ４に遷移する。
【００２９】
書き込み完了（WRITE COMPLETE）状態ＳＴ４のＣＰＵは、他方のＣＰＵから書き込み完了（WRITE COMPLETE）を受信すると、読み出し動作を行い、アイドル状態ＳＴ０に遷移する。
【００３０】
このような構成のデュアルＣＰＵシステム１００では、通常、図５に示すシーケンスに従って第１及び第２のＣＰＵ１０，２０間でＤＰＲ３０を介してデータ交換を行う。
【００３１】
すなわち、この図５に示すシーケンスでは、ＣＰＵ１に送信要求（SEND REQUEST）があり（ステップＳ１）、このＣＰＵ１０は、ＣＰＵ２に読み出し要求（READ REQUEST）を送り（ステップＳ２）、ＣＰＵ２から送られてくる書き込み応答（WRITE ACK）を受信することにより（ステップＳ３）、データをＤＰＲ３０のデータ領域に書き込む（ステップＳ４）。そして、ＣＰＵ２は、ＣＰＵ１から送られてくる書き込み完了（WRITE COMPLETE）を受信すると（ステップＳ５）、上記ＤＰＲ３０のデータ領域からデータを読み出して（ステップＳ６）、読み出し完了（READ COMPLETE）をＣＰＵ１に送る（ステップＳ７）。
【００３２】
また、このデュアルＣＰＵシステム１００では、第１及び第２のＣＰＵ１０，２０間で読み出し要求（READ REQUEST）が衝突する場合、図６に示す衝突回避シーケンスに従ってＤＰＲ３０を介してデータ交換を行う。
【００３３】
この図６に示すシーケンスでは、ＣＰＵ１に送信要求（SEND REQUEST）があり（ステップＳ１０）、このＣＰＵ１がＣＰＵ２に読み出し要求（READ REQUEST）を送るとともに（ステップＳ１１）、ＣＰＵ２に送信要求（SEND REQUEST）があり（ステップＳ２０）、このＣＰＵ２がＣＰＵ１に読み出し要求（READ REQUEST）を送り（ステップＳ２１）、読み出し要求（READ REQUEST）が衝突すると、ＣＰＵ１とＣＰＵ２は、互いに、他のＣＰＵから送られてくるキャンセル要求（CANCEL REQUEST）を受信し（ステップＳ１２，Ｓ２２）、キャンセル確認（CANCEL CONFIRM）を他のＣＰＵに送信する（ステップＳ１３，Ｓ２３）。
【００３４】
すなわち、このデュアルＣＰＵシステム１００では、第１及び第２のＣＰＵ１０，２０から読み出し要求（READ REQUEST）が同時に出力された場合、キャンセルプロセスを行う。キャンセルプロセス終了後、再度読み出し要求（READ REQUEST）を出力する。各ＣＰＵ１０、２０は異なる環境で動作しているため、再度出力した読み出し要求（READ REQUEST）は連続して同時となる確率が非常に低く、読み出し要求（READ REQUEST）の衝突を回避することができる。
【００３５】
この図６に示すシーケンスでは、キャンセルプロセス終了後、ＣＰＵ１が、ＣＰＵ２に読み出し要求（READ REQUEST）を再度送信し（ステップＳ１４）、これに対してＣＰＵ２から書き込み応答（WRITE ACK）が送られてくることにより（ステップＳ２４）、データをＤＰＲ３０のデータ領域に書き込む（ステップＳ１５）。そして、ＣＰＵ２は、ＣＰＵ１から書き込み完了（WRITE COMPLETE）が送られてくることにより（ステップＳ１６）、上記ＤＰＲ３０のデータ領域からデータを読み出して（ステップＳ２５）、読み出し完了（READ COMPLETE）をＣＰＵ１に送る（ステップＳ２６）。
【００３６】
さらに、このデュアルＣＰＵシステム１００では、図７に示すシーケンスに従って第１及び第２のＣＰＵ１０，２０間でＤＰＲ３０を介して交互送信によるデータ交換を行う。
【００３７】
この図７に示す交互送信シーケンスでは、送信要求（SEND REQUEST）がＣＰＵ１にあり（ステップＳ３０）、このＣＰＵ１がＣＰＵ２に読み出し要求（READ REQUEST）を送ると（ステップＳ３１）、ＣＰＵ２に送信要求（SEND REQUEST）があっても（ステップＳ４０）、上記ＣＰＵ１からの読み出し要求（READ REQUEST）に応じて上記ＣＰＵ２が書き込み応答（WRITE ACK）を送ることにより（ステップＳ４１）、ＣＰＵ１は、データをＤＰＲ３０のデータ領域に書き込み（ステップＳ３２）。そして、ＣＰＵ２は、ＣＰＵ１から書き込み完了（WRITE COMPLETE）が送られてくることにより（ステップＳ３３）、上記ＤＰＲ３０のデータ領域からデータを読み出して（ステップＳ４２）、読み出し完了（READ COMPLETE）をＣＰＵ１に送り（ステップＳ４３）、さらに、上記ステップＳ４０の送信要求（SEND REQUEST）に基づく読み出し要求（READ REQUEST）をＣＰＵ１に送る（ステップＳ４４）。
【００３８】
すなわち、送信データを既に持っている場合、読み出し動作を終了したＣＰＵは、連続して読み出し要求（READ REQUEST）を出力する。そのため、受信側として動作した後、送信側として動作する確率が非常に高くなる。
【００３９】
その間に送信要求（SEND REQUEST）がＣＰＵ１にあっても（ステップＳ３４）、ＣＰＵ１が上記ＣＰＵ２からの読み出し要求（READ REQUEST）に応じて書き込み応答（WRITE ACK）を送ることにより（ステップＳ３５）、ＣＰＵ２は、データをＤＰＲ３０のデータ領域に書き込み（ステップＳ４５）。そして、ＣＰＵ１は、ＣＰＵ２から書き込み完了（WRITE COMPLETE）が送られてくることにより（ステップＳ４６）、上記ＤＰＲ３０のデータ領域からデータを読み出して（ステップＳ３６）、読み出し完了（READ COMPLETE）をＣＰＵ２に送り（ステップＳ３７）、さらに、上記ステップＳ３４の送信要求（SEND REQUEST）に基づく読み出し要求（READ REQUEST）をＣＰＵ１に送る（ステップＳ３８）。
【００４０】
【発明の効果】
以上のように、本発明によれば、衝突回避機能のある確実な双方向の通信機能を提供できる。
【００４１】
また、本発明によれば、ＣＰＵは他のＣＰＵに対して割り込みをかける手段を有していて、かつ、割り込みをかけられた場合、通信用デバイス内の固定エリアを読み出すことによって、割り込みの詳細理由がわかる仕組みを有しているため、割り込み線は１本だけでよい。したがって、ハード構成が容易である。
【００４２】
また、本発明によれば、受信ポート・送信ポートといったフィールドが、パケット内に存在しているため、複数のアプリケーションで同時に利用することが可能となる。例えば、コマンドの送受信とエラーメッセージの送受信、ステータスの送受信など全てのメッセージが送受信可能になる。
【００４３】
また、本発明によれば、対称的な構造にであるため、開発するステートマシーンはひとつだけでよい。
【００４４】
さらに、本発明によれば、同時に多数のメッセージ送信リクエストが双方に発生した場合、交互に送信が行われるような仕組みが存在しているため利用しやすい。
【図面の簡単な説明】
【図１】  本発明に係るデュアルＣＰＵシステムの構成を示すブロック図である。
【図２】上記デュアルＣＰＵシステムにおいて伝送されるパケットの構成を示す図である。
【図３】上記デュアルＣＰＵシステムにおけるポート番号に対応したキューの配置を示す図である。
【図４】上記デュアルＣＰＵシステムにおいて、データ送受信で利用する状態遷移を示す図である。
【図５】上記デュアルＣＰＵシステムにおいて実行される通常シーケンスを示す図である。
【図６】上記デュアルＣＰＵシステムにおいて実行される衝突回避シーケンスを示す図である。
【図７】上記デュアルＣＰＵシステムにおいて実行される交互通信シーケンスを示す図である。
【符号の説明】
１０，２０  ＣＰＵ、１１，２２  ＲＯＭ、１２，２２  ＲＡＭ、３０  ＤＰＲ３０、１００  デュアルＣＰＵシステム
【図１】
0003963123.tif 000004
【図２】
0003963123.tif 000005
【図３】
0003963123.tif 000006
【図４】
0003963123.tif 000007
【図５】
0003963123.tif 000008
【図６】
0003963123.tif 000009
【図７】
0003963123.tif 000010