Paralleler Bus vs. seriellem Punkt zu Punkt (2)

Freitag, 3. Oktober 2008
 / von anddill
 

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.