バスとは
イントロダクション
バスとは複数装置を結ぶ通路です。以前の計算機ではシステムバスという
1つの外部バスを持っていて、公開されたバスプロトコルに従い、
外部装置と計算機(CPU)はデータの転送が実現されていました。バスに
接続されている装置の中には能動的にデータ転送を開始できるものと
受動的に要求を待つものとがあり、前者をバスマスタ、後者をバススレーブと
呼びます。基本的には今も昔も変わりません。CPUが高速になってきて
つじつまを合わせるために階層化して、複雑になっているだけです。
バスを理解するためにいくつかの視点で眺めてみましょう。
もう1つ大事な視点があります。ショートライン/ロングライン
(トランスミッションライン)の区別です。つまり、出力端子から入力端子
までの長さがある長さを越えると、信号の反射が起こり、
単に1対1で接続するだけでは動作しなくなります。この伝送路を
トランスミッションラインと言います。バスはこのトランスミッションライン
として設計されます。出力端子から入力端子までの伝搬遅延をTd、
信号の立上り/立ち下がり時間をTrとすると、次の条件でトランスミッションライン
になります。
2 * Td > Tr
また、単位長さ当たりの伝搬遅延時間をtdとすると、
トランスミッションラインX(m), x(cm)は、
2 * ( X * td ) > Tr
-> X > (Tr / td) / 2
-> x > 50 * Tr / td
例えば、Trが4nsの時、単位長さ当たりの伝搬遅延時間(信号速度)を
5ns/mとしたら、
x > 50 * 2 / 5 = 20 (cm)
となり、20cmの長さになります。立上りの速い信号、つまり高速な信号に
なるともはや数センチでも反射を防ぐための工夫をしたバスが必要に
なります。
バスの幅
バスにはアドレスとデータが必要です。アドレス幅は大きければ大きい程
大きなアドレス空間を扱うことが可能になります。大量のメモリなど
大きなアドレス空間を必要とする装置は大きなアドレス幅を要求します。
また、データ幅が大きいと一度に大量なデータを転送することが可能になります。
しかし、それらの幅が大きくなれば、多くのワイヤが必要になり、
物理的なスペースを占有し、ボード/コネクタ/ケーブルなどを大きくします。
それを避ける高速化の方法にはマルチプレクスバス(Multiplexed bus)という
方法があります。これはアドレスとデータを同一の線として、フェーズを
分けて利用するものです。最近ではシリアルバスの高速化が進んできて、
アドレス/データを1本の線で済ます方法が注目されています。これは
スペース効率を向上させました。
クロック
バスには同期バス(synchronous bus)と非同期バス(asynchronous bus)があります。
前者はクロック信号に同期させてバス操作を行ないます。後者はクロックを
持ちません。PCI、USB、CAMACバスは同期バスで、VMEバスは非同期バスです。
バスの調停
バス上にはバスマスタとバススレーブの装置があると言いました。データ転送を
開始できるのはバスマスタのみです。バス上に複数のバスマスタが存在する
場合はどうなるのでしょう?バスマスタになるための手順が必要になるのは
おわかりですね。これを行なうのがバス調停回路です。バス調停のメカニズムには
いくつかあります。PCIバスはバス調停回路と装置の間にRequestとGrantという
専用の2本の線を持っていて、一元管理されています。
VMEバスはバス調停回路と装置の間には共有のRequest線とデージーチェーン
されたGrant線があります。USBとCAMACはバス調停回路が存在しません。
つまり、USBとCAMACバス上にはバスマスタは1つしか存在してはいけないからです。
その他
この他に割り込み回路や初期化回路などがあります。
分類
- マルチマスタ/シングルマスタ
- アドレス空間(I/O空間、メモリ空間、コンフィグレーション空間)
- アドレッシング(地理的アドレス/論理アドレス)
- バス アービトレーション(バス調停)
- インターラプト(割り込み)
- プログラム転送(I/O)/ブロック転送(I/O)
- アナログ回路用バス/ディジタル回路用バス
- 同期バス/非同期バス
- バンド幅(バススピード)/周波数/バス幅
- 共有バス(バックプレーン)/ポイントーポイント(リンク)