日別アーカイブ: 2003/06/18

日記6/17

今日は早めに帰ってコンピュータの環境を整えようと思っていたんですが。突如飲み会になってしまって今帰ってきました。でも、今日はそれでよかったんでしょうきっと。

そういえば、IRQの説明をしたほうがいいと思ったんですが、今日はちょっと持たないかも(笑)。持つところまでやりましょうか。

ちょっと遠回りします。

「コンピュータと定義されるためには何が必要か」。実は、たった二つです。それは、CPUとメモリ。正確には、今のコンピュータと呼ばれているものは「ノイマン式コンピュータ」なんですがその辺はワタシもよく分かっていないので省略。誰か詳しく調べてください(笑)。

コンピュータというものは基本的に演算をするものです。ですから、演算を実行するCPU(Central Processing Unit:中央演算装置)と、演算の元になるデータがあり、さらに演算の結果を書き出すメモリがあればコンピュータとして成立はするわけです。分かりやすくいうと(さらにこんがらがるかもしれないけど)コンピュータは基本的にメモリにあるものしか操作できないんです。貴方の「Microsoft Word」や「Excel」はハードディスクに格納されているわけですが、実際にコンピュータがこれらを起動する際には必ずメモリに読み込んでから実行しているのです。ただ、メモリ(不揮発性メモリ)は電源を切ると内容が消えてしまうため、(人間の使う都合で)内容を残すためにハードディスクやらフロッピーディスクがあるわけです。貴方のコンピュータの中に格納されているアプリケーションやデータは貴方が欲しいから残っているのであり、それが残っていようが残っていまいがコンピュータ自身にはどうでもいいことなのです。ですからメモリは別名「主記憶装置」で、それ以外のすべて(ハードディスク、フロッピーディスク、MO、CD、などなど)は「補助記憶装置」と呼びます。

で、使う者(=人間)の都合にあわせてコンピュータにはI/O(Input Output:入出力)というものがあります。一番基本的なのは人間のコマンドなどを直接受け付けるキーボード、そして人間にわかりやすい形で出力をするモニター。ほかにもプリンタやモデムなどなどが「入出力」に当たります。要するに「コンピュータが処理するべきデータを与え、処理された結果のデータを出す」全てのものが「I/O」と呼ばれるわけです。

かなり遠回りをしました。で、IRQですが、正式には「Interrupt Request」です。直訳して「割り込み要求」。I/Oの「入力」からデータが入ってきたとき、データをコンピュータに与える装置はCPUがそのとき行っている処理に割り込んで「おい、オレッちのデータ受け取ってくれよ」と要求してデータを与えます。そうするとCPUはそのデータを受け取り、今まで行っていた処理を続け、必要に応じて受け取ったデータを使用します。で、割り込み要求はいつでも誰でも出せるわけではなく、総数16個と決まっています。装置それぞれ0?15の数字が割り当てられるのです。

「16個もあるならいいじゃん」とか思うでしょうか。ところが、一般的なWindowsマシンを起動したとには
・システムタイマ
・リアルタイムクロック
・シリアルポート1
・シリアルポート2
・パラレルポート
・PS/2マウス
・キーボード
・浮動小数点演算プロセッサ
・プライマリIDE
・セカンダリIDE
・グラフィックカード
・サウンド
・USB
と、13個くらいは既に埋まっているのです(個々の説明はしないけど)。ここからさらに拡張カードなどを挿した場合には、IRQが足りなくなる場合があります(最近はほとんどのマシンにモデムかネットワークカードがあるし)。

で、Windows98から考え出されたのが「IRQシェアリング(ステアリング)」です。ひとつのIRQをいくつかの装置で共有して、そのやりとりや調停などはOSに任せよう、と。初期は全てのカードが必ずこれに対応できているわけではなかったのでいろいろと不具合がおきましたが、最近はまあマシになっています?

で、昨日の話ですが、いくらなんでも5個とか6個の装置をひとつのIRQでまかなうのはマズイだろうと。しかもそのうちひとつはグラフィックカードで一番データ量が多い。

だめもう限界(泣)寝ます