EFI
IBM PCの最後の遺産BIOSが消える

 Longhornの登場を機に,長い歴史を持つBIOS(Basic Input/Output System)も形を変える。「Intel Platform Innovation Framework for the EFI(Extensible Firmware Interface)」と呼ぶ仕様に準拠する形態に変わるのだ。EFI Frameworkは新しいBIOSである。現行のBIOSと比べ,拡張性や開発効率に優れる。Intelは「2007年までにEFI Frameworkに移行する」と言う。

 現状のBIOSの主な役割は,メモリー,グラフィックス・チップ,フロッピ・ディスク,ハードディスクといったマザーボードにつながる機器が正しく動作するかをチェックし,SCSIカードやネットワーク・カードなどの追加機器を認識し,これらすべての機器を初期化してからOSの起動プログラムを呼び出すことである。

 BIOSのプログラム(ファームウェア)はマザーボードにROMとして置かれるほか,デバイスごとにオプションROMという形で実装される。ここに機器の情報や初期化プログラムを記録しておく。パソコン起動時にはこれらがメモリーに呼び込まれ動作する。OSに制御が移った後は,BIOSはOSの動作に関与しない。

 現行のBIOSはいくつかの限界があった。例えば,ネットワークやUSB 2.0につながるドライブを起動ドライブとして一般に選択できない。もし,ネットワーク・ブートを可能にしようとすれば,イーサネット・カードを利用可能にし,その上で動作するTCP/IP処理プログラムやDHCPクライアントのプログラムをあらかじめBIOSの中に組み込んでおく必要がある。また,ネットワーク経由でファイルをやり取りするプログラムも必要だ。しかし,現行のBIOSにはこれらのプログラムが組み込まれていない。例えばUSB 2.0につながるハードディスクを起動ドライブとして選べないのは,USB 2.0のインタフェースを利用可能にするプログラムがBIOSに組み込まれていないためである。

 なぜこのような問題が存在するのか。最大の理由は,BIOSが使えるメモリー容量が1Mバイトに限られていることにある。これはBIOSが8086/8088の互換モードで動作するためだ。BIOSは初代IBM PCと同時に開発されたが,その互換性確保の縛りが残っている。1Mバイトという容量の限界があるため,機能追加が困難な状況が続いていた。

 これとは別に,BIOSは開発者にとって作りにくいという側面もあった。BIOSは直接デバイスを制御するプログラムなので,アセンブラ言語で書かなければならない。アセンブラで記述する作業は負荷がかかる上,トラブルを起こしやすく,デバッグや検証が大変である*5

図5●BIOSの問題点とEFIでの解決策

 EFI Frameworkは,メモリー容量の限界と開発の大変さの両方をクリアすることを目的に考え出された(図5[拡大表示])。特徴は二つある。第一は32ビット/64ビット環境で動作するようにして,1Mバイトの容量制限を撤廃したこと。第二は開発のフレームワークを定め,C言語で開発できるようにしたことである。USBやPCI,ネットワークといった一般的なインタフェースがC言語の関数として用意されており,それらを利用してプログラムを作れる。

 フレームワークの導入は開発負荷を軽減するだけでなく,CPUの違いを吸収する効果もある。一度このフレームワークを使って開発したプログラムは,コンパイラを変えることでIA-64,IA-32,XScaleなどCPUごとのネイティブ・コードに変換できるからだ。

 ただし,アーキテクチャが異なるCPUで動作するファームウェアはマシン語が異なるので,デバイスのROMに搭載する際には,IA-64用,IA-32用という具合に複数搭載する必要がある。これはROMの領域を圧迫する。そこで,EFI Frameworkでは仮想マシンの環境も用意する。Javaのように中間コードを生成してROMに格納しておき,実行時にネイティブのコードに変換して処理する。

 また,EFI Frameworkはそれぞれの機能が独立したプログラムになっており,部分的に変更することが容易である。

 見てきたようにEFI Frameworkは,プログラム作成時の自由度を高め,効率もアップさせる。これにより,PCの使い勝手を高める工夫が施されることが期待される。例えば設定画面。現在のBIOSはキャラクタ・ベースの素っ気ないものだが,GUIを用いた親しみやすい画面になるかもしれない。また,先に述べたネットワーク・ブートも期待できる。

 MicrosoftはLonghornからEFI Frameworkに対応するとしている。

(中道 理)