12/08/2012

x86アーキテクチャを語る 〜ハードウェア編 その1〜

久々に続き書く気になりました。よって書きます。


今日は、ハードウェア構成の歴史的な遷移を語ろうかなと思います。

最近のPCの構成要素はCPU、PCHの2つのチップが中心となる構成になっています。
つい2年くらい前まではCPU、MCH(ノースブリッジ)、ICH(サウスブリッジ)の3チップ構成でした。

でもね、シリコンの集積技術の向上でチップの統合が進んでますが、元祖PC/ATは、もう何チップあるのか数えるのがメンドクサイくらいチップ乗ってます。もうゲジゲジ(DIP)だらけです。

で、例えば、現在はPCHに内蔵されている割り込みコントローラ(8259A)やDMAコントローラ(8237A)、タイマー(8253)、ディスクコントローラは全部別チップだったのです。
CPUの数値演算コプロセッサ(80287)も別チップだし。

今日のポイントはここんとこです。
つまり、当時のチップの互換性を維持してPCHに統合されているんです。そうしないとDOSとかブートローダとか古い仕組みに依存しているソフトは動きませんからね。

当時の設計者が別々のチップを組み合わせてPC/ATを設計したわけですが、これが互換性維持のために約30年もの間、継承されているというわけです。うーーん興味深いですねえ。
なので現在のチップセットでシステム設計とかやってる人は、そこんとこを考慮に入れておくべきです。

例えば割り込みコントローラとか、当時は1つのチップでは事足りなかったので8259Aを2つ使って合計16本の割り込みを扱えるように設計してました。ですが、実はIRQ2はカスケード接続に使っていて、デバイス用には使えなかったりします。
さらに、当時の設計でタイマーはIRQ0とかキーボードはIRQ1とかに繋いでいたので、これを変えると古いソフトが動かなくなるちゅうわけで、現在でも踏襲されていたりします。
で、これがこのまんま現在のPCHに入っています。現在の技術を使えばカスケード接続なんて回りくどいことをせんでも、いくらでもシンプルかつ高機能にできるのに、当時の仕様のまま入ってるんです。

なので、x86でハード見るときは、なんだ、このアホ仕様と思うことも多いと思いますが、そんなときは、古いハード仕様に立ち返って理解して行きましょう。というはなし。
割り込み周りはかなり複雑なのでまたそのうち詳しく語ろうと思います(未定)。


今日はここまでにしときます。なんかいまひとつまとまりに欠ける気もするけど、To Be Continued.
ああ、あと、なんか特定のテーマについて語ってほしいリクエストがあれば優先的に書くかもですので、気軽にコメントください。

0 件のコメント:

コメントを投稿