(57)【特許請求の範囲】
【請求項１】
パケット形式のデータを受信し、それらのデータに基づく処理を実行可能な処理装置であって、
データを受信するためのリング形式の第１のバッファと、
この第１のバッファで受信したデータをパケット形式で一時的に保存するための第２のバッファと、
パケット形式のデータの処理を行うパケット処理機能と、
前記第１のバッファに受信されたデータが、先に受信されたデータに基づき受信が予定されている目的パケットであれば、前記パケット処理機能に対し、前記第１のバッファの前記目的パケットが格納された領域を示すアドレス情報を送信し、前記第１のバッファに受信されたデータが、受信が予定されていない新パケットであれば、前記新パケットを前記第２のバッファにコピーして前記第１のバッファの前記新パケットの領域を解放するためのバッファモニタ機能とを有する処理装置。
【請求項２】
請求項１において、前記パケット処理機能は、前記アドレス情報に基づいて前記第１のバッファから前記目的パケットを取得すると、前記第１のバッファの前記目的パケットが格納されていた領域を解放する、処理装置。
【請求項３】
請求項１において、さらに、前記目的パケットの識別情報を含む検索テーブルを有し、
前記パケット処理機能は、前記第２のバッファの前記新パケットを処理することにより受信が予定されるパケットが発生すると、そのパケットを前記検索テーブルに登録する、処理装置。
【請求項４】
データを受信するためのリング形式の第１のバッファと、この第１のバッファで受信したデータをパケット形式で一時的に保存するための第２のバッファとを有する装置の制御方法であって、
前記第１のバッファに受信されたデータが、先に受信されたデータに基づき受信が予定されている目的パケットであれば、その目的パケットの待ち状態にあるパケット処理機能に対し、前記第１のバッファの前記目的パケットが格納されている領域を示すアドレス情報を送信し、
前記第１のバッファに受信されたデータが、受信が予定されていない新パケットであれば、前記新パケットを前記第２のバッファにコピーして前記第１のバッファの前記新パケットが格納されている領域を解放することを含む、制御方法。
【請求項５】
請求項４において、さらに、前記パケット処理機能が前記アドレス情報に基づいて前記第１のバッファから前記目的パケットを取得すると、前記第１のバッファの前記目的パケットが格納されている領域を解放することを含む、制御方法。
【請求項６】
請求項４において、さらに、前記パケット処理機能が前記第２のバッファの前記新パケットを処理することにより受信が予定されるパケットが発生すると、そのパケットを前記目的パケットとして登録することを含む、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット形式のデータを受信し、それらのデータに基づく個別処理を実行可能な処理装置、およびその制御方法に関するものである。
【背景技術】
【０００２】
リング状にデータを入出力できるように構成されたリング形式のバッファ（リングバッファ）は、動作が軽いという特徴があり、受信バッファとして多用されている。一方、所定のフォーマットで送受信されるパケット形式のデータは、リングバッファに格納しておくよりもパケットのフォーマットに合致したパケット形式またはリニア形式のバッファに格納した方がその後の処理を行い易い。
【０００３】
特許文献１には、パラレルインターフェイスにより受信するデータはリングバッファに格納し、赤外線通信により受信するデータはパケット形式のバッファに格納することが記載されている。データの受信スピードを確保し、さらに、その後のパケット処理の容易さを確保するために、パケット形式のデータをリングバッファで受信し、その後、パケット形式（リニア形式）の転送用バッファに転送して一時的に保持する構成が検討されている。
【０００４】
このような受信用の構成を備えた処理装置は、データが受信用のリングバッファに滞留することを抑制するために、受信バッファに格納された全ての受信データをパケット形式の転送用バッファにコピーし、受信バッファの該当領域を解放するように制御される。
【特許文献１】特開平１１−４５１３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
さらに通信速度を向上しようとした場合、リングバッファを用いた構成の受信速度の向上が要求される。リングバッファからパケット形式のバッファに転送する構成を備えた処理装置およびその制御方法では、受信バッファに格納された全ての受信データを転送用バッファにコピーする時間を短縮することにより、リングバッファの解放速度を向上でき、受信速度を向上できる可能性がある。しかしながら、受信速度を向上させることは、大量のデータを受信することであるため、パケット形式の転送用バッファに大量のデータを転送する必要があり、さらに、その下流においては、大量のパケット形式のデータを処理する能力を向上させる必要がある。したがって、データが受信されてからそのデータが個別処理されるまでの全ての構成において処理時間を短縮することが要求されることになり、実現することは容易ではない。
【課題を解決するための手段】
【０００６】
本発明の一態様は、パケット形式のデータを受信し、それらのデータに基づく処理を実行可能な処理装置であって、データを受信するためのリング形式の第１のバッファと、この第１のバッファで受信したデータをパケット形式で一時的に保存するための第２のバッファと、パケット形式のデータの処理を行うパケット処理機能と、第１のバッファに受信されたデータが、先に受信されたデータに基づき受信が予定されている目的パケットであれば、パケット処理機能に対し、第１のバッファの目的パケットが格納された領域を示すアドレス情報を送信し、第１のバッファに受信されたデータが、受信が予定されていない新パケットであれば、新パケットを第２のバッファにコピーして第１のバッファの新パケットの領域を解放するためのバッファモニタ機能とを有する処理装置である。
【０００７】
インターネットで使用されるプロトコルの１つであるＴＣＰ／ＩＰのフラグメント処理においては、フラグメント化されたパケットを待って上位の、例えば、アプリケーション層などにデータを渡すため、先に受信されたパケットにより、受信が予定されるパケットが発生する。先に受信されたデータに基づき受信が予定されている目的パケットは、照合されれば、他のヘッダ情報の解析を待たずに処理を進めることができる。したがって、この処理装置においては、目的パケットは、第２のバッファに待機させることなく、第２のバッファに転送するというデータ転送経路を経ずに、パケット処理機能に送信される。
【０００８】
この処理装置によれば、第１のバッファに受信されたデータが、先に受信されたデータに基づき受信が予定されている目的パケットであれば、パケット処理機能に対して、第１のバッファの目的パケットが格納された領域を示すアドレス情報を送信するように構成されている。つまり、第１のバッファに受信されたデータが、先に受信されたデータに基づき受信が予定されている目的パケットであれば、第１のバッファから第２のバッファにコピーして、受信バッファの該当領域を解放し、さらに、パケット処理機能に対して、第２のバッファの目的パケットが格納された領域を示すアドレス情報を送信する処理を省略する。したがって、第１のバッファから第２のバッファに転送する処理および構成の処理スピードを上げなくても、第１のバッファに受信されたデータの処理スピードを向上させることが可能となり、簡易な構成で受信速度を向上できる。
【０００９】
一方、受信が予定されていない新パケットは、パケット形式の第２のバッファに転送することにより、従来のパケット処理機能と同様に処理される。したがって、パケット処理機能については、実績のある従来の構成をほぼそのまま使用することが可能であり、経済的であると共に信頼性の高い処理装置を提供できる。
【００１０】
本発明の他の態様は、データを受信するためのリング形式の第１のバッファと、この第１のバッファで受信したデータをパケット形式で一時的に保存するための第２のバッファとを有する装置の制御方法であって、以下の制御を含む。
（ａ１）第１のバッファに受信されたデータが、先に受信されたデータに基づき受信が予定されている目的パケットであれば、その目的パケットの待ち状態にあるパケット処理機能に対し、第１のバッファの目的パケットが格納されている領域を示すアドレス情報を送信する。
（ａ２）第１のバッファに受信されたデータが、受信が予定されていない新パケットであれば、新パケットを第２のバッファにコピーして第１のバッファの新パケットが格納されている領域を解放する。
【００１１】
この制御方法によれば、第１のバッファに受信されたデータが、先に受信されたデータに基づき受信が予定されている目的パケットであれば、その目的パケットの待ち状態にあるパケット処理機能に対して、第１のバッファの目的パケットが格納された領域を示すアドレス情報を送信する。したがって、第１のバッファに受信されたデータが、先に受信されたデータに基づき受信が予定されている目的パケットである場合については、第１のバッファから第２のバッファに上記目的パケットをコピーする処理を省くことができ、第２のバッファを経由しないデータの転送路を設定できる。このため、実質的に第１のバッファからパケット処理機能へ転送可能なデータ量を増加でき、データの受信速度を向上できる。一方、第１のバッファに受信されたデータが、受信が予測されていない新パケットであれば、新パケットを第２のバッファにコピーして第１のバッファの新パケットの領域を解放する。したがって、従来と同様のパケット処理のための制御も確保される。
【００１２】
パケット処理機能がアドレス情報に基づいて第１のバッファから目的パケットを取得すると、第１のバッファの目的パケットが格納されていた領域を解放することが好ましい。バッファモニタ機能を介して、同様の処理を行うことも可能であるが、目的パケットの処理状況を先に把握するパケット処理機能により第１のバッファを解放する処理を行うことにより、第１のバッファの目的パケットが格納されていた領域を速やかに解放できる可能性がある。
【００１３】
目的パケットの有無は、パケット処理機能において判断される。したがって、目的パケットの識別情報を含む検索テーブルを有し、パケット処理機能は、第２のバッファの新パケットを処理することにより受信が予定されるパケットが発生すると、そのパケットを検索テーブルに登録する。バッファモニタ機能は、検索テーブルを参照することにより目的パケットを判断できる。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明の一実施形態であるプリンタの概略構成を示している。このプリンタ１は、コンピュータネットワーク２を介してホストコンピュータ３と接続され、ホストコンピュータ３から供給されるデータを出力する。プリンタ１は、このプリンタ１を制御するプロセッサ（ＣＰＵ）１３と、ＣＰＵ１３の動作用のプログラム１８を圧縮された状態で格納するためのフラッシュＲＯＭ１１と、圧縮されたプログラム１８が伸張されたプログラム１９を格納したり、印刷用のデータを一時的に格納するためなどに用いられるＳＤＲＡＭ１２と、ＬＡＮなどのコンピュータネットワークに接続するネットワーク接続ポート１５と、データをプリントアウトするためのプリンタエンジン１６と、これらのデバイスを接続する機能を備えたコントローラユニット１０とを有している。プリンタ１は、さらに、表示機能に加えて、タッチパネルあるいは操作スイッチなどの入力機能を備えたＬＣＤパネル１４を有しており、コントローラユニット１０に接続されている。コントローラユニット１０は、多数の機能がワンチップに搭載されたＡＳＩＣあるいはＬＳＩなどと称される形態で提供される。さらに、ＣＰＵ１３を含めて搭載し、ＳｏＣなどと称される形態で提供される場合もある。
【００１５】
コントローラユニット１０は、ネットワーク接続ポート１５と繋がるネットワークインターフェイス２１と、プリンタエンジン１６と接続されるプリンタエンジンインターフェイス２２とを備えている。また、コントローラユニット１０は、図示していないが、フラッシュＲＯＭ１１に対してアクセスするために、ＲＯＭ１１が接続されるＲＯＭインターフェイス、ＳＤＲＡＭ１２に対してアクセスするためにＲＡＭ１２が接続されるＲＡＭコントローラ、ＣＰＵ１３に対してアクセスするためにＣＰＵ１３が接続されるＣＰＵインターフェイス、ＬＣＤパネル１４などと接続される汎用入出力コントローラなどの多数の機能と、これらの機能を接続する内部バスとを備えている。
【００１６】
図２は、コントローラユニット１０に含まれるネットワークインターフェイス機能の概略構成を示している。ネットワークインターフェイス２１は、ＬＡＮを経由してデータを受信するための受信インターフェイス５０と、この受信インターフェイス５０が受信したデータを格納するためのリングバッファ（第１のバッファ）５１と、このリング形式の受信バッファ５１で受信したデータをパケット形式（リニア形式）で一時的に保存するための転送用バッファ（第２のバッファ）５２と、パケット形式のデータの処理を行うパケット処理機能５３と、受信バッファ５１をモニタリングする受信バッファモニタ５４と、目的パケットの識別情報を含む検索テーブル５５とを備えている。リング形式の受信バッファ５１、転送バッファ５２および検索テーブル５５は、ＡＳＩＣであるコントローラユニット１０に内蔵されたレジスタあるいはメモリ上に構成されていても良く、あるいは、コントローラ１０に接続されたＳＤＲＡＭ１２などの外部メモリ上に構成されていても良い。
【００１７】
受信用のリングバッファ５１は、受信インターフェイス５０を介して送信されたパケット形式の受信データＰ０、Ｐ１、Ｐ２・・・を、エンドレスに入出力できるようにリング状にアドレス制御された領域Ａ０、Ａ１、Ａ２・・・に格納する。転送用バッファ５２は、受信バッファ５１で受信したデータを、パケット形式でアクセスできるように一時的に保存するためのバッファであり、例えば、固定長で、各プロトコルに従ったパケットにアクセスしやすい構成となっている。
【００１８】
パケット処理機能５３は、各層のプロトコルに従ってパケットを解析するプロトコルスタック６１と、ＴＣＰ／ＩＰであれば、ＦＴＰ、ＳＭＴＰなどのサービス単位、あるいは上位のアプリケーションで有意なデータとして取り扱われるデータ単位で個別の処理を行う複数の個別処理機能６２ａ、６２ｂ、および６２ｃとを備えている。個別処理機能の数は限定されるものではなく、復号中のデータ単位の増減により変動するものである。
【００１９】
ＴＣＰ／ＩＰをプロトコルの１つとしてデータを送受信するプリンタ１を例にとって説明すると、上記パケット処理機能５３が備えるプロトコルスタック６１は、ＩＰヘッダを解析するネットワーク層としての機能と、ＴＣＰヘッダを解析するトランスポート層としての機能を備えている。さらに、ネットワーク層の下層の機能、例えば、イーサネット（登録商標）フレームを解析するデータリンク層の機能を含めても良い。パケット処理機能５３に送信されたパケットは、プロトコルスタック６１を介して、上位のアプリケーションに供給するデータを形成するための個別の処理を行う個別処理機能６２ａ、６２ｂ、または６２ｃに送信される。
【００２０】
ＴＣＰ／ＩＰの処理の主要なものの１つに、フラグメント処理がある。これは、アプリケーションにおいて有意なデータを、転送するのに適したサイズにフラグメント化し、複数のパケットとして送信するものである。したがって、受信する場合は、フラグメント化されたデータをアッセンブリして再構築あるいは復号する必要がある。フラグメント化されたデータを含むパケットは、イーサネット（登録商標）ヘッダ、ＩＰヘッダ、ＴＣＰヘッダの主要なデータは一致し、ＩＰヘッダに含まれるフラグおよびフラグメントオフセットの情報を用いて再構築できるようになっている。このため、フラグメント化されたデータの再構築が必要となった個別処理機能６２ａ、６２ｂまたは６２ｃは、再構築のために必要な、次に受信される予定の目的パケットについての情報を、図３に示すような、検索テーブル５５に登録する。また、データの再構築が終了すると、検索テーブル５５に登録された情報を削除する。
【００２１】
受信バッファモニタ５４は、検索テーブル５５を参照し、受信バッファ５１に受信されたデータが、先に受信されたデータに基づき受信が予定されている目的パケットであるときに、パケット処理機能５３に対して受信バッファ５１の目的パケットが格納された領域を示すアドレス情報を送信する第１の機能５４ａと、受信バッファ５１に受信されたデータが、受信が予定されていない新パケットであるときに、新パケットを転送用バッファ５２にコピーして受信バッファ５１の領域を解放する第２の機能５４ｂとを有している。
【００２２】
パケット処理機能５３のプロトコルスタック６１は、受信バッファモニタ５４から得られたアドレス情報に基づいて受信バッファ５１から目的パケットを取得すると、受信バッファ５１の目的パケットが格納されていた領域を解放する機能を有する。
【００２３】
図４は、プリンタ１の制御のうち、データを受信する制御のうちの、特に、受信バッファモニタ５４の機能を説明するためのフローチャートを示している。図５は、データを受信する制御のうちの、パケット処理機能５３が果たす機能を説明するためのフローチャートを示している。
【００２４】
図４に示すように、バッファモニタ５４は、ステップ１０１において、受信バッファ５１に受信データがあり、ステップ１０２において、この受信データが検索テーブル５５に登録されたパケット、すなわち、先に受信されたデータに基づいてパケット処理機能５３に受信が予定されている目的パケットである場合、ステップ１０３において、受信バッファモニタ５４の第１の機能５４ａは、目的パケットが格納された領域を示すアドレス情報を含む受信バッファ５１のポインタをパケット処理機能５３のプロトコルスタック６１に送信する。
【００２５】
一方、ステップ１０１において、受信バッファ５１に受信データがあり、ステップ１０２において、受信データが検索テーブル５５に登録されていない（目的パケットではない）場合、受信バッファモニタ５４は、この受信データがパケット処理機能５３に受信が予定されていない新パケットであると判断する。このため、ステップ１０４において、受信バッファモニタ５４の第２の機能５４ｂは、新パケットを転送用バッファ５２にコピーして受信バッファ５１の新パケットの領域を解放する。
【００２６】
パケット処理機能５３においては、ステップ１０３によりポインタが送られると、ステップ１１１において、受信バッファ５１のポインタを取得する。ステップ１１２において、パケット処理機能５３のプロトコルスタック６１は、受信バッファ５１の目的パケットのデータを複数の個別処理機能６２ａ、６２ｂ、および６２ｃのうちの該当の個別処理機能（第１の個別処理機能）に転送し、個別処理終了後、受信バッファ５１の目的パケットが格納されている領域を解放する。ステップ１１５において、第１の個別処理機能に転送された目的パケットは、第１の個別処理機能において個別処理される。また、個別処理において、目的パケットによりフラグメント化されたデータの再構築が完了するなどの事情により、検索テーブル５５の更新が必要であれば、ステップ１１６において、検索テーブル５５から目的パケットを示す情報を削除するなどの更新を行う。
【００２７】
一方、パケット処理機能５３は、バッファモニタ５４からポインタを受領しない場合でも、ステップ１１３において、転送バッファ５２にバッファモニタ５４により転送されたデータ（新パケット）がある場合、ステップ１１４において、パケット処理機能５３のプロトコルスタック６１は、この転送用バッファ５２の新パケットを複数の個別処理機能６２ａ、６２ｂ、および６２ｃのうちの該当の個別処理機能（第２の個別処理機能）に転送したり、新たに再構築用の個別処理を生成し、転送用バッファ５２の新パケットが格納されている領域を解放する。続けて、ステップ１１５において、第２の個別処理機能は、新パケットの各層のヘッダを解析するなどの個別処理を行う。また、新パケットがフラグメント化されたデータを伴い、それを含むデータを再構築する必要があるときは、新たに受信が予定される目的パケットが発生するので、ステップ１１６において、新たな目的パケットを検索テーブル５５に登録し、検索テーブル５５を更新する。
【００２８】
以上のように、本実施形態のプリンタ１においては、受信バッファモニタ５４が、検索テーブル５５を参照して、受信バッファ５１に受信されたデータが目的パケットであるか新パケットであるかを判断し、目的パケットであれば、その受信データを転送用バッファ５２にコピーすることなく、ポインタをパケット処理機能５３に送信することによりパケット処理機能５３に受信データの処理を引き渡す。このため、受信バッファ５１に格納された受信データを転送用バッファ５２にコピーする頻度が低下し、転送用バッファ５２にコピーするために費やされる処理時間を短縮できる。一方、パケット処理機能５３においては、受信バッファ５１から目的パケットを取得するデータ転送経路が新たに設けられるので、受信バッファ５１との間で転送可能なデータ量が増加し、受信バッファ５１を高速で解放できる。
【００２９】
さらに、プリンタ１においては、受信バッファモニタ５４が、検索テーブル５５を参照して、受信バッファ５１に受信されたデータが目的パケットであるか新パケットであるかを判断するため、従来のパケット処理機能が果たす機能を受信バッファ５１の近くで動作する機能に分散させることが可能となり、パケット処理機能５３の負担を低減させ、パケット処理機能５３の処理速度も向上できる。
【００３０】
一方、新パケットは、リング形式の受信バッファ５１から速やかに転送用バッファ５２に転送され、パケット処理機能５３により処理される状態になるため、従来のパケット処理機能５３として実績のある回路構成などの資産を有効活用できる。
【００３１】
したがって、本実施形態によれば、パケット受信に関するハードウェアあるいはソフトウェアの構成を根本から変えるような大幅な変更をすることなく、受信バッファ５１の解放速度を向上でき、データの受信速度を向上できる。
【００３２】
なお、上記実施形態では、ネットワークプリンタを例にとって本発明を説明しているが、他のネットワーク接続機器、例えば、ネットワークストレージなどの周辺機器、さらには、パーソナルコンピュータあるいはＰＤＡなどを含めた処理装置に採用できる。また、上記実施形態では、ＴＣＰ／ＩＰのフラグメント処理を例にとって本発明を説明しているが、本発明は、パケット形式のデータを受信する装置の制御方法の全てに採用できる。
【図面の簡単な説明】
【００３３】
【図１】プリンタの概略構成を示すブロック図。
【図２】ネットワークインターフェイスの概略構成を示す図。
【図３】検索テーブルの一例を示す図。
【図４】プリンタのデータ受信制御の一部を説明するためのフローチャート。
【図５】プリンタのデータ受信制御の他の一部を説明するためのフローチャート。
【符号の説明】
【００３４】
１  プリンタ、    １０  コントローラユニット
２１  ネットワークインターフェイス
５１  受信バッファ（第１のバッファ）、    ５２  転送用バッファ（第２のバッファ）
５３  パケット処理機能、    ５４  受信バッファモニタ（バッファモニタ機能）
５５  検索テーブル
【図１】
0004664211.tif 000002
【図２】
0004664211.tif 000003
【図３】
0004664211.tif 000004
【図４】
0004664211.tif 000005
【図５】
0004664211.tif 000006