「容量の壁」の版間の差分

削除された内容 追加された内容
m セクションリンク変更
Hadsn (会話 | 投稿記録)
→‎504MiB (約528MB) の壁: AT互換機固有の問題であることを明確に表現
17行目:
<!--(2016.08.13 HDI) Ver3.3Dとあったが、3.3Dは5.0よりも後から出た製品。NECや富士通の場合、遅くともVer3.1でSCSIに対応した時期から128MiBまでOKとなっている。-->
 
=== 504MiB(504MiB (528MB)528MB) の壁 ===
{| class="wikitable" style="float:right; margin-left:1em; font-size:small;"
|+'''IDE HDDのパラメータの制約'''
46行目:
|}
 
[[Advanced Technology Attachment|ATA]]規格では、[[1993年]]ごろ問題になったのが約528[[メガバイト|MB]](504[[メビバイト|MiB]]、512×1024×16×63 = 528,482,304バイト)の壁だった。これはIDE HDDとPC/AT互換機のBIOS ([[:en:INT 13h]]) の組み合わせにより生じる問題である。
* HDDにアクセスする最小単位であるセクタを指定する (アドレッシング) には、シリンダ、ヘッダ、セクタをそれぞれ指定する必要があるが、った。この各要素の最大値がHDDとBIOSで異なっている。おり、これが原因で、それぞれの数値をより小さい一方にあわせる必要があり、HDDはC=65,536、H=16、S=255に対し、BIOSはC=1,024、H=255、S=63であり、実際に扱えたのはC=1,024、H=16、S=63(163 (1,032,192セクタ、LBAでは20bit相当) で、それが壁となった。HDD側及びBIOS側だけを見ればもっと大きな容量のアドレッシングが可能で、理論上の最大値はHDD側が128[[ギビバイト|GiB]]、BIOS側が7.875GiB (約8.4GB) だった。
 
=== 2GiB/4GiBの壁 ===
69行目:
EIDE HDDやSCSI HDDでは、7.875GiB(約8.456GB、512×1024×256×63 = 8,455,716,864バイト、16,515,072セクタ、LBAでは24bit相当)を超える容量が認識されないという問題があった。これは「'''8GBの壁'''」といわれ、1998年頃までに発売されたPCではこの問題があり、[[Pentium II]]搭載以前のものに多い。
 
ただし、これはPCのBIOSのパラメータに起因する問題であり、HDD側にはやはりそのような壁はない。この8GBの壁は、BIOSのAPIレベルで[[Logical Block Addressing|LBA]](28 (28ビット)を導入) に対応した拡張INT 13H Extension13hによって、BIOS側で認識できる最大容量は127GiB(128GiB (137GB)137GB) に引き上げられた。これは、拡張INT 13H Extension13h自身がサポートするLBAは64bitで<ref>{{PDFlink|[http://t13.org/Documents/UploadedDocuments/project/d1386r5-EDD.pdf BIOS Enhanced Disk Drive Services (EDD)]}}</ref>、当時のATA HDD規格でサポートするLBAが28bitだったためである。
 
BIOS側がCHSでアクセスしてきた場合に、7.875GiBを超えるEIDE HDDは7.875GiBのジオメトリを返答するようになっており、[[Cylinder head sector]]=1023/255/63と返す(ただし、ごく一部のHDDでは返さないことがあった)。BIOSから正常にアクセスできるのは、HDDの先頭から7.875GiBまでの領域のみだが、これにより、LBA非対応のBIOSのマシンに接続しても、とりあえず認識され使用できるようにはなっている。その為、BIOSに依存せずにデバイスドライバが直接コントロールするOS(Windows 2000/XPやLinuxなど)では、OSが起動してデバイスドライバのコントロールに切り替わった後は7.875GiBを越える領域にも正常にアクセス可能である。デバイスドライバが直接コントロールするようになるまではBIOSを介してアクセスする為、当該HDDにOSを格納する場合には、BIOSにロードさせる範囲を先頭から7.875GiBまでの領域に収める必要がある。OSとデバイスドライバさえ対応していれば、48bit LBAのHDDも同様にして使用可能である。
82行目:
もう一つの要因としては、AWARD BIOS Version 4.5xのバグがある。当該BIOSにおける[[Logical Block Addressing|LBA]]の実装バグにより、BIOSからは26bit分のLBAしか扱えず、「32GBの壁」と呼ばれていた。約32GiB(65,536×16×63×512 = 33,822,867,456バイト)を超えるHDDを接続するとマシンが起動しなくなる。これを解決するには、修正されたBIOSを入手して、BIOSをアップデートする必要がある。HDDによっては、ジャンパピンの設定により約32GiBのHDDとして認識させることが可能な製品も存在する。なお、ATAカード経由でHDDを接続すればこの問題は回避できる。
 
=== 127GiB128GiB (約137GB) の壁 ===
ATA HDDでは[[Logical Block Addressing|LBA]]導入後、しばらくはLBAのアドレス長が28ビットだったが、ATA/ATAPI-6で48bit LBAに拡張された。Maxtor(Maxtor (当時) がBigDriveと名付け、理論上は128[[ペビバイト|PiB]](約144PB)までのアドレッシングが可能となった。
 
48bit LBAに未対応の機器および[[オペレーティングシステム|OS]]で、127GiB(128GiB (137GB)137GB) の壁として問題が起きた。おおよそ2002年以前に発売されたPCでこの壁がある。
 
=== 2TiB(約2.2TB)の壁 ===