PIO病

ATAの HDDが、DMA転送でなく PIO転送となり激遅になるの、随分前から何度か戦ったことがありますが、PIO病という名前が付いているんですね、知りませんでした。
おまけに、今までのパラレルATAだけに起きる不具合なのかと思っていたら、私の場合は SATAの 2台目を増設したら、2台目だけが、何をやっても PIOから抜け出れませんでした。
SATAとか全然違う規格になっても、いまだに PIO病とか起きるんですね!
まるで、この大容量 HDDの時代に、BigDrive問題が起きているようなモンです。
ちなみに、別々のメーカーの 2台の HDDを 2台目に接続して、2台とも PIO病でダメでした。

SATAへ接続している 1台目の HDDは MasterDeviceTimingMode=0×10010で UDMA100で接続されている。
2台目は、何やっても MasterDeviceTimingMode=0×10の PIOモードのまま。

PIOモードだと、書き込みや読み込みが 4Mbyte/secぐらいしか出ないんですよね。
250Gbyteを書き込むとしたら、250*10^9 / 4*10^6 = 62500
62500秒は 17時間。
普通の DMAモードで繋がると 30Mbyte/secぐらいは出ますから、
250*10^9 / 30*10^6 = 8300秒 = 2時間 20分
この速度差は放置しておけません。

ちなみに色々やってみたことを羅列すると
MasterDeviceTimingMode=0×10010に書き換えて再立ち上げ
管理ツール / ディスクの管理 で、ドライブレターを削除して再立ち上げ
デバイスマネージャー / IDE ATA ATAPIコントローラー の該当するデバイスを削除して再立ち上げ
MasterDeviceTimingModeAllowed=0xffffffff にして再立ち上げ
UserMasterDeviceTimingModeAllowed=0xffffffff にして再立ち上げ
ResetErrorCountersOnSuccess=0×1 にして再立ち上げ
ちなみに atapi.sysは windows2000sp4
ファイルバージョン 5.00.2195.6699
86,672バイト
と言う物でした。マイクロソフトの http://support.microsoft.com/default.aspx?scid=kb;ja;817472を見ると
5.0.2195.6741 86,896 Atapi.sys
ってのがあって、これは ResetErrorCountersOnSuccess=0×1のレジストリー追加が機能しそうに書かれているのですが、windows2000の場合、『この問題を解決するには、Microsoft Product Support Services にお問い合わせのうえ、修正プログラムを入手してください。』
おいおい、バグフィックスが有料サービスかよ!
ってことで却下、バカにするんじゃありません。他の方法を色々さがしてみました。

SATAの 1台目の HDDは問題無く DMA転送しているので、HDDを 1台目と 2台目で SWAPすると、今まで PIO病が出ていた SATA 2台目のケーブルで、問題無く 1台目の HDDは DMA転送になります。
PIO病が出ていた HDDは、1台目に繋げようと 2台目に繋げようと PIO病です。
色々検索すると、電源ケーブルが悪かったとか、PIOの 80pinケーブルが不良だったのか?とか、ハードの絡みもある様なんで一応確認してみました。マザーとケーブル、電源までが原因ではないようです。

んー、こりゃもう諦めるほか無い?となりかけていましたが、最後に atapi.sysでなく、SATAのチップは VIAなので VIAからドライバーを持ってきて試してみることにしました。
AMDの Socket939マザーにしたとき、1台目の SATAを繋いだら DMA転送で問題無く使用できたので、そのまま atapi.sysを使っていましたが、この atapi.sysを SATAで使っていたのが良くなかったようです。
私のマザー Abit AV8の SATAは、Southの VT8237 Integrated Serial ATA RAID controllerってのに繋がっているのですが、これを VIAから Driver持ってきて入れたところ、一発で 1台目も 2台目も DMAで転送できるようになりました。
VIA Arena の中にある Ver4.30Hってドライバーです。
デバイスマネージャー SCSIとRAIDコントローラー VIA SATA RAID Controller
バージョン5.1.2600.430 viamraid.sysってファイルです。

ただ、この RAID用ドライバーを入れると、別段 RAIDを組まずにシングル 2台としても問題無く使えますが、一般的なツールで SMARTの情報を見れなくなってしまうところがいまいちです。