動向解説 IDEディスクの壁を打ち破る最新ディスク・インターフェイス

1.容量の壁を打ち破る「Big Drive」

デジタルアドバンテージ 島田広道
2001/09/15

 PCの歴史を振り返ると、ハードディスクの容量が増加する一方で、PCのハードウェアやソフトウェアの仕様が急速な容量増大に追い付かず、それが原因でソフトウェアからハードディスクの全容量を正しく認識できない、というトラブルがしばしば生じているのが分かる。これは「容量の壁(Capacity Barrier)」などと呼ばれている。

PCは何度もハードディスクの「容量の壁」を乗り越えてきた

 下図はIDEハードディスクからなるPCのディスク・サブシステムの構成を簡略化して表したものだ。図中の各コンポーネントは右から左へ、ディスクをアクセスする指令を伝えていくのだが、その際、アクセス対象のブロック(セクタ)を指定するアドレス情報も伝わる。このアドレス情報のサイズや取り扱い方法により、アドレス可能な容量の上限が決まる。それがIDEハードディスクの容量を下回る場合、ユーザーには容量の壁として見えるようになる

IDEハードディスクからなるPCのディスク・サブシステムの構成
図の右側が上位レベルのソフトウェアで、左に向かうにつれて下位レベルのソフトウェアやハードウェアになる(ディスク関連ツールの一部は、直接IDEへアクセスする場合があり、点線の矢印はそれを表している)。容量の壁は、図中の各コンポーネントにて取り扱える容量の上限に起因する。そのため、原因となるコンポーネントによって、ユーザーから見える制限の症状も異なる。

 過去に発生した容量の壁を下表に記す。

上限容量 原因 解決策 変更を要したコンポーネント
528Mbytes ディスクBIOSとIDEハードディスクのセクタ指定パラメータ(CHSパラメータ:シリンダ/ヘッド/セクタ)の食い違い ディスクBIOS内部でのCHSパラメータの相互変換、およびIDEハードディスクへのLBA(Logical Block Address)の導入 IDEハードディスク、ディスクBIOS、IDEドライバ、ディスク関連ツール
2.1Gbytes ファイルシステム(FAT16)の仕様*1 FAT32NTFSなど別のファイル・システムへの移行 OS、ディスク関連ツール
4.2Gbytes ディスクBIOSの制限 BIOSアップデート ディスクBIOS
8.4Gbytes ディスクBIOSが提供する上位プログラムへのインターフェイス(Int13H)で、CHSパラメータを使っていたことによる制限 64bit LBAを採用した拡張Int13Hファンクションの導入と、OSなど上位プログラムの拡張Int13Hサポート ディスクBIOS、OS(場合によってはIDEドライバも含む)、ディスク関連ツール
33Gbytes ディスクBIOSの制限 BIOSアップデート ディスクBIOS
137Gbytes IDEハードディスクのセクタ指定パラメータ(LBA)のサイズ LBAのサイズを28bitから48bitに拡張 IDEハードディスク、ディスクBIOS、IDEドライバ、ディスク関連ツール
過去にあったPCにおけるハードディスクの容量の壁
528Mbytesより前や、それほど知られていない容量の壁については省いている。
*1 2.1Gbytesという制限はWindows 9x/MeのFAT16ファイルシステムの場合。Windows NT/2000/XPのFAT16ファイルシステムでは最大4.2Gbytesまで利用可能。

 そしていま、単体の容量が100Gbytesを超えるハードディスクが登場し始めた現在、IDEが直面している容量の壁は、137Gbytesにある。この壁の原因は、ソフトウェアのバグなどではなく、従来のIDEハードディスクの仕様そのものにある。前出の図では、IDEディスク・コントローラの仕様を変更しなければならない。そして詳細は後述するように、その影響はディスクBIOSやIDEドライバにも及ぶ。IDEにとっては528Mbytesの壁のときと同じ一大変更である。

137Gbytesの壁を打ち破るのはBig Drive

 2001年6月26日にMaxtorが発表した「Big Drive」は、IDEハードディスクにある137Gbytesの壁を解消するための仕様である(日本マックストアによるBig Driveのプレスリリース)。Big Driveは、発表以前からIDEの正式規格であるATAにも提案されており、標準仕様として最新のATA/ATAPI-6に取り込まれる予定だ。

■137Gbytesで壁が生じたワケ

 現在のIDEハードディスクでは、ソフトウェアからアクセス対象を指定する際、LBA(Logical Block Address)というアドレス情報を使用するのが一般的だ。LBAとは、ディスク内の全セクタに通して付けられた、0から増える論理的な数字(セクタ番号)のことだ。

 従来のIDEの仕様では、LBAのサイズは28bitであり、0〜(2の28乗-1)の数値を表現できる。逆に言えば、最大でも2の28乗=268,435,456個のセクタしか取り扱えない。IDEハードディスクの場合、1セクタのサイズは512bytesなので、ソフトウェアからアクセス可能なセクタの総容量は、

 268,435,456セクタ×512bytes=137,438,953,472=約137Gbytes

までとなる。これが137Gbytesの壁が生じる理由である。

■LBAのサイズを大幅に拡張

 Big Driveでは、LBAのサイズを28bitから48bitに広げるという、いわば根本に手を付ける方法で壁の解消を図っている。これにより、アクセス可能な総容量は、

 2の48乗セクタ=281,474,976,710,656セクタ=約144Pbytes
 (PbytesはPeta bytesの略。1Peta bytesは1,000,000Gbytes)

と劇的に広がった。当分の間、IDEハードディスクのLBAが壁の原因になることはないだろう。

■48bit LBAの実装方法

 「LBAを28bitから48bitに広げた」と言葉で言うのは簡単だが、IDEでは過去の仕様との互換性を最大限に保ってきた歴史がある。Big Driveでも、互換性を保つため、そしてこの仕様変更の影響範囲をなるべく小さく抑えるため、実装には工夫が施されている。具体的には、ソフトウェアからIDEハードディスクをコントロールするのに使われるレジスタの構成を最小限の変更にとどめることで、28bit LBAと48bit LBAの両方をサポートできるようにした。

 IDEでは、LBAによるアドレス情報や転送セクタ数、制御コマンド、ステータスやエラーなどの情報を、IDEハードディスク側のIDEインターフェイス回路(前出の図ではIDEディスク・コントローラ)に位置するレジスタを介してやり取りする。下表は、アドレス情報と転送セクタ数に関わる部分に限定して、Big DriveのIDEレジスタの構成を記したものだ。

レジスタ名称 28bit LBA利用時 48bit LBA利用時
1回目に書き込んだ値 2回目に書き込んだ値
Sector Count
転送セクタ数(7〜0bit)
転送セクタ数(8〜15bit)
転送セクタ数(7〜0bit)
LBA Low
LBA(7〜0bit)
LBA(31〜24bit)
LBA(7〜0bit)
LBA Mid
LBA(15〜8bit)
LBA(39〜32bit)
LBA(15〜8bit)
LBA High
LBA(23〜16bit)
LBA(47〜40bit)
LBA(23〜16bit)
Device
LBA(27〜24bit)
Big DriveにおけるIDEレジスタの構成(書き込み時)
各レジスタのサイズは8bitなので、28〜48bitもあるLBAの値は分割して複数のレジスタに書き込むよう設計されている。「28bit LBA利用時」は従来のIDEの仕様と同じだ。Big Driveで追加された「48bit LBA利用時」の仕様では、レジスタが二重化されており、同じレジスタに2回連続で書き込んだ合計16bit=2bytesの値が利用される。これにより、LBAだけではなく転送セクタ数も大幅に最大値が高められた。

 Big Driveでも28bit LBA利用時は、従来のIDEと同じレジスタ構成をとることで互換性を維持している。一方、48bit LBAでは、レジスタを二重化することでLBAのサイズを広げるという実装方法を採用している。LBAと転送セクタ数に関するレジスタが2bytesのFIFOになったわけだ。同じレジスタに何回も連続で書き込むと、直前とさらにその前に書き込んだ合計2bytesが有効な値として扱われる。

 こうした実装により、IDEホスト・コントローラによるIDEレジスタへのアクセス手順は従来と同じままで済むため、Big Driveでは原則としてIDEホスト・コントローラを変更する必要はない。

ようやく標準化されたLBA拡張仕様
 
LBAのサイズを28bitから拡張する仕様案は、ATAの仕様を策定しているグループ「T13」にて、実に4年以上前、すなわち1997年から検討されていたようだ(T13のホームページ)。今回発表されたBig Driveと比べると、当初の仕様はLBAのbit数など大きく異なっていたが、過去との互換性が重要視されていたことには変わりない。中でもIDEホスト・コントローラを変更しないことが、特に重視されていた。BIOSやドライバなどソフトウェアは容易にアップデートできるが、IDEホスト・コントローラはチップセットに内蔵されていることもあるため、代替するには敷居が高いからである。

■最大転送セクタ数も向上

 またBig Driveでは、1回のコマンドで転送可能な最大セクタ数も、従来の256個から65536個と大幅に増えた。これは、ハードディスクを利用する家電製品(ハードディスク・ビデオ・レコーダなど)などで、大容量のストリーミング系データを取り扱うのが主目的のようだ。

■従来の28bit LBAと48bit LBAは共存・混在可能

 28bit LBAと48bit LBAの切り換えは、コマンドそのものの切り換えと連動する。つまり、Big Driveでは48bit LBAを利用する専用コマンドが追加されており、従来の28bit LBA対応コマンドと併用できるように設計されている。データの読み出しコマンドを例に挙げると、従来からあるREAD SECTOR(S)コマンドでは28bit LBAが適用され、Big Driveで新設されたREAD SECTOR(S) EXTコマンドでは48bit LBAが適用される、という具合だ。Big Drive対応のIDEハードディスクでは、互換性維持のため28bit LBAと48bit LBAの両方とも実装しなければならない。これにより、たとえBig Drive非対応のプラットフォームでも、137Gbytesの範囲内ならBig Drive対応ハードディスクを利用できる。

  関連記事(PC Insider内) 
容量8.4Gbytes以上のIDEハードディスクを搭載しても、すべての容量が認識できない障害を直すには?
 
  関連リンク 
Big Driveに関するプレスリリース
ATA/ATAPIに関する標準規格を策定している団体。ドラフト(草案)段階の規格書がダウンロード可能

 INDEX
  [動向解説]IDEディスクの壁を打ち破る最新ディスク・インターフェイス
  1.容量の壁を打ち破る「Big Drive」
    2.Over 137Gbytesディスクを正しく使うには
    3.不透明なシリアルATAへの移行スケジュール
    4.Fast Drive(Ultra ATA/133)の存在理由

「PC Insiderの動向解説」


System Insider フォーラム 新着記事
  • Intelと互換プロセッサとの戦いの歴史を振り返る (2017/6/28)
     Intelのx86が誕生して約40年たつという。x86プロセッサは、互換プロセッサとの戦いでもあった。その歴史を簡単に振り返ってみよう
  • 第204回 人工知能がFPGAに恋する理由 (2017/5/25)
     最近、人工知能(AI)のアクセラレータとしてFPGAを活用する動きがある。なぜCPUやGPUに加えて、FPGAが人工知能に活用されるのだろうか。その理由は?
  • IoT実用化への号砲は鳴った (2017/4/27)
     スタートの号砲が鳴ったようだ。多くのベンダーからIoTを使った実証実験の発表が相次いでいる。あと半年もすれば、実用化へのゴールも見えてくるのだろうか?
  • スパコンの新しい潮流は人工知能にあり? (2017/3/29)
     スパコン関連の発表が続いている。多くが「人工知能」をターゲットにしているようだ。人工知能向けのスパコンとはどのようなものなのか、最近の発表から見ていこう
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

System Insider 記事ランキング

本日 月間