1. トップ
  2. 新着ニュース
  3. IT
  4. IT総合

HDDのコントローラーとI/Fを一体化して爆発的に普及したIDE 消え去ったI/F史

ASCII.jp / 2024年4月29日 12時0分

 少し間が空いてしまったが、消え去ったI/F史の今回の話はIDEである。IDEの生みの親はConner Peripheralsであり、同社のCP341が最初のIDEを利用した製品である。

左はSeagateのU6 40GB IDE。右はさすがにもうIDEケーブルの手持ちがなく、EIDEケーブルとなる(なんでまだ新品があるのだろう?)

Conner氏が開発したI/Fを COMPAQが採用して業界標準に

 Conner Peripheralは連載374回で取り上げたが、簡単に説明するとSeagate Technology創業者の1人であるFinis F. Conner氏がSeagateを退社後に立ち上げたConner Peripheralsで3.5インチHDDを開発する。

 この際にHDDのコントローラーとI/Fを一体化したものを開発。これのプロトタイプをCOMPAQに持ち込んだところ直ちに採用が決まり、大量出荷が始まった。競合メーカーも互換製品を製造、結果的に業界標準になったというものだ。

 ちなみにConnerがIDEのプロトタイプをCOMPAQに持ち込んだのは1986年頃で、1987年にConnerが出荷したHDDの9割はCOMPAQが買い取っている。とはいえ、まだ従来のST-506 I/Fやその改良型のESDIのI/Fを搭載した製品も少なくはなかった。

 下の画像はPC Magazine 1990年5月15日号に掲載されたHARD DRIVE Internationalというショップの広告であるが、まださまざまな方式のHDDが販売されていたのがわかる。ただ筆者の記憶で言えば、1992年頃からはもうHDDと言えばIDEとSCSIがメインで、ST-506やESDIのHDDは入手不能とまでは言わないまでも、かなり数を減らしていたように思う。

MiniScribeもST506互換だった気がするのだが、I/Fカードが付いてくるあたりは互換性の問題があったのだろうか? MicroPolisの名前が懐かしい

 さて、IDEはIntegrated Drive Electronicsの略である。SASIやST-506、ESDIといったI/Fは、ホストとのI/FとHDDのコントローラーは別々になっており基板が2つ必要だった。これを簡単化し、1つの基板でホストとのI/FとHDDのコントローラーをまかなえるようにしたので"Integrated"という名前がついたわけだ。

 ちなみにSCSIは最後までホストとの接続のためのI/Fに留まっており、HDDなどのコントロールは別の制御基板が必要になっている。それに比べて安価に実装できる、というのがIDEの売りだったわけだ。これを実現するために、IDEでは本来HDDのコントローラーが担っていた処理を、一部バスプロトコルに持ち込んだ。それがCHSと呼ばれる場所指定の方式である。

 前回のSASIの時も少し書いたが、SASIやSCSIはバスプロトコルには「どんなデータを流すかは一切関与していない」。したがって「HDDのどこからどういうふうにデータを読み出すか、あるいはデータを書き込むか」に関しては、そのSASIなりSCSIの上位プロトコルで解決していた。

 要するにコントローラーに対してホストから「HDDのここからこういう具合に読み/書きせよ」と命令を送る形になっていた。

 これに対してIDEでは、当初からCHS(Cylinder/Head/Sector)というパラメータを送る仕組みや、明示的にRead/Writeのコマンド、さらに転送速度などがバスプロトコルに組み込まれた。IDEの配線は下表のとおり。

IDEの配線

 40本の配線をフラットケーブルで接続するという形になっている。うちPin 20は逆挿し防止のキーになっており、冒頭の画像でもここだけピンがないのがわかる。データ幅は16bitで、当初のサイクルタイムは600ナノ秒ほど。つまり3.3MB/秒であった。これはのちにPIO Model 0と定義される。

 ちなみに上の表は、当初Connerが策定したIDEの仕様そのものではなく、続くATA-1として標準化される予定のモノである。なにが違うか? というと、当初の仕様にはDMA転送が含まれていない。DMA REQUESTやDMA ACKNOWLEDGEの信号は、後で追加されたものである(HOST 16 BIT I/Oも怪しいが、これが当初の仕様にあったかどうかは確認できなかった)。

IDEの仕様をCOMPAQが開示 普及を促進するも、独自に拡張するものが出てくる

 IDEはまずCOMPAQのマシンに搭載されることになったわけだが、COMPAQはConnerだけからHDDを調達したわけではなく、ほかのHDDメーカーからも同じ仕様のHDDを調達している。これにともないIDEの仕様がCOMPAQからHDDメーカーに開示されることになった。

 この結果として他のメーカーもIDEのHDDを手掛けるようになるわけだが、そうなると独自拡張を施すものが出てくる。HOST 16 BIT I/Oが怪しいというのはまさにこのあたりである。IDEは基本16bitでの転送で、これはIDEのコントローラーが16bit幅のISAカードなので、これに合わせているわけだ。

 ただISAには8bitのXT互換動作モードもある。実際8bit幅のIDEコントローラーカードも実在している。ただこうなると、16bitでデータを受け取ってしまうとコントローラーカード側でこれを2回の8bit転送に分割する(逆に書き込みの際は2回の8bit転送をまとめて16bit幅にしてHDDに送り出す)必要がある。

 これは面倒なので、8bitのIDEコントローラーを使う場合は、HDDからの転送も8bitに制限することで帯域を合わせようという仕組みで使われるのがHOST 16 BIT I/Oという信号である。この信号がない場合、HDDとのやりとりはDD0~DD7までの8bit幅で行なわれ、DD8~DD15は未使用になる。

 確かCOMPAQのIDEコントローラーカードは全部16bit ISAだった記憶があるので、この機能を持ち込んだのはCOMPAQ以外ではいかと筆者は疑っている。DMAもそうで、これを利用するとコントローラーカードはISAバスに対してDMA転送でデータの送受信を行なう。このため、600ナノ秒よりもっと短い時間で転送が可能であり、HDDの転送速度をもっと引き上げることが可能になった。

 ただこれも確かCOMPAQの当初のコントローラーカードにはなかった機能である。結果、多くのメーカーがIDEを独自拡張した製品(コントローラーカードとHDDの両方)を出すようになり、混乱し始めた。そこでANSIでこのIDEの標準化をしようという機運が高まる。

 最終的にこれはANSIで1994年にX3.221-1994として標準化が完了した。先の表は、このX3.221-1994のドラフトから持ってきたものである。X3.221-1994では規格の名前をAT Attachment for Disk Drives、通称ATAと定めた(ATA-1ではない)。

 ただし、続く1996年にはANSI X3.279-1996がAT Attachment Interface with Extensions(ATA-2)としており、1997年にはANSI X3.298-1997がAT Attachment-3 Interface(ATA-3)、1998年にはAT Attachment with Packet Interface Extension(ATA/ATAPI-4)と毎年のように新仕様が登場しており、こうした流れから最初のものはATA-1と呼ばれることも多い。

 このATAシリーズ、最終的には2009年にANSIの諮問機関であるINCITS(International Committee for Information Technology Standards:情報技術規格国際委員会)からINCITS 452-2009としてATA8-ACS(ATAPI Command Set)がリリースされている。ただ世間的にはその前の2005年に出たATA/ATAPI-7でATA/ATAPIの利用はほぼ終わりになっており、この後はSerial ATAへの移行が進んでいる。

 実際製品という観点でも、一部のメーカー(主にMaxtor)くらいしかATA-7を採用したメーカーはく、ほとんどのメーカーは2002年に出たANSI INCITS 361-2002で策定されたATA-6への対応を最後に、SATAへの移行をスタートしている(ATA-8で策定された167MB/秒の転送モードは、コンパクトフラッシュでのみ採用された)。

 ただこのATA-X(X:1~8)と言う呼び方はあまり一般的ではなく、EIDE(Enhanced IDE)と呼ぶ方が一般的だった。これは正式名称ではないのだが、こちらの方が通りが良い。ただATA-4以降になると、実際に速度がどの程度かわかりにくくなってきた。それもあってATA-4をUltraATA 33、ATA-5をUltraATA 66、以下UltraATA 100/133などと呼ぶのが一般的になっていた。

初期のHDD最大容量は504MB 現在は128PBにまで増大

 一連のATA/ATAPIの仕様をまとめたのが下表である。ここで"○"は対応している転送モードを示す。例えばATA-3ならPIO Mode 0~Mode 4とMulti-Mode DMA Mode 0~2に対応しているが、Single Mode DMAには未対応というわけだ。

ATA/ATAPIの仕様

 表にあるLBAとは、Logical Block Numberのことである。当初のIDEは先にも触れたCHSというパラメーターでHDD上の位置を指定していた。これはC(シリンダ番号:プラッター上の円周の位置)、H(ヘッド番号:どのヘッドを使うか)、S(セクタ番号:円周上の位置)を指定してアクセス箇所を定めるという方式であるが、HDDとPCのBIOS側でCHSとして扱える範囲がなぜか異なっており以下のようになっていた。

 この関係で、Cは0~1023、Hは0~15、Sは1~63となり、1セクター512Bytesでは最大504MB(1024×16×63×512Bytes=528,482,304Bytes=504MB)に限られてしまう、という意味不明な制約があった。

 要するに504MBを超えるHDDはその容量を使いきれなくなってしまうわけだ。これを回避するため、CHS Translation(1024を超えるシリンダー数について、それをヘッドが増えたように見せかけることで回避する)が考案され、最大8.4GBまでのHDDが利用できるようになったが、これも一時的な対策でしかなかった。

 また、初期のHDDはプラッター上の最外周と最内周が持つセクターの数は一致していたが、記録密度が向上してくると最外周には多くのセクターが格納できるようになり、内周になるほどセクター数が減るという不均一な構成になり、そもそもCHSのモデルが崩壊している。

 そこでCHSの方式をやめ、一番上のプラッター(ヘッド番号0)の最外周の先頭セクターを0とし、そこからセクターごとにアドレスを振っていくというLBAで管理する仕組みがATAで導入された。ATAでは22bit、つまり最大419万4304個のセクターを管理可能で、この際のHDDの最大容量は2GBに過ぎなかったが、ATA-2でこれは28bit、つまり128GBに拡張。ATA-6では48bit、128PBの容量を可能にしており、今のところまだこれで不足するという話は出ていない。

 表にあるPIOはPort I/Oの意味だ。CPUからI/O命令を利用して、2Byte(16bit)単位で読み取っていく方法。当然ながらCPUの負荷は大きく、性能も出ない。

 Single word DMAは、コントローラーから直接DMAを利用してデータの読み書きを行なうので、CPUの負荷が大幅に減り、転送速度も上る方法だ。ただしDMA転送はたったの1word(2Bytes)単位なので、DMA転送のオーバーヘッドそのものがバカにならず、性能も上りにくい。これもあってATA-3では廃止されてしまった。

 Multi word DMAは名前の通り、複数wordのDMA転送をまとめて行なう方式であり、これによりDMAのオーバーヘッドが大幅に削減された。

 Ultra DMAは、コントローラーとホストの間の転送方式そのものはMulti word DMAと同じで、異なるのはコントローラーとHDDの間の転送方式である。IDEの配線表でHost I/O Write/Read(Pin 23/25)は本来はPIO mode用の信号だが、Ultra DMAではここにDMA readyおよびData Strobeという信号を割り当て、このData Strobeを利用してコントローラーとHDDでのバースト転送を行なった。結果、転送速度をMulti-mode DMAの場合の2倍に引き上げることに成功している。

 ちなみに1998年からはATAに加えてATAPI(AT Attachment with Packet Interface Extension)も追加されている。これはATAのI/FにHDD以外のドライブを接続するためのものである。CD-ROMが一番代表的であるが、ほかにもMOドライブやZipドライブなどもATAPI対応の製品が投入された。

 ATAPIは名前のとおり、ATAのI/Fを経由して任意のデータパケットを通す拡張機能であり、極端なことを言うとSCSIデバイスにSCSI/ATAPIのブリッジをつないで、IDEの上にSCSIプロトコルを流して接続できる。初期には本当にそういうデバイスが存在した。

 あと2000年にリリースされたATA-5の世代、転送モードで言えばUltraDMA Mode 3以上に関しては、従来の40pinのフラットケーブルに代わり、80pinのフラットケーブルが用いられるようになった。といっても信号ピンそのものは40pinのままである。

 ではなぜ80pinのケーブルが利用されているか? 下図の左側が、従来の40pinケーブルで、コネクターのピンとフラットケーブルの配線が一対一対応になっている。対して80pinの方は右図のように、80本の配線のうち半分はそのままコネクターにつながるが、残りの40本はまとめてGNDに接続されるようになっている(実際にはコネクターのPin 2やPin 40などにつながっている模様)。

40pinケーブルと80pinケーブル

 なぜこんなことになったかと言うと、信号速度が速くなりすぎて、配線同士での干渉が無視できないレベルになってきたので、信号線の間にGND線を挟み込んで、ここで干渉の影響を緩和しようというわけだ。この80pinケーブルで、一応ATA-7のUltraATA Mode 6(133MB/秒)まで利用可能になった。

Serial ATAが標準化 次第にSATAに移行していく

 以上のように1990年台から2000年台前半にかけては圧倒的な普及ぶりを誇ったEIDEであるが、2000年にSerial ATAの最初の標準化が完了した。2002年頃からSerial ATAに対応した製品の市場投入が始まり、2005年頃にはもうSerial ATAが主流になった。理由はいくつかある。

 ①フラットケーブルの幅は50mmほどあり、取り回しにけっこう苦労する。しかも全長は仕様上46cmに限られ、大きなケースでは届かないこともしばしばある。これを超えるケーブルも市販され、またフラットケーブルではなく間をほぐして丸くした(スマートケーブルなんて商品名で販売されていた)ものも存在したが、取り回しはそう楽にならなかった。おまけに仕様を外れているので、動く時もあれば動かない時もあった。

 ②1本のケーブルに最大2台までしかHDDやATAPI機器を接続できず、拡張性に乏しかった。このあたりはもっと台数をつなげるSCSIの方が柔軟性が高かった。

 ③データの通信方式が、リファレンスクロックに合わせる同期式ではなく、Strobe信号などを利用してハンドシェイクする非同期式で、これ以上の高速化が困難だった。

 ④コネクターが大きいため、小型化には適さなかった。2.5インチHDD用に44pin化したうえでコネクターの寸法を小さくしたものもATA-3で追加されたが、それでもまだ大きかった。

 ⑤2台のHDDのマスター/スレーブの設定はジャンパーピン(40pinコネクターと電源コネクターの間にある8本のpinにジャンパーピンを装着する)で設定する必要があり、Plug & Playからほど遠い状況だった。もちろんHot Plug&Unplugなどには未対応だった。

(最初の画像にある)SeagateのHDDに貼られているジャンパー設定。このSeagateはスレーブとして使っていたので全ジャンパーを抜いている

 2005年頃には、EIDE HDDをSATA I/Fに接続するためのアダプターなども販売されており、2010年台に入るともうほとんどEIDEに対応したHDDは見かけなくなった。

SATA/PATAアダプター。上の40pinコネクターをPATA HDDに挿し、下のSATAコネクターでPCと接続するもの。なんでこんなのがまだ取ってあるんだ?

 ちなみに2000年台中頃からは、Serial ATA/SATAとの対比でParallel ATAあるいはPATAと呼ぶことも増えてきた。理由の1つにはチップセット側の対応もあるだろう。インテルで言えば、連載37回で示したIntel 965~45世代のロードマップを見るとわかるが、2007年のGM965にはまだPATAが残っているが、2008年のGM45ではPATAが消えてSATAのみになっている。

 これに先んじてHDDはSerial ATAに移行しており、このGM965世代でのPATAの主な用途はCD-ROM/DVD-ROMなどの光学ドライブ向けとなっていた。IDE/EIDEは技術の発展に追従できずに消えていった、というべきなのだろう。

この記事に関連するニュース

トピックスRSS

ランキング

記事ミッション中・・・

10秒滞在

記事にリアクションする

記事ミッション中・・・

10秒滞在

記事にリアクションする

デイリー: 参加する
ウィークリー: 参加する
マンスリー: 参加する
10秒滞在

記事にリアクションする

次の記事を探す

エラーが発生しました

ページを再読み込みして
ください