2007年09月18日

PIO病(2000/XPでHDD, DVDドライブが異常に遅くなる)

 Inspiron1720とは別のPC(知り合いが使っているWindows XPマシン)での話ですが、HDDの読み書き速度が異常に遅くなり、調べてみるといわゆるPIO病ということがわかりました。いろいろと調べた結果、PIO病に関して記述している多くのサイトで、「IDEドライバを削除して再起動」を解決策として挙げていました。
 しかし、もっとよくよく調べてみると、実はドライバの削除をしなくても、レジストリの設定で解決できるらしいとの情報も見つかり、実際、ドライバを削除しなくても解決することができましたので、記録しておきます。

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」となっているかどうかで確認できます。
pio1.jpg
 (どのチャネルが問題の発生しているデバイスかわからない場合、「詳細」→「バス関係」を参照して、デバイス名などで判断します)
 そして一度PIOモードに落ちると、デバイスドライバの設定に関わらず、いつもPIOモードで起動するようになってしまいます。通常の方法では解決できず、途方に暮れるケースが多かったためでしょうか、「PIO病」という通称が付いてしまったようです。

よくある解決策(ドライバの削除+レジストリ設定)

 今では、少し検索するとすぐに解決策が見つかります。その多くが「IDEチャネルのデバイスを削除して再起動する」というものでした。このとき、1回再起動するとすぐに2回目の再起動を促され、ドライバがインストールされると同時に、設定が初期化されるとのことです。初期化されることでPIO病から開放され、設定どおりDMAとして起動するというしくみです。
 それに続けてよくある情報が「再びアクセスエラーが6回に達した際に、今度はPIO病にならないように、PIOに落ちる条件を『6回連続でアクセスエラーが発生したとき』に変更する」というものです。ちょっとまぎらわしいですが、デフォルトでは、アクセスエラーする度にカウントアップされていき、
アクセスエラーが(長い期間をかけてでも)合計6回に達するとPIOに落ちる。
という動作ですが、これを
6回連続でアクセスエラーが発生した場合のみPIOに落ちる。
つまり、5回連続以内に復旧したエラーは回数がリセットされる。
という動作に変更するということです。これは、レジストリエディタで
 ・HKEY_LOCAL_MACHINE
  ・SYSTEM
   ・CurrentControlSet
    ・Control
     ・Class
      ・{4D36E96A-E325-11CE-BFC1-08002BE10318}
       ・[PIOになっているデバイス]
        ・ResetErrorCountersOnSuccess
に、DWORD値で「1」を設定することで可能です。「PIOになっているデバイス」は、それぞれの階層の「DriverDesc」の値を参考にすれば識別できると思います。このレジストリはMicrosoftのページでも紹介されています。
 ・複数回のタイムアウトまたは CRC エラーの発生後 IDE ATA および ATAPI ディスクで PIO モードが使用される(Microsoft)
これによると、Windows XPではSP1に特殊な修正プログラムを適用するか、もしくはSP2を適用していないとダメっぽいです。
 いずれにしろ、これでひとまずはPIO病を直すことができます。

ドライバを削除しない解決策

 先の方法で解決できそうではありますが、PIO病が発生したのが起動ドライブの場合、なんとなく心理的にドライバ削除を避けたくなります。解決策として見つかる情報では、特に何の注意書きもなく「IDEチャネル削除して再起動」というのばかりですので、起動ドライブであっても大丈夫のように思えます。ですが、できれば他の方法が無いかと探したところ、レジストリ設定だけで直す方法が見つかりました。
 ・こまったときのデルフォーラム 動作が遅いです
 ・hail2u.net - Weblog - PIO病
これらの情報によると、レジストリの
 ・HKEY_LOCAL_MACHINE
  ・SYSTEM
   ・CurrentControlSet
    ・Control
     ・Class
      ・{4D36E96A-E325-11CE-BFC1-08002BE10318}
       ・[PIOになっているデバイス]
        ・MasterDeviceTimingModeAllowed
に、16進数で「ffffffff」を設定するというものです。この設定によって、次回起動時にHDDのモード再設定が行われ、デバイスの仕様やドライバの設定が合っていれば、DMAモードになるとのことです。

結論と実施結果

 結局、IDEチャネルのドライバを削除せずとも、以下のレジストリ設定だけで「モードの再設定」「PIOに落ちる条件の変更」ができるようです。
 ・HKEY_LOCAL_MACHINE
  ・SYSTEM
   ・CurrentControlSet
    ・Control
     ・Class
      ・{4D36E96A-E325-11CE-BFC1-08002BE10318}
       ・[PIOになっているデバイス]
        ・MasterDeviceTimingModeAllowed ← DWORD16進数で「ffffffff」
          モードの再設定
        ・ResetErrorCountersOnSuccess ← DWORDで「1」
          PIOに落ちる条件を変更
 実際に試した結果、無事ドライバを削除することなくレジストリの設定のみでPIO病を治し「DMAモード5」に変更することができました。HDBENCHで計測した結果、5倍程度速度が上がりました。
 以上でPIO病を治す方法については終わりですが、HDDの寿命について少し書いておきます。この日記ではPIOに落ちる条件を変更して、DMAモードを維持する方法を記載しましたが、そもそもHDDのアクセスエラーがしばしば発生するHDDというのは、壊れかけている可能性が高いと思います。このようになった際は、アクセスエラーの頻度にもよりますが、HDDの交換も検討したほうがよいと思われます。

追記: デバイス削除による方法を試した記録

 実は今回、レジストリのみの解決策を試す前に、IDEチャネル削除による解決策も試していましたが、うまくいきませんでした。
 具体的には、Cドライブ(起動ドライブ)を表すプライマリIDEチャネルを削除して再起動しました。多くのWebサイトでの記述では、起動時に再度、再起動が要求され、IDEチャネルのドライバがインストールされて無事復旧するとあったのですが、実は起動に失敗してしまいました。正常に起動できなかったため、起動メニューが表示されたので「前回起動時の設定で起動する」を選んで、とりあえずPIOモードのままで起動はできました。その後、あらためてレジストリ修正のみで治す方法を試みて、上述の通り復旧したという経緯がありました。
 ただし、これは今回試したPCが特殊だったからではないか、と想像しています。というのは、今回PIO病になったPCは、HDDが暗号化されるソフトウェアが組み込まれていたのです。どのような仕組みで暗号化/復号化されているのか、詳しくは知らないのですが、WindowsからはHDD暗号化されていることを意識せずに使えているので、OSより下のレイヤーにも何らかの仕掛けがされていると思われます。実際、この暗号化ソフトウェアの説明書では、「MBRを修正すること」「デュアルブートにすること」「暗号化前の復元ポイントまで戻ること」等が禁止されています。そのあたりの関連で、IDEチャネル削除という方法がうまくいかなかったのではないのだろうか、と想像しています。
タグ:UDMA PIO

posted by k at 21:58 | 東京 曇り | Comment(18) | TrackBack(0) | ハードウェア
この記事へのコメント
大変役に立ちました。

itunesなどを筆頭に、HDDのアクセスが起こるたびに処理が重くなる症状があり、CPUパワーが食われているのでは、と感じていましたが、PIO病というのがあるのですね。今回初めて知りました。

調べてみると確かに、この記事のようにPIOモードになっていました。

但し、私は対策ではなく、交換をしようと思いました。
>そもそもHDDのアクセスエラーがしばしば発生するHDDというのは、壊れかけている可能性が高いと思います。このようになった際は、アクセスエラーの頻度にもよりますが、HDDの交換も検討したほうがよいと思われます。

全くおっしゃるとおりです。
最近何個かファイルが壊れて、大変な思いをしました。Outlookのメールのデータとか。
すでにバックアップ用のHDDを手配しましたが、内蔵HDDもこれを機会に交換しようと思います。

大変役立つ情報をありがとうございました。
Posted by あづま at 2008年09月25日 09:50
Windowsのサウンド機能にはっきりと障害が現れ、ハードディスクへのアクセスごとに音が途切れるという症状でした。ゲームのDirectX系の効果音はもとより、Windows標準の操作音にも影響が出ていました。DMAの機能が失われていることは強く疑われ、実際ハードディスクがPIOモードになっていることは確認できたのですが、復旧方法や予後の注意点が皆目わからず途方に暮れていました。

非常に有益な情報を頂けて感謝しています。

実に障害認知から12時間以上にわたる悪戦苦闘でした。特に、最初に、ハードディスク系のパフォーマンス低下とアンチ・ウィルス・ソフトの障害を切り分けるところで時間を食いました。この時点でPIOに気付いていればよかったんですが・・・。
Posted by けんた at 2008年10月03日 15:00
コメントありがとうございます。
ずっと返答ができていなくてすみません。
この問題は、DMA, PIOなどの知識だけでは解決できないのが難しいところな気がします。
HDDの寿命も、実際にファイルが壊れるまでわかりづらいのが困りますね(普段からバックアップしておくというのもなかなか大変ですし....)。
Posted by k at 2008年12月04日 00:39
この記事のおかげでPIO病直りました。
初めてのレジストリ変更で恐々としましたが、
丁寧な説明のおかげで乗り切れました。
ありがとうございました!
Posted by ななし at 2009年01月13日 15:43
分かりやすくてよかったです。おかげさまで最近めちゃくちゃ遅く感じてたパソコンが昔の機敏さを取り戻してくれました!ありがとうございます。
Posted by 無愛想なネコ at 2009年05月16日 14:30
こんにちは。サイト拝見しました。とても良い記事ですね。最近私のサイトを作ったのでよかったらどうぞ見て行ってください
Posted by メル友募集 at 2009年10月06日 16:14
問題が解決しました。
レジストリーの書き換え方法も記載していただいてあれば、もっと助かりました。
Posted by at 2010年09月23日 22:39
PIO病にかかりました。
もうかれこれ何年ぶりだろという感じです。
HDDが古いので寿命がきているのかもしれません。
レジストリからの変更ははじめて知りました。
判りやすい解説ありがとうございました。
Posted by かわしそす at 2010年12月19日 11:46
去年末から、CPU負荷が凄かったので調べていたら辿りつきました。1.3GHZのCeleronなので他のアプリが殆ど動かず困っていたところ助かりました。
ありがとうございます。
Posted by 中庸 at 2011年01月17日 22:07
こちらの記事を参考にしまして、無事にPIO病が治りました。ありがとうございました。
Posted by らいぞう at 2011年02月12日 21:05
ディスクアクセス時にサウンド機能にノイズが乗るようになり、Googleから検索させて頂きました。
有り難うございました。
Posted by もっちぃ at 2011年02月18日 16:24
マウスカーソルも泳ぐほどH/W割り込みが発生するようになり"PIO病"で辿り着きました。
プライマリドライブだったのでドライバの削除、再インストールという荒療法は避けたいところ、レジストリの変更で一発で治すことができました。
的確な情報を提供頂き誠にありがとうございました。
Posted by Snufkinski at 2011年03月03日 10:48
パソコンが欲しいけれどお金が…とお嘆きのあなた。 有名メーカーのパソコンがたった100円から!! 購入時に、iPodかプリンター、お好きなほうをオプションで選べます!
Posted by 100円エコPCマーケット at 2011年09月02日 10:17
1年前に買ったばかりのHDDがPIO病を起こし、それからちょうど1年後、再発しました。
どちらも発生したのがHDDの省電力でxx分後に電源が切れる事が原因だとは思ったのですが、連続して6回エラーを起こしたらPIOモードにする事が出来るとは知りませんでした。ためになりました。
Posted by mkato at 2012年01月23日 21:34
縺溘a縺ォ縺ェ繧翫∪縺励◆m(__)m

Virtual PC蜀�縺ョ繧イ繧ケ繝�OS縺ョHDD縺後d縺溘i縺ィ驕�縺�縺ョ縺ッ縲√◎繧ゅ◎繧ゅお繝溘Η繝ャ繝シ繧ソ繝シ縺縺九i
縺ィ縺�縺�諢溘§縺ァ隲ヲ繧√※縺溘→縺薙m窶ヲ縺薙�ョ險倅コ九r隱ュ繧薙〒繝�繧」繝舌う繧ケ繝槭ロ繝シ繧ク繝」繧偵メ繧ァ繝�繧ッ
縺吶k縺ィ繝槭せ繧ソ繝シ縺縺善IO縺ァ縺励◆窶ヲ螳滓ゥ溘〒縺ッ繝√ぉ繝�繧ッ縺吶k鬆�逶ョ縺ァ縺吶′縲√∪縺輔°莉ョ諠ウ繝上�シ繝�
縺ョ荳榊�キ蜷医→縺励※PIO繧堤桝縺�縺ィ縺薙m縺ォ縺ッ驕斐○縺壺ヲ逶エ縺玲婿繧りィ倩シ峨@縺ヲ縺ゅj縲∝、ァ螟牙スケ遶九■縺セ縺励◆縲
Posted by zeros at 2012年02月15日 15:12
おかげさまでSSDのトラブルが解決しました!

HDDからSSDに換装して高速化に成功したのもつかの間、わずか2ヶ月足らずで元のHDD以下の性能になってしまい、がっかりしていました。なまじっか、「使っているうちにSSDの性能が低下」というような他の事例があったので、しばらく見当違いの原因追及をしていました。
しかし、このページのおかげで真犯人のPIO病を退治することができ、SSD換装直後の快適さが復活しました。感謝感謝です。

なお、PIO病にかかった原因は、推測ですがSSDの劣化ではなく、バッテリ劣化状態でACアダプタを蹴っ飛ばしてダウンさせるという事故を数回繰り返したのが原因ではないかと考えています。
Posted by t3 at 2012年03月24日 02:48
DVD1枚焼くのに、6時間もかかってしまい、これは何だ?とネットで調べていると、PIO病なるものにかかっていることがわかりました。
こちらの対処方法を参考にレジストリの設定を初めてやってみましたが、おかげさまでPIO病から脱することができました。
取り急ぎお礼まで。
Posted by NAO at 2012年09月30日 22:02
ネットサーフィンしていて、ここに来ました。

PIO病は懐かしいですね〜。

CD/DVDで読みずらいディスクを入れたりすると
あっさり発生しました。
PIO病が原因なのに、ドライブのせいにする人の
多かったことです。
Posted by Windowsは3.0から使ってます at 2012年11月14日 18:24
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/56001181

この記事へのトラックバック