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(0) | TrackBack(0) | ハードウェア
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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

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