(57)【特許請求の範囲】
【請求項１】
通信モジュールを備え、通信ネットワークに接続されている他の通信ノードと通信を行うマイクロコンピュータにおいて、
前記マイクロコンピュータは、ホストを含み、該ホストと前記通信モジュールとの間に配置され、先行して前記通信モジュールより読み出されている複数のデータを、前記ホストが通信速度よりも高速に読み出すことができる読み出しバッファ，及び前記ホストが通信速度よりも高速にデータの書き込みを行うことができる書き込みバッファと、
前記通信モジュールに対して、データ読み出し先のノードに対する通信要求を周期的に出力することで、前記通信モジュールが他のノードより受信したデータを前記読み出しバッファに転送する読み出し制御部と、
前記書き込みバッファにデータが格納されていると、書き込まれているデータを、送信データとして前記通信モジュールに転送する書き込み制御部と、
前記ホストが、前記読み出しバッファ，及び前記書き込みバッファを経由することなく、前記通信モジュールとの間で直接データの読み書きを行うように制御するバイパスアクセス制御部と、
前記読み出し制御部，前記書き込み制御部，前記バイパスアクセス制御部のそれぞれによる前記通信モジュールへのアクセス順序を制御するアクセス順序制御部とを備えてなるマイクロコンピュータ。
【請求項２】
前記アクセス順序制御部は、前記読み出し制御部による前記読み出しバッファへのデータ転送中に、前記ホストによる前記書き込みバッファへの書き込み要求が発生すると、前記データ転送を中断して、前記ホストによる前記書き込みバッファへの書き込みを優先して実行させることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記アクセス順序制御部は、前記読み出し制御部による前記読み出しバッファへのデータ転送中に、前記ホストによる前記バイパスアクセス制御部を介して行う前記通信モジュールへのアクセス要求が発生すると、前記データ転送を中断して、前記ホストによる前記通信モジュールへのアクセスを優先して実行させることを特徴とする請求項１又は２記載のマイクロコンピュータ。
【請求項４】
前記読み出し制御部は、前記通信モジュールが受信したデータを前記読み出しバッファに転送する際に、前記周期の残時間が前記データの転送を当該周期内に完了させる限界時間に到達すると、前記読み出し制御部が、前記通信モジュールに対して前記書き込み制御部及び前記バイパス制御部よりも優先的にアクセスするための優先信号を出力し、
前記アクセス順序制御部は、前記優先信号が与えられると、前記書き込み制御部，並びに前記バイパスアクセス制御部による前記通信モジュールへのデータ転送要求に優先して、前記読み出し制御部による前記通信モジュールへのアクセスを許可することを特徴とする請求項２又は３記載のマイクロコンピュータ。
【請求項５】
前記書き込み制御部が、前記書き込みバッファに書き込まれたデータを前記通信モジュールに転送する際に、前記読み出しバッファのデータを前記書き込みバッファに書き込まれたデータで更新するデータ更新手段を備えたことを特徴とする請求項１ないし４の何れかに記載のマイクロコンピュータ。
【請求項６】
前記ホストが、前記バイパス経路を介して前記通信モジュールとの間でデータの読み書きを行う際に、前記読み出しバッファのデータを前記書き込みバッファに書き込まれたデータで更新するデータ更新手段を備えたことを特徴とする請求項１ないし５の何れかに記載のマイクロコンピュータ。
【請求項７】
前記読み出し制御部は、前記通信要求を独立した複数の周期で発生させるように構成され、
前記アクセス順序制御部は、前記読み出し制御部による何れか１の通信要求に応じて前記読み出しバッファに対するデータ転送が実行されている期間に、その他の周期に従う通信要求が発生すると、実行中のデータ転送が完了した後に前記他の通信要求を受け付けることを特徴とする請求項１ないし６の何れかに記載のマイクロコンピュータ。
【請求項８】
前記通信ネットワークに接続されている他の通信ノードが複数存在する際に、前記通信モジュール及び前記アクセス順序制御部を複数設け、
前記ホスト又は前記読み出し制御部により指定される通信先に応じて、前記複数の通信モジュール及び前記アクセス順序制御部の内何れを使用するかを決定する通信用デコーダを設けたことを特徴とする請求項１ないし７の何れかに記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信モジュールを備え、通信ネットワークに接続されている他の通信ノードと通信を行うマイクロコンピュータに関する。
【背景技術】
【０００２】
近年、ＣＰＵは動作速度の高速化が進んでいるため、周辺回路のアクセス速度との乖離も大きくなっており、ＣＰＵが低速レジスタに格納されているデータを読み出そうとすると、レイテンシが増大して処理効率の低下を招くという問題がある。このような効率の低下を防止するため、例えば特許文献１では、低速レジスタ；周辺モジュール６１，６２に格納されているデータを高速レジスタ；レジスタエントリ７０にコピーし、ＣＰＵ１０，２０はレジスタエントリ７０のみにアクセスして上記データを取得する構成が開示されている。
【０００３】
この場合、周辺モジュール６１，６２とレジスタエントリ７０とのコヒーレンシを維持するため、双方に同値のデータを書き込むが、低速側である周辺バス６０のライトサイクルの途中段階で周辺モジュールからレジスタエントリ７０にライト完了通知を送信し、データの一致を示すフラグ；バリッドビットを立てている。ＣＰＵ１０，２０は、このバリッドビットの論理値を判定することで、周辺モジュール６１，６２とレジスタエントリ７０との間でデータが一致するか否かを判断するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２８９２３２号公報（図１参照）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、通信ネットワークに接続されているマイクロコンピュータについては、一般に、ＣＰＵがチップ内の周辺回路に対して行うアクセスは高速であるが、通信インターフェイス及びネットワークを介して行う通信は低速であることが多い。このような構成について特許文献１をそのまま適用することを想定すると、ＣＰＵと通信インターフェイス（バッファ）との間に高速レジスタを配置して、通信インターフェイスと高速レジスタとの間を、高速でデータ転送が可能な専用バスで接続する必要があり、通信インターフェイス側を高速アクセスに対応させることの問題やコストの問題から、実現性は極めて乏しいと言わざるを得ない。
【０００６】
本発明は上記事情に鑑みてなされたものであり、その目的は、通信ネットワークに接続されるものについて、簡単で且つ低コストで実現できる構成によって、ホストによる処理効率の低下を防止できるマイクロコンピュータを提供することにある。
【課題を解決するための手段】
【０００７】
請求項１記載のマイクロコンピュータによれば、ホストと通信モジュールとの間に、ホストが直接アクセスを行う読み出しバッファ，及び書き込みバッファと、通信要求を周期的に出力することで通信モジュールが他のノードより受信したデータを読み出しバッファに転送する読み出し制御部と、書き込みバッファに書き込まれているデータを送信データとして通信モジュールに転送する書き込み制御部とを備える。また、ホストが通信モジュールとの間で直接データの読み書きを行うように制御するバイパスアクセス制御部と、読み出し，書き込み，バイパスアクセスの各制御部による通信モジュールへのアクセス順序を制御するアクセス順序制御部とを備える。
【０００８】
これにより、ホストは、読み出しバッファ及び書き込みバッファに高速でアクセスしてデータの読み出し及び書き込みを行えば良く、通信モジュールとの間における低速なデータ転送は、読み出し制御部，書き込み制御部が、アクセス順序制御部を経由して実行するので、ホストによるアクセスのレイテンシを短縮して処理効率を向上させることが可能となる。また、ホストは、読み出しバッファ及び書き込みバッファを経由することなく、データを直ちに受信したり或いは送信する必要がある場合は、バイパスアクセス制御部を介して通信モジュールに直接アクセスすることができる。したがって、ホストの処理状況に応じてデータを即時処理することも可能になる。
【０００９】
請求項２記載のマイクロコンピュータによれば、アクセス順序制御部は、読み出し制御部による読み出しバッファへのデータ転送中に、ホストによる書き込みバッファへの書き込み要求が発生すると、前記データ転送を中断して、ホストによる書き込みバッファへの書き込みを優先して実行させる。したがって、読み出しバッファへのデータ転送が継続している期間中においても、ホストによる書き込みバッファへのアクセスを妨げることなく実行させることができる。
【００１０】
請求項３記載のマイクロコンピュータによれば、アクセス順序制御部は、読み出し制御部による読み出しバッファへのデータ転送中に、ホストによるバイパスアクセス制御部を介して行う通信モジュールへのアクセス要求が発生すると、データ転送を中断して、ホストによる通信モジュールへのアクセスを優先して実行させる。したがって、読み出しバッファへのデータ転送が継続している期間中においても、ホストによる通信モジュールへのアクセスを妨げることなく実行させることができる。
【００１１】
請求項４記載のマイクロコンピュータによれば、読み出し制御部は、通信モジュールが受信したデータを読み出しバッファに転送する際に、周期の残時間がデータの転送を当該周期内に完了させる限界時間に到達すると、読み出し制御部が、通信モジュールに対して書き込み制御部及びバイパス制御部よりも優先的にアクセスするための優先信号を出力する。そして、アクセス順序制御部は、優先信号が与えられると、書き込み制御部，並びにバイパスアクセス制御部による通信モジュールへのデータ転送要求に優先して、読み出し制御部による通信モジュールへのアクセスを許可する。
【００１２】
すなわち、読み出しバッファに対するデータ転送が、例えば請求項２のようなホストによる書き込みや、請求項３のようなバイパスアクセスによって中断されると、予め定められている更新周期内に、読み出しバッファへのデータ転送が完了しなくなるおそれがある。そこで、そのような場合に読み出し制御部が優先信号を出力し、それに応じてアクセス順序制御部が、読み出し制御部による通信モジュールへのアクセスを優先させて実行すれば、読み出しバッファへのデータ転送を更新周期内に確実に終了させることができる。
【００１３】
請求項５記載のマイクロコンピュータによれば、データ更新手段は、書き込み制御部が、書き込みバッファに書き込まれたデータを通信モジュールに転送する際に、読み出しバッファのデータを書き込みバッファに書き込まれたデータで更新する。したがって、ホストが他の通信ノードに送信しようとするデータを、直ちに読み出しバッファに反映させることができる。
【００１４】
請求項６記載のマイクロコンピュータによれば、データ更新手段は、ホストが、バイパス経路を介して通信モジュールとの間でデータの読み書きを行う際に、読み出しバッファのデータを書き込みバッファに書き込まれたデータで更新する。したがって、この場合も、ホストが直接他の通信ノードに送信しようとするデータ，又は直接他の通信ノードから受信したデータを、直ちに読み出しバッファに反映させることができる。
【００１５】
請求項７記載のマイクロコンピュータによれば、読み出し制御部が、通信要求を独立した複数の周期で発生させるように構成される場合に、アクセス順序制御部は、読み出し制御部による何れか１つ周期の通信要求に応じて読み出しバッファに対するデータ転送が実行されている期間に、その他の周期に従う通信要求が発生すると、実行中のデータ転送が完了した後に他の通信要求を受け付ける．したがって、読み出しバッファに対するデータ転送が複数の周期に基づいてそれぞれ実行される場合でも、アクセス順序制御部がそれらのアクセス順序を調停して確実に実行させることができる。
【００１６】
請求項８記載のマイクロコンピュータによれば、通信ネットワークに接続されている他の通信ノードが複数存在する際に、通信モジュール及びアクセス順序制御部を複数設け、通信用デコーダが、ホスト又は読み出し制御部により指定される通信先に応じて、複数の通信モジュール及び前記アクセス順序制御部の内何れを使用するかを決定する。したがって、通信をより多様な形態で行うことができる。
【図面の簡単な説明】
【００１７】
【図１】第１実施例であり、マイクロコンピュータの構成を示す機能ブロック図
【図２】タイミングチャート
【図３】通信フレームのイメージを示す図
【図４】（ａ）はＣＰＵのアクセス処理を示すフローチャート、（ｂ）はアクセス順序制御部の通信制御に関する処理を示すフローチャート
【図５】第２実施例を示す図１の一部相当図
【図６】２つの更新周期に応じて、読み出しバッファ内のエントリが更新される状態を示すタイミングチャート
【図７】グループＡ，Ｂ間で更新周期の一部が重複した場合と、アクセスの一部がバッティングした場合のタイミングチャート
【図８】図７のタイミングチャートに対応したステップＳ１６のBuffer Fill Processの詳細を示すフローチャート
【図９】第３実施例であり、アクセス順序制御部を中心とする一部の構成を示す図
【図１０】タイミングチャート
【図１１】第４実施例を示す図１の一部相当図
【図１２】第５実施例を示す図１の一部相当図
【図１３】第６実施例を示す図１相当図
【発明を実施するための形態】
【００１８】
（第１実施例）
以下、第１実施例について図１ないし図４を参照して説明する。図１は、マイクロコンピュータの構成を示す機能ブロック図である。マイクロコンピュータ１は、ＣＰＵ（ホスト）２を備え、通信モジュール３を介して通信バス４（通信ネットワーク）に接続されている。ＣＰＵ２と通信モジュール４との間には、ホストインターフェイス５，バッファアクセス制御部６，バイパスアクセス制御部７，書き込みバッファ８，読み出しバッファ９，アクセス順序制御部１０等が配置されている。
【００１９】
ＣＰＵ２は、通信モジュール３によりデータの送信を行う際には、バッファアクセス制御部６を介して書き込みバッファ８にアクセスし、送信データを書き込む。ＣＰＵ２のバスサイズは例えば３２ビットであり、動作クロック周波数は、例えば数１０ＭＨｚ〜１００ＭＨｚ程度である。したがって、ＣＰＵ２〜書き込みバッファ８間のデータ転送速度は〜数Ｇｂｐｓ程度となっている。バッファアクセス制御部６は、書き込みバッファ８に対して書き込みアドレスWrite Addrと、書き込みデータWrite Dataとを出力する。また、書き込みバッファ８の容量は、３２ビットを１ワードとすると、例えば４〜８ワード程度となっている。そして、書き込みバッファ８は、ＣＰＵ２によって全ての領域にデータが書き込まれた状態になると、信号Write Buffer Fullをアクティブにする。当該信号の状態は、ＣＰＵ２及びアクセス順序制御部１０によってモニタされる。
【００２０】
書き込みバッファ８は、ＣＰＵ２側からの書き込みが終了すると、内蔵されている書き込み制御部８ａが、アクセス順序制御部１０に対して、通信モジュール３内の送信バッファを指定する書き込みアドレスWrite Buffer Addrと、書き込みデータWrite Buffer Dataとを出力する。アクセス順序制御部１０は、書き込みバッファ８が出力したアドレス並びにデータを、アドレスReq Addrと、書き込みデータWrite Dataとして通信モジュール３に出力して転送する。通信モジュール３は、書き込みバッファ８より転送されたデータを、通信バス４に接続されている他の通信ノードである周辺回路１２（Ａ），周辺回路１３（Ｂ）等に送信する。尚、送信先は、ＣＰＵ２が出力するアドレスにより決定される。また、通信バス４上での伝送速度（チップ間通信速度）は、例えば〜数Ｍｂｐｓ程度である。
【００２１】
読み出しバッファ９は、読み出し制御部１１によって制御される。読み出し制御部１１は、アクセス順序制御部１０を介して通信モジュール３に周期的にアクセスし、通信バス４に接続されている他の通信ノードである周辺回路１２（Ａ），周辺回路１３（Ｂ）等にデータ送信要求を行う。そして、通信モジュール３が周辺回路１２（Ａ），周辺回路１３（Ｂ）等より受信したデータを、読み出しバッファ９に転送させる。ＣＰＵ２は、バッファアクセス制御部６を介して読み出しバッファ９にアクセスすることで、通信モジュール３が受信したデータを読み出す。尚、周辺回路１２，１３については、マイクロコンピュータ１から見た場合の「周辺」であるから、これらがマイクロコンピュータ１と同様のマイクロコンピュータであっても良い。
【００２２】
読み出し制御部１１は、コンフィギュレーションインターフェイス（Ｉ／Ｆ）１４，タグメモリ１５，ポーリング時間設定部１６，更新タイマ１７，更新制御ロジック１８等で構成されている。コンフィギュレーションＩ／Ｆ１４は、マイクロコンピュータ１に電源が投入された際に行われる初期設定時に、ＣＰＵ２が読み出し制御部１１に設定を行うためのインターフェイスである。ＣＰＵ２は、コンフィギュレーションＩ／Ｆ１４を介して、タグメモリ１５並びにポーリング時間設定部１６に設定を行う。
【００２３】
読み出しバッファ９のデータ格納領域は、３２バイト単位のブロック領域であるエントリが定義されており、タグメモリ１５には、各エントリのベースアドレスを示すBuffer Addrが、エントリの数だけ書き込まれる。尚、読み出しバッファ９の容量は、例えば１ｋバイト程度である。ポーリング時間設定部１６に対しては、読み出しバッファ９にデータを転送させる周期データが設定され、その周期データは、更新タイマ１７にロードされる。更新制御ロジック１８は、更新タイマ１７により計時される一定の周期に応じて、アクセス順序制御部１０に読み出しアドレスRead Buffer Addrを出力する。この読み出しアドレスRead Buffer Addrは、データの読み出し先を指定するアドレスであり（通信先を指定する通信要求）、予め出力パターン，即ち、通信バス４を介してデータを取得する対象が設定されている。
【００２４】
アクセス順序制御部１０は、更新制御ロジック１８が出力したアドレスを、アドレスReq Addrとして通信モジュール３に出力して転送する。すると、通信モジュール３は、与えられたアドレスに応じて通信バス４に接続されている周辺回路１２（Ａ），周辺回路１３（Ｂ）等の何れかのノードにデータ送信要求を行い、その要求に応じて返信された受信データをRead Dataとしてアクセス順序制御部１０に上げる。すると、アクセス順序制御部１０は、上記受信データをRead Buffer Dataとして読み出しバッファ９に出力し、転送する。尚、この転送の際に、更新制御ロジック１８は、受信データRead Buffer Dataの４バイト毎の書き込み先アドレスを読み出しバッファ９に出力する。
【００２５】
ＣＰＵ２が読み出しバッファ９に書き込まれたデータを読み出す際には、バッファアクセス制御部６を介して、読み出しアドレスRead Addrをタグメモリ１５及び読み出しバッファ９のデータ出力側にあるマルチプレクサ１９に与える。タグメモリ１５には、読み出しアドレスRead AddrのＬＳＢ側より第９ビット以上が与えられ、タグメモリ１５は、そのアドレスに応じたベースアドレスを読み出しバッファ９に出力する。すると、読み出しバッファ９は、ベースアドレスに対応する３２バイトのデータをマルチプレクサ１９に出力する。マルチプレクサ１９には、読み出しアドレスRead Addrの第８〜第６ビットが与えられており、マルチプレクサ１９は、その３ビットのアドレスに応じて、入力側に与えられている３２バイトのデータから４バイトを選択し、読み出しデータRead Dataとしてバッファアクセス制御部６に出力する。
【００２６】
また、ＣＰＵ２は、上述したアクセス経路とは別に、バイパスアクセス制御部７及びアクセス順序制御部１０を介して、通信モジュール３に直接アクセスする（バイパス経路）ことも可能となっている。この場合、ＣＰＵ２は、送信データを直接通信モジュール３に書き込み、また、受信データを通信モジュール３から直接読み出す。バイパスアクセス制御部７は、アクセス順序制御部１０に対してアドレスBypass Request Addressと、書き込みデータBypass Write Dataを出力する。また、データを読み出す際には、アクセス順序制御部１０よりデータBypass Read Dataを取得する。
ホストインターフェイス５は、ＣＰＵ２が出力するアドレスが、書き込みバッファ８又は読み出しバッファ９へのアクセスを示すか、通信モジュール３への直接アクセス（バイパスアクセス）を示すかに応じて、バッファアクセス制御部６，バイパスアクセス制御部７の何れか一方にアクセス経路を切り替える。
【００２７】
以上の構成において、ＣＰＵ２は、書き込みバッファ８並びに読み出しバッファ９に対しては、高速にアクセスしてデータの読み書きを行うことができる。そして、書き込みバッファ８に書き込まれたデータの送信，通信バス３上での通信は、ＣＰＵ２が介在することなくハードウェアによって実行される。また、読み出しバッファ９に対するデータの格納も、ハードウェアである読み出し制御部１１等が通信バス３上での通信を自動的に行うことで実行される。
【００２８】
ＣＰＵ２が読み出しバッファ９を介して読み出すデータは、更新タイマ１７による更新周期の１周期前のデータである可能性がある。また、ＣＰＵ２が書き込みバッファ８を介して送信しようとするデータは、当該バッファ８を経由する分だけ遅れを生じる。したがって、ＣＰＵ２は、制御プログラムの処理に同期して特定のデータの値を取得する必要がある場合，若しくは送信する必要がある場合には、バイパスアクセス制御部７を介すことで、書き込みバッファ８並びに読み出しバッファ９をバイパスして通信モジュール３に直接アクセスする。これにより、通信データの送受信をダイレクトに行うことも可能となっている。
尚、ＣＰＵ２によって実行される制御プログラムが記憶されているメモリや、制御プログラムの実行中にワークエリア等として使用するメモリは、図示はしないがＣＰＵバス２０に直接接続されている。
【００２９】
次に、本実施例の作用について図２ないし図４を参照して説明する。図４（ａ）は、ＣＰＵ２がデータの読み出し及び書き込みを行う場合のアクセス処理を示すフローチャートである。ＣＰＵ２は、先ずバッファ８又は９側にアクセスを行うか、バイパス経路を選択するかを決定する（ステップＳ１）。バッファ８又は９側にアクセスを行う場合で且つ書き込みの場合は（ステップＳ２：ＷＲ）、信号Write Buffer Fullを参照して書き込みバッファ（ＷＲバッファ）８がＦＵＬＬ状態か否かを判断し（ステップＳ３）、ＦＵＬＬ状態でなければ（ＮＯ）書き込みバッファ８にデータを書き込む（ステップＳ４）。そして、「アクセス完了」となる。また、ステップＳ２において、読み出しの場合は（ＲＤ）、読み出しバッファ９よりデータを読み出す（ステップＳ５）。
【００３０】
一方、ステップＳ１において、ＣＰＵがバイパス経路側を選択すると、信号Write Buffer Fullを参照して書き込みバッファ８がＥＭＰＴＹ状態（前記信号がインアクティブ）か否かを判断する（ステップＳ６）。すなわち、書き込みバッファ８がＥＭＰＴＹ状態でなければ、データを転送するためアクセス順序制御部１０にアクセスを行っている可能性があるので、ＣＰＵ２はＥＭＰＴＹ状態になるまで待機する。そして、ＥＭＰＴＹ状態になると（ＹＥＳ）、バイパスアクセス制御部７を介して、アクセス順序制御部１０にアドレスBypass Request Addressを出力し（ステップＳ７：バスＲｅｑ発行）、データの読み出し／書き込みに応じた転送が終了すると（ステップＳ８：バスＲｅｑ完了）、「アクセス完了」となる。以上の処理において、ステップＳ１における経路の選択は、ホストインターフェイス５を介して行われる。
【００３１】
図４（ｂ）は、アクセス順序制御部１０を中心とする通信制御に関する処理を示すフローチャートである。アイドル状態（ステップＳ１１）を抜けると、ステップＳ６と同様に、書き込みバッファ８がＥＭＰＴＹ状態か否かを判断する（ステップＳ１２）。ＥＭＰＴＹ状態でなければ（ＮＯ）、書き込みバッファ８がアクセス順序制御部１０に行うデータ転送を実行させる（ステップＳ１５：Write Buffer Process）。前記データ転送処理が終了すると、ステップＳ１１に戻る。
【００３２】
ステップＳ１２において、書き込みバッファ８がＥＭＰＴＹ状態であれば（ＹＥＳ）、ＣＰＵ２からバイパス経路へのアクセス要求があるか否かを判断する（ステップＳ１３）。上記のアクセス要求があれば（ＹＥＳ）、バイパスアクセス制御部７を介したアクセス要求を受け付けて処理する（ステップＳ１６：Direct Access Process）。それから、ステップＳ１１に移行する。また、上記のアクセス要求が無ければ（ＮＯ）、更新制御ロジック１８よりアドレスRead Buffer Addrが出力されているか、すなわち「ポーリング」要求があるか否かを判断する（ステップＳ１４）。「ポーリング」要求があれば（ＹＥＳ）、当該要求に従い、通信モジュール３を介して他の通信ノードより受信したデータを読み出しバッファ９に転送するBuffer Fill Processを実行する（ステップＳ１７）。
【００３３】
図２は、タイミングチャートである。図２（ａ）は、更新タイマ１７が行うダウンカウント動作を示しており、このカウント動作によって、更新制御ロジック１８がアクセス順序制御部１０にアドレスRead Buffer Addrの出力を開始する周期（ポーリング周期）を設定している。ポーリング時間設定部１６に設定されたタイマ値が更新タイマ１７にロードされ、ダウンカウント動作を開始するタイミングで更新制御ロジック１８にトリガが与えられる。すると、更新制御ロジック１８はポーリング（更新：reflesh）を開始し、ポーリングが終了した後、更新タイマ１７のタイマ値がゼロになると同時にタイマ値がリロードされ、その動作が繰り返される。
【００３４】
図２（ｂ）は、チップ間通信の状態を示しており、ポーリング周期の冒頭から一定時間は、更新制御ロジック１８による通信要求に応じて通信モジュール３が受信したデータを読み出しバッファ９に転送する処理が行われる（ステップＳ１７：Buffer Fill Process）。ここで図３は、通信フレーム（マイクロコンピュータ１のバス上で転送されるデータフォーマット）のイメージを示している。読み出しバッファ９において、１つのエントリに格納されるデータは３２バイトであるから、４バイトアクセスが８回行われ、ポーリングは、読み出しバッファ９に設定されているエントリの数に応じて連続的に実行される。
【００３５】
図２（ｃ）は、ＣＰＵ２が行う各種のアクセスを示している。ＣＰＵ２は、データ転送中（バッファ更新）においても読み出しバッファ９へのリードアクセスが可能となっている。すなわち、読み出しバッファ９へのデータ転送は低速で行われているので、実際には、その転送の途中にＣＰＵ２のリードサイクルを割り込ませて実行する。また、ＣＰＵ２が書き込みバッファ８にデータの書き込みを行うと、その直後にチップ間通信が行われてデータが送信される。また、読み出しバッファ９のデータ転送期間外にＣＰＵ２がバイパス経路にアクセスを行えば（この場合、リード）、その期間は、リアルタイムのチップ間通信となる。
【００３６】
以上のように本実施例によれば、ＣＰＵ２と通信モジュール３との間に、ＣＰＵ２が直接アクセスを行う読み出しバッファ９，及び書き込みバッファ８と、通信要求を周期的に出力することで通信モジュール３が他のノードより受信したデータを読み出しバッファ９に転送する読み出し制御部１１と、書き込みバッファ８に書き込まれているデータを送信データとして通信モジュール３に転送する書き込み制御部８ａとを備える。また、ＣＰＵ２が通信モジュール３との間で直接データの読み書きを行うように制御するバイパスアクセス制御部７と、読み出し，書き込み，バイパスアクセスの各制御部６，７，８ａによる通信モジュール３へのアクセス順序を制御するアクセス順序制御部１０とを備える。
【００３７】
これにより、ＣＰＵ２は、読み出しバッファ９及び書き込みバッファ８に高速でアクセスしてデータの読み出し及び書き込みを行えば良く、通信モジュール３との間における低速なデータ転送は、読み出し制御部１１，書き込み制御部８ａが、アクセス順序制御部１０を経由して実行するので、ＣＰＵ２によるアクセスのレイテンシを短縮して処理効率を向上させることが可能となる。また、制御プログラムの処理に同期してデータの送受信を行う必要がある場合は、書き込みバッファ８，読み出しバッファ９を介すことなく、バイパスアクセス制御部７を介して直接データを送受信することができる。
【００３８】
そして、アクセス順序制御部１０は、読み出し制御部１１による読み出しバッファ９へのデータ転送中に、ＣＰＵ２による書き込みバッファ８への書き込み要求が発生すると、前記データ転送を中断して、ＣＰＵ２による書き込みバッファ８への書き込みを優先して実行させる。したがって、読み出しバッファ９へのデータ転送が継続している期間中に、ＣＰＵ２による書き込みバッファ８へのアクセスを妨げることなく実行させることができる。
また、アクセス順序制御部１０は、読み出し制御部１１による読み出しバッファ９へのデータ転送中に、ＣＰＵ２によるバイパスアクセス要求が発生すると、データ転送を中断して、ＣＰＵ２による通信モジュール３へのアクセスを優先して実行させる。したがって、読み出しバッファ９へのデータ転送が継続している期間中に、ＣＰＵ２による通信モジュール３へのアクセスを妨げることなく実行させることができる。
【００３９】
（第２実施例）
図５ないし図８は第２実施例を示すものであり、第１実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分について説明する。図５は図１の一部相当図であり、第２実施例では、読み出し制御部２１の構成が相違している。読み出し制御部２１には、ポーリング時間設定部１６及び更新タイマ１７が２組（Ａ，Ｂ）配置されている。そして、更新タイマ１７Ａ，１７Ｂには、ポーリング時間設定部１６Ａ，１６Ｂによってそれぞれ異なるタイマ値が設定される。更新制御ロジック２２は、更新タイマ１７Ａ，１７Ｂからのトリガ信号がそれぞれ与えられ、何れが出力したトリガであるかに応じて、出力するアドレスRead Buffer Addrを変化させる。
【００４０】
図６は、更新タイマ１７Ａ，１７Ｂにより生成される２つの更新周期に応じて、読み出しバッファ９内のエントリが更新される状態を示すタイミングチャートであり、（ａ），（ｂ）がそれぞれＡ側（グループＡ），Ｂ側（グループＢ）に対応する。尚、各エントリの更新は、３２バイトのデータ（４バイト×８）に対応する。それぞれの周期の冒頭の期間において、エントリ（０）〜（３）とエントリ（４）〜（７）とが更新される。
【００４１】
また、図７は、グループＡ，Ｂ間で更新周期の一部が重複した場合と、アクセスの一部が競合した場合のタイミングチャートである。図中の時点（１）では、グループＡによる読み出しバッファ９（エントリ（０）〜（３））の更新中に、ＣＰＵ２が書き込みバッファ８に対して書き込みを行った場合である。この時、読み出しバッファ９の更新は一時中断され、書き込みバッファ８に対する書き込みが優先して実行される。
【００４２】
また、グループＡによる読み出しバッファ９の更新中に時点（２）においてグループＢによる更新要求が発生すると、その更新要求はペンディングとなり、時点（３）においてグループＡによる更新が終了した時点でグループＢによるエントリ（４）〜（７）の更新が行われる。また、時点（４）では、グループＡ，Ｂによる読み出しバッファ９の更新要求が同時に発生しているが、この場合はグループＡ側の更新が優先され、グループＢの要求がペンディングとなる。
【００４３】
更に、グループＡ側の更新中に時点（５）で書き込みバッファ８に対する書き込み要求，時点（６）バイパスアクセス要求が発生すると、それらが優先されてグループＡ側の更新もペンディングとなり、バイパスアクセスが終了した時点（７）でグループＡによる更新が継続され、当該更新が終了すると、時点（８）でグループＢ側の更新が実行される。尚、図２（ｅ）には、時点（４）〜（７）における通信フレームのイメージを示しており、読み出しバッファ９のグループＡの更新中に、書き込みバッファデータとバイパスアクセスデータとが割込んでいる。
【００４４】
また、図８は、図７のタイミングチャートに対応したステップＳ１６のBuffer Fill Processの詳細を示している。アクセス順序制御部２３は、読み出しバッファ９の更新中においても、書き込みバッファ８に対する書き込み要求（ステップＳ２１），バイパスアクセス要求（ステップＳ２２）が発生していないかをチェックしており、これらの何れかの要求が発生した場合は（ＹＥＳ）、それぞれの要求を優先して実行する（Ｓ１５，Ｓ１６）。そして、何れの要求も発生していない期間に（ステップＳ２２：ＮＯ）読み出しバッファ９の更新を行う（ステップＳ２３）。
【００４５】
以上のように第２実施例によれば、読み出し制御部２１が、通信要求を独立した複数の周期で発生させるように構成される場合に、アクセス順序制御部２３は、読み出し制御部２１による何れか１つの終期に基づく通信要求に応じて読み出しバッファ９に対するデータ転送が実行されている期間に、その他の周期に従う通信要求が発生すると、実行中のデータ転送が完了した後に他の通信要求を受け付けるようにした。したがって、読み出しバッファ９に対するデータ転送が複数の周期に基づいてそれぞれ実行される場合でも、アクセス順序制御部２３がそれらのアクセス順序を調停して確実に実行させることができる。尚、３つ以上の周期を発生させて対応しても良いことは勿論である。
【００４６】
（第３実施例）
図９及び図１０は第３実施例であり、第１実施例と異なる部分について説明する。図９は、アクセス順序制御部３１を中心とする構成であり、アクセス順序制御部３１の機能の一部を論理回路で示している。アクセス順序制御部３１は、２つのＡＮＤゲート３２，３３と、２つのマルチプレクサ３４，３５とを備えている。ＡＮＤゲート３２，３３の一方の入力端子には、それぞれバイパスリクエスト信号，書き込みバッファリクエスト信号が与えられている。これらのリクエスト信号は、アドレスBypass Request Addr，Write Buffer Addrに対応しており、アドレスの特定のビットで両者を切り分けることができる場合は、それぞれ特定のビットを対応させれば良い。また、それぞれのアドレスをデコードしてリクエスト信号を生成しても良い。
【００４７】
また、ＡＮＤゲート３２，３３の他方であり負論理の入力端子には、読み出し制御部３６より出力される読み出しバッファ優先信号が与えられている。読み出しバッファ優先信号は、更新タイマ１７のタイマ値と、優先度変更スレッショールド設定レジスタ３７に設定されている閾値とが比較器３８により比較され、前者のタイマ値が後者の閾値を下回るとアクティブ（ハイ）となる。
【００４８】
ＡＮＤゲート３２の出力端子は、マルチプレクサ３４の一方の入力端子に接続されていると共に、マルチプレクサ３４の選択切替え端子にも接続されている。そして、マルチプレクサ３４の他方の入力端子には、読み出しバッファリクエスト信号（アドレスRead Buffer Addrに対応）が与えられている。そして、ＡＮＤゲート３３の出力端子と、マルチプレクサ３４の出力端子とは、マルチプレクサ３５の入力端子にそれぞれ接続されている。また、ＡＮＤゲート３３の出力端子は、マルチプレクサ３５の選択切替え端子にも接続されている。
【００４９】
マルチプレクサ３４，３５は何れも、選択切替え端子のレベルがローの場合は入力端子Ｌ側を選択し、同レベルがハイの場合は入力端子Ｈ側を選択する。そして、マルチプレクサ３５の出力端子が、通信モジュール３に対してアドレスReq Addrを与えるようになっている。尚、図９では、アドレスに基づく信号とアドレスとを区別せずに示しているが、実際には、マルチプレクサ３５を介して選択された要求に対応するアドレスが、アドレスReq Addrとして通信モジュール３に与えられる。
【００５０】
次に、第３実施例の作用について図１０も参照して説明する。読み出しバッファ９の更新周期の冒頭部分では、読み出しバッファ優先信号はインアクティブ（ロー）である（（ｃ），（ｄ）参照）。この状態で、読み出しバッファ９のデータ転送中に書き込みバッファ８に対する書き込み要求が発生すると（（ａ）参照）、マルチプレクサ３５では、書き込みバッファリクエスト信号が選択されるので、書き込みバッファ８に対する書き込みが優先して実行される（（ｂ）参照）。尚、バイパス経路に対するアクセス要求が発生した場合も、マルチプレクサ３４，３５を介してバイパスリクエスト信号が選択されるので、バイパス経路に対するアクセスが優先して実行される。その後、更新タイマ１７のタイマ値が低下し続けた結果、レジスタ３２に設定されている閾値を下回ると、読み出しバッファ優先信号がアクティブとなる（（ｃ），（ｄ）参照）。
【００５１】
そして、例えば更新周期の冒頭から、例えばバイパス経路に対するアクセス要求と競合することで後者が優先して実行され、その実行時間が長い場合には、読み出しバッファ９の更新がペンディングされたまま更新タイマ１７のタイマ値が低下し続ける。その結果、レジスタ３２に設定されている閾値を下回ると、読み出しバッファ優先信号がアクティブとなることで、読み出しバッファリクエスト信号（アドレスRead Buffer Addr）がマルチプレクサ３４，３５を介して通信モジュール３に出力され、今度は読み出しバッファ９の更新が優先して実行される。
【００５２】
以上のように第３実施例によれば、読み出し制御部３６は、通信モジュール３が受信したデータを読み出しバッファ９に転送する際に、更新周期の残時間がデータの転送を当該周期内に完了させる限界時間に到達すると、自身が通信モジュール３に優先的にアクセスするための優先信号を出力する。そして、アクセス順序制御部３１は、その優先信号が与えられると、書き込み制御部８ａ，並びにバイパスアクセス制御部７による通信モジュール３へのデータ転送要求に優先して、読み出し制御部３６による通信モジュール３へのアクセスを許可する。したがって、読み出しバッファ９へのデータ転送を更新周期内に確実に終了させることができる。
【００５３】
（第４実施例）
図１１は、第４実施例を示す図１の一部相当図である。尚、第１実施例と機能が同一の部分については図示を省略している。第４実施例では、読み出しバッファ９に替わる読み出しバッファ４１が配置され、その読み出しバッファ４１は、読み出し制御部（データ更新手段）４２によって制御される。読み出し制御部４２は、タグメモリ４３を備えている。読み出しバッファ４１に対しては、書き込みバッファ８がアクセス順序制御部１０に出力する書き込みデータWrite Buffer Dataと、アクセス順序制御部１０を介してバイパスアクセス制御部７に出力されるデータBypass Read Data，また、バイパスアクセス制御部７からアクセス順序制御部１０に出力されるデータBypass Write Dataが、更新用のデータUpdate Dataとして入力されている。
【００５４】
タグメモリ４３には、初期設定において、データUpdate Dataを格納するエントリを指定するためのベースアドレスUpdate Addrも設定されており、そのベースアドレスUpdate Addrを読み出しバッファ４１に与えるため、書き込みバッファ８がアクセス順序制御部１０に出力する書き込みアドレスWrite Buffer Addrと、バイパスアクセス制御部７からアクセス順序制御部１０に出力されるアドレスBypass Request Addrとが与えられている。尚、図１１では、アドレスバス，データバスを直結して図示している部分があるが、これらはバスを物理的に接続することを意味するものではなく、それぞれのアドレスやデータが、読み出しバッファ４１やタグメモリ４３に対してＯＲ条件で入力されることを意味する。 
【００５５】
次に、第４実施例の作用について説明する。第４実施例では、ＣＰＵ２が書き込みバッファ８に書き込んだデータが、アドレスと共にアクセス順序制御部１０を経由して通信モジュール３に出力されると、読み出しバッファ４１には、タグメモリ４３を介してベースアドレスUpdate Addrが与えられる。それと同時に、読み出しバッファ４１には、書き込みデータWrite Buffer Dataが更新用のデータUpdate Dataとして入力されるので、対応するエントリがデータWrite Buffer Dataにより更新される。
【００５６】
例えば、ＣＰＵ２が外部に送信しようとするデータは、例えばＨＤＤやメモリカード等の外部記憶装置等に書き込んで記憶させるデータ、設定データとして保存する必要があるデータであり、ＣＰＵ２のみにより更新されるものである。したがって、このような書き込みデータを読み出しバッファ４１にも書き込んで、対応するエントリを更新することで、データのコヒレンシを良好に維持できるようになる。
また、ＣＰＵ２がバイパスアクセス制御部７を介して、バイパス経路によりアクセスを行う場合も同様に、アドレスBypass Request Addrにより読み出しバッファ４１にはベースアドレスUpdate Addrが与えられ、データBypass Read Data，またはデータBypass Write Dataが更新用のデータUpdate Dataとして入力されて、対応するエントリが更新される。
【００５７】
以上のように第４実施例によれば、読み出し制御４２は、書き込み制御部８ａが、書き込みバッファ８に書き込まれたデータを通信モジュール３に転送する際に、読み出しバッファ４１のデータを更新する。また、ＣＰＵ２が、バイパス経路を介して通信モジュール３との間でデータの読み書きを行う際にも読み出しバッファ４１のデータを更新する。したがって、ＣＰＵ２が、書き込みバッファ８に書き込んで他の通信ノードに送信しようとするデータや、直接他の通信ノードに送信しようとするデータ，又は直接他の通信ノードから受信したデータを、直ちに読み出しバッファ４１に反映させることができる。
【００５８】
（第５実施例）
図１２は第５実施例である。第５実施例では、通信バス４が２つに分かれており（Ａ，Ｂ）、通信バス４Ａには周辺回路１２が接続され、通信バス４Ｂには周辺回路１３が接続されている。そして、マイクロコンピュータ５１は、通信バス４Ａ，４Ｂに対応して、２つの通信モジュール３Ａ，３Ｂと、２つのアクセス順序制御部１０Ａ，１０Ｂを備えている。アクセス順序制御部１０Ａ，１０Ｂは、通信ＩＤデコーダ（通信用デコーダ）５２と共に通信選択部５３の一部を構成している。
【００５９】
通信ＩＤデコーダ５２は、ＣＰＵ２又は読み出し制御部１１等が、通信先を指定するために出力するアドレスの値に応じて、アクセス順序制御部１０Ａ及び通信モジュール３Ａ側と、アクセス順序制御部１０Ｂ及び通信モジュール３Ｂ側との何れを使用するかを選択して、入力されたアドレスや、データパスを切り替える。尚、通信バス３は３つ以上に別れていても良く、それに応じて通信モジュール３及びアクセス順序制御部１０の組が３組以上存在しても良い。
以上のように第５実施例によれば、通信モジュール３及びアクセス順序制御部１０を複数設け、通信ＩＤデコーダ５２が、ＣＰＵ２又は読み出し制御部１１により指定される通信先に応じて、複数の通信モジュール３及び前記アクセス順序制御部１０の内何れを使用するかを決定するので、通信をより多様な形態で行うことができる。
【００６０】
（第６実施例）
図１３は第６実施例であり、第１実施例と異なる部分のみ説明する。第６実施例のマイクロコンピュータ６１では、ＣＰＵバス２０に、複数のＣＰＵ２Ａ，２Ｂ，…と、複数のＤＭＡコントローラ（ホスト）６２Ａ，６２Ｂ，…とが接続されており、マルチホスト構成となっている。そして、ＣＰＵバス２０の使用権はバス調停部６３において行われ、上記使用権を得たものがホストインターフェイス５を介して書き込みバッファ８，読み出しバッファ９にアクセス可能となっている。以上のように構成される第６実施例によれば、ホストが複数存在する場合についても本発明を適用できる。
【００６１】
本発明は上記し、又は図面に記載した実施例にのみ限定されるものではなく、以下のような変型又は拡張が可能である。
読み出しバッファ９に対するデータ転送中に発生した書き込みバッファ８への書き込みや、バイパス経路へのアクセスを優先して実行する処理については、必要に応じて行えば良い。
読み出し制御部３６が読み出しバッファ９にデータ転送を行う期間が十分確保されている場合には、第３実施例の構成は不要である。
ホストは、ＣＰＵ２やＤＭＡコントローラ６２に限らず、例えばＤＳＰ等であっても良い。
【００６２】
データバスサイズや記憶容量，データ転送速度等については、個別の設計に応じて適宜変更すれば良い。
【符号の説明】
【００６３】
図面中、１はマイクロコンピュータ、２はＣＰＵ（ホスト）、３は通信モジュール、４は通信バス（通信ネットワーク）、６はバッファアクセス制御部、７はバイパスアクセス制御部、８は書き込みバッファ、８ａは書き込み制御部、９は読み出しバッファ、１０はアクセス順序制御部、１１は読み出し制御部、１２，１３は周辺回路（通信ノード）、２１は読み出し制御部、３１はアクセス順序制御部、３６は読み出し制御部、４１は読み出しバッファ、４２は読み出し制御部（データ更新手段）、５１はマイクロコンピュータ、５２は通信ＩＤデコーダ（通信用デコーダ）、６１はマイクロコンピュータ、６２はＤＭＡコントローラ（ホスト）を示す。
【図１】
0005304815.tif 000002
【図２】
0005304815.tif 000003
【図３】
0005304815.tif 000004
【図４】
0005304815.tif 000005
【図５】
0005304815.tif 000006
【図６】
0005304815.tif 000007
【図７】
0005304815.tif 000008
【図８】
0005304815.tif 000009
【図９】
0005304815.tif 000010
【図１０】
0005304815.tif 000011
【図１１】
0005304815.tif 000012
【図１２】
0005304815.tif 000013
【図１３】
0005304815.tif 000014