(57)【特許請求の範囲】
【請求項１】
記憶媒体とデータを送受信する際に、当該記憶媒体のセクタ長以上のデータサイズ単位でデータの送信を制御する送信手段と、
前記記憶媒体に送信する、複数のファイルのデータサイズを認識する認識手段と、
前記複数のファイルのうち、前記セクタ長よりデータサイズが小さいファイルが含まれていた場合に、前記データサイズ単位で当該小さいファイルを送信する際の冗長データのサイズに基づいて、前記セクタ長以上の前記データサイズ単位で送信するか否かを判定する判定手段と、
前記判定手段により送信しないと判定された場合、前記セクタ長より小さいファイルを前記送信手段が送信する際、当該ファイルのデータサイズに基づいて、前記送信手段が送信するデータサイズ単位を調整する調整手段と、
を備え、
前記判定手段は、さらに、前記セクタ長より小さい複数のファイルの冗長データの合計のデータサイズが、前記送信手段が送信する前記データサイズ単位を変更する変更命令のデータサイズと比べて大きい場合に、前記セクタ長以上の前記データサイズ単位で送信しないと判定し、
前記調整手段は、前記判定手段により送信しないと判定された場合、前記変更命令で、前記送信手段が一回に送信するデータサイズ単位を調整すること、
を特徴とするデータ処理装置。
【請求項２】
前記記憶媒体に送信する前記複数のファイルに対して、前記認識手段で認識されたデータサイズが大きい順から送信するよう送信順序を設定する順序設定手段を、さらに備え、
前記送信手段は、さらに、前記送信順序で前記小さいファイル以降に送信されるファイルについても、前記調整手段で調整された前記データサイズ以下のデータサイズ単位で送信すること、
を特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記判定手段で前記セクタ長以上の前記データサイズ単位で送信しないと判定された場合、
前記判定手段は、さらに前記データサイズ単位を調整せずに複数のファイルを送信し続けることによる冗長データの総和が、前記データサイズ単位を調整して複数のファイルを送信し続けることによる冗長データの総和と前記データサイズ単位を変更する変更命令のデータサイズとの総和を上回るか否かを判定し、
前記調整手段は、前記判定手段で上回ると判定されたタイミングで前記送信手段が送信する前記データサイズ単位を調整すること、
を特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記判定手段は、前記複数のファイルのうち、前記セクタ長よりデータサイズが小さいファイルが複数含まれていた場合に、当該複数の小さいファイルについて、ファイルサイズの大きいものから順に判定していくこと、
を特徴とする請求項２又は３に記載のデータ処理装置。
【請求項５】
前記判定手段が、次に前記データサイズ単位を調整するタイミングを決定する前に、前記送信手段が送信する全てのファイルのそれぞれについて前記冗長データの比較が完了した場合、前記タイミングを算出しないで、処理を進めることを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記調整手段は、前記判定手段により前記冗長データの合計のサイズが、前記変更命令のデータサイズよりも小さいと判定された場合、前記送信手段が送信する際のデータサイズ単位を調整しないこと、
を特徴とする請求項１乃至５のいずれか１つに記載のデータ処理装置。
【請求項７】
前記判定手段は、前記冗長データのサイズを、前記セクタ長から前記小さいファイルのデータサイズを減算して求めること、を特徴とする請求項１乃至６のいずれか１つに記載のデータ処理装置。
【請求項８】
前記送信手段がファイルの送信を行う場合、ＰＩＯ転送（Programmed  Input/Output）による１セクタ長のデータサイズ単位の送信、複数セクタ長のデータサイズ単位の送信、またはＤＭＡＣによる複数転送を行うことを特徴とする、請求項１乃至７のいずれか１つに記載のデータ処理装置。
【請求項９】
データ処理装置で実行されるデータ処理方法であって、
送信手段が、記憶媒体とデータを送受信する際に、当該記憶媒体のセクタ長以上のデータサイズ単位でデータの送信を制御する送信ステップと、
認識手段が、前記記憶媒体に送信する、複数のファイルのデータサイズを認識する認識ステップと、
判定手段が、前記複数のファイルのうち、前記セクタ長よりデータサイズが小さいファイルが含まれていた場合に、前記データサイズ単位で当該小さいファイルを送信する際の冗長データのサイズに基づいて、前記セクタ長以上の前記データサイズ単位で送信するか否かを判定する第１判定ステップと、
調整手段が、前記判定ステップにより送信しないと判定された場合、前記セクタ長より小さいファイルを前記送信ステップが送信する際、当該ファイルのデータサイズに基づいて、前記送信ステップが送信するデータサイズ単位を調整する第１調整ステップと、
を含み、
前記判定手段が、さらに、前記セクタ長より小さい複数のファイルの冗長データの合計のデータサイズが、前記送信手段が送信する前記データサイズ単位を変更する変更命令のデータサイズと比べて大きい場合に、前記セクタ長以上の前記データサイズ単位で送信しないと判定する第２判定ステップと、
前記調整手段が、前記第１判定ステップにより送信しないと判定された場合、前記変更命令で、前記送信手段が一回に送信するデータサイズ単位を調整する第２調整ステップと、
を含むことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、及びデータ処理方法に関する。
【背景技術】
【０００２】
従来、データの転送を行う際の転送効率の向上が重要となる。このため、様々な技術が提案されている。提案された技術のうちの１つとしては、セクタ単位でデータ転送が行われるデバイスに大容量のデータ転送を行う際、複数セクタを１セクタとみなして、転送する技術が提案されている。このような転送技術を用いることで、転送効率の向上を図ることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかしながら、上述した従来の技術では、データの転送サイズが１セクタより大きい場合しか考慮しておらず、転送するデータのサイズが１セクタより小さい場合については考慮していなかった。そのため、転送するデータのデータサイズが、１セクタのデータサイズより小さい場合、不要なデータを詰めて調節する必要があるため、転送パフォーマンスが低くなると言う問題があった。
【０００４】
本発明は、上記に鑑みてなされたものであって、転送するデータのデータサイズに従って転送パフォーマンスを向上させるデータ処理装置、及びデータ処理方法を提案する。
【課題を解決するための手段】
【０００５】
上述した課題を解決し、目的を達成するために、本発明にかかるデータ処理装置は、記憶媒体とデータを送受信する際に、当該記憶媒体のセクタ長以上のデータサイズ単位でデータの送信を制御する送信手段と、前記記憶媒体に送信する、複数のファイルのデータサイズを認識する認識手段と、前記複数のファイルのうち、前記セクタ長よりデータサイズが小さいファイルが含まれていた場合に、前記データサイズ単位で当該小さいファイルを送信する際の冗長データのサイズに基づいて、前記セクタ長以上の前記データサイズ単位で送信するか否かを判定する判定手段と、前記判定手段により送信しないと判定された場合、前記セクタ長より小さいファイルを前記送信手段が送信する際、当該ファイルのデータサイズに基づいて、前記送信手段が送信するデータサイズ単位を調整する調整手段と、を備え、前記判定手段は、さらに、前記セクタ長より小さい複数のファイルの冗長データの合計のデータサイズが、前記送信手段が送信する前記データサイズ単位を変更する変更命令のデータサイズと比べて大きい場合に、前記セクタ長以上の前記データサイズ単位で送信しないと判定し、前記調整手段は、前記判定手段により送信しないと判定された場合、前記変更命令で、前記送信手段が一回に送信するデータサイズ単位を調整すること、を特徴とする。
【発明の効果】
【０００６】
本発明によれば、転送パフォーマンスの低下を抑止できるという効果を奏する。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施の形態にかかるＡＳＩＣの構成を示すブロック図である。
【図２】図２は、従来の手法を用いて、１セクタが５１２バイトのＳＤカードに対して、２５６バイトのファイルを６回送信した例を示した図である。
【図３】図３は、本実施の形態にかかるＡＳＩＣが、ＳＤカードに対して２５６バイトのファイルを６回送信した例を示した図である。
【図４】図４は、ＡＳＩＣが、ＳＤカードに対してデータを送信する際の制御フローを示した図である。
【図５】図５は、判定部により、ファイルを送信する際に転送データサイズを調整するか否かの判定、及び次に転送データサイズを調整するタイミングを特定するための処理フローを示した図である。
【図６】図６は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル１個を送信した時の冗長バイト数の例を示した図である。
【図７】図７は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル２個を送信した時の冗長バイト数の例を示した図である。
【図８】図８は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル４個を送信した時の冗長バイト数の例を示した図である。
【図９】図９は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル２個を送信した時の冗長バイト数の例を示した図である。
【図１０】図１０は、転送データサイズを１回も変更しなかった場合の冗長バイト数の合計を示した図である。
【図１１】図１１は、転送データサイズを１回だけ変更した場合の冗長バイト数の合計を示した図である。
【図１２】図１２は、転送データサイズを２回変更した場合の冗長バイト数の合計を示した図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、この発明にかかるデータ処理装置、及びデータ処理方法の一実施の形態を詳細に説明する。本実施の形態では、本発明のデータ処理装置をＡＳＩＣに適用した例について説明する。
【０００９】
（実施の形態）
図１は、実施の形態にかかるＡＳＩＣの構成を示すブロック図である。当該ＡＳＩＣは、記憶媒体に対して読み書き可能な様々な情報処理装置に搭載することができる。そこで、本実施の形態では、当該ＡＳＩＣを、ＰＣ（Personal  Computer）などの一般的な情報処理装置に搭載する例について説明する。
【００１０】
図１に示すように、ＡＳＩＣ１０２は、メモリ１０３と、転送データバッファ１０４と、ＤＭＡＣ１０５と、ＳＤホスト１０６と、データ転送制御部１０７と、判定部１０８と、認識部１０９と、を備える。また、ＡＳＩＣ１０２は、ＣＰＵ１０１と接続されている。そしてＣＰＵ１０１が、ＡＳＩＣ１０２の設定及び制御を行う。このようにＡＳＩＣ１０２は、ＣＰＵ１０１からの命令に従って様々な処理を行う。また、ＡＳＩＣ１０２は、ＳＤカード１１２が接続された場合に、当該ＳＤカード１１２に対してデータの読み書きを行うことができる。
【００１１】
ＳＤカード１１２は、セクタ単位でデータの送受信の対象となる記憶媒体とする。本実施の形態は、記憶媒体としてＳＤカード１１２を用いた例について説明するが、ＳＤカード以外の記憶媒体や、送受信の対象としてデバイス等に対してデータの送受信を行っても良い。次に、ＳＤカード１１２に対するデータの送信について説明する。
【００１２】
図２は、従来の手法を用いて、１セクタが５１２バイトのＳＤカードに対して、２５６バイトのファイルを６回送信した例を示した図である。図２に示すように、従来の転送手法では、セクタ長よりもデータサイズが小さいファイルを送信すると、冗長データを詰めた上で送信される。図２に示す例では、セクタ長が５１２バイトで、転送されファイルのファイルサイズが２５６バイトであるため、２５６バイトの冗長データが詰められた上で、ＳＤカードに対して送信される。つまり、従来の手法では、６回２５６バイトのファイルを送信すると、合計２５６バイト×６の冗長データが送信されていることになる。このように、従来の手法では、本来必要でないデータ転送を行っているため、転送時間や記憶媒体側の使用領域に冗長がでてしまい、パフォーマンスが低くなる。
【００１３】
図３は、本実施の形態にかかるＡＳＩＣ１０２が、ＳＤカード１１２に対して、２５６バイトのファイルを６回送信した例を示した図である。図３に示すように、１セクタのセクタ長が５１２バイトであり、ＡＳＩＣ１０２とＳＤカード１１２との間で送受信するデータサイズの単位も初期設定では５１２バイトとしている（以下、ＳＤカード１１２との間で一回に送受信されるデータサイズ単位を転送データサイズと称する）。しかしながら、２５６バイトのファイルが６回送信されるため、本実施の形態にかかるＡＳＩＣ１０２では、予め転送データサイズを５１２バイトから２５６バイトに変更するコマンドを発行した後、２５６バイトのファイルを６回送信する。
【００１４】
このように、本実施の形態では、転送データサイズが、ファイルサイズと同等に変更した後に、ファイルの送信を行っているため、送信されるデータに冗長部分がなく、転送パフォーマンスを向上させることができる。図１に戻り、ＡＳＩＣ１０２の具体的構成について説明する。
【００１５】
メモリ１０３は、ＳＤカード１１２に転送するデータや、ＳＤカード１１２から転送されてきたデータを格納する。
【００１６】
ＤＭＡＣ（Direct  Memory  Access  Controller）１０５は、ＣＰＵ１０１の介在なしに、メモリーアクセスをコントロールする。
【００１７】
認識部１０９は、ＳＤカード１１２に送信するために、メモリ１０３に格納された複数のファイルのデータサイズを認識する。
【００１８】
転送データバッファ１０４は、メモリ１０３から読み出された転送データを格納する。転送データバッファ１０４は、メモリ１０３からデータを読み出す際に、予め定められた転送順序に従って転送データの並び替えを行う。本実施の形態にかかる転送データバッファ１０４は、ＳＤカード１１２に送信する複数のファイルに対して、認識部１０９で認識されたデータサイズが大きい順から送信するよう送信順序を並び替える。なお、メモリ１０３に、本実施の形態に適した順番で転送ファイルが格納されている場合、転送データバッファ１０４は不要となる。
【００１９】
判定部１０８は、変更前冗長バイト数格納部１２１と、変更後冗長バイト数格納部１２２と、冗長バイト数比較部１２４と、セクタ長変更バイト数格納部１２３と、を備え、ＳＤカード１１２に対して、転送データサイズを変更するか否かを判定する。
【００２０】
本実施の形態にかかる判定部１０８は、認識部１０９による認識結果において、ＳＤカード１１２のセクタ長よりデータサイズが小さいファイルが含まれていた場合に、セクタ長と同一以上のデータサイズ単位で当該ファイルを送信する際の冗長データのサイズに基づいて、セクタ長と同一以上の転送データサイズで送信するか否かを判定する。つまり、判定部１０８は、メモリ１０３に送信するために格納されている複数のファイルについて、セクタ長と同一以上の転送データサイズで送信した場合の総冗長データのサイズが、ＳＤホスト１０６が送信する転送データサイズの変更コマンドのデータサイズと比べて大きい場合に、セクタ長と同一以上の転送データサイズで送信しない、換言すれば当該変更コマンドを発行してより小さい転送データサイズで送信すると判定する。一方、判定部１０８は、総冗長データのサイズが、ＳＤホスト１０６が送信する転送データサイズの変更コマンドのデータサイズと比べて小さい場合に、セクタ長と同一以上の転送データサイズで送信し続けると判定する。
【００２１】
本実施の形態にかかる判定部１０８は、ＳＤカード１１２に送信するファイルとして、ＳＤカード１１２のセクタ長よりデータサイズが小さいファイルが複数含まれていることが認識部１０９により認識された場合、転送データバッファ１０４により各ファイルのデータサイズが大きい順からに並び替えられた後、データサイズの大きいファイルから順に判定していく。
【００２２】
そして、判定部１０８は、データサイズの大きいファイルから順の判定で、ＳＤホスト１０６がセクタ長と同一以上の転送データサイズで送信するのをやめて、セクタ長より小さい転送データサイズで送信を開始するタイミングを決定する。判定部１０８は、タイミングを決定するために、変更前冗長バイト数格納部１２１と、変更後冗長バイト数格納部１２２と、冗長バイト数比較部１２４と、セクタ長変更バイト数格納部１２３と、を用いる。
【００２３】
変更前冗長バイト数格納部１２１は、認識部１０９に認識された各ファイルのデータサイズと、転送データバッファ１０４によりデータサイズが大きい順にファイルが並び替えられた順序と、ＳＤホスト１０６が現在の転送データサイズと、に基づいて、ｎ番目のファイルで転送データサイズが変更されない場合の冗長データのバイト数の和を一時的に格納する。
【００２４】
変更後冗長バイト数格納部１２２は、認識部１０９に認識された各ファイルのデータサイズと、転送データバッファ１０４によりデータサイズが大きい順にファイルが並び替えられた順序と、調整部１１１が調整した場合のＳＤホスト１０６の転送データサイズと、に基づいて、ｎ番目のファイルで転送データサイズが調整された場合の冗長データのバイト数の和を一時的に格納する。
【００２５】
そのため、本実施の形態にかかる判定部１０８は、冗長データのサイズを、ＳＤホスト１０６が送信している転送データサイズ（始めはＳＤカード１１２のセクタ長と同一のデータサイズ）から、これから送信するファイルのデータサイズを減算して求める。
【００２６】
冗長バイト数比較部１２４は、変更前冗長バイト数格納部１２１に記憶されたバイト数の和と、変更後冗長バイト数格納部１２２に記憶されたバイト数の和と、を比較する。つまり、冗長バイト数比較部１２４は、転送データサイズを調整せずに複数のファイルを送信し続けることによる冗長データの総和が、転送データサイズを調整して複数のファイルを送信し続けることによる冗長データの総和と変更コマンドのデータサイズとの総和を上回るか否かを判定する。
【００２７】
本実施の形態では、判定部１０８は、冗長バイト数比較部１２４により上回ると判定されたタイミングを、ＳＤホスト１０６が送信するデータサイズを変更する変更タイミングとして決定する。なお、タイミングの具体的な決定手法については後述する。
【００２８】
そして、判定部１０８が、上述した判定を繰り返し行うことで、ＳＤホスト１０６が送信する転送データサイズの変更を複数回行っても良い。そして、判定部１０８が、送信する転送データサイズを変更した後、次の転送データサイズを調整するタイミングを決定する前に、ＳＤホスト１０６が送信する全てのファイルのそれぞれについて、上述した変更前との変更後との冗長データの総和による比較が完了した場合、以降転送データサイズを変更するタイミングは無いものとみなし、タイミングの算出を終了する。
【００２９】
データ転送制御部１０７は、調整部１１１を備え、ＳＤカード１１２とＡＳＩＣ１０２との間のデータ転送を制御する。
【００３０】
本実施の形態にかかるデータ転送制御部１０７の調整部１１１は、判定部１０８の判定結果に従って、転送データサイズの変更を行う際に、データ転送の一時停止や、転送データサイズの変更コマンドの設定、変更後の転送データサイズの設定などを行う。
【００３１】
調整部１１１は、判定部１０８により、ＳＤカード１１２のセクタ長と同一以上の転送データサイズで送信しない、換言すれば変更コマンドを発行してより小さい転送データサイズで送信すると判定された場合、セクタ長より転送データサイズの小さいファイルを、ＳＤホスト１０６が送信する際、当該ファイルの転送データサイズに基づいて、ＳＤホスト１０６が送信する転送データサイズの変更コマンドを発行する。これによりＳＤホスト１０６が送信する転送データサイズが調整される。一方、調整部１１１は、判定部１０８により冗長データの合計のサイズが、変更コマンドのデータサイズよりも小さいと判定された場合、ＳＤホスト１０６が送信する際の転送データサイズの調整を行わない。
【００３２】
ＳＤホスト１０６は、ＳＤカード１１２とＡＳＩＣ１０２とを接続するインターフェースとしての役割を果たし、ＳＤカード１１２との間のデータの送受信、及びコマンドの発行を行う。ＳＤカード１１２に対するデータ送信、コマンド発行は、ＤＭＡＣ１０５や、ＣＰＵ１０１からの要求に従って実施される。そして、ＳＤホスト１０６が、ファイルの送信を行う場合、ＰＩＯ転送（Programmed  Input/Output）による、ＳＤカード１１２の１セクタ長と同一サイズの転送データサイズでの送信、複数のセクタ長の合計と同一サイズの転送データサイズの送信、またはＤＭＡＣ１０５による複数送信が行われる。このように、本実施の形態にかかるＳＤホスト１０６は、ＳＤカード１１２とデータを送受信する際に、当該ＳＤカード１１２のセクタ長に基づく転送データサイズでデータの送信を制御する。
【００３３】
このように、データ転送制御部１０７の調整部１１１が、ＣＰＵ１０１の代わりに設定を行うことで、ソフトウェアの介在なしに、転送データサイズの変更を行いながら、ＳＤカード１１２に対するデータ転送が可能となる。
【００３４】
図４は、ＡＳＩＣ１０２が、ＳＤカード１１２に対してデータを送信する際の制御フローを示した図である。本制御フローにおいては、ＳＤホスト１０６が送信する際、ＳＤカード１１２のセクタ長のサイズである５１２バイトを、転送データサイズの初期値として設定する。なお、セクタ長の初期値が異なる場合、以下の説明もセクタ長に併せて変更されるものとする。
【００３５】
まず、認識部１０９は、メモリ１０３に格納されている全転送ファイルの転送データサイズを確認する（ステップＳ４０１）。
【００３６】
そして、転送データバッファ１０４が、メモリ１０３から各ファイルを読み出した後、認識部１０９で認識された転送データサイズに従って、サイズが大きいものから送信するよう、各ファイルを並び替えて格納する。このようにして、各ファイルの転送順序が設定される（ステップＳ４０２）。
【００３７】
そして、判定部１０８は、１セクタ長以上のデータサイズ（５１２バイト）のファイルがあるか否かを判定する（ステップＳ４０３）。１セクタ長以上のデータサイズのファイルが存在しないと判定した場合（ステップＳ４０３：Ｎｏ）には、ステップＳ４０６の処理に進む。
【００３８】
また、判定部１０８により、１セクタ長以上のデータサイズのファイルが存在すると判定された場合（ステップＳ４０３：Ｙｅｓ）、さらに判定部１０８は、ＳＤカード１１２に送信する全てのファイルが、１セクタ長以上のデータサイズであるか否かを判定する（ステップＳ４０４）。１セクタ長以上のデータサイズであると判定した場合（ステップＳ４０４：Ｙｅｓ）、ＳＤホスト１０６が、ＤＭＡＣ１０５を介して、転送データバッファ１０４から読み出したファイルを、ＳＤカード１１２に対して送信する（ステップＳ４１１）。
【００３９】
その後、ＳＤホスト１０６が、全てのファイルについて送信完了したか否か判定する（ステップＳ４１２）。送信完了していない場合には（ステップＳ４１２：Ｎｏ）継続してファイルの送信を行い（ステップＳ４１１）、全てのファイルの送信が完了した場合には（ステップＳ４１２：Ｙｅｓ）処理を終了する。
【００４０】
一方、判定部１０８により、ＳＤカード１１２に送信する全てのファイルが、１セクタ長以上のデータサイズではない、換言すれば１セクタ長より小さいデータサイズのファイルも含まれていると判定した場合（ステップＳ４０４：Ｎｏ）、まず、ＳＤホスト１０６が、１セクタ長よりデータサイズが大きいファイル全てを、転送データバッファ１０４から取得して、ＳＤカード１１２に送信する（ステップＳ４０５）。
【００４１】
そして、判定部１０８により、ファイルを送信する際に転送データサイズを調整するか否かの判定、及び次に転送データサイズを調整するタイミングの特定を行う（ステップＳ４０６）。
【００４２】
その後、判定部１０８は、転送データサイズの調整があるか否かを判定する（ステップＳ４０７）。判定部１０８が転送データサイズの調整があると判定した場合（ステップＳ４０７：Ｙｅｓ）、調整部１１１が、ファイルを送信する転送データサイズを調整する（ステップＳ４０８）。設定される転送データサイズは、現段階で未転送のファイルのうち、一番データサイズが大きいファイルのバイト数を設定する。一番データサイズが大きいファイルのバイト数を設定する理由は、ファイルサイズより小さい値を、ＳＤホスト１０６が１回に送信する転送データサイズに設定すると、１つのファイルを転送するために複数回の転送が必要になり、転送パフォーマンスが低下するからである。
【００４３】
そして、ＳＤホスト１０６が、調整した転送データサイズ単位で、転送データバッファ１０４から読み出したファイルを送信する（ステップＳ４０９）。
【００４４】
次に、判定部１０８が、次の調整タイミングになったか否かを判定する（ステップＳ４１０）。調整タイミングではないと判定した場合（ステップＳ４１０：Ｎｏ）、ＳＤホスト１０６が、継続してファイルの送信を行う（ステップＳ４０９）。調整タイミングになったと判定した場合（ステップＳ４１０：Ｙｅｓ）、判定部１０８及びデータ転送制御部１０７により、ファイルを送信する際に転送データサイズを調整するか否かの判定、及び次に転送データサイズを調整するタイミングの特定を行う（ステップＳ４０６）。その後、判定部１０８は、転送データサイズの調整があるか否かを判定する（ステップＳ４０７）。
【００４５】
もう転送データサイズの調整がないと判定した場合には（ステップＳ４０７：Ｎｏ）、ステップＳ４１１に遷移し、ＳＤホスト１０６が現在設定されている転送データサイズでファイルの送信し、すべてのファイルの送信が完了した場合（ステップＳ４１２）に全ての処理が終了する。
【００４６】
図５は、図４のステップＳ４０６で示した、判定部１０８により、ファイルを送信する際に転送データサイズを調整するか否かの判定、及び次に転送データサイズを調整するタイミングを特定するための処理フローを示した図である。
【００４７】
まず、判定部１０８が、現在の転送データサイズでファイルを送信した場合に、これから送信する全てのファイル分の冗長バイト数を算出する（ステップＳ５０１）。次に、判定部１０８が、転送データサイズの変更コマンドのバイト数より、算出した冗長バイト数が大きいか否かを判定する（ステップＳ５０２）。転送データサイズの変更コマンドのバイト数のほうが、算出した冗長バイト数より大きいと判定した場合（ステップＳ５０２：Ｎｏ）、これから転送データサイズの変更を行うことはないものとして処理を終了する。
【００４８】
一方、判定部１０８が、転送データサイズの変更コマンドのバイト数より、算出した冗長バイト数が大きいと判定した場合（ステップＳ５０２：Ｙｅｓ）、転送データサイズの変更コマンドを発行する旨を設定する（ステップＳ５０３）。変更コマンドを発行する旨の設定とは、図４のステップＳ４０７の転送データサイズを変更するためのフラグをＯＮに設定することを意味している。そして本フラグがＯＮの場合に、ステップＳ４０８で転送データサイズの調整が行われる。
【００４９】
そして、判定部１０８が、変数ｎに初期値‘０’を設定する（ステップＳ５０４）。変数ｎは、転送データサイズを変更してから、送信するファイルを識別する数とする。例えば、ｎ＝０は、転送データサイズを調整した後に最初に転送するファイルを表している。
【００５０】
次に、判定部１０８は、ｎ番目のファイルで転送データサイズを変更しない場合の冗長バイト数を算出する（ステップＳ５０５）。そして、判定部１０８は、ｎ番目のファイルで転送データサイズを変更しない場合の冗長バイト数の和を、変更前冗長バイト数格納部１２１に格納する。
【００５１】
次に、判定部１０８は、ｎ番目のファイルに対して転送データサイズを変更する場合の冗長バイト数を算出する（ステップＳ５０６）。そして、判定部１０８は、ｎ番目のファイルで転送データサイズを変更した場合の冗長バイト数の和を、変更後冗長バイト数格納部１２２に格納する。
【００５２】
その後、冗長バイト数比較部１２４が、ｎ番目のファイルにおいて、転送データサイズを変更しない場合の冗長バイト数の和が、転送データサイズを変更する場合の冗長バイト数の和と変更コマンドのバイト数との合計より大きいか否かを判定する（ステップＳ５０７）。
【００５３】
そして、冗長バイト数比較部１２４が、転送データサイズを変更しない場合の冗長バイト数の和が、転送データサイズを変更する場合の冗長バイト数の和と変更コマンドのバイト数との合計以下と判定した場合（ステップＳ５０７：Ｎｏ）、変数ｎに‘１’加算し（ステップＳ５０８）、全てのファイルについて比較したか否かを判定する（ステップＳ５０９）。そして、冗長バイト数比較部１２４が、全てのファイルについて比較が終了していないと判定した場合には（ステップＳ５０９：Ｎｏ）、ステップＳ５０５に戻って再び処理を進める。また、冗長バイト数比較部１２４が、全てのファイルについて比較が終了したと判定した場合には（ステップＳ５０９：Ｙｅｓ）、転送データサイズを変更しない方が、パフォーマンスが良いものとして処理を終了する。
【００５４】
一方、冗長バイト数比較部１２４が、転送データサイズを変更しない場合の冗長バイト数の和が、転送データサイズを変更する場合の冗長バイト数の和と変更コマンドのバイト数との合計より大きいと判定した場合（ステップＳ５０７：Ｙｅｓ）、転送データサイズが変更されたファイルを‘０’番目として、ｎ＋１番目のファイルを送信する時を、転送データサイズの調整タイミングとして設定し、処理を終了する（ステップＳ５１０）。
【００５５】
上述した処理手順により、転送データサイズを変更するコマンドの発行と、次に転送データサイズを変更するタイミングと、を設定できる。
【００５６】
次に、ＳＤカード１１２にファイルを送信する例について説明する。送信の対象となるファイルは、ファイルＡ：１５０バイト、ファイルＢ：２６０バイト、ファイルＣ：３８０バイト、ファイルＤ：７００バイト、ファイルＥ：１０２４バイト、ファイルＦ：１２８バイト、ファイルＧ：３２バイト、ファイルＨ：７０バイトとする。なお、転送データサイズの初期値は、ＳＤカードのセクタ長と同一である５１２バイトとする。そして、転送データサイズの変更コマンドのバイト数も５１２バイトとする。
【００５７】
そして、図４のステップＳ４０１において、認識部１０９が、各ファイルのデータサイズを認識する。そして、ステップＳ４０１で転送データバッファ１０４において、転送順序の入れ替えが行われる。これにより、１番目：ファイルＥ／１０２４バイト、２番目：ファイルＤ／７００バイト、３番目：ファイルＣ／３８０バイト、４番目：ファイルＢ／２６０バイト、５番目：ファイルＡ／１５０バイト、６番目：ファイルＦ／１２８バイト、７番目：ファイルＨ／７０バイト、８番目：ファイルＧ／３２バイトと並び替えられる。
【００５８】
その後、ステップＳ４０３の判定で、５１２バイト以上のファイルがあるために、ステップＳ４０４に遷移する。そして、ステップＳ４０４の判定では、５１２バイト以上のファイルと、５１２バイトより小さいファイルと、が混在しているため、ステップＳ４０５に遷移する。そして、ステップＳ４０５において、ＳＤホスト１０６が、ファイルＥとファイルＤと、を、ＳＤカード１１２に送信する。その後、ステップＳ４０６において、転送テータサイズの変更データサイズの調整の判定を行う。
【００５９】
図５のステップＳ５０１において、現設定の転送データサイズは、５１２バイトであるため、未転送ファイルの冗長バイトを算出すると以下のようになる。
【００６０】
つまり、３番目のファイルＣは５１２バイト−３８０バイト＝１３２バイト、４番目のファイルＢは５１２バイト−２６０バイト＝２５２バイト、５番目のファイルＡは５１２バイト−１５０バイト＝３６２バイト、６番目のファイルＦは５１２バイト−１２８バイト＝３８４バイト、７番目のファイルＨは５１２バイト−７０バイト＝４４２バイト、８番目のファイルＧは５１２バイト−３２バイト＝４８０バイト、となる。
【００６１】
したがって未転送部分の冗長バイト数は２０５２バイトとなり、転送データサイズの初期値である５１２バイトより大きいため、ステップＳ５０３に遷移する。そして、転送データサイズの変更コマンドの発行が設定される。
【００６２】
そして、変数ｎに初期値‘０’が設定された後、判定部１０８が、ステップＳ５０５及びステップＳ５０６において、転送データサイズを変更しない場合、及び変更する場合の冗長バイト数を算出する。
【００６３】
変更しない場合の転送データサイズは５１２バイト、変更する場合の転送データサイズは未転送ファイルの最大値（３番目のファイルＣ）である３８０バイトである。このため、それぞれ冗長バイト数を算出し、比較する。
【００６４】
図６は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル１個（ファイルＣ）を送信した時の冗長バイト数の例を示した図である。図６に示す例では、図５のステップＳ５０７の判定で、転送データサイズを変更しない場合の冗長バイト数の方が小さいと判定し、ステップＳ５０８に遷移する。そして、変数ｎに１加算した後、全未転送ファイルの比較は行っていないため、ステップＳ５０５に遷移して、再度比較が行われる。
【００６５】
図７は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル２個（ファイルＣ、ファイルＢ）を送信した時の冗長バイト数の例を示した図である。図７に示す例では、図５のステップＳ５０７の判定で、転送データサイズを変更しない場合の冗長バイト数の方が小さいと判定し、ステップＳ５０８に遷移する。そして、変数ｎに１加算した後、全未転送ファイルの比較は行っていないため、ステップＳ５０５に遷移して、再度比較が行われる。以降、これら処理が、変更コマンドの発行を行った場合の冗長バイト数が、発行しない場合より小さくなるまで繰り返される。
【００６６】
図８は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル４個（ファイルＣ、ファイルＢ、ファイルＡ、ファイルＦ）を送信した時の冗長バイト数の例を示した図である。図８に示す例では、図５のステップＳ５０７の判定で、転送データサイズを変更しない場合の冗長バイト数の方が大きいと判定し、ステップＳ５１０に遷移する。そして、ファイルＨの送信時に再度、変更コマンドの調整タイミングの判定を行う。その後、転送データサイズの変更の判定のフローは終了し、図４のステップＳ４０７に遷移する。
【００６７】
そして、ステップＳ５０３で変更コマンドを発行する旨が設定されているため、判定部１０８が、転送データサイズの調整有りと判定し（ステップＳ４０７：Ｙｅｓ）、ステップＳ４０８において、調整部１１１が、転送データサイズを調整する。転送データサイズは、未転送ファイル中最大サイズの３８０バイトに設定される。
【００６８】
その後、ステップＳ４０９及びステップＳ４１０のループ部分で、ＳＤホスト１０６がファイルＦまで送信した後、図５のステップＳ５１０で設定された調整タイミングとなるので、ステップＳ４１０から、ステップＳ４０６に遷移する。
【００６９】
今回も、先ほどと同様に、転送データサイズの変更の判定を行う。現在の転送データサイズの３８０バイトを基準に、未転送ファイル毎に冗長バイト数を算出すると、７番目のファイルＨ／３８０バイト−７０バイト＝３１０バイト、８番目のファイルＧ／３８０バイト−３２バイト＝３４８バイトとなる。これら未転送ファイルの冗長バイト数の合計が６５８バイトとなり、転送データサイズの変更コマンドのバイト数５１２バイトより大きいため、変更コマンドを発行する旨の設定が行われる。また、前回と同様に、転送データサイズを変更する場合と変更しない場合との冗長バイト数の比較を行うと、図９に示した表のようになる。図９は、転送データサイズの変更コマンドの発行を行った場合と行っていない場合とにおける、ファイル２個（ファイルＨ、ファイルＧ）を送信した時の冗長バイト数の例を示した図である。その後、図５による転送データサイズの調整の判定の処理が終了した後、調整部１１１が、転送データサイズを、ファイルＨのデータサイズである７０バイトに変更する。そして、ＳＤホスト１０６が、ファイルＨを転送後、再度転送データサイズの変更の判定を行う。
【００７０】
未転送ファイルは、以下の通りであるため、現転送データサイズである７０バイトを基準に冗長バイト数を算出すると、８番目のファイルＧは７０バイト−３２バイト＝３８バイトとなる。このため、冗長バイト数の合計３８バイトが、変更コマンドのバイト数である５１２バイトより小さいため、変更コマンドが発行される旨の設定は行われず、図５に示された転送データサイズの変更の判定フローが終了する。
【００７１】
この場合、判定部１０８が、転送データサイズの調整は無いと判定し（ステップＳ４０７：Ｎｏ）、ステップＳ４１１に遷移し、ＳＤホスト１０６が、ファイルを送信する処理を全て終了するまで繰り返す。そして、全ファイルの送信が完了した場合に、全ての処理が終了となる。
【００７２】
以下、転送データサイズを変更した回数に基づく冗長バイト数について説明する。ただし、５１２バイト以上のファイル転送の記載は省略する。図１０は、転送データサイズを１回も変更しなかった場合の冗長バイト数の合計を示した図である。図１０に示す例では、冗長バイト数が２０５２バイトとなる。
【００７３】
図１１は、転送データサイズを１回だけ変更した場合の冗長バイト数の合計を示した図である。図１１に示す例では、冗長バイト数が１７７２バイトとなる。図１２は、転送データサイズを２回変更した場合の冗長バイト数の合計を示した図である。図１２に示す例では、冗長バイト数が１６６４バイトとなる。
【００７４】
図１０〜図１２に示すように、変更コマンドが行われた回数に従って冗長バイト数が減少していることが確認できる。
【００７５】
上述した本実施の形態にかかるＡＳＩＣ１０２は、ソフトウェアによる介在なしで、複数のファイル転送時における転送データサイズと、ＳＤカード１１２のセクタ長のアンマッチによって発生する転送パフォーマンスの低下を防ぐことができる。
【００７６】
さらに、ＡＳＩＣ１０２からＳＤカード１１２に複数のファイルを送信する時の、転送データサイズによって発生する転送パフォーマンスの低下を防ぐことができる。そして、送信されるファイルのファイルサイズに合わせて転送データサイズを、ハードウェア側で最適な値に設定できるので、不必要なデータ転送が生じることを抑止できる。
【００７７】
（変形例）
上述した実施の形態では、上述したＡＳＩＣ１０２を、情報処理装置に搭載した例について説明した。しかしながら、上述したＡＳＩＣ１０２を情報処理装置に搭載することに制限するものではない。そこで、変形例として、ＡＳＩＣ１０２を、画像形成装置に搭載しても良い。画像形成装置にＡＳＩＣ１０２を搭載した場合、ＳＤカード１１２のセクタ長のデータサイズよりも小さい画像データをＳＤカード１１２に複数転送する場合に、ＡＳＩＣ１０２が、上述した実施の形態と同様の処理を行うこととする。これにより、データサイズが小さい画像データをＳＤカード１１２に転送する場合の転送効率を向上させることができる。また、画像データの出力先は、ＳＤカードに制限するものではなく、コンパクトフラッシュ（登録商標）カードや光磁気ディスクなどの他の記憶媒体に対して行っても良い。
【００７８】
なお、変形例では画像形成装置として、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも２つの機能を有する複合機に適用することが考えられるが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置であればいずれにも適用することができる。
【符号の説明】
【００７９】
１０１  ＣＰＵ
１０２  ＡＳＩＣ
１０３  メモリ
１０４  転送データバッファ
１０５  ＤＭＡＣ
１０６  ＳＤホスト
１０７  データ転送制御部
１０８  判定部
１０９  認識部
１１１  調整部
１１２  ＳＤカード
１２１  変更前冗長バイト数格納部
１２２  変更後冗長バイト数格納部
１２３  セクタ長変更バイト数格納部
１２４  冗長バイト数比較部
【先行技術文献】
【特許文献】
【００８０】
【特許文献１】特開２００３−０７７２１９号公報
【図１】
0005664264.tif 000002
【図２】
0005664264.tif 000003
【図３】
0005664264.tif 000004
【図４】
0005664264.tif 000005
【図５】
0005664264.tif 000006
【図６】
0005664264.tif 000007
【図７】
0005664264.tif 000008
【図８】
0005664264.tif 000009
【図９】
0005664264.tif 000010
【図１０】
0005664264.tif 000011
【図１１】
0005664264.tif 000012
【図１２】
0005664264.tif 000013