JPH0744564B2 - 通信制御装置 - Google Patents
通信制御装置Info
- Publication number
- JPH0744564B2 JPH0744564B2 JP4336378A JP33637892A JPH0744564B2 JP H0744564 B2 JPH0744564 B2 JP H0744564B2 JP 4336378 A JP4336378 A JP 4336378A JP 33637892 A JP33637892 A JP 33637892A JP H0744564 B2 JPH0744564 B2 JP H0744564B2
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- class
- transmission
- area
- length
- 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 - Lifetime
Links
- 238000004891 communication Methods 0.000 title claims description 65
- 239000000872 buffer Substances 0.000 claims description 409
- 230000005540 biological transmission Effects 0.000 claims description 58
- 238000000034 method Methods 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 11
- 238000007726 management method Methods 0.000 description 57
- 238000010586 diagram Methods 0.000 description 18
- 238000013500 data storage Methods 0.000 description 6
- 238000007796 conventional method Methods 0.000 description 2
- 239000007853 buffer solution Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
- Memory System (AREA)
- Communication Control (AREA)
Description
【0001】
【産業上の利用分野】本発明は、複数の通信回線を接続
する通信制御装置のデータバッファの管理に利用する。
本発明は、バッファがビジー状態になることを少なくし
通信回線の使用効率を高めることができる通信制御装置
に関する。
する通信制御装置のデータバッファの管理に利用する。
本発明は、バッファがビジー状態になることを少なくし
通信回線の使用効率を高めることができる通信制御装置
に関する。
【0002】
【従来の技術】従来、この種の通信制御装置では送受信
データを保持する記憶域をバッファとして管理してい
る。しかし収容する複数の通信回線において、各通信回
線ごとに単位時間当たりの送受信データ量、必要となる
バッファ個数、送受信データの長さは異なる。したがっ
て一般的なバッファの有効利用の方法として、回線間で
バッファを共有し必要に応じてバッファを獲得し、また
は解放する方式が採られている。これを実現する従来の
技術は次の3種類に分類できる。 送受信データ長にかかわらず、バッファを一定の長さ
に決定しバッファの数量のみを管理する方法(固定長バ
ッファ方式) 各通信回線ごとに取り扱う最長の送受信データ長に着
目し、この送受信データにより通信回線をいくつかのグ
ループに分類し、グループごとにバッファ長を決定して
グループごとにバッファの数量を管理する方法(バッフ
ァプール方式) バッファ長を固定せずに記憶領域を小さな記憶単位に
分割し、記憶単位の組み合わせにより任意の長さのバッ
ファを生成する方法(記憶単位連結方式) これらの従来技術を図1を参照して説明する。図1にお
いて51は通信を依頼するコンピュータなどの上位装
置、2はこの上位装置51とのデータの送受信を行う上
位装置インタフェース部、3はデータ通信手順を実行す
る送受信制御部、7は相手局と通信を行う通信回線、4
は通信回線7ごとに回線の制御情報を格納する回線制御
テーブル、1は送受信データを一時的に保持する記憶領
域、5は送受信制御部3の要求によりバッファの獲得ま
たは解放、および記憶領域1の未使用領域の管理を行う
バッファ管理部、6は通信回線7と電気的に接続する回
線接続部である。
データを保持する記憶域をバッファとして管理してい
る。しかし収容する複数の通信回線において、各通信回
線ごとに単位時間当たりの送受信データ量、必要となる
バッファ個数、送受信データの長さは異なる。したがっ
て一般的なバッファの有効利用の方法として、回線間で
バッファを共有し必要に応じてバッファを獲得し、また
は解放する方式が採られている。これを実現する従来の
技術は次の3種類に分類できる。 送受信データ長にかかわらず、バッファを一定の長さ
に決定しバッファの数量のみを管理する方法(固定長バ
ッファ方式) 各通信回線ごとに取り扱う最長の送受信データ長に着
目し、この送受信データにより通信回線をいくつかのグ
ループに分類し、グループごとにバッファ長を決定して
グループごとにバッファの数量を管理する方法(バッフ
ァプール方式) バッファ長を固定せずに記憶領域を小さな記憶単位に
分割し、記憶単位の組み合わせにより任意の長さのバッ
ファを生成する方法(記憶単位連結方式) これらの従来技術を図1を参照して説明する。図1にお
いて51は通信を依頼するコンピュータなどの上位装
置、2はこの上位装置51とのデータの送受信を行う上
位装置インタフェース部、3はデータ通信手順を実行す
る送受信制御部、7は相手局と通信を行う通信回線、4
は通信回線7ごとに回線の制御情報を格納する回線制御
テーブル、1は送受信データを一時的に保持する記憶領
域、5は送受信制御部3の要求によりバッファの獲得ま
たは解放、および記憶領域1の未使用領域の管理を行う
バッファ管理部、6は通信回線7と電気的に接続する回
線接続部である。
【0003】図6は固定長バッファ方式によりバッファ
管理を行う記憶領域1の構成を示す図である。61は記
憶領域1を一定の長さに分割したバッファである。同図
中バッファ61の網掛け部分は使用中の領域を示す。
管理を行う記憶領域1の構成を示す図である。61は記
憶領域1を一定の長さに分割したバッファである。同図
中バッファ61の網掛け部分は使用中の領域を示す。
【0004】図7はバッファプール方式によりバッファ
管理を行う記憶領域1の構成を示す図である。71は記
憶領域1をバッファプール1の長さに分割したバッフ
ァ、72は記憶領域1をバッファプール2の長さに分割
したバッファである。バッファプールは複数の通信回線
7を送受信データの長さによって分類したグループであ
り、バッファプールの長さはこのバッファプールに属す
る通信回線7の送受信データの最大長である。また、バ
ッファプールは任意の数だけ設定可能である。同図中バ
ッファ71、72の網掛け部分は使用中の領域を示す。
管理を行う記憶領域1の構成を示す図である。71は記
憶領域1をバッファプール1の長さに分割したバッフ
ァ、72は記憶領域1をバッファプール2の長さに分割
したバッファである。バッファプールは複数の通信回線
7を送受信データの長さによって分類したグループであ
り、バッファプールの長さはこのバッファプールに属す
る通信回線7の送受信データの最大長である。また、バ
ッファプールは任意の数だけ設定可能である。同図中バ
ッファ71、72の網掛け部分は使用中の領域を示す。
【0005】図8は記憶単位連結方式によりバッファ管
理を行う記憶領域1の構成を示す図である。81は記憶
領域1を通信制御装置全体で必要となるバッファ長より
小さな長さに分割した記憶単位、82は記憶単位81の
中で送受信データを格納するデータ格納域、83は記憶
単位81の中で記憶単位を連結するための連結ポインタ
である。同図中記憶単位の網掛け部分は使用中の記憶単
位を示す。
理を行う記憶領域1の構成を示す図である。81は記憶
領域1を通信制御装置全体で必要となるバッファ長より
小さな長さに分割した記憶単位、82は記憶単位81の
中で送受信データを格納するデータ格納域、83は記憶
単位81の中で記憶単位を連結するための連結ポインタ
である。同図中記憶単位の網掛け部分は使用中の記憶単
位を示す。
【0006】図9は記憶単位連結方式によりバッファ管
理を行うバッファの構成を示す図である。81は記憶領
域1を通信制御装置全体で必要となるバッファ長より小
さな長さに分割した記憶単位、82は記憶単位81の中
で送受信データを格納するデータ格納域、83は記憶単
位81の中で記憶単位を連結するための連結ポインタで
ある。なお、バッファを構成する最後の記憶単位81の
連結ポインタ83には自記憶単位を示す値が格納され
る。同図中〔 〕内は記憶単位の先頭アドレスを示す。
理を行うバッファの構成を示す図である。81は記憶領
域1を通信制御装置全体で必要となるバッファ長より小
さな長さに分割した記憶単位、82は記憶単位81の中
で送受信データを格納するデータ格納域、83は記憶単
位81の中で記憶単位を連結するための連結ポインタで
ある。なお、バッファを構成する最後の記憶単位81の
連結ポインタ83には自記憶単位を示す値が格納され
る。同図中〔 〕内は記憶単位の先頭アドレスを示す。
【0007】次に、前述した各方式について詳しく説明
する。 固定長バッファ方式 送受信データ長にかかわらず、バッファを一定の長さに
決定しバッファの数量のみを管理する方法を図6に基づ
いて説明する。
する。 固定長バッファ方式 送受信データ長にかかわらず、バッファを一定の長さに
決定しバッファの数量のみを管理する方法を図6に基づ
いて説明する。
【0008】バッファ管理部5は、通信を開始する前に
全ての通信回線7で取り扱う送受信データのうち最長の
データ長により記憶領域1を分割する。分割された個々
の記憶域がバッファ61となる。
全ての通信回線7で取り扱う送受信データのうち最長の
データ長により記憶領域1を分割する。分割された個々
の記憶域がバッファ61となる。
【0009】データの送受信によりバッファが必要にな
った送受信制御部3は、バッファの要求をバッファ管理
部5に対して行う。バッファ管理部5は記憶領域1から
未使用バッファを探し、そのバッファを使用中とするこ
とによりバッファの獲得を行う。次にバッファ管理部5
は、そのバッファアドレスを送受信制御部3に通知す
る。送受信制御部3は通知されたアドレスからあらかじ
め決められたバッファ長の記憶域を使用許可されたバッ
ファとして認識する。送受信制御部3はバッファが不要
になったとき、バッファ管理部5にバッファの解放を要
求する。バッファの解放を要求されたバッファ管理部5
は、解放バッファアドレスからあらかじめ決められたバ
ッファ長の記憶域を使用中から未使用に変更する。
った送受信制御部3は、バッファの要求をバッファ管理
部5に対して行う。バッファ管理部5は記憶領域1から
未使用バッファを探し、そのバッファを使用中とするこ
とによりバッファの獲得を行う。次にバッファ管理部5
は、そのバッファアドレスを送受信制御部3に通知す
る。送受信制御部3は通知されたアドレスからあらかじ
め決められたバッファ長の記憶域を使用許可されたバッ
ファとして認識する。送受信制御部3はバッファが不要
になったとき、バッファ管理部5にバッファの解放を要
求する。バッファの解放を要求されたバッファ管理部5
は、解放バッファアドレスからあらかじめ決められたバ
ッファ長の記憶域を使用中から未使用に変更する。
【0010】この方法ではバッファ長が一定であるため
バッファ管理部5の処理は簡単であるが、実際の送受信
データ長がバッファ長より短いときその差分は利用不可
能な領域となる。しかしバッファ長はいかなる場合でも
送受信データ長以上でなければならないため、利用不可
能な領域の発生は避けられない。また短いデータの送受
信が頻発すると記憶領域1の使用効率が低いのにバッフ
ァが獲得できない場合が発生する。この状態は、送受信
データの長さが異なる複数回線において顕著である。 バッファプール方式 各通信回線7ごとに取り扱う最長の送受信データ長に着
目し、その送受信データにより通信回線7をいくつかの
グループに分類し、グループごとにバッファ長を決定し
グループごとにバッファの数量を管理する方法を図7に
基づいて説明する。
バッファ管理部5の処理は簡単であるが、実際の送受信
データ長がバッファ長より短いときその差分は利用不可
能な領域となる。しかしバッファ長はいかなる場合でも
送受信データ長以上でなければならないため、利用不可
能な領域の発生は避けられない。また短いデータの送受
信が頻発すると記憶領域1の使用効率が低いのにバッフ
ァが獲得できない場合が発生する。この状態は、送受信
データの長さが異なる複数回線において顕著である。 バッファプール方式 各通信回線7ごとに取り扱う最長の送受信データ長に着
目し、その送受信データにより通信回線7をいくつかの
グループに分類し、グループごとにバッファ長を決定し
グループごとにバッファの数量を管理する方法を図7に
基づいて説明する。
【0011】バッファ管理部5は、通信を開始する前に
各通信回線7ごとに最長送受信データから必要となるバ
ッファ長を求め、このバッファ長により通信回線7をい
くつかのグループに分類する。次にバッファ管理部5は
前記グループごとに記憶領域1を分割する。分割された
領域をバッファプールと呼び、さらにバッファ管理部5
は個々のバッファプールをバッファに分割する。図7に
この状態を示す。またバッファ管理部5は、個々の通信
回線7が使用するバッファプールの識別情報を回線制御
テーブル4に記録する。
各通信回線7ごとに最長送受信データから必要となるバ
ッファ長を求め、このバッファ長により通信回線7をい
くつかのグループに分類する。次にバッファ管理部5は
前記グループごとに記憶領域1を分割する。分割された
領域をバッファプールと呼び、さらにバッファ管理部5
は個々のバッファプールをバッファに分割する。図7に
この状態を示す。またバッファ管理部5は、個々の通信
回線7が使用するバッファプールの識別情報を回線制御
テーブル4に記録する。
【0012】データの送受信によりバッファが必要にな
った送受信制御部3は、バッファの要求をバッファ管理
部5に対して行う。バッファ管理部5は要求されたバッ
ファがどの通信回線7に使用されるものかを調べ、その
通信回線7の回線制御テーブル4を検索し、どのバッフ
ァプールからバッファを獲得するかを決定する。バッフ
ァプールが決定した後は、前記の方法と同様にバッフ
ァの獲得または解放を行う。
った送受信制御部3は、バッファの要求をバッファ管理
部5に対して行う。バッファ管理部5は要求されたバッ
ファがどの通信回線7に使用されるものかを調べ、その
通信回線7の回線制御テーブル4を検索し、どのバッフ
ァプールからバッファを獲得するかを決定する。バッフ
ァプールが決定した後は、前記の方法と同様にバッフ
ァの獲得または解放を行う。
【0013】この方法ではバッファプールを用いること
により、前記の方法で発生した実際の送受信データ長
とバッファ長との差分を減少させ記憶領域1の使用効率
を高めることが可能となる。しかしバッファプールと、
このバッファプールに含まれるバッファの数量とは通信
を開始する以前に決定されるため、一方のバッファプー
ルの全バッファを使用している状態においてバッファビ
ジーを避けるため、他のバッファプールのバッファを補
充するような動的な対処はできない。したがってあるバ
ッファプールに属するバッファ内の使用効率を高めるこ
とは可能であるが、複数の通信回線7を考慮するとバッ
ファの獲得失敗の確率が高まるおそれがある。 記憶単位連結装置 バッファ長を固定せずに記憶領域を小さな記憶単位に分
割し、その記憶単位の組み合わせにより任意の長さのバ
ッファを生成する方法を図8および図9に基づいて以下
に説明する。
により、前記の方法で発生した実際の送受信データ長
とバッファ長との差分を減少させ記憶領域1の使用効率
を高めることが可能となる。しかしバッファプールと、
このバッファプールに含まれるバッファの数量とは通信
を開始する以前に決定されるため、一方のバッファプー
ルの全バッファを使用している状態においてバッファビ
ジーを避けるため、他のバッファプールのバッファを補
充するような動的な対処はできない。したがってあるバ
ッファプールに属するバッファ内の使用効率を高めるこ
とは可能であるが、複数の通信回線7を考慮するとバッ
ファの獲得失敗の確率が高まるおそれがある。 記憶単位連結装置 バッファ長を固定せずに記憶領域を小さな記憶単位に分
割し、その記憶単位の組み合わせにより任意の長さのバ
ッファを生成する方法を図8および図9に基づいて以下
に説明する。
【0014】バッファ管理部5は、通信を開始する以前
に記憶領域1を通信制御装置全体で必要となる最小のバ
ッファ以下の長さで分割する。分割された領域を記憶単
位81と呼び、この記憶単位81は送受信データの格納
を行うデータ格納域82と記憶単位81相互を連結する
連結ポインタ83から構成される。
に記憶領域1を通信制御装置全体で必要となる最小のバ
ッファ以下の長さで分割する。分割された領域を記憶単
位81と呼び、この記憶単位81は送受信データの格納
を行うデータ格納域82と記憶単位81相互を連結する
連結ポインタ83から構成される。
【0015】データの送受信によりバッファが必要にな
った送受信制御部3は、バッファの要求をバッファ管理
部5に対して行う。バッファ管理部5は記憶領域1から
未使用の記憶単位81を複数個探し出し、その記憶単位
81を連結ポインタ83を使用して連結する。このとき
探し出された未使用の記憶単位81は使用中となる。連
結された記憶単位81のデータ格納域82の長さの合計
が要求バッファ長以上になるまで未使用の記憶単位81
の連結を続ける。要求バッファ長以上の記憶単位81の
連結が完了したときに、バッファ管理部5は連結の先頭
の記憶単位81のアドレスを送受信制御部3に通知す
る。送受信制御部3が認識するバッファは、図9に示す
ような形式である。送受信制御部3が通知されたバッフ
ァを使用する際は、データ格納域82の長さごとに送受
信データを区切り各記憶単位81に格納する。送受信制
御部3はバッファが不要になったとき、バッファ管理部
5にバッファの解放を要求する。バッファの解放を要求
されたバッファ管理部5は、解放バッファアドレスから
順に記憶単位81の連結ポインタ83をたどり、最後の
記憶単位81まで全てを使用中から未使用に変更する。
った送受信制御部3は、バッファの要求をバッファ管理
部5に対して行う。バッファ管理部5は記憶領域1から
未使用の記憶単位81を複数個探し出し、その記憶単位
81を連結ポインタ83を使用して連結する。このとき
探し出された未使用の記憶単位81は使用中となる。連
結された記憶単位81のデータ格納域82の長さの合計
が要求バッファ長以上になるまで未使用の記憶単位81
の連結を続ける。要求バッファ長以上の記憶単位81の
連結が完了したときに、バッファ管理部5は連結の先頭
の記憶単位81のアドレスを送受信制御部3に通知す
る。送受信制御部3が認識するバッファは、図9に示す
ような形式である。送受信制御部3が通知されたバッフ
ァを使用する際は、データ格納域82の長さごとに送受
信データを区切り各記憶単位81に格納する。送受信制
御部3はバッファが不要になったとき、バッファ管理部
5にバッファの解放を要求する。バッファの解放を要求
されたバッファ管理部5は、解放バッファアドレスから
順に記憶単位81の連結ポインタ83をたどり、最後の
記憶単位81まで全てを使用中から未使用に変更する。
【0016】この方法では記憶領域1内における利用不
可能領域が連結ポインタ83の個数分の領域および1バ
ッファあたり1記憶単位81未満となるので、前記、
の方法と比較して記憶領域1の使用効率を高めること
が可能となる。しかし1バッファを形成する記憶単位8
1が不連続のため、バッファを使用する段階において処
理が複雑になり、かつ処理時間も増大する。(特開昭6
2−177647号公報、特開平3−32254号公
報)
可能領域が連結ポインタ83の個数分の領域および1バ
ッファあたり1記憶単位81未満となるので、前記、
の方法と比較して記憶領域1の使用効率を高めること
が可能となる。しかし1バッファを形成する記憶単位8
1が不連続のため、バッファを使用する段階において処
理が複雑になり、かつ処理時間も増大する。(特開昭6
2−177647号公報、特開平3−32254号公
報)
【0017】
【発明が解決しようとする課題】一般に通信制御装置内
の記憶領域の使用効率を高め、データの連続送受信を行
うことで通信回線のスループットの向上をはかることが
できるが、上述した従来の通信制御装置では記憶領域の
使用効率向上をはかるためのバッファ管理が複雑とな
り、バッファを使用する際の処理時間を増大させてしま
う欠点がある。
の記憶領域の使用効率を高め、データの連続送受信を行
うことで通信回線のスループットの向上をはかることが
できるが、上述した従来の通信制御装置では記憶領域の
使用効率向上をはかるためのバッファ管理が複雑とな
り、バッファを使用する際の処理時間を増大させてしま
う欠点がある。
【0018】本発明はこのような問題を解決するもの
で、バッファ管理を簡単にできるようにし、バッファ使
用のための処理時間を短縮して使用効率を向上させるこ
とができる装置を提供することを目的とする。
で、バッファ管理を簡単にできるようにし、バッファ使
用のための処理時間を短縮して使用効率を向上させるこ
とができる装置を提供することを目的とする。
【0019】
【課題を解決するための手段】本発明は、上位装置およ
び複数の通信回線に接続され、前記上位装置とデータの
送受信を行う上位装置インタフェースと、前記通信回線
とのデータの送受信を行う回線接続部と、データ通信手
順にしたがって前記回線接続部のデータ送受信制御を行
う送受信制御部と、前記通信回線を制御する制御情報を
格納する回線制御テーブルと、前記通信回線あるいは前
記上位装置へのデータを一時保持する記憶領域と、この
記憶領域の未使用領域を管理するバッファ管理部とを備
えた通信制御装置において、前記記憶領域に、内部が複
数のバッファセルに分割された等長のバッファを複数配
列したバッファ領域と、このバッファ領域を前記バッフ
ァセルの空き領域の大きさによって分類しバッファクラ
スを定義するバッファクラス定義部とを設け、前記バッ
ファ管理部に、前記送受信制御部のバッファ要求に応じ
て最適バッファクラスを選択し、その空き領域の一部ま
たは全部を前記送受信制御部に論理バッファとして渡す
手段と、前記送受信制御部の論理バッファ解放要求に応
じて解放処理を行い、その論理バッファが属するバッフ
ァ中の空き領域の大きさに応じて最適バッファクラスに
所属させる手段とを含むことを特徴とする。
び複数の通信回線に接続され、前記上位装置とデータの
送受信を行う上位装置インタフェースと、前記通信回線
とのデータの送受信を行う回線接続部と、データ通信手
順にしたがって前記回線接続部のデータ送受信制御を行
う送受信制御部と、前記通信回線を制御する制御情報を
格納する回線制御テーブルと、前記通信回線あるいは前
記上位装置へのデータを一時保持する記憶領域と、この
記憶領域の未使用領域を管理するバッファ管理部とを備
えた通信制御装置において、前記記憶領域に、内部が複
数のバッファセルに分割された等長のバッファを複数配
列したバッファ領域と、このバッファ領域を前記バッフ
ァセルの空き領域の大きさによって分類しバッファクラ
スを定義するバッファクラス定義部とを設け、前記バッ
ファ管理部に、前記送受信制御部のバッファ要求に応じ
て最適バッファクラスを選択し、その空き領域の一部ま
たは全部を前記送受信制御部に論理バッファとして渡す
手段と、前記送受信制御部の論理バッファ解放要求に応
じて解放処理を行い、その論理バッファが属するバッフ
ァ中の空き領域の大きさに応じて最適バッファクラスに
所属させる手段とを含むことを特徴とする。
【0020】
【作用】記憶領域に、内部が複数のバッファセルに分割
された等長のバッファを複数配列したバッファ領域と、
このバッファ領域をバッファセルの空き領域によって分
類しバッファクラスを定義するバッファクラス定義部と
を設けておき、バッファ管理部がすべてのバッファを連
続した未使用バッファセルの長さによってバッファクラ
ス定義部内の各バッファクラスに所属させ、データの送
受信動作にともないバッファが必要になったときに、バ
ッファ内にある連続した未使用バッファセルをバッファ
とみなして使用する。
された等長のバッファを複数配列したバッファ領域と、
このバッファ領域をバッファセルの空き領域によって分
類しバッファクラスを定義するバッファクラス定義部と
を設けておき、バッファ管理部がすべてのバッファを連
続した未使用バッファセルの長さによってバッファクラ
ス定義部内の各バッファクラスに所属させ、データの送
受信動作にともないバッファが必要になったときに、バ
ッファ内にある連続した未使用バッファセルをバッファ
とみなして使用する。
【0021】これにより、処理量を極端に増加させるこ
となく、バッファ内の空き領域によりバッファの管理を
行うことができ、記憶領域の有効利用をはかることがで
きる。
となく、バッファ内の空き領域によりバッファの管理を
行うことができ、記憶領域の有効利用をはかることがで
きる。
【0022】
【実施例】次に、本発明実施例を図面に基づいて説明す
る。図1は本発明実施例の構成を示すブロック図、図2
は本発明実施例における記憶領域の構成を示す図。
る。図1は本発明実施例の構成を示すブロック図、図2
は本発明実施例における記憶領域の構成を示す図。
【0023】本発明実施例は、上位装置51および複数
の通信回線7に接続され、上位装置51とデータの送受
信を行う上位装置インタフェース2と、通信回線7との
データの送受信を行う回線接続部6と、データ通信手順
にしたがって回線接続部6のデータ送受信制御を行う送
受信制御部3と、通信回線7を制御する制御情報を格納
する回線制御テーブル4と、通信回線7あるいは上位装
置51へのデータを一時保持する記憶領域1と、この記
憶領域1の未使用領域を管理するバッファ管理部5とを
備え、さらに、本発明の特徴として、記憶領域1に、内
部が複数のバッファセルに分割された等長のバッファ1
4を複数配列したバッファ領域13と、このバッファ領
域13を前記バッファセルの空き領域の大きさによって
分類しバッファクラスを定義するバッファクラス定義部
12とを設け、バッファ管理部5に、送受信制御部3の
バッファ要求に応じて最適バッファクラスを選択し、そ
の空き領域の一部または全部を送受信制御部3に論理バ
ッファとして渡す手段と、送受信制御部3の論理バッフ
ァ解放要求に応じて解放処理を行い、その論理バッファ
が属するバッファ中の空き領域の大きさに応じて最適バ
ッファクラスに所属させる手段とを含む。
の通信回線7に接続され、上位装置51とデータの送受
信を行う上位装置インタフェース2と、通信回線7との
データの送受信を行う回線接続部6と、データ通信手順
にしたがって回線接続部6のデータ送受信制御を行う送
受信制御部3と、通信回線7を制御する制御情報を格納
する回線制御テーブル4と、通信回線7あるいは上位装
置51へのデータを一時保持する記憶領域1と、この記
憶領域1の未使用領域を管理するバッファ管理部5とを
備え、さらに、本発明の特徴として、記憶領域1に、内
部が複数のバッファセルに分割された等長のバッファ1
4を複数配列したバッファ領域13と、このバッファ領
域13を前記バッファセルの空き領域の大きさによって
分類しバッファクラスを定義するバッファクラス定義部
12とを設け、バッファ管理部5に、送受信制御部3の
バッファ要求に応じて最適バッファクラスを選択し、そ
の空き領域の一部または全部を送受信制御部3に論理バ
ッファとして渡す手段と、送受信制御部3の論理バッフ
ァ解放要求に応じて解放処理を行い、その論理バッファ
が属するバッファ中の空き領域の大きさに応じて最適バ
ッファクラスに所属させる手段とを含む。
【0024】図3は、本発明実施例における記憶領域に
存在するバッファの形式を示す図である。21は同一バ
ッファクラスに所属する次バッファアドレス、22は同
一バッファクラスに所属する前バッファアドレス、23
はバッファセルの使用状況を示すフラグの集合体である
バッファセル使用状態管理部、24はバッファセルの集
合体のバッファデータ部、25はバッファ要求元に渡さ
れる論理バッファを構成する記憶単位であるバッファセ
ルである。論理バッファとは送受信データを格納する単
位であり、その長さは各通信回線7における最大送受信
データ長で決定される。送受信制御部3がデータの送受
信を行う際にバッファ管理部5に要求するのはバッファ
ではなく論理バッファである。論理バッファは、連続し
たバッファセルで構成される。
存在するバッファの形式を示す図である。21は同一バ
ッファクラスに所属する次バッファアドレス、22は同
一バッファクラスに所属する前バッファアドレス、23
はバッファセルの使用状況を示すフラグの集合体である
バッファセル使用状態管理部、24はバッファセルの集
合体のバッファデータ部、25はバッファ要求元に渡さ
れる論理バッファを構成する記憶単位であるバッファセ
ルである。論理バッファとは送受信データを格納する単
位であり、その長さは各通信回線7における最大送受信
データ長で決定される。送受信制御部3がデータの送受
信を行う際にバッファ管理部5に要求するのはバッファ
ではなく論理バッファである。論理バッファは、連続し
たバッファセルで構成される。
【0025】図4は本発明実施例におけるバッファ管理
部がバッファを分類管理するためバッファクラスの例を
示す図である。31はバッファクラス(バッファクラス
識別番号)、32は当該バッファクラスに所属可能なバ
ッファの最大空き領域長、33はバッファクラス1の最
大空き領域長を1としたときの最大空き領域長の比であ
る空き領域係数、34は当該バッファクラスに所属する
バッファを連結するために先頭バッファのアドレスを格
納するバッファクラスヘッダポインタ、35は当該バッ
ファクラスに所属するバッファを連結するために最後尾
のバッファのアドレスを格納するバッファクラステール
ポインタである。バッファクラスヘッダポインタ34、
バッファクラステールポインタ35、バッファ14内の
次バッファアドレス21、前バッファアドレス22によ
って構成されるバッファ14の集まりをバッファクラス
ループと呼ぶ。
部がバッファを分類管理するためバッファクラスの例を
示す図である。31はバッファクラス(バッファクラス
識別番号)、32は当該バッファクラスに所属可能なバ
ッファの最大空き領域長、33はバッファクラス1の最
大空き領域長を1としたときの最大空き領域長の比であ
る空き領域係数、34は当該バッファクラスに所属する
バッファを連結するために先頭バッファのアドレスを格
納するバッファクラスヘッダポインタ、35は当該バッ
ファクラスに所属するバッファを連結するために最後尾
のバッファのアドレスを格納するバッファクラステール
ポインタである。バッファクラスヘッダポインタ34、
バッファクラステールポインタ35、バッファ14内の
次バッファアドレス21、前バッファアドレス22によ
って構成されるバッファ14の集まりをバッファクラス
ループと呼ぶ。
【0026】図5は本発明実施例におけるバッファ管理
部がバッファをバッファクラスごとに管理するバッファ
クラスループの概念を示す図である(バッファクラス2
の例)。34はバッファクラスヘッダポインタ、21は
同一バッファクラスループにおける次バッファアドレ
ス、23はバッファセルの使用状況を示すフラグの集合
体であるバッファセル使用状態管理部、24はバッファ
セルの集合体のバッファデータ部である。同図中バッフ
ァチェーンを示す矢印は順方向を示し、バッファセル使
用状態のフラグ=1のバッファセルは使用中を示し、網
掛けのバッファセルは未使用バッファセルを示す。
部がバッファをバッファクラスごとに管理するバッファ
クラスループの概念を示す図である(バッファクラス2
の例)。34はバッファクラスヘッダポインタ、21は
同一バッファクラスループにおける次バッファアドレ
ス、23はバッファセルの使用状況を示すフラグの集合
体であるバッファセル使用状態管理部、24はバッファ
セルの集合体のバッファデータ部である。同図中バッフ
ァチェーンを示す矢印は順方向を示し、バッファセル使
用状態のフラグ=1のバッファセルは使用中を示し、網
掛けのバッファセルは未使用バッファセルを示す。
【0027】バッファ管理部5は通信を開始する前に、
記憶領域1を図2に示すようにバッファ14に分割す
る。図3に示すバッファ14のバッファデータ部24の
大きさは、通信制御装置に接続される全ての通信回線7
において最長の送受信データを格納するのに必要な長さ
である。また、図3に示すバッファ14のバッファセル
25の大きさは、通信制御装置に接続される全ての通信
回線7において最短の送受信データを格納するのに必要
な長さである。このとき、バッファデータ部24の長さ
は、バッファセル25の長さの整数倍になっていると記
憶領域1の使用効率が高くなる。バッファセル使用状態
管理部23は個々のバッファセル25の使用、未使用を
表すもので、その大きさはバッファデータ部24に含ま
れるバッファセル25の数によって決定される。
記憶領域1を図2に示すようにバッファ14に分割す
る。図3に示すバッファ14のバッファデータ部24の
大きさは、通信制御装置に接続される全ての通信回線7
において最長の送受信データを格納するのに必要な長さ
である。また、図3に示すバッファ14のバッファセル
25の大きさは、通信制御装置に接続される全ての通信
回線7において最短の送受信データを格納するのに必要
な長さである。このとき、バッファデータ部24の長さ
は、バッファセル25の長さの整数倍になっていると記
憶領域1の使用効率が高くなる。バッファセル使用状態
管理部23は個々のバッファセル25の使用、未使用を
表すもので、その大きさはバッファデータ部24に含ま
れるバッファセル25の数によって決定される。
【0028】次に、バッファ管理部5は、回線制御テー
ブル4から各通信回線7ごとの最長送受信データ長を読
み出しバッファクラス31を決定する。ここで、バッフ
ァクラス31を図4に示す例により説明する。まず、バ
ッファクラス31のθはバッファデータ部24の全ての
バッファセル25が使用中のバッファ14が所属するた
めに存在し、そのため最大空き領域長32および空き領
域係数33ともに必ずθである。バッファクラス31の
1の最大空き領域長32はバッファセル25の大きさと
なる。これは通信制御装置で最短の送受信データを格納
できる長さに等しい。このときの空き領域係数33は必
ず1である。最大空き領域長32が最も大きいバッファ
クラス31(図4では4)をNとすると、バッファクラ
ス31のNの最大空き領域長32は、バッファデータ部
24の大きさとなる。これは通信制御装置で最長の送受
信データを格納できる長さに等しい。バッファクラス3
1の2〜N−1の最大空き領域長32は、各通信回線7
での最長送受信データ長を考慮して任意に決定してよい
が、処理の単純化を図るため各々の空き領域係数33
(バッファクラス31の1を基準にしたときの最大空き
領域長32の比)が整数になるようにする。
ブル4から各通信回線7ごとの最長送受信データ長を読
み出しバッファクラス31を決定する。ここで、バッフ
ァクラス31を図4に示す例により説明する。まず、バ
ッファクラス31のθはバッファデータ部24の全ての
バッファセル25が使用中のバッファ14が所属するた
めに存在し、そのため最大空き領域長32および空き領
域係数33ともに必ずθである。バッファクラス31の
1の最大空き領域長32はバッファセル25の大きさと
なる。これは通信制御装置で最短の送受信データを格納
できる長さに等しい。このときの空き領域係数33は必
ず1である。最大空き領域長32が最も大きいバッファ
クラス31(図4では4)をNとすると、バッファクラ
ス31のNの最大空き領域長32は、バッファデータ部
24の大きさとなる。これは通信制御装置で最長の送受
信データを格納できる長さに等しい。バッファクラス3
1の2〜N−1の最大空き領域長32は、各通信回線7
での最長送受信データ長を考慮して任意に決定してよい
が、処理の単純化を図るため各々の空き領域係数33
(バッファクラス31の1を基準にしたときの最大空き
領域長32の比)が整数になるようにする。
【0029】さらに、バッファ管理部5は、図5に示す
クラスバッファループを生成する。クラスバッファルー
プは各バッファクラス31に対応して存在する。したが
って、図4に示す例の場合、クラスバッファループは5
つ存在する。記憶領域1のバッファ14は、バッファ内
の次バッファアドレス21、前バッファアドレス22を
用いて、必ずいずれかのクラスバッファループに連結さ
れている。どのクラスバッファループに連結されるか
は、バッファ14内の未使用バッファセル25の連続最
大長とバッファクラス31の最大空き領域長32によっ
て決定される。図5に示す例では、未使用バッファセル
25の連続最大長は、それぞれ512byte、768byte
である。これと図4に示す最大空き領域長32を比較す
ると、バッファクラス31の2に該当する(バッファク
ラス31の3に該当するためには、1024byte以上必
要)。したがって、図5に示すバッファはバッファクラ
ス31の2に対応するバッファクラスループに連結され
ることになる。
クラスバッファループを生成する。クラスバッファルー
プは各バッファクラス31に対応して存在する。したが
って、図4に示す例の場合、クラスバッファループは5
つ存在する。記憶領域1のバッファ14は、バッファ内
の次バッファアドレス21、前バッファアドレス22を
用いて、必ずいずれかのクラスバッファループに連結さ
れている。どのクラスバッファループに連結されるか
は、バッファ14内の未使用バッファセル25の連続最
大長とバッファクラス31の最大空き領域長32によっ
て決定される。図5に示す例では、未使用バッファセル
25の連続最大長は、それぞれ512byte、768byte
である。これと図4に示す最大空き領域長32を比較す
ると、バッファクラス31の2に該当する(バッファク
ラス31の3に該当するためには、1024byte以上必
要)。したがって、図5に示すバッファはバッファクラ
ス31の2に対応するバッファクラスループに連結され
ることになる。
【0030】通信を開始する以前の状態では全バッファ
14の全バッファセル25は未使用なので、バッファ管
理部5は全バッファ14をバッファクラス31のN(図
4では4)に対応するバッファクラスループに連結す
る。
14の全バッファセル25は未使用なので、バッファ管
理部5は全バッファ14をバッファクラス31のN(図
4では4)に対応するバッファクラスループに連結す
る。
【0031】通信が開始されバッファが必要となった送
受信制御部3は、バッファ長を指定してバッファ管理部
5にバッファの要求を行う。その要求バッファをバッフ
ァ管理部5上のバッファ14と区別するため論理バッフ
ァと呼ぶ。バッファ管理部5は、その論理バッファ長が
どのバッファクラス31に属するかを検索する。このバ
ッファクラス31をmとしたとき、論理バッファを獲得
できるバッファ14は、バッファクラス31のm〜Nに
対応するバッファクラスループに連結されているバッフ
ァ14であることはバッファクラスループの構成から明
らかである。
受信制御部3は、バッファ長を指定してバッファ管理部
5にバッファの要求を行う。その要求バッファをバッフ
ァ管理部5上のバッファ14と区別するため論理バッフ
ァと呼ぶ。バッファ管理部5は、その論理バッファ長が
どのバッファクラス31に属するかを検索する。このバ
ッファクラス31をmとしたとき、論理バッファを獲得
できるバッファ14は、バッファクラス31のm〜Nに
対応するバッファクラスループに連結されているバッフ
ァ14であることはバッファクラスループの構成から明
らかである。
【0032】バッファ管理部5は、バッファクラス31
のmに対応するバッファクラスループに連結されている
バッファ14をバッファクラスループから取り出す。も
しバッファクラスループにバッファが存在しない場合、
バッファクラス31をm+1、m+2、…と1ずつ増加
させてバッファ14を探す。バッファクラス31のNま
で探してもバッファ14が存在しない場合、バッファビ
ジーとなり論理バッファの獲得失敗を送受信制御部3に
通知する。バッファ14が存在した場合、バッファ管理
部5はバッファセル使用状態管理部23を参照し、論理
バッファ長を満足させられる連続未使用のバッファセル
25を探し、その先頭のバッファセル25のアドレスを
論理バッファアドレスとして送受信制御部3に通知す
る。
のmに対応するバッファクラスループに連結されている
バッファ14をバッファクラスループから取り出す。も
しバッファクラスループにバッファが存在しない場合、
バッファクラス31をm+1、m+2、…と1ずつ増加
させてバッファ14を探す。バッファクラス31のNま
で探してもバッファ14が存在しない場合、バッファビ
ジーとなり論理バッファの獲得失敗を送受信制御部3に
通知する。バッファ14が存在した場合、バッファ管理
部5はバッファセル使用状態管理部23を参照し、論理
バッファ長を満足させられる連続未使用のバッファセル
25を探し、その先頭のバッファセル25のアドレスを
論理バッファアドレスとして送受信制御部3に通知す
る。
【0033】その後バッファ管理部5は、獲得した論理
バッファを構成するバッファセル25に対応するバッフ
ァセル使用状態管理部23を使用中に変更する。次にバ
ッファ管理部5は、そのバッファ14をバッファクラス
ループに戻すため、バッファセル使用状態管理部23を
参照し連続未使用のバッファセル25の最大長とバッフ
ァクラス31の最大空き領域長32からバッファ14を
戻すバッファクラスループを決定し、そのバッファクラ
スループにバッファ14を連結する。
バッファを構成するバッファセル25に対応するバッフ
ァセル使用状態管理部23を使用中に変更する。次にバ
ッファ管理部5は、そのバッファ14をバッファクラス
ループに戻すため、バッファセル使用状態管理部23を
参照し連続未使用のバッファセル25の最大長とバッフ
ァクラス31の最大空き領域長32からバッファ14を
戻すバッファクラスループを決定し、そのバッファクラ
スループにバッファ14を連結する。
【0034】不要バッファが発生したとき、送受信制御
部3は論理バッファアドレスを指定して、バッファ管理
部5にバッファの解放要求を行う。バッファ管理部5は
その論理バッファがどのバッファ14に属するかを求
め、解放する論理バッファを構成するバッファセル25
に対応するバッファセル使用状態管理部23を使用中か
ら未使用に変更する。論理バッファ解放処理によりバッ
ファ14の未使用のバッファセル25が増加したため、
そのバッファのバッファクラス31を変更する。これ
は、論理バッファ獲得時の最後に、バッファ14をバッ
ファクラスループに戻す際の処理と同じである。
部3は論理バッファアドレスを指定して、バッファ管理
部5にバッファの解放要求を行う。バッファ管理部5は
その論理バッファがどのバッファ14に属するかを求
め、解放する論理バッファを構成するバッファセル25
に対応するバッファセル使用状態管理部23を使用中か
ら未使用に変更する。論理バッファ解放処理によりバッ
ファ14の未使用のバッファセル25が増加したため、
そのバッファのバッファクラス31を変更する。これ
は、論理バッファ獲得時の最後に、バッファ14をバッ
ファクラスループに戻す際の処理と同じである。
【0035】
【発明の効果】以上説明したように本発明によれば、バ
ッファ管理処理にバッファのバッファクラス変更処理を
追加し、バッファクラス間でバッファの移動を行うこと
によりバッファクラス単位のバッファビジーの発生を抑
え、また、バッファ要求元からみたバッファ(論理バッ
ファ)形態を従来同様の連続した記憶域に維持すること
ができ、これより、バッファを獲得できない記憶領域の
未使用領域が少ない状態であってもバッファを獲得する
確率を高め、バッファビジーに起因するデータ送受信の
一時停止を減少させ、通信回線の利用効率を高めること
ができる効果がある。
ッファ管理処理にバッファのバッファクラス変更処理を
追加し、バッファクラス間でバッファの移動を行うこと
によりバッファクラス単位のバッファビジーの発生を抑
え、また、バッファ要求元からみたバッファ(論理バッ
ファ)形態を従来同様の連続した記憶域に維持すること
ができ、これより、バッファを獲得できない記憶領域の
未使用領域が少ない状態であってもバッファを獲得する
確率を高め、バッファビジーに起因するデータ送受信の
一時停止を減少させ、通信回線の利用効率を高めること
ができる効果がある。
【図1】本発明実施例および従来例の構成を示すブロッ
ク図。
ク図。
【図2】本発明実施例における記憶領域の構成を示す
図。
図。
【図3】本発明実施例における記憶領域に存在するバッ
ファの形式を示す図。
ファの形式を示す図。
【図4】本発明実施例における記憶領域内のバッファク
ラス定義部の構成例を示す図。
ラス定義部の構成例を示す図。
【図5】本発明実施例におけるバッファ管理部がバッフ
ァをバッファクラスごとに管理するバッファクラスルー
プの概念を示す図。
ァをバッファクラスごとに管理するバッファクラスルー
プの概念を示す図。
【図6】従来例の固定長バッファ方式におけるバッファ
領域を示す図。
領域を示す図。
【図7】従来例のバッファプール方式におけるバッファ
領域を示す図。
領域を示す図。
【図8】従来例の記憶単位連結方式におけるバッファ領
域を示す図。
域を示す図。
【図9】従来例の記憶単位連結方式におけるバッファの
概念を示す図。
概念を示す図。
【符号の説明】 1 記憶領域 2 上位装置インタフェース部 3 送受信制御部 4 回線制御テーブル 5 バッファ管理部 6 回線接続部 7 通信回線 12 バッファクラス定義部 13 バッファ領域 14、61 バッファ 21 次バッファアドレス 22 前バッファアドレス 23 バッファセル使用状態管理部 24 バッファデータ部 25 バッファセル 31 バッファクラス 32 最大空き領域長 33 空き領域係数 34 バッファクラスヘッダポインタ 35 バッファクラステールポインタ 51 上位装置 71 バッファループ1の長さに分割したバッファ 72 バッファループ2の長さに分割したバッファ 81 記憶単位 82 データ格納域 83 連結ポインタ
Claims (1)
- 【請求項1】 上位装置および複数の通信回線に接続さ
れ、 前記上位装置とデータの送受信を行う上位装置インタフ
ェースと、 前記通信回線とのデータの送受信を行う回線接続部と、 データ通信手順にしたがって前記回線接続部のデータ送
受信制御を行う送受信制御部と、 前記通信回線を制御する制御情報を格納する回線制御テ
ーブルと、 前記通信回線あるいは前記上位装置へのデータを一時保
持する記憶領域と、 この記憶領域の未使用領域を管理するバッファ管理部と
を備えた通信制御装置において、 前記記憶領域に、 内部が複数のバッファセルに分割された等長のバッファ
を複数配列したバッファ領域と、 このバッファ領域を前記バッファセルの空き領域の大き
さによって分類しバッファクラスを定義するバッファク
ラス定義部とを設け、 前記バッファ管理部に、 前記送受信制御部のバッファ要求に応じて最適バッファ
クラスを選択し、その空き領域の一部または全部を前記
送受信制御部に論理バッファとして渡す手段と、 前記送受信制御部の論理バッファ解放要求に応じて解放
処理を行い、その論理バッファが属するバッファ中の空
き領域の大きさに応じて最適バッファクラスに所属させ
る手段とを含むことを特徴とする通信制御装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4336378A JPH0744564B2 (ja) | 1992-12-16 | 1992-12-16 | 通信制御装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4336378A JPH0744564B2 (ja) | 1992-12-16 | 1992-12-16 | 通信制御装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH06188919A JPH06188919A (ja) | 1994-07-08 |
| JPH0744564B2 true JPH0744564B2 (ja) | 1995-05-15 |
Family
ID=18298523
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4336378A Expired - Lifetime JPH0744564B2 (ja) | 1992-12-16 | 1992-12-16 | 通信制御装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0744564B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5519574B2 (ja) * | 2011-05-16 | 2014-06-11 | 日本電信電話株式会社 | データ格納領域管理装置、データ格納領域管理方法及びデータ格納領域管理プログラム |
-
1992
- 1992-12-16 JP JP4336378A patent/JPH0744564B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPH06188919A (ja) | 1994-07-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3734704B2 (ja) | パケット分類エンジン | |
| JP2809961B2 (ja) | マルチプロセッサ | |
| CN100466602C (zh) | 动态共享存储器存储空间的实现方法 | |
| JPH08508592A (ja) | 通信ネットワークのデータステーション内のデータバッファ方法および装置 | |
| CN111177017A (zh) | 一种内存分配方法及装置 | |
| US20050257012A1 (en) | Storage device flow control | |
| CN114020662B (zh) | 桥接模块、数据传输系统和数据传输方法 | |
| CN112463064B (zh) | 基于双链表结构的i/o指令管理方法及装置 | |
| EP0317468A2 (en) | Bus flow control system | |
| US6202134B1 (en) | Paging processing system in virtual storage device and paging processing method thereof | |
| CN113886310B (zh) | 桥接模块、数据传输系统和数据传输方法 | |
| US20060047874A1 (en) | Resource management apparatus | |
| JPH0744564B2 (ja) | 通信制御装置 | |
| CN120216151A (zh) | 在ufs设备中实现的队列管理方法以及队列管理器 | |
| JPH0652060A (ja) | Lruリスト制御方式 | |
| JP3353376B2 (ja) | 記憶領域管理方式 | |
| JP2924725B2 (ja) | バッファ割り当て制御システム | |
| US6301241B1 (en) | Transmission right assigning method and communication system | |
| JP3171726B2 (ja) | 伝送データの管理装置 | |
| US6681260B1 (en) | Data transfer method in function expansion system | |
| JPH0661074B2 (ja) | アクセス制御装置、バスの遊休時間を最小化する方法、dma制御装置、及びdmaデータ転送方法 | |
| US7228322B1 (en) | Data management apparatus of switching system | |
| CN1414481A (zh) | 一种基于多业务多通道的数据收发处理方法 | |
| JPH03296841A (ja) | キャッシュ制御方式 | |
| CN121764536A (zh) | 数据存储与数据读取方法、数据传输系统、芯片、存储介质及计算机设备 |