2004年5月12日水曜日

CPUとBIOSと私

先日も書いたのだが、最近、旧世界のアーキテクチャPC-9801について調べたりしていた。(現実逃避?)
 その発端は、「同じCPUを使いながら何故PC-9801とIBM PCは違うのだろうか?」という点だ。

 コンピュータの基本は、情報を処理するCPUと予め処理する情報や処理方法の情報をしまっておく記憶装置である。この段階ではその構造はCPU次第なので、CPUが同じなら、そのCPUで動く実行ファイルはどのコンピュータでも動く。
 しかし、そのままでは情報を取り入れることも取り出すことも出来ないので、脳みそだけで生きてるのと同じ。そこで、情報を出し入れするための装置とつなぐことになる。そして、これらの装置をCPUがどうやって認識し、会話する方法をどうするかという点が、それぞれのパソコンの基本的な差になってくるのだ。
 この、周辺のあらゆる機器との最低限の会話を実現するプログラム、パソコンの基礎中の基礎のプログラムをBIOSという。OSやドライバやライブラリ、古いアプリケーションなどは、このBIOSを経由して周辺機器と会話する。さらに、アプリケーションはOSやドライバやライブラリなどを通して周辺機器を利用することになる。
 このBIOSの違い(そしてそのベースになる周辺機器との会話経路の構造の違い)が、CPUが同じでもアーキテクチャが違えば(場合によっては同じアーキテクチャでも)互換性が無くなる要因の一つなのだ。
 もし、同じCPUのパソコン上で別のアーキテクチャ用のプログラムを動かそうと考えたとき、このBIOSおよび基礎的な入出力部分をエミュレートすることが必要になる。
 別な種類のCPUマシンの場合はそれに加えて、プログラムが求めるCPUへの命令や帰ってきた答えを、動かすマシン側のCPUがわかる状態に翻訳する必要も出てくる。
 MacintoshがPowerMacに切り替わったとき、CPUもMC680x0からPowerPCに変わったため、従来のMacOSやアプリケーションを使えるようにするため、CPUのエミュレータを搭載した。これの出来が結構良かったことがPowerMacへの以降をスムーズにしたと言われている。その過程で当然BIOSの変更なども行われたと思われるが、その変更の幅は基本のアーキテクチャの変更が行われなかったため、それほど大きくなくて済んだのも、エミュレータの完成度を高めることが出来た要因と言えるだろう。
 この伝でいけば、PC-9801でも(他のあらゆる過去の魅力的なマシン達でも。)別な新しい種類のCPUを使いつつ、過去の資産を有効に使えるシリーズ展開が出来たのかも。少なくとも、論理的には不可能では無かったということがわかった。ま、言うほど簡単でもないだろうが。

 …別に私は、PC-9801のファンじゃないんだけどね。

0 件のコメント:

コメントを投稿