バス(コンピューティング)

4 つのPCI Expressバス カード スロット (上から下から 2 番目の順に、×4、×16、×1、×16)。従来の 32 ビットPCIバス カード スロット (一番下)と比較。

コンピュータアーキテクチャにおいて、バス(歴史的にはデータハイウェイ[ 1 ]またはデータバスとも呼ばれる)は、コンピュータ内部のコンポーネント間またはコンピュータ間でデータを転送する通信システムである。 [ 2 ]バスは、ハードウェア(例えば、配線、光ファイバー)と通信プロトコルを含むソフトウェアの両方を含む。[ 3 ]バスは本質的に、複数のデバイス間の通信を可能にする共有物理経路であり、通常は配線、回路基板上のトレース、またはバスバーで構成される。競合を防ぎ、秩序あるデータ交換を確実にするために、バスは通信プロトコルに依存して、どのデバイスが特定の時間にデータを送信できるかを管理している。

バスは、 CPUメモリを接続するシステムバス(内部バス、内部データバス、メモリバスとも呼ばれる)など、その役割に基づいて分類されます。拡張バス(ペリフェラルバスとも呼ばれる)は、システムを拡張し、周辺機器などの追加デバイスを接続します。広く使用されているバスの例としては、高速内部接続用のPCI Express (PCIe)や外部デバイス接続用のユニバーサルシリアルバス(USB)などがあります。

現代のバスは、パラレル通信シリアル通信の両方を活用し、高度なエンコード方式を採用することで速度と効率を最大限に高めています。ダイレクトメモリアクセス(DMA)などの機能は、CPUの介入なしにデバイスとメモリ間で直接データ転送を可能にすることで、パフォーマンスをさらに向上させます。

アドレスバス

アドレスバスは、物理アドレスを指定するために使用されるバスです。プロセッサまたはDMA対応デバイスがメモリ位置の読み取りまたは書き込みを行う必要がある場合、アドレスバス上のメモリ位置を指定します(読み取りまたは書き込みの値はデータバス上に送信されます)。[ 4 ]アドレスバスの幅は、システムが同時に転送できるメモリの量を決定します。[ 5 ]たとえば、32ビットアドレスバスを持つシステムは、 2の32乗(4,294,967,296)のメモリ位置をアドレス指定できます。[ 6 ]各メモリ位置が1バイトを保持する場合、アドレス指定可能なメモリ空間は約ギガバイト

アドレス多重化

初期のプロセッサでは、アドレス幅の各ビットに 1 本の配線が使用されていました。たとえば、16 ビットのアドレス バスでは、バスを構成する物理的な配線は 16 本でした。バスが幅広かつ長くなるにつれて、このアプローチはチップ ピン数とボード トレース数の点でコストが高くなりました。Mostek 4096 DRAM以降、マルチプレクサを使用して実装されたアドレス多重化が一般的になりました。[ 7 ]多重化アドレス方式では、アドレスは 2 つの等しい部分に分けて交互のバス サイクルで送信されます。これにより、メモリに接続するために必要なアドレス バス信号の数が半分になります。たとえば、32 ビットのアドレス バスは、16 本のラインを使用してメモリ アドレスの前半を送信し、すぐにメモリ アドレスの後半を送信することで実装できます。

通常、制御バスの 2 つの追加ピン (行アドレス ストローブ (RAS) と列アドレス ストローブ (CAS)) は、アドレス バスが現在メモリ アドレスの前半を送信しているのか、後半を送信しているのかを DRAM に伝えるために使用されます。

実装

個々のバイトにアクセスするには、多くの場合、バス幅全体(1ワード)を一度に読み書きする必要があります。このような場合、アドレスバスの最下位ビットが実装されていないこともあり、制御デバイスは、送信されるワード全体から必要な個々のバイトを分離する必要があります。例えば、VESAローカルバスでは最下位2ビットが欠落しているため、このバスは32ビットの アラインメントされた転送に制限されます。

歴史的には、単語のみを処理できるコンピュータ、つまりワードマシンの例もいくつかありました。

メモリバス

メモリバスは、コンピュータシステムにおいてメインメモリとメモリコントローラを接続するバスです。元々はVMEバスS-100バスといった汎用バスが使用されていましたが、レイテンシを低減するため、現代のメモリバスはDRAMチップに直接接続するように設計されており、JEDECなどのチップ標準化団体によって定義されています。例としては、様々な世代のSDRAMや、 SLDRAMRDRAMといったシリアルポイントツーポイントバスが挙げられます。

実装の詳細

バスは、複数の線でデータ ワードを並列に伝送するパラレル バス、またはデータをビット直列形式で伝送するシリアル バスのいずれかになります。各方向への余分な電源および制御接続、差動ドライバ、およびデータ接続の追加により、ほとんどのシリアル バスは、1-WireおよびUNI/Oで使用される最小の 1 本よりも多くの導体を持つことになります。データ レートが増加すると、タイミング スキュー、電力消費、電磁干渉、およびパラレル バス間のクロストークの問題を回避することがますます困難になります。この問題の部分的な解決策の 1 つは、バスをダブル ポンピングすることです。多くの場合、シリアル バスは、電気的接続が少ないにもかかわらず、パラレル バスよりも全体的に高いデータ レートで動作できます。これは、シリアル バスには本質的にタイミング スキューやクロストークがないためです。USB FireWire およびシリアル ATAがこの例です。マルチドロップ接続は高速シリアル バスではうまく機能しないため、ほとんどの最新のシリアル バスではデイジーチェーンまたはハブ設計が採用されています。

パラレルバスからシリアルバスへの移行は、コンピュータで使用される集積回路にシリアライザ/デシリアライザを組み込むことを可能にしたムーアの法則によって可能になりました。 [ 8 ]

イーサネットなどのネットワーク接続は一般にバスとは見なされませんが、その違いは実用的というよりは概念的なものです。バスの特徴として一般的に使用される属性は、接続されたハードウェアの電源がバスから供給されることです。これは、バス アーキテクチャのバスバーの起源が、スイッチング電源または分散電源の供給にあることを強調しています。シリアルRS-232、パラレルセントロニクスIEEE 1284インターフェイス、イーサネットなどの方式はバスとしては除外されます。これらのデバイスも別個の電源を必要とするためです。ユニバーサル シリアル バスデバイスはバスから供給される電源を使用できますが、多くの場合は別個の電源を使用します。この違いは、モデムが接続された電話システムで例証されます。このシステムでは、RJ11接続および関連する変調信号方式はバスとは見なされず、イーサネット接続に類似しています。電話回線接続方式は信号に関してはバスとは見なされませんが、電話局は電話間の接続に クロスバー スイッチを備えたバスを使用します。

しかし、多くの航空電子システムでは、この区別(電力はバスから供給される)は当てはまりません。ARINC 429ARINC 629MIL-STD-1553B(STANAG 3838)、EFABus(STANAG 3910 )などのデータ接続は、一般的にデータバス、あるいはデータバスと呼ばれることもあります。このような航空電子データバスは、通常、共通の共有メディアに接続された複数のライン交換可能部品/ユニット(LRI/LRU)を備えているのが特徴です。これらは、ARINC 429と同様に、単一ソースのLRI / LRUを持つシンプレックス方式である場合もあれば、ARINC 629、MIL-STD-1553B、STANAG 3910と同様に、接続されたすべてのLRI / LRUが異なる時間に(半二重)、データの送信機と受信機として機能することを可能にするデュプレックス方式である場合もある。[ 9 ]

バスの周波数または速度は、MHz などの Hz で測定され、1 秒あたりのクロック サイクル数を決定します。1 クロック サイクルあたり 1 つ以上のデータ転送が可能です。1 クロック サイクルあたり 1 つの転送がある場合、シングル データ レート(SDR) と呼ばれ、1 クロック サイクルあたり 2 つの転送がある場合、ダブル データ レート(DDR) と呼ばれますが、RAM 以外では SDR 以外の信号を使用することはまれです。その一例は、SDR を使用する PCIe です。[ 10 ]各データ転送では、複数ビットのデータが含まれる場合があります。これはバスの幅として説明され、バスが 1 クロック サイクルあたりに転送できるビット数であり、各導体が一度に 1 ビットを転送する場合のバスにある物理的な電気導体の数と同義です。[ 11 ] [ 12 ] [ 13 ]ビット/秒でのデータ レートは、クロック サイクルあたりのビット数と周波数とクロック サイクルあたりの転送数を掛け合わせることで得られます。[ 14 ] [ 15 ]あるいは、 PCIeなどのバスでは、PAM4 [ 16 ] [ 17 ] [ 18 ]などの変調または符号化方式を使用することもできます。PAM4は2ビットをシンボルにグループ化し、ビット自体ではなくシンボルとして転送することで、バスの周波数を上げずにデータ転送速度を向上させることができます。128/130b(bはビット)符号化などの誤り訂正も可能な符号化方式を使用しているため、実効または実際のデータ転送速度は低下する可能性があります。[ 19 ] [ 20 ] [ 10 ]データ転送速度は帯域幅とも呼ばれます。[ 21 ] [ 22 ]

バス多重化

最も単純なシステムバスは、入力データライン、出力データライン、アドレスラインが完全に分離されています。コスト削減のため、ほとんどのマイクロコンピュータは双方向データバスを採用しており、同じ配線を異なるタイミングで入力と出力に再利用しています。[ 23 ]

一部のプロセッサでは、アドレスバス、データバス、制御バスの各ビットに専用の配線が使用されています。例えば、64ピンSTEバスは、8ビットデータバス専用の物理配線8本、20ビットアドレスバス専用の物理配線20本、制御バス専用の物理配線21本、各種電源バス専用の物理配線15本で構成されています。

バス多重化は配線数を削減できるため、初期のマイクロプロセッサやDRAMチップの多くでコスト削減に役立ちました。一般的な多重化方式の一つであるアドレス多重化については既に説明しました。もう一つの多重化方式は、アドレスバスピンをデータバスピンとして再利用する方法で、 [ 23 ]従来のPCI8086で採用されています。各種シリアルバスは多重化の究極の限界と言えるもので、アドレスビットとデータビットをそれぞれ1つずつ、1つのピン(または差動ペア)を介して送信します。

歴史

時間の経過とともに、IEEE バス アーキテクチャ標準委員会 (BASC)、IEEE Superbus 研究グループ、オープン マイクロプロセッサ イニシアティブ (OMI)、オープン マイクロシステム イニシアティブ (OMI)、EISAを開発したGang of Nineなど、 複数のグループがさまざまなコンピュータ バス標準の策定に取り組みました。

第一世代

初期のコンピュータバスは、コンピュータメモリと周辺機器を接続する電線の束でした。初期のオーストラリアCSIRACコンピュータでは、逸話的に「ディジットトランク」と呼ばれていましたが[ 24 ] 、これは電力バス、つまりバスバーにちなんで名付けられました。ほとんどの場合、メモリ用のバスが1つと、周辺機器用のバスが1つ以上ありました。これらのバスは、全く異なるタイミングとプロトコルを持つ別々の命令によってアクセスされました。

最初の複雑さの一つは、割り込みの使用でした。初期のコンピュータプログラムは、周辺機器の準備が整うまでループを繰り返すことI/Oを実行していました。これは、他のタスクを実行するプログラムにとっては時間の無駄でした。また、プログラムが他のタスクを実行しようとすると、再度確認するまでに時間がかかりすぎて、データが失われる可能性がありました。そこでエンジニアは、周辺機器がCPUに割り込むようにしました。CPUは一度に1つの周辺機器のコードしか実行できず、デバイスによっては他のデバイスよりも時間的制約が厳しいため、割り込みには優先順位を付ける必要がありました。

ハイエンドシステムでは、チャネルコントローラという概念が導入されました。これは基本的に、特定のバスの入出力処理に特化した小型コンピュータです。IBMは1958年にIBM 709にこれを導入し、同社のプラットフォームの標準機能となりました。Control Data Corporationなどの他の高性能ベンダーも同様の設計を実装しました。一般的に、チャネルコントローラはすべてのバス操作を内部で実行するように最善を尽くし、CPUが他の場所でビジー状態にあると判明している場合には可能な限りデータを移動し、必要な場合にのみ割り込みを使用します。これによりCPU負荷が大幅に軽減され、システム全体のパフォーマンスが向上しました。

単一システムバス

モジュール性を実現するために、メモリバスとI/Oバスを統合システムバスに統合することができる。[ 25 ]この場合、単一の機械的および電気的システムを使用して、多くのシステムコンポーネント、または場合によってはすべてのシステムコンポーネントを接続できる。

その後、コンピュータプログラムは複数のCPUに共通するメモリを共有するようになりました。このメモリバスへのアクセスにも優先順位を付ける必要がありました。割り込みやバスアクセスの優先順位付けを行う最も簡単な方法は、デイジーチェーン接続でした。この場合、信号は物理的または論理的な順序でバスを自然に流れるため、複雑なスケジューリングは不要になります。

ミニとマイクロ

デジタル・イクイップメント・コーポレーション(DEC)は、量産型ミニコンピュータのコストをさらに削減し、周辺機器をメモリバスにマッピングすることで、入出力デバイスをメモリ上の位置として認識できるようにした。これは1969年頃にPDP-11Unibusに実装された。[ 26 ]

初期のマイクロコンピュータバスシステムは、基本的にCPUのピンに直接、またはバッファアンプを介して接続された受動的なバックプレーンでした。メモリやその他のデバイスは、CPU自体が使用するのと同じアドレスピンとデータピンを並列に接続してバスに追加されました。通信はCPUによって制御され、CPUはデバイスをメモリブロックのように扱い、同じ命令を使用してデータの読み書きを行いました。これらの処理はすべて、CPUの速度を制御する中央クロックによってタイミングが制御されていました。それでもなお、デバイスはCPUの個別のピンに信号を送信することでCPUに 割り込んでいました。

例えば、ディスクドライブコントローラはCPUに新しいデータの読み取り準備が完了したことを知らせる信号を送り、CPUはディスクドライブに対応するメモリ位置を読み取ってデータを移動します。Altair 8800コンピュータシステムのS-100バスに始まり、初期のマイクロコンピュータのほぼすべてがこの方式で構築されました。

いくつかの例、最も顕著なのはIBM PCですが、同様の物理アーキテクチャを採用できるにもかかわらず、周辺機器 (inおよびout) やメモリ (movおよびその他) にアクセスするための命令がまったく統一されておらず、依然として別個の I/O バスを実装するために使用できる個別の CPU 信号が生成されます。

これらのシンプルなバスシステムは、汎用コンピュータに使用した場合、深刻な欠点がありました。バス上のすべての機器は単一のクロックを共有するため、同じ速度で通信する必要がありました。

CPUの速度向上は、すべてのデバイスの速度も向上させる必要があるため、より困難になります。すべてのデバイスをCPUと同じ速度にすることが現実的または経済的でない場合、CPUは待機状態に入るか、一時的に低いクロック周波数で動作して、コンピュータ内の他のデバイスと通信する必要があります[ 27 ] 。組み込みシステムでは許容されるものの、この問題は汎用的でユーザーが拡張可能なコンピュータでは長く許容されませんでした。

このようなバスシステムは、一般的な市販機器で構築する場合、設定が困難です。通常、追加する拡張カードごとに、メモリアドレス、I/Oアドレス、割り込み優先度、割り込み番号を設定するために、多数のジャンパーが必要になります。

第二世代

NuBusなどの第 2 世代のバス システムは、これらの問題の一部に対処しました。これらのシステムでは通常、コンピューターを 2 つのアドレス空間に分割し、一方に CPU とメモリ、もう一方にさまざまな周辺デバイスを配置しました。バス コントローラーは、CPU 側から周辺機器側に移動するデータを受け取り、通信プロトコルの負担を CPU 自体から移動しました。これにより、CPU とメモリ側は、周辺機器バスとは独立して進化することができました。バス上のデバイスは、CPU の介入なしに相互に通信できました。これによりパフォーマンスが大幅に向上しましたが、カードははるかに複雑になりました。これらのバスでは、データ パスのサイズが大きく、第 1 世代の 8 ビットのパラレル バスから第 2 世代の 16 ビットまたは 32 ビットに移行し、またジャンパーに代わるソフトウェア セットアップ (後にプラグ アンド プレイとして標準化された) を追加することで、速度の問題に対処することが多かったです。

しかし、これらの新しいシステムは、バス上のすべてのデバイスが同じ速度で通信する必要があるという、以前のシステムとの共通点がありました。CPU は独立して速度を上げることができるようになりましたが、CPU とメモリの速度は、それらが通信するバスよりもはるかに速いペースで上がり続けました。その結果、バスの速度は現代のシステムに必要な速度よりもはるかに遅くなり、マシンはデータ不足に陥りました。この問題の特によくある例として、ビデオ カードがPCIなどの新しいバス システムをあっという間に追い越し、コンピューターがビデオ カードを駆動するためだけにAGP を組み込むようになったことが挙げられます。2004 年までに、AGP は再びハイエンドのビデオ カードやその他の周辺機器に追い越され、新しいPCI Expressバスに置き換えられました。

外付けデバイスも独自のバスシステムを採用するようになり、その数は増加しました。ディスクドライブが初めて導入された当時は、バスにカードを差し込むことでマシンに追加されていました。そのため、コンピュータのバスには多数のスロットが搭載されています。しかし、1980年代から1990年代にかけて、SCSIIDEといった新しいシステムが導入され、このニーズに応えたため、現代のシステムではほとんどのスロットが空いてしまいました。今日では、一般的なマシンには約5種類のバスが搭載され、様々なデバイスをサポートしています。

第三世代

2001年頃から、 HyperTransportInfiniBandなどの第3世代バスが市場に登場しています。これらのバスは物理的な接続に関しても非常に柔軟性が高く、内部バスとしても、異なるマシン同士を接続するバスとしても使用できます。しかし、異なる要求に対応しようとすると複雑な問題が発生する可能性があるため、これらのシステムの開発作業の多くは、ハードウェア自体ではなくソフトウェア設計に重点が置かれています。一般的に、これらの第3世代バスは、当初のバスの概念よりもネットワークに似たものになり、初期のシステムよりもプロトコルのオーバーヘッドが高くなりますが、複数のデバイスが同時にバスを使用することもできます。

Wishboneなどのバスは、コンピューター設計から法的および特許上の制約をさらに排除しようとする オープンソース ハードウェア運動によって開発されました。

Compute Express Link(CXL)は、次世代データセンターのパフォーマンスを加速するために設計された、高速CPUとデバイス、CPUとメモリ間のオープンスタンダード相互接続です。[ 28 ]

内部コンピュータバスの例

平行

シリアル

外部コンピュータバスの例

平行

  • HIPPI高性能パラレルインターフェース
  • IEEE-488 (GPIB、汎用インタフェースバス、HPIB、ヒューレット・パッカード計測バスとも呼ばれる)
  • PC カード(以前はPCMCIAと呼ばれていました) は、ラップトップ コンピュータやその他のポータブル コンピュータでよく使用されますが、USB や内蔵ネットワークおよびモデム接続の導入により、使用頻度は低下しています。

シリアル

多くのフィールド バスはシリアル データ バス (システム バスまたは拡張カードのパラレル データ バス セクションと混同しないでください) であり、そのいくつかはRS-485 の電気的特性を使用し、独自のプロトコルとコネクタを指定します。

その他のシリアル バスには次のものがあります。

内部/外部コンピュータバスの例

参照

参考文献

  1. ^ Hollingdale, Stuart H. (1958-09-19).セッション14. データ処理. コンピューターの応用, ノッティンガム大学, 1958年9月15~19日.
  2. ^クリフトン、カール (1986年9月19日).データ通信についてエンジニアが知っておくべきこと. CRC Press. p. 27. ISBN 9780824775667. 2018年1月17日にオリジナルからアーカイブされました。コンピュータ内部のバスは並列伝送方式であり、コンピュータ内部では…
  3. ^ 「PC Magazine Encyclopedia のバス定義」 . pcmag.com. 2014年5月29日. 2015年2月7日時点のオリジナルよりアーカイブ。 2014年6月21日閲覧
  4. ^ Gustavson, David (1984年4月).コンピュータバス:チュートリアル(PDF) .
  5. ^ 「システムバスとアドレスバスの違い」GeeksForGeeks . 2025年7月23日.
  6. ^ 「オペレーティングシステム」 . 2003年1月1日: 169–191 . doi : 10.1016/B0-12-227410-5/00851-6 .{{cite journal}}:ジャーナルを引用するには|journal=ヘルプ)が必要です
  7. ^ 「チップの殿堂:Mostek MK4096 4キロビットDRAM - IEEE Spectrum」 spectrum.ieee.org . 2025年11月13日閲覧
  8. ^ 『境界 — スキャンハンドブック』 シュプリンガー 2003年6月30日ISBN 978-1-4020-7496-7
  9. ^航空電子システム標準化委員会、「軍用航空電子アプリケーション向けデジタルインターフェース標準ガイド」、ASSC/110/6/2、第2号、2003年9月
  10. ^ a b IBM z15 (8561) テクニカルガイド. IBM Redbooks. 2022年7月13日. ISBN 978-0-7384-5812-0
  11. ^コンピュータ技術の基礎. CRC Press. 2020年10月25日. ISBN 978-1-000-11716-5
  12. ^ Beales, RP (2006-08-11). PCシステムのインストールとメンテナンス. Routledge. ISBN 978-1-136-37442-5
  13. ^ 「マザーボードの仕組み」 2005年7月20日。
  14. ^ブキャナン、ビル (2000-04-25).コンピュータバス. CRC Press. ISBN 978-1-4200-4168-2
  15. ^ Oklobdzija, Vojin G. (2019-07-05).コンピュータエンジニアリングハンドブック. CRC Press. ISBN 978-1-4398-3316-2
  16. ^ Robinson, Dan (2022年1月12日). 「PCIe 6.0最終仕様が発表:64 GTpsのリンク速度が実現へ…2023年に製品が登場」www.theregister.com .
  17. ^ 「PCIe 7.0 Draft 0.5仕様が利用可能:2025年までにPCIe x16で512 GB/Sを実現へ」 。2024年4月4日時点のオリジナルよりアーカイブ
  18. ^ 「PCIe 5.0 は新しい PCS に登場し始めたばかりですが、バージョン 6.0 はすでに登場しています」。2022 年 1 月 12 日。
  19. ^ 「PCIe 6.0:今後の標準について知っておくべきことすべて」。2024年6月30日。
  20. ^ 「PAM-4シグナリング」
  21. ^ PCSのアップグレードと修理. Que. 2003. ISBN 978-0-7897-2745-9
  22. ^ 「PCIe 7.0 Draft 0.5仕様が利用可能:2025年までにPCIe x16で512 GB/Sを実現へ」 。2024年4月4日時点のオリジナルよりアーカイブ
  23. ^ a b ドン・ランカスター著 「TVタイプライター・クックブック」TVタイプライター)。「バス編成」セクション、p. 82。
  24. ^マッキャン、ダグ、ソーン、ピーター (2000). 『The Last of The First』、CSIRAC: オーストラリア初のコンピュータ. メルボルン大学コンピューティングサイエンス pp.  8– 11, 13, 91. ISBN 0-7340-2024-4
  25. ^リンダ・ヌル、ジュリア・ロバー (2006). 『コンピュータの構成とアーキテクチャの基本(第2版)』ジョーンズ&バートレット・ラーニング. pp. 33, 179– 181. ISBN 978-0-7637-3769-62018年1月17日時点のオリジナルよりアーカイブ
  26. ^ C. Gordon Bell; R. Cady; H. McFarland; B. Delagi; J. O'Laughlin; R. Noonan; W. Wulf (1970).ミニコンピュータのための新しいアーキテクチャ—DEC PDP-11 (PDF) . Spring Joint Computer Conference. pp.  657– 675. 2011年11月27日時点のオリジナルよりアーカイブ(PDF) .
  27. ^ブレイ、アンドリュー・C.、ディケンズ、エイドリアン・C.、ホームズ、マーク・A. (1983). 「28. 1メガヘルツバス」BBCマイクロコンピュータ上級ユーザーガイドケンブリッジ、英国: ケンブリッジ・マイクロコンピュータ・センター pp.  442– 443. ISBN 0-946827-00-1.オリジナル(圧縮PDF)から2006年1月14日にアーカイブ2008年3月28日閲覧。
  28. ^ 「CXLについて」 Compute Express Link . 2019年8月9日閲覧
  29. ^ 「Odds & Ends: Opti Local Bus、Ariaサウンドカード」 . 2015年7月21日. 2021年2月19日閲覧