システムバスとは
システムバスは、
コンピュータ内の様々な部品間での情報伝達を担う重要な要素です。具体的には、
データバス(情報を運ぶ)、
アドレスバス(送信先を決定する)、
コントロールバス(動作を制御する)という3つの異なるバスの機能を、単一のバスで実現する技術を指します。
システムバスの歴史的背景
初期の
コンピュータは、各部品が独立した筐体に収められ、ケーブルで接続されるという、アドホックな方法で構築されていました。
1950年代から
1960年代にかけて、
CPU、メモリ、入出力装置はそれぞれ別の筐体に入っており、それらを繋ぐケーブルの束が、バスの原型となりました。
このバスという概念は、もともと電気機械の各部に電力を供給する「バスバー」から来ています。
集積回路(IC)の登場により、
コンピュータの各ユニットは大幅に小型化され、バスはより標準化されました。これにより、モジュールをより均一な方法で相互接続できるようになり、開発や保守が容易になったのです。
システムバスの登場
1970年代に入ると、コスト削減とモジュール性の向上が求められるようになります。そこで、メモリバス、入出力バス、コントロールバス、電源バスといった複数のバスを、一つの「システムバス」に統合するアイデアが生まれました。この統合により、
コンピュータの小型化が進み、低コスト化への期待も高まりました。
デジタル・イクイップメント・コーポレーション(DEC)は、ミニ
コンピュータのコストをさらに削減するため、メモリバスに
メモリマップドI/O|メモリマップドI_Oを搭載し、入出力装置とメモリが同じ
アドレス空間に見えるようにしました。この技術は、
1969年頃のPDP-11の
Unibusとして実装され、I/Oバスを別に用意する必要がなくなりました。PDP-8のような
メモリマップドI/O|メモリマップドI_Oを持たない
コンピュータでも、システムバスが実装され、モジュールを任意のスロットに差し込むことができるようになりました。この革新的なアプローチは、
コンピュータアーキテクチャの新たな合理化モデルとみなされました。
初期のマイクロ
[コンピュータ]]では、1975年頃のAltair 8800の
S-100バスを皮切りに、単一のシステムバスを使用するのが一般的でした。
IBM PCも、1981年に[[Industry Standard Architecture]バスをシステムバスとして採用しました。
1983年には、
マルチバスがIEEE 796として規格化されました。その後、
サン・マイクロシステムズがより小型の
拡張カードに対応するSBusを開発しています。
デュアルインディペンデントバスへ
対称型マルチプロセッシングを実装する最も簡単な方法は、複数の
CPUを共有システムバスに接続することでした。しかし、共有バスはすぐにボトルネックとなり、より高度な接続技術が模索されるようになります。
CPU設計の進化に伴い、より高速な内部バスと、より低速なペリフェラルバスが使用されるようになります。
インテルは、メインシステムメモリとの間の外部
フロントサイドバスと、
CPUと
CPUキャッシュ間の内部バックサイドバスを使用する、「デュアルインディペンデントバス(DIB)」という概念を提唱しました。これは、1990年代半ばから後半にかけて
Pentium Proや
Pentium IIに導入されました。
フロントサイドバスは
CPUとメインメモリ間のデータ通信を担い、バックサイドバスは2次キャッシュにアクセスします。
現代のシステムバス
現代のPCやサーバーでは、
HyperTransportや
インテル QuickPath インターコネクトなどの高性能な相互接続技術が利用されています。しかし、シンプルな組み込みマイクロプロセッサでは、依然としてシステムバス・アーキテクチャが使用されています。
システムバスを単一の
集積回路内に内蔵することで、System-on-a-chip(SoC)を実現することもできます。その例として、AMBA、CoreConnect、Wishboneなどがあります。
まとめ
システムバスは、
コンピュータの発展において重要な役割を果たしてきました。初期の
コンピュータから現代の
組み込みシステムまで、その進化の歴史は、
コンピュータアーキテクチャの変遷を物語っています。
関連情報