PC 教室ソフトウエアBIOS

ソフトウエア~縁の下の力持ち(BIOS とファームウエア)

BIOS は、 Basical Input Output System、もしくは、 Basical Input Output Software の略です。 基本的な入出力を担う部分、ということです。 基本的な入出力と表現しましたが、その入出力の対象となる物は、外部装置のことです。

ディスプレイ、キーボード、二次記憶装置(FDD や、 HDD)など、 そういった外部装置との、基本的な入出力(情報のやり取り)を行う上で、 ハードウエア的な固有の特徴・特性を隠しつつ、 入出力をサポートしてくれる、ソフトウエア上の論理的な機能ブロック、 それが、BIOS です。

なんとか一つの文章で、 BIOS というソフトウエア上の論理的な存在を表現していますが、 なかなか、この文章では、実感を伴って理解するの難しいでしょう。 もう少し、突っ込んでいきます。

ハードウエア偏~CPU の部分で、 SCSI HDD からの読み込み動作に付いて触れました。 読み込み動作は、こういう流れでしたね?

  1. CPU は、SCSI コントローラに、 読み込みたい最初のセクター番号と、読みたいデータのサイズをセクター数で指定して、 「データ、ちょうだいな」とお願いする。
  2. そのお願いは、CPU が、 SCSI コントローラに、 そのお願いを意味するデータを書き込むことで伝わる。
  3. そのお願いを受けて、SCSI コントローラは、 「わかったよ~ん」とか、「今は駄目」とか、「そんなお願い知らないっ」とか、 お返事をする。
  4. CPU は、 SCSI コントローラからの読み込みで、 SCSI コントローラからの返事が何なのかを知る。
  5. CPU は、SCSI コントローラからのお返事によって、 次の動作を決める。
  6. もし、SCSI コントローラからのお返事が、 「わかったよ~ん」だったなら、SCSI コントローラを介して、 HDD に記録されたデータを読み込む。
  7. もし、SCSI コントローラからのお返事が、 「今は駄目」だったなら、「仕方ねぇなぁ~、ちょっと待ってから、 もう一回お願いしちゃお」という動作のための準備をする。
  8. もし、SCSI コントローラからのお返事が、 それ以外だったら、「SCSI コントローラに怒られちゃった。 こんな事言ってまっせ」みたいなエラーメッセージをディスプレイに表示して、 「どげんします?」と尋ねる。

ここに箇条書きした、HDD からの読み込み動作は、 実は、抽象的に書いていたのです。 それは、CPU から見た、 HDD からのデータの読み込みという動作は、 こういった流れを経て行われているということを理解してもらいたかったからです。

実際、CPUが、 SCSI コントローラに対して行っている作業は、 ディジタル回路という物を理解していない人にとっては、 意味不明で、何をやっているのか、理解し難いものでしょう。 ただし、CPU をプログラミングして、 HDD からデータを読み込むようにさせようとしている、 プログラマーが考えていることを、意味合いとして、言葉や文章で表現すると、 箇条書きにしている内容になるのです。

しかし、HDD からデータを読み込もうとする以上、 たとえ意味不明に感じられることであれ、 CPUHDD コントローラに対して、 「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 に記憶され、搭載されてはいます。

PCOS として、 MS-DOS や、PC-DOS を使っていた頃は、 ハードウエアをある程度隠蔽してくれる BIOS のポリシーの恩恵を受ける度合いがとても大きかったのです。 しかし、Windows を利用する場合は、 MS-DOS や、PC-DOS を使っていた頃と比べると、 それほどまでには大きくないです。 ましてや、Windows NT や、 PC/AT アーキテクチャで動作する UnixFreeBSDLinux など)では、 OS の起動の部分ぐらいでしか、 BIOS を使っていません。 そのことに関しては、OSで触れることにしましょう。

さて、このページのタイトルは、 BIOS とファームウエアでした。 ファームウエア(Firmware)に触れていません。 ファームウエアというのは、PC の世界で言えば、 HDD や、CD-ROM ドライブ、 プリンターや、スキャナなどに搭載されているソフトウエアのことです。

もっと言えば、最近の家電機器、 テレビ、ビデオ、コンポにや、電気湯沸しポット、炊飯器、 電話や、ファックス、エレクトーンや、電子ピアノ... そうです。こういった機器にも、最近は、CPU が搭載せれているから、 それぞれの機器の用途向けに、ソフトウエアも搭載されていると、 ソフトウエアの概要で述べましたね。 携帯電話(EzWeb や、i-modei アプリに対応しているものも含めて)や、 ワープロ専用機なんて言うのも、そうです。 そういった機器に予め搭載されているソフトウエアも、ファームウエアです。

これらのソフトウエアは、ROM に焼き込まれ(予め記憶され)ています。 ですから、PC の様に、ブートストラップという概念を意識することも無く、 電源を投入すれば、すぐに利用できます。 すぐに利用できる反面、 ハードウエアの一部を交換・拡張したり、 OS や、アプリケーションを、 自分で選択してインストール・利用することが出来ません。

これを解り易く便利と考えるか、不自由で使い物にならないと考えるか、 それこそ、個人の自由でしょう。 最終目的を考えれば、必要な文章が、ワープロ専用機であれ、 PC 上の、Word や、 DesignerLaTeX で作られていても、 目的は達成できるのです。 しかし、問題は、そこまでに達する手法や、そして一番大切な、 利用する人の気持ち良さだと僕は思います。

ちょっと話が脱線気味になってきました。 BIOS の説明に、何故、ファームウエアを混ぜたかと言うと、 ROM に記憶されているプログラムのことが、 BIOS なのだという、一部の人々の誤解に巻き込まれて欲しくなかったからです。

もう、大丈夫ですね?