Basic Input/Output System

出典: フリー百科事典『ウィキペディア(Wikipedia)』

ROM形式で提供されるBIOSの例(Adaptec社製SCSIカード、AHA-2940よりBIOS ROM部拡大撮影)
ROM形式で提供されるBIOSの例(Adaptec社製SCSIカード、AHA-2940よりBIOS ROM部拡大撮影)

Basic Input/Output System(ベーシック インプット/アウトプット システム、略称 BIOS - バイオス )はファームウェアの一つで、コンピュータに搭載されたプログラムのうち、ハードウェアとの最も低レベルの入出力を行うためのプログラムである。

BIOSはもともとはCP/Mの用語であり、ギリシャ語のβίος(Bios, )から由来している。

目次

[編集] ハードウェアアクセス方法の実装と共通化

ハードウェアへのアクセスは主にレジスタの操作を行うが、レジスタの動作や配置はハードウェアの種類によって異なる。また、読み書きのタイミングや順序にも制限があることがある。これらのハードウェアアクセス手順はアプリケーション側で逐一記述するより、ハードウェアの種類とセットでサブルーチンの形で用意しておくほうが有用である。このサブルーチンのことをBIOSと呼び、ISAやPCIボードなど形の製品では同一ボード上でROMを接続し、BIOSプログラムをメモリ上に配置する。

また、同じ種類のハードウェアで、操作方法が異なるデバイスが複数存在する場合、BIOSがない場合はアプリケーション側でそれぞれのハードウェア構成にあったアクセス手順を複数用意しておかなければならない。そこでBIOSの呼び出しインタフェースを共通化することで、アプリケーションはそのBIOSコールにあわせるだけで複数のデバイスに対応できることになる。このような共通インタフェースはABI(Application Binary Interface 参考API)と呼ばれる。

PC/AT互換機VGA BIOSを例に挙げると、共通化されたABIであるVGA BIOSを呼び出すことで、ハードウェアの違いを意識することなく一元的に文字の表示や画像の表示を行えるようにしたものである。 同様にハードディスクフロッピーディスクの読み書き、キーボード入力などさまざまな入出力機器の処理を行うBIOSが存在する。

しかし最近ではこの役割がOSにとって代わられている。マルチタスクOSが動作している場合、各アプリケーションが個別にBIOSコールを呼び出すと、リエントラントが考慮されていないBIOS[1]もありOSもハードウェアリソースを管理することが難しくなる。このためOSが動作するシステム上では、ハードウェアの管理はOSがデバイスドライバを用いて一元的に行い、アプリケーションはOSが用意しているシステムコールを利用する。 アプリケーションが、OSのシステムコールではなくどうしてもBIOSコールを使いたい場合は、BIOSを呼び出すシステムコールが用意されているが、そのBIOSがアクセスするハードウェアがOSによって保護されている場合は、必ずしも動作するとは限らない。

また、組み込みシステムではハードウェアのバリエーションが少なく、BIOSといった中間層インタフェースは持たないためBIOSとは呼ばずファームウェアと呼ぶことが多い。

[編集] 起動

装置の電源投入時には、最初に実行されるハードウェアの初期化および、次の段階のブートローダを読み込むプログラムが必要になる。このため補助記憶装置を操作し、ファイルの読み込みが行える状態になるまでのプログラムをROMの形で用意しておく必要がある。これらのプログラムはIPLやブートストラップとも呼ばれる。 補助記憶装置のハードウェアの構成によって手順が異なるため、そのシステム固有のプログラムが用意される。

また、PC/AT互換機のように、様々な種類のハードウェアが増設可能な(バリエーションが多い)場合、初期化手順やハードウェア構成に自由度を持たせておく必要があり、初期化内容などをDIPスイッチやソフトスイッチで設定可能にするためパラメータを持つ場合がある。

[編集] パラメータ設定

近年のパーソナルコンピュータでは、起動時の初期化で多くの項目に自由度があり、設定内容の一部をユーザが指示できるようになっている。この場合VGA BIOSなどが正常に動作したあと、メニュー形式で画面上に項目が表示され、キーボードを使って設定内容を編集し、終了時に不揮発メモリに保存される。次回起動時にこのメモリの内容にしたがってハードウェアが初期化される。

プラグアンドプレイは、ハードウェアのメモリマップや割り込み要求信号(IRQ)をプログラマブルに変更できる機能で、従来はジャンパーピンで設定していたものを、BIOSプログラムが起動時に一定の手順で自動的に設定するものである。ISAのPnPデバイスでは一部不完全で問題が発生することがあり、手動で決め打ちの値に設定する必要がある場合がある。しかし設定を変更するにも、メニュー設定画面までたどり着けない場合、問題はかえって複雑になる。

マザーボードリソースの設定も、動作クロックや電源電圧といったハードウェアに密接した設定もメニューから変更可能な場合がある。このことからオーバークロックといったコンピュータの動作を変化させることが可能となっているが、自作パソコン初心者にはこれらの項目を派手に弄りすぎて問題が発生する場合が少なくない。

しばしば、PCトラブルの際に「BIOSを初期化しましょう」といった表現がなされることがあるが、これはBIOSメニューの設定を初期状態に戻すCMOSクリアを意図して誤った表現となったものであり、BIOSそのものを書き換える訳ではないので注意が必要。

[編集] BIOSの書き換えとトラブル

BIOSはROMに格納され、コンピュータに組み込まれた形で提供される。基本的にはBIOSは書き換える必要がないものだが、バグの修正や新機能サポート時に更新されることがある。

1990年代中頃までのPCでは、ROMとしてマスクROMやOTPROM, UV-EPROMなどが用いられ、大きな問題がない限りBIOSの更新はあまり想定されていなかった。 また、ROMの書き込みにはROMライターといった装置が必要になり、ユーザの手元ではROMは書き換えられないのが普通であった。

フラッシュメモリが実用化され普及してくると、BIOSをフラッシュメモリに格納しユーザの手元でコンピュータを開けずにアップデートできることを売りにしたマザーボード製品が発売された。具体的な書き換え方法としては、書き換え用にフロッピーディスクに簡素なオペレーティングシステム(主にMS-DOSやその互換OSが利用される)の環境を作成、そこから起動し、書き換え用ソフトウェアを起動することで簡単に書き換えを行う事が可能となった。さらに2000年以降はフロッピーディスクから起動せずともWindowsUNIX系OSといった統合環境上で直接書き換えすることができるようになった。現在では、「BIOSの設定画面上でBIOSを書き換える」といったシステムを備えたBIOSも登場し、書き換え方法の選択肢が広がっている。

しかしBIOSの書き換え中に停電など何らかのトラブルで書き換えに失敗した場合、そのコンピュータは全く起動しなくなる。したがって、メーカーは「パソコンに問題があってその解決方法がBIOSアップデート以外に存在しないときやOSのアップデート時にのみアップデートを実行してください」などと注意を促している。

BIOSはコンピュータの起動の根幹であるため、内容が破壊されるとそのコンピュータ自身では再セットアップすら出来なくなる。復旧する方法はBIOS ROMの交換、または専門の業者などで「ROM焼き」と呼ばれる復旧作業をしてもらうのいずれかである。BIOS ROMがソケットに差し込まれているタイプのマザーボードでは自身で同一のマザーボードを用意し、起動後に問題のあるBIOS ROMに差し替え再書き込みをするという荒業も可能ではあるが、起動中のコンピュータのBIOS ROMを抜く事は大変危険である為推奨されない。また、2000年以降に出回っているコンピュータ(マザーボード)によっては、ROMを2つないし4つ持っているものもあり、別バージョンへの切り替えができるようになっているものもある。

[編集] ブートブロック方式

以上に述べたように、BIOSの書き換えにはリスクを伴うが、このリスクの低減を図る目的で開発されたのがブートブロック方式であり、1999年ころから採用されるようになった。 これは、BIOS ROMを2つ以上の領域に分割し、出荷後に書き換えない部分と書き換える部分を設けるものである。書き換えない部分をブートブロックといい、BIOSを書き換えるための必要最小限の機能が含まれている。したがって、書き換え中の電源断などで書き換えに失敗した場合でも、ブートブロックを使用することで再度書き換えを実施することが可能である。

[編集] BIOSとマイクロコード

BIOS ROMには時としてマイクロコードが格納される。マイクロコードを利用するデバイスは、CPU(intel PentiumPro,AMD Athlon以降)、SCSIホストアダプタ(Adaptec社製品等)、ネットワークインターフェース(Marvell社、Broadcom社製品等)等がある。これらはBIOSブート初期の段階でマイクロコードがデバイスに転送され、デバイスが活性化される。またマイクロコードではないが、FPGAベースのデバイスではロジックをBIOSが書き込んで活性化させる物もある。マイクロコードやロジックは新製品や機能改良によってバージョンアップが必要になる事がある。特にCPUのマイクロコードは新製品が出る都度に新しいマイクロコードが必ずといって良い程作られるので、マザーボードに最新CPUを搭載する為にBIOSアップデートによって最新のマイクロコード導入が必要となる場合がある。グラフィクスカードはマイクロコードを使用するにも関わらず例外的にBIOS ROMには含まれていない。通常、VGA相当の専用回路でVGA BIOS機能を提供し、オペレーティングシステム起動後デバイスドライバを経由してアプリケーション上のシェーダープログラムをマイクロコードにコンパイルしてGraphics Processing Unitに転送して実行している。

[編集] BIOSに分類されるプログラム

VGA BIOS
ビデオサブシステム(主にテキストと低解像度グラフィクス)
VESA BIOS
ビデオサブシステム(SVGAグラフィクス)
SCSI BIOS
ディスクI/Oサブシテム(拡張ATAもこの形態をとる)
APM BIOS
初期のパワーマネジメントシステム。後に改良されてACPI BIOSの一部となる。
PCI BIOS
I/Oサブシステム。後にACPI BIOSの一部となる。
ACPI BIOS
現在主流となっているパワーマネジメントシステム及びI/Oサブシステム
SM BIOS
システムマネジメントシステム

[編集] 関連項目

ウィキメディア・コモンズ

[編集] 脚注

  1. ^ 80x86用のコードではプロセッサの構造上リアルモードでの命令セットを使わざるを得ないという制限もある。