(57)【要約】    【課題】      デュアルポートメモリのサイズを超えるデータの通信を可能とし、更にデュアルポートメモリに十分な空き領域が無い場合においてもＣＰＵ間でのデータ通信を行うこと。    【解決手段】  少なくとも２つのＣＰＵ（１０１、１０５）間のデータ通信を行うデータ通信装置において、送信データのうちデュアルポートメモリ（１０４）のリングバッファ（１０９、１１２）に書き込みを行っていないデータを格納するための未送信データ格納バッファ（１０３、１０７）を設ける。  【選択図】      図１
2005202576.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つのＣＰＵ間のデータ通信を行うデータ通信装置において、
データの送受信を行う複数のＣＰＵと、前記ＣＰＵ間でのデータの受け渡しを行うためのデュアルポートメモリと、前記デュアルポートメモリ内に割り当てられた送信データ格納用のリングバッファと、前記デュアルポートメモリ上に割り当てられたリングバッファの書き込みアドレスを示すライトポインタと、前記デュアルポートメモリ上に割り当てられたリングバッファの読み出しアドレスを示すリードポインタと、送信データの書き込み完了及び読み出し完了の通知を行う割り込み発生回路と、送信データのうちデュアルポートメモリのリングバッファに書き込みを行っていないデータを格納するための未送信データ格納バッファと、を具備することを特徴とするデータ通信装置。
【請求項２】
送信データのサイズが前記デュアルポートメモリ上に割り当てられたリングバッファの空き領域サイズを超える場合に、前記リングバッファの空き領域サイズだけの送信データを前記リングバッファに書き込み、残りの送信データを前記未送信データ格納バッファに格納することを特徴とする請求項１に記載のデータ通信装置。
【請求項３】
送信データが発生したときに前記未送信データ格納バッファにデータが存在する場合には、前記デュアルポートメモリ上に割り当てられたリングバッファへの書き込みを行わずに前記未送信データ格納バッファに格納することを特徴とする請求項１または請求項２記載のデータ通信装置。
【請求項４】
受信側ＣＰＵからデータ受信完了の通知を受けたときに前記未送信データ格納バッファを確認し、前記未送信データ格納バッファに未送信データがある場合には、前記デュアルポートメモリ上に割り当てられたリングバッファの空き領域サイズを確認し、空き領域サイズを超えない範囲で前記未送信データ格納バッファのデータを前記デュアルポートメモリ上に割り当てられたリングバッファに書き込み、前記未送信データ格納バッファのデータを削除することを特徴とする請求項１から請求項３のいずれかに記載のデータ通信装置。
【請求項５】
前記未送信データ格納バッファは、データを格納する未送信データ格納リングバッファと、前記未送信データ格納リングバッファの書き込みアドレスを示す未送信データ格納バッファライトポインタと、前記未送信データ格納リングバッファの読み出しアドレスを示す未送信データ格納バッファリードポインタとを具備することを特徴とする請求項１記載のデータ通信装置。
【請求項６】
前記未送信データ格納バッファは、管理領域と未送信データ領域とから構成されて動的に領域を確保する未送信データバッファと、前記未送信データバッファの先頭アドレスを示すポインタテーブルとを具備し、前記未送信データバッファの前記管理領域には次の未送信データバッファの先頭アドレスを格納する次バッファポインタを持つことにより、前記未送信データ格納バッファが前記未送信データバッファのチェーン構造により構成されることを特徴とする、請求項１記載のデータ通信装置。
【請求項７】
前記未送信データ格納バッファがチェーン構造により構成されている場合に、各送信データ単位に優先度を設け、前記未送信データ格納バッファに、前記未送信データバッファを優先度順に登録することを特徴とする請求項１から請求項６のいずれかに記載のデータ通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ通信装置に関し、特にデュアルポートメモリを用いて複数のＣＰＵ間でデータ通信するデータ通信装置に関する。
【背景技術】
【０００２】
従来、デュアルポートメモリを用いて複数のＣＰＵ間でデータ通信するＣＰＵ間データ通信装置は、図９に示すように、ＣＰＵ９０１と、ＣＰＵ９０６と、ＣＰＵ９０１とＣＰＵ９０６との間に介在するデュアルポートメモリ９０３と、ＣＰＵ９０１とデュアルポートメモリ９０３とを接続するデータバス９０２と、ＣＰＵ９０６とデュアルポートメモリ９０３とを接続するデータバス９０７と、デュアルポートメモリ９０３のリードポインタ９０４と、デュアルポートメモリ９０３のライトポインタ９０５とから主に構成されている。
【０００３】
このように構成された従来のＣＰＵ間データ通信装置において、デュアルポートメモリ９０３を複数に分割し、空き領域に対して送信データを書き込み、書き込んだアドレスをライトポインタ９０５に格納してＣＰＵ９０６に通知し、通知を受けたＣＰＵ９０６はライトポインタ９０５のアドレスからデータを取り出し、取り出したアドレスをリードポインタ９０４に格納し、次の送信ではリードポインタ９０４に格納されたアドレスを空き領域として使用することでＣＰＵ間のデータ通信を行っている（例えば、特許文献１）。
【特許文献１】特開２００２−２０７７１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の方法では、デュアルポートメモリの分割された領域のサイズを超えるデータ通信を行うことができないという問題がある。また、データ送信時にデュアルポートメモリに空きが無い場合にはデータ通信を行うことができないという問題がある。
【０００５】
本発明はかかる点に鑑みてなされたものであり、デュアルポートメモリのサイズを超えるデータの通信を可能とし、更にデュアルポートメモリに十分な空き領域が無い場合においてもＣＰＵ間でのデータ通信を行うことができるデータ通信装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のデータ通信装置は、少なくとも２つのＣＰＵ間のデータ通信を行うデータ通信装置において、データの送受信を行う複数のＣＰＵと、前記ＣＰＵ間でのデータの受け渡しを行うためのデュアルポートメモリと、前記デュアルポートメモリ内に割り当てられた送信データ格納用のリングバッファと、前記デュアルポートメモリ上に割り当てられたリングバッファの書き込みアドレスを示すライトポインタと、前記デュアルポートメモリ上に割り当てられたリングバッファの読み出しアドレスを示すリードポインタと、送信データの書き込み完了及び読み出し完了の通知を行う割り込み発生回路と、送信データのうちデュアルポートメモリのリングバッファに書き込みを行っていないデータを格納するための未送信データ格納バッファと、を具備する構成を採る。
【０００７】
この構成によれば、前記デュアルポートメモリのリングバッファに格納できない送信データを保持しておくことができ、前記デュアルポートメモリのサイズを超えるデータを送受信することができる。
【０００８】
本発明のデータ通信装置は、送信データのサイズが前記デュアルポートメモリ上に割り当てられたリングバッファの空き領域サイズを超える場合に、前記リングバッファの空き領域サイズだけの送信データを前記リングバッファに書き込み、残りの送信データを前記未送信データ格納バッファに格納する構成を採る。
【０００９】
この構成によれば、前記デュアルポートメモリのリングバッファを有効に活用することができ、ＣＰＵ間のハンドシェイクに必要な割り込みの回数を減らすことができ、ＣＰＵ間データ通信に要する時間を短縮することができる。
【００１０】
本発明のデータ通信装置は、送信データが発生したときに前記未送信データ格納バッファにデータが存在する場合には、前記デュアルポートメモリ上に割り当てられたリングバッファへの書き込みを行わずに前記未送信データ格納バッファに格納する構成を採る。
【００１１】
この構成によれば、データ送受信完了前に次のデータ送信要求が出たときでも、データが混ざり合うことなくデータ通信を行うことができる。
【００１２】
本発明のデータ通信装置は、受信側ＣＰＵからデータ受信完了の通知を受けたときに前記未送信データ格納バッファを確認し、前記未送信データ格納バッファに未送信データがある場合には、前記デュアルポートメモリ上に割り当てられたリングバッファの空き領域サイズを確認し、空き領域サイズを超えない範囲で前記未送信データ格納バッファのデータを前記デュアルポートメモリ上に割り当てられたリングバッファに書き込み、前記未送信データ格納バッファのデータを削除する構成を採る。
【００１３】
この構成によれば、前記デュアルポートメモリ上に割り当てられたリングバッファに空きができた時点で次のデータ送信を行うことが可能であり、ＣＰＵ間のデータ通信に要する時間を短縮することができる。
【００１４】
本発明のデータ通信装置は、前記未送信データ格納バッファとして、データを格納する未送信データ格納リングバッファと、前記未送信データ格納リングバッファの書き込みアドレスを示す未送信データ格納バッファライトポインタと、前記未送信データ格納リングバッファの読み出しアドレスを示す未送信データ格納バッファリードポインタとを具備する構成を採る。
【００１５】
この構成によれば、未送信データ及び未送信データのサイズを容易に管理することができる。
【００１６】
本発明のデータ通信装置は、前記未送信データ格納バッファとして、管理領域と未送信データ領域とから構成されて動的に領域を確保する未送信データバッファと、前記未送信データバッファの先頭アドレスを示すポインタテーブルとを具備し、前記未送信データバッファの前記管理領域には次の未送信データバッファの先頭アドレスを格納する次バッファポインタを持つことにより、前記未送信データ格納バッファが前記未送信データバッファのチェーン構造により構成される。
【００１７】
この構成によれば、システムの記憶領域を有効に活用することができる。
【００１８】
本発明のデータ通信装置は、前記未送信データ格納バッファがチェーン構造により構成されている場合に、各送信データ単位に優先度を設け、前記未送信データ格納バッファに、前記未送信データバッファを優先度順に登録する構成を採る。
【００１９】
この構成によれば、ＣＰＵ間で通信するデータを優先度順に送信することができる。
【発明の効果】
【００２０】
本発明によれば、デュアルポートメモリのサイズを超えるデータの通信を可能とし、更にデュアルポートメモリに十分な空き領域が無い場合においてもＣＰＵ間でのデータ通信を行うことのできるデータ通信装置を提供することができる。
【発明を実施するための最良の形態】
【００２１】
本発明の骨子は、複数のＣＰＵ間におけるデータ送受信において、ＣＰＵ間でのデータの受け渡しを行うためのデュアルポートメモリの他に、送信データのうちデュアルポートメモリに書き込みを行っていないデータを格納するための未送信データ格納バッファを設けることである。
【００２２】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００２３】
（実施の形態）
図１は、本発明の一実施の形態に係るデータ通信装置の構成を示すブロック図である。
【００２４】
図１のデータ通信装置は、ＣＰＵ１０１とＣＰＵのデータバス１０２と、ＣＰＵの未送信データ格納バッファ１０３と、ＣＰＵ間のデータ通信を行うためのデュアルポートメモリ１０４と、ＣＰＵ１０５と、ＣＰＵのデータバス１０６と、ＣＰＵの未送信データ格納バッファ１０７と、割り込み発生回路１０８と、デュアルポートメモリ上に送信データを格納するリングバッファ１０９及び１１２と、上記リングバッファそれぞれのリードポインタ１１０及び１１３と、上記リングバッファそれぞれのライトポインタ１１１及び１１４とから主に構成される。
【００２５】
以上のように構成されたデータ通信装置について、ＣＰＵ１０１からＣＰＵ１０５へのデータ送信手順を、図２を参照して説明する。
【００２６】
図２はＣＰＵ１０１におけるデータ送信処理のフロー図である。
【００２７】
データ送信処理においては、まず未送信データ格納バッファ１０３に未送信データがあるかどうかを確認する（Ｓ２０１）。
【００２８】
Ｓ２０１の結果、未送信データ格納バッファ１０３に未送信データがある場合、送信データを未送信データ格納バッファ１０３に格納し（Ｓ２０３）、処理を終了する。一方、未送信データ格納バッファ１０３に未送信データがない場合、リングバッファ１０９の空き領域サイズの確認を行う（Ｓ２０２）。
【００２９】
Ｓ２０２の結果、リングバッファ１０９の空き領域サイズが送信データサイズより大きい場合は、送信データをリングバッファ１０９のライトポインタ１１１の示す領域に格納し（Ｓ２０５）、格納したデータサイズ分だけライトポインタ１１１を進め（Ｓ２０７）、割り込み発生回路１０８に対してＣＰＵ１０５へのデータ送信完了割り込み発生を設定し（Ｓ２０９）、処理を終了する。一方、リングバッファ１０９の空き領域サイズが送信データサイズより小さい場合は、リングバッファ１０９の空き領域サイズと同じサイズだけの送信データをリングバッファ１０９のライトポインタ１１１の示す領域に格納し（Ｓ２０４）、格納したデータサイズ分だけライトポインタ１１１を進め（Ｓ２０６）、リングバッファ１０９へ格納していない送信データを未送信データ格納バッファ１０３に格納し（Ｓ２０８）、割り込み発生回路１０８に対してＣＰＵ１０５へのデータ送信完了割り込み発生を設定し（Ｓ２０９）、処理を終了する。
【００３０】
次に、ＣＰＵ１０５において、ＣＰＵ１０１から割り込み発生回路１０８を経由してデータ送信完了割り込みを受信したときの受信処理を図３、図４を参照して説明する。
【００３１】
図３は、ＣＰＵ間データ通信装置において送受信されるデータの構成を示した図である。
【００３２】
送受信データは、管理情報部３０１とデータ部３０２とからなる構成をとり、さらに管理情報部はデータサイズ３０３を含む構成をとる。
【００３３】
図４は、ＣＰＵ１０５において、ＣＰＵ１０１から割り込み発生回路１０８を経由してデータ送信完了割り込みを受信したときのデータ受信処理のフロー図である。
【００３４】
データ受信処理においては、まず管理情報部３０１のデータサイズ３０３を受信しているかどうかを判定する（Ｓ４０１）。データサイズ３０３を未受信の場合はリングバッファ１０９のリードポインタ１１０が示す領域からデータサイズ３０３を含む管理情報部３０１を読み出し（Ｓ４０２）、リードポインタ１１０を進める（Ｓ４０３）。上記データサイズ３０３を受信後、または既にデータサイズ３０３を受信済みの場合は、リードポインタ１１０とライトポインタ１１１が一致するかどうかを比較する（Ｓ４０４）。
【００３５】
Ｓ４０４の結果、リードポインタ１１０とライトポインタ１１１が一致する場合は、割り込み発生回路１０８に対してＣＰＵ１０１へのデータ受信完了割り込み発生を設定し（Ｓ４０５）、処理を終了する。一方、リードポインタ１１０とライトポインタ１１１が一致しない場合は、リングバッファ１０９のリードポインタ１１０が示す領域からデータを取り込み（Ｓ４０６）、リードポインタ１１０を進め（Ｓ４０７）、前記データサイズ３０３だけのデータを受信したかどうかを判定する（Ｓ４０８）。データサイズ３０３だけのデータを受信していない場合は、Ｓ４０４の処理へ戻る。データサイズ３０３だけのデータを受信している場合は、受信したデータをＣＰＵ１０５の処理手順へ渡し（Ｓ４０９）、取り込んでいたデータサイズを初期化し（Ｓ４１０）、リードポインタ１１０とライトポインタ１１１が一致しているかどうかを判定する（Ｓ４１１）。
【００３６】
Ｓ４１１の結果、リードポインタ１１０とライトポインタ１１１が一致している場合は、前記Ｓ４０５の処理へ移る。一方、リードポインタ１１０とライトポインタ１１１が一致していない場合は、前記Ｓ４０２の処理へ移る。
【００３７】
次に、ＣＰＵ１０１において、ＣＰＵ１０５から割り込み発生回路１０８を経由してデータ受信完了割り込みを受信したときの未送信データ送信処理を図５を参照して説明する。
【００３８】
図５は、ＣＰＵ１０１において、データ受信完了割り込みを受信したときの未送信データ送信処理のフロー図である。
【００３９】
未送信データ送信処理においては、まず未送信データ格納バッファ１０３に未送信データがあるかどうかを判定する（Ｓ５０１）。
【００４０】
Ｓ５０１の結果、未送信データ格納バッファ１０３に未送信データがある場合は、リードポインタ１１０とライトポインタ１１１とからリングバッファ１０９の空きサイズを算出し（Ｓ５０２）、リングバッファ１０９の空きサイズ以下の未送信データをリングバッファ１０９へ設定し（Ｓ５０３）、設定したデータ分だけライトポインタ１１１を更新し（Ｓ５０４）、設定済みのデータを未送信データ格納バッファ１０３から削除し（Ｓ５０５）、割り込み発生回路１０８に対してＣＰＵ１０５へのデータ送信完了割り込み発生を設定し（Ｓ５０６）、処理を終了する。一方、未送信データ格納バッファ１０３に未送信データがない場合は、処理を終了する。
【００４１】
図６は、前記未送信データ格納バッファ１０３の構成の１形態で、未送信データ格納バッファをリングバッファにより構成した場合を示した図である。
【００４２】
リングバッファで構成された未送信データ格納リングバッファ６０１に格納された未送信データ６０２に対し先頭の未送信データの位置を示す未送信データ格納バッファリードポインタ６０３と、最後の未送信データの次を示す未送信データ格納バッファライトポインタ６０４とから主に構成される。
【００４３】
未送信データ格納リングバッファ６０１に未送信データを追加する場合、未送信データ格納バッファライトポインタ６０４の示す位置から未送信データを格納し、格納した最終位置の次を示すように未送信データ格納バッファライトポインタ６０４を更新する。
【００４４】
未送信データ格納リングバッファ６０１から未送信データを取り出す場合、未送信データ格納バッファリードポインタ６０３の示す位置から未送信データを取り出し、最後に取り出した位置の次を示すように未送信データ格納バッファリードポインタ６０３を更新する。取り出したことによる未送信データ格納リングバッファ６０１からの未送信データの削除は、未送信データ格納バッファリードポインタ６０３を移動することで行う。
【００４５】
未送信データ格納リングバッファ６０１に未送信データ６０２がある場合は未送信データ格納バッファリードポインタ６０３と未送信データ格納バッファライトポインタ６０４が異なる位置を示し、未送信データ６０２がない場合は未送信データ格納バッファリードポインタ６０３と未送信データ格納バッファライトポインタ６０４が同じ位置を示す。
【００４６】
図７は、前記未送信データ格納バッファ１０３の構成の１形態で、未送信データ格納バッファをチェーン構造のバッファにより構成した場合を示した図である。
【００４７】
前記未送信データ格納バッファ１０３を、未送信データバッファの先頭アドレスを示すポインタテーブル７０１と、必要に応じて動的に領域を確保する未送信データバッファ７０２、７０６、７１０とからなるチェーン構造で構成した場合を示したものである。
【００４８】
ポインタテーブル７０１は、初期状態および未送信データがない状態においてはＮＵＬＬポインタを示し、未送信データがある状態では、最初に送信する未送信データを持つ未送信データバッファ７０２の先頭アドレスを示す。
【００４９】
未送信データバッファ７０２は、管理領域７０３と、未送信データ領域７０５とから構成されて、未送信データバッファ７０２の管理領域７０３には次の未送信データバッファ７０６の先頭アドレスを格納する次バッファポインタ７０４を持つ。
【００５０】
最後の未送信データバッファ７１０の管理領域７１１に含まれる次バッファポインタ７１２はＮＵＬＬポインタを持つ。
【００５１】
上記構造の未送信データ格納バッファに未送信データを追加する場合、未送信データのサイズに管理領域のサイズを加えたサイズの領域を確保し、確保した領域の未送信データ領域に未送信データを格納し、管理領域の次バッファポインタにＮＵＬＬを格納し、現在の未送信データバッファ列の最後の未送信データバッファの管理領域にある次バッファポインタに、新たに確保した未送信データバッファの先頭アドレスを格納する。
【００５２】
上記構造の未送信データ格納バッファから未送信データ取り出す場合、ポインタテーブル７０１の示す未送信データバッファ７０２の未送信データ領域７０５から取り出し、全て取り出し終えた場合には未送信データバッファ７０２の管理領域７０３に含まれる次バッファポインタ７０４にあるアドレスをポインタテーブル７０１に格納し、未送信データバッファ７０２の領域を開放する。
【００５３】
図８は、図７に示した前記未送信データ格納バッファ１０３の構成において、未送信データに優先度を持たせ、優先度順に送信する場合の１形態を示したものである。
【００５４】
未送信データバッファの管理領域に未送信データの優先度を示す情報８０１、８０２、および８０３を設ける。ここでは、優先度は大きな値ほど優先度が高いとする。
【００５５】
未送信データバッファが優先度順に７０２、７０６、７１０の順で連結されており、それぞれの優先度がＮ、Ｎ−１、Ｎ−３である時に、優先度がＮ−２である未送信データバッファ８０４を追加する場合を説明する。この場合、未送信データバッファ８０４は、優先度順として未送信データバッファ７０６と未送信データバッファ７１０の間に入ることとなり、次バッファポインタ７０８に未送信データバッファ８０４の先頭アドレスを設定し、次バッファポインタ８０６に未送信データバッファ７１０の先頭アドレスを設定する。
【００５６】
なお、図２から図８を用いた説明はＣＰＵ１０１からＣＰＵ１０５へのデータ送信の例を示しているが、ＣＰＵ１０５からＣＰＵ１０１へのデータ送信は、リングバッファ１１２、リードポインタ１１３、ライトポインタ１１４、未送信データ格納バッファ１０７を用いることで、同様に行うことができる。
【００５７】
このように本実施の形態によれば、複数のＣＰＵ間におけるデータ送受信において、ＣＰＵ間でのデータの受け渡しを行うためのデュアルポートメモリの他に、送受信データのうちデュアルポートメモリに書き込みを行っていないデータを格納するための未送信データ格納バッファを設けることにより、デュアルポートメモリのサイズを超えるデータの通信を可能とし、更にデュアルポートメモリに十分な空き領域が無い場合においてもＣＰＵ間でのデータ通信を行うことができる。
【産業上の利用可能性】
【００５８】
本発明は、複数のＣＰＵ間におけるデータ送受信において、デュアルポートメモリのサイズを超えるデータを送受信することができるという効果を有するデータ通信装置を提供するものである。
【図面の簡単な説明】
【００５９】
【図１】本発明の一実施の形態に係るデータ通信装置の構成を示すブロック図
【図２】本発明の一実施の形態に係るデータ通信装置のデータ送信処理のフロー図
【図３】本発明の一実施の形態に係るデータ通信装置の送受信されるデータの構成図
【図４】本発明の一実施の形態に係るデータ通信装置のデータ受信処理のフロー図
【図５】本発明の一実施の形態に係るデータ通信装置の未送信データ送信処理のフロー図
【図６】本発明の一実施の形態に係るデータ通信装置のリングバッファによる未送信データ格納バッファの構成を示すブロック図
【図７】本発明の一実施の形態に係るデータ通信装置のチェーン構造による未送信データ格納バッファの構成を示すブロック図
【図８】本発明の一実施の形態に係るデータ通信装置の送信メッセージの優先度による未送信データ格納バッファの管理方法を示すブロック図
【図９】従来のデータ通信装置の構成を示すブロック図
【符号の説明】
【００６０】
１０１  ＣＰＵ
１０２  ＣＰＵのデータバス
１０３  ＣＰＵの未送信データ格納バッファ
１０４  デュアルポートメモリ
１０５  ＣＰＵ
１０６  ＣＰＵのデータバス
１０７  ＣＰＵの未送信データ格納バッファ
１０８  割り込み発生回路
１０９、１１２  リングバッファ
１１０、１１３  リードポインタ
１１１、１１４  ライトポインタ
３０１  送受信データの管理情報部
３０２  送受信データのデータ部
３０３  送受信データのデータサイズ
【図１】
2005202576.tif 000003
【図２】
2005202576.tif 000004
【図３】
2005202576.tif 000005
【図４】
2005202576.tif 000006
【図５】
2005202576.tif 000007
【図６】
2005202576.tif 000008
【図７】
2005202576.tif 000009
【図８】
2005202576.tif 000010
【図９】
2005202576.tif 000011