Advanced Technology Attachment

出典: フリー百科事典『ウィキペディア(Wikipedia)』

EIDE から転送)

Advanced Technology Attachment(アドバンスド テクノロジー アタッチメント、略号: ATA)は、パーソナルコンピュータと、ハードディスク間のインターフェースのひとつである。1989年に制定され、1990年代に主流となっていた。

目次

[編集] 歴史

本節での容量の単位は、1024を基準としているので、1000を基準としている市販のHDDの表記と異なることに注意。

[編集] IDE

PC/ATのハードディスクインターフェイスは、当初ST-506、次いでST-506を高速化したESDISCSI等が使用されていたが、次第にST-506をインテリジェント化した1986年コンパック社とコナー・ペリフェラル社が開発したIDE(Integrated Drive Electronics)が大勢を占めるようになった。

その後、各社独自の拡張が行われ、互換性に問題が出てきたため、1989年に各HDDメーカが共通仕様であるATA(AT Attachment interface)を制定し、1994年ANSIでATA-1として規格化された。

IDE HDDのパラメータの制約
HDD側 BIOS側 小さい方
シリンダ番号(C) 0~65535 0~1023 0~1023
ヘッド番号(H) 0~15 0~255 0~15
セクタ番号(S) 1~255 1~63 1~63
最大容量 128GB 7.8GB 504MB

IDE HDDには、504Mバイト(512×1024×16×63 = 528,482,304バイト)を超える容量が認識されないという問題があった。 これは「504MBの壁」といわれ、1993年頃までに発売されたPCではこの問題がある。HDD側のパラメータとPC/ATのBIOS(INT 13H API)のパラメータのミスマッチに起因する。

ただし、504MBの壁は、あくまでIDE HDDとPCのBIOSの組み合わせにより生じる問題であり、HDD側ではもっと大きな容量(理論上の最大値は128GB)のアドレッシングが可能である。 すなわち、一般には、504MBを境にEIDE HDDとIDE HDDが分かれるように思われているが、実はHDD側にはそのような区別はない。

[編集] EIDE

EIDE (Enhanced IDE) とは、一般にIDE HDDの504MBの壁を超えるための規格として認識されているが、実際は以下のようなさまざまな拡張規格の総称である。 Western Digitalが提唱した。

  • 504MBの壁を超えるための拡張
    • LBA (Logical Block Addressing) の導入
    • CHSトランスレーション(いわゆるLARGEモード)の導入
  • ATAPIによるCD-ROMやリムーバブルディスクのサポート
  • 転送モードの追加による高速化
  • プライマリ/セカンダリポートの標準化による最大4台のデバイスのサポート

504MBの壁は、BIOSのCHSをIDEのCHSに直結させていることが原因なので、途中でうまく変換してやることにより回避できる。 その手段として、LBAとCHSトランスレーションが導入された。

  • LBAは、BIOSからHDDに対するアドレッシングをCHSでなく単一の連番で行う(HDDが対応している必要がある)。
  • CHSトランスレーションは、BIOS内部でCHSの変換(たとえばHを2で割るかわりにCを2倍するなど)を行い、CHSの範囲を有効活用する(HDD側で対応することはない)。

なお、LBAはHDD側でCHSレジスタを読み替えることで実現されており、アドレッシング可能な範囲はほとんど変わっていない(28ビット)。 すなわち、HDD側では、LBAに対応することでとくに容量上限を増やせるわけではない(厳密には、若干増える)。

EIDE HDDでは(SCSI HDDでも)、約7.8GB(512×1024×256×63 = 8,455,716,864バイト、1024シリンダ)を超える容量が認識されないという問題があった。これは「8GBの壁」といわれ、1998年頃までに発売されたPC(Pentium II搭載以前のものに多い)ではこの問題がある。 ただし、これは上記の表に示したようにPCのBIOSのパラメータに起因する問題であり、HDD側にはやはりそのような壁はない。 この8GBの壁は、BIOSのAPIレベルでLBA(28ビット)を導入したINT 13H Extensionによって、BIOS側で認識できる最大容量は128GBに引き上げられた。

注)BIOS側がCHSでアクセスしてきた場合に、8GBを超えるEIDE HDDは約7.8GBのジオメトリを返答するようになっている。 これにより、LBA非対応のBIOSのマシンに接続しても、とりあえず認識され使用出来るようにはなっている。(しかし、BIOSから正常にアクセスできるのは、HDDの先頭から約7.8GBまでの領域のみである。) そのため、BIOSに依存せずにデバイスドライバが直接コントロールするOS(Windows 2000/XPやLinuxなど)では、OSが起動してデバイスドライバのコントロールに切り替わった後は約7.8GBを越える領域にも正常にアクセス可能である。(デバイスドライバが直接コントロールするようになるまではBIOSを介してアクセスするため、当該するHDDにOSを格納する場合には、先頭から約7.8GBまでの領域に収める必要がある) OSとデバイスドライバさえ対応していれば、48bit LBAのHDDも同様にして使用可能である。
注)AWARD BIOS Version 4.5xには、LBAの実装バグにより、BIOSからは26bit分のLBAしか扱えず、「"32GBの壁"」と呼ばれていた。(約32GBを超えるHDDを接続するとマシンが起動しなくなる。) 修正されたBIOSを入手して、BIOSをアップデートする必要がある。

[編集] ATAPI

ATA Packet Interfaceの略で、アタピーと読む。 HDDなどの非ATAPIのATAデバイスでの通信のデータに相当する部分にSCSIと同等のパケット形式のコマンドを発行することにより、ATAコマンドより多くのコマンド種が必要なCD-ROMのようなHDD以外のデバイスの接続を可能とした規格。 一般には、CD-ROM等をサポートしたIDEとして認識されている。 当初SFF-8020という規格だったが、ATA/ATAPI-4でATA規格に統合された。

[編集] 48bit LBA(BigDrive)

従来の28ビットLBAを48ビットに拡張し、128ペビバイト(140,737,488,355,328KiB)までの容量を扱えるようにした規格。ATA/ATAPI-6で採用された。BigDriveはMaxtor(当時)が発表したATAの拡張規格につけた名前で、ATA規格では48bitLBAと呼ばれる。

リセット直後はHDDは従来モード(24bitLBA)で動作し、ホストよりコマンドで48bitLBAモードに切り替える。切り替えた後はアドレスレジスタの意味が変わり2度書き込むことで1つのアドレスと解釈されるようになる。

この規格に対応したHDDを未対応(28ビットLBA)の機器およびOSに接続すると、切り替えが発生しないため128GiBのドライブとして動作する(127GiBの壁、おおよそ2002年以前に発売されたPCでこの壁がある)。

規格上、従来の28bitLBAのパラレルATAコントローラでも48BitLBAは使えるように考慮されているため、動作するOS並びにデバイスドライバが対応していれば、全領域利用可能である。ただし、ブートデバイスとして利用する場合にはBIOS側が対応する必要があり、非対応の場合はブートストラップローダに加工するか、起動に必要なシステム/データがBIOSが管理できる領域に入っている必要がある。

ATAインターフェイスとしては128ペビバイトの管理が可能になったが、PC/AT互換機、Windows機で多く使われているMBR方式のパーティションテーブルは、仕様上2TiBまでの管理になっているため、ソフトウェア的には別の容量の壁が存在することになる。この2TiBの壁を超える規格としてGUIDパーティションテーブル(GPT方式)が存在するが、利用については、OS側での対応も必要となる。Windows VistaはGUIDパーティションテーブルに対応済みである。


[編集] 規格のあゆみ

ATA/ATAPIの規格概要を以下に示す。

[編集] パラレルATA

マザーボード上にあるパラレルATAの接続端子(下側)

パラレルATAでは、ケーブル1本あたり、最大2台の機器が接続可能(マスタ/スレーブ接続)である。マスタ側の機器がリセット時などでスレーブ側の機器を制御するタイミングがあるが、基本的にはホストから独立して制御できる。

[編集] ケーブル

パラレルATAは通常40芯、Ultra DMA 66 (UDMA4) 以降は80芯40pinコネクターのリボンケーブル(フラットケーブル)を用いて接続し、ケーブル長は最大18インチ (45.7cm) と規定されている。

上:40芯パラレルATAケーブル
下:80芯パラレルATAケーブル

80芯ケーブルには、ケーブルへの接続位置でマスター/スレーブを設定するケーブルセレクトという機能が実装されている(40芯ケーブルではオプション扱い)。 ケーブルセレクト対応の40芯ケーブルは、途中で線が切断されているので容易に見分けることが可能である。 また、40芯ケーブルの場合、ケーブル端がスレーブだが、80芯ケーブルの場合、逆にマスターとなるので機器接続の際には注意が必要である。

80芯ケーブルは、信号線とグラウンド線を交互に配置し、ケーブルの伝送特性を改良したものである。配線や気流の改善を目的として使われるスマートケーブルは多芯(丸)ケーブルを使うためこの80芯フラットケーブルの特性を保持できないことがあり障害の原因になることがある。 使われるコネクタには、GND信号が偶数ピン、奇数ピンに割り当てられる二つの仕様があり、それぞれコネクタに刻印されているODD GND、EVEN GNDの文字列で区別することが出来る。 多くの市販ケーブルや、組み込まれているコネクタはODD GNDの物である。

コネクタには色分けがあり、デバイス側から見た場合、下記の違いがある。

  • 黒(マスター):全ピンある。
  • 青(ホスト):ATA66以上のケーブルとの識別の為、34Pinが存在しない。
  • 灰(スレーブ):ケーブルセレクトの為、28Pinが存在しない。

なお、20Pinは逆差し防止の為のピンであり、埋められていたり、接点が無いこともある。 組み込みの物などでは、全ピン結線の黒コネクタや青コネクタを用い、適宜ピンを抜いて実装している製品もある。

[編集] 転送モード

パラレルATAはその長い歴史に応じた様々な転送モードが存在する。

[編集] PIO転送モード

PIO モード一覧
モード 最大転送速度
(MB/s)
制定された
規格
Mode 0 3.3 ATA
Mode 1 5.2 ATA
Mode 2 8.3 ATA
Mode 3 11.1 ATA-2
Mode 4 16.7 ATA-2

PIO (Programmed Input / Output) 転送モードは、CPUが直接IDEコントローラI/Oポートを経由してデータの送受信を行う。

5種類のモードが存在するが、基準となるクロック周波数が異なるだけである。 全てのATA機器は機器転送速度、転送モードのネゴシエートの為、PIO Mode 0をサポートする。

今日でも、速度を必要としない機器はこのモードのみをサポートする。

[編集] Singleword DMA転送モード

Singleword DMAモード一覧
モード 最大転送速度
(MB/s)
制定された
規格
Mode 0 2.1 ATA
Mode 1 4.2 ATA
Mode 2 8.3 ATA

Singleword DMAモードは、The PC 本体に搭載されている8bitのDMA転送が可能なDMAコントローラを用いて転送を行うことを想定したモードである。これはATA/ATAPI-3規格において廃止されている。

[編集] Multiword DMA転送モード

Multiword DMAモード一覧
モード 最大転送速度
(MB/s)
制定された
規格
Mode 0 4.16 ATA
Mode 1 13.3 ATA-2
Mode 2 16.6 ATA-2

Multiword DMAモードは、PC/ATで拡張された16bitのDMA転送が可能なDMACを用いて転送を行うことを想定したモードである。Ultra DMA規格化後はあまり使用されていない。

[編集] Ultra DMA転送モード

UDMA モード一覧
モード 最大転送速度
(MB/s)
制定された
規格
UDMA 0 16.7 ATA-4
UDMA 1 25.0 ATA-4
UDMA 2 33.3 ATA-4
UDMA 3 44.4 ATA-5
UDMA 4 66.6 ATA-5
UDMA 5 100.0 ATA-6
UDMA 6 133.3 ATA-7

Ultra DMA転送モードは、ATA/ATAPI-4以降で追加されたチップセットやUIDEコントローラカードに搭載された、専用の高速なDMACを使用して転送を行うモード。転送時のデータにCRCを付加し、信頼性を向上させている。

UDMA 6において、32bit 33MhzのPCIと同じ、最大133Mbytes/secでの転送が可能となっているが、これは、あくまでもバスの転送帯域である。HDDに搭載されているキャッシュメモリからのデータを転送する時にのみ、額面通りの性能が発揮できるが、ほとんどの場合はハードディスクの読み出し速度がついていかない。

また、SCSIでは普通に用いられている、コマンド投入からデータ転送開始までの間、バスの開放を行い、バスの使用効率を上げる仕組み (Disconnect / Reconnect) は、ATA / ATAPI-6以降で規格化されているものの、実装されている機器はほとんど存在しないため、複数デバイスがある場合のスループットは数値から期待されるほどは高くないのが普通。

[編集] シリアルATA

詳細は「シリアルATA」を参照

[編集] 関連項目

[編集] 外部リンク

ウィキメディア・コモンズ

[編集] パラレルATA

[編集] シリアルATA