(57)【要約】【課題】容量の小さなデータを連続で受信した場合にもメモリを有効に利用できるデータ転送制御装置とする。【解決手段】バッファメモリ１ａにデータの書き込みを行う時、書き込みを行ったＦＩＦＯブロックの先頭アドレス、終端アドレス、データサイズを対応するＦＩＦＯブロックレジスタに書き込み、同時にＥＭＰＴＹビットにＦＵＬＬを設定する。データの読み出しを行う時、読み出しカウンタ３ａを用いて読み出しをおこなった回数をカウントしてバッファメモリ１ａから何バイトのデータを読み出したかを算出し、アクセスをおこなっているＦＩＦＯブロックのデータがすべて読み出されると対象となるＦＩＦＯブロックレジスタのＥＭＰＴＹビットをＥＭＰＴＹに設定する。【選択図】図１
2004030196.tif 000002
【特許請求の範囲】
【請求項１】
データ転送元とデータ転送先との間に介在し、転送データをメモリに書き込む処理と該メモリから前記転送データを読み出す処理とを行うデータ転送制御装置において、
前記メモリを複数のＦＩＦＯブロックとして用いるために前記転送データの書き込みが行われた領域の先頭アドレス、終端アドレス、およびデータサイズを保持するレジスタと、前記メモリの空き容量を算出する手段と、前記ＦＩＦＯブロックが空かどうかを判別する手段と、前記メモリに対する転送データの書き込みごとにインクリメントするカウンタと、前記メモリに対する転送データの読み出しごとにデクリメントするカウンタと、を備えたことを特徴とするデータ転送制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送元とデータ転送先との間に介在し、転送データをメモリに書き込む処理とメモリから転送データを読み出す処理とを行うデータ転送制御装置に関し、特に、先入れ先出しメモリ（ＦＩＦＯ）として用いるバッファメモリの利用効率を向上させることを目的としたデータ転送制御装置に関するものである。
【０００２】
【従来の技術】
従来のデータ転送制御装置としては、例えば特公平７−７８７８１号に開示されているように、データ転送先のバッファの空き情報をデータ転送元が取得し、受信可能になってからデータ送信をおこなうことによって、データのオーバーフローを防止するものがある（以下、従来の第１の装置）。
【０００３】
また、例えば特開平１１−１６１４６７号公報に開示されているように、転送先において転送データを受信する際に事前に書き込み可能／不可能をパケット内のヘッダ部に記されている書き込みデータサイズを検知することによって判別し、オーバーフローといった事態を未然に防ぐものがある（以下、従来の第２の装置）。これにより、２つのＦＩＦＯブロックの境界を動的に変化させることによってメモリの利用効率を向上させることが可能になる。
【０００４】
また、例えば特開平１１−１７５３１２号公報に開示されているように、ＦＩＦＯブロックを４つに分割し、それぞれのＦＩＦＯブロックの境界を操作することでサイズの大きい転送データに対する書き込みの失敗を軽減するものがある（以下、従来の第３の装置）。
【０００５】
【発明が解決しようとする課題】
しかしながら、従来の第１の装置では、常に転送元が転送先のバッファ情報を取得する必要があり、それによる不要なデータ転送が増大することになるため、全体としてのデータ転送のパフォーマンスが低下するという問題があった。
【０００６】
また、従来の第２および第３の装置では、データの書き込み可能／不可能を判別するためにはＩＥＥＥ１３９４等に規定されているようなパケット内のヘッダ部に記されている転送データサイズを検知する必要がある。したがって、転送サイズが転送データのヘッダに記されていないようなパケットに対するデータ受信の場合には対応できないという問題があった。
【０００７】
また、あらかじめどのようにＦＩＦＯを分割するかを決める必要があるため、分割するＦＩＦＯブロック数に制限が生じ、小さなデータを大量に連続で受信した場合には、すべてのＦＩＦＯブロックを使用している状態となる。したがって、ＦＩＦＯ内でデータが書き込まれている領域は少ないが次のデータは受信できないこととなり、バッファメモリが有効に活用できないという問題があった。
【０００８】
【課題を解決するための手段】
本発明は上記問題点に鑑みてなされたものであり、データ転送元とデータ転送先との間に介在し、転送データをメモリに書き込む処理と該メモリから前記転送データを読み出す処理とを行うデータ転送制御装置において、前記メモリを複数のＦＩＦＯブロックとして用いるために前記転送データの書き込みが行われた領域の先頭アドレス、終端アドレス、およびデータサイズを保持するレジスタと、前記メモリの空き容量を算出する手段と、前記ＦＩＦＯブロックが空かどうかを判別する手段と、前記メモリに対する転送データの書き込みごとにインクリメントするカウンタと、前記メモリに対する転送データの読み出しごとにデクリメントするするカウンタと、を備えたデータ転送制御装置としてものである。
【０００９】
【発明の実施の形態】
以下、本発明の実施例について図面を用いて説明する。
図１は、本発明のデータ転送制御装置を示し、バッファメモリ制御部１、バッファメモリ１ａ、バッファメモリ１ａへのデータ書き込み制御部２、バッファメモリ１ａからのデータ読み出し制御部３、バッファメモリ１ａに書き込まれたデータを格納しているＦＩＦＯブロックの情報を制御するＦＩＦＯブロック制御部４、レジスタ内のＦＩＦＯブロック単位毎に構成されるレジスタ４ａ，４ｂ，４ｃ，４ｄから構成されている。なお、図１では、バッファメモリ制御部１内にバッファメモリ１ａを配設し、ＦＩＦＯブロック制御部４内にレジスタ４ａ，４ｂ，４ｃ，４ｄを配設した図面としたが、制御部内に有するのではなく、各制御部やレジスタが接続された状態を示している。また、本実施例では、バッファメモリ１ａにデータをブロック単位で書き込みと読み出しを行うが、そのブロック単位をＦＩＦＯブロックとしている。
【００１０】
以下、本発明のデータ転送制御装置の動作について説明する。
ホストコンピュータ等の外部装置からの書き込みデータを受信すると、まずデータ書き込み制御部２がＦＩＦＯブロック制御部４内からバッファメモリ１ａの空き状態を確認する。バッファメモリ１ａの空きが受信データの最大パケットサイズよりも少ない場合には、空きが足りないため、送信元に対してＢＵＳＹ信号を発行する。空きが十分である場合には、最後に書き込まれたバッファメモリ１ａ内のＦＩＦＯブロックの続きの領域にデータの書き込みを行う。この時、ＦＩＦＯブロックへのデータ書き込みを行うと同時に、書き込み制御部２内の書き込みカウンタ２ａで書き込みを行った回数をカウントし、バッファメモリ１ａに何バイトのデータを書き込んだかを算出し、書き込みを行ったＦＩＦＯブロックの先頭アドレス、終端アドレス、データサイズを対応するＦＩＦＯブロックレジスタに書き込み、同時にＥＭＰＴＹビットにＦＵＬＬを設定する。本実施例では、書き込みを行ったＦＩＦＯブロックをレジスタ４ａ，４ｂ，４ｃ，４ｄとしている。
【００１１】
そして、データの書き込みをおこなった後、読み出し制御部３は、プリンタ装置本体等の転送先に対してデータ転送要求を発行する。読み出し制御部３は、ＦＩＦＯブロック制御部４内の最も先に書き込みが行われ、かつＥＭＰＴＹビットがＦＵＬＬとなっているＦＩＦＯブロックレジスタの情報を転送先に通知する。読み出し制御部３では、データの読み出しを行うと同時に、読み出し制御部３内の読み出しカウンタ３ａを用いて読み出しをおこなった回数をカウントし、バッファメモリ１ａから何バイトのデータを読み出したかを算出し、アクセスをおこなっているＦＩＦＯブロックのデータがすべて読み出されると、転送要求を停止し、対象となるＦＩＦＯブロックレジスタのＥＭＰＴＹビットをＥＭＰＴＹに設定する。
【００１２】
図２は、バッファメモリ１ａおよびレジスタの詳細を示す図である。本実施例では、バッファメモリ１ａ内にＦＩＦＯブロック１、ＦＩＦＯブロック２、ＦＩＦＯブロック３に分割された総容量がＡバイトであるバッファメモリ１ａの場合について説明する。また、ＦＩＦＯブロック１、ＦＩＦＯブロック２にはすでにデータが書き込まれており、かつ読み出しがされていない状態、すなわちＦＩＦＯブロック１に対応するＦＩＦＯブロックレジスタ１、ＦＩＦＯブロック２に対応するＦＩＦＯブロックレジスタ２のＥＭＰＴＹビット１７、２１がＦＵＬＬに設定されている状態である場合について説明する。
【００１３】
この状態で外部から書き込み要求があった場合、まずバッファメモリ１ａの空き容量を算出する。ＥＭＰＴＹビットがＦＵＬＬに設定されている最も先に書き込みが行われたＦＩＦＯブロックレジスタ１の先頭アドレス１４と、ＥＭＰＴＹビットがＦＵＬＬに設定されている最も後に書き込みが行われたＦＩＦＯブロックレジスタ２の終端アドレスから、バッファメモリ１ａに書き込まれている有効データの総容量Ｂを計算し、バッファメモリ１ａの総容量ＡからＢを差し引いたものがバッファメモリの空き容量（Ａ−Ｂ）となる。この空き容量が転送データの最大転送パケットサイズＭよりも大きい場合には、転送データを受信し、小さい場合には転送元に対してＢＵＳＹ信号を発行する。
【００１４】
転送データを受信する場合、書き込み回数を書き込みカウンタ２ａによってカウントし、受信データサイズを検出する。書き込みが終了すると、書き込みを行ったバッファメモリ空間をＦＩＦＯブロック３とし、ＦＩＦＯブロックレジスタ３に対して先頭アドレス２２、終端アドレス２３、書き込みカウンタ２ａにより算出されたデータサイズ２４の書き込みを行い、ＥＭＰＴＹビット２５にＦＵＬＬを設定する。また、終端アドレス２３に記されたアドレスからバッファメモリ１ａの終端アドレス１０までの領域を新たにＦＩＦＯブロック４として設定する。
【００１５】
転送データを受信せず、転送元に対してＢＵＳＹ信号を発行する場合には、ＦＩＦＯブロック１に対する読み出しが発生し、ＦＩＦＯブロック１に対応するＦＩＦＯブロックレジスタ１のＥＭＰＴＹビット１７がＥＭＰＴＹに設定され、あるいはさらにＦＩＦＯブロック２に対する読み出しが発生し、ＦＩＦＯブロック２に対応するＦＩＦＯブロックレジスタ２のＥＭＰＴＹビット２１がＥＭＰＴＹに設定されることによって、バッファメモリ１ａの空き容量が転送データの最大転送パケットサイズＭよりもおおきくなった時に次のデータを受信するようにすればよい。
【００１６】
このように、本発明は、１つのバッファメモリ１ａを複数のＦＩＦＯブロックとして扱う、すなわち書き込むデータの先頭アドレス、終端アドレス、およびデータサイズをレジスタに保持しておき、その先頭アドレスから終端アドレスで示された部分を１つのＦＩＦＯブロックとして扱う点を特徴とする。
【００１７】
このような構成により、サイズの小さな転送データを連続で多数受信した場合においても、ＦＩＦＯブロックレジスタを多数用意しておくことでＦＩＦＯブロックはレジスタの数だけ増やすことができるため、より多くのデータを受信することが可能になり、バッファメモリ１ａを有効に活用することが可能となる。
【００１８】
また、データサイズはバッファメモリ１ａに対してデータの書き込みを行う際に、内部に持つ書き込みカウンタ２ａを用いて算出をおこなう点を特徴とする。この時、ＦＩＦＯブロックレジスタに対応するＦＩＦＯブロックがＥＭＰＴＹであるか否かを示すビットを保持する点も特徴とする。これにより、データを書き込んだ後は、データ転送先に対して転送要求を発行し、転送先に対してＥＭＰＴＹビットがＦＵＬＬに設定されている最も先に書き込みが行われたＦＩＦＯブロックレジスタに相当するＦＩＦＯブロックのデータを転送することができる。
【００１９】
また、バッファメモリ１ａからデータの読み出しを行う際に、読み出しカウンタ３ａを用いて転送回数をカウントし、ＦＩＦＯブロックレジスタのデータサイズに相当する回数に達した時に転送を終了し、同時に読み出しを行ったＦＩＦＯブロックレジスタのＥＭＰＴＹビットをＥＭＰＴＹに設定し、継続データがある（ＥＭＰＴＹビットがＦＵＬＬに設定されたＦＩＦＯブロックレジスタが存在する）ならば、新たにデータ転送先に対して転送要求を発行することを特徴とする。
【００２０】
この構成によれば、ＥＭＰＴＹビットがＦＵＬＬに設定されている最も先に書き込みが行われたＦＩＦＯブロックレジスタの先頭アドレス（本実施例ではＦＩＦＯブロックレジスタ１の先頭アドレス１４）と、ＥＭＰＴＹビットがＦＵＬＬに設定されている最も後に書き込みが行われたＦＩＦＯブロックレジスタの終端アドレス（本実施例ではＦＩＦＯブロックレジスタ２の終端アドレス１９）から、書き込みが行われたが読み出しが行われていないデータサイズの総量が簡単に計算可能となる。これから、バッファメモリ１ａ全体の中で、使用されていない（読み出しを行う必要の無い）メモリ容量を簡単に計算することができる。この容量と転送データの最大パケットサイズとの比較を行い、転送データの最大パケットサイズの方が小さいならばこのデータを受信し、最大パケットサイズの方が大きいならば転送元に対してＢＵＳＹ信号を送信することで、受信バッファメモリサイズ不足によるオーバーフローといった事態を未然に防ぐことが可能となる。
【００２１】
また、さらなる実施例として、ＦＩＦＯブロックレジスタの数を有限に設定し、従来のような１つのＦＩＦＯブロックを２つあるいは４つのＦＩＦＯブロックとして使用してもよい。この場合には、すべてのＦＩＦＯブロックレジスタのＥＭＰＴＹビットがＦＵＬＬとなっている場合には、転送元に対してＢＵＳＹ信号を発行するように構成すると良い。
【００２２】
また、転送データの最大パケットサイズを自由に設定可能なように構成しても良く、それにより将来に最大パケットサイズが拡張された場合に対応することが可能になる。
【００２３】
【発明の効果】
以上説明したように、本発明のデータ転送制御装置によれば、メモリを複数のＦＩＦＯブロックとして用いることにより、容量の小さなデータを連続で受信した場合にもメモリを有効に利用でき、書き込み要求があったデータに対してパケット内にデータサイズが記述されていないようなパケットに対しても対応することが可能になるデータ転送制御装置を提供することができるようになる。
【図面の簡単な説明】
【図１】本発明のデータ転送制御装置を示す構成図である。
【図２】本発明のデータ転送制御装置内のメモリおよびレジスタ内を示す図である。
【符号の説明】
１：バッファメモリ制御部
１ａ：バッファメモリ
２：データ書き込み制御部
２ａ：書き込みカウンタ
３：データ読み出し制御部
３ａ：読み出しカウンタ
４：ＦＩＦＯブロック制御部
４ａ，４ｂ，４ｃ，４ｄ：レジスタ
【図１】
2004030196.tif 000003
【図２】
2004030196.tif 000004