PCには「レガシー」と呼ばれるものがある。主にPCIバスが登場する前の、多くはIBMのPC/ATに由来する古い技術や仕様だ。本来レガシーという言葉は遺産という意味でありマイナスイメージなものではない(車の名前に使われているくらいである)のだが、PCの世界ではもっぱら排除すべき古いものとして使われる。 レガシーの排除は、プラットフォームによっても度合いが異なるが、最も進んでいると思われる現在の省スペースデスクトップと古いPCを比べれば、すでに多くのレガシーがなくなっていることに気づく。ISAバス、シリアルやパラレルポート、FD(コントローラ)、PIO方式によるディスクアクセス、PS/2キーボードおよびマウス、これらはみなこの数年の間に排除されたレガシーだ。 ●近代的なOSでは形骸化してしまった“BIOS”
逆に、今も排除されずに残っているレガシーの代表がBIOSだろう。BIOSにはシステムBIOSだけでなく、VGAに代表される拡張BIOSも含まれる。現在のOSは、動作に際してBIOSを必ずしも必要としない(BIOSではなく自前のデバイスドライバを経由してハードウェアにアクセスする)が、まさにそのOSを起動する前の段階においてBIOSを必要としている。 すなわちシステムの電源投入後の自己診断(POST:Power On Self Test)やデバイスの初期化、OSのブートストラップが今もBIOSにより行なわれる。ブートデバイス(システムの起動に用いられるデバイス)は、既存のシステムBIOSと互換性を持つか、拡張ROM BIOSとして自前でBIOSを用意するか、どちらかが不可欠だ。このため、PC/ATの時代が終わった後も、Plug and PlayなどBIOSには新しい機能が追加され続けたし、新しいブートデバイス(USB、ネットワーク etc.)のサポート等で今も手が加えられ続けている。 だが、BIOSに対する機能拡張の問題は、その機能を近代的なOSはほとんど利用しない、ということにある。本来BIOSはBasic Input Output Systemの略であり、OSに対してハードウェアを利用する基本的な機能を提供するファームウェアだった。そして、これはMS-DOSにおいては真実であり、x86プロセッサの割り込みを用いてBIOSの機能が利用されていた(Disk BIOSのINT13hコールなど)。逆にいえばBIOSはMS-DOSのようなリアルモード用OSのために用意されたもの、16bit環境用のものということになる。 近代的なOSにとってBIOSが都合が悪いのは、リアルモード用に作られたBIOSはマルチタスク環境下で利用するように作られていないこと、必ず1MB以下のメモリ空間(16bit CPUである8086のアドレス空間)内に配置しなければならないことなどだ。 BIOS自身のアップデート時を含め、今でも緊急ブート時にはMS-DOSを必要とすることがあるが、そのためにBIOSを用意しても、本番OSが起動すると全く使われないのでは無駄が多い。また、せっかくBIOSを用意しても、拡張ROM BIOSの場合、それを配置可能なアドレス空間は限られている。 BIOSの仕様(MS-DOSの仕様)では、BIOSは640KBから1MBの間に位置しなければならないが、これらの空間がすべて利用可能なわけではない(多くは予約済み)。SCSIホストアダプタ等を利用するユーザーであれば、アドレス空間の不足により拡張ROM BIOSがロードできない、というエラーを見たことがあるかもしれない。システムに搭載される平均的なメモリ量が256MBから512MBになりつつある現在640KBから1MBの間のわずか384KBの空間を取り合うことは、いかにも不自然だ。 また、最近登場したホットプラグ可能なシリアルバスに代表される新しい(PC/ATの時代にはなかった)周辺機器は、BIOSによるサポートが容易ではない。多くのシステムのBIOSセットアップにはUSBキーボードのサポート、といった項目があり、これによりUSBに接続されたキーボードに関してBIOSレベルでのエミュレーションが行なわれるが、こうした個別対応をすべてのデバイスに対して行なうことができないのは明らかだ。様々なデバイスをOSがブートする前の環境で利用可能にするには、個別のデバイスに応じたドライバを組み込み可能なファームウェアが必要になる。 ●EFIフレームワークをIA-32でも導入
これらの問題を解決するものとして今回のIDFでは、EFIに準拠したファームウェア(のためのフレームワーク)をIA-32ベースのPCでも採用しようという動き(Intel Platform Innovation Framework for EFI)が明らかになった。Extensible Firmware Interfaceの略であるEFIは、ファームウェアとOS間のインターフェイスの仕様。 すでにIA-64プラットフォームでは、このEFIに準拠したファームウェアが採用されている。32bit OSを起動する能力を持たず(あるいは断ち切って)、レガシーのないコンピュータ環境としてスタートしたIA-64では、MS-DOS(既存のBIOS)との互換性など配慮する必要がなかったため、新しいファームウェアのインターフェイスを採用することが可能だった。OSもEFIに対応した専用の64bit OSのみが提供される。 EFIをIA-32に持ち込む際に不可欠なのは、既存のOSやBIOSとの互換性だ。現時点でIA-32用に、EFIに対応したOSなど存在しないから、EFIがどんなに優れていようとも、既存のOSとの互換性なしには使い道がない。Longhornが最初の対応OSとなる予定だ。 また、EFIになったとたん、既存の拡張ROM BIOSを搭載した拡張カードが使えなくなっても困る。この点を踏まえて、EFI対応ファームウェアの枠組みがTianoというコード名で開発されてきた。Tianoの正式名称が「Intel Platform Innovation Framework for EFI」ということになる。 EFIフレームワークは高度にモジュラー化された構成で、ドライバやアプリケーションを組み込むことが可能だ。メモリモデルは32bitリニア空間だから、ファームウェアが1MB以下の狭い空間を取り合う必要はない。広いアドレス空間は、ドライバやアプリケーションの組み込みによる様々な機能拡張にも必須である。
Michael J. Fister(マイケル・J・フィスター)副社長によるエンタープライズ部門のキーノートでは、ハンドヘルド(iPAQ)からサーバーのファームウェアにリモートでドライバを追加するデモが行なわれたが、こんな芸当は既存のBIOSでは不可能だ。もちろんこの追加されたドライバ(特定のシリコンに対応したサポートソフトウェア)が提供する機能は、システム起動時に利用するだけでなく、実行中のOSからも利用することができる。機能的にあまり複雑でないハードウェアであれば、基本的な機能の大部分をEFIのドライバに任せ、OS側のドライバサポートを簡素化することも可能だろう。加えて、ドライバやファームウェアを提供する側としては、記述に高級言語(C言語)が利用できるという利点もある。 ●システムベンダにこそ意味のあるEFIフレームワーク
このようにEFIフレームワークの導入によりシステムは大きく変わるが、その影響を受けるのは主にシステムベンダやインテグレータで、ユーザーには直接のメリットはないかもしれない。 ユーザーが最も影響を受けるのはシステムのコンフィギュレーションの部分(現在のBIOSセットアップに相当する部分)だが、将来的に採用されるであろうEFIフレームワーク準拠のファームウェアのユーザーインターフェイスがどうなるかは、現時点では良く分からない。IA-64用のそれは、MS-DOSのコマンドプロンプトのようなもので、今の一般ユーザーの手にはおえないような代物だが、アドレス空間に制約のないEFIフレームワークベースのファームウェアならユーザーインターフェイスを提供するプログラムを作ればよいだけの話だと思われる。 このEFIフレームワークの導入だが、今回の発表を受け、徐々に普及することが期待されている。現在、AMI(American Megatrends, Inc)とInsyde Softwareが、特定のハードウェアを前提にしたファームウェアの提供が可能で、GatewayがEFIフレームワークに準拠した最初のシステムを提供するべく開発を進めている(開発中のワイド液晶ディスプレイ一体型PCがルイス・バーンズ副社長のキーノートで紹介された)。来年にはもっと多くのベンダが採用する予定で、Intel自身も今後2~3年でリファレンスボードをEFIフレームワークを前提にしたものにしていくことになっている。2007年までには「BIOS」といえばこのEFIフレームワークに基づいたものを指すようになるとIntelでは考えている。 □IDF Fall 2003のホームページ (2003年9月19日)
[Text by 元麻布春男]
【PC Watchホームページ】
|
|