
システムバスは、コンピュータシステムの主要コンポーネントを接続する単一のコンピュータバスであり、情報を伝送するデータバス、情報の送信先や読み取り先を決定するアドレスバス、およびその動作を決定する制御バスの機能を兼ね備えています。この技術はコスト削減とモジュール性の向上を目的として開発され、1970年代と1980年代には普及しましたが、より現代的なコンピュータでは、より具体的なニーズに合わせてさまざまな独立したバスが使用されています。[ 1 ]
システムレベルバス(CPUの内部データパスバスとは区別される)は、CPUをメモリおよびI/Oデバイスに接続します。[ 2 ]通常、システムレベルバスはバックプレーン として使用するように設計されています。[ 3 ]
多くのコンピュータは、1945年に発表されたEDVACレポートの最初の草稿に基づいていた。フォン・ノイマン・アーキテクチャとして知られるようになったものでは、中央制御装置と算術論理演算装置(ALU、フォン・ノイマンはこれを中央演算部と呼んだ)がコンピュータのメモリと入出力機能と組み合わされて、プログラム内蔵型コンピュータを形成した。[ 4 ]このレポートはコンピュータの一般的な構成と理論モデルを提示したが、そのモデルの実装については示さなかった。[ 5 ] すぐに、制御装置とALUが統合され、中央処理装置(CPU)として知られるようになったものが設計された。
1950 年代と 1960 年代のコンピュータは、一般的にアドホックな方法で構築されていました。たとえば、CPU、メモリ、入出力ユニットはそれぞれ、ケーブルで接続された 1 つ以上のキャビネットでした。エンジニアは、標準化されたワイヤの束という一般的な技術を使用し、これらの初期のマシンでプリント回路基板を保持するためにバックプレーンが使用されるようになったことで、その概念を拡張しました。「バス」という名前は、初期の機械式計算機を含む電気機械のさまざまな部分に電力を供給する「バスバー」にすでに使用されていました。 [ 6 ]集積回路 の出現により、各コンピュータユニットのサイズが大幅に縮小され、バスはより標準化されました。[ 7 ] 標準モジュールは、より均一な方法で相互接続でき、開発と保守が容易になりました。
コストを削減しつつモジュール性をさらに高めるため、メモリバスとI/Oバス(および必要な制御バスと電源バス)が、単一の統合システムバスに統合されることがありました。[ 8 ] コンピュータが単一のキャビネットに収まるほど小型化され(顧客も同様の価格低下を期待していたため)、モジュール性とコストが重要になりました。 デジタル機器コーポレーション(DEC)は、量産型ミニコンピュータのコストをさらに削減し、メモリマップドI/Oをメモリバスに組み込むことで、デバイスがメモリ位置のように見えるようにしました。これは1969年頃のPDP-11のUnibusで実装され、独立したI/Oバスの必要性がなくなりました。[ 9 ]メモリマップドI/OのないPDP-8 のようなコンピュータでさえ、すぐにシステムバスが実装され、モジュールを任意のスロットに差し込むことができるようになりました。[ 10 ] 一部の著者はこれを、合理化された新しいコンピュータアーキテクチャの「モデル」と呼びました。[ 11 ]
多くの初期のマイクロコンピュータ(一般的に単一の集積回路上にCPUを搭載)は、 1975年頃のAltair 8800コンピュータシステムのS-100バスを皮切りに、単一のシステムバスで構築されました。[ 12 ] IBM PCは1981年に、システムバスとしてIndustry Standard Architecture (ISA)バスを採用しました。初期モデルのパッシブバックプレーンは、CPUとRAMをマザーボード上に配置して、オプションのドーターボードまたは拡張カードをシステムバススロットに挿入するという標準に置き換えられました。

マルチバスは、1983 年に IEEE 標準 796 として電気電子学会の標準となりました。[ 13 ]サン マイクロシステムズは、より小型の拡張カードをサポートするために 1989 年にSBus を開発しました。[ 14 ]対称マルチプロセッシング を実装する最も簡単な方法は、複数の CPU を共有システムバスに接続することでした。これは 1980 年代を通じて使用されました。しかし、共有バスはすぐにボトルネックとなり、より高度な接続技術が検討されました。[ 15 ]
非常に単純なシステムであっても、さまざまな時点でデータバスはプログラムメモリ、RAM、およびI/Oデバイスによって駆動されます。データバスでのバス競合を防ぐため、任意の瞬間には1つのデバイスのみがデータバスを駆動します。非常に単純なシステムでは、データバスのみが双方向バスである必要があります。非常に単純なシステムでは、メモリアドレスレジスタは常にアドレスバスを駆動し、制御ユニットは常に制御バスを駆動し、アドレスデコーダは、このバスサイクル中にどの特定のデバイスがデータバスを駆動できるかを選択します。非常に単純なシステムでは、すべての命令サイクルはREADメモリサイクルで始まり、プログラムメモリが命令をデータバスに送り、命令レジスタがデータバスからその命令をラッチします。一部の命令はWRITEメモリサイクルに続き、メモリデータレジスタがデータをデータバスに送り、選択されたRAMまたはI/Oデバイスに書き込みます。他の命令は別のREADメモリサイクルに続き、選択されたRAM、プログラムメモリ、またはI/Oデバイスがデータをデータバスに送り、メモリデータレジスタがデータバスからそのデータをラッチします。
より複雑なシステムでは、マルチマスターバスが採用されています。これは、データバスを駆動するデバイスが多数あるだけでなく、アドレスバスを駆動するバスマスターも多数存在することを意味します。バススヌーピングシステムでは、アドレスバスとデータバスの両方が双方向バスである必要があり、多くの場合、3ステートバスとして実装されます。アドレスバスでのバス競合を防ぐため、バスアービタは、このバスサイクル中にアドレスバスを駆動できる特定のバスマスターを選択します。
Intel は、デュアル独立バス(DIB)という用語を2 つの異なる目的で使用してきました。最初の目的は、Intel が単一のローカルバスからDIB に変更し、外部フロントサイドバスをメインシステムメモリと I/O デバイスに、内部バックサイドバスをL2 CPU キャッシュに使用したことです。これは1995 年にPentium Proで導入されました。[ 16 ] [ 17 ] [ 18 ]
2005年と2006年に、Intelは8500と5000チップセットを発表しました。DIBはチップセット上の2つのフロントサイドバスを指し、すべてのCPUで共有される1つのFSBだけの場合と比較してシステム帯域幅が2倍になります。ただし、異なるキャッシュにある共有データのキャッシュコヒーレンスを保証するために必要な情報は、他のFSBのCPUのキャッシュ状態を確認するためにブロードキャスト(スヌープ)で送信する必要があり、利用可能な帯域幅が減少します。コヒーレンシートラフィックを削減するために、チップセット上でキャッシュ状態情報を利用できるように、ハイエンドチップセットにはスヌープフィルタが組み込まれました。2007年、Intelは7300チップセットで複数のバスのアイデアを拡張し、4つの独立したFSBを備え、専用高速インターコネクト(DHSI)と呼びました。[ 19 ]
システムバス方式は、 HyperTransportやIntel QuickPath Interconnectなどのより高性能な相互接続技術を使用する現代のパーソナルコンピュータやサーバーコンピュータでは時代遅れになっていますが、システムバスアーキテクチャはよりシンプルな組み込みマイクロプロセッサで引き続き使用されています。システムバスは単一の集積回路内に内蔵され、システムオンチップを形成することもあります。オンチップバスの例としては、AMBA、CoreConnect、Wishbone 、およびPCIまたはPCIeの改良版などがあります。[ 20 ]
ダイレクトメディアインターフェース(DMI)は、インテルが実装したシステムバス(直接アクセス可能なPCIeレーンを除く)の一例であり、少なくとも2004年から知られています。主にメモリマップドI/Oデバイスへのアクセスや、CPUとチップセット間の通信に使用されます。