Top > Knowledge > Parts > チップセット

チップセット

というわけで、CPU + メモリという組み合わせ。そしてそれ以外のデバイス(部品、装置)が CPU とメモリとどのような関係でつながっているかというのを説明してきました。
どのような新しいデバイスも、I/O というものでつながれているのです。
ではそれを実際に目で確かめてみましょう。といっても物理的につながっている様子を確認するのはなかなか難しいので、ソフトウェアで確認します。
Windows には自分のパソコンにどのようなデバイスが組み込まれているかを知る手段が用意されています。【スタート→アクセサリ→システム ツール→システム情報】というヤツです。

システム情報.png

ここには様々なハードウェア/ソフトウェアに関する情報を収集することができます。
そこの【ハードウェア リソース】と言う所を開いてみましょう。すると以下のような項目が現れると思います。

  • 競合/共有
  • DMA
  • 手動インストールのハードウェア
  • I/O
  • IRQ
  • メモリ

さっき上で説明したのと同じ単語があるのが解ると思います。IRQ とは割り込みのことです。
まず I/O をクリックしてみましょう。

IO.png

ここには I/O ポートを通じて接続されている様々なデバイスが表示されます。
左側にある数値が【ポート番号】というもので、I/O ポート XXXX 番と CPU は指定して目的のデバイスにアクセスするのです。

次に IRQ を見てみましょう。これは割り込みのことです。

IRQ.png

たとえばキーボードのキーを何か押すと、割り込み 1 番が発生します。すると CPU は「あ、キーボードが押されたのか。じゃぁ何のキーが押されたのかな?」と I/O ポート 0x60 や 0x64 にアクセスして押されたキーの情報をとってくるのです。0x とは C というプログラム言語で 16 進数を表すものです。0x から始まっていたらその後に続く数字は 16 進数と言うことになります。

メモリを見てみましょう。これは Memory Mapped I/O のメモリ空間です(全てがそうではありませんが)。ここに記されているメモリにアクセスすると、そこにつながっているデバイスと情報をやりとりできるのです。

Memory.png

左の 0x80000000 とか書いてあるのはメモリ・アドレスと言います。これは 0 から始まって行きます。たとえば 128 メガバイトのメモリを持っている場合、0x00000000 ~ 0x08000000 までのアドレスを持っています。 そしてここで表示されるアドレスというのは基本的に搭載メモリとかぶらない位置に来るようになっています。なぜかというと、これはデバイスとやりとりするために【便宜上メモリに見立てている】だけであって、本当のメモリではないのですから。
なので本当のメモリとかぶると、本当のメモリの部分は無視され、この Memory Mapped I/O の方が優先されてしまいます。
32bit 環境で 4 ギガバイトのメモリを搭載すると、3.5 ギガバイトしか認識しなかったりします。残りの 512 メガバイトはこのような Memory Mapped I/O に利用されてしまうのです。これを回避するには、64bit 環境にするしかありません。
どうして 32bit だと 4 ギガバイトまでなのかというと、32bit で表せる数字は 2 の 32 乗(4294967296 バイト)で 4 ギガバイトが限界なのです。
そこでハードウェアを設計する場合、普段使わないであろう 4 ギガバイト目に近い部分に Memory Mapped I/O を配置するのです(Windows では 2 ギガバイト目以上を使用しているようです)。 でもよく見ると、0xA0000 なんてすごい低い数字もありますね。ここはどう見ても 1 メガバイト以下の場所です(1MB は 1048510 バイトで 16 進数では 0x100000 です)。ここは実はまだメインメモリが 1 メガバイト時代の名残なのです。その昔は 1 メガバイトまでしか搭載できない時期がありました(1980 年代)。ということは上の考え方で言えば 1 メガバイト目に近い部分(正確には 640 キロバイト目以上)に Memory Mapped I/O を配置する必要があります。
というわけで、その頃のがまだ残っているのですね。

さて、ここまでが前振り(ぇー)。
今回説明するチップセットというのは、今までの前振りに大いに関係する部品です。そもそもチップセットは何をするものかというと、コンピュータに必要な様々なデバイス(装置、部品)を相互接続し、管理し、スケジュールするものです。
簡単なコンピュータや昔のパソコンはチップセットなどというものは必要ありませんでした。I/O コントローラや割り込み制御、 DMA 、メモリコントローラと言われる調整チップが別々に存在し、それらが CPU に接続されていました。
CPU がどのタイミングでデバイスにアクセスするかは、CPU 自身が管理すればよいことでした。
しかしながら上で見てもらったように、今のパソコンはたくさんのデバイスが接続されていてます。しかもそれぞれが高速にコミュニケーションをとらなければなりません。そこでチップセットというものが必要になってきたのです。*1
たとえば I/O のところで出た例に、DMA と CPU のメモリの取り合いが出てきました。
他にもハードディスクから読み出したデータをメモリに転送してる間に、グラフィック・ボードに次から次へと表示したいデータを渡し、さらに音楽のデータをサウンド・ボードに送り、動かされたマウスの移動量を読み取る……パソコンは常にいろいろな事を同時にいくつも実行しています。
その処理に CPU が大きく関わっているのは言うまでもありませんが、速度を稼ぐために周辺のデバイスも同時に動いているのです。そうなってくると、どの処理が終了していてどの処理はまだやりかけで、メモリは今どのデバイスとアクセスしていて……なんていういわゆるスケジュール管理が必要になってくるのです。
そこでその I/O とメモリと CPU の仕事の割り振りの面倒を見るのがチップセットというわけです。

チップセットには今までバラバラだった DMA 、割り込み制御、メモリコントローラ*2などといったものが一つの機能に集約され、 CPU とそれ以外のデバイス(メモリも含む)をよりスムーズに、素早くアクセスできるようにします。そして CPU に対して「今はこれができる」「これはまだダメ」「どこどこのメモリがあいたよ」と教えてくれるのです。いわばマネージャーさんと言えるでしょう。
そしてこのチップセットの役割は年々重要になってきています。
というのも並列処理が必要不可欠になりつつあるからです。いまや CPU は一つの CPU のなかに複数の CPU が入っています。となると、CPU 同士ですでにメモリやデバイスの取り合いが起きてしまうのです。
しかも速度は年々速くなっていきます。もはやパソコンではチップセットなしの構成など考えられないでしょう。

Windows マシンではこれはノースブリッヂ、サウスブリッヂという二つのチップ( CPU )に別れています。ノースブリッヂは CPU とメモリに近く、より高速なデータのやりとりを管理します。ここにはメモリ、CPU そして PCI Express なんかが接続されます。そしてサウスブリッヂには PCI、IDE、USB、IEEE1394 なんかが接続されています。ノースブリッヂとサウスブリッヂの間には超高速な線でつながっていて、どのような要求にも耐えうるように設計されています。

ここで【線】という言葉が出てきました。今までの説明でも「つながっている」という表現が出てきたと思います。
説明が複雑になるので今までは触れませんでしたが、ここでついに線の正体が出てきます。
CPU もチップセットもメモリも I/O につながるデバイスもみんな機械で、しかも電気で動くので、それを結びつけているのは【線】なわけです。この線のことをパソコンでは【バス】と言います。現在では高速化のために一言にバスといっても色々あります(チャネル、ポイントツーポイント、スイッチなど)。
バスには CPU とクリティカルな通信を行う【内部バス】と、転送速度の遅い【外部バス】の二つに分かれます。
チップセットのノースブリッジに接続されるのが【内部バス】、サウスブリッジに接続されるのが【外部バス】というわけですね。

バスはそのまま【バス線】と言って、文字通り線なワケですが 1bit に 1 本必要です。
しかもバスには実際のデータが通るバス(データ・バス)と、どの場所のデータが欲しいという場所を指し示すバス(アドレス・バス)の 2 種類があります。つまり 32bit CPU の場合、64 本ものバス線が必要になるのです。
PC を自作していなくても、よくテレビなんかで半導体の画像をみることがあると思いますが、半導体の周りにいっぱい金属の足が飛び出しているのを見たことはありませんか? 最近の CPU は半導体の下一面に足が出ています(Intel の CPU は最近は足ではなくなりましたが*3)。あれ 1 本 1 本に線が接続されるのです。そして、今や CPU から生えている足の数はたとえば Core 2 Duo という Intel の 2006 年最新 CPU で 775 本もあるのです。

この何百本もある線をそれぞれのデバイスに接続し、どの線が使われていて、どの線が空いているのかというのを 1 秒間に何千万回もチェックし、スケジューリングしているのがチップセットなのです。


*1 このチップセットの考え方及び技術はスーパーコンピュータで最初に用いられました。
*2 AMD の CPU の場合、メモリコントローラは CPU の方に内蔵されています
*3 LGA パッケージといいます。ちなみに足の方を BGA パッケージと言います。

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: (5688d)