SBus

Während die meisten Computer mit PCI- oder ISA-Bussen ausgestattet sind, verwenden die meisten älteren SPARC-basierten Workstations SBus, um die Verbindung zu den Peripherie-Geräten herzustellen.

Das Design von SBus ist ziemlich fortschrittlich, auch wenn es den SBus schon ziemlich lange gibt. Es soll prozessorunabhängig sein (auch wenn der SBus nur von SPARC-Computern verwendet wird) und ist für I/O-Peripherie-Karten optimiert. Sie können also kein zusätzliches RAM in SBus-Slots stecken. Diese Optimierung soll sowohl die Entwicklung von Hardware als auch von Systemsoftware vereinfachen, wenn auch auf Kosten zusätzlicher Komplexität auf der Hauptplatine.

Diese I/O-Ausrichtung des Busses führt dazu, daß Peripherie-Geräte virtuelle Adressen verwenden, um Daten zu übertragen, wodurch es nicht mehr notwendig ist, einen zusammenhängenden Puffer zu allozieren. Die Hauptplatine ist dafür zuständig, die virtuellen Adressen zu decodieren und sie auf physikalische Adressen abzubilden. Dazu benötigt der SBus einige MMU-Fähigkeiten (Memory Management Unit); der zuständige Schaltkreis heißt “IOMMU”. Obwohl dieser etwas komplexer als die Verwendung physikalischer Adressen auf dem Schnittstellen-Bus ist, wird dieses Design deutlich durch die Tatsache vereinfacht, daß SPARC-Prozessoren schon immer so entworfen waren, daß der MMU-Kern vom CPU-Kernel getrennt bleibt (entweder physikalisch oder zumindest konzeptionell). Diese Entwurfsentscheidung wird auch von anderen intelligenteren Prozessor-Designs verwendet und hat ganz allgemein Vorteile. Es ist ein weiteres Merkmal dieses Busses, daß die Geräte geographisch adressiert werden, so daß es nicht notwendig ist, in jedem Peripherie-Gerät einen Adreßdecoder zu implementieren oder sich um Adreßkonflikte zu kümmern.

SBus-Peripherie-Geräte verwenden in ihren PROMs die Programmiersprache Forth, um sich selbst zu initialisieren. Forth wurde gewählt, weil der Interpreter sehr klein ist und daher leicht in die Firmware jedes Computers eingebettet werden kann. Außerdem gibt die SBus-Spezifikation den Vorgang des Hochfahrens vor, so daß Geräte, die der Spezifikation gehorchen, sich leicht in das System einfügen und beim Hochfahren erkannt werden. Dies war ein großer Schritt in Richtung auf Multiplattform-Geräte und eine vollständig andere Welt als der PC-zentrierte ISA-Kram, an den wir gewöhnt waren. Aus einer Reihe von kommerziellen Gründen war dem SBus allerdings kein Erfolg beschieden.

Obwohl aktuelle Kernel-Versionen SBus-Geräte recht umfassend unterstützen, wird dieser Bus heutzutage so wenig verwendet, daß es sich nicht lohnt, ihn hier detailliert zu behandeln. Interessierte Leser können einen Blick auf die Quellen in arch/sparc/kernel und arch/sparc/mm werfen.