コンピュータ講座 応用編 会報トップへ戻る
本ページの内容をPDFファイルでダウンロードできます >> PDFダウンロード
「コンピュータ講座 応用編」でのご意見やご要望をお寄せください >> アンケート
第1回  |  第2回  |  第3回  |  第4回  |  第5回  |  第6回  |  第7回  |  第8回  |  第9回  |  第10回  |  第11回  |  第12回

第4回 バスの基礎知識

マザーボード上のバスは、PCの動脈です。
実際のマザーボード上では複数の線が平行に走る電気配線にしか見えないバスですが、PCの処理速度が高速化されるにつれて、進化し、動作も複雑になっています。
今回からは三回にわたってこの「バス」について解説します。一回目はバスの基礎的な知識、二回目でCPUの内部バスと外部バス、三回目で拡張バスについて解説します。


バスとは何か

バスの新しい技術を知るために知っておきたい基礎的な知識を紹介します。PC全体が高速化する中で、内部のデータ伝送路であるバスも大きく変化しています。最新のバスの姿を交えながらバスの基礎的な知識を説明します。

バスは信号線の束

アドレスバス、データバス、システムバス、メモリバス、PCIバス、PCI Express、USB(ユニバーサルシリアルバス)、FSB(フロントサイドバス)など、PCには実に多くのバスと呼ばれる部分があります。実は、PCのマザーボード上の配線は、電源やビデオ、オーディオなどの一部を除いてほとんどがバス配線になっています。

バスについては前回CPUの説明の中で、データをやり取りするための信号線の束と説明しましたが、もう少し詳しく述べると、「バスとは、複数の回路や装置、機器間を結び、データなどのやりとりのために共有される伝送路」です。次の図のように、複数の装置(図中のA〜D)でひとつの伝送路を共有します。伝送路というのは信号の通り道です。

ひとつのバス上で、AからBへ(青線)、逆にBからAへ(緑線)、CからAへ(赤線)というようにデータを送ったり、受けたりします。もちろん複数の装置が同時に送信することはできません。クロックに同期させて、ある瞬間にはAからBへのデータだけというように1種類のデータだけがバスに載せられます。バスコントローラーが、どの装置のデータをどのタイミングでバスに載せるかをコントロールしています。32本の信号線を用意すれば1クロックで32ビットのデータを送ることができます。このようにクロックに同期させて、複数のデータを同時並行して転送する方法をパラレル転送といいます。PC内部では多くのバスが、パラレル転送によりデータのやりとりを行っています。

バスを知るためのキーワード

バスの性能を表すキーワードが「バス幅」、「バスクロック」、「帯域」です。
1クロックでやりとりできるデータ量を「バス幅」といいます。前項の例のように32ビットが一度に送れるバスのバス幅を32ビットと表します。バスをコントロールするためのクロックを「バスクロック」といいます。バス上の信号はこのクロックに同期します。同じバスクロックであれば、バス幅が広いほど、一度に多くのデータを送ることができますので、高速な転送が可能です。1秒間に何バイトのデータをやりとりできるかを、「帯域」といい、データの転送速度を示します。単位は、B/sec(バイト/秒)です。例えば、Pentium D820(2.8GHz)は、データバス幅が64ビット、チップセットとのやりとりを行うバスクロックは800MHzです。この場合の帯域は次のように計算します。

64ビット×800×106(Hz)÷8(ビット)=6.4×109= 6.4GB/sec(ギガバイト・秒)

帯域の数値が大きければ大きいほど高速なバスということになり、これを帯域が広いといいます。Pentium3では、メモリとCPU間を結ぶバスのクロックは最高133MHzでした。したがって、帯域は最大値で1.06GB/secとなり、クロック1.4GHzでデータバス幅64ビットの処理能力を持つCPUの性能をフルに発揮することはできません。このように、PC全体の性能向上の阻害要因となる状態をボトルネックといいます。なお、CPUからメモリへのバスが性能上の制限になるというボトルネックのことを特に「フォンノイマンボトルネック」と呼び、ノイマン型コンピュータ特有の弱点とされています。
2000年11月に発売されたPentium4(Willametteコア)からは、バスクロックが400MHzに引き上げられ、いっきに帯域が広がりました。2006年8月現在、バスクロックは1.06GHzが最高です。
なお、この講座では、bps(ビット/秒、bが小文字)というよく似た単位も使います。1秒あたり何ビットを転送できるかを表し、帯域ではなくデータ転送速度と呼びます。

いろいろなバス

マザーボード上は多くのバス配線があり、それぞれ名称、規格、信号線の本数などが異なっています。それらを概説します。

バスを分類する

マザーボード上には、次のようなバスが搭載されています。いずれも複数の機器間で伝送路を共有してデータのやりとりをしています。

  1. CPUとチップセットやメモリを結ぶバス
  2. チップセットどうしを結ぶバス
  3. チップセットと拡張スロットを結ぶバス
  4. チップセットと外部の周辺機器を結ぶバス(USB、PCMCIA、IEEE1394、EIA232など)
  5. チップセットとPC内部の周辺機器を結ぶバス(IDE、s-ATA、SCSIなど)

上記のうち、5.については、HDDやMO、DVDドライブなど、ほとんどの場合、外部の補助記憶装置に接続されます。また、IDE(アイディーイー)、s-ATA(シリアルエーティーエー)、SCSI(スカジー)など、これらは一般にバスというよりも、インターフェースの規格として広く知られていますので、別の機会に説明する予定です。また、拡張スロットに取り付けられた拡張基板に接続されるバス(GPIBなど)や拡張基板上のバス(グラフィック基板上のRAMBUSなど)については、今回は触れません。 上図の1.から4.までのバスを大別すると、内部バス、外部バス、拡張バスに分けることができます。それぞれの概要を説明します。

内部バスと外部バス

「内部バス」はCPU内部の回路間を結ぶ伝送路です。CPU内部の各種レジスタ群、命令レジスタ、汎用レジスタ、アキュムレータ(演算処理装置)、キャッシュメモリなどとデータバスを結ぶ伝送路です。CPUの処理速度は内部バスのバス幅に大きく左右されますので、8ビット、16ビットなど、バス幅がCPUの性能指標としてよく使われます。
「外部バス」は、CPUと外部のメモリやチップセットの間でデータをやり取りするためのバスです。CPUとチップセットを結ぶFSB(フロントサイドバス)、CPUとメインメモリを結ぶメモリバスを外部バスと呼びます。
内部バスと外部バスは、CPUに最も近い場所に位置し、CPUの動作と密接なつながりを持っています。データバスはCPUの内部バスと接続され、アドレスバスはCPUのアドレスレジスタと、コントロールバスはCPUの制御ユニットと接続されています。そしてこれら3つのバスはすべてチップセットに接続され、さらにチップセットからメインメモリに接続されています。
次回の「PCの大動脈、内部バスと外部バス」では、CPUやチップセット、メモリの話を含めて、内部バスと外部バスを解説します。

拡張バス

「拡張バス」は、PCの機能を拡張するために、外部の周辺機器とPC間を結ぶためのバスです。拡張バスとしてはPCIスロットやPCI Expressスロットが一般的です。これらの拡張スロットは、それぞれ、PCIバスやPCI Expressの伝送路に接続するための差し込み口です。PCIバスもPCI Expressもチップセットに接続されています。
PCIバスは現在ほとんどのPCに搭載されています。もはや新しい規格とは言えませんが、まだまだ対応する拡張カードは豊富に出回っています。
PCI Expressは第3世代のI/Oと呼ばれる新しい拡張伝送路で、ポイントトゥーポイント(Point to Point:1対1)配線とシリアル転送方式を採用しています。ポイントトゥーポイント配線はバスではありませんが、もともとPCI ExpressはPCIバスを拡張して作られた規格なので、本講座では拡張バスの1つとして扱います。
また、USB(ユニバーサルシリアルバス)やIEEE1394バスは、PCに装備された専用のポート(コネクタ)に差し込むだけで、手軽に利用できる拡張バスとしてデジカメやMOなど外部周辺機器との接続に利用されています。
次々回の「PCをより強力にする、拡張バス」では、拡張バスの歴史、PCI Express、USB、これからの拡張バスの目指す技術的な方向性を解説します。

データの伝送方式

接続する装置やバスの用途に応じてバス上のデータ伝送方式が異なります。データの伝送方式によってバスを分類することができます。

マスタースレーブ方式

バスは複数の機器が伝送経路を共有するため、クロックに合わせて信号を交通整理する必要があります。この交通整理をするのが、バスコントローラーです。
マスタースレーブ方式は、一台のバスコントローラーがコマンドバスを通じてバス全体を管理します。AがBからデータを受け取るときには、バスコントローラーがコマンドバスを経由してBに送信要求を送ります。送信要求を受け取ったBは、データバスを経由してAにデータを送信します。

コントロール機能もバス自体もシンプルな方式で、処理速度が低速なうちは有用でした。
しかし、PCが高速になり、処理量が増えてくると、バスコントローラーの負荷が高くなり、処理が遅くなります。また、接続された装置がバスコントローラーからの要求でのみ動作するものだけでなく、ネットワークカードやモデムのように外部からの不定期な入力を伴う場合にはバスコントローラーからの一方通行では機能しません。そこで、バスコントローラーが定期的に各装置の状態を調べる方法(ポーリング)や割り込み線でバスコントローラーに通知する方法が開発されましたが、やがて次のDMA方式にとって代わられることになります。

DMA(ダイレクトメモリアクセス)方式

DMA方式は、データ転送を、接続された装置からメモリへ、または装置どうしなど、CPUを介さずに行う方法です。
AがBからデータを受け取るときには、

  1. Aからバスコントローラーを通じてBに転送要求を送ります。
  2. Bは自分のバッファ(メモリ)に蓄えた1回分のデータをデータバスに送信します。
  3. Aは受け取ったデータを自分のバッファに格納しますが、バッファはメインメモリにマッピングされており、そのままメインメモリに書き込まれます。
  4. 転送が終了すると、バスコントローラーはCPUに転送終了を通知します。

データ転送にCPUが関与しないので、大容量のデータ転送でもCPUに負荷がかからず、PC全体の性能に影響しません。しかも、データの転送にバースト転送と呼ばれるひとかたまりのデータをまとめて転送する方式をとるので高速に転送することができます。
しかし、この方式はデータを送り出す側の負担が意外に大きく、バースト転送のためのデータをバッファに溜めながら、ウェート、再開のシーケンスを細かくバスコントローラーに送信しながら、実際のデータを送り出すという煩雑な操作が必要になります。

バスマスター方式

前項の問題を解決するために、各装置がコントローラーを持つ方式が登場します。この方式をマルチコントローラーといいますが、バスマスター方式の呼称の方が一般的になっています。各装置のコントローラーをDMAC(Direct Memory Access Controller:ダイレクトメモリアクセスコントローラー)といいます。

データを送り出す装置のDMACが、バスの管理権を持つバスマスターとなり、バスコントローラーに送信要求を送ります。バスコントローラーは、複数のバスマスターから同時に送信要求があったときの調停作業を行います。この方式はPCIバスでも採用されています。
なお、バスマスターはDMA方式の転送を管理するだけで、それ以外はマスタースレーブ方式で動作します。バスコントローラーを持たない装置もあり、その場合もDMA方式での転送は行われません。

二つの転送方式

信号線を通じてデータを転送する方法には、大別すると二通りあります。送りたいデータのビット数分の信号線を用意して1クロックで同時に複数のビットを並列に送受信するパラレル転送と、1本の信号線で1ビットずつ送受信するシリアル転送です。

パラレル転送

8ビットなり16ビットのデータを送信するのに、ビット数分の信号線を用意して、クロックに同期させて送信すれば、1クロックで8ビットなり16ビットを送受信できます。
1MHzのバスクロックで8本の信号線を使えば8Mbpsですが、同じクロックで信号線を16本にすればデータ量は倍の16Mbpsになります。つまり、クロックを上げずにデータ転送量を確保できるメリットがあります。
また、CPUの内部バスや外部バスがパラレル転送である関係で、CPUと接続されるチップセットやメモリバスもパラレル転送となっています。それに合わせて他のバスもパラレル転送のバスにしておくことで処理がシンプルにつながります。シリアル−パラレルまたはその逆の変換も不要で、回路がシンプルで、変換による効率低下の心配がありません。それが、PC上のバスの多くがパラレル転送になっている理由です。

シリアル転送

シリアル転送は、1本の信号線を使って1ビットずつデータを転送する方式です。パラレル転送に比べて転送速度が遅いといわれますが、信号線の本数が少なく、取り回しのよいケーブルが使用できます。接続性がよく、最大伝送距離も長いので、PCと外部周辺機器との接続に使用されています。モデムなどとの接続に使われるRS232Cが最も普及していますが、現在では、より高速で使い勝手のよいUSB(ユニバーサルシリアルバス)の普及が進んでいます。USB以外にも外部との接続に使用されるIrDAやIEEE 1394などもシリアル転送方式を採用しています。
PC内部はほとんどがパラレル転送ですが、最近では、HDDインターフェースのs-ATA(シリアルエーティーエー)やPCI Expressなどシリアル転送方式が増えています。

バス技術のこれから

CPU、メモリ、チップセットの高速化に伴って、マザーボード上のバスも広帯域化しています。しかし、マルチコアCPUやDDRメモリのようにいっきに倍近い性能向上を実現する場合があり、従来の技術の延長では限界が見えてきました。

高速化への対応の限界

現在のバスのように複数の機器で伝送路を共有する形態では、伝送速度を上げにくくなってきています。伝送速度を上げるには、「バス幅を広くする」か「バスクロックを上げる」のどちらかになります。
バス幅を増やせば効果的に速度を上げることができるのですが、現実問題として配線が難しくなります。今やマザーボードは裏も表も迷路のようにびっしりと配線パターンで埋まっています。高速なクロックで動作するパラレル転送のバスにおいては、各ビットの信号線間で信号の遅れが生じないように配線の長さを揃えなくてはなりません。これを等長配線といいます。下の写真のように、配線パターンが迷路のように入り組んでいるのは、1本のバス上の各信号線が同じ長さになるようにするためです。現状ではこうした配線はすべて専用ツールで作られますが、物理的な面積が限られる中で、バス幅を増やし続けるのは容易なことではなく、平行する信号線が干渉し合うなどの副作用も出やすくなります。

バスクロックを上げる方法もありますが、800MHzや1.06GHzなどの高速なクロックでは、バスに接続された機器が増えると波形が乱れるという問題が生じます(※)。バスクロックが高速になればなるほど、接続される機器が多くなればなるほど顕著になり、正確なデータ伝送が難しくなります。
今後、さらにバスクロックを上げると、現在の伝送路を共有する形態のバスでは限界が見えてきます。こうした高速化へのソリューションとして注目を浴びているのが、シリアル転送です。

※超高速でオンとオフを繰り返すと、立ち上がり・立ち下がりの遅延、立ち上げ時に予定の電圧を超える(オーバーシュート)、立ち下げ時に下がりすぎる(アンダーシュート)、その後規定電圧に戻ろうとする(リングバック)ことにより波形が乱れる。接続機器が増えると電気的な負荷が大きくなり、いっそう波形が乱れる。

次世代はシリアル、そして伝送路は光へ

GHzのオーダーでは高速化によるパラレル転送の問題点が表面化してきました。
バス上を平行して走る信号線間の干渉や、同じクロックで動作していても信号線間でずれが生じ、信号が遅延するといったパラレル転送特有の問題が目立つようになってきました。シールドを強化したり、等長配線やクロックの供給方法を工夫したりすることで対応していますが、さらなる高速化への対応には抜本的な解決策が必要です。
そこで、注目を浴びているのが、シリアル転送です。
シリアル転送は低速と説明しましたが、s-ATAやPCI Expressが普及し始めたころから事情が変わってきています。
クロックとデータを1本(実際には2本使います)の信号線で送ることができ、配線の本数が少なくて済みます。マザーボード上の配線パターンの作成が容易になります。さらに、シリアル転送は、クロックによる他の信号線との同期が必要ないため、単独で高速化することができます。
FSBやメモリの一部にもシリアル転送を使用する例が出てきており、今後、シリアル転送の広帯域化と利用拡大が進むものと予想されます。

しかし、さらなるPCの高速化へのニーズはより広帯域なバスを求めています。
そのひとつのソリューションが、バス配線の新しい技術として期待される光インターコネクトです。現在の銅線による伝送路に代わって光ファイバーを使用して高速な転送を実現するものです。すでにIntel社はチップ間の光インターコネクトのプロトタイプを発表し、8Gbps以上の帯域幅を実現しています。実用化は2010年ごろとしていますが、究極の高速化に期待が集まっています。

今回は、バスの基礎的な知識を説明しました。この基礎知識をベースに、次回は「内部バスと外部バス」、次々回は「拡張バス」と続きます。

ページの先頭へ
タイトル一覧
CPU編
     
バス編
 
第4回   バスの基礎知識
 
     
ディスク編
   
     
メディア編
   
     
ページの先頭へ
All Rights Reserved, Copyright(C) FUJITSUファミリ会