(57)【要約】【課題】従来方式に比べてメモリ容量の無駄を大幅に省略できるようにすると共に、メモリ設備量の削減効果を期待できるようにする。【解決手段】データの長さに応じて予め設定された複数のメモリ領域を有するメモリ３０と、データを受信して当該データをメモリ３０に転送するＮＩＣカード２０とを備え、ＮＩＣカード２０は、データを受信する受信部と、ここで受信したデータの長さを検出するＭＡＣ部と、メモリ３０の複数のメモリ領域の中から、ＭＡＣ部によって検出されたデータの長さに対応する単位格納容量のメモリ領域を選択するＤＭＡコントローラとを有するものである。これにより、受信したデータの長さに対応する単位格納容量のメモリ領域に当該データを格納できるようになり、数十バイトのデータ長を有する制御系フレームから数万バイトのデータ長を有するジャンボフレームに至る受信データを効率良くメモリ領域に格納できるようになる。【選択図】  図１
2009065564.tif 000002
【特許請求の範囲】
【請求項１】
所定の長さのデータを受信して格納する受信端末装置であって、
前記データの長さに応じて予め単位格納容量が設定された複数のメモリ領域を有する記憶部と、
前記データを受信して当該データを前記記憶部に転送するデータ転送部とを備え、
前記データ転送部は、
前記データを受信する受信部と、
前記受信部によって受信した前記データの長さを検出するデータ検出部と、
前記記憶部の複数のメモリ領域の中から、前記データ検出部によって検出された前記データの長さに対応する単位格納容量のメモリ領域を選択する領域選択部とを有することを特徴とする受信端末装置。
【請求項２】
前記記憶部には、
受信した前記データを格納するための第１の単位格納容量の複数のメモリ領域と、
受信した前記データを格納するための第２の単位格納容量の複数のメモリ領域とが割り当てられると共に、
前記第１の単位格納容量のメモリ領域に対応した受信ディスクリプタ用の複数のメモリ領域と、前記第２の単位格納容量のメモリ領域に対応した受信ディスクリプタ用の複数のメモリ領域とが割り当てられることを特徴とする請求項１記載の受信端末装置。
【請求項３】
前記記憶部にデータを転送するデータ転送部には、第１及び第２のデータ格納基準値が設定され、
前記データ転送部は、
検出された前記データの長さと第１のデータ格納基準値とを比較し、
検出された前記データの長さが第１のデータ格納基準値以下である場合は、当該データを前記第１の単位格納容量のメモリ領域に転送すると共にデータ転送完了を示す情報を発生し、
検出された前記データの長さが第１のデータ格納基準値を越える場合は、当該データの長さと第２のデータ格納基準値とを更に比較し、
検出された前記データの長さが第２のデータ格納基準値以下である場合は、当該データを前記第２の単位格納容量のメモリ領域に転送すると共にデータ転送完了を示す情報を発生し、
検出された前記データの長さが第２のデータ格納基準値を越える場合は、当該データを前記第２の単位格納容量のメモリ領域に転送すると共にメモリ領域重複使用を示す情報を発生することを特徴とする請求項２記載の受信端末装置。
【請求項４】
前記記憶部には、
受信した前記データを格納するための第１の単位格納容量の複数のメモリ領域と、
受信した前記データを格納するための第２の単位格納容量の複数のメモリ領域と、
受信した前記データを格納するための第３の単位格納容量の複数のメモリ領域とが割り当てられると共に、
前記第１の単位格納容量のメモリ領域に対応した受信ディスクリプタ用の複数のメモリ領域と、前記第２の単位格納容量のメモリ領域に対応した受信ディスクリプタ用の複数のメモリ領域と、前記第３の単位格納容量のメモリ領域に対応した受信ディスクリプタ用の複数のメモリ領域とが割り当てられることを特徴とする請求項１記載の受信端末装置。
【請求項５】
前記記憶部にデータを転送するデータ転送部には、第１乃至第３のデータ格納基準値が設定され、
前記データ転送部は、
検出された前記データの長さと第１のデータ格納基準値とを比較し、
検出された前記データの長さが第１のデータ格納基準値以下である場合は、当該データを前記第１の単位格納容量のメモリ領域に転送すると共にデータ転送完了を示す情報を発生し、
検出された前記データの長さが第１のデータ格納基準値を越える場合は、当該データの長さと第３のデータ格納基準値とを更に比較し、
検出された前記データの長さが第３のデータ格納基準値以上である場合は、当該データを前記第３の単位格納容量のメモリ領域に転送すると共にデータ転送完了を示す情報を発生し、
検出された前記データの長さが第３のデータ格納基準値未満である場合は、当該データの長さと前記第２のデータ格納基準値とを更に比較し、
検出された前記データの長さが前記第２のデータ格納基準値未満である場合は、当該データを前記第２の単位格納容量のメモリ領域に転送すると共にデータ転送完了を示す情報を発生し、
検出された前記データの長さが前記第２のデータ格納基準値以上である場合は、当該データを第２の単位格納容量のメモリ領域に転送すると共にメモリ領域重複使用を示す情報を発生することを特徴とする請求項４記載の受信端末装置。
【請求項６】
前記記憶部及びデータ転送部を制御する制御部を備え、
前記制御部は、
前記データを受信するステップと、
受信した前記データの長さを検出するステップと、
設定された複数の前記メモリ領域の中から、検出された前記データの長さに対応する単位格納容量のメモリ領域を選択するステップと、
選択された当該メモリ領域に受信したデータを格納するステップとを含む制御プログラムに基づいてデータ転送制御を実行することを特徴とする請求項１に記載の受信端末装置。
【請求項７】
前記制御プログラムを記述した不揮発性の記録媒体が備えられることを特徴とする請求項６に記載の受信端末装置。
【請求項８】
データの長さに応じて予め設定された複数のメモリ領域に受信したデータを格納する方法であって、
前記データを受信するステップと、
受信した前記データの長さを検出するステップと、
設定された複数の前記メモリ領域の中から、検出された前記データの長さに対応する単位格納容量のメモリ領域を選択するステップと、
選択された当該メモリ領域に受信したデータを格納するステップとを有することを特徴とする受信データ格納方法。
【請求項９】
データの長さに応じて予め設定された複数のメモリ領域に受信したデータを格納する制御プログラムであって、
前記データを受信するステップと、
受信した前記データの長さを検出するステップと、
設定された複数の前記メモリ領域の中から、検出された前記データの長さに対応する単位格納容量のメモリ領域を選択するステップと、
複数の前記メモリ領域の中から選択された当該メモリ領域に受信したデータを格納するステップとを有することを特徴とする制御プログラム。
【請求項１０】
データの長さに応じて予め設定された複数のメモリ領域に受信したデータを格納する制御プログラムを記述した記録媒体であって、
前記データを受信するステップと、
受信した前記データの長さを検出するステップと、
設定された複数の前記メモリ領域の中から、検出された前記データの長さに対応する単位格納容量のメモリ領域を選択するステップと、
複数の前記メモリ領域の中から選択された当該メモリ領域に受信したデータを格納するステップとを有する制御プログラムを記述したことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークからフレーム単位にデータを受信してデータ処理する情報処理装置に適用可能な受信端末装置、受信データ格納方法、プログラム及び記録媒体に関する。詳しくは、所定の長さのデータを受信して受信フレーム格納用のメモリに転送するネットワークインタフェースカードにメモリライン選択用のセレクタを備え、受信フレーム格納用のメモリの複数のメモリ領域の中から、データの長さに対応する単位格納容量のメモリ領域を選択して、受信したデータの長さに対応する単位格納容量のメモリ領域に当該データを再現性良く格納できるようにすると共に、数十バイトのデータ長を有する制御系フレームから、１万バイトのデータ長を有するジャンボフレームに至る受信フレームを効率良くメモリ領域に格納できるようにしたものである。
【背景技術】
【０００２】
近年、ネットワークからフレーム単位にデータを受信してデータ処理する情報処理装置としてノート型や、デスクトップ型等のコンピュータが使用される場合が多くなってきた。また、コンピュータ機能を内蔵した映像＆音情報記録再生装置も使用されている。今後、ユーザ（操作者）は、情報処理装置や映像＆音情報記録再生装置等に様々なコンテンツを取り込んで、データ編集を行ったり、データ加工を施して独自の映像や音情報等を楽しめるようになる。
【０００３】
このようなネットワークからデータを受信する場合に、情報処理装置や映像＆音情報記録再生装置等にネットワークインタフェースカードが実装され、又は、装置本体に装着され、ネットワークから受信したデータがＤＭＡ（Direct Memory Access）機能を利用して受信フレーム格納用のメモリにＤＭＡ転送するようになされる。
【０００４】
図１２は、従来例に係る受信端末装置１の構成例を示すブロック図である。図１２に示す受信端末装置１は、ネットワークインタフェースカード（Network  Interface  Card：以下、ＮＩＣカード２という）、受信フレーム格納用のメモリ３及びＣＰＵ（Central  Processing  Unit：中央処理装置）４を有して構成される。ＮＩＣカード２は、物理層プロトコル部（Physical  Layer  Protocol：以下ＰＨＹ部１１という）、媒体アクセス制御部（Media  Access  Control：以下ＭＡＣ部１２という）、送受信用のバッファ１３及びＤＭＡコントローラ１５を有して構成される。
【０００５】
ＮＩＣカード２では、ＰＨＹ部１１がネットワーク５０からデータをフレーム単位に受信すると、ＭＡＣ部１２が受信データをバッファ１３に一時記憶する。ＤＭＡコントローラ１５はＤＭＡ機能によって、受信フレームをバッファ１３からデータバス１０を通って受信フレーム格納用のメモリ３へ自動的に転送するようになされる。メモリ３における受信フレームのメモリ領域（格納先）は、ソフトウェアが受信ディスクリプタに受信フレームの転送先となるメモリ領域を記述することで指定される。ここに受信ディスクリプタとは、ＮＩＣカード２が受信データを受信したときに、受信処理内容を示す指示情報を格納するメモリ領域をいう。
【０００６】
図１３は、従来例に係る受信ディスクリプタと受信フレーム格納用のメモリ領域との関係例を示す概念図である。図１３に示す受信ディスクリプタ用のメモリ８は、ＮＩＣカード２が実装された図示しない受信端末装置の記憶部３８内に設けられる。記憶部３８内には受信フレーム格納用のメモリ３が設けられる。メモリ８には、Ｎ個の受信ディスクリプタが割り振られる。受信ディスクリプタには、受信フレームが転送済みか否かを示すステータス、受信フレームの転送先を示すメモリ領域のアドレス及び、そのデータの長さを示すサイズが記述される。Ｎ個の受信ディスクリプタには、順に番号が割り振られる。
【０００７】
受信フレーム格納用のメモリ３には、受信ディスクリプタ”１”に対して受信ディスクリプタ”１”のメモリ領域が割り振られ、順に、受信ディスクリプタ”２”に対して受信ディスクリプタ”２”のメモリ領域が割り振られる。受信ディスクリプタ”Ｎ−１”に対して受信ディスクリプタ”Ｎ−１”のメモリ領域が割り振られ、受信ディスクリプタ”Ｎ”に対して受信ディスクリプタ”Ｎ”のメモリ領域が割り振られる。
【０００８】
このような１つの受信フレームにつき、１つの受信ディスクリプタといった使用方法によれば、ＮＩＣカード２とソフトウェアとが共に順番通りに受信ディスクリプタ”１”〜”Ｎ”を使用する。最後の番号の受信ディスクリプタ”Ｎ”が使用された後は、先頭の受信ディスクリプタ”１”に戻るというリング構造になっている。
【０００９】
図１４は、従来例に係る他の受信ディスクリプタと受信フレーム格納用のメモリ領域との関係例を示す図である。図１４に示す受信ディスクリプタ用のメモリ８’は、ＮＩＣカード２が実装された図示しない受信端末装置の記憶部３８’内に設けられる。記憶部３８’内には受信フレーム格納用のメモリ３’が設けられる。
【００１０】
図１４に示す受信ディスクリプタと受信フレーム格納用のメモリ領域の関係例によれば、１つの受信フレームが分割されてＤＭＡ転送されるものである。図１４において、１つの受信フレームの全てのデータにフラグメント処理が施され、フラグメント処理された受信フレームの第１のフラグメントデータＤ１がメモリ３’の受信ディスクリプタｉによって管理されるメモリ領域に転送される。同様にして、フラグメント処理された受信フレームの第２のフラグメントデータＤ２がメモリ３’の受信ディスクリプタｉ＋１によって管理されるメモリ領域に転送される。
【００１１】
この種の１つの受信フレームを分割してＤＭＡ転送するものに関しては、特許文献１に見られる。特許文献１に開示されたネットワークアダプタのためのネットワークコントローラによれば、バッファ記憶システムにおいてデータ管理を改良できるというものある。
【００１２】
図１５は、図１２に示したＣＰＵ４による受信準備処理例を示すフローチャートである。この例では、メモリ３に５１２個の受信フレーム格納用のメモリ領域を確保すると共に、メモリ８に、５１２個の受信ディスクリプタを確保する場合である。これらを受信準備処理条件にして、図１５に示すフローチャートのステップＧ１でＣＰＵ４は、記憶部３８内のメモリ８から５１２個分の受信ディスクリプタ用のメモリ領域を確保する。次に、ステップＧ２でＣＰＵ４は、メモリ３から５１２個分の受信フレーム格納用のメモリ領域を確保する。受信フレーム格納用のメモリ領域のアドレスは、例えば、０〜１００００である。
【００１３】
その後、ステップＧ３で前述のメモリ領域のアドレスとサイズを受信ディスクリプタに設定する。そして、ステップＧ４でＣＰＵ４は、５１２個分の受信ディスクリプタの設定が完了したかを判別する。５１２個分の受信ディスクリプタの設定が完了していない場合は、ステップＧ２に戻って上述の処理を繰り返す。５１２個分の受信ディスクリプタの設定が完了した場合は、ステップＧ５に移行して、ＣＰＵ４は、ＤＭＡコントローラ１５に対し、表１に示す設定値を設定する。
【００１４】
【表１】
2009065564.tif 000003
【００１５】
表１によれば、受信ディスクリプタが格納されているアドレスを「１００００」、その受信ディスクリプタ数を「５１２」に各々設定される。その後、ステップＧ６でＣＰＵ４は、ＮＩＣカード２内のＤＭＡコントローラ１５のＤＭＡ機能を有効となされる。更に、ステップＧ７でＣＰＵ４はＮＩＣカード２内のＭＡＣ部１２及びＰＨＹ部１１に対して受信機能を有効となされる。これにより、受信端末装置１におけるデータの受信準備処理が完了する。
【００１６】
図１６は、ＤＭＡコントローラ１５による受信処理例を示すフローチャートである。この例で、ＤＭＡコントローラ１５は、図１６に示すフローチャートのステップＨ１で新しい受信ディスクリプタをロードする。その後、ステップＨ２でＤＭＡコントローラ１５は、ＭＡＣ部１２から受信フレーム格納完了通知を待つ。受信フレーム格納完了通知は、ＭＡＣ部１２からＤＭＡコントローラ１５へ出力される。
【００１７】
次に、ステップＨ３でＤＭＡコントローラ１５は、ＭＡＣ部１２からの受信フレーム格納完了通知が有ったか否かを判別する。受信フレーム格納完了通知が無い場合は、ステップＨ２に戻って、ＤＭＡコントローラ１５は、ＭＡＣ部１２からの受信フレーム格納完了通知を待つ。受信フレーム格納完了通知が有った場合、ステップＨ４に移行してＤＭＡコントローラ１５は、ＭＡＣ部１２から入力した受信情報に含まれる受信フレーム長を取得する。
【００１８】
その後、ステップＨ５に移行してＤＭＡコントローラ１５は、受信フレームの未転送部分と受信ディスクリプタ内のサイズとを比較して当該未転送部分が受信ディスクリプタ内のサイズよりも大きいかを判別する。受信フレームの未転送部分が受信ディスクリプタ内のサイズ以下である場合は、ステップＨ６に移行する。ステップＨ６でＤＭＡコントローラ１５は、受信フレームをディスクリプタ内のサイズ分だけ、ディスクリプタ内のアドレスへＤＭＡ転送する。
【００１９】
その後、ステップＨ７に移行してＤＭＡコントローラ１５は、”現在の受信フレームが次のディスクリプタも使用する”という情報を受信ディスクリプタのステータスに記述する。そして、ステップＨ８に移行してＤＭＡコントローラ１５は、新しい受信ディスクリプタをロードする。
【００２０】
なお、上述のステップＨ５で受信フレームの未転送部分が受信ディスクリプタ内のサイズよりも小さい場合は、ステップＨ９に移行する。ステップＨ９でＤＭＡコントローラ１５は、受信フレームの未転送部分を受信ディスクリプタ内のアドレスへＤＭＡ転送する。その後、ステップＨ１０に移行してＤＭＡコントローラ１５は、転送したデータのサイズをディスクリプタ内のサイズに書き込むと共に、”このディスクリプタで受信フレームの最後である”という情報をライン＃２の受信ディスクリプタのステータスに記述する。そして、ステップＨ１１に移行してＤＭＡコントローラ１５は、新しい受信ディスクリプタをロードする。
【００２１】
【特許文献１】特開平０４−２６１２４５号公報（第７頁  図４）
【発明の開示】
【発明が解決しようとする課題】
【００２２】
ところで、現行のイーサネット（登録商標）において、フレームサイズを決めるＭＴＵ（Maximum Transmission Unit）によれば、フレーム長として１５００バイトが採用されているが、近年のブロードバンド化に伴い、ネットワーク転送速度を高速化するために、ジャンボフレームと呼ばれる大きなフレーム長が使用されつつある。
【００２３】
ジャンボフレームは、現行のフレーム長の４倍の９０００バイトに達するものである。ジャンボフレームを受信するためには、ソフトウェア上に、ジャンボフレームを格納できる分のメモリ領域を確保する必要があり、ホストには大容量のメモリを実装する必要がある。
【００２４】
しかし、ソフトウェア上にジャンボフレームを格納できるメモリ領域を準備したとしても、受信したフレームが必ずしもジャンボフレームとは限らない。実際、トランスミッション制御プロトコル（ＴＣＰ：Transmission Control Protocol）のＡＣＫ（Acknowledge；肯定応答等の情報交換用の符号）など短い制御系フレームを受信する機会も多いため、その結果、ジャンボフレーム用に用意した大きなメモリ設備容量のほとんどが無駄遣いとなってしまい、メモリ使用効率が非常に悪くなるおそれがある。
【００２５】
以下、図１７〜図２０を参照しながら、従来例に係る受信端末装置、例えば、特許文献１に見られるようなネットワークコントローラ等の受信ディスクリプタを使用して、フレームサイズが最大で１００００バイトとなるデータを受信する３つの場合についてその長短を説明する。
【００２６】
（１）図１３に示したような１つの受信フレームに対応させて１つの受信ディスクリプタでデータを転送したい場合であって、図１７に示す受信ディスクリプタで指定するメモリサイズを１００００バイトに設定した場合である。この場合、どのフレームサイズにおいても、１つのメモリ領域に受信フレームを格納されるため、ソフトウェア処理の負担は一番軽くなる。しかし、図１７に示すようにイーサネット（登録商標）の最小フレームサイズである６４バイトを受信したとき、１００００バイトのメモリ領域に９９３６バイトの無駄なメモリ領域が発生する。
【００２７】
（２）上述の無駄になるメモリを最小限にするために、図１８に示す受信ディスクリプタで指定するメモリサイズを６４バイトにした場合である。この場合、イーサネット（登録商標）の最小フレームサイズである６４バイトを受信したときは、無駄なメモリ領域は無くなる。因みに、６５バイト以上のフレームを受信した場合でも、無駄になる最大のメモリ領域は６３バイトである。しかし、図１８に示すように１００００バイトのジャンボフレームのデータを受信した場合は、受信ディスクリプタを１５７個も使用されてしまうこととなり、ソフトウェアにとって大きな負担となる。
【００２８】
（３）上記２つの例の間を取って、なおかつ、ソフトウェアに採って取り扱い易いメモリサイズとして、図１９に示す受信ディスクリプタで指定するメモリサイズを４０９６バイトにした場合である。この場合は、イーサネット（登録商標）の最小フレームサイズである６４バイトを受信したときは、図１９に示すように無駄になるメモリ領域は４０３２バイトとなる。
【００２９】
４０９７バイト以上のフレームを受信した場合でも、無駄になる最大のメモリ領域は４０９５バイトである。１００００バイトのジャンボフレームを受信した場合は、図２０に示すように受信ディスクリプタは、３個使用され、最後の受信ディスクリプタに設定されているメモリ領域は２２８８バイト無駄になる。
【００３０】
以上のことから、（３）の方法が、他の例と比べて一番効率が良い設定方法であると見える。しかし、実際には、どのようなフレームを多く受信するかというと、ＴＣＰのＡＣＫなどのような制御系フレームであり、これらのフレームサイズは非常に短い。したがって、（３）の場合においても、あまり効率の良い方法とは言い難い。
【００３１】
そこで、この発明はこのような従来の課題を解決したものであって、従来方式に比べてメモリ容量の無駄を大幅に省略できるようにすると共に、メモリ設備量の削減効果を期待できるようにした受信端末装置、受信データ格納方法、制御プログラム及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００３２】
上述した課題は、所定の長さのデータを受信して格納する受信端末装置であって、データの長さに応じて予め設定された複数のメモリ領域を有する記憶部と、データを受信して当該データを記憶部に転送するデータ転送部とを備え、データ転送部は、データを受信する受信部と、この受信部によって受信したデータの長さを検出するデータ検出部と、記憶部の複数のメモリ領域の中から、データ検出部によって検出されたデータの長さに対応する単位格納容量のメモリ領域を選択する領域選択部とを有することを特徴とする受信端末装置によって解決される。
【００３３】
本発明に係る受信端末装置によれば、所定の長さのデータを受信して記憶部に格納する場合に、記憶部には、予めデータの長さに応じた複数のメモリ領域が設定される。データ転送部は、データを受信して当該データを記憶部に転送する。これを前提にして、データ転送部では、受信部がデータを受信すると、データ検出部は、受信部によって受信したデータの長さを検出する。領域選択部は、記憶部の複数のメモリ領域の中から、データ検出部によって検出されたデータの長さに対応する単位格納容量のメモリ領域を選択するようになる。
【００３４】
従って、受信したデータの長さに対応する単位格納容量のメモリ領域に当該データを格納できるようになる。これにより、数十バイトのデータ長を有する制御系フレームから数万バイトのデータ長を有するジャンボフレームに至る受信データを効率良くメモリ領域に格納できるようになる。
【００３５】
本発明に係る受信データ格納方法は、データの長さに応じて予め設定された複数のメモリ領域に受信したデータを格納する方法であって、データを受信するステップと、受信したデータの長さを検出するステップと、設定された複数のメモリ領域の中から、検出されたデータの長さに対応する単位格納容量のメモリ領域を選択するステップと、選択された当該メモリ領域に受信したデータを格納するステップとを有することを特徴とするものである。
【００３６】
本発明に係る受信データ格納方法によれば、所定の長さのデータを受信して記憶部に格納する際に、受信したデータの長さに対応する単位格納容量のメモリ領域に当該データを格納できるようになる。
【００３７】
本発明に係る制御プログラムは、データの長さに応じて予め設定された複数のメモリ領域に受信したデータを格納する制御プログラムであって、データを受信するステップと、受信したデータの長さを検出するステップと、設定された複数のメモリ領域の中から、検出されたデータの長さに対応する単位格納容量のメモリ領域を選択するステップと、複数のメモリ領域の中から選択された当該メモリ領域に受信したデータを格納するステップとを有することを特徴とするものである。
【００３８】
本発明に係る制御プログラムによれば、所定の長さのデータを受信して記憶部に格納する際に、複数のメモリ領域の中から、当該データの長さに対応する単位格納容量のメモリ領域を選択するようなステップを実行できるので、受信したデータの長さに対応する単位格納容量のメモリ領域に当該データを格納できるようになる。
【００３９】
本発明に係る記録媒体は、データの長さに応じて予め設定された複数のメモリ領域に受信したデータを格納する制御プログラムを記述した記録媒体であって、データを受信するステップと、受信したデータの長さを検出するステップと、設定された複数のメモリ領域の中から、検出されたデータの長さに対応する単位格納容量のメモリ領域を選択するステップと、複数のメモリ領域の中から選択された当該メモリ領域に受信したデータを格納するステップとを有する制御プログラムを記述したことを特徴とするものである。
【００４０】
本発明に係る記録媒体によれば、本発明に係る制御プログラムが記述されるので、所定の長さのデータを受信して記憶部に格納する際に、複数のメモリ領域の中から、当該データの長さに対応する単位格納容量のメモリ領域を選択するようなステップを実行できるようになる。従って、受信したデータの長さに対応する単位格納容量のメモリ領域に当該データを再現性良く格納できるようになる。
【発明の効果】
【００４１】
本発明に係る受信端末装置及び受信データ格納方法によれば、所定の長さのデータを受信して記憶部に転送するデータ転送部を備え、データ転送部には領域選択部が設けられ、記憶部の複数のメモリ領域の中から、データの長さに対応する単位格納容量のメモリ領域を選択するようになされる。
【００４２】
この構成によって、受信したデータの長さに対応する単位格納容量のメモリ領域に当該データを格納できるようになる。従って、数十バイトのデータ長を有する制御系フレームから１万バイトのデータ長を有するジャンボフレームに至る受信データを効率良くメモリ領域に格納できるので、従来方式に比べてメモリ容量の無駄を大幅に省けるようになる。その結果、メモリ設備量の削減効果を期待できるようになる。
【００４３】
本発明に係る制御プログラム及び記録媒体によれば、所定の長さのデータを受信して記憶部に格納する際に、複数のメモリ領域の中から、当該データの長さに対応する単位格納容量のメモリ領域を選択するようなステップが記述されている。
【００４４】
この構成によって、受信したデータの長さに対応する単位格納容量のメモリ領域に当該データを再現性良く格納できるようになる。従って、数十バイトのデータ長を有する制御系フレームから１万バイトのデータ長を有するジャンボフレームに至る受信データを効率良くメモリ領域に格納できるので、当該制御プログラム及び記録媒体を適用した受信端末装置等において、従来方式に比べてメモリ容量の無駄を大幅に省けるようになる。
【発明を実施するための最良の形態】
【００４５】
続いて、この発明に係る受信端末装置、受信データ格納方法、制御プログラム及び記録媒体の一実施の形態について、図面を参照しながら説明をする。
【００４６】
図１は、本発明に係る実施形態としての受信端末装置１００及びその周辺の構成例を示す概念図である。図１に示す受信端末装置１００はダイレクトメモリアクセス（Direct Memory Access：以下ＤＭＡという）機能を有しており、例えば、データバス１０、ネットワークインタフェースカード（Network  Interface  Card：以下、ＮＩＣカード２０という）、受信フレーム格納用のメモリ３０及びＣＰＵ（Central  Processing  Unit：中央処理装置）４０を有して構成される。
【００４７】
ＮＩＣカード２０はデータ転送部の一例を構成し、ネットワーク５０に接続して使用される。ＮＩＣカード２０はＤＭＡ機能を有しており、当該ネットワーク５０から所定の長さのデータをフレーム単位に受信して、当該データを受信フレーム格納用のメモリ３０にＤＭＡ転送するようになされる。ＮＩＣカード２０は受信端末装置１００に実装又は装着されてデータバス１０に接続される。
【００４８】
データバス１０には記憶部５８が接続される。記憶部５８には受信フレーム格納用のメモリ３０と受信ディスクリプタ用のメモリ２８が準備される。２つのメモリ２８及び３０は別体である必要はなく、１つの記憶装置内のメモリ領域を分割して使用するものであってもよい。メモリ３０には、ＮＩＣカード２０によって受信されるデータの長さに応じた複数のメモリ領域が予め設定される。ネットワーク５０から受信された受信データは、ＮＩＣカード２０のＤＭＡ機能によって、データバス１０を通ってメモリ３０の受信フレーム格納用のメモリ領域へ自動的に転送される。記憶部５８には１ＧＢ（ギガバイト）程度の主記憶装置が使用される。
【００４９】
データバス１０には記憶部５８の他に制御部の一例を構成するＣＰＵ４０が接続され、記憶部５８及びＮＩＣカード２０を制御する。ＣＰＵ４０は、制御プログラムの一例を構成するネットワークデバイスドライバ用のプログラムに基づいてＮＩＣカード２０から記憶部５８への受信データの転送制御を実行する。ＣＰＵ４０には不揮発性の記録媒体の一例を構成するＥＥＰＲＯＭ４１が接続され、ＤＭＡ機能を実現するネットワークデバイスドライバ用のプログラムや、ネットワークプロトコルスタック用のプログラム等が記述される。
【００５０】
ネットワークデバイスドライバ用のプログラムは、データの長さに応じて予め設定された複数のメモリ領域に、受信データを格納する際の制御プログラムであって、データを受信するステップと、受信したデータの長さを検出するステップと、設定された複数のメモリ領域の中から、検出された受信データの長さに対応する単位格納容量のメモリ領域を選択するステップと、選択された当該メモリ領域に受信したデータを格納するステップとを含んでいる。
【００５１】
ネットワークプロトコルスタック用のプログラムは、受信データをアプリケーションプログラムへ受け渡す際の制御プログラムであって、受信フレームキューから受信フレームを取り出すステップと、ネットワークプロトコル処理を実行するステップと、受信フレームから受信データのみを取り出すステップと、受信を待つアプリケーションプログラムへ受信データを受け渡すステップとを含んでいる。
【００５２】
これらのプログラムやＥＥＰＲＯＭ４１によれば、所定の長さのデータを受信してメモリ３０に格納する際に、複数のメモリ領域の中から、当該データの長さに対応する単位格納容量のメモリ領域を選択するようなステップを実行できるので、受信したデータの長さに対応する単位格納容量のメモリ領域に当該データを再現性良く格納できるようになる。これにより、数十バイトのデータ長を有する制御系フレームから１万バイトのデータ長を有するジャンボフレームに至る受信データを効率良くメモリ領域に格納できるようになる。また、効率良く、受信を待つアプリケーションプログラムへ受信データを受け渡すことができる。
【００５３】
図２は、ＮＩＣカード２０及びその周辺の構成例を示すブロック図である。図２に示すＮＩＣカード２０は、物理層プロトコル部（Physical  Layer  Protocol：以下ＰＨＹ部２１という）、媒体アクセス制御部（Media  Access  Control：以下ＭＡＣ部２２という）、受信用のバッファ２３、送信用のバッファ２４、ＤＭＡコントローラ２５、ネットワークコネクタ２６及び、バスコネクタ２７を有して構成される。
【００５４】
ネットワークコネクタ２６はネットワークケーブル５１に接続される。ネットワークケーブル５１は図１に示したネットワーク５０に接続される。ネットワークケーブル５１には光ファイバやワイヤケーブルが使用される。
【００５５】
ネットワークコネクタ２６には物理層プロトコル用のＰＨＹ部２１が接続される。ＰＨＹ部２１内には受信部２０１が設けられ、受信時、ネットワーク５０からデータを受信する。受信部２０１は、例えば、ネットワークケーブル５１が光ファイバである場合、当該光ファイバから光信号（受信フレーム）を受光し、これを光電変換して、この光電変換後のアナログ信号をデジタル信号に変換し、このデジタル信号をフレーム単位に復号化する。ここに、復号化後のデジタル信号を受信データという。ＰＨＹ部２１には、発光素子や、受光素子、Ａ／Ｄ変換器、Ｄ／Ａ変換器、符号化器、復号化器等が使用される。
【００５６】
ＰＨＹ部２１にはデータ検出部の一例を構成する媒体アクセス制御用のＭＡＣ部２２が接続され、受信データはＰＨＹ部２１からＭＡＣ部２２へフレーム単位に転送される。ＭＡＣ部２２は、受信時、ＰＨＹ部２１からフレーム単位に転送されてくる受信データにエラーが有るか否かのチェックや、アドレス及びタイプ等の解析を実行する。
【００５７】
ＭＡＣ部２２には受信用のバッファ２３及び送信用のバッファ２４が接続され、受信時、受信データをバッファ２３に一時記憶する。バッファ２３には６４Ｋバイト程度のＦＩＦＯメモリが使用される。ＭＡＣ部２２は受信部２０１によって受信したデータの長さ（データサイズ）を検出する。例えば、ＭＡＣ部２２は、受信データをバッファ２３に一時記憶する際にそのデータビットをカウントしてデータサイズ（長さ）を検出する。データ長検出結果はディスクリプタ情報を構成し、エラー有無、アドレス及びタイプ等の解析結果と共にＭＡＣ部２２からＤＭＡコントローラ２５へ通知される。
【００５８】
バッファ２３及び２４には領域選択部の一例を構成するＤＭＡコントローラ２５が接続される。ＤＭＡコントローラ２５は、従来方式のＤＭＡコントローラの機能と異なっており、ＭＡＣ部２２から通知される受信フレーム情報に基づいてメモリ３０の複数のメモリ領域の中から受信データの長さに対応する単位格納容量のメモリ領域を選択するように動作する。ＤＭＡコントローラ２５はバスコネクタ２７に接続される。バスコネクタ２７は図１に示したデータバス１０に接続される。
【００５９】
ＤＭＡコントローラ２５は、受信時、ＭＡＣ部２２から受信用のバッファ２３へのフレーム格納完了通知を受けることで、受信データをバッファ２３から取得し、当該受信データをディスクリプタ情報に従って記憶部５８へ転送するようになされる。
【００６０】
ＤＭＡコントローラ２５は、データ送信時、ＣＰＵ４０から送信を指示されることで自動的に記憶部５８上にある送信データを取得し、当該送信データを送信用のバッファ２４に一時記憶する。ＭＡＣ部２２は、送信時、ＤＭＡコントローラ２５からの送信情報をもとにバッファ２４から送信データを取り出し、当該送信データをＭＡＣ部２２の送信フレームとして生成し、この送信フレームをＰＨＹ部２１に転送する。
【００６１】
ＰＨＹ部２１内には送信部２０２が設けられ、送信時、ＭＡＣ部２２からの送信フレームをネットワークケーブル５１へ流せるようにフレーム単位に符号化してデジタル信号にする。ネットワークケーブル５１が光ファイバである場合、符号化されたデジタル信号に基づいて発光素子を駆動し、光信号をネットワークケーブル５１（光ファイバ）を介してネットワーク５０へ送信する。
【実施例１】
【００６２】
図３は、第１の実施例としての受信ディスクリプタ用のメモリ２８と、受信フレーム格納用のメモリ３０との関係例を示す図である。  
この実施例では、記憶部５８内の受信ディスクリプタ群を１つのメモリラインと見なして、ＤＭＡコントローラ２５の制御を受けて受信ディスクリプタ群が複数のメモリラインの中から単位格納容量の異なるメモリ領域を選択するようになされる。この例では、受信ディスクリプタ群が２つのメモリラインを用いて６４バイト用のメモリ領域や、４０９６バイト用のメモリ領域等を選択する場合について説明する。
【００６３】
図３に示す記憶部５８内のメモリ３０には、２つのメモリラインが準備される。この例では、ライン＃１の受信ディスクリプタに設定されるメモリ領域のサイズは、６４バイトの場合とする。第１のメモリライン（以下単にライン＃１という）には、受信したデータ（以下受信データという）を格納するための６４バイト単位格納容量（第１の単位格納容量）のメモリ領域が４０９６個分だけ割り当てられる。ライン＃１は６４バイト用のメモリラインを構成する。
【００６４】
また、第２のメモリライン（以下単にライン＃２という）には、受信データを格納するための４０９６バイト単位格納容量（第２の単位格納容量）のメモリ領域が６４個分だけ割り当てられる。ライン＃２は４０９６バイト用のメモリラインを構成する。図３に示した記憶部５８内の受信ディスクリプタ用のメモリ２８には、ライン＃１（６４バイト用のメモリ領域）に対応した受信ディスクリプタ用の複数のメモリ領域と、ライン＃２（４０９６バイト用のメモリ領域）に対応した受信ディスクリプタ用の複数のメモリ領域とが割り当てられる。この例では、ライン＃１に対して１ｉ（ｉ＝１〜Ｌ）個の受信ディスクリプタが割り当てられ、ライン＃２に対して２ｊ（ｊ＝１〜Ｍ）個の受信ディスクリプタが割り当てられる。
【００６５】
ＮＩＣカード２０には、受信処理時の設定項目を成す第１及び第２のデータ格納基準値が設定される。ここに受信処理時の設定項目とは、受信フレームサイズに応じて、どの受信ディスクリプタのメモリラインを使用するかを設定する項目をいう。この例では、第１のデータ格納基準値として６４バイトが設定され、第２のデータ格納基準値として４０９６バイトが設定される。
【００６６】
このようなデータ格納基準値をＮＩＣカード２０に設定して、受信データの長さ（受信フレームサイズ）に対応した単位格納容量のメモリ領域を選択するようになされる。例えば、受信フレームサイズが６４バイト以下である場合は、ライン＃１が選択される。すなわち、ＮＩＣカード２０は、ＭＡＣ部２２で検出された受信データの長さと６４バイト（第１のデータ格納基準値）とを比較し、ＭＡＣ部２２で検出された受信データの長さが格納基準値６４バイト以下である場合は、ライン＃１を選択し、当該データを６４バイト用のメモリ領域に転送すると共にデータ転送完了を示す情報を発生する。
【００６７】
また、受信フレームサイズが６５バイト以上である場合はライン＃２が選択される。すなわち、ＮＩＣカード２０は、ＭＡＣ部２２で検出された受信データの長さが６４バイトを越える場合は、当該データの長さと４０９６バイト（第２の格納基準値）とを更に比較し、ＭＡＣ部２２で検出された受信データの長さが格納基準値４０９６バイト以下である場合は、ライン＃２を選択し、当該データを４０９６バイト用のメモリ領域に転送すると共にデータ転送完了を示す情報を発生する。
【００６８】
なお、ＭＡＣ部２２で検出された受信データの長さが格納基準値４０９６バイトを越える場合は、ライン＃２を選択し、当該データをメモリ３０の４０９６バイト用のメモリ領域に転送すると共にメモリ領域重複使用を示す情報を発生する。
【００６９】
表２は、記憶部５８内の受信ディスクリプタ群が２つのライン＃１，＃２を用いてメモリ領域を選択する場合のＤＭＡコントローラ２５への設定項目の内容例を示している。
【００７０】
【表２】
2009065564.tif 000004
【００７１】
表２によれば、使用するラインの数には「２」が設定され、ライン＃１の受信ディスクリプタが格納されているアドレスには「１００００」が設定される。ライン＃１の受信ディスクリプタの数には「４０９６」が設定され、ライン＃１の受信ディスクリプタ１つに対する受信フレーム格納サイズには「６４（単位：バイト）」が設定される。ライン＃１を選択する受信フレームサイズの最小値には「１（単位：バイト）」が設定され、ライン＃１を選択する受信フレームサイズの最大値には「６４（単位：バイト）」が設定される。
【００７２】
また、ライン＃２の受信ディスクリプタが格納されているアドレスには「２００００」が設定される。ライン＃２の受信ディスクリプタの数には「６４」が設定され、ライン＃２の受信ディスクリプタ１つに対する受信フレーム格納サイズには「４０９６（単位：バイト）」が設定される。ライン＃２を選択する受信フレームサイズの最小値には「６５（単位：バイト）」が設定され、ライン＃２を選択する受信フレームサイズの最大値には「０（”０”の場合は無限とする）」が設定される。
【００７３】
このような内容を設定した場合、ＴＣＰのＡＣＫなどのような制御系フレームを受信した場合はライン＃１が使用され、制御系フレーム以外のフレーム（データが存在するフレームなど）が受信された場合は、ライン＃２が使用されることになる。この方法により、記憶部５８のメモリ３０の使用効率が良くなることが期待される。従来方式に比べてメモリ容量の無駄を大幅に省けるようになる。その結果、メモリ設備量を削減できるようになる。
【００７４】
続いて、本発明に係る第１の受信データ格納方法について説明する。第１の受信データ格納方法については、受信準備処理例、受信処理時の全体の流れ、ＤＭＡコントローラにおける処理例及びＣＰＵ４０の受信処理例の４つに分けて説明する。
【００７５】
［受信準備処理例］
図４は、受信端末装置１００におけるデータの受信準備処理例を示すフローチャートである。この例では、記憶部５８内のメモリ３０にライン＃１として４０９６個の６４バイト用のメモリ領域を確保すると共に、ライン＃２として６４個の４０９６バイト用のメモリ領域を確保する。また、記憶部５８内のメモリ２８に、ライン＃１に対応する１ｉ個（ｉ＝１〜Ｌ）の受信ディスクリプタのメモリ領域を確保すると共に、ライン＃２に対応する２ｊ個（ｊ＝１〜Ｍ）の受信ディスクリプタのメモリ領域を確保する場合を例に挙げる。
【００７６】
これらを受信準備処理条件にして、図４に示すフローチャートのステップＡ１でＣＰＵ４０は、記憶部５８内のメモリ２８からライン＃１に対応する４０９６個分の受信ディスクリプタ用のメモリ領域を確保する。次に、ステップＡ２でＣＰＵ４０は、記憶部５８内のメモリ３０からライン＃１の６４バイト分の受信フレーム格納用のメモリ領域を確保する。６４バイト分のアドレスは、メモリ２８の受信ディスクリプタに設定される。その後、ステップＡ３でＣＰＵ４０は、４０９６個分の受信ディスクリプタの設定が完了したかを判別する。４０９６個分の受信ディスクリプタの設定が完了していない場合は、ステップＡ２に戻って上述の処理を繰り返す。
【００７７】
４０９６個分の受信ディスクリプタの設定が完了した場合は、ステップＡ４に移行して、ＣＰＵ４０は、記憶部５８内のメモリ２８からライン＃２の６４個分の受信ディスクリプタのメモリ領域を確保する。その後、ステップＡ５でＣＰＵ４０は、記憶部５８内のメモリ３０からライン＃２の４０９６バイトの受信フレーム格納用のメモリ領域を確保し、そのアドレスを受信ディスクリプタに設定する。そして、ステップＡ６でＣＰＵ４０は、６４個分の受信ディスクリプタの設定が完了したかを判別する。６４個分の受信ディスクリプタの設定が完了していない場合は、ステップＡ５に戻って上述の処理を繰り返す。
【００７８】
６４個分の受信ディスクリプタの設定が完了した場合は、ステップＡ７に移行して、ＣＰＵ４０は、ＤＭＡコントローラ２５に対し、表２に示した設定値を設定する。表２によれば、ライン数「２」、ライン＃１のアドレス「１００００」、その受信ディスクリプタ数「４０９６」、その受信フレーム格納サイズ「６４」、受信フレームサイズの最小値「１」、その最大値「６４」が各々設定される。また、ライン＃２のアドレス「２００００」、その受信ディスクリプタ数「６４」、その受信フレーム格納サイズ「４０９６」、その受信フレームサイズの最小値「６５」、その最大値には「０」が各々設定される。
【００７９】
その後、ステップＡ８でＣＰＵ４０は、ＮＩＣカード２０内のＤＭＡコントローラ２５のＤＭＡ機能を有効となされる。更に、ステップＡ９でＣＰＵ４０はＮＩＣカード２０内のＭＡＣ部２２及びＰＨＹ部２１に対して受信機能を有効となされる。これにより、受信端末装置１００におけるデータの受信準備処理が完了する。
【００８０】
［受信処理時の全体の流れ］
図５Ａ〜Ｆは、受信端末装置１００におけるデータ受信処理時の全体の流れを示すシーケンスチャートである。この例では、データの長さに応じて、ライン＃１には、受信データを格納するための６４バイト用のメモリ領域が予め４０９６個分設定され、ライン＃２には、受信データを格納するための４０９６バイト用のメモリ領域が予め６４個分だけ設定され、これらの複数のメモリ領域に受信データを格納する場合を前提とする。
【００８１】
図５Ａに示すＰＨＹ部２１は、受信時、ネットワーク５０からデータを受信してデータを復号化する。例えば、ネットワークケーブル５１が光ファイバである場合、ＰＨＹ部２１内の受信部２０１では、受光素子が光ファイバからの光信号（受信フレーム）を受光し、これを光電変換する。そして、Ａ／Ｄ変換器は、光電変換後のアナログ信号をデジタル信号に変換し、復号化器は、デジタル信号をフレーム単位に復号化する。復号化後のデジタル信号が受信データ（復号化データ）となる。受信データはＰＨＹ部２１からＭＡＣ部２２へフレーム単位に転送される。
【００８２】
図５Ｂに示す媒体アクセス制御用のＭＡＣ部２２は、受信データをＰＨＹ部２１から入力してフレームの解析を実行する。例えば、ＭＡＣ部２２は、ＰＨＹ部２１からフレーム単位に転送されてくる受信データ（以下受信フレームという）にエラーが有るか否かのチェックや、アドレス及びタイプ等の解析を実行する。
【００８３】
この例で、ＭＡＣ部２２は受信部２０１によって受信されたデータの長さ（データサイズ）を検出する。例えば、ＭＡＣ部２２は、受信フレームをバッファ２３に一時記憶する際にそのデータビットをカウントしてデータサイズ（長さ）を測定する。データサイズの測定結果は、エラー有無、アドレス及びタイプ等の解析結果と共にディスクリプタ情報（受信情報）を構成する。ＭＡＣ部２２は、受信フレームを図５Ｃに示す受信用のバッファ２３に格納すると同時に、受信情報と共に受信フレーム格納完了通知を図５Ｄに示すＤＭＡコントローラ２５へ出力する。
【００８４】
ＤＭＡコントローラ２５は、受信ディスクリプタから受信フレーム転送先のメモリ領域を取得する。ＤＭＡコントローラ２５は、ＭＡＣ部２２から通知されるディスクリプタ情報に基づいて受信データの長さに対応する単位格納容量のメモリ領域を記憶部５８内のメモリ３０の４０９６個の６４バイト用のメモリ領域、又は、６４個の４０９６バイト用のメモリ領域の中から選択するように動作する。
【００８５】
ＤＭＡコントローラ２５は、受信時、ＭＡＣ部２２から受信用のバッファ２３へのフレーム格納完了通知を受けることで、受信データをバッファ２３から取得し、当該受信データをディスクリプタ情報に従って記憶部５８内のメモリ３０へ転送するようになされる。このとき、バッファ２３は図５Ｅに示す記憶部５８内のメモリ３０へ受信フレームをＤＭＡ転送する。ＤＭＡコントローラ２５は、受信ディスクリプタのステータスへ書き込みを実行する。ＤＭＡコントローラ２５は、受信フレームＤＭＡ転送完了通知をＣＰＵ４０へ出力する。その後、ＤＭＡコントローラ２５は、記憶部５８内のメモリ３０に対して新しいディスクリプタをロードする。これにより、図５Ｆに示すＣＰＵ４０は受信フレームＤＭＡ転送完了通知の入力に基づいて受信処理を実行できるようになる（図７参照）。
【００８６】
［ＤＭＡコントローラにおける処理例］
図６は、ＤＭＡコントローラ２５における受信処理例を示すフローチャートである。この例では、図５Ｄに示したＤＭＡコントローラ２５は、図６に示すフローチャートのステップＢ１で、ライン＃１，＃２の新しい受信ディスクリプタをロードする。
【００８７】
ステップＢ２でＤＭＡコントローラ２５は、ＭＡＣ部２２から受信フレーム格納完了通知を待つ。受信フレーム格納完了通知は、受信フレームのデータの長さ（以下で受信フレーム長という）を含む受信情報と共に、ＭＡＣ部２２からＤＭＡコントローラ２５へ出力される。
【００８８】
ステップＢ３でＤＭＡコントローラ２５は、ＭＡＣ部２２からの受信フレーム格納完了通知が有ったか否かを判別する。この際に、ＤＭＡコントローラ２５は受信フレーム格納完了通知が有ったか否かを、例えば、信号レベルで判断する。受信フレーム格納完了通知信号がハイ・レベルで「通知有り」を判断し、当該信号がロー・レベルで「通知無し」を判断する。
【００８９】
受信フレーム格納完了通知が無い場合は、ステップＢ２に戻って、ＤＭＡコントローラ２５は、ＭＡＣ部２２からの受信フレーム格納完了通知を待つ。受信フレーム格納完了通知が有った場合、ＤＭＡコントローラ２５は、ＭＡＣ部２２から入力した受信情報に含まれる受信フレーム長を取得する。
【００９０】
ステップＢ５に移行してＤＭＡコントローラ２５は、受信フレーム長と格納基準値６４バイトとを比較する。この比較処理は、記憶部５８内のメモリ３０に設定されたライン＃１又は＃２、すなわち、４０９６個の６４バイト用のメモリ領域、又は、６４個の４０９６バイト用のメモリ領域の中から、検出された受信データの長さに対応する６４バイト用のメモリ領域、又は、４０９６バイト用のメモリ領域を選択するためである。
【００９１】
受信フレーム長が格納基準値６４バイト以下である場合は、ライン＃１を選択するために、ステップＢ６に移行する。ステップＢ６でＤＭＡコントローラ２５は、受信フレームをライン＃１のディスクリプタ内のアドレスへＤＭＡ転送する。これにより、選択された当該６４バイト用のメモリ領域に受信データを格納できるようになる。
【００９２】
その後、ステップＢ７に移行してＤＭＡコントローラ２５は、”受信フレームを転送した”という情報をライン＃１の受信ディスクリプタのステータスに記述する。その後、ステップＢ８に移行してＤＭＡコントローラ２５は、ライン＃１の新しい受信ディスクリプタをロードする。
【００９３】
なお、上述のステップＢ５で受信フレーム長が６５バイト以上である場合には、ステップＢ９に移行する。ステップＢ９でＤＭＡコントローラ２５は、受信フレームの未転送部分が格納基準値４０９６バイトよりも大きいかを判別する。この際に、ＤＭＡコントローラ２５は、受信フレームの未転送部分と格納基準値４０９６バイトとの差分を求め、差分がプラスであるかマイナスであるかに基づいて当該受信フレームの未転送部分が格納基準値４０９６バイトよりも大きいか小さいかを判別する。
【００９４】
受信フレームの未転送部分が格納基準値４０９６バイトよりも大きい場合は、ライン＃２を選択するために、ステップＢ１０に移行して、ＤＭＡコントローラ２５は、受信フレームの４０９６バイトをライン＃２の受信ディスクリプタ内のアドレスへＤＭＡ転送する。これにより、選択された当該４０９６バイト用のメモリ領域に受信データを格納できるようになる。
【００９５】
その後、ステップＢ１１に移行してＤＭＡコントローラ２５は、”現在の受信フレームが次のディスクリプタも使用する”という情報をライン＃２の受信ディスクリプタのステータスに記述する。その後、ステップＢ１２に移行してＤＭＡコントローラ２５は、ライン＃２の新しい受信ディスクリプタをロードする。
【００９６】
上述のステップＢ９で受信フレーム長が格納基準値４０９６バイト未満である場合は、ライン＃２を選択するために、ステップＢ１３に移行する。ステップＢ１３でＤＭＡコントローラ２５は、受信フレームの未転送部分をライン＃２の受信ディスクリプタ内のアドレスへＤＭＡ転送する。これにより、選択された当該４０９６バイト用のメモリ領域に受信データを格納できるようになる。
【００９７】
その後、ステップＢ１４に移行してＤＭＡコントローラ２５は、転送したデータのサイズをディスクリプタ内のサイズに書き込むと共に、”このディスクリプタで受信フレームの最後である”という情報をライン＃２の受信ディスクリプタのステータスに記述する。その後、ステップＢ１５に移行してＤＭＡコントローラ２５は、ライン＃２の新しい受信ディスクリプタをロードする。これにより、ネットワーク５０から受信したデータをサイズ別に、記憶部５８内のメモリ３０の４０９６個の６４バイト用のメモリ領域又は、６４個の４０９６バイト用のメモリ領域に格納できるようになる。
【００９８】
［ＣＰＵにおける受信処理例］
図７は、ＣＰＵ４０における受信処理例を示すフローチャートである。この例では図５Ｆに示したＣＰＵ４０がネットワークドライバプログラムに基づいて受信ディスクリプタのステータス処理をする際に、２つのメモリライン＃１，＃２をチェックするようになされる。
【００９９】
これを受信処理条件にして、図７に示すフローチャートのステップＣ１でネットワークドライバプログラムに基づいて受信処理を実行するＣＰＵ４０は、ＮＩＣカード２０から送信されてくる受信フレームＤＭＡ転送完了通知（以下単に受信通知という）を待機する。
【０１００】
そして、ステップＣ２でＣＰＵ４０は、ネットワークドライバプログラムに基づいてＮＩＣカード２０から受信通知が有ったか否かを判別する。受信通知が無い場合は、ステップＣ１に戻って受信通知を待つ。受信通知が有った場合は、ステップＣ３に移行して、ＣＰＵ４０は、受信ディスクリプタ内のステータスが受信フレーム転送済みであることを表示しているかを判別する。
【０１０１】
ステータスが受信フレーム転送済みを表示している場合は、ステップＣ４に移行してＣＰＵ４０は、ネットワークドライバプログラムを実行して、複数のメモリラインをチェックし、受信ディスクリプタ内のアドレスとデータサイズとを利用してネットワークプロトコルスタックプログラムへの受信フレームキューに受信フレームを記述（入力）する。その後、ステップＣ５に移行して、ＣＰＵ４０は次の受信ディスクリプタを参照する。
【０１０２】
上述のステップＣ３でステータスが受信フレーム転送済みを表示していない場合は、ステップＣ６に移行してＣＰＵ４０はネットワークプロトコルスタックプログラムを実行して、受信フレームキューから受信フレームを取り出し、ネットワークプロトコル処理を実行し、受信フレームから受信データのみを取り出す。そして、ステップＣ７に移行してＣＰＵ４０はネットワークプロトコルスタックプログラムを実行して、受信を待つアプリケーションプログラムへ受信データを受け渡すようになされる。
【０１０３】
このように、第１の実施例に係る受信端末装置１００及び受信データ格納方法によれば、所定の長さのデータを受信して記憶部５８内の受信フレーム格納用のメモリ３０に格納する場合に、メモリ３０には、予めデータの長さに応じた４０９６個の６４バイト用のメモリ領域、及び、６４個の４０９６バイト用のメモリ領域が設定される。ＮＩＣカード２０は、データを受信して当該データをメモリ３０に転送する。これを前提にして、ＮＩＣカード２０では、受信部２０１がデータを受信すると、ＭＡＣ部２２は、受信部２０１によって受信したデータの長さを検出する。ＤＭＡコントローラ２５は、メモリ３０に予め設定された４０９６個の６４バイト用のメモリ領域、及び、６４個の４０９６バイト用のメモリ領域の中から、ＭＡＣ部２２によって検出された受信データの長さに対応する６４バイト用のメモリ領域、又は、４０９６バイト用のメモリ領域を選択するようになる。
【０１０４】
従って、受信データの長さに対応した６４バイト用のメモリ領域、又は、４０９６バイト用のメモリ領域に当該データを格納できるようになる。これにより、数十バイトのデータ長を有する制御系フレームから１万バイトのデータ長を有するジャンボフレームに至る受信データを効率良くメモリ領域に格納できるようになる。従来方式に比べてメモリ容量の無駄を大幅に省けるようになる。その結果、メモリ設備量の削減効果を期待できるようになる。
【実施例２】
【０１０５】
図８は、第２の実施例としての受信ディスクリプタ用のメモリ２８’と、受信フレーム格納用のメモリ３０’との関係例を示す図である。  
この実施例では受信端末装置２００を構成し、当該受信端末装置２００は、図１及び図２に示した受信端末装置１００と比較すると、記憶部５８内のメモリ２８がメモリ２８’に、記憶部５８内のメモリ３０がメモリ３０’にそれぞれ変更されるものであり、受信ディスクリプタ群が３つのメモリラインを用いて６４バイト用のメモリ領域や、４０９６バイト用のメモリ領域、１００００バイト用のメモリ領域等を選択する場合であって、アプリケーションが必要とするジャンボフレームよりも大きなサイズのデータを効率良く送受信できるようになされる。
【０１０６】
図８に示す記憶部５８’内のメモリ３０’には、３つのメモリラインが準備される。この例では、ライン＃１の受信ディスクリプタに設定されるメモリ領域のサイズは、６４バイト、４０９６バイト及び、１００００バイトの場合とする。第１のメモリライン（以下単にライン＃１という）には、受信したデータ（以下受信データという）を格納するための６４バイト単位格納容量（第１の単位格納容量）のメモリ領域が４０９６個分だけ割り当てられる。ライン＃１は６４バイト用のメモリラインを構成する。
【０１０７】
また、第２のメモリライン（以下単にライン＃２という）には、受信データを格納するための４０９６バイト単位格納容量（第２の単位格納容量）のメモリ領域が６４個分だけ割り当てられる。ライン＃２は４０９６バイト用のメモリラインを構成する。受信データの長さが６５バイト以上で９９９９バイト以下である場合は、ライン＃２が選択される。
【０１０８】
更に、第３のメモリライン（以下単にライン＃３という）には、受信データを格納するための１００００バイト単位格納容量（第３の単位格納容量）のメモリ領域が１００個分だけ割り当てられる。ライン＃３は１００００バイト用のメモリラインを構成する。
【０１０９】
また、図８に示した記憶部５８’内の受信ディスクリプタ用のメモリ２８’には、ライン＃１（６４バイト用のメモリ領域）に対応した受信ディスクリプタ用の複数のメモリ領域と、ライン＃２（４０９６バイト用のメモリ領域）に対応した受信ディスクリプタ用の複数のメモリ領域と、ライン＃３（１００００バイト用のメモリ領域）に対応した受信ディスクリプタ用の複数のメモリ領域とが割り当てられる。
【０１１０】
この例では、ライン＃１に対して１ｉ（ｉ＝１〜Ｌ）個の受信ディスクリプタが割り当てられ、ライン＃２に対して２ｊ（ｊ＝１〜Ｍ）個の受信ディスクリプタが割り当てられ、ライン＃３に対して３ｋ（ｋ＝１〜Ｎ）個の受信ディスクリプタが割り当てられる。
【０１１１】
ＮＩＣカード２０には、受信処理時の設定項目を成す第１、第２及び第３のデータ格納基準値が設定される。ここに受信処理時の設定項目とは、受信フレームサイズに応じて、どの受信ディスクリプタのメモリラインを使用するかを設定する項目をいう。この例では、第１のデータ格納基準値として６４バイトが設定され、第２のデータ格納基準値として４０９６バイトが設定され、第３のデータ格納基準値として１００００バイトが設定される。
【０１１２】
このようなデータ格納基準値をＮＩＣカード２０に設定して、受信データの長さ（受信フレームサイズ）に対応した単位格納領域のメモリ領域を選択するようになされる。例えば、受信フレームサイズが６４バイト以下である場合は、ライン＃１が選択される。すなわち、ＮＩＣカード２０は、ＭＡＣ部２２で検出された受信データの長さと６４バイト（第１のデータ格納基準値）とを比較し、ＭＡＣ部２２で検出された受信データの長さが格納基準値６４バイト以下である場合は、ライン＃１が選択され、当該データを６４バイト用のメモリ領域に転送すると共にデータ転送完了を示す情報を発生する。
【０１１３】
この例では、ＭＡＣ部２２で検出された受信データの長さが６４バイトを越える場合は、当該データの長さと１００００バイト（第３のデータ格納基準値）とを更に比較し、ＭＡＣ部２２で検出された受信データの長さが１００００バイト以上である場合は、ライン＃３が選択され、当該データを１００００バイト用のメモリ領域に転送すると共にデータ転送完了を示す情報を発生する。
【０１１４】
また、ＭＡＣ部２２で検出された受信データの長さが１００００バイト未満である場合は、当該データの長さと４０９６バイト（第２の格納基準値）とを更に比較し、ＭＡＣ部２２で検出された受信データの長さが４０９６バイト未満である場合は、ライン＃２が選択され、当該データを４０９６バイト用のメモリ領域に転送すると共にデータ転送完了を示す情報を発生する。
【０１１５】
なお、ＭＡＣ部２２で検出された受信データの長さが格納基準値４０９６バイトを越える場合は、ライン＃２が選択され、当該データをメモリ３０’の４０９６バイト用のメモリ領域に転送すると共にメモリ領域重複使用を示す情報を発生する。表３は、受信ディスクリプタ群が３つのライン＃１，＃２，＃３を用いてメモリ領域を選択する場合のＤＭＡコントローラ２５への設定項目の内容例を示している。
【０１１６】
【表３】
2009065564.tif 000005
【０１１７】
表３によれば、使用するラインの数には「３」が設定され、ライン＃１の受信ディスクリプタが格納されているアドレスには「１００００」が設定される。ライン＃１の受信ディスクリプタの数には「４０９６」が設定され、ライン＃１の受信ディスクリプタ１つに対する受信フレーム格納サイズには「６４（単位：バイト）」が設定される。ライン＃１を選択する受信フレームサイズの最小値には「１（単位：バイト）」が設定され、ライン＃１を選択する受信フレームサイズの最大値には「６４（単位：バイト）」が設定される。
【０１１８】
また、ライン＃２の受信ディスクリプタが格納されているアドレスには「２００００」が設定される。ライン＃２の受信ディスクリプタの数には「６４」が設定され、ライン＃２の受信ディスクリプタ１つに対する受信フレーム格納サイズには「４０９６（単位：バイト）」が設定される。ライン＃２を選択する受信フレームサイズの最小値には「６５（単位：バイト）」が設定され、ライン＃２を選択する受信フレームサイズの最大値には「９９９９（単位バイト）」が設定される。
【０１１９】
更に、ライン＃３の受信ディスクリプタが格納されているアドレスには「３００００」が設定される。ライン＃３の受信ディスクリプタの数には「１００」が設定され、ライン＃３の受信ディスクリプタ１つに対する受信フレーム格納サイズには「１００００（単位：バイト）」が設定される。ライン＃３を選択する受信フレームサイズの最小値には「１００００（単位：バイト）」が設定され、ライン＃３を選択する受信フレームサイズの最大値には「０（”０”の場合は無限とする）」が設定される。
【０１２０】
このような内容を設定した場合、第１の実施例と同様にしてＴＣＰのＡＣＫなどのような制御系フレームを受信した場合はライン＃１が使用され、制御系フレーム以外のフレーム（データが存在するフレームなど）が受信された場合は、ライン＃２やライン＃３が使用されることになる。この方法により、記憶部５８’のメモリ３０’の使用効率が良くなることが期待される。従来方式に比べてメモリ容量の無駄を大幅に省けるようになる。その結果、メモリ設備量を削減できるようになる。
【０１２１】
続いて、本発明に係る第２の受信データ格納方法について説明する。第２の受信データ格納方法については、受信準備処理例及び、ＤＭＡコントローラにおける処理例の２つに分けて説明する。
【０１２２】
［受信準備処理例］
図９は、受信端末装置２００におけるデータの受信準備処理例を示すフローチャートである。この例では、記憶部５８’内のメモリ３０’にライン＃１として４０９６個の６４バイト用のメモリ領域を確保すると共に、ライン＃２として６４個の４０９６バイト用のメモリ領域を確保する。また、記憶部５８’内のメモリ２８’に、ライン＃１に対応する１ｉ個（ｉ＝１〜Ｌ）の受信ディスクリプタのメモリ領域を確保すると共に、ライン＃２に対応する２ｊ個（ｊ＝１〜Ｍ）の受信ディスクリプタのメモリ領域を確保する場合を例に挙げる。
【０１２３】
これらを受信準備処理条件にして、図９に示すフローチャートのステップＥ１でＣＰＵ４０は、記憶部５８’内のメモリ２８’からライン＃１に対応する４０９６個分の受信ディスクリプタ用のメモリ領域を確保する。次に、ステップＥ２でＣＰＵ４０は、記憶部５８’内のメモリ３０’からライン＃１の６４バイト分の受信フレーム格納用のメモリ領域を確保する。６４バイト分のアドレスは、メモリ２８’の受信ディスクリプタに設定される。その後、ステップＥ３でＣＰＵ４０は、４０９６個分の受信ディスクリプタの設定が完了したかを判別する。４０９６個分の受信ディスクリプタの設定が完了していない場合は、ステップＥ２に戻って上述の処理を繰り返す。
【０１２４】
４０９６個分の受信ディスクリプタの設定が完了した場合は、ステップＥ４に移行して、ＣＰＵ４０は、記憶部５８’内のメモリ２８’からライン＃２の６４個分の受信ディスクリプタのメモリ領域を確保する。その後、ステップＥ５でＣＰＵ４０は、記憶部５８’内のメモリ３０’からライン＃２の４０９６バイトの受信フレーム格納用のメモリ領域を確保し、そのアドレスを受信ディスクリプタに設定する。そして、ステップＥ６でＣＰＵ４０は、６４個分の受信ディスクリプタの設定が完了したかを判別する。６４個分の受信ディスクリプタの設定が完了していない場合は、ステップＥ５に戻って上述の処理を繰り返す。
【０１２５】
６４個分の受信ディスクリプタの設定が完了した場合は、ステップＥ７に移行して、ＣＰＵ４０は、記憶部５８’内のメモリ２８’からライン＃３の１００個分の受信ディスクリプタのメモリ領域を確保する。その後、ステップＥ８でＣＰＵ４０は、記憶部５８’内のメモリ３０’からライン＃３の１００００バイトの受信フレーム格納用のメモリ領域を確保し、そのアドレスを受信ディスクリプタに設定する。そして、ステップＥ９でＣＰＵ４０は、１００個分の受信ディスクリプタの設定が完了したかを判別する。１００個分の受信ディスクリプタの設定が完了していない場合は、ステップＥ８に戻って上述の処理を繰り返す。
【０１２６】
１００個分の受信ディスクリプタの設定が完了した場合は、ステップＥ１０に移行して、ＣＰＵ４０は、ＤＭＡコントローラ２５に対し、表３に示した設定値を設定する。表３によれば、ライン数「３」、ライン＃１のアドレス「１００００」、その受信ディスクリプタ数「４０９６」、その受信フレーム格納サイズ「６４」、受信フレームサイズの最小値「１」、その最大値「６４」が各々設定される。
【０１２７】
また、ライン＃２のアドレス「２００００」、その受信ディスクリプタ数「６４」、その受信フレーム格納サイズ「４０９６」、その受信フレームサイズの最小値「６５」、その最大値には「９９９９」が各々設定される。更に、ライン＃３のアドレス「３００００」、その受信ディスクリプタ数「１００」、その受信フレーム格納サイズ「１００００」、その受信フレームサイズの最小値「１００００」、その最大値には「０」が各々設定される。
【０１２８】
その後、ステップＥ１１でＣＰＵ４０は、ＮＩＣカード２０内のＤＭＡコントローラ２５のＤＭＡ機能を有効となされる。更に、ステップＥ１２でＣＰＵ４０はＮＩＣカード２０内のＭＡＣ部２２及びＰＨＹ部２１に対して受信機能を有効となされる。これにより、受信端末装置２００におけるデータの受信準備処理が完了する。
【０１２９】
［ＤＭＡコントローラにおける処理例］
図１０及び図１１は、ＤＭＡコントローラ２５における受信処理例（その１，２）を示すフローチャートである。この例では、図５Ｄに示したＤＭＡコントローラ２５は、図１０に示すフローチャートのステップＦ１で、ライン＃１，＃２の新しい受信ディスクリプタをロードする。
【０１３０】
ステップＦ２でＤＭＡコントローラ２５は、ＭＡＣ部２２から受信フレーム格納完了通知を待つ。受信フレーム格納完了通知は、受信フレームのデータの長さ（以下で受信フレーム長という）を含む受信情報と共に、ＭＡＣ部２２からＤＭＡコントローラ２５へ出力される。
【０１３１】
ステップＦ３でＤＭＡコントローラ２５は、ＭＡＣ部２２からの受信フレーム格納完了通知が有ったか否かを判別する。この際に、ＤＭＡコントローラ２５は受信フレーム格納完了通知が有ったか否かを、例えば、信号レベルで判断する。受信フレーム格納完了通知信号がハイ・レベルで「通知有り」を判断し、当該信号がロー・レベルで「通知無し」を判断する。
【０１３２】
受信フレーム格納完了通知が無い場合は、ステップＦ２に戻って、ＤＭＡコントローラ２５は、ＭＡＣ部２２からの受信フレーム格納完了通知を待つ。受信フレーム格納完了通知が有った場合、ＤＭＡコントローラ２５は、ＭＡＣ部２２から入力した受信情報に含まれる受信フレーム長を取得する。
【０１３３】
ステップＦ５に移行してＤＭＡコントローラ２５は、受信フレーム長と格納基準値６４バイトとを比較する。この比較処理は、記憶部５８’内のメモリ３０’に設定されたライン＃１又は＃２、すなわち、４０９６個の６４バイト用のメモリ領域、又は、６４個の４０９６バイト用のメモリ領域の中から、検出された受信データの長さに対応する６４バイト用のメモリ領域、又は、４０９６バイト用のメモリ領域を選択するためである。
【０１３４】
受信フレーム長が格納基準値６４バイト以下である場合は、ライン＃１を選択するために、ステップＦ６に移行する。ステップＦ６でＤＭＡコントローラ２５は、受信フレームをライン＃１のディスクリプタ内のアドレスへＤＭＡ転送する。これにより、選択された当該６４バイト用のメモリ領域に受信データを格納できるようになる。
【０１３５】
その後、ステップＦ７に移行してＤＭＡコントローラ２５は、”受信フレームを転送した”という情報をライン＃１の受信ディスクリプタのステータスに記述する。その後、ステップＦ８に移行してＤＭＡコントローラ２５は、ライン＃１の新しい受信ディスクリプタをロードする。
【０１３６】
なお、上述のステップＦ５で受信フレーム長が６５バイト以上である場合には、ステップＦ９に移行する。ステップＦ９でＤＭＡコントローラ２５は、受信フレーム長と格納基準値１００００バイトとを比較する。この比較処理は、メモリ３０’に設定されたライン＃３、すなわち、１００００バイト用のメモリ領域を選択するためである。
【０１３７】
受信フレーム長が格納基準値１００００バイト以上である場合は、ライン＃３を選択するために、ステップＦ１０に移行する。ステップＦ１０でＤＭＡコントローラ２５は、受信フレームをライン＃３のディスクリプタ内のアドレスへＤＭＡ転送する。これにより、選択された当該１００００バイト用のメモリ領域に受信データを格納できるようになる。
【０１３８】
その後、ステップＦ１１に移行してＤＭＡコントローラ２５は、”受信フレームを転送した”という情報をライン＃３の受信ディスクリプタのステータスに記述する。その後、ステップＦ１２に移行してＤＭＡコントローラ２５は、ライン＃３の新しい受信ディスクリプタをロードする。
【０１３９】
なお、上述のステップＦ９で受信フレーム長が格納基準値１００００バイト未満である場合には、ステップＦ１３に移行する。ステップＦ１３でＤＭＡコントローラ２５は、受信フレームの未転送部分が格納基準値４０９６バイトよりも大きいかを判別する。この際に、ＤＭＡコントローラ２５は、受信フレームの未転送部分と格納基準値４０９６バイトとの差分を求め、差分がプラスであるかマイナスであるかに基づいて当該受信フレームの未転送部分が格納基準値４０９６バイトよりも大きいか小さいかを判別する。
【０１４０】
受信フレームの未転送部分が格納基準値４０９６バイトよりも大きい場合は、ライン＃２を選択するために、ステップＦ１４に移行して、ＤＭＡコントローラ２５は、受信フレームの４０９６バイトをライン＃２の受信ディスクリプタ内のアドレスへＤＭＡ転送する。これにより、選択された当該４０９６バイト用のメモリ領域に受信データを格納できるようになる。
【０１４１】
その後、ステップＦ１５に移行してＤＭＡコントローラ２５は、”現在の受信フレームが次のディスクリプタも使用する”という情報をライン＃２の受信ディスクリプタのステータスに記述する。その後、ステップＦ１６に移行してＤＭＡコントローラ２５は、ライン＃２の新しい受信ディスクリプタをロードする。
【０１４２】
上述のステップＦ１３で受信フレーム長が格納基準値４０９６バイト未満である場合は、ライン＃２を選択するために、ステップＦ１７に移行する。ステップＦ１７でＤＭＡコントローラ２５は、受信フレームの未転送部分をライン＃２の受信ディスクリプタ内のアドレスへＤＭＡ転送する。これにより、選択された当該４０９６バイト用のメモリ領域に受信データを格納できるようになる。
【０１４３】
その後、ステップＦ１８に移行してＤＭＡコントローラ２５は、転送したデータのサイズを受信ディスクリプタ内のサイズに書き込むと共に、”このディスクリプタで受信フレームの最後である”という情報をライン＃２の受信ディスクリプタのステータスに記述する。その後、ステップＦ１９に移行してＤＭＡコントローラ２５は、ライン＃２の新しい受信ディスクリプタをロードする。これにより、ネットワーク５０から受信したデータをサイズ別に、記憶部５８’内のメモリ３０’の４０９６個の６４バイト用のメモリ領域又は、６４個の４０９６バイト用のメモリ領域に格納できるようになる。
【０１４４】
このように、第２の実施例に係る受信端末装置２００及び受信データ格納方法によれば、所定の長さのデータを受信して記憶部５８’内の受信フレーム格納用のメモリ３０’に格納する場合に、メモリ３０’には、予めデータの長さに応じた４０９６個の６４バイト用のメモリ領域、６４個の４０９６バイト用のメモリ領域及び１００個の１００００バイト用のメモリ領域が設定される。ＮＩＣカード２０は、データを受信して当該データをメモリ３０’に転送する。これを前提にして、ＮＩＣカード２０では、受信部２０１がデータを受信すると、ＭＡＣ部２２は、受信部２０１によって受信したデータの長さを検出する。ＤＭＡコントローラ２５は、記憶部５８’内のメモリ３０’に予め設定された４０９６個の６４バイト用のメモリ領域、６４個の４０９６バイト用のメモリ領域及び１００個の１００００バイト用のメモリ領域の中から、ＭＡＣ部２２によって検出された受信データの長さに対応する６４バイト用のメモリ領域、４０９６バイト用のメモリ領域、又は、１００００バイト用のメモリ領域を選択するようになる。
【０１４５】
従って、受信データの長さに対応した６４バイト用のメモリ領域、４０９６バイト用のメモリ領域又は、１００００バイト用のメモリ領域に当該データを格納できるようになる。これにより、数十バイトのデータ長を有する制御系フレームから１万バイトのデータ長を有するジャンボフレームに至る受信データを効率良くメモリ領域に格納できるようになる。
【０１４６】
因みに、アプリケーション層がジャンボフレームよりも大きなサイズのデータを送信する場合、そのデータをＭＴＵ単位でフラグメントが行われる。ここにフラグメントされたフレームサイズは、１００００バイトとなるため、このサイズのフレーム受信の頻度が高くなる。このサイズのフレームを受信した場合は、ライン＃３が使用されることとなる。これにより、従来方式に比べてメモリ容量の無駄を大幅に省けるようになる。その結果、受信フレーム格納用のメモリの設備量の削減効果を期待できるようになる。
【０１４７】
上述した実施例は、ほんの一部を示したものであり、より上位のプロトコルレイヤや、使用するアプリケーションに合わせて受信ディスクリプタのライン数や、その単位格納容量を設定することで、記憶部５８’内のメモリ３０’を効率良く使用できることを言うまでもない。
【産業上の利用可能性】
【０１４８】
この発明は、ネットワークからフレーム単位にデータを受信してデータ処理する情報処理装置に適用して極めて好適である。
【図面の簡単な説明】
【０１４９】
【図１】本発明に係る実施形態としての受信端末装置１００及びその周辺の構成例を示す概念図である。
【図２】ＮＩＣカード２０及びその周辺の構成例を示すブロック図である。
【図３】第１の実施例としての受信ディスクリプタ用のメモリ２８と、受信フレーム格納用のメモリ３０との関係例を示す図である。
【図４】受信端末装置１００におけるデータの受信準備処理例を示すフローチャートである。
【図５】（Ａ）〜（Ｆ）は、受信端末装置１００におけるデータ受信処理時の全体の流れを示すシーケンスチャートである。
【図６】ＤＭＡコントローラ２５における受信処理例を示すフローチャートである。
【図７】ＣＰＵ４０における受信処理例を示すフローチャートである。
【図８】第２の実施例としての受信ディスクリプタ用のメモリ２８’と、受信フレーム格納用のメモリ３０’との関係例を示す図である。
【図９】受信端末装置２００におけるデータの受信準備処理例を示すフローチャートである。
【図１０】ＤＭＡコントローラ２５における受信処理例（その１）を示すフローチャートである。
【図１１】ＤＭＡコントローラ２５における受信処理例（その２）を示すフローチャートである。
【図１２】従来例に係る受信端末装置１の構成例を示すブロック図である。
【図１３】従来例に係る受信ディスクリプタと受信フレーム格納用のメモリ領域との関係例を示す概念図である。
【図１４】従来例に係る他の受信ディスクリプタと受信フレーム格納用のメモリ領域との関係例を示す図である。
【図１５】図１２に示したＣＰＵ４による受信準備処理例を示すフローチャートである。
【図１６】ＤＭＡコントローラ１５による受信処理例を示すフローチャートである。
【図１７】フレームサイズが最大で１００００バイトとなるデータ受信例（その１）を示す図である。
【図１８】フレームサイズが最大で１００００バイトとなるデータ受信例（その２）を示す図である。
【図１９】フレームサイズが最大で１００００バイトとなるデータ受信例（その３）を示す図である。
【図２０】フレームサイズが最大で１００００バイトとなるデータ受信例（その４）を示す図である。
【符号の説明】
【０１５０】
１０・・・データバス、２０・・・ネットワークインタフェースカード（ＮＩＣカード）、２１・・・ＰＨＹ部、２２・・・ＭＡＣ部、２３・・・受信用のバッファ、２４・・・送信用のバッファ、２５・・・ＤＭＡコントローラ、２６・・・ネットワークコネクタ、２７・・・バスコネクタ、２８，２８’，３０，３０’・・・メモリ、４０・・・ＣＰＵ（制御部）、４１・・・ＥＥＰＲＯＭ（不揮発性のメモリ）、５０・・・ネットワーク、５１・・・ネットワークケーブル、１００・・・受信端末装置
【図１】
2009065564.tif 000006
【図２】
2009065564.tif 000007
【図３】
2009065564.tif 000008
【図４】
2009065564.tif 000009
【図５】
2009065564.tif 000010
【図６】
2009065564.tif 000011
【図７】
2009065564.tif 000012
【図８】
2009065564.tif 000013
【図９】
2009065564.tif 000014
【図１０】
2009065564.tif 000015
【図１１】
2009065564.tif 000016
【図１２】
2009065564.tif 000017
【図１３】
2009065564.tif 000018
【図１４】
2009065564.tif 000019
【図１５】
2009065564.tif 000020
【図１６】
2009065564.tif 000021
【図１７】
2009065564.tif 000022
【図１８】
2009065564.tif 000023
【図１９】
2009065564.tif 000024
【図２０】
2009065564.tif 000025