fc2ブログ

PIO病に悩まされて

一、
 世に言うPIO病とやらに我がPCもかかってしまったのである。

 ある日突然、たいした容量ではないファイルのコピーに驚くほど時間がかかるようになった。今までの十倍以上である。
 HDDが壊れたのかと思い、S.M.A.R.T.を見てみるが、そうではないようだ。
 デバイスマネージャから「IDE ATA/ATAPI コントローラ」→「プライマリ(またはセカンダリ) IDE チャンネル」→「プロパティ」→「詳細設定」を辿ると、「現在の転送モード」が「PIOモード」になっている。私のPC環境であれば、通常「ウルトラ DMA モード 5」である。
 おお、これは、かのPIO病ではないか!

【追記】:Windows 7やVISTAでは、PIO病は生じないようであるが、それについては「Win 7でDMAを有効にす
    る」
を御覧下さい。

 これについては、既に解決済みの問題であり、マイクロソフト サポート オンラインに
「複数回のタイムアウトまたは CRC エラーの発生後 IDE ATA および ATAPI ディスクで PIO モードが使用される」
と題された文書がMicrosoftサポートにあり、詳細はそれに譲ります。

【追記】:上記の文書817472は、翻訳者により日本語に翻訳されたものであったが、2011年3月28日に更新さ
    れてた際、英文のKnowledge Baseの機械翻訳となり、意味不明な日本語になっているので、オリジナ
    ルの文書
を御覧になることをお勧めします。

 このPIO病とやらは、XPやWindows Server 2003、Windows 2000に発生するものらしい。

 ドライブに転送中、タイムアウトまたはCRCエラーが合計 6 回発生すると、IDE/ATAPI ポート ドライバ (Atapi.sys) が、転送モードを、最速の DMA(Direct Memory Access)モードから段階的に低速の DMAモードに下げて行き、最終的に転送モードを最も低速のPIO(Programmed I/O)モードまで下げる。これが、PIO病の正体である。

 元の転送モードに戻すには、デバイスマネージャからPIOモードに落ちているコントローラの「ドライバ」まで辿って行き、それを「削除」して、再起動すればよいらしい。

二、
 我が機の転送モードも、デフォルトのDMAモードに戻り、めでたしめでたし。
と思ったが、試しに7GB程度の一群のファイルを転送してみた。
 3台中、2台のHDDの転送モードが、みるみるDMA 5からDMA 1へと落ちていき、再びPIOモードに転落した。

 因みに、HD Tuneは、そのタブの「Info」に「Active: UDMA Mode 5(Ultra ATA/100)」などと、転送モードがリアルタイムで表示されるので、便利である。

 やはり、転送中のタイムアウトまたはCRCエラーの発生原因を取り除かねばならない。
 どのエラーによるものなのか。とりあえず、CrystalDiskInfoを見る。
 これは、ひどい。
 大抵、「0」である「UltraDMA CRCエラー数」の生の値が、それぞれ、「12744」、「14671」(10進法)となっている。

 WEBで検索をかけると、SATAケーブルの不具合が、その原因として多く挙がっている。早速、未使用のケーブルに交換して、ファイルを転送してみる。
 凄い勢いでCRCエラー数が増加し、またもやPIOモードに転落。

 メモリかもしれない。
 Memtest86+でテストをしてみるが、異常はない。

 2台がともにCRCエラーを出すのは、おかしい。
 電源を換えてみる。
 やはり、ダメか。

 だが、CRCエラー数の増加速度が、いくぶん緩やかになった。
 どういうわけなのか。
 ふと、気が付いた。この2台は、SATA電源ケーブルの1コネクタを2つに分岐する二又ケーブルで接続していた。
それを取り外して見ると、双方のコネクタの中央部がやや膨らんでいる。これが原因なのか。
 膨らんだ部分を押さえ込み、何度か抜き差しを行ってみる。接触不良の接点を回復する原始的な方法である。

 改めてファイルの転送を行い、CRCエラー数の増加の様子を観察する。
 おお!エラー数は増えない。
 HDD相互のファイル転送を数回繰り返してみる。大丈夫なようである。

 電源交換後にCRCエラー数の増加速度が落ちたのは、その作業によりコネクタの接触が少し回復したためであろう。

 CRCエラーの発生に、電源の不良も関係しているとは知らなかった。
 CRCエラーにお困りの方は、電源部を疑ってみるとよいかもしれません。

 【追記】:UltraDMA CRCエラーの真の原因は、マザーボードにあったようである。これについては
     「UltraDMA CRCエラーとマザーボード交換」を御覧下さい。

三、
 最後に、上記の文書にあったレジストリの変更を行った。

 この問題については、Microsoft Windows XP Service Pack 2 で、転送モードを下げる動作を従来よりも発生しにくくするために、タイムアウトまたはCRCエラーの発生が単に累積して6回に達した後ではなく、連続して6回のタイムアウトまたはCRCエラーが発生した後にのみ、転送モードを下げるように修正されている。しかし、レジストリを変更しないと実際にこの修正は適用されないと言う。

【追記】:このレジストリの変更については、これを自動で行なってくれるプログラムがMicrosoftより提供される
     ことになった。新たに更新された上記文書817472からMicrosoft Fix it 50644をダウンロードし、
     実行すればよい。レジストリを触るのは危険が伴うので、PCに不慣れな人はこれを利用される方が
     よいかもしれません。

 regeditを起動し、レジストリ キー
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}
まで辿る。
 そこに番号付きサブキーが、0001、0002、0003…と並んでいる。それぞれのサブキー内のDriverDesc 値に文字列値が、「プライマリ IDE チャネル」または「セカンダリ IDE チャネル」となっている番号付きのサブキーをクリックして、
 ○ [編集] メニューの [新規] をポイントし、[DWORD 値] をクリックし、
 ○ ResetErrorCountersOnSuccess と入力し、Enter キーを押し、
 ○ [編集] メニューの [修正] (または [変更]) をクリックし、
 ○ [1] と入力し、[OK] をクリックして、再起動。
 この変更を全てのプライマリないしセカンダリ IDE チャンネルであるサブキーについて行う。

 PC環境によって、IDEコントローラの数が異なると、上記のサブキーの番号も異なるようなので、注意が必要なようです。

tag : PIODMACRCエラー

プロフィール

そんぷうし ふうえん

Author:そんぷうし ふうえん

忙中閑は、こっそりと見出す。
カミさんと子どもたちが寝静まるのを待って、夜な夜なPCの前に端座し、その不可思議なる箱の内奥にそっと手を入れては、悦に入る日々なのであります。
時としてその手はPC以外の内奥にも。


※ リンク貼付及び引用は自由ですが、引用する場合は該当ページのURL及びタイトルを明記して下さい。

Automatic Translation
If you click a language below on any page, the translator is supposed to display the latest page at first. So you need to jump back to the previous page you were about to read.
Please note that there are some translations that are non-grammatical and do not accurately reflect the meaning of the originals because of machine translation.
 【Translated by Google Translate】
全記事一覧表示

   全ての記事のタイトルを表示する

最新記事
カテゴリ別アーカイブ
最新コメント
月別アーカイブ
検索フォーム
リンク
最新トラックバック
RSSリンクの表示
累計閲覧回数
  
QRコード
QR