FILE 01

34GBのIDE HDDが
認識できない?


[Q]最近、安くなった大容量IDE HDDを増設しようとしたのですが、店頭でマザーボードによっては34GB以上のIDE HDDを認識できないかもしれないと言われました。原因と対処法を教えてください。

(小野久司さん)
[A]

  質問にあったのは34GBという大容量の場合の制限ですが、IDE HDDに関しては、これまでにも似たような容量制限のトラブルが数多くありました。
  これらにはそれぞれ個別の原因がありますが、その根幹には、あまりにも短期間にHDDの容量が増大し、多くのソフトウェアがそれに追い付いていけなかった、ということがあるようです。

 

●IDE HDDへの二通りのアクセス方法

 

図1:クラスタを指定する CHS方式とLBA方式

 HDD内部の構造は、図1のように円盤(プラッタ)が数枚重なっており、それぞれ表裏の両面にデータを書き込めるようになっています。
  データを記録する際には、「セクタ」と呼ばれる512byteのブロックを基本単位とします。PCはHDD上のデータにアクセスする場合、セクタに付けられた「番号」を指定するのですが、ここで問題になるのが、その指定方法です。

 PCがIDE HDDをアクセスする場合には、ATA(AT Attachment)という規格に定められたコマンドでセクタを指定します。
  このATA規格には、セクタの指定方法として、「CHS」方式と「LBA」方式という、二通りの方法があり、どちらを使ってもよいことになっています。

 図1を使って説明いたしますと、

CHS方式は、
@シリンダ(Cylinder:HDD内のプラッタを同心円状に区分けした領域)=“C”、
Aヘッド(Head:1枚のプラッタの表裏を読み取るために付いた磁気装置)=“H”、
Bセクタ(Sector:シリンダ内を一定の円周角で区分けした領域)=“S”、
  それぞれに割り当てられた番号を使って、HDD内を物理的に指定したもので、実際にセクタを指定するには、C、H、Sの三つの値を指定する必要があります。

 これに対してLBA方式とは、Logical Block Addressの略で、これはHDDの物理構造に関係なく、すべてのセクタに連番を振って、その番号を一つだけ指定する(C)単純な指定方法です。
  図で言えば、C=0、H=0、S=1とLBA=0で指定される場所は、物理的に同じ場所になります。
  初期のIDEでは、CHS方式しかなかったのですが、後述する528MBを超えるHDDが登場した頃に、それが拡張されたEnhanced IDE規格に伴って、このLBA方式が使えるようになりました。

 CHSによる指定では、CHSそれぞれの値について、指定できる値に制限があります。
  Cは0〜65,535、Hは0〜15、Sは1〜255です。
  この制限のため、指定できるセクタの総数は、これらの掛け算、すなわち、65,536×16×255=267,386,880個というのが、現行のIDE規格で使える最大セクタ数となるわけです。
  一つのセクタは512byteですから、ディスク容量に直すとおよそ136.9GBです。

 LBAではどうなるかと言うと、LBAは0〜268,435,455、つまり268,435,456個と、CHS方式よりわずかながら多くのセクタが指定できるのですが、CHSとLBA、どちらでも指定できるようにするため、結局136.9GBに制限されてしまいます。

 

●528MBの壁

 

表1:INT13HとATAによる使用可能容量の壁
  INT13H ATA(IDE) 使用可能数
Cylinder 1,024 65,536 1,024
Head 255 16 16
Sector 63 255 63
最大容量 約8.4GB 約136.9GB   約528MB

 このようにATAの規格だけなら136.9GBまでは指定できるハズなのですが、PCでは、これにアクセスするソフトウェアの側にも制限があるため、実際認識されるサイズはもっと小さくなります。
  たとえばMS-DOSアプリケーションがディスクアクセスする際、OSがINT13HというBIOS呼び出しを行なうのですが、このINT13Hは、OSから送られてきたCHSの値をそのままIDE HDDに送ります。
  ところがINT13Hが受け取れるCHSの最大値は、C=1,024、H=255、S=63で、ATAの制限とは異なっているのです。

 INT13Hの制限だけならば、1,024×255×63×512で最大約8.4GBまでの容量が指定できるのですが、問題はINT13HのCHS制限とATAコマンドのCHS制限のズレの問題です。
  この二つの制限のため、INT13Hでディスクアクセスする場合には、CHSのそれぞれの値のうち、少ないほうの値が使われます。
  計算を表に示しますが、何とわずか528MBまでしか使えなくなってしまうのです(表1)。

 この問題を解決するのが、拡張INT13HEnhanced IDE規格です。
  前述したようにアプリケーションがディスクアクセスをする際、拡張INT13Hでは、OSからINT13Hに送られたCHSの値を内部で一旦LBAに変換します。
  さらにこれをATAコマンドとしてディスクに送り出す際に、LBAのままで送り出したり、あるいはATAの規格に収まるように新たにCHSを計算し直して送り出したりすることで、8.4GBまでのアクセスが可能になりました。

 

●2.1GBの壁

 

写真1:IBMのIDE HDD、DTTA-351010(10GB)のジャンパ設定。これにより容量2GBのHDDとして認識させることができる

 ただ、拡張INT13Hは、最初から8.4GBまで使えたわけではありません。
  INT13Hの限界である8.4GBに到達するまでは、さまざまな制限がありました。

 その中でももっとも有名な制限は2.1GBの壁です。これはC値が0〜4,095までしか扱えなかったという制限で、この場合、4,096×16×63×512=2,113,929,216byte、つまり約2.1GBまでしか扱うことができませんでした。

 HDDの容量が2.1GBを超えたばかりの頃は、多くのBIOSがこれに対応することができなかったため、2.1GB以上のHDDでは今でも2.1GB未満の容量しか使えなくする「2.1GBリミット」というジャンパが存在しています(写真1)。

 2GB近辺ということでは、MS-DOSやWindows 95で使われるFATファイルシステムの制限というものもよく知られています。
  IDE規格とは関係のない、純粋なOSの制限なので、SCSI HDDなどでもこの制限は発生します。

 

●8.4GBの壁

 拡張INT13Hでは、内部処理の変更により528MBの壁を突破することはできました。
  しかし、この時点では前述の8.4GBが最大容量となります。

 このような制限を持つOSの代表格とも言えるのがMS-DOSです。
  Windows 98/95/2000/NT 4.0といった、最近のOSではディスクアクセスの際にINT13H呼び出しを使わず、直接ATAコマンドを発行することでINT13Hの8.4GB制限を回避しています。

 

●33.8GBの壁

 これまでの説明では、主にBIOSのINT13Hの機能について説明しましたが、ご質問にあった34GB制限について言えば、INT13Hは関係ないはずです。と言うのは、INT13Hではもともと8.4GBまでしか扱えませんから、原因は別にあるはずです。

 調べてみると、多くのマザーボードに採用されているAward BIOSでは、バージョン4.5x以前のバージョンで33.8GB以上のIDE HDDを認識できないというトラブルがあったことが分かりました。
  おそらくご質問にあった34GBというのは、この値のことだろうと思われます。

 BIOSはHDDを認識する際、その全容量から、内部で使用するための仮想的なCHSの値を計算します。
  このとき、まず初めにH=16、S=63を仮定するBIOSが多いのです。
  このようにすれば、HとSは拡張INT13Hの制限にもATAの制限にもマッチするので、Cの値だけに注意すればよくなります。
  2.1GBの壁が解消されても、C値は最大で65,536までしか使えませんので、65,536×16×63×512=33,822,867,456、つまり約33.8GBとなります。
  これが33.8GBの壁の正体です。

 

●対処方法は?

 PCが起動時に33.8GB以上のIDE HDDを認識しない場合、その原因はほぼBIOSにあると見てよいでしょう。
  今回問題となったAward BIOS 4.5xについては、Award BIOSを搭載するマザーボードのメーカーの多くがこの問題を解消するBIOSをすでにリリースしているようです。
  対応した最新のBIOSをダウンロードするなどして書き換えてやれば、問題は解決です。
  とにかく、対処できるかどうかはソフトウェアの対応にかかっています。
  まずは、お使いになっているマザーボードのメーカーのホームページなどで、対応BIOSがあるかどうかを確認してください。
  また、33.8GBを超える大容量のHDDでは、2.1GBを超えるHDDにあったのと同様に、ジャンパ設定によって32GBまでに使用容量を制限できる製品(最近のIBM製IDE HDDなど)もあります。
  対応BIOSがない場合には、こうしたHDDか制限内の容量の製品を使うしかありません。

(天野 司)
[HOME][MENU] [NEXT]