In diesem Techlet geht es um die wichtigsten Unterschiede zwischen parallelen Bussen und so genannten Point to Point, also Punkt zu Punkt Links. Warum es sie gibt, warum sie sind, wie sie sind, und warum parallele Busverbindungen immer öfter durch serielle Links ersetzt werden. Typische Vertreter für parallele Busse sind beispielsweise der PCI-Bus oder die PATA-Festplattenanschlüsse, welche nun nach und nach durch ihre seriellen Nachfolger PCI Express und SATA verdrängt werden.
Parallel: breit und stark
Dazu ist zunächst ein kleiner Ausflug in die Geschichte der Desktop-Computer und Elektronik notwendig. Bei der Festlegung der Normen für den IBM-PC und dessen Nachfolger musste man natürlich, genau wie heute, Rücksicht auf das technisch und vor allem finanziell Machbare nehmen. Es gab Schaltkreise, die preiswert ziemliche Mengen Transistoren und Logik integrierten. Problematisch waren aber hohe Frequenzen. Nicht nur für die Elektronik, sondern auch für Kabel, Leiterbahnen und Verbindungen. Also ordnete man mehrere Datenleitungen nebeneinander an und konnte so mit niedrigen Frequenzen die Daten gleich 4-Byte-weise quer durch den PC schicken.
Mit dieser Lösung handelte man sich aber auch Nachteile ein, zum Beispiel ein komplexes und platzfressendes Design. Also gibt es üblicherweise nur einen PCI-Bus, nur 2 PATA-Anschlüsse und nur einen Frontsidebus, die sich die angebundenen Geräte brüderlich teilen müssen.
Zur Verdeutlichung hier eine Darstellung eines einfachen 8-Bit Busses plus Taktsignal (rot) ohne Interruptleitungen:
Im obigem Diagramm sind die Sendeschaltungen gelb und die Empfänger in blau dargestellt. Bei einem parallelen Busanschluss sind diese Schaltungsteile eng ineinander verflochten, was die Farbübergange veranschaulichen. Eines der Geräte am Bus ist der Buscontroller und bestimmt, wer senden darf und wer sich tot stellen muss.
Will ein Gerät auf den Bus senden, muss es entweder warten, bis es dran ist, oder per Interrupt dem Buscontroller mitteilen, dass es senden will. Dann werden die Busanschlüsse auf Senden gestellt, und die Daten werden synchron mit dem Takt per Spannungspegel auf den Bus übertragen. Die anderen Geräte müssen in dieser Zeit ihre Ausgänge komplett abschalten, und zwar aus folgendem Grund: Logisch "0" ist elektrisch Low-Pegel und das heißt bei CMOS-Schaltkreisen, dass der masseseitige Ausgangstransistor voll durchgeschaltet ist. Sendet ein anderes Gerät eine logische "1" mittels High-Pegel auf eine Busleitung, steuert hier der Ausgangstransistor zwischen Ausgang und Betriebsspannung durch.
Stehen jetzt andere Ausgänge auf Low, wird die Ausgangsspannung einfach darüber kurzgeschlossen. Es gäbe keinen sicher erkennbaren Spannungspegel und im Extremfall könnte der Ausgang sogar zerstört werden. Deshalb braucht man so genannte Tristate-Ausgänge. Neben den elektrischen Pegeln High und Low müssen diese auch auf "hochohmig" schalten können. Das heißt, dass beide Ausgangstransistoren gleichzeitig gesperrt werden müssen, um die momentan inaktiven Ausgänge sicher von der Busleitung zu trennen, der Busanschluss muss sich also wirklich regelrecht tot stellen.
Schon auf der vereinfachten Zeichnung kann man erkennen, dass da eine Menge Last an den einzelnen Leitungen hängt. Mehrere Geräte mit jeweils abgeschaltetem Ausgang und ihrem Eingang belasten den Bus, dazu kommt das Leitungsnetz auf dem Mainboard oder das Flachbandkabel bei PATA und darüber hinaus auch noch leere Slots. Alle Teile, ob in den Chips verborgen oder offen als Leitung oder Kontakt, all das sind sozusagen kleine Kondensatoren gegen Masse und gegeneinander, die auch bei jedem Pegelwechsel mit umgeladen werden müssen.
Dieser ganze Ballast verhindert erfolgreich, mal schnell eine neue Version mit höherem Takt einzuführen. PCI kam im Desktop-Bereich nie über 33 MHz hinaus, PATA mit 133 MB/s war ein Experiment, bei dem schon die meisten Festplatten-Hersteller nicht mehr mitgemacht haben. Der gute alte Parallelport muss auch noch mit langen Kabeln kämpfen, und ist daher auch nicht zu beschleunigen.
Die einzigen wirklich schnellen parallelen Busse in heutigen PCs sind der Frontsidebus und der Speicherbus. Beide schaffen nur mit hohem technischem Aufwand ihre hohen Frequenzen und Datenraten. Sie sind nur auf kurzen Strecken zuverlässig, die Ausgangsstufen müssen sich ständig an die Last anpassen, die Busse sind aufwendig terminiert und die Anzahl der Geräte am Bus ist eng begrenzt, wie z.B. beim Athlon 64 für den Sockel 939 deutlich wurde, der bei vollem Takt nur ein zweiseitiges oder zwei einseitige Speichermodule pro Kanal sicher betreiben konnte.
Ein weiteres Problem, welches die Platinendesigner betrifft, ist die Gleichzeitigkeit der Signale. Es müssen immer alle Bits gleichzeitig ankommen. Schaltet der Takt schon um, ehe alle Bits stabil anliegen, gibt es Datenfehler. Bei Takten von mehreren hundert Megahertz reichen schon einige Millimeter Längenunterschied der Leitungen, um merkliche Laufzeitdifferenzen zu erzeugen. Was also tun, wenn die Anschlüsse an den Chips nun mal nicht millimetergenau in einer Reihe stehen?
Die Lösung sieht dann so aus:
Immer komplexere Elektroniktricks sind also offensichtlich kein Allheilmittel, um mit parallelen Bussen höhere Frequenzen und Datenraten zu erreichen.
Seriell: dünn und flink
Der Schlüssel zu höheren Datenraten liegt wie erwähnt und auch allgemein bekannt in höheren Frequenzen. Der aktuelle Ansatz ist also, auf echte Hochfrequenztechnik zu setzen und die PC-Technik daran anzupassen, statt den klassisch elektrischen Ansatz der alten Busse mit immer mehr Aufwand auf hohe Frequenzen zu trimmen.
Dazu wurde die Schaltungstechnik radikal vereinfacht. Sender und Empfänger wurden getrennt, so dass man für beide Funktionen optimal angepasste Schaltungen verwenden konnte. High- und Low-Pegel wurden abgeschafft. An die Stelle der festen Zuordnung von z.B. <0,8V = Low und >2,4V = High traten Signalspannungen, die nur wenige Zehntel Volt um einen Mittelwert schwanken. Dies wird einerseits getan, um die Ausgangstransistoren nicht zu sättigen, also mit Ladungsträgern vollzupumpen, denn bei einem gesättigten Transistor müssten diese bei einem Pegelwechsel erst wieder umgeladen werden, ehe der Transistor überhaupt anfängt umzuschalten. Zum anderen ist bei den für serielle Links verwendeten Schaltungen nicht die Frequenz die eigentliche Grenze, sondern die Änderungsgeschwindigkeit der Ausgangsspannung, die so genannte Slewrate. Muss man weniger Weg zurücklegen (weniger Volt Spannungsänderung), kann man das öfter pro Sekunde schaffen.
Um auch noch das Taktsignal einsparen zu können, wurden Codierungen entwickelt, die dafür sorgen, dass immer nach einigen Nullen oder Einsen zwangsweise einmal umgeschaltet wird. Der Nachteil ist, dass man zum Übertragen von 8 Bit nun 10 oder 11 Bit benötigt, der Vorteil ist, dass auch wenn man stundenlang Nullen überträgt immer wieder der Signalpegel wechselt. Auf diese Wechsel kann sich der Empfänger synchronisieren und das Taktsignal zurückgewinnen. Das ist ein Trick, der in der Anfangszeit der Computertechnik, aus der die parallelen Busse stammen, undenkbar gewesen wäre. Heute kommt es auf ein paar Tausend Transistoren in einem integrierten Schaltkreis nicht mehr an, wenn man damit eine Leitung auf einer aufwändigen Platine sparen kann.
Da nur noch mit ganz geringen Signalpegeln gearbeitet wird, kann man nicht mehr mit einfachen Flachbandkabeln oder groben Steckverbindern arbeiten, denn dann käme vom Signal nichts mehr an, dafür aber umso mehr Störungen. Um die Störanfälligkeit zu senken, wird mit zwei technischen Tricks gearbeitet. Der erste ist die Verwendung eines Leitungspaares statt einer einzelnen Leitung. Der Sender erzeugt eine Spannungsdifferenz auf dem Leitungspaar, und der Empfänger wertet auch nur genau diese Differenz aus.
Störungen wirken immer auf beide Leitungen des Paares gleichmäßig und werden daher vom Empfänger gar nicht wahrgenommen. Außerdem werden die Leitungen nach den Regeln der Hochfrequenztechnik ausgeführt. Dazu gehört ein genau definierter Abstand der Leitungen untereinander und zur Masse auf der Platine, im Steckverbinder und in eventuell vorhandenen Kabeln sowie eine durchgehende Abschirmung.
Um nicht sämtliche Betriebssysteme und Treiber an die neue Übertragungstechnik anpassen zu müssen, wurde die Technik so gestaltet, dass die Software wie bisher vorgehen kann. Hier wieder eine Darstellung der technischen Realisierung, mit einem Host, der zwei Geräte über serielle Links anbindet. Das könnte z.B. ein SATA-Controller mit zwei Platten sein, oder ein Teil des Chipsatzes, der zwei PCIe-Geräte anbindet. Die Technik ist grundsätzlich gleich.
Die Software schreibt die Daten eines Datenworts, also einer definierten Gruppe von zusammengehörigen Binärzeichen, in den Sendepuffer (gelb), und ab hier kümmert sich die Hardware um die Übertragung. Die 8, 16, 32 oder mehr Bits werden sehr schnell nacheinander aus dem Puffer gelesen, mit der buseigenen Codierung versehen und im Gänsemarsch über das Leitungspaar geschickt. Im Empfänger (blau) wird die Übertragung wieder decodiert und die nacheinander übertragenen Bits werden wieder zu einem kompletten Wort zusammengesetzt, das dann am Stück weiterverarbeitet werden kann.
Will man Daten in die andere Richtung verschicken, wird dazu ein komplett unabhängiger Schaltungsteil verwendet. Dieses ist identisch aufgebaut, nur dass Sender und Empfänger vertauscht sind. Der große Vorteil ist, dass der Sender wirklich nur sendet, und der Empfänger wirklich nur empfängt, im Gegensatz zu einem klassischen parallelen Bus. Jeder Schaltungsteil ist optimal für seinen Zweck ausgelegt, und muss nicht zwischen verschiedenen Modi wechseln oder zeitweise nicht benutzte Transistoren mit schleppen.
Die Sache hat natürlich einen kleinen Haken: Während die Übertragung eines Wortes bei einem parallelen Bus genau einen Takt dauert, braucht ein serieller Link einen Takt für jedes Bit des Wortes plus die zusätzlichen Bits, die für die Codierung benötigt werden. Die Verwendung eines seriellen Links macht also nur Sinn, wenn man die Taktfrequenz um diesen Faktor gegenüber einem parallelen Bus steigern kann. Da die serielle Technik aber von der Hochfrequenztechnik abstammt, ist das kein Problem.
Multilink: flink und breit
Reicht die Übertragungsleistung eines Links nicht, kann man Links zusammenschalten. Bei einem PCI Express x16 Grafikkartensteckplatz gibt es also 16 unabhängige Links in jede Richtung. Wichtig dabei ist, dass nicht etwa ein Datenwort wie bei einem parallelen Bus auf die einzelnen Links aufgeteilt wird, sondern immer jeder Link ein Wort überträgt. Das nächste Wort wird dann vom nächsten Link übernommen usw.
Kleine Pufferspeicher in den Sendern und Empfängern sorgen dann dafür, dass die Worte nach der Übertragung wieder in der richtigen Reihenfolge sortiert sind. Der große Vorteil dieser Unabhängigkeit ist, dass man Laufzeitdifferenzen zwischen den einzelnen Links in der Praxis ignorieren kann. Auf einer realen Platine sieht das dann so aus:
Rechts im Bild ist ein Teil des Chipsatzes, links die Lötpins eines PCIe-Sockels. Man erkennt sehr gut die einzelnen Leitungspaare und auch, dass die Längen der Links unterschiedlich sind. Die Abschirmung liegt übrigens als Massefläche unter den Leitungen. Es gibt keinen Längenausgleich durch mäanderförmige Leitungen. Auch hier wurde wieder ein Platinendesign-Problem mit Elektronik erschlagen.
Noch ein Beispiel aus der Praxis, in diesem Falle SATA. Hier Bilder vom Kabelaufbau und von den Anschlüssen auf der Platine:
![]() Aufbau eines SATA-Kabels [8] |
![]() Sata Anschlüsse auf einem Mainboard [10] |
Auch hier ist das vertraute Universaldesign gut zu erkennen. Ein Leitungspaar für jede Übertragungsrichtung mit Abschirmung. Für eine gute Erdung und Abschirmung sind beim SATA-Stecker drei Masseleitungen vorgesehen. Auf dem Platinenbild kann man die Leitungen leider nicht bis zur Lötstelle verfolgen, da sie auf der Oberseite der Platine noch jeweils über ein Kondensatorenpaar geführt sind. Die Kondensatoren sind dann wieder ein Unterschied zu PCIe. Sie sorgen dafür, dass wirklich nur die hohen Frequenzen der Datenimpulse und keine Störspannungen wie Brummen oder Gleichspannung übertragen werden, wie das beispielsweise bei eSATA vorkommen kann.
Und weiter?
Die Technik der seriellen Links ist zwar sehr komplex, aber die genau definierten Übertragungswege bieten aufgrund ihrer Herkunft aus der Hochfrequenztechnik noch Reserven für eine saubere Übertragung bei höheren Frequenzen. Macht die Elektronik Fortschritte, kann man einfach mit dem Takt die Datenrate anheben. Genau dies wurde beim Umstieg von PCIe auf PCIe2, von SATA auf SATA2 und beim Hypertransport des Phenom-Prozessors bereits praktiziert. Grob geschätzt sollten noch zwei oder drei Takterhöhungen möglich sein, ehe die Technik grundlegend überarbeitet werden muss. Oder vielleicht sehen wir irgendwann SATA4-2x-Verbindungen?
Die seriellen Links haben sich also erfolgreich in der gesamten PC-Technik ausgebreitet und ihre Vorgänger praktisch verdrängt. In der gesamten Technik? Nein, eine letzte kleine Bastion auf den Platinen hält stand, und hat bisherige Eroberungsversuche erfolgreich abgewehrt. Die Rede ist hier vom Speicherbus der CPUs und Grafikchips. Die Rambus-Technik ist gefloppt, und Intels Versuch, im Serverbereich FB-DIMMs zu etablieren, wird auch nicht besonders begeistert aufgenommen. Der Grund ist die höhere Latenz serieller Links. Das ganze Puffern, Codieren, Serialisieren, Decodieren, nochmal Puffern und Zusammensetzen der Datenströme kostet zu viel Zeit. So viel Zeit, dass der Bau einer PCIe-Soundkarte lange Zeit nicht möglich war. Die aktuell erscheinenden PCIe-Soundkarten von Creative haben alle einen kleinen Pufferspeicher auf der Platine, um nicht ins Stottern zu geraten.
Aber auf lange Sicht wird auch der parallele Speicherbus zumindest bei den CPUs verschwinden. Je größer die Caches werden, und je ausgetüftelter die Cache-Strategien, umso weniger werden die Latenzen eines seriellen Links ins Gewicht fallen und die Vorteile wie einfaches Routing der Leitungen auf den Platinen und die Reduzierung der benötigten Anschlüsse überwiegen.
Es gibt übrigens einen Sonderfall, und zwar ist das der am weitesten verbreitete serielle Bus. Bus ist hier kein Schreibfehler, sondern tatsächlich absichtlich verwendet. Und zwar ist das der USB. Es gibt hier nur ein Datenleitungspaar, an dem auf jeder Seite ein Sender und Empfänger sitzt. Der USB ist also ein Zwitter aus Bus und seriellem Link. Der Nachteil ist, dass die Elektronik ständig zwischen Senden und Empfangen umschalten muss, was die nutzbare Übertragungskapazität leider deutlich reduziert. Aus diesem Grund wird die nächste USB-Version, USB 3.0, auch die bewährte Dual-Link Technik übernehmen. Die Übertragung der Daten im Stecker erfolgt dabei zuerst elektrisch, später soll es auch eine Variante mit optischer Datenleitung geben.
Verweise:
[1] http://www.3dcenter.org/users/anddill
[2] http://www.3dcenter.org/dateien/abbildungen/Speicherbus.png
[3] http://www.3dcenter.org/abbildung/speicherbus-leitungen
[4] http://www.forum-3dcenter.org/vbulletin/showthread.php?t=433584
[5] http://www.3dcenter.org/dateien/abbildungen/pcie.png
[6] http://www.3dcenter.org/abbildung/pcie-16x-links
[7] http://www.3dcenter.org/dateien/abbildungen/Satakabel.jpg
[8] http://www.3dcenter.org/abbildung/aufbau-eines-sata-kabels
[9] http://www.3dcenter.org/dateien/abbildungen/sata.png
[10] http://www.3dcenter.org/abbildung/sata-anschluesse-auf-einem-mainboard