▼なぜ IDEハードディスクのデバイス名は "wd" なのか?▼

わたしは UNIX Wizard ではなく、Freeでない頃の純BSDは いじったことないし、 相性問題の激しかったころのAT互換機もいじっていないので、 間違ったことを言っている可能性がありますが、

$Id: wd.html,v 1.6 2001-03-27 06:40:41+09 kabe Exp $


"wd" ≒ "Western Digital" ? "Winchester Drive"

まず結論から言ってしまうと、"wd" てのは "Western Digital" の略… だと思っていたんですが、4.4BSD-Liteの MAKEDEV には

#	wd*	"winchester" disk drives (ST506,IDE,ESDI,RLL,...)
などと書いてあるので、真相は昔のことを知っている 人でないとわからんです。

BSD-Lite由来のNetBSD,FreeBSDでは、後になって

wd - Generic WD100x diskcontroller driver (FreeBSD 2.0, 1994/08/31)
wd - WD100x compatible hard disk driver (NetBSD 1.4, 1998/10/15)
なんてのがマニュアルに追加されてるので Western Digital のつもりのようですが…

手元に "DYNIX System Administration Guide" という 誰も知らない(国内では100人いないと思う)4.2BSDベースのOSの マニュアルがあるんですが、これでは "wd" は新しめ(当時;300MBくらい)の SCSIディスクを指しています。


初期の IBM PC のハードディスク

IBM PC/XT や ATについていたハードディスクは、

という構成でした。

	CPU(i286) --(ISAバス)-- WD1003 ----+--- ST-506
	                                   +--- ST-506
	[  マザーボード  ][  拡張カード  ]
この頃のHDDの容量は 10M-20M くらいが相場で、500MB なんて想像もつかん という時代です。

WD1003とST-506の間の接続は、シーク信号や読み書きの アナログ信号が通っています。 ちなみにフロッピーディスクではどうかというと、

	CPU(i286) --(ISAバス)-- μPD765 ----+--- 5" FDD (Shugart接続)
	                                    +--- (2台目FDD, 5"か3.5")
	[  マザーボード  ][  拡張カード  ]
μPD765てのは NEC のチップです。今ではチップセットに取り込まれてはいるものの、 日本発のスペックが世界標準になった隠れた例だと思います。

しかし高機能な故コマンド体系が複雑で、ドライバを書くのがめんどくさい。 自作マイコンを作った時は、 あまりに誤動作するのとドライバがめんどくさいという理由で、 もう一つのメジャーである FD1793 (Western Digital) を使いました。 互換品の MB8877(富士通) なんかは FM-77(同) で使われています。

IDEへ

時代が進んでハードディスクが標準的になると、部品点数を削るため 中間にある部品は両側のどちらかに吸収されます。

フロッピーの場合はわかりやすくて、μPD765とFDDの間で切り、 FDD はそのままで、μPD765はマザーボードのマルチI/Oチップやチップセットに 吸収されます。

ところが HDD ではなにを血迷ったのか ISAバスの位置で切断され、 WD1003コントローラはハードディスク側に搭載されるようになりました。
(現実問題として、高速のアナログ信号を引き回したくないという 考えだと思う。) これが IDE (Intelligent Drive Electronics) ハードディスクです。

	CPU(i286) --(ISA)--+-- マルチI/O(μPD765互換) -- FDD
	                   |
			   +-- 単なるバッファ ---------- IDE-HDD (WD1003互換コントローラ搭載)
	[--------------マザーボード-------------------]

ですから、IDE コネクタには ISA バスとほとんど同じ信号線が出ています。 基本的な図式は EIDE や UltraATA になっても変わっていません。 BIOSの 504MB 制限なども、元をたどれば このWD1003 のスペックが元になっています。


マスタ・スレーブ

初期のIDEディスクでは、2台目のディスクは1台目と同じメーカーのものを 使えという話を聞いたことがあるかと思います。 WD1003がHDD側に移ってしまったので、無理が生じているからです。

つまり、今までは 1つの WD1003 で 2台のHDD を制御していたわけですが、 IDE では

	CPU --- バッファ ---IDEコネクタ---+-- WD1003 --- HDD
	                                  |
	                                  +-- WD1003 --- HDD
	[---------マザーボード-----]         [----IDE HDD-----]
となり、本来1つのコントローラーが2つ、同じアドレスに 居座っていることになります。 何もしなければ信号がぶつかったりするので何らかの対策が必要です。

ので、IDEの2台目は「スレーブモードで動け」と設定し、 2台目のHDDに関するアクセスだけに反応するように細工します。 同様に1台目には「マスター」に設定し、1台目にだけ反応するようにする。 コントローラー全体に対するコマンドは、両方が読みとり、 片方だけが応答するという形になります。 (両方応答すると信号がぶつかってしまう。)

ここで、「片方だけが応答する」わけですから、ちゃんと2台目との整合性 がとれていないとうまく動作しません。 1台目のコントローラーからは2台目が一切見えませんから、今までの CPUからのアクセスを横から見ていて「たぶん2台目はこういう動作をしてるんだろう」 と予想しながら動かないといけません。

IDEディスクのメーカーが違えば、使われているコントローラーの仕様も 微妙に変わってきます。基本は WD1003 互換のはずなんですが、予想が 外れると変な動作になると。
だから、「なるべく同じメーカーで揃えろ」 場合によっては「容量も揃えろ」と言われるようになるわけです。 (同じメーカーでも動かない場合もあったかもしれない)


そしてATAへ

こんなんじゃ話にならんということで、ANSI がIDE を規格化したのが ATA (AT-Attachment) です。 最近のIDEハードディスクは全てこれに対応していますから、 相性問題はほとんどなくなりました。ありがたやありがたや。


セカンダリIDE

WD1003はHDDは2台しか制御できないので、ATに繋げられるHDDは 基本的に2台までです。 最近のAT互換機では「セカンダリIDE」を搭載、つまり等価的に WD1003相当のものをもう一つ、別のアドレスににつなぎ込むことによって、 4台までのHDDが制御できるようになりました。 (時代は進化しているので、WD1003互換ではあるがいろいろ拡張されています)

	CPU ---&'#($%--+--[IDE1:ISAバスもどき]--+-- (WD1003に見える) -+- HDD
	               |                                              +- HDD
	               |
	               +--[IDE2:ISAバスもどき]--+-- (WD1003に見える) -+- HDD
	                                                              +- HDD
IDEはコントローラー1つにつき1つの IRQ を消費するので、ただでさえ少ない IRQ がさらに少なくなりました。 (プライマリ → IRQ14, セカンダリ → IRQ15 )


で、wdとは

コントローラーに使われていた WD1003 チップの頭文字、というのが 私が信ずるところです。 が、前述のように 4.4BSD-Lite では "winchester" と書いてあるので 本当はどうだったんかいな。

なぜ winchester ではなさそうだと思うのかというと、

逆に winchester をサポートする理由としては

がありますが、IBM PC/ATアーキテクチャ(aka i386)でしか通用しない話です。

もっとも当時のデバイスドライバはアーキテクチャ間で使い回しが 効かなかったでしょうから、i386に限った話で十分… ううむ winchester の略なのか?

んじゃ WD1003 の WD はなんの略だと聞かれても、真相は Western Digital の 名付け親に聞かんとわからんです。半導体チップの名前ですから、必ずしも なんかの略だというわけでもない。 (日立→HD、NEC→μP、富士通→MB、モトローラ→MC…)

今ではWestern Digital製のチップが一切使われていない構成も 普通になっていますが、わざわざデバイスドライバの名前を "ide" とか "ata" に変える気は起こらんと思います。 別に困っていないしね。


他のOSでは

BSD以外ではどーなっとるのかのぅと思っても、調べられる資料は 思ったより少ないような。

新しめのOSでは "ide" を採用しとるようです。


参考文献

日本では、初心者を卒業した中級者むけの書籍や資料は本当に少ないです。

PCアーキテクチャが根付くためには、config.sysの議論や機器の 接続のお話だけではだめで… (ブートストラップP-2#4, 1993/07/01)
という状況は、5年後の今でもあまり変わっていません。

"特集 PCアーキテクチャとハードウェアの研究"、 ブートストラップ Project-2 No.4, CQ出版社 (雑誌扱なのでISBNはない)
AT互換機の原典に基づき、「原理的なところからの勉強の やりなおし」をすすめる本。 「初めてのDOS/Vマシン組み立て」系の本を卒業したら、 これが今の所一番おすすめです。 …が、絶版みたいですねェ…(雑誌だしね)
"IBM PCとISAバスの活用法"、 トランジスタ技術編集部 編、 CQ出版社 (絶版?)
タイトルの通り、ISAバスの解説が主なので、AT互換機内部に ついての詳しい解説はキーボードとシリアル回りの最小限なものです。
OPEN DESIGN No.7 PCIバスの詳細と応用へのステップCQ出版社 (ISBN4-7898-3530-8)
当ページに書いてあることとはあんま関係ないですが、 PCIバスについて知るならまずはこれというくらい読まれている (みたい)です。 トラ技スペシャルに似たような がありますが、あんま役に立たないのでこちらは店頭で見てから 購入を決めても遅くないかと。
"Hard Drive Basics: The Technician's Guide to Understanding Hard Disk Drives", http://www.datarec.com/hdtech1.html
PC/XTとATの当時のハードディスクについての解説。 画像などはないのですが、歴史的しがらみのようなものも 書いてあります。
"Click & Learn All about the PC!", http://www.mkdata.dk/english/start.htm
AT互換機について体系的に学ぶことができるサイト。 基本的には初心者向けの解説です。 オリジナルはデンマーク語らしい。

kabe@sra-tohoku.co.jp