BIOS は、 Basical Input Output System、もしくは、 Basical Input Output Software の略です。 基本的な入出力を担う部分、ということです。 基本的な入出力と表現しましたが、その入出力の対象となる物は、外部装置のことです。
ディスプレイ、キーボード、二次記憶装置(FDD や、 HDD)など、 そういった外部装置との、基本的な入出力(情報のやり取り)を行う上で、 ハードウエア的な固有の特徴・特性を隠しつつ、 入出力をサポートしてくれる、ソフトウエア上の論理的な機能ブロック、 それが、BIOS です。
なんとか一つの文章で、 BIOS というソフトウエア上の論理的な存在を表現していますが、 なかなか、この文章では、実感を伴って理解するの難しいでしょう。 もう少し、突っ込んでいきます。
ハードウエア偏~CPU の部分で、 SCSI HDD からの読み込み動作に付いて触れました。 読み込み動作は、こういう流れでしたね?
ここに箇条書きした、HDD からの読み込み動作は、 実は、抽象的に書いていたのです。 それは、CPU から見た、 HDD からのデータの読み込みという動作は、 こういった流れを経て行われているということを理解してもらいたかったからです。
実際、CPUが、 SCSI コントローラに対して行っている作業は、 ディジタル回路という物を理解していない人にとっては、 意味不明で、何をやっているのか、理解し難いものでしょう。 ただし、CPU をプログラミングして、 HDD からデータを読み込むようにさせようとしている、 プログラマーが考えていることを、意味合いとして、言葉や文章で表現すると、 箇条書きにしている内容になるのです。
しかし、HDD からデータを読み込もうとする以上、 たとえ意味不明に感じられることであれ、 CPU が HDD コントローラに対して、 「HDD からの読み込み動作」を意味する、 一連の制御処理をおこなわない限り、 HDD に記録されているデータを読み込む、 という目的は果たせません。 そして、HDD に記録されているデータを読み込むという動作を HDD コントローラにさせる一連の制御処理は、 HDD との接続を制御しているハードウエア(コントローラ)の構成によって、 全く違うものになってしまうのです。
HDD との接続方法が、 SCSI 接続なのか、 IDE 接続なのかによって、 HDD コントローラの種類や、 HDD との接続を制御しているハードウエアの構成は違ってきます。 HDD との接続方法が、 SCSI 接続であれば、 HDD コントローラは、 SCSI コントローラということになります。 SCSI コントローラにも、色々な種類があります。 色々なメーカが SCSI コントローラを製造しています。
もし、プログラマーが、ある特定の HDD コントローラを特定して、 プログラムを作ってしまったのなら、そのプログラムを利用する人は、 プログラマーが想定した HDD コントローラを使っている PC 以外では、そのプログラムを利用することが出来ません。 それは、とても使いにくいプログラムですよね。
そういうことにならないように、PC には、 BIOS があるんです。 HDD に記録されているデータを読み込むという、 論理的な機能を満たすプログラムのブロックが、BIOS に用意されているのです。
プログラマーは、HDD との接続を制御しているハードウエア(コントローラ)を直接制御するプログラムではなく、 BIOS が持っているハードウエア制御の機能を、 プログラムから呼び出す(利用する)ようにすることで、 間接的に HDD との接続を制御しているハードウエア(コントローラ)を使うことが出来ます。 そのことで、 HDD との接続を制御するハードウエア(コントローラ)の種類に依存しない、 プログラムを書くことが出来るのです。
同じことは、HDD だけでなく、 FDD や、キーボード、 そして、ディスプレイを使った表示に付いても言えます。
プログラマー同士の会話では、 ある特定のハードウエアでなければ正常に動作しないプログラム、 ハードウエアに依存しているプログラムのことを、 ハードウエアディペンド(Hardware Depend)しているプログラム、 などと呼んだりします。
BIOS は、 PC がどのようなハードウエア構成で成り立っているかを、 プログラミングの立場、そして、それらのプログラムを利用する立場の人たちから、 ある程度隠してくれているのです。 ブラックボックス化しているとも言えます。
そのおかげで僕らは、 自分の気に入ったグラフィックカードや、 HDD 接続の方法として、 IDE や、SCSI を選択できます。 同じ、IDE や、SCSI という接続方法でも、様々なコントローラを使うことが出来るのです。
BIOS は、すべての計算機で存在するものではありません。 また、存在したとしても、計算機の種類によって BIOS の構造も違います。 NEC PC-9800 シリーズの PC と、 PC/AT アーキテクチャの PC では、 BIOS の構造が違います。
また、WorkStation には、 BIOS が搭載されていないのが普通です。 BIOS はありませんが、ブートストラップ編で説明したように、 OS の起動を行うプログラムや、 モニターモードと呼ばれる単純なプログラムが、 ROM に記憶され、搭載されてはいます。
PC の OS として、 MS-DOS や、PC-DOS を使っていた頃は、 ハードウエアをある程度隠蔽してくれる BIOS のポリシーの恩恵を受ける度合いがとても大きかったのです。 しかし、Windows を利用する場合は、 MS-DOS や、PC-DOS を使っていた頃と比べると、 それほどまでには大きくないです。 ましてや、Windows NT や、 PC/AT アーキテクチャで動作する Unix (FreeBSD、Linux など)では、 OS の起動の部分ぐらいでしか、 BIOS を使っていません。 そのことに関しては、OS 編で触れることにしましょう。
さて、このページのタイトルは、 BIOS とファームウエアでした。 ファームウエア(Firmware)に触れていません。 ファームウエアというのは、PC の世界で言えば、 HDD や、CD-ROM ドライブ、 プリンターや、スキャナなどに搭載されているソフトウエアのことです。
もっと言えば、最近の家電機器、 テレビ、ビデオ、コンポにや、電気湯沸しポット、炊飯器、 電話や、ファックス、エレクトーンや、電子ピアノ... そうです。こういった機器にも、最近は、CPU が搭載せれているから、 それぞれの機器の用途向けに、ソフトウエアも搭載されていると、 ソフトウエアの概要で述べましたね。 携帯電話(EzWeb や、i-mode、i アプリに対応しているものも含めて)や、 ワープロ専用機なんて言うのも、そうです。 そういった機器に予め搭載されているソフトウエアも、ファームウエアです。
これらのソフトウエアは、ROM に焼き込まれ(予め記憶され)ています。 ですから、PC の様に、ブートストラップという概念を意識することも無く、 電源を投入すれば、すぐに利用できます。 すぐに利用できる反面、 ハードウエアの一部を交換・拡張したり、 OS や、アプリケーションを、 自分で選択してインストール・利用することが出来ません。
これを解り易く便利と考えるか、不自由で使い物にならないと考えるか、 それこそ、個人の自由でしょう。 最終目的を考えれば、必要な文章が、ワープロ専用機であれ、 PC 上の、Word や、 Designer、LaTeX で作られていても、 目的は達成できるのです。 しかし、問題は、そこまでに達する手法や、そして一番大切な、 利用する人の気持ち良さだと僕は思います。
ちょっと話が脱線気味になってきました。 BIOS の説明に、何故、ファームウエアを混ぜたかと言うと、 ROM に記憶されているプログラムのことが、 BIOS なのだという、一部の人々の誤解に巻き込まれて欲しくなかったからです。
もう、大丈夫ですね?