パラレルATAインターフェースの同一バス上に、規格の異なるデバイスを2つ繋げると、遅いほうの規格に合わせられる、は大嘘

「大嘘」は言いすぎだな、「大昔の話」。


IntelチップセットからパラレルATAが一掃されて、シリアルATA全盛のこの昨今。いまさらパラレルATAの話も出てくることも無いんだけど、未だにこんなことを言うやつが多いので気になっていた。

パラレルATAの同一バス、例えばプライマリ側に2つのATA規格の違う世代のデバイスを繋げると、速い方の規格は遅い方の規格に合わせて遅くなってしまうので、本来の性能が発揮できない。


「本来の性能を発揮」っていうセリフは、6x86のリニアバーストモードとか、K6のライトアロケートとかの時代から大っ嫌いなんだけど、なんかニートの妄言みたいで、「本来の…」とか言ってる環境に限って、大して変わんねぇんだよ。


例えばマスタにDVD-Rとかの光学ドライブ、スレーブにHDDを接続したとして、まぁなんとなく経験則でこういう構成は避けるのが普通なので、いちいち気にしてはいなかったんだけど、ATA規格のどっからか、コネクタの位置でマスタ/スレーブが固定になったよね。

マザーボード上のコネクタの位置と、ドライブベイの位置とケーブル長の都合で、どうしてもマスタに光学ドライブ、スレーブにHDDをつけなければならないケースはよくある。


ここはひとつ、よくある、ってことにしてくれ。
でないと話が進まない。


でもさ、別にこの構成でもデバイスマネージャー上ではそれぞれのデバイスがサポートする最高の規格で認識されるし、HDD側の転送速度が落ちるってことはない。


ATAの規格書を昔読んだことがあって、確か当時、ドラフトは無料、承認されると有料だった。今は知らん。
でもそんなこと=同一バス上のデバイスは、古い方のスペックでネゴシエーションされるなんてどこにも書いてない。


で、ずっと気になってて、Yahoo!知恵袋で質問したり、ていうか質問する場所がそもそも間違ってるんだが、大嘘回答されたり、自分の中で解決してなかった。


そしたらさ、wikipediaのATAの項目のリンク先に記述があったんだよね。

http://www.faqs.org/faqs/pc-hardware-faq/enhanced-IDE/part1/

If you intend to put an older drive on the same cable as an ATA-2
drive, you may want to verify that your interface is capable of using
independent timing for master and slave device. Otherwise, your old
drive might end up slowing down your newer one because the controller
! is forced to use the lowest common speed. Modern interfaces like the
! Intel PIIX3 (430HX and VX and 440FX chipset), PIIX4 (430TX chipset)
! and, to a lesser extent PIIX (430FX chipset) don't suffer from this
! problem.


ATA-2以降、同一ケーブル上のマスターとスレーブデバイスは、個別のタイミングでアクセスされる。
古いデバイスはより新しい規格のデバイスを遅くすることがあるが、Intel 430HX世代以降のチップセットであれば、この問題は無い。


ATA-2が分岐点という理解でいいのかな。


「マスタ」「スレーブ」という言葉も、現時点のATA規格では意味が無くて、コントローラから見て"ID0"、"ID1"ぐらいの意味しかないはず。

歴史的経緯の互換性上、残っている言葉に過ぎない。


マスタデバイスのコントローラがスレーブデバイスを制御する時代はATA-2で終わった、と読める。
ここまではデバイス側の実装の話。


さらにコントローラ側の実装の問題で、ATA-2でも遅い方のアクセスタイミングに合わされてしまっていたことがある、と読める。


たしかに歴史的には事実だった。しかしそれは10年も前の話。という結論を得た。