Top / HDD / term / 容量の壁

容量の壁

ATA 規格の歴史は他の規格と比べても長い方なのですが、当初からあまり先見性の有る仕様ではありません。特に HDD 容量の増大に伴う仕様は、市場で問題が生じる一歩手前で急に規格されることが多く、状況を混乱させる原因でもあります。

HDD メーカーがイニシアチブを取って長期に渡った規格を考案すれば良かったのですが、従来の機器の互換性や BIOS のバグor仕様等の問題が山積し、ナァナァでココまで来てしまった感があります。

今後は徐々に ATA から SATA へ置き換わるにつれ下記の問題は生じないと考えられます。問題点の根本は SATA も ATA と変わりありませんが、既に SATA が出荷されている状況では下記の問題は解消済みであることに拠ります。

(1) 528 MB の壁 (ATA、BIOSの仕様制限による→EIDE*1仕様制定へ)

従来、ハードディスクは CHS (Cylinder, Head, Sector の意味) を指定して読み書きを行います。通常、ハードディスクに読み書きを行う場合には必ず BIOS を経由しなければなりません。ここで HDD、BIOS との仕様の違いで制限が生まれました。互いの最小値を選択すると 1024x16x63x512(Byte/Sector) = 約528MB (528,482,304 bytes) が制限になります。

シリンダ*2ヘッド*3セクタ*4容量の壁
BIOSの壁1024*5255*663*7約8.4GB*8
HDDの壁65536*916*10256*11約137GB*12
BIOSとHDDの最小値10241663約528MB*13

この制限を解消するため、ATA の仕様を拡張しました。CHS から LBA (Linerar Block Addressing) 方式に変更することにより ATA の仕様上では 2.2TB *14 まで指定できるようになりました。LBA 方式とは ATA に予め全てのセクタ数の合計を保存しておき、そのセクター数より CHS に当てはまるよう BIOS が逆算する方法です。

余談ですが古い PC には BIOS の選択肢に「LARGE」と言うのがあります。これはハードディスクの CHS を BIOS の仕様に合わせた CHS に変換した値になります。LARGE の変換方式は BIOS 各社によって異なりますので互換性はないです。注意しましょう。通常は LBA を選択した方が良いようです。こちらは変換方式が固定しています。

(2) 4GB の壁 (BIOS仕様制限による → 拡張BIOS*15対応へ)

BIOSの仕様により LBA 方式を用いたとしても 8.4GB までが限界点となります。そこで phoenix 社より BIOS 自体を拡張することにより解決する方式が考えられました。今まで BIOS 経由で動作していたアプリケーションは、この拡張 BIOS(INT 13 Extensions) を使用することにより LBA 方式の限界である 2.2TB までアクセス出来るようになります。

拡張 BIOS(INT 13 Extensions) の仕様書は BIOS メーカーの一つである Phoenix Technologies 社より入手出来ます。見つからない場合、また URL が変更された可能性が高いです。Enhanced Disk Drive Specification という名称ですので検索して見つけてください。

(3) 137 GB の壁(ATA 仕様→48bit LBA*16 拡張へ)

ATA の仕様 (内部register) による限界点となります。この問題を解決するために、従来の 28bit LBA から拡張した 48bit LBA へ拡張する仕様を組み込みました。これにより 144PB(ペタバイト)まで扱えるようになります。Identify? も拡張されています。

(4) その他の壁

2.1GB の壁 (OS制限→強制up2005-06-02)

FAT16 の制限。FAT32 を使用することで 2TB まで使用可能になります。FAT32 は Windows 95 OSR2 よりサポートしています。Windows NT でも似たような制限有。この場合、Service Pack を当てることにより解決できる、場合もある。

33.8GB の壁 (BIOSバグ?)

BIOS の変換アルゴリズムのバグで引き起こってしまうらしい(未確認)。きっと update でサポートしてくれる、はず。


用語


*1 Enhanced IDE
*2 C:Cylinder
*3 H:Head
*4 S:Sector
*5 1024=2^10
*6 255=2^8-1
*7 63=2^6-1
*8 8,422,686,720(=1024x255x63x512) byte
*9 65536=2^16
*10 16=2^4
*11 256=2^8
*12 137,438,953,472(=65536x16x256x512) byte
*13 528,482,304(=1024x16x63x512) byte
*14 2^28
*15 INT 13 Extensions
*16 Maxtor は Big Drive と呼称していた

Last-modified: 2005.06.02 (木) 04:50:05 (5129d)