2005年10月07日
SATA が PIO になる病気
HDD を変更してから一ヶ月、Windows が勝手に「SATA の転送モードを最高速度よりも低く設定してしまう」と言う病気に掛かってました。しかし、やっと完治したかもしれない![]()
PIO病またはPIO地獄とは、いつのまにやらWindowsがIDEデバイスの転送モードをPIOに変更してしまい、3MB/s(最近のHDDなんかだと50MB/sくらいは出る)くらいしか転送速度が出なくてOSの起動やら全てが遅くなってしまう現象です。
こちらにこの症状が発生する場合の治療方法がありました。本当に助かりました![]()
これが発病すると何もかも遅くなり、ドライバーを入れ替えたとしても根本から治さない限り再発する(ドライバーを最新にしても変化はなかった
)。と言うのも、これは Windows の仕様なのだそうです。つまり、強制的にこの仕様を変更する必要がある訳ですね。
「DMA による転送が 6 回失敗したら PIO に変更する」
良く調べてみると、HDD のエラーログに一際目立っていたのが「アクセスエラー」でした。要はそれが「6 回」起こると「PIO に変更」されていたのですね・・・困った仕様です。不慮の事故を防ぐ為なのでしょうか?
と言う訳で、前回デフラグを掛けた時などは HDD にアクセスし通しなので、エラーは無数に起こっていたのではないでしょうか・・・当然「PIO に変更」されてしまいますね![]()
さて回避方法ですが、hail2u.net さんのエントリーを読んでいただけると一目瞭然ですが、これには「レジストリ」を弄る必要があります。あくまで自己責任でお試し下さい。
HKEY_LOCAL_MACHINE
└SYSTEM
└CurrentControlSet
└Control
└Class
└{4D36E96A-E325-11CE-BFC1-08002BE10318}
└<PIOになっているデバイス>
プライマリーなら 0001
セカンダリーなら 0002
└ResetErrorCountersOnSuccess
└MasterDeviceTimingModeAllowed
マスター接続の場合。
スレーブなら SlaveDeviceTimingModeAllowed
ResetErrorCountersOnSuccess
→DWORD 値を「1」に。なければ新規で作成します。
MasterDeviceTimingModeAllowed
→DWORD 値を「ffffffff」とする(標準の設定?)。
この修正を行なうと、以下のような動作に変更されるそうです。
「DMA による転送が 6 回連続で失敗したら PIO に変更する」
それぞれ修正し、Windows を再起動します。その後デバイスを確認して直っていれば成功です。くどいようですが、レジストリを弄るのであくまでも自己責任で![]()
追記:
MasterDeviceTimingMode(マスター接続の場合。転送モードの固定)の値を指定する事もできるようですが、ハードが対応している範囲内でしか指定できません。対応していなければ元のモードに戻ります。
» PIO病回復! from blog:ポケットアルバム
自分のPCのHDD構成はIDE1台,SATA1台の2台なのですが... [Read More]