mini|Älteres PC-Mainboard mit typischen Bus-Steckplätzen für RAM-Speicherriegel (oben Mitte) sowie ISA- und PCI-Steckkarten (schwarz bzw. weiß, von unten li.)

Ein Bus ist ein System zur Datenübertragung zwischen mehreren Teilnehmern über einen gemeinsamen Übertragungsweg. Findet eine momentane Datenübertragung zwischen zwei Teilnehmern statt, so müssen die übrigen Teilnehmer zur selben Zeit schweigen, da sie sonst stören würden. Die Zeit der Sprechberechtigung wird nach einem allen Teilnehmern bekannten (Zeit- oder Signal-)Schema verteilt. Das Zuhören ist nicht eingeschränkt. Umgangssprachlich werden mitunter – oft aus historischen Gründen – auch Datenübertragungssysteme als „Bus“ bezeichnet, die technisch eigentlich eine andere Topologie besitzen.

Etymologie Für Herkunft und ursprüngliche Bedeutung des Wortes „Bus“ gibt es verschiedene Erklärungen.

Eine Deutung des Begriffs stützt sich mangels schriftlicher Quellen auf die Erinnerung von Ingenieuren, die in den 1970er Jahren und früher mit BUS-Systemen befasst waren. Der Begriff stamme demnach aus der in Schaltplänen verwendeten Abkürzung „BU“ für Back (mounted) Panel Unit, womit man in 19-Zoll-Racks eine Komponente bezeichnet, die an die Rückwand des Einschubs montiert ist. BUS bezeichne dann entsprechend Back Panel Unit Sockets für an die Rückwand montierte Steckplätze. Entsprechend leite sich auch der englische Begriff busbar ab, was so viel wie Sammelschiene bedeutet.

Gelegentlich wird für die Begriffsherkunft ein Zusammenhang mit dem Omnibus vermutet.

Teilweise wurden auch Theorien über Backronyme geäußert. Die Abkürzung Bus stehe demnach für Binary Unit System.

Grundbegriffe Frühere Busse waren tatsächlich nur parallele Stromschienen mit mehreren Anschlüssen. Aus dieser Zeit (ab 1898) stammen die englischen Bezeichnungen omnibus bar und abgekürzt bus bar für solche Sammelschienen (power rail). Üblich ist die Bezeichnung Bus für Sammelschienen bei den elektrischen Anlagen von Flugzeugen bis heute, wobei man vor allem zwischen AC-Bus (Wechselspannung) und DC-Bus unterscheidet. Diese Bezeichnung wurde wohl für Daten-Sammelleitungen (Datenbusse) übernommen, die Informationen an die angeschlossenen Teilnehmer weitergeben.

An den Signaladern, auf denen (ggf. synchronisiert) Informationen übertragen werden können, können mehrere kommunizierende Komponenten angeschlossen sein. Die an einem Bus angeschlossenen Komponenten werden auch als Knoten oder Busteilnehmer bezeichnet.

Parallel und seriell Es lassen sich grundsätzlich parallele von seriellen Bussen unterscheiden:

Bei einem seriellen Bus wird die zu übertragende Information in ihre kleinsten Einheiten (z. B. einzelne Bit) aufgeteilt. Diese werden über nur eine Signalleitung nacheinander gesendet.

Bei einem parallelen Bus gibt es mehrere Signalleitungen, z. B. 8, sodass immer ein Informationspaket (hier z. B. 1 Byte) gleichzeitig gesendet werden kann. Die Signalleitungen müssen im selben Takt bleiben und gleich lange Signallaufzeiten besitzen; durch ihren gemeinsamen Verlauf droht Übersprechen.

Ein paralleler Bus besteht im Wesentlichen aus einer Anzahl nebeneinander verlaufender Signaladern, auf denen synchronisiert Informationen übertragen werden können und an denen mehrere Komponenten angeschlossen sind. Die Anzahl der nebeneinander verlaufenden Leitungen nennt man auch Breite des Busses – sie ist im Allgemeinen gleich der Anzahl der Bits, die ein Bus gleichzeitig übertragen kann.

Master und Slave, Initiator und Target Knoten, die selbständig einen Kommunikationsablauf auf dem Bus initiieren dürfen (unaufgefordert Daten an andere Knoten senden), bezeichnet man als aktive Knoten oder Master, die anderen Knoten sind passive Knoten, auch Slave genannt – solche Knoten dürfen nur auf Anfragen antworten.

Ein Bus, der mehrere Master-Knoten erlaubt, heißt Multimaster-Bus. Bei einem Multimaster-Bus ist eine zentrale oder dezentrale Busvermittlung notwendig, die gewährleistet, dass zu jedem Zeitpunkt jeweils nur ein Master die Bus-Herrschaft besitzt. Dies ist notwendig, da durch gleichzeitige schreibende Zugriffe auf den Bus nicht nur Daten verloren gehen können, sondern auch die Hardware beschädigt werden könnte. Bei einer zentralen Busvermittlung wird der Buszugriff von einer speziellen Komponente gesteuert, die Bus-Arbiter genannt wird. Derjenige Knoten, der einen Zugriff auf den Bus initiiert, heißt Initiator, das Ziel eines solchen (lesenden oder schreibenden) Zugriffes heißt Target. Manche Busse bieten für die Slave-Knoten eine gesonderte Signalleitung, auf der ein Slave dem Master ein Signal-Bit senden kann, dass ein Slave abgefragt werden möchte.

Verwendungsart Je nach Verwendungsart unterscheidet man Systembusse, Speicherbusse, Peripheriebusse und Ein-/Ausgabebusse.

Bus-Strukturen

Signalreflexion und Terminierung Ob etwas funktionell/signaltechnisch ein Bus ist, hängt nicht zwingend von der physischen Topologie ab.

Da auf Bussystemen oft sehr hochfrequente elektrische Signale übertragen werden, können an Verzweigungen und Enden des Übertragungsmediums auftretende Reflexionen nicht vernachlässigt werden; sie können zur Auslöschung der Signale durch Interferenz an bestimmten Stellen und damit zur Fehlfunktion des gesamten Systems führen. Deshalb ist ein im Wesentlichen eindimensionaler elektrischer Leiter als Übertragungsmedium signaltechnisch günstig und am häufigsten anzutreffen (Beispiel SCSI). Hier lassen sich Reflexionen an den Leitungsenden durch Terminierung einfach verhindern. Terminierung durch einen einfachen Abschlusswiderstand verursacht eine hohe Verlustleistung, ein alternatives RC-Glied verursacht einen schwankenden Ruhepegel. Aufwendiger ist die aktive Terminierung, die den Ruhepegel durch einen Spannungsregler vorgibt.

Multiplexing Da Adress- und Datenbusse auf einer Leiterplatte eine große Anzahl gleichartiger Leiterbahnen benötigen, verbraucht dies einerseits viel Platz und benötigt entsprechend viele Pins an den Bausteinen, andererseits kann das auch elektrische Probleme wie Übersprechen vergrößern. Deshalb gibt es als eine Lösung den Ansatz, diese Anzahl zu halbieren, indem man die Information in zwei Hälften aufteilt: die höherwertigen Bits und die niederwertigen. Diese beiden Gruppen sendet man nacheinander in zwei Busphasen: in einer sendet man die eine Hälfte und in einer anderen die andere Hälfte der Signale über dieselben Leitungen (Multiplexbus). Ein zusätzlicher Steuerpin muss dann diese Busphasen kennzeichnen. Es handelt sich also um ein Zeitmultiplex-Verfahren. Das wurde in der Praxis z. B. beim Adressbus des 8080-Prozessors so gemacht, und bei dynamischen RAMs (DRAMs) führt das zu den RAS- und CAS-Zyklen.

Bus als Teil des Computers

In der Computerarchitektur ist ein Bus ein Untersystem, das Daten oder Energie zwischen Computerbestandteilen innerhalb eines Computers oder zwischen verschiedenen Computern überträgt. Anders als bei einem Anschluss, bei dem ein Gerät mit einem anderen über eine oder mehrere Leitungen verbunden ist (Point-to-Point-Verbindung), kann ein Bus mehrere Peripheriegeräte über den gleichen Satz von Leitungen miteinander verbinden.

Moderne Computerbusse können sowohl parallel, als auch bit-seriell verwendet werden. Während bei der eigentlichen Netz-Topologie der klassischen Bus-Leitung alle Teilnehmer nebeneinander am Bus hängen, können durch geeignete Kontaktierungen Knoten in einer kettenförmigen Anordnung hintereinander geschaltet werden. Neben der Netzwerktopologie auf der physikalischen Ebene kann ein busähnliches Verhalten auch durch entsprechende Implementierungen nachgebildet werden (vgl. höhere Übertragungsebenen im OSI-Modell).

Die meisten Computer haben interne und externe Busse. Ein interner Bus schließt interne Bestandteile eines Computers an die Hauptplatine an, beispielsweise die Verbindung zwischen CPU und dem Arbeitsspeicher. Ein solcher interner Bus wird auch als lokaler Bus bezeichnet, weil er dafür gedacht ist, im Computer selbst vorhandene Geräte zu verbinden, und nicht mit solchen in anderen Computern oder mit externen. Ein externer Bus schließt demgemäß externe Peripherie an die Hauptplatine an.

Aus historischen Gründen werden heute mitunter auch interne Verbindungssysteme als „Bussystem“ bezeichnet, die keinen topologischen Bus-Aufbau besitzen – meist, weil die Vorgänger-Systeme topologisch noch echte Bus-Systeme waren. Beispielsweise wird PCIe oft als Bussystem bezeichnet (PCI war ein echter Bus), obwohl es topologisch ein Punkt-zu-Punkt-System ist.

Adressierungsverfahren Ein Bussystem ist immer so organisiert, dass zu einem bestimmten Zeitpunkt nur ein einzelner Knoten Daten auf den Bus ausgibt (bzw. Probleme bei zeitgleichem Schreiben gelöst werden). In den allermeisten Fällen sollen die Daten zu einem bestimmten anderen Knoten transportiert und von diesem weiterverarbeitet werden. (Nur in seltenen Fällen verwerten mehrere Empfangsknoten gleichzeitig die gesendeten Daten, beispielsweise bei den CAN-Bussen eines Automobils oder bei Broadcast-Nachrichten). Zur Identifizierung des Zielknotens wird eine Adressierung vorgenommen, oft über den eigens dafür eingerichteten Adressbus.

Busse unterscheiden sich in der Art, wie einzelne Knoten adressiert werden. Sowohl für parallele als auch für serielle Busse gibt es eine Reihe typischer Verfahren.

Adressierung in Parallelbussystemen Ein einfaches Adressierungsschema sieht wie folgt aus: Lediglich eine einzige Komponente ist ein Busmaster (in der Regel ist dies der Prozessor), alle anderen sind passiv. Für jeden angebundenen Slave gibt es eine Select-Leitung, über die der Master diesen Slave zu seinem Kommunikationspartner erklärt. Die eigentlichen Daten werden anschließend über einen separaten Datenbus gesendet. Dieses Verfahren wird beispielsweise bei SPI angewendet.

Wenn jede angeschlossene Komponente über einen eigenen Adressdekoder verfügt, kann statt separaten Select-Leitungen eine „Slave-Gerätenummer“ übertragen werden, wofür nur Leitungen notwendig sind. Die einzelnen Adressdekoder entscheiden dann anhand der angelegten Gerätenummer unabhängig voneinander, ob ihre Komponente die gemeinte ist oder nicht. Dieses Verfahren wird beispielsweise bei dem ISA- oder XT-Bus angewendet. Beispiel: Für n = 32 mögliche Geräte wären anstatt 32 Select-Leitungen nur 5 Adressleitungen notwendig, weil 25 = 32.

Ein anderes Prinzip arbeitet ohne eigene Adressleitungen. Entsprechend dem weiter oben dargestellten Multiplexing wird zunächst die Adresse über die Leitungen übertragen. Nun kann (wie oben beschrieben) beispielsweise per Adressdekoder eine Adressierung stattfinden – wobei sich nun die beteiligten Partner merken müssen, ob sie angesprochen sind, da die Leitungen nach Ende der Adress-Phase anderweitig verwendet werden – zur Datenübertragung – und somit die Adresse nicht mehr auf dem Bus zur Verfügung steht. Normalerweise gibt es eine gesonderte Steuerleitung, die anzeigt, ob gerade eine Adresse oder ein Datenwort auf den Signalleitungen anliegt. Dieses Verfahren wird beispielsweise bei dem I²C- oder PCI-Bus angewendet.

Eine Abwandlung hiervon wird beim SCSI-Bus benutzt. Vor der Adressierung (im SCSI-Jargon Selection Phase genanntBernhard Huber, Georg Schnurer: SCSI 1-2-3 – Pfade durch den SCSI-Dschungel, c’t – Magazin für Computertechnik 11/1993, S. 106 ff., im Online-Archiv (kostenpflichtig)) erfolgt eine Arbitration Phase. Dabei meldet sich jede Komponente, die den Bus benutzen will, indem sie die Datenleitung, die ihrer Adresse (SCSI-ID) entspricht, mit '1' belegt. Dadurch wird zwar die Anzahl der möglichen Adressen auf die Anzahl der parallelen Busleitungen beschränkt (gegenüber beim nichtgemultiplexten Adressbus mit Leitungen), dafür kann jedoch ein Buskonflikt recht einfach vermieden werden, also die Situation, dass mehrere Komponenten gleichzeitig den Bus benutzen wollen: Bei SCSI hat das Gerät mit der höchsten Adresse die höchste Priorität und wird nun zum Busmaster (Initiator).