週刊アスキー

  • Facebookアイコン
  • Twitterアイコン
  • RSSフィード

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

2024年04月29日 12時00分更新

初期の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として扱える範囲がなぜか異なっており以下のようになっていた。

CHSとして扱える範囲
  HDD側 BIOS側
C 0-65535 0-1023
H 0-15 0-254
S 1-255 1-63

 この関係で、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/秒)まで利用可能になった。

この記事をシェアしよう

週刊アスキーの最新情報を購読しよう

この連載の記事