(57)【特許請求の範囲】
【請求項１】
優先度の高いＨデータと優先度の低いＬデータを受信し、設定された閾値により帯域制限して送信する通信帯域制御装置において、
所定個数のフリーバッファ列から１個をデキューしたＨデータバッファに、前記Ｈデータをコピーして送信待ち列にエンキューすると共に、前記送信待ち列から送信されたＨデータをデキューし、空のフリーバッファを前記フリーバッファ列にエンキューさせるＨデータバッファ、並びに、前記フリーバッファ列からデキューした時にカウントアップし、前記フリーバッファ列にエンキューした時にカウントダウンするＨカウンタを具備するＨデータ処理部と、
前記所定個数のフリーバッファ列から１個をデキューしたＬデータバッファに、前記Ｌデータをコピーして送信待ち列にエンキューすると共に、前記送信待ち列から送信されたＬデータをデキューし、空のフリーバッファを前記フリーバッファ列にエンキューさせるＬデータバッファ、並びに、前記フリーバッファ列からデキューした時にカウントアップし、前記フリーバッファ列にエンキューした時にカウントダウンするＬカウンタを具備するＬデータ処理部と、
前記Ｈカウンタのカウント値H_num及び前記Ｌカウンタのカウント値L_numを監視し、前記Ｈカウンタの上限制限値H_lim及び前記Ｌカウンタの上限制限値L_limの最適値を動的に演算して設定する通信帯域制御部と、
を備え、
前記Ｈデータ処理部または前記Ｌデータ処理部は、
前記Ｈカウンタのカウント値H_numが上限制限値H_limに達していない時に前記フリーバッファ列からデキューしてＨデータをコピーし、H_numがH_limをオーバーしている時にはデキューをペンディングしてＨデータのコピー処理を待機状態とすると共に、Ｌカウンタのカウント値L_numが上限制限値L_limに達していない時に前記フリーバッファ列からデキューしてＬデータをコピーし、L_numがL_limをオーバーしている時には、コピー対象のＬデータを破棄することを特徴とする通信帯域制御装置。
【請求項２】
優先度の高いＨデータと優先度の低いＬデータを受信し、設定された閾値により帯域制限して送信する通信帯域制御装置において、
所定個数のフリーバッファ列から１個をデキューしたＨデータバッファに、前記Ｈデータをコピーして送信待ち列にエンキューすると共に、前記送信待ち列から送信されたＨデータをデキューし、空のフリーバッファを前記フリーバッファ列にエンキューさせるＨデータバッファ、並びに、前記フリーバッファ列からデキューした時にカウントアップし、前記フリーバッファ列にエンキューした時にカウントダウンするＨカウンタを具備するＨデータ処理部と、
前記所定個数のフリーバッファ列から１個をデキューしたＬデータバッファに、前記Ｌデータをコピーして送信待ち列にエンキューすると共に、前記送信待ち列から送信されたＬデータをデキューし、空のフリーバッファを前記フリーバッファ列にエンキューさせるＬデータバッファ、並びに、前記フリーバッファ列からデキューした時にカウントアップし、前記フリーバッファ列にエンキューした時にカウントダウンするＬカウンタを具備するＬデータ処理部と、
前記Ｈカウンタのカウント値H_num及び前記Ｌカウンタのカウント値L_numを監視し、前記Ｈカウンタの上限制限値H_lim及び前記Ｌカウンタの上限制限値L_limの最適値を動的に演算して設定する通信帯域制御部と、
を備え、
前記通信帯域制御部は、
N：フリーバッファ列の全体数
H_MIN：H_limの最小値（定数）
H_MAX：H_limの最大値（定数）
H_max：H_numの最大値
とするとき、
（ａ）最初の１回のみ実行される初期ステートでは、H_lim=H_MIN（定数）及びL_lim=N-H_limを前記Ｈカウンタ及びＬカウンタに設定し、
（ｂ）H_lim＜H_MAXとなる中期ステートでは、H_lim=H_max+H_MIN及びL_lim=N-H_limを前記Ｈカウンタ及びＬカウンタに設定し、
（ｃ）H_limがH_MAX以上となる最終ステートでは、H_lim=H_MAX及びL_lim=N-H_limを前記Ｈカウンタ及びＬカウンタに設定し、
H_limの値を順次増加させる通信帯域の動的制御を実行することを特徴とする通信帯域制御装置。
【請求項３】
前記Ｈデータ処理部または前記Ｌデータ処理部は、
前記Ｈカウンタのカウント値H_numが上限制限値H_limに達していない時に前記フリーバッファ列からデキューしてＨデータをコピーし、H_numがH_limをオーバーしている時にはデキューをペンディングしてＨデータのコピー処理を待機状態とすると共に、Ｌカウンタのカウント値L_numが上限制限値L_limに達していない時に前記フリーバッファ列からデキューしてＬデータをコピーし、L_numがL_limをオーバーしている時には、コピー対象のＬデータを破棄することを特徴とする請求項２に記載の通信帯域制御装置。
【請求項４】
前記通信帯域制御部は、所定のタイミングで実行されるリセット処理により、リセット処理時のＨカウンタのカウント値H_numを取得し、H_lim=H_num＋H_MIN、L_lim=N-H_limに通信帯域を変更することを特徴とする請求項２または３に記載の通信帯域制御装置。
【請求項５】
前記通信帯域制御部は、リセット処理時のＨカウンタのカウント値H_numがゼロの場合には、前記初期ステートに通信帯域を変更することを特徴とする請求項４に記載の通信帯域制御装置。
【請求項６】
前記リセット処理は、定周期処理またはＨカウンタのカウント値H_numの極大値とH_limとの差が所定の閾値を上回った場合にのみ実行されることを特徴とする請求項４または５に記載の通信帯域制御装置。
【請求項７】
前記通信帯域制御部は、ノードからのデータをデバイスを経由して受信してタスクに受け渡すための通信ドライバ内に実装されていることを特徴とする請求項１乃至６のいずれかに記載の通信帯域制御装置。
【請求項８】
前記通信帯域制御部は、タスクからのデータを受信してデバイスを経由してノードに受け渡すための通信ドライバ内に実装されていることを特徴とする請求項１乃至６のいずれかに記載の通信帯域制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高優先度のＨデータと低優先度のＬデータを受信し、設定された閾値により帯域制限して送信する通信帯域制御装置に関するものである。
【背景技術】
【０００２】
図６は、本発明が有効に適用されるデータ通信の基本的なトポロジーを示す機能ブロック図である。通信ドライバ１０は複数のノード２１，２２，２３，…２ｎよりデバイス（通信コントローラ）３０を介してデータを受信し、複数のタスク４１，４２，４３，…４ｍに受け渡す。
【０００３】
逆に、複数のタスク４１，４２，４３，…４ｍから受信するデータをデバイス３０を介して複数のノード２１，２２，２３，…２ｎに受け渡す。通信ドライバ３０は、ＦＩＦＯ形式のデータバッファ５０を備えている。
【０００４】
通信データを受け取るデバイスと通信相手、通信ドライバとタスクは１対多の関係にあるが、デバイスとドライバの関係は、メモリ資源の制約や、通信ドライバとデバイス間のインターフェースを複雑にしないため、１対１である場合が多い。
【０００５】
通信ドライバは、デバイスからＦＩＦＯ形式のデータバッファを経由して受け取ったデータを順次処理する。データをタスクに渡す必要がある場合は、通信ドライバ−タスク間受け渡し用のフリーバッファを使用する。
【０００６】
通信ドライバとタスクは非同期で動作するため、タスクがデータを受け取るまで一時的に保管する目的で、受け渡し用のフリーバッファが複数用意されている。この受け渡し用のフリーバッファは、未使用フリーバッファ列または送信待ち列のどちらかにキューイングされている。
【０００７】
通信ドライバは、データバッファにデータが存在する場合、動作可能な限りデータの受け渡し用のフリーバッファへのコピー処理を行い、これを送信待ち列にキューイングする。それに対し、タスクは可能なタイミングで送信待ち列からのデータの受信処理を行う。
【０００８】
タスクは、夫々のタスク毎に優先度を持って動作するため、データの受信処理が可能なタイミングや頻度はタスク毎に異なる。そのため、デバイスから特定のタスク宛のデータを大量に受信した場合、送信待ち列にそのタスクのデータがコピーされた受け渡し用のバッファに大量にキューイングされ、有限のメモリ資源で確保されたフリーバッファが枯渇してしまう場合がある。
【０００９】
フリーバッファが枯渇した場合、通信ドライバは未使用のフリーバッファがフリーバッファ列にキューイングされるまでタスクへのデータ受け渡し処理をペンディングさせる。これにより、重要なデータの受け渡し遅延が発生したり、状況によっては重要な受信データがデバイスによって破棄されたりする可能性がある。
【００１０】
このように、全てのタスクで一つの受信帯域を使用している場合、受信負荷が帯域内に収まっていればピーク負荷に柔軟に対応できるという利点はあるが、特定のタスク（データ）が帯域を占有してしまう問題がある。この問題は、悪意のＤＯＳ攻撃等に対するセキュリティ上のリスクともなる。
【００１１】
この問題に対処するため、通信データを優先度の高いＨデータと優先度の低いＬデータに分類し、設定された閾値によりＨデータ及びＬデータの通信帯域、即ち使用できる受け渡しバッファ数を管理する手法が特許文献１に提案されている。
【００１２】
図７は、ノードからタスクにデータを受け渡し（受信）する場合の、優先度管理を適用した従来の通信帯域制御装置（データコピーモード）の構成例を示す機能ブロック図である。図８は、ノードからタスクにデータを受け渡し（受信）する場合の、優先度管理を適用した従来の通信帯域制御装置（データ読み取りモード）の構成例を示す機能ブロック図である。
【００１３】
図７に示すデータコピーモードおいて、デバイス３０から通信ドライバ１０への割り込みで、ノードからのデータは、ＦＩＦＯ形式のデータバッファ５０に追加される。データバッファ５０の先頭データ５１は、優先度判定部６０によりデータに予め記入された情報に基づいて優先度の高いＨデータまたは優先度の低いＬデータに識別分類される。
【００１４】
このデータ５１が優先度の高いＨデータであれは、Ｈデータ処理部７０においてＮ個のフリーバッファ列１０１，１０２，１０３，…１０Ｎから１個をデキューしたＨデータバッファ７１にコピーされ、送信待ち列９１，９２，９３，…９ｍの一個にエンキューされる。このときＨカウンタ７２のカウント値H_numが＋１カウントアップされる。
【００１５】
送信待ち列９１，９２，９３，…９ｍは、タスク４１，４２，４３，…４ｍに対応して設けられており、Ｈデータバッファ７１にコピーされたデータは、そのデータの送信先タスクに対応する送信待ち列にエンキューされる。
【００１６】
同様に、このデータ５１が優先度の低いＬデータであれば、Ｌータ処理部８０においてＮ個のフリーバッファ列１０１，１０２，１０３，…１０Ｎから１個をデキューしたＬデータバッファ８１にコピーされ、送信待ち列９１，９２，９３，…９ｍにエンキューされる。このときＬカウンタ８２のカウント値H_numが＋１カウントアップされる。
【００１７】
図８に示すデータ読み取りモードにおいて、タスク４１，４２，４３，…４ｍ中の４１からの読み取り要求に基づいて、送信待ち列９１の先頭データ９１ａがタスク４１のローカルバッファ４１ａに読み取られる。
【００１８】
このデータ９１ａがＨデータである場合には、Ｈデータ処理部７０はデータ９１ａが使用していた空のバッファをＨデータバッファ７１にデキューし、さらにその空のバッファをフリーバッファ列の後尾に１０Ｎ＋１としてエンキューする。このとき、Ｈカウンタ７２のカウント値H_numが−１カウントダウンされる。
【００１９】
同様に、データ９１ａがＬデータである場合には、Ｌデータ処理部８０はデータ９１ａが使用していた空のバッファをＬデータバッファ８１にデキューし、さらにその空のバッファをフリーバッファ列の後尾に１０Ｎ＋１としてエンキューする。このとき、Ｌカウンタ８２のカウント値H_numがが−１カウントダウンされる。
【００２０】
図７、図８において、閾値設定部１１０は、Ｈカウンタ７２の上限制限値H_lim及びＬカウンタ８２の上限制限値L_limを、Ｈデータ処理部７０及びＬデータ処理部８０に通知する。これら上限値H_lim及び上限値L_limは、適宜手動設定される固定値である。
【００２１】
Ｈデータ処理部７０は、Ｈカウンタ７２のカウント値H_numが上限制限値H_limに達していない時には、フリーバッファ列から空のバッファ１０１をデキューしてＨデータをコピーし、H_numがH_limをオーバーしている時にはデキューをペンディングしてＨデータのコピー処理を待機状態とする。
【００２２】
Ｌデータ処理部８０は、Ｌカウンタ８２のカウント値L_numが上限制限値L_limに達していない時には、フリーバッファ列からから空のバッファ１０１をデキューしてＬデータをコピーし、L_numがL_limをオーバーしている時には、コピー対象のＬデータを破棄する。
【先行技術文献】
【特許文献】
【００２３】
【特許文献１】特開２００５−２１０４００号公報
【発明の概要】
【発明が解決しようとする課題】
【００２４】
従来構成における通信ドライバとタスク間受け渡し用バッファの使用可能数（H_lim、L_lim）は、Ｈデータ及びＬデータの使用可能な帯域を表す。通常は、Ｈデータが必要とする帯域は、Ｌデータが必要とする帯域よりも狭い場合が多い。
【００２５】
そのため、H_limはL_limより小さい値が設定されることになるが、H_limは想定される帯域よりも余裕を持って大きな値が設定されることが望ましい。この場合、周囲環境の通信負荷によっては使用されない無駄な帯域が発生する可能性がある。
【００２６】
特許文献１に開示されている通信帯域管理の手法では、先に優先度の高いＨデータが帯域を食いつぶしてしまった場合、優先度の低いＬデータのやり取りは不可能になる。
【００２７】
本発明の目的は、通信ドライバとタスクという１対多関係のデータ受け渡しにおいて、重要なデータとその他のデータで帯域を分け、夫々の帯域幅が自動的に最適値となるようなアルゴリズムによりメモリ資源を効率的に活用できる通信帯域制御装置を実現することにある。
【課題を解決するための手段】
【００２８】
このような課題を達成するために、本発明は次の通りの構成になっている。
（１）優先度の高いＨデータと優先度の低いＬデータを受信し、設定された閾値により帯域制限して送信する通信帯域制御装置において、
所定個数のフリーバッファ列から１個をデキューしたＨデータバッファに、前記Ｈデータをコピーして送信待ち列にエンキューすると共に、前記送信待ち列から送信されたＨデータをデキューし、空のフリーバッファを前記フリーバッファ列にエンキューさせるＨデータバッファ、並びに、前記フリーバッファ列からデキューした時にカウントアップし、前記フリーバッファ列にエンキューした時にカウントダウンするＨカウンタを具備するＨデータ処理部と、
前記所定個数のフリーバッファ列から１個をデキューしたＬデータバッファに、前記Ｌデータをコピーして送信待ち列にエンキューすると共に、前記送信待ち列から送信されたＬデータをデキューし、空のフリーバッファを前記フリーバッファ列にエンキューさせるＬデータバッファ、並びに、前記フリーバッファ列からデキューした時にカウントアップし、前記フリーバッファ列にエンキューした時にカウントダウンするＬカウンタを具備するＬデータ処理部と、
前記Ｈカウンタのカウント値H_num及び前記Ｌカウンタのカウント値L_numを監視し、前記Ｈカウンタの上限制限値H_lim及び前記Ｌカウンタの上限制限値L_limの最適値を動的に演算して設定する通信帯域制御部と、
を備え、
前記Ｈデータ処理部または前記Ｌデータ処理部は、
前記Ｈカウンタのカウント値H_numが上限制限値H_limに達していない時に前記フリーバッファ列からデキューしてＨデータをコピーし、H_numがH_limをオーバーしている時にはデキューをペンディングしてＨデータのコピー処理を待機状態とすると共に、Ｌカウンタのカウント値L_numが上限制限値L_limに達していない時に前記フリーバッファ列からデキューしてＬデータをコピーし、L_numがL_limをオーバーしている時には、コピー対象のＬデータを破棄することを特徴とする通信帯域制御装置。
【００２９】
（２）優先度の高いＨデータと優先度の低いＬデータを受信し、設定された閾値により帯域制限して送信する通信帯域制御装置において、
所定個数のフリーバッファ列から１個をデキューしたＨデータバッファに、前記Ｈデータをコピーして送信待ち列にエンキューすると共に、前記送信待ち列から送信されたＨデータをデキューし、空のフリーバッファを前記フリーバッファ列にエンキューさせるＨデータバッファ、並びに、前記フリーバッファ列からデキューした時にカウントアップし、前記フリーバッファ列にエンキューした時にカウントダウンするＨカウンタを具備するＨデータ処理部と、
前記所定個数のフリーバッファ列から１個をデキューしたＬデータバッファに、前記Ｌデータをコピーして送信待ち列にエンキューすると共に、前記送信待ち列から送信されたＬデータをデキューし、空のフリーバッファを前記フリーバッファ列にエンキューさせるＬデータバッファ、並びに、前記フリーバッファ列からデキューした時にカウントアップし、前記フリーバッファ列にエンキューした時にカウントダウンするＬカウンタを具備するＬデータ処理部と、
前記Ｈカウンタのカウント値H_num及び前記Ｌカウンタのカウント値L_numを監視し、前記Ｈカウンタの上限制限値H_lim及び前記Ｌカウンタの上限制限値L_limの最適値を動的に演算して設定する通信帯域制御部と、
を備え、
前記通信帯域制御部は、
N：フリーバッファ列の全体数
H_MIN：H_limの最小値（定数）
H_MAX：H_limの最大値（定数）
H_max：H_numの最大値
とするとき、
（ａ）最初の１回のみ実行される初期ステートでは、H_lim=H_MIN（定数）及びL_lim=N-H_limを前記Ｈカウンタ及びＬカウンタに設定し、
（ｂ）H_lim＜H_MAXとなる中期ステートでは、H_lim=H_max+H_MIN及びL_lim=N-H_limを前記Ｈカウンタ及びＬカウンタに設定し、
（ｃ）H_limがH_MAX以上となる最終ステートでは、H_lim=H_MAX及びL_lim=N-H_limを前記Ｈカウンタ及びＬカウンタに設定し、
H_limの値を順次増加させる通信帯域の動的制御を実行することを特徴とする通信帯域制御装置。
【００３０】
（３）前記Ｈデータ処理部または前記Ｌデータ処理部は、
前記Ｈカウンタのカウント値H_numが上限制限値H_limに達していない時に前記フリーバッファ列からデキューしてＨデータをコピーし、H_numがH_limをオーバーしている時にはデキューをペンディングしてＨデータのコピー処理を待機状態とすると共に、Ｌカウンタのカウント値L_numが上限制限値L_limに達していない時に前記フリーバッファ列からデキューしてＬデータをコピーし、L_numがL_limをオーバーしている時には、コピー対象のＬデータを破棄することを特徴とする（２）に記載の通信帯域制御装置。
【００３１】
（４）前記通信帯域制御部は、所定のタイミングで実行されるリセット処理により、リセット処理時のＨカウンタのカウント値H_numを取得し、H_lim=H_num＋H_MIN、L_lim=N-H_limに通信帯域を変更することを特徴とする（２）または（３）に記載の通信帯域制御装置。
【００３２】
（５）前記通信帯域制御部は、リセット処理時のＨカウンタのカウント値H_numがゼロの場合には、前記初期ステートに通信帯域を変更することを特徴とする（４）に記載の通信帯域制御装置。
【００３３】
（６）前記リセット処理は、定周期処理またはＨカウンタのカウント値H_numの極大値とH_limとの差が所定の閾値を上回った場合にのみ実行されることをことを特徴とする（４）または（５）に記載の通信帯域制御装置。
【００３４】
（７）前記通信帯域制御部は、ノードからのデータをデバイスを経由して受信してタスクに受け渡すための通信ドライバ内に実装されていることを特徴とする（１）乃至（６）のいずれかに記載の通信帯域制御装置。
【００３５】
（８）前記通信帯域制御部は、タスクからのデータを受信してデバイスを経由してノードに受け渡すための通信ドライバ内に実装されていることを特徴とする（１）乃至（６）のいずれかに記載の通信帯域制御装置。
【発明の効果】
【００３６】
本発明によれば、次のような効果を期待することができる。
（１）デバイスからＬデータを大量に受信した場合でも、Ｈデータの帯域が確保され、Ｈデータの受け渡し遅延や、データの破棄を防ぐことが可能である。
【００３７】
（２）Ｈデータが帯域制限を越えるような高負荷にならない限りは、Ｌデータに関しても常に最低限の帯域が確保される。
【００３８】
（３）ＨデータとＬデータに割り当てる帯域を、周囲の環境に合わせて自動的に最適な状態に設定できるので、環境に合わせたオペレータによるチューニング作業が不要となる。
【００３９】
（４）従来の帯域（バッファ用メモリの使用量）を増加させることなく、限られたメモリ資源を効率よく使用することが可能となる。
【００４０】
（５）デバイスと通信ドライバ間のＦＩＦＯバッファの本数を増やす、通信ドライバとタスク間でタスク毎にフリーバッファ列を用意する等、ｎ対ｎ構成へのインターフェース変更が不要であり、従来と同様に１対多の環境で実施することができる。
【図面の簡単な説明】
【００４１】
【図１】本発明を適用した通信帯域制御装置（データコピーモード）の一実施例を示す機能ブロック図である。
【図２】本発明を適用した通信帯域制御装置（データ読み取りモード）の一実施例を示す機能ブロック図である。
【図３】通信帯域の動的制御及びリセット処理を説明する遷移図である。
【図４】本発明を適用した通信帯域制御装置（データコピーモード）の一実施例を示す機能ブロック図である。
【図５】本発明を適用した通信帯域制御装置（データ送信モード）の一実施例を示す機能ブロック図である。
【図６】データ通信の基本的なトポロジーを示す機能ブロック図である。
【図７】従来の通信帯域制御装置（データコピーモード）の構成例を示す機能ブロック図である。
【図８】従来の通信帯域制御装置（データ読み取りモード）の構成例を示す機能ブロック図である。
【発明を実施するための形態】
【００４２】
以下本発明を、図面を用いて詳細に説明する。図１は、本発明を適用した通信帯域制御装置（データコピーモード）の一実施例を示す機能ブロック図である。図２は、本発明を適用した通信帯域制御装置（データ読み取りモード）の一実施例を示す機能ブロック図である。図７、図８説明した従来構成と同一要素には同一符号を付してその動作説明を省略する。
【００４３】
図７及び図８に示した従来構成に追加された本発明の特徴部は、通信帯域制御部２００を設けた構成にある。この通信帯域制御部２００は、Ｈカウンタ７２のカウント値H_num及びＬカウンタ８２のカウント値L_numを監視し、Ｈカウンタの上限制限値H_lim及びＬカウンタの上限制限値L_limの最適値を動的に演算して設定する機能を備える。
【００４４】
閾値設定部１１０は、Ｈカウンタ７２のカウント値H_numの最小値H_MIN（定数）、Ｈカウンタ７２のカウント値H_numの最大値H_MAX（定数）及びフリーバッファ列の全体数Ｎを通信帯域制御部２００に設定する。
【００４５】
前述したように、通信ドライバとタスク間受け渡し用バッファの使用可能数（H_lim、L_lim）は、Ｈデータ及びＬデータの使用可能な帯域を表す。通常は、Ｈデータが必要とする帯域は、Ｌデータが必要とする帯域よりも狭い場合が多い。
【００４６】
そのため、H_limはL_limより小さい値が設定されることになるが、H_limは想定される帯域よりも余裕を持って大きな値が設定されることが望ましい。この場合、周囲環境の通信負荷によっては使用されない無駄な帯域が発生する可能性がある。
【００４７】
そこで、本発明ではＨデータが必要とする帯域を動的に拡張する手法を提案する。本発明の手法では、定常的に行われる帯域の動的拡張処理と、定周期または所定のタイミングで実行されるリセット処理により３つの状態を遷移する。以下、帯域の動的拡張と所定タイミングで実行されるリセット処理について説明する。
【００４８】
（Ａ）帯域の動的拡張について：
通信帯域制御部２００は、
N：フリーバッファ列の全体数
H_MIN：H_limの最小値（定数）
H_MAX：H_limの最大値（定数）
H_max：H_numの最大値
とするとき、
（ａ）最初の１回のみ実行される初期ステートでは、H_lim=H_MIN（定数）及びL_lim=N-H_limを前記Ｈカウンタ及びＬカウンタに設定し、
（ｂ）H_lim＜H_MAXとなる中期ステートでは、H_lim=H_max+H_MIN及びL_lim=N-H_limを前記Ｈカウンタ及びＬカウンタに設定し、
（ｃ）H_limがH_MAX以上となる最終ステートでは、H_lim=H_MAX及びL_lim=N-H_limを前記Ｈカウンタ及びＬカウンタに設定し、
H_limの値を順次増加させる通信帯域の動的制御を実行する
【００４９】
このように、３つのステートを（ａ）から（ｃ）へと変化させることで、Ｈデータ用の帯域を拡張する。これら３つのステートを整理した内容を次の表に示す。
【００５０】
【表１】
0005598714.tif 000002
【００５１】
中期ステート（ｂ）の演算式中のH_MINは、急激にH_maxが増加した場合の緩衝バッファの役割を果たす。この値を大きめに設定することで、Ｈデータのやり取りが頻発した場合でも、Ｈデータ用の帯域が枯渇するのを防止することができる。
【００５２】
また、中期ステート（ｂ）においては、L_num＞L_limという状態が発生する可能性がある。この場合、L_numがL_limより小さい状態になるまで、Ｌデータ用のバッファが使用できなくなる。
【００５３】
（Ｂ）リセット処理について：
（Ａ）で示した通信帯域の動的拡張アルゴリズムは、初期ステート(ａ)から最終ステート（ｃ）への一方向のみの状態遷移となる。そのため、Ｈデータのやり取りが突発的に大量に発生した場合、通常は必要ない帯域がＨデータ用に確保されてしまう可能性がある。
【００５４】
そこで、過拡張した帯域を元の状態に戻すために、定周期または所定のタイミングで帯域幅のリセット処理を行う。リセット処理は、ステート（ａ）乃至（ｃ）の全ての状態から呼ばれる可能性がある。
【００５５】
通信帯域制御部２００は、所定のタイミングで実行されるリセット処理時に、
H_lim = H_num + H_MIN （ただし、 H_lim < H_MAX
L_lim = N - H_lim
に通信帯域を変更する。ただし、リセット処理時のＨカウンタのカウント値H_numがゼロの場合には、初期ステート（ａ）の通信帯域に変更する。
【００５６】
H_numは、リセットを行う時点でＨデータ用に使用しているバッファ数を示している。H_limは必ずH_numより大きい値となるため、リセット処理直後にＨデータ用の帯域が枯渇することはない。リセット処理後は、ステート（ａ）乃至（ｃ）のいずれかの状態に遷移する。
【００５７】
なお、リセット処理は定周期処理が一般的であるが、所定の条件、例えばある一定期間におけるH_numの極大値とH_limの差が閾値を上回った場合にのみ実施するようにしてもよい。
【００５８】
図３は、（Ａ）で説明した通信帯域の動的制御のステート（ａ）乃至（ｃ）及び（Ｂ）で説明したリセット処理（ｄ）の流れを説明する遷移図である。
【００５９】
図１及び図２に示した実施例により、ノードからタスク側にデータを受け渡す（受信）の場合の構成を説明したが、逆にタスクからノード側にデータを受け渡す（送信）の場合にも本発明を適用することが可能である。
【００６０】
図４は、本発明を適用した通信帯域制御装置（データコピーモード）の一実施例を示す機能ブロック図である。図５は、本発明を適用した通信帯域制御装置（データ送信モード）の一実施例を示す機能ブロック図である。
【００６１】
送信の場合は多対１の関係となり、受信の場合と逆の関係になる。タスクからの要求が同時に来ない（通信ドライバが多重動作しない）ことを考慮すると、通信ドライバ１０は送信要求の順に動作すればよいため、図１、図２で示した送信待ち列（９１，９２，９３，…９ｍ）は必要ないとも考えられる。
【００６２】
しかし、通信ドライバによる再送機能が備わっている場合、デバイスから送信終了通知されるまで送信用データをドライバ内で保留しておく必要があり、送信待ち列に相当する送信終了待ち列が１本必要になる。このように、送信の場合には待ち列の数が異なるだけで、受信の場合と同様の構成・動作となる。
【００６３】
図４に示すデータコピーモードにおいて、通信ドライバ１０は、タスク４１，４２，４３，…４ｍからの送信要求を受けた順に送信処理を行う。タスクからのデータを受け取る場合は、タスク−通信ドライバ間受け渡しにはＦＩＦＯ形式のデータバッファバッファ５０を使用する。以下、処理の流れを説明する。
【００６４】
タスクタスク４１，４２，４３，…４ｍからの送信要求割り込みで、タスクからのデータは優先度判定部６０に渡され、データに予め記入された情報に基づいて優先度の高いＨデータまたは優先度の低いＬデータに識別分類される。
【００６５】
このデータが優先度の高いＨデータであれば、Ｈデータ処理部７０においてＮ個のフリーバッファ列１０１，１０２，１０３，…１０Ｎから１個をデキューしたＨデータバッファ７１にコピーされ、送信終了待ち列１２０に１２０ａとしてエンキューされる。このときＨカウンタ７２のカウント値H_numが＋１カウントアップされる。
【００６６】
同様に、このデータが優先度の低いＬデータであれば、Ｌータ処理部８０においてＮ個のフリーバッファ列１０１，１０２，１０３，…１０Ｎから１個をデキューしたＬデータバッファ８１にコピーされ、送信終了待ち列１２０に１２０ａとしてエンキューされる。このときＬカウンタ８２のカウント値H_numが＋１カウントアップされる。
【００６７】
送信終了待ち列１２０にエンキューされたデータは、ＦＩＦＯ形式のデータバッファバッファ５０に追加され送信待ちとなる。データバッファバッファ５０のデータは先頭からデバイス３０に送信される。尚、送信終了待ち列１２０には、１２０ａ以外にデバイス３０側から送信終了通知を受けてない他のバッファが存在している場合がある。
【００６８】
図５に示すデータ送信モードにおいて、デバイス３０側からの１２０ａの送信終了通知が通信バッファ１０に返されて１２０ａに通知されると、このデータがＨデータである場合には、Ｈデータ処理部７０は１２０ａが使用していた空のバッファを送信終了待ち列１２０よりデキューし、さらにその空のバッファをフリーバッファ列の後尾に１０Ｎ＋１としてエンキューする。このとき、Ｈカウンタ７２のカウント値H_numが−１カウントダウンされる。
【００６９】
同様に、このデータがＬデータである場合には、Ｌデータ処理部８０は１２０ａが使用していた空のバッファを送信終了待ち列１２０よりデキューし、さらにその空のバッファをフリーバッファ列の後尾に１０Ｎ＋１としてエンキューする。このとき、Ｌカウンタ８２のカウント値H_numが−１カウントダウンされる。
【００７０】
本発明の主要部をなす、通信帯域の動的拡張とリセット処理を実行する通信帯域制御部２００及びリセット処理手段２０１の動作は、図１及び図２で説明した受信の場合と同様のアルゴリズムが適用される。
【００７１】
以上説明した本発明の実施例では、受け渡しを行うデータの優先度によって帯域を分割及び制限している。その他にも、同様の構成で下記に示す対象を元に帯域を制限することが可能である。夫々の手法には利点と欠点があるため、システムによって最適な手法を選択する必要がある。
【００７２】
（１）受け渡し対象タスク毎に帯域を分割する。この手法は、メモリ資源に余裕があり、夫々に必要な帯域を十分に確保できれば有効であるが、対象タスクが増えた場合を考慮する必要がある。
【００７３】
（２）受け渡し対象タスクを重要タスク／非重要タスクに分類し、帯域を分割する。この手法は、タスク毎の重要度（優先度）が明確に分類できる場合に有効であるが、対象タスクが増えた場合を考慮する必要がある。
【００７４】
（３）送信要求毎にタスクが使用する帯域を指定する。この手法は、送信要求の重要度によるきめ細かな帯域の指定が可能でるが、タスク側の改造が必要であり、受信要求の場合は、要求毎に帯域を指定することは不可能である。
【符号の説明】
【００７５】
１０  通信ドライバ
２１，２２，２３，…２ｎ  ノード
３０  デバイス
４１，４２，４３，…４ｍ  タスク
４１ａ  ローカルバッファ
５０  データバッファ
６０  優先度判定部
７０  Ｈデータ処理部
７１  Ｈデータバッファ
７２  Ｈカウンタ
８０  Ｌデータ処理部
８１  Ｌデータバッファ
８２  Ｌカウンタ
９１，９２，９３，…９ｍ  送信待ち列
１０１，１０２，１０３，…１０Ｎ  フリーバッファ列
１１０  閾値設定部
１２０  送信終了待ち列
２００  通信帯域制御部
２０１  リセット処理手段
【図１】
0005598714.tif 000003
【図２】
0005598714.tif 000004
【図３】
0005598714.tif 000005
【図４】
0005598714.tif 000006
【図５】
0005598714.tif 000007
【図６】
0005598714.tif 000008
【図７】
0005598714.tif 000009
【図８】
0005598714.tif 000010