バス (コンピュータ)
出典: フリー百科事典『ウィキペディア(Wikipedia)』
バス(bus)とは、コンピュータの内外、各回路がデータを交換するための共通の経路を指すコンピュータ用語である。
目次 |
[編集] バス型トポロジー
コンピュータにおいて、1つの信号線・通信線に複数のデバイスがぶら下がる構造を「バス型トポロジー」と言う。(詳細はネットワーク構成を参照。)本項目の「バス」の由来はこれである(もしくはそのもの)。
そのため、1対1で接続される専用経路(「ポイントツーポイント」)の場合はバスと言わない場合も多い。バスに似た用語としてチャネルがあるが、チャネルは「入出力チャネル」のように、メモリと入出力との間の通信路を指す事が多い。
[編集] 概説
多くのコンピュータは、CPUなど、コンピュータの中心機能と、周辺機器や各種制御部を繋ぐためにバスを使っている。比較的古い時代のコンピュータでは、各要素が1つのバスに接続されていた。たとえば、SUNの初期のワークステーションでは、VMEバスやMULTIBUSを使っていた。
しかし、コンピュータの性能が向上するにつれ、CPUと各機器とを繋ぐバスの性能も向上させる必要があり、次々に新しい性能のバスに切り替わっていった。
コンピュータの内部バスは文字通りバス型トポロジ(今日のチップセットは、バスの競合を調停するバスアービタとなる)が主流だが、近年、スター型トポロジとなるクロスバースイッチ(クロスバーバス)がワークステーション等に採用されている。これは複数のCPU・メモリ間で多対多の転送(通信)を同時に行えるようにしたもので、マルチプロセッサ環境で特に効果を発揮する。CPU内部にクロスバースイッチを内蔵したものは、最近のマルチコアCPUとしてパソコンレベルでも市場に出ている。
[編集] バスの種別
基本的には大別して、コンピュータ内部の機器をつなぐ内部バスと、外部機器と接続する外部バスに別れる。また、バスの配線によって、シリアルバスとパラレルバスに分かれる。
なお、内部バス・外部バスの内部・外部と言うのはCPUのチップ、コンピュータの内部基板(マザーボード等)、コンピュータ装置の筐体、等のそれぞれの内外として視点が変わる。例として「CPU内部バス」等と言う場合もある。
内部バス・外部バス・拡張バスの三者として区別することもあり、この場合、内部バスはCPU内部バス、外部バスはCPUの外側から拡張バスまでの間、拡張バスはPCIなどの拡張カードを直接接続するバスを指す。
マイコンの初期にはS100バスが、パソコンでは、かつてISAバスが使用されていたが、2006年現在ではPCI Expressが主流である。
[編集] CPU内部バスの構造
CPUのマイクロチップ内部の信号線。CPUアーキテクチャ図により示されることが多い。
[編集] CPU外部バスの構造
CPU外部のバスあるは単にCPUバスと言う。ここでは、CPUとメモリ・入出力装置が直接バスで接続される簡単な構成を考えてみる(今日のパソコンはもう少し複雑である。比較的古い時代のコンピュータでは、各要素が1つのバスに接続されていた。SUNのVMEバスやMULTIBUSなど。)
基本的な例としてのバスの構造は下記のようになる。
[編集] アドレスバス
アドレスを転送するために使われる線。使われる線の本数をアドレスバス幅と言う。メモリのアドレスや入出力装置(I/O)のアドレスが出力される。例えば、Z80ではピン(信号)A00~A15がアドレスパスである。アドレスバス幅は16bitで、64KBのメモリを扱える。
メモリアドレスバスとI/Oアドレスバスは、ピンを共用する場合も、独立している場合もある。
[編集] データバス
CPUと、メモリやI/Oとの間でデータを転送するために使われる線。基本的には双方向通信が基本だが、S100バスのように、コンピュータ→周辺機器、周辺機器→コンピュータのデータの転送を分けたバスもある。使われる線の本数をデータバス幅という。
データバスもメモリ用とI/O用とで、ピンを共用する場合も、独立している場合もある。
[編集] 制御線
アドレスバスやデータバスで実際に入出力を行うタイミングや、その他CPUと外部との間での必要な制御情報を遣り取りする信号線。入力・出力は用途に応じて別。
例として、各バスに有効なデータが乗っている事を示す。制御信号のエッジで実際の転送動作が行われる。例えば、Z80ではMREQピンがアクティブになる事によりメモリとの転送である事を示し、RDピンはCPUへの入力(読み込み)、WRピンはCPUからの出力(書き込み)時にアクティブになる。
単純な構成では上記のようになるが、今日のより詳細な技術についてはCPUバスを参照のこと。
[編集] コンピュータ内部のバス (外部バス)
コンピュータ内部、すなわちCPUの外側から装置の内部までの間では、色々なバスが使われている。上記のCPU外部バスを含めて単に「外部バス」と言うこともある。
単純なマイコンでは上記のCPU外部バスの延長線の構成を取ることが多いが、今日ではパソコンでもチップセットによりシステムバス、メモリバスや入出力バスが統合されたチャネル構成を取る。
[編集] システムバス
コンピュータ内の各コンポーネントが接続されるバスである。上記のCPU外部バス、すなわちCPUから直接出た信号線を指すこともある。
フロントサイドバスとも呼ばれるがこの用語には諸説ある。今日のパソコンではCPUから出たシステムバスは「ノースブリッジ」と呼ばれるチップセットに集約して接続されるのが一般的である。
[編集] メモリバス
メインメモリを接続するバスである。
[編集] 入出力バス
I/Oバス。入出力装置が接続されるバスである。DMAによりチャネルバス構成を取る場合もある。今日のパソコンでは周辺機器との入出力のうち、PCI/IDE/USBなどの比較的低速なI/Oバスについては、「サウスブリッジ」と呼ばれるチップセットが制御する。AGP、PCI Expressなどの比較的高速なI/Oバスはノースブリッジに直接接続される。
総論として、現在のPCの構成では、バス構成よりもチャネル構成に近いので、外部機器(カード)を接続するバス(外部バス、拡張バス)が主に使われる。I/Oバスやメモリバスは、1990年代以前のPCや、現在もマイコンなどによく使われている。
[編集] 拡張バス
拡張バスとは、PCIなどの拡張カードを直接接続するバスを指す。拡張バスの項目を参照のこと。
[編集] シリアルバスとパラレルバス
[編集] シリアルバス
1ビットずつ順番にデータを転送するバス。複数の線上を流れるデータを同期する問題(タイミング・スキュー)や、クロストーク(干渉)の問題がないので、高速域では技術の進歩もありパラレルバスより高速にすることが容易となった。もっとも、初期のシリアルバス(RS-232C等)はパラレスバスよりも遙かに低速だった。
など
[編集] パラレルバス
シリアルバスと異なり複数の信号線を備えるバスを言う。データ線の本数によって、8ビット、16ビット、32ビットなどがある。
コンピュータの内部で使用されるデータバスやアドレスバスが、これにあたる。また、外部デバイスをつなぐバスとしても用いられ、GPIB、IDE/(パラレル)ATA、SCSI、PCIなどがある。
シリアルバスで述べたとおり、スキューやクロストークの問題から、近年高速化に限界が見られた。そのため、PCIの改良版PCI ExpressやパラレルATAの改良版シリアルATAでは、データラインはシリアルバスとなっている。
[編集] バスアーキテクチャ
代表的な実装