(57)【要約】【課題】シリアル通信方式を用いたプロセッサ間のデータ転送の場合、データ量に比例した転送時間を要していた。また、共有メモリを介してプロセッサ間のデータを転送する場合、メモリアクセスの調停を複雑なハードウェアで構成する必要があった。【解決手段】共有メモリ１０１を介してＣＰＵ−Ａ１０２とＣＰＵ−Ｂ１０３間でデータを転送する際、ＣＰＵ−Ａ１０２は、共有メモリ１０１にアクセスする時、ＣＰＵ−Ａ１０２の出力端子とＣＰＵ−Ｂ１０３の入力端子とを接続した汎用入出力端子１０５をアクティブに設定することで、ＣＰＵ−Ｂ１０３が同時にアクセスしないようにする。ＣＰＵ−Ｂ１０３は、共有メモリ１０１にアクセスする時、ＣＰＵ−Ｂ１０３の出力端子とＣＰＵ−Ａ１０２の入力端子とを接続した汎用入出力端子１０６をアクティブに設定することで、ＣＰＵ−Ａ１０２が同時にアクセスしないようにする。【選択図】図１
2005352559.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリを介して第１および第２のプロセッサ間でデータを転送するマルチプロセッサシステムにおけるデータ転送方法であって、
前記第１のプロセッサは、前記データの転送のために前記共有メモリにアクセスしている間、第１のメモリアクセス禁止信号を前記第２のプロセッサへ出力し、前記第２のプロセッサは、前記第１のメモリアクセス禁止信号を入力している間、前記共有メモリへのアクセスを禁止するようにし、
前記第２のプロセッサは、前記データの転送のために前記共有メモリにアクセスしている間、第２のメモリアクセス禁止信号を前記第１のプロセッサへ出力し、前記第１のプロセッサは、前記第２のメモリアクセス禁止信号を入力している間、前記共有メモリへのアクセスを禁止するようにしたことを特徴とするマルチプロセッサシステムにおけるデータ転送方法。
【請求項２】
前記第１および第２のプロセッサの各々は、
データ送信側のプロセッサになる場合、実際に転送すべきデータを含む転送用データを前記共有メモリに書き込むとともに、前記転送用データのうち前記実際に転送すべきデータを指定するための転送データ指定情報を前記共有メモリに格納し、
データ受信側のプロセッサになる場合、前記共有メモリに格納された前記転送データ指定情報に基づいて前記共有メモリから前記実際に転送すべきデータを読み出すことを特徴とする請求項１記載のマルチプロセッサシステムにおけるデータ転送方法。
【請求項３】
前記第１のプロセッサの汎用出力端子と前記第２のプロセッサの汎用入力端子とを接続し、前記第１のメモリアクセス禁止信号は前記第１のプロセッサの汎用出力端子から出力されて前記第２のプロセッサの汎用入力端子へ入力され、
前記第２のプロセッサの汎用出力端子と前記第１のプロセッサの汎用入力端子とを接続し、前記第２のメモリアクセス禁止信号は前記第２のプロセッサの汎用出力端子から出力されて前記第１のプロセッサの汎用入力端子へ入力されることを特徴とする請求項１記載のマルチプロセッサシステムにおけるデータ転送方法。
【請求項４】
前記第１のメモリアクセス禁止信号が入力される前記第２のプロセッサの汎用入力端子、および前記第２のメモリアクセス禁止信号が入力される前記第１のプロセッサの汎用入力端子の少なくとも一方が割込み入力端子であることを特徴とする請求項３記載のマルチプロセッサシステムにおけるデータ転送方法。
【請求項５】
前記第１および第２のプロセッサのいずれか一方のプロセッサは、前記共有メモリにアクセスする直前にメモリアクセス禁止信号の他方のプロセッサへの出力を開始し、その出力を開始してから所定時間内に前記他方のプロセッサからのメモリアクセス禁止信号を入力した場合、前記他方のプロセッサへのメモリアクセス禁止信号の出力を停止するとともに前記共有メモリへのアクセスを中止することを特徴とする請求項３または４記載のマルチプロセッサシステムにおけるデータ転送方法。
【請求項６】
前記第１および第２のプロセッサは、前記共有メモリを共有し直列接続された３つ以上のプロセッサのうちの任意の２つのプロセッサであり、
前記第１のプロセッサの指示によって前記第１および第２のプロセッサ間でデータ転送を行う場合、
前記第１のプロセッサから出力される第１のメモリアクセス禁止信号は、プロセッサ間の接続によって前記第１のプロセッサ以外の全てのプロセッサへ入力され、前記第１のメモリアクセス禁止信号を入力しているプロセッサは、前記共有メモリへのアクセスを禁止するようにし、
前記第２のプロセッサから出力される第２のメモリアクセス禁止信号は、プロセッサ間の接続によって前記第２のプロセッサと前記第１のプロセッサとの間に接続されたプロセッサおよび前記第１のプロセッサへ入力され、前記第２のメモリアクセス禁止信号を入力しているプロセッサは、前記共有メモリへのアクセスを禁止するようにし、
前記第２のメモリアクセス禁止信号は、前記第２のプロセッサと前記第１のプロセッサとの間に接続されたプロセッサおよび前記第２のプロセッサへの前記第１のメモリアクセス禁止信号が解除されているときに前記第２のプロセッサから出力されることを特徴とする請求項１から５のいずれかに記載のマルチプロセッサシステムにおけるデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムにおけるデータ転送方法に関するものである。
【背景技術】
【０００２】
従来のマルチプロセッサシステムでは、プロセッサ間のデータ転送方式にシリアル通信方式を用いているため、データ量に比例した転送時間を要していた（例えば、特許文献1または２参照。）。
【０００３】
また、マルチプロセッサと同一のシステムバス上に配置された共有メモリを利用してプロセッサ間のデータを転送する場合、メモリへの書き込み、読み込みを調停する回路をハードウェアで構成する必要があった（例えば、特許文献３または４参照。）。
【特許文献１】特開２００１−２６８１４２号公報（図１２、図１８）
【特許文献２】特開２００２−１５２０５２号公報（図１０〜１０、図１１〜１４）
【特許文献３】特開平１１−１０２３４８号公報（図１）
【特許文献４】特開平５−２０２７８号公報（図１）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
シリアル通信方式では、データ量に比例して転送時間を必要とするため、システム機能を拡張するなどして、転送データ量が増すと転送スピードを考慮して設計しなおす必要があった。さらに信号線に重畳されるノイズなどの外乱で引き起こされるデータ破壊を対策するために、複数回のデータ一致確認や、パリティデータを付加するなど、転送データの誤り検出が必要であり、更にデータ転送に時間を要するという課題があった。
【０００５】
また、共有メモリを利用する場合は、各々のプロセッサからのメモリへのアクセスを調停する手段を複雑なハードウェアで構成する必要があり、さらに調停手段に応じたソフトウェア設計が必要であった。
【０００６】
本発明の目的は、プロセッサ間のデータ転送を短時間で実現できるとともに、複雑なハードウェアで構成されたメモリアクセスの調停手段を必要としないマルチプロセッサシステムにおけるデータ転送方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明のマルチプロセッサシステムにおけるデータ転送方法は、共有メモリを介して第１および第２のプロセッサ間でデータを転送するマルチプロセッサシステムにおけるデータ転送方法であって、第１のプロセッサは、データの転送のために共有メモリにアクセスしている間、第１のメモリアクセス禁止信号を第２のプロセッサへ出力し、第２のプロセッサは、第１のメモリアクセス禁止信号を入力している間、共有メモリへのアクセスを禁止するようにし、第２のプロセッサは、データの転送のために共有メモリにアクセスしている間、第２のメモリアクセス禁止信号を第１のプロセッサへ出力し、第１のプロセッサは、第２のメモリアクセス禁止信号を入力している間、共有メモリへのアクセスを禁止するようにしたことを特徴とする。
【０００８】
本発明によれば、共有メモリを介してプロセッサ間のデータ転送を行い、かつ、プロセッサ間で互いにメモリアクセス禁止信号を授受するという簡単な構成により、メモリアクセスの調停を行うことができる。したがって、データ転送を短時間で実現できるとともに、メモリアクセスの調停手段を複雑なハードウェアで構成する必要もない。
【０００９】
また、本発明において、第１および第２のプロセッサの各々は、データ送信側のプロセッサになる場合、実際に転送すべきデータを含む転送用データを共有メモリに書き込むとともに、転送用データのうち実際に転送すべきデータを指定するための転送データ指定情報を共有メモリに格納し、データ受信側のプロセッサになる場合、共有メモリに格納された転送データ指定情報に基づいて共有メモリから実際に転送すべきデータを読み出すようにしてもよい。
【００１０】
このように、転送データ指定情報（例えば、実際に転送すべきデータの先頭アドレスとデータサイズの情報）を用いることで、転送開始位置や転送データ量が指定できるようになり、変更されたデータのみや、優先度の高いデータから転送するなどの制御が可能となり、転送を効率化することができる。
【００１１】
また、本発明において、第１のプロセッサの汎用出力端子と第２のプロセッサの汎用入力端子とを接続し、第１のメモリアクセス禁止信号は第１のプロセッサの汎用出力端子から出力されて第２のプロセッサの汎用入力端子へ入力され、第２のプロセッサの汎用出力端子と第１のプロセッサの汎用入力端子とを接続し、第２のメモリアクセス禁止信号は第２のプロセッサの汎用出力端子から出力されて第１のプロセッサの汎用入力端子へ入力されるようにしてもよい。
【００１２】
このように、各プロセッサ間の汎用入力端子と汎用出力端子を接続するという簡単な構成により、プロセッサ間でメモリアクセス禁止信号を授受することができる。
【００１３】
さらにこの場合、第１のメモリアクセス禁止信号が入力される第２のプロセッサの汎用入力端子、および第２のメモリアクセス禁止信号が入力される第１のプロセッサの汎用入力端子の少なくとも一方が割込み入力端子であることが好ましい。
【００１４】
このように、各々のプロセッサのメモリアクセス禁止信号の入力側に割込み端子を使用し、割り込みハンドラで処理を行なうことによって、制御タイミングにおける応答性能を向上させることができる。
【００１５】
また、第１および第２のプロセッサのいずれか一方のプロセッサは、共有メモリにアクセスする直前にメモリアクセス禁止信号の他方のプロセッサへの出力を開始し、その出力を開始してから所定時間内に他方のプロセッサからのメモリアクセス禁止信号を入力した場合、他方のプロセッサへのメモリアクセス禁止信号の出力を停止するとともに共有メモリへのアクセスを中止するようにしてもよい。
【００１６】
これにより、ほぼ同時に第１および第２のプロセッサが共有メモリにアクセスしようとした場合に、一方のプロセッサのアクセスを中止させて他方のプロセッサを優先的にアクセスさせることができるため、第１および第２のプロセッサが共有メモリに同時にアクセスすることを回避でき、マルチマスタシステムが可能となる。
【００１７】
また、本発明において、第１および第２のプロセッサは、共有メモリを共有し直列接続された３つ以上のプロセッサのうちの任意の２つのプロセッサであり、第１のプロセッサの指示によって第１および第２のプロセッサ間でデータ転送を行う場合、第１のプロセッサから出力される第１のメモリアクセス禁止信号は、プロセッサ間の接続によって第１のプロセッサ以外の全てのプロセッサへ入力され、第１のメモリアクセス禁止信号を入力しているプロセッサは、共有メモリへのアクセスを禁止するようにし、第２のプロセッサから出力される第２のメモリアクセス禁止信号は、プロセッサ間の接続によって第２のプロセッサと第１のプロセッサとの間に接続されたプロセッサおよび第１のプロセッサへ入力され、第２のメモリアクセス禁止信号を入力しているプロセッサは、共有メモリへのアクセスを禁止するようにし、第２のメモリアクセス禁止信号は、第２のプロセッサと第１のプロセッサとの間に接続されたプロセッサおよび第２のプロセッサへの第１のメモリアクセス禁止信号が解除されているときに第２のプロセッサから出力されるようにしてもよい。
【００１８】
これにより、直列接続された３つ以上のプロセッサのうち任意の２つのプロセッサ間で共有メモリを介してデータ転送を行い、かつ、プロセッサ間でメモリアクセス禁止信号を授受するという簡単な構成によりメモリアクセスの調停を行うことができ、データ転送を短時間で実現できるとともに、メモリアクセスの調停手段を複雑なハードウェアで構成する必要もない。
【発明の効果】
【００１９】
以上のように本発明によれば、安定したデータを効率的に転送でき、さらに複雑なハードウェアで構成されたメモリアクセスの調停手段が不要で、ハードウェアに依存しない汎用的なシステム構成を実現することができ、共有メモリを介してプロセッサ間のデータのやり取りを行なうマルチプロセッサシステムを簡単に、かつ安価に構成することができる。また、汎用的なシステム構成が可能であるため、ソフトウェアの再利用が可能であり、ソフトウェアの生産性を向上することが可能である。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態を、図面を参照しながら説明する。
【００２１】
（実施の形態１）
図１は、本発明の実施の形態１に係るデータ転送方法の構成を示すブロック図である。実施の形態１に係るデータ転送方法は、共有メモリ１０１、ＣＰＵ−Ａ１０２、ＣＰＵ−Ｂ１０３、アドレスおよびデータバス１０４、汎用入出力端子１０５、汎用入出力端子１０６を有して構成される。
【００２２】
共有メモリ１０１は、転送するデータを保持もしくは、ＣＰＵ−Ａ１０２からＣＰＵ−Ｂ１０３または、ＣＰＵ−Ｂ１０３からＣＰＵ−Ａ１０２に対して転送データの書き込みおよび読み込みを要求するためのコマンドを保持するための領域である。
【００２３】
ＣＰＵ−Ａ１０２、ＣＰＵ−Ｂ１０３は、プロセッサであり、共有メモリ１０１とアドレスおよびデータバス１０４によって接続され、お互いのデータを交換することができるようになる。
【００２４】
汎用入出力端子１０５は、ＣＰＵ−Ａ１０２の出力端子と、ＣＰＵ−Ｂ１０３の入力端子とを接続し、ＣＰＵ−Ａ１０２がコマンド領域にコマンドを書き込む最中にＣＰＵ−Ａ１０２が汎用入出力端子１０５をアクティブに設定することで、ＣＰＵ−Ｂ１０３が、ＣＰＵ−Ａ１０２が書き込み中のコマンド領域を参照しないよう通知する、つまりＣＰＵ−Ａ１０２が書き込むのと同じアドレスをＣＰＵ−Ｂ１０３が同時に読み出さないように通知するためのものである。
【００２５】
汎用入出力端子１０６は、ＣＰＵ−Ｂ１０３の出力端子と、ＣＰＵ−Ａ１０２の入力端子とを接続し、ＣＰＵ−Ｂ１０３がコマンド領域にコマンドを書き込む最中にＣＰＵ−Ｂ１０３が汎用入出力端子１０６をアクティブに設定することで、ＣＰＵ−Ａ１０２が、ＣＰＵ−Ｂ１０３が書き込み中のコマンド領域を参照しないよう通知する、つまりＣＰＵ−Ｂ１０３が書き込むのと同じアドレスをＣＰＵ−Ａ１０２が同時に読み出さないように通知するためのものである。
【００２６】
図２は、本発明の実施の形態１に係るデータ転送方法の共有メモリマッピングの一例を示す共有メモリのメモリマップ図である。
【００２７】
実施の形態１に係るデータ転送方法の共有メモリマッピングの一例は、送受信コマンド領域２０１、コマンドに対する制御状態を示すステータス状態領域２０２、ＣＰＵ−Ａ１０２がデータを書き込むためのＣＰＵ−Ａ書き込み領域２０３、ＣＰＵ−Ｂ１０３がデータを書き込むためのＣＰＵ−Ｂ書き込み領域２０４を有して構成される。
【００２８】
送受信コマンド領域２０１は、読み込みもしくは、書き込みを行なうかというコマンドをデータ転送相手のプロセッサに渡すための領域である。
【００２９】
ステータス状態領域２０２は、コマンドの受け手側となるプロセッサがコマンドを正常に処理できたことを示すステータス状態をコマンド送信側プロセッサに渡すための領域である。
【００３０】
エラー処理もしくはハンドシェイク処理を行なわない場合はステータス状態領域２０２を使用しなくてもよい。
【００３１】
ＣＰＵ−Ａ書き込み領域２０３は、ＣＰＵ−Ｂに転送するデータを保持するためのものである。
【００３２】
ＣＰＵ−Ｂ書き込み領域２０４は、ＣＰＵ−Ａに転送するデータを保持するためのものである。
【００３３】
次に、図３もしくは図４を用いて詳細にデータ転送手順を説明する。
【００３４】
図３は、本発明の実施の形態１に係るデータ転送方法のＣＰＵ−Ａ１０２からＣＰＵ−Ｂ１０３へデータを転送する場合のタイミングチャートである。
【００３５】
図３に示す、実施の形態１に係るデータ転送方法のＣＰＵ−Ａ１０２からＣＰＵ−Ｂ１０３へデータを転送する場合のタイミングチャートは、ＣＰＵ−Ａ１０２がメモリを制御する区間３０１もしくは３０３、ＣＰＵ−Ｂ１０３がメモリを制御する区間３０２もしくは３０４を有し、これらの状態はＣＰＵ−Ａ１０２もしくは、ＣＰＵ−Ｂ１０３の内部状態によって区別できる。マスタ側となるＣＰＵ−Ａ１０２の内部状態を示すモードは、データ転送中でない状態を示すＩＤＬＥモードと、コマンドもしくは、送信するデータを共有メモリ１０１へ書き込む状態を示すＣＭＤ＿ＳＥＴモードと、スレーブとなるＣＰＵ−Ｂ１０３がコマンドに応じた処理の完了を待つ状態を示すＷＩＡＴモードと、スレーブとなるＣＰＵ−Ｂ１０３からのステータス情報を確認する状態を示すＳＴＳ＿ＣＨＫモードで構成される。一方、スレーブ側となるＣＰＵ−Ｂ１０３の内部状態を示すモードは、データ転送中でない状態を示すＩＤＬＥモードと、マスタとなるＣＰＵ−Ａ１０２からのコマンドを受理し、必要な処理を行う状態を示すＣＭＤ＿ＧＥＴモードで構成される。転送開始から終了まで、制御区間３０１、３０２、３０３、３０４で構成される一連の制御単位は、マスタ側であるＣＰＵ−Ａ１０２の内部状態で管理できるため、ＣＰＵ−Ｂ１０３の内部状態は、一連の制御単位の間であっても制御区間３０１、３０３で区別することなく、ＩＤＬＥモードの状態で、制御することができる。
【００３６】
制御区間３０１において、ＣＰＵ−Ａ１０２は、汎用出力端子１０５をアクティブに設定し、共有メモリ１０１へアクセス中であることをＣＰＵ−Ｂ１０３へ通知する。ＣＰＵ−Ａ１０２は、ＣＰＵ−Ｂ１０３へ送信するデータをＣＰＵ−Ａ書き込み領域２０３へ設定するとともに、ＣＰＵ−Ｂ１０３に対してデータを受信するように、送受信コマンド領域２０１へ受信要求コマンドを設定し、汎用出力端子１０５をノン・アクティブに設定して完了する(ＣＰＵ−Ａ：ＣＭＤ＿ＳＥＴモード)。
【００３７】
制御区間３０２において、ＣＰＵ−Ｂ１０３は、汎用出力端子１０５がアクティブからノン・アクティブに変化したことを検出すると、汎用出力端子１０６をアクティブに設定し、送受信コマンド領域２０１に設定されたコマンドを参照して受信要求コマンドであることを確認する。ＣＰＵ−Ｂ１０３はＣＰＵ−Ａ書き込み領域２０３へ設定されたデータを取り込み、処理を完了すると転送ステータス状態領域２０２へ読み込み完了を設定する。なお、転送ステータス状態領域２０２は、コマンドを保持する必要が無い場合、送受信コマンド領域２０１と同一の領域でもよい。
【００３８】
ＣＰＵ−Ｂ１０３は汎用出力端子１０６をノン・アクティブに設定して完了する(ＣＰＵ−Ａ：ＷＡＩＴモード、ＣＰＵ−Ｂ：ＣＭＤ＿ＧＥＴモード)。
【００３９】
制御区間３０３において、ＣＰＵ−Ａ１０２は、汎用出力端子１０６がアクティブからノン・アクティブに変化したことを検出すると、汎用出力端子１０５をアクティブに設定し、転送ステータス状態領域２０２に設定されたステータス状態を参照して読み込み完了であることを確認する。ＣＰＵ−Ａ１０２は送受信コマンド領域２０１へ設定されている受信要求コマンドを破棄し、汎用出力端子１０５をノン・アクティブに設定して完了する(ＣＰＵ−Ａ：ＳＴＳ＿ＣＨＫモード)。
【００４０】
制御区間３０４において、ＣＰＵ−Ｂ１０３は、汎用出力端子１０５がアクティブからノン・アクティブに変化したことを検出すると、汎用出力端子１０６をアクティブに設定し、送受信コマンド領域２０１に設定されたコマンドを参照する。コマンドが設定されていないことを確認すると、ＣＰＵ−Ｂ１０３は汎用出力端子１０６をノン・アクティブに設定して完了する。この汎用出力端子１０６がアクティブからノン・アクティブに変化したことを検出してＣＰＵ−Ａ１０２は、ＳＴＳ＿ＣＨＫモードからＩＤＬＥモードへ遷移する。
【００４１】
また、ＣＰＵ−Ｂ１０３が正しくデータを受信できない場合、転送ステータス状態領域２０２へ受信エラーを設定することで、ＣＰＵ−Ａ１０２へ通知することができる。
【００４２】
このときＣＰＵ−Ａ１０２は制御区間３０３において、受信が完了できていないことを確認すると、ＣＰＵ−Ａ１０２は送受信コマンド領域２０１へ設定されている受信要求コマンドを破棄せず、ＣＰＵ−Ｂ１０３に対してデータを受信するように、送受信コマンド領域２０１へ受信要求コマンドを設定し、汎用出力端子１０５をノン・アクティブに設定して完了することで、以降、制御区間３０２からの処理を順次実施することができる。
【００４３】
図４は、本発明の実施の形態１に係るデータ転送方法のＣＰＵ−Ａ１０２がＣＰＵ−Ｂ１０３からデータを受信する場合のタイミングチャートである。
【００４４】
制御区間４０１において、ＣＰＵ−Ａ１０２は、汎用出力端子１０５をアクティブに設定し、共有メモリ１０１へアクセス中であることをＣＰＵ−Ｂ１０３へ通知する。ＣＰＵ−Ａ１０２は、ＣＰＵ−Ｂ１０３に対してデータを送信するように、送受信コマンド領域２０１へ送信要求コマンドを設定し、汎用出力端子１０５をノン・アクティブに設定して完了する(ＣＰＵ−Ａ：ＣＭＤ＿ＳＥＴモード)。
【００４５】
制御区間４０２において、ＣＰＵ−Ｂ１０３は、汎用出力端子１０５がアクティブからノン・アクティブに変化したことを検出すると、汎用出力端子１０６をアクティブに設定し、送受信コマンド領域２０１に設定されたコマンドを参照して送信要求コマンドであることを確認する。ＣＰＵ−Ｂ１０３はＣＰＵ−Ｂ書き込み領域２０４へ要求されたデータを書き込み、処理を完了すると転送ステータス状態領域２０２へ書き込み完了を設定する。なお、転送ステータス状態領域２０２は、コマンドを保持する必要が無い場合、送受信コマンド領域２０１と同一の領域でもよい。
【００４６】
ＣＰＵ−Ｂ１０３は汎用出力端子１０６をノン・アクティブに設定して完了する(ＣＰＵ−Ａ：ＷＡＩＴモード、ＣＰＵ−Ｂ：ＣＭＤ＿ＧＥＴモード)。
【００４７】
制御区間４０３において、ＣＰＵ−Ａ１０２は、汎用出力端子１０６がアクティブからノン・アクティブに変化したことを検出すると、汎用出力端子１０５をアクティブに設定し、転送ステータス状態領域２０２に設定されたステータス状態を参照して書き込み完了であることを確認するとともにＣＰＵ−Ｂ１０３から受信したデータをＣＰＵ−Ｂ書き込み領域２０４から取り込む。ＣＰＵ−Ａ１０２は送受信コマンド領域２０１へ設定されている送信要求コマンドを破棄し、汎用出力端子１０５をノン・アクティブに設定して完了する(ＣＰＵ−Ａ：ＳＴＳ＿ＣＨＫモード)。
【００４８】
制御区間４０４において、ＣＰＵ−Ｂ１０３は、汎用出力端子１０５がアクティブからノン・アクティブに変化したことを検出すると、汎用出力端子１０６をアクティブに設定し、送受信コマンド領域２０１に設定されたコマンドを参照する。コマンドが設定されていないことを確認すると、ＣＰＵ−Ｂ１０３は汎用出力端子１０６をノン・アクティブに設定して完了する。この汎用出力端子１０６がアクティブからノン・アクティブに変化したことを検出してＣＰＵ−Ａ１０２は、ＳＴＳ＿ＣＨＫモードからＩＤＬＥモードへ遷移する。
【００４９】
また、ＣＰＵ−Ｂ１０３が正しくデータを送信できない場合、転送ステータス状態領域２０２へ送信エラーを設定することで、ＣＰＵ−Ａ１０２へ通知することができる。
【００５０】
このときＣＰＵ−Ａ１０２は制御区間４０３において、書き込みが完了できていないことを確認すると、ＣＰＵ−Ａ１０２は送受信コマンド領域２０１へ設定されている送信要求コマンドを破棄せず、ＣＰＵ−Ｂ１０３に対してデータを送信するように、送受信コマンド領域２０１へ送信要求コマンドを設定し、汎用出力端子１０５をノン・アクティブに設定して完了することで、以降、制御区間４０２からの処理を順次実施することができる。
【００５１】
さらに、共有メモリ１０１内に、送受信コマンド領域２０１、転送ステータス状態領域２０２に加え、ＣＰＵ−Ａ書き込み領域２０３、ＣＰＵ−Ｂ書き込み領域２０４を制御するためのデータ先頭アドレス２０５、送受信データサイズ２０６を備えることで、転送開始位置および転送データ量が指定できるようになり、変更されたデータのみや、優先度の高いデータから転送するなどの制御が可能となり、転送を効率化することができる。
【００５２】
なお、汎用入出力端子１０５、および汎用入出力端子１０６において、各々の入力側に割込み端子を使用し、割り込みハンドラで処理を行なうことによって、図３もしくは図４に示す制御タイミングにおける応答性能を向上させることができる。
【００５３】
以上のように実施の形態１によれば、安定したデータを効率的に転送でき、さらに複雑なハードウェアで構成されたメモリアクセスの調停手段が不要で、ハードウェアに依存しない汎用的なシステム構成を実現することができ、共有メモリ１０１を介してプロセッサ間のデータのやり取りを行なうマルチプロセッサシステムを簡単に、かつ安価に構成することができる。また、汎用的なシステム構成が可能であるため、ソフトウェアの再利用が可能であり、ソフトウェアの生産性を向上することが可能である。
【００５４】
（実施の形態２）
次に、本発明の実施の形態２について説明する。実施の形態２において、データ転送方法の構成は、実施の形態１と同様に図１ないし図２に示される。また、実施の形態２における制御タイミングチャートは、実施の形態１の図３ないし図４とほぼ同じであるが、通信開始時の制御が異なる。図５は本発明の実施の形態２に係るデータ転送方法のタイミングチャートである。
【００５５】
実施の形態２では、ＣＰＵ−Ａ１０２およびＣＰＵ−Ｂ１０３を用いたマルチマスタシステムを可能とするため、共有メモリ１０１に同時アクセスが起こらないようにソフトウェアで対策を行なう方法について、図５を参照して説明する。
【００５６】
図５は、ＣＰＵ−Ａ１０２およびＣＰＵ−Ｂ１０３の２つのプロセッサがマスタとなり得るシステムにおいて、通信を開始するタイミング３０５もしくは４０５（図３、図４）において、ＣＰＵ−Ａ１０２およびＣＰＵ−Ｂ１０３が同時に共有メモリ１０１にアクセス要求を出した場合に、ＣＰＵ−Ａ１０２側を優先とする一例を示したものである。なお、ＣＰＵ−Ａ出力端子５０４は、図１の汎用入出力端子１０５のうちのＣＰＵ−Ａ１０２の出力端子を指し、ＣＰＵ−Ｂ出力端子５０５は、図１の汎用入出力端子１０６のうちのＣＰＵ−Ｂ１０３の出力端子を指す。
【００５７】
まず、図５（ａ）の場合、制御区間５０１において、ＣＰＵ−Ｂ１０３がバスアクセスを行なう際に、ＣＰＵ−Ａ出力端子５０４がノン・アクティブであることを確認した後、ＣＰＵ−Ｂ出力端子５０５をアクティブに設定する。
【００５８】
制御区間５０２において、十分なウェイトを行なう。
【００５９】
制御区間５０３において、ウェイトを完了した後に、再びＣＰＵ−Ｂ１０３は、ＣＰＵ−Ａ出力端子５０４を参照し、このときにＣＰＵ−Ａ出力端子５０４がアクティブになっている場合、ＣＰＵ−Ａ１０２がほぼ同時にバスアクセスを開始したと判断し、ＣＰＵ−Ｂ１０３はＣＰＵ−Ｂ出力端子５０５をノン・アクティブに設定し通信を中止する。
【００６０】
ＣＰＵ−Ａ出力端子５０４がノン・アクティブであった場合は、ＣＰＵ−Ｂ１０３がそのまま共有メモリへのアクセスを開始する。
【００６１】
制御区間５０２におけるＣＰＵ−Ｂ１０３がウェイトする必要のある時間(TW)は、ＣＰＵ−Ｂ１０３がＣＰＵ−Ｂ出力端子５０５をアクティブに設定してからＣＰＵ−Ａ１０２がそれを認識できるまでの時間（Td1）、ＣＰＵ−Ａ１０２がＣＰＵ−Ａ出力端子５０４をアクティブに設定してからＣＰＵ−Ｂ１０３がそれを認識できるまでの時間（Td2）から、
TW ＝ Td1 ＋ Td2 ＋ α・・・・  式（１）
と示すことができる。
【００６２】
なお、αは、波形のなまりなどを考慮した場合の猶予時間であり、あらかじめ考慮しておくことが望ましい。
【００６３】
なお、図５（ｂ）に示すように、ＣＰＵ−Ａ１０２が先にＣＰＵ−Ａ出力端子５０４をアクティブに設定する場合も同様である。
【００６４】
次に、実施の形態２において、ＣＰＵ−Ａ１０２およびＣＰＵ−Ｂ１０３が同時に共有メモリ１０１にアクセス要求を出した場合に、ＣＰＵ−Ａ１０２側を優先とする一例について、ＣＰＵ−Ａ１０２、ＣＰＵ−Ｂ１０３の制御方法を、図６ないしは、図７を用いて説明する。図６は本発明の実施の形態２に係るＣＰＵ−Ａ（高優先度側）とＣＰＵ−Ｂ（低優先度側）それぞれの制御のフローチャートである。図７は、図６における制御フローチャートにもとづく、タイミングチャートである。
【００６５】
ＣＰＵ−Ａ１０２かつ、ＣＰＵ−Ｂ１０３の通信開始条件が整い、通信開始タイミング１００５において、図６に示す制御区間１００１の送信処理が実行される。図６において、ＣＰＵ−Ｂ１０３は、前述の式（１）で表されるＣＰＵ−Ｂ１０３がウェイトする必要のある時間（Ｔｗ）を待った後、ＣＰＵ−Ａ出力端子５０４がアクティブであることを検出すると、ＣＰＵ−Ｂ出力端子５０５をノン・アクティブに設定して処理を終了する。
【００６６】
なお、ＣＰＵ−Ａ１０２がＣＰＵ−Ｂ出力端子５０５の入力に割込み端子を使用する場合、本例においてＣＰＵ−Ｂ１０３がアクティブであったＣＰＵ−Ｂ出力端子５０５をノン・アクティブに設定し通信を中止するタイミングで、ＣＰＵ−Ａ１０２が割り込みを検知するが、ＣＰＵ−Ａ１０２がＣＰＵ−Ａ出力端子５０４をアクティブに設定している間の状態（ＣＰＵ−Ａ：ＣＭＤ＿ＳＥＴモード)であることをＣＰＵ−Ａ１０２の割り込みハンドラなどで判定することによって、ＣＰＵ−Ａ１０２はダミー割り込みとして処理することができる。
【００６７】
ＣＰＵ−Ａ１０２は、コマンド設定処理などを完了すると、ＷＡＩＴモードへ遷移した後にＣＰＵ−Ａ出力端子５０４をノン・アクティブに設定する。次に図６に示す制御区間１００２の処理が実行される。制御区間１００２に示されるＣＰＵ−Ｂ１０３のコマンド参照状態（ＣＭＤ＿ＧＥＴモード）以後、図３を用いた本発明の実施の形態１に係るデータ転送方法のＣＰＵ−Ａ１０２からＣＰＵ−Ｂ１０３へデータを転送する場合の一例で説明した処理ステップと同じ処理を行う。
【００６８】
（実施の形態３）
次に、本発明の実施の形態３について説明する。図８は本発明の実施の形態３に係るデータ転送方法の構成を示すブロック図である。実施の形態３に係るデータ転送方法は、共有メモリ６０１、複数のプロセッサ６０２〜６０７、各々のプロセッサ間を直列に接続する汎用入出力端子６０８〜６１７、アドレスおよびデータバス６１８、を有して構成される。
【００６９】
図９は、本発明の実施の形態３に係るデータ転送方法の共有メモリマッピングの一例を示す共有メモリのメモリマップ図である。
【００７０】
実施の形態３に係るデータ転送方法の共有メモリマッピングの一例は、図２に示す例に加え、コマンド発行ＣＰＵ  ＩＤ領域７０１、コマンド送信先ＣＰＵ  ＩＤ領域７０２を有して構成される。
【００７１】
コマンド発行ＣＰＵ  ＩＤ領域７０１は、送受信コマンド領域２０１に読み込みもしくは、書き込みを行なうかというコマンドを設定するプロセッサのＣＰＵ  ＩＤである。
【００７２】
コマンド送信先ＣＰＵ  ＩＤ領域７０２は、コマンドの受け手側となるプロセッサを指定するためのＣＰＵ  ＩＤである。
【００７３】
次に、図１０を用いて詳細にデータ転送手順を説明する。
【００７４】
図１０は、本発明の実施の形態３に係るデータ転送方法のＣＰＵ−Ｃ６０４からＣＰＵ−Ｅ６０６へデータを転送する場合を一例とした場合の制御フローチャートである。
【００７５】
ＣＰＵ−Ｃ６０４からみて、ＣＰＵ−Ｂ６０３、ＣＰＵ−Ａ６０２の方向へ順に、上位方向、ＣＰＵ−Ｃ６０４からみて、ＣＰＵ−Ｄ６０５、ＣＰＵ−Ｅ６０６の方向へ順に、下位方向、と呼ぶこととし、コマンドを発行するプロセッサは、コマンド発行先のプロセッサが、自身に比べて上位もしくは下位に順位することをあらかじめ解っているものとする。
【００７６】
まず、ＣＰＵ−Ｃ６０４は、汎用出力端子６１０、６１４をアクティブに設定し、共有メモリへアクセス中であることを他のプロセッサ（ＣＰＵ−Ｂ６０３、ＣＰＵ−Ｄ６０５）へ通知する。ＣＰＵ−Ｂ６０３、ＣＰＵ−Ｄ６０５は汎用端子がアクティブに設定されたことを受けて、共有メモリへアクセス中であることをそれぞれ他のプロセッサ（ＣＰＵ−Ａ６０２、ＣＰＵ−Ｅ６０６）へ同様にして通知する。接続される全てのプロセッサに通知が渡るよう同様に通知制御を行なう。
【００７７】
ＣＰＵ−Ｃ６０４は、ＣＰＵ−Ｅ６０６へ送信するデータをコマンド発行側ＣＰＵデータ書き込み領域７０３へ設定するとともに、ＣＰＵ−Ｅ６０６に対してデータを受信するように、送受信コマンド領域２０１へ受信要求コマンドを、コマンド発行ＣＰＵ  ＩＤ領域７０１にＣＰＵ−Ｃ６０４であることを示すことのできるＩＤを、コマンド送信先ＣＰＵ  ＩＤ領域７０２にＣＰＵ−Ｅ６０６であることを示すことのできるＩＤを、設定し、汎用出力端子６１０をノン・アクティブに設定して完了する。
【００７８】
ＣＰＵ−Ｄ６０５は、汎用出力端子６１０がアクティブからノン・アクティブに変化したことを検出すると、コマンド送信先ＣＰＵ  ＩＤ領域７０２に設定されたＩＤを参照して自分宛の通知でないことを判断し、汎用出力端子６１１をノン・アクティブに設定して完了する。
【００７９】
ＣＰＵ−Ｅ６０６は、汎用出力端子６１１がアクティブからノン・アクティブに変化したことを検出すると、コマンド送信先ＣＰＵ  ＩＤ領域７０２に設定されたＩＤを参照して自分宛の通知であることを判断し、汎用出力端子６１６をアクティブに設定し、送受信コマンド領域２０１に設定されたコマンドを参照して受信要求コマンドであることを確認する。ＣＰＵ−Ｅ６０６はコマンド発行側ＣＰＵデータ書き込み領域７０３へ設定されたデータを取り込み、処理を完了すると転送ステータス状態領域２０２へ読み込み完了を設定する。
【００８０】
ＣＰＵ−Ｅ６０６は汎用出力端子６１６をノン・アクティブに設定して完了する。
【００８１】
ＣＰＵ−Ｄ６０５は、汎用出力端子６１５がアクティブからノン・アクティブに変化したことを検出すると、コマンド送信先ＣＰＵ  ＩＤ領域７０２に設定されたＩＤを参照して自分宛の通知でないことを判断し、汎用出力端子６１５をノン・アクティブに設定して完了する。
【００８２】
ＣＰＵ−Ｃ６０４は、汎用出力端子６１５がアクティブからノン・アクティブに変化したことを検出すると、汎用出力端子６１０をアクティブに設定し、転送ステータス状態領域２０２に設定されたステータス状態を参照して読み込み完了であることを確認する。ＣＰＵ−Ｃ６０４は、送受信コマンド領域２０１へ設定されている受信要求コマンドを破棄し、コマンド発行ＣＰＵ  ＩＤ領域７０１に設定されているＣＰＵ−Ｃ６０４であることを示すことのできるＩＤと、コマンド送信先ＣＰＵ  ＩＤ領域７０２に設定されているＣＰＵ−Ｅ６０６であることを示すことのできるＩＤとを破棄し、汎用出力端子６１０、６１４をノン・アクティブに設定して完了する。
【００８３】
ＣＰＵ−Ｂ６０３、ＣＰＵ−Ｄ６０５は、汎用端子６１４、６１０がノン・アクティブに設定されたことを受けて、実施の形態１と同様の手順で送受信コマンド領域２０１に設定されたコマンドを参照する。もしくは、コマンド送信先ＣＰＵ  ＩＤ領域７０２に設定されたＩＤを参照してもよい。コマンドもしくは、送信先ＩＤが設定されていないことを確認すると、順次、汎用出力端子をノン・アクティブに設定して完了する。接続される全てのプロセッサに通知が渡るよう同様に通知制御を行なう。
【００８４】
以上に説明した方式によって、直列に接続された複数のプロセッサのうち、任意の２つのプロセッサ間において、データの転送が可能である。
【産業上の利用可能性】
【００８５】
本発明にかかるマルチプロセッサシステムにおけるデータ転送方法は、複雑なハードウェアで構成されたメモリアクセスの調停手段が不要であり、小規模で容易なソフトウェア制御が可能であることから、調停手段を持たない汎用マイコンでも安定した且つ、効率的なデータ転送が可能となり、汎用マイコンを用いたマルチプロセッサシステム等に有用である。
【図面の簡単な説明】
【００８６】
【図１】本発明の実施の形態１に係るデータ転送方法の構成を示すブロック図
【図２】本発明の実施の形態１に係るデータ転送方法の共有メモリマッピングの一例を示す共有メモリのメモリマップ図
【図３】本発明のＣＰＵ−Ａをマスタとした場合の一例のマスタ送信タイミングチャート
【図４】本発明のＣＰＵ−Ａをマスタとした場合の一例のマスタ受信タイミングチャート
【図５】本発明の実施の形態２に係るデータ転送方法のタイミングチャート
【図６】本発明の実施の形態２に係るデータ転送方法の制御フローチャート
【図７】本発明の実施の形態２に係るデータ転送方法の制御タイミングチャート
【図８】本発明の実施の形態３に係るデータ転送方法の構成を示すブロック図
【図９】本発明の実施の形態３に係るデータ転送方法の共有メモリマッピングの一例を示す共有メモリのメモリマップ図
【図１０】本発明の実施の形態３に係るデータ転送方法のＣＰＵ−Ｃをマスタ、ＣＰＵ−Ｅをスレーブとした場合を一例とした制御フローチャート
【符号の説明】
【００８７】
１０１、６０１  共有メモリ
１０２、１０３、６０２〜６０７  プロセッサ（ＣＰＵ−ＡからＣＰＵ−Ｆ）
１０４、６１８  アドレスおよびデータバス
１０５、１０６、６０８〜６１７  汎用入出力端子
２０１  送受信コマンド領域
２０２  転送ステータス状態領域
２０３、７０３  コマンド発行側ＣＰＵ  データ書き込み領域
２０４、７０４  コマンド送信先ＣＰＵ  データ書き込み領域
２０５  データ先頭アドレス
２０６  送受信データサイズ
３０５、４０５、１００５  通信開始タイミング
５０４  ＣＰＵ−Ａ出力端子
５０５  ＣＰＵ−Ｂ出力端子
７０１  コマンド発行ＣＰＵ  ＩＤ領域
７０２  コマンド送信先ＣＰＵ ＩＤ領域
１００１、１００２、１００３、１００４  制御区間
９０１、９０２、９０３、９０４  割込みエッジ
【図１】
2005352559.tif 000003
【図２】
2005352559.tif 000004
【図３】
2005352559.tif 000005
【図４】
2005352559.tif 000006
【図５】
2005352559.tif 000007
【図６】
2005352559.tif 000008
【図７】
2005352559.tif 000009
【図８】
2005352559.tif 000010
【図９】
2005352559.tif 000011
【図１０】
2005352559.tif 000012