Windows7+SATA HDDでもPIO病は発生する

先日Twitterで「PIO病」という単語をもの凄く久しぶりに見かけて、「未だにパラレルATA(IDE)のHDDが現役なのか。寿命も考えてそろそろSATAにした方がいいのに」と思ってしまう機会があった。かつてIDE HDDが主流だった頃は頻繁に聞いたPIO病という言葉も、SATA HDD時代になった近年は聞く機会がグッと減り、個人的には死語のたぐいではないかと考えていた。

ところが気になって少し調べたところ、どうも「SATA HDD+Windows7」という現在主流の構成でもPIO病は発生することがあるということがわかった。もはや完全にレガシーとなったIDE規格の幻影が、未だに一部ユーザを苦しめることがあるらしい。個人的に興味深かったので、少し整理してみたい。

「PIOモード(病)」って何だ

まず「PIOモード」が何なのか知らない人のために軽く説明しておきたい。

今は意識する機会はほとんどないのだが、ストレージのデータ転送には「高速で低負荷の“(Ultra)DMAモード”」と「低速で高負荷の“PIOモード”」という大きく分けて二つのモードがある。HDDにせよ光学ドライブにせよWindowsなら高速な「DMAモード」を使うのが普通なのだが、それが何らかの拍子に低速の「PIOモード」に勝手に切り替わってしまう不具合が一定の頻度で起こっていた。PIOモードは低速なだけでなく前述のようにPCの負荷が非常に高くなるため、「ファイルをコピーしているとPCが重くなって何もできなくなる」という事態すら発生するのも珍しくなかった。

entry_317_001.gif
PIOモードになっている光学ドライブのプロパティ画面。(富士通Q&A - [Windows Vista] CDやDVDの読み込みが遅くなったり、再生時に音や映像が途切れたりします。 - FMVサポート : 富士通より引用)

この現象は「6回アクセスエラーが発生すると、Windowsは安全のため転送モードの設定を自動的に1段階落とす」「何度もエラーが発生すると、最終的には一番低速なPIOモードになる」というWindowsの仕様が原因だとされている。解決法についてはそれについて書かれているページがいくらでもあるので深くは触れないが、一般的に「デバイスマネージャーからIDEデバイスを削除する」という方法が良くとられていて、自分もこれを実行していたと記憶している。

このような「勝手にWindowsの転送モードの設定がPIOになって(落ちて)しまう現象」を俗称として「PIO病」と呼んだ。

しかしこれらの話を良く見かけたのは「IDE HDD+Windows XP」までの時代で、Vista以降はSATA HDDが一般的となったためこれはすでに過去の問題だと思っていた。自分の環境にしてもWindows7にしてからはPIO病が発生していない。では「PIO病は根絶したのか」といえば、どうもそうではないようだ。

「表示だけ『PIO』になる」病

見出しの通りに「実際の転送速度には特に影響がないが、OS上の表示が『PIO』になっている(ので気持ち悪い)」という現象。SSDでの報告が多いようだが、これはSATAポートの若い(小さい)方に繋ぐと起こる現象だかららしい。

詳しくはリンク先を読んでもらいたいが、どの記事にしても「表示は『PIOモード』でも実際の速度は(本当のPIOモードのように)激減していない」という現象で一致している。また、解決法もみな同じで「0と1のSATAポートを使わなければよい」ということのようだ。話を総合するに「単に表示だけの問題」ということでほぼ間違いないと思うので、この「表示だけPIOモード」に関しては、気にしない人はそのままでいいのではなかろうか。

Vista以降でも転送エラーが起きれば、結局はPIOモードになる

Vista以降のWindows環境でPIO病に触れている記事はネットにもあまり多くないのだが、いくつかの記事ではWindows7・VistaでもPIO病に至ることと、その解決方法が書かれている。

以上の記事は「SATAをIDE互換モードで利用している」という条件下の話なのだが、それでも結局は「Windows7・Vistaでもアクセスエラーが発生するとPIOモードになる」という仕様は残っているということになるのだろう。最初からVista以降のWindowsを使っているのなら、本来はSATA HDDでIDE互換モードを使う必要性はない。しかし、OSをXPからアップグレードして使っていたりとか、古めのM/BでBIOSの初期設定がIDE互換モードになっていたりする環境が結構多いのかもしれない。

さて、次に気になるのは「ネイティブなAHCI(SATA)モードでもPIOモードなってしまうのか」ということだが、これに関してはマイクロソフトやPCメーカーなどの手で書かれたヘルプ記事等が見つからなかった。自分のWindows7環境でも発生したことないので体験談を書くこともできないのだが、個人のブログ記事なら触れられているものがあった。

かなり詳しく検証してある記事なのでリンク先を読んでもらいたいが、要約すれば「AHCIモードでもPIOモードになる」「問題はAHCIドライバの入れ替え・更新で解決した」という結論になっている。

2.AHCIモードにすれば再発しない
これは、巷に僅かに存在する「SATAの世界にPIO病は存在しない」という勘違い記事から派生した記事である 可能性がある。転送エラーに対するOSとしての防衛モードなのだから、IDEだろうがSATAだろうが、Windowsから 見て違いなどない。

これがホントの2TBの壁?│黒い森から来た少年

現実問題として「Windows7/Vistaでも勝手にPIOモードになる」「OS付属の標準ドライバにはAHCIでもDMAモードをON/OFFする設定がある」という事実から考えると、これは正しいように思う。恐らく色々なOSチューニングや調整によってVista以降は再現しにくくなっているが、条件さえ満たせば今でもPIO病は起こってしまう……というのが実態ではなかろうか。

ちなみにWindows8はどうなっているのかと調べてみたものの、はっきり言ってまともな情報は「皆無」といった状態で、実態をつかむことができなかった。時間が経って利用者が増えてくれば、また事情は異なってくるかもしれない。

PIO病を解決してもすぐに再現する場合について

前述のとおり、PIO病が発生したということは「ストレージ(HDD・光学ドライブなど)のエラー」が発生しているということになる。DMAモードに変更してもすぐに再発してしまう場合は、ハードウェア・ソフトウェアのどちらか、あるいは両方に何らかの問題がある可能性が高い。

まずソフトウェア的な問題だとしたら、一般的な対策は「SATAドライバの入れ替えや更新」「OSの再インストール」などになる。手間はともかくお金はかからないので、まずこちらから試すのをお勧めしたい。それでも直らないならハード側の問題を疑った方がいい。

ハードウェアの問題は原因調査が比較的難しく、場合によってはパーツの買い換えなども必要なため、解決へのハードルがある程度高い。具体的には「SATAケーブルが抜けかかっていたり、断線していないか」「エアフローが悪くPCケース内やHDDが高温になっていないか」「HDDが他のパーツといっしょに共振していないか」「経年劣化などによる電源の不安定化」「HDD自体の故障」など様々な可能性が考えられる。かなり面倒な作業になると思うが、一つずつ原因を探ってくしかないだろう。