(57)【要約】【課題】２つのマイクロプロセッサがデュアルポートメモリを経由してデータの授受を行うとき、デュアルポートメモリによる競合状態をなくすこと、複数のデータの授受において同時性を確保すること、ハードウェアによる信号線を使用せずソフトウェアによる調停を実現することである。 【解決手段】デュアルポートメモリ内に、バンクＡポインタ、バンクＡメモリ、バンクＢポインタ、バンクＢメモリを設ける。そして、バンクＡメモリとバンクＢメモリはそれぞれｎ個のバンク構成とし、ソフトウェアによる調停を行って解決する。 【選択図】図１
2019008575.tif 000002
【特許請求の範囲】
【請求項１】
２つのマイクロプロセッサＭＰＵＡ１およびＭＰＵＢ２と、デュアルポートメモリにて構成されるマイクロプロセッサシステムにおいて、該ＭＰＵＡ１とＭＰＵＢ２は該デュアルポートメモリを経由して複数のデータの授受を行うものであって、
前記デュアルポートメモリ内に、バンクＡポインタ、バンクＡメモリ、バンクＢポインタ、およびバンクＢメモリを設け、前記ＭＰＵＡ１は該バンクＡポインタとバンクＡメモリを用いて複数のデータを前記ＭＰＵＢ２に送り、前記ＭＰＵＢ２は該バンクＢポインタとバンクＢメモリを用いて複数のデータを前記ＭＰＵＡ１に送る機能を有し、
前記バンクＡメモリは、連続した複数のアドレスのメモリ領域を1つのバンクとして、バンクＡ０からバンクＡ（ｎ−１）とｎ個の該バンクにて構成され、
前記バンクＡポインタは、前記ＭＰＵＡ１にて０から（ｎ−１）の値を設定されて前記ｎ個のバンクのうち１つのバンクを指定するものであり、
前記ＭＰＵＡ１は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＡメモリ経由にて前記ＭＰＵＢ２に送るために、前記バンクＡポインタが指定するバンクに複数のデータをライトする。そして、前記ＭＰＵＡ１はライトが終了した後、前記バンクＡポインタの値を０から（ｎ−１）の範囲で１だけ更新する。
そして前記ＭＰＵＢ２は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＡメモリ経由にて前記ＭＰＵＡ１から受け取るとき、前記バンクＡポインタが指定するバンクから１だけ前のバンクから複数のデータを処理の進捗に応じて逐次リードする。
次に前記バンクＢメモリは、連続した複数のアドレスのメモリ領域を1つのバンクとして、バンクＢ０からバンクＢ（ｎ−１）とｎ個の該バンクにて構成され、
前記バンクＢポインタは、前記ＭＰＵＢ２にて０から（ｎ−１）の値を設定されて前記ｎ個のバンクのうち１つのバンクを指定するものであり、
前記ＭＰＵＢ２は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＢメモリ経由にて前記ＭＰＵＡ１に送るために、前記バンクＢポインタが指定するバンクに複数のデータをライトする。そして、前記ＭＰＵＢ２はライトが終了した後、前記バンクＢポインタの値を０から（ｎ−１）の範囲で１だけ更新する。
そして前記ＭＰＵＡ１は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＢメモリ経由にて前記ＭＰＵＢ２から受け取るとき、前記バンクＢポインタが指定するバンクから１だけ前のバンクから複数のデータを処理の進捗に応じて逐次リードすることを特徴とするバンク方式のデュアルポートメモリ。
【請求項２】
請求項１において、
前記ＭＰＵＡ１およびＭＰＵＢ２はそれぞれ、テンポラリメモリＡおよびテンポラリメモリＢを備え、
前記ＭＰＵＢ２は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＡメモリ経由にて前記ＭＰＵＡ１から受け取るとき、前記バンクＡポインタが指定するバンクから１だけ前のバンクから複数のデータを連続してリードし、前記テンポラリメモリＢに一括にてセーブしたあと、処理の進捗に応じて逐次、前記テンポラリメモリＢからデータをリードし、
前記ＭＰＵＡ１は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＢメモリ経由にて前記ＭＰＵＢ２から受け取るとき、前記バンクＢポインタが指定するバンクから１だけ前のバンクから複数のデータを連続してリードし、前記テンポラリメモリＡに一括してセーブしたあと、処理の進捗に応じて逐次、前記テンポラリメモリＡからデータをリードすることを特徴とするバンク方式のデュアルポートメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２つのマイクロプロセッサとデュアルポートメモリにて構成されるコンピュータシステムにおいて、該デュアルポートメモリにより前記２つのマイクロプロセッサ間のデータの授受を行う方法に関するものである。
【背景技術】
【０００２】
マイクロプロセッサは産業用制御機器において広く使用され、多くの製品の生産を担っている。そして、ますます複雑で高度化する機能のために、複数のマイクロプロセッサが用いられ分散して処理を行っている。
【０００３】
例を挙げれば、ＰＬＣ（Programmable Logic Controller）装置においては、ラダープログラムの実行、信号の入出力の処理や位置決め制御などに、それぞれの処理に適したマイクロプロセッサを用いることが広く行われている。また、モータを駆動するインバータ装置においては、モータのインバータ駆動にはこれに適した制御用マイクロプロセッサを使用し、例えば他の統括監視装置とのデータ送受信のためには通信用マイクロプロセッサが使用されている。ここで以下に、マイクロプロセッサをＭＰＵとも表記する。
【０００４】
そして、ＭＰＵ間のデータの授受には、デュアルポートメモリ（以下に、デュアルポートメモリをＤＰＭとも表記する）が使用されることが多く、図１２に通常に実施されているＭＰＵとＤＰＭの使用例を示しこれについて説明を行う。
【０００５】
該図１２において、１と２はマイクロプロセッサであるＭＰＵＡおよびＭＰＵＢであり、３はデュアルポートメモリであるＤＰＭである。前記ＭＰＵＡ１とＭＰＵＢ２は該ＤＰＭ３を介して複数のデータの授受を行うもので、前記ＭＰＵＡ１とＤＰＭ３はコントロールバス１１、アドレスバス１２、データバス１３、およびビジー信号１４にて接続され、同様に前記ＭＰＵＢ２とＤＰＭ３はコントロールバス２１、アドレスバス２２、データバス２３、およびビジー信号２４にて接続されている、そして、前記コントロールバス１１および２１にはリード信号やライト信号が含まれている。
【０００６】
同じく図１２において前記ＤＰＭ３は、前記アドレスバス１２と２２が異なるアドレスを示していれば、前記ＭＰＵＡ１とＭＰＵＢ２から同時にリードまたはライトのアクセスが可能であるが、同時に同じアドレスを示している（これを競合状態と表記する）とき前記ＤＰＭ３は内蔵する調停の機能より調停を行って、例えばアクセスを許可する前記ＭＰＵＡ１への前記ビジー信号１４はノンアクティブとし、アクセスを許可しない例えば前記ＭＰＵＢ２への前記ビジー信号２４をアクティブとする。これにより、前記ＭＰＵＡ１は前記ＤＰＭ３にアクセスが可能となるが、前記ＭＰＵＢ２は、アドレスの競合状態が無くなって前記ビジー信号２４がノンアクティブになるまでウェイティング状態となる。
ここで、前記図１２において同期信号１５は、前記ＭＰＵＡ１とＭＰＵＢ２のプログラム実行の同期を図るもので、これの説明はさらにあとで行う。
【０００７】
かようなデュアルポートメモリの使用方法については従来から多くの発明が実施され、例えば特許文献１では、デュアルポートメモリが内蔵する調停機能を使用せず、２つのマイクロプロセッサ間にハードウェアによるフラグＡおよびフラグＢの接続を設け、ソフトウェアにより調停を行う発明が開示されている。デュアルポートメモリを使用するときは、競合状態における処理を確実に行うことが重要であり、該特許文献１はこれに着目したものと考えられる。
【０００８】
また特許文献２では、２つのマイクロプロセッサがデユアルポートメモリを経由して多量のデータの受け渡しを行おうとすると、デユアルポートメモリにデータの受け渡し処理のみで時間を費やしてしまい、主要な機能および性能に関する処理時間がなくなってしまう課題を挙げている。そしてこれの解決のために、２つのマイクロプロセッサ間にハードウェアによる割り込み信号の接続を設けて、同期アクセスと非同期アクセスにより課題を解消する発明が開示されている。
【０００９】
次に特許文献３では、２つのマイクロプロセッサ間のデータの書き込みおよび読み出しにおいて、データの同時性を保証しデータ転送の高速性を確保する課題を挙げている。そしてこれの解決のために、２つのマイクロプロセッサ間にハードウェアによる書き込みエリア選択信号生成回路を設けることにより、課題を解消する発明が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平５−２５０２５０号公報
【特許文献２】特開２０００−２４２６１０号公報
【特許文献３】特開２００７−３２８６４７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の解決しようとする課題は、２つのＭＰＵがＤＰＭを経由して複数のデータの授受を行うとき、競合状態が発生してＭＰＵの処理時間が長くなることがなきようにすること、データの同時性を確保すること、および種類が異なるＤＰＭであっても新たなハードウェアの追加を不要とすることにある。次にこれらの課題の内容について、前記図１２を参照しつつ図１３および図１４にてさらに詳細に説明を行う。
【００１２】
始めに図１３は前記図１２の従来のＤＰＭの使用例について、同期式の動作を説明するものであり、該図１３の（ａ）、（ｂ）、および（ｃ）はそれぞれ前記ＭＰＵＡ１の処理、前記同期信号１５、およびＭＰＵＢ２の処理を時間の推移とともに表している。
そして該図１３の（ａ）は、前記ＭＰＵＡ１が周期ｔａにて時刻Ｔａ１、Ｔａ２、Ｔａ３、およびＴａ４にて、順次ａ１、ａ２、ａ３、ａ４の処理を実行するとしている。そして処理ａ１において白抜きで示すｔａ１１は、前記ＭＰＵＡ１がＭＰＵＢ２と競合状態に陥ることなく所定のジョブを実行するジョブ時間を表しており、網掛けで示すｔａ１３は前記ＭＰＵＡ１がＭＰＵＢ２と競合状態が発生してウェイティングにより待機となったウェイティング時間の合計を表している。また図中のｔａ１２は余裕時間であり、前記ウェイティング時間ｔａ１３は該余裕時間ｔａ１２より短い必要がある。
【００１３】
ここで前記処理ａ１にて説明を付加すると、ＭＰＵＡ１のウェイティングは前記時間（ｔａ１１＋ｔａ１３）の全域において発生し得るものであり、該ウェィティングの発生により処理時間が長くなることを前記ｔａ１３に合計して表していることに注意が必要である。
そして、前記処理ａ２、ａ３、およびａ４においても網掛け部分は、それぞれのウェイティング時間の合計を表している。
【００１４】
次に前記図１２の同期信号１５は、該図１３の（ｂ）に示すとおり前記ＭＰＵＡ１が処理を開始するときに出力するフラグである。そして前記図１３の（ｃ）に示すように、前記ＭＰＵＢ２は該同期信号１５に同期して、順次ｂ１、ｂ２、ｂ３、ｂ４の処理を実行する。ここで処理ｂ１からｂ４において、白抜きの部分と網掛けの部分は前記ＭＰＵＢ２のそれぞれジョブ時間とウェイティング時間の合計である。
【００１５】
該図１３により上記で説明したとおり、前記ＭＰＵＡ１とＭＰＵＢ２が前記ＤＰＭ３を経由してデータの授受を行うときウェィティング時間が発生する。そして具体例を挙げれば、前記ＭＰＵＡ１はモータを駆動するインバータ装置を制御し、前記ＭＰＵＢ２はＰＲＯＦＩＢＵＳなどの通信を制御するとき、前記ＭＰＵＢ２の動作により前記ＭＰＵＡ１のウェィティング時間、すなわち処理時間の長さが左右されることとなる。しかし前記ＭＰＵＡ１はインバータのパワー素子などの制御を行うもので、処理時間の長さが変更されるなど予期しない他からの影響は排除すべきである。
これにより本発明の第１の課題は、ＭＰＵにウェィティング時間が発生しないよう、ＤＰＭによる競合状態をなくすことである。
【００１６】
次に本発明の第２の課題をふたたび前記図１３にて説明する。前記ＭＰＵＢ２がＭＰＵＡ１からデータを受け取るとき、該図１３の（ａ）の処理ａ２と図１３の（ｃ）の処理ｂ２のタイミングにて説明すると、前記ＭＰＵＡ１は処理ａ２において前記ＤＰＭ３に全てのデータを時刻Ｔａ２Ｅにてライトを完了する。これを換言すれば、時刻Ｔａ２から時刻Ｔａ２Ｅまでに前記ＭＰＵＡ１が前記ＤＰＭ３にライトしたデータは、前記処理ａ１と処理ａ２によるものが混在することになる。
【００１７】
したがって前記ＭＰＵＢ２は、処理ｂ２において前記処理ａ１とａ２による混在したデータをリードすることとなる。これは前記ＭＰＵＢ２が、例えば同一時刻のインバータの電流、電圧やトルク指令を受け取ろうとするときに同時性がなくなり障害となるものである。また、複数のデータにて１つの物理量とするときにも、前記処理ａ１とａ２の処理によるデータが混在し支障が発生する。これにより本発明の第２の課題は、複数のデータについて同時性を確保することである。
【００１８】
次に本発明の第３の課題は、前記図１２におけるビジー信号１４，１５、および同期信号１５のハードウェアによる接続をなくすことである。これによりビジー信号によるマイクロプロセッサのウェィティングのタイミング設計が不要となるとともに、どのようＤＰＭの供給メーカや種類であっても同じようにデュアルポートメモリが使用可能となり、シンプルなＤＰＭシステムを実現することができる。
【００１９】
次に図１４は、従来のＤＰＭの使用例で非同期式の動作を説明するもので、前記図１２において同期信号１５を用いない場合である。該図１４の（ａ）および（ｃ）はそれぞれ前記ＭＰＵＡ１の処理、および前記ＭＰＵＢ２の処理を時間の推移とともに表している。そして、該図１４の（ａ）ＭＰＵＡ１の処理に示すａ１からａ４、ｔａ１１、およびｔａ１３は、前記図１３の（ａ）にて同じ符号を付すものと同じでありその説明は割愛する。また、該図１４の（ｃ）ＭＰＵＢ２の処理に示すｂ１からｂ４、ｔｂ１１、およびｔｂ１３は、前記図１３の（ｃ）にて同じ符号を付すものと同じでありその説明は割愛する。
該図１４で表すとおり前記ＭＰＤＵＡ１とＭＰＤＵＢ２は、同期せずそれぞれの周期で処理を繰り返す。
【００２０】
また、該図１４のａ１からａ４、およびｂ１からｂ４において、白抜きで示す部分はジョブ時間を網掛けで示す部分はウェィティング時間の合計を表している。そして該図１４においてもウェィティングが発生しているが、非同期式の場合でも本発明の第１の課題は、ＭＰＵにウェィティング時間が発生しないようＤＰＭによる競合状態をなくすことである。
【００２１】
次に該図１４におけるデータの同時性について、前記ＭＰＵＡ１がＭＰＵＢ２からデータを受け取る場合について説明する。始めに処理ｂ２とａ２において時刻Ｔ１は前記処理ｂ２が終了する時刻であり、時刻Ｔ２は前記処理ｂ３が開始する時刻である。そして前記処理ａ２にて、前記ＭＰＵＡ１がＤＰＭ３を経由してＭＰＵＢ２から受け取るデータの内容をまとめると表１のとおりとなり、最悪のとき処理ｂ１からｂ３のデータを混在して受け取ることとなる。これゆえ、非同期式の場合でも本発明の第２の課題は、複数のデータについて同時性を確保することである。
(表１)
2019008575.tif 000003
【００２２】
また、非同期式の前記図１４においても第３の課題は、ビジー信号１４および１５のハードウェアによる接続をなくすことである。
【課題を解決するための手段】
【００２３】
上記課題を本発明においては、次のように解決する。
（１）２つのマイクロプロセッサＭＰＵＡ１およびＭＰＵＢ２と、デュアルポートメモリにて構成されるマイクロプロセッサシステムにおいて、該ＭＰＵＡ１とＭＰＵＢ２は該デュアルポートメモリを経由して複数のデータの授受を行うものである。
そして、前記デュアルポートメモリ内に、バンクＡポインタ、バンクＡメモリ、バンクＢポインタ、およびバンクＢメモリを設け、前記ＭＰＵＡ１は該バンクＡポインタとバンクＡメモリを用いて複数のデータを前記ＭＰＵＢ２に送り、前記ＭＰＵＢ２は該バンクＢポインタとバンクＢメモリを用いて複数のデータを前記ＭＰＵＡ１に送る機能を有している。
ここで前記バンクＡメモリは、連続した複数のアドレスのメモリ領域を1つのバンクとして、バンクＡ０からバンクＡ（ｎ−１）とｎ個の該バンクにて構成され、前記バンクＡポインタは、前記ＭＰＵＡ１にて０から（ｎ−１）の値を設定されて前記ｎ個のバンクのうち１つのバンクを指定するものである。
そして前記ＭＰＵＡ１は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＡメモリ経由にて前記ＭＰＵＢ２に送るために、前記バンクＡポインタが指定するバンクに複数のデータをライトする。次に、前記ＭＰＵＡ１はライトが終了した後、前記バンクＡポインタの値を０から（ｎ−１）の範囲で１だけ更新する。
また前記ＭＰＵＢ２は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＡメモリ経由にて前記ＭＰＵＡ１から受け取るとき、前記バンクＡポインタが指定するバンクから１だけ前のバンクから複数のデータを処理の進捗に応じて逐次リードする。
一方前記バンクＢメモリは、連続した複数のアドレスのメモリ領域を1つのバンクとして、バンクＢ０からバンクＢ（ｎ−１）とｎ個の該バンクにて構成され、前記バンクＢポインタは、前記ＭＰＵＢ２にて０から（ｎ−１）の値を設定されて前記ｎ個のバンクのうち１つのバンクを指定するものである。
そして前記ＭＰＵＢ２は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＢメモリ経由にて前記ＭＰＵＡ１に送るために、前記バンクＢポインタが指定するバンクに複数のデータをライトする。次に、前記ＭＰＵＢ２はライトが終了した後、前記バンクＢポインタの値を０から（ｎ−１）の範囲で１だけ更新する。
また前記ＭＰＵＡ１は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＢメモリ経由にて前記ＭＰＵＢ２から受け取るとき、前記バンクＢポインタが指定するバンクから１だけ前のバンクから複数のデータを処理の進捗に応じて逐次リードすることを特徴とするバンク方式のデュアルポートメモリである。
【００２４】
（２）上記（１）において、前記ＭＰＵＡ１およびＭＰＵＢ２はそれぞれ、テンポラリメモリＡおよびテンポラリメモリＢを備えている。
前記ＭＰＵＢ２は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＡメモリ経由にて前記ＭＰＵＡ１から受け取るとき、前記バンクＡポインタが指定するバンクから１だけ前のバンクから複数のデータを連続してリードし、前記テンポラリメモリＢに一括にてセーブしたあと、処理の進捗に応じて逐次、前記テンポラリメモリＢからデータをリードする。
また前記ＭＰＵＡ１は、１回の処理ごとに複数のデータを前記デュアルポートメモリのバンクＢメモリ経由にて前記ＭＰＵＢ２から受け取るとき、前記バンクＢポインタが指定するバンクから１だけ前のバンクから複数のデータを連続してリードし、前記テンポラリメモリＡに一括してセーブしたあと、処理の進捗に応じて逐次、前記テンポラリメモリＡからデータをリードすることを特徴とするバンク方式のデュアルポートメモリである。
【発明の効果】
【００２５】
以上で説明したとおり、２つのマイクロプロセッサがデュアルポートメモリを経由して複数のデータを授受するとき、デュアルポートメモリの競合状態を解消してマイクロプロセッサはウェィティング状態に陥ることなく安定に動作することとなり、マイクロプロセッサによる制御の信頼性を向上させるものである。
また、２つのマイクロプロセッサが相互に授受するデータの同時性を保証し、正確なデータによる制御の実行や各種データのトレースを可能とする。
そして、マイクロプロセッサとデュアルポートメモリ間の信号の接続本数を最小限なものとし、供給メーカや種類に依存することなく、さまざまなデュアルポートメモリをマイクロプロセッサと最小限の接続にて使用可能とするものである。
【図面の簡単な説明】
【００２６】
【図１】本発明によるバンク方式のＤＰＭの実施例１の構成を説明する図（その１）である。
【図２】本発明によるバンク方式のＤＰＭの実施例１の構成を説明する図（その２）である。
【図３】実施例１のデータ転送を説明する図（その１）である。
【図４】実施例１のデータ転送を説明する図（その２）である。
【図５】実施例１のデータ転送を説明する図（その３）である。
【図６】実施例１のデータ転送を説明する図（その４）である。
【図７】本発明によるバンク方式のＤＰＭの実施例２の構成を説明する図（その１）である。
【図８】本発明によるバンク方式のＤＰＭの実施例２の構成を説明する図（その２）である。
【図９】実施例２のデータ転送を説明する図（その１）である。
【図１０】実施例２のデータ転送を説明する図（その２）である。
【図１１】実施例２のデータ転送を説明する図（その３）である。
【図１２】従来のＤＰＭの使用例を説明する図である。
【図１３】従来のＤＰＭの動作を説明する図（同期式）である。
【図１４】従来のＤＰＭの動作を説明する図（非同期式）である。
【発明を実施するための形態】
【００２７】
以下に本発明を実施例の図を示して説明を行う。図1は本発明の実施例１を示し、図２、図３、図４、図５、および図６は該図１の動作を補足して説明し、図７は本発明の実施例２を示し、図８、図９、図１０、および図１１は該図７の動作を補足して説明するものである。
【実施例１】
【００２８】
図１は、本発明によるバンク方式のデュアルポートメモリの実施例１の構成を説明する図である。該図１において、ＭＰＵＡ１、コントロールバス１１、アドレスバス１２、データバス１３、およびＭＰＵＢ２、コントロールバス２１、アドレスバス２２、データバス２３は、前記図１２で同じ符号を付すものと同じ機能を有しておりこれの説明は割愛する。またＤＰＭ３は、前記図１２のＤＰＭ３と同じデユアルポートメモリの機能を持っているが、本発明は該ＤＰＭ３の内部構成に特徴を有するものである。
【００２９】
該図１のＤＰＭ３において、３１、３２はそれぞれバンクＡポインタ、バンクＡメモリであり、これらは前記ＭＰＵＡ１から前記ＭＰＵＢ２へデータを送るためのものである。そして該バンクＡメモリ３２は、連続した複数のアドレスのメモリ領域を１つのバンクとして、バンクＡ０、バンクＡ１からバンクＡ（ｎ−１）とｎ個のバンクにて構成されている。ここでバンクＡ０からバンクＡ（ｎ−１）のそれぞれを総称してバンクＡと表記する。
【００３０】
また説明を容易とするために数値例にて示せば、前記ＤＰＭ３の物理的なデータサイズが１ワードのとき、前記バンクＡポインタ３１のサイズは１ワードであり、バンクＡ０からバンクＡ（ｎ−１）のそれぞれのバンクＡのサイズは連続したアドレスの４０ワードなどである。このとき前記バンクＡメモリ３２のサイズは、（４０×ｎ）ワードとなる。
そして、前記バンクＡポインタ３１、バンクＡメモリ３２、およびバンクＡ０からバンクＡ（ｎ−１）は、前記ＤＰＭ３内にメモリマッピングしたものである。
【００３１】
次に前記ＭＰＵＡ１が、複数のデータを前記ＤＰＭ３経由にて前記ＭＰＵＢ２へ送る手順を、該図１中に示すａからｅにて説明する。
ａ：前記ＭＰＵＡ１は、処理の始めに前記バンクＡポインタ３１をリードする。
ｂ：前記ＭＰＵＡ１は、前記バンクＡ０からバンクＡ（ｎ−１）のうち、
前記バンクＡポインタ３１が示すＮＯ．のバンクＡに
処理の進捗に応じて逐次、
前記ＭＰＵＢ２へ送る複数のデータをライトする。
ｃ：前記ＭＰＵＡ１は、処理の終わりに前記バンクＡポインタ３１の値を
１だけ加算する。ただし加算の結果、値がｎ以上となったら
０を前記バンクＡポインタ３１にライトする。
ｄ：前記ＭＰＵＢ２は、処理の始めに前記バンクＡポインタ３１をリードする。
ｅ：前記ＭＰＵＢ２は、前記バンクＡ０からバンクＡ（ｎ−１）のうち、
前記バンクＡポインタ３１が１から（ｎ−１）のときは
１だけ減算したＮＯ．のバンクＡから、
前記バンクＡポインタ３１が０のときはバンクＡ（ｎ−１）から、
処理の進捗に応じて逐次、複数のデータをリードする。
ここで前記ＭＰＵＡ１とＭＰＵＢ２は、相互に非同期にてそれぞれの処理を実行するものである。また前記のｃで、前記バンクＡポインタ３１の値を１だけ加算によるロータリーアップカウンタとしたが、これに換えて１だけ減算としてロータリーダウンカウンタとしてもよい。
【００３２】
かようにして、前記ＭＰＵＡ１が複数のデータを前記ＤＰＭ３経由にて前記ＭＰＵＢ２に送るとき、前記バンクＡポインタ３１に基づき、前記ＭＰＵＡ１がライトする前記バンクＡと、前記ＭＰＵＢ２がリードする前記バンクＡは必ず異なるので、前記ＤＰＭ３において競合状態が発生することがなく、これにより前記ＭＰＵＡ１およびＭＰＵＢ２がウェィティング状態に陥ることがない。
また、前記ＭＰＵＢ２は必ず、前記ＭＰＵＡ１がライトを完了したバンクＡからデータをリードするので、複数のデータの同時性が確保される。
さらに前記図１に示したとおり、前記ＭＰＵＡ１とＭＰＵＢ２間にはハードウェアによる接続はなく、これによりビジー信号によるマイクロプロセッサのウェィティングのタイミング設計が不要となるものである。
【００３３】
次に、前記ＭＰＵＢ２から前記ＭＰＵＡ１へデータを送るための構成と手順について説明を行う。前記図１のＤＰＭ３において、３３、３４はそれぞれバンクＢポインタ、バンクＢメモリであり、これらは前記ＭＰＵＢ２から前記ＭＰＵＡ１へデータを送るためのものである。そして該バンクＢメモリ３４は、連続した複数のアドレスのメモリ領域を１つのバンクとして、バンクＢ０、バンクＢ１からバンクＢ（ｎ−１）とｎ個のバンクにて構成されている。ここでバンクＢ０からバンクＢ（ｎ−１）のそれぞれを総称してバンクＢと表記する。
【００３４】
また説明を容易とするために数値例にて示せば、前記ＤＰＭ３の物理的なデータサイズが１ワードのとき、前記バンクＢポインタ３３のサイズは１ワードであり、バンクＢ０からバンクＢ（ｎ−１）のそれぞれのバンクＢのサイズは連続したアドレスの４０ワードなどである。このとき前記バンクＢメモリ３４のサイズは、（４０×ｎ）ワードとなる。
そして、前記バンクＢポインタ３３、バンクＢメモリ３４、およびバンクＢ０からバンクＢ（ｎ−１）は、前記ＤＰＭ３内にメモリマッピングしたものである。
【００３５】
次に図２にて、前記ＭＰＵＢ２が複数のデータを前記ＤＰＭ３経由にて、前記ＭＰＵＡ１へ送る手順を説明する。該図２においてｆ、ｇ、およびｈは前記ＭＰＵＢ２がデータを前記ＤＰＭ３にライトする手順を、ｉおよびｊは前記ＭＰＵＡ１がデータを前記ＤＰＭ３からリードする手順を示すものである。そして、該ｆからｊ以外の符号を付すものは、前記図１で同じ符号のものと同じ機能を有しこれの説明は割愛する。
【００３６】
次に、該図２中に示すｆからｊにて説明する。
ｆ：前記ＭＰＵＢ２は、処理の始めに前記バンクＢポインタ３３をリードする。
ｇ：前記ＭＰＵＢ２は、前記バンクＢ０からバンクＢ（ｎ−１）のうち、
前記バンクＢポインタ３３が示すＮＯ．のバンクＢに
処理の進捗に応じて逐次、
前記ＭＰＵＡ１へ送る複数のデータをライトする。
ｈ：前記ＭＰＵＢ２は、処理の終わりに前記バンクＢポインタ３３の値を
１だけ加算する。ただし加算の結果、値がｎ以上となったら
０を前記バンクＢポインタ３３にライトする。
ｉ：前記ＭＰＵＡ１は、処理の始めに前記バンクＢポインタ３３をリードする。
ｊ：前記ＭＰＵＡ１は、前記バンクＢ０からバンクＢ（ｎ−１）のうち、
前記バンクＢポインタ３３が１から（ｎ−１）のときは
１だけ減算したＮＯ．のバンクＢから、
前記バンクＢポインタ３３が０のときはバンクＢ（ｎ−１）から、
処理の進捗に応じて逐次、複数のデータをリードする。
ここで前記ＭＰＵＢ２とＭＰＵＡ１は、相互に非同期にてそれぞれの処理を実行するものである。また前記のｈで、前記バンクＢポインタ３３の値を１だけ加算によるロータリーアップカウンタとしたが、これに換えて１だけ減算としてロータリーダウンカウンタとしてもよい。
【００３７】
かようにして、前記ＭＰＵＢ２が複数のデータを前記ＤＰＭ３経由にて前記ＭＰＵＡ１に送るとき、前記バンクＢポインタ３３に基づき、前記ＭＰＵＢ２がライトする前記バンクＢと、前記ＭＰＵＡ１がリードする前記バンクＢは必ず異なるので、前記ＤＰＭ３において競合状態は発生することがなく、これにより前記ＭＰＵＢ２およびＭＰＵＡ１がウェィティング状態に陥ることがない。
また、前記ＭＰＵＡ１は必ず、前記ＭＰＵＢ２がライトを完了したバンクＢからデータをリードするので、複数のデータの同時性が確保される。
さらに前記図２に示したとおり、前記ＭＰＵＢ２とＭＰＵＡ１間にはハードウェアによる接続はなく、これによりビジー信号によるマイクロプロセッサのウェィティングのタイミング設計が不要となるものである。
【００３８】
前記図１にて前記ＭＰＵＡ１から前記ＭＰＵＢ２へ、また前記図２にて前記ＭＰＵＢ２から前記ＭＰＵＡ１へデータを送るための構成と手順について説明を行った。この両者は類似の動作であるが、代表して前記図１について各状態の時間的遷移を図３、図４、図５、および図６に示し、さらに本発明の実施例１について説明を行う。
【００３９】
始めに図３において（ａ）および（ｂ）は、それぞれ前記図１のＭＰＵＡ１が実行する処理、およびバンクＡポインタ３１の値の時間的推移を表している。そして、前記ＭＰＵＡ１は該図３の（ａ）に示すとおり、所定の周期にて処理Ａ１、処理Ａ２、処理Ａ３、および処理Ａ４と順次実行し、前記図１３の（ａ）にて示したウェィティング時間はないものである。また図中の時刻ＴＡ１、ＴＡ２、ＴＡ３、およびＴＡ４は、処理Ａ１からＡ４がそれぞれ終了する時刻を表している。
【００４０】
次に前記図１において、前記バンクＡメモリ３２はｎ個のバンクにより構成されるものであるが、該図３ではｎが４の場合で示している。そして、該図３の（ｂ）バンクＡポインタ３１は前記時刻ＴＡ１まではバンクＡ２を指定しており、該図３の（ａ）においてＭＰＵＡ１は、処理Ａ１の進捗に応じて逐次、データを前記バンクＡ２にライトする。そして処理Ａ１の終わりの時刻ＴＡ１にて、該図３の（ｂ）バンクＡポインタ３１を１だけ加算して３とする。続いて該図３の（ｂ）バンクＡポインタ３１は、時刻ＴＡ２、ＴＡ３、ＴＡ４において、それぞれ０、１、２と遷移する。
【００４１】
次に該図３の（ｃ）および（ｄ）は、それぞれ前記図１のＭＰＵＢ２が実行する処理、および該ＭＰＵＢ２がアクセス（リード）するバンクＡの時間的推移を表している。始めに前記ＭＰＵＢ２は該図３の（ｃ）に示すとおり、所定の周期にて処理Ｂ１、処理Ｂ２、処理Ｂ３、および処理Ｂ４と順次実行し、前記図１３の（ｃ）にて示したウェィティング時間はないものである。また図中の時刻ＴＢ１、ＴＢ２、ＴＢ３、およびＴＢ４は、それぞれ処理Ｂ１からＢ４が開始する時刻を表している。
【００４２】
次に該図３の（ｄ）は、前記ＭＰＵＢ２がリードするバンクＡの遷移を示すが、どのバンクＡからリードするかは処理の開始のときに決定する。これをさらに該図３の（ｃ）、（ｄ）にて説明すると、前記ＭＰＵＢ２は処理Ｂ１を開始するとき前記バンクＡポインタ３１の値３をリードし、これを１だけ減じた２、すなわちバンクＡ２からリードとし、処理Ｂ１の進捗に応じて逐次リードする。同様に前記ＭＰＵＢ２は、時刻ＴＢ２、ＴＢ３、およびＴＢ４において、処理Ｂ２、Ｂ３、およびＢ４にてリードするバンクＡをそれぞれバンクＡ３，バンクＡ０，およびバンクＡ０とするものである。
【００４３】
ここで該図３の（ｂ）と（ｄ）を対比すると、前記ＭＰＵＡ１がライトするバンクＡと前記ＭＰＵＢ２がリードするバンクＡは必ず相違している。これにより、前記ＤＰＭ３において前記ＭＰＵＡ１と前記ＭＰＵＢ２による競合状態が発生することがなく、前記ＭＰＵＡ１およびＭＰＵＢ２がともにウェィティング状態に陥ることがない。
また前記ＭＰＵＢ２は必ず、前記ＭＰＵＡ１がライトを完了したバンクＡからデータをリードするので、複数のデータの同時性が確保される。
さらに前記バンクＡポインタ３１にてソフトウェアによる調停を行うので、前記ＭＰＵＡ１とＭＰＵＢ２間にハードウェアによる接続と調停を不要とするものである。
【００４４】
ここで該図３は、前記ＭＰＵＡ１とＭＰＵＢ２が非同期で動作し、両者の処理時間が概ね等しい場合を想定している。また該図３の（ｄ）の時刻ＴＢ４に続く網掛けは、前記ＭＰＵＢ２がリードするバンクＡ０が、前の時刻ＴＢ３から継続していることを示している。
【００４５】
前記図３にて前記図１における各状態の時間的推移を説明したが、続いて図４にて説明を行う。該図４の（ａ）、（ｂ）、（ｃ）、および（ｄ）は前記図３のそれと同じ項目の時間的推移を表し、また該図４に符号を付すものは、前記図３に同じ符号を付すものと同じ機能や役割を有するものでその説明は割愛する。
【００４６】
そして前記図３との相違は、該図４の（ａ）に示す前記ＭＰＵＡ１の処理時間が、該図４の（ｃ）に示す前記ＭＰＵＢ２の処理時間より長い場合の時間的推移を示している。このとき該図４の（ｂ）と（ｄ）を対比すると、前記ＭＰＵＡ１がライトするバンクＡと前記ＭＰＵＢ２がリードするバンクＡは必ず相違している。これにより、前記ＤＰＭ３において前記ＭＰＵＡ１と前記ＭＰＵＢ２による競合状態が発生することがなく、本発明の目的を達成することとなる。
ここで該図４の（ｄ）の網掛けは、前記ＭＰＵＢ２がリードするバンクＡが、一周期前の処理から継続していることを表している。
【００４７】
さらに、前記図１における各状態の時間的推移を、前記図３および図４に続いて図５にて説明する。該図５の（ａ）、（ｂ）、（ｃ）、および（ｄ）は前記図３のそれと同じ項目の時間的推移を表し、また該図５に符号を付すもので、前記図３にて同じ符号を付すものはこれと同じ機能や役割を有しその説明は割愛する。
【００４８】
そして前記図３、図４と該図５の相違は、該図５の（ａ）に示す前記ＭＰＵＡ１の処理時間が、該図５の（ｃ）に示す前記ＭＰＵＢ２の処理時間より短い場合の時間的推移を示している。
【００４９】
ここで該図５の（ｂ）と（ｄ）を対比すると、前記ＭＰＵＡ１がライトするバンクＡと前記ＭＰＵＢ２がリードするバンクＡは常に必ず相違すべきが、時刻ＴＡ８からＴＢ４において同じバンクＡ３となっている。これにより前記ＤＰＭ３において、前記ＭＰＵＡ１と前記ＭＰＵＢ２にて競合状態が発生可能となって、本発明の目的の達成に支障となるものである。これの対策としてバンクＡの数を増やせばよく、これについて図６にて説明を行う。
【００５０】
ここで前記ＴＡ８は、前記図５の（ａ）で処理Ａ８が終了する時刻である。また、前記図５の（ｂ）において網掛けで示すバンクＡは、前記ＭＰＤＵＡ１がバンクＡにライトしても、前記ＭＰＤＵＢ２がリードしないバンクＡを表している。
【００５１】
前記図５においてバンクＡの数は４であったが、これを５とした場合を図６に示して説明を行う。該図６の（ａ）、（ｂ）、（ｃ）、および（ｄ）は前記図５のそれと同じ項目の時間的推移を表し、また該図６に符号を付すものは、前記図５にて同じ符号を付すものと同じ機能や役割を有しその説明は割愛する。
【００５２】
該図６の（ｂ）において、バンクＡポインタ３１は０から４の範囲で遷移している。そして該図６の（ｂ）と（ｄ）を対比すると、時刻ＴＡ８からＴＢ４のみならず全ての期間において、前記ＭＰＵＡ１がライトするバンクＡと前記ＭＰＵＢ２がリードするバンクＡは常に必ず相違している。
【００５３】
かようにして、前記ＭＰＵＡ１が複数のデータを前記ＤＰＭ３経由にて前記ＭＰＵＢ２に送るとき、前記バンクＡポインタ３１に基づき、前記ＭＰＵＡ１がライトする前記バンクＡと、前記ＭＰＵＢ２がリードする前記バンクＡは必ず異なるので、前記ＤＰＭ３において競合状態が発生することがなく、これにより前記ＭＰＵＡ１およびＭＰＵＢ２がウェィティング状態に陥ることがない。
また、前記ＭＰＵＢ２は必ず、前記ＭＰＵＡ１がライトを完了したバンクＡからデータをリードするので、複数のデータの同時性が確保される。
さらに前記図１にて示したとおり、前記ＭＰＵＡ１とＭＰＵＢ２間にはハードウェアによる接続はなく、これによりビジー信号によるマイクロプロセッサのウェィティングや割り込みのタイミング設計が不要となるものである。
【００５４】
ここまで図１の前記ＭＰＵＡ１から前記ＭＰＵＢ２へデータを送る構成について、前記図３から図６にて時間的推移の説明を行った。そして、図２に示した前記ＭＰＵＢ２から前記ＭＰＵＡ１へ、データを送る場合の時間的推移も前記図３から図６と同様である、
【実施例２】
【００５５】
次に図７は、本発明によるバンク方式のデュアルポートメモリの実施例２の構成を説明する図である。該図７において、前記図１と同じ符号を付すものはこれと同じ機能を有しておりこれの説明は割愛する。そして該図７において１６は、前記ＭＰＵＡ１が内蔵するか外部に配置するテンポラリメモリＡである。同様に２６は、前記ＭＰＵＢ２が内蔵するか外部に配置するテンポラリメモリＢである。
【００５６】
始めに前記ＭＰＵＡ１が、複数のデータを前記ＤＰＭ３経由にて前記ＭＰＵＢ２へ送る手順を、該図７中に示すａからｆにて説明する。
ａ：前記ＭＰＵＡ１は、処理の始めに前記バンクＡポインタ３１をリードする。
ｂ：前記ＭＰＵＡ１は、前記バンクＡ０からバンクＡ（ｎ−１）のうち、
前記バンクＡポインタ３１が示すＮＯ．のバンクＡに
処理の進捗に応じて逐次、
前記ＭＰＵＢ２へ送る複数のデータをライトする。
ｃ：前記ＭＰＵＡ１は、処理の終わりに前記バンクＡポインタ３１の値を
１だけ加算する。ただし加算の結果、値がｎ以上となったら
０を前記バンクＡポインタ３１にライトする。
ｄ：前記ＭＰＵＢ２は、処理の始めに前記バンクＡポインタ３１をリードする。
ｅ：前記ＭＰＵＢ２は、前記バンクＡ０からバンクＡ（ｎ−１）のうち、
前記バンクＡポインタ３１が１から（ｎ−１）のときは
１だけ減算したＮＯ．のバンクＡから、
前記バンクＡポインタ３１が０のときはバンクＡ（ｎ−１）から、
処理の始めに一括して、全てのデータをリードする。
ｆ：前記ＭＰＵＢ２は、上記のｅで一括してリードした全てのデータを、
前記テンポラリメモリＢ２６にセーブし、
処理の進捗に応じて逐次、前記ＭＰＵＡ１からのデータを
前記テンポラリメモリＢ２６からリードする。
ここで前記ＭＰＵＡ１とＭＰＵＢ２は、相互に非同期にてそれぞれの処理を実行するものである。また前記のｃで、前記バンクＡポインタ３１の値を１だけ加算によるロータリーアップカウンタとしたが、これに換えて１だけ減算としてロータリーダウンカウンタとしてもよい。
【００５７】
かようにして、前記ＭＰＵＡ１が複数のデータを前記ＤＰＭ３経由にて前記ＭＰＵＢ２に送るとき、前記バンクＡポインタ３１に基づき、前記ＭＰＵＡ１がライトする前記バンクＡと、前記ＭＰＵＢ２がリードする前記バンクＡは必ず異なるので、前記ＤＰＭ３において競合状態が発生することがなく、これにより前記ＭＰＵＡ１およびＭＰＵＢ２がウェィティング状態に陥ることがない。
また、前記ＭＰＵＢ２は必ず、前記ＭＰＵＡ１がライトを完了したバンクＡからデータをリードするので、複数のデータの同時性が確保される。
さらに該図７に示したとおり、前記ＭＰＵＡ１とＭＰＵＢ２間にはハードウェアによる接続はなく、これによりビジー信号によるマイクロプロセッサのウェィティングのタイミング設計が不要となるものである。
【００５８】
次に図８にて、前記ＭＰＵＢ２が複数のデータを前記ＤＰＭ３経由にて、前記ＭＰＵＡ１へ送る手順を説明する。該図８においてｈ、ｉ、およびｊは前記ＭＰＵＢ２がデータを前記ＤＰＭ３にライトする手順を、ｋ、ｍ、およびｎは前記ＭＰＵＡ１がデータを前記ＤＰＭ３からリードする手順を示すものである。そして、該ｈからｎ以外の符号を付すものは、前記図７で同じ符号のものと同じ機能を有しこれの説明は割愛する。
【００５９】
そして、該図８中に示すｈからｎにて説明する。
ｈ：前記ＭＰＵＢ２は、処理の始めに前記バンクＢポインタ３３をリードする。
ｉ：前記ＭＰＵＢ２は、前記バンクＢ０からバンクＢ（ｎ−１）のうち、
前記バンクＢポインタ３３が示すＮＯ．のバンクＢに
処理の進捗に応じて逐次、
前記ＭＰＵＡ１へ送る複数のデータをライトする。
ｊ：前記ＭＰＵＢ２は、処理の終わりに前記バンクＢポインタ３３の値を
１だけ加算する。ただし加算の結果、値がｎ以上となったら
０を前記バンクＢポインタ３３にライトする。
ｋ：前記ＭＰＵＡ１は、処理の始めに前記バンクＢポインタ３３をリードする。
ｍ：前記ＭＰＵＡ１は、前記バンクＢ０からバンクＢ（ｎ−１）のうち、
前記バンクＢポインタ３３が１から（ｎ−１）のときは
１だけ減算したＮＯ．のバンクＢから、
前記バンクＢポインタ３３が０のときはバンクＢ（ｎ−１）から、
処理の始めに一括して、全てのデータをリードする。
ｎ：前記ＭＰＵＡ１は、上記のｍで一括してリードした全てのデータを、
前記テンポラリメモリＡ１６にセーブし、
処理の進捗に応じて逐次、前記ＭＰＵＢ２からのデータを
前記テンポラリメモリＡ１６からリードする。
ここで前記ＭＰＵＢ２とＭＰＵＡ１は、相互に非同期にてそれぞれの処理を実行するものである。また前記のｊで、前記バンクＢポインタ３３の値を１だけ加算によるロータリーアップカウンタとしたが、これに換えて１だけ減算としてロータリーダウンカウンタとしてもよい。
【００６０】
かようにして、前記ＭＰＵＢ２が複数のデータを前記ＤＰＭ３経由にて前記ＭＰＵＡ１に送るとき、前記バンクＢポインタ３３に基づき、前記ＭＰＵＢ２がライトする前記バンクＢと、前記ＭＰＵＡ１がリードする前記バンクＢは必ず異なるので、前記ＤＰＭ３において競合状態は発生することがなく、これにより前記ＭＰＵＢ２およびＭＰＵＡ１がウェィティング状態に陥ることがない。
また、前記ＭＰＵＡ１は必ず、前記ＭＰＵＢ２がライトを完了したバンクＢからデータをリードするので、複数のデータの同時性が確保される。
さらに該図８に示したとおり、前記ＭＰＵＢ２とＭＰＵＡ１間にはハードウェアによる接続はなく、これによりビジー信号によるマイクロプロセッサのウェィティングのタイミング設計が不要となるものである。
【００６１】
本発明の実施例２について、前記図７により前記ＭＰＵＡ１から前記ＭＰＵＢ２へ、また前記図８により前記ＭＰＵＢ２から前記ＭＰＵＡ１へデータを送るための構成と手順について説明を行った。この両者は類似の動作であるが、代表して前記図７について各状態の時間的遷移を図９、図１０、および図１１に示し、さらに本発明の実施例２について説明を行う。
【００６２】
始めに図９について説明を行うが、該図９は実施例１の図３に対応している。さて該図９において（ａ）および（ｂ）は、それぞれ前記図７のＭＰＵＡ１が実行する処理、およびバンクＡポインタ３１の値の時間的推移を表している。そして、前記ＭＰＵＡ１は該図９の（ａ）に示すとおり、所定の周期にて処理Ａ１、処理Ａ２、処理Ａ３、および処理Ａ４と順次実行し、前記図１３の（ａ）にて示したウェィティング時間はないものである。また図中の時刻ＴＡ１、ＴＡ２、ＴＡ３、およびＴＡ４は、処理Ａ１からＡ４がそれぞれ終了する時刻を表している。
【００６３】
次に前記図７において、前記バンクＡメモリ３２はｎ個のバンクにより構成されるものであるが、該図９ではｎが４の場合で示している。そして、該図９の（ｂ）バンクＡポインタ３１は前記時刻ＴＡ１まではバンクＡ２を指定しており、該図９の（ａ）においてＭＰＵＡ１は、処理Ａ１の進捗に応じて逐次、データを前記バンクＡ２にライトする。そして処理Ａ１の終わりの時刻ＴＡ１にて、該図９の（ｂ）バンクＡポインタ３１を１だけ加算して３とする。続いて該図９の（ｂ）バンクＡポインタ３１は、時刻ＴＡ２、ＴＡ３、ＴＡ４において、それぞれ０、１、２と遷移する。
【００６４】
次に該図９の（ｃ）および（ｄ）は、それぞれ前記図７のＭＰＵＢ２が実行する処理、および該ＭＰＵＢ２がアクセス（リード）するバンクＡの時間的推移を表している。そして前記ＭＰＵＢ２は該図９の（ｃ）に示すとおり、所定の周期にて処理Ｂ１、処理Ｂ２、処理Ｂ３、および処理Ｂ４と順次実行し、前記図１３の（ｃ）にて示したウェィティング時間はないものである。また図中の時刻ＴＢ１、ＴＢ２、ＴＢ３、およびＴＢ４は、それぞれ処理Ｂ１からＢ４が開始する時刻を表している。
【００６５】
次に該図９の（ｄ）は、前記ＭＰＵＢ２がリードするバンクＡの遷移を示すが、どのバンクＡからリードするかは処理の開始のときに決定する。これをさらに該図９の（ｃ）、（ｄ）にて説明すると、前記ＭＰＵＢ２は処理Ｂ１を開始するとき前記バンクＡポインタ３１の値３をリードし、これを１だけ減じた２、すなわちバンクＡ２からリードとし、処理Ｂ１の始めにバンクＡ２の全てのデータを一括してリードし、前記テンポラリメモリ２６に全てセーブする。そして前記ＭＰＵＢ２は処理Ｂ１の進捗に応じて逐次、前記テンポラリメモリ２６から前記ＭＰＵＡ１のデータをリードする。
【００６６】
同様に前記ＭＰＵＢ２は、時刻ＴＢ２、ＴＢ３、およびＴＢ４において、処理Ｂ２、Ｂ３、およびＢ４にて一括してリードするバンクＡをそれぞれバンクＡ３，バンクＡ０，およびバンクＡ０とし、前記テンポラリメモリ２６にセーブする。ここで該図９の（ｃ）の各処理において網掛け部分は、前記ＭＰＵＢ２が一括してバンクＡからリードし前記テンポラリメモリ２６にセーブする時間を模擬的に表し短い時間である。すなわち本発明の実施例２では、前記ＭＰＵＢ２がバンクＡを使用する時間を短くするものである。
【００６７】
ここで該図３の（ｂ）と（ｄ）を対比すると、前記ＭＰＵＡ１がライトするバンクＡと前記ＭＰＵＢ２がリードするバンクＡは必ず相違している。これにより、前記ＤＰＭ３において前記ＭＰＵＡ１と前記ＭＰＵＢ２による競合状態が発生することがなく、前記ＭＰＵＡ１およびＭＰＵＢ２がともにウェィティング状態に陥ることがない。
また前記ＭＰＵＢ２は必ず、前記ＭＰＵＡ１がライトを完了したバンクＡからデータをリードするので、複数のデータの同時性が確保される。
さらに前記バンクＡポインタ３１にてソフトウェアによる調停を行うので、前記ＭＰＵＡ１とＭＰＵＢ２間にハードウェアによる接続と調停を不要とするものである。
【００６８】
ここで該図９は、前記ＭＰＵＡ１とＭＰＵＢ２が非同期で動作し、両者の処理時間が概ね等しい場合を想定している。また該図９の（ｄ）の時刻ＴＢ４に続く網掛けは、前記ＭＰＵＢ２がリードするバンクＡ０が、前の時刻ＴＢ３から継続していることを示している。
【００６９】
前記図９にて前記図７における各状態の時間的推移を説明した。続いて図１０にて説明を行うが、該図１０は実施例１の図４に対応している。さて該図１０の（ａ）、（ｂ）、（ｃ）、および（ｄ）は前記図９のそれと同じ項目の時間的推移を表し、また該図１０に符号を付すものは、前記図９に同じ符号を付すものと同じ機能や役割を有するものでその説明は割愛する。
【００７０】
そして前記図９との相違は、該図１０の（ａ）に示す前記ＭＰＵＡ１の処理時間が、該図１０の（ｃ）に示す前記ＭＰＵＢ２の処理時間より長い場合の時間的推移を示している。このとき該図１０の（ｂ）と（ｄ）を対比すると、前記ＭＰＵＡ１がライトするバンクＡと前記ＭＰＵＢ２がリードするバンクＡは必ず相違している。これにより、前記ＤＰＭ３において前記ＭＰＵＡ１と前記ＭＰＵＢ２による競合状態が発生することがなく、本発明の目的を達成することとなる。
ここで該図１０の（ｄ）の網掛けは、前記ＭＰＵＢ２がリードするバンクＡが、一周期前の処理から継続していることを表している。
【００７１】
さらに、前記図７における各状態の時間的推移を、前記図９および図１０に続いて図１１にて説明を行うが、該図１１は実施例１の図５に対応している。さて該図１１の（ａ）、（ｂ）、（ｃ）、および（ｄ）は前記図９のそれと同じ項目の時間的推移を表し、また該図１１に符号を付すもので、前記図９にて同じ符号を付すものはこれと同じ機能や役割を有しその説明は割愛する。
【００７２】
そして前記図９、図１０と該図１１の相違は、該図１１の（ａ）に示す前記ＭＰＵＡ１の処理時間が、該図９の（ｃ）に示す前記ＭＰＵＢ２の処理時間より短い場合の時間的推移を示している。
【００７３】
ここで該図１１の（ｂ）と（ｄ）を対比すると、前記ＭＰＵＡ１がライトするバンクＡと前記ＭＰＵＢ２がリードするバンクＡは常に必ず相違しており、前記図５にて問題となった時刻ＴＡ８からＴＢ４においてもバンクＡは相違している。
ここで前記ＴＡ８は、前記図１１の（ａ）で処理Ａ８が終了する時刻である。また、該図１１の（ｂ）において網掛けで示すバンクＡは、前記ＭＰＤＵＡ１がバンクＡにライトしても、前記ＭＰＤＵＢ２がリードしないバンクＡを表している。
【００７４】
かように本発明の実施例２では、２つのマイクロプロセッサにそれぞれテンポラリメモリを設けることにより、２つのマイクロプロセッサがデータの授受を行うとき、デュアルポートメモリにおいて確実に競合状態が発生することを解消するものである。
また、１つのマイクロプロセッサは必ず、他のマイクロプロセッサがライトを完了したデュアルポートメモリからデータをリードするので、複数のデータの同時性が確保される。
さらに、２つのマイクロプロセッサ間には割り込み信号やビジー信号などの接続がなく、よりシンプルなハードウェアを実現するものである。
【産業上の利用可能性】
【００７５】
産業用の製造装置に使用されるインバータ、ＰＬＣ、およびその他制御機器には、複数のマイクロプロセッサが組み込まれ、それぞれに適した処理を分担して実行している。そして、各マイクロプロセッサ間ではデータの授受が重要であるが、本発明のバンク方式のデュアルポートメモリを使用することにより、簡単で確実なデータの授受を実現する。
これにより、マイクロプロセッサシステムのハードウェアのみならず、相互に干渉しない複数のマイクロプロセッサのソフトウェアの組み込みを実現するものである。
【符号の説明】
【００７６】
１  ＭＰＵＡ
２  ＭＰＵＢ    １１、２１  コントロールバス
１２、２２  アドレスバス
１３、２３  データバス
１４、２４  ビジー信号
１５  同期信号
１６  テンポラリメモリＡ
２６  テンポラリメモリＢ
３  ＤＰＭ、またはデュアルポートメモリ    
３１  バンクＡポインタ
３２  バンクＡメモリ
３３  バンクＢポインタ
３４  バンクＢメモリ
【図１】
2019008575.tif 000004
【図２】
2019008575.tif 000005
【図３】
2019008575.tif 000006
【図４】
2019008575.tif 000007
【図５】
2019008575.tif 000008
【図６】
2019008575.tif 000009
【図７】
2019008575.tif 000010
【図８】
2019008575.tif 000011
【図９】
2019008575.tif 000012
【図１０】
2019008575.tif 000013
【図１１】
2019008575.tif 000014
【図１２】
2019008575.tif 000015
【図１３】
2019008575.tif 000016
【図１４】
2019008575.tif 000017