ちょっと寄り道(CHS編)

良い機会なので、ハードディスクの容量制限の要因を、改めて整理してみる。
基本的には、ハードディスクのブロック指定方式に由来しているわけですね。

当初、CHS方式で指定していたわけですけど、これには、更に、2つの仕様があって、
一つは、ATA規格の、C=16bit, H=4bit, S=8bit = MAX 137GB
もう一つは、BIOS形式の、C=10bit, H=8bit, S=6bit = MAX 8.4GB
結局、BIOSを使用して、ATA規格のドライブにアクセスする場合、両者の小さい方の制限が適用されて、
C=10bit, H=4bit, S=6bit = MAX 528MB(単純に1000で割った数字)
う〜む。


次に、BIOS側で、CHS指定からLBA指定に変換する方法を導入し、BIOS側の最大値である、MAX 8.4GBに。


更に、本来のBIOSサービスを根本的?に見直して、BIOSパラメータを構造体にした、
拡張 INT 13h によって、ブロック指定パラメータが64bit長となった。
これにより、BIOS側では、理論的に9Z以上の容量を扱えるようになった。
ところが、ATA規格のLBA指定の方は、最大28bit長であり、結局、MAX 137GBに制限される。


そして、ATA規格の方も、LBA指定のデータ長を28bitから48bitに拡張し、
これで、理論的には、MAX 144Pまでの容量を実現可能となる。
何故、微妙に中途半端なbit長なのかは分からないけれど、とりあえず、これで、今のところは十分そうだ。