Zum Inhalt springen

Computerhardware: Busse

Aus Wikibooks

Was ist ein „Bus“?

[Bearbeiten]

Damit die CPU mit dem Arbeitsspeicher, Festplatten- und DVD-Laufwerken sowie mit anderen peripheren Baueinheiten Informationen austauschen kann, müssen diese miteinander verbunden sein. Die beste Variante in Bezug auf die Leistungsfähigkeit wäre, die betreffenden Bauteile direkt mit speziellen Leitungen zu verbinden. Wenn man allerdings jede von acht Steckkarten mit je 60 Anschlüssen direkt mit der CPU verbinden müsste, würde die Zahl der „Beinchen“ der CPU übermäßig anwachsen. Weil diese Variante zu aufwendig ist und man das System durch die starre Verdrahtung nicht erweitern könnte, verwendet man universell nutzbare Kommunikationswege: Die Bussysteme.

Unter einem Bus versteht man ein Bündel von zusammengehörigen Leitungen, wodurch die einzelnen Baugruppen eines digitalen Systems Informationen austauschen können. Eine Busstruktur weist prinzipiell vier Gruppen von Leitungen auf:

  • Versorgungsbus (Strom- und Taktversorgung, Initialisierungen, Anzeige von Hardwarefehlern)
  • Datenbus (überträgt die Daten zwischen Prozessor, Arbeitsspeicher und Peripherie)
  • Adressbus (überträgt die Adresse einer Speicherzelle im RAM oder eines E/A-Gerätes)
  • Steuerbus (bestimmt, ob die Information gelesen oder geschrieben werden soll)

Da die Wege zum Datenaustausch von allen angeschlossenen Baugruppen gemeinsam genutzt werden, muss für eine Ordnung gesorgt werden. Zu jedem Zeitpunkt (Takt) darf nur genau eine Baueinheit die Kontrolle über den Bus haben und Informationen senden. Andere Baugruppen müssen warten, bis sie an der Reihe sind und den Bus benutzen dürfen.

John von Neumann stellte 1945 ein Konzept für den Bau eines Computers vor. In dieser „von-Neumann-Architektur“ besteht ein Computer aus der Zentraleinheit (Steuerwerk und dem Rechenwerk), dem Speicher und den Ein-/Ausgabeeinheiten. Alle Einheiten sind über einen einzigen Bus, den Systembus miteinander verbunden. Diese Architektur hat einen gravierenden Nachteil: Der Bus ist der Flaschenhals des Systems (der sogenannte „Von-Neumann-Flaschenhals“, engl. Fachbegriff: „Von-Neumann-Bottleneck“). Moderne CPUs sind viel schneller, als die Daten über den Bus vom Speicher in den Prozessor geladen werden können.

Durch Spezialisierung und Strukturierung kann man diesen Engpass aber in gewissem Maße überwinden. Bei den ersten PC gab es nur einen einzigen Systembus. Später bekam der Arbeitsspeicher einen eigenen Speicherbus. Als nächstes wurde der Bus für Steckkarten aufgetrennt: Seit dem Pentium 4 hat die Grafikkarte einen eigenen Bus (den AGP Bus), der PCI-Bus versorgt alle anderen Steckplätze. Der Trend geht zu einer weiteren Spezialisierung der Busse:

  • Prozessorinterne Busse
  • Prozessorbus
  • Speicherbus
  • Systembus
  • Peripherie- oder I/O-Bus
  • Interrupt- oder Nachrichtenbusse

Heutige Hauptplatinen haben mindestens drei Busse:

  1. Einen sehr schnellen Bus zu den Modulen des Arbeitsspeichers. Beginnend mit den Dual-Core-CPUs ist der Speicherbus doppelt vorhanden, Spitzenmodelle haben drei oder vier Speicherbusse.
  2. Mehrere schnelle Busse zu den Steckplätzen (je einen für PCI und PCI-Express).
  3. Einen langsamen Bus für Tastatur, Maus, USB, Diskettenlaufwerk und andere langsame Geräte.

ISA: Industry Standard Architecture

[Bearbeiten]
Abb. 1.2: Verschiedene Busse: oben: ISA 8-Bit, mitte: ISA 16-Bit, unten: EISA 32-Bit

Im ersten IBM-PC wurde ein 8-Bit-Bus verwendet. Diese Architektur wurde von IBM nicht patentiert und konnte deshalb von vielen Herstellern nachgebaut werden. Mit der Einführung der PC-AT-Klasse mit dem ersten reinen 16-Bit-Prozessor i80286 wäre der 8-Bit-Bus zum Nadelöhr im Datenfluss geworden. Deswegen wurde mit dem PC-AT ein erweitertes Steckkartensystem eingeführt, der 16-Bit ISA-Standard.

Diesmal wurde das Bussystem präzise beschrieben! Der ISA-Bus war als weitgehend abwärtskompatibel entwickelt worden, so dass auch alte 8-Bit-Steckkarten in 16-Bit-Slots funktionierten.

Der ISA-Bus hat 16 Datenleitungen und 24 Adressleitungen. Die Taktfrequenz betrug je nach Hauptplatine 4,77 oder 6 oder 8 oder 8,33 MHz. Eine Übertragungsrate von max. 7 MByte pro Sekunde war möglich. Damit war der ISA-Bus optimal auf die Intel-CPU 80286 abgestimmt.

In den nachfolgenden 386er PCs und erst recht im 486er war der ISA-Bus überfordert. Für den 386er wurden der MCA-Bus und der EISA-Bus entwickelt. Beide erreichten nur geringe Verbreitung. Speziell für die 486er wurde der „Vesa Local Bus“ als Nachfolger entwickelt.

Heute ist der ISA-Bus ausgestorben. Seit dem Pentium-III haben die Hauptplatinen keinen ISA-Bus mehr, und spätere Systeme schon gar nicht.

Abb. 1.4: AGP-Grafikkarte

MCA: MicroChannel Architecture

[Bearbeiten]

IBM war nicht glücklich wegen der unzähligen Firmen, die Komponenten für den PC herstellten. Der ISA Bus war ja nicht patentiert oder sonst irgendwie geschützt. Zudem war der ISA-Bus für den 386er PC nicht mehr ausreichend. Um das Jahr 1987 herum versuchte IBM mit einem neuen Steckkarten- bzw. Bussystem die Nachteile des ISA-Standards wieder wettzumachen.

Mit dem MCA-Bus (MicroChannel Architecture) wurde ein Bussystem eingeführt, das eine wesentlich bessere Kommunikation zwischen den Bauteilen der Hauptplatine und den Steckkarten ermöglichte. Die MCA Architektur ist technisch fast auf PCI-Niveau, aber zum ISA-Standard nicht abwärtskompatibel.

Eine Busbreite von 32 Bit und ein Takt von 10 MHz ermöglichte eine Übertragungsrate von 40 MByte/s. IBM besaß das Monopol und konnte bestimmen, wer Steckkarten und Hauptplatinen in Lizenz bauen durfte.

EISA: Extended Industry Standard Architecture

[Bearbeiten]

Die anderen Hauptplatinenhersteller waren nicht gewillt, Lizenzgebühren zu zahlen. Die Lizenzgebühren waren relativ hoch. Microchannel konnte sich deshalb nie so recht durchsetzen. Die vereinte Konkurrenz schuf ein anderes, verbessertes Bussystem. Der EISA-Bus (Extended Industry Standard Architecture) wurde so konstruiert, dass auch die älteren ISA-Erweiterungskarten genutzt werden konnten. Das wurde dadurch erreicht, dass der Steckplatz wie der des ISA-Busses aussah, aber über zwei Reihen Kontakte übereinander verfügte. ISA-Karten erreichten nur die obere Kontaktebene, EISA nutzt zusätzlich die untere Kontaktreihe.

Der EISA-Bus hat einen 32-Bit Daten- und Adressbus. Seine Übertragungsgeschwindigkeit erreichte bis zu 16 MByte pro Sekunde bei 8,33 MHz.

Der EISA-Bus war der Vorgänger des PCI-Busses und ist eine Art Erweiterung des ISA-Busses mit einigen Optimierungen hin in Richtung Datendurchsatz und CPU-Entlastung – (damals) eigentlich ideal für Server!

VLB: VESA Local Bus

[Bearbeiten]

VLB wurde von der VESA entwickelt (Video Electronics Standard Association, Vereinigung der Hersteller von Grafikkarten). Ziel der Gemeinschaftsentwicklung war die Erweiterung des ISA-Busses mit dem Ziel, den 16-Bit-Engpass für die Grafikausgabe zu umgehen. VESA kam 1992 auf den Markt.

Ein normaler 16 Bit ISA-Steckplatzes wurde um einen zusätzlicher Steckverbinder verlängert. Dadurch kann VLB mit einer Datenbreite von 32 Bit arbeiten. Bei einer Taktfrequenz von 33 MHz ergibt das eine Datentransferleistung von max. 33 MHz × 4 Byte = 133 MByte/s. Maximal drei VLB-Steckplätze waren erlaubt. Eine höhere Taktfrequent ist möglich, wenn nicht alle Slots besetzt sind: Bei zwei VLB-Karten sind 40 MHz erlaubt, eine einzelne VLB-Karte durfte mit 50 MHz getaktet werden.

Der VESA-Bus war zu sehr auf die 486er CPU zugeschnitten und konnte an die nachfolgenden Pentium-CPUs nicht angepasst werden. Die direkte Verbindung des VLB mit dem empfindlichen Prozessorbus war problematisch. Auf Boards mit einer Pentium-CPU gibt es keine VLB-Steckplätze mehr. VLB verschwand bereits 1995 vom Markt.

Für die Pentium-Prozessoren entwickelte Intel ein neues Konzept.

PCI: Peripheral Component Interconnect

[Bearbeiten]
Tab. 1.3: Daten des PCI-Bussystems
PCI Version 1.0 2.2 bis 3.0 PCI-X 1.0 PCI-X 2.0
Busbreite 32 Bit 64 Bit 64 Bit 64 Bit
Bustakt 33 MHz 66 MHz 133 MHz 266 MHz
Übertragung 133 MByte/s 533 MByte/s 1067 MByte/s 2133 MByte/s

Peripheral Component Interconnect wurde 1991 von Intel speziell für den Pentium entwickelt. Die CPU wurde um einen Controller-Chip (heute nennt man das den „Chipsatz“) ergänzt. Der PCI-Bus wurde nicht mehr direkt mit dem Prozessor verbunden, sondern über diesen Controller-Chip entkoppelt. Der PCI-Bus war so weitsichtig und universell entwickelt worden, dass er auch in Apple Macintosh (seit 1995) und Alpha-Workstations zum Einsatz kam. Der PCI Bus ist bis ins Detail normiert und leicht nachzubauen.

Die Leistung von PCI konnte mehrmals gesteigert werden. Für die Weiterentwicklung und Standardisierung ist die PCI SIG (Peripheral Component Interconnect Special Interest Group) zuständig − eine Interessengemeinschaft der Hersteller von Computerkomponenten. Mitglieder sind Intel, AMD, Dell, HP, NVIDIA und weitere 800 Firmen. Die 2004 verabschiedete PCI-Version 3.0 ist die aktuelle Version. Speziell für Server wurde PCI-eXtended entwickelt. Der „ursprüngliche“ PCI wird als PCI-konventionell bezeichnet, um ihn von PCI-X und seinem Nachfolger PCIe unterscheiden zu können.

Die PCI-Komponenten müssen sich nicht auf Steckkarten befinden, sie können auch auf der Hauptplatine untergebracht werden (sogenannte „planar devices“).

Jede PCI-Komponente besitzt eine eindeutige Hardware-Kennung, die „PCI-ID“. Diese setzt sich aus drei Teilen zusammen: Class-ID: Hersteller-ID: Geräte-ID, z. B. hat der „82557B 10/100 PCI Ethernet Adapter“ von IBM die Hardware-Kennung 0200:1014:005C. Hier bedeuten:

0200 "Ethernet Network Controller", 1014 "IBM" und 005C für dessen "82557B 10/100 PCI Ethernet Adapter".

Die ersten beiden Ziffern der Class-ID bezeichnen eine von 22 Klassen: 01=Massenspeichercontroller, 02=Netzwerkkontroller, 03=Grafikkontroller, ... siehe https://pci-ids.ucw.cz/read/PD/. Wenn man auf eine Klasse dieser Tabelle klickt, werden die Unterklassen angezeigt: Bei Netzwerken (Klasse 02) z. B. 00=Ethernet, 04=ISDN.

In der „PCI Vendor and Device Lists“ auf der Webseite https://pci-ids.ucw.cz/v2.2/pci.ids finden Sie alle jemals hergestellten PCI- und PCIe-Geräte. Wenn Ihnen der Gerätemanager ein Gerät als „unbekannt“ anzeigt, klicken Sie mit der rechten Maustaste auf das Gerät, dann auf "Eigenschaften", dort finden Sie dessen Hersteller- und Gerätenummer.

Welche besonderen Eigenschaften hat der PCI-Bus (und seine Nachfolger AGP und PCIe)?

Plug and Play

[Bearbeiten]

Vom BIOS wird jede PCI-Erweiterungskarte nach ihren Ressourcenwünschen abgefragt und konfiguriert. Konflikte der Erweiterungskarten in Bezug auf Port-Adresse, Interrupt oder DMA-Kanal kommen − theoretisch − nicht mehr vor.

Interrupt-Sharing

[Bearbeiten]

Am ISA-Bus brauchte jedes Gerät eine eigene Interruptleitung zur CPU. Doch die Interrupts waren sehr knapp, Doppelbelegung war verboten. PCI-Komponenten können sich einen Interrupt teilen. Allerdings kommt es bei neuentwickelten Komponenten in Ausnahmefällen vor, dass die Teilung der Ressourcen wegen unsauber programmierter Treiber nicht funktioniert.

Bus-Master-Betrieb

[Bearbeiten]

Da der Prozessor über einen Controller (der sich im Chipsatz befindet) vom Bus entkoppelt ist, kann der PCI-Bus teils unabhängig von der CPU arbeiten. So kann beispielsweise die Festplatte Daten zum Brenner schicken, während die CPU unabhängig davon Berechnungen ausführt. Die PCI-Karte, welche die Daten sendet, ist der Master, und die Karte, welche die Daten empfängt, ist der Slave.

Für die Steuerung des Datenaustauschs tauschen die Baugruppen Steuerbefehle (Messages) aus. Der Standard erlaubt bis zu 256 verschiedene Steuerbefehle.

Multiplex-Prinzip

[Bearbeiten]

Seit der Version 2.1 kann der PCI-Bus 32 Leitungen für die Daten plus 32 Leitungen für Adressen haben. Durch den Multiplex-Betrieb dürfen die Hersteller 32 Leitungen einsparen, indem mit einem Takt zuerst die Adresse und in einem zweiten Takt das Datenwort gesendet wird.

Auf Server-Platinen gab es meist einen oder zwei „echte“ 64-Bit-Steckplätze, auf denen die Adress- und Datenleitungen gleichzeitig angesteuert wurden. Auf preiswerteren Platinen wurden meist 32-Bit-Steckplätze verwendet, die im Multiplexbetrieb genutzt wurden.

Burst-Modus

[Bearbeiten]

Der Bus-Controller bekommt nur die Startadresse und die Bytezahl von der CPU mitgeteilt und überträgt dann einen beliebig großen Speicherblock ohne weitere Beteiligung der CPU. Das nennt man den „Burst-Modus“. Ein Latenz-Timer überprüft in regelmäßigen Abständen, ob eine andere Komponente den PCI-Bus dringend benötigt, und unterbricht nötigenfalls einen langen Burst.

Elektrische Entkopplung

[Bearbeiten]

Zwischen CPU und den Erweiterungssteckplätzen befinden sich Puffer-Schaltkreise, die stabile elektrische Signale garantieren. CPU und PCI-Bus können dadurch mit unterschiedlicher Frequenz getaktet werden. Die in der Tabelle 1.4. für den PCI-Bus angegebenen Taktfrequenzen sind Höchstwerte. Der Takt darf auch geringer und sogar variabel sein, z. B. kann er zum Energiesparen heruntergesetzt werden.

AGP: Accelerated Graphics Port

[Bearbeiten]

Der Accelerated Graphics Port (etwa: beschleunigter Grafikkarten-Anschluss) wurde von Intel und Microsoft entwickelt, um Programmen mit starker Video-Orientierung (Videokonferenzen, 3D-Spiele) mehr Videoleistung bereitstellen zu können. AGP hat im Vergleich zu PCI die doppelte Übertragungsrate.

AGP ist direkt mit dem Chipsatz der Hauptplatine verbunden und kann unmittelbar auf den RAM zugreifen.

AGP-Bus ist (wie der PCI-Bus) 32 Bit breit, wird aber doppelt so schnell getaktet: Der AGP-Bus arbeitete anfangs mit 66 MHz, der PCI Bus mit 33 MHz. Das ergibt eine Datenübertragungsrate von 4 Byte × 66,66 MHz = etwa 266 MByte/s.

Es sind vier Zugriffsarten definiert:

  1. AGP x1 Modus 266 MByte/s die ursprüngliche Definition, wie oben
  2. AGP x2 Modus 533 MByte/s Doppelter Takt (133 MHz)
  3. AGP x4 Modus 1066 MByte/s Achtung: andere Betriebsspannungen!
  4. AGP x8 Modus 2133 MByte/s 533 MHz, 32 Bit Bus (seit 2000)

Die AGP-Schnittstelle wurde nicht mehr weiterentwickelt. Dafür gab es mindestens zwei Gründe.

  • Die Geschwindigkeit: Mit einem Faktor x8 ist die Technologie an ihre Grenzen geraten.
  • Der Leistungsbedarf: Grafikkarten brauchen immer mehr Strom, der über den Steckplatz zugeführt werden muss. Ein Standard-AGP-Slot liefert maximal 25 Watt. Ein kurzer PCI-Express-Slot stellt immerhin 75 Watt bereit. Im Jahr 2003 lag der typischer Verbrauch einer Grafikkarte noch bei etwa 60 Watt, inzwischen haben Spitzenexemplare einen Leistungsbedarf von bis zu 325 Watt. Deshalb sehen die Netzteil-Spezifikationen seit dem Formfaktor ATX 2.2 einen oder zwei zusätzliche Stromanschlüsse für die Grafikkarte vor.

Etwa im Jahr 2007 begann die Ablösung von AGP durch PCI Express (abgekürzt: PCIe). AGP-Karten werden schon lange nicht mehr hergestellt. Alle modernen Grafikkarten benutzen den PCIe-Bus.

PCI Express: Peripheral Component Interconnect Express

[Bearbeiten]
Tab. 1.4: Vergleich der Eigenschaften von Bus-Systemen
  Bus-Breite Takt Transfer
ISA 16 Bit 8,33 MHz 7 MByte/s
MCA 32 Bit 10 MHz 40 MByte/s
EISA 32 Bit 8,33 MHz 16 MByte/s
VLB 32 Bit 33 MHz 133 MByte/s
PCI 2.2 64 Bit 66 MHz 533 MByte/s
AGP x8 32 Bit 533 MHz 2133 MByte/s
PCIe x1 1 Bit 8 GHz 985 MByte/s
PCIe x16 16 Bit 8 GHz 15754 MByte/s

Die gegenwärtig modernste universelle Schnittstelle heißt PCI-Express. Sie wurde 2003 von Intel entwickelt und wird als PCIe bezeichnet. Mit einem Zusatz, z. B. „x16“ wird die „Busbreite“ angegeben. Alle guten Eigenschaften von PCI wurden beibehalten (um die Kompatibilität zu sichern).

PCIe nutzt eine variable Anzahl von unabhängigen Datenkanälen („Lane“ oder „Links“), die in Gruppen von 2, 4, 8, 16 oder 32 gebündelt werden können. In jedem einzelnen Kanal werden die Daten seriell übertragen. Von einem Parallel-zu-Seriell-Wandler werden jeweils 8 Datenbit zu 10 Übertragungsbit umcodiert, seriell übertragen und von einem Seriell-zu-Parallel-Wandler in 8 Datenbits zurückverwandelt. Welchen Zweck hat diese „8B/10B“ Kodierung? Erstens dienen die Extra-Bits als Paritätsbit. Zweitens wird damit sichergestellt, dass pro Byte eine gleiche Zahl von „Nullen“ und „Einsen“ übertragen wird. Nur mit diesem „Gleichgewicht“ können hohe Übertragungsraten erreicht werden. Weil pro Nutzbyte zehn Bits übertragen werden (Verhältnis 1:10), verhält sich auch die Übertragungsrate zum Takt wie 1:10, z. B. 250 MByte/s bei einem Takt von 2500 MHz.

Die PCIe-Komponenten werden „Punkt zu Punkt“ verbunden. Dadurch können mehrere Verbindungspaare gleichzeitig existieren, die unabhängig voneinander Daten übertragen können und sich nicht gegenseitig bremsen. Steng genommen ist PCIe kein Bussystem: Solange in einem Bussystem eine Übertragung läuft, ist der Bus besetzt und es kann keine zweite Übertragung gleichzeitig stattfinden.

Abgesehen von der seriellen Übertragung ist PCIe voll software-kompatibel zu PCI, so dass weder Betriebssysteme noch Treiber und Anwendungsprogramme angepasst werden müssen.

Pro Lane (Datenkanal) können je 250 MByte/s in jeder Richtung (bidirektional und Vollduplex) übertragen werden. Bei Nutzung von 16 Links standen in der PCIe-Version 1.0 bereits 4 GByte/s pro Übertragungsrichtung zur Verfügung, in Version 4.0 werden es durch den höheren Takt bereits 31,5 GByte/s sein. Zum Vergleich: AGP 8x bringt 2,1 GByte/s vom RAM zur Grafikkarte, in der Gegenrichtung nur 255 MByte/s.

Die Steckplätze werden länger: Sie wachsen mit 132 Pins (67 mm) bei AGP auf 184 Pins (85 mm) bei PCIe. Hot-Plug ist möglich, wenn es von den Komponenten und deren Treiber unterstützt wird.

Tab. 1.5: Arten von PCIe-Steckplätzen, deren Länge und mögliche Übertragungsrate
Erschienen   2003 2007 2012 12/2017
Version   1.0/1.1 2.0/2.1 3.0 4.0
Takt   2,5 GHz 5 GHz 8 GHz 16 GHz
PCIe x1 25 mm 250 MB/s 500 MB/s 985 MB/s 1969 MB/s
PCIe x4 39 mm 1000 MB/s 2000 MB/s 3938 MB/s 7877 MB/s
PCIe x8 56 mm 2000 MB/s 4000 MB/s 7877 MB/s 15754 MB/s
PCIe x16 89 mm 4000 MB/s 8000 MB/s 15754 MB/s 31508 MB/s
PCIe x32   8000 MB/s 16000 MB/s 31508 MB/s 63015 MB/s

Für kompakte Hauptplatinen gibt es kurze PCIe x1 Slots bis PCIe x4 Slots. Die kurzen PCIe-x1-Steckplätze benutzen nur einen Kanal und können damit in Ein- und Ausgaberichtung gleichzeitig je 250 MByte/s transportieren. Das ist für Gigabit-Netzwerkkarten, USB 2.0-Karten und Soundkarten ausreichend.

PCIe x16 bündelt 16 Kanäle und wird vor allem für Grafikkarten verwendet. Ein oder zwei PCIe-x16-Slots sind üblich für Standard-Mainboards. Man kann kürzere Karten in längere Slots stecken. Die Bauform mancher Steckplätze erlaubt das Einstecken von längeren Karten in kürzere Steckplätze.

Auf Mainboards der gehobenen Klasse findet man zwei und mehr PCIe x32 Steckplätze für Grafikkarten, auch gibt es x4 und x8 Slots für anspruchsvolle Peripherie. Auch auf Serverplatinen gibt es PCIe x32-Steckplätze, z. B. für Festplattencontroller.

Um die Standardisierung und die Weiterentwicklung kümmert sich die PCI SIG (Peripheral Component Interconnect Special Interest Group). Der Standard für Version 4.0 wurde im Dezember 2017 veröffentlicht, die Version 5 mit erneut verdoppelter Datenrate soll 2019 veröffentlicht werden. Das Grundkonzept von PCIe ist so gut, dass es in abgewandelter Form für DisplayPort, SATA, SATA-express und SAS verwendet wird.