Click


元麻布春男の週刊PCホットライン

HDDインターフェースにみるBIOSの意味


●HDDインターフェースにみるBIOSの意味

 前回までの2回に渡って、IDE RAIDコントローラなるものについて取り上げた。そこに寄せられたある読者のメールが、筆者の興味をひいた。要は、IDE RAIDコントローラはソフトウェアRAIDだというが、特にソフトウェア(ドライバおよびユーティリティ等)など必要とせず、たとえばDOS環境でもそのまま利用できる。ということは、RAID機能はホストからトランスペアレントなのであり、ハードウェアRAIDなのではないか、という意見だ。もちろん前回も書いたように、実際にはRAIDのリアルモードソフトウェアはカード上の拡張ROM BIOSに含まれている。何のソフトウェアもロードせずRAID機能が実現されているわけではない。

 今回この話題を取り上げたのは、IDE RAIDコントローラがソフトウェアRAIDであることを力説したいからではなく、BIOSあるいはIDEというものについて、一度復習してみるいい機会だと思ったのだ。


 BIOSの役割を簡単に言うと、ハードウェアの初期化(IPLもここに含める)と、リアルモードでのAPI(DISK BIOSインターフェイス)を提供することである。現在のPCのBIOS(マザーボード上のシステムBIOS)には、DISK BIOSが含まれている。だからこそ、オンボードのIDE I/Fが利用できる(特にシステム起動に)。では、なぜPCIのIDEホストアダプタカード(RAID機能のない普通のもの)に拡張ROM BIOSが載っているのだろう。システムBIOSに含まれるDISK BIOSを利用できれば、カード側にわざわざ拡張ROM BIOSを載せなくても済むハズだ。実は、IBM製のオリジナルPC/ATのハードディスクコントローラカードは、カード上にROM BIOSを持たない。右の写真は、以前にも掲載したことのあるWestern Digital製のハードディスクコントローラカードWD1006-SR1だが、カード上にBIOSを収納したROMチップはない。DISK BIOSはシステムBIOSに統合されているため、必要なかったのである。

 しかし、IBM PCのシステムBIOSが最初からDISK BIOSを持っていたわけではない。最初からハードディスクを内蔵したモデルが設定されたPC/XTでは、DISK BIOSはハードディスクコントローラカード上にあった。このPC/XTのハードディスクコントローラカードは、Z80 CPUを用いたインテリジェントタイプで、PC/ATのハードディスクコントローラカードとは完全に異なる。データ転送にはホスト側のDMAコントローラ(DRQ3/DACK3)を使っていたほか、ステータス情報のやりとり等には、IRQ5を使っていた。

 実は、IDEのごく初期には、これらのリソースを使うことを前提に、XTバスに直結可能なハードディスク(後述のATAにならうとXTAとでも呼ぶべきか)も存在した。たとえばSeagateのST351Xがその例だ(接続には専用のホストアダプタであるST05Xなどを用いた)。ただ、IDEが登場した時点において、すでにPC/XTは時代遅れになりつつあったし、PC/XTにATタイプのドライブ(今のATAドライブの前身)を接続するホストアダプタも登場したりしたため、XT直結タイプのハードディスクが広く普及することはなかった。今ではIDE=ATA(AT Attachment)と考えて100%間違いないが、昔は必ずしもそうではなかった、という話である。Integrated Device Electronics(あるいはIntegrated Drive Electronics)などという、分かったような分からないような? 呼称が用いられたのは、こういう事情もあったからだと考えられる。

●PC/ATでPIO方式に変更

 さて、DMA転送のPC/XTに対しPC/ATでは、データ転送にPIO方式がとられた。CPUが80286になったことで、PCの低速な8bit DMAコントローラを使うより、CPUが直接データをやりとりした方が速い、というわけだ(PC/ATは8237 DMAコントローラを2つ持っているため、16bit幅でのDMA転送が可能だが、それでも決して速いとは言いがたい)。PC/XTのCPUは4.77MHzの8088であり、ハードディスクのデータ転送には荷が重いと判断されたのだろう(ちなみにPC-9801シリーズの初代ハードディスクインターフェイスカードであったPC9801-27も、PC/XTタイプのDMAを利用したインテリジェントタイプであった)。PIO方式がマルチタスク向きではないとされることからすると、逆行しているように思われるかもしれないが、PC/ATが登場した時代にPC上でマルチタスクOSを利用することなどほとんどなかった。シングルタスクであれば、CPU占有率が100%になろうと、目の前のタスクであるハードディスクのデータを取りに行った方が効率的だったのである(i386が登場し、UNIXが移植されるようになると、これが嫌われることとなった。そういうユーザーによって支持され、デファクトスタンダードとなったのが、バスマスタDMAをサポートしたAdaptecのAHA-154xシリーズSCSIホストアダプタだ)。

 こうした変更に伴い、PC/ATのハードディスクコントローラカードはDMAチャネルを必要としなくなった。現在のPCのATAインターフェイス(Windowsのデバイスマネージャではハードディスクコントローラ)が利用する割り込み(IRQ14)やI/Oアドレス(プライマリ1F0-1F7、セカンダリ170-177等)といったリソースは、ここで決まっている。現在のIDEの正式規格であるATAは、このPC/AT用ハードディスクコントローラに相当する機能をドライブ側に統合することから始まったものだ。大容量化やUltra DMAに代表されるように、現在のATAはPC/AT用ハードディスクコントローラにはなかった拡張機能を多く備えるが、ルーツはここにある。

 すでに述べたように、PC/ATではシステムBIOSにDISK BIOSの機能が統合されていた。Plug and Play機能を全く持たなかったPC/ATで、DISK BIOSをシステムBIOSに含めた結果、上述のリソース設定は、DISK BIOSが利用するパラメータとして固定化した(Plug and Playがない以上、固定しないとサポートのしようがない)。これがレガシーというものの正体だ。ただ、こうしたレガシーがあったからこそ(固定されたリソースが明らかであったからこそ)、様々なOSがPCアーキテクチャ上で開花したということもいえる。

 もちろん、現在のPlug and PlayをサポートしたPCなら、ATAをレガシーフリーにすることは不可能ではない。PCIバス対応のSCSIホストアダプタが、Plug and Playに対応したBIOS(利用するリソースが変動するハードウェアに対応したBIOS)を持っていることでも明らかなように、システムBIOSのDISK BIOS部分をPlug and Play対応にすることは可能なハズだ。こうしてしまえば、PCIのIDEホストアダプタカードをシステムBIOSでサポートすることが可能になり、わざわざカード側にBIOSを持たせなくても良くなる。一部のマザーボードベンダが、システムBIOSにSCSI BIOSを統合しているのと形式的には同じだ。

 だが、これをやってしまうと、DOS以外のOSについて、すべてドライバを用意しなくてはならなくなる(ちょうどSCSIのように)。新しいOSはドライバ対応してもらうとしても、古いOSのサポートは頭の痛い問題だ。過去のソフトウェア(場合によってはもう開発元の会社が存在しないかもしれない)との互換性を維持しようとする限り、これらのリソースは簡単には変えられないのである。そこで、あえてオンボードのIDEはレガシーを維持し、BIOSも固定したリソースをサポートするようになっている。Plug and Playに準拠したPCIカードは、利用するリソースを固定することはできないため、システムBIOSでサポートすることができない。カード側にBIOSが必要になる(システムBIOSに2種類のATA対応BIOSを搭載するということも可能だが、それだけの需要が見込めない、というのがそうしたシステムが存在しない理由だろう)。

 上で「DOS以外のOS」と断ったのは、DOSにはこの問題がないからだ。DOSのディスクアクセスは基本的にはBIOSを利用するため、カード上のBIOSさえちゃんとしていれば、別途ドライバを用意する必要はない(一部のディスクユーティリティなど、ローレベルのアクセスをするものは除く)。ちなみに、FDISKユーティリティが利用可能な条件もBIOSレベルの互換性であり、BIOSレベルの互換性を持たないハードディスクはFDISKすることができない(たいてい、独自のパーティショニングユーティリティが付属する)。ただ、このように便利なBIOSも、リエントラントにできていないため、マルチタスクOSでは利用できない(そういう点で、BIOSそのものが1つのレガシー、ひょっとすると最後まで残るレガシーであることは間違いない)。

●レガシーとPC/ATとの互換性

 今回、退屈な昔話を延々としてきたのは、現在話題になっているレガシーというものの実体が、どのようなものかを具体的に知ってほしかったからだ。レガシーには、歴史的な必然性があるものの、今となってはウンザリするような話に感じられるのではないだろうか。現在のPCには、まだこのようなレガシーが多く残っている。レガシーをなくして、シンプルにすることは、ハードウェアの設計や新しい技術の導入を容易にすると同時に、OSの簡素化に大きく貢献するハズだ。

 家電等に比べPCは不安定だといわれる。おそらくそれは事実だろう。レガシーを排除し、OSを簡素にすることは、PCの安定性向上に寄与するに違いない。だが、レガシーの排除というのは、PC/ATとの互換性の排除、ということでもある。現在のPCは、すでにPC/ATとの互換性をかなり失っているが、残っている部分も多い。真のレガシーフリーPCというのは、PC/ATとの互換性を残さないPCということにほかならない。PC/ATではPCIやAGPのカードは動かないにもかかわらず、今でも拡張カード類のパッケージの中には、動作環境として100% PC/AT互換などという珍妙な表記が見られる。レガシーフリーの時代がやってきたとき、このフレーズはまだ生き残るのだろうか。

バックナンバー

(2000年4月26日)

[Text by 元麻布春男]


【PC Watchホームページ】


ウォッチ編集部内PC Watch担当pc-watch-info@impress.co.jp