JP2007194791A - データ転送装置 - Google Patents

データ転送装置 Download PDF

Info

Publication number
JP2007194791A
JP2007194791A JP2006009691A JP2006009691A JP2007194791A JP 2007194791 A JP2007194791 A JP 2007194791A JP 2006009691 A JP2006009691 A JP 2006009691A JP 2006009691 A JP2006009691 A JP 2006009691A JP 2007194791 A JP2007194791 A JP 2007194791A
Authority
JP
Japan
Prior art keywords
data
buffer memory
throughput
output
memory
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.)
Withdrawn
Application number
JP2006009691A
Other languages
English (en)
Inventor
Chikasuke Sato
慎祐 佐藤
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.)
Kawasaki Microelectronics Inc
Original Assignee
Kawasaki Microelectronics Inc
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 Kawasaki Microelectronics Inc filed Critical Kawasaki Microelectronics Inc
Priority to JP2006009691A priority Critical patent/JP2007194791A/ja
Publication of JP2007194791A publication Critical patent/JP2007194791A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Communication Control (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

【課題】バッファメモリの入力側のデータスループットが低く且つ変動し、出力側のデータスループットが高く且つ一定の場合、バッファアンダーランを防止する。
【解決手段】バッファメモリ1の入力側のデータスループットを測定して、そのデータスループットが低下したときに、バッファメモリ1からのデータ出力の読み出しを開始すべき使用メモリ容量(閾値)を増大させ、上昇したときに減少させる。
【選択図】図1

Description

本発明は、受信したデータを一旦バッファメモリに入力して蓄積してから、該バッファメモリから出力して送出する際、バッファメモリからデータが溢れるバッファオーバーフローやバッファメモリのデータが空になるバッファアンダーランが起こらないような対策を施したデータ転送装置に関するものである。
例えばデータ転送装置において、書込みと読み出しを同時に行うことのできるFIFO等のバッファメモリの出力側のデータスループット(転送速度)が入力側のそれよりも速く、且つある一定量のデータを連続して出力しなくてならない場合、通常では、バッファメモリにデータが当該一定量溜まってから出力することで、バッファアンダーランが発生しないようにしている。しかし、この方法では、バッファメモリに当該一定量のデータが完全に入力されてからデータ出力を開始するため、無駄な待ち時間が多くなる。
そこで、バッファメモリの読み出しが開始されるときの使用メモリ容量、つまり閾値を設定して、バッファメモリに蓄積されたデータがその閾値に達した時点でデータの出力を開始する方法がある。しかし、この方法では、入力側のデータスループットが変化するようなシステムにおいては、閾値が大きすぎるとやはり無駄な待ち時間が多くなって最適な効果が得られず、小さすぎるとバッファアンダーランが起こり、転送失敗が発生する。
一方、バッファメモリに蓄積される入力側のデータスループットを監視し、そのデータスループットが低いほどバッファメモリの内の割り当てメモリ容量を減少させる手法が提案されている(例えば、特許文献1参照。なお、この文献ではデータスループットを「パケット通信網のトラフィック状態」と表現)。この手法では、入力側のデータスループット低いときはバッファメモリの容量を減少させ、高いときは増大させることで、メモリ資源の有効利用を図ることができる。
特開2002−009821号公報
ところが、特許文献1の技術は、入力側のデータスループットが低いときはバッファメモリの容量を小さくするので、出力側のデータスループットが高いときにバッファアンダーランが発生する恐れがある。
本発明の目的は、入力側もしくは出力側の一方のデータスループットが高く、他方のデータスループットが低い場合にも、バッファオーバーフローやバッファアンダーランが起こらないようにしたデータ転送装置を提供することである。
上記課題を解決するために、請求項1にかかる発明は、受信したデータを一旦バッファメモリに入力して蓄積してから、該バッファメモリから出力して送出するデータ転送装置において、前記バッファメモリの使用メモリ容量が閾値を上回ったときに前記バッファメモリからのデータ出力を許可する出力制御装置と、前記バッファメモリの入力側のデータスループットを測定するスループット測定装置と、該スループット測定装置で測定した入力側のデータスループットが低くなると前記閾値を増大させ高くなると減少させる閾値設定装置と、を有することを特徴とする。
請求項2にかかる発明は、受信したデータを一旦バッファメモリに入力して蓄積してから、該バッファメモリから出力して送出するデータ転送装置において、前記バッファメモリの使用メモリ容量が閾値を下回ったときに前記バッファメモリへのデータ入力を許可する入力制御装置と、前記バッファメモリの出力側のデータスループットを測定するスループット測定装置と、該スループット測定装置で測定した出力側のデータスループットが低くなると前記閾値を減少させ高くなると増大させる閾値設定装置と、を有することを特徴とする。
請求項3にかかる発明は、メモリの一部の記憶容量をバッファメモリに割り当て、受信したデータを該バッファメモリに一旦入力して蓄積し、該バッファメモリに割り当てられた記憶容量の使用量が閾値を上回ったときに該バッファメモリからのデータ出力が許可されるデータ転送装置において、前記バッファメモリの入力側のデータスループットを測定するスループット測定装置と、該スループット測定装置で測定した入力側のデータスループットが低くなると前記バッファメモリに割り当てる記憶容量を増大させ高くなると減少させる容量制御装置と、を有することを特徴とする。
請求項4にかかる発明は、メモリの一部の記憶容量をバッファメモリに割り当て、受信したデータを該バッファメモリに一旦入力して蓄積し、該バッファメモリに割り当てられた記憶容量の使用量が閾値を下回ったときに該バッファメモリからのデータ出力が許可されるデータ転送装置において、前記バッファメモリの出力側のデータスループットを測定するスループット測定装置と、該スループット測定装置で測定した出力側のデータスループットが低くなると前記バッファメモリに割り当てる記憶容量を増大させ高くなると減少させる割当容量制御装置と、を有することを特徴とする。
請求項1又は3にかかる発明では、前記バッファメモリからのデータ出力を一定のデータスループットで行うことが望ましい。
請求項2又は4にかかる発明では、前記バッファメモリへのデータ入力を一定のデータスループットで行うことが望ましい。
また、請求項1乃至4にかかる発明では、前記スループット測定装置が、複数回の測定から得た平均データスループットを出力することが望ましい。
本発明によれば、バッファメモリの読み出しや書込みを開始する閾値、あるいはメモリ内でバッファメモリに割り当てる記憶容量を、出力側や入力側の「データスループットに応じて設定する」ので、バッファアンダーランやバッファオーバーフローの発生を効果的に回避できる。
[第1の実施例]
図1は第1の実施例のデータ転送装置の構成を示す図であり、バッファメモリの入力側のデータスループットが低く且つ変動し、出力側のデータスループットが高く且つ一定の場合に適用する実施例であり、バッファアンダーランの防止に好適な実施例である。
1は書込み/読み出しが同時に可能なFIFO等のバッファメモリ、2はバッファメモリ1の入力側のデータスループットを測定するスループット測定装置である。3は閾値設定装置であり、スループット測定装置2で測定されたデータスループットを表す一定時間当りのデータ量D1と、連続して転送しなくてはならないデータ量D2と、出力側のデータスループットを示す一定時間当りのデータ量D3とを取り込んで、バッファメモリ1の閾値A1(使用メモリ容量)を設定する。4は出力制御装置であり、閾値設定装置3で得られた閾値A1とバッファメモリ1のライトポインタで示される現在の使用メモリ容量A2とを比較して、A1<A2になったとき、バッファメモリ1の読み出し開始指令K1を出力する。
スループット測定装置2は、図2に示すように、一定時間内に受信するデータ量D1をカウントするデータカウンタ2aと該一定時間を設定するタイマーカウンタ2bから構成されている。このスループット測定装置2には、複数回測定したデータスループット(データ量D1)の平均値を出力させる機構を持たせても良い。平均値を採用することで閾値の急激な変化による転送エラーを防ぐことが出来る。
閾値設定装置3における閾値A1は、
A1=(D3−D1)×D2/D3 (1)
から求めることできる。D3>D1が前提である。例えば、PCIバスからバッファメモリ1に入力されるデータを、512byte(D2=512)のデータを連続転送しなければならないUSBパケットとして出力する場合を考える。USBへの転送速度が480Mbps(60Mbyte/sec)と高速で、それに比較してPCIバスからのデータレートが低速な場合を例とする。スループット測定装置2のカウント用のクロックCLKにバッファメモリ1の読み出しクロックを用い、タイマーカウンタ2bのカウント値を「256」(一定時間に相当)とする。出力側には1CLKあたり1byteが出力されるとすると256CLK中に出力されるデータ量は256byte(D3=256)である。入力側からは256CLK中に100byte(D1=100)入力されたとすると、閾値A1は(1)式から、
A1=(256−100)×512/256
=156×2=312byte
として求められる。つまりバッファメモリ1が312byte分だけ使用された(書き込まれた)時点で読み出しが開始する。これにより、バッファメモリ1のバッファアンダーランの発生を回避できる。実際はこの閾値A1にマージンを持たせてより大きくするとより安全である。
[第2の実施例]
図3は第2の実施例のデータ転送装置の構成を示す図であり、入力側のデータスループットが高く且つ一定であり、出力側のデータスループットが低く変動する場合に適用する実施例であり、バッファオーバーフローの防止に好適な実施例である。
11は書込み/読み出しが同時に可能なFIFO等のバッファメモリ、12はバッファメモリ11の出力側のデータスループットを測定するスループット測定装置(図2と同じ構成)である。13は閾値設定装置であり、スループット測定装置12で測定されたデータスループットを表す一定時間当りのデータ量D11と、連続して転送しなくてはならないデータ量D12と、入力側のデータスループットを示す一定時間当りのデータ量D13とを取り込んで、バッファメモリ11の閾値A11を設定する。14は入力制御装置であり、閾値設定装置13で得られた閾値A11とバッファメモリ11のリードポインタで示される使用メモリ容量A12(残データ量)とを比較して、A11>A12になったとき、バッファメモリ11に書込み開始指令K11を出力する。
この場合、入力側からD12の量のデータが連続して入力される間に、バッファメモリ11に蓄積されるデータ量は、次に(2)式で示されるA12だけ増大する。
A12=(D13−D11)×D12/D13 (2)
ここで、D13>D11が条件である。
従って、バッファメモリ11の全体の容量をA13とすると、閾値設定装置13は、次の式によって閾値A11を設定する。
A11=A13−A12 (3)
この場合にも、実際にはこの閾値A11にマージンを持たせてより小さくするとより安全である。
[第3の実施例]
図4は第3の実施例のデータ転送装置の構成を示す図であり、入力側のデータスループットが低く且つ変動し、出力側のデータスループットが高く且つ一定の場合に適用する実施例であり、バッファアンダーランの防止に好適な実施例である。
21は書込み/読み出しが同時に可能なメモリであり、その内の特定の記憶容量をデータ転送用のバッファメモリ21aとして割り当てたものである。22はバッファメモリ21の入力側のデータスループットを測定するスループット測定装置(図2と同じ構成)である。23は容量制御装置であり、スループット測定装置22で測定されたデータスループットを表す一定時間当りのデータ量D1と、連続して転送しなくてはならないデータ量D2と、送出側のデータスループットを示す一定時間当りのデータ量D3とを取り込んで、メモリ21内でバッファメモリ21a用として割り当てる記憶容量を設定する。
容量制御装置23は、例えば、第1の実施例の式(1)によって求めた値に一定の安全率をかけた容量を、バッファメモリ21aの記憶容量として割り当てる。容量制御装置23は、また、メモリ21の中に開始アドレスAD21と終了アドレスAD22とを設定し、この間の記憶容量をバッファメモリ21aとして割り当てるものであってもよい。24は出力制御装置である。本実施例において出力制御装置24は、第1の実施例における閾値設定装置3と出力制御装置4とを合わせたような機能を有する。例えば、容量制御装置23が設定した終了アドレスAD22を考慮して、閾値アドレスAD23を設定する。そして、この閾値アドレスAD23と、ライトポインタで示される現在の使用メモリアドレスAD24と比較し、AD23<AD24になったとき、バッファメモリ21aに読み出し開始命令K21を出力する。ここで例えば、終了アドレスAD22から一定値を減じることによって閾値アドレスAD23を設定することができる。この場合、実効的には、開始アドレスAD21から閾値アドレスAD23までの間の記憶容量を閾値とし、バッファメモリ21aに割り当てられた記憶容量の使用量がこの閾値を上回ったときに、読み出し開始命令K21が出されることになる。
本実施例では、図1の第1の実施例と同様に、出力データとして一定データ量D2を連続して出力しなければならず、且つ入力側のデータスループット(一定時間当りのデータ量D1)が出力側よりも低く且つ安定しない場合に、メモリ31に割り当てるデータ転送用のバッファメモリ21aの記憶容量を、入力側のデータスループットが低いときは大きくし、高いときは小さくすることで、バッファメモリ21aに割り当てる記憶容量を必要以上に大きくすることなく、バッファアンダーランの発生を回避できる。
[第4の実施例]
図5は第4の実施例のデータ転送装置の構成を示す図であり、入力側のデータスループットが高く且つ一定であり、出力側のデータスループットが低く変動する場合に適用する実施例であり、バッファオーバーフローの防止に好適な実施例である。
31は書込み/読み出しが同時に可能なメモリであり、その内の特定の記憶容量をデータ転送用のバッファメモリ31aとして割り当てたものである。32はバッファメモリ31の出力側のデータスループットを測定するスループット測定装置(図2と同じ構成)である。33は容量制御装置であり、スループット測定装置32で測定されたデータスループットを表す一定時間当りのデータ量D11と、連続して転送しなくてはならないデータ量D12と、入力側のデータスループットを示す一定時間当りのデータ量D13とを取り込んで、バッファメモリ31aにデータ転送用として割り当ててる記憶容量を設定する。
容量制御装置33は、例えば、第2の実施例の式(2)によって求めた値に一定の安全率をかけた容量を、バッファメモリ31aの記憶容量として割り当てる。容量制御装置33は、また、メモリ31の中に開始アドレスAD31と終了アドレスAD32とを設定し、この間の記憶容量をバッファメモリ31aとして割り当てるものであってもよい。34は入力制御装置である。本実施例において入力制御装置34は、第2の実施例における閾値設定装置13と入力制御装置14とを合わせたような機能を有する。例えば、容量制御装置33が設定した開始アドレスAD31を考慮して、閾値アドレスAD33を設定する。そして、この閾値アドレスとリードポインタで示される現在の使用メモリアドレスAD34と比較し、AD33>AD34になったとき、バッファメモリ31aに書き込み開始命令K31を出力する。ここで例えば、開始アドレスAD31に一定値を加算することによって閾値アドレスAD33を設定することができる。この場合、実効的には、開始アドレスAD31から閾値アドレスAD33までの間の記憶容量を閾値とし、バッファメモリ31aに割り当てられた記憶容量の使用量がこの閾値を下回ったときに、書込み開始命令K31が出されることになる。
本実施例では、図3の第2の実施例と同様に、入力データとして一定データ量D12を連続して入力しなければならず、且つ出力側のデータスループット(一定時間当りのデータ量D11)が入力側よりも低く且つ安定しない場合に、メモリ31に割り当てるデータ転送用のバッファメモリ31aの記憶容量を、出力側のデータスループットが低いときは大きくし、高いときは小さくすることで、バッファメモリ31aに割り当てられる記憶容量を必要以上に大きくすることなく、バッファオーバーフローの発生を回避できる。
[その他の実施例]
なお、第1の実施例ではバッファメモリ1の使用メモリ容量に対して閾値を設定し、使用メモリ容量がその閾値を上回ったときにデータ読み出しを開始させるようにしたが、バッファメモリ1の未使用メモリ容量に対して閾値を設定し、未使用メモリ容量がその閾値を下回ったときにデータ読み出しを開始させるようにしても良い。これらは、バッファメモリの記憶容量が一定の場合は等価である。第2〜第4の実施例についても同様である。
また、第1の実施例ではバッファメモリ1の使用メモリ容量が閾値と等しくなったときにはまだデータ読み出しを開始させず、閾値を上回ったときに開始させるようにした。しかし、閾値の設定を適切に行うことにより、閾値と等しくなったときにデータ読み出しを開始させるようにすることも可能である。第2〜第4の実施例についても同様である。
本発明の第1の実施例のデータ転送装置のブロック図である。 図1のスループット測定装置のブロック図である。 本発明の第2の実施例のデータ転送装置のブロック図である。 本発明の第3の実施例のデータ転送装置のブロック図である。 本発明の第4の実施例のデータ転送装置のブロック図である。
符号の説明
21,31:メモリ
1,11,21a,31a:バッファメモリ
2,12,22、32:スループット測定装置、2a:データカウンタ、2b:タイマカウンタ
3,13:閾値設定装置
23,33:割当容量制御装置
4,24:出力制御装置
14,34:入力制御装置

Claims (7)

  1. 受信したデータを一旦バッファメモリに入力して蓄積してから、該バッファメモリから出力して送出するデータ転送装置において、
    前記バッファメモリの使用メモリ容量が閾値を上回ったときに前記バッファメモリからのデータ出力を許可する出力制御装置と、前記バッファメモリの入力側のデータスループットを測定するスループット測定装置と、該スループット測定装置で測定した入力側のデータスループットが低くなると前記閾値を増大させ高くなると減少させる閾値設定装置と、を有することを特徴とするデータ転送装置。
  2. 受信したデータを一旦バッファメモリに入力して蓄積してから、該バッファメモリから出力して送出するデータ転送装置において、
    前記バッファメモリの使用メモリ容量が閾値を下回ったときに前記バッファメモリへのデータ入力を許可する入力制御装置と、前記バッファメモリの出力側のデータスループットを測定するスループット測定装置と、該スループット測定装置で測定した出力側のデータスループットが低くなると前記閾値を減少させ高くなると増大させる閾値設定装置と、を有することを特徴とするデータ転送装置。
  3. メモリの一部の記憶容量をバッファメモリに割り当て、受信したデータを該バッファメモリに一旦入力して蓄積し、該バッファメモリに割り当てられた記憶容量の使用量が閾値を上回ったときに該バッファメモリからのデータ出力が許可されるデータ転送装置において、
    前記バッファメモリの入力側のデータスループットを測定するスループット測定装置と、該スループット測定装置で測定した入力側のデータスループットが低くなると前記バッファメモリに割り当てる記憶容量を増大させ高くなると減少させる容量制御装置と、を有することを特徴とするデータ転送装置。
  4. メモリの一部の記憶容量をバッファメモリに割り当て、受信したデータを該バッファメモリに一旦入力して蓄積し、該バッファメモリに割り当てられた記憶容量の使用量が閾値を下回ったときに該バッファメモリからのデータ出力が許可されるデータ転送装置において、
    前記バッファメモリの出力側のデータスループットを測定するスループット測定装置と、該スループット測定装置で測定した出力側のデータスループットが低くなると前記バッファメモリに割り当てる記憶容量を増大させ高くなると減少させる割当容量制御装置と、を有することを特徴とするデータ転送装置。
  5. 前記バッファメモリからのデータ出力を一定のデータスループットで行うことを特徴とする請求項1又は3記載のデータ転送装置。
  6. 前記バッファメモリへのデータ入力を一定のデータスループットで行うことを特徴とする請求項2又は4記載のデータ転送装置。
  7. 前記スループット測定装置は、複数回の測定から得た平均データスループットを出力することを特徴とする請求項1、2,3,又は4記載のデータ転送装置。
JP2006009691A 2006-01-18 2006-01-18 データ転送装置 Withdrawn JP2007194791A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006009691A JP2007194791A (ja) 2006-01-18 2006-01-18 データ転送装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006009691A JP2007194791A (ja) 2006-01-18 2006-01-18 データ転送装置

Publications (1)

Publication Number Publication Date
JP2007194791A true JP2007194791A (ja) 2007-08-02

Family

ID=38450149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006009691A Withdrawn JP2007194791A (ja) 2006-01-18 2006-01-18 データ転送装置

Country Status (1)

Country Link
JP (1) JP2007194791A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016526325A (ja) * 2013-05-15 2016-09-01 クアルコム,インコーポレイテッド Wi−Fiシリアルバスのための媒体時間ベースのUSBフレームカウンタ同期

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016526325A (ja) * 2013-05-15 2016-09-01 クアルコム,インコーポレイテッド Wi−Fiシリアルバスのための媒体時間ベースのUSBフレームカウンタ同期

Similar Documents

Publication Publication Date Title
JP5166609B2 (ja) リソースの粒度がクレジットの粒度よりも大きいときのクレジット管理
JP2009540681A (ja) データ通信フロー制御の装置および方法
TWI637268B (zh) 主機裝置與資料傳輸速率控制方法
CN113254375A (zh) 一种数据传输方法、装置、电子设备和存储介质
US20210157649A1 (en) Adaptive consumer thread pool
US8335875B1 (en) System and method for performing isochronous data buffering
JP2007194791A (ja) データ転送装置
KR100707228B1 (ko) 데이터 송신 장치, 데이터 송수신 방법 및 데이터 송수신프로그램을 기록한 컴퓨터 판독가능한 기록매체
CN113992548B (zh) 一种带宽测速方法及装置
US7646714B2 (en) Program, method and apparatus for form output
JP4212508B2 (ja) パケット生成装置
JP5715458B2 (ja) 情報処理システム、調停方法
JP6502134B2 (ja) データ送信制御装置、データ送信制御方法、及び、プログラム
JP5764299B2 (ja) データ転送装置およびデータ転送方法
JP5359692B2 (ja) フレーム出力方法及びフレーム出力装置
JP4567586B2 (ja) 処理装置
CN114884909B (zh) Dma数据传输方法、dma数据传输装置及数据传输系统
US20090028171A1 (en) Fifo buffer with adaptive threshold level
US11842056B2 (en) System and method for allocating storage system resources during write throttling
JP4772587B2 (ja) 共通バッファ管理装置及び共通バッファ管理方法
WO2020230413A1 (ja) 情報処理装置
JP2009075942A (ja) Dmaコントローラ
JP2006311320A (ja) パケット転送方法および装置
CN114327253A (zh) 数据迁移方法、装置、电子设备及存储介质
JP2005182505A (ja) データ転送制御装置および画像形成装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20090407