計算機上のバス構成について

図2を見よう。
図2:計算機とバス(1)

CPUはメインメモリやI/O機器が接続されるバスのアダプタとシステムバスを 介して繋がっています。I/Oバスとシステムバスを切り離す理由はスピードの 違いから来ています。I/Oが同じシステムバスにあると、 CPUの性能が向上してCPUとメモリ間のスピードが向上しても 遅いI/Oが入ってボトルネックになります。スピードによる階層構造をとることで 計算機のシステム性能を向上させます。しかし、これはデバイスのアクセス方法を さらに複雑にさせます。メインメモリのように直接ユーザプログラムから見えるのでは なく、バスアダプタという仲介を通して見えることになります。 従って、I/Oバス上にある ディスクやVME/CAMACなどデバイスは接続の方法で異なった見え方をします。 大きく分けると、 これらのデバイスへのインターフェースの実装法は利用の目的により 決まって来ます。

図3は図2と違って最近の計算機のバス構成法を示しています。
図3:計算機とバス(2)

CPUとメモリはブリッジによって結ばれ、システムバスのように バスを使用しません。これはますます向上するCPUとメモリ間のスピードを さらに向上させる方法です。ボード上にバスを構成するとラインの長さや 周辺回路からのノイズ等でスピードの向上が望めません。そこで、バスを シリコンチップ上に持って来て、ブリッジとして1つのチップに載せるのです。 バスを接続する方法はいろいろあり、クロスバースイッチなどは 高速なバス構成法の1つです。このクロスバースイッチを1つのチップ上に 載せてしまえばいいのです。図2はCompactPCIを例にしました。

図4は大変複雑に見えます。これはRISC/UNIXシステムからVMEバスを
図4:計算機とバス(3)

介してCAMACを接続した例です。システムバス上にVMEバスアダプタが あります。そこからVMEクレートに向かって特別なI/Oバスがだされ、 VMEバスのマスタコントローラとなるカードに繋がります。 そこにはVMEバスがあり、1つのVMEモジュールとしてCAMACの コントローラがあります。このモジュールからCAMACのクレートに向かって さらに特別なケーブルが出され、CAMACクレートコントローラに 接続されます。これは1つの例ですが、接続の方法はさまざまです。 ユーザプログラムはいちいちこのハードウエア構成に従って 書いていたのでは、汎用性がなくハードウエアが作られる度に 書き直されなくては成りません。自分が操作したい デバイスの操作法に集中してプログラミングしたい、ソフトウエアを 中間に来るバスの構成法には依存させたくない、など、もっと 合理的にソフトウエアを構成する方法はないか?