しかし、もっとよくよく調べてみると、実はドライバの削除をしなくても、レジストリの設定で解決できるらしいとの情報も見つかり、実際、ドライバを削除しなくても解決することができましたので、記録しておきます。
PIO病とは
HDDやDVDドライブ等のIDEデバイスの読み書き速度が異常に遅くなる現象で、デバイスの転送モードがPIOになっているケースのことを、俗にPIO病と呼ぶそうです。設定はDMAになっているにもかかわらず、再起動してもPIOのまま直らないために、「PIO病」と病気扱いされている現象です。PIOモードの場合、HDDの読み書きにCPUが介在するため、アクセス速度が遅くなります。これに対してDMAモードの場合は、CPUは読み書きの命令を発行するだけで、実際のHDD内のアクセスはHDD内のチップ等のみで実施され、結果だけがCPUに返されるという動作となり、PIOに比べるとかなり速い読み書きができます(一口にDMAと言っても、低速なものから高速なものまで種類がありますが、PIO病の解決のためには区別する必要が無いので、ここではDMAとして一括りに扱います)。
PIOかDMAか、どちらのモードになるかは、そのデバイス自体がサポートしている仕様と、デバイスドライバの設定によって決まります。これだけなら特に問題は発生しないのですが、Windows 2000/XPの場合、OS動作中にデバイスへのアクセスエラーが6回に達すると、強制的にPIOモードまで落ちてしまうという動作をするようです。
PIO病かどうかは、「スタート」→「コントロールパネル」→「システム」→「ハードウェア」→「デバイスマネージャ」→「IDE ATA/ATAPIコントローラ」の「プライマリ(セカンダリ)IDEチャネル」→「詳細設定」で、設定が「DMA(利用可能な場合)」となっているにもかかわらず「現在の転送モード」が「PIO」となっているかどうかで確認できます。
(どのチャネルが問題の発生しているデバイスかわからない場合、「詳細」→「バス関係」を参照して、デバイス名などで判断します)
そして一度PIOモードに落ちると、デバイスドライバの設定に関わらず、いつもPIOモードで起動するようになってしまいます。通常の方法では解決できず、途方に暮れるケースが多かったためでしょうか、「PIO病」という通称が付いてしまったようです。
よくある解決策(ドライバの削除+レジストリ設定)
今では、少し検索するとすぐに解決策が見つかります。その多くが「IDEチャネルのデバイスを削除して再起動する」というものでした。このとき、1回再起動するとすぐに2回目の再起動を促され、ドライバがインストールされると同時に、設定が初期化されるとのことです。初期化されることでPIO病から開放され、設定どおりDMAとして起動するというしくみです。それに続けてよくある情報が「再びアクセスエラーが6回に達した際に、今度はPIO病にならないように、PIOに落ちる条件を『6回連続でアクセスエラーが発生したとき』に変更する」というものです。ちょっとまぎらわしいですが、デフォルトでは、アクセスエラーする度にカウントアップされていき、
アクセスエラーが(長い期間をかけてでも)合計6回に達するとPIOに落ちる。という動作ですが、これを
6回連続でアクセスエラーが発生した場合のみPIOに落ちる。という動作に変更するということです。これは、レジストリエディタで
つまり、5回連続以内に復旧したエラーは回数がリセットされる。
・HKEY_LOCAL_MACHINEに、DWORD値で「1」を設定することで可能です。「PIOになっているデバイス」は、それぞれの階層の「DriverDesc」の値を参考にすれば識別できると思います。このレジストリはMicrosoftのページでも紹介されています。
・SYSTEM
・CurrentControlSet
・Control
・Class
・{4D36E96A-E325-11CE-BFC1-08002BE10318}
・[PIOになっているデバイス]
・ResetErrorCountersOnSuccess
・複数回のタイムアウトまたは CRC エラーの発生後 IDE ATA および ATAPI ディスクで PIO モードが使用される(Microsoft)
これによると、Windows XPではSP1に特殊な修正プログラムを適用するか、もしくはSP2を適用していないとダメっぽいです。
いずれにしろ、これでひとまずはPIO病を直すことができます。
ドライバを削除しない解決策
先の方法で解決できそうではありますが、PIO病が発生したのが起動ドライブの場合、なんとなく心理的にドライバ削除を避けたくなります。解決策として見つかる情報では、特に何の注意書きもなく「IDEチャネル削除して再起動」というのばかりですので、起動ドライブであっても大丈夫のように思えます。ですが、できれば他の方法が無いかと探したところ、レジストリ設定だけで直す方法が見つかりました。・こまったときのデルフォーラム 動作が遅いです
・hail2u.net - Weblog - PIO病
これらの情報によると、レジストリの
・HKEY_LOCAL_MACHINEに、16進数で「ffffffff」を設定するというものです。この設定によって、次回起動時にHDDのモード再設定が行われ、デバイスの仕様やドライバの設定が合っていれば、DMAモードになるとのことです。
・SYSTEM
・CurrentControlSet
・Control
・Class
・{4D36E96A-E325-11CE-BFC1-08002BE10318}
・[PIOになっているデバイス]
・MasterDeviceTimingModeAllowed
結論と実施結果
結局、IDEチャネルのドライバを削除せずとも、以下のレジストリ設定だけで「モードの再設定」「PIOに落ちる条件の変更」ができるようです。・HKEY_LOCAL_MACHINE実際に試した結果、無事ドライバを削除することなくレジストリの設定のみでPIO病を治し「DMAモード5」に変更することができました。HDBENCHで計測した結果、5倍程度速度が上がりました。
・SYSTEM
・CurrentControlSet
・Control
・Class
・{4D36E96A-E325-11CE-BFC1-08002BE10318}
・[PIOになっているデバイス]
・MasterDeviceTimingModeAllowed ← DWORD16進数で「ffffffff」
モードの再設定
・ResetErrorCountersOnSuccess ← DWORDで「1」
PIOに落ちる条件を変更
以上でPIO病を治す方法については終わりですが、HDDの寿命について少し書いておきます。この日記ではPIOに落ちる条件を変更して、DMAモードを維持する方法を記載しましたが、そもそもHDDのアクセスエラーがしばしば発生するHDDというのは、壊れかけている可能性が高いと思います。このようになった際は、アクセスエラーの頻度にもよりますが、HDDの交換も検討したほうがよいと思われます。
追記: デバイス削除による方法を試した記録
実は今回、レジストリのみの解決策を試す前に、IDEチャネル削除による解決策も試していましたが、うまくいきませんでした。具体的には、Cドライブ(起動ドライブ)を表すプライマリIDEチャネルを削除して再起動しました。多くのWebサイトでの記述では、起動時に再度、再起動が要求され、IDEチャネルのドライバがインストールされて無事復旧するとあったのですが、実は起動に失敗してしまいました。正常に起動できなかったため、起動メニューが表示されたので「前回起動時の設定で起動する」を選んで、とりあえずPIOモードのままで起動はできました。その後、あらためてレジストリ修正のみで治す方法を試みて、上述の通り復旧したという経緯がありました。
ただし、これは今回試したPCが特殊だったからではないか、と想像しています。というのは、今回PIO病になったPCは、HDDが暗号化されるソフトウェアが組み込まれていたのです。どのような仕組みで暗号化/復号化されているのか、詳しくは知らないのですが、WindowsからはHDD暗号化されていることを意識せずに使えているので、OSより下のレイヤーにも何らかの仕掛けがされていると思われます。実際、この暗号化ソフトウェアの説明書では、「MBRを修正すること」「デュアルブートにすること」「暗号化前の復元ポイントまで戻ること」等が禁止されています。そのあたりの関連で、IDEチャネル削除という方法がうまくいかなかったのではないのだろうか、と想像しています。
|
itunesなどを筆頭に、HDDのアクセスが起こるたびに処理が重くなる症状があり、CPUパワーが食われているのでは、と感じていましたが、PIO病というのがあるのですね。今回初めて知りました。
調べてみると確かに、この記事のようにPIOモードになっていました。
但し、私は対策ではなく、交換をしようと思いました。
>そもそもHDDのアクセスエラーがしばしば発生するHDDというのは、壊れかけている可能性が高いと思います。このようになった際は、アクセスエラーの頻度にもよりますが、HDDの交換も検討したほうがよいと思われます。
全くおっしゃるとおりです。
最近何個かファイルが壊れて、大変な思いをしました。Outlookのメールのデータとか。
すでにバックアップ用のHDDを手配しましたが、内蔵HDDもこれを機会に交換しようと思います。
大変役立つ情報をありがとうございました。
非常に有益な情報を頂けて感謝しています。
実に障害認知から12時間以上にわたる悪戦苦闘でした。特に、最初に、ハードディスク系のパフォーマンス低下とアンチ・ウィルス・ソフトの障害を切り分けるところで時間を食いました。この時点でPIOに気付いていればよかったんですが・・・。
ずっと返答ができていなくてすみません。
この問題は、DMA, PIOなどの知識だけでは解決できないのが難しいところな気がします。
HDDの寿命も、実際にファイルが壊れるまでわかりづらいのが困りますね(普段からバックアップしておくというのもなかなか大変ですし....)。
初めてのレジストリ変更で恐々としましたが、
丁寧な説明のおかげで乗り切れました。
ありがとうございました!
レジストリーの書き換え方法も記載していただいてあれば、もっと助かりました。
もうかれこれ何年ぶりだろという感じです。
HDDが古いので寿命がきているのかもしれません。
レジストリからの変更ははじめて知りました。
判りやすい解説ありがとうございました。
ありがとうございます。
有り難うございました。
プライマリドライブだったのでドライバの削除、再インストールという荒療法は避けたいところ、レジストリの変更で一発で治すことができました。
的確な情報を提供頂き誠にありがとうございました。
どちらも発生したのがHDDの省電力でxx分後に電源が切れる事が原因だとは思ったのですが、連続して6回エラーを起こしたらPIOモードにする事が出来るとは知りませんでした。ためになりました。
Virtual PC蜀�縺ョ繧イ繧ケ繝�OS縺ョHDD縺後d縺溘i縺ィ驕�縺�縺ョ縺ッ縲√◎繧ゅ◎繧ゅお繝溘Η繝ャ繝シ繧ソ繝シ縺縺九i
縺ィ縺�縺�諢溘§縺ァ隲ヲ繧√※縺溘→縺薙m窶ヲ縺薙�ョ險倅コ九r隱ュ繧薙〒繝�繧」繝舌う繧ケ繝槭ロ繝シ繧ク繝」繧偵メ繧ァ繝�繧ッ
縺吶k縺ィ繝槭せ繧ソ繝シ縺縺善IO縺ァ縺励◆窶ヲ螳滓ゥ溘〒縺ッ繝√ぉ繝�繧ッ縺吶k鬆�逶ョ縺ァ縺吶′縲√∪縺輔°莉ョ諠ウ繝上�シ繝�
縺ョ荳榊�キ蜷医→縺励※PIO繧堤桝縺�縺ィ縺薙m縺ォ縺ッ驕斐○縺壺ヲ逶エ縺玲婿繧りィ倩シ峨@縺ヲ縺ゅj縲∝、ァ螟牙スケ遶九■縺セ縺励◆縲
HDDからSSDに換装して高速化に成功したのもつかの間、わずか2ヶ月足らずで元のHDD以下の性能になってしまい、がっかりしていました。なまじっか、「使っているうちにSSDの性能が低下」というような他の事例があったので、しばらく見当違いの原因追及をしていました。
しかし、このページのおかげで真犯人のPIO病を退治することができ、SSD換装直後の快適さが復活しました。感謝感謝です。
なお、PIO病にかかった原因は、推測ですがSSDの劣化ではなく、バッテリ劣化状態でACアダプタを蹴っ飛ばしてダウンさせるという事故を数回繰り返したのが原因ではないかと考えています。
こちらの対処方法を参考にレジストリの設定を初めてやってみましたが、おかげさまでPIO病から脱することができました。
取り急ぎお礼まで。
PIO病は懐かしいですね〜。
CD/DVDで読みずらいディスクを入れたりすると
あっさり発生しました。
PIO病が原因なのに、ドライブのせいにする人の
多かったことです。