(57)【要約】【課題】  例えばシステムのメインメモリにバッファリングすることなくデータのコピー処理の高速化を実現するコピー装置等を提供する。【解決手段】  コピー装置は、第１の記憶装置のデータを第２の記憶装置にコピーするコピー処理を実行するコピー実行部と、第１の記憶装置に対するアクセス制御を行う第１のアクセス制御部と、第２の記憶装置に対するアクセス制御を行う第２のアクセス制御部とを含む。第１のアクセス制御部が、第１の記憶装置からのデータの読み出し要求を記録した読み出し要求ログを生成し、第２のアクセス制御部が、第２の記憶装置へのデータの書き込み要求を記録した書き込み要求ログを生成する。コピー実行部が、読み出し要求ログに基づいて第１の記憶装置からデータを読み出す制御を行い、書き込み要求ログに基づいて該データを第２の記憶装置に書き込む制御を行う。【選択図】      図６
2008217469.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶装置のデータを第２の記憶装置にコピーするためのコピー装置であって、
前記第１の記憶装置のデータを前記第２の記憶装置にコピーするコピー処理を実行するコピー実行部と、
前記第１の記憶装置に対して読み出し要求を行って該第１の記憶装置に対するアクセス制御を行う第１のアクセス制御部と、
前記第２の記憶装置に対して書き込み要求を行って該第２の記憶装置に対するアクセス制御を行う第２のアクセス制御部とを含み、
前記第１のアクセス制御部が、前記第１の記憶装置からのデータの１又は複数の読み出し要求を記録した読み出し要求ログを生成すると共に、前記第２のアクセス制御部が、前記第２の記憶装置へのデータの１又は複数の書き込み要求を記録した書き込み要求ログを生成し、
前記コピー実行部が、
前記読み出し要求ログに基づいて前記第１の記憶装置からデータを読み出す制御を行うと共に、前記書き込み要求ログに基づいて該データを前記第２の記憶装置に書き込む制御を行うことを特徴とするコピー装置。
【請求項２】
請求項１において、
各記憶装置に格納されたデータ及び該データの記憶位置を特定するための管理情報のうち前記管理情報に基づいて、前記第１及び第２の記憶装置のデータを管理するためのファイル管理部を含み、
前記ファイル管理部が、
前記読み出し要求ログに記録すべきデータの読み出し要求を前記第１のアクセス制御部に対して指定し、又は前記書き込み要求ログに記録すべきデータの書き込み要求を前記第２のアクセス制御部に対して指定することを特徴とするコピー装置。
【請求項３】
請求項１において、
前記第１及び第２の記憶装置のデータを管理するためのファイル管理部を含み、
前記ファイル管理部が、
前記第１のアクセス制御部に対してコピー用のアドレスを指定し、又は前記第２のアクセス制御部に対して前記アドレスを指定し、
前記アドレスが所定の記憶領域を指定するときに、前記第１のアクセス制御部が前記読み出し要求ログを生成する処理を行うと共に、前記第２のアクセス制御部が前記書き込み要求ログを生成する処理を行うことを特徴とするコピー装置。
【請求項４】
請求項３において、
前記アドレスが、
前記未使用領域を指定するアドレスであることを特徴とするコピー装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記読み出し要求ログ又は前記書き込み要求ログが所定のデータサイズを超えたことを条件に、前記第１又は第２のアクセス制御部がエラーを通知することを特徴とするコピー装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記第１のアクセス制御部が、
前記第１の記憶装置の連続する記憶位置に対する２以上の連続する読み出し要求を、１つの読み出し要求に統合する処理を行うことを特徴とするコピー装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記第２のアクセス制御部が、
前記第２の記憶装置の連続する記憶位置に対する２以上の連続する書き込み要求を、１つの書き込み要求に統合する処理を行うことを特徴とするコピー装置。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記コピー実行部が、
前記コピー処理に先立って、前記第１の記憶装置からの読み出しデータサイズと前記第２の記憶装置への書き込みデータサイズとを一致させる処理を行うことを特徴とするコピー装置。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記第１のアクセス制御部が、
前記読み出し要求ログを生成する第１のドライバラッパ部と、
前記第１の記憶装置に対するアクセス制御を行う第１のドライバ部とを含み、
前記第１のドライバ部が、
前記コピー実行部からの指示により、前記読み出し要求ログに基づいて前記第１の記憶装置からデータを読み出す制御を行うことを特徴とするコピー装置。
【請求項１０】
請求項１乃至９のいずれかにおいて、
前記第２のアクセス制御部が、
前記書き込み要求ログを生成する第２のドライバラッパ部と、
前記第２の記憶装置に対するアクセス制御を行う第２のドライバ部とを含み、
前記第２のドライバ部が、
前記コピー実行部からの指示により、前記書き込み要求ログに基づいて前記第２の記憶装置へのデータを書き込む制御を行うことを特徴とするコピー装置。
【請求項１１】
請求項１乃至１０のいずれか記載のコピー装置により制御されるデータ転送制御回路であって、
ホストとの間でインタフェース処理を行うホストインタフェースと、
第１の記憶装置との間でインタフェース処理を行う第１の記憶装置用インタフェースと、
第２の記憶装置との間でインタフェース処理を行う第２の記憶装置用インタフェースと、
前記ホストインタフェース、前記第１及び第２の記憶装置用インタフェースの各インタフェース間のデータを転送するための共通バスと、
前記共通バスとは別個に、前記第１及び第２の記憶装置用インタフェースの間に設けられた直結バスとを含み、
前記コピー実行部が第１のモードを指定したときには、前記共通バスを介して、前記ホストインタフェース、前記第１又は第２の記憶装置用インタフェースの間でデータが転送され、
前記コピー実行部が第２のモードを指定したときには、前記直結バスを介して、前記第１及び第２の記憶装置用インタフェースの間でデータが転送されることを特徴とするデータ転送制御装置。
【請求項１２】
請求項１乃至１０のいずれか記載のコピー装置と、
ホストとの間でインタフェース処理を行うホストインタフェースと、
第１の記憶装置との間でインタフェース処理を行う第１の記憶装置用インタフェースと、
第２の記憶装置との間でインタフェース処理を行う第２の記憶装置用インタフェースと、
前記ホストインタフェース、前記第１及び第２の記憶装置用インタフェースの各インタフェース間のデータを転送するための共通バスと、
前記共通バスとは別個に、前記第１及び第２の記憶装置用インタフェースの間に設けられた直結バスとを含み、
前記コピー実行部が第１のモードを指定したときには、前記共通バスを介して、前記ホストインタフェース、前記第１又は第２の記憶装置用インタフェースの間でデータが転送され、
前記コピー実行部が第２のモードを指定したときには、前記直結バスを介して、前記第１及び第２の記憶装置用インタフェースの間でデータが転送されることを特徴とする情報処理装置。
【請求項１３】
請求項１乃至１０のいずれか記載のコピー装置を含むことを特徴とする電子機器。
【請求項１４】
請求項１１記載のデータ転送制御装置を含むことを特徴とする電子機器。
【請求項１５】
請求項１２記載の情報処理装置を含むことを特徴とする電子機器。
【請求項１６】
第１の記憶装置のデータを第２の記憶装置にコピーするコピー処理を行う処理装置を制御するためのプログラムであって、
前記第１の記憶装置のデータを前記第２の記憶装置にコピーするコピー処理を実行するコピー実行部と、
前記第１の記憶装置に対して読み出し要求を行って該第１の記憶装置に対するアクセス制御を行う第１のアクセス制御部と、
前記第２の記憶装置に対して書き込み要求を行って該第２の記憶装置に対するアクセス制御を行う第２のアクセス制御部としての機能を、前記処理装置に実現させ、
前記第１のアクセス制御部が、前記第１の記憶装置からのデータの１又は複数の読み出し要求を記録した読み出し要求ログを生成すると共に、前記第２のアクセス制御部が、前記第２の記憶装置へのデータの１又は複数の書き込み要求を記録した書き込み要求ログを生成し、
前記コピー実行部が、
前記読み出し要求ログに基づいて前記第１の記憶装置からデータを読み出す制御を行うと共に、前記書き込み要求ログに基づいて該データを前記第２の記憶装置に書き込む制御を行うことを特徴とするプログラム。
【請求項１７】
請求項１６において、
各記憶装置に格納されたデータ及び該データの記憶位置を特定するための管理情報のうち前記管理情報に基づいて、前記第１及び第２の記憶装置のデータを管理するためのファイル管理部としての機能を、前記処理装置に実現させ、
前記ファイル管理部が、
前記読み出し要求ログに記録すべきデータの読み出し要求を前記第１のアクセス制御部に対して指定し、又は前記書き込み要求ログに記録すべきデータの書き込み要求を前記第２のアクセス制御部に対して指定することを特徴とするプログラム。
【請求項１８】
請求項１６において、
前記第１及び第２の記憶装置のデータを管理するためのファイル管理部としての機能を、前記処理装置に実現させ、
前記ファイル管理部が、
前記第１のアクセス制御部に対してコピー用のアドレスを指定し、又は前記第２のアクセス制御部に対して前記アドレスを指定し、
前記アドレスが所定の記憶領域を指定するときに、前記第１のアクセス制御部が前記読み出し要求ログを生成する処理を行うと共に、前記第２のアクセス制御部が前記書き込み要求ログを生成する処理を行うことを特徴とするプログラム。
【請求項１９】
請求項１６乃至１８のいずれかにおいて、
前記第１のアクセス制御部が、
前記読み出し要求ログを生成する第１のドライバラッパ部と、
前記第１の記憶装置に対するアクセス制御を行う第１のドライバ部とを含み、
前記第１のドライバ部が、
前記コピー実行部からの指示により、前記読み出し要求ログに基づいて前記第１の記憶装置からデータを読み出す制御を行うことを特徴とするプログラム。
【請求項２０】
請求項１６乃至１９のいずれかにおいて、
前記第２のアクセス制御部が、
前記書き込み要求ログを生成する第２のドライバラッパ部と、
前記第２の記憶装置に対するアクセス制御を行う第２のドライバ部とを含み、
前記第２のドライバ部が、
前記コピー実行部からの指示により、前記書き込み要求ログに基づいて前記第２の記憶装置へのデータを書き込む制御を行うことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コピー装置、データ転送制御装置、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
中央演算処理装置（Central Processing Unit：以下、ＣＰＵ）及び主記憶装置を含む処理装置（処理部）には、補助記憶装置として大容量のハードディスク装置や携帯可能な記憶メディア（記録メディア）が接続される。この処理装置では、主記憶装置とハードディスク装置との間、主記憶装置と記憶メディアとの間、ハードディスク装置と記憶メディアとの間で、例えばファイル形式のデータが頻繁に転送される。
【０００３】
ＣＰＵの高速化、処理の複雑化、処理対象のデータサイズの大容量化が進み、主記憶装置とハードディスク装置との間、主記憶装置と記憶メディアとの間、ハードディスク装置と記憶メディアとの間のデータ転送速度が、処理速度のボトルネックとなっている。
【０００４】
例えば特許文献１には、記憶メディア上の全ファイルを別の記憶メディアにコピーする際に、コピー元の記憶メディアにおいてコピー元のクラスタを決定すると共に、コピー先の記憶メディアにおいてコピー先のクラスタを決定し、これらのクラスタの位置でコピーすべきかどうかを判定するファイルコピー装置が開示されている。このファイルコピー装置では、ファイルを構成しないクラスタについてコピーしないので、データの読み出し回数と書き込み回数を減らしてコピー処理に伴うデータ転送速度の高速化を図る。
【０００５】
また、例えば特許文献２には、主記憶装置と補助記憶装置との間のデータ転送時間を短縮するＤＭＡ装置が開示されている。このＤＭＡ装置は、主記憶装置からのデータを圧縮して補助記憶装置に圧縮データを転送すると共に、補助記憶装置からのデータを復元して主記憶装置に復元データを転送する。これにより、補助記憶装置と主記憶装置との間のデータ転送時間を短縮すると共に、補助記憶装置の容量を節約する。
【特許文献１】特開２００６−３２３４６２号公報
【特許文献２】特開平５−７３４７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示されたファイルコピー装置では、ファイルシステムを経由することなく、ディスクイメージをコピーするものである。そのため、記憶メディアの全ファイルを別の記憶メディアにコピーする場合にはデータ転送を高速化できるものの、１ファイルのみをコピーする場合には却ってコピーに伴うデータ転送速度の高速化を期待できなくなる。更に、コピー対象となったデータの転送時間を短縮する技術については開示されておらず、公知技術の通りＣＰＵに接続されるメモリにデータが一旦蓄積された後に、該メモリから読み出されてコピー先の記憶メディアに書き込まれるものと考えられる。このように、特許文献１の技術は、データの読み出し回数及び書き込み回数を削減してコピー処理時間を短縮する技術であって、転送されるデータの転送速度自体を高速化することができない。
【０００７】
また、特許文献２に開示されたＤＭＡ装置では、データの圧縮及び復元のためにハードウェア及びソフトウェアが必要となってしまうという問題がある。更に、特許文献２の技術は、データ転送量を削減してコピー処理時間を短縮する技術であって、転送されるデータの転送速度事態を高速化することができない。
【０００８】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、例えばシステムのメインメモリにバッファリングすることなくデータのコピー処理の高速化を実現するコピー装置、データ転送制御装置、情報処理装置及びプログラムを提供することにある。
【０００９】
また本発明の他の目的は、できるだけ付加回路を追加することなくデータのコピー処理の高速化を実現するコピー装置、データ転送制御装置、情報処理装置及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するために本発明は、
第１の記憶装置のデータを第２の記憶装置にコピーするためのコピー装置であって、
前記第１の記憶装置のデータを前記第２の記憶装置にコピーするコピー処理を実行するコピー実行部と、
前記第１の記憶装置に対して読み出し要求を行って該第１の記憶装置に対するアクセス制御を行う第１のアクセス制御部と、
前記第２の記憶装置に対して書き込み要求を行って該第２の記憶装置に対するアクセス制御を行う第２のアクセス制御部とを含み、
前記第１のアクセス制御部が、前記第１の記憶装置からのデータの１又は複数の読み出し要求を記録した読み出し要求ログを生成すると共に、前記第２のアクセス制御部が、前記第２の記憶装置へのデータの１又は複数の書き込み要求を記録した書き込み要求ログを生成し、
前記コピー実行部が、
前記読み出し要求ログに基づいて前記第１の記憶装置からデータを読み出す制御を行うと共に、前記書き込み要求ログに基づいて該データを前記第２の記憶装置に書き込む制御を行うコピー装置に関係する。
【００１１】
本発明においては、第１の記憶装置から第２の記憶装置にデータをコピーする場合に、第１の記憶装置に対する読み出し要求を記録した読み出し要求ログが生成されると共に、第２の記憶装置に対する書き込み要求を記録した書き込み要求ログが生成される。そして、コピー実行部が、読み出し要求ログ及び書き込み要求ログに基づいて第１の記憶装置からデータを読み出す制御を行い、第２の記憶装置のデータを書き込む制御を行うので、複雑なモジュールの解析に伴う転送時間を短縮できるようになる。
【００１２】
また本発明に係るコピー装置では、
各記憶装置に格納されたデータ及び該データの記憶位置を特定するための管理情報のうち前記管理情報に基づいて、前記第１及び第２の記憶装置のデータを管理するためのファイル管理部を含み、
前記ファイル管理部が、
前記読み出し要求ログに記録すべきデータの読み出し要求を前記第１のアクセス制御部に対して指定し、又は前記書き込み要求ログに記録すべきデータの書き込み要求を前記第２のアクセス制御部に対して指定することができる。
【００１３】
また本発明に係るコピー装置では、
前記第１及び第２の記憶装置のデータを管理するためのファイル管理部を含み、
前記ファイル管理部が、
前記第１のアクセス制御部に対してコピー用のアドレスを指定し、又は前記第２のアクセス制御部に対して前記アドレスを指定し、
前記アドレスが所定の記憶領域を指定するときに、前記第１のアクセス制御部が前記読み出し要求ログを生成する処理を行うと共に、前記第２のアクセス制御部が前記書き込み要求ログを生成する処理を行うことができる。
【００１４】
上記のいずれかの発明によれば、ファイル管理部が、記録すべき要求を指定するため、第１及び第２の記憶装置に格納されるデータがコピー対象のデータであるか管理情報であるかを解析することなく、従前のファイル管理機構を採用できる。更に、コピー用のアドレスに基づいて、コピー対象のデータであるか管理情報であるかを判別できるようにしたので、付加回路を設けることなく複雑なファイル管理機構に手を加えることなくファイル形式のデータのコピーを高速化できるようになる。
【００１５】
また本発明に係るコピー装置では、
前記アドレスが、
前記未使用領域を指定するアドレスであってもよい。
【００１６】
本発明によれば、新たな付加回路を一切不要にできる。
【００１７】
また本発明に係るコピー装置では、
前記読み出し要求ログ又は前記書き込み要求ログが所定のデータサイズを超えたことを条件に、前記第１又は第２のアクセス制御部がエラーを通知することができる。
【００１８】
本発明によれば、コピー処理の信頼性の低下を防ぐことができる。
【００１９】
また本発明に係るコピー装置では、
前記第１のアクセス制御部が、
前記第１の記憶装置の連続する記憶位置に対する２以上の連続する読み出し要求を、１つの読み出し要求に統合する処理を行うことができる。
【００２０】
また本発明に係るコピー装置では、
前記第２のアクセス制御部が、
前記第２の記憶装置の連続する記憶位置に対する２以上の連続する書き込み要求を、１つの書き込み要求に統合する処理を行うことができる。
【００２１】
上記のいずれかの発明によれば、読み出し要求ログ又は書き込み要求ログのデータサイズを削減でき、より多くの読み出し要求又は書き込み要求を記録できるようになる。
【００２２】
また本発明に係るコピー装置では、
前記コピー実行部が、
前記コピー処理に先立って、前記第１の記憶装置からの読み出しデータサイズと前記第２の記憶装置への書き込みデータサイズとを一致させる処理を行うことができる。
【００２３】
本発明においては、第１及び第２の記憶装置のフラグメンテーションや、第１の記憶装置のセクタサイズと第２の記憶装置のセクタサイズとの相違により、１回当たりのデータ読み出し処理とデータ書き込み処理の処理サイズが一致しないことがある。本発明によれば、コピー処理に先立って、両データサイズを一致させる処理を行うようにしたので、コピー処理を複雑化することなく、正しくコピー処理を行うことができるようになる。
【００２４】
また本発明に係るコピー装置では、
前記第１のアクセス制御部が、
前記読み出し要求ログを生成する第１のドライバラッパ部と、
前記第１の記憶装置に対するアクセス制御を行う第１のドライバ部とを含み、
前記第１のドライバ部が、
前記コピー実行部からの指示により、前記読み出し要求ログに基づいて前記第１の記憶装置からデータを読み出す制御を行うことができる。
【００２５】
また本発明に係るコピー装置では、
前記第２のアクセス制御部が、
前記書き込み要求ログを生成する第２のドライバラッパ部と、
前記第２の記憶装置に対するアクセス制御を行う第２のドライバ部とを含み、
前記第２のドライバ部が、
前記コピー実行部からの指示により、前記書き込み要求ログに基づいて前記第２の記憶装置へのデータを書き込む制御を行うことができる。
【００２６】
上記のいずれかの発明によれば、第１又は第２のドライバ部に大幅な変更を行うことなく、上記のコピー処理を実現できるようになる。
【００２７】
また本発明は、
上記のいずれか記載のコピー装置により制御されるデータ転送制御回路であって、
ホストとの間でインタフェース処理を行うホストインタフェースと、
第１の記憶装置との間でインタフェース処理を行う第１の記憶装置用インタフェースと、
第２の記憶装置との間でインタフェース処理を行う第２の記憶装置用インタフェースと、
前記ホストインタフェース、前記第１及び第２の記憶装置用インタフェースの各インタフェース間のデータを転送するための共通バスと、
前記共通バスとは別個に、前記第１及び第２の記憶装置用インタフェースの間に設けられた直結バスとを含み、
前記コピー実行部が第１のモードを指定したときには、前記共通バスを介して、前記ホストインタフェース、前記第１又は第２の記憶装置用インタフェースの間でデータが転送され、
前記コピー実行部が第２のモードを指定したときには、前記直結バスを介して、前記第１及び第２の記憶装置用インタフェースの間でデータが転送されるデータ転送制御装置に関係する。
【００２８】
本発明によれば、例えばシステムのメインメモリにバッファリングすることなくデータのコピー処理の高速化を実現するデータ転送制御装置を提供できる。また、本発明によれば、できるだけ付加回路を追加することなくデータのコピー処理の高速化を実現するデータ転送制御装置を提供できる。
【００２９】
また本発明は、
上記のいずれか記載のコピー装置と、
ホストとの間でインタフェース処理を行うホストインタフェースと、
第１の記憶装置との間でインタフェース処理を行う第１の記憶装置用インタフェースと、
第２の記憶装置との間でインタフェース処理を行う第２の記憶装置用インタフェースと、
前記ホストインタフェース、前記第１及び第２の記憶装置用インタフェースの各インタフェース間のデータを転送するための共通バスと、
前記共通バスとは別個に、前記第１及び第２の記憶装置用インタフェースの間に設けられた直結バスとを含み、
前記コピー実行部が第１のモードを指定したときには、前記共通バスを介して、前記ホストインタフェース、前記第１又は第２の記憶装置用インタフェースの間でデータが転送され、
前記コピー実行部が第２のモードを指定したときには、前記直結バスを介して、前記第１及び第２の記憶装置用インタフェースの間でデータが転送される情報処理装置に関係する。
【００３０】
本発明によれば、例えばシステムのメインメモリにバッファリングすることなくデータのコピー処理の高速化を実現する情報処理装置を提供できる。また、本発明によれば、できるだけ付加回路を追加することなくデータのコピー処理の高速化を実現する情報処理装置を提供できる。
【００３１】
また本発明は、
上記のいずれか記載のコピー装置を含む電子機器に関係する。
【００３２】
また本発明は、
上記記載のデータ転送制御装置を含む電子機器に関係する。
【００３３】
また本発明は、
上記記載の情報処理装置を含む電子機器に関係する。
【００３４】
上記のいずれかの発明によれば、例えばシステムのメインメモリにバッファリングすることなくデータのコピー処理の高速化を実現する電子機器を提供できる。また、本発明によれば、できるだけ付加回路を追加することなくデータのコピー処理の高速化を実現する電子機器を提供できる。
【００３５】
また本発明は、
第１の記憶装置のデータを第２の記憶装置にコピーするコピー処理を行う処理装置を制御するためのプログラムであって、
前記第１の記憶装置のデータを前記第２の記憶装置にコピーするコピー処理を実行するコピー実行部と、
前記第１の記憶装置に対して読み出し要求を行って該第１の記憶装置に対するアクセス制御を行う第１のアクセス制御部と、
前記第２の記憶装置に対して書き込み要求を行って該第２の記憶装置に対するアクセス制御を行う第２のアクセス制御部としての機能を、前記処理装置に実現させ、
前記第１のアクセス制御部が、前記第１の記憶装置からのデータの１又は複数の読み出し要求を記録した読み出し要求ログを生成すると共に、前記第２のアクセス制御部が、前記第２の記憶装置へのデータの１又は複数の書き込み要求を記録した書き込み要求ログを生成し、
前記コピー実行部が、
前記読み出し要求ログに基づいて前記第１の記憶装置からデータを読み出す制御を行うと共に、前記書き込み要求ログに基づいて該データを前記第２の記憶装置に書き込む制御を行うプログラムに関係する。
【００３６】
また本発明に係るプログラムでは、
各記憶装置に格納されたデータ及び該データの記憶位置を特定するための管理情報のうち前記管理情報に基づいて、前記第１及び第２の記憶装置のデータを管理するためのファイル管理部としての機能を、前記処理装置に実現させ、
前記ファイル管理部が、
前記読み出し要求ログに記録すべきデータの読み出し要求を前記第１のアクセス制御部に対して指定し、又は前記書き込み要求ログに記録すべきデータの書き込み要求を前記第２のアクセス制御部に対して指定することができる。
【００３７】
また本発明に係るプログラムでは、
前記第１及び第２の記憶装置のデータを管理するためのファイル管理部としての機能を、前記処理装置に実現させ、
前記ファイル管理部が、
前記第１のアクセス制御部に対してコピー用のアドレスを指定し、又は前記第２のアクセス制御部に対して前記アドレスを指定し、
前記アドレスが所定の記憶領域を指定するときに、前記第１のアクセス制御部が前記読み出し要求ログを生成する処理を行うと共に、前記第２のアクセス制御部が前記書き込み要求ログを生成する処理を行うことができる。
【００３８】
また本発明に係るプログラムでは、
前記アドレスが、
前記未使用領域を指定するアドレスであってもよい。
【００３９】
また本発明に係るプログラムでは、
前記読み出し要求ログ又は前記書き込み要求ログが所定のデータサイズを超えたことを条件に、前記第１又は第２のアクセス制御部がエラーを通知することができる。
【００４０】
また本発明に係るプログラムでは、
前記第１のアクセス制御部が、
前記第１の記憶装置の連続する記憶位置に対する２以上の連続する読み出し要求を、１つの読み出し要求に統合する処理を行うことができる。
【００４１】
また本発明に係るプログラムでは、
前記第２のアクセス制御部が、
前記第２の記憶装置の連続する記憶位置に対する２以上の連続する書き込み要求を、１つの書き込み要求に統合する処理を行うことができる。
【００４２】
また本発明に係るプログラムでは、
前記コピー実行部が、
前記コピー処理に先立って、前記第１の記憶装置からの読み出しデータサイズと前記第２の記憶装置への書き込みデータサイズとを一致させる処理を行うことができる。
【００４３】
また本発明に係るプログラムでは、
を特徴とするプログラム。
【００４４】
前記第１のアクセス制御部が、
前記読み出し要求ログを生成する第１のドライバラッパ部と、
前記第１の記憶装置に対するアクセス制御を行う第１のドライバ部とを含み、
前記第１のドライバ部が、
前記コピー実行部からの指示により、前記読み出し要求ログに基づいて前記第１の記憶装置からデータを読み出す制御を行うことができる。
【００４５】
また本発明に係るプログラムでは、
前記第２のアクセス制御部が、
前記書き込み要求ログを生成する第２のドライバラッパ部と、
前記第２の記憶装置に対するアクセス制御を行う第２のドライバ部とを含み、
前記第２のドライバ部が、
前記コピー実行部からの指示により、前記書き込み要求ログに基づいて前記第２の記憶装置へのデータを書き込む制御を行うことができる。
【００４６】
上記のいずれかの発明において、処理装置はＣＰＵを含むことができ、処理装置をコンピュータやプロセッサに置き換えてもよい。
【発明を実施するための最良の形態】
【００４７】
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
【００４８】
１．  情報処理装置
図１に、本実施形態における情報処理装置が適用された電子機器の構成の概要を示す。
【００４９】
電子機器１０は、情報処理装置（ダイレクトコピー装置、より広義にはコピー装置、処理装置）１００と、第１の記憶装置としてのハードディスク装置（Hard Disk Drive：以下、ＨＤＤ）２０と、第２の記憶装置としてのＵＳＢ(Universal Serial Bus) Ｍａｓｓ Ｓｔｏｒａｇｅ装置（以下、ＵＳＢデバイス）３０とを含む。情報処理装置１００は、ＨＤＤ２０に格納されたファイル形式のデータを、ＵＳＢデバイス３０に転送し、又はＵＳＢデバイス３０に格納されたファイル形式のデータをＨＤＤ２０に転送する。
【００５０】
情報処理装置１００は、処理部１１０と、データ転送制御部１４０とを含む。処理部１１０は、図示しないＣＰＵを有し、該ＣＰＵがプログラムに対応した処理を実行することで、上記のファイル形式のデータの転送を行って、いわゆるファイルコピー処理を実現する。
【００５１】
このような電子機器としては、例えば携帯電話機、携帯型情報機器（ＰＤＡ等）、デジタルカメラ、プロジェクタ、携帯型オーディオプレーヤ、マスストレージデバイス、ビデオカメラ、電子手帳、ＧＰＳ（Global Positioning System）装置、メモリカード等のアクセス制御を行うメモリコントローラを含む情報処理機器、センサ装置を含む携帯用情報処理機器、ゲーム装置、プロジェクタ（投写型表示装置）等がある。
【００５２】
図２に、図１の情報処理装置１００の構成例のブロック図を示す。
【００５３】
処理部１１０は、ＣＰＵ１１２と、メインメモリ１１４とを含む。ＣＰＵ１１２とメインメモリ１１４とは、メモリバス１１６を介して接続される。メインメモリ１１４は、ＣＰＵ１１２において処理されるプログラムが格納されるプログラムメモリとして機能したり、ＣＰＵ１１２の処理結果等が一時的に格納される作業メモリとして機能したりする。従って、ＣＰＵ１１２は、上述のようにメインメモリ１１４に格納されたプログラムを読み出して該プログラムに対応した処理を実行できる。
【００５４】
データ転送制御回路（データ転送制御部、データ転送制御装置）１４０は、ＣＰＵインタフェース（InterFace：以下、Ｉ／Ｆ）回路（ホストインタフェース）１４２と、ＩＤＥ（Integrated Drive Electronics）Ｉ／Ｆ回路（第１の記憶装置用インタフェース）１４４と、ＵＳＢＩ／Ｆ回路（第２の記憶装置用インタフェース）１４６と、制御部１４８とを含む。
【００５５】
ＣＰＵＩ／Ｆ回路１４２は、ＣＰＵバス１６０を介して処理部１１０のＣＰＵ１１２と接続され、ＣＰＵ１１２との間で所与のインタフェース処理を行ってＣＰＵ１１２からのデータの受信処理、ＣＰＵ１１２へのデータの送信処理を行う。
【００５６】
ＩＤＥＩ／Ｆ回路１４４は、ＩＤＥバス１６２を介してＨＤＤ２０と接続され、ＨＤＤ２０との間でＩＤＥ規格又はＩＤＥ規格を発展させた規格に準拠したインタフェース処理を行ってＨＤＤ２０からの読み出しデータの受信処理、ＨＤＤ２０への書き込みデータの送信処理を行う。
【００５７】
ＵＳＢＩ／Ｆ回路１４６は、ＵＳＢバス１６４を介してＵＳＢデバイス３０と接続され、ＵＳＢデバイス３０との間でＵＳＢ規格又はＵＳＢ規格を発展させた規格に準拠したインタフェース処理を行ってＵＳＢデバイス３０からの読み出しデータの受信処理、ＵＳＢデバイス３０への書き込みデータの送信処理を行う。
【００５８】
更にデータ転送制御回路１４０は、共通バス１５０と、直結バス１５２とを含む。共通バス１５０は、ＣＰＵＩ／Ｆ回路１４２、ＩＤＥＩ／Ｆ回路１４４、ＵＳＢＩ／Ｆ回路１４６に接続され、各Ｉ／Ｆ回路間のデータが転送される。即ち、共通バス１５０を介して、ＣＰＵＩ／Ｆ回路１４２とＩＤＥＩ／Ｆ回路１４４、ＣＰＵＩ／Ｆ回路１４２とＵＳＢＩ／Ｆ回路１４６、ＩＤＥＩ／Ｆ回路１４４とＵＳＢＩ／Ｆ回路１４６との間のデータが転送される。
【００５９】
直結バス１５２は、共通バス１５０と別個に設けられた独立バスである。直結バス１５２は、ＩＤＥＩ／Ｆ回路１４４、ＵＳＢＩ／Ｆ回路１４６に接続され、ＩＤＥＩ／Ｆ回路１４４とＵＳＢＩ／Ｆ回路１４６との間のデータが転送される。即ち、共通バス１５０にデータが供給されることなく、直結バス１５２を介してＩＤＥＩ／Ｆ回路１４４とＵＳＢＩ／Ｆ回路１４６との間のデータが転送される。
【００６０】
制御部１４８は、データ転送制御回路１４０の各部を制御する。より具体的には、制御部１４８は、処理部１１０の処理結果に基づいてデータ転送制御回路１４０の各部を制御する。
【００６１】
なお、図２では、情報処理装置１００にデータ転送制御回路１４０が含まれる構成を有しているが、情報処理装置１００がデータ転送制御回路１４０が省略され、処理部１１０のみであってもよい。
【００６２】
２．  比較例
本実施形態における情報処理装置１００は、ファイル形式のデータをコピーするコピー処理を行う。本実施形態のコピー処理を説明するのに先立って、本実施形態の比較例におけるコピー処理について説明する。
【００６３】
図３に、本実施形態の比較例におけるコピー処理の説明図を示す。
【００６４】
本比較例では、ＨＤＤからＵＳＢデバイスに対してファイル形式のデータをコピーする場合の処理部の動作を示している。
【００６５】
まず、ＨＤＤからＵＳＢデバイスに対してファイル形式のデータをコピーする場合、処理部で実行されるアプリケーションプログラムＡＰＬが、ファイルシステムＦＳに対してファイル読み出し要求ＲＲＱを発行する。このとき、アプリケーションプログラムＡＰＬは、バッファメモリとしてのメインメモリ１１４にデータの書き込み要求ＤＷＲＱを発行する。
【００６６】
ファイルシステムＦＳは、例えばＦＡＴ（File Allocation Table）のように、ＨＤＤのセクタに付された通し番号であるセクタ番号で、どのファイルがどこのセクタに格納されているかを管理する。この情報は、管理情報としてＨＤＤに保存されている。そこで、ファイル読み出し要求ＲＲＱを受けたファイルシステムＦＳは、ＨＤＤドライバＨＤＲに対して、データセクタ読み出し要求ＤＳＲＲＱ１、管理情報読み出し要求ＭＳＲＲＱ１を発行する。
【００６７】
ＨＤＤドライバＨＤＲは、ファイルシステムＦＳからのデータセクタ読み出し要求ＤＳＲＲＱ１、管理情報読み出し要求ＭＳＲＲＱ１を受けて、ＨＤＤ２０に対してデータセクタ読み出し要求ＤＳＲＲＱ２、管理情報読み出し要求ＭＳＲＲＱ２を発行する。
【００６８】
この結果、ＨＤＤ２０から管理情報ＭＩが読み出される。ＨＤＤ２０から読み出された管理情報ＭＩは、ファイルシステムＦＳによって処理される。また、ＨＤＤ２０から読み出されたコピー対象のデータＤＴは、メインメモリ１１４に書き込まれる。
【００６９】
こうして、ＨＤＤ２０からコピー対象のデータの読み出しが完了すると、アプリケーションプログラムＡＰＬは、ＵＳＢデバイス３０へのデータの書き込み処理を開始する。そのため、アプリケーションプログラムＡＰＬは、メインメモリ１１４に対してデータの読み出し要求ＤＲＱを発行すると共に、ファイルシステムＦＳに対してファイル書き込み要求ＷＲＱを発行する。
【００７０】
ファイル書き込み要求ＷＲＱを受けたファイルシステムＦＳは、ＵＳＢドライバＵＤＲに対して、データセクタ書き込み要求ＤＳＷＲＱ１、管理情報書き込み要求ＭＳＷＲＱ１を発行する。
【００７１】
ＵＳＢドライバＵＤＲは、ファイルシステムＦＳからのデータセクタ書き込み要求ＤＳＷＲＱ１、管理情報書き込み要求ＭＳＷＲＱ１を受けて、ＵＳＢＩ／Ｆ回路１４６に対してデータセクタ書き込み要求ＤＳＷＲＱ２、管理情報書き込み要求ＭＳＷＲＱ２を発行する。
【００７２】
ＵＳＢＩ／Ｆ回路１４６は、ＵＳＢドライバＵＤＲからのデータセクタ書き込み要求ＤＳＷＲＱ２、管理情報書き込み要求ＭＳＷＲＱ２を受けて、ＵＳＢデバイス３０であるUSB Mass Storageに対してデータセクタ書き込み要求ＤＳＷＲＱ３、管理情報書き込み要求ＭＳＷＲＱ３を発行する。
【００７３】
この結果、ＵＳＢデバイス３０に対して、ファイルシステムＦＳから管理情報ＭＩが書き込まれる。また、メインメモリ１１４に一旦格納されていたコピー対象のデータＤＴが、ＵＳＢデバイス３０に書き込まれる。
【００７４】
こうしてメインメモリ１１４からＵＳＢデバイス３０へのデータの書き込みとファイルシステムＦＳからＵＳＢデバイス３０への管理情報の書き込みとが終了すると、アプリケーションプログラムＡＰＬは、一連のコピー処理を終了する。
【００７５】
このように、本比較例におけるコピー処理では、一旦メインメモリ１１４にコピー対象のデータがバッファリングされた後に、コピー先のＵＳＢデバイス３０に該データが書き込まれる。また、データ転送経路として、図３の各モジュールを経由するため、コピー処理時間が長くなる。なお、図３では、ＨＤＤ２０からＵＳＢデバイス３０にファイル形式のデータをコピーする例を説明したが、ＵＳＢデバイス３０からＨＤＤ２０にファイル形式のデータをコピーする場合も同様である。
【００７６】
３．  本実施形態の説明
ところで、図２のように単純に直結バス１５２を介して、ファイル形式のデータを転送する場合、次のような問題がある。
【００７７】
ファイル形式のデータを読み出したり書き込んだりする場合、ファイルシステムＦＳがＨＤＤ２０やＵＳＢデバイス３０の管理情報の更新を行う。そのため、ファイルシステムＦＳを除く他のモジュールが、処理対象のセクタの情報がコピー対象のデータであるか、管理情報であるかを区別することができない。そのため、ファイル読み出し時には読み出すべきセクタをどこに送るべきかが不明となり、ファイル書き込み時には書き込むべきセクタをどこから読み出してくるかが不明となる。従って、単純に直結バス１５２を用いたデータ転送を行おうとしても、ファイルシステムＦＳが解析しない限り、どこのセクタから読み出して、どこのセクタに書き込めばよいのか不明である。即ち、ファイル形式のデータのコピー処理には、ファイルシステムの解析結果が必要となる。
【００７８】
その一方、ファイルシステムＦＳの構成は非常に複雑であり、ファイルシステムＦＳを変更してしまうと、設計期間、検証期間が多く費やしてしまうことが知られている。また、ファイルシステムＦＳの信頼性の低下を招く場合もある。従って、できるだけファイルシステムＦＳの変更を避けながら、ファイル形式のデータ転送を高速化できることが望ましい。
【００７９】
更に、ファイルシステムＦＳは、必ずしもファイルの先頭からデータを読み出したり書き込んだりするとは限らない。従って、ファイルの先頭から順番にデータを読み出さない場合であっても、コピー処理の結果が正しくなければならない。
【００８０】
そこで本実施形態では、ファイルシステムＦＳの構成を変更することなく、図３のモジュール構成の変更を最小限に抑え、ファイル形式のデータのコピー処理を実現する。
【００８１】
３．１  ダイレクトコピー処理
３．１．１  直結バス
本実施形態では、図２の直結バス１５２を介して、ＨＤＤ２０とＵＳＢデバイス３０との間でデータ転送するダイレクトコピー処理を行う。こうすることで、コピー対象のデータをメインメモリ１１４に一旦バッファリングする必要がなくなり、コピー処理の高速化を図る。
【００８２】
３．１．２  ログの生成
本実施形態では、ファイルシステムＦＳの構成を変更することなく、ファイルシステムＦＳの解析結果を利用する。そのため、本実施形態では、ファイルシステムＦＳからデータセクタの読み出しや書き込みが指示されたとき、ログ（リスト、履歴）として保存しておき、ダイレクトコピー実行時にログに記録されたセクタの読み出し及び書き込みを一斉に行う。ダイレクトコピーの実行は、アプリケーションプログラムが、一連のダイレクトコピー処理におけるＨＤＤドライバに対するすべてのデータセクタ読み出し要求とＵＳＢドライバに対するすべてのデータセクタの書き込み要求とが終了した時点で開始される。そして、メインメモリ１１４を用いることなくＨＤＤ２０とＵＳＢデバイス３０との間のデータ転送を行う。
【００８３】
３．１．３  データと管理情報の区別
本実施形態では、ファイルシステムＦＳを挟む上位のアプリケーションプログラムと下位のＨＤＤドライバ及びＵＳＢドライバとの間で予め決められた領域のアドレスを仮想バッファのアドレスとし、ダイレクトコピー（コピー）用のアドレスとして定める。
【００８４】
図４に、ダイレクトコピー用のアドレスの説明図を示す。
【００８５】
図１又は図２の情報処理装置１００では、メモリ空間が決められている。このメモリ空間をすべて情報処理装置１００の処理部１１０が使用することはなく、メインメモリ１１４のメモリ空間が割り当てられたメモリ配置領域を含むシステム使用領域ＳＵＲが予め割り当てられている。
【００８６】
そこで、ダイレクトコピー用のアドレスとして、例えば仮想バッファのメモリ領域のアドレスとし、例えば図４のシステム未使用領域ＢＡＲを割り当てることができる。ファイルシステムＦＳは単にアプリケーションプログラムで指定されたアドレスを用いてＨＤＤドライバ及びＵＳＢドライバに対してデータセクタの読み出し要求や書き込み要求を行うため、ファイルシステムＦＳは、そのアドレスがシステム使用領域ＳＵＲであるか否か認識していなくても、ＨＤＤドライバ及びＵＳＢドライバは、ダイレクトコピー用のアドレスか否かを判別できるようになる。そして、ダイレクトコピー用のアドレスを用いたファイルシステムＦＳからのデータセクタ読み出し要求及びデータセクタ書き込み要求が、上述のログの記録対象とし、図２の直結バス１５２を介したデータ転送を行うようにすればよい。その一方で、システム使用領域のアドレスを用いたファイルシステムＦＳからのデータセクタ読み出し要求及びデータセクタ書き込み要求は、ログの非記録対象とすればよい。
【００８７】
なお、ダイレクトコピー用のアドレスとして図４のシステム未使用領域のアドレスとしたが、本実施形態がこれに限定されるものではなく、アプリケーションプログラムとＨＤＤドライバ及びＵＳＢドライバとの間で予め決められたアドレスであればシステム使用領域のアドレスであってもよい。
【００８８】
３．１．４  データ転送順序
本実施形態では、アプリケーションプログラムは、ファイル形式のデータの読み出し要求や書き込み要求の際に、ファイルとしてのデータの位置と仮想バッファのオフセットアドレスと一致させる。これにより、オフセットアドレスにより、ファイル形式のデータそれぞれについてファイルのどの位置であるかを特定できる。
【００８９】
従って、このオフセットアドレスが読み出し側と書き込み側とで１対１に対応していれば、ファイルシステムＦＳがファイルの先頭から順番に読み出し要求及び書き込み要求を行わない場合であっても、コピーされたデータは正確となる。
【００９０】
３．２  具体的な説明
図１又は図２の処理部１１０は、以下の各部の動作を実現するようになっており、各部の実行結果を処理部１１０の処理結果としてデータ転送制御回路１４０の各部が制御される。
【００９１】
図５に、図１又は図２の処理部１１０の構成の概要を示す。
【００９２】
処理部１１０は、アプリケーションプログラム処理部２００、ファイルシステム部（ファイル管理部）２１０、ダイレクトコピー実行部（コピー実行部）２２０、ＨＤＤドライバ（第１のアクセス制御部）２３０、ＵＳＢドライバ（第２のアクセス制御部）２４０を含む。ＨＤＤドライバ２３０は、ＨＤＤドライバラッパ部（第１のドライバラッパ部）２３２、ＨＤＤドライバ部（第１のドライバ部）２３４を含む。ＵＳＢドライバ２４０は、ＵＳＢドライバラッパ部（第２のドライバラッパ部）２４２、ＵＳＢドライバ部（第２のドライバ部）２４４を有する。このような処理部１１０の各部の動作は、上述のようにメインメモリ１１４に格納されたプログラムを実行するＣＰＵ１１２により実現される。
【００９３】
アプリケーションプログラム処理部２００の機能は、メインメモリ１１４に格納される上位アプリケーションプログラムを読み出して該上位アプリケーションプログラムに対応した処理を実行したＣＰＵ１１２により実現される。アプリケーションプログラム処理部２００は、ＨＤＤ２０に格納されたファイル形式のデータをＵＳＢデバイス３０にコピーする指示や、ＵＳＢデバイス３０に格納されたファイル形式のデータをＨＤＤ２０にコピーする指示を行う。
【００９４】
ファイルシステム部（広義にはファイル管理部）２１０の機能は、メインメモリ１１４に格納されるファイルシステムプログラムを読み出して該ファイルシステムプログラムに対応した処理を実行したＣＰＵ１１２により実現される。ファイルシステム部２１０は、ファイル形式のデータを管理して、該データをファイルとしてアクセスするための処理を行う。即ち、ファイルシステム部２１０は、ＨＤＤ２０又はＵＳＢデバイス３０（各記憶装置）に格納されたデータ及び該データの記憶位置を特定するための管理情報のうち管理情報に基づいて、ＨＤＤ２０又はＵＳＢデバイス３０のデータを管理する。
【００９５】
そして、例えばファイルシステム部２１０がダイレクトコピー用のアドレスであることの認識の有無にかかわらず、ファイルシステム部２１０は、ダイレクトコピー用のアドレスを指定することで、１又は複数の読み出し要求を記録した読み出し要求ログに記録すべきデータの読み出し要求をＨＤＤドライバ２３０に対して指定し、又は、１又は複数の書き込み要求を記録した書き込み要求ログに記録すべきデータの書き込み要求をＵＳＢドライバ２４０に対して指定する。
【００９６】
或いは、例えばファイルシステム部２１０がダイレクトコピー用のアドレスであることの認識がない場合には、ファイルシステム部２１０は、アプリケーションプログラム処理部２００からの要求の通り、（ダイレクトコピー用の）アドレスを指定することで、１又は複数の読み出し要求を記録した読み出し要求ログに記録すべきデータの読み出し要求をＨＤＤドライバ２３０に対して指定し、又は、１又は複数の書き込み要求を記録した書き込み要求ログに記録すべきデータの書き込み要求をＵＳＢドライバ２４０に対して指定する。
【００９７】
ダイレクトコピー実行部（広義にはコピー実行部）２２０の機能は、メインメモリ１１４に格納されるダイレクトコピープログラムを読み出して該ダイレクトコピープログラムに対応した処理を実行したＣＰＵ１１２により実現される。ダイレクトコピー実行部２２０は、ＨＤＤ２０に格納されたファイル形式のデータをＵＳＢデバイス３０にコピーするダイレクトコピー処理、又はＵＳＢデバイス３０に格納されたファイル形式のデータをＨＤＤ２０にコピーするダイレクトコピー処理を実行する。より具体的には、ダイレクトコピー実行部２２０は、読み出し要求ログに基づいてＨＤＤ２０からデータを読み出す制御を行うと共に、書き込み要求ログに基づいて該データをＵＳＢデバイス３０に書き込む制御を行う。
【００９８】
ここで、ダイレクトコピー処理とは、図２のデータ転送制御回路１４０の直結バス１５２を介してＨＤＤ２０及びＵＳＢデバイス３０間のデータ転送で実現されるコピー処理をいう。これに対して、図２のデータ転送制御回路１４０の共通バス１５０を介してＨＤＤ２０及びＵＳＢデバイス３０間のデータ転送で実現されるコピー処理を、通常コピー処理という。共通バス１５０を介したデータ転送を行う通常コピー処理は、ＣＰＵＩ／Ｆ１４２を通ってメインメモリ１１４に一旦格納されるため、データ転送時間が長くなるのに対し、直結バス１５２を介したデータ転送を行うダイレクトコピー処理は、メインメモリ１１４に一旦データが格納されることなく転送先にコピー対象のデータが転送されるためデータ転送時間を大幅に短縮できる。
【００９９】
処理部１１０は、少なくとも２種類の動作モードで動作できるようになっており、処理部１１０により第１のモードが指定されたとき、ダイレクトコピー実行部２２０からの指示により、データ転送制御回路１４０は、共通バス１５０を介して、ＣＰＵＩ／Ｆ回路１４２とＩＤＥＩ／Ｆ回路１４４、ＣＰＵＩ／Ｆ回路１４２とＵＳＢＩ／Ｆ回路１４６、ＩＤＥＩ／Ｆ回路１４４とＵＳＢＩ／Ｆ回路１４６との間でデータを転送する。また、処理部１１０により第２のモードが指定されたとき、ダイレクトコピー実行部２２０からの指示により、データ転送制御回路１４０は、直結バス１５２を介して、ＩＤＥＩ／Ｆ回路１４４とＵＳＢＩ／Ｆ回路１４６との間のデータを転送する。
【０１００】
ＨＤＤドライバ２３０は、ＨＤＤ２０からのデータの読み出しやＨＤＤ２０へのデータの書き込みを制御する。より具体的には、ＨＤＤドライバ２３０は、ＨＤＤ２０に対してデータセクタや管理情報の読み出し要求や書き込み要求を行って、データセクタや管理情報の読み出しや書き込み制御（アクセス制御）を行う。
【０１０１】
ＨＤＤドライバ２３０のうちＨＤＤドライバラッパ（driver wrapper）部２３２の機能は、メインメモリ１１４に格納されるＨＤＤドライバラッパプログラムを読み出して該ＨＤＤドライバラッパプログラムに対応した処理を実行したＣＰＵ１１２により実現される。ＨＤＤドライバラッパ部２３２は、ＨＤＤドライバの変更を最小限に抑えるために、ファイルシステムＦＳとＨＤＤドライバとの間に設けられるモジュールである。ＨＤＤドライバラッパ部２３２は、ファイルシステムＦＳからダイレクトコピー用のＨＤＤ２０へのデータセクタ書き込み要求があったときに書き込み要求ログを生成したり、ファイルシステムＦＳからダイレクトコピー用のＨＤＤ２０からのデータ読み出し要求があったときに読み出し要求ログを生成したりする。従って、ＨＤＤドライバ２３０が、ファイルシステムＦＳからダイレクトコピー用のＨＤＤ２０へのデータセクタ書き込み要求があったときに書き込み要求ログを生成したり、ファイルシステムＦＳからダイレクトコピー用のＨＤＤ２０からのデータ読み出し要求があったときに読み出し要求ログを生成したりするということができる。
【０１０２】
ＨＤＤドライバラッパ部２３２は、上記の各要求で指定されたアドレスが図４に示すダイレクトコピー用のアドレスであるか否かを判別することで、ダイレクトコピー用であるか否かを判別する。即ち、ファイルシステム部２１０からのアドレスが所定の記憶領域を指定するときに、ＨＤＤドライバ２３０（ＨＤＤドライバラッパ部２３２）が読み出し要求ログを生成する処理を行う。ＨＤＤドライバラッパ部２３２は、ファイルシステムＦＳからの要求がダイレクトコピー用ではないと判別すると、そのまま各要求をＨＤＤドライバ部２３４に伝える。
【０１０３】
ＨＤＤドライバ部２３４の機能は、メインメモリ１１４に格納されるＨＤＤドライバプログラムを読み出して該ＨＤＤドライバプログラムに対応した処理を実行したＣＰＵ１１２により実現される。ＨＤＤドライバ部２３４は、ＨＤＤ２０をアクセスするための制御を行う。より具体的には、ＨＤＤドライバ部２３４は、ダイレクトコピー実行部２２０からのダイレクトコピー処理の実行指示や、ファイルシステム部２１０からの要求に応じて、ＨＤＤ２０に対してデータセクタや管理情報の読み出し要求や書き込み要求を行って、データセクタや管理情報の読み出しや書き込み制御を行う。
【０１０４】
ＵＳＢドライバ２４０は、ＵＳＢデバイス３０からのデータの読み出しやＵＳＢデバイス３０へのデータの書き込みを制御する。
【０１０５】
ＵＳＢドライバ２４０のうちＵＳＢドライバラッパ（driver wrapper）部２４２の機能は、メインメモリ１１４に格納されるＵＳＢドライバラッパプログラムを読み出して該ＵＳＢドライバラッパプログラムに対応した処理を実行したＣＰＵ１１２により実現される。ＵＳＢドライバラッパ部２４２は、ＵＳＢドライバの変更を最小限に抑えるために、ファイルシステムＦＳとＵＳＢドライバとの間に設けられるモジュールである。ＵＳＢドライバラッパ部２４２は、ファイルシステムＦＳからダイレクトコピー用のＵＳＢデバイス３０へのデータセクタ書き込み要求があったときに書き込み要求ログを生成したり、ファイルシステムＦＳからダイレクトコピー用のＵＳＢデバイス３０からのデータ読み出し要求があったときに読み出し要求ログを生成したりする。従って、ＵＳＢドライバ２４０が、ファイルシステムＦＳからダイレクトコピー用のＵＳＢデバイス３０へのデータセクタ書き込み要求があったときに書き込み要求ログを生成したり、ファイルシステムＦＳからダイレクトコピー用のＵＳＢデバイス３０からのデータ読み出し要求があったときに読み出し要求ログを生成したりするということができる。
【０１０６】
ＵＳＢドライバラッパ部２４２は、上記の各要求で指定されたアドレスが図４に示すダイレクトコピー用のアドレスであるか否かを判別することで、ダイレクトコピー用であるか否かを判別する。即ち、ファイルシステム部２１０からのアドレスが所定の記憶領域を指定するときに、ＵＳＢドライバ２４０（ＵＳＢドライバラッパ部２４２）が書き込み要求ログを生成する処理を行う。ＵＳＢドライバラッパ部２４２は、ファイルシステムＦＳからの要求がダイレクトコピー用ではないと判別すると、そのまま各要求をＵＳＢドライバ部２４４に伝える。
【０１０７】
ＵＳＢドライバ部２４４の機能は、メインメモリ１１４に格納されるＵＳＢドライバプログラムを読み出して該ＵＳＢドライバプログラムに対応した処理を実行したＣＰＵ１１２により実現される。ＵＳＢドライバ部２４４は、ＵＳＢデバイス３０をアクセスするための制御を行う。より具体的には、ＵＳＢドライバ部２４４は、ダイレクトコピー実行部２２０からのダイレクトコピー処理の実行指示や、ファイルシステム部２１０からの要求に応じて、ＵＳＢデバイス３０に対してデータセクタや管理情報の読み出し要求や書き込み要求を行って、データセクタや管理情報の読み出しや書き込み制御を行う。
【０１０８】
なお、図５では処理部１１０の各機能がソフトウェアにより実現されるものとして説明したが、組み合わせ回路、順序回路、専用回路等のハードウェアにより実現されてもよい。
【０１０９】
図６に、本実施形態におけるダイレクトコピー処理の説明図を示す。
【０１１０】
図６において、図３と同一部分には同一符号を付し、適宜説明を省略する。図６においても、ＨＤＤ２０からＵＳＢデバイス３０へのファイル形式のデータのダイレクトコピー処理を例に説明するが、ＵＳＢデバイス３０からＨＤＤ２０へのファイル形式のデータのダイレクトコピー処理も同様である。
【０１１１】
図６において、アプリケーションプログラムＡＰＬの機能は、図５のアプリケーションプログラム処理部２００により実現される。ファイルシステムＦＳの機能は、図５のファイルシステム部２１０によって実現される。ダイレクトコピー実行モジュールＤＣＰの機能は、図５のダイレクトコピー実行部２２０によって実現される。ＨＤＤドライバラッパＨＤＲＷの機能は、図５のＨＤＤドライバラッパ部２３２によって実現される。ＨＤＤドライバＨＤＲの機能は、図５のＨＤＤドライバ部２３４によって実現される。ＵＳＢドライバラッパＵＤＲＷの機能は、図５のＵＳＢドライバラッパ部２４２によって実現される。ＵＳＢドライバＵＤＲの機能は、図５のＵＳＢドライバ部２４４によって実現される。
【０１１２】
図７に、図６のダイレクトコピー処理のシーケンスの一例を示す。
【０１１３】
まず、ＨＤＤ２０からＵＳＢデバイス３０に対してファイル形式のデータをコピーする場合、アプリケーションプログラムＡＰＬが、ファイルシステムＦＳに対してファイル読み出し要求ＲＲＱを発行する。このとき、アプリケーションプログラムＡＰＬは、バッファメモリとしてのメインメモリ１１４にデータの書き込み要求ＤＲＱを発行することはない。
【０１１４】
ファイル読み出し要求ＲＲＱを受けたファイルシステムＦＳは、ＨＤＤドライバＨＤＲではなくＨＤＤドライバラッパＨＤＲＷに対して、データセクタ読み出し要求ＤＳＲＲＱ１、管理情報読み出し要求ＭＳＲＲＱ１を発行する。
【０１１５】
ＨＤＤドライバラッパＨＤＲＷは、上述のように例えばデータセクタ読み出し要求ＤＳＲＲＱ１又は管理情報読み出し要求ＭＳＲＲＱ１に付されたアドレスがダイレクトコピー用のアドレスであるか否かを判別する。そして、ダイレクトコピー用のアドレスであると判別されたとき、ＨＤＤドライバラッパＨＤＲＷは、当該データセクタ読み出し要求ＤＳＲＲＱ１又は管理情報読み出し要求ＭＳＲＲＱ１を読み出し要求ログＲＬＯＧに記録し、読み出し要求ログＲＬＯＧを更新する。このとき、読み出し要求ログＲＬＯＧに対して、アドレスをキーにソート処理が行われる。こうすることで、例えばアドレスの小さい順序で、各アドレスに対応した読み出し要求の順序を変更できる。
【０１１６】
そして、ＨＤＤドライバラッパＨＤＲＷは、ファイルシステムＦＳに対して当該データセクタ読み出し要求ＤＳＲＲＱ１又は管理情報読み出し要求ＭＳＲＲＱ１に対応するデータセクタ読み出し承認ＤＳＲＡＫ１又は管理情報読み出し承認ＭＳＲＡＫ１を返す。これを受けたファイルシステムＦＳは、アプリケーションプログラムＡＰＬに対して、ファイル読み出し要求ＲＲＱに対応するファイル読み出し承認ＲＡＫを返す。
【０１１７】
なお、図７では示されていないが、ダイレクトコピー用のアドレスではないと判別されたとき、ＨＤＤドライバラッパＨＤＲＷは、ＨＤＤドライバＨＤＲに対して、データセクタ読み出し要求ＤＳＲＲＱ２０、管理情報読み出し要求ＭＳＲＲＱ２０を発行し、図３と同様にＨＤＤ２０へのアクセスを行う。
【０１１８】
こうして、ＨＤＤ２０からコピー対象のデータの読み出し要求処理が完了すると、アプリケーションプログラムＡＰＬは、ＵＳＢデバイス３０へのデータの書き込み要求処理を開始する。そのため、アプリケーションプログラムＡＰＬは、ファイルシステムＦＳに対してファイル書き込み要求ＷＲＱを発行する。このとき、アプリケーションプログラムＡＰＬは、バッファメモリとしてのメインメモリ１１４にデータの読み出し要求ＤＷＲＱを発行することはない。
【０１１９】
ファイル書き込み要求ＷＲＱを受けたファイルシステムＦＳは、ＵＳＢドライバラッパＵＤＲＷに対して、データセクタ書き込み要求ＤＳＷＲＱ１、管理情報書き込み要求ＭＳＷＲＱ１を発行する。
【０１２０】
ＵＳＢドライバラッパＵＤＲＷは、上述のように例えばデータセクタ書き込み要求ＤＳＷＲＱ１又は管理情報書き込み要求ＭＳＷＲＱ１に付されたアドレスがダイレクトコピー用のアドレスであるか否かを判別する。そして、ダイレクトコピー用のアドレスであると判別されたとき、ＵＳＢドライバラッパＵＤＲＷは、当該データセクタ書き込み要求ＤＳＷＲＱ１又は管理情報書き込み要求ＭＳＷＲＱ１を書き込み要求ログＷＬＯＧに記録し、書き込み要求ログＷＬＯＧを更新する。このとき、書き込み要求ログＷＬＯＧに対して、アドレスをキーにソート処理が行われる。こうすることで、例えばアドレスの小さい順序で、各アドレスに対応した書き込み要求の順序を変更できる。
【０１２１】
そして、ＵＳＢドライバラッパＵＤＲＷは、ファイルシステムＦＳに対して当該データセクタ書き込み要求ＤＳＷＲＱ１又は管理情報書き込み要求ＭＳＷＲＱ１に対応するデータセクタ書き込み承認ＤＳＷＡＫ１又は管理情報書き込み承認ＭＳＷＡＫ１を返す。これを受けたファイルシステムＦＳは、アプリケーションプログラムＡＰＬに対して、ファイル書き込み要求ＷＲＱに対応するファイル書き込み承認ＷＡＫを返す。
【０１２２】
なお、図７では示されていないが、ダイレクトコピー用のアドレスではないと判別されたとき、ＵＳＢドライバラッパＵＤＲＷは、ＵＳＢドライバＵＤＲに対して、データセクタ書き込み要求ＤＳＷＲＱ２０、管理情報書き込み要求ＭＳＷＲＱ２０を発行し、図３と同様にＵＳＢデバイス３０へのアクセスを行う。
【０１２３】
こうしてＵＳＢデバイス３０からのコピー対象のデータの書き込み要求処理が完了すると、アプリケーションプログラムＡＰＬは、ダイレクトコピー実行モジュールＤＣＰに対して、ダイレクトコピー処理の実行指示ＤＣを発行する。
【０１２４】
ダイレクトコピー処理の実行指示ＤＣを受けたダイレクトコピー実行モジュールＤＣＰは、読み出し要求ログＲＬＯＧを参照しながら、各読み出し要求に対応して、ＨＤＤドライバＨＤＲに対してデータセクタ読み出し要求ＤＳＲＲＱ２１、管理情報読み出し要求ＭＳＲＲＱ２１を発行する。またダイレクトコピー実行モジュールＤＣＰは、書き込み要求ログＷＬＯＧを参照しながら、各書き込み要求に対応して、ＵＳＢドライバＵＤＲに対してデータセクタ書き込み要求ＤＳＷＲＱ２１、管理情報書き込み要求ＭＳＷＲＱ２１を発行する。
【０１２５】
ＨＤＤドライバＨＤＲは、ダイレクトコピー実行モジュールＤＣＰからのデータセクタ読み出し要求ＤＳＲＲＱ２１、管理情報読み出し要求ＭＳＲＲＱ２１を受けて、ＨＤＤ２０に対してデータセクタ読み出し要求ＤＳＲＲＱ２、管理情報読み出し要求ＭＳＲＲＱ２を発行する。
【０１２６】
この結果、ＨＤＤ２０から管理情報ＭＩが読み出される。ＨＤＤ２０から読み出された管理情報ＭＩは、ファイルシステムＦＳによって処理される。また、ＨＤＤ２０から読み出されたコピー対象のデータＤＴは、メインメモリ１１４に書き込まれることなく、直結バス１５２を介して、ＵＳＢデバイス３０への書き込み処理に供される。
【０１２７】
ＵＳＢドライバＵＤＲは、ダイレクトコピー実行モジュールＤＣＰからのデータセクタ書き込み要求ＤＳＷＲＱ２１、管理情報書き込み要求ＭＳＷＲＱ２１を受けて、ＵＳＢＩ／Ｆ回路１４６に対してデータセクタ書き込み要求ＤＳＷＲＱ２、管理情報書き込み要求ＭＳＷＲＱ２を発行する。
【０１２８】
ＵＳＢＩ／Ｆ回路１４６は、ＵＳＢドライバＵＤＲからのデータセクタ書き込み要求ＤＳＷＲＱ２、管理情報書き込み要求ＭＳＷＲＱ２を受けて、ＵＳＢデバイス３０であるUSB Mass Storageに対してデータセクタ書き込み要求ＤＳＷＲＱ３、管理情報書き込み要求ＭＳＷＲＱ３を発行する。
【０１２９】
この結果、ＵＳＢデバイス３０に対して、ファイルシステムＦＳから管理情報ＭＩが書き込まれる。また、上記のようにＨＤＤ２０から読み出されたコピー対象のデータＤＴが、直結バス１５２を介してＵＳＢデバイス３０に書き込まれる。
【０１３０】
ＨＤＤ２０からのデータの読み出しが終了すると、ＨＤＤドライバＨＤＲはダイレクトコピー実行モジュールＤＣＰに対して、データセクタ読み出し要求ＤＳＲＲＱ２１、管理情報読み出し要求ＭＳＲＲＱ２１に対応するデータセクタ読み出し承認ＤＳＲＡＫ２１、管理情報読み出し承認ＭＳＲＡＫ２１を返す。更に、ＵＳＢデバイス３０へのデータの書き込みが終了すると、ＵＳＢドライバＵＤＲはダイレクトコピー実行モジュールＤＣＰに対して、データセクタ書き込み要求ＤＳＷＲＱ２１、管理情報書き込み要求ＭＳＷＲＱ２１に対応するデータセクタ書き込み承認ＤＳＷＡＫ２１、管理情報書き込み承認ＭＳＷＡＫ２１を返す。
【０１３１】
ダイレクトコピー実行モジュールＤＣＰは、ＨＤＤドライバＨＤＲからのデータセクタ読み出し承認ＤＳＲＡＫ２１、管理情報読み出し承認ＭＳＲＡＫ２１、ＵＳＢドライバＵＤＲからのデータセクタ書き込み承認ＤＳＷＡＫ２１、管理情報書き込み承認ＭＳＷＡＫ２１を受けて、アプリケーションプログラムＡＰＬに対してダイレクトコピー処理終了通知ＤＣＡＫを返す。
【０１３２】
ダイレクトコピー処理終了通知ＤＣＡＫを受けたアプリケーションプログラムＡＰＬは、一連のダイレクトコピー処理を終了する。
【０１３３】
以上説明したように、本実施形態におけるダイレクトコピー処理によれば、コピー対象のデータをメインメモリ１１４に一旦バッファリングする必要がなくなり、コピー処理の高速化が可能となる。また、コピー対象のデータ、管理情報を区別することなく、ファイルの先頭から順番に行われない読み出し要求や書き込み要求があっても、ファイル形式のデータを正確にコピーできるようになる。
【０１３４】
３．３  処理部の各部の処理例
以下では、図５の処理部１１０のアプリケーションプログラム処理部２００、ＨＤＤドライバラッパ部２３２、ダイレクトコピー実行部２２０の処理例について説明する。なお、ファイルシステム部２１０の処理については、公知のファイルシステムの処理と同様であるため詳細な説明を省略する。また、ＵＳＢドライバラッパ部２４２の処理については、ＨＤＤドライバラッパ部２３２の処理と同様であるため詳細な説明を省略する。更に、ＨＤＤドライバ部２３４及びＵＳＢドライバ部２４４の処理については、それぞれ公知のＨＤＤドライバ及びＵＳＢドライバの処理と同様であるため詳細な説明を省略する。
【０１３５】
３．３．１  アプリケーションプログラム処理部
図８に、図５のアプリケーションプログラム処理部２００の処理例のフロー図を示す。図８は、例えばメインメモリ１１４に格納されるアプリケーションプログラムの処理例を示し、処理部１１０のＣＰＵ１１２が該アプリケーションプログラムを読み出して該プログラムに対応した処理を実行することで、図８の処理を実現できる。
【０１３６】
まず、アプリケーションプログラム処理部２００は、ファイルシステムＦＳに対してファイル読み出し要求ＲＲＱを発行する（ステップＳ３００）。
【０１３７】
その後、アプリケーションプログラム処理部２００は、ファイルシステムＦＳから正常な読み出し応答があるか否かを監視する（ステップＳ３０１）。正常な読み出し応答の有無は、例えば図７のファイルシステムＦＳからの読み出し承認ＲＡＫに基づいて判断できる。正常な読み出し応答がないとき（ステップＳ３０１：Ｎ）、アプリケーションプログラム処理部２００は、タイムアウトであるか否かを監視する（ステップＳ３０２）。まだタイムアウトではないと判別されたとき（ステップＳ３０２：Ｎ）、アプリケーションプログラム処理部２００は、ステップＳ３０１に戻る。一方、タイムアウトであると判別されたとき（ステップＳ３０２：Ｙ）、所与のエラー処理を行い（ステップＳ３０３）、一連の処理を終了する（エンド）。
【０１３８】
ステップＳ３０１において正常の読み出し応答があったとき（ステップＳ３０１：Ｙ）、アプリケーションプログラム処理部２００は、ファイルシステムＦＳに対してファイル書き込み要求ＷＲＱを発行する（ステップＳ３０４）。
【０１３９】
その後、アプリケーションプログラム処理部２００は、ファイルシステムＦＳから正常な書き込み応答があるか否かを監視する（ステップＳ３０５）。正常な書き込み応答の有無は、例えば図７のファイルシステムＦＳからの書き込み承認ＷＡＫに基づいて判断できる。正常な書き込み応答がないとき（ステップＳ３０５：Ｎ）、アプリケーションプログラム処理部２００は、タイムアウトであるか否かを監視する（ステップＳ３０６）。まだタイムアウトではないと判別されたとき（ステップＳ３０６：Ｎ）、アプリケーションプログラム処理部２００は、ステップＳ３０５に戻る。一方、タイムアウトであると判別されたとき（ステップＳ３０６：Ｙ）、所与のエラー処理を行い（ステップＳ３０３）、一連の処理を終了する（エンド）。
【０１４０】
ステップＳ３０５において正常の書き込み応答があったとき（ステップＳ３０５：Ｙ）、アプリケーションプログラム処理部２００は、ダイレクトコピー実行モジュールＤＣＰに対してダイレクトコピー処理の実行指示ＤＣを発行する（ステップＳ３０７）。
【０１４１】
その後、アプリケーションプログラム処理部２００は、ファイルシステムＦＳから正常なダイレクトコピー処理の終了応答があるか否かを監視する（ステップＳ３０８）。正常なダイレクトコピー処理の終了応答の有無は、例えば図７のダイレクトコピー実行モジュールＤＣＰからのダイレクトコピー処理終了通知ＤＣＡＫに基づいて判断できる。正常なダイレクトコピー処理の終了応答がないとき（ステップＳ３０８：Ｎ）、アプリケーションプログラム処理部２００は、タイムアウトであるか否かを監視する（ステップＳ３０９）。まだタイムアウトではないと判別されたとき（ステップＳ３０９：Ｎ）、アプリケーションプログラム処理部２００は、ステップＳ３０８に戻る。一方、タイムアウトであると判別されたとき（ステップＳ３０９：Ｙ）、所与のエラー処理を行い（ステップＳ３１０）、一連の処理を終了する（エンド）。
【０１４２】
３．３．２  ＨＤＤドライバラッパ部
図９に、図５のＨＤＤドライバラッパ部２３２の処理例のフロー図を示す。図９は、例えばメインメモリ１１４に格納されるＨＤＤドライバラッパプログラムの処理例を示し、処理部１１０のＣＰＵ１１２が該ＨＤＤドライバラッパプログラムを読み出して該プログラムに対応した処理を実行することで、図９の処理を実現できる。
【０１４３】
まず、ＨＤＤドライバラッパ部２３２は、ファイルシステムＦＳからの読み出し要求（データセクタ読み出し要求、管理情報読み出し要求）、書き込み要求（データセクタ書き込み要求、管理情報書き込み要求）を監視している。そして、これらの要求があったとき、該要求に付されたアドレスに基づいて、ダイレクトコピー用の要求か否かを判別する。該アドレスがダイレクトコピー用のアドレスであると判別されたとき（ステップＳ３２０：Ｙ）、ダイレクトコピー用の要求であると判断して、該要求に対応したログの生成処理を行い（ステップＳ３２１）、一連の処理を終了する（エンド）。ログの生成処理は、読み出し要求に対しては読み出し要求ログの生成が行われ、書き込み要求に対しては書き込み要求ログの生成が行われる。
【０１４４】
一方、ステップＳ３２０において、該アドレスがダイレクトコピー用のアドレスではないと判別されたとき（ステップＳ３２０：Ｎ）、ダイレクトコピー用の要求ではないと判断して、該要求に対応したＨＤＤドライバＨＤＲに対する要求を行い（ステップＳ３２２）、一連の処理を終了する（エンド）。
【０１４５】
図１０に、図９のログの生成処理の一例のフロー図を示す。
【０１４６】
ＨＤＤドライバラッパ部２３２は、まずファイルシステムＦＳからのデータセクタ読み出し要求ＤＳＲＲＱ１、管理情報読み出し要求ＭＳＲＲＱ１を監視している（ステップＳ３３０）。これらの読み出し要求があったとき（ステップＳ３３０：Ｙ）、ＨＤＤドライバラッパ部２３２は、まず、読み出し要求の統合処理を行う（ステップＳ３３１）。
【０１４７】
図１１（Ａ）、図１１（Ｂ）に、図１０の読み出し要求の統合処理の一例の説明図を示す。
【０１４８】
読み出し要求の統合処理では、Ｎ（Ｎは自然数）回目の読み出し要求と（Ｎ＋１）回目の読み出し要求とを統合して１つの読み出し要求にする処理をいう。このため、Ｎ回目の読み出し要求先の領域（セクタ）と（Ｎ＋１）回目の読み出し要求先の領域（セクタ）とが連続するか否かを検出する。そして、図１１（Ａ）に示すように２つの読み出し要求先の領域が連続することが検出されたとき、ＨＤＤドライバラッパ部２３２は、図１１（Ｂ）に示すように、連続する領域が１つの領域となるように２つの読み出し要求を１つの読み出し要求に統合する。より具体的には、図１０のステップＳ３３１の処理は、ＨＤＤ２０連続するセクタ（記憶位置）に対する２以上の連続する読み出し要求を、１つの読み出し要求に統合する処理ということができる。このような統合処理を行うことで、読み出し要求ログＲＬＯＧの容量を削減できる。
【０１４９】
図１０に戻って説明を続ける。ステップＳ３３１において読み出し要求の統合処理が終了すると、ＨＤＤドライバラッパ部２３２は、読み出し要求ログＲＬＯＧの記録処理を行う（ステップＳ３３２）。読み出し要求ログＲＬＯＧの記録処理の詳細については、後述する。
【０１５０】
続いて、ＨＤＤドライバラッパ部２３２は、各レコードの仮想バッファのアドレスをキーに、読み出し要求ログＲＬＯＧに対して、例えば該アドレス値が小さい順序に並び替えるソート処理を行う（ステップＳ３３３）。これにより、読み出し要求ログＲＬＯＧの読み出し要求が、仮想バッファアドレスの値の小さい順で並び替えられる。
【０１５１】
続いて、ＨＤＤドライバラッパ部２３２は、ステップＳ３３２において生成された読み出し要求ログのサイズを検出し、予め決められた上限値を超えたか否かを判別する（ステップＳ３３４）。ステップＳ３３４において読み出し要求ログＲＬＯＧのサイズが上限値を超えたと判別されたとき（ステップＳ３３４：Ｙ）、ＨＤＤドライバラッパ部２３２は、ファイルシステムＦＳに対してエラー応答を返し（ステップＳ３３５）、一連の処理を終了する（エンド）。一方、ステップＳ３３４において読み出し要求ログＲＬＯＧのサイズが上限値を超えていないと判別されたとき（ステップＳ３３４：Ｎ）、ＨＤＤドライバラッパ部２３２は、ファイルシステムＦＳに対して正常応答を返し（ステップＳ３３６）、一連の処理を終了する（エンド）。
【０１５２】
ステップＳ３３０において、ファイルシステムＦＳからのデータセクタ読み出し要求ＤＳＲＲＱ１、管理情報読み出し要求ＭＳＲＲＱ１ではないとき（ステップＳ３３０：Ｎ）、ＨＤＤドライバラッパ部２３２は、ファイルシステムＦＳからのデータセクタ書き込み要求ＤＳＷＲＱ１、管理情報書き込み要求ＭＳＷＲＱ１であるか否かを検出する（ステップＳ３３７）。
【０１５３】
これらの書き込み要求があったとき（ステップＳ３３７：Ｙ）、ＨＤＤドライバラッパ部２３２は、図１１（Ａ）、図１１（Ｂ）と同様に、書き込み要求の統合処理を行う（ステップＳ３３８）。より具体的には、図１０のステップＳ３３８の処理は、ＵＳＢデバイス３０連続するセクタ（記憶位置）に対する２以上の連続する書き込み要求を、１つの書き込み要求に統合する処理ということができる。
【０１５４】
ステップＳ３３８において書き込み要求の統合処理が終了すると、ＨＤＤドライバラッパ部２３２は、読み出し要求ログＲＬＯＧの記録処理と同様に、書き込み要求ログＷＬＯＧの記録処理を行う（ステップＳ３３９）。
【０１５５】
続いて、ＨＤＤドライバラッパ部２３２は、各レコードの仮想バッファのアドレスをキーに、書き込み要求ログＷＬＯＧに対して、例えば該アドレス値が小さい順序に並び替えるソート処理を行う（ステップＳ３４０）。これにより、書き込み要求ログＷＬＯＧの書き込み要求が、仮想バッファアドレスの値の小さい順で並び替えられる。
【０１５６】
続いて、ＨＤＤドライバラッパ部２３２は、ステップＳ３３９において生成された書き込み要求ログのサイズを検出し、予め決められた上限値を超えたか否かを判別する（ステップＳ３４１）。ステップＳ３４１において書き込み要求ログＷＬＯＧのサイズが上限値を超えたと判別されたとき（ステップＳ３４１：Ｙ）、ＨＤＤドライバラッパ部２３２は、ファイルシステムＦＳに対してエラー応答を返し（ステップＳ３４２）、一連の処理を終了する（エンド）。一方、ステップＳ３４１において書き込み要求ログＷＬＯＧのサイズが上限値を超えていないと判別されたとき（ステップＳ３４１：Ｎ）、ＨＤＤドライバラッパ部２３２は、ファイルシステムＦＳに対して正常応答を返し（ステップＳ３４３）、一連の処理を終了する（エンド）。
【０１５７】
次に、図１０のログの記録処理について説明する。ログは、１又は複数のレコードを有し、各レコードが双方向リンクされている。
【０１５８】
図１２に、ログの１レコードの構成例の説明図を示す。
【０１５９】
ログを構成する各レコードは、仮想バッファのアドレスであるバッファアドレスと、記憶装置のセクタ番号であるアドレスと、セクタ数とを含む。また、各レコードは、当該レコードの直前にリンクされるレコードを特定するための前レコード値である前レコードリンク情報と、当該レコードの直後にリンクされるレコードを特定するための次レコード値である次レコードリンク情報とを有する。
【０１６０】
図１３に、本実施形態におけるログの説明図を示す。
【０１６１】
図１０で記録されるログは、図１３に示すように各レコードが双方向リンクされている。即ち、各レコードは、直前にリンクされるレコードを指定すると共に、直後にリンクされるレコードを指定する。
【０１６２】
図１０のログの記録処理では、図１２及び図１３で示すようなログを生成、更新する処理が行われる。
【０１６３】
図１４に、図１０のステップＳ３３２のログ記録処理の一例のフロー図を示す。
【０１６４】
図１４では、図１０のステップＳ３３２の読み出し要求ログＲＬＯＧの記録処理を例に説明するが、図１０のステップＳ３３９の書き込み要求ログＷＬＯＧの記録処理も同様に処理できる。
【０１６５】
まず、ＨＤＤドライバラッパ部２３２は、最初のレコード登録か否かを判別する（ステップＳ３５０）。最初レコード登録ではないと判別されたとき（ステップＳ３５０：Ｎ）、ＨＤＤドライバラッパ部２３２は、リンクされた最終のレコードの次への追加登録か否かを判別する（ステップＳ３５１）。本実施形態では、図１３に示すように各レコードが双方向リンクされており、任意の２つのレコード間に新しいレコードを追加できるようになっている。
【０１６６】
ステップＳ３５１において、最終レコードの次への追加登録であると判別されたとき（ステップＳ３５１：Ｙ）、ＨＤＤドライバラッパ部２３２は、最終レコード番号を追加レコード番号として設定する（ステップＳ３５２）。一方、ステップＳ３５１において、最終レコードの次への追加登録ではないと判別されたとき（ステップＳ３５１：Ｎ）、ＨＤＤドライバラッパ部２３２は、追加対象の前レコードの次レコード値に、追加対象レコード番号を設定する（ステップＳ３５３）。
【０１６７】
ステップＳ３５２又はステップＳ３５３に続いて、ＨＤＤドライバラッパ部２３２は、追加レコードの次レコード値に追加対象の前レコード内の次レコード値を設定する（ステップＳ３５４）。
【０１６８】
続いて、ＨＤＤドライバラッパ部２３２は、追加レコードの前レコード値に、追加対象の前レコードのレコード番号を設定し（ステップＳ３５５）、更に、追加対象の前レコード内の次レコード値に、追加対象レコード番号を設定する（ステップＳ３５６）。
【０１６９】
これに対して、ステップＳ３５０において、最初レコード登録であると判別されたとき（ステップＳ３５０：Ｙ）、ＨＤＤドライバラッパ部２３２は、レコードの初期化処理を行う（ステップＳ３５７）。
【０１７０】
ステップＳ３５６又はステップＳ３５７に続いて、ＨＤＤドライバラッパ部２３２は、登録レコード数をインクリメントして（ステップＳ３５８）、一連の処理を終了する（エンド）。
【０１７１】
図１５（Ａ）、図１５（Ｂ）に、ログの記録処理においてレコードを追加する処理の説明図を示す。
【０１７２】
ここで、４つのレコードＲ０〜Ｒ３が、図１５（Ａ）に示すようにリンクされているものとする。図１５（Ａ）では、レコードＲ０、Ｒ１、Ｒ２、Ｒ３の順序でリンクされている。
【０１７３】
このとき、図１５（Ｂ）に示すように、レコードＲ４を、レコードＲ１、Ｒ２の間に挿入するものとする。この際、レコードＲ１の次レコード値に、追加対象のレコード番号である「４」を設定すると共に、レコードＲ２の前レコード値に追加対象のレコード番号である「４」を設定する。更に、追加対象のレコードＲ４の前レコード値に、レコードＲ１のレコード番号である「１」を設定すると共に、レコードＲ４の次レコード値に、レコードＲ２のレコード番号である「２」を設定する。
【０１７４】
こうすることで、ログのレコードＲ０〜Ｒ４は、レコードＲ０、Ｒ１、Ｒ４、Ｒ２、Ｒ３の順序でリンクされることになる。
【０１７５】
以上説明したように、図１０〜図１５（Ａ）、図１５（Ｂ）によれば、ファイルシステムＦＳからの読み出し要求を、ログサイズの拡大を抑えながら記録できるようになる。
【０１７６】
なお、図９、図１０、図１１（Ａ）、図１１（Ｂ）、図１２、図１３、図１４、図１５（Ａ）、図１５（Ｂ）ではＨＤＤドライバラッパ部２３２に説明したが、ＵＳＢドライバラッパ部２４２も同様であるため、説明を省略する。
【０１７７】
３．３．３  ダイレクトコピー実行部
図１６に、図５のダイレクトコピー実行部２２０の処理例のフロー図を示す。
【０１７８】
図１６は、例えばメインメモリ１１４に格納されるダイレクトコピープログラムの処理例を示し、処理部１１０のＣＰＵ１１２が該ダイレクトコピープログラムを読み出して該プログラムに対応した処理を実行することで、図１６の処理を実現できる。
【０１７９】
まず、ダイレクトコピー実行部２２０は、アプリケーションプログラムＡＰＬからのダイレクトコピー処理の実行指示を待つ（ステップＳ４００：Ｎ）。アプリケーションプログラムＡＰＬからのダイレクトコピー処理の実行指示があったとき（ステップＳ４００：Ｙ）、ダイレクトコピー実行部２２０は、後述するダイレクトコピー実行処理を行う（ステップＳ４０１）。
【０１８０】
次に、ダイレクトコピー実行部２２０は、ＨＤＤドライバラッパ部２３２からの読み出し承認が正常であるか否かを判別する（ステップＳ４０２）。読み出し承認が正常であるとき（ステップＳ４０２：Ｙ）、ダイレクトコピー実行部２２０は、ＵＳＢドライバラッパ部２４２からの書き込み承認が正常であるか否かを判別する（ステップＳ４０３）。書き込み承認が正常であるとき（ステップＳ４０３：Ｙ）、ダイレクトコピー実行部２２０は、アプリケーションプログラム処理部２００に対して正常応答を返し（ステップＳ４０４）、一連の処理を終了する（エンド）。
【０１８１】
ステップＳ４０２において読み出し承認が正常ではないとき（ステップＳ４０２：Ｎ）、又はステップＳ４０３において書き込み承認が正常ではないとき（ステップＳ４０３：Ｎ）、ダイレクトコピー実行部２２０は、アプリケーションプログラム処理部２００に対してエラー応答を返し（ステップＳ４０５）、一連の処理を終了する（エンド）。
【０１８２】
図１７に、図１６のステップＳ４０１のダイレクトコピー実行処理の一例のフロー図を示す。
【０１８３】
まず、ダイレクトコピー実行部２２０は、読み出し要求ログＲＬＯＧの先頭レコード、書き込み要求ログＷＬＯＧの先頭レコードを取得する（ステップＳ４２０）。
【０１８４】
次に、ダイレクトコピー実行部２２０は、ステップＳ４２０で取得した読み出し要求ログＲＬＯＧの先頭レコード及び書き込み要求ログＷＬＯＧの先頭レコードに基づいて、読み出しサイズと書き込みサイズが一致するか否かを判別する（ステップＳ４２１）。そして、両サイズが不一致のとき（ステップＳ４２１：Ｎ）、ダイレクトコピー実行部２２０は、処理サイズ一致処理を行う（ステップＳ４２２）。ＨＤＤ２０やＵＳＢデバイス３０のフラグメンテーションや、ＨＤＤ２０のセクタサイズとＵＳＢデバイス３０のセクタサイズとの相違により、１回当たりのデータ読み出し処理とデータ書き込み処理の処理サイズが一致しないことがある。そのため、ステップＳ４２２の処理サイズ一致処理を行うことで、上記の事態でも正しくコピー処理を行うことができる。
【０１８５】
ステップＳ４２１において両サイズが一致したとき（ステップＳ４２１：Ｙ）、又はステップＳ４２２の後に、ダイレクトコピー実行部２２０は、処理サイズを記録し（ステップＳ４２３）、データの読み出し処理を実行する（ステップＳ４２４）。このデータの読み出し処理は、ダイレクトコピー実行部２２０がＨＤＤドライバ部２３４に対してデータセクタ読み出し要求及び管理情報読み出し要求を発行することで実現できる。
【０１８６】
次に、ダイレクトコピー実行部２２０は、データの書き込み処理を実行する（ステップＳ４２５）。このデータの書き込み処理は、ダイレクトコピー実行部２２０がＵＳＢドライバ部２４４に対してデータセクタ書き込み要求及び管理情報書き込み要求を発行することで実現できる。
【０１８７】
その後、ダイレクトコピー実行部２２０は、読み出しサイズと書き込みサイズとが一致するか否かを判別する（ステップＳ４２６）。これは、ステップＳ４２２において処理サイズの一致処理が行われると、読み出し側又は書き込み側のいずれかに余分な処理が必要になるため、この余分な処理を次のレコードの処理サイズと統合してコピー処理を行うためである。
【０１８８】
ステップＳ４２６において、両サイズが一致しているとき（ステップＳ４２６：Ｙ）、ダイレクトコピー実行部２２０は、次の読み出し要求レコードを取得する（ステップＳ４２７）。
【０１８９】
ステップＳ４２６において、両サイズが不一致のとき（ステップＳ４２６：Ｎ）、ダイレクトコピー実行部２２０は、読み出し要求レコードの残分を取得し（ステップＳ４２８）、読み出し要求ログを更新する処理を行う（ステップＳ４２９）。このログを更新する処理は、処理サイズ一致処理により後回しとなったサイズ分を調整する処理を含む。
【０１９０】
ステップＳ４２７又はステップＳ４２９に続いて、ダイレクトコピー実行部２２０は、データの書き込みサイズがデータの読み出しサイズと一致するか否かを判別する（ステップＳ４３０）。
【０１９１】
ステップＳ４３０において両サイズが一致しているとき（ステップＳ４３０：Ｙ）、ダイレクトコピー実行部２２０は、次の書き込み要求レコードを取得する（ステップＳ４３１）。
【０１９２】
ステップＳ４３０において両サイズが不一致のとき（ステップＳ４３０：Ｎ）、ダイレクトコピー実行部２２０は、書き込み要求レコードの残分を取得し（ステップＳ４３２）、書き込み要求ログを更新する処理を行う（ステップＳ４３３）。このログを更新する処理は、処理サイズ一致処理により後回しとなったサイズ分を調整する処理を含む。
【０１９３】
ステップＳ４３１又はステップＳ４３３に続いて、ダイレクトコピー実行部２２０は、最終レコードか否かを判別し（ステップＳ４３４）、最終レコードであると判別されたとき（ステップＳ４３４）、一連の処理を終了する（エンド）。一方、ステップＳ４３４において、最終レコードではないと判別されたとき（ステップＳ４３４）、ダイレクトコピー実行部２２０は、ステップＳ４２１に戻って処理を継続する。
【０１９４】
図１８に、図１７のダイレクトコピー処理の説明図を示す。
【０１９５】
図１８では、読み出し要求ログＲＬＯＧが、レコードＲ０〜Ｒ２を有し、各レコードのセクタサイズが「８」、「４」、「１２」であるものとする。また、書き込み要求ログＷＬＯＧが、レコードＲ０〜Ｒ２を有し、各レコードのセクタサイズが「１０」、「４」、「１０」であるものとする。
【０１９６】
即ち、図１８では、まず読み出し要求ログＲＬＯＧの先頭レコードであるレコードＲ０のセクタサイズ「８」と、書き込み要求ログＷＬＯＧの先頭レコードであるレコードＲ０のセクタサイズ「１０」とが取得される。両サイズが異なるため、セクタサイズの小さい方に処理サイズを一致させる。その結果、まず、セクタサイズ「８」で、コピー処理が行われる。
【０１９７】
次に、書き込み側のセクタサイズの残分が「２（＝１０−８）」であるため、読み出し要求ログＲＬＯＧのレコードＲ１のセクタサイズ「４」が取得される。このときも両サイズが異なるため、セクタサイズの小さい方に処理サイズを一致させる。その結果、セクタサイズ「２」で、コピー処理が行われる。
【０１９８】
更に、読み出し側のセクタサイズの残分が「２（＝４−２）」であるため、書き込み要求ログＷＬＯＧのレコードＲ１のセクタサイズ「４」が取得される。このときも両サイズが異なるため、セクタサイズの小さい方に処理サイズを一致させる。その結果、セクタサイズ「２」で、コピー処理が行われる。
【０１９９】
続いて、書き込み側のセクタサイズの残分が「２（＝４−２）」であるため、読み出し要求ログＲＬＯＧのレコードＲ２のセクタサイズ「１２」が取得される。このときも両サイズが異なるため、セクタサイズの小さい方に処理サイズを一致させる。その結果、セクタサイズ「２」で、コピー処理が行われる。
【０２００】
更に、読み出し側のセクタサイズの残分が「１０（＝１２−２）」であるが、両サイズが一致するため、セクタサイズ「１０」でコピー処理が行われる。
【０２０１】
以上説明したように、図１８に示す例では、ログのレコード順にコピー処理を行おうとすると、読み出し側と書き込み側とでセクタサイズが異なる。そこで、本実施形態では、上述のように実際のコピー処理を実行するのに先立って、読み出しサイズと書き込みサイズとを一致させる処理を行うことで、非常に簡素な処理で正確なコピー処理を実現できる。
【０２０２】
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。
【０２０３】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【図面の簡単な説明】
【０２０４】
【図１】本実施形態における情報処理装置が適用された電子機器の構成の概要を示す図。
【図２】図１の情報処理装置の構成例のブロック図。
【図３】本実施形態の比較例におけるコピー処理の説明図。
【図４】ダイレクトコピー用のアドレスの説明図。
【図５】図１又は図２の処理部の構成の概要を示す図。
【図６】本実施形態におけるダイレクトコピー処理の説明図。
【図７】図６のダイレクトコピー処理のシーケンスの一例を示す図。
【図８】図５のアプリケーションプログラム処理部の処理例のフロー図。
【図９】図５のＨＤＤドライバラッパ部の処理例のフロー図。
【図１０】図９のログの生成処理の一例のフロー図。
【図１１】図１１（Ａ）、図１１（Ｂ）は図１０の読み出し要求の統合処理の一例の説明図。
【図１２】ログの１レコードの構成例の説明図。
【図１３】本実施形態におけるログの説明図。
【図１４】図１０のログ記録処理の一例のフロー図。
【図１５】図１５（Ａ）、図１５（Ｂ）はログの記録処理においてレコードを追加する処理の説明図。
【図１６】図５のダイレクトコピー実行部の処理例のフロー図。
【図１７】図１６のダイレクトコピー実行処理の一例のフロー図。
【図１８】図１７のダイレクトコピー処理の説明図。
【符号の説明】
【０２０５】
１０  電子機器、  ２０  ＨＤＤ、  ３０  ＵＳＢデバイス、  １００  情報処理装置、
１１０  処理部、  １１２  ＣＰＵ、  １１４  メインメモリ、  １１６  メモリバス、
１４０  データ転送制御部（データ転送制御回路）、  １４２  ＣＰＵＩ／Ｆ回路、
１４４  ＩＤＥＩ／Ｆ回路、  １４６  ＵＳＢＩ／Ｆ回路、  １４８  制御部、
１５０  共通バス、  １５２  直結バス、  １６０  ＣＰＵバス、
１６２  ＩＤＥバス、  １６４  ＵＳＢバス、
２００  アプリケーションプログラム処理部、  ２１０  ファイルシステム部、
２２０  ダイレクトコピー実行部、  ２３０  ＨＤＤドライバ、
２３２  ＨＤＤドライバラッパ部、  ２３４  ＨＤＤドライバ部、
２４０  ＵＳＢドライバ、  ２４２  ＵＳＢドライバラッパ部、
２４４  ＵＳＢドライバ部、  ＡＰＬ  アプリケーションプログラム、
ＦＳ  ファイルシステム、  ＤＣＰ  ダイレクトコピー実行モジュール、
ＨＤＲ  ＨＤＤドライバ、  ＨＤＲＷ  ＨＤＤドライバラッパ、
ＲＬＯＧ  読み出し要求ログ、  ＵＤＲ  ＵＳＢドライバ、
ＵＤＲＷ  ＵＳＢドライバラッパ、  ＷＬＯＧ  書き込み要求ログ
【図１】
2008217469.tif 000003
【図２】
2008217469.tif 000004
【図３】
2008217469.tif 000005
【図４】
2008217469.tif 000006
【図５】
2008217469.tif 000007
【図６】
2008217469.tif 000008
【図７】
2008217469.tif 000009
【図８】
2008217469.tif 000010
【図９】
2008217469.tif 000011
【図１０】
2008217469.tif 000012
【図１１】
2008217469.tif 000013
【図１２】
2008217469.tif 000014
【図１３】
2008217469.tif 000015
【図１４】
2008217469.tif 000016
【図１５】
2008217469.tif 000017
【図１６】
2008217469.tif 000018
【図１７】
2008217469.tif 000019
【図１８】
2008217469.tif 000020