erschienen in: GO64! - Das Magazin für Computerfreaks, Ausgabe 11/99

Der Universal Serial Bus (USB)

Ein neuer Bus geistert durch die Computerwelt und schickt sich an, plattformübergreifender Standard im Bereich der (langsameren) Peripheriegeräte zu werden: der Universal Serial Bus, kurz USB.

Am Anfang war Verdruss...

Hardwareentwicklung könnte so einfach sein - würde nicht jedes Computersystem mit seinen ureigensten Bussystemen aufwarten. Bereits beim C64 hat man das Problem, Hardware für verschiedene Erweiterungsports entwickeln zu können/müssen - Expansionsport, Userport, Datasetten- und Joystickport. Auch bei anderen Systemen sieht es da nicht anders aus: Der Commodore Amiga wartet - je nach Version - mit den unterschiedlichsten Erweiterungsslots auf und vom PC kennt man die geradezu babylonische Slotvielfalt in Form von ISA/8Bit, ISA/16Bit, EISA, MCA, VLB und PCI... Allen Systemen ist allerdings eines gemein: Man hat stets zu wenig Erweiterungsslots!

Seriell?

Der Unterschied zu herkömmlichen Bussen wird bereits aus der Namensgebung ersichtlich: Klassische Erweiterungsbusse, meist stark an die Systemarchitektur des jeweiligen Rechners angelehnt (Expansionsport/C64, Zorro/Amiga, ISA und VLB beim PC), sind parallele Busse bestehend aus Adress- und Datenbus sowie diverser Kontrollsignale zur Busablaufsteuerung. Dies hat überaus praktische Gründe, denn so kann eine wie auch immer geartete Hardware leicht und effizient ins System eingebunden werden - nachteilig im Hinblick auf eine mögliche Portabilität wirkt hier die starke Bindung an die jeweilige Systemarchitektur.

Die Serialisierung eines solchen Busses ist jedoch nichts neues, hat es Commodore doch bereits 1980 mit dem IEEE488--Bus vorgemacht und schuf von den von uns allen gleichermaßen geliebten (wegen der einfachen Verkabelung) und gehassten (schnell war er wirklich nicht, nein!) seriellen IEC--Bus. Kenner wissen, dass der IEC--Bus protokolltechnisch voll dem großen Bruder IEEE488 entspricht, lediglich die Anzahl der Leitungen wurde reduziert, was dazu führte, dass einige Leitungen mehrere Funktionen erfüllen.

Ja - und?

USB geht noch einen Schritt weiter und reduziert die Anzahl der benötigten Bussignale auf zwei, hinzu kommen noch zwei weitere Leitungen zur Spannungsversorgung. Vorbei die Zeiten, da man für jedes (externe) Zusatzgerät noch ein Steckernetzteil benötigte - nicht allzu stromhungrige Geräte können direkt über den USB-Anschluss versorgt werden.

Wer nun glaubt, USB sei langsam, wird angenehm überrascht, denn USB kennt folgende Datenraten:

Dies ergibt maximale Durchsatzraten von 1.5MB/s bzw. 187kB/s (zum Vergleich: der IEC-Bus hat - unter Verwendung von Speedern - einen Durchsatz von ca. 10kB/s). Interessant hierbei ist, daß beide Datenraten auf dem selben Bus gefahren werden können.

Apropos Bus: Streng genommen ist USB kein Bus im eigentlichen Sinne (alle Geräte greifen gleichberechtigt/parallel auf den Bus zu, vgl. IEC) sondern ein sog. Peer-to-Peer-Netzwerk: Dies bedeutet, dass ein USB-Gerät immer nur mit seinem direkten Nachbarn kommuniziert, weiter entfernte Punkte können nur durch eine ´´Durchschleusung´´ der Pakete durch dazwischenliegende Geräte erreicht werden. Hierzu verfügt jedes USB--Gerät über einen dedizierten Datenein- sowie einen -ausgang. Dennoch lassen sich - analog zur Netzwerktechnologie - sternförmige Netzwerke mittels sogenannter Hubs aufbauen. Dies macht insbesondere zur Trennung von Geräten mit langsamer (1.5MBit/s) und schneller (12MBit/s) Datenrate Sinn, da so die schnelleren Geräte nicht durch die 1.5MBit/s--Datenübertragung der langsamen Geräte ausgebremst werden.

Weiterhin verfügt der USB über einige interessante Features wie z.B. die Möglichkeit Busbandbreite für Echtzeitübertragungen zu reservieren (isochroner Transfer). Hierauf soll aber an dieser Stelle nicht näher eingegangen werden, Interessierten sei die USB-Spezifikation [1] ans Herz gelegt.

Gibt´s das auch für uns?

Derzeit leider nein. Machbar wäre es, denn bereits seit längerem sind entsprechende (und darüberhinaus preiswerte) Chips auf dem Markt, welche einen USB--Datenstrom empfangen und weiterverarbeiten können [2]. Hiermit ließe sich relativ einfach eine Anbindung an den C64/C128 erreichen.

Doch kann der C64 die Daten auch schnell genug entgegennehmen? Keine Frage, die langsame USB--Variante stellt ihn vor kein Hindernis. Per DMA-Transfer lassen sich 187kB/s prima in den Speicher schaufeln, man muß sich lediglich mit dem VIC absprechen. Schwieriger wird´s da schon mit den 1.5MB/s bei 12MBit/s, diese liegen doch um mehr als 50% über dem Busdurchsatz eines (PAL-) C64. Eine Anbindung ließe sich dennoch realisieren, vorausgesetzt, das USB-Interface verfügt über einen genügend großen Pufferspeicher und lädt die einkommenden Daten häppchenweise in den Speicher des C64. Dies reduziert natürlich die Nutzdatenrate - der C64 sollte durchaus noch in der Lage sein, die Daten zu verarbeiten und nicht nur per DMA ausgebremst werden, hier richtet sich die maximal mögliche Datenrate sicherlich nach der jeweiligen Applikation sowie Art der Daten. Bei reinem Datenempfang sind ca. 1MB/s (entsprechend 9MBit/s) möglich, bei zusätzlicher Verarbeitung sollten 500kB/s bis 750kB/s (entsprechend 4MBit/s bzw. 6MBit/s) nicht überschritten werden, um über genügend Rechenzeit (Buszyklen) für die Datenverarbeitung zu verfügen.

Leider ist die reine Datenentgegennahme nicht alles. Die Verarbeitung von USB-Daten bedarf eines nicht unerheblichen Aufwands, sowohl speichertechnisch als auch vom Aufwand her. Selbst auf modernsten PCs erzeugt ein USB-Interface unter Vollast gerne mal 5% Systemauslastung - was dies für den C64 bedeutet, kann sich ein jeder selbst ausrechnen. Von diesem Standpunkt aus betrachtet scheint für die Nutzung von USB eine SCPU zwingend, denn nur sie bietet die nötige CPU-Power. Durch den hohen Speicherbedarf der USB-Verwaltungsstrukturen ist darüberhinaus mindestens eine REU unbedingte Voraussetzung.

Interessant wäre solch ein Interface allemal, erlaubt es doch z.B. den Anschluss von PC-Tastaturen und -Mäusen an den C64 - andererseits ist dies auch mit anderen Methoden möglich und überdies wesentlich ressourcenschonender. Interessant wäre jedoch die Verwendung moderner Soundkarten und weiterer USB-Peripherie wie z.B. Scanner, diese Geräte benötigen allerdings die volle Bandbreite von 12MBit/s. Was USB konzeptionell besonders angenehm macht, ist der Umstand, daß lediglich entsprechende USB-Treiber zur Unterstützung dieser Geräte zu erstellen sind - die Geräte selbst müssen (endlich!) nicht mehr speziell für eine bestimmte Plattform entwickelt werden. Dies würde dem C64 einfachen Zugriff auf moderne Peripheriegeräte bieten.

Gerüchte besagen, dass es von CMD evtl. einen USB-Adapter für die langsame Verbindungsart geben werde. Hinsichtlich der unlängst veröffentlichten Ankündigung [3], sich aus der Entwicklung neuer Commodore-Hardware mittelfristig zurückzuziehen und neue Entwicklungen nur auf Basis sorgfältiger Marktabschätzungen zu erwägen, bleibt es jedoch fraglich, ob dieser Adapter jemals das Licht der Welt erblicken wird.

(RB)

Quellen

  1. USB Spezifikation V1.0
  2. Anchor Chips EZ-USB
  3. Rainer Buchty, "The last ressort"(erschienen in GO64! Ausgabe 5/99)