説明

データ処理装置、及びデータ処理方法

【課題】パフォーマンスの低下を抑止する。
【解決手段】記憶媒体とデータを送受信する際に、当該記憶媒体のセクタ長以上のデータサイズ単位でデータの送信を制御するSDホスト106と、複数のファイルのデータサイズを認識する認識部109と、複数のファイルのうち、セクタ長よりデータサイズが小さいファイルが含まれていた場合に、データサイズ単位で当該小さいファイルを送信する際の冗長データのサイズに基づいて、セクタ長以上のデータサイズ単位で送信するか否かを判定する判定部108と、送信しないと判定された場合、セクタ長より小さいファイルをSDホスト106が送信する際、当該ファイルのデータサイズに基づいて送信するデータサイズ単位を調整する調整部111と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、及びデータ処理方法に関する。
【背景技術】
【0002】
従来、データの転送を行う際の転送効率の向上が重要となる。このため、様々な技術が提案されている。提案された技術のうちの1つとしては、セクタ単位でデータ転送が行われるデバイスに大容量のデータ転送を行う際、複数セクタを1セクタとみなして、転送する技術が提案されている。このような転送技術を用いることで、転送効率の向上を図ることができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
しかしながら、上述した従来の技術では、データの転送サイズが1セクタより大きい場合しか考慮しておらず、転送するデータのサイズが1セクタより小さい場合については考慮していなかった。そのため、転送するデータのデータサイズが、1セクタのデータサイズより小さい場合、不要なデータを詰めて調節する必要があるため、転送パフォーマンスが低くなると言う問題があった。
【0004】
本発明は、上記に鑑みてなされたものであって、転送するデータのデータサイズに従って転送パフォーマンスを向上させるデータ処理装置、及びデータ処理方法を提案する。
【課題を解決するための手段】
【0005】
上述した課題を解決し、目的を達成するために、本発明にかかるデータ処理装置は、記憶媒体とデータを送受信する際に、当該記憶媒体のセクタ長以上のデータサイズ単位でデータの送信を制御する送信手段と、前記記憶媒体に送信する、複数のファイルのデータサイズを認識する認識手段と、前記複数のファイルのうち、前記セクタ長よりデータサイズが小さいファイルが含まれていた場合に、前記データサイズ単位で当該小さいファイルを送信する際の冗長データのサイズに基づいて、前記セクタ長以上の前記データサイズ単位で送信するか否かを判定する判定手段と、前記判定手段により送信しないと判定された場合、前記セクタ長より小さいファイルを前記送信手段が送信する際、当該ファイルのデータサイズに基づいて、前記送信手段が送信するデータサイズ単位を調整する調整手段と、を備えることを特徴とする。
【発明の効果】
【0006】
本発明によれば、転送パフォーマンスの低下を抑止できるという効果を奏する。
【図面の簡単な説明】
【0007】
【図1】図1は、実施の形態にかかるASICの構成を示すブロック図である。
【図2】図2は、従来の手法を用いて、1セクタが512バイトのSDカードに対して、256バイトのファイルを6回送信した例を示した図である。
【図3】図3は、本実施の形態にかかるASICが、SDカードに対して256バイトのファイルを6回送信した例を示した図である。
【図4】図4は、ASICが、SDカードに対してデータを送信する際の制御フローを示した図である。
【図5】図5は、判定部により、ファイルを送信する際に転送データサイズを調整するか否かの判定、及び次に転送データサイズを調整するタイミングを特定するための処理フローを示した図である。
【図6】図6は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル1個を送信した時の冗長バイト数の例を示した図である。
【図7】図7は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル2個を送信した時の冗長バイト数の例を示した図である。
【図8】図8は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル4個を送信した時の冗長バイト数の例を示した図である。
【図9】図9は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル2個を送信した時の冗長バイト数の例を示した図である。
【図10】図10は、転送データサイズを1回も変更しなかった場合の冗長バイト数の合計を示した図である。
【図11】図11は、転送データサイズを1回だけ変更した場合の冗長バイト数の合計を示した図である。
【図12】図12は、転送データサイズを2回変更した場合の冗長バイト数の合計を示した図である。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、この発明にかかるデータ処理装置、及びデータ処理方法の一実施の形態を詳細に説明する。本実施の形態では、本発明のデータ処理装置をASICに適用した例について説明する。
【0009】
(実施の形態)
図1は、実施の形態にかかるASICの構成を示すブロック図である。当該ASICは、記憶媒体に対して読み書き可能な様々な情報処理装置に搭載することができる。そこで、本実施の形態では、当該ASICを、PC(Personal Computer)などの一般的な情報処理装置に搭載する例について説明する。
【0010】
図1に示すように、ASIC102は、メモリ103と、転送データバッファ104と、DMAC105と、SDホスト106と、データ転送制御部107と、判定部108と、認識部109と、を備える。また、ASIC102は、CPU101と接続されている。そしてCPU101が、ASIC102の設定及び制御を行う。このようにASIC102は、CPU101からの命令に従って様々な処理を行う。また、ASIC102は、SDカード112が接続された場合に、当該SDカード112に対してデータの読み書きを行うことができる。
【0011】
SDカード112は、セクタ単位でデータの送受信の対象となる記憶媒体とする。本実施の形態は、記憶媒体としてSDカード112を用いた例について説明するが、SDカード以外の記憶媒体や、送受信の対象としてデバイス等に対してデータの送受信を行っても良い。次に、SDカード112に対するデータの送信について説明する。
【0012】
図2は、従来の手法を用いて、1セクタが512バイトのSDカードに対して、256バイトのファイルを6回送信した例を示した図である。図2に示すように、従来の転送手法では、セクタ長よりもデータサイズが小さいファイルを送信すると、冗長データを詰めた上で送信される。図2に示す例では、セクタ長が512バイトで、転送されファイルのファイルサイズが256バイトであるため、256バイトの冗長データが詰められた上で、SDカードに対して送信される。つまり、従来の手法では、6回256バイトのファイルを送信すると、合計256バイト×6の冗長データが送信されていることになる。このように、従来の手法では、本来必要でないデータ転送を行っているため、転送時間や記憶媒体側の使用領域に冗長がでてしまい、パフォーマンスが低くなる。
【0013】
図3は、本実施の形態にかかるASIC102が、SDカード112に対して、256バイトのファイルを6回送信した例を示した図である。図3に示すように、1セクタのセクタ長が512バイトであり、ASIC102とSDカード112との間で送受信するデータサイズの単位も初期設定では512バイトとしている(以下、SDカード112との間で一回に送受信されるデータサイズ単位を転送データサイズと称する)。しかしながら、256バイトのファイルが6回送信されるため、本実施の形態にかかるASIC102では、予め転送データサイズを512バイトから256バイトに変更するコマンドを発行した後、256バイトのファイルを6回送信する。
【0014】
このように、本実施の形態では、転送データサイズが、ファイルサイズと同等に変更した後に、ファイルの送信を行っているため、送信されるデータに冗長部分がなく、転送パフォーマンスを向上させることができる。図1に戻り、ASIC102の具体的構成について説明する。
【0015】
メモリ103は、SDカード112に転送するデータや、SDカード112から転送されてきたデータを格納する。
【0016】
DMAC(Direct Memory Access Controller)105は、CPU101の介在なしに、メモリーアクセスをコントロールする。
【0017】
認識部109は、SDカード112に送信するために、メモリ103に格納された複数のファイルのデータサイズを認識する。
【0018】
転送データバッファ104は、メモリ103から読み出された転送データを格納する。転送データバッファ104は、メモリ103からデータを読み出す際に、予め定められた転送順序に従って転送データの並び替えを行う。本実施の形態にかかる転送データバッファ104は、SDカード112に送信する複数のファイルに対して、認識部109で認識されたデータサイズが大きい順から送信するよう送信順序を並び替える。なお、メモリ103に、本実施の形態に適した順番で転送ファイルが格納されている場合、転送データバッファ104は不要となる。
【0019】
判定部108は、変更前冗長バイト数格納部121と、変更後冗長バイト数格納部122と、冗長バイト数比較部124と、セクタ長変更バイト数格納部123と、を備え、SDカード112に対して、転送データサイズを変更するか否かを判定する。
【0020】
本実施の形態にかかる判定部108は、認識部109による認識結果において、SDカード112のセクタ長よりデータサイズが小さいファイルが含まれていた場合に、セクタ長と同一以上のデータサイズ単位で当該ファイルを送信する際の冗長データのサイズに基づいて、セクタ長と同一以上の転送データサイズで送信するか否かを判定する。つまり、判定部108は、メモリ103に送信するために格納されている複数のファイルについて、セクタ長と同一以上の転送データサイズで送信した場合の総冗長データのサイズが、SDホスト106が送信する転送データサイズの変更コマンドのデータサイズと比べて大きい場合に、セクタ長と同一以上の転送データサイズで送信しない、換言すれば当該変更コマンドを発行してより小さい転送データサイズで送信すると判定する。一方、判定部108は、総冗長データのサイズが、SDホスト106が送信する転送データサイズの変更コマンドのデータサイズと比べて小さい場合に、セクタ長と同一以上の転送データサイズで送信し続けると判定する。
【0021】
本実施の形態にかかる判定部108は、SDカード112に送信するファイルとして、SDカード112のセクタ長よりデータサイズが小さいファイルが複数含まれていることが認識部109により認識された場合、転送データバッファ104により各ファイルのデータサイズが大きい順からに並び替えられた後、データサイズの大きいファイルから順に判定していく。
【0022】
そして、判定部108は、データサイズの大きいファイルから順の判定で、SDホスト106がセクタ長と同一以上の転送データサイズで送信するのをやめて、セクタ長より小さい転送データサイズで送信を開始するタイミングを決定する。判定部108は、タイミングを決定するために、変更前冗長バイト数格納部121と、変更後冗長バイト数格納部122と、冗長バイト数比較部124と、セクタ長変更バイト数格納部123と、を用いる。
【0023】
変更前冗長バイト数格納部121は、認識部109に認識された各ファイルのデータサイズと、転送データバッファ104によりデータサイズが大きい順にファイルが並び替えられた順序と、SDホスト106が現在の転送データサイズと、に基づいて、n番目のファイルで転送データサイズが変更されない場合の冗長データのバイト数の和を一時的に格納する。
【0024】
変更後冗長バイト数格納部122は、認識部109に認識された各ファイルのデータサイズと、転送データバッファ104によりデータサイズが大きい順にファイルが並び替えられた順序と、調整部111が調整した場合のSDホスト106の転送データサイズと、に基づいて、n番目のファイルで転送データサイズが調整された場合の冗長データのバイト数の和を一時的に格納する。
【0025】
そのため、本実施の形態にかかる判定部108は、冗長データのサイズを、SDホスト106が送信している転送データサイズ(始めはSDカード112のセクタ長と同一のデータサイズ)から、これから送信するファイルのデータサイズを減算して求める。
【0026】
冗長バイト数比較部124は、変更前冗長バイト数格納部121に記憶されたバイト数の和と、変更後冗長バイト数格納部122に記憶されたバイト数の和と、を比較する。つまり、冗長バイト数比較部124は、転送データサイズを調整せずに複数のファイルを送信し続けることによる冗長データの総和が、転送データサイズを調整して複数のファイルを送信し続けることによる冗長データの総和と変更コマンドのデータサイズとの総和を上回るか否かを判定する。
【0027】
本実施の形態では、判定部108は、冗長バイト数比較部124により上回ると判定されたタイミングを、SDホスト106が送信するデータサイズを変更する変更タイミングとして決定する。なお、タイミングの具体的な決定手法については後述する。
【0028】
そして、判定部108が、上述した判定を繰り返し行うことで、SDホスト106が送信する転送データサイズの変更を複数回行っても良い。そして、判定部108が、送信する転送データサイズを変更した後、次の転送データサイズを調整するタイミングを決定する前に、SDホスト106が送信する全てのファイルのそれぞれについて、上述した変更前との変更後との冗長データの総和による比較が完了した場合、以降転送データサイズを変更するタイミングは無いものとみなし、タイミングの算出を終了する。
【0029】
データ転送制御部107は、調整部111を備え、SDカード112とASIC102との間のデータ転送を制御する。
【0030】
本実施の形態にかかるデータ転送制御部107の調整部111は、判定部108の判定結果に従って、転送データサイズの変更を行う際に、データ転送の一時停止や、転送データサイズの変更コマンドの設定、変更後の転送データサイズの設定などを行う。
【0031】
調整部111は、判定部108により、SDカード112のセクタ長と同一以上の転送データサイズで送信しない、換言すれば変更コマンドを発行してより小さい転送データサイズで送信すると判定された場合、セクタ長より転送データサイズの小さいファイルを、SDホスト106が送信する際、当該ファイルの転送データサイズに基づいて、SDホスト106が送信する転送データサイズの変更コマンドを発行する。これによりSDホスト106が送信する転送データサイズが調整される。一方、調整部111は、判定部108により冗長データの合計のサイズが、変更コマンドのデータサイズよりも小さいと判定された場合、SDホスト106が送信する際の転送データサイズの調整を行わない。
【0032】
SDホスト106は、SDカード112とASIC102とを接続するインターフェースとしての役割を果たし、SDカード112との間のデータの送受信、及びコマンドの発行を行う。SDカード112に対するデータ送信、コマンド発行は、DMAC105や、CPU101からの要求に従って実施される。そして、SDホスト106が、ファイルの送信を行う場合、PIO転送(Programmed Input/Output)による、SDカード112の1セクタ長と同一サイズの転送データサイズでの送信、複数のセクタ長の合計と同一サイズの転送データサイズの送信、またはDMAC105による複数送信が行われる。このように、本実施の形態にかかるSDホスト106は、SDカード112とデータを送受信する際に、当該SDカード112のセクタ長に基づく転送データサイズでデータの送信を制御する。
【0033】
このように、データ転送制御部107の調整部111が、CPU101の代わりに設定を行うことで、ソフトウェアの介在なしに、転送データサイズの変更を行いながら、SDカード112に対するデータ転送が可能となる。
【0034】
図4は、ASIC102が、SDカード112に対してデータを送信する際の制御フローを示した図である。本制御フローにおいては、SDホスト106が送信する際、SDカード112のセクタ長のサイズである512バイトを、転送データサイズの初期値として設定する。なお、セクタ長の初期値が異なる場合、以下の説明もセクタ長に併せて変更されるものとする。
【0035】
まず、認識部109は、メモリ103に格納されている全転送ファイルの転送データサイズを確認する(ステップS401)。
【0036】
そして、転送データバッファ104が、メモリ103から各ファイルを読み出した後、認識部109で認識された転送データサイズに従って、サイズが大きいものから送信するよう、各ファイルを並び替えて格納する。このようにして、各ファイルの転送順序が設定される(ステップS402)。
【0037】
そして、判定部108は、1セクタ長以上のデータサイズ(512バイト)のファイルがあるか否かを判定する(ステップS403)。1セクタ長以上のデータサイズのファイルが存在しないと判定した場合(ステップS403:No)には、ステップS406の処理に進む。
【0038】
また、判定部108により、1セクタ長以上のデータサイズのファイルが存在すると判定された場合(ステップS403:Yes)、さらに判定部108は、SDカード112に送信する全てのファイルが、1セクタ長以上のデータサイズであるか否かを判定する(ステップS404)。1セクタ長以上のデータサイズであると判定した場合(ステップS404:Yes)、SDホスト106が、DMAC105を介して、転送データバッファ104から読み出したファイルを、SDカード112に対して送信する(ステップS411)。
【0039】
その後、SDホスト106が、全てのファイルについて送信完了したか否か判定する(ステップS412)。送信完了していない場合には(ステップS412:No)継続してファイルの送信を行い(ステップS411)、全てのファイルの送信が完了した場合には(ステップS412:Yes)処理を終了する。
【0040】
一方、判定部108により、SDカード112に送信する全てのファイルが、1セクタ長以上のデータサイズではない、換言すれば1セクタ長より小さいデータサイズのファイルも含まれていると判定した場合(ステップS404:No)、まず、SDホスト106が、1セクタ長よりデータサイズが大きいファイル全てを、転送データバッファ104から取得して、SDカード112に送信する(ステップS405)。
【0041】
そして、判定部108により、ファイルを送信する際に転送データサイズを調整するか否かの判定、及び次に転送データサイズを調整するタイミングの特定を行う(ステップS406)。
【0042】
その後、判定部108は、転送データサイズの調整があるか否かを判定する(ステップS407)。判定部108が転送データサイズの調整があると判定した場合(ステップS407:Yes)、調整部111が、ファイルを送信する転送データサイズを調整する(ステップS408)。設定される転送データサイズは、現段階で未転送のファイルのうち、一番データサイズが大きいファイルのバイト数を設定する。一番データサイズが大きいファイルのバイト数を設定する理由は、ファイルサイズより小さい値を、SDホスト106が1回に送信する転送データサイズに設定すると、1つのファイルを転送するために複数回の転送が必要になり、転送パフォーマンスが低下するからである。
【0043】
そして、SDホスト106が、調整した転送データサイズ単位で、転送データバッファ104から読み出したファイルを送信する(ステップS409)。
【0044】
次に、判定部108が、次の調整タイミングになったか否かを判定する(ステップS410)。調整タイミングではないと判定した場合(ステップS410:No)、SDホスト106が、継続してファイルの送信を行う(ステップS409)。調整タイミングになったと判定した場合(ステップS410:Yes)、判定部108及びデータ転送制御部107により、ファイルを送信する際に転送データサイズを調整するか否かの判定、及び次に転送データサイズを調整するタイミングの特定を行う(ステップS406)。その後、判定部108は、転送データサイズの調整があるか否かを判定する(ステップS407)。
【0045】
もう転送データサイズの調整がないと判定した場合には(ステップS407:No)、ステップS411に遷移し、SDホスト106が現在設定されている転送データサイズでファイルの送信し、すべてのファイルの送信が完了した場合(ステップS412)に全ての処理が終了する。
【0046】
図5は、図4のステップS406で示した、判定部108により、ファイルを送信する際に転送データサイズを調整するか否かの判定、及び次に転送データサイズを調整するタイミングを特定するための処理フローを示した図である。
【0047】
まず、判定部108が、現在の転送データサイズでファイルを送信した場合に、これから送信する全てのファイル分の冗長バイト数を算出する(ステップS501)。次に、判定部108が、転送データサイズの変更コマンドのバイト数より、算出した冗長バイト数が大きいか否かを判定する(ステップS502)。転送データサイズの変更コマンドのバイト数のほうが、算出した冗長バイト数より大きいと判定した場合(ステップS502:No)、これから転送データサイズの変更を行うことはないものとして処理を終了する。
【0048】
一方、判定部108が、転送データサイズの変更コマンドのバイト数より、算出した冗長バイト数が大きいと判定した場合(ステップS502:Yes)、転送データサイズの変更コマンドを発行する旨を設定する(ステップS503)。変更コマンドを発行する旨の設定とは、図4のステップS407の転送データサイズを変更するためのフラグをONに設定することを意味している。そして本フラグがONの場合に、ステップS408で転送データサイズの調整が行われる。
【0049】
そして、判定部108が、変数nに初期値‘0’を設定する(ステップS504)。変数nは、転送データサイズを変更してから、送信するファイルを識別する数とする。例えば、n=0は、転送データサイズを調整した後に最初に転送するファイルを表している。
【0050】
次に、判定部108は、n番目のファイルで転送データサイズを変更しない場合の冗長バイト数を算出する(ステップS505)。そして、判定部108は、n番目のファイルで転送データサイズを変更しない場合の冗長バイト数の和を、変更前冗長バイト数格納部121に格納する。
【0051】
次に、判定部108は、n番目のファイルに対して転送データサイズを変更する場合の冗長バイト数を算出する(ステップS506)。そして、判定部108は、n番目のファイルで転送データサイズを変更した場合の冗長バイト数の和を、変更後冗長バイト数格納部122に格納する。
【0052】
その後、冗長バイト数比較部124が、n番目のファイルにおいて、転送データサイズを変更しない場合の冗長バイト数の和が、転送データサイズを変更する場合の冗長バイト数の和と変更コマンドのバイト数との合計より大きいか否かを判定する(ステップS507)。
【0053】
そして、冗長バイト数比較部124が、転送データサイズを変更しない場合の冗長バイト数の和が、転送データサイズを変更する場合の冗長バイト数の和と変更コマンドのバイト数との合計以下と判定した場合(ステップS507:No)、変数nに‘1’加算し(ステップS508)、全てのファイルについて比較したか否かを判定する(ステップS509)。そして、冗長バイト数比較部124が、全てのファイルについて比較が終了していないと判定した場合には(ステップS509:No)、ステップS505に戻って再び処理を進める。また、冗長バイト数比較部124が、全てのファイルについて比較が終了したと判定した場合には(ステップS509:Yes)、転送データサイズを変更しない方が、パフォーマンスが良いものとして処理を終了する。
【0054】
一方、冗長バイト数比較部124が、転送データサイズを変更しない場合の冗長バイト数の和が、転送データサイズを変更する場合の冗長バイト数の和と変更コマンドのバイト数との合計より大きいと判定した場合(ステップS507:Yes)、転送データサイズが変更されたファイルを‘0’番目として、n+1番目のファイルを送信する時を、転送データサイズの調整タイミングとして設定し、処理を終了する(ステップS510)。
【0055】
上述した処理手順により、転送データサイズを変更するコマンドの発行と、次に転送データサイズを変更するタイミングと、を設定できる。
【0056】
次に、SDカード112にファイルを送信する例について説明する。送信の対象となるファイルは、ファイルA:150バイト、ファイルB:260バイト、ファイルC:380バイト、ファイルD:700バイト、ファイルE:1024バイト、ファイルF:128バイト、ファイルG:32バイト、ファイルH:70バイトとする。なお、転送データサイズの初期値は、SDカードのセクタ長と同一である512バイトとする。そして、転送データサイズの変更コマンドのバイト数も512バイトとする。
【0057】
そして、図4のステップS401において、認識部109が、各ファイルのデータサイズを認識する。そして、ステップS401で転送データバッファ104において、転送順序の入れ替えが行われる。これにより、1番目:ファイルE/1024バイト、2番目:ファイルD/700バイト、3番目:ファイルC/380バイト、4番目:ファイルB/260バイト、5番目:ファイルA/150バイト、6番目:ファイルF/128バイト、7番目:ファイルH/70バイト、8番目:ファイルG/32バイトと並び替えられる。
【0058】
その後、ステップS403の判定で、512バイト以上のファイルがあるために、ステップS404に遷移する。そして、ステップS404の判定では、512バイト以上のファイルと、512バイトより小さいファイルと、が混在しているため、ステップS405に遷移する。そして、ステップS405において、SDホスト106が、ファイルEとファイルDと、を、SDカード112に送信する。その後、ステップS406において、転送テータサイズの変更データサイズの調整の判定を行う。
【0059】
図5のステップS501において、現設定の転送データサイズは、512バイトであるため、未転送ファイルの冗長バイトを算出すると以下のようになる。
【0060】
つまり、3番目のファイルCは512バイト−380バイト=132バイト、4番目のファイルBは512バイト−260バイト=252バイト、5番目のファイルAは512バイト−150バイト=362バイト、6番目のファイルFは512バイト−128バイト=384バイト、7番目のファイルHは512バイト−70バイト=442バイト、8番目のファイルGは512バイト−32バイト=480バイト、となる。
【0061】
したがって未転送部分の冗長バイト数は2052バイトとなり、転送データサイズの初期値である512バイトより大きいため、ステップS503に遷移する。そして、転送データサイズの変更コマンドの発行が設定される。
【0062】
そして、変数nに初期値‘0’が設定された後、判定部108が、ステップS505及びステップS506において、転送データサイズを変更しない場合、及び変更する場合の冗長バイト数を算出する。
【0063】
変更しない場合の転送データサイズは512バイト、変更する場合の転送データサイズは未転送ファイルの最大値(3番目のファイルC)である380バイトである。このため、それぞれ冗長バイト数を算出し、比較する。
【0064】
図6は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル1個(ファイルC)を送信した時の冗長バイト数の例を示した図である。図6に示す例では、図5のステップS507の判定で、転送データサイズを変更しない場合の冗長バイト数の方が小さいと判定し、ステップS508に遷移する。そして、変数nに1加算した後、全未転送ファイルの比較は行っていないため、ステップS505に遷移して、再度比較が行われる。
【0065】
図7は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル2個(ファイルC、ファイルB)を送信した時の冗長バイト数の例を示した図である。図7に示す例では、図5のステップS507の判定で、転送データサイズを変更しない場合の冗長バイト数の方が小さいと判定し、ステップS508に遷移する。そして、変数nに1加算した後、全未転送ファイルの比較は行っていないため、ステップS505に遷移して、再度比較が行われる。以降、これら処理が、変更コマンドの発行を行った場合の冗長バイト数が、発行しない場合より小さくなるまで繰り返される。
【0066】
図8は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル4個(ファイルC、ファイルB、ファイルA、ファイルF)を送信した時の冗長バイト数の例を示した図である。図8に示す例では、図5のステップS507の判定で、転送データサイズを変更しない場合の冗長バイト数の方が大きいと判定し、ステップS510に遷移する。そして、ファイルHの送信時に再度、変更コマンドの調整タイミングの判定を行う。その後、転送データサイズの変更の判定のフローは終了し、図4のステップS407に遷移する。
【0067】
そして、ステップS503で変更コマンドを発行する旨が設定されているため、判定部108が、転送データサイズの調整有りと判定し(ステップS407:Yes)、ステップS408において、調整部111が、転送データサイズを調整する。転送データサイズは、未転送ファイル中最大サイズの380バイトに設定される。
【0068】
その後、ステップS409及びステップS410のループ部分で、SDホスト106がファイルFまで送信した後、図5のステップS510で設定された調整タイミングとなるので、ステップS410から、ステップS406に遷移する。
【0069】
今回も、先ほどと同様に、転送データサイズの変更の判定を行う。現在の転送データサイズの380バイトを基準に、未転送ファイル毎に冗長バイト数を算出すると、7番目のファイルH/380バイト−70バイト=310バイト、8番目のファイルG/380バイト−32バイト=348バイトとなる。これら未転送ファイルの冗長バイト数の合計が658バイトとなり、転送データサイズの変更コマンドのバイト数512バイトより大きいため、変更コマンドを発行する旨の設定が行われる。また、前回と同様に、転送データサイズを変更する場合と変更しない場合との冗長バイト数の比較を行うと、図9に示した表のようになる。図9は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル2個(ファイルH、ファイルG)を送信した時の冗長バイト数の例を示した図である。その後、図5による転送データサイズの調整の判定の処理が終了した後、調整部111が、転送データサイズを、ファイルHのデータサイズである70バイトに変更する。そして、SDホスト106が、ファイルHを転送後、再度転送データサイズの変更の判定を行う。
【0070】
未転送ファイルは、以下の通りであるため、現転送データサイズである70バイトを基準に冗長バイト数を算出すると、8番目のファイルGは70バイト−32バイト=38バイトとなる。このため、冗長バイト数の合計38バイトが、変更コマンドのバイト数である512バイトより小さいため、変更コマンドが発行される旨の設定は行われず、図5に示された転送データサイズの変更の判定フローが終了する。
【0071】
この場合、判定部108が、転送データサイズの調整は無いと判定し(ステップS407:No)、ステップS411に遷移し、SDホスト106が、ファイルを送信する処理を全て終了するまで繰り返す。そして、全ファイルの送信が完了した場合に、全ての処理が終了となる。
【0072】
以下、転送データサイズを変更した回数に基づく冗長バイト数について説明する。ただし、512バイト以上のファイル転送の記載は省略する。図10は、転送データサイズを1回も変更しなかった場合の冗長バイト数の合計を示した図である。図10に示す例では、冗長バイト数が2052バイトとなる。
【0073】
図11は、転送データサイズを1回だけ変更した場合の冗長バイト数の合計を示した図である。図11に示す例では、冗長バイト数が1772バイトとなる。図12は、転送データサイズを2回変更した場合の冗長バイト数の合計を示した図である。図12に示す例では、冗長バイト数が1664バイトとなる。
【0074】
図10〜図12に示すように、変更コマンドが行われた回数に従って冗長バイト数が減少していることが確認できる。
【0075】
上述した本実施の形態にかかるASIC102は、ソフトウェアによる介在なしで、複数のファイル転送時における転送データサイズと、SDカード112のセクタ長のアンマッチによって発生する転送パフォーマンスの低下を防ぐことができる。
【0076】
さらに、ASIC102からSDカード112に複数のファイルを送信する時の、転送データサイズによって発生する転送パフォーマンスの低下を防ぐことができる。そして、送信されるファイルのファイルサイズに合わせて転送データサイズを、ハードウェア側で最適な値に設定できるので、不必要なデータ転送が生じることを抑止できる。
【0077】
(変形例)
上述した実施の形態では、上述したASIC102を、情報処理装置に搭載した例について説明した。しかしながら、上述したASIC102を情報処理装置に搭載することに制限するものではない。そこで、変形例として、ASIC102を、画像形成装置に搭載しても良い。画像形成装置にASIC102を搭載した場合、SDカード112のセクタ長のデータサイズよりも小さい画像データをSDカード112に複数転送する場合に、ASIC102が、上述した実施の形態と同様の処理を行うこととする。これにより、データサイズが小さい画像データをSDカード112に転送する場合の転送効率を向上させることができる。また、画像データの出力先は、SDカードに制限するものではなく、コンパクトフラッシュ(登録商標)カードや光磁気ディスクなどの他の記憶媒体に対して行っても良い。
【0078】
なお、変形例では画像形成装置として、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも2つの機能を有する複合機に適用することが考えられるが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置であればいずれにも適用することができる。
【符号の説明】
【0079】
101 CPU
102 ASIC
103 メモリ
104 転送データバッファ
105 DMAC
106 SDホスト
107 データ転送制御部
108 判定部
109 認識部
111 調整部
112 SDカード
121 変更前冗長バイト数格納部
122 変更後冗長バイト数格納部
123 セクタ長変更バイト数格納部
124 冗長バイト数比較部
【先行技術文献】
【特許文献】
【0080】
【特許文献1】特開2003−077219号公報

【特許請求の範囲】
【請求項1】
記憶媒体とデータを送受信する際に、当該記憶媒体のセクタ長以上のデータサイズ単位でデータの送信を制御する送信手段と、
前記記憶媒体に送信する、複数のファイルのデータサイズを認識する認識手段と、
前記複数のファイルのうち、前記セクタ長よりデータサイズが小さいファイルが含まれていた場合に、前記データサイズ単位で当該小さいファイルを送信する際の冗長データのサイズに基づいて、前記セクタ長以上の前記データサイズ単位で送信するか否かを判定する判定手段と、
前記判定手段により送信しないと判定された場合、前記セクタ長より小さいファイルを前記送信手段が送信する際、当該ファイルのデータサイズに基づいて、前記送信手段が送信するデータサイズ単位を調整する調整手段と、
を備えることを特徴とするデータ処理装置。
【請求項2】
前記判定手段は、さらに、前記セクタ長より小さい複数のファイルの冗長データの合計のデータサイズが、前記送信手段が送信する前記データサイズ単位を変更する変更命令のデータサイズと比べて大きい場合に、前記セクタ長以上の前記データサイズ単位で送信しないと判定し、
前記調整手段は、前記判定手段により送信しないと判定された場合、前記変更命令で、前記送信手段が一回に送信するデータサイズ単位を調整すること、
を特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記記憶媒体に送信する前記複数のファイルに対して、前記認識手段で認識されたデータサイズが大きい順から送信するよう送信順序を設定する順序設定手段を、さらに備え、
前記送信手段は、さらに、前記送信順序で前記小さいファイル以降に送信されるファイルについても、前記調整手段で調整された前記データサイズ以下のデータサイズ単位で送信すること、
を特徴とする請求項2に記載のデータ処理装置。
【請求項4】
前記判定手段は、前記送信手段が前記データサイズ単位で送信しないと判定するタイミングを、当該タイミング以降に当該データサイズ単位を調整せずに複数のファイルを送信し続けることによる冗長データの総和が、当該タイミング以降に当該データサイズ単位を調整して複数のファイルを送信し続けることによる冗長データの総和と前記データサイズ単位を変更する変更命令のデータサイズとの総和を上回るタイミングとすること、
を特徴とする請求項3に記載のデータ処理装置。
【請求項5】
前記判定手段は、前記複数のファイルのうち、前記セクタ長よりデータサイズが小さいファイルが複数含まれていた場合に、当該複数の小さいファイルについて、ファイルサイズの大きいものから順に判定していくこと、
を特徴とする請求項3又は4に記載のデータ処理装置。
【請求項6】
前記判定手段が、次に前記データサイズ単位を調整するタイミングを判定する前に、前記送信手段が送信する全てのファイルのそれぞれについて前記冗長データの比較が完了した場合、前記タイミングを算出しないで、処理を進めることを特徴とする請求項5に記載のデータ処理装置。
【請求項7】
前記調整手段は、前記判定手段により前記冗長データのサイズが、前記変更命令のデータサイズよりも小さいと判定された場合、前記送信手段が送信する際のデータサイズ単位を調整しないこと、
を特徴とする請求項1乃至6のいずれか1つに記載のデータ処理装置。
【請求項8】
前記判定手段は、前記冗長データのサイズを、前記セクタ長から前記小さいファイルのデータサイズを減算して求めること、を特徴とする請求項1乃至7のいずれか1つに記載のデータ処理装置。
【請求項9】
前記送信手段がファイルの送信を行う場合、PIO転送(Programmed Input/Output)による1セクタ長のデータサイズ単位の送信、複数セクタ長のデータサイズ単位の送信、またはDMACによる複数転送を行うことを特徴とする、請求項1乃至8のいずれか1つに記載のデータ処理装置。
【請求項10】
データ処理装置で実行されるデータ処理方法であって、
送信手段が、記憶媒体とデータを送受信する際に、当該記憶媒体のセクタ長以上のデータサイズ単位でデータの送信を制御する送信ステップと、
認識手段が、前記記憶媒体に送信する、複数のファイルのデータサイズを認識する認識ステップと、
判定手段が、前記複数のファイルのうち、前記セクタ長よりデータサイズが小さいファイルが含まれていた場合に、前記データサイズ単位で当該小さいファイルを送信する際の冗長データのサイズに基づいて、前記セクタ長以上の前記データサイズ単位で送信するか否かを判定する判定ステップと、
調整手段が、前記判定ステップにより送信しないと判定された場合、前記セクタ長より小さいファイルを前記送信ステップが送信する際、当該ファイルのデータサイズに基づいて、前記送信ステップが送信するデータサイズ単位を調整する調整ステップと、
を含むことを特徴とするデータ処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−150611(P2012−150611A)
【公開日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願番号】特願2011−8077(P2011−8077)
【出願日】平成23年1月18日(2011.1.18)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】