差別化の手段として使う

 BIOSはメーカーにとってハードウェア部品の一部という位置付けが大勢である。というのもメーカーが何らかの付加価値をつけるには,その機能がBIOSを経由してシステムに反映されなければならないからだ。従ってBIOSは,ハードウェア同様メーカーの責任の範疇ということになる。

 メーカーとして部品の標準化を考えると,このアプローチは有益な手段となる。モデル間のハードウェアの差分をBIOSレイヤーで吸収し,上位ソフトウェア・コンポーネントを共通化することにより,メンテナンス性,品質向上に寄与し,開発コストを低減させるからだ。

 製品の優位性を確保する方法として価格やコンセプトなどもあるが,ここでは技術に焦点を当てる。技術面で差別化の方法論を考えると,以前はシステムのコアロジックを独自開発したり,ボードの省スペース化を狙った周辺機能の高集積化などが行われてきた。しかし最近では,CPUとの整合性や開発コスト,開発期間の観点からほとんど見られなくなった手法である。結果的にシステムを構成する主なコンポーネントはCPUに代表される半導体,OS,アプリケーションなどで,メーカー色はほとんどない。これらコンポーネントを組み合わせただけの製品では,単なる価格競争へと突入してしまう。

 そこでBIOSに手を加える。コンポーネントの共通化が進む一方で,依然として唯一システム開発者自らがBIOSにはタッチできる。そのため他のコンポーネントと異なり,多彩な工夫が盛り込まれてきた。特別な機能を持つボタンを組み込んだり,バッテリ残量計の精度向上,温度監視と省電力機構との連携,メンテナンス機能等々,枚挙にいとまがない。

 とはいえなりふり構わず機能を盛り込めるわけではない。業界標準の機能を踏襲しながら,異なった機能を付加して差別化するという,一見矛盾した要件が付きまとう。この矛盾を克服するためのさまざまなテクニックが過去使われてきた。

後方互換維持は絶対条件

図2●BIOSの機能拡張による影響例
BIOSにおける入出力の基本は,CPUのレジスタにある値を入力パラメータとしてセットしてから,BIOSの機能を呼び出すと,出力パラメータとして結果が返ってくる。アプリケーションが未定義レジスタの値を前提とする構造になっていると,機能拡張による未定義のレジスタ値の変化によって不具合が起こる可能性がある。
 BIOSの開発は新技術の導入と互換性維持に費やされてきたと言っても過言ではない。

 BIOSの基本機能は,システム初期化,自己診断,システム起動,ランタイム・サービスなどに大別される。これら機能すべてに差別化を施す余地は存在するが,その目的によっては関連する機能に影響を及ぼす。なぜなら開発言語がアセンブラである以上,レジスタの使い方を一つ誤ると既存ソフトウェア資産の互換性を左右しかねない。BIOSは国際標準化機構(ISO:International Organization For Standardization)などが定める標準仕様として管理されていないため,その拡張が安全か否かの判断が難しい。

 例えば,設計者として想像もつかないようなケースもあった(図2[拡大表示])。BIOSにおけるデータの入出力は,レジスタを使うのが基本だ。レジスタにある値を入力パラメータとしてセットしてからBIOSの機能を呼び出すと,出力パラメータとして結果がレジスタに入れられて返ってくる。ここで機能を拡張した際,出力が未定義となっているレジスタの値が変化した。あるアプリケーションがBIOSファンクション実行後の未定義レジスタの値を前提とする構造になっていたため,その後の処理に影響を及ぼした。

 また,PCIのような階層型のバスを初期化する場合などは,再帰的にプログラムを実行するケースがある。これによりBIOS内部で消費するスタックが増加し,十分なスタック領域が確保されてないアプリケーション暴走するという,思いもかけない問題が発生する*5

 以上のような問題は,コンパイラによるチェックが介在する高級言語においては基本的に発生しない*6。プログラマが直接ハードウェアのレジスタやメモリーを制御するアセンブラ言語による開発であるがゆえに起こり得る問題である。そのためBIOSの改変に応じて市場に存在するソフトウェアがどのように振る舞うかは,人手による確認や過去の事例といった経験則に頼ることが多い。そのため互換機の発展期には,出荷前に膨大なコストをかけ,利用頻度の高い何十本もの市販アプリケーション・ソフトの動作確認を行った。今でも動作確認の評価を専門とする会社が数社存在している。現在では,デバイス・ドライバを中心としたWHQL(Windows Hardware Quality Lab)や,ストレージやネットワークなどの標準化団体が相互運用性を検証するなど,それぞれの担当分野ごとに実施されている。

津留雅文 Masahumi Tsuru

フェニックステクノロジーズ チーフテクノロジーオフィサー
1983年より,8ビット機およびIBM PC互換機のハードウェア/BIOS設計に従事。1990年,ストラテジックリサーチインスティチュートに入社し,AXパソコン向けBIOS開発に向け開発チームを率いる。1993年のパソコン向けBIOSの分野で圧倒的シェアを持つ米Phoenix Technologies社による企業買収を経て,一貫してBIOSの開発とリサーチ関連業務に携わる。最近では,複数の社外団体へ参画,標準化作業や米国本社との製品開発に関わる意見調整等に奔走する。