説明

データ転送装置及びデータ転送方法

【課題】データ転送時の待ち時間を減らすこと。
【解決手段】データ転送装置20の分割サイズ算出部21は、各バッファ12a,12bの分割サイズBsa,Bsbを、互いに他のバッファのデータ蓄積量に基づいて算出する。例えば、バッファ12bのデータ蓄積量Dsbに基づいて、バッファ12bにしきい値Bib以上のデータが蓄積されるまでのデータ蓄積時間を予測し、そのデータ蓄積時間に応じて、バッファ12aから転送するデータの分割サイズBsaを算出する。分割転送制御部23a,23bは、分割サイズBsa,Bsbとデータ蓄積量Dsa,Dsbに応じて、各バッファ12a,12bに対する転送指示Tba,Tbbを発行する。転送制御部25は、転送指示Tbs(転送指示Tba,Tbb)に応じて、各バッファ12a,12bから装置14にデータを転送する。

【発明の詳細な説明】
【技術分野】
【0001】
データ転送装置及びデータ転送方法に関する。
【背景技術】
【0002】
従来、データ転送装置は、複数のバッファのそれぞれに蓄積されたデータを例えば1つの転送先の装置に転送する(例えば、特許文献1参照)。複数のバッファは、1つのデータバスに接続されている。各バッファには、それぞれに接続された装置から送信されるデータが格納される。データ転送装置は、データ転送を行う際、データバスにデータを送信する送信許可(占有権)を得るためにリクエスト信号を調停部に送信する。送信許可を得たデータ転送装置は、送信許可に対応するバッファに格納されたデータを、データバスを介して転送先に送信する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平4−37941号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記のようなデータ転送方法では、送信許可を得たバッファのデータが全て転送された後に、他のバッファ(他の装置)に送信許可が与えられる。データサイズが大きいバッファはデータバスを長時間占有するため、他のバッファのデータ転送が長時間待たされる。
【0005】
このデータ転送装置で、共有のデータバスに接続された各バッファのデータ転送時の待ち時間を減らすことを目的とする。
【課題を解決するための手段】
【0006】
本発明の一観点によれば、複数の前記バッファのデータ蓄積量に基づいて分割サイズをそれぞれ算出する分割サイズ算出部と、複数の前記バッファに対応し、前記分割サイズと前記データ蓄積量に応じて対応するバッファの転送指示を出力する複数の分割転送制御部と、前記転送指示に応じて前記バッファから前記転送先にデータを転送する転送制御部と、を含む。
【発明の効果】
【0007】
本発明の一観点によれば、データ転送時の待ち時間を減らすことができる。
【図面の簡単な説明】
【0008】
【図1】データ転送システムの概略ブロック図である。
【図2】分割サイズ算出部の概略ブロック図である。
【図3】分割転送制御部の処理フローチャートである。
【図4】各バッファのデータ蓄積量と転送タイミングを示す説明図である。
【図5】各バッファのデータ蓄積量と転送タイミングを示す説明図である。
【図6】各バッファのデータ蓄積量と転送タイミングを示す説明図である。
【図7】別例におけるデータ転送システムの概略ブロック図である。
【図8】別例における分割サイズ算出部の概略ブロック図である。
【発明を実施するための形態】
【0009】
以下、一実施形態を図1〜図4に従って説明する。
図1に示すように、複数(図1において2つ)の通信装置11a,11bは、バッファ12a,12bを介してそれぞれデータバス13と接続され、そのデータバス13はデータ転送装置20を介して転送先である目的の装置14に接続されている。
【0010】
各通信装置11a,11bからのデータはバッファ12a,12bにそれぞれ転送され、このバッファ12a,12b内のデータの転送を制御するデータ転送装置20の通信許可を得て、目的の装置14に対してデータバス13を介したデータ転送が可能とされる。各バッファ12a,12bは、例えばライトポインタとリードポインタとによりデータの書き込みとデータの読み出しが制御されるFIFO(First In First Out)メモリである。各バッファ12a,12bは、例えばライトポインタとリードポインタとに基づいて算出したデータ蓄積量Dsa,Dsbをそれぞれ出力する。
【0011】
分割サイズ算出部21には、各バッファ12a,12bからデータ蓄積量Dsa,Dsbが供給される。また、分割サイズ算出部21には、制御部22から各種情報が供給される。
【0012】
制御部22には、バッファ12aに対応する転送レートRtaと、バッファ12bに対応する転送レートRtbと、データバス13に対応する転送レートRt0とが記憶されている。各転送レートRta,Rtb,Rt0は、例えばデータ転送に用いられるクロック信号の周波数に応じて設定されている。また、制御部22には、バッファ12aに対応するしきい値Biaと、バッファ12bに対応するしきい値Bibが記憶されている。制御部22は、各転送レートRta,Rtb,Rt0と各しきい値Bia,Bibを出力する。
【0013】
分割サイズ算出部21は、各転送レートRta,Rtb,Rt0と、各データ蓄積量Dsa,Dsbと、各しきい値Bia,Bibに基づいて、各バッファ12a,12bに対応する分割サイズBsa,Bsbを算出する。詳しくは、分割サイズ算出部21は、バッファ12bに対応する転送レートRtb,データ蓄積量Dsb,しきい値Bibと、データバス13に対応する転送レートRt0とに基づいて、バッファ12aに対応する分割サイズBsaを算出する。また、分割サイズ算出部21は、バッファ12aに対応する転送レートRta,データ蓄積量Dsa,しきい値Biaと、データバス13に対応する転送レートRt0とに基づいて、バッファ12bに対応する分割サイズBsbを算出する。
【0014】
バッファ12aに対応する分割サイズBsaは、分割転送制御部23aに供給される。バッファ12bに対応する分割サイズBsbは、分割転送制御部23bに供給される。制御部22は任意のタイミングで分割転送制御部23a,23bに対して転送指示Tsa,Tsbを出力する。
【0015】
分割転送制御部23aは、制御部22から出力される転送指示Tsaと、バッファ12aから出力されるデータ蓄積量Dsaと、分割サイズ算出部21から出力される分割サイズBsaとに基づくタイミングで、調停部24に対して分割サイズによる転送指示Tbaを出力する。転送指示Tbaは、対応するバッファ12aから転送先の装置14に転送するデータ量を含む。
【0016】
同様に、分割転送制御部23bは、制御部22から出力される転送指示Tsbと、バッファ12bから出力されるデータ蓄積量Dsbと、分割サイズ算出部21から出力される分割サイズBsbとに基づくタイミングで、調停部24に対して分割サイズによる転送指示Tbbを出力する。転送指示Tbbは、対応するバッファ12bから転送先の装置14に転送するデータ量を含む。
【0017】
調停部24は、分割転送制御部23a,23bから出力される転送指示Tba,Tbbを調停し、調停結果に応じた転送指示Tbsを転送制御部25に出力する。転送指示Tbsは、転送対象とするバッファを選択するための選択情報と、その選択したバッファから転送するデータの量を示す転送サイズ情報を含む。
【0018】
転送制御部25は、調停部24からの転送指示Tbsに従って、転送元のバッファから転送先の装置14へ、指定されたサイズのデータを転送する。即ち、転送制御部25は、転送指示Tbsに含まれる選択情報に従ってバッファ12a,12bのうちの何れか1つを転送元として選択する。そして、転送制御部25は、選択したバッファから転送先の装置14へ、転送指示Tbsに含まれる転送サイズのデータを転送する。
【0019】
次に、分割サイズ算出部21について詳細に説明する。
図2に示すように、分割サイズ算出部21は、バッファ12aに対応する時間予測部31aと、バッファ12bに対応する時間予測部31bとを備えている。
【0020】
時間予測部31aと時間予測部31bは、互いに対応するバッファ以外のバッファのデータ格納状況に応じて、対応するバッファ
時間予測部31aと時間予測部31bは、互いに対応するバッファ以外のバッファに対するデータ蓄積時間を算出する。即ち、時間予測部31aは、バッファ12bに所定量(しきい値Bib)のデータを蓄積するまでに要する時間(データ蓄積時間)Tpbを算出する。時間予測部31bは、バッファ12aに所定量(しきい値Bia)のデータを蓄積するまでに要する時間(データ蓄積時間)Tpbを算出する。
【0021】
詳述すると、時間予測部31aには、図1に示すバッファ12bに対応する情報が入力される。バッファ12bに対応する情報は、データ蓄積量Dsbと、転送レートRtbと、しきい値Bibを含む。時間予測部31aは、バッファ12bのデータ蓄積量Dsbが、しきい値Bib以下の場合、次の転送要求が発行されるまでのデータ蓄積時間Tpbを、次式、
Tpb=Rtb/(Bib−Dsb)
により算出する。なお、時間予測部31aは、バッファ12bのデータ蓄積量Dsbが分割サイズのしきい値Bib以上の場合は、次の転送要求が発行されるまでの時間を「0(ゼロ)」として計算、つまり転送可能状態とする。
【0022】
バッファ12bは、所定量以上のデータを蓄積すると、データの転送が可能となる。つまり、バッファ12bに対する転送要求の発行が可能となる。即ち、時間予測部31aは、入力される各種情報に基づいて、バッファ12bに対して次の転送要求が発行可能となるまでの予測時間を算出する。
【0023】
同様に、時間予測部31bは、入力される各種情報に基づいて、バッファ12aに対して次の転送要求が発行可能となるまでの予測時間を算出する。即ち、時間予測部31bには、図1に示すバッファ12aに対応する情報、つまりデータ蓄積量Dsa,転送レートRta,しきい値Biaが入力される。時間予測部31bは、バッファ12aに対応する情報(Dsa,Bia,Rta)に基づいて、次の転送要求が発行されるまでのデータ蓄積時間Tpaを、次式、
Tpa=Rta/(Bia−Dsa)
により算出する。そして、時間予測部31bは、バッファ12aのデータ蓄積量Dsaがしきい値Bia以上の場合は、次の転送要求が発行されるまでの時間を「0(ゼロ)」として計算、つまり転送可能状態とする。
【0024】
サイズ変換部32a,32bは、時間予測部31a,31bにて算出されたデータ蓄積時間Tpa,Tpbを、対応するバッファ12a,12bから転送するデータの予測サイズPsa,Psbに変換する。サイズ変換部32aは、バッファ12bに対応するデータ蓄積時間Tpbを、バッファ12aに対応する予測サイズPsaに変換する。サイズ変換部32bは、バッファ12aに対応するデータ蓄積時間Tpaを、バッファ12bに対応する予測サイズPsbに変換する。
【0025】
バッファ12bにデータを蓄積している期間、バッファ12aはデータバス13を占有することができる。その占有期間において転送可能なデータ量は、データを転送する期間と、バッファ12aからデータを転送する速度と、の積により求められる。バッファ12aからデータを転送する速度は、そのバッファ12aと転送先の装置14との間の転送レート、即ちデータバス13の転送レートRt0に対応する。従って、サイズ変換部32aは、時間予測部31aによって算出されたバッファ12bに対応するデータ蓄積時間Tpbに、データバス13の転送レートRt0を乗じて、バッファ12aに対応する予測サイズPsaを算出する。
【0026】
同様に、バッファ12aにデータを蓄積している期間、バッファ12bは、データバス13を占有でき、その占有期間に転送可能なデータ量は、占有期間とデータバス13の転送レートRt0の積により求められる。従って、サイズ変換部32bは、時間予測部31bによって算出されたバッファ12aに対応するデータ蓄積時間Tpaに、データバス13の転送レートRt0を乗じて、バッファ12bに対応する予測サイズPsbを算出する。
【0027】
クリップ処理部33aには、サイズ変換部32aにより算出されたバッファ12aに対応する予測サイズPsaが供給される。また、クリップ処理部33aには、レジスタ34から分割サイズの上限値Bamx及び下限値Bamnが供給される。分割サイズの上限値Bamx及び下限値Bamnは、例えば、バッファの数、転送に係るオーバーヘッド、等に応じて設定され、レジスタ34に格納されている。
【0028】
1つのバッファがデータバスを占有しているとき、他のバッファは転送を行うことができない。全てのバッファにおける転送量を互いに同じ値とすると、単位時間における各バッファに対する転送許可の回数は、バッファの数に反比例する。従って、バッファの数が多いほど、各バッファが転送可能となるまでの待ち時間は、バッファの数に転送するデータ量を乗じた結果に対応する。このため、転送するデータ量の上限値を設定することは、待ち時間の増大を抑制する。
【0029】
また、1回のデータ転送に際し、転送元の情報と、転送するデータ量を含むヘッダ情報を、転送先の装置14に送信する必要がある。そして、1回のデータ転送により転送するデータ量に係わらず、一定サイズのヘッダ情報を必要とする。このため、分割サイズを小さくして転送回数が多くなると、その分、ヘッダ情報を送信する回数が多くなり、実効的なデータ転送量、すなわち、転送期間(ヘッダ情報及びデータを転送する期間)に対するデータ転送期間の割合が少なくなる。このため、転送するデータ量の下限値を設定することは、転送効率の低下を抑制する。
【0030】
クリップ処理部33aは、予測サイズPsaが分割サイズの上限値Bamx以下且つ下限値Bamn以上の場合、予測サイズPsaと等しい分割サイズBsaを出力する。一方、クリップ処理部33aは、予測サイズPsaが下限値Bamn未満の場合、下限値Bamnと等しい分割サイズBsaを出力する。また、クリップ処理部33aは、予測サイズPsaが上限値Bamxより大きい場合,上限値Bamxと等しい分割サイズBsaを出力する。
【0031】
同様に、クリップ処理部33bは、予測サイズPsbが分割サイズの上限値Bbmx以下且つ下限値Bbmn以上の場合、予測サイズPsbと等しい分割サイズBsbを出力する。一方、クリップ処理部33bは、予測サイズPsbが下限値Bbmn未満の場合、下限値Bbmnと等しい分割サイズBsbを出力する。また、クリップ処理部33bは、予測サイズPsbが上限値Bbmxより大きい場合,上限値Bbmxと等しい分割サイズBsbを出力する。
【0032】
次に、分割転送制御部23a,23bが実行する処理(分割転送制御)の一例を、図3に従って説明する。尚、以下に説明する部材は、図1,図2を参照されたい。
尚、分割転送制御部23aは、バッファ12aに対する転送制御を行い、分割転送制御部23bは、バッファ12bに対する転送制御を行う。そして、分割転送制御部23a,23bは、対象とするバッファが異なり、実行する処理は互いに同じである。従って、図3に示すフローチャートの説明において、分割転送制御部23aについて説明し、分割転送制御部23bに対する説明を省略する。
【0033】
分割転送制御部23aは、制御部22からの転送指示Tsaとともに分割サイズ算出部21からの分割サイズBsaの情報を受けて動作を開始する。
先ず、分割転送制御部23aは、以前に転送していたことを考慮して、転送済みデータ数Tzsをクリア(=0)する(ステップS10)。
【0034】
次いで、分割転送制御部23aは、転送データ数Tdsと転送済みデータ数Tzsとの差と、分割サイズBsaとの大小関係を判定する(ステップS11:YES)。分割転送制御部23aは、転送データ数Tdsと転送済みデータ数Tzsとの差が分割サイズBsaより大きけい場合(ステップS11:YES)、分割サイズBsaを転送サイズJTsに設定する(ステップS12)。一方、分割転送制御部23aは、転送データ数Tdsと転送済みデータ数Tzsとの差が分割サイズBsa以下の場合(ステップS11:NO)、転送データ数Tdsと転送済みデータ数Tzsとの差の値を転送サイズJTsに設定する(ステップS13)。
【0035】
次いで、分割転送制御部23aは、バッファ12aのデータ蓄積量Dsaを監視し、バッファ12aに分割サイズBsa分のデータがあるか否かを判定する(ステップS14)。分割転送制御部23aは、バッファ12aに分割サイズBsa分のデータが蓄積されていないと判定した場合(ステップS14:NO)、次のステップに移行しない。分割転送制御部23aは、バッファ12aに分割サイズBsa分のデータが蓄積されていると判定した場合(ステップS14:YES)、転送開始要求Reqを調停部24に対して出力する(ステップS15)。
【0036】
分割転送制御部23aは、調停部24によって転送開始要求Reqが受け付けられたか否かを判定する(ステップS16)。調停部24は、転送開始要求Reqを受け付けると、転送開始要求Reqの送信元に例えば転送許可信号を送信する。
【0037】
分割転送制御部23aは、転送許可信号を受け取らない場合(ステップS16:NO)、次のステップに移行しない。一方、分割転送制御部23aは、転送許可信号を受け取ると転送開始要求Reqが受け付けられたと判定し(ステップS16:YES)、転送指示Tbaを転送制御部25に対して発行する。即ち、分割転送制御部23aは、転送設定を転送制御部25に対して発行する(ステップS17)。転送設定は、テータを転送する転送元と転送先を特定するための情報、転送するデータ量を含む。分割転送制御部23aは、転送元としてバッファ12aを示す情報、転送先として装置14を示す情報、転送サイズJTsを転送制御部25に送信する。
【0038】
次いで、分割転送制御部23aは、転送開始指示を転送制御部25に対して発行する(ステップS18)。
転送制御部25は、転送開始指示を受け取ると、転送設定に応じて、データを転送する。この場合、転送制御部25は、バッファ12aから出力されるデータを、装置14に出力する。そして、転送制御部25は、転送サイズJTsのデータの転送を完了すると、転送完了通知を発行する。
【0039】
次いで、分割転送制御部23aは、転送完了通知があるか否かを判定する(ステップS19)。分割転送制御部23aは、転送完了通知がない場合(ステップS19:No)、次のステップに移行しない。一方、分割転送制御部23aは、転送完了通知を受け取ると(ステップS19:YES)、転送済みデータ数Tzsに今回の転送サイズJTs(分割サイズBsa)を積算する(ステップS20)。
【0040】
次いで、分割転送制御部23aは、転送データ数Tds分の転送が完了したか否かを判定する(ステップS21)。分割転送制御部23aは、転送済みデータ数Tzsが転送データ数Tdsより小さい場合に転送データ数Tds分の転送を完了していないと判定し(ステップS21:NO)、ステップS11に移行する。つまり、転送データ数Tds分のデータ転送を完了するまで、ステップS11からステップS20までの各処理を繰り返し実行する。そして、分割転送制御部23aは、転送済みデータ数Tzsが転送データ数Tdsと等しくなると、転送データ数Tds分の転送が完了したと判定し(ステップS21:NO)、割転送制御処理を終了する。
【0041】
次に、データ転送装置20の動作例を説明する。
(第1の動作例)
図4に示すように、時刻t0において、バッファ12aには転送すべき全てのデータが蓄積され、このデータ蓄積量は、しきい値Biaより多い。一方、バッファ12bにはしきい値Bibより少ないデータが蓄積されている。
【0042】
分割サイズ算出部21は、両バッファ12a,12bのデータ蓄積量Dsa,Dsbに基づいて分割サイズBsa,Bsbをそれぞれ算出する。分割転送制御部23aは、データ蓄積量Dsaがしきい値Biaより大きいため、転送指示Tbaを出力する。一方、分割転送制御部23bは、データ蓄積量Dsbはしきい値Bibより小さいため、転送指示Tbbを出力しない。その結果、調停部24は、分割サイズBsaを含む転送指示Tbsを転送制御部25に出力する。
【0043】
転送制御部25は、転送指示Tbsに従って、バッファ12aに対し、転送サイズJTsとする転送を開始する。転送制御部25は、先ずバッファ12aに対応するヘッダを送信し、バッファ12aから読み出したデータを装置14に転送する。バッファ12aからデータが転送されるに従って、バッファ12aのデータ蓄積量Dsaは減少する。
【0044】
このバッファ12aに対するデータ転送(図中、「A1」と表記)は、バッファ12bのデータ蓄積量Dsbがしきい値Bib付近となる時刻t1において完了する。
次いで、時刻t1において、分割サイズ算出部21は、両バッファ12a,12bのデータ蓄積量Dsa,Dsbに基づいて分割サイズBsa,Bsbをそれぞれ算出する。分割転送制御部23a,23bは、転送指示Tba,Tbbを出力する。調停部24は、調停結果により、分割サイズBsbを転送サイズJTsとする転送指示Tbsを転送制御部25に出力する。転送制御部25は、転送指示Tbsに従って、バッファ12bに対するデータ転送を開始する。即ち、転送制御部25は、バッファ12bに対応するヘッダを送信し、バッファ12bから読み出したデータを装置14に転送する。このバッファ12bに対するデータ転送(図中、「B1」と表記)は、転送サイズJTs、即ち算出された分割サイズBsbのデータを転送して終了する。
【0045】
次いで、時刻t2において、分割サイズ算出部21は、両バッファ12a,12bのデータ蓄積量Dsa,Dsbに基づいて分割サイズBsa,Bsbをそれぞれ算出する。このとき、バッファ12bにおけるデータ蓄積量Dsbは、時刻t0におけるデータ蓄積量Dsbより少ないため、分割サイズ算出部21は、同時刻t0における分割サイズBsaよりも大きな値の分割サイズBsaを算出する。そして、バッファ12aに対し、転送サイズJTs(分割サイズBsa)の転送が開始される。このバッファ12aに対するデータ転送(図中、「A2」と表記)は、バッファ12bのデータ蓄積量Dsbがしきい値Bib付近となる時刻t3において完了する。
【0046】
次いで、時刻t3において、時刻t1と同様に、調停部24は、分割サイズBsbを含む転送指示Tbbに応じて転送指示Tbsを出力し、転送制御部25はその転送指示Tbsに従って、バッファ12bに対するデータ転送(図中、「B2」と表記)を開始する。
【0047】
このように、バッファ12bのデータ蓄積量Dsbに基づいて、バッファ12bにしきい値Bib以上のデータが蓄積されるまでのデータ蓄積時間Tpbを予測し、そのデータ蓄積時間Tpbに応じて、バッファ12aから転送するデータの分割サイズBsaを算出する。従って、バッファ12aに対するデータ転送が終了したときに、バッファ12bに対するデータ転送が可能な状態になっているため、そのバッファ12bに対するデータ転送を開始することができる。このため、バッファ12bにおけるデータ転送の待ち時間を短縮することができる。
【0048】
また、バッファ12bのデータ蓄積量Dsbに基づいて、バッファ12bにしきい値Bib以上のデータが蓄積されるまでのデータ蓄積時間Tpbを予測し、そのデータ蓄積時間Tpbに応じて、バッファ12aから転送するデータの分割サイズBsaを算出する。バッファ12bのデータ蓄積量Dsbが少ないほど、分割サイズBsaは大きくなる。従って、1つのヘッダによりバッファ12aのデータをまとめて転送することができ、データを所定サイズに分割して複数回に分けて転送する場合と比べ、データ転送におけるオーバーヘッドを少なくすることができる。
【0049】
(第2の動作例)
この動作例において、装置11bからバッファ12bにデータを転送する転送速度(転送レート)が、設定された転送レートRtbよりも低い。図5において、実線はバッファ12bにおけるデータ蓄積量Dsbを示し、一点鎖線は、設定された転送レートRtbに基づくデータ蓄積量を示す。
【0050】
図5に示すように、時刻t0において、転送制御部25は、上記の動作例と同様に、バッファ12aに対するデータ転送(図中、「A1」と表記)を開始する。
バッファ12aに対するデータ転送A1が終了した時刻t1において、バッファ12bには、分割しきい値Bib分のデータが蓄積されていない。従って、時刻t1では、分割転送制御部23bは、転送指示Tbbを出力しない。
【0051】
一方、分割転送制御部23aは、転送指示Tbaを出力する。時刻t0におけるデータ蓄積量Dsbよりも、時刻t1におけるデータ蓄積量Dsbが大きい。従って、時刻t1における分割サイズBsaは、時刻t0における分割サイズBsaよりも小さくなる。従って、時刻t1において算出された分割サイズBsaに基づくデータ転送A2は、時刻t0において算出された分割サイズBsaに基づくデータ転送A0よりも短い期間で終了する。
【0052】
バッファ12aに対するデータ転送A2が終了した時刻t2において、バッファ12bには、分割しきい値Bib分のデータが蓄積されていない。従って、時刻t1では、分割転送制御部23bは、転送指示Tbbを出力しない。そして、時刻t1と同様に、分割転送制御部23aは、その時刻t1における分割サイズBsaよりも小さな分割サイズBsaを含む転送指示Tbaを出力する。これにより、転送制御部25は、バッファ12aに対応するデータ転送A3を実施する。
【0053】
時刻t3において、バッファ12bのデータ蓄積量Dsbは、しきい値Bibよりも多くなる。すると、バッファ12aに対するデータ転送A3が終了した時刻t4において、分割転送制御部23a,23bは、転送指示Tba,Tbbをそれぞれ出力し、調停部24は、調停結果に基づいて、バッファ12bに対応する転送指示Tbbに応じた転送指示Tbsを出力する。これにより、転送制御部25は、バッファ12bに対応するデータ転送B1を実施する。
【0054】
このように、装置11bからバッファ12bにデータを転送する転送速度が、制御部22に設定された転送レートRtbよりも遅い場合、他のバッファ12aのデータ転送が繰り返し実施される。従って、例えば、交互にバッファ12a,12bに対するデータ転送を実施する場合と比べ、バッファ12aのデータ転送が待たされることがなく、バッファ12aのデータ転送に係る時間を短縮することができる。
【0055】
(第3の動作例)
この動作例において、装置11bからバッファ12bにデータを転送する転送速度(転送レート)が、設定された転送レートRtbよりも高い。図6において、実線はバッファ12bにおけるデータ蓄積量Dsbを示し、一点鎖線は、設定された転送レートRtbに基づくデータ蓄積量を示す。従って、そして、バッファ12aに対する転送(「A1」)が終了した時刻t2において、バッファ12bには、しきい値Bib以上の量のデータが蓄積されている。
【0056】
図6に示すように、時刻t0において、図4に示す動作例と同様に、転送制御部25は、バッファ12aに対するデータ転送(図中、「A1」と表記)を開始する。
バッファ12aに対するデータ転送A1が終了した時刻t1において、バッファ12bには、分割しきい値Bib以上のデータが蓄積されている。従って、時刻t1において、分割転送制御部23a,23bは、転送指示Tba,Tbbをそれぞれ出力し、調停部24は、調停結果に基づいて、バッファ12bに対応する転送指示Tbbに応じた転送指示Tbsを出力する。これにより、転送制御部25は、バッファ12bに対応するデータ転送B1を実施する。
【0057】
バッファ12bに対応するデータ転送B1が終了した時刻t2において、分割サイズ算出部21は、両バッファ12a,12bのデータ蓄積量Dsa,Dsbに基づいて分割サイズBsa,Bsbをそれぞれ算出する。このとき、バッファ12bにおけるデータ蓄積量Dsbは、時刻t0におけるデータ蓄積量Dsbと同程度である。また、この時のデータ蓄積量Dsbは、図4に示す時刻t2におけるデータ蓄積量Dsbよりも多い。従って、分割サイズ算出部21は、図4に示す時刻t2における分割サイズBsaよりも小さな値の分割サイズBsaを算出する。そして、転送制御部25は、バッファ12aに対し、転送サイズJTs(分割サイズBsa)のデータ転送A2を開始する。
【0058】
データ転送A1と同様に、データ転送A2が終了した時刻t3において、バッファ12bには、分割しきい値Bib以上のデータが蓄積されている。従って、時刻t1において、分割転送制御部23a,23bは、転送指示Tba,Tbbをそれぞれ出力し、調停部24は、調停結果に基づいて、バッファ12bに対応する転送指示Tbbに応じた転送指示Tbsを出力する。これにより、転送制御部25は、バッファ12bに対応するデータ転送B2を実施する。
【0059】
このように、装置11bからバッファ12bにデータを転送する転送速度が、制御部22に設定された転送レートRtbよりも早い場合、そのバッファ12bにおける分割サイズBsb分のデータ転送が終了したときのデータ蓄積量Dsbは、転送速度が転送レートRtb以下の場合と比べ多い。従って、バッファ12bにしきい値Bib分のデータが蓄積されるまでの時間が短く、バッファ12aに対する分割サイズBsaが小さくなる。従って、バッファ12bにおけるデータ転送の待ち時間を短縮することができる。
【0060】
また、第2及び第3の動作例のように、分割サイズ算出部21は、各バッファ12a,12bのデータ蓄積量Dsa,Dsbに応じて、各バッファ12a,12bの分割サイズBsa,Bsbを算出する。データ蓄積量Dsa,Dsbは、バッファ12a,12bにデータを格納する転送における転送速度に対応する。従って、分割サイズ算出部21は、実際の転送速度に応じて、各バッファ12a,12bの分割サイズBsa,Bsbを算出する。このため、例えば機種毎のばらつきや設定誤差などのように、設定値(転送レートRta,Rtb)と転送速度が異なる場合であっても、その転送速度に応じて各バッファ12a,12bの分割サイズBsa,Bsbを算出することで、データ転送にかかる待ち時間の短縮を図ることができる。
【0061】
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1)分割サイズ算出部21は、各バッファ12a,12bの分割サイズBsa,Bsbを、互いに他のバッファのデータ蓄積量に基づいて算出する。例えば、バッファ12bのデータ蓄積量Dsbに基づいて、バッファ12bにしきい値Bib以上のデータが蓄積されるまでのデータ蓄積時間Tpbを予測し、そのデータ蓄積時間Tpbに応じて、バッファ12aから転送するデータの分割サイズBsaを算出する。従って、バッファ12aに対するデータ転送が終了したときに、バッファ12bに対するデータ転送が可能な状態になっているため、そのバッファ12bに対するデータ転送を開始することができる。このため、バッファ12bにおけるデータ転送の待ち時間を短縮することができる。
【0062】
(2)バッファ12bのデータ蓄積量Dsbに基づいて、バッファ12bにしきい値Bib以上のデータが蓄積されるまでのデータ蓄積時間Tpbを予測し、そのデータ蓄積時間Tpbに応じて、バッファ12aから転送するデータの分割サイズBsaを算出する。バッファ12bのデータ蓄積量Dsbが少ないほど、分割サイズBsaは大きくなる。従って、1つのヘッダによりバッファ12aのデータをまとめて転送することができ、データを所定サイズに分割して複数回に分けて転送する場合と比べ、データ転送におけるオーバーヘッドを少なくすることができる。
【0063】
(3)装置11bからバッファ12bにデータを転送する転送速度が、制御部22に設定された転送レートRtbよりも遅い場合、他のバッファ12aのデータ転送が繰り返し実施される。従って、例えば、交互にバッファ12a,12bに対するデータ転送を実施する場合と比べ、バッファ12aのデータ転送が待たされることがなく、バッファ12aのデータ転送に係る時間を短縮することができる。
【0064】
(4)装置11bからバッファ12bにデータを転送する転送速度が、制御部22に設定された転送レートRtbよりも早い場合、そのバッファ12bにおける分割サイズBsb分のデータ転送が終了したときのデータ蓄積量Dsbは、転送速度が転送レートRtb以下の場合と比べ多い。従って、バッファ12bにしきい値Bib分のデータが蓄積されるまでの時間が短く、バッファ12aに対する分割サイズBsaが小さくなる。従って、バッファ12bにおけるデータ転送の待ち時間を短縮することができる。
【0065】
(5)分割サイズ算出部21は、各バッファ12a,12bのデータ蓄積量Dsa,Dsbに応じて、各バッファ12a,12bの分割サイズBsa,Bsbを算出する。データ蓄積量Dsa,Dsbは、バッファ12a,12bにデータを格納する転送における転送速度に対応する。従って、分割サイズ算出部21は、実際の転送速度に応じて、各バッファ12a,12bの分割サイズBsa,Bsbを算出する。このため、例えば機種毎のばらつきや設定誤差などのように、設定値(転送レートRta,Rtb)と転送速度が異なる場合であっても、その転送速度に応じて各バッファ12a,12bの分割サイズBsa,Bsbを算出することで、データ転送にかかる待ち時間の短縮を図ることができる。
【0066】
尚、上記各実施形態は、以下の態様で実施してもよい。
・上記実施形態は、2つの装置11a,11bから1つの装置14にデータを転送するデータ転送装置20に具体化したが、3つ以上の装置から1つの装置にデータを転送するデータ転送装置に具体化してもよい。例えば、図7に示すように、3つの装置11a,11b,11cに対し、データバス13に3つのバッファ12a,12b,12cが接続される。データ転送装置50は、バッファ12a〜12cの数に応じて構成される。即ち、データ転送装置50は、各バッファ12a.12b.12cのデータ蓄積量Dsa,Dsb,Dscに応じて分割サイズBsa,Bsb,Bscを求める分割サイズ算出部51を備え、分割サイズBsa,Bsb,Bscは分割転送制御部53a,53b,53cにそれぞれ供給される。
【0067】
制御部52は、各バッファ12a,12b,12cにそれぞれ対応するしきい値Bia,Bib,Bic及び転送レートRta,Rtb,Rtcと、バス13の転送レートRt0を分割サイズ算出部51に供給する。また、制御部52は、転送指示Tsa,Tsb,Tscを、対応する分割転送制御部53a,53b,53cにそれぞれ供給する。
【0068】
分割転送制御部53aは、転送指示Tsaとデータ蓄積量Dsaと分割サイズBsaに基づいて、転送指示Tbaを生成する。分割転送制御部53bは、転送指示Tsbとデータ蓄積量Dsbと分割サイズBsbに基づいて、転送指示Tbbを生成する。分割転送制御部53cは、転送指示Tscとデータ蓄積量Dscと分割サイズBscに基づいて、転送指示Tbcを生成する。
【0069】
調停部24は、各分割転送制御部53a〜53cから出力される転送指示Tsa〜Tscを調停して転送指示Tbsを出力する。転送制御部55は、転送指示Tbsに基づいて、各バッファ12a〜12cに対するデータ転送を制御する。
【0070】
図8に示すように、分割サイズ算出部51は、バッファ12a〜12cに対応する3つの時間予測部61a〜61cを備えている。時間予測部61aは、バッファ12aに対応する転送レートRta、しきい値Bia、データ蓄積量Dsaに基づいて、データ蓄積時間Tpaを算出する。同様に、時間予測部61bは、バッファ12bに対応する転送レートRtb、しきい値Bib、データ蓄積量Dsbに基づいて、データ蓄積時間Tpbを算出する。時間予測部61cは、バッファ12cに対応する転送レートRtc、しきい値Bic、データ蓄積量Dscに基づいて、データ蓄積時間Tpcを算出する。
【0071】
サイズ変換部62aは、データバス13の転送レートRt0に基づいて、データ蓄積時間Tpaを予測サイズPsaに変換する。同様に、サイズ変換部62bは、データバス13の転送レートRt0に基づいて、データ蓄積時間Tpbを予測サイズPsbに変換する。サイズ変換部62cは、データバス13の転送レートRt0に基づいて、データ蓄積時間Tpcを予測サイズPscに変換する。
【0072】
選択部63は、各サイズ変換部62a〜62cから出力される予測サイズPsa〜Pscに基づいて、クリップ処理部64a〜64cに対する予測サイズP2a〜P2cを生成する。クリップ処理部64a〜64cは、バッファ12a〜12cにそれぞれ対応する。選択部63は、バッファ12a〜12cに対応するクリップ処理部64a〜64cに対し、対応しない2つのバッファの分割サイズのうちの1つを選択し、その選択した分割サイズを出力する。
【0073】
例えば、選択部63は、クリップ処理部64aに対し、バッファ12b,12cに対応する2つの予測サイズPsb,Pscのうち、小さい値の分割サイズを選択し、その選択した分割サイズの値と等しい予測サイズP2aを出力する。同様に、選択部63は、クリップ処理部64bに対し、バッファ12a,12cに対応する2つの予測サイズPsa,Pscのうち、小さい値の分割サイズを選択し、その選択した分割サイズの値と等しい予測サイズP2bを出力する。また、選択部63は、クリップ処理部64cに対し、バッファ12a,12bに対応する2つの予測サイズPsa,Psbのうち、小さい値の分割サイズを選択し、その選択した分割サイズの値と等しい予測サイズP2cを出力する。
【0074】
クリップ処理部64aは、レジスタ65から供給される上限値Bamxと下限値Bamnに基づいて予測サイズP2aをクリップ処理して生成した分割サイズBsaを出力する。同様に、クリップ処理部64bは、レジスタ65から供給される上限値Bbmxと下限値Bbmnに基づいて予測サイズP2bをクリップ処理して生成した分割サイズBsbを出力する。クリップ処理部64cは、レジスタ65から供給される上限値Bcmxと下限値Bcmnに基づいて予測サイズP2cをクリップ処理して生成した分割サイズBscを出力する。
【0075】
このように、バッファ12a〜12cにそれぞれ格納されるデータを装置14に転送する際の分割サイズを変更することにより、上記実施形態と同様に、転送に係る待ち時間を短縮することができる。
【0076】
尚、選択部63において、設定した優先順位に従って、各クリップ処理部64a〜64cに対し、対応しないバッファの2つの分割サイズのうちの一方を選択して出力する構成としてもよい。また、図8において、選択部63を、サイズ変換部62a〜62cとクリップ処理部64a〜64cの間に接続したが、選択部63を、時間予測部61a〜61cとサイズ変換部62a〜62cとの間に接続するようにしてもよい。
【0077】
・上記実施形態では、制御部22から分割サイズ算出部21に対して出力される各通信装置11a,11bからバッファ12a,12bまでの転送レートRta,Rtbを固定する構成としたが、これらの転送レートRta,Rtbを適宜変更する構成を採用してもよい。
【0078】
・上記実施形態では、各通信装置11a,11b(各バッファ12a,12b)の転送先が同一の装置14とした構成を採用したが、例えば各通信装置11a,11b(各バッファ12a,12b)の転送先がそれぞれ異なる構成であってもよい。要は、通信装置11a,11b(バッファ12a,12b)のそれぞれが目的の装置に対してデータを転送する際に共通(共有)のデータバス13を利用する構成であれば本発明を適用することができる。
【0079】
・上記実施形態では、通信装置11a及び通信装置11bからデータバス13を介して目的の装置14に対してデータ転送を実施する、つまりデータ転送の転送方向が一方向とされる構成としたが、これに限らない。例えばデータ転送を通信装置11a,11bと目的の装置14との間で双方向にデータ転送が可能な構成の場合に、各バッファに対する分割サイズをデータ転送装置20(分割サイズ算出部21)によって変更することで双方向へのデータ転送が可能な構成であっても、上記効果(1)と同様の効果を得ることができる。
【0080】
・上記実施形態では、バッファ12a,12b及び通信装置11a,11b間における転送レートRta,Rtbを予め設定したが、これに限らない。例えば、バッファ12a,12b及び通信装置11a,11b間の転送レートを所定タイミング毎若しくは任意のタイミングで計測し、その計測した実測値を転送レートRta,Rtbとして使用する構成を採用してもよい。
【0081】
・通信装置11a,11bから各バッファ12a,12bにデータを転送する際に用いるクロック信号(例えば、通信装置11a,11bの送信回路が動作するためのクロック信号等)の周波数を転送レートRta,Rtbとして用いるようにしてもよい。同様に、データバス13の転送レートRt0についても、クロック信号の周波数を用いるようにしてもよい。
【0082】
・上記実施形態では、各バッファ12a,12bに対する分割サイズの上限値Bamx,Bbmx及び下限値Bamn,Bbmnを設定する構成としたが、いずれか一方のみを設定する構成、若しくは上限値及び下限値の両方を設定しない構成としてもよい。
【0083】
・上記実施形態では、各バッファ12a,12bに蓄積されるデータのデータ蓄積量Dsa,Dsbに応じて分割するデータのサイズ(分割サイズBsa,Bsb)を変更する構成としたが、例えば各バッファ12a,12bの空き容量に応じて分割するデータのサイズを変更する構成としてもよい。
【0084】
・上記実施形態では、特に言及していないが、前記データバス13は、CPU内部にある内部バス、CPUの外部にある外部バス、拡張カード等を増設する際に用いられる拡張バスのいずれであってもよい。要は、1つの転送路(バス)に複数の装置が接続され、それら装置が転送路を介してそれぞれの転送対象である装置に対してデータを転送するものであればよい。また、データバス13は、バッファ12a,12bから装置14に対してデータを転送可能であればよく、無線通信や有線通信等の通信形態、シリアルバスやパラレルバスなどの構成形態は限定されない。
【0085】
上記各実施形態に関し、以下の付記を開示する。
(付記1)
複数のバッファのそれぞれに格納されたデータを、複数の前記バッファが接続される1つのバスを介して転送先にデータを転送するデータ転送装置であって、
複数の前記バッファのデータ蓄積量に基づいて分割サイズをそれぞれ算出する分割サイズ算出部と、
複数の前記バッファに対応し、前記分割サイズと前記データ蓄積量に応じて対応するバッファの転送指示を出力する複数の分割転送制御部と、
前記転送指示に応じて前記バッファから前記転送先にデータを転送する転送制御部と、
を含むデータ転送装置。
(付記2)
前記分割サイズ算出部は、前記分割サイズ分のデータ転送が終了する毎に、複数の前記バッファに対する分割サイズを算出する、ことを特徴とする付記1に記載のデータ転送装置。
(付記3)
前記分割サイズ算出部は、複数の前記バッファの分割サイズを、算出対象以外のバッファのデータ蓄積量に基づいてそれぞれ算出する、ことを特徴とする付記1又は2に記載のデータ転送装置。
(付記4)
前記分割サイズ算出部は、
複数の前記バッファのデータ蓄積量に基づいて次の転送要求が発行されるまでの予測時間をそれぞれ算出する複数の時間予測部と、
前記バスの転送レートに基づいて、複数の前記予測時間を複数の前記分割サイズにそれぞれ変換する複数のサイズ変換部と、
を含む、ことを特徴とする付記1〜3のうちの何れか一項に記載のデータ転送装置。
(付記5)
前記分割サイズ算出部は、複数の前記分割サイズを、複数の前記バッファのそれぞれに対応する上限値及び下限値に基づいてそれぞれクリップする複数のクリップ処理部を含む、ことを特徴とする付記4に記載のデータ転送装置。
(付記6)
前記バスには少なくとも3つの前記バッファが接続され、
前記分割サイズ算出部は、複数の前記バッファの分割サイズを、算出対象以外のバッファの予測時間のうちの最小の予測時間に基づいて算出する、ことを特徴とする付記1〜5のうちの何れか一項に記載のデータ転送装置。
(付記7)
前記時間予測部は、対応する前記バッファのデータ蓄積量と転送レートと転送開始しきい値とに基づいて前記予測時間を算出する、ことを特徴とする付記4に記載のデータ転送装置。
(付記8)
複数のバッファのそれぞれに格納されたデータを、複数の前記バッファが接続される1つのバスを介して転送先にデータを転送するデータ転送方法であって、
複数の前記バッファのデータ蓄積量に基づいて分割サイズをそれぞれ算出し、複数の前記バッファに対応し、前記分割サイズと前記データ蓄積量に応じて対応するバッファの転送指示を生成し、前記転送指示に応じて前記バッファから前記転送先にデータを転送する、データ転送方法。
【符号の説明】
【0086】
12a〜12c バッファ
13 データバス
14 装置(転送先)
20,50 データ転送装置
21,51 分割サイズ算出部
23a,23b,53a〜53c 分割転送制御部
25,55 転送制御部
31a,31b,61a〜61c 時間予測部
32a,32b,62a〜62c サイズ変換部
33a,33b クリップ処理部
Bia,Bib しきい値(転送開始しきい値)
Tpa,Tpb データ蓄積時間(予測時間)
Dsa,Dsb,Dsc データ蓄積量
Rta,Rtb,Rtc 転送レート
Rt0 転送レート
Bsa,Bsb,Bsc 分割サイズ
Bamx,Bbmx 上限値
Bamn,Bbmn 下限値

【特許請求の範囲】
【請求項1】
複数のバッファのそれぞれに格納されたデータを、複数の前記バッファが接続される1つのバスを介して転送先にデータを転送するデータ転送装置であって、
複数の前記バッファのデータ蓄積量に基づいて分割サイズをそれぞれ算出する分割サイズ算出部と、
複数の前記バッファに対応し、前記分割サイズと前記データ蓄積量に応じて対応するバッファの転送指示を出力する複数の分割転送制御部と、
前記転送指示に応じて前記バッファから前記転送先にデータを転送する転送制御部と、
を含むデータ転送装置。
【請求項2】
前記分割サイズ算出部は、前記分割サイズ分のデータ転送が終了する毎に、複数の前記バッファに対する分割サイズを算出する、ことを特徴とする請求項1に記載のデータ転送装置。
【請求項3】
前記分割サイズ算出部は、複数の前記バッファの分割サイズを、算出対象以外のバッファのデータ蓄積量に基づいてそれぞれ算出する、ことを特徴とする請求項1又は2に記載のデータ転送装置。
【請求項4】
前記分割サイズ算出部は、
複数の前記バッファのデータ蓄積量に基づいて次の転送要求が発行されるまでの予測時間をそれぞれ算出する複数の時間予測部と、
前記バスの転送レートに基づいて、複数の前記予測時間を複数の前記分割サイズにそれぞれ変換する複数のサイズ変換部と、
を含む、ことを特徴とする請求項1〜3のうちの何れか一項に記載のデータ転送装置。
【請求項5】
複数のバッファのそれぞれに格納されたデータを、複数の前記バッファが接続される1つのバスを介して転送先にデータを転送するデータ転送方法であって、
複数の前記バッファのデータ蓄積量に基づいて分割サイズをそれぞれ算出し、複数の前記バッファに対応し、前記分割サイズと前記データ蓄積量に応じて対応するバッファの転送指示を生成し、前記転送指示に応じて前記バッファから前記転送先にデータを転送する、データ転送方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−150663(P2012−150663A)
【公開日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願番号】特願2011−9033(P2011−9033)
【出願日】平成23年1月19日(2011.1.19)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】