重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは。

OSはWindowsVistaとWindows7を使っています。
いつも思っていたのですが、ファイルやフォルダを、USBフラッシュメモリにコピーしている間、
空きメモリ量や、CPU使用率を見ても、かなり余裕があるのに、
他のアプリケーションソフトの動作が極端に遅くなります。
FireFileCopyというソフトを使うと、少しましになった気がするのですが、それでもかなり遅いです。
この問題は回避する事はできないのでしょうか?

何か御存じの方がいらっしゃれば、是非、情報を提供して頂きたく思います。

A 回答 (3件)

>これを知った上で、コピー中に、他のアプリの動作を速くするには


>どうすればよいのかについて、何か御存知の事がありましたら、教えて頂けますでしょうか?
申し訳ありませんが、浅学なのでこれ以上の知識がありません。

私もHDDのバックアップ等で大量にコピーする際にOSの動作を含めて他のアプリが遅くなりイライラした経験があります。
その際に色々と調べて前述の回答(結論)となりました。

もし前述の内容が正しければDMCAとそれを利用するドライバ(主にインテル?)が原因であり、個人で解決できる問題ではありません。
FireFileCopyの作者もそれを承知した上でアプリ側で可能な範囲で高速化を行ったのだと思います。

またバッファローがUSB接続のHDDのコピー速度を向上するアプリを提供しているのも同じ理屈だと思います。
 バッファローのターボUSB
 http://buffalo.jp/products/turbousb/

前の回答のリンク先にあるようにPIO方式がCPUに負担となるためDMA方式に変更したのであれば、何らかの解決方法をお願いしたいところです。
しかし同じバスを利用する以上ソフトでの根本的な解決は不可能ですし、ハードを大きく変更したら互換性に問題が発生します。

非常に悩ましい問題だと思っています。
    • good
    • 0
この回答へのお礼

御返信ありがとうございます。

参考URLに書かれていた事を一生懸命読んだのですが、
今回の問題を解決するヒントは、見つけ出せませんでした。
どうやら、前回御回答頂いたように、
CPUとDMAC、メモリは一つのバス上に位置してるので、
今回のような問題は避けられないのでしょう。

>前の回答のリンク先にあるようにPIO方式がCPUに負担となるためDMA方式に変更したのであれば、何らかの解決方法をお願いしたいところです。

全く同感です。

何か情報を持っている人がいるかもしれないので、この質問は締め切らずに置いておこうと思います。
誰も答えてくれそうになければ、そのままベストアンサーに選ばさせて頂きます。

お礼日時:2011/10/31 18:07

素人の回答なので間違えがあれば指摘願います > 玄人殿



まずファイルコピーをする場合、一時的にデータをメモリにキャッシュします。
そのキャッシュサイズを大きくしてHDDに無駄なシークをさせないことでFireFileCopyは高速なコピーを実現しています。
FireFileCopyは従来の仕組みをそのまま利用して高速化を実現したソフトであると理解しています。

--------------
上記の内容が正しければファイルコピーする場合にHDDからHDDに直接コピーする訳でなく、メモリを介在することになります。
HDDを含めた外部I/OへのアクセスではDMACを利用しています。

DMACはCPUの代わりにHDDからメモリにデータを転送します。
ここでCPUとDMAC、メモリは一つのバス上に位置しています。
そのためDMACがメモリにアクセスしている間はCPUはメモリへのアクセスができません。
つまりCPUにいくら余裕があっても必要なデータの読み書きができなければ処理が先に進みません。
(DMACがデータの転送中に適時バスを解放すればCPUの処理は進みますが、その分ファイルのコピーは遅くなります)

これがファイルのコピー中に処理が遅くなる根本的な原因と考えています。

参考文献
 http://www.uquest.co.jp/embedded/learning/lectur …
 http://www.uquest.co.jp/embedded/learning/lectur …

回答に間違いがありましたら先に書きましたとおりご指摘の程よろしくお願いします。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

とても素人の回答とは思えないですよ。(笑)

>まずファイルコピーをする場合、一時的にデータをメモリにキャッシュします。
そのキャッシュサイズを大きくしてHDDに無駄なシークをさせないことでFireFileCopyは高速なコピーを実現しています。
FireFileCopyは従来の仕組みをそのまま利用して高速化を実現したソフトであると理解しています。

これはFireFileCopyのヘルプにも書かれていたので正しいと思います。

>HDDを含めた外部I/OへのアクセスではDMACを利用しています

それは存じませんでした。

>DMACはCPUの代わりにHDDからメモリにデータを転送します。
ここでCPUとDMAC、メモリは一つのバス上に位置しています。
そのためDMACがメモリにアクセスしている間はCPUはメモリへのアクセスができません。
つまりCPUにいくら余裕があっても必要なデータの読み書きができなければ処理が先に進みません。

これは大変重要な情報ですね。
読み書き処理を行うものが、CPU以外にあったのだとは思いもしませんでした。
おかげでメカニズムは少し理解できました。
これを知った上で、コピー中に、他のアプリの動作を速くするにはどうすればよいのかについて、何か御存知の事がありましたら、教えて頂けますでしょうか?

以上です。
引き続き、よろしくお願い致します。

お礼日時:2011/10/31 07:36

多分HDD1台での運用になっていると思うので、他のソフト動かすのもコピー元ファイル読みだすのも同じところから行なっているから遅くなるんだと思います。



1.もう1台HDDを用意し、2台目のHDD(外付けHDD可)からUSBメモリにコピーする
2.高速SSDに変える
3.FireFileCopyではメモリキャッシュ量が調整できたと思うので、メモリキャッシュ量を増やす

上記のどれかで解決、または緩和されると思いますよ。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

>多分HDD1台での運用になっていると思うので、他のソフト動かすのもコピー元ファイル読みだすのも同じところから行なっているから遅くなるんだと思います。

それは存じております。
それを承知の上で、今回の質問をさせて頂きました。
ですので、1と2の御提案はありがたいのですが、
現在の環境のままで、他のアプリの動作が遅くなるのを解消したいと思っています。

あと、3の御提案についてなのですが、すでに使用するメモリキャッシュ量は、
最大値の255MBに設定しています。
それでもやはり、他のアプリの動作が遅くなるんです。

お礼日時:2011/10/31 07:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!