特許第6885801号(P6885801)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東洋電機製造株式会社の特許一覧

<>
  • 特許6885801-バンク方式のデュアルポートメモリ 図000003
  • 特許6885801-バンク方式のデュアルポートメモリ 図000004
  • 特許6885801-バンク方式のデュアルポートメモリ 図000005
  • 特許6885801-バンク方式のデュアルポートメモリ 図000006
  • 特許6885801-バンク方式のデュアルポートメモリ 図000007
  • 特許6885801-バンク方式のデュアルポートメモリ 図000008
  • 特許6885801-バンク方式のデュアルポートメモリ 図000009
  • 特許6885801-バンク方式のデュアルポートメモリ 図000010
  • 特許6885801-バンク方式のデュアルポートメモリ 図000011
  • 特許6885801-バンク方式のデュアルポートメモリ 図000012
  • 特許6885801-バンク方式のデュアルポートメモリ 図000013
  • 特許6885801-バンク方式のデュアルポートメモリ 図000014
  • 特許6885801-バンク方式のデュアルポートメモリ 図000015
  • 特許6885801-バンク方式のデュアルポートメモリ 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6885801
(24)【登録日】2021年5月17日
(45)【発行日】2021年6月16日
(54)【発明の名称】バンク方式のデュアルポートメモリ
(51)【国際特許分類】
   G06F 12/00 20060101AFI20210603BHJP
   G06F 15/167 20060101ALI20210603BHJP
【FI】
   G06F12/00 570C
   G06F15/167 610B
【請求項の数】2
【全頁数】19
(21)【出願番号】特願2017-124033(P2017-124033)
(22)【出願日】2017年6月26日
(65)【公開番号】特開2019-8575(P2019-8575A)
(43)【公開日】2019年1月17日
【審査請求日】2020年3月12日
(73)【特許権者】
【識別番号】000003115
【氏名又は名称】東洋電機製造株式会社
(72)【発明者】
【氏名】小谷 郁雄
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開昭60−129865(JP,A)
【文献】 特開平2−32432(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 15/167
(57)【特許請求の範囲】
【請求項1】
2つのマイクロプロセッサMPUA1およびMPUB2と、デュアルポートメモリにて構成されるマイクロプロセッサシステムにおいて、該MPUA1とMPUB2は該デュアルポートメモリを経由して複数のデータの授受を行うものであって、
前記デュアルポートメモリ内に、バンクAポインタ、バンクAメモリ、バンクBポインタ、およびバンクBメモリを設け、前記MPUA1は該バンクAポインタとバンクAメモリを用いて複数のデータを前記MPUB2に送り、前記MPUB2は該バンクBポインタとバンクBメモリを用いて複数のデータを前記MPUA1に送る機能を有し、
前記バンクAメモリは、連続した複数のアドレスのメモリ領域を1つのバンクとして、バンクA0からバンクA(n−1)とn個の該バンクにて構成され、
前記バンクAポインタは、前記MPUA1にて0から(n−1)の値を設定されて前記n個のバンクのうち1つのバンクを指定するものであり、
前記MPUA1は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクAメモリ経由にて前記MPUB2に送るために、前記バンクAポインタが指定するバンクに複数のデータをライトする。そして、前記MPUA1はライトが終了した後、前記バンクAポインタの値を0から(n−1)の範囲で1だけ更新する。
そして前記MPUB2は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクAメモリ経由にて前記MPUA1から受け取るとき、前記バンクAポインタが指定するバンクから1だけ前のバンクから複数のデータを処理の進捗に応じて逐次リードする。
次に前記バンクBメモリは、連続した複数のアドレスのメモリ領域を1つのバンクとして、バンクB0からバンクB(n−1)とn個の該バンクにて構成され、
前記バンクBポインタは、前記MPUB2にて0から(n−1)の値を設定されて前記n個のバンクのうち1つのバンクを指定するものであり、
前記MPUB2は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクBメモリ経由にて前記MPUA1に送るために、前記バンクBポインタが指定するバンクに複数のデータをライトする。そして、前記MPUB2はライトが終了した後、前記バンクBポインタの値を0から(n−1)の範囲で1だけ更新する。
そして前記MPUA1は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクBメモリ経由にて前記MPUB2から受け取るとき、前記バンクBポインタが指定するバンクから1だけ前のバンクから複数のデータを処理の進捗に応じて逐次リードすることを特徴とするバンク方式のデュアルポートメモリ。
【請求項2】
請求項1において、
前記MPUA1およびMPUB2はそれぞれ、テンポラリメモリAおよびテンポラリメモリBを備え、
前記MPUB2は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクAメモリ経由にて前記MPUA1から受け取るとき、前記バンクAポインタが指定するバンクから1だけ前のバンクから複数のデータを連続してリードし、前記テンポラリメモリBに一括にてセーブしたあと、処理の進捗に応じて逐次、前記テンポラリメモリBからデータをリードし、
前記MPUA1は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクBメモリ経由にて前記MPUB2から受け取るとき、前記バンクBポインタが指定するバンクから1だけ前のバンクから複数のデータを連続してリードし、前記テンポラリメモリAに一括してセーブしたあと、処理の進捗に応じて逐次、前記テンポラリメモリAからデータをリードすることを特徴とするバンク方式のデュアルポートメモリ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2つのマイクロプロセッサとデュアルポートメモリにて構成されるコンピュータシステムにおいて、該デュアルポートメモリにより前記2つのマイクロプロセッサ間のデータの授受を行う方法に関するものである。
【背景技術】
【0002】
マイクロプロセッサは産業用制御機器において広く使用され、多くの製品の生産を担っている。そして、ますます複雑で高度化する機能のために、複数のマイクロプロセッサが用いられ分散して処理を行っている。
【0003】
例を挙げれば、PLC(Programmable Logic Controller)装置においては、ラダープログラムの実行、信号の入出力の処理や位置決め制御などに、それぞれの処理に適したマイクロプロセッサを用いることが広く行われている。また、モータを駆動するインバータ装置においては、モータのインバータ駆動にはこれに適した制御用マイクロプロセッサを使用し、例えば他の統括監視装置とのデータ送受信のためには通信用マイクロプロセッサが使用されている。ここで以下に、マイクロプロセッサをMPUとも表記する。
【0004】
そして、MPU間のデータの授受には、デュアルポートメモリ(以下に、デュアルポートメモリをDPMとも表記する)が使用されることが多く、図12に通常に実施されているMPUとDPMの使用例を示しこれについて説明を行う。
【0005】
図12において、1と2はマイクロプロセッサであるMPUAおよびMPUBであり、3はデュアルポートメモリであるDPMである。前記MPUA1とMPUB2は該DPM3を介して複数のデータの授受を行うもので、前記MPUA1とDPM3はコントロールバス11、アドレスバス12、データバス13、およびビジー信号14にて接続され、同様に前記MPUB2とDPM3はコントロールバス21、アドレスバス22、データバス23、およびビジー信号24にて接続されている、そして、前記コントロールバス11および21にはリード信号やライト信号が含まれている。
【0006】
同じく図12において前記DPM3は、前記アドレスバス12と22が異なるアドレスを示していれば、前記MPUA1とMPUB2から同時にリードまたはライトのアクセスが可能であるが、同時に同じアドレスを示している(これを競合状態と表記する)とき前記DPM3は内蔵する調停の機能より調停を行って、例えばアクセスを許可する前記MPUA1への前記ビジー信号14はノンアクティブとし、アクセスを許可しない例えば前記MPUB2への前記ビジー信号24をアクティブとする。これにより、前記MPUA1は前記DPM3にアクセスが可能となるが、前記MPUB2は、アドレスの競合状態が無くなって前記ビジー信号24がノンアクティブになるまでウェイティング状態となる。
ここで、前記図12において同期信号15は、前記MPUA1とMPUB2のプログラム実行の同期を図るもので、これの説明はさらにあとで行う。
【0007】
かようなデュアルポートメモリの使用方法については従来から多くの発明が実施され、例えば特許文献1では、デュアルポートメモリが内蔵する調停機能を使用せず、2つのマイクロプロセッサ間にハードウェアによるフラグAおよびフラグBの接続を設け、ソフトウェアにより調停を行う発明が開示されている。デュアルポートメモリを使用するときは、競合状態における処理を確実に行うことが重要であり、該特許文献1はこれに着目したものと考えられる。
【0008】
また特許文献2では、2つのマイクロプロセッサがデユアルポートメモリを経由して多量のデータの受け渡しを行おうとすると、デユアルポートメモリにデータの受け渡し処理のみで時間を費やしてしまい、主要な機能および性能に関する処理時間がなくなってしまう課題を挙げている。そしてこれの解決のために、2つのマイクロプロセッサ間にハードウェアによる割り込み信号の接続を設けて、同期アクセスと非同期アクセスにより課題を解消する発明が開示されている。
【0009】
次に特許文献3では、2つのマイクロプロセッサ間のデータの書き込みおよび読み出しにおいて、データの同時性を保証しデータ転送の高速性を確保する課題を挙げている。そしてこれの解決のために、2つのマイクロプロセッサ間にハードウェアによる書き込みエリア選択信号生成回路を設けることにより、課題を解消する発明が開示されている。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平5−250250号公報
【特許文献2】特開2000−242610号公報
【特許文献3】特開2007−328647号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明の解決しようとする課題は、2つのMPUがDPMを経由して複数のデータの授受を行うとき、競合状態が発生してMPUの処理時間が長くなることがなきようにすること、データの同時性を確保すること、および種類が異なるDPMであっても新たなハードウェアの追加を不要とすることにある。次にこれらの課題の内容について、前記図12を参照しつつ図13および図14にてさらに詳細に説明を行う。
【0012】
始めに図13は前記図12の従来のDPMの使用例について、同期式の動作を説明するものであり、該図13の(a)、(b)、および(c)はそれぞれ前記MPUA1の処理、前記同期信号15、およびMPUB2の処理を時間の推移とともに表している。
そして該図13の(a)は、前記MPUA1が周期taにて時刻Ta1、Ta2、Ta3、およびTa4にて、順次a1、a2、a3、a4の処理を実行するとしている。そして処理a1において白抜きで示すta11は、前記MPUA1がMPUB2と競合状態に陥ることなく所定のジョブを実行するジョブ時間を表しており、網掛けで示すta13は前記MPUA1がMPUB2と競合状態が発生してウェイティングにより待機となったウェイティング時間の合計を表している。また図中のta12は余裕時間であり、前記ウェイティング時間ta13は該余裕時間ta12より短い必要がある。
【0013】
ここで前記処理a1にて説明を付加すると、MPUA1のウェイティングは前記時間(ta11+ta13)の全域において発生し得るものであり、該ウェィティングの発生により処理時間が長くなることを前記ta13に合計して表していることに注意が必要である。
そして、前記処理a2、a3、およびa4においても網掛け部分は、それぞれのウェイティング時間の合計を表している。
【0014】
次に前記図12の同期信号15は、該図13の(b)に示すとおり前記MPUA1が処理を開始するときに出力するフラグである。そして前記図13の(c)に示すように、前記MPUB2は該同期信号15に同期して、順次b1、b2、b3、b4の処理を実行する。ここで処理b1からb4において、白抜きの部分と網掛けの部分は前記MPUB2のそれぞれジョブ時間とウェイティング時間の合計である。
【0015】
図13により上記で説明したとおり、前記MPUA1とMPUB2が前記DPM3を経由してデータの授受を行うときウェィティング時間が発生する。そして具体例を挙げれば、前記MPUA1はモータを駆動するインバータ装置を制御し、前記MPUB2はPROFIBUSなどの通信を制御するとき、前記MPUB2の動作により前記MPUA1のウェィティング時間、すなわち処理時間の長さが左右されることとなる。しかし前記MPUA1はインバータのパワー素子などの制御を行うもので、処理時間の長さが変更されるなど予期しない他からの影響は排除すべきである。
これにより本発明の第1の課題は、MPUにウェィティング時間が発生しないよう、DPMによる競合状態をなくすことである。
【0016】
次に本発明の第2の課題をふたたび前記図13にて説明する。前記MPUB2がMPUA1からデータを受け取るとき、該図13の(a)の処理a2と図13の(c)の処理b2のタイミングにて説明すると、前記MPUA1は処理a2において前記DPM3に全てのデータを時刻Ta2Eにてライトを完了する。これを換言すれば、時刻Ta2から時刻Ta2Eまでに前記MPUA1が前記DPM3にライトしたデータは、前記処理a1と処理a2によるものが混在することになる。
【0017】
したがって前記MPUB2は、処理b2において前記処理a1とa2による混在したデータをリードすることとなる。これは前記MPUB2が、例えば同一時刻のインバータの電流、電圧やトルク指令を受け取ろうとするときに同時性がなくなり障害となるものである。また、複数のデータにて1つの物理量とするときにも、前記処理a1とa2の処理によるデータが混在し支障が発生する。これにより本発明の第2の課題は、複数のデータについて同時性を確保することである。
【0018】
次に本発明の第3の課題は、前記図12におけるビジー信号14,15、および同期信号15のハードウェアによる接続をなくすことである。これによりビジー信号によるマイクロプロセッサのウェィティングのタイミング設計が不要となるとともに、どのようDPMの供給メーカや種類であっても同じようにデュアルポートメモリが使用可能となり、シンプルなDPMシステムを実現することができる。
【0019】
次に図14は、従来のDPMの使用例で非同期式の動作を説明するもので、前記図12において同期信号15を用いない場合である。該図14の(a)および(c)はそれぞれ前記MPUA1の処理、および前記MPUB2の処理を時間の推移とともに表している。そして、該図14の(a)MPUA1の処理に示すa1からa4、ta11、およびta13は、前記図13の(a)にて同じ符号を付すものと同じでありその説明は割愛する。また、該図14の(c)MPUB2の処理に示すb1からb4、tb11、およびtb13は、前記図13の(c)にて同じ符号を付すものと同じでありその説明は割愛する。
図14で表すとおり前記MPDUA1とMPDUB2は、同期せずそれぞれの周期で処理を繰り返す。
【0020】
また、該図14のa1からa4、およびb1からb4において、白抜きで示す部分はジョブ時間を網掛けで示す部分はウェィティング時間の合計を表している。そして該図14においてもウェィティングが発生しているが、非同期式の場合でも本発明の第1の課題は、MPUにウェィティング時間が発生しないようDPMによる競合状態をなくすことである。
【0021】
次に該図14におけるデータの同時性について、前記MPUA1がMPUB2からデータを受け取る場合について説明する。始めに処理b2とa2において時刻T1は前記処理b2が終了する時刻であり、時刻T2は前記処理b3が開始する時刻である。そして前記処理a2にて、前記MPUA1がDPM3を経由してMPUB2から受け取るデータの内容をまとめると表1のとおりとなり、最悪のとき処理b1からb3のデータを混在して受け取ることとなる。これゆえ、非同期式の場合でも本発明の第2の課題は、複数のデータについて同時性を確保することである。
(表1)
【0022】
また、非同期式の前記図14においても第3の課題は、ビジー信号14および15のハードウェアによる接続をなくすことである。
【課題を解決するための手段】
【0023】
上記課題を本発明においては、次のように解決する。
(1)2つのマイクロプロセッサMPUA1およびMPUB2と、デュアルポートメモリにて構成されるマイクロプロセッサシステムにおいて、該MPUA1とMPUB2は該デュアルポートメモリを経由して複数のデータの授受を行うものである。
そして、前記デュアルポートメモリ内に、バンクAポインタ、バンクAメモリ、バンクBポインタ、およびバンクBメモリを設け、前記MPUA1は該バンクAポインタとバンクAメモリを用いて複数のデータを前記MPUB2に送り、前記MPUB2は該バンクBポインタとバンクBメモリを用いて複数のデータを前記MPUA1に送る機能を有している。
ここで前記バンクAメモリは、連続した複数のアドレスのメモリ領域を1つのバンクとして、バンクA0からバンクA(n−1)とn個の該バンクにて構成され、前記バンクAポインタは、前記MPUA1にて0から(n−1)の値を設定されて前記n個のバンクのうち1つのバンクを指定するものである。
そして前記MPUA1は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクAメモリ経由にて前記MPUB2に送るために、前記バンクAポインタが指定するバンクに複数のデータをライトする。次に、前記MPUA1はライトが終了した後、前記バンクAポインタの値を0から(n−1)の範囲で1だけ更新する。
また前記MPUB2は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクAメモリ経由にて前記MPUA1から受け取るとき、前記バンクAポインタが指定するバンクから1だけ前のバンクから複数のデータを処理の進捗に応じて逐次リードする。
一方前記バンクBメモリは、連続した複数のアドレスのメモリ領域を1つのバンクとして、バンクB0からバンクB(n−1)とn個の該バンクにて構成され、前記バンクBポインタは、前記MPUB2にて0から(n−1)の値を設定されて前記n個のバンクのうち1つのバンクを指定するものである。
そして前記MPUB2は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクBメモリ経由にて前記MPUA1に送るために、前記バンクBポインタが指定するバンクに複数のデータをライトする。次に、前記MPUB2はライトが終了した後、前記バンクBポインタの値を0から(n−1)の範囲で1だけ更新する。
また前記MPUA1は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクBメモリ経由にて前記MPUB2から受け取るとき、前記バンクBポインタが指定するバンクから1だけ前のバンクから複数のデータを処理の進捗に応じて逐次リードすることを特徴とするバンク方式のデュアルポートメモリである。
【0024】
(2)上記(1)において、前記MPUA1およびMPUB2はそれぞれ、テンポラリメモリAおよびテンポラリメモリBを備えている。
前記MPUB2は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクAメモリ経由にて前記MPUA1から受け取るとき、前記バンクAポインタが指定するバンクから1だけ前のバンクから複数のデータを連続してリードし、前記テンポラリメモリBに一括にてセーブしたあと、処理の進捗に応じて逐次、前記テンポラリメモリBからデータをリードする。
また前記MPUA1は、1回の処理ごとに複数のデータを前記デュアルポートメモリのバンクBメモリ経由にて前記MPUB2から受け取るとき、前記バンクBポインタが指定するバンクから1だけ前のバンクから複数のデータを連続してリードし、前記テンポラリメモリAに一括してセーブしたあと、処理の進捗に応じて逐次、前記テンポラリメモリAからデータをリードすることを特徴とするバンク方式のデュアルポートメモリである。
【発明の効果】
【0025】
以上で説明したとおり、2つのマイクロプロセッサがデュアルポートメモリを経由して複数のデータを授受するとき、デュアルポートメモリの競合状態を解消してマイクロプロセッサはウェィティング状態に陥ることなく安定に動作することとなり、マイクロプロセッサによる制御の信頼性を向上させるものである。
また、2つのマイクロプロセッサが相互に授受するデータの同時性を保証し、正確なデータによる制御の実行や各種データのトレースを可能とする。
そして、マイクロプロセッサとデュアルポートメモリ間の信号の接続本数を最小限なものとし、供給メーカや種類に依存することなく、さまざまなデュアルポートメモリをマイクロプロセッサと最小限の接続にて使用可能とするものである。
【図面の簡単な説明】
【0026】
図1】本発明によるバンク方式のDPMの実施例1の構成を説明する図(その1)である。
図2】本発明によるバンク方式のDPMの実施例1の構成を説明する図(その2)である。
図3】実施例1のデータ転送を説明する図(その1)である。
図4】実施例1のデータ転送を説明する図(その2)である。
図5】実施例1のデータ転送を説明する図(その3)である。
図6】実施例1のデータ転送を説明する図(その4)である。
図7】本発明によるバンク方式のDPMの実施例2の構成を説明する図(その1)である。
図8】本発明によるバンク方式のDPMの実施例2の構成を説明する図(その2)である。
図9】実施例2のデータ転送を説明する図(その1)である。
図10】実施例2のデータ転送を説明する図(その2)である。
図11】実施例2のデータ転送を説明する図(その3)である。
図12】従来のDPMの使用例を説明する図である。
図13】従来のDPMの動作を説明する図(同期式)である。
図14】従来のDPMの動作を説明する図(非同期式)である。
【発明を実施するための形態】
【0027】
以下に本発明を実施例の図を示して説明を行う。図1は本発明の実施例1を示し、図2図3図4図5、および図6は該図1の動作を補足して説明し、図7は本発明の実施例2を示し、図8図9図10、および図11は該図7の動作を補足して説明するものである。
【実施例1】
【0028】
図1は、本発明によるバンク方式のデュアルポートメモリの実施例1の構成を説明する図である。該図1において、MPUA1、コントロールバス11、アドレスバス12、データバス13、およびMPUB2、コントロールバス21、アドレスバス22、データバス23は、前記図12で同じ符号を付すものと同じ機能を有しておりこれの説明は割愛する。またDPM3は、前記図12のDPM3と同じデユアルポートメモリの機能を持っているが、本発明は該DPM3の内部構成に特徴を有するものである。
【0029】
図1のDPM3において、31、32はそれぞれバンクAポインタ、バンクAメモリであり、これらは前記MPUA1から前記MPUB2へデータを送るためのものである。そして該バンクAメモリ32は、連続した複数のアドレスのメモリ領域を1つのバンクとして、バンクA0、バンクA1からバンクA(n−1)とn個のバンクにて構成されている。ここでバンクA0からバンクA(n−1)のそれぞれを総称してバンクAと表記する。
【0030】
また説明を容易とするために数値例にて示せば、前記DPM3の物理的なデータサイズが1ワードのとき、前記バンクAポインタ31のサイズは1ワードであり、バンクA0からバンクA(n−1)のそれぞれのバンクAのサイズは連続したアドレスの40ワードなどである。このとき前記バンクAメモリ32のサイズは、(40×n)ワードとなる。
そして、前記バンクAポインタ31、バンクAメモリ32、およびバンクA0からバンクA(n−1)は、前記DPM3内にメモリマッピングしたものである。
【0031】
次に前記MPUA1が、複数のデータを前記DPM3経由にて前記MPUB2へ送る手順を、該図1中に示すaからeにて説明する。
a:前記MPUA1は、処理の始めに前記バンクAポインタ31をリードする。
b:前記MPUA1は、前記バンクA0からバンクA(n−1)のうち、
前記バンクAポインタ31が示すNO.のバンクAに
処理の進捗に応じて逐次、
前記MPUB2へ送る複数のデータをライトする。
c:前記MPUA1は、処理の終わりに前記バンクAポインタ31の値を
1だけ加算する。ただし加算の結果、値がn以上となったら
0を前記バンクAポインタ31にライトする。

d:前記MPUB2は、処理の始めに前記バンクAポインタ31をリードする。
e:前記MPUB2は、前記バンクA0からバンクA(n−1)のうち、
前記バンクAポインタ31が1から(n−1)のときは
1だけ減算したNO.のバンクAから、
前記バンクAポインタ31が0のときはバンクA(n−1)から、
処理の進捗に応じて逐次、複数のデータをリードする。

ここで前記MPUA1とMPUB2は、相互に非同期にてそれぞれの処理を実行するものである。また前記のcで、前記バンクAポインタ31の値を1だけ加算によるロータリーアップカウンタとしたが、これに換えて1だけ減算としてロータリーダウンカウンタとしてもよい。
【0032】
かようにして、前記MPUA1が複数のデータを前記DPM3経由にて前記MPUB2に送るとき、前記バンクAポインタ31に基づき、前記MPUA1がライトする前記バンクAと、前記MPUB2がリードする前記バンクAは必ず異なるので、前記DPM3において競合状態が発生することがなく、これにより前記MPUA1およびMPUB2がウェィティング状態に陥ることがない。
また、前記MPUB2は必ず、前記MPUA1がライトを完了したバンクAからデータをリードするので、複数のデータの同時性が確保される。
さらに前記図1に示したとおり、前記MPUA1とMPUB2間にはハードウェアによる接続はなく、これによりビジー信号によるマイクロプロセッサのウェィティングのタイミング設計が不要となるものである。
【0033】
次に、前記MPUB2から前記MPUA1へデータを送るための構成と手順について説明を行う。前記図1のDPM3において、33、34はそれぞれバンクBポインタ、バンクBメモリであり、これらは前記MPUB2から前記MPUA1へデータを送るためのものである。そして該バンクBメモリ34は、連続した複数のアドレスのメモリ領域を1つのバンクとして、バンクB0、バンクB1からバンクB(n−1)とn個のバンクにて構成されている。ここでバンクB0からバンクB(n−1)のそれぞれを総称してバンクBと表記する。
【0034】
また説明を容易とするために数値例にて示せば、前記DPM3の物理的なデータサイズが1ワードのとき、前記バンクBポインタ33のサイズは1ワードであり、バンクB0からバンクB(n−1)のそれぞれのバンクBのサイズは連続したアドレスの40ワードなどである。このとき前記バンクBメモリ34のサイズは、(40×n)ワードとなる。
そして、前記バンクBポインタ33、バンクBメモリ34、およびバンクB0からバンクB(n−1)は、前記DPM3内にメモリマッピングしたものである。
【0035】
次に図2にて、前記MPUB2が複数のデータを前記DPM3経由にて、前記MPUA1へ送る手順を説明する。該図2においてf、g、およびhは前記MPUB2がデータを前記DPM3にライトする手順を、iおよびjは前記MPUA1がデータを前記DPM3からリードする手順を示すものである。そして、該fからj以外の符号を付すものは、前記図1で同じ符号のものと同じ機能を有しこれの説明は割愛する。
【0036】
次に、該図2中に示すfからjにて説明する。
f:前記MPUB2は、処理の始めに前記バンクBポインタ33をリードする。
g:前記MPUB2は、前記バンクB0からバンクB(n−1)のうち、
前記バンクBポインタ33が示すNO.のバンクBに
処理の進捗に応じて逐次、
前記MPUA1へ送る複数のデータをライトする。
h:前記MPUB2は、処理の終わりに前記バンクBポインタ33の値を
1だけ加算する。ただし加算の結果、値がn以上となったら
0を前記バンクBポインタ33にライトする。

i:前記MPUA1は、処理の始めに前記バンクBポインタ33をリードする。
j:前記MPUA1は、前記バンクB0からバンクB(n−1)のうち、
前記バンクBポインタ33が1から(n−1)のときは
1だけ減算したNO.のバンクBから、
前記バンクBポインタ33が0のときはバンクB(n−1)から、
処理の進捗に応じて逐次、複数のデータをリードする。

ここで前記MPUB2とMPUA1は、相互に非同期にてそれぞれの処理を実行するものである。また前記のhで、前記バンクBポインタ33の値を1だけ加算によるロータリーアップカウンタとしたが、これに換えて1だけ減算としてロータリーダウンカウンタとしてもよい。
【0037】
かようにして、前記MPUB2が複数のデータを前記DPM3経由にて前記MPUA1に送るとき、前記バンクBポインタ33に基づき、前記MPUB2がライトする前記バンクBと、前記MPUA1がリードする前記バンクBは必ず異なるので、前記DPM3において競合状態は発生することがなく、これにより前記MPUB2およびMPUA1がウェィティング状態に陥ることがない。
また、前記MPUA1は必ず、前記MPUB2がライトを完了したバンクBからデータをリードするので、複数のデータの同時性が確保される。
さらに前記図2に示したとおり、前記MPUB2とMPUA1間にはハードウェアによる接続はなく、これによりビジー信号によるマイクロプロセッサのウェィティングのタイミング設計が不要となるものである。
【0038】
前記図1にて前記MPUA1から前記MPUB2へ、また前記図2にて前記MPUB2から前記MPUA1へデータを送るための構成と手順について説明を行った。この両者は類似の動作であるが、代表して前記図1について各状態の時間的遷移を図3図4図5、および図6に示し、さらに本発明の実施例1について説明を行う。
【0039】
始めに図3において(a)および(b)は、それぞれ前記図1のMPUA1が実行する処理、およびバンクAポインタ31の値の時間的推移を表している。そして、前記MPUA1は該図3の(a)に示すとおり、所定の周期にて処理A1、処理A2、処理A3、および処理A4と順次実行し、前記図13の(a)にて示したウェィティング時間はないものである。また図中の時刻TA1、TA2、TA3、およびTA4は、処理A1からA4がそれぞれ終了する時刻を表している。
【0040】
次に前記図1において、前記バンクAメモリ32はn個のバンクにより構成されるものであるが、該図3ではnが4の場合で示している。そして、該図3の(b)バンクAポインタ31は前記時刻TA1まではバンクA2を指定しており、該図3の(a)においてMPUA1は、処理A1の進捗に応じて逐次、データを前記バンクA2にライトする。そして処理A1の終わりの時刻TA1にて、該図3の(b)バンクAポインタ31を1だけ加算して3とする。続いて該図3の(b)バンクAポインタ31は、時刻TA2、TA3、TA4において、それぞれ0、1、2と遷移する。
【0041】
次に該図3の(c)および(d)は、それぞれ前記図1のMPUB2が実行する処理、および該MPUB2がアクセス(リード)するバンクAの時間的推移を表している。始めに前記MPUB2は該図3の(c)に示すとおり、所定の周期にて処理B1、処理B2、処理B3、および処理B4と順次実行し、前記図13の(c)にて示したウェィティング時間はないものである。また図中の時刻TB1、TB2、TB3、およびTB4は、それぞれ処理B1からB4が開始する時刻を表している。
【0042】
次に該図3の(d)は、前記MPUB2がリードするバンクAの遷移を示すが、どのバンクAからリードするかは処理の開始のときに決定する。これをさらに該図3の(c)、(d)にて説明すると、前記MPUB2は処理B1を開始するとき前記バンクAポインタ31の値3をリードし、これを1だけ減じた2、すなわちバンクA2からリードとし、処理B1の進捗に応じて逐次リードする。同様に前記MPUB2は、時刻TB2、TB3、およびTB4において、処理B2、B3、およびB4にてリードするバンクAをそれぞれバンクA3,バンクA0,およびバンクA0とするものである。
【0043】
ここで該図3の(b)と(d)を対比すると、前記MPUA1がライトするバンクAと前記MPUB2がリードするバンクAは必ず相違している。これにより、前記DPM3において前記MPUA1と前記MPUB2による競合状態が発生することがなく、前記MPUA1およびMPUB2がともにウェィティング状態に陥ることがない。
また前記MPUB2は必ず、前記MPUA1がライトを完了したバンクAからデータをリードするので、複数のデータの同時性が確保される。
さらに前記バンクAポインタ31にてソフトウェアによる調停を行うので、前記MPUA1とMPUB2間にハードウェアによる接続と調停を不要とするものである。
【0044】
ここで該図3は、前記MPUA1とMPUB2が非同期で動作し、両者の処理時間が概ね等しい場合を想定している。また該図3の(d)の時刻TB4に続く網掛けは、前記MPUB2がリードするバンクA0が、前の時刻TB3から継続していることを示している。
【0045】
前記図3にて前記図1における各状態の時間的推移を説明したが、続いて図4にて説明を行う。該図4の(a)、(b)、(c)、および(d)は前記図3のそれと同じ項目の時間的推移を表し、また該図4に符号を付すものは、前記図3に同じ符号を付すものと同じ機能や役割を有するものでその説明は割愛する。
【0046】
そして前記図3との相違は、該図4の(a)に示す前記MPUA1の処理時間が、該図4の(c)に示す前記MPUB2の処理時間より長い場合の時間的推移を示している。このとき該図4の(b)と(d)を対比すると、前記MPUA1がライトするバンクAと前記MPUB2がリードするバンクAは必ず相違している。これにより、前記DPM3において前記MPUA1と前記MPUB2による競合状態が発生することがなく、本発明の目的を達成することとなる。
ここで該図4の(d)の網掛けは、前記MPUB2がリードするバンクAが、一周期前の処理から継続していることを表している。
【0047】
さらに、前記図1における各状態の時間的推移を、前記図3および図4に続いて図5にて説明する。該図5の(a)、(b)、(c)、および(d)は前記図3のそれと同じ項目の時間的推移を表し、また該図5に符号を付すもので、前記図3にて同じ符号を付すものはこれと同じ機能や役割を有しその説明は割愛する。
【0048】
そして前記図3図4と該図5の相違は、該図5の(a)に示す前記MPUA1の処理時間が、該図5の(c)に示す前記MPUB2の処理時間より短い場合の時間的推移を示している。
【0049】
ここで該図5の(b)と(d)を対比すると、前記MPUA1がライトするバンクAと前記MPUB2がリードするバンクAは常に必ず相違すべきが、時刻TA8からTB4において同じバンクA3となっている。これにより前記DPM3において、前記MPUA1と前記MPUB2にて競合状態が発生可能となって、本発明の目的の達成に支障となるものである。これの対策としてバンクAの数を増やせばよく、これについて図6にて説明を行う。
【0050】
ここで前記TA8は、前記図5の(a)で処理A8が終了する時刻である。また、前記図5の(b)において網掛けで示すバンクAは、前記MPDUA1がバンクAにライトしても、前記MPDUB2がリードしないバンクAを表している。
【0051】
前記図5においてバンクAの数は4であったが、これを5とした場合を図6に示して説明を行う。該図6の(a)、(b)、(c)、および(d)は前記図5のそれと同じ項目の時間的推移を表し、また該図6に符号を付すものは、前記図5にて同じ符号を付すものと同じ機能や役割を有しその説明は割愛する。
【0052】
図6の(b)において、バンクAポインタ31は0から4の範囲で遷移している。そして該図6の(b)と(d)を対比すると、時刻TA8からTB4のみならず全ての期間において、前記MPUA1がライトするバンクAと前記MPUB2がリードするバンクAは常に必ず相違している。
【0053】
かようにして、前記MPUA1が複数のデータを前記DPM3経由にて前記MPUB2に送るとき、前記バンクAポインタ31に基づき、前記MPUA1がライトする前記バンクAと、前記MPUB2がリードする前記バンクAは必ず異なるので、前記DPM3において競合状態が発生することがなく、これにより前記MPUA1およびMPUB2がウェィティング状態に陥ることがない。
また、前記MPUB2は必ず、前記MPUA1がライトを完了したバンクAからデータをリードするので、複数のデータの同時性が確保される。
さらに前記図1にて示したとおり、前記MPUA1とMPUB2間にはハードウェアによる接続はなく、これによりビジー信号によるマイクロプロセッサのウェィティングや割り込みのタイミング設計が不要となるものである。
【0054】
ここまで図1の前記MPUA1から前記MPUB2へデータを送る構成について、前記図3から図6にて時間的推移の説明を行った。そして、図2に示した前記MPUB2から前記MPUA1へ、データを送る場合の時間的推移も前記図3から図6と同様である、
【実施例2】
【0055】
次に図7は、本発明によるバンク方式のデュアルポートメモリの実施例2の構成を説明する図である。該図7において、前記図1と同じ符号を付すものはこれと同じ機能を有しておりこれの説明は割愛する。そして該図7において16は、前記MPUA1が内蔵するか外部に配置するテンポラリメモリAである。同様に26は、前記MPUB2が内蔵するか外部に配置するテンポラリメモリBである。
【0056】
始めに前記MPUA1が、複数のデータを前記DPM3経由にて前記MPUB2へ送る手順を、該図7中に示すaからfにて説明する。

a:前記MPUA1は、処理の始めに前記バンクAポインタ31をリードする。
b:前記MPUA1は、前記バンクA0からバンクA(n−1)のうち、
前記バンクAポインタ31が示すNO.のバンクAに
処理の進捗に応じて逐次、
前記MPUB2へ送る複数のデータをライトする。
c:前記MPUA1は、処理の終わりに前記バンクAポインタ31の値を
1だけ加算する。ただし加算の結果、値がn以上となったら
0を前記バンクAポインタ31にライトする。

d:前記MPUB2は、処理の始めに前記バンクAポインタ31をリードする。
e:前記MPUB2は、前記バンクA0からバンクA(n−1)のうち、
前記バンクAポインタ31が1から(n−1)のときは
1だけ減算したNO.のバンクAから、
前記バンクAポインタ31が0のときはバンクA(n−1)から、
処理の始めに一括して、全てのデータをリードする。

f:前記MPUB2は、上記のeで一括してリードした全てのデータを、
前記テンポラリメモリB26にセーブし、
処理の進捗に応じて逐次、前記MPUA1からのデータを
前記テンポラリメモリB26からリードする。

ここで前記MPUA1とMPUB2は、相互に非同期にてそれぞれの処理を実行するものである。また前記のcで、前記バンクAポインタ31の値を1だけ加算によるロータリーアップカウンタとしたが、これに換えて1だけ減算としてロータリーダウンカウンタとしてもよい。
【0057】
かようにして、前記MPUA1が複数のデータを前記DPM3経由にて前記MPUB2に送るとき、前記バンクAポインタ31に基づき、前記MPUA1がライトする前記バンクAと、前記MPUB2がリードする前記バンクAは必ず異なるので、前記DPM3において競合状態が発生することがなく、これにより前記MPUA1およびMPUB2がウェィティング状態に陥ることがない。
また、前記MPUB2は必ず、前記MPUA1がライトを完了したバンクAからデータをリードするので、複数のデータの同時性が確保される。
さらに該図7に示したとおり、前記MPUA1とMPUB2間にはハードウェアによる接続はなく、これによりビジー信号によるマイクロプロセッサのウェィティングのタイミング設計が不要となるものである。
【0058】
次に図8にて、前記MPUB2が複数のデータを前記DPM3経由にて、前記MPUA1へ送る手順を説明する。該図8においてh、i、およびjは前記MPUB2がデータを前記DPM3にライトする手順を、k、m、およびnは前記MPUA1がデータを前記DPM3からリードする手順を示すものである。そして、該hからn以外の符号を付すものは、前記図7で同じ符号のものと同じ機能を有しこれの説明は割愛する。
【0059】
そして、該図8中に示すhからnにて説明する。
h:前記MPUB2は、処理の始めに前記バンクBポインタ33をリードする。
i:前記MPUB2は、前記バンクB0からバンクB(n−1)のうち、
前記バンクBポインタ33が示すNO.のバンクBに
処理の進捗に応じて逐次、
前記MPUA1へ送る複数のデータをライトする。
j:前記MPUB2は、処理の終わりに前記バンクBポインタ33の値を
1だけ加算する。ただし加算の結果、値がn以上となったら
0を前記バンクBポインタ33にライトする。

k:前記MPUA1は、処理の始めに前記バンクBポインタ33をリードする。
m:前記MPUA1は、前記バンクB0からバンクB(n−1)のうち、
前記バンクBポインタ33が1から(n−1)のときは
1だけ減算したNO.のバンクBから、
前記バンクBポインタ33が0のときはバンクB(n−1)から、
処理の始めに一括して、全てのデータをリードする。

n:前記MPUA1は、上記のmで一括してリードした全てのデータを、
前記テンポラリメモリA16にセーブし、
処理の進捗に応じて逐次、前記MPUB2からのデータを
前記テンポラリメモリA16からリードする。

ここで前記MPUB2とMPUA1は、相互に非同期にてそれぞれの処理を実行するものである。また前記のjで、前記バンクBポインタ33の値を1だけ加算によるロータリーアップカウンタとしたが、これに換えて1だけ減算としてロータリーダウンカウンタとしてもよい。
【0060】
かようにして、前記MPUB2が複数のデータを前記DPM3経由にて前記MPUA1に送るとき、前記バンクBポインタ33に基づき、前記MPUB2がライトする前記バンクBと、前記MPUA1がリードする前記バンクBは必ず異なるので、前記DPM3において競合状態は発生することがなく、これにより前記MPUB2およびMPUA1がウェィティング状態に陥ることがない。
また、前記MPUA1は必ず、前記MPUB2がライトを完了したバンクBからデータをリードするので、複数のデータの同時性が確保される。
さらに該図8に示したとおり、前記MPUB2とMPUA1間にはハードウェアによる接続はなく、これによりビジー信号によるマイクロプロセッサのウェィティングのタイミング設計が不要となるものである。
【0061】
本発明の実施例2について、前記図7により前記MPUA1から前記MPUB2へ、また前記図8により前記MPUB2から前記MPUA1へデータを送るための構成と手順について説明を行った。この両者は類似の動作であるが、代表して前記図7について各状態の時間的遷移を図9図10、および図11に示し、さらに本発明の実施例2について説明を行う。
【0062】
始めに図9について説明を行うが、該図9は実施例1の図3に対応している。さて該図9において(a)および(b)は、それぞれ前記図7のMPUA1が実行する処理、およびバンクAポインタ31の値の時間的推移を表している。そして、前記MPUA1は該図9の(a)に示すとおり、所定の周期にて処理A1、処理A2、処理A3、および処理A4と順次実行し、前記図13の(a)にて示したウェィティング時間はないものである。また図中の時刻TA1、TA2、TA3、およびTA4は、処理A1からA4がそれぞれ終了する時刻を表している。
【0063】
次に前記図7において、前記バンクAメモリ32はn個のバンクにより構成されるものであるが、該図9ではnが4の場合で示している。そして、該図9の(b)バンクAポインタ31は前記時刻TA1まではバンクA2を指定しており、該図9の(a)においてMPUA1は、処理A1の進捗に応じて逐次、データを前記バンクA2にライトする。そして処理A1の終わりの時刻TA1にて、該図9の(b)バンクAポインタ31を1だけ加算して3とする。続いて該図9の(b)バンクAポインタ31は、時刻TA2、TA3、TA4において、それぞれ0、1、2と遷移する。
【0064】
次に該図9の(c)および(d)は、それぞれ前記図7のMPUB2が実行する処理、および該MPUB2がアクセス(リード)するバンクAの時間的推移を表している。そして前記MPUB2は該図9の(c)に示すとおり、所定の周期にて処理B1、処理B2、処理B3、および処理B4と順次実行し、前記図13の(c)にて示したウェィティング時間はないものである。また図中の時刻TB1、TB2、TB3、およびTB4は、それぞれ処理B1からB4が開始する時刻を表している。
【0065】
次に該図9の(d)は、前記MPUB2がリードするバンクAの遷移を示すが、どのバンクAからリードするかは処理の開始のときに決定する。これをさらに該図9の(c)、(d)にて説明すると、前記MPUB2は処理B1を開始するとき前記バンクAポインタ31の値3をリードし、これを1だけ減じた2、すなわちバンクA2からリードとし、処理B1の始めにバンクA2の全てのデータを一括してリードし、前記テンポラリメモリ26に全てセーブする。そして前記MPUB2は処理B1の進捗に応じて逐次、前記テンポラリメモリ26から前記MPUA1のデータをリードする。
【0066】
同様に前記MPUB2は、時刻TB2、TB3、およびTB4において、処理B2、B3、およびB4にて一括してリードするバンクAをそれぞれバンクA3,バンクA0,およびバンクA0とし、前記テンポラリメモリ26にセーブする。ここで該図9の(c)の各処理において網掛け部分は、前記MPUB2が一括してバンクAからリードし前記テンポラリメモリ26にセーブする時間を模擬的に表し短い時間である。すなわち本発明の実施例2では、前記MPUB2がバンクAを使用する時間を短くするものである。
【0067】
ここで該図3の(b)と(d)を対比すると、前記MPUA1がライトするバンクAと前記MPUB2がリードするバンクAは必ず相違している。これにより、前記DPM3において前記MPUA1と前記MPUB2による競合状態が発生することがなく、前記MPUA1およびMPUB2がともにウェィティング状態に陥ることがない。
また前記MPUB2は必ず、前記MPUA1がライトを完了したバンクAからデータをリードするので、複数のデータの同時性が確保される。
さらに前記バンクAポインタ31にてソフトウェアによる調停を行うので、前記MPUA1とMPUB2間にハードウェアによる接続と調停を不要とするものである。
【0068】
ここで該図9は、前記MPUA1とMPUB2が非同期で動作し、両者の処理時間が概ね等しい場合を想定している。また該図9の(d)の時刻TB4に続く網掛けは、前記MPUB2がリードするバンクA0が、前の時刻TB3から継続していることを示している。
【0069】
前記図9にて前記図7における各状態の時間的推移を説明した。続いて図10にて説明を行うが、該図10は実施例1の図4に対応している。さて該図10の(a)、(b)、(c)、および(d)は前記図9のそれと同じ項目の時間的推移を表し、また該図10に符号を付すものは、前記図9に同じ符号を付すものと同じ機能や役割を有するものでその説明は割愛する。
【0070】
そして前記図9との相違は、該図10の(a)に示す前記MPUA1の処理時間が、該図10の(c)に示す前記MPUB2の処理時間より長い場合の時間的推移を示している。このとき該図10の(b)と(d)を対比すると、前記MPUA1がライトするバンクAと前記MPUB2がリードするバンクAは必ず相違している。これにより、前記DPM3において前記MPUA1と前記MPUB2による競合状態が発生することがなく、本発明の目的を達成することとなる。
ここで該図10の(d)の網掛けは、前記MPUB2がリードするバンクAが、一周期前の処理から継続していることを表している。
【0071】
さらに、前記図7における各状態の時間的推移を、前記図9および図10に続いて図11にて説明を行うが、該図11は実施例1の図5に対応している。さて該図11の(a)、(b)、(c)、および(d)は前記図9のそれと同じ項目の時間的推移を表し、また該図11に符号を付すもので、前記図9にて同じ符号を付すものはこれと同じ機能や役割を有しその説明は割愛する。
【0072】
そして前記図9図10と該図11の相違は、該図11の(a)に示す前記MPUA1の処理時間が、該図9の(c)に示す前記MPUB2の処理時間より短い場合の時間的推移を示している。
【0073】
ここで該図11の(b)と(d)を対比すると、前記MPUA1がライトするバンクAと前記MPUB2がリードするバンクAは常に必ず相違しており、前記図5にて問題となった時刻TA8からTB4においてもバンクAは相違している。
ここで前記TA8は、前記図11の(a)で処理A8が終了する時刻である。また、該図11の(b)において網掛けで示すバンクAは、前記MPDUA1がバンクAにライトしても、前記MPDUB2がリードしないバンクAを表している。
【0074】
かように本発明の実施例2では、2つのマイクロプロセッサにそれぞれテンポラリメモリを設けることにより、2つのマイクロプロセッサがデータの授受を行うとき、デュアルポートメモリにおいて確実に競合状態が発生することを解消するものである。
また、1つのマイクロプロセッサは必ず、他のマイクロプロセッサがライトを完了したデュアルポートメモリからデータをリードするので、複数のデータの同時性が確保される。
さらに、2つのマイクロプロセッサ間には割り込み信号やビジー信号などの接続がなく、よりシンプルなハードウェアを実現するものである。
【産業上の利用可能性】
【0075】
産業用の製造装置に使用されるインバータ、PLC、およびその他制御機器には、複数のマイクロプロセッサが組み込まれ、それぞれに適した処理を分担して実行している。そして、各マイクロプロセッサ間ではデータの授受が重要であるが、本発明のバンク方式のデュアルポートメモリを使用することにより、簡単で確実なデータの授受を実現する。
これにより、マイクロプロセッサシステムのハードウェアのみならず、相互に干渉しない複数のマイクロプロセッサのソフトウェアの組み込みを実現するものである。
【符号の説明】
【0076】
1 MPUA
2 MPUB 11、21 コントロールバス
12、22 アドレスバス
13、23 データバス
14、24 ビジー信号
15 同期信号
16 テンポラリメモリA
26 テンポラリメモリB
3 DPM、またはデュアルポートメモリ
31 バンクAポインタ
32 バンクAメモリ
33 バンクBポインタ
34 バンクBメモリ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14