(57)【要約】【課題】外部記憶装置間のデータ転送を効率的に行う「データ処理装置及びデータ転送方法」を提供する。【解決手段】バッファとして転送元ボリュームのセクタサイズと転送先ボリュームのセクタサイズの最小公倍数の、正の整数倍のバッファサイズのバッファを確保する。そして、転送元ファイルからバッファサイズ分の＃１〜＃３のセクタをバッファにリードし、バッファのデータを転送先ファイルの＃１１と＃１２にライトする（ｂ１）処理を、転送元ファイルのデータの転送先ファイルへの転送が完了するまで繰り返す（ｂ２）。【選択図】図４
2006018426.tif 000002
【特許請求の範囲】
【請求項１】
最小データアクセス単位のデータサイズが相互に異なる第１の外部記憶装置と第２の外部記憶装置とを含む複数の外部記憶装置を備えたデータ処理装置であって、
記憶装置と、
データの転送元となる第１の外部記憶装置から、データの転送先となる第２の外部記憶装置にデータを転送する場合に、第１の外部記憶媒体の最小データアクセス単位のデータサイズと第２の外部記憶媒体の最小データアクセス単位のデータサイズとの最小公倍数の、正の整数倍のバッファサイズを持つバッファを前記記憶装置の記憶空間上に設定するバッファ設定手段と、
前記第１の外部記憶装置から前記第２の外部記憶装置に転送するデータを、前記バッファサイズと同じデータサイズ毎に、順次、対象データとして、当該各対象データの前記第１の外部記憶装置からバッファへのリードと前記バッファから前記第２の外部記憶装置へのライトを行うデータ転送手段とを有することを特徴とするデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置であって、
前記第１の外部記憶装置はCDまたはDVDを再生するドライブ装置であって、前記第２の外部記憶装置はハードディスクドライブ装置であり、前記第１の外部記憶装置の最小データアクセス単位は前記ドライブ装置に装着された記録媒体のセクタであり、前記第２の外部記憶装置の最小データアクセス単位はハードディスクのセクタであることを特徴とするデータ処理装置。
【請求項３】
請求項１または２記載のデータ処理装置であって、
前記第１の外部記憶装置から前記第２の外部記憶装置に転送するデータは、ファイルであることを特徴とするデータ処理装置。
【請求項４】
最小データアクセス単位のデータサイズが相互に異なる第１の外部記憶装置と第２の外部記憶装置とを含む複数の外部記憶装置を備えたデータ処理装置において、第１の外部記憶装置から第２の外部記憶装置にデータを転送するデータ転送方法であって、
前記第１の外部記憶媒体の最小データアクセス単位のデータサイズと前記第２の外部記憶媒体の最小データアクセス単位のデータサイズとの最小公倍数の、正の整数倍のバッファサイズを持つバッファを設けるステップと、
前記第１の外部記憶装置から前記第２の外部記憶装置に転送するデータを、前記バッファサイズと同じデータサイズ毎に、順次、対象データとして、当該各対象データの前記第１の外部記憶装置からバッファへのリードと前記バッファから前記第２の外部記憶装置へのライトを行うステップとを有することを特徴とするデータ転送方法。
【請求項５】
コンピュータによって読み取られ実行されるコンピュータプログラムであって、
前記コンピュータに、
データの転送元となる第１の外部記憶媒体の最小データアクセス単位のデータサイズと、データの転送先となる最小データアクセス単位が前記第１の外部記憶装置と異なる第２の外部記憶媒体の最小データアクセス単位のデータサイズとの最小公倍数の、正の整数倍のバッファサイズを持つバッファを設けるステップと、
前記第１の外部記憶装置から前記第２の外部記憶装置に転送するデータを、前記バッファサイズと同じデータサイズ毎に、順次、対象データとして、当該各対象データの前記第１の外部記憶装置からバッファへのリードと前記バッファから前記第２の外部記憶装置へのライトを行うステップとを実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の外部記憶装置を備えたデータ処理装置における外部記憶装置間のデータ転送の技術に関するものである。
【背景技術】
【０００２】
複数の外部記憶装置を備えたデータ処理装置におけるデータ転送の技術としては、HDD（ハードディスクドライブ）とCD-DAドライバとを外部記憶装置として備えたオーディオ装置において、CD-DAドライバに装着されたCD-DAに記録された楽曲データを、個人的利用目的のためにHDDに転送して記録する技術が知られている（たとえば、特許文献１）。
【０００３】
ここで、複数の外部記憶装置を備えたデータ処理装置における、外部記憶装置間のデータ転送は、データ処理装置内に設けたバッファを介して行われることが一般的である。すなわち、外部記憶装置間のデータ転送は、転送元の外部記憶装置からバッファサイズ分のデータをバッファに読込み、バッファに読み込んだデータを転送先の外部記憶装置に書き込むことを、データ処理装置が所要回数繰り返すことにより実現される。
【特許文献１】特開2002-203361号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
さて、HDDやCD-DAドライバなどの外部記憶装置は、その種別毎に、データ処理装置がアクセスできるデータの単位が定まっている。たとえば、HDDでは、データ処理装置がアクセスできる単位は５１２Byte長のセクタであり、CD-DAドライバでは、データ処理装置がアクセスできる単位は２３５２Byte長のセクタである。したがって、データ処理装置は、たとえば、CD-DAドライバからデータをHDDに転送する場合には、２３５２Byte長のセクタを単位としてCD-DAからデータをバッファに読み込み、バッファのデータを５１２Byte長のセクタを単位としてHDDに書き込む必要がある。
【０００５】
したがって、データ処理装置内に設けるバッファサイズを任意に定めたのでは、効率的に外部記憶装置間のデータ転送を行うことができない。たとえば、バッファサイズがCD-DAのセクタのデータ長の整数倍でなければ、バッファの全てをCD-DAからのデータ読み出しに使用することができず、バッファサイズがHDDのセクタのデータ長の整数倍でなければ、バッファにバッファサイズ分格納されたデータの全てを、まとめてHDDに書き込むことはできない。
【０００６】
そこで、本発明は、データ処理装置において、外部記憶装置間のデータ転送を効率的に行うことを課題とする。
【課題を解決するための手段】
【０００７】
前記課題達成のために、本発明は、最小データアクセス単位のデータサイズが相互に異なる第１の外部記憶装置と第２の外部記憶装置とを含む複数の外部記憶装置を備えたデータ処理装置に、記憶装置と、データの転送元となる第１の外部記憶装置から、データの転送先となる第２の外部記憶装置にデータを転送する場合に、第１の外部記憶媒体の最小データアクセス単位のデータサイズと第２の外部記憶媒体の最小データアクセス単位のデータサイズとの最小公倍数の、正の整数倍のバッファサイズを持つバッファを前記記憶装置の記憶空間上に設定するバッファ設定手段と、前記第１の外部記憶装置から前記第２の外部記憶装置に転送するデータを、前記バッファサイズと同じデータサイズ毎に、順次、対象データとして、当該各対象データの前記第１の外部記憶装置からバッファへのリードと前記バッファから前記第２の外部記憶装置へのライトを行うデータ転送手段とを備えたものである。
【０００８】
このようなデータ処理装置によれば、バッファサイズの全てを転送元外部記憶装置からのデータのリードと、転送先外部記憶装置へのライトに用いることができる。また、後に発明の実施の形態において詳述するように、第１の外部記憶装置からバッファにリード可能なデータサイズと、バッファから第２の外部記憶装置にライト可能なデータサイズの違いによって生じる端数データの処理のためのオーバーヘッドも発生しない。
【０００９】
したがって、外部記憶装置間のデータ転送を効率的に行うことができる。
なお、以上のデータ処理装置において、前記第１の外部記憶装置や第２の外部記憶装置は、CDまたはDVDを再生するドライブ装置やハードディスクドライブ装置などであってよい。また、この場合、各外部記憶装置の最小データアクセス単位は前記ドライブ装置に装着された記録媒体のセクタやハードディスクのセクタとなる。また、以上のデータ処理装置において、前記第１の外部記憶装置から前記第２の外部記憶装置に転送するデータは、ファイルであってよい。なお、ここでいうファイルには、CD-DAのオーディオトラックを含む。
【発明の効果】
【００１０】
以上のように、本発明によれば、外部記憶装置間のデータ転送を効率的に行うことができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態をオーディオ装置への適用を例にとり説明する。
図１に、本実施形態に係るオーディオ装置の構成を示す。
図示するように、本オーディオ装置は、汎用コンピュータと同様の構成を、その基本構成として備えている。
すなわち、プロセッサバス３に接続したCPU１とキャッシュ２とブリッジ４、ブリッジ４を介してプロセッサバス３に接続するグラフィックコントローラ７とI/Oコントローラ９とメモリコントローラ５、グラフィックコントローラ７によって表示が制御される表示装置８、メモリコントローラ５によってアクセスが制御されるメモリ６、I/Oコントローラ９によって入出力が制御される入力装置１０とHDD１１とCD/DVDドライバ１２とサウンドコントローラ１３、サウンドコントローラ１３によって出力が処理されるスピーカ１４などを備えている。
【００１２】
そして、このような構成において、CPU１のHDD１１に記憶されたプログラムのロードと実行によって、図２に示す機能構成がオーディオ装置上に形成される。
すなわち、オーディオ装置は、機能的には、オペレーティングシステム２００と、オペレーティングシステム２００の上でアプリケーションとして稼働するオーディオ再生アプリケーション２１０、リッピング処理アプリケーション２１２、その他のアプリケーションである他アプリケーション２１２、メモリ６を用いて構成される主記憶２２０等を備えている。
【００１３】
そして、このような構成において、オペレーティングシステム２００は、オーディオ再生アプリケーション２１０やリッピング処理アプリケーション２１２や他アプリケーション２１２に、入力装置１０や表示装置８やスピーカやHDD１１やCD/DVDドライバ１２や主記憶２２０との間の入出力機能を提供する。また、このために、オペレーティングシステム２００は、HDD１１やCD/DVDドライバ１２や表示装置８や入力装置１０などの周辺装置との間の入出力を制御するデバイスドライバ２０２や、デバイスドライバ２０２を利用してアプリケーションに対してファイルに対するアクセス機能を提供するファイルシステムドライバ２０１などを備えている。また、ファイルシステムドライバ２０１は、CD/DVDドライバ１２に装着されたCD/DVDドライバ１２に装着されたCD-DAのオーディオトラックを、各アプリケーションがファイルとして取り扱えるようにする処理なども行う。
【００１４】
すなわち、たとえば、オペレーティングシステム２００は、オーディオ再生アプリケーション２１０に、HDD１１に格納されたオーディオファイルや、CD/DVDドライバ１２に装着されたCD-DAのオーディオトラックや、CD/DVDドライバ１２に装着されたCD-ROMやDVD-ROMなどの記憶媒体のオーディオファイルへのアクセス機能を提供する。そして、オーディオ再生アプリケーション２１０は、この機能を利用してオーディオファイルやオーディオトラックをHDD１１やCD/DVDドライバ１２に装着されたCD-DAやCD-ROMやDVD-ROMから読み出して再生し、スピーカから出力することができる。
【００１５】
以下、リッピング処理アプリケーション２１２が行う処理について説明する。
リッピング処理アプリケーション２１２は、ユーザの入力装置１０からの要求に応じて、CD/DVDドライバ１２に装着されたCD-DAやCD-ROMやDVD-ROMに記録されているオーディオトラックやオーディオファイルのデータを、HDD１１に記録する処理を行う。または、CD/DVDドライバ１２にCD-DAやCD-ROMやDVD-ROMが装着された時点で、自動的に、装着されたCD-DAやCD-ROMやDVD-ROMに記録されている各オーディオトラックや各オーディオファイルのデータを、HDD１１に記録する処理を行う。
【００１６】
ここで、リッピング処理部は、CD/DVDドライバ１２にCD-DAやCD-ROMやDVD-ROMに記録されているオーディオトラックやオーディオファイルのデータのHDD１１への記録を、各オーディオトラックや各オーディオファイルについて、以下に示すファイル転送処理を実行することにより行う。
【００１７】
図３に、このファイル転送処理の手順を示す。
図示するように、このファイル転送処理では、オペレーティングシステム２００を介してCD/DVDドライバ１２に装着されているCD-DAまたはCD-ROMまたはDVD-ROMである転送元ボリュームのセクタサイズを取得する（ステップ３０２）。ここで、CD-DAとCD-ROMの場合はセクタサイズが２３５２Byte、DVD-ROMの場合はセクタサイズが２０４８Byteとなる。
【００１８】
次に、オペレーティングシステム２００を介してデータの転送先となるボリュームのセクタサイズを取得する（ステップ３０４）。ここでは、HDD１１が転送先のボリュームであり、そのセクタサイズは５１２Byteとなる。
そして、転送元のボリュームのセクタサイズと転送先のボリュームのセクタサイズの最小公倍数の、正の整数倍のサイズであって、現時点で主記憶２２０に確保できる容量以下または所定のしきい値以下のサイズをバッファサイズとして設定する（ステップ３０６）。すなわち、たとえば、転送元のボリュームがCD-DAとCD-ROMの場合は、そのセクタサイズと転送先ボリュームであるHDD１１のセクタサイズとの最小公倍数は７５２６４Byteとなるので、７５２６４×ｎ（ｎは正の整数）Byteがバッファサイズとして設定される。また、転送元のボリュームがDVD-ROMの場合は、そのセクタサイズと転送先ボリュームであるHDD１１のセクタサイズとの最小公倍数は２０４８Byteとなるので、２０４８×ｎByteがバッファサイズとして設定される。
【００１９】
次に、設定したバッファサイズをＬとして、主記憶２２０のバッファサイズＬ分の大きさの領域をバッファとして確保し（ステップ３０８）、転送元ボリュームの転送元ファイル（転送元ボリュームがCD-DAの場合は実際にはトラック）をオープンし（ステップ３１０）、転送先ボリュームに転送先ファイルを作成する（ステップ３１２）。
【００２０】
そして、転送元ファイルから読み出していないデータのデータサイズがバッファサイズＬ未満となるか（ステップ３１６）、転送元ファイルから全てのデータの読み出しが完了するまで（ステップ３２２）、ｉを０から１ずつ増加させながら（ステップ３１４、３２４）以下の処理を行う。
【００２１】
すなわち、転送元ファイルより、転送元ファイル中のｉ×ＬByteから｛（ｉ＋１）×Ｌ-１｝ByteまでのデータサイズＬのデータをバッファにリードする（ステップ３１８）。そして、バッファに格納されたデータサイズＬのデータを、転送先ファイルのｉ×Ｌからｉ×Ｌ＋Ｌまでのデータとしてライトする（ステップ３２０）。
【００２２】
すなわち、転送元ファイルの先頭から順次データサイズＬのデータをリードしてバッファに格納し、バッファに格納したデータサイズＬのデータを、転送先ファイルの先頭から順次ライトする。
ここで、この転送元ファイルのデータのバッファへの読み出しと、転送先ファイルへのバッファのデータの書き出しは、オペレーティングシステム２００がアプリケーションに提供するオペレーティングシステム２００の内部バッファを使用せずに、アプリケーションが自身で用意したバッファとファイルとの間で直接行われる。すなわち、オペレーティングシステム２００は、内部バッファを用いることによりアプリケーションにバイト単位でファイルの任意のデータのアクセス機能を提供するＡＰＩと、アプリケーションにセクタ単位に直接ファイルのデータにアクセスする機能を提供するＡＰＩを備えており、ファイル転送処理では、後者のＡＰＩを用いて、転送元ファイルのデータのバッファへの読み出しと、転送先ファイルへのバッファのデータの書き出しを行う。なお、一般のオペレーティングシステム２００が確保する内部バッファは容量が小さく、ファイルなどの比較的容量が大きなデータについての高速な転送の用途には適していない。
【００２３】
そして、転送元ファイルから全てのデータの読み出しが完了したならば（ステップ３２２）、転送元ファイルと転送先ファイルをクロウズし（ステップ３３４）、処理を終了する。
一方、転送元ファイルから読み出していないデータのデータサイズがバッファサイズＬ未満となった場合には（ステップ３１６）、この残るＬ未満のデータサイズのデータを、転送元ファイルからリードして転送先ファイルにライトする処理を行う。
すなわち、まず、転送元ファイルから読み出していないデータのデータサイズ以上のサイズとなる、転送元ボリュームのセクタサイズの最小倍数をＫとして求める（ステップ３２６）。また、転送元ファイルから読み出していないデータのデータサイズ以上のサイズとなる、転送先ボリュームのセクタサイズの最小倍数をＪとして求める（ステップ３２８）。
【００２４】
そして、転送元ファイルより、転送元ファイル中の読み出していないデータの先頭からデータサイズＫのデータをバッファにリードする（ステップ３３０）。そして、バッファの先頭からデータサイズＪのデータを、転送先ファイルの既存のデータ以降のデータとしてライトする（ステップ３２０）。
【００２５】
そして、転送元ファイルと転送先ファイルをクロウズし（ステップ３３４）、処理を終了する。
以上、ファイル転送処理について説明した。
ここで、図４に以上のファイル転送処理の処理例を示す。
図示するように、ここでは説明の簡明化のために、転送先ボリュームのセクタサイズは、転送元ボリュームのセクタサイズの３/２倍であり、転送元ファイルが転送元ボリュームのセクタ＃１〜＃６のセクタに記録されている場合を例にとり説明する。
この場合、本実施形態に係るファイル転送処理では、バッファとして転送元ボリュームのセクタサイズと転送先ボリュームのセクタサイズの最小公倍数（転送元ボリュームのセクタサイズの３倍＝転送先ボリュームのセクタサイズの２倍）の、正の整数倍のバッファサイズのバッファが確保される。
【００２６】
まず、本実施形態の有効性の比較例として、転送元ボリュームのセクタサイズと転送先ボリュームのセクタサイズの最小公倍数の、正の整数倍とならないサイズである、転送元ボリュームのセクタサイズの４倍のバッファサイズを持つバッファを用いた場合のファイル転送例を図中ａに示す。
【００２７】
この場合は、まずａ１に示すように、転送元ファイルの＃１〜＃４のセクタをバッファにリードし、バッファのデータを転送先ファイルの＃１１から＃１３にライトする。ただし、この時点でバッファに転送先ファイルの３セクタ分のデータは格納されていないので、転送先ファイルの＃１３のセクタの後半部分４０１のデータは無意なデータとなる。
【００２８】
そこで、この転送先ファイルの＃１３のセクタを完全なものとするために、次に、ａ２に示すように転送先ファイルの＃１３のセクタをバッファにリードする。また、ａ３に示すように、このバッファ内に格納した転送先ファイルの＃１３のセクタの後半部分に上書する形態で、バッファに転送元ファイルの＃５と＃６のセクタをリードする。
【００２９】
そして、最後にバッファのデータを転送先ファイルの２セクタ分、転送先ファイルの＃１３と＃１４のセクタにライトする。
以上のように、この場合には、転送元ファイルからの２度のリード、転送先ファイルからの１度のリード、転送先ファイルへの２度のライトが必要となる。そして、バッファと転送元ボリューム及び転送先ボリュームとの間のデータの総転送量は、転送元ファイルのデータ量の２倍に、転送先ボリュームのセクタのデータ量の２倍を加えた量となる。
【００３０】
また、転送先ファイルへのリードとライトが交互に行われているために、転送先ボリュームがディスクキャッシュを備えているHDD１１である場合には、ディスクキャッシュによる効果が発揮されず、逆に、リードとライトのディスクキャッシュ処理を切り替えるためのオーバーヘッドが生じる場合もある。
【００３１】
次に、以上と同じ転送元ボリューム、転送元ファイル、転送先ボリュームについて、本実施形態のファイル転送処理を行った場合のファイル転送例を示す。
まず、この場合、前述したようにバッファとして転送元ボリュームのセクタサイズと転送先ボリュームのセクタサイズの最小公倍数（転送元ボリュームのセクタサイズの３倍＝転送先ボリュームのセクタサイズの２倍）の、正の整数倍のバッファサイズのバッファが確保される。ここでは、一例として、転送元ボリュームのセクタサイズの３倍のバッファサイズを持つバッファが確保されるものとする。
【００３２】
この場合、まずｂ１に示すように、転送元ファイルの＃１〜＃３のセクタをバッファにリードし、バッファのデータを転送先ファイルの＃１１と＃１２にライトする。そして、次に、ｂ２に示すように、転送元ファイルの＃４〜＃６のセクタをバッファにリードし、バッファのデータを転送先ファイルの＃１３と＃１４にライトする。
【００３３】
以上のように、この場合には、転送元ファイルからの２度のリード、転送先ファイルへの２度のライトでファイルの転送が完了している。そして、バッファと転送元ボリューム及び転送先ボリュームとの間のデータの総転送量は、転送元ファイルのデータ量の２倍となる。
すなわち、以上の比較例では、本実施形態のファイル転送によって、より少ないバッファサイズのバッファを用いているにもかかわらず、より効率的で高速なファイル転送が実現されている。
以上、本発明の実施形態について説明した。
なお、以上の実施形態では、外部記憶装置としてHDD１１、CD/DVDドライブを対象とする場合について説明したが、本実施形態は外部記憶装置として、カード型またはスティック型のメモリ装置や、その他の任意の外部記憶装置を対象とする場合について同様に適用することができる。
【００３４】
また、以上では、アプリケーションにおいてのファイル転送処理を行う場合について説明したが、本実施形態で示したアプリケーションからのファイルやトラックの転送の要求に応じて、オペレーティングシステム２００が行う機能として、ファイル転送処理をオペレーティングシステム２００に備えるようにしてもよい。または、各アプリケーションがファイルの転送に共用可能なライブラリ関数（ＤＬＬなど）として、以上のファイル転送処理を実現するようにしてもよい。
【００３５】
また、以上では、オーディオ装置への適用を例にとり説明したが、本実施形態に係る外部記憶装置間のデータ転送の技術は、複数の外部記憶装置を備えたデータ処理装置における外部記憶装置間のデータ転送に同様に適用することができる。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施形態に係るオーディオ装置の構成を示すブロック図である。
【図２】本発明の実施形態に係るオーディオ装置の機能構成を示すブロック図である。
【図３】本発明の実施形態に係るファイル転送処理を示すフローチャートである。
【図４】本発明の実施形態に係るファイル転送処理の処理例を示す図である。
【符号の説明】
【００３７】
１…CPU、２…キャッシュ、３…プロセッサバス、４…ブリッジ、５…メモリコントローラ、６…メモリ、７…グラフィックコントローラ、８…表示装置、９…I/Oコントローラ、１０…入力装置、１１…HDD、１２…CD/DVDドライバ、１３…サウンドコントローラ、２００…オペレーティングシステム、２０１…ファイルシステムドライバ、２０２…デバイスドライバ、２１０…オーディオ再生アプリケーション、２１２…リッピング処理アプリケーション、２１２…他アプリケーション、２２０…主記憶。
【図１】
2006018426.tif 000003
【図２】
2006018426.tif 000004
【図３】
2006018426.tif 000005
【図４】
2006018426.tif 000006