バス(計算)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

4つのPCIExpressバスカードスロット(上から下へ:×4、×16、×1、および×16)、32ビットの従来のPCIバスカードスロット(一番下)と比較

コンピュータアーキテクチャではバス[1](ラテンオムニバスの短縮形であり、歴史的にはデータハイウェイ[2]またはデータバスとも呼ばれます)は、コンピュータ内のコンポーネント間またはコンピュータ間でデータを転送する通信システムです。この表現は、通信プロトコルを含む、関連するすべてのハードウェアコンポーネント(ワイヤ、光ファイバーなど)およびソフトウェアを対象としています。[3]

初期のコンピュータバスは、複数のハードウェア接続を備えた並列電線でしたが、現在、この用語は、並列電気バスバーと同じ論理機能を提供する物理的な配置に使用されています。最新のコンピューターバスは、パラレル接続とビットシリアル接続の両方を使用でき、マルチドロップ(電気並列)またはデイジーチェーントポロジで配線するか、ユニバーサルシリアルバス(USB) の場合のようにスイッチドハブで接続できます。

背景と命名法

コンピュータシステムは一般的に3つの主要な部分で構成されています。

初期のコンピュータには、真空管の手動CPU、メインメモリ用磁気ドラム、およびデータの読み取りと書き込み用のパンチテーププリンタがそれぞれ含まれている場合があります。最新のシステムには、マルチコアCPUメモリ用のDDR4 SDRAM 、セカンダリストレージ用のソリッドステートドライブ、ディスプレイシステムとしてのグラフィックカードLCD、対話用のマウスキーボード、ネットワーク用のWi-Fi接続があります。どちらの例でも、ある形式または別の形式のコンピュータバスは、これらすべてのデバイス間でデータを移動します。

ほとんどの従来のコンピュータアーキテクチャでは、CPUとメインメモリは緊密に結合される傾向があります。マイクロプロセッサは、従来、メインメモリ内の「アドレス」を選択するために使用できるピンに多数の電気接続備えた単一のチップであり、その場所に格納されたデータを読み書きするための別のピンのセットです。ほとんどの場合、CPUとメモリはシグナリング特性を共有し、同期して動作します。CPUとメモリを接続するバスは、システムの特徴の1つであり、単にシステムバスと呼ばれることもあります。

周辺機器が同じ方法でメモリと通信できるようにし、拡張カードの形式のアダプタをシステムバスに直接接続することができます。これは通常、ある種の標準化された電気コネクタを介して実現され、これらのいくつかは拡張バスまたはローカルバスを形成します。ただし、CPUと周辺機器のパフォーマンスの違いは大きく異なるため、一般に、周辺機器がシステム全体のパフォーマンスを低下させないようにするためのソリューションが必要です。多くのCPUは、メモリと通信するためのピンと同様の2番目のピンのセットを備えていますが、非常に異なる速度で、異なるプロトコルを使用して動作することができます。スマートコントローラを使用してデータをメモリに直接配置するものもあります。これは、ダイレクトメモリアクセス最新のシステムのほとんどは、必要に応じて両方のソリューションを組み合わせています。

潜在的な周辺機器の数が増えるにつれ、すべての周辺機器に拡張カードを使用することはますます受け入れられなくなりました。これにより、複数の周辺機器をサポートするために特別に設計されたバスシステムが導入されました。一般的な例は、最近のコンピューターのSATAポートです。これにより、カードを必要とせずに多数のハードドライブを接続できます。ただし、これらの高性能システムは一般に、マウスなどのローエンドデバイスに実装するにはコストがかかりすぎます。これにより、これらのソリューション向けの多数の低パフォーマンスバスシステムが並行して開発されました。最も一般的な例は、標準化されたユニバーサルシリアルバス(USB)です。このような用語はすべて普遍的ではありませんが、この ような例はすべてペリフェラルバスと呼ばれることがあります。

最近のシステムでは、CPUとメインメモリのパフォーマンスの違いが非常に大きくなっているため、キャッシュと呼ばれる高速メモリがCPUに直接組み込まれています。このようなシステムでは、CPUはメモリよりもはるかに高速で動作する高性能バスを使用して通信し、過去に周辺機器専用に使用されていたものと同様のプロトコルを使用してメモリと通信します。これらのシステムバスは、アダプターを介して他のほとんど(またはすべて)の周辺機器と通信するためにも使用され、アダプターは他の周辺機器やコントローラーと通信します。このようなシステムは、アーキテクチャ的にマルチコンピューターに似ています、ネットワークではなくバスを介して通信します。このような場合、拡張バスは完全に分離されており、ホストCPUとアーキテクチャを共有しなくなります(実際、PCIの場合のように、多くの異なるCPUをサポートする場合があります)。以前はシステムバスであったものが、現在ではフロントサイドバスとして知られています。

これらの変更を考えると、古典的な用語「システム」、「拡張」、および「周辺」は、もはや同じ意味を持ちません。他の一般的な分類システムは、バスの主要な役割に基づいており、デバイスを内部または外部に接続します。たとえば、PCIとSCSIです。ただし、多くの一般的な最新のバスシステムを両方に使用できます。SATAおよび関連するeSATAは、以前は内部として説明されていたシステムの一例ですが、特定の自動車アプリケーションは、システムバスにより類似した方法で主に外部IEEE1394を使用します。InfiniBandI²Cなどの他の例は、最初から内部と外部の両方で使用されるように設計されています。

内部バス

内部バスは、内部データバス、メモリバスシステムバス、またはフロントサイドバスとも呼ばれ、CPUやメモリなどのコンピュータのすべての内部コンポーネントをマザーボードに接続します。内部データバスは、ローカルデバイスに接続することを目的としているため、ローカルバスとも呼ばれます。このバスは通常、かなり高速で、他のコンピューター操作から独立しています。

外部バス

外部バス、または拡張バスは、プリンタなどのさまざまな外部デバイスをコンピュータに接続する電子経路で構成されています。

アドレスバス

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

アドレス多重化

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

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

実装

個々のバイトにアクセスするには、バス幅全体(ワード)を一度に読み書きする必要があります。これらの例では、アドレスバスの最下位ビットが実装されていない可能性があります。代わりに、送信される完全なワードから必要な個々のバイトを分離するのは制御デバイスの責任です。これは、たとえば、最下位2ビットがないVESAローカルバスの場合であり、このバスは整列された32ビット転送に制限されます。

歴史的に、単語にしか対応できなかったコンピューターの例もいくつかありました-単語マシン

メモリバス

メモリバスは、メインメモリコンピュータシステムのメモリコントローラに接続するバスですもともとはVMEbusS-100バスなどの汎用バスが使われていましたが、レイテンシを減らすために、最近のメモリバスはDRAMチップに直接接続するように設計されているため、JEDECなどのチップ標準化団体によって設計されています。例としては、さまざまな世代のSDRAM 、およびSLDRAMRDRAMなどのシリアルポイントツーポイントバスがあります。例外は、FullyBufferedDIMMです。これは、影響を最小限に抑えるように注意深く設計されているにもかかわらず、待ち時間が長いことで批判されています。

実装の詳細

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

イーサネットなどのネットワーク接続は、一般的にバスとは見なされませんが、違いは実際的ではなく概念的なものです。バスを特徴づけるために一般的に使用される属性は、接続されたハードウェアのバスによって電力が供給されることです。これは、スイッチドまたは分散型電力の供給としてのバスアーキテクチャのバスバーの起源を強調しています。これには、バスとして、シリアル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、およびSTANAG3910の場合と同様に二重である場合があります。、接続されているすべてのLRI / LRUが、異なる時間(半二重)でデータの送信者および受信者として機能できるようにします。[4]

バス多重化

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

一部のプロセッサは、アドレスバス、データバス、および制御バスの各ビットに専用ワイヤを使用します。たとえば、64ピンSTEbusは、8ビットデータバス専用の8本の物理ワイヤ、20ビットアドレスバス専用の20本の物理ワイヤ、制御バス専用の21本の物理ワイヤ、および15本の物理ワイヤで構成されます。さまざまなパワーバス。

バスの多重化に必要な配線が少なくてすむため、初期の多くのマイクロプロセッサやDRAMチップのコストが削減されます。一般的な多重化方式の1つであるアドレス多重化については、すでに説明しました。別の多重化方式では、アドレスバスピンをデータバスピンとして再利用します[5] 。従来のPCIおよび8086で使用されているアプローチです。さまざまな「シリアルバス」は、多重化の究極の限界と見なすことができ、各アドレスビットと各データビットを一度に1つずつ、単一のピン(または単一の差動ペア)を介して送信します。

歴史

時間の経過とともに、IEEEバスアーキテクチャ標準委員会(BASC)、IEEE「スーパーバス」研究グループ、オープンマイクロプロセッサイニシアチブ(OMI)、オープンマイクロシステムイニシアチブ(OMI)、EISAを開発した「GangofNine」要出典

第一世代

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

最初の問題の1つは、割り込みの使用でした初期のコンピュータプログラムは、周辺機器の準備ができるまでループで待機することによってI/Oを実行していました。これは、他のタスクを実行するプログラムにとって時間の無駄でした。また、プログラムがこれらの他のタスクを実行しようとすると、プログラムが再度チェックするのに時間がかかりすぎて、データが失われる可能性があります。このように、エンジニアは周辺機器がCPUに割り込むように手配しました。CPUは一度に1つの周辺機器のコードしか実行できず、一部のデバイスは他のデバイスよりもタイムクリティカルであるため、割り込みに優先順位を付ける必要がありました。

ハイエンドシステムは、チャネルコントローラのアイデアを導入しました。これは、特定のバスの入力と出力を処理するための専用の小さなコンピュータでした。IBMは1958年にこれらをIBM709に導入し、プラットフォームの共通機能になりました。Control Data Corporationのような他の高性能ベンダーは、同様の設計を実装しました。一般に、チャネルコントローラは、すべてのバス操作を内部で実行するために最善を尽くし、CPUがビジーであることがわかっている場合はデータを他の場所に移動し、必要な場合にのみ割り込みを使用します。これにより、CPU負荷が大幅に削減され、システム全体のパフォーマンスが向上しました。

シングルシステムバス

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

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

ミニとマイクロ

Digital Equipment Corporation (DEC)は、大量生産されたミニコンピューターのコストをさらに削減し周辺機器をメモリバスにマッピングしたため、入力デバイスと出力デバイスがメモリロケーションのように見えました。これは1969年頃にPDP-11のUnibus実装されました。 [8]

初期のマイクロコンピュータバスシステムは、基本的に、 CPUのピンに直接またはバッファアンプを介して接続されたパッシブバックプレーンでした。メモリおよびその他のデバイスは、並列に接続されたCPU自体が使用したものと同じアドレスおよびデータピンを使用してバスに追加されます。通信はCPUによって制御され、CPUは、同じ命令を使用して、デバイスからデータをメモリのブロックであるかのように読み書きし、すべてCPUの速度を制御する中央クロックによってタイミングが調整されました。それでも、デバイスは別々のCPUピンでシグナリングすることによってCPUを 中断しました。

たとえば、ディスクドライブコントローラは、新しいデータを読み取る準備ができたことをCPUに通知します。その時点で、CPUは、ディスクドライブに対応する「メモリ位置」を読み取ることによってデータを移動します。Altair 8800コンピュータシステム S-100バスから始めて、ほとんどすべての初期のマイクロコンピュータはこの方法で構築されました。

場合によっては、特にIBM PCでは、同様の物理アーキテクチャを使用できますが、周辺機器(inおよびout)とメモリ(movおよびその他)にアクセスするための命令がまったく統一されておらず、別個のCPU信号が生成される可能性があります。個別のI/Oバスを実装するために使用されます。

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

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

このようなバスシステムは、一般的な既製の機器から構築する場合にも構成が困難です。通常、追加された各拡張カードには、メモリアドレス、I / Oアドレス、割り込み優先度、および割り込み番号を設定するために 多くのジャンパーが必要です。

第二世代

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

ただし、これらの新しいシステムは、バス上の全員が同じ速度で話す必要があるという点で、以前のいとこと1つの品質を共有していました。CPUは分離されて速度を上げることができましたが、CPUとメモリは、通信するバスよりもはるかに速く速度を上げ続けました。その結果、バスの速度は最新のシステムが必要とする速度よりも非常に遅くなり、マシンはデータに飢えたままになりました。この問題の特に一般的な例は、ビデオカードがPCIなどの新しいバスシステムでさえもすぐに追い越し、コンピュータがビデオカードを駆動するためだけにAGPを搭載し始めたことです。2004年までに、AGPはハイエンドのビデオカードやその他の周辺機器によって再び成長し、新しいPCIExpressバスに置き換えられました。

ますます多くの外部デバイスが独自のバスシステムを採用し始めました。ディスクドライブが最初に導入されたとき、それらはバスに接続されたカードでマシンに追加されていました。そのため、コンピューターにはバス上に非常に多くのスロットがあります。しかし、1980年代から1990年代にかけて、このニーズに応えるためにSCSIIDEなどの新しいシステムが導入され、最新のシステムのほとんどのスロットは空のままになりました。現在、一般的なマシンには、さまざまなデバイスをサポートする約5つの異なるバスが存在する可能性があります。[要出典]

第3世代

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

Wishboneなどのバスは、コンピューター設計から法的な制約や特許の制約をさらに取り除くために 、オープンソースハードウェアの動きによって開発されました。

Compute Express Link(CXL)は、高速CPUからデバイスおよびCPUからメモリへのオープンスタンダードの 相互接続であり、次世代のデータセンターのパフォーマンスを加速するように設計されています。[10]

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

パラレル

シリアル

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

パラレル

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

シリアル

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

も参照してください

参照

  1. ^ クリフトン、カール(1986-09-19)。すべてのエンジニアがデータ通信について知っておくべきことCRCプレス。p。27. ISBN 97808247756672018-01-17にオリジナルからアーカイブされました。内部コンピュータバスはパラレル伝送方式です。コンピューター内...
  2. ^ Hollingdale、Stuart H.(1958-09-19)。「セッション14.データ処理」コンピュータのアプリケーションアトラス-1958年9月15〜19日、ノッティンガム大学のコンピュータの応用(会議論文)。2020-05-25にオリジナルからアーカイブされました2020年5月25日取得
  3. ^ 「PCMagazine百科事典からのバス定義」pcmag.com。2014-05-29。2015-02-07にオリジナルからアーカイブされました2014年6月21日取得
  4. ^ アビオニクスシステム標準化委員会、軍用アビオニクスアプリケーションのデジタルインターフェイス規格ガイド、ASSC / 110/6/2、第2号、2003年9月
  5. ^ a b ドン・ランカスター。 「TVタイプライタークックブック」TVタイプライター)。セクション「バス組織」。p。82。
  6. ^ 初期のオーストラリアのCSIRACコンピューター
  7. ^ リンダヌル; ジュリア・ロバー(2006)。コンピュータの組織とアーキテクチャの要点(第2版)。ジョーンズ&バートレットラーニング。pp。33、179–181。ISBN 978-0-7637-3769-62018-01-17にオリジナルからアーカイブされました。
  8. ^ C.ゴードンベル; R.キャディ; H.マクファーランド; B.デラギ; J.オラフリン; R.ヌーナン; W.ウルフ(1970)。ミニコンピューターの新しいアーキテクチャー—DEC PDP-11(PDF)春の合同コンピュータ会議。pp。657–675。2011年11月27日のオリジナルからアーカイブ(PDF)
  9. ^ ブレイ、アンドリューC .; ディケンズ、エイドリアンC .; ホームズ、マークA.(1983)。「28.ワンメガヘルツバス」。BBCMicrocomputerの上級ユーザーガイド英国ケンブリッジ:ケンブリッジマイクロコンピューターセンター。pp。442–443。ISBN 0-946827-00-12006年1月14日にオリジナル (zip形式のPDF)からアーカイブされました2008年3月28日取得
  10. ^ 「CXLについて」ExpressLinkを計算します。2019年8月9日取得
  11. ^ 「オッズ&エンド:オプティローカルバス、アリアサウンドカード」2015-07-21 2021-02-19を取得

外部リンク