(57)【特許請求の範囲】
【請求項１】
少なくとも２つのプログラマブルデバイスと、
共有メモリと、
ライト監視回路と、
前記共有メモリにかかる書き込み情報をＦＩＦＯ形式で記憶するアドレス保持メモリと、
を備え、
前記ライト監視回路は、
一方のプログラマブルデバイスからの前記共有メモリへのデータの書き込みがあった場合、データが書き込まれた前記共有メモリのアドレスが所定条件を満たすかを判定し、
満たすと判定した場合に、他方のプログラマブルデバイスへデータの書き込みを通知すると共に、データが書き込まれた前記共有メモリのアドレスの情報を、前記書き込み情報として前記アドレス保持メモリに記録し、
前記ライト監視回路からの通知を受けた他方のプログラマブルデバイスは、
前記ライト監視回路からの通知に基づき前記アドレス保持メモリから前記アドレスの情報を読み出し、
前記アドレス保持メモリから読みだされた前記アドレスの情報に基づき前記共有メモリからデータを取得する、マルチ・プログラマブルデバイス・システム。
【請求項２】
少なくとも２つのプログラマブルデバイスと、
共有メモリと、
ライト監視回路と、
前記共有メモリにかかる書き込み情報をＦＩＦＯ形式で記憶するアドレス保持メモリと、
を備えたマルチ・プログラマブルデバイス・システムの制御方法であって、
一方のプログラマブルデバイスが前記共有メモリへデータを書き込むステップと、
前記ライト監視回路が、データが書き込まれた前記共有メモリのアドレスが所定条件を満たすかを判定し、満たすと判定した場合に、他方のプログラマブルデバイスへデータの書き込みを通知するステップと、
前記ライト監視回路が、データが書き込まれた前記共有メモリのアドレスの情報を、前記書き込み情報として前記アドレス保持メモリに記録するステップと、
他方のプログラマブルデバイスが、前記ライト監視回路からの通知に基づき前記アドレス保持メモリから前記アドレスの情報を読み出すステップと、
他方のプログラマブルデバイスが、前記アドレス保持メモリから読みだされた前記アドレスの情報に基づき前記共有メモリからデータを取得するステップと、
を有する、マルチ・プログラマブルデバイス・システムの制御方法。
【請求項３】
前記ライト監視回路は、前記アドレス保持メモリに前記アドレスの情報が記憶されている限りは、前記他方のプログラマブルデバイスへ通知するステップを継続する、請求項２に記載のマルチ・プログラマブルデバイス・システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサその他のデバイス間通信方式に関した発明であって、特に、共有メモリと、複数のデバイスとから構成されて、その高速データ通信を実現する技術に関する。
【背景技術】
【０００２】
旧来、あるデバイスＡからデバイスＢに対して、共有メモリを介して通信等のための動作変更・指示を行う場合、相手の振る舞いを即時変更させるように設定データが書き変わった場合は、その変更内容を知るためにソフトウェアで設定データ用に割り当てられた領域の中から、いずれが変化したかを知るために、該当領域をすべてサーチして知る必要があった。高速な応答性を要求する通信分野では、この検索に要する遅延（レイテンシ）が問題となっていた。
【０００３】
特許文献１にある発明は、そのようなデバイス（ＣＰＵ）間通信における負荷の低減と処理時間の短縮を図るために、送信側のＣＰＵ１と受信側のＣＰＵ２は共有メモリを使用し、ブロック転送型共有データバスを介して通信データの授受を行なう。データ送信ＣＰＵは、前記共有メモリから前記バッファ状態フラグを読み出し、前記データバッファが使用中でなければ前記バッファ状態フラグの内容と送信データを一回のブロック転送で前記共有メモリに転送した後データ受信ＣＰＵにデータ引取要求を行ない、データ受信ＣＰＵは前記データ引取要求を割込みで受領して前記データバッファからデータの引取りを行なって前記バッファ状態フラグを未使用状態に書き換えてＣＰＵ間のデータ授受を行なう構成を有する。
【０００４】
このような共有メモリ回路は、汎用品を用いた場合、実装のためのコストが高いという問題があった。またＦＰＧＡなどに共有メモリブロックを内蔵させた場合、機能の実現は可能であるが、他の周辺制御回路も含むため回路の集積度が高まり、検証に非常に時間を要し早期に製品投入させるのが難しいという問題があった。そこで、特許文献２の発明は、ＦＰＧＡに、セレクタを備え、各ＣＰＵが共有メモリを使用する状況に応じて、当セレクタで割込み／ビジー信号を選択し、ＣＰＵに出力して動作モードを切り替えた。こうすることで、製品を早期に市場投入を可能にするとともに、低コストでメモリ容量の拡張性を兼ね備えた共有メモリ切替え回路を提供する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許平５−８１１８５号公報
【特許文献２】特開２００８−２８７５７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の発明では、マルチデバイス間で高速なデータ通信はある程度図ることができ、また実装上の問題も解決してきている。しかし、高速な即時通知の応答性を維持しつつ、複数デバイス間の、あるいは、１デバイスからの複数の通信指示を低レイテンシで伝達することには不充分であった。また、設計上で動作変更の必要な設定項目の数をハードウエア変更なしにメモリの範囲内で自由に増やすことも困難であった。特に、一つのデバイスからの指令が多重に行われた場合の多重割込み処理能力に欠ける問題があった。
【０００７】
この問題を解決するために、本願発明はプログラマブルデバイスを用いることにより、一のデバイスが設定領域の書き換えた変更事象を、即時に他のデバイスに通知する手段を提供する。
【課題を解決するための手段】
【０００８】
本願発明は、少なくとも２つのプログラマブルデバイスと、
共有メモリと、
ライト監視回路と、
前記共有メモリにかかる書き込み情報を記憶するアドレス保持メモリと、を備えて、
前記ライト監視回路は、
一方のプログラマブルデバイスからの前記共有メモリへの書き込みアドレスを監視して、前記共有メモリへの所定の書き込みがあった場合、
前記アドレス保持メモリにある前記書き込み情報を他方のプロセッサに通知するように制御することを特徴とするマルチ・プログラマブルデバイス・システムである。
【０００９】
また、本願発明は、前記保持メモリはＦＩＦＯ形式であることを特徴とするものである。
【００１０】
さらに、本願発明はその制御方法の発明であって、
少なくとも２つのプログラマブルデバイスと、
共有メモリと、
ライト監視回路と、
前記共有メモリにかかる書き込み情報を記憶するアドレス保持メモリと、
を備えたマルチ・プログラマブルデバイス・システムの制御方法であって、
一方のプログラマブルデバイスが共有メモリへデータ改変を書き込むステップと、
前記ライト監視装置は、そのデータ改変にかかるアドレスを検知し所定条件で有効な場合に、他方のプログラマブルデバイスへ通知するステップと、
前記ライト監視装置が当該アドレス情報をアドレス保持メモリに蓄積するステップと、
他方のプログラマブルデバイスが前記通知を認識し起動されて前記アドレス保持メモリから当該アドレス情報を読み出すステップと、
を備えることを特徴とするマルチ・プログラマブルデバイス・システムの制御方法である。
また、アドレス保持メモリがＦＩＦＯ形式を特徴とするものでもよい。
【発明の作用・効果】
【００１１】
本願発明により、プログラマブルデバイスにおける設定データ共有において、データの変更通知を提供する場合にハードウエアで構成された固定仕様の専用回路を実装しなくともよくなり、設定パラメータ数が増加するなどの仕様変更に柔軟に対応できる。
また、基板やチップなどによりマルチプログラマブルデバイス・システムが一旦出来上がってからも、変更通知可能な設定パラメータの追加変更が容易にできるようになった。
【図面の簡単な説明】
【００１２】
【図１】本願発明のマルチ・プログラマブルデバイス・システムの模式図を示す。
【図２】本願発明の実施の一態様であるマルチ・プログラマブルデバイス・システムの詳細構成を示す。
【図３】本願発明の実施の一態様であるマルチ・プログラマブルデバイス・システムの状態遷移チャートを示す。
【図４】本願発明の実施の一態様であるマルチ・プログラマブルデバイス・システムのアドレス保持メモリの概略を示す。
【発明を実施するための形態】
【００１３】
（１）  本願発明の構成要素
図１に示すように、本実施の形態に係るマルチ・プログラマブルデバイス・システムは複数のプログラマブルデバイスを能動要素として構成する。本願におけるプログラマブルデバイスとは、ソフトウェアでプログラムが可能なＣＰＵ（ＣｅｎｔｒａｌＰｒｏｃｅｓｓｉｎｇＵｎｉｔ）コアやそれに付随するローカルメモリや入出力回路を備えたデバイスを意味する。本願ではこれ以降、単に「デバイス」と称する。
【００１４】
以降は詳細なる図２も用いて、構成要素を符号付けして説明する。まず、そのデバイスＡ，Ｂについてであるが、例えば、１０のデバイスＡはデータの変更操作を行うデバイス、２０のデバイスＢはその変更を認識する必要のあるデバイスとする。これらはバス５００で接続される。
【００１５】
３００はメモリであって、デバイスＡ，Ｂがバス経由で共有している記憶素子デバイスである。いわゆる共有メモリであるが、一方のデバイスＡ、他方のデバイスＢの両方からアクセスできるものであれば、一般的なメモリでよく、同時アクセス性や共有のための調停手段は問わない。
【００１６】
１００は本願発明の中枢的機能を担う制御回路であって、ライト監視回路と称する。そこには、データ変更通知制御レジスタ１１０、アドレス範囲判定部１２０、および通知判定部１３０を備える。以降、各機能部位を説明するが、特にそれが出力する機能について述べるために、図２の出力矢印符号で各機能モジュールの果たすことを示す。
【００１７】
データ変更通知制御レジスタ１１０は、バス５００を通じて上位のデバイスから設定変更が可能な、データ変更通知に関する設定を行い、他の機能部位へ情報を伝達保持するための部位である。その出力機能は、アドレスのモニタ条件に関する通知１１１と、デバイスＡ，Ｂへの変更通知を有効化する１１２と、さらにアドレス保持メモリ２００へのリード制御１１３がある。
【００１８】
アドレス範囲判定部１２０は、アクセスされたメモリアドレスが、設定変更としてモニタすべきアドレス空間であるかどうかを判断する部位である。範囲に該当しているかどうかの判定回路としては、比較器による方法や、マスク計算による方法がある、モニタ対象空間かどうかを判断できるロジックがあればよい。そして、通知判定部１３０に対してモニタ条件の判定通知１２１を行う。
【００１９】
通知判定部１３０は、アドレス範囲判定部１２０からのモニタ空間か否かの判定結果と、データ変更通知制御レジスタ１１０から通知された通知有効状態により、デバイスＡないしＢに変更情報を通知（割込み）出力１３１する部位である。その他、アドレス保持メモリ２００へ変更アドレス情報のライト制御１３２を行う。
【００２０】
アドレス保持メモリ２００は、通知判定部１３０により、改変されたことを記録すべきアドレスを履歴保持しておき、また変更通知を受けたデバイスから、バス５００経由で、変更が発生したアドレス空間を順次照会可能にするメモリ機能を提供する。機能的には、本願発明は多重割込み処理を旨とするので、ＦｉｒｓｔＩｎ−ＦｉｒｓｔＯｕｔ（ＦｉＦｏ）であり、その旨のバッファであれば、キュー構造、リングバッファ構造は問わない。  
【００２１】
その他に、バス５００の内部バスを細分化すると、データバス、アドレスバス、そしてリード・ライトの指示や、要求の有効等を示すためのバス制御信号により構成される。ライト監視回路１００はバス５００をＳｎｏｏｐｉｎｇ（覗き見）する機能を果たすため、バス本来の機能に論理的悪影響を与えることなく付加できる。また、９０はバスコントローラであって、デバイス間でバス５００の調停を行うものであるが、デバイス間にて相互直接的に調停が効くならその構成及びアルゴリズムは問わない。
【００２２】
それでは次に、各機能モジュールの動作と信号の流れを説明するために、図３の状態遷移チャートに基づいて説明する。
【００２３】
（２）  本願発明の動作
１．初期設定（レジスタ設定）する
デバイスＡからの指示でライト監視装置１００の動作設定を行うのが、図３の上段の例示である。この設定では、アドレスのモニタ条件に関する設定と、デバイスＡ，Ｂへの変更通知を有効化する設定を行う。
【００２４】
まず、デバイスＡからデータ変更通知レジスタ１１０へモニタ条件通知指令を書き込む（以降図中ステップをＳと記すと、Ｓ１０である）。これは通常のバスアクセスで行う。
この指令を受けたデータ変更通知レジスタ１１０は、アドレス範囲判定部１２０へモニタ条件を通知する（Ｓ１１１）。続いて、データ変更通知レジスタ１１０は、通知判定部１３０へ通知制御を有効化する（Ｓ１１２）。こうして、以降のデバイスＡ、デバイスＢとのやり取りに対する準備を行った。
【００２５】
以降は、ランタイムの動作であり、図３の中段以下で示す。
２．通知対象の設定変更する
これは、通知対象となる設定変更を行う(メモリ書き換え)ステップである。デバイスＡからメモリ３００の対象とする（改変）アドレスに書き込みを行う（Ｓ１１）。これは同時に、ライト監視回路１００にも通じているので、その部位であるアドレス範囲判定部１２０への変更箇所指示となる。
【００２６】
続いて、アドレス範囲判定部１２０は、該当のモニタ条件判定を行う（Ｓ１２１）。それが適正であったら、通知判定部１３０は、デバイスＢへ変更通知（割込み）をかける（Ｓ１３１）。同時に、アドレス保持メモリ２００に当該アドレス情報のライト処理を行う（Ｓ１３２）。このライト処理はＦＩＦＯ形式に則って行われる必要がある。
【００２７】
３．変更された情報をメモリから取得する
中段から下段へ移行するステップＳ２０で割り込みをかけられたデバイスＢは、データ変更通知制御レジスタ１１０へアドレス保持メモリ２００へのアクセスの準備を指令する（Ｓ２１）。例えば、割込みベクタから解析して、アドレス保持メモリ２００からの読み出しを行う（Ｓ２１）。但し、データ変更通知制御レジスタ１１０によるアドレス保持メモリ２００へのリード制御が、ＦＩＦＯ形式に則って行われる（Ｓ１１３）。後述するＯｕｔポインタの後処理などである。
【００２８】
同時に、デバイスＢは、アドレス保持メモリ２００から改変アドレスを取得する（Ｓ２２）。これが設定取得である。その結果、得られたアドレスに基づくデバイスＡからの変更に係る情報データを知るのである。
【００２９】
上記図３の処理フローでの説明のステップの番号付けは、機能部位をＮ、そのシーケンスをｎと見なすと、Ｓ（Ｎ＋ｎ）の表記にしている。この符号は、図２の構成要素間の出力信号に一致しているはずである。
【００３０】
最後に、図４にアドレス保持メモリ２００の内容概要を示す。
・Ｉｎｄｅｘとして、Ｉｎポインタ／Ｏｕｔポインタで本保持メモリのバッファに書き込むべき位置／一方バッファから読み出すべき位置を示す。
・Ｂｕｆｆｅｒは、ＦＩＦＯ形式にかかる複数のイベント（図中古いものから＃１、＃２、＃３、＃４）に関して、そのデバイスＡからの改変情報のありかを示すアドレス値がシングルワードアドレス値でストアされている。これをデバイスＢは取得して改変データを得る訳である。本例では、＃１の割込み起因の改変アドレスが読み出される。しかし、＃２、＃３はまだ処理されずにスタックされたままであり、新たにデバイスＡからの書き込みがあれば＃４のバッファが使用される。こうして多重割込み処理に対応する。
【００３１】
別の例として、開始アドレス／終了アドレス（またはデータ長）をセットにしてバッファにストアすれば、ブロックメモリ転送が可能で、バーストアクセスモードで可能性ある。なお、バッファの数は割込み数とデバイスの処理能力との関係から余裕を持たせた大きさにする必要はある。
【産業上の利用可能性】
【００３２】
昨今、多機能化したマイコンシステムでは、ＣＰＵを用いた複数のボードでの実装が行われる。メインのＣＰＵボードとサブである周辺ＩＯボードを組み合わせた例など多い。また、ＳｏＣ（Ｓｙｓｔｅｍ Ｏｎ Ｃｈｉｐ）のようなワンチップ内の複数のCPUで構成されるコアを持つシステムでもバスを介してメモリをそれぞれからアクセスできるケースが一般的である。そのような開発の場面で、メモリを介して情報のやり取りをする場合に、本願発明は大いに効果がある。
【００３３】
特に、当初定めた仕様以外のサブＣＰＵボードを増設する場合に、本願発明ではライト監視回路１００の設定をデバイスからプログラマブルにしておけば、メインＣＰＵのハードウエアの改造なしに、容易に新たなサブＣＰＵボードに対応することができる。
【００３４】
本願の実施例で示した設計上の変更追加は可能であり、そのような変更を行ったとしても、本願発明の趣旨を逸脱しない限りはこの発明の範囲に入る。
【符号の説明】
【００３５】
１０  デバイスＡ
２０  デバイスＢ
９０  バスコントローラ
１００  ライト監視回路
１１０  データ変更通知制御レジスタ
１２０  アドレス範囲判定部
１３０  通知判定部
２００  アドレス保持メモリ
３００  共有メモリ
５００  バス
【図１】
0006535516.tif 000002
【図２】
0006535516.tif 000003
【図３】
0006535516.tif 000004
【図４】
0006535516.tif 000005