While most Alpha computers are equipped with a PCI or ISA interface bus, most Sparc-based workstations use Sbus to connect their peripherals.

Sbus is quite an advanced design, although it has been around for a long time. It is meant to be processor-independent and is optimized for I/O peripheral boards. In other words, you can’t plug additional RAM into Sbus slots. This optimization is meant to simplify the design of both hardware devices and system software, at the expense of some additional complexity in the motherboard.

This I/O bias of the bus results in peripherals using virtual addresses to transfer data, thus bypassing the need to allocate a contiguous buffer. The motherboard is responsible for decoding the virtual addresses and mapping them to physical addresses. This requires the attachment of some MMU (Memory Management Unit) capability to the Sbus, and the responsible circuitry is called ``IOMMU.'' Another feature of this bus is that device boards are geographically addressed, so there’s no need to implement an address decoder in every peripheral or to deal with address conflicts.

Sbus peripherals use the Forth language in their PROMs to initialize themselves. Forth was chosen because the interpreter is lightweight and therefore can be easily implemented in the firmware of any computer system. In addition, the Sbus specification outlines the boot process, so that compliant I/O devices fit easily into the system and are recognized at system boot.

As far as Linux is ...

Get Linux Device Drivers now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.