JP3112958B2 - 受信バッファ管理方式 - Google Patents

受信バッファ管理方式

Info

Publication number
JP3112958B2
JP3112958B2 JP03005321A JP532191A JP3112958B2 JP 3112958 B2 JP3112958 B2 JP 3112958B2 JP 03005321 A JP03005321 A JP 03005321A JP 532191 A JP532191 A JP 532191A JP 3112958 B2 JP3112958 B2 JP 3112958B2
Authority
JP
Japan
Prior art keywords
buffer
size
empty
received
reception
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP03005321A
Other languages
English (en)
Other versions
JPH04237238A (ja
Inventor
隆博 室野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP03005321A priority Critical patent/JP3112958B2/ja
Publication of JPH04237238A publication Critical patent/JPH04237238A/ja
Application granted granted Critical
Publication of JP3112958B2 publication Critical patent/JP3112958B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、DMA機能を持つ通
信コントローラなど、受信データを格納するための受信
バッファを備えた装置に用いて好適な受信バッファ管理
方式に関する。
【0002】
【従来の技術】DMA機能を持つLANコントローラな
どの通信コントローラには、一般に、受信データ(受信
パケット)を格納するための空き受信バッファの列と、
この空き受信バッファ列を指定する空きバッファディス
クリプタとが設けられている。従来、この種の通信コン
トローラでは、データを受信すると、空きバッファディ
スクリプタの指定する空き受信バッファ列の先頭バッフ
ァに受信データを格納する動作が行われる。そして、こ
のデータが格納された受信バッファは空き受信バッファ
列から、受信済みバッファディスクリプタの示す(受信
済み受信バッファの列の)チェインの最後につなぎ直さ
れる。
【0003】さて、空き受信バッファのサイズは、受信
データ(受信パケット)を確実に格納できるように、受
信し得るデータの最大長に一致させるのが一般的であ
る。しかし、空き受信バッファのサイズを受信パケット
の最大長とするには、バッファ用のメモリ領域として大
きな領域が必要となる問題があった。しかも、通信手順
用の小さいパケットが授受されることが多い通常の状態
では、そのメモリ領域の大部分が使用されず、無駄にな
っていた。
【0004】そこで、メモリ領域の有効利用を図るため
に、小さいサイズの空き受信バッファを多数チェインし
ておき、必要なだけのバッファをチェインからはずして
使用する方式も考えられている。しかし、この方式で
は、複数の受信バッファに分散して格納された受信パケ
ットの中のあるフィールドのデータだけを取出そう(切
出そう)とする場合には、受信パケットの先頭データが
格納されている受信バッファ(受信済みバッファ)を検
出した後、そのバッファにつながっているバッファ列を
たどって、目的のフィールドデータが格納されているバ
ッファを検出しなけれはならず、必要なフィールドデー
タの切出しが高速に行えないという問題があった。
【0005】
【発明が解決しようとする課題】上記したように従来
は、受信バッファに格納された受信データから任意のフ
ィールドデータが簡単に切出せるようにするには、その
受信データを1つの受信バッファに全て格納できるよう
に、受信バッファのサイズを受信データの最大長にして
おく必要があった。しかし、このような従来のバッファ
管理方式では、通常は通信手順用の小さいパケットが授
受されることが多いため、受信バッファの大部分の領域
が使用されずに無駄になり、しかもバッファ用のメモリ
領域としても大領域が必要となる問題があった。
【0006】この発明は上記事情に鑑みてなされたもの
でその目的は、受信バッファ用のメモリ領域が無駄無く
効率的に利用でき、しかも受信バッファに格納された受
信データ中の所望のフィールドのデータが簡単に切出せ
る受信バッファ管理方式を提供することにある。
【0007】
【課題を解決するための手段】この発明は、一定サイズ
の空き受信バッファの列を複数サイズ分設けるととも
に、各空き受信バッファ列をそれぞれ指定する複数の空
きバッファディスクリプタと、データ受信時に、その受
信データのサイズをもとにデータ格納に最適な空き受信
バッファのサイズを上記複数サイズの中から選択するサ
イズ選択手段とを設け、このサイズ選択手段によって選
択されたサイズに対応する空きバッファディスクリプタ
の指定する空き受信バッファ列の先頭バッファに受信デ
ータを格納するようにしたことを特徴とするものであ
る。
【0008】
【作用】上記の構成において、受信データ(例えば受信
パケット)のバッファリングに際して、その受信データ
を無駄無く且つ確実に格納できる受信バッファのサイズ
が、その受信データのサイズをもとに、複数のバッファ
列のそれぞれのバッファのサイズの中から選択される。
ここでは、受信データサイズ以上のものの中で受信デー
タサイズに最も近いバッファサイズが、最適サイズとし
て選択される。最適サイズが選択されると、そのサイズ
に固有の空きバッファディスクリプタの指定する空き受
信バッファ列の先頭バッファに受信データが格納され
【0009】このように、受信データは、受信データサ
イズより大きく、且つ受信データサイズに最も近いバッ
ファサイズの空き受信バッファに選択的に格納される。
このため、受信データが格納されたバッファ内で使用さ
れていない無駄な領域は極めて少なく、しかも1バッフ
ァ内に確実に格納されるので、所望のフィールドのデー
タをバッファから切出すのも簡単に行える。
【0010】
【実施例】図1はこの発明を適用するDMA機能付き通
信コントローラの一実施例を示すバッファ部周辺のブロ
ック構成図である。
【0011】図1において、11-1〜11-3はサイズが
aの空き受信バッファ(以下、空きバッファと称す
る)、12-1〜12-4はサイズがb(ただしb<a)の
空きバッファ(空き受信バッファ)である。13-1は受
信パケットが格納されているサイズがbの受信バッファ
(以下、受信済みバッファと称する)である。バッファ
11-1〜11-3,12-1〜12-4,13-1は、RAM等
で構成されるバッファ部14に置かれている。
【0012】図1では、空きバッファ11-1〜11-3
は、空きバッファ11-1を先頭バッファとし、空きバッ
ファ11-3を最終バッファとするサイズa用の空きバッ
ファ列(空きバッファチェイン)を構成している。また
空きバッファ12-1〜12-4は、空きバッファ12-1を
先頭バッファとし、空きバッファ12-4を最終バッファ
とするサイズb用の空きバッファ列(空きバッファチェ
イン)を構成している。
【0013】各バッファ11-1〜11-3,12-1〜12
-4,13-1の先頭領域は、そのバッファサイズと、同バ
ッファに受信パケットが格納された場合のそのパケット
のサイズとを設定するためのヘッダ部Hとして用いられ
る。また、各バッファ11-1〜11-3,12-1〜12-
4,13-1の最終領域は、該当するバッファ列(空きバ
ッファ列、または受信済みバッファ列)における自バッ
ファの次のバッファを指定する次ポインタを設定するた
めの次ポインタ部NPとして用いられる。なお、上記の
サイズa,bは、ヘッダ部Hおよび次ポインタ部NPを
除くバッファ領域(実際に受信パケットが格納可能な領
域)のサイズを示す。
【0014】次ポインタ部NPには、その内容(次ポイ
ンタ)が無効であり、次のバッファが存在しないことを
示すためのエンドフラグEFが付加される。図1では、
空きバッファ11-3、12-4および受信済みバッファ1
3-1の各ヘッダ部HのエンドフラグEFがオンされてい
る。このフラグオンの状態を斜線で示す。
【0015】21はサイズa用の空きバッファ列を指定
するための空きバッファディスクリプタ、22はサイズ
b用の空きバッファ列を指定するための空きバッファデ
ィスクリプタである。23は受信済みバッファ列を指定
するための受信済みバッファディスクリプタである。各
ディスクリプタ21〜23には、対応するバッファ列
(ここでは、1つのバッファしか存在しない場合にも、
バッファ列と呼ぶ)の先頭バッファを指すポインタ(先
頭ポインタ)SPが設定される。この先頭ポインタSP
には、同ポインタSPが有効であること(即ち、バッフ
ァ列が存在すること)を示す有効フラグVが付加され
る。
【0016】次に、図1に示す状態で、パケットを受信
した場合の受信パケット格納処理について、図2のフロ
ーチャートを参照して説明する。まず通信コントローラ
は、回線からデータパケットを受信すると、その受信パ
ケットのサイズLと、空きバッファディスクリプタ2
1,22で指定される空きバッファ列を構成するバッフ
ァのサイズa,bとをもとに、このサイズa,b(用の
空きバッファ列)の中から受信パケットサイズLに最適
なものを選択する(ステップS1)。具体的には、サイ
ズa,bから受信パケットサイズL以上のバッファサイ
ズ(即ち、受信パケットが全て格納可能なバッファサイ
ズ)のものを選び、更にその中から、受信パケットサイ
ズLに最も近いものを最適サイズとして選択する。
【0017】したがって、受信パケットのサイズLが例
えばa≧L>bであるならば、通信コントローラはバッ
ファサイズaを選択する。次に通信コントローラは、選
択したバッファサイズaに固有の空きバッファディスク
リプタ21を参照し、サイズa用の空きバッファ列の先
頭の空きバッファ(図1では空きバッファ11-1)を指
定する先頭ポインタSPを得る(ステップS2)。これ
に対し、受信パケットのサイズLがb≧Lであるなら
ば、通信コントローラはバッファサイズbを選択して空
きバッファディスクリプタ22を参照し、サイズb用の
空きバッファ列の先頭の空きバッファ(図1では空きバ
ッファ12-1)を指定する先頭ポインタSPを得る。
【0018】通信コントローラは、空きバッファディス
クリプタ(21または22)から先頭ポインタSPを得
ると、そのポインタSPの指定する先頭空きバッファを
該当する空きバッファ列(空きバッファチェイン)から
はずし、空きバッファディスクリプタを更新する(ステ
ップS3)。具体的には、空きバッファディスクリプタ
21から先頭ポインタSPを得た(a≧L>bの)場合
であれば、同ポインタSPの内容を、同ポインタSPの
指定する先頭空きバッファ11-1(図1参照)の次ポイ
ンタ部NPの内容(図1の例では次の空きバッファ11
-2を指定する次ポインタ)に更新する。この結果、空き
バッファ11-1はサイズa用の空きバッファ列からはず
され、図3に示すように、次の空きバッファ11-2がこ
の空きバッファ列の先頭となる。同様に、空きバッファ
ディスクリプタ22からポインタSPを得た(b≧L
の)場合であれば、同ポインタSPの指定する先頭空き
バッファ12-1がサイズb用の空きバッファ列からはず
され、図4に示すように、次の空きバッファ12-2がこ
の空きバッファ列の先頭となる。
【0019】次に通信コントローラは、空きバッファ列
からはずしたバッファに受信パケットを格納する(ステ
ップS4)。これにより、受信パケットのサイズLがa
≧L>bの場合であれば、その受信パケットはサイズa
の空きバッファ11-1に格納され、b≧Lの場合であれ
ば、サイズbの空きバッファ12-1に格納される。
【0020】通信コントローラはステップS4を終了す
ると、受信パケットが格納されたバッファ(即ち、空き
バッファから受信済みバッファとなったバッファ)を受
信済みバッファディスクリプタ23の指定する受信済み
バッファ列(受信済みバッファチェイン)の最後につな
ぎ(ステップS5)、受信パケット格納処理を終了す
る。
【0021】これにより、サイズa用の空きバッファ列
から空きバッファ11-1をはずして同バッファ11-1に
受信パケットを格納した(a≧L>bの)場合であれ
ば、同バッファ11-1が図3に示すように受信済みバッ
ファ13-2となって、受信済みバッファ列の最後、即ち
受信済みバッファ13-1の後につながれる。同様に、サ
イズb用の空きバッファ列から空きバッファ12-1をは
ずして同バッファ12-1に受信パケットを格納した(b
≧Lの)場合であれば、同バッファ12-1が図4に示す
ように受信済みバッファ13-2となって、受信済みバッ
ファ13-1につながれる。
【0022】以上は、受信済みバッファ13-1の次ポイ
ンタ部NPに受信済みバッファ13-2(a≧L>bの場
合であれば図1に示すバッファ11-1であり、b≧Lの
場合であれば図1に示すバッファ12-1である)を指定
するポインタを設定すると共にこの次ポインタ部NPに
付されているエンドフラグEFをオフし、更に受信済み
バッファ13-2の次ポインタ部NPに付されているエン
ドフラグEFをオンすることにより実現される。
【0023】なお、前記実施例では、バッファサイズが
a,bの2種の場合、即ち空きバッファディスクリプタ
の数が2つの場合について説明したが、これに限るもの
ではない。例えば、3種以上のバッファサイズ、即ち3
つ以上の空きバッファディスクリプタを適用して、空き
バッファのサイズを更に細分化すれば、バッファのメモ
リ領域をより効率的に使用することが可能となる。
【0024】また、前記実施例では、通信コントローラ
における受信バッファ管理に実施した場合について説明
したが、本発明は可変長のデータを一時格納するための
受信バッファを持つ装置における受信バッファ管理全般
に適用可能である。
【0025】
【発明の効果】以上詳述したようにこの発明によれば、
一定サイズの空き受信バッファの列を複数サイズ分設
け、データ受信時には、その受信データを、受信データ
サイズより大きく、且つ受信データサイズに最も近いバ
ッファサイズの空き受信バッファに選択的に格納する構
成としたので、受信データが格納されたバッファ(受信
済みバッファ)内で使用されていない無駄な領域を極め
て少なくすることができるようになり、受信バッファ用
のメモリ領域を効率的に使用できる。
【0026】また、この発明によれば、受信バッファの
領域を効率的に利用しながら、受信データを1バッファ
内に確実に格納することができるため、バッファから所
望のフィールドのデータを切出すことが、複数のバッフ
ァに分割して格納する方式に比べて極めて簡単に行え
る。
【図面の簡単な説明】
【図1】この発明を適用するDMA機能付き通信コント
ローラの一実施例を示すバッファ部周辺のブロック構成
図。
【図2】上記通信コントローラにおける受信パケット格
納処理の手順を説明するためのフローチャート。
【図3】図1の状態でa≧L>bとなるサイズLのパケ
ットを受信した場合の、受信パケット格納後の状態を示
す図。
【図4】図1の状態でb≧LとなるサイズLのパケット
を受信した場合の、受信パケット格納後の状態を示す
図。
【符号の説明】
11-1〜11-3…(サイズaの)空きバッファ(空き受
信バッファ)、12-1〜12-4…(サイズbの)空きバ
ッファ(空き受信バッファ)、13-1,13-2…受信済
みバッファ、14…バッファ部、21,22…空きバッ
ファディスクリプタ、23…受信済みバッファディスク
リプタ。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平4−192745(JP,A) 特開 平2−73745(JP,A) 特開 平1−146445(JP,A) 特開 平2−310649(JP,A) 特開 平2−190062(JP,A) 特開 昭64−23653(JP,A)

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 一定サイズの複数の受信バッファを複数
    サイズ分設けるとともに、上記受信バッファのうちの空
    きの受信バッファが同一サイズ毎にリンクされた各空き
    受信バッファの列をそれぞれ指定する複数の空きバッフ
    ァディスクリプタと、上記受信バッファのうち受信デー
    タが格納された受信バッファがリンクされた受信済みバ
    ッファ列を指定する受信済みバッファディスクリプタ
    と、データ受信時に、その受信データのサイズ以上で且
    つ当該サイズに最も近い空き受信バッファのサイズを上
    記複数サイズの中から選択するサイズ選択手段と、この
    サイズ選択手段によって選択されたサイズに対応する上
    記空きバッファディスクリプタの指定する空き受信バッ
    ファ列の先頭バッファに上記受信データを全て格納し、
    且つ当該バッファを上記空き受信バッファ列から上記受
    信済みバッファディスクリプタの指定する受信済みバッ
    ファ列の最後につなぎ換える手段とを設けたことを特徴
    とする受信バッファ管理方式。
JP03005321A 1991-01-21 1991-01-21 受信バッファ管理方式 Expired - Fee Related JP3112958B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP03005321A JP3112958B2 (ja) 1991-01-21 1991-01-21 受信バッファ管理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP03005321A JP3112958B2 (ja) 1991-01-21 1991-01-21 受信バッファ管理方式

Publications (2)

Publication Number Publication Date
JPH04237238A JPH04237238A (ja) 1992-08-25
JP3112958B2 true JP3112958B2 (ja) 2000-11-27

Family

ID=11607992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03005321A Expired - Fee Related JP3112958B2 (ja) 1991-01-21 1991-01-21 受信バッファ管理方式

Country Status (1)

Country Link
JP (1) JP3112958B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2596718B2 (ja) * 1993-12-21 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション ネットワーク通信バッファを管理する方法
CN102347901A (zh) 2006-03-31 2012-02-08 高通股份有限公司 用于高速媒体接入控制的存储器管理
JP5278157B2 (ja) * 2009-05-15 2013-09-04 富士通株式会社 伝送装置および伝送方法
JP6354507B2 (ja) * 2014-10-01 2018-07-11 富士通株式会社 ストレージ制御装置およびストレージシステム

Also Published As

Publication number Publication date
JPH04237238A (ja) 1992-08-25

Similar Documents

Publication Publication Date Title
JP2571336B2 (ja) データ処理装置
KR960006503B1 (ko) 다중-채널 직접메모리 억세스(dma)동작을 인터리브하기 위한 장치 및 그 방법
US4943936A (en) Print control apparatus controlling utilization state of plural format blocks
US6038607A (en) Method and apparatus in a computer system having plural computers which cause the initiation of functions in each other using information contained in packets transferred between the computers
US7096277B2 (en) Distributed lookup based on packet contents
JPS62297952A (ja) 可変長デ−タの記憶方式
JP3112958B2 (ja) 受信バッファ管理方式
EP0844566B1 (en) Interface apparatus for adapting data width to system bus width
US6101546A (en) Method and system for providing data files that are partitioned by delivery time and data type
CA2330014A1 (en) Method of mapping fibre channel frames based on control and type header fields
US7216185B2 (en) Buffering apparatus and buffering method
JPH0824315B2 (ja) データ転送方式
JPH06301644A (ja) データ転送方法
US8170024B2 (en) Implementing pointer and stake model for frame alteration code in a network processor
JP3230339B2 (ja) 通信制御装置
JP3674720B2 (ja) 並列計算機におけるデータ転送方法
JP3639317B2 (ja) データ転送制御装置
JPS5955528A (ja) デ−タ転送方式
JPH02310649A (ja) 受信フレーム転送方式および通信制御装置
JP3268644B2 (ja) Dma制御装置
JPS6128154B2 (ja)
JP3752809B2 (ja) デジタルテレビ受信方法およびデジタルテレビ受信端末装置
JPH05204829A (ja) データ転送装置
JP2773198B2 (ja) データ転送装置
JPH0561617A (ja) 印字制御方式

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070922

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080922

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080922

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090922

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090922

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100922

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees